3911 lines
6.0 MiB
Plaintext
3911 lines
6.0 MiB
Plaintext
/*
|
||
* 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/next";
|
||
exports.ids = ["vendor-chunks/next"];
|
||
exports.modules = {
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/api/script.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/next/dist/api/script.js ***!
|
||
\**********************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* reexport default from dynamic */ _client_script__WEBPACK_IMPORTED_MODULE_0___default.a)\n/* harmony export */ });\n/* harmony import */ var _client_script__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../client/script */ \"(rsc)/./node_modules/next/dist/client/script.js\");\n/* harmony import */ var _client_script__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_client_script__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _client_script__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _client_script__WEBPACK_IMPORTED_MODULE_0__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\n\n\n//# sourceMappingURL=script.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2FwaS9zY3JpcHQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQTJDO0FBQ1Y7O0FBRWpDIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9hcGkvc2NyaXB0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tICcuLi9jbGllbnQvc2NyaXB0JztcbmV4cG9ydCAqIGZyb20gJy4uL2NsaWVudC9zY3JpcHQnO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1zY3JpcHQuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/api/script.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/build/output/log.js":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/next/dist/build/output/log.js ***!
|
||
\****************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n bootstrap: function() {\n return bootstrap;\n },\n error: function() {\n return error;\n },\n errorOnce: function() {\n return errorOnce;\n },\n event: function() {\n return event;\n },\n info: function() {\n return info;\n },\n prefixes: function() {\n return prefixes;\n },\n ready: function() {\n return ready;\n },\n trace: function() {\n return trace;\n },\n wait: function() {\n return wait;\n },\n warn: function() {\n return warn;\n },\n warnOnce: function() {\n return warnOnce;\n }\n});\nconst _picocolors = __webpack_require__(/*! ../../lib/picocolors */ \"(rsc)/./node_modules/next/dist/lib/picocolors.js\");\nconst _lrucache = __webpack_require__(/*! ../../server/lib/lru-cache */ \"(rsc)/./node_modules/next/dist/server/lib/lru-cache.js\");\nconst prefixes = {\n wait: (0, _picocolors.white)((0, _picocolors.bold)('○')),\n error: (0, _picocolors.red)((0, _picocolors.bold)('⨯')),\n warn: (0, _picocolors.yellow)((0, _picocolors.bold)('⚠')),\n ready: '▲',\n info: (0, _picocolors.white)((0, _picocolors.bold)(' ')),\n event: (0, _picocolors.green)((0, _picocolors.bold)('✓')),\n trace: (0, _picocolors.magenta)((0, _picocolors.bold)('»'))\n};\nconst LOGGING_METHOD = {\n log: 'log',\n warn: 'warn',\n error: 'error'\n};\nfunction prefixedLog(prefixType, ...message) {\n if ((message[0] === '' || message[0] === undefined) && message.length === 1) {\n message.shift();\n }\n const consoleMethod = prefixType in LOGGING_METHOD ? LOGGING_METHOD[prefixType] : 'log';\n const prefix = prefixes[prefixType];\n // If there's no message, don't print the prefix but a new line\n if (message.length === 0) {\n console[consoleMethod]('');\n } else {\n // Ensure if there's ANSI escape codes it's concatenated into one string.\n // Chrome DevTool can only handle color if it's in one string.\n if (message.length === 1 && typeof message[0] === 'string') {\n console[consoleMethod](prefix + ' ' + message[0]);\n } else {\n console[consoleMethod](prefix, ...message);\n }\n }\n}\nfunction bootstrap(message) {\n console.log(message);\n}\nfunction wait(...message) {\n prefixedLog('wait', ...message);\n}\nfunction error(...message) {\n prefixedLog('error', ...message);\n}\nfunction warn(...message) {\n prefixedLog('warn', ...message);\n}\nfunction ready(...message) {\n prefixedLog('ready', ...message);\n}\nfunction info(...message) {\n prefixedLog('info', ...message);\n}\nfunction event(...message) {\n prefixedLog('event', ...message);\n}\nfunction trace(...message) {\n prefixedLog('trace', ...message);\n}\nconst warnOnceCache = new _lrucache.LRUCache(10000, (value)=>value.length);\nfunction warnOnce(...message) {\n const key = message.join(' ');\n if (!warnOnceCache.has(key)) {\n warnOnceCache.set(key, key);\n warn(...message);\n }\n}\nconst errorOnceCache = new _lrucache.LRUCache(10000, (value)=>value.length);\nfunction errorOnce(...message) {\n const key = message.join(' ');\n if (!errorOnceCache.has(key)) {\n errorOnceCache.set(key, key);\n error(...message);\n }\n}\n\n//# sourceMappingURL=log.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL291dHB1dC9sb2cuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBWUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Qsb0JBQW9CLG1CQUFPLENBQUMsOEVBQXNCO0FBQ2xELGtCQUFrQixtQkFBTyxDQUFDLDBGQUE0QjtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL291dHB1dC9sb2cuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBib290c3RyYXA6IG51bGwsXG4gICAgZXJyb3I6IG51bGwsXG4gICAgZXJyb3JPbmNlOiBudWxsLFxuICAgIGV2ZW50OiBudWxsLFxuICAgIGluZm86IG51bGwsXG4gICAgcHJlZml4ZXM6IG51bGwsXG4gICAgcmVhZHk6IG51bGwsXG4gICAgdHJhY2U6IG51bGwsXG4gICAgd2FpdDogbnVsbCxcbiAgICB3YXJuOiBudWxsLFxuICAgIHdhcm5PbmNlOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIGJvb3RzdHJhcDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBib290c3RyYXA7XG4gICAgfSxcbiAgICBlcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9LFxuICAgIGVycm9yT25jZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBlcnJvck9uY2U7XG4gICAgfSxcbiAgICBldmVudDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBldmVudDtcbiAgICB9LFxuICAgIGluZm86IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaW5mbztcbiAgICB9LFxuICAgIHByZWZpeGVzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHByZWZpeGVzO1xuICAgIH0sXG4gICAgcmVhZHk6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVhZHk7XG4gICAgfSxcbiAgICB0cmFjZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0cmFjZTtcbiAgICB9LFxuICAgIHdhaXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gd2FpdDtcbiAgICB9LFxuICAgIHdhcm46IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gd2FybjtcbiAgICB9LFxuICAgIHdhcm5PbmNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHdhcm5PbmNlO1xuICAgIH1cbn0pO1xuY29uc3QgX3BpY29jb2xvcnMgPSByZXF1aXJlKFwiLi4vLi4vbGliL3BpY29jb2xvcnNcIik7XG5jb25zdCBfbHJ1Y2FjaGUgPSByZXF1aXJlKFwiLi4vLi4vc2VydmVyL2xpYi9scnUtY2FjaGVcIik7XG5jb25zdCBwcmVmaXhlcyA9IHtcbiAgICB3YWl0OiAoMCwgX3BpY29jb2xvcnMud2hpdGUpKCgwLCBfcGljb2NvbG9ycy5ib2xkKSgn4peLJykpLFxuICAgIGVycm9yOiAoMCwgX3BpY29jb2xvcnMucmVkKSgoMCwgX3BpY29jb2xvcnMuYm9sZCkoJ+KorycpKSxcbiAgICB3YXJuOiAoMCwgX3BpY29jb2xvcnMueWVsbG93KSgoMCwgX3BpY29jb2xvcnMuYm9sZCkoJ+KaoCcpKSxcbiAgICByZWFkeTogJ+KWsicsXG4gICAgaW5mbzogKDAsIF9waWNvY29sb3JzLndoaXRlKSgoMCwgX3BpY29jb2xvcnMuYm9sZCkoJyAnKSksXG4gICAgZXZlbnQ6ICgwLCBfcGljb2NvbG9ycy5ncmVlbikoKDAsIF9waWNvY29sb3JzLmJvbGQpKCfinJMnKSksXG4gICAgdHJhY2U6ICgwLCBfcGljb2NvbG9ycy5tYWdlbnRhKSgoMCwgX3BpY29jb2xvcnMuYm9sZCkoJ8K7JykpXG59O1xuY29uc3QgTE9HR0lOR19NRVRIT0QgPSB7XG4gICAgbG9nOiAnbG9nJyxcbiAgICB3YXJuOiAnd2FybicsXG4gICAgZXJyb3I6ICdlcnJvcidcbn07XG5mdW5jdGlvbiBwcmVmaXhlZExvZyhwcmVmaXhUeXBlLCAuLi5tZXNzYWdlKSB7XG4gICAgaWYgKChtZXNzYWdlWzBdID09PSAnJyB8fCBtZXNzYWdlWzBdID09PSB1bmRlZmluZWQpICYmIG1lc3NhZ2UubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIG1lc3NhZ2Uuc2hpZnQoKTtcbiAgICB9XG4gICAgY29uc3QgY29uc29sZU1ldGhvZCA9IHByZWZpeFR5cGUgaW4gTE9HR0lOR19NRVRIT0QgPyBMT0dHSU5HX01FVEhPRFtwcmVmaXhUeXBlXSA6ICdsb2cnO1xuICAgIGNvbnN0IHByZWZpeCA9IHByZWZpeGVzW3ByZWZpeFR5cGVdO1xuICAgIC8vIElmIHRoZXJlJ3Mgbm8gbWVzc2FnZSwgZG9uJ3QgcHJpbnQgdGhlIHByZWZpeCBidXQgYSBuZXcgbGluZVxuICAgIGlmIChtZXNzYWdlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zb2xlW2NvbnNvbGVNZXRob2RdKCcnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBFbnN1cmUgaWYgdGhlcmUncyBBTlNJIGVzY2FwZSBjb2RlcyBpdCdzIGNvbmNhdGVuYXRlZCBpbnRvIG9uZSBzdHJpbmcuXG4gICAgICAgIC8vIENocm9tZSBEZXZUb29sIGNhbiBvbmx5IGhhbmRsZSBjb2xvciBpZiBpdCdzIGluIG9uZSBzdHJpbmcuXG4gICAgICAgIGlmIChtZXNzYWdlLmxlbmd0aCA9PT0gMSAmJiB0eXBlb2YgbWVzc2FnZVswXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnNvbGVbY29uc29sZU1ldGhvZF0ocHJlZml4ICsgJyAnICsgbWVzc2FnZVswXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlW2NvbnNvbGVNZXRob2RdKHByZWZpeCwgLi4ubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBib290c3RyYXAobWVzc2FnZSkge1xuICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UpO1xufVxuZnVuY3Rpb24gd2FpdCguLi5tZXNzYWdlKSB7XG4gICAgcHJlZml4ZWRMb2coJ3dhaXQnLCAuLi5tZXNzYWdlKTtcbn1cbmZ1bmN0aW9uIGVycm9yKC4uLm1lc3NhZ2UpIHtcbiAgICBwcmVmaXhlZExvZygnZXJyb3InLCAuLi5tZXNzYWdlKTtcbn1cbmZ1bmN0aW9uIHdhcm4oLi4ubWVzc2FnZSkge1xuICAgIHByZWZpeGVkTG9nKCd3YXJuJywgLi4ubWVzc2FnZSk7XG59XG5mdW5jdGlvbiByZWFkeSguLi5tZXNzYWdlKSB7XG4gICAgcHJlZml4ZWRMb2coJ3JlYWR5JywgLi4ubWVzc2FnZSk7XG59XG5mdW5jdGlvbiBpbmZvKC4uLm1lc3NhZ2UpIHtcbiAgICBwcmVmaXhlZExvZygnaW5mbycsIC4uLm1lc3NhZ2UpO1xufVxuZnVuY3Rpb24gZXZlbnQoLi4ubWVzc2FnZSkge1xuICAgIHByZWZpeGVkTG9nKCdldmVudCcsIC4uLm1lc3NhZ2UpO1xufVxuZnVuY3Rpb24gdHJhY2UoLi4ubWVzc2FnZSkge1xuICAgIHByZWZpeGVkTG9nKCd0cmFjZScsIC4uLm1lc3NhZ2UpO1xufVxuY29uc3Qgd2Fybk9uY2VDYWNoZSA9IG5ldyBfbHJ1Y2FjaGUuTFJVQ2FjaGUoMTAwMDAsICh2YWx1ZSk9PnZhbHVlLmxlbmd0aCk7XG5mdW5jdGlvbiB3YXJuT25jZSguLi5tZXNzYWdlKSB7XG4gICAgY29uc3Qga2V5ID0gbWVzc2FnZS5qb2luKCcgJyk7XG4gICAgaWYgKCF3YXJuT25jZUNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICAgIHdhcm5PbmNlQ2FjaGUuc2V0KGtleSwga2V5KTtcbiAgICAgICAgd2FybiguLi5tZXNzYWdlKTtcbiAgICB9XG59XG5jb25zdCBlcnJvck9uY2VDYWNoZSA9IG5ldyBfbHJ1Y2FjaGUuTFJVQ2FjaGUoMTAwMDAsICh2YWx1ZSk9PnZhbHVlLmxlbmd0aCk7XG5mdW5jdGlvbiBlcnJvck9uY2UoLi4ubWVzc2FnZSkge1xuICAgIGNvbnN0IGtleSA9IG1lc3NhZ2Uuam9pbignICcpO1xuICAgIGlmICghZXJyb3JPbmNlQ2FjaGUuaGFzKGtleSkpIHtcbiAgICAgICAgZXJyb3JPbmNlQ2FjaGUuc2V0KGtleSwga2V5KTtcbiAgICAgICAgZXJyb3IoLi4ubWVzc2FnZSk7XG4gICAgfVxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1sb2cuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/output/log.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/build/static-paths/app/extract-pathname-route-param-segments-from-loader-tree.js":
|
||
/*!*****************************************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/build/static-paths/app/extract-pathname-route-param-segments-from-loader-tree.js ***!
|
||
\*****************************************************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"extractPathnameRouteParamSegmentsFromLoaderTree\", ({\n enumerable: true,\n get: function() {\n return extractPathnameRouteParamSegmentsFromLoaderTree;\n }\n}));\nconst _app = __webpack_require__(/*! ../../../shared/lib/router/routes/app */ \"(rsc)/./node_modules/next/dist/shared/lib/router/routes/app.js\");\nconst _parseloadertree = __webpack_require__(/*! ../../../shared/lib/router/utils/parse-loader-tree */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/parse-loader-tree.js\");\nconst _resolveparamvalue = __webpack_require__(/*! ../../../shared/lib/router/utils/resolve-param-value */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/resolve-param-value.js\");\n/**\n * Validates that the static segments in currentPath match the corresponding\n * segments in targetSegments. This ensures we only extract dynamic parameters\n * that are part of the target pathname structure.\n *\n * Segments are compared literally - interception markers like \"(.)photo\" are\n * part of the pathname and must match exactly.\n *\n * @example\n * // Matching paths\n * currentPath: ['blog', '(.)photo']\n * targetSegments: ['blog', '(.)photo', '[id]']\n * → Returns true (both static segments match exactly)\n *\n * @example\n * // Non-matching paths\n * currentPath: ['blog', '(.)photo']\n * targetSegments: ['blog', 'photo', '[id]']\n * → Returns false (segments don't match - marker is part of pathname)\n *\n * @param currentPath - The accumulated path segments from the loader tree\n * @param targetSegments - The target pathname split into segments\n * @returns true if all static segments match, false otherwise\n */ function validatePrefixMatch(currentPath, route) {\n for(let i = 0; i < currentPath.length; i++){\n const pathSegment = currentPath[i];\n const targetPathSegment = route.segments[i];\n // Type mismatch - one is static, one is dynamic\n if (pathSegment.type !== targetPathSegment.type) {\n return false;\n }\n // One has an interception marker, the other doesn't.\n if (pathSegment.interceptionMarker !== targetPathSegment.interceptionMarker) {\n return false;\n }\n // Both are static but names don't match\n if (pathSegment.type === 'static' && targetPathSegment.type === 'static' && pathSegment.name !== targetPathSegment.name) {\n return false;\n } else if (pathSegment.type === 'dynamic' && targetPathSegment.type === 'dynamic' && pathSegment.param.paramType !== targetPathSegment.param.paramType && pathSegment.param.paramName !== targetPathSegment.param.paramName) {\n return false;\n }\n }\n return true;\n}\nfunction extractPathnameRouteParamSegmentsFromLoaderTree(loaderTree, route) {\n const pathnameRouteParamSegments = [];\n const params = {};\n // BFS traversal with depth and path tracking\n const queue = [\n {\n tree: loaderTree,\n depth: 0,\n currentPath: []\n }\n ];\n while(queue.length > 0){\n const { tree, depth, currentPath } = queue.shift();\n const { segment, parallelRoutes } = (0, _parseloadertree.parseLoaderTree)(tree);\n // Build the path for the current node\n let updatedPath = currentPath;\n let nextDepth = depth;\n const appSegment = (0, _app.parseAppRouteSegment)(segment);\n // Only add to path if it's a real segment that appears in the URL\n // Route groups and parallel markers don't contribute to URL pathname\n if (appSegment && appSegment.type !== 'route-group' && appSegment.type !== 'parallel-route') {\n updatedPath = [\n ...currentPath,\n appSegment\n ];\n nextDepth = depth + 1;\n }\n // Check if this segment has a param and matches the target pathname at this depth\n if ((appSegment == null ? void 0 : appSegment.type) === 'dynamic') {\n const { paramName, paramType } = appSegment.param;\n // Check if this segment is at the correct depth in the target pathname\n // A segment matches if:\n // 1. There's a dynamic segment at this depth in the pathname\n // 2. The parameter names match (e.g., [id] matches [id], not [category])\n // 3. The static segments leading up to this point match (prefix check)\n if (depth < route.segments.length) {\n const targetSegment = route.segments[depth];\n // Match if the target pathname has a dynamic segment at this depth\n if (targetSegment.type === 'dynamic') {\n // Check that parameter names match exactly\n // This prevents [category] from matching against /[id]\n if (paramName !== targetSegment.param.paramName) {\n continue; // Different param names, skip this segment\n }\n // Validate that the path leading up to this dynamic segment matches\n // the target pathname. This prevents false matches like extracting\n // [slug] from \"/news/[slug]\" when the tree has \"/blog/[slug]\"\n if (validatePrefixMatch(currentPath, route)) {\n pathnameRouteParamSegments.push({\n name: segment,\n paramName,\n paramType\n });\n }\n }\n }\n // Resolve parameter value if it's not already known.\n if (!params.hasOwnProperty(paramName)) {\n const paramValue = (0, _resolveparamvalue.resolveParamValue)(paramName, paramType, depth, route, params);\n if (paramValue !== undefined) {\n params[paramName] = paramValue;\n }\n }\n }\n // Continue traversing all parallel routes to find matching segments\n for (const parallelRoute of Object.values(parallelRoutes)){\n queue.push({\n tree: parallelRoute,\n depth: nextDepth,\n currentPath: updatedPath\n });\n }\n }\n return {\n pathnameRouteParamSegments,\n params\n };\n}\n\n//# sourceMappingURL=extract-pathname-route-param-segments-from-loader-tree.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3N0YXRpYy1wYXRocy9hcHAvZXh0cmFjdC1wYXRobmFtZS1yb3V0ZS1wYXJhbS1zZWdtZW50cy1mcm9tLWxvYWRlci10cmVlLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsbUZBQWtGO0FBQ2xGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsYUFBYSxtQkFBTyxDQUFDLDZHQUF1QztBQUM1RCx5QkFBeUIsbUJBQU8sQ0FBQyx1SUFBb0Q7QUFDckYsMkJBQTJCLG1CQUFPLENBQUMsMklBQXNEO0FBQ3pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQix3QkFBd0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwyQkFBMkI7QUFDM0MsZ0JBQWdCLDBCQUEwQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsdUJBQXVCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvc3RhdGljLXBhdGhzL2FwcC9leHRyYWN0LXBhdGhuYW1lLXJvdXRlLXBhcmFtLXNlZ21lbnRzLWZyb20tbG9hZGVyLXRyZWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJleHRyYWN0UGF0aG5hbWVSb3V0ZVBhcmFtU2VnbWVudHNGcm9tTG9hZGVyVHJlZVwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZXh0cmFjdFBhdGhuYW1lUm91dGVQYXJhbVNlZ21lbnRzRnJvbUxvYWRlclRyZWU7XG4gICAgfVxufSk7XG5jb25zdCBfYXBwID0gcmVxdWlyZShcIi4uLy4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3JvdXRlcy9hcHBcIik7XG5jb25zdCBfcGFyc2Vsb2FkZXJ0cmVlID0gcmVxdWlyZShcIi4uLy4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhcnNlLWxvYWRlci10cmVlXCIpO1xuY29uc3QgX3Jlc29sdmVwYXJhbXZhbHVlID0gcmVxdWlyZShcIi4uLy4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3Jlc29sdmUtcGFyYW0tdmFsdWVcIik7XG4vKipcbiAqIFZhbGlkYXRlcyB0aGF0IHRoZSBzdGF0aWMgc2VnbWVudHMgaW4gY3VycmVudFBhdGggbWF0Y2ggdGhlIGNvcnJlc3BvbmRpbmdcbiAqIHNlZ21lbnRzIGluIHRhcmdldFNlZ21lbnRzLiBUaGlzIGVuc3VyZXMgd2Ugb25seSBleHRyYWN0IGR5bmFtaWMgcGFyYW1ldGVyc1xuICogdGhhdCBhcmUgcGFydCBvZiB0aGUgdGFyZ2V0IHBhdGhuYW1lIHN0cnVjdHVyZS5cbiAqXG4gKiBTZWdtZW50cyBhcmUgY29tcGFyZWQgbGl0ZXJhbGx5IC0gaW50ZXJjZXB0aW9uIG1hcmtlcnMgbGlrZSBcIiguKXBob3RvXCIgYXJlXG4gKiBwYXJ0IG9mIHRoZSBwYXRobmFtZSBhbmQgbXVzdCBtYXRjaCBleGFjdGx5LlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBNYXRjaGluZyBwYXRoc1xuICogY3VycmVudFBhdGg6IFsnYmxvZycsICcoLilwaG90byddXG4gKiB0YXJnZXRTZWdtZW50czogWydibG9nJywgJyguKXBob3RvJywgJ1tpZF0nXVxuICog4oaSIFJldHVybnMgdHJ1ZSAoYm90aCBzdGF0aWMgc2VnbWVudHMgbWF0Y2ggZXhhY3RseSlcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gTm9uLW1hdGNoaW5nIHBhdGhzXG4gKiBjdXJyZW50UGF0aDogWydibG9nJywgJyguKXBob3RvJ11cbiAqIHRhcmdldFNlZ21lbnRzOiBbJ2Jsb2cnLCAncGhvdG8nLCAnW2lkXSddXG4gKiDihpIgUmV0dXJucyBmYWxzZSAoc2VnbWVudHMgZG9uJ3QgbWF0Y2ggLSBtYXJrZXIgaXMgcGFydCBvZiBwYXRobmFtZSlcbiAqXG4gKiBAcGFyYW0gY3VycmVudFBhdGggLSBUaGUgYWNjdW11bGF0ZWQgcGF0aCBzZWdtZW50cyBmcm9tIHRoZSBsb2FkZXIgdHJlZVxuICogQHBhcmFtIHRhcmdldFNlZ21lbnRzIC0gVGhlIHRhcmdldCBwYXRobmFtZSBzcGxpdCBpbnRvIHNlZ21lbnRzXG4gKiBAcmV0dXJucyB0cnVlIGlmIGFsbCBzdGF0aWMgc2VnbWVudHMgbWF0Y2gsIGZhbHNlIG90aGVyd2lzZVxuICovIGZ1bmN0aW9uIHZhbGlkYXRlUHJlZml4TWF0Y2goY3VycmVudFBhdGgsIHJvdXRlKSB7XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IGN1cnJlbnRQYXRoLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgY29uc3QgcGF0aFNlZ21lbnQgPSBjdXJyZW50UGF0aFtpXTtcbiAgICAgICAgY29uc3QgdGFyZ2V0UGF0aFNlZ21lbnQgPSByb3V0ZS5zZWdtZW50c1tpXTtcbiAgICAgICAgLy8gVHlwZSBtaXNtYXRjaCAtIG9uZSBpcyBzdGF0aWMsIG9uZSBpcyBkeW5hbWljXG4gICAgICAgIGlmIChwYXRoU2VnbWVudC50eXBlICE9PSB0YXJnZXRQYXRoU2VnbWVudC50eXBlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gT25lIGhhcyBhbiBpbnRlcmNlcHRpb24gbWFya2VyLCB0aGUgb3RoZXIgZG9lc24ndC5cbiAgICAgICAgaWYgKHBhdGhTZWdtZW50LmludGVyY2VwdGlvbk1hcmtlciAhPT0gdGFyZ2V0UGF0aFNlZ21lbnQuaW50ZXJjZXB0aW9uTWFya2VyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQm90aCBhcmUgc3RhdGljIGJ1dCBuYW1lcyBkb24ndCBtYXRjaFxuICAgICAgICBpZiAocGF0aFNlZ21lbnQudHlwZSA9PT0gJ3N0YXRpYycgJiYgdGFyZ2V0UGF0aFNlZ21lbnQudHlwZSA9PT0gJ3N0YXRpYycgJiYgcGF0aFNlZ21lbnQubmFtZSAhPT0gdGFyZ2V0UGF0aFNlZ21lbnQubmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9IGVsc2UgaWYgKHBhdGhTZWdtZW50LnR5cGUgPT09ICdkeW5hbWljJyAmJiB0YXJnZXRQYXRoU2VnbWVudC50eXBlID09PSAnZHluYW1pYycgJiYgcGF0aFNlZ21lbnQucGFyYW0ucGFyYW1UeXBlICE9PSB0YXJnZXRQYXRoU2VnbWVudC5wYXJhbS5wYXJhbVR5cGUgJiYgcGF0aFNlZ21lbnQucGFyYW0ucGFyYW1OYW1lICE9PSB0YXJnZXRQYXRoU2VnbWVudC5wYXJhbS5wYXJhbU5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGV4dHJhY3RQYXRobmFtZVJvdXRlUGFyYW1TZWdtZW50c0Zyb21Mb2FkZXJUcmVlKGxvYWRlclRyZWUsIHJvdXRlKSB7XG4gICAgY29uc3QgcGF0aG5hbWVSb3V0ZVBhcmFtU2VnbWVudHMgPSBbXTtcbiAgICBjb25zdCBwYXJhbXMgPSB7fTtcbiAgICAvLyBCRlMgdHJhdmVyc2FsIHdpdGggZGVwdGggYW5kIHBhdGggdHJhY2tpbmdcbiAgICBjb25zdCBxdWV1ZSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgdHJlZTogbG9hZGVyVHJlZSxcbiAgICAgICAgICAgIGRlcHRoOiAwLFxuICAgICAgICAgICAgY3VycmVudFBhdGg6IFtdXG4gICAgICAgIH1cbiAgICBdO1xuICAgIHdoaWxlKHF1ZXVlLmxlbmd0aCA+IDApe1xuICAgICAgICBjb25zdCB7IHRyZWUsIGRlcHRoLCBjdXJyZW50UGF0aCB9ID0gcXVldWUuc2hpZnQoKTtcbiAgICAgICAgY29uc3QgeyBzZWdtZW50LCBwYXJhbGxlbFJvdXRlcyB9ID0gKDAsIF9wYXJzZWxvYWRlcnRyZWUucGFyc2VMb2FkZXJUcmVlKSh0cmVlKTtcbiAgICAgICAgLy8gQnVpbGQgdGhlIHBhdGggZm9yIHRoZSBjdXJyZW50IG5vZGVcbiAgICAgICAgbGV0IHVwZGF0ZWRQYXRoID0gY3VycmVudFBhdGg7XG4gICAgICAgIGxldCBuZXh0RGVwdGggPSBkZXB0aDtcbiAgICAgICAgY29uc3QgYXBwU2VnbWVudCA9ICgwLCBfYXBwLnBhcnNlQXBwUm91dGVTZWdtZW50KShzZWdtZW50KTtcbiAgICAgICAgLy8gT25seSBhZGQgdG8gcGF0aCBpZiBpdCdzIGEgcmVhbCBzZWdtZW50IHRoYXQgYXBwZWFycyBpbiB0aGUgVVJMXG4gICAgICAgIC8vIFJvdXRlIGdyb3VwcyBhbmQgcGFyYWxsZWwgbWFya2VycyBkb24ndCBjb250cmlidXRlIHRvIFVSTCBwYXRobmFtZVxuICAgICAgICBpZiAoYXBwU2VnbWVudCAmJiBhcHBTZWdtZW50LnR5cGUgIT09ICdyb3V0ZS1ncm91cCcgJiYgYXBwU2VnbWVudC50eXBlICE9PSAncGFyYWxsZWwtcm91dGUnKSB7XG4gICAgICAgICAgICB1cGRhdGVkUGF0aCA9IFtcbiAgICAgICAgICAgICAgICAuLi5jdXJyZW50UGF0aCxcbiAgICAgICAgICAgICAgICBhcHBTZWdtZW50XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgbmV4dERlcHRoID0gZGVwdGggKyAxO1xuICAgICAgICB9XG4gICAgICAgIC8vIENoZWNrIGlmIHRoaXMgc2VnbWVudCBoYXMgYSBwYXJhbSBhbmQgbWF0Y2hlcyB0aGUgdGFyZ2V0IHBhdGhuYW1lIGF0IHRoaXMgZGVwdGhcbiAgICAgICAgaWYgKChhcHBTZWdtZW50ID09IG51bGwgPyB2b2lkIDAgOiBhcHBTZWdtZW50LnR5cGUpID09PSAnZHluYW1pYycpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgcGFyYW1OYW1lLCBwYXJhbVR5cGUgfSA9IGFwcFNlZ21lbnQucGFyYW07XG4gICAgICAgICAgICAvLyBDaGVjayBpZiB0aGlzIHNlZ21lbnQgaXMgYXQgdGhlIGNvcnJlY3QgZGVwdGggaW4gdGhlIHRhcmdldCBwYXRobmFtZVxuICAgICAgICAgICAgLy8gQSBzZWdtZW50IG1hdGNoZXMgaWY6XG4gICAgICAgICAgICAvLyAxLiBUaGVyZSdzIGEgZHluYW1pYyBzZWdtZW50IGF0IHRoaXMgZGVwdGggaW4gdGhlIHBhdGhuYW1lXG4gICAgICAgICAgICAvLyAyLiBUaGUgcGFyYW1ldGVyIG5hbWVzIG1hdGNoIChlLmcuLCBbaWRdIG1hdGNoZXMgW2lkXSwgbm90IFtjYXRlZ29yeV0pXG4gICAgICAgICAgICAvLyAzLiBUaGUgc3RhdGljIHNlZ21lbnRzIGxlYWRpbmcgdXAgdG8gdGhpcyBwb2ludCBtYXRjaCAocHJlZml4IGNoZWNrKVxuICAgICAgICAgICAgaWYgKGRlcHRoIDwgcm91dGUuc2VnbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0U2VnbWVudCA9IHJvdXRlLnNlZ21lbnRzW2RlcHRoXTtcbiAgICAgICAgICAgICAgICAvLyBNYXRjaCBpZiB0aGUgdGFyZ2V0IHBhdGhuYW1lIGhhcyBhIGR5bmFtaWMgc2VnbWVudCBhdCB0aGlzIGRlcHRoXG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldFNlZ21lbnQudHlwZSA9PT0gJ2R5bmFtaWMnKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgcGFyYW1ldGVyIG5hbWVzIG1hdGNoIGV4YWN0bHlcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBwcmV2ZW50cyBbY2F0ZWdvcnldIGZyb20gbWF0Y2hpbmcgYWdhaW5zdCAvW2lkXVxuICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1OYW1lICE9PSB0YXJnZXRTZWdtZW50LnBhcmFtLnBhcmFtTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIERpZmZlcmVudCBwYXJhbSBuYW1lcywgc2tpcCB0aGlzIHNlZ21lbnRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBwYXRoIGxlYWRpbmcgdXAgdG8gdGhpcyBkeW5hbWljIHNlZ21lbnQgbWF0Y2hlc1xuICAgICAgICAgICAgICAgICAgICAvLyB0aGUgdGFyZ2V0IHBhdGhuYW1lLiBUaGlzIHByZXZlbnRzIGZhbHNlIG1hdGNoZXMgbGlrZSBleHRyYWN0aW5nXG4gICAgICAgICAgICAgICAgICAgIC8vIFtzbHVnXSBmcm9tIFwiL25ld3MvW3NsdWddXCIgd2hlbiB0aGUgdHJlZSBoYXMgXCIvYmxvZy9bc2x1Z11cIlxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGVQcmVmaXhNYXRjaChjdXJyZW50UGF0aCwgcm91dGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZVJvdXRlUGFyYW1TZWdtZW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBzZWdtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbVR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUmVzb2x2ZSBwYXJhbWV0ZXIgdmFsdWUgaWYgaXQncyBub3QgYWxyZWFkeSBrbm93bi5cbiAgICAgICAgICAgIGlmICghcGFyYW1zLmhhc093blByb3BlcnR5KHBhcmFtTmFtZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbVZhbHVlID0gKDAsIF9yZXNvbHZlcGFyYW12YWx1ZS5yZXNvbHZlUGFyYW1WYWx1ZSkocGFyYW1OYW1lLCBwYXJhbVR5cGUsIGRlcHRoLCByb3V0ZSwgcGFyYW1zKTtcbiAgICAgICAgICAgICAgICBpZiAocGFyYW1WYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtc1twYXJhbU5hbWVdID0gcGFyYW1WYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ29udGludWUgdHJhdmVyc2luZyBhbGwgcGFyYWxsZWwgcm91dGVzIHRvIGZpbmQgbWF0Y2hpbmcgc2VnbWVudHNcbiAgICAgICAgZm9yIChjb25zdCBwYXJhbGxlbFJvdXRlIG9mIE9iamVjdC52YWx1ZXMocGFyYWxsZWxSb3V0ZXMpKXtcbiAgICAgICAgICAgIHF1ZXVlLnB1c2goe1xuICAgICAgICAgICAgICAgIHRyZWU6IHBhcmFsbGVsUm91dGUsXG4gICAgICAgICAgICAgICAgZGVwdGg6IG5leHREZXB0aCxcbiAgICAgICAgICAgICAgICBjdXJyZW50UGF0aDogdXBkYXRlZFBhdGhcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHBhdGhuYW1lUm91dGVQYXJhbVNlZ21lbnRzLFxuICAgICAgICBwYXJhbXNcbiAgICB9O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1leHRyYWN0LXBhdGhuYW1lLXJvdXRlLXBhcmFtLXNlZ21lbnRzLWZyb20tbG9hZGVyLXRyZWUuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/static-paths/app/extract-pathname-route-param-segments-from-loader-tree.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/build/static-paths/utils.js":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/next/dist/build/static-paths/utils.js ***!
|
||
\************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n encodeParam: function() {\n return encodeParam;\n },\n extractPathnameRouteParamSegments: function() {\n return extractPathnameRouteParamSegments;\n },\n extractPathnameRouteParamSegmentsFromSegments: function() {\n return extractPathnameRouteParamSegmentsFromSegments;\n },\n normalizePathname: function() {\n return normalizePathname;\n },\n resolveRouteParamsFromTree: function() {\n return resolveRouteParamsFromTree;\n }\n});\nconst _checks = __webpack_require__(/*! ../../server/route-modules/checks */ \"(rsc)/./node_modules/next/dist/server/route-modules/checks.js\");\nconst _app = __webpack_require__(/*! ../../shared/lib/router/routes/app */ \"(rsc)/./node_modules/next/dist/shared/lib/router/routes/app.js\");\nconst _parseloadertree = __webpack_require__(/*! ../../shared/lib/router/utils/parse-loader-tree */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/parse-loader-tree.js\");\nconst _extractpathnamerouteparamsegmentsfromloadertree = __webpack_require__(/*! ./app/extract-pathname-route-param-segments-from-loader-tree */ \"(rsc)/./node_modules/next/dist/build/static-paths/app/extract-pathname-route-param-segments-from-loader-tree.js\");\nconst _resolveparamvalue = __webpack_require__(/*! ../../shared/lib/router/utils/resolve-param-value */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/resolve-param-value.js\");\nfunction encodeParam(value, encoder) {\n let replaceValue;\n if (Array.isArray(value)) {\n replaceValue = value.map(encoder).join('/');\n } else {\n replaceValue = encoder(value);\n }\n return replaceValue;\n}\nfunction normalizePathname(pathname) {\n return pathname.replace(/\\\\/g, '/').replace(/(?!^)\\/$/, '');\n}\nfunction extractPathnameRouteParamSegments(routeModule, segments, route) {\n // For AppPageRouteModule, use the loaderTree traversal approach\n if ((0, _checks.isAppPageRouteModule)(routeModule)) {\n const { pathnameRouteParamSegments } = (0, _extractpathnamerouteparamsegmentsfromloadertree.extractPathnameRouteParamSegmentsFromLoaderTree)(routeModule.userland.loaderTree, route);\n return pathnameRouteParamSegments;\n }\n return extractPathnameRouteParamSegmentsFromSegments(segments);\n}\nfunction extractPathnameRouteParamSegmentsFromSegments(segments) {\n // TODO: should we consider what values are already present in the page?\n // For AppRouteRouteModule, filter the segments array to get the route params\n // that contribute to the pathname.\n const result = [];\n for (const segment of segments){\n // Skip segments without param info.\n if (!segment.paramName || !segment.paramType) continue;\n // Collect all the route param keys that contribute to the pathname.\n result.push({\n name: segment.name,\n paramName: segment.paramName,\n paramType: segment.paramType\n });\n }\n return result;\n}\nfunction resolveRouteParamsFromTree(loaderTree, params, route, fallbackRouteParams) {\n // Stack-based traversal with depth tracking\n const stack = [\n {\n tree: loaderTree,\n depth: 0\n }\n ];\n while(stack.length > 0){\n const { tree, depth } = stack.pop();\n const { segment, parallelRoutes } = (0, _parseloadertree.parseLoaderTree)(tree);\n const appSegment = (0, _app.parseAppRouteSegment)(segment);\n // If this segment is a route parameter, then we should process it if it's\n // not already known and is not already marked as a fallback route param.\n if ((appSegment == null ? void 0 : appSegment.type) === 'dynamic' && !params.hasOwnProperty(appSegment.param.paramName) && !fallbackRouteParams.some((param)=>param.paramName === appSegment.param.paramName)) {\n const { paramName, paramType } = appSegment.param;\n const paramValue = (0, _resolveparamvalue.resolveParamValue)(paramName, paramType, depth, route, params);\n if (paramValue !== undefined) {\n params[paramName] = paramValue;\n } else if (paramType !== 'optional-catchall') {\n // If we couldn't resolve the param, mark it as a fallback\n fallbackRouteParams.push({\n paramName,\n paramType\n });\n }\n }\n // Calculate next depth - increment if this is not a route group and not empty\n let nextDepth = depth;\n if (appSegment && appSegment.type !== 'route-group' && appSegment.type !== 'parallel-route') {\n nextDepth++;\n }\n // Add all parallel routes to the stack for processing.\n for (const parallelRoute of Object.values(parallelRoutes)){\n stack.push({\n tree: parallelRoute,\n depth: nextDepth\n });\n }\n }\n}\n\n//# sourceMappingURL=utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3N0YXRpYy1wYXRocy91dGlscy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FNTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxnQkFBZ0IsbUJBQU8sQ0FBQyx3R0FBbUM7QUFDM0QsYUFBYSxtQkFBTyxDQUFDLDBHQUFvQztBQUN6RCx5QkFBeUIsbUJBQU8sQ0FBQyxvSUFBaUQ7QUFDbEYseURBQXlELG1CQUFPLENBQUMscUxBQThEO0FBQy9ILDJCQUEyQixtQkFBTyxDQUFDLHdJQUFtRDtBQUN0RjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw2QkFBNkI7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsY0FBYztBQUM5QixnQkFBZ0IsMEJBQTBCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHVCQUF1QjtBQUMzQztBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvc3RhdGljLXBhdGhzL3V0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgZW5jb2RlUGFyYW06IG51bGwsXG4gICAgZXh0cmFjdFBhdGhuYW1lUm91dGVQYXJhbVNlZ21lbnRzOiBudWxsLFxuICAgIGV4dHJhY3RQYXRobmFtZVJvdXRlUGFyYW1TZWdtZW50c0Zyb21TZWdtZW50czogbnVsbCxcbiAgICBub3JtYWxpemVQYXRobmFtZTogbnVsbCxcbiAgICByZXNvbHZlUm91dGVQYXJhbXNGcm9tVHJlZTogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBlbmNvZGVQYXJhbTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBlbmNvZGVQYXJhbTtcbiAgICB9LFxuICAgIGV4dHJhY3RQYXRobmFtZVJvdXRlUGFyYW1TZWdtZW50czogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBleHRyYWN0UGF0aG5hbWVSb3V0ZVBhcmFtU2VnbWVudHM7XG4gICAgfSxcbiAgICBleHRyYWN0UGF0aG5hbWVSb3V0ZVBhcmFtU2VnbWVudHNGcm9tU2VnbWVudHM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZXh0cmFjdFBhdGhuYW1lUm91dGVQYXJhbVNlZ21lbnRzRnJvbVNlZ21lbnRzO1xuICAgIH0sXG4gICAgbm9ybWFsaXplUGF0aG5hbWU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbm9ybWFsaXplUGF0aG5hbWU7XG4gICAgfSxcbiAgICByZXNvbHZlUm91dGVQYXJhbXNGcm9tVHJlZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlUm91dGVQYXJhbXNGcm9tVHJlZTtcbiAgICB9XG59KTtcbmNvbnN0IF9jaGVja3MgPSByZXF1aXJlKFwiLi4vLi4vc2VydmVyL3JvdXRlLW1vZHVsZXMvY2hlY2tzXCIpO1xuY29uc3QgX2FwcCA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvbGliL3JvdXRlci9yb3V0ZXMvYXBwXCIpO1xuY29uc3QgX3BhcnNlbG9hZGVydHJlZSA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9wYXJzZS1sb2FkZXItdHJlZVwiKTtcbmNvbnN0IF9leHRyYWN0cGF0aG5hbWVyb3V0ZXBhcmFtc2VnbWVudHNmcm9tbG9hZGVydHJlZSA9IHJlcXVpcmUoXCIuL2FwcC9leHRyYWN0LXBhdGhuYW1lLXJvdXRlLXBhcmFtLXNlZ21lbnRzLWZyb20tbG9hZGVyLXRyZWVcIik7XG5jb25zdCBfcmVzb2x2ZXBhcmFtdmFsdWUgPSByZXF1aXJlKFwiLi4vLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcmVzb2x2ZS1wYXJhbS12YWx1ZVwiKTtcbmZ1bmN0aW9uIGVuY29kZVBhcmFtKHZhbHVlLCBlbmNvZGVyKSB7XG4gICAgbGV0IHJlcGxhY2VWYWx1ZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmVwbGFjZVZhbHVlID0gdmFsdWUubWFwKGVuY29kZXIpLmpvaW4oJy8nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXBsYWNlVmFsdWUgPSBlbmNvZGVyKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcGxhY2VWYWx1ZTtcbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZVBhdGhuYW1lKHBhdGhuYW1lKSB7XG4gICAgcmV0dXJuIHBhdGhuYW1lLnJlcGxhY2UoL1xcXFwvZywgJy8nKS5yZXBsYWNlKC8oPyFeKVxcLyQvLCAnJyk7XG59XG5mdW5jdGlvbiBleHRyYWN0UGF0aG5hbWVSb3V0ZVBhcmFtU2VnbWVudHMocm91dGVNb2R1bGUsIHNlZ21lbnRzLCByb3V0ZSkge1xuICAgIC8vIEZvciBBcHBQYWdlUm91dGVNb2R1bGUsIHVzZSB0aGUgbG9hZGVyVHJlZSB0cmF2ZXJzYWwgYXBwcm9hY2hcbiAgICBpZiAoKDAsIF9jaGVja3MuaXNBcHBQYWdlUm91dGVNb2R1bGUpKHJvdXRlTW9kdWxlKSkge1xuICAgICAgICBjb25zdCB7IHBhdGhuYW1lUm91dGVQYXJhbVNlZ21lbnRzIH0gPSAoMCwgX2V4dHJhY3RwYXRobmFtZXJvdXRlcGFyYW1zZWdtZW50c2Zyb21sb2FkZXJ0cmVlLmV4dHJhY3RQYXRobmFtZVJvdXRlUGFyYW1TZWdtZW50c0Zyb21Mb2FkZXJUcmVlKShyb3V0ZU1vZHVsZS51c2VybGFuZC5sb2FkZXJUcmVlLCByb3V0ZSk7XG4gICAgICAgIHJldHVybiBwYXRobmFtZVJvdXRlUGFyYW1TZWdtZW50cztcbiAgICB9XG4gICAgcmV0dXJuIGV4dHJhY3RQYXRobmFtZVJvdXRlUGFyYW1TZWdtZW50c0Zyb21TZWdtZW50cyhzZWdtZW50cyk7XG59XG5mdW5jdGlvbiBleHRyYWN0UGF0aG5hbWVSb3V0ZVBhcmFtU2VnbWVudHNGcm9tU2VnbWVudHMoc2VnbWVudHMpIHtcbiAgICAvLyBUT0RPOiBzaG91bGQgd2UgY29uc2lkZXIgd2hhdCB2YWx1ZXMgYXJlIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgcGFnZT9cbiAgICAvLyBGb3IgQXBwUm91dGVSb3V0ZU1vZHVsZSwgZmlsdGVyIHRoZSBzZWdtZW50cyBhcnJheSB0byBnZXQgdGhlIHJvdXRlIHBhcmFtc1xuICAgIC8vIHRoYXQgY29udHJpYnV0ZSB0byB0aGUgcGF0aG5hbWUuXG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgZm9yIChjb25zdCBzZWdtZW50IG9mIHNlZ21lbnRzKXtcbiAgICAgICAgLy8gU2tpcCBzZWdtZW50cyB3aXRob3V0IHBhcmFtIGluZm8uXG4gICAgICAgIGlmICghc2VnbWVudC5wYXJhbU5hbWUgfHwgIXNlZ21lbnQucGFyYW1UeXBlKSBjb250aW51ZTtcbiAgICAgICAgLy8gQ29sbGVjdCBhbGwgdGhlIHJvdXRlIHBhcmFtIGtleXMgdGhhdCBjb250cmlidXRlIHRvIHRoZSBwYXRobmFtZS5cbiAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgbmFtZTogc2VnbWVudC5uYW1lLFxuICAgICAgICAgICAgcGFyYW1OYW1lOiBzZWdtZW50LnBhcmFtTmFtZSxcbiAgICAgICAgICAgIHBhcmFtVHlwZTogc2VnbWVudC5wYXJhbVR5cGVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiByZXNvbHZlUm91dGVQYXJhbXNGcm9tVHJlZShsb2FkZXJUcmVlLCBwYXJhbXMsIHJvdXRlLCBmYWxsYmFja1JvdXRlUGFyYW1zKSB7XG4gICAgLy8gU3RhY2stYmFzZWQgdHJhdmVyc2FsIHdpdGggZGVwdGggdHJhY2tpbmdcbiAgICBjb25zdCBzdGFjayA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgdHJlZTogbG9hZGVyVHJlZSxcbiAgICAgICAgICAgIGRlcHRoOiAwXG4gICAgICAgIH1cbiAgICBdO1xuICAgIHdoaWxlKHN0YWNrLmxlbmd0aCA+IDApe1xuICAgICAgICBjb25zdCB7IHRyZWUsIGRlcHRoIH0gPSBzdGFjay5wb3AoKTtcbiAgICAgICAgY29uc3QgeyBzZWdtZW50LCBwYXJhbGxlbFJvdXRlcyB9ID0gKDAsIF9wYXJzZWxvYWRlcnRyZWUucGFyc2VMb2FkZXJUcmVlKSh0cmVlKTtcbiAgICAgICAgY29uc3QgYXBwU2VnbWVudCA9ICgwLCBfYXBwLnBhcnNlQXBwUm91dGVTZWdtZW50KShzZWdtZW50KTtcbiAgICAgICAgLy8gSWYgdGhpcyBzZWdtZW50IGlzIGEgcm91dGUgcGFyYW1ldGVyLCB0aGVuIHdlIHNob3VsZCBwcm9jZXNzIGl0IGlmIGl0J3NcbiAgICAgICAgLy8gbm90IGFscmVhZHkga25vd24gYW5kIGlzIG5vdCBhbHJlYWR5IG1hcmtlZCBhcyBhIGZhbGxiYWNrIHJvdXRlIHBhcmFtLlxuICAgICAgICBpZiAoKGFwcFNlZ21lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IGFwcFNlZ21lbnQudHlwZSkgPT09ICdkeW5hbWljJyAmJiAhcGFyYW1zLmhhc093blByb3BlcnR5KGFwcFNlZ21lbnQucGFyYW0ucGFyYW1OYW1lKSAmJiAhZmFsbGJhY2tSb3V0ZVBhcmFtcy5zb21lKChwYXJhbSk9PnBhcmFtLnBhcmFtTmFtZSA9PT0gYXBwU2VnbWVudC5wYXJhbS5wYXJhbU5hbWUpKSB7XG4gICAgICAgICAgICBjb25zdCB7IHBhcmFtTmFtZSwgcGFyYW1UeXBlIH0gPSBhcHBTZWdtZW50LnBhcmFtO1xuICAgICAgICAgICAgY29uc3QgcGFyYW1WYWx1ZSA9ICgwLCBfcmVzb2x2ZXBhcmFtdmFsdWUucmVzb2x2ZVBhcmFtVmFsdWUpKHBhcmFtTmFtZSwgcGFyYW1UeXBlLCBkZXB0aCwgcm91dGUsIHBhcmFtcyk7XG4gICAgICAgICAgICBpZiAocGFyYW1WYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zW3BhcmFtTmFtZV0gPSBwYXJhbVZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbVR5cGUgIT09ICdvcHRpb25hbC1jYXRjaGFsbCcpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBjb3VsZG4ndCByZXNvbHZlIHRoZSBwYXJhbSwgbWFyayBpdCBhcyBhIGZhbGxiYWNrXG4gICAgICAgICAgICAgICAgZmFsbGJhY2tSb3V0ZVBhcmFtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1OYW1lLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbVR5cGVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBDYWxjdWxhdGUgbmV4dCBkZXB0aCAtIGluY3JlbWVudCBpZiB0aGlzIGlzIG5vdCBhIHJvdXRlIGdyb3VwIGFuZCBub3QgZW1wdHlcbiAgICAgICAgbGV0IG5leHREZXB0aCA9IGRlcHRoO1xuICAgICAgICBpZiAoYXBwU2VnbWVudCAmJiBhcHBTZWdtZW50LnR5cGUgIT09ICdyb3V0ZS1ncm91cCcgJiYgYXBwU2VnbWVudC50eXBlICE9PSAncGFyYWxsZWwtcm91dGUnKSB7XG4gICAgICAgICAgICBuZXh0RGVwdGgrKztcbiAgICAgICAgfVxuICAgICAgICAvLyBBZGQgYWxsIHBhcmFsbGVsIHJvdXRlcyB0byB0aGUgc3RhY2sgZm9yIHByb2Nlc3NpbmcuXG4gICAgICAgIGZvciAoY29uc3QgcGFyYWxsZWxSb3V0ZSBvZiBPYmplY3QudmFsdWVzKHBhcmFsbGVsUm91dGVzKSl7XG4gICAgICAgICAgICBzdGFjay5wdXNoKHtcbiAgICAgICAgICAgICAgICB0cmVlOiBwYXJhbGxlbFJvdXRlLFxuICAgICAgICAgICAgICAgIGRlcHRoOiBuZXh0RGVwdGhcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD11dGlscy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/static-paths/utils.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js":
|
||
/*!*****************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js ***!
|
||
\*****************************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/* eslint-disable import/no-extraneous-dependencies */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createProxy\", ({\n enumerable: true,\n get: function() {\n return createProxy;\n }\n}));\nconst _server = __webpack_require__(/*! react-server-dom-webpack/server */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.js\");\nconst createProxy = _server.createClientModuleProxy;\n\n//# sourceMappingURL=module-proxy.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1sb2FkZXIvbW9kdWxlLXByb3h5LmpzIiwibWFwcGluZ3MiOiJBQUFBLHVEQUFvRTtBQUNwRSw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRiwrQ0FBOEM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRixnQkFBZ0IsbUJBQU8sQ0FBQyxxSkFBaUM7QUFDekQ7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1sb2FkZXIvbW9kdWxlLXByb3h5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqLyBcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImNyZWF0ZVByb3h5XCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVQcm94eTtcbiAgICB9XG59KTtcbmNvbnN0IF9zZXJ2ZXIgPSByZXF1aXJlKFwicmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrL3NlcnZlclwiKTtcbmNvbnN0IGNyZWF0ZVByb3h5ID0gX3NlcnZlci5jcmVhdGVDbGllbnRNb2R1bGVQcm94eTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bW9kdWxlLXByb3h5LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/client/components/app-router-headers.js":
|
||
/*!************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/app-router-headers.js ***!
|
||
\************************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n ACTION_HEADER: function() {\n return ACTION_HEADER;\n },\n FLIGHT_HEADERS: function() {\n return FLIGHT_HEADERS;\n },\n NEXT_ACTION_NOT_FOUND_HEADER: function() {\n return NEXT_ACTION_NOT_FOUND_HEADER;\n },\n NEXT_ACTION_REVALIDATED_HEADER: function() {\n return NEXT_ACTION_REVALIDATED_HEADER;\n },\n NEXT_DID_POSTPONE_HEADER: function() {\n return NEXT_DID_POSTPONE_HEADER;\n },\n NEXT_HMR_REFRESH_HASH_COOKIE: function() {\n return NEXT_HMR_REFRESH_HASH_COOKIE;\n },\n NEXT_HMR_REFRESH_HEADER: function() {\n return NEXT_HMR_REFRESH_HEADER;\n },\n NEXT_HTML_REQUEST_ID_HEADER: function() {\n return NEXT_HTML_REQUEST_ID_HEADER;\n },\n NEXT_INSTANT_PREFETCH_HEADER: function() {\n return NEXT_INSTANT_PREFETCH_HEADER;\n },\n NEXT_INSTANT_TEST_COOKIE: function() {\n return NEXT_INSTANT_TEST_COOKIE;\n },\n NEXT_IS_PRERENDER_HEADER: function() {\n return NEXT_IS_PRERENDER_HEADER;\n },\n NEXT_REQUEST_ID_HEADER: function() {\n return NEXT_REQUEST_ID_HEADER;\n },\n NEXT_REWRITTEN_PATH_HEADER: function() {\n return NEXT_REWRITTEN_PATH_HEADER;\n },\n NEXT_REWRITTEN_QUERY_HEADER: function() {\n return NEXT_REWRITTEN_QUERY_HEADER;\n },\n NEXT_ROUTER_PREFETCH_HEADER: function() {\n return NEXT_ROUTER_PREFETCH_HEADER;\n },\n NEXT_ROUTER_SEGMENT_PREFETCH_HEADER: function() {\n return NEXT_ROUTER_SEGMENT_PREFETCH_HEADER;\n },\n NEXT_ROUTER_STALE_TIME_HEADER: function() {\n return NEXT_ROUTER_STALE_TIME_HEADER;\n },\n NEXT_ROUTER_STATE_TREE_HEADER: function() {\n return NEXT_ROUTER_STATE_TREE_HEADER;\n },\n NEXT_RSC_UNION_QUERY: function() {\n return NEXT_RSC_UNION_QUERY;\n },\n NEXT_URL: function() {\n return NEXT_URL;\n },\n RSC_CONTENT_TYPE_HEADER: function() {\n return RSC_CONTENT_TYPE_HEADER;\n },\n RSC_HEADER: function() {\n return RSC_HEADER;\n }\n});\nconst RSC_HEADER = 'rsc';\nconst ACTION_HEADER = 'next-action';\nconst NEXT_ROUTER_STATE_TREE_HEADER = 'next-router-state-tree';\nconst NEXT_ROUTER_PREFETCH_HEADER = 'next-router-prefetch';\nconst NEXT_ROUTER_SEGMENT_PREFETCH_HEADER = 'next-router-segment-prefetch';\nconst NEXT_HMR_REFRESH_HEADER = 'next-hmr-refresh';\nconst NEXT_HMR_REFRESH_HASH_COOKIE = '__next_hmr_refresh_hash__';\nconst NEXT_URL = 'next-url';\nconst RSC_CONTENT_TYPE_HEADER = 'text/x-component';\nconst NEXT_INSTANT_PREFETCH_HEADER = 'next-instant-navigation-testing-prefetch';\nconst NEXT_INSTANT_TEST_COOKIE = 'next-instant-navigation-testing';\nconst FLIGHT_HEADERS = [\n RSC_HEADER,\n NEXT_ROUTER_STATE_TREE_HEADER,\n NEXT_ROUTER_PREFETCH_HEADER,\n NEXT_HMR_REFRESH_HEADER,\n NEXT_ROUTER_SEGMENT_PREFETCH_HEADER\n];\nconst NEXT_RSC_UNION_QUERY = '_rsc';\nconst NEXT_ROUTER_STALE_TIME_HEADER = 'x-nextjs-stale-time';\nconst NEXT_DID_POSTPONE_HEADER = 'x-nextjs-postponed';\nconst NEXT_REWRITTEN_PATH_HEADER = 'x-nextjs-rewritten-path';\nconst NEXT_REWRITTEN_QUERY_HEADER = 'x-nextjs-rewritten-query';\nconst NEXT_IS_PRERENDER_HEADER = 'x-nextjs-prerender';\nconst NEXT_ACTION_NOT_FOUND_HEADER = 'x-nextjs-action-not-found';\nconst NEXT_REQUEST_ID_HEADER = 'x-nextjs-request-id';\nconst NEXT_HTML_REQUEST_ID_HEADER = 'x-nextjs-html-request-id';\nconst NEXT_ACTION_REVALIDATED_HEADER = 'x-action-revalidated';\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=app-router-headers.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2FwcC1yb3V0ZXItaGVhZGVycy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFDYUEsYUFBYTtlQUFiQTs7SUErQkFDLGNBQWM7ZUFBZEE7O0lBZUFDLDRCQUE0QjtlQUE1QkE7O0lBS0FDLDhCQUE4QjtlQUE5QkE7O0lBVEFDLHdCQUF3QjtlQUF4QkE7O0lBN0JBQyw0QkFBNEI7ZUFBNUJBOztJQURBQyx1QkFBdUI7ZUFBdkJBOztJQW9DQUMsMkJBQTJCO2VBQTNCQTs7SUEzQkFDLDRCQUE0QjtlQUE1QkE7O0lBT0FDLHdCQUF3QjtlQUF4QkE7O0lBaUJBQyx3QkFBd0I7ZUFBeEJBOztJQUVBQyxzQkFBc0I7ZUFBdEJBOztJQUpBQywwQkFBMEI7ZUFBMUJBOztJQUNBQywyQkFBMkI7ZUFBM0JBOztJQXZDQUMsMkJBQTJCO2VBQTNCQTs7SUFLQUMsbUNBQW1DO2VBQW5DQTs7SUErQkFDLDZCQUE2QjtlQUE3QkE7O0lBckNBQyw2QkFBNkI7ZUFBN0JBOztJQW1DQUMsb0JBQW9CO2VBQXBCQTs7SUF6QkFDLFFBQVE7ZUFBUkE7O0lBQ0FDLHVCQUF1QjtlQUF2QkE7O0lBaEJBQyxVQUFVO2VBQVZBOzs7QUFBTixNQUFNQSxhQUFhO0FBQ25CLE1BQU1yQixnQkFBZ0I7QUFJdEIsTUFBTWlCLGdDQUFnQztBQUN0QyxNQUFNSCw4QkFBOEI7QUFLcEMsTUFBTUMsc0NBQ1g7QUFDSyxNQUFNVCwwQkFBMEI7QUFDaEMsTUFBTUQsK0JBQStCO0FBQ3JDLE1BQU1jLFdBQVc7QUFDakIsTUFBTUMsMEJBQTBCO0FBTWhDLE1BQU1aLCtCQUNYO0FBTUssTUFBTUMsMkJBQ1g7QUFFSyxNQUFNUixpQkFBaUI7SUFDNUJvQjtJQUNBSjtJQUNBSDtJQUNBUjtJQUNBUztDQUNEO0FBRU0sTUFBTUcsdUJBQXVCO0FBRTdCLE1BQU1GLGdDQUFnQztBQUN0QyxNQUFNWiwyQkFBMkI7QUFDakMsTUFBTVEsNkJBQTZCO0FBQ25DLE1BQU1DLDhCQUE4QjtBQUNwQyxNQUFNSCwyQkFBMkI7QUFDakMsTUFBTVIsK0JBQStCO0FBQ3JDLE1BQU1TLHlCQUF5QjtBQUMvQixNQUFNSiw4QkFBOEI7QUFHcEMsTUFBTUosaUNBQWlDIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL2NsaWVudC9jb21wb25lbnRzL2FwcC1yb3V0ZXItaGVhZGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUlNDX0hFQURFUiA9ICdyc2MnIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgQUNUSU9OX0hFQURFUiA9ICduZXh0LWFjdGlvbicgYXMgY29uc3Rcbi8vIFRPRE86IEluc3RlYWQgb2Ygc2VuZGluZyB0aGUgZnVsbCByb3V0ZXIgc3RhdGUsIHdlIG9ubHkgbmVlZCB0byBzZW5kIHRoZVxuLy8gc2VnbWVudCBwYXRoLiBTYXZlcyBieXRlcy4gVGhlbiB3ZSBjb3VsZCBhbHNvIHVzZSB0aGlzIGZpZWxkIGZvciBzZWdtZW50XG4vLyBwcmVmZXRjaGVzLCB3aGljaCBhbHNvIG5lZWQgdG8gc3BlY2lmeSBhIHBhcnRpY3VsYXIgc2VnbWVudC5cbmV4cG9ydCBjb25zdCBORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUiA9ICduZXh0LXJvdXRlci1zdGF0ZS10cmVlJyBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IE5FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUiA9ICduZXh0LXJvdXRlci1wcmVmZXRjaCcgYXMgY29uc3Rcbi8vIFRoaXMgY29udGFpbnMgdGhlIHBhdGggdG8gdGhlIHNlZ21lbnQgYmVpbmcgcHJlZmV0Y2hlZC5cbi8vIFRPRE86IElmIHdlIGNoYW5nZSBuZXh0LXJvdXRlci1zdGF0ZS10cmVlIHRvIGJlIGEgc2VnbWVudCBwYXRoLCB3ZSBjYW4gdXNlXG4vLyB0aGF0IGluc3RlYWQuIFRoZW4gbmV4dC1yb3V0ZXItcHJlZmV0Y2ggYW5kIG5leHQtcm91dGVyLXNlZ21lbnQtcHJlZmV0Y2ggY2FuXG4vLyBiZSBtZXJnZWQgaW50byBhIHNpbmdsZSBlbnVtLlxuZXhwb3J0IGNvbnN0IE5FWFRfUk9VVEVSX1NFR01FTlRfUFJFRkVUQ0hfSEVBREVSID1cbiAgJ25leHQtcm91dGVyLXNlZ21lbnQtcHJlZmV0Y2gnIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgTkVYVF9ITVJfUkVGUkVTSF9IRUFERVIgPSAnbmV4dC1obXItcmVmcmVzaCcgYXMgY29uc3RcbmV4cG9ydCBjb25zdCBORVhUX0hNUl9SRUZSRVNIX0hBU0hfQ09PS0lFID0gJ19fbmV4dF9obXJfcmVmcmVzaF9oYXNoX18nIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgTkVYVF9VUkwgPSAnbmV4dC11cmwnIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgUlNDX0NPTlRFTlRfVFlQRV9IRUFERVIgPSAndGV4dC94LWNvbXBvbmVudCcgYXMgY29uc3RcblxuLy8gSGVhZGVyIGZvciB0aGUgSW5zdGFudCBOYXZpZ2F0aW9uIFRlc3RpbmcgQVBJLiBJbiBkZXZlbG9wbWVudCBhbmQgdGVzdGluZ1xuLy8gYnVpbGRzLCBzdGF0aWMgcHJlLXJlbmRlcnMgbm9ybWFsbHkgZG9uJ3QgaGFwcGVuLiBUaGlzIGhlYWRlciB0ZWxscyB0aGVcbi8vIHNlcnZlciB0byBwZXJmb3JtIGEgc3RhdGljIHByZS1yZW5kZXIgYW55d2F5LCBhbGxvd2luZyB0ZXN0cyB0byBhc3NlcnQgb25cbi8vIHRoZSBwcmVmZXRjaGVkIFVJLiBOb3QgZXhwb3NlZCBpbiBwcm9kdWN0aW9uIGJ1aWxkcyBieSBkZWZhdWx0LlxuZXhwb3J0IGNvbnN0IE5FWFRfSU5TVEFOVF9QUkVGRVRDSF9IRUFERVIgPVxuICAnbmV4dC1pbnN0YW50LW5hdmlnYXRpb24tdGVzdGluZy1wcmVmZXRjaCcgYXMgY29uc3RcblxuLy8gQ29va2llIGZvciB0aGUgSW5zdGFudCBOYXZpZ2F0aW9uIFRlc3RpbmcgQVBJLiBVc2VkIGZvciBNUEEgbmF2aWdhdGlvbnNcbi8vIChwYWdlIHJlbG9hZCwgZnVsbCBwYWdlIGxvYWQpIHdoZXJlIHdlIGNhbid0IHNldCByZXF1ZXN0IGhlYWRlcnMuIFdoZW4gc2V0LFxuLy8gdGhlIHNlcnZlciByZW5kZXJzIG9ubHkgdGhlIHN0YXRpYyBzaGVsbC4gTm90IGV4cG9zZWQgaW4gcHJvZHVjdGlvbiBidWlsZHNcbi8vIGJ5IGRlZmF1bHQuXG5leHBvcnQgY29uc3QgTkVYVF9JTlNUQU5UX1RFU1RfQ09PS0lFID1cbiAgJ25leHQtaW5zdGFudC1uYXZpZ2F0aW9uLXRlc3RpbmcnIGFzIGNvbnN0XG5cbmV4cG9ydCBjb25zdCBGTElHSFRfSEVBREVSUyA9IFtcbiAgUlNDX0hFQURFUixcbiAgTkVYVF9ST1VURVJfU1RBVEVfVFJFRV9IRUFERVIsXG4gIE5FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUixcbiAgTkVYVF9ITVJfUkVGUkVTSF9IRUFERVIsXG4gIE5FWFRfUk9VVEVSX1NFR01FTlRfUFJFRkVUQ0hfSEVBREVSLFxuXSBhcyBjb25zdFxuXG5leHBvcnQgY29uc3QgTkVYVF9SU0NfVU5JT05fUVVFUlkgPSAnX3JzYycgYXMgY29uc3RcblxuZXhwb3J0IGNvbnN0IE5FWFRfUk9VVEVSX1NUQUxFX1RJTUVfSEVBREVSID0gJ3gtbmV4dGpzLXN0YWxlLXRpbWUnIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgTkVYVF9ESURfUE9TVFBPTkVfSEVBREVSID0gJ3gtbmV4dGpzLXBvc3Rwb25lZCcgYXMgY29uc3RcbmV4cG9ydCBjb25zdCBORVhUX1JFV1JJVFRFTl9QQVRIX0hFQURFUiA9ICd4LW5leHRqcy1yZXdyaXR0ZW4tcGF0aCcgYXMgY29uc3RcbmV4cG9ydCBjb25zdCBORVhUX1JFV1JJVFRFTl9RVUVSWV9IRUFERVIgPSAneC1uZXh0anMtcmV3cml0dGVuLXF1ZXJ5JyBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IE5FWFRfSVNfUFJFUkVOREVSX0hFQURFUiA9ICd4LW5leHRqcy1wcmVyZW5kZXInIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgTkVYVF9BQ1RJT05fTk9UX0ZPVU5EX0hFQURFUiA9ICd4LW5leHRqcy1hY3Rpb24tbm90LWZvdW5kJyBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IE5FWFRfUkVRVUVTVF9JRF9IRUFERVIgPSAneC1uZXh0anMtcmVxdWVzdC1pZCcgYXMgY29uc3RcbmV4cG9ydCBjb25zdCBORVhUX0hUTUxfUkVRVUVTVF9JRF9IRUFERVIgPSAneC1uZXh0anMtaHRtbC1yZXF1ZXN0LWlkJyBhcyBjb25zdFxuXG4vLyBUT0RPOiBTaG91bGQgdGhpcyBpbmNsdWRlIG5leHRqcyBpbiB0aGUgbmFtZSwgbGlrZSB0aGUgb3RoZXJzP1xuZXhwb3J0IGNvbnN0IE5FWFRfQUNUSU9OX1JFVkFMSURBVEVEX0hFQURFUiA9ICd4LWFjdGlvbi1yZXZhbGlkYXRlZCcgYXMgY29uc3RcbiJdLCJuYW1lcyI6WyJBQ1RJT05fSEVBREVSIiwiRkxJR0hUX0hFQURFUlMiLCJORVhUX0FDVElPTl9OT1RfRk9VTkRfSEVBREVSIiwiTkVYVF9BQ1RJT05fUkVWQUxJREFURURfSEVBREVSIiwiTkVYVF9ESURfUE9TVFBPTkVfSEVBREVSIiwiTkVYVF9ITVJfUkVGUkVTSF9IQVNIX0NPT0tJRSIsIk5FWFRfSE1SX1JFRlJFU0hfSEVBREVSIiwiTkVYVF9IVE1MX1JFUVVFU1RfSURfSEVBREVSIiwiTkVYVF9JTlNUQU5UX1BSRUZFVENIX0hFQURFUiIsIk5FWFRfSU5TVEFOVF9URVNUX0NPT0tJRSIsIk5FWFRfSVNfUFJFUkVOREVSX0hFQURFUiIsIk5FWFRfUkVRVUVTVF9JRF9IRUFERVIiLCJORVhUX1JFV1JJVFRFTl9QQVRIX0hFQURFUiIsIk5FWFRfUkVXUklUVEVOX1FVRVJZX0hFQURFUiIsIk5FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUiIsIk5FWFRfUk9VVEVSX1NFR01FTlRfUFJFRkVUQ0hfSEVBREVSIiwiTkVYVF9ST1VURVJfU1RBTEVfVElNRV9IRUFERVIiLCJORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUiIsIk5FWFRfUlNDX1VOSU9OX1FVRVJZIiwiTkVYVF9VUkwiLCJSU0NfQ09OVEVOVF9UWVBFX0hFQURFUiIsIlJTQ19IRUFERVIiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/app-router-headers.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/client/components/builtin/forbidden.js":
|
||
/*!***********************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/builtin/forbidden.js ***!
|
||
\***********************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return Forbidden;\n }\n}));\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js\");\nconst _errorfallback = __webpack_require__(/*! ../http-access-fallback/error-fallback */ \"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-fallback.js\");\nfunction Forbidden() {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_errorfallback.HTTPAccessErrorFallback, {\n status: 403,\n message: \"This page could not be accessed.\"\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=forbidden.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2J1aWx0aW4vZm9yYmlkZGVuLmpzIiwibWFwcGluZ3MiOiI7Ozs7MkNBRUE7OztlQUF3QkE7Ozs7MkNBRmdCO0FBRXpCLFNBQVNBO0lBQ3RCLHFCQUNFLHFCQUFDQyxlQUFBQSx1QkFBdUI7UUFDdEJDLFFBQVE7UUFDUkMsU0FBUTs7QUFHZCIsInNvdXJjZXMiOlsiL1VzZXJzL3NyYy9jbGllbnQvY29tcG9uZW50cy9idWlsdGluL2ZvcmJpZGRlbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSFRUUEFjY2Vzc0Vycm9yRmFsbGJhY2sgfSBmcm9tICcuLi9odHRwLWFjY2Vzcy1mYWxsYmFjay9lcnJvci1mYWxsYmFjaydcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRm9yYmlkZGVuKCkge1xuICByZXR1cm4gKFxuICAgIDxIVFRQQWNjZXNzRXJyb3JGYWxsYmFja1xuICAgICAgc3RhdHVzPXs0MDN9XG4gICAgICBtZXNzYWdlPVwiVGhpcyBwYWdlIGNvdWxkIG5vdCBiZSBhY2Nlc3NlZC5cIlxuICAgIC8+XG4gIClcbn1cbiJdLCJuYW1lcyI6WyJGb3JiaWRkZW4iLCJIVFRQQWNjZXNzRXJyb3JGYWxsYmFjayIsInN0YXR1cyIsIm1lc3NhZ2UiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/builtin/forbidden.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/client/components/builtin/global-error.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/builtin/global-error.js ***!
|
||
\**************************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
eval("// This file is generated by the Webpack next-flight-loader.\nconst { createProxy } = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ \"(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js\")\n\nmodule.exports = createProxy(\"/Users/pouyanmb/Desktop/git-projects/digikala-tailwind/node_modules/next/dist/client/components/builtin/global-error.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2J1aWx0aW4vZ2xvYmFsLWVycm9yLmpzIiwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlcyI6WyJfTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9idWlsdGluL2dsb2JhbC1lcnJvci5qcy9fX25leHRqcy1pbnRlcm5hbC1wcm94eS5janMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSB0aGUgV2VicGFjayBuZXh0LWZsaWdodC1sb2FkZXIuXG5jb25zdCB7IGNyZWF0ZVByb3h5IH0gPSByZXF1aXJlKFwibmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1sb2FkZXIvbW9kdWxlLXByb3h5XCIpXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlUHJveHkoXCIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9idWlsdGluL2dsb2JhbC1lcnJvci5qc1wiKVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/builtin/global-error.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/client/components/builtin/not-found.js":
|
||
/*!***********************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/builtin/not-found.js ***!
|
||
\***********************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return NotFound;\n }\n}));\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js\");\nconst _errorfallback = __webpack_require__(/*! ../http-access-fallback/error-fallback */ \"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-fallback.js\");\nfunction NotFound() {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_errorfallback.HTTPAccessErrorFallback, {\n status: 404,\n message: \"This page could not be found.\"\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=not-found.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2J1aWx0aW4vbm90LWZvdW5kLmpzIiwibWFwcGluZ3MiOiI7Ozs7MkNBRUE7OztlQUF3QkE7Ozs7MkNBRmdCO0FBRXpCLFNBQVNBO0lBQ3RCLHFCQUNFLHFCQUFDQyxlQUFBQSx1QkFBdUI7UUFDdEJDLFFBQVE7UUFDUkMsU0FBUTs7QUFHZCIsInNvdXJjZXMiOlsiL1VzZXJzL3NyYy9jbGllbnQvY29tcG9uZW50cy9idWlsdGluL25vdC1mb3VuZC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSFRUUEFjY2Vzc0Vycm9yRmFsbGJhY2sgfSBmcm9tICcuLi9odHRwLWFjY2Vzcy1mYWxsYmFjay9lcnJvci1mYWxsYmFjaydcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTm90Rm91bmQoKSB7XG4gIHJldHVybiAoXG4gICAgPEhUVFBBY2Nlc3NFcnJvckZhbGxiYWNrXG4gICAgICBzdGF0dXM9ezQwNH1cbiAgICAgIG1lc3NhZ2U9XCJUaGlzIHBhZ2UgY291bGQgbm90IGJlIGZvdW5kLlwiXG4gICAgLz5cbiAgKVxufVxuIl0sIm5hbWVzIjpbIk5vdEZvdW5kIiwiSFRUUEFjY2Vzc0Vycm9yRmFsbGJhY2siLCJzdGF0dXMiLCJtZXNzYWdlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/builtin/not-found.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/client/components/builtin/unauthorized.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/builtin/unauthorized.js ***!
|
||
\**************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return Unauthorized;\n }\n}));\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js\");\nconst _errorfallback = __webpack_require__(/*! ../http-access-fallback/error-fallback */ \"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-fallback.js\");\nfunction Unauthorized() {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_errorfallback.HTTPAccessErrorFallback, {\n status: 401,\n message: \"You're not authorized to access this page.\"\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=unauthorized.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2J1aWx0aW4vdW5hdXRob3JpemVkLmpzIiwibWFwcGluZ3MiOiI7Ozs7MkNBRUE7OztlQUF3QkE7Ozs7MkNBRmdCO0FBRXpCLFNBQVNBO0lBQ3RCLHFCQUNFLHFCQUFDQyxlQUFBQSx1QkFBdUI7UUFDdEJDLFFBQVE7UUFDUkMsU0FBUTs7QUFHZCIsInNvdXJjZXMiOlsiL1VzZXJzL3NyYy9jbGllbnQvY29tcG9uZW50cy9idWlsdGluL3VuYXV0aG9yaXplZC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSFRUUEFjY2Vzc0Vycm9yRmFsbGJhY2sgfSBmcm9tICcuLi9odHRwLWFjY2Vzcy1mYWxsYmFjay9lcnJvci1mYWxsYmFjaydcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVW5hdXRob3JpemVkKCkge1xuICByZXR1cm4gKFxuICAgIDxIVFRQQWNjZXNzRXJyb3JGYWxsYmFja1xuICAgICAgc3RhdHVzPXs0MDF9XG4gICAgICBtZXNzYWdlPVwiWW91J3JlIG5vdCBhdXRob3JpemVkIHRvIGFjY2VzcyB0aGlzIHBhZ2UuXCJcbiAgICAvPlxuICApXG59XG4iXSwibmFtZXMiOlsiVW5hdXRob3JpemVkIiwiSFRUUEFjY2Vzc0Vycm9yRmFsbGJhY2siLCJzdGF0dXMiLCJtZXNzYWdlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/builtin/unauthorized.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/client/components/client-page.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/client-page.js ***!
|
||
\*****************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
eval("// This file is generated by the Webpack next-flight-loader.\nconst { createProxy } = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ \"(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js\")\n\nmodule.exports = createProxy(\"/Users/pouyanmb/Desktop/git-projects/digikala-tailwind/node_modules/next/dist/client/components/client-page.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2NsaWVudC1wYWdlLmpzIiwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlcyI6WyJfTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9jbGllbnQtcGFnZS5qcy9fX25leHRqcy1pbnRlcm5hbC1wcm94eS5janMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSB0aGUgV2VicGFjayBuZXh0LWZsaWdodC1sb2FkZXIuXG5jb25zdCB7IGNyZWF0ZVByb3h5IH0gPSByZXF1aXJlKFwibmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1sb2FkZXIvbW9kdWxlLXByb3h5XCIpXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlUHJveHkoXCIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9jbGllbnQtcGFnZS5qc1wiKVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/client-page.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/client/components/client-segment.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/client-segment.js ***!
|
||
\********************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
eval("// This file is generated by the Webpack next-flight-loader.\nconst { createProxy } = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ \"(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js\")\n\nmodule.exports = createProxy(\"/Users/pouyanmb/Desktop/git-projects/digikala-tailwind/node_modules/next/dist/client/components/client-segment.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2NsaWVudC1zZWdtZW50LmpzIiwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlcyI6WyJfTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9jbGllbnQtc2VnbWVudC5qcy9fX25leHRqcy1pbnRlcm5hbC1wcm94eS5janMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSB0aGUgV2VicGFjayBuZXh0LWZsaWdodC1sb2FkZXIuXG5jb25zdCB7IGNyZWF0ZVByb3h5IH0gPSByZXF1aXJlKFwibmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1sb2FkZXIvbW9kdWxlLXByb3h5XCIpXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlUHJveHkoXCIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9jbGllbnQtc2VnbWVudC5qc1wiKVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/client-segment.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/client/components/hooks-server-context.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/hooks-server-context.js ***!
|
||
\**************************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n DynamicServerError: function() {\n return DynamicServerError;\n },\n isDynamicServerError: function() {\n return isDynamicServerError;\n }\n});\nconst DYNAMIC_ERROR_CODE = 'DYNAMIC_SERVER_USAGE';\nclass DynamicServerError extends Error {\n constructor(description){\n super(`Dynamic server usage: ${description}`), this.description = description, this.digest = DYNAMIC_ERROR_CODE;\n }\n}\nfunction isDynamicServerError(err) {\n if (typeof err !== 'object' || err === null || !('digest' in err) || typeof err.digest !== 'string') {\n return false;\n }\n return err.digest === DYNAMIC_ERROR_CODE;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=hooks-server-context.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2hvb2tzLXNlcnZlci1jb250ZXh0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUVhQSxrQkFBa0I7ZUFBbEJBOztJQVFHQyxvQkFBb0I7ZUFBcEJBOzs7QUFWaEIsTUFBTUMscUJBQXFCO0FBRXBCLE1BQU1GLDJCQUEyQkc7SUFHdENDLFlBQTRCQyxXQUFtQixDQUFFO1FBQy9DLEtBQUssQ0FBQyxDQUFDLHNCQUFzQixFQUFFQSxhQUFhLFFBRGxCQSxXQUFBQSxHQUFBQSxhQUFBQSxJQUFBQSxDQUY1QkMsTUFBQUEsR0FBb0NKO0lBSXBDO0FBQ0Y7QUFFTyxTQUFTRCxxQkFBcUJNLEdBQVk7SUFDL0MsSUFDRSxPQUFPQSxRQUFRLFlBQ2ZBLFFBQVEsUUFDUixDQUFFLGFBQVlBLEdBQUFBLENBQUUsSUFDaEIsT0FBT0EsSUFBSUQsTUFBTSxLQUFLLFVBQ3RCO1FBQ0EsT0FBTztJQUNUO0lBRUEsT0FBT0MsSUFBSUQsTUFBTSxLQUFLSjtBQUN4QiIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9jbGllbnQvY29tcG9uZW50cy9ob29rcy1zZXJ2ZXItY29udGV4dC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBEWU5BTUlDX0VSUk9SX0NPREUgPSAnRFlOQU1JQ19TRVJWRVJfVVNBR0UnXG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljU2VydmVyRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGRpZ2VzdDogdHlwZW9mIERZTkFNSUNfRVJST1JfQ09ERSA9IERZTkFNSUNfRVJST1JfQ09ERVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gICAgc3VwZXIoYER5bmFtaWMgc2VydmVyIHVzYWdlOiAke2Rlc2NyaXB0aW9ufWApXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRHluYW1pY1NlcnZlckVycm9yKGVycjogdW5rbm93bik6IGVyciBpcyBEeW5hbWljU2VydmVyRXJyb3Ige1xuICBpZiAoXG4gICAgdHlwZW9mIGVyciAhPT0gJ29iamVjdCcgfHxcbiAgICBlcnIgPT09IG51bGwgfHxcbiAgICAhKCdkaWdlc3QnIGluIGVycikgfHxcbiAgICB0eXBlb2YgZXJyLmRpZ2VzdCAhPT0gJ3N0cmluZydcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gZXJyLmRpZ2VzdCA9PT0gRFlOQU1JQ19FUlJPUl9DT0RFXG59XG4iXSwibmFtZXMiOlsiRHluYW1pY1NlcnZlckVycm9yIiwiaXNEeW5hbWljU2VydmVyRXJyb3IiLCJEWU5BTUlDX0VSUk9SX0NPREUiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwiZGVzY3JpcHRpb24iLCJkaWdlc3QiLCJlcnIiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/hooks-server-context.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":
|
||
/*!*****************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js ***!
|
||
\*****************************************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
eval("// This file is generated by the Webpack next-flight-loader.\nconst { createProxy } = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ \"(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js\")\n\nmodule.exports = createProxy(\"/Users/pouyanmb/Desktop/git-projects/digikala-tailwind/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2Vycm9yLWJvdW5kYXJ5LmpzIiwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlcyI6WyJfTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9odHRwLWFjY2Vzcy1mYWxsYmFjay9lcnJvci1ib3VuZGFyeS5qcy9fX25leHRqcy1pbnRlcm5hbC1wcm94eS5janMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSB0aGUgV2VicGFjayBuZXh0LWZsaWdodC1sb2FkZXIuXG5jb25zdCB7IGNyZWF0ZVByb3h5IH0gPSByZXF1aXJlKFwibmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1sb2FkZXIvbW9kdWxlLXByb3h5XCIpXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlUHJveHkoXCIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9odHRwLWFjY2Vzcy1mYWxsYmFjay9lcnJvci1ib3VuZGFyeS5qc1wiKVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-fallback.js":
|
||
/*!*****************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/http-access-fallback/error-fallback.js ***!
|
||
\*****************************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"HTTPAccessErrorFallback\", ({\n enumerable: true,\n get: function() {\n return HTTPAccessErrorFallback;\n }\n}));\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js\");\nconst _accesserrorstyles = __webpack_require__(/*! ../styles/access-error-styles */ \"(rsc)/./node_modules/next/dist/client/components/styles/access-error-styles.js\");\nfunction HTTPAccessErrorFallback({ status, message }) {\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"title\", {\n children: `${status}: ${message}`\n }),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"div\", {\n style: _accesserrorstyles.styles.error,\n children: /*#__PURE__*/ (0, _jsxruntime.jsxs)(\"div\", {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"style\", {\n dangerouslySetInnerHTML: {\n /* Minified CSS from\n body { margin: 0; color: #000; background: #fff; }\n .next-error-h1 {\n border-right: 1px solid rgba(0, 0, 0, .3);\n }\n\n @media (prefers-color-scheme: dark) {\n body { color: #fff; background: #000; }\n .next-error-h1 {\n border-right: 1px solid rgba(255, 255, 255, .3);\n }\n }\n */ __html: `body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}`\n }\n }),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"h1\", {\n className: \"next-error-h1\",\n style: _accesserrorstyles.styles.h1,\n children: status\n }),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"div\", {\n style: _accesserrorstyles.styles.desc,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(\"h2\", {\n style: _accesserrorstyles.styles.h2,\n children: message\n })\n })\n ]\n })\n })\n ]\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=error-fallback.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2Vycm9yLWZhbGxiYWNrLmpzIiwibWFwcGluZ3MiOiI7Ozs7MkRBRWdCQTs7O2VBQUFBOzs7OytDQUZPO0FBRWhCLFNBQVNBLHdCQUF3QixFQUN0Q0MsTUFBTSxFQUNOQyxPQUFPLEVBSVI7SUFDQyxxQkFDRTs7MEJBRUUscUJBQUNDLFNBQUFBOzBCQUFPLEdBQUdGLE9BQU8sRUFBRSxFQUFFQyxTQUFTOzswQkFFL0IscUJBQUNFLE9BQUFBO2dCQUFJQyxPQUFPQyxtQkFBQUEsTUFBTSxDQUFDQyxLQUFLOzBCQUN0QixvQ0FBQ0gsT0FBQUE7O3NDQUNDLHFCQUFDQyxTQUFBQTs0QkFDQ0cseUJBQXlCO2dDQUN2Qjs7Ozs7Ozs7Ozs7O2NBWUEsR0FDQUMsUUFBUSxDQUFDLDZOQUE2TixDQUFDOzRCQUN6Tzs7c0NBRUYscUJBQUNDLE1BQUFBOzRCQUFHQyxXQUFVOzRCQUFnQk4sT0FBT0MsbUJBQUFBLE1BQU0sQ0FBQ0ksRUFBRTtzQ0FDM0NUOztzQ0FFSCxxQkFBQ0csT0FBQUE7NEJBQUlDLE9BQU9DLG1CQUFBQSxNQUFNLENBQUNNLElBQUk7c0NBQ3JCLG1DQUFDQyxNQUFBQTtnQ0FBR1IsT0FBT0MsbUJBQUFBLE1BQU0sQ0FBQ08sRUFBRTswQ0FBR1g7Ozs7Ozs7O0FBTW5DIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2NsaWVudC9jb21wb25lbnRzL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2Vycm9yLWZhbGxiYWNrLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzdHlsZXMgfSBmcm9tICcuLi9zdHlsZXMvYWNjZXNzLWVycm9yLXN0eWxlcydcblxuZXhwb3J0IGZ1bmN0aW9uIEhUVFBBY2Nlc3NFcnJvckZhbGxiYWNrKHtcbiAgc3RhdHVzLFxuICBtZXNzYWdlLFxufToge1xuICBzdGF0dXM6IG51bWJlclxuICBtZXNzYWdlOiBzdHJpbmdcbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgey8qIDxoZWFkPiAqL31cbiAgICAgIDx0aXRsZT57YCR7c3RhdHVzfTogJHttZXNzYWdlfWB9PC90aXRsZT5cbiAgICAgIHsvKiA8L2hlYWQ+ICovfVxuICAgICAgPGRpdiBzdHlsZT17c3R5bGVzLmVycm9yfT5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8c3R5bGVcbiAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7XG4gICAgICAgICAgICAgIC8qIE1pbmlmaWVkIENTUyBmcm9tXG4gICAgICAgICAgICAgICAgYm9keSB7IG1hcmdpbjogMDsgY29sb3I6ICMwMDA7IGJhY2tncm91bmQ6ICNmZmY7IH1cbiAgICAgICAgICAgICAgICAubmV4dC1lcnJvci1oMSB7XG4gICAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIC4zKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gICAgICAgICAgICAgICAgICBib2R5IHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQ6ICMwMDA7IH1cbiAgICAgICAgICAgICAgICAgIC5uZXh0LWVycm9yLWgxIHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMyk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICBfX2h0bWw6IGBib2R5e2NvbG9yOiMwMDA7YmFja2dyb3VuZDojZmZmO21hcmdpbjowfS5uZXh0LWVycm9yLWgxe2JvcmRlci1yaWdodDoxcHggc29saWQgcmdiYSgwLDAsMCwuMyl9QG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTpkYXJrKXtib2R5e2NvbG9yOiNmZmY7YmFja2dyb3VuZDojMDAwfS5uZXh0LWVycm9yLWgxe2JvcmRlci1yaWdodDoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwuMyl9fWAsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGgxIGNsYXNzTmFtZT1cIm5leHQtZXJyb3ItaDFcIiBzdHlsZT17c3R5bGVzLmgxfT5cbiAgICAgICAgICAgIHtzdGF0dXN9XG4gICAgICAgICAgPC9oMT5cbiAgICAgICAgICA8ZGl2IHN0eWxlPXtzdHlsZXMuZGVzY30+XG4gICAgICAgICAgICA8aDIgc3R5bGU9e3N0eWxlcy5oMn0+e21lc3NhZ2V9PC9oMj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKVxufVxuIl0sIm5hbWVzIjpbIkhUVFBBY2Nlc3NFcnJvckZhbGxiYWNrIiwic3RhdHVzIiwibWVzc2FnZSIsInRpdGxlIiwiZGl2Iiwic3R5bGUiLCJzdHlsZXMiLCJlcnJvciIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwiaDEiLCJjbGFzc05hbWUiLCJkZXNjIiwiaDIiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-fallback.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js":
|
||
/*!***********************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js ***!
|
||
\***********************************************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n HTTPAccessErrorStatus: function() {\n return HTTPAccessErrorStatus;\n },\n HTTP_ERROR_FALLBACK_ERROR_CODE: function() {\n return HTTP_ERROR_FALLBACK_ERROR_CODE;\n },\n getAccessFallbackErrorTypeByStatus: function() {\n return getAccessFallbackErrorTypeByStatus;\n },\n getAccessFallbackHTTPStatus: function() {\n return getAccessFallbackHTTPStatus;\n },\n isHTTPAccessFallbackError: function() {\n return isHTTPAccessFallbackError;\n }\n});\nconst HTTPAccessErrorStatus = {\n NOT_FOUND: 404,\n FORBIDDEN: 403,\n UNAUTHORIZED: 401\n};\nconst ALLOWED_CODES = new Set(Object.values(HTTPAccessErrorStatus));\nconst HTTP_ERROR_FALLBACK_ERROR_CODE = 'NEXT_HTTP_ERROR_FALLBACK';\nfunction isHTTPAccessFallbackError(error) {\n if (typeof error !== 'object' || error === null || !('digest' in error) || typeof error.digest !== 'string') {\n return false;\n }\n const [prefix, httpStatus] = error.digest.split(';');\n return prefix === HTTP_ERROR_FALLBACK_ERROR_CODE && ALLOWED_CODES.has(Number(httpStatus));\n}\nfunction getAccessFallbackHTTPStatus(error) {\n const httpStatus = error.digest.split(';')[1];\n return Number(httpStatus);\n}\nfunction getAccessFallbackErrorTypeByStatus(status) {\n switch(status){\n case 401:\n return 'unauthorized';\n case 403:\n return 'forbidden';\n case 404:\n return 'not-found';\n default:\n return;\n }\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=http-access-fallback.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2h0dHAtYWNjZXNzLWZhbGxiYWNrLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUFhQSxxQkFBcUI7ZUFBckJBOztJQVFBQyw4QkFBOEI7ZUFBOUJBOztJQXVDR0Msa0NBQWtDO2VBQWxDQTs7SUFQQUMsMkJBQTJCO2VBQTNCQTs7SUFuQkFDLHlCQUF5QjtlQUF6QkE7OztBQXJCVCxNQUFNSix3QkFBd0I7SUFDbkNLLFdBQVc7SUFDWEMsV0FBVztJQUNYQyxjQUFjO0FBQ2hCO0FBRUEsTUFBTUMsZ0JBQWdCLElBQUlDLElBQUlDLE9BQU9DLE1BQU0sQ0FBQ1g7QUFFckMsTUFBTUMsaUNBQWlDO0FBYXZDLFNBQVNHLDBCQUNkUSxLQUFjO0lBRWQsSUFDRSxPQUFPQSxVQUFVLFlBQ2pCQSxVQUFVLFFBQ1YsQ0FBRSxhQUFZQSxLQUFBQSxDQUFJLElBQ2xCLE9BQU9BLE1BQU1DLE1BQU0sS0FBSyxVQUN4QjtRQUNBLE9BQU87SUFDVDtJQUNBLE1BQU0sQ0FBQ0MsUUFBUUMsV0FBVyxHQUFHSCxNQUFNQyxNQUFNLENBQUNHLEtBQUssQ0FBQztJQUVoRCxPQUNFRixXQUFXYixrQ0FDWE8sY0FBY1MsR0FBRyxDQUFDQyxPQUFPSDtBQUU3QjtBQUVPLFNBQVNaLDRCQUNkUyxLQUE4QjtJQUU5QixNQUFNRyxhQUFhSCxNQUFNQyxNQUFNLENBQUNHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUM3QyxPQUFPRSxPQUFPSDtBQUNoQjtBQUVPLFNBQVNiLG1DQUNkaUIsTUFBYztJQUVkLE9BQVFBO1FBQ04sS0FBSztZQUNILE9BQU87UUFDVCxLQUFLO1lBQ0gsT0FBTztRQUNULEtBQUs7WUFDSCxPQUFPO1FBQ1Q7WUFDRTtJQUNKO0FBQ0YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvY2xpZW50L2NvbXBvbmVudHMvaHR0cC1hY2Nlc3MtZmFsbGJhY2svaHR0cC1hY2Nlc3MtZmFsbGJhY2sudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEhUVFBBY2Nlc3NFcnJvclN0YXR1cyA9IHtcbiAgTk9UX0ZPVU5EOiA0MDQsXG4gIEZPUkJJRERFTjogNDAzLFxuICBVTkFVVEhPUklaRUQ6IDQwMSxcbn1cblxuY29uc3QgQUxMT1dFRF9DT0RFUyA9IG5ldyBTZXQoT2JqZWN0LnZhbHVlcyhIVFRQQWNjZXNzRXJyb3JTdGF0dXMpKVxuXG5leHBvcnQgY29uc3QgSFRUUF9FUlJPUl9GQUxMQkFDS19FUlJPUl9DT0RFID0gJ05FWFRfSFRUUF9FUlJPUl9GQUxMQkFDSydcblxuZXhwb3J0IHR5cGUgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3IgPSBFcnJvciAmIHtcbiAgZGlnZXN0OiBgJHt0eXBlb2YgSFRUUF9FUlJPUl9GQUxMQkFDS19FUlJPUl9DT0RFfTske3N0cmluZ31gXG59XG5cbi8qKlxuICogQ2hlY2tzIGFuIGVycm9yIHRvIGRldGVybWluZSBpZiBpdCdzIGFuIGVycm9yIGdlbmVyYXRlZCBieVxuICogdGhlIEhUVFAgbmF2aWdhdGlvbiBBUElzIGBub3RGb3VuZCgpYCwgYGZvcmJpZGRlbigpYCBvciBgdW5hdXRob3JpemVkKClgLlxuICpcbiAqIEBwYXJhbSBlcnJvciB0aGUgZXJyb3IgdGhhdCBtYXkgcmVmZXJlbmNlIGEgSFRUUCBhY2Nlc3MgZXJyb3JcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGVycm9yIGlzIGEgSFRUUCBhY2Nlc3MgZXJyb3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3IoXG4gIGVycm9yOiB1bmtub3duXG4pOiBlcnJvciBpcyBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvciB7XG4gIGlmIChcbiAgICB0eXBlb2YgZXJyb3IgIT09ICdvYmplY3QnIHx8XG4gICAgZXJyb3IgPT09IG51bGwgfHxcbiAgICAhKCdkaWdlc3QnIGluIGVycm9yKSB8fFxuICAgIHR5cGVvZiBlcnJvci5kaWdlc3QgIT09ICdzdHJpbmcnXG4gICkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGNvbnN0IFtwcmVmaXgsIGh0dHBTdGF0dXNdID0gZXJyb3IuZGlnZXN0LnNwbGl0KCc7JylcblxuICByZXR1cm4gKFxuICAgIHByZWZpeCA9PT0gSFRUUF9FUlJPUl9GQUxMQkFDS19FUlJPUl9DT0RFICYmXG4gICAgQUxMT1dFRF9DT0RFUy5oYXMoTnVtYmVyKGh0dHBTdGF0dXMpKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBY2Nlc3NGYWxsYmFja0hUVFBTdGF0dXMoXG4gIGVycm9yOiBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvclxuKTogbnVtYmVyIHtcbiAgY29uc3QgaHR0cFN0YXR1cyA9IGVycm9yLmRpZ2VzdC5zcGxpdCgnOycpWzFdXG4gIHJldHVybiBOdW1iZXIoaHR0cFN0YXR1cylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFjY2Vzc0ZhbGxiYWNrRXJyb3JUeXBlQnlTdGF0dXMoXG4gIHN0YXR1czogbnVtYmVyXG4pOiAnbm90LWZvdW5kJyB8ICdmb3JiaWRkZW4nIHwgJ3VuYXV0aG9yaXplZCcgfCB1bmRlZmluZWQge1xuICBzd2l0Y2ggKHN0YXR1cykge1xuICAgIGNhc2UgNDAxOlxuICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnXG4gICAgY2FzZSA0MDM6XG4gICAgICByZXR1cm4gJ2ZvcmJpZGRlbidcbiAgICBjYXNlIDQwNDpcbiAgICAgIHJldHVybiAnbm90LWZvdW5kJ1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm5cbiAgfVxufVxuIl0sIm5hbWVzIjpbIkhUVFBBY2Nlc3NFcnJvclN0YXR1cyIsIkhUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERSIsImdldEFjY2Vzc0ZhbGxiYWNrRXJyb3JUeXBlQnlTdGF0dXMiLCJnZXRBY2Nlc3NGYWxsYmFja0hUVFBTdGF0dXMiLCJpc0hUVFBBY2Nlc3NGYWxsYmFja0Vycm9yIiwiTk9UX0ZPVU5EIiwiRk9SQklEREVOIiwiVU5BVVRIT1JJWkVEIiwiQUxMT1dFRF9DT0RFUyIsIlNldCIsIk9iamVjdCIsInZhbHVlcyIsImVycm9yIiwiZGlnZXN0IiwicHJlZml4IiwiaHR0cFN0YXR1cyIsInNwbGl0IiwiaGFzIiwiTnVtYmVyIiwic3RhdHVzIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/client/components/is-next-router-error.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/is-next-router-error.js ***!
|
||
\**************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"isNextRouterError\", ({\n enumerable: true,\n get: function() {\n return isNextRouterError;\n }\n}));\nconst _httpaccessfallback = __webpack_require__(/*! ./http-access-fallback/http-access-fallback */ \"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\");\nconst _redirecterror = __webpack_require__(/*! ./redirect-error */ \"(rsc)/./node_modules/next/dist/client/components/redirect-error.js\");\nfunction isNextRouterError(error) {\n return (0, _redirecterror.isRedirectError)(error) || (0, _httpaccessfallback.isHTTPAccessFallbackError)(error);\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=is-next-router-error.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2lzLW5leHQtcm91dGVyLWVycm9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7cURBV2dCQTs7O2VBQUFBOzs7Z0RBUlQ7MkNBQzZDO0FBTzdDLFNBQVNBLGtCQUNkQyxLQUFjO0lBRWQsT0FBT0MsQ0FBQUEsR0FBQUEsZUFBQUEsZUFBQUEsRUFBZ0JELFVBQVVFLENBQUFBLEdBQUFBLG9CQUFBQSx5QkFBQUEsRUFBMEJGO0FBQzdEIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL2NsaWVudC9jb21wb25lbnRzL2lzLW5leHQtcm91dGVyLWVycm9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGlzSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3IsXG4gIHR5cGUgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3IsXG59IGZyb20gJy4vaHR0cC1hY2Nlc3MtZmFsbGJhY2svaHR0cC1hY2Nlc3MtZmFsbGJhY2snXG5pbXBvcnQgeyBpc1JlZGlyZWN0RXJyb3IsIHR5cGUgUmVkaXJlY3RFcnJvciB9IGZyb20gJy4vcmVkaXJlY3QtZXJyb3InXG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBlcnJvciBpcyBhIG5hdmlnYXRpb24gc2lnbmFsIGVycm9yLiBUaGVzZSBlcnJvcnMgYXJlXG4gKiB0aHJvd24gYnkgdXNlciBjb2RlIHRvIHBlcmZvcm0gbmF2aWdhdGlvbiBvcGVyYXRpb25zIGFuZCBpbnRlcnJ1cHQgdGhlIFJlYWN0XG4gKiByZW5kZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05leHRSb3V0ZXJFcnJvcihcbiAgZXJyb3I6IHVua25vd25cbik6IGVycm9yIGlzIFJlZGlyZWN0RXJyb3IgfCBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvciB7XG4gIHJldHVybiBpc1JlZGlyZWN0RXJyb3IoZXJyb3IpIHx8IGlzSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3IoZXJyb3IpXG59XG4iXSwibmFtZXMiOlsiaXNOZXh0Um91dGVyRXJyb3IiLCJlcnJvciIsImlzUmVkaXJlY3RFcnJvciIsImlzSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3IiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/is-next-router-error.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/client/components/layout-router.js":
|
||
/*!*******************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/layout-router.js ***!
|
||
\*******************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
eval("// This file is generated by the Webpack next-flight-loader.\nconst { createProxy } = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ \"(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js\")\n\nmodule.exports = createProxy(\"/Users/pouyanmb/Desktop/git-projects/digikala-tailwind/node_modules/next/dist/client/components/layout-router.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2xheW91dC1yb3V0ZXIuanMiLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VzIjpbIl9OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2xheW91dC1yb3V0ZXIuanMvX19uZXh0anMtaW50ZXJuYWwtcHJveHkuY2pzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgdGhlIFdlYnBhY2sgbmV4dC1mbGlnaHQtbG9hZGVyLlxuY29uc3QgeyBjcmVhdGVQcm94eSB9ID0gcmVxdWlyZShcIm5leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvbmV4dC1mbGlnaHQtbG9hZGVyL21vZHVsZS1wcm94eVwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVByb3h5KFwiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbGF5b3V0LXJvdXRlci5qc1wiKVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/layout-router.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/client/components/redirect-error.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/redirect-error.js ***!
|
||
\********************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n REDIRECT_ERROR_CODE: function() {\n return REDIRECT_ERROR_CODE;\n },\n isRedirectError: function() {\n return isRedirectError;\n }\n});\nconst _redirectstatuscode = __webpack_require__(/*! ./redirect-status-code */ \"(rsc)/./node_modules/next/dist/client/components/redirect-status-code.js\");\nconst REDIRECT_ERROR_CODE = 'NEXT_REDIRECT';\nfunction isRedirectError(error) {\n if (typeof error !== 'object' || error === null || !('digest' in error) || typeof error.digest !== 'string') {\n return false;\n }\n const digest = error.digest.split(';');\n const [errorCode, type] = digest;\n const destination = digest.slice(2, -2).join(';');\n const status = digest.at(-2);\n const statusCode = Number(status);\n return errorCode === REDIRECT_ERROR_CODE && (type === 'replace' || type === 'push') && typeof destination === 'string' && !isNaN(statusCode) && statusCode in _redirectstatuscode.RedirectStatusCode;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=redirect-error.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JlZGlyZWN0LWVycm9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUVhQSxtQkFBbUI7ZUFBbkJBOztJQWVHQyxlQUFlO2VBQWZBOzs7Z0RBakJtQjtBQUU1QixNQUFNRCxzQkFBc0I7QUFlNUIsU0FBU0MsZ0JBQWdCQyxLQUFjO0lBQzVDLElBQ0UsT0FBT0EsVUFBVSxZQUNqQkEsVUFBVSxRQUNWLENBQUUsYUFBWUEsS0FBQUEsQ0FBSSxJQUNsQixPQUFPQSxNQUFNQyxNQUFNLEtBQUssVUFDeEI7UUFDQSxPQUFPO0lBQ1Q7SUFFQSxNQUFNQSxTQUFTRCxNQUFNQyxNQUFNLENBQUNDLEtBQUssQ0FBQztJQUNsQyxNQUFNLENBQUNDLFdBQVdDLEtBQUssR0FBR0g7SUFDMUIsTUFBTUksY0FBY0osT0FBT0ssS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHQyxJQUFJLENBQUM7SUFDN0MsTUFBTUMsU0FBU1AsT0FBT1EsRUFBRSxDQUFDLENBQUM7SUFFMUIsTUFBTUMsYUFBYUMsT0FBT0g7SUFFMUIsT0FDRUwsY0FBY0wsdUJBQ2JNLENBQUFBLFNBQVMsYUFBYUEsU0FBUyxPQUFLLElBQ3JDLE9BQU9DLGdCQUFnQixZQUN2QixDQUFDTyxNQUFNRixlQUNQQSxjQUFjRyxvQkFBQUEsa0JBQWtCO0FBRXBDIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL2NsaWVudC9jb21wb25lbnRzL3JlZGlyZWN0LWVycm9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlZGlyZWN0U3RhdHVzQ29kZSB9IGZyb20gJy4vcmVkaXJlY3Qtc3RhdHVzLWNvZGUnXG5cbmV4cG9ydCBjb25zdCBSRURJUkVDVF9FUlJPUl9DT0RFID0gJ05FWFRfUkVESVJFQ1QnXG5cbmV4cG9ydCB0eXBlIFJlZGlyZWN0VHlwZSA9ICdwdXNoJyB8ICdyZXBsYWNlJ1xuXG5leHBvcnQgdHlwZSBSZWRpcmVjdEVycm9yID0gRXJyb3IgJiB7XG4gIGRpZ2VzdDogYCR7dHlwZW9mIFJFRElSRUNUX0VSUk9SX0NPREV9OyR7UmVkaXJlY3RUeXBlfTske3N0cmluZ307JHtSZWRpcmVjdFN0YXR1c0NvZGV9O2Bcbn1cblxuLyoqXG4gKiBDaGVja3MgYW4gZXJyb3IgdG8gZGV0ZXJtaW5lIGlmIGl0J3MgYW4gZXJyb3IgZ2VuZXJhdGVkIGJ5IHRoZVxuICogYHJlZGlyZWN0KHVybClgIGhlbHBlci5cbiAqXG4gKiBAcGFyYW0gZXJyb3IgdGhlIGVycm9yIHRoYXQgbWF5IHJlZmVyZW5jZSBhIHJlZGlyZWN0IGVycm9yXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBlcnJvciBpcyBhIHJlZGlyZWN0IGVycm9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1JlZGlyZWN0RXJyb3IoZXJyb3I6IHVua25vd24pOiBlcnJvciBpcyBSZWRpcmVjdEVycm9yIHtcbiAgaWYgKFxuICAgIHR5cGVvZiBlcnJvciAhPT0gJ29iamVjdCcgfHxcbiAgICBlcnJvciA9PT0gbnVsbCB8fFxuICAgICEoJ2RpZ2VzdCcgaW4gZXJyb3IpIHx8XG4gICAgdHlwZW9mIGVycm9yLmRpZ2VzdCAhPT0gJ3N0cmluZydcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBjb25zdCBkaWdlc3QgPSBlcnJvci5kaWdlc3Quc3BsaXQoJzsnKVxuICBjb25zdCBbZXJyb3JDb2RlLCB0eXBlXSA9IGRpZ2VzdFxuICBjb25zdCBkZXN0aW5hdGlvbiA9IGRpZ2VzdC5zbGljZSgyLCAtMikuam9pbignOycpXG4gIGNvbnN0IHN0YXR1cyA9IGRpZ2VzdC5hdCgtMilcblxuICBjb25zdCBzdGF0dXNDb2RlID0gTnVtYmVyKHN0YXR1cylcblxuICByZXR1cm4gKFxuICAgIGVycm9yQ29kZSA9PT0gUkVESVJFQ1RfRVJST1JfQ09ERSAmJlxuICAgICh0eXBlID09PSAncmVwbGFjZScgfHwgdHlwZSA9PT0gJ3B1c2gnKSAmJlxuICAgIHR5cGVvZiBkZXN0aW5hdGlvbiA9PT0gJ3N0cmluZycgJiZcbiAgICAhaXNOYU4oc3RhdHVzQ29kZSkgJiZcbiAgICBzdGF0dXNDb2RlIGluIFJlZGlyZWN0U3RhdHVzQ29kZVxuICApXG59XG4iXSwibmFtZXMiOlsiUkVESVJFQ1RfRVJST1JfQ09ERSIsImlzUmVkaXJlY3RFcnJvciIsImVycm9yIiwiZGlnZXN0Iiwic3BsaXQiLCJlcnJvckNvZGUiLCJ0eXBlIiwiZGVzdGluYXRpb24iLCJzbGljZSIsImpvaW4iLCJzdGF0dXMiLCJhdCIsInN0YXR1c0NvZGUiLCJOdW1iZXIiLCJpc05hTiIsIlJlZGlyZWN0U3RhdHVzQ29kZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/redirect-error.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/client/components/redirect-status-code.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/redirect-status-code.js ***!
|
||
\**************************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"RedirectStatusCode\", ({\n enumerable: true,\n get: function() {\n return RedirectStatusCode;\n }\n}));\nvar RedirectStatusCode = /*#__PURE__*/ function(RedirectStatusCode) {\n RedirectStatusCode[RedirectStatusCode[\"SeeOther\"] = 303] = \"SeeOther\";\n RedirectStatusCode[RedirectStatusCode[\"TemporaryRedirect\"] = 307] = \"TemporaryRedirect\";\n RedirectStatusCode[RedirectStatusCode[\"PermanentRedirect\"] = 308] = \"PermanentRedirect\";\n return RedirectStatusCode;\n}({});\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=redirect-status-code.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JlZGlyZWN0LXN0YXR1cy1jb2RlLmpzIiwibWFwcGluZ3MiOiI7Ozs7c0RBQVlBOzs7ZUFBQUE7OztBQUFMLElBQUtBLHFCQUFBQSxXQUFBQSxHQUFBQSxTQUFBQSxrQkFBQUE7Ozs7V0FBQUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9zcmMvY2xpZW50L2NvbXBvbmVudHMvcmVkaXJlY3Qtc3RhdHVzLWNvZGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gUmVkaXJlY3RTdGF0dXNDb2RlIHtcbiAgU2VlT3RoZXIgPSAzMDMsXG4gIFRlbXBvcmFyeVJlZGlyZWN0ID0gMzA3LFxuICBQZXJtYW5lbnRSZWRpcmVjdCA9IDMwOCxcbn1cbiJdLCJuYW1lcyI6WyJSZWRpcmVjdFN0YXR1c0NvZGUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/redirect-status-code.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/client/components/render-from-template-context.js":
|
||
/*!**********************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/render-from-template-context.js ***!
|
||
\**********************************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
eval("// This file is generated by the Webpack next-flight-loader.\nconst { createProxy } = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ \"(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js\")\n\nmodule.exports = createProxy(\"/Users/pouyanmb/Desktop/git-projects/digikala-tailwind/node_modules/next/dist/client/components/render-from-template-context.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JlbmRlci1mcm9tLXRlbXBsYXRlLWNvbnRleHQuanMiLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VzIjpbIl9OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JlbmRlci1mcm9tLXRlbXBsYXRlLWNvbnRleHQuanMvX19uZXh0anMtaW50ZXJuYWwtcHJveHkuY2pzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgdGhlIFdlYnBhY2sgbmV4dC1mbGlnaHQtbG9hZGVyLlxuY29uc3QgeyBjcmVhdGVQcm94eSB9ID0gcmVxdWlyZShcIm5leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvbmV4dC1mbGlnaHQtbG9hZGVyL21vZHVsZS1wcm94eVwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVByb3h5KFwiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qc1wiKVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/render-from-template-context.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/client/components/static-generation-bailout.js":
|
||
/*!*******************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/static-generation-bailout.js ***!
|
||
\*******************************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n StaticGenBailoutError: function() {\n return StaticGenBailoutError;\n },\n isStaticGenBailoutError: function() {\n return isStaticGenBailoutError;\n }\n});\nconst NEXT_STATIC_GEN_BAILOUT = 'NEXT_STATIC_GEN_BAILOUT';\nclass StaticGenBailoutError extends Error {\n constructor(...args){\n super(...args), this.code = NEXT_STATIC_GEN_BAILOUT;\n }\n}\nfunction isStaticGenBailoutError(error) {\n if (typeof error !== 'object' || error === null || !('code' in error)) {\n return false;\n }\n return error.code === NEXT_STATIC_GEN_BAILOUT;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=static-generation-bailout.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3N0YXRpYy1nZW5lcmF0aW9uLWJhaWxvdXQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBRWFBLHFCQUFxQjtlQUFyQkE7O0lBSUdDLHVCQUF1QjtlQUF2QkE7OztBQU5oQixNQUFNQywwQkFBMEI7QUFFekIsTUFBTUYsOEJBQThCRzs7UUFBcEMscUJBQ1dDLElBQUFBLEdBQU9GOztBQUN6QjtBQUVPLFNBQVNELHdCQUNkSSxLQUFjO0lBRWQsSUFBSSxPQUFPQSxVQUFVLFlBQVlBLFVBQVUsUUFBUSxDQUFFLFdBQVVBLEtBQUFBLENBQUksRUFBSTtRQUNyRSxPQUFPO0lBQ1Q7SUFFQSxPQUFPQSxNQUFNRCxJQUFJLEtBQUtGO0FBQ3hCIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL2NsaWVudC9jb21wb25lbnRzL3N0YXRpYy1nZW5lcmF0aW9uLWJhaWxvdXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgTkVYVF9TVEFUSUNfR0VOX0JBSUxPVVQgPSAnTkVYVF9TVEFUSUNfR0VOX0JBSUxPVVQnXG5cbmV4cG9ydCBjbGFzcyBTdGF0aWNHZW5CYWlsb3V0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHB1YmxpYyByZWFkb25seSBjb2RlID0gTkVYVF9TVEFUSUNfR0VOX0JBSUxPVVRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RhdGljR2VuQmFpbG91dEVycm9yKFxuICBlcnJvcjogdW5rbm93blxuKTogZXJyb3IgaXMgU3RhdGljR2VuQmFpbG91dEVycm9yIHtcbiAgaWYgKHR5cGVvZiBlcnJvciAhPT0gJ29iamVjdCcgfHwgZXJyb3IgPT09IG51bGwgfHwgISgnY29kZScgaW4gZXJyb3IpKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gZXJyb3IuY29kZSA9PT0gTkVYVF9TVEFUSUNfR0VOX0JBSUxPVVRcbn1cbiJdLCJuYW1lcyI6WyJTdGF0aWNHZW5CYWlsb3V0RXJyb3IiLCJpc1N0YXRpY0dlbkJhaWxvdXRFcnJvciIsIk5FWFRfU1RBVElDX0dFTl9CQUlMT1VUIiwiRXJyb3IiLCJjb2RlIiwiZXJyb3IiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/static-generation-bailout.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/client/components/styles/access-error-styles.js":
|
||
/*!********************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/styles/access-error-styles.js ***!
|
||
\********************************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"styles\", ({\n enumerable: true,\n get: function() {\n return styles;\n }\n}));\nconst styles = {\n error: {\n // https://github.com/sindresorhus/modern-normalize/blob/main/modern-normalize.css#L38-L52\n fontFamily: 'system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"',\n height: '100vh',\n textAlign: 'center',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center'\n },\n desc: {\n display: 'inline-block'\n },\n h1: {\n display: 'inline-block',\n margin: '0 20px 0 0',\n padding: '0 23px 0 0',\n fontSize: 24,\n fontWeight: 500,\n verticalAlign: 'top',\n lineHeight: '49px'\n },\n h2: {\n fontSize: 14,\n fontWeight: 400,\n lineHeight: '49px',\n margin: 0\n }\n};\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=access-error-styles.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3N0eWxlcy9hY2Nlc3MtZXJyb3Itc3R5bGVzLmpzIiwibWFwcGluZ3MiOiI7Ozs7MENBQWFBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLFNBQThDO0lBQ3pEQyxPQUFPO1FBQ0wsMEZBQTBGO1FBQzFGQyxZQUNFO1FBQ0ZDLFFBQVE7UUFDUkMsV0FBVztRQUNYQyxTQUFTO1FBQ1RDLGVBQWU7UUFDZkMsWUFBWTtRQUNaQyxnQkFBZ0I7SUFDbEI7SUFFQUMsTUFBTTtRQUNKSixTQUFTO0lBQ1g7SUFFQUssSUFBSTtRQUNGTCxTQUFTO1FBQ1RNLFFBQVE7UUFDUkMsU0FBUztRQUNUQyxVQUFVO1FBQ1ZDLFlBQVk7UUFDWkMsZUFBZTtRQUNmQyxZQUFZO0lBQ2Q7SUFFQUMsSUFBSTtRQUNGSixVQUFVO1FBQ1ZDLFlBQVk7UUFDWkUsWUFBWTtRQUNaTCxRQUFRO0lBQ1Y7QUFDRiIsInNvdXJjZXMiOlsiL1VzZXJzL3NyYy9jbGllbnQvY29tcG9uZW50cy9zdHlsZXMvYWNjZXNzLWVycm9yLXN0eWxlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3Qgc3R5bGVzOiBSZWNvcmQ8c3RyaW5nLCBSZWFjdC5DU1NQcm9wZXJ0aWVzPiA9IHtcbiAgZXJyb3I6IHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vc2luZHJlc29yaHVzL21vZGVybi1ub3JtYWxpemUvYmxvYi9tYWluL21vZGVybi1ub3JtYWxpemUuY3NzI0wzOC1MNTJcbiAgICBmb250RmFtaWx5OlxuICAgICAgJ3N5c3RlbS11aSxcIlNlZ29lIFVJXCIsUm9ib3RvLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmLFwiQXBwbGUgQ29sb3IgRW1vamlcIixcIlNlZ29lIFVJIEVtb2ppXCInLFxuICAgIGhlaWdodDogJzEwMHZoJyxcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gIH0sXG5cbiAgZGVzYzoge1xuICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICB9LFxuXG4gIGgxOiB7XG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgbWFyZ2luOiAnMCAyMHB4IDAgMCcsXG4gICAgcGFkZGluZzogJzAgMjNweCAwIDAnLFxuICAgIGZvbnRTaXplOiAyNCxcbiAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgbGluZUhlaWdodDogJzQ5cHgnLFxuICB9LFxuXG4gIGgyOiB7XG4gICAgZm9udFNpemU6IDE0LFxuICAgIGZvbnRXZWlnaHQ6IDQwMCxcbiAgICBsaW5lSGVpZ2h0OiAnNDlweCcsXG4gICAgbWFyZ2luOiAwLFxuICB9LFxufVxuIl0sIm5hbWVzIjpbInN0eWxlcyIsImVycm9yIiwiZm9udEZhbWlseSIsImhlaWdodCIsInRleHRBbGlnbiIsImRpc3BsYXkiLCJmbGV4RGlyZWN0aW9uIiwiYWxpZ25JdGVtcyIsImp1c3RpZnlDb250ZW50IiwiZGVzYyIsImgxIiwibWFyZ2luIiwicGFkZGluZyIsImZvbnRTaXplIiwiZm9udFdlaWdodCIsInZlcnRpY2FsQWxpZ24iLCJsaW5lSGVpZ2h0IiwiaDIiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/styles/access-error-styles.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/client/script.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/next/dist/client/script.js ***!
|
||
\*************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
eval("// This file is generated by the Webpack next-flight-loader.\nconst { createProxy } = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ \"(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js\")\n\nmodule.exports = createProxy(\"/Users/pouyanmb/Desktop/git-projects/digikala-tailwind/node_modules/next/dist/client/script.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9zY3JpcHQuanMiLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VzIjpbIl9OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9zY3JpcHQuanMvX19uZXh0anMtaW50ZXJuYWwtcHJveHkuY2pzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgdGhlIFdlYnBhY2sgbmV4dC1mbGlnaHQtbG9hZGVyLlxuY29uc3QgeyBjcmVhdGVQcm94eSB9ID0gcmVxdWlyZShcIm5leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvbmV4dC1mbGlnaHQtbG9hZGVyL21vZHVsZS1wcm94eVwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVByb3h5KFwiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3NjcmlwdC5qc1wiKVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/script.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/compiled/@edge-runtime/cookies/index.js":
|
||
/*!************************************************************************!*\
|
||
!*** ./node_modules/next/dist/compiled/@edge-runtime/cookies/index.js ***!
|
||
\************************************************************************/
|
||
/***/ ((module) => {
|
||
|
||
"use strict";
|
||
eval("\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n RequestCookies: () => RequestCookies,\n ResponseCookies: () => ResponseCookies,\n parseCookie: () => parseCookie,\n parseSetCookie: () => parseSetCookie,\n stringifyCookie: () => stringifyCookie\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/serialize.ts\nfunction stringifyCookie(c) {\n var _a;\n const attrs = [\n \"path\" in c && c.path && `Path=${c.path}`,\n \"expires\" in c && (c.expires || c.expires === 0) && `Expires=${(typeof c.expires === \"number\" ? new Date(c.expires) : c.expires).toUTCString()}`,\n \"maxAge\" in c && typeof c.maxAge === \"number\" && `Max-Age=${c.maxAge}`,\n \"domain\" in c && c.domain && `Domain=${c.domain}`,\n \"secure\" in c && c.secure && \"Secure\",\n \"httpOnly\" in c && c.httpOnly && \"HttpOnly\",\n \"sameSite\" in c && c.sameSite && `SameSite=${c.sameSite}`,\n \"partitioned\" in c && c.partitioned && \"Partitioned\",\n \"priority\" in c && c.priority && `Priority=${c.priority}`\n ].filter(Boolean);\n const stringified = `${c.name}=${encodeURIComponent((_a = c.value) != null ? _a : \"\")}`;\n return attrs.length === 0 ? stringified : `${stringified}; ${attrs.join(\"; \")}`;\n}\nfunction parseCookie(cookie) {\n const map = /* @__PURE__ */ new Map();\n for (const pair of cookie.split(/; */)) {\n if (!pair)\n continue;\n const splitAt = pair.indexOf(\"=\");\n if (splitAt === -1) {\n map.set(pair, \"true\");\n continue;\n }\n const [key, value] = [pair.slice(0, splitAt), pair.slice(splitAt + 1)];\n try {\n map.set(key, decodeURIComponent(value != null ? value : \"true\"));\n } catch {\n }\n }\n return map;\n}\nfunction parseSetCookie(setCookie) {\n if (!setCookie) {\n return void 0;\n }\n const [[name, value], ...attributes] = parseCookie(setCookie);\n const {\n domain,\n expires,\n httponly,\n maxage,\n path,\n samesite,\n secure,\n partitioned,\n priority\n } = Object.fromEntries(\n attributes.map(([key, value2]) => [\n key.toLowerCase().replace(/-/g, \"\"),\n value2\n ])\n );\n const cookie = {\n name,\n value: decodeURIComponent(value),\n domain,\n ...expires && { expires: new Date(expires) },\n ...httponly && { httpOnly: true },\n ...typeof maxage === \"string\" && { maxAge: Number(maxage) },\n path,\n ...samesite && { sameSite: parseSameSite(samesite) },\n ...secure && { secure: true },\n ...priority && { priority: parsePriority(priority) },\n ...partitioned && { partitioned: true }\n };\n return compact(cookie);\n}\nfunction compact(t) {\n const newT = {};\n for (const key in t) {\n if (t[key]) {\n newT[key] = t[key];\n }\n }\n return newT;\n}\nvar SAME_SITE = [\"strict\", \"lax\", \"none\"];\nfunction parseSameSite(string) {\n string = string.toLowerCase();\n return SAME_SITE.includes(string) ? string : void 0;\n}\nvar PRIORITY = [\"low\", \"medium\", \"high\"];\nfunction parsePriority(string) {\n string = string.toLowerCase();\n return PRIORITY.includes(string) ? string : void 0;\n}\nfunction splitCookiesString(cookiesString) {\n if (!cookiesString)\n return [];\n var cookiesStrings = [];\n var pos = 0;\n var start;\n var ch;\n var lastComma;\n var nextStart;\n var cookiesSeparatorFound;\n function skipWhitespace() {\n while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n pos += 1;\n }\n return pos < cookiesString.length;\n }\n function notSpecialChar() {\n ch = cookiesString.charAt(pos);\n return ch !== \"=\" && ch !== \";\" && ch !== \",\";\n }\n while (pos < cookiesString.length) {\n start = pos;\n cookiesSeparatorFound = false;\n while (skipWhitespace()) {\n ch = cookiesString.charAt(pos);\n if (ch === \",\") {\n lastComma = pos;\n pos += 1;\n skipWhitespace();\n nextStart = pos;\n while (pos < cookiesString.length && notSpecialChar()) {\n pos += 1;\n }\n if (pos < cookiesString.length && cookiesString.charAt(pos) === \"=\") {\n cookiesSeparatorFound = true;\n pos = nextStart;\n cookiesStrings.push(cookiesString.substring(start, lastComma));\n start = pos;\n } else {\n pos = lastComma + 1;\n }\n } else {\n pos += 1;\n }\n }\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length));\n }\n }\n return cookiesStrings;\n}\n\n// src/request-cookies.ts\nvar RequestCookies = class {\n constructor(requestHeaders) {\n /** @internal */\n this._parsed = /* @__PURE__ */ new Map();\n this._headers = requestHeaders;\n const header = requestHeaders.get(\"cookie\");\n if (header) {\n const parsed = parseCookie(header);\n for (const [name, value] of parsed) {\n this._parsed.set(name, { name, value });\n }\n }\n }\n [Symbol.iterator]() {\n return this._parsed[Symbol.iterator]();\n }\n /**\n * The amount of cookies received from the client\n */\n get size() {\n return this._parsed.size;\n }\n get(...args) {\n const name = typeof args[0] === \"string\" ? args[0] : args[0].name;\n return this._parsed.get(name);\n }\n getAll(...args) {\n var _a;\n const all = Array.from(this._parsed);\n if (!args.length) {\n return all.map(([_, value]) => value);\n }\n const name = typeof args[0] === \"string\" ? args[0] : (_a = args[0]) == null ? void 0 : _a.name;\n return all.filter(([n]) => n === name).map(([_, value]) => value);\n }\n has(name) {\n return this._parsed.has(name);\n }\n set(...args) {\n const [name, value] = args.length === 1 ? [args[0].name, args[0].value] : args;\n const map = this._parsed;\n map.set(name, { name, value });\n this._headers.set(\n \"cookie\",\n Array.from(map).map(([_, value2]) => stringifyCookie(value2)).join(\"; \")\n );\n return this;\n }\n /**\n * Delete the cookies matching the passed name or names in the request.\n */\n delete(names) {\n const map = this._parsed;\n const result = !Array.isArray(names) ? map.delete(names) : names.map((name) => map.delete(name));\n this._headers.set(\n \"cookie\",\n Array.from(map).map(([_, value]) => stringifyCookie(value)).join(\"; \")\n );\n return result;\n }\n /**\n * Delete all the cookies in the cookies in the request.\n */\n clear() {\n this.delete(Array.from(this._parsed.keys()));\n return this;\n }\n /**\n * Format the cookies in the request as a string for logging\n */\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return `RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`;\n }\n toString() {\n return [...this._parsed.values()].map((v) => `${v.name}=${encodeURIComponent(v.value)}`).join(\"; \");\n }\n};\n\n// src/response-cookies.ts\nvar ResponseCookies = class {\n constructor(responseHeaders) {\n /** @internal */\n this._parsed = /* @__PURE__ */ new Map();\n var _a, _b, _c;\n this._headers = responseHeaders;\n const setCookie = (_c = (_b = (_a = responseHeaders.getSetCookie) == null ? void 0 : _a.call(responseHeaders)) != null ? _b : responseHeaders.get(\"set-cookie\")) != null ? _c : [];\n const cookieStrings = Array.isArray(setCookie) ? setCookie : splitCookiesString(setCookie);\n for (const cookieString of cookieStrings) {\n const parsed = parseSetCookie(cookieString);\n if (parsed)\n this._parsed.set(parsed.name, parsed);\n }\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-get CookieStore#get} without the Promise.\n */\n get(...args) {\n const key = typeof args[0] === \"string\" ? args[0] : args[0].name;\n return this._parsed.get(key);\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-getAll CookieStore#getAll} without the Promise.\n */\n getAll(...args) {\n var _a;\n const all = Array.from(this._parsed.values());\n if (!args.length) {\n return all;\n }\n const key = typeof args[0] === \"string\" ? args[0] : (_a = args[0]) == null ? void 0 : _a.name;\n return all.filter((c) => c.name === key);\n }\n has(name) {\n return this._parsed.has(name);\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-set CookieStore#set} without the Promise.\n */\n set(...args) {\n const [name, value, cookie] = args.length === 1 ? [args[0].name, args[0].value, args[0]] : args;\n const map = this._parsed;\n map.set(name, normalizeCookie({ name, value, ...cookie }));\n replace(map, this._headers);\n return this;\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-delete CookieStore#delete} without the Promise.\n */\n delete(...args) {\n const [name, options] = typeof args[0] === \"string\" ? [args[0]] : [args[0].name, args[0]];\n return this.set({ ...options, name, value: \"\", expires: /* @__PURE__ */ new Date(0) });\n }\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return `ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`;\n }\n toString() {\n return [...this._parsed.values()].map(stringifyCookie).join(\"; \");\n }\n};\nfunction replace(bag, headers) {\n headers.delete(\"set-cookie\");\n for (const [, value] of bag) {\n const serialized = stringifyCookie(value);\n headers.append(\"set-cookie\", serialized);\n }\n}\nfunction normalizeCookie(cookie = { name: \"\", value: \"\" }) {\n if (typeof cookie.expires === \"number\") {\n cookie.expires = new Date(cookie.expires);\n }\n if (cookie.maxAge) {\n cookie.expires = new Date(Date.now() + cookie.maxAge * 1e3);\n }\n if (cookie.path === null || cookie.path === void 0) {\n cookie.path = \"/\";\n }\n return cookie;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (0);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL0BlZGdlLXJ1bnRpbWUvY29va2llcy9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixrQ0FBa0M7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qiw0RkFBNEY7QUFDekg7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELGtCQUFrQixhQUFhOztBQUVuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLE9BQU87QUFDNUMsbUVBQW1FLGdGQUFnRjtBQUNuSixnRUFBZ0UsU0FBUztBQUN6RSwyQ0FBMkMsU0FBUztBQUNwRDtBQUNBO0FBQ0EsaURBQWlELFdBQVc7QUFDNUQ7QUFDQSxpREFBaUQsV0FBVztBQUM1RDtBQUNBLHlCQUF5QixPQUFPLEdBQUcscURBQXFEO0FBQ3hGLCtDQUErQyxjQUFjLEVBQUUsY0FBYyxHQUFHO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsNEJBQTRCO0FBQ2hELHFCQUFxQixnQkFBZ0I7QUFDckMsdUNBQXVDLHdCQUF3QjtBQUMvRDtBQUNBLHFCQUFxQixtQ0FBbUM7QUFDeEQsbUJBQW1CLGNBQWM7QUFDakMscUJBQXFCLG1DQUFtQztBQUN4RCx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsYUFBYTtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixhQUFhO0FBQ2pDO0FBQ0E7QUFDQSw0RUFBNEU7QUFDNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBFQUEwRTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLGlEQUFpRDtBQUM5RTtBQUNBO0FBQ0Esb0RBQW9ELE9BQU8sR0FBRyw0QkFBNEIsV0FBVztBQUNyRztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSw0RUFBNEU7QUFDbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxrRkFBa0Y7QUFDeEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sNEVBQTRFO0FBQ2xGO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLHdCQUF3QjtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sa0ZBQWtGO0FBQ3hGO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixtRUFBbUU7QUFDekY7QUFDQTtBQUNBLDhCQUE4QixpREFBaUQ7QUFDL0U7QUFDQTtBQUNBLG1FQUFtRTtBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MscUJBQXFCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sQ0FNTCIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvQGVkZ2UtcnVudGltZS9jb29raWVzL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBfX2dldE93blByb3BOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19leHBvcnQgPSAodGFyZ2V0LCBhbGwpID0+IHtcbiAgZm9yICh2YXIgbmFtZSBpbiBhbGwpXG4gICAgX19kZWZQcm9wKHRhcmdldCwgbmFtZSwgeyBnZXQ6IGFsbFtuYW1lXSwgZW51bWVyYWJsZTogdHJ1ZSB9KTtcbn07XG52YXIgX19jb3B5UHJvcHMgPSAodG8sIGZyb20sIGV4Y2VwdCwgZGVzYykgPT4ge1xuICBpZiAoZnJvbSAmJiB0eXBlb2YgZnJvbSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgZnJvbSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgZm9yIChsZXQga2V5IG9mIF9fZ2V0T3duUHJvcE5hbWVzKGZyb20pKVxuICAgICAgaWYgKCFfX2hhc093blByb3AuY2FsbCh0bywga2V5KSAmJiBrZXkgIT09IGV4Y2VwdClcbiAgICAgICAgX19kZWZQcm9wKHRvLCBrZXksIHsgZ2V0OiAoKSA9PiBmcm9tW2tleV0sIGVudW1lcmFibGU6ICEoZGVzYyA9IF9fZ2V0T3duUHJvcERlc2MoZnJvbSwga2V5KSkgfHwgZGVzYy5lbnVtZXJhYmxlIH0pO1xuICB9XG4gIHJldHVybiB0bztcbn07XG52YXIgX190b0NvbW1vbkpTID0gKG1vZCkgPT4gX19jb3B5UHJvcHMoX19kZWZQcm9wKHt9LCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KSwgbW9kKTtcblxuLy8gc3JjL2luZGV4LnRzXG52YXIgc3JjX2V4cG9ydHMgPSB7fTtcbl9fZXhwb3J0KHNyY19leHBvcnRzLCB7XG4gIFJlcXVlc3RDb29raWVzOiAoKSA9PiBSZXF1ZXN0Q29va2llcyxcbiAgUmVzcG9uc2VDb29raWVzOiAoKSA9PiBSZXNwb25zZUNvb2tpZXMsXG4gIHBhcnNlQ29va2llOiAoKSA9PiBwYXJzZUNvb2tpZSxcbiAgcGFyc2VTZXRDb29raWU6ICgpID0+IHBhcnNlU2V0Q29va2llLFxuICBzdHJpbmdpZnlDb29raWU6ICgpID0+IHN0cmluZ2lmeUNvb2tpZVxufSk7XG5tb2R1bGUuZXhwb3J0cyA9IF9fdG9Db21tb25KUyhzcmNfZXhwb3J0cyk7XG5cbi8vIHNyYy9zZXJpYWxpemUudHNcbmZ1bmN0aW9uIHN0cmluZ2lmeUNvb2tpZShjKSB7XG4gIHZhciBfYTtcbiAgY29uc3QgYXR0cnMgPSBbXG4gICAgXCJwYXRoXCIgaW4gYyAmJiBjLnBhdGggJiYgYFBhdGg9JHtjLnBhdGh9YCxcbiAgICBcImV4cGlyZXNcIiBpbiBjICYmIChjLmV4cGlyZXMgfHwgYy5leHBpcmVzID09PSAwKSAmJiBgRXhwaXJlcz0keyh0eXBlb2YgYy5leHBpcmVzID09PSBcIm51bWJlclwiID8gbmV3IERhdGUoYy5leHBpcmVzKSA6IGMuZXhwaXJlcykudG9VVENTdHJpbmcoKX1gLFxuICAgIFwibWF4QWdlXCIgaW4gYyAmJiB0eXBlb2YgYy5tYXhBZ2UgPT09IFwibnVtYmVyXCIgJiYgYE1heC1BZ2U9JHtjLm1heEFnZX1gLFxuICAgIFwiZG9tYWluXCIgaW4gYyAmJiBjLmRvbWFpbiAmJiBgRG9tYWluPSR7Yy5kb21haW59YCxcbiAgICBcInNlY3VyZVwiIGluIGMgJiYgYy5zZWN1cmUgJiYgXCJTZWN1cmVcIixcbiAgICBcImh0dHBPbmx5XCIgaW4gYyAmJiBjLmh0dHBPbmx5ICYmIFwiSHR0cE9ubHlcIixcbiAgICBcInNhbWVTaXRlXCIgaW4gYyAmJiBjLnNhbWVTaXRlICYmIGBTYW1lU2l0ZT0ke2Muc2FtZVNpdGV9YCxcbiAgICBcInBhcnRpdGlvbmVkXCIgaW4gYyAmJiBjLnBhcnRpdGlvbmVkICYmIFwiUGFydGl0aW9uZWRcIixcbiAgICBcInByaW9yaXR5XCIgaW4gYyAmJiBjLnByaW9yaXR5ICYmIGBQcmlvcml0eT0ke2MucHJpb3JpdHl9YFxuICBdLmZpbHRlcihCb29sZWFuKTtcbiAgY29uc3Qgc3RyaW5naWZpZWQgPSBgJHtjLm5hbWV9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KChfYSA9IGMudmFsdWUpICE9IG51bGwgPyBfYSA6IFwiXCIpfWA7XG4gIHJldHVybiBhdHRycy5sZW5ndGggPT09IDAgPyBzdHJpbmdpZmllZCA6IGAke3N0cmluZ2lmaWVkfTsgJHthdHRycy5qb2luKFwiOyBcIil9YDtcbn1cbmZ1bmN0aW9uIHBhcnNlQ29va2llKGNvb2tpZSkge1xuICBjb25zdCBtYXAgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICBmb3IgKGNvbnN0IHBhaXIgb2YgY29va2llLnNwbGl0KC87ICovKSkge1xuICAgIGlmICghcGFpcilcbiAgICAgIGNvbnRpbnVlO1xuICAgIGNvbnN0IHNwbGl0QXQgPSBwYWlyLmluZGV4T2YoXCI9XCIpO1xuICAgIGlmIChzcGxpdEF0ID09PSAtMSkge1xuICAgICAgbWFwLnNldChwYWlyLCBcInRydWVcIik7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgW2tleSwgdmFsdWVdID0gW3BhaXIuc2xpY2UoMCwgc3BsaXRBdCksIHBhaXIuc2xpY2Uoc3BsaXRBdCArIDEpXTtcbiAgICB0cnkge1xuICAgICAgbWFwLnNldChrZXksIGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSAhPSBudWxsID8gdmFsdWUgOiBcInRydWVcIikpO1xuICAgIH0gY2F0Y2gge1xuICAgIH1cbiAgfVxuICByZXR1cm4gbWFwO1xufVxuZnVuY3Rpb24gcGFyc2VTZXRDb29raWUoc2V0Q29va2llKSB7XG4gIGlmICghc2V0Q29va2llKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuICBjb25zdCBbW25hbWUsIHZhbHVlXSwgLi4uYXR0cmlidXRlc10gPSBwYXJzZUNvb2tpZShzZXRDb29raWUpO1xuICBjb25zdCB7XG4gICAgZG9tYWluLFxuICAgIGV4cGlyZXMsXG4gICAgaHR0cG9ubHksXG4gICAgbWF4YWdlLFxuICAgIHBhdGgsXG4gICAgc2FtZXNpdGUsXG4gICAgc2VjdXJlLFxuICAgIHBhcnRpdGlvbmVkLFxuICAgIHByaW9yaXR5XG4gIH0gPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgYXR0cmlidXRlcy5tYXAoKFtrZXksIHZhbHVlMl0pID0+IFtcbiAgICAgIGtleS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLy0vZywgXCJcIiksXG4gICAgICB2YWx1ZTJcbiAgICBdKVxuICApO1xuICBjb25zdCBjb29raWUgPSB7XG4gICAgbmFtZSxcbiAgICB2YWx1ZTogZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSxcbiAgICBkb21haW4sXG4gICAgLi4uZXhwaXJlcyAmJiB7IGV4cGlyZXM6IG5ldyBEYXRlKGV4cGlyZXMpIH0sXG4gICAgLi4uaHR0cG9ubHkgJiYgeyBodHRwT25seTogdHJ1ZSB9LFxuICAgIC4uLnR5cGVvZiBtYXhhZ2UgPT09IFwic3RyaW5nXCIgJiYgeyBtYXhBZ2U6IE51bWJlcihtYXhhZ2UpIH0sXG4gICAgcGF0aCxcbiAgICAuLi5zYW1lc2l0ZSAmJiB7IHNhbWVTaXRlOiBwYXJzZVNhbWVTaXRlKHNhbWVzaXRlKSB9LFxuICAgIC4uLnNlY3VyZSAmJiB7IHNlY3VyZTogdHJ1ZSB9LFxuICAgIC4uLnByaW9yaXR5ICYmIHsgcHJpb3JpdHk6IHBhcnNlUHJpb3JpdHkocHJpb3JpdHkpIH0sXG4gICAgLi4ucGFydGl0aW9uZWQgJiYgeyBwYXJ0aXRpb25lZDogdHJ1ZSB9XG4gIH07XG4gIHJldHVybiBjb21wYWN0KGNvb2tpZSk7XG59XG5mdW5jdGlvbiBjb21wYWN0KHQpIHtcbiAgY29uc3QgbmV3VCA9IHt9O1xuICBmb3IgKGNvbnN0IGtleSBpbiB0KSB7XG4gICAgaWYgKHRba2V5XSkge1xuICAgICAgbmV3VFtrZXldID0gdFtrZXldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbmV3VDtcbn1cbnZhciBTQU1FX1NJVEUgPSBbXCJzdHJpY3RcIiwgXCJsYXhcIiwgXCJub25lXCJdO1xuZnVuY3Rpb24gcGFyc2VTYW1lU2l0ZShzdHJpbmcpIHtcbiAgc3RyaW5nID0gc3RyaW5nLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBTQU1FX1NJVEUuaW5jbHVkZXMoc3RyaW5nKSA/IHN0cmluZyA6IHZvaWQgMDtcbn1cbnZhciBQUklPUklUWSA9IFtcImxvd1wiLCBcIm1lZGl1bVwiLCBcImhpZ2hcIl07XG5mdW5jdGlvbiBwYXJzZVByaW9yaXR5KHN0cmluZykge1xuICBzdHJpbmcgPSBzdHJpbmcudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIFBSSU9SSVRZLmluY2x1ZGVzKHN0cmluZykgPyBzdHJpbmcgOiB2b2lkIDA7XG59XG5mdW5jdGlvbiBzcGxpdENvb2tpZXNTdHJpbmcoY29va2llc1N0cmluZykge1xuICBpZiAoIWNvb2tpZXNTdHJpbmcpXG4gICAgcmV0dXJuIFtdO1xuICB2YXIgY29va2llc1N0cmluZ3MgPSBbXTtcbiAgdmFyIHBvcyA9IDA7XG4gIHZhciBzdGFydDtcbiAgdmFyIGNoO1xuICB2YXIgbGFzdENvbW1hO1xuICB2YXIgbmV4dFN0YXJ0O1xuICB2YXIgY29va2llc1NlcGFyYXRvckZvdW5kO1xuICBmdW5jdGlvbiBza2lwV2hpdGVzcGFjZSgpIHtcbiAgICB3aGlsZSAocG9zIDwgY29va2llc1N0cmluZy5sZW5ndGggJiYgL1xccy8udGVzdChjb29raWVzU3RyaW5nLmNoYXJBdChwb3MpKSkge1xuICAgICAgcG9zICs9IDE7XG4gICAgfVxuICAgIHJldHVybiBwb3MgPCBjb29raWVzU3RyaW5nLmxlbmd0aDtcbiAgfVxuICBmdW5jdGlvbiBub3RTcGVjaWFsQ2hhcigpIHtcbiAgICBjaCA9IGNvb2tpZXNTdHJpbmcuY2hhckF0KHBvcyk7XG4gICAgcmV0dXJuIGNoICE9PSBcIj1cIiAmJiBjaCAhPT0gXCI7XCIgJiYgY2ggIT09IFwiLFwiO1xuICB9XG4gIHdoaWxlIChwb3MgPCBjb29raWVzU3RyaW5nLmxlbmd0aCkge1xuICAgIHN0YXJ0ID0gcG9zO1xuICAgIGNvb2tpZXNTZXBhcmF0b3JGb3VuZCA9IGZhbHNlO1xuICAgIHdoaWxlIChza2lwV2hpdGVzcGFjZSgpKSB7XG4gICAgICBjaCA9IGNvb2tpZXNTdHJpbmcuY2hhckF0KHBvcyk7XG4gICAgICBpZiAoY2ggPT09IFwiLFwiKSB7XG4gICAgICAgIGxhc3RDb21tYSA9IHBvcztcbiAgICAgICAgcG9zICs9IDE7XG4gICAgICAgIHNraXBXaGl0ZXNwYWNlKCk7XG4gICAgICAgIG5leHRTdGFydCA9IHBvcztcbiAgICAgICAgd2hpbGUgKHBvcyA8IGNvb2tpZXNTdHJpbmcubGVuZ3RoICYmIG5vdFNwZWNpYWxDaGFyKCkpIHtcbiAgICAgICAgICBwb3MgKz0gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocG9zIDwgY29va2llc1N0cmluZy5sZW5ndGggJiYgY29va2llc1N0cmluZy5jaGFyQXQocG9zKSA9PT0gXCI9XCIpIHtcbiAgICAgICAgICBjb29raWVzU2VwYXJhdG9yRm91bmQgPSB0cnVlO1xuICAgICAgICAgIHBvcyA9IG5leHRTdGFydDtcbiAgICAgICAgICBjb29raWVzU3RyaW5ncy5wdXNoKGNvb2tpZXNTdHJpbmcuc3Vic3RyaW5nKHN0YXJ0LCBsYXN0Q29tbWEpKTtcbiAgICAgICAgICBzdGFydCA9IHBvcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwb3MgPSBsYXN0Q29tbWEgKyAxO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwb3MgKz0gMTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFjb29raWVzU2VwYXJhdG9yRm91bmQgfHwgcG9zID49IGNvb2tpZXNTdHJpbmcubGVuZ3RoKSB7XG4gICAgICBjb29raWVzU3RyaW5ncy5wdXNoKGNvb2tpZXNTdHJpbmcuc3Vic3RyaW5nKHN0YXJ0LCBjb29raWVzU3RyaW5nLmxlbmd0aCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY29va2llc1N0cmluZ3M7XG59XG5cbi8vIHNyYy9yZXF1ZXN0LWNvb2tpZXMudHNcbnZhciBSZXF1ZXN0Q29va2llcyA9IGNsYXNzIHtcbiAgY29uc3RydWN0b3IocmVxdWVzdEhlYWRlcnMpIHtcbiAgICAvKiogQGludGVybmFsICovXG4gICAgdGhpcy5fcGFyc2VkID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgICB0aGlzLl9oZWFkZXJzID0gcmVxdWVzdEhlYWRlcnM7XG4gICAgY29uc3QgaGVhZGVyID0gcmVxdWVzdEhlYWRlcnMuZ2V0KFwiY29va2llXCIpO1xuICAgIGlmIChoZWFkZXIpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlQ29va2llKGhlYWRlcik7XG4gICAgICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgcGFyc2VkKSB7XG4gICAgICAgIHRoaXMuX3BhcnNlZC5zZXQobmFtZSwgeyBuYW1lLCB2YWx1ZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcnNlZFtTeW1ib2wuaXRlcmF0b3JdKCk7XG4gIH1cbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgY29va2llcyByZWNlaXZlZCBmcm9tIHRoZSBjbGllbnRcbiAgICovXG4gIGdldCBzaXplKCkge1xuICAgIHJldHVybiB0aGlzLl9wYXJzZWQuc2l6ZTtcbiAgfVxuICBnZXQoLi4uYXJncykge1xuICAgIGNvbnN0IG5hbWUgPSB0eXBlb2YgYXJnc1swXSA9PT0gXCJzdHJpbmdcIiA/IGFyZ3NbMF0gOiBhcmdzWzBdLm5hbWU7XG4gICAgcmV0dXJuIHRoaXMuX3BhcnNlZC5nZXQobmFtZSk7XG4gIH1cbiAgZ2V0QWxsKC4uLmFyZ3MpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgYWxsID0gQXJyYXkuZnJvbSh0aGlzLl9wYXJzZWQpO1xuICAgIGlmICghYXJncy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBhbGwubWFwKChbXywgdmFsdWVdKSA9PiB2YWx1ZSk7XG4gICAgfVxuICAgIGNvbnN0IG5hbWUgPSB0eXBlb2YgYXJnc1swXSA9PT0gXCJzdHJpbmdcIiA/IGFyZ3NbMF0gOiAoX2EgPSBhcmdzWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX2EubmFtZTtcbiAgICByZXR1cm4gYWxsLmZpbHRlcigoW25dKSA9PiBuID09PSBuYW1lKS5tYXAoKFtfLCB2YWx1ZV0pID0+IHZhbHVlKTtcbiAgfVxuICBoYXMobmFtZSkge1xuICAgIHJldHVybiB0aGlzLl9wYXJzZWQuaGFzKG5hbWUpO1xuICB9XG4gIHNldCguLi5hcmdzKSB7XG4gICAgY29uc3QgW25hbWUsIHZhbHVlXSA9IGFyZ3MubGVuZ3RoID09PSAxID8gW2FyZ3NbMF0ubmFtZSwgYXJnc1swXS52YWx1ZV0gOiBhcmdzO1xuICAgIGNvbnN0IG1hcCA9IHRoaXMuX3BhcnNlZDtcbiAgICBtYXAuc2V0KG5hbWUsIHsgbmFtZSwgdmFsdWUgfSk7XG4gICAgdGhpcy5faGVhZGVycy5zZXQoXG4gICAgICBcImNvb2tpZVwiLFxuICAgICAgQXJyYXkuZnJvbShtYXApLm1hcCgoW18sIHZhbHVlMl0pID0+IHN0cmluZ2lmeUNvb2tpZSh2YWx1ZTIpKS5qb2luKFwiOyBcIilcbiAgICApO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIC8qKlxuICAgKiBEZWxldGUgdGhlIGNvb2tpZXMgbWF0Y2hpbmcgdGhlIHBhc3NlZCBuYW1lIG9yIG5hbWVzIGluIHRoZSByZXF1ZXN0LlxuICAgKi9cbiAgZGVsZXRlKG5hbWVzKSB7XG4gICAgY29uc3QgbWFwID0gdGhpcy5fcGFyc2VkO1xuICAgIGNvbnN0IHJlc3VsdCA9ICFBcnJheS5pc0FycmF5KG5hbWVzKSA/IG1hcC5kZWxldGUobmFtZXMpIDogbmFtZXMubWFwKChuYW1lKSA9PiBtYXAuZGVsZXRlKG5hbWUpKTtcbiAgICB0aGlzLl9oZWFkZXJzLnNldChcbiAgICAgIFwiY29va2llXCIsXG4gICAgICBBcnJheS5mcm9tKG1hcCkubWFwKChbXywgdmFsdWVdKSA9PiBzdHJpbmdpZnlDb29raWUodmFsdWUpKS5qb2luKFwiOyBcIilcbiAgICApO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgLyoqXG4gICAqIERlbGV0ZSBhbGwgdGhlIGNvb2tpZXMgaW4gdGhlIGNvb2tpZXMgaW4gdGhlIHJlcXVlc3QuXG4gICAqL1xuICBjbGVhcigpIHtcbiAgICB0aGlzLmRlbGV0ZShBcnJheS5mcm9tKHRoaXMuX3BhcnNlZC5rZXlzKCkpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICAvKipcbiAgICogRm9ybWF0IHRoZSBjb29raWVzIGluIHRoZSByZXF1ZXN0IGFzIGEgc3RyaW5nIGZvciBsb2dnaW5nXG4gICAqL1xuICBbU3ltYm9sLmZvcihcImVkZ2UtcnVudGltZS5pbnNwZWN0LmN1c3RvbVwiKV0oKSB7XG4gICAgcmV0dXJuIGBSZXF1ZXN0Q29va2llcyAke0pTT04uc3RyaW5naWZ5KE9iamVjdC5mcm9tRW50cmllcyh0aGlzLl9wYXJzZWQpKX1gO1xuICB9XG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBbLi4udGhpcy5fcGFyc2VkLnZhbHVlcygpXS5tYXAoKHYpID0+IGAke3YubmFtZX09JHtlbmNvZGVVUklDb21wb25lbnQodi52YWx1ZSl9YCkuam9pbihcIjsgXCIpO1xuICB9XG59O1xuXG4vLyBzcmMvcmVzcG9uc2UtY29va2llcy50c1xudmFyIFJlc3BvbnNlQ29va2llcyA9IGNsYXNzIHtcbiAgY29uc3RydWN0b3IocmVzcG9uc2VIZWFkZXJzKSB7XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIHRoaXMuX3BhcnNlZCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgdGhpcy5faGVhZGVycyA9IHJlc3BvbnNlSGVhZGVycztcbiAgICBjb25zdCBzZXRDb29raWUgPSAoX2MgPSAoX2IgPSAoX2EgPSByZXNwb25zZUhlYWRlcnMuZ2V0U2V0Q29va2llKSA9PSBudWxsID8gdm9pZCAwIDogX2EuY2FsbChyZXNwb25zZUhlYWRlcnMpKSAhPSBudWxsID8gX2IgOiByZXNwb25zZUhlYWRlcnMuZ2V0KFwic2V0LWNvb2tpZVwiKSkgIT0gbnVsbCA/IF9jIDogW107XG4gICAgY29uc3QgY29va2llU3RyaW5ncyA9IEFycmF5LmlzQXJyYXkoc2V0Q29va2llKSA/IHNldENvb2tpZSA6IHNwbGl0Q29va2llc1N0cmluZyhzZXRDb29raWUpO1xuICAgIGZvciAoY29uc3QgY29va2llU3RyaW5nIG9mIGNvb2tpZVN0cmluZ3MpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlU2V0Q29va2llKGNvb2tpZVN0cmluZyk7XG4gICAgICBpZiAocGFyc2VkKVxuICAgICAgICB0aGlzLl9wYXJzZWQuc2V0KHBhcnNlZC5uYW1lLCBwYXJzZWQpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICoge0BsaW5rIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vY29va2llLXN0b3JlLyNDb29raWVTdG9yZS1nZXQgQ29va2llU3RvcmUjZ2V0fSB3aXRob3V0IHRoZSBQcm9taXNlLlxuICAgKi9cbiAgZ2V0KC4uLmFyZ3MpIHtcbiAgICBjb25zdCBrZXkgPSB0eXBlb2YgYXJnc1swXSA9PT0gXCJzdHJpbmdcIiA/IGFyZ3NbMF0gOiBhcmdzWzBdLm5hbWU7XG4gICAgcmV0dXJuIHRoaXMuX3BhcnNlZC5nZXQoa2V5KTtcbiAgfVxuICAvKipcbiAgICoge0BsaW5rIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vY29va2llLXN0b3JlLyNDb29raWVTdG9yZS1nZXRBbGwgQ29va2llU3RvcmUjZ2V0QWxsfSB3aXRob3V0IHRoZSBQcm9taXNlLlxuICAgKi9cbiAgZ2V0QWxsKC4uLmFyZ3MpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgYWxsID0gQXJyYXkuZnJvbSh0aGlzLl9wYXJzZWQudmFsdWVzKCkpO1xuICAgIGlmICghYXJncy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBhbGw7XG4gICAgfVxuICAgIGNvbnN0IGtleSA9IHR5cGVvZiBhcmdzWzBdID09PSBcInN0cmluZ1wiID8gYXJnc1swXSA6IChfYSA9IGFyZ3NbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfYS5uYW1lO1xuICAgIHJldHVybiBhbGwuZmlsdGVyKChjKSA9PiBjLm5hbWUgPT09IGtleSk7XG4gIH1cbiAgaGFzKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyc2VkLmhhcyhuYW1lKTtcbiAgfVxuICAvKipcbiAgICoge0BsaW5rIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vY29va2llLXN0b3JlLyNDb29raWVTdG9yZS1zZXQgQ29va2llU3RvcmUjc2V0fSB3aXRob3V0IHRoZSBQcm9taXNlLlxuICAgKi9cbiAgc2V0KC4uLmFyZ3MpIHtcbiAgICBjb25zdCBbbmFtZSwgdmFsdWUsIGNvb2tpZV0gPSBhcmdzLmxlbmd0aCA9PT0gMSA/IFthcmdzWzBdLm5hbWUsIGFyZ3NbMF0udmFsdWUsIGFyZ3NbMF1dIDogYXJncztcbiAgICBjb25zdCBtYXAgPSB0aGlzLl9wYXJzZWQ7XG4gICAgbWFwLnNldChuYW1lLCBub3JtYWxpemVDb29raWUoeyBuYW1lLCB2YWx1ZSwgLi4uY29va2llIH0pKTtcbiAgICByZXBsYWNlKG1hcCwgdGhpcy5faGVhZGVycyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgLyoqXG4gICAqIHtAbGluayBodHRwczovL3dpY2cuZ2l0aHViLmlvL2Nvb2tpZS1zdG9yZS8jQ29va2llU3RvcmUtZGVsZXRlIENvb2tpZVN0b3JlI2RlbGV0ZX0gd2l0aG91dCB0aGUgUHJvbWlzZS5cbiAgICovXG4gIGRlbGV0ZSguLi5hcmdzKSB7XG4gICAgY29uc3QgW25hbWUsIG9wdGlvbnNdID0gdHlwZW9mIGFyZ3NbMF0gPT09IFwic3RyaW5nXCIgPyBbYXJnc1swXV0gOiBbYXJnc1swXS5uYW1lLCBhcmdzWzBdXTtcbiAgICByZXR1cm4gdGhpcy5zZXQoeyAuLi5vcHRpb25zLCBuYW1lLCB2YWx1ZTogXCJcIiwgZXhwaXJlczogLyogQF9fUFVSRV9fICovIG5ldyBEYXRlKDApIH0pO1xuICB9XG4gIFtTeW1ib2wuZm9yKFwiZWRnZS1ydW50aW1lLmluc3BlY3QuY3VzdG9tXCIpXSgpIHtcbiAgICByZXR1cm4gYFJlc3BvbnNlQ29va2llcyAke0pTT04uc3RyaW5naWZ5KE9iamVjdC5mcm9tRW50cmllcyh0aGlzLl9wYXJzZWQpKX1gO1xuICB9XG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBbLi4udGhpcy5fcGFyc2VkLnZhbHVlcygpXS5tYXAoc3RyaW5naWZ5Q29va2llKS5qb2luKFwiOyBcIik7XG4gIH1cbn07XG5mdW5jdGlvbiByZXBsYWNlKGJhZywgaGVhZGVycykge1xuICBoZWFkZXJzLmRlbGV0ZShcInNldC1jb29raWVcIik7XG4gIGZvciAoY29uc3QgWywgdmFsdWVdIG9mIGJhZykge1xuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBzdHJpbmdpZnlDb29raWUodmFsdWUpO1xuICAgIGhlYWRlcnMuYXBwZW5kKFwic2V0LWNvb2tpZVwiLCBzZXJpYWxpemVkKTtcbiAgfVxufVxuZnVuY3Rpb24gbm9ybWFsaXplQ29va2llKGNvb2tpZSA9IHsgbmFtZTogXCJcIiwgdmFsdWU6IFwiXCIgfSkge1xuICBpZiAodHlwZW9mIGNvb2tpZS5leHBpcmVzID09PSBcIm51bWJlclwiKSB7XG4gICAgY29va2llLmV4cGlyZXMgPSBuZXcgRGF0ZShjb29raWUuZXhwaXJlcyk7XG4gIH1cbiAgaWYgKGNvb2tpZS5tYXhBZ2UpIHtcbiAgICBjb29raWUuZXhwaXJlcyA9IG5ldyBEYXRlKERhdGUubm93KCkgKyBjb29raWUubWF4QWdlICogMWUzKTtcbiAgfVxuICBpZiAoY29va2llLnBhdGggPT09IG51bGwgfHwgY29va2llLnBhdGggPT09IHZvaWQgMCkge1xuICAgIGNvb2tpZS5wYXRoID0gXCIvXCI7XG4gIH1cbiAgcmV0dXJuIGNvb2tpZTtcbn1cbi8vIEFubm90YXRlIHRoZSBDb21tb25KUyBleHBvcnQgbmFtZXMgZm9yIEVTTSBpbXBvcnQgaW4gbm9kZTpcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICBSZXF1ZXN0Q29va2llcyxcbiAgUmVzcG9uc2VDb29raWVzLFxuICBwYXJzZUNvb2tpZSxcbiAgcGFyc2VTZXRDb29raWUsXG4gIHN0cmluZ2lmeUNvb2tpZVxufSk7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/@edge-runtime/cookies/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/compiled/@opentelemetry/api/index.js":
|
||
/*!*********************************************************************!*\
|
||
!*** ./node_modules/next/dist/compiled/@opentelemetry/api/index.js ***!
|
||
\*********************************************************************/
|
||
/***/ ((module) => {
|
||
|
||
eval("(()=>{\"use strict\";var e={491:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ContextAPI=void 0;const n=r(223);const a=r(172);const o=r(930);const i=\"context\";const c=new n.NoopContextManager;class ContextAPI{constructor(){}static getInstance(){if(!this._instance){this._instance=new ContextAPI}return this._instance}setGlobalContextManager(e){return(0,a.registerGlobal)(i,e,o.DiagAPI.instance())}active(){return this._getContextManager().active()}with(e,t,r,...n){return this._getContextManager().with(e,t,r,...n)}bind(e,t){return this._getContextManager().bind(e,t)}_getContextManager(){return(0,a.getGlobal)(i)||c}disable(){this._getContextManager().disable();(0,a.unregisterGlobal)(i,o.DiagAPI.instance())}}t.ContextAPI=ContextAPI},930:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.DiagAPI=void 0;const n=r(56);const a=r(912);const o=r(957);const i=r(172);const c=\"diag\";class DiagAPI{constructor(){function _logProxy(e){return function(...t){const r=(0,i.getGlobal)(\"diag\");if(!r)return;return r[e](...t)}}const e=this;const setLogger=(t,r={logLevel:o.DiagLogLevel.INFO})=>{var n,c,s;if(t===e){const t=new Error(\"Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation\");e.error((n=t.stack)!==null&&n!==void 0?n:t.message);return false}if(typeof r===\"number\"){r={logLevel:r}}const u=(0,i.getGlobal)(\"diag\");const l=(0,a.createLogLevelDiagLogger)((c=r.logLevel)!==null&&c!==void 0?c:o.DiagLogLevel.INFO,t);if(u&&!r.suppressOverrideMessage){const e=(s=(new Error).stack)!==null&&s!==void 0?s:\"<failed to generate stacktrace>\";u.warn(`Current logger will be overwritten from ${e}`);l.warn(`Current logger will overwrite one already registered from ${e}`)}return(0,i.registerGlobal)(\"diag\",l,e,true)};e.setLogger=setLogger;e.disable=()=>{(0,i.unregisterGlobal)(c,e)};e.createComponentLogger=e=>new n.DiagComponentLogger(e);e.verbose=_logProxy(\"verbose\");e.debug=_logProxy(\"debug\");e.info=_logProxy(\"info\");e.warn=_logProxy(\"warn\");e.error=_logProxy(\"error\")}static instance(){if(!this._instance){this._instance=new DiagAPI}return this._instance}}t.DiagAPI=DiagAPI},653:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.MetricsAPI=void 0;const n=r(660);const a=r(172);const o=r(930);const i=\"metrics\";class MetricsAPI{constructor(){}static getInstance(){if(!this._instance){this._instance=new MetricsAPI}return this._instance}setGlobalMeterProvider(e){return(0,a.registerGlobal)(i,e,o.DiagAPI.instance())}getMeterProvider(){return(0,a.getGlobal)(i)||n.NOOP_METER_PROVIDER}getMeter(e,t,r){return this.getMeterProvider().getMeter(e,t,r)}disable(){(0,a.unregisterGlobal)(i,o.DiagAPI.instance())}}t.MetricsAPI=MetricsAPI},181:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.PropagationAPI=void 0;const n=r(172);const a=r(874);const o=r(194);const i=r(277);const c=r(369);const s=r(930);const u=\"propagation\";const l=new a.NoopTextMapPropagator;class PropagationAPI{constructor(){this.createBaggage=c.createBaggage;this.getBaggage=i.getBaggage;this.getActiveBaggage=i.getActiveBaggage;this.setBaggage=i.setBaggage;this.deleteBaggage=i.deleteBaggage}static getInstance(){if(!this._instance){this._instance=new PropagationAPI}return this._instance}setGlobalPropagator(e){return(0,n.registerGlobal)(u,e,s.DiagAPI.instance())}inject(e,t,r=o.defaultTextMapSetter){return this._getGlobalPropagator().inject(e,t,r)}extract(e,t,r=o.defaultTextMapGetter){return this._getGlobalPropagator().extract(e,t,r)}fields(){return this._getGlobalPropagator().fields()}disable(){(0,n.unregisterGlobal)(u,s.DiagAPI.instance())}_getGlobalPropagator(){return(0,n.getGlobal)(u)||l}}t.PropagationAPI=PropagationAPI},997:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.TraceAPI=void 0;const n=r(172);const a=r(846);const o=r(139);const i=r(607);const c=r(930);const s=\"trace\";class TraceAPI{constructor(){this._proxyTracerProvider=new a.ProxyTracerProvider;this.wrapSpanContext=o.wrapSpanContext;this.isSpanContextValid=o.isSpanContextValid;this.deleteSpan=i.deleteSpan;this.getSpan=i.getSpan;this.getActiveSpan=i.getActiveSpan;this.getSpanContext=i.getSpanContext;this.setSpan=i.setSpan;this.setSpanContext=i.setSpanContext}static getInstance(){if(!this._instance){this._instance=new TraceAPI}return this._instance}setGlobalTracerProvider(e){const t=(0,n.registerGlobal)(s,this._proxyTracerProvider,c.DiagAPI.instance());if(t){this._proxyTracerProvider.setDelegate(e)}return t}getTracerProvider(){return(0,n.getGlobal)(s)||this._proxyTracerProvider}getTracer(e,t){return this.getTracerProvider().getTracer(e,t)}disable(){(0,n.unregisterGlobal)(s,c.DiagAPI.instance());this._proxyTracerProvider=new a.ProxyTracerProvider}}t.TraceAPI=TraceAPI},277:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.deleteBaggage=t.setBaggage=t.getActiveBaggage=t.getBaggage=void 0;const n=r(491);const a=r(780);const o=(0,a.createContextKey)(\"OpenTelemetry Baggage Key\");function getBaggage(e){return e.getValue(o)||undefined}t.getBaggage=getBaggage;function getActiveBaggage(){return getBaggage(n.ContextAPI.getInstance().active())}t.getActiveBaggage=getActiveBaggage;function setBaggage(e,t){return e.setValue(o,t)}t.setBaggage=setBaggage;function deleteBaggage(e){return e.deleteValue(o)}t.deleteBaggage=deleteBaggage},993:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.BaggageImpl=void 0;class BaggageImpl{constructor(e){this._entries=e?new Map(e):new Map}getEntry(e){const t=this._entries.get(e);if(!t){return undefined}return Object.assign({},t)}getAllEntries(){return Array.from(this._entries.entries()).map((([e,t])=>[e,t]))}setEntry(e,t){const r=new BaggageImpl(this._entries);r._entries.set(e,t);return r}removeEntry(e){const t=new BaggageImpl(this._entries);t._entries.delete(e);return t}removeEntries(...e){const t=new BaggageImpl(this._entries);for(const r of e){t._entries.delete(r)}return t}clear(){return new BaggageImpl}}t.BaggageImpl=BaggageImpl},830:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.baggageEntryMetadataSymbol=void 0;t.baggageEntryMetadataSymbol=Symbol(\"BaggageEntryMetadata\")},369:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.baggageEntryMetadataFromString=t.createBaggage=void 0;const n=r(930);const a=r(993);const o=r(830);const i=n.DiagAPI.instance();function createBaggage(e={}){return new a.BaggageImpl(new Map(Object.entries(e)))}t.createBaggage=createBaggage;function baggageEntryMetadataFromString(e){if(typeof e!==\"string\"){i.error(`Cannot create baggage metadata from unknown type: ${typeof e}`);e=\"\"}return{__TYPE__:o.baggageEntryMetadataSymbol,toString(){return e}}}t.baggageEntryMetadataFromString=baggageEntryMetadataFromString},67:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.context=void 0;const n=r(491);t.context=n.ContextAPI.getInstance()},223:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NoopContextManager=void 0;const n=r(780);class NoopContextManager{active(){return n.ROOT_CONTEXT}with(e,t,r,...n){return t.call(r,...n)}bind(e,t){return t}enable(){return this}disable(){return this}}t.NoopContextManager=NoopContextManager},780:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ROOT_CONTEXT=t.createContextKey=void 0;function createContextKey(e){return Symbol.for(e)}t.createContextKey=createContextKey;class BaseContext{constructor(e){const t=this;t._currentContext=e?new Map(e):new Map;t.getValue=e=>t._currentContext.get(e);t.setValue=(e,r)=>{const n=new BaseContext(t._currentContext);n._currentContext.set(e,r);return n};t.deleteValue=e=>{const r=new BaseContext(t._currentContext);r._currentContext.delete(e);return r}}}t.ROOT_CONTEXT=new BaseContext},506:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.diag=void 0;const n=r(930);t.diag=n.DiagAPI.instance()},56:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.DiagComponentLogger=void 0;const n=r(172);class DiagComponentLogger{constructor(e){this._namespace=e.namespace||\"DiagComponentLogger\"}debug(...e){return logProxy(\"debug\",this._namespace,e)}error(...e){return logProxy(\"error\",this._namespace,e)}info(...e){return logProxy(\"info\",this._namespace,e)}warn(...e){return logProxy(\"warn\",this._namespace,e)}verbose(...e){return logProxy(\"verbose\",this._namespace,e)}}t.DiagComponentLogger=DiagComponentLogger;function logProxy(e,t,r){const a=(0,n.getGlobal)(\"diag\");if(!a){return}r.unshift(t);return a[e](...r)}},972:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.DiagConsoleLogger=void 0;const r=[{n:\"error\",c:\"error\"},{n:\"warn\",c:\"warn\"},{n:\"info\",c:\"info\"},{n:\"debug\",c:\"debug\"},{n:\"verbose\",c:\"trace\"}];class DiagConsoleLogger{constructor(){function _consoleFunc(e){return function(...t){if(console){let r=console[e];if(typeof r!==\"function\"){r=console.log}if(typeof r===\"function\"){return r.apply(console,t)}}}}for(let e=0;e<r.length;e++){this[r[e].n]=_consoleFunc(r[e].c)}}}t.DiagConsoleLogger=DiagConsoleLogger},912:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.createLogLevelDiagLogger=void 0;const n=r(957);function createLogLevelDiagLogger(e,t){if(e<n.DiagLogLevel.NONE){e=n.DiagLogLevel.NONE}else if(e>n.DiagLogLevel.ALL){e=n.DiagLogLevel.ALL}t=t||{};function _filterFunc(r,n){const a=t[r];if(typeof a===\"function\"&&e>=n){return a.bind(t)}return function(){}}return{error:_filterFunc(\"error\",n.DiagLogLevel.ERROR),warn:_filterFunc(\"warn\",n.DiagLogLevel.WARN),info:_filterFunc(\"info\",n.DiagLogLevel.INFO),debug:_filterFunc(\"debug\",n.DiagLogLevel.DEBUG),verbose:_filterFunc(\"verbose\",n.DiagLogLevel.VERBOSE)}}t.createLogLevelDiagLogger=createLogLevelDiagLogger},957:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.DiagLogLevel=void 0;var r;(function(e){e[e[\"NONE\"]=0]=\"NONE\";e[e[\"ERROR\"]=30]=\"ERROR\";e[e[\"WARN\"]=50]=\"WARN\";e[e[\"INFO\"]=60]=\"INFO\";e[e[\"DEBUG\"]=70]=\"DEBUG\";e[e[\"VERBOSE\"]=80]=\"VERBOSE\";e[e[\"ALL\"]=9999]=\"ALL\"})(r=t.DiagLogLevel||(t.DiagLogLevel={}))},172:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.unregisterGlobal=t.getGlobal=t.registerGlobal=void 0;const n=r(200);const a=r(521);const o=r(130);const i=a.VERSION.split(\".\")[0];const c=Symbol.for(`opentelemetry.js.api.${i}`);const s=n._globalThis;function registerGlobal(e,t,r,n=false){var o;const i=s[c]=(o=s[c])!==null&&o!==void 0?o:{version:a.VERSION};if(!n&&i[e]){const t=new Error(`@opentelemetry/api: Attempted duplicate registration of API: ${e}`);r.error(t.stack||t.message);return false}if(i.version!==a.VERSION){const t=new Error(`@opentelemetry/api: Registration of version v${i.version} for ${e} does not match previously registered API v${a.VERSION}`);r.error(t.stack||t.message);return false}i[e]=t;r.debug(`@opentelemetry/api: Registered a global for ${e} v${a.VERSION}.`);return true}t.registerGlobal=registerGlobal;function getGlobal(e){var t,r;const n=(t=s[c])===null||t===void 0?void 0:t.version;if(!n||!(0,o.isCompatible)(n)){return}return(r=s[c])===null||r===void 0?void 0:r[e]}t.getGlobal=getGlobal;function unregisterGlobal(e,t){t.debug(`@opentelemetry/api: Unregistering a global for ${e} v${a.VERSION}.`);const r=s[c];if(r){delete r[e]}}t.unregisterGlobal=unregisterGlobal},130:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.isCompatible=t._makeCompatibilityCheck=void 0;const n=r(521);const a=/^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;function _makeCompatibilityCheck(e){const t=new Set([e]);const r=new Set;const n=e.match(a);if(!n){return()=>false}const o={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};if(o.prerelease!=null){return function isExactmatch(t){return t===e}}function _reject(e){r.add(e);return false}function _accept(e){t.add(e);return true}return function isCompatible(e){if(t.has(e)){return true}if(r.has(e)){return false}const n=e.match(a);if(!n){return _reject(e)}const i={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};if(i.prerelease!=null){return _reject(e)}if(o.major!==i.major){return _reject(e)}if(o.major===0){if(o.minor===i.minor&&o.patch<=i.patch){return _accept(e)}return _reject(e)}if(o.minor<=i.minor){return _accept(e)}return _reject(e)}}t._makeCompatibilityCheck=_makeCompatibilityCheck;t.isCompatible=_makeCompatibilityCheck(n.VERSION)},886:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.metrics=void 0;const n=r(653);t.metrics=n.MetricsAPI.getInstance()},901:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ValueType=void 0;var r;(function(e){e[e[\"INT\"]=0]=\"INT\";e[e[\"DOUBLE\"]=1]=\"DOUBLE\"})(r=t.ValueType||(t.ValueType={}))},102:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.createNoopMeter=t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=t.NOOP_OBSERVABLE_GAUGE_METRIC=t.NOOP_OBSERVABLE_COUNTER_METRIC=t.NOOP_UP_DOWN_COUNTER_METRIC=t.NOOP_HISTOGRAM_METRIC=t.NOOP_COUNTER_METRIC=t.NOOP_METER=t.NoopObservableUpDownCounterMetric=t.NoopObservableGaugeMetric=t.NoopObservableCounterMetric=t.NoopObservableMetric=t.NoopHistogramMetric=t.NoopUpDownCounterMetric=t.NoopCounterMetric=t.NoopMetric=t.NoopMeter=void 0;class NoopMeter{constructor(){}createHistogram(e,r){return t.NOOP_HISTOGRAM_METRIC}createCounter(e,r){return t.NOOP_COUNTER_METRIC}createUpDownCounter(e,r){return t.NOOP_UP_DOWN_COUNTER_METRIC}createObservableGauge(e,r){return t.NOOP_OBSERVABLE_GAUGE_METRIC}createObservableCounter(e,r){return t.NOOP_OBSERVABLE_COUNTER_METRIC}createObservableUpDownCounter(e,r){return t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC}addBatchObservableCallback(e,t){}removeBatchObservableCallback(e){}}t.NoopMeter=NoopMeter;class NoopMetric{}t.NoopMetric=NoopMetric;class NoopCounterMetric extends NoopMetric{add(e,t){}}t.NoopCounterMetric=NoopCounterMetric;class NoopUpDownCounterMetric extends NoopMetric{add(e,t){}}t.NoopUpDownCounterMetric=NoopUpDownCounterMetric;class NoopHistogramMetric extends NoopMetric{record(e,t){}}t.NoopHistogramMetric=NoopHistogramMetric;class NoopObservableMetric{addCallback(e){}removeCallback(e){}}t.NoopObservableMetric=NoopObservableMetric;class NoopObservableCounterMetric extends NoopObservableMetric{}t.NoopObservableCounterMetric=NoopObservableCounterMetric;class NoopObservableGaugeMetric extends NoopObservableMetric{}t.NoopObservableGaugeMetric=NoopObservableGaugeMetric;class NoopObservableUpDownCounterMetric extends NoopObservableMetric{}t.NoopObservableUpDownCounterMetric=NoopObservableUpDownCounterMetric;t.NOOP_METER=new NoopMeter;t.NOOP_COUNTER_METRIC=new NoopCounterMetric;t.NOOP_HISTOGRAM_METRIC=new NoopHistogramMetric;t.NOOP_UP_DOWN_COUNTER_METRIC=new NoopUpDownCounterMetric;t.NOOP_OBSERVABLE_COUNTER_METRIC=new NoopObservableCounterMetric;t.NOOP_OBSERVABLE_GAUGE_METRIC=new NoopObservableGaugeMetric;t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=new NoopObservableUpDownCounterMetric;function createNoopMeter(){return t.NOOP_METER}t.createNoopMeter=createNoopMeter},660:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NOOP_METER_PROVIDER=t.NoopMeterProvider=void 0;const n=r(102);class NoopMeterProvider{getMeter(e,t,r){return n.NOOP_METER}}t.NoopMeterProvider=NoopMeterProvider;t.NOOP_METER_PROVIDER=new NoopMeterProvider},200:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;Object.defineProperty(e,n,{enumerable:true,get:function(){return t[r]}})}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var a=this&&this.__exportStar||function(e,t){for(var r in e)if(r!==\"default\"&&!Object.prototype.hasOwnProperty.call(t,r))n(t,e,r)};Object.defineProperty(t,\"__esModule\",{value:true});a(r(46),t)},651:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t._globalThis=void 0;t._globalThis=typeof globalThis===\"object\"?globalThis:global},46:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;Object.defineProperty(e,n,{enumerable:true,get:function(){return t[r]}})}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var a=this&&this.__exportStar||function(e,t){for(var r in e)if(r!==\"default\"&&!Object.prototype.hasOwnProperty.call(t,r))n(t,e,r)};Object.defineProperty(t,\"__esModule\",{value:true});a(r(651),t)},939:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.propagation=void 0;const n=r(181);t.propagation=n.PropagationAPI.getInstance()},874:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NoopTextMapPropagator=void 0;class NoopTextMapPropagator{inject(e,t){}extract(e,t){return e}fields(){return[]}}t.NoopTextMapPropagator=NoopTextMapPropagator},194:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.defaultTextMapSetter=t.defaultTextMapGetter=void 0;t.defaultTextMapGetter={get(e,t){if(e==null){return undefined}return e[t]},keys(e){if(e==null){return[]}return Object.keys(e)}};t.defaultTextMapSetter={set(e,t,r){if(e==null){return}e[t]=r}}},845:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.trace=void 0;const n=r(997);t.trace=n.TraceAPI.getInstance()},403:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NonRecordingSpan=void 0;const n=r(476);class NonRecordingSpan{constructor(e=n.INVALID_SPAN_CONTEXT){this._spanContext=e}spanContext(){return this._spanContext}setAttribute(e,t){return this}setAttributes(e){return this}addEvent(e,t){return this}setStatus(e){return this}updateName(e){return this}end(e){}isRecording(){return false}recordException(e,t){}}t.NonRecordingSpan=NonRecordingSpan},614:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NoopTracer=void 0;const n=r(491);const a=r(607);const o=r(403);const i=r(139);const c=n.ContextAPI.getInstance();class NoopTracer{startSpan(e,t,r=c.active()){const n=Boolean(t===null||t===void 0?void 0:t.root);if(n){return new o.NonRecordingSpan}const s=r&&(0,a.getSpanContext)(r);if(isSpanContext(s)&&(0,i.isSpanContextValid)(s)){return new o.NonRecordingSpan(s)}else{return new o.NonRecordingSpan}}startActiveSpan(e,t,r,n){let o;let i;let s;if(arguments.length<2){return}else if(arguments.length===2){s=t}else if(arguments.length===3){o=t;s=r}else{o=t;i=r;s=n}const u=i!==null&&i!==void 0?i:c.active();const l=this.startSpan(e,o,u);const g=(0,a.setSpan)(u,l);return c.with(g,s,undefined,l)}}t.NoopTracer=NoopTracer;function isSpanContext(e){return typeof e===\"object\"&&typeof e[\"spanId\"]===\"string\"&&typeof e[\"traceId\"]===\"string\"&&typeof e[\"traceFlags\"]===\"number\"}},124:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NoopTracerProvider=void 0;const n=r(614);class NoopTracerProvider{getTracer(e,t,r){return new n.NoopTracer}}t.NoopTracerProvider=NoopTracerProvider},125:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ProxyTracer=void 0;const n=r(614);const a=new n.NoopTracer;class ProxyTracer{constructor(e,t,r,n){this._provider=e;this.name=t;this.version=r;this.options=n}startSpan(e,t,r){return this._getTracer().startSpan(e,t,r)}startActiveSpan(e,t,r,n){const a=this._getTracer();return Reflect.apply(a.startActiveSpan,a,arguments)}_getTracer(){if(this._delegate){return this._delegate}const e=this._provider.getDelegateTracer(this.name,this.version,this.options);if(!e){return a}this._delegate=e;return this._delegate}}t.ProxyTracer=ProxyTracer},846:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ProxyTracerProvider=void 0;const n=r(125);const a=r(124);const o=new a.NoopTracerProvider;class ProxyTracerProvider{getTracer(e,t,r){var a;return(a=this.getDelegateTracer(e,t,r))!==null&&a!==void 0?a:new n.ProxyTracer(this,e,t,r)}getDelegate(){var e;return(e=this._delegate)!==null&&e!==void 0?e:o}setDelegate(e){this._delegate=e}getDelegateTracer(e,t,r){var n;return(n=this._delegate)===null||n===void 0?void 0:n.getTracer(e,t,r)}}t.ProxyTracerProvider=ProxyTracerProvider},996:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.SamplingDecision=void 0;var r;(function(e){e[e[\"NOT_RECORD\"]=0]=\"NOT_RECORD\";e[e[\"RECORD\"]=1]=\"RECORD\";e[e[\"RECORD_AND_SAMPLED\"]=2]=\"RECORD_AND_SAMPLED\"})(r=t.SamplingDecision||(t.SamplingDecision={}))},607:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.getSpanContext=t.setSpanContext=t.deleteSpan=t.setSpan=t.getActiveSpan=t.getSpan=void 0;const n=r(780);const a=r(403);const o=r(491);const i=(0,n.createContextKey)(\"OpenTelemetry Context Key SPAN\");function getSpan(e){return e.getValue(i)||undefined}t.getSpan=getSpan;function getActiveSpan(){return getSpan(o.ContextAPI.getInstance().active())}t.getActiveSpan=getActiveSpan;function setSpan(e,t){return e.setValue(i,t)}t.setSpan=setSpan;function deleteSpan(e){return e.deleteValue(i)}t.deleteSpan=deleteSpan;function setSpanContext(e,t){return setSpan(e,new a.NonRecordingSpan(t))}t.setSpanContext=setSpanContext;function getSpanContext(e){var t;return(t=getSpan(e))===null||t===void 0?void 0:t.spanContext()}t.getSpanContext=getSpanContext},325:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.TraceStateImpl=void 0;const n=r(564);const a=32;const o=512;const i=\",\";const c=\"=\";class TraceStateImpl{constructor(e){this._internalState=new Map;if(e)this._parse(e)}set(e,t){const r=this._clone();if(r._internalState.has(e)){r._internalState.delete(e)}r._internalState.set(e,t);return r}unset(e){const t=this._clone();t._internalState.delete(e);return t}get(e){return this._internalState.get(e)}serialize(){return this._keys().reduce(((e,t)=>{e.push(t+c+this.get(t));return e}),[]).join(i)}_parse(e){if(e.length>o)return;this._internalState=e.split(i).reverse().reduce(((e,t)=>{const r=t.trim();const a=r.indexOf(c);if(a!==-1){const o=r.slice(0,a);const i=r.slice(a+1,t.length);if((0,n.validateKey)(o)&&(0,n.validateValue)(i)){e.set(o,i)}else{}}return e}),new Map);if(this._internalState.size>a){this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,a))}}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){const e=new TraceStateImpl;e._internalState=new Map(this._internalState);return e}}t.TraceStateImpl=TraceStateImpl},564:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.validateValue=t.validateKey=void 0;const r=\"[_0-9a-z-*/]\";const n=`[a-z]${r}{0,255}`;const a=`[a-z0-9]${r}{0,240}@[a-z]${r}{0,13}`;const o=new RegExp(`^(?:${n}|${a})$`);const i=/^[ -~]{0,255}[!-~]$/;const c=/,|=/;function validateKey(e){return o.test(e)}t.validateKey=validateKey;function validateValue(e){return i.test(e)&&!c.test(e)}t.validateValue=validateValue},98:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.createTraceState=void 0;const n=r(325);function createTraceState(e){return new n.TraceStateImpl(e)}t.createTraceState=createTraceState},476:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.INVALID_SPAN_CONTEXT=t.INVALID_TRACEID=t.INVALID_SPANID=void 0;const n=r(475);t.INVALID_SPANID=\"0000000000000000\";t.INVALID_TRACEID=\"00000000000000000000000000000000\";t.INVALID_SPAN_CONTEXT={traceId:t.INVALID_TRACEID,spanId:t.INVALID_SPANID,traceFlags:n.TraceFlags.NONE}},357:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.SpanKind=void 0;var r;(function(e){e[e[\"INTERNAL\"]=0]=\"INTERNAL\";e[e[\"SERVER\"]=1]=\"SERVER\";e[e[\"CLIENT\"]=2]=\"CLIENT\";e[e[\"PRODUCER\"]=3]=\"PRODUCER\";e[e[\"CONSUMER\"]=4]=\"CONSUMER\"})(r=t.SpanKind||(t.SpanKind={}))},139:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.wrapSpanContext=t.isSpanContextValid=t.isValidSpanId=t.isValidTraceId=void 0;const n=r(476);const a=r(403);const o=/^([0-9a-f]{32})$/i;const i=/^[0-9a-f]{16}$/i;function isValidTraceId(e){return o.test(e)&&e!==n.INVALID_TRACEID}t.isValidTraceId=isValidTraceId;function isValidSpanId(e){return i.test(e)&&e!==n.INVALID_SPANID}t.isValidSpanId=isValidSpanId;function isSpanContextValid(e){return isValidTraceId(e.traceId)&&isValidSpanId(e.spanId)}t.isSpanContextValid=isSpanContextValid;function wrapSpanContext(e){return new a.NonRecordingSpan(e)}t.wrapSpanContext=wrapSpanContext},847:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.SpanStatusCode=void 0;var r;(function(e){e[e[\"UNSET\"]=0]=\"UNSET\";e[e[\"OK\"]=1]=\"OK\";e[e[\"ERROR\"]=2]=\"ERROR\"})(r=t.SpanStatusCode||(t.SpanStatusCode={}))},475:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.TraceFlags=void 0;var r;(function(e){e[e[\"NONE\"]=0]=\"NONE\";e[e[\"SAMPLED\"]=1]=\"SAMPLED\"})(r=t.TraceFlags||(t.TraceFlags={}))},521:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.VERSION=void 0;t.VERSION=\"1.6.0\"}};var t={};function __nccwpck_require__(r){var n=t[r];if(n!==undefined){return n.exports}var a=t[r]={exports:{}};var o=true;try{e[r].call(a.exports,a,a.exports,__nccwpck_require__);o=false}finally{if(o)delete t[r]}return a.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var r={};(()=>{var e=r;Object.defineProperty(e,\"__esModule\",{value:true});e.trace=e.propagation=e.metrics=e.diag=e.context=e.INVALID_SPAN_CONTEXT=e.INVALID_TRACEID=e.INVALID_SPANID=e.isValidSpanId=e.isValidTraceId=e.isSpanContextValid=e.createTraceState=e.TraceFlags=e.SpanStatusCode=e.SpanKind=e.SamplingDecision=e.ProxyTracerProvider=e.ProxyTracer=e.defaultTextMapSetter=e.defaultTextMapGetter=e.ValueType=e.createNoopMeter=e.DiagLogLevel=e.DiagConsoleLogger=e.ROOT_CONTEXT=e.createContextKey=e.baggageEntryMetadataFromString=void 0;var t=__nccwpck_require__(369);Object.defineProperty(e,\"baggageEntryMetadataFromString\",{enumerable:true,get:function(){return t.baggageEntryMetadataFromString}});var n=__nccwpck_require__(780);Object.defineProperty(e,\"createContextKey\",{enumerable:true,get:function(){return n.createContextKey}});Object.defineProperty(e,\"ROOT_CONTEXT\",{enumerable:true,get:function(){return n.ROOT_CONTEXT}});var a=__nccwpck_require__(972);Object.defineProperty(e,\"DiagConsoleLogger\",{enumerable:true,get:function(){return a.DiagConsoleLogger}});var o=__nccwpck_require__(957);Object.defineProperty(e,\"DiagLogLevel\",{enumerable:true,get:function(){return o.DiagLogLevel}});var i=__nccwpck_require__(102);Object.defineProperty(e,\"createNoopMeter\",{enumerable:true,get:function(){return i.createNoopMeter}});var c=__nccwpck_require__(901);Object.defineProperty(e,\"ValueType\",{enumerable:true,get:function(){return c.ValueType}});var s=__nccwpck_require__(194);Object.defineProperty(e,\"defaultTextMapGetter\",{enumerable:true,get:function(){return s.defaultTextMapGetter}});Object.defineProperty(e,\"defaultTextMapSetter\",{enumerable:true,get:function(){return s.defaultTextMapSetter}});var u=__nccwpck_require__(125);Object.defineProperty(e,\"ProxyTracer\",{enumerable:true,get:function(){return u.ProxyTracer}});var l=__nccwpck_require__(846);Object.defineProperty(e,\"ProxyTracerProvider\",{enumerable:true,get:function(){return l.ProxyTracerProvider}});var g=__nccwpck_require__(996);Object.defineProperty(e,\"SamplingDecision\",{enumerable:true,get:function(){return g.SamplingDecision}});var p=__nccwpck_require__(357);Object.defineProperty(e,\"SpanKind\",{enumerable:true,get:function(){return p.SpanKind}});var d=__nccwpck_require__(847);Object.defineProperty(e,\"SpanStatusCode\",{enumerable:true,get:function(){return d.SpanStatusCode}});var _=__nccwpck_require__(475);Object.defineProperty(e,\"TraceFlags\",{enumerable:true,get:function(){return _.TraceFlags}});var f=__nccwpck_require__(98);Object.defineProperty(e,\"createTraceState\",{enumerable:true,get:function(){return f.createTraceState}});var b=__nccwpck_require__(139);Object.defineProperty(e,\"isSpanContextValid\",{enumerable:true,get:function(){return b.isSpanContextValid}});Object.defineProperty(e,\"isValidTraceId\",{enumerable:true,get:function(){return b.isValidTraceId}});Object.defineProperty(e,\"isValidSpanId\",{enumerable:true,get:function(){return b.isValidSpanId}});var v=__nccwpck_require__(476);Object.defineProperty(e,\"INVALID_SPANID\",{enumerable:true,get:function(){return v.INVALID_SPANID}});Object.defineProperty(e,\"INVALID_TRACEID\",{enumerable:true,get:function(){return v.INVALID_TRACEID}});Object.defineProperty(e,\"INVALID_SPAN_CONTEXT\",{enumerable:true,get:function(){return v.INVALID_SPAN_CONTEXT}});const O=__nccwpck_require__(67);Object.defineProperty(e,\"context\",{enumerable:true,get:function(){return O.context}});const P=__nccwpck_require__(506);Object.defineProperty(e,\"diag\",{enumerable:true,get:function(){return P.diag}});const N=__nccwpck_require__(886);Object.defineProperty(e,\"metrics\",{enumerable:true,get:function(){return N.metrics}});const S=__nccwpck_require__(939);Object.defineProperty(e,\"propagation\",{enumerable:true,get:function(){return S.propagation}});const C=__nccwpck_require__(845);Object.defineProperty(e,\"trace\",{enumerable:true,get:function(){return C.trace}});e[\"default\"]={context:O.context,diag:P.diag,metrics:N.metrics,propagation:S.propagation,trace:C.trace}})();module.exports=r})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL0BvcGVudGVsZW1ldHJ5L2FwaS9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBQSxNQUFNLGFBQWEsT0FBTyxjQUFjLHNDQUFzQyxXQUFXLEVBQUUsb0JBQW9CLGVBQWUsZUFBZSxlQUFlLGtCQUFrQixpQ0FBaUMsaUJBQWlCLGVBQWUscUJBQXFCLG9CQUFvQiw4QkFBOEIsc0JBQXNCLDJCQUEyQixxREFBcUQsU0FBUywwQ0FBMEMsaUJBQWlCLGtEQUFrRCxVQUFVLDJDQUEyQyxxQkFBcUIsNEJBQTRCLFVBQVUsb0NBQW9DLGdEQUFnRCx3QkFBd0IsZUFBZSxzQ0FBc0MsV0FBVyxFQUFFLGlCQUFpQixjQUFjLGVBQWUsZUFBZSxlQUFlLGVBQWUsY0FBYyxjQUFjLHNCQUFzQixzQkFBc0IsZ0NBQWdDLGFBQWEsbUJBQW1CLGFBQWEsc0JBQXNCLDZCQUE2QixJQUFJLFVBQVUsVUFBVSx3SkFBd0osb0RBQW9ELGFBQWEsd0JBQXdCLEdBQUcsWUFBWSxnQ0FBZ0Msa0dBQWtHLGtDQUFrQyxxRkFBcUYsa0RBQWtELEVBQUUsR0FBRyxvRUFBb0UsRUFBRSxHQUFHLDZDQUE2QyxzQkFBc0IsZUFBZSw2QkFBNkIsd0RBQXdELCtCQUErQiwyQkFBMkIseUJBQXlCLHlCQUF5QiwyQkFBMkIsa0JBQWtCLG9CQUFvQiwyQkFBMkIsdUJBQXVCLGtCQUFrQixlQUFlLHNDQUFzQyxXQUFXLEVBQUUsb0JBQW9CLGVBQWUsZUFBZSxlQUFlLGtCQUFrQixpQkFBaUIsZUFBZSxxQkFBcUIsb0JBQW9CLDhCQUE4QixzQkFBc0IsMEJBQTBCLHFEQUFxRCxtQkFBbUIsZ0RBQWdELGdCQUFnQiwrQ0FBK0MsVUFBVSxnREFBZ0Qsd0JBQXdCLGVBQWUsc0NBQXNDLFdBQVcsRUFBRSx3QkFBd0IsZUFBZSxlQUFlLGVBQWUsZUFBZSxlQUFlLGVBQWUsc0JBQXNCLG9DQUFvQyxxQkFBcUIsY0FBYyxtQ0FBbUMsNkJBQTZCLHlDQUF5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RSxnQ0FBZ0MsbUNBQW1DLCtCQUErQixrQkFBa0IsRUFBRSxpQ0FBaUMsZ0NBQWdDLCtCQUErQixlQUFlLEVBQUUsaUNBQWlDLG1DQUFtQywrQkFBK0Isa0JBQWtCLEVBQUUsaUNBQWlDLHVDQUF1QywrQkFBK0Isc0JBQXNCLEVBQUUsaUNBQWlDLGlDQUFpQywrQkFBK0IsZ0JBQWdCLEVBQUUsY0FBYyx5RkFBeUYsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL0BvcGVudGVsZW1ldHJ5L2FwaS9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoKCk9PntcInVzZSBzdHJpY3RcIjt2YXIgZT17NDkxOihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuQ29udGV4dEFQST12b2lkIDA7Y29uc3Qgbj1yKDIyMyk7Y29uc3QgYT1yKDE3Mik7Y29uc3Qgbz1yKDkzMCk7Y29uc3QgaT1cImNvbnRleHRcIjtjb25zdCBjPW5ldyBuLk5vb3BDb250ZXh0TWFuYWdlcjtjbGFzcyBDb250ZXh0QVBJe2NvbnN0cnVjdG9yKCl7fXN0YXRpYyBnZXRJbnN0YW5jZSgpe2lmKCF0aGlzLl9pbnN0YW5jZSl7dGhpcy5faW5zdGFuY2U9bmV3IENvbnRleHRBUEl9cmV0dXJuIHRoaXMuX2luc3RhbmNlfXNldEdsb2JhbENvbnRleHRNYW5hZ2VyKGUpe3JldHVybigwLGEucmVnaXN0ZXJHbG9iYWwpKGksZSxvLkRpYWdBUEkuaW5zdGFuY2UoKSl9YWN0aXZlKCl7cmV0dXJuIHRoaXMuX2dldENvbnRleHRNYW5hZ2VyKCkuYWN0aXZlKCl9d2l0aChlLHQsciwuLi5uKXtyZXR1cm4gdGhpcy5fZ2V0Q29udGV4dE1hbmFnZXIoKS53aXRoKGUsdCxyLC4uLm4pfWJpbmQoZSx0KXtyZXR1cm4gdGhpcy5fZ2V0Q29udGV4dE1hbmFnZXIoKS5iaW5kKGUsdCl9X2dldENvbnRleHRNYW5hZ2VyKCl7cmV0dXJuKDAsYS5nZXRHbG9iYWwpKGkpfHxjfWRpc2FibGUoKXt0aGlzLl9nZXRDb250ZXh0TWFuYWdlcigpLmRpc2FibGUoKTsoMCxhLnVucmVnaXN0ZXJHbG9iYWwpKGksby5EaWFnQVBJLmluc3RhbmNlKCkpfX10LkNvbnRleHRBUEk9Q29udGV4dEFQSX0sOTMwOihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuRGlhZ0FQST12b2lkIDA7Y29uc3Qgbj1yKDU2KTtjb25zdCBhPXIoOTEyKTtjb25zdCBvPXIoOTU3KTtjb25zdCBpPXIoMTcyKTtjb25zdCBjPVwiZGlhZ1wiO2NsYXNzIERpYWdBUEl7Y29uc3RydWN0b3IoKXtmdW5jdGlvbiBfbG9nUHJveHkoZSl7cmV0dXJuIGZ1bmN0aW9uKC4uLnQpe2NvbnN0IHI9KDAsaS5nZXRHbG9iYWwpKFwiZGlhZ1wiKTtpZighcilyZXR1cm47cmV0dXJuIHJbZV0oLi4udCl9fWNvbnN0IGU9dGhpcztjb25zdCBzZXRMb2dnZXI9KHQscj17bG9nTGV2ZWw6by5EaWFnTG9nTGV2ZWwuSU5GT30pPT57dmFyIG4sYyxzO2lmKHQ9PT1lKXtjb25zdCB0PW5ldyBFcnJvcihcIkNhbm5vdCB1c2UgZGlhZyBhcyB0aGUgbG9nZ2VyIGZvciBpdHNlbGYuIFBsZWFzZSB1c2UgYSBEaWFnTG9nZ2VyIGltcGxlbWVudGF0aW9uIGxpa2UgQ29uc29sZURpYWdMb2dnZXIgb3IgYSBjdXN0b20gaW1wbGVtZW50YXRpb25cIik7ZS5lcnJvcigobj10LnN0YWNrKSE9PW51bGwmJm4hPT12b2lkIDA/bjp0Lm1lc3NhZ2UpO3JldHVybiBmYWxzZX1pZih0eXBlb2Ygcj09PVwibnVtYmVyXCIpe3I9e2xvZ0xldmVsOnJ9fWNvbnN0IHU9KDAsaS5nZXRHbG9iYWwpKFwiZGlhZ1wiKTtjb25zdCBsPSgwLGEuY3JlYXRlTG9nTGV2ZWxEaWFnTG9nZ2VyKSgoYz1yLmxvZ0xldmVsKSE9PW51bGwmJmMhPT12b2lkIDA/YzpvLkRpYWdMb2dMZXZlbC5JTkZPLHQpO2lmKHUmJiFyLnN1cHByZXNzT3ZlcnJpZGVNZXNzYWdlKXtjb25zdCBlPShzPShuZXcgRXJyb3IpLnN0YWNrKSE9PW51bGwmJnMhPT12b2lkIDA/czpcIjxmYWlsZWQgdG8gZ2VuZXJhdGUgc3RhY2t0cmFjZT5cIjt1Lndhcm4oYEN1cnJlbnQgbG9nZ2VyIHdpbGwgYmUgb3ZlcndyaXR0ZW4gZnJvbSAke2V9YCk7bC53YXJuKGBDdXJyZW50IGxvZ2dlciB3aWxsIG92ZXJ3cml0ZSBvbmUgYWxyZWFkeSByZWdpc3RlcmVkIGZyb20gJHtlfWApfXJldHVybigwLGkucmVnaXN0ZXJHbG9iYWwpKFwiZGlhZ1wiLGwsZSx0cnVlKX07ZS5zZXRMb2dnZXI9c2V0TG9nZ2VyO2UuZGlzYWJsZT0oKT0+eygwLGkudW5yZWdpc3Rlckdsb2JhbCkoYyxlKX07ZS5jcmVhdGVDb21wb25lbnRMb2dnZXI9ZT0+bmV3IG4uRGlhZ0NvbXBvbmVudExvZ2dlcihlKTtlLnZlcmJvc2U9X2xvZ1Byb3h5KFwidmVyYm9zZVwiKTtlLmRlYnVnPV9sb2dQcm94eShcImRlYnVnXCIpO2UuaW5mbz1fbG9nUHJveHkoXCJpbmZvXCIpO2Uud2Fybj1fbG9nUHJveHkoXCJ3YXJuXCIpO2UuZXJyb3I9X2xvZ1Byb3h5KFwiZXJyb3JcIil9c3RhdGljIGluc3RhbmNlKCl7aWYoIXRoaXMuX2luc3RhbmNlKXt0aGlzLl9pbnN0YW5jZT1uZXcgRGlhZ0FQSX1yZXR1cm4gdGhpcy5faW5zdGFuY2V9fXQuRGlhZ0FQST1EaWFnQVBJfSw2NTM6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5NZXRyaWNzQVBJPXZvaWQgMDtjb25zdCBuPXIoNjYwKTtjb25zdCBhPXIoMTcyKTtjb25zdCBvPXIoOTMwKTtjb25zdCBpPVwibWV0cmljc1wiO2NsYXNzIE1ldHJpY3NBUEl7Y29uc3RydWN0b3IoKXt9c3RhdGljIGdldEluc3RhbmNlKCl7aWYoIXRoaXMuX2luc3RhbmNlKXt0aGlzLl9pbnN0YW5jZT1uZXcgTWV0cmljc0FQSX1yZXR1cm4gdGhpcy5faW5zdGFuY2V9c2V0R2xvYmFsTWV0ZXJQcm92aWRlcihlKXtyZXR1cm4oMCxhLnJlZ2lzdGVyR2xvYmFsKShpLGUsby5EaWFnQVBJLmluc3RhbmNlKCkpfWdldE1ldGVyUHJvdmlkZXIoKXtyZXR1cm4oMCxhLmdldEdsb2JhbCkoaSl8fG4uTk9PUF9NRVRFUl9QUk9WSURFUn1nZXRNZXRlcihlLHQscil7cmV0dXJuIHRoaXMuZ2V0TWV0ZXJQcm92aWRlcigpLmdldE1ldGVyKGUsdCxyKX1kaXNhYmxlKCl7KDAsYS51bnJlZ2lzdGVyR2xvYmFsKShpLG8uRGlhZ0FQSS5pbnN0YW5jZSgpKX19dC5NZXRyaWNzQVBJPU1ldHJpY3NBUEl9LDE4MTooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LlByb3BhZ2F0aW9uQVBJPXZvaWQgMDtjb25zdCBuPXIoMTcyKTtjb25zdCBhPXIoODc0KTtjb25zdCBvPXIoMTk0KTtjb25zdCBpPXIoMjc3KTtjb25zdCBjPXIoMzY5KTtjb25zdCBzPXIoOTMwKTtjb25zdCB1PVwicHJvcGFnYXRpb25cIjtjb25zdCBsPW5ldyBhLk5vb3BUZXh0TWFwUHJvcGFnYXRvcjtjbGFzcyBQcm9wYWdhdGlvbkFQSXtjb25zdHJ1Y3Rvcigpe3RoaXMuY3JlYXRlQmFnZ2FnZT1jLmNyZWF0ZUJhZ2dhZ2U7dGhpcy5nZXRCYWdnYWdlPWkuZ2V0QmFnZ2FnZTt0aGlzLmdldEFjdGl2ZUJhZ2dhZ2U9aS5nZXRBY3RpdmVCYWdnYWdlO3RoaXMuc2V0QmFnZ2FnZT1pLnNldEJhZ2dhZ2U7dGhpcy5kZWxldGVCYWdnYWdlPWkuZGVsZXRlQmFnZ2FnZX1zdGF0aWMgZ2V0SW5zdGFuY2UoKXtpZighdGhpcy5faW5zdGFuY2Upe3RoaXMuX2luc3RhbmNlPW5ldyBQcm9wYWdhdGlvbkFQSX1yZXR1cm4gdGhpcy5faW5zdGFuY2V9c2V0R2xvYmFsUHJvcGFnYXRvcihlKXtyZXR1cm4oMCxuLnJlZ2lzdGVyR2xvYmFsKSh1LGUscy5EaWFnQVBJLmluc3RhbmNlKCkpfWluamVjdChlLHQscj1vLmRlZmF1bHRUZXh0TWFwU2V0dGVyKXtyZXR1cm4gdGhpcy5fZ2V0R2xvYmFsUHJvcGFnYXRvcigpLmluamVjdChlLHQscil9ZXh0cmFjdChlLHQscj1vLmRlZmF1bHRUZXh0TWFwR2V0dGVyKXtyZXR1cm4gdGhpcy5fZ2V0R2xvYmFsUHJvcGFnYXRvcigpLmV4dHJhY3QoZSx0LHIpfWZpZWxkcygpe3JldHVybiB0aGlzLl9nZXRHbG9iYWxQcm9wYWdhdG9yKCkuZmllbGRzKCl9ZGlzYWJsZSgpeygwLG4udW5yZWdpc3Rlckdsb2JhbCkodSxzLkRpYWdBUEkuaW5zdGFuY2UoKSl9X2dldEdsb2JhbFByb3BhZ2F0b3IoKXtyZXR1cm4oMCxuLmdldEdsb2JhbCkodSl8fGx9fXQuUHJvcGFnYXRpb25BUEk9UHJvcGFnYXRpb25BUEl9LDk5NzooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LlRyYWNlQVBJPXZvaWQgMDtjb25zdCBuPXIoMTcyKTtjb25zdCBhPXIoODQ2KTtjb25zdCBvPXIoMTM5KTtjb25zdCBpPXIoNjA3KTtjb25zdCBjPXIoOTMwKTtjb25zdCBzPVwidHJhY2VcIjtjbGFzcyBUcmFjZUFQSXtjb25zdHJ1Y3Rvcigpe3RoaXMuX3Byb3h5VHJhY2VyUHJvdmlkZXI9bmV3IGEuUHJveHlUcmFjZXJQcm92aWRlcjt0aGlzLndyYXBTcGFuQ29udGV4dD1vLndyYXBTcGFuQ29udGV4dDt0aGlzLmlzU3BhbkNvbnRleHRWYWxpZD1vLmlzU3BhbkNvbnRleHRWYWxpZDt0aGlzLmRlbGV0ZVNwYW49aS5kZWxldGVTcGFuO3RoaXMuZ2V0U3Bhbj1pLmdldFNwYW47dGhpcy5nZXRBY3RpdmVTcGFuPWkuZ2V0QWN0aXZlU3Bhbjt0aGlzLmdldFNwYW5Db250ZXh0PWkuZ2V0U3BhbkNvbnRleHQ7dGhpcy5zZXRTcGFuPWkuc2V0U3Bhbjt0aGlzLnNldFNwYW5Db250ZXh0PWkuc2V0U3BhbkNvbnRleHR9c3RhdGljIGdldEluc3RhbmNlKCl7aWYoIXRoaXMuX2luc3RhbmNlKXt0aGlzLl9pbnN0YW5jZT1uZXcgVHJhY2VBUEl9cmV0dXJuIHRoaXMuX2luc3RhbmNlfXNldEdsb2JhbFRyYWNlclByb3ZpZGVyKGUpe2NvbnN0IHQ9KDAsbi5yZWdpc3Rlckdsb2JhbCkocyx0aGlzLl9wcm94eVRyYWNlclByb3ZpZGVyLGMuRGlhZ0FQSS5pbnN0YW5jZSgpKTtpZih0KXt0aGlzLl9wcm94eVRyYWNlclByb3ZpZGVyLnNldERlbGVnYXRlKGUpfXJldHVybiB0fWdldFRyYWNlclByb3ZpZGVyKCl7cmV0dXJuKDAsbi5nZXRHbG9iYWwpKHMpfHx0aGlzLl9wcm94eVRyYWNlclByb3ZpZGVyfWdldFRyYWNlcihlLHQpe3JldHVybiB0aGlzLmdldFRyYWNlclByb3ZpZGVyKCkuZ2V0VHJhY2VyKGUsdCl9ZGlzYWJsZSgpeygwLG4udW5yZWdpc3Rlckdsb2JhbCkocyxjLkRpYWdBUEkuaW5zdGFuY2UoKSk7dGhpcy5fcHJveHlUcmFjZXJQcm92aWRlcj1uZXcgYS5Qcm94eVRyYWNlclByb3ZpZGVyfX10LlRyYWNlQVBJPVRyYWNlQVBJfSwyNzc6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5kZWxldGVCYWdnYWdlPXQuc2V0QmFnZ2FnZT10LmdldEFjdGl2ZUJhZ2dhZ2U9dC5nZXRCYWdnYWdlPXZvaWQgMDtjb25zdCBuPXIoNDkxKTtjb25zdCBhPXIoNzgwKTtjb25zdCBvPSgwLGEuY3JlYXRlQ29udGV4dEtleSkoXCJPcGVuVGVsZW1ldHJ5IEJhZ2dhZ2UgS2V5XCIpO2Z1bmN0aW9uIGdldEJhZ2dhZ2UoZSl7cmV0dXJuIGUuZ2V0VmFsdWUobyl8fHVuZGVmaW5lZH10LmdldEJhZ2dhZ2U9Z2V0QmFnZ2FnZTtmdW5jdGlvbiBnZXRBY3RpdmVCYWdnYWdlKCl7cmV0dXJuIGdldEJhZ2dhZ2Uobi5Db250ZXh0QVBJLmdldEluc3RhbmNlKCkuYWN0aXZlKCkpfXQuZ2V0QWN0aXZlQmFnZ2FnZT1nZXRBY3RpdmVCYWdnYWdlO2Z1bmN0aW9uIHNldEJhZ2dhZ2UoZSx0KXtyZXR1cm4gZS5zZXRWYWx1ZShvLHQpfXQuc2V0QmFnZ2FnZT1zZXRCYWdnYWdlO2Z1bmN0aW9uIGRlbGV0ZUJhZ2dhZ2UoZSl7cmV0dXJuIGUuZGVsZXRlVmFsdWUobyl9dC5kZWxldGVCYWdnYWdlPWRlbGV0ZUJhZ2dhZ2V9LDk5MzooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5CYWdnYWdlSW1wbD12b2lkIDA7Y2xhc3MgQmFnZ2FnZUltcGx7Y29uc3RydWN0b3IoZSl7dGhpcy5fZW50cmllcz1lP25ldyBNYXAoZSk6bmV3IE1hcH1nZXRFbnRyeShlKXtjb25zdCB0PXRoaXMuX2VudHJpZXMuZ2V0KGUpO2lmKCF0KXtyZXR1cm4gdW5kZWZpbmVkfXJldHVybiBPYmplY3QuYXNzaWduKHt9LHQpfWdldEFsbEVudHJpZXMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9lbnRyaWVzLmVudHJpZXMoKSkubWFwKCgoW2UsdF0pPT5bZSx0XSkpfXNldEVudHJ5KGUsdCl7Y29uc3Qgcj1uZXcgQmFnZ2FnZUltcGwodGhpcy5fZW50cmllcyk7ci5fZW50cmllcy5zZXQoZSx0KTtyZXR1cm4gcn1yZW1vdmVFbnRyeShlKXtjb25zdCB0PW5ldyBCYWdnYWdlSW1wbCh0aGlzLl9lbnRyaWVzKTt0Ll9lbnRyaWVzLmRlbGV0ZShlKTtyZXR1cm4gdH1yZW1vdmVFbnRyaWVzKC4uLmUpe2NvbnN0IHQ9bmV3IEJhZ2dhZ2VJbXBsKHRoaXMuX2VudHJpZXMpO2Zvcihjb25zdCByIG9mIGUpe3QuX2VudHJpZXMuZGVsZXRlKHIpfXJldHVybiB0fWNsZWFyKCl7cmV0dXJuIG5ldyBCYWdnYWdlSW1wbH19dC5CYWdnYWdlSW1wbD1CYWdnYWdlSW1wbH0sODMwOihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LmJhZ2dhZ2VFbnRyeU1ldGFkYXRhU3ltYm9sPXZvaWQgMDt0LmJhZ2dhZ2VFbnRyeU1ldGFkYXRhU3ltYm9sPVN5bWJvbChcIkJhZ2dhZ2VFbnRyeU1ldGFkYXRhXCIpfSwzNjk6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5iYWdnYWdlRW50cnlNZXRhZGF0YUZyb21TdHJpbmc9dC5jcmVhdGVCYWdnYWdlPXZvaWQgMDtjb25zdCBuPXIoOTMwKTtjb25zdCBhPXIoOTkzKTtjb25zdCBvPXIoODMwKTtjb25zdCBpPW4uRGlhZ0FQSS5pbnN0YW5jZSgpO2Z1bmN0aW9uIGNyZWF0ZUJhZ2dhZ2UoZT17fSl7cmV0dXJuIG5ldyBhLkJhZ2dhZ2VJbXBsKG5ldyBNYXAoT2JqZWN0LmVudHJpZXMoZSkpKX10LmNyZWF0ZUJhZ2dhZ2U9Y3JlYXRlQmFnZ2FnZTtmdW5jdGlvbiBiYWdnYWdlRW50cnlNZXRhZGF0YUZyb21TdHJpbmcoZSl7aWYodHlwZW9mIGUhPT1cInN0cmluZ1wiKXtpLmVycm9yKGBDYW5ub3QgY3JlYXRlIGJhZ2dhZ2UgbWV0YWRhdGEgZnJvbSB1bmtub3duIHR5cGU6ICR7dHlwZW9mIGV9YCk7ZT1cIlwifXJldHVybntfX1RZUEVfXzpvLmJhZ2dhZ2VFbnRyeU1ldGFkYXRhU3ltYm9sLHRvU3RyaW5nKCl7cmV0dXJuIGV9fX10LmJhZ2dhZ2VFbnRyeU1ldGFkYXRhRnJvbVN0cmluZz1iYWdnYWdlRW50cnlNZXRhZGF0YUZyb21TdHJpbmd9LDY3OihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuY29udGV4dD12b2lkIDA7Y29uc3Qgbj1yKDQ5MSk7dC5jb250ZXh0PW4uQ29udGV4dEFQSS5nZXRJbnN0YW5jZSgpfSwyMjM6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5Ob29wQ29udGV4dE1hbmFnZXI9dm9pZCAwO2NvbnN0IG49cig3ODApO2NsYXNzIE5vb3BDb250ZXh0TWFuYWdlcnthY3RpdmUoKXtyZXR1cm4gbi5ST09UX0NPTlRFWFR9d2l0aChlLHQsciwuLi5uKXtyZXR1cm4gdC5jYWxsKHIsLi4ubil9YmluZChlLHQpe3JldHVybiB0fWVuYWJsZSgpe3JldHVybiB0aGlzfWRpc2FibGUoKXtyZXR1cm4gdGhpc319dC5Ob29wQ29udGV4dE1hbmFnZXI9Tm9vcENvbnRleHRNYW5hZ2VyfSw3ODA6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuUk9PVF9DT05URVhUPXQuY3JlYXRlQ29udGV4dEtleT12b2lkIDA7ZnVuY3Rpb24gY3JlYXRlQ29udGV4dEtleShlKXtyZXR1cm4gU3ltYm9sLmZvcihlKX10LmNyZWF0ZUNvbnRleHRLZXk9Y3JlYXRlQ29udGV4dEtleTtjbGFzcyBCYXNlQ29udGV4dHtjb25zdHJ1Y3RvcihlKXtjb25zdCB0PXRoaXM7dC5fY3VycmVudENvbnRleHQ9ZT9uZXcgTWFwKGUpOm5ldyBNYXA7dC5nZXRWYWx1ZT1lPT50Ll9jdXJyZW50Q29udGV4dC5nZXQoZSk7dC5zZXRWYWx1ZT0oZSxyKT0+e2NvbnN0IG49bmV3IEJhc2VDb250ZXh0KHQuX2N1cnJlbnRDb250ZXh0KTtuLl9jdXJyZW50Q29udGV4dC5zZXQoZSxyKTtyZXR1cm4gbn07dC5kZWxldGVWYWx1ZT1lPT57Y29uc3Qgcj1uZXcgQmFzZUNvbnRleHQodC5fY3VycmVudENvbnRleHQpO3IuX2N1cnJlbnRDb250ZXh0LmRlbGV0ZShlKTtyZXR1cm4gcn19fXQuUk9PVF9DT05URVhUPW5ldyBCYXNlQ29udGV4dH0sNTA2OihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuZGlhZz12b2lkIDA7Y29uc3Qgbj1yKDkzMCk7dC5kaWFnPW4uRGlhZ0FQSS5pbnN0YW5jZSgpfSw1NjooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LkRpYWdDb21wb25lbnRMb2dnZXI9dm9pZCAwO2NvbnN0IG49cigxNzIpO2NsYXNzIERpYWdDb21wb25lbnRMb2dnZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5fbmFtZXNwYWNlPWUubmFtZXNwYWNlfHxcIkRpYWdDb21wb25lbnRMb2dnZXJcIn1kZWJ1ZyguLi5lKXtyZXR1cm4gbG9nUHJveHkoXCJkZWJ1Z1wiLHRoaXMuX25hbWVzcGFjZSxlKX1lcnJvciguLi5lKXtyZXR1cm4gbG9nUHJveHkoXCJlcnJvclwiLHRoaXMuX25hbWVzcGFjZSxlKX1pbmZvKC4uLmUpe3JldHVybiBsb2dQcm94eShcImluZm9cIix0aGlzLl9uYW1lc3BhY2UsZSl9d2FybiguLi5lKXtyZXR1cm4gbG9nUHJveHkoXCJ3YXJuXCIsdGhpcy5fbmFtZXNwYWNlLGUpfXZlcmJvc2UoLi4uZSl7cmV0dXJuIGxvZ1Byb3h5KFwidmVyYm9zZVwiLHRoaXMuX25hbWVzcGFjZSxlKX19dC5EaWFnQ29tcG9uZW50TG9nZ2VyPURpYWdDb21wb25lbnRMb2dnZXI7ZnVuY3Rpb24gbG9nUHJveHkoZSx0LHIpe2NvbnN0IGE9KDAsbi5nZXRHbG9iYWwpKFwiZGlhZ1wiKTtpZighYSl7cmV0dXJufXIudW5zaGlmdCh0KTtyZXR1cm4gYVtlXSguLi5yKX19LDk3MjooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5EaWFnQ29uc29sZUxvZ2dlcj12b2lkIDA7Y29uc3Qgcj1be246XCJlcnJvclwiLGM6XCJlcnJvclwifSx7bjpcIndhcm5cIixjOlwid2FyblwifSx7bjpcImluZm9cIixjOlwiaW5mb1wifSx7bjpcImRlYnVnXCIsYzpcImRlYnVnXCJ9LHtuOlwidmVyYm9zZVwiLGM6XCJ0cmFjZVwifV07Y2xhc3MgRGlhZ0NvbnNvbGVMb2dnZXJ7Y29uc3RydWN0b3IoKXtmdW5jdGlvbiBfY29uc29sZUZ1bmMoZSl7cmV0dXJuIGZ1bmN0aW9uKC4uLnQpe2lmKGNvbnNvbGUpe2xldCByPWNvbnNvbGVbZV07aWYodHlwZW9mIHIhPT1cImZ1bmN0aW9uXCIpe3I9Y29uc29sZS5sb2d9aWYodHlwZW9mIHI9PT1cImZ1bmN0aW9uXCIpe3JldHVybiByLmFwcGx5KGNvbnNvbGUsdCl9fX19Zm9yKGxldCBlPTA7ZTxyLmxlbmd0aDtlKyspe3RoaXNbcltlXS5uXT1fY29uc29sZUZ1bmMocltlXS5jKX19fXQuRGlhZ0NvbnNvbGVMb2dnZXI9RGlhZ0NvbnNvbGVMb2dnZXJ9LDkxMjooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LmNyZWF0ZUxvZ0xldmVsRGlhZ0xvZ2dlcj12b2lkIDA7Y29uc3Qgbj1yKDk1Nyk7ZnVuY3Rpb24gY3JlYXRlTG9nTGV2ZWxEaWFnTG9nZ2VyKGUsdCl7aWYoZTxuLkRpYWdMb2dMZXZlbC5OT05FKXtlPW4uRGlhZ0xvZ0xldmVsLk5PTkV9ZWxzZSBpZihlPm4uRGlhZ0xvZ0xldmVsLkFMTCl7ZT1uLkRpYWdMb2dMZXZlbC5BTEx9dD10fHx7fTtmdW5jdGlvbiBfZmlsdGVyRnVuYyhyLG4pe2NvbnN0IGE9dFtyXTtpZih0eXBlb2YgYT09PVwiZnVuY3Rpb25cIiYmZT49bil7cmV0dXJuIGEuYmluZCh0KX1yZXR1cm4gZnVuY3Rpb24oKXt9fXJldHVybntlcnJvcjpfZmlsdGVyRnVuYyhcImVycm9yXCIsbi5EaWFnTG9nTGV2ZWwuRVJST1IpLHdhcm46X2ZpbHRlckZ1bmMoXCJ3YXJuXCIsbi5EaWFnTG9nTGV2ZWwuV0FSTiksaW5mbzpfZmlsdGVyRnVuYyhcImluZm9cIixuLkRpYWdMb2dMZXZlbC5JTkZPKSxkZWJ1ZzpfZmlsdGVyRnVuYyhcImRlYnVnXCIsbi5EaWFnTG9nTGV2ZWwuREVCVUcpLHZlcmJvc2U6X2ZpbHRlckZ1bmMoXCJ2ZXJib3NlXCIsbi5EaWFnTG9nTGV2ZWwuVkVSQk9TRSl9fXQuY3JlYXRlTG9nTGV2ZWxEaWFnTG9nZ2VyPWNyZWF0ZUxvZ0xldmVsRGlhZ0xvZ2dlcn0sOTU3OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LkRpYWdMb2dMZXZlbD12b2lkIDA7dmFyIHI7KGZ1bmN0aW9uKGUpe2VbZVtcIk5PTkVcIl09MF09XCJOT05FXCI7ZVtlW1wiRVJST1JcIl09MzBdPVwiRVJST1JcIjtlW2VbXCJXQVJOXCJdPTUwXT1cIldBUk5cIjtlW2VbXCJJTkZPXCJdPTYwXT1cIklORk9cIjtlW2VbXCJERUJVR1wiXT03MF09XCJERUJVR1wiO2VbZVtcIlZFUkJPU0VcIl09ODBdPVwiVkVSQk9TRVwiO2VbZVtcIkFMTFwiXT05OTk5XT1cIkFMTFwifSkocj10LkRpYWdMb2dMZXZlbHx8KHQuRGlhZ0xvZ0xldmVsPXt9KSl9LDE3MjooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LnVucmVnaXN0ZXJHbG9iYWw9dC5nZXRHbG9iYWw9dC5yZWdpc3Rlckdsb2JhbD12b2lkIDA7Y29uc3Qgbj1yKDIwMCk7Y29uc3QgYT1yKDUyMSk7Y29uc3Qgbz1yKDEzMCk7Y29uc3QgaT1hLlZFUlNJT04uc3BsaXQoXCIuXCIpWzBdO2NvbnN0IGM9U3ltYm9sLmZvcihgb3BlbnRlbGVtZXRyeS5qcy5hcGkuJHtpfWApO2NvbnN0IHM9bi5fZ2xvYmFsVGhpcztmdW5jdGlvbiByZWdpc3Rlckdsb2JhbChlLHQscixuPWZhbHNlKXt2YXIgbztjb25zdCBpPXNbY109KG89c1tjXSkhPT1udWxsJiZvIT09dm9pZCAwP286e3ZlcnNpb246YS5WRVJTSU9OfTtpZighbiYmaVtlXSl7Y29uc3QgdD1uZXcgRXJyb3IoYEBvcGVudGVsZW1ldHJ5L2FwaTogQXR0ZW1wdGVkIGR1cGxpY2F0ZSByZWdpc3RyYXRpb24gb2YgQVBJOiAke2V9YCk7ci5lcnJvcih0LnN0YWNrfHx0Lm1lc3NhZ2UpO3JldHVybiBmYWxzZX1pZihpLnZlcnNpb24hPT1hLlZFUlNJT04pe2NvbnN0IHQ9bmV3IEVycm9yKGBAb3BlbnRlbGVtZXRyeS9hcGk6IFJlZ2lzdHJhdGlvbiBvZiB2ZXJzaW9uIHYke2kudmVyc2lvbn0gZm9yICR7ZX0gZG9lcyBub3QgbWF0Y2ggcHJldmlvdXNseSByZWdpc3RlcmVkIEFQSSB2JHthLlZFUlNJT059YCk7ci5lcnJvcih0LnN0YWNrfHx0Lm1lc3NhZ2UpO3JldHVybiBmYWxzZX1pW2VdPXQ7ci5kZWJ1ZyhgQG9wZW50ZWxlbWV0cnkvYXBpOiBSZWdpc3RlcmVkIGEgZ2xvYmFsIGZvciAke2V9IHYke2EuVkVSU0lPTn0uYCk7cmV0dXJuIHRydWV9dC5yZWdpc3Rlckdsb2JhbD1yZWdpc3Rlckdsb2JhbDtmdW5jdGlvbiBnZXRHbG9iYWwoZSl7dmFyIHQscjtjb25zdCBuPSh0PXNbY10pPT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dC52ZXJzaW9uO2lmKCFufHwhKDAsby5pc0NvbXBhdGlibGUpKG4pKXtyZXR1cm59cmV0dXJuKHI9c1tjXSk9PT1udWxsfHxyPT09dm9pZCAwP3ZvaWQgMDpyW2VdfXQuZ2V0R2xvYmFsPWdldEdsb2JhbDtmdW5jdGlvbiB1bnJlZ2lzdGVyR2xvYmFsKGUsdCl7dC5kZWJ1ZyhgQG9wZW50ZWxlbWV0cnkvYXBpOiBVbnJlZ2lzdGVyaW5nIGEgZ2xvYmFsIGZvciAke2V9IHYke2EuVkVSU0lPTn0uYCk7Y29uc3Qgcj1zW2NdO2lmKHIpe2RlbGV0ZSByW2VdfX10LnVucmVnaXN0ZXJHbG9iYWw9dW5yZWdpc3Rlckdsb2JhbH0sMTMwOihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuaXNDb21wYXRpYmxlPXQuX21ha2VDb21wYXRpYmlsaXR5Q2hlY2s9dm9pZCAwO2NvbnN0IG49cig1MjEpO2NvbnN0IGE9L14oXFxkKylcXC4oXFxkKylcXC4oXFxkKykoLSguKykpPyQvO2Z1bmN0aW9uIF9tYWtlQ29tcGF0aWJpbGl0eUNoZWNrKGUpe2NvbnN0IHQ9bmV3IFNldChbZV0pO2NvbnN0IHI9bmV3IFNldDtjb25zdCBuPWUubWF0Y2goYSk7aWYoIW4pe3JldHVybigpPT5mYWxzZX1jb25zdCBvPXttYWpvcjorblsxXSxtaW5vcjorblsyXSxwYXRjaDorblszXSxwcmVyZWxlYXNlOm5bNF19O2lmKG8ucHJlcmVsZWFzZSE9bnVsbCl7cmV0dXJuIGZ1bmN0aW9uIGlzRXhhY3RtYXRjaCh0KXtyZXR1cm4gdD09PWV9fWZ1bmN0aW9uIF9yZWplY3QoZSl7ci5hZGQoZSk7cmV0dXJuIGZhbHNlfWZ1bmN0aW9uIF9hY2NlcHQoZSl7dC5hZGQoZSk7cmV0dXJuIHRydWV9cmV0dXJuIGZ1bmN0aW9uIGlzQ29tcGF0aWJsZShlKXtpZih0LmhhcyhlKSl7cmV0dXJuIHRydWV9aWYoci5oYXMoZSkpe3JldHVybiBmYWxzZX1jb25zdCBuPWUubWF0Y2goYSk7aWYoIW4pe3JldHVybiBfcmVqZWN0KGUpfWNvbnN0IGk9e21ham9yOituWzFdLG1pbm9yOituWzJdLHBhdGNoOituWzNdLHByZXJlbGVhc2U6bls0XX07aWYoaS5wcmVyZWxlYXNlIT1udWxsKXtyZXR1cm4gX3JlamVjdChlKX1pZihvLm1ham9yIT09aS5tYWpvcil7cmV0dXJuIF9yZWplY3QoZSl9aWYoby5tYWpvcj09PTApe2lmKG8ubWlub3I9PT1pLm1pbm9yJiZvLnBhdGNoPD1pLnBhdGNoKXtyZXR1cm4gX2FjY2VwdChlKX1yZXR1cm4gX3JlamVjdChlKX1pZihvLm1pbm9yPD1pLm1pbm9yKXtyZXR1cm4gX2FjY2VwdChlKX1yZXR1cm4gX3JlamVjdChlKX19dC5fbWFrZUNvbXBhdGliaWxpdHlDaGVjaz1fbWFrZUNvbXBhdGliaWxpdHlDaGVjazt0LmlzQ29tcGF0aWJsZT1fbWFrZUNvbXBhdGliaWxpdHlDaGVjayhuLlZFUlNJT04pfSw4ODY6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5tZXRyaWNzPXZvaWQgMDtjb25zdCBuPXIoNjUzKTt0Lm1ldHJpY3M9bi5NZXRyaWNzQVBJLmdldEluc3RhbmNlKCl9LDkwMTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5WYWx1ZVR5cGU9dm9pZCAwO3ZhciByOyhmdW5jdGlvbihlKXtlW2VbXCJJTlRcIl09MF09XCJJTlRcIjtlW2VbXCJET1VCTEVcIl09MV09XCJET1VCTEVcIn0pKHI9dC5WYWx1ZVR5cGV8fCh0LlZhbHVlVHlwZT17fSkpfSwxMDI6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuY3JlYXRlTm9vcE1ldGVyPXQuTk9PUF9PQlNFUlZBQkxFX1VQX0RPV05fQ09VTlRFUl9NRVRSSUM9dC5OT09QX09CU0VSVkFCTEVfR0FVR0VfTUVUUklDPXQuTk9PUF9PQlNFUlZBQkxFX0NPVU5URVJfTUVUUklDPXQuTk9PUF9VUF9ET1dOX0NPVU5URVJfTUVUUklDPXQuTk9PUF9ISVNUT0dSQU1fTUVUUklDPXQuTk9PUF9DT1VOVEVSX01FVFJJQz10Lk5PT1BfTUVURVI9dC5Ob29wT2JzZXJ2YWJsZVVwRG93bkNvdW50ZXJNZXRyaWM9dC5Ob29wT2JzZXJ2YWJsZUdhdWdlTWV0cmljPXQuTm9vcE9ic2VydmFibGVDb3VudGVyTWV0cmljPXQuTm9vcE9ic2VydmFibGVNZXRyaWM9dC5Ob29wSGlzdG9ncmFtTWV0cmljPXQuTm9vcFVwRG93bkNvdW50ZXJNZXRyaWM9dC5Ob29wQ291bnRlck1ldHJpYz10Lk5vb3BNZXRyaWM9dC5Ob29wTWV0ZXI9dm9pZCAwO2NsYXNzIE5vb3BNZXRlcntjb25zdHJ1Y3Rvcigpe31jcmVhdGVIaXN0b2dyYW0oZSxyKXtyZXR1cm4gdC5OT09QX0hJU1RPR1JBTV9NRVRSSUN9Y3JlYXRlQ291bnRlcihlLHIpe3JldHVybiB0Lk5PT1BfQ09VTlRFUl9NRVRSSUN9Y3JlYXRlVXBEb3duQ291bnRlcihlLHIpe3JldHVybiB0Lk5PT1BfVVBfRE9XTl9DT1VOVEVSX01FVFJJQ31jcmVhdGVPYnNlcnZhYmxlR2F1Z2UoZSxyKXtyZXR1cm4gdC5OT09QX09CU0VSVkFCTEVfR0FVR0VfTUVUUklDfWNyZWF0ZU9ic2VydmFibGVDb3VudGVyKGUscil7cmV0dXJuIHQuTk9PUF9PQlNFUlZBQkxFX0NPVU5URVJfTUVUUklDfWNyZWF0ZU9ic2VydmFibGVVcERvd25Db3VudGVyKGUscil7cmV0dXJuIHQuTk9PUF9PQlNFUlZBQkxFX1VQX0RPV05fQ09VTlRFUl9NRVRSSUN9YWRkQmF0Y2hPYnNlcnZhYmxlQ2FsbGJhY2soZSx0KXt9cmVtb3ZlQmF0Y2hPYnNlcnZhYmxlQ2FsbGJhY2soZSl7fX10Lk5vb3BNZXRlcj1Ob29wTWV0ZXI7Y2xhc3MgTm9vcE1ldHJpY3t9dC5Ob29wTWV0cmljPU5vb3BNZXRyaWM7Y2xhc3MgTm9vcENvdW50ZXJNZXRyaWMgZXh0ZW5kcyBOb29wTWV0cmlje2FkZChlLHQpe319dC5Ob29wQ291bnRlck1ldHJpYz1Ob29wQ291bnRlck1ldHJpYztjbGFzcyBOb29wVXBEb3duQ291bnRlck1ldHJpYyBleHRlbmRzIE5vb3BNZXRyaWN7YWRkKGUsdCl7fX10Lk5vb3BVcERvd25Db3VudGVyTWV0cmljPU5vb3BVcERvd25Db3VudGVyTWV0cmljO2NsYXNzIE5vb3BIaXN0b2dyYW1NZXRyaWMgZXh0ZW5kcyBOb29wTWV0cmlje3JlY29yZChlLHQpe319dC5Ob29wSGlzdG9ncmFtTWV0cmljPU5vb3BIaXN0b2dyYW1NZXRyaWM7Y2xhc3MgTm9vcE9ic2VydmFibGVNZXRyaWN7YWRkQ2FsbGJhY2soZSl7fXJlbW92ZUNhbGxiYWNrKGUpe319dC5Ob29wT2JzZXJ2YWJsZU1ldHJpYz1Ob29wT2JzZXJ2YWJsZU1ldHJpYztjbGFzcyBOb29wT2JzZXJ2YWJsZUNvdW50ZXJNZXRyaWMgZXh0ZW5kcyBOb29wT2JzZXJ2YWJsZU1ldHJpY3t9dC5Ob29wT2JzZXJ2YWJsZUNvdW50ZXJNZXRyaWM9Tm9vcE9ic2VydmFibGVDb3VudGVyTWV0cmljO2NsYXNzIE5vb3BPYnNlcnZhYmxlR2F1Z2VNZXRyaWMgZXh0ZW5kcyBOb29wT2JzZXJ2YWJsZU1ldHJpY3t9dC5Ob29wT2JzZXJ2YWJsZUdhdWdlTWV0cmljPU5vb3BPYnNlcnZhYmxlR2F1Z2VNZXRyaWM7Y2xhc3MgTm9vcE9ic2VydmFibGVVcERvd25Db3VudGVyTWV0cmljIGV4dGVuZHMgTm9vcE9ic2VydmFibGVNZXRyaWN7fXQuTm9vcE9ic2VydmFibGVVcERvd25Db3VudGVyTWV0cmljPU5vb3BPYnNlcnZhYmxlVXBEb3duQ291bnRlck1ldHJpYzt0Lk5PT1BfTUVURVI9bmV3IE5vb3BNZXRlcjt0Lk5PT1BfQ09VTlRFUl9NRVRSSUM9bmV3IE5vb3BDb3VudGVyTWV0cmljO3QuTk9PUF9ISVNUT0dSQU1fTUVUUklDPW5ldyBOb29wSGlzdG9ncmFtTWV0cmljO3QuTk9PUF9VUF9ET1dOX0NPVU5URVJfTUVUUklDPW5ldyBOb29wVXBEb3duQ291bnRlck1ldHJpYzt0Lk5PT1BfT0JTRVJWQUJMRV9DT1VOVEVSX01FVFJJQz1uZXcgTm9vcE9ic2VydmFibGVDb3VudGVyTWV0cmljO3QuTk9PUF9PQlNFUlZBQkxFX0dBVUdFX01FVFJJQz1uZXcgTm9vcE9ic2VydmFibGVHYXVnZU1ldHJpYzt0Lk5PT1BfT0JTRVJWQUJMRV9VUF9ET1dOX0NPVU5URVJfTUVUUklDPW5ldyBOb29wT2JzZXJ2YWJsZVVwRG93bkNvdW50ZXJNZXRyaWM7ZnVuY3Rpb24gY3JlYXRlTm9vcE1ldGVyKCl7cmV0dXJuIHQuTk9PUF9NRVRFUn10LmNyZWF0ZU5vb3BNZXRlcj1jcmVhdGVOb29wTWV0ZXJ9LDY2MDooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0Lk5PT1BfTUVURVJfUFJPVklERVI9dC5Ob29wTWV0ZXJQcm92aWRlcj12b2lkIDA7Y29uc3Qgbj1yKDEwMik7Y2xhc3MgTm9vcE1ldGVyUHJvdmlkZXJ7Z2V0TWV0ZXIoZSx0LHIpe3JldHVybiBuLk5PT1BfTUVURVJ9fXQuTm9vcE1ldGVyUHJvdmlkZXI9Tm9vcE1ldGVyUHJvdmlkZXI7dC5OT09QX01FVEVSX1BST1ZJREVSPW5ldyBOb29wTWV0ZXJQcm92aWRlcn0sMjAwOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB0W3JdfX0pfTpmdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjtlW25dPXRbcl19KTt2YXIgYT10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gZSlpZihyIT09XCJkZWZhdWx0XCImJiFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxyKSluKHQsZSxyKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTthKHIoNDYpLHQpfSw2NTE6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuX2dsb2JhbFRoaXM9dm9pZCAwO3QuX2dsb2JhbFRoaXM9dHlwZW9mIGdsb2JhbFRoaXM9PT1cIm9iamVjdFwiP2dsb2JhbFRoaXM6Z2xvYmFsfSw0NjpmdW5jdGlvbihlLHQscil7dmFyIG49dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxyLG4pe2lmKG49PT11bmRlZmluZWQpbj1yO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4se2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtyXX19KX06ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7ZVtuXT10W3JdfSk7dmFyIGE9dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIGUpaWYociE9PVwiZGVmYXVsdFwiJiYhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikpbih0LGUscil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7YShyKDY1MSksdCl9LDkzOTooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LnByb3BhZ2F0aW9uPXZvaWQgMDtjb25zdCBuPXIoMTgxKTt0LnByb3BhZ2F0aW9uPW4uUHJvcGFnYXRpb25BUEkuZ2V0SW5zdGFuY2UoKX0sODc0OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0Lk5vb3BUZXh0TWFwUHJvcGFnYXRvcj12b2lkIDA7Y2xhc3MgTm9vcFRleHRNYXBQcm9wYWdhdG9ye2luamVjdChlLHQpe31leHRyYWN0KGUsdCl7cmV0dXJuIGV9ZmllbGRzKCl7cmV0dXJuW119fXQuTm9vcFRleHRNYXBQcm9wYWdhdG9yPU5vb3BUZXh0TWFwUHJvcGFnYXRvcn0sMTk0OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LmRlZmF1bHRUZXh0TWFwU2V0dGVyPXQuZGVmYXVsdFRleHRNYXBHZXR0ZXI9dm9pZCAwO3QuZGVmYXVsdFRleHRNYXBHZXR0ZXI9e2dldChlLHQpe2lmKGU9PW51bGwpe3JldHVybiB1bmRlZmluZWR9cmV0dXJuIGVbdF19LGtleXMoZSl7aWYoZT09bnVsbCl7cmV0dXJuW119cmV0dXJuIE9iamVjdC5rZXlzKGUpfX07dC5kZWZhdWx0VGV4dE1hcFNldHRlcj17c2V0KGUsdCxyKXtpZihlPT1udWxsKXtyZXR1cm59ZVt0XT1yfX19LDg0NTooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LnRyYWNlPXZvaWQgMDtjb25zdCBuPXIoOTk3KTt0LnRyYWNlPW4uVHJhY2VBUEkuZ2V0SW5zdGFuY2UoKX0sNDAzOihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuTm9uUmVjb3JkaW5nU3Bhbj12b2lkIDA7Y29uc3Qgbj1yKDQ3Nik7Y2xhc3MgTm9uUmVjb3JkaW5nU3Bhbntjb25zdHJ1Y3RvcihlPW4uSU5WQUxJRF9TUEFOX0NPTlRFWFQpe3RoaXMuX3NwYW5Db250ZXh0PWV9c3BhbkNvbnRleHQoKXtyZXR1cm4gdGhpcy5fc3BhbkNvbnRleHR9c2V0QXR0cmlidXRlKGUsdCl7cmV0dXJuIHRoaXN9c2V0QXR0cmlidXRlcyhlKXtyZXR1cm4gdGhpc31hZGRFdmVudChlLHQpe3JldHVybiB0aGlzfXNldFN0YXR1cyhlKXtyZXR1cm4gdGhpc311cGRhdGVOYW1lKGUpe3JldHVybiB0aGlzfWVuZChlKXt9aXNSZWNvcmRpbmcoKXtyZXR1cm4gZmFsc2V9cmVjb3JkRXhjZXB0aW9uKGUsdCl7fX10Lk5vblJlY29yZGluZ1NwYW49Tm9uUmVjb3JkaW5nU3Bhbn0sNjE0OihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuTm9vcFRyYWNlcj12b2lkIDA7Y29uc3Qgbj1yKDQ5MSk7Y29uc3QgYT1yKDYwNyk7Y29uc3Qgbz1yKDQwMyk7Y29uc3QgaT1yKDEzOSk7Y29uc3QgYz1uLkNvbnRleHRBUEkuZ2V0SW5zdGFuY2UoKTtjbGFzcyBOb29wVHJhY2Vye3N0YXJ0U3BhbihlLHQscj1jLmFjdGl2ZSgpKXtjb25zdCBuPUJvb2xlYW4odD09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQucm9vdCk7aWYobil7cmV0dXJuIG5ldyBvLk5vblJlY29yZGluZ1NwYW59Y29uc3Qgcz1yJiYoMCxhLmdldFNwYW5Db250ZXh0KShyKTtpZihpc1NwYW5Db250ZXh0KHMpJiYoMCxpLmlzU3BhbkNvbnRleHRWYWxpZCkocykpe3JldHVybiBuZXcgby5Ob25SZWNvcmRpbmdTcGFuKHMpfWVsc2V7cmV0dXJuIG5ldyBvLk5vblJlY29yZGluZ1NwYW59fXN0YXJ0QWN0aXZlU3BhbihlLHQscixuKXtsZXQgbztsZXQgaTtsZXQgcztpZihhcmd1bWVudHMubGVuZ3RoPDIpe3JldHVybn1lbHNlIGlmKGFyZ3VtZW50cy5sZW5ndGg9PT0yKXtzPXR9ZWxzZSBpZihhcmd1bWVudHMubGVuZ3RoPT09Myl7bz10O3M9cn1lbHNle289dDtpPXI7cz1ufWNvbnN0IHU9aSE9PW51bGwmJmkhPT12b2lkIDA/aTpjLmFjdGl2ZSgpO2NvbnN0IGw9dGhpcy5zdGFydFNwYW4oZSxvLHUpO2NvbnN0IGc9KDAsYS5zZXRTcGFuKSh1LGwpO3JldHVybiBjLndpdGgoZyxzLHVuZGVmaW5lZCxsKX19dC5Ob29wVHJhY2VyPU5vb3BUcmFjZXI7ZnVuY3Rpb24gaXNTcGFuQ29udGV4dChlKXtyZXR1cm4gdHlwZW9mIGU9PT1cIm9iamVjdFwiJiZ0eXBlb2YgZVtcInNwYW5JZFwiXT09PVwic3RyaW5nXCImJnR5cGVvZiBlW1widHJhY2VJZFwiXT09PVwic3RyaW5nXCImJnR5cGVvZiBlW1widHJhY2VGbGFnc1wiXT09PVwibnVtYmVyXCJ9fSwxMjQ6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5Ob29wVHJhY2VyUHJvdmlkZXI9dm9pZCAwO2NvbnN0IG49cig2MTQpO2NsYXNzIE5vb3BUcmFjZXJQcm92aWRlcntnZXRUcmFjZXIoZSx0LHIpe3JldHVybiBuZXcgbi5Ob29wVHJhY2VyfX10Lk5vb3BUcmFjZXJQcm92aWRlcj1Ob29wVHJhY2VyUHJvdmlkZXJ9LDEyNTooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LlByb3h5VHJhY2VyPXZvaWQgMDtjb25zdCBuPXIoNjE0KTtjb25zdCBhPW5ldyBuLk5vb3BUcmFjZXI7Y2xhc3MgUHJveHlUcmFjZXJ7Y29uc3RydWN0b3IoZSx0LHIsbil7dGhpcy5fcHJvdmlkZXI9ZTt0aGlzLm5hbWU9dDt0aGlzLnZlcnNpb249cjt0aGlzLm9wdGlvbnM9bn1zdGFydFNwYW4oZSx0LHIpe3JldHVybiB0aGlzLl9nZXRUcmFjZXIoKS5zdGFydFNwYW4oZSx0LHIpfXN0YXJ0QWN0aXZlU3BhbihlLHQscixuKXtjb25zdCBhPXRoaXMuX2dldFRyYWNlcigpO3JldHVybiBSZWZsZWN0LmFwcGx5KGEuc3RhcnRBY3RpdmVTcGFuLGEsYXJndW1lbnRzKX1fZ2V0VHJhY2VyKCl7aWYodGhpcy5fZGVsZWdhdGUpe3JldHVybiB0aGlzLl9kZWxlZ2F0ZX1jb25zdCBlPXRoaXMuX3Byb3ZpZGVyLmdldERlbGVnYXRlVHJhY2VyKHRoaXMubmFtZSx0aGlzLnZlcnNpb24sdGhpcy5vcHRpb25zKTtpZighZSl7cmV0dXJuIGF9dGhpcy5fZGVsZWdhdGU9ZTtyZXR1cm4gdGhpcy5fZGVsZWdhdGV9fXQuUHJveHlUcmFjZXI9UHJveHlUcmFjZXJ9LDg0NjooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LlByb3h5VHJhY2VyUHJvdmlkZXI9dm9pZCAwO2NvbnN0IG49cigxMjUpO2NvbnN0IGE9cigxMjQpO2NvbnN0IG89bmV3IGEuTm9vcFRyYWNlclByb3ZpZGVyO2NsYXNzIFByb3h5VHJhY2VyUHJvdmlkZXJ7Z2V0VHJhY2VyKGUsdCxyKXt2YXIgYTtyZXR1cm4oYT10aGlzLmdldERlbGVnYXRlVHJhY2VyKGUsdCxyKSkhPT1udWxsJiZhIT09dm9pZCAwP2E6bmV3IG4uUHJveHlUcmFjZXIodGhpcyxlLHQscil9Z2V0RGVsZWdhdGUoKXt2YXIgZTtyZXR1cm4oZT10aGlzLl9kZWxlZ2F0ZSkhPT1udWxsJiZlIT09dm9pZCAwP2U6b31zZXREZWxlZ2F0ZShlKXt0aGlzLl9kZWxlZ2F0ZT1lfWdldERlbGVnYXRlVHJhY2VyKGUsdCxyKXt2YXIgbjtyZXR1cm4obj10aGlzLl9kZWxlZ2F0ZSk9PT1udWxsfHxuPT09dm9pZCAwP3ZvaWQgMDpuLmdldFRyYWNlcihlLHQscil9fXQuUHJveHlUcmFjZXJQcm92aWRlcj1Qcm94eVRyYWNlclByb3ZpZGVyfSw5OTY6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuU2FtcGxpbmdEZWNpc2lvbj12b2lkIDA7dmFyIHI7KGZ1bmN0aW9uKGUpe2VbZVtcIk5PVF9SRUNPUkRcIl09MF09XCJOT1RfUkVDT1JEXCI7ZVtlW1wiUkVDT1JEXCJdPTFdPVwiUkVDT1JEXCI7ZVtlW1wiUkVDT1JEX0FORF9TQU1QTEVEXCJdPTJdPVwiUkVDT1JEX0FORF9TQU1QTEVEXCJ9KShyPXQuU2FtcGxpbmdEZWNpc2lvbnx8KHQuU2FtcGxpbmdEZWNpc2lvbj17fSkpfSw2MDc6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5nZXRTcGFuQ29udGV4dD10LnNldFNwYW5Db250ZXh0PXQuZGVsZXRlU3Bhbj10LnNldFNwYW49dC5nZXRBY3RpdmVTcGFuPXQuZ2V0U3Bhbj12b2lkIDA7Y29uc3Qgbj1yKDc4MCk7Y29uc3QgYT1yKDQwMyk7Y29uc3Qgbz1yKDQ5MSk7Y29uc3QgaT0oMCxuLmNyZWF0ZUNvbnRleHRLZXkpKFwiT3BlblRlbGVtZXRyeSBDb250ZXh0IEtleSBTUEFOXCIpO2Z1bmN0aW9uIGdldFNwYW4oZSl7cmV0dXJuIGUuZ2V0VmFsdWUoaSl8fHVuZGVmaW5lZH10LmdldFNwYW49Z2V0U3BhbjtmdW5jdGlvbiBnZXRBY3RpdmVTcGFuKCl7cmV0dXJuIGdldFNwYW4oby5Db250ZXh0QVBJLmdldEluc3RhbmNlKCkuYWN0aXZlKCkpfXQuZ2V0QWN0aXZlU3Bhbj1nZXRBY3RpdmVTcGFuO2Z1bmN0aW9uIHNldFNwYW4oZSx0KXtyZXR1cm4gZS5zZXRWYWx1ZShpLHQpfXQuc2V0U3Bhbj1zZXRTcGFuO2Z1bmN0aW9uIGRlbGV0ZVNwYW4oZSl7cmV0dXJuIGUuZGVsZXRlVmFsdWUoaSl9dC5kZWxldGVTcGFuPWRlbGV0ZVNwYW47ZnVuY3Rpb24gc2V0U3BhbkNvbnRleHQoZSx0KXtyZXR1cm4gc2V0U3BhbihlLG5ldyBhLk5vblJlY29yZGluZ1NwYW4odCkpfXQuc2V0U3BhbkNvbnRleHQ9c2V0U3BhbkNvbnRleHQ7ZnVuY3Rpb24gZ2V0U3BhbkNvbnRleHQoZSl7dmFyIHQ7cmV0dXJuKHQ9Z2V0U3BhbihlKSk9PT1udWxsfHx0PT09dm9pZCAwP3ZvaWQgMDp0LnNwYW5Db250ZXh0KCl9dC5nZXRTcGFuQ29udGV4dD1nZXRTcGFuQ29udGV4dH0sMzI1OihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuVHJhY2VTdGF0ZUltcGw9dm9pZCAwO2NvbnN0IG49cig1NjQpO2NvbnN0IGE9MzI7Y29uc3Qgbz01MTI7Y29uc3QgaT1cIixcIjtjb25zdCBjPVwiPVwiO2NsYXNzIFRyYWNlU3RhdGVJbXBse2NvbnN0cnVjdG9yKGUpe3RoaXMuX2ludGVybmFsU3RhdGU9bmV3IE1hcDtpZihlKXRoaXMuX3BhcnNlKGUpfXNldChlLHQpe2NvbnN0IHI9dGhpcy5fY2xvbmUoKTtpZihyLl9pbnRlcm5hbFN0YXRlLmhhcyhlKSl7ci5faW50ZXJuYWxTdGF0ZS5kZWxldGUoZSl9ci5faW50ZXJuYWxTdGF0ZS5zZXQoZSx0KTtyZXR1cm4gcn11bnNldChlKXtjb25zdCB0PXRoaXMuX2Nsb25lKCk7dC5faW50ZXJuYWxTdGF0ZS5kZWxldGUoZSk7cmV0dXJuIHR9Z2V0KGUpe3JldHVybiB0aGlzLl9pbnRlcm5hbFN0YXRlLmdldChlKX1zZXJpYWxpemUoKXtyZXR1cm4gdGhpcy5fa2V5cygpLnJlZHVjZSgoKGUsdCk9PntlLnB1c2godCtjK3RoaXMuZ2V0KHQpKTtyZXR1cm4gZX0pLFtdKS5qb2luKGkpfV9wYXJzZShlKXtpZihlLmxlbmd0aD5vKXJldHVybjt0aGlzLl9pbnRlcm5hbFN0YXRlPWUuc3BsaXQoaSkucmV2ZXJzZSgpLnJlZHVjZSgoKGUsdCk9Pntjb25zdCByPXQudHJpbSgpO2NvbnN0IGE9ci5pbmRleE9mKGMpO2lmKGEhPT0tMSl7Y29uc3Qgbz1yLnNsaWNlKDAsYSk7Y29uc3QgaT1yLnNsaWNlKGErMSx0Lmxlbmd0aCk7aWYoKDAsbi52YWxpZGF0ZUtleSkobykmJigwLG4udmFsaWRhdGVWYWx1ZSkoaSkpe2Uuc2V0KG8saSl9ZWxzZXt9fXJldHVybiBlfSksbmV3IE1hcCk7aWYodGhpcy5faW50ZXJuYWxTdGF0ZS5zaXplPmEpe3RoaXMuX2ludGVybmFsU3RhdGU9bmV3IE1hcChBcnJheS5mcm9tKHRoaXMuX2ludGVybmFsU3RhdGUuZW50cmllcygpKS5yZXZlcnNlKCkuc2xpY2UoMCxhKSl9fV9rZXlzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5faW50ZXJuYWxTdGF0ZS5rZXlzKCkpLnJldmVyc2UoKX1fY2xvbmUoKXtjb25zdCBlPW5ldyBUcmFjZVN0YXRlSW1wbDtlLl9pbnRlcm5hbFN0YXRlPW5ldyBNYXAodGhpcy5faW50ZXJuYWxTdGF0ZSk7cmV0dXJuIGV9fXQuVHJhY2VTdGF0ZUltcGw9VHJhY2VTdGF0ZUltcGx9LDU2NDooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC52YWxpZGF0ZVZhbHVlPXQudmFsaWRhdGVLZXk9dm9pZCAwO2NvbnN0IHI9XCJbXzAtOWEtei0qL11cIjtjb25zdCBuPWBbYS16XSR7cn17MCwyNTV9YDtjb25zdCBhPWBbYS16MC05XSR7cn17MCwyNDB9QFthLXpdJHtyfXswLDEzfWA7Y29uc3Qgbz1uZXcgUmVnRXhwKGBeKD86JHtufXwke2F9KSRgKTtjb25zdCBpPS9eWyAtfl17MCwyNTV9WyEtfl0kLztjb25zdCBjPS8sfD0vO2Z1bmN0aW9uIHZhbGlkYXRlS2V5KGUpe3JldHVybiBvLnRlc3QoZSl9dC52YWxpZGF0ZUtleT12YWxpZGF0ZUtleTtmdW5jdGlvbiB2YWxpZGF0ZVZhbHVlKGUpe3JldHVybiBpLnRlc3QoZSkmJiFjLnRlc3QoZSl9dC52YWxpZGF0ZVZhbHVlPXZhbGlkYXRlVmFsdWV9LDk4OihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuY3JlYXRlVHJhY2VTdGF0ZT12b2lkIDA7Y29uc3Qgbj1yKDMyNSk7ZnVuY3Rpb24gY3JlYXRlVHJhY2VTdGF0ZShlKXtyZXR1cm4gbmV3IG4uVHJhY2VTdGF0ZUltcGwoZSl9dC5jcmVhdGVUcmFjZVN0YXRlPWNyZWF0ZVRyYWNlU3RhdGV9LDQ3NjooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LklOVkFMSURfU1BBTl9DT05URVhUPXQuSU5WQUxJRF9UUkFDRUlEPXQuSU5WQUxJRF9TUEFOSUQ9dm9pZCAwO2NvbnN0IG49cig0NzUpO3QuSU5WQUxJRF9TUEFOSUQ9XCIwMDAwMDAwMDAwMDAwMDAwXCI7dC5JTlZBTElEX1RSQUNFSUQ9XCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiO3QuSU5WQUxJRF9TUEFOX0NPTlRFWFQ9e3RyYWNlSWQ6dC5JTlZBTElEX1RSQUNFSUQsc3BhbklkOnQuSU5WQUxJRF9TUEFOSUQsdHJhY2VGbGFnczpuLlRyYWNlRmxhZ3MuTk9ORX19LDM1NzooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5TcGFuS2luZD12b2lkIDA7dmFyIHI7KGZ1bmN0aW9uKGUpe2VbZVtcIklOVEVSTkFMXCJdPTBdPVwiSU5URVJOQUxcIjtlW2VbXCJTRVJWRVJcIl09MV09XCJTRVJWRVJcIjtlW2VbXCJDTElFTlRcIl09Ml09XCJDTElFTlRcIjtlW2VbXCJQUk9EVUNFUlwiXT0zXT1cIlBST0RVQ0VSXCI7ZVtlW1wiQ09OU1VNRVJcIl09NF09XCJDT05TVU1FUlwifSkocj10LlNwYW5LaW5kfHwodC5TcGFuS2luZD17fSkpfSwxMzk6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC53cmFwU3BhbkNvbnRleHQ9dC5pc1NwYW5Db250ZXh0VmFsaWQ9dC5pc1ZhbGlkU3BhbklkPXQuaXNWYWxpZFRyYWNlSWQ9dm9pZCAwO2NvbnN0IG49cig0NzYpO2NvbnN0IGE9cig0MDMpO2NvbnN0IG89L14oWzAtOWEtZl17MzJ9KSQvaTtjb25zdCBpPS9eWzAtOWEtZl17MTZ9JC9pO2Z1bmN0aW9uIGlzVmFsaWRUcmFjZUlkKGUpe3JldHVybiBvLnRlc3QoZSkmJmUhPT1uLklOVkFMSURfVFJBQ0VJRH10LmlzVmFsaWRUcmFjZUlkPWlzVmFsaWRUcmFjZUlkO2Z1bmN0aW9uIGlzVmFsaWRTcGFuSWQoZSl7cmV0dXJuIGkudGVzdChlKSYmZSE9PW4uSU5WQUxJRF9TUEFOSUR9dC5pc1ZhbGlkU3BhbklkPWlzVmFsaWRTcGFuSWQ7ZnVuY3Rpb24gaXNTcGFuQ29udGV4dFZhbGlkKGUpe3JldHVybiBpc1ZhbGlkVHJhY2VJZChlLnRyYWNlSWQpJiZpc1ZhbGlkU3BhbklkKGUuc3BhbklkKX10LmlzU3BhbkNvbnRleHRWYWxpZD1pc1NwYW5Db250ZXh0VmFsaWQ7ZnVuY3Rpb24gd3JhcFNwYW5Db250ZXh0KGUpe3JldHVybiBuZXcgYS5Ob25SZWNvcmRpbmdTcGFuKGUpfXQud3JhcFNwYW5Db250ZXh0PXdyYXBTcGFuQ29udGV4dH0sODQ3OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LlNwYW5TdGF0dXNDb2RlPXZvaWQgMDt2YXIgcjsoZnVuY3Rpb24oZSl7ZVtlW1wiVU5TRVRcIl09MF09XCJVTlNFVFwiO2VbZVtcIk9LXCJdPTFdPVwiT0tcIjtlW2VbXCJFUlJPUlwiXT0yXT1cIkVSUk9SXCJ9KShyPXQuU3BhblN0YXR1c0NvZGV8fCh0LlNwYW5TdGF0dXNDb2RlPXt9KSl9LDQ3NTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5UcmFjZUZsYWdzPXZvaWQgMDt2YXIgcjsoZnVuY3Rpb24oZSl7ZVtlW1wiTk9ORVwiXT0wXT1cIk5PTkVcIjtlW2VbXCJTQU1QTEVEXCJdPTFdPVwiU0FNUExFRFwifSkocj10LlRyYWNlRmxhZ3N8fCh0LlRyYWNlRmxhZ3M9e30pKX0sNTIxOihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LlZFUlNJT049dm9pZCAwO3QuVkVSU0lPTj1cIjEuNi4wXCJ9fTt2YXIgdD17fTtmdW5jdGlvbiBfX25jY3dwY2tfcmVxdWlyZV9fKHIpe3ZhciBuPXRbcl07aWYobiE9PXVuZGVmaW5lZCl7cmV0dXJuIG4uZXhwb3J0c312YXIgYT10W3JdPXtleHBvcnRzOnt9fTt2YXIgbz10cnVlO3RyeXtlW3JdLmNhbGwoYS5leHBvcnRzLGEsYS5leHBvcnRzLF9fbmNjd3Bja19yZXF1aXJlX18pO289ZmFsc2V9ZmluYWxseXtpZihvKWRlbGV0ZSB0W3JdfXJldHVybiBhLmV4cG9ydHN9aWYodHlwZW9mIF9fbmNjd3Bja19yZXF1aXJlX18hPT1cInVuZGVmaW5lZFwiKV9fbmNjd3Bja19yZXF1aXJlX18uYWI9X19kaXJuYW1lK1wiL1wiO3ZhciByPXt9OygoKT0+e3ZhciBlPXI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTtlLnRyYWNlPWUucHJvcGFnYXRpb249ZS5tZXRyaWNzPWUuZGlhZz1lLmNvbnRleHQ9ZS5JTlZBTElEX1NQQU5fQ09OVEVYVD1lLklOVkFMSURfVFJBQ0VJRD1lLklOVkFMSURfU1BBTklEPWUuaXNWYWxpZFNwYW5JZD1lLmlzVmFsaWRUcmFjZUlkPWUuaXNTcGFuQ29udGV4dFZhbGlkPWUuY3JlYXRlVHJhY2VTdGF0ZT1lLlRyYWNlRmxhZ3M9ZS5TcGFuU3RhdHVzQ29kZT1lLlNwYW5LaW5kPWUuU2FtcGxpbmdEZWNpc2lvbj1lLlByb3h5VHJhY2VyUHJvdmlkZXI9ZS5Qcm94eVRyYWNlcj1lLmRlZmF1bHRUZXh0TWFwU2V0dGVyPWUuZGVmYXVsdFRleHRNYXBHZXR0ZXI9ZS5WYWx1ZVR5cGU9ZS5jcmVhdGVOb29wTWV0ZXI9ZS5EaWFnTG9nTGV2ZWw9ZS5EaWFnQ29uc29sZUxvZ2dlcj1lLlJPT1RfQ09OVEVYVD1lLmNyZWF0ZUNvbnRleHRLZXk9ZS5iYWdnYWdlRW50cnlNZXRhZGF0YUZyb21TdHJpbmc9dm9pZCAwO3ZhciB0PV9fbmNjd3Bja19yZXF1aXJlX18oMzY5KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImJhZ2dhZ2VFbnRyeU1ldGFkYXRhRnJvbVN0cmluZ1wiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHQuYmFnZ2FnZUVudHJ5TWV0YWRhdGFGcm9tU3RyaW5nfX0pO3ZhciBuPV9fbmNjd3Bja19yZXF1aXJlX18oNzgwKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImNyZWF0ZUNvbnRleHRLZXlcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBuLmNyZWF0ZUNvbnRleHRLZXl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJST09UX0NPTlRFWFRcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBuLlJPT1RfQ09OVEVYVH19KTt2YXIgYT1fX25jY3dwY2tfcmVxdWlyZV9fKDk3Mik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJEaWFnQ29uc29sZUxvZ2dlclwiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEuRGlhZ0NvbnNvbGVMb2dnZXJ9fSk7dmFyIG89X19uY2N3cGNrX3JlcXVpcmVfXyg5NTcpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiRGlhZ0xvZ0xldmVsXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5EaWFnTG9nTGV2ZWx9fSk7dmFyIGk9X19uY2N3cGNrX3JlcXVpcmVfXygxMDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiY3JlYXRlTm9vcE1ldGVyXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5jcmVhdGVOb29wTWV0ZXJ9fSk7dmFyIGM9X19uY2N3cGNrX3JlcXVpcmVfXyg5MDEpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiVmFsdWVUeXBlXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYy5WYWx1ZVR5cGV9fSk7dmFyIHM9X19uY2N3cGNrX3JlcXVpcmVfXygxOTQpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFRleHRNYXBHZXR0ZXJcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBzLmRlZmF1bHRUZXh0TWFwR2V0dGVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFRleHRNYXBTZXR0ZXJcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBzLmRlZmF1bHRUZXh0TWFwU2V0dGVyfX0pO3ZhciB1PV9fbmNjd3Bja19yZXF1aXJlX18oMTI1KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIlByb3h5VHJhY2VyXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdS5Qcm94eVRyYWNlcn19KTt2YXIgbD1fX25jY3dwY2tfcmVxdWlyZV9fKDg0Nik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJQcm94eVRyYWNlclByb3ZpZGVyXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbC5Qcm94eVRyYWNlclByb3ZpZGVyfX0pO3ZhciBnPV9fbmNjd3Bja19yZXF1aXJlX18oOTk2KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIlNhbXBsaW5nRGVjaXNpb25cIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBnLlNhbXBsaW5nRGVjaXNpb259fSk7dmFyIHA9X19uY2N3cGNrX3JlcXVpcmVfXygzNTcpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiU3BhbktpbmRcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBwLlNwYW5LaW5kfX0pO3ZhciBkPV9fbmNjd3Bja19yZXF1aXJlX18oODQ3KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIlNwYW5TdGF0dXNDb2RlXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZC5TcGFuU3RhdHVzQ29kZX19KTt2YXIgXz1fX25jY3dwY2tfcmVxdWlyZV9fKDQ3NSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJUcmFjZUZsYWdzXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gXy5UcmFjZUZsYWdzfX0pO3ZhciBmPV9fbmNjd3Bja19yZXF1aXJlX18oOTgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiY3JlYXRlVHJhY2VTdGF0ZVwiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGYuY3JlYXRlVHJhY2VTdGF0ZX19KTt2YXIgYj1fX25jY3dwY2tfcmVxdWlyZV9fKDEzOSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJpc1NwYW5Db250ZXh0VmFsaWRcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBiLmlzU3BhbkNvbnRleHRWYWxpZH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImlzVmFsaWRUcmFjZUlkXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYi5pc1ZhbGlkVHJhY2VJZH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImlzVmFsaWRTcGFuSWRcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBiLmlzVmFsaWRTcGFuSWR9fSk7dmFyIHY9X19uY2N3cGNrX3JlcXVpcmVfXyg0NzYpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiSU5WQUxJRF9TUEFOSURcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB2LklOVkFMSURfU1BBTklEfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiSU5WQUxJRF9UUkFDRUlEXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5JTlZBTElEX1RSQUNFSUR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJJTlZBTElEX1NQQU5fQ09OVEVYVFwiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuSU5WQUxJRF9TUEFOX0NPTlRFWFR9fSk7Y29uc3QgTz1fX25jY3dwY2tfcmVxdWlyZV9fKDY3KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImNvbnRleHRcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBPLmNvbnRleHR9fSk7Y29uc3QgUD1fX25jY3dwY2tfcmVxdWlyZV9fKDUwNik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkaWFnXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUC5kaWFnfX0pO2NvbnN0IE49X19uY2N3cGNrX3JlcXVpcmVfXyg4ODYpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwibWV0cmljc1wiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE4ubWV0cmljc319KTtjb25zdCBTPV9fbmNjd3Bja19yZXF1aXJlX18oOTM5KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcInByb3BhZ2F0aW9uXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUy5wcm9wYWdhdGlvbn19KTtjb25zdCBDPV9fbmNjd3Bja19yZXF1aXJlX18oODQ1KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcInRyYWNlXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQy50cmFjZX19KTtlW1wiZGVmYXVsdFwiXT17Y29udGV4dDpPLmNvbnRleHQsZGlhZzpQLmRpYWcsbWV0cmljczpOLm1ldHJpY3MscHJvcGFnYXRpb246Uy5wcm9wYWdhdGlvbix0cmFjZTpDLnRyYWNlfX0pKCk7bW9kdWxlLmV4cG9ydHM9cn0pKCk7Il0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/@opentelemetry/api/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/compiled/bytes/index.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/next/dist/compiled/bytes/index.js ***!
|
||
\********************************************************/
|
||
/***/ ((module) => {
|
||
|
||
eval("(()=>{\"use strict\";var e={56:e=>{\n/*!\n * bytes\n * Copyright(c) 2012-2014 TJ Holowaychuk\n * Copyright(c) 2015 Jed Watson\n * MIT Licensed\n */\ne.exports=bytes;e.exports.format=format;e.exports.parse=parse;var r=/\\B(?=(\\d{3})+(?!\\d))/g;var a=/(?:\\.0*|(\\.[^0]+)0+)$/;var t={b:1,kb:1<<10,mb:1<<20,gb:1<<30,tb:Math.pow(1024,4),pb:Math.pow(1024,5)};var i=/^((-|\\+)?(\\d+(?:\\.\\d+)?)) *(kb|mb|gb|tb|pb)$/i;function bytes(e,r){if(typeof e===\"string\"){return parse(e)}if(typeof e===\"number\"){return format(e,r)}return null}function format(e,i){if(!Number.isFinite(e)){return null}var n=Math.abs(e);var o=i&&i.thousandsSeparator||\"\";var s=i&&i.unitSeparator||\"\";var f=i&&i.decimalPlaces!==undefined?i.decimalPlaces:2;var u=Boolean(i&&i.fixedDecimals);var p=i&&i.unit||\"\";if(!p||!t[p.toLowerCase()]){if(n>=t.pb){p=\"PB\"}else if(n>=t.tb){p=\"TB\"}else if(n>=t.gb){p=\"GB\"}else if(n>=t.mb){p=\"MB\"}else if(n>=t.kb){p=\"KB\"}else{p=\"B\"}}var b=e/t[p.toLowerCase()];var l=b.toFixed(f);if(!u){l=l.replace(a,\"$1\")}if(o){l=l.split(\".\").map((function(e,a){return a===0?e.replace(r,o):e})).join(\".\")}return l+s+p}function parse(e){if(typeof e===\"number\"&&!isNaN(e)){return e}if(typeof e!==\"string\"){return null}var r=i.exec(e);var a;var n=\"b\";if(!r){a=parseInt(e,10);n=\"b\"}else{a=parseFloat(r[1]);n=r[4].toLowerCase()}return Math.floor(t[n]*a)}}};var r={};function __nccwpck_require__(a){var t=r[a];if(t!==undefined){return t.exports}var i=r[a]={exports:{}};var n=true;try{e[a](i,i.exports,__nccwpck_require__);n=false}finally{if(n)delete r[a]}return i.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var a=__nccwpck_require__(56);module.exports=a})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL2J5dGVzL2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFBLE1BQU0sYUFBYSxPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQix3QkFBd0Isc0JBQXNCLGdCQUFnQixFQUFFLFlBQVksOEJBQThCLE9BQU8sd0VBQXdFLHNEQUFzRCxvQkFBb0Isd0JBQXdCLGdCQUFnQix3QkFBd0IsbUJBQW1CLFlBQVkscUJBQXFCLHdCQUF3QixZQUFZLGtCQUFrQixrQ0FBa0MsNkJBQTZCLHVEQUF1RCxrQ0FBa0Msb0JBQW9CLDRCQUE0QixZQUFZLE9BQU8saUJBQWlCLE9BQU8saUJBQWlCLE9BQU8saUJBQWlCLE9BQU8saUJBQWlCLE9BQU8sS0FBSyxPQUFPLDJCQUEyQixtQkFBbUIsT0FBTyxvQkFBb0IsTUFBTSxrQ0FBa0MsOEJBQThCLGFBQWEsYUFBYSxrQkFBa0IsbUNBQW1DLFNBQVMsd0JBQXdCLFlBQVksZ0JBQWdCLE1BQU0sVUFBVSxPQUFPLGlCQUFpQixNQUFNLEtBQUssbUJBQW1CLHFCQUFxQiw2QkFBNkIsU0FBUyxnQ0FBZ0MsV0FBVyxrQkFBa0IsaUJBQWlCLFlBQVksWUFBWSxXQUFXLElBQUksc0NBQXNDLFFBQVEsUUFBUSxpQkFBaUIsaUJBQWlCLGlGQUFpRiw4QkFBOEIsaUJBQWlCIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jb21waWxlZC9ieXRlcy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoKCk9PntcInVzZSBzdHJpY3RcIjt2YXIgZT17NTY6ZT0+e1xuLyohXG4gKiBieXRlc1xuICogQ29weXJpZ2h0KGMpIDIwMTItMjAxNCBUSiBIb2xvd2F5Y2h1a1xuICogQ29weXJpZ2h0KGMpIDIwMTUgSmVkIFdhdHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cbmUuZXhwb3J0cz1ieXRlcztlLmV4cG9ydHMuZm9ybWF0PWZvcm1hdDtlLmV4cG9ydHMucGFyc2U9cGFyc2U7dmFyIHI9L1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2c7dmFyIGE9Lyg/OlxcLjAqfChcXC5bXjBdKykwKykkLzt2YXIgdD17YjoxLGtiOjE8PDEwLG1iOjE8PDIwLGdiOjE8PDMwLHRiOk1hdGgucG93KDEwMjQsNCkscGI6TWF0aC5wb3coMTAyNCw1KX07dmFyIGk9L14oKC18XFwrKT8oXFxkKyg/OlxcLlxcZCspPykpICooa2J8bWJ8Z2J8dGJ8cGIpJC9pO2Z1bmN0aW9uIGJ5dGVzKGUscil7aWYodHlwZW9mIGU9PT1cInN0cmluZ1wiKXtyZXR1cm4gcGFyc2UoZSl9aWYodHlwZW9mIGU9PT1cIm51bWJlclwiKXtyZXR1cm4gZm9ybWF0KGUscil9cmV0dXJuIG51bGx9ZnVuY3Rpb24gZm9ybWF0KGUsaSl7aWYoIU51bWJlci5pc0Zpbml0ZShlKSl7cmV0dXJuIG51bGx9dmFyIG49TWF0aC5hYnMoZSk7dmFyIG89aSYmaS50aG91c2FuZHNTZXBhcmF0b3J8fFwiXCI7dmFyIHM9aSYmaS51bml0U2VwYXJhdG9yfHxcIlwiO3ZhciBmPWkmJmkuZGVjaW1hbFBsYWNlcyE9PXVuZGVmaW5lZD9pLmRlY2ltYWxQbGFjZXM6Mjt2YXIgdT1Cb29sZWFuKGkmJmkuZml4ZWREZWNpbWFscyk7dmFyIHA9aSYmaS51bml0fHxcIlwiO2lmKCFwfHwhdFtwLnRvTG93ZXJDYXNlKCldKXtpZihuPj10LnBiKXtwPVwiUEJcIn1lbHNlIGlmKG4+PXQudGIpe3A9XCJUQlwifWVsc2UgaWYobj49dC5nYil7cD1cIkdCXCJ9ZWxzZSBpZihuPj10Lm1iKXtwPVwiTUJcIn1lbHNlIGlmKG4+PXQua2Ipe3A9XCJLQlwifWVsc2V7cD1cIkJcIn19dmFyIGI9ZS90W3AudG9Mb3dlckNhc2UoKV07dmFyIGw9Yi50b0ZpeGVkKGYpO2lmKCF1KXtsPWwucmVwbGFjZShhLFwiJDFcIil9aWYobyl7bD1sLnNwbGl0KFwiLlwiKS5tYXAoKGZ1bmN0aW9uKGUsYSl7cmV0dXJuIGE9PT0wP2UucmVwbGFjZShyLG8pOmV9KSkuam9pbihcIi5cIil9cmV0dXJuIGwrcytwfWZ1bmN0aW9uIHBhcnNlKGUpe2lmKHR5cGVvZiBlPT09XCJudW1iZXJcIiYmIWlzTmFOKGUpKXtyZXR1cm4gZX1pZih0eXBlb2YgZSE9PVwic3RyaW5nXCIpe3JldHVybiBudWxsfXZhciByPWkuZXhlYyhlKTt2YXIgYTt2YXIgbj1cImJcIjtpZighcil7YT1wYXJzZUludChlLDEwKTtuPVwiYlwifWVsc2V7YT1wYXJzZUZsb2F0KHJbMV0pO249cls0XS50b0xvd2VyQ2FzZSgpfXJldHVybiBNYXRoLmZsb29yKHRbbl0qYSl9fX07dmFyIHI9e307ZnVuY3Rpb24gX19uY2N3cGNrX3JlcXVpcmVfXyhhKXt2YXIgdD1yW2FdO2lmKHQhPT11bmRlZmluZWQpe3JldHVybiB0LmV4cG9ydHN9dmFyIGk9clthXT17ZXhwb3J0czp7fX07dmFyIG49dHJ1ZTt0cnl7ZVthXShpLGkuZXhwb3J0cyxfX25jY3dwY2tfcmVxdWlyZV9fKTtuPWZhbHNlfWZpbmFsbHl7aWYobilkZWxldGUgclthXX1yZXR1cm4gaS5leHBvcnRzfWlmKHR5cGVvZiBfX25jY3dwY2tfcmVxdWlyZV9fIT09XCJ1bmRlZmluZWRcIilfX25jY3dwY2tfcmVxdWlyZV9fLmFiPV9fZGlybmFtZStcIi9cIjt2YXIgYT1fX25jY3dwY2tfcmVxdWlyZV9fKDU2KTttb2R1bGUuZXhwb3J0cz1hfSkoKTsiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/bytes/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/compiled/cookie/index.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/next/dist/compiled/cookie/index.js ***!
|
||
\*********************************************************/
|
||
/***/ ((module) => {
|
||
|
||
eval("(()=>{\"use strict\";if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var e={};(()=>{var r=e;\n/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */r.parse=parse;r.serialize=serialize;var i=decodeURIComponent;var t=encodeURIComponent;var a=/; */;var n=/^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;function parse(e,r){if(typeof e!==\"string\"){throw new TypeError(\"argument str must be a string\")}var t={};var n=r||{};var o=e.split(a);var s=n.decode||i;for(var p=0;p<o.length;p++){var f=o[p];var u=f.indexOf(\"=\");if(u<0){continue}var v=f.substr(0,u).trim();var c=f.substr(++u,f.length).trim();if('\"'==c[0]){c=c.slice(1,-1)}if(undefined==t[v]){t[v]=tryDecode(c,s)}}return t}function serialize(e,r,i){var a=i||{};var o=a.encode||t;if(typeof o!==\"function\"){throw new TypeError(\"option encode is invalid\")}if(!n.test(e)){throw new TypeError(\"argument name is invalid\")}var s=o(r);if(s&&!n.test(s)){throw new TypeError(\"argument val is invalid\")}var p=e+\"=\"+s;if(null!=a.maxAge){var f=a.maxAge-0;if(isNaN(f)||!isFinite(f)){throw new TypeError(\"option maxAge is invalid\")}p+=\"; Max-Age=\"+Math.floor(f)}if(a.domain){if(!n.test(a.domain)){throw new TypeError(\"option domain is invalid\")}p+=\"; Domain=\"+a.domain}if(a.path){if(!n.test(a.path)){throw new TypeError(\"option path is invalid\")}p+=\"; Path=\"+a.path}if(a.expires){if(typeof a.expires.toUTCString!==\"function\"){throw new TypeError(\"option expires is invalid\")}p+=\"; Expires=\"+a.expires.toUTCString()}if(a.httpOnly){p+=\"; HttpOnly\"}if(a.secure){p+=\"; Secure\"}if(a.sameSite){var u=typeof a.sameSite===\"string\"?a.sameSite.toLowerCase():a.sameSite;switch(u){case true:p+=\"; SameSite=Strict\";break;case\"lax\":p+=\"; SameSite=Lax\";break;case\"strict\":p+=\"; SameSite=Strict\";break;case\"none\":p+=\"; SameSite=None\";break;default:throw new TypeError(\"option sameSite is invalid\")}}return p}function tryDecode(e,r){try{return r(e)}catch(r){return e}}})();module.exports=e})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL2Nvb2tpZS9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBQSxNQUFNLGFBQWEsaUZBQWlGLFNBQVMsTUFBTTtBQUNuSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNCQUFzQix5QkFBeUIseUJBQXlCLFNBQVMsR0FBRyw4Q0FBOEMsb0JBQW9CLHdCQUF3QixxREFBcUQsU0FBUyxZQUFZLGlCQUFpQixrQkFBa0IsWUFBWSxXQUFXLEtBQUssV0FBVyxxQkFBcUIsUUFBUSxTQUFTLDJCQUEyQixvQ0FBb0MsY0FBYyxnQkFBZ0Isb0JBQW9CLHFCQUFxQixTQUFTLDBCQUEwQixZQUFZLGtCQUFrQiwwQkFBMEIsZ0RBQWdELGVBQWUsZ0RBQWdELFdBQVcsa0JBQWtCLCtDQUErQyxjQUFjLG1CQUFtQixpQkFBaUIsMkJBQTJCLGdEQUFnRCxNQUFNLHdCQUF3QixhQUFhLHNCQUFzQixnREFBZ0QsTUFBTSxrQkFBa0IsV0FBVyxvQkFBb0IsOENBQThDLE1BQU0sY0FBYyxjQUFjLDhDQUE4QyxpREFBaUQsTUFBTSxrQ0FBa0MsZUFBZSxNQUFNLFVBQVUsYUFBYSxNQUFNLFFBQVEsZUFBZSx1RUFBdUUsVUFBVSxnQkFBZ0IsaUJBQWlCLE1BQU0sZ0JBQWdCLGNBQWMsTUFBTSxtQkFBbUIsaUJBQWlCLE1BQU0saUJBQWlCLGVBQWUsTUFBTSwyREFBMkQsU0FBUyx3QkFBd0IsSUFBSSxZQUFZLFNBQVMsV0FBVyxJQUFJLGlCQUFpQiIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvY29va2llL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIigoKT0+e1widXNlIHN0cmljdFwiO2lmKHR5cGVvZiBfX25jY3dwY2tfcmVxdWlyZV9fIT09XCJ1bmRlZmluZWRcIilfX25jY3dwY2tfcmVxdWlyZV9fLmFiPV9fZGlybmFtZStcIi9cIjt2YXIgZT17fTsoKCk9Pnt2YXIgcj1lO1xuLyohXG4gKiBjb29raWVcbiAqIENvcHlyaWdodChjKSAyMDEyLTIwMTQgUm9tYW4gU2h0eWxtYW5cbiAqIENvcHlyaWdodChjKSAyMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL3IucGFyc2U9cGFyc2U7ci5zZXJpYWxpemU9c2VyaWFsaXplO3ZhciBpPWRlY29kZVVSSUNvbXBvbmVudDt2YXIgdD1lbmNvZGVVUklDb21wb25lbnQ7dmFyIGE9LzsgKi87dmFyIG49L15bXFx1MDAwOVxcdTAwMjAtXFx1MDA3ZVxcdTAwODAtXFx1MDBmZl0rJC87ZnVuY3Rpb24gcGFyc2UoZSxyKXtpZih0eXBlb2YgZSE9PVwic3RyaW5nXCIpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJhcmd1bWVudCBzdHIgbXVzdCBiZSBhIHN0cmluZ1wiKX12YXIgdD17fTt2YXIgbj1yfHx7fTt2YXIgbz1lLnNwbGl0KGEpO3ZhciBzPW4uZGVjb2RlfHxpO2Zvcih2YXIgcD0wO3A8by5sZW5ndGg7cCsrKXt2YXIgZj1vW3BdO3ZhciB1PWYuaW5kZXhPZihcIj1cIik7aWYodTwwKXtjb250aW51ZX12YXIgdj1mLnN1YnN0cigwLHUpLnRyaW0oKTt2YXIgYz1mLnN1YnN0cigrK3UsZi5sZW5ndGgpLnRyaW0oKTtpZignXCInPT1jWzBdKXtjPWMuc2xpY2UoMSwtMSl9aWYodW5kZWZpbmVkPT10W3ZdKXt0W3ZdPXRyeURlY29kZShjLHMpfX1yZXR1cm4gdH1mdW5jdGlvbiBzZXJpYWxpemUoZSxyLGkpe3ZhciBhPWl8fHt9O3ZhciBvPWEuZW5jb2RlfHx0O2lmKHR5cGVvZiBvIT09XCJmdW5jdGlvblwiKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwib3B0aW9uIGVuY29kZSBpcyBpbnZhbGlkXCIpfWlmKCFuLnRlc3QoZSkpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJhcmd1bWVudCBuYW1lIGlzIGludmFsaWRcIil9dmFyIHM9byhyKTtpZihzJiYhbi50ZXN0KHMpKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiYXJndW1lbnQgdmFsIGlzIGludmFsaWRcIil9dmFyIHA9ZStcIj1cIitzO2lmKG51bGwhPWEubWF4QWdlKXt2YXIgZj1hLm1heEFnZS0wO2lmKGlzTmFOKGYpfHwhaXNGaW5pdGUoZikpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJvcHRpb24gbWF4QWdlIGlzIGludmFsaWRcIil9cCs9XCI7IE1heC1BZ2U9XCIrTWF0aC5mbG9vcihmKX1pZihhLmRvbWFpbil7aWYoIW4udGVzdChhLmRvbWFpbikpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJvcHRpb24gZG9tYWluIGlzIGludmFsaWRcIil9cCs9XCI7IERvbWFpbj1cIithLmRvbWFpbn1pZihhLnBhdGgpe2lmKCFuLnRlc3QoYS5wYXRoKSl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIm9wdGlvbiBwYXRoIGlzIGludmFsaWRcIil9cCs9XCI7IFBhdGg9XCIrYS5wYXRofWlmKGEuZXhwaXJlcyl7aWYodHlwZW9mIGEuZXhwaXJlcy50b1VUQ1N0cmluZyE9PVwiZnVuY3Rpb25cIil7dGhyb3cgbmV3IFR5cGVFcnJvcihcIm9wdGlvbiBleHBpcmVzIGlzIGludmFsaWRcIil9cCs9XCI7IEV4cGlyZXM9XCIrYS5leHBpcmVzLnRvVVRDU3RyaW5nKCl9aWYoYS5odHRwT25seSl7cCs9XCI7IEh0dHBPbmx5XCJ9aWYoYS5zZWN1cmUpe3ArPVwiOyBTZWN1cmVcIn1pZihhLnNhbWVTaXRlKXt2YXIgdT10eXBlb2YgYS5zYW1lU2l0ZT09PVwic3RyaW5nXCI/YS5zYW1lU2l0ZS50b0xvd2VyQ2FzZSgpOmEuc2FtZVNpdGU7c3dpdGNoKHUpe2Nhc2UgdHJ1ZTpwKz1cIjsgU2FtZVNpdGU9U3RyaWN0XCI7YnJlYWs7Y2FzZVwibGF4XCI6cCs9XCI7IFNhbWVTaXRlPUxheFwiO2JyZWFrO2Nhc2VcInN0cmljdFwiOnArPVwiOyBTYW1lU2l0ZT1TdHJpY3RcIjticmVhaztjYXNlXCJub25lXCI6cCs9XCI7IFNhbWVTaXRlPU5vbmVcIjticmVhaztkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoXCJvcHRpb24gc2FtZVNpdGUgaXMgaW52YWxpZFwiKX19cmV0dXJuIHB9ZnVuY3Rpb24gdHJ5RGVjb2RlKGUscil7dHJ5e3JldHVybiByKGUpfWNhdGNoKHIpe3JldHVybiBlfX19KSgpO21vZHVsZS5leHBvcnRzPWV9KSgpOyJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/cookie/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/compiled/fresh/index.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/next/dist/compiled/fresh/index.js ***!
|
||
\********************************************************/
|
||
/***/ ((module) => {
|
||
|
||
eval("(()=>{\"use strict\";var e={695:e=>{\n/*!\n * fresh\n * Copyright(c) 2012 TJ Holowaychuk\n * Copyright(c) 2016-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\nvar r=/(?:^|,)\\s*?no-cache\\s*?(?:,|$)/;e.exports=fresh;function fresh(e,a){var t=e[\"if-modified-since\"];var s=e[\"if-none-match\"];if(!t&&!s){return false}var i=e[\"cache-control\"];if(i&&r.test(i)){return false}if(s&&s!==\"*\"){var f=a[\"etag\"];if(!f){return false}var n=true;var u=parseTokenList(s);for(var _=0;_<u.length;_++){var o=u[_];if(o===f||o===\"W/\"+f||\"W/\"+o===f){n=false;break}}if(n){return false}}if(t){var p=a[\"last-modified\"];var v=!p||!(parseHttpDate(p)<=parseHttpDate(t));if(v){return false}}return true}function parseHttpDate(e){var r=e&&Date.parse(e);return typeof r===\"number\"?r:NaN}function parseTokenList(e){var r=0;var a=[];var t=0;for(var s=0,i=e.length;s<i;s++){switch(e.charCodeAt(s)){case 32:if(t===r){t=r=s+1}break;case 44:a.push(e.substring(t,r));t=r=s+1;break;default:r=s+1;break}}a.push(e.substring(t,r));return a}}};var r={};function __nccwpck_require__(a){var t=r[a];if(t!==undefined){return t.exports}var s=r[a]={exports:{}};var i=true;try{e[a](s,s.exports,__nccwpck_require__);i=false}finally{if(i)delete r[a]}return s.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var a=__nccwpck_require__(695);module.exports=a})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL2ZyZXNoL2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFBLE1BQU0sYUFBYSxPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxnQkFBZ0Isb0JBQW9CLDZCQUE2Qix5QkFBeUIsV0FBVyxhQUFhLHlCQUF5QixpQkFBaUIsYUFBYSxlQUFlLGdCQUFnQixPQUFPLGFBQWEsV0FBVyx3QkFBd0IsWUFBWSxXQUFXLEtBQUssV0FBVyxrQ0FBa0MsUUFBUSxPQUFPLE1BQU0sY0FBYyxNQUFNLHlCQUF5QixnREFBZ0QsTUFBTSxjQUFjLFlBQVksMEJBQTBCLHVCQUF1QixpQ0FBaUMsMkJBQTJCLFFBQVEsU0FBUyxRQUFRLHVCQUF1QixJQUFJLEtBQUssd0JBQXdCLGtCQUFrQixRQUFRLE1BQU0saUNBQWlDLFFBQVEsTUFBTSxjQUFjLE9BQU8seUJBQXlCLFlBQVksU0FBUyxnQ0FBZ0MsV0FBVyxrQkFBa0IsaUJBQWlCLFlBQVksWUFBWSxXQUFXLElBQUksc0NBQXNDLFFBQVEsUUFBUSxpQkFBaUIsaUJBQWlCLGlGQUFpRiwrQkFBK0IsaUJBQWlCIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jb21waWxlZC9mcmVzaC9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoKCk9PntcInVzZSBzdHJpY3RcIjt2YXIgZT17Njk1OmU9Pntcbi8qIVxuICogZnJlc2hcbiAqIENvcHlyaWdodChjKSAyMDEyIFRKIEhvbG93YXljaHVrXG4gKiBDb3B5cmlnaHQoYykgMjAxNi0yMDE3IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xudmFyIHI9Lyg/Ol58LClcXHMqP25vLWNhY2hlXFxzKj8oPzosfCQpLztlLmV4cG9ydHM9ZnJlc2g7ZnVuY3Rpb24gZnJlc2goZSxhKXt2YXIgdD1lW1wiaWYtbW9kaWZpZWQtc2luY2VcIl07dmFyIHM9ZVtcImlmLW5vbmUtbWF0Y2hcIl07aWYoIXQmJiFzKXtyZXR1cm4gZmFsc2V9dmFyIGk9ZVtcImNhY2hlLWNvbnRyb2xcIl07aWYoaSYmci50ZXN0KGkpKXtyZXR1cm4gZmFsc2V9aWYocyYmcyE9PVwiKlwiKXt2YXIgZj1hW1wiZXRhZ1wiXTtpZighZil7cmV0dXJuIGZhbHNlfXZhciBuPXRydWU7dmFyIHU9cGFyc2VUb2tlbkxpc3Qocyk7Zm9yKHZhciBfPTA7Xzx1Lmxlbmd0aDtfKyspe3ZhciBvPXVbX107aWYobz09PWZ8fG89PT1cIlcvXCIrZnx8XCJXL1wiK289PT1mKXtuPWZhbHNlO2JyZWFrfX1pZihuKXtyZXR1cm4gZmFsc2V9fWlmKHQpe3ZhciBwPWFbXCJsYXN0LW1vZGlmaWVkXCJdO3ZhciB2PSFwfHwhKHBhcnNlSHR0cERhdGUocCk8PXBhcnNlSHR0cERhdGUodCkpO2lmKHYpe3JldHVybiBmYWxzZX19cmV0dXJuIHRydWV9ZnVuY3Rpb24gcGFyc2VIdHRwRGF0ZShlKXt2YXIgcj1lJiZEYXRlLnBhcnNlKGUpO3JldHVybiB0eXBlb2Ygcj09PVwibnVtYmVyXCI/cjpOYU59ZnVuY3Rpb24gcGFyc2VUb2tlbkxpc3QoZSl7dmFyIHI9MDt2YXIgYT1bXTt2YXIgdD0wO2Zvcih2YXIgcz0wLGk9ZS5sZW5ndGg7czxpO3MrKyl7c3dpdGNoKGUuY2hhckNvZGVBdChzKSl7Y2FzZSAzMjppZih0PT09cil7dD1yPXMrMX1icmVhaztjYXNlIDQ0OmEucHVzaChlLnN1YnN0cmluZyh0LHIpKTt0PXI9cysxO2JyZWFrO2RlZmF1bHQ6cj1zKzE7YnJlYWt9fWEucHVzaChlLnN1YnN0cmluZyh0LHIpKTtyZXR1cm4gYX19fTt2YXIgcj17fTtmdW5jdGlvbiBfX25jY3dwY2tfcmVxdWlyZV9fKGEpe3ZhciB0PXJbYV07aWYodCE9PXVuZGVmaW5lZCl7cmV0dXJuIHQuZXhwb3J0c312YXIgcz1yW2FdPXtleHBvcnRzOnt9fTt2YXIgaT10cnVlO3RyeXtlW2FdKHMscy5leHBvcnRzLF9fbmNjd3Bja19yZXF1aXJlX18pO2k9ZmFsc2V9ZmluYWxseXtpZihpKWRlbGV0ZSByW2FdfXJldHVybiBzLmV4cG9ydHN9aWYodHlwZW9mIF9fbmNjd3Bja19yZXF1aXJlX18hPT1cInVuZGVmaW5lZFwiKV9fbmNjd3Bja19yZXF1aXJlX18uYWI9X19kaXJuYW1lK1wiL1wiO3ZhciBhPV9fbmNjd3Bja19yZXF1aXJlX18oNjk1KTttb2R1bGUuZXhwb3J0cz1hfSkoKTsiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/fresh/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.development.js":
|
||
/*!**************************************************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.development.js ***!
|
||
\**************************************************************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * @license React\n * react-server-dom-webpack-client.node.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */ \n true && function() {\n function checkEvalAvailabilityOnceDev() {\n if (!hasConfirmedEval) {\n hasConfirmedEval = !0;\n try {\n (0, eval)(\"null\");\n } catch ($jscomp$unused$catch) {\n console.error(\"eval() is not supported in this environment. This can happen if you started the Node.js process with --disallow-code-generation-from-strings, or if `eval` was patched by other means. React requires eval() in development mode for various debugging features like reconstructing callstacks from a different environment.\\nReact will never use eval() in production mode\");\n }\n }\n }\n function resolveClientReference(bundlerConfig, metadata) {\n if (bundlerConfig) {\n var moduleExports = bundlerConfig[metadata[0]];\n if (bundlerConfig = moduleExports && moduleExports[metadata[2]]) moduleExports = bundlerConfig.name;\n else {\n bundlerConfig = moduleExports && moduleExports[\"*\"];\n if (!bundlerConfig) throw Error('Could not find the module \"' + metadata[0] + '\" in the React Server Consumer Manifest. This is probably a bug in the React Server Components bundler.');\n moduleExports = metadata[2];\n }\n return 4 === metadata.length ? [\n bundlerConfig.id,\n bundlerConfig.chunks,\n moduleExports,\n 1\n ] : [\n bundlerConfig.id,\n bundlerConfig.chunks,\n moduleExports\n ];\n }\n return metadata;\n }\n function resolveServerReference(bundlerConfig, id) {\n var name = \"\", resolvedModuleData = bundlerConfig[id];\n if (resolvedModuleData) name = resolvedModuleData.name;\n else {\n var idx = id.lastIndexOf(\"#\");\n -1 !== idx && (name = id.slice(idx + 1), resolvedModuleData = bundlerConfig[id.slice(0, idx)]);\n if (!resolvedModuleData) throw Error('Could not find the module \"' + id + '\" in the React Server Manifest. This is probably a bug in the React Server Components bundler.');\n }\n return resolvedModuleData.async ? [\n resolvedModuleData.id,\n resolvedModuleData.chunks,\n name,\n 1\n ] : [\n resolvedModuleData.id,\n resolvedModuleData.chunks,\n name\n ];\n }\n function requireAsyncModule(id) {\n var promise = globalThis.__next_require__(id);\n if (\"function\" !== typeof promise.then || \"fulfilled\" === promise.status) return null;\n promise.then(function(value) {\n promise.status = \"fulfilled\";\n promise.value = value;\n }, function(reason) {\n promise.status = \"rejected\";\n promise.reason = reason;\n });\n return promise;\n }\n function ignoreReject() {}\n function preloadModule(metadata) {\n for(var chunks = metadata[1], promises = [], i = 0; i < chunks.length;){\n var chunkId = chunks[i++];\n chunks[i++];\n var entry = chunkCache.get(chunkId);\n if (void 0 === entry) {\n entry = __webpack_require__.e(chunkId);\n promises.push(entry);\n var resolve = chunkCache.set.bind(chunkCache, chunkId, null);\n entry.then(resolve, ignoreReject);\n chunkCache.set(chunkId, entry);\n } else null !== entry && promises.push(entry);\n }\n return 4 === metadata.length ? 0 === promises.length ? requireAsyncModule(metadata[0]) : Promise.all(promises).then(function() {\n return requireAsyncModule(metadata[0]);\n }) : 0 < promises.length ? Promise.all(promises) : null;\n }\n function requireModule(metadata) {\n var moduleExports = globalThis.__next_require__(metadata[0]);\n if (4 === metadata.length && \"function\" === typeof moduleExports.then) if (\"fulfilled\" === moduleExports.status) moduleExports = moduleExports.value;\n else throw moduleExports.reason;\n if (\"*\" === metadata[2]) return moduleExports;\n if (\"\" === metadata[2]) return moduleExports.__esModule ? moduleExports.default : moduleExports;\n if (hasOwnProperty.call(moduleExports, metadata[2])) return moduleExports[metadata[2]];\n }\n function prepareDestinationWithChunks(moduleLoading, chunks, nonce$jscomp$0) {\n if (null !== moduleLoading) for(var i = 1; i < chunks.length; i += 2){\n var nonce = nonce$jscomp$0, JSCompiler_temp_const = ReactDOMSharedInternals.d, JSCompiler_temp_const$jscomp$0 = JSCompiler_temp_const.X, JSCompiler_temp_const$jscomp$1 = moduleLoading.prefix + chunks[i];\n var JSCompiler_inline_result = moduleLoading.crossOrigin;\n JSCompiler_inline_result = \"string\" === typeof JSCompiler_inline_result ? \"use-credentials\" === JSCompiler_inline_result ? JSCompiler_inline_result : \"\" : void 0;\n JSCompiler_temp_const$jscomp$0.call(JSCompiler_temp_const, JSCompiler_temp_const$jscomp$1, {\n crossOrigin: JSCompiler_inline_result,\n nonce: nonce\n });\n }\n }\n function getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n }\n function isObjectPrototype(object) {\n if (!object) return !1;\n var ObjectPrototype = Object.prototype;\n if (object === ObjectPrototype) return !0;\n if (getPrototypeOf(object)) return !1;\n object = Object.getOwnPropertyNames(object);\n for(var i = 0; i < object.length; i++)if (!(object[i] in ObjectPrototype)) return !1;\n return !0;\n }\n function isSimpleObject(object) {\n if (!isObjectPrototype(getPrototypeOf(object))) return !1;\n for(var names = Object.getOwnPropertyNames(object), i = 0; i < names.length; i++){\n var descriptor = Object.getOwnPropertyDescriptor(object, names[i]);\n if (!descriptor || !descriptor.enumerable && (\"key\" !== names[i] && \"ref\" !== names[i] || \"function\" !== typeof descriptor.get)) return !1;\n }\n return !0;\n }\n function objectName(object) {\n object = Object.prototype.toString.call(object);\n return object.slice(8, object.length - 1);\n }\n function describeKeyForErrorMessage(key) {\n var encodedKey = JSON.stringify(key);\n return '\"' + key + '\"' === encodedKey ? key : encodedKey;\n }\n function describeValueForErrorMessage(value) {\n switch(typeof value){\n case \"string\":\n return JSON.stringify(10 >= value.length ? value : value.slice(0, 10) + \"...\");\n case \"object\":\n if (isArrayImpl(value)) return \"[...]\";\n if (null !== value && value.$$typeof === CLIENT_REFERENCE_TAG) return \"client\";\n value = objectName(value);\n return \"Object\" === value ? \"{...}\" : value;\n case \"function\":\n return value.$$typeof === CLIENT_REFERENCE_TAG ? \"client\" : (value = value.displayName || value.name) ? \"function \" + value : \"function\";\n default:\n return String(value);\n }\n }\n function describeElementType(type) {\n if (\"string\" === typeof type) return type;\n switch(type){\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_VIEW_TRANSITION_TYPE:\n return \"ViewTransition\";\n }\n if (\"object\" === typeof type) switch(type.$$typeof){\n case REACT_FORWARD_REF_TYPE:\n return describeElementType(type.render);\n case REACT_MEMO_TYPE:\n return describeElementType(type.type);\n case REACT_LAZY_TYPE:\n var payload = type._payload;\n type = type._init;\n try {\n return describeElementType(type(payload));\n } catch (x) {}\n }\n return \"\";\n }\n function describeObjectForErrorMessage(objectOrArray, expandedName) {\n var objKind = objectName(objectOrArray);\n if (\"Object\" !== objKind && \"Array\" !== objKind) return objKind;\n var start = -1, length = 0;\n if (isArrayImpl(objectOrArray)) if (jsxChildrenParents.has(objectOrArray)) {\n var type = jsxChildrenParents.get(objectOrArray);\n objKind = \"<\" + describeElementType(type) + \">\";\n for(var i = 0; i < objectOrArray.length; i++){\n var value = objectOrArray[i];\n value = \"string\" === typeof value ? value : \"object\" === typeof value && null !== value ? \"{\" + describeObjectForErrorMessage(value) + \"}\" : \"{\" + describeValueForErrorMessage(value) + \"}\";\n \"\" + i === expandedName ? (start = objKind.length, length = value.length, objKind += value) : objKind = 15 > value.length && 40 > objKind.length + value.length ? objKind + value : objKind + \"{...}\";\n }\n objKind += \"</\" + describeElementType(type) + \">\";\n } else {\n objKind = \"[\";\n for(type = 0; type < objectOrArray.length; type++)0 < type && (objKind += \", \"), i = objectOrArray[type], i = \"object\" === typeof i && null !== i ? describeObjectForErrorMessage(i) : describeValueForErrorMessage(i), \"\" + type === expandedName ? (start = objKind.length, length = i.length, objKind += i) : objKind = 10 > i.length && 40 > objKind.length + i.length ? objKind + i : objKind + \"...\";\n objKind += \"]\";\n }\n else if (objectOrArray.$$typeof === REACT_ELEMENT_TYPE) objKind = \"<\" + describeElementType(objectOrArray.type) + \"/>\";\n else {\n if (objectOrArray.$$typeof === CLIENT_REFERENCE_TAG) return \"client\";\n if (jsxPropsParents.has(objectOrArray)) {\n objKind = jsxPropsParents.get(objectOrArray);\n objKind = \"<\" + (describeElementType(objKind) || \"...\");\n type = Object.keys(objectOrArray);\n for(i = 0; i < type.length; i++){\n objKind += \" \";\n value = type[i];\n objKind += describeKeyForErrorMessage(value) + \"=\";\n var _value2 = objectOrArray[value];\n var _substr2 = value === expandedName && \"object\" === typeof _value2 && null !== _value2 ? describeObjectForErrorMessage(_value2) : describeValueForErrorMessage(_value2);\n \"string\" !== typeof _value2 && (_substr2 = \"{\" + _substr2 + \"}\");\n value === expandedName ? (start = objKind.length, length = _substr2.length, objKind += _substr2) : objKind = 10 > _substr2.length && 40 > objKind.length + _substr2.length ? objKind + _substr2 : objKind + \"...\";\n }\n objKind += \">\";\n } else {\n objKind = \"{\";\n type = Object.keys(objectOrArray);\n for(i = 0; i < type.length; i++)0 < i && (objKind += \", \"), value = type[i], objKind += describeKeyForErrorMessage(value) + \": \", _value2 = objectOrArray[value], _value2 = \"object\" === typeof _value2 && null !== _value2 ? describeObjectForErrorMessage(_value2) : describeValueForErrorMessage(_value2), value === expandedName ? (start = objKind.length, length = _value2.length, objKind += _value2) : objKind = 10 > _value2.length && 40 > objKind.length + _value2.length ? objKind + _value2 : objKind + \"...\";\n objKind += \"}\";\n }\n }\n return void 0 === expandedName ? objKind : -1 < start && 0 < length ? (objectOrArray = \" \".repeat(start) + \"^\".repeat(length), \"\\n \" + objKind + \"\\n \" + objectOrArray) : \"\\n \" + objKind;\n }\n function serializeNumber(number) {\n return Number.isFinite(number) ? 0 === number && -Infinity === 1 / number ? \"$-0\" : number : Infinity === number ? \"$Infinity\" : -Infinity === number ? \"$-Infinity\" : \"$NaN\";\n }\n function processReply(root, formFieldPrefix, temporaryReferences, resolve, reject) {\n function serializeTypedArray(tag, typedArray) {\n typedArray = new Blob([\n new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength)\n ]);\n var blobId = nextPartId++;\n null === formData && (formData = new FormData());\n formData.append(formFieldPrefix + blobId, typedArray);\n return \"$\" + tag + blobId.toString(16);\n }\n function serializeBinaryReader(reader) {\n function progress(entry) {\n entry.done ? (entry = nextPartId++, data.append(formFieldPrefix + entry, new Blob(buffer)), data.append(formFieldPrefix + streamId, '\"$o' + entry.toString(16) + '\"'), data.append(formFieldPrefix + streamId, \"C\"), pendingParts--, 0 === pendingParts && resolve(data)) : (buffer.push(entry.value), reader.read(new Uint8Array(1024)).then(progress, reject));\n }\n null === formData && (formData = new FormData());\n var data = formData;\n pendingParts++;\n var streamId = nextPartId++, buffer = [];\n reader.read(new Uint8Array(1024)).then(progress, reject);\n return \"$r\" + streamId.toString(16);\n }\n function serializeReader(reader) {\n function progress(entry) {\n if (entry.done) data.append(formFieldPrefix + streamId, \"C\"), pendingParts--, 0 === pendingParts && resolve(data);\n else try {\n var partJSON = JSON.stringify(entry.value, resolveToJSON);\n data.append(formFieldPrefix + streamId, partJSON);\n reader.read().then(progress, reject);\n } catch (x) {\n reject(x);\n }\n }\n null === formData && (formData = new FormData());\n var data = formData;\n pendingParts++;\n var streamId = nextPartId++;\n reader.read().then(progress, reject);\n return \"$R\" + streamId.toString(16);\n }\n function serializeReadableStream(stream) {\n try {\n var binaryReader = stream.getReader({\n mode: \"byob\"\n });\n } catch (x) {\n return serializeReader(stream.getReader());\n }\n return serializeBinaryReader(binaryReader);\n }\n function serializeAsyncIterable(iterable, iterator) {\n function progress(entry) {\n if (entry.done) {\n if (void 0 === entry.value) data.append(formFieldPrefix + streamId, \"C\");\n else try {\n var partJSON = JSON.stringify(entry.value, resolveToJSON);\n data.append(formFieldPrefix + streamId, \"C\" + partJSON);\n } catch (x) {\n reject(x);\n return;\n }\n pendingParts--;\n 0 === pendingParts && resolve(data);\n } else try {\n var _partJSON = JSON.stringify(entry.value, resolveToJSON);\n data.append(formFieldPrefix + streamId, _partJSON);\n iterator.next().then(progress, reject);\n } catch (x$0) {\n reject(x$0);\n }\n }\n null === formData && (formData = new FormData());\n var data = formData;\n pendingParts++;\n var streamId = nextPartId++;\n iterable = iterable === iterator;\n iterator.next().then(progress, reject);\n return \"$\" + (iterable ? \"x\" : \"X\") + streamId.toString(16);\n }\n function resolveToJSON(key, value) {\n \"__proto__\" === key && console.error(\"Expected not to serialize an object with own property `__proto__`. When parsed this property will be omitted.%s\", describeObjectForErrorMessage(this, key));\n var originalValue = this[key];\n \"object\" !== typeof originalValue || originalValue === value || originalValue instanceof Date || (\"Object\" !== objectName(originalValue) ? console.error(\"Only plain objects can be passed to Server Functions from the Client. %s objects are not supported.%s\", objectName(originalValue), describeObjectForErrorMessage(this, key)) : console.error(\"Only plain objects can be passed to Server Functions from the Client. Objects with toJSON methods are not supported. Convert it manually to a simple value before passing it to props.%s\", describeObjectForErrorMessage(this, key)));\n if (null === value) return null;\n if (\"object\" === typeof value) {\n switch(value.$$typeof){\n case REACT_ELEMENT_TYPE:\n if (void 0 !== temporaryReferences && -1 === key.indexOf(\":\")) {\n var parentReference = writtenObjects.get(this);\n if (void 0 !== parentReference) return temporaryReferences.set(parentReference + \":\" + key, value), \"$T\";\n }\n if (void 0 !== temporaryReferences && modelRoot === value) return modelRoot = null, \"$T\";\n throw Error(\"React Element cannot be passed to Server Functions from the Client without a temporary reference set. Pass a TemporaryReferenceSet to the options.\" + describeObjectForErrorMessage(this, key));\n case REACT_LAZY_TYPE:\n originalValue = value._payload;\n var init = value._init;\n null === formData && (formData = new FormData());\n pendingParts++;\n try {\n parentReference = init(originalValue);\n var lazyId = nextPartId++, partJSON = serializeModel(parentReference, lazyId);\n formData.append(formFieldPrefix + lazyId, partJSON);\n return \"$\" + lazyId.toString(16);\n } catch (x) {\n if (\"object\" === typeof x && null !== x && \"function\" === typeof x.then) {\n pendingParts++;\n var _lazyId = nextPartId++;\n parentReference = function() {\n try {\n var _partJSON2 = serializeModel(value, _lazyId), _data = formData;\n _data.append(formFieldPrefix + _lazyId, _partJSON2);\n pendingParts--;\n 0 === pendingParts && resolve(_data);\n } catch (reason) {\n reject(reason);\n }\n };\n x.then(parentReference, parentReference);\n return \"$\" + _lazyId.toString(16);\n }\n reject(x);\n return null;\n } finally{\n pendingParts--;\n }\n }\n parentReference = writtenObjects.get(value);\n if (\"function\" === typeof value.then) {\n if (void 0 !== parentReference) if (modelRoot === value) modelRoot = null;\n else return parentReference;\n null === formData && (formData = new FormData());\n pendingParts++;\n var promiseId = nextPartId++;\n key = \"$@\" + promiseId.toString(16);\n writtenObjects.set(value, key);\n value.then(function(partValue) {\n try {\n var previousReference = writtenObjects.get(partValue);\n var _partJSON3 = void 0 !== previousReference ? JSON.stringify(previousReference) : serializeModel(partValue, promiseId);\n partValue = formData;\n partValue.append(formFieldPrefix + promiseId, _partJSON3);\n pendingParts--;\n 0 === pendingParts && resolve(partValue);\n } catch (reason) {\n reject(reason);\n }\n }, reject);\n return key;\n }\n if (void 0 !== parentReference) if (modelRoot === value) modelRoot = null;\n else return parentReference;\n else -1 === key.indexOf(\":\") && (parentReference = writtenObjects.get(this), void 0 !== parentReference && (parentReference = parentReference + \":\" + key, writtenObjects.set(value, parentReference), void 0 !== temporaryReferences && temporaryReferences.set(parentReference, value)));\n if (isArrayImpl(value)) return value;\n if (value instanceof FormData) {\n null === formData && (formData = new FormData());\n var _data3 = formData;\n key = nextPartId++;\n var prefix = formFieldPrefix + key + \"_\";\n value.forEach(function(originalValue, originalKey) {\n _data3.append(prefix + originalKey, originalValue);\n });\n return \"$K\" + key.toString(16);\n }\n if (value instanceof Map) return key = nextPartId++, parentReference = serializeModel(Array.from(value), key), null === formData && (formData = new FormData()), formData.append(formFieldPrefix + key, parentReference), \"$Q\" + key.toString(16);\n if (value instanceof Set) return key = nextPartId++, parentReference = serializeModel(Array.from(value), key), null === formData && (formData = new FormData()), formData.append(formFieldPrefix + key, parentReference), \"$W\" + key.toString(16);\n if (value instanceof ArrayBuffer) return key = new Blob([\n value\n ]), parentReference = nextPartId++, null === formData && (formData = new FormData()), formData.append(formFieldPrefix + parentReference, key), \"$A\" + parentReference.toString(16);\n if (value instanceof Int8Array) return serializeTypedArray(\"O\", value);\n if (value instanceof Uint8Array) return serializeTypedArray(\"o\", value);\n if (value instanceof Uint8ClampedArray) return serializeTypedArray(\"U\", value);\n if (value instanceof Int16Array) return serializeTypedArray(\"S\", value);\n if (value instanceof Uint16Array) return serializeTypedArray(\"s\", value);\n if (value instanceof Int32Array) return serializeTypedArray(\"L\", value);\n if (value instanceof Uint32Array) return serializeTypedArray(\"l\", value);\n if (value instanceof Float32Array) return serializeTypedArray(\"G\", value);\n if (value instanceof Float64Array) return serializeTypedArray(\"g\", value);\n if (value instanceof BigInt64Array) return serializeTypedArray(\"M\", value);\n if (value instanceof BigUint64Array) return serializeTypedArray(\"m\", value);\n if (value instanceof DataView) return serializeTypedArray(\"V\", value);\n if (\"function\" === typeof Blob && value instanceof Blob) return null === formData && (formData = new FormData()), key = nextPartId++, formData.append(formFieldPrefix + key, value), \"$B\" + key.toString(16);\n if (parentReference = getIteratorFn(value)) return parentReference = parentReference.call(value), parentReference === value ? (key = nextPartId++, parentReference = serializeModel(Array.from(parentReference), key), null === formData && (formData = new FormData()), formData.append(formFieldPrefix + key, parentReference), \"$i\" + key.toString(16)) : Array.from(parentReference);\n if (\"function\" === typeof ReadableStream && value instanceof ReadableStream) return serializeReadableStream(value);\n parentReference = value[ASYNC_ITERATOR];\n if (\"function\" === typeof parentReference) return serializeAsyncIterable(value, parentReference.call(value));\n parentReference = getPrototypeOf(value);\n if (parentReference !== ObjectPrototype && (null === parentReference || null !== getPrototypeOf(parentReference))) {\n if (void 0 === temporaryReferences) throw Error(\"Only plain objects, and a few built-ins, can be passed to Server Functions. Classes or null prototypes are not supported.\" + describeObjectForErrorMessage(this, key));\n return \"$T\";\n }\n value.$$typeof === REACT_CONTEXT_TYPE ? console.error(\"React Context Providers cannot be passed to Server Functions from the Client.%s\", describeObjectForErrorMessage(this, key)) : \"Object\" !== objectName(value) ? console.error(\"Only plain objects can be passed to Server Functions from the Client. %s objects are not supported.%s\", objectName(value), describeObjectForErrorMessage(this, key)) : isSimpleObject(value) ? Object.getOwnPropertySymbols && (parentReference = Object.getOwnPropertySymbols(value), 0 < parentReference.length && console.error(\"Only plain objects can be passed to Server Functions from the Client. Objects with symbol properties like %s are not supported.%s\", parentReference[0].description, describeObjectForErrorMessage(this, key))) : console.error(\"Only plain objects can be passed to Server Functions from the Client. Classes or other objects with methods are not supported.%s\", describeObjectForErrorMessage(this, key));\n return value;\n }\n if (\"string\" === typeof value) {\n if (\"Z\" === value[value.length - 1] && this[key] instanceof Date) return \"$D\" + value;\n key = \"$\" === value[0] ? \"$\" + value : value;\n return key;\n }\n if (\"boolean\" === typeof value) return value;\n if (\"number\" === typeof value) return serializeNumber(value);\n if (\"undefined\" === typeof value) return \"$undefined\";\n if (\"function\" === typeof value) {\n parentReference = knownServerReferences.get(value);\n if (void 0 !== parentReference) {\n key = writtenObjects.get(value);\n if (void 0 !== key) return key;\n key = JSON.stringify({\n id: parentReference.id,\n bound: parentReference.bound\n }, resolveToJSON);\n null === formData && (formData = new FormData());\n parentReference = nextPartId++;\n formData.set(formFieldPrefix + parentReference, key);\n key = \"$h\" + parentReference.toString(16);\n writtenObjects.set(value, key);\n return key;\n }\n if (void 0 !== temporaryReferences && -1 === key.indexOf(\":\") && (parentReference = writtenObjects.get(this), void 0 !== parentReference)) return temporaryReferences.set(parentReference + \":\" + key, value), \"$T\";\n throw Error(\"Client Functions cannot be passed directly to Server Functions. Only Functions passed from the Server can be passed back again.\");\n }\n if (\"symbol\" === typeof value) {\n if (void 0 !== temporaryReferences && -1 === key.indexOf(\":\") && (parentReference = writtenObjects.get(this), void 0 !== parentReference)) return temporaryReferences.set(parentReference + \":\" + key, value), \"$T\";\n throw Error(\"Symbols cannot be passed to a Server Function without a temporary reference set. Pass a TemporaryReferenceSet to the options.\" + describeObjectForErrorMessage(this, key));\n }\n if (\"bigint\" === typeof value) return \"$n\" + value.toString(10);\n throw Error(\"Type \" + typeof value + \" is not supported as an argument to a Server Function.\");\n }\n function serializeModel(model, id) {\n \"object\" === typeof model && null !== model && (id = \"$\" + id.toString(16), writtenObjects.set(model, id), void 0 !== temporaryReferences && temporaryReferences.set(id, model));\n modelRoot = model;\n return JSON.stringify(model, resolveToJSON);\n }\n var nextPartId = 1, pendingParts = 0, formData = null, writtenObjects = new WeakMap(), modelRoot = root;\n checkEvalAvailabilityOnceDev();\n var json = serializeModel(root, 0);\n null === formData ? resolve(json) : (formData.set(formFieldPrefix + \"0\", json), 0 === pendingParts && resolve(formData));\n return function() {\n 0 < pendingParts && (pendingParts = 0, null === formData ? resolve(json) : resolve(formData));\n };\n }\n function encodeFormData(reference) {\n var resolve, reject, thenable = new Promise(function(res, rej) {\n resolve = res;\n reject = rej;\n });\n processReply(reference, \"\", void 0, function(body) {\n if (\"string\" === typeof body) {\n var data = new FormData();\n data.append(\"0\", body);\n body = data;\n }\n thenable.status = \"fulfilled\";\n thenable.value = body;\n resolve(body);\n }, function(e) {\n thenable.status = \"rejected\";\n thenable.reason = e;\n reject(e);\n });\n return thenable;\n }\n function defaultEncodeFormAction(identifierPrefix) {\n var referenceClosure = knownServerReferences.get(this);\n if (!referenceClosure) throw Error(\"Tried to encode a Server Action from a different instance than the encoder is from. This is a bug in React.\");\n var data = null;\n if (null !== referenceClosure.bound) {\n data = boundCache.get(referenceClosure);\n data || (data = encodeFormData({\n id: referenceClosure.id,\n bound: referenceClosure.bound\n }), boundCache.set(referenceClosure, data));\n if (\"rejected\" === data.status) throw data.reason;\n if (\"fulfilled\" !== data.status) throw data;\n referenceClosure = data.value;\n var prefixedData = new FormData();\n referenceClosure.forEach(function(value, key) {\n prefixedData.append(\"$ACTION_\" + identifierPrefix + \":\" + key, value);\n });\n data = prefixedData;\n referenceClosure = \"$ACTION_REF_\" + identifierPrefix;\n } else referenceClosure = \"$ACTION_ID_\" + referenceClosure.id;\n return {\n name: referenceClosure,\n method: \"POST\",\n encType: \"multipart/form-data\",\n data: data\n };\n }\n function isSignatureEqual(referenceId, numberOfBoundArgs) {\n var referenceClosure = knownServerReferences.get(this);\n if (!referenceClosure) throw Error(\"Tried to encode a Server Action from a different instance than the encoder is from. This is a bug in React.\");\n if (referenceClosure.id !== referenceId) return !1;\n var boundPromise = referenceClosure.bound;\n if (null === boundPromise) return 0 === numberOfBoundArgs;\n switch(boundPromise.status){\n case \"fulfilled\":\n return boundPromise.value.length === numberOfBoundArgs;\n case \"pending\":\n throw boundPromise;\n case \"rejected\":\n throw boundPromise.reason;\n default:\n throw \"string\" !== typeof boundPromise.status && (boundPromise.status = \"pending\", boundPromise.then(function(boundArgs) {\n boundPromise.status = \"fulfilled\";\n boundPromise.value = boundArgs;\n }, function(error) {\n boundPromise.status = \"rejected\";\n boundPromise.reason = error;\n })), boundPromise;\n }\n }\n function createFakeServerFunction(name, filename, sourceMap, line, col, environmentName, innerFunction) {\n name || (name = \"<anonymous>\");\n var encodedName = JSON.stringify(name);\n 1 >= line ? (line = encodedName.length + 7, col = \"s=>({\" + encodedName + \" \".repeat(col < line ? 0 : col - line) + \":(...args) => s(...args)})\\n/* This module is a proxy to a Server Action. Turn on Source Maps to see the server source. */\") : col = \"/* This module is a proxy to a Server Action. Turn on Source Maps to see the server source. */\" + \"\\n\".repeat(line - 2) + \"server=>({\" + encodedName + \":\\n\" + \" \".repeat(1 > col ? 0 : col - 1) + \"(...args) => server(...args)})\";\n filename.startsWith(\"/\") && (filename = \"file://\" + filename);\n sourceMap ? (col += \"\\n//# sourceURL=about://React/\" + encodeURIComponent(environmentName) + \"/\" + encodeURI(filename) + \"?s\" + fakeServerFunctionIdx++, col += \"\\n//# sourceMappingURL=\" + sourceMap) : filename && (col += \"\\n//# sourceURL=\" + filename);\n try {\n return (0, eval)(col)(innerFunction)[name];\n } catch (x) {\n return innerFunction;\n }\n }\n function registerBoundServerReference(reference, id, bound, encodeFormAction) {\n knownServerReferences.has(reference) || (knownServerReferences.set(reference, {\n id: id,\n originalBind: reference.bind,\n bound: bound\n }), Object.defineProperties(reference, {\n $$FORM_ACTION: {\n value: void 0 === encodeFormAction ? defaultEncodeFormAction : function() {\n var referenceClosure = knownServerReferences.get(this);\n if (!referenceClosure) throw Error(\"Tried to encode a Server Action from a different instance than the encoder is from. This is a bug in React.\");\n var boundPromise = referenceClosure.bound;\n null === boundPromise && (boundPromise = Promise.resolve([]));\n return encodeFormAction(referenceClosure.id, boundPromise);\n }\n },\n $$IS_SIGNATURE_EQUAL: {\n value: isSignatureEqual\n },\n bind: {\n value: bind\n }\n }));\n }\n function bind() {\n var referenceClosure = knownServerReferences.get(this);\n if (!referenceClosure) return FunctionBind.apply(this, arguments);\n var newFn = referenceClosure.originalBind.apply(this, arguments);\n null != arguments[0] && console.error('Cannot bind \"this\" of a Server Action. Pass null or undefined as the first argument to .bind().');\n var args = ArraySlice.call(arguments, 1), boundPromise = null;\n boundPromise = null !== referenceClosure.bound ? Promise.resolve(referenceClosure.bound).then(function(boundArgs) {\n return boundArgs.concat(args);\n }) : Promise.resolve(args);\n knownServerReferences.set(newFn, {\n id: referenceClosure.id,\n originalBind: newFn.bind,\n bound: boundPromise\n });\n Object.defineProperties(newFn, {\n $$FORM_ACTION: {\n value: this.$$FORM_ACTION\n },\n $$IS_SIGNATURE_EQUAL: {\n value: isSignatureEqual\n },\n bind: {\n value: bind\n }\n });\n return newFn;\n }\n function createBoundServerReference(metaData, callServer, encodeFormAction, findSourceMapURL) {\n function action() {\n var args = Array.prototype.slice.call(arguments);\n return bound ? \"fulfilled\" === bound.status ? callServer(id, bound.value.concat(args)) : Promise.resolve(bound).then(function(boundArgs) {\n return callServer(id, boundArgs.concat(args));\n }) : callServer(id, args);\n }\n var id = metaData.id, bound = metaData.bound, location = metaData.location;\n if (location) {\n var functionName = metaData.name || \"\", filename = location[1], line = location[2];\n location = location[3];\n metaData = metaData.env || \"Server\";\n findSourceMapURL = null == findSourceMapURL ? null : findSourceMapURL(filename, metaData);\n action = createFakeServerFunction(functionName, filename, findSourceMapURL, line, location, metaData, action);\n }\n registerBoundServerReference(action, id, bound, encodeFormAction);\n return action;\n }\n function parseStackLocation(error) {\n error = error.stack;\n error.startsWith(\"Error: react-stack-top-frame\\n\") && (error = error.slice(29));\n var endOfFirst = error.indexOf(\"\\n\");\n if (-1 !== endOfFirst) {\n var endOfSecond = error.indexOf(\"\\n\", endOfFirst + 1);\n endOfFirst = -1 === endOfSecond ? error.slice(endOfFirst + 1) : error.slice(endOfFirst + 1, endOfSecond);\n } else endOfFirst = error;\n error = v8FrameRegExp.exec(endOfFirst);\n if (!error && (error = jscSpiderMonkeyFrameRegExp.exec(endOfFirst), !error)) return null;\n endOfFirst = error[1] || \"\";\n \"<anonymous>\" === endOfFirst && (endOfFirst = \"\");\n endOfSecond = error[2] || error[5] || \"\";\n \"<anonymous>\" === endOfSecond && (endOfSecond = \"\");\n return [\n endOfFirst,\n endOfSecond,\n +(error[3] || error[6]),\n +(error[4] || error[7])\n ];\n }\n function createServerReference$1(id, callServer, encodeFormAction, findSourceMapURL, functionName) {\n function action() {\n var args = Array.prototype.slice.call(arguments);\n return callServer(id, args);\n }\n var location = parseStackLocation(Error(\"react-stack-top-frame\"));\n if (null !== location) {\n var filename = location[1], line = location[2];\n location = location[3];\n findSourceMapURL = null == findSourceMapURL ? null : findSourceMapURL(filename, \"Client\");\n action = createFakeServerFunction(functionName || \"\", filename, findSourceMapURL, line, location, \"Client\", action);\n }\n registerBoundServerReference(action, id, null, encodeFormAction);\n return action;\n }\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type) return type.$$typeof === REACT_CLIENT_REFERENCE ? null : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch(type){\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n case REACT_VIEW_TRANSITION_TYPE:\n return \"ViewTransition\";\n }\n if (\"object\" === typeof type) switch(\"number\" === typeof type.tag && console.error(\"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"), type.$$typeof){\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type || (type = innerType.displayName || innerType.name || \"\", type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\");\n return type;\n case REACT_MEMO_TYPE:\n return innerType = type.displayName || null, null !== innerType ? innerType : getComponentNameFromType(type.type) || \"Memo\";\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function getArrayKind(array) {\n for(var kind = 0, i = 0; i < array.length && 100 > i; i++){\n var value = array[i];\n if (\"object\" === typeof value && null !== value) if (isArrayImpl(value) && 2 === value.length && \"string\" === typeof value[0]) {\n if (0 !== kind && 3 !== kind) return 1;\n kind = 3;\n } else return 1;\n else {\n if (\"function\" === typeof value || \"string\" === typeof value && 50 < value.length || 0 !== kind && 2 !== kind || \"bigint\" === typeof value) return 1;\n kind = 2;\n }\n }\n return kind;\n }\n function addObjectToProperties(object, properties, indent, prefix) {\n var addedProperties = 0, key;\n for(key in object)if (hasOwnProperty.call(object, key) && \"_\" !== key[0] && (addedProperties++, addValueToProperties(key, object[key], properties, indent, prefix), 100 <= addedProperties)) {\n properties.push([\n prefix + \"\\u00a0\\u00a0\".repeat(indent) + \"Only 100 properties are shown. React will not log more properties of this object.\",\n \"\"\n ]);\n break;\n }\n }\n function addValueToProperties(propertyName, value, properties, indent, prefix) {\n switch(typeof value){\n case \"object\":\n if (null === value) {\n value = \"null\";\n break;\n } else {\n if ((\"$$typeof\" in value && hasOwnProperty.call(value, \"$$typeof\") ? value.$$typeof : void 0) === REACT_ELEMENT_TYPE) {\n var typeName = getComponentNameFromType(value.type) || \"\\u2026\", key = value.key;\n value = value.props;\n var propsKeys = Object.keys(value), propsLength = propsKeys.length;\n if (null == key && 0 === propsLength) {\n value = \"<\" + typeName + \" />\";\n break;\n }\n if (3 > indent || 1 === propsLength && \"children\" === propsKeys[0] && null == key) {\n value = \"<\" + typeName + \" \\u2026 />\";\n break;\n }\n properties.push([\n prefix + \"\\u00a0\\u00a0\".repeat(indent) + propertyName,\n \"<\" + typeName\n ]);\n null !== key && addValueToProperties(\"key\", key, properties, indent + 1, prefix);\n propertyName = !1;\n key = 0;\n for(var propKey in value)if (key++, \"children\" === propKey ? null != value.children && (!isArrayImpl(value.children) || 0 < value.children.length) && (propertyName = !0) : hasOwnProperty.call(value, propKey) && \"_\" !== propKey[0] && addValueToProperties(propKey, value[propKey], properties, indent + 1, prefix), 100 <= key) break;\n properties.push([\n \"\",\n propertyName ? \">\\u2026</\" + typeName + \">\" : \"/>\"\n ]);\n return;\n }\n typeName = Object.prototype.toString.call(value);\n propKey = typeName.slice(8, typeName.length - 1);\n if (\"Array\" === propKey) {\n if (typeName = 100 < value.length, key = getArrayKind(value), 2 === key || 0 === key) {\n value = JSON.stringify(typeName ? value.slice(0, 100).concat(\"\\u2026\") : value);\n break;\n } else if (3 === key) {\n properties.push([\n prefix + \"\\u00a0\\u00a0\".repeat(indent) + propertyName,\n \"\"\n ]);\n for(propertyName = 0; propertyName < value.length && 100 > propertyName; propertyName++)propKey = value[propertyName], addValueToProperties(propKey[0], propKey[1], properties, indent + 1, prefix);\n typeName && addValueToProperties(100..toString(), \"\\u2026\", properties, indent + 1, prefix);\n return;\n }\n }\n if (\"Promise\" === propKey) {\n if (\"fulfilled\" === value.status) {\n if (typeName = properties.length, addValueToProperties(propertyName, value.value, properties, indent, prefix), properties.length > typeName) {\n properties = properties[typeName];\n properties[1] = \"Promise<\" + (properties[1] || \"Object\") + \">\";\n return;\n }\n } else if (\"rejected\" === value.status && (typeName = properties.length, addValueToProperties(propertyName, value.reason, properties, indent, prefix), properties.length > typeName)) {\n properties = properties[typeName];\n properties[1] = \"Rejected Promise<\" + properties[1] + \">\";\n return;\n }\n properties.push([\n \"\\u00a0\\u00a0\".repeat(indent) + propertyName,\n \"Promise\"\n ]);\n return;\n }\n \"Object\" === propKey && (typeName = Object.getPrototypeOf(value)) && \"function\" === typeof typeName.constructor && (propKey = typeName.constructor.name);\n properties.push([\n prefix + \"\\u00a0\\u00a0\".repeat(indent) + propertyName,\n \"Object\" === propKey ? 3 > indent ? \"\" : \"\\u2026\" : propKey\n ]);\n 3 > indent && addObjectToProperties(value, properties, indent + 1, prefix);\n return;\n }\n case \"function\":\n value = value.name;\n value = \"\" === value || \"string\" !== typeof value ? \"() => {}\" : value + \"() {}\";\n break;\n case \"string\":\n value = \"This object has been omitted by React in the console log to avoid sending too much data from the server. Try logging smaller or more specific objects.\" === value ? \"\\u2026\" : JSON.stringify(value);\n break;\n case \"undefined\":\n value = \"undefined\";\n break;\n case \"boolean\":\n value = value ? \"true\" : \"false\";\n break;\n default:\n value = String(value);\n }\n properties.push([\n prefix + \"\\u00a0\\u00a0\".repeat(indent) + propertyName,\n value\n ]);\n }\n function getIODescription(value) {\n try {\n switch(typeof value){\n case \"function\":\n return value.name || \"\";\n case \"object\":\n if (null === value) return \"\";\n if (value instanceof Error) return String(value.message);\n if (\"string\" === typeof value.url) return value.url;\n if (\"string\" === typeof value.href) return value.href;\n if (\"string\" === typeof value.src) return value.src;\n if (\"string\" === typeof value.currentSrc) return value.currentSrc;\n if (\"string\" === typeof value.command) return value.command;\n if (\"object\" === typeof value.request && null !== value.request && \"string\" === typeof value.request.url) return value.request.url;\n if (\"object\" === typeof value.response && null !== value.response && \"string\" === typeof value.response.url) return value.response.url;\n if (\"string\" === typeof value.id || \"number\" === typeof value.id || \"bigint\" === typeof value.id) return String(value.id);\n if (\"string\" === typeof value.name) return value.name;\n var str = value.toString();\n return str.startsWith(\"[object \") || 5 > str.length || 500 < str.length ? \"\" : str;\n case \"string\":\n return 5 > value.length || 500 < value.length ? \"\" : value;\n case \"number\":\n case \"bigint\":\n return String(value);\n default:\n return \"\";\n }\n } catch (x) {\n return \"\";\n }\n }\n function markAllTracksInOrder() {\n supportsUserTiming && (console.timeStamp(\"Server Requests Track\", 0.001, 0.001, \"Server Requests \\u269b\", void 0, \"primary-light\"), console.timeStamp(\"Server Components Track\", 0.001, 0.001, \"Primary\", \"Server Components \\u269b\", \"primary-light\"));\n }\n function getIOColor(functionName) {\n switch(functionName.charCodeAt(0) % 3){\n case 0:\n return \"tertiary-light\";\n case 1:\n return \"tertiary\";\n default:\n return \"tertiary-dark\";\n }\n }\n function getIOLongName(ioInfo, description, env, rootEnv) {\n ioInfo = ioInfo.name;\n description = \"\" === description ? ioInfo : ioInfo + \" (\" + description + \")\";\n return env === rootEnv || void 0 === env ? description : description + \" [\" + env + \"]\";\n }\n function getIOShortName(ioInfo, description, env, rootEnv) {\n ioInfo = ioInfo.name;\n env = env === rootEnv || void 0 === env ? \"\" : \" [\" + env + \"]\";\n var desc = \"\";\n rootEnv = 30 - ioInfo.length - env.length;\n if (1 < rootEnv) {\n var l = description.length;\n if (0 < l && l <= rootEnv) desc = \" (\" + description + \")\";\n else if (description.startsWith(\"http://\") || description.startsWith(\"https://\") || description.startsWith(\"/\")) {\n var queryIdx = description.indexOf(\"?\");\n -1 === queryIdx && (queryIdx = description.length);\n 47 === description.charCodeAt(queryIdx - 1) && queryIdx--;\n desc = description.lastIndexOf(\"/\", queryIdx - 1);\n queryIdx - desc < rootEnv ? desc = \" (\\u2026\" + description.slice(desc, queryIdx) + \")\" : (l = description.slice(desc, desc + rootEnv / 2), description = description.slice(queryIdx - rootEnv / 2, queryIdx), desc = \" (\" + (0 < desc ? \"\\u2026\" : \"\") + l + \"\\u2026\" + description + \")\");\n }\n }\n return ioInfo + desc + env;\n }\n function logComponentAwait(asyncInfo, trackIdx, startTime, endTime, rootEnv, value) {\n if (supportsUserTiming && 0 < endTime) {\n var description = getIODescription(value), name = getIOShortName(asyncInfo.awaited, description, asyncInfo.env, rootEnv), entryName = \"await \" + name;\n name = getIOColor(name);\n var debugTask = asyncInfo.debugTask || asyncInfo.awaited.debugTask;\n if (debugTask) {\n var properties = [];\n \"object\" === typeof value && null !== value ? addObjectToProperties(value, properties, 0, \"\") : void 0 !== value && addValueToProperties(\"awaited value\", value, properties, 0, \"\");\n asyncInfo = getIOLongName(asyncInfo.awaited, description, asyncInfo.env, rootEnv);\n debugTask.run(performance.measure.bind(performance, entryName, {\n start: 0 > startTime ? 0 : startTime,\n end: endTime,\n detail: {\n devtools: {\n color: name,\n track: trackNames[trackIdx],\n trackGroup: \"Server Components \\u269b\",\n properties: properties,\n tooltipText: asyncInfo\n }\n }\n }));\n performance.clearMeasures(entryName);\n } else console.timeStamp(entryName, 0 > startTime ? 0 : startTime, endTime, trackNames[trackIdx], \"Server Components \\u269b\", name);\n }\n }\n function logIOInfoErrored(ioInfo, rootEnv, error) {\n var startTime = ioInfo.start, endTime = ioInfo.end;\n if (supportsUserTiming && 0 <= endTime) {\n var description = getIODescription(error), entryName = getIOShortName(ioInfo, description, ioInfo.env, rootEnv), debugTask = ioInfo.debugTask;\n entryName = \"\\u200b\" + entryName;\n debugTask ? (error = [\n [\n \"rejected with\",\n \"object\" === typeof error && null !== error && \"string\" === typeof error.message ? String(error.message) : String(error)\n ]\n ], ioInfo = getIOLongName(ioInfo, description, ioInfo.env, rootEnv) + \" Rejected\", debugTask.run(performance.measure.bind(performance, entryName, {\n start: 0 > startTime ? 0 : startTime,\n end: endTime,\n detail: {\n devtools: {\n color: \"error\",\n track: \"Server Requests \\u269b\",\n properties: error,\n tooltipText: ioInfo\n }\n }\n })), performance.clearMeasures(entryName)) : console.timeStamp(entryName, 0 > startTime ? 0 : startTime, endTime, \"Server Requests \\u269b\", void 0, \"error\");\n }\n }\n function logIOInfo(ioInfo, rootEnv, value) {\n var startTime = ioInfo.start, endTime = ioInfo.end;\n if (supportsUserTiming && 0 <= endTime) {\n var description = getIODescription(value), entryName = getIOShortName(ioInfo, description, ioInfo.env, rootEnv), color = getIOColor(entryName), debugTask = ioInfo.debugTask;\n entryName = \"\\u200b\" + entryName;\n if (debugTask) {\n var properties = [];\n \"object\" === typeof value && null !== value ? addObjectToProperties(value, properties, 0, \"\") : void 0 !== value && addValueToProperties(\"Resolved\", value, properties, 0, \"\");\n ioInfo = getIOLongName(ioInfo, description, ioInfo.env, rootEnv);\n debugTask.run(performance.measure.bind(performance, entryName, {\n start: 0 > startTime ? 0 : startTime,\n end: endTime,\n detail: {\n devtools: {\n color: color,\n track: \"Server Requests \\u269b\",\n properties: properties,\n tooltipText: ioInfo\n }\n }\n }));\n performance.clearMeasures(entryName);\n } else console.timeStamp(entryName, 0 > startTime ? 0 : startTime, endTime, \"Server Requests \\u269b\", void 0, color);\n }\n }\n function prepareStackTrace(error, structuredStackTrace) {\n error = (error.name || \"Error\") + \": \" + (error.message || \"\");\n for(var i = 0; i < structuredStackTrace.length; i++)error += \"\\n at \" + structuredStackTrace[i].toString();\n return error;\n }\n function ReactPromise(status, value, reason) {\n this.status = status;\n this.value = value;\n this.reason = reason;\n this._children = [];\n this._debugChunk = null;\n this._debugInfo = [];\n }\n function hasGCedResponse(weakResponse) {\n return void 0 === weakResponse.weak.deref();\n }\n function unwrapWeakResponse(weakResponse) {\n weakResponse = weakResponse.weak.deref();\n if (void 0 === weakResponse) throw Error(\"We did not expect to receive new data after GC:ing the response.\");\n return weakResponse;\n }\n function closeDebugChannel(debugChannel) {\n debugChannel.callback && debugChannel.callback(\"\");\n }\n function readChunk(chunk) {\n switch(chunk.status){\n case \"resolved_model\":\n initializeModelChunk(chunk);\n break;\n case \"resolved_module\":\n initializeModuleChunk(chunk);\n }\n switch(chunk.status){\n case \"fulfilled\":\n return chunk.value;\n case \"pending\":\n case \"blocked\":\n case \"halted\":\n throw chunk;\n default:\n throw chunk.reason;\n }\n }\n function getRoot(weakResponse) {\n weakResponse = unwrapWeakResponse(weakResponse);\n return getChunk(weakResponse, 0);\n }\n function createPendingChunk(response) {\n 0 === response._pendingChunks++ && (response._weakResponse.response = response, null !== response._pendingInitialRender && (clearTimeout(response._pendingInitialRender), response._pendingInitialRender = null));\n return new ReactPromise(\"pending\", null, null);\n }\n function releasePendingChunk(response, chunk) {\n \"pending\" === chunk.status && 0 === --response._pendingChunks && (response._weakResponse.response = null, response._pendingInitialRender = setTimeout(flushInitialRenderPerformance.bind(null, response), 100));\n }\n function filterDebugInfo(response, value) {\n if (null !== response._debugEndTime) {\n response = response._debugEndTime - performance.timeOrigin;\n for(var debugInfo = [], i = 0; i < value._debugInfo.length; i++){\n var info = value._debugInfo[i];\n if (\"number\" === typeof info.time && info.time > response) break;\n debugInfo.push(info);\n }\n value._debugInfo = debugInfo;\n }\n }\n function moveDebugInfoFromChunkToInnerValue(chunk, value) {\n value = resolveLazy(value);\n \"object\" !== typeof value || null === value || !isArrayImpl(value) && \"function\" !== typeof value[ASYNC_ITERATOR] && value.$$typeof !== REACT_ELEMENT_TYPE && value.$$typeof !== REACT_LAZY_TYPE || (chunk = chunk._debugInfo.splice(0), isArrayImpl(value._debugInfo) ? value._debugInfo.unshift.apply(value._debugInfo, chunk) : Object.isFrozen(value) || Object.defineProperty(value, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: chunk\n }));\n }\n function wakeChunk(response, listeners, value, chunk) {\n for(var i = 0; i < listeners.length; i++){\n var listener = listeners[i];\n \"function\" === typeof listener ? listener(value) : fulfillReference(response, listener, value, chunk);\n }\n filterDebugInfo(response, chunk);\n moveDebugInfoFromChunkToInnerValue(chunk, value);\n }\n function rejectChunk(response, listeners, error) {\n for(var i = 0; i < listeners.length; i++){\n var listener = listeners[i];\n \"function\" === typeof listener ? listener(error) : rejectReference(response, listener.handler, error);\n }\n }\n function resolveBlockedCycle(resolvedChunk, reference) {\n var referencedChunk = reference.handler.chunk;\n if (null === referencedChunk) return null;\n if (referencedChunk === resolvedChunk) return reference.handler;\n reference = referencedChunk.value;\n if (null !== reference) for(referencedChunk = 0; referencedChunk < reference.length; referencedChunk++){\n var listener = reference[referencedChunk];\n if (\"function\" !== typeof listener && (listener = resolveBlockedCycle(resolvedChunk, listener), null !== listener)) return listener;\n }\n return null;\n }\n function wakeChunkIfInitialized(response, chunk, resolveListeners, rejectListeners) {\n switch(chunk.status){\n case \"fulfilled\":\n wakeChunk(response, resolveListeners, chunk.value, chunk);\n break;\n case \"blocked\":\n for(var i = 0; i < resolveListeners.length; i++){\n var listener = resolveListeners[i];\n if (\"function\" !== typeof listener) {\n var cyclicHandler = resolveBlockedCycle(chunk, listener);\n if (null !== cyclicHandler) switch(fulfillReference(response, listener, cyclicHandler.value, chunk), resolveListeners.splice(i, 1), i--, null !== rejectListeners && (listener = rejectListeners.indexOf(listener), -1 !== listener && rejectListeners.splice(listener, 1)), chunk.status){\n case \"fulfilled\":\n wakeChunk(response, resolveListeners, chunk.value, chunk);\n return;\n case \"rejected\":\n null !== rejectListeners && rejectChunk(response, rejectListeners, chunk.reason);\n return;\n }\n }\n }\n case \"pending\":\n if (chunk.value) for(response = 0; response < resolveListeners.length; response++)chunk.value.push(resolveListeners[response]);\n else chunk.value = resolveListeners;\n if (chunk.reason) {\n if (rejectListeners) for(resolveListeners = 0; resolveListeners < rejectListeners.length; resolveListeners++)chunk.reason.push(rejectListeners[resolveListeners]);\n } else chunk.reason = rejectListeners;\n break;\n case \"rejected\":\n rejectListeners && rejectChunk(response, rejectListeners, chunk.reason);\n }\n }\n function triggerErrorOnChunk(response, chunk, error) {\n if (\"pending\" !== chunk.status && \"blocked\" !== chunk.status) chunk.reason.error(error);\n else {\n releasePendingChunk(response, chunk);\n var listeners = chunk.reason;\n if (\"pending\" === chunk.status && null != chunk._debugChunk) {\n var prevHandler = initializingHandler, prevChunk = initializingChunk;\n initializingHandler = null;\n chunk.status = \"blocked\";\n chunk.value = null;\n chunk.reason = null;\n initializingChunk = chunk;\n try {\n initializeDebugChunk(response, chunk);\n } finally{\n initializingHandler = prevHandler, initializingChunk = prevChunk;\n }\n }\n chunk.status = \"rejected\";\n chunk.reason = error;\n null !== listeners && rejectChunk(response, listeners, error);\n }\n }\n function createResolvedModelChunk(response, value) {\n return new ReactPromise(\"resolved_model\", value, response);\n }\n function createResolvedIteratorResultChunk(response, value, done) {\n return new ReactPromise(\"resolved_model\", (done ? '{\"done\":true,\"value\":' : '{\"done\":false,\"value\":') + value + \"}\", response);\n }\n function resolveIteratorResultChunk(response, chunk, value, done) {\n resolveModelChunk(response, chunk, (done ? '{\"done\":true,\"value\":' : '{\"done\":false,\"value\":') + value + \"}\");\n }\n function resolveModelChunk(response, chunk, value) {\n if (\"pending\" !== chunk.status) chunk.reason.enqueueModel(value);\n else {\n releasePendingChunk(response, chunk);\n var resolveListeners = chunk.value, rejectListeners = chunk.reason;\n chunk.status = \"resolved_model\";\n chunk.value = value;\n chunk.reason = response;\n null !== resolveListeners && (initializeModelChunk(chunk), wakeChunkIfInitialized(response, chunk, resolveListeners, rejectListeners));\n }\n }\n function resolveModuleChunk(response, chunk, value) {\n if (\"pending\" === chunk.status || \"blocked\" === chunk.status) {\n releasePendingChunk(response, chunk);\n var resolveListeners = chunk.value, rejectListeners = chunk.reason;\n chunk.status = \"resolved_module\";\n chunk.value = value;\n chunk.reason = null;\n value = [];\n null !== value && chunk._debugInfo.push.apply(chunk._debugInfo, value);\n null !== resolveListeners && (initializeModuleChunk(chunk), wakeChunkIfInitialized(response, chunk, resolveListeners, rejectListeners));\n }\n }\n function initializeDebugChunk(response, chunk) {\n var debugChunk = chunk._debugChunk;\n if (null !== debugChunk) {\n var debugInfo = chunk._debugInfo, prevIsInitializingDebugInfo = isInitializingDebugInfo;\n isInitializingDebugInfo = !0;\n try {\n if (\"resolved_model\" === debugChunk.status) {\n for(var idx = debugInfo.length, c = debugChunk._debugChunk; null !== c;)\"fulfilled\" !== c.status && idx++, c = c._debugChunk;\n initializeModelChunk(debugChunk);\n switch(debugChunk.status){\n case \"fulfilled\":\n debugInfo[idx] = initializeDebugInfo(response, debugChunk.value);\n break;\n case \"blocked\":\n case \"pending\":\n waitForReference(debugChunk, debugInfo, \"\" + idx, response, initializeDebugInfo, [\n \"\"\n ], !0);\n break;\n default:\n throw debugChunk.reason;\n }\n } else switch(debugChunk.status){\n case \"fulfilled\":\n break;\n case \"blocked\":\n case \"pending\":\n waitForReference(debugChunk, {}, \"debug\", response, initializeDebugInfo, [\n \"\"\n ], !0);\n break;\n default:\n throw debugChunk.reason;\n }\n } catch (error) {\n triggerErrorOnChunk(response, chunk, error);\n } finally{\n isInitializingDebugInfo = prevIsInitializingDebugInfo;\n }\n }\n }\n function initializeModelChunk(chunk) {\n var prevHandler = initializingHandler, prevChunk = initializingChunk;\n initializingHandler = null;\n var resolvedModel = chunk.value, response = chunk.reason;\n chunk.status = \"blocked\";\n chunk.value = null;\n chunk.reason = null;\n initializingChunk = chunk;\n initializeDebugChunk(response, chunk);\n try {\n var value = parseModel(response, resolvedModel), resolveListeners = chunk.value;\n if (null !== resolveListeners) for(chunk.value = null, chunk.reason = null, resolvedModel = 0; resolvedModel < resolveListeners.length; resolvedModel++){\n var listener = resolveListeners[resolvedModel];\n \"function\" === typeof listener ? listener(value) : fulfillReference(response, listener, value, chunk);\n }\n if (null !== initializingHandler) {\n if (initializingHandler.errored) throw initializingHandler.reason;\n if (0 < initializingHandler.deps) {\n initializingHandler.value = value;\n initializingHandler.chunk = chunk;\n return;\n }\n }\n chunk.status = \"fulfilled\";\n chunk.value = value;\n chunk.reason = null;\n filterDebugInfo(response, chunk);\n moveDebugInfoFromChunkToInnerValue(chunk, value);\n } catch (error) {\n chunk.status = \"rejected\", chunk.reason = error;\n } finally{\n initializingHandler = prevHandler, initializingChunk = prevChunk;\n }\n }\n function initializeModuleChunk(chunk) {\n try {\n var value = requireModule(chunk.value);\n chunk.status = \"fulfilled\";\n chunk.value = value;\n chunk.reason = null;\n } catch (error) {\n chunk.status = \"rejected\", chunk.reason = error;\n }\n }\n function reportGlobalError(weakResponse, error) {\n if (!hasGCedResponse(weakResponse)) {\n var response = unwrapWeakResponse(weakResponse);\n response._closed = !0;\n response._closedReason = error;\n response._chunks.forEach(function(chunk) {\n \"pending\" === chunk.status ? triggerErrorOnChunk(response, chunk, error) : \"fulfilled\" === chunk.status && null !== chunk.reason && chunk.reason.error(error);\n });\n weakResponse = response._debugChannel;\n void 0 !== weakResponse && (closeDebugChannel(weakResponse), response._debugChannel = void 0, null !== debugChannelRegistry && debugChannelRegistry.unregister(response));\n }\n }\n function nullRefGetter() {\n return null;\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\"function\" === typeof type) return '\"use client\"';\n if (\"object\" === typeof type && null !== type && type.$$typeof === REACT_LAZY_TYPE) return type._init === readChunk ? '\"use client\"' : \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function initializeElement(response, element, lazyNode) {\n var stack = element._debugStack, owner = element._owner;\n null === owner && (element._owner = response._debugRootOwner);\n var env = response._rootEnvironmentName;\n null !== owner && null != owner.env && (env = owner.env);\n var normalizedStackTrace = null;\n null === owner && null != response._debugRootStack ? normalizedStackTrace = response._debugRootStack : null !== stack && (normalizedStackTrace = createFakeJSXCallStackInDEV(response, stack, env));\n element._debugStack = normalizedStackTrace;\n normalizedStackTrace = null;\n supportsCreateTask && null !== stack && (normalizedStackTrace = console.createTask.bind(console, getTaskName(element.type)), stack = buildFakeCallStack(response, stack, env, !1, normalizedStackTrace), env = null === owner ? null : initializeFakeTask(response, owner), null === env ? (env = response._debugRootTask, normalizedStackTrace = null != env ? env.run(stack) : stack()) : normalizedStackTrace = env.run(stack));\n element._debugTask = normalizedStackTrace;\n null !== owner && initializeFakeStack(response, owner);\n null !== lazyNode && (lazyNode._store && lazyNode._store.validated && !element._store.validated && (element._store.validated = lazyNode._store.validated), \"fulfilled\" === lazyNode._payload.status && lazyNode._debugInfo && (response = lazyNode._debugInfo.splice(0), element._debugInfo ? element._debugInfo.unshift.apply(element._debugInfo, response) : Object.defineProperty(element, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: response\n })));\n Object.freeze(element.props);\n }\n function createLazyChunkWrapper(chunk, validated) {\n var lazyType = {\n $$typeof: REACT_LAZY_TYPE,\n _payload: chunk,\n _init: readChunk\n };\n lazyType._debugInfo = chunk._debugInfo;\n lazyType._store = {\n validated: validated\n };\n return lazyType;\n }\n function getChunk(response, id) {\n var chunks = response._chunks, chunk = chunks.get(id);\n chunk || (response._closed ? response._allowPartialStream ? (response = chunk = createPendingChunk(response), response.status = \"halted\", response.value = null, response.reason = null) : chunk = new ReactPromise(\"rejected\", null, response._closedReason) : chunk = createPendingChunk(response), chunks.set(id, chunk));\n return chunk;\n }\n function fulfillReference(response, reference, value, fulfilledChunk) {\n var handler = reference.handler, parentObject = reference.parentObject, key = reference.key, map = reference.map, path = reference.path;\n try {\n for(var i = 1; i < path.length; i++){\n for(; \"object\" === typeof value && null !== value && value.$$typeof === REACT_LAZY_TYPE;){\n var referencedChunk = value._payload;\n if (referencedChunk === handler.chunk) value = handler.value;\n else {\n switch(referencedChunk.status){\n case \"resolved_model\":\n initializeModelChunk(referencedChunk);\n break;\n case \"resolved_module\":\n initializeModuleChunk(referencedChunk);\n }\n switch(referencedChunk.status){\n case \"fulfilled\":\n value = referencedChunk.value;\n continue;\n case \"blocked\":\n var cyclicHandler = resolveBlockedCycle(referencedChunk, reference);\n if (null !== cyclicHandler) {\n value = cyclicHandler.value;\n continue;\n }\n case \"pending\":\n path.splice(0, i - 1);\n null === referencedChunk.value ? referencedChunk.value = [\n reference\n ] : referencedChunk.value.push(reference);\n null === referencedChunk.reason ? referencedChunk.reason = [\n reference\n ] : referencedChunk.reason.push(reference);\n return;\n case \"halted\":\n return;\n default:\n rejectReference(response, reference.handler, referencedChunk.reason);\n return;\n }\n }\n }\n var name = path[i];\n if (\"object\" === typeof value && null !== value && hasOwnProperty.call(value, name)) value = value[name];\n else throw Error(\"Invalid reference.\");\n }\n for(; \"object\" === typeof value && null !== value && value.$$typeof === REACT_LAZY_TYPE;){\n var _referencedChunk = value._payload;\n if (_referencedChunk === handler.chunk) value = handler.value;\n else {\n switch(_referencedChunk.status){\n case \"resolved_model\":\n initializeModelChunk(_referencedChunk);\n break;\n case \"resolved_module\":\n initializeModuleChunk(_referencedChunk);\n }\n switch(_referencedChunk.status){\n case \"fulfilled\":\n value = _referencedChunk.value;\n continue;\n }\n break;\n }\n }\n var mappedValue = map(response, value, parentObject, key);\n \"__proto__\" !== key && (parentObject[key] = mappedValue);\n \"\" === key && null === handler.value && (handler.value = mappedValue);\n if (parentObject[0] === REACT_ELEMENT_TYPE && \"object\" === typeof handler.value && null !== handler.value && handler.value.$$typeof === REACT_ELEMENT_TYPE) {\n var element = handler.value;\n switch(key){\n case \"3\":\n transferReferencedDebugInfo(handler.chunk, fulfilledChunk);\n element.props = mappedValue;\n break;\n case \"4\":\n element._owner = mappedValue;\n break;\n case \"5\":\n element._debugStack = mappedValue;\n break;\n default:\n transferReferencedDebugInfo(handler.chunk, fulfilledChunk);\n }\n } else reference.isDebug || transferReferencedDebugInfo(handler.chunk, fulfilledChunk);\n } catch (error) {\n rejectReference(response, reference.handler, error);\n return;\n }\n handler.deps--;\n 0 === handler.deps && (reference = handler.chunk, null !== reference && \"blocked\" === reference.status && (value = reference.value, reference.status = \"fulfilled\", reference.value = handler.value, reference.reason = handler.reason, null !== value ? wakeChunk(response, value, handler.value, reference) : (handler = handler.value, filterDebugInfo(response, reference), moveDebugInfoFromChunkToInnerValue(reference, handler))));\n }\n function rejectReference(response, handler, error) {\n if (!handler.errored) {\n var blockedValue = handler.value;\n handler.errored = !0;\n handler.value = null;\n handler.reason = error;\n handler = handler.chunk;\n if (null !== handler && \"blocked\" === handler.status) {\n if (\"object\" === typeof blockedValue && null !== blockedValue && blockedValue.$$typeof === REACT_ELEMENT_TYPE) {\n var erroredComponent = {\n name: getComponentNameFromType(blockedValue.type) || \"\",\n owner: blockedValue._owner\n };\n erroredComponent.debugStack = blockedValue._debugStack;\n supportsCreateTask && (erroredComponent.debugTask = blockedValue._debugTask);\n handler._debugInfo.push(erroredComponent);\n }\n triggerErrorOnChunk(response, handler, error);\n }\n }\n }\n function waitForReference(referencedChunk, parentObject, key, response, map, path, isAwaitingDebugInfo) {\n if (!(void 0 !== response._debugChannel && response._debugChannel.hasReadable || \"pending\" !== referencedChunk.status || parentObject[0] !== REACT_ELEMENT_TYPE || \"4\" !== key && \"5\" !== key)) return null;\n initializingHandler ? (response = initializingHandler, response.deps++) : response = initializingHandler = {\n parent: null,\n chunk: null,\n value: null,\n reason: null,\n deps: 1,\n errored: !1\n };\n parentObject = {\n handler: response,\n parentObject: parentObject,\n key: key,\n map: map,\n path: path\n };\n parentObject.isDebug = isAwaitingDebugInfo;\n null === referencedChunk.value ? referencedChunk.value = [\n parentObject\n ] : referencedChunk.value.push(parentObject);\n null === referencedChunk.reason ? referencedChunk.reason = [\n parentObject\n ] : referencedChunk.reason.push(parentObject);\n return null;\n }\n function loadServerReference(response, metaData, parentObject, key) {\n if (!response._serverReferenceConfig) return createBoundServerReference(metaData, response._callServer, response._encodeFormAction, response._debugFindSourceMapURL);\n var serverReference = resolveServerReference(response._serverReferenceConfig, metaData.id), promise = preloadModule(serverReference);\n if (promise) metaData.bound && (promise = Promise.all([\n promise,\n metaData.bound\n ]));\n else if (metaData.bound) promise = Promise.resolve(metaData.bound);\n else return promise = requireModule(serverReference), registerBoundServerReference(promise, metaData.id, metaData.bound, response._encodeFormAction), promise;\n if (initializingHandler) {\n var handler = initializingHandler;\n handler.deps++;\n } else handler = initializingHandler = {\n parent: null,\n chunk: null,\n value: null,\n reason: null,\n deps: 1,\n errored: !1\n };\n promise.then(function() {\n var resolvedValue = requireModule(serverReference);\n if (metaData.bound) {\n var boundArgs = metaData.bound.value.slice(0);\n boundArgs.unshift(null);\n resolvedValue = resolvedValue.bind.apply(resolvedValue, boundArgs);\n }\n registerBoundServerReference(resolvedValue, metaData.id, metaData.bound, response._encodeFormAction);\n \"__proto__\" !== key && (parentObject[key] = resolvedValue);\n \"\" === key && null === handler.value && (handler.value = resolvedValue);\n if (parentObject[0] === REACT_ELEMENT_TYPE && \"object\" === typeof handler.value && null !== handler.value && handler.value.$$typeof === REACT_ELEMENT_TYPE) switch(boundArgs = handler.value, key){\n case \"3\":\n boundArgs.props = resolvedValue;\n break;\n case \"4\":\n boundArgs._owner = resolvedValue;\n }\n handler.deps--;\n 0 === handler.deps && (resolvedValue = handler.chunk, null !== resolvedValue && \"blocked\" === resolvedValue.status && (boundArgs = resolvedValue.value, resolvedValue.status = \"fulfilled\", resolvedValue.value = handler.value, resolvedValue.reason = null, null !== boundArgs ? wakeChunk(response, boundArgs, handler.value, resolvedValue) : (boundArgs = handler.value, filterDebugInfo(response, resolvedValue), moveDebugInfoFromChunkToInnerValue(resolvedValue, boundArgs))));\n }, function(error) {\n if (!handler.errored) {\n var blockedValue = handler.value;\n handler.errored = !0;\n handler.value = null;\n handler.reason = error;\n var chunk = handler.chunk;\n if (null !== chunk && \"blocked\" === chunk.status) {\n if (\"object\" === typeof blockedValue && null !== blockedValue && blockedValue.$$typeof === REACT_ELEMENT_TYPE) {\n var erroredComponent = {\n name: getComponentNameFromType(blockedValue.type) || \"\",\n owner: blockedValue._owner\n };\n erroredComponent.debugStack = blockedValue._debugStack;\n supportsCreateTask && (erroredComponent.debugTask = blockedValue._debugTask);\n chunk._debugInfo.push(erroredComponent);\n }\n triggerErrorOnChunk(response, chunk, error);\n }\n }\n });\n return null;\n }\n function resolveLazy(value) {\n for(; \"object\" === typeof value && null !== value && value.$$typeof === REACT_LAZY_TYPE;){\n var payload = value._payload;\n if (\"fulfilled\" === payload.status) value = payload.value;\n else break;\n }\n return value;\n }\n function transferReferencedDebugInfo(parentChunk, referencedChunk) {\n if (null !== parentChunk) {\n referencedChunk = referencedChunk._debugInfo;\n parentChunk = parentChunk._debugInfo;\n for(var i = 0; i < referencedChunk.length; ++i){\n var debugInfoEntry = referencedChunk[i];\n null == debugInfoEntry.name && parentChunk.push(debugInfoEntry);\n }\n }\n }\n function getOutlinedModel(response, reference, parentObject, key, map) {\n var path = reference.split(\":\");\n reference = parseInt(path[0], 16);\n reference = getChunk(response, reference);\n null !== initializingChunk && isArrayImpl(initializingChunk._children) && initializingChunk._children.push(reference);\n switch(reference.status){\n case \"resolved_model\":\n initializeModelChunk(reference);\n break;\n case \"resolved_module\":\n initializeModuleChunk(reference);\n }\n switch(reference.status){\n case \"fulfilled\":\n for(var value = reference.value, i = 1; i < path.length; i++){\n for(; \"object\" === typeof value && null !== value && value.$$typeof === REACT_LAZY_TYPE;){\n value = value._payload;\n switch(value.status){\n case \"resolved_model\":\n initializeModelChunk(value);\n break;\n case \"resolved_module\":\n initializeModuleChunk(value);\n }\n switch(value.status){\n case \"fulfilled\":\n value = value.value;\n break;\n case \"blocked\":\n case \"pending\":\n return waitForReference(value, parentObject, key, response, map, path.slice(i - 1), isInitializingDebugInfo);\n case \"halted\":\n return initializingHandler ? (parentObject = initializingHandler, parentObject.deps++) : initializingHandler = {\n parent: null,\n chunk: null,\n value: null,\n reason: null,\n deps: 1,\n errored: !1\n }, null;\n default:\n return initializingHandler ? (initializingHandler.errored = !0, initializingHandler.value = null, initializingHandler.reason = value.reason) : initializingHandler = {\n parent: null,\n chunk: null,\n value: null,\n reason: value.reason,\n deps: 0,\n errored: !0\n }, null;\n }\n }\n value = value[path[i]];\n }\n for(; \"object\" === typeof value && null !== value && value.$$typeof === REACT_LAZY_TYPE;){\n path = value._payload;\n switch(path.status){\n case \"resolved_model\":\n initializeModelChunk(path);\n break;\n case \"resolved_module\":\n initializeModuleChunk(path);\n }\n switch(path.status){\n case \"fulfilled\":\n value = path.value;\n continue;\n }\n break;\n }\n response = map(response, value, parentObject, key);\n if (parentObject[0] !== REACT_ELEMENT_TYPE || \"4\" !== key && \"5\" !== key) isInitializingDebugInfo || transferReferencedDebugInfo(initializingChunk, reference);\n return response;\n case \"pending\":\n case \"blocked\":\n return waitForReference(reference, parentObject, key, response, map, path, isInitializingDebugInfo);\n case \"halted\":\n return initializingHandler ? (parentObject = initializingHandler, parentObject.deps++) : initializingHandler = {\n parent: null,\n chunk: null,\n value: null,\n reason: null,\n deps: 1,\n errored: !1\n }, null;\n default:\n return initializingHandler ? (initializingHandler.errored = !0, initializingHandler.value = null, initializingHandler.reason = reference.reason) : initializingHandler = {\n parent: null,\n chunk: null,\n value: null,\n reason: reference.reason,\n deps: 0,\n errored: !0\n }, null;\n }\n }\n function createMap(response, model) {\n return new Map(model);\n }\n function createSet(response, model) {\n return new Set(model);\n }\n function createBlob(response, model) {\n return new Blob(model.slice(1), {\n type: model[0]\n });\n }\n function createFormData(response, model) {\n response = new FormData();\n for(var i = 0; i < model.length; i++)response.append(model[i][0], model[i][1]);\n return response;\n }\n function applyConstructor(response, model, parentObject) {\n Object.setPrototypeOf(parentObject, model.prototype);\n }\n function defineLazyGetter(response, chunk, parentObject, key) {\n \"__proto__\" !== key && Object.defineProperty(parentObject, key, {\n get: function() {\n \"resolved_model\" === chunk.status && initializeModelChunk(chunk);\n switch(chunk.status){\n case \"fulfilled\":\n return chunk.value;\n case \"rejected\":\n throw chunk.reason;\n }\n return \"This object has been omitted by React in the console log to avoid sending too much data from the server. Try logging smaller or more specific objects.\";\n },\n set: function() {},\n enumerable: !0,\n configurable: !1\n });\n return null;\n }\n function extractIterator(response, model) {\n return model[Symbol.iterator]();\n }\n function createModel(response, model) {\n return model;\n }\n function getInferredFunctionApproximate(code) {\n code = code.startsWith(\"Object.defineProperty(\") ? code.slice(22) : code.startsWith(\"(\") ? code.slice(1) : code;\n if (code.startsWith(\"async function\")) {\n var idx = code.indexOf(\"(\", 14);\n if (-1 !== idx) return code = code.slice(14, idx).trim(), (0, eval)(\"({\" + JSON.stringify(code) + \":async function(){}})\")[code];\n } else if (code.startsWith(\"function\")) {\n if (idx = code.indexOf(\"(\", 8), -1 !== idx) return code = code.slice(8, idx).trim(), (0, eval)(\"({\" + JSON.stringify(code) + \":function(){}})\")[code];\n } else if (code.startsWith(\"class\") && (idx = code.indexOf(\"{\", 5), -1 !== idx)) return code = code.slice(5, idx).trim(), (0, eval)(\"({\" + JSON.stringify(code) + \":class{}})\")[code];\n return function() {};\n }\n function parseModelString(response, parentObject, key, value) {\n if (\"$\" === value[0]) {\n if (\"$\" === value) return null !== initializingHandler && \"0\" === key && (initializingHandler = {\n parent: initializingHandler,\n chunk: null,\n value: null,\n reason: null,\n deps: 0,\n errored: !1\n }), REACT_ELEMENT_TYPE;\n switch(value[1]){\n case \"$\":\n return value.slice(1);\n case \"L\":\n return parentObject = parseInt(value.slice(2), 16), response = getChunk(response, parentObject), null !== initializingChunk && isArrayImpl(initializingChunk._children) && initializingChunk._children.push(response), createLazyChunkWrapper(response, 0);\n case \"@\":\n return parentObject = parseInt(value.slice(2), 16), response = getChunk(response, parentObject), null !== initializingChunk && isArrayImpl(initializingChunk._children) && initializingChunk._children.push(response), response;\n case \"S\":\n return Symbol.for(value.slice(2));\n case \"h\":\n var ref = value.slice(2);\n return getOutlinedModel(response, ref, parentObject, key, loadServerReference);\n case \"T\":\n parentObject = \"$\" + value.slice(2);\n response = response._tempRefs;\n if (null == response) throw Error(\"Missing a temporary reference set but the RSC response returned a temporary reference. Pass a temporaryReference option with the set that was used with the reply.\");\n return response.get(parentObject);\n case \"Q\":\n return ref = value.slice(2), getOutlinedModel(response, ref, parentObject, key, createMap);\n case \"W\":\n return ref = value.slice(2), getOutlinedModel(response, ref, parentObject, key, createSet);\n case \"B\":\n return ref = value.slice(2), getOutlinedModel(response, ref, parentObject, key, createBlob);\n case \"K\":\n return ref = value.slice(2), getOutlinedModel(response, ref, parentObject, key, createFormData);\n case \"Z\":\n return ref = value.slice(2), getOutlinedModel(response, ref, parentObject, key, resolveErrorDev);\n case \"i\":\n return ref = value.slice(2), getOutlinedModel(response, ref, parentObject, key, extractIterator);\n case \"I\":\n return Infinity;\n case \"-\":\n return \"$-0\" === value ? -0 : -Infinity;\n case \"N\":\n return NaN;\n case \"u\":\n return;\n case \"D\":\n return new Date(Date.parse(value.slice(2)));\n case \"n\":\n return BigInt(value.slice(2));\n case \"P\":\n return ref = value.slice(2), getOutlinedModel(response, ref, parentObject, key, applyConstructor);\n case \"E\":\n response = value.slice(2);\n try {\n if (!mightHaveStaticConstructor.test(response)) return (0, eval)(response);\n } catch (x) {}\n try {\n if (ref = getInferredFunctionApproximate(response), response.startsWith(\"Object.defineProperty(\")) {\n var idx = response.lastIndexOf(',\"name\",{value:\"');\n if (-1 !== idx) {\n var name = JSON.parse(response.slice(idx + 16 - 1, response.length - 2));\n Object.defineProperty(ref, \"name\", {\n value: name\n });\n }\n }\n } catch (_) {\n ref = function() {};\n }\n return ref;\n case \"Y\":\n if (2 < value.length && (ref = response._debugChannel && response._debugChannel.callback)) {\n if (\"@\" === value[2]) return parentObject = value.slice(3), key = parseInt(parentObject, 16), response._chunks.has(key) || ref(\"P:\" + parentObject), getChunk(response, key);\n value = value.slice(2);\n idx = parseInt(value, 16);\n response._chunks.has(idx) || ref(\"Q:\" + value);\n ref = getChunk(response, idx);\n return \"fulfilled\" === ref.status ? ref.value : defineLazyGetter(response, ref, parentObject, key);\n }\n \"__proto__\" !== key && Object.defineProperty(parentObject, key, {\n get: function() {\n return \"This object has been omitted by React in the console log to avoid sending too much data from the server. Try logging smaller or more specific objects.\";\n },\n set: function() {},\n enumerable: !0,\n configurable: !1\n });\n return null;\n default:\n return ref = value.slice(1), getOutlinedModel(response, ref, parentObject, key, createModel);\n }\n }\n return value;\n }\n function missingCall() {\n throw Error('Trying to call a function from \"use server\" but the callServer option was not implemented in your router runtime.');\n }\n function markIOStarted() {\n this._debugIOStarted = !0;\n }\n function ResponseInstance(bundlerConfig, serverReferenceConfig, moduleLoading, callServer, encodeFormAction, nonce, temporaryReferences, allowPartialStream, findSourceMapURL, replayConsole, environmentName, debugStartTime, debugEndTime, debugChannel) {\n var chunks = new Map();\n this._bundlerConfig = bundlerConfig;\n this._serverReferenceConfig = serverReferenceConfig;\n this._moduleLoading = moduleLoading;\n this._callServer = void 0 !== callServer ? callServer : missingCall;\n this._encodeFormAction = encodeFormAction;\n this._nonce = nonce;\n this._chunks = chunks;\n this._stringDecoder = new util.TextDecoder();\n this._closed = !1;\n this._closedReason = null;\n this._allowPartialStream = allowPartialStream;\n this._tempRefs = temporaryReferences;\n this._timeOrigin = 0;\n this._pendingInitialRender = null;\n this._pendingChunks = 0;\n this._weakResponse = {\n weak: new WeakRef(this),\n response: this\n };\n this._debugRootOwner = bundlerConfig = void 0 === ReactSharedInteralsServer || null === ReactSharedInteralsServer.A ? null : ReactSharedInteralsServer.A.getOwner();\n this._debugRootStack = null !== bundlerConfig ? Error(\"react-stack-top-frame\") : null;\n environmentName = void 0 === environmentName ? \"Server\" : environmentName;\n supportsCreateTask && (this._debugRootTask = console.createTask('\"use ' + environmentName.toLowerCase() + '\"'));\n this._debugStartTime = null == debugStartTime ? performance.now() : debugStartTime;\n this._debugIOStarted = !1;\n setTimeout(markIOStarted.bind(this), 0);\n this._debugEndTime = null == debugEndTime ? null : debugEndTime;\n this._debugFindSourceMapURL = findSourceMapURL;\n this._debugChannel = debugChannel;\n this._blockedConsole = null;\n this._replayConsole = replayConsole;\n this._rootEnvironmentName = environmentName;\n debugChannel && (null === debugChannelRegistry ? (closeDebugChannel(debugChannel), this._debugChannel = void 0) : debugChannelRegistry.register(this, debugChannel, this));\n replayConsole && markAllTracksInOrder();\n }\n function createResponse(bundlerConfig, serverReferenceConfig, moduleLoading, callServer, encodeFormAction, nonce, temporaryReferences, allowPartialStream, findSourceMapURL, replayConsole, environmentName, debugStartTime, debugEndTime, debugChannel) {\n checkEvalAvailabilityOnceDev();\n bundlerConfig = new ResponseInstance(bundlerConfig, serverReferenceConfig, moduleLoading, callServer, encodeFormAction, nonce, temporaryReferences, allowPartialStream, findSourceMapURL, replayConsole, environmentName, debugStartTime, debugEndTime, debugChannel)._weakResponse;\n return bundlerConfig;\n }\n function createStreamState(weakResponse, streamDebugValue) {\n var streamState = {\n _rowState: 0,\n _rowID: 0,\n _rowTag: 0,\n _rowLength: 0,\n _buffer: []\n };\n weakResponse = unwrapWeakResponse(weakResponse);\n var debugValuePromise = Promise.resolve(streamDebugValue);\n debugValuePromise.status = \"fulfilled\";\n debugValuePromise.value = streamDebugValue;\n streamState._debugInfo = {\n name: \"rsc stream\",\n start: weakResponse._debugStartTime,\n end: weakResponse._debugStartTime,\n byteSize: 0,\n value: debugValuePromise,\n owner: weakResponse._debugRootOwner,\n debugStack: weakResponse._debugRootStack,\n debugTask: weakResponse._debugRootTask\n };\n streamState._debugTargetChunkSize = MIN_CHUNK_SIZE;\n return streamState;\n }\n function incrementChunkDebugInfo(streamState, chunkLength) {\n var debugInfo = streamState._debugInfo, endTime = performance.now(), previousEndTime = debugInfo.end;\n chunkLength = debugInfo.byteSize + chunkLength;\n chunkLength > streamState._debugTargetChunkSize || endTime > previousEndTime + 10 ? (streamState._debugInfo = {\n name: debugInfo.name,\n start: debugInfo.start,\n end: endTime,\n byteSize: chunkLength,\n value: debugInfo.value,\n owner: debugInfo.owner,\n debugStack: debugInfo.debugStack,\n debugTask: debugInfo.debugTask\n }, streamState._debugTargetChunkSize = chunkLength + MIN_CHUNK_SIZE) : (debugInfo.end = endTime, debugInfo.byteSize = chunkLength);\n }\n function addAsyncInfo(chunk, asyncInfo) {\n var value = resolveLazy(chunk.value);\n \"object\" !== typeof value || null === value || !isArrayImpl(value) && \"function\" !== typeof value[ASYNC_ITERATOR] && value.$$typeof !== REACT_ELEMENT_TYPE && value.$$typeof !== REACT_LAZY_TYPE ? chunk._debugInfo.push(asyncInfo) : isArrayImpl(value._debugInfo) ? value._debugInfo.push(asyncInfo) : Object.isFrozen(value) || Object.defineProperty(value, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: [\n asyncInfo\n ]\n });\n }\n function resolveChunkDebugInfo(response, streamState, chunk) {\n response._debugIOStarted && (response = {\n awaited: streamState._debugInfo\n }, \"pending\" === chunk.status || \"blocked\" === chunk.status ? (response = addAsyncInfo.bind(null, chunk, response), chunk.then(response, response)) : addAsyncInfo(chunk, response));\n }\n function resolveBuffer(response, id, buffer, streamState) {\n var chunks = response._chunks, chunk = chunks.get(id);\n chunk && \"pending\" !== chunk.status ? chunk.reason.enqueueValue(buffer) : (chunk && releasePendingChunk(response, chunk), buffer = new ReactPromise(\"fulfilled\", buffer, null), resolveChunkDebugInfo(response, streamState, buffer), chunks.set(id, buffer));\n }\n function resolveModule(response, id, model, streamState) {\n var chunks = response._chunks, chunk = chunks.get(id);\n model = parseModel(response, model);\n var clientReference = resolveClientReference(response._bundlerConfig, model);\n prepareDestinationWithChunks(response._moduleLoading, model[1], response._nonce);\n if (model = preloadModule(clientReference)) {\n if (chunk) {\n releasePendingChunk(response, chunk);\n var blockedChunk = chunk;\n blockedChunk.status = \"blocked\";\n } else blockedChunk = new ReactPromise(\"blocked\", null, null), chunks.set(id, blockedChunk);\n resolveChunkDebugInfo(response, streamState, blockedChunk);\n model.then(function() {\n return resolveModuleChunk(response, blockedChunk, clientReference);\n }, function(error) {\n return triggerErrorOnChunk(response, blockedChunk, error);\n });\n } else chunk ? (resolveChunkDebugInfo(response, streamState, chunk), resolveModuleChunk(response, chunk, clientReference)) : (chunk = new ReactPromise(\"resolved_module\", clientReference, null), resolveChunkDebugInfo(response, streamState, chunk), chunks.set(id, chunk));\n }\n function resolveStream(response, id, stream, controller, streamState) {\n var chunks = response._chunks, chunk = chunks.get(id);\n if (chunk) {\n if (resolveChunkDebugInfo(response, streamState, chunk), \"pending\" === chunk.status) {\n id = chunk.value;\n if (null != chunk._debugChunk) {\n streamState = initializingHandler;\n chunks = initializingChunk;\n initializingHandler = null;\n chunk.status = \"blocked\";\n chunk.value = null;\n chunk.reason = null;\n initializingChunk = chunk;\n try {\n if (initializeDebugChunk(response, chunk), null !== initializingHandler && !initializingHandler.errored && 0 < initializingHandler.deps) {\n initializingHandler.value = stream;\n initializingHandler.reason = controller;\n initializingHandler.chunk = chunk;\n return;\n }\n } finally{\n initializingHandler = streamState, initializingChunk = chunks;\n }\n }\n chunk.status = \"fulfilled\";\n chunk.value = stream;\n chunk.reason = controller;\n null !== id ? wakeChunk(response, id, chunk.value, chunk) : (filterDebugInfo(response, chunk), moveDebugInfoFromChunkToInnerValue(chunk, stream));\n }\n } else 0 === response._pendingChunks++ && (response._weakResponse.response = response), stream = new ReactPromise(\"fulfilled\", stream, controller), resolveChunkDebugInfo(response, streamState, stream), chunks.set(id, stream);\n }\n function startReadableStream(response, id, type, streamState) {\n var controller = null, closed = !1;\n type = new ReadableStream({\n type: type,\n start: function(c) {\n controller = c;\n }\n });\n var previousBlockedChunk = null;\n resolveStream(response, id, type, {\n enqueueValue: function(value) {\n null === previousBlockedChunk ? controller.enqueue(value) : previousBlockedChunk.then(function() {\n controller.enqueue(value);\n });\n },\n enqueueModel: function(json) {\n if (null === previousBlockedChunk) {\n var chunk = createResolvedModelChunk(response, json);\n initializeModelChunk(chunk);\n \"fulfilled\" === chunk.status ? controller.enqueue(chunk.value) : (chunk.then(function(v) {\n return controller.enqueue(v);\n }, function(e) {\n return controller.error(e);\n }), previousBlockedChunk = chunk);\n } else {\n chunk = previousBlockedChunk;\n var _chunk3 = createPendingChunk(response);\n _chunk3.then(function(v) {\n return controller.enqueue(v);\n }, function(e) {\n return controller.error(e);\n });\n previousBlockedChunk = _chunk3;\n chunk.then(function() {\n previousBlockedChunk === _chunk3 && (previousBlockedChunk = null);\n resolveModelChunk(response, _chunk3, json);\n });\n }\n },\n close: function() {\n if (!closed) if (closed = !0, null === previousBlockedChunk) controller.close();\n else {\n var blockedChunk = previousBlockedChunk;\n previousBlockedChunk = null;\n blockedChunk.then(function() {\n return controller.close();\n });\n }\n },\n error: function(error) {\n if (!closed) if (closed = !0, null === previousBlockedChunk) controller.error(error);\n else {\n var blockedChunk = previousBlockedChunk;\n previousBlockedChunk = null;\n blockedChunk.then(function() {\n return controller.error(error);\n });\n }\n }\n }, streamState);\n }\n function asyncIterator() {\n return this;\n }\n function createIterator(next) {\n next = {\n next: next\n };\n next[ASYNC_ITERATOR] = asyncIterator;\n return next;\n }\n function startAsyncIterable(response, id, iterator, streamState) {\n var buffer = [], closed = !1, nextWriteIndex = 0, iterable = {};\n iterable[ASYNC_ITERATOR] = function() {\n var nextReadIndex = 0;\n return createIterator(function(arg) {\n if (void 0 !== arg) throw Error(\"Values cannot be passed to next() of AsyncIterables passed to Client Components.\");\n if (nextReadIndex === buffer.length) {\n if (closed) return new ReactPromise(\"fulfilled\", {\n done: !0,\n value: void 0\n }, null);\n buffer[nextReadIndex] = createPendingChunk(response);\n }\n return buffer[nextReadIndex++];\n });\n };\n resolveStream(response, id, iterator ? iterable[ASYNC_ITERATOR]() : iterable, {\n enqueueValue: function(value) {\n if (nextWriteIndex === buffer.length) buffer[nextWriteIndex] = new ReactPromise(\"fulfilled\", {\n done: !1,\n value: value\n }, null);\n else {\n var chunk = buffer[nextWriteIndex], resolveListeners = chunk.value, rejectListeners = chunk.reason;\n chunk.status = \"fulfilled\";\n chunk.value = {\n done: !1,\n value: value\n };\n chunk.reason = null;\n null !== resolveListeners && wakeChunkIfInitialized(response, chunk, resolveListeners, rejectListeners);\n }\n nextWriteIndex++;\n },\n enqueueModel: function(value) {\n nextWriteIndex === buffer.length ? buffer[nextWriteIndex] = createResolvedIteratorResultChunk(response, value, !1) : resolveIteratorResultChunk(response, buffer[nextWriteIndex], value, !1);\n nextWriteIndex++;\n },\n close: function(value) {\n if (!closed) for(closed = !0, nextWriteIndex === buffer.length ? buffer[nextWriteIndex] = createResolvedIteratorResultChunk(response, value, !0) : resolveIteratorResultChunk(response, buffer[nextWriteIndex], value, !0), nextWriteIndex++; nextWriteIndex < buffer.length;)resolveIteratorResultChunk(response, buffer[nextWriteIndex++], '\"$undefined\"', !0);\n },\n error: function(error) {\n if (!closed) for(closed = !0, nextWriteIndex === buffer.length && (buffer[nextWriteIndex] = createPendingChunk(response)); nextWriteIndex < buffer.length;)triggerErrorOnChunk(response, buffer[nextWriteIndex++], error);\n }\n }, streamState);\n }\n function resolveErrorDev(response, errorInfo) {\n var name = errorInfo.name, message = errorInfo.message, stack = errorInfo.stack, env = errorInfo.env, errorOptions = \"cause\" in errorInfo ? {\n cause: reviveModel(response, errorInfo.cause, errorInfo, \"cause\")\n } : void 0;\n message = buildFakeCallStack(response, stack, env, !1, Error.bind(null, message || \"An error occurred in the Server Components render but no message was provided\", errorOptions));\n stack = null;\n null != errorInfo.owner && (errorInfo = errorInfo.owner.slice(1), errorInfo = getOutlinedModel(response, errorInfo, {}, \"\", createModel), null !== errorInfo && (stack = initializeFakeTask(response, errorInfo)));\n null === stack ? (response = getRootTask(response, env), response = null != response ? response.run(message) : message()) : response = stack.run(message);\n response.name = name;\n response.environmentName = env;\n return response;\n }\n function createFakeFunction(name, filename, sourceMap, line, col, enclosingLine, enclosingCol, environmentName) {\n name || (name = \"<anonymous>\");\n var encodedName = JSON.stringify(name);\n 1 > enclosingLine ? enclosingLine = 0 : enclosingLine--;\n 1 > enclosingCol ? enclosingCol = 0 : enclosingCol--;\n 1 > line ? line = 0 : line--;\n 1 > col ? col = 0 : col--;\n if (line < enclosingLine || line === enclosingLine && col < enclosingCol) enclosingCol = enclosingLine = 0;\n 1 > line ? (line = encodedName.length + 3, enclosingCol -= line, 0 > enclosingCol && (enclosingCol = 0), col = col - enclosingCol - line - 3, 0 > col && (col = 0), encodedName = \"({\" + encodedName + \":\" + \" \".repeat(enclosingCol) + \"_=>\" + \" \".repeat(col) + \"_()})\") : 1 > enclosingLine ? (enclosingCol -= encodedName.length + 3, 0 > enclosingCol && (enclosingCol = 0), encodedName = \"({\" + encodedName + \":\" + \" \".repeat(enclosingCol) + \"_=>\" + \"\\n\".repeat(line - enclosingLine) + \" \".repeat(col) + \"_()})\") : enclosingLine === line ? (col = col - enclosingCol - 3, 0 > col && (col = 0), encodedName = \"\\n\".repeat(enclosingLine - 1) + \"({\" + encodedName + \":\\n\" + \" \".repeat(enclosingCol) + \"_=>\" + \" \".repeat(col) + \"_()})\") : encodedName = \"\\n\".repeat(enclosingLine - 1) + \"({\" + encodedName + \":\\n\" + \" \".repeat(enclosingCol) + \"_=>\" + \"\\n\".repeat(line - enclosingLine) + \" \".repeat(col) + \"_()})\";\n encodedName = 1 > enclosingLine ? encodedName + \"\\n/* This module was rendered by a Server Component. Turn on Source Maps to see the server source. */\" : \"/* This module was rendered by a Server Component. Turn on Source Maps to see the server source. */\" + encodedName;\n filename.startsWith(\"/\") && (filename = \"file://\" + filename);\n sourceMap ? (encodedName += \"\\n//# sourceURL=about://React/\" + encodeURIComponent(environmentName) + \"/\" + encodeURI(filename) + \"?\" + fakeFunctionIdx++, encodedName += \"\\n//# sourceMappingURL=\" + sourceMap) : encodedName = filename ? encodedName + (\"\\n//# sourceURL=\" + encodeURI(filename)) : encodedName + \"\\n//# sourceURL=<anonymous>\";\n try {\n var fn = (0, eval)(encodedName)[name];\n } catch (x) {\n fn = function(_) {\n return _();\n }, Object.defineProperty(fn, \"name\", {\n value: name\n });\n }\n return fn;\n }\n function buildFakeCallStack(response, stack, environmentName, useEnclosingLine, innerCall) {\n for(var i = 0; i < stack.length; i++){\n var frame = stack[i], frameKey = frame.join(\"-\") + \"-\" + environmentName + (useEnclosingLine ? \"-e\" : \"-n\"), fn = fakeFunctionCache.get(frameKey);\n if (void 0 === fn) {\n fn = frame[0];\n var filename = frame[1], line = frame[2], col = frame[3], enclosingLine = frame[4];\n frame = frame[5];\n var findSourceMapURL = response._debugFindSourceMapURL;\n findSourceMapURL = findSourceMapURL ? findSourceMapURL(filename, environmentName) : null;\n fn = createFakeFunction(fn, filename, findSourceMapURL, line, col, useEnclosingLine ? line : enclosingLine, useEnclosingLine ? col : frame, environmentName);\n fakeFunctionCache.set(frameKey, fn);\n }\n innerCall = fn.bind(null, innerCall);\n }\n return innerCall;\n }\n function getRootTask(response, childEnvironmentName) {\n var rootTask = response._debugRootTask;\n return rootTask ? response._rootEnvironmentName !== childEnvironmentName ? (response = console.createTask.bind(console, '\"use ' + childEnvironmentName.toLowerCase() + '\"'), rootTask.run(response)) : rootTask : null;\n }\n function initializeFakeTask(response, debugInfo) {\n if (!supportsCreateTask || null == debugInfo.stack) return null;\n var cachedEntry = debugInfo.debugTask;\n if (void 0 !== cachedEntry) return cachedEntry;\n var useEnclosingLine = void 0 === debugInfo.key, stack = debugInfo.stack, env = null == debugInfo.env ? response._rootEnvironmentName : debugInfo.env;\n cachedEntry = null == debugInfo.owner || null == debugInfo.owner.env ? response._rootEnvironmentName : debugInfo.owner.env;\n var ownerTask = null == debugInfo.owner ? null : initializeFakeTask(response, debugInfo.owner);\n env = env !== cachedEntry ? '\"use ' + env.toLowerCase() + '\"' : void 0 !== debugInfo.key ? \"<\" + (debugInfo.name || \"...\") + \">\" : void 0 !== debugInfo.name ? debugInfo.name || \"unknown\" : \"await \" + (debugInfo.awaited.name || \"unknown\");\n env = console.createTask.bind(console, env);\n useEnclosingLine = buildFakeCallStack(response, stack, cachedEntry, useEnclosingLine, env);\n null === ownerTask ? (response = getRootTask(response, cachedEntry), response = null != response ? response.run(useEnclosingLine) : useEnclosingLine()) : response = ownerTask.run(useEnclosingLine);\n return debugInfo.debugTask = response;\n }\n function fakeJSXCallSite() {\n return Error(\"react-stack-top-frame\");\n }\n function initializeFakeStack(response, debugInfo) {\n if (void 0 === debugInfo.debugStack) {\n null != debugInfo.stack && (debugInfo.debugStack = createFakeJSXCallStackInDEV(response, debugInfo.stack, null == debugInfo.env ? \"\" : debugInfo.env));\n var owner = debugInfo.owner;\n null != owner && (initializeFakeStack(response, owner), void 0 === owner.debugLocation && null != debugInfo.debugStack && (owner.debugLocation = debugInfo.debugStack));\n }\n }\n function initializeDebugInfo(response, debugInfo) {\n void 0 !== debugInfo.stack && initializeFakeTask(response, debugInfo);\n if (null == debugInfo.owner && null != response._debugRootOwner) {\n var _componentInfoOrAsyncInfo = debugInfo;\n _componentInfoOrAsyncInfo.owner = response._debugRootOwner;\n _componentInfoOrAsyncInfo.stack = null;\n _componentInfoOrAsyncInfo.debugStack = response._debugRootStack;\n _componentInfoOrAsyncInfo.debugTask = response._debugRootTask;\n } else void 0 !== debugInfo.stack && initializeFakeStack(response, debugInfo);\n \"number\" === typeof debugInfo.time && (debugInfo = {\n time: debugInfo.time + response._timeOrigin\n });\n return debugInfo;\n }\n function getCurrentStackInDEV() {\n var owner = currentOwnerInDEV;\n if (null === owner) return \"\";\n try {\n var info = \"\";\n if (owner.owner || \"string\" !== typeof owner.name) {\n for(; owner;){\n var ownerStack = owner.debugStack;\n if (null != ownerStack) {\n if (owner = owner.owner) {\n var JSCompiler_temp_const = info;\n var error = ownerStack, prevPrepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = prepareStackTrace;\n var stack = error.stack;\n Error.prepareStackTrace = prevPrepareStackTrace;\n stack.startsWith(\"Error: react-stack-top-frame\\n\") && (stack = stack.slice(29));\n var idx = stack.indexOf(\"\\n\");\n -1 !== idx && (stack = stack.slice(idx + 1));\n idx = stack.indexOf(\"react_stack_bottom_frame\");\n -1 !== idx && (idx = stack.lastIndexOf(\"\\n\", idx));\n var JSCompiler_inline_result = -1 !== idx ? stack = stack.slice(0, idx) : \"\";\n info = JSCompiler_temp_const + (\"\\n\" + JSCompiler_inline_result);\n }\n } else break;\n }\n var JSCompiler_inline_result$jscomp$0 = info;\n } else {\n JSCompiler_temp_const = owner.name;\n if (void 0 === prefix) try {\n throw Error();\n } catch (x) {\n prefix = (error = x.stack.trim().match(/\\n( *(at )?)/)) && error[1] || \"\", suffix = -1 < x.stack.indexOf(\"\\n at\") ? \" (<anonymous>)\" : -1 < x.stack.indexOf(\"@\") ? \"@unknown:0:0\" : \"\";\n }\n JSCompiler_inline_result$jscomp$0 = \"\\n\" + prefix + JSCompiler_temp_const + suffix;\n }\n } catch (x) {\n JSCompiler_inline_result$jscomp$0 = \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n }\n return JSCompiler_inline_result$jscomp$0;\n }\n function resolveConsoleEntry(response, json) {\n if (response._replayConsole) {\n var blockedChunk = response._blockedConsole;\n if (null == blockedChunk) blockedChunk = createResolvedModelChunk(response, json), initializeModelChunk(blockedChunk), \"fulfilled\" === blockedChunk.status ? replayConsoleWithCallStackInDEV(response, blockedChunk.value) : (blockedChunk.then(function(v) {\n return replayConsoleWithCallStackInDEV(response, v);\n }, function() {}), response._blockedConsole = blockedChunk);\n else {\n var _chunk4 = createPendingChunk(response);\n _chunk4.then(function(v) {\n return replayConsoleWithCallStackInDEV(response, v);\n }, function() {});\n response._blockedConsole = _chunk4;\n var unblock = function() {\n response._blockedConsole === _chunk4 && (response._blockedConsole = null);\n resolveModelChunk(response, _chunk4, json);\n };\n blockedChunk.then(unblock, unblock);\n }\n }\n }\n function initializeIOInfo(response, ioInfo) {\n void 0 !== ioInfo.stack && (initializeFakeTask(response, ioInfo), initializeFakeStack(response, ioInfo));\n ioInfo.start += response._timeOrigin;\n ioInfo.end += response._timeOrigin;\n if (response._replayConsole) {\n response = response._rootEnvironmentName;\n var promise = ioInfo.value;\n if (promise) switch(promise.status){\n case \"fulfilled\":\n logIOInfo(ioInfo, response, promise.value);\n break;\n case \"rejected\":\n logIOInfoErrored(ioInfo, response, promise.reason);\n break;\n default:\n promise.then(logIOInfo.bind(null, ioInfo, response), logIOInfoErrored.bind(null, ioInfo, response));\n }\n else logIOInfo(ioInfo, response, void 0);\n }\n }\n function resolveIOInfo(response, id, model) {\n var chunks = response._chunks, chunk = chunks.get(id), prevIsInitializingDebugInfo = isInitializingDebugInfo;\n isInitializingDebugInfo = !0;\n try {\n chunk ? (resolveModelChunk(response, chunk, model), \"resolved_model\" === chunk.status && initializeModelChunk(chunk)) : (chunk = createResolvedModelChunk(response, model), chunks.set(id, chunk), initializeModelChunk(chunk));\n } finally{\n isInitializingDebugInfo = prevIsInitializingDebugInfo;\n }\n \"fulfilled\" === chunk.status ? initializeIOInfo(response, chunk.value) : chunk.then(function(v) {\n initializeIOInfo(response, v);\n }, function() {});\n }\n function mergeBuffer(buffer, lastChunk) {\n for(var l = buffer.length, byteLength = lastChunk.length, i = 0; i < l; i++)byteLength += buffer[i].byteLength;\n byteLength = new Uint8Array(byteLength);\n for(var _i3 = i = 0; _i3 < l; _i3++){\n var chunk = buffer[_i3];\n byteLength.set(chunk, i);\n i += chunk.byteLength;\n }\n byteLength.set(lastChunk, i);\n return byteLength;\n }\n function resolveTypedArray(response, id, buffer, lastChunk, constructor, bytesPerElement, streamState) {\n buffer = 0 === buffer.length && 0 === lastChunk.byteOffset % bytesPerElement ? lastChunk : mergeBuffer(buffer, lastChunk);\n constructor = new constructor(buffer.buffer, buffer.byteOffset, buffer.byteLength / bytesPerElement);\n resolveBuffer(response, id, constructor, streamState);\n }\n function flushComponentPerformance(response$jscomp$0, root, trackIdx$jscomp$6, trackTime, parentEndTime) {\n if (!isArrayImpl(root._children)) {\n var previousResult = root._children, previousEndTime = previousResult.endTime;\n if (-Infinity < parentEndTime && parentEndTime < previousEndTime && null !== previousResult.component) {\n var componentInfo = previousResult.component, trackIdx = trackIdx$jscomp$6, startTime = parentEndTime;\n if (supportsUserTiming && 0 <= previousEndTime && 10 > trackIdx) {\n var color = componentInfo.env === response$jscomp$0._rootEnvironmentName ? \"primary-light\" : \"secondary-light\", entryName = componentInfo.name + \" [deduped]\", debugTask = componentInfo.debugTask;\n debugTask ? debugTask.run(console.timeStamp.bind(console, entryName, 0 > startTime ? 0 : startTime, previousEndTime, trackNames[trackIdx], \"Server Components \\u269b\", color)) : console.timeStamp(entryName, 0 > startTime ? 0 : startTime, previousEndTime, trackNames[trackIdx], \"Server Components \\u269b\", color);\n }\n }\n previousResult.track = trackIdx$jscomp$6;\n return previousResult;\n }\n var children = root._children;\n var debugInfo = root._debugInfo;\n if (0 === debugInfo.length && \"fulfilled\" === root.status) {\n var resolvedValue = resolveLazy(root.value);\n \"object\" === typeof resolvedValue && null !== resolvedValue && (isArrayImpl(resolvedValue) || \"function\" === typeof resolvedValue[ASYNC_ITERATOR] || resolvedValue.$$typeof === REACT_ELEMENT_TYPE || resolvedValue.$$typeof === REACT_LAZY_TYPE) && isArrayImpl(resolvedValue._debugInfo) && (debugInfo = resolvedValue._debugInfo);\n }\n if (debugInfo) {\n for(var startTime$jscomp$0 = 0, i = 0; i < debugInfo.length; i++){\n var info = debugInfo[i];\n \"number\" === typeof info.time && (startTime$jscomp$0 = info.time);\n if (\"string\" === typeof info.name) {\n startTime$jscomp$0 < trackTime && trackIdx$jscomp$6++;\n trackTime = startTime$jscomp$0;\n break;\n }\n }\n for(var _i4 = debugInfo.length - 1; 0 <= _i4; _i4--){\n var _info = debugInfo[_i4];\n if (\"number\" === typeof _info.time && _info.time > parentEndTime) {\n parentEndTime = _info.time;\n break;\n }\n }\n }\n var result = {\n track: trackIdx$jscomp$6,\n endTime: -Infinity,\n component: null\n };\n root._children = result;\n for(var childrenEndTime = -Infinity, childTrackIdx = trackIdx$jscomp$6, childTrackTime = trackTime, _i5 = 0; _i5 < children.length; _i5++){\n var childResult = flushComponentPerformance(response$jscomp$0, children[_i5], childTrackIdx, childTrackTime, parentEndTime);\n null !== childResult.component && (result.component = childResult.component);\n childTrackIdx = childResult.track;\n var childEndTime = childResult.endTime;\n childEndTime > childTrackTime && (childTrackTime = childEndTime);\n childEndTime > childrenEndTime && (childrenEndTime = childEndTime);\n }\n if (debugInfo) for(var componentEndTime = 0, isLastComponent = !0, endTime = -1, endTimeIdx = -1, _i6 = debugInfo.length - 1; 0 <= _i6; _i6--){\n var _info2 = debugInfo[_i6];\n if (\"number\" === typeof _info2.time) {\n 0 === componentEndTime && (componentEndTime = _info2.time);\n var time = _info2.time;\n if (-1 < endTimeIdx) for(var j = endTimeIdx - 1; j > _i6; j--){\n var candidateInfo = debugInfo[j];\n if (\"string\" === typeof candidateInfo.name) {\n componentEndTime > childrenEndTime && (childrenEndTime = componentEndTime);\n var componentInfo$jscomp$0 = candidateInfo, response = response$jscomp$0, componentInfo$jscomp$1 = componentInfo$jscomp$0, trackIdx$jscomp$0 = trackIdx$jscomp$6, startTime$jscomp$1 = time, componentEndTime$jscomp$0 = componentEndTime, childrenEndTime$jscomp$0 = childrenEndTime;\n if (isLastComponent && \"rejected\" === root.status && root.reason !== response._closedReason) {\n var componentInfo$jscomp$2 = componentInfo$jscomp$1, trackIdx$jscomp$1 = trackIdx$jscomp$0, startTime$jscomp$2 = startTime$jscomp$1, childrenEndTime$jscomp$1 = childrenEndTime$jscomp$0, error = root.reason;\n if (supportsUserTiming) {\n var env = componentInfo$jscomp$2.env, name = componentInfo$jscomp$2.name, entryName$jscomp$0 = env === response._rootEnvironmentName || void 0 === env ? name : name + \" [\" + env + \"]\", measureName = \"\\u200b\" + entryName$jscomp$0, properties = [\n [\n \"Error\",\n \"object\" === typeof error && null !== error && \"string\" === typeof error.message ? String(error.message) : String(error)\n ]\n ];\n null != componentInfo$jscomp$2.key && addValueToProperties(\"key\", componentInfo$jscomp$2.key, properties, 0, \"\");\n null != componentInfo$jscomp$2.props && addObjectToProperties(componentInfo$jscomp$2.props, properties, 0, \"\");\n performance.measure(measureName, {\n start: 0 > startTime$jscomp$2 ? 0 : startTime$jscomp$2,\n end: childrenEndTime$jscomp$1,\n detail: {\n devtools: {\n color: \"error\",\n track: trackNames[trackIdx$jscomp$1],\n trackGroup: \"Server Components \\u269b\",\n tooltipText: entryName$jscomp$0 + \" Errored\",\n properties: properties\n }\n }\n });\n performance.clearMeasures(measureName);\n }\n } else {\n var componentInfo$jscomp$3 = componentInfo$jscomp$1, trackIdx$jscomp$2 = trackIdx$jscomp$0, startTime$jscomp$3 = startTime$jscomp$1, childrenEndTime$jscomp$2 = childrenEndTime$jscomp$0;\n if (supportsUserTiming && 0 <= childrenEndTime$jscomp$2 && 10 > trackIdx$jscomp$2) {\n var env$jscomp$0 = componentInfo$jscomp$3.env, name$jscomp$0 = componentInfo$jscomp$3.name, isPrimaryEnv = env$jscomp$0 === response._rootEnvironmentName, selfTime = componentEndTime$jscomp$0 - startTime$jscomp$3, color$jscomp$0 = 0.5 > selfTime ? isPrimaryEnv ? \"primary-light\" : \"secondary-light\" : 50 > selfTime ? isPrimaryEnv ? \"primary\" : \"secondary\" : 500 > selfTime ? isPrimaryEnv ? \"primary-dark\" : \"secondary-dark\" : \"error\", debugTask$jscomp$0 = componentInfo$jscomp$3.debugTask, measureName$jscomp$0 = \"\\u200b\" + (isPrimaryEnv || void 0 === env$jscomp$0 ? name$jscomp$0 : name$jscomp$0 + \" [\" + env$jscomp$0 + \"]\");\n if (debugTask$jscomp$0) {\n var properties$jscomp$0 = [];\n null != componentInfo$jscomp$3.key && addValueToProperties(\"key\", componentInfo$jscomp$3.key, properties$jscomp$0, 0, \"\");\n null != componentInfo$jscomp$3.props && addObjectToProperties(componentInfo$jscomp$3.props, properties$jscomp$0, 0, \"\");\n debugTask$jscomp$0.run(performance.measure.bind(performance, measureName$jscomp$0, {\n start: 0 > startTime$jscomp$3 ? 0 : startTime$jscomp$3,\n end: childrenEndTime$jscomp$2,\n detail: {\n devtools: {\n color: color$jscomp$0,\n track: trackNames[trackIdx$jscomp$2],\n trackGroup: \"Server Components \\u269b\",\n properties: properties$jscomp$0\n }\n }\n }));\n performance.clearMeasures(measureName$jscomp$0);\n } else console.timeStamp(measureName$jscomp$0, 0 > startTime$jscomp$3 ? 0 : startTime$jscomp$3, childrenEndTime$jscomp$2, trackNames[trackIdx$jscomp$2], \"Server Components \\u269b\", color$jscomp$0);\n }\n }\n componentEndTime = time;\n result.component = componentInfo$jscomp$0;\n isLastComponent = !1;\n } else if (candidateInfo.awaited && null != candidateInfo.awaited.env) {\n endTime > childrenEndTime && (childrenEndTime = endTime);\n var asyncInfo = candidateInfo, env$jscomp$1 = response$jscomp$0._rootEnvironmentName, promise = asyncInfo.awaited.value;\n if (promise) {\n var thenable = promise;\n switch(thenable.status){\n case \"fulfilled\":\n logComponentAwait(asyncInfo, trackIdx$jscomp$6, time, endTime, env$jscomp$1, thenable.value);\n break;\n case \"rejected\":\n var asyncInfo$jscomp$0 = asyncInfo, trackIdx$jscomp$3 = trackIdx$jscomp$6, startTime$jscomp$4 = time, endTime$jscomp$0 = endTime, rootEnv = env$jscomp$1, error$jscomp$0 = thenable.reason;\n if (supportsUserTiming && 0 < endTime$jscomp$0) {\n var description = getIODescription(error$jscomp$0), entryName$jscomp$1 = \"await \" + getIOShortName(asyncInfo$jscomp$0.awaited, description, asyncInfo$jscomp$0.env, rootEnv), debugTask$jscomp$1 = asyncInfo$jscomp$0.debugTask || asyncInfo$jscomp$0.awaited.debugTask;\n if (debugTask$jscomp$1) {\n var properties$jscomp$1 = [\n [\n \"Rejected\",\n \"object\" === typeof error$jscomp$0 && null !== error$jscomp$0 && \"string\" === typeof error$jscomp$0.message ? String(error$jscomp$0.message) : String(error$jscomp$0)\n ]\n ], tooltipText = getIOLongName(asyncInfo$jscomp$0.awaited, description, asyncInfo$jscomp$0.env, rootEnv) + \" Rejected\";\n debugTask$jscomp$1.run(performance.measure.bind(performance, entryName$jscomp$1, {\n start: 0 > startTime$jscomp$4 ? 0 : startTime$jscomp$4,\n end: endTime$jscomp$0,\n detail: {\n devtools: {\n color: \"error\",\n track: trackNames[trackIdx$jscomp$3],\n trackGroup: \"Server Components \\u269b\",\n properties: properties$jscomp$1,\n tooltipText: tooltipText\n }\n }\n }));\n performance.clearMeasures(entryName$jscomp$1);\n } else console.timeStamp(entryName$jscomp$1, 0 > startTime$jscomp$4 ? 0 : startTime$jscomp$4, endTime$jscomp$0, trackNames[trackIdx$jscomp$3], \"Server Components \\u269b\", \"error\");\n }\n break;\n default:\n logComponentAwait(asyncInfo, trackIdx$jscomp$6, time, endTime, env$jscomp$1, void 0);\n }\n } else logComponentAwait(asyncInfo, trackIdx$jscomp$6, time, endTime, env$jscomp$1, void 0);\n }\n }\n else {\n endTime = time;\n for(var _j = debugInfo.length - 1; _j > _i6; _j--){\n var _candidateInfo = debugInfo[_j];\n if (\"string\" === typeof _candidateInfo.name) {\n componentEndTime > childrenEndTime && (childrenEndTime = componentEndTime);\n var _componentInfo = _candidateInfo, _env = response$jscomp$0._rootEnvironmentName, componentInfo$jscomp$4 = _componentInfo, trackIdx$jscomp$4 = trackIdx$jscomp$6, startTime$jscomp$5 = time, childrenEndTime$jscomp$3 = childrenEndTime;\n if (supportsUserTiming) {\n var env$jscomp$2 = componentInfo$jscomp$4.env, name$jscomp$1 = componentInfo$jscomp$4.name, entryName$jscomp$2 = env$jscomp$2 === _env || void 0 === env$jscomp$2 ? name$jscomp$1 : name$jscomp$1 + \" [\" + env$jscomp$2 + \"]\", measureName$jscomp$1 = \"\\u200b\" + entryName$jscomp$2, properties$jscomp$2 = [\n [\n \"Aborted\",\n \"The stream was aborted before this Component finished rendering.\"\n ]\n ];\n null != componentInfo$jscomp$4.key && addValueToProperties(\"key\", componentInfo$jscomp$4.key, properties$jscomp$2, 0, \"\");\n null != componentInfo$jscomp$4.props && addObjectToProperties(componentInfo$jscomp$4.props, properties$jscomp$2, 0, \"\");\n performance.measure(measureName$jscomp$1, {\n start: 0 > startTime$jscomp$5 ? 0 : startTime$jscomp$5,\n end: childrenEndTime$jscomp$3,\n detail: {\n devtools: {\n color: \"warning\",\n track: trackNames[trackIdx$jscomp$4],\n trackGroup: \"Server Components \\u269b\",\n tooltipText: entryName$jscomp$2 + \" Aborted\",\n properties: properties$jscomp$2\n }\n }\n });\n performance.clearMeasures(measureName$jscomp$1);\n }\n componentEndTime = time;\n result.component = _componentInfo;\n isLastComponent = !1;\n } else if (_candidateInfo.awaited && null != _candidateInfo.awaited.env) {\n var _asyncInfo = _candidateInfo, _env2 = response$jscomp$0._rootEnvironmentName;\n _asyncInfo.awaited.end > endTime && (endTime = _asyncInfo.awaited.end);\n endTime > childrenEndTime && (childrenEndTime = endTime);\n var asyncInfo$jscomp$1 = _asyncInfo, trackIdx$jscomp$5 = trackIdx$jscomp$6, startTime$jscomp$6 = time, endTime$jscomp$1 = endTime, rootEnv$jscomp$0 = _env2;\n if (supportsUserTiming && 0 < endTime$jscomp$1) {\n var entryName$jscomp$3 = \"await \" + getIOShortName(asyncInfo$jscomp$1.awaited, \"\", asyncInfo$jscomp$1.env, rootEnv$jscomp$0), debugTask$jscomp$2 = asyncInfo$jscomp$1.debugTask || asyncInfo$jscomp$1.awaited.debugTask;\n if (debugTask$jscomp$2) {\n var tooltipText$jscomp$0 = getIOLongName(asyncInfo$jscomp$1.awaited, \"\", asyncInfo$jscomp$1.env, rootEnv$jscomp$0) + \" Aborted\";\n debugTask$jscomp$2.run(performance.measure.bind(performance, entryName$jscomp$3, {\n start: 0 > startTime$jscomp$6 ? 0 : startTime$jscomp$6,\n end: endTime$jscomp$1,\n detail: {\n devtools: {\n color: \"warning\",\n track: trackNames[trackIdx$jscomp$5],\n trackGroup: \"Server Components \\u269b\",\n properties: [\n [\n \"Aborted\",\n \"The stream was aborted before this Promise resolved.\"\n ]\n ],\n tooltipText: tooltipText$jscomp$0\n }\n }\n }));\n performance.clearMeasures(entryName$jscomp$3);\n } else console.timeStamp(entryName$jscomp$3, 0 > startTime$jscomp$6 ? 0 : startTime$jscomp$6, endTime$jscomp$1, trackNames[trackIdx$jscomp$5], \"Server Components \\u269b\", \"warning\");\n }\n }\n }\n }\n endTime = time;\n endTimeIdx = _i6;\n }\n }\n result.endTime = childrenEndTime;\n return result;\n }\n function flushInitialRenderPerformance(response) {\n if (response._replayConsole) {\n var rootChunk = getChunk(response, 0);\n isArrayImpl(rootChunk._children) && (markAllTracksInOrder(), flushComponentPerformance(response, rootChunk, 0, -Infinity, -Infinity));\n }\n }\n function processFullBinaryRow(response, streamState, id, tag, buffer, chunk) {\n switch(tag){\n case 65:\n resolveBuffer(response, id, mergeBuffer(buffer, chunk).buffer, streamState);\n return;\n case 79:\n resolveTypedArray(response, id, buffer, chunk, Int8Array, 1, streamState);\n return;\n case 111:\n resolveBuffer(response, id, 0 === buffer.length ? chunk : mergeBuffer(buffer, chunk), streamState);\n return;\n case 85:\n resolveTypedArray(response, id, buffer, chunk, Uint8ClampedArray, 1, streamState);\n return;\n case 83:\n resolveTypedArray(response, id, buffer, chunk, Int16Array, 2, streamState);\n return;\n case 115:\n resolveTypedArray(response, id, buffer, chunk, Uint16Array, 2, streamState);\n return;\n case 76:\n resolveTypedArray(response, id, buffer, chunk, Int32Array, 4, streamState);\n return;\n case 108:\n resolveTypedArray(response, id, buffer, chunk, Uint32Array, 4, streamState);\n return;\n case 71:\n resolveTypedArray(response, id, buffer, chunk, Float32Array, 4, streamState);\n return;\n case 103:\n resolveTypedArray(response, id, buffer, chunk, Float64Array, 8, streamState);\n return;\n case 77:\n resolveTypedArray(response, id, buffer, chunk, BigInt64Array, 8, streamState);\n return;\n case 109:\n resolveTypedArray(response, id, buffer, chunk, BigUint64Array, 8, streamState);\n return;\n case 86:\n resolveTypedArray(response, id, buffer, chunk, DataView, 1, streamState);\n return;\n }\n for(var stringDecoder = response._stringDecoder, row = \"\", i = 0; i < buffer.length; i++)row += stringDecoder.decode(buffer[i], decoderOptions);\n row += stringDecoder.decode(chunk);\n processFullStringRow(response, streamState, id, tag, row);\n }\n function processFullStringRow(response, streamState, id, tag, row) {\n switch(tag){\n case 73:\n resolveModule(response, id, row, streamState);\n break;\n case 72:\n id = row[0];\n streamState = row.slice(1);\n response = parseModel(response, streamState);\n streamState = ReactDOMSharedInternals.d;\n switch(id){\n case \"D\":\n streamState.D(response);\n break;\n case \"C\":\n \"string\" === typeof response ? streamState.C(response) : streamState.C(response[0], response[1]);\n break;\n case \"L\":\n id = response[0];\n row = response[1];\n 3 === response.length ? streamState.L(id, row, response[2]) : streamState.L(id, row);\n break;\n case \"m\":\n \"string\" === typeof response ? streamState.m(response) : streamState.m(response[0], response[1]);\n break;\n case \"X\":\n \"string\" === typeof response ? streamState.X(response) : streamState.X(response[0], response[1]);\n break;\n case \"S\":\n \"string\" === typeof response ? streamState.S(response) : streamState.S(response[0], 0 === response[1] ? void 0 : response[1], 3 === response.length ? response[2] : void 0);\n break;\n case \"M\":\n \"string\" === typeof response ? streamState.M(response) : streamState.M(response[0], response[1]);\n }\n break;\n case 69:\n tag = response._chunks;\n var chunk = tag.get(id);\n row = JSON.parse(row);\n var error = resolveErrorDev(response, row);\n error.digest = row.digest;\n chunk ? (resolveChunkDebugInfo(response, streamState, chunk), triggerErrorOnChunk(response, chunk, error)) : (row = new ReactPromise(\"rejected\", null, error), resolveChunkDebugInfo(response, streamState, row), tag.set(id, row));\n break;\n case 84:\n tag = response._chunks;\n (chunk = tag.get(id)) && \"pending\" !== chunk.status ? chunk.reason.enqueueValue(row) : (chunk && releasePendingChunk(response, chunk), row = new ReactPromise(\"fulfilled\", row, null), resolveChunkDebugInfo(response, streamState, row), tag.set(id, row));\n break;\n case 78:\n response._timeOrigin = +row - performance.timeOrigin;\n break;\n case 68:\n id = getChunk(response, id);\n \"fulfilled\" !== id.status && \"rejected\" !== id.status && \"halted\" !== id.status && \"blocked\" !== id.status && \"resolved_module\" !== id.status && (streamState = id._debugChunk, tag = createResolvedModelChunk(response, row), tag._debugChunk = streamState, id._debugChunk = tag, initializeDebugChunk(response, id), \"blocked\" !== tag.status || void 0 !== response._debugChannel && response._debugChannel.hasReadable || '\"' !== row[0] || \"$\" !== row[1] || (streamState = row.slice(2, row.length - 1).split(\":\"), streamState = parseInt(streamState[0], 16), \"pending\" === getChunk(response, streamState).status && (id._debugChunk = null)));\n break;\n case 74:\n resolveIOInfo(response, id, row);\n break;\n case 87:\n resolveConsoleEntry(response, row);\n break;\n case 82:\n startReadableStream(response, id, void 0, streamState);\n break;\n case 114:\n startReadableStream(response, id, \"bytes\", streamState);\n break;\n case 88:\n startAsyncIterable(response, id, !1, streamState);\n break;\n case 120:\n startAsyncIterable(response, id, !0, streamState);\n break;\n case 67:\n (id = response._chunks.get(id)) && \"fulfilled\" === id.status && (0 === --response._pendingChunks && (response._weakResponse.response = null), id.reason.close(\"\" === row ? '\"$undefined\"' : row));\n break;\n default:\n if (\"\" === row) {\n if (streamState = response._chunks, (row = streamState.get(id)) || streamState.set(id, row = createPendingChunk(response)), \"pending\" === row.status || \"blocked\" === row.status) releasePendingChunk(response, row), response = row, response.status = \"halted\", response.value = null, response.reason = null;\n } else tag = response._chunks, (chunk = tag.get(id)) ? (resolveChunkDebugInfo(response, streamState, chunk), resolveModelChunk(response, chunk, row)) : (row = createResolvedModelChunk(response, row), resolveChunkDebugInfo(response, streamState, row), tag.set(id, row));\n }\n }\n function processBinaryChunk(weakResponse, streamState, chunk) {\n if (!hasGCedResponse(weakResponse)) {\n weakResponse = unwrapWeakResponse(weakResponse);\n var i = 0, rowState = streamState._rowState, rowID = streamState._rowID, rowTag = streamState._rowTag, rowLength = streamState._rowLength, buffer = streamState._buffer, chunkLength = chunk.length;\n for(incrementChunkDebugInfo(streamState, chunkLength); i < chunkLength;){\n var lastIdx = -1;\n switch(rowState){\n case 0:\n lastIdx = chunk[i++];\n 58 === lastIdx ? rowState = 1 : rowID = rowID << 4 | (96 < lastIdx ? lastIdx - 87 : lastIdx - 48);\n continue;\n case 1:\n rowState = chunk[i];\n 84 === rowState || 65 === rowState || 79 === rowState || 111 === rowState || 98 === rowState || 85 === rowState || 83 === rowState || 115 === rowState || 76 === rowState || 108 === rowState || 71 === rowState || 103 === rowState || 77 === rowState || 109 === rowState || 86 === rowState ? (rowTag = rowState, rowState = 2, i++) : 64 < rowState && 91 > rowState || 35 === rowState || 114 === rowState || 120 === rowState ? (rowTag = rowState, rowState = 3, i++) : (rowTag = 0, rowState = 3);\n continue;\n case 2:\n lastIdx = chunk[i++];\n 44 === lastIdx ? rowState = 4 : rowLength = rowLength << 4 | (96 < lastIdx ? lastIdx - 87 : lastIdx - 48);\n continue;\n case 3:\n lastIdx = chunk.indexOf(10, i);\n break;\n case 4:\n lastIdx = i + rowLength, lastIdx > chunk.length && (lastIdx = -1);\n }\n var offset = chunk.byteOffset + i;\n if (-1 < lastIdx) rowLength = new Uint8Array(chunk.buffer, offset, lastIdx - i), 98 === rowTag ? resolveBuffer(weakResponse, rowID, lastIdx === chunkLength ? rowLength : rowLength.slice(), streamState) : processFullBinaryRow(weakResponse, streamState, rowID, rowTag, buffer, rowLength), i = lastIdx, 3 === rowState && i++, rowLength = rowID = rowTag = rowState = 0, buffer.length = 0;\n else {\n chunk = new Uint8Array(chunk.buffer, offset, chunk.byteLength - i);\n 98 === rowTag ? (rowLength -= chunk.byteLength, resolveBuffer(weakResponse, rowID, chunk, streamState)) : (buffer.push(chunk), rowLength -= chunk.byteLength);\n break;\n }\n }\n streamState._rowState = rowState;\n streamState._rowID = rowID;\n streamState._rowTag = rowTag;\n streamState._rowLength = rowLength;\n }\n }\n function parseModel(response, json) {\n json = JSON.parse(json);\n return reviveModel(response, json, {\n \"\": json\n }, \"\");\n }\n function reviveModel(response, value, parentObject, key) {\n if (\"string\" === typeof value) return \"$\" === value[0] ? parseModelString(response, parentObject, key, value) : value;\n if (\"object\" !== typeof value || null === value) return value;\n if (isArrayImpl(value)) {\n for(var i = 0; i < value.length; i++)value[i] = reviveModel(response, value[i], value, \"\" + i);\n if (value[0] === REACT_ELEMENT_TYPE) {\n if (value[0] === REACT_ELEMENT_TYPE) b: {\n key = value[4];\n parentObject = value[5];\n i = value[6];\n value = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: value[1],\n key: value[2],\n props: value[3],\n _owner: void 0 === key ? null : key\n };\n Object.defineProperty(value, \"ref\", {\n enumerable: !1,\n get: nullRefGetter\n });\n value._store = {};\n Object.defineProperty(value._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: i\n });\n Object.defineProperty(value, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(value, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: void 0 === parentObject ? null : parentObject\n });\n Object.defineProperty(value, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n if (null !== initializingHandler) {\n key = initializingHandler;\n initializingHandler = key.parent;\n if (key.errored) {\n parentObject = new ReactPromise(\"rejected\", null, key.reason);\n initializeElement(response, value, null);\n response = {\n name: getComponentNameFromType(value.type) || \"\",\n owner: value._owner\n };\n response.debugStack = value._debugStack;\n supportsCreateTask && (response.debugTask = value._debugTask);\n parentObject._debugInfo = [\n response\n ];\n response = createLazyChunkWrapper(parentObject, i);\n break b;\n }\n if (0 < key.deps) {\n parentObject = new ReactPromise(\"blocked\", null, null);\n key.value = value;\n key.chunk = parentObject;\n i = createLazyChunkWrapper(parentObject, i);\n response = initializeElement.bind(null, response, value, i);\n parentObject.then(response, response);\n response = i;\n break b;\n }\n }\n initializeElement(response, value, null);\n response = value;\n }\n else response = value;\n return response;\n }\n return value;\n }\n for(i in value)\"__proto__\" === i ? delete value[i] : (parentObject = reviveModel(response, value[i], value, i), void 0 !== parentObject ? value[i] = parentObject : delete value[i]);\n return value;\n }\n function close(weakResponse) {\n if (!hasGCedResponse(weakResponse)) {\n var response = unwrapWeakResponse(weakResponse);\n response._allowPartialStream ? (response._closed = !0, response._chunks.forEach(function(chunk) {\n \"pending\" === chunk.status ? (releasePendingChunk(response, chunk), chunk.status = \"halted\", chunk.value = null, chunk.reason = null) : \"fulfilled\" === chunk.status && null !== chunk.reason && chunk.reason.close('\"$undefined\"');\n }), weakResponse = response._debugChannel, void 0 !== weakResponse && (closeDebugChannel(weakResponse), response._debugChannel = void 0, null !== debugChannelRegistry && debugChannelRegistry.unregister(response))) : reportGlobalError(weakResponse, Error(\"Connection closed.\"));\n }\n }\n function noServerCall$1() {\n throw Error(\"Server Functions cannot be called during initial render. This would create a fetch waterfall. Try to use a Server Component to pass data to Client Components instead.\");\n }\n function createResponseFromOptions(options) {\n return createResponse(options.serverConsumerManifest.moduleMap, options.serverConsumerManifest.serverModuleMap, options.serverConsumerManifest.moduleLoading, noServerCall$1, options.encodeFormAction, \"string\" === typeof options.nonce ? options.nonce : void 0, options && options.temporaryReferences ? options.temporaryReferences : void 0, options && options.unstable_allowPartialStream ? options.unstable_allowPartialStream : !1, options && options.findSourceMapURL ? options.findSourceMapURL : void 0, options ? !0 === options.replayConsoleLogs : !1, options && options.environmentName ? options.environmentName : void 0, options && null != options.startTime ? options.startTime : void 0, options && null != options.endTime ? options.endTime : void 0, options && void 0 !== options.debugChannel ? {\n hasReadable: void 0 !== options.debugChannel.readable,\n callback: null\n } : void 0);\n }\n function startReadingFromStream$1(response, stream, onDone, debugValue) {\n function progress(_ref) {\n var value = _ref.value;\n if (_ref.done) return onDone();\n processBinaryChunk(response, streamState, value);\n return reader.read().then(progress).catch(error);\n }\n function error(e) {\n reportGlobalError(response, e);\n }\n var streamState = createStreamState(response, debugValue), reader = stream.getReader();\n reader.read().then(progress).catch(error);\n }\n function noServerCall() {\n throw Error(\"Server Functions cannot be called during initial render. This would create a fetch waterfall. Try to use a Server Component to pass data to Client Components instead.\");\n }\n function startReadingFromStream(response$jscomp$0, stream, onEnd) {\n var streamState = createStreamState(response$jscomp$0, stream);\n stream.on(\"data\", function(chunk) {\n if (\"string\" === typeof chunk) {\n if (!hasGCedResponse(response$jscomp$0)) {\n var response = unwrapWeakResponse(response$jscomp$0), i = 0, rowState = streamState._rowState, rowID = streamState._rowID, rowTag = streamState._rowTag, rowLength = streamState._rowLength, buffer = streamState._buffer, chunkLength = chunk.length;\n for(incrementChunkDebugInfo(streamState, chunkLength); i < chunkLength;){\n var lastIdx = -1;\n switch(rowState){\n case 0:\n lastIdx = chunk.charCodeAt(i++);\n 58 === lastIdx ? rowState = 1 : rowID = rowID << 4 | (96 < lastIdx ? lastIdx - 87 : lastIdx - 48);\n continue;\n case 1:\n rowState = chunk.charCodeAt(i);\n 84 === rowState || 65 === rowState || 79 === rowState || 111 === rowState || 85 === rowState || 83 === rowState || 115 === rowState || 76 === rowState || 108 === rowState || 71 === rowState || 103 === rowState || 77 === rowState || 109 === rowState || 86 === rowState ? (rowTag = rowState, rowState = 2, i++) : 64 < rowState && 91 > rowState || 114 === rowState || 120 === rowState ? (rowTag = rowState, rowState = 3, i++) : (rowTag = 0, rowState = 3);\n continue;\n case 2:\n lastIdx = chunk.charCodeAt(i++);\n 44 === lastIdx ? rowState = 4 : rowLength = rowLength << 4 | (96 < lastIdx ? lastIdx - 87 : lastIdx - 48);\n continue;\n case 3:\n lastIdx = chunk.indexOf(\"\\n\", i);\n break;\n case 4:\n if (84 !== rowTag) throw Error(\"Binary RSC chunks cannot be encoded as strings. This is a bug in the wiring of the React streams.\");\n if (rowLength < chunk.length || chunk.length > 3 * rowLength) throw Error(\"String chunks need to be passed in their original shape. Not split into smaller string chunks. This is a bug in the wiring of the React streams.\");\n lastIdx = chunk.length;\n }\n if (-1 < lastIdx) {\n if (0 < buffer.length) throw Error(\"String chunks need to be passed in their original shape. Not split into smaller string chunks. This is a bug in the wiring of the React streams.\");\n i = chunk.slice(i, lastIdx);\n processFullStringRow(response, streamState, rowID, rowTag, i);\n i = lastIdx;\n 3 === rowState && i++;\n rowLength = rowID = rowTag = rowState = 0;\n buffer.length = 0;\n } else if (chunk.length !== i) throw Error(\"String chunks need to be passed in their original shape. Not split into smaller string chunks. This is a bug in the wiring of the React streams.\");\n }\n streamState._rowState = rowState;\n streamState._rowID = rowID;\n streamState._rowTag = rowTag;\n streamState._rowLength = rowLength;\n }\n } else processBinaryChunk(response$jscomp$0, streamState, chunk);\n });\n stream.on(\"error\", function(error) {\n reportGlobalError(response$jscomp$0, error);\n });\n stream.on(\"end\", onEnd);\n }\n var util = __webpack_require__(/*! util */ \"util\"), ReactDOM = __webpack_require__(/*! react-dom */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-dom.js\"), React = __webpack_require__(/*! react */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js\"), decoderOptions = {\n stream: !0\n }, bind$1 = Function.prototype.bind, hasConfirmedEval = !1, hasOwnProperty = Object.prototype.hasOwnProperty, chunkCache = new Map(), ReactDOMSharedInternals = ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"), REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"), REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"), REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"), REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"), REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"), REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"), REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"), REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"), REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"), REACT_MEMO_TYPE = Symbol.for(\"react.memo\"), REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"), REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"), REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"), MAYBE_ITERATOR_SYMBOL = Symbol.iterator, ASYNC_ITERATOR = Symbol.asyncIterator, isArrayImpl = Array.isArray, getPrototypeOf = Object.getPrototypeOf, jsxPropsParents = new WeakMap(), jsxChildrenParents = new WeakMap(), CLIENT_REFERENCE_TAG = Symbol.for(\"react.client.reference\"), ObjectPrototype = Object.prototype, knownServerReferences = new WeakMap(), boundCache = new WeakMap(), fakeServerFunctionIdx = 0, FunctionBind = Function.prototype.bind, ArraySlice = Array.prototype.slice, v8FrameRegExp = /^ {3} at (?:(.+) \\((.+):(\\d+):(\\d+)\\)|(?:async )?(.+):(\\d+):(\\d+))$/, jscSpiderMonkeyFrameRegExp = /(?:(.*)@)?(.*):(\\d+):(\\d+)/, REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"), supportsUserTiming = \"undefined\" !== typeof console && \"function\" === typeof console.timeStamp && \"undefined\" !== typeof performance && \"function\" === typeof performance.measure, trackNames = \"Primary Parallel Parallel\\u200b Parallel\\u200b\\u200b Parallel\\u200b\\u200b\\u200b Parallel\\u200b\\u200b\\u200b\\u200b Parallel\\u200b\\u200b\\u200b\\u200b\\u200b Parallel\\u200b\\u200b\\u200b\\u200b\\u200b\\u200b Parallel\\u200b\\u200b\\u200b\\u200b\\u200b\\u200b\\u200b Parallel\\u200b\\u200b\\u200b\\u200b\\u200b\\u200b\\u200b\\u200b\".split(\" \"), prefix, suffix;\n new (\"function\" === typeof WeakMap ? WeakMap : Map)();\n var ReactSharedInteralsServer = React.__SERVER_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, ReactSharedInternals = React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE || ReactSharedInteralsServer;\n ReactPromise.prototype = Object.create(Promise.prototype);\n ReactPromise.prototype.then = function(resolve, reject) {\n var _this = this;\n switch(this.status){\n case \"resolved_model\":\n initializeModelChunk(this);\n break;\n case \"resolved_module\":\n initializeModuleChunk(this);\n }\n var resolveCallback = resolve, rejectCallback = reject, wrapperPromise = new Promise(function(res, rej) {\n resolve = function(value) {\n wrapperPromise._debugInfo = _this._debugInfo;\n res(value);\n };\n reject = function(reason) {\n wrapperPromise._debugInfo = _this._debugInfo;\n rej(reason);\n };\n });\n wrapperPromise.then(resolveCallback, rejectCallback);\n switch(this.status){\n case \"fulfilled\":\n \"function\" === typeof resolve && resolve(this.value);\n break;\n case \"pending\":\n case \"blocked\":\n \"function\" === typeof resolve && (null === this.value && (this.value = []), this.value.push(resolve));\n \"function\" === typeof reject && (null === this.reason && (this.reason = []), this.reason.push(reject));\n break;\n case \"halted\":\n break;\n default:\n \"function\" === typeof reject && reject(this.reason);\n }\n };\n var debugChannelRegistry = \"function\" === typeof FinalizationRegistry ? new FinalizationRegistry(closeDebugChannel) : null, initializingHandler = null, initializingChunk = null, isInitializingDebugInfo = !1, mightHaveStaticConstructor = /\\bclass\\b.*\\bstatic\\b/, MIN_CHUNK_SIZE = 65536, supportsCreateTask = !!console.createTask, fakeFunctionCache = new Map(), fakeFunctionIdx = 0, createFakeJSXCallStack = {\n react_stack_bottom_frame: function(response, stack, environmentName) {\n return buildFakeCallStack(response, stack, environmentName, !1, fakeJSXCallSite)();\n }\n }, createFakeJSXCallStackInDEV = createFakeJSXCallStack.react_stack_bottom_frame.bind(createFakeJSXCallStack), currentOwnerInDEV = null, replayConsoleWithCallStack = {\n react_stack_bottom_frame: function(response, payload) {\n var methodName = payload[0], stackTrace = payload[1], owner = payload[2], env = payload[3];\n payload = payload.slice(4);\n var prevStack = ReactSharedInternals.getCurrentStack;\n ReactSharedInternals.getCurrentStack = getCurrentStackInDEV;\n currentOwnerInDEV = null === owner ? response._debugRootOwner : owner;\n try {\n a: {\n var offset = 0;\n switch(methodName){\n case \"dir\":\n case \"dirxml\":\n case \"groupEnd\":\n case \"table\":\n var JSCompiler_inline_result = bind$1.apply(console[methodName], [\n console\n ].concat(payload));\n break a;\n case \"assert\":\n offset = 1;\n }\n var newArgs = payload.slice(0);\n \"string\" === typeof newArgs[offset] ? newArgs.splice(offset, 1, \"\\u001b[0m\\u001b[7m%c%s\\u001b[0m%c \" + newArgs[offset], \"background: #e6e6e6;background: light-dark(rgba(0,0,0,0.1), rgba(255,255,255,0.25));color: #000000;color: light-dark(#000000, #ffffff);border-radius: 2px\", \" \" + env + \" \", \"\") : newArgs.splice(offset, 0, \"\\u001b[0m\\u001b[7m%c%s\\u001b[0m%c\", \"background: #e6e6e6;background: light-dark(rgba(0,0,0,0.1), rgba(255,255,255,0.25));color: #000000;color: light-dark(#000000, #ffffff);border-radius: 2px\", \" \" + env + \" \", \"\");\n newArgs.unshift(console);\n JSCompiler_inline_result = bind$1.apply(console[methodName], newArgs);\n }\n var callStack = buildFakeCallStack(response, stackTrace, env, !1, JSCompiler_inline_result);\n if (null != owner) {\n var task = initializeFakeTask(response, owner);\n initializeFakeStack(response, owner);\n if (null !== task) {\n task.run(callStack);\n return;\n }\n }\n var rootTask = getRootTask(response, env);\n null != rootTask ? rootTask.run(callStack) : callStack();\n } finally{\n currentOwnerInDEV = null, ReactSharedInternals.getCurrentStack = prevStack;\n }\n }\n }, replayConsoleWithCallStackInDEV = replayConsoleWithCallStack.react_stack_bottom_frame.bind(replayConsoleWithCallStack);\n exports.createFromFetch = function(promiseForResponse, options) {\n var response = createResponseFromOptions(options);\n promiseForResponse.then(function(r) {\n if (options && options.debugChannel && options.debugChannel.readable) {\n var streamDoneCount = 0, handleDone = function() {\n 2 === ++streamDoneCount && close(response);\n };\n startReadingFromStream$1(response, options.debugChannel.readable, handleDone);\n startReadingFromStream$1(response, r.body, handleDone, r);\n } else startReadingFromStream$1(response, r.body, close.bind(null, response), r);\n }, function(e) {\n reportGlobalError(response, e);\n });\n return getRoot(response);\n };\n exports.createFromNodeStream = function(stream, serverConsumerManifest, options) {\n var response = createResponse(serverConsumerManifest.moduleMap, serverConsumerManifest.serverModuleMap, serverConsumerManifest.moduleLoading, noServerCall, options ? options.encodeFormAction : void 0, options && \"string\" === typeof options.nonce ? options.nonce : void 0, void 0, options && options.unstable_allowPartialStream ? options.unstable_allowPartialStream : !1, options && options.findSourceMapURL ? options.findSourceMapURL : void 0, options ? !0 === options.replayConsoleLogs : !1, options && options.environmentName ? options.environmentName : void 0, options && null != options.startTime ? options.startTime : void 0, options && null != options.endTime ? options.endTime : void 0, options && void 0 !== options.debugChannel ? {\n hasReadable: !0,\n callback: null\n } : void 0);\n if (options && options.debugChannel) {\n var streamEndedCount = 0;\n serverConsumerManifest = function() {\n 2 === ++streamEndedCount && close(response);\n };\n startReadingFromStream(response, options.debugChannel, serverConsumerManifest);\n startReadingFromStream(response, stream, serverConsumerManifest);\n } else startReadingFromStream(response, stream, close.bind(null, response));\n return getRoot(response);\n };\n exports.createFromReadableStream = function(stream, options) {\n var response = createResponseFromOptions(options);\n if (options && options.debugChannel && options.debugChannel.readable) {\n var streamDoneCount = 0, handleDone = function() {\n 2 === ++streamDoneCount && close(response);\n };\n startReadingFromStream$1(response, options.debugChannel.readable, handleDone);\n startReadingFromStream$1(response, stream, handleDone, stream);\n } else startReadingFromStream$1(response, stream, close.bind(null, response), stream);\n return getRoot(response);\n };\n exports.createServerReference = function(id) {\n return createServerReference$1(id, noServerCall$1);\n };\n exports.createTemporaryReferenceSet = function() {\n return new Map();\n };\n exports.encodeReply = function(value, options) {\n return new Promise(function(resolve, reject) {\n var abort = processReply(value, \"\", options && options.temporaryReferences ? options.temporaryReferences : void 0, resolve, reject);\n if (options && options.signal) {\n var signal = options.signal;\n if (signal.aborted) abort(signal.reason);\n else {\n var listener = function() {\n abort(signal.reason);\n signal.removeEventListener(\"abort\", listener);\n };\n signal.addEventListener(\"abort\", listener);\n }\n }\n });\n };\n exports.registerServerReference = function(reference, id, encodeFormAction) {\n registerBoundServerReference(reference, id, null, encodeFormAction);\n return reference;\n };\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3JlYWN0LXNlcnZlci1kb20td2VicGFjay9janMvcmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrLWNsaWVudC5ub2RlLmRldmVsb3BtZW50LmpzIiwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztDQVFDLEdBRVk7QUFDYixLQUp5QyxJQUt2QztJQUNFLFNBQVNBO1FBQ1AsSUFBSSxDQUFDQyxrQkFBa0I7WUFDckJBLG1CQUFtQixDQUFDO1lBQ3BCLElBQUk7Z0JBQ0QsSUFBR0MsSUFBRyxFQUFHO1lBQ1osRUFBRSxPQUFPQyxzQkFBc0I7Z0JBQzdCQyxRQUFRQyxLQUFLLENBQ1g7WUFFSjtRQUNGO0lBQ0Y7SUFDQSxTQUFTQyx1QkFBdUJDLGFBQWEsRUFBRUMsUUFBUTtRQUNyRCxJQUFJRCxlQUFlO1lBQ2pCLElBQUlFLGdCQUFnQkYsYUFBYSxDQUFDQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzlDLElBQUtELGdCQUFnQkUsaUJBQWlCQSxhQUFhLENBQUNELFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFDOURDLGdCQUFnQkYsY0FBY0csSUFBSTtpQkFDL0I7Z0JBQ0hILGdCQUFnQkUsaUJBQWlCQSxhQUFhLENBQUMsSUFBSTtnQkFDbkQsSUFBSSxDQUFDRixlQUNILE1BQU1JLE1BQ0osZ0NBQ0VILFFBQVEsQ0FBQyxFQUFFLEdBQ1g7Z0JBRU5DLGdCQUFnQkQsUUFBUSxDQUFDLEVBQUU7WUFDN0I7WUFDQSxPQUFPLE1BQU1BLFNBQVNJLE1BQU0sR0FDeEI7Z0JBQUNMLGNBQWNNLEVBQUU7Z0JBQUVOLGNBQWNPLE1BQU07Z0JBQUVMO2dCQUFlO2FBQUUsR0FDMUQ7Z0JBQUNGLGNBQWNNLEVBQUU7Z0JBQUVOLGNBQWNPLE1BQU07Z0JBQUVMO2FBQWM7UUFDN0Q7UUFDQSxPQUFPRDtJQUNUO0lBQ0EsU0FBU08sdUJBQXVCUixhQUFhLEVBQUVNLEVBQUU7UUFDL0MsSUFBSUgsT0FBTyxJQUNUTSxxQkFBcUJU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SixRQUNBa1osTUFBTWhnQixJQUFJLENBQUMsTUFBTWtRLFdBQ2pCcEo7UUFFSixPQUFPME0sUUFBUXREO0lBQ2pCO0lBQ0FtYyw2QkFBNkIsR0FBRyxTQUFVanVCLEVBQUU7UUFDMUMsT0FBTzRQLHdCQUF3QjVQLElBQUlvckI7SUFDckM7SUFDQTZDLG1DQUFtQyxHQUFHO1FBQ3BDLE9BQU8sSUFBSTFqQjtJQUNiO0lBQ0EwakIsbUJBQW1CLEdBQUcsU0FBVW50QixLQUFLLEVBQUV3cUIsT0FBTztRQUM1QyxPQUFPLElBQUl6cEIsUUFBUSxTQUFVSCxPQUFPLEVBQUVzRixNQUFNO1lBQzFDLElBQUk2bkIsUUFBUWpvQixhQUNWOUYsT0FDQSxJQUNBd3FCLFdBQVdBLFFBQVF2a0IsbUJBQW1CLEdBQ2xDdWtCLFFBQVF2a0IsbUJBQW1CLEdBQzNCLEtBQUssR0FDVHJGLFNBQ0FzRjtZQUVGLElBQUlza0IsV0FBV0EsUUFBUXdELE1BQU0sRUFBRTtnQkFDN0IsSUFBSUEsU0FBU3hELFFBQVF3RCxNQUFNO2dCQUMzQixJQUFJQSxPQUFPQyxPQUFPLEVBQUVGLE1BQU1DLE9BQU8vdEIsTUFBTTtxQkFDbEM7b0JBQ0gsSUFBSStWLFdBQVc7d0JBQ2IrWCxNQUFNQyxPQUFPL3RCLE1BQU07d0JBQ25CK3RCLE9BQU9FLG1CQUFtQixDQUFDLFNBQVNsWTtvQkFDdEM7b0JBQ0FnWSxPQUFPRyxnQkFBZ0IsQ0FBQyxTQUFTblk7Z0JBQ25DO1lBQ0Y7UUFDRjtJQUNGO0lBQ0FtWCwrQkFBK0IsR0FBRyxTQUNoQy9oQixTQUFTLEVBQ1RsTSxFQUFFLEVBQ0ZpTyxnQkFBZ0I7UUFFaEJELDZCQUE2QjlCLFdBQVdsTSxJQUFJLE1BQU1pTztRQUNsRCxPQUFPL0I7SUFDVDtBQUNGIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jb21waWxlZC9yZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2svY2pzL3JlYWN0LXNlcnZlci1kb20td2VicGFjay1jbGllbnQubm9kZS5kZXZlbG9wbWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2stY2xpZW50Lm5vZGUuZGV2ZWxvcG1lbnQuanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xuXCJwcm9kdWN0aW9uXCIgIT09IHByb2Nlc3MuZW52Lk5PREVfRU5WICYmXG4gIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gY2hlY2tFdmFsQXZhaWxhYmlsaXR5T25jZURldigpIHtcbiAgICAgIGlmICghaGFzQ29uZmlybWVkRXZhbCkge1xuICAgICAgICBoYXNDb25maXJtZWRFdmFsID0gITA7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgKDAsIGV2YWwpKFwibnVsbFwiKTtcbiAgICAgICAgfSBjYXRjaCAoJGpzY29tcCR1bnVzZWQkY2F0Y2gpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgXCJldmFsKCkgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGVudmlyb25tZW50LiBUaGlzIGNhbiBoYXBwZW4gaWYgeW91IHN0YXJ0ZWQgdGhlIE5vZGUuanMgcHJvY2VzcyB3aXRoIC0tZGlzYWxsb3ctY29kZS1nZW5lcmF0aW9uLWZyb20tc3RyaW5ncywgb3IgaWYgYGV2YWxgIHdhcyBwYXRjaGVkIGJ5IG90aGVyIG1lYW5zLiBSZWFjdCByZXF1aXJlcyBldmFsKCkgaW4gZGV2ZWxvcG1lbnQgbW9kZSBmb3IgdmFyaW91cyBkZWJ1Z2dpbmcgZmVhdHVyZXMgbGlrZSByZWNvbnN0cnVjdGluZyBjYWxsc3RhY2tzIGZyb20gYSBkaWZmZXJlbnQgZW52aXJvbm1lbnQuXFxuUmVhY3Qgd2lsbCBuZXZlciB1c2UgZXZhbCgpIGluIHByb2R1Y3Rpb24gbW9kZVwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiByZXNvbHZlQ2xpZW50UmVmZXJlbmNlKGJ1bmRsZXJDb25maWcsIG1ldGFkYXRhKSB7XG4gICAgICBpZiAoYnVuZGxlckNvbmZpZykge1xuICAgICAgICB2YXIgbW9kdWxlRXhwb3J0cyA9IGJ1bmRsZXJDb25maWdbbWV0YWRhdGFbMF1dO1xuICAgICAgICBpZiAoKGJ1bmRsZXJDb25maWcgPSBtb2R1bGVFeHBvcnRzICYmIG1vZHVsZUV4cG9ydHNbbWV0YWRhdGFbMl1dKSlcbiAgICAgICAgICBtb2R1bGVFeHBvcnRzID0gYnVuZGxlckNvbmZpZy5uYW1lO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBidW5kbGVyQ29uZmlnID0gbW9kdWxlRXhwb3J0cyAmJiBtb2R1bGVFeHBvcnRzW1wiKlwiXTtcbiAgICAgICAgICBpZiAoIWJ1bmRsZXJDb25maWcpXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgJ0NvdWxkIG5vdCBmaW5kIHRoZSBtb2R1bGUgXCInICtcbiAgICAgICAgICAgICAgICBtZXRhZGF0YVswXSArXG4gICAgICAgICAgICAgICAgJ1wiIGluIHRoZSBSZWFjdCBTZXJ2ZXIgQ29uc3VtZXIgTWFuaWZlc3QuIFRoaXMgaXMgcHJvYmFibHkgYSBidWcgaW4gdGhlIFJlYWN0IFNlcnZlciBDb21wb25lbnRzIGJ1bmRsZXIuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICBtb2R1bGVFeHBvcnRzID0gbWV0YWRhdGFbMl07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDQgPT09IG1ldGFkYXRhLmxlbmd0aFxuICAgICAgICAgID8gW2J1bmRsZXJDb25maWcuaWQsIGJ1bmRsZXJDb25maWcuY2h1bmtzLCBtb2R1bGVFeHBvcnRzLCAxXVxuICAgICAgICAgIDogW2J1bmRsZXJDb25maWcuaWQsIGJ1bmRsZXJDb25maWcuY2h1bmtzLCBtb2R1bGVFeHBvcnRzXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtZXRhZGF0YTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVzb2x2ZVNlcnZlclJlZmVyZW5jZShidW5kbGVyQ29uZmlnLCBpZCkge1xuICAgICAgdmFyIG5hbWUgPSBcIlwiLFxuICAgICAgICByZXNvbHZlZE1vZHVsZURhdGEgPSBidW5kbGVyQ29uZmlnW2lkXTtcbiAgICAgIGlmIChyZXNvbHZlZE1vZHVsZURhdGEpIG5hbWUgPSByZXNvbHZlZE1vZHVsZURhdGEubmFtZTtcbiAgICAgIGVsc2Uge1xuICAgICAgICB2YXIgaWR4ID0gaWQubGFzdEluZGV4T2YoXCIjXCIpO1xuICAgICAgICAtMSAhPT0gaWR4ICYmXG4gICAgICAgICAgKChuYW1lID0gaWQuc2xpY2UoaWR4ICsgMSkpLFxuICAgICAgICAgIChyZXNvbHZlZE1vZHVsZURhdGEgPSBidW5kbGVyQ29uZmlnW2lkLnNsaWNlKDAsIGlkeCldKSk7XG4gICAgICAgIGlmICghcmVzb2x2ZWRNb2R1bGVEYXRhKVxuICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgJ0NvdWxkIG5vdCBmaW5kIHRoZSBtb2R1bGUgXCInICtcbiAgICAgICAgICAgICAgaWQgK1xuICAgICAgICAgICAgICAnXCIgaW4gdGhlIFJlYWN0IFNlcnZlciBNYW5pZmVzdC4gVGhpcyBpcyBwcm9iYWJseSBhIGJ1ZyBpbiB0aGUgUmVhY3QgU2VydmVyIENvbXBvbmVudHMgYnVuZGxlci4nXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNvbHZlZE1vZHVsZURhdGEuYXN5bmNcbiAgICAgICAgPyBbcmVzb2x2ZWRNb2R1bGVEYXRhLmlkLCByZXNvbHZlZE1vZHVsZURhdGEuY2h1bmtzLCBuYW1lLCAxXVxuICAgICAgICA6IFtyZXNvbHZlZE1vZHVsZURhdGEuaWQsIHJlc29sdmVkTW9kdWxlRGF0YS5jaHVua3MsIG5hbWVdO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZXF1aXJlQXN5bmNNb2R1bGUoaWQpIHtcbiAgICAgIHZhciBwcm9taXNlID0gZ2xvYmFsVGhpcy5fX25leHRfcmVxdWlyZV9fKGlkKTtcbiAgICAgIGlmIChcImZ1bmN0aW9uXCIgIT09IHR5cGVvZiBwcm9taXNlLnRoZW4gfHwgXCJmdWxmaWxsZWRcIiA9PT0gcHJvbWlzZS5zdGF0dXMpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgcHJvbWlzZS50aGVuKFxuICAgICAgICBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBwcm9taXNlLnN0YXR1cyA9IFwiZnVsZmlsbGVkXCI7XG4gICAgICAgICAgcHJvbWlzZS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9LFxuICAgICAgICBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICAgICAgcHJvbWlzZS5zdGF0dXMgPSBcInJlamVjdGVkXCI7XG4gICAgICAgICAgcHJvbWlzZS5yZWFzb24gPSByZWFzb247XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaWdub3JlUmVqZWN0KCkge31cbiAgICBmdW5jdGlvbiBwcmVsb2FkTW9kdWxlKG1ldGFkYXRhKSB7XG4gICAgICBmb3IgKFxuICAgICAgICB2YXIgY2h1bmtzID0gbWV0YWRhdGFbMV0sIHByb21pc2VzID0gW10sIGkgPSAwO1xuICAgICAgICBpIDwgY2h1bmtzLmxlbmd0aDtcblxuICAgICAgKSB7XG4gICAgICAgIHZhciBjaHVua0lkID0gY2h1bmtzW2krK107XG4gICAgICAgIGNodW5rc1tpKytdO1xuICAgICAgICB2YXIgZW50cnkgPSBjaHVua0NhY2hlLmdldChjaHVua0lkKTtcbiAgICAgICAgaWYgKHZvaWQgMCA9PT0gZW50cnkpIHtcbiAgICAgICAgICBlbnRyeSA9IF9fd2VicGFja19jaHVua19sb2FkX18oY2h1bmtJZCk7XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChlbnRyeSk7XG4gICAgICAgICAgdmFyIHJlc29sdmUgPSBjaHVua0NhY2hlLnNldC5iaW5kKGNodW5rQ2FjaGUsIGNodW5rSWQsIG51bGwpO1xuICAgICAgICAgIGVudHJ5LnRoZW4ocmVzb2x2ZSwgaWdub3JlUmVqZWN0KTtcbiAgICAgICAgICBjaHVua0NhY2hlLnNldChjaHVua0lkLCBlbnRyeSk7XG4gICAgICAgIH0gZWxzZSBudWxsICE9PSBlbnRyeSAmJiBwcm9taXNlcy5wdXNoKGVudHJ5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiA0ID09PSBtZXRhZGF0YS5sZW5ndGhcbiAgICAgICAgPyAwID09PSBwcm9taXNlcy5sZW5ndGhcbiAgICAgICAgICA/IHJlcXVpcmVBc3luY01vZHVsZShtZXRhZGF0YVswXSlcbiAgICAgICAgICA6IFByb21pc2UuYWxsKHByb21pc2VzKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmVBc3luY01vZHVsZShtZXRhZGF0YVswXSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICA6IDAgPCBwcm9taXNlcy5sZW5ndGhcbiAgICAgICAgICA/IFByb21pc2UuYWxsKHByb21pc2VzKVxuICAgICAgICAgIDogbnVsbDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVxdWlyZU1vZHVsZShtZXRhZGF0YSkge1xuICAgICAgdmFyIG1vZHVsZUV4cG9ydHMgPSBnbG9iYWxUaGlzLl9fbmV4dF9yZXF1aXJlX18obWV0YWRhdGFbMF0pO1xuICAgICAgaWYgKDQgPT09IG1ldGFkYXRhLmxlbmd0aCAmJiBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBtb2R1bGVFeHBvcnRzLnRoZW4pXG4gICAgICAgIGlmIChcImZ1bGZpbGxlZFwiID09PSBtb2R1bGVFeHBvcnRzLnN0YXR1cylcbiAgICAgICAgICBtb2R1bGVFeHBvcnRzID0gbW9kdWxlRXhwb3J0cy52YWx1ZTtcbiAgICAgICAgZWxzZSB0aHJvdyBtb2R1bGVFeHBvcnRzLnJlYXNvbjtcbiAgICAgIGlmIChcIipcIiA9PT0gbWV0YWRhdGFbMl0pIHJldHVybiBtb2R1bGVFeHBvcnRzO1xuICAgICAgaWYgKFwiXCIgPT09IG1ldGFkYXRhWzJdKVxuICAgICAgICByZXR1cm4gbW9kdWxlRXhwb3J0cy5fX2VzTW9kdWxlID8gbW9kdWxlRXhwb3J0cy5kZWZhdWx0IDogbW9kdWxlRXhwb3J0cztcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZHVsZUV4cG9ydHMsIG1ldGFkYXRhWzJdKSlcbiAgICAgICAgcmV0dXJuIG1vZHVsZUV4cG9ydHNbbWV0YWRhdGFbMl1dO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmVwYXJlRGVzdGluYXRpb25XaXRoQ2h1bmtzKFxuICAgICAgbW9kdWxlTG9hZGluZyxcbiAgICAgIGNodW5rcyxcbiAgICAgIG5vbmNlJGpzY29tcCQwXG4gICAgKSB7XG4gICAgICBpZiAobnVsbCAhPT0gbW9kdWxlTG9hZGluZylcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBjaHVua3MubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgICB2YXIgbm9uY2UgPSBub25jZSRqc2NvbXAkMCxcbiAgICAgICAgICAgIEpTQ29tcGlsZXJfdGVtcF9jb25zdCA9IFJlYWN0RE9NU2hhcmVkSW50ZXJuYWxzLmQsXG4gICAgICAgICAgICBKU0NvbXBpbGVyX3RlbXBfY29uc3QkanNjb21wJDAgPSBKU0NvbXBpbGVyX3RlbXBfY29uc3QuWCxcbiAgICAgICAgICAgIEpTQ29tcGlsZXJfdGVtcF9jb25zdCRqc2NvbXAkMSA9IG1vZHVsZUxvYWRpbmcucHJlZml4ICsgY2h1bmtzW2ldO1xuICAgICAgICAgIHZhciBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPSBtb2R1bGVMb2FkaW5nLmNyb3NzT3JpZ2luO1xuICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9XG4gICAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0XG4gICAgICAgICAgICAgID8gXCJ1c2UtY3JlZGVudGlhbHNcIiA9PT0gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0XG4gICAgICAgICAgICAgICAgPyBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHRcbiAgICAgICAgICAgICAgICA6IFwiXCJcbiAgICAgICAgICAgICAgOiB2b2lkIDA7XG4gICAgICAgICAgSlNDb21waWxlcl90ZW1wX2NvbnN0JGpzY29tcCQwLmNhbGwoXG4gICAgICAgICAgICBKU0NvbXBpbGVyX3RlbXBfY29uc3QsXG4gICAgICAgICAgICBKU0NvbXBpbGVyX3RlbXBfY29uc3QkanNjb21wJDEsXG4gICAgICAgICAgICB7IGNyb3NzT3JpZ2luOiBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQsIG5vbmNlOiBub25jZSB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRJdGVyYXRvckZuKG1heWJlSXRlcmFibGUpIHtcbiAgICAgIGlmIChudWxsID09PSBtYXliZUl0ZXJhYmxlIHx8IFwib2JqZWN0XCIgIT09IHR5cGVvZiBtYXliZUl0ZXJhYmxlKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIG1heWJlSXRlcmFibGUgPVxuICAgICAgICAoTUFZQkVfSVRFUkFUT1JfU1lNQk9MICYmIG1heWJlSXRlcmFibGVbTUFZQkVfSVRFUkFUT1JfU1lNQk9MXSkgfHxcbiAgICAgICAgbWF5YmVJdGVyYWJsZVtcIkBAaXRlcmF0b3JcIl07XG4gICAgICByZXR1cm4gXCJmdW5jdGlvblwiID09PSB0eXBlb2YgbWF5YmVJdGVyYWJsZSA/IG1heWJlSXRlcmFibGUgOiBudWxsO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc09iamVjdFByb3RvdHlwZShvYmplY3QpIHtcbiAgICAgIGlmICghb2JqZWN0KSByZXR1cm4gITE7XG4gICAgICB2YXIgT2JqZWN0UHJvdG90eXBlID0gT2JqZWN0LnByb3RvdHlwZTtcbiAgICAgIGlmIChvYmplY3QgPT09IE9iamVjdFByb3RvdHlwZSkgcmV0dXJuICEwO1xuICAgICAgaWYgKGdldFByb3RvdHlwZU9mKG9iamVjdCkpIHJldHVybiAhMTtcbiAgICAgIG9iamVjdCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9iamVjdC5sZW5ndGg7IGkrKylcbiAgICAgICAgaWYgKCEob2JqZWN0W2ldIGluIE9iamVjdFByb3RvdHlwZSkpIHJldHVybiAhMTtcbiAgICAgIHJldHVybiAhMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNTaW1wbGVPYmplY3Qob2JqZWN0KSB7XG4gICAgICBpZiAoIWlzT2JqZWN0UHJvdG90eXBlKGdldFByb3RvdHlwZU9mKG9iamVjdCkpKSByZXR1cm4gITE7XG4gICAgICBmb3IgKFxuICAgICAgICB2YXIgbmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpLCBpID0gMDtcbiAgICAgICAgaSA8IG5hbWVzLmxlbmd0aDtcbiAgICAgICAgaSsrXG4gICAgICApIHtcbiAgICAgICAgdmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgbmFtZXNbaV0pO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIWRlc2NyaXB0b3IgfHxcbiAgICAgICAgICAoIWRlc2NyaXB0b3IuZW51bWVyYWJsZSAmJlxuICAgICAgICAgICAgKChcImtleVwiICE9PSBuYW1lc1tpXSAmJiBcInJlZlwiICE9PSBuYW1lc1tpXSkgfHxcbiAgICAgICAgICAgICAgXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgZGVzY3JpcHRvci5nZXQpKVxuICAgICAgICApXG4gICAgICAgICAgcmV0dXJuICExO1xuICAgICAgfVxuICAgICAgcmV0dXJuICEwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBvYmplY3ROYW1lKG9iamVjdCkge1xuICAgICAgb2JqZWN0ID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCk7XG4gICAgICByZXR1cm4gb2JqZWN0LnNsaWNlKDgsIG9iamVjdC5sZW5ndGggLSAxKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZGVzY3JpYmVLZXlGb3JFcnJvck1lc3NhZ2Uoa2V5KSB7XG4gICAgICB2YXIgZW5jb2RlZEtleSA9IEpTT04uc3RyaW5naWZ5KGtleSk7XG4gICAgICByZXR1cm4gJ1wiJyArIGtleSArICdcIicgPT09IGVuY29kZWRLZXkgPyBrZXkgOiBlbmNvZGVkS2V5O1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZXNjcmliZVZhbHVlRm9yRXJyb3JNZXNzYWdlKHZhbHVlKSB7XG4gICAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgMTAgPj0gdmFsdWUubGVuZ3RoID8gdmFsdWUgOiB2YWx1ZS5zbGljZSgwLCAxMCkgKyBcIi4uLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgICAgIGlmIChpc0FycmF5SW1wbCh2YWx1ZSkpIHJldHVybiBcIlsuLi5dXCI7XG4gICAgICAgICAgaWYgKG51bGwgIT09IHZhbHVlICYmIHZhbHVlLiQkdHlwZW9mID09PSBDTElFTlRfUkVGRVJFTkNFX1RBRylcbiAgICAgICAgICAgIHJldHVybiBcImNsaWVudFwiO1xuICAgICAgICAgIHZhbHVlID0gb2JqZWN0TmFtZSh2YWx1ZSk7XG4gICAgICAgICAgcmV0dXJuIFwiT2JqZWN0XCIgPT09IHZhbHVlID8gXCJ7Li4ufVwiIDogdmFsdWU7XG4gICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICAgIHJldHVybiB2YWx1ZS4kJHR5cGVvZiA9PT0gQ0xJRU5UX1JFRkVSRU5DRV9UQUdcbiAgICAgICAgICAgID8gXCJjbGllbnRcIlxuICAgICAgICAgICAgOiAodmFsdWUgPSB2YWx1ZS5kaXNwbGF5TmFtZSB8fCB2YWx1ZS5uYW1lKVxuICAgICAgICAgICAgICA/IFwiZnVuY3Rpb24gXCIgKyB2YWx1ZVxuICAgICAgICAgICAgICA6IFwiZnVuY3Rpb25cIjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZGVzY3JpYmVFbGVtZW50VHlwZSh0eXBlKSB7XG4gICAgICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHR5cGUpIHJldHVybiB0eXBlO1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJTdXNwZW5zZVwiO1xuICAgICAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJTdXNwZW5zZUxpc3RcIjtcbiAgICAgICAgY2FzZSBSRUFDVF9WSUVXX1RSQU5TSVRJT05fVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJWaWV3VHJhbnNpdGlvblwiO1xuICAgICAgfVxuICAgICAgaWYgKFwib2JqZWN0XCIgPT09IHR5cGVvZiB0eXBlKVxuICAgICAgICBzd2l0Y2ggKHR5cGUuJCR0eXBlb2YpIHtcbiAgICAgICAgICBjYXNlIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gZGVzY3JpYmVFbGVtZW50VHlwZSh0eXBlLnJlbmRlcik7XG4gICAgICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gZGVzY3JpYmVFbGVtZW50VHlwZSh0eXBlLnR5cGUpO1xuICAgICAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxuICAgICAgICAgICAgdmFyIHBheWxvYWQgPSB0eXBlLl9wYXlsb2FkO1xuICAgICAgICAgICAgdHlwZSA9IHR5cGUuX2luaXQ7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICByZXR1cm4gZGVzY3JpYmVFbGVtZW50VHlwZSh0eXBlKHBheWxvYWQpKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKHgpIHt9XG4gICAgICAgIH1cbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZXNjcmliZU9iamVjdEZvckVycm9yTWVzc2FnZShvYmplY3RPckFycmF5LCBleHBhbmRlZE5hbWUpIHtcbiAgICAgIHZhciBvYmpLaW5kID0gb2JqZWN0TmFtZShvYmplY3RPckFycmF5KTtcbiAgICAgIGlmIChcIk9iamVjdFwiICE9PSBvYmpLaW5kICYmIFwiQXJyYXlcIiAhPT0gb2JqS2luZCkgcmV0dXJuIG9iaktpbmQ7XG4gICAgICB2YXIgc3RhcnQgPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gMDtcbiAgICAgIGlmIChpc0FycmF5SW1wbChvYmplY3RPckFycmF5KSlcbiAgICAgICAgaWYgKGpzeENoaWxkcmVuUGFyZW50cy5oYXMob2JqZWN0T3JBcnJheSkpIHtcbiAgICAgICAgICB2YXIgdHlwZSA9IGpzeENoaWxkcmVuUGFyZW50cy5nZXQob2JqZWN0T3JBcnJheSk7XG4gICAgICAgICAgb2JqS2luZCA9IFwiPFwiICsgZGVzY3JpYmVFbGVtZW50VHlwZSh0eXBlKSArIFwiPlwiO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2JqZWN0T3JBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHZhbHVlID0gb2JqZWN0T3JBcnJheVtpXTtcbiAgICAgICAgICAgIHZhbHVlID1cbiAgICAgICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHZhbHVlXG4gICAgICAgICAgICAgICAgPyB2YWx1ZVxuICAgICAgICAgICAgICAgIDogXCJvYmplY3RcIiA9PT0gdHlwZW9mIHZhbHVlICYmIG51bGwgIT09IHZhbHVlXG4gICAgICAgICAgICAgICAgICA/IFwie1wiICsgZGVzY3JpYmVPYmplY3RGb3JFcnJvck1lc3NhZ2UodmFsdWUpICsgXCJ9XCJcbiAgICAgICAgICAgICAgICAgIDogXCJ7XCIgKyBkZXNjcmliZVZhbHVlRm9yRXJyb3JNZXNzYWdlKHZhbHVlKSArIFwifVwiO1xuICAgICAgICAgICAgXCJcIiArIGkgPT09IGV4cGFuZGVkTmFtZVxuICAgICAgICAgICAgICA/ICgoc3RhcnQgPSBvYmpLaW5kLmxlbmd0aCksXG4gICAgICAgICAgICAgICAgKGxlbmd0aCA9IHZhbHVlLmxlbmd0aCksXG4gICAgICAgICAgICAgICAgKG9iaktpbmQgKz0gdmFsdWUpKVxuICAgICAgICAgICAgICA6IChvYmpLaW5kID1cbiAgICAgICAgICAgICAgICAgIDE1ID4gdmFsdWUubGVuZ3RoICYmIDQwID4gb2JqS2luZC5sZW5ndGggKyB2YWx1ZS5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyBvYmpLaW5kICsgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgOiBvYmpLaW5kICsgXCJ7Li4ufVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb2JqS2luZCArPSBcIjwvXCIgKyBkZXNjcmliZUVsZW1lbnRUeXBlKHR5cGUpICsgXCI+XCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2JqS2luZCA9IFwiW1wiO1xuICAgICAgICAgIGZvciAodHlwZSA9IDA7IHR5cGUgPCBvYmplY3RPckFycmF5Lmxlbmd0aDsgdHlwZSsrKVxuICAgICAgICAgICAgMCA8IHR5cGUgJiYgKG9iaktpbmQgKz0gXCIsIFwiKSxcbiAgICAgICAgICAgICAgKGkgPSBvYmplY3RPckFycmF5W3R5cGVdKSxcbiAgICAgICAgICAgICAgKGkgPVxuICAgICAgICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiBpICYmIG51bGwgIT09IGlcbiAgICAgICAgICAgICAgICAgID8gZGVzY3JpYmVPYmplY3RGb3JFcnJvck1lc3NhZ2UoaSlcbiAgICAgICAgICAgICAgICAgIDogZGVzY3JpYmVWYWx1ZUZvckVycm9yTWVzc2FnZShpKSksXG4gICAgICAgICAgICAgIFwiXCIgKyB0eXBlID09PSBleHBhbmRlZE5hbWVcbiAgICAgICAgICAgICAgICA/ICgoc3RhcnQgPSBvYmpLaW5kLmxlbmd0aCksXG4gICAgICAgICAgICAgICAgICAobGVuZ3RoID0gaS5sZW5ndGgpLFxuICAgICAgICAgICAgICAgICAgKG9iaktpbmQgKz0gaSkpXG4gICAgICAgICAgICAgICAgOiAob2JqS2luZCA9XG4gICAgICAgICAgICAgICAgICAgIDEwID4gaS5sZW5ndGggJiYgNDAgPiBvYmpLaW5kLmxlbmd0aCArIGkubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgPyBvYmpLaW5kICsgaVxuICAgICAgICAgICAgICAgICAgICAgIDogb2JqS2luZCArIFwiLi4uXCIpO1xuICAgICAgICAgIG9iaktpbmQgKz0gXCJdXCI7XG4gICAgICAgIH1cbiAgICAgIGVsc2UgaWYgKG9iamVjdE9yQXJyYXkuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRSlcbiAgICAgICAgb2JqS2luZCA9IFwiPFwiICsgZGVzY3JpYmVFbGVtZW50VHlwZShvYmplY3RPckFycmF5LnR5cGUpICsgXCIvPlwiO1xuICAgICAgZWxzZSB7XG4gICAgICAgIGlmIChvYmplY3RPckFycmF5LiQkdHlwZW9mID09PSBDTElFTlRfUkVGRVJFTkNFX1RBRykgcmV0dXJuIFwiY2xpZW50XCI7XG4gICAgICAgIGlmIChqc3hQcm9wc1BhcmVudHMuaGFzKG9iamVjdE9yQXJyYXkpKSB7XG4gICAgICAgICAgb2JqS2luZCA9IGpzeFByb3BzUGFyZW50cy5nZXQob2JqZWN0T3JBcnJheSk7XG4gICAgICAgICAgb2JqS2luZCA9IFwiPFwiICsgKGRlc2NyaWJlRWxlbWVudFR5cGUob2JqS2luZCkgfHwgXCIuLi5cIik7XG4gICAgICAgICAgdHlwZSA9IE9iamVjdC5rZXlzKG9iamVjdE9yQXJyYXkpO1xuICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0eXBlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBvYmpLaW5kICs9IFwiIFwiO1xuICAgICAgICAgICAgdmFsdWUgPSB0eXBlW2ldO1xuICAgICAgICAgICAgb2JqS2luZCArPSBkZXNjcmliZUtleUZvckVycm9yTWVzc2FnZSh2YWx1ZSkgKyBcIj1cIjtcbiAgICAgICAgICAgIHZhciBfdmFsdWUyID0gb2JqZWN0T3JBcnJheVt2YWx1ZV07XG4gICAgICAgICAgICB2YXIgX3N1YnN0cjIgPVxuICAgICAgICAgICAgICB2YWx1ZSA9PT0gZXhwYW5kZWROYW1lICYmXG4gICAgICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiBfdmFsdWUyICYmXG4gICAgICAgICAgICAgIG51bGwgIT09IF92YWx1ZTJcbiAgICAgICAgICAgICAgICA/IGRlc2NyaWJlT2JqZWN0Rm9yRXJyb3JNZXNzYWdlKF92YWx1ZTIpXG4gICAgICAgICAgICAgICAgOiBkZXNjcmliZVZhbHVlRm9yRXJyb3JNZXNzYWdlKF92YWx1ZTIpO1xuICAgICAgICAgICAgXCJzdHJpbmdcIiAhPT0gdHlwZW9mIF92YWx1ZTIgJiYgKF9zdWJzdHIyID0gXCJ7XCIgKyBfc3Vic3RyMiArIFwifVwiKTtcbiAgICAgICAgICAgIHZhbHVlID09PSBleHBhbmRlZE5hbWVcbiAgICAgICAgICAgICAgPyAoKHN0YXJ0ID0gb2JqS2luZC5sZW5ndGgpLFxuICAgICAgICAgICAgICAgIChsZW5ndGggPSBfc3Vic3RyMi5sZW5ndGgpLFxuICAgICAgICAgICAgICAgIChvYmpLaW5kICs9IF9zdWJzdHIyKSlcbiAgICAgICAgICAgICAgOiAob2JqS2luZCA9XG4gICAgICAgICAgICAgICAgICAxMCA+IF9zdWJzdHIyLmxlbmd0aCAmJiA0MCA+IG9iaktpbmQubGVuZ3RoICsgX3N1YnN0cjIubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgID8gb2JqS2luZCArIF9zdWJzdHIyXG4gICAgICAgICAgICAgICAgICAgIDogb2JqS2luZCArIFwiLi4uXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvYmpLaW5kICs9IFwiPlwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9iaktpbmQgPSBcIntcIjtcbiAgICAgICAgICB0eXBlID0gT2JqZWN0LmtleXMob2JqZWN0T3JBcnJheSk7XG4gICAgICAgICAgZm9yIChpID0gMDsgaSA8IHR5cGUubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICAwIDwgaSAmJiAob2JqS2luZCArPSBcIiwgXCIpLFxuICAgICAgICAgICAgICAodmFsdWUgPSB0eXBlW2ldKSxcbiAgICAgICAgICAgICAgKG9iaktpbmQgKz0gZGVzY3JpYmVLZXlGb3JFcnJvck1lc3NhZ2UodmFsdWUpICsgXCI6IFwiKSxcbiAgICAgICAgICAgICAgKF92YWx1ZTIgPSBvYmplY3RPckFycmF5W3ZhbHVlXSksXG4gICAgICAgICAgICAgIChfdmFsdWUyID1cbiAgICAgICAgICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2YgX3ZhbHVlMiAmJiBudWxsICE9PSBfdmFsdWUyXG4gICAgICAgICAgICAgICAgICA/IGRlc2NyaWJlT2JqZWN0Rm9yRXJyb3JNZXNzYWdlKF92YWx1ZTIpXG4gICAgICAgICAgICAgICAgICA6IGRlc2NyaWJlVmFsdWVGb3JFcnJvck1lc3NhZ2UoX3ZhbHVlMikpLFxuICAgICAgICAgICAgICB2YWx1ZSA9PT0gZXhwYW5kZWROYW1lXG4gICAgICAgICAgICAgICAgPyAoKHN0YXJ0ID0gb2JqS2luZC5sZW5ndGgpLFxuICAgICAgICAgICAgICAgICAgKGxlbmd0aCA9IF92YWx1ZTIubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAgIChvYmpLaW5kICs9IF92YWx1ZTIpKVxuICAgICAgICAgICAgICAgIDogKG9iaktpbmQgPVxuICAgICAgICAgICAgICAgICAgICAxMCA+IF92YWx1ZTIubGVuZ3RoICYmIDQwID4gb2JqS2luZC5sZW5ndGggKyBfdmFsdWUyLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgID8gb2JqS2luZCArIF92YWx1ZTJcbiAgICAgICAgICAgICAgICAgICAgICA6IG9iaktpbmQgKyBcIi4uLlwiKTtcbiAgICAgICAgICBvYmpLaW5kICs9IFwifVwiO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdm9pZCAwID09PSBleHBhbmRlZE5hbWVcbiAgICAgICAgPyBvYmpLaW5kXG4gICAgICAgIDogLTEgPCBzdGFydCAmJiAwIDwgbGVuZ3RoXG4gICAgICAgICAgPyAoKG9iamVjdE9yQXJyYXkgPSBcIiBcIi5yZXBlYXQoc3RhcnQpICsgXCJeXCIucmVwZWF0KGxlbmd0aCkpLFxuICAgICAgICAgICAgXCJcXG4gIFwiICsgb2JqS2luZCArIFwiXFxuICBcIiArIG9iamVjdE9yQXJyYXkpXG4gICAgICAgICAgOiBcIlxcbiAgXCIgKyBvYmpLaW5kO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzZXJpYWxpemVOdW1iZXIobnVtYmVyKSB7XG4gICAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKG51bWJlcilcbiAgICAgICAgPyAwID09PSBudW1iZXIgJiYgLUluZmluaXR5ID09PSAxIC8gbnVtYmVyXG4gICAgICAgICAgPyBcIiQtMFwiXG4gICAgICAgICAgOiBudW1iZXJcbiAgICAgICAgOiBJbmZpbml0eSA9PT0gbnVtYmVyXG4gICAgICAgICAgPyBcIiRJbmZpbml0eVwiXG4gICAgICAgICAgOiAtSW5maW5pdHkgPT09IG51bWJlclxuICAgICAgICAgICAgPyBcIiQtSW5maW5pdHlcIlxuICAgICAgICAgICAgOiBcIiROYU5cIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlcGx5KFxuICAgICAgcm9vdCxcbiAgICAgIGZvcm1GaWVsZFByZWZpeCxcbiAgICAgIHRlbXBvcmFyeVJlZmVyZW5jZXMsXG4gICAgICByZXNvbHZlLFxuICAgICAgcmVqZWN0XG4gICAgKSB7XG4gICAgICBmdW5jdGlvbiBzZXJpYWxpemVUeXBlZEFycmF5KHRhZywgdHlwZWRBcnJheSkge1xuICAgICAgICB0eXBlZEFycmF5ID0gbmV3IEJsb2IoW1xuICAgICAgICAgIG5ldyBVaW50OEFycmF5KFxuICAgICAgICAgICAgdHlwZWRBcnJheS5idWZmZXIsXG4gICAgICAgICAgICB0eXBlZEFycmF5LmJ5dGVPZmZzZXQsXG4gICAgICAgICAgICB0eXBlZEFycmF5LmJ5dGVMZW5ndGhcbiAgICAgICAgICApXG4gICAgICAgIF0pO1xuICAgICAgICB2YXIgYmxvYklkID0gbmV4dFBhcnRJZCsrO1xuICAgICAgICBudWxsID09PSBmb3JtRGF0YSAmJiAoZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKSk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChmb3JtRmllbGRQcmVmaXggKyBibG9iSWQsIHR5cGVkQXJyYXkpO1xuICAgICAgICByZXR1cm4gXCIkXCIgKyB0YWcgKyBibG9iSWQudG9TdHJpbmcoMTYpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gc2VyaWFsaXplQmluYXJ5UmVhZGVyKHJlYWRlcikge1xuICAgICAgICBmdW5jdGlvbiBwcm9ncmVzcyhlbnRyeSkge1xuICAgICAgICAgIGVudHJ5LmRvbmVcbiAgICAgICAgICAgID8gKChlbnRyeSA9IG5leHRQYXJ0SWQrKyksXG4gICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGZvcm1GaWVsZFByZWZpeCArIGVudHJ5LCBuZXcgQmxvYihidWZmZXIpKSxcbiAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkUHJlZml4ICsgc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgJ1wiJG8nICsgZW50cnkudG9TdHJpbmcoMTYpICsgJ1wiJ1xuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBkYXRhLmFwcGVuZChmb3JtRmllbGRQcmVmaXggKyBzdHJlYW1JZCwgXCJDXCIpLFxuICAgICAgICAgICAgICBwZW5kaW5nUGFydHMtLSxcbiAgICAgICAgICAgICAgMCA9PT0gcGVuZGluZ1BhcnRzICYmIHJlc29sdmUoZGF0YSkpXG4gICAgICAgICAgICA6IChidWZmZXIucHVzaChlbnRyeS52YWx1ZSksXG4gICAgICAgICAgICAgIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDEwMjQpKS50aGVuKHByb2dyZXNzLCByZWplY3QpKTtcbiAgICAgICAgfVxuICAgICAgICBudWxsID09PSBmb3JtRGF0YSAmJiAoZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKSk7XG4gICAgICAgIHZhciBkYXRhID0gZm9ybURhdGE7XG4gICAgICAgIHBlbmRpbmdQYXJ0cysrO1xuICAgICAgICB2YXIgc3RyZWFtSWQgPSBuZXh0UGFydElkKyssXG4gICAgICAgICAgYnVmZmVyID0gW107XG4gICAgICAgIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDEwMjQpKS50aGVuKHByb2dyZXNzLCByZWplY3QpO1xuICAgICAgICByZXR1cm4gXCIkclwiICsgc3RyZWFtSWQudG9TdHJpbmcoMTYpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gc2VyaWFsaXplUmVhZGVyKHJlYWRlcikge1xuICAgICAgICBmdW5jdGlvbiBwcm9ncmVzcyhlbnRyeSkge1xuICAgICAgICAgIGlmIChlbnRyeS5kb25lKVxuICAgICAgICAgICAgZGF0YS5hcHBlbmQoZm9ybUZpZWxkUHJlZml4ICsgc3RyZWFtSWQsIFwiQ1wiKSxcbiAgICAgICAgICAgICAgcGVuZGluZ1BhcnRzLS0sXG4gICAgICAgICAgICAgIDAgPT09IHBlbmRpbmdQYXJ0cyAmJiByZXNvbHZlKGRhdGEpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHZhciBwYXJ0SlNPTiA9IEpTT04uc3RyaW5naWZ5KGVudHJ5LnZhbHVlLCByZXNvbHZlVG9KU09OKTtcbiAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoZm9ybUZpZWxkUHJlZml4ICsgc3RyZWFtSWQsIHBhcnRKU09OKTtcbiAgICAgICAgICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKHByb2dyZXNzLCByZWplY3QpO1xuICAgICAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgICAgICByZWplY3QoeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbnVsbCA9PT0gZm9ybURhdGEgJiYgKGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCkpO1xuICAgICAgICB2YXIgZGF0YSA9IGZvcm1EYXRhO1xuICAgICAgICBwZW5kaW5nUGFydHMrKztcbiAgICAgICAgdmFyIHN0cmVhbUlkID0gbmV4dFBhcnRJZCsrO1xuICAgICAgICByZWFkZXIucmVhZCgpLnRoZW4ocHJvZ3Jlc3MsIHJlamVjdCk7XG4gICAgICAgIHJldHVybiBcIiRSXCIgKyBzdHJlYW1JZC50b1N0cmluZygxNik7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBzZXJpYWxpemVSZWFkYWJsZVN0cmVhbShzdHJlYW0pIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB2YXIgYmluYXJ5UmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6IFwiYnlvYlwiIH0pO1xuICAgICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZVJlYWRlcihzdHJlYW0uZ2V0UmVhZGVyKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXJpYWxpemVCaW5hcnlSZWFkZXIoYmluYXJ5UmVhZGVyKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIHNlcmlhbGl6ZUFzeW5jSXRlcmFibGUoaXRlcmFibGUsIGl0ZXJhdG9yKSB7XG4gICAgICAgIGZ1bmN0aW9uIHByb2dyZXNzKGVudHJ5KSB7XG4gICAgICAgICAgaWYgKGVudHJ5LmRvbmUpIHtcbiAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IGVudHJ5LnZhbHVlKVxuICAgICAgICAgICAgICBkYXRhLmFwcGVuZChmb3JtRmllbGRQcmVmaXggKyBzdHJlYW1JZCwgXCJDXCIpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHZhciBwYXJ0SlNPTiA9IEpTT04uc3RyaW5naWZ5KGVudHJ5LnZhbHVlLCByZXNvbHZlVG9KU09OKTtcbiAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChmb3JtRmllbGRQcmVmaXggKyBzdHJlYW1JZCwgXCJDXCIgKyBwYXJ0SlNPTik7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgICAgICAgICByZWplY3QoeCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBwZW5kaW5nUGFydHMtLTtcbiAgICAgICAgICAgIDAgPT09IHBlbmRpbmdQYXJ0cyAmJiByZXNvbHZlKGRhdGEpO1xuICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgdmFyIF9wYXJ0SlNPTiA9IEpTT04uc3RyaW5naWZ5KGVudHJ5LnZhbHVlLCByZXNvbHZlVG9KU09OKTtcbiAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoZm9ybUZpZWxkUHJlZml4ICsgc3RyZWFtSWQsIF9wYXJ0SlNPTik7XG4gICAgICAgICAgICAgIGl0ZXJhdG9yLm5leHQoKS50aGVuKHByb2dyZXNzLCByZWplY3QpO1xuICAgICAgICAgICAgfSBjYXRjaCAoeCQwKSB7XG4gICAgICAgICAgICAgIHJlamVjdCh4JDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG51bGwgPT09IGZvcm1EYXRhICYmIChmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpKTtcbiAgICAgICAgdmFyIGRhdGEgPSBmb3JtRGF0YTtcbiAgICAgICAgcGVuZGluZ1BhcnRzKys7XG4gICAgICAgIHZhciBzdHJlYW1JZCA9IG5leHRQYXJ0SWQrKztcbiAgICAgICAgaXRlcmFibGUgPSBpdGVyYWJsZSA9PT0gaXRlcmF0b3I7XG4gICAgICAgIGl0ZXJhdG9yLm5leHQoKS50aGVuKHByb2dyZXNzLCByZWplY3QpO1xuICAgICAgICByZXR1cm4gXCIkXCIgKyAoaXRlcmFibGUgPyBcInhcIiA6IFwiWFwiKSArIHN0cmVhbUlkLnRvU3RyaW5nKDE2KTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIHJlc29sdmVUb0pTT04oa2V5LCB2YWx1ZSkge1xuICAgICAgICBcIl9fcHJvdG9fX1wiID09PSBrZXkgJiZcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgXCJFeHBlY3RlZCBub3QgdG8gc2VyaWFsaXplIGFuIG9iamVjdCB3aXRoIG93biBwcm9wZXJ0eSBgX19wcm90b19fYC4gV2hlbiBwYXJzZWQgdGhpcyBwcm9wZXJ0eSB3aWxsIGJlIG9taXR0ZWQuJXNcIixcbiAgICAgICAgICAgIGRlc2NyaWJlT2JqZWN0Rm9yRXJyb3JNZXNzYWdlKHRoaXMsIGtleSlcbiAgICAgICAgICApO1xuICAgICAgICB2YXIgb3JpZ2luYWxWYWx1ZSA9IHRoaXNba2V5XTtcbiAgICAgICAgXCJvYmplY3RcIiAhPT0gdHlwZW9mIG9yaWdpbmFsVmFsdWUgfHxcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID09PSB2YWx1ZSB8fFxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgICAgICAgKFwiT2JqZWN0XCIgIT09IG9iamVjdE5hbWUob3JpZ2luYWxWYWx1ZSlcbiAgICAgICAgICAgID8gY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICBcIk9ubHkgcGxhaW4gb2JqZWN0cyBjYW4gYmUgcGFzc2VkIHRvIFNlcnZlciBGdW5jdGlvbnMgZnJvbSB0aGUgQ2xpZW50LiAlcyBvYmplY3RzIGFyZSBub3Qgc3VwcG9ydGVkLiVzXCIsXG4gICAgICAgICAgICAgICAgb2JqZWN0TmFtZShvcmlnaW5hbFZhbHVlKSxcbiAgICAgICAgICAgICAgICBkZXNjcmliZU9iamVjdEZvckVycm9yTWVzc2FnZSh0aGlzLCBrZXkpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICBcIk9ubHkgcGxhaW4gb2JqZWN0cyBjYW4gYmUgcGFzc2VkIHRvIFNlcnZlciBGdW5jdGlvbnMgZnJvbSB0aGUgQ2xpZW50LiBPYmplY3RzIHdpdGggdG9KU09OIG1ldGhvZHMgYXJlIG5vdCBzdXBwb3J0ZWQuIENvbnZlcnQgaXQgbWFudWFsbHkgdG8gYSBzaW1wbGUgdmFsdWUgYmVmb3JlIHBhc3NpbmcgaXQgdG8gcHJvcHMuJXNcIixcbiAgICAgICAgICAgICAgICBkZXNjcmliZU9iamVjdEZvckVycm9yTWVzc2FnZSh0aGlzLCBrZXkpXG4gICAgICAgICAgICAgICkpO1xuICAgICAgICBpZiAobnVsbCA9PT0gdmFsdWUpIHJldHVybiBudWxsO1xuICAgICAgICBpZiAoXCJvYmplY3RcIiA9PT0gdHlwZW9mIHZhbHVlKSB7XG4gICAgICAgICAgc3dpdGNoICh2YWx1ZS4kJHR5cGVvZikge1xuICAgICAgICAgICAgY2FzZSBSRUFDVF9FTEVNRU5UX1RZUEU6XG4gICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IHRlbXBvcmFyeVJlZmVyZW5jZXMgJiYgLTEgPT09IGtleS5pbmRleE9mKFwiOlwiKSkge1xuICAgICAgICAgICAgICAgIHZhciBwYXJlbnRSZWZlcmVuY2UgPSB3cml0dGVuT2JqZWN0cy5nZXQodGhpcyk7XG4gICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gcGFyZW50UmVmZXJlbmNlKVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgdGVtcG9yYXJ5UmVmZXJlbmNlcy5zZXQocGFyZW50UmVmZXJlbmNlICsgXCI6XCIgKyBrZXksIHZhbHVlKSxcbiAgICAgICAgICAgICAgICAgICAgXCIkVFwiXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IHRlbXBvcmFyeVJlZmVyZW5jZXMgJiYgbW9kZWxSb290ID09PSB2YWx1ZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gKG1vZGVsUm9vdCA9IG51bGwpLCBcIiRUXCI7XG4gICAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgIFwiUmVhY3QgRWxlbWVudCBjYW5ub3QgYmUgcGFzc2VkIHRvIFNlcnZlciBGdW5jdGlvbnMgZnJvbSB0aGUgQ2xpZW50IHdpdGhvdXQgYSB0ZW1wb3JhcnkgcmVmZXJlbmNlIHNldC4gUGFzcyBhIFRlbXBvcmFyeVJlZmVyZW5jZVNldCB0byB0aGUgb3B0aW9ucy5cIiArXG4gICAgICAgICAgICAgICAgICBkZXNjcmliZU9iamVjdEZvckVycm9yTWVzc2FnZSh0aGlzLCBrZXkpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHZhbHVlLl9wYXlsb2FkO1xuICAgICAgICAgICAgICB2YXIgaW5pdCA9IHZhbHVlLl9pbml0O1xuICAgICAgICAgICAgICBudWxsID09PSBmb3JtRGF0YSAmJiAoZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKSk7XG4gICAgICAgICAgICAgIHBlbmRpbmdQYXJ0cysrO1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHBhcmVudFJlZmVyZW5jZSA9IGluaXQob3JpZ2luYWxWYWx1ZSk7XG4gICAgICAgICAgICAgICAgdmFyIGxhenlJZCA9IG5leHRQYXJ0SWQrKyxcbiAgICAgICAgICAgICAgICAgIHBhcnRKU09OID0gc2VyaWFsaXplTW9kZWwocGFyZW50UmVmZXJlbmNlLCBsYXp5SWQpO1xuICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChmb3JtRmllbGRQcmVmaXggKyBsYXp5SWQsIHBhcnRKU09OKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCIkXCIgKyBsYXp5SWQudG9TdHJpbmcoMTYpO1xuICAgICAgICAgICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIHggJiZcbiAgICAgICAgICAgICAgICAgIG51bGwgIT09IHggJiZcbiAgICAgICAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHgudGhlblxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgcGVuZGluZ1BhcnRzKys7XG4gICAgICAgICAgICAgICAgICB2YXIgX2xhenlJZCA9IG5leHRQYXJ0SWQrKztcbiAgICAgICAgICAgICAgICAgIHBhcmVudFJlZmVyZW5jZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgX3BhcnRKU09OMiA9IHNlcmlhbGl6ZU1vZGVsKHZhbHVlLCBfbGF6eUlkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9kYXRhID0gZm9ybURhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgX2RhdGEuYXBwZW5kKGZvcm1GaWVsZFByZWZpeCArIF9sYXp5SWQsIF9wYXJ0SlNPTjIpO1xuICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdQYXJ0cy0tO1xuICAgICAgICAgICAgICAgICAgICAgIDAgPT09IHBlbmRpbmdQYXJ0cyAmJiByZXNvbHZlKF9kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAocmVhc29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlYXNvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICB4LnRoZW4ocGFyZW50UmVmZXJlbmNlLCBwYXJlbnRSZWZlcmVuY2UpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiJFwiICsgX2xhenlJZC50b1N0cmluZygxNik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlamVjdCh4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICBwZW5kaW5nUGFydHMtLTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBwYXJlbnRSZWZlcmVuY2UgPSB3cml0dGVuT2JqZWN0cy5nZXQodmFsdWUpO1xuICAgICAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB2YWx1ZS50aGVuKSB7XG4gICAgICAgICAgICBpZiAodm9pZCAwICE9PSBwYXJlbnRSZWZlcmVuY2UpXG4gICAgICAgICAgICAgIGlmIChtb2RlbFJvb3QgPT09IHZhbHVlKSBtb2RlbFJvb3QgPSBudWxsO1xuICAgICAgICAgICAgICBlbHNlIHJldHVybiBwYXJlbnRSZWZlcmVuY2U7XG4gICAgICAgICAgICBudWxsID09PSBmb3JtRGF0YSAmJiAoZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKSk7XG4gICAgICAgICAgICBwZW5kaW5nUGFydHMrKztcbiAgICAgICAgICAgIHZhciBwcm9taXNlSWQgPSBuZXh0UGFydElkKys7XG4gICAgICAgICAgICBrZXkgPSBcIiRAXCIgKyBwcm9taXNlSWQudG9TdHJpbmcoMTYpO1xuICAgICAgICAgICAgd3JpdHRlbk9iamVjdHMuc2V0KHZhbHVlLCBrZXkpO1xuICAgICAgICAgICAgdmFsdWUudGhlbihmdW5jdGlvbiAocGFydFZhbHVlKSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdmFyIHByZXZpb3VzUmVmZXJlbmNlID0gd3JpdHRlbk9iamVjdHMuZ2V0KHBhcnRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgdmFyIF9wYXJ0SlNPTjMgPVxuICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBwcmV2aW91c1JlZmVyZW5jZVxuICAgICAgICAgICAgICAgICAgICA/IEpTT04uc3RyaW5naWZ5KHByZXZpb3VzUmVmZXJlbmNlKVxuICAgICAgICAgICAgICAgICAgICA6IHNlcmlhbGl6ZU1vZGVsKHBhcnRWYWx1ZSwgcHJvbWlzZUlkKTtcbiAgICAgICAgICAgICAgICBwYXJ0VmFsdWUgPSBmb3JtRGF0YTtcbiAgICAgICAgICAgICAgICBwYXJ0VmFsdWUuYXBwZW5kKGZvcm1GaWVsZFByZWZpeCArIHByb21pc2VJZCwgX3BhcnRKU09OMyk7XG4gICAgICAgICAgICAgICAgcGVuZGluZ1BhcnRzLS07XG4gICAgICAgICAgICAgICAgMCA9PT0gcGVuZGluZ1BhcnRzICYmIHJlc29sdmUocGFydFZhbHVlKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAocmVhc29uKSB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KHJlYXNvbik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIHJlamVjdCk7XG4gICAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodm9pZCAwICE9PSBwYXJlbnRSZWZlcmVuY2UpXG4gICAgICAgICAgICBpZiAobW9kZWxSb290ID09PSB2YWx1ZSkgbW9kZWxSb290ID0gbnVsbDtcbiAgICAgICAgICAgIGVsc2UgcmV0dXJuIHBhcmVudFJlZmVyZW5jZTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAtMSA9PT0ga2V5LmluZGV4T2YoXCI6XCIpICYmXG4gICAgICAgICAgICAgICgocGFyZW50UmVmZXJlbmNlID0gd3JpdHRlbk9iamVjdHMuZ2V0KHRoaXMpKSxcbiAgICAgICAgICAgICAgdm9pZCAwICE9PSBwYXJlbnRSZWZlcmVuY2UgJiZcbiAgICAgICAgICAgICAgICAoKHBhcmVudFJlZmVyZW5jZSA9IHBhcmVudFJlZmVyZW5jZSArIFwiOlwiICsga2V5KSxcbiAgICAgICAgICAgICAgICB3cml0dGVuT2JqZWN0cy5zZXQodmFsdWUsIHBhcmVudFJlZmVyZW5jZSksXG4gICAgICAgICAgICAgICAgdm9pZCAwICE9PSB0ZW1wb3JhcnlSZWZlcmVuY2VzICYmXG4gICAgICAgICAgICAgICAgICB0ZW1wb3JhcnlSZWZlcmVuY2VzLnNldChwYXJlbnRSZWZlcmVuY2UsIHZhbHVlKSkpO1xuICAgICAgICAgIGlmIChpc0FycmF5SW1wbCh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGb3JtRGF0YSkge1xuICAgICAgICAgICAgbnVsbCA9PT0gZm9ybURhdGEgJiYgKGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCkpO1xuICAgICAgICAgICAgdmFyIF9kYXRhMyA9IGZvcm1EYXRhO1xuICAgICAgICAgICAga2V5ID0gbmV4dFBhcnRJZCsrO1xuICAgICAgICAgICAgdmFyIHByZWZpeCA9IGZvcm1GaWVsZFByZWZpeCArIGtleSArIFwiX1wiO1xuICAgICAgICAgICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbiAob3JpZ2luYWxWYWx1ZSwgb3JpZ2luYWxLZXkpIHtcbiAgICAgICAgICAgICAgX2RhdGEzLmFwcGVuZChwcmVmaXggKyBvcmlnaW5hbEtleSwgb3JpZ2luYWxWYWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBcIiRLXCIgKyBrZXkudG9TdHJpbmcoMTYpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBNYXApXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAoa2V5ID0gbmV4dFBhcnRJZCsrKSxcbiAgICAgICAgICAgICAgKHBhcmVudFJlZmVyZW5jZSA9IHNlcmlhbGl6ZU1vZGVsKEFycmF5LmZyb20odmFsdWUpLCBrZXkpKSxcbiAgICAgICAgICAgICAgbnVsbCA9PT0gZm9ybURhdGEgJiYgKGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCkpLFxuICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoZm9ybUZpZWxkUHJlZml4ICsga2V5LCBwYXJlbnRSZWZlcmVuY2UpLFxuICAgICAgICAgICAgICBcIiRRXCIgKyBrZXkudG9TdHJpbmcoMTYpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFNldClcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIChrZXkgPSBuZXh0UGFydElkKyspLFxuICAgICAgICAgICAgICAocGFyZW50UmVmZXJlbmNlID0gc2VyaWFsaXplTW9kZWwoQXJyYXkuZnJvbSh2YWx1ZSksIGtleSkpLFxuICAgICAgICAgICAgICBudWxsID09PSBmb3JtRGF0YSAmJiAoZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKSksXG4gICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChmb3JtRmllbGRQcmVmaXggKyBrZXksIHBhcmVudFJlZmVyZW5jZSksXG4gICAgICAgICAgICAgIFwiJFdcIiArIGtleS50b1N0cmluZygxNilcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAoa2V5ID0gbmV3IEJsb2IoW3ZhbHVlXSkpLFxuICAgICAgICAgICAgICAocGFyZW50UmVmZXJlbmNlID0gbmV4dFBhcnRJZCsrKSxcbiAgICAgICAgICAgICAgbnVsbCA9PT0gZm9ybURhdGEgJiYgKGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCkpLFxuICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoZm9ybUZpZWxkUHJlZml4ICsgcGFyZW50UmVmZXJlbmNlLCBrZXkpLFxuICAgICAgICAgICAgICBcIiRBXCIgKyBwYXJlbnRSZWZlcmVuY2UudG9TdHJpbmcoMTYpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEludDhBcnJheSlcbiAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemVUeXBlZEFycmF5KFwiT1wiLCB2YWx1ZSk7XG4gICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgVWludDhBcnJheSlcbiAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemVUeXBlZEFycmF5KFwib1wiLCB2YWx1ZSk7XG4gICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpXG4gICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplVHlwZWRBcnJheShcIlVcIiwgdmFsdWUpO1xuICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEludDE2QXJyYXkpXG4gICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplVHlwZWRBcnJheShcIlNcIiwgdmFsdWUpO1xuICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFVpbnQxNkFycmF5KVxuICAgICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZVR5cGVkQXJyYXkoXCJzXCIsIHZhbHVlKTtcbiAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBJbnQzMkFycmF5KVxuICAgICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZVR5cGVkQXJyYXkoXCJMXCIsIHZhbHVlKTtcbiAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBVaW50MzJBcnJheSlcbiAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemVUeXBlZEFycmF5KFwibFwiLCB2YWx1ZSk7XG4gICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5KVxuICAgICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZVR5cGVkQXJyYXkoXCJHXCIsIHZhbHVlKTtcbiAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXkpXG4gICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplVHlwZWRBcnJheShcImdcIiwgdmFsdWUpO1xuICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEJpZ0ludDY0QXJyYXkpXG4gICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplVHlwZWRBcnJheShcIk1cIiwgdmFsdWUpO1xuICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEJpZ1VpbnQ2NEFycmF5KVxuICAgICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZVR5cGVkQXJyYXkoXCJtXCIsIHZhbHVlKTtcbiAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRhVmlldykgcmV0dXJuIHNlcmlhbGl6ZVR5cGVkQXJyYXkoXCJWXCIsIHZhbHVlKTtcbiAgICAgICAgICBpZiAoXCJmdW5jdGlvblwiID09PSB0eXBlb2YgQmxvYiAmJiB2YWx1ZSBpbnN0YW5jZW9mIEJsb2IpXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICBudWxsID09PSBmb3JtRGF0YSAmJiAoZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKSksXG4gICAgICAgICAgICAgIChrZXkgPSBuZXh0UGFydElkKyspLFxuICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoZm9ybUZpZWxkUHJlZml4ICsga2V5LCB2YWx1ZSksXG4gICAgICAgICAgICAgIFwiJEJcIiArIGtleS50b1N0cmluZygxNilcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKChwYXJlbnRSZWZlcmVuY2UgPSBnZXRJdGVyYXRvckZuKHZhbHVlKSkpXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAocGFyZW50UmVmZXJlbmNlID0gcGFyZW50UmVmZXJlbmNlLmNhbGwodmFsdWUpKSxcbiAgICAgICAgICAgICAgcGFyZW50UmVmZXJlbmNlID09PSB2YWx1ZVxuICAgICAgICAgICAgICAgID8gKChrZXkgPSBuZXh0UGFydElkKyspLFxuICAgICAgICAgICAgICAgICAgKHBhcmVudFJlZmVyZW5jZSA9IHNlcmlhbGl6ZU1vZGVsKFxuICAgICAgICAgICAgICAgICAgICBBcnJheS5mcm9tKHBhcmVudFJlZmVyZW5jZSksXG4gICAgICAgICAgICAgICAgICAgIGtleVxuICAgICAgICAgICAgICAgICAgKSksXG4gICAgICAgICAgICAgICAgICBudWxsID09PSBmb3JtRGF0YSAmJiAoZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKSksXG4gICAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoZm9ybUZpZWxkUHJlZml4ICsga2V5LCBwYXJlbnRSZWZlcmVuY2UpLFxuICAgICAgICAgICAgICAgICAgXCIkaVwiICsga2V5LnRvU3RyaW5nKDE2KSlcbiAgICAgICAgICAgICAgICA6IEFycmF5LmZyb20ocGFyZW50UmVmZXJlbmNlKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBSZWFkYWJsZVN0cmVhbSAmJlxuICAgICAgICAgICAgdmFsdWUgaW5zdGFuY2VvZiBSZWFkYWJsZVN0cmVhbVxuICAgICAgICAgIClcbiAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemVSZWFkYWJsZVN0cmVhbSh2YWx1ZSk7XG4gICAgICAgICAgcGFyZW50UmVmZXJlbmNlID0gdmFsdWVbQVNZTkNfSVRFUkFUT1JdO1xuICAgICAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBwYXJlbnRSZWZlcmVuY2UpXG4gICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplQXN5bmNJdGVyYWJsZSh2YWx1ZSwgcGFyZW50UmVmZXJlbmNlLmNhbGwodmFsdWUpKTtcbiAgICAgICAgICBwYXJlbnRSZWZlcmVuY2UgPSBnZXRQcm90b3R5cGVPZih2YWx1ZSk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgcGFyZW50UmVmZXJlbmNlICE9PSBPYmplY3RQcm90b3R5cGUgJiZcbiAgICAgICAgICAgIChudWxsID09PSBwYXJlbnRSZWZlcmVuY2UgfHxcbiAgICAgICAgICAgICAgbnVsbCAhPT0gZ2V0UHJvdG90eXBlT2YocGFyZW50UmVmZXJlbmNlKSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IHRlbXBvcmFyeVJlZmVyZW5jZXMpXG4gICAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgIFwiT25seSBwbGFpbiBvYmplY3RzLCBhbmQgYSBmZXcgYnVpbHQtaW5zLCBjYW4gYmUgcGFzc2VkIHRvIFNlcnZlciBGdW5jdGlvbnMuIENsYXNzZXMgb3IgbnVsbCBwcm90b3R5cGVzIGFyZSBub3Qgc3VwcG9ydGVkLlwiICtcbiAgICAgICAgICAgICAgICAgIGRlc2NyaWJlT2JqZWN0Rm9yRXJyb3JNZXNzYWdlKHRoaXMsIGtleSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBcIiRUXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhbHVlLiQkdHlwZW9mID09PSBSRUFDVF9DT05URVhUX1RZUEVcbiAgICAgICAgICAgID8gY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICBcIlJlYWN0IENvbnRleHQgUHJvdmlkZXJzIGNhbm5vdCBiZSBwYXNzZWQgdG8gU2VydmVyIEZ1bmN0aW9ucyBmcm9tIHRoZSBDbGllbnQuJXNcIixcbiAgICAgICAgICAgICAgICBkZXNjcmliZU9iamVjdEZvckVycm9yTWVzc2FnZSh0aGlzLCBrZXkpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogXCJPYmplY3RcIiAhPT0gb2JqZWN0TmFtZSh2YWx1ZSlcbiAgICAgICAgICAgICAgPyBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgXCJPbmx5IHBsYWluIG9iamVjdHMgY2FuIGJlIHBhc3NlZCB0byBTZXJ2ZXIgRnVuY3Rpb25zIGZyb20gdGhlIENsaWVudC4gJXMgb2JqZWN0cyBhcmUgbm90IHN1cHBvcnRlZC4lc1wiLFxuICAgICAgICAgICAgICAgICAgb2JqZWN0TmFtZSh2YWx1ZSksXG4gICAgICAgICAgICAgICAgICBkZXNjcmliZU9iamVjdEZvckVycm9yTWVzc2FnZSh0aGlzLCBrZXkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IGlzU2ltcGxlT2JqZWN0KHZhbHVlKVxuICAgICAgICAgICAgICAgID8gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyAmJlxuICAgICAgICAgICAgICAgICAgKChwYXJlbnRSZWZlcmVuY2UgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHZhbHVlKSksXG4gICAgICAgICAgICAgICAgICAwIDwgcGFyZW50UmVmZXJlbmNlLmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgIFwiT25seSBwbGFpbiBvYmplY3RzIGNhbiBiZSBwYXNzZWQgdG8gU2VydmVyIEZ1bmN0aW9ucyBmcm9tIHRoZSBDbGllbnQuIE9iamVjdHMgd2l0aCBzeW1ib2wgcHJvcGVydGllcyBsaWtlICVzIGFyZSBub3Qgc3VwcG9ydGVkLiVzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgcGFyZW50UmVmZXJlbmNlWzBdLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlT2JqZWN0Rm9yRXJyb3JNZXNzYWdlKHRoaXMsIGtleSlcbiAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICA6IGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIFwiT25seSBwbGFpbiBvYmplY3RzIGNhbiBiZSBwYXNzZWQgdG8gU2VydmVyIEZ1bmN0aW9ucyBmcm9tIHRoZSBDbGllbnQuIENsYXNzZXMgb3Igb3RoZXIgb2JqZWN0cyB3aXRoIG1ldGhvZHMgYXJlIG5vdCBzdXBwb3J0ZWQuJXNcIixcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVPYmplY3RGb3JFcnJvck1lc3NhZ2UodGhpcywga2V5KVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiB2YWx1ZSkge1xuICAgICAgICAgIGlmIChcIlpcIiA9PT0gdmFsdWVbdmFsdWUubGVuZ3RoIC0gMV0gJiYgdGhpc1trZXldIGluc3RhbmNlb2YgRGF0ZSlcbiAgICAgICAgICAgIHJldHVybiBcIiREXCIgKyB2YWx1ZTtcbiAgICAgICAgICBrZXkgPSBcIiRcIiA9PT0gdmFsdWVbMF0gPyBcIiRcIiArIHZhbHVlIDogdmFsdWU7XG4gICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXCJib29sZWFuXCIgPT09IHR5cGVvZiB2YWx1ZSkgcmV0dXJuIHZhbHVlO1xuICAgICAgICBpZiAoXCJudW1iZXJcIiA9PT0gdHlwZW9mIHZhbHVlKSByZXR1cm4gc2VyaWFsaXplTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgaWYgKFwidW5kZWZpbmVkXCIgPT09IHR5cGVvZiB2YWx1ZSkgcmV0dXJuIFwiJHVuZGVmaW5lZFwiO1xuICAgICAgICBpZiAoXCJmdW5jdGlvblwiID09PSB0eXBlb2YgdmFsdWUpIHtcbiAgICAgICAgICBwYXJlbnRSZWZlcmVuY2UgPSBrbm93blNlcnZlclJlZmVyZW5jZXMuZ2V0KHZhbHVlKTtcbiAgICAgICAgICBpZiAodm9pZCAwICE9PSBwYXJlbnRSZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIGtleSA9IHdyaXR0ZW5PYmplY3RzLmdldCh2YWx1ZSk7XG4gICAgICAgICAgICBpZiAodm9pZCAwICE9PSBrZXkpIHJldHVybiBrZXk7XG4gICAgICAgICAgICBrZXkgPSBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgeyBpZDogcGFyZW50UmVmZXJlbmNlLmlkLCBib3VuZDogcGFyZW50UmVmZXJlbmNlLmJvdW5kIH0sXG4gICAgICAgICAgICAgIHJlc29sdmVUb0pTT05cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBudWxsID09PSBmb3JtRGF0YSAmJiAoZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKSk7XG4gICAgICAgICAgICBwYXJlbnRSZWZlcmVuY2UgPSBuZXh0UGFydElkKys7XG4gICAgICAgICAgICBmb3JtRGF0YS5zZXQoZm9ybUZpZWxkUHJlZml4ICsgcGFyZW50UmVmZXJlbmNlLCBrZXkpO1xuICAgICAgICAgICAga2V5ID0gXCIkaFwiICsgcGFyZW50UmVmZXJlbmNlLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgICAgIHdyaXR0ZW5PYmplY3RzLnNldCh2YWx1ZSwga2V5KTtcbiAgICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHZvaWQgMCAhPT0gdGVtcG9yYXJ5UmVmZXJlbmNlcyAmJlxuICAgICAgICAgICAgLTEgPT09IGtleS5pbmRleE9mKFwiOlwiKSAmJlxuICAgICAgICAgICAgKChwYXJlbnRSZWZlcmVuY2UgPSB3cml0dGVuT2JqZWN0cy5nZXQodGhpcykpLFxuICAgICAgICAgICAgdm9pZCAwICE9PSBwYXJlbnRSZWZlcmVuY2UpXG4gICAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgdGVtcG9yYXJ5UmVmZXJlbmNlcy5zZXQocGFyZW50UmVmZXJlbmNlICsgXCI6XCIgKyBrZXksIHZhbHVlKSwgXCIkVFwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgXCJDbGllbnQgRnVuY3Rpb25zIGNhbm5vdCBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gU2VydmVyIEZ1bmN0aW9ucy4gT25seSBGdW5jdGlvbnMgcGFzc2VkIGZyb20gdGhlIFNlcnZlciBjYW4gYmUgcGFzc2VkIGJhY2sgYWdhaW4uXCJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcInN5bWJvbFwiID09PSB0eXBlb2YgdmFsdWUpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB2b2lkIDAgIT09IHRlbXBvcmFyeVJlZmVyZW5jZXMgJiZcbiAgICAgICAgICAgIC0xID09PSBrZXkuaW5kZXhPZihcIjpcIikgJiZcbiAgICAgICAgICAgICgocGFyZW50UmVmZXJlbmNlID0gd3JpdHRlbk9iamVjdHMuZ2V0KHRoaXMpKSxcbiAgICAgICAgICAgIHZvaWQgMCAhPT0gcGFyZW50UmVmZXJlbmNlKVxuICAgICAgICAgIClcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIHRlbXBvcmFyeVJlZmVyZW5jZXMuc2V0KHBhcmVudFJlZmVyZW5jZSArIFwiOlwiICsga2V5LCB2YWx1ZSksIFwiJFRcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgIFwiU3ltYm9scyBjYW5ub3QgYmUgcGFzc2VkIHRvIGEgU2VydmVyIEZ1bmN0aW9uIHdpdGhvdXQgYSB0ZW1wb3JhcnkgcmVmZXJlbmNlIHNldC4gUGFzcyBhIFRlbXBvcmFyeVJlZmVyZW5jZVNldCB0byB0aGUgb3B0aW9ucy5cIiArXG4gICAgICAgICAgICAgIGRlc2NyaWJlT2JqZWN0Rm9yRXJyb3JNZXNzYWdlKHRoaXMsIGtleSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcImJpZ2ludFwiID09PSB0eXBlb2YgdmFsdWUpIHJldHVybiBcIiRuXCIgKyB2YWx1ZS50b1N0cmluZygxMCk7XG4gICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgIFwiVHlwZSBcIiArXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgK1xuICAgICAgICAgICAgXCIgaXMgbm90IHN1cHBvcnRlZCBhcyBhbiBhcmd1bWVudCB0byBhIFNlcnZlciBGdW5jdGlvbi5cIlxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gc2VyaWFsaXplTW9kZWwobW9kZWwsIGlkKSB7XG4gICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiBtb2RlbCAmJlxuICAgICAgICAgIG51bGwgIT09IG1vZGVsICYmXG4gICAgICAgICAgKChpZCA9IFwiJFwiICsgaWQudG9TdHJpbmcoMTYpKSxcbiAgICAgICAgICB3cml0dGVuT2JqZWN0cy5zZXQobW9kZWwsIGlkKSxcbiAgICAgICAgICB2b2lkIDAgIT09IHRlbXBvcmFyeVJlZmVyZW5jZXMgJiYgdGVtcG9yYXJ5UmVmZXJlbmNlcy5zZXQoaWQsIG1vZGVsKSk7XG4gICAgICAgIG1vZGVsUm9vdCA9IG1vZGVsO1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkobW9kZWwsIHJlc29sdmVUb0pTT04pO1xuICAgICAgfVxuICAgICAgdmFyIG5leHRQYXJ0SWQgPSAxLFxuICAgICAgICBwZW5kaW5nUGFydHMgPSAwLFxuICAgICAgICBmb3JtRGF0YSA9IG51bGwsXG4gICAgICAgIHdyaXR0ZW5PYmplY3RzID0gbmV3IFdlYWtNYXAoKSxcbiAgICAgICAgbW9kZWxSb290ID0gcm9vdDtcbiAgICAgIGNoZWNrRXZhbEF2YWlsYWJpbGl0eU9uY2VEZXYoKTtcbiAgICAgIHZhciBqc29uID0gc2VyaWFsaXplTW9kZWwocm9vdCwgMCk7XG4gICAgICBudWxsID09PSBmb3JtRGF0YVxuICAgICAgICA/IHJlc29sdmUoanNvbilcbiAgICAgICAgOiAoZm9ybURhdGEuc2V0KGZvcm1GaWVsZFByZWZpeCArIFwiMFwiLCBqc29uKSxcbiAgICAgICAgICAwID09PSBwZW5kaW5nUGFydHMgJiYgcmVzb2x2ZShmb3JtRGF0YSkpO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgMCA8IHBlbmRpbmdQYXJ0cyAmJlxuICAgICAgICAgICgocGVuZGluZ1BhcnRzID0gMCksXG4gICAgICAgICAgbnVsbCA9PT0gZm9ybURhdGEgPyByZXNvbHZlKGpzb24pIDogcmVzb2x2ZShmb3JtRGF0YSkpO1xuICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZW5jb2RlRm9ybURhdGEocmVmZXJlbmNlKSB7XG4gICAgICB2YXIgcmVzb2x2ZSxcbiAgICAgICAgcmVqZWN0LFxuICAgICAgICB0aGVuYWJsZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXMsIHJlaikge1xuICAgICAgICAgIHJlc29sdmUgPSByZXM7XG4gICAgICAgICAgcmVqZWN0ID0gcmVqO1xuICAgICAgICB9KTtcbiAgICAgIHByb2Nlc3NSZXBseShcbiAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICBcIlwiLFxuICAgICAgICB2b2lkIDAsXG4gICAgICAgIGZ1bmN0aW9uIChib2R5KSB7XG4gICAgICAgICAgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiBib2R5KSB7XG4gICAgICAgICAgICB2YXIgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICAgICAgZGF0YS5hcHBlbmQoXCIwXCIsIGJvZHkpO1xuICAgICAgICAgICAgYm9keSA9IGRhdGE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoZW5hYmxlLnN0YXR1cyA9IFwiZnVsZmlsbGVkXCI7XG4gICAgICAgICAgdGhlbmFibGUudmFsdWUgPSBib2R5O1xuICAgICAgICAgIHJlc29sdmUoYm9keSk7XG4gICAgICAgIH0sXG4gICAgICAgIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgdGhlbmFibGUuc3RhdHVzID0gXCJyZWplY3RlZFwiO1xuICAgICAgICAgIHRoZW5hYmxlLnJlYXNvbiA9IGU7XG4gICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgICAgcmV0dXJuIHRoZW5hYmxlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZWZhdWx0RW5jb2RlRm9ybUFjdGlvbihpZGVudGlmaWVyUHJlZml4KSB7XG4gICAgICB2YXIgcmVmZXJlbmNlQ2xvc3VyZSA9IGtub3duU2VydmVyUmVmZXJlbmNlcy5nZXQodGhpcyk7XG4gICAgICBpZiAoIXJlZmVyZW5jZUNsb3N1cmUpXG4gICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgIFwiVHJpZWQgdG8gZW5jb2RlIGEgU2VydmVyIEFjdGlvbiBmcm9tIGEgZGlmZmVyZW50IGluc3RhbmNlIHRoYW4gdGhlIGVuY29kZXIgaXMgZnJvbS4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC5cIlxuICAgICAgICApO1xuICAgICAgdmFyIGRhdGEgPSBudWxsO1xuICAgICAgaWYgKG51bGwgIT09IHJlZmVyZW5jZUNsb3N1cmUuYm91bmQpIHtcbiAgICAgICAgZGF0YSA9IGJvdW5kQ2FjaGUuZ2V0KHJlZmVyZW5jZUNsb3N1cmUpO1xuICAgICAgICBkYXRhIHx8XG4gICAgICAgICAgKChkYXRhID0gZW5jb2RlRm9ybURhdGEoe1xuICAgICAgICAgICAgaWQ6IHJlZmVyZW5jZUNsb3N1cmUuaWQsXG4gICAgICAgICAgICBib3VuZDogcmVmZXJlbmNlQ2xvc3VyZS5ib3VuZFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgICBib3VuZENhY2hlLnNldChyZWZlcmVuY2VDbG9zdXJlLCBkYXRhKSk7XG4gICAgICAgIGlmIChcInJlamVjdGVkXCIgPT09IGRhdGEuc3RhdHVzKSB0aHJvdyBkYXRhLnJlYXNvbjtcbiAgICAgICAgaWYgKFwiZnVsZmlsbGVkXCIgIT09IGRhdGEuc3RhdHVzKSB0aHJvdyBkYXRhO1xuICAgICAgICByZWZlcmVuY2VDbG9zdXJlID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHByZWZpeGVkRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICByZWZlcmVuY2VDbG9zdXJlLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgICAgICBwcmVmaXhlZERhdGEuYXBwZW5kKFwiJEFDVElPTl9cIiArIGlkZW50aWZpZXJQcmVmaXggKyBcIjpcIiArIGtleSwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgZGF0YSA9IHByZWZpeGVkRGF0YTtcbiAgICAgICAgcmVmZXJlbmNlQ2xvc3VyZSA9IFwiJEFDVElPTl9SRUZfXCIgKyBpZGVudGlmaWVyUHJlZml4O1xuICAgICAgfSBlbHNlIHJlZmVyZW5jZUNsb3N1cmUgPSBcIiRBQ1RJT05fSURfXCIgKyByZWZlcmVuY2VDbG9zdXJlLmlkO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogcmVmZXJlbmNlQ2xvc3VyZSxcbiAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgZW5jVHlwZTogXCJtdWx0aXBhcnQvZm9ybS1kYXRhXCIsXG4gICAgICAgIGRhdGE6IGRhdGFcbiAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzU2lnbmF0dXJlRXF1YWwocmVmZXJlbmNlSWQsIG51bWJlck9mQm91bmRBcmdzKSB7XG4gICAgICB2YXIgcmVmZXJlbmNlQ2xvc3VyZSA9IGtub3duU2VydmVyUmVmZXJlbmNlcy5nZXQodGhpcyk7XG4gICAgICBpZiAoIXJlZmVyZW5jZUNsb3N1cmUpXG4gICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgIFwiVHJpZWQgdG8gZW5jb2RlIGEgU2VydmVyIEFjdGlvbiBmcm9tIGEgZGlmZmVyZW50IGluc3RhbmNlIHRoYW4gdGhlIGVuY29kZXIgaXMgZnJvbS4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC5cIlxuICAgICAgICApO1xuICAgICAgaWYgKHJlZmVyZW5jZUNsb3N1cmUuaWQgIT09IHJlZmVyZW5jZUlkKSByZXR1cm4gITE7XG4gICAgICB2YXIgYm91bmRQcm9taXNlID0gcmVmZXJlbmNlQ2xvc3VyZS5ib3VuZDtcbiAgICAgIGlmIChudWxsID09PSBib3VuZFByb21pc2UpIHJldHVybiAwID09PSBudW1iZXJPZkJvdW5kQXJncztcbiAgICAgIHN3aXRjaCAoYm91bmRQcm9taXNlLnN0YXR1cykge1xuICAgICAgICBjYXNlIFwiZnVsZmlsbGVkXCI6XG4gICAgICAgICAgcmV0dXJuIGJvdW5kUHJvbWlzZS52YWx1ZS5sZW5ndGggPT09IG51bWJlck9mQm91bmRBcmdzO1xuICAgICAgICBjYXNlIFwicGVuZGluZ1wiOlxuICAgICAgICAgIHRocm93IGJvdW5kUHJvbWlzZTtcbiAgICAgICAgY2FzZSBcInJlamVjdGVkXCI6XG4gICAgICAgICAgdGhyb3cgYm91bmRQcm9taXNlLnJlYXNvbjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyAoXG4gICAgICAgICAgICAoXCJzdHJpbmdcIiAhPT0gdHlwZW9mIGJvdW5kUHJvbWlzZS5zdGF0dXMgJiZcbiAgICAgICAgICAgICAgKChib3VuZFByb21pc2Uuc3RhdHVzID0gXCJwZW5kaW5nXCIpLFxuICAgICAgICAgICAgICBib3VuZFByb21pc2UudGhlbihcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoYm91bmRBcmdzKSB7XG4gICAgICAgICAgICAgICAgICBib3VuZFByb21pc2Uuc3RhdHVzID0gXCJmdWxmaWxsZWRcIjtcbiAgICAgICAgICAgICAgICAgIGJvdW5kUHJvbWlzZS52YWx1ZSA9IGJvdW5kQXJncztcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgYm91bmRQcm9taXNlLnN0YXR1cyA9IFwicmVqZWN0ZWRcIjtcbiAgICAgICAgICAgICAgICAgIGJvdW5kUHJvbWlzZS5yZWFzb24gPSBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgYm91bmRQcm9taXNlKVxuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZUZha2VTZXJ2ZXJGdW5jdGlvbihcbiAgICAgIG5hbWUsXG4gICAgICBmaWxlbmFtZSxcbiAgICAgIHNvdXJjZU1hcCxcbiAgICAgIGxpbmUsXG4gICAgICBjb2wsXG4gICAgICBlbnZpcm9ubWVudE5hbWUsXG4gICAgICBpbm5lckZ1bmN0aW9uXG4gICAgKSB7XG4gICAgICBuYW1lIHx8IChuYW1lID0gXCI8YW5vbnltb3VzPlwiKTtcbiAgICAgIHZhciBlbmNvZGVkTmFtZSA9IEpTT04uc3RyaW5naWZ5KG5hbWUpO1xuICAgICAgMSA+PSBsaW5lXG4gICAgICAgID8gKChsaW5lID0gZW5jb2RlZE5hbWUubGVuZ3RoICsgNyksXG4gICAgICAgICAgKGNvbCA9XG4gICAgICAgICAgICBcInM9Pih7XCIgK1xuICAgICAgICAgICAgZW5jb2RlZE5hbWUgK1xuICAgICAgICAgICAgXCIgXCIucmVwZWF0KGNvbCA8IGxpbmUgPyAwIDogY29sIC0gbGluZSkgK1xuICAgICAgICAgICAgXCI6KC4uLmFyZ3MpID0+IHMoLi4uYXJncyl9KVxcbi8qIFRoaXMgbW9kdWxlIGlzIGEgcHJveHkgdG8gYSBTZXJ2ZXIgQWN0aW9uLiBUdXJuIG9uIFNvdXJjZSBNYXBzIHRvIHNlZSB0aGUgc2VydmVyIHNvdXJjZS4gKi9cIikpXG4gICAgICAgIDogKGNvbCA9XG4gICAgICAgICAgICBcIi8qIFRoaXMgbW9kdWxlIGlzIGEgcHJveHkgdG8gYSBTZXJ2ZXIgQWN0aW9uLiBUdXJuIG9uIFNvdXJjZSBNYXBzIHRvIHNlZSB0aGUgc2VydmVyIHNvdXJjZS4gKi9cIiArXG4gICAgICAgICAgICBcIlxcblwiLnJlcGVhdChsaW5lIC0gMikgK1xuICAgICAgICAgICAgXCJzZXJ2ZXI9Pih7XCIgK1xuICAgICAgICAgICAgZW5jb2RlZE5hbWUgK1xuICAgICAgICAgICAgXCI6XFxuXCIgK1xuICAgICAgICAgICAgXCIgXCIucmVwZWF0KDEgPiBjb2wgPyAwIDogY29sIC0gMSkgK1xuICAgICAgICAgICAgXCIoLi4uYXJncykgPT4gc2VydmVyKC4uLmFyZ3MpfSlcIik7XG4gICAgICBmaWxlbmFtZS5zdGFydHNXaXRoKFwiL1wiKSAmJiAoZmlsZW5hbWUgPSBcImZpbGU6Ly9cIiArIGZpbGVuYW1lKTtcbiAgICAgIHNvdXJjZU1hcFxuICAgICAgICA/ICgoY29sICs9XG4gICAgICAgICAgICBcIlxcbi8vIyBzb3VyY2VVUkw9YWJvdXQ6Ly9SZWFjdC9cIiArXG4gICAgICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoZW52aXJvbm1lbnROYW1lKSArXG4gICAgICAgICAgICBcIi9cIiArXG4gICAgICAgICAgICBlbmNvZGVVUkkoZmlsZW5hbWUpICtcbiAgICAgICAgICAgIFwiP3NcIiArXG4gICAgICAgICAgICBmYWtlU2VydmVyRnVuY3Rpb25JZHgrKyksXG4gICAgICAgICAgKGNvbCArPSBcIlxcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVwiICsgc291cmNlTWFwKSlcbiAgICAgICAgOiBmaWxlbmFtZSAmJiAoY29sICs9IFwiXFxuLy8jIHNvdXJjZVVSTD1cIiArIGZpbGVuYW1lKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiAoMCwgZXZhbCkoY29sKShpbm5lckZ1bmN0aW9uKVtuYW1lXTtcbiAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgcmV0dXJuIGlubmVyRnVuY3Rpb247XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlZ2lzdGVyQm91bmRTZXJ2ZXJSZWZlcmVuY2UoXG4gICAgICByZWZlcmVuY2UsXG4gICAgICBpZCxcbiAgICAgIGJvdW5kLFxuICAgICAgZW5jb2RlRm9ybUFjdGlvblxuICAgICkge1xuICAgICAga25vd25TZXJ2ZXJSZWZlcmVuY2VzLmhhcyhyZWZlcmVuY2UpIHx8XG4gICAgICAgIChrbm93blNlcnZlclJlZmVyZW5jZXMuc2V0KHJlZmVyZW5jZSwge1xuICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICBvcmlnaW5hbEJpbmQ6IHJlZmVyZW5jZS5iaW5kLFxuICAgICAgICAgIGJvdW5kOiBib3VuZFxuICAgICAgICB9KSxcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMocmVmZXJlbmNlLCB7XG4gICAgICAgICAgJCRGT1JNX0FDVElPTjoge1xuICAgICAgICAgICAgdmFsdWU6XG4gICAgICAgICAgICAgIHZvaWQgMCA9PT0gZW5jb2RlRm9ybUFjdGlvblxuICAgICAgICAgICAgICAgID8gZGVmYXVsdEVuY29kZUZvcm1BY3Rpb25cbiAgICAgICAgICAgICAgICA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZmVyZW5jZUNsb3N1cmUgPSBrbm93blNlcnZlclJlZmVyZW5jZXMuZ2V0KHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlZmVyZW5jZUNsb3N1cmUpXG4gICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlRyaWVkIHRvIGVuY29kZSBhIFNlcnZlciBBY3Rpb24gZnJvbSBhIGRpZmZlcmVudCBpbnN0YW5jZSB0aGFuIHRoZSBlbmNvZGVyIGlzIGZyb20uIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QuXCJcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYm91bmRQcm9taXNlID0gcmVmZXJlbmNlQ2xvc3VyZS5ib3VuZDtcbiAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gYm91bmRQcm9taXNlICYmXG4gICAgICAgICAgICAgICAgICAgICAgKGJvdW5kUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShbXSkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW5jb2RlRm9ybUFjdGlvbihyZWZlcmVuY2VDbG9zdXJlLmlkLCBib3VuZFByb21pc2UpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgJCRJU19TSUdOQVRVUkVfRVFVQUw6IHsgdmFsdWU6IGlzU2lnbmF0dXJlRXF1YWwgfSxcbiAgICAgICAgICBiaW5kOiB7IHZhbHVlOiBiaW5kIH1cbiAgICAgICAgfSkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBiaW5kKCkge1xuICAgICAgdmFyIHJlZmVyZW5jZUNsb3N1cmUgPSBrbm93blNlcnZlclJlZmVyZW5jZXMuZ2V0KHRoaXMpO1xuICAgICAgaWYgKCFyZWZlcmVuY2VDbG9zdXJlKSByZXR1cm4gRnVuY3Rpb25CaW5kLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB2YXIgbmV3Rm4gPSByZWZlcmVuY2VDbG9zdXJlLm9yaWdpbmFsQmluZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgbnVsbCAhPSBhcmd1bWVudHNbMF0gJiZcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAnQ2Fubm90IGJpbmQgXCJ0aGlzXCIgb2YgYSBTZXJ2ZXIgQWN0aW9uLiBQYXNzIG51bGwgb3IgdW5kZWZpbmVkIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byAuYmluZCgpLidcbiAgICAgICAgKTtcbiAgICAgIHZhciBhcmdzID0gQXJyYXlTbGljZS5jYWxsKGFyZ3VtZW50cywgMSksXG4gICAgICAgIGJvdW5kUHJvbWlzZSA9IG51bGw7XG4gICAgICBib3VuZFByb21pc2UgPVxuICAgICAgICBudWxsICE9PSByZWZlcmVuY2VDbG9zdXJlLmJvdW5kXG4gICAgICAgICAgPyBQcm9taXNlLnJlc29sdmUocmVmZXJlbmNlQ2xvc3VyZS5ib3VuZCkudGhlbihmdW5jdGlvbiAoYm91bmRBcmdzKSB7XG4gICAgICAgICAgICAgIHJldHVybiBib3VuZEFyZ3MuY29uY2F0KGFyZ3MpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICA6IFByb21pc2UucmVzb2x2ZShhcmdzKTtcbiAgICAgIGtub3duU2VydmVyUmVmZXJlbmNlcy5zZXQobmV3Rm4sIHtcbiAgICAgICAgaWQ6IHJlZmVyZW5jZUNsb3N1cmUuaWQsXG4gICAgICAgIG9yaWdpbmFsQmluZDogbmV3Rm4uYmluZCxcbiAgICAgICAgYm91bmQ6IGJvdW5kUHJvbWlzZVxuICAgICAgfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhuZXdGbiwge1xuICAgICAgICAkJEZPUk1fQUNUSU9OOiB7IHZhbHVlOiB0aGlzLiQkRk9STV9BQ1RJT04gfSxcbiAgICAgICAgJCRJU19TSUdOQVRVUkVfRVFVQUw6IHsgdmFsdWU6IGlzU2lnbmF0dXJlRXF1YWwgfSxcbiAgICAgICAgYmluZDogeyB2YWx1ZTogYmluZCB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXdGbjtcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlQm91bmRTZXJ2ZXJSZWZlcmVuY2UoXG4gICAgICBtZXRhRGF0YSxcbiAgICAgIGNhbGxTZXJ2ZXIsXG4gICAgICBlbmNvZGVGb3JtQWN0aW9uLFxuICAgICAgZmluZFNvdXJjZU1hcFVSTFxuICAgICkge1xuICAgICAgZnVuY3Rpb24gYWN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgICAgIHJldHVybiBib3VuZFxuICAgICAgICAgID8gXCJmdWxmaWxsZWRcIiA9PT0gYm91bmQuc3RhdHVzXG4gICAgICAgICAgICA/IGNhbGxTZXJ2ZXIoaWQsIGJvdW5kLnZhbHVlLmNvbmNhdChhcmdzKSlcbiAgICAgICAgICAgIDogUHJvbWlzZS5yZXNvbHZlKGJvdW5kKS50aGVuKGZ1bmN0aW9uIChib3VuZEFyZ3MpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbFNlcnZlcihpZCwgYm91bmRBcmdzLmNvbmNhdChhcmdzKSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgOiBjYWxsU2VydmVyKGlkLCBhcmdzKTtcbiAgICAgIH1cbiAgICAgIHZhciBpZCA9IG1ldGFEYXRhLmlkLFxuICAgICAgICBib3VuZCA9IG1ldGFEYXRhLmJvdW5kLFxuICAgICAgICBsb2NhdGlvbiA9IG1ldGFEYXRhLmxvY2F0aW9uO1xuICAgICAgaWYgKGxvY2F0aW9uKSB7XG4gICAgICAgIHZhciBmdW5jdGlvbk5hbWUgPSBtZXRhRGF0YS5uYW1lIHx8IFwiXCIsXG4gICAgICAgICAgZmlsZW5hbWUgPSBsb2NhdGlvblsxXSxcbiAgICAgICAgICBsaW5lID0gbG9jYXRpb25bMl07XG4gICAgICAgIGxvY2F0aW9uID0gbG9jYXRpb25bM107XG4gICAgICAgIG1ldGFEYXRhID0gbWV0YURhdGEuZW52IHx8IFwiU2VydmVyXCI7XG4gICAgICAgIGZpbmRTb3VyY2VNYXBVUkwgPVxuICAgICAgICAgIG51bGwgPT0gZmluZFNvdXJjZU1hcFVSTFxuICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICA6IGZpbmRTb3VyY2VNYXBVUkwoZmlsZW5hbWUsIG1ldGFEYXRhKTtcbiAgICAgICAgYWN0aW9uID0gY3JlYXRlRmFrZVNlcnZlckZ1bmN0aW9uKFxuICAgICAgICAgIGZ1bmN0aW9uTmFtZSxcbiAgICAgICAgICBmaWxlbmFtZSxcbiAgICAgICAgICBmaW5kU291cmNlTWFwVVJMLFxuICAgICAgICAgIGxpbmUsXG4gICAgICAgICAgbG9jYXRpb24sXG4gICAgICAgICAgbWV0YURhdGEsXG4gICAgICAgICAgYWN0aW9uXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZWdpc3RlckJvdW5kU2VydmVyUmVmZXJlbmNlKGFjdGlvbiwgaWQsIGJvdW5kLCBlbmNvZGVGb3JtQWN0aW9uKTtcbiAgICAgIHJldHVybiBhY3Rpb247XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBhcnNlU3RhY2tMb2NhdGlvbihlcnJvcikge1xuICAgICAgZXJyb3IgPSBlcnJvci5zdGFjaztcbiAgICAgIGVycm9yLnN0YXJ0c1dpdGgoXCJFcnJvcjogcmVhY3Qtc3RhY2stdG9wLWZyYW1lXFxuXCIpICYmXG4gICAgICAgIChlcnJvciA9IGVycm9yLnNsaWNlKDI5KSk7XG4gICAgICB2YXIgZW5kT2ZGaXJzdCA9IGVycm9yLmluZGV4T2YoXCJcXG5cIik7XG4gICAgICBpZiAoLTEgIT09IGVuZE9mRmlyc3QpIHtcbiAgICAgICAgdmFyIGVuZE9mU2Vjb25kID0gZXJyb3IuaW5kZXhPZihcIlxcblwiLCBlbmRPZkZpcnN0ICsgMSk7XG4gICAgICAgIGVuZE9mRmlyc3QgPVxuICAgICAgICAgIC0xID09PSBlbmRPZlNlY29uZFxuICAgICAgICAgICAgPyBlcnJvci5zbGljZShlbmRPZkZpcnN0ICsgMSlcbiAgICAgICAgICAgIDogZXJyb3Iuc2xpY2UoZW5kT2ZGaXJzdCArIDEsIGVuZE9mU2Vjb25kKTtcbiAgICAgIH0gZWxzZSBlbmRPZkZpcnN0ID0gZXJyb3I7XG4gICAgICBlcnJvciA9IHY4RnJhbWVSZWdFeHAuZXhlYyhlbmRPZkZpcnN0KTtcbiAgICAgIGlmIChcbiAgICAgICAgIWVycm9yICYmXG4gICAgICAgICgoZXJyb3IgPSBqc2NTcGlkZXJNb25rZXlGcmFtZVJlZ0V4cC5leGVjKGVuZE9mRmlyc3QpKSwgIWVycm9yKVxuICAgICAgKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGVuZE9mRmlyc3QgPSBlcnJvclsxXSB8fCBcIlwiO1xuICAgICAgXCI8YW5vbnltb3VzPlwiID09PSBlbmRPZkZpcnN0ICYmIChlbmRPZkZpcnN0ID0gXCJcIik7XG4gICAgICBlbmRPZlNlY29uZCA9IGVycm9yWzJdIHx8IGVycm9yWzVdIHx8IFwiXCI7XG4gICAgICBcIjxhbm9ueW1vdXM+XCIgPT09IGVuZE9mU2Vjb25kICYmIChlbmRPZlNlY29uZCA9IFwiXCIpO1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgZW5kT2ZGaXJzdCxcbiAgICAgICAgZW5kT2ZTZWNvbmQsXG4gICAgICAgICsoZXJyb3JbM10gfHwgZXJyb3JbNl0pLFxuICAgICAgICArKGVycm9yWzRdIHx8IGVycm9yWzddKVxuICAgICAgXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlU2VydmVyUmVmZXJlbmNlJDEoXG4gICAgICBpZCxcbiAgICAgIGNhbGxTZXJ2ZXIsXG4gICAgICBlbmNvZGVGb3JtQWN0aW9uLFxuICAgICAgZmluZFNvdXJjZU1hcFVSTCxcbiAgICAgIGZ1bmN0aW9uTmFtZVxuICAgICkge1xuICAgICAgZnVuY3Rpb24gYWN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgICAgIHJldHVybiBjYWxsU2VydmVyKGlkLCBhcmdzKTtcbiAgICAgIH1cbiAgICAgIHZhciBsb2NhdGlvbiA9IHBhcnNlU3RhY2tMb2NhdGlvbihFcnJvcihcInJlYWN0LXN0YWNrLXRvcC1mcmFtZVwiKSk7XG4gICAgICBpZiAobnVsbCAhPT0gbG9jYXRpb24pIHtcbiAgICAgICAgdmFyIGZpbGVuYW1lID0gbG9jYXRpb25bMV0sXG4gICAgICAgICAgbGluZSA9IGxvY2F0aW9uWzJdO1xuICAgICAgICBsb2NhdGlvbiA9IGxvY2F0aW9uWzNdO1xuICAgICAgICBmaW5kU291cmNlTWFwVVJMID1cbiAgICAgICAgICBudWxsID09IGZpbmRTb3VyY2VNYXBVUkxcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiBmaW5kU291cmNlTWFwVVJMKGZpbGVuYW1lLCBcIkNsaWVudFwiKTtcbiAgICAgICAgYWN0aW9uID0gY3JlYXRlRmFrZVNlcnZlckZ1bmN0aW9uKFxuICAgICAgICAgIGZ1bmN0aW9uTmFtZSB8fCBcIlwiLFxuICAgICAgICAgIGZpbGVuYW1lLFxuICAgICAgICAgIGZpbmRTb3VyY2VNYXBVUkwsXG4gICAgICAgICAgbGluZSxcbiAgICAgICAgICBsb2NhdGlvbixcbiAgICAgICAgICBcIkNsaWVudFwiLFxuICAgICAgICAgIGFjdGlvblxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmVnaXN0ZXJCb3VuZFNlcnZlclJlZmVyZW5jZShhY3Rpb24sIGlkLCBudWxsLCBlbmNvZGVGb3JtQWN0aW9uKTtcbiAgICAgIHJldHVybiBhY3Rpb247XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB7XG4gICAgICBpZiAobnVsbCA9PSB0eXBlKSByZXR1cm4gbnVsbDtcbiAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB0eXBlKVxuICAgICAgICByZXR1cm4gdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRVxuICAgICAgICAgID8gbnVsbFxuICAgICAgICAgIDogdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgbnVsbDtcbiAgICAgIGlmIChcInN0cmluZ1wiID09PSB0eXBlb2YgdHlwZSkgcmV0dXJuIHR5cGU7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBSRUFDVF9GUkFHTUVOVF9UWVBFOlxuICAgICAgICAgIHJldHVybiBcIkZyYWdtZW50XCI7XG4gICAgICAgIGNhc2UgUkVBQ1RfUFJPRklMRVJfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJQcm9maWxlclwiO1xuICAgICAgICBjYXNlIFJFQUNUX1NUUklDVF9NT0RFX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIFwiU3RyaWN0TW9kZVwiO1xuICAgICAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIFwiU3VzcGVuc2VcIjtcbiAgICAgICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIFwiU3VzcGVuc2VMaXN0XCI7XG4gICAgICAgIGNhc2UgUkVBQ1RfQUNUSVZJVFlfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJBY3Rpdml0eVwiO1xuICAgICAgICBjYXNlIFJFQUNUX1ZJRVdfVFJBTlNJVElPTl9UWVBFOlxuICAgICAgICAgIHJldHVybiBcIlZpZXdUcmFuc2l0aW9uXCI7XG4gICAgICB9XG4gICAgICBpZiAoXCJvYmplY3RcIiA9PT0gdHlwZW9mIHR5cGUpXG4gICAgICAgIHN3aXRjaCAoXG4gICAgICAgICAgKFwibnVtYmVyXCIgPT09IHR5cGVvZiB0eXBlLnRhZyAmJlxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCJSZWNlaXZlZCBhbiB1bmV4cGVjdGVkIG9iamVjdCBpbiBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoKS4gVGhpcyBpcyBsaWtlbHkgYSBidWcgaW4gUmVhY3QuIFBsZWFzZSBmaWxlIGFuIGlzc3VlLlwiXG4gICAgICAgICAgICApLFxuICAgICAgICAgIHR5cGUuJCR0eXBlb2YpXG4gICAgICAgICkge1xuICAgICAgICAgIGNhc2UgUkVBQ1RfUE9SVEFMX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gXCJQb3J0YWxcIjtcbiAgICAgICAgICBjYXNlIFJFQUNUX0NPTlRFWFRfVFlQRTpcbiAgICAgICAgICAgIHJldHVybiB0eXBlLmRpc3BsYXlOYW1lIHx8IFwiQ29udGV4dFwiO1xuICAgICAgICAgIGNhc2UgUkVBQ1RfQ09OU1VNRVJfVFlQRTpcbiAgICAgICAgICAgIHJldHVybiAodHlwZS5fY29udGV4dC5kaXNwbGF5TmFtZSB8fCBcIkNvbnRleHRcIikgKyBcIi5Db25zdW1lclwiO1xuICAgICAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgICAgIHZhciBpbm5lclR5cGUgPSB0eXBlLnJlbmRlcjtcbiAgICAgICAgICAgIHR5cGUgPSB0eXBlLmRpc3BsYXlOYW1lO1xuICAgICAgICAgICAgdHlwZSB8fFxuICAgICAgICAgICAgICAoKHR5cGUgPSBpbm5lclR5cGUuZGlzcGxheU5hbWUgfHwgaW5uZXJUeXBlLm5hbWUgfHwgXCJcIiksXG4gICAgICAgICAgICAgICh0eXBlID0gXCJcIiAhPT0gdHlwZSA/IFwiRm9yd2FyZFJlZihcIiArIHR5cGUgKyBcIilcIiA6IFwiRm9yd2FyZFJlZlwiKSk7XG4gICAgICAgICAgICByZXR1cm4gdHlwZTtcbiAgICAgICAgICBjYXNlIFJFQUNUX01FTU9fVFlQRTpcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIChpbm5lclR5cGUgPSB0eXBlLmRpc3BsYXlOYW1lIHx8IG51bGwpLFxuICAgICAgICAgICAgICBudWxsICE9PSBpbm5lclR5cGVcbiAgICAgICAgICAgICAgICA/IGlubmVyVHlwZVxuICAgICAgICAgICAgICAgIDogZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUudHlwZSkgfHwgXCJNZW1vXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgICAgICBpbm5lclR5cGUgPSB0eXBlLl9wYXlsb2FkO1xuICAgICAgICAgICAgdHlwZSA9IHR5cGUuX2luaXQ7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUoaW5uZXJUeXBlKSk7XG4gICAgICAgICAgICB9IGNhdGNoICh4KSB7fVxuICAgICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0QXJyYXlLaW5kKGFycmF5KSB7XG4gICAgICBmb3IgKHZhciBraW5kID0gMCwgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGggJiYgMTAwID4gaTsgaSsrKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2ldO1xuICAgICAgICBpZiAoXCJvYmplY3RcIiA9PT0gdHlwZW9mIHZhbHVlICYmIG51bGwgIT09IHZhbHVlKVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGlzQXJyYXlJbXBsKHZhbHVlKSAmJlxuICAgICAgICAgICAgMiA9PT0gdmFsdWUubGVuZ3RoICYmXG4gICAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgdmFsdWVbMF1cbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlmICgwICE9PSBraW5kICYmIDMgIT09IGtpbmQpIHJldHVybiAxO1xuICAgICAgICAgICAga2luZCA9IDM7XG4gICAgICAgICAgfSBlbHNlIHJldHVybiAxO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB2YWx1ZSB8fFxuICAgICAgICAgICAgKFwic3RyaW5nXCIgPT09IHR5cGVvZiB2YWx1ZSAmJiA1MCA8IHZhbHVlLmxlbmd0aCkgfHxcbiAgICAgICAgICAgICgwICE9PSBraW5kICYmIDIgIT09IGtpbmQpIHx8XG4gICAgICAgICAgICBcImJpZ2ludFwiID09PSB0eXBlb2YgdmFsdWVcbiAgICAgICAgICApXG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICBraW5kID0gMjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGtpbmQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFkZE9iamVjdFRvUHJvcGVydGllcyhvYmplY3QsIHByb3BlcnRpZXMsIGluZGVudCwgcHJlZml4KSB7XG4gICAgICB2YXIgYWRkZWRQcm9wZXJ0aWVzID0gMCxcbiAgICAgICAga2V5O1xuICAgICAgZm9yIChrZXkgaW4gb2JqZWN0KVxuICAgICAgICBpZiAoXG4gICAgICAgICAgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiZcbiAgICAgICAgICBcIl9cIiAhPT0ga2V5WzBdICYmXG4gICAgICAgICAgKGFkZGVkUHJvcGVydGllcysrLFxuICAgICAgICAgIGFkZFZhbHVlVG9Qcm9wZXJ0aWVzKGtleSwgb2JqZWN0W2tleV0sIHByb3BlcnRpZXMsIGluZGVudCwgcHJlZml4KSxcbiAgICAgICAgICAxMDAgPD0gYWRkZWRQcm9wZXJ0aWVzKVxuICAgICAgICApIHtcbiAgICAgICAgICBwcm9wZXJ0aWVzLnB1c2goW1xuICAgICAgICAgICAgcHJlZml4ICtcbiAgICAgICAgICAgICAgXCJcXHUwMGEwXFx1MDBhMFwiLnJlcGVhdChpbmRlbnQpICtcbiAgICAgICAgICAgICAgXCJPbmx5IDEwMCBwcm9wZXJ0aWVzIGFyZSBzaG93bi4gUmVhY3Qgd2lsbCBub3QgbG9nIG1vcmUgcHJvcGVydGllcyBvZiB0aGlzIG9iamVjdC5cIixcbiAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBhZGRWYWx1ZVRvUHJvcGVydGllcyhcbiAgICAgIHByb3BlcnR5TmFtZSxcbiAgICAgIHZhbHVlLFxuICAgICAgcHJvcGVydGllcyxcbiAgICAgIGluZGVudCxcbiAgICAgIHByZWZpeFxuICAgICkge1xuICAgICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgICAgIGlmIChudWxsID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgdmFsdWUgPSBcIm51bGxcIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIChcIiQkdHlwZW9mXCIgaW4gdmFsdWUgJiYgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgXCIkJHR5cGVvZlwiKVxuICAgICAgICAgICAgICAgID8gdmFsdWUuJCR0eXBlb2ZcbiAgICAgICAgICAgICAgICA6IHZvaWQgMCkgPT09IFJFQUNUX0VMRU1FTlRfVFlQRVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHZhciB0eXBlTmFtZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh2YWx1ZS50eXBlKSB8fCBcIlxcdTIwMjZcIixcbiAgICAgICAgICAgICAgICBrZXkgPSB2YWx1ZS5rZXk7XG4gICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucHJvcHM7XG4gICAgICAgICAgICAgIHZhciBwcm9wc0tleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSksXG4gICAgICAgICAgICAgICAgcHJvcHNMZW5ndGggPSBwcm9wc0tleXMubGVuZ3RoO1xuICAgICAgICAgICAgICBpZiAobnVsbCA9PSBrZXkgJiYgMCA9PT0gcHJvcHNMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IFwiPFwiICsgdHlwZU5hbWUgKyBcIiAvPlwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAzID4gaW5kZW50IHx8XG4gICAgICAgICAgICAgICAgKDEgPT09IHByb3BzTGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICBcImNoaWxkcmVuXCIgPT09IHByb3BzS2V5c1swXSAmJlxuICAgICAgICAgICAgICAgICAgbnVsbCA9PSBrZXkpXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gXCI8XCIgKyB0eXBlTmFtZSArIFwiIFxcdTIwMjYgLz5cIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBwcm9wZXJ0aWVzLnB1c2goW1xuICAgICAgICAgICAgICAgIHByZWZpeCArIFwiXFx1MDBhMFxcdTAwYTBcIi5yZXBlYXQoaW5kZW50KSArIHByb3BlcnR5TmFtZSxcbiAgICAgICAgICAgICAgICBcIjxcIiArIHR5cGVOYW1lXG4gICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICBudWxsICE9PSBrZXkgJiZcbiAgICAgICAgICAgICAgICBhZGRWYWx1ZVRvUHJvcGVydGllcyhcbiAgICAgICAgICAgICAgICAgIFwia2V5XCIsXG4gICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAgICAgaW5kZW50ICsgMSxcbiAgICAgICAgICAgICAgICAgIHByZWZpeFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHByb3BlcnR5TmFtZSA9ICExO1xuICAgICAgICAgICAgICBrZXkgPSAwO1xuICAgICAgICAgICAgICBmb3IgKHZhciBwcm9wS2V5IGluIHZhbHVlKVxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIChrZXkrKyxcbiAgICAgICAgICAgICAgICAgIFwiY2hpbGRyZW5cIiA9PT0gcHJvcEtleVxuICAgICAgICAgICAgICAgICAgICA/IG51bGwgIT0gdmFsdWUuY2hpbGRyZW4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAoIWlzQXJyYXlJbXBsKHZhbHVlLmNoaWxkcmVuKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgMCA8IHZhbHVlLmNoaWxkcmVuLmxlbmd0aCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAocHJvcGVydHlOYW1lID0gITApXG4gICAgICAgICAgICAgICAgICAgIDogaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgcHJvcEtleSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICBcIl9cIiAhPT0gcHJvcEtleVswXSAmJlxuICAgICAgICAgICAgICAgICAgICAgIGFkZFZhbHVlVG9Qcm9wZXJ0aWVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcEtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlW3Byb3BLZXldLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudCArIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhcbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgMTAwIDw9IGtleSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgcHJvcGVydGllcy5wdXNoKFtcbiAgICAgICAgICAgICAgICBcIlwiLFxuICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZSA/IFwiPlxcdTIwMjY8L1wiICsgdHlwZU5hbWUgKyBcIj5cIiA6IFwiLz5cIlxuICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHlwZU5hbWUgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICAgICAgICAgICAgcHJvcEtleSA9IHR5cGVOYW1lLnNsaWNlKDgsIHR5cGVOYW1lLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgaWYgKFwiQXJyYXlcIiA9PT0gcHJvcEtleSlcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICgodHlwZU5hbWUgPSAxMDAgPCB2YWx1ZS5sZW5ndGgpLFxuICAgICAgICAgICAgICAgIChrZXkgPSBnZXRBcnJheUtpbmQodmFsdWUpKSxcbiAgICAgICAgICAgICAgICAyID09PSBrZXkgfHwgMCA9PT0ga2V5KVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICAgICAgdHlwZU5hbWUgPyB2YWx1ZS5zbGljZSgwLCAxMDApLmNvbmNhdChcIlxcdTIwMjZcIikgOiB2YWx1ZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoMyA9PT0ga2V5KSB7XG4gICAgICAgICAgICAgICAgcHJvcGVydGllcy5wdXNoKFtcbiAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiXFx1MDBhMFxcdTAwYTBcIi5yZXBlYXQoaW5kZW50KSArIHByb3BlcnR5TmFtZSxcbiAgICAgICAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lID0gMDtcbiAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZSA8IHZhbHVlLmxlbmd0aCAmJiAxMDAgPiBwcm9wZXJ0eU5hbWU7XG4gICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWUrK1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIChwcm9wS2V5ID0gdmFsdWVbcHJvcGVydHlOYW1lXSksXG4gICAgICAgICAgICAgICAgICAgIGFkZFZhbHVlVG9Qcm9wZXJ0aWVzKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BLZXlbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcEtleVsxXSxcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAgICAgICAgIGluZGVudCArIDEsXG4gICAgICAgICAgICAgICAgICAgICAgcHJlZml4XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdHlwZU5hbWUgJiZcbiAgICAgICAgICAgICAgICAgIGFkZFZhbHVlVG9Qcm9wZXJ0aWVzKFxuICAgICAgICAgICAgICAgICAgICAoMTAwKS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICBcIlxcdTIwMjZcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllcyxcbiAgICAgICAgICAgICAgICAgICAgaW5kZW50ICsgMSxcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4XG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFwiUHJvbWlzZVwiID09PSBwcm9wS2V5KSB7XG4gICAgICAgICAgICAgIGlmIChcImZ1bGZpbGxlZFwiID09PSB2YWx1ZS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAoKHR5cGVOYW1lID0gcHJvcGVydGllcy5sZW5ndGgpLFxuICAgICAgICAgICAgICAgICAgYWRkVmFsdWVUb1Byb3BlcnRpZXMoXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXMsXG4gICAgICAgICAgICAgICAgICAgIGluZGVudCxcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4XG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgcHJvcGVydGllcy5sZW5ndGggPiB0eXBlTmFtZSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzW3R5cGVOYW1lXTtcbiAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXNbMV0gPVxuICAgICAgICAgICAgICAgICAgICBcIlByb21pc2U8XCIgKyAocHJvcGVydGllc1sxXSB8fCBcIk9iamVjdFwiKSArIFwiPlwiO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBcInJlamVjdGVkXCIgPT09IHZhbHVlLnN0YXR1cyAmJlxuICAgICAgICAgICAgICAgICgodHlwZU5hbWUgPSBwcm9wZXJ0aWVzLmxlbmd0aCksXG4gICAgICAgICAgICAgICAgYWRkVmFsdWVUb1Byb3BlcnRpZXMoXG4gICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICAgICAgICB2YWx1ZS5yZWFzb24sXG4gICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAgICAgaW5kZW50LFxuICAgICAgICAgICAgICAgICAgcHJlZml4XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzLmxlbmd0aCA+IHR5cGVOYW1lKVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzID0gcHJvcGVydGllc1t0eXBlTmFtZV07XG4gICAgICAgICAgICAgICAgcHJvcGVydGllc1sxXSA9IFwiUmVqZWN0ZWQgUHJvbWlzZTxcIiArIHByb3BlcnRpZXNbMV0gKyBcIj5cIjtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcHJvcGVydGllcy5wdXNoKFtcbiAgICAgICAgICAgICAgICBcIlxcdTAwYTBcXHUwMGEwXCIucmVwZWF0KGluZGVudCkgKyBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICAgICAgXCJQcm9taXNlXCJcbiAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFwiT2JqZWN0XCIgPT09IHByb3BLZXkgJiZcbiAgICAgICAgICAgICAgKHR5cGVOYW1lID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKSkgJiZcbiAgICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgdHlwZU5hbWUuY29uc3RydWN0b3IgJiZcbiAgICAgICAgICAgICAgKHByb3BLZXkgPSB0eXBlTmFtZS5jb25zdHJ1Y3Rvci5uYW1lKTtcbiAgICAgICAgICAgIHByb3BlcnRpZXMucHVzaChbXG4gICAgICAgICAgICAgIHByZWZpeCArIFwiXFx1MDBhMFxcdTAwYTBcIi5yZXBlYXQoaW5kZW50KSArIHByb3BlcnR5TmFtZSxcbiAgICAgICAgICAgICAgXCJPYmplY3RcIiA9PT0gcHJvcEtleSA/ICgzID4gaW5kZW50ID8gXCJcIiA6IFwiXFx1MjAyNlwiKSA6IHByb3BLZXlcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgMyA+IGluZGVudCAmJlxuICAgICAgICAgICAgICBhZGRPYmplY3RUb1Byb3BlcnRpZXModmFsdWUsIHByb3BlcnRpZXMsIGluZGVudCArIDEsIHByZWZpeCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlIFwiZnVuY3Rpb25cIjpcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLm5hbWU7XG4gICAgICAgICAgdmFsdWUgPVxuICAgICAgICAgICAgXCJcIiA9PT0gdmFsdWUgfHwgXCJzdHJpbmdcIiAhPT0gdHlwZW9mIHZhbHVlXG4gICAgICAgICAgICAgID8gXCIoKSA9PiB7fVwiXG4gICAgICAgICAgICAgIDogdmFsdWUgKyBcIigpIHt9XCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgICB2YWx1ZSA9XG4gICAgICAgICAgICBcIlRoaXMgb2JqZWN0IGhhcyBiZWVuIG9taXR0ZWQgYnkgUmVhY3QgaW4gdGhlIGNvbnNvbGUgbG9nIHRvIGF2b2lkIHNlbmRpbmcgdG9vIG11Y2ggZGF0YSBmcm9tIHRoZSBzZXJ2ZXIuIFRyeSBsb2dnaW5nIHNtYWxsZXIgb3IgbW9yZSBzcGVjaWZpYyBvYmplY3RzLlwiID09PVxuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgICAgPyBcIlxcdTIwMjZcIlxuICAgICAgICAgICAgICA6IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInVuZGVmaW5lZFwiOlxuICAgICAgICAgIHZhbHVlID0gXCJ1bmRlZmluZWRcIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlID8gXCJ0cnVlXCIgOiBcImZhbHNlXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuICAgICAgfVxuICAgICAgcHJvcGVydGllcy5wdXNoKFtcbiAgICAgICAgcHJlZml4ICsgXCJcXHUwMGEwXFx1MDBhMFwiLnJlcGVhdChpbmRlbnQpICsgcHJvcGVydHlOYW1lLFxuICAgICAgICB2YWx1ZVxuICAgICAgXSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldElPRGVzY3JpcHRpb24odmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7XG4gICAgICAgICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUubmFtZSB8fCBcIlwiO1xuICAgICAgICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgICAgICAgIGlmIChudWxsID09PSB2YWx1ZSkgcmV0dXJuIFwiXCI7XG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBFcnJvcikgcmV0dXJuIFN0cmluZyh2YWx1ZS5tZXNzYWdlKTtcbiAgICAgICAgICAgIGlmIChcInN0cmluZ1wiID09PSB0eXBlb2YgdmFsdWUudXJsKSByZXR1cm4gdmFsdWUudXJsO1xuICAgICAgICAgICAgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiB2YWx1ZS5ocmVmKSByZXR1cm4gdmFsdWUuaHJlZjtcbiAgICAgICAgICAgIGlmIChcInN0cmluZ1wiID09PSB0eXBlb2YgdmFsdWUuc3JjKSByZXR1cm4gdmFsdWUuc3JjO1xuICAgICAgICAgICAgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiB2YWx1ZS5jdXJyZW50U3JjKSByZXR1cm4gdmFsdWUuY3VycmVudFNyYztcbiAgICAgICAgICAgIGlmIChcInN0cmluZ1wiID09PSB0eXBlb2YgdmFsdWUuY29tbWFuZCkgcmV0dXJuIHZhbHVlLmNvbW1hbmQ7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiB2YWx1ZS5yZXF1ZXN0ICYmXG4gICAgICAgICAgICAgIG51bGwgIT09IHZhbHVlLnJlcXVlc3QgJiZcbiAgICAgICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHZhbHVlLnJlcXVlc3QudXJsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5yZXF1ZXN0LnVybDtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIHZhbHVlLnJlc3BvbnNlICYmXG4gICAgICAgICAgICAgIG51bGwgIT09IHZhbHVlLnJlc3BvbnNlICYmXG4gICAgICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiB2YWx1ZS5yZXNwb25zZS51cmxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnJlc3BvbnNlLnVybDtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHZhbHVlLmlkIHx8XG4gICAgICAgICAgICAgIFwibnVtYmVyXCIgPT09IHR5cGVvZiB2YWx1ZS5pZCB8fFxuICAgICAgICAgICAgICBcImJpZ2ludFwiID09PSB0eXBlb2YgdmFsdWUuaWRcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZS5pZCk7XG4gICAgICAgICAgICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHZhbHVlLm5hbWUpIHJldHVybiB2YWx1ZS5uYW1lO1xuICAgICAgICAgICAgdmFyIHN0ciA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICByZXR1cm4gc3RyLnN0YXJ0c1dpdGgoXCJbb2JqZWN0IFwiKSB8fFxuICAgICAgICAgICAgICA1ID4gc3RyLmxlbmd0aCB8fFxuICAgICAgICAgICAgICA1MDAgPCBzdHIubGVuZ3RoXG4gICAgICAgICAgICAgID8gXCJcIlxuICAgICAgICAgICAgICA6IHN0cjtcbiAgICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgICByZXR1cm4gNSA+IHZhbHVlLmxlbmd0aCB8fCA1MDAgPCB2YWx1ZS5sZW5ndGggPyBcIlwiIDogdmFsdWU7XG4gICAgICAgICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgICAgIGNhc2UgXCJiaWdpbnRcIjpcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gbWFya0FsbFRyYWNrc0luT3JkZXIoKSB7XG4gICAgICBzdXBwb3J0c1VzZXJUaW1pbmcgJiZcbiAgICAgICAgKGNvbnNvbGUudGltZVN0YW1wKFxuICAgICAgICAgIFwiU2VydmVyIFJlcXVlc3RzIFRyYWNrXCIsXG4gICAgICAgICAgMC4wMDEsXG4gICAgICAgICAgMC4wMDEsXG4gICAgICAgICAgXCJTZXJ2ZXIgUmVxdWVzdHMgXFx1MjY5YlwiLFxuICAgICAgICAgIHZvaWQgMCxcbiAgICAgICAgICBcInByaW1hcnktbGlnaHRcIlxuICAgICAgICApLFxuICAgICAgICBjb25zb2xlLnRpbWVTdGFtcChcbiAgICAgICAgICBcIlNlcnZlciBDb21wb25lbnRzIFRyYWNrXCIsXG4gICAgICAgICAgMC4wMDEsXG4gICAgICAgICAgMC4wMDEsXG4gICAgICAgICAgXCJQcmltYXJ5XCIsXG4gICAgICAgICAgXCJTZXJ2ZXIgQ29tcG9uZW50cyBcXHUyNjliXCIsXG4gICAgICAgICAgXCJwcmltYXJ5LWxpZ2h0XCJcbiAgICAgICAgKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldElPQ29sb3IoZnVuY3Rpb25OYW1lKSB7XG4gICAgICBzd2l0Y2ggKGZ1bmN0aW9uTmFtZS5jaGFyQ29kZUF0KDApICUgMykge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgcmV0dXJuIFwidGVydGlhcnktbGlnaHRcIjtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIHJldHVybiBcInRlcnRpYXJ5XCI7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIFwidGVydGlhcnktZGFya1wiO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRJT0xvbmdOYW1lKGlvSW5mbywgZGVzY3JpcHRpb24sIGVudiwgcm9vdEVudikge1xuICAgICAgaW9JbmZvID0gaW9JbmZvLm5hbWU7XG4gICAgICBkZXNjcmlwdGlvbiA9XG4gICAgICAgIFwiXCIgPT09IGRlc2NyaXB0aW9uID8gaW9JbmZvIDogaW9JbmZvICsgXCIgKFwiICsgZGVzY3JpcHRpb24gKyBcIilcIjtcbiAgICAgIHJldHVybiBlbnYgPT09IHJvb3RFbnYgfHwgdm9pZCAwID09PSBlbnZcbiAgICAgICAgPyBkZXNjcmlwdGlvblxuICAgICAgICA6IGRlc2NyaXB0aW9uICsgXCIgW1wiICsgZW52ICsgXCJdXCI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldElPU2hvcnROYW1lKGlvSW5mbywgZGVzY3JpcHRpb24sIGVudiwgcm9vdEVudikge1xuICAgICAgaW9JbmZvID0gaW9JbmZvLm5hbWU7XG4gICAgICBlbnYgPSBlbnYgPT09IHJvb3RFbnYgfHwgdm9pZCAwID09PSBlbnYgPyBcIlwiIDogXCIgW1wiICsgZW52ICsgXCJdXCI7XG4gICAgICB2YXIgZGVzYyA9IFwiXCI7XG4gICAgICByb290RW52ID0gMzAgLSBpb0luZm8ubGVuZ3RoIC0gZW52Lmxlbmd0aDtcbiAgICAgIGlmICgxIDwgcm9vdEVudikge1xuICAgICAgICB2YXIgbCA9IGRlc2NyaXB0aW9uLmxlbmd0aDtcbiAgICAgICAgaWYgKDAgPCBsICYmIGwgPD0gcm9vdEVudikgZGVzYyA9IFwiIChcIiArIGRlc2NyaXB0aW9uICsgXCIpXCI7XG4gICAgICAgIGVsc2UgaWYgKFxuICAgICAgICAgIGRlc2NyaXB0aW9uLnN0YXJ0c1dpdGgoXCJodHRwOi8vXCIpIHx8XG4gICAgICAgICAgZGVzY3JpcHRpb24uc3RhcnRzV2l0aChcImh0dHBzOi8vXCIpIHx8XG4gICAgICAgICAgZGVzY3JpcHRpb24uc3RhcnRzV2l0aChcIi9cIilcbiAgICAgICAgKSB7XG4gICAgICAgICAgdmFyIHF1ZXJ5SWR4ID0gZGVzY3JpcHRpb24uaW5kZXhPZihcIj9cIik7XG4gICAgICAgICAgLTEgPT09IHF1ZXJ5SWR4ICYmIChxdWVyeUlkeCA9IGRlc2NyaXB0aW9uLmxlbmd0aCk7XG4gICAgICAgICAgNDcgPT09IGRlc2NyaXB0aW9uLmNoYXJDb2RlQXQocXVlcnlJZHggLSAxKSAmJiBxdWVyeUlkeC0tO1xuICAgICAgICAgIGRlc2MgPSBkZXNjcmlwdGlvbi5sYXN0SW5kZXhPZihcIi9cIiwgcXVlcnlJZHggLSAxKTtcbiAgICAgICAgICBxdWVyeUlkeCAtIGRlc2MgPCByb290RW52XG4gICAgICAgICAgICA/IChkZXNjID0gXCIgKFxcdTIwMjZcIiArIGRlc2NyaXB0aW9uLnNsaWNlKGRlc2MsIHF1ZXJ5SWR4KSArIFwiKVwiKVxuICAgICAgICAgICAgOiAoKGwgPSBkZXNjcmlwdGlvbi5zbGljZShkZXNjLCBkZXNjICsgcm9vdEVudiAvIDIpKSxcbiAgICAgICAgICAgICAgKGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uc2xpY2UoXG4gICAgICAgICAgICAgICAgcXVlcnlJZHggLSByb290RW52IC8gMixcbiAgICAgICAgICAgICAgICBxdWVyeUlkeFxuICAgICAgICAgICAgICApKSxcbiAgICAgICAgICAgICAgKGRlc2MgPVxuICAgICAgICAgICAgICAgIFwiIChcIiArXG4gICAgICAgICAgICAgICAgKDAgPCBkZXNjID8gXCJcXHUyMDI2XCIgOiBcIlwiKSArXG4gICAgICAgICAgICAgICAgbCArXG4gICAgICAgICAgICAgICAgXCJcXHUyMDI2XCIgK1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICtcbiAgICAgICAgICAgICAgICBcIilcIikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gaW9JbmZvICsgZGVzYyArIGVudjtcbiAgICB9XG4gICAgZnVuY3Rpb24gbG9nQ29tcG9uZW50QXdhaXQoXG4gICAgICBhc3luY0luZm8sXG4gICAgICB0cmFja0lkeCxcbiAgICAgIHN0YXJ0VGltZSxcbiAgICAgIGVuZFRpbWUsXG4gICAgICByb290RW52LFxuICAgICAgdmFsdWVcbiAgICApIHtcbiAgICAgIGlmIChzdXBwb3J0c1VzZXJUaW1pbmcgJiYgMCA8IGVuZFRpbWUpIHtcbiAgICAgICAgdmFyIGRlc2NyaXB0aW9uID0gZ2V0SU9EZXNjcmlwdGlvbih2YWx1ZSksXG4gICAgICAgICAgbmFtZSA9IGdldElPU2hvcnROYW1lKFxuICAgICAgICAgICAgYXN5bmNJbmZvLmF3YWl0ZWQsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGFzeW5jSW5mby5lbnYsXG4gICAgICAgICAgICByb290RW52XG4gICAgICAgICAgKSxcbiAgICAgICAgICBlbnRyeU5hbWUgPSBcImF3YWl0IFwiICsgbmFtZTtcbiAgICAgICAgbmFtZSA9IGdldElPQ29sb3IobmFtZSk7XG4gICAgICAgIHZhciBkZWJ1Z1Rhc2sgPSBhc3luY0luZm8uZGVidWdUYXNrIHx8IGFzeW5jSW5mby5hd2FpdGVkLmRlYnVnVGFzaztcbiAgICAgICAgaWYgKGRlYnVnVGFzaykge1xuICAgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gW107XG4gICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIHZhbHVlICYmIG51bGwgIT09IHZhbHVlXG4gICAgICAgICAgICA/IGFkZE9iamVjdFRvUHJvcGVydGllcyh2YWx1ZSwgcHJvcGVydGllcywgMCwgXCJcIilcbiAgICAgICAgICAgIDogdm9pZCAwICE9PSB2YWx1ZSAmJlxuICAgICAgICAgICAgICBhZGRWYWx1ZVRvUHJvcGVydGllcyhcImF3YWl0ZWQgdmFsdWVcIiwgdmFsdWUsIHByb3BlcnRpZXMsIDAsIFwiXCIpO1xuICAgICAgICAgIGFzeW5jSW5mbyA9IGdldElPTG9uZ05hbWUoXG4gICAgICAgICAgICBhc3luY0luZm8uYXdhaXRlZCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYXN5bmNJbmZvLmVudixcbiAgICAgICAgICAgIHJvb3RFbnZcbiAgICAgICAgICApO1xuICAgICAgICAgIGRlYnVnVGFzay5ydW4oXG4gICAgICAgICAgICBwZXJmb3JtYW5jZS5tZWFzdXJlLmJpbmQocGVyZm9ybWFuY2UsIGVudHJ5TmFtZSwge1xuICAgICAgICAgICAgICBzdGFydDogMCA+IHN0YXJ0VGltZSA/IDAgOiBzdGFydFRpbWUsXG4gICAgICAgICAgICAgIGVuZDogZW5kVGltZSxcbiAgICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgZGV2dG9vbHM6IHtcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiBuYW1lLFxuICAgICAgICAgICAgICAgICAgdHJhY2s6IHRyYWNrTmFtZXNbdHJhY2tJZHhdLFxuICAgICAgICAgICAgICAgICAgdHJhY2tHcm91cDogXCJTZXJ2ZXIgQ29tcG9uZW50cyBcXHUyNjliXCIsXG4gICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAgICAgdG9vbHRpcFRleHQ6IGFzeW5jSW5mb1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICAgIHBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXMoZW50cnlOYW1lKTtcbiAgICAgICAgfSBlbHNlXG4gICAgICAgICAgY29uc29sZS50aW1lU3RhbXAoXG4gICAgICAgICAgICBlbnRyeU5hbWUsXG4gICAgICAgICAgICAwID4gc3RhcnRUaW1lID8gMCA6IHN0YXJ0VGltZSxcbiAgICAgICAgICAgIGVuZFRpbWUsXG4gICAgICAgICAgICB0cmFja05hbWVzW3RyYWNrSWR4XSxcbiAgICAgICAgICAgIFwiU2VydmVyIENvbXBvbmVudHMgXFx1MjY5YlwiLFxuICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGxvZ0lPSW5mb0Vycm9yZWQoaW9JbmZvLCByb290RW52LCBlcnJvcikge1xuICAgICAgdmFyIHN0YXJ0VGltZSA9IGlvSW5mby5zdGFydCxcbiAgICAgICAgZW5kVGltZSA9IGlvSW5mby5lbmQ7XG4gICAgICBpZiAoc3VwcG9ydHNVc2VyVGltaW5nICYmIDAgPD0gZW5kVGltZSkge1xuICAgICAgICB2YXIgZGVzY3JpcHRpb24gPSBnZXRJT0Rlc2NyaXB0aW9uKGVycm9yKSxcbiAgICAgICAgICBlbnRyeU5hbWUgPSBnZXRJT1Nob3J0TmFtZShpb0luZm8sIGRlc2NyaXB0aW9uLCBpb0luZm8uZW52LCByb290RW52KSxcbiAgICAgICAgICBkZWJ1Z1Rhc2sgPSBpb0luZm8uZGVidWdUYXNrO1xuICAgICAgICBlbnRyeU5hbWUgPSBcIlxcdTIwMGJcIiArIGVudHJ5TmFtZTtcbiAgICAgICAgZGVidWdUYXNrXG4gICAgICAgICAgPyAoKGVycm9yID0gW1xuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgXCJyZWplY3RlZCB3aXRoXCIsXG4gICAgICAgICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIGVycm9yICYmXG4gICAgICAgICAgICAgICAgbnVsbCAhPT0gZXJyb3IgJiZcbiAgICAgICAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgZXJyb3IubWVzc2FnZVxuICAgICAgICAgICAgICAgICAgPyBTdHJpbmcoZXJyb3IubWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgIDogU3RyaW5nKGVycm9yKVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIChpb0luZm8gPVxuICAgICAgICAgICAgICBnZXRJT0xvbmdOYW1lKGlvSW5mbywgZGVzY3JpcHRpb24sIGlvSW5mby5lbnYsIHJvb3RFbnYpICtcbiAgICAgICAgICAgICAgXCIgUmVqZWN0ZWRcIiksXG4gICAgICAgICAgICBkZWJ1Z1Rhc2sucnVuKFxuICAgICAgICAgICAgICBwZXJmb3JtYW5jZS5tZWFzdXJlLmJpbmQocGVyZm9ybWFuY2UsIGVudHJ5TmFtZSwge1xuICAgICAgICAgICAgICAgIHN0YXJ0OiAwID4gc3RhcnRUaW1lID8gMCA6IHN0YXJ0VGltZSxcbiAgICAgICAgICAgICAgICBlbmQ6IGVuZFRpbWUsXG4gICAgICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgICBkZXZ0b29sczoge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCJlcnJvclwiLFxuICAgICAgICAgICAgICAgICAgICB0cmFjazogXCJTZXJ2ZXIgUmVxdWVzdHMgXFx1MjY5YlwiLFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFRleHQ6IGlvSW5mb1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBwZXJmb3JtYW5jZS5jbGVhck1lYXN1cmVzKGVudHJ5TmFtZSkpXG4gICAgICAgICAgOiBjb25zb2xlLnRpbWVTdGFtcChcbiAgICAgICAgICAgICAgZW50cnlOYW1lLFxuICAgICAgICAgICAgICAwID4gc3RhcnRUaW1lID8gMCA6IHN0YXJ0VGltZSxcbiAgICAgICAgICAgICAgZW5kVGltZSxcbiAgICAgICAgICAgICAgXCJTZXJ2ZXIgUmVxdWVzdHMgXFx1MjY5YlwiLFxuICAgICAgICAgICAgICB2b2lkIDAsXG4gICAgICAgICAgICAgIFwiZXJyb3JcIlxuICAgICAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gbG9nSU9JbmZvKGlvSW5mbywgcm9vdEVudiwgdmFsdWUpIHtcbiAgICAgIHZhciBzdGFydFRpbWUgPSBpb0luZm8uc3RhcnQsXG4gICAgICAgIGVuZFRpbWUgPSBpb0luZm8uZW5kO1xuICAgICAgaWYgKHN1cHBvcnRzVXNlclRpbWluZyAmJiAwIDw9IGVuZFRpbWUpIHtcbiAgICAgICAgdmFyIGRlc2NyaXB0aW9uID0gZ2V0SU9EZXNjcmlwdGlvbih2YWx1ZSksXG4gICAgICAgICAgZW50cnlOYW1lID0gZ2V0SU9TaG9ydE5hbWUoaW9JbmZvLCBkZXNjcmlwdGlvbiwgaW9JbmZvLmVudiwgcm9vdEVudiksXG4gICAgICAgICAgY29sb3IgPSBnZXRJT0NvbG9yKGVudHJ5TmFtZSksXG4gICAgICAgICAgZGVidWdUYXNrID0gaW9JbmZvLmRlYnVnVGFzaztcbiAgICAgICAgZW50cnlOYW1lID0gXCJcXHUyMDBiXCIgKyBlbnRyeU5hbWU7XG4gICAgICAgIGlmIChkZWJ1Z1Rhc2spIHtcbiAgICAgICAgICB2YXIgcHJvcGVydGllcyA9IFtdO1xuICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiB2YWx1ZSAmJiBudWxsICE9PSB2YWx1ZVxuICAgICAgICAgICAgPyBhZGRPYmplY3RUb1Byb3BlcnRpZXModmFsdWUsIHByb3BlcnRpZXMsIDAsIFwiXCIpXG4gICAgICAgICAgICA6IHZvaWQgMCAhPT0gdmFsdWUgJiZcbiAgICAgICAgICAgICAgYWRkVmFsdWVUb1Byb3BlcnRpZXMoXCJSZXNvbHZlZFwiLCB2YWx1ZSwgcHJvcGVydGllcywgMCwgXCJcIik7XG4gICAgICAgICAgaW9JbmZvID0gZ2V0SU9Mb25nTmFtZShpb0luZm8sIGRlc2NyaXB0aW9uLCBpb0luZm8uZW52LCByb290RW52KTtcbiAgICAgICAgICBkZWJ1Z1Rhc2sucnVuKFxuICAgICAgICAgICAgcGVyZm9ybWFuY2UubWVhc3VyZS5iaW5kKHBlcmZvcm1hbmNlLCBlbnRyeU5hbWUsIHtcbiAgICAgICAgICAgICAgc3RhcnQ6IDAgPiBzdGFydFRpbWUgPyAwIDogc3RhcnRUaW1lLFxuICAgICAgICAgICAgICBlbmQ6IGVuZFRpbWUsXG4gICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgIGRldnRvb2xzOiB7XG4gICAgICAgICAgICAgICAgICBjb2xvcjogY29sb3IsXG4gICAgICAgICAgICAgICAgICB0cmFjazogXCJTZXJ2ZXIgUmVxdWVzdHMgXFx1MjY5YlwiLFxuICAgICAgICAgICAgICAgICAgcHJvcGVydGllczogcHJvcGVydGllcyxcbiAgICAgICAgICAgICAgICAgIHRvb2x0aXBUZXh0OiBpb0luZm9cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICBwZXJmb3JtYW5jZS5jbGVhck1lYXN1cmVzKGVudHJ5TmFtZSk7XG4gICAgICAgIH0gZWxzZVxuICAgICAgICAgIGNvbnNvbGUudGltZVN0YW1wKFxuICAgICAgICAgICAgZW50cnlOYW1lLFxuICAgICAgICAgICAgMCA+IHN0YXJ0VGltZSA/IDAgOiBzdGFydFRpbWUsXG4gICAgICAgICAgICBlbmRUaW1lLFxuICAgICAgICAgICAgXCJTZXJ2ZXIgUmVxdWVzdHMgXFx1MjY5YlwiLFxuICAgICAgICAgICAgdm9pZCAwLFxuICAgICAgICAgICAgY29sb3JcbiAgICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBwcmVwYXJlU3RhY2tUcmFjZShlcnJvciwgc3RydWN0dXJlZFN0YWNrVHJhY2UpIHtcbiAgICAgIGVycm9yID0gKGVycm9yLm5hbWUgfHwgXCJFcnJvclwiKSArIFwiOiBcIiArIChlcnJvci5tZXNzYWdlIHx8IFwiXCIpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJ1Y3R1cmVkU3RhY2tUcmFjZS5sZW5ndGg7IGkrKylcbiAgICAgICAgZXJyb3IgKz0gXCJcXG4gICAgYXQgXCIgKyBzdHJ1Y3R1cmVkU3RhY2tUcmFjZVtpXS50b1N0cmluZygpO1xuICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH1cbiAgICBmdW5jdGlvbiBSZWFjdFByb21pc2Uoc3RhdHVzLCB2YWx1ZSwgcmVhc29uKSB7XG4gICAgICB0aGlzLnN0YXR1cyA9IHN0YXR1cztcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMucmVhc29uID0gcmVhc29uO1xuICAgICAgdGhpcy5fY2hpbGRyZW4gPSBbXTtcbiAgICAgIHRoaXMuX2RlYnVnQ2h1bmsgPSBudWxsO1xuICAgICAgdGhpcy5fZGVidWdJbmZvID0gW107XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhc0dDZWRSZXNwb25zZSh3ZWFrUmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiB2b2lkIDAgPT09IHdlYWtSZXNwb25zZS53ZWFrLmRlcmVmKCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHVud3JhcFdlYWtSZXNwb25zZSh3ZWFrUmVzcG9uc2UpIHtcbiAgICAgIHdlYWtSZXNwb25zZSA9IHdlYWtSZXNwb25zZS53ZWFrLmRlcmVmKCk7XG4gICAgICBpZiAodm9pZCAwID09PSB3ZWFrUmVzcG9uc2UpXG4gICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgIFwiV2UgZGlkIG5vdCBleHBlY3QgdG8gcmVjZWl2ZSBuZXcgZGF0YSBhZnRlciBHQzppbmcgdGhlIHJlc3BvbnNlLlwiXG4gICAgICAgICk7XG4gICAgICByZXR1cm4gd2Vha1Jlc3BvbnNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjbG9zZURlYnVnQ2hhbm5lbChkZWJ1Z0NoYW5uZWwpIHtcbiAgICAgIGRlYnVnQ2hhbm5lbC5jYWxsYmFjayAmJiBkZWJ1Z0NoYW5uZWwuY2FsbGJhY2soXCJcIik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlYWRDaHVuayhjaHVuaykge1xuICAgICAgc3dpdGNoIChjaHVuay5zdGF0dXMpIHtcbiAgICAgICAgY2FzZSBcInJlc29sdmVkX21vZGVsXCI6XG4gICAgICAgICAgaW5pdGlhbGl6ZU1vZGVsQ2h1bmsoY2h1bmspO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmVzb2x2ZWRfbW9kdWxlXCI6XG4gICAgICAgICAgaW5pdGlhbGl6ZU1vZHVsZUNodW5rKGNodW5rKTtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCAoY2h1bmsuc3RhdHVzKSB7XG4gICAgICAgIGNhc2UgXCJmdWxmaWxsZWRcIjpcbiAgICAgICAgICByZXR1cm4gY2h1bmsudmFsdWU7XG4gICAgICAgIGNhc2UgXCJwZW5kaW5nXCI6XG4gICAgICAgIGNhc2UgXCJibG9ja2VkXCI6XG4gICAgICAgIGNhc2UgXCJoYWx0ZWRcIjpcbiAgICAgICAgICB0aHJvdyBjaHVuaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBjaHVuay5yZWFzb247XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldFJvb3Qod2Vha1Jlc3BvbnNlKSB7XG4gICAgICB3ZWFrUmVzcG9uc2UgPSB1bndyYXBXZWFrUmVzcG9uc2Uod2Vha1Jlc3BvbnNlKTtcbiAgICAgIHJldHVybiBnZXRDaHVuayh3ZWFrUmVzcG9uc2UsIDApO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjcmVhdGVQZW5kaW5nQ2h1bmsocmVzcG9uc2UpIHtcbiAgICAgIDAgPT09IHJlc3BvbnNlLl9wZW5kaW5nQ2h1bmtzKysgJiZcbiAgICAgICAgKChyZXNwb25zZS5fd2Vha1Jlc3BvbnNlLnJlc3BvbnNlID0gcmVzcG9uc2UpLFxuICAgICAgICBudWxsICE9PSByZXNwb25zZS5fcGVuZGluZ0luaXRpYWxSZW5kZXIgJiZcbiAgICAgICAgICAoY2xlYXJUaW1lb3V0KHJlc3BvbnNlLl9wZW5kaW5nSW5pdGlhbFJlbmRlciksXG4gICAgICAgICAgKHJlc3BvbnNlLl9wZW5kaW5nSW5pdGlhbFJlbmRlciA9IG51bGwpKSk7XG4gICAgICByZXR1cm4gbmV3IFJlYWN0UHJvbWlzZShcInBlbmRpbmdcIiwgbnVsbCwgbnVsbCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbGVhc2VQZW5kaW5nQ2h1bmsocmVzcG9uc2UsIGNodW5rKSB7XG4gICAgICBcInBlbmRpbmdcIiA9PT0gY2h1bmsuc3RhdHVzICYmXG4gICAgICAgIDAgPT09IC0tcmVzcG9uc2UuX3BlbmRpbmdDaHVua3MgJiZcbiAgICAgICAgKChyZXNwb25zZS5fd2Vha1Jlc3BvbnNlLnJlc3BvbnNlID0gbnVsbCksXG4gICAgICAgIChyZXNwb25zZS5fcGVuZGluZ0luaXRpYWxSZW5kZXIgPSBzZXRUaW1lb3V0KFxuICAgICAgICAgIGZsdXNoSW5pdGlhbFJlbmRlclBlcmZvcm1hbmNlLmJpbmQobnVsbCwgcmVzcG9uc2UpLFxuICAgICAgICAgIDEwMFxuICAgICAgICApKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZpbHRlckRlYnVnSW5mbyhyZXNwb25zZSwgdmFsdWUpIHtcbiAgICAgIGlmIChudWxsICE9PSByZXNwb25zZS5fZGVidWdFbmRUaW1lKSB7XG4gICAgICAgIHJlc3BvbnNlID0gcmVzcG9uc2UuX2RlYnVnRW5kVGltZSAtIHBlcmZvcm1hbmNlLnRpbWVPcmlnaW47XG4gICAgICAgIGZvciAodmFyIGRlYnVnSW5mbyA9IFtdLCBpID0gMDsgaSA8IHZhbHVlLl9kZWJ1Z0luZm8ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgaW5mbyA9IHZhbHVlLl9kZWJ1Z0luZm9baV07XG4gICAgICAgICAgaWYgKFwibnVtYmVyXCIgPT09IHR5cGVvZiBpbmZvLnRpbWUgJiYgaW5mby50aW1lID4gcmVzcG9uc2UpIGJyZWFrO1xuICAgICAgICAgIGRlYnVnSW5mby5wdXNoKGluZm8pO1xuICAgICAgICB9XG4gICAgICAgIHZhbHVlLl9kZWJ1Z0luZm8gPSBkZWJ1Z0luZm87XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIG1vdmVEZWJ1Z0luZm9Gcm9tQ2h1bmtUb0lubmVyVmFsdWUoY2h1bmssIHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHJlc29sdmVMYXp5KHZhbHVlKTtcbiAgICAgIFwib2JqZWN0XCIgIT09IHR5cGVvZiB2YWx1ZSB8fFxuICAgICAgICBudWxsID09PSB2YWx1ZSB8fFxuICAgICAgICAoIWlzQXJyYXlJbXBsKHZhbHVlKSAmJlxuICAgICAgICAgIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIHZhbHVlW0FTWU5DX0lURVJBVE9SXSAmJlxuICAgICAgICAgIHZhbHVlLiQkdHlwZW9mICE9PSBSRUFDVF9FTEVNRU5UX1RZUEUgJiZcbiAgICAgICAgICB2YWx1ZS4kJHR5cGVvZiAhPT0gUkVBQ1RfTEFaWV9UWVBFKSB8fFxuICAgICAgICAoKGNodW5rID0gY2h1bmsuX2RlYnVnSW5mby5zcGxpY2UoMCkpLFxuICAgICAgICBpc0FycmF5SW1wbCh2YWx1ZS5fZGVidWdJbmZvKVxuICAgICAgICAgID8gdmFsdWUuX2RlYnVnSW5mby51bnNoaWZ0LmFwcGx5KHZhbHVlLl9kZWJ1Z0luZm8sIGNodW5rKVxuICAgICAgICAgIDogT2JqZWN0LmlzRnJvemVuKHZhbHVlKSB8fFxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHZhbHVlLCBcIl9kZWJ1Z0luZm9cIiwge1xuICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICExLFxuICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLFxuICAgICAgICAgICAgICB2YWx1ZTogY2h1bmtcbiAgICAgICAgICAgIH0pKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gd2FrZUNodW5rKHJlc3BvbnNlLCBsaXN0ZW5lcnMsIHZhbHVlLCBjaHVuaykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGxpc3RlbmVyID0gbGlzdGVuZXJzW2ldO1xuICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBsaXN0ZW5lclxuICAgICAgICAgID8gbGlzdGVuZXIodmFsdWUpXG4gICAgICAgICAgOiBmdWxmaWxsUmVmZXJlbmNlKHJlc3BvbnNlLCBsaXN0ZW5lciwgdmFsdWUsIGNodW5rKTtcbiAgICAgIH1cbiAgICAgIGZpbHRlckRlYnVnSW5mbyhyZXNwb25zZSwgY2h1bmspO1xuICAgICAgbW92ZURlYnVnSW5mb0Zyb21DaHVua1RvSW5uZXJWYWx1ZShjaHVuaywgdmFsdWUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZWplY3RDaHVuayhyZXNwb25zZSwgbGlzdGVuZXJzLCBlcnJvcikge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGxpc3RlbmVyID0gbGlzdGVuZXJzW2ldO1xuICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBsaXN0ZW5lclxuICAgICAgICAgID8gbGlzdGVuZXIoZXJyb3IpXG4gICAgICAgICAgOiByZWplY3RSZWZlcmVuY2UocmVzcG9uc2UsIGxpc3RlbmVyLmhhbmRsZXIsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcmVzb2x2ZUJsb2NrZWRDeWNsZShyZXNvbHZlZENodW5rLCByZWZlcmVuY2UpIHtcbiAgICAgIHZhciByZWZlcmVuY2VkQ2h1bmsgPSByZWZlcmVuY2UuaGFuZGxlci5jaHVuaztcbiAgICAgIGlmIChudWxsID09PSByZWZlcmVuY2VkQ2h1bmspIHJldHVybiBudWxsO1xuICAgICAgaWYgKHJlZmVyZW5jZWRDaHVuayA9PT0gcmVzb2x2ZWRDaHVuaykgcmV0dXJuIHJlZmVyZW5jZS5oYW5kbGVyO1xuICAgICAgcmVmZXJlbmNlID0gcmVmZXJlbmNlZENodW5rLnZhbHVlO1xuICAgICAgaWYgKG51bGwgIT09IHJlZmVyZW5jZSlcbiAgICAgICAgZm9yIChcbiAgICAgICAgICByZWZlcmVuY2VkQ2h1bmsgPSAwO1xuICAgICAgICAgIHJlZmVyZW5jZWRDaHVuayA8IHJlZmVyZW5jZS5sZW5ndGg7XG4gICAgICAgICAgcmVmZXJlbmNlZENodW5rKytcbiAgICAgICAgKSB7XG4gICAgICAgICAgdmFyIGxpc3RlbmVyID0gcmVmZXJlbmNlW3JlZmVyZW5jZWRDaHVua107XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgbGlzdGVuZXIgJiZcbiAgICAgICAgICAgICgobGlzdGVuZXIgPSByZXNvbHZlQmxvY2tlZEN5Y2xlKHJlc29sdmVkQ2h1bmssIGxpc3RlbmVyKSksXG4gICAgICAgICAgICBudWxsICE9PSBsaXN0ZW5lcilcbiAgICAgICAgICApXG4gICAgICAgICAgICByZXR1cm4gbGlzdGVuZXI7XG4gICAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBmdW5jdGlvbiB3YWtlQ2h1bmtJZkluaXRpYWxpemVkKFxuICAgICAgcmVzcG9uc2UsXG4gICAgICBjaHVuayxcbiAgICAgIHJlc29sdmVMaXN0ZW5lcnMsXG4gICAgICByZWplY3RMaXN0ZW5lcnNcbiAgICApIHtcbiAgICAgIHN3aXRjaCAoY2h1bmsuc3RhdHVzKSB7XG4gICAgICAgIGNhc2UgXCJmdWxmaWxsZWRcIjpcbiAgICAgICAgICB3YWtlQ2h1bmsocmVzcG9uc2UsIHJlc29sdmVMaXN0ZW5lcnMsIGNodW5rLnZhbHVlLCBjaHVuayk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJibG9ja2VkXCI6XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXNvbHZlTGlzdGVuZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgbGlzdGVuZXIgPSByZXNvbHZlTGlzdGVuZXJzW2ldO1xuICAgICAgICAgICAgaWYgKFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIGxpc3RlbmVyKSB7XG4gICAgICAgICAgICAgIHZhciBjeWNsaWNIYW5kbGVyID0gcmVzb2x2ZUJsb2NrZWRDeWNsZShjaHVuaywgbGlzdGVuZXIpO1xuICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gY3ljbGljSGFuZGxlcilcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKFxuICAgICAgICAgICAgICAgICAgKGZ1bGZpbGxSZWZlcmVuY2UoXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lcixcbiAgICAgICAgICAgICAgICAgICAgY3ljbGljSGFuZGxlci52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgY2h1bmtcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICByZXNvbHZlTGlzdGVuZXJzLnNwbGljZShpLCAxKSxcbiAgICAgICAgICAgICAgICAgIGktLSxcbiAgICAgICAgICAgICAgICAgIG51bGwgIT09IHJlamVjdExpc3RlbmVycyAmJlxuICAgICAgICAgICAgICAgICAgICAoKGxpc3RlbmVyID0gcmVqZWN0TGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpKSxcbiAgICAgICAgICAgICAgICAgICAgLTEgIT09IGxpc3RlbmVyICYmIHJlamVjdExpc3RlbmVycy5zcGxpY2UobGlzdGVuZXIsIDEpKSxcbiAgICAgICAgICAgICAgICAgIGNodW5rLnN0YXR1cylcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJmdWxmaWxsZWRcIjpcbiAgICAgICAgICAgICAgICAgICAgd2FrZUNodW5rKHJlc3BvbnNlLCByZXNvbHZlTGlzdGVuZXJzLCBjaHVuay52YWx1ZSwgY2h1bmspO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICBjYXNlIFwicmVqZWN0ZWRcIjpcbiAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gcmVqZWN0TGlzdGVuZXJzICYmXG4gICAgICAgICAgICAgICAgICAgICAgcmVqZWN0Q2h1bmsocmVzcG9uc2UsIHJlamVjdExpc3RlbmVycywgY2h1bmsucmVhc29uKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJwZW5kaW5nXCI6XG4gICAgICAgICAgaWYgKGNodW5rLnZhbHVlKVxuICAgICAgICAgICAgZm9yIChyZXNwb25zZSA9IDA7IHJlc3BvbnNlIDwgcmVzb2x2ZUxpc3RlbmVycy5sZW5ndGg7IHJlc3BvbnNlKyspXG4gICAgICAgICAgICAgIGNodW5rLnZhbHVlLnB1c2gocmVzb2x2ZUxpc3RlbmVyc1tyZXNwb25zZV0pO1xuICAgICAgICAgIGVsc2UgY2h1bmsudmFsdWUgPSByZXNvbHZlTGlzdGVuZXJzO1xuICAgICAgICAgIGlmIChjaHVuay5yZWFzb24pIHtcbiAgICAgICAgICAgIGlmIChyZWplY3RMaXN0ZW5lcnMpXG4gICAgICAgICAgICAgIGZvciAoXG4gICAgICAgICAgICAgICAgcmVzb2x2ZUxpc3RlbmVycyA9IDA7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZUxpc3RlbmVycyA8IHJlamVjdExpc3RlbmVycy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZUxpc3RlbmVycysrXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBjaHVuay5yZWFzb24ucHVzaChyZWplY3RMaXN0ZW5lcnNbcmVzb2x2ZUxpc3RlbmVyc10pO1xuICAgICAgICAgIH0gZWxzZSBjaHVuay5yZWFzb24gPSByZWplY3RMaXN0ZW5lcnM7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyZWplY3RlZFwiOlxuICAgICAgICAgIHJlamVjdExpc3RlbmVycyAmJlxuICAgICAgICAgICAgcmVqZWN0Q2h1bmsocmVzcG9uc2UsIHJlamVjdExpc3RlbmVycywgY2h1bmsucmVhc29uKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gdHJpZ2dlckVycm9yT25DaHVuayhyZXNwb25zZSwgY2h1bmssIGVycm9yKSB7XG4gICAgICBpZiAoXCJwZW5kaW5nXCIgIT09IGNodW5rLnN0YXR1cyAmJiBcImJsb2NrZWRcIiAhPT0gY2h1bmsuc3RhdHVzKVxuICAgICAgICBjaHVuay5yZWFzb24uZXJyb3IoZXJyb3IpO1xuICAgICAgZWxzZSB7XG4gICAgICAgIHJlbGVhc2VQZW5kaW5nQ2h1bmsocmVzcG9uc2UsIGNodW5rKTtcbiAgICAgICAgdmFyIGxpc3RlbmVycyA9IGNodW5rLnJlYXNvbjtcbiAgICAgICAgaWYgKFwicGVuZGluZ1wiID09PSBjaHVuay5zdGF0dXMgJiYgbnVsbCAhPSBjaHVuay5fZGVidWdDaHVuaykge1xuICAgICAgICAgIHZhciBwcmV2SGFuZGxlciA9IGluaXRpYWxpemluZ0hhbmRsZXIsXG4gICAgICAgICAgICBwcmV2Q2h1bmsgPSBpbml0aWFsaXppbmdDaHVuaztcbiAgICAgICAgICBpbml0aWFsaXppbmdIYW5kbGVyID0gbnVsbDtcbiAgICAgICAgICBjaHVuay5zdGF0dXMgPSBcImJsb2NrZWRcIjtcbiAgICAgICAgICBjaHVuay52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgY2h1bmsucmVhc29uID0gbnVsbDtcbiAgICAgICAgICBpbml0aWFsaXppbmdDaHVuayA9IGNodW5rO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpbml0aWFsaXplRGVidWdDaHVuayhyZXNwb25zZSwgY2h1bmspO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAoaW5pdGlhbGl6aW5nSGFuZGxlciA9IHByZXZIYW5kbGVyKSxcbiAgICAgICAgICAgICAgKGluaXRpYWxpemluZ0NodW5rID0gcHJldkNodW5rKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2h1bmsuc3RhdHVzID0gXCJyZWplY3RlZFwiO1xuICAgICAgICBjaHVuay5yZWFzb24gPSBlcnJvcjtcbiAgICAgICAgbnVsbCAhPT0gbGlzdGVuZXJzICYmIHJlamVjdENodW5rKHJlc3BvbnNlLCBsaXN0ZW5lcnMsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlUmVzb2x2ZWRNb2RlbENodW5rKHJlc3BvbnNlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIG5ldyBSZWFjdFByb21pc2UoXCJyZXNvbHZlZF9tb2RlbFwiLCB2YWx1ZSwgcmVzcG9uc2UpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjcmVhdGVSZXNvbHZlZEl0ZXJhdG9yUmVzdWx0Q2h1bmsocmVzcG9uc2UsIHZhbHVlLCBkb25lKSB7XG4gICAgICByZXR1cm4gbmV3IFJlYWN0UHJvbWlzZShcbiAgICAgICAgXCJyZXNvbHZlZF9tb2RlbFwiLFxuICAgICAgICAoZG9uZSA/ICd7XCJkb25lXCI6dHJ1ZSxcInZhbHVlXCI6JyA6ICd7XCJkb25lXCI6ZmFsc2UsXCJ2YWx1ZVwiOicpICtcbiAgICAgICAgICB2YWx1ZSArXG4gICAgICAgICAgXCJ9XCIsXG4gICAgICAgIHJlc3BvbnNlXG4gICAgICApO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZXNvbHZlSXRlcmF0b3JSZXN1bHRDaHVuayhyZXNwb25zZSwgY2h1bmssIHZhbHVlLCBkb25lKSB7XG4gICAgICByZXNvbHZlTW9kZWxDaHVuayhcbiAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgIGNodW5rLFxuICAgICAgICAoZG9uZSA/ICd7XCJkb25lXCI6dHJ1ZSxcInZhbHVlXCI6JyA6ICd7XCJkb25lXCI6ZmFsc2UsXCJ2YWx1ZVwiOicpICtcbiAgICAgICAgICB2YWx1ZSArXG4gICAgICAgICAgXCJ9XCJcbiAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlc29sdmVNb2RlbENodW5rKHJlc3BvbnNlLCBjaHVuaywgdmFsdWUpIHtcbiAgICAgIGlmIChcInBlbmRpbmdcIiAhPT0gY2h1bmsuc3RhdHVzKSBjaHVuay5yZWFzb24uZW5xdWV1ZU1vZGVsKHZhbHVlKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICByZWxlYXNlUGVuZGluZ0NodW5rKHJlc3BvbnNlLCBjaHVuayk7XG4gICAgICAgIHZhciByZXNvbHZlTGlzdGVuZXJzID0gY2h1bmsudmFsdWUsXG4gICAgICAgICAgcmVqZWN0TGlzdGVuZXJzID0gY2h1bmsucmVhc29uO1xuICAgICAgICBjaHVuay5zdGF0dXMgPSBcInJlc29sdmVkX21vZGVsXCI7XG4gICAgICAgIGNodW5rLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIGNodW5rLnJlYXNvbiA9IHJlc3BvbnNlO1xuICAgICAgICBudWxsICE9PSByZXNvbHZlTGlzdGVuZXJzICYmXG4gICAgICAgICAgKGluaXRpYWxpemVNb2RlbENodW5rKGNodW5rKSxcbiAgICAgICAgICB3YWtlQ2h1bmtJZkluaXRpYWxpemVkKFxuICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICBjaHVuayxcbiAgICAgICAgICAgIHJlc29sdmVMaXN0ZW5lcnMsXG4gICAgICAgICAgICByZWplY3RMaXN0ZW5lcnNcbiAgICAgICAgICApKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcmVzb2x2ZU1vZHVsZUNodW5rKHJlc3BvbnNlLCBjaHVuaywgdmFsdWUpIHtcbiAgICAgIGlmIChcInBlbmRpbmdcIiA9PT0gY2h1bmsuc3RhdHVzIHx8IFwiYmxvY2tlZFwiID09PSBjaHVuay5zdGF0dXMpIHtcbiAgICAgICAgcmVsZWFzZVBlbmRpbmdDaHVuayhyZXNwb25zZSwgY2h1bmspO1xuICAgICAgICB2YXIgcmVzb2x2ZUxpc3RlbmVycyA9IGNodW5rLnZhbHVlLFxuICAgICAgICAgIHJlamVjdExpc3RlbmVycyA9IGNodW5rLnJlYXNvbjtcbiAgICAgICAgY2h1bmsuc3RhdHVzID0gXCJyZXNvbHZlZF9tb2R1bGVcIjtcbiAgICAgICAgY2h1bmsudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgY2h1bmsucmVhc29uID0gbnVsbDtcbiAgICAgICAgdmFsdWUgPSBbXTtcbiAgICAgICAgbnVsbCAhPT0gdmFsdWUgJiYgY2h1bmsuX2RlYnVnSW5mby5wdXNoLmFwcGx5KGNodW5rLl9kZWJ1Z0luZm8sIHZhbHVlKTtcbiAgICAgICAgbnVsbCAhPT0gcmVzb2x2ZUxpc3RlbmVycyAmJlxuICAgICAgICAgIChpbml0aWFsaXplTW9kdWxlQ2h1bmsoY2h1bmspLFxuICAgICAgICAgIHdha2VDaHVua0lmSW5pdGlhbGl6ZWQoXG4gICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgIGNodW5rLFxuICAgICAgICAgICAgcmVzb2x2ZUxpc3RlbmVycyxcbiAgICAgICAgICAgIHJlamVjdExpc3RlbmVyc1xuICAgICAgICAgICkpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBpbml0aWFsaXplRGVidWdDaHVuayhyZXNwb25zZSwgY2h1bmspIHtcbiAgICAgIHZhciBkZWJ1Z0NodW5rID0gY2h1bmsuX2RlYnVnQ2h1bms7XG4gICAgICBpZiAobnVsbCAhPT0gZGVidWdDaHVuaykge1xuICAgICAgICB2YXIgZGVidWdJbmZvID0gY2h1bmsuX2RlYnVnSW5mbyxcbiAgICAgICAgICBwcmV2SXNJbml0aWFsaXppbmdEZWJ1Z0luZm8gPSBpc0luaXRpYWxpemluZ0RlYnVnSW5mbztcbiAgICAgICAgaXNJbml0aWFsaXppbmdEZWJ1Z0luZm8gPSAhMDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoXCJyZXNvbHZlZF9tb2RlbFwiID09PSBkZWJ1Z0NodW5rLnN0YXR1cykge1xuICAgICAgICAgICAgZm9yIChcbiAgICAgICAgICAgICAgdmFyIGlkeCA9IGRlYnVnSW5mby5sZW5ndGgsIGMgPSBkZWJ1Z0NodW5rLl9kZWJ1Z0NodW5rO1xuICAgICAgICAgICAgICBudWxsICE9PSBjO1xuXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIFwiZnVsZmlsbGVkXCIgIT09IGMuc3RhdHVzICYmIGlkeCsrLCAoYyA9IGMuX2RlYnVnQ2h1bmspO1xuICAgICAgICAgICAgaW5pdGlhbGl6ZU1vZGVsQ2h1bmsoZGVidWdDaHVuayk7XG4gICAgICAgICAgICBzd2l0Y2ggKGRlYnVnQ2h1bmsuc3RhdHVzKSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJmdWxmaWxsZWRcIjpcbiAgICAgICAgICAgICAgICBkZWJ1Z0luZm9baWR4XSA9IGluaXRpYWxpemVEZWJ1Z0luZm8oXG4gICAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgIGRlYnVnQ2h1bmsudmFsdWVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiYmxvY2tlZFwiOlxuICAgICAgICAgICAgICBjYXNlIFwicGVuZGluZ1wiOlxuICAgICAgICAgICAgICAgIHdhaXRGb3JSZWZlcmVuY2UoXG4gICAgICAgICAgICAgICAgICBkZWJ1Z0NodW5rLFxuICAgICAgICAgICAgICAgICAgZGVidWdJbmZvLFxuICAgICAgICAgICAgICAgICAgXCJcIiArIGlkeCxcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZURlYnVnSW5mbyxcbiAgICAgICAgICAgICAgICAgIFtcIlwiXSxcbiAgICAgICAgICAgICAgICAgICEwXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBkZWJ1Z0NodW5rLnJlYXNvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgIHN3aXRjaCAoZGVidWdDaHVuay5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgY2FzZSBcImZ1bGZpbGxlZFwiOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiYmxvY2tlZFwiOlxuICAgICAgICAgICAgICBjYXNlIFwicGVuZGluZ1wiOlxuICAgICAgICAgICAgICAgIHdhaXRGb3JSZWZlcmVuY2UoXG4gICAgICAgICAgICAgICAgICBkZWJ1Z0NodW5rLFxuICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICBcImRlYnVnXCIsXG4gICAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgIGluaXRpYWxpemVEZWJ1Z0luZm8sXG4gICAgICAgICAgICAgICAgICBbXCJcIl0sXG4gICAgICAgICAgICAgICAgICAhMFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgZGVidWdDaHVuay5yZWFzb247XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgdHJpZ2dlckVycm9yT25DaHVuayhyZXNwb25zZSwgY2h1bmssIGVycm9yKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpc0luaXRpYWxpemluZ0RlYnVnSW5mbyA9IHByZXZJc0luaXRpYWxpemluZ0RlYnVnSW5mbztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBpbml0aWFsaXplTW9kZWxDaHVuayhjaHVuaykge1xuICAgICAgdmFyIHByZXZIYW5kbGVyID0gaW5pdGlhbGl6aW5nSGFuZGxlcixcbiAgICAgICAgcHJldkNodW5rID0gaW5pdGlhbGl6aW5nQ2h1bms7XG4gICAgICBpbml0aWFsaXppbmdIYW5kbGVyID0gbnVsbDtcbiAgICAgIHZhciByZXNvbHZlZE1vZGVsID0gY2h1bmsudmFsdWUsXG4gICAgICAgIHJlc3BvbnNlID0gY2h1bmsucmVhc29uO1xuICAgICAgY2h1bmsuc3RhdHVzID0gXCJibG9ja2VkXCI7XG4gICAgICBjaHVuay52YWx1ZSA9IG51bGw7XG4gICAgICBjaHVuay5yZWFzb24gPSBudWxsO1xuICAgICAgaW5pdGlhbGl6aW5nQ2h1bmsgPSBjaHVuaztcbiAgICAgIGluaXRpYWxpemVEZWJ1Z0NodW5rKHJlc3BvbnNlLCBjaHVuayk7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgdmFsdWUgPSBwYXJzZU1vZGVsKHJlc3BvbnNlLCByZXNvbHZlZE1vZGVsKSxcbiAgICAgICAgICByZXNvbHZlTGlzdGVuZXJzID0gY2h1bmsudmFsdWU7XG4gICAgICAgIGlmIChudWxsICE9PSByZXNvbHZlTGlzdGVuZXJzKVxuICAgICAgICAgIGZvciAoXG4gICAgICAgICAgICBjaHVuay52YWx1ZSA9IG51bGwsIGNodW5rLnJlYXNvbiA9IG51bGwsIHJlc29sdmVkTW9kZWwgPSAwO1xuICAgICAgICAgICAgcmVzb2x2ZWRNb2RlbCA8IHJlc29sdmVMaXN0ZW5lcnMubGVuZ3RoO1xuICAgICAgICAgICAgcmVzb2x2ZWRNb2RlbCsrXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB2YXIgbGlzdGVuZXIgPSByZXNvbHZlTGlzdGVuZXJzW3Jlc29sdmVkTW9kZWxdO1xuICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgbGlzdGVuZXJcbiAgICAgICAgICAgICAgPyBsaXN0ZW5lcih2YWx1ZSlcbiAgICAgICAgICAgICAgOiBmdWxmaWxsUmVmZXJlbmNlKHJlc3BvbnNlLCBsaXN0ZW5lciwgdmFsdWUsIGNodW5rKTtcbiAgICAgICAgICB9XG4gICAgICAgIGlmIChudWxsICE9PSBpbml0aWFsaXppbmdIYW5kbGVyKSB7XG4gICAgICAgICAgaWYgKGluaXRpYWxpemluZ0hhbmRsZXIuZXJyb3JlZCkgdGhyb3cgaW5pdGlhbGl6aW5nSGFuZGxlci5yZWFzb247XG4gICAgICAgICAgaWYgKDAgPCBpbml0aWFsaXppbmdIYW5kbGVyLmRlcHMpIHtcbiAgICAgICAgICAgIGluaXRpYWxpemluZ0hhbmRsZXIudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIGluaXRpYWxpemluZ0hhbmRsZXIuY2h1bmsgPSBjaHVuaztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2h1bmsuc3RhdHVzID0gXCJmdWxmaWxsZWRcIjtcbiAgICAgICAgY2h1bmsudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgY2h1bmsucmVhc29uID0gbnVsbDtcbiAgICAgICAgZmlsdGVyRGVidWdJbmZvKHJlc3BvbnNlLCBjaHVuayk7XG4gICAgICAgIG1vdmVEZWJ1Z0luZm9Gcm9tQ2h1bmtUb0lubmVyVmFsdWUoY2h1bmssIHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIChjaHVuay5zdGF0dXMgPSBcInJlamVjdGVkXCIpLCAoY2h1bmsucmVhc29uID0gZXJyb3IpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgKGluaXRpYWxpemluZ0hhbmRsZXIgPSBwcmV2SGFuZGxlciksIChpbml0aWFsaXppbmdDaHVuayA9IHByZXZDaHVuayk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGluaXRpYWxpemVNb2R1bGVDaHVuayhjaHVuaykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIHZhbHVlID0gcmVxdWlyZU1vZHVsZShjaHVuay52YWx1ZSk7XG4gICAgICAgIGNodW5rLnN0YXR1cyA9IFwiZnVsZmlsbGVkXCI7XG4gICAgICAgIGNodW5rLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIGNodW5rLnJlYXNvbiA9IG51bGw7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAoY2h1bmsuc3RhdHVzID0gXCJyZWplY3RlZFwiKSwgKGNodW5rLnJlYXNvbiA9IGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcmVwb3J0R2xvYmFsRXJyb3Iod2Vha1Jlc3BvbnNlLCBlcnJvcikge1xuICAgICAgaWYgKCFoYXNHQ2VkUmVzcG9uc2Uod2Vha1Jlc3BvbnNlKSkge1xuICAgICAgICB2YXIgcmVzcG9uc2UgPSB1bndyYXBXZWFrUmVzcG9uc2Uod2Vha1Jlc3BvbnNlKTtcbiAgICAgICAgcmVzcG9uc2UuX2Nsb3NlZCA9ICEwO1xuICAgICAgICByZXNwb25zZS5fY2xvc2VkUmVhc29uID0gZXJyb3I7XG4gICAgICAgIHJlc3BvbnNlLl9jaHVua3MuZm9yRWFjaChmdW5jdGlvbiAoY2h1bmspIHtcbiAgICAgICAgICBcInBlbmRpbmdcIiA9PT0gY2h1bmsuc3RhdHVzXG4gICAgICAgICAgICA/IHRyaWdnZXJFcnJvck9uQ2h1bmsocmVzcG9uc2UsIGNodW5rLCBlcnJvcilcbiAgICAgICAgICAgIDogXCJmdWxmaWxsZWRcIiA9PT0gY2h1bmsuc3RhdHVzICYmXG4gICAgICAgICAgICAgIG51bGwgIT09IGNodW5rLnJlYXNvbiAmJlxuICAgICAgICAgICAgICBjaHVuay5yZWFzb24uZXJyb3IoZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICAgICAgd2Vha1Jlc3BvbnNlID0gcmVzcG9uc2UuX2RlYnVnQ2hhbm5lbDtcbiAgICAgICAgdm9pZCAwICE9PSB3ZWFrUmVzcG9uc2UgJiZcbiAgICAgICAgICAoY2xvc2VEZWJ1Z0NoYW5uZWwod2Vha1Jlc3BvbnNlKSxcbiAgICAgICAgICAocmVzcG9uc2UuX2RlYnVnQ2hhbm5lbCA9IHZvaWQgMCksXG4gICAgICAgICAgbnVsbCAhPT0gZGVidWdDaGFubmVsUmVnaXN0cnkgJiZcbiAgICAgICAgICAgIGRlYnVnQ2hhbm5lbFJlZ2lzdHJ5LnVucmVnaXN0ZXIocmVzcG9uc2UpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gbnVsbFJlZkdldHRlcigpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRUYXNrTmFtZSh0eXBlKSB7XG4gICAgICBpZiAodHlwZSA9PT0gUkVBQ1RfRlJBR01FTlRfVFlQRSkgcmV0dXJuIFwiPD5cIjtcbiAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB0eXBlKSByZXR1cm4gJ1widXNlIGNsaWVudFwiJztcbiAgICAgIGlmIChcbiAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIHR5cGUgJiZcbiAgICAgICAgbnVsbCAhPT0gdHlwZSAmJlxuICAgICAgICB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9MQVpZX1RZUEVcbiAgICAgIClcbiAgICAgICAgcmV0dXJuIHR5cGUuX2luaXQgPT09IHJlYWRDaHVuayA/ICdcInVzZSBjbGllbnRcIicgOiBcIjwuLi4+XCI7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgbmFtZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKTtcbiAgICAgICAgcmV0dXJuIG5hbWUgPyBcIjxcIiArIG5hbWUgKyBcIj5cIiA6IFwiPC4uLj5cIjtcbiAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgcmV0dXJuIFwiPC4uLj5cIjtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaW5pdGlhbGl6ZUVsZW1lbnQocmVzcG9uc2UsIGVsZW1lbnQsIGxhenlOb2RlKSB7XG4gICAgICB2YXIgc3RhY2sgPSBlbGVtZW50Ll9kZWJ1Z1N0YWNrLFxuICAgICAgICBvd25lciA9IGVsZW1lbnQuX293bmVyO1xuICAgICAgbnVsbCA9PT0gb3duZXIgJiYgKGVsZW1lbnQuX293bmVyID0gcmVzcG9uc2UuX2RlYnVnUm9vdE93bmVyKTtcbiAgICAgIHZhciBlbnYgPSByZXNwb25zZS5fcm9vdEVudmlyb25tZW50TmFtZTtcbiAgICAgIG51bGwgIT09IG93bmVyICYmIG51bGwgIT0gb3duZXIuZW52ICYmIChlbnYgPSBvd25lci5lbnYpO1xuICAgICAgdmFyIG5vcm1hbGl6ZWRTdGFja1RyYWNlID0gbnVsbDtcbiAgICAgIG51bGwgPT09IG93bmVyICYmIG51bGwgIT0gcmVzcG9uc2UuX2RlYnVnUm9vdFN0YWNrXG4gICAgICAgID8gKG5vcm1hbGl6ZWRTdGFja1RyYWNlID0gcmVzcG9uc2UuX2RlYnVnUm9vdFN0YWNrKVxuICAgICAgICA6IG51bGwgIT09IHN0YWNrICYmXG4gICAgICAgICAgKG5vcm1hbGl6ZWRTdGFja1RyYWNlID0gY3JlYXRlRmFrZUpTWENhbGxTdGFja0luREVWKFxuICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICBzdGFjayxcbiAgICAgICAgICAgIGVudlxuICAgICAgICAgICkpO1xuICAgICAgZWxlbWVudC5fZGVidWdTdGFjayA9IG5vcm1hbGl6ZWRTdGFja1RyYWNlO1xuICAgICAgbm9ybWFsaXplZFN0YWNrVHJhY2UgPSBudWxsO1xuICAgICAgc3VwcG9ydHNDcmVhdGVUYXNrICYmXG4gICAgICAgIG51bGwgIT09IHN0YWNrICYmXG4gICAgICAgICgobm9ybWFsaXplZFN0YWNrVHJhY2UgPSBjb25zb2xlLmNyZWF0ZVRhc2suYmluZChcbiAgICAgICAgICBjb25zb2xlLFxuICAgICAgICAgIGdldFRhc2tOYW1lKGVsZW1lbnQudHlwZSlcbiAgICAgICAgKSksXG4gICAgICAgIChzdGFjayA9IGJ1aWxkRmFrZUNhbGxTdGFjayhcbiAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICBzdGFjayxcbiAgICAgICAgICBlbnYsXG4gICAgICAgICAgITEsXG4gICAgICAgICAgbm9ybWFsaXplZFN0YWNrVHJhY2VcbiAgICAgICAgKSksXG4gICAgICAgIChlbnYgPSBudWxsID09PSBvd25lciA/IG51bGwgOiBpbml0aWFsaXplRmFrZVRhc2socmVzcG9uc2UsIG93bmVyKSksXG4gICAgICAgIG51bGwgPT09IGVudlxuICAgICAgICAgID8gKChlbnYgPSByZXNwb25zZS5fZGVidWdSb290VGFzayksXG4gICAgICAgICAgICAobm9ybWFsaXplZFN0YWNrVHJhY2UgPSBudWxsICE9IGVudiA/IGVudi5ydW4oc3RhY2spIDogc3RhY2soKSkpXG4gICAgICAgICAgOiAobm9ybWFsaXplZFN0YWNrVHJhY2UgPSBlbnYucnVuKHN0YWNrKSkpO1xuICAgICAgZWxlbWVudC5fZGVidWdUYXNrID0gbm9ybWFsaXplZFN0YWNrVHJhY2U7XG4gICAgICBudWxsICE9PSBvd25lciAmJiBpbml0aWFsaXplRmFrZVN0YWNrKHJlc3BvbnNlLCBvd25lcik7XG4gICAgICBudWxsICE9PSBsYXp5Tm9kZSAmJlxuICAgICAgICAobGF6eU5vZGUuX3N0b3JlICYmXG4gICAgICAgICAgbGF6eU5vZGUuX3N0b3JlLnZhbGlkYXRlZCAmJlxuICAgICAgICAgICFlbGVtZW50Ll9zdG9yZS52YWxpZGF0ZWQgJiZcbiAgICAgICAgICAoZWxlbWVudC5fc3RvcmUudmFsaWRhdGVkID0gbGF6eU5vZGUuX3N0b3JlLnZhbGlkYXRlZCksXG4gICAgICAgIFwiZnVsZmlsbGVkXCIgPT09IGxhenlOb2RlLl9wYXlsb2FkLnN0YXR1cyAmJlxuICAgICAgICAgIGxhenlOb2RlLl9kZWJ1Z0luZm8gJiZcbiAgICAgICAgICAoKHJlc3BvbnNlID0gbGF6eU5vZGUuX2RlYnVnSW5mby5zcGxpY2UoMCkpLFxuICAgICAgICAgIGVsZW1lbnQuX2RlYnVnSW5mb1xuICAgICAgICAgICAgPyBlbGVtZW50Ll9kZWJ1Z0luZm8udW5zaGlmdC5hcHBseShlbGVtZW50Ll9kZWJ1Z0luZm8sIHJlc3BvbnNlKVxuICAgICAgICAgICAgOiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudCwgXCJfZGVidWdJbmZvXCIsIHtcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICExLFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLFxuICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogcmVzcG9uc2VcbiAgICAgICAgICAgICAgfSkpKTtcbiAgICAgIE9iamVjdC5mcmVlemUoZWxlbWVudC5wcm9wcyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZUxhenlDaHVua1dyYXBwZXIoY2h1bmssIHZhbGlkYXRlZCkge1xuICAgICAgdmFyIGxhenlUeXBlID0ge1xuICAgICAgICAkJHR5cGVvZjogUkVBQ1RfTEFaWV9UWVBFLFxuICAgICAgICBfcGF5bG9hZDogY2h1bmssXG4gICAgICAgIF9pbml0OiByZWFkQ2h1bmtcbiAgICAgIH07XG4gICAgICBsYXp5VHlwZS5fZGVidWdJbmZvID0gY2h1bmsuX2RlYnVnSW5mbztcbiAgICAgIGxhenlUeXBlLl9zdG9yZSA9IHsgdmFsaWRhdGVkOiB2YWxpZGF0ZWQgfTtcbiAgICAgIHJldHVybiBsYXp5VHlwZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0Q2h1bmsocmVzcG9uc2UsIGlkKSB7XG4gICAgICB2YXIgY2h1bmtzID0gcmVzcG9uc2UuX2NodW5rcyxcbiAgICAgICAgY2h1bmsgPSBjaHVua3MuZ2V0KGlkKTtcbiAgICAgIGNodW5rIHx8XG4gICAgICAgIChyZXNwb25zZS5fY2xvc2VkXG4gICAgICAgICAgPyByZXNwb25zZS5fYWxsb3dQYXJ0aWFsU3RyZWFtXG4gICAgICAgICAgICA/ICgocmVzcG9uc2UgPSBjaHVuayA9IGNyZWF0ZVBlbmRpbmdDaHVuayhyZXNwb25zZSkpLFxuICAgICAgICAgICAgICAocmVzcG9uc2Uuc3RhdHVzID0gXCJoYWx0ZWRcIiksXG4gICAgICAgICAgICAgIChyZXNwb25zZS52YWx1ZSA9IG51bGwpLFxuICAgICAgICAgICAgICAocmVzcG9uc2UucmVhc29uID0gbnVsbCkpXG4gICAgICAgICAgICA6IChjaHVuayA9IG5ldyBSZWFjdFByb21pc2UoXG4gICAgICAgICAgICAgICAgXCJyZWplY3RlZFwiLFxuICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuX2Nsb3NlZFJlYXNvblxuICAgICAgICAgICAgICApKVxuICAgICAgICAgIDogKGNodW5rID0gY3JlYXRlUGVuZGluZ0NodW5rKHJlc3BvbnNlKSksXG4gICAgICAgIGNodW5rcy5zZXQoaWQsIGNodW5rKSk7XG4gICAgICByZXR1cm4gY2h1bms7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZ1bGZpbGxSZWZlcmVuY2UocmVzcG9uc2UsIHJlZmVyZW5jZSwgdmFsdWUsIGZ1bGZpbGxlZENodW5rKSB7XG4gICAgICB2YXIgaGFuZGxlciA9IHJlZmVyZW5jZS5oYW5kbGVyLFxuICAgICAgICBwYXJlbnRPYmplY3QgPSByZWZlcmVuY2UucGFyZW50T2JqZWN0LFxuICAgICAgICBrZXkgPSByZWZlcmVuY2Uua2V5LFxuICAgICAgICBtYXAgPSByZWZlcmVuY2UubWFwLFxuICAgICAgICBwYXRoID0gcmVmZXJlbmNlLnBhdGg7XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgO1xuICAgICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIHZhbHVlICYmXG4gICAgICAgICAgICBudWxsICE9PSB2YWx1ZSAmJlxuICAgICAgICAgICAgdmFsdWUuJCR0eXBlb2YgPT09IFJFQUNUX0xBWllfVFlQRTtcblxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdmFyIHJlZmVyZW5jZWRDaHVuayA9IHZhbHVlLl9wYXlsb2FkO1xuICAgICAgICAgICAgaWYgKHJlZmVyZW5jZWRDaHVuayA9PT0gaGFuZGxlci5jaHVuaykgdmFsdWUgPSBoYW5kbGVyLnZhbHVlO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIHN3aXRjaCAocmVmZXJlbmNlZENodW5rLnN0YXR1cykge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJyZXNvbHZlZF9tb2RlbFwiOlxuICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZU1vZGVsQ2h1bmsocmVmZXJlbmNlZENodW5rKTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJyZXNvbHZlZF9tb2R1bGVcIjpcbiAgICAgICAgICAgICAgICAgIGluaXRpYWxpemVNb2R1bGVDaHVuayhyZWZlcmVuY2VkQ2h1bmspO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHN3aXRjaCAocmVmZXJlbmNlZENodW5rLnN0YXR1cykge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJmdWxmaWxsZWRcIjpcbiAgICAgICAgICAgICAgICAgIHZhbHVlID0gcmVmZXJlbmNlZENodW5rLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSBcImJsb2NrZWRcIjpcbiAgICAgICAgICAgICAgICAgIHZhciBjeWNsaWNIYW5kbGVyID0gcmVzb2x2ZUJsb2NrZWRDeWNsZShcbiAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlZENodW5rLFxuICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gY3ljbGljSGFuZGxlcikge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGN5Y2xpY0hhbmRsZXIudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgXCJwZW5kaW5nXCI6XG4gICAgICAgICAgICAgICAgICBwYXRoLnNwbGljZSgwLCBpIC0gMSk7XG4gICAgICAgICAgICAgICAgICBudWxsID09PSByZWZlcmVuY2VkQ2h1bmsudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgPyAocmVmZXJlbmNlZENodW5rLnZhbHVlID0gW3JlZmVyZW5jZV0pXG4gICAgICAgICAgICAgICAgICAgIDogcmVmZXJlbmNlZENodW5rLnZhbHVlLnB1c2gocmVmZXJlbmNlKTtcbiAgICAgICAgICAgICAgICAgIG51bGwgPT09IHJlZmVyZW5jZWRDaHVuay5yZWFzb25cbiAgICAgICAgICAgICAgICAgICAgPyAocmVmZXJlbmNlZENodW5rLnJlYXNvbiA9IFtyZWZlcmVuY2VdKVxuICAgICAgICAgICAgICAgICAgICA6IHJlZmVyZW5jZWRDaHVuay5yZWFzb24ucHVzaChyZWZlcmVuY2UpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJoYWx0ZWRcIjpcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgcmVqZWN0UmVmZXJlbmNlKFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlLmhhbmRsZXIsXG4gICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZWRDaHVuay5yZWFzb25cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIG5hbWUgPSBwYXRoW2ldO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiB2YWx1ZSAmJlxuICAgICAgICAgICAgbnVsbCAhPT0gdmFsdWUgJiZcbiAgICAgICAgICAgIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIG5hbWUpXG4gICAgICAgICAgKVxuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVtuYW1lXTtcbiAgICAgICAgICBlbHNlIHRocm93IEVycm9yKFwiSW52YWxpZCByZWZlcmVuY2UuXCIpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoXG4gICAgICAgICAgO1xuICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiB2YWx1ZSAmJlxuICAgICAgICAgIG51bGwgIT09IHZhbHVlICYmXG4gICAgICAgICAgdmFsdWUuJCR0eXBlb2YgPT09IFJFQUNUX0xBWllfVFlQRTtcblxuICAgICAgICApIHtcbiAgICAgICAgICB2YXIgX3JlZmVyZW5jZWRDaHVuayA9IHZhbHVlLl9wYXlsb2FkO1xuICAgICAgICAgIGlmIChfcmVmZXJlbmNlZENodW5rID09PSBoYW5kbGVyLmNodW5rKSB2YWx1ZSA9IGhhbmRsZXIudmFsdWU7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9yZWZlcmVuY2VkQ2h1bmsuc3RhdHVzKSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJyZXNvbHZlZF9tb2RlbFwiOlxuICAgICAgICAgICAgICAgIGluaXRpYWxpemVNb2RlbENodW5rKF9yZWZlcmVuY2VkQ2h1bmspO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwicmVzb2x2ZWRfbW9kdWxlXCI6XG4gICAgICAgICAgICAgICAgaW5pdGlhbGl6ZU1vZHVsZUNodW5rKF9yZWZlcmVuY2VkQ2h1bmspO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3dpdGNoIChfcmVmZXJlbmNlZENodW5rLnN0YXR1cykge1xuICAgICAgICAgICAgICBjYXNlIFwiZnVsZmlsbGVkXCI6XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBfcmVmZXJlbmNlZENodW5rLnZhbHVlO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBtYXBwZWRWYWx1ZSA9IG1hcChyZXNwb25zZSwgdmFsdWUsIHBhcmVudE9iamVjdCwga2V5KTtcbiAgICAgICAgXCJfX3Byb3RvX19cIiAhPT0ga2V5ICYmIChwYXJlbnRPYmplY3Rba2V5XSA9IG1hcHBlZFZhbHVlKTtcbiAgICAgICAgXCJcIiA9PT0ga2V5ICYmIG51bGwgPT09IGhhbmRsZXIudmFsdWUgJiYgKGhhbmRsZXIudmFsdWUgPSBtYXBwZWRWYWx1ZSk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBwYXJlbnRPYmplY3RbMF0gPT09IFJFQUNUX0VMRU1FTlRfVFlQRSAmJlxuICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiBoYW5kbGVyLnZhbHVlICYmXG4gICAgICAgICAgbnVsbCAhPT0gaGFuZGxlci52YWx1ZSAmJlxuICAgICAgICAgIGhhbmRsZXIudmFsdWUuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRVxuICAgICAgICApIHtcbiAgICAgICAgICB2YXIgZWxlbWVudCA9IGhhbmRsZXIudmFsdWU7XG4gICAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgXCIzXCI6XG4gICAgICAgICAgICAgIHRyYW5zZmVyUmVmZXJlbmNlZERlYnVnSW5mbyhoYW5kbGVyLmNodW5rLCBmdWxmaWxsZWRDaHVuayk7XG4gICAgICAgICAgICAgIGVsZW1lbnQucHJvcHMgPSBtYXBwZWRWYWx1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiNFwiOlxuICAgICAgICAgICAgICBlbGVtZW50Ll9vd25lciA9IG1hcHBlZFZhbHVlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCI1XCI6XG4gICAgICAgICAgICAgIGVsZW1lbnQuX2RlYnVnU3RhY2sgPSBtYXBwZWRWYWx1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB0cmFuc2ZlclJlZmVyZW5jZWREZWJ1Z0luZm8oaGFuZGxlci5jaHVuaywgZnVsZmlsbGVkQ2h1bmspO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlXG4gICAgICAgICAgcmVmZXJlbmNlLmlzRGVidWcgfHxcbiAgICAgICAgICAgIHRyYW5zZmVyUmVmZXJlbmNlZERlYnVnSW5mbyhoYW5kbGVyLmNodW5rLCBmdWxmaWxsZWRDaHVuayk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZWplY3RSZWZlcmVuY2UocmVzcG9uc2UsIHJlZmVyZW5jZS5oYW5kbGVyLCBlcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGhhbmRsZXIuZGVwcy0tO1xuICAgICAgMCA9PT0gaGFuZGxlci5kZXBzICYmXG4gICAgICAgICgocmVmZXJlbmNlID0gaGFuZGxlci5jaHVuayksXG4gICAgICAgIG51bGwgIT09IHJlZmVyZW5jZSAmJlxuICAgICAgICAgIFwiYmxvY2tlZFwiID09PSByZWZlcmVuY2Uuc3RhdHVzICYmXG4gICAgICAgICAgKCh2YWx1ZSA9IHJlZmVyZW5jZS52YWx1ZSksXG4gICAgICAgICAgKHJlZmVyZW5jZS5zdGF0dXMgPSBcImZ1bGZpbGxlZFwiKSxcbiAgICAgICAgICAocmVmZXJlbmNlLnZhbHVlID0gaGFuZGxlci52YWx1ZSksXG4gICAgICAgICAgKHJlZmVyZW5jZS5yZWFzb24gPSBoYW5kbGVyLnJlYXNvbiksXG4gICAgICAgICAgbnVsbCAhPT0gdmFsdWVcbiAgICAgICAgICAgID8gd2FrZUNodW5rKHJlc3BvbnNlLCB2YWx1ZSwgaGFuZGxlci52YWx1ZSwgcmVmZXJlbmNlKVxuICAgICAgICAgICAgOiAoKGhhbmRsZXIgPSBoYW5kbGVyLnZhbHVlKSxcbiAgICAgICAgICAgICAgZmlsdGVyRGVidWdJbmZvKHJlc3BvbnNlLCByZWZlcmVuY2UpLFxuICAgICAgICAgICAgICBtb3ZlRGVidWdJbmZvRnJvbUNodW5rVG9Jbm5lclZhbHVlKHJlZmVyZW5jZSwgaGFuZGxlcikpKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlamVjdFJlZmVyZW5jZShyZXNwb25zZSwgaGFuZGxlciwgZXJyb3IpIHtcbiAgICAgIGlmICghaGFuZGxlci5lcnJvcmVkKSB7XG4gICAgICAgIHZhciBibG9ja2VkVmFsdWUgPSBoYW5kbGVyLnZhbHVlO1xuICAgICAgICBoYW5kbGVyLmVycm9yZWQgPSAhMDtcbiAgICAgICAgaGFuZGxlci52YWx1ZSA9IG51bGw7XG4gICAgICAgIGhhbmRsZXIucmVhc29uID0gZXJyb3I7XG4gICAgICAgIGhhbmRsZXIgPSBoYW5kbGVyLmNodW5rO1xuICAgICAgICBpZiAobnVsbCAhPT0gaGFuZGxlciAmJiBcImJsb2NrZWRcIiA9PT0gaGFuZGxlci5zdGF0dXMpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2YgYmxvY2tlZFZhbHVlICYmXG4gICAgICAgICAgICBudWxsICE9PSBibG9ja2VkVmFsdWUgJiZcbiAgICAgICAgICAgIGJsb2NrZWRWYWx1ZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB2YXIgZXJyb3JlZENvbXBvbmVudCA9IHtcbiAgICAgICAgICAgICAgbmFtZTogZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKGJsb2NrZWRWYWx1ZS50eXBlKSB8fCBcIlwiLFxuICAgICAgICAgICAgICBvd25lcjogYmxvY2tlZFZhbHVlLl9vd25lclxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGVycm9yZWRDb21wb25lbnQuZGVidWdTdGFjayA9IGJsb2NrZWRWYWx1ZS5fZGVidWdTdGFjaztcbiAgICAgICAgICAgIHN1cHBvcnRzQ3JlYXRlVGFzayAmJlxuICAgICAgICAgICAgICAoZXJyb3JlZENvbXBvbmVudC5kZWJ1Z1Rhc2sgPSBibG9ja2VkVmFsdWUuX2RlYnVnVGFzayk7XG4gICAgICAgICAgICBoYW5kbGVyLl9kZWJ1Z0luZm8ucHVzaChlcnJvcmVkQ29tcG9uZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdHJpZ2dlckVycm9yT25DaHVuayhyZXNwb25zZSwgaGFuZGxlciwgZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHdhaXRGb3JSZWZlcmVuY2UoXG4gICAgICByZWZlcmVuY2VkQ2h1bmssXG4gICAgICBwYXJlbnRPYmplY3QsXG4gICAgICBrZXksXG4gICAgICByZXNwb25zZSxcbiAgICAgIG1hcCxcbiAgICAgIHBhdGgsXG4gICAgICBpc0F3YWl0aW5nRGVidWdJbmZvXG4gICAgKSB7XG4gICAgICBpZiAoXG4gICAgICAgICEoXG4gICAgICAgICAgKHZvaWQgMCAhPT0gcmVzcG9uc2UuX2RlYnVnQ2hhbm5lbCAmJlxuICAgICAgICAgICAgcmVzcG9uc2UuX2RlYnVnQ2hhbm5lbC5oYXNSZWFkYWJsZSkgfHxcbiAgICAgICAgICBcInBlbmRpbmdcIiAhPT0gcmVmZXJlbmNlZENodW5rLnN0YXR1cyB8fFxuICAgICAgICAgIHBhcmVudE9iamVjdFswXSAhPT0gUkVBQ1RfRUxFTUVOVF9UWVBFIHx8XG4gICAgICAgICAgKFwiNFwiICE9PSBrZXkgJiYgXCI1XCIgIT09IGtleSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGluaXRpYWxpemluZ0hhbmRsZXJcbiAgICAgICAgPyAoKHJlc3BvbnNlID0gaW5pdGlhbGl6aW5nSGFuZGxlciksIHJlc3BvbnNlLmRlcHMrKylcbiAgICAgICAgOiAocmVzcG9uc2UgPSBpbml0aWFsaXppbmdIYW5kbGVyID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgICAgICAgICBjaHVuazogbnVsbCxcbiAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgIHJlYXNvbjogbnVsbCxcbiAgICAgICAgICAgICAgZGVwczogMSxcbiAgICAgICAgICAgICAgZXJyb3JlZDogITFcbiAgICAgICAgICAgIH0pO1xuICAgICAgcGFyZW50T2JqZWN0ID0ge1xuICAgICAgICBoYW5kbGVyOiByZXNwb25zZSxcbiAgICAgICAgcGFyZW50T2JqZWN0OiBwYXJlbnRPYmplY3QsXG4gICAgICAgIGtleToga2V5LFxuICAgICAgICBtYXA6IG1hcCxcbiAgICAgICAgcGF0aDogcGF0aFxuICAgICAgfTtcbiAgICAgIHBhcmVudE9iamVjdC5pc0RlYnVnID0gaXNBd2FpdGluZ0RlYnVnSW5mbztcbiAgICAgIG51bGwgPT09IHJlZmVyZW5jZWRDaHVuay52YWx1ZVxuICAgICAgICA/IChyZWZlcmVuY2VkQ2h1bmsudmFsdWUgPSBbcGFyZW50T2JqZWN0XSlcbiAgICAgICAgOiByZWZlcmVuY2VkQ2h1bmsudmFsdWUucHVzaChwYXJlbnRPYmplY3QpO1xuICAgICAgbnVsbCA9PT0gcmVmZXJlbmNlZENodW5rLnJlYXNvblxuICAgICAgICA/IChyZWZlcmVuY2VkQ2h1bmsucmVhc29uID0gW3BhcmVudE9iamVjdF0pXG4gICAgICAgIDogcmVmZXJlbmNlZENodW5rLnJlYXNvbi5wdXNoKHBhcmVudE9iamVjdCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZnVuY3Rpb24gbG9hZFNlcnZlclJlZmVyZW5jZShyZXNwb25zZSwgbWV0YURhdGEsIHBhcmVudE9iamVjdCwga2V5KSB7XG4gICAgICBpZiAoIXJlc3BvbnNlLl9zZXJ2ZXJSZWZlcmVuY2VDb25maWcpXG4gICAgICAgIHJldHVybiBjcmVhdGVCb3VuZFNlcnZlclJlZmVyZW5jZShcbiAgICAgICAgICBtZXRhRGF0YSxcbiAgICAgICAgICByZXNwb25zZS5fY2FsbFNlcnZlcixcbiAgICAgICAgICByZXNwb25zZS5fZW5jb2RlRm9ybUFjdGlvbixcbiAgICAgICAgICByZXNwb25zZS5fZGVidWdGaW5kU291cmNlTWFwVVJMXG4gICAgICAgICk7XG4gICAgICB2YXIgc2VydmVyUmVmZXJlbmNlID0gcmVzb2x2ZVNlcnZlclJlZmVyZW5jZShcbiAgICAgICAgICByZXNwb25zZS5fc2VydmVyUmVmZXJlbmNlQ29uZmlnLFxuICAgICAgICAgIG1ldGFEYXRhLmlkXG4gICAgICAgICksXG4gICAgICAgIHByb21pc2UgPSBwcmVsb2FkTW9kdWxlKHNlcnZlclJlZmVyZW5jZSk7XG4gICAgICBpZiAocHJvbWlzZSlcbiAgICAgICAgbWV0YURhdGEuYm91bmQgJiYgKHByb21pc2UgPSBQcm9taXNlLmFsbChbcHJvbWlzZSwgbWV0YURhdGEuYm91bmRdKSk7XG4gICAgICBlbHNlIGlmIChtZXRhRGF0YS5ib3VuZCkgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShtZXRhRGF0YS5ib3VuZCk7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgKHByb21pc2UgPSByZXF1aXJlTW9kdWxlKHNlcnZlclJlZmVyZW5jZSkpLFxuICAgICAgICAgIHJlZ2lzdGVyQm91bmRTZXJ2ZXJSZWZlcmVuY2UoXG4gICAgICAgICAgICBwcm9taXNlLFxuICAgICAgICAgICAgbWV0YURhdGEuaWQsXG4gICAgICAgICAgICBtZXRhRGF0YS5ib3VuZCxcbiAgICAgICAgICAgIHJlc3BvbnNlLl9lbmNvZGVGb3JtQWN0aW9uXG4gICAgICAgICAgKSxcbiAgICAgICAgICBwcm9taXNlXG4gICAgICAgICk7XG4gICAgICBpZiAoaW5pdGlhbGl6aW5nSGFuZGxlcikge1xuICAgICAgICB2YXIgaGFuZGxlciA9IGluaXRpYWxpemluZ0hhbmRsZXI7XG4gICAgICAgIGhhbmRsZXIuZGVwcysrO1xuICAgICAgfSBlbHNlXG4gICAgICAgIGhhbmRsZXIgPSBpbml0aWFsaXppbmdIYW5kbGVyID0ge1xuICAgICAgICAgIHBhcmVudDogbnVsbCxcbiAgICAgICAgICBjaHVuazogbnVsbCxcbiAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICByZWFzb246IG51bGwsXG4gICAgICAgICAgZGVwczogMSxcbiAgICAgICAgICBlcnJvcmVkOiAhMVxuICAgICAgICB9O1xuICAgICAgcHJvbWlzZS50aGVuKFxuICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIHJlc29sdmVkVmFsdWUgPSByZXF1aXJlTW9kdWxlKHNlcnZlclJlZmVyZW5jZSk7XG4gICAgICAgICAgaWYgKG1ldGFEYXRhLmJvdW5kKSB7XG4gICAgICAgICAgICB2YXIgYm91bmRBcmdzID0gbWV0YURhdGEuYm91bmQudmFsdWUuc2xpY2UoMCk7XG4gICAgICAgICAgICBib3VuZEFyZ3MudW5zaGlmdChudWxsKTtcbiAgICAgICAgICAgIHJlc29sdmVkVmFsdWUgPSByZXNvbHZlZFZhbHVlLmJpbmQuYXBwbHkocmVzb2x2ZWRWYWx1ZSwgYm91bmRBcmdzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVnaXN0ZXJCb3VuZFNlcnZlclJlZmVyZW5jZShcbiAgICAgICAgICAgIHJlc29sdmVkVmFsdWUsXG4gICAgICAgICAgICBtZXRhRGF0YS5pZCxcbiAgICAgICAgICAgIG1ldGFEYXRhLmJvdW5kLFxuICAgICAgICAgICAgcmVzcG9uc2UuX2VuY29kZUZvcm1BY3Rpb25cbiAgICAgICAgICApO1xuICAgICAgICAgIFwiX19wcm90b19fXCIgIT09IGtleSAmJiAocGFyZW50T2JqZWN0W2tleV0gPSByZXNvbHZlZFZhbHVlKTtcbiAgICAgICAgICBcIlwiID09PSBrZXkgJiZcbiAgICAgICAgICAgIG51bGwgPT09IGhhbmRsZXIudmFsdWUgJiZcbiAgICAgICAgICAgIChoYW5kbGVyLnZhbHVlID0gcmVzb2x2ZWRWYWx1ZSk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgcGFyZW50T2JqZWN0WzBdID09PSBSRUFDVF9FTEVNRU5UX1RZUEUgJiZcbiAgICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiBoYW5kbGVyLnZhbHVlICYmXG4gICAgICAgICAgICBudWxsICE9PSBoYW5kbGVyLnZhbHVlICYmXG4gICAgICAgICAgICBoYW5kbGVyLnZhbHVlLiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEVcbiAgICAgICAgICApXG4gICAgICAgICAgICBzd2l0Y2ggKCgoYm91bmRBcmdzID0gaGFuZGxlci52YWx1ZSksIGtleSkpIHtcbiAgICAgICAgICAgICAgY2FzZSBcIjNcIjpcbiAgICAgICAgICAgICAgICBib3VuZEFyZ3MucHJvcHMgPSByZXNvbHZlZFZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiNFwiOlxuICAgICAgICAgICAgICAgIGJvdW5kQXJncy5fb3duZXIgPSByZXNvbHZlZFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGhhbmRsZXIuZGVwcy0tO1xuICAgICAgICAgIDAgPT09IGhhbmRsZXIuZGVwcyAmJlxuICAgICAgICAgICAgKChyZXNvbHZlZFZhbHVlID0gaGFuZGxlci5jaHVuayksXG4gICAgICAgICAgICBudWxsICE9PSByZXNvbHZlZFZhbHVlICYmXG4gICAgICAgICAgICAgIFwiYmxvY2tlZFwiID09PSByZXNvbHZlZFZhbHVlLnN0YXR1cyAmJlxuICAgICAgICAgICAgICAoKGJvdW5kQXJncyA9IHJlc29sdmVkVmFsdWUudmFsdWUpLFxuICAgICAgICAgICAgICAocmVzb2x2ZWRWYWx1ZS5zdGF0dXMgPSBcImZ1bGZpbGxlZFwiKSxcbiAgICAgICAgICAgICAgKHJlc29sdmVkVmFsdWUudmFsdWUgPSBoYW5kbGVyLnZhbHVlKSxcbiAgICAgICAgICAgICAgKHJlc29sdmVkVmFsdWUucmVhc29uID0gbnVsbCksXG4gICAgICAgICAgICAgIG51bGwgIT09IGJvdW5kQXJnc1xuICAgICAgICAgICAgICAgID8gd2FrZUNodW5rKHJlc3BvbnNlLCBib3VuZEFyZ3MsIGhhbmRsZXIudmFsdWUsIHJlc29sdmVkVmFsdWUpXG4gICAgICAgICAgICAgICAgOiAoKGJvdW5kQXJncyA9IGhhbmRsZXIudmFsdWUpLFxuICAgICAgICAgICAgICAgICAgZmlsdGVyRGVidWdJbmZvKHJlc3BvbnNlLCByZXNvbHZlZFZhbHVlKSxcbiAgICAgICAgICAgICAgICAgIG1vdmVEZWJ1Z0luZm9Gcm9tQ2h1bmtUb0lubmVyVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVkVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGJvdW5kQXJnc1xuICAgICAgICAgICAgICAgICAgKSkpKTtcbiAgICAgICAgfSxcbiAgICAgICAgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgaWYgKCFoYW5kbGVyLmVycm9yZWQpIHtcbiAgICAgICAgICAgIHZhciBibG9ja2VkVmFsdWUgPSBoYW5kbGVyLnZhbHVlO1xuICAgICAgICAgICAgaGFuZGxlci5lcnJvcmVkID0gITA7XG4gICAgICAgICAgICBoYW5kbGVyLnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIGhhbmRsZXIucmVhc29uID0gZXJyb3I7XG4gICAgICAgICAgICB2YXIgY2h1bmsgPSBoYW5kbGVyLmNodW5rO1xuICAgICAgICAgICAgaWYgKG51bGwgIT09IGNodW5rICYmIFwiYmxvY2tlZFwiID09PSBjaHVuay5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiBibG9ja2VkVmFsdWUgJiZcbiAgICAgICAgICAgICAgICBudWxsICE9PSBibG9ja2VkVmFsdWUgJiZcbiAgICAgICAgICAgICAgICBibG9ja2VkVmFsdWUuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JlZENvbXBvbmVudCA9IHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZShibG9ja2VkVmFsdWUudHlwZSkgfHwgXCJcIixcbiAgICAgICAgICAgICAgICAgIG93bmVyOiBibG9ja2VkVmFsdWUuX293bmVyXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBlcnJvcmVkQ29tcG9uZW50LmRlYnVnU3RhY2sgPSBibG9ja2VkVmFsdWUuX2RlYnVnU3RhY2s7XG4gICAgICAgICAgICAgICAgc3VwcG9ydHNDcmVhdGVUYXNrICYmXG4gICAgICAgICAgICAgICAgICAoZXJyb3JlZENvbXBvbmVudC5kZWJ1Z1Rhc2sgPSBibG9ja2VkVmFsdWUuX2RlYnVnVGFzayk7XG4gICAgICAgICAgICAgICAgY2h1bmsuX2RlYnVnSW5mby5wdXNoKGVycm9yZWRDb21wb25lbnQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRyaWdnZXJFcnJvck9uQ2h1bmsocmVzcG9uc2UsIGNodW5rLCBlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlc29sdmVMYXp5KHZhbHVlKSB7XG4gICAgICBmb3IgKFxuICAgICAgICA7XG4gICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiB2YWx1ZSAmJlxuICAgICAgICBudWxsICE9PSB2YWx1ZSAmJlxuICAgICAgICB2YWx1ZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTEFaWV9UWVBFO1xuXG4gICAgICApIHtcbiAgICAgICAgdmFyIHBheWxvYWQgPSB2YWx1ZS5fcGF5bG9hZDtcbiAgICAgICAgaWYgKFwiZnVsZmlsbGVkXCIgPT09IHBheWxvYWQuc3RhdHVzKSB2YWx1ZSA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGVsc2UgYnJlYWs7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRyYW5zZmVyUmVmZXJlbmNlZERlYnVnSW5mbyhwYXJlbnRDaHVuaywgcmVmZXJlbmNlZENodW5rKSB7XG4gICAgICBpZiAobnVsbCAhPT0gcGFyZW50Q2h1bmspIHtcbiAgICAgICAgcmVmZXJlbmNlZENodW5rID0gcmVmZXJlbmNlZENodW5rLl9kZWJ1Z0luZm87XG4gICAgICAgIHBhcmVudENodW5rID0gcGFyZW50Q2h1bmsuX2RlYnVnSW5mbztcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZWZlcmVuY2VkQ2h1bmsubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICB2YXIgZGVidWdJbmZvRW50cnkgPSByZWZlcmVuY2VkQ2h1bmtbaV07XG4gICAgICAgICAgbnVsbCA9PSBkZWJ1Z0luZm9FbnRyeS5uYW1lICYmIHBhcmVudENodW5rLnB1c2goZGVidWdJbmZvRW50cnkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldE91dGxpbmVkTW9kZWwocmVzcG9uc2UsIHJlZmVyZW5jZSwgcGFyZW50T2JqZWN0LCBrZXksIG1hcCkge1xuICAgICAgdmFyIHBhdGggPSByZWZlcmVuY2Uuc3BsaXQoXCI6XCIpO1xuICAgICAgcmVmZXJlbmNlID0gcGFyc2VJbnQocGF0aFswXSwgMTYpO1xuICAgICAgcmVmZXJlbmNlID0gZ2V0Q2h1bmsocmVzcG9uc2UsIHJlZmVyZW5jZSk7XG4gICAgICBudWxsICE9PSBpbml0aWFsaXppbmdDaHVuayAmJlxuICAgICAgICBpc0FycmF5SW1wbChpbml0aWFsaXppbmdDaHVuay5fY2hpbGRyZW4pICYmXG4gICAgICAgIGluaXRpYWxpemluZ0NodW5rLl9jaGlsZHJlbi5wdXNoKHJlZmVyZW5jZSk7XG4gICAgICBzd2l0Y2ggKHJlZmVyZW5jZS5zdGF0dXMpIHtcbiAgICAgICAgY2FzZSBcInJlc29sdmVkX21vZGVsXCI6XG4gICAgICAgICAgaW5pdGlhbGl6ZU1vZGVsQ2h1bmsocmVmZXJlbmNlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInJlc29sdmVkX21vZHVsZVwiOlxuICAgICAgICAgIGluaXRpYWxpemVNb2R1bGVDaHVuayhyZWZlcmVuY2UpO1xuICAgICAgfVxuICAgICAgc3dpdGNoIChyZWZlcmVuY2Uuc3RhdHVzKSB7XG4gICAgICAgIGNhc2UgXCJmdWxmaWxsZWRcIjpcbiAgICAgICAgICBmb3IgKHZhciB2YWx1ZSA9IHJlZmVyZW5jZS52YWx1ZSwgaSA9IDE7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICA7XG4gICAgICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiB2YWx1ZSAmJlxuICAgICAgICAgICAgICBudWxsICE9PSB2YWx1ZSAmJlxuICAgICAgICAgICAgICB2YWx1ZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTEFaWV9UWVBFO1xuXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5fcGF5bG9hZDtcbiAgICAgICAgICAgICAgc3dpdGNoICh2YWx1ZS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwicmVzb2x2ZWRfbW9kZWxcIjpcbiAgICAgICAgICAgICAgICAgIGluaXRpYWxpemVNb2RlbENodW5rKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJyZXNvbHZlZF9tb2R1bGVcIjpcbiAgICAgICAgICAgICAgICAgIGluaXRpYWxpemVNb2R1bGVDaHVuayh2YWx1ZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgc3dpdGNoICh2YWx1ZS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwiZnVsZmlsbGVkXCI6XG4gICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcImJsb2NrZWRcIjpcbiAgICAgICAgICAgICAgICBjYXNlIFwicGVuZGluZ1wiOlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JSZWZlcmVuY2UoXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRPYmplY3QsXG4gICAgICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgIG1hcCxcbiAgICAgICAgICAgICAgICAgICAgcGF0aC5zbGljZShpIC0gMSksXG4gICAgICAgICAgICAgICAgICAgIGlzSW5pdGlhbGl6aW5nRGVidWdJbmZvXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJoYWx0ZWRcIjpcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemluZ0hhbmRsZXJcbiAgICAgICAgICAgICAgICAgICAgICA/ICgocGFyZW50T2JqZWN0ID0gaW5pdGlhbGl6aW5nSGFuZGxlciksXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRPYmplY3QuZGVwcysrKVxuICAgICAgICAgICAgICAgICAgICAgIDogKGluaXRpYWxpemluZ0hhbmRsZXIgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2h1bms6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb246IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHM6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yZWQ6ICExXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6aW5nSGFuZGxlclxuICAgICAgICAgICAgICAgICAgICAgID8gKChpbml0aWFsaXppbmdIYW5kbGVyLmVycm9yZWQgPSAhMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAoaW5pdGlhbGl6aW5nSGFuZGxlci52YWx1ZSA9IG51bGwpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKGluaXRpYWxpemluZ0hhbmRsZXIucmVhc29uID0gdmFsdWUucmVhc29uKSlcbiAgICAgICAgICAgICAgICAgICAgICA6IChpbml0aWFsaXppbmdIYW5kbGVyID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uOiB2YWx1ZS5yZWFzb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHM6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yZWQ6ICEwXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVtwYXRoW2ldXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChcbiAgICAgICAgICAgIDtcbiAgICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiB2YWx1ZSAmJlxuICAgICAgICAgICAgbnVsbCAhPT0gdmFsdWUgJiZcbiAgICAgICAgICAgIHZhbHVlLiQkdHlwZW9mID09PSBSRUFDVF9MQVpZX1RZUEU7XG5cbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHBhdGggPSB2YWx1ZS5fcGF5bG9hZDtcbiAgICAgICAgICAgIHN3aXRjaCAocGF0aC5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgY2FzZSBcInJlc29sdmVkX21vZGVsXCI6XG4gICAgICAgICAgICAgICAgaW5pdGlhbGl6ZU1vZGVsQ2h1bmsocGF0aCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgXCJyZXNvbHZlZF9tb2R1bGVcIjpcbiAgICAgICAgICAgICAgICBpbml0aWFsaXplTW9kdWxlQ2h1bmsocGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzd2l0Y2ggKHBhdGguc3RhdHVzKSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJmdWxmaWxsZWRcIjpcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHBhdGgudmFsdWU7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzcG9uc2UgPSBtYXAocmVzcG9uc2UsIHZhbHVlLCBwYXJlbnRPYmplY3QsIGtleSk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgcGFyZW50T2JqZWN0WzBdICE9PSBSRUFDVF9FTEVNRU5UX1RZUEUgfHxcbiAgICAgICAgICAgIChcIjRcIiAhPT0ga2V5ICYmIFwiNVwiICE9PSBrZXkpXG4gICAgICAgICAgKVxuICAgICAgICAgICAgaXNJbml0aWFsaXppbmdEZWJ1Z0luZm8gfHxcbiAgICAgICAgICAgICAgdHJhbnNmZXJSZWZlcmVuY2VkRGVidWdJbmZvKGluaXRpYWxpemluZ0NodW5rLCByZWZlcmVuY2UpO1xuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgY2FzZSBcInBlbmRpbmdcIjpcbiAgICAgICAgY2FzZSBcImJsb2NrZWRcIjpcbiAgICAgICAgICByZXR1cm4gd2FpdEZvclJlZmVyZW5jZShcbiAgICAgICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgICAgIHBhcmVudE9iamVjdCxcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgbWFwLFxuICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgIGlzSW5pdGlhbGl6aW5nRGVidWdJbmZvXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSBcImhhbHRlZFwiOlxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBpbml0aWFsaXppbmdIYW5kbGVyXG4gICAgICAgICAgICAgID8gKChwYXJlbnRPYmplY3QgPSBpbml0aWFsaXppbmdIYW5kbGVyKSwgcGFyZW50T2JqZWN0LmRlcHMrKylcbiAgICAgICAgICAgICAgOiAoaW5pdGlhbGl6aW5nSGFuZGxlciA9IHtcbiAgICAgICAgICAgICAgICAgIHBhcmVudDogbnVsbCxcbiAgICAgICAgICAgICAgICAgIGNodW5rOiBudWxsLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICByZWFzb246IG51bGwsXG4gICAgICAgICAgICAgICAgICBkZXBzOiAxLFxuICAgICAgICAgICAgICAgICAgZXJyb3JlZDogITFcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG51bGxcbiAgICAgICAgICApO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBpbml0aWFsaXppbmdIYW5kbGVyXG4gICAgICAgICAgICAgID8gKChpbml0aWFsaXppbmdIYW5kbGVyLmVycm9yZWQgPSAhMCksXG4gICAgICAgICAgICAgICAgKGluaXRpYWxpemluZ0hhbmRsZXIudmFsdWUgPSBudWxsKSxcbiAgICAgICAgICAgICAgICAoaW5pdGlhbGl6aW5nSGFuZGxlci5yZWFzb24gPSByZWZlcmVuY2UucmVhc29uKSlcbiAgICAgICAgICAgICAgOiAoaW5pdGlhbGl6aW5nSGFuZGxlciA9IHtcbiAgICAgICAgICAgICAgICAgIHBhcmVudDogbnVsbCxcbiAgICAgICAgICAgICAgICAgIGNodW5rOiBudWxsLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICByZWFzb246IHJlZmVyZW5jZS5yZWFzb24sXG4gICAgICAgICAgICAgICAgICBkZXBzOiAwLFxuICAgICAgICAgICAgICAgICAgZXJyb3JlZDogITBcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG51bGxcbiAgICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBjcmVhdGVNYXAocmVzcG9uc2UsIG1vZGVsKSB7XG4gICAgICByZXR1cm4gbmV3IE1hcChtb2RlbCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZVNldChyZXNwb25zZSwgbW9kZWwpIHtcbiAgICAgIHJldHVybiBuZXcgU2V0KG1vZGVsKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlQmxvYihyZXNwb25zZSwgbW9kZWwpIHtcbiAgICAgIHJldHVybiBuZXcgQmxvYihtb2RlbC5zbGljZSgxKSwgeyB0eXBlOiBtb2RlbFswXSB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlRm9ybURhdGEocmVzcG9uc2UsIG1vZGVsKSB7XG4gICAgICByZXNwb25zZSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtb2RlbC5sZW5ndGg7IGkrKylcbiAgICAgICAgcmVzcG9uc2UuYXBwZW5kKG1vZGVsW2ldWzBdLCBtb2RlbFtpXVsxXSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFwcGx5Q29uc3RydWN0b3IocmVzcG9uc2UsIG1vZGVsLCBwYXJlbnRPYmplY3QpIHtcbiAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihwYXJlbnRPYmplY3QsIG1vZGVsLnByb3RvdHlwZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGRlZmluZUxhenlHZXR0ZXIocmVzcG9uc2UsIGNodW5rLCBwYXJlbnRPYmplY3QsIGtleSkge1xuICAgICAgXCJfX3Byb3RvX19cIiAhPT0ga2V5ICYmXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwYXJlbnRPYmplY3QsIGtleSwge1xuICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgXCJyZXNvbHZlZF9tb2RlbFwiID09PSBjaHVuay5zdGF0dXMgJiYgaW5pdGlhbGl6ZU1vZGVsQ2h1bmsoY2h1bmspO1xuICAgICAgICAgICAgc3dpdGNoIChjaHVuay5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgY2FzZSBcImZ1bGZpbGxlZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBjaHVuay52YWx1ZTtcbiAgICAgICAgICAgICAgY2FzZSBcInJlamVjdGVkXCI6XG4gICAgICAgICAgICAgICAgdGhyb3cgY2h1bmsucmVhc29uO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFwiVGhpcyBvYmplY3QgaGFzIGJlZW4gb21pdHRlZCBieSBSZWFjdCBpbiB0aGUgY29uc29sZSBsb2cgdG8gYXZvaWQgc2VuZGluZyB0b28gbXVjaCBkYXRhIGZyb20gdGhlIHNlcnZlci4gVHJ5IGxvZ2dpbmcgc21hbGxlciBvciBtb3JlIHNwZWNpZmljIG9iamVjdHMuXCI7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXQ6IGZ1bmN0aW9uICgpIHt9LFxuICAgICAgICAgIGVudW1lcmFibGU6ICEwLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITFcbiAgICAgICAgfSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZnVuY3Rpb24gZXh0cmFjdEl0ZXJhdG9yKHJlc3BvbnNlLCBtb2RlbCkge1xuICAgICAgcmV0dXJuIG1vZGVsW1N5bWJvbC5pdGVyYXRvcl0oKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlTW9kZWwocmVzcG9uc2UsIG1vZGVsKSB7XG4gICAgICByZXR1cm4gbW9kZWw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldEluZmVycmVkRnVuY3Rpb25BcHByb3hpbWF0ZShjb2RlKSB7XG4gICAgICBjb2RlID0gY29kZS5zdGFydHNXaXRoKFwiT2JqZWN0LmRlZmluZVByb3BlcnR5KFwiKVxuICAgICAgICA/IGNvZGUuc2xpY2UoMjIpXG4gICAgICAgIDogY29kZS5zdGFydHNXaXRoKFwiKFwiKVxuICAgICAgICAgID8gY29kZS5zbGljZSgxKVxuICAgICAgICAgIDogY29kZTtcbiAgICAgIGlmIChjb2RlLnN0YXJ0c1dpdGgoXCJhc3luYyBmdW5jdGlvblwiKSkge1xuICAgICAgICB2YXIgaWR4ID0gY29kZS5pbmRleE9mKFwiKFwiLCAxNCk7XG4gICAgICAgIGlmICgtMSAhPT0gaWR4KVxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoY29kZSA9IGNvZGUuc2xpY2UoMTQsIGlkeCkudHJpbSgpKSxcbiAgICAgICAgICAgICgwLCBldmFsKShcIih7XCIgKyBKU09OLnN0cmluZ2lmeShjb2RlKSArIFwiOmFzeW5jIGZ1bmN0aW9uKCl7fX0pXCIpW1xuICAgICAgICAgICAgICBjb2RlXG4gICAgICAgICAgICBdXG4gICAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoY29kZS5zdGFydHNXaXRoKFwiZnVuY3Rpb25cIikpIHtcbiAgICAgICAgaWYgKCgoaWR4ID0gY29kZS5pbmRleE9mKFwiKFwiLCA4KSksIC0xICE9PSBpZHgpKVxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoY29kZSA9IGNvZGUuc2xpY2UoOCwgaWR4KS50cmltKCkpLFxuICAgICAgICAgICAgKDAsIGV2YWwpKFwiKHtcIiArIEpTT04uc3RyaW5naWZ5KGNvZGUpICsgXCI6ZnVuY3Rpb24oKXt9fSlcIilbY29kZV1cbiAgICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgY29kZS5zdGFydHNXaXRoKFwiY2xhc3NcIikgJiZcbiAgICAgICAgKChpZHggPSBjb2RlLmluZGV4T2YoXCJ7XCIsIDUpKSwgLTEgIT09IGlkeClcbiAgICAgIClcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAoY29kZSA9IGNvZGUuc2xpY2UoNSwgaWR4KS50cmltKCkpLFxuICAgICAgICAgICgwLCBldmFsKShcIih7XCIgKyBKU09OLnN0cmluZ2lmeShjb2RlKSArIFwiOmNsYXNze319KVwiKVtjb2RlXVxuICAgICAgICApO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHt9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBwYXJzZU1vZGVsU3RyaW5nKHJlc3BvbnNlLCBwYXJlbnRPYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgICAgIGlmIChcIiRcIiA9PT0gdmFsdWVbMF0pIHtcbiAgICAgICAgaWYgKFwiJFwiID09PSB2YWx1ZSlcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgbnVsbCAhPT0gaW5pdGlhbGl6aW5nSGFuZGxlciAmJlxuICAgICAgICAgICAgICBcIjBcIiA9PT0ga2V5ICYmXG4gICAgICAgICAgICAgIChpbml0aWFsaXppbmdIYW5kbGVyID0ge1xuICAgICAgICAgICAgICAgIHBhcmVudDogaW5pdGlhbGl6aW5nSGFuZGxlcixcbiAgICAgICAgICAgICAgICBjaHVuazogbnVsbCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICByZWFzb246IG51bGwsXG4gICAgICAgICAgICAgICAgZGVwczogMCxcbiAgICAgICAgICAgICAgICBlcnJvcmVkOiAhMVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIFJFQUNUX0VMRU1FTlRfVFlQRVxuICAgICAgICAgICk7XG4gICAgICAgIHN3aXRjaCAodmFsdWVbMV0pIHtcbiAgICAgICAgICBjYXNlIFwiJFwiOlxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnNsaWNlKDEpO1xuICAgICAgICAgIGNhc2UgXCJMXCI6XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAocGFyZW50T2JqZWN0ID0gcGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIDE2KSksXG4gICAgICAgICAgICAgIChyZXNwb25zZSA9IGdldENodW5rKHJlc3BvbnNlLCBwYXJlbnRPYmplY3QpKSxcbiAgICAgICAgICAgICAgbnVsbCAhPT0gaW5pdGlhbGl6aW5nQ2h1bmsgJiZcbiAgICAgICAgICAgICAgICBpc0FycmF5SW1wbChpbml0aWFsaXppbmdDaHVuay5fY2hpbGRyZW4pICYmXG4gICAgICAgICAgICAgICAgaW5pdGlhbGl6aW5nQ2h1bmsuX2NoaWxkcmVuLnB1c2gocmVzcG9uc2UpLFxuICAgICAgICAgICAgICBjcmVhdGVMYXp5Q2h1bmtXcmFwcGVyKHJlc3BvbnNlLCAwKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBjYXNlIFwiQFwiOlxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgKHBhcmVudE9iamVjdCA9IHBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCAxNikpLFxuICAgICAgICAgICAgICAocmVzcG9uc2UgPSBnZXRDaHVuayhyZXNwb25zZSwgcGFyZW50T2JqZWN0KSksXG4gICAgICAgICAgICAgIG51bGwgIT09IGluaXRpYWxpemluZ0NodW5rICYmXG4gICAgICAgICAgICAgICAgaXNBcnJheUltcGwoaW5pdGlhbGl6aW5nQ2h1bmsuX2NoaWxkcmVuKSAmJlxuICAgICAgICAgICAgICAgIGluaXRpYWxpemluZ0NodW5rLl9jaGlsZHJlbi5wdXNoKHJlc3BvbnNlKSxcbiAgICAgICAgICAgICAgcmVzcG9uc2VcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgY2FzZSBcIlNcIjpcbiAgICAgICAgICAgIHJldHVybiBTeW1ib2wuZm9yKHZhbHVlLnNsaWNlKDIpKTtcbiAgICAgICAgICBjYXNlIFwiaFwiOlxuICAgICAgICAgICAgdmFyIHJlZiA9IHZhbHVlLnNsaWNlKDIpO1xuICAgICAgICAgICAgcmV0dXJuIGdldE91dGxpbmVkTW9kZWwoXG4gICAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgICByZWYsXG4gICAgICAgICAgICAgIHBhcmVudE9iamVjdCxcbiAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICBsb2FkU2VydmVyUmVmZXJlbmNlXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGNhc2UgXCJUXCI6XG4gICAgICAgICAgICBwYXJlbnRPYmplY3QgPSBcIiRcIiArIHZhbHVlLnNsaWNlKDIpO1xuICAgICAgICAgICAgcmVzcG9uc2UgPSByZXNwb25zZS5fdGVtcFJlZnM7XG4gICAgICAgICAgICBpZiAobnVsbCA9PSByZXNwb25zZSlcbiAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgXCJNaXNzaW5nIGEgdGVtcG9yYXJ5IHJlZmVyZW5jZSBzZXQgYnV0IHRoZSBSU0MgcmVzcG9uc2UgcmV0dXJuZWQgYSB0ZW1wb3JhcnkgcmVmZXJlbmNlLiBQYXNzIGEgdGVtcG9yYXJ5UmVmZXJlbmNlIG9wdGlvbiB3aXRoIHRoZSBzZXQgdGhhdCB3YXMgdXNlZCB3aXRoIHRoZSByZXBseS5cIlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmdldChwYXJlbnRPYmplY3QpO1xuICAgICAgICAgIGNhc2UgXCJRXCI6XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAocmVmID0gdmFsdWUuc2xpY2UoMikpLFxuICAgICAgICAgICAgICBnZXRPdXRsaW5lZE1vZGVsKHJlc3BvbnNlLCByZWYsIHBhcmVudE9iamVjdCwga2V5LCBjcmVhdGVNYXApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGNhc2UgXCJXXCI6XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAocmVmID0gdmFsdWUuc2xpY2UoMikpLFxuICAgICAgICAgICAgICBnZXRPdXRsaW5lZE1vZGVsKHJlc3BvbnNlLCByZWYsIHBhcmVudE9iamVjdCwga2V5LCBjcmVhdGVTZXQpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGNhc2UgXCJCXCI6XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAocmVmID0gdmFsdWUuc2xpY2UoMikpLFxuICAgICAgICAgICAgICBnZXRPdXRsaW5lZE1vZGVsKHJlc3BvbnNlLCByZWYsIHBhcmVudE9iamVjdCwga2V5LCBjcmVhdGVCbG9iKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBjYXNlIFwiS1wiOlxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgKHJlZiA9IHZhbHVlLnNsaWNlKDIpKSxcbiAgICAgICAgICAgICAgZ2V0T3V0bGluZWRNb2RlbChyZXNwb25zZSwgcmVmLCBwYXJlbnRPYmplY3QsIGtleSwgY3JlYXRlRm9ybURhdGEpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGNhc2UgXCJaXCI6XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAocmVmID0gdmFsdWUuc2xpY2UoMikpLFxuICAgICAgICAgICAgICBnZXRPdXRsaW5lZE1vZGVsKFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgICBwYXJlbnRPYmplY3QsXG4gICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgIHJlc29sdmVFcnJvckRldlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGNhc2UgXCJpXCI6XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAocmVmID0gdmFsdWUuc2xpY2UoMikpLFxuICAgICAgICAgICAgICBnZXRPdXRsaW5lZE1vZGVsKFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgICBwYXJlbnRPYmplY3QsXG4gICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgIGV4dHJhY3RJdGVyYXRvclxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGNhc2UgXCJJXCI6XG4gICAgICAgICAgICByZXR1cm4gSW5maW5pdHk7XG4gICAgICAgICAgY2FzZSBcIi1cIjpcbiAgICAgICAgICAgIHJldHVybiBcIiQtMFwiID09PSB2YWx1ZSA/IC0wIDogLUluZmluaXR5O1xuICAgICAgICAgIGNhc2UgXCJOXCI6XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICAgIGNhc2UgXCJ1XCI6XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgY2FzZSBcIkRcIjpcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShEYXRlLnBhcnNlKHZhbHVlLnNsaWNlKDIpKSk7XG4gICAgICAgICAgY2FzZSBcIm5cIjpcbiAgICAgICAgICAgIHJldHVybiBCaWdJbnQodmFsdWUuc2xpY2UoMikpO1xuICAgICAgICAgIGNhc2UgXCJQXCI6XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAocmVmID0gdmFsdWUuc2xpY2UoMikpLFxuICAgICAgICAgICAgICBnZXRPdXRsaW5lZE1vZGVsKFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgICBwYXJlbnRPYmplY3QsXG4gICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgIGFwcGx5Q29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBjYXNlIFwiRVwiOlxuICAgICAgICAgICAgcmVzcG9uc2UgPSB2YWx1ZS5zbGljZSgyKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGlmICghbWlnaHRIYXZlU3RhdGljQ29uc3RydWN0b3IudGVzdChyZXNwb25zZSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuICgwLCBldmFsKShyZXNwb25zZSk7XG4gICAgICAgICAgICB9IGNhdGNoICh4KSB7fVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICgocmVmID0gZ2V0SW5mZXJyZWRGdW5jdGlvbkFwcHJveGltYXRlKHJlc3BvbnNlKSksXG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uuc3RhcnRzV2l0aChcIk9iamVjdC5kZWZpbmVQcm9wZXJ0eShcIikpXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHZhciBpZHggPSByZXNwb25zZS5sYXN0SW5kZXhPZignLFwibmFtZVwiLHt2YWx1ZTpcIicpO1xuICAgICAgICAgICAgICAgIGlmICgtMSAhPT0gaWR4KSB7XG4gICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNsaWNlKGlkeCArIDE2IC0gMSwgcmVzcG9uc2UubGVuZ3RoIC0gMilcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVmLCBcIm5hbWVcIiwgeyB2YWx1ZTogbmFtZSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgICAgICAgcmVmID0gZnVuY3Rpb24gKCkge307XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVmO1xuICAgICAgICAgIGNhc2UgXCJZXCI6XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIDIgPCB2YWx1ZS5sZW5ndGggJiZcbiAgICAgICAgICAgICAgKHJlZiA9IHJlc3BvbnNlLl9kZWJ1Z0NoYW5uZWwgJiYgcmVzcG9uc2UuX2RlYnVnQ2hhbm5lbC5jYWxsYmFjaylcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBpZiAoXCJAXCIgPT09IHZhbHVlWzJdKVxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAocGFyZW50T2JqZWN0ID0gdmFsdWUuc2xpY2UoMykpLFxuICAgICAgICAgICAgICAgICAgKGtleSA9IHBhcnNlSW50KHBhcmVudE9iamVjdCwgMTYpKSxcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLl9jaHVua3MuaGFzKGtleSkgfHwgcmVmKFwiUDpcIiArIHBhcmVudE9iamVjdCksXG4gICAgICAgICAgICAgICAgICBnZXRDaHVuayhyZXNwb25zZSwga2V5KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoMik7XG4gICAgICAgICAgICAgIGlkeCA9IHBhcnNlSW50KHZhbHVlLCAxNik7XG4gICAgICAgICAgICAgIHJlc3BvbnNlLl9jaHVua3MuaGFzKGlkeCkgfHwgcmVmKFwiUTpcIiArIHZhbHVlKTtcbiAgICAgICAgICAgICAgcmVmID0gZ2V0Q2h1bmsocmVzcG9uc2UsIGlkeCk7XG4gICAgICAgICAgICAgIHJldHVybiBcImZ1bGZpbGxlZFwiID09PSByZWYuc3RhdHVzXG4gICAgICAgICAgICAgICAgPyByZWYudmFsdWVcbiAgICAgICAgICAgICAgICA6IGRlZmluZUxhenlHZXR0ZXIocmVzcG9uc2UsIHJlZiwgcGFyZW50T2JqZWN0LCBrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXCJfX3Byb3RvX19cIiAhPT0ga2V5ICYmXG4gICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwYXJlbnRPYmplY3QsIGtleSwge1xuICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiVGhpcyBvYmplY3QgaGFzIGJlZW4gb21pdHRlZCBieSBSZWFjdCBpbiB0aGUgY29uc29sZSBsb2cgdG8gYXZvaWQgc2VuZGluZyB0b28gbXVjaCBkYXRhIGZyb20gdGhlIHNlcnZlci4gVHJ5IGxvZ2dpbmcgc21hbGxlciBvciBtb3JlIHNwZWNpZmljIG9iamVjdHMuXCI7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uICgpIHt9LFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITFcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgKHJlZiA9IHZhbHVlLnNsaWNlKDEpKSxcbiAgICAgICAgICAgICAgZ2V0T3V0bGluZWRNb2RlbChyZXNwb25zZSwgcmVmLCBwYXJlbnRPYmplY3QsIGtleSwgY3JlYXRlTW9kZWwpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG1pc3NpbmdDYWxsKCkge1xuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICdUcnlpbmcgdG8gY2FsbCBhIGZ1bmN0aW9uIGZyb20gXCJ1c2Ugc2VydmVyXCIgYnV0IHRoZSBjYWxsU2VydmVyIG9wdGlvbiB3YXMgbm90IGltcGxlbWVudGVkIGluIHlvdXIgcm91dGVyIHJ1bnRpbWUuJ1xuICAgICAgKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gbWFya0lPU3RhcnRlZCgpIHtcbiAgICAgIHRoaXMuX2RlYnVnSU9TdGFydGVkID0gITA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIFJlc3BvbnNlSW5zdGFuY2UoXG4gICAgICBidW5kbGVyQ29uZmlnLFxuICAgICAgc2VydmVyUmVmZXJlbmNlQ29uZmlnLFxuICAgICAgbW9kdWxlTG9hZGluZyxcbiAgICAgIGNhbGxTZXJ2ZXIsXG4gICAgICBlbmNvZGVGb3JtQWN0aW9uLFxuICAgICAgbm9uY2UsXG4gICAgICB0ZW1wb3JhcnlSZWZlcmVuY2VzLFxuICAgICAgYWxsb3dQYXJ0aWFsU3RyZWFtLFxuICAgICAgZmluZFNvdXJjZU1hcFVSTCxcbiAgICAgIHJlcGxheUNvbnNvbGUsXG4gICAgICBlbnZpcm9ubWVudE5hbWUsXG4gICAgICBkZWJ1Z1N0YXJ0VGltZSxcbiAgICAgIGRlYnVnRW5kVGltZSxcbiAgICAgIGRlYnVnQ2hhbm5lbFxuICAgICkge1xuICAgICAgdmFyIGNodW5rcyA9IG5ldyBNYXAoKTtcbiAgICAgIHRoaXMuX2J1bmRsZXJDb25maWcgPSBidW5kbGVyQ29uZmlnO1xuICAgICAgdGhpcy5fc2VydmVyUmVmZXJlbmNlQ29uZmlnID0gc2VydmVyUmVmZXJlbmNlQ29uZmlnO1xuICAgICAgdGhpcy5fbW9kdWxlTG9hZGluZyA9IG1vZHVsZUxvYWRpbmc7XG4gICAgICB0aGlzLl9jYWxsU2VydmVyID0gdm9pZCAwICE9PSBjYWxsU2VydmVyID8gY2FsbFNlcnZlciA6IG1pc3NpbmdDYWxsO1xuICAgICAgdGhpcy5fZW5jb2RlRm9ybUFjdGlvbiA9IGVuY29kZUZvcm1BY3Rpb247XG4gICAgICB0aGlzLl9ub25jZSA9IG5vbmNlO1xuICAgICAgdGhpcy5fY2h1bmtzID0gY2h1bmtzO1xuICAgICAgdGhpcy5fc3RyaW5nRGVjb2RlciA9IG5ldyB1dGlsLlRleHREZWNvZGVyKCk7XG4gICAgICB0aGlzLl9jbG9zZWQgPSAhMTtcbiAgICAgIHRoaXMuX2Nsb3NlZFJlYXNvbiA9IG51bGw7XG4gICAgICB0aGlzLl9hbGxvd1BhcnRpYWxTdHJlYW0gPSBhbGxvd1BhcnRpYWxTdHJlYW07XG4gICAgICB0aGlzLl90ZW1wUmVmcyA9IHRlbXBvcmFyeVJlZmVyZW5jZXM7XG4gICAgICB0aGlzLl90aW1lT3JpZ2luID0gMDtcbiAgICAgIHRoaXMuX3BlbmRpbmdJbml0aWFsUmVuZGVyID0gbnVsbDtcbiAgICAgIHRoaXMuX3BlbmRpbmdDaHVua3MgPSAwO1xuICAgICAgdGhpcy5fd2Vha1Jlc3BvbnNlID0geyB3ZWFrOiBuZXcgV2Vha1JlZih0aGlzKSwgcmVzcG9uc2U6IHRoaXMgfTtcbiAgICAgIHRoaXMuX2RlYnVnUm9vdE93bmVyID0gYnVuZGxlckNvbmZpZyA9XG4gICAgICAgIHZvaWQgMCA9PT0gUmVhY3RTaGFyZWRJbnRlcmFsc1NlcnZlciB8fFxuICAgICAgICBudWxsID09PSBSZWFjdFNoYXJlZEludGVyYWxzU2VydmVyLkFcbiAgICAgICAgICA/IG51bGxcbiAgICAgICAgICA6IFJlYWN0U2hhcmVkSW50ZXJhbHNTZXJ2ZXIuQS5nZXRPd25lcigpO1xuICAgICAgdGhpcy5fZGVidWdSb290U3RhY2sgPVxuICAgICAgICBudWxsICE9PSBidW5kbGVyQ29uZmlnID8gRXJyb3IoXCJyZWFjdC1zdGFjay10b3AtZnJhbWVcIikgOiBudWxsO1xuICAgICAgZW52aXJvbm1lbnROYW1lID0gdm9pZCAwID09PSBlbnZpcm9ubWVudE5hbWUgPyBcIlNlcnZlclwiIDogZW52aXJvbm1lbnROYW1lO1xuICAgICAgc3VwcG9ydHNDcmVhdGVUYXNrICYmXG4gICAgICAgICh0aGlzLl9kZWJ1Z1Jvb3RUYXNrID0gY29uc29sZS5jcmVhdGVUYXNrKFxuICAgICAgICAgICdcInVzZSAnICsgZW52aXJvbm1lbnROYW1lLnRvTG93ZXJDYXNlKCkgKyAnXCInXG4gICAgICAgICkpO1xuICAgICAgdGhpcy5fZGVidWdTdGFydFRpbWUgPVxuICAgICAgICBudWxsID09IGRlYnVnU3RhcnRUaW1lID8gcGVyZm9ybWFuY2Uubm93KCkgOiBkZWJ1Z1N0YXJ0VGltZTtcbiAgICAgIHRoaXMuX2RlYnVnSU9TdGFydGVkID0gITE7XG4gICAgICBzZXRUaW1lb3V0KG1hcmtJT1N0YXJ0ZWQuYmluZCh0aGlzKSwgMCk7XG4gICAgICB0aGlzLl9kZWJ1Z0VuZFRpbWUgPSBudWxsID09IGRlYnVnRW5kVGltZSA/IG51bGwgOiBkZWJ1Z0VuZFRpbWU7XG4gICAgICB0aGlzLl9kZWJ1Z0ZpbmRTb3VyY2VNYXBVUkwgPSBmaW5kU291cmNlTWFwVVJMO1xuICAgICAgdGhpcy5fZGVidWdDaGFubmVsID0gZGVidWdDaGFubmVsO1xuICAgICAgdGhpcy5fYmxvY2tlZENvbnNvbGUgPSBudWxsO1xuICAgICAgdGhpcy5fcmVwbGF5Q29uc29sZSA9IHJlcGxheUNvbnNvbGU7XG4gICAgICB0aGlzLl9yb290RW52aXJvbm1lbnROYW1lID0gZW52aXJvbm1lbnROYW1lO1xuICAgICAgZGVidWdDaGFubmVsICYmXG4gICAgICAgIChudWxsID09PSBkZWJ1Z0NoYW5uZWxSZWdpc3RyeVxuICAgICAgICAgID8gKGNsb3NlRGVidWdDaGFubmVsKGRlYnVnQ2hhbm5lbCksICh0aGlzLl9kZWJ1Z0NoYW5uZWwgPSB2b2lkIDApKVxuICAgICAgICAgIDogZGVidWdDaGFubmVsUmVnaXN0cnkucmVnaXN0ZXIodGhpcywgZGVidWdDaGFubmVsLCB0aGlzKSk7XG4gICAgICByZXBsYXlDb25zb2xlICYmIG1hcmtBbGxUcmFja3NJbk9yZGVyKCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZVJlc3BvbnNlKFxuICAgICAgYnVuZGxlckNvbmZpZyxcbiAgICAgIHNlcnZlclJlZmVyZW5jZUNvbmZpZyxcbiAgICAgIG1vZHVsZUxvYWRpbmcsXG4gICAgICBjYWxsU2VydmVyLFxuICAgICAgZW5jb2RlRm9ybUFjdGlvbixcbiAgICAgIG5vbmNlLFxuICAgICAgdGVtcG9yYXJ5UmVmZXJlbmNlcyxcbiAgICAgIGFsbG93UGFydGlhbFN0cmVhbSxcbiAgICAgIGZpbmRTb3VyY2VNYXBVUkwsXG4gICAgICByZXBsYXlDb25zb2xlLFxuICAgICAgZW52aXJvbm1lbnROYW1lLFxuICAgICAgZGVidWdTdGFydFRpbWUsXG4gICAgICBkZWJ1Z0VuZFRpbWUsXG4gICAgICBkZWJ1Z0NoYW5uZWxcbiAgICApIHtcbiAgICAgIGNoZWNrRXZhbEF2YWlsYWJpbGl0eU9uY2VEZXYoKTtcbiAgICAgIGJ1bmRsZXJDb25maWcgPSBuZXcgUmVzcG9uc2VJbnN0YW5jZShcbiAgICAgICAgYnVuZGxlckNvbmZpZyxcbiAgICAgICAgc2VydmVyUmVmZXJlbmNlQ29uZmlnLFxuICAgICAgICBtb2R1bGVMb2FkaW5nLFxuICAgICAgICBjYWxsU2VydmVyLFxuICAgICAgICBlbmNvZGVGb3JtQWN0aW9uLFxuICAgICAgICBub25jZSxcbiAgICAgICAgdGVtcG9yYXJ5UmVmZXJlbmNlcyxcbiAgICAgICAgYWxsb3dQYXJ0aWFsU3RyZWFtLFxuICAgICAgICBmaW5kU291cmNlTWFwVVJMLFxuICAgICAgICByZXBsYXlDb25zb2xlLFxuICAgICAgICBlbnZpcm9ubWVudE5hbWUsXG4gICAgICAgIGRlYnVnU3RhcnRUaW1lLFxuICAgICAgICBkZWJ1Z0VuZFRpbWUsXG4gICAgICAgIGRlYnVnQ2hhbm5lbFxuICAgICAgKS5fd2Vha1Jlc3BvbnNlO1xuICAgICAgcmV0dXJuIGJ1bmRsZXJDb25maWc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZVN0cmVhbVN0YXRlKHdlYWtSZXNwb25zZSwgc3RyZWFtRGVidWdWYWx1ZSkge1xuICAgICAgdmFyIHN0cmVhbVN0YXRlID0ge1xuICAgICAgICBfcm93U3RhdGU6IDAsXG4gICAgICAgIF9yb3dJRDogMCxcbiAgICAgICAgX3Jvd1RhZzogMCxcbiAgICAgICAgX3Jvd0xlbmd0aDogMCxcbiAgICAgICAgX2J1ZmZlcjogW11cbiAgICAgIH07XG4gICAgICB3ZWFrUmVzcG9uc2UgPSB1bndyYXBXZWFrUmVzcG9uc2Uod2Vha1Jlc3BvbnNlKTtcbiAgICAgIHZhciBkZWJ1Z1ZhbHVlUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShzdHJlYW1EZWJ1Z1ZhbHVlKTtcbiAgICAgIGRlYnVnVmFsdWVQcm9taXNlLnN0YXR1cyA9IFwiZnVsZmlsbGVkXCI7XG4gICAgICBkZWJ1Z1ZhbHVlUHJvbWlzZS52YWx1ZSA9IHN0cmVhbURlYnVnVmFsdWU7XG4gICAgICBzdHJlYW1TdGF0ZS5fZGVidWdJbmZvID0ge1xuICAgICAgICBuYW1lOiBcInJzYyBzdHJlYW1cIixcbiAgICAgICAgc3RhcnQ6IHdlYWtSZXNwb25zZS5fZGVidWdTdGFydFRpbWUsXG4gICAgICAgIGVuZDogd2Vha1Jlc3BvbnNlLl9kZWJ1Z1N0YXJ0VGltZSxcbiAgICAgICAgYnl0ZVNpemU6IDAsXG4gICAgICAgIHZhbHVlOiBkZWJ1Z1ZhbHVlUHJvbWlzZSxcbiAgICAgICAgb3duZXI6IHdlYWtSZXNwb25zZS5fZGVidWdSb290T3duZXIsXG4gICAgICAgIGRlYnVnU3RhY2s6IHdlYWtSZXNwb25zZS5fZGVidWdSb290U3RhY2ssXG4gICAgICAgIGRlYnVnVGFzazogd2Vha1Jlc3BvbnNlLl9kZWJ1Z1Jvb3RUYXNrXG4gICAgICB9O1xuICAgICAgc3RyZWFtU3RhdGUuX2RlYnVnVGFyZ2V0Q2h1bmtTaXplID0gTUlOX0NIVU5LX1NJWkU7XG4gICAgICByZXR1cm4gc3RyZWFtU3RhdGU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGluY3JlbWVudENodW5rRGVidWdJbmZvKHN0cmVhbVN0YXRlLCBjaHVua0xlbmd0aCkge1xuICAgICAgdmFyIGRlYnVnSW5mbyA9IHN0cmVhbVN0YXRlLl9kZWJ1Z0luZm8sXG4gICAgICAgIGVuZFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKSxcbiAgICAgICAgcHJldmlvdXNFbmRUaW1lID0gZGVidWdJbmZvLmVuZDtcbiAgICAgIGNodW5rTGVuZ3RoID0gZGVidWdJbmZvLmJ5dGVTaXplICsgY2h1bmtMZW5ndGg7XG4gICAgICBjaHVua0xlbmd0aCA+IHN0cmVhbVN0YXRlLl9kZWJ1Z1RhcmdldENodW5rU2l6ZSB8fFxuICAgICAgZW5kVGltZSA+IHByZXZpb3VzRW5kVGltZSArIDEwXG4gICAgICAgID8gKChzdHJlYW1TdGF0ZS5fZGVidWdJbmZvID0ge1xuICAgICAgICAgICAgbmFtZTogZGVidWdJbmZvLm5hbWUsXG4gICAgICAgICAgICBzdGFydDogZGVidWdJbmZvLnN0YXJ0LFxuICAgICAgICAgICAgZW5kOiBlbmRUaW1lLFxuICAgICAgICAgICAgYnl0ZVNpemU6IGNodW5rTGVuZ3RoLFxuICAgICAgICAgICAgdmFsdWU6IGRlYnVnSW5mby52YWx1ZSxcbiAgICAgICAgICAgIG93bmVyOiBkZWJ1Z0luZm8ub3duZXIsXG4gICAgICAgICAgICBkZWJ1Z1N0YWNrOiBkZWJ1Z0luZm8uZGVidWdTdGFjayxcbiAgICAgICAgICAgIGRlYnVnVGFzazogZGVidWdJbmZvLmRlYnVnVGFza1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIChzdHJlYW1TdGF0ZS5fZGVidWdUYXJnZXRDaHVua1NpemUgPSBjaHVua0xlbmd0aCArIE1JTl9DSFVOS19TSVpFKSlcbiAgICAgICAgOiAoKGRlYnVnSW5mby5lbmQgPSBlbmRUaW1lKSwgKGRlYnVnSW5mby5ieXRlU2l6ZSA9IGNodW5rTGVuZ3RoKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFkZEFzeW5jSW5mbyhjaHVuaywgYXN5bmNJbmZvKSB7XG4gICAgICB2YXIgdmFsdWUgPSByZXNvbHZlTGF6eShjaHVuay52YWx1ZSk7XG4gICAgICBcIm9iamVjdFwiICE9PSB0eXBlb2YgdmFsdWUgfHxcbiAgICAgIG51bGwgPT09IHZhbHVlIHx8XG4gICAgICAoIWlzQXJyYXlJbXBsKHZhbHVlKSAmJlxuICAgICAgICBcImZ1bmN0aW9uXCIgIT09IHR5cGVvZiB2YWx1ZVtBU1lOQ19JVEVSQVRPUl0gJiZcbiAgICAgICAgdmFsdWUuJCR0eXBlb2YgIT09IFJFQUNUX0VMRU1FTlRfVFlQRSAmJlxuICAgICAgICB2YWx1ZS4kJHR5cGVvZiAhPT0gUkVBQ1RfTEFaWV9UWVBFKVxuICAgICAgICA/IGNodW5rLl9kZWJ1Z0luZm8ucHVzaChhc3luY0luZm8pXG4gICAgICAgIDogaXNBcnJheUltcGwodmFsdWUuX2RlYnVnSW5mbylcbiAgICAgICAgICA/IHZhbHVlLl9kZWJ1Z0luZm8ucHVzaChhc3luY0luZm8pXG4gICAgICAgICAgOiBPYmplY3QuaXNGcm96ZW4odmFsdWUpIHx8XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodmFsdWUsIFwiX2RlYnVnSW5mb1wiLCB7XG4gICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITEsXG4gICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLFxuICAgICAgICAgICAgICB3cml0YWJsZTogITAsXG4gICAgICAgICAgICAgIHZhbHVlOiBbYXN5bmNJbmZvXVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlc29sdmVDaHVua0RlYnVnSW5mbyhyZXNwb25zZSwgc3RyZWFtU3RhdGUsIGNodW5rKSB7XG4gICAgICByZXNwb25zZS5fZGVidWdJT1N0YXJ0ZWQgJiZcbiAgICAgICAgKChyZXNwb25zZSA9IHsgYXdhaXRlZDogc3RyZWFtU3RhdGUuX2RlYnVnSW5mbyB9KSxcbiAgICAgICAgXCJwZW5kaW5nXCIgPT09IGNodW5rLnN0YXR1cyB8fCBcImJsb2NrZWRcIiA9PT0gY2h1bmsuc3RhdHVzXG4gICAgICAgICAgPyAoKHJlc3BvbnNlID0gYWRkQXN5bmNJbmZvLmJpbmQobnVsbCwgY2h1bmssIHJlc3BvbnNlKSksXG4gICAgICAgICAgICBjaHVuay50aGVuKHJlc3BvbnNlLCByZXNwb25zZSkpXG4gICAgICAgICAgOiBhZGRBc3luY0luZm8oY2h1bmssIHJlc3BvbnNlKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlc29sdmVCdWZmZXIocmVzcG9uc2UsIGlkLCBidWZmZXIsIHN0cmVhbVN0YXRlKSB7XG4gICAgICB2YXIgY2h1bmtzID0gcmVzcG9uc2UuX2NodW5rcyxcbiAgICAgICAgY2h1bmsgPSBjaHVua3MuZ2V0KGlkKTtcbiAgICAgIGNodW5rICYmIFwicGVuZGluZ1wiICE9PSBjaHVuay5zdGF0dXNcbiAgICAgICAgPyBjaHVuay5yZWFzb24uZW5xdWV1ZVZhbHVlKGJ1ZmZlcilcbiAgICAgICAgOiAoY2h1bmsgJiYgcmVsZWFzZVBlbmRpbmdDaHVuayhyZXNwb25zZSwgY2h1bmspLFxuICAgICAgICAgIChidWZmZXIgPSBuZXcgUmVhY3RQcm9taXNlKFwiZnVsZmlsbGVkXCIsIGJ1ZmZlciwgbnVsbCkpLFxuICAgICAgICAgIHJlc29sdmVDaHVua0RlYnVnSW5mbyhyZXNwb25zZSwgc3RyZWFtU3RhdGUsIGJ1ZmZlciksXG4gICAgICAgICAgY2h1bmtzLnNldChpZCwgYnVmZmVyKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlc29sdmVNb2R1bGUocmVzcG9uc2UsIGlkLCBtb2RlbCwgc3RyZWFtU3RhdGUpIHtcbiAgICAgIHZhciBjaHVua3MgPSByZXNwb25zZS5fY2h1bmtzLFxuICAgICAgICBjaHVuayA9IGNodW5rcy5nZXQoaWQpO1xuICAgICAgbW9kZWwgPSBwYXJzZU1vZGVsKHJlc3BvbnNlLCBtb2RlbCk7XG4gICAgICB2YXIgY2xpZW50UmVmZXJlbmNlID0gcmVzb2x2ZUNsaWVudFJlZmVyZW5jZShcbiAgICAgICAgcmVzcG9uc2UuX2J1bmRsZXJDb25maWcsXG4gICAgICAgIG1vZGVsXG4gICAgICApO1xuICAgICAgcHJlcGFyZURlc3RpbmF0aW9uV2l0aENodW5rcyhcbiAgICAgICAgcmVzcG9uc2UuX21vZHVsZUxvYWRpbmcsXG4gICAgICAgIG1vZGVsWzFdLFxuICAgICAgICByZXNwb25zZS5fbm9uY2VcbiAgICAgICk7XG4gICAgICBpZiAoKG1vZGVsID0gcHJlbG9hZE1vZHVsZShjbGllbnRSZWZlcmVuY2UpKSkge1xuICAgICAgICBpZiAoY2h1bmspIHtcbiAgICAgICAgICByZWxlYXNlUGVuZGluZ0NodW5rKHJlc3BvbnNlLCBjaHVuayk7XG4gICAgICAgICAgdmFyIGJsb2NrZWRDaHVuayA9IGNodW5rO1xuICAgICAgICAgIGJsb2NrZWRDaHVuay5zdGF0dXMgPSBcImJsb2NrZWRcIjtcbiAgICAgICAgfSBlbHNlXG4gICAgICAgICAgKGJsb2NrZWRDaHVuayA9IG5ldyBSZWFjdFByb21pc2UoXCJibG9ja2VkXCIsIG51bGwsIG51bGwpKSxcbiAgICAgICAgICAgIGNodW5rcy5zZXQoaWQsIGJsb2NrZWRDaHVuayk7XG4gICAgICAgIHJlc29sdmVDaHVua0RlYnVnSW5mbyhyZXNwb25zZSwgc3RyZWFtU3RhdGUsIGJsb2NrZWRDaHVuayk7XG4gICAgICAgIG1vZGVsLnRoZW4oXG4gICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVNb2R1bGVDaHVuayhyZXNwb25zZSwgYmxvY2tlZENodW5rLCBjbGllbnRSZWZlcmVuY2UpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJpZ2dlckVycm9yT25DaHVuayhyZXNwb25zZSwgYmxvY2tlZENodW5rLCBlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlXG4gICAgICAgIGNodW5rXG4gICAgICAgICAgPyAocmVzb2x2ZUNodW5rRGVidWdJbmZvKHJlc3BvbnNlLCBzdHJlYW1TdGF0ZSwgY2h1bmspLFxuICAgICAgICAgICAgcmVzb2x2ZU1vZHVsZUNodW5rKHJlc3BvbnNlLCBjaHVuaywgY2xpZW50UmVmZXJlbmNlKSlcbiAgICAgICAgICA6ICgoY2h1bmsgPSBuZXcgUmVhY3RQcm9taXNlKFxuICAgICAgICAgICAgICBcInJlc29sdmVkX21vZHVsZVwiLFxuICAgICAgICAgICAgICBjbGllbnRSZWZlcmVuY2UsXG4gICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgcmVzb2x2ZUNodW5rRGVidWdJbmZvKHJlc3BvbnNlLCBzdHJlYW1TdGF0ZSwgY2h1bmspLFxuICAgICAgICAgICAgY2h1bmtzLnNldChpZCwgY2h1bmspKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVzb2x2ZVN0cmVhbShyZXNwb25zZSwgaWQsIHN0cmVhbSwgY29udHJvbGxlciwgc3RyZWFtU3RhdGUpIHtcbiAgICAgIHZhciBjaHVua3MgPSByZXNwb25zZS5fY2h1bmtzLFxuICAgICAgICBjaHVuayA9IGNodW5rcy5nZXQoaWQpO1xuICAgICAgaWYgKGNodW5rKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAocmVzb2x2ZUNodW5rRGVidWdJbmZvKHJlc3BvbnNlLCBzdHJlYW1TdGF0ZSwgY2h1bmspLFxuICAgICAgICAgIFwicGVuZGluZ1wiID09PSBjaHVuay5zdGF0dXMpXG4gICAgICAgICkge1xuICAgICAgICAgIGlkID0gY2h1bmsudmFsdWU7XG4gICAgICAgICAgaWYgKG51bGwgIT0gY2h1bmsuX2RlYnVnQ2h1bmspIHtcbiAgICAgICAgICAgIHN0cmVhbVN0YXRlID0gaW5pdGlhbGl6aW5nSGFuZGxlcjtcbiAgICAgICAgICAgIGNodW5rcyA9IGluaXRpYWxpemluZ0NodW5rO1xuICAgICAgICAgICAgaW5pdGlhbGl6aW5nSGFuZGxlciA9IG51bGw7XG4gICAgICAgICAgICBjaHVuay5zdGF0dXMgPSBcImJsb2NrZWRcIjtcbiAgICAgICAgICAgIGNodW5rLnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIGNodW5rLnJlYXNvbiA9IG51bGw7XG4gICAgICAgICAgICBpbml0aWFsaXppbmdDaHVuayA9IGNodW5rO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIChpbml0aWFsaXplRGVidWdDaHVuayhyZXNwb25zZSwgY2h1bmspLFxuICAgICAgICAgICAgICAgIG51bGwgIT09IGluaXRpYWxpemluZ0hhbmRsZXIgJiZcbiAgICAgICAgICAgICAgICAgICFpbml0aWFsaXppbmdIYW5kbGVyLmVycm9yZWQgJiZcbiAgICAgICAgICAgICAgICAgIDAgPCBpbml0aWFsaXppbmdIYW5kbGVyLmRlcHMpXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGluaXRpYWxpemluZ0hhbmRsZXIudmFsdWUgPSBzdHJlYW07XG4gICAgICAgICAgICAgICAgaW5pdGlhbGl6aW5nSGFuZGxlci5yZWFzb24gPSBjb250cm9sbGVyO1xuICAgICAgICAgICAgICAgIGluaXRpYWxpemluZ0hhbmRsZXIuY2h1bmsgPSBjaHVuaztcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgIChpbml0aWFsaXppbmdIYW5kbGVyID0gc3RyZWFtU3RhdGUpLCAoaW5pdGlhbGl6aW5nQ2h1bmsgPSBjaHVua3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjaHVuay5zdGF0dXMgPSBcImZ1bGZpbGxlZFwiO1xuICAgICAgICAgIGNodW5rLnZhbHVlID0gc3RyZWFtO1xuICAgICAgICAgIGNodW5rLnJlYXNvbiA9IGNvbnRyb2xsZXI7XG4gICAgICAgICAgbnVsbCAhPT0gaWRcbiAgICAgICAgICAgID8gd2FrZUNodW5rKHJlc3BvbnNlLCBpZCwgY2h1bmsudmFsdWUsIGNodW5rKVxuICAgICAgICAgICAgOiAoZmlsdGVyRGVidWdJbmZvKHJlc3BvbnNlLCBjaHVuayksXG4gICAgICAgICAgICAgIG1vdmVEZWJ1Z0luZm9Gcm9tQ2h1bmtUb0lubmVyVmFsdWUoY2h1bmssIHN0cmVhbSkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2VcbiAgICAgICAgMCA9PT0gcmVzcG9uc2UuX3BlbmRpbmdDaHVua3MrKyAmJlxuICAgICAgICAgIChyZXNwb25zZS5fd2Vha1Jlc3BvbnNlLnJlc3BvbnNlID0gcmVzcG9uc2UpLFxuICAgICAgICAgIChzdHJlYW0gPSBuZXcgUmVhY3RQcm9taXNlKFwiZnVsZmlsbGVkXCIsIHN0cmVhbSwgY29udHJvbGxlcikpLFxuICAgICAgICAgIHJlc29sdmVDaHVua0RlYnVnSW5mbyhyZXNwb25zZSwgc3RyZWFtU3RhdGUsIHN0cmVhbSksXG4gICAgICAgICAgY2h1bmtzLnNldChpZCwgc3RyZWFtKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc3RhcnRSZWFkYWJsZVN0cmVhbShyZXNwb25zZSwgaWQsIHR5cGUsIHN0cmVhbVN0YXRlKSB7XG4gICAgICB2YXIgY29udHJvbGxlciA9IG51bGwsXG4gICAgICAgIGNsb3NlZCA9ICExO1xuICAgICAgdHlwZSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIHN0YXJ0OiBmdW5jdGlvbiAoYykge1xuICAgICAgICAgIGNvbnRyb2xsZXIgPSBjO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHZhciBwcmV2aW91c0Jsb2NrZWRDaHVuayA9IG51bGw7XG4gICAgICByZXNvbHZlU3RyZWFtKFxuICAgICAgICByZXNwb25zZSxcbiAgICAgICAgaWQsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIHtcbiAgICAgICAgICBlbnF1ZXVlVmFsdWU6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgbnVsbCA9PT0gcHJldmlvdXNCbG9ja2VkQ2h1bmtcbiAgICAgICAgICAgICAgPyBjb250cm9sbGVyLmVucXVldWUodmFsdWUpXG4gICAgICAgICAgICAgIDogcHJldmlvdXNCbG9ja2VkQ2h1bmsudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUodmFsdWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZW5xdWV1ZU1vZGVsOiBmdW5jdGlvbiAoanNvbikge1xuICAgICAgICAgICAgaWYgKG51bGwgPT09IHByZXZpb3VzQmxvY2tlZENodW5rKSB7XG4gICAgICAgICAgICAgIHZhciBjaHVuayA9IGNyZWF0ZVJlc29sdmVkTW9kZWxDaHVuayhyZXNwb25zZSwganNvbik7XG4gICAgICAgICAgICAgIGluaXRpYWxpemVNb2RlbENodW5rKGNodW5rKTtcbiAgICAgICAgICAgICAgXCJmdWxmaWxsZWRcIiA9PT0gY2h1bmsuc3RhdHVzXG4gICAgICAgICAgICAgICAgPyBjb250cm9sbGVyLmVucXVldWUoY2h1bmsudmFsdWUpXG4gICAgICAgICAgICAgICAgOiAoY2h1bmsudGhlbihcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udHJvbGxlci5lbnF1ZXVlKHYpO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250cm9sbGVyLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKHByZXZpb3VzQmxvY2tlZENodW5rID0gY2h1bmspKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNodW5rID0gcHJldmlvdXNCbG9ja2VkQ2h1bms7XG4gICAgICAgICAgICAgIHZhciBfY2h1bmszID0gY3JlYXRlUGVuZGluZ0NodW5rKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgX2NodW5rMy50aGVuKFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uICh2KSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gY29udHJvbGxlci5lbnF1ZXVlKHYpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBjb250cm9sbGVyLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcHJldmlvdXNCbG9ja2VkQ2h1bmsgPSBfY2h1bmszO1xuICAgICAgICAgICAgICBjaHVuay50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBwcmV2aW91c0Jsb2NrZWRDaHVuayA9PT0gX2NodW5rMyAmJlxuICAgICAgICAgICAgICAgICAgKHByZXZpb3VzQmxvY2tlZENodW5rID0gbnVsbCk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZU1vZGVsQ2h1bmsocmVzcG9uc2UsIF9jaHVuazMsIGpzb24pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGNsb3NlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoIWNsb3NlZClcbiAgICAgICAgICAgICAgaWYgKCgoY2xvc2VkID0gITApLCBudWxsID09PSBwcmV2aW91c0Jsb2NrZWRDaHVuaykpXG4gICAgICAgICAgICAgICAgY29udHJvbGxlci5jbG9zZSgpO1xuICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgYmxvY2tlZENodW5rID0gcHJldmlvdXNCbG9ja2VkQ2h1bms7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNCbG9ja2VkQ2h1bmsgPSBudWxsO1xuICAgICAgICAgICAgICAgIGJsb2NrZWRDaHVuay50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBjb250cm9sbGVyLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGlmICghY2xvc2VkKVxuICAgICAgICAgICAgICBpZiAoKChjbG9zZWQgPSAhMCksIG51bGwgPT09IHByZXZpb3VzQmxvY2tlZENodW5rKSlcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIGJsb2NrZWRDaHVuayA9IHByZXZpb3VzQmxvY2tlZENodW5rO1xuICAgICAgICAgICAgICAgIHByZXZpb3VzQmxvY2tlZENodW5rID0gbnVsbDtcbiAgICAgICAgICAgICAgICBibG9ja2VkQ2h1bmsudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gY29udHJvbGxlci5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHN0cmVhbVN0YXRlXG4gICAgICApO1xuICAgIH1cbiAgICBmdW5jdGlvbiBhc3luY0l0ZXJhdG9yKCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZUl0ZXJhdG9yKG5leHQpIHtcbiAgICAgIG5leHQgPSB7IG5leHQ6IG5leHQgfTtcbiAgICAgIG5leHRbQVNZTkNfSVRFUkFUT1JdID0gYXN5bmNJdGVyYXRvcjtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH1cbiAgICBmdW5jdGlvbiBzdGFydEFzeW5jSXRlcmFibGUocmVzcG9uc2UsIGlkLCBpdGVyYXRvciwgc3RyZWFtU3RhdGUpIHtcbiAgICAgIHZhciBidWZmZXIgPSBbXSxcbiAgICAgICAgY2xvc2VkID0gITEsXG4gICAgICAgIG5leHRXcml0ZUluZGV4ID0gMCxcbiAgICAgICAgaXRlcmFibGUgPSB7fTtcbiAgICAgIGl0ZXJhYmxlW0FTWU5DX0lURVJBVE9SXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG5leHRSZWFkSW5kZXggPSAwO1xuICAgICAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3IoZnVuY3Rpb24gKGFyZykge1xuICAgICAgICAgIGlmICh2b2lkIDAgIT09IGFyZylcbiAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICBcIlZhbHVlcyBjYW5ub3QgYmUgcGFzc2VkIHRvIG5leHQoKSBvZiBBc3luY0l0ZXJhYmxlcyBwYXNzZWQgdG8gQ2xpZW50IENvbXBvbmVudHMuXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKG5leHRSZWFkSW5kZXggPT09IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChjbG9zZWQpXG4gICAgICAgICAgICAgIHJldHVybiBuZXcgUmVhY3RQcm9taXNlKFxuICAgICAgICAgICAgICAgIFwiZnVsZmlsbGVkXCIsXG4gICAgICAgICAgICAgICAgeyBkb25lOiAhMCwgdmFsdWU6IHZvaWQgMCB9LFxuICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGJ1ZmZlcltuZXh0UmVhZEluZGV4XSA9IGNyZWF0ZVBlbmRpbmdDaHVuayhyZXNwb25zZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBidWZmZXJbbmV4dFJlYWRJbmRleCsrXTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgcmVzb2x2ZVN0cmVhbShcbiAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgIGlkLFxuICAgICAgICBpdGVyYXRvciA/IGl0ZXJhYmxlW0FTWU5DX0lURVJBVE9SXSgpIDogaXRlcmFibGUsXG4gICAgICAgIHtcbiAgICAgICAgICBlbnF1ZXVlVmFsdWU6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKG5leHRXcml0ZUluZGV4ID09PSBidWZmZXIubGVuZ3RoKVxuICAgICAgICAgICAgICBidWZmZXJbbmV4dFdyaXRlSW5kZXhdID0gbmV3IFJlYWN0UHJvbWlzZShcbiAgICAgICAgICAgICAgICBcImZ1bGZpbGxlZFwiLFxuICAgICAgICAgICAgICAgIHsgZG9uZTogITEsIHZhbHVlOiB2YWx1ZSB9LFxuICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICB2YXIgY2h1bmsgPSBidWZmZXJbbmV4dFdyaXRlSW5kZXhdLFxuICAgICAgICAgICAgICAgIHJlc29sdmVMaXN0ZW5lcnMgPSBjaHVuay52YWx1ZSxcbiAgICAgICAgICAgICAgICByZWplY3RMaXN0ZW5lcnMgPSBjaHVuay5yZWFzb247XG4gICAgICAgICAgICAgIGNodW5rLnN0YXR1cyA9IFwiZnVsZmlsbGVkXCI7XG4gICAgICAgICAgICAgIGNodW5rLnZhbHVlID0geyBkb25lOiAhMSwgdmFsdWU6IHZhbHVlIH07XG4gICAgICAgICAgICAgIGNodW5rLnJlYXNvbiA9IG51bGw7XG4gICAgICAgICAgICAgIG51bGwgIT09IHJlc29sdmVMaXN0ZW5lcnMgJiZcbiAgICAgICAgICAgICAgICB3YWtlQ2h1bmtJZkluaXRpYWxpemVkKFxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICBjaHVuayxcbiAgICAgICAgICAgICAgICAgIHJlc29sdmVMaXN0ZW5lcnMsXG4gICAgICAgICAgICAgICAgICByZWplY3RMaXN0ZW5lcnNcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV4dFdyaXRlSW5kZXgrKztcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVucXVldWVNb2RlbDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBuZXh0V3JpdGVJbmRleCA9PT0gYnVmZmVyLmxlbmd0aFxuICAgICAgICAgICAgICA/IChidWZmZXJbbmV4dFdyaXRlSW5kZXhdID0gY3JlYXRlUmVzb2x2ZWRJdGVyYXRvclJlc3VsdENodW5rKFxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICExXG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgOiByZXNvbHZlSXRlcmF0b3JSZXN1bHRDaHVuayhcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgYnVmZmVyW25leHRXcml0ZUluZGV4XSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgITFcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgbmV4dFdyaXRlSW5kZXgrKztcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNsb3NlOiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICghY2xvc2VkKVxuICAgICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICAgIGNsb3NlZCA9ICEwLFxuICAgICAgICAgICAgICAgICAgbmV4dFdyaXRlSW5kZXggPT09IGJ1ZmZlci5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyAoYnVmZmVyW25leHRXcml0ZUluZGV4XSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVSZXNvbHZlZEl0ZXJhdG9yUmVzdWx0Q2h1bmsocmVzcG9uc2UsIHZhbHVlLCAhMCkpXG4gICAgICAgICAgICAgICAgICAgIDogcmVzb2x2ZUl0ZXJhdG9yUmVzdWx0Q2h1bmsoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcltuZXh0V3JpdGVJbmRleF0sXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICEwXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIG5leHRXcml0ZUluZGV4Kys7XG4gICAgICAgICAgICAgICAgbmV4dFdyaXRlSW5kZXggPCBidWZmZXIubGVuZ3RoO1xuXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICByZXNvbHZlSXRlcmF0b3JSZXN1bHRDaHVuayhcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgYnVmZmVyW25leHRXcml0ZUluZGV4KytdLFxuICAgICAgICAgICAgICAgICAgJ1wiJHVuZGVmaW5lZFwiJyxcbiAgICAgICAgICAgICAgICAgICEwXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGlmICghY2xvc2VkKVxuICAgICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICAgIGNsb3NlZCA9ICEwLFxuICAgICAgICAgICAgICAgICAgbmV4dFdyaXRlSW5kZXggPT09IGJ1ZmZlci5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgICAgKGJ1ZmZlcltuZXh0V3JpdGVJbmRleF0gPSBjcmVhdGVQZW5kaW5nQ2h1bmsocmVzcG9uc2UpKTtcbiAgICAgICAgICAgICAgICBuZXh0V3JpdGVJbmRleCA8IGJ1ZmZlci5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHRyaWdnZXJFcnJvck9uQ2h1bmsocmVzcG9uc2UsIGJ1ZmZlcltuZXh0V3JpdGVJbmRleCsrXSwgZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc3RyZWFtU3RhdGVcbiAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlc29sdmVFcnJvckRldihyZXNwb25zZSwgZXJyb3JJbmZvKSB7XG4gICAgICB2YXIgbmFtZSA9IGVycm9ySW5mby5uYW1lLFxuICAgICAgICBtZXNzYWdlID0gZXJyb3JJbmZvLm1lc3NhZ2UsXG4gICAgICAgIHN0YWNrID0gZXJyb3JJbmZvLnN0YWNrLFxuICAgICAgICBlbnYgPSBlcnJvckluZm8uZW52LFxuICAgICAgICBlcnJvck9wdGlvbnMgPVxuICAgICAgICAgIFwiY2F1c2VcIiBpbiBlcnJvckluZm9cbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIGNhdXNlOiByZXZpdmVNb2RlbChcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgZXJyb3JJbmZvLmNhdXNlLFxuICAgICAgICAgICAgICAgICAgZXJyb3JJbmZvLFxuICAgICAgICAgICAgICAgICAgXCJjYXVzZVwiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHZvaWQgMDtcbiAgICAgIG1lc3NhZ2UgPSBidWlsZEZha2VDYWxsU3RhY2soXG4gICAgICAgIHJlc3BvbnNlLFxuICAgICAgICBzdGFjayxcbiAgICAgICAgZW52LFxuICAgICAgICAhMSxcbiAgICAgICAgRXJyb3IuYmluZChcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIG1lc3NhZ2UgfHxcbiAgICAgICAgICAgIFwiQW4gZXJyb3Igb2NjdXJyZWQgaW4gdGhlIFNlcnZlciBDb21wb25lbnRzIHJlbmRlciBidXQgbm8gbWVzc2FnZSB3YXMgcHJvdmlkZWRcIixcbiAgICAgICAgICBlcnJvck9wdGlvbnNcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHN0YWNrID0gbnVsbDtcbiAgICAgIG51bGwgIT0gZXJyb3JJbmZvLm93bmVyICYmXG4gICAgICAgICgoZXJyb3JJbmZvID0gZXJyb3JJbmZvLm93bmVyLnNsaWNlKDEpKSxcbiAgICAgICAgKGVycm9ySW5mbyA9IGdldE91dGxpbmVkTW9kZWwoXG4gICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgZXJyb3JJbmZvLFxuICAgICAgICAgIHt9LFxuICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgY3JlYXRlTW9kZWxcbiAgICAgICAgKSksXG4gICAgICAgIG51bGwgIT09IGVycm9ySW5mbyAmJlxuICAgICAgICAgIChzdGFjayA9IGluaXRpYWxpemVGYWtlVGFzayhyZXNwb25zZSwgZXJyb3JJbmZvKSkpO1xuICAgICAgbnVsbCA9PT0gc3RhY2tcbiAgICAgICAgPyAoKHJlc3BvbnNlID0gZ2V0Um9vdFRhc2socmVzcG9uc2UsIGVudikpLFxuICAgICAgICAgIChyZXNwb25zZSA9IG51bGwgIT0gcmVzcG9uc2UgPyByZXNwb25zZS5ydW4obWVzc2FnZSkgOiBtZXNzYWdlKCkpKVxuICAgICAgICA6IChyZXNwb25zZSA9IHN0YWNrLnJ1bihtZXNzYWdlKSk7XG4gICAgICByZXNwb25zZS5uYW1lID0gbmFtZTtcbiAgICAgIHJlc3BvbnNlLmVudmlyb25tZW50TmFtZSA9IGVudjtcbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlRmFrZUZ1bmN0aW9uKFxuICAgICAgbmFtZSxcbiAgICAgIGZpbGVuYW1lLFxuICAgICAgc291cmNlTWFwLFxuICAgICAgbGluZSxcbiAgICAgIGNvbCxcbiAgICAgIGVuY2xvc2luZ0xpbmUsXG4gICAgICBlbmNsb3NpbmdDb2wsXG4gICAgICBlbnZpcm9ubWVudE5hbWVcbiAgICApIHtcbiAgICAgIG5hbWUgfHwgKG5hbWUgPSBcIjxhbm9ueW1vdXM+XCIpO1xuICAgICAgdmFyIGVuY29kZWROYW1lID0gSlNPTi5zdHJpbmdpZnkobmFtZSk7XG4gICAgICAxID4gZW5jbG9zaW5nTGluZSA/IChlbmNsb3NpbmdMaW5lID0gMCkgOiBlbmNsb3NpbmdMaW5lLS07XG4gICAgICAxID4gZW5jbG9zaW5nQ29sID8gKGVuY2xvc2luZ0NvbCA9IDApIDogZW5jbG9zaW5nQ29sLS07XG4gICAgICAxID4gbGluZSA/IChsaW5lID0gMCkgOiBsaW5lLS07XG4gICAgICAxID4gY29sID8gKGNvbCA9IDApIDogY29sLS07XG4gICAgICBpZiAoXG4gICAgICAgIGxpbmUgPCBlbmNsb3NpbmdMaW5lIHx8XG4gICAgICAgIChsaW5lID09PSBlbmNsb3NpbmdMaW5lICYmIGNvbCA8IGVuY2xvc2luZ0NvbClcbiAgICAgIClcbiAgICAgICAgZW5jbG9zaW5nQ29sID0gZW5jbG9zaW5nTGluZSA9IDA7XG4gICAgICAxID4gbGluZVxuICAgICAgICA/ICgobGluZSA9IGVuY29kZWROYW1lLmxlbmd0aCArIDMpLFxuICAgICAgICAgIChlbmNsb3NpbmdDb2wgLT0gbGluZSksXG4gICAgICAgICAgMCA+IGVuY2xvc2luZ0NvbCAmJiAoZW5jbG9zaW5nQ29sID0gMCksXG4gICAgICAgICAgKGNvbCA9IGNvbCAtIGVuY2xvc2luZ0NvbCAtIGxpbmUgLSAzKSxcbiAgICAgICAgICAwID4gY29sICYmIChjb2wgPSAwKSxcbiAgICAgICAgICAoZW5jb2RlZE5hbWUgPVxuICAgICAgICAgICAgXCIoe1wiICtcbiAgICAgICAgICAgIGVuY29kZWROYW1lICtcbiAgICAgICAgICAgIFwiOlwiICtcbiAgICAgICAgICAgIFwiIFwiLnJlcGVhdChlbmNsb3NpbmdDb2wpICtcbiAgICAgICAgICAgIFwiXz0+XCIgK1xuICAgICAgICAgICAgXCIgXCIucmVwZWF0KGNvbCkgK1xuICAgICAgICAgICAgXCJfKCl9KVwiKSlcbiAgICAgICAgOiAxID4gZW5jbG9zaW5nTGluZVxuICAgICAgICAgID8gKChlbmNsb3NpbmdDb2wgLT0gZW5jb2RlZE5hbWUubGVuZ3RoICsgMyksXG4gICAgICAgICAgICAwID4gZW5jbG9zaW5nQ29sICYmIChlbmNsb3NpbmdDb2wgPSAwKSxcbiAgICAgICAgICAgIChlbmNvZGVkTmFtZSA9XG4gICAgICAgICAgICAgIFwiKHtcIiArXG4gICAgICAgICAgICAgIGVuY29kZWROYW1lICtcbiAgICAgICAgICAgICAgXCI6XCIgK1xuICAgICAgICAgICAgICBcIiBcIi5yZXBlYXQoZW5jbG9zaW5nQ29sKSArXG4gICAgICAgICAgICAgIFwiXz0+XCIgK1xuICAgICAgICAgICAgICBcIlxcblwiLnJlcGVhdChsaW5lIC0gZW5jbG9zaW5nTGluZSkgK1xuICAgICAgICAgICAgICBcIiBcIi5yZXBlYXQoY29sKSArXG4gICAgICAgICAgICAgIFwiXygpfSlcIikpXG4gICAgICAgICAgOiBlbmNsb3NpbmdMaW5lID09PSBsaW5lXG4gICAgICAgICAgICA/ICgoY29sID0gY29sIC0gZW5jbG9zaW5nQ29sIC0gMyksXG4gICAgICAgICAgICAgIDAgPiBjb2wgJiYgKGNvbCA9IDApLFxuICAgICAgICAgICAgICAoZW5jb2RlZE5hbWUgPVxuICAgICAgICAgICAgICAgIFwiXFxuXCIucmVwZWF0KGVuY2xvc2luZ0xpbmUgLSAxKSArXG4gICAgICAgICAgICAgICAgXCIoe1wiICtcbiAgICAgICAgICAgICAgICBlbmNvZGVkTmFtZSArXG4gICAgICAgICAgICAgICAgXCI6XFxuXCIgK1xuICAgICAgICAgICAgICAgIFwiIFwiLnJlcGVhdChlbmNsb3NpbmdDb2wpICtcbiAgICAgICAgICAgICAgICBcIl89PlwiICtcbiAgICAgICAgICAgICAgICBcIiBcIi5yZXBlYXQoY29sKSArXG4gICAgICAgICAgICAgICAgXCJfKCl9KVwiKSlcbiAgICAgICAgICAgIDogKGVuY29kZWROYW1lID1cbiAgICAgICAgICAgICAgICBcIlxcblwiLnJlcGVhdChlbmNsb3NpbmdMaW5lIC0gMSkgK1xuICAgICAgICAgICAgICAgIFwiKHtcIiArXG4gICAgICAgICAgICAgICAgZW5jb2RlZE5hbWUgK1xuICAgICAgICAgICAgICAgIFwiOlxcblwiICtcbiAgICAgICAgICAgICAgICBcIiBcIi5yZXBlYXQoZW5jbG9zaW5nQ29sKSArXG4gICAgICAgICAgICAgICAgXCJfPT5cIiArXG4gICAgICAgICAgICAgICAgXCJcXG5cIi5yZXBlYXQobGluZSAtIGVuY2xvc2luZ0xpbmUpICtcbiAgICAgICAgICAgICAgICBcIiBcIi5yZXBlYXQoY29sKSArXG4gICAgICAgICAgICAgICAgXCJfKCl9KVwiKTtcbiAgICAgIGVuY29kZWROYW1lID1cbiAgICAgICAgMSA+IGVuY2xvc2luZ0xpbmVcbiAgICAgICAgICA/IGVuY29kZWROYW1lICtcbiAgICAgICAgICAgIFwiXFxuLyogVGhpcyBtb2R1bGUgd2FzIHJlbmRlcmVkIGJ5IGEgU2VydmVyIENvbXBvbmVudC4gVHVybiBvbiBTb3VyY2UgTWFwcyB0byBzZWUgdGhlIHNlcnZlciBzb3VyY2UuICovXCJcbiAgICAgICAgICA6IFwiLyogVGhpcyBtb2R1bGUgd2FzIHJlbmRlcmVkIGJ5IGEgU2VydmVyIENvbXBvbmVudC4gVHVybiBvbiBTb3VyY2UgTWFwcyB0byBzZWUgdGhlIHNlcnZlciBzb3VyY2UuICovXCIgK1xuICAgICAgICAgICAgZW5jb2RlZE5hbWU7XG4gICAgICBmaWxlbmFtZS5zdGFydHNXaXRoKFwiL1wiKSAmJiAoZmlsZW5hbWUgPSBcImZpbGU6Ly9cIiArIGZpbGVuYW1lKTtcbiAgICAgIHNvdXJjZU1hcFxuICAgICAgICA/ICgoZW5jb2RlZE5hbWUgKz1cbiAgICAgICAgICAgIFwiXFxuLy8jIHNvdXJjZVVSTD1hYm91dDovL1JlYWN0L1wiICtcbiAgICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChlbnZpcm9ubWVudE5hbWUpICtcbiAgICAgICAgICAgIFwiL1wiICtcbiAgICAgICAgICAgIGVuY29kZVVSSShmaWxlbmFtZSkgK1xuICAgICAgICAgICAgXCI/XCIgK1xuICAgICAgICAgICAgZmFrZUZ1bmN0aW9uSWR4KyspLFxuICAgICAgICAgIChlbmNvZGVkTmFtZSArPSBcIlxcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVwiICsgc291cmNlTWFwKSlcbiAgICAgICAgOiAoZW5jb2RlZE5hbWUgPSBmaWxlbmFtZVxuICAgICAgICAgICAgPyBlbmNvZGVkTmFtZSArIChcIlxcbi8vIyBzb3VyY2VVUkw9XCIgKyBlbmNvZGVVUkkoZmlsZW5hbWUpKVxuICAgICAgICAgICAgOiBlbmNvZGVkTmFtZSArIFwiXFxuLy8jIHNvdXJjZVVSTD08YW5vbnltb3VzPlwiKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBmbiA9ICgwLCBldmFsKShlbmNvZGVkTmFtZSlbbmFtZV07XG4gICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgIChmbiA9IGZ1bmN0aW9uIChfKSB7XG4gICAgICAgICAgcmV0dXJuIF8oKTtcbiAgICAgICAgfSksXG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZuLCBcIm5hbWVcIiwgeyB2YWx1ZTogbmFtZSB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmbjtcbiAgICB9XG4gICAgZnVuY3Rpb24gYnVpbGRGYWtlQ2FsbFN0YWNrKFxuICAgICAgcmVzcG9uc2UsXG4gICAgICBzdGFjayxcbiAgICAgIGVudmlyb25tZW50TmFtZSxcbiAgICAgIHVzZUVuY2xvc2luZ0xpbmUsXG4gICAgICBpbm5lckNhbGxcbiAgICApIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhY2subGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGZyYW1lID0gc3RhY2tbaV0sXG4gICAgICAgICAgZnJhbWVLZXkgPVxuICAgICAgICAgICAgZnJhbWUuam9pbihcIi1cIikgK1xuICAgICAgICAgICAgXCItXCIgK1xuICAgICAgICAgICAgZW52aXJvbm1lbnROYW1lICtcbiAgICAgICAgICAgICh1c2VFbmNsb3NpbmdMaW5lID8gXCItZVwiIDogXCItblwiKSxcbiAgICAgICAgICBmbiA9IGZha2VGdW5jdGlvbkNhY2hlLmdldChmcmFtZUtleSk7XG4gICAgICAgIGlmICh2b2lkIDAgPT09IGZuKSB7XG4gICAgICAgICAgZm4gPSBmcmFtZVswXTtcbiAgICAgICAgICB2YXIgZmlsZW5hbWUgPSBmcmFtZVsxXSxcbiAgICAgICAgICAgIGxpbmUgPSBmcmFtZVsyXSxcbiAgICAgICAgICAgIGNvbCA9IGZyYW1lWzNdLFxuICAgICAgICAgICAgZW5jbG9zaW5nTGluZSA9IGZyYW1lWzRdO1xuICAgICAgICAgIGZyYW1lID0gZnJhbWVbNV07XG4gICAgICAgICAgdmFyIGZpbmRTb3VyY2VNYXBVUkwgPSByZXNwb25zZS5fZGVidWdGaW5kU291cmNlTWFwVVJMO1xuICAgICAgICAgIGZpbmRTb3VyY2VNYXBVUkwgPSBmaW5kU291cmNlTWFwVVJMXG4gICAgICAgICAgICA/IGZpbmRTb3VyY2VNYXBVUkwoZmlsZW5hbWUsIGVudmlyb25tZW50TmFtZSlcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICBmbiA9IGNyZWF0ZUZha2VGdW5jdGlvbihcbiAgICAgICAgICAgIGZuLFxuICAgICAgICAgICAgZmlsZW5hbWUsXG4gICAgICAgICAgICBmaW5kU291cmNlTWFwVVJMLFxuICAgICAgICAgICAgbGluZSxcbiAgICAgICAgICAgIGNvbCxcbiAgICAgICAgICAgIHVzZUVuY2xvc2luZ0xpbmUgPyBsaW5lIDogZW5jbG9zaW5nTGluZSxcbiAgICAgICAgICAgIHVzZUVuY2xvc2luZ0xpbmUgPyBjb2wgOiBmcmFtZSxcbiAgICAgICAgICAgIGVudmlyb25tZW50TmFtZVxuICAgICAgICAgICk7XG4gICAgICAgICAgZmFrZUZ1bmN0aW9uQ2FjaGUuc2V0KGZyYW1lS2V5LCBmbik7XG4gICAgICAgIH1cbiAgICAgICAgaW5uZXJDYWxsID0gZm4uYmluZChudWxsLCBpbm5lckNhbGwpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlubmVyQ2FsbDtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0Um9vdFRhc2socmVzcG9uc2UsIGNoaWxkRW52aXJvbm1lbnROYW1lKSB7XG4gICAgICB2YXIgcm9vdFRhc2sgPSByZXNwb25zZS5fZGVidWdSb290VGFzaztcbiAgICAgIHJldHVybiByb290VGFza1xuICAgICAgICA/IHJlc3BvbnNlLl9yb290RW52aXJvbm1lbnROYW1lICE9PSBjaGlsZEVudmlyb25tZW50TmFtZVxuICAgICAgICAgID8gKChyZXNwb25zZSA9IGNvbnNvbGUuY3JlYXRlVGFzay5iaW5kKFxuICAgICAgICAgICAgICBjb25zb2xlLFxuICAgICAgICAgICAgICAnXCJ1c2UgJyArIGNoaWxkRW52aXJvbm1lbnROYW1lLnRvTG93ZXJDYXNlKCkgKyAnXCInXG4gICAgICAgICAgICApKSxcbiAgICAgICAgICAgIHJvb3RUYXNrLnJ1bihyZXNwb25zZSkpXG4gICAgICAgICAgOiByb290VGFza1xuICAgICAgICA6IG51bGw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGluaXRpYWxpemVGYWtlVGFzayhyZXNwb25zZSwgZGVidWdJbmZvKSB7XG4gICAgICBpZiAoIXN1cHBvcnRzQ3JlYXRlVGFzayB8fCBudWxsID09IGRlYnVnSW5mby5zdGFjaykgcmV0dXJuIG51bGw7XG4gICAgICB2YXIgY2FjaGVkRW50cnkgPSBkZWJ1Z0luZm8uZGVidWdUYXNrO1xuICAgICAgaWYgKHZvaWQgMCAhPT0gY2FjaGVkRW50cnkpIHJldHVybiBjYWNoZWRFbnRyeTtcbiAgICAgIHZhciB1c2VFbmNsb3NpbmdMaW5lID0gdm9pZCAwID09PSBkZWJ1Z0luZm8ua2V5LFxuICAgICAgICBzdGFjayA9IGRlYnVnSW5mby5zdGFjayxcbiAgICAgICAgZW52ID1cbiAgICAgICAgICBudWxsID09IGRlYnVnSW5mby5lbnYgPyByZXNwb25zZS5fcm9vdEVudmlyb25tZW50TmFtZSA6IGRlYnVnSW5mby5lbnY7XG4gICAgICBjYWNoZWRFbnRyeSA9XG4gICAgICAgIG51bGwgPT0gZGVidWdJbmZvLm93bmVyIHx8IG51bGwgPT0gZGVidWdJbmZvLm93bmVyLmVudlxuICAgICAgICAgID8gcmVzcG9uc2UuX3Jvb3RFbnZpcm9ubWVudE5hbWVcbiAgICAgICAgICA6IGRlYnVnSW5mby5vd25lci5lbnY7XG4gICAgICB2YXIgb3duZXJUYXNrID1cbiAgICAgICAgbnVsbCA9PSBkZWJ1Z0luZm8ub3duZXJcbiAgICAgICAgICA/IG51bGxcbiAgICAgICAgICA6IGluaXRpYWxpemVGYWtlVGFzayhyZXNwb25zZSwgZGVidWdJbmZvLm93bmVyKTtcbiAgICAgIGVudiA9XG4gICAgICAgIGVudiAhPT0gY2FjaGVkRW50cnlcbiAgICAgICAgICA/ICdcInVzZSAnICsgZW52LnRvTG93ZXJDYXNlKCkgKyAnXCInXG4gICAgICAgICAgOiB2b2lkIDAgIT09IGRlYnVnSW5mby5rZXlcbiAgICAgICAgICAgID8gXCI8XCIgKyAoZGVidWdJbmZvLm5hbWUgfHwgXCIuLi5cIikgKyBcIj5cIlxuICAgICAgICAgICAgOiB2b2lkIDAgIT09IGRlYnVnSW5mby5uYW1lXG4gICAgICAgICAgICAgID8gZGVidWdJbmZvLm5hbWUgfHwgXCJ1bmtub3duXCJcbiAgICAgICAgICAgICAgOiBcImF3YWl0IFwiICsgKGRlYnVnSW5mby5hd2FpdGVkLm5hbWUgfHwgXCJ1bmtub3duXCIpO1xuICAgICAgZW52ID0gY29uc29sZS5jcmVhdGVUYXNrLmJpbmQoY29uc29sZSwgZW52KTtcbiAgICAgIHVzZUVuY2xvc2luZ0xpbmUgPSBidWlsZEZha2VDYWxsU3RhY2soXG4gICAgICAgIHJlc3BvbnNlLFxuICAgICAgICBzdGFjayxcbiAgICAgICAgY2FjaGVkRW50cnksXG4gICAgICAgIHVzZUVuY2xvc2luZ0xpbmUsXG4gICAgICAgIGVudlxuICAgICAgKTtcbiAgICAgIG51bGwgPT09IG93bmVyVGFza1xuICAgICAgICA/ICgocmVzcG9uc2UgPSBnZXRSb290VGFzayhyZXNwb25zZSwgY2FjaGVkRW50cnkpKSxcbiAgICAgICAgICAocmVzcG9uc2UgPVxuICAgICAgICAgICAgbnVsbCAhPSByZXNwb25zZVxuICAgICAgICAgICAgICA/IHJlc3BvbnNlLnJ1bih1c2VFbmNsb3NpbmdMaW5lKVxuICAgICAgICAgICAgICA6IHVzZUVuY2xvc2luZ0xpbmUoKSkpXG4gICAgICAgIDogKHJlc3BvbnNlID0gb3duZXJUYXNrLnJ1bih1c2VFbmNsb3NpbmdMaW5lKSk7XG4gICAgICByZXR1cm4gKGRlYnVnSW5mby5kZWJ1Z1Rhc2sgPSByZXNwb25zZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZha2VKU1hDYWxsU2l0ZSgpIHtcbiAgICAgIHJldHVybiBFcnJvcihcInJlYWN0LXN0YWNrLXRvcC1mcmFtZVwiKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaW5pdGlhbGl6ZUZha2VTdGFjayhyZXNwb25zZSwgZGVidWdJbmZvKSB7XG4gICAgICBpZiAodm9pZCAwID09PSBkZWJ1Z0luZm8uZGVidWdTdGFjaykge1xuICAgICAgICBudWxsICE9IGRlYnVnSW5mby5zdGFjayAmJlxuICAgICAgICAgIChkZWJ1Z0luZm8uZGVidWdTdGFjayA9IGNyZWF0ZUZha2VKU1hDYWxsU3RhY2tJbkRFVihcbiAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgZGVidWdJbmZvLnN0YWNrLFxuICAgICAgICAgICAgbnVsbCA9PSBkZWJ1Z0luZm8uZW52ID8gXCJcIiA6IGRlYnVnSW5mby5lbnZcbiAgICAgICAgICApKTtcbiAgICAgICAgdmFyIG93bmVyID0gZGVidWdJbmZvLm93bmVyO1xuICAgICAgICBudWxsICE9IG93bmVyICYmXG4gICAgICAgICAgKGluaXRpYWxpemVGYWtlU3RhY2socmVzcG9uc2UsIG93bmVyKSxcbiAgICAgICAgICB2b2lkIDAgPT09IG93bmVyLmRlYnVnTG9jYXRpb24gJiZcbiAgICAgICAgICAgIG51bGwgIT0gZGVidWdJbmZvLmRlYnVnU3RhY2sgJiZcbiAgICAgICAgICAgIChvd25lci5kZWJ1Z0xvY2F0aW9uID0gZGVidWdJbmZvLmRlYnVnU3RhY2spKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaW5pdGlhbGl6ZURlYnVnSW5mbyhyZXNwb25zZSwgZGVidWdJbmZvKSB7XG4gICAgICB2b2lkIDAgIT09IGRlYnVnSW5mby5zdGFjayAmJiBpbml0aWFsaXplRmFrZVRhc2socmVzcG9uc2UsIGRlYnVnSW5mbyk7XG4gICAgICBpZiAobnVsbCA9PSBkZWJ1Z0luZm8ub3duZXIgJiYgbnVsbCAhPSByZXNwb25zZS5fZGVidWdSb290T3duZXIpIHtcbiAgICAgICAgdmFyIF9jb21wb25lbnRJbmZvT3JBc3luY0luZm8gPSBkZWJ1Z0luZm87XG4gICAgICAgIF9jb21wb25lbnRJbmZvT3JBc3luY0luZm8ub3duZXIgPSByZXNwb25zZS5fZGVidWdSb290T3duZXI7XG4gICAgICAgIF9jb21wb25lbnRJbmZvT3JBc3luY0luZm8uc3RhY2sgPSBudWxsO1xuICAgICAgICBfY29tcG9uZW50SW5mb09yQXN5bmNJbmZvLmRlYnVnU3RhY2sgPSByZXNwb25zZS5fZGVidWdSb290U3RhY2s7XG4gICAgICAgIF9jb21wb25lbnRJbmZvT3JBc3luY0luZm8uZGVidWdUYXNrID0gcmVzcG9uc2UuX2RlYnVnUm9vdFRhc2s7XG4gICAgICB9IGVsc2VcbiAgICAgICAgdm9pZCAwICE9PSBkZWJ1Z0luZm8uc3RhY2sgJiYgaW5pdGlhbGl6ZUZha2VTdGFjayhyZXNwb25zZSwgZGVidWdJbmZvKTtcbiAgICAgIFwibnVtYmVyXCIgPT09IHR5cGVvZiBkZWJ1Z0luZm8udGltZSAmJlxuICAgICAgICAoZGVidWdJbmZvID0geyB0aW1lOiBkZWJ1Z0luZm8udGltZSArIHJlc3BvbnNlLl90aW1lT3JpZ2luIH0pO1xuICAgICAgcmV0dXJuIGRlYnVnSW5mbztcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0Q3VycmVudFN0YWNrSW5ERVYoKSB7XG4gICAgICB2YXIgb3duZXIgPSBjdXJyZW50T3duZXJJbkRFVjtcbiAgICAgIGlmIChudWxsID09PSBvd25lcikgcmV0dXJuIFwiXCI7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgaW5mbyA9IFwiXCI7XG4gICAgICAgIGlmIChvd25lci5vd25lciB8fCBcInN0cmluZ1wiICE9PSB0eXBlb2Ygb3duZXIubmFtZSkge1xuICAgICAgICAgIGZvciAoOyBvd25lcjsgKSB7XG4gICAgICAgICAgICB2YXIgb3duZXJTdGFjayA9IG93bmVyLmRlYnVnU3RhY2s7XG4gICAgICAgICAgICBpZiAobnVsbCAhPSBvd25lclN0YWNrKSB7XG4gICAgICAgICAgICAgIGlmICgob3duZXIgPSBvd25lci5vd25lcikpIHtcbiAgICAgICAgICAgICAgICB2YXIgSlNDb21waWxlcl90ZW1wX2NvbnN0ID0gaW5mbztcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3IgPSBvd25lclN0YWNrLFxuICAgICAgICAgICAgICAgICAgcHJldlByZXBhcmVTdGFja1RyYWNlID0gRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7XG4gICAgICAgICAgICAgICAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBwcmVwYXJlU3RhY2tUcmFjZTtcbiAgICAgICAgICAgICAgICB2YXIgc3RhY2sgPSBlcnJvci5zdGFjaztcbiAgICAgICAgICAgICAgICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHByZXZQcmVwYXJlU3RhY2tUcmFjZTtcbiAgICAgICAgICAgICAgICBzdGFjay5zdGFydHNXaXRoKFwiRXJyb3I6IHJlYWN0LXN0YWNrLXRvcC1mcmFtZVxcblwiKSAmJlxuICAgICAgICAgICAgICAgICAgKHN0YWNrID0gc3RhY2suc2xpY2UoMjkpKTtcbiAgICAgICAgICAgICAgICB2YXIgaWR4ID0gc3RhY2suaW5kZXhPZihcIlxcblwiKTtcbiAgICAgICAgICAgICAgICAtMSAhPT0gaWR4ICYmIChzdGFjayA9IHN0YWNrLnNsaWNlKGlkeCArIDEpKTtcbiAgICAgICAgICAgICAgICBpZHggPSBzdGFjay5pbmRleE9mKFwicmVhY3Rfc3RhY2tfYm90dG9tX2ZyYW1lXCIpO1xuICAgICAgICAgICAgICAgIC0xICE9PSBpZHggJiYgKGlkeCA9IHN0YWNrLmxhc3RJbmRleE9mKFwiXFxuXCIsIGlkeCkpO1xuICAgICAgICAgICAgICAgIHZhciBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPVxuICAgICAgICAgICAgICAgICAgLTEgIT09IGlkeCA/IChzdGFjayA9IHN0YWNrLnNsaWNlKDAsIGlkeCkpIDogXCJcIjtcbiAgICAgICAgICAgICAgICBpbmZvID1cbiAgICAgICAgICAgICAgICAgIEpTQ29tcGlsZXJfdGVtcF9jb25zdCArIChcIlxcblwiICsgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQwID0gaW5mbztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBKU0NvbXBpbGVyX3RlbXBfY29uc3QgPSBvd25lci5uYW1lO1xuICAgICAgICAgIGlmICh2b2lkIDAgPT09IHByZWZpeClcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHRocm93IEVycm9yKCk7XG4gICAgICAgICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgICAgICAgIChwcmVmaXggPVxuICAgICAgICAgICAgICAgICgoZXJyb3IgPSB4LnN0YWNrLnRyaW0oKS5tYXRjaCgvXFxuKCAqKGF0ICk/KS8pKSAmJiBlcnJvclsxXSkgfHxcbiAgICAgICAgICAgICAgICBcIlwiKSxcbiAgICAgICAgICAgICAgICAoc3VmZml4ID1cbiAgICAgICAgICAgICAgICAgIC0xIDwgeC5zdGFjay5pbmRleE9mKFwiXFxuICAgIGF0XCIpXG4gICAgICAgICAgICAgICAgICAgID8gXCIgKDxhbm9ueW1vdXM+KVwiXG4gICAgICAgICAgICAgICAgICAgIDogLTEgPCB4LnN0YWNrLmluZGV4T2YoXCJAXCIpXG4gICAgICAgICAgICAgICAgICAgICAgPyBcIkB1bmtub3duOjA6MFwiXG4gICAgICAgICAgICAgICAgICAgICAgOiBcIlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDAgPVxuICAgICAgICAgICAgXCJcXG5cIiArIHByZWZpeCArIEpTQ29tcGlsZXJfdGVtcF9jb25zdCArIHN1ZmZpeDtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDAgPVxuICAgICAgICAgIFwiXFxuRXJyb3IgZ2VuZXJhdGluZyBzdGFjazogXCIgKyB4Lm1lc3NhZ2UgKyBcIlxcblwiICsgeC5zdGFjaztcbiAgICAgIH1cbiAgICAgIHJldHVybiBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlc29sdmVDb25zb2xlRW50cnkocmVzcG9uc2UsIGpzb24pIHtcbiAgICAgIGlmIChyZXNwb25zZS5fcmVwbGF5Q29uc29sZSkge1xuICAgICAgICB2YXIgYmxvY2tlZENodW5rID0gcmVzcG9uc2UuX2Jsb2NrZWRDb25zb2xlO1xuICAgICAgICBpZiAobnVsbCA9PSBibG9ja2VkQ2h1bmspXG4gICAgICAgICAgKGJsb2NrZWRDaHVuayA9IGNyZWF0ZVJlc29sdmVkTW9kZWxDaHVuayhyZXNwb25zZSwganNvbikpLFxuICAgICAgICAgICAgaW5pdGlhbGl6ZU1vZGVsQ2h1bmsoYmxvY2tlZENodW5rKSxcbiAgICAgICAgICAgIFwiZnVsZmlsbGVkXCIgPT09IGJsb2NrZWRDaHVuay5zdGF0dXNcbiAgICAgICAgICAgICAgPyByZXBsYXlDb25zb2xlV2l0aENhbGxTdGFja0luREVWKHJlc3BvbnNlLCBibG9ja2VkQ2h1bmsudmFsdWUpXG4gICAgICAgICAgICAgIDogKGJsb2NrZWRDaHVuay50aGVuKFxuICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcGxheUNvbnNvbGVXaXRoQ2FsbFN0YWNrSW5ERVYocmVzcG9uc2UsIHYpO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHt9XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAocmVzcG9uc2UuX2Jsb2NrZWRDb25zb2xlID0gYmxvY2tlZENodW5rKSk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHZhciBfY2h1bms0ID0gY3JlYXRlUGVuZGluZ0NodW5rKHJlc3BvbnNlKTtcbiAgICAgICAgICBfY2h1bms0LnRoZW4oXG4gICAgICAgICAgICBmdW5jdGlvbiAodikge1xuICAgICAgICAgICAgICByZXR1cm4gcmVwbGF5Q29uc29sZVdpdGhDYWxsU3RhY2tJbkRFVihyZXNwb25zZSwgdik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZnVuY3Rpb24gKCkge31cbiAgICAgICAgICApO1xuICAgICAgICAgIHJlc3BvbnNlLl9ibG9ja2VkQ29uc29sZSA9IF9jaHVuazQ7XG4gICAgICAgICAgdmFyIHVuYmxvY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXNwb25zZS5fYmxvY2tlZENvbnNvbGUgPT09IF9jaHVuazQgJiZcbiAgICAgICAgICAgICAgKHJlc3BvbnNlLl9ibG9ja2VkQ29uc29sZSA9IG51bGwpO1xuICAgICAgICAgICAgcmVzb2x2ZU1vZGVsQ2h1bmsocmVzcG9uc2UsIF9jaHVuazQsIGpzb24pO1xuICAgICAgICAgIH07XG4gICAgICAgICAgYmxvY2tlZENodW5rLnRoZW4odW5ibG9jaywgdW5ibG9jayk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaW5pdGlhbGl6ZUlPSW5mbyhyZXNwb25zZSwgaW9JbmZvKSB7XG4gICAgICB2b2lkIDAgIT09IGlvSW5mby5zdGFjayAmJlxuICAgICAgICAoaW5pdGlhbGl6ZUZha2VUYXNrKHJlc3BvbnNlLCBpb0luZm8pLFxuICAgICAgICBpbml0aWFsaXplRmFrZVN0YWNrKHJlc3BvbnNlLCBpb0luZm8pKTtcbiAgICAgIGlvSW5mby5zdGFydCArPSByZXNwb25zZS5fdGltZU9yaWdpbjtcbiAgICAgIGlvSW5mby5lbmQgKz0gcmVzcG9uc2UuX3RpbWVPcmlnaW47XG4gICAgICBpZiAocmVzcG9uc2UuX3JlcGxheUNvbnNvbGUpIHtcbiAgICAgICAgcmVzcG9uc2UgPSByZXNwb25zZS5fcm9vdEVudmlyb25tZW50TmFtZTtcbiAgICAgICAgdmFyIHByb21pc2UgPSBpb0luZm8udmFsdWU7XG4gICAgICAgIGlmIChwcm9taXNlKVxuICAgICAgICAgIHN3aXRjaCAocHJvbWlzZS5zdGF0dXMpIHtcbiAgICAgICAgICAgIGNhc2UgXCJmdWxmaWxsZWRcIjpcbiAgICAgICAgICAgICAgbG9nSU9JbmZvKGlvSW5mbywgcmVzcG9uc2UsIHByb21pc2UudmFsdWUpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJyZWplY3RlZFwiOlxuICAgICAgICAgICAgICBsb2dJT0luZm9FcnJvcmVkKGlvSW5mbywgcmVzcG9uc2UsIHByb21pc2UucmVhc29uKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oXG4gICAgICAgICAgICAgICAgbG9nSU9JbmZvLmJpbmQobnVsbCwgaW9JbmZvLCByZXNwb25zZSksXG4gICAgICAgICAgICAgICAgbG9nSU9JbmZvRXJyb3JlZC5iaW5kKG51bGwsIGlvSW5mbywgcmVzcG9uc2UpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICBlbHNlIGxvZ0lPSW5mbyhpb0luZm8sIHJlc3BvbnNlLCB2b2lkIDApO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiByZXNvbHZlSU9JbmZvKHJlc3BvbnNlLCBpZCwgbW9kZWwpIHtcbiAgICAgIHZhciBjaHVua3MgPSByZXNwb25zZS5fY2h1bmtzLFxuICAgICAgICBjaHVuayA9IGNodW5rcy5nZXQoaWQpLFxuICAgICAgICBwcmV2SXNJbml0aWFsaXppbmdEZWJ1Z0luZm8gPSBpc0luaXRpYWxpemluZ0RlYnVnSW5mbztcbiAgICAgIGlzSW5pdGlhbGl6aW5nRGVidWdJbmZvID0gITA7XG4gICAgICB0cnkge1xuICAgICAgICBjaHVua1xuICAgICAgICAgID8gKHJlc29sdmVNb2RlbENodW5rKHJlc3BvbnNlLCBjaHVuaywgbW9kZWwpLFxuICAgICAgICAgICAgXCJyZXNvbHZlZF9tb2RlbFwiID09PSBjaHVuay5zdGF0dXMgJiYgaW5pdGlhbGl6ZU1vZGVsQ2h1bmsoY2h1bmspKVxuICAgICAgICAgIDogKChjaHVuayA9IGNyZWF0ZVJlc29sdmVkTW9kZWxDaHVuayhyZXNwb25zZSwgbW9kZWwpKSxcbiAgICAgICAgICAgIGNodW5rcy5zZXQoaWQsIGNodW5rKSxcbiAgICAgICAgICAgIGluaXRpYWxpemVNb2RlbENodW5rKGNodW5rKSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpc0luaXRpYWxpemluZ0RlYnVnSW5mbyA9IHByZXZJc0luaXRpYWxpemluZ0RlYnVnSW5mbztcbiAgICAgIH1cbiAgICAgIFwiZnVsZmlsbGVkXCIgPT09IGNodW5rLnN0YXR1c1xuICAgICAgICA/IGluaXRpYWxpemVJT0luZm8ocmVzcG9uc2UsIGNodW5rLnZhbHVlKVxuICAgICAgICA6IGNodW5rLnRoZW4oXG4gICAgICAgICAgICBmdW5jdGlvbiAodikge1xuICAgICAgICAgICAgICBpbml0aWFsaXplSU9JbmZvKHJlc3BvbnNlLCB2KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7fVxuICAgICAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG1lcmdlQnVmZmVyKGJ1ZmZlciwgbGFzdENodW5rKSB7XG4gICAgICBmb3IgKFxuICAgICAgICB2YXIgbCA9IGJ1ZmZlci5sZW5ndGgsIGJ5dGVMZW5ndGggPSBsYXN0Q2h1bmsubGVuZ3RoLCBpID0gMDtcbiAgICAgICAgaSA8IGw7XG4gICAgICAgIGkrK1xuICAgICAgKVxuICAgICAgICBieXRlTGVuZ3RoICs9IGJ1ZmZlcltpXS5ieXRlTGVuZ3RoO1xuICAgICAgYnl0ZUxlbmd0aCA9IG5ldyBVaW50OEFycmF5KGJ5dGVMZW5ndGgpO1xuICAgICAgZm9yICh2YXIgX2kzID0gKGkgPSAwKTsgX2kzIDwgbDsgX2kzKyspIHtcbiAgICAgICAgdmFyIGNodW5rID0gYnVmZmVyW19pM107XG4gICAgICAgIGJ5dGVMZW5ndGguc2V0KGNodW5rLCBpKTtcbiAgICAgICAgaSArPSBjaHVuay5ieXRlTGVuZ3RoO1xuICAgICAgfVxuICAgICAgYnl0ZUxlbmd0aC5zZXQobGFzdENodW5rLCBpKTtcbiAgICAgIHJldHVybiBieXRlTGVuZ3RoO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZXNvbHZlVHlwZWRBcnJheShcbiAgICAgIHJlc3BvbnNlLFxuICAgICAgaWQsXG4gICAgICBidWZmZXIsXG4gICAgICBsYXN0Q2h1bmssXG4gICAgICBjb25zdHJ1Y3RvcixcbiAgICAgIGJ5dGVzUGVyRWxlbWVudCxcbiAgICAgIHN0cmVhbVN0YXRlXG4gICAgKSB7XG4gICAgICBidWZmZXIgPVxuICAgICAgICAwID09PSBidWZmZXIubGVuZ3RoICYmIDAgPT09IGxhc3RDaHVuay5ieXRlT2Zmc2V0ICUgYnl0ZXNQZXJFbGVtZW50XG4gICAgICAgICAgPyBsYXN0Q2h1bmtcbiAgICAgICAgICA6IG1lcmdlQnVmZmVyKGJ1ZmZlciwgbGFzdENodW5rKTtcbiAgICAgIGNvbnN0cnVjdG9yID0gbmV3IGNvbnN0cnVjdG9yKFxuICAgICAgICBidWZmZXIuYnVmZmVyLFxuICAgICAgICBidWZmZXIuYnl0ZU9mZnNldCxcbiAgICAgICAgYnVmZmVyLmJ5dGVMZW5ndGggLyBieXRlc1BlckVsZW1lbnRcbiAgICAgICk7XG4gICAgICByZXNvbHZlQnVmZmVyKHJlc3BvbnNlLCBpZCwgY29uc3RydWN0b3IsIHN0cmVhbVN0YXRlKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZmx1c2hDb21wb25lbnRQZXJmb3JtYW5jZShcbiAgICAgIHJlc3BvbnNlJGpzY29tcCQwLFxuICAgICAgcm9vdCxcbiAgICAgIHRyYWNrSWR4JGpzY29tcCQ2LFxuICAgICAgdHJhY2tUaW1lLFxuICAgICAgcGFyZW50RW5kVGltZVxuICAgICkge1xuICAgICAgaWYgKCFpc0FycmF5SW1wbChyb290Ll9jaGlsZHJlbikpIHtcbiAgICAgICAgdmFyIHByZXZpb3VzUmVzdWx0ID0gcm9vdC5fY2hpbGRyZW4sXG4gICAgICAgICAgcHJldmlvdXNFbmRUaW1lID0gcHJldmlvdXNSZXN1bHQuZW5kVGltZTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIC1JbmZpbml0eSA8IHBhcmVudEVuZFRpbWUgJiZcbiAgICAgICAgICBwYXJlbnRFbmRUaW1lIDwgcHJldmlvdXNFbmRUaW1lICYmXG4gICAgICAgICAgbnVsbCAhPT0gcHJldmlvdXNSZXN1bHQuY29tcG9uZW50XG4gICAgICAgICkge1xuICAgICAgICAgIHZhciBjb21wb25lbnRJbmZvID0gcHJldmlvdXNSZXN1bHQuY29tcG9uZW50LFxuICAgICAgICAgICAgdHJhY2tJZHggPSB0cmFja0lkeCRqc2NvbXAkNixcbiAgICAgICAgICAgIHN0YXJ0VGltZSA9IHBhcmVudEVuZFRpbWU7XG4gICAgICAgICAgaWYgKHN1cHBvcnRzVXNlclRpbWluZyAmJiAwIDw9IHByZXZpb3VzRW5kVGltZSAmJiAxMCA+IHRyYWNrSWR4KSB7XG4gICAgICAgICAgICB2YXIgY29sb3IgPVxuICAgICAgICAgICAgICAgIGNvbXBvbmVudEluZm8uZW52ID09PSByZXNwb25zZSRqc2NvbXAkMC5fcm9vdEVudmlyb25tZW50TmFtZVxuICAgICAgICAgICAgICAgICAgPyBcInByaW1hcnktbGlnaHRcIlxuICAgICAgICAgICAgICAgICAgOiBcInNlY29uZGFyeS1saWdodFwiLFxuICAgICAgICAgICAgICBlbnRyeU5hbWUgPSBjb21wb25lbnRJbmZvLm5hbWUgKyBcIiBbZGVkdXBlZF1cIixcbiAgICAgICAgICAgICAgZGVidWdUYXNrID0gY29tcG9uZW50SW5mby5kZWJ1Z1Rhc2s7XG4gICAgICAgICAgICBkZWJ1Z1Rhc2tcbiAgICAgICAgICAgICAgPyBkZWJ1Z1Rhc2sucnVuKFxuICAgICAgICAgICAgICAgICAgY29uc29sZS50aW1lU3RhbXAuYmluZChcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZSxcbiAgICAgICAgICAgICAgICAgICAgZW50cnlOYW1lLFxuICAgICAgICAgICAgICAgICAgICAwID4gc3RhcnRUaW1lID8gMCA6IHN0YXJ0VGltZSxcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNFbmRUaW1lLFxuICAgICAgICAgICAgICAgICAgICB0cmFja05hbWVzW3RyYWNrSWR4XSxcbiAgICAgICAgICAgICAgICAgICAgXCJTZXJ2ZXIgQ29tcG9uZW50cyBcXHUyNjliXCIsXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IGNvbnNvbGUudGltZVN0YW1wKFxuICAgICAgICAgICAgICAgICAgZW50cnlOYW1lLFxuICAgICAgICAgICAgICAgICAgMCA+IHN0YXJ0VGltZSA/IDAgOiBzdGFydFRpbWUsXG4gICAgICAgICAgICAgICAgICBwcmV2aW91c0VuZFRpbWUsXG4gICAgICAgICAgICAgICAgICB0cmFja05hbWVzW3RyYWNrSWR4XSxcbiAgICAgICAgICAgICAgICAgIFwiU2VydmVyIENvbXBvbmVudHMgXFx1MjY5YlwiLFxuICAgICAgICAgICAgICAgICAgY29sb3JcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwcmV2aW91c1Jlc3VsdC50cmFjayA9IHRyYWNrSWR4JGpzY29tcCQ2O1xuICAgICAgICByZXR1cm4gcHJldmlvdXNSZXN1bHQ7XG4gICAgICB9XG4gICAgICB2YXIgY2hpbGRyZW4gPSByb290Ll9jaGlsZHJlbjtcbiAgICAgIHZhciBkZWJ1Z0luZm8gPSByb290Ll9kZWJ1Z0luZm87XG4gICAgICBpZiAoMCA9PT0gZGVidWdJbmZvLmxlbmd0aCAmJiBcImZ1bGZpbGxlZFwiID09PSByb290LnN0YXR1cykge1xuICAgICAgICB2YXIgcmVzb2x2ZWRWYWx1ZSA9IHJlc29sdmVMYXp5KHJvb3QudmFsdWUpO1xuICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2YgcmVzb2x2ZWRWYWx1ZSAmJlxuICAgICAgICAgIG51bGwgIT09IHJlc29sdmVkVmFsdWUgJiZcbiAgICAgICAgICAoaXNBcnJheUltcGwocmVzb2x2ZWRWYWx1ZSkgfHxcbiAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHJlc29sdmVkVmFsdWVbQVNZTkNfSVRFUkFUT1JdIHx8XG4gICAgICAgICAgICByZXNvbHZlZFZhbHVlLiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEUgfHxcbiAgICAgICAgICAgIHJlc29sdmVkVmFsdWUuJCR0eXBlb2YgPT09IFJFQUNUX0xBWllfVFlQRSkgJiZcbiAgICAgICAgICBpc0FycmF5SW1wbChyZXNvbHZlZFZhbHVlLl9kZWJ1Z0luZm8pICYmXG4gICAgICAgICAgKGRlYnVnSW5mbyA9IHJlc29sdmVkVmFsdWUuX2RlYnVnSW5mbyk7XG4gICAgICB9XG4gICAgICBpZiAoZGVidWdJbmZvKSB7XG4gICAgICAgIGZvciAodmFyIHN0YXJ0VGltZSRqc2NvbXAkMCA9IDAsIGkgPSAwOyBpIDwgZGVidWdJbmZvLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGluZm8gPSBkZWJ1Z0luZm9baV07XG4gICAgICAgICAgXCJudW1iZXJcIiA9PT0gdHlwZW9mIGluZm8udGltZSAmJiAoc3RhcnRUaW1lJGpzY29tcCQwID0gaW5mby50aW1lKTtcbiAgICAgICAgICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGluZm8ubmFtZSkge1xuICAgICAgICAgICAgc3RhcnRUaW1lJGpzY29tcCQwIDwgdHJhY2tUaW1lICYmIHRyYWNrSWR4JGpzY29tcCQ2Kys7XG4gICAgICAgICAgICB0cmFja1RpbWUgPSBzdGFydFRpbWUkanNjb21wJDA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgX2k0ID0gZGVidWdJbmZvLmxlbmd0aCAtIDE7IDAgPD0gX2k0OyBfaTQtLSkge1xuICAgICAgICAgIHZhciBfaW5mbyA9IGRlYnVnSW5mb1tfaTRdO1xuICAgICAgICAgIGlmIChcIm51bWJlclwiID09PSB0eXBlb2YgX2luZm8udGltZSAmJiBfaW5mby50aW1lID4gcGFyZW50RW5kVGltZSkge1xuICAgICAgICAgICAgcGFyZW50RW5kVGltZSA9IF9pbmZvLnRpbWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSB7XG4gICAgICAgIHRyYWNrOiB0cmFja0lkeCRqc2NvbXAkNixcbiAgICAgICAgZW5kVGltZTogLUluZmluaXR5LFxuICAgICAgICBjb21wb25lbnQ6IG51bGxcbiAgICAgIH07XG4gICAgICByb290Ll9jaGlsZHJlbiA9IHJlc3VsdDtcbiAgICAgIGZvciAoXG4gICAgICAgIHZhciBjaGlsZHJlbkVuZFRpbWUgPSAtSW5maW5pdHksXG4gICAgICAgICAgY2hpbGRUcmFja0lkeCA9IHRyYWNrSWR4JGpzY29tcCQ2LFxuICAgICAgICAgIGNoaWxkVHJhY2tUaW1lID0gdHJhY2tUaW1lLFxuICAgICAgICAgIF9pNSA9IDA7XG4gICAgICAgIF9pNSA8IGNoaWxkcmVuLmxlbmd0aDtcbiAgICAgICAgX2k1KytcbiAgICAgICkge1xuICAgICAgICB2YXIgY2hpbGRSZXN1bHQgPSBmbHVzaENvbXBvbmVudFBlcmZvcm1hbmNlKFxuICAgICAgICAgIHJlc3BvbnNlJGpzY29tcCQwLFxuICAgICAgICAgIGNoaWxkcmVuW19pNV0sXG4gICAgICAgICAgY2hpbGRUcmFja0lkeCxcbiAgICAgICAgICBjaGlsZFRyYWNrVGltZSxcbiAgICAgICAgICBwYXJlbnRFbmRUaW1lXG4gICAgICAgICk7XG4gICAgICAgIG51bGwgIT09IGNoaWxkUmVzdWx0LmNvbXBvbmVudCAmJlxuICAgICAgICAgIChyZXN1bHQuY29tcG9uZW50ID0gY2hpbGRSZXN1bHQuY29tcG9uZW50KTtcbiAgICAgICAgY2hpbGRUcmFja0lkeCA9IGNoaWxkUmVzdWx0LnRyYWNrO1xuICAgICAgICB2YXIgY2hpbGRFbmRUaW1lID0gY2hpbGRSZXN1bHQuZW5kVGltZTtcbiAgICAgICAgY2hpbGRFbmRUaW1lID4gY2hpbGRUcmFja1RpbWUgJiYgKGNoaWxkVHJhY2tUaW1lID0gY2hpbGRFbmRUaW1lKTtcbiAgICAgICAgY2hpbGRFbmRUaW1lID4gY2hpbGRyZW5FbmRUaW1lICYmIChjaGlsZHJlbkVuZFRpbWUgPSBjaGlsZEVuZFRpbWUpO1xuICAgICAgfVxuICAgICAgaWYgKGRlYnVnSW5mbylcbiAgICAgICAgZm9yIChcbiAgICAgICAgICB2YXIgY29tcG9uZW50RW5kVGltZSA9IDAsXG4gICAgICAgICAgICBpc0xhc3RDb21wb25lbnQgPSAhMCxcbiAgICAgICAgICAgIGVuZFRpbWUgPSAtMSxcbiAgICAgICAgICAgIGVuZFRpbWVJZHggPSAtMSxcbiAgICAgICAgICAgIF9pNiA9IGRlYnVnSW5mby5sZW5ndGggLSAxO1xuICAgICAgICAgIDAgPD0gX2k2O1xuICAgICAgICAgIF9pNi0tXG4gICAgICAgICkge1xuICAgICAgICAgIHZhciBfaW5mbzIgPSBkZWJ1Z0luZm9bX2k2XTtcbiAgICAgICAgICBpZiAoXCJudW1iZXJcIiA9PT0gdHlwZW9mIF9pbmZvMi50aW1lKSB7XG4gICAgICAgICAgICAwID09PSBjb21wb25lbnRFbmRUaW1lICYmIChjb21wb25lbnRFbmRUaW1lID0gX2luZm8yLnRpbWUpO1xuICAgICAgICAgICAgdmFyIHRpbWUgPSBfaW5mbzIudGltZTtcbiAgICAgICAgICAgIGlmICgtMSA8IGVuZFRpbWVJZHgpXG4gICAgICAgICAgICAgIGZvciAodmFyIGogPSBlbmRUaW1lSWR4IC0gMTsgaiA+IF9pNjsgai0tKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNhbmRpZGF0ZUluZm8gPSBkZWJ1Z0luZm9bal07XG4gICAgICAgICAgICAgICAgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiBjYW5kaWRhdGVJbmZvLm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgIGNvbXBvbmVudEVuZFRpbWUgPiBjaGlsZHJlbkVuZFRpbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgKGNoaWxkcmVuRW5kVGltZSA9IGNvbXBvbmVudEVuZFRpbWUpO1xuICAgICAgICAgICAgICAgICAgdmFyIGNvbXBvbmVudEluZm8kanNjb21wJDAgPSBjYW5kaWRhdGVJbmZvLFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IHJlc3BvbnNlJGpzY29tcCQwLFxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRJbmZvJGpzY29tcCQxID0gY29tcG9uZW50SW5mbyRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tJZHgkanNjb21wJDAgPSB0cmFja0lkeCRqc2NvbXAkNixcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRUaW1lJGpzY29tcCQxID0gdGltZSxcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50RW5kVGltZSRqc2NvbXAkMCA9IGNvbXBvbmVudEVuZFRpbWUsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuRW5kVGltZSRqc2NvbXAkMCA9IGNoaWxkcmVuRW5kVGltZTtcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgaXNMYXN0Q29tcG9uZW50ICYmXG4gICAgICAgICAgICAgICAgICAgIFwicmVqZWN0ZWRcIiA9PT0gcm9vdC5zdGF0dXMgJiZcbiAgICAgICAgICAgICAgICAgICAgcm9vdC5yZWFzb24gIT09IHJlc3BvbnNlLl9jbG9zZWRSZWFzb25cbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgY29tcG9uZW50SW5mbyRqc2NvbXAkMiA9IGNvbXBvbmVudEluZm8kanNjb21wJDEsXG4gICAgICAgICAgICAgICAgICAgICAgdHJhY2tJZHgkanNjb21wJDEgPSB0cmFja0lkeCRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydFRpbWUkanNjb21wJDIgPSBzdGFydFRpbWUkanNjb21wJDEsXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5FbmRUaW1lJGpzY29tcCQxID0gY2hpbGRyZW5FbmRUaW1lJGpzY29tcCQwLFxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gcm9vdC5yZWFzb247XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0c1VzZXJUaW1pbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgZW52ID0gY29tcG9uZW50SW5mbyRqc2NvbXAkMi5lbnYsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gY29tcG9uZW50SW5mbyRqc2NvbXAkMi5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlOYW1lJGpzY29tcCQwID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW52ID09PSByZXNwb25zZS5fcm9vdEVudmlyb25tZW50TmFtZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgPT09IGVudlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbmFtZSArIFwiIFtcIiArIGVudiArIFwiXVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZU5hbWUgPSBcIlxcdTIwMGJcIiArIGVudHJ5TmFtZSRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkVycm9yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIGVycm9yICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gZXJyb3IgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgZXJyb3IubWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBTdHJpbmcoZXJyb3IubWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogU3RyaW5nKGVycm9yKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT0gY29tcG9uZW50SW5mbyRqc2NvbXAkMi5rZXkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZFZhbHVlVG9Qcm9wZXJ0aWVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImtleVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRJbmZvJGpzY29tcCQyLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IGNvbXBvbmVudEluZm8kanNjb21wJDIucHJvcHMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZE9iamVjdFRvUHJvcGVydGllcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50SW5mbyRqc2NvbXAkMi5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtYW5jZS5tZWFzdXJlKG1lYXN1cmVOYW1lLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogMCA+IHN0YXJ0VGltZSRqc2NvbXAkMiA/IDAgOiBzdGFydFRpbWUkanNjb21wJDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGNoaWxkcmVuRW5kVGltZSRqc2NvbXAkMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZ0b29sczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcImVycm9yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2s6IHRyYWNrTmFtZXNbdHJhY2tJZHgkanNjb21wJDFdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrR3JvdXA6IFwiU2VydmVyIENvbXBvbmVudHMgXFx1MjY5YlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBUZXh0OiBlbnRyeU5hbWUkanNjb21wJDAgKyBcIiBFcnJvcmVkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczogcHJvcGVydGllc1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybWFuY2UuY2xlYXJNZWFzdXJlcyhtZWFzdXJlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjb21wb25lbnRJbmZvJGpzY29tcCQzID0gY29tcG9uZW50SW5mbyRqc2NvbXAkMSxcbiAgICAgICAgICAgICAgICAgICAgICB0cmFja0lkeCRqc2NvbXAkMiA9IHRyYWNrSWR4JGpzY29tcCQwLFxuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZSRqc2NvbXAkMyA9IHN0YXJ0VGltZSRqc2NvbXAkMSxcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbkVuZFRpbWUkanNjb21wJDIgPSBjaGlsZHJlbkVuZFRpbWUkanNjb21wJDA7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c1VzZXJUaW1pbmcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAwIDw9IGNoaWxkcmVuRW5kVGltZSRqc2NvbXAkMiAmJlxuICAgICAgICAgICAgICAgICAgICAgIDEwID4gdHJhY2tJZHgkanNjb21wJDJcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFyIGVudiRqc2NvbXAkMCA9IGNvbXBvbmVudEluZm8kanNjb21wJDMuZW52LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSRqc2NvbXAkMCA9IGNvbXBvbmVudEluZm8kanNjb21wJDMubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJpbWFyeUVudiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVudiRqc2NvbXAkMCA9PT0gcmVzcG9uc2UuX3Jvb3RFbnZpcm9ubWVudE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmVGltZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudEVuZFRpbWUkanNjb21wJDAgLSBzdGFydFRpbWUkanNjb21wJDMsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvciRqc2NvbXAkMCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDAuNSA+IHNlbGZUaW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpc1ByaW1hcnlFbnZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJwcmltYXJ5LWxpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJzZWNvbmRhcnktbGlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogNTAgPiBzZWxmVGltZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpc1ByaW1hcnlFbnZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogNTAwID4gc2VsZlRpbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpc1ByaW1hcnlFbnZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwicHJpbWFyeS1kYXJrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwic2Vjb25kYXJ5LWRhcmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiZXJyb3JcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnVGFzayRqc2NvbXAkMCA9IGNvbXBvbmVudEluZm8kanNjb21wJDMuZGVidWdUYXNrLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZU5hbWUkanNjb21wJDAgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcdTIwMGJcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChpc1ByaW1hcnlFbnYgfHwgdm9pZCAwID09PSBlbnYkanNjb21wJDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG5hbWUkanNjb21wJDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG5hbWUkanNjb21wJDAgKyBcIiBbXCIgKyBlbnYkanNjb21wJDAgKyBcIl1cIik7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGRlYnVnVGFzayRqc2NvbXAkMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHByb3BlcnRpZXMkanNjb21wJDAgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT0gY29tcG9uZW50SW5mbyRqc2NvbXAkMy5rZXkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkVmFsdWVUb1Byb3BlcnRpZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJrZXlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRJbmZvJGpzY29tcCQzLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzJGpzY29tcCQwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSBjb21wb25lbnRJbmZvJGpzY29tcCQzLnByb3BzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFkZE9iamVjdFRvUHJvcGVydGllcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRJbmZvJGpzY29tcCQzLnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXMkanNjb21wJDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z1Rhc2skanNjb21wJDAucnVuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtYW5jZS5tZWFzdXJlLmJpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybWFuY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZU5hbWUkanNjb21wJDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgPiBzdGFydFRpbWUkanNjb21wJDMgPyAwIDogc3RhcnRUaW1lJGpzY29tcCQzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBjaGlsZHJlbkVuZFRpbWUkanNjb21wJDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2dG9vbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogY29sb3IkanNjb21wJDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2s6IHRyYWNrTmFtZXNbdHJhY2tJZHgkanNjb21wJDJdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrR3JvdXA6IFwiU2VydmVyIENvbXBvbmVudHMgXFx1MjY5YlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHByb3BlcnRpZXMkanNjb21wJDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXMobWVhc3VyZU5hbWUkanNjb21wJDApO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS50aW1lU3RhbXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmVOYW1lJGpzY29tcCQwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAwID4gc3RhcnRUaW1lJGpzY29tcCQzID8gMCA6IHN0YXJ0VGltZSRqc2NvbXAkMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5FbmRUaW1lJGpzY29tcCQyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja05hbWVzW3RyYWNrSWR4JGpzY29tcCQyXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZXJ2ZXIgQ29tcG9uZW50cyBcXHUyNjliXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yJGpzY29tcCQwXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBjb21wb25lbnRFbmRUaW1lID0gdGltZTtcbiAgICAgICAgICAgICAgICAgIHJlc3VsdC5jb21wb25lbnQgPSBjb21wb25lbnRJbmZvJGpzY29tcCQwO1xuICAgICAgICAgICAgICAgICAgaXNMYXN0Q29tcG9uZW50ID0gITE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZUluZm8uYXdhaXRlZCAmJlxuICAgICAgICAgICAgICAgICAgbnVsbCAhPSBjYW5kaWRhdGVJbmZvLmF3YWl0ZWQuZW52XG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBlbmRUaW1lID4gY2hpbGRyZW5FbmRUaW1lICYmIChjaGlsZHJlbkVuZFRpbWUgPSBlbmRUaW1lKTtcbiAgICAgICAgICAgICAgICAgIHZhciBhc3luY0luZm8gPSBjYW5kaWRhdGVJbmZvLFxuICAgICAgICAgICAgICAgICAgICBlbnYkanNjb21wJDEgPSByZXNwb25zZSRqc2NvbXAkMC5fcm9vdEVudmlyb25tZW50TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZSA9IGFzeW5jSW5mby5hd2FpdGVkLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgaWYgKHByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoZW5hYmxlID0gcHJvbWlzZTtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0aGVuYWJsZS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZnVsZmlsbGVkXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dDb21wb25lbnRBd2FpdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmNJbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0lkeCRqc2NvbXAkNixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kVGltZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW52JGpzY29tcCQxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuYWJsZS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJyZWplY3RlZFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFzeW5jSW5mbyRqc2NvbXAkMCA9IGFzeW5jSW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tJZHgkanNjb21wJDMgPSB0cmFja0lkeCRqc2NvbXAkNixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRUaW1lJGpzY29tcCQ0ID0gdGltZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kVGltZSRqc2NvbXAkMCA9IGVuZFRpbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RFbnYgPSBlbnYkanNjb21wJDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yJGpzY29tcCQwID0gdGhlbmFibGUucmVhc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRzVXNlclRpbWluZyAmJiAwIDwgZW5kVGltZSRqc2NvbXAkMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGVzY3JpcHRpb24gPSBnZXRJT0Rlc2NyaXB0aW9uKGVycm9yJGpzY29tcCQwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeU5hbWUkanNjb21wJDEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJhd2FpdCBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRJT1Nob3J0TmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmNJbmZvJGpzY29tcCQwLmF3YWl0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3luY0luZm8kanNjb21wJDAuZW52LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290RW52XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnVGFzayRqc2NvbXAkMSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3luY0luZm8kanNjb21wJDAuZGVidWdUYXNrIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3luY0luZm8kanNjb21wJDAuYXdhaXRlZC5kZWJ1Z1Rhc2s7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWJ1Z1Rhc2skanNjb21wJDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJvcGVydGllcyRqc2NvbXAkMSA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUmVqZWN0ZWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2YgZXJyb3IkanNjb21wJDAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9PSBlcnJvciRqc2NvbXAkMCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBlcnJvciRqc2NvbXAkMC5tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFN0cmluZyhlcnJvciRqc2NvbXAkMC5tZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBTdHJpbmcoZXJyb3IkanNjb21wJDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwVGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldElPTG9uZ05hbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmNJbmZvJGpzY29tcCQwLmF3YWl0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmNJbmZvJGpzY29tcCQwLmVudixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290RW52XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgKyBcIiBSZWplY3RlZFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnVGFzayRqc2NvbXAkMS5ydW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtYW5jZS5tZWFzdXJlLmJpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeU5hbWUkanNjb21wJDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgPiBzdGFydFRpbWUkanNjb21wJDRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc3RhcnRUaW1lJGpzY29tcCQ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogZW5kVGltZSRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldnRvb2xzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcImVycm9yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrOiB0cmFja05hbWVzW3RyYWNrSWR4JGpzY29tcCQzXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tHcm91cDogXCJTZXJ2ZXIgQ29tcG9uZW50cyBcXHUyNjliXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHByb3BlcnRpZXMkanNjb21wJDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBUZXh0OiB0b29sdGlwVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybWFuY2UuY2xlYXJNZWFzdXJlcyhlbnRyeU5hbWUkanNjb21wJDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLnRpbWVTdGFtcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5TmFtZSRqc2NvbXAkMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgPiBzdGFydFRpbWUkanNjb21wJDQgPyAwIDogc3RhcnRUaW1lJGpzY29tcCQ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kVGltZSRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrTmFtZXNbdHJhY2tJZHgkanNjb21wJDNdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZXJ2ZXIgQ29tcG9uZW50cyBcXHUyNjliXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0NvbXBvbmVudEF3YWl0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhc3luY0luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrSWR4JGpzY29tcCQ2LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRUaW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbnYkanNjb21wJDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGxvZ0NvbXBvbmVudEF3YWl0KFxuICAgICAgICAgICAgICAgICAgICAgIGFzeW5jSW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICB0cmFja0lkeCRqc2NvbXAkNixcbiAgICAgICAgICAgICAgICAgICAgICB0aW1lLFxuICAgICAgICAgICAgICAgICAgICAgIGVuZFRpbWUsXG4gICAgICAgICAgICAgICAgICAgICAgZW52JGpzY29tcCQxLFxuICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIGVuZFRpbWUgPSB0aW1lO1xuICAgICAgICAgICAgICBmb3IgKHZhciBfaiA9IGRlYnVnSW5mby5sZW5ndGggLSAxOyBfaiA+IF9pNjsgX2otLSkge1xuICAgICAgICAgICAgICAgIHZhciBfY2FuZGlkYXRlSW5mbyA9IGRlYnVnSW5mb1tfal07XG4gICAgICAgICAgICAgICAgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiBfY2FuZGlkYXRlSW5mby5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICBjb21wb25lbnRFbmRUaW1lID4gY2hpbGRyZW5FbmRUaW1lICYmXG4gICAgICAgICAgICAgICAgICAgIChjaGlsZHJlbkVuZFRpbWUgPSBjb21wb25lbnRFbmRUaW1lKTtcbiAgICAgICAgICAgICAgICAgIHZhciBfY29tcG9uZW50SW5mbyA9IF9jYW5kaWRhdGVJbmZvLFxuICAgICAgICAgICAgICAgICAgICBfZW52ID0gcmVzcG9uc2UkanNjb21wJDAuX3Jvb3RFbnZpcm9ubWVudE5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudEluZm8kanNjb21wJDQgPSBfY29tcG9uZW50SW5mbyxcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tJZHgkanNjb21wJDQgPSB0cmFja0lkeCRqc2NvbXAkNixcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRUaW1lJGpzY29tcCQ1ID0gdGltZSxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5FbmRUaW1lJGpzY29tcCQzID0gY2hpbGRyZW5FbmRUaW1lO1xuICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRzVXNlclRpbWluZykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZW52JGpzY29tcCQyID0gY29tcG9uZW50SW5mbyRqc2NvbXAkNC5lbnYsXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZSRqc2NvbXAkMSA9IGNvbXBvbmVudEluZm8kanNjb21wJDQubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICBlbnRyeU5hbWUkanNjb21wJDIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgZW52JGpzY29tcCQyID09PSBfZW52IHx8IHZvaWQgMCA9PT0gZW52JGpzY29tcCQyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gbmFtZSRqc2NvbXAkMVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IG5hbWUkanNjb21wJDEgKyBcIiBbXCIgKyBlbnYkanNjb21wJDIgKyBcIl1cIixcbiAgICAgICAgICAgICAgICAgICAgICBtZWFzdXJlTmFtZSRqc2NvbXAkMSA9IFwiXFx1MjAwYlwiICsgZW50cnlOYW1lJGpzY29tcCQyLFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXMkanNjb21wJDIgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQWJvcnRlZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRoZSBzdHJlYW0gd2FzIGFib3J0ZWQgYmVmb3JlIHRoaXMgQ29tcG9uZW50IGZpbmlzaGVkIHJlbmRlcmluZy5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIG51bGwgIT0gY29tcG9uZW50SW5mbyRqc2NvbXAkNC5rZXkgJiZcbiAgICAgICAgICAgICAgICAgICAgICBhZGRWYWx1ZVRvUHJvcGVydGllcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwia2V5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRJbmZvJGpzY29tcCQ0LmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXMkanNjb21wJDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIG51bGwgIT0gY29tcG9uZW50SW5mbyRqc2NvbXAkNC5wcm9wcyAmJlxuICAgICAgICAgICAgICAgICAgICAgIGFkZE9iamVjdFRvUHJvcGVydGllcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudEluZm8kanNjb21wJDQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzJGpzY29tcCQyLFxuICAgICAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBwZXJmb3JtYW5jZS5tZWFzdXJlKG1lYXN1cmVOYW1lJGpzY29tcCQxLCB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IDAgPiBzdGFydFRpbWUkanNjb21wJDUgPyAwIDogc3RhcnRUaW1lJGpzY29tcCQ1LFxuICAgICAgICAgICAgICAgICAgICAgIGVuZDogY2hpbGRyZW5FbmRUaW1lJGpzY29tcCQzLFxuICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGV2dG9vbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwid2FybmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjazogdHJhY2tOYW1lc1t0cmFja0lkeCRqc2NvbXAkNF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrR3JvdXA6IFwiU2VydmVyIENvbXBvbmVudHMgXFx1MjY5YlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwVGV4dDogZW50cnlOYW1lJGpzY29tcCQyICsgXCIgQWJvcnRlZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzJGpzY29tcCQyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcGVyZm9ybWFuY2UuY2xlYXJNZWFzdXJlcyhtZWFzdXJlTmFtZSRqc2NvbXAkMSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBjb21wb25lbnRFbmRUaW1lID0gdGltZTtcbiAgICAgICAgICAgICAgICAgIHJlc3VsdC5jb21wb25lbnQgPSBfY29tcG9uZW50SW5mbztcbiAgICAgICAgICAgICAgICAgIGlzTGFzdENvbXBvbmVudCA9ICExO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICBfY2FuZGlkYXRlSW5mby5hd2FpdGVkICYmXG4gICAgICAgICAgICAgICAgICBudWxsICE9IF9jYW5kaWRhdGVJbmZvLmF3YWl0ZWQuZW52XG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICB2YXIgX2FzeW5jSW5mbyA9IF9jYW5kaWRhdGVJbmZvLFxuICAgICAgICAgICAgICAgICAgICBfZW52MiA9IHJlc3BvbnNlJGpzY29tcCQwLl9yb290RW52aXJvbm1lbnROYW1lO1xuICAgICAgICAgICAgICAgICAgX2FzeW5jSW5mby5hd2FpdGVkLmVuZCA+IGVuZFRpbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgKGVuZFRpbWUgPSBfYXN5bmNJbmZvLmF3YWl0ZWQuZW5kKTtcbiAgICAgICAgICAgICAgICAgIGVuZFRpbWUgPiBjaGlsZHJlbkVuZFRpbWUgJiYgKGNoaWxkcmVuRW5kVGltZSA9IGVuZFRpbWUpO1xuICAgICAgICAgICAgICAgICAgdmFyIGFzeW5jSW5mbyRqc2NvbXAkMSA9IF9hc3luY0luZm8sXG4gICAgICAgICAgICAgICAgICAgIHRyYWNrSWR4JGpzY29tcCQ1ID0gdHJhY2tJZHgkanNjb21wJDYsXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZSRqc2NvbXAkNiA9IHRpbWUsXG4gICAgICAgICAgICAgICAgICAgIGVuZFRpbWUkanNjb21wJDEgPSBlbmRUaW1lLFxuICAgICAgICAgICAgICAgICAgICByb290RW52JGpzY29tcCQwID0gX2VudjI7XG4gICAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydHNVc2VyVGltaW5nICYmIDAgPCBlbmRUaW1lJGpzY29tcCQxKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlbnRyeU5hbWUkanNjb21wJDMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhd2FpdCBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRJT1Nob3J0TmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmNJbmZvJGpzY29tcCQxLmF3YWl0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jSW5mbyRqc2NvbXAkMS5lbnYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RFbnYkanNjb21wJDBcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgZGVidWdUYXNrJGpzY29tcCQyID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jSW5mbyRqc2NvbXAkMS5kZWJ1Z1Rhc2sgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jSW5mbyRqc2NvbXAkMS5hd2FpdGVkLmRlYnVnVGFzaztcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlYnVnVGFzayRqc2NvbXAkMikge1xuICAgICAgICAgICAgICAgICAgICAgIHZhciB0b29sdGlwVGV4dCRqc2NvbXAkMCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRJT0xvbmdOYW1lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhc3luY0luZm8kanNjb21wJDEuYXdhaXRlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmNJbmZvJGpzY29tcCQxLmVudixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdEVudiRqc2NvbXAkMFxuICAgICAgICAgICAgICAgICAgICAgICAgKSArIFwiIEFib3J0ZWRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z1Rhc2skanNjb21wJDIucnVuKFxuICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybWFuY2UubWVhc3VyZS5iaW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtYW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlOYW1lJGpzY29tcCQzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwID4gc3RhcnRUaW1lJGpzY29tcCQ2ID8gMCA6IHN0YXJ0VGltZSRqc2NvbXAkNixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGVuZFRpbWUkanNjb21wJDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZ0b29sczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCJ3YXJuaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrOiB0cmFja05hbWVzW3RyYWNrSWR4JGpzY29tcCQ1XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tHcm91cDogXCJTZXJ2ZXIgQ29tcG9uZW50cyBcXHUyNjliXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFib3J0ZWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhlIHN0cmVhbSB3YXMgYWJvcnRlZCBiZWZvcmUgdGhpcyBQcm9taXNlIHJlc29sdmVkLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwVGV4dDogdG9vbHRpcFRleHQkanNjb21wJDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXMoZW50cnlOYW1lJGpzY29tcCQzKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgY29uc29sZS50aW1lU3RhbXAoXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRyeU5hbWUkanNjb21wJDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAwID4gc3RhcnRUaW1lJGpzY29tcCQ2ID8gMCA6IHN0YXJ0VGltZSRqc2NvbXAkNixcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZFRpbWUkanNjb21wJDEsXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFja05hbWVzW3RyYWNrSWR4JGpzY29tcCQ1XSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VydmVyIENvbXBvbmVudHMgXFx1MjY5YlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ3YXJuaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZW5kVGltZSA9IHRpbWU7XG4gICAgICAgICAgICBlbmRUaW1lSWR4ID0gX2k2O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgcmVzdWx0LmVuZFRpbWUgPSBjaGlsZHJlbkVuZFRpbWU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBmdW5jdGlvbiBmbHVzaEluaXRpYWxSZW5kZXJQZXJmb3JtYW5jZShyZXNwb25zZSkge1xuICAgICAgaWYgKHJlc3BvbnNlLl9yZXBsYXlDb25zb2xlKSB7XG4gICAgICAgIHZhciByb290Q2h1bmsgPSBnZXRDaHVuayhyZXNwb25zZSwgMCk7XG4gICAgICAgIGlzQXJyYXlJbXBsKHJvb3RDaHVuay5fY2hpbGRyZW4pICYmXG4gICAgICAgICAgKG1hcmtBbGxUcmFja3NJbk9yZGVyKCksXG4gICAgICAgICAgZmx1c2hDb21wb25lbnRQZXJmb3JtYW5jZShcbiAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgcm9vdENodW5rLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIC1JbmZpbml0eSxcbiAgICAgICAgICAgIC1JbmZpbml0eVxuICAgICAgICAgICkpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBwcm9jZXNzRnVsbEJpbmFyeVJvdyhcbiAgICAgIHJlc3BvbnNlLFxuICAgICAgc3RyZWFtU3RhdGUsXG4gICAgICBpZCxcbiAgICAgIHRhZyxcbiAgICAgIGJ1ZmZlcixcbiAgICAgIGNodW5rXG4gICAgKSB7XG4gICAgICBzd2l0Y2ggKHRhZykge1xuICAgICAgICBjYXNlIDY1OlxuICAgICAgICAgIHJlc29sdmVCdWZmZXIoXG4gICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgbWVyZ2VCdWZmZXIoYnVmZmVyLCBjaHVuaykuYnVmZmVyLFxuICAgICAgICAgICAgc3RyZWFtU3RhdGVcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSA3OTpcbiAgICAgICAgICByZXNvbHZlVHlwZWRBcnJheShcbiAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICBidWZmZXIsXG4gICAgICAgICAgICBjaHVuayxcbiAgICAgICAgICAgIEludDhBcnJheSxcbiAgICAgICAgICAgIDEsXG4gICAgICAgICAgICBzdHJlYW1TdGF0ZVxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjYXNlIDExMTpcbiAgICAgICAgICByZXNvbHZlQnVmZmVyKFxuICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIDAgPT09IGJ1ZmZlci5sZW5ndGggPyBjaHVuayA6IG1lcmdlQnVmZmVyKGJ1ZmZlciwgY2h1bmspLFxuICAgICAgICAgICAgc3RyZWFtU3RhdGVcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSA4NTpcbiAgICAgICAgICByZXNvbHZlVHlwZWRBcnJheShcbiAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICBidWZmZXIsXG4gICAgICAgICAgICBjaHVuayxcbiAgICAgICAgICAgIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICAgICAgICAgICAgMSxcbiAgICAgICAgICAgIHN0cmVhbVN0YXRlXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNhc2UgODM6XG4gICAgICAgICAgcmVzb2x2ZVR5cGVkQXJyYXkoXG4gICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgYnVmZmVyLFxuICAgICAgICAgICAgY2h1bmssXG4gICAgICAgICAgICBJbnQxNkFycmF5LFxuICAgICAgICAgICAgMixcbiAgICAgICAgICAgIHN0cmVhbVN0YXRlXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNhc2UgMTE1OlxuICAgICAgICAgIHJlc29sdmVUeXBlZEFycmF5KFxuICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIGJ1ZmZlcixcbiAgICAgICAgICAgIGNodW5rLFxuICAgICAgICAgICAgVWludDE2QXJyYXksXG4gICAgICAgICAgICAyLFxuICAgICAgICAgICAgc3RyZWFtU3RhdGVcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSA3NjpcbiAgICAgICAgICByZXNvbHZlVHlwZWRBcnJheShcbiAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICBidWZmZXIsXG4gICAgICAgICAgICBjaHVuayxcbiAgICAgICAgICAgIEludDMyQXJyYXksXG4gICAgICAgICAgICA0LFxuICAgICAgICAgICAgc3RyZWFtU3RhdGVcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSAxMDg6XG4gICAgICAgICAgcmVzb2x2ZVR5cGVkQXJyYXkoXG4gICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgYnVmZmVyLFxuICAgICAgICAgICAgY2h1bmssXG4gICAgICAgICAgICBVaW50MzJBcnJheSxcbiAgICAgICAgICAgIDQsXG4gICAgICAgICAgICBzdHJlYW1TdGF0ZVxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjYXNlIDcxOlxuICAgICAgICAgIHJlc29sdmVUeXBlZEFycmF5KFxuICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIGJ1ZmZlcixcbiAgICAgICAgICAgIGNodW5rLFxuICAgICAgICAgICAgRmxvYXQzMkFycmF5LFxuICAgICAgICAgICAgNCxcbiAgICAgICAgICAgIHN0cmVhbVN0YXRlXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNhc2UgMTAzOlxuICAgICAgICAgIHJlc29sdmVUeXBlZEFycmF5KFxuICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIGJ1ZmZlcixcbiAgICAgICAgICAgIGNodW5rLFxuICAgICAgICAgICAgRmxvYXQ2NEFycmF5LFxuICAgICAgICAgICAgOCxcbiAgICAgICAgICAgIHN0cmVhbVN0YXRlXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNhc2UgNzc6XG4gICAgICAgICAgcmVzb2x2ZVR5cGVkQXJyYXkoXG4gICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgYnVmZmVyLFxuICAgICAgICAgICAgY2h1bmssXG4gICAgICAgICAgICBCaWdJbnQ2NEFycmF5LFxuICAgICAgICAgICAgOCxcbiAgICAgICAgICAgIHN0cmVhbVN0YXRlXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNhc2UgMTA5OlxuICAgICAgICAgIHJlc29sdmVUeXBlZEFycmF5KFxuICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIGJ1ZmZlcixcbiAgICAgICAgICAgIGNodW5rLFxuICAgICAgICAgICAgQmlnVWludDY0QXJyYXksXG4gICAgICAgICAgICA4LFxuICAgICAgICAgICAgc3RyZWFtU3RhdGVcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSA4NjpcbiAgICAgICAgICByZXNvbHZlVHlwZWRBcnJheShcbiAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICBidWZmZXIsXG4gICAgICAgICAgICBjaHVuayxcbiAgICAgICAgICAgIERhdGFWaWV3LFxuICAgICAgICAgICAgMSxcbiAgICAgICAgICAgIHN0cmVhbVN0YXRlXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmb3IgKFxuICAgICAgICB2YXIgc3RyaW5nRGVjb2RlciA9IHJlc3BvbnNlLl9zdHJpbmdEZWNvZGVyLCByb3cgPSBcIlwiLCBpID0gMDtcbiAgICAgICAgaSA8IGJ1ZmZlci5sZW5ndGg7XG4gICAgICAgIGkrK1xuICAgICAgKVxuICAgICAgICByb3cgKz0gc3RyaW5nRGVjb2Rlci5kZWNvZGUoYnVmZmVyW2ldLCBkZWNvZGVyT3B0aW9ucyk7XG4gICAgICByb3cgKz0gc3RyaW5nRGVjb2Rlci5kZWNvZGUoY2h1bmspO1xuICAgICAgcHJvY2Vzc0Z1bGxTdHJpbmdSb3cocmVzcG9uc2UsIHN0cmVhbVN0YXRlLCBpZCwgdGFnLCByb3cpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcm9jZXNzRnVsbFN0cmluZ1JvdyhyZXNwb25zZSwgc3RyZWFtU3RhdGUsIGlkLCB0YWcsIHJvdykge1xuICAgICAgc3dpdGNoICh0YWcpIHtcbiAgICAgICAgY2FzZSA3MzpcbiAgICAgICAgICByZXNvbHZlTW9kdWxlKHJlc3BvbnNlLCBpZCwgcm93LCBzdHJlYW1TdGF0ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNzI6XG4gICAgICAgICAgaWQgPSByb3dbMF07XG4gICAgICAgICAgc3RyZWFtU3RhdGUgPSByb3cuc2xpY2UoMSk7XG4gICAgICAgICAgcmVzcG9uc2UgPSBwYXJzZU1vZGVsKHJlc3BvbnNlLCBzdHJlYW1TdGF0ZSk7XG4gICAgICAgICAgc3RyZWFtU3RhdGUgPSBSZWFjdERPTVNoYXJlZEludGVybmFscy5kO1xuICAgICAgICAgIHN3aXRjaCAoaWQpIHtcbiAgICAgICAgICAgIGNhc2UgXCJEXCI6XG4gICAgICAgICAgICAgIHN0cmVhbVN0YXRlLkQocmVzcG9uc2UpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJDXCI6XG4gICAgICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiByZXNwb25zZVxuICAgICAgICAgICAgICAgID8gc3RyZWFtU3RhdGUuQyhyZXNwb25zZSlcbiAgICAgICAgICAgICAgICA6IHN0cmVhbVN0YXRlLkMocmVzcG9uc2VbMF0sIHJlc3BvbnNlWzFdKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiTFwiOlxuICAgICAgICAgICAgICBpZCA9IHJlc3BvbnNlWzBdO1xuICAgICAgICAgICAgICByb3cgPSByZXNwb25zZVsxXTtcbiAgICAgICAgICAgICAgMyA9PT0gcmVzcG9uc2UubGVuZ3RoXG4gICAgICAgICAgICAgICAgPyBzdHJlYW1TdGF0ZS5MKGlkLCByb3csIHJlc3BvbnNlWzJdKVxuICAgICAgICAgICAgICAgIDogc3RyZWFtU3RhdGUuTChpZCwgcm93KTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwibVwiOlxuICAgICAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgcmVzcG9uc2VcbiAgICAgICAgICAgICAgICA/IHN0cmVhbVN0YXRlLm0ocmVzcG9uc2UpXG4gICAgICAgICAgICAgICAgOiBzdHJlYW1TdGF0ZS5tKHJlc3BvbnNlWzBdLCByZXNwb25zZVsxXSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIlhcIjpcbiAgICAgICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHJlc3BvbnNlXG4gICAgICAgICAgICAgICAgPyBzdHJlYW1TdGF0ZS5YKHJlc3BvbnNlKVxuICAgICAgICAgICAgICAgIDogc3RyZWFtU3RhdGUuWChyZXNwb25zZVswXSwgcmVzcG9uc2VbMV0pO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJTXCI6XG4gICAgICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiByZXNwb25zZVxuICAgICAgICAgICAgICAgID8gc3RyZWFtU3RhdGUuUyhyZXNwb25zZSlcbiAgICAgICAgICAgICAgICA6IHN0cmVhbVN0YXRlLlMoXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlWzBdLFxuICAgICAgICAgICAgICAgICAgICAwID09PSByZXNwb25zZVsxXSA/IHZvaWQgMCA6IHJlc3BvbnNlWzFdLFxuICAgICAgICAgICAgICAgICAgICAzID09PSByZXNwb25zZS5sZW5ndGggPyByZXNwb25zZVsyXSA6IHZvaWQgMFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiTVwiOlxuICAgICAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgcmVzcG9uc2VcbiAgICAgICAgICAgICAgICA/IHN0cmVhbVN0YXRlLk0ocmVzcG9uc2UpXG4gICAgICAgICAgICAgICAgOiBzdHJlYW1TdGF0ZS5NKHJlc3BvbnNlWzBdLCByZXNwb25zZVsxXSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDY5OlxuICAgICAgICAgIHRhZyA9IHJlc3BvbnNlLl9jaHVua3M7XG4gICAgICAgICAgdmFyIGNodW5rID0gdGFnLmdldChpZCk7XG4gICAgICAgICAgcm93ID0gSlNPTi5wYXJzZShyb3cpO1xuICAgICAgICAgIHZhciBlcnJvciA9IHJlc29sdmVFcnJvckRldihyZXNwb25zZSwgcm93KTtcbiAgICAgICAgICBlcnJvci5kaWdlc3QgPSByb3cuZGlnZXN0O1xuICAgICAgICAgIGNodW5rXG4gICAgICAgICAgICA/IChyZXNvbHZlQ2h1bmtEZWJ1Z0luZm8ocmVzcG9uc2UsIHN0cmVhbVN0YXRlLCBjaHVuayksXG4gICAgICAgICAgICAgIHRyaWdnZXJFcnJvck9uQ2h1bmsocmVzcG9uc2UsIGNodW5rLCBlcnJvcikpXG4gICAgICAgICAgICA6ICgocm93ID0gbmV3IFJlYWN0UHJvbWlzZShcInJlamVjdGVkXCIsIG51bGwsIGVycm9yKSksXG4gICAgICAgICAgICAgIHJlc29sdmVDaHVua0RlYnVnSW5mbyhyZXNwb25zZSwgc3RyZWFtU3RhdGUsIHJvdyksXG4gICAgICAgICAgICAgIHRhZy5zZXQoaWQsIHJvdykpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDg0OlxuICAgICAgICAgIHRhZyA9IHJlc3BvbnNlLl9jaHVua3M7XG4gICAgICAgICAgKGNodW5rID0gdGFnLmdldChpZCkpICYmIFwicGVuZGluZ1wiICE9PSBjaHVuay5zdGF0dXNcbiAgICAgICAgICAgID8gY2h1bmsucmVhc29uLmVucXVldWVWYWx1ZShyb3cpXG4gICAgICAgICAgICA6IChjaHVuayAmJiByZWxlYXNlUGVuZGluZ0NodW5rKHJlc3BvbnNlLCBjaHVuayksXG4gICAgICAgICAgICAgIChyb3cgPSBuZXcgUmVhY3RQcm9taXNlKFwiZnVsZmlsbGVkXCIsIHJvdywgbnVsbCkpLFxuICAgICAgICAgICAgICByZXNvbHZlQ2h1bmtEZWJ1Z0luZm8ocmVzcG9uc2UsIHN0cmVhbVN0YXRlLCByb3cpLFxuICAgICAgICAgICAgICB0YWcuc2V0KGlkLCByb3cpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3ODpcbiAgICAgICAgICByZXNwb25zZS5fdGltZU9yaWdpbiA9ICtyb3cgLSBwZXJmb3JtYW5jZS50aW1lT3JpZ2luO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDY4OlxuICAgICAgICAgIGlkID0gZ2V0Q2h1bmsocmVzcG9uc2UsIGlkKTtcbiAgICAgICAgICBcImZ1bGZpbGxlZFwiICE9PSBpZC5zdGF0dXMgJiZcbiAgICAgICAgICAgIFwicmVqZWN0ZWRcIiAhPT0gaWQuc3RhdHVzICYmXG4gICAgICAgICAgICBcImhhbHRlZFwiICE9PSBpZC5zdGF0dXMgJiZcbiAgICAgICAgICAgIFwiYmxvY2tlZFwiICE9PSBpZC5zdGF0dXMgJiZcbiAgICAgICAgICAgIFwicmVzb2x2ZWRfbW9kdWxlXCIgIT09IGlkLnN0YXR1cyAmJlxuICAgICAgICAgICAgKChzdHJlYW1TdGF0ZSA9IGlkLl9kZWJ1Z0NodW5rKSxcbiAgICAgICAgICAgICh0YWcgPSBjcmVhdGVSZXNvbHZlZE1vZGVsQ2h1bmsocmVzcG9uc2UsIHJvdykpLFxuICAgICAgICAgICAgKHRhZy5fZGVidWdDaHVuayA9IHN0cmVhbVN0YXRlKSxcbiAgICAgICAgICAgIChpZC5fZGVidWdDaHVuayA9IHRhZyksXG4gICAgICAgICAgICBpbml0aWFsaXplRGVidWdDaHVuayhyZXNwb25zZSwgaWQpLFxuICAgICAgICAgICAgXCJibG9ja2VkXCIgIT09IHRhZy5zdGF0dXMgfHxcbiAgICAgICAgICAgICAgKHZvaWQgMCAhPT0gcmVzcG9uc2UuX2RlYnVnQ2hhbm5lbCAmJlxuICAgICAgICAgICAgICAgIHJlc3BvbnNlLl9kZWJ1Z0NoYW5uZWwuaGFzUmVhZGFibGUpIHx8XG4gICAgICAgICAgICAgICdcIicgIT09IHJvd1swXSB8fFxuICAgICAgICAgICAgICBcIiRcIiAhPT0gcm93WzFdIHx8XG4gICAgICAgICAgICAgICgoc3RyZWFtU3RhdGUgPSByb3cuc2xpY2UoMiwgcm93Lmxlbmd0aCAtIDEpLnNwbGl0KFwiOlwiKSksXG4gICAgICAgICAgICAgIChzdHJlYW1TdGF0ZSA9IHBhcnNlSW50KHN0cmVhbVN0YXRlWzBdLCAxNikpLFxuICAgICAgICAgICAgICBcInBlbmRpbmdcIiA9PT0gZ2V0Q2h1bmsocmVzcG9uc2UsIHN0cmVhbVN0YXRlKS5zdGF0dXMgJiZcbiAgICAgICAgICAgICAgICAoaWQuX2RlYnVnQ2h1bmsgPSBudWxsKSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDc0OlxuICAgICAgICAgIHJlc29sdmVJT0luZm8ocmVzcG9uc2UsIGlkLCByb3cpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDg3OlxuICAgICAgICAgIHJlc29sdmVDb25zb2xlRW50cnkocmVzcG9uc2UsIHJvdyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgODI6XG4gICAgICAgICAgc3RhcnRSZWFkYWJsZVN0cmVhbShyZXNwb25zZSwgaWQsIHZvaWQgMCwgc3RyZWFtU3RhdGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDExNDpcbiAgICAgICAgICBzdGFydFJlYWRhYmxlU3RyZWFtKHJlc3BvbnNlLCBpZCwgXCJieXRlc1wiLCBzdHJlYW1TdGF0ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgODg6XG4gICAgICAgICAgc3RhcnRBc3luY0l0ZXJhYmxlKHJlc3BvbnNlLCBpZCwgITEsIHN0cmVhbVN0YXRlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMjA6XG4gICAgICAgICAgc3RhcnRBc3luY0l0ZXJhYmxlKHJlc3BvbnNlLCBpZCwgITAsIHN0cmVhbVN0YXRlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA2NzpcbiAgICAgICAgICAoaWQgPSByZXNwb25zZS5fY2h1bmtzLmdldChpZCkpICYmXG4gICAgICAgICAgICBcImZ1bGZpbGxlZFwiID09PSBpZC5zdGF0dXMgJiZcbiAgICAgICAgICAgICgwID09PSAtLXJlc3BvbnNlLl9wZW5kaW5nQ2h1bmtzICYmXG4gICAgICAgICAgICAgIChyZXNwb25zZS5fd2Vha1Jlc3BvbnNlLnJlc3BvbnNlID0gbnVsbCksXG4gICAgICAgICAgICBpZC5yZWFzb24uY2xvc2UoXCJcIiA9PT0gcm93ID8gJ1wiJHVuZGVmaW5lZFwiJyA6IHJvdykpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGlmIChcIlwiID09PSByb3cpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgKChzdHJlYW1TdGF0ZSA9IHJlc3BvbnNlLl9jaHVua3MpLFxuICAgICAgICAgICAgICAocm93ID0gc3RyZWFtU3RhdGUuZ2V0KGlkKSkgfHxcbiAgICAgICAgICAgICAgICBzdHJlYW1TdGF0ZS5zZXQoaWQsIChyb3cgPSBjcmVhdGVQZW5kaW5nQ2h1bmsocmVzcG9uc2UpKSksXG4gICAgICAgICAgICAgIFwicGVuZGluZ1wiID09PSByb3cuc3RhdHVzIHx8IFwiYmxvY2tlZFwiID09PSByb3cuc3RhdHVzKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICByZWxlYXNlUGVuZGluZ0NodW5rKHJlc3BvbnNlLCByb3cpLFxuICAgICAgICAgICAgICAgIChyZXNwb25zZSA9IHJvdyksXG4gICAgICAgICAgICAgICAgKHJlc3BvbnNlLnN0YXR1cyA9IFwiaGFsdGVkXCIpLFxuICAgICAgICAgICAgICAgIChyZXNwb25zZS52YWx1ZSA9IG51bGwpLFxuICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWFzb24gPSBudWxsKTtcbiAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICh0YWcgPSByZXNwb25zZS5fY2h1bmtzKSxcbiAgICAgICAgICAgICAgKGNodW5rID0gdGFnLmdldChpZCkpXG4gICAgICAgICAgICAgICAgPyAocmVzb2x2ZUNodW5rRGVidWdJbmZvKHJlc3BvbnNlLCBzdHJlYW1TdGF0ZSwgY2h1bmspLFxuICAgICAgICAgICAgICAgICAgcmVzb2x2ZU1vZGVsQ2h1bmsocmVzcG9uc2UsIGNodW5rLCByb3cpKVxuICAgICAgICAgICAgICAgIDogKChyb3cgPSBjcmVhdGVSZXNvbHZlZE1vZGVsQ2h1bmsocmVzcG9uc2UsIHJvdykpLFxuICAgICAgICAgICAgICAgICAgcmVzb2x2ZUNodW5rRGVidWdJbmZvKHJlc3BvbnNlLCBzdHJlYW1TdGF0ZSwgcm93KSxcbiAgICAgICAgICAgICAgICAgIHRhZy5zZXQoaWQsIHJvdykpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBwcm9jZXNzQmluYXJ5Q2h1bmsod2Vha1Jlc3BvbnNlLCBzdHJlYW1TdGF0ZSwgY2h1bmspIHtcbiAgICAgIGlmICghaGFzR0NlZFJlc3BvbnNlKHdlYWtSZXNwb25zZSkpIHtcbiAgICAgICAgd2Vha1Jlc3BvbnNlID0gdW53cmFwV2Vha1Jlc3BvbnNlKHdlYWtSZXNwb25zZSk7XG4gICAgICAgIHZhciBpID0gMCxcbiAgICAgICAgICByb3dTdGF0ZSA9IHN0cmVhbVN0YXRlLl9yb3dTdGF0ZSxcbiAgICAgICAgICByb3dJRCA9IHN0cmVhbVN0YXRlLl9yb3dJRCxcbiAgICAgICAgICByb3dUYWcgPSBzdHJlYW1TdGF0ZS5fcm93VGFnLFxuICAgICAgICAgIHJvd0xlbmd0aCA9IHN0cmVhbVN0YXRlLl9yb3dMZW5ndGgsXG4gICAgICAgICAgYnVmZmVyID0gc3RyZWFtU3RhdGUuX2J1ZmZlcixcbiAgICAgICAgICBjaHVua0xlbmd0aCA9IGNodW5rLmxlbmd0aDtcbiAgICAgICAgZm9yIChcbiAgICAgICAgICBpbmNyZW1lbnRDaHVua0RlYnVnSW5mbyhzdHJlYW1TdGF0ZSwgY2h1bmtMZW5ndGgpO1xuICAgICAgICAgIGkgPCBjaHVua0xlbmd0aDtcblxuICAgICAgICApIHtcbiAgICAgICAgICB2YXIgbGFzdElkeCA9IC0xO1xuICAgICAgICAgIHN3aXRjaCAocm93U3RhdGUpIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgbGFzdElkeCA9IGNodW5rW2krK107XG4gICAgICAgICAgICAgIDU4ID09PSBsYXN0SWR4XG4gICAgICAgICAgICAgICAgPyAocm93U3RhdGUgPSAxKVxuICAgICAgICAgICAgICAgIDogKHJvd0lEID1cbiAgICAgICAgICAgICAgICAgICAgKHJvd0lEIDw8IDQpIHxcbiAgICAgICAgICAgICAgICAgICAgKDk2IDwgbGFzdElkeCA/IGxhc3RJZHggLSA4NyA6IGxhc3RJZHggLSA0OCkpO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgcm93U3RhdGUgPSBjaHVua1tpXTtcbiAgICAgICAgICAgICAgODQgPT09IHJvd1N0YXRlIHx8XG4gICAgICAgICAgICAgIDY1ID09PSByb3dTdGF0ZSB8fFxuICAgICAgICAgICAgICA3OSA9PT0gcm93U3RhdGUgfHxcbiAgICAgICAgICAgICAgMTExID09PSByb3dTdGF0ZSB8fFxuICAgICAgICAgICAgICA5OCA9PT0gcm93U3RhdGUgfHxcbiAgICAgICAgICAgICAgODUgPT09IHJvd1N0YXRlIHx8XG4gICAgICAgICAgICAgIDgzID09PSByb3dTdGF0ZSB8fFxuICAgICAgICAgICAgICAxMTUgPT09IHJvd1N0YXRlIHx8XG4gICAgICAgICAgICAgIDc2ID09PSByb3dTdGF0ZSB8fFxuICAgICAgICAgICAgICAxMDggPT09IHJvd1N0YXRlIHx8XG4gICAgICAgICAgICAgIDcxID09PSByb3dTdGF0ZSB8fFxuICAgICAgICAgICAgICAxMDMgPT09IHJvd1N0YXRlIHx8XG4gICAgICAgICAgICAgIDc3ID09PSByb3dTdGF0ZSB8fFxuICAgICAgICAgICAgICAxMDkgPT09IHJvd1N0YXRlIHx8XG4gICAgICAgICAgICAgIDg2ID09PSByb3dTdGF0ZVxuICAgICAgICAgICAgICAgID8gKChyb3dUYWcgPSByb3dTdGF0ZSksIChyb3dTdGF0ZSA9IDIpLCBpKyspXG4gICAgICAgICAgICAgICAgOiAoNjQgPCByb3dTdGF0ZSAmJiA5MSA+IHJvd1N0YXRlKSB8fFxuICAgICAgICAgICAgICAgICAgICAzNSA9PT0gcm93U3RhdGUgfHxcbiAgICAgICAgICAgICAgICAgICAgMTE0ID09PSByb3dTdGF0ZSB8fFxuICAgICAgICAgICAgICAgICAgICAxMjAgPT09IHJvd1N0YXRlXG4gICAgICAgICAgICAgICAgICA/ICgocm93VGFnID0gcm93U3RhdGUpLCAocm93U3RhdGUgPSAzKSwgaSsrKVxuICAgICAgICAgICAgICAgICAgOiAoKHJvd1RhZyA9IDApLCAocm93U3RhdGUgPSAzKSk7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICBsYXN0SWR4ID0gY2h1bmtbaSsrXTtcbiAgICAgICAgICAgICAgNDQgPT09IGxhc3RJZHhcbiAgICAgICAgICAgICAgICA/IChyb3dTdGF0ZSA9IDQpXG4gICAgICAgICAgICAgICAgOiAocm93TGVuZ3RoID1cbiAgICAgICAgICAgICAgICAgICAgKHJvd0xlbmd0aCA8PCA0KSB8XG4gICAgICAgICAgICAgICAgICAgICg5NiA8IGxhc3RJZHggPyBsYXN0SWR4IC0gODcgOiBsYXN0SWR4IC0gNDgpKTtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgIGxhc3RJZHggPSBjaHVuay5pbmRleE9mKDEwLCBpKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgIChsYXN0SWR4ID0gaSArIHJvd0xlbmd0aCksXG4gICAgICAgICAgICAgICAgbGFzdElkeCA+IGNodW5rLmxlbmd0aCAmJiAobGFzdElkeCA9IC0xKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIG9mZnNldCA9IGNodW5rLmJ5dGVPZmZzZXQgKyBpO1xuICAgICAgICAgIGlmICgtMSA8IGxhc3RJZHgpXG4gICAgICAgICAgICAocm93TGVuZ3RoID0gbmV3IFVpbnQ4QXJyYXkoY2h1bmsuYnVmZmVyLCBvZmZzZXQsIGxhc3RJZHggLSBpKSksXG4gICAgICAgICAgICAgIDk4ID09PSByb3dUYWdcbiAgICAgICAgICAgICAgICA/IHJlc29sdmVCdWZmZXIoXG4gICAgICAgICAgICAgICAgICAgIHdlYWtSZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgcm93SUQsXG4gICAgICAgICAgICAgICAgICAgIGxhc3RJZHggPT09IGNodW5rTGVuZ3RoID8gcm93TGVuZ3RoIDogcm93TGVuZ3RoLnNsaWNlKCksXG4gICAgICAgICAgICAgICAgICAgIHN0cmVhbVN0YXRlXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBwcm9jZXNzRnVsbEJpbmFyeVJvdyhcbiAgICAgICAgICAgICAgICAgICAgd2Vha1Jlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICBzdHJlYW1TdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgcm93SUQsXG4gICAgICAgICAgICAgICAgICAgIHJvd1RhZyxcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyLFxuICAgICAgICAgICAgICAgICAgICByb3dMZW5ndGhcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIChpID0gbGFzdElkeCksXG4gICAgICAgICAgICAgIDMgPT09IHJvd1N0YXRlICYmIGkrKyxcbiAgICAgICAgICAgICAgKHJvd0xlbmd0aCA9IHJvd0lEID0gcm93VGFnID0gcm93U3RhdGUgPSAwKSxcbiAgICAgICAgICAgICAgKGJ1ZmZlci5sZW5ndGggPSAwKTtcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNodW5rID0gbmV3IFVpbnQ4QXJyYXkoY2h1bmsuYnVmZmVyLCBvZmZzZXQsIGNodW5rLmJ5dGVMZW5ndGggLSBpKTtcbiAgICAgICAgICAgIDk4ID09PSByb3dUYWdcbiAgICAgICAgICAgICAgPyAoKHJvd0xlbmd0aCAtPSBjaHVuay5ieXRlTGVuZ3RoKSxcbiAgICAgICAgICAgICAgICByZXNvbHZlQnVmZmVyKHdlYWtSZXNwb25zZSwgcm93SUQsIGNodW5rLCBzdHJlYW1TdGF0ZSkpXG4gICAgICAgICAgICAgIDogKGJ1ZmZlci5wdXNoKGNodW5rKSwgKHJvd0xlbmd0aCAtPSBjaHVuay5ieXRlTGVuZ3RoKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc3RyZWFtU3RhdGUuX3Jvd1N0YXRlID0gcm93U3RhdGU7XG4gICAgICAgIHN0cmVhbVN0YXRlLl9yb3dJRCA9IHJvd0lEO1xuICAgICAgICBzdHJlYW1TdGF0ZS5fcm93VGFnID0gcm93VGFnO1xuICAgICAgICBzdHJlYW1TdGF0ZS5fcm93TGVuZ3RoID0gcm93TGVuZ3RoO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBwYXJzZU1vZGVsKHJlc3BvbnNlLCBqc29uKSB7XG4gICAgICBqc29uID0gSlNPTi5wYXJzZShqc29uKTtcbiAgICAgIHJldHVybiByZXZpdmVNb2RlbChyZXNwb25zZSwganNvbiwgeyBcIlwiOiBqc29uIH0sIFwiXCIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZXZpdmVNb2RlbChyZXNwb25zZSwgdmFsdWUsIHBhcmVudE9iamVjdCwga2V5KSB7XG4gICAgICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHZhbHVlKVxuICAgICAgICByZXR1cm4gXCIkXCIgPT09IHZhbHVlWzBdXG4gICAgICAgICAgPyBwYXJzZU1vZGVsU3RyaW5nKHJlc3BvbnNlLCBwYXJlbnRPYmplY3QsIGtleSwgdmFsdWUpXG4gICAgICAgICAgOiB2YWx1ZTtcbiAgICAgIGlmIChcIm9iamVjdFwiICE9PSB0eXBlb2YgdmFsdWUgfHwgbnVsbCA9PT0gdmFsdWUpIHJldHVybiB2YWx1ZTtcbiAgICAgIGlmIChpc0FycmF5SW1wbCh2YWx1ZSkpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICB2YWx1ZVtpXSA9IHJldml2ZU1vZGVsKHJlc3BvbnNlLCB2YWx1ZVtpXSwgdmFsdWUsIFwiXCIgKyBpKTtcbiAgICAgICAgaWYgKHZhbHVlWzBdID09PSBSRUFDVF9FTEVNRU5UX1RZUEUpIHtcbiAgICAgICAgICBpZiAodmFsdWVbMF0gPT09IFJFQUNUX0VMRU1FTlRfVFlQRSlcbiAgICAgICAgICAgIGI6IHtcbiAgICAgICAgICAgICAga2V5ID0gdmFsdWVbNF07XG4gICAgICAgICAgICAgIHBhcmVudE9iamVjdCA9IHZhbHVlWzVdO1xuICAgICAgICAgICAgICBpID0gdmFsdWVbNl07XG4gICAgICAgICAgICAgIHZhbHVlID0ge1xuICAgICAgICAgICAgICAgICQkdHlwZW9mOiBSRUFDVF9FTEVNRU5UX1RZUEUsXG4gICAgICAgICAgICAgICAgdHlwZTogdmFsdWVbMV0sXG4gICAgICAgICAgICAgICAga2V5OiB2YWx1ZVsyXSxcbiAgICAgICAgICAgICAgICBwcm9wczogdmFsdWVbM10sXG4gICAgICAgICAgICAgICAgX293bmVyOiB2b2lkIDAgPT09IGtleSA/IG51bGwgOiBrZXlcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHZhbHVlLCBcInJlZlwiLCB7XG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICAgICAgICAgICAgZ2V0OiBudWxsUmVmR2V0dGVyXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB2YWx1ZS5fc3RvcmUgPSB7fTtcbiAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHZhbHVlLl9zdG9yZSwgXCJ2YWxpZGF0ZWRcIiwge1xuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITEsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBpXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodmFsdWUsIFwiX2RlYnVnSW5mb1wiLCB7XG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMSxcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgXCJfZGVidWdTdGFja1wiLCB7XG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMSxcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZvaWQgMCA9PT0gcGFyZW50T2JqZWN0ID8gbnVsbCA6IHBhcmVudE9iamVjdFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHZhbHVlLCBcIl9kZWJ1Z1Rhc2tcIiwge1xuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITEsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gaW5pdGlhbGl6aW5nSGFuZGxlcikge1xuICAgICAgICAgICAgICAgIGtleSA9IGluaXRpYWxpemluZ0hhbmRsZXI7XG4gICAgICAgICAgICAgICAgaW5pdGlhbGl6aW5nSGFuZGxlciA9IGtleS5wYXJlbnQ7XG4gICAgICAgICAgICAgICAgaWYgKGtleS5lcnJvcmVkKSB7XG4gICAgICAgICAgICAgICAgICBwYXJlbnRPYmplY3QgPSBuZXcgUmVhY3RQcm9taXNlKFwicmVqZWN0ZWRcIiwgbnVsbCwga2V5LnJlYXNvbik7XG4gICAgICAgICAgICAgICAgICBpbml0aWFsaXplRWxlbWVudChyZXNwb25zZSwgdmFsdWUsIG51bGwpO1xuICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh2YWx1ZS50eXBlKSB8fCBcIlwiLFxuICAgICAgICAgICAgICAgICAgICBvd25lcjogdmFsdWUuX293bmVyXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZGVidWdTdGFjayA9IHZhbHVlLl9kZWJ1Z1N0YWNrO1xuICAgICAgICAgICAgICAgICAgc3VwcG9ydHNDcmVhdGVUYXNrICYmIChyZXNwb25zZS5kZWJ1Z1Rhc2sgPSB2YWx1ZS5fZGVidWdUYXNrKTtcbiAgICAgICAgICAgICAgICAgIHBhcmVudE9iamVjdC5fZGVidWdJbmZvID0gW3Jlc3BvbnNlXTtcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gY3JlYXRlTGF6eUNodW5rV3JhcHBlcihwYXJlbnRPYmplY3QsIGkpO1xuICAgICAgICAgICAgICAgICAgYnJlYWsgYjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKDAgPCBrZXkuZGVwcykge1xuICAgICAgICAgICAgICAgICAgcGFyZW50T2JqZWN0ID0gbmV3IFJlYWN0UHJvbWlzZShcImJsb2NrZWRcIiwgbnVsbCwgbnVsbCk7XG4gICAgICAgICAgICAgICAgICBrZXkudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgIGtleS5jaHVuayA9IHBhcmVudE9iamVjdDtcbiAgICAgICAgICAgICAgICAgIGkgPSBjcmVhdGVMYXp5Q2h1bmtXcmFwcGVyKHBhcmVudE9iamVjdCwgaSk7XG4gICAgICAgICAgICAgICAgICByZXNwb25zZSA9IGluaXRpYWxpemVFbGVtZW50LmJpbmQobnVsbCwgcmVzcG9uc2UsIHZhbHVlLCBpKTtcbiAgICAgICAgICAgICAgICAgIHBhcmVudE9iamVjdC50aGVuKHJlc3BvbnNlLCByZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICByZXNwb25zZSA9IGk7XG4gICAgICAgICAgICAgICAgICBicmVhayBiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpbml0aWFsaXplRWxlbWVudChyZXNwb25zZSwgdmFsdWUsIG51bGwpO1xuICAgICAgICAgICAgICByZXNwb25zZSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgcmVzcG9uc2UgPSB2YWx1ZTtcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgZm9yIChpIGluIHZhbHVlKVxuICAgICAgICBcIl9fcHJvdG9fX1wiID09PSBpXG4gICAgICAgICAgPyBkZWxldGUgdmFsdWVbaV1cbiAgICAgICAgICA6ICgocGFyZW50T2JqZWN0ID0gcmV2aXZlTW9kZWwocmVzcG9uc2UsIHZhbHVlW2ldLCB2YWx1ZSwgaSkpLFxuICAgICAgICAgICAgdm9pZCAwICE9PSBwYXJlbnRPYmplY3RcbiAgICAgICAgICAgICAgPyAodmFsdWVbaV0gPSBwYXJlbnRPYmplY3QpXG4gICAgICAgICAgICAgIDogZGVsZXRlIHZhbHVlW2ldKTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2xvc2Uod2Vha1Jlc3BvbnNlKSB7XG4gICAgICBpZiAoIWhhc0dDZWRSZXNwb25zZSh3ZWFrUmVzcG9uc2UpKSB7XG4gICAgICAgIHZhciByZXNwb25zZSA9IHVud3JhcFdlYWtSZXNwb25zZSh3ZWFrUmVzcG9uc2UpO1xuICAgICAgICByZXNwb25zZS5fYWxsb3dQYXJ0aWFsU3RyZWFtXG4gICAgICAgICAgPyAoKHJlc3BvbnNlLl9jbG9zZWQgPSAhMCksXG4gICAgICAgICAgICByZXNwb25zZS5fY2h1bmtzLmZvckVhY2goZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgICAgICAgICAgIFwicGVuZGluZ1wiID09PSBjaHVuay5zdGF0dXNcbiAgICAgICAgICAgICAgICA/IChyZWxlYXNlUGVuZGluZ0NodW5rKHJlc3BvbnNlLCBjaHVuayksXG4gICAgICAgICAgICAgICAgICAoY2h1bmsuc3RhdHVzID0gXCJoYWx0ZWRcIiksXG4gICAgICAgICAgICAgICAgICAoY2h1bmsudmFsdWUgPSBudWxsKSxcbiAgICAgICAgICAgICAgICAgIChjaHVuay5yZWFzb24gPSBudWxsKSlcbiAgICAgICAgICAgICAgICA6IFwiZnVsZmlsbGVkXCIgPT09IGNodW5rLnN0YXR1cyAmJlxuICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gY2h1bmsucmVhc29uICYmXG4gICAgICAgICAgICAgICAgICBjaHVuay5yZWFzb24uY2xvc2UoJ1wiJHVuZGVmaW5lZFwiJyk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICh3ZWFrUmVzcG9uc2UgPSByZXNwb25zZS5fZGVidWdDaGFubmVsKSxcbiAgICAgICAgICAgIHZvaWQgMCAhPT0gd2Vha1Jlc3BvbnNlICYmXG4gICAgICAgICAgICAgIChjbG9zZURlYnVnQ2hhbm5lbCh3ZWFrUmVzcG9uc2UpLFxuICAgICAgICAgICAgICAocmVzcG9uc2UuX2RlYnVnQ2hhbm5lbCA9IHZvaWQgMCksXG4gICAgICAgICAgICAgIG51bGwgIT09IGRlYnVnQ2hhbm5lbFJlZ2lzdHJ5ICYmXG4gICAgICAgICAgICAgICAgZGVidWdDaGFubmVsUmVnaXN0cnkudW5yZWdpc3RlcihyZXNwb25zZSkpKVxuICAgICAgICAgIDogcmVwb3J0R2xvYmFsRXJyb3Iod2Vha1Jlc3BvbnNlLCBFcnJvcihcIkNvbm5lY3Rpb24gY2xvc2VkLlwiKSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIG5vU2VydmVyQ2FsbCQxKCkge1xuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgIFwiU2VydmVyIEZ1bmN0aW9ucyBjYW5ub3QgYmUgY2FsbGVkIGR1cmluZyBpbml0aWFsIHJlbmRlci4gVGhpcyB3b3VsZCBjcmVhdGUgYSBmZXRjaCB3YXRlcmZhbGwuIFRyeSB0byB1c2UgYSBTZXJ2ZXIgQ29tcG9uZW50IHRvIHBhc3MgZGF0YSB0byBDbGllbnQgQ29tcG9uZW50cyBpbnN0ZWFkLlwiXG4gICAgICApO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjcmVhdGVSZXNwb25zZUZyb21PcHRpb25zKG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBjcmVhdGVSZXNwb25zZShcbiAgICAgICAgb3B0aW9ucy5zZXJ2ZXJDb25zdW1lck1hbmlmZXN0Lm1vZHVsZU1hcCxcbiAgICAgICAgb3B0aW9ucy5zZXJ2ZXJDb25zdW1lck1hbmlmZXN0LnNlcnZlck1vZHVsZU1hcCxcbiAgICAgICAgb3B0aW9ucy5zZXJ2ZXJDb25zdW1lck1hbmlmZXN0Lm1vZHVsZUxvYWRpbmcsXG4gICAgICAgIG5vU2VydmVyQ2FsbCQxLFxuICAgICAgICBvcHRpb25zLmVuY29kZUZvcm1BY3Rpb24sXG4gICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLm5vbmNlID8gb3B0aW9ucy5ub25jZSA6IHZvaWQgMCxcbiAgICAgICAgb3B0aW9ucyAmJiBvcHRpb25zLnRlbXBvcmFyeVJlZmVyZW5jZXNcbiAgICAgICAgICA/IG9wdGlvbnMudGVtcG9yYXJ5UmVmZXJlbmNlc1xuICAgICAgICAgIDogdm9pZCAwLFxuICAgICAgICBvcHRpb25zICYmIG9wdGlvbnMudW5zdGFibGVfYWxsb3dQYXJ0aWFsU3RyZWFtXG4gICAgICAgICAgPyBvcHRpb25zLnVuc3RhYmxlX2FsbG93UGFydGlhbFN0cmVhbVxuICAgICAgICAgIDogITEsXG4gICAgICAgIG9wdGlvbnMgJiYgb3B0aW9ucy5maW5kU291cmNlTWFwVVJMID8gb3B0aW9ucy5maW5kU291cmNlTWFwVVJMIDogdm9pZCAwLFxuICAgICAgICBvcHRpb25zID8gITAgPT09IG9wdGlvbnMucmVwbGF5Q29uc29sZUxvZ3MgOiAhMSxcbiAgICAgICAgb3B0aW9ucyAmJiBvcHRpb25zLmVudmlyb25tZW50TmFtZSA/IG9wdGlvbnMuZW52aXJvbm1lbnROYW1lIDogdm9pZCAwLFxuICAgICAgICBvcHRpb25zICYmIG51bGwgIT0gb3B0aW9ucy5zdGFydFRpbWUgPyBvcHRpb25zLnN0YXJ0VGltZSA6IHZvaWQgMCxcbiAgICAgICAgb3B0aW9ucyAmJiBudWxsICE9IG9wdGlvbnMuZW5kVGltZSA/IG9wdGlvbnMuZW5kVGltZSA6IHZvaWQgMCxcbiAgICAgICAgb3B0aW9ucyAmJiB2b2lkIDAgIT09IG9wdGlvbnMuZGVidWdDaGFubmVsXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGhhc1JlYWRhYmxlOiB2b2lkIDAgIT09IG9wdGlvbnMuZGVidWdDaGFubmVsLnJlYWRhYmxlLFxuICAgICAgICAgICAgICBjYWxsYmFjazogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogdm9pZCAwXG4gICAgICApO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzdGFydFJlYWRpbmdGcm9tU3RyZWFtJDEocmVzcG9uc2UsIHN0cmVhbSwgb25Eb25lLCBkZWJ1Z1ZhbHVlKSB7XG4gICAgICBmdW5jdGlvbiBwcm9ncmVzcyhfcmVmKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IF9yZWYudmFsdWU7XG4gICAgICAgIGlmIChfcmVmLmRvbmUpIHJldHVybiBvbkRvbmUoKTtcbiAgICAgICAgcHJvY2Vzc0JpbmFyeUNodW5rKHJlc3BvbnNlLCBzdHJlYW1TdGF0ZSwgdmFsdWUpO1xuICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHByb2dyZXNzKS5jYXRjaChlcnJvcik7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBlcnJvcihlKSB7XG4gICAgICAgIHJlcG9ydEdsb2JhbEVycm9yKHJlc3BvbnNlLCBlKTtcbiAgICAgIH1cbiAgICAgIHZhciBzdHJlYW1TdGF0ZSA9IGNyZWF0ZVN0cmVhbVN0YXRlKHJlc3BvbnNlLCBkZWJ1Z1ZhbHVlKSxcbiAgICAgICAgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpO1xuICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKHByb2dyZXNzKS5jYXRjaChlcnJvcik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG5vU2VydmVyQ2FsbCgpIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICBcIlNlcnZlciBGdW5jdGlvbnMgY2Fubm90IGJlIGNhbGxlZCBkdXJpbmcgaW5pdGlhbCByZW5kZXIuIFRoaXMgd291bGQgY3JlYXRlIGEgZmV0Y2ggd2F0ZXJmYWxsLiBUcnkgdG8gdXNlIGEgU2VydmVyIENvbXBvbmVudCB0byBwYXNzIGRhdGEgdG8gQ2xpZW50IENvbXBvbmVudHMgaW5zdGVhZC5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc3RhcnRSZWFkaW5nRnJvbVN0cmVhbShyZXNwb25zZSRqc2NvbXAkMCwgc3RyZWFtLCBvbkVuZCkge1xuICAgICAgdmFyIHN0cmVhbVN0YXRlID0gY3JlYXRlU3RyZWFtU3RhdGUocmVzcG9uc2UkanNjb21wJDAsIHN0cmVhbSk7XG4gICAgICBzdHJlYW0ub24oXCJkYXRhXCIsIGZ1bmN0aW9uIChjaHVuaykge1xuICAgICAgICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGNodW5rKSB7XG4gICAgICAgICAgaWYgKCFoYXNHQ2VkUmVzcG9uc2UocmVzcG9uc2UkanNjb21wJDApKSB7XG4gICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSB1bndyYXBXZWFrUmVzcG9uc2UocmVzcG9uc2UkanNjb21wJDApLFxuICAgICAgICAgICAgICBpID0gMCxcbiAgICAgICAgICAgICAgcm93U3RhdGUgPSBzdHJlYW1TdGF0ZS5fcm93U3RhdGUsXG4gICAgICAgICAgICAgIHJvd0lEID0gc3RyZWFtU3RhdGUuX3Jvd0lELFxuICAgICAgICAgICAgICByb3dUYWcgPSBzdHJlYW1TdGF0ZS5fcm93VGFnLFxuICAgICAgICAgICAgICByb3dMZW5ndGggPSBzdHJlYW1TdGF0ZS5fcm93TGVuZ3RoLFxuICAgICAgICAgICAgICBidWZmZXIgPSBzdHJlYW1TdGF0ZS5fYnVmZmVyLFxuICAgICAgICAgICAgICBjaHVua0xlbmd0aCA9IGNodW5rLmxlbmd0aDtcbiAgICAgICAgICAgIGZvciAoXG4gICAgICAgICAgICAgIGluY3JlbWVudENodW5rRGVidWdJbmZvKHN0cmVhbVN0YXRlLCBjaHVua0xlbmd0aCk7XG4gICAgICAgICAgICAgIGkgPCBjaHVua0xlbmd0aDtcblxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHZhciBsYXN0SWR4ID0gLTE7XG4gICAgICAgICAgICAgIHN3aXRjaCAocm93U3RhdGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICBsYXN0SWR4ID0gY2h1bmsuY2hhckNvZGVBdChpKyspO1xuICAgICAgICAgICAgICAgICAgNTggPT09IGxhc3RJZHhcbiAgICAgICAgICAgICAgICAgICAgPyAocm93U3RhdGUgPSAxKVxuICAgICAgICAgICAgICAgICAgICA6IChyb3dJRCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAocm93SUQgPDwgNCkgfFxuICAgICAgICAgICAgICAgICAgICAgICAgKDk2IDwgbGFzdElkeCA/IGxhc3RJZHggLSA4NyA6IGxhc3RJZHggLSA0OCkpO1xuICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgcm93U3RhdGUgPSBjaHVuay5jaGFyQ29kZUF0KGkpO1xuICAgICAgICAgICAgICAgICAgODQgPT09IHJvd1N0YXRlIHx8XG4gICAgICAgICAgICAgICAgICA2NSA9PT0gcm93U3RhdGUgfHxcbiAgICAgICAgICAgICAgICAgIDc5ID09PSByb3dTdGF0ZSB8fFxuICAgICAgICAgICAgICAgICAgMTExID09PSByb3dTdGF0ZSB8fFxuICAgICAgICAgICAgICAgICAgODUgPT09IHJvd1N0YXRlIHx8XG4gICAgICAgICAgICAgICAgICA4MyA9PT0gcm93U3RhdGUgfHxcbiAgICAgICAgICAgICAgICAgIDExNSA9PT0gcm93U3RhdGUgfHxcbiAgICAgICAgICAgICAgICAgIDc2ID09PSByb3dTdGF0ZSB8fFxuICAgICAgICAgICAgICAgICAgMTA4ID09PSByb3dTdGF0ZSB8fFxuICAgICAgICAgICAgICAgICAgNzEgPT09IHJvd1N0YXRlIHx8XG4gICAgICAgICAgICAgICAgICAxMDMgPT09IHJvd1N0YXRlIHx8XG4gICAgICAgICAgICAgICAgICA3NyA9PT0gcm93U3RhdGUgfHxcbiAgICAgICAgICAgICAgICAgIDEwOSA9PT0gcm93U3RhdGUgfHxcbiAgICAgICAgICAgICAgICAgIDg2ID09PSByb3dTdGF0ZVxuICAgICAgICAgICAgICAgICAgICA/ICgocm93VGFnID0gcm93U3RhdGUpLCAocm93U3RhdGUgPSAyKSwgaSsrKVxuICAgICAgICAgICAgICAgICAgICA6ICg2NCA8IHJvd1N0YXRlICYmIDkxID4gcm93U3RhdGUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAxMTQgPT09IHJvd1N0YXRlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAxMjAgPT09IHJvd1N0YXRlXG4gICAgICAgICAgICAgICAgICAgICAgPyAoKHJvd1RhZyA9IHJvd1N0YXRlKSwgKHJvd1N0YXRlID0gMyksIGkrKylcbiAgICAgICAgICAgICAgICAgICAgICA6ICgocm93VGFnID0gMCksIChyb3dTdGF0ZSA9IDMpKTtcbiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgIGxhc3RJZHggPSBjaHVuay5jaGFyQ29kZUF0KGkrKyk7XG4gICAgICAgICAgICAgICAgICA0NCA9PT0gbGFzdElkeFxuICAgICAgICAgICAgICAgICAgICA/IChyb3dTdGF0ZSA9IDQpXG4gICAgICAgICAgICAgICAgICAgIDogKHJvd0xlbmd0aCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAocm93TGVuZ3RoIDw8IDQpIHxcbiAgICAgICAgICAgICAgICAgICAgICAgICg5NiA8IGxhc3RJZHggPyBsYXN0SWR4IC0gODcgOiBsYXN0SWR4IC0gNDgpKTtcbiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgIGxhc3RJZHggPSBjaHVuay5pbmRleE9mKFwiXFxuXCIsIGkpO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgaWYgKDg0ICE9PSByb3dUYWcpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgIFwiQmluYXJ5IFJTQyBjaHVua3MgY2Fubm90IGJlIGVuY29kZWQgYXMgc3RyaW5ncy4gVGhpcyBpcyBhIGJ1ZyBpbiB0aGUgd2lyaW5nIG9mIHRoZSBSZWFjdCBzdHJlYW1zLlwiXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBpZiAocm93TGVuZ3RoIDwgY2h1bmsubGVuZ3RoIHx8IGNodW5rLmxlbmd0aCA+IDMgKiByb3dMZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgIFwiU3RyaW5nIGNodW5rcyBuZWVkIHRvIGJlIHBhc3NlZCBpbiB0aGVpciBvcmlnaW5hbCBzaGFwZS4gTm90IHNwbGl0IGludG8gc21hbGxlciBzdHJpbmcgY2h1bmtzLiBUaGlzIGlzIGEgYnVnIGluIHRoZSB3aXJpbmcgb2YgdGhlIFJlYWN0IHN0cmVhbXMuXCJcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGxhc3RJZHggPSBjaHVuay5sZW5ndGg7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKC0xIDwgbGFzdElkeCkge1xuICAgICAgICAgICAgICAgIGlmICgwIDwgYnVmZmVyLmxlbmd0aClcbiAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICBcIlN0cmluZyBjaHVua3MgbmVlZCB0byBiZSBwYXNzZWQgaW4gdGhlaXIgb3JpZ2luYWwgc2hhcGUuIE5vdCBzcGxpdCBpbnRvIHNtYWxsZXIgc3RyaW5nIGNodW5rcy4gVGhpcyBpcyBhIGJ1ZyBpbiB0aGUgd2lyaW5nIG9mIHRoZSBSZWFjdCBzdHJlYW1zLlwiXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGkgPSBjaHVuay5zbGljZShpLCBsYXN0SWR4KTtcbiAgICAgICAgICAgICAgICBwcm9jZXNzRnVsbFN0cmluZ1JvdyhyZXNwb25zZSwgc3RyZWFtU3RhdGUsIHJvd0lELCByb3dUYWcsIGkpO1xuICAgICAgICAgICAgICAgIGkgPSBsYXN0SWR4O1xuICAgICAgICAgICAgICAgIDMgPT09IHJvd1N0YXRlICYmIGkrKztcbiAgICAgICAgICAgICAgICByb3dMZW5ndGggPSByb3dJRCA9IHJvd1RhZyA9IHJvd1N0YXRlID0gMDtcbiAgICAgICAgICAgICAgICBidWZmZXIubGVuZ3RoID0gMDtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaHVuay5sZW5ndGggIT09IGkpXG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgICBcIlN0cmluZyBjaHVua3MgbmVlZCB0byBiZSBwYXNzZWQgaW4gdGhlaXIgb3JpZ2luYWwgc2hhcGUuIE5vdCBzcGxpdCBpbnRvIHNtYWxsZXIgc3RyaW5nIGNodW5rcy4gVGhpcyBpcyBhIGJ1ZyBpbiB0aGUgd2lyaW5nIG9mIHRoZSBSZWFjdCBzdHJlYW1zLlwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0cmVhbVN0YXRlLl9yb3dTdGF0ZSA9IHJvd1N0YXRlO1xuICAgICAgICAgICAgc3RyZWFtU3RhdGUuX3Jvd0lEID0gcm93SUQ7XG4gICAgICAgICAgICBzdHJlYW1TdGF0ZS5fcm93VGFnID0gcm93VGFnO1xuICAgICAgICAgICAgc3RyZWFtU3RhdGUuX3Jvd0xlbmd0aCA9IHJvd0xlbmd0aDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBwcm9jZXNzQmluYXJ5Q2h1bmsocmVzcG9uc2UkanNjb21wJDAsIHN0cmVhbVN0YXRlLCBjaHVuayk7XG4gICAgICB9KTtcbiAgICAgIHN0cmVhbS5vbihcImVycm9yXCIsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICByZXBvcnRHbG9iYWxFcnJvcihyZXNwb25zZSRqc2NvbXAkMCwgZXJyb3IpO1xuICAgICAgfSk7XG4gICAgICBzdHJlYW0ub24oXCJlbmRcIiwgb25FbmQpO1xuICAgIH1cbiAgICB2YXIgdXRpbCA9IHJlcXVpcmUoXCJ1dGlsXCIpLFxuICAgICAgUmVhY3RET00gPSByZXF1aXJlKFwicmVhY3QtZG9tXCIpLFxuICAgICAgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIiksXG4gICAgICBkZWNvZGVyT3B0aW9ucyA9IHsgc3RyZWFtOiAhMCB9LFxuICAgICAgYmluZCQxID0gRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQsXG4gICAgICBoYXNDb25maXJtZWRFdmFsID0gITEsXG4gICAgICBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksXG4gICAgICBjaHVua0NhY2hlID0gbmV3IE1hcCgpLFxuICAgICAgUmVhY3RET01TaGFyZWRJbnRlcm5hbHMgPVxuICAgICAgICBSZWFjdERPTS5fX0RPTV9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREUsXG4gICAgICBSRUFDVF9FTEVNRU5UX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QudHJhbnNpdGlvbmFsLmVsZW1lbnRcIiksXG4gICAgICBSRUFDVF9QT1JUQUxfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIiksXG4gICAgICBSRUFDVF9GUkFHTUVOVF9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLFxuICAgICAgUkVBQ1RfU1RSSUNUX01PREVfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKSxcbiAgICAgIFJFQUNUX1BST0ZJTEVSX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIiksXG4gICAgICBSRUFDVF9DT05TVU1FUl9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmNvbnN1bWVyXCIpLFxuICAgICAgUkVBQ1RfQ09OVEVYVF9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIiksXG4gICAgICBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpLFxuICAgICAgUkVBQ1RfU1VTUEVOU0VfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKSxcbiAgICAgIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZV9saXN0XCIpLFxuICAgICAgUkVBQ1RfTUVNT19UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIiksXG4gICAgICBSRUFDVF9MQVpZX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKSxcbiAgICAgIFJFQUNUX0FDVElWSVRZX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QuYWN0aXZpdHlcIiksXG4gICAgICBSRUFDVF9WSUVXX1RSQU5TSVRJT05fVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC52aWV3X3RyYW5zaXRpb25cIiksXG4gICAgICBNQVlCRV9JVEVSQVRPUl9TWU1CT0wgPSBTeW1ib2wuaXRlcmF0b3IsXG4gICAgICBBU1lOQ19JVEVSQVRPUiA9IFN5bWJvbC5hc3luY0l0ZXJhdG9yLFxuICAgICAgaXNBcnJheUltcGwgPSBBcnJheS5pc0FycmF5LFxuICAgICAgZ2V0UHJvdG90eXBlT2YgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YsXG4gICAgICBqc3hQcm9wc1BhcmVudHMgPSBuZXcgV2Vha01hcCgpLFxuICAgICAganN4Q2hpbGRyZW5QYXJlbnRzID0gbmV3IFdlYWtNYXAoKSxcbiAgICAgIENMSUVOVF9SRUZFUkVOQ0VfVEFHID0gU3ltYm9sLmZvcihcInJlYWN0LmNsaWVudC5yZWZlcmVuY2VcIiksXG4gICAgICBPYmplY3RQcm90b3R5cGUgPSBPYmplY3QucHJvdG90eXBlLFxuICAgICAga25vd25TZXJ2ZXJSZWZlcmVuY2VzID0gbmV3IFdlYWtNYXAoKSxcbiAgICAgIGJvdW5kQ2FjaGUgPSBuZXcgV2Vha01hcCgpLFxuICAgICAgZmFrZVNlcnZlckZ1bmN0aW9uSWR4ID0gMCxcbiAgICAgIEZ1bmN0aW9uQmluZCA9IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLFxuICAgICAgQXJyYXlTbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZSxcbiAgICAgIHY4RnJhbWVSZWdFeHAgPVxuICAgICAgICAvXiB7M30gYXQgKD86KC4rKSBcXCgoLispOihcXGQrKTooXFxkKylcXCl8KD86YXN5bmMgKT8oLispOihcXGQrKTooXFxkKykpJC8sXG4gICAgICBqc2NTcGlkZXJNb25rZXlGcmFtZVJlZ0V4cCA9IC8oPzooLiopQCk/KC4qKTooXFxkKyk6KFxcZCspLyxcbiAgICAgIFJFQUNUX0NMSUVOVF9SRUZFUkVOQ0UgPSBTeW1ib2wuZm9yKFwicmVhY3QuY2xpZW50LnJlZmVyZW5jZVwiKSxcbiAgICAgIHN1cHBvcnRzVXNlclRpbWluZyA9XG4gICAgICAgIFwidW5kZWZpbmVkXCIgIT09IHR5cGVvZiBjb25zb2xlICYmXG4gICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGNvbnNvbGUudGltZVN0YW1wICYmXG4gICAgICAgIFwidW5kZWZpbmVkXCIgIT09IHR5cGVvZiBwZXJmb3JtYW5jZSAmJlxuICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBwZXJmb3JtYW5jZS5tZWFzdXJlLFxuICAgICAgdHJhY2tOYW1lcyA9XG4gICAgICAgIFwiUHJpbWFyeSBQYXJhbGxlbCBQYXJhbGxlbFxcdTIwMGIgUGFyYWxsZWxcXHUyMDBiXFx1MjAwYiBQYXJhbGxlbFxcdTIwMGJcXHUyMDBiXFx1MjAwYiBQYXJhbGxlbFxcdTIwMGJcXHUyMDBiXFx1MjAwYlxcdTIwMGIgUGFyYWxsZWxcXHUyMDBiXFx1MjAwYlxcdTIwMGJcXHUyMDBiXFx1MjAwYiBQYXJhbGxlbFxcdTIwMGJcXHUyMDBiXFx1MjAwYlxcdTIwMGJcXHUyMDBiXFx1MjAwYiBQYXJhbGxlbFxcdTIwMGJcXHUyMDBiXFx1MjAwYlxcdTIwMGJcXHUyMDBiXFx1MjAwYlxcdTIwMGIgUGFyYWxsZWxcXHUyMDBiXFx1MjAwYlxcdTIwMGJcXHUyMDBiXFx1MjAwYlxcdTIwMGJcXHUyMDBiXFx1MjAwYlwiLnNwbGl0KFxuICAgICAgICAgIFwiIFwiXG4gICAgICAgICksXG4gICAgICBwcmVmaXgsXG4gICAgICBzdWZmaXg7XG4gICAgbmV3IChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBXZWFrTWFwID8gV2Vha01hcCA6IE1hcCkoKTtcbiAgICB2YXIgUmVhY3RTaGFyZWRJbnRlcmFsc1NlcnZlciA9XG4gICAgICAgIFJlYWN0Ll9fU0VSVkVSX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERSxcbiAgICAgIFJlYWN0U2hhcmVkSW50ZXJuYWxzID1cbiAgICAgICAgUmVhY3QuX19DTElFTlRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfV0FSTl9VU0VSU19USEVZX0NBTk5PVF9VUEdSQURFIHx8XG4gICAgICAgIFJlYWN0U2hhcmVkSW50ZXJhbHNTZXJ2ZXI7XG4gICAgUmVhY3RQcm9taXNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoUHJvbWlzZS5wcm90b3R5cGUpO1xuICAgIFJlYWN0UHJvbWlzZS5wcm90b3R5cGUudGhlbiA9IGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICBzd2l0Y2ggKHRoaXMuc3RhdHVzKSB7XG4gICAgICAgIGNhc2UgXCJyZXNvbHZlZF9tb2RlbFwiOlxuICAgICAgICAgIGluaXRpYWxpemVNb2RlbENodW5rKHRoaXMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmVzb2x2ZWRfbW9kdWxlXCI6XG4gICAgICAgICAgaW5pdGlhbGl6ZU1vZHVsZUNodW5rKHRoaXMpO1xuICAgICAgfVxuICAgICAgdmFyIHJlc29sdmVDYWxsYmFjayA9IHJlc29sdmUsXG4gICAgICAgIHJlamVjdENhbGxiYWNrID0gcmVqZWN0LFxuICAgICAgICB3cmFwcGVyUHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXMsIHJlaikge1xuICAgICAgICAgIHJlc29sdmUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHdyYXBwZXJQcm9taXNlLl9kZWJ1Z0luZm8gPSBfdGhpcy5fZGVidWdJbmZvO1xuICAgICAgICAgICAgcmVzKHZhbHVlKTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJlamVjdCA9IGZ1bmN0aW9uIChyZWFzb24pIHtcbiAgICAgICAgICAgIHdyYXBwZXJQcm9taXNlLl9kZWJ1Z0luZm8gPSBfdGhpcy5fZGVidWdJbmZvO1xuICAgICAgICAgICAgcmVqKHJlYXNvbik7XG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICB3cmFwcGVyUHJvbWlzZS50aGVuKHJlc29sdmVDYWxsYmFjaywgcmVqZWN0Q2FsbGJhY2spO1xuICAgICAgc3dpdGNoICh0aGlzLnN0YXR1cykge1xuICAgICAgICBjYXNlIFwiZnVsZmlsbGVkXCI6XG4gICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgcmVzb2x2ZSAmJiByZXNvbHZlKHRoaXMudmFsdWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicGVuZGluZ1wiOlxuICAgICAgICBjYXNlIFwiYmxvY2tlZFwiOlxuICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHJlc29sdmUgJiZcbiAgICAgICAgICAgIChudWxsID09PSB0aGlzLnZhbHVlICYmICh0aGlzLnZhbHVlID0gW10pLFxuICAgICAgICAgICAgdGhpcy52YWx1ZS5wdXNoKHJlc29sdmUpKTtcbiAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiByZWplY3QgJiZcbiAgICAgICAgICAgIChudWxsID09PSB0aGlzLnJlYXNvbiAmJiAodGhpcy5yZWFzb24gPSBbXSksXG4gICAgICAgICAgICB0aGlzLnJlYXNvbi5wdXNoKHJlamVjdCkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiaGFsdGVkXCI6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgcmVqZWN0ICYmIHJlamVjdCh0aGlzLnJlYXNvbik7XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgZGVidWdDaGFubmVsUmVnaXN0cnkgPVxuICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBGaW5hbGl6YXRpb25SZWdpc3RyeVxuICAgICAgICAgID8gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsb3NlRGVidWdDaGFubmVsKVxuICAgICAgICAgIDogbnVsbCxcbiAgICAgIGluaXRpYWxpemluZ0hhbmRsZXIgPSBudWxsLFxuICAgICAgaW5pdGlhbGl6aW5nQ2h1bmsgPSBudWxsLFxuICAgICAgaXNJbml0aWFsaXppbmdEZWJ1Z0luZm8gPSAhMSxcbiAgICAgIG1pZ2h0SGF2ZVN0YXRpY0NvbnN0cnVjdG9yID0gL1xcYmNsYXNzXFxiLipcXGJzdGF0aWNcXGIvLFxuICAgICAgTUlOX0NIVU5LX1NJWkUgPSA2NTUzNixcbiAgICAgIHN1cHBvcnRzQ3JlYXRlVGFzayA9ICEhY29uc29sZS5jcmVhdGVUYXNrLFxuICAgICAgZmFrZUZ1bmN0aW9uQ2FjaGUgPSBuZXcgTWFwKCksXG4gICAgICBmYWtlRnVuY3Rpb25JZHggPSAwLFxuICAgICAgY3JlYXRlRmFrZUpTWENhbGxTdGFjayA9IHtcbiAgICAgICAgcmVhY3Rfc3RhY2tfYm90dG9tX2ZyYW1lOiBmdW5jdGlvbiAocmVzcG9uc2UsIHN0YWNrLCBlbnZpcm9ubWVudE5hbWUpIHtcbiAgICAgICAgICByZXR1cm4gYnVpbGRGYWtlQ2FsbFN0YWNrKFxuICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICBzdGFjayxcbiAgICAgICAgICAgIGVudmlyb25tZW50TmFtZSxcbiAgICAgICAgICAgICExLFxuICAgICAgICAgICAgZmFrZUpTWENhbGxTaXRlXG4gICAgICAgICAgKSgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgY3JlYXRlRmFrZUpTWENhbGxTdGFja0luREVWID1cbiAgICAgICAgY3JlYXRlRmFrZUpTWENhbGxTdGFjay5yZWFjdF9zdGFja19ib3R0b21fZnJhbWUuYmluZChcbiAgICAgICAgICBjcmVhdGVGYWtlSlNYQ2FsbFN0YWNrXG4gICAgICAgICksXG4gICAgICBjdXJyZW50T3duZXJJbkRFViA9IG51bGwsXG4gICAgICByZXBsYXlDb25zb2xlV2l0aENhbGxTdGFjayA9IHtcbiAgICAgICAgcmVhY3Rfc3RhY2tfYm90dG9tX2ZyYW1lOiBmdW5jdGlvbiAocmVzcG9uc2UsIHBheWxvYWQpIHtcbiAgICAgICAgICB2YXIgbWV0aG9kTmFtZSA9IHBheWxvYWRbMF0sXG4gICAgICAgICAgICBzdGFja1RyYWNlID0gcGF5bG9hZFsxXSxcbiAgICAgICAgICAgIG93bmVyID0gcGF5bG9hZFsyXSxcbiAgICAgICAgICAgIGVudiA9IHBheWxvYWRbM107XG4gICAgICAgICAgcGF5bG9hZCA9IHBheWxvYWQuc2xpY2UoNCk7XG4gICAgICAgICAgdmFyIHByZXZTdGFjayA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLmdldEN1cnJlbnRTdGFjaztcbiAgICAgICAgICBSZWFjdFNoYXJlZEludGVybmFscy5nZXRDdXJyZW50U3RhY2sgPSBnZXRDdXJyZW50U3RhY2tJbkRFVjtcbiAgICAgICAgICBjdXJyZW50T3duZXJJbkRFViA9IG51bGwgPT09IG93bmVyID8gcmVzcG9uc2UuX2RlYnVnUm9vdE93bmVyIDogb3duZXI7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGE6IHtcbiAgICAgICAgICAgICAgdmFyIG9mZnNldCA9IDA7XG4gICAgICAgICAgICAgIHN3aXRjaCAobWV0aG9kTmFtZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJkaXJcIjpcbiAgICAgICAgICAgICAgICBjYXNlIFwiZGlyeG1sXCI6XG4gICAgICAgICAgICAgICAgY2FzZSBcImdyb3VwRW5kXCI6XG4gICAgICAgICAgICAgICAgY2FzZSBcInRhYmxlXCI6XG4gICAgICAgICAgICAgICAgICB2YXIgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID0gYmluZCQxLmFwcGx5KFxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlW21ldGhvZE5hbWVdLFxuICAgICAgICAgICAgICAgICAgICBbY29uc29sZV0uY29uY2F0KHBheWxvYWQpXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICAgICAgICBjYXNlIFwiYXNzZXJ0XCI6XG4gICAgICAgICAgICAgICAgICBvZmZzZXQgPSAxO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHZhciBuZXdBcmdzID0gcGF5bG9hZC5zbGljZSgwKTtcbiAgICAgICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG5ld0FyZ3Nbb2Zmc2V0XVxuICAgICAgICAgICAgICAgID8gbmV3QXJncy5zcGxpY2UoXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgXCJcXHUwMDFiWzBtXFx1MDAxYls3bSVjJXNcXHUwMDFiWzBtJWMgXCIgKyBuZXdBcmdzW29mZnNldF0sXG4gICAgICAgICAgICAgICAgICAgIFwiYmFja2dyb3VuZDogI2U2ZTZlNjtiYWNrZ3JvdW5kOiBsaWdodC1kYXJrKHJnYmEoMCwwLDAsMC4xKSwgcmdiYSgyNTUsMjU1LDI1NSwwLjI1KSk7Y29sb3I6ICMwMDAwMDA7Y29sb3I6IGxpZ2h0LWRhcmsoIzAwMDAwMCwgI2ZmZmZmZik7Ym9yZGVyLXJhZGl1czogMnB4XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiIFwiICsgZW52ICsgXCIgXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IG5ld0FyZ3Muc3BsaWNlKFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgIFwiXFx1MDAxYlswbVxcdTAwMWJbN20lYyVzXFx1MDAxYlswbSVjXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYmFja2dyb3VuZDogI2U2ZTZlNjtiYWNrZ3JvdW5kOiBsaWdodC1kYXJrKHJnYmEoMCwwLDAsMC4xKSwgcmdiYSgyNTUsMjU1LDI1NSwwLjI1KSk7Y29sb3I6ICMwMDAwMDA7Y29sb3I6IGxpZ2h0LWRhcmsoIzAwMDAwMCwgI2ZmZmZmZik7Ym9yZGVyLXJhZGl1czogMnB4XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiIFwiICsgZW52ICsgXCIgXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIG5ld0FyZ3MudW5zaGlmdChjb25zb2xlKTtcbiAgICAgICAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID0gYmluZCQxLmFwcGx5KFxuICAgICAgICAgICAgICAgIGNvbnNvbGVbbWV0aG9kTmFtZV0sXG4gICAgICAgICAgICAgICAgbmV3QXJnc1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGNhbGxTdGFjayA9IGJ1aWxkRmFrZUNhbGxTdGFjayhcbiAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgIHN0YWNrVHJhY2UsXG4gICAgICAgICAgICAgIGVudixcbiAgICAgICAgICAgICAgITEsXG4gICAgICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChudWxsICE9IG93bmVyKSB7XG4gICAgICAgICAgICAgIHZhciB0YXNrID0gaW5pdGlhbGl6ZUZha2VUYXNrKHJlc3BvbnNlLCBvd25lcik7XG4gICAgICAgICAgICAgIGluaXRpYWxpemVGYWtlU3RhY2socmVzcG9uc2UsIG93bmVyKTtcbiAgICAgICAgICAgICAgaWYgKG51bGwgIT09IHRhc2spIHtcbiAgICAgICAgICAgICAgICB0YXNrLnJ1bihjYWxsU3RhY2spO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHJvb3RUYXNrID0gZ2V0Um9vdFRhc2socmVzcG9uc2UsIGVudik7XG4gICAgICAgICAgICBudWxsICE9IHJvb3RUYXNrID8gcm9vdFRhc2sucnVuKGNhbGxTdGFjaykgOiBjYWxsU3RhY2soKTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgKGN1cnJlbnRPd25lckluREVWID0gbnVsbCksXG4gICAgICAgICAgICAgIChSZWFjdFNoYXJlZEludGVybmFscy5nZXRDdXJyZW50U3RhY2sgPSBwcmV2U3RhY2spO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJlcGxheUNvbnNvbGVXaXRoQ2FsbFN0YWNrSW5ERVYgPVxuICAgICAgICByZXBsYXlDb25zb2xlV2l0aENhbGxTdGFjay5yZWFjdF9zdGFja19ib3R0b21fZnJhbWUuYmluZChcbiAgICAgICAgICByZXBsYXlDb25zb2xlV2l0aENhbGxTdGFja1xuICAgICAgICApO1xuICAgIGV4cG9ydHMuY3JlYXRlRnJvbUZldGNoID0gZnVuY3Rpb24gKHByb21pc2VGb3JSZXNwb25zZSwgb3B0aW9ucykge1xuICAgICAgdmFyIHJlc3BvbnNlID0gY3JlYXRlUmVzcG9uc2VGcm9tT3B0aW9ucyhvcHRpb25zKTtcbiAgICAgIHByb21pc2VGb3JSZXNwb25zZS50aGVuKFxuICAgICAgICBmdW5jdGlvbiAocikge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG9wdGlvbnMgJiZcbiAgICAgICAgICAgIG9wdGlvbnMuZGVidWdDaGFubmVsICYmXG4gICAgICAgICAgICBvcHRpb25zLmRlYnVnQ2hhbm5lbC5yZWFkYWJsZVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdmFyIHN0cmVhbURvbmVDb3VudCA9IDAsXG4gICAgICAgICAgICAgIGhhbmRsZURvbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgMiA9PT0gKytzdHJlYW1Eb25lQ291bnQgJiYgY2xvc2UocmVzcG9uc2UpO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgc3RhcnRSZWFkaW5nRnJvbVN0cmVhbSQxKFxuICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgb3B0aW9ucy5kZWJ1Z0NoYW5uZWwucmVhZGFibGUsXG4gICAgICAgICAgICAgIGhhbmRsZURvbmVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBzdGFydFJlYWRpbmdGcm9tU3RyZWFtJDEocmVzcG9uc2UsIHIuYm9keSwgaGFuZGxlRG9uZSwgcik7XG4gICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICBzdGFydFJlYWRpbmdGcm9tU3RyZWFtJDEoXG4gICAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgICByLmJvZHksXG4gICAgICAgICAgICAgIGNsb3NlLmJpbmQobnVsbCwgcmVzcG9uc2UpLFxuICAgICAgICAgICAgICByXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgIHJlcG9ydEdsb2JhbEVycm9yKHJlc3BvbnNlLCBlKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHJldHVybiBnZXRSb290KHJlc3BvbnNlKTtcbiAgICB9O1xuICAgIGV4cG9ydHMuY3JlYXRlRnJvbU5vZGVTdHJlYW0gPSBmdW5jdGlvbiAoXG4gICAgICBzdHJlYW0sXG4gICAgICBzZXJ2ZXJDb25zdW1lck1hbmlmZXN0LFxuICAgICAgb3B0aW9uc1xuICAgICkge1xuICAgICAgdmFyIHJlc3BvbnNlID0gY3JlYXRlUmVzcG9uc2UoXG4gICAgICAgIHNlcnZlckNvbnN1bWVyTWFuaWZlc3QubW9kdWxlTWFwLFxuICAgICAgICBzZXJ2ZXJDb25zdW1lck1hbmlmZXN0LnNlcnZlck1vZHVsZU1hcCxcbiAgICAgICAgc2VydmVyQ29uc3VtZXJNYW5pZmVzdC5tb2R1bGVMb2FkaW5nLFxuICAgICAgICBub1NlcnZlckNhbGwsXG4gICAgICAgIG9wdGlvbnMgPyBvcHRpb25zLmVuY29kZUZvcm1BY3Rpb24gOiB2b2lkIDAsXG4gICAgICAgIG9wdGlvbnMgJiYgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMubm9uY2UgPyBvcHRpb25zLm5vbmNlIDogdm9pZCAwLFxuICAgICAgICB2b2lkIDAsXG4gICAgICAgIG9wdGlvbnMgJiYgb3B0aW9ucy51bnN0YWJsZV9hbGxvd1BhcnRpYWxTdHJlYW1cbiAgICAgICAgICA/IG9wdGlvbnMudW5zdGFibGVfYWxsb3dQYXJ0aWFsU3RyZWFtXG4gICAgICAgICAgOiAhMSxcbiAgICAgICAgb3B0aW9ucyAmJiBvcHRpb25zLmZpbmRTb3VyY2VNYXBVUkwgPyBvcHRpb25zLmZpbmRTb3VyY2VNYXBVUkwgOiB2b2lkIDAsXG4gICAgICAgIG9wdGlvbnMgPyAhMCA9PT0gb3B0aW9ucy5yZXBsYXlDb25zb2xlTG9ncyA6ICExLFxuICAgICAgICBvcHRpb25zICYmIG9wdGlvbnMuZW52aXJvbm1lbnROYW1lID8gb3B0aW9ucy5lbnZpcm9ubWVudE5hbWUgOiB2b2lkIDAsXG4gICAgICAgIG9wdGlvbnMgJiYgbnVsbCAhPSBvcHRpb25zLnN0YXJ0VGltZSA/IG9wdGlvbnMuc3RhcnRUaW1lIDogdm9pZCAwLFxuICAgICAgICBvcHRpb25zICYmIG51bGwgIT0gb3B0aW9ucy5lbmRUaW1lID8gb3B0aW9ucy5lbmRUaW1lIDogdm9pZCAwLFxuICAgICAgICBvcHRpb25zICYmIHZvaWQgMCAhPT0gb3B0aW9ucy5kZWJ1Z0NoYW5uZWxcbiAgICAgICAgICA/IHsgaGFzUmVhZGFibGU6ICEwLCBjYWxsYmFjazogbnVsbCB9XG4gICAgICAgICAgOiB2b2lkIDBcbiAgICAgICk7XG4gICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmRlYnVnQ2hhbm5lbCkge1xuICAgICAgICB2YXIgc3RyZWFtRW5kZWRDb3VudCA9IDA7XG4gICAgICAgIHNlcnZlckNvbnN1bWVyTWFuaWZlc3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgMiA9PT0gKytzdHJlYW1FbmRlZENvdW50ICYmIGNsb3NlKHJlc3BvbnNlKTtcbiAgICAgICAgfTtcbiAgICAgICAgc3RhcnRSZWFkaW5nRnJvbVN0cmVhbShcbiAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICBvcHRpb25zLmRlYnVnQ2hhbm5lbCxcbiAgICAgICAgICBzZXJ2ZXJDb25zdW1lck1hbmlmZXN0XG4gICAgICAgICk7XG4gICAgICAgIHN0YXJ0UmVhZGluZ0Zyb21TdHJlYW0ocmVzcG9uc2UsIHN0cmVhbSwgc2VydmVyQ29uc3VtZXJNYW5pZmVzdCk7XG4gICAgICB9IGVsc2VcbiAgICAgICAgc3RhcnRSZWFkaW5nRnJvbVN0cmVhbShyZXNwb25zZSwgc3RyZWFtLCBjbG9zZS5iaW5kKG51bGwsIHJlc3BvbnNlKSk7XG4gICAgICByZXR1cm4gZ2V0Um9vdChyZXNwb25zZSk7XG4gICAgfTtcbiAgICBleHBvcnRzLmNyZWF0ZUZyb21SZWFkYWJsZVN0cmVhbSA9IGZ1bmN0aW9uIChzdHJlYW0sIG9wdGlvbnMpIHtcbiAgICAgIHZhciByZXNwb25zZSA9IGNyZWF0ZVJlc3BvbnNlRnJvbU9wdGlvbnMob3B0aW9ucyk7XG4gICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmRlYnVnQ2hhbm5lbCAmJiBvcHRpb25zLmRlYnVnQ2hhbm5lbC5yZWFkYWJsZSkge1xuICAgICAgICB2YXIgc3RyZWFtRG9uZUNvdW50ID0gMCxcbiAgICAgICAgICBoYW5kbGVEb25lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgMiA9PT0gKytzdHJlYW1Eb25lQ291bnQgJiYgY2xvc2UocmVzcG9uc2UpO1xuICAgICAgICAgIH07XG4gICAgICAgIHN0YXJ0UmVhZGluZ0Zyb21TdHJlYW0kMShcbiAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICBvcHRpb25zLmRlYnVnQ2hhbm5lbC5yZWFkYWJsZSxcbiAgICAgICAgICBoYW5kbGVEb25lXG4gICAgICAgICk7XG4gICAgICAgIHN0YXJ0UmVhZGluZ0Zyb21TdHJlYW0kMShyZXNwb25zZSwgc3RyZWFtLCBoYW5kbGVEb25lLCBzdHJlYW0pO1xuICAgICAgfSBlbHNlXG4gICAgICAgIHN0YXJ0UmVhZGluZ0Zyb21TdHJlYW0kMShcbiAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICBzdHJlYW0sXG4gICAgICAgICAgY2xvc2UuYmluZChudWxsLCByZXNwb25zZSksXG4gICAgICAgICAgc3RyZWFtXG4gICAgICAgICk7XG4gICAgICByZXR1cm4gZ2V0Um9vdChyZXNwb25zZSk7XG4gICAgfTtcbiAgICBleHBvcnRzLmNyZWF0ZVNlcnZlclJlZmVyZW5jZSA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgcmV0dXJuIGNyZWF0ZVNlcnZlclJlZmVyZW5jZSQxKGlkLCBub1NlcnZlckNhbGwkMSk7XG4gICAgfTtcbiAgICBleHBvcnRzLmNyZWF0ZVRlbXBvcmFyeVJlZmVyZW5jZVNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBuZXcgTWFwKCk7XG4gICAgfTtcbiAgICBleHBvcnRzLmVuY29kZVJlcGx5ID0gZnVuY3Rpb24gKHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICB2YXIgYWJvcnQgPSBwcm9jZXNzUmVwbHkoXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgXCJcIixcbiAgICAgICAgICBvcHRpb25zICYmIG9wdGlvbnMudGVtcG9yYXJ5UmVmZXJlbmNlc1xuICAgICAgICAgICAgPyBvcHRpb25zLnRlbXBvcmFyeVJlZmVyZW5jZXNcbiAgICAgICAgICAgIDogdm9pZCAwLFxuICAgICAgICAgIHJlc29sdmUsXG4gICAgICAgICAgcmVqZWN0XG4gICAgICAgICk7XG4gICAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc2lnbmFsKSB7XG4gICAgICAgICAgdmFyIHNpZ25hbCA9IG9wdGlvbnMuc2lnbmFsO1xuICAgICAgICAgIGlmIChzaWduYWwuYWJvcnRlZCkgYWJvcnQoc2lnbmFsLnJlYXNvbik7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgbGlzdGVuZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIGFib3J0KHNpZ25hbC5yZWFzb24pO1xuICAgICAgICAgICAgICBzaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIGxpc3RlbmVyKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIGxpc3RlbmVyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG4gICAgZXhwb3J0cy5yZWdpc3RlclNlcnZlclJlZmVyZW5jZSA9IGZ1bmN0aW9uIChcbiAgICAgIHJlZmVyZW5jZSxcbiAgICAgIGlkLFxuICAgICAgZW5jb2RlRm9ybUFjdGlvblxuICAgICkge1xuICAgICAgcmVnaXN0ZXJCb3VuZFNlcnZlclJlZmVyZW5jZShyZWZlcmVuY2UsIGlkLCBudWxsLCBlbmNvZGVGb3JtQWN0aW9uKTtcbiAgICAgIHJldHVybiByZWZlcmVuY2U7XG4gICAgfTtcbiAgfSkoKTtcbiJdLCJuYW1lcyI6WyJjaGVja0V2YWxBdmFpbGFiaWxpdHlPbmNlRGV2IiwiaGFzQ29uZmlybWVkRXZhbCIsImV2YWwiLCIkanNjb21wJHVudXNlZCRjYXRjaCIsImNvbnNvbGUiLCJlcnJvciIsInJlc29sdmVDbGllbnRSZWZlcmVuY2UiLCJidW5kbGVyQ29uZmlnIiwibWV0YWRhdGEiLCJtb2R1bGVFeHBvcnRzIiwibmFtZSIsIkVycm9yIiwibGVuZ3RoIiwiaWQiLCJjaHVua3MiLCJyZXNvbHZlU2VydmVyUmVmZXJlbmNlIiwicmVzb2x2ZWRNb2R1bGVEYXRhIiwiaWR4IiwibGFzdEluZGV4T2YiLCJzbGljZSIsImFzeW5jIiwicmVxdWlyZUFzeW5jTW9kdWxlIiwicHJvbWlzZSIsImdsb2JhbFRoaXMiLCJfX25leHRfcmVxdWlyZV9fIiwidGhlbiIsInN0YXR1cyIsInZhbHVlIiwicmVhc29uIiwiaWdub3JlUmVqZWN0IiwicHJlbG9hZE1vZHVsZSIsInByb21pc2VzIiwiaSIsImNodW5rSWQiLCJlbnRyeSIsImNodW5rQ2FjaGUiLCJnZXQiLCJfX3dlYnBhY2tfY2h1bmtfbG9hZF9fIiwicHVzaCIsInJlc29sdmUiLCJzZXQiLCJiaW5kIiwiUHJvbWlzZSIsImFsbCIsInJlcXVpcmVNb2R1bGUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInByZXBhcmVEZXN0aW5hdGlvbldpdGhDaHVua3MiLCJtb2R1bGVMb2FkaW5nIiwibm9uY2UkanNjb21wJDAiLCJub25jZSIsIkpTQ29tcGlsZXJfdGVtcF9jb25zdCIsIlJlYWN0RE9NU2hhcmVkSW50ZXJuYWxzIiwiZCIsIkpTQ29tcGlsZXJfdGVtcF9jb25zdCRqc2NvbXAkMCIsIlgiLCJKU0NvbXBpbGVyX3RlbXBfY29uc3QkanNjb21wJDEiLCJwcmVmaXgiLCJKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQiLCJjcm9zc09yaWdpbiIsImdldEl0ZXJhdG9yRm4iLCJtYXliZUl0ZXJhYmxlIiwiTUFZQkVfSVRFUkFUT1JfU1lNQk9MIiwiaXNPYmplY3RQcm90b3R5cGUiLCJvYmplY3QiLCJPYmplY3RQcm90b3R5cGUiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJnZXRQcm90b3R5cGVPZiIsImdldE93blByb3BlcnR5TmFtZXMiLCJpc1NpbXBsZU9iamVjdCIsIm5hbWVzIiwiZGVzY3JpcHRvciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJvYmplY3ROYW1lIiwidG9TdHJpbmciLCJkZXNjcmliZUtleUZvckVycm9yTWVzc2FnZSIsImtleSIsImVuY29kZWRLZXkiLCJKU09OIiwic3RyaW5naWZ5IiwiZGVzY3JpYmVWYWx1ZUZvckVycm9yTWVzc2FnZSIsImlzQXJyYXlJbXBsIiwiJCR0eXBlb2YiLCJDTElFTlRfUkVGRVJFTkNFX1RBRyIsImRpc3BsYXlOYW1lIiwiU3RyaW5nIiwiZGVzY3JpYmVFbGVtZW50VHlwZSIsInR5cGUiLCJSRUFDVF9TVVNQRU5TRV9UWVBFIiwiUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFIiwiUkVBQ1RfVklFV19UUkFOU0lUSU9OX1RZUEUiLCJSRUFDVF9GT1JXQVJEX1JFRl9UWVBFIiwicmVuZGVyIiwiUkVBQ1RfTUVNT19UWVBFIiwiUkVBQ1RfTEFaWV9UWVBFIiwicGF5bG9hZCIsIl9wYXlsb2FkIiwiX2luaXQiLCJ4IiwiZGVzY3JpYmVPYmplY3RGb3JFcnJvck1lc3NhZ2UiLCJvYmplY3RPckFycmF5IiwiZXhwYW5kZWROYW1lIiwib2JqS2luZCIsInN0YXJ0IiwianN4Q2hpbGRyZW5QYXJlbnRzIiwiaGFzIiwiUkVBQ1RfRUxFTUVOVF9UWVBFIiwianN4UHJvcHNQYXJlbnRzIiwia2V5cyIsIl92YWx1ZTIiLCJfc3Vic3RyMiIsInJlcGVhdCIsInNlcmlhbGl6ZU51bWJlciIsIm51bWJlciIsIk51bWJlciIsImlzRmluaXRlIiwiSW5maW5pdHkiLCJwcm9jZXNzUmVwbHkiLCJyb290IiwiZm9ybUZpZWxkUHJlZml4IiwidGVtcG9yYXJ5UmVmZXJlbmNlcyIsInJlamVjdCIsInNlcmlhbGl6ZVR5cGVkQXJyYXkiLCJ0YWciLCJ0eXBlZEFycmF5IiwiQmxvYiIsIlVpbnQ4QXJyYXkiLCJidWZmZXIiLCJieXRlT2Zmc2V0IiwiYnl0ZUxlbmd0aCIsImJsb2JJZCIsIm5leHRQYXJ0SWQiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwiYXBwZW5kIiwic2VyaWFsaXplQmluYXJ5UmVhZGVyIiwicmVhZGVyIiwicHJvZ3Jlc3MiLCJkb25lIiwiZGF0YSIsInN0cmVhbUlkIiwicGVuZGluZ1BhcnRzIiwicmVhZCIsInNlcmlhbGl6ZVJlYWRlciIsInBhcnRKU09OIiwicmVzb2x2ZVRvSlNPTiIsInNlcmlhbGl6ZVJlYWRhYmxlU3RyZWFtIiwic3RyZWFtIiwiYmluYXJ5UmVhZGVyIiwiZ2V0UmVhZGVyIiwibW9kZSIsInNlcmlhbGl6ZUFzeW5jSXRlcmFibGUiLCJpdGVyYWJsZSIsIml0ZXJhdG9yIiwiX3BhcnRKU09OIiwibmV4dCIsIngkMCIsIm9yaWdpbmFsVmFsdWUiLCJEYXRlIiwiaW5kZXhPZiIsInBhcmVudFJlZmVyZW5jZSIsIndyaXR0ZW5PYmplY3RzIiwibW9kZWxSb290IiwiaW5pdCIsImxhenlJZCIsInNlcmlhbGl6ZU1vZGVsIiwiX2xhenlJZCIsIl9wYXJ0SlNPTjIiLCJfZGF0YSIsInByb21pc2VJZCIsInBhcnRWYWx1ZSIsInByZXZpb3VzUmVmZXJlbmNlIiwiX3BhcnRKU09OMyIsIl9kYXRhMyIsImZvckVhY2giLCJvcmlnaW5hbEtleSIsIk1hcCIsIkFycmF5IiwiZnJvbSIsIlNldCIsIkFycmF5QnVmZmVyIiwiSW50OEFycmF5IiwiVWludDhDbGFtcGVkQXJyYXkiLCJJbnQxNkFycmF5IiwiVWludDE2QXJyYXkiLCJJbnQzMkFycmF5IiwiVWludDMyQXJyYXkiLCJGbG9hdDMyQXJyYXkiLCJGbG9hdDY0QXJyYXkiLCJCaWdJbnQ2NEFycmF5IiwiQmlnVWludDY0QXJyYXkiLCJEYXRhVmlldyIsIlJlYWRhYmxlU3RyZWFtIiwiQVNZTkNfSVRFUkFUT1IiLCJSRUFDVF9DT05URVhUX1RZUEUiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJkZXNjcmlwdGlvbiIsImtub3duU2VydmVyUmVmZXJlbmNlcyIsImJvdW5kIiwibW9kZWwiLCJXZWFrTWFwIiwianNvbiIsImVuY29kZUZvcm1EYXRhIiwicmVmZXJlbmNlIiwidGhlbmFibGUiLCJyZXMiLCJyZWoiLCJib2R5IiwiZSIsImRlZmF1bHRFbmNvZGVGb3JtQWN0aW9uIiwiaWRlbnRpZmllclByZWZpeCIsInJlZmVyZW5jZUNsb3N1cmUiLCJib3VuZENhY2hlIiwicHJlZml4ZWREYXRhIiwibWV0aG9kIiwiZW5jVHlwZSIsImlzU2lnbmF0dXJlRXF1YWwiLCJyZWZlcmVuY2VJZCIsIm51bWJlck9mQm91bmRBcmdzIiwiYm91bmRQcm9taXNlIiwiYm91bmRBcmdzIiwiY3JlYXRlRmFrZVNlcnZlckZ1bmN0aW9uIiwiZmlsZW5hbWUiLCJzb3VyY2VNYXAiLCJsaW5lIiwiY29sIiwiZW52aXJvbm1lbnROYW1lIiwiaW5uZXJGdW5jdGlvbiIsImVuY29kZWROYW1lIiwic3RhcnRzV2l0aCIsImVuY29kZVVSSUNvbXBvbmVudCIsImVuY29kZVVSSSIsImZha2VTZXJ2ZXJGdW5jdGlvbklkeCIsInJlZ2lzdGVyQm91bmRTZXJ2ZXJSZWZlcmVuY2UiLCJlbmNvZGVGb3JtQWN0aW9uIiwib3JpZ2luYWxCaW5kIiwiZGVmaW5lUHJvcGVydGllcyIsIiQkRk9STV9BQ1RJT04iLCIkJElTX1NJR05BVFVSRV9FUVVBTCIsIkZ1bmN0aW9uQmluZCIsImFwcGx5IiwiYXJndW1lbnRzIiwibmV3Rm4iLCJhcmdzIiwiQXJyYXlTbGljZSIsImNvbmNhdCIsImNyZWF0ZUJvdW5kU2VydmVyUmVmZXJlbmNlIiwibWV0YURhdGEiLCJjYWxsU2VydmVyIiwiZmluZFNvdXJjZU1hcFVSTCIsImFjdGlvbiIsImxvY2F0aW9uIiwiZnVuY3Rpb25OYW1lIiwiZW52IiwicGFyc2VTdGFja0xvY2F0aW9uIiwic3RhY2siLCJlbmRPZkZpcnN0IiwiZW5kT2ZTZWNvbmQiLCJ2OEZyYW1lUmVnRXhwIiwiZXhlYyIsImpzY1NwaWRlck1vbmtleUZyYW1lUmVnRXhwIiwiY3JlYXRlU2VydmVyUmVmZXJlbmNlJDEiLCJnZXRDb21wb25lbnROYW1lRnJvbVR5cGUiLCJSRUFDVF9DTElFTlRfUkVGRVJFTkNFIiwiUkVBQ1RfRlJBR01FTlRfVFlQRSIsIlJFQUNUX1BST0ZJTEVSX1RZUEUiLCJSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFIiwiUkVBQ1RfQUNUSVZJVFlfVFlQRSIsIlJFQUNUX1BPUlRBTF9UWVBFIiwiUkVBQ1RfQ09OU1VNRVJfVFlQRSIsIl9jb250ZXh0IiwiaW5uZXJUeXBlIiwiZ2V0QXJyYXlLaW5kIiwiYXJyYXkiLCJraW5kIiwiYWRkT2JqZWN0VG9Qcm9wZXJ0aWVzIiwicHJvcGVydGllcyIsImluZGVudCIsImFkZGVkUHJvcGVydGllcyIsImFkZFZhbHVlVG9Qcm9wZXJ0aWVzIiwicHJvcGVydHlOYW1lIiwidHlwZU5hbWUiLCJwcm9wcyIsInByb3BzS2V5cyIsInByb3BzTGVuZ3RoIiwicHJvcEtleSIsImNoaWxkcmVuIiwiZ2V0SU9EZXNjcmlwdGlvbiIsIm1lc3NhZ2UiLCJ1cmwiLCJocmVmIiwic3JjIiwiY3VycmVudFNyYyIsImNvbW1hbmQiLCJyZXF1ZXN0IiwicmVzcG9uc2UiLCJzdHIiLCJtYXJrQWxsVHJhY2tzSW5PcmRlciIsInN1cHBvcnRzVXNlclRpbWluZyIsInRpbWVTdGFtcCIsImdldElPQ29sb3IiLCJjaGFyQ29kZUF0IiwiZ2V0SU9Mb25nTmFtZSIsImlvSW5mbyIsInJvb3RFbnYiLCJnZXRJT1Nob3J0TmFtZSIsImRlc2MiLCJsIiwicXVlcnlJZHgiLCJsb2dDb21wb25lbnRBd2FpdCIsImFzeW5jSW5mbyIsInRyYWNrSWR4Iiwic3RhcnRUaW1lIiwiZW5kVGltZSIsImF3YWl0ZWQiLCJlbnRyeU5hbWUiLCJkZWJ1Z1Rhc2siLCJydW4iLCJwZXJmb3JtYW5jZSIsIm1lYXN1cmUiLCJlbmQiLCJkZXRhaWwiLCJkZXZ0b29scyIsImNvbG9yIiwidHJhY2siLCJ0cmFja05hbWVzIiwidHJhY2tHcm91cCIsInRvb2x0aXBUZXh0IiwiY2xlYXJNZWFzdXJlcyIsImxvZ0lPSW5mb0Vycm9yZWQiLCJsb2dJT0luZm8iLCJwcmVwYXJlU3RhY2tUcmFjZSIsInN0cnVjdHVyZWRTdGFja1RyYWNlIiwiUmVhY3RQcm9taXNlIiwiX2NoaWxkcmVuIiwiX2RlYnVnQ2h1bmsiLCJfZGVidWdJbmZvIiwiaGFzR0NlZFJlc3BvbnNlIiwid2Vha1Jlc3BvbnNlIiwid2VhayIsImRlcmVmIiwidW53cmFwV2Vha1Jlc3BvbnNlIiwiY2xvc2VEZWJ1Z0NoYW5uZWwiLCJkZWJ1Z0NoYW5uZWwiLCJjYWxsYmFjayIsInJlYWRDaHVuayIsImNodW5rIiwiaW5pdGlhbGl6ZU1vZGVsQ2h1bmsiLCJpbml0aWFsaXplTW9kdWxlQ2h1bmsiLCJnZXRSb290IiwiZ2V0Q2h1bmsiLCJjcmVhdGVQZW5kaW5nQ2h1bmsiLCJfcGVuZGluZ0NodW5rcyIsIl93ZWFrUmVzcG9uc2UiLCJfcGVuZGluZ0luaXRpYWxSZW5kZXIiLCJjbGVhclRpbWVvdXQiLCJyZWxlYXNlUGVuZGluZ0NodW5rIiwic2V0VGltZW91dCIsImZsdXNoSW5pdGlhbFJlbmRlclBlcmZvcm1hbmNlIiwiZmlsdGVyRGVidWdJbmZvIiwiX2RlYnVnRW5kVGltZSIsInRpbWVPcmlnaW4iLCJkZWJ1Z0luZm8iLCJpbmZvIiwidGltZSIsIm1vdmVEZWJ1Z0luZm9Gcm9tQ2h1bmtUb0lubmVyVmFsdWUiLCJyZXNvbHZlTGF6eSIsInNwbGljZSIsInVuc2hpZnQiLCJpc0Zyb3plbiIsImRlZmluZVByb3BlcnR5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3YWtlQ2h1bmsiLCJsaXN0ZW5lcnMiLCJsaXN0ZW5lciIsImZ1bGZpbGxSZWZlcmVuY2UiLCJyZWplY3RDaHVuayIsInJlamVjdFJlZmVyZW5jZSIsImhhbmRsZXIiLCJyZXNvbHZlQmxvY2tlZEN5Y2xlIiwicmVzb2x2ZWRDaHVuayIsInJlZmVyZW5jZWRDaHVuayIsIndha2VDaHVua0lmSW5pdGlhbGl6ZWQiLCJyZXNvbHZlTGlzdGVuZXJzIiwicmVqZWN0TGlzdGVuZXJzIiwiY3ljbGljSGFuZGxlciIsInRyaWdnZXJFcnJvck9uQ2h1bmsiLCJwcmV2SGFuZGxlciIsImluaXRpYWxpemluZ0hhbmRsZXIiLCJwcmV2Q2h1bmsiLCJpbml0aWFsaXppbmdDaHVuayIsImluaXRpYWxpemVEZWJ1Z0NodW5rIiwiY3JlYXRlUmVzb2x2ZWRNb2RlbENodW5rIiwiY3JlYXRlUmVzb2x2ZWRJdGVyYXRvclJlc3VsdENodW5rIiwicmVzb2x2ZUl0ZXJhdG9yUmVzdWx0Q2h1bmsiLCJyZXNvbHZlTW9kZWxDaHVuayIsImVucXVldWVNb2RlbCIsInJlc29sdmVNb2R1bGVDaHVuayIsImRlYnVnQ2h1bmsiLCJwcmV2SXNJbml0aWFsaXppbmdEZWJ1Z0luZm8iLCJpc0luaXRpYWxpemluZ0RlYnVnSW5mbyIsImMiLCJpbml0aWFsaXplRGVidWdJbmZvIiwid2FpdEZvclJlZmVyZW5jZSIsInJlc29sdmVkTW9kZWwiLCJwYXJzZU1vZGVsIiwiZXJyb3JlZCIsImRlcHMiLCJyZXBvcnRHbG9iYWxFcnJvciIsIl9jbG9zZWQiLCJfY2xvc2VkUmVhc29uIiwiX2NodW5rcyIsIl9kZWJ1Z0NoYW5uZWwiLCJkZWJ1Z0NoYW5uZWxSZWdpc3RyeSIsInVucmVnaXN0ZXIiLCJudWxsUmVmR2V0dGVyIiwiZ2V0VGFza05hbWUiLCJpbml0aWFsaXplRWxlbWVudCIsImVsZW1lbnQiLCJsYXp5Tm9kZSIsIl9kZWJ1Z1N0YWNrIiwib3duZXIiLCJfb3duZXIiLCJfZGVidWdSb290T3duZXIiLCJfcm9vdEVudmlyb25tZW50TmFtZSIsIm5vcm1hbGl6ZWRTdGFja1RyYWNlIiwiX2RlYnVnUm9vdFN0YWNrIiwiY3JlYXRlRmFrZUpTWENhbGxTdGFja0luREVWIiwic3VwcG9ydHNDcmVhdGVUYXNrIiwiY3JlYXRlVGFzayIsImJ1aWxkRmFrZUNhbGxTdGFjayIsImluaXRpYWxpemVGYWtlVGFzayIsIl9kZWJ1Z1Jvb3RUYXNrIiwiX2RlYnVnVGFzayIsImluaXRpYWxpemVGYWtlU3RhY2siLCJfc3RvcmUiLCJ2YWxpZGF0ZWQiLCJmcmVlemUiLCJjcmVhdGVMYXp5Q2h1bmtXcmFwcGVyIiwibGF6eVR5cGUiLCJfYWxsb3dQYXJ0aWFsU3RyZWFtIiwiZnVsZmlsbGVkQ2h1bmsiLCJwYXJlbnRPYmplY3QiLCJtYXAiLCJwYXRoIiwiX3JlZmVyZW5jZWRDaHVuayIsIm1hcHBlZFZhbHVlIiwidHJhbnNmZXJSZWZlcmVuY2VkRGVidWdJbmZvIiwiaXNEZWJ1ZyIsImJsb2NrZWRWYWx1ZSIsImVycm9yZWRDb21wb25lbnQiLCJkZWJ1Z1N0YWNrIiwiaXNBd2FpdGluZ0RlYnVnSW5mbyIsImhhc1JlYWRhYmxlIiwicGFyZW50IiwibG9hZFNlcnZlclJlZmVyZW5jZSIsIl9zZXJ2ZXJSZWZlcmVuY2VDb25maWciLCJfY2FsbFNlcnZlciIsIl9lbmNvZGVGb3JtQWN0aW9uIiwiX2RlYnVnRmluZFNvdXJjZU1hcFVSTCIsInNlcnZlclJlZmVyZW5jZSIsInJlc29sdmVkVmFsdWUiLCJwYXJlbnRDaHVuayIsImRlYnVnSW5mb0VudHJ5IiwiZ2V0T3V0bGluZWRNb2RlbCIsInNwbGl0IiwicGFyc2VJbnQiLCJjcmVhdGVNYXAiLCJjcmVhdGVTZXQiLCJjcmVhdGVCbG9iIiwiY3JlYXRlRm9ybURhdGEiLCJhcHBseUNvbnN0cnVjdG9yIiwic2V0UHJvdG90eXBlT2YiLCJkZWZpbmVMYXp5R2V0dGVyIiwiZXh0cmFjdEl0ZXJhdG9yIiwiU3ltYm9sIiwiY3JlYXRlTW9kZWwiLCJnZXRJbmZlcnJlZEZ1bmN0aW9uQXBwcm94aW1hdGUiLCJjb2RlIiwidHJpbSIsInBhcnNlTW9kZWxTdHJpbmciLCJmb3IiLCJyZWYiLCJfdGVtcFJlZnMiLCJyZXNvbHZlRXJyb3JEZXYiLCJOYU4iLCJwYXJzZSIsIkJpZ0ludCIsIm1pZ2h0SGF2ZVN0YXRpY0NvbnN0cnVjdG9yIiwidGVzdCIsIl8iLCJtaXNzaW5nQ2FsbCIsIm1hcmtJT1N0YXJ0ZWQiLCJfZGVidWdJT1N0YXJ0ZWQiLCJSZXNwb25zZUluc3RhbmNlIiwic2VydmVyUmVmZXJlbmNlQ29uZmlnIiwiYWxsb3dQYXJ0aWFsU3RyZWFtIiwicmVwbGF5Q29uc29sZSIsImRlYnVnU3RhcnRUaW1lIiwiZGVidWdFbmRUaW1lIiwiX2J1bmRsZXJDb25maWciLCJfbW9kdWxlTG9hZGluZyIsIl9ub25jZSIsIl9zdHJpbmdEZWNvZGVyIiwidXRpbCIsIlRleHREZWNvZGVyIiwiX3RpbWVPcmlnaW4iLCJXZWFrUmVmIiwiUmVhY3RTaGFyZWRJbnRlcmFsc1NlcnZlciIsIkEiLCJnZXRPd25lciIsInRvTG93ZXJDYXNlIiwiX2RlYnVnU3RhcnRUaW1lIiwibm93IiwiX2Jsb2NrZWRDb25zb2xlIiwiX3JlcGxheUNvbnNvbGUiLCJyZWdpc3RlciIsImNyZWF0ZVJlc3BvbnNlIiwiY3JlYXRlU3RyZWFtU3RhdGUiLCJzdHJlYW1EZWJ1Z1ZhbHVlIiwic3RyZWFtU3RhdGUiLCJfcm93U3RhdGUiLCJfcm93SUQiLCJfcm93VGFnIiwiX3Jvd0xlbmd0aCIsIl9idWZmZXIiLCJkZWJ1Z1ZhbHVlUHJvbWlzZSIsImJ5dGVTaXplIiwiX2RlYnVnVGFyZ2V0Q2h1bmtTaXplIiwiTUlOX0NIVU5LX1NJWkUiLCJpbmNyZW1lbnRDaHVua0RlYnVnSW5mbyIsImNodW5rTGVuZ3RoIiwicHJldmlvdXNFbmRUaW1lIiwiYWRkQXN5bmNJbmZvIiwicmVzb2x2ZUNodW5rRGVidWdJbmZvIiwicmVzb2x2ZUJ1ZmZlciIsImVucXVldWVWYWx1ZSIsInJlc29sdmVNb2R1bGUiLCJjbGllbnRSZWZlcmVuY2UiLCJibG9ja2VkQ2h1bmsiLCJyZXNvbHZlU3RyZWFtIiwiY29udHJvbGxlciIsInN0YXJ0UmVhZGFibGVTdHJlYW0iLCJjbG9zZWQiLCJwcmV2aW91c0Jsb2NrZWRDaHVuayIsImVucXVldWUiLCJ2IiwiX2NodW5rMyIsImNsb3NlIiwiYXN5bmNJdGVyYXRvciIsImNyZWF0ZUl0ZXJhdG9yIiwic3RhcnRBc3luY0l0ZXJhYmxlIiwibmV4dFdyaXRlSW5kZXgiLCJuZXh0UmVhZEluZGV4IiwiYXJnIiwiZXJyb3JJbmZvIiwiZXJyb3JPcHRpb25zIiwiY2F1c2UiLCJyZXZpdmVNb2RlbCIsImdldFJvb3RUYXNrIiwiY3JlYXRlRmFrZUZ1bmN0aW9uIiwiZW5jbG9zaW5nTGluZSIsImVuY2xvc2luZ0NvbCIsImZha2VGdW5jdGlvbklkeCIsImZuIiwidXNlRW5jbG9zaW5nTGluZSIsImlubmVyQ2FsbCIsImZyYW1lIiwiZnJhbWVLZXkiLCJqb2luIiwiZmFrZUZ1bmN0aW9uQ2FjaGUiLCJjaGlsZEVudmlyb25tZW50TmFtZSIsInJvb3RUYXNrIiwiY2FjaGVkRW50cnkiLCJvd25lclRhc2siLCJmYWtlSlNYQ2FsbFNpdGUiLCJkZWJ1Z0xvY2F0aW9uIiwiX2NvbXBvbmVudEluZm9PckFzeW5jSW5mbyIsImdldEN1cnJlbnRTdGFja0luREVWIiwiY3VycmVudE93bmVySW5ERVYiLCJvd25lclN0YWNrIiwicHJldlByZXBhcmVTdGFja1RyYWNlIiwiSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQwIiwibWF0Y2giLCJzdWZmaXgiLCJyZXNvbHZlQ29uc29sZUVudHJ5IiwicmVwbGF5Q29uc29sZVdpdGhDYWxsU3RhY2tJbkRFViIsIl9jaHVuazQiLCJ1bmJsb2NrIiwiaW5pdGlhbGl6ZUlPSW5mbyIsInJlc29sdmVJT0luZm8iLCJtZXJnZUJ1ZmZlciIsImxhc3RDaHVuayIsIl9pMyIsInJlc29sdmVUeXBlZEFycmF5IiwiY29uc3RydWN0b3IiLCJieXRlc1BlckVsZW1lbnQiLCJmbHVzaENvbXBvbmVudFBlcmZvcm1hbmNlIiwicmVzcG9uc2UkanNjb21wJDAiLCJ0cmFja0lkeCRqc2NvbXAkNiIsInRyYWNrVGltZSIsInBhcmVudEVuZFRpbWUiLCJwcmV2aW91c1Jlc3VsdCIsImNvbXBvbmVudCIsImNvbXBvbmVudEluZm8iLCJzdGFydFRpbWUkanNjb21wJDAiLCJfaTQiLCJfaW5mbyIsInJlc3VsdCIsImNoaWxkcmVuRW5kVGltZSIsImNoaWxkVHJhY2tJZHgiLCJjaGlsZFRyYWNrVGltZSIsIl9pNSIsImNoaWxkUmVzdWx0IiwiY2hpbGRFbmRUaW1lIiwiY29tcG9uZW50RW5kVGltZSIsImlzTGFzdENvbXBvbmVudCIsImVuZFRpbWVJZHgiLCJfaTYiLCJfaW5mbzIiLCJqIiwiY2FuZGlkYXRlSW5mbyIsImNvbXBvbmVudEluZm8kanNjb21wJDAiLCJjb21wb25lbnRJbmZvJGpzY29tcCQxIiwidHJhY2tJZHgkanNjb21wJDAiLCJzdGFydFRpbWUkanNjb21wJDEiLCJjb21wb25lbnRFbmRUaW1lJGpzY29tcCQwIiwiY2hpbGRyZW5FbmRUaW1lJGpzY29tcCQwIiwiY29tcG9uZW50SW5mbyRqc2NvbXAkMiIsInRyYWNrSWR4JGpzY29tcCQxIiwic3RhcnRUaW1lJGpzY29tcCQyIiwiY2hpbGRyZW5FbmRUaW1lJGpzY29tcCQxIiwiZW50cnlOYW1lJGpzY29tcCQwIiwibWVhc3VyZU5hbWUiLCJjb21wb25lbnRJbmZvJGpzY29tcCQzIiwidHJhY2tJZHgkanNjb21wJDIiLCJzdGFydFRpbWUkanNjb21wJDMiLCJjaGlsZHJlbkVuZFRpbWUkanNjb21wJDIiLCJlbnYkanNjb21wJDAiLCJuYW1lJGpzY29tcCQwIiwiaXNQcmltYXJ5RW52Iiwic2VsZlRpbWUiLCJjb2xvciRqc2NvbXAkMCIsImRlYnVnVGFzayRqc2NvbXAkMCIsIm1lYXN1cmVOYW1lJGpzY29tcCQwIiwicHJvcGVydGllcyRqc2NvbXAkMCIsImVudiRqc2NvbXAkMSIsImFzeW5jSW5mbyRqc2NvbXAkMCIsInRyYWNrSWR4JGpzY29tcCQzIiwic3RhcnRUaW1lJGpzY29tcCQ0IiwiZW5kVGltZSRqc2NvbXAkMCIsImVycm9yJGpzY29tcCQwIiwiZW50cnlOYW1lJGpzY29tcCQxIiwiZGVidWdUYXNrJGpzY29tcCQxIiwicHJvcGVydGllcyRqc2NvbXAkMSIsIl9qIiwiX2NhbmRpZGF0ZUluZm8iLCJfY29tcG9uZW50SW5mbyIsIl9lbnYiLCJjb21wb25lbnRJbmZvJGpzY29tcCQ0IiwidHJhY2tJZHgkanNjb21wJDQiLCJzdGFydFRpbWUkanNjb21wJDUiLCJjaGlsZHJlbkVuZFRpbWUkanNjb21wJDMiLCJlbnYkanNjb21wJDIiLCJuYW1lJGpzY29tcCQxIiwiZW50cnlOYW1lJGpzY29tcCQyIiwibWVhc3VyZU5hbWUkanNjb21wJDEiLCJwcm9wZXJ0aWVzJGpzY29tcCQyIiwiX2FzeW5jSW5mbyIsIl9lbnYyIiwiYXN5bmNJbmZvJGpzY29tcCQxIiwidHJhY2tJZHgkanNjb21wJDUiLCJzdGFydFRpbWUkanNjb21wJDYiLCJlbmRUaW1lJGpzY29tcCQxIiwicm9vdEVudiRqc2NvbXAkMCIsImVudHJ5TmFtZSRqc2NvbXAkMyIsImRlYnVnVGFzayRqc2NvbXAkMiIsInRvb2x0aXBUZXh0JGpzY29tcCQwIiwicm9vdENodW5rIiwicHJvY2Vzc0Z1bGxCaW5hcnlSb3ciLCJzdHJpbmdEZWNvZGVyIiwicm93IiwiZGVjb2RlIiwiZGVjb2Rlck9wdGlvbnMiLCJwcm9jZXNzRnVsbFN0cmluZ1JvdyIsIkQiLCJDIiwiTCIsIm0iLCJTIiwiTSIsImRpZ2VzdCIsInByb2Nlc3NCaW5hcnlDaHVuayIsInJvd1N0YXRlIiwicm93SUQiLCJyb3dUYWciLCJyb3dMZW5ndGgiLCJsYXN0SWR4Iiwib2Zmc2V0IiwiYiIsIm5vU2VydmVyQ2FsbCQxIiwiY3JlYXRlUmVzcG9uc2VGcm9tT3B0aW9ucyIsIm9wdGlvbnMiLCJzZXJ2ZXJDb25zdW1lck1hbmlmZXN0IiwibW9kdWxlTWFwIiwic2VydmVyTW9kdWxlTWFwIiwidW5zdGFibGVfYWxsb3dQYXJ0aWFsU3RyZWFtIiwicmVwbGF5Q29uc29sZUxvZ3MiLCJyZWFkYWJsZSIsInN0YXJ0UmVhZGluZ0Zyb21TdHJlYW0kMSIsIm9uRG9uZSIsImRlYnVnVmFsdWUiLCJfcmVmIiwiY2F0Y2giLCJub1NlcnZlckNhbGwiLCJzdGFydFJlYWRpbmdGcm9tU3RyZWFtIiwib25FbmQiLCJvbiIsInJlcXVpcmUiLCJSZWFjdERPTSIsIlJlYWN0IiwiYmluZCQxIiwiRnVuY3Rpb24iLCJfX0RPTV9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREUiLCJpc0FycmF5IiwiX19TRVJWRVJfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfV0FSTl9VU0VSU19USEVZX0NBTk5PVF9VUEdSQURFIiwiUmVhY3RTaGFyZWRJbnRlcm5hbHMiLCJfX0NMSUVOVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREUiLCJjcmVhdGUiLCJfdGhpcyIsInJlc29sdmVDYWxsYmFjayIsInJlamVjdENhbGxiYWNrIiwid3JhcHBlclByb21pc2UiLCJGaW5hbGl6YXRpb25SZWdpc3RyeSIsImNyZWF0ZUZha2VKU1hDYWxsU3RhY2siLCJyZWFjdF9zdGFja19ib3R0b21fZnJhbWUiLCJyZXBsYXlDb25zb2xlV2l0aENhbGxTdGFjayIsIm1ldGhvZE5hbWUiLCJzdGFja1RyYWNlIiwicHJldlN0YWNrIiwiZ2V0Q3VycmVudFN0YWNrIiwiYSIsIm5ld0FyZ3MiLCJjYWxsU3RhY2siLCJ0YXNrIiwiZXhwb3J0cyIsImNyZWF0ZUZyb21GZXRjaCIsInByb21pc2VGb3JSZXNwb25zZSIsInIiLCJzdHJlYW1Eb25lQ291bnQiLCJoYW5kbGVEb25lIiwiY3JlYXRlRnJvbU5vZGVTdHJlYW0iLCJzdHJlYW1FbmRlZENvdW50IiwiY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtIiwiY3JlYXRlU2VydmVyUmVmZXJlbmNlIiwiY3JlYXRlVGVtcG9yYXJ5UmVmZXJlbmNlU2V0IiwiZW5jb2RlUmVwbHkiLCJhYm9ydCIsInNpZ25hbCIsImFib3J0ZWQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.development.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/compiled/react-server-dom-webpack/client.node.js":
|
||
/*!*********************************************************************************!*\
|
||
!*** ./node_modules/next/dist/compiled/react-server-dom-webpack/client.node.js ***!
|
||
\*********************************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs/react-server-dom-webpack-client.node.development.js */ \"(rsc)/./node_modules/next/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.development.js\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3JlYWN0LXNlcnZlci1kb20td2VicGFjay9jbGllbnQubm9kZS5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixJQUFJLEtBQXFDLEVBQUUsRUFFMUMsQ0FBQztBQUNGLEVBQUUsaU9BQXFGO0FBQ3ZGIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jb21waWxlZC9yZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2svY2xpZW50Lm5vZGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LXNlcnZlci1kb20td2VicGFjay1jbGllbnQubm9kZS5wcm9kdWN0aW9uLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LXNlcnZlci1kb20td2VicGFjay1jbGllbnQubm9kZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/react-server-dom-webpack/client.node.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/compiled/server-only/empty.js":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/next/dist/compiled/server-only/empty.js ***!
|
||
\**************************************************************/
|
||
/***/ (() => {
|
||
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/compiled/string-hash/index.js":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/next/dist/compiled/string-hash/index.js ***!
|
||
\**************************************************************/
|
||
/***/ ((module) => {
|
||
|
||
eval("(()=>{\"use strict\";var e={328:e=>{function hash(e){var r=5381,_=e.length;while(_){r=r*33^e.charCodeAt(--_)}return r>>>0}e.exports=hash}};var r={};function __nccwpck_require__(_){var a=r[_];if(a!==undefined){return a.exports}var t=r[_]={exports:{}};var i=true;try{e[_](t,t.exports,__nccwpck_require__);i=false}finally{if(i)delete r[_]}return t.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var _=__nccwpck_require__(328);module.exports=_})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3N0cmluZy1oYXNoL2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFBLE1BQU0sYUFBYSxPQUFPLFFBQVEsaUJBQWlCLHNCQUFzQixTQUFTLHlCQUF5QixhQUFhLGlCQUFpQixTQUFTLGdDQUFnQyxXQUFXLGtCQUFrQixpQkFBaUIsWUFBWSxZQUFZLFdBQVcsSUFBSSxzQ0FBc0MsUUFBUSxRQUFRLGlCQUFpQixpQkFBaUIsaUZBQWlGLCtCQUErQixpQkFBaUIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3N0cmluZy1oYXNoL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIigoKT0+e1widXNlIHN0cmljdFwiO3ZhciBlPXszMjg6ZT0+e2Z1bmN0aW9uIGhhc2goZSl7dmFyIHI9NTM4MSxfPWUubGVuZ3RoO3doaWxlKF8pe3I9ciozM15lLmNoYXJDb2RlQXQoLS1fKX1yZXR1cm4gcj4+PjB9ZS5leHBvcnRzPWhhc2h9fTt2YXIgcj17fTtmdW5jdGlvbiBfX25jY3dwY2tfcmVxdWlyZV9fKF8pe3ZhciBhPXJbX107aWYoYSE9PXVuZGVmaW5lZCl7cmV0dXJuIGEuZXhwb3J0c312YXIgdD1yW19dPXtleHBvcnRzOnt9fTt2YXIgaT10cnVlO3RyeXtlW19dKHQsdC5leHBvcnRzLF9fbmNjd3Bja19yZXF1aXJlX18pO2k9ZmFsc2V9ZmluYWxseXtpZihpKWRlbGV0ZSByW19dfXJldHVybiB0LmV4cG9ydHN9aWYodHlwZW9mIF9fbmNjd3Bja19yZXF1aXJlX18hPT1cInVuZGVmaW5lZFwiKV9fbmNjd3Bja19yZXF1aXJlX18uYWI9X19kaXJuYW1lK1wiL1wiO3ZhciBfPV9fbmNjd3Bja19yZXF1aXJlX18oMzI4KTttb2R1bGUuZXhwb3J0cz1ffSkoKTsiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/string-hash/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/lib/batcher.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/next/dist/lib/batcher.js ***!
|
||
\***********************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"Batcher\", ({\n enumerable: true,\n get: function() {\n return Batcher;\n }\n}));\nconst _detachedpromise = __webpack_require__(/*! ./detached-promise */ \"(rsc)/./node_modules/next/dist/lib/detached-promise.js\");\nclass Batcher {\n constructor(cacheKeyFn, /**\n * A function that will be called to schedule the wrapped function to be\n * executed. This defaults to a function that will execute the function\n * immediately.\n */ schedulerFn = (fn)=>fn()){\n this.cacheKeyFn = cacheKeyFn;\n this.schedulerFn = schedulerFn;\n this.pending = new Map();\n }\n static create(options) {\n return new Batcher(options == null ? void 0 : options.cacheKeyFn, options == null ? void 0 : options.schedulerFn);\n }\n /**\n * Wraps a function in a promise that will be resolved or rejected only once\n * for a given key. This will allow multiple calls to the function to be\n * made, but only one will be executed at a time. The result of the first\n * call will be returned to all callers.\n *\n * @param key the key to use for the cache\n * @param fn the function to wrap\n * @returns a promise that resolves to the result of the function\n */ async batch(key, fn) {\n const cacheKey = this.cacheKeyFn ? await this.cacheKeyFn(key) : key;\n if (cacheKey === null) {\n return fn({\n resolve: (value)=>Promise.resolve(value),\n key\n });\n }\n const pending = this.pending.get(cacheKey);\n if (pending) return pending;\n const { promise, resolve, reject } = new _detachedpromise.DetachedPromise();\n this.pending.set(cacheKey, promise);\n this.schedulerFn(async ()=>{\n try {\n const result = await fn({\n resolve,\n key\n });\n // Resolving a promise multiple times is a no-op, so we can safely\n // resolve all pending promises with the same result.\n resolve(result);\n } catch (err) {\n reject(err);\n } finally{\n this.pending.delete(cacheKey);\n }\n });\n return promise;\n }\n}\n\n//# sourceMappingURL=batcher.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9iYXRjaGVyLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsMkNBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YseUJBQXlCLG1CQUFPLENBQUMsa0ZBQW9CO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwyQkFBMkI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvbGliL2JhdGNoZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJCYXRjaGVyXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBCYXRjaGVyO1xuICAgIH1cbn0pO1xuY29uc3QgX2RldGFjaGVkcHJvbWlzZSA9IHJlcXVpcmUoXCIuL2RldGFjaGVkLXByb21pc2VcIik7XG5jbGFzcyBCYXRjaGVyIHtcbiAgICBjb25zdHJ1Y3RvcihjYWNoZUtleUZuLCAvKipcbiAgICAgKiBBIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgdG8gc2NoZWR1bGUgdGhlIHdyYXBwZWQgZnVuY3Rpb24gdG8gYmVcbiAgICAgKiBleGVjdXRlZC4gVGhpcyBkZWZhdWx0cyB0byBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBleGVjdXRlIHRoZSBmdW5jdGlvblxuICAgICAqIGltbWVkaWF0ZWx5LlxuICAgICAqLyBzY2hlZHVsZXJGbiA9IChmbik9PmZuKCkpe1xuICAgICAgICB0aGlzLmNhY2hlS2V5Rm4gPSBjYWNoZUtleUZuO1xuICAgICAgICB0aGlzLnNjaGVkdWxlckZuID0gc2NoZWR1bGVyRm47XG4gICAgICAgIHRoaXMucGVuZGluZyA9IG5ldyBNYXAoKTtcbiAgICB9XG4gICAgc3RhdGljIGNyZWF0ZShvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBuZXcgQmF0Y2hlcihvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLmNhY2hlS2V5Rm4sIG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuc2NoZWR1bGVyRm4pO1xuICAgIH1cbiAgICAvKipcbiAgICogV3JhcHMgYSBmdW5jdGlvbiBpbiBhIHByb21pc2UgdGhhdCB3aWxsIGJlIHJlc29sdmVkIG9yIHJlamVjdGVkIG9ubHkgb25jZVxuICAgKiBmb3IgYSBnaXZlbiBrZXkuIFRoaXMgd2lsbCBhbGxvdyBtdWx0aXBsZSBjYWxscyB0byB0aGUgZnVuY3Rpb24gdG8gYmVcbiAgICogbWFkZSwgYnV0IG9ubHkgb25lIHdpbGwgYmUgZXhlY3V0ZWQgYXQgYSB0aW1lLiBUaGUgcmVzdWx0IG9mIHRoZSBmaXJzdFxuICAgKiBjYWxsIHdpbGwgYmUgcmV0dXJuZWQgdG8gYWxsIGNhbGxlcnMuXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgdGhlIGtleSB0byB1c2UgZm9yIHRoZSBjYWNoZVxuICAgKiBAcGFyYW0gZm4gdGhlIGZ1bmN0aW9uIHRvIHdyYXBcbiAgICogQHJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb25cbiAgICovIGFzeW5jIGJhdGNoKGtleSwgZm4pIHtcbiAgICAgICAgY29uc3QgY2FjaGVLZXkgPSB0aGlzLmNhY2hlS2V5Rm4gPyBhd2FpdCB0aGlzLmNhY2hlS2V5Rm4oa2V5KSA6IGtleTtcbiAgICAgICAgaWYgKGNhY2hlS2V5ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZm4oe1xuICAgICAgICAgICAgICAgIHJlc29sdmU6ICh2YWx1ZSk9PlByb21pc2UucmVzb2x2ZSh2YWx1ZSksXG4gICAgICAgICAgICAgICAga2V5XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwZW5kaW5nID0gdGhpcy5wZW5kaW5nLmdldChjYWNoZUtleSk7XG4gICAgICAgIGlmIChwZW5kaW5nKSByZXR1cm4gcGVuZGluZztcbiAgICAgICAgY29uc3QgeyBwcm9taXNlLCByZXNvbHZlLCByZWplY3QgfSA9IG5ldyBfZGV0YWNoZWRwcm9taXNlLkRldGFjaGVkUHJvbWlzZSgpO1xuICAgICAgICB0aGlzLnBlbmRpbmcuc2V0KGNhY2hlS2V5LCBwcm9taXNlKTtcbiAgICAgICAgdGhpcy5zY2hlZHVsZXJGbihhc3luYyAoKT0+e1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmbih7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUsXG4gICAgICAgICAgICAgICAgICAgIGtleVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIFJlc29sdmluZyBhIHByb21pc2UgbXVsdGlwbGUgdGltZXMgaXMgYSBuby1vcCwgc28gd2UgY2FuIHNhZmVseVxuICAgICAgICAgICAgICAgIC8vIHJlc29sdmUgYWxsIHBlbmRpbmcgcHJvbWlzZXMgd2l0aCB0aGUgc2FtZSByZXN1bHQuXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9IGZpbmFsbHl7XG4gICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nLmRlbGV0ZShjYWNoZUtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJhdGNoZXIuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/batcher.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/lib/client-and-server-references.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/client-and-server-references.js ***!
|
||
\********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getUseCacheFunctionInfo: function() {\n return getUseCacheFunctionInfo;\n },\n isClientReference: function() {\n return isClientReference;\n },\n isServerReference: function() {\n return isServerReference;\n },\n isUseCacheFunction: function() {\n return isUseCacheFunction;\n }\n});\nconst _serverreferenceinfo = __webpack_require__(/*! ../shared/lib/server-reference-info */ \"(rsc)/./node_modules/next/dist/shared/lib/server-reference-info.js\");\nfunction isServerReference(value) {\n return value.$$typeof === Symbol.for('react.server.reference');\n}\nfunction isUseCacheFunction(value) {\n if (!isServerReference(value)) {\n return false;\n }\n const { type } = (0, _serverreferenceinfo.extractInfoFromServerReferenceId)(value.$$id);\n return type === 'use-cache';\n}\nfunction getUseCacheFunctionInfo(value) {\n if (!isServerReference(value)) {\n return null;\n }\n const info = (0, _serverreferenceinfo.extractInfoFromServerReferenceId)(value.$$id);\n return info.type === 'use-cache' ? info : null;\n}\nfunction isClientReference(mod) {\n const defaultExport = (mod == null ? void 0 : mod.default) || mod;\n return (defaultExport == null ? void 0 : defaultExport.$$typeof) === Symbol.for('react.client.reference');\n}\n\n//# sourceMappingURL=client-and-server-references.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9jbGllbnQtYW5kLXNlcnZlci1yZWZlcmVuY2VzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQUtMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCw2QkFBNkIsbUJBQU8sQ0FBQywrR0FBcUM7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE9BQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9jbGllbnQtYW5kLXNlcnZlci1yZWZlcmVuY2VzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgZ2V0VXNlQ2FjaGVGdW5jdGlvbkluZm86IG51bGwsXG4gICAgaXNDbGllbnRSZWZlcmVuY2U6IG51bGwsXG4gICAgaXNTZXJ2ZXJSZWZlcmVuY2U6IG51bGwsXG4gICAgaXNVc2VDYWNoZUZ1bmN0aW9uOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIGdldFVzZUNhY2hlRnVuY3Rpb25JbmZvOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldFVzZUNhY2hlRnVuY3Rpb25JbmZvO1xuICAgIH0sXG4gICAgaXNDbGllbnRSZWZlcmVuY2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaXNDbGllbnRSZWZlcmVuY2U7XG4gICAgfSxcbiAgICBpc1NlcnZlclJlZmVyZW5jZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpc1NlcnZlclJlZmVyZW5jZTtcbiAgICB9LFxuICAgIGlzVXNlQ2FjaGVGdW5jdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpc1VzZUNhY2hlRnVuY3Rpb247XG4gICAgfVxufSk7XG5jb25zdCBfc2VydmVycmVmZXJlbmNlaW5mbyA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3NlcnZlci1yZWZlcmVuY2UtaW5mb1wiKTtcbmZ1bmN0aW9uIGlzU2VydmVyUmVmZXJlbmNlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLiQkdHlwZW9mID09PSBTeW1ib2wuZm9yKCdyZWFjdC5zZXJ2ZXIucmVmZXJlbmNlJyk7XG59XG5mdW5jdGlvbiBpc1VzZUNhY2hlRnVuY3Rpb24odmFsdWUpIHtcbiAgICBpZiAoIWlzU2VydmVyUmVmZXJlbmNlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHsgdHlwZSB9ID0gKDAsIF9zZXJ2ZXJyZWZlcmVuY2VpbmZvLmV4dHJhY3RJbmZvRnJvbVNlcnZlclJlZmVyZW5jZUlkKSh2YWx1ZS4kJGlkKTtcbiAgICByZXR1cm4gdHlwZSA9PT0gJ3VzZS1jYWNoZSc7XG59XG5mdW5jdGlvbiBnZXRVc2VDYWNoZUZ1bmN0aW9uSW5mbyh2YWx1ZSkge1xuICAgIGlmICghaXNTZXJ2ZXJSZWZlcmVuY2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBpbmZvID0gKDAsIF9zZXJ2ZXJyZWZlcmVuY2VpbmZvLmV4dHJhY3RJbmZvRnJvbVNlcnZlclJlZmVyZW5jZUlkKSh2YWx1ZS4kJGlkKTtcbiAgICByZXR1cm4gaW5mby50eXBlID09PSAndXNlLWNhY2hlJyA/IGluZm8gOiBudWxsO1xufVxuZnVuY3Rpb24gaXNDbGllbnRSZWZlcmVuY2UobW9kKSB7XG4gICAgY29uc3QgZGVmYXVsdEV4cG9ydCA9IChtb2QgPT0gbnVsbCA/IHZvaWQgMCA6IG1vZC5kZWZhdWx0KSB8fCBtb2Q7XG4gICAgcmV0dXJuIChkZWZhdWx0RXhwb3J0ID09IG51bGwgPyB2b2lkIDAgOiBkZWZhdWx0RXhwb3J0LiQkdHlwZW9mKSA9PT0gU3ltYm9sLmZvcigncmVhY3QuY2xpZW50LnJlZmVyZW5jZScpO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1jbGllbnQtYW5kLXNlcnZlci1yZWZlcmVuY2VzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/client-and-server-references.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/lib/constants.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/constants.js ***!
|
||
\*************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n ACTION_SUFFIX: function() {\n return ACTION_SUFFIX;\n },\n APP_DIR_ALIAS: function() {\n return APP_DIR_ALIAS;\n },\n CACHE_ONE_YEAR_SECONDS: function() {\n return CACHE_ONE_YEAR_SECONDS;\n },\n DOT_NEXT_ALIAS: function() {\n return DOT_NEXT_ALIAS;\n },\n ESLINT_DEFAULT_DIRS: function() {\n return ESLINT_DEFAULT_DIRS;\n },\n GSP_NO_RETURNED_VALUE: function() {\n return GSP_NO_RETURNED_VALUE;\n },\n GSSP_COMPONENT_MEMBER_ERROR: function() {\n return GSSP_COMPONENT_MEMBER_ERROR;\n },\n GSSP_NO_RETURNED_VALUE: function() {\n return GSSP_NO_RETURNED_VALUE;\n },\n HTML_CONTENT_TYPE_HEADER: function() {\n return HTML_CONTENT_TYPE_HEADER;\n },\n INFINITE_CACHE: function() {\n return INFINITE_CACHE;\n },\n INSTRUMENTATION_HOOK_FILENAME: function() {\n return INSTRUMENTATION_HOOK_FILENAME;\n },\n JSON_CONTENT_TYPE_HEADER: function() {\n return JSON_CONTENT_TYPE_HEADER;\n },\n MATCHED_PATH_HEADER: function() {\n return MATCHED_PATH_HEADER;\n },\n MIDDLEWARE_FILENAME: function() {\n return MIDDLEWARE_FILENAME;\n },\n MIDDLEWARE_LOCATION_REGEXP: function() {\n return MIDDLEWARE_LOCATION_REGEXP;\n },\n NEXT_BODY_SUFFIX: function() {\n return NEXT_BODY_SUFFIX;\n },\n NEXT_CACHE_IMPLICIT_TAG_ID: function() {\n return NEXT_CACHE_IMPLICIT_TAG_ID;\n },\n NEXT_CACHE_REVALIDATED_TAGS_HEADER: function() {\n return NEXT_CACHE_REVALIDATED_TAGS_HEADER;\n },\n NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER: function() {\n return NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER;\n },\n NEXT_CACHE_ROOT_PARAM_TAG_ID: function() {\n return NEXT_CACHE_ROOT_PARAM_TAG_ID;\n },\n NEXT_CACHE_SOFT_TAG_MAX_LENGTH: function() {\n return NEXT_CACHE_SOFT_TAG_MAX_LENGTH;\n },\n NEXT_CACHE_TAGS_HEADER: function() {\n return NEXT_CACHE_TAGS_HEADER;\n },\n NEXT_CACHE_TAG_MAX_ITEMS: function() {\n return NEXT_CACHE_TAG_MAX_ITEMS;\n },\n NEXT_CACHE_TAG_MAX_LENGTH: function() {\n return NEXT_CACHE_TAG_MAX_LENGTH;\n },\n NEXT_DATA_SUFFIX: function() {\n return NEXT_DATA_SUFFIX;\n },\n NEXT_INTERCEPTION_MARKER_PREFIX: function() {\n return NEXT_INTERCEPTION_MARKER_PREFIX;\n },\n NEXT_META_SUFFIX: function() {\n return NEXT_META_SUFFIX;\n },\n NEXT_NAV_DEPLOYMENT_ID_HEADER: function() {\n return NEXT_NAV_DEPLOYMENT_ID_HEADER;\n },\n NEXT_QUERY_PARAM_PREFIX: function() {\n return NEXT_QUERY_PARAM_PREFIX;\n },\n NEXT_RESUME_HEADER: function() {\n return NEXT_RESUME_HEADER;\n },\n NEXT_RESUME_STATE_LENGTH_HEADER: function() {\n return NEXT_RESUME_STATE_LENGTH_HEADER;\n },\n NON_STANDARD_NODE_ENV: function() {\n return NON_STANDARD_NODE_ENV;\n },\n PAGES_DIR_ALIAS: function() {\n return PAGES_DIR_ALIAS;\n },\n PRERENDER_REVALIDATE_HEADER: function() {\n return PRERENDER_REVALIDATE_HEADER;\n },\n PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER: function() {\n return PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER;\n },\n PROXY_FILENAME: function() {\n return PROXY_FILENAME;\n },\n PROXY_LOCATION_REGEXP: function() {\n return PROXY_LOCATION_REGEXP;\n },\n PUBLIC_DIR_MIDDLEWARE_CONFLICT: function() {\n return PUBLIC_DIR_MIDDLEWARE_CONFLICT;\n },\n ROOT_DIR_ALIAS: function() {\n return ROOT_DIR_ALIAS;\n },\n RSC_ACTION_CLIENT_WRAPPER_ALIAS: function() {\n return RSC_ACTION_CLIENT_WRAPPER_ALIAS;\n },\n RSC_ACTION_ENCRYPTION_ALIAS: function() {\n return RSC_ACTION_ENCRYPTION_ALIAS;\n },\n RSC_ACTION_PROXY_ALIAS: function() {\n return RSC_ACTION_PROXY_ALIAS;\n },\n RSC_ACTION_VALIDATE_ALIAS: function() {\n return RSC_ACTION_VALIDATE_ALIAS;\n },\n RSC_CACHE_WRAPPER_ALIAS: function() {\n return RSC_CACHE_WRAPPER_ALIAS;\n },\n RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS: function() {\n return RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS;\n },\n RSC_MOD_REF_PROXY_ALIAS: function() {\n return RSC_MOD_REF_PROXY_ALIAS;\n },\n RSC_SEGMENTS_DIR_SUFFIX: function() {\n return RSC_SEGMENTS_DIR_SUFFIX;\n },\n RSC_SEGMENT_SUFFIX: function() {\n return RSC_SEGMENT_SUFFIX;\n },\n RSC_SUFFIX: function() {\n return RSC_SUFFIX;\n },\n SERVER_PROPS_EXPORT_ERROR: function() {\n return SERVER_PROPS_EXPORT_ERROR;\n },\n SERVER_PROPS_GET_INIT_PROPS_CONFLICT: function() {\n return SERVER_PROPS_GET_INIT_PROPS_CONFLICT;\n },\n SERVER_PROPS_SSG_CONFLICT: function() {\n return SERVER_PROPS_SSG_CONFLICT;\n },\n SERVER_RUNTIME: function() {\n return SERVER_RUNTIME;\n },\n SSG_FALLBACK_EXPORT_ERROR: function() {\n return SSG_FALLBACK_EXPORT_ERROR;\n },\n SSG_GET_INITIAL_PROPS_CONFLICT: function() {\n return SSG_GET_INITIAL_PROPS_CONFLICT;\n },\n STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR: function() {\n return STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR;\n },\n TEXT_PLAIN_CONTENT_TYPE_HEADER: function() {\n return TEXT_PLAIN_CONTENT_TYPE_HEADER;\n },\n UNSTABLE_REVALIDATE_RENAME_ERROR: function() {\n return UNSTABLE_REVALIDATE_RENAME_ERROR;\n },\n WEBPACK_LAYERS: function() {\n return WEBPACK_LAYERS;\n },\n WEBPACK_RESOURCE_QUERIES: function() {\n return WEBPACK_RESOURCE_QUERIES;\n },\n WEB_SOCKET_MAX_RECONNECTIONS: function() {\n return WEB_SOCKET_MAX_RECONNECTIONS;\n }\n});\nconst TEXT_PLAIN_CONTENT_TYPE_HEADER = 'text/plain';\nconst HTML_CONTENT_TYPE_HEADER = 'text/html; charset=utf-8';\nconst JSON_CONTENT_TYPE_HEADER = 'application/json; charset=utf-8';\nconst NEXT_QUERY_PARAM_PREFIX = 'nxtP';\nconst NEXT_INTERCEPTION_MARKER_PREFIX = 'nxtI';\nconst MATCHED_PATH_HEADER = 'x-matched-path';\nconst PRERENDER_REVALIDATE_HEADER = 'x-prerender-revalidate';\nconst PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER = 'x-prerender-revalidate-if-generated';\nconst RSC_SEGMENTS_DIR_SUFFIX = '.segments';\nconst RSC_SEGMENT_SUFFIX = '.segment.rsc';\nconst RSC_SUFFIX = '.rsc';\nconst ACTION_SUFFIX = '.action';\nconst NEXT_DATA_SUFFIX = '.json';\nconst NEXT_META_SUFFIX = '.meta';\nconst NEXT_BODY_SUFFIX = '.body';\nconst NEXT_NAV_DEPLOYMENT_ID_HEADER = 'x-nextjs-deployment-id';\nconst NEXT_CACHE_TAGS_HEADER = 'x-next-cache-tags';\nconst NEXT_CACHE_REVALIDATED_TAGS_HEADER = 'x-next-revalidated-tags';\nconst NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER = 'x-next-revalidate-tag-token';\nconst NEXT_RESUME_HEADER = 'next-resume';\nconst NEXT_RESUME_STATE_LENGTH_HEADER = 'x-next-resume-state-length';\nconst NEXT_CACHE_TAG_MAX_ITEMS = 128;\nconst NEXT_CACHE_TAG_MAX_LENGTH = 256;\nconst NEXT_CACHE_SOFT_TAG_MAX_LENGTH = 1024;\nconst NEXT_CACHE_IMPLICIT_TAG_ID = '_N_T_';\nconst NEXT_CACHE_ROOT_PARAM_TAG_ID = '_N_RP_';\nconst CACHE_ONE_YEAR_SECONDS = 31536000;\nconst INFINITE_CACHE = 0xfffffffe;\nconst MIDDLEWARE_FILENAME = 'middleware';\nconst MIDDLEWARE_LOCATION_REGEXP = `(?:src/)?${MIDDLEWARE_FILENAME}`;\nconst PROXY_FILENAME = 'proxy';\nconst PROXY_LOCATION_REGEXP = `(?:src/)?${PROXY_FILENAME}`;\nconst INSTRUMENTATION_HOOK_FILENAME = 'instrumentation';\nconst PAGES_DIR_ALIAS = 'private-next-pages';\nconst DOT_NEXT_ALIAS = 'private-dot-next';\nconst ROOT_DIR_ALIAS = 'private-next-root-dir';\nconst APP_DIR_ALIAS = 'private-next-app-dir';\nconst RSC_MOD_REF_PROXY_ALIAS = 'next/dist/build/webpack/loaders/next-flight-loader/module-proxy';\nconst RSC_ACTION_VALIDATE_ALIAS = 'private-next-rsc-action-validate';\nconst RSC_ACTION_PROXY_ALIAS = 'private-next-rsc-server-reference';\nconst RSC_CACHE_WRAPPER_ALIAS = 'private-next-rsc-cache-wrapper';\nconst RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS = 'private-next-rsc-track-dynamic-import';\nconst RSC_ACTION_ENCRYPTION_ALIAS = 'private-next-rsc-action-encryption';\nconst RSC_ACTION_CLIENT_WRAPPER_ALIAS = 'private-next-rsc-action-client-wrapper';\nconst PUBLIC_DIR_MIDDLEWARE_CONFLICT = `You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict`;\nconst SSG_GET_INITIAL_PROPS_CONFLICT = `You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps`;\nconst SERVER_PROPS_GET_INIT_PROPS_CONFLICT = `You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.`;\nconst SERVER_PROPS_SSG_CONFLICT = `You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps`;\nconst STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR = `can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props`;\nconst SERVER_PROPS_EXPORT_ERROR = `pages with \\`getServerSideProps\\` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export`;\nconst GSP_NO_RETURNED_VALUE = 'Your `getStaticProps` function did not return an object. Did you forget to add a `return`?';\nconst GSSP_NO_RETURNED_VALUE = 'Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?';\nconst UNSTABLE_REVALIDATE_RENAME_ERROR = 'The `unstable_revalidate` property is available for general use.\\n' + 'Please use `revalidate` instead.';\nconst GSSP_COMPONENT_MEMBER_ERROR = `can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member`;\nconst NON_STANDARD_NODE_ENV = `You are using a non-standard \"NODE_ENV\" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env`;\nconst SSG_FALLBACK_EXPORT_ERROR = `Pages with \\`fallback\\` enabled in \\`getStaticPaths\\` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export`;\nconst ESLINT_DEFAULT_DIRS = [\n 'app',\n 'pages',\n 'components',\n 'lib',\n 'src'\n];\nconst SERVER_RUNTIME = {\n edge: 'edge',\n experimentalEdge: 'experimental-edge',\n nodejs: 'nodejs'\n};\nconst WEB_SOCKET_MAX_RECONNECTIONS = 12;\n/**\n * The names of the webpack layers. These layers are the primitives for the\n * webpack chunks.\n */ const WEBPACK_LAYERS_NAMES = {\n /**\n * The layer for the shared code between the client and server bundles.\n */ shared: 'shared',\n /**\n * The layer for server-only runtime and picking up `react-server` export conditions.\n * Including app router RSC pages and app router custom routes and metadata routes.\n */ reactServerComponents: 'rsc',\n /**\n * Server Side Rendering layer for app (ssr).\n */ serverSideRendering: 'ssr',\n /**\n * The browser client bundle layer for actions.\n */ actionBrowser: 'action-browser',\n /**\n * The Node.js bundle layer for the API routes.\n */ apiNode: 'api-node',\n /**\n * The Edge Lite bundle layer for the API routes.\n */ apiEdge: 'api-edge',\n /**\n * The layer for the middleware code.\n */ middleware: 'middleware',\n /**\n * The layer for the instrumentation hooks.\n */ instrument: 'instrument',\n /**\n * The layer for assets on the edge.\n */ edgeAsset: 'edge-asset',\n /**\n * The browser client bundle layer for App directory.\n */ appPagesBrowser: 'app-pages-browser',\n /**\n * The browser client bundle layer for Pages directory.\n */ pagesDirBrowser: 'pages-dir-browser',\n /**\n * The Edge Lite bundle layer for Pages directory.\n */ pagesDirEdge: 'pages-dir-edge',\n /**\n * The Node.js bundle layer for Pages directory.\n */ pagesDirNode: 'pages-dir-node'\n};\nconst WEBPACK_LAYERS = {\n ...WEBPACK_LAYERS_NAMES,\n GROUP: {\n builtinReact: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser\n ],\n serverOnly: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.instrument,\n WEBPACK_LAYERS_NAMES.middleware\n ],\n neutralTarget: [\n // pages api\n WEBPACK_LAYERS_NAMES.apiNode,\n WEBPACK_LAYERS_NAMES.apiEdge\n ],\n clientOnly: [\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser\n ],\n bundled: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.shared,\n WEBPACK_LAYERS_NAMES.instrument,\n WEBPACK_LAYERS_NAMES.middleware\n ],\n appPages: [\n // app router pages and layouts\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.actionBrowser\n ]\n }\n};\nconst WEBPACK_RESOURCE_QUERIES = {\n edgeSSREntry: '__next_edge_ssr_entry__',\n metadata: '__next_metadata__',\n metadataRoute: '__next_metadata_route__',\n metadataImageMeta: '__next_metadata_image_meta__'\n};\n\n//# sourceMappingURL=constants.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9jb25zdGFudHMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBOERMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBLDZDQUE2QztBQUM3QyxvREFBb0Q7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyxvQkFBb0I7QUFDbkU7QUFDQSwwQ0FBMEMsZUFBZTtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9saWIvY29uc3RhbnRzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgQUNUSU9OX1NVRkZJWDogbnVsbCxcbiAgICBBUFBfRElSX0FMSUFTOiBudWxsLFxuICAgIENBQ0hFX09ORV9ZRUFSX1NFQ09ORFM6IG51bGwsXG4gICAgRE9UX05FWFRfQUxJQVM6IG51bGwsXG4gICAgRVNMSU5UX0RFRkFVTFRfRElSUzogbnVsbCxcbiAgICBHU1BfTk9fUkVUVVJORURfVkFMVUU6IG51bGwsXG4gICAgR1NTUF9DT01QT05FTlRfTUVNQkVSX0VSUk9SOiBudWxsLFxuICAgIEdTU1BfTk9fUkVUVVJORURfVkFMVUU6IG51bGwsXG4gICAgSFRNTF9DT05URU5UX1RZUEVfSEVBREVSOiBudWxsLFxuICAgIElORklOSVRFX0NBQ0hFOiBudWxsLFxuICAgIElOU1RSVU1FTlRBVElPTl9IT09LX0ZJTEVOQU1FOiBudWxsLFxuICAgIEpTT05fQ09OVEVOVF9UWVBFX0hFQURFUjogbnVsbCxcbiAgICBNQVRDSEVEX1BBVEhfSEVBREVSOiBudWxsLFxuICAgIE1JRERMRVdBUkVfRklMRU5BTUU6IG51bGwsXG4gICAgTUlERExFV0FSRV9MT0NBVElPTl9SRUdFWFA6IG51bGwsXG4gICAgTkVYVF9CT0RZX1NVRkZJWDogbnVsbCxcbiAgICBORVhUX0NBQ0hFX0lNUExJQ0lUX1RBR19JRDogbnVsbCxcbiAgICBORVhUX0NBQ0hFX1JFVkFMSURBVEVEX1RBR1NfSEVBREVSOiBudWxsLFxuICAgIE5FWFRfQ0FDSEVfUkVWQUxJREFURV9UQUdfVE9LRU5fSEVBREVSOiBudWxsLFxuICAgIE5FWFRfQ0FDSEVfUk9PVF9QQVJBTV9UQUdfSUQ6IG51bGwsXG4gICAgTkVYVF9DQUNIRV9TT0ZUX1RBR19NQVhfTEVOR1RIOiBudWxsLFxuICAgIE5FWFRfQ0FDSEVfVEFHU19IRUFERVI6IG51bGwsXG4gICAgTkVYVF9DQUNIRV9UQUdfTUFYX0lURU1TOiBudWxsLFxuICAgIE5FWFRfQ0FDSEVfVEFHX01BWF9MRU5HVEg6IG51bGwsXG4gICAgTkVYVF9EQVRBX1NVRkZJWDogbnVsbCxcbiAgICBORVhUX0lOVEVSQ0VQVElPTl9NQVJLRVJfUFJFRklYOiBudWxsLFxuICAgIE5FWFRfTUVUQV9TVUZGSVg6IG51bGwsXG4gICAgTkVYVF9OQVZfREVQTE9ZTUVOVF9JRF9IRUFERVI6IG51bGwsXG4gICAgTkVYVF9RVUVSWV9QQVJBTV9QUkVGSVg6IG51bGwsXG4gICAgTkVYVF9SRVNVTUVfSEVBREVSOiBudWxsLFxuICAgIE5FWFRfUkVTVU1FX1NUQVRFX0xFTkdUSF9IRUFERVI6IG51bGwsXG4gICAgTk9OX1NUQU5EQVJEX05PREVfRU5WOiBudWxsLFxuICAgIFBBR0VTX0RJUl9BTElBUzogbnVsbCxcbiAgICBQUkVSRU5ERVJfUkVWQUxJREFURV9IRUFERVI6IG51bGwsXG4gICAgUFJFUkVOREVSX1JFVkFMSURBVEVfT05MWV9HRU5FUkFURURfSEVBREVSOiBudWxsLFxuICAgIFBST1hZX0ZJTEVOQU1FOiBudWxsLFxuICAgIFBST1hZX0xPQ0FUSU9OX1JFR0VYUDogbnVsbCxcbiAgICBQVUJMSUNfRElSX01JRERMRVdBUkVfQ09ORkxJQ1Q6IG51bGwsXG4gICAgUk9PVF9ESVJfQUxJQVM6IG51bGwsXG4gICAgUlNDX0FDVElPTl9DTElFTlRfV1JBUFBFUl9BTElBUzogbnVsbCxcbiAgICBSU0NfQUNUSU9OX0VOQ1JZUFRJT05fQUxJQVM6IG51bGwsXG4gICAgUlNDX0FDVElPTl9QUk9YWV9BTElBUzogbnVsbCxcbiAgICBSU0NfQUNUSU9OX1ZBTElEQVRFX0FMSUFTOiBudWxsLFxuICAgIFJTQ19DQUNIRV9XUkFQUEVSX0FMSUFTOiBudWxsLFxuICAgIFJTQ19EWU5BTUlDX0lNUE9SVF9XUkFQUEVSX0FMSUFTOiBudWxsLFxuICAgIFJTQ19NT0RfUkVGX1BST1hZX0FMSUFTOiBudWxsLFxuICAgIFJTQ19TRUdNRU5UU19ESVJfU1VGRklYOiBudWxsLFxuICAgIFJTQ19TRUdNRU5UX1NVRkZJWDogbnVsbCxcbiAgICBSU0NfU1VGRklYOiBudWxsLFxuICAgIFNFUlZFUl9QUk9QU19FWFBPUlRfRVJST1I6IG51bGwsXG4gICAgU0VSVkVSX1BST1BTX0dFVF9JTklUX1BST1BTX0NPTkZMSUNUOiBudWxsLFxuICAgIFNFUlZFUl9QUk9QU19TU0dfQ09ORkxJQ1Q6IG51bGwsXG4gICAgU0VSVkVSX1JVTlRJTUU6IG51bGwsXG4gICAgU1NHX0ZBTExCQUNLX0VYUE9SVF9FUlJPUjogbnVsbCxcbiAgICBTU0dfR0VUX0lOSVRJQUxfUFJPUFNfQ09ORkxJQ1Q6IG51bGwsXG4gICAgU1RBVElDX1NUQVRVU19QQUdFX0dFVF9JTklUSUFMX1BST1BTX0VSUk9SOiBudWxsLFxuICAgIFRFWFRfUExBSU5fQ09OVEVOVF9UWVBFX0hFQURFUjogbnVsbCxcbiAgICBVTlNUQUJMRV9SRVZBTElEQVRFX1JFTkFNRV9FUlJPUjogbnVsbCxcbiAgICBXRUJQQUNLX0xBWUVSUzogbnVsbCxcbiAgICBXRUJQQUNLX1JFU09VUkNFX1FVRVJJRVM6IG51bGwsXG4gICAgV0VCX1NPQ0tFVF9NQVhfUkVDT05ORUNUSU9OUzogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBBQ1RJT05fU1VGRklYOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEFDVElPTl9TVUZGSVg7XG4gICAgfSxcbiAgICBBUFBfRElSX0FMSUFTOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEFQUF9ESVJfQUxJQVM7XG4gICAgfSxcbiAgICBDQUNIRV9PTkVfWUVBUl9TRUNPTkRTOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIENBQ0hFX09ORV9ZRUFSX1NFQ09ORFM7XG4gICAgfSxcbiAgICBET1RfTkVYVF9BTElBUzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBET1RfTkVYVF9BTElBUztcbiAgICB9LFxuICAgIEVTTElOVF9ERUZBVUxUX0RJUlM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gRVNMSU5UX0RFRkFVTFRfRElSUztcbiAgICB9LFxuICAgIEdTUF9OT19SRVRVUk5FRF9WQUxVRTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBHU1BfTk9fUkVUVVJORURfVkFMVUU7XG4gICAgfSxcbiAgICBHU1NQX0NPTVBPTkVOVF9NRU1CRVJfRVJST1I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gR1NTUF9DT01QT05FTlRfTUVNQkVSX0VSUk9SO1xuICAgIH0sXG4gICAgR1NTUF9OT19SRVRVUk5FRF9WQUxVRTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBHU1NQX05PX1JFVFVSTkVEX1ZBTFVFO1xuICAgIH0sXG4gICAgSFRNTF9DT05URU5UX1RZUEVfSEVBREVSOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEhUTUxfQ09OVEVOVF9UWVBFX0hFQURFUjtcbiAgICB9LFxuICAgIElORklOSVRFX0NBQ0hFOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIElORklOSVRFX0NBQ0hFO1xuICAgIH0sXG4gICAgSU5TVFJVTUVOVEFUSU9OX0hPT0tfRklMRU5BTUU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gSU5TVFJVTUVOVEFUSU9OX0hPT0tfRklMRU5BTUU7XG4gICAgfSxcbiAgICBKU09OX0NPTlRFTlRfVFlQRV9IRUFERVI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gSlNPTl9DT05URU5UX1RZUEVfSEVBREVSO1xuICAgIH0sXG4gICAgTUFUQ0hFRF9QQVRIX0hFQURFUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBNQVRDSEVEX1BBVEhfSEVBREVSO1xuICAgIH0sXG4gICAgTUlERExFV0FSRV9GSUxFTkFNRTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBNSURETEVXQVJFX0ZJTEVOQU1FO1xuICAgIH0sXG4gICAgTUlERExFV0FSRV9MT0NBVElPTl9SRUdFWFA6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTUlERExFV0FSRV9MT0NBVElPTl9SRUdFWFA7XG4gICAgfSxcbiAgICBORVhUX0JPRFlfU1VGRklYOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfQk9EWV9TVUZGSVg7XG4gICAgfSxcbiAgICBORVhUX0NBQ0hFX0lNUExJQ0lUX1RBR19JRDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBORVhUX0NBQ0hFX0lNUExJQ0lUX1RBR19JRDtcbiAgICB9LFxuICAgIE5FWFRfQ0FDSEVfUkVWQUxJREFURURfVEFHU19IRUFERVI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTkVYVF9DQUNIRV9SRVZBTElEQVRFRF9UQUdTX0hFQURFUjtcbiAgICB9LFxuICAgIE5FWFRfQ0FDSEVfUkVWQUxJREFURV9UQUdfVE9LRU5fSEVBREVSOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfQ0FDSEVfUkVWQUxJREFURV9UQUdfVE9LRU5fSEVBREVSO1xuICAgIH0sXG4gICAgTkVYVF9DQUNIRV9ST09UX1BBUkFNX1RBR19JRDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBORVhUX0NBQ0hFX1JPT1RfUEFSQU1fVEFHX0lEO1xuICAgIH0sXG4gICAgTkVYVF9DQUNIRV9TT0ZUX1RBR19NQVhfTEVOR1RIOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfQ0FDSEVfU09GVF9UQUdfTUFYX0xFTkdUSDtcbiAgICB9LFxuICAgIE5FWFRfQ0FDSEVfVEFHU19IRUFERVI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTkVYVF9DQUNIRV9UQUdTX0hFQURFUjtcbiAgICB9LFxuICAgIE5FWFRfQ0FDSEVfVEFHX01BWF9JVEVNUzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBORVhUX0NBQ0hFX1RBR19NQVhfSVRFTVM7XG4gICAgfSxcbiAgICBORVhUX0NBQ0hFX1RBR19NQVhfTEVOR1RIOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfQ0FDSEVfVEFHX01BWF9MRU5HVEg7XG4gICAgfSxcbiAgICBORVhUX0RBVEFfU1VGRklYOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfREFUQV9TVUZGSVg7XG4gICAgfSxcbiAgICBORVhUX0lOVEVSQ0VQVElPTl9NQVJLRVJfUFJFRklYOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfSU5URVJDRVBUSU9OX01BUktFUl9QUkVGSVg7XG4gICAgfSxcbiAgICBORVhUX01FVEFfU1VGRklYOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfTUVUQV9TVUZGSVg7XG4gICAgfSxcbiAgICBORVhUX05BVl9ERVBMT1lNRU5UX0lEX0hFQURFUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBORVhUX05BVl9ERVBMT1lNRU5UX0lEX0hFQURFUjtcbiAgICB9LFxuICAgIE5FWFRfUVVFUllfUEFSQU1fUFJFRklYOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfUVVFUllfUEFSQU1fUFJFRklYO1xuICAgIH0sXG4gICAgTkVYVF9SRVNVTUVfSEVBREVSOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfUkVTVU1FX0hFQURFUjtcbiAgICB9LFxuICAgIE5FWFRfUkVTVU1FX1NUQVRFX0xFTkdUSF9IRUFERVI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTkVYVF9SRVNVTUVfU1RBVEVfTEVOR1RIX0hFQURFUjtcbiAgICB9LFxuICAgIE5PTl9TVEFOREFSRF9OT0RFX0VOVjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBOT05fU1RBTkRBUkRfTk9ERV9FTlY7XG4gICAgfSxcbiAgICBQQUdFU19ESVJfQUxJQVM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUEFHRVNfRElSX0FMSUFTO1xuICAgIH0sXG4gICAgUFJFUkVOREVSX1JFVkFMSURBVEVfSEVBREVSOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFBSRVJFTkRFUl9SRVZBTElEQVRFX0hFQURFUjtcbiAgICB9LFxuICAgIFBSRVJFTkRFUl9SRVZBTElEQVRFX09OTFlfR0VORVJBVEVEX0hFQURFUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBQUkVSRU5ERVJfUkVWQUxJREFURV9PTkxZX0dFTkVSQVRFRF9IRUFERVI7XG4gICAgfSxcbiAgICBQUk9YWV9GSUxFTkFNRTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBQUk9YWV9GSUxFTkFNRTtcbiAgICB9LFxuICAgIFBST1hZX0xPQ0FUSU9OX1JFR0VYUDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBQUk9YWV9MT0NBVElPTl9SRUdFWFA7XG4gICAgfSxcbiAgICBQVUJMSUNfRElSX01JRERMRVdBUkVfQ09ORkxJQ1Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUFVCTElDX0RJUl9NSURETEVXQVJFX0NPTkZMSUNUO1xuICAgIH0sXG4gICAgUk9PVF9ESVJfQUxJQVM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUk9PVF9ESVJfQUxJQVM7XG4gICAgfSxcbiAgICBSU0NfQUNUSU9OX0NMSUVOVF9XUkFQUEVSX0FMSUFTOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFJTQ19BQ1RJT05fQ0xJRU5UX1dSQVBQRVJfQUxJQVM7XG4gICAgfSxcbiAgICBSU0NfQUNUSU9OX0VOQ1JZUFRJT05fQUxJQVM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUlNDX0FDVElPTl9FTkNSWVBUSU9OX0FMSUFTO1xuICAgIH0sXG4gICAgUlNDX0FDVElPTl9QUk9YWV9BTElBUzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSU0NfQUNUSU9OX1BST1hZX0FMSUFTO1xuICAgIH0sXG4gICAgUlNDX0FDVElPTl9WQUxJREFURV9BTElBUzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSU0NfQUNUSU9OX1ZBTElEQVRFX0FMSUFTO1xuICAgIH0sXG4gICAgUlNDX0NBQ0hFX1dSQVBQRVJfQUxJQVM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUlNDX0NBQ0hFX1dSQVBQRVJfQUxJQVM7XG4gICAgfSxcbiAgICBSU0NfRFlOQU1JQ19JTVBPUlRfV1JBUFBFUl9BTElBUzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSU0NfRFlOQU1JQ19JTVBPUlRfV1JBUFBFUl9BTElBUztcbiAgICB9LFxuICAgIFJTQ19NT0RfUkVGX1BST1hZX0FMSUFTOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFJTQ19NT0RfUkVGX1BST1hZX0FMSUFTO1xuICAgIH0sXG4gICAgUlNDX1NFR01FTlRTX0RJUl9TVUZGSVg6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUlNDX1NFR01FTlRTX0RJUl9TVUZGSVg7XG4gICAgfSxcbiAgICBSU0NfU0VHTUVOVF9TVUZGSVg6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUlNDX1NFR01FTlRfU1VGRklYO1xuICAgIH0sXG4gICAgUlNDX1NVRkZJWDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSU0NfU1VGRklYO1xuICAgIH0sXG4gICAgU0VSVkVSX1BST1BTX0VYUE9SVF9FUlJPUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBTRVJWRVJfUFJPUFNfRVhQT1JUX0VSUk9SO1xuICAgIH0sXG4gICAgU0VSVkVSX1BST1BTX0dFVF9JTklUX1BST1BTX0NPTkZMSUNUOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFNFUlZFUl9QUk9QU19HRVRfSU5JVF9QUk9QU19DT05GTElDVDtcbiAgICB9LFxuICAgIFNFUlZFUl9QUk9QU19TU0dfQ09ORkxJQ1Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gU0VSVkVSX1BST1BTX1NTR19DT05GTElDVDtcbiAgICB9LFxuICAgIFNFUlZFUl9SVU5USU1FOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFNFUlZFUl9SVU5USU1FO1xuICAgIH0sXG4gICAgU1NHX0ZBTExCQUNLX0VYUE9SVF9FUlJPUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBTU0dfRkFMTEJBQ0tfRVhQT1JUX0VSUk9SO1xuICAgIH0sXG4gICAgU1NHX0dFVF9JTklUSUFMX1BST1BTX0NPTkZMSUNUOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFNTR19HRVRfSU5JVElBTF9QUk9QU19DT05GTElDVDtcbiAgICB9LFxuICAgIFNUQVRJQ19TVEFUVVNfUEFHRV9HRVRfSU5JVElBTF9QUk9QU19FUlJPUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBTVEFUSUNfU1RBVFVTX1BBR0VfR0VUX0lOSVRJQUxfUFJPUFNfRVJST1I7XG4gICAgfSxcbiAgICBURVhUX1BMQUlOX0NPTlRFTlRfVFlQRV9IRUFERVI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gVEVYVF9QTEFJTl9DT05URU5UX1RZUEVfSEVBREVSO1xuICAgIH0sXG4gICAgVU5TVEFCTEVfUkVWQUxJREFURV9SRU5BTUVfRVJST1I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gVU5TVEFCTEVfUkVWQUxJREFURV9SRU5BTUVfRVJST1I7XG4gICAgfSxcbiAgICBXRUJQQUNLX0xBWUVSUzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBXRUJQQUNLX0xBWUVSUztcbiAgICB9LFxuICAgIFdFQlBBQ0tfUkVTT1VSQ0VfUVVFUklFUzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBXRUJQQUNLX1JFU09VUkNFX1FVRVJJRVM7XG4gICAgfSxcbiAgICBXRUJfU09DS0VUX01BWF9SRUNPTk5FQ1RJT05TOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFdFQl9TT0NLRVRfTUFYX1JFQ09OTkVDVElPTlM7XG4gICAgfVxufSk7XG5jb25zdCBURVhUX1BMQUlOX0NPTlRFTlRfVFlQRV9IRUFERVIgPSAndGV4dC9wbGFpbic7XG5jb25zdCBIVE1MX0NPTlRFTlRfVFlQRV9IRUFERVIgPSAndGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04JztcbmNvbnN0IEpTT05fQ09OVEVOVF9UWVBFX0hFQURFUiA9ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JztcbmNvbnN0IE5FWFRfUVVFUllfUEFSQU1fUFJFRklYID0gJ254dFAnO1xuY29uc3QgTkVYVF9JTlRFUkNFUFRJT05fTUFSS0VSX1BSRUZJWCA9ICdueHRJJztcbmNvbnN0IE1BVENIRURfUEFUSF9IRUFERVIgPSAneC1tYXRjaGVkLXBhdGgnO1xuY29uc3QgUFJFUkVOREVSX1JFVkFMSURBVEVfSEVBREVSID0gJ3gtcHJlcmVuZGVyLXJldmFsaWRhdGUnO1xuY29uc3QgUFJFUkVOREVSX1JFVkFMSURBVEVfT05MWV9HRU5FUkFURURfSEVBREVSID0gJ3gtcHJlcmVuZGVyLXJldmFsaWRhdGUtaWYtZ2VuZXJhdGVkJztcbmNvbnN0IFJTQ19TRUdNRU5UU19ESVJfU1VGRklYID0gJy5zZWdtZW50cyc7XG5jb25zdCBSU0NfU0VHTUVOVF9TVUZGSVggPSAnLnNlZ21lbnQucnNjJztcbmNvbnN0IFJTQ19TVUZGSVggPSAnLnJzYyc7XG5jb25zdCBBQ1RJT05fU1VGRklYID0gJy5hY3Rpb24nO1xuY29uc3QgTkVYVF9EQVRBX1NVRkZJWCA9ICcuanNvbic7XG5jb25zdCBORVhUX01FVEFfU1VGRklYID0gJy5tZXRhJztcbmNvbnN0IE5FWFRfQk9EWV9TVUZGSVggPSAnLmJvZHknO1xuY29uc3QgTkVYVF9OQVZfREVQTE9ZTUVOVF9JRF9IRUFERVIgPSAneC1uZXh0anMtZGVwbG95bWVudC1pZCc7XG5jb25zdCBORVhUX0NBQ0hFX1RBR1NfSEVBREVSID0gJ3gtbmV4dC1jYWNoZS10YWdzJztcbmNvbnN0IE5FWFRfQ0FDSEVfUkVWQUxJREFURURfVEFHU19IRUFERVIgPSAneC1uZXh0LXJldmFsaWRhdGVkLXRhZ3MnO1xuY29uc3QgTkVYVF9DQUNIRV9SRVZBTElEQVRFX1RBR19UT0tFTl9IRUFERVIgPSAneC1uZXh0LXJldmFsaWRhdGUtdGFnLXRva2VuJztcbmNvbnN0IE5FWFRfUkVTVU1FX0hFQURFUiA9ICduZXh0LXJlc3VtZSc7XG5jb25zdCBORVhUX1JFU1VNRV9TVEFURV9MRU5HVEhfSEVBREVSID0gJ3gtbmV4dC1yZXN1bWUtc3RhdGUtbGVuZ3RoJztcbmNvbnN0IE5FWFRfQ0FDSEVfVEFHX01BWF9JVEVNUyA9IDEyODtcbmNvbnN0IE5FWFRfQ0FDSEVfVEFHX01BWF9MRU5HVEggPSAyNTY7XG5jb25zdCBORVhUX0NBQ0hFX1NPRlRfVEFHX01BWF9MRU5HVEggPSAxMDI0O1xuY29uc3QgTkVYVF9DQUNIRV9JTVBMSUNJVF9UQUdfSUQgPSAnX05fVF8nO1xuY29uc3QgTkVYVF9DQUNIRV9ST09UX1BBUkFNX1RBR19JRCA9ICdfTl9SUF8nO1xuY29uc3QgQ0FDSEVfT05FX1lFQVJfU0VDT05EUyA9IDMxNTM2MDAwO1xuY29uc3QgSU5GSU5JVEVfQ0FDSEUgPSAweGZmZmZmZmZlO1xuY29uc3QgTUlERExFV0FSRV9GSUxFTkFNRSA9ICdtaWRkbGV3YXJlJztcbmNvbnN0IE1JRERMRVdBUkVfTE9DQVRJT05fUkVHRVhQID0gYCg/OnNyYy8pPyR7TUlERExFV0FSRV9GSUxFTkFNRX1gO1xuY29uc3QgUFJPWFlfRklMRU5BTUUgPSAncHJveHknO1xuY29uc3QgUFJPWFlfTE9DQVRJT05fUkVHRVhQID0gYCg/OnNyYy8pPyR7UFJPWFlfRklMRU5BTUV9YDtcbmNvbnN0IElOU1RSVU1FTlRBVElPTl9IT09LX0ZJTEVOQU1FID0gJ2luc3RydW1lbnRhdGlvbic7XG5jb25zdCBQQUdFU19ESVJfQUxJQVMgPSAncHJpdmF0ZS1uZXh0LXBhZ2VzJztcbmNvbnN0IERPVF9ORVhUX0FMSUFTID0gJ3ByaXZhdGUtZG90LW5leHQnO1xuY29uc3QgUk9PVF9ESVJfQUxJQVMgPSAncHJpdmF0ZS1uZXh0LXJvb3QtZGlyJztcbmNvbnN0IEFQUF9ESVJfQUxJQVMgPSAncHJpdmF0ZS1uZXh0LWFwcC1kaXInO1xuY29uc3QgUlNDX01PRF9SRUZfUFJPWFlfQUxJQVMgPSAnbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1sb2FkZXIvbW9kdWxlLXByb3h5JztcbmNvbnN0IFJTQ19BQ1RJT05fVkFMSURBVEVfQUxJQVMgPSAncHJpdmF0ZS1uZXh0LXJzYy1hY3Rpb24tdmFsaWRhdGUnO1xuY29uc3QgUlNDX0FDVElPTl9QUk9YWV9BTElBUyA9ICdwcml2YXRlLW5leHQtcnNjLXNlcnZlci1yZWZlcmVuY2UnO1xuY29uc3QgUlNDX0NBQ0hFX1dSQVBQRVJfQUxJQVMgPSAncHJpdmF0ZS1uZXh0LXJzYy1jYWNoZS13cmFwcGVyJztcbmNvbnN0IFJTQ19EWU5BTUlDX0lNUE9SVF9XUkFQUEVSX0FMSUFTID0gJ3ByaXZhdGUtbmV4dC1yc2MtdHJhY2stZHluYW1pYy1pbXBvcnQnO1xuY29uc3QgUlNDX0FDVElPTl9FTkNSWVBUSU9OX0FMSUFTID0gJ3ByaXZhdGUtbmV4dC1yc2MtYWN0aW9uLWVuY3J5cHRpb24nO1xuY29uc3QgUlNDX0FDVElPTl9DTElFTlRfV1JBUFBFUl9BTElBUyA9ICdwcml2YXRlLW5leHQtcnNjLWFjdGlvbi1jbGllbnQtd3JhcHBlcic7XG5jb25zdCBQVUJMSUNfRElSX01JRERMRVdBUkVfQ09ORkxJQ1QgPSBgWW91IGNhbiBub3QgaGF2ZSBhICdfbmV4dCcgZm9sZGVyIGluc2lkZSBvZiB5b3VyIHB1YmxpYyBmb2xkZXIuIFRoaXMgY29uZmxpY3RzIHdpdGggdGhlIGludGVybmFsICcvX25leHQnIHJvdXRlLiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9wdWJsaWMtbmV4dC1mb2xkZXItY29uZmxpY3RgO1xuY29uc3QgU1NHX0dFVF9JTklUSUFMX1BST1BTX0NPTkZMSUNUID0gYFlvdSBjYW4gbm90IHVzZSBnZXRJbml0aWFsUHJvcHMgd2l0aCBnZXRTdGF0aWNQcm9wcy4gVG8gdXNlIFNTRywgcGxlYXNlIHJlbW92ZSB5b3VyIGdldEluaXRpYWxQcm9wc2A7XG5jb25zdCBTRVJWRVJfUFJPUFNfR0VUX0lOSVRfUFJPUFNfQ09ORkxJQ1QgPSBgWW91IGNhbiBub3QgdXNlIGdldEluaXRpYWxQcm9wcyB3aXRoIGdldFNlcnZlclNpZGVQcm9wcy4gUGxlYXNlIHJlbW92ZSBnZXRJbml0aWFsUHJvcHMuYDtcbmNvbnN0IFNFUlZFUl9QUk9QU19TU0dfQ09ORkxJQ1QgPSBgWW91IGNhbiBub3QgdXNlIGdldFN0YXRpY1Byb3BzIG9yIGdldFN0YXRpY1BhdGhzIHdpdGggZ2V0U2VydmVyU2lkZVByb3BzLiBUbyB1c2UgU1NHLCBwbGVhc2UgcmVtb3ZlIGdldFNlcnZlclNpZGVQcm9wc2A7XG5jb25zdCBTVEFUSUNfU1RBVFVTX1BBR0VfR0VUX0lOSVRJQUxfUFJPUFNfRVJST1IgPSBgY2FuIG5vdCBoYXZlIGdldEluaXRpYWxQcm9wcy9nZXRTZXJ2ZXJTaWRlUHJvcHMsIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzLzQwNC1nZXQtaW5pdGlhbC1wcm9wc2A7XG5jb25zdCBTRVJWRVJfUFJPUFNfRVhQT1JUX0VSUk9SID0gYHBhZ2VzIHdpdGggXFxgZ2V0U2VydmVyU2lkZVByb3BzXFxgIGNhbiBub3QgYmUgZXhwb3J0ZWQuIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZ3NzcC1leHBvcnRgO1xuY29uc3QgR1NQX05PX1JFVFVSTkVEX1ZBTFVFID0gJ1lvdXIgYGdldFN0YXRpY1Byb3BzYCBmdW5jdGlvbiBkaWQgbm90IHJldHVybiBhbiBvYmplY3QuIERpZCB5b3UgZm9yZ2V0IHRvIGFkZCBhIGByZXR1cm5gPyc7XG5jb25zdCBHU1NQX05PX1JFVFVSTkVEX1ZBTFVFID0gJ1lvdXIgYGdldFNlcnZlclNpZGVQcm9wc2AgZnVuY3Rpb24gZGlkIG5vdCByZXR1cm4gYW4gb2JqZWN0LiBEaWQgeW91IGZvcmdldCB0byBhZGQgYSBgcmV0dXJuYD8nO1xuY29uc3QgVU5TVEFCTEVfUkVWQUxJREFURV9SRU5BTUVfRVJST1IgPSAnVGhlIGB1bnN0YWJsZV9yZXZhbGlkYXRlYCBwcm9wZXJ0eSBpcyBhdmFpbGFibGUgZm9yIGdlbmVyYWwgdXNlLlxcbicgKyAnUGxlYXNlIHVzZSBgcmV2YWxpZGF0ZWAgaW5zdGVhZC4nO1xuY29uc3QgR1NTUF9DT01QT05FTlRfTUVNQkVSX0VSUk9SID0gYGNhbiBub3QgYmUgYXR0YWNoZWQgdG8gYSBwYWdlJ3MgY29tcG9uZW50IGFuZCBtdXN0IGJlIGV4cG9ydGVkIGZyb20gdGhlIHBhZ2UuIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZ3NzcC1jb21wb25lbnQtbWVtYmVyYDtcbmNvbnN0IE5PTl9TVEFOREFSRF9OT0RFX0VOViA9IGBZb3UgYXJlIHVzaW5nIGEgbm9uLXN0YW5kYXJkIFwiTk9ERV9FTlZcIiB2YWx1ZSBpbiB5b3VyIGVudmlyb25tZW50LiBUaGlzIGNyZWF0ZXMgaW5jb25zaXN0ZW5jaWVzIGluIHRoZSBwcm9qZWN0IGFuZCBpcyBzdHJvbmdseSBhZHZpc2VkIGFnYWluc3QuIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbm9uLXN0YW5kYXJkLW5vZGUtZW52YDtcbmNvbnN0IFNTR19GQUxMQkFDS19FWFBPUlRfRVJST1IgPSBgUGFnZXMgd2l0aCBcXGBmYWxsYmFja1xcYCBlbmFibGVkIGluIFxcYGdldFN0YXRpY1BhdGhzXFxgIGNhbiBub3QgYmUgZXhwb3J0ZWQuIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvc3NnLWZhbGxiYWNrLXRydWUtZXhwb3J0YDtcbmNvbnN0IEVTTElOVF9ERUZBVUxUX0RJUlMgPSBbXG4gICAgJ2FwcCcsXG4gICAgJ3BhZ2VzJyxcbiAgICAnY29tcG9uZW50cycsXG4gICAgJ2xpYicsXG4gICAgJ3NyYydcbl07XG5jb25zdCBTRVJWRVJfUlVOVElNRSA9IHtcbiAgICBlZGdlOiAnZWRnZScsXG4gICAgZXhwZXJpbWVudGFsRWRnZTogJ2V4cGVyaW1lbnRhbC1lZGdlJyxcbiAgICBub2RlanM6ICdub2RlanMnXG59O1xuY29uc3QgV0VCX1NPQ0tFVF9NQVhfUkVDT05ORUNUSU9OUyA9IDEyO1xuLyoqXG4gKiBUaGUgbmFtZXMgb2YgdGhlIHdlYnBhY2sgbGF5ZXJzLiBUaGVzZSBsYXllcnMgYXJlIHRoZSBwcmltaXRpdmVzIGZvciB0aGVcbiAqIHdlYnBhY2sgY2h1bmtzLlxuICovIGNvbnN0IFdFQlBBQ0tfTEFZRVJTX05BTUVTID0ge1xuICAgIC8qKlxuICAgKiBUaGUgbGF5ZXIgZm9yIHRoZSBzaGFyZWQgY29kZSBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHNlcnZlciBidW5kbGVzLlxuICAgKi8gc2hhcmVkOiAnc2hhcmVkJyxcbiAgICAvKipcbiAgICogVGhlIGxheWVyIGZvciBzZXJ2ZXItb25seSBydW50aW1lIGFuZCBwaWNraW5nIHVwIGByZWFjdC1zZXJ2ZXJgIGV4cG9ydCBjb25kaXRpb25zLlxuICAgKiBJbmNsdWRpbmcgYXBwIHJvdXRlciBSU0MgcGFnZXMgYW5kIGFwcCByb3V0ZXIgY3VzdG9tIHJvdXRlcyBhbmQgbWV0YWRhdGEgcm91dGVzLlxuICAgKi8gcmVhY3RTZXJ2ZXJDb21wb25lbnRzOiAncnNjJyxcbiAgICAvKipcbiAgICogU2VydmVyIFNpZGUgUmVuZGVyaW5nIGxheWVyIGZvciBhcHAgKHNzcikuXG4gICAqLyBzZXJ2ZXJTaWRlUmVuZGVyaW5nOiAnc3NyJyxcbiAgICAvKipcbiAgICogVGhlIGJyb3dzZXIgY2xpZW50IGJ1bmRsZSBsYXllciBmb3IgYWN0aW9ucy5cbiAgICovIGFjdGlvbkJyb3dzZXI6ICdhY3Rpb24tYnJvd3NlcicsXG4gICAgLyoqXG4gICAqIFRoZSBOb2RlLmpzIGJ1bmRsZSBsYXllciBmb3IgdGhlIEFQSSByb3V0ZXMuXG4gICAqLyBhcGlOb2RlOiAnYXBpLW5vZGUnLFxuICAgIC8qKlxuICAgKiBUaGUgRWRnZSBMaXRlIGJ1bmRsZSBsYXllciBmb3IgdGhlIEFQSSByb3V0ZXMuXG4gICAqLyBhcGlFZGdlOiAnYXBpLWVkZ2UnLFxuICAgIC8qKlxuICAgKiBUaGUgbGF5ZXIgZm9yIHRoZSBtaWRkbGV3YXJlIGNvZGUuXG4gICAqLyBtaWRkbGV3YXJlOiAnbWlkZGxld2FyZScsXG4gICAgLyoqXG4gICAqIFRoZSBsYXllciBmb3IgdGhlIGluc3RydW1lbnRhdGlvbiBob29rcy5cbiAgICovIGluc3RydW1lbnQ6ICdpbnN0cnVtZW50JyxcbiAgICAvKipcbiAgICogVGhlIGxheWVyIGZvciBhc3NldHMgb24gdGhlIGVkZ2UuXG4gICAqLyBlZGdlQXNzZXQ6ICdlZGdlLWFzc2V0JyxcbiAgICAvKipcbiAgICogVGhlIGJyb3dzZXIgY2xpZW50IGJ1bmRsZSBsYXllciBmb3IgQXBwIGRpcmVjdG9yeS5cbiAgICovIGFwcFBhZ2VzQnJvd3NlcjogJ2FwcC1wYWdlcy1icm93c2VyJyxcbiAgICAvKipcbiAgICogVGhlIGJyb3dzZXIgY2xpZW50IGJ1bmRsZSBsYXllciBmb3IgUGFnZXMgZGlyZWN0b3J5LlxuICAgKi8gcGFnZXNEaXJCcm93c2VyOiAncGFnZXMtZGlyLWJyb3dzZXInLFxuICAgIC8qKlxuICAgKiBUaGUgRWRnZSBMaXRlIGJ1bmRsZSBsYXllciBmb3IgUGFnZXMgZGlyZWN0b3J5LlxuICAgKi8gcGFnZXNEaXJFZGdlOiAncGFnZXMtZGlyLWVkZ2UnLFxuICAgIC8qKlxuICAgKiBUaGUgTm9kZS5qcyBidW5kbGUgbGF5ZXIgZm9yIFBhZ2VzIGRpcmVjdG9yeS5cbiAgICovIHBhZ2VzRGlyTm9kZTogJ3BhZ2VzLWRpci1ub2RlJ1xufTtcbmNvbnN0IFdFQlBBQ0tfTEFZRVJTID0ge1xuICAgIC4uLldFQlBBQ0tfTEFZRVJTX05BTUVTLFxuICAgIEdST1VQOiB7XG4gICAgICAgIGJ1aWx0aW5SZWFjdDogW1xuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMucmVhY3RTZXJ2ZXJDb21wb25lbnRzLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuYWN0aW9uQnJvd3NlclxuICAgICAgICBdLFxuICAgICAgICBzZXJ2ZXJPbmx5OiBbXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5yZWFjdFNlcnZlckNvbXBvbmVudHMsXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5hY3Rpb25Ccm93c2VyLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuaW5zdHJ1bWVudCxcbiAgICAgICAgICAgIFdFQlBBQ0tfTEFZRVJTX05BTUVTLm1pZGRsZXdhcmVcbiAgICAgICAgXSxcbiAgICAgICAgbmV1dHJhbFRhcmdldDogW1xuICAgICAgICAgICAgLy8gcGFnZXMgYXBpXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5hcGlOb2RlLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuYXBpRWRnZVxuICAgICAgICBdLFxuICAgICAgICBjbGllbnRPbmx5OiBbXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5zZXJ2ZXJTaWRlUmVuZGVyaW5nLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuYXBwUGFnZXNCcm93c2VyXG4gICAgICAgIF0sXG4gICAgICAgIGJ1bmRsZWQ6IFtcbiAgICAgICAgICAgIFdFQlBBQ0tfTEFZRVJTX05BTUVTLnJlYWN0U2VydmVyQ29tcG9uZW50cyxcbiAgICAgICAgICAgIFdFQlBBQ0tfTEFZRVJTX05BTUVTLmFjdGlvbkJyb3dzZXIsXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5zZXJ2ZXJTaWRlUmVuZGVyaW5nLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuYXBwUGFnZXNCcm93c2VyLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuc2hhcmVkLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuaW5zdHJ1bWVudCxcbiAgICAgICAgICAgIFdFQlBBQ0tfTEFZRVJTX05BTUVTLm1pZGRsZXdhcmVcbiAgICAgICAgXSxcbiAgICAgICAgYXBwUGFnZXM6IFtcbiAgICAgICAgICAgIC8vIGFwcCByb3V0ZXIgcGFnZXMgYW5kIGxheW91dHNcbiAgICAgICAgICAgIFdFQlBBQ0tfTEFZRVJTX05BTUVTLnJlYWN0U2VydmVyQ29tcG9uZW50cyxcbiAgICAgICAgICAgIFdFQlBBQ0tfTEFZRVJTX05BTUVTLnNlcnZlclNpZGVSZW5kZXJpbmcsXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5hcHBQYWdlc0Jyb3dzZXIsXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5hY3Rpb25Ccm93c2VyXG4gICAgICAgIF1cbiAgICB9XG59O1xuY29uc3QgV0VCUEFDS19SRVNPVVJDRV9RVUVSSUVTID0ge1xuICAgIGVkZ2VTU1JFbnRyeTogJ19fbmV4dF9lZGdlX3Nzcl9lbnRyeV9fJyxcbiAgICBtZXRhZGF0YTogJ19fbmV4dF9tZXRhZGF0YV9fJyxcbiAgICBtZXRhZGF0YVJvdXRlOiAnX19uZXh0X21ldGFkYXRhX3JvdXRlX18nLFxuICAgIG1ldGFkYXRhSW1hZ2VNZXRhOiAnX19uZXh0X21ldGFkYXRhX2ltYWdlX21ldGFfXydcbn07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbnN0YW50cy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/constants.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/lib/detached-promise.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/detached-promise.js ***!
|
||
\********************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * A `Promise.withResolvers` implementation that exposes the `resolve` and\n * `reject` functions on a `Promise`.\n *\n * @see https://tc39.es/proposal-promise-with-resolvers/\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"DetachedPromise\", ({\n enumerable: true,\n get: function() {\n return DetachedPromise;\n }\n}));\nclass DetachedPromise {\n constructor(){\n let resolve;\n let reject;\n // Create the promise and assign the resolvers to the object.\n this.promise = new Promise((res, rej)=>{\n resolve = res;\n reject = rej;\n });\n // We know that resolvers is defined because the Promise constructor runs\n // synchronously.\n this.resolve = resolve;\n this.reject = reject;\n }\n}\n\n//# sourceMappingURL=detached-promise.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9kZXRhY2hlZC1wcm9taXNlLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFpQjtBQUNqQiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixtREFBa0Q7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvbGliL2RldGFjaGVkLXByb21pc2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIGBQcm9taXNlLndpdGhSZXNvbHZlcnNgIGltcGxlbWVudGF0aW9uIHRoYXQgZXhwb3NlcyB0aGUgYHJlc29sdmVgIGFuZFxuICogYHJlamVjdGAgZnVuY3Rpb25zIG9uIGEgYFByb21pc2VgLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXByb21pc2Utd2l0aC1yZXNvbHZlcnMvXG4gKi8gXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEZXRhY2hlZFByb21pc2VcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIERldGFjaGVkUHJvbWlzZTtcbiAgICB9XG59KTtcbmNsYXNzIERldGFjaGVkUHJvbWlzZSB7XG4gICAgY29uc3RydWN0b3IoKXtcbiAgICAgICAgbGV0IHJlc29sdmU7XG4gICAgICAgIGxldCByZWplY3Q7XG4gICAgICAgIC8vIENyZWF0ZSB0aGUgcHJvbWlzZSBhbmQgYXNzaWduIHRoZSByZXNvbHZlcnMgdG8gdGhlIG9iamVjdC5cbiAgICAgICAgdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2UoKHJlcywgcmVqKT0+e1xuICAgICAgICAgICAgcmVzb2x2ZSA9IHJlcztcbiAgICAgICAgICAgIHJlamVjdCA9IHJlajtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIFdlIGtub3cgdGhhdCByZXNvbHZlcnMgaXMgZGVmaW5lZCBiZWNhdXNlIHRoZSBQcm9taXNlIGNvbnN0cnVjdG9yIHJ1bnNcbiAgICAgICAgLy8gc3luY2hyb25vdXNseS5cbiAgICAgICAgdGhpcy5yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICAgICAgdGhpcy5yZWplY3QgPSByZWplY3Q7XG4gICAgfVxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kZXRhY2hlZC1wcm9taXNlLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/detached-promise.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/lib/error-telemetry-utils.js":
|
||
/*!*************************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/error-telemetry-utils.js ***!
|
||
\*************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createDigestWithErrorCode: function() {\n return createDigestWithErrorCode;\n },\n extractNextErrorCode: function() {\n return extractNextErrorCode;\n }\n});\nconst ERROR_CODE_DELIMITER = '@';\nconst createDigestWithErrorCode = (thrownValue, originalDigest)=>{\n if (typeof thrownValue === 'object' && thrownValue !== null && '__NEXT_ERROR_CODE' in thrownValue) {\n return `${originalDigest}${ERROR_CODE_DELIMITER}${thrownValue.__NEXT_ERROR_CODE}`;\n }\n return originalDigest;\n};\nconst extractNextErrorCode = (error)=>{\n if (typeof error === 'object' && error !== null && '__NEXT_ERROR_CODE' in error && typeof error.__NEXT_ERROR_CODE === 'string') {\n return error.__NEXT_ERROR_CODE;\n }\n if (typeof error === 'object' && error !== null && 'digest' in error && typeof error.digest === 'string') {\n const segments = error.digest.split(ERROR_CODE_DELIMITER);\n const errorCode = segments.find((segment)=>segment.startsWith('E'));\n return errorCode;\n }\n return undefined;\n};\n\n//# sourceMappingURL=error-telemetry-utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9lcnJvci10ZWxlbWV0cnktdXRpbHMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBR0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSw4QkFBOEI7QUFDeEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvbGliL2Vycm9yLXRlbGVtZXRyeS11dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGNyZWF0ZURpZ2VzdFdpdGhFcnJvckNvZGU6IG51bGwsXG4gICAgZXh0cmFjdE5leHRFcnJvckNvZGU6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgY3JlYXRlRGlnZXN0V2l0aEVycm9yQ29kZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVEaWdlc3RXaXRoRXJyb3JDb2RlO1xuICAgIH0sXG4gICAgZXh0cmFjdE5leHRFcnJvckNvZGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZXh0cmFjdE5leHRFcnJvckNvZGU7XG4gICAgfVxufSk7XG5jb25zdCBFUlJPUl9DT0RFX0RFTElNSVRFUiA9ICdAJztcbmNvbnN0IGNyZWF0ZURpZ2VzdFdpdGhFcnJvckNvZGUgPSAodGhyb3duVmFsdWUsIG9yaWdpbmFsRGlnZXN0KT0+e1xuICAgIGlmICh0eXBlb2YgdGhyb3duVmFsdWUgPT09ICdvYmplY3QnICYmIHRocm93blZhbHVlICE9PSBudWxsICYmICdfX05FWFRfRVJST1JfQ09ERScgaW4gdGhyb3duVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGAke29yaWdpbmFsRGlnZXN0fSR7RVJST1JfQ09ERV9ERUxJTUlURVJ9JHt0aHJvd25WYWx1ZS5fX05FWFRfRVJST1JfQ09ERX1gO1xuICAgIH1cbiAgICByZXR1cm4gb3JpZ2luYWxEaWdlc3Q7XG59O1xuY29uc3QgZXh0cmFjdE5leHRFcnJvckNvZGUgPSAoZXJyb3IpPT57XG4gICAgaWYgKHR5cGVvZiBlcnJvciA9PT0gJ29iamVjdCcgJiYgZXJyb3IgIT09IG51bGwgJiYgJ19fTkVYVF9FUlJPUl9DT0RFJyBpbiBlcnJvciAmJiB0eXBlb2YgZXJyb3IuX19ORVhUX0VSUk9SX0NPREUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBlcnJvci5fX05FWFRfRVJST1JfQ09ERTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBlcnJvciA9PT0gJ29iamVjdCcgJiYgZXJyb3IgIT09IG51bGwgJiYgJ2RpZ2VzdCcgaW4gZXJyb3IgJiYgdHlwZW9mIGVycm9yLmRpZ2VzdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3Qgc2VnbWVudHMgPSBlcnJvci5kaWdlc3Quc3BsaXQoRVJST1JfQ09ERV9ERUxJTUlURVIpO1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBzZWdtZW50cy5maW5kKChzZWdtZW50KT0+c2VnbWVudC5zdGFydHNXaXRoKCdFJykpO1xuICAgICAgICByZXR1cm4gZXJyb3JDb2RlO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXJyb3ItdGVsZW1ldHJ5LXV0aWxzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/error-telemetry-utils.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/lib/fallback.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/fallback.js ***!
|
||
\************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * Describes the different fallback modes that a given page can have.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n FallbackMode: function() {\n return FallbackMode;\n },\n fallbackModeToFallbackField: function() {\n return fallbackModeToFallbackField;\n },\n parseFallbackField: function() {\n return parseFallbackField;\n },\n parseStaticPathsResult: function() {\n return parseStaticPathsResult;\n }\n});\nvar FallbackMode = /*#__PURE__*/ function(FallbackMode) {\n /**\n * A BLOCKING_STATIC_RENDER fallback will block the request until the page is\n * generated. No fallback page will be rendered, and users will have to wait\n * to render the page.\n */ FallbackMode[\"BLOCKING_STATIC_RENDER\"] = \"BLOCKING_STATIC_RENDER\";\n /**\n * When set to PRERENDER, a fallback page will be sent to users in place of\n * forcing them to wait for the page to be generated. This allows the user to\n * see a rendered page earlier.\n */ FallbackMode[\"PRERENDER\"] = \"PRERENDER\";\n /**\n * When set to NOT_FOUND, pages that are not already prerendered will result\n * in a not found response.\n */ FallbackMode[\"NOT_FOUND\"] = \"NOT_FOUND\";\n return FallbackMode;\n}({});\nfunction parseFallbackField(fallbackField) {\n if (typeof fallbackField === 'string') {\n return \"PRERENDER\";\n } else if (fallbackField === null) {\n return \"BLOCKING_STATIC_RENDER\";\n } else if (fallbackField === false) {\n return \"NOT_FOUND\";\n } else if (fallbackField === undefined) {\n return undefined;\n } else {\n throw Object.defineProperty(new Error(`Invalid fallback option: ${fallbackField}. Fallback option must be a string, null, undefined, or false.`), \"__NEXT_ERROR_CODE\", {\n value: \"E285\",\n enumerable: false,\n configurable: true\n });\n }\n}\nfunction fallbackModeToFallbackField(fallback, page) {\n switch(fallback){\n case \"BLOCKING_STATIC_RENDER\":\n return null;\n case \"NOT_FOUND\":\n return false;\n case \"PRERENDER\":\n if (!page) {\n throw Object.defineProperty(new Error(`Invariant: expected a page to be provided when fallback mode is \"${fallback}\"`), \"__NEXT_ERROR_CODE\", {\n value: \"E422\",\n enumerable: false,\n configurable: true\n });\n }\n return page;\n default:\n throw Object.defineProperty(new Error(`Invalid fallback mode: ${fallback}`), \"__NEXT_ERROR_CODE\", {\n value: \"E254\",\n enumerable: false,\n configurable: true\n });\n }\n}\nfunction parseStaticPathsResult(result) {\n if (result === true) {\n return \"PRERENDER\";\n } else if (result === 'blocking') {\n return \"BLOCKING_STATIC_RENDER\";\n } else {\n return \"NOT_FOUND\";\n }\n}\n\n//# sourceMappingURL=fallback.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9mYWxsYmFjay5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0EsSUFBaUI7QUFDakIsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQUtMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsR0FBRztBQUNKO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTiwwRUFBMEUsY0FBYztBQUN4RjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwSEFBMEgsU0FBUztBQUNuSTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0EsNEVBQTRFLFNBQVM7QUFDckY7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9saWIvZmFsbGJhY2suanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEZXNjcmliZXMgdGhlIGRpZmZlcmVudCBmYWxsYmFjayBtb2RlcyB0aGF0IGEgZ2l2ZW4gcGFnZSBjYW4gaGF2ZS5cbiAqLyBcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIEZhbGxiYWNrTW9kZTogbnVsbCxcbiAgICBmYWxsYmFja01vZGVUb0ZhbGxiYWNrRmllbGQ6IG51bGwsXG4gICAgcGFyc2VGYWxsYmFja0ZpZWxkOiBudWxsLFxuICAgIHBhcnNlU3RhdGljUGF0aHNSZXN1bHQ6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgRmFsbGJhY2tNb2RlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEZhbGxiYWNrTW9kZTtcbiAgICB9LFxuICAgIGZhbGxiYWNrTW9kZVRvRmFsbGJhY2tGaWVsZDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBmYWxsYmFja01vZGVUb0ZhbGxiYWNrRmllbGQ7XG4gICAgfSxcbiAgICBwYXJzZUZhbGxiYWNrRmllbGQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcGFyc2VGYWxsYmFja0ZpZWxkO1xuICAgIH0sXG4gICAgcGFyc2VTdGF0aWNQYXRoc1Jlc3VsdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBwYXJzZVN0YXRpY1BhdGhzUmVzdWx0O1xuICAgIH1cbn0pO1xudmFyIEZhbGxiYWNrTW9kZSA9IC8qI19fUFVSRV9fKi8gZnVuY3Rpb24oRmFsbGJhY2tNb2RlKSB7XG4gICAgLyoqXG4gICAqIEEgQkxPQ0tJTkdfU1RBVElDX1JFTkRFUiBmYWxsYmFjayB3aWxsIGJsb2NrIHRoZSByZXF1ZXN0IHVudGlsIHRoZSBwYWdlIGlzXG4gICAqIGdlbmVyYXRlZC4gTm8gZmFsbGJhY2sgcGFnZSB3aWxsIGJlIHJlbmRlcmVkLCBhbmQgdXNlcnMgd2lsbCBoYXZlIHRvIHdhaXRcbiAgICogdG8gcmVuZGVyIHRoZSBwYWdlLlxuICAgKi8gRmFsbGJhY2tNb2RlW1wiQkxPQ0tJTkdfU1RBVElDX1JFTkRFUlwiXSA9IFwiQkxPQ0tJTkdfU1RBVElDX1JFTkRFUlwiO1xuICAgIC8qKlxuICAgKiBXaGVuIHNldCB0byBQUkVSRU5ERVIsIGEgZmFsbGJhY2sgcGFnZSB3aWxsIGJlIHNlbnQgdG8gdXNlcnMgaW4gcGxhY2Ugb2ZcbiAgICogZm9yY2luZyB0aGVtIHRvIHdhaXQgZm9yIHRoZSBwYWdlIHRvIGJlIGdlbmVyYXRlZC4gVGhpcyBhbGxvd3MgdGhlIHVzZXIgdG9cbiAgICogc2VlIGEgcmVuZGVyZWQgcGFnZSBlYXJsaWVyLlxuICAgKi8gRmFsbGJhY2tNb2RlW1wiUFJFUkVOREVSXCJdID0gXCJQUkVSRU5ERVJcIjtcbiAgICAvKipcbiAgICogV2hlbiBzZXQgdG8gTk9UX0ZPVU5ELCBwYWdlcyB0aGF0IGFyZSBub3QgYWxyZWFkeSBwcmVyZW5kZXJlZCB3aWxsIHJlc3VsdFxuICAgKiBpbiBhIG5vdCBmb3VuZCByZXNwb25zZS5cbiAgICovIEZhbGxiYWNrTW9kZVtcIk5PVF9GT1VORFwiXSA9IFwiTk9UX0ZPVU5EXCI7XG4gICAgcmV0dXJuIEZhbGxiYWNrTW9kZTtcbn0oe30pO1xuZnVuY3Rpb24gcGFyc2VGYWxsYmFja0ZpZWxkKGZhbGxiYWNrRmllbGQpIHtcbiAgICBpZiAodHlwZW9mIGZhbGxiYWNrRmllbGQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBcIlBSRVJFTkRFUlwiO1xuICAgIH0gZWxzZSBpZiAoZmFsbGJhY2tGaWVsZCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gXCJCTE9DS0lOR19TVEFUSUNfUkVOREVSXCI7XG4gICAgfSBlbHNlIGlmIChmYWxsYmFja0ZpZWxkID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gXCJOT1RfRk9VTkRcIjtcbiAgICB9IGVsc2UgaWYgKGZhbGxiYWNrRmllbGQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoYEludmFsaWQgZmFsbGJhY2sgb3B0aW9uOiAke2ZhbGxiYWNrRmllbGR9LiBGYWxsYmFjayBvcHRpb24gbXVzdCBiZSBhIHN0cmluZywgbnVsbCwgdW5kZWZpbmVkLCBvciBmYWxzZS5gKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICB2YWx1ZTogXCJFMjg1XCIsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG59XG5mdW5jdGlvbiBmYWxsYmFja01vZGVUb0ZhbGxiYWNrRmllbGQoZmFsbGJhY2ssIHBhZ2UpIHtcbiAgICBzd2l0Y2goZmFsbGJhY2spe1xuICAgICAgICBjYXNlIFwiQkxPQ0tJTkdfU1RBVElDX1JFTkRFUlwiOlxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGNhc2UgXCJOT1RfRk9VTkRcIjpcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgY2FzZSBcIlBSRVJFTkRFUlwiOlxuICAgICAgICAgICAgaWYgKCFwYWdlKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcihgSW52YXJpYW50OiBleHBlY3RlZCBhIHBhZ2UgdG8gYmUgcHJvdmlkZWQgd2hlbiBmYWxsYmFjayBtb2RlIGlzIFwiJHtmYWxsYmFja31cImApLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTQyMlwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGFnZTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoYEludmFsaWQgZmFsbGJhY2sgbW9kZTogJHtmYWxsYmFja31gKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiRTI1NFwiLFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuZnVuY3Rpb24gcGFyc2VTdGF0aWNQYXRoc1Jlc3VsdChyZXN1bHQpIHtcbiAgICBpZiAocmVzdWx0ID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiBcIlBSRVJFTkRFUlwiO1xuICAgIH0gZWxzZSBpZiAocmVzdWx0ID09PSAnYmxvY2tpbmcnKSB7XG4gICAgICAgIHJldHVybiBcIkJMT0NLSU5HX1NUQVRJQ19SRU5ERVJcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gXCJOT1RfRk9VTkRcIjtcbiAgICB9XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZhbGxiYWNrLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/fallback.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/lib/format-server-error.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/format-server-error.js ***!
|
||
\***********************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n formatServerError: function() {\n return formatServerError;\n },\n getStackWithoutErrorMessage: function() {\n return getStackWithoutErrorMessage;\n }\n});\nconst invalidServerComponentReactHooks = [\n 'useDeferredValue',\n 'useEffect',\n 'useEffectEvent',\n 'useImperativeHandle',\n 'useInsertionEffect',\n 'useLayoutEffect',\n 'useReducer',\n 'useRef',\n 'useState',\n 'useSyncExternalStore',\n 'useTransition',\n 'experimental_useOptimistic',\n 'useOptimistic'\n];\nfunction setMessage(error, message) {\n error.message = message;\n if (error.stack) {\n const lines = error.stack.split('\\n');\n lines[0] = message;\n error.stack = lines.join('\\n');\n }\n}\nfunction getStackWithoutErrorMessage(error) {\n const stack = error.stack;\n if (!stack) return '';\n return stack.replace(/^[^\\n]*\\n/, '');\n}\nfunction formatServerError(error) {\n if (typeof (error == null ? void 0 : error.message) !== 'string') return;\n if (error.message.includes('Class extends value undefined is not a constructor or null')) {\n const addedMessage = 'This might be caused by a React Class Component being rendered in a Server Component, React Class Components only works in Client Components. Read more: https://nextjs.org/docs/messages/class-component-in-server-component';\n // If this error instance already has the message, don't add it again\n if (error.message.includes(addedMessage)) return;\n setMessage(error, `${error.message}\n\n${addedMessage}`);\n return;\n }\n if (error.message.includes('createContext is not a function')) {\n setMessage(error, 'createContext only works in Client Components. Add the \"use client\" directive at the top of the file to use it. Read more: https://nextjs.org/docs/messages/context-in-server-component');\n return;\n }\n for (const clientHook of invalidServerComponentReactHooks){\n const regex = new RegExp(`\\\\b${clientHook}\\\\b.*is not a function`);\n if (regex.test(error.message)) {\n setMessage(error, `${clientHook} only works in Client Components. Add the \"use client\" directive at the top of the file to use it. Read more: https://nextjs.org/docs/messages/react-client-hook-in-server-component`);\n return;\n }\n }\n} //# sourceMappingURL=format-server-error.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9mb3JtYXQtc2VydmVyLWVycm9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQXlDZ0JBLGlCQUFpQjtlQUFqQkE7O0lBTkFDLDJCQUEyQjtlQUEzQkE7OztBQW5DaEIsTUFBTUMsbUNBQW1DO0lBQ3ZDO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0Q7QUFFRCxTQUFTQyxXQUFXQyxLQUFZLEVBQUVDLE9BQWU7SUFDL0NELE1BQU1DLE9BQU8sR0FBR0E7SUFDaEIsSUFBSUQsTUFBTUUsS0FBSyxFQUFFO1FBQ2YsTUFBTUMsUUFBUUgsTUFBTUUsS0FBSyxDQUFDRSxLQUFLLENBQUM7UUFDaENELEtBQUssQ0FBQyxFQUFFLEdBQUdGO1FBQ1hELE1BQU1FLEtBQUssR0FBR0MsTUFBTUUsSUFBSSxDQUFDO0lBQzNCO0FBQ0Y7QUFZTyxTQUFTUiw0QkFBNEJHLEtBQVk7SUFDdEQsTUFBTUUsUUFBUUYsTUFBTUUsS0FBSztJQUN6QixJQUFJLENBQUNBLE9BQU8sT0FBTztJQUNuQixPQUFPQSxNQUFNSSxPQUFPLENBQUMsYUFBYTtBQUNwQztBQUVPLFNBQVNWLGtCQUFrQkksS0FBWTtJQUM1QyxJQUFJLFFBQU9BLFNBQUFBLE9BQUFBLEtBQUFBLElBQUFBLE1BQU9DLE9BQUFBLE1BQVksVUFBVTtJQUV4QyxJQUNFRCxNQUFNQyxPQUFPLENBQUNNLFFBQVEsQ0FDcEIsK0RBRUY7UUFDQSxNQUFNQyxlQUNKO1FBRUYscUVBQXFFO1FBQ3JFLElBQUlSLE1BQU1DLE9BQU8sQ0FBQ00sUUFBUSxDQUFDQyxlQUFlO1FBRTFDVCxXQUNFQyxPQUNBLEdBQUdBLE1BQU1DLE9BQU8sQ0FBQzs7QUFFdkIsRUFBRU8sY0FBYztRQUVaO0lBQ0Y7SUFFQSxJQUFJUixNQUFNQyxPQUFPLENBQUNNLFFBQVEsQ0FBQyxvQ0FBb0M7UUFDN0RSLFdBQ0VDLE9BQ0E7UUFFRjtJQUNGO0lBRUEsS0FBSyxNQUFNUyxjQUFjWCxpQ0FBa0M7UUFDekQsTUFBTVksUUFBUSxJQUFJQyxPQUFPLENBQUMsR0FBRyxFQUFFRixXQUFXLHNCQUFzQixDQUFDO1FBQ2pFLElBQUlDLE1BQU1FLElBQUksQ0FBQ1osTUFBTUMsT0FBTyxHQUFHO1lBQzdCRixXQUNFQyxPQUNBLEdBQUdTLFdBQVcsb0xBQW9MLENBQUM7WUFFck07UUFDRjtJQUNGO0FBQ0YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL3NyYy9saWIvZm9ybWF0LXNlcnZlci1lcnJvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBpbnZhbGlkU2VydmVyQ29tcG9uZW50UmVhY3RIb29rcyA9IFtcbiAgJ3VzZURlZmVycmVkVmFsdWUnLFxuICAndXNlRWZmZWN0JyxcbiAgJ3VzZUVmZmVjdEV2ZW50JyxcbiAgJ3VzZUltcGVyYXRpdmVIYW5kbGUnLFxuICAndXNlSW5zZXJ0aW9uRWZmZWN0JyxcbiAgJ3VzZUxheW91dEVmZmVjdCcsXG4gICd1c2VSZWR1Y2VyJyxcbiAgJ3VzZVJlZicsXG4gICd1c2VTdGF0ZScsXG4gICd1c2VTeW5jRXh0ZXJuYWxTdG9yZScsXG4gICd1c2VUcmFuc2l0aW9uJyxcbiAgJ2V4cGVyaW1lbnRhbF91c2VPcHRpbWlzdGljJyxcbiAgJ3VzZU9wdGltaXN0aWMnLFxuXVxuXG5mdW5jdGlvbiBzZXRNZXNzYWdlKGVycm9yOiBFcnJvciwgbWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gIGVycm9yLm1lc3NhZ2UgPSBtZXNzYWdlXG4gIGlmIChlcnJvci5zdGFjaykge1xuICAgIGNvbnN0IGxpbmVzID0gZXJyb3Iuc3RhY2suc3BsaXQoJ1xcbicpXG4gICAgbGluZXNbMF0gPSBtZXNzYWdlXG4gICAgZXJyb3Iuc3RhY2sgPSBsaW5lcy5qb2luKCdcXG4nKVxuICB9XG59XG5cbi8qKlxuICogSW5wdXQ6XG4gKiBFcnJvcjogU29tZXRoaW5nIHdlbnQgd3JvbmdcbiAgICBhdCBmdW5jTmFtZSAoL3BhdGgvdG8vZmlsZS5qczoxMDo1KVxuICAgIGF0IGFub3RoZXJGdW5jICgvcGF0aC90by9maWxlLmpzOjE1OjEwKVxuIFxuICogT3V0cHV0OlxuICAgIGF0IGZ1bmNOYW1lICgvcGF0aC90by9maWxlLmpzOjEwOjUpXG4gICAgYXQgYW5vdGhlckZ1bmMgKC9wYXRoL3RvL2ZpbGUuanM6MTU6MTApIFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhY2tXaXRob3V0RXJyb3JNZXNzYWdlKGVycm9yOiBFcnJvcik6IHN0cmluZyB7XG4gIGNvbnN0IHN0YWNrID0gZXJyb3Iuc3RhY2tcbiAgaWYgKCFzdGFjaykgcmV0dXJuICcnXG4gIHJldHVybiBzdGFjay5yZXBsYWNlKC9eW15cXG5dKlxcbi8sICcnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0U2VydmVyRXJyb3IoZXJyb3I6IEVycm9yKTogdm9pZCB7XG4gIGlmICh0eXBlb2YgZXJyb3I/Lm1lc3NhZ2UgIT09ICdzdHJpbmcnKSByZXR1cm5cblxuICBpZiAoXG4gICAgZXJyb3IubWVzc2FnZS5pbmNsdWRlcyhcbiAgICAgICdDbGFzcyBleHRlbmRzIHZhbHVlIHVuZGVmaW5lZCBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsJ1xuICAgIClcbiAgKSB7XG4gICAgY29uc3QgYWRkZWRNZXNzYWdlID1cbiAgICAgICdUaGlzIG1pZ2h0IGJlIGNhdXNlZCBieSBhIFJlYWN0IENsYXNzIENvbXBvbmVudCBiZWluZyByZW5kZXJlZCBpbiBhIFNlcnZlciBDb21wb25lbnQsIFJlYWN0IENsYXNzIENvbXBvbmVudHMgb25seSB3b3JrcyBpbiBDbGllbnQgQ29tcG9uZW50cy4gUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9jbGFzcy1jb21wb25lbnQtaW4tc2VydmVyLWNvbXBvbmVudCdcblxuICAgIC8vIElmIHRoaXMgZXJyb3IgaW5zdGFuY2UgYWxyZWFkeSBoYXMgdGhlIG1lc3NhZ2UsIGRvbid0IGFkZCBpdCBhZ2FpblxuICAgIGlmIChlcnJvci5tZXNzYWdlLmluY2x1ZGVzKGFkZGVkTWVzc2FnZSkpIHJldHVyblxuXG4gICAgc2V0TWVzc2FnZShcbiAgICAgIGVycm9yLFxuICAgICAgYCR7ZXJyb3IubWVzc2FnZX1cblxuJHthZGRlZE1lc3NhZ2V9YFxuICAgIClcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmIChlcnJvci5tZXNzYWdlLmluY2x1ZGVzKCdjcmVhdGVDb250ZXh0IGlzIG5vdCBhIGZ1bmN0aW9uJykpIHtcbiAgICBzZXRNZXNzYWdlKFxuICAgICAgZXJyb3IsXG4gICAgICAnY3JlYXRlQ29udGV4dCBvbmx5IHdvcmtzIGluIENsaWVudCBDb21wb25lbnRzLiBBZGQgdGhlIFwidXNlIGNsaWVudFwiIGRpcmVjdGl2ZSBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlIHRvIHVzZSBpdC4gUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9jb250ZXh0LWluLXNlcnZlci1jb21wb25lbnQnXG4gICAgKVxuICAgIHJldHVyblxuICB9XG5cbiAgZm9yIChjb25zdCBjbGllbnRIb29rIG9mIGludmFsaWRTZXJ2ZXJDb21wb25lbnRSZWFjdEhvb2tzKSB7XG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBcXFxcYiR7Y2xpZW50SG9va31cXFxcYi4qaXMgbm90IGEgZnVuY3Rpb25gKVxuICAgIGlmIChyZWdleC50ZXN0KGVycm9yLm1lc3NhZ2UpKSB7XG4gICAgICBzZXRNZXNzYWdlKFxuICAgICAgICBlcnJvcixcbiAgICAgICAgYCR7Y2xpZW50SG9va30gb25seSB3b3JrcyBpbiBDbGllbnQgQ29tcG9uZW50cy4gQWRkIHRoZSBcInVzZSBjbGllbnRcIiBkaXJlY3RpdmUgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZSB0byB1c2UgaXQuIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvcmVhY3QtY2xpZW50LWhvb2staW4tc2VydmVyLWNvbXBvbmVudGBcbiAgICAgIClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbImZvcm1hdFNlcnZlckVycm9yIiwiZ2V0U3RhY2tXaXRob3V0RXJyb3JNZXNzYWdlIiwiaW52YWxpZFNlcnZlckNvbXBvbmVudFJlYWN0SG9va3MiLCJzZXRNZXNzYWdlIiwiZXJyb3IiLCJtZXNzYWdlIiwic3RhY2siLCJsaW5lcyIsInNwbGl0Iiwiam9pbiIsInJlcGxhY2UiLCJpbmNsdWRlcyIsImFkZGVkTWVzc2FnZSIsImNsaWVudEhvb2siLCJyZWdleCIsIlJlZ0V4cCIsInRlc3QiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/format-server-error.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/lib/framework/boundary-components.js":
|
||
/*!*********************************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/framework/boundary-components.js ***!
|
||
\*********************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
eval("// This file is generated by the Webpack next-flight-loader.\nconst { createProxy } = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ \"(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js\")\n\nmodule.exports = createProxy(\"/Users/pouyanmb/Desktop/git-projects/digikala-tailwind/node_modules/next/dist/lib/framework/boundary-components.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9mcmFtZXdvcmsvYm91bmRhcnktY29tcG9uZW50cy5qcyIsIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZXMiOlsiX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvbGliL2ZyYW1ld29yay9ib3VuZGFyeS1jb21wb25lbnRzLmpzL19fbmV4dGpzLWludGVybmFsLXByb3h5LmNqcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IHRoZSBXZWJwYWNrIG5leHQtZmxpZ2h0LWxvYWRlci5cbmNvbnN0IHsgY3JlYXRlUHJveHkgfSA9IHJlcXVpcmUoXCJuZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL25leHQtZmxpZ2h0LWxvYWRlci9tb2R1bGUtcHJveHlcIilcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVQcm94eShcIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9mcmFtZXdvcmsvYm91bmRhcnktY29tcG9uZW50cy5qc1wiKVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/framework/boundary-components.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/lib/framework/boundary-constants.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/framework/boundary-constants.js ***!
|
||
\********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n METADATA_BOUNDARY_NAME: function() {\n return METADATA_BOUNDARY_NAME;\n },\n OUTLET_BOUNDARY_NAME: function() {\n return OUTLET_BOUNDARY_NAME;\n },\n ROOT_LAYOUT_BOUNDARY_NAME: function() {\n return ROOT_LAYOUT_BOUNDARY_NAME;\n },\n VIEWPORT_BOUNDARY_NAME: function() {\n return VIEWPORT_BOUNDARY_NAME;\n }\n});\nconst METADATA_BOUNDARY_NAME = '__next_metadata_boundary__';\nconst VIEWPORT_BOUNDARY_NAME = '__next_viewport_boundary__';\nconst OUTLET_BOUNDARY_NAME = '__next_outlet_boundary__';\nconst ROOT_LAYOUT_BOUNDARY_NAME = '__next_root_layout_boundary__';\n\n//# sourceMappingURL=boundary-constants.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9mcmFtZXdvcmsvYm91bmRhcnktY29uc3RhbnRzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQUtMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvbGliL2ZyYW1ld29yay9ib3VuZGFyeS1jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBNRVRBREFUQV9CT1VOREFSWV9OQU1FOiBudWxsLFxuICAgIE9VVExFVF9CT1VOREFSWV9OQU1FOiBudWxsLFxuICAgIFJPT1RfTEFZT1VUX0JPVU5EQVJZX05BTUU6IG51bGwsXG4gICAgVklFV1BPUlRfQk9VTkRBUllfTkFNRTogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBNRVRBREFUQV9CT1VOREFSWV9OQU1FOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE1FVEFEQVRBX0JPVU5EQVJZX05BTUU7XG4gICAgfSxcbiAgICBPVVRMRVRfQk9VTkRBUllfTkFNRTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBPVVRMRVRfQk9VTkRBUllfTkFNRTtcbiAgICB9LFxuICAgIFJPT1RfTEFZT1VUX0JPVU5EQVJZX05BTUU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUk9PVF9MQVlPVVRfQk9VTkRBUllfTkFNRTtcbiAgICB9LFxuICAgIFZJRVdQT1JUX0JPVU5EQVJZX05BTUU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gVklFV1BPUlRfQk9VTkRBUllfTkFNRTtcbiAgICB9XG59KTtcbmNvbnN0IE1FVEFEQVRBX0JPVU5EQVJZX05BTUUgPSAnX19uZXh0X21ldGFkYXRhX2JvdW5kYXJ5X18nO1xuY29uc3QgVklFV1BPUlRfQk9VTkRBUllfTkFNRSA9ICdfX25leHRfdmlld3BvcnRfYm91bmRhcnlfXyc7XG5jb25zdCBPVVRMRVRfQk9VTkRBUllfTkFNRSA9ICdfX25leHRfb3V0bGV0X2JvdW5kYXJ5X18nO1xuY29uc3QgUk9PVF9MQVlPVVRfQk9VTkRBUllfTkFNRSA9ICdfX25leHRfcm9vdF9sYXlvdXRfYm91bmRhcnlfXyc7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJvdW5kYXJ5LWNvbnN0YW50cy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/framework/boundary-constants.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/lib/is-error.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/is-error.js ***!
|
||
\************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n /**\n * Checks whether the given value is a NextError.\n * This can be used to print a more detailed error message with properties like `code` & `digest`.\n */ default: function() {\n return isError;\n },\n getProperError: function() {\n return getProperError;\n }\n});\nconst _isplainobject = __webpack_require__(/*! ../shared/lib/is-plain-object */ \"(rsc)/./node_modules/next/dist/shared/lib/is-plain-object.js\");\n/**\n * This is a safe stringify function that handles circular references.\n * We're using a simpler version here to avoid introducing\n * the dependency `safe-stable-stringify` into production bundle.\n *\n * This helper is used both in development and production.\n */ function safeStringifyLite(obj) {\n const seen = new WeakSet();\n return JSON.stringify(obj, (_key, value)=>{\n // If value is an object and already seen, replace with \"[Circular]\"\n if (typeof value === 'object' && value !== null) {\n if (seen.has(value)) {\n return '[Circular]';\n }\n seen.add(value);\n }\n return value;\n });\n}\nfunction isError(err) {\n return typeof err === 'object' && err !== null && 'name' in err && 'message' in err;\n}\nfunction getProperError(err) {\n if (isError(err)) {\n return err;\n }\n if (true) {\n // provide better error for case where `throw undefined`\n // is called in development\n if (typeof err === 'undefined') {\n return Object.defineProperty(new Error('An undefined error was thrown, ' + 'see here for more info: https://nextjs.org/docs/messages/threw-undefined'), \"__NEXT_ERROR_CODE\", {\n value: \"E98\",\n enumerable: false,\n configurable: true\n });\n }\n if (err === null) {\n return Object.defineProperty(new Error('A null error was thrown, ' + 'see here for more info: https://nextjs.org/docs/messages/threw-undefined'), \"__NEXT_ERROR_CODE\", {\n value: \"E336\",\n enumerable: false,\n configurable: true\n });\n }\n }\n return Object.defineProperty(new Error((0, _isplainobject.isPlainObject)(err) ? safeStringifyLite(err) : err + ''), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n}\n\n//# sourceMappingURL=is-error.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9pcy1lcnJvci5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FHTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCx1QkFBdUIsbUJBQU8sQ0FBQyxtR0FBK0I7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxJQUFzQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9saWIvaXMtZXJyb3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBkZWZhdWx0OiBudWxsLFxuICAgIGdldFByb3BlckVycm9yOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIC8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIHZhbHVlIGlzIGEgTmV4dEVycm9yLlxuICogVGhpcyBjYW4gYmUgdXNlZCB0byBwcmludCBhIG1vcmUgZGV0YWlsZWQgZXJyb3IgbWVzc2FnZSB3aXRoIHByb3BlcnRpZXMgbGlrZSBgY29kZWAgJiBgZGlnZXN0YC5cbiAqLyBkZWZhdWx0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGlzRXJyb3I7XG4gICAgfSxcbiAgICBnZXRQcm9wZXJFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRQcm9wZXJFcnJvcjtcbiAgICB9XG59KTtcbmNvbnN0IF9pc3BsYWlub2JqZWN0ID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvaXMtcGxhaW4tb2JqZWN0XCIpO1xuLyoqXG4gKiBUaGlzIGlzIGEgc2FmZSBzdHJpbmdpZnkgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIGNpcmN1bGFyIHJlZmVyZW5jZXMuXG4gKiBXZSdyZSB1c2luZyBhIHNpbXBsZXIgdmVyc2lvbiBoZXJlIHRvIGF2b2lkIGludHJvZHVjaW5nXG4gKiB0aGUgZGVwZW5kZW5jeSBgc2FmZS1zdGFibGUtc3RyaW5naWZ5YCBpbnRvIHByb2R1Y3Rpb24gYnVuZGxlLlxuICpcbiAqIFRoaXMgaGVscGVyIGlzIHVzZWQgYm90aCBpbiBkZXZlbG9wbWVudCBhbmQgcHJvZHVjdGlvbi5cbiAqLyBmdW5jdGlvbiBzYWZlU3RyaW5naWZ5TGl0ZShvYmopIHtcbiAgICBjb25zdCBzZWVuID0gbmV3IFdlYWtTZXQoKTtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqLCAoX2tleSwgdmFsdWUpPT57XG4gICAgICAgIC8vIElmIHZhbHVlIGlzIGFuIG9iamVjdCBhbmQgYWxyZWFkeSBzZWVuLCByZXBsYWNlIHdpdGggXCJbQ2lyY3VsYXJdXCJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChzZWVuLmhhcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tDaXJjdWxhcl0nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2Vlbi5hZGQodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGlzRXJyb3IoZXJyKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBlcnIgPT09ICdvYmplY3QnICYmIGVyciAhPT0gbnVsbCAmJiAnbmFtZScgaW4gZXJyICYmICdtZXNzYWdlJyBpbiBlcnI7XG59XG5mdW5jdGlvbiBnZXRQcm9wZXJFcnJvcihlcnIpIHtcbiAgICBpZiAoaXNFcnJvcihlcnIpKSB7XG4gICAgICAgIHJldHVybiBlcnI7XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAvLyBwcm92aWRlIGJldHRlciBlcnJvciBmb3IgY2FzZSB3aGVyZSBgdGhyb3cgdW5kZWZpbmVkYFxuICAgICAgICAvLyBpcyBjYWxsZWQgaW4gZGV2ZWxvcG1lbnRcbiAgICAgICAgaWYgKHR5cGVvZiBlcnIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcignQW4gdW5kZWZpbmVkIGVycm9yIHdhcyB0aHJvd24sICcgKyAnc2VlIGhlcmUgZm9yIG1vcmUgaW5mbzogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvdGhyZXctdW5kZWZpbmVkJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU5OFwiLFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVyciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoJ0EgbnVsbCBlcnJvciB3YXMgdGhyb3duLCAnICsgJ3NlZSBoZXJlIGZvciBtb3JlIGluZm86IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL3RocmV3LXVuZGVmaW5lZCcpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMzM2XCIsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcigoMCwgX2lzcGxhaW5vYmplY3QuaXNQbGFpbk9iamVjdCkoZXJyKSA/IHNhZmVTdHJpbmdpZnlMaXRlKGVycikgOiBlcnIgKyAnJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICB2YWx1ZTogXCJFMzk0XCIsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtZXJyb3IuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/is-error.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/lib/metadata/constants.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/metadata/constants.js ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n IconKeys: function() {\n return IconKeys;\n },\n ViewportMetaKeys: function() {\n return ViewportMetaKeys;\n }\n});\nconst ViewportMetaKeys = {\n width: 'width',\n height: 'height',\n initialScale: 'initial-scale',\n minimumScale: 'minimum-scale',\n maximumScale: 'maximum-scale',\n viewportFit: 'viewport-fit',\n userScalable: 'user-scalable',\n interactiveWidget: 'interactive-widget'\n};\nconst IconKeys = [\n 'icon',\n 'shortcut',\n 'apple',\n 'other'\n];\n\n//# sourceMappingURL=constants.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9jb25zdGFudHMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBR0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBJY29uS2V5czogbnVsbCxcbiAgICBWaWV3cG9ydE1ldGFLZXlzOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIEljb25LZXlzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEljb25LZXlzO1xuICAgIH0sXG4gICAgVmlld3BvcnRNZXRhS2V5czogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBWaWV3cG9ydE1ldGFLZXlzO1xuICAgIH1cbn0pO1xuY29uc3QgVmlld3BvcnRNZXRhS2V5cyA9IHtcbiAgICB3aWR0aDogJ3dpZHRoJyxcbiAgICBoZWlnaHQ6ICdoZWlnaHQnLFxuICAgIGluaXRpYWxTY2FsZTogJ2luaXRpYWwtc2NhbGUnLFxuICAgIG1pbmltdW1TY2FsZTogJ21pbmltdW0tc2NhbGUnLFxuICAgIG1heGltdW1TY2FsZTogJ21heGltdW0tc2NhbGUnLFxuICAgIHZpZXdwb3J0Rml0OiAndmlld3BvcnQtZml0JyxcbiAgICB1c2VyU2NhbGFibGU6ICd1c2VyLXNjYWxhYmxlJyxcbiAgICBpbnRlcmFjdGl2ZVdpZGdldDogJ2ludGVyYWN0aXZlLXdpZGdldCdcbn07XG5jb25zdCBJY29uS2V5cyA9IFtcbiAgICAnaWNvbicsXG4gICAgJ3Nob3J0Y3V0JyxcbiAgICAnYXBwbGUnLFxuICAgICdvdGhlcidcbl07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbnN0YW50cy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/constants.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/lib/metadata/default-metadata.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/metadata/default-metadata.js ***!
|
||
\*****************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createDefaultMetadata: function() {\n return createDefaultMetadata;\n },\n createDefaultViewport: function() {\n return createDefaultViewport;\n }\n});\nfunction createDefaultViewport() {\n return {\n // name=viewport\n width: 'device-width',\n initialScale: 1,\n // visual metadata\n themeColor: null,\n colorScheme: null\n };\n}\nfunction createDefaultMetadata() {\n return {\n // Deprecated ones\n viewport: null,\n themeColor: null,\n colorScheme: null,\n metadataBase: null,\n // Other values are all null\n title: null,\n description: null,\n applicationName: null,\n authors: null,\n generator: null,\n keywords: null,\n referrer: null,\n creator: null,\n publisher: null,\n robots: null,\n manifest: null,\n alternates: {\n canonical: null,\n languages: null,\n media: null,\n types: null\n },\n icons: null,\n openGraph: null,\n twitter: null,\n verification: {},\n appleWebApp: null,\n formatDetection: null,\n itunes: null,\n facebook: null,\n pinterest: null,\n abstract: null,\n appLinks: null,\n archives: null,\n assets: null,\n bookmarks: null,\n category: null,\n classification: null,\n pagination: {\n previous: null,\n next: null\n },\n other: {}\n };\n}\n\n//# sourceMappingURL=default-metadata.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9kZWZhdWx0LW1ldGFkYXRhLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQUdMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9saWIvbWV0YWRhdGEvZGVmYXVsdC1tZXRhZGF0YS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGNyZWF0ZURlZmF1bHRNZXRhZGF0YTogbnVsbCxcbiAgICBjcmVhdGVEZWZhdWx0Vmlld3BvcnQ6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgY3JlYXRlRGVmYXVsdE1ldGFkYXRhOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZURlZmF1bHRNZXRhZGF0YTtcbiAgICB9LFxuICAgIGNyZWF0ZURlZmF1bHRWaWV3cG9ydDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVEZWZhdWx0Vmlld3BvcnQ7XG4gICAgfVxufSk7XG5mdW5jdGlvbiBjcmVhdGVEZWZhdWx0Vmlld3BvcnQoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgLy8gbmFtZT12aWV3cG9ydFxuICAgICAgICB3aWR0aDogJ2RldmljZS13aWR0aCcsXG4gICAgICAgIGluaXRpYWxTY2FsZTogMSxcbiAgICAgICAgLy8gdmlzdWFsIG1ldGFkYXRhXG4gICAgICAgIHRoZW1lQ29sb3I6IG51bGwsXG4gICAgICAgIGNvbG9yU2NoZW1lOiBudWxsXG4gICAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRNZXRhZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICAvLyBEZXByZWNhdGVkIG9uZXNcbiAgICAgICAgdmlld3BvcnQ6IG51bGwsXG4gICAgICAgIHRoZW1lQ29sb3I6IG51bGwsXG4gICAgICAgIGNvbG9yU2NoZW1lOiBudWxsLFxuICAgICAgICBtZXRhZGF0YUJhc2U6IG51bGwsXG4gICAgICAgIC8vIE90aGVyIHZhbHVlcyBhcmUgYWxsIG51bGxcbiAgICAgICAgdGl0bGU6IG51bGwsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBudWxsLFxuICAgICAgICBhcHBsaWNhdGlvbk5hbWU6IG51bGwsXG4gICAgICAgIGF1dGhvcnM6IG51bGwsXG4gICAgICAgIGdlbmVyYXRvcjogbnVsbCxcbiAgICAgICAga2V5d29yZHM6IG51bGwsXG4gICAgICAgIHJlZmVycmVyOiBudWxsLFxuICAgICAgICBjcmVhdG9yOiBudWxsLFxuICAgICAgICBwdWJsaXNoZXI6IG51bGwsXG4gICAgICAgIHJvYm90czogbnVsbCxcbiAgICAgICAgbWFuaWZlc3Q6IG51bGwsXG4gICAgICAgIGFsdGVybmF0ZXM6IHtcbiAgICAgICAgICAgIGNhbm9uaWNhbDogbnVsbCxcbiAgICAgICAgICAgIGxhbmd1YWdlczogbnVsbCxcbiAgICAgICAgICAgIG1lZGlhOiBudWxsLFxuICAgICAgICAgICAgdHlwZXM6IG51bGxcbiAgICAgICAgfSxcbiAgICAgICAgaWNvbnM6IG51bGwsXG4gICAgICAgIG9wZW5HcmFwaDogbnVsbCxcbiAgICAgICAgdHdpdHRlcjogbnVsbCxcbiAgICAgICAgdmVyaWZpY2F0aW9uOiB7fSxcbiAgICAgICAgYXBwbGVXZWJBcHA6IG51bGwsXG4gICAgICAgIGZvcm1hdERldGVjdGlvbjogbnVsbCxcbiAgICAgICAgaXR1bmVzOiBudWxsLFxuICAgICAgICBmYWNlYm9vazogbnVsbCxcbiAgICAgICAgcGludGVyZXN0OiBudWxsLFxuICAgICAgICBhYnN0cmFjdDogbnVsbCxcbiAgICAgICAgYXBwTGlua3M6IG51bGwsXG4gICAgICAgIGFyY2hpdmVzOiBudWxsLFxuICAgICAgICBhc3NldHM6IG51bGwsXG4gICAgICAgIGJvb2ttYXJrczogbnVsbCxcbiAgICAgICAgY2F0ZWdvcnk6IG51bGwsXG4gICAgICAgIGNsYXNzaWZpY2F0aW9uOiBudWxsLFxuICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICBwcmV2aW91czogbnVsbCxcbiAgICAgICAgICAgIG5leHQ6IG51bGxcbiAgICAgICAgfSxcbiAgICAgICAgb3RoZXI6IHt9XG4gICAgfTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGVmYXVsdC1tZXRhZGF0YS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/default-metadata.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":
|
||
/*!*******************************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/metadata/generate/icon-mark.js ***!
|
||
\*******************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
eval("// This file is generated by the Webpack next-flight-loader.\nconst { createProxy } = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ \"(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js\")\n\nmodule.exports = createProxy(\"/Users/pouyanmb/Desktop/git-projects/digikala-tailwind/node_modules/next/dist/lib/metadata/generate/icon-mark.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9nZW5lcmF0ZS9pY29uLW1hcmsuanMiLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VzIjpbIl9OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9nZW5lcmF0ZS9pY29uLW1hcmsuanMvX19uZXh0anMtaW50ZXJuYWwtcHJveHkuY2pzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgdGhlIFdlYnBhY2sgbmV4dC1mbGlnaHQtbG9hZGVyLlxuY29uc3QgeyBjcmVhdGVQcm94eSB9ID0gcmVxdWlyZShcIm5leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvbmV4dC1mbGlnaHQtbG9hZGVyL21vZHVsZS1wcm94eVwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVByb3h5KFwiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvbGliL21ldGFkYXRhL2dlbmVyYXRlL2ljb24tbWFyay5qc1wiKVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/lib/metadata/generate/utils.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/metadata/generate/utils.js ***!
|
||
\***************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getOrigin: function() {\n return getOrigin;\n },\n resolveArray: function() {\n return resolveArray;\n },\n resolveAsArrayOrUndefined: function() {\n return resolveAsArrayOrUndefined;\n }\n});\nfunction resolveArray(value) {\n if (Array.isArray(value)) {\n return value;\n }\n return [\n value\n ];\n}\nfunction resolveAsArrayOrUndefined(value) {\n if (typeof value === 'undefined' || value === null) {\n return undefined;\n }\n return resolveArray(value);\n}\nfunction getOrigin(url) {\n let origin = undefined;\n if (typeof url === 'string') {\n try {\n url = new URL(url);\n origin = url.origin;\n } catch {}\n }\n return origin;\n}\n\n//# sourceMappingURL=utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9nZW5lcmF0ZS91dGlscy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FJTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9saWIvbWV0YWRhdGEvZ2VuZXJhdGUvdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBnZXRPcmlnaW46IG51bGwsXG4gICAgcmVzb2x2ZUFycmF5OiBudWxsLFxuICAgIHJlc29sdmVBc0FycmF5T3JVbmRlZmluZWQ6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgZ2V0T3JpZ2luOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldE9yaWdpbjtcbiAgICB9LFxuICAgIHJlc29sdmVBcnJheTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlQXJyYXk7XG4gICAgfSxcbiAgICByZXNvbHZlQXNBcnJheU9yVW5kZWZpbmVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVBc0FycmF5T3JVbmRlZmluZWQ7XG4gICAgfVxufSk7XG5mdW5jdGlvbiByZXNvbHZlQXJyYXkodmFsdWUpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gW1xuICAgICAgICB2YWx1ZVxuICAgIF07XG59XG5mdW5jdGlvbiByZXNvbHZlQXNBcnJheU9yVW5kZWZpbmVkKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc29sdmVBcnJheSh2YWx1ZSk7XG59XG5mdW5jdGlvbiBnZXRPcmlnaW4odXJsKSB7XG4gICAgbGV0IG9yaWdpbiA9IHVuZGVmaW5lZDtcbiAgICBpZiAodHlwZW9mIHVybCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHVybCA9IG5ldyBVUkwodXJsKTtcbiAgICAgICAgICAgIG9yaWdpbiA9IHVybC5vcmlnaW47XG4gICAgICAgIH0gY2F0Y2ggIHt9XG4gICAgfVxuICAgIHJldHVybiBvcmlnaW47XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXV0aWxzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/generate/utils.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/lib/metadata/metadata.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/metadata/metadata.js ***!
|
||
\*********************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createMetadataComponents\", ({\n enumerable: true,\n get: function() {\n return createMetadataComponents;\n }\n}));\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard(__webpack_require__(/*! react */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js\"));\nconst _resolvemetadata = __webpack_require__(/*! ./resolve-metadata */ \"(rsc)/./node_modules/next/dist/lib/metadata/resolve-metadata.js\");\nconst _httpaccessfallback = __webpack_require__(/*! ../../client/components/http-access-fallback/http-access-fallback */ \"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\");\nconst _searchparams = __webpack_require__(/*! ../../server/request/search-params */ \"(rsc)/./node_modules/next/dist/server/request/search-params.js\");\nconst _pathname = __webpack_require__(/*! ../../server/request/pathname */ \"(rsc)/./node_modules/next/dist/server/request/pathname.js\");\nconst _ispostpone = __webpack_require__(/*! ../../server/lib/router-utils/is-postpone */ \"(rsc)/./node_modules/next/dist/server/lib/router-utils/is-postpone.js\");\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ../../server/app-render/work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nconst _stagedrendering = __webpack_require__(/*! ../../server/app-render/staged-rendering */ \"(rsc)/./node_modules/next/dist/server/app-render/staged-rendering.js\");\nconst _boundarycomponents = __webpack_require__(/*! ../framework/boundary-components */ \"(rsc)/./node_modules/next/dist/lib/framework/boundary-components.js\");\nconst _utils = __webpack_require__(/*! ./generate/utils */ \"(rsc)/./node_modules/next/dist/lib/metadata/generate/utils.js\");\nconst _iconmark = __webpack_require__(/*! ./generate/icon-mark */ \"(rsc)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js\");\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {\n __proto__: null\n };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction createMetadataComponents({ tree, pathname, parsedQuery, metadataContext, interpolatedParams, errorType, serveStreamingMetadata, isRuntimePrefetchable }) {\n const searchParams = (0, _searchparams.createServerSearchParamsForMetadata)(parsedQuery, isRuntimePrefetchable);\n const pathnameForMetadata = (0, _pathname.createServerPathnameForMetadata)(pathname);\n async function Viewport() {\n // Gate metadata to the correct render stage. If the page is not\n // runtime-prefetchable, defer until the Static stage so that\n // prefetchable segments get a head start.\n if (!isRuntimePrefetchable) {\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n const stagedRendering = (0, _workunitasyncstorageexternal.getStagedRenderingController)(workUnitStore);\n if (stagedRendering) {\n await stagedRendering.waitForStage(_stagedrendering.RenderStage.Static);\n }\n }\n }\n const tags = await getResolvedViewport(tree, searchParams, interpolatedParams, isRuntimePrefetchable, errorType).catch((viewportErr)=>{\n // When Legacy PPR is enabled viewport can reject with a Postpone type\n // This will go away once Legacy PPR is removed and dynamic metadata will\n // stay pending until after the prerender is complete when it is dynamic\n if ((0, _ispostpone.isPostpone)(viewportErr)) {\n throw viewportErr;\n }\n if (!errorType && (0, _httpaccessfallback.isHTTPAccessFallbackError)(viewportErr)) {\n return getNotFoundViewport(tree, searchParams, interpolatedParams, isRuntimePrefetchable).catch(()=>null);\n }\n // We're going to throw the error from the metadata outlet so we just render null here instead\n return null;\n });\n return tags;\n }\n Viewport.displayName = 'Next.Viewport';\n function ViewportWrapper() {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_boundarycomponents.ViewportBoundary, {\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(Viewport, {})\n });\n }\n async function Metadata() {\n // Gate metadata to the correct render stage. If the page is not\n // runtime-prefetchable, defer until the Static stage so that\n // prefetchable segments get a head start.\n if (!isRuntimePrefetchable) {\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n const stagedRendering = (0, _workunitasyncstorageexternal.getStagedRenderingController)(workUnitStore);\n if (stagedRendering) {\n await stagedRendering.waitForStage(_stagedrendering.RenderStage.Static);\n }\n }\n }\n const tags = await getResolvedMetadata(tree, pathnameForMetadata, searchParams, interpolatedParams, metadataContext, isRuntimePrefetchable, errorType).catch((metadataErr)=>{\n // When Legacy PPR is enabled metadata can reject with a Postpone type\n // This will go away once Legacy PPR is removed and dynamic metadata will\n // stay pending until after the prerender is complete when it is dynamic\n if ((0, _ispostpone.isPostpone)(metadataErr)) {\n throw metadataErr;\n }\n if (!errorType && (0, _httpaccessfallback.isHTTPAccessFallbackError)(metadataErr)) {\n return getNotFoundMetadata(tree, pathnameForMetadata, searchParams, interpolatedParams, metadataContext, isRuntimePrefetchable).catch(()=>null);\n }\n // We're going to throw the error from the metadata outlet so we just render null here instead\n return null;\n });\n return tags;\n }\n Metadata.displayName = 'Next.Metadata';\n function MetadataWrapper() {\n // TODO: We shouldn't change what we render based on whether we are streaming or not.\n // If we aren't streaming we should just block the response until we have resolved the\n // metadata.\n if (!serveStreamingMetadata) {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_boundarycomponents.MetadataBoundary, {\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(Metadata, {})\n });\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"div\", {\n hidden: true,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_boundarycomponents.MetadataBoundary, {\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_react.Suspense, {\n name: \"Next.Metadata\",\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(Metadata, {})\n })\n })\n });\n }\n function MetadataOutlet() {\n const pendingOutlet = Promise.all([\n getResolvedMetadata(tree, pathnameForMetadata, searchParams, interpolatedParams, metadataContext, isRuntimePrefetchable, errorType),\n getResolvedViewport(tree, searchParams, interpolatedParams, isRuntimePrefetchable, errorType)\n ]).then(()=>null);\n // TODO: We shouldn't change what we render based on whether we are streaming or not.\n // If we aren't streaming we should just block the response until we have resolved the\n // metadata.\n if (!serveStreamingMetadata) {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_boundarycomponents.OutletBoundary, {\n children: pendingOutlet\n });\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_boundarycomponents.OutletBoundary, {\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_react.Suspense, {\n name: \"Next.MetadataOutlet\",\n children: pendingOutlet\n })\n });\n }\n MetadataOutlet.displayName = 'Next.MetadataOutlet';\n return {\n Viewport: ViewportWrapper,\n Metadata: MetadataWrapper,\n MetadataOutlet\n };\n}\nconst getResolvedMetadata = (0, _react.cache)(getResolvedMetadataImpl);\nasync function getResolvedMetadataImpl(tree, pathname, searchParams, interpolatedParams, metadataContext, isRuntimePrefetchable, errorType) {\n const errorConvention = errorType === 'redirect' ? undefined : errorType;\n return renderMetadata(tree, pathname, searchParams, interpolatedParams, metadataContext, isRuntimePrefetchable, errorConvention);\n}\nconst getNotFoundMetadata = (0, _react.cache)(getNotFoundMetadataImpl);\nasync function getNotFoundMetadataImpl(tree, pathname, searchParams, interpolatedParams, metadataContext, isRuntimePrefetchable) {\n const notFoundErrorConvention = 'not-found';\n return renderMetadata(tree, pathname, searchParams, interpolatedParams, metadataContext, isRuntimePrefetchable, notFoundErrorConvention);\n}\nconst getResolvedViewport = (0, _react.cache)(getResolvedViewportImpl);\nasync function getResolvedViewportImpl(tree, searchParams, interpolatedParams, isRuntimePrefetchable, errorType) {\n const errorConvention = errorType === 'redirect' ? undefined : errorType;\n return renderViewport(tree, searchParams, interpolatedParams, isRuntimePrefetchable, errorConvention);\n}\nconst getNotFoundViewport = (0, _react.cache)(getNotFoundViewportImpl);\nasync function getNotFoundViewportImpl(tree, searchParams, interpolatedParams, isRuntimePrefetchable) {\n const notFoundErrorConvention = 'not-found';\n return renderViewport(tree, searchParams, interpolatedParams, isRuntimePrefetchable, notFoundErrorConvention);\n}\nasync function renderMetadata(tree, pathname, searchParams, interpolatedParams, metadataContext, isRuntimePrefetchable, errorConvention) {\n const resolvedMetadata = await (0, _resolvemetadata.resolveMetadata)(tree, pathname, searchParams, errorConvention, interpolatedParams, metadataContext, isRuntimePrefetchable);\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_jsxruntime.Fragment, {\n children: createMetadataElements(resolvedMetadata)\n });\n}\nasync function renderViewport(tree, searchParams, interpolatedParams, isRuntimePrefetchable, errorConvention) {\n const resolvedViewport = await (0, _resolvemetadata.resolveViewport)(tree, searchParams, errorConvention, interpolatedParams, isRuntimePrefetchable);\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_jsxruntime.Fragment, {\n children: createViewportElements(resolvedViewport)\n });\n}\n// ---------------------------------------------------------------------------\n// Viewport tag rendering\n// ---------------------------------------------------------------------------\nfunction createViewportElements(viewport) {\n const tags = [];\n let i = 0;\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n charSet: \"utf-8\"\n }, i++));\n // Build viewport content string from layout properties\n const viewportParts = [];\n if (viewport.width != null) {\n viewportParts.push(`width=${viewport.width}`);\n }\n if (viewport.height != null) {\n viewportParts.push(`height=${viewport.height}`);\n }\n if (viewport.initialScale != null) {\n viewportParts.push(`initial-scale=${viewport.initialScale}`);\n }\n if (viewport.minimumScale != null) {\n viewportParts.push(`minimum-scale=${viewport.minimumScale}`);\n }\n if (viewport.maximumScale != null) {\n viewportParts.push(`maximum-scale=${viewport.maximumScale}`);\n }\n if (viewport.userScalable != null) {\n viewportParts.push(`user-scalable=${viewport.userScalable ? 'yes' : 'no'}`);\n }\n if (viewport.viewportFit) {\n viewportParts.push(`viewport-fit=${viewport.viewportFit}`);\n }\n if (viewport.interactiveWidget) {\n viewportParts.push(`interactive-widget=${viewport.interactiveWidget}`);\n }\n if (viewportParts.length) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"viewport\",\n content: viewportParts.join(', ')\n }, i++));\n }\n if (viewport.themeColor) {\n for (const themeColor of viewport.themeColor){\n if (themeColor.media) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"theme-color\",\n content: themeColor.color,\n media: themeColor.media\n }, i++));\n } else {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"theme-color\",\n content: themeColor.color\n }, i++));\n }\n }\n }\n if (viewport.colorScheme) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"color-scheme\",\n content: viewport.colorScheme\n }, i++));\n }\n return tags;\n}\n// ---------------------------------------------------------------------------\n// Metadata tag rendering\n// ---------------------------------------------------------------------------\nfunction createMetadataElements(metadata) {\n var _metadata_robots, _metadata_robots1;\n const tags = [];\n let i = 0;\n // --- Title ---\n if (metadata.title !== null && metadata.title.absolute) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"title\", {\n children: metadata.title.absolute\n }, i++));\n }\n // --- Basic meta tags ---\n if (metadata.description) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"description\",\n content: metadata.description\n }, i++));\n }\n if (metadata.applicationName) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"application-name\",\n content: metadata.applicationName\n }, i++));\n }\n // --- Authors ---\n if (metadata.authors) {\n for (const author of metadata.authors){\n if (author.url) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: \"author\",\n href: author.url.toString()\n }, i++));\n }\n if (author.name) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"author\",\n content: author.name\n }, i++));\n }\n }\n }\n // --- Manifest ---\n if (metadata.manifest) {\n const manifestOrigin = (0, _utils.getOrigin)(metadata.manifest);\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: \"manifest\",\n href: metadata.manifest.toString(),\n crossOrigin: !manifestOrigin && process.env.VERCEL_ENV === 'preview' ? 'use-credentials' : undefined\n }, i++));\n }\n if (metadata.generator) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"generator\",\n content: metadata.generator\n }, i++));\n }\n if (metadata.keywords && metadata.keywords.length) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"keywords\",\n content: metadata.keywords.join(',')\n }, i++));\n }\n if (metadata.referrer) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"referrer\",\n content: metadata.referrer\n }, i++));\n }\n if (metadata.creator) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"creator\",\n content: metadata.creator\n }, i++));\n }\n if (metadata.publisher) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"publisher\",\n content: metadata.publisher\n }, i++));\n }\n if ((_metadata_robots = metadata.robots) == null ? void 0 : _metadata_robots.basic) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"robots\",\n content: metadata.robots.basic\n }, i++));\n }\n if ((_metadata_robots1 = metadata.robots) == null ? void 0 : _metadata_robots1.googleBot) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"googlebot\",\n content: metadata.robots.googleBot\n }, i++));\n }\n if (metadata.abstract) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"abstract\",\n content: metadata.abstract\n }, i++));\n }\n // --- Link rel arrays ---\n if (metadata.archives) {\n for (const archive of metadata.archives){\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: \"archives\",\n href: archive\n }, i++));\n }\n }\n if (metadata.assets) {\n for (const asset of metadata.assets){\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: \"assets\",\n href: asset\n }, i++));\n }\n }\n if (metadata.bookmarks) {\n for (const bookmark of metadata.bookmarks){\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: \"bookmarks\",\n href: bookmark\n }, i++));\n }\n }\n // --- Pagination ---\n if (metadata.pagination) {\n if (metadata.pagination.previous) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: \"prev\",\n href: metadata.pagination.previous\n }, i++));\n }\n if (metadata.pagination.next) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: \"next\",\n href: metadata.pagination.next\n }, i++));\n }\n }\n if (metadata.category) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"category\",\n content: metadata.category\n }, i++));\n }\n if (metadata.classification) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"classification\",\n content: metadata.classification\n }, i++));\n }\n // --- Other (arbitrary name/value pairs) ---\n if (metadata.other) {\n for (const [name, content] of Object.entries(metadata.other)){\n if (Array.isArray(content)) {\n for (const contentItem of content){\n if (contentItem != null && contentItem !== '') {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: name,\n content: String(contentItem)\n }, i++));\n }\n }\n } else if (content != null && content !== '') {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: name,\n content: String(content)\n }, i++));\n }\n }\n }\n // --- Alternates ---\n if (metadata.alternates) {\n const { canonical, languages, media, types } = metadata.alternates;\n if (canonical && canonical.url) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: \"canonical\",\n href: canonical.url.toString(),\n ...canonical.title ? {\n title: canonical.title\n } : undefined\n }, i++));\n }\n if (languages) {\n for (const [locale, descriptors] of Object.entries(languages)){\n if (descriptors) {\n for (const descriptor of descriptors){\n if (descriptor.url) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: \"alternate\",\n hrefLang: locale,\n href: descriptor.url.toString(),\n ...descriptor.title ? {\n title: descriptor.title\n } : undefined\n }, i++));\n }\n }\n }\n }\n }\n if (media) {\n for (const [mediaName, descriptors] of Object.entries(media)){\n if (descriptors) {\n for (const descriptor of descriptors){\n if (descriptor.url) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: \"alternate\",\n media: mediaName,\n href: descriptor.url.toString(),\n ...descriptor.title ? {\n title: descriptor.title\n } : undefined\n }, i++));\n }\n }\n }\n }\n }\n if (types) {\n for (const [type, descriptors] of Object.entries(types)){\n if (descriptors) {\n for (const descriptor of descriptors){\n if (descriptor.url) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: \"alternate\",\n type: type,\n href: descriptor.url.toString(),\n ...descriptor.title ? {\n title: descriptor.title\n } : undefined\n }, i++));\n }\n }\n }\n }\n }\n }\n // --- iTunes ---\n if (metadata.itunes) {\n const { appId, appArgument } = metadata.itunes;\n let itunesContent = `app-id=${appId}`;\n if (appArgument) {\n itunesContent += `, app-argument=${appArgument}`;\n }\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"apple-itunes-app\",\n content: itunesContent\n }, i++));\n }\n // --- Facebook ---\n if (metadata.facebook) {\n if (metadata.facebook.appId) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"fb:app_id\",\n content: metadata.facebook.appId\n }, i++));\n }\n if (metadata.facebook.admins) {\n for (const admin of metadata.facebook.admins){\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"fb:admins\",\n content: admin\n }, i++));\n }\n }\n }\n // --- Pinterest ---\n if (metadata.pinterest && metadata.pinterest.richPin !== undefined) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"pinterest-rich-pin\",\n content: metadata.pinterest.richPin.toString()\n }, i++));\n }\n // --- Format Detection ---\n if (metadata.formatDetection) {\n const formatDetectionKeys = [\n 'telephone',\n 'date',\n 'address',\n 'email',\n 'url'\n ];\n let formatContent = '';\n for (const key of formatDetectionKeys){\n if (metadata.formatDetection[key] === false) {\n if (formatContent) formatContent += ', ';\n formatContent += `${key}=no`;\n }\n }\n if (formatContent) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"format-detection\",\n content: formatContent\n }, i++));\n }\n }\n // --- Verification ---\n if (metadata.verification) {\n const verification = metadata.verification;\n if (verification.google) {\n for (const value of verification.google){\n if (value != null && value !== '') {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"google-site-verification\",\n content: String(value)\n }, i++));\n }\n }\n }\n if (verification.yahoo) {\n for (const value of verification.yahoo){\n if (value != null && value !== '') {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"y_key\",\n content: String(value)\n }, i++));\n }\n }\n }\n if (verification.yandex) {\n for (const value of verification.yandex){\n if (value != null && value !== '') {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"yandex-verification\",\n content: String(value)\n }, i++));\n }\n }\n }\n if (verification.me) {\n for (const value of verification.me){\n if (value != null && value !== '') {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"me\",\n content: String(value)\n }, i++));\n }\n }\n }\n if (verification.other) {\n for (const [name, values] of Object.entries(verification.other)){\n for (const value of values){\n if (value != null && value !== '') {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: name,\n content: String(value)\n }, i++));\n }\n }\n }\n }\n }\n // --- Apple Web App ---\n if (metadata.appleWebApp) {\n const { capable, title, startupImage, statusBarStyle } = metadata.appleWebApp;\n if (capable) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"mobile-web-app-capable\",\n content: \"yes\"\n }, i++));\n }\n if (title) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"apple-mobile-web-app-title\",\n content: title\n }, i++));\n }\n if (startupImage) {\n for (const image of startupImage){\n if (image.media) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n href: image.url,\n media: image.media,\n rel: \"apple-touch-startup-image\"\n }, i++));\n } else {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n href: image.url,\n rel: \"apple-touch-startup-image\"\n }, i++));\n }\n }\n }\n if (statusBarStyle) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"apple-mobile-web-app-status-bar-style\",\n content: statusBarStyle\n }, i++));\n }\n }\n // --- Open Graph ---\n if (metadata.openGraph) {\n var _og_title;\n const og = metadata.openGraph;\n if (og.determiner) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:determiner\",\n content: og.determiner\n }, i++));\n }\n if ((_og_title = og.title) == null ? void 0 : _og_title.absolute) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:title\",\n content: og.title.absolute\n }, i++));\n }\n if (og.description) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:description\",\n content: og.description\n }, i++));\n }\n if (og.url) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:url\",\n content: og.url.toString()\n }, i++));\n }\n if (og.siteName) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:site_name\",\n content: og.siteName\n }, i++));\n }\n if (og.locale) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:locale\",\n content: og.locale\n }, i++));\n }\n if (og.countryName) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:country_name\",\n content: og.countryName\n }, i++));\n }\n if (og.ttl != null) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:ttl\",\n content: og.ttl.toString()\n }, i++));\n }\n // OG images\n if (og.images) {\n for (const image of og.images){\n if (typeof image === 'string') {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:image\",\n content: image\n }, i++));\n } else {\n if (image.url) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:image\",\n content: String(image.url)\n }, i++));\n }\n if (image.secureUrl) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:image:secure_url\",\n content: String(image.secureUrl)\n }, i++));\n }\n if (image.type) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:image:type\",\n content: image.type\n }, i++));\n }\n if (image.width) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:image:width\",\n content: String(image.width)\n }, i++));\n }\n if (image.height) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:image:height\",\n content: String(image.height)\n }, i++));\n }\n if (image.alt) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:image:alt\",\n content: image.alt\n }, i++));\n }\n }\n }\n }\n // OG videos\n if (og.videos) {\n for (const video of og.videos){\n if (typeof video === 'string') {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:video\",\n content: video\n }, i++));\n } else {\n if (video.url) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:video\",\n content: String(video.url)\n }, i++));\n }\n if (video.secureUrl) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:video:secure_url\",\n content: String(video.secureUrl)\n }, i++));\n }\n if (video.type) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:video:type\",\n content: video.type\n }, i++));\n }\n if (video.width) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:video:width\",\n content: String(video.width)\n }, i++));\n }\n if (video.height) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:video:height\",\n content: String(video.height)\n }, i++));\n }\n }\n }\n }\n // OG audio\n if (og.audio) {\n for (const audio of og.audio){\n if (typeof audio === 'string') {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:audio\",\n content: audio\n }, i++));\n } else {\n if (audio.url) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:audio\",\n content: String(audio.url)\n }, i++));\n }\n if (audio.secureUrl) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:audio:secure_url\",\n content: String(audio.secureUrl)\n }, i++));\n }\n if (audio.type) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:audio:type\",\n content: audio.type\n }, i++));\n }\n }\n }\n }\n // OG simple array properties\n if (og.emails) {\n for (const email of og.emails){\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:email\",\n content: email\n }, i++));\n }\n }\n if (og.phoneNumbers) {\n for (const phone of og.phoneNumbers){\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:phone_number\",\n content: phone\n }, i++));\n }\n }\n if (og.faxNumbers) {\n for (const fax of og.faxNumbers){\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:fax_number\",\n content: fax\n }, i++));\n }\n }\n if (og.alternateLocale) {\n for (const locale of og.alternateLocale){\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:locale:alternate\",\n content: locale\n }, i++));\n }\n }\n // OG type-specific tags\n if ('type' in og) {\n const ogType = og.type;\n switch(ogType){\n case 'website':\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:type\",\n content: \"website\"\n }, i++));\n break;\n case 'article':\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:type\",\n content: \"article\"\n }, i++));\n if (og.publishedTime) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"article:published_time\",\n content: og.publishedTime.toString()\n }, i++));\n }\n if (og.modifiedTime) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"article:modified_time\",\n content: og.modifiedTime.toString()\n }, i++));\n }\n if (og.expirationTime) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"article:expiration_time\",\n content: og.expirationTime.toString()\n }, i++));\n }\n if (og.authors) {\n for (const author of og.authors){\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"article:author\",\n content: String(author)\n }, i++));\n }\n }\n if (og.section) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"article:section\",\n content: og.section\n }, i++));\n }\n if (og.tags) {\n for (const tag of og.tags){\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"article:tag\",\n content: tag\n }, i++));\n }\n }\n break;\n case 'book':\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:type\",\n content: \"book\"\n }, i++));\n if (og.isbn) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"book:isbn\",\n content: og.isbn\n }, i++));\n }\n if (og.releaseDate) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"book:release_date\",\n content: og.releaseDate\n }, i++));\n }\n if (og.authors) {\n for (const author of og.authors){\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"book:author\",\n content: String(author)\n }, i++));\n }\n }\n if (og.tags) {\n for (const tag of og.tags){\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"book:tag\",\n content: tag\n }, i++));\n }\n }\n break;\n case 'profile':\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:type\",\n content: \"profile\"\n }, i++));\n if (og.firstName) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"profile:first_name\",\n content: og.firstName\n }, i++));\n }\n if (og.lastName) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"profile:last_name\",\n content: og.lastName\n }, i++));\n }\n if (og.username) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"profile:username\",\n content: og.username\n }, i++));\n }\n if (og.gender) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"profile:gender\",\n content: og.gender\n }, i++));\n }\n break;\n case 'music.song':\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:type\",\n content: \"music.song\"\n }, i++));\n if (og.duration != null) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"music:duration\",\n content: og.duration.toString()\n }, i++));\n }\n if (og.albums) {\n for (const album of og.albums){\n if (typeof album === 'string') {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"music:album\",\n content: album\n }, i++));\n } else {\n if (album.url) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"music:album\",\n content: String(album.url)\n }, i++));\n }\n if (album.disc != null) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"music:album:disc\",\n content: String(album.disc)\n }, i++));\n }\n if (album.track != null) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"music:album:track\",\n content: String(album.track)\n }, i++));\n }\n }\n }\n }\n if (og.musicians) {\n for (const musician of og.musicians){\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"music:musician\",\n content: String(musician)\n }, i++));\n }\n }\n break;\n case 'music.album':\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:type\",\n content: \"music.album\"\n }, i++));\n if (og.songs) {\n for (const song of og.songs){\n if (typeof song === 'string') {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"music:song\",\n content: song\n }, i++));\n } else {\n if (song.url) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"music:song\",\n content: String(song.url)\n }, i++));\n }\n if (song.disc != null) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"music:song:disc\",\n content: String(song.disc)\n }, i++));\n }\n if (song.track != null) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"music:song:track\",\n content: String(song.track)\n }, i++));\n }\n }\n }\n }\n if (og.musicians) {\n for (const musician of og.musicians){\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"music:musician\",\n content: String(musician)\n }, i++));\n }\n }\n if (og.releaseDate) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"music:release_date\",\n content: og.releaseDate\n }, i++));\n }\n break;\n case 'music.playlist':\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:type\",\n content: \"music.playlist\"\n }, i++));\n if (og.songs) {\n for (const song of og.songs){\n if (typeof song === 'string') {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"music:song\",\n content: song\n }, i++));\n } else {\n if (song.url) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"music:song\",\n content: String(song.url)\n }, i++));\n }\n if (song.disc != null) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"music:song:disc\",\n content: String(song.disc)\n }, i++));\n }\n if (song.track != null) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"music:song:track\",\n content: String(song.track)\n }, i++));\n }\n }\n }\n }\n if (og.creators) {\n for (const creator of og.creators){\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"music:creator\",\n content: String(creator)\n }, i++));\n }\n }\n break;\n case 'music.radio_station':\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:type\",\n content: \"music.radio_station\"\n }, i++));\n if (og.creators) {\n for (const creator of og.creators){\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"music:creator\",\n content: String(creator)\n }, i++));\n }\n }\n break;\n case 'video.movie':\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:type\",\n content: \"video.movie\"\n }, i++));\n if (og.actors) {\n for (const actor of og.actors){\n if (typeof actor === 'string') {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"video:actor\",\n content: actor\n }, i++));\n } else {\n if (actor.url) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"video:actor\",\n content: String(actor.url)\n }, i++));\n }\n if (actor.role) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"video:actor:role\",\n content: actor.role\n }, i++));\n }\n }\n }\n }\n if (og.directors) {\n for (const director of og.directors){\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"video:director\",\n content: String(director)\n }, i++));\n }\n }\n if (og.writers) {\n for (const writer of og.writers){\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"video:writer\",\n content: String(writer)\n }, i++));\n }\n }\n if (og.duration != null) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"video:duration\",\n content: String(og.duration)\n }, i++));\n }\n if (og.releaseDate) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"video:release_date\",\n content: og.releaseDate\n }, i++));\n }\n if (og.tags) {\n for (const tag of og.tags){\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"video:tag\",\n content: tag\n }, i++));\n }\n }\n break;\n case 'video.episode':\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:type\",\n content: \"video.episode\"\n }, i++));\n if (og.actors) {\n for (const actor of og.actors){\n if (typeof actor === 'string') {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"video:actor\",\n content: actor\n }, i++));\n } else {\n if (actor.url) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"video:actor\",\n content: String(actor.url)\n }, i++));\n }\n if (actor.role) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"video:actor:role\",\n content: actor.role\n }, i++));\n }\n }\n }\n }\n if (og.directors) {\n for (const director of og.directors){\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"video:director\",\n content: String(director)\n }, i++));\n }\n }\n if (og.writers) {\n for (const writer of og.writers){\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"video:writer\",\n content: String(writer)\n }, i++));\n }\n }\n if (og.duration != null) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"video:duration\",\n content: String(og.duration)\n }, i++));\n }\n if (og.releaseDate) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"video:release_date\",\n content: og.releaseDate\n }, i++));\n }\n if (og.tags) {\n for (const tag of og.tags){\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"video:tag\",\n content: tag\n }, i++));\n }\n }\n if (og.series) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"video:series\",\n content: String(og.series)\n }, i++));\n }\n break;\n case 'video.tv_show':\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:type\",\n content: \"video.tv_show\"\n }, i++));\n break;\n case 'video.other':\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"og:type\",\n content: \"video.other\"\n }, i++));\n break;\n default:\n const _exhaustiveCheck = ogType;\n throw Object.defineProperty(new Error(`Invalid OpenGraph type: ${_exhaustiveCheck}`), \"__NEXT_ERROR_CODE\", {\n value: \"E237\",\n enumerable: false,\n configurable: true\n });\n }\n }\n }\n // --- Twitter ---\n if (metadata.twitter) {\n var _tw_title;\n const tw = metadata.twitter;\n const { card } = tw;\n if (card) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"twitter:card\",\n content: card\n }, i++));\n }\n if (tw.site) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"twitter:site\",\n content: tw.site\n }, i++));\n }\n if (tw.siteId) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"twitter:site:id\",\n content: tw.siteId\n }, i++));\n }\n if (tw.creator) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"twitter:creator\",\n content: tw.creator\n }, i++));\n }\n if (tw.creatorId) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"twitter:creator:id\",\n content: tw.creatorId\n }, i++));\n }\n if ((_tw_title = tw.title) == null ? void 0 : _tw_title.absolute) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"twitter:title\",\n content: tw.title.absolute\n }, i++));\n }\n if (tw.description) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"twitter:description\",\n content: tw.description\n }, i++));\n }\n // Twitter images\n if (tw.images) {\n for (const image of tw.images){\n if (typeof image === 'string') {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"twitter:image\",\n content: image\n }, i++));\n } else {\n if (image.url) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"twitter:image\",\n content: String(image.url)\n }, i++));\n }\n if (image.alt) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"twitter:image:alt\",\n content: image.alt\n }, i++));\n }\n if (image.secureUrl) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"twitter:image:secure_url\",\n content: String(image.secureUrl)\n }, i++));\n }\n if (image.type) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"twitter:image:type\",\n content: image.type\n }, i++));\n }\n if (image.width) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"twitter:image:width\",\n content: String(image.width)\n }, i++));\n }\n if (image.height) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"twitter:image:height\",\n content: String(image.height)\n }, i++));\n }\n }\n }\n }\n // Twitter player cards\n if (card === 'player') {\n for (const player of tw.players){\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"twitter:player\",\n content: player.playerUrl.toString()\n }, i++));\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"twitter:player:stream\",\n content: player.streamUrl.toString()\n }, i++));\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"twitter:player:width\",\n content: String(player.width)\n }, i++));\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"twitter:player:height\",\n content: String(player.height)\n }, i++));\n }\n }\n // Twitter app cards\n if (card === 'app') {\n const { app } = tw;\n for (const platform of [\n 'iphone',\n 'ipad',\n 'googleplay'\n ]){\n var _app_url;\n if (app.name) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: `twitter:app:name:${platform}`,\n content: app.name\n }, i++));\n }\n if (app.id[platform]) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: `twitter:app:id:${platform}`,\n content: String(app.id[platform])\n }, i++));\n }\n if ((_app_url = app.url) == null ? void 0 : _app_url[platform]) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: `twitter:app:url:${platform}`,\n content: app.url[platform].toString()\n }, i++));\n }\n }\n }\n }\n // --- App Links ---\n if (metadata.appLinks) {\n const appLinks = metadata.appLinks;\n // iOS / iPhone / iPad (AppLinksApple: url, app_store_id, app_name)\n if (appLinks.ios) {\n for (const item of appLinks.ios){\n if (item.url) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"al:ios:url\",\n content: String(item.url)\n }, i++));\n }\n if (item.app_store_id) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"al:ios:app_store_id\",\n content: String(item.app_store_id)\n }, i++));\n }\n if (item.app_name) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"al:ios:app_name\",\n content: item.app_name\n }, i++));\n }\n }\n }\n if (appLinks.iphone) {\n for (const item of appLinks.iphone){\n if (item.url) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"al:iphone:url\",\n content: String(item.url)\n }, i++));\n }\n if (item.app_store_id) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"al:iphone:app_store_id\",\n content: String(item.app_store_id)\n }, i++));\n }\n if (item.app_name) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"al:iphone:app_name\",\n content: item.app_name\n }, i++));\n }\n }\n }\n if (appLinks.ipad) {\n for (const item of appLinks.ipad){\n if (item.url) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"al:ipad:url\",\n content: String(item.url)\n }, i++));\n }\n if (item.app_store_id) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"al:ipad:app_store_id\",\n content: String(item.app_store_id)\n }, i++));\n }\n if (item.app_name) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"al:ipad:app_name\",\n content: item.app_name\n }, i++));\n }\n }\n }\n // Android (AppLinksAndroid: package, url, class, app_name)\n if (appLinks.android) {\n for (const item of appLinks.android){\n if (item.package) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"al:android:package\",\n content: item.package\n }, i++));\n }\n if (item.url) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"al:android:url\",\n content: String(item.url)\n }, i++));\n }\n if (item.class) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"al:android:class\",\n content: item.class\n }, i++));\n }\n if (item.app_name) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"al:android:app_name\",\n content: item.app_name\n }, i++));\n }\n }\n }\n // Windows Phone (AppLinksWindows: url, app_id, app_name)\n if (appLinks.windows_phone) {\n for (const item of appLinks.windows_phone){\n if (item.url) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"al:windows_phone:url\",\n content: String(item.url)\n }, i++));\n }\n if (item.app_id) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"al:windows_phone:app_id\",\n content: item.app_id\n }, i++));\n }\n if (item.app_name) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"al:windows_phone:app_name\",\n content: item.app_name\n }, i++));\n }\n }\n }\n // Windows (AppLinksWindows: url, app_id, app_name)\n if (appLinks.windows) {\n for (const item of appLinks.windows){\n if (item.url) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"al:windows:url\",\n content: String(item.url)\n }, i++));\n }\n if (item.app_id) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"al:windows:app_id\",\n content: item.app_id\n }, i++));\n }\n if (item.app_name) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"al:windows:app_name\",\n content: item.app_name\n }, i++));\n }\n }\n }\n // Windows Universal (AppLinksWindows: url, app_id, app_name)\n if (appLinks.windows_universal) {\n for (const item of appLinks.windows_universal){\n if (item.url) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"al:windows_universal:url\",\n content: String(item.url)\n }, i++));\n }\n if (item.app_id) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"al:windows_universal:app_id\",\n content: item.app_id\n }, i++));\n }\n if (item.app_name) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"al:windows_universal:app_name\",\n content: item.app_name\n }, i++));\n }\n }\n }\n // Web (AppLinksWeb: url, should_fallback)\n if (appLinks.web) {\n for (const item of appLinks.web){\n if (item.url) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"al:web:url\",\n content: String(item.url)\n }, i++));\n }\n if (item.should_fallback != null) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"al:web:should_fallback\",\n content: String(item.should_fallback)\n }, i++));\n }\n }\n }\n }\n // --- Icons ---\n if (metadata.icons) {\n const { shortcut, icon, apple, other } = metadata.icons;\n const hasIcon = Boolean((shortcut == null ? void 0 : shortcut.length) || (icon == null ? void 0 : icon.length) || (apple == null ? void 0 : apple.length) || (other == null ? void 0 : other.length));\n if (shortcut) {\n for (const ic of shortcut){\n const { url, rel, ...props } = ic;\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: rel || 'shortcut icon',\n href: url.toString(),\n ...props\n }, i++));\n }\n }\n if (icon) {\n for (const ic of icon){\n const { url, rel, ...props } = ic;\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: rel || 'icon',\n href: url.toString(),\n ...props\n }, i++));\n }\n }\n if (apple) {\n for (const ic of apple){\n const { url, rel, ...props } = ic;\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: rel || 'apple-touch-icon',\n href: url.toString(),\n ...props\n }, i++));\n }\n }\n if (other) {\n for (const ic of other){\n const { url, rel, ...props } = ic;\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: rel || 'icon',\n href: url.toString(),\n ...props\n }, i++));\n }\n }\n if (hasIcon) {\n tags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(_iconmark.IconMark, {}, i++));\n }\n }\n return tags;\n}\n\n//# sourceMappingURL=metadata.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9tZXRhZGF0YS5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLDREQUEyRDtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGLG9CQUFvQixtQkFBTyxDQUFDLHlIQUFtQjtBQUMvQyx1REFBdUQsbUJBQU8sQ0FBQyxpR0FBTztBQUN0RSx5QkFBeUIsbUJBQU8sQ0FBQywyRkFBb0I7QUFDckQsNEJBQTRCLG1CQUFPLENBQUMsd0tBQW1FO0FBQ3ZHLHNCQUFzQixtQkFBTyxDQUFDLDBHQUFvQztBQUNsRSxrQkFBa0IsbUJBQU8sQ0FBQyxnR0FBK0I7QUFDekQsb0JBQW9CLG1CQUFPLENBQUMsd0hBQTJDO0FBQ3ZFLHNDQUFzQyxtQkFBTyxDQUFDLG9HQUEwRDtBQUN4Ryx5QkFBeUIsbUJBQU8sQ0FBQyxzSEFBMEM7QUFDM0UsNEJBQTRCLG1CQUFPLENBQUMsNkdBQWtDO0FBQ3RFLGVBQWUsbUJBQU8sQ0FBQyx1RkFBa0I7QUFDekMsa0JBQWtCLG1CQUFPLENBQUMsK0ZBQXNCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLDRIQUE0SDtBQUNoSztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFFQUFxRTtBQUNyRSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5RUFBeUU7QUFDekUsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZFQUE2RTtBQUM3RSxpQkFBaUI7QUFDakIsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsZUFBZTtBQUNuRDtBQUNBO0FBQ0EscUNBQXFDLGdCQUFnQjtBQUNyRDtBQUNBO0FBQ0EsNENBQTRDLHNCQUFzQjtBQUNsRTtBQUNBO0FBQ0EsNENBQTRDLHNCQUFzQjtBQUNsRTtBQUNBO0FBQ0EsNENBQTRDLHNCQUFzQjtBQUNsRTtBQUNBO0FBQ0EsNENBQTRDLHFDQUFxQztBQUNqRjtBQUNBO0FBQ0EsMkNBQTJDLHFCQUFxQjtBQUNoRTtBQUNBO0FBQ0EsaURBQWlELDJCQUEyQjtBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFD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QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckIsa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckIsa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFD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QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9tZXRhZGF0YS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImNyZWF0ZU1ldGFkYXRhQ29tcG9uZW50c1wiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTWV0YWRhdGFDb21wb25lbnRzO1xuICAgIH1cbn0pO1xuY29uc3QgX2pzeHJ1bnRpbWUgPSByZXF1aXJlKFwicmVhY3QvanN4LXJ1bnRpbWVcIik7XG5jb25zdCBfcmVhY3QgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcbmNvbnN0IF9yZXNvbHZlbWV0YWRhdGEgPSByZXF1aXJlKFwiLi9yZXNvbHZlLW1ldGFkYXRhXCIpO1xuY29uc3QgX2h0dHBhY2Nlc3NmYWxsYmFjayA9IHJlcXVpcmUoXCIuLi8uLi9jbGllbnQvY29tcG9uZW50cy9odHRwLWFjY2Vzcy1mYWxsYmFjay9odHRwLWFjY2Vzcy1mYWxsYmFja1wiKTtcbmNvbnN0IF9zZWFyY2hwYXJhbXMgPSByZXF1aXJlKFwiLi4vLi4vc2VydmVyL3JlcXVlc3Qvc2VhcmNoLXBhcmFtc1wiKTtcbmNvbnN0IF9wYXRobmFtZSA9IHJlcXVpcmUoXCIuLi8uLi9zZXJ2ZXIvcmVxdWVzdC9wYXRobmFtZVwiKTtcbmNvbnN0IF9pc3Bvc3Rwb25lID0gcmVxdWlyZShcIi4uLy4uL3NlcnZlci9saWIvcm91dGVyLXV0aWxzL2lzLXBvc3Rwb25lXCIpO1xuY29uc3QgX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwgPSByZXF1aXJlKFwiLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvd29yay11bml0LWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWxcIik7XG5jb25zdCBfc3RhZ2VkcmVuZGVyaW5nID0gcmVxdWlyZShcIi4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3N0YWdlZC1yZW5kZXJpbmdcIik7XG5jb25zdCBfYm91bmRhcnljb21wb25lbnRzID0gcmVxdWlyZShcIi4uL2ZyYW1ld29yay9ib3VuZGFyeS1jb21wb25lbnRzXCIpO1xuY29uc3QgX3V0aWxzID0gcmVxdWlyZShcIi4vZ2VuZXJhdGUvdXRpbHNcIik7XG5jb25zdCBfaWNvbm1hcmsgPSByZXF1aXJlKFwiLi9nZW5lcmF0ZS9pY29uLW1hcmtcIik7XG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHtcbiAgICBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7XG4gICAgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTtcbiAgICB2YXIgY2FjaGVOb2RlSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7XG4gICAgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbihub2RlSW50ZXJvcCkge1xuICAgICAgICByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7XG4gICAgfSkobm9kZUludGVyb3ApO1xufVxuZnVuY3Rpb24gX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7XG4gICAgaWYgKCFub2RlSW50ZXJvcCAmJiBvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgICAgIH07XG4gICAgfVxuICAgIHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCk7XG4gICAgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7XG4gICAgICAgIHJldHVybiBjYWNoZS5nZXQob2JqKTtcbiAgICB9XG4gICAgdmFyIG5ld09iaiA9IHtcbiAgICAgICAgX19wcm90b19fOiBudWxsXG4gICAgfTtcbiAgICB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICAgZm9yKHZhciBrZXkgaW4gb2JqKXtcbiAgICAgICAgaWYgKGtleSAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICAgICAgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7XG4gICAgICAgICAgICBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3T2JqW2tleV0gPSBvYmpba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBuZXdPYmouZGVmYXVsdCA9IG9iajtcbiAgICBpZiAoY2FjaGUpIHtcbiAgICAgICAgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld09iajtcbn1cbmZ1bmN0aW9uIGNyZWF0ZU1ldGFkYXRhQ29tcG9uZW50cyh7IHRyZWUsIHBhdGhuYW1lLCBwYXJzZWRRdWVyeSwgbWV0YWRhdGFDb250ZXh0LCBpbnRlcnBvbGF0ZWRQYXJhbXMsIGVycm9yVHlwZSwgc2VydmVTdHJlYW1pbmdNZXRhZGF0YSwgaXNSdW50aW1lUHJlZmV0Y2hhYmxlIH0pIHtcbiAgICBjb25zdCBzZWFyY2hQYXJhbXMgPSAoMCwgX3NlYXJjaHBhcmFtcy5jcmVhdGVTZXJ2ZXJTZWFyY2hQYXJhbXNGb3JNZXRhZGF0YSkocGFyc2VkUXVlcnksIGlzUnVudGltZVByZWZldGNoYWJsZSk7XG4gICAgY29uc3QgcGF0aG5hbWVGb3JNZXRhZGF0YSA9ICgwLCBfcGF0aG5hbWUuY3JlYXRlU2VydmVyUGF0aG5hbWVGb3JNZXRhZGF0YSkocGF0aG5hbWUpO1xuICAgIGFzeW5jIGZ1bmN0aW9uIFZpZXdwb3J0KCkge1xuICAgICAgICAvLyBHYXRlIG1ldGFkYXRhIHRvIHRoZSBjb3JyZWN0IHJlbmRlciBzdGFnZS4gSWYgdGhlIHBhZ2UgaXMgbm90XG4gICAgICAgIC8vIHJ1bnRpbWUtcHJlZmV0Y2hhYmxlLCBkZWZlciB1bnRpbCB0aGUgU3RhdGljIHN0YWdlIHNvIHRoYXRcbiAgICAgICAgLy8gcHJlZmV0Y2hhYmxlIHNlZ21lbnRzIGdldCBhIGhlYWQgc3RhcnQuXG4gICAgICAgIGlmICghaXNSdW50aW1lUHJlZmV0Y2hhYmxlKSB7XG4gICAgICAgICAgICBjb25zdCB3b3JrVW5pdFN0b3JlID0gX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya1VuaXRBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICAgICAgICAgIGlmICh3b3JrVW5pdFN0b3JlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhZ2VkUmVuZGVyaW5nID0gKDAsIF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLmdldFN0YWdlZFJlbmRlcmluZ0NvbnRyb2xsZXIpKHdvcmtVbml0U3RvcmUpO1xuICAgICAgICAgICAgICAgIGlmIChzdGFnZWRSZW5kZXJpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgc3RhZ2VkUmVuZGVyaW5nLndhaXRGb3JTdGFnZShfc3RhZ2VkcmVuZGVyaW5nLlJlbmRlclN0YWdlLlN0YXRpYyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhZ3MgPSBhd2FpdCBnZXRSZXNvbHZlZFZpZXdwb3J0KHRyZWUsIHNlYXJjaFBhcmFtcywgaW50ZXJwb2xhdGVkUGFyYW1zLCBpc1J1bnRpbWVQcmVmZXRjaGFibGUsIGVycm9yVHlwZSkuY2F0Y2goKHZpZXdwb3J0RXJyKT0+e1xuICAgICAgICAgICAgLy8gV2hlbiBMZWdhY3kgUFBSIGlzIGVuYWJsZWQgdmlld3BvcnQgY2FuIHJlamVjdCB3aXRoIGEgUG9zdHBvbmUgdHlwZVxuICAgICAgICAgICAgLy8gVGhpcyB3aWxsIGdvIGF3YXkgb25jZSBMZWdhY3kgUFBSIGlzIHJlbW92ZWQgYW5kIGR5bmFtaWMgbWV0YWRhdGEgd2lsbFxuICAgICAgICAgICAgLy8gc3RheSBwZW5kaW5nIHVudGlsIGFmdGVyIHRoZSBwcmVyZW5kZXIgaXMgY29tcGxldGUgd2hlbiBpdCBpcyBkeW5hbWljXG4gICAgICAgICAgICBpZiAoKDAsIF9pc3Bvc3Rwb25lLmlzUG9zdHBvbmUpKHZpZXdwb3J0RXJyKSkge1xuICAgICAgICAgICAgICAgIHRocm93IHZpZXdwb3J0RXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFlcnJvclR5cGUgJiYgKDAsIF9odHRwYWNjZXNzZmFsbGJhY2suaXNIVFRQQWNjZXNzRmFsbGJhY2tFcnJvcikodmlld3BvcnRFcnIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldE5vdEZvdW5kVmlld3BvcnQodHJlZSwgc2VhcmNoUGFyYW1zLCBpbnRlcnBvbGF0ZWRQYXJhbXMsIGlzUnVudGltZVByZWZldGNoYWJsZSkuY2F0Y2goKCk9Pm51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gV2UncmUgZ29pbmcgdG8gdGhyb3cgdGhlIGVycm9yIGZyb20gdGhlIG1ldGFkYXRhIG91dGxldCBzbyB3ZSBqdXN0IHJlbmRlciBudWxsIGhlcmUgaW5zdGVhZFxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGFncztcbiAgICB9XG4gICAgVmlld3BvcnQuZGlzcGxheU5hbWUgPSAnTmV4dC5WaWV3cG9ydCc7XG4gICAgZnVuY3Rpb24gVmlld3BvcnRXcmFwcGVyKCkge1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShfYm91bmRhcnljb21wb25lbnRzLlZpZXdwb3J0Qm91bmRhcnksIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFZpZXdwb3J0LCB7fSlcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIGZ1bmN0aW9uIE1ldGFkYXRhKCkge1xuICAgICAgICAvLyBHYXRlIG1ldGFkYXRhIHRvIHRoZSBjb3JyZWN0IHJlbmRlciBzdGFnZS4gSWYgdGhlIHBhZ2UgaXMgbm90XG4gICAgICAgIC8vIHJ1bnRpbWUtcHJlZmV0Y2hhYmxlLCBkZWZlciB1bnRpbCB0aGUgU3RhdGljIHN0YWdlIHNvIHRoYXRcbiAgICAgICAgLy8gcHJlZmV0Y2hhYmxlIHNlZ21lbnRzIGdldCBhIGhlYWQgc3RhcnQuXG4gICAgICAgIGlmICghaXNSdW50aW1lUHJlZmV0Y2hhYmxlKSB7XG4gICAgICAgICAgICBjb25zdCB3b3JrVW5pdFN0b3JlID0gX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya1VuaXRBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICAgICAgICAgIGlmICh3b3JrVW5pdFN0b3JlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhZ2VkUmVuZGVyaW5nID0gKDAsIF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLmdldFN0YWdlZFJlbmRlcmluZ0NvbnRyb2xsZXIpKHdvcmtVbml0U3RvcmUpO1xuICAgICAgICAgICAgICAgIGlmIChzdGFnZWRSZW5kZXJpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgc3RhZ2VkUmVuZGVyaW5nLndhaXRGb3JTdGFnZShfc3RhZ2VkcmVuZGVyaW5nLlJlbmRlclN0YWdlLlN0YXRpYyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhZ3MgPSBhd2FpdCBnZXRSZXNvbHZlZE1ldGFkYXRhKHRyZWUsIHBhdGhuYW1lRm9yTWV0YWRhdGEsIHNlYXJjaFBhcmFtcywgaW50ZXJwb2xhdGVkUGFyYW1zLCBtZXRhZGF0YUNvbnRleHQsIGlzUnVudGltZVByZWZldGNoYWJsZSwgZXJyb3JUeXBlKS5jYXRjaCgobWV0YWRhdGFFcnIpPT57XG4gICAgICAgICAgICAvLyBXaGVuIExlZ2FjeSBQUFIgaXMgZW5hYmxlZCBtZXRhZGF0YSBjYW4gcmVqZWN0IHdpdGggYSBQb3N0cG9uZSB0eXBlXG4gICAgICAgICAgICAvLyBUaGlzIHdpbGwgZ28gYXdheSBvbmNlIExlZ2FjeSBQUFIgaXMgcmVtb3ZlZCBhbmQgZHluYW1pYyBtZXRhZGF0YSB3aWxsXG4gICAgICAgICAgICAvLyBzdGF5IHBlbmRpbmcgdW50aWwgYWZ0ZXIgdGhlIHByZXJlbmRlciBpcyBjb21wbGV0ZSB3aGVuIGl0IGlzIGR5bmFtaWNcbiAgICAgICAgICAgIGlmICgoMCwgX2lzcG9zdHBvbmUuaXNQb3N0cG9uZSkobWV0YWRhdGFFcnIpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbWV0YWRhdGFFcnI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWVycm9yVHlwZSAmJiAoMCwgX2h0dHBhY2Nlc3NmYWxsYmFjay5pc0hUVFBBY2Nlc3NGYWxsYmFja0Vycm9yKShtZXRhZGF0YUVycikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0Tm90Rm91bmRNZXRhZGF0YSh0cmVlLCBwYXRobmFtZUZvck1ldGFkYXRhLCBzZWFyY2hQYXJhbXMsIGludGVycG9sYXRlZFBhcmFtcywgbWV0YWRhdGFDb250ZXh0LCBpc1J1bnRpbWVQcmVmZXRjaGFibGUpLmNhdGNoKCgpPT5udWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFdlJ3JlIGdvaW5nIHRvIHRocm93IHRoZSBlcnJvciBmcm9tIHRoZSBtZXRhZGF0YSBvdXRsZXQgc28gd2UganVzdCByZW5kZXIgbnVsbCBoZXJlIGluc3RlYWRcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRhZ3M7XG4gICAgfVxuICAgIE1ldGFkYXRhLmRpc3BsYXlOYW1lID0gJ05leHQuTWV0YWRhdGEnO1xuICAgIGZ1bmN0aW9uIE1ldGFkYXRhV3JhcHBlcigpIHtcbiAgICAgICAgLy8gVE9ETzogV2Ugc2hvdWxkbid0IGNoYW5nZSB3aGF0IHdlIHJlbmRlciBiYXNlZCBvbiB3aGV0aGVyIHdlIGFyZSBzdHJlYW1pbmcgb3Igbm90LlxuICAgICAgICAvLyBJZiB3ZSBhcmVuJ3Qgc3RyZWFtaW5nIHdlIHNob3VsZCBqdXN0IGJsb2NrIHRoZSByZXNwb25zZSB1bnRpbCB3ZSBoYXZlIHJlc29sdmVkIHRoZVxuICAgICAgICAvLyBtZXRhZGF0YS5cbiAgICAgICAgaWYgKCFzZXJ2ZVN0cmVhbWluZ01ldGFkYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShfYm91bmRhcnljb21wb25lbnRzLk1ldGFkYXRhQm91bmRhcnksIHtcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShNZXRhZGF0YSwge30pXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcImRpdlwiLCB7XG4gICAgICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgICAgICBjaGlsZHJlbjogLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShfYm91bmRhcnljb21wb25lbnRzLk1ldGFkYXRhQm91bmRhcnksIHtcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShfcmVhY3QuU3VzcGVuc2UsIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJOZXh0Lk1ldGFkYXRhXCIsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKE1ldGFkYXRhLCB7fSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIE1ldGFkYXRhT3V0bGV0KCkge1xuICAgICAgICBjb25zdCBwZW5kaW5nT3V0bGV0ID0gUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgZ2V0UmVzb2x2ZWRNZXRhZGF0YSh0cmVlLCBwYXRobmFtZUZvck1ldGFkYXRhLCBzZWFyY2hQYXJhbXMsIGludGVycG9sYXRlZFBhcmFtcywgbWV0YWRhdGFDb250ZXh0LCBpc1J1bnRpbWVQcmVmZXRjaGFibGUsIGVycm9yVHlwZSksXG4gICAgICAgICAgICBnZXRSZXNvbHZlZFZpZXdwb3J0KHRyZWUsIHNlYXJjaFBhcmFtcywgaW50ZXJwb2xhdGVkUGFyYW1zLCBpc1J1bnRpbWVQcmVmZXRjaGFibGUsIGVycm9yVHlwZSlcbiAgICAgICAgXSkudGhlbigoKT0+bnVsbCk7XG4gICAgICAgIC8vIFRPRE86IFdlIHNob3VsZG4ndCBjaGFuZ2Ugd2hhdCB3ZSByZW5kZXIgYmFzZWQgb24gd2hldGhlciB3ZSBhcmUgc3RyZWFtaW5nIG9yIG5vdC5cbiAgICAgICAgLy8gSWYgd2UgYXJlbid0IHN0cmVhbWluZyB3ZSBzaG91bGQganVzdCBibG9jayB0aGUgcmVzcG9uc2UgdW50aWwgd2UgaGF2ZSByZXNvbHZlZCB0aGVcbiAgICAgICAgLy8gbWV0YWRhdGEuXG4gICAgICAgIGlmICghc2VydmVTdHJlYW1pbmdNZXRhZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoX2JvdW5kYXJ5Y29tcG9uZW50cy5PdXRsZXRCb3VuZGFyeSwge1xuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBwZW5kaW5nT3V0bGV0XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShfYm91bmRhcnljb21wb25lbnRzLk91dGxldEJvdW5kYXJ5LCB7XG4gICAgICAgICAgICBjaGlsZHJlbjogLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShfcmVhY3QuU3VzcGVuc2UsIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcIk5leHQuTWV0YWRhdGFPdXRsZXRcIixcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogcGVuZGluZ091dGxldFxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIE1ldGFkYXRhT3V0bGV0LmRpc3BsYXlOYW1lID0gJ05leHQuTWV0YWRhdGFPdXRsZXQnO1xuICAgIHJldHVybiB7XG4gICAgICAgIFZpZXdwb3J0OiBWaWV3cG9ydFdyYXBwZXIsXG4gICAgICAgIE1ldGFkYXRhOiBNZXRhZGF0YVdyYXBwZXIsXG4gICAgICAgIE1ldGFkYXRhT3V0bGV0XG4gICAgfTtcbn1cbmNvbnN0IGdldFJlc29sdmVkTWV0YWRhdGEgPSAoMCwgX3JlYWN0LmNhY2hlKShnZXRSZXNvbHZlZE1ldGFkYXRhSW1wbCk7XG5hc3luYyBmdW5jdGlvbiBnZXRSZXNvbHZlZE1ldGFkYXRhSW1wbCh0cmVlLCBwYXRobmFtZSwgc2VhcmNoUGFyYW1zLCBpbnRlcnBvbGF0ZWRQYXJhbXMsIG1ldGFkYXRhQ29udGV4dCwgaXNSdW50aW1lUHJlZmV0Y2hhYmxlLCBlcnJvclR5cGUpIHtcbiAgICBjb25zdCBlcnJvckNvbnZlbnRpb24gPSBlcnJvclR5cGUgPT09ICdyZWRpcmVjdCcgPyB1bmRlZmluZWQgOiBlcnJvclR5cGU7XG4gICAgcmV0dXJuIHJlbmRlck1ldGFkYXRhKHRyZWUsIHBhdGhuYW1lLCBzZWFyY2hQYXJhbXMsIGludGVycG9sYXRlZFBhcmFtcywgbWV0YWRhdGFDb250ZXh0LCBpc1J1bnRpbWVQcmVmZXRjaGFibGUsIGVycm9yQ29udmVudGlvbik7XG59XG5jb25zdCBnZXROb3RGb3VuZE1ldGFkYXRhID0gKDAsIF9yZWFjdC5jYWNoZSkoZ2V0Tm90Rm91bmRNZXRhZGF0YUltcGwpO1xuYXN5bmMgZnVuY3Rpb24gZ2V0Tm90Rm91bmRNZXRhZGF0YUltcGwodHJlZSwgcGF0aG5hbWUsIHNlYXJjaFBhcmFtcywgaW50ZXJwb2xhdGVkUGFyYW1zLCBtZXRhZGF0YUNvbnRleHQsIGlzUnVudGltZVByZWZldGNoYWJsZSkge1xuICAgIGNvbnN0IG5vdEZvdW5kRXJyb3JDb252ZW50aW9uID0gJ25vdC1mb3VuZCc7XG4gICAgcmV0dXJuIHJlbmRlck1ldGFkYXRhKHRyZWUsIHBhdGhuYW1lLCBzZWFyY2hQYXJhbXMsIGludGVycG9sYXRlZFBhcmFtcywgbWV0YWRhdGFDb250ZXh0LCBpc1J1bnRpbWVQcmVmZXRjaGFibGUsIG5vdEZvdW5kRXJyb3JDb252ZW50aW9uKTtcbn1cbmNvbnN0IGdldFJlc29sdmVkVmlld3BvcnQgPSAoMCwgX3JlYWN0LmNhY2hlKShnZXRSZXNvbHZlZFZpZXdwb3J0SW1wbCk7XG5hc3luYyBmdW5jdGlvbiBnZXRSZXNvbHZlZFZpZXdwb3J0SW1wbCh0cmVlLCBzZWFyY2hQYXJhbXMsIGludGVycG9sYXRlZFBhcmFtcywgaXNSdW50aW1lUHJlZmV0Y2hhYmxlLCBlcnJvclR5cGUpIHtcbiAgICBjb25zdCBlcnJvckNvbnZlbnRpb24gPSBlcnJvclR5cGUgPT09ICdyZWRpcmVjdCcgPyB1bmRlZmluZWQgOiBlcnJvclR5cGU7XG4gICAgcmV0dXJuIHJlbmRlclZpZXdwb3J0KHRyZWUsIHNlYXJjaFBhcmFtcywgaW50ZXJwb2xhdGVkUGFyYW1zLCBpc1J1bnRpbWVQcmVmZXRjaGFibGUsIGVycm9yQ29udmVudGlvbik7XG59XG5jb25zdCBnZXROb3RGb3VuZFZpZXdwb3J0ID0gKDAsIF9yZWFjdC5jYWNoZSkoZ2V0Tm90Rm91bmRWaWV3cG9ydEltcGwpO1xuYXN5bmMgZnVuY3Rpb24gZ2V0Tm90Rm91bmRWaWV3cG9ydEltcGwodHJlZSwgc2VhcmNoUGFyYW1zLCBpbnRlcnBvbGF0ZWRQYXJhbXMsIGlzUnVudGltZVByZWZldGNoYWJsZSkge1xuICAgIGNvbnN0IG5vdEZvdW5kRXJyb3JDb252ZW50aW9uID0gJ25vdC1mb3VuZCc7XG4gICAgcmV0dXJuIHJlbmRlclZpZXdwb3J0KHRyZWUsIHNlYXJjaFBhcmFtcywgaW50ZXJwb2xhdGVkUGFyYW1zLCBpc1J1bnRpbWVQcmVmZXRjaGFibGUsIG5vdEZvdW5kRXJyb3JDb252ZW50aW9uKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIHJlbmRlck1ldGFkYXRhKHRyZWUsIHBhdGhuYW1lLCBzZWFyY2hQYXJhbXMsIGludGVycG9sYXRlZFBhcmFtcywgbWV0YWRhdGFDb250ZXh0LCBpc1J1bnRpbWVQcmVmZXRjaGFibGUsIGVycm9yQ29udmVudGlvbikge1xuICAgIGNvbnN0IHJlc29sdmVkTWV0YWRhdGEgPSBhd2FpdCAoMCwgX3Jlc29sdmVtZXRhZGF0YS5yZXNvbHZlTWV0YWRhdGEpKHRyZWUsIHBhdGhuYW1lLCBzZWFyY2hQYXJhbXMsIGVycm9yQ29udmVudGlvbiwgaW50ZXJwb2xhdGVkUGFyYW1zLCBtZXRhZGF0YUNvbnRleHQsIGlzUnVudGltZVByZWZldGNoYWJsZSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoX2pzeHJ1bnRpbWUuRnJhZ21lbnQsIHtcbiAgICAgICAgY2hpbGRyZW46IGNyZWF0ZU1ldGFkYXRhRWxlbWVudHMocmVzb2x2ZWRNZXRhZGF0YSlcbiAgICB9KTtcbn1cbmFzeW5jIGZ1bmN0aW9uIHJlbmRlclZpZXdwb3J0KHRyZWUsIHNlYXJjaFBhcmFtcywgaW50ZXJwb2xhdGVkUGFyYW1zLCBpc1J1bnRpbWVQcmVmZXRjaGFibGUsIGVycm9yQ29udmVudGlvbikge1xuICAgIGNvbnN0IHJlc29sdmVkVmlld3BvcnQgPSBhd2FpdCAoMCwgX3Jlc29sdmVtZXRhZGF0YS5yZXNvbHZlVmlld3BvcnQpKHRyZWUsIHNlYXJjaFBhcmFtcywgZXJyb3JDb252ZW50aW9uLCBpbnRlcnBvbGF0ZWRQYXJhbXMsIGlzUnVudGltZVByZWZldGNoYWJsZSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoX2pzeHJ1bnRpbWUuRnJhZ21lbnQsIHtcbiAgICAgICAgY2hpbGRyZW46IGNyZWF0ZVZpZXdwb3J0RWxlbWVudHMocmVzb2x2ZWRWaWV3cG9ydClcbiAgICB9KTtcbn1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVmlld3BvcnQgdGFnIHJlbmRlcmluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBjcmVhdGVWaWV3cG9ydEVsZW1lbnRzKHZpZXdwb3J0KSB7XG4gICAgY29uc3QgdGFncyA9IFtdO1xuICAgIGxldCBpID0gMDtcbiAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICBjaGFyU2V0OiBcInV0Zi04XCJcbiAgICB9LCBpKyspKTtcbiAgICAvLyBCdWlsZCB2aWV3cG9ydCBjb250ZW50IHN0cmluZyBmcm9tIGxheW91dCBwcm9wZXJ0aWVzXG4gICAgY29uc3Qgdmlld3BvcnRQYXJ0cyA9IFtdO1xuICAgIGlmICh2aWV3cG9ydC53aWR0aCAhPSBudWxsKSB7XG4gICAgICAgIHZpZXdwb3J0UGFydHMucHVzaChgd2lkdGg9JHt2aWV3cG9ydC53aWR0aH1gKTtcbiAgICB9XG4gICAgaWYgKHZpZXdwb3J0LmhlaWdodCAhPSBudWxsKSB7XG4gICAgICAgIHZpZXdwb3J0UGFydHMucHVzaChgaGVpZ2h0PSR7dmlld3BvcnQuaGVpZ2h0fWApO1xuICAgIH1cbiAgICBpZiAodmlld3BvcnQuaW5pdGlhbFNjYWxlICE9IG51bGwpIHtcbiAgICAgICAgdmlld3BvcnRQYXJ0cy5wdXNoKGBpbml0aWFsLXNjYWxlPSR7dmlld3BvcnQuaW5pdGlhbFNjYWxlfWApO1xuICAgIH1cbiAgICBpZiAodmlld3BvcnQubWluaW11bVNjYWxlICE9IG51bGwpIHtcbiAgICAgICAgdmlld3BvcnRQYXJ0cy5wdXNoKGBtaW5pbXVtLXNjYWxlPSR7dmlld3BvcnQubWluaW11bVNjYWxlfWApO1xuICAgIH1cbiAgICBpZiAodmlld3BvcnQubWF4aW11bVNjYWxlICE9IG51bGwpIHtcbiAgICAgICAgdmlld3BvcnRQYXJ0cy5wdXNoKGBtYXhpbXVtLXNjYWxlPSR7dmlld3BvcnQubWF4aW11bVNjYWxlfWApO1xuICAgIH1cbiAgICBpZiAodmlld3BvcnQudXNlclNjYWxhYmxlICE9IG51bGwpIHtcbiAgICAgICAgdmlld3BvcnRQYXJ0cy5wdXNoKGB1c2VyLXNjYWxhYmxlPSR7dmlld3BvcnQudXNlclNjYWxhYmxlID8gJ3llcycgOiAnbm8nfWApO1xuICAgIH1cbiAgICBpZiAodmlld3BvcnQudmlld3BvcnRGaXQpIHtcbiAgICAgICAgdmlld3BvcnRQYXJ0cy5wdXNoKGB2aWV3cG9ydC1maXQ9JHt2aWV3cG9ydC52aWV3cG9ydEZpdH1gKTtcbiAgICB9XG4gICAgaWYgKHZpZXdwb3J0LmludGVyYWN0aXZlV2lkZ2V0KSB7XG4gICAgICAgIHZpZXdwb3J0UGFydHMucHVzaChgaW50ZXJhY3RpdmUtd2lkZ2V0PSR7dmlld3BvcnQuaW50ZXJhY3RpdmVXaWRnZXR9YCk7XG4gICAgfVxuICAgIGlmICh2aWV3cG9ydFBhcnRzLmxlbmd0aCkge1xuICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgbmFtZTogXCJ2aWV3cG9ydFwiLFxuICAgICAgICAgICAgY29udGVudDogdmlld3BvcnRQYXJ0cy5qb2luKCcsICcpXG4gICAgICAgIH0sIGkrKykpO1xuICAgIH1cbiAgICBpZiAodmlld3BvcnQudGhlbWVDb2xvcikge1xuICAgICAgICBmb3IgKGNvbnN0IHRoZW1lQ29sb3Igb2Ygdmlld3BvcnQudGhlbWVDb2xvcil7XG4gICAgICAgICAgICBpZiAodGhlbWVDb2xvci5tZWRpYSkge1xuICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwidGhlbWUtY29sb3JcIixcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogdGhlbWVDb2xvci5jb2xvcixcbiAgICAgICAgICAgICAgICAgICAgbWVkaWE6IHRoZW1lQ29sb3IubWVkaWFcbiAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJ0aGVtZS1jb2xvclwiLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiB0aGVtZUNvbG9yLmNvbG9yXG4gICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHZpZXdwb3J0LmNvbG9yU2NoZW1lKSB7XG4gICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICBuYW1lOiBcImNvbG9yLXNjaGVtZVwiLFxuICAgICAgICAgICAgY29udGVudDogdmlld3BvcnQuY29sb3JTY2hlbWVcbiAgICAgICAgfSwgaSsrKSk7XG4gICAgfVxuICAgIHJldHVybiB0YWdzO1xufVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBNZXRhZGF0YSB0YWcgcmVuZGVyaW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIGNyZWF0ZU1ldGFkYXRhRWxlbWVudHMobWV0YWRhdGEpIHtcbiAgICB2YXIgX21ldGFkYXRhX3JvYm90cywgX21ldGFkYXRhX3JvYm90czE7XG4gICAgY29uc3QgdGFncyA9IFtdO1xuICAgIGxldCBpID0gMDtcbiAgICAvLyAtLS0gVGl0bGUgLS0tXG4gICAgaWYgKG1ldGFkYXRhLnRpdGxlICE9PSBudWxsICYmIG1ldGFkYXRhLnRpdGxlLmFic29sdXRlKSB7XG4gICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwidGl0bGVcIiwge1xuICAgICAgICAgICAgY2hpbGRyZW46IG1ldGFkYXRhLnRpdGxlLmFic29sdXRlXG4gICAgICAgIH0sIGkrKykpO1xuICAgIH1cbiAgICAvLyAtLS0gQmFzaWMgbWV0YSB0YWdzIC0tLVxuICAgIGlmIChtZXRhZGF0YS5kZXNjcmlwdGlvbikge1xuICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgbmFtZTogXCJkZXNjcmlwdGlvblwiLFxuICAgICAgICAgICAgY29udGVudDogbWV0YWRhdGEuZGVzY3JpcHRpb25cbiAgICAgICAgfSwgaSsrKSk7XG4gICAgfVxuICAgIGlmIChtZXRhZGF0YS5hcHBsaWNhdGlvbk5hbWUpIHtcbiAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgIG5hbWU6IFwiYXBwbGljYXRpb24tbmFtZVwiLFxuICAgICAgICAgICAgY29udGVudDogbWV0YWRhdGEuYXBwbGljYXRpb25OYW1lXG4gICAgICAgIH0sIGkrKykpO1xuICAgIH1cbiAgICAvLyAtLS0gQXV0aG9ycyAtLS1cbiAgICBpZiAobWV0YWRhdGEuYXV0aG9ycykge1xuICAgICAgICBmb3IgKGNvbnN0IGF1dGhvciBvZiBtZXRhZGF0YS5hdXRob3JzKXtcbiAgICAgICAgICAgIGlmIChhdXRob3IudXJsKSB7XG4gICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJsaW5rXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgcmVsOiBcImF1dGhvclwiLFxuICAgICAgICAgICAgICAgICAgICBocmVmOiBhdXRob3IudXJsLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhdXRob3IubmFtZSkge1xuICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiYXV0aG9yXCIsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGF1dGhvci5uYW1lXG4gICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gLS0tIE1hbmlmZXN0IC0tLVxuICAgIGlmIChtZXRhZGF0YS5tYW5pZmVzdCkge1xuICAgICAgICBjb25zdCBtYW5pZmVzdE9yaWdpbiA9ICgwLCBfdXRpbHMuZ2V0T3JpZ2luKShtZXRhZGF0YS5tYW5pZmVzdCk7XG4gICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibGlua1wiLCB7XG4gICAgICAgICAgICByZWw6IFwibWFuaWZlc3RcIixcbiAgICAgICAgICAgIGhyZWY6IG1ldGFkYXRhLm1hbmlmZXN0LnRvU3RyaW5nKCksXG4gICAgICAgICAgICBjcm9zc09yaWdpbjogIW1hbmlmZXN0T3JpZ2luICYmIHByb2Nlc3MuZW52LlZFUkNFTF9FTlYgPT09ICdwcmV2aWV3JyA/ICd1c2UtY3JlZGVudGlhbHMnIDogdW5kZWZpbmVkXG4gICAgICAgIH0sIGkrKykpO1xuICAgIH1cbiAgICBpZiAobWV0YWRhdGEuZ2VuZXJhdG9yKSB7XG4gICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICBuYW1lOiBcImdlbmVyYXRvclwiLFxuICAgICAgICAgICAgY29udGVudDogbWV0YWRhdGEuZ2VuZXJhdG9yXG4gICAgICAgIH0sIGkrKykpO1xuICAgIH1cbiAgICBpZiAobWV0YWRhdGEua2V5d29yZHMgJiYgbWV0YWRhdGEua2V5d29yZHMubGVuZ3RoKSB7XG4gICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICBuYW1lOiBcImtleXdvcmRzXCIsXG4gICAgICAgICAgICBjb250ZW50OiBtZXRhZGF0YS5rZXl3b3Jkcy5qb2luKCcsJylcbiAgICAgICAgfSwgaSsrKSk7XG4gICAgfVxuICAgIGlmIChtZXRhZGF0YS5yZWZlcnJlcikge1xuICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgbmFtZTogXCJyZWZlcnJlclwiLFxuICAgICAgICAgICAgY29udGVudDogbWV0YWRhdGEucmVmZXJyZXJcbiAgICAgICAgfSwgaSsrKSk7XG4gICAgfVxuICAgIGlmIChtZXRhZGF0YS5jcmVhdG9yKSB7XG4gICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICBuYW1lOiBcImNyZWF0b3JcIixcbiAgICAgICAgICAgIGNvbnRlbnQ6IG1ldGFkYXRhLmNyZWF0b3JcbiAgICAgICAgfSwgaSsrKSk7XG4gICAgfVxuICAgIGlmIChtZXRhZGF0YS5wdWJsaXNoZXIpIHtcbiAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgIG5hbWU6IFwicHVibGlzaGVyXCIsXG4gICAgICAgICAgICBjb250ZW50OiBtZXRhZGF0YS5wdWJsaXNoZXJcbiAgICAgICAgfSwgaSsrKSk7XG4gICAgfVxuICAgIGlmICgoX21ldGFkYXRhX3JvYm90cyA9IG1ldGFkYXRhLnJvYm90cykgPT0gbnVsbCA/IHZvaWQgMCA6IF9tZXRhZGF0YV9yb2JvdHMuYmFzaWMpIHtcbiAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgIG5hbWU6IFwicm9ib3RzXCIsXG4gICAgICAgICAgICBjb250ZW50OiBtZXRhZGF0YS5yb2JvdHMuYmFzaWNcbiAgICAgICAgfSwgaSsrKSk7XG4gICAgfVxuICAgIGlmICgoX21ldGFkYXRhX3JvYm90czEgPSBtZXRhZGF0YS5yb2JvdHMpID09IG51bGwgPyB2b2lkIDAgOiBfbWV0YWRhdGFfcm9ib3RzMS5nb29nbGVCb3QpIHtcbiAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZ29vZ2xlYm90XCIsXG4gICAgICAgICAgICBjb250ZW50OiBtZXRhZGF0YS5yb2JvdHMuZ29vZ2xlQm90XG4gICAgICAgIH0sIGkrKykpO1xuICAgIH1cbiAgICBpZiAobWV0YWRhdGEuYWJzdHJhY3QpIHtcbiAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgIG5hbWU6IFwiYWJzdHJhY3RcIixcbiAgICAgICAgICAgIGNvbnRlbnQ6IG1ldGFkYXRhLmFic3RyYWN0XG4gICAgICAgIH0sIGkrKykpO1xuICAgIH1cbiAgICAvLyAtLS0gTGluayByZWwgYXJyYXlzIC0tLVxuICAgIGlmIChtZXRhZGF0YS5hcmNoaXZlcykge1xuICAgICAgICBmb3IgKGNvbnN0IGFyY2hpdmUgb2YgbWV0YWRhdGEuYXJjaGl2ZXMpe1xuICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJsaW5rXCIsIHtcbiAgICAgICAgICAgICAgICByZWw6IFwiYXJjaGl2ZXNcIixcbiAgICAgICAgICAgICAgICBocmVmOiBhcmNoaXZlXG4gICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAobWV0YWRhdGEuYXNzZXRzKSB7XG4gICAgICAgIGZvciAoY29uc3QgYXNzZXQgb2YgbWV0YWRhdGEuYXNzZXRzKXtcbiAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibGlua1wiLCB7XG4gICAgICAgICAgICAgICAgcmVsOiBcImFzc2V0c1wiLFxuICAgICAgICAgICAgICAgIGhyZWY6IGFzc2V0XG4gICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAobWV0YWRhdGEuYm9va21hcmtzKSB7XG4gICAgICAgIGZvciAoY29uc3QgYm9va21hcmsgb2YgbWV0YWRhdGEuYm9va21hcmtzKXtcbiAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibGlua1wiLCB7XG4gICAgICAgICAgICAgICAgcmVsOiBcImJvb2ttYXJrc1wiLFxuICAgICAgICAgICAgICAgIGhyZWY6IGJvb2ttYXJrXG4gICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyAtLS0gUGFnaW5hdGlvbiAtLS1cbiAgICBpZiAobWV0YWRhdGEucGFnaW5hdGlvbikge1xuICAgICAgICBpZiAobWV0YWRhdGEucGFnaW5hdGlvbi5wcmV2aW91cykge1xuICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJsaW5rXCIsIHtcbiAgICAgICAgICAgICAgICByZWw6IFwicHJldlwiLFxuICAgICAgICAgICAgICAgIGhyZWY6IG1ldGFkYXRhLnBhZ2luYXRpb24ucHJldmlvdXNcbiAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtZXRhZGF0YS5wYWdpbmF0aW9uLm5leHQpIHtcbiAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibGlua1wiLCB7XG4gICAgICAgICAgICAgICAgcmVsOiBcIm5leHRcIixcbiAgICAgICAgICAgICAgICBocmVmOiBtZXRhZGF0YS5wYWdpbmF0aW9uLm5leHRcbiAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChtZXRhZGF0YS5jYXRlZ29yeSkge1xuICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgbmFtZTogXCJjYXRlZ29yeVwiLFxuICAgICAgICAgICAgY29udGVudDogbWV0YWRhdGEuY2F0ZWdvcnlcbiAgICAgICAgfSwgaSsrKSk7XG4gICAgfVxuICAgIGlmIChtZXRhZGF0YS5jbGFzc2lmaWNhdGlvbikge1xuICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgbmFtZTogXCJjbGFzc2lmaWNhdGlvblwiLFxuICAgICAgICAgICAgY29udGVudDogbWV0YWRhdGEuY2xhc3NpZmljYXRpb25cbiAgICAgICAgfSwgaSsrKSk7XG4gICAgfVxuICAgIC8vIC0tLSBPdGhlciAoYXJiaXRyYXJ5IG5hbWUvdmFsdWUgcGFpcnMpIC0tLVxuICAgIGlmIChtZXRhZGF0YS5vdGhlcikge1xuICAgICAgICBmb3IgKGNvbnN0IFtuYW1lLCBjb250ZW50XSBvZiBPYmplY3QuZW50cmllcyhtZXRhZGF0YS5vdGhlcikpe1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29udGVudCkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNvbnRlbnRJdGVtIG9mIGNvbnRlbnQpe1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudEl0ZW0gIT0gbnVsbCAmJiBjb250ZW50SXRlbSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBTdHJpbmcoY29udGVudEl0ZW0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGVudCAhPSBudWxsICYmIGNvbnRlbnQgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKGNvbnRlbnQpXG4gICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gLS0tIEFsdGVybmF0ZXMgLS0tXG4gICAgaWYgKG1ldGFkYXRhLmFsdGVybmF0ZXMpIHtcbiAgICAgICAgY29uc3QgeyBjYW5vbmljYWwsIGxhbmd1YWdlcywgbWVkaWEsIHR5cGVzIH0gPSBtZXRhZGF0YS5hbHRlcm5hdGVzO1xuICAgICAgICBpZiAoY2Fub25pY2FsICYmIGNhbm9uaWNhbC51cmwpIHtcbiAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibGlua1wiLCB7XG4gICAgICAgICAgICAgICAgcmVsOiBcImNhbm9uaWNhbFwiLFxuICAgICAgICAgICAgICAgIGhyZWY6IGNhbm9uaWNhbC51cmwudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAuLi5jYW5vbmljYWwudGl0bGUgPyB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBjYW5vbmljYWwudGl0bGVcbiAgICAgICAgICAgICAgICB9IDogdW5kZWZpbmVkXG4gICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGFuZ3VhZ2VzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtsb2NhbGUsIGRlc2NyaXB0b3JzXSBvZiBPYmplY3QuZW50cmllcyhsYW5ndWFnZXMpKXtcbiAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBkZXNjcmlwdG9yIG9mIGRlc2NyaXB0b3JzKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLnVybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibGlua1wiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbDogXCJhbHRlcm5hdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZkxhbmc6IGxvY2FsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZjogZGVzY3JpcHRvci51cmwudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZGVzY3JpcHRvci50aXRsZSA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBkZXNjcmlwdG9yLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobWVkaWEpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW21lZGlhTmFtZSwgZGVzY3JpcHRvcnNdIG9mIE9iamVjdC5lbnRyaWVzKG1lZGlhKSl7XG4gICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZGVzY3JpcHRvciBvZiBkZXNjcmlwdG9ycyl7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci51cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcImxpbmtcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWw6IFwiYWx0ZXJuYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhOiBtZWRpYU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY6IGRlc2NyaXB0b3IudXJsLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmRlc2NyaXB0b3IudGl0bGUgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZGVzY3JpcHRvci50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFt0eXBlLCBkZXNjcmlwdG9yc10gb2YgT2JqZWN0LmVudHJpZXModHlwZXMpKXtcbiAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBkZXNjcmlwdG9yIG9mIGRlc2NyaXB0b3JzKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLnVybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibGlua1wiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbDogXCJhbHRlcm5hdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZjogZGVzY3JpcHRvci51cmwudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZGVzY3JpcHRvci50aXRsZSA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBkZXNjcmlwdG9yLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyAtLS0gaVR1bmVzIC0tLVxuICAgIGlmIChtZXRhZGF0YS5pdHVuZXMpIHtcbiAgICAgICAgY29uc3QgeyBhcHBJZCwgYXBwQXJndW1lbnQgfSA9IG1ldGFkYXRhLml0dW5lcztcbiAgICAgICAgbGV0IGl0dW5lc0NvbnRlbnQgPSBgYXBwLWlkPSR7YXBwSWR9YDtcbiAgICAgICAgaWYgKGFwcEFyZ3VtZW50KSB7XG4gICAgICAgICAgICBpdHVuZXNDb250ZW50ICs9IGAsIGFwcC1hcmd1bWVudD0ke2FwcEFyZ3VtZW50fWA7XG4gICAgICAgIH1cbiAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgIG5hbWU6IFwiYXBwbGUtaXR1bmVzLWFwcFwiLFxuICAgICAgICAgICAgY29udGVudDogaXR1bmVzQ29udGVudFxuICAgICAgICB9LCBpKyspKTtcbiAgICB9XG4gICAgLy8gLS0tIEZhY2Vib29rIC0tLVxuICAgIGlmIChtZXRhZGF0YS5mYWNlYm9vaykge1xuICAgICAgICBpZiAobWV0YWRhdGEuZmFjZWJvb2suYXBwSWQpIHtcbiAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgcHJvcGVydHk6IFwiZmI6YXBwX2lkXCIsXG4gICAgICAgICAgICAgICAgY29udGVudDogbWV0YWRhdGEuZmFjZWJvb2suYXBwSWRcbiAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtZXRhZGF0YS5mYWNlYm9vay5hZG1pbnMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgYWRtaW4gb2YgbWV0YWRhdGEuZmFjZWJvb2suYWRtaW5zKXtcbiAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJmYjphZG1pbnNcIixcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogYWRtaW5cbiAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyAtLS0gUGludGVyZXN0IC0tLVxuICAgIGlmIChtZXRhZGF0YS5waW50ZXJlc3QgJiYgbWV0YWRhdGEucGludGVyZXN0LnJpY2hQaW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgcHJvcGVydHk6IFwicGludGVyZXN0LXJpY2gtcGluXCIsXG4gICAgICAgICAgICBjb250ZW50OiBtZXRhZGF0YS5waW50ZXJlc3QucmljaFBpbi50b1N0cmluZygpXG4gICAgICAgIH0sIGkrKykpO1xuICAgIH1cbiAgICAvLyAtLS0gRm9ybWF0IERldGVjdGlvbiAtLS1cbiAgICBpZiAobWV0YWRhdGEuZm9ybWF0RGV0ZWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IGZvcm1hdERldGVjdGlvbktleXMgPSBbXG4gICAgICAgICAgICAndGVsZXBob25lJyxcbiAgICAgICAgICAgICdkYXRlJyxcbiAgICAgICAgICAgICdhZGRyZXNzJyxcbiAgICAgICAgICAgICdlbWFpbCcsXG4gICAgICAgICAgICAndXJsJ1xuICAgICAgICBdO1xuICAgICAgICBsZXQgZm9ybWF0Q29udGVudCA9ICcnO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBmb3JtYXREZXRlY3Rpb25LZXlzKXtcbiAgICAgICAgICAgIGlmIChtZXRhZGF0YS5mb3JtYXREZXRlY3Rpb25ba2V5XSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBpZiAoZm9ybWF0Q29udGVudCkgZm9ybWF0Q29udGVudCArPSAnLCAnO1xuICAgICAgICAgICAgICAgIGZvcm1hdENvbnRlbnQgKz0gYCR7a2V5fT1ub2A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvcm1hdENvbnRlbnQpIHtcbiAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJmb3JtYXQtZGV0ZWN0aW9uXCIsXG4gICAgICAgICAgICAgICAgY29udGVudDogZm9ybWF0Q29udGVudFxuICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gLS0tIFZlcmlmaWNhdGlvbiAtLS1cbiAgICBpZiAobWV0YWRhdGEudmVyaWZpY2F0aW9uKSB7XG4gICAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IG1ldGFkYXRhLnZlcmlmaWNhdGlvbjtcbiAgICAgICAgaWYgKHZlcmlmaWNhdGlvbi5nb29nbGUpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmVyaWZpY2F0aW9uLmdvb2dsZSl7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiYgdmFsdWUgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcImdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZlcmlmaWNhdGlvbi55YWhvbykge1xuICAgICAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiB2ZXJpZmljYXRpb24ueWFob28pe1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIHZhbHVlICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJ5X2tleVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZlcmlmaWNhdGlvbi55YW5kZXgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmVyaWZpY2F0aW9uLnlhbmRleCl7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiYgdmFsdWUgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInlhbmRleC12ZXJpZmljYXRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyh2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh2ZXJpZmljYXRpb24ubWUpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmVyaWZpY2F0aW9uLm1lKXtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiB2YWx1ZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwibWVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyh2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh2ZXJpZmljYXRpb24ub3RoZXIpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW25hbWUsIHZhbHVlc10gb2YgT2JqZWN0LmVudHJpZXModmVyaWZpY2F0aW9uLm90aGVyKSl7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpe1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiB2YWx1ZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBTdHJpbmcodmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyAtLS0gQXBwbGUgV2ViIEFwcCAtLS1cbiAgICBpZiAobWV0YWRhdGEuYXBwbGVXZWJBcHApIHtcbiAgICAgICAgY29uc3QgeyBjYXBhYmxlLCB0aXRsZSwgc3RhcnR1cEltYWdlLCBzdGF0dXNCYXJTdHlsZSB9ID0gbWV0YWRhdGEuYXBwbGVXZWJBcHA7XG4gICAgICAgIGlmIChjYXBhYmxlKSB7XG4gICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwibW9iaWxlLXdlYi1hcHAtY2FwYWJsZVwiLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwieWVzXCJcbiAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aXRsZSkge1xuICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcImFwcGxlLW1vYmlsZS13ZWItYXBwLXRpdGxlXCIsXG4gICAgICAgICAgICAgICAgY29udGVudDogdGl0bGVcbiAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFydHVwSW1hZ2UpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaW1hZ2Ugb2Ygc3RhcnR1cEltYWdlKXtcbiAgICAgICAgICAgICAgICBpZiAoaW1hZ2UubWVkaWEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJsaW5rXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY6IGltYWdlLnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhOiBpbWFnZS5tZWRpYSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbDogXCJhcHBsZS10b3VjaC1zdGFydHVwLWltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJsaW5rXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY6IGltYWdlLnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbDogXCJhcHBsZS10b3VjaC1zdGFydHVwLWltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0dXNCYXJTdHlsZSkge1xuICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcImFwcGxlLW1vYmlsZS13ZWItYXBwLXN0YXR1cy1iYXItc3R5bGVcIixcbiAgICAgICAgICAgICAgICBjb250ZW50OiBzdGF0dXNCYXJTdHlsZVxuICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gLS0tIE9wZW4gR3JhcGggLS0tXG4gICAgaWYgKG1ldGFkYXRhLm9wZW5HcmFwaCkge1xuICAgICAgICB2YXIgX29nX3RpdGxlO1xuICAgICAgICBjb25zdCBvZyA9IG1ldGFkYXRhLm9wZW5HcmFwaDtcbiAgICAgICAgaWYgKG9nLmRldGVybWluZXIpIHtcbiAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgcHJvcGVydHk6IFwib2c6ZGV0ZXJtaW5lclwiLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG9nLmRldGVybWluZXJcbiAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoX29nX3RpdGxlID0gb2cudGl0bGUpID09IG51bGwgPyB2b2lkIDAgOiBfb2dfdGl0bGUuYWJzb2x1dGUpIHtcbiAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgcHJvcGVydHk6IFwib2c6dGl0bGVcIixcbiAgICAgICAgICAgICAgICBjb250ZW50OiBvZy50aXRsZS5hYnNvbHV0ZVxuICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9nLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcIm9nOmRlc2NyaXB0aW9uXCIsXG4gICAgICAgICAgICAgICAgY29udGVudDogb2cuZGVzY3JpcHRpb25cbiAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvZy51cmwpIHtcbiAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgcHJvcGVydHk6IFwib2c6dXJsXCIsXG4gICAgICAgICAgICAgICAgY29udGVudDogb2cudXJsLnRvU3RyaW5nKClcbiAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvZy5zaXRlTmFtZSkge1xuICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJvZzpzaXRlX25hbWVcIixcbiAgICAgICAgICAgICAgICBjb250ZW50OiBvZy5zaXRlTmFtZVxuICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9nLmxvY2FsZSkge1xuICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJvZzpsb2NhbGVcIixcbiAgICAgICAgICAgICAgICBjb250ZW50OiBvZy5sb2NhbGVcbiAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvZy5jb3VudHJ5TmFtZSkge1xuICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJvZzpjb3VudHJ5X25hbWVcIixcbiAgICAgICAgICAgICAgICBjb250ZW50OiBvZy5jb3VudHJ5TmFtZVxuICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9nLnR0bCAhPSBudWxsKSB7XG4gICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcIm9nOnR0bFwiLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG9nLnR0bC50b1N0cmluZygpXG4gICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBPRyBpbWFnZXNcbiAgICAgICAgaWYgKG9nLmltYWdlcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpbWFnZSBvZiBvZy5pbWFnZXMpe1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaW1hZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJvZzppbWFnZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlLnVybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJvZzppbWFnZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyhpbWFnZS51cmwpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2Uuc2VjdXJlVXJsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcIm9nOmltYWdlOnNlY3VyZV91cmxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBTdHJpbmcoaW1hZ2Uuc2VjdXJlVXJsKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwib2c6aW1hZ2U6dHlwZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGltYWdlLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZS53aWR0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJvZzppbWFnZTp3aWR0aFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyhpbWFnZS53aWR0aClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZS5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwib2c6aW1hZ2U6aGVpZ2h0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKGltYWdlLmhlaWdodClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZS5hbHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwib2c6aW1hZ2U6YWx0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogaW1hZ2UuYWx0XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBPRyB2aWRlb3NcbiAgICAgICAgaWYgKG9nLnZpZGVvcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCB2aWRlbyBvZiBvZy52aWRlb3Mpe1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmlkZW8gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJvZzp2aWRlb1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogdmlkZW9cbiAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZpZGVvLnVybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJvZzp2aWRlb1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyh2aWRlby51cmwpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodmlkZW8uc2VjdXJlVXJsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcIm9nOnZpZGVvOnNlY3VyZV91cmxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBTdHJpbmcodmlkZW8uc2VjdXJlVXJsKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHZpZGVvLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwib2c6dmlkZW86dHlwZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHZpZGVvLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh2aWRlby53aWR0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJvZzp2aWRlbzp3aWR0aFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyh2aWRlby53aWR0aClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh2aWRlby5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwib2c6dmlkZW86aGVpZ2h0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKHZpZGVvLmhlaWdodClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIE9HIGF1ZGlvXG4gICAgICAgIGlmIChvZy5hdWRpbykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBhdWRpbyBvZiBvZy5hdWRpbyl7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhdWRpbyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcIm9nOmF1ZGlvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBhdWRpb1xuICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXVkaW8udXJsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcIm9nOmF1ZGlvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKGF1ZGlvLnVybClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChhdWRpby5zZWN1cmVVcmwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwib2c6YXVkaW86c2VjdXJlX3VybFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyhhdWRpby5zZWN1cmVVcmwpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYXVkaW8udHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJvZzphdWRpbzp0eXBlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogYXVkaW8udHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gT0cgc2ltcGxlIGFycmF5IHByb3BlcnRpZXNcbiAgICAgICAgaWYgKG9nLmVtYWlscykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBlbWFpbCBvZiBvZy5lbWFpbHMpe1xuICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcIm9nOmVtYWlsXCIsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGVtYWlsXG4gICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9nLnBob25lTnVtYmVycykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBwaG9uZSBvZiBvZy5waG9uZU51bWJlcnMpe1xuICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcIm9nOnBob25lX251bWJlclwiLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBwaG9uZVxuICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChvZy5mYXhOdW1iZXJzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZheCBvZiBvZy5mYXhOdW1iZXJzKXtcbiAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJvZzpmYXhfbnVtYmVyXCIsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGZheFxuICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChvZy5hbHRlcm5hdGVMb2NhbGUpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbG9jYWxlIG9mIG9nLmFsdGVybmF0ZUxvY2FsZSl7XG4gICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwib2c6bG9jYWxlOmFsdGVybmF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBsb2NhbGVcbiAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBPRyB0eXBlLXNwZWNpZmljIHRhZ3NcbiAgICAgICAgaWYgKCd0eXBlJyBpbiBvZykge1xuICAgICAgICAgICAgY29uc3Qgb2dUeXBlID0gb2cudHlwZTtcbiAgICAgICAgICAgIHN3aXRjaChvZ1R5cGUpe1xuICAgICAgICAgICAgICAgIGNhc2UgJ3dlYnNpdGUnOlxuICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwib2c6dHlwZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJ3ZWJzaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2FydGljbGUnOlxuICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwib2c6dHlwZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJhcnRpY2xlXCJcbiAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvZy5wdWJsaXNoZWRUaW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcImFydGljbGU6cHVibGlzaGVkX3RpbWVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBvZy5wdWJsaXNoZWRUaW1lLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvZy5tb2RpZmllZFRpbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwiYXJ0aWNsZTptb2RpZmllZF90aW1lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogb2cubW9kaWZpZWRUaW1lLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvZy5leHBpcmF0aW9uVGltZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJhcnRpY2xlOmV4cGlyYXRpb25fdGltZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG9nLmV4cGlyYXRpb25UaW1lLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvZy5hdXRob3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dGhvciBvZiBvZy5hdXRob3JzKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJhcnRpY2xlOmF1dGhvclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBTdHJpbmcoYXV0aG9yKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvZy5zZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcImFydGljbGU6c2VjdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG9nLnNlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvZy50YWdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHRhZyBvZiBvZy50YWdzKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJhcnRpY2xlOnRhZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiB0YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdib29rJzpcbiAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcIm9nOnR5cGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiYm9va1wiXG4gICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICBpZiAob2cuaXNibikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJib29rOmlzYm5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBvZy5pc2JuXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob2cucmVsZWFzZURhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwiYm9vazpyZWxlYXNlX2RhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBvZy5yZWxlYXNlRGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9nLmF1dGhvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0aG9yIG9mIG9nLmF1dGhvcnMpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcImJvb2s6YXV0aG9yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyhhdXRob3IpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9nLnRhZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdGFnIG9mIG9nLnRhZ3Mpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcImJvb2s6dGFnXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHRhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3Byb2ZpbGUnOlxuICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwib2c6dHlwZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJwcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvZy5maXJzdE5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwicHJvZmlsZTpmaXJzdF9uYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogb2cuZmlyc3ROYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob2cubGFzdE5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwicHJvZmlsZTpsYXN0X25hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBvZy5sYXN0TmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9nLnVzZXJuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcInByb2ZpbGU6dXNlcm5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBvZy51c2VybmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9nLmdlbmRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJwcm9maWxlOmdlbmRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG9nLmdlbmRlclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbXVzaWMuc29uZyc6XG4gICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJvZzp0eXBlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIm11c2ljLnNvbmdcIlxuICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9nLmR1cmF0aW9uICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwibXVzaWM6ZHVyYXRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBvZy5kdXJhdGlvbi50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob2cuYWxidW1zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGFsYnVtIG9mIG9nLmFsYnVtcyl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhbGJ1bSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcIm11c2ljOmFsYnVtXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBhbGJ1bVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWxidW0udXJsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcIm11c2ljOmFsYnVtXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKGFsYnVtLnVybClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhbGJ1bS5kaXNjICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwibXVzaWM6YWxidW06ZGlzY1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyhhbGJ1bS5kaXNjKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsYnVtLnRyYWNrICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwibXVzaWM6YWxidW06dHJhY2tcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBTdHJpbmcoYWxidW0udHJhY2spXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob2cubXVzaWNpYW5zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG11c2ljaWFuIG9mIG9nLm11c2ljaWFucyl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwibXVzaWM6bXVzaWNpYW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKG11c2ljaWFuKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ211c2ljLmFsYnVtJzpcbiAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcIm9nOnR5cGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwibXVzaWMuYWxidW1cIlxuICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9nLnNvbmdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHNvbmcgb2Ygb2cuc29uZ3Mpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc29uZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcIm11c2ljOnNvbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHNvbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNvbmcudXJsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcIm11c2ljOnNvbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBTdHJpbmcoc29uZy51cmwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc29uZy5kaXNjICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwibXVzaWM6c29uZzpkaXNjXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKHNvbmcuZGlzYylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzb25nLnRyYWNrICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwibXVzaWM6c29uZzp0cmFja1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyhzb25nLnRyYWNrKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9nLm11c2ljaWFucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBtdXNpY2lhbiBvZiBvZy5tdXNpY2lhbnMpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcIm11c2ljOm11c2ljaWFuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyhtdXNpY2lhbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob2cucmVsZWFzZURhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwibXVzaWM6cmVsZWFzZV9kYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogb2cucmVsZWFzZURhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ211c2ljLnBsYXlsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcIm9nOnR5cGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwibXVzaWMucGxheWxpc3RcIlxuICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9nLnNvbmdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHNvbmcgb2Ygb2cuc29uZ3Mpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc29uZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcIm11c2ljOnNvbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHNvbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNvbmcudXJsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcIm11c2ljOnNvbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBTdHJpbmcoc29uZy51cmwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc29uZy5kaXNjICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwibXVzaWM6c29uZzpkaXNjXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKHNvbmcuZGlzYylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzb25nLnRyYWNrICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwibXVzaWM6c29uZzp0cmFja1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyhzb25nLnRyYWNrKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9nLmNyZWF0b3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNyZWF0b3Igb2Ygb2cuY3JlYXRvcnMpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcIm11c2ljOmNyZWF0b3JcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKGNyZWF0b3IpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbXVzaWMucmFkaW9fc3RhdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJvZzp0eXBlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIm11c2ljLnJhZGlvX3N0YXRpb25cIlxuICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9nLmNyZWF0b3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNyZWF0b3Igb2Ygb2cuY3JlYXRvcnMpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcIm11c2ljOmNyZWF0b3JcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKGNyZWF0b3IpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAndmlkZW8ubW92aWUnOlxuICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwib2c6dHlwZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJ2aWRlby5tb3ZpZVwiXG4gICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICBpZiAob2cuYWN0b3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGFjdG9yIG9mIG9nLmFjdG9ycyl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhY3RvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcInZpZGVvOmFjdG9yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBhY3RvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0b3IudXJsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcInZpZGVvOmFjdG9yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKGFjdG9yLnVybClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3Rvci5yb2xlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcInZpZGVvOmFjdG9yOnJvbGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBhY3Rvci5yb2xlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob2cuZGlyZWN0b3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRpcmVjdG9yIG9mIG9nLmRpcmVjdG9ycyl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwidmlkZW86ZGlyZWN0b3JcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKGRpcmVjdG9yKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvZy53cml0ZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHdyaXRlciBvZiBvZy53cml0ZXJzKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJ2aWRlbzp3cml0ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKHdyaXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob2cuZHVyYXRpb24gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJ2aWRlbzpkdXJhdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyhvZy5kdXJhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvZy5yZWxlYXNlRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJ2aWRlbzpyZWxlYXNlX2RhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBvZy5yZWxlYXNlRGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9nLnRhZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdGFnIG9mIG9nLnRhZ3Mpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcInZpZGVvOnRhZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiB0YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd2aWRlby5lcGlzb2RlJzpcbiAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcIm9nOnR5cGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwidmlkZW8uZXBpc29kZVwiXG4gICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICBpZiAob2cuYWN0b3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGFjdG9yIG9mIG9nLmFjdG9ycyl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhY3RvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcInZpZGVvOmFjdG9yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBhY3RvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0b3IudXJsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcInZpZGVvOmFjdG9yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKGFjdG9yLnVybClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3Rvci5yb2xlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcInZpZGVvOmFjdG9yOnJvbGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBhY3Rvci5yb2xlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob2cuZGlyZWN0b3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRpcmVjdG9yIG9mIG9nLmRpcmVjdG9ycyl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwidmlkZW86ZGlyZWN0b3JcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKGRpcmVjdG9yKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvZy53cml0ZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHdyaXRlciBvZiBvZy53cml0ZXJzKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJ2aWRlbzp3cml0ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKHdyaXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob2cuZHVyYXRpb24gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJ2aWRlbzpkdXJhdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyhvZy5kdXJhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvZy5yZWxlYXNlRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJ2aWRlbzpyZWxlYXNlX2RhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBvZy5yZWxlYXNlRGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9nLnRhZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdGFnIG9mIG9nLnRhZ3Mpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcInZpZGVvOnRhZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiB0YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob2cuc2VyaWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcInZpZGVvOnNlcmllc1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyhvZy5zZXJpZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd2aWRlby50dl9zaG93JzpcbiAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcIm9nOnR5cGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwidmlkZW8udHZfc2hvd1wiXG4gICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd2aWRlby5vdGhlcic6XG4gICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJvZzp0eXBlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcInZpZGVvLm90aGVyXCJcbiAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IF9leGhhdXN0aXZlQ2hlY2sgPSBvZ1R5cGU7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoYEludmFsaWQgT3BlbkdyYXBoIHR5cGU6ICR7X2V4aGF1c3RpdmVDaGVja31gKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMjM3XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyAtLS0gVHdpdHRlciAtLS1cbiAgICBpZiAobWV0YWRhdGEudHdpdHRlcikge1xuICAgICAgICB2YXIgX3R3X3RpdGxlO1xuICAgICAgICBjb25zdCB0dyA9IG1ldGFkYXRhLnR3aXR0ZXI7XG4gICAgICAgIGNvbnN0IHsgY2FyZCB9ID0gdHc7XG4gICAgICAgIGlmIChjYXJkKSB7XG4gICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwidHdpdHRlcjpjYXJkXCIsXG4gICAgICAgICAgICAgICAgY29udGVudDogY2FyZFxuICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR3LnNpdGUpIHtcbiAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJ0d2l0dGVyOnNpdGVcIixcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0dy5zaXRlXG4gICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHcuc2l0ZUlkKSB7XG4gICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwidHdpdHRlcjpzaXRlOmlkXCIsXG4gICAgICAgICAgICAgICAgY29udGVudDogdHcuc2l0ZUlkXG4gICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHcuY3JlYXRvcikge1xuICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcInR3aXR0ZXI6Y3JlYXRvclwiLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHR3LmNyZWF0b3JcbiAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0dy5jcmVhdG9ySWQpIHtcbiAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJ0d2l0dGVyOmNyZWF0b3I6aWRcIixcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0dy5jcmVhdG9ySWRcbiAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoX3R3X3RpdGxlID0gdHcudGl0bGUpID09IG51bGwgPyB2b2lkIDAgOiBfdHdfdGl0bGUuYWJzb2x1dGUpIHtcbiAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJ0d2l0dGVyOnRpdGxlXCIsXG4gICAgICAgICAgICAgICAgY29udGVudDogdHcudGl0bGUuYWJzb2x1dGVcbiAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0dy5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcInR3aXR0ZXI6ZGVzY3JpcHRpb25cIixcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0dy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVHdpdHRlciBpbWFnZXNcbiAgICAgICAgaWYgKHR3LmltYWdlcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpbWFnZSBvZiB0dy5pbWFnZXMpe1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaW1hZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInR3aXR0ZXI6aW1hZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGltYWdlXG4gICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZS51cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJ0d2l0dGVyOmltYWdlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKGltYWdlLnVybClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZS5hbHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJ0d2l0dGVyOmltYWdlOmFsdFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGltYWdlLmFsdFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlLnNlY3VyZVVybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInR3aXR0ZXI6aW1hZ2U6c2VjdXJlX3VybFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyhpbWFnZS5zZWN1cmVVcmwpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInR3aXR0ZXI6aW1hZ2U6dHlwZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGltYWdlLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZS53aWR0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInR3aXR0ZXI6aW1hZ2U6d2lkdGhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBTdHJpbmcoaW1hZ2Uud2lkdGgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwidHdpdHRlcjppbWFnZTpoZWlnaHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBTdHJpbmcoaW1hZ2UuaGVpZ2h0KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gVHdpdHRlciBwbGF5ZXIgY2FyZHNcbiAgICAgICAgaWYgKGNhcmQgPT09ICdwbGF5ZXInKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBsYXllciBvZiB0dy5wbGF5ZXJzKXtcbiAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInR3aXR0ZXI6cGxheWVyXCIsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHBsYXllci5wbGF5ZXJVcmwudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwidHdpdHRlcjpwbGF5ZXI6c3RyZWFtXCIsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHBsYXllci5zdHJlYW1VcmwudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwidHdpdHRlcjpwbGF5ZXI6d2lkdGhcIixcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKHBsYXllci53aWR0aClcbiAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInR3aXR0ZXI6cGxheWVyOmhlaWdodFwiLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBTdHJpbmcocGxheWVyLmhlaWdodClcbiAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBUd2l0dGVyIGFwcCBjYXJkc1xuICAgICAgICBpZiAoY2FyZCA9PT0gJ2FwcCcpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgYXBwIH0gPSB0dztcbiAgICAgICAgICAgIGZvciAoY29uc3QgcGxhdGZvcm0gb2YgW1xuICAgICAgICAgICAgICAgICdpcGhvbmUnLFxuICAgICAgICAgICAgICAgICdpcGFkJyxcbiAgICAgICAgICAgICAgICAnZ29vZ2xlcGxheSdcbiAgICAgICAgICAgIF0pe1xuICAgICAgICAgICAgICAgIHZhciBfYXBwX3VybDtcbiAgICAgICAgICAgICAgICBpZiAoYXBwLm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGB0d2l0dGVyOmFwcDpuYW1lOiR7cGxhdGZvcm19YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGFwcC5uYW1lXG4gICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYXBwLmlkW3BsYXRmb3JtXSkge1xuICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYHR3aXR0ZXI6YXBwOmlkOiR7cGxhdGZvcm19YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyhhcHAuaWRbcGxhdGZvcm1dKVxuICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKChfYXBwX3VybCA9IGFwcC51cmwpID09IG51bGwgPyB2b2lkIDAgOiBfYXBwX3VybFtwbGF0Zm9ybV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGB0d2l0dGVyOmFwcDp1cmw6JHtwbGF0Zm9ybX1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogYXBwLnVybFtwbGF0Zm9ybV0udG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gLS0tIEFwcCBMaW5rcyAtLS1cbiAgICBpZiAobWV0YWRhdGEuYXBwTGlua3MpIHtcbiAgICAgICAgY29uc3QgYXBwTGlua3MgPSBtZXRhZGF0YS5hcHBMaW5rcztcbiAgICAgICAgLy8gaU9TIC8gaVBob25lIC8gaVBhZCAoQXBwTGlua3NBcHBsZTogdXJsLCBhcHBfc3RvcmVfaWQsIGFwcF9uYW1lKVxuICAgICAgICBpZiAoYXBwTGlua3MuaW9zKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXBwTGlua3MuaW9zKXtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS51cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcImFsOmlvczp1cmxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyhpdGVtLnVybClcbiAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpdGVtLmFwcF9zdG9yZV9pZCkge1xuICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwiYWw6aW9zOmFwcF9zdG9yZV9pZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKGl0ZW0uYXBwX3N0b3JlX2lkKVxuICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uYXBwX25hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcImFsOmlvczphcHBfbmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogaXRlbS5hcHBfbmFtZVxuICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFwcExpbmtzLmlwaG9uZSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGFwcExpbmtzLmlwaG9uZSl7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udXJsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJhbDppcGhvbmU6dXJsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBTdHJpbmcoaXRlbS51cmwpXG4gICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5hcHBfc3RvcmVfaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcImFsOmlwaG9uZTphcHBfc3RvcmVfaWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyhpdGVtLmFwcF9zdG9yZV9pZClcbiAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpdGVtLmFwcF9uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJhbDppcGhvbmU6YXBwX25hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGl0ZW0uYXBwX25hbWVcbiAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChhcHBMaW5rcy5pcGFkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXBwTGlua3MuaXBhZCl7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udXJsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJhbDppcGFkOnVybFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKGl0ZW0udXJsKVxuICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uYXBwX3N0b3JlX2lkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJhbDppcGFkOmFwcF9zdG9yZV9pZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKGl0ZW0uYXBwX3N0b3JlX2lkKVxuICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uYXBwX25hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcImFsOmlwYWQ6YXBwX25hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGl0ZW0uYXBwX25hbWVcbiAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEFuZHJvaWQgKEFwcExpbmtzQW5kcm9pZDogcGFja2FnZSwgdXJsLCBjbGFzcywgYXBwX25hbWUpXG4gICAgICAgIGlmIChhcHBMaW5rcy5hbmRyb2lkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXBwTGlua3MuYW5kcm9pZCl7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0ucGFja2FnZSkge1xuICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwiYWw6YW5kcm9pZDpwYWNrYWdlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBpdGVtLnBhY2thZ2VcbiAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpdGVtLnVybCkge1xuICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwiYWw6YW5kcm9pZDp1cmxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyhpdGVtLnVybClcbiAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpdGVtLmNsYXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJhbDphbmRyb2lkOmNsYXNzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBpdGVtLmNsYXNzXG4gICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5hcHBfbmFtZSkge1xuICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwiYWw6YW5kcm9pZDphcHBfbmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogaXRlbS5hcHBfbmFtZVxuICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gV2luZG93cyBQaG9uZSAoQXBwTGlua3NXaW5kb3dzOiB1cmwsIGFwcF9pZCwgYXBwX25hbWUpXG4gICAgICAgIGlmIChhcHBMaW5rcy53aW5kb3dzX3Bob25lKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXBwTGlua3Mud2luZG93c19waG9uZSl7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udXJsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJhbDp3aW5kb3dzX3Bob25lOnVybFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKGl0ZW0udXJsKVxuICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uYXBwX2lkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJhbDp3aW5kb3dzX3Bob25lOmFwcF9pZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogaXRlbS5hcHBfaWRcbiAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpdGVtLmFwcF9uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJhbDp3aW5kb3dzX3Bob25lOmFwcF9uYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBpdGVtLmFwcF9uYW1lXG4gICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBXaW5kb3dzIChBcHBMaW5rc1dpbmRvd3M6IHVybCwgYXBwX2lkLCBhcHBfbmFtZSlcbiAgICAgICAgaWYgKGFwcExpbmtzLndpbmRvd3MpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBhcHBMaW5rcy53aW5kb3dzKXtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS51cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcImFsOndpbmRvd3M6dXJsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBTdHJpbmcoaXRlbS51cmwpXG4gICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5hcHBfaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcImFsOndpbmRvd3M6YXBwX2lkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBpdGVtLmFwcF9pZFxuICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uYXBwX25hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcImFsOndpbmRvd3M6YXBwX25hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGl0ZW0uYXBwX25hbWVcbiAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIFdpbmRvd3MgVW5pdmVyc2FsIChBcHBMaW5rc1dpbmRvd3M6IHVybCwgYXBwX2lkLCBhcHBfbmFtZSlcbiAgICAgICAgaWYgKGFwcExpbmtzLndpbmRvd3NfdW5pdmVyc2FsKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXBwTGlua3Mud2luZG93c191bml2ZXJzYWwpe1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLnVybCkge1xuICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwiYWw6d2luZG93c191bml2ZXJzYWw6dXJsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBTdHJpbmcoaXRlbS51cmwpXG4gICAgICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5hcHBfaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcImFsOndpbmRvd3NfdW5pdmVyc2FsOmFwcF9pZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogaXRlbS5hcHBfaWRcbiAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpdGVtLmFwcF9uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJhbDp3aW5kb3dzX3VuaXZlcnNhbDphcHBfbmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogaXRlbS5hcHBfbmFtZVxuICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gV2ViIChBcHBMaW5rc1dlYjogdXJsLCBzaG91bGRfZmFsbGJhY2spXG4gICAgICAgIGlmIChhcHBMaW5rcy53ZWIpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBhcHBMaW5rcy53ZWIpe1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLnVybCkge1xuICAgICAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwiYWw6d2ViOnVybFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogU3RyaW5nKGl0ZW0udXJsKVxuICAgICAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uc2hvdWxkX2ZhbGxiYWNrICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcImFsOndlYjpzaG91bGRfZmFsbGJhY2tcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyhpdGVtLnNob3VsZF9mYWxsYmFjaylcbiAgICAgICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIC0tLSBJY29ucyAtLS1cbiAgICBpZiAobWV0YWRhdGEuaWNvbnMpIHtcbiAgICAgICAgY29uc3QgeyBzaG9ydGN1dCwgaWNvbiwgYXBwbGUsIG90aGVyIH0gPSBtZXRhZGF0YS5pY29ucztcbiAgICAgICAgY29uc3QgaGFzSWNvbiA9IEJvb2xlYW4oKHNob3J0Y3V0ID09IG51bGwgPyB2b2lkIDAgOiBzaG9ydGN1dC5sZW5ndGgpIHx8IChpY29uID09IG51bGwgPyB2b2lkIDAgOiBpY29uLmxlbmd0aCkgfHwgKGFwcGxlID09IG51bGwgPyB2b2lkIDAgOiBhcHBsZS5sZW5ndGgpIHx8IChvdGhlciA9PSBudWxsID8gdm9pZCAwIDogb3RoZXIubGVuZ3RoKSk7XG4gICAgICAgIGlmIChzaG9ydGN1dCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpYyBvZiBzaG9ydGN1dCl7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB1cmwsIHJlbCwgLi4ucHJvcHMgfSA9IGljO1xuICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibGlua1wiLCB7XG4gICAgICAgICAgICAgICAgICAgIHJlbDogcmVsIHx8ICdzaG9ydGN1dCBpY29uJyxcbiAgICAgICAgICAgICAgICAgICAgaHJlZjogdXJsLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgIC4uLnByb3BzXG4gICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGljb24pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaWMgb2YgaWNvbil7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB1cmwsIHJlbCwgLi4ucHJvcHMgfSA9IGljO1xuICAgICAgICAgICAgICAgIHRhZ3MucHVzaCgvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibGlua1wiLCB7XG4gICAgICAgICAgICAgICAgICAgIHJlbDogcmVsIHx8ICdpY29uJyxcbiAgICAgICAgICAgICAgICAgICAgaHJlZjogdXJsLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgIC4uLnByb3BzXG4gICAgICAgICAgICAgICAgfSwgaSsrKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFwcGxlKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGljIG9mIGFwcGxlKXtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHVybCwgcmVsLCAuLi5wcm9wcyB9ID0gaWM7XG4gICAgICAgICAgICAgICAgdGFncy5wdXNoKC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJsaW5rXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgcmVsOiByZWwgfHwgJ2FwcGxlLXRvdWNoLWljb24nLFxuICAgICAgICAgICAgICAgICAgICBocmVmOiB1cmwudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgLi4ucHJvcHNcbiAgICAgICAgICAgICAgICB9LCBpKyspKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAob3RoZXIpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaWMgb2Ygb3RoZXIpe1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgdXJsLCByZWwsIC4uLnByb3BzIH0gPSBpYztcbiAgICAgICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcImxpbmtcIiwge1xuICAgICAgICAgICAgICAgICAgICByZWw6IHJlbCB8fCAnaWNvbicsXG4gICAgICAgICAgICAgICAgICAgIGhyZWY6IHVybC50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAuLi5wcm9wc1xuICAgICAgICAgICAgICAgIH0sIGkrKykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChoYXNJY29uKSB7XG4gICAgICAgICAgICB0YWdzLnB1c2goLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShfaWNvbm1hcmsuSWNvbk1hcmssIHt9LCBpKyspKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGFncztcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWV0YWRhdGEuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/metadata.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/lib/metadata/resolve-metadata.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/metadata/resolve-metadata.js ***!
|
||
\*****************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n accumulateMetadata: function() {\n return accumulateMetadata;\n },\n accumulateViewport: function() {\n return accumulateViewport;\n },\n resolveMetadata: function() {\n return resolveMetadata;\n },\n resolveViewport: function() {\n return resolveViewport;\n }\n});\nconst _getsegmentparam = __webpack_require__(/*! ../../shared/lib/router/utils/get-segment-param */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/get-segment-param.js\");\nconst _workasyncstorageexternal = __webpack_require__(/*! ../../server/app-render/work-async-storage.external */ \"../app-render/work-async-storage.external\");\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(rsc)/./node_modules/next/dist/shared/lib/invariant-error.js\");\n__webpack_require__(/*! server-only */ \"(rsc)/./node_modules/next/dist/compiled/server-only/empty.js\");\nconst _react = __webpack_require__(/*! react */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js\");\nconst _defaultmetadata = __webpack_require__(/*! ./default-metadata */ \"(rsc)/./node_modules/next/dist/lib/metadata/default-metadata.js\");\nconst _resolveopengraph = __webpack_require__(/*! ./resolvers/resolve-opengraph */ \"(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-opengraph.js\");\nconst _resolvetitle = __webpack_require__(/*! ./resolvers/resolve-title */ \"(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-title.js\");\nconst _utils = __webpack_require__(/*! ./generate/utils */ \"(rsc)/./node_modules/next/dist/lib/metadata/generate/utils.js\");\nconst _appdirmodule = __webpack_require__(/*! ../../server/lib/app-dir-module */ \"(rsc)/./node_modules/next/dist/server/lib/app-dir-module.js\");\nconst _resolvebasics = __webpack_require__(/*! ./resolvers/resolve-basics */ \"(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-basics.js\");\nconst _resolveicons = __webpack_require__(/*! ./resolvers/resolve-icons */ \"(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-icons.js\");\nconst _tracer = __webpack_require__(/*! ../../server/lib/trace/tracer */ \"(rsc)/./node_modules/next/dist/server/lib/trace/tracer.js\");\nconst _constants = __webpack_require__(/*! ../../server/lib/trace/constants */ \"(rsc)/./node_modules/next/dist/server/lib/trace/constants.js\");\nconst _segment = __webpack_require__(/*! ../../shared/lib/segment */ \"(rsc)/./node_modules/next/dist/shared/lib/segment.js\");\nconst _log = /*#__PURE__*/ _interop_require_wildcard(__webpack_require__(/*! ../../build/output/log */ \"(rsc)/./node_modules/next/dist/build/output/log.js\"));\nconst _params = __webpack_require__(/*! ../../server/request/params */ \"(rsc)/./node_modules/next/dist/server/request/params.js\");\nconst _clientandserverreferences = __webpack_require__(/*! ../client-and-server-references */ \"(rsc)/./node_modules/next/dist/lib/client-and-server-references.js\");\nconst _lazyresult = __webpack_require__(/*! ../../server/lib/lazy-result */ \"(rsc)/./node_modules/next/dist/server/lib/lazy-result.js\");\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {\n __proto__: null\n };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction isFavicon(icon) {\n if (!icon) {\n return false;\n }\n // turbopack appends a hash to all images\n return (icon.url === '/favicon.ico' || icon.url.toString().startsWith('/favicon.ico?')) && icon.type === 'image/x-icon';\n}\nfunction convertUrlsToStrings(input) {\n if (input instanceof URL) {\n return input.toString();\n } else if (Array.isArray(input)) {\n return input.map((item)=>convertUrlsToStrings(item));\n } else if (input && typeof input === 'object') {\n const result = {};\n for (const [key, value] of Object.entries(input)){\n result[key] = convertUrlsToStrings(value);\n }\n return result;\n }\n return input;\n}\nfunction normalizeMetadataBase(metadataBase) {\n if (typeof metadataBase === 'string') {\n try {\n metadataBase = new URL(metadataBase);\n } catch {\n throw Object.defineProperty(new Error(`metadataBase is not a valid URL: ${metadataBase}`), \"__NEXT_ERROR_CODE\", {\n value: \"E850\",\n enumerable: false,\n configurable: true\n });\n }\n }\n return metadataBase;\n}\nasync function mergeStaticMetadata(metadataBase, source, target, staticFilesMetadata, metadataContext, titleTemplates, leafSegmentStaticIcons, pathname) {\n var _source_twitter, _source_openGraph;\n if (!staticFilesMetadata) return target;\n const { icon, apple, openGraph, twitter, manifest } = staticFilesMetadata;\n // Keep updating the static icons in the most leaf node\n if (icon) {\n leafSegmentStaticIcons.icon = icon;\n }\n if (apple) {\n leafSegmentStaticIcons.apple = apple;\n }\n // file based metadata is specified and current level metadata twitter.images is not specified\n if (twitter && !(source == null ? void 0 : (_source_twitter = source.twitter) == null ? void 0 : _source_twitter.hasOwnProperty('images'))) {\n const resolvedTwitter = (0, _resolveopengraph.resolveTwitter)({\n ...target.twitter,\n images: twitter\n }, metadataBase, {\n ...metadataContext,\n isStaticMetadataRouteFile: true\n }, titleTemplates.twitter);\n target.twitter = convertUrlsToStrings(resolvedTwitter);\n }\n // file based metadata is specified and current level metadata openGraph.images is not specified\n if (openGraph && !(source == null ? void 0 : (_source_openGraph = source.openGraph) == null ? void 0 : _source_openGraph.hasOwnProperty('images'))) {\n const resolvedOpenGraph = await (0, _resolveopengraph.resolveOpenGraph)({\n ...target.openGraph,\n images: openGraph\n }, metadataBase, pathname, {\n ...metadataContext,\n isStaticMetadataRouteFile: true\n }, titleTemplates.openGraph);\n target.openGraph = convertUrlsToStrings(resolvedOpenGraph);\n }\n if (manifest) {\n target.manifest = manifest;\n }\n return target;\n}\n/**\n * Merges the given metadata with the resolved metadata. Returns a new object.\n */ async function mergeMetadata(route, pathname, { metadata, resolvedMetadata, staticFilesMetadata, titleTemplates, metadataContext, buildState, leafSegmentStaticIcons }) {\n const newResolvedMetadata = structuredClone(resolvedMetadata);\n const metadataBase = normalizeMetadataBase((metadata == null ? void 0 : metadata.metadataBase) !== undefined ? metadata.metadataBase : resolvedMetadata.metadataBase);\n for(const key_ in metadata){\n const key = key_;\n switch(key){\n case 'title':\n {\n newResolvedMetadata.title = (0, _resolvetitle.resolveTitle)(metadata.title, titleTemplates.title);\n break;\n }\n case 'alternates':\n {\n newResolvedMetadata.alternates = convertUrlsToStrings(await (0, _resolvebasics.resolveAlternates)(metadata.alternates, metadataBase, pathname, metadataContext));\n break;\n }\n case 'openGraph':\n {\n newResolvedMetadata.openGraph = convertUrlsToStrings(await (0, _resolveopengraph.resolveOpenGraph)(metadata.openGraph, metadataBase, pathname, metadataContext, titleTemplates.openGraph));\n break;\n }\n case 'twitter':\n {\n newResolvedMetadata.twitter = convertUrlsToStrings((0, _resolveopengraph.resolveTwitter)(metadata.twitter, metadataBase, metadataContext, titleTemplates.twitter));\n break;\n }\n case 'facebook':\n newResolvedMetadata.facebook = (0, _resolvebasics.resolveFacebook)(metadata.facebook);\n break;\n case 'verification':\n newResolvedMetadata.verification = (0, _resolvebasics.resolveVerification)(metadata.verification);\n break;\n case 'icons':\n {\n newResolvedMetadata.icons = convertUrlsToStrings((0, _resolveicons.resolveIcons)(metadata.icons));\n break;\n }\n case 'appleWebApp':\n newResolvedMetadata.appleWebApp = (0, _resolvebasics.resolveAppleWebApp)(metadata.appleWebApp);\n break;\n case 'appLinks':\n newResolvedMetadata.appLinks = convertUrlsToStrings((0, _resolvebasics.resolveAppLinks)(metadata.appLinks));\n break;\n case 'robots':\n {\n newResolvedMetadata.robots = (0, _resolvebasics.resolveRobots)(metadata.robots);\n break;\n }\n case 'archives':\n case 'assets':\n case 'bookmarks':\n case 'keywords':\n {\n newResolvedMetadata[key] = (0, _utils.resolveAsArrayOrUndefined)(metadata[key]);\n break;\n }\n case 'authors':\n {\n newResolvedMetadata[key] = convertUrlsToStrings((0, _utils.resolveAsArrayOrUndefined)(metadata.authors));\n break;\n }\n case 'itunes':\n {\n newResolvedMetadata[key] = await (0, _resolvebasics.resolveItunes)(metadata.itunes, metadataBase, pathname, metadataContext);\n break;\n }\n case 'pagination':\n {\n newResolvedMetadata.pagination = await (0, _resolvebasics.resolvePagination)(metadata.pagination, metadataBase, pathname, metadataContext);\n break;\n }\n // directly assign fields that fallback to null\n case 'abstract':\n newResolvedMetadata[key] = metadata[key] ?? null;\n break;\n case 'applicationName':\n newResolvedMetadata[key] = metadata[key] ?? null;\n break;\n case 'description':\n newResolvedMetadata[key] = metadata[key] ?? null;\n break;\n case 'generator':\n newResolvedMetadata[key] = metadata[key] ?? null;\n break;\n case 'creator':\n newResolvedMetadata[key] = metadata[key] ?? null;\n break;\n case 'publisher':\n newResolvedMetadata[key] = metadata[key] ?? null;\n break;\n case 'category':\n newResolvedMetadata[key] = metadata[key] ?? null;\n break;\n case 'classification':\n newResolvedMetadata[key] = metadata[key] ?? null;\n break;\n case 'referrer':\n newResolvedMetadata[key] = metadata[key] ?? null;\n break;\n case 'formatDetection':\n newResolvedMetadata[key] = metadata[key] ?? null;\n break;\n case 'manifest':\n newResolvedMetadata[key] = convertUrlsToStrings(metadata[key]) ?? null;\n break;\n case 'pinterest':\n newResolvedMetadata[key] = convertUrlsToStrings(metadata[key]) ?? null;\n break;\n case 'other':\n newResolvedMetadata.other = Object.assign({}, newResolvedMetadata.other, metadata.other);\n if (metadata.other) {\n if ('apple-touch-fullscreen' in metadata.other) {\n buildState.warnings.add(`Use appleWebApp instead\\nRead more: https://nextjs.org/docs/app/api-reference/functions/generate-metadata`);\n }\n if ('apple-touch-icon-precomposed' in metadata.other) {\n buildState.warnings.add(`Use icons.apple instead\\nRead more: https://nextjs.org/docs/app/api-reference/functions/generate-metadata`);\n }\n }\n break;\n case 'metadataBase':\n newResolvedMetadata.metadataBase = metadataBase ? metadataBase.toString() : null;\n break;\n case 'apple-touch-fullscreen':\n {\n buildState.warnings.add(`Use appleWebApp instead\\nRead more: https://nextjs.org/docs/app/api-reference/functions/generate-metadata`);\n break;\n }\n case 'apple-touch-icon-precomposed':\n {\n buildState.warnings.add(`Use icons.apple instead\\nRead more: https://nextjs.org/docs/app/api-reference/functions/generate-metadata`);\n break;\n }\n case 'themeColor':\n case 'colorScheme':\n case 'viewport':\n if (metadata[key] != null) {\n buildState.warnings.add(`Unsupported metadata ${key} is configured in metadata export in ${route}. Please move it to viewport export instead.\\nRead more: https://nextjs.org/docs/app/api-reference/functions/generate-viewport`);\n }\n break;\n default:\n {\n key;\n }\n }\n }\n return mergeStaticMetadata(metadataBase, metadata, newResolvedMetadata, staticFilesMetadata, metadataContext, titleTemplates, leafSegmentStaticIcons, pathname);\n}\n/**\n * Merges the given viewport with the resolved viewport. Returns a new object.\n */ function mergeViewport({ resolvedViewport, viewport }) {\n const newResolvedViewport = structuredClone(resolvedViewport);\n if (viewport) {\n for(const key_ in viewport){\n const key = key_;\n switch(key){\n case 'themeColor':\n {\n newResolvedViewport.themeColor = (0, _resolvebasics.resolveThemeColor)(viewport.themeColor);\n break;\n }\n case 'colorScheme':\n newResolvedViewport.colorScheme = viewport.colorScheme || null;\n break;\n case 'width':\n case 'height':\n case 'initialScale':\n case 'minimumScale':\n case 'maximumScale':\n case 'userScalable':\n case 'viewportFit':\n case 'interactiveWidget':\n // always override the target with the source\n // @ts-ignore viewport properties\n newResolvedViewport[key] = viewport[key];\n break;\n default:\n key;\n }\n }\n }\n return newResolvedViewport;\n}\nfunction getDefinedViewport(mod, props, tracingProps) {\n if (typeof mod.generateViewport === 'function') {\n const { route } = tracingProps;\n const segmentProps = createSegmentProps(mod.generateViewport, props);\n return Object.assign((parent)=>(0, _tracer.getTracer)().trace(_constants.ResolveMetadataSpan.generateViewport, {\n spanName: `generateViewport ${route}`,\n attributes: {\n 'next.page': route\n }\n }, ()=>mod.generateViewport(segmentProps, parent)), {\n $$original: mod.generateViewport\n });\n }\n return mod.viewport || null;\n}\nfunction getDefinedMetadata(mod, props, tracingProps) {\n if (typeof mod.generateMetadata === 'function') {\n const { route } = tracingProps;\n const segmentProps = createSegmentProps(mod.generateMetadata, props);\n return Object.assign((parent)=>(0, _tracer.getTracer)().trace(_constants.ResolveMetadataSpan.generateMetadata, {\n spanName: `generateMetadata ${route}`,\n attributes: {\n 'next.page': route\n }\n }, ()=>mod.generateMetadata(segmentProps, parent)), {\n $$original: mod.generateMetadata\n });\n }\n return mod.metadata || null;\n}\n/**\n * If `fn` is a `'use cache'` function, we add special markers to the props,\n * that the cache wrapper reads and removes, before passing the props to the\n * user function.\n */ function createSegmentProps(fn, props) {\n return (0, _clientandserverreferences.isUseCacheFunction)(fn) ? 'searchParams' in props ? {\n ...props,\n $$isPage: true\n } : {\n ...props,\n $$isLayout: true\n } : props;\n}\nasync function collectStaticImagesFiles(metadata, props, type) {\n if (!(metadata == null ? void 0 : metadata[type])) return undefined;\n const iconPromises = metadata[type].map(async (imageModule)=>await imageModule(props));\n return (iconPromises == null ? void 0 : iconPromises.length) > 0 ? (await Promise.all(iconPromises)).flat() : undefined;\n}\nasync function resolveStaticMetadata(modules, props) {\n const { metadata } = modules;\n if (!metadata) return null;\n const [icon, apple, openGraph, twitter] = await Promise.all([\n collectStaticImagesFiles(metadata, props, 'icon'),\n collectStaticImagesFiles(metadata, props, 'apple'),\n collectStaticImagesFiles(metadata, props, 'openGraph'),\n collectStaticImagesFiles(metadata, props, 'twitter')\n ]);\n const staticMetadata = {\n icon,\n apple,\n openGraph,\n twitter,\n manifest: metadata.manifest\n };\n return staticMetadata;\n}\n// [layout.metadata, static files metadata] -> ... -> [page.metadata, static files metadata]\nasync function collectMetadata({ tree, metadataItems, errorMetadataItem, props, route, errorConvention }) {\n let mod;\n let modType;\n const hasErrorConventionComponent = Boolean(errorConvention && tree[2][errorConvention]);\n if (errorConvention) {\n mod = await (0, _appdirmodule.getComponentTypeModule)(tree, 'layout');\n modType = errorConvention;\n } else {\n const { mod: layoutOrPageMod, modType: layoutOrPageModType } = await (0, _appdirmodule.getLayoutOrPageModule)(tree);\n mod = layoutOrPageMod;\n modType = layoutOrPageModType;\n }\n if (modType) {\n route += `/${modType}`;\n }\n const staticFilesMetadata = await resolveStaticMetadata(tree[2], props);\n const metadataExport = mod ? getDefinedMetadata(mod, props, {\n route\n }) : null;\n metadataItems.push([\n metadataExport,\n staticFilesMetadata\n ]);\n if (hasErrorConventionComponent && errorConvention) {\n const errorMod = await (0, _appdirmodule.getComponentTypeModule)(tree, errorConvention);\n const errorMetadataExport = errorMod ? getDefinedMetadata(errorMod, props, {\n route\n }) : null;\n errorMetadataItem[0] = errorMetadataExport;\n errorMetadataItem[1] = staticFilesMetadata;\n }\n}\n// [layout.metadata, static files metadata] -> ... -> [page.metadata, static files metadata]\nasync function collectViewport({ tree, viewportItems, errorViewportItemRef, props, route, errorConvention }) {\n let mod;\n let modType;\n const hasErrorConventionComponent = Boolean(errorConvention && tree[2][errorConvention]);\n if (errorConvention) {\n mod = await (0, _appdirmodule.getComponentTypeModule)(tree, 'layout');\n modType = errorConvention;\n } else {\n const { mod: layoutOrPageMod, modType: layoutOrPageModType } = await (0, _appdirmodule.getLayoutOrPageModule)(tree);\n mod = layoutOrPageMod;\n modType = layoutOrPageModType;\n }\n if (modType) {\n route += `/${modType}`;\n }\n const viewportExport = mod ? getDefinedViewport(mod, props, {\n route\n }) : null;\n viewportItems.push(viewportExport);\n if (hasErrorConventionComponent && errorConvention) {\n const errorMod = await (0, _appdirmodule.getComponentTypeModule)(tree, errorConvention);\n const errorViewportExport = errorMod ? getDefinedViewport(errorMod, props, {\n route\n }) : null;\n errorViewportItemRef.current = errorViewportExport;\n }\n}\nconst resolveMetadataItems = (0, _react.cache)(async function(tree, searchParams, errorConvention, interpolatedParams, isRuntimePrefetchable) {\n const parentParams = {};\n const metadataItems = [];\n const errorMetadataItem = [\n null,\n null\n ];\n const treePrefix = undefined;\n return resolveMetadataItemsImpl(metadataItems, tree, treePrefix, parentParams, null, searchParams, errorConvention, errorMetadataItem, interpolatedParams, isRuntimePrefetchable);\n});\nasync function resolveMetadataItemsImpl(metadataItems, tree, /** Provided tree can be nested subtree, this argument says what is the path of such subtree */ treePrefix, parentParams, parentOptionalCatchAllParamName, searchParams, errorConvention, errorMetadataItem, interpolatedParams, isRuntimePrefetchable) {\n const [segment, parallelRoutes, { page }] = tree;\n const currentTreePrefix = treePrefix && treePrefix.length ? [\n ...treePrefix,\n segment\n ] : [\n segment\n ];\n const isPage = typeof page !== 'undefined';\n // Handle dynamic segment params.\n let currentParams = parentParams;\n const segmentParam = (0, _getsegmentparam.getSegmentParam)(segment);\n if (segmentParam) {\n const value = interpolatedParams[segmentParam.paramName];\n if (value !== null && value !== undefined) {\n currentParams = {\n ...parentParams,\n [segmentParam.paramName]: value\n };\n }\n }\n // Track optional catch-all params with no value (see comment in\n // create-component-tree.tsx for full explanation).\n const optionalCatchAllParamName = (segmentParam == null ? void 0 : segmentParam.paramType) === 'optional-catchall' && (interpolatedParams[segmentParam.paramName] === null || interpolatedParams[segmentParam.paramName] === undefined) ? segmentParam.paramName : parentOptionalCatchAllParamName;\n const params = (0, _params.createServerParamsForMetadata)(currentParams, optionalCatchAllParamName, isRuntimePrefetchable);\n const props = isPage ? {\n params,\n searchParams\n } : {\n params\n };\n await collectMetadata({\n tree,\n metadataItems,\n errorMetadataItem,\n errorConvention,\n props,\n route: currentTreePrefix // __PAGE__ shouldn't be shown in a route\n .filter((s)=>s !== _segment.PAGE_SEGMENT_KEY).join('/')\n });\n for(const key in parallelRoutes){\n const childTree = parallelRoutes[key];\n await resolveMetadataItemsImpl(metadataItems, childTree, currentTreePrefix, currentParams, optionalCatchAllParamName, searchParams, errorConvention, errorMetadataItem, interpolatedParams, isRuntimePrefetchable);\n }\n if (Object.keys(parallelRoutes).length === 0 && errorConvention) {\n // If there are no parallel routes, place error metadata as the last item.\n // e.g. layout -> layout -> not-found\n metadataItems.push(errorMetadataItem);\n }\n return metadataItems;\n}\nconst resolveViewportItems = (0, _react.cache)(async function(tree, searchParams, errorConvention, interpolatedParams, isRuntimePrefetchable) {\n const parentParams = {};\n const viewportItems = [];\n const errorViewportItemRef = {\n current: null\n };\n const treePrefix = undefined;\n return resolveViewportItemsImpl(viewportItems, tree, treePrefix, parentParams, null, searchParams, errorConvention, errorViewportItemRef, interpolatedParams, isRuntimePrefetchable);\n});\nasync function resolveViewportItemsImpl(viewportItems, tree, /** Provided tree can be nested subtree, this argument says what is the path of such subtree */ treePrefix, parentParams, parentOptionalCatchAllParamName, searchParams, errorConvention, errorViewportItemRef, interpolatedParams, isRuntimePrefetchable) {\n const [segment, parallelRoutes, { page }] = tree;\n const currentTreePrefix = treePrefix && treePrefix.length ? [\n ...treePrefix,\n segment\n ] : [\n segment\n ];\n const isPage = typeof page !== 'undefined';\n // Handle dynamic segment params.\n let currentParams = parentParams;\n const segmentParam = (0, _getsegmentparam.getSegmentParam)(segment);\n if (segmentParam) {\n const value = interpolatedParams[segmentParam.paramName];\n if (value !== null && value !== undefined) {\n currentParams = {\n ...parentParams,\n [segmentParam.paramName]: value\n };\n }\n }\n // Track optional catch-all params with no value (see comment in\n // create-component-tree.tsx for full explanation).\n const optionalCatchAllParamName = (segmentParam == null ? void 0 : segmentParam.paramType) === 'optional-catchall' && (interpolatedParams[segmentParam.paramName] === null || interpolatedParams[segmentParam.paramName] === undefined) ? segmentParam.paramName : parentOptionalCatchAllParamName;\n const params = (0, _params.createServerParamsForMetadata)(currentParams, optionalCatchAllParamName, isRuntimePrefetchable);\n let layerProps;\n if (isPage) {\n layerProps = {\n params,\n searchParams\n };\n } else {\n layerProps = {\n params\n };\n }\n await collectViewport({\n tree,\n viewportItems,\n errorViewportItemRef,\n errorConvention,\n props: layerProps,\n route: currentTreePrefix // __PAGE__ shouldn't be shown in a route\n .filter((s)=>s !== _segment.PAGE_SEGMENT_KEY).join('/')\n });\n for(const key in parallelRoutes){\n const childTree = parallelRoutes[key];\n await resolveViewportItemsImpl(viewportItems, childTree, currentTreePrefix, currentParams, optionalCatchAllParamName, searchParams, errorConvention, errorViewportItemRef, interpolatedParams, isRuntimePrefetchable);\n }\n if (Object.keys(parallelRoutes).length === 0 && errorConvention) {\n // If there are no parallel routes, place error metadata as the last item.\n // e.g. layout -> layout -> not-found\n viewportItems.push(errorViewportItemRef.current);\n }\n return viewportItems;\n}\nconst isTitleTruthy = (title)=>!!(title == null ? void 0 : title.absolute);\nconst hasTitle = (metadata)=>isTitleTruthy(metadata == null ? void 0 : metadata.title);\nfunction inheritFromMetadata(target, metadata) {\n if (target) {\n if (!hasTitle(target) && hasTitle(metadata)) {\n target.title = metadata.title;\n }\n if (!target.description && metadata.description) {\n target.description = metadata.description;\n }\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst commonOgKeys = [\n 'title',\n 'description',\n 'images'\n];\nfunction postProcessMetadata(metadata, favicon, titleTemplates, metadataContext) {\n const { openGraph, twitter } = metadata;\n if (openGraph) {\n // If there's openGraph information but not configured in twitter,\n // inherit them from openGraph metadata.\n let autoFillProps = {};\n const hasTwTitle = hasTitle(twitter);\n const hasTwDescription = twitter == null ? void 0 : twitter.description;\n const hasTwImages = Boolean((twitter == null ? void 0 : twitter.hasOwnProperty('images')) && twitter.images);\n if (!hasTwTitle) {\n if (isTitleTruthy(openGraph.title)) {\n autoFillProps.title = openGraph.title;\n } else if (metadata.title && isTitleTruthy(metadata.title)) {\n autoFillProps.title = metadata.title;\n }\n }\n if (!hasTwDescription) autoFillProps.description = openGraph.description || metadata.description || undefined;\n if (!hasTwImages) autoFillProps.images = openGraph.images;\n if (Object.keys(autoFillProps).length > 0) {\n const partialTwitter = (0, _resolveopengraph.resolveTwitter)(autoFillProps, normalizeMetadataBase(metadata.metadataBase), metadataContext, titleTemplates.twitter);\n if (metadata.twitter) {\n metadata.twitter = Object.assign({}, metadata.twitter, {\n ...!hasTwTitle && {\n title: partialTwitter == null ? void 0 : partialTwitter.title\n },\n ...!hasTwDescription && {\n description: partialTwitter == null ? void 0 : partialTwitter.description\n },\n ...!hasTwImages && {\n images: partialTwitter == null ? void 0 : partialTwitter.images\n }\n });\n } else {\n metadata.twitter = convertUrlsToStrings(partialTwitter);\n }\n }\n }\n // If there's no title and description configured in openGraph or twitter,\n // use the title and description from metadata.\n inheritFromMetadata(openGraph, metadata);\n inheritFromMetadata(twitter, metadata);\n if (favicon) {\n if (!metadata.icons) {\n metadata.icons = {\n icon: [],\n apple: []\n };\n }\n metadata.icons.icon.unshift(favicon);\n }\n return metadata;\n}\nfunction prerenderMetadata(metadataItems) {\n // If the index is a function then it is a resolver and the next slot\n // is the corresponding result. If the index is not a function it is the result\n // itself.\n const resolversAndResults = [];\n for(let i = 0; i < metadataItems.length; i++){\n const metadataExport = metadataItems[i][0];\n getResult(resolversAndResults, metadataExport);\n }\n return resolversAndResults;\n}\nfunction prerenderViewport(viewportItems) {\n // If the index is a function then it is a resolver and the next slot\n // is the corresponding result. If the index is not a function it is the result\n // itself.\n const resolversAndResults = [];\n for(let i = 0; i < viewportItems.length; i++){\n const viewportExport = viewportItems[i];\n getResult(resolversAndResults, viewportExport);\n }\n return resolversAndResults;\n}\nconst noop = ()=>{};\nfunction getResult(resolversAndResults, exportForResult) {\n if (typeof exportForResult === 'function') {\n // If the function is a 'use cache' function that uses the parent data as\n // the second argument, we don't want to eagerly execute it during\n // metadata/viewport pre-rendering, as the parent data might also be\n // computed from another 'use cache' function. To ensure that the hanging\n // input abort signal handling works in this case (i.e. the depending\n // function waits for the cached input to resolve while encoding its args),\n // they must be called sequentially. This can be accomplished by wrapping\n // the call in a lazy promise, so that the original function is only called\n // when the result is actually awaited.\n const useCacheFunctionInfo = (0, _clientandserverreferences.getUseCacheFunctionInfo)(exportForResult.$$original);\n if (useCacheFunctionInfo && useCacheFunctionInfo.usedArgs[1]) {\n const promise = new Promise((resolve)=>resolversAndResults.push(resolve));\n resolversAndResults.push((0, _lazyresult.createLazyResult)(async ()=>exportForResult(promise)));\n } else {\n let result;\n if (useCacheFunctionInfo) {\n resolversAndResults.push(noop);\n // @ts-expect-error We intentionally omit the parent argument, because\n // we know from the check above that the 'use cache' function does not\n // use it.\n result = exportForResult();\n } else {\n result = exportForResult(new Promise((resolve)=>resolversAndResults.push(resolve)));\n }\n resolversAndResults.push(result);\n if (result instanceof Promise) {\n // since we eager execute generateMetadata and\n // they can reject at anytime we need to ensure\n // we attach the catch handler right away to\n // prevent unhandled rejections crashing the process\n result.catch((err)=>{\n return {\n __nextError: err\n };\n });\n }\n }\n } else if (typeof exportForResult === 'object') {\n resolversAndResults.push(exportForResult);\n } else {\n resolversAndResults.push(null);\n }\n}\nfunction freezeInDev(obj) {\n if (true) {\n return (__webpack_require__(/*! ../../shared/lib/deep-freeze */ \"(rsc)/./node_modules/next/dist/shared/lib/deep-freeze.js\").deepFreeze)(obj);\n }\n return obj;\n}\nasync function accumulateMetadata(route, metadataItems, pathname, metadataContext) {\n let resolvedMetadata = (0, _defaultmetadata.createDefaultMetadata)();\n let titleTemplates = {\n title: null,\n twitter: null,\n openGraph: null\n };\n const buildState = {\n warnings: new Set()\n };\n let favicon;\n // Collect the static icons in the most leaf node,\n // since we don't collect all the static metadata icons in the parent segments.\n const leafSegmentStaticIcons = {\n icon: [],\n apple: []\n };\n const resolversAndResults = prerenderMetadata(metadataItems);\n let resultIndex = 0;\n for(let i = 0; i < metadataItems.length; i++){\n var _staticFilesMetadata_icon;\n const staticFilesMetadata = metadataItems[i][1];\n // Treat favicon as special case, it should be the first icon in the list\n // i <= 1 represents root layout, and if current page is also at root\n if (i <= 1 && isFavicon(staticFilesMetadata == null ? void 0 : (_staticFilesMetadata_icon = staticFilesMetadata.icon) == null ? void 0 : _staticFilesMetadata_icon[0])) {\n var _staticFilesMetadata_icon1;\n const iconMod = staticFilesMetadata == null ? void 0 : (_staticFilesMetadata_icon1 = staticFilesMetadata.icon) == null ? void 0 : _staticFilesMetadata_icon1.shift();\n if (i === 0) favicon = iconMod;\n }\n let pendingMetadata = resolversAndResults[resultIndex++];\n if (typeof pendingMetadata === 'function') {\n // This metadata item had a `generateMetadata` and\n // we need to provide the currently resolved metadata\n // to it before we continue;\n const resolveParentMetadata = pendingMetadata;\n // we know that the next item is a result if this item\n // was a resolver\n pendingMetadata = resolversAndResults[resultIndex++];\n resolveParentMetadata(freezeInDev(resolvedMetadata));\n }\n // Otherwise the item was either null or a static export\n let metadata;\n if (isPromiseLike(pendingMetadata)) {\n metadata = await pendingMetadata;\n } else {\n metadata = pendingMetadata;\n }\n resolvedMetadata = await mergeMetadata(route, pathname, {\n resolvedMetadata,\n metadata,\n metadataContext,\n staticFilesMetadata,\n titleTemplates,\n buildState,\n leafSegmentStaticIcons\n });\n // If the layout is the same layer with page, skip the leaf layout and leaf page\n // The leaf layout and page are the last two items\n if (i < metadataItems.length - 2) {\n var _resolvedMetadata_title, _resolvedMetadata_openGraph, _resolvedMetadata_twitter;\n titleTemplates = {\n title: ((_resolvedMetadata_title = resolvedMetadata.title) == null ? void 0 : _resolvedMetadata_title.template) || null,\n openGraph: ((_resolvedMetadata_openGraph = resolvedMetadata.openGraph) == null ? void 0 : _resolvedMetadata_openGraph.title.template) || null,\n twitter: ((_resolvedMetadata_twitter = resolvedMetadata.twitter) == null ? void 0 : _resolvedMetadata_twitter.title.template) || null\n };\n }\n }\n if (leafSegmentStaticIcons.icon.length > 0 || leafSegmentStaticIcons.apple.length > 0) {\n if (!resolvedMetadata.icons) {\n resolvedMetadata.icons = {\n icon: [],\n apple: []\n };\n if (leafSegmentStaticIcons.icon.length > 0) {\n resolvedMetadata.icons.icon.unshift(...leafSegmentStaticIcons.icon);\n }\n if (leafSegmentStaticIcons.apple.length > 0) {\n resolvedMetadata.icons.apple.unshift(...leafSegmentStaticIcons.apple);\n }\n }\n }\n // Only log warnings if there are any, and only once after the metadata resolving process is finished\n if (buildState.warnings.size > 0) {\n for (const warning of buildState.warnings){\n _log.warn(warning);\n }\n }\n return postProcessMetadata(resolvedMetadata, favicon, titleTemplates, metadataContext);\n}\nasync function accumulateViewport(viewportItems) {\n let resolvedViewport = (0, _defaultmetadata.createDefaultViewport)();\n const resolversAndResults = prerenderViewport(viewportItems);\n let i = 0;\n while(i < resolversAndResults.length){\n let pendingViewport = resolversAndResults[i++];\n if (typeof pendingViewport === 'function') {\n // this viewport item had a `generateViewport` and\n // we need to provide the currently resolved viewport\n // to it before we continue;\n const resolveParentViewport = pendingViewport;\n // we know that the next item is a result if this item\n // was a resolver\n pendingViewport = resolversAndResults[i++];\n resolveParentViewport(freezeInDev(resolvedViewport));\n }\n // Otherwise the item was either null or a static export\n let viewport;\n if (isPromiseLike(pendingViewport)) {\n viewport = await pendingViewport;\n } else {\n viewport = pendingViewport;\n }\n resolvedViewport = mergeViewport({\n resolvedViewport,\n viewport\n });\n }\n return resolvedViewport;\n}\nasync function resolveMetadata(tree, pathname, searchParams, errorConvention, interpolatedParams, metadataContext, isRuntimePrefetchable) {\n const metadataItems = await resolveMetadataItems(tree, searchParams, errorConvention, interpolatedParams, isRuntimePrefetchable);\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (!workStore) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected workStore to be initialized'), \"__NEXT_ERROR_CODE\", {\n value: \"E1068\",\n enumerable: false,\n configurable: true\n });\n }\n return accumulateMetadata(workStore.route, metadataItems, pathname, metadataContext);\n}\nasync function resolveViewport(tree, searchParams, errorConvention, interpolatedParams, isRuntimePrefetchable) {\n const viewportItems = await resolveViewportItems(tree, searchParams, errorConvention, interpolatedParams, isRuntimePrefetchable);\n return accumulateViewport(viewportItems);\n}\nfunction isPromiseLike(value) {\n return typeof value === 'object' && value !== null && typeof value.then === 'function';\n} //# sourceMappingURL=resolve-metadata.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9yZXNvbHZlLW1ldGFkYXRhLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQWluQ3NCQSxrQkFBa0I7ZUFBbEJBOztJQWtIQUMsa0JBQWtCO2VBQWxCQTs7SUFxQ0FDLGVBQWU7ZUFBZkE7O0lBNkJBQyxlQUFlO2VBQWZBOzs7NkNBM3hDVTtzREFhQzs0Q0FDRjtvQkFLeEI7bUNBRWU7NkNBSWY7OENBQzBDOzBDQUNwQjttQ0FDYTswQ0FJbkM7MkNBV0E7MENBQ3NCO29DQUNIO3VDQUNVO3FDQUNIO3lFQUNaO29DQUN5Qjt1REFLdkM7d0NBSzBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnRGpDLFNBQVNDLFVBQVVDLElBQWdDO0lBQ2pELElBQUksQ0FBQ0EsTUFBTTtRQUNULE9BQU87SUFDVDtJQUVBLHlDQUF5QztJQUN6QyxPQUNHQSxDQUFBQSxLQUFLQyxHQUFHLEtBQUssa0JBQ1pELEtBQUtDLEdBQUcsQ0FBQ0MsUUFBUSxHQUFHQyxVQUFVLENBQUMsaUJBQWUsSUFDaERILEtBQUtJLElBQUksS0FBSztBQUVsQjtBQUVBLFNBQVNDLHFCQUF3QkMsS0FBUTtJQUN2QyxJQUFJQSxpQkFBaUJDLEtBQUs7UUFDeEIsT0FBT0QsTUFBTUosUUFBUTtJQUN2QixPQUFPLElBQUlNLE1BQU1DLE9BQU8sQ0FBQ0gsUUFBUTtRQUMvQixPQUFPQSxNQUFNSSxHQUFHLENBQUMsQ0FBQ0MsT0FDaEJOLHFCQUFxQk07SUFFekIsT0FBTyxJQUFJTCxTQUFTLE9BQU9BLFVBQVUsVUFBVTtRQUM3QyxNQUFNTSxTQUFrQyxDQUFDO1FBQ3pDLEtBQUssTUFBTSxDQUFDQyxLQUFLQyxNQUFNLElBQUlDLE9BQU9DLE9BQU8sQ0FBQ1YsT0FBUTtZQUNoRE0sTUFBTSxDQUFDQyxJQUFJLEdBQUdSLHFCQUFxQlM7UUFDckM7UUFDQSxPQUFPRjtJQUNUO0lBQ0EsT0FBT047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QkFBQUEsZ0JBQWdCLENBQUNDLFFBQVE7SUFDM0MsSUFBSSxDQUFDRixXQUFXO1FBQ2QsTUFBTSxxQkFBMEQsQ0FBMUQsSUFBSUcsZ0JBQUFBLGNBQWMsQ0FBQyx5Q0FBbkI7bUJBQUE7d0JBQUE7MEJBQUE7UUFBeUQ7SUFDakU7SUFDQSxPQUFPak8sbUJBQ0w4TixVQUFVakwsS0FBSyxFQUNmeUUsZUFDQXRGLFVBQ0FIO0FBRUo7QUFHTyxlQUFlMUIsZ0JBQ3BCa0gsSUFBZ0IsRUFDaEJ1QixZQUFxQyxFQUNyQ3BCLGVBQThDLEVBQzlDcUIsa0JBQTBCLEVBQzFCQyxxQkFBOEI7SUFFOUIsTUFBTVQsZ0JBQWdCLE1BQU1pQyxxQkFDMUJqRCxNQUNBdUIsY0FDQXBCLGlCQUNBcUIsb0JBQ0FDO0lBRUYsT0FBTzdJLG1CQUFtQm9JO0FBQzVCO0FBRUEsU0FBU2dGLGNBQ1BsTSxLQUErQjtJQUUvQixPQUNFLE9BQU9BLFVBQVUsWUFDakJBLFVBQVUsUUFDVixPQUFRQSxNQUErQitNLElBQUksS0FBSztBQUVwRCIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9saWIvbWV0YWRhdGEvcmVzb2x2ZS1tZXRhZGF0YS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIE1ldGFkYXRhLFxuICBSZXNvbHZlZE1ldGFkYXRhLFxuICBSZXNvbHZlZFZpZXdwb3J0LFxuICBSZXNvbHZpbmdNZXRhZGF0YSxcbiAgUmVzb2x2aW5nVmlld3BvcnQsXG4gIFZpZXdwb3J0LFxuICBXaXRoU3RyaW5naWZpZWRVUkxzLFxufSBmcm9tICcuL3R5cGVzL21ldGFkYXRhLWludGVyZmFjZSdcbmltcG9ydCB0eXBlIHsgTWV0YWRhdGFJbWFnZU1vZHVsZSB9IGZyb20gJy4uLy4uL2J1aWxkL3dlYnBhY2svbG9hZGVycy9tZXRhZGF0YS90eXBlcydcbmltcG9ydCB7IGdldFNlZ21lbnRQYXJhbSB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2dldC1zZWdtZW50LXBhcmFtJ1xuaW1wb3J0IHR5cGUgeyBUd2l0dGVyIH0gZnJvbSAnLi90eXBlcy90d2l0dGVyLXR5cGVzJ1xuaW1wb3J0IHR5cGUgeyBPcGVuR3JhcGggfSBmcm9tICcuL3R5cGVzL29wZW5ncmFwaC10eXBlcydcbmltcG9ydCB0eXBlIHsgQXBwRGlyTW9kdWxlcyB9IGZyb20gJy4uLy4uL2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWFwcC1sb2FkZXInXG5pbXBvcnQgdHlwZSB7IE1ldGFkYXRhQ29udGV4dCB9IGZyb20gJy4vdHlwZXMvcmVzb2x2ZXJzJ1xuaW1wb3J0IHR5cGUgeyBMb2FkZXJUcmVlIH0gZnJvbSAnLi4vLi4vc2VydmVyL2xpYi9hcHAtZGlyLW1vZHVsZSdcbmltcG9ydCB0eXBlIHtcbiAgQWJzb2x1dGVUZW1wbGF0ZVN0cmluZyxcbiAgSWNvbkRlc2NyaXB0b3IsXG4gIFJlc29sdmVkSWNvbnMsXG59IGZyb20gJy4vdHlwZXMvbWV0YWRhdGEtdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBhcnNlZFVybFF1ZXJ5IH0gZnJvbSAncXVlcnlzdHJpbmcnXG5pbXBvcnQgdHlwZSB7IFN0YXRpY01ldGFkYXRhIH0gZnJvbSAnLi90eXBlcy9pY29ucydcbmltcG9ydCB7IHdvcmtBc3luY1N0b3JhZ2UgfSBmcm9tICcuLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnXG5pbXBvcnQgeyBJbnZhcmlhbnRFcnJvciB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvaW52YXJpYW50LWVycm9yJ1xuaW1wb3J0IHR5cGUgeyBQYXJhbXMgfSBmcm9tICcuLi8uLi9zZXJ2ZXIvcmVxdWVzdC9wYXJhbXMnXG5pbXBvcnQgdHlwZSB7IFNlYXJjaFBhcmFtcyB9IGZyb20gJy4uLy4uL3NlcnZlci9yZXF1ZXN0L3NlYXJjaC1wYXJhbXMnXG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCAnc2VydmVyLW9ubHknXG5cbmltcG9ydCB7IGNhY2hlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQge1xuICBjcmVhdGVEZWZhdWx0TWV0YWRhdGEsXG4gIGNyZWF0ZURlZmF1bHRWaWV3cG9ydCxcbn0gZnJvbSAnLi9kZWZhdWx0LW1ldGFkYXRhJ1xuaW1wb3J0IHsgcmVzb2x2ZU9wZW5HcmFwaCwgcmVzb2x2ZVR3aXR0ZXIgfSBmcm9tICcuL3Jlc29sdmVycy9yZXNvbHZlLW9wZW5ncmFwaCdcbmltcG9ydCB7IHJlc29sdmVUaXRsZSB9IGZyb20gJy4vcmVzb2x2ZXJzL3Jlc29sdmUtdGl0bGUnXG5pbXBvcnQgeyByZXNvbHZlQXNBcnJheU9yVW5kZWZpbmVkIH0gZnJvbSAnLi9nZW5lcmF0ZS91dGlscydcbmltcG9ydCB7XG4gIGdldENvbXBvbmVudFR5cGVNb2R1bGUsXG4gIGdldExheW91dE9yUGFnZU1vZHVsZSxcbn0gZnJvbSAnLi4vLi4vc2VydmVyL2xpYi9hcHAtZGlyLW1vZHVsZSdcbmltcG9ydCB7XG4gIHJlc29sdmVBbHRlcm5hdGVzLFxuICByZXNvbHZlQXBwbGVXZWJBcHAsXG4gIHJlc29sdmVBcHBMaW5rcyxcbiAgcmVzb2x2ZVJvYm90cyxcbiAgcmVzb2x2ZVRoZW1lQ29sb3IsXG4gIHJlc29sdmVWZXJpZmljYXRpb24sXG4gIHJlc29sdmVJdHVuZXMsXG4gIHJlc29sdmVGYWNlYm9vayxcbiAgcmVzb2x2ZVBhZ2luYXRpb24sXG59IGZyb20gJy4vcmVzb2x2ZXJzL3Jlc29sdmUtYmFzaWNzJ1xuaW1wb3J0IHsgcmVzb2x2ZUljb25zIH0gZnJvbSAnLi9yZXNvbHZlcnMvcmVzb2x2ZS1pY29ucydcbmltcG9ydCB7IGdldFRyYWNlciB9IGZyb20gJy4uLy4uL3NlcnZlci9saWIvdHJhY2UvdHJhY2VyJ1xuaW1wb3J0IHsgUmVzb2x2ZU1ldGFkYXRhU3BhbiB9IGZyb20gJy4uLy4uL3NlcnZlci9saWIvdHJhY2UvY29uc3RhbnRzJ1xuaW1wb3J0IHsgUEFHRV9TRUdNRU5UX0tFWSB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvc2VnbWVudCdcbmltcG9ydCAqIGFzIExvZyBmcm9tICcuLi8uLi9idWlsZC9vdXRwdXQvbG9nJ1xuaW1wb3J0IHsgY3JlYXRlU2VydmVyUGFyYW1zRm9yTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9zZXJ2ZXIvcmVxdWVzdC9wYXJhbXMnXG5pbXBvcnQgdHlwZSB7IE1ldGFkYXRhQmFzZVVSTCB9IGZyb20gJy4vcmVzb2x2ZXJzL3Jlc29sdmUtdXJsJ1xuaW1wb3J0IHtcbiAgZ2V0VXNlQ2FjaGVGdW5jdGlvbkluZm8sXG4gIGlzVXNlQ2FjaGVGdW5jdGlvbixcbn0gZnJvbSAnLi4vY2xpZW50LWFuZC1zZXJ2ZXItcmVmZXJlbmNlcydcbmltcG9ydCB0eXBlIHtcbiAgVXNlQ2FjaGVMYXlvdXRQcm9wcyxcbiAgVXNlQ2FjaGVQYWdlUHJvcHMsXG59IGZyb20gJy4uLy4uL3NlcnZlci91c2UtY2FjaGUvdXNlLWNhY2hlLXdyYXBwZXInXG5pbXBvcnQgeyBjcmVhdGVMYXp5UmVzdWx0IH0gZnJvbSAnLi4vLi4vc2VydmVyL2xpYi9sYXp5LXJlc3VsdCdcblxudHlwZSBTdGF0aWNJY29ucyA9IFBpY2s8UmVzb2x2ZWRJY29ucywgJ2ljb24nIHwgJ2FwcGxlJz5cblxudHlwZSBSZXNvbHZlZDxUPiA9IFQgZXh0ZW5kcyBNZXRhZGF0YSA/IFJlc29sdmVkTWV0YWRhdGEgOiBSZXNvbHZlZFZpZXdwb3J0XG5cbnR5cGUgSW5zdHJ1bWVudGVkUmVzb2x2ZXI8VERhdGE+ID0gKChcbiAgcGFyZW50OiBQcm9taXNlPFJlc29sdmVkPFREYXRhPj5cbikgPT4gVERhdGEgfCBQcm9taXNlPFREYXRhPikgJiB7XG4gICQkb3JpZ2luYWw6IChcbiAgICBwcm9wczogdW5rbm93bixcbiAgICBwYXJlbnQ6IFByb21pc2U8UmVzb2x2ZWQ8VERhdGE+PlxuICApID0+IFREYXRhIHwgUHJvbWlzZTxURGF0YT5cbn1cblxudHlwZSBNZXRhZGF0YVJlc29sdmVyID0gSW5zdHJ1bWVudGVkUmVzb2x2ZXI8TWV0YWRhdGE+XG50eXBlIFZpZXdwb3J0UmVzb2x2ZXIgPSBJbnN0cnVtZW50ZWRSZXNvbHZlcjxWaWV3cG9ydD5cblxuZXhwb3J0IHR5cGUgTWV0YWRhdGFFcnJvclR5cGUgPSAnbm90LWZvdW5kJyB8ICdmb3JiaWRkZW4nIHwgJ3VuYXV0aG9yaXplZCdcblxuZXhwb3J0IHR5cGUgTWV0YWRhdGFJdGVtcyA9IEFycmF5PFxuICBbTWV0YWRhdGEgfCBNZXRhZGF0YVJlc29sdmVyIHwgbnVsbCwgU3RhdGljTWV0YWRhdGFdXG4+XG5cbmV4cG9ydCB0eXBlIFZpZXdwb3J0SXRlbXMgPSBBcnJheTxWaWV3cG9ydCB8IFZpZXdwb3J0UmVzb2x2ZXIgfCBudWxsPlxuXG50eXBlIFRpdGxlVGVtcGxhdGVzID0ge1xuICB0aXRsZTogc3RyaW5nIHwgbnVsbFxuICB0d2l0dGVyOiBzdHJpbmcgfCBudWxsXG4gIG9wZW5HcmFwaDogc3RyaW5nIHwgbnVsbFxufVxuXG50eXBlIEJ1aWxkU3RhdGUgPSB7XG4gIHdhcm5pbmdzOiBTZXQ8c3RyaW5nPlxufVxuXG50eXBlIExheW91dFByb3BzID0ge1xuICBwYXJhbXM6IFByb21pc2U8UGFyYW1zPlxufVxuXG50eXBlIFBhZ2VQcm9wcyA9IHtcbiAgcGFyYW1zOiBQcm9taXNlPFBhcmFtcz5cbiAgc2VhcmNoUGFyYW1zOiBQcm9taXNlPFNlYXJjaFBhcmFtcz5cbn1cblxudHlwZSBTZWdtZW50UHJvcHMgPSBMYXlvdXRQcm9wcyB8IFBhZ2VQcm9wc1xudHlwZSBVc2VDYWNoZVNlZ21lbnRQcm9wcyA9IFVzZUNhY2hlTGF5b3V0UHJvcHMgfCBVc2VDYWNoZVBhZ2VQcm9wc1xuXG5mdW5jdGlvbiBpc0Zhdmljb24oaWNvbjogSWNvbkRlc2NyaXB0b3IgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgaWYgKCFpY29uKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvLyB0dXJib3BhY2sgYXBwZW5kcyBhIGhhc2ggdG8gYWxsIGltYWdlc1xuICByZXR1cm4gKFxuICAgIChpY29uLnVybCA9PT0gJy9mYXZpY29uLmljbycgfHxcbiAgICAgIGljb24udXJsLnRvU3RyaW5nKCkuc3RhcnRzV2l0aCgnL2Zhdmljb24uaWNvPycpKSAmJlxuICAgIGljb24udHlwZSA9PT0gJ2ltYWdlL3gtaWNvbidcbiAgKVxufVxuXG5mdW5jdGlvbiBjb252ZXJ0VXJsc1RvU3RyaW5nczxUPihpbnB1dDogVCk6IFdpdGhTdHJpbmdpZmllZFVSTHM8VD4ge1xuICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBVUkwpIHtcbiAgICByZXR1cm4gaW5wdXQudG9TdHJpbmcoKSBhcyB1bmtub3duIGFzIFdpdGhTdHJpbmdpZmllZFVSTHM8VD5cbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGlucHV0KSkge1xuICAgIHJldHVybiBpbnB1dC5tYXAoKGl0ZW0pID0+XG4gICAgICBjb252ZXJ0VXJsc1RvU3RyaW5ncyhpdGVtKVxuICAgICkgYXMgV2l0aFN0cmluZ2lmaWVkVVJMczxUPlxuICB9IGVsc2UgaWYgKGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ29iamVjdCcpIHtcbiAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge31cbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhpbnB1dCkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gY29udmVydFVybHNUb1N0cmluZ3ModmFsdWUpXG4gICAgfVxuICAgIHJldHVybiByZXN1bHQgYXMgV2l0aFN0cmluZ2lmaWVkVVJMczxUPlxuICB9XG4gIHJldHVybiBpbnB1dCBhcyBXaXRoU3RyaW5naWZpZWRVUkxzPFQ+XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU1ldGFkYXRhQmFzZShtZXRhZGF0YUJhc2U6IHN0cmluZyB8IFVSTCB8IG51bGwpOiBVUkwgfCBudWxsIHtcbiAgaWYgKHR5cGVvZiBtZXRhZGF0YUJhc2UgPT09ICdzdHJpbmcnKSB7XG4gICAgdHJ5IHtcbiAgICAgIG1ldGFkYXRhQmFzZSA9IG5ldyBVUkwobWV0YWRhdGFCYXNlKVxuICAgIH0gY2F0Y2gge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBtZXRhZGF0YUJhc2UgaXMgbm90IGEgdmFsaWQgVVJMOiAke21ldGFkYXRhQmFzZX1gKVxuICAgIH1cbiAgfVxuICByZXR1cm4gbWV0YWRhdGFCYXNlXG59XG5cbmFzeW5jIGZ1bmN0aW9uIG1lcmdlU3RhdGljTWV0YWRhdGEoXG4gIG1ldGFkYXRhQmFzZTogTWV0YWRhdGFCYXNlVVJMLFxuICBzb3VyY2U6IE1ldGFkYXRhIHwgbnVsbCxcbiAgdGFyZ2V0OiBSZXNvbHZlZE1ldGFkYXRhLFxuICBzdGF0aWNGaWxlc01ldGFkYXRhOiBTdGF0aWNNZXRhZGF0YSxcbiAgbWV0YWRhdGFDb250ZXh0OiBNZXRhZGF0YUNvbnRleHQsXG4gIHRpdGxlVGVtcGxhdGVzOiBUaXRsZVRlbXBsYXRlcyxcbiAgbGVhZlNlZ21lbnRTdGF0aWNJY29uczogU3RhdGljSWNvbnMsXG4gIHBhdGhuYW1lOiBQcm9taXNlPHN0cmluZz5cbik6IFByb21pc2U8UmVzb2x2ZWRNZXRhZGF0YT4ge1xuICBpZiAoIXN0YXRpY0ZpbGVzTWV0YWRhdGEpIHJldHVybiB0YXJnZXRcbiAgY29uc3QgeyBpY29uLCBhcHBsZSwgb3BlbkdyYXBoLCB0d2l0dGVyLCBtYW5pZmVzdCB9ID0gc3RhdGljRmlsZXNNZXRhZGF0YVxuXG4gIC8vIEtlZXAgdXBkYXRpbmcgdGhlIHN0YXRpYyBpY29ucyBpbiB0aGUgbW9zdCBsZWFmIG5vZGVcblxuICBpZiAoaWNvbikge1xuICAgIGxlYWZTZWdtZW50U3RhdGljSWNvbnMuaWNvbiA9IGljb25cbiAgfVxuICBpZiAoYXBwbGUpIHtcbiAgICBsZWFmU2VnbWVudFN0YXRpY0ljb25zLmFwcGxlID0gYXBwbGVcbiAgfVxuXG4gIC8vIGZpbGUgYmFzZWQgbWV0YWRhdGEgaXMgc3BlY2lmaWVkIGFuZCBjdXJyZW50IGxldmVsIG1ldGFkYXRhIHR3aXR0ZXIuaW1hZ2VzIGlzIG5vdCBzcGVjaWZpZWRcbiAgaWYgKHR3aXR0ZXIgJiYgIXNvdXJjZT8udHdpdHRlcj8uaGFzT3duUHJvcGVydHkoJ2ltYWdlcycpKSB7XG4gICAgY29uc3QgcmVzb2x2ZWRUd2l0dGVyID0gcmVzb2x2ZVR3aXR0ZXIoXG4gICAgICB7IC4uLnRhcmdldC50d2l0dGVyLCBpbWFnZXM6IHR3aXR0ZXIgfSBhcyBUd2l0dGVyLFxuICAgICAgbWV0YWRhdGFCYXNlLFxuICAgICAgeyAuLi5tZXRhZGF0YUNvbnRleHQsIGlzU3RhdGljTWV0YWRhdGFSb3V0ZUZpbGU6IHRydWUgfSxcbiAgICAgIHRpdGxlVGVtcGxhdGVzLnR3aXR0ZXJcbiAgICApXG4gICAgdGFyZ2V0LnR3aXR0ZXIgPSBjb252ZXJ0VXJsc1RvU3RyaW5ncyhyZXNvbHZlZFR3aXR0ZXIpXG4gIH1cblxuICAvLyBmaWxlIGJhc2VkIG1ldGFkYXRhIGlzIHNwZWNpZmllZCBhbmQgY3VycmVudCBsZXZlbCBtZXRhZGF0YSBvcGVuR3JhcGguaW1hZ2VzIGlzIG5vdCBzcGVjaWZpZWRcbiAgaWYgKG9wZW5HcmFwaCAmJiAhc291cmNlPy5vcGVuR3JhcGg/Lmhhc093blByb3BlcnR5KCdpbWFnZXMnKSkge1xuICAgIGNvbnN0IHJlc29sdmVkT3BlbkdyYXBoID0gYXdhaXQgcmVzb2x2ZU9wZW5HcmFwaChcbiAgICAgIHsgLi4udGFyZ2V0Lm9wZW5HcmFwaCwgaW1hZ2VzOiBvcGVuR3JhcGggfSBhcyBPcGVuR3JhcGgsXG4gICAgICBtZXRhZGF0YUJhc2UsXG4gICAgICBwYXRobmFtZSxcbiAgICAgIHsgLi4ubWV0YWRhdGFDb250ZXh0LCBpc1N0YXRpY01ldGFkYXRhUm91dGVGaWxlOiB0cnVlIH0sXG4gICAgICB0aXRsZVRlbXBsYXRlcy5vcGVuR3JhcGhcbiAgICApXG4gICAgdGFyZ2V0Lm9wZW5HcmFwaCA9IGNvbnZlcnRVcmxzVG9TdHJpbmdzKHJlc29sdmVkT3BlbkdyYXBoKVxuICB9XG4gIGlmIChtYW5pZmVzdCkge1xuICAgIHRhcmdldC5tYW5pZmVzdCA9IG1hbmlmZXN0XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0XG59XG5cbi8qKlxuICogTWVyZ2VzIHRoZSBnaXZlbiBtZXRhZGF0YSB3aXRoIHRoZSByZXNvbHZlZCBtZXRhZGF0YS4gUmV0dXJucyBhIG5ldyBvYmplY3QuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIG1lcmdlTWV0YWRhdGEoXG4gIHJvdXRlOiBzdHJpbmcsXG4gIHBhdGhuYW1lOiBQcm9taXNlPHN0cmluZz4sXG4gIHtcbiAgICBtZXRhZGF0YSxcbiAgICByZXNvbHZlZE1ldGFkYXRhLFxuICAgIHN0YXRpY0ZpbGVzTWV0YWRhdGEsXG4gICAgdGl0bGVUZW1wbGF0ZXMsXG4gICAgbWV0YWRhdGFDb250ZXh0LFxuICAgIGJ1aWxkU3RhdGUsXG4gICAgbGVhZlNlZ21lbnRTdGF0aWNJY29ucyxcbiAgfToge1xuICAgIG1ldGFkYXRhOiBNZXRhZGF0YSB8IG51bGxcbiAgICByZXNvbHZlZE1ldGFkYXRhOiBSZXNvbHZlZE1ldGFkYXRhXG4gICAgc3RhdGljRmlsZXNNZXRhZGF0YTogU3RhdGljTWV0YWRhdGFcbiAgICB0aXRsZVRlbXBsYXRlczogVGl0bGVUZW1wbGF0ZXNcbiAgICBtZXRhZGF0YUNvbnRleHQ6IE1ldGFkYXRhQ29udGV4dFxuICAgIGJ1aWxkU3RhdGU6IEJ1aWxkU3RhdGVcbiAgICBsZWFmU2VnbWVudFN0YXRpY0ljb25zOiBTdGF0aWNJY29uc1xuICB9XG4pOiBQcm9taXNlPFJlc29sdmVkTWV0YWRhdGE+IHtcbiAgY29uc3QgbmV3UmVzb2x2ZWRNZXRhZGF0YSA9IHN0cnVjdHVyZWRDbG9uZShyZXNvbHZlZE1ldGFkYXRhKVxuXG4gIGNvbnN0IG1ldGFkYXRhQmFzZSA9IG5vcm1hbGl6ZU1ldGFkYXRhQmFzZShcbiAgICBtZXRhZGF0YT8ubWV0YWRhdGFCYXNlICE9PSB1bmRlZmluZWRcbiAgICAgID8gbWV0YWRhdGEubWV0YWRhdGFCYXNlXG4gICAgICA6IHJlc29sdmVkTWV0YWRhdGEubWV0YWRhdGFCYXNlXG4gIClcblxuICBmb3IgKGNvbnN0IGtleV8gaW4gbWV0YWRhdGEpIHtcbiAgICBjb25zdCBrZXkgPSBrZXlfIGFzIGtleW9mIE1ldGFkYXRhXG5cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgY2FzZSAndGl0bGUnOiB7XG4gICAgICAgIG5ld1Jlc29sdmVkTWV0YWRhdGEudGl0bGUgPSByZXNvbHZlVGl0bGUoXG4gICAgICAgICAgbWV0YWRhdGEudGl0bGUsXG4gICAgICAgICAgdGl0bGVUZW1wbGF0ZXMudGl0bGVcbiAgICAgICAgKVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnYWx0ZXJuYXRlcyc6IHtcbiAgICAgICAgbmV3UmVzb2x2ZWRNZXRhZGF0YS5hbHRlcm5hdGVzID0gY29udmVydFVybHNUb1N0cmluZ3MoXG4gICAgICAgICAgYXdhaXQgcmVzb2x2ZUFsdGVybmF0ZXMoXG4gICAgICAgICAgICBtZXRhZGF0YS5hbHRlcm5hdGVzLFxuICAgICAgICAgICAgbWV0YWRhdGFCYXNlLFxuICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICBtZXRhZGF0YUNvbnRleHRcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ29wZW5HcmFwaCc6IHtcbiAgICAgICAgbmV3UmVzb2x2ZWRNZXRhZGF0YS5vcGVuR3JhcGggPSBjb252ZXJ0VXJsc1RvU3RyaW5ncyhcbiAgICAgICAgICBhd2FpdCByZXNvbHZlT3BlbkdyYXBoKFxuICAgICAgICAgICAgbWV0YWRhdGEub3BlbkdyYXBoLFxuICAgICAgICAgICAgbWV0YWRhdGFCYXNlLFxuICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICBtZXRhZGF0YUNvbnRleHQsXG4gICAgICAgICAgICB0aXRsZVRlbXBsYXRlcy5vcGVuR3JhcGhcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3R3aXR0ZXInOiB7XG4gICAgICAgIG5ld1Jlc29sdmVkTWV0YWRhdGEudHdpdHRlciA9IGNvbnZlcnRVcmxzVG9TdHJpbmdzKFxuICAgICAgICAgIHJlc29sdmVUd2l0dGVyKFxuICAgICAgICAgICAgbWV0YWRhdGEudHdpdHRlcixcbiAgICAgICAgICAgIG1ldGFkYXRhQmFzZSxcbiAgICAgICAgICAgIG1ldGFkYXRhQ29udGV4dCxcbiAgICAgICAgICAgIHRpdGxlVGVtcGxhdGVzLnR3aXR0ZXJcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2ZhY2Vib29rJzpcbiAgICAgICAgbmV3UmVzb2x2ZWRNZXRhZGF0YS5mYWNlYm9vayA9IHJlc29sdmVGYWNlYm9vayhtZXRhZGF0YS5mYWNlYm9vaylcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3ZlcmlmaWNhdGlvbic6XG4gICAgICAgIG5ld1Jlc29sdmVkTWV0YWRhdGEudmVyaWZpY2F0aW9uID0gcmVzb2x2ZVZlcmlmaWNhdGlvbihcbiAgICAgICAgICBtZXRhZGF0YS52ZXJpZmljYXRpb25cbiAgICAgICAgKVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdpY29ucyc6IHtcbiAgICAgICAgbmV3UmVzb2x2ZWRNZXRhZGF0YS5pY29ucyA9IGNvbnZlcnRVcmxzVG9TdHJpbmdzKFxuICAgICAgICAgIHJlc29sdmVJY29ucyhtZXRhZGF0YS5pY29ucylcbiAgICAgICAgKVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnYXBwbGVXZWJBcHAnOlxuICAgICAgICBuZXdSZXNvbHZlZE1ldGFkYXRhLmFwcGxlV2ViQXBwID0gcmVzb2x2ZUFwcGxlV2ViQXBwKFxuICAgICAgICAgIG1ldGFkYXRhLmFwcGxlV2ViQXBwXG4gICAgICAgIClcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ2FwcExpbmtzJzpcbiAgICAgICAgbmV3UmVzb2x2ZWRNZXRhZGF0YS5hcHBMaW5rcyA9IGNvbnZlcnRVcmxzVG9TdHJpbmdzKFxuICAgICAgICAgIHJlc29sdmVBcHBMaW5rcyhtZXRhZGF0YS5hcHBMaW5rcylcbiAgICAgICAgKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAncm9ib3RzJzoge1xuICAgICAgICBuZXdSZXNvbHZlZE1ldGFkYXRhLnJvYm90cyA9IHJlc29sdmVSb2JvdHMobWV0YWRhdGEucm9ib3RzKVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnYXJjaGl2ZXMnOlxuICAgICAgY2FzZSAnYXNzZXRzJzpcbiAgICAgIGNhc2UgJ2Jvb2ttYXJrcyc6XG4gICAgICBjYXNlICdrZXl3b3Jkcyc6IHtcbiAgICAgICAgbmV3UmVzb2x2ZWRNZXRhZGF0YVtrZXldID0gcmVzb2x2ZUFzQXJyYXlPclVuZGVmaW5lZChtZXRhZGF0YVtrZXldKVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnYXV0aG9ycyc6IHtcbiAgICAgICAgbmV3UmVzb2x2ZWRNZXRhZGF0YVtrZXldID0gY29udmVydFVybHNUb1N0cmluZ3MoXG4gICAgICAgICAgcmVzb2x2ZUFzQXJyYXlPclVuZGVmaW5lZChtZXRhZGF0YS5hdXRob3JzKVxuICAgICAgICApXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlICdpdHVuZXMnOiB7XG4gICAgICAgIG5ld1Jlc29sdmVkTWV0YWRhdGFba2V5XSA9IGF3YWl0IHJlc29sdmVJdHVuZXMoXG4gICAgICAgICAgbWV0YWRhdGEuaXR1bmVzLFxuICAgICAgICAgIG1ldGFkYXRhQmFzZSxcbiAgICAgICAgICBwYXRobmFtZSxcbiAgICAgICAgICBtZXRhZGF0YUNvbnRleHRcbiAgICAgICAgKVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAncGFnaW5hdGlvbic6IHtcbiAgICAgICAgbmV3UmVzb2x2ZWRNZXRhZGF0YS5wYWdpbmF0aW9uID0gYXdhaXQgcmVzb2x2ZVBhZ2luYXRpb24oXG4gICAgICAgICAgbWV0YWRhdGEucGFnaW5hdGlvbixcbiAgICAgICAgICBtZXRhZGF0YUJhc2UsXG4gICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgbWV0YWRhdGFDb250ZXh0XG4gICAgICAgIClcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIC8vIGRpcmVjdGx5IGFzc2lnbiBmaWVsZHMgdGhhdCBmYWxsYmFjayB0byBudWxsXG4gICAgICBjYXNlICdhYnN0cmFjdCc6XG4gICAgICAgIG5ld1Jlc29sdmVkTWV0YWRhdGFba2V5XSA9IG1ldGFkYXRhW2tleV0gPz8gbnVsbFxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnYXBwbGljYXRpb25OYW1lJzpcbiAgICAgICAgbmV3UmVzb2x2ZWRNZXRhZGF0YVtrZXldID0gbWV0YWRhdGFba2V5XSA/PyBudWxsXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdkZXNjcmlwdGlvbic6XG4gICAgICAgIG5ld1Jlc29sdmVkTWV0YWRhdGFba2V5XSA9IG1ldGFkYXRhW2tleV0gPz8gbnVsbFxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnZ2VuZXJhdG9yJzpcbiAgICAgICAgbmV3UmVzb2x2ZWRNZXRhZGF0YVtrZXldID0gbWV0YWRhdGFba2V5XSA/PyBudWxsXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdjcmVhdG9yJzpcbiAgICAgICAgbmV3UmVzb2x2ZWRNZXRhZGF0YVtrZXldID0gbWV0YWRhdGFba2V5XSA/PyBudWxsXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdwdWJsaXNoZXInOlxuICAgICAgICBuZXdSZXNvbHZlZE1ldGFkYXRhW2tleV0gPSBtZXRhZGF0YVtrZXldID8/IG51bGxcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ2NhdGVnb3J5JzpcbiAgICAgICAgbmV3UmVzb2x2ZWRNZXRhZGF0YVtrZXldID0gbWV0YWRhdGFba2V5XSA/PyBudWxsXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdjbGFzc2lmaWNhdGlvbic6XG4gICAgICAgIG5ld1Jlc29sdmVkTWV0YWRhdGFba2V5XSA9IG1ldGFkYXRhW2tleV0gPz8gbnVsbFxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAncmVmZXJyZXInOlxuICAgICAgICBuZXdSZXNvbHZlZE1ldGFkYXRhW2tleV0gPSBtZXRhZGF0YVtrZXldID8/IG51bGxcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ2Zvcm1hdERldGVjdGlvbic6XG4gICAgICAgIG5ld1Jlc29sdmVkTWV0YWRhdGFba2V5XSA9IG1ldGFkYXRhW2tleV0gPz8gbnVsbFxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnbWFuaWZlc3QnOlxuICAgICAgICBuZXdSZXNvbHZlZE1ldGFkYXRhW2tleV0gPSBjb252ZXJ0VXJsc1RvU3RyaW5ncyhtZXRhZGF0YVtrZXldKSA/PyBudWxsXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdwaW50ZXJlc3QnOlxuICAgICAgICBuZXdSZXNvbHZlZE1ldGFkYXRhW2tleV0gPSBjb252ZXJ0VXJsc1RvU3RyaW5ncyhtZXRhZGF0YVtrZXldKSA/PyBudWxsXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdvdGhlcic6XG4gICAgICAgIG5ld1Jlc29sdmVkTWV0YWRhdGEub3RoZXIgPSBPYmplY3QuYXNzaWduKFxuICAgICAgICAgIHt9LFxuICAgICAgICAgIG5ld1Jlc29sdmVkTWV0YWRhdGEub3RoZXIsXG4gICAgICAgICAgbWV0YWRhdGEub3RoZXJcbiAgICAgICAgKVxuICAgICAgICBpZiAobWV0YWRhdGEub3RoZXIpIHtcbiAgICAgICAgICBpZiAoJ2FwcGxlLXRvdWNoLWZ1bGxzY3JlZW4nIGluIG1ldGFkYXRhLm90aGVyKSB7XG4gICAgICAgICAgICBidWlsZFN0YXRlLndhcm5pbmdzLmFkZChcbiAgICAgICAgICAgICAgYFVzZSBhcHBsZVdlYkFwcCBpbnN0ZWFkXFxuUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvZ2VuZXJhdGUtbWV0YWRhdGFgXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICgnYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3NlZCcgaW4gbWV0YWRhdGEub3RoZXIpIHtcbiAgICAgICAgICAgIGJ1aWxkU3RhdGUud2FybmluZ3MuYWRkKFxuICAgICAgICAgICAgICBgVXNlIGljb25zLmFwcGxlIGluc3RlYWRcXG5SZWFkIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy9nZW5lcmF0ZS1tZXRhZGF0YWBcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ21ldGFkYXRhQmFzZSc6XG4gICAgICAgIG5ld1Jlc29sdmVkTWV0YWRhdGEubWV0YWRhdGFCYXNlID0gbWV0YWRhdGFCYXNlXG4gICAgICAgICAgPyBtZXRhZGF0YUJhc2UudG9TdHJpbmcoKVxuICAgICAgICAgIDogbnVsbFxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdhcHBsZS10b3VjaC1mdWxsc2NyZWVuJzoge1xuICAgICAgICBidWlsZFN0YXRlLndhcm5pbmdzLmFkZChcbiAgICAgICAgICBgVXNlIGFwcGxlV2ViQXBwIGluc3RlYWRcXG5SZWFkIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy9nZW5lcmF0ZS1tZXRhZGF0YWBcbiAgICAgICAgKVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3NlZCc6IHtcbiAgICAgICAgYnVpbGRTdGF0ZS53YXJuaW5ncy5hZGQoXG4gICAgICAgICAgYFVzZSBpY29ucy5hcHBsZSBpbnN0ZWFkXFxuUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvZ2VuZXJhdGUtbWV0YWRhdGFgXG4gICAgICAgIClcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3RoZW1lQ29sb3InOlxuICAgICAgY2FzZSAnY29sb3JTY2hlbWUnOlxuICAgICAgY2FzZSAndmlld3BvcnQnOlxuICAgICAgICBpZiAobWV0YWRhdGFba2V5XSAhPSBudWxsKSB7XG4gICAgICAgICAgYnVpbGRTdGF0ZS53YXJuaW5ncy5hZGQoXG4gICAgICAgICAgICBgVW5zdXBwb3J0ZWQgbWV0YWRhdGEgJHtrZXl9IGlzIGNvbmZpZ3VyZWQgaW4gbWV0YWRhdGEgZXhwb3J0IGluICR7cm91dGV9LiBQbGVhc2UgbW92ZSBpdCB0byB2aWV3cG9ydCBleHBvcnQgaW5zdGVhZC5cXG5SZWFkIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy9nZW5lcmF0ZS12aWV3cG9ydGBcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAga2V5IHNhdGlzZmllcyBuZXZlclxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXJnZVN0YXRpY01ldGFkYXRhKFxuICAgIG1ldGFkYXRhQmFzZSxcbiAgICBtZXRhZGF0YSxcbiAgICBuZXdSZXNvbHZlZE1ldGFkYXRhLFxuICAgIHN0YXRpY0ZpbGVzTWV0YWRhdGEsXG4gICAgbWV0YWRhdGFDb250ZXh0LFxuICAgIHRpdGxlVGVtcGxhdGVzLFxuICAgIGxlYWZTZWdtZW50U3RhdGljSWNvbnMsXG4gICAgcGF0aG5hbWVcbiAgKVxufVxuXG4vKipcbiAqIE1lcmdlcyB0aGUgZ2l2ZW4gdmlld3BvcnQgd2l0aCB0aGUgcmVzb2x2ZWQgdmlld3BvcnQuIFJldHVybnMgYSBuZXcgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBtZXJnZVZpZXdwb3J0KHtcbiAgcmVzb2x2ZWRWaWV3cG9ydCxcbiAgdmlld3BvcnQsXG59OiB7XG4gIHJlc29sdmVkVmlld3BvcnQ6IFJlc29sdmVkVmlld3BvcnRcbiAgdmlld3BvcnQ6IFZpZXdwb3J0IHwgbnVsbFxufSk6IFJlc29sdmVkVmlld3BvcnQge1xuICBjb25zdCBuZXdSZXNvbHZlZFZpZXdwb3J0ID0gc3RydWN0dXJlZENsb25lKHJlc29sdmVkVmlld3BvcnQpXG5cbiAgaWYgKHZpZXdwb3J0KSB7XG4gICAgZm9yIChjb25zdCBrZXlfIGluIHZpZXdwb3J0KSB7XG4gICAgICBjb25zdCBrZXkgPSBrZXlfIGFzIGtleW9mIFZpZXdwb3J0XG5cbiAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgIGNhc2UgJ3RoZW1lQ29sb3InOiB7XG4gICAgICAgICAgbmV3UmVzb2x2ZWRWaWV3cG9ydC50aGVtZUNvbG9yID0gcmVzb2x2ZVRoZW1lQ29sb3IoXG4gICAgICAgICAgICB2aWV3cG9ydC50aGVtZUNvbG9yXG4gICAgICAgICAgKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnY29sb3JTY2hlbWUnOlxuICAgICAgICAgIG5ld1Jlc29sdmVkVmlld3BvcnQuY29sb3JTY2hlbWUgPSB2aWV3cG9ydC5jb2xvclNjaGVtZSB8fCBudWxsXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnd2lkdGgnOlxuICAgICAgICBjYXNlICdoZWlnaHQnOlxuICAgICAgICBjYXNlICdpbml0aWFsU2NhbGUnOlxuICAgICAgICBjYXNlICdtaW5pbXVtU2NhbGUnOlxuICAgICAgICBjYXNlICdtYXhpbXVtU2NhbGUnOlxuICAgICAgICBjYXNlICd1c2VyU2NhbGFibGUnOlxuICAgICAgICBjYXNlICd2aWV3cG9ydEZpdCc6XG4gICAgICAgIGNhc2UgJ2ludGVyYWN0aXZlV2lkZ2V0JzpcbiAgICAgICAgICAvLyBhbHdheXMgb3ZlcnJpZGUgdGhlIHRhcmdldCB3aXRoIHRoZSBzb3VyY2VcbiAgICAgICAgICAvLyBAdHMtaWdub3JlIHZpZXdwb3J0IHByb3BlcnRpZXNcbiAgICAgICAgICBuZXdSZXNvbHZlZFZpZXdwb3J0W2tleV0gPSB2aWV3cG9ydFtrZXldXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBrZXkgc2F0aXNmaWVzIG5ldmVyXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ld1Jlc29sdmVkVmlld3BvcnRcbn1cblxuZnVuY3Rpb24gZ2V0RGVmaW5lZFZpZXdwb3J0KFxuICBtb2Q6IGFueSxcbiAgcHJvcHM6IFNlZ21lbnRQcm9wcyxcbiAgdHJhY2luZ1Byb3BzOiB7IHJvdXRlOiBzdHJpbmcgfVxuKTogVmlld3BvcnQgfCBWaWV3cG9ydFJlc29sdmVyIHwgbnVsbCB7XG4gIGlmICh0eXBlb2YgbW9kLmdlbmVyYXRlVmlld3BvcnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjb25zdCB7IHJvdXRlIH0gPSB0cmFjaW5nUHJvcHNcbiAgICBjb25zdCBzZWdtZW50UHJvcHMgPSBjcmVhdGVTZWdtZW50UHJvcHMobW9kLmdlbmVyYXRlVmlld3BvcnQsIHByb3BzKVxuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXG4gICAgICAocGFyZW50OiBSZXNvbHZpbmdWaWV3cG9ydCkgPT5cbiAgICAgICAgZ2V0VHJhY2VyKCkudHJhY2UoXG4gICAgICAgICAgUmVzb2x2ZU1ldGFkYXRhU3Bhbi5nZW5lcmF0ZVZpZXdwb3J0LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNwYW5OYW1lOiBgZ2VuZXJhdGVWaWV3cG9ydCAke3JvdXRlfWAsXG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICduZXh0LnBhZ2UnOiByb3V0ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICAoKSA9PiBtb2QuZ2VuZXJhdGVWaWV3cG9ydChzZWdtZW50UHJvcHMsIHBhcmVudClcbiAgICAgICAgKSxcbiAgICAgIHsgJCRvcmlnaW5hbDogbW9kLmdlbmVyYXRlVmlld3BvcnQgfVxuICAgIClcbiAgfVxuICByZXR1cm4gbW9kLnZpZXdwb3J0IHx8IG51bGxcbn1cblxuZnVuY3Rpb24gZ2V0RGVmaW5lZE1ldGFkYXRhKFxuICBtb2Q6IGFueSxcbiAgcHJvcHM6IFNlZ21lbnRQcm9wcyxcbiAgdHJhY2luZ1Byb3BzOiB7IHJvdXRlOiBzdHJpbmcgfVxuKTogTWV0YWRhdGEgfCBNZXRhZGF0YVJlc29sdmVyIHwgbnVsbCB7XG4gIGlmICh0eXBlb2YgbW9kLmdlbmVyYXRlTWV0YWRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjb25zdCB7IHJvdXRlIH0gPSB0cmFjaW5nUHJvcHNcbiAgICBjb25zdCBzZWdtZW50UHJvcHMgPSBjcmVhdGVTZWdtZW50UHJvcHMobW9kLmdlbmVyYXRlTWV0YWRhdGEsIHByb3BzKVxuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXG4gICAgICAocGFyZW50OiBSZXNvbHZpbmdNZXRhZGF0YSkgPT5cbiAgICAgICAgZ2V0VHJhY2VyKCkudHJhY2UoXG4gICAgICAgICAgUmVzb2x2ZU1ldGFkYXRhU3Bhbi5nZW5lcmF0ZU1ldGFkYXRhLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNwYW5OYW1lOiBgZ2VuZXJhdGVNZXRhZGF0YSAke3JvdXRlfWAsXG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICduZXh0LnBhZ2UnOiByb3V0ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICAoKSA9PiBtb2QuZ2VuZXJhdGVNZXRhZGF0YShzZWdtZW50UHJvcHMsIHBhcmVudClcbiAgICAgICAgKSxcbiAgICAgIHsgJCRvcmlnaW5hbDogbW9kLmdlbmVyYXRlTWV0YWRhdGEgfVxuICAgIClcbiAgfVxuICByZXR1cm4gbW9kLm1ldGFkYXRhIHx8IG51bGxcbn1cblxuLyoqXG4gKiBJZiBgZm5gIGlzIGEgYCd1c2UgY2FjaGUnYCBmdW5jdGlvbiwgd2UgYWRkIHNwZWNpYWwgbWFya2VycyB0byB0aGUgcHJvcHMsXG4gKiB0aGF0IHRoZSBjYWNoZSB3cmFwcGVyIHJlYWRzIGFuZCByZW1vdmVzLCBiZWZvcmUgcGFzc2luZyB0aGUgcHJvcHMgdG8gdGhlXG4gKiB1c2VyIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVTZWdtZW50UHJvcHMoXG4gIGZuOiBGdW5jdGlvbixcbiAgcHJvcHM6IFNlZ21lbnRQcm9wc1xuKTogU2VnbWVudFByb3BzIHwgVXNlQ2FjaGVTZWdtZW50UHJvcHMge1xuICByZXR1cm4gaXNVc2VDYWNoZUZ1bmN0aW9uKGZuKVxuICAgID8gJ3NlYXJjaFBhcmFtcycgaW4gcHJvcHNcbiAgICAgID8geyAuLi5wcm9wcywgJCRpc1BhZ2U6IHRydWUgfVxuICAgICAgOiB7IC4uLnByb3BzLCAkJGlzTGF5b3V0OiB0cnVlIH1cbiAgICA6IHByb3BzXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbGxlY3RTdGF0aWNJbWFnZXNGaWxlcyhcbiAgbWV0YWRhdGE6IEFwcERpck1vZHVsZXNbJ21ldGFkYXRhJ10sXG4gIHByb3BzOiBTZWdtZW50UHJvcHMsXG4gIHR5cGU6IGtleW9mIE5vbk51bGxhYmxlPEFwcERpck1vZHVsZXNbJ21ldGFkYXRhJ10+XG4pIHtcbiAgaWYgKCFtZXRhZGF0YT8uW3R5cGVdKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgY29uc3QgaWNvblByb21pc2VzID0gbWV0YWRhdGFbdHlwZSBhcyAnaWNvbicgfCAnYXBwbGUnXS5tYXAoXG4gICAgYXN5bmMgKGltYWdlTW9kdWxlOiAocDogYW55KSA9PiBQcm9taXNlPE1ldGFkYXRhSW1hZ2VNb2R1bGVbXT4pID0+XG4gICAgICBhd2FpdCBpbWFnZU1vZHVsZShwcm9wcylcbiAgKVxuXG4gIHJldHVybiBpY29uUHJvbWlzZXM/Lmxlbmd0aCA+IDBcbiAgICA/IChhd2FpdCBQcm9taXNlLmFsbChpY29uUHJvbWlzZXMpKS5mbGF0KClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlU3RhdGljTWV0YWRhdGEoXG4gIG1vZHVsZXM6IEFwcERpck1vZHVsZXMsXG4gIHByb3BzOiBTZWdtZW50UHJvcHNcbik6IFByb21pc2U8U3RhdGljTWV0YWRhdGE+IHtcbiAgY29uc3QgeyBtZXRhZGF0YSB9ID0gbW9kdWxlc1xuICBpZiAoIW1ldGFkYXRhKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IFtpY29uLCBhcHBsZSwgb3BlbkdyYXBoLCB0d2l0dGVyXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICBjb2xsZWN0U3RhdGljSW1hZ2VzRmlsZXMobWV0YWRhdGEsIHByb3BzLCAnaWNvbicpLFxuICAgIGNvbGxlY3RTdGF0aWNJbWFnZXNGaWxlcyhtZXRhZGF0YSwgcHJvcHMsICdhcHBsZScpLFxuICAgIGNvbGxlY3RTdGF0aWNJbWFnZXNGaWxlcyhtZXRhZGF0YSwgcHJvcHMsICdvcGVuR3JhcGgnKSxcbiAgICBjb2xsZWN0U3RhdGljSW1hZ2VzRmlsZXMobWV0YWRhdGEsIHByb3BzLCAndHdpdHRlcicpLFxuICBdKVxuXG4gIGNvbnN0IHN0YXRpY01ldGFkYXRhID0ge1xuICAgIGljb24sXG4gICAgYXBwbGUsXG4gICAgb3BlbkdyYXBoLFxuICAgIHR3aXR0ZXIsXG4gICAgbWFuaWZlc3Q6IG1ldGFkYXRhLm1hbmlmZXN0LFxuICB9XG5cbiAgcmV0dXJuIHN0YXRpY01ldGFkYXRhXG59XG5cbi8vIFtsYXlvdXQubWV0YWRhdGEsIHN0YXRpYyBmaWxlcyBtZXRhZGF0YV0gLT4gLi4uIC0+IFtwYWdlLm1ldGFkYXRhLCBzdGF0aWMgZmlsZXMgbWV0YWRhdGFdXG5hc3luYyBmdW5jdGlvbiBjb2xsZWN0TWV0YWRhdGEoe1xuICB0cmVlLFxuICBtZXRhZGF0YUl0ZW1zLFxuICBlcnJvck1ldGFkYXRhSXRlbSxcbiAgcHJvcHMsXG4gIHJvdXRlLFxuICBlcnJvckNvbnZlbnRpb24sXG59OiB7XG4gIHRyZWU6IExvYWRlclRyZWVcbiAgbWV0YWRhdGFJdGVtczogTWV0YWRhdGFJdGVtc1xuICBlcnJvck1ldGFkYXRhSXRlbTogTWV0YWRhdGFJdGVtc1tudW1iZXJdXG4gIHByb3BzOiBTZWdtZW50UHJvcHNcbiAgcm91dGU6IHN0cmluZ1xuICBlcnJvckNvbnZlbnRpb24/OiBNZXRhZGF0YUVycm9yVHlwZVxufSkge1xuICBsZXQgbW9kXG4gIGxldCBtb2RUeXBlXG4gIGNvbnN0IGhhc0Vycm9yQ29udmVudGlvbkNvbXBvbmVudCA9IEJvb2xlYW4oXG4gICAgZXJyb3JDb252ZW50aW9uICYmIHRyZWVbMl1bZXJyb3JDb252ZW50aW9uXVxuICApXG4gIGlmIChlcnJvckNvbnZlbnRpb24pIHtcbiAgICBtb2QgPSBhd2FpdCBnZXRDb21wb25lbnRUeXBlTW9kdWxlKHRyZWUsICdsYXlvdXQnKVxuICAgIG1vZFR5cGUgPSBlcnJvckNvbnZlbnRpb25cbiAgfSBlbHNlIHtcbiAgICBjb25zdCB7IG1vZDogbGF5b3V0T3JQYWdlTW9kLCBtb2RUeXBlOiBsYXlvdXRPclBhZ2VNb2RUeXBlIH0gPVxuICAgICAgYXdhaXQgZ2V0TGF5b3V0T3JQYWdlTW9kdWxlKHRyZWUpXG4gICAgbW9kID0gbGF5b3V0T3JQYWdlTW9kXG4gICAgbW9kVHlwZSA9IGxheW91dE9yUGFnZU1vZFR5cGVcbiAgfVxuXG4gIGlmIChtb2RUeXBlKSB7XG4gICAgcm91dGUgKz0gYC8ke21vZFR5cGV9YFxuICB9XG5cbiAgY29uc3Qgc3RhdGljRmlsZXNNZXRhZGF0YSA9IGF3YWl0IHJlc29sdmVTdGF0aWNNZXRhZGF0YSh0cmVlWzJdLCBwcm9wcylcbiAgY29uc3QgbWV0YWRhdGFFeHBvcnQgPSBtb2QgPyBnZXREZWZpbmVkTWV0YWRhdGEobW9kLCBwcm9wcywgeyByb3V0ZSB9KSA6IG51bGxcblxuICBtZXRhZGF0YUl0ZW1zLnB1c2goW21ldGFkYXRhRXhwb3J0LCBzdGF0aWNGaWxlc01ldGFkYXRhXSlcblxuICBpZiAoaGFzRXJyb3JDb252ZW50aW9uQ29tcG9uZW50ICYmIGVycm9yQ29udmVudGlvbikge1xuICAgIGNvbnN0IGVycm9yTW9kID0gYXdhaXQgZ2V0Q29tcG9uZW50VHlwZU1vZHVsZSh0cmVlLCBlcnJvckNvbnZlbnRpb24pXG4gICAgY29uc3QgZXJyb3JNZXRhZGF0YUV4cG9ydCA9IGVycm9yTW9kXG4gICAgICA/IGdldERlZmluZWRNZXRhZGF0YShlcnJvck1vZCwgcHJvcHMsIHsgcm91dGUgfSlcbiAgICAgIDogbnVsbFxuXG4gICAgZXJyb3JNZXRhZGF0YUl0ZW1bMF0gPSBlcnJvck1ldGFkYXRhRXhwb3J0XG4gICAgZXJyb3JNZXRhZGF0YUl0ZW1bMV0gPSBzdGF0aWNGaWxlc01ldGFkYXRhXG4gIH1cbn1cblxuLy8gW2xheW91dC5tZXRhZGF0YSwgc3RhdGljIGZpbGVzIG1ldGFkYXRhXSAtPiAuLi4gLT4gW3BhZ2UubWV0YWRhdGEsIHN0YXRpYyBmaWxlcyBtZXRhZGF0YV1cbmFzeW5jIGZ1bmN0aW9uIGNvbGxlY3RWaWV3cG9ydCh7XG4gIHRyZWUsXG4gIHZpZXdwb3J0SXRlbXMsXG4gIGVycm9yVmlld3BvcnRJdGVtUmVmLFxuICBwcm9wcyxcbiAgcm91dGUsXG4gIGVycm9yQ29udmVudGlvbixcbn06IHtcbiAgdHJlZTogTG9hZGVyVHJlZVxuICB2aWV3cG9ydEl0ZW1zOiBWaWV3cG9ydEl0ZW1zXG4gIGVycm9yVmlld3BvcnRJdGVtUmVmOiBFcnJvclZpZXdwb3J0SXRlbVJlZlxuICBwcm9wczogU2VnbWVudFByb3BzXG4gIHJvdXRlOiBzdHJpbmdcbiAgZXJyb3JDb252ZW50aW9uPzogTWV0YWRhdGFFcnJvclR5cGVcbn0pIHtcbiAgbGV0IG1vZFxuICBsZXQgbW9kVHlwZVxuICBjb25zdCBoYXNFcnJvckNvbnZlbnRpb25Db21wb25lbnQgPSBCb29sZWFuKFxuICAgIGVycm9yQ29udmVudGlvbiAmJiB0cmVlWzJdW2Vycm9yQ29udmVudGlvbl1cbiAgKVxuICBpZiAoZXJyb3JDb252ZW50aW9uKSB7XG4gICAgbW9kID0gYXdhaXQgZ2V0Q29tcG9uZW50VHlwZU1vZHVsZSh0cmVlLCAnbGF5b3V0JylcbiAgICBtb2RUeXBlID0gZXJyb3JDb252ZW50aW9uXG4gIH0gZWxzZSB7XG4gICAgY29uc3QgeyBtb2Q6IGxheW91dE9yUGFnZU1vZCwgbW9kVHlwZTogbGF5b3V0T3JQYWdlTW9kVHlwZSB9ID1cbiAgICAgIGF3YWl0IGdldExheW91dE9yUGFnZU1vZHVsZSh0cmVlKVxuICAgIG1vZCA9IGxheW91dE9yUGFnZU1vZFxuICAgIG1vZFR5cGUgPSBsYXlvdXRPclBhZ2VNb2RUeXBlXG4gIH1cblxuICBpZiAobW9kVHlwZSkge1xuICAgIHJvdXRlICs9IGAvJHttb2RUeXBlfWBcbiAgfVxuXG4gIGNvbnN0IHZpZXdwb3J0RXhwb3J0ID0gbW9kID8gZ2V0RGVmaW5lZFZpZXdwb3J0KG1vZCwgcHJvcHMsIHsgcm91dGUgfSkgOiBudWxsXG5cbiAgdmlld3BvcnRJdGVtcy5wdXNoKHZpZXdwb3J0RXhwb3J0KVxuXG4gIGlmIChoYXNFcnJvckNvbnZlbnRpb25Db21wb25lbnQgJiYgZXJyb3JDb252ZW50aW9uKSB7XG4gICAgY29uc3QgZXJyb3JNb2QgPSBhd2FpdCBnZXRDb21wb25lbnRUeXBlTW9kdWxlKHRyZWUsIGVycm9yQ29udmVudGlvbilcbiAgICBjb25zdCBlcnJvclZpZXdwb3J0RXhwb3J0ID0gZXJyb3JNb2RcbiAgICAgID8gZ2V0RGVmaW5lZFZpZXdwb3J0KGVycm9yTW9kLCBwcm9wcywgeyByb3V0ZSB9KVxuICAgICAgOiBudWxsXG5cbiAgICBlcnJvclZpZXdwb3J0SXRlbVJlZi5jdXJyZW50ID0gZXJyb3JWaWV3cG9ydEV4cG9ydFxuICB9XG59XG5cbmNvbnN0IHJlc29sdmVNZXRhZGF0YUl0ZW1zID0gY2FjaGUoYXN5bmMgZnVuY3Rpb24gKFxuICB0cmVlOiBMb2FkZXJUcmVlLFxuICBzZWFyY2hQYXJhbXM6IFByb21pc2U8UGFyc2VkVXJsUXVlcnk+LFxuICBlcnJvckNvbnZlbnRpb246IE1ldGFkYXRhRXJyb3JUeXBlIHwgdW5kZWZpbmVkLFxuICBpbnRlcnBvbGF0ZWRQYXJhbXM6IFBhcmFtcyxcbiAgaXNSdW50aW1lUHJlZmV0Y2hhYmxlOiBib29sZWFuXG4pIHtcbiAgY29uc3QgcGFyZW50UGFyYW1zID0ge31cbiAgY29uc3QgbWV0YWRhdGFJdGVtczogTWV0YWRhdGFJdGVtcyA9IFtdXG4gIGNvbnN0IGVycm9yTWV0YWRhdGFJdGVtOiBNZXRhZGF0YUl0ZW1zW251bWJlcl0gPSBbbnVsbCwgbnVsbF1cbiAgY29uc3QgdHJlZVByZWZpeCA9IHVuZGVmaW5lZFxuICByZXR1cm4gcmVzb2x2ZU1ldGFkYXRhSXRlbXNJbXBsKFxuICAgIG1ldGFkYXRhSXRlbXMsXG4gICAgdHJlZSxcbiAgICB0cmVlUHJlZml4LFxuICAgIHBhcmVudFBhcmFtcyxcbiAgICBudWxsLFxuICAgIHNlYXJjaFBhcmFtcyxcbiAgICBlcnJvckNvbnZlbnRpb24sXG4gICAgZXJyb3JNZXRhZGF0YUl0ZW0sXG4gICAgaW50ZXJwb2xhdGVkUGFyYW1zLFxuICAgIGlzUnVudGltZVByZWZldGNoYWJsZVxuICApXG59KVxuXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlTWV0YWRhdGFJdGVtc0ltcGwoXG4gIG1ldGFkYXRhSXRlbXM6IE1ldGFkYXRhSXRlbXMsXG4gIHRyZWU6IExvYWRlclRyZWUsXG4gIC8qKiBQcm92aWRlZCB0cmVlIGNhbiBiZSBuZXN0ZWQgc3VidHJlZSwgdGhpcyBhcmd1bWVudCBzYXlzIHdoYXQgaXMgdGhlIHBhdGggb2Ygc3VjaCBzdWJ0cmVlICovXG4gIHRyZWVQcmVmaXg6IHVuZGVmaW5lZCB8IHN0cmluZ1tdLFxuICBwYXJlbnRQYXJhbXM6IFBhcmFtcyxcbiAgcGFyZW50T3B0aW9uYWxDYXRjaEFsbFBhcmFtTmFtZTogc3RyaW5nIHwgbnVsbCxcbiAgc2VhcmNoUGFyYW1zOiBQcm9taXNlPFBhcnNlZFVybFF1ZXJ5PixcbiAgZXJyb3JDb252ZW50aW9uOiBNZXRhZGF0YUVycm9yVHlwZSB8IHVuZGVmaW5lZCxcbiAgZXJyb3JNZXRhZGF0YUl0ZW06IE1ldGFkYXRhSXRlbXNbbnVtYmVyXSxcbiAgaW50ZXJwb2xhdGVkUGFyYW1zOiBQYXJhbXMsXG4gIGlzUnVudGltZVByZWZldGNoYWJsZTogYm9vbGVhblxuKTogUHJvbWlzZTxNZXRhZGF0YUl0ZW1zPiB7XG4gIGNvbnN0IFtzZWdtZW50LCBwYXJhbGxlbFJvdXRlcywgeyBwYWdlIH1dID0gdHJlZVxuICBjb25zdCBjdXJyZW50VHJlZVByZWZpeCA9XG4gICAgdHJlZVByZWZpeCAmJiB0cmVlUHJlZml4Lmxlbmd0aCA/IFsuLi50cmVlUHJlZml4LCBzZWdtZW50XSA6IFtzZWdtZW50XVxuICBjb25zdCBpc1BhZ2UgPSB0eXBlb2YgcGFnZSAhPT0gJ3VuZGVmaW5lZCdcblxuICAvLyBIYW5kbGUgZHluYW1pYyBzZWdtZW50IHBhcmFtcy5cbiAgbGV0IGN1cnJlbnRQYXJhbXMgPSBwYXJlbnRQYXJhbXNcbiAgY29uc3Qgc2VnbWVudFBhcmFtID0gZ2V0U2VnbWVudFBhcmFtKHNlZ21lbnQpXG4gIGlmIChzZWdtZW50UGFyYW0pIHtcbiAgICBjb25zdCB2YWx1ZSA9IGludGVycG9sYXRlZFBhcmFtc1tzZWdtZW50UGFyYW0ucGFyYW1OYW1lXVxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjdXJyZW50UGFyYW1zID0ge1xuICAgICAgICAuLi5wYXJlbnRQYXJhbXMsXG4gICAgICAgIFtzZWdtZW50UGFyYW0ucGFyYW1OYW1lXTogdmFsdWUsXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gVHJhY2sgb3B0aW9uYWwgY2F0Y2gtYWxsIHBhcmFtcyB3aXRoIG5vIHZhbHVlIChzZWUgY29tbWVudCBpblxuICAvLyBjcmVhdGUtY29tcG9uZW50LXRyZWUudHN4IGZvciBmdWxsIGV4cGxhbmF0aW9uKS5cbiAgY29uc3Qgb3B0aW9uYWxDYXRjaEFsbFBhcmFtTmFtZTogc3RyaW5nIHwgbnVsbCA9XG4gICAgc2VnbWVudFBhcmFtPy5wYXJhbVR5cGUgPT09ICdvcHRpb25hbC1jYXRjaGFsbCcgJiZcbiAgICAoaW50ZXJwb2xhdGVkUGFyYW1zW3NlZ21lbnRQYXJhbS5wYXJhbU5hbWVdID09PSBudWxsIHx8XG4gICAgICBpbnRlcnBvbGF0ZWRQYXJhbXNbc2VnbWVudFBhcmFtLnBhcmFtTmFtZV0gPT09IHVuZGVmaW5lZClcbiAgICAgID8gc2VnbWVudFBhcmFtLnBhcmFtTmFtZVxuICAgICAgOiBwYXJlbnRPcHRpb25hbENhdGNoQWxsUGFyYW1OYW1lXG5cbiAgY29uc3QgcGFyYW1zID0gY3JlYXRlU2VydmVyUGFyYW1zRm9yTWV0YWRhdGEoXG4gICAgY3VycmVudFBhcmFtcyxcbiAgICBvcHRpb25hbENhdGNoQWxsUGFyYW1OYW1lLFxuICAgIGlzUnVudGltZVByZWZldGNoYWJsZVxuICApXG4gIGNvbnN0IHByb3BzOiBTZWdtZW50UHJvcHMgPSBpc1BhZ2UgPyB7IHBhcmFtcywgc2VhcmNoUGFyYW1zIH0gOiB7IHBhcmFtcyB9XG5cbiAgYXdhaXQgY29sbGVjdE1ldGFkYXRhKHtcbiAgICB0cmVlLFxuICAgIG1ldGFkYXRhSXRlbXMsXG4gICAgZXJyb3JNZXRhZGF0YUl0ZW0sXG4gICAgZXJyb3JDb252ZW50aW9uLFxuICAgIHByb3BzLFxuICAgIHJvdXRlOiBjdXJyZW50VHJlZVByZWZpeFxuICAgICAgLy8gX19QQUdFX18gc2hvdWxkbid0IGJlIHNob3duIGluIGEgcm91dGVcbiAgICAgIC5maWx0ZXIoKHMpID0+IHMgIT09IFBBR0VfU0VHTUVOVF9LRVkpXG4gICAgICAuam9pbignLycpLFxuICB9KVxuXG4gIGZvciAoY29uc3Qga2V5IGluIHBhcmFsbGVsUm91dGVzKSB7XG4gICAgY29uc3QgY2hpbGRUcmVlID0gcGFyYWxsZWxSb3V0ZXNba2V5XVxuICAgIGF3YWl0IHJlc29sdmVNZXRhZGF0YUl0ZW1zSW1wbChcbiAgICAgIG1ldGFkYXRhSXRlbXMsXG4gICAgICBjaGlsZFRyZWUsXG4gICAgICBjdXJyZW50VHJlZVByZWZpeCxcbiAgICAgIGN1cnJlbnRQYXJhbXMsXG4gICAgICBvcHRpb25hbENhdGNoQWxsUGFyYW1OYW1lLFxuICAgICAgc2VhcmNoUGFyYW1zLFxuICAgICAgZXJyb3JDb252ZW50aW9uLFxuICAgICAgZXJyb3JNZXRhZGF0YUl0ZW0sXG4gICAgICBpbnRlcnBvbGF0ZWRQYXJhbXMsXG4gICAgICBpc1J1bnRpbWVQcmVmZXRjaGFibGVcbiAgICApXG4gIH1cblxuICBpZiAoT2JqZWN0LmtleXMocGFyYWxsZWxSb3V0ZXMpLmxlbmd0aCA9PT0gMCAmJiBlcnJvckNvbnZlbnRpb24pIHtcbiAgICAvLyBJZiB0aGVyZSBhcmUgbm8gcGFyYWxsZWwgcm91dGVzLCBwbGFjZSBlcnJvciBtZXRhZGF0YSBhcyB0aGUgbGFzdCBpdGVtLlxuICAgIC8vIGUuZy4gbGF5b3V0IC0+IGxheW91dCAtPiBub3QtZm91bmRcbiAgICBtZXRhZGF0YUl0ZW1zLnB1c2goZXJyb3JNZXRhZGF0YUl0ZW0pXG4gIH1cblxuICByZXR1cm4gbWV0YWRhdGFJdGVtc1xufVxuXG50eXBlIEVycm9yVmlld3BvcnRJdGVtUmVmID0geyBjdXJyZW50OiBWaWV3cG9ydEl0ZW1zW251bWJlcl0gfVxuY29uc3QgcmVzb2x2ZVZpZXdwb3J0SXRlbXMgPSBjYWNoZShhc3luYyBmdW5jdGlvbiAoXG4gIHRyZWU6IExvYWRlclRyZWUsXG4gIHNlYXJjaFBhcmFtczogUHJvbWlzZTxQYXJzZWRVcmxRdWVyeT4sXG4gIGVycm9yQ29udmVudGlvbjogTWV0YWRhdGFFcnJvclR5cGUgfCB1bmRlZmluZWQsXG4gIGludGVycG9sYXRlZFBhcmFtczogUGFyYW1zLFxuICBpc1J1bnRpbWVQcmVmZXRjaGFibGU6IGJvb2xlYW5cbikge1xuICBjb25zdCBwYXJlbnRQYXJhbXMgPSB7fVxuICBjb25zdCB2aWV3cG9ydEl0ZW1zOiBWaWV3cG9ydEl0ZW1zID0gW11cbiAgY29uc3QgZXJyb3JWaWV3cG9ydEl0ZW1SZWY6IEVycm9yVmlld3BvcnRJdGVtUmVmID0ge1xuICAgIGN1cnJlbnQ6IG51bGwsXG4gIH1cbiAgY29uc3QgdHJlZVByZWZpeCA9IHVuZGVmaW5lZFxuICByZXR1cm4gcmVzb2x2ZVZpZXdwb3J0SXRlbXNJbXBsKFxuICAgIHZpZXdwb3J0SXRlbXMsXG4gICAgdHJlZSxcbiAgICB0cmVlUHJlZml4LFxuICAgIHBhcmVudFBhcmFtcyxcbiAgICBudWxsLFxuICAgIHNlYXJjaFBhcmFtcyxcbiAgICBlcnJvckNvbnZlbnRpb24sXG4gICAgZXJyb3JWaWV3cG9ydEl0ZW1SZWYsXG4gICAgaW50ZXJwb2xhdGVkUGFyYW1zLFxuICAgIGlzUnVudGltZVByZWZldGNoYWJsZVxuICApXG59KVxuXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlVmlld3BvcnRJdGVtc0ltcGwoXG4gIHZpZXdwb3J0SXRlbXM6IFZpZXdwb3J0SXRlbXMsXG4gIHRyZWU6IExvYWRlclRyZWUsXG4gIC8qKiBQcm92aWRlZCB0cmVlIGNhbiBiZSBuZXN0ZWQgc3VidHJlZSwgdGhpcyBhcmd1bWVudCBzYXlzIHdoYXQgaXMgdGhlIHBhdGggb2Ygc3VjaCBzdWJ0cmVlICovXG4gIHRyZWVQcmVmaXg6IHVuZGVmaW5lZCB8IHN0cmluZ1tdLFxuICBwYXJlbnRQYXJhbXM6IFBhcmFtcyxcbiAgcGFyZW50T3B0aW9uYWxDYXRjaEFsbFBhcmFtTmFtZTogc3RyaW5nIHwgbnVsbCxcbiAgc2VhcmNoUGFyYW1zOiBQcm9taXNlPFBhcnNlZFVybFF1ZXJ5PixcbiAgZXJyb3JDb252ZW50aW9uOiBNZXRhZGF0YUVycm9yVHlwZSB8IHVuZGVmaW5lZCxcbiAgZXJyb3JWaWV3cG9ydEl0ZW1SZWY6IEVycm9yVmlld3BvcnRJdGVtUmVmLFxuICBpbnRlcnBvbGF0ZWRQYXJhbXM6IFBhcmFtcyxcbiAgaXNSdW50aW1lUHJlZmV0Y2hhYmxlOiBib29sZWFuXG4pOiBQcm9taXNlPFZpZXdwb3J0SXRlbXM+IHtcbiAgY29uc3QgW3NlZ21lbnQsIHBhcmFsbGVsUm91dGVzLCB7IHBhZ2UgfV0gPSB0cmVlXG4gIGNvbnN0IGN1cnJlbnRUcmVlUHJlZml4ID1cbiAgICB0cmVlUHJlZml4ICYmIHRyZWVQcmVmaXgubGVuZ3RoID8gWy4uLnRyZWVQcmVmaXgsIHNlZ21lbnRdIDogW3NlZ21lbnRdXG4gIGNvbnN0IGlzUGFnZSA9IHR5cGVvZiBwYWdlICE9PSAndW5kZWZpbmVkJ1xuXG4gIC8vIEhhbmRsZSBkeW5hbWljIHNlZ21lbnQgcGFyYW1zLlxuICBsZXQgY3VycmVudFBhcmFtcyA9IHBhcmVudFBhcmFtc1xuICBjb25zdCBzZWdtZW50UGFyYW0gPSBnZXRTZWdtZW50UGFyYW0oc2VnbWVudClcbiAgaWYgKHNlZ21lbnRQYXJhbSkge1xuICAgIGNvbnN0IHZhbHVlID0gaW50ZXJwb2xhdGVkUGFyYW1zW3NlZ21lbnRQYXJhbS5wYXJhbU5hbWVdXG4gICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGN1cnJlbnRQYXJhbXMgPSB7XG4gICAgICAgIC4uLnBhcmVudFBhcmFtcyxcbiAgICAgICAgW3NlZ21lbnRQYXJhbS5wYXJhbU5hbWVdOiB2YWx1ZSxcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBUcmFjayBvcHRpb25hbCBjYXRjaC1hbGwgcGFyYW1zIHdpdGggbm8gdmFsdWUgKHNlZSBjb21tZW50IGluXG4gIC8vIGNyZWF0ZS1jb21wb25lbnQtdHJlZS50c3ggZm9yIGZ1bGwgZXhwbGFuYXRpb24pLlxuICBjb25zdCBvcHRpb25hbENhdGNoQWxsUGFyYW1OYW1lOiBzdHJpbmcgfCBudWxsID1cbiAgICBzZWdtZW50UGFyYW0/LnBhcmFtVHlwZSA9PT0gJ29wdGlvbmFsLWNhdGNoYWxsJyAmJlxuICAgIChpbnRlcnBvbGF0ZWRQYXJhbXNbc2VnbWVudFBhcmFtLnBhcmFtTmFtZV0gPT09IG51bGwgfHxcbiAgICAgIGludGVycG9sYXRlZFBhcmFtc1tzZWdtZW50UGFyYW0ucGFyYW1OYW1lXSA9PT0gdW5kZWZpbmVkKVxuICAgICAgPyBzZWdtZW50UGFyYW0ucGFyYW1OYW1lXG4gICAgICA6IHBhcmVudE9wdGlvbmFsQ2F0Y2hBbGxQYXJhbU5hbWVcblxuICBjb25zdCBwYXJhbXMgPSBjcmVhdGVTZXJ2ZXJQYXJhbXNGb3JNZXRhZGF0YShcbiAgICBjdXJyZW50UGFyYW1zLFxuICAgIG9wdGlvbmFsQ2F0Y2hBbGxQYXJhbU5hbWUsXG4gICAgaXNSdW50aW1lUHJlZmV0Y2hhYmxlXG4gIClcblxuICBsZXQgbGF5ZXJQcm9wczogTGF5b3V0UHJvcHMgfCBQYWdlUHJvcHNcbiAgaWYgKGlzUGFnZSkge1xuICAgIGxheWVyUHJvcHMgPSB7XG4gICAgICBwYXJhbXMsXG4gICAgICBzZWFyY2hQYXJhbXMsXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxheWVyUHJvcHMgPSB7XG4gICAgICBwYXJhbXMsXG4gICAgfVxuICB9XG5cbiAgYXdhaXQgY29sbGVjdFZpZXdwb3J0KHtcbiAgICB0cmVlLFxuICAgIHZpZXdwb3J0SXRlbXMsXG4gICAgZXJyb3JWaWV3cG9ydEl0ZW1SZWYsXG4gICAgZXJyb3JDb252ZW50aW9uLFxuICAgIHByb3BzOiBsYXllclByb3BzLFxuICAgIHJvdXRlOiBjdXJyZW50VHJlZVByZWZpeFxuICAgICAgLy8gX19QQUdFX18gc2hvdWxkbid0IGJlIHNob3duIGluIGEgcm91dGVcbiAgICAgIC5maWx0ZXIoKHMpID0+IHMgIT09IFBBR0VfU0VHTUVOVF9LRVkpXG4gICAgICAuam9pbignLycpLFxuICB9KVxuXG4gIGZvciAoY29uc3Qga2V5IGluIHBhcmFsbGVsUm91dGVzKSB7XG4gICAgY29uc3QgY2hpbGRUcmVlID0gcGFyYWxsZWxSb3V0ZXNba2V5XVxuICAgIGF3YWl0IHJlc29sdmVWaWV3cG9ydEl0ZW1zSW1wbChcbiAgICAgIHZpZXdwb3J0SXRlbXMsXG4gICAgICBjaGlsZFRyZWUsXG4gICAgICBjdXJyZW50VHJlZVByZWZpeCxcbiAgICAgIGN1cnJlbnRQYXJhbXMsXG4gICAgICBvcHRpb25hbENhdGNoQWxsUGFyYW1OYW1lLFxuICAgICAgc2VhcmNoUGFyYW1zLFxuICAgICAgZXJyb3JDb252ZW50aW9uLFxuICAgICAgZXJyb3JWaWV3cG9ydEl0ZW1SZWYsXG4gICAgICBpbnRlcnBvbGF0ZWRQYXJhbXMsXG4gICAgICBpc1J1bnRpbWVQcmVmZXRjaGFibGVcbiAgICApXG4gIH1cblxuICBpZiAoT2JqZWN0LmtleXMocGFyYWxsZWxSb3V0ZXMpLmxlbmd0aCA9PT0gMCAmJiBlcnJvckNvbnZlbnRpb24pIHtcbiAgICAvLyBJZiB0aGVyZSBhcmUgbm8gcGFyYWxsZWwgcm91dGVzLCBwbGFjZSBlcnJvciBtZXRhZGF0YSBhcyB0aGUgbGFzdCBpdGVtLlxuICAgIC8vIGUuZy4gbGF5b3V0IC0+IGxheW91dCAtPiBub3QtZm91bmRcbiAgICB2aWV3cG9ydEl0ZW1zLnB1c2goZXJyb3JWaWV3cG9ydEl0ZW1SZWYuY3VycmVudClcbiAgfVxuXG4gIHJldHVybiB2aWV3cG9ydEl0ZW1zXG59XG5cbnR5cGUgV2l0aFRpdGxlID0geyB0aXRsZT86IEFic29sdXRlVGVtcGxhdGVTdHJpbmcgfCBudWxsIH1cbnR5cGUgV2l0aERlc2NyaXB0aW9uID0geyBkZXNjcmlwdGlvbj86IHN0cmluZyB8IG51bGwgfVxuXG5jb25zdCBpc1RpdGxlVHJ1dGh5ID0gKHRpdGxlOiBBYnNvbHV0ZVRlbXBsYXRlU3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT5cbiAgISF0aXRsZT8uYWJzb2x1dGVcbmNvbnN0IGhhc1RpdGxlID0gKG1ldGFkYXRhOiBXaXRoVGl0bGUgfCBudWxsKSA9PiBpc1RpdGxlVHJ1dGh5KG1ldGFkYXRhPy50aXRsZSlcblxuZnVuY3Rpb24gaW5oZXJpdEZyb21NZXRhZGF0YShcbiAgdGFyZ2V0OiAoV2l0aFRpdGxlICYgV2l0aERlc2NyaXB0aW9uKSB8IG51bGwsXG4gIG1ldGFkYXRhOiBSZXNvbHZlZE1ldGFkYXRhXG4pIHtcbiAgaWYgKHRhcmdldCkge1xuICAgIGlmICghaGFzVGl0bGUodGFyZ2V0KSAmJiBoYXNUaXRsZShtZXRhZGF0YSkpIHtcbiAgICAgIHRhcmdldC50aXRsZSA9IG1ldGFkYXRhLnRpdGxlXG4gICAgfVxuICAgIGlmICghdGFyZ2V0LmRlc2NyaXB0aW9uICYmIG1ldGFkYXRhLmRlc2NyaXB0aW9uKSB7XG4gICAgICB0YXJnZXQuZGVzY3JpcHRpb24gPSBtZXRhZGF0YS5kZXNjcmlwdGlvblxuICAgIH1cbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5jb25zdCBjb21tb25PZ0tleXMgPSBbJ3RpdGxlJywgJ2Rlc2NyaXB0aW9uJywgJ2ltYWdlcyddIGFzIGNvbnN0XG5mdW5jdGlvbiBwb3N0UHJvY2Vzc01ldGFkYXRhKFxuICBtZXRhZGF0YTogUmVzb2x2ZWRNZXRhZGF0YSxcbiAgZmF2aWNvbjogYW55LFxuICB0aXRsZVRlbXBsYXRlczogVGl0bGVUZW1wbGF0ZXMsXG4gIG1ldGFkYXRhQ29udGV4dDogTWV0YWRhdGFDb250ZXh0XG4pOiBSZXNvbHZlZE1ldGFkYXRhIHtcbiAgY29uc3QgeyBvcGVuR3JhcGgsIHR3aXR0ZXIgfSA9IG1ldGFkYXRhXG5cbiAgaWYgKG9wZW5HcmFwaCkge1xuICAgIC8vIElmIHRoZXJlJ3Mgb3BlbkdyYXBoIGluZm9ybWF0aW9uIGJ1dCBub3QgY29uZmlndXJlZCBpbiB0d2l0dGVyLFxuICAgIC8vIGluaGVyaXQgdGhlbSBmcm9tIG9wZW5HcmFwaCBtZXRhZGF0YS5cbiAgICBsZXQgYXV0b0ZpbGxQcm9wczogUGFydGlhbDx7XG4gICAgICBbS2V5IGluICh0eXBlb2YgY29tbW9uT2dLZXlzKVtudW1iZXJdXTogTm9uTnVsbGFibGU8XG4gICAgICAgIFJlc29sdmVkTWV0YWRhdGFbJ29wZW5HcmFwaCddXG4gICAgICA+W0tleV1cbiAgICB9PiA9IHt9XG4gICAgY29uc3QgaGFzVHdUaXRsZSA9IGhhc1RpdGxlKHR3aXR0ZXIpXG4gICAgY29uc3QgaGFzVHdEZXNjcmlwdGlvbiA9IHR3aXR0ZXI/LmRlc2NyaXB0aW9uXG4gICAgY29uc3QgaGFzVHdJbWFnZXMgPSBCb29sZWFuKFxuICAgICAgdHdpdHRlcj8uaGFzT3duUHJvcGVydHkoJ2ltYWdlcycpICYmIHR3aXR0ZXIuaW1hZ2VzXG4gICAgKVxuICAgIGlmICghaGFzVHdUaXRsZSkge1xuICAgICAgaWYgKGlzVGl0bGVUcnV0aHkob3BlbkdyYXBoLnRpdGxlKSkge1xuICAgICAgICBhdXRvRmlsbFByb3BzLnRpdGxlID0gb3BlbkdyYXBoLnRpdGxlXG4gICAgICB9IGVsc2UgaWYgKG1ldGFkYXRhLnRpdGxlICYmIGlzVGl0bGVUcnV0aHkobWV0YWRhdGEudGl0bGUpKSB7XG4gICAgICAgIGF1dG9GaWxsUHJvcHMudGl0bGUgPSBtZXRhZGF0YS50aXRsZVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWhhc1R3RGVzY3JpcHRpb24pXG4gICAgICBhdXRvRmlsbFByb3BzLmRlc2NyaXB0aW9uID1cbiAgICAgICAgb3BlbkdyYXBoLmRlc2NyaXB0aW9uIHx8IG1ldGFkYXRhLmRlc2NyaXB0aW9uIHx8IHVuZGVmaW5lZFxuICAgIGlmICghaGFzVHdJbWFnZXMpIGF1dG9GaWxsUHJvcHMuaW1hZ2VzID0gb3BlbkdyYXBoLmltYWdlc1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKGF1dG9GaWxsUHJvcHMpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHBhcnRpYWxUd2l0dGVyID0gcmVzb2x2ZVR3aXR0ZXIoXG4gICAgICAgIGF1dG9GaWxsUHJvcHMsXG4gICAgICAgIG5vcm1hbGl6ZU1ldGFkYXRhQmFzZShtZXRhZGF0YS5tZXRhZGF0YUJhc2UpLFxuICAgICAgICBtZXRhZGF0YUNvbnRleHQsXG4gICAgICAgIHRpdGxlVGVtcGxhdGVzLnR3aXR0ZXJcbiAgICAgIClcbiAgICAgIGlmIChtZXRhZGF0YS50d2l0dGVyKSB7XG4gICAgICAgIG1ldGFkYXRhLnR3aXR0ZXIgPSBPYmplY3QuYXNzaWduKHt9LCBtZXRhZGF0YS50d2l0dGVyLCB7XG4gICAgICAgICAgLi4uKCFoYXNUd1RpdGxlICYmIHsgdGl0bGU6IHBhcnRpYWxUd2l0dGVyPy50aXRsZSB9KSxcbiAgICAgICAgICAuLi4oIWhhc1R3RGVzY3JpcHRpb24gJiYge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246IHBhcnRpYWxUd2l0dGVyPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oIWhhc1R3SW1hZ2VzICYmIHsgaW1hZ2VzOiBwYXJ0aWFsVHdpdHRlcj8uaW1hZ2VzIH0pLFxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWV0YWRhdGEudHdpdHRlciA9IGNvbnZlcnRVcmxzVG9TdHJpbmdzKHBhcnRpYWxUd2l0dGVyKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIElmIHRoZXJlJ3Mgbm8gdGl0bGUgYW5kIGRlc2NyaXB0aW9uIGNvbmZpZ3VyZWQgaW4gb3BlbkdyYXBoIG9yIHR3aXR0ZXIsXG4gIC8vIHVzZSB0aGUgdGl0bGUgYW5kIGRlc2NyaXB0aW9uIGZyb20gbWV0YWRhdGEuXG4gIGluaGVyaXRGcm9tTWV0YWRhdGEob3BlbkdyYXBoLCBtZXRhZGF0YSlcbiAgaW5oZXJpdEZyb21NZXRhZGF0YSh0d2l0dGVyLCBtZXRhZGF0YSlcblxuICBpZiAoZmF2aWNvbikge1xuICAgIGlmICghbWV0YWRhdGEuaWNvbnMpIHtcbiAgICAgIG1ldGFkYXRhLmljb25zID0ge1xuICAgICAgICBpY29uOiBbXSxcbiAgICAgICAgYXBwbGU6IFtdLFxuICAgICAgfVxuICAgIH1cblxuICAgIG1ldGFkYXRhLmljb25zLmljb24udW5zaGlmdChmYXZpY29uKVxuICB9XG5cbiAgcmV0dXJuIG1ldGFkYXRhXG59XG5cbnR5cGUgUmVzdWx0PFQ+ID0gbnVsbCB8IFQgfCBQcm9taXNlPG51bGwgfCBUPiB8IFByb21pc2VMaWtlPG51bGwgfCBUPlxuXG5mdW5jdGlvbiBwcmVyZW5kZXJNZXRhZGF0YShtZXRhZGF0YUl0ZW1zOiBNZXRhZGF0YUl0ZW1zKSB7XG4gIC8vIElmIHRoZSBpbmRleCBpcyBhIGZ1bmN0aW9uIHRoZW4gaXQgaXMgYSByZXNvbHZlciBhbmQgdGhlIG5leHQgc2xvdFxuICAvLyBpcyB0aGUgY29ycmVzcG9uZGluZyByZXN1bHQuIElmIHRoZSBpbmRleCBpcyBub3QgYSBmdW5jdGlvbiBpdCBpcyB0aGUgcmVzdWx0XG4gIC8vIGl0c2VsZi5cbiAgY29uc3QgcmVzb2x2ZXJzQW5kUmVzdWx0czogQXJyYXk8XG4gICAgKCh2YWx1ZTogUmVzb2x2ZWRNZXRhZGF0YSkgPT4gdm9pZCkgfCBSZXN1bHQ8TWV0YWRhdGE+XG4gID4gPSBbXVxuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGFkYXRhSXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBtZXRhZGF0YUV4cG9ydCA9IG1ldGFkYXRhSXRlbXNbaV1bMF1cbiAgICBnZXRSZXN1bHQ8TWV0YWRhdGE+KHJlc29sdmVyc0FuZFJlc3VsdHMsIG1ldGFkYXRhRXhwb3J0KVxuICB9XG4gIHJldHVybiByZXNvbHZlcnNBbmRSZXN1bHRzXG59XG5cbmZ1bmN0aW9uIHByZXJlbmRlclZpZXdwb3J0KHZpZXdwb3J0SXRlbXM6IFZpZXdwb3J0SXRlbXMpIHtcbiAgLy8gSWYgdGhlIGluZGV4IGlzIGEgZnVuY3Rpb24gdGhlbiBpdCBpcyBhIHJlc29sdmVyIGFuZCB0aGUgbmV4dCBzbG90XG4gIC8vIGlzIHRoZSBjb3JyZXNwb25kaW5nIHJlc3VsdC4gSWYgdGhlIGluZGV4IGlzIG5vdCBhIGZ1bmN0aW9uIGl0IGlzIHRoZSByZXN1bHRcbiAgLy8gaXRzZWxmLlxuICBjb25zdCByZXNvbHZlcnNBbmRSZXN1bHRzOiBBcnJheTxcbiAgICAoKHZhbHVlOiBSZXNvbHZlZFZpZXdwb3J0KSA9PiB2b2lkKSB8IFJlc3VsdDxWaWV3cG9ydD5cbiAgPiA9IFtdXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmlld3BvcnRJdGVtcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHZpZXdwb3J0RXhwb3J0ID0gdmlld3BvcnRJdGVtc1tpXVxuICAgIGdldFJlc3VsdDxWaWV3cG9ydD4ocmVzb2x2ZXJzQW5kUmVzdWx0cywgdmlld3BvcnRFeHBvcnQpXG4gIH1cbiAgcmV0dXJuIHJlc29sdmVyc0FuZFJlc3VsdHNcbn1cblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9XG5cbmZ1bmN0aW9uIGdldFJlc3VsdDxURGF0YSBleHRlbmRzIG9iamVjdD4oXG4gIHJlc29sdmVyc0FuZFJlc3VsdHM6IEFycmF5PFxuICAgICgodmFsdWU6IFJlc29sdmVkPFREYXRhPikgPT4gdm9pZCkgfCBSZXN1bHQ8VERhdGE+XG4gID4sXG4gIGV4cG9ydEZvclJlc3VsdDogbnVsbCB8IFREYXRhIHwgSW5zdHJ1bWVudGVkUmVzb2x2ZXI8VERhdGE+XG4pIHtcbiAgaWYgKHR5cGVvZiBleHBvcnRGb3JSZXN1bHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBJZiB0aGUgZnVuY3Rpb24gaXMgYSAndXNlIGNhY2hlJyBmdW5jdGlvbiB0aGF0IHVzZXMgdGhlIHBhcmVudCBkYXRhIGFzXG4gICAgLy8gdGhlIHNlY29uZCBhcmd1bWVudCwgd2UgZG9uJ3Qgd2FudCB0byBlYWdlcmx5IGV4ZWN1dGUgaXQgZHVyaW5nXG4gICAgLy8gbWV0YWRhdGEvdmlld3BvcnQgcHJlLXJlbmRlcmluZywgYXMgdGhlIHBhcmVudCBkYXRhIG1pZ2h0IGFsc28gYmVcbiAgICAvLyBjb21wdXRlZCBmcm9tIGFub3RoZXIgJ3VzZSBjYWNoZScgZnVuY3Rpb24uIFRvIGVuc3VyZSB0aGF0IHRoZSBoYW5naW5nXG4gICAgLy8gaW5wdXQgYWJvcnQgc2lnbmFsIGhhbmRsaW5nIHdvcmtzIGluIHRoaXMgY2FzZSAoaS5lLiB0aGUgZGVwZW5kaW5nXG4gICAgLy8gZnVuY3Rpb24gd2FpdHMgZm9yIHRoZSBjYWNoZWQgaW5wdXQgdG8gcmVzb2x2ZSB3aGlsZSBlbmNvZGluZyBpdHMgYXJncyksXG4gICAgLy8gdGhleSBtdXN0IGJlIGNhbGxlZCBzZXF1ZW50aWFsbHkuIFRoaXMgY2FuIGJlIGFjY29tcGxpc2hlZCBieSB3cmFwcGluZ1xuICAgIC8vIHRoZSBjYWxsIGluIGEgbGF6eSBwcm9taXNlLCBzbyB0aGF0IHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZFxuICAgIC8vIHdoZW4gdGhlIHJlc3VsdCBpcyBhY3R1YWxseSBhd2FpdGVkLlxuICAgIGNvbnN0IHVzZUNhY2hlRnVuY3Rpb25JbmZvID0gZ2V0VXNlQ2FjaGVGdW5jdGlvbkluZm8oXG4gICAgICBleHBvcnRGb3JSZXN1bHQuJCRvcmlnaW5hbFxuICAgIClcbiAgICBpZiAodXNlQ2FjaGVGdW5jdGlvbkluZm8gJiYgdXNlQ2FjaGVGdW5jdGlvbkluZm8udXNlZEFyZ3NbMV0pIHtcbiAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZTxSZXNvbHZlZDxURGF0YT4+KChyZXNvbHZlKSA9PlxuICAgICAgICByZXNvbHZlcnNBbmRSZXN1bHRzLnB1c2gocmVzb2x2ZSlcbiAgICAgIClcbiAgICAgIHJlc29sdmVyc0FuZFJlc3VsdHMucHVzaChcbiAgICAgICAgY3JlYXRlTGF6eVJlc3VsdChhc3luYyAoKSA9PiBleHBvcnRGb3JSZXN1bHQocHJvbWlzZSkpXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCByZXN1bHQ6IFREYXRhIHwgUHJvbWlzZTxURGF0YT5cbiAgICAgIGlmICh1c2VDYWNoZUZ1bmN0aW9uSW5mbykge1xuICAgICAgICByZXNvbHZlcnNBbmRSZXN1bHRzLnB1c2gobm9vcClcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBXZSBpbnRlbnRpb25hbGx5IG9taXQgdGhlIHBhcmVudCBhcmd1bWVudCwgYmVjYXVzZVxuICAgICAgICAvLyB3ZSBrbm93IGZyb20gdGhlIGNoZWNrIGFib3ZlIHRoYXQgdGhlICd1c2UgY2FjaGUnIGZ1bmN0aW9uIGRvZXMgbm90XG4gICAgICAgIC8vIHVzZSBpdC5cbiAgICAgICAgcmVzdWx0ID0gZXhwb3J0Rm9yUmVzdWx0KClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IGV4cG9ydEZvclJlc3VsdChcbiAgICAgICAgICBuZXcgUHJvbWlzZTxSZXNvbHZlZDxURGF0YT4+KChyZXNvbHZlKSA9PlxuICAgICAgICAgICAgcmVzb2x2ZXJzQW5kUmVzdWx0cy5wdXNoKHJlc29sdmUpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICB9XG4gICAgICByZXNvbHZlcnNBbmRSZXN1bHRzLnB1c2gocmVzdWx0KVxuICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgLy8gc2luY2Ugd2UgZWFnZXIgZXhlY3V0ZSBnZW5lcmF0ZU1ldGFkYXRhIGFuZFxuICAgICAgICAvLyB0aGV5IGNhbiByZWplY3QgYXQgYW55dGltZSB3ZSBuZWVkIHRvIGVuc3VyZVxuICAgICAgICAvLyB3ZSBhdHRhY2ggdGhlIGNhdGNoIGhhbmRsZXIgcmlnaHQgYXdheSB0b1xuICAgICAgICAvLyBwcmV2ZW50IHVuaGFuZGxlZCByZWplY3Rpb25zIGNyYXNoaW5nIHRoZSBwcm9jZXNzXG4gICAgICAgIHJlc3VsdC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIF9fbmV4dEVycm9yOiBlcnIsXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgZXhwb3J0Rm9yUmVzdWx0ID09PSAnb2JqZWN0Jykge1xuICAgIHJlc29sdmVyc0FuZFJlc3VsdHMucHVzaChleHBvcnRGb3JSZXN1bHQpXG4gIH0gZWxzZSB7XG4gICAgcmVzb2x2ZXJzQW5kUmVzdWx0cy5wdXNoKG51bGwpXG4gIH1cbn1cblxuZnVuY3Rpb24gZnJlZXplSW5EZXY8VCBleHRlbmRzIG9iamVjdD4ob2JqOiBUKTogVCB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgIHJldHVybiAoXG4gICAgICByZXF1aXJlKCcuLi8uLi9zaGFyZWQvbGliL2RlZXAtZnJlZXplJykgYXMgdHlwZW9mIGltcG9ydCgnLi4vLi4vc2hhcmVkL2xpYi9kZWVwLWZyZWV6ZScpXG4gICAgKS5kZWVwRnJlZXplKG9iaikgYXMgVFxuICB9XG5cbiAgcmV0dXJuIG9ialxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWNjdW11bGF0ZU1ldGFkYXRhKFxuICByb3V0ZTogc3RyaW5nLFxuICBtZXRhZGF0YUl0ZW1zOiBNZXRhZGF0YUl0ZW1zLFxuICBwYXRobmFtZTogUHJvbWlzZTxzdHJpbmc+LFxuICBtZXRhZGF0YUNvbnRleHQ6IE1ldGFkYXRhQ29udGV4dFxuKTogUHJvbWlzZTxSZXNvbHZlZE1ldGFkYXRhPiB7XG4gIGxldCByZXNvbHZlZE1ldGFkYXRhID0gY3JlYXRlRGVmYXVsdE1ldGFkYXRhKClcblxuICBsZXQgdGl0bGVUZW1wbGF0ZXM6IFRpdGxlVGVtcGxhdGVzID0ge1xuICAgIHRpdGxlOiBudWxsLFxuICAgIHR3aXR0ZXI6IG51bGwsXG4gICAgb3BlbkdyYXBoOiBudWxsLFxuICB9XG5cbiAgY29uc3QgYnVpbGRTdGF0ZSA9IHtcbiAgICB3YXJuaW5nczogbmV3IFNldDxzdHJpbmc+KCksXG4gIH1cblxuICBsZXQgZmF2aWNvblxuXG4gIC8vIENvbGxlY3QgdGhlIHN0YXRpYyBpY29ucyBpbiB0aGUgbW9zdCBsZWFmIG5vZGUsXG4gIC8vIHNpbmNlIHdlIGRvbid0IGNvbGxlY3QgYWxsIHRoZSBzdGF0aWMgbWV0YWRhdGEgaWNvbnMgaW4gdGhlIHBhcmVudCBzZWdtZW50cy5cbiAgY29uc3QgbGVhZlNlZ21lbnRTdGF0aWNJY29ucyA9IHtcbiAgICBpY29uOiBbXSxcbiAgICBhcHBsZTogW10sXG4gIH1cblxuICBjb25zdCByZXNvbHZlcnNBbmRSZXN1bHRzID0gcHJlcmVuZGVyTWV0YWRhdGEobWV0YWRhdGFJdGVtcylcbiAgbGV0IHJlc3VsdEluZGV4ID0gMFxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWV0YWRhdGFJdGVtcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHN0YXRpY0ZpbGVzTWV0YWRhdGEgPSBtZXRhZGF0YUl0ZW1zW2ldWzFdXG4gICAgLy8gVHJlYXQgZmF2aWNvbiBhcyBzcGVjaWFsIGNhc2UsIGl0IHNob3VsZCBiZSB0aGUgZmlyc3QgaWNvbiBpbiB0aGUgbGlzdFxuICAgIC8vIGkgPD0gMSByZXByZXNlbnRzIHJvb3QgbGF5b3V0LCBhbmQgaWYgY3VycmVudCBwYWdlIGlzIGFsc28gYXQgcm9vdFxuICAgIGlmIChpIDw9IDEgJiYgaXNGYXZpY29uKHN0YXRpY0ZpbGVzTWV0YWRhdGE/Lmljb24/LlswXSkpIHtcbiAgICAgIGNvbnN0IGljb25Nb2QgPSBzdGF0aWNGaWxlc01ldGFkYXRhPy5pY29uPy5zaGlmdCgpXG4gICAgICBpZiAoaSA9PT0gMCkgZmF2aWNvbiA9IGljb25Nb2RcbiAgICB9XG5cbiAgICBsZXQgcGVuZGluZ01ldGFkYXRhID0gcmVzb2x2ZXJzQW5kUmVzdWx0c1tyZXN1bHRJbmRleCsrXVxuICAgIGlmICh0eXBlb2YgcGVuZGluZ01ldGFkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyBUaGlzIG1ldGFkYXRhIGl0ZW0gaGFkIGEgYGdlbmVyYXRlTWV0YWRhdGFgIGFuZFxuICAgICAgLy8gd2UgbmVlZCB0byBwcm92aWRlIHRoZSBjdXJyZW50bHkgcmVzb2x2ZWQgbWV0YWRhdGFcbiAgICAgIC8vIHRvIGl0IGJlZm9yZSB3ZSBjb250aW51ZTtcbiAgICAgIGNvbnN0IHJlc29sdmVQYXJlbnRNZXRhZGF0YSA9IHBlbmRpbmdNZXRhZGF0YVxuICAgICAgLy8gd2Uga25vdyB0aGF0IHRoZSBuZXh0IGl0ZW0gaXMgYSByZXN1bHQgaWYgdGhpcyBpdGVtXG4gICAgICAvLyB3YXMgYSByZXNvbHZlclxuICAgICAgcGVuZGluZ01ldGFkYXRhID0gcmVzb2x2ZXJzQW5kUmVzdWx0c1tyZXN1bHRJbmRleCsrXSBhcyBSZXN1bHQ8TWV0YWRhdGE+XG5cbiAgICAgIHJlc29sdmVQYXJlbnRNZXRhZGF0YShmcmVlemVJbkRldihyZXNvbHZlZE1ldGFkYXRhKSlcbiAgICB9XG4gICAgLy8gT3RoZXJ3aXNlIHRoZSBpdGVtIHdhcyBlaXRoZXIgbnVsbCBvciBhIHN0YXRpYyBleHBvcnRcblxuICAgIGxldCBtZXRhZGF0YTogTWV0YWRhdGEgfCBudWxsXG4gICAgaWYgKGlzUHJvbWlzZUxpa2UocGVuZGluZ01ldGFkYXRhKSkge1xuICAgICAgbWV0YWRhdGEgPSBhd2FpdCBwZW5kaW5nTWV0YWRhdGFcbiAgICB9IGVsc2Uge1xuICAgICAgbWV0YWRhdGEgPSBwZW5kaW5nTWV0YWRhdGFcbiAgICB9XG5cbiAgICByZXNvbHZlZE1ldGFkYXRhID0gYXdhaXQgbWVyZ2VNZXRhZGF0YShyb3V0ZSwgcGF0aG5hbWUsIHtcbiAgICAgIHJlc29sdmVkTWV0YWRhdGEsXG4gICAgICBtZXRhZGF0YSxcbiAgICAgIG1ldGFkYXRhQ29udGV4dCxcbiAgICAgIHN0YXRpY0ZpbGVzTWV0YWRhdGEsXG4gICAgICB0aXRsZVRlbXBsYXRlcyxcbiAgICAgIGJ1aWxkU3RhdGUsXG4gICAgICBsZWFmU2VnbWVudFN0YXRpY0ljb25zLFxuICAgIH0pXG5cbiAgICAvLyBJZiB0aGUgbGF5b3V0IGlzIHRoZSBzYW1lIGxheWVyIHdpdGggcGFnZSwgc2tpcCB0aGUgbGVhZiBsYXlvdXQgYW5kIGxlYWYgcGFnZVxuICAgIC8vIFRoZSBsZWFmIGxheW91dCBhbmQgcGFnZSBhcmUgdGhlIGxhc3QgdHdvIGl0ZW1zXG4gICAgaWYgKGkgPCBtZXRhZGF0YUl0ZW1zLmxlbmd0aCAtIDIpIHtcbiAgICAgIHRpdGxlVGVtcGxhdGVzID0ge1xuICAgICAgICB0aXRsZTogcmVzb2x2ZWRNZXRhZGF0YS50aXRsZT8udGVtcGxhdGUgfHwgbnVsbCxcbiAgICAgICAgb3BlbkdyYXBoOiByZXNvbHZlZE1ldGFkYXRhLm9wZW5HcmFwaD8udGl0bGUudGVtcGxhdGUgfHwgbnVsbCxcbiAgICAgICAgdHdpdHRlcjogcmVzb2x2ZWRNZXRhZGF0YS50d2l0dGVyPy50aXRsZS50ZW1wbGF0ZSB8fCBudWxsLFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChcbiAgICBsZWFmU2VnbWVudFN0YXRpY0ljb25zLmljb24ubGVuZ3RoID4gMCB8fFxuICAgIGxlYWZTZWdtZW50U3RhdGljSWNvbnMuYXBwbGUubGVuZ3RoID4gMFxuICApIHtcbiAgICBpZiAoIXJlc29sdmVkTWV0YWRhdGEuaWNvbnMpIHtcbiAgICAgIHJlc29sdmVkTWV0YWRhdGEuaWNvbnMgPSB7XG4gICAgICAgIGljb246IFtdLFxuICAgICAgICBhcHBsZTogW10sXG4gICAgICB9XG4gICAgICBpZiAobGVhZlNlZ21lbnRTdGF0aWNJY29ucy5pY29uLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzb2x2ZWRNZXRhZGF0YS5pY29ucy5pY29uLnVuc2hpZnQoLi4ubGVhZlNlZ21lbnRTdGF0aWNJY29ucy5pY29uKVxuICAgICAgfVxuICAgICAgaWYgKGxlYWZTZWdtZW50U3RhdGljSWNvbnMuYXBwbGUubGVuZ3RoID4gMCkge1xuICAgICAgICByZXNvbHZlZE1ldGFkYXRhLmljb25zLmFwcGxlLnVuc2hpZnQoLi4ubGVhZlNlZ21lbnRTdGF0aWNJY29ucy5hcHBsZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBPbmx5IGxvZyB3YXJuaW5ncyBpZiB0aGVyZSBhcmUgYW55LCBhbmQgb25seSBvbmNlIGFmdGVyIHRoZSBtZXRhZGF0YSByZXNvbHZpbmcgcHJvY2VzcyBpcyBmaW5pc2hlZFxuICBpZiAoYnVpbGRTdGF0ZS53YXJuaW5ncy5zaXplID4gMCkge1xuICAgIGZvciAoY29uc3Qgd2FybmluZyBvZiBidWlsZFN0YXRlLndhcm5pbmdzKSB7XG4gICAgICBMb2cud2Fybih3YXJuaW5nKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwb3N0UHJvY2Vzc01ldGFkYXRhKFxuICAgIHJlc29sdmVkTWV0YWRhdGEsXG4gICAgZmF2aWNvbixcbiAgICB0aXRsZVRlbXBsYXRlcyxcbiAgICBtZXRhZGF0YUNvbnRleHRcbiAgKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWNjdW11bGF0ZVZpZXdwb3J0KFxuICB2aWV3cG9ydEl0ZW1zOiBWaWV3cG9ydEl0ZW1zXG4pOiBQcm9taXNlPFJlc29sdmVkVmlld3BvcnQ+IHtcbiAgbGV0IHJlc29sdmVkVmlld3BvcnQ6IFJlc29sdmVkVmlld3BvcnQgPSBjcmVhdGVEZWZhdWx0Vmlld3BvcnQoKVxuXG4gIGNvbnN0IHJlc29sdmVyc0FuZFJlc3VsdHMgPSBwcmVyZW5kZXJWaWV3cG9ydCh2aWV3cG9ydEl0ZW1zKVxuICBsZXQgaSA9IDBcblxuICB3aGlsZSAoaSA8IHJlc29sdmVyc0FuZFJlc3VsdHMubGVuZ3RoKSB7XG4gICAgbGV0IHBlbmRpbmdWaWV3cG9ydCA9IHJlc29sdmVyc0FuZFJlc3VsdHNbaSsrXVxuICAgIGlmICh0eXBlb2YgcGVuZGluZ1ZpZXdwb3J0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyB0aGlzIHZpZXdwb3J0IGl0ZW0gaGFkIGEgYGdlbmVyYXRlVmlld3BvcnRgIGFuZFxuICAgICAgLy8gd2UgbmVlZCB0byBwcm92aWRlIHRoZSBjdXJyZW50bHkgcmVzb2x2ZWQgdmlld3BvcnRcbiAgICAgIC8vIHRvIGl0IGJlZm9yZSB3ZSBjb250aW51ZTtcbiAgICAgIGNvbnN0IHJlc29sdmVQYXJlbnRWaWV3cG9ydCA9IHBlbmRpbmdWaWV3cG9ydFxuICAgICAgLy8gd2Uga25vdyB0aGF0IHRoZSBuZXh0IGl0ZW0gaXMgYSByZXN1bHQgaWYgdGhpcyBpdGVtXG4gICAgICAvLyB3YXMgYSByZXNvbHZlclxuICAgICAgcGVuZGluZ1ZpZXdwb3J0ID0gcmVzb2x2ZXJzQW5kUmVzdWx0c1tpKytdIGFzIFJlc3VsdDxWaWV3cG9ydD5cblxuICAgICAgcmVzb2x2ZVBhcmVudFZpZXdwb3J0KGZyZWV6ZUluRGV2KHJlc29sdmVkVmlld3BvcnQpKVxuICAgIH1cbiAgICAvLyBPdGhlcndpc2UgdGhlIGl0ZW0gd2FzIGVpdGhlciBudWxsIG9yIGEgc3RhdGljIGV4cG9ydFxuXG4gICAgbGV0IHZpZXdwb3J0OiBWaWV3cG9ydCB8IG51bGxcbiAgICBpZiAoaXNQcm9taXNlTGlrZShwZW5kaW5nVmlld3BvcnQpKSB7XG4gICAgICB2aWV3cG9ydCA9IGF3YWl0IHBlbmRpbmdWaWV3cG9ydFxuICAgIH0gZWxzZSB7XG4gICAgICB2aWV3cG9ydCA9IHBlbmRpbmdWaWV3cG9ydFxuICAgIH1cblxuICAgIHJlc29sdmVkVmlld3BvcnQgPSBtZXJnZVZpZXdwb3J0KHsgcmVzb2x2ZWRWaWV3cG9ydCwgdmlld3BvcnQgfSlcbiAgfVxuXG4gIHJldHVybiByZXNvbHZlZFZpZXdwb3J0XG59XG5cbi8vIEV4cG9zZWQgQVBJIGZvciBtZXRhZGF0YSBjb21wb25lbnQsIHRoYXQgZGlyZWN0bHkgcmVzb2x2ZSB0aGUgbG9hZGVyIHRyZWUgYW5kIHJlbGF0ZWQgY29udGV4dCBhcyByZXNvbHZlZCBtZXRhZGF0YS5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlTWV0YWRhdGEoXG4gIHRyZWU6IExvYWRlclRyZWUsXG4gIHBhdGhuYW1lOiBQcm9taXNlPHN0cmluZz4sXG4gIHNlYXJjaFBhcmFtczogUHJvbWlzZTxQYXJzZWRVcmxRdWVyeT4sXG4gIGVycm9yQ29udmVudGlvbjogTWV0YWRhdGFFcnJvclR5cGUgfCB1bmRlZmluZWQsXG4gIGludGVycG9sYXRlZFBhcmFtczogUGFyYW1zLFxuICBtZXRhZGF0YUNvbnRleHQ6IE1ldGFkYXRhQ29udGV4dCxcbiAgaXNSdW50aW1lUHJlZmV0Y2hhYmxlOiBib29sZWFuXG4pOiBQcm9taXNlPFJlc29sdmVkTWV0YWRhdGE+IHtcbiAgY29uc3QgbWV0YWRhdGFJdGVtcyA9IGF3YWl0IHJlc29sdmVNZXRhZGF0YUl0ZW1zKFxuICAgIHRyZWUsXG4gICAgc2VhcmNoUGFyYW1zLFxuICAgIGVycm9yQ29udmVudGlvbixcbiAgICBpbnRlcnBvbGF0ZWRQYXJhbXMsXG4gICAgaXNSdW50aW1lUHJlZmV0Y2hhYmxlXG4gIClcbiAgY29uc3Qgd29ya1N0b3JlID0gd29ya0FzeW5jU3RvcmFnZS5nZXRTdG9yZSgpXG4gIGlmICghd29ya1N0b3JlKSB7XG4gICAgdGhyb3cgbmV3IEludmFyaWFudEVycm9yKCdFeHBlY3RlZCB3b3JrU3RvcmUgdG8gYmUgaW5pdGlhbGl6ZWQnKVxuICB9XG4gIHJldHVybiBhY2N1bXVsYXRlTWV0YWRhdGEoXG4gICAgd29ya1N0b3JlLnJvdXRlLFxuICAgIG1ldGFkYXRhSXRlbXMsXG4gICAgcGF0aG5hbWUsXG4gICAgbWV0YWRhdGFDb250ZXh0XG4gIClcbn1cblxuLy8gRXhwb3NlZCBBUEkgZm9yIHZpZXdwb3J0IGNvbXBvbmVudCwgdGhhdCBkaXJlY3RseSByZXNvbHZlIHRoZSBsb2FkZXIgdHJlZSBhbmQgcmVsYXRlZCBjb250ZXh0IGFzIHJlc29sdmVkIHZpZXdwb3J0LlxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVWaWV3cG9ydChcbiAgdHJlZTogTG9hZGVyVHJlZSxcbiAgc2VhcmNoUGFyYW1zOiBQcm9taXNlPFBhcnNlZFVybFF1ZXJ5PixcbiAgZXJyb3JDb252ZW50aW9uOiBNZXRhZGF0YUVycm9yVHlwZSB8IHVuZGVmaW5lZCxcbiAgaW50ZXJwb2xhdGVkUGFyYW1zOiBQYXJhbXMsXG4gIGlzUnVudGltZVByZWZldGNoYWJsZTogYm9vbGVhblxuKTogUHJvbWlzZTxSZXNvbHZlZFZpZXdwb3J0PiB7XG4gIGNvbnN0IHZpZXdwb3J0SXRlbXMgPSBhd2FpdCByZXNvbHZlVmlld3BvcnRJdGVtcyhcbiAgICB0cmVlLFxuICAgIHNlYXJjaFBhcmFtcyxcbiAgICBlcnJvckNvbnZlbnRpb24sXG4gICAgaW50ZXJwb2xhdGVkUGFyYW1zLFxuICAgIGlzUnVudGltZVByZWZldGNoYWJsZVxuICApXG4gIHJldHVybiBhY2N1bXVsYXRlVmlld3BvcnQodmlld3BvcnRJdGVtcylcbn1cblxuZnVuY3Rpb24gaXNQcm9taXNlTGlrZTxUPihcbiAgdmFsdWU6IHVua25vd24gfCBQcm9taXNlTGlrZTxUPlxuKTogdmFsdWUgaXMgUHJvbWlzZUxpa2U8VD4ge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgIHR5cGVvZiAodmFsdWUgYXMgUHJvbWlzZUxpa2U8dW5rbm93bj4pLnRoZW4gPT09ICdmdW5jdGlvbidcbiAgKVxufVxuIl0sIm5hbWVzIjpbImFjY3VtdWxhdGVNZXRhZGF0YSIsImFjY3VtdWxhdGVWaWV3cG9ydCIsInJlc29sdmVNZXRhZGF0YSIsInJlc29sdmVWaWV3cG9ydCIsImlzRmF2aWNvbiIsImljb24iLCJ1cmwiLCJ0b1N0cmluZyIsInN0YXJ0c1dpdGgiLCJ0eXBlIiwiY29udmVydFVybHNUb1N0cmluZ3MiLCJpbnB1dCIsIlVSTCIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsIml0ZW0iLCJyZXN1bHQiLCJrZXkiLCJ2YWx1ZSIsIk9iamVjdCIsImVudHJpZXMiLCJub3JtYWxpemVNZXRhZGF0YUJhc2UiLCJtZXRhZGF0YUJhc2UiLCJFcnJvciIsIm1lcmdlU3RhdGljTWV0YWRhdGEiLCJzb3VyY2UiLCJ0YXJnZXQiLCJzdGF0aWNGaWxlc01ldGFkYXRhIiwibWV0YWRhdGFDb250ZXh0IiwidGl0bGVUZW1wbGF0ZXMiLCJsZWFmU2VnbWVudFN0YXRpY0ljb25zIiwicGF0aG5hbWUiLCJhcHBsZSIsIm9wZW5HcmFwaCIsInR3aXR0ZXIiLCJtYW5pZmVzdCIsImhhc093blByb3BlcnR5IiwicmVzb2x2ZWRUd2l0dGVyIiwicmVzb2x2ZVR3aXR0ZXIiLCJpbWFnZXMiLCJpc1N0YXRpY01ldGFkYXRhUm91dGVGaWxlIiwicmVzb2x2ZWRPcGVuR3JhcGgiLCJyZXNvbHZlT3BlbkdyYXBoIiwibWVyZ2VNZXRhZGF0YSIsInJvdXRlIiwibWV0YWRhdGEiLCJyZXNvbHZlZE1ldGFkYXRhIiwiYnVpbGRTdGF0ZSIsIm5ld1Jlc29sdmVkTWV0YWRhdGEiLCJzdHJ1Y3R1cmVkQ2xvbmUiLCJ1bmRlZmluZWQiLCJrZXlfIiwidGl0bGUiLCJyZXNvbHZlVGl0bGUiLCJhbHRlcm5hdGVzIiwicmVzb2x2ZUFsdGVybmF0ZXMiLCJmYWNlYm9vayIsInJlc29sdmVGYWNlYm9vayIsInZlcmlmaWNhdGlvbiIsInJlc29sdmVWZXJpZmljYXRpb24iLCJpY29ucyIsInJlc29sdmVJY29ucyIsImFwcGxlV2ViQXBwIiwicmVzb2x2ZUFwcGxlV2ViQXBwIiwiYXBwTGlua3MiLCJyZXNvbHZlQXBwTGlua3MiLCJyb2JvdHMiLCJyZXNvbHZlUm9ib3RzIiwicmVzb2x2ZUFzQXJyYXlPclVuZGVmaW5lZCIsImF1dGhvcnMiLCJyZXNvbHZlSXR1bmVzIiwiaXR1bmVzIiwicGFnaW5hdGlvbiIsInJlc29sdmVQYWdpbmF0aW9uIiwib3RoZXIiLCJhc3NpZ24iLCJ3YXJuaW5ncyIsImFkZCIsIm1lcmdlVmlld3BvcnQiLCJyZXNvbHZlZFZpZXdwb3J0Iiwidmlld3BvcnQiLCJuZXdSZXNvbHZlZFZpZXdwb3J0IiwidGhlbWVDb2xvciIsInJlc29sdmVUaGVtZUNvbG9yIiwiY29sb3JTY2hlbWUiLCJnZXREZWZpbmVkVmlld3BvcnQiLCJtb2QiLCJwcm9wcyIsInRyYWNpbmdQcm9wcyIsImdlbmVyYXRlVmlld3BvcnQiLCJzZWdtZW50UHJvcHMiLCJjcmVhdGVTZWdtZW50UHJvcHMiLCJwYXJlbnQiLCJnZXRUcmFjZXIiLCJ0cmFjZSIsIlJlc29sdmVNZXRhZGF0YVNwYW4iLCJzcGFuTmFtZSIsImF0dHJpYnV0ZXMiLCIkJG9yaWdpbmFsIiwiZ2V0RGVmaW5lZE1ldGFkYXRhIiwiZ2VuZXJhdGVNZXRhZGF0YSIsImZuIiwiaXNVc2VDYWNoZUZ1bmN0aW9uIiwiJCRpc1BhZ2UiLCIkJGlzTGF5b3V0IiwiY29sbGVjdFN0YXRpY0ltYWdlc0ZpbGVzIiwiaWNvblByb21pc2VzIiwiaW1hZ2VNb2R1bGUiLCJsZW5ndGgiLCJQcm9taXNlIiwiYWxsIiwiZmxhdCIsInJlc29sdmVTdGF0aWNNZXRhZGF0YSIsIm1vZHVsZXMiLCJzdGF0aWNNZXRhZGF0YSIsImNvbGxlY3RNZXRhZGF0YSIsInRyZWUiLCJtZXRhZGF0YUl0ZW1zIiwiZXJyb3JNZXRhZGF0YUl0ZW0iLCJlcnJvckNvbnZlbnRpb24iLCJtb2RUeXBlIiwiaGFzRXJyb3JDb252ZW50aW9uQ29tcG9uZW50IiwiQm9vbGVhbiIsImdldENvbXBvbmVudFR5cGVNb2R1bGUiLCJsYXlvdXRPclBhZ2VNb2QiLCJsYXlvdXRPclBhZ2VNb2RUeXBlIiwiZ2V0TGF5b3V0T3JQYWdlTW9kdWxlIiwibWV0YWRhdGFFeHBvcnQiLCJwdXNoIiwiZXJyb3JNb2QiLCJlcnJvck1ldGFkYXRhRXhwb3J0IiwiY29sbGVjdFZpZXdwb3J0Iiwidmlld3BvcnRJdGVtcyIsImVycm9yVmlld3BvcnRJdGVtUmVmIiwidmlld3BvcnRFeHBvcnQiLCJlcnJvclZpZXdwb3J0RXhwb3J0IiwiY3VycmVudCIsInJlc29sdmVNZXRhZGF0YUl0ZW1zIiwiY2FjaGUiLCJzZWFyY2hQYXJhbXMiLCJpbnRlcnBvbGF0ZWRQYXJhbXMiLCJpc1J1bnRpbWVQcmVmZXRjaGFibGUiLCJwYXJlbnRQYXJhbXMiLCJ0cmVlUHJlZml4IiwicmVzb2x2ZU1ldGFkYXRhSXRlbXNJbXBsIiwicGFyZW50T3B0aW9uYWxDYXRjaEFsbFBhcmFtTmFtZSIsInNlZ21lbnQiLCJwYXJhbGxlbFJvdXRlcyIsInBhZ2UiLCJjdXJyZW50VHJlZVByZWZpeCIsImlzUGFnZSIsImN1cnJlbnRQYXJhbXMiLCJzZWdtZW50UGFyYW0iLCJnZXRTZWdtZW50UGFyYW0iLCJwYXJhbU5hbWUiLCJvcHRpb25hbENhdGNoQWxsUGFyYW1OYW1lIiwicGFyYW1UeXBlIiwicGFyYW1zIiwiY3JlYXRlU2VydmVyUGFyYW1zRm9yTWV0YWRhdGEiLCJmaWx0ZXIiLCJzIiwiUEFHRV9TRUdNRU5UX0tFWSIsImpvaW4iLCJjaGlsZFRyZWUiLCJrZXlzIiwicmVzb2x2ZVZpZXdwb3J0SXRlbXMiLCJyZXNvbHZlVmlld3BvcnRJdGVtc0ltcGwiLCJsYXllclByb3BzIiwiaXNUaXRsZVRydXRoeSIsImFic29sdXRlIiwiaGFzVGl0bGUiLCJpbmhlcml0RnJvbU1ldGFkYXRhIiwiZGVzY3JpcHRpb24iLCJjb21tb25PZ0tleXMiLCJwb3N0UHJvY2Vzc01ldGFkYXRhIiwiZmF2aWNvbiIsImF1dG9GaWxsUHJvcHMiLCJoYXNUd1RpdGxlIiwiaGFzVHdEZXNjcmlwdGlvbiIsImhhc1R3SW1hZ2VzIiwicGFydGlhbFR3aXR0ZXIiLCJ1bnNoaWZ0IiwicHJlcmVuZGVyTWV0YWRhdGEiLCJyZXNvbHZlcnNBbmRSZXN1bHRzIiwiaSIsImdldFJlc3VsdCIsInByZXJlbmRlclZpZXdwb3J0Iiwibm9vcCIsImV4cG9ydEZvclJlc3VsdCIsInVzZUNhY2hlRnVuY3Rpb25JbmZvIiwiZ2V0VXNlQ2FjaGVGdW5jdGlvbkluZm8iLCJ1c2VkQXJncyIsInByb21pc2UiLCJyZXNvbHZlIiwiY3JlYXRlTGF6eVJlc3VsdCIsImNhdGNoIiwiZXJyIiwiX19uZXh0RXJyb3IiLCJmcmVlemVJbkRldiIsIm9iaiIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInJlcXVpcmUiLCJkZWVwRnJlZXplIiwiY3JlYXRlRGVmYXVsdE1ldGFkYXRhIiwiU2V0IiwicmVzdWx0SW5kZXgiLCJpY29uTW9kIiwic2hpZnQiLCJwZW5kaW5nTWV0YWRhdGEiLCJyZXNvbHZlUGFyZW50TWV0YWRhdGEiLCJpc1Byb21pc2VMaWtlIiwidGVtcGxhdGUiLCJzaXplIiwid2FybmluZyIsIkxvZyIsIndhcm4iLCJjcmVhdGVEZWZhdWx0Vmlld3BvcnQiLCJwZW5kaW5nVmlld3BvcnQiLCJyZXNvbHZlUGFyZW50Vmlld3BvcnQiLCJ3b3JrU3RvcmUiLCJ3b3JrQXN5bmNTdG9yYWdlIiwiZ2V0U3RvcmUiLCJJbnZhcmlhbnRFcnJvciIsInRoZW4iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/resolve-metadata.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-basics.js":
|
||
/*!*************************************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/metadata/resolvers/resolve-basics.js ***!
|
||
\*************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n resolveAlternates: function() {\n return resolveAlternates;\n },\n resolveAppLinks: function() {\n return resolveAppLinks;\n },\n resolveAppleWebApp: function() {\n return resolveAppleWebApp;\n },\n resolveFacebook: function() {\n return resolveFacebook;\n },\n resolveItunes: function() {\n return resolveItunes;\n },\n resolvePagination: function() {\n return resolvePagination;\n },\n resolveRobots: function() {\n return resolveRobots;\n },\n resolveThemeColor: function() {\n return resolveThemeColor;\n },\n resolveVerification: function() {\n return resolveVerification;\n }\n});\nconst _utils = __webpack_require__(/*! ../generate/utils */ \"(rsc)/./node_modules/next/dist/lib/metadata/generate/utils.js\");\nconst _resolveurl = __webpack_require__(/*! ./resolve-url */ \"(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-url.js\");\nfunction resolveAlternateUrl(url, metadataBase, pathname, metadataContext) {\n // If alter native url is an URL instance,\n // we treat it as a URL base and resolve with current pathname\n if (url instanceof URL) {\n const newUrl = new URL(pathname, url);\n url.searchParams.forEach((value, key)=>newUrl.searchParams.set(key, value));\n url = newUrl;\n }\n return (0, _resolveurl.resolveAbsoluteUrlWithPathname)(url, metadataBase, pathname, metadataContext);\n}\nconst resolveThemeColor = (themeColor)=>{\n var _resolveAsArrayOrUndefined;\n if (!themeColor) return null;\n const themeColorDescriptors = [];\n (_resolveAsArrayOrUndefined = (0, _utils.resolveAsArrayOrUndefined)(themeColor)) == null ? void 0 : _resolveAsArrayOrUndefined.forEach((descriptor)=>{\n if (typeof descriptor === 'string') themeColorDescriptors.push({\n color: descriptor\n });\n else if (typeof descriptor === 'object') themeColorDescriptors.push({\n color: descriptor.color,\n media: descriptor.media\n });\n });\n return themeColorDescriptors;\n};\nasync function resolveUrlValuesOfObject(obj, metadataBase, pathname, metadataContext) {\n if (!obj) return null;\n const result = {};\n for (const [key, value] of Object.entries(obj)){\n if (typeof value === 'string' || value instanceof URL) {\n const pathnameForUrl = await pathname;\n result[key] = [\n {\n url: resolveAlternateUrl(value, metadataBase, pathnameForUrl, metadataContext)\n }\n ];\n } else if (value && value.length) {\n result[key] = [];\n const pathnameForUrl = await pathname;\n value.forEach((item, index)=>{\n const url = resolveAlternateUrl(item.url, metadataBase, pathnameForUrl, metadataContext);\n result[key][index] = {\n url,\n title: item.title\n };\n });\n }\n }\n return result;\n}\nasync function resolveCanonicalUrl(urlOrDescriptor, metadataBase, pathname, metadataContext) {\n if (!urlOrDescriptor) return null;\n const url = typeof urlOrDescriptor === 'string' || urlOrDescriptor instanceof URL ? urlOrDescriptor : urlOrDescriptor.url;\n const pathnameForUrl = await pathname;\n // Return string url because structureClone can't handle URL instance\n return {\n url: resolveAlternateUrl(url, metadataBase, pathnameForUrl, metadataContext)\n };\n}\nconst resolveAlternates = async (alternates, metadataBase, pathname, context)=>{\n if (!alternates) return null;\n const canonical = await resolveCanonicalUrl(alternates.canonical, metadataBase, pathname, context);\n const languages = await resolveUrlValuesOfObject(alternates.languages, metadataBase, pathname, context);\n const media = await resolveUrlValuesOfObject(alternates.media, metadataBase, pathname, context);\n const types = await resolveUrlValuesOfObject(alternates.types, metadataBase, pathname, context);\n return {\n canonical,\n languages,\n media,\n types\n };\n};\nconst robotsKeys = [\n 'noarchive',\n 'nosnippet',\n 'noimageindex',\n 'nocache',\n 'notranslate',\n 'indexifembedded',\n 'nositelinkssearchbox',\n 'unavailable_after',\n 'max-video-preview',\n 'max-image-preview',\n 'max-snippet'\n];\nconst resolveRobotsValue = (robots)=>{\n if (!robots) return null;\n if (typeof robots === 'string') return robots;\n const values = [];\n if (robots.index) values.push('index');\n else if (typeof robots.index === 'boolean') values.push('noindex');\n if (robots.follow) values.push('follow');\n else if (typeof robots.follow === 'boolean') values.push('nofollow');\n for (const key of robotsKeys){\n const value = robots[key];\n if (typeof value !== 'undefined' && value !== false) {\n values.push(typeof value === 'boolean' ? key : `${key}:${value}`);\n }\n }\n return values.join(', ');\n};\nconst resolveRobots = (robots)=>{\n if (!robots) return null;\n return {\n basic: resolveRobotsValue(robots),\n googleBot: typeof robots !== 'string' ? resolveRobotsValue(robots.googleBot) : null\n };\n};\nconst VerificationKeys = [\n 'google',\n 'yahoo',\n 'yandex',\n 'me',\n 'other'\n];\nconst resolveVerification = (verification)=>{\n if (!verification) return null;\n const res = {};\n for (const key of VerificationKeys){\n const value = verification[key];\n if (value) {\n if (key === 'other') {\n res.other = {};\n for(const otherKey in verification.other){\n const otherValue = (0, _utils.resolveAsArrayOrUndefined)(verification.other[otherKey]);\n if (otherValue) res.other[otherKey] = otherValue;\n }\n } else res[key] = (0, _utils.resolveAsArrayOrUndefined)(value);\n }\n }\n return res;\n};\nconst resolveAppleWebApp = (appWebApp)=>{\n var _resolveAsArrayOrUndefined;\n if (!appWebApp) return null;\n if (appWebApp === true) {\n return {\n capable: true\n };\n }\n const startupImages = appWebApp.startupImage ? (_resolveAsArrayOrUndefined = (0, _utils.resolveAsArrayOrUndefined)(appWebApp.startupImage)) == null ? void 0 : _resolveAsArrayOrUndefined.map((item)=>typeof item === 'string' ? {\n url: item\n } : item) : null;\n return {\n capable: 'capable' in appWebApp ? !!appWebApp.capable : true,\n title: appWebApp.title || null,\n startupImage: startupImages,\n statusBarStyle: appWebApp.statusBarStyle || 'default'\n };\n};\nconst resolveAppLinks = (appLinks)=>{\n if (!appLinks) return null;\n for(const key in appLinks){\n // @ts-ignore // TODO: type infer\n appLinks[key] = (0, _utils.resolveAsArrayOrUndefined)(appLinks[key]);\n }\n return appLinks;\n};\nconst resolveItunes = async (itunes, metadataBase, pathname, context)=>{\n if (!itunes) return null;\n return {\n appId: itunes.appId,\n appArgument: itunes.appArgument ? resolveAlternateUrl(itunes.appArgument, metadataBase, await pathname, context) : undefined\n };\n};\nconst resolveFacebook = (facebook)=>{\n if (!facebook) return null;\n return {\n appId: facebook.appId,\n admins: (0, _utils.resolveAsArrayOrUndefined)(facebook.admins)\n };\n};\nconst resolvePagination = async (pagination, metadataBase, pathname, context)=>{\n return {\n previous: (pagination == null ? void 0 : pagination.previous) ? resolveAlternateUrl(pagination.previous, metadataBase, await pathname, context) : null,\n next: (pagination == null ? void 0 : pagination.next) ? resolveAlternateUrl(pagination.next, metadataBase, await pathname, context) : null\n };\n};\n\n//# sourceMappingURL=resolve-basics.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9yZXNvbHZlcnMvcmVzb2x2ZS1iYXNpY3MuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBVUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxlQUFlLG1CQUFPLENBQUMsd0ZBQW1CO0FBQzFDLG9CQUFvQixtQkFBTyxDQUFDLDJGQUFlO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4REFBOEQsSUFBSSxHQUFHLE1BQU07QUFDM0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvbGliL21ldGFkYXRhL3Jlc29sdmVycy9yZXNvbHZlLWJhc2ljcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIHJlc29sdmVBbHRlcm5hdGVzOiBudWxsLFxuICAgIHJlc29sdmVBcHBMaW5rczogbnVsbCxcbiAgICByZXNvbHZlQXBwbGVXZWJBcHA6IG51bGwsXG4gICAgcmVzb2x2ZUZhY2Vib29rOiBudWxsLFxuICAgIHJlc29sdmVJdHVuZXM6IG51bGwsXG4gICAgcmVzb2x2ZVBhZ2luYXRpb246IG51bGwsXG4gICAgcmVzb2x2ZVJvYm90czogbnVsbCxcbiAgICByZXNvbHZlVGhlbWVDb2xvcjogbnVsbCxcbiAgICByZXNvbHZlVmVyaWZpY2F0aW9uOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIHJlc29sdmVBbHRlcm5hdGVzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVBbHRlcm5hdGVzO1xuICAgIH0sXG4gICAgcmVzb2x2ZUFwcExpbmtzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVBcHBMaW5rcztcbiAgICB9LFxuICAgIHJlc29sdmVBcHBsZVdlYkFwcDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlQXBwbGVXZWJBcHA7XG4gICAgfSxcbiAgICByZXNvbHZlRmFjZWJvb2s6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZUZhY2Vib29rO1xuICAgIH0sXG4gICAgcmVzb2x2ZUl0dW5lczogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlSXR1bmVzO1xuICAgIH0sXG4gICAgcmVzb2x2ZVBhZ2luYXRpb246IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZVBhZ2luYXRpb247XG4gICAgfSxcbiAgICByZXNvbHZlUm9ib3RzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVSb2JvdHM7XG4gICAgfSxcbiAgICByZXNvbHZlVGhlbWVDb2xvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlVGhlbWVDb2xvcjtcbiAgICB9LFxuICAgIHJlc29sdmVWZXJpZmljYXRpb246IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZVZlcmlmaWNhdGlvbjtcbiAgICB9XG59KTtcbmNvbnN0IF91dGlscyA9IHJlcXVpcmUoXCIuLi9nZW5lcmF0ZS91dGlsc1wiKTtcbmNvbnN0IF9yZXNvbHZldXJsID0gcmVxdWlyZShcIi4vcmVzb2x2ZS11cmxcIik7XG5mdW5jdGlvbiByZXNvbHZlQWx0ZXJuYXRlVXJsKHVybCwgbWV0YWRhdGFCYXNlLCBwYXRobmFtZSwgbWV0YWRhdGFDb250ZXh0KSB7XG4gICAgLy8gSWYgYWx0ZXIgbmF0aXZlIHVybCBpcyBhbiBVUkwgaW5zdGFuY2UsXG4gICAgLy8gd2UgdHJlYXQgaXQgYXMgYSBVUkwgYmFzZSBhbmQgcmVzb2x2ZSB3aXRoIGN1cnJlbnQgcGF0aG5hbWVcbiAgICBpZiAodXJsIGluc3RhbmNlb2YgVVJMKSB7XG4gICAgICAgIGNvbnN0IG5ld1VybCA9IG5ldyBVUkwocGF0aG5hbWUsIHVybCk7XG4gICAgICAgIHVybC5zZWFyY2hQYXJhbXMuZm9yRWFjaCgodmFsdWUsIGtleSk9Pm5ld1VybC5zZWFyY2hQYXJhbXMuc2V0KGtleSwgdmFsdWUpKTtcbiAgICAgICAgdXJsID0gbmV3VXJsO1xuICAgIH1cbiAgICByZXR1cm4gKDAsIF9yZXNvbHZldXJsLnJlc29sdmVBYnNvbHV0ZVVybFdpdGhQYXRobmFtZSkodXJsLCBtZXRhZGF0YUJhc2UsIHBhdGhuYW1lLCBtZXRhZGF0YUNvbnRleHQpO1xufVxuY29uc3QgcmVzb2x2ZVRoZW1lQ29sb3IgPSAodGhlbWVDb2xvcik9PntcbiAgICB2YXIgX3Jlc29sdmVBc0FycmF5T3JVbmRlZmluZWQ7XG4gICAgaWYgKCF0aGVtZUNvbG9yKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCB0aGVtZUNvbG9yRGVzY3JpcHRvcnMgPSBbXTtcbiAgICAoX3Jlc29sdmVBc0FycmF5T3JVbmRlZmluZWQgPSAoMCwgX3V0aWxzLnJlc29sdmVBc0FycmF5T3JVbmRlZmluZWQpKHRoZW1lQ29sb3IpKSA9PSBudWxsID8gdm9pZCAwIDogX3Jlc29sdmVBc0FycmF5T3JVbmRlZmluZWQuZm9yRWFjaCgoZGVzY3JpcHRvcik9PntcbiAgICAgICAgaWYgKHR5cGVvZiBkZXNjcmlwdG9yID09PSAnc3RyaW5nJykgdGhlbWVDb2xvckRlc2NyaXB0b3JzLnB1c2goe1xuICAgICAgICAgICAgY29sb3I6IGRlc2NyaXB0b3JcbiAgICAgICAgfSk7XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBkZXNjcmlwdG9yID09PSAnb2JqZWN0JykgdGhlbWVDb2xvckRlc2NyaXB0b3JzLnB1c2goe1xuICAgICAgICAgICAgY29sb3I6IGRlc2NyaXB0b3IuY29sb3IsXG4gICAgICAgICAgICBtZWRpYTogZGVzY3JpcHRvci5tZWRpYVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhlbWVDb2xvckRlc2NyaXB0b3JzO1xufTtcbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVVcmxWYWx1ZXNPZk9iamVjdChvYmosIG1ldGFkYXRhQmFzZSwgcGF0aG5hbWUsIG1ldGFkYXRhQ29udGV4dCkge1xuICAgIGlmICghb2JqKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvYmopKXtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdmFsdWUgaW5zdGFuY2VvZiBVUkwpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhdGhuYW1lRm9yVXJsID0gYXdhaXQgcGF0aG5hbWU7XG4gICAgICAgICAgICByZXN1bHRba2V5XSA9IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHVybDogcmVzb2x2ZUFsdGVybmF0ZVVybCh2YWx1ZSwgbWV0YWRhdGFCYXNlLCBwYXRobmFtZUZvclVybCwgbWV0YWRhdGFDb250ZXh0KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF07XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUgJiYgdmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXN1bHRba2V5XSA9IFtdO1xuICAgICAgICAgICAgY29uc3QgcGF0aG5hbWVGb3JVcmwgPSBhd2FpdCBwYXRobmFtZTtcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKGl0ZW0sIGluZGV4KT0+e1xuICAgICAgICAgICAgICAgIGNvbnN0IHVybCA9IHJlc29sdmVBbHRlcm5hdGVVcmwoaXRlbS51cmwsIG1ldGFkYXRhQmFzZSwgcGF0aG5hbWVGb3JVcmwsIG1ldGFkYXRhQ29udGV4dCk7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2tleV1baW5kZXhdID0ge1xuICAgICAgICAgICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5hc3luYyBmdW5jdGlvbiByZXNvbHZlQ2Fub25pY2FsVXJsKHVybE9yRGVzY3JpcHRvciwgbWV0YWRhdGFCYXNlLCBwYXRobmFtZSwgbWV0YWRhdGFDb250ZXh0KSB7XG4gICAgaWYgKCF1cmxPckRlc2NyaXB0b3IpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHVybCA9IHR5cGVvZiB1cmxPckRlc2NyaXB0b3IgPT09ICdzdHJpbmcnIHx8IHVybE9yRGVzY3JpcHRvciBpbnN0YW5jZW9mIFVSTCA/IHVybE9yRGVzY3JpcHRvciA6IHVybE9yRGVzY3JpcHRvci51cmw7XG4gICAgY29uc3QgcGF0aG5hbWVGb3JVcmwgPSBhd2FpdCBwYXRobmFtZTtcbiAgICAvLyBSZXR1cm4gc3RyaW5nIHVybCBiZWNhdXNlIHN0cnVjdHVyZUNsb25lIGNhbid0IGhhbmRsZSBVUkwgaW5zdGFuY2VcbiAgICByZXR1cm4ge1xuICAgICAgICB1cmw6IHJlc29sdmVBbHRlcm5hdGVVcmwodXJsLCBtZXRhZGF0YUJhc2UsIHBhdGhuYW1lRm9yVXJsLCBtZXRhZGF0YUNvbnRleHQpXG4gICAgfTtcbn1cbmNvbnN0IHJlc29sdmVBbHRlcm5hdGVzID0gYXN5bmMgKGFsdGVybmF0ZXMsIG1ldGFkYXRhQmFzZSwgcGF0aG5hbWUsIGNvbnRleHQpPT57XG4gICAgaWYgKCFhbHRlcm5hdGVzKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBjYW5vbmljYWwgPSBhd2FpdCByZXNvbHZlQ2Fub25pY2FsVXJsKGFsdGVybmF0ZXMuY2Fub25pY2FsLCBtZXRhZGF0YUJhc2UsIHBhdGhuYW1lLCBjb250ZXh0KTtcbiAgICBjb25zdCBsYW5ndWFnZXMgPSBhd2FpdCByZXNvbHZlVXJsVmFsdWVzT2ZPYmplY3QoYWx0ZXJuYXRlcy5sYW5ndWFnZXMsIG1ldGFkYXRhQmFzZSwgcGF0aG5hbWUsIGNvbnRleHQpO1xuICAgIGNvbnN0IG1lZGlhID0gYXdhaXQgcmVzb2x2ZVVybFZhbHVlc09mT2JqZWN0KGFsdGVybmF0ZXMubWVkaWEsIG1ldGFkYXRhQmFzZSwgcGF0aG5hbWUsIGNvbnRleHQpO1xuICAgIGNvbnN0IHR5cGVzID0gYXdhaXQgcmVzb2x2ZVVybFZhbHVlc09mT2JqZWN0KGFsdGVybmF0ZXMudHlwZXMsIG1ldGFkYXRhQmFzZSwgcGF0aG5hbWUsIGNvbnRleHQpO1xuICAgIHJldHVybiB7XG4gICAgICAgIGNhbm9uaWNhbCxcbiAgICAgICAgbGFuZ3VhZ2VzLFxuICAgICAgICBtZWRpYSxcbiAgICAgICAgdHlwZXNcbiAgICB9O1xufTtcbmNvbnN0IHJvYm90c0tleXMgPSBbXG4gICAgJ25vYXJjaGl2ZScsXG4gICAgJ25vc25pcHBldCcsXG4gICAgJ25vaW1hZ2VpbmRleCcsXG4gICAgJ25vY2FjaGUnLFxuICAgICdub3RyYW5zbGF0ZScsXG4gICAgJ2luZGV4aWZlbWJlZGRlZCcsXG4gICAgJ25vc2l0ZWxpbmtzc2VhcmNoYm94JyxcbiAgICAndW5hdmFpbGFibGVfYWZ0ZXInLFxuICAgICdtYXgtdmlkZW8tcHJldmlldycsXG4gICAgJ21heC1pbWFnZS1wcmV2aWV3JyxcbiAgICAnbWF4LXNuaXBwZXQnXG5dO1xuY29uc3QgcmVzb2x2ZVJvYm90c1ZhbHVlID0gKHJvYm90cyk9PntcbiAgICBpZiAoIXJvYm90cykgcmV0dXJuIG51bGw7XG4gICAgaWYgKHR5cGVvZiByb2JvdHMgPT09ICdzdHJpbmcnKSByZXR1cm4gcm9ib3RzO1xuICAgIGNvbnN0IHZhbHVlcyA9IFtdO1xuICAgIGlmIChyb2JvdHMuaW5kZXgpIHZhbHVlcy5wdXNoKCdpbmRleCcpO1xuICAgIGVsc2UgaWYgKHR5cGVvZiByb2JvdHMuaW5kZXggPT09ICdib29sZWFuJykgdmFsdWVzLnB1c2goJ25vaW5kZXgnKTtcbiAgICBpZiAocm9ib3RzLmZvbGxvdykgdmFsdWVzLnB1c2goJ2ZvbGxvdycpO1xuICAgIGVsc2UgaWYgKHR5cGVvZiByb2JvdHMuZm9sbG93ID09PSAnYm9vbGVhbicpIHZhbHVlcy5wdXNoKCdub2ZvbGxvdycpO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIHJvYm90c0tleXMpe1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHJvYm90c1trZXldO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHZhbHVlcy5wdXNoKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nID8ga2V5IDogYCR7a2V5fToke3ZhbHVlfWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZXMuam9pbignLCAnKTtcbn07XG5jb25zdCByZXNvbHZlUm9ib3RzID0gKHJvYm90cyk9PntcbiAgICBpZiAoIXJvYm90cykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYmFzaWM6IHJlc29sdmVSb2JvdHNWYWx1ZShyb2JvdHMpLFxuICAgICAgICBnb29nbGVCb3Q6IHR5cGVvZiByb2JvdHMgIT09ICdzdHJpbmcnID8gcmVzb2x2ZVJvYm90c1ZhbHVlKHJvYm90cy5nb29nbGVCb3QpIDogbnVsbFxuICAgIH07XG59O1xuY29uc3QgVmVyaWZpY2F0aW9uS2V5cyA9IFtcbiAgICAnZ29vZ2xlJyxcbiAgICAneWFob28nLFxuICAgICd5YW5kZXgnLFxuICAgICdtZScsXG4gICAgJ290aGVyJ1xuXTtcbmNvbnN0IHJlc29sdmVWZXJpZmljYXRpb24gPSAodmVyaWZpY2F0aW9uKT0+e1xuICAgIGlmICghdmVyaWZpY2F0aW9uKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCByZXMgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBWZXJpZmljYXRpb25LZXlzKXtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB2ZXJpZmljYXRpb25ba2V5XTtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnb3RoZXInKSB7XG4gICAgICAgICAgICAgICAgcmVzLm90aGVyID0ge307XG4gICAgICAgICAgICAgICAgZm9yKGNvbnN0IG90aGVyS2V5IGluIHZlcmlmaWNhdGlvbi5vdGhlcil7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG90aGVyVmFsdWUgPSAoMCwgX3V0aWxzLnJlc29sdmVBc0FycmF5T3JVbmRlZmluZWQpKHZlcmlmaWNhdGlvbi5vdGhlcltvdGhlcktleV0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXJWYWx1ZSkgcmVzLm90aGVyW290aGVyS2V5XSA9IG90aGVyVmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHJlc1trZXldID0gKDAsIF91dGlscy5yZXNvbHZlQXNBcnJheU9yVW5kZWZpbmVkKSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn07XG5jb25zdCByZXNvbHZlQXBwbGVXZWJBcHAgPSAoYXBwV2ViQXBwKT0+e1xuICAgIHZhciBfcmVzb2x2ZUFzQXJyYXlPclVuZGVmaW5lZDtcbiAgICBpZiAoIWFwcFdlYkFwcCkgcmV0dXJuIG51bGw7XG4gICAgaWYgKGFwcFdlYkFwcCA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2FwYWJsZTogdHJ1ZVxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBzdGFydHVwSW1hZ2VzID0gYXBwV2ViQXBwLnN0YXJ0dXBJbWFnZSA/IChfcmVzb2x2ZUFzQXJyYXlPclVuZGVmaW5lZCA9ICgwLCBfdXRpbHMucmVzb2x2ZUFzQXJyYXlPclVuZGVmaW5lZCkoYXBwV2ViQXBwLnN0YXJ0dXBJbWFnZSkpID09IG51bGwgPyB2b2lkIDAgOiBfcmVzb2x2ZUFzQXJyYXlPclVuZGVmaW5lZC5tYXAoKGl0ZW0pPT50eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyB7XG4gICAgICAgICAgICB1cmw6IGl0ZW1cbiAgICAgICAgfSA6IGl0ZW0pIDogbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgICBjYXBhYmxlOiAnY2FwYWJsZScgaW4gYXBwV2ViQXBwID8gISFhcHBXZWJBcHAuY2FwYWJsZSA6IHRydWUsXG4gICAgICAgIHRpdGxlOiBhcHBXZWJBcHAudGl0bGUgfHwgbnVsbCxcbiAgICAgICAgc3RhcnR1cEltYWdlOiBzdGFydHVwSW1hZ2VzLFxuICAgICAgICBzdGF0dXNCYXJTdHlsZTogYXBwV2ViQXBwLnN0YXR1c0JhclN0eWxlIHx8ICdkZWZhdWx0J1xuICAgIH07XG59O1xuY29uc3QgcmVzb2x2ZUFwcExpbmtzID0gKGFwcExpbmtzKT0+e1xuICAgIGlmICghYXBwTGlua3MpIHJldHVybiBudWxsO1xuICAgIGZvcihjb25zdCBrZXkgaW4gYXBwTGlua3Mpe1xuICAgICAgICAvLyBAdHMtaWdub3JlIC8vIFRPRE86IHR5cGUgaW5mZXJcbiAgICAgICAgYXBwTGlua3Nba2V5XSA9ICgwLCBfdXRpbHMucmVzb2x2ZUFzQXJyYXlPclVuZGVmaW5lZCkoYXBwTGlua3Nba2V5XSk7XG4gICAgfVxuICAgIHJldHVybiBhcHBMaW5rcztcbn07XG5jb25zdCByZXNvbHZlSXR1bmVzID0gYXN5bmMgKGl0dW5lcywgbWV0YWRhdGFCYXNlLCBwYXRobmFtZSwgY29udGV4dCk9PntcbiAgICBpZiAoIWl0dW5lcykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYXBwSWQ6IGl0dW5lcy5hcHBJZCxcbiAgICAgICAgYXBwQXJndW1lbnQ6IGl0dW5lcy5hcHBBcmd1bWVudCA/IHJlc29sdmVBbHRlcm5hdGVVcmwoaXR1bmVzLmFwcEFyZ3VtZW50LCBtZXRhZGF0YUJhc2UsIGF3YWl0IHBhdGhuYW1lLCBjb250ZXh0KSA6IHVuZGVmaW5lZFxuICAgIH07XG59O1xuY29uc3QgcmVzb2x2ZUZhY2Vib29rID0gKGZhY2Vib29rKT0+e1xuICAgIGlmICghZmFjZWJvb2spIHJldHVybiBudWxsO1xuICAgIHJldHVybiB7XG4gICAgICAgIGFwcElkOiBmYWNlYm9vay5hcHBJZCxcbiAgICAgICAgYWRtaW5zOiAoMCwgX3V0aWxzLnJlc29sdmVBc0FycmF5T3JVbmRlZmluZWQpKGZhY2Vib29rLmFkbWlucylcbiAgICB9O1xufTtcbmNvbnN0IHJlc29sdmVQYWdpbmF0aW9uID0gYXN5bmMgKHBhZ2luYXRpb24sIG1ldGFkYXRhQmFzZSwgcGF0aG5hbWUsIGNvbnRleHQpPT57XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcHJldmlvdXM6IChwYWdpbmF0aW9uID09IG51bGwgPyB2b2lkIDAgOiBwYWdpbmF0aW9uLnByZXZpb3VzKSA/IHJlc29sdmVBbHRlcm5hdGVVcmwocGFnaW5hdGlvbi5wcmV2aW91cywgbWV0YWRhdGFCYXNlLCBhd2FpdCBwYXRobmFtZSwgY29udGV4dCkgOiBudWxsLFxuICAgICAgICBuZXh0OiAocGFnaW5hdGlvbiA9PSBudWxsID8gdm9pZCAwIDogcGFnaW5hdGlvbi5uZXh0KSA/IHJlc29sdmVBbHRlcm5hdGVVcmwocGFnaW5hdGlvbi5uZXh0LCBtZXRhZGF0YUJhc2UsIGF3YWl0IHBhdGhuYW1lLCBjb250ZXh0KSA6IG51bGxcbiAgICB9O1xufTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVzb2x2ZS1iYXNpY3MuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-basics.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-icons.js":
|
||
/*!************************************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/metadata/resolvers/resolve-icons.js ***!
|
||
\************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n resolveIcon: function() {\n return resolveIcon;\n },\n resolveIcons: function() {\n return resolveIcons;\n }\n});\nconst _utils = __webpack_require__(/*! ../generate/utils */ \"(rsc)/./node_modules/next/dist/lib/metadata/generate/utils.js\");\nconst _resolveurl = __webpack_require__(/*! ./resolve-url */ \"(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-url.js\");\nconst _constants = __webpack_require__(/*! ../constants */ \"(rsc)/./node_modules/next/dist/lib/metadata/constants.js\");\nfunction resolveIcon(icon) {\n if ((0, _resolveurl.isStringOrURL)(icon)) return {\n url: icon\n };\n else if (Array.isArray(icon)) return icon;\n return icon;\n}\nconst resolveIcons = (icons)=>{\n if (!icons) {\n return null;\n }\n const resolved = {\n icon: [],\n apple: []\n };\n if (Array.isArray(icons)) {\n resolved.icon = icons.map(resolveIcon).filter(Boolean);\n } else if ((0, _resolveurl.isStringOrURL)(icons)) {\n resolved.icon = [\n resolveIcon(icons)\n ];\n } else {\n for (const key of _constants.IconKeys){\n const values = (0, _utils.resolveAsArrayOrUndefined)(icons[key]);\n if (values) resolved[key] = values.map(resolveIcon);\n }\n }\n return resolved;\n};\n\n//# sourceMappingURL=resolve-icons.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9yZXNvbHZlcnMvcmVzb2x2ZS1pY29ucy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FHTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxlQUFlLG1CQUFPLENBQUMsd0ZBQW1CO0FBQzFDLG9CQUFvQixtQkFBTyxDQUFDLDJGQUFlO0FBQzNDLG1CQUFtQixtQkFBTyxDQUFDLDhFQUFjO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9saWIvbWV0YWRhdGEvcmVzb2x2ZXJzL3Jlc29sdmUtaWNvbnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICByZXNvbHZlSWNvbjogbnVsbCxcbiAgICByZXNvbHZlSWNvbnM6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgcmVzb2x2ZUljb246IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZUljb247XG4gICAgfSxcbiAgICByZXNvbHZlSWNvbnM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZUljb25zO1xuICAgIH1cbn0pO1xuY29uc3QgX3V0aWxzID0gcmVxdWlyZShcIi4uL2dlbmVyYXRlL3V0aWxzXCIpO1xuY29uc3QgX3Jlc29sdmV1cmwgPSByZXF1aXJlKFwiLi9yZXNvbHZlLXVybFwiKTtcbmNvbnN0IF9jb25zdGFudHMgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzXCIpO1xuZnVuY3Rpb24gcmVzb2x2ZUljb24oaWNvbikge1xuICAgIGlmICgoMCwgX3Jlc29sdmV1cmwuaXNTdHJpbmdPclVSTCkoaWNvbikpIHJldHVybiB7XG4gICAgICAgIHVybDogaWNvblxuICAgIH07XG4gICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShpY29uKSkgcmV0dXJuIGljb247XG4gICAgcmV0dXJuIGljb247XG59XG5jb25zdCByZXNvbHZlSWNvbnMgPSAoaWNvbnMpPT57XG4gICAgaWYgKCFpY29ucykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgcmVzb2x2ZWQgPSB7XG4gICAgICAgIGljb246IFtdLFxuICAgICAgICBhcHBsZTogW11cbiAgICB9O1xuICAgIGlmIChBcnJheS5pc0FycmF5KGljb25zKSkge1xuICAgICAgICByZXNvbHZlZC5pY29uID0gaWNvbnMubWFwKHJlc29sdmVJY29uKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgfSBlbHNlIGlmICgoMCwgX3Jlc29sdmV1cmwuaXNTdHJpbmdPclVSTCkoaWNvbnMpKSB7XG4gICAgICAgIHJlc29sdmVkLmljb24gPSBbXG4gICAgICAgICAgICByZXNvbHZlSWNvbihpY29ucylcbiAgICAgICAgXTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBfY29uc3RhbnRzLkljb25LZXlzKXtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlcyA9ICgwLCBfdXRpbHMucmVzb2x2ZUFzQXJyYXlPclVuZGVmaW5lZCkoaWNvbnNba2V5XSk7XG4gICAgICAgICAgICBpZiAodmFsdWVzKSByZXNvbHZlZFtrZXldID0gdmFsdWVzLm1hcChyZXNvbHZlSWNvbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc29sdmVkO1xufTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVzb2x2ZS1pY29ucy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-icons.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-opengraph.js":
|
||
/*!****************************************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/metadata/resolvers/resolve-opengraph.js ***!
|
||
\****************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n resolveImages: function() {\n return resolveImages;\n },\n resolveOpenGraph: function() {\n return resolveOpenGraph;\n },\n resolveTwitter: function() {\n return resolveTwitter;\n }\n});\nconst _utils = __webpack_require__(/*! ../generate/utils */ \"(rsc)/./node_modules/next/dist/lib/metadata/generate/utils.js\");\nconst _resolveurl = __webpack_require__(/*! ./resolve-url */ \"(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-url.js\");\nconst _resolvetitle = __webpack_require__(/*! ./resolve-title */ \"(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-title.js\");\nconst _url = __webpack_require__(/*! ../../url */ \"(rsc)/./node_modules/next/dist/lib/url.js\");\nconst _log = __webpack_require__(/*! ../../../build/output/log */ \"(rsc)/./node_modules/next/dist/build/output/log.js\");\nconst OgTypeFields = {\n article: [\n 'authors',\n 'tags'\n ],\n song: [\n 'albums',\n 'musicians'\n ],\n playlist: [\n 'albums',\n 'musicians'\n ],\n radio: [\n 'creators'\n ],\n video: [\n 'actors',\n 'directors',\n 'writers',\n 'tags'\n ],\n basic: [\n 'emails',\n 'phoneNumbers',\n 'faxNumbers',\n 'alternateLocale',\n 'audio',\n 'videos'\n ]\n};\nfunction resolveAndValidateImage(item, metadataBase, isStaticMetadataRouteFile) {\n if (!item) return undefined;\n const isItemUrl = (0, _resolveurl.isStringOrURL)(item);\n const inputUrl = isItemUrl ? item : item.url;\n if (!inputUrl) return undefined;\n // process.env.VERCEL is set to \"1\" when System Environment Variables are\n // exposed. When exposed, validation is not necessary since we are falling back to\n // process.env.VERCEL_PROJECT_PRODUCTION_URL, process.env.VERCEL_BRANCH_URL, or\n // process.env.VERCEL_URL for the `metadataBase`. process.env.VERCEL is undefined\n // when System Environment Variables are not exposed. When not exposed, we cannot\n // detect in the build environment if the deployment is a Vercel deployment or not.\n //\n // x-ref: https://vercel.com/docs/projects/environment-variables/system-environment-variables#system-environment-variables\n const isUsingVercelSystemEnvironmentVariables = Boolean(process.env.VERCEL);\n const isRelativeUrl = typeof inputUrl === 'string' && !(0, _url.isFullStringUrl)(inputUrl);\n // When no explicit metadataBase is specified by the user, we'll override it with the fallback metadata\n // under the following conditions:\n // - The provided URL is relative (ie ./og-image).\n // - The image is statically generated by Next.js (such as the special `opengraph-image` route)\n // In both cases, we want to ensure that across all environments, the ogImage is a fully qualified URL.\n // In the `opengraph-image` case, since the user isn't explicitly passing a relative path, this ensures\n // the ogImage will be properly discovered across different environments without the user needing to\n // have a bunch of `process.env` checks when defining their `metadataBase`.\n if (isRelativeUrl && (!metadataBase || isStaticMetadataRouteFile)) {\n const fallbackMetadataBase = (0, _resolveurl.getSocialImageMetadataBaseFallback)(metadataBase);\n // When not using Vercel environment variables for URL injection, we aren't able to determine\n // a fallback value for `metadataBase`. For self-hosted setups, we want to warn\n // about this since the only fallback we'll be able to generate is `localhost`.\n // In development, we'll only warn for relative metadata that isn't part of the static\n // metadata conventions (eg `opengraph-image`), as otherwise it's currently very noisy\n // for common cases. Eventually we should remove this warning all together in favor of\n // devtools.\n const shouldWarn = !isUsingVercelSystemEnvironmentVariables && !metadataBase && ( false || !isStaticMetadataRouteFile);\n if (shouldWarn) {\n (0, _log.warnOnce)(`metadataBase property in metadata export is not set for resolving social open graph or twitter images, using \"${fallbackMetadataBase.origin}\". See https://nextjs.org/docs/app/api-reference/functions/generate-metadata#metadatabase`);\n }\n metadataBase = fallbackMetadataBase;\n }\n return isItemUrl ? {\n url: (0, _resolveurl.resolveUrl)(inputUrl, metadataBase)\n } : {\n ...item,\n // Update image descriptor url\n url: (0, _resolveurl.resolveUrl)(inputUrl, metadataBase)\n };\n}\nfunction resolveImages(images, metadataBase, isStaticMetadataRouteFile) {\n const resolvedImages = (0, _utils.resolveAsArrayOrUndefined)(images);\n if (!resolvedImages) return resolvedImages;\n const nonNullableImages = [];\n for (const item of resolvedImages){\n const resolvedItem = resolveAndValidateImage(item, metadataBase, isStaticMetadataRouteFile);\n if (!resolvedItem) continue;\n nonNullableImages.push(resolvedItem);\n }\n return nonNullableImages;\n}\nconst ogTypeToFields = {\n article: OgTypeFields.article,\n book: OgTypeFields.article,\n 'music.song': OgTypeFields.song,\n 'music.album': OgTypeFields.song,\n 'music.playlist': OgTypeFields.playlist,\n 'music.radio_station': OgTypeFields.radio,\n 'video.movie': OgTypeFields.video,\n 'video.episode': OgTypeFields.video\n};\nfunction getFieldsByOgType(ogType) {\n if (!ogType || !(ogType in ogTypeToFields)) return OgTypeFields.basic;\n return ogTypeToFields[ogType].concat(OgTypeFields.basic);\n}\nconst resolveOpenGraph = async (openGraph, metadataBase, pathname, metadataContext, titleTemplate)=>{\n if (!openGraph) return null;\n function resolveProps(target, og) {\n const ogType = og && 'type' in og ? og.type : undefined;\n const keys = getFieldsByOgType(ogType);\n for (const k of keys){\n const key = k;\n if (key in og && key !== 'url') {\n const value = og[key];\n target[key] = value ? (0, _utils.resolveArray)(value) : null;\n }\n }\n target.images = resolveImages(og.images, metadataBase, metadataContext.isStaticMetadataRouteFile);\n }\n const resolved = {\n ...openGraph,\n title: (0, _resolvetitle.resolveTitle)(openGraph.title, titleTemplate)\n };\n resolveProps(resolved, openGraph);\n resolved.url = openGraph.url ? (0, _resolveurl.resolveAbsoluteUrlWithPathname)(openGraph.url, metadataBase, await pathname, metadataContext) : null;\n return resolved;\n};\nconst TwitterBasicInfoKeys = [\n 'site',\n 'siteId',\n 'creator',\n 'creatorId',\n 'description'\n];\nconst resolveTwitter = (twitter, metadataBase, metadataContext, titleTemplate)=>{\n var _resolved_images;\n if (!twitter) return null;\n let card = 'card' in twitter ? twitter.card : undefined;\n const resolved = {\n ...twitter,\n title: (0, _resolvetitle.resolveTitle)(twitter.title, titleTemplate)\n };\n for (const infoKey of TwitterBasicInfoKeys){\n resolved[infoKey] = twitter[infoKey] || null;\n }\n resolved.images = resolveImages(twitter.images, metadataBase, metadataContext.isStaticMetadataRouteFile);\n card = card || (((_resolved_images = resolved.images) == null ? void 0 : _resolved_images.length) ? 'summary_large_image' : 'summary');\n resolved.card = card;\n if ('card' in resolved) {\n switch(resolved.card){\n case 'player':\n {\n resolved.players = (0, _utils.resolveAsArrayOrUndefined)(resolved.players) || [];\n break;\n }\n case 'app':\n {\n resolved.app = resolved.app || {};\n break;\n }\n case 'summary':\n case 'summary_large_image':\n break;\n default:\n resolved;\n }\n }\n return resolved;\n};\n\n//# sourceMappingURL=resolve-opengraph.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9yZXNvbHZlcnMvcmVzb2x2ZS1vcGVuZ3JhcGguanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBSUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxlQUFlLG1CQUFPLENBQUMsd0ZBQW1CO0FBQzFDLG9CQUFvQixtQkFBTyxDQUFDLDJGQUFlO0FBQzNDLHNCQUFzQixtQkFBTyxDQUFDLCtGQUFpQjtBQUMvQyxhQUFhLG1CQUFPLENBQUMsNERBQVc7QUFDaEMsYUFBYSxtQkFBTyxDQUFDLHFGQUEyQjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5RkFBeUYsTUFBcUM7QUFDOUg7QUFDQSxnSkFBZ0osNEJBQTRCO0FBQzVLO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9yZXNvbHZlcnMvcmVzb2x2ZS1vcGVuZ3JhcGguanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICByZXNvbHZlSW1hZ2VzOiBudWxsLFxuICAgIHJlc29sdmVPcGVuR3JhcGg6IG51bGwsXG4gICAgcmVzb2x2ZVR3aXR0ZXI6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgcmVzb2x2ZUltYWdlczogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlSW1hZ2VzO1xuICAgIH0sXG4gICAgcmVzb2x2ZU9wZW5HcmFwaDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlT3BlbkdyYXBoO1xuICAgIH0sXG4gICAgcmVzb2x2ZVR3aXR0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZVR3aXR0ZXI7XG4gICAgfVxufSk7XG5jb25zdCBfdXRpbHMgPSByZXF1aXJlKFwiLi4vZ2VuZXJhdGUvdXRpbHNcIik7XG5jb25zdCBfcmVzb2x2ZXVybCA9IHJlcXVpcmUoXCIuL3Jlc29sdmUtdXJsXCIpO1xuY29uc3QgX3Jlc29sdmV0aXRsZSA9IHJlcXVpcmUoXCIuL3Jlc29sdmUtdGl0bGVcIik7XG5jb25zdCBfdXJsID0gcmVxdWlyZShcIi4uLy4uL3VybFwiKTtcbmNvbnN0IF9sb2cgPSByZXF1aXJlKFwiLi4vLi4vLi4vYnVpbGQvb3V0cHV0L2xvZ1wiKTtcbmNvbnN0IE9nVHlwZUZpZWxkcyA9IHtcbiAgICBhcnRpY2xlOiBbXG4gICAgICAgICdhdXRob3JzJyxcbiAgICAgICAgJ3RhZ3MnXG4gICAgXSxcbiAgICBzb25nOiBbXG4gICAgICAgICdhbGJ1bXMnLFxuICAgICAgICAnbXVzaWNpYW5zJ1xuICAgIF0sXG4gICAgcGxheWxpc3Q6IFtcbiAgICAgICAgJ2FsYnVtcycsXG4gICAgICAgICdtdXNpY2lhbnMnXG4gICAgXSxcbiAgICByYWRpbzogW1xuICAgICAgICAnY3JlYXRvcnMnXG4gICAgXSxcbiAgICB2aWRlbzogW1xuICAgICAgICAnYWN0b3JzJyxcbiAgICAgICAgJ2RpcmVjdG9ycycsXG4gICAgICAgICd3cml0ZXJzJyxcbiAgICAgICAgJ3RhZ3MnXG4gICAgXSxcbiAgICBiYXNpYzogW1xuICAgICAgICAnZW1haWxzJyxcbiAgICAgICAgJ3Bob25lTnVtYmVycycsXG4gICAgICAgICdmYXhOdW1iZXJzJyxcbiAgICAgICAgJ2FsdGVybmF0ZUxvY2FsZScsXG4gICAgICAgICdhdWRpbycsXG4gICAgICAgICd2aWRlb3MnXG4gICAgXVxufTtcbmZ1bmN0aW9uIHJlc29sdmVBbmRWYWxpZGF0ZUltYWdlKGl0ZW0sIG1ldGFkYXRhQmFzZSwgaXNTdGF0aWNNZXRhZGF0YVJvdXRlRmlsZSkge1xuICAgIGlmICghaXRlbSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBpc0l0ZW1VcmwgPSAoMCwgX3Jlc29sdmV1cmwuaXNTdHJpbmdPclVSTCkoaXRlbSk7XG4gICAgY29uc3QgaW5wdXRVcmwgPSBpc0l0ZW1VcmwgPyBpdGVtIDogaXRlbS51cmw7XG4gICAgaWYgKCFpbnB1dFVybCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAvLyBwcm9jZXNzLmVudi5WRVJDRUwgaXMgc2V0IHRvIFwiMVwiIHdoZW4gU3lzdGVtIEVudmlyb25tZW50IFZhcmlhYmxlcyBhcmVcbiAgICAvLyBleHBvc2VkLiBXaGVuIGV4cG9zZWQsIHZhbGlkYXRpb24gaXMgbm90IG5lY2Vzc2FyeSBzaW5jZSB3ZSBhcmUgZmFsbGluZyBiYWNrIHRvXG4gICAgLy8gcHJvY2Vzcy5lbnYuVkVSQ0VMX1BST0pFQ1RfUFJPRFVDVElPTl9VUkwsIHByb2Nlc3MuZW52LlZFUkNFTF9CUkFOQ0hfVVJMLCBvclxuICAgIC8vIHByb2Nlc3MuZW52LlZFUkNFTF9VUkwgZm9yIHRoZSBgbWV0YWRhdGFCYXNlYC4gcHJvY2Vzcy5lbnYuVkVSQ0VMIGlzIHVuZGVmaW5lZFxuICAgIC8vIHdoZW4gU3lzdGVtIEVudmlyb25tZW50IFZhcmlhYmxlcyBhcmUgbm90IGV4cG9zZWQuIFdoZW4gbm90IGV4cG9zZWQsIHdlIGNhbm5vdFxuICAgIC8vIGRldGVjdCBpbiB0aGUgYnVpbGQgZW52aXJvbm1lbnQgaWYgdGhlIGRlcGxveW1lbnQgaXMgYSBWZXJjZWwgZGVwbG95bWVudCBvciBub3QuXG4gICAgLy9cbiAgICAvLyB4LXJlZjogaHR0cHM6Ly92ZXJjZWwuY29tL2RvY3MvcHJvamVjdHMvZW52aXJvbm1lbnQtdmFyaWFibGVzL3N5c3RlbS1lbnZpcm9ubWVudC12YXJpYWJsZXMjc3lzdGVtLWVudmlyb25tZW50LXZhcmlhYmxlc1xuICAgIGNvbnN0IGlzVXNpbmdWZXJjZWxTeXN0ZW1FbnZpcm9ubWVudFZhcmlhYmxlcyA9IEJvb2xlYW4ocHJvY2Vzcy5lbnYuVkVSQ0VMKTtcbiAgICBjb25zdCBpc1JlbGF0aXZlVXJsID0gdHlwZW9mIGlucHV0VXJsID09PSAnc3RyaW5nJyAmJiAhKDAsIF91cmwuaXNGdWxsU3RyaW5nVXJsKShpbnB1dFVybCk7XG4gICAgLy8gV2hlbiBubyBleHBsaWNpdCBtZXRhZGF0YUJhc2UgaXMgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLCB3ZSdsbCBvdmVycmlkZSBpdCB3aXRoIHRoZSBmYWxsYmFjayBtZXRhZGF0YVxuICAgIC8vIHVuZGVyIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAgICAvLyAtIFRoZSBwcm92aWRlZCBVUkwgaXMgcmVsYXRpdmUgKGllIC4vb2ctaW1hZ2UpLlxuICAgIC8vIC0gVGhlIGltYWdlIGlzIHN0YXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IE5leHQuanMgKHN1Y2ggYXMgdGhlIHNwZWNpYWwgYG9wZW5ncmFwaC1pbWFnZWAgcm91dGUpXG4gICAgLy8gSW4gYm90aCBjYXNlcywgd2Ugd2FudCB0byBlbnN1cmUgdGhhdCBhY3Jvc3MgYWxsIGVudmlyb25tZW50cywgdGhlIG9nSW1hZ2UgaXMgYSBmdWxseSBxdWFsaWZpZWQgVVJMLlxuICAgIC8vIEluIHRoZSBgb3BlbmdyYXBoLWltYWdlYCBjYXNlLCBzaW5jZSB0aGUgdXNlciBpc24ndCBleHBsaWNpdGx5IHBhc3NpbmcgYSByZWxhdGl2ZSBwYXRoLCB0aGlzIGVuc3VyZXNcbiAgICAvLyB0aGUgb2dJbWFnZSB3aWxsIGJlIHByb3Blcmx5IGRpc2NvdmVyZWQgYWNyb3NzIGRpZmZlcmVudCBlbnZpcm9ubWVudHMgd2l0aG91dCB0aGUgdXNlciBuZWVkaW5nIHRvXG4gICAgLy8gaGF2ZSBhIGJ1bmNoIG9mIGBwcm9jZXNzLmVudmAgY2hlY2tzIHdoZW4gZGVmaW5pbmcgdGhlaXIgYG1ldGFkYXRhQmFzZWAuXG4gICAgaWYgKGlzUmVsYXRpdmVVcmwgJiYgKCFtZXRhZGF0YUJhc2UgfHwgaXNTdGF0aWNNZXRhZGF0YVJvdXRlRmlsZSkpIHtcbiAgICAgICAgY29uc3QgZmFsbGJhY2tNZXRhZGF0YUJhc2UgPSAoMCwgX3Jlc29sdmV1cmwuZ2V0U29jaWFsSW1hZ2VNZXRhZGF0YUJhc2VGYWxsYmFjaykobWV0YWRhdGFCYXNlKTtcbiAgICAgICAgLy8gV2hlbiBub3QgdXNpbmcgVmVyY2VsIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgVVJMIGluamVjdGlvbiwgd2UgYXJlbid0IGFibGUgdG8gZGV0ZXJtaW5lXG4gICAgICAgIC8vIGEgZmFsbGJhY2sgdmFsdWUgZm9yIGBtZXRhZGF0YUJhc2VgLiBGb3Igc2VsZi1ob3N0ZWQgc2V0dXBzLCB3ZSB3YW50IHRvIHdhcm5cbiAgICAgICAgLy8gYWJvdXQgdGhpcyBzaW5jZSB0aGUgb25seSBmYWxsYmFjayB3ZSdsbCBiZSBhYmxlIHRvIGdlbmVyYXRlIGlzIGBsb2NhbGhvc3RgLlxuICAgICAgICAvLyBJbiBkZXZlbG9wbWVudCwgd2UnbGwgb25seSB3YXJuIGZvciByZWxhdGl2ZSBtZXRhZGF0YSB0aGF0IGlzbid0IHBhcnQgb2YgdGhlIHN0YXRpY1xuICAgICAgICAvLyBtZXRhZGF0YSBjb252ZW50aW9ucyAoZWcgYG9wZW5ncmFwaC1pbWFnZWApLCBhcyBvdGhlcndpc2UgaXQncyBjdXJyZW50bHkgdmVyeSBub2lzeVxuICAgICAgICAvLyBmb3IgY29tbW9uIGNhc2VzLiBFdmVudHVhbGx5IHdlIHNob3VsZCByZW1vdmUgdGhpcyB3YXJuaW5nIGFsbCB0b2dldGhlciBpbiBmYXZvciBvZlxuICAgICAgICAvLyBkZXZ0b29scy5cbiAgICAgICAgY29uc3Qgc2hvdWxkV2FybiA9ICFpc1VzaW5nVmVyY2VsU3lzdGVtRW52aXJvbm1lbnRWYXJpYWJsZXMgJiYgIW1ldGFkYXRhQmFzZSAmJiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJyB8fCAhaXNTdGF0aWNNZXRhZGF0YVJvdXRlRmlsZSk7XG4gICAgICAgIGlmIChzaG91bGRXYXJuKSB7XG4gICAgICAgICAgICAoMCwgX2xvZy53YXJuT25jZSkoYG1ldGFkYXRhQmFzZSBwcm9wZXJ0eSBpbiBtZXRhZGF0YSBleHBvcnQgaXMgbm90IHNldCBmb3IgcmVzb2x2aW5nIHNvY2lhbCBvcGVuIGdyYXBoIG9yIHR3aXR0ZXIgaW1hZ2VzLCB1c2luZyBcIiR7ZmFsbGJhY2tNZXRhZGF0YUJhc2Uub3JpZ2lufVwiLiBTZWUgaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL2dlbmVyYXRlLW1ldGFkYXRhI21ldGFkYXRhYmFzZWApO1xuICAgICAgICB9XG4gICAgICAgIG1ldGFkYXRhQmFzZSA9IGZhbGxiYWNrTWV0YWRhdGFCYXNlO1xuICAgIH1cbiAgICByZXR1cm4gaXNJdGVtVXJsID8ge1xuICAgICAgICB1cmw6ICgwLCBfcmVzb2x2ZXVybC5yZXNvbHZlVXJsKShpbnB1dFVybCwgbWV0YWRhdGFCYXNlKVxuICAgIH0gOiB7XG4gICAgICAgIC4uLml0ZW0sXG4gICAgICAgIC8vIFVwZGF0ZSBpbWFnZSBkZXNjcmlwdG9yIHVybFxuICAgICAgICB1cmw6ICgwLCBfcmVzb2x2ZXVybC5yZXNvbHZlVXJsKShpbnB1dFVybCwgbWV0YWRhdGFCYXNlKVxuICAgIH07XG59XG5mdW5jdGlvbiByZXNvbHZlSW1hZ2VzKGltYWdlcywgbWV0YWRhdGFCYXNlLCBpc1N0YXRpY01ldGFkYXRhUm91dGVGaWxlKSB7XG4gICAgY29uc3QgcmVzb2x2ZWRJbWFnZXMgPSAoMCwgX3V0aWxzLnJlc29sdmVBc0FycmF5T3JVbmRlZmluZWQpKGltYWdlcyk7XG4gICAgaWYgKCFyZXNvbHZlZEltYWdlcykgcmV0dXJuIHJlc29sdmVkSW1hZ2VzO1xuICAgIGNvbnN0IG5vbk51bGxhYmxlSW1hZ2VzID0gW107XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHJlc29sdmVkSW1hZ2VzKXtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRJdGVtID0gcmVzb2x2ZUFuZFZhbGlkYXRlSW1hZ2UoaXRlbSwgbWV0YWRhdGFCYXNlLCBpc1N0YXRpY01ldGFkYXRhUm91dGVGaWxlKTtcbiAgICAgICAgaWYgKCFyZXNvbHZlZEl0ZW0pIGNvbnRpbnVlO1xuICAgICAgICBub25OdWxsYWJsZUltYWdlcy5wdXNoKHJlc29sdmVkSXRlbSk7XG4gICAgfVxuICAgIHJldHVybiBub25OdWxsYWJsZUltYWdlcztcbn1cbmNvbnN0IG9nVHlwZVRvRmllbGRzID0ge1xuICAgIGFydGljbGU6IE9nVHlwZUZpZWxkcy5hcnRpY2xlLFxuICAgIGJvb2s6IE9nVHlwZUZpZWxkcy5hcnRpY2xlLFxuICAgICdtdXNpYy5zb25nJzogT2dUeXBlRmllbGRzLnNvbmcsXG4gICAgJ211c2ljLmFsYnVtJzogT2dUeXBlRmllbGRzLnNvbmcsXG4gICAgJ211c2ljLnBsYXlsaXN0JzogT2dUeXBlRmllbGRzLnBsYXlsaXN0LFxuICAgICdtdXNpYy5yYWRpb19zdGF0aW9uJzogT2dUeXBlRmllbGRzLnJhZGlvLFxuICAgICd2aWRlby5tb3ZpZSc6IE9nVHlwZUZpZWxkcy52aWRlbyxcbiAgICAndmlkZW8uZXBpc29kZSc6IE9nVHlwZUZpZWxkcy52aWRlb1xufTtcbmZ1bmN0aW9uIGdldEZpZWxkc0J5T2dUeXBlKG9nVHlwZSkge1xuICAgIGlmICghb2dUeXBlIHx8ICEob2dUeXBlIGluIG9nVHlwZVRvRmllbGRzKSkgcmV0dXJuIE9nVHlwZUZpZWxkcy5iYXNpYztcbiAgICByZXR1cm4gb2dUeXBlVG9GaWVsZHNbb2dUeXBlXS5jb25jYXQoT2dUeXBlRmllbGRzLmJhc2ljKTtcbn1cbmNvbnN0IHJlc29sdmVPcGVuR3JhcGggPSBhc3luYyAob3BlbkdyYXBoLCBtZXRhZGF0YUJhc2UsIHBhdGhuYW1lLCBtZXRhZGF0YUNvbnRleHQsIHRpdGxlVGVtcGxhdGUpPT57XG4gICAgaWYgKCFvcGVuR3JhcGgpIHJldHVybiBudWxsO1xuICAgIGZ1bmN0aW9uIHJlc29sdmVQcm9wcyh0YXJnZXQsIG9nKSB7XG4gICAgICAgIGNvbnN0IG9nVHlwZSA9IG9nICYmICd0eXBlJyBpbiBvZyA/IG9nLnR5cGUgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGtleXMgPSBnZXRGaWVsZHNCeU9nVHlwZShvZ1R5cGUpO1xuICAgICAgICBmb3IgKGNvbnN0IGsgb2Yga2V5cyl7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBrO1xuICAgICAgICAgICAgaWYgKGtleSBpbiBvZyAmJiBrZXkgIT09ICd1cmwnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBvZ1trZXldO1xuICAgICAgICAgICAgICAgIHRhcmdldFtrZXldID0gdmFsdWUgPyAoMCwgX3V0aWxzLnJlc29sdmVBcnJheSkodmFsdWUpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0YXJnZXQuaW1hZ2VzID0gcmVzb2x2ZUltYWdlcyhvZy5pbWFnZXMsIG1ldGFkYXRhQmFzZSwgbWV0YWRhdGFDb250ZXh0LmlzU3RhdGljTWV0YWRhdGFSb3V0ZUZpbGUpO1xuICAgIH1cbiAgICBjb25zdCByZXNvbHZlZCA9IHtcbiAgICAgICAgLi4ub3BlbkdyYXBoLFxuICAgICAgICB0aXRsZTogKDAsIF9yZXNvbHZldGl0bGUucmVzb2x2ZVRpdGxlKShvcGVuR3JhcGgudGl0bGUsIHRpdGxlVGVtcGxhdGUpXG4gICAgfTtcbiAgICByZXNvbHZlUHJvcHMocmVzb2x2ZWQsIG9wZW5HcmFwaCk7XG4gICAgcmVzb2x2ZWQudXJsID0gb3BlbkdyYXBoLnVybCA/ICgwLCBfcmVzb2x2ZXVybC5yZXNvbHZlQWJzb2x1dGVVcmxXaXRoUGF0aG5hbWUpKG9wZW5HcmFwaC51cmwsIG1ldGFkYXRhQmFzZSwgYXdhaXQgcGF0aG5hbWUsIG1ldGFkYXRhQ29udGV4dCkgOiBudWxsO1xuICAgIHJldHVybiByZXNvbHZlZDtcbn07XG5jb25zdCBUd2l0dGVyQmFzaWNJbmZvS2V5cyA9IFtcbiAgICAnc2l0ZScsXG4gICAgJ3NpdGVJZCcsXG4gICAgJ2NyZWF0b3InLFxuICAgICdjcmVhdG9ySWQnLFxuICAgICdkZXNjcmlwdGlvbidcbl07XG5jb25zdCByZXNvbHZlVHdpdHRlciA9ICh0d2l0dGVyLCBtZXRhZGF0YUJhc2UsIG1ldGFkYXRhQ29udGV4dCwgdGl0bGVUZW1wbGF0ZSk9PntcbiAgICB2YXIgX3Jlc29sdmVkX2ltYWdlcztcbiAgICBpZiAoIXR3aXR0ZXIpIHJldHVybiBudWxsO1xuICAgIGxldCBjYXJkID0gJ2NhcmQnIGluIHR3aXR0ZXIgPyB0d2l0dGVyLmNhcmQgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSB7XG4gICAgICAgIC4uLnR3aXR0ZXIsXG4gICAgICAgIHRpdGxlOiAoMCwgX3Jlc29sdmV0aXRsZS5yZXNvbHZlVGl0bGUpKHR3aXR0ZXIudGl0bGUsIHRpdGxlVGVtcGxhdGUpXG4gICAgfTtcbiAgICBmb3IgKGNvbnN0IGluZm9LZXkgb2YgVHdpdHRlckJhc2ljSW5mb0tleXMpe1xuICAgICAgICByZXNvbHZlZFtpbmZvS2V5XSA9IHR3aXR0ZXJbaW5mb0tleV0gfHwgbnVsbDtcbiAgICB9XG4gICAgcmVzb2x2ZWQuaW1hZ2VzID0gcmVzb2x2ZUltYWdlcyh0d2l0dGVyLmltYWdlcywgbWV0YWRhdGFCYXNlLCBtZXRhZGF0YUNvbnRleHQuaXNTdGF0aWNNZXRhZGF0YVJvdXRlRmlsZSk7XG4gICAgY2FyZCA9IGNhcmQgfHwgKCgoX3Jlc29sdmVkX2ltYWdlcyA9IHJlc29sdmVkLmltYWdlcykgPT0gbnVsbCA/IHZvaWQgMCA6IF9yZXNvbHZlZF9pbWFnZXMubGVuZ3RoKSA/ICdzdW1tYXJ5X2xhcmdlX2ltYWdlJyA6ICdzdW1tYXJ5Jyk7XG4gICAgcmVzb2x2ZWQuY2FyZCA9IGNhcmQ7XG4gICAgaWYgKCdjYXJkJyBpbiByZXNvbHZlZCkge1xuICAgICAgICBzd2l0Y2gocmVzb2x2ZWQuY2FyZCl7XG4gICAgICAgICAgICBjYXNlICdwbGF5ZXInOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWQucGxheWVycyA9ICgwLCBfdXRpbHMucmVzb2x2ZUFzQXJyYXlPclVuZGVmaW5lZCkocmVzb2x2ZWQucGxheWVycykgfHwgW107XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2FwcCc6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZC5hcHAgPSByZXNvbHZlZC5hcHAgfHwge307XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ3N1bW1hcnknOlxuICAgICAgICAgICAgY2FzZSAnc3VtbWFyeV9sYXJnZV9pbWFnZSc6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJlc29sdmVkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXNvbHZlZDtcbn07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlc29sdmUtb3BlbmdyYXBoLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-opengraph.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-title.js":
|
||
/*!************************************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/metadata/resolvers/resolve-title.js ***!
|
||
\************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"resolveTitle\", ({\n enumerable: true,\n get: function() {\n return resolveTitle;\n }\n}));\nfunction resolveTitleTemplate(template, title) {\n return template ? template.replace(/%s/g, title) : title;\n}\nfunction resolveTitle(title, stashedTemplate) {\n let resolved;\n const template = typeof title !== 'string' && title && 'template' in title ? title.template : null;\n if (typeof title === 'string') {\n resolved = resolveTitleTemplate(stashedTemplate, title);\n } else if (title) {\n if ('default' in title) {\n resolved = resolveTitleTemplate(stashedTemplate, title.default);\n }\n if ('absolute' in title && title.absolute) {\n resolved = title.absolute;\n }\n }\n if (title && typeof title !== 'string') {\n return {\n template,\n absolute: resolved || ''\n };\n } else {\n return {\n absolute: resolved || title || '',\n template\n };\n }\n}\n\n//# sourceMappingURL=resolve-title.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9yZXNvbHZlcnMvcmVzb2x2ZS10aXRsZS5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLGdEQUErQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvbGliL21ldGFkYXRhL3Jlc29sdmVycy9yZXNvbHZlLXRpdGxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwicmVzb2x2ZVRpdGxlXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlVGl0bGU7XG4gICAgfVxufSk7XG5mdW5jdGlvbiByZXNvbHZlVGl0bGVUZW1wbGF0ZSh0ZW1wbGF0ZSwgdGl0bGUpIHtcbiAgICByZXR1cm4gdGVtcGxhdGUgPyB0ZW1wbGF0ZS5yZXBsYWNlKC8lcy9nLCB0aXRsZSkgOiB0aXRsZTtcbn1cbmZ1bmN0aW9uIHJlc29sdmVUaXRsZSh0aXRsZSwgc3Rhc2hlZFRlbXBsYXRlKSB7XG4gICAgbGV0IHJlc29sdmVkO1xuICAgIGNvbnN0IHRlbXBsYXRlID0gdHlwZW9mIHRpdGxlICE9PSAnc3RyaW5nJyAmJiB0aXRsZSAmJiAndGVtcGxhdGUnIGluIHRpdGxlID8gdGl0bGUudGVtcGxhdGUgOiBudWxsO1xuICAgIGlmICh0eXBlb2YgdGl0bGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJlc29sdmVkID0gcmVzb2x2ZVRpdGxlVGVtcGxhdGUoc3Rhc2hlZFRlbXBsYXRlLCB0aXRsZSk7XG4gICAgfSBlbHNlIGlmICh0aXRsZSkge1xuICAgICAgICBpZiAoJ2RlZmF1bHQnIGluIHRpdGxlKSB7XG4gICAgICAgICAgICByZXNvbHZlZCA9IHJlc29sdmVUaXRsZVRlbXBsYXRlKHN0YXNoZWRUZW1wbGF0ZSwgdGl0bGUuZGVmYXVsdCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCdhYnNvbHV0ZScgaW4gdGl0bGUgJiYgdGl0bGUuYWJzb2x1dGUpIHtcbiAgICAgICAgICAgIHJlc29sdmVkID0gdGl0bGUuYWJzb2x1dGU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRpdGxlICYmIHR5cGVvZiB0aXRsZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRlbXBsYXRlLFxuICAgICAgICAgICAgYWJzb2x1dGU6IHJlc29sdmVkIHx8ICcnXG4gICAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFic29sdXRlOiByZXNvbHZlZCB8fCB0aXRsZSB8fCAnJyxcbiAgICAgICAgICAgIHRlbXBsYXRlXG4gICAgICAgIH07XG4gICAgfVxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXNvbHZlLXRpdGxlLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-title.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-url.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/metadata/resolvers/resolve-url.js ***!
|
||
\**********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getSocialImageMetadataBaseFallback: function() {\n return getSocialImageMetadataBaseFallback;\n },\n isStringOrURL: function() {\n return isStringOrURL;\n },\n resolveAbsoluteUrlWithPathname: function() {\n return resolveAbsoluteUrlWithPathname;\n },\n resolveRelativeUrl: function() {\n return resolveRelativeUrl;\n },\n resolveUrl: function() {\n return resolveUrl;\n }\n});\nconst _path = /*#__PURE__*/ _interop_require_default(__webpack_require__(/*! ../../../shared/lib/isomorphic/path */ \"(rsc)/./node_modules/next/dist/shared/lib/isomorphic/path.js\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction isStringOrURL(icon) {\n return typeof icon === 'string' || icon instanceof URL;\n}\nfunction createLocalMetadataBase() {\n // Check if experimental HTTPS is enabled\n const isExperimentalHttps = Boolean(process.env.__NEXT_EXPERIMENTAL_HTTPS);\n const protocol = isExperimentalHttps ? 'https' : 'http';\n return new URL(`${protocol}://localhost:${process.env.PORT || 3000}`);\n}\nfunction getPreviewDeploymentUrl() {\n const origin = process.env.VERCEL_BRANCH_URL || process.env.VERCEL_URL;\n return origin ? new URL(`https://${origin}`) : undefined;\n}\nfunction getProductionDeploymentUrl() {\n const origin = process.env.VERCEL_PROJECT_PRODUCTION_URL;\n return origin ? new URL(`https://${origin}`) : undefined;\n}\nfunction getSocialImageMetadataBaseFallback(metadataBase) {\n const defaultMetadataBase = createLocalMetadataBase();\n const previewDeploymentUrl = getPreviewDeploymentUrl();\n const productionDeploymentUrl = getProductionDeploymentUrl();\n let fallbackMetadataBase;\n if (true) {\n fallbackMetadataBase = defaultMetadataBase;\n } else {}\n return fallbackMetadataBase;\n}\nfunction resolveUrl(url, metadataBase) {\n if (url instanceof URL) return url;\n if (!url) return null;\n try {\n // If we can construct a URL instance from url, ignore metadataBase\n const parsedUrl = new URL(url);\n return parsedUrl;\n } catch {}\n if (!metadataBase) {\n metadataBase = createLocalMetadataBase();\n }\n // Handle relative or absolute paths\n const pathname = metadataBase.pathname || '';\n const joinedPath = _path.default.posix.join(pathname, url);\n return new URL(joinedPath, metadataBase);\n}\n// Resolve with `pathname` if `url` is a relative path.\nfunction resolveRelativeUrl(url, pathname) {\n if (typeof url === 'string' && url.startsWith('./')) {\n return _path.default.posix.resolve(pathname, url);\n }\n return url;\n}\n// The regex is matching logic from packages/next/src/lib/load-custom-routes.ts\nconst FILE_REGEX = /^(?:\\/((?!\\.well-known(?:\\/.*)?)(?:[^/]+\\/)*[^/]+\\.\\w+))(\\/?|$)/i;\nfunction isFilePattern(pathname) {\n return FILE_REGEX.test(pathname);\n}\n// Resolve `pathname` if `url` is a relative path the compose with `metadataBase`.\nfunction resolveAbsoluteUrlWithPathname(url, metadataBase, pathname, { trailingSlash }) {\n // Resolve url with pathname that always starts with `/`\n url = resolveRelativeUrl(url, pathname);\n // Convert string url or URL instance to absolute url string,\n // if there's case needs to be resolved with metadataBase\n let resolvedUrl = '';\n const result = metadataBase ? resolveUrl(url, metadataBase) : url;\n if (typeof result === 'string') {\n resolvedUrl = result;\n } else {\n resolvedUrl = result.pathname === '/' && result.searchParams.size === 0 ? result.origin : result.href;\n }\n // Add trailing slash if it's enabled for urls matches the condition\n // - Not external, same origin with metadataBase\n // - Doesn't have query\n if (trailingSlash && !resolvedUrl.endsWith('/')) {\n let isRelative = resolvedUrl.startsWith('/');\n let hasQuery = resolvedUrl.includes('?');\n let isExternal = false;\n let isFileUrl = false;\n if (!isRelative) {\n try {\n const parsedUrl = new URL(resolvedUrl);\n isExternal = metadataBase != null && parsedUrl.origin !== metadataBase.origin;\n isFileUrl = isFilePattern(parsedUrl.pathname);\n } catch {\n // If it's not a valid URL, treat it as external\n isExternal = true;\n }\n if (// Do not apply trailing slash for file like urls, aligning with the behavior with `trailingSlash`\n !isFileUrl && !isExternal && !hasQuery) return `${resolvedUrl}/`;\n }\n }\n return resolvedUrl;\n}\n\n//# sourceMappingURL=resolve-url.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9yZXNvbHZlcnMvcmVzb2x2ZS11cmwuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBTUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QscURBQXFELG1CQUFPLENBQUMseUdBQXFDO0FBQ2xHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixTQUFTLGVBQWUseUJBQXlCO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxPQUFPO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxPQUFPO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsSUFBc0M7QUFDOUM7QUFDQSxNQUFNLEtBQUssRUFFTjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1RUFBdUUsZUFBZTtBQUN0RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RCxZQUFZO0FBQzFFO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9saWIvbWV0YWRhdGEvcmVzb2x2ZXJzL3Jlc29sdmUtdXJsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgZ2V0U29jaWFsSW1hZ2VNZXRhZGF0YUJhc2VGYWxsYmFjazogbnVsbCxcbiAgICBpc1N0cmluZ09yVVJMOiBudWxsLFxuICAgIHJlc29sdmVBYnNvbHV0ZVVybFdpdGhQYXRobmFtZTogbnVsbCxcbiAgICByZXNvbHZlUmVsYXRpdmVVcmw6IG51bGwsXG4gICAgcmVzb2x2ZVVybDogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBnZXRTb2NpYWxJbWFnZU1ldGFkYXRhQmFzZUZhbGxiYWNrOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldFNvY2lhbEltYWdlTWV0YWRhdGFCYXNlRmFsbGJhY2s7XG4gICAgfSxcbiAgICBpc1N0cmluZ09yVVJMOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGlzU3RyaW5nT3JVUkw7XG4gICAgfSxcbiAgICByZXNvbHZlQWJzb2x1dGVVcmxXaXRoUGF0aG5hbWU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZUFic29sdXRlVXJsV2l0aFBhdGhuYW1lO1xuICAgIH0sXG4gICAgcmVzb2x2ZVJlbGF0aXZlVXJsOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVSZWxhdGl2ZVVybDtcbiAgICB9LFxuICAgIHJlc29sdmVVcmw6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZVVybDtcbiAgICB9XG59KTtcbmNvbnN0IF9wYXRoID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQocmVxdWlyZShcIi4uLy4uLy4uL3NoYXJlZC9saWIvaXNvbW9ycGhpYy9wYXRoXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChvYmopIHtcbiAgICByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDoge1xuICAgICAgICBkZWZhdWx0OiBvYmpcbiAgICB9O1xufVxuZnVuY3Rpb24gaXNTdHJpbmdPclVSTChpY29uKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBpY29uID09PSAnc3RyaW5nJyB8fCBpY29uIGluc3RhbmNlb2YgVVJMO1xufVxuZnVuY3Rpb24gY3JlYXRlTG9jYWxNZXRhZGF0YUJhc2UoKSB7XG4gICAgLy8gQ2hlY2sgaWYgZXhwZXJpbWVudGFsIEhUVFBTIGlzIGVuYWJsZWRcbiAgICBjb25zdCBpc0V4cGVyaW1lbnRhbEh0dHBzID0gQm9vbGVhbihwcm9jZXNzLmVudi5fX05FWFRfRVhQRVJJTUVOVEFMX0hUVFBTKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IGlzRXhwZXJpbWVudGFsSHR0cHMgPyAnaHR0cHMnIDogJ2h0dHAnO1xuICAgIHJldHVybiBuZXcgVVJMKGAke3Byb3RvY29sfTovL2xvY2FsaG9zdDoke3Byb2Nlc3MuZW52LlBPUlQgfHwgMzAwMH1gKTtcbn1cbmZ1bmN0aW9uIGdldFByZXZpZXdEZXBsb3ltZW50VXJsKCkge1xuICAgIGNvbnN0IG9yaWdpbiA9IHByb2Nlc3MuZW52LlZFUkNFTF9CUkFOQ0hfVVJMIHx8IHByb2Nlc3MuZW52LlZFUkNFTF9VUkw7XG4gICAgcmV0dXJuIG9yaWdpbiA/IG5ldyBVUkwoYGh0dHBzOi8vJHtvcmlnaW59YCkgOiB1bmRlZmluZWQ7XG59XG5mdW5jdGlvbiBnZXRQcm9kdWN0aW9uRGVwbG95bWVudFVybCgpIHtcbiAgICBjb25zdCBvcmlnaW4gPSBwcm9jZXNzLmVudi5WRVJDRUxfUFJPSkVDVF9QUk9EVUNUSU9OX1VSTDtcbiAgICByZXR1cm4gb3JpZ2luID8gbmV3IFVSTChgaHR0cHM6Ly8ke29yaWdpbn1gKSA6IHVuZGVmaW5lZDtcbn1cbmZ1bmN0aW9uIGdldFNvY2lhbEltYWdlTWV0YWRhdGFCYXNlRmFsbGJhY2sobWV0YWRhdGFCYXNlKSB7XG4gICAgY29uc3QgZGVmYXVsdE1ldGFkYXRhQmFzZSA9IGNyZWF0ZUxvY2FsTWV0YWRhdGFCYXNlKCk7XG4gICAgY29uc3QgcHJldmlld0RlcGxveW1lbnRVcmwgPSBnZXRQcmV2aWV3RGVwbG95bWVudFVybCgpO1xuICAgIGNvbnN0IHByb2R1Y3Rpb25EZXBsb3ltZW50VXJsID0gZ2V0UHJvZHVjdGlvbkRlcGxveW1lbnRVcmwoKTtcbiAgICBsZXQgZmFsbGJhY2tNZXRhZGF0YUJhc2U7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAgIGZhbGxiYWNrTWV0YWRhdGFCYXNlID0gZGVmYXVsdE1ldGFkYXRhQmFzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmYWxsYmFja01ldGFkYXRhQmFzZSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicgJiYgcHJldmlld0RlcGxveW1lbnRVcmwgJiYgcHJvY2Vzcy5lbnYuVkVSQ0VMX0VOViA9PT0gJ3ByZXZpZXcnID8gcHJldmlld0RlcGxveW1lbnRVcmwgOiBtZXRhZGF0YUJhc2UgfHwgcHJvZHVjdGlvbkRlcGxveW1lbnRVcmwgfHwgZGVmYXVsdE1ldGFkYXRhQmFzZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbGxiYWNrTWV0YWRhdGFCYXNlO1xufVxuZnVuY3Rpb24gcmVzb2x2ZVVybCh1cmwsIG1ldGFkYXRhQmFzZSkge1xuICAgIGlmICh1cmwgaW5zdGFuY2VvZiBVUkwpIHJldHVybiB1cmw7XG4gICAgaWYgKCF1cmwpIHJldHVybiBudWxsO1xuICAgIHRyeSB7XG4gICAgICAgIC8vIElmIHdlIGNhbiBjb25zdHJ1Y3QgYSBVUkwgaW5zdGFuY2UgZnJvbSB1cmwsIGlnbm9yZSBtZXRhZGF0YUJhc2VcbiAgICAgICAgY29uc3QgcGFyc2VkVXJsID0gbmV3IFVSTCh1cmwpO1xuICAgICAgICByZXR1cm4gcGFyc2VkVXJsO1xuICAgIH0gY2F0Y2ggIHt9XG4gICAgaWYgKCFtZXRhZGF0YUJhc2UpIHtcbiAgICAgICAgbWV0YWRhdGFCYXNlID0gY3JlYXRlTG9jYWxNZXRhZGF0YUJhc2UoKTtcbiAgICB9XG4gICAgLy8gSGFuZGxlIHJlbGF0aXZlIG9yIGFic29sdXRlIHBhdGhzXG4gICAgY29uc3QgcGF0aG5hbWUgPSBtZXRhZGF0YUJhc2UucGF0aG5hbWUgfHwgJyc7XG4gICAgY29uc3Qgam9pbmVkUGF0aCA9IF9wYXRoLmRlZmF1bHQucG9zaXguam9pbihwYXRobmFtZSwgdXJsKTtcbiAgICByZXR1cm4gbmV3IFVSTChqb2luZWRQYXRoLCBtZXRhZGF0YUJhc2UpO1xufVxuLy8gUmVzb2x2ZSB3aXRoIGBwYXRobmFtZWAgaWYgYHVybGAgaXMgYSByZWxhdGl2ZSBwYXRoLlxuZnVuY3Rpb24gcmVzb2x2ZVJlbGF0aXZlVXJsKHVybCwgcGF0aG5hbWUpIHtcbiAgICBpZiAodHlwZW9mIHVybCA9PT0gJ3N0cmluZycgJiYgdXJsLnN0YXJ0c1dpdGgoJy4vJykpIHtcbiAgICAgICAgcmV0dXJuIF9wYXRoLmRlZmF1bHQucG9zaXgucmVzb2x2ZShwYXRobmFtZSwgdXJsKTtcbiAgICB9XG4gICAgcmV0dXJuIHVybDtcbn1cbi8vIFRoZSByZWdleCBpcyBtYXRjaGluZyBsb2dpYyBmcm9tIHBhY2thZ2VzL25leHQvc3JjL2xpYi9sb2FkLWN1c3RvbS1yb3V0ZXMudHNcbmNvbnN0IEZJTEVfUkVHRVggPSAvXig/OlxcLygoPyFcXC53ZWxsLWtub3duKD86XFwvLiopPykoPzpbXi9dK1xcLykqW14vXStcXC5cXHcrKSkoXFwvP3wkKS9pO1xuZnVuY3Rpb24gaXNGaWxlUGF0dGVybihwYXRobmFtZSkge1xuICAgIHJldHVybiBGSUxFX1JFR0VYLnRlc3QocGF0aG5hbWUpO1xufVxuLy8gUmVzb2x2ZSBgcGF0aG5hbWVgIGlmIGB1cmxgIGlzIGEgcmVsYXRpdmUgcGF0aCB0aGUgY29tcG9zZSB3aXRoIGBtZXRhZGF0YUJhc2VgLlxuZnVuY3Rpb24gcmVzb2x2ZUFic29sdXRlVXJsV2l0aFBhdGhuYW1lKHVybCwgbWV0YWRhdGFCYXNlLCBwYXRobmFtZSwgeyB0cmFpbGluZ1NsYXNoIH0pIHtcbiAgICAvLyBSZXNvbHZlIHVybCB3aXRoIHBhdGhuYW1lIHRoYXQgYWx3YXlzIHN0YXJ0cyB3aXRoIGAvYFxuICAgIHVybCA9IHJlc29sdmVSZWxhdGl2ZVVybCh1cmwsIHBhdGhuYW1lKTtcbiAgICAvLyBDb252ZXJ0IHN0cmluZyB1cmwgb3IgVVJMIGluc3RhbmNlIHRvIGFic29sdXRlIHVybCBzdHJpbmcsXG4gICAgLy8gaWYgdGhlcmUncyBjYXNlIG5lZWRzIHRvIGJlIHJlc29sdmVkIHdpdGggbWV0YWRhdGFCYXNlXG4gICAgbGV0IHJlc29sdmVkVXJsID0gJyc7XG4gICAgY29uc3QgcmVzdWx0ID0gbWV0YWRhdGFCYXNlID8gcmVzb2x2ZVVybCh1cmwsIG1ldGFkYXRhQmFzZSkgOiB1cmw7XG4gICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJlc29sdmVkVXJsID0gcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmVkVXJsID0gcmVzdWx0LnBhdGhuYW1lID09PSAnLycgJiYgcmVzdWx0LnNlYXJjaFBhcmFtcy5zaXplID09PSAwID8gcmVzdWx0Lm9yaWdpbiA6IHJlc3VsdC5ocmVmO1xuICAgIH1cbiAgICAvLyBBZGQgdHJhaWxpbmcgc2xhc2ggaWYgaXQncyBlbmFibGVkIGZvciB1cmxzIG1hdGNoZXMgdGhlIGNvbmRpdGlvblxuICAgIC8vIC0gTm90IGV4dGVybmFsLCBzYW1lIG9yaWdpbiB3aXRoIG1ldGFkYXRhQmFzZVxuICAgIC8vIC0gRG9lc24ndCBoYXZlIHF1ZXJ5XG4gICAgaWYgKHRyYWlsaW5nU2xhc2ggJiYgIXJlc29sdmVkVXJsLmVuZHNXaXRoKCcvJykpIHtcbiAgICAgICAgbGV0IGlzUmVsYXRpdmUgPSByZXNvbHZlZFVybC5zdGFydHNXaXRoKCcvJyk7XG4gICAgICAgIGxldCBoYXNRdWVyeSA9IHJlc29sdmVkVXJsLmluY2x1ZGVzKCc/Jyk7XG4gICAgICAgIGxldCBpc0V4dGVybmFsID0gZmFsc2U7XG4gICAgICAgIGxldCBpc0ZpbGVVcmwgPSBmYWxzZTtcbiAgICAgICAgaWYgKCFpc1JlbGF0aXZlKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZFVybCA9IG5ldyBVUkwocmVzb2x2ZWRVcmwpO1xuICAgICAgICAgICAgICAgIGlzRXh0ZXJuYWwgPSBtZXRhZGF0YUJhc2UgIT0gbnVsbCAmJiBwYXJzZWRVcmwub3JpZ2luICE9PSBtZXRhZGF0YUJhc2Uub3JpZ2luO1xuICAgICAgICAgICAgICAgIGlzRmlsZVVybCA9IGlzRmlsZVBhdHRlcm4ocGFyc2VkVXJsLnBhdGhuYW1lKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggIHtcbiAgICAgICAgICAgICAgICAvLyBJZiBpdCdzIG5vdCBhIHZhbGlkIFVSTCwgdHJlYXQgaXQgYXMgZXh0ZXJuYWxcbiAgICAgICAgICAgICAgICBpc0V4dGVybmFsID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgvLyBEbyBub3QgYXBwbHkgdHJhaWxpbmcgc2xhc2ggZm9yIGZpbGUgbGlrZSB1cmxzLCBhbGlnbmluZyB3aXRoIHRoZSBiZWhhdmlvciB3aXRoIGB0cmFpbGluZ1NsYXNoYFxuICAgICAgICAgICAgIWlzRmlsZVVybCAmJiAhaXNFeHRlcm5hbCAmJiAhaGFzUXVlcnkpIHJldHVybiBgJHtyZXNvbHZlZFVybH0vYDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzb2x2ZWRVcmw7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlc29sdmUtdXJsLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-url.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/lib/picocolors.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/picocolors.js ***!
|
||
\**************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("// ISC License\n// Copyright (c) 2021 Alexey Raspopov, Kostiantyn Denysov, Anton Verinov\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n//\n// https://github.com/alexeyraspopov/picocolors/blob/b6261487e7b81aaab2440e397a356732cad9e342/picocolors.js#L1\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n bgBlack: function() {\n return bgBlack;\n },\n bgBlue: function() {\n return bgBlue;\n },\n bgCyan: function() {\n return bgCyan;\n },\n bgGreen: function() {\n return bgGreen;\n },\n bgMagenta: function() {\n return bgMagenta;\n },\n bgRed: function() {\n return bgRed;\n },\n bgWhite: function() {\n return bgWhite;\n },\n bgYellow: function() {\n return bgYellow;\n },\n black: function() {\n return black;\n },\n blue: function() {\n return blue;\n },\n bold: function() {\n return bold;\n },\n cyan: function() {\n return cyan;\n },\n dim: function() {\n return dim;\n },\n gray: function() {\n return gray;\n },\n green: function() {\n return green;\n },\n hidden: function() {\n return hidden;\n },\n inverse: function() {\n return inverse;\n },\n italic: function() {\n return italic;\n },\n magenta: function() {\n return magenta;\n },\n purple: function() {\n return purple;\n },\n red: function() {\n return red;\n },\n reset: function() {\n return reset;\n },\n strikethrough: function() {\n return strikethrough;\n },\n underline: function() {\n return underline;\n },\n white: function() {\n return white;\n },\n yellow: function() {\n return yellow;\n }\n});\nvar _globalThis;\nconst { env, stdout } = ((_globalThis = globalThis) == null ? void 0 : _globalThis.process) ?? {};\nconst enabled = env && !env.NO_COLOR && (env.FORCE_COLOR || (stdout == null ? void 0 : stdout.isTTY) && !env.CI && env.TERM !== 'dumb');\nconst replaceClose = (str, close, replace, index)=>{\n const start = str.substring(0, index) + replace;\n const end = str.substring(index + close.length);\n const nextIndex = end.indexOf(close);\n return ~nextIndex ? start + replaceClose(end, close, replace, nextIndex) : start + end;\n};\nconst formatter = (open, close, replace = open)=>{\n if (!enabled) return String;\n return (input)=>{\n const string = '' + input;\n const index = string.indexOf(close, open.length);\n return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close;\n };\n};\nconst reset = enabled ? (s)=>`\\x1b[0m${s}\\x1b[0m` : String;\nconst bold = formatter('\\x1b[1m', '\\x1b[22m', '\\x1b[22m\\x1b[1m');\nconst dim = formatter('\\x1b[2m', '\\x1b[22m', '\\x1b[22m\\x1b[2m');\nconst italic = formatter('\\x1b[3m', '\\x1b[23m');\nconst underline = formatter('\\x1b[4m', '\\x1b[24m');\nconst inverse = formatter('\\x1b[7m', '\\x1b[27m');\nconst hidden = formatter('\\x1b[8m', '\\x1b[28m');\nconst strikethrough = formatter('\\x1b[9m', '\\x1b[29m');\nconst black = formatter('\\x1b[30m', '\\x1b[39m');\nconst red = formatter('\\x1b[31m', '\\x1b[39m');\nconst green = formatter('\\x1b[32m', '\\x1b[39m');\nconst yellow = formatter('\\x1b[33m', '\\x1b[39m');\nconst blue = formatter('\\x1b[34m', '\\x1b[39m');\nconst magenta = formatter('\\x1b[35m', '\\x1b[39m');\nconst purple = formatter('\\x1b[38;2;173;127;168m', '\\x1b[39m');\nconst cyan = formatter('\\x1b[36m', '\\x1b[39m');\nconst white = formatter('\\x1b[37m', '\\x1b[39m');\nconst gray = formatter('\\x1b[90m', '\\x1b[39m');\nconst bgBlack = formatter('\\x1b[40m', '\\x1b[49m');\nconst bgRed = formatter('\\x1b[41m', '\\x1b[49m');\nconst bgGreen = formatter('\\x1b[42m', '\\x1b[49m');\nconst bgYellow = formatter('\\x1b[43m', '\\x1b[49m');\nconst bgBlue = formatter('\\x1b[44m', '\\x1b[49m');\nconst bgMagenta = formatter('\\x1b[45m', '\\x1b[49m');\nconst bgCyan = formatter('\\x1b[46m', '\\x1b[49m');\nconst bgWhite = formatter('\\x1b[47m', '\\x1b[49m');\n\n//# sourceMappingURL=picocolors.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9waWNvY29sb3JzLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0EyQkw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQSxRQUFRLGNBQWM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLEVBQUU7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsRUFBRSxJQUFJLElBQUk7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvbGliL3BpY29jb2xvcnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSVNDIExpY2Vuc2Vcbi8vIENvcHlyaWdodCAoYykgMjAyMSBBbGV4ZXkgUmFzcG9wb3YsIEtvc3RpYW50eW4gRGVueXNvdiwgQW50b24gVmVyaW5vdlxuLy8gUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XG4vLyBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlXG4vLyBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLlxuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVNcbi8vIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SXG4vLyBBTlkgU1BFQ0lBTCwgRElSRUNULCBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTXG4vLyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU5cbi8vIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GXG4vLyBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxuLy9cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGV4ZXlyYXNwb3Bvdi9waWNvY29sb3JzL2Jsb2IvYjYyNjE0ODdlN2I4MWFhYWIyNDQwZTM5N2EzNTY3MzJjYWQ5ZTM0Mi9waWNvY29sb3JzLmpzI0wxXG5cInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGJnQmxhY2s6IG51bGwsXG4gICAgYmdCbHVlOiBudWxsLFxuICAgIGJnQ3lhbjogbnVsbCxcbiAgICBiZ0dyZWVuOiBudWxsLFxuICAgIGJnTWFnZW50YTogbnVsbCxcbiAgICBiZ1JlZDogbnVsbCxcbiAgICBiZ1doaXRlOiBudWxsLFxuICAgIGJnWWVsbG93OiBudWxsLFxuICAgIGJsYWNrOiBudWxsLFxuICAgIGJsdWU6IG51bGwsXG4gICAgYm9sZDogbnVsbCxcbiAgICBjeWFuOiBudWxsLFxuICAgIGRpbTogbnVsbCxcbiAgICBncmF5OiBudWxsLFxuICAgIGdyZWVuOiBudWxsLFxuICAgIGhpZGRlbjogbnVsbCxcbiAgICBpbnZlcnNlOiBudWxsLFxuICAgIGl0YWxpYzogbnVsbCxcbiAgICBtYWdlbnRhOiBudWxsLFxuICAgIHB1cnBsZTogbnVsbCxcbiAgICByZWQ6IG51bGwsXG4gICAgcmVzZXQ6IG51bGwsXG4gICAgc3RyaWtldGhyb3VnaDogbnVsbCxcbiAgICB1bmRlcmxpbmU6IG51bGwsXG4gICAgd2hpdGU6IG51bGwsXG4gICAgeWVsbG93OiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIGJnQmxhY2s6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gYmdCbGFjaztcbiAgICB9LFxuICAgIGJnQmx1ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBiZ0JsdWU7XG4gICAgfSxcbiAgICBiZ0N5YW46IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gYmdDeWFuO1xuICAgIH0sXG4gICAgYmdHcmVlbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBiZ0dyZWVuO1xuICAgIH0sXG4gICAgYmdNYWdlbnRhOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGJnTWFnZW50YTtcbiAgICB9LFxuICAgIGJnUmVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGJnUmVkO1xuICAgIH0sXG4gICAgYmdXaGl0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBiZ1doaXRlO1xuICAgIH0sXG4gICAgYmdZZWxsb3c6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gYmdZZWxsb3c7XG4gICAgfSxcbiAgICBibGFjazogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBibGFjaztcbiAgICB9LFxuICAgIGJsdWU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gYmx1ZTtcbiAgICB9LFxuICAgIGJvbGQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gYm9sZDtcbiAgICB9LFxuICAgIGN5YW46IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3lhbjtcbiAgICB9LFxuICAgIGRpbTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBkaW07XG4gICAgfSxcbiAgICBncmF5OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdyYXk7XG4gICAgfSxcbiAgICBncmVlbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBncmVlbjtcbiAgICB9LFxuICAgIGhpZGRlbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBoaWRkZW47XG4gICAgfSxcbiAgICBpbnZlcnNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGludmVyc2U7XG4gICAgfSxcbiAgICBpdGFsaWM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaXRhbGljO1xuICAgIH0sXG4gICAgbWFnZW50YTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBtYWdlbnRhO1xuICAgIH0sXG4gICAgcHVycGxlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHB1cnBsZTtcbiAgICB9LFxuICAgIHJlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZWQ7XG4gICAgfSxcbiAgICByZXNldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZXNldDtcbiAgICB9LFxuICAgIHN0cmlrZXRocm91Z2g6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gc3RyaWtldGhyb3VnaDtcbiAgICB9LFxuICAgIHVuZGVybGluZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB1bmRlcmxpbmU7XG4gICAgfSxcbiAgICB3aGl0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB3aGl0ZTtcbiAgICB9LFxuICAgIHllbGxvdzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB5ZWxsb3c7XG4gICAgfVxufSk7XG52YXIgX2dsb2JhbFRoaXM7XG5jb25zdCB7IGVudiwgc3Rkb3V0IH0gPSAoKF9nbG9iYWxUaGlzID0gZ2xvYmFsVGhpcykgPT0gbnVsbCA/IHZvaWQgMCA6IF9nbG9iYWxUaGlzLnByb2Nlc3MpID8/IHt9O1xuY29uc3QgZW5hYmxlZCA9IGVudiAmJiAhZW52Lk5PX0NPTE9SICYmIChlbnYuRk9SQ0VfQ09MT1IgfHwgKHN0ZG91dCA9PSBudWxsID8gdm9pZCAwIDogc3Rkb3V0LmlzVFRZKSAmJiAhZW52LkNJICYmIGVudi5URVJNICE9PSAnZHVtYicpO1xuY29uc3QgcmVwbGFjZUNsb3NlID0gKHN0ciwgY2xvc2UsIHJlcGxhY2UsIGluZGV4KT0+e1xuICAgIGNvbnN0IHN0YXJ0ID0gc3RyLnN1YnN0cmluZygwLCBpbmRleCkgKyByZXBsYWNlO1xuICAgIGNvbnN0IGVuZCA9IHN0ci5zdWJzdHJpbmcoaW5kZXggKyBjbG9zZS5sZW5ndGgpO1xuICAgIGNvbnN0IG5leHRJbmRleCA9IGVuZC5pbmRleE9mKGNsb3NlKTtcbiAgICByZXR1cm4gfm5leHRJbmRleCA/IHN0YXJ0ICsgcmVwbGFjZUNsb3NlKGVuZCwgY2xvc2UsIHJlcGxhY2UsIG5leHRJbmRleCkgOiBzdGFydCArIGVuZDtcbn07XG5jb25zdCBmb3JtYXR0ZXIgPSAob3BlbiwgY2xvc2UsIHJlcGxhY2UgPSBvcGVuKT0+e1xuICAgIGlmICghZW5hYmxlZCkgcmV0dXJuIFN0cmluZztcbiAgICByZXR1cm4gKGlucHV0KT0+e1xuICAgICAgICBjb25zdCBzdHJpbmcgPSAnJyArIGlucHV0O1xuICAgICAgICBjb25zdCBpbmRleCA9IHN0cmluZy5pbmRleE9mKGNsb3NlLCBvcGVuLmxlbmd0aCk7XG4gICAgICAgIHJldHVybiB+aW5kZXggPyBvcGVuICsgcmVwbGFjZUNsb3NlKHN0cmluZywgY2xvc2UsIHJlcGxhY2UsIGluZGV4KSArIGNsb3NlIDogb3BlbiArIHN0cmluZyArIGNsb3NlO1xuICAgIH07XG59O1xuY29uc3QgcmVzZXQgPSBlbmFibGVkID8gKHMpPT5gXFx4MWJbMG0ke3N9XFx4MWJbMG1gIDogU3RyaW5nO1xuY29uc3QgYm9sZCA9IGZvcm1hdHRlcignXFx4MWJbMW0nLCAnXFx4MWJbMjJtJywgJ1xceDFiWzIybVxceDFiWzFtJyk7XG5jb25zdCBkaW0gPSBmb3JtYXR0ZXIoJ1xceDFiWzJtJywgJ1xceDFiWzIybScsICdcXHgxYlsyMm1cXHgxYlsybScpO1xuY29uc3QgaXRhbGljID0gZm9ybWF0dGVyKCdcXHgxYlszbScsICdcXHgxYlsyM20nKTtcbmNvbnN0IHVuZGVybGluZSA9IGZvcm1hdHRlcignXFx4MWJbNG0nLCAnXFx4MWJbMjRtJyk7XG5jb25zdCBpbnZlcnNlID0gZm9ybWF0dGVyKCdcXHgxYls3bScsICdcXHgxYlsyN20nKTtcbmNvbnN0IGhpZGRlbiA9IGZvcm1hdHRlcignXFx4MWJbOG0nLCAnXFx4MWJbMjhtJyk7XG5jb25zdCBzdHJpa2V0aHJvdWdoID0gZm9ybWF0dGVyKCdcXHgxYls5bScsICdcXHgxYlsyOW0nKTtcbmNvbnN0IGJsYWNrID0gZm9ybWF0dGVyKCdcXHgxYlszMG0nLCAnXFx4MWJbMzltJyk7XG5jb25zdCByZWQgPSBmb3JtYXR0ZXIoJ1xceDFiWzMxbScsICdcXHgxYlszOW0nKTtcbmNvbnN0IGdyZWVuID0gZm9ybWF0dGVyKCdcXHgxYlszMm0nLCAnXFx4MWJbMzltJyk7XG5jb25zdCB5ZWxsb3cgPSBmb3JtYXR0ZXIoJ1xceDFiWzMzbScsICdcXHgxYlszOW0nKTtcbmNvbnN0IGJsdWUgPSBmb3JtYXR0ZXIoJ1xceDFiWzM0bScsICdcXHgxYlszOW0nKTtcbmNvbnN0IG1hZ2VudGEgPSBmb3JtYXR0ZXIoJ1xceDFiWzM1bScsICdcXHgxYlszOW0nKTtcbmNvbnN0IHB1cnBsZSA9IGZvcm1hdHRlcignXFx4MWJbMzg7MjsxNzM7MTI3OzE2OG0nLCAnXFx4MWJbMzltJyk7XG5jb25zdCBjeWFuID0gZm9ybWF0dGVyKCdcXHgxYlszNm0nLCAnXFx4MWJbMzltJyk7XG5jb25zdCB3aGl0ZSA9IGZvcm1hdHRlcignXFx4MWJbMzdtJywgJ1xceDFiWzM5bScpO1xuY29uc3QgZ3JheSA9IGZvcm1hdHRlcignXFx4MWJbOTBtJywgJ1xceDFiWzM5bScpO1xuY29uc3QgYmdCbGFjayA9IGZvcm1hdHRlcignXFx4MWJbNDBtJywgJ1xceDFiWzQ5bScpO1xuY29uc3QgYmdSZWQgPSBmb3JtYXR0ZXIoJ1xceDFiWzQxbScsICdcXHgxYls0OW0nKTtcbmNvbnN0IGJnR3JlZW4gPSBmb3JtYXR0ZXIoJ1xceDFiWzQybScsICdcXHgxYls0OW0nKTtcbmNvbnN0IGJnWWVsbG93ID0gZm9ybWF0dGVyKCdcXHgxYls0M20nLCAnXFx4MWJbNDltJyk7XG5jb25zdCBiZ0JsdWUgPSBmb3JtYXR0ZXIoJ1xceDFiWzQ0bScsICdcXHgxYls0OW0nKTtcbmNvbnN0IGJnTWFnZW50YSA9IGZvcm1hdHRlcignXFx4MWJbNDVtJywgJ1xceDFiWzQ5bScpO1xuY29uc3QgYmdDeWFuID0gZm9ybWF0dGVyKCdcXHgxYls0Nm0nLCAnXFx4MWJbNDltJyk7XG5jb25zdCBiZ1doaXRlID0gZm9ybWF0dGVyKCdcXHgxYls0N20nLCAnXFx4MWJbNDltJyk7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBpY29jb2xvcnMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/picocolors.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/lib/scheduler.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/scheduler.js ***!
|
||
\*************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n atLeastOneTask: function() {\n return atLeastOneTask;\n },\n scheduleImmediate: function() {\n return scheduleImmediate;\n },\n scheduleOnNextTick: function() {\n return scheduleOnNextTick;\n },\n waitAtLeastOneReactRenderTask: function() {\n return waitAtLeastOneReactRenderTask;\n }\n});\nconst scheduleOnNextTick = (cb)=>{\n // We use Promise.resolve().then() here so that the operation is scheduled at\n // the end of the promise job queue, we then add it to the next process tick\n // to ensure it's evaluated afterwards.\n //\n // This was inspired by the implementation of the DataLoader interface: https://github.com/graphql/dataloader/blob/d336bd15282664e0be4b4a657cb796f09bafbc6b/src/index.js#L213-L255\n //\n Promise.resolve().then(()=>{\n if (false) {} else {\n process.nextTick(cb);\n }\n });\n};\nconst scheduleImmediate = (cb)=>{\n if (false) {} else {\n setImmediate(cb);\n }\n};\nfunction atLeastOneTask() {\n return new Promise((resolve)=>scheduleImmediate(resolve));\n}\nfunction waitAtLeastOneReactRenderTask() {\n if (false) {} else {\n return new Promise((r)=>setImmediate(r));\n }\n}\n\n//# sourceMappingURL=scheduler.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9zY2hlZHVsZXIuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBS0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLEtBQW1DLEVBQUUsRUFFeEMsQ0FBQztBQUNWO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLFFBQVEsS0FBbUMsRUFBRSxFQUV4QyxDQUFDO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLEtBQW1DLEVBQUUsRUFFeEMsQ0FBQztBQUNOO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvbGliL3NjaGVkdWxlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGF0TGVhc3RPbmVUYXNrOiBudWxsLFxuICAgIHNjaGVkdWxlSW1tZWRpYXRlOiBudWxsLFxuICAgIHNjaGVkdWxlT25OZXh0VGljazogbnVsbCxcbiAgICB3YWl0QXRMZWFzdE9uZVJlYWN0UmVuZGVyVGFzazogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBhdExlYXN0T25lVGFzazogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBhdExlYXN0T25lVGFzaztcbiAgICB9LFxuICAgIHNjaGVkdWxlSW1tZWRpYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVkdWxlSW1tZWRpYXRlO1xuICAgIH0sXG4gICAgc2NoZWR1bGVPbk5leHRUaWNrOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVkdWxlT25OZXh0VGljaztcbiAgICB9LFxuICAgIHdhaXRBdExlYXN0T25lUmVhY3RSZW5kZXJUYXNrOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHdhaXRBdExlYXN0T25lUmVhY3RSZW5kZXJUYXNrO1xuICAgIH1cbn0pO1xuY29uc3Qgc2NoZWR1bGVPbk5leHRUaWNrID0gKGNiKT0+e1xuICAgIC8vIFdlIHVzZSBQcm9taXNlLnJlc29sdmUoKS50aGVuKCkgaGVyZSBzbyB0aGF0IHRoZSBvcGVyYXRpb24gaXMgc2NoZWR1bGVkIGF0XG4gICAgLy8gdGhlIGVuZCBvZiB0aGUgcHJvbWlzZSBqb2IgcXVldWUsIHdlIHRoZW4gYWRkIGl0IHRvIHRoZSBuZXh0IHByb2Nlc3MgdGlja1xuICAgIC8vIHRvIGVuc3VyZSBpdCdzIGV2YWx1YXRlZCBhZnRlcndhcmRzLlxuICAgIC8vXG4gICAgLy8gVGhpcyB3YXMgaW5zcGlyZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBEYXRhTG9hZGVyIGludGVyZmFjZTogaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZGF0YWxvYWRlci9ibG9iL2QzMzZiZDE1MjgyNjY0ZTBiZTRiNGE2NTdjYjc5NmYwOWJhZmJjNmIvc3JjL2luZGV4LmpzI0wyMTMtTDI1NVxuICAgIC8vXG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTkVYVF9SVU5USU1FID09PSAnZWRnZScpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoY2IsIDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhjYik7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5jb25zdCBzY2hlZHVsZUltbWVkaWF0ZSA9IChjYik9PntcbiAgICBpZiAocHJvY2Vzcy5lbnYuTkVYVF9SVU5USU1FID09PSAnZWRnZScpIHtcbiAgICAgICAgc2V0VGltZW91dChjYiwgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc2V0SW1tZWRpYXRlKGNiKTtcbiAgICB9XG59O1xuZnVuY3Rpb24gYXRMZWFzdE9uZVRhc2soKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKT0+c2NoZWR1bGVJbW1lZGlhdGUocmVzb2x2ZSkpO1xufVxuZnVuY3Rpb24gd2FpdEF0TGVhc3RPbmVSZWFjdFJlbmRlclRhc2soKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSA9PT0gJ2VkZ2UnKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocik9PnNldFRpbWVvdXQociwgMCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocik9PnNldEltbWVkaWF0ZShyKSk7XG4gICAgfVxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1zY2hlZHVsZXIuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/scheduler.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/lib/url.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/next/dist/lib/url.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n isFullStringUrl: function() {\n return isFullStringUrl;\n },\n parseReqUrl: function() {\n return parseReqUrl;\n },\n parseUrl: function() {\n return parseUrl;\n },\n stripNextRscUnionQuery: function() {\n return stripNextRscUnionQuery;\n }\n});\nconst _approuterheaders = __webpack_require__(/*! ../client/components/app-router-headers */ \"(rsc)/./node_modules/next/dist/client/components/app-router-headers.js\");\nconst DUMMY_ORIGIN = 'http://n';\nfunction isFullStringUrl(url) {\n return /https?:\\/\\//.test(url);\n}\nfunction parseUrl(url) {\n let parsed = undefined;\n try {\n parsed = new URL(url, DUMMY_ORIGIN);\n } catch {}\n return parsed;\n}\nfunction parseReqUrl(url) {\n const parsedUrl = parseUrl(url);\n if (!parsedUrl) {\n return;\n }\n const query = {};\n for (const key of parsedUrl.searchParams.keys()){\n const values = parsedUrl.searchParams.getAll(key);\n query[key] = values.length > 1 ? values : values[0];\n }\n const legacyUrl = {\n query,\n hash: parsedUrl.hash,\n search: parsedUrl.search,\n path: parsedUrl.pathname,\n pathname: parsedUrl.pathname,\n href: `${parsedUrl.pathname}${parsedUrl.search}${parsedUrl.hash}`,\n host: '',\n hostname: '',\n auth: '',\n protocol: '',\n slashes: null,\n port: ''\n };\n return legacyUrl;\n}\nfunction stripNextRscUnionQuery(relativeUrl) {\n const urlInstance = new URL(relativeUrl, DUMMY_ORIGIN);\n urlInstance.searchParams.delete(_approuterheaders.NEXT_RSC_UNION_QUERY);\n return urlInstance.pathname + urlInstance.search;\n}\n\n//# sourceMappingURL=url.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi91cmwuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBS0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELDBCQUEwQixtQkFBTyxDQUFDLHVIQUF5QztBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxlQUFlO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi91cmwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBpc0Z1bGxTdHJpbmdVcmw6IG51bGwsXG4gICAgcGFyc2VSZXFVcmw6IG51bGwsXG4gICAgcGFyc2VVcmw6IG51bGwsXG4gICAgc3RyaXBOZXh0UnNjVW5pb25RdWVyeTogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBpc0Z1bGxTdHJpbmdVcmw6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaXNGdWxsU3RyaW5nVXJsO1xuICAgIH0sXG4gICAgcGFyc2VSZXFVcmw6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcGFyc2VSZXFVcmw7XG4gICAgfSxcbiAgICBwYXJzZVVybDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBwYXJzZVVybDtcbiAgICB9LFxuICAgIHN0cmlwTmV4dFJzY1VuaW9uUXVlcnk6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gc3RyaXBOZXh0UnNjVW5pb25RdWVyeTtcbiAgICB9XG59KTtcbmNvbnN0IF9hcHByb3V0ZXJoZWFkZXJzID0gcmVxdWlyZShcIi4uL2NsaWVudC9jb21wb25lbnRzL2FwcC1yb3V0ZXItaGVhZGVyc1wiKTtcbmNvbnN0IERVTU1ZX09SSUdJTiA9ICdodHRwOi8vbic7XG5mdW5jdGlvbiBpc0Z1bGxTdHJpbmdVcmwodXJsKSB7XG4gICAgcmV0dXJuIC9odHRwcz86XFwvXFwvLy50ZXN0KHVybCk7XG59XG5mdW5jdGlvbiBwYXJzZVVybCh1cmwpIHtcbiAgICBsZXQgcGFyc2VkID0gdW5kZWZpbmVkO1xuICAgIHRyeSB7XG4gICAgICAgIHBhcnNlZCA9IG5ldyBVUkwodXJsLCBEVU1NWV9PUklHSU4pO1xuICAgIH0gY2F0Y2ggIHt9XG4gICAgcmV0dXJuIHBhcnNlZDtcbn1cbmZ1bmN0aW9uIHBhcnNlUmVxVXJsKHVybCkge1xuICAgIGNvbnN0IHBhcnNlZFVybCA9IHBhcnNlVXJsKHVybCk7XG4gICAgaWYgKCFwYXJzZWRVcmwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBxdWVyeSA9IHt9O1xuICAgIGZvciAoY29uc3Qga2V5IG9mIHBhcnNlZFVybC5zZWFyY2hQYXJhbXMua2V5cygpKXtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gcGFyc2VkVXJsLnNlYXJjaFBhcmFtcy5nZXRBbGwoa2V5KTtcbiAgICAgICAgcXVlcnlba2V5XSA9IHZhbHVlcy5sZW5ndGggPiAxID8gdmFsdWVzIDogdmFsdWVzWzBdO1xuICAgIH1cbiAgICBjb25zdCBsZWdhY3lVcmwgPSB7XG4gICAgICAgIHF1ZXJ5LFxuICAgICAgICBoYXNoOiBwYXJzZWRVcmwuaGFzaCxcbiAgICAgICAgc2VhcmNoOiBwYXJzZWRVcmwuc2VhcmNoLFxuICAgICAgICBwYXRoOiBwYXJzZWRVcmwucGF0aG5hbWUsXG4gICAgICAgIHBhdGhuYW1lOiBwYXJzZWRVcmwucGF0aG5hbWUsXG4gICAgICAgIGhyZWY6IGAke3BhcnNlZFVybC5wYXRobmFtZX0ke3BhcnNlZFVybC5zZWFyY2h9JHtwYXJzZWRVcmwuaGFzaH1gLFxuICAgICAgICBob3N0OiAnJyxcbiAgICAgICAgaG9zdG5hbWU6ICcnLFxuICAgICAgICBhdXRoOiAnJyxcbiAgICAgICAgcHJvdG9jb2w6ICcnLFxuICAgICAgICBzbGFzaGVzOiBudWxsLFxuICAgICAgICBwb3J0OiAnJ1xuICAgIH07XG4gICAgcmV0dXJuIGxlZ2FjeVVybDtcbn1cbmZ1bmN0aW9uIHN0cmlwTmV4dFJzY1VuaW9uUXVlcnkocmVsYXRpdmVVcmwpIHtcbiAgICBjb25zdCB1cmxJbnN0YW5jZSA9IG5ldyBVUkwocmVsYXRpdmVVcmwsIERVTU1ZX09SSUdJTik7XG4gICAgdXJsSW5zdGFuY2Uuc2VhcmNoUGFyYW1zLmRlbGV0ZShfYXBwcm91dGVyaGVhZGVycy5ORVhUX1JTQ19VTklPTl9RVUVSWSk7XG4gICAgcmV0dXJuIHVybEluc3RhbmNlLnBhdGhuYW1lICsgdXJsSW5zdGFuY2Uuc2VhcmNoO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD11cmwuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/url.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":
|
||
/*!*************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js ***!
|
||
\*************************************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
eval("// This file is generated by the Webpack next-flight-loader.\nconst { createProxy } = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ \"(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js\")\n\nmodule.exports = createProxy(\"/Users/pouyanmb/Desktop/git-projects/digikala-tailwind/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9zZWdtZW50LWV4cGxvcmVyLW5vZGUuanMiLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VzIjpbIl9OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9zZWdtZW50LWV4cGxvcmVyLW5vZGUuanMvX19uZXh0anMtaW50ZXJuYWwtcHJveHkuY2pzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgdGhlIFdlYnBhY2sgbmV4dC1mbGlnaHQtbG9hZGVyLlxuY29uc3QgeyBjcmVhdGVQcm94eSB9ID0gcmVxdWlyZShcIm5leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvbmV4dC1mbGlnaHQtbG9hZGVyL21vZHVsZS1wcm94eVwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVByb3h5KFwiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvbmV4dC1kZXZ0b29scy91c2Vyc3BhY2UvYXBwL3NlZ21lbnQtZXhwbG9yZXItbm9kZS5qc1wiKVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/api-utils/get-cookie-parser.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/api-utils/get-cookie-parser.js ***!
|
||
\**********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getCookieParser\", ({\n enumerable: true,\n get: function() {\n return getCookieParser;\n }\n}));\nfunction getCookieParser(headers) {\n return function parseCookie() {\n const { cookie } = headers;\n if (!cookie) {\n return {};\n }\n const { parse: parseCookieFn } = __webpack_require__(/*! next/dist/compiled/cookie */ \"(rsc)/./node_modules/next/dist/compiled/cookie/index.js\");\n return parseCookieFn(Array.isArray(cookie) ? cookie.join('; ') : cookie);\n };\n}\n\n//# sourceMappingURL=get-cookie-parser.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcGktdXRpbHMvZ2V0LWNvb2tpZS1wYXJzZXIuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixtREFBa0Q7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRjtBQUNBO0FBQ0EsZ0JBQWdCLFNBQVM7QUFDekI7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHVCQUF1QixFQUFFLG1CQUFPLENBQUMsMEZBQTJCO0FBQzVFLG9FQUFvRTtBQUNwRTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvYXBpLXV0aWxzL2dldC1jb29raWUtcGFyc2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZ2V0Q29va2llUGFyc2VyXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRDb29raWVQYXJzZXI7XG4gICAgfVxufSk7XG5mdW5jdGlvbiBnZXRDb29raWVQYXJzZXIoaGVhZGVycykge1xuICAgIHJldHVybiBmdW5jdGlvbiBwYXJzZUNvb2tpZSgpIHtcbiAgICAgICAgY29uc3QgeyBjb29raWUgfSA9IGhlYWRlcnM7XG4gICAgICAgIGlmICghY29va2llKSB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBwYXJzZTogcGFyc2VDb29raWVGbiB9ID0gcmVxdWlyZSgnbmV4dC9kaXN0L2NvbXBpbGVkL2Nvb2tpZScpO1xuICAgICAgICByZXR1cm4gcGFyc2VDb29raWVGbihBcnJheS5pc0FycmF5KGNvb2tpZSkgPyBjb29raWUuam9pbignOyAnKSA6IGNvb2tpZSk7XG4gICAgfTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0LWNvb2tpZS1wYXJzZXIuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/api-utils/get-cookie-parser.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/api-utils/index.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/next/dist/server/api-utils/index.js ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n ApiError: function() {\n return ApiError;\n },\n COOKIE_NAME_PRERENDER_BYPASS: function() {\n return COOKIE_NAME_PRERENDER_BYPASS;\n },\n COOKIE_NAME_PRERENDER_DATA: function() {\n return COOKIE_NAME_PRERENDER_DATA;\n },\n RESPONSE_LIMIT_DEFAULT: function() {\n return RESPONSE_LIMIT_DEFAULT;\n },\n SYMBOL_CLEARED_COOKIES: function() {\n return SYMBOL_CLEARED_COOKIES;\n },\n SYMBOL_PREVIEW_DATA: function() {\n return SYMBOL_PREVIEW_DATA;\n },\n checkIsOnDemandRevalidate: function() {\n return checkIsOnDemandRevalidate;\n },\n clearPreviewData: function() {\n return clearPreviewData;\n },\n redirect: function() {\n return redirect;\n },\n sendError: function() {\n return sendError;\n },\n sendStatusCode: function() {\n return sendStatusCode;\n },\n setLazyProp: function() {\n return setLazyProp;\n },\n wrapApiHandler: function() {\n return wrapApiHandler;\n }\n});\nconst _headers = __webpack_require__(/*! ../web/spec-extension/adapters/headers */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/headers.js\");\nconst _constants = __webpack_require__(/*! ../../lib/constants */ \"(rsc)/./node_modules/next/dist/lib/constants.js\");\nconst _tracer = __webpack_require__(/*! ../lib/trace/tracer */ \"(rsc)/./node_modules/next/dist/server/lib/trace/tracer.js\");\nconst _constants1 = __webpack_require__(/*! ../lib/trace/constants */ \"(rsc)/./node_modules/next/dist/server/lib/trace/constants.js\");\nfunction wrapApiHandler(page, handler) {\n return (...args)=>{\n (0, _tracer.getTracer)().setRootSpanAttribute('next.route', page);\n // Call API route method\n return (0, _tracer.getTracer)().trace(_constants1.NodeSpan.runHandler, {\n spanName: `executing api route (pages) ${page}`\n }, ()=>handler(...args));\n };\n}\nfunction sendStatusCode(res, statusCode) {\n res.statusCode = statusCode;\n return res;\n}\nfunction redirect(res, statusOrUrl, url) {\n if (typeof statusOrUrl === 'string') {\n url = statusOrUrl;\n statusOrUrl = 307;\n }\n if (typeof statusOrUrl !== 'number' || typeof url !== 'string') {\n throw Object.defineProperty(new Error(`Invalid redirect arguments. Please use a single argument URL, e.g. res.redirect('/destination') or use a status code and URL, e.g. res.redirect(307, '/destination').`), \"__NEXT_ERROR_CODE\", {\n value: \"E389\",\n enumerable: false,\n configurable: true\n });\n }\n res.writeHead(statusOrUrl, {\n Location: url\n });\n res.write(url);\n res.end();\n return res;\n}\nfunction checkIsOnDemandRevalidate(req, previewProps) {\n const headers = _headers.HeadersAdapter.from(req.headers);\n const previewModeId = headers.get(_constants.PRERENDER_REVALIDATE_HEADER);\n const isOnDemandRevalidate = previewModeId === previewProps.previewModeId;\n const revalidateOnlyGenerated = headers.has(_constants.PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER);\n return {\n isOnDemandRevalidate,\n revalidateOnlyGenerated\n };\n}\nconst COOKIE_NAME_PRERENDER_BYPASS = `__prerender_bypass`;\nconst COOKIE_NAME_PRERENDER_DATA = `__next_preview_data`;\nconst RESPONSE_LIMIT_DEFAULT = 4 * 1024 * 1024;\nconst SYMBOL_PREVIEW_DATA = Symbol(COOKIE_NAME_PRERENDER_DATA);\nconst SYMBOL_CLEARED_COOKIES = Symbol(COOKIE_NAME_PRERENDER_BYPASS);\nfunction clearPreviewData(res, options = {}) {\n if (SYMBOL_CLEARED_COOKIES in res) {\n return res;\n }\n const { serialize } = __webpack_require__(/*! next/dist/compiled/cookie */ \"(rsc)/./node_modules/next/dist/compiled/cookie/index.js\");\n const previous = res.getHeader('Set-Cookie');\n res.setHeader(`Set-Cookie`, [\n ...typeof previous === 'string' ? [\n previous\n ] : Array.isArray(previous) ? previous : [],\n serialize(COOKIE_NAME_PRERENDER_BYPASS, '', {\n // To delete a cookie, set `expires` to a date in the past:\n // https://tools.ietf.org/html/rfc6265#section-4.1.1\n // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted.\n expires: new Date(0),\n httpOnly: true,\n sameSite: false ? 0 : 'lax',\n secure: \"development\" !== 'development',\n path: '/',\n ...options.path !== undefined ? {\n path: options.path\n } : undefined\n }),\n serialize(COOKIE_NAME_PRERENDER_DATA, '', {\n // To delete a cookie, set `expires` to a date in the past:\n // https://tools.ietf.org/html/rfc6265#section-4.1.1\n // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted.\n expires: new Date(0),\n httpOnly: true,\n sameSite: false ? 0 : 'lax',\n secure: \"development\" !== 'development',\n path: '/',\n ...options.path !== undefined ? {\n path: options.path\n } : undefined\n })\n ]);\n Object.defineProperty(res, SYMBOL_CLEARED_COOKIES, {\n value: true,\n enumerable: false\n });\n return res;\n}\nclass ApiError extends Error {\n constructor(statusCode, message){\n super(message);\n this.statusCode = statusCode;\n }\n}\nfunction sendError(res, statusCode, message) {\n res.statusCode = statusCode;\n res.statusMessage = message;\n res.end(message);\n}\nfunction setLazyProp({ req }, prop, getter) {\n const opts = {\n configurable: true,\n enumerable: true\n };\n const optsReset = {\n ...opts,\n writable: true\n };\n Object.defineProperty(req, prop, {\n ...opts,\n get: ()=>{\n const value = getter();\n // we set the property on the object to avoid recalculating it\n Object.defineProperty(req, prop, {\n ...optsReset,\n value\n });\n return value;\n },\n set: (value)=>{\n Object.defineProperty(req, prop, {\n ...optsReset,\n value\n });\n }\n });\n}\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcGktdXRpbHMvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBY0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELGlCQUFpQixtQkFBTyxDQUFDLDRIQUF3QztBQUNqRSxtQkFBbUIsbUJBQU8sQ0FBQyw0RUFBcUI7QUFDaEQsZ0JBQWdCLG1CQUFPLENBQUMsc0ZBQXFCO0FBQzdDLG9CQUFvQixtQkFBTyxDQUFDLDRGQUF3QjtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFELEtBQUs7QUFDMUQsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQSxZQUFZLFlBQVksRUFBRSxtQkFBTyxDQUFDLDBGQUEyQjtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLE1BQXNDLEdBQUcsQ0FBTTtBQUNyRSxvQkFBb0IsYUFBb0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsTUFBc0MsR0FBRyxDQUFNO0FBQ3JFLG9CQUFvQixhQUFvQjtBQUN4QztBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2QsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLEtBQUs7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxLQUFLO0FBQ0w7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcGktdXRpbHMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBBcGlFcnJvcjogbnVsbCxcbiAgICBDT09LSUVfTkFNRV9QUkVSRU5ERVJfQllQQVNTOiBudWxsLFxuICAgIENPT0tJRV9OQU1FX1BSRVJFTkRFUl9EQVRBOiBudWxsLFxuICAgIFJFU1BPTlNFX0xJTUlUX0RFRkFVTFQ6IG51bGwsXG4gICAgU1lNQk9MX0NMRUFSRURfQ09PS0lFUzogbnVsbCxcbiAgICBTWU1CT0xfUFJFVklFV19EQVRBOiBudWxsLFxuICAgIGNoZWNrSXNPbkRlbWFuZFJldmFsaWRhdGU6IG51bGwsXG4gICAgY2xlYXJQcmV2aWV3RGF0YTogbnVsbCxcbiAgICByZWRpcmVjdDogbnVsbCxcbiAgICBzZW5kRXJyb3I6IG51bGwsXG4gICAgc2VuZFN0YXR1c0NvZGU6IG51bGwsXG4gICAgc2V0TGF6eVByb3A6IG51bGwsXG4gICAgd3JhcEFwaUhhbmRsZXI6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgQXBpRXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gQXBpRXJyb3I7XG4gICAgfSxcbiAgICBDT09LSUVfTkFNRV9QUkVSRU5ERVJfQllQQVNTOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIENPT0tJRV9OQU1FX1BSRVJFTkRFUl9CWVBBU1M7XG4gICAgfSxcbiAgICBDT09LSUVfTkFNRV9QUkVSRU5ERVJfREFUQTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBDT09LSUVfTkFNRV9QUkVSRU5ERVJfREFUQTtcbiAgICB9LFxuICAgIFJFU1BPTlNFX0xJTUlUX0RFRkFVTFQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUkVTUE9OU0VfTElNSVRfREVGQVVMVDtcbiAgICB9LFxuICAgIFNZTUJPTF9DTEVBUkVEX0NPT0tJRVM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gU1lNQk9MX0NMRUFSRURfQ09PS0lFUztcbiAgICB9LFxuICAgIFNZTUJPTF9QUkVWSUVXX0RBVEE6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gU1lNQk9MX1BSRVZJRVdfREFUQTtcbiAgICB9LFxuICAgIGNoZWNrSXNPbkRlbWFuZFJldmFsaWRhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY2hlY2tJc09uRGVtYW5kUmV2YWxpZGF0ZTtcbiAgICB9LFxuICAgIGNsZWFyUHJldmlld0RhdGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY2xlYXJQcmV2aWV3RGF0YTtcbiAgICB9LFxuICAgIHJlZGlyZWN0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHJlZGlyZWN0O1xuICAgIH0sXG4gICAgc2VuZEVycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHNlbmRFcnJvcjtcbiAgICB9LFxuICAgIHNlbmRTdGF0dXNDb2RlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHNlbmRTdGF0dXNDb2RlO1xuICAgIH0sXG4gICAgc2V0TGF6eVByb3A6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gc2V0TGF6eVByb3A7XG4gICAgfSxcbiAgICB3cmFwQXBpSGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB3cmFwQXBpSGFuZGxlcjtcbiAgICB9XG59KTtcbmNvbnN0IF9oZWFkZXJzID0gcmVxdWlyZShcIi4uL3dlYi9zcGVjLWV4dGVuc2lvbi9hZGFwdGVycy9oZWFkZXJzXCIpO1xuY29uc3QgX2NvbnN0YW50cyA9IHJlcXVpcmUoXCIuLi8uLi9saWIvY29uc3RhbnRzXCIpO1xuY29uc3QgX3RyYWNlciA9IHJlcXVpcmUoXCIuLi9saWIvdHJhY2UvdHJhY2VyXCIpO1xuY29uc3QgX2NvbnN0YW50czEgPSByZXF1aXJlKFwiLi4vbGliL3RyYWNlL2NvbnN0YW50c1wiKTtcbmZ1bmN0aW9uIHdyYXBBcGlIYW5kbGVyKHBhZ2UsIGhhbmRsZXIpIHtcbiAgICByZXR1cm4gKC4uLmFyZ3MpPT57XG4gICAgICAgICgwLCBfdHJhY2VyLmdldFRyYWNlcikoKS5zZXRSb290U3BhbkF0dHJpYnV0ZSgnbmV4dC5yb3V0ZScsIHBhZ2UpO1xuICAgICAgICAvLyBDYWxsIEFQSSByb3V0ZSBtZXRob2RcbiAgICAgICAgcmV0dXJuICgwLCBfdHJhY2VyLmdldFRyYWNlcikoKS50cmFjZShfY29uc3RhbnRzMS5Ob2RlU3Bhbi5ydW5IYW5kbGVyLCB7XG4gICAgICAgICAgICBzcGFuTmFtZTogYGV4ZWN1dGluZyBhcGkgcm91dGUgKHBhZ2VzKSAke3BhZ2V9YFxuICAgICAgICB9LCAoKT0+aGFuZGxlciguLi5hcmdzKSk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIHNlbmRTdGF0dXNDb2RlKHJlcywgc3RhdHVzQ29kZSkge1xuICAgIHJlcy5zdGF0dXNDb2RlID0gc3RhdHVzQ29kZTtcbiAgICByZXR1cm4gcmVzO1xufVxuZnVuY3Rpb24gcmVkaXJlY3QocmVzLCBzdGF0dXNPclVybCwgdXJsKSB7XG4gICAgaWYgKHR5cGVvZiBzdGF0dXNPclVybCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdXJsID0gc3RhdHVzT3JVcmw7XG4gICAgICAgIHN0YXR1c09yVXJsID0gMzA3O1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHN0YXR1c09yVXJsICE9PSAnbnVtYmVyJyB8fCB0eXBlb2YgdXJsICE9PSAnc3RyaW5nJykge1xuICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKGBJbnZhbGlkIHJlZGlyZWN0IGFyZ3VtZW50cy4gUGxlYXNlIHVzZSBhIHNpbmdsZSBhcmd1bWVudCBVUkwsIGUuZy4gcmVzLnJlZGlyZWN0KCcvZGVzdGluYXRpb24nKSBvciB1c2UgYSBzdGF0dXMgY29kZSBhbmQgVVJMLCBlLmcuIHJlcy5yZWRpcmVjdCgzMDcsICcvZGVzdGluYXRpb24nKS5gKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICB2YWx1ZTogXCJFMzg5XCIsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVzLndyaXRlSGVhZChzdGF0dXNPclVybCwge1xuICAgICAgICBMb2NhdGlvbjogdXJsXG4gICAgfSk7XG4gICAgcmVzLndyaXRlKHVybCk7XG4gICAgcmVzLmVuZCgpO1xuICAgIHJldHVybiByZXM7XG59XG5mdW5jdGlvbiBjaGVja0lzT25EZW1hbmRSZXZhbGlkYXRlKHJlcSwgcHJldmlld1Byb3BzKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IF9oZWFkZXJzLkhlYWRlcnNBZGFwdGVyLmZyb20ocmVxLmhlYWRlcnMpO1xuICAgIGNvbnN0IHByZXZpZXdNb2RlSWQgPSBoZWFkZXJzLmdldChfY29uc3RhbnRzLlBSRVJFTkRFUl9SRVZBTElEQVRFX0hFQURFUik7XG4gICAgY29uc3QgaXNPbkRlbWFuZFJldmFsaWRhdGUgPSBwcmV2aWV3TW9kZUlkID09PSBwcmV2aWV3UHJvcHMucHJldmlld01vZGVJZDtcbiAgICBjb25zdCByZXZhbGlkYXRlT25seUdlbmVyYXRlZCA9IGhlYWRlcnMuaGFzKF9jb25zdGFudHMuUFJFUkVOREVSX1JFVkFMSURBVEVfT05MWV9HRU5FUkFURURfSEVBREVSKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBpc09uRGVtYW5kUmV2YWxpZGF0ZSxcbiAgICAgICAgcmV2YWxpZGF0ZU9ubHlHZW5lcmF0ZWRcbiAgICB9O1xufVxuY29uc3QgQ09PS0lFX05BTUVfUFJFUkVOREVSX0JZUEFTUyA9IGBfX3ByZXJlbmRlcl9ieXBhc3NgO1xuY29uc3QgQ09PS0lFX05BTUVfUFJFUkVOREVSX0RBVEEgPSBgX19uZXh0X3ByZXZpZXdfZGF0YWA7XG5jb25zdCBSRVNQT05TRV9MSU1JVF9ERUZBVUxUID0gNCAqIDEwMjQgKiAxMDI0O1xuY29uc3QgU1lNQk9MX1BSRVZJRVdfREFUQSA9IFN5bWJvbChDT09LSUVfTkFNRV9QUkVSRU5ERVJfREFUQSk7XG5jb25zdCBTWU1CT0xfQ0xFQVJFRF9DT09LSUVTID0gU3ltYm9sKENPT0tJRV9OQU1FX1BSRVJFTkRFUl9CWVBBU1MpO1xuZnVuY3Rpb24gY2xlYXJQcmV2aWV3RGF0YShyZXMsIG9wdGlvbnMgPSB7fSkge1xuICAgIGlmIChTWU1CT0xfQ0xFQVJFRF9DT09LSUVTIGluIHJlcykge1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICBjb25zdCB7IHNlcmlhbGl6ZSB9ID0gcmVxdWlyZSgnbmV4dC9kaXN0L2NvbXBpbGVkL2Nvb2tpZScpO1xuICAgIGNvbnN0IHByZXZpb3VzID0gcmVzLmdldEhlYWRlcignU2V0LUNvb2tpZScpO1xuICAgIHJlcy5zZXRIZWFkZXIoYFNldC1Db29raWVgLCBbXG4gICAgICAgIC4uLnR5cGVvZiBwcmV2aW91cyA9PT0gJ3N0cmluZycgPyBbXG4gICAgICAgICAgICBwcmV2aW91c1xuICAgICAgICBdIDogQXJyYXkuaXNBcnJheShwcmV2aW91cykgPyBwcmV2aW91cyA6IFtdLFxuICAgICAgICBzZXJpYWxpemUoQ09PS0lFX05BTUVfUFJFUkVOREVSX0JZUEFTUywgJycsIHtcbiAgICAgICAgICAgIC8vIFRvIGRlbGV0ZSBhIGNvb2tpZSwgc2V0IGBleHBpcmVzYCB0byBhIGRhdGUgaW4gdGhlIHBhc3Q6XG4gICAgICAgICAgICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjI2NSNzZWN0aW9uLTQuMS4xXG4gICAgICAgICAgICAvLyBgTWF4LUFnZTogMGAgaXMgbm90IHZhbGlkLCB0aHVzIGlnbm9yZWQsIGFuZCB0aGUgY29va2llIGlzIHBlcnNpc3RlZC5cbiAgICAgICAgICAgIGV4cGlyZXM6IG5ldyBEYXRlKDApLFxuICAgICAgICAgICAgaHR0cE9ubHk6IHRydWUsXG4gICAgICAgICAgICBzYW1lU2l0ZTogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdkZXZlbG9wbWVudCcgPyAnbm9uZScgOiAnbGF4JyxcbiAgICAgICAgICAgIHNlY3VyZTogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdkZXZlbG9wbWVudCcsXG4gICAgICAgICAgICBwYXRoOiAnLycsXG4gICAgICAgICAgICAuLi5vcHRpb25zLnBhdGggIT09IHVuZGVmaW5lZCA/IHtcbiAgICAgICAgICAgICAgICBwYXRoOiBvcHRpb25zLnBhdGhcbiAgICAgICAgICAgIH0gOiB1bmRlZmluZWRcbiAgICAgICAgfSksXG4gICAgICAgIHNlcmlhbGl6ZShDT09LSUVfTkFNRV9QUkVSRU5ERVJfREFUQSwgJycsIHtcbiAgICAgICAgICAgIC8vIFRvIGRlbGV0ZSBhIGNvb2tpZSwgc2V0IGBleHBpcmVzYCB0byBhIGRhdGUgaW4gdGhlIHBhc3Q6XG4gICAgICAgICAgICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjI2NSNzZWN0aW9uLTQuMS4xXG4gICAgICAgICAgICAvLyBgTWF4LUFnZTogMGAgaXMgbm90IHZhbGlkLCB0aHVzIGlnbm9yZWQsIGFuZCB0aGUgY29va2llIGlzIHBlcnNpc3RlZC5cbiAgICAgICAgICAgIGV4cGlyZXM6IG5ldyBEYXRlKDApLFxuICAgICAgICAgICAgaHR0cE9ubHk6IHRydWUsXG4gICAgICAgICAgICBzYW1lU2l0ZTogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdkZXZlbG9wbWVudCcgPyAnbm9uZScgOiAnbGF4JyxcbiAgICAgICAgICAgIHNlY3VyZTogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdkZXZlbG9wbWVudCcsXG4gICAgICAgICAgICBwYXRoOiAnLycsXG4gICAgICAgICAgICAuLi5vcHRpb25zLnBhdGggIT09IHVuZGVmaW5lZCA/IHtcbiAgICAgICAgICAgICAgICBwYXRoOiBvcHRpb25zLnBhdGhcbiAgICAgICAgICAgIH0gOiB1bmRlZmluZWRcbiAgICAgICAgfSlcbiAgICBdKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzLCBTWU1CT0xfQ0xFQVJFRF9DT09LSUVTLCB7XG4gICAgICAgIHZhbHVlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxuICAgIH0pO1xuICAgIHJldHVybiByZXM7XG59XG5jbGFzcyBBcGlFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihzdGF0dXNDb2RlLCBtZXNzYWdlKXtcbiAgICAgICAgc3VwZXIobWVzc2FnZSk7XG4gICAgICAgIHRoaXMuc3RhdHVzQ29kZSA9IHN0YXR1c0NvZGU7XG4gICAgfVxufVxuZnVuY3Rpb24gc2VuZEVycm9yKHJlcywgc3RhdHVzQ29kZSwgbWVzc2FnZSkge1xuICAgIHJlcy5zdGF0dXNDb2RlID0gc3RhdHVzQ29kZTtcbiAgICByZXMuc3RhdHVzTWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgcmVzLmVuZChtZXNzYWdlKTtcbn1cbmZ1bmN0aW9uIHNldExhenlQcm9wKHsgcmVxIH0sIHByb3AsIGdldHRlcikge1xuICAgIGNvbnN0IG9wdHMgPSB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH07XG4gICAgY29uc3Qgb3B0c1Jlc2V0ID0ge1xuICAgICAgICAuLi5vcHRzLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlcSwgcHJvcCwge1xuICAgICAgICAuLi5vcHRzLFxuICAgICAgICBnZXQ6ICgpPT57XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdldHRlcigpO1xuICAgICAgICAgICAgLy8gd2Ugc2V0IHRoZSBwcm9wZXJ0eSBvbiB0aGUgb2JqZWN0IHRvIGF2b2lkIHJlY2FsY3VsYXRpbmcgaXRcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXEsIHByb3AsIHtcbiAgICAgICAgICAgICAgICAuLi5vcHRzUmVzZXQsXG4gICAgICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6ICh2YWx1ZSk9PntcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXEsIHByb3AsIHtcbiAgICAgICAgICAgICAgICAuLi5vcHRzUmVzZXQsXG4gICAgICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/api-utils/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/app-render/collect-segment-data.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/app-render/collect-segment-data.js ***!
|
||
\**************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/* eslint-disable @next/internal/no-ambiguous-jsx -- Bundled in entry-base so it gets the right JSX runtime. */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n collectPrefetchHints: function() {\n return collectPrefetchHints;\n },\n collectSegmentData: function() {\n return collectSegmentData;\n }\n});\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js\");\nconst _approutertypes = __webpack_require__(/*! ../../shared/lib/app-router-types */ \"(rsc)/./node_modules/next/dist/shared/lib/app-router-types.js\");\nconst _varyparamsdecoding = __webpack_require__(/*! ../../shared/lib/segment-cache/vary-params-decoding */ \"(rsc)/./node_modules/next/dist/shared/lib/segment-cache/vary-params-decoding.js\");\nconst _segment = __webpack_require__(/*! ../../shared/lib/segment */ \"(rsc)/./node_modules/next/dist/shared/lib/segment.js\");\nconst _client = __webpack_require__(/*! react-server-dom-webpack/client */ \"(rsc)/./node_modules/next/dist/compiled/react-server-dom-webpack/client.node.js\");\nconst _static = __webpack_require__(/*! react-server-dom-webpack/static */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static.js\");\nconst _nodewebstreamshelper = __webpack_require__(/*! ../stream-utils/node-web-streams-helper */ \"(rsc)/./node_modules/next/dist/server/stream-utils/node-web-streams-helper.js\");\nconst _scheduler = __webpack_require__(/*! ../../lib/scheduler */ \"(rsc)/./node_modules/next/dist/lib/scheduler.js\");\nconst _segmentvalueencoding = __webpack_require__(/*! ../../shared/lib/segment-cache/segment-value-encoding */ \"(rsc)/./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js\");\nconst _createerrorhandler = __webpack_require__(/*! ./create-error-handler */ \"(rsc)/./node_modules/next/dist/server/app-render/create-error-handler.js\");\nconst _prospectiverenderutils = __webpack_require__(/*! ./prospective-render-utils */ \"(rsc)/./node_modules/next/dist/server/app-render/prospective-render-utils.js\");\nconst _workasyncstorageexternal = __webpack_require__(/*! ./work-async-storage.external */ \"../app-render/work-async-storage.external\");\nconst filterStackFrame = true ? (__webpack_require__(/*! ../lib/source-maps */ \"(rsc)/./node_modules/next/dist/server/lib/source-maps.js\").filterStackFrameDEV) : 0;\nconst findSourceMapURL = true ? (__webpack_require__(/*! ../lib/source-maps */ \"(rsc)/./node_modules/next/dist/server/lib/source-maps.js\").findSourceMapURLDEV) : 0;\nfunction onSegmentPrerenderError(error) {\n const digest = (0, _createerrorhandler.getDigestForWellKnownError)(error);\n if (digest) {\n return digest;\n }\n // We don't need to log the errors because we would have already done that\n // when generating the original Flight stream for the whole page.\n if (process.env.NEXT_DEBUG_BUILD || process.env.__NEXT_VERBOSE_LOGGING) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n (0, _prospectiverenderutils.printDebugThrownValueForProspectiveRender)(error, (workStore == null ? void 0 : workStore.route) ?? 'unknown route', _prospectiverenderutils.Phase.SegmentCollection);\n }\n}\n/**\n * Extract the FlightRouterState, seed data, and head from a prerendered\n * InitialRSCPayload. Returns null if the payload doesn't match the expected\n * shape (single path with 3 elements).\n */ function extractFlightData(initialRSCPayload) {\n const flightDataPaths = initialRSCPayload.f;\n // FlightDataPath is an unsound type, hence the additional checks.\n if (flightDataPaths.length !== 1 && flightDataPaths[0].length !== 3) {\n console.error('Internal Next.js error: InitialRSCPayload does not match the expected ' + 'shape for a prerendered page during segment prefetch generation.');\n return null;\n }\n return {\n buildId: initialRSCPayload.b,\n flightRouterState: flightDataPaths[0][0],\n seedData: flightDataPaths[0][1],\n head: flightDataPaths[0][2]\n };\n}\nasync function collectSegmentData(isCacheComponentsEnabled, fullPageDataBuffer, staleTime, clientModules, serverConsumerManifest, prefetchInlining, hints) {\n // Traverse the router tree and generate a prefetch response for each segment.\n // A mutable map to collect the results as we traverse the route tree.\n const resultMap = new Map();\n // Before we start, warm up the module cache by decoding the page data once.\n // Then we can assume that any remaining async tasks that occur the next time\n // are due to hanging promises caused by dynamic data access. Note we only\n // have to do this once per page, not per individual segment.\n //\n try {\n await (0, _client.createFromReadableStream)((0, _nodewebstreamshelper.streamFromBuffer)(fullPageDataBuffer), {\n findSourceMapURL,\n serverConsumerManifest\n });\n await (0, _scheduler.waitAtLeastOneReactRenderTask)();\n } catch {}\n // Create an abort controller that we'll use to stop the stream.\n const abortController = new AbortController();\n const onCompletedProcessingRouteTree = async ()=>{\n // Since all we're doing is decoding and re-encoding a cached prerender, if\n // serializing the stream takes longer than a microtask, it must because of\n // hanging promises caused by dynamic data.\n await (0, _scheduler.waitAtLeastOneReactRenderTask)();\n abortController.abort();\n };\n // Generate a stream for the route tree prefetch. While we're walking the\n // tree, we'll also spawn additional tasks to generate the segment prefetches.\n // The promises for these tasks are pushed to a mutable array that we will\n // await once the route tree is fully rendered.\n const segmentTasks = [];\n const { prelude: treeStream } = await (0, _static.prerender)(// RootTreePrefetch is not a valid return type for a React component, but\n // we need to use a component so that when we decode the original stream\n // inside of it, the side effects are transferred to the new stream.\n // @ts-expect-error\n /*#__PURE__*/ (0, _jsxruntime.jsx)(PrefetchTreeData, {\n isClientParamParsingEnabled: isCacheComponentsEnabled,\n fullPageDataBuffer: fullPageDataBuffer,\n serverConsumerManifest: serverConsumerManifest,\n clientModules: clientModules,\n staleTime: staleTime,\n segmentTasks: segmentTasks,\n onCompletedProcessingRouteTree: onCompletedProcessingRouteTree,\n prefetchInlining: prefetchInlining,\n hints: hints\n }), clientModules, {\n filterStackFrame,\n signal: abortController.signal,\n onError: onSegmentPrerenderError\n });\n // Write the route tree to a special `/_tree` segment.\n const treeBuffer = await (0, _nodewebstreamshelper.streamToBuffer)(treeStream);\n resultMap.set('/_tree', treeBuffer);\n // Also output the entire full page data response\n resultMap.set('/_full', fullPageDataBuffer);\n // Now that we've finished rendering the route tree, all the segment tasks\n // should have been spawned. Await them in parallel and write the segment\n // prefetches to the result map.\n for (const [segmentPath, buffer] of (await Promise.all(segmentTasks))){\n resultMap.set(segmentPath, buffer);\n }\n return resultMap;\n}\nasync function collectPrefetchHints(fullPageDataBuffer, staleTime, clientModules, serverConsumerManifest, maxSize, maxBundleSize) {\n // Warm up the module cache, same as collectSegmentData.\n try {\n await (0, _client.createFromReadableStream)((0, _nodewebstreamshelper.streamFromBuffer)(fullPageDataBuffer), {\n findSourceMapURL,\n serverConsumerManifest\n });\n await (0, _scheduler.waitAtLeastOneReactRenderTask)();\n } catch {}\n // Decode the Flight data to walk the route tree.\n const initialRSCPayload = await (0, _client.createFromReadableStream)(createUnclosingPrefetchStream((0, _nodewebstreamshelper.streamFromBuffer)(fullPageDataBuffer)), {\n findSourceMapURL,\n serverConsumerManifest\n });\n const flightData = extractFlightData(initialRSCPayload);\n if (flightData === null) {\n return {\n hints: 0,\n slots: null\n };\n }\n const { buildId, flightRouterState, seedData, head } = flightData;\n // Measure the head (metadata/viewport) gzip size so the main traversal\n // can decide whether to inline it into a page's bundle.\n const headVaryParamsThenable = initialRSCPayload.h;\n const headVaryParams = headVaryParamsThenable !== null ? (0, _varyparamsdecoding.readVaryParams)(headVaryParamsThenable) : null;\n const [, headBuffer] = await renderSegmentPrefetch(buildId, staleTime, head, _segmentvalueencoding.HEAD_REQUEST_KEY, headVaryParams, clientModules);\n const headGzipSize = await getGzipSize(headBuffer);\n // Mutable accumulator: the first page leaf that can fit the head sets\n // this to true. Once set, subsequent leaves skip the check.\n const headInlineState = {\n inlined: false\n };\n // Walk the tree with the parent-first, child-decides algorithm.\n const { node } = await collectPrefetchHintsImpl(flightRouterState, buildId, staleTime, seedData, clientModules, _segmentvalueencoding.ROOT_SEGMENT_REQUEST_KEY, null, maxSize, maxBundleSize, headGzipSize, headInlineState);\n if (!headInlineState.inlined) {\n // No page could accept the head. Set HeadOutlined on the root so the\n // client knows to fetch the head separately.\n node.hints |= _approutertypes.PrefetchHint.HeadOutlined;\n }\n return node;\n}\n// Measure a segment's gzip size and decide whether it should be inlined.\n//\n// These hints are computed once during build and never change for the\n// lifetime of that deployment. The client can assume that hints delivered as\n// part of one request will be the same during a subsequent request, given\n// the same build ID. There's no skew to worry about as long as the build\n// itself is consistent.\n//\n// In the Segment Cache, we split page prefetches into multiple requests so\n// that each one can be cached and deduped independently. However, some\n// segments are small enough that the potential caching benefits are not worth\n// the additional network overhead. For these, we inline a parent's data into\n// one of its children's responses, avoiding a separate request. The parent\n// is inlined into the child (not the other way around) because the parent's\n// response is more likely to be shared across multiple pages. The child's\n// response is already page-specific, so adding the parent's data there\n// doesn't meaningfully reduce deduplication. It's similar to how JS bundlers\n// decide whether to inline a module into a chunk.\n//\n// The algorithm is parent-first, child-decides: the parent measures itself\n// and passes its gzip size down. Each child decides whether to accept. A\n// child rejects if the parent exceeds maxSize or if accepting would push\n// the cumulative inlined bytes past maxBundleSize. This produces\n// both ParentInlinedIntoSelf (on the child) and InlinedIntoChild (on the\n// parent) in a single pass.\nasync function collectPrefetchHintsImpl(route, buildId, staleTime, seedData, clientModules, // TODO: Consider persisting the computed requestKey into the hints output\n// so it doesn't need to be recomputed during the build. This might also\n// suggest renaming prefetch-hints.json to something like\n// segment-manifest.json, since it would contain more than just hints.\nrequestKey, parentGzipSize, maxSize, maxBundleSize, headGzipSize, headInlineState) {\n // Render current segment and measure its gzip size.\n let currentGzipSize = null;\n if (seedData !== null) {\n const varyParamsThenable = seedData[4];\n const varyParams = varyParamsThenable !== null ? (0, _varyparamsdecoding.readVaryParams)(varyParamsThenable) : null;\n const [, buffer] = await renderSegmentPrefetch(buildId, staleTime, seedData[0], requestKey, varyParams, clientModules);\n currentGzipSize = await getGzipSize(buffer);\n }\n // Only offer this segment to its children for inlining if its gzip size\n // is below maxSize. Segments above this get their own response.\n const sizeToInline = currentGzipSize !== null && currentGzipSize < maxSize ? currentGzipSize : null;\n // Process children serially (not in parallel) to ensure deterministic\n // results. Since this only runs at build time and the rendering is just\n // re-encoding cached prerenders, this won't impact build times. Each child\n // receives our gzip size and decides whether to inline us. Once a child\n // accepts, we stop offering to remaining siblings — the parent is only\n // inlined into one child. In parallel routes, this avoids duplicating the\n // parent's data across multiple sibling responses.\n const children = route[1];\n const seedDataChildren = seedData !== null ? seedData[1] : null;\n let slots = null;\n let didInlineIntoChild = false;\n let acceptingChildInlinedBytes = 0;\n // Track the smallest inlinedBytes across all children so we know how much\n // budget remains along the best path. When our own parent asks whether we\n // can accept its data, the parent's bytes would flow through to the child\n // with the most remaining headroom.\n let smallestChildInlinedBytes = Infinity;\n let hasChildren = false;\n for(const parallelRouteKey in children){\n hasChildren = true;\n const childRoute = children[parallelRouteKey];\n const childSegment = childRoute[0];\n const childSeedData = seedDataChildren !== null ? seedDataChildren[parallelRouteKey] : null;\n const childRequestKey = (0, _segmentvalueencoding.appendSegmentRequestKeyPart)(requestKey, parallelRouteKey, (0, _segmentvalueencoding.createSegmentRequestKeyPart)(childSegment));\n const childResult = await collectPrefetchHintsImpl(childRoute, buildId, staleTime, childSeedData, clientModules, childRequestKey, // Once a child has accepted us, stop offering to remaining siblings.\n didInlineIntoChild ? null : sizeToInline, maxSize, maxBundleSize, headGzipSize, headInlineState);\n if (slots === null) {\n slots = {};\n }\n slots[parallelRouteKey] = childResult.node;\n if (childResult.node.hints & _approutertypes.PrefetchHint.ParentInlinedIntoSelf) {\n // This child accepted our data — it will include our segment's\n // response in its own. No need to track headroom anymore since\n // we already know which child we're inlined into.\n didInlineIntoChild = true;\n acceptingChildInlinedBytes = childResult.inlinedBytes;\n } else if (!didInlineIntoChild) {\n // Track the child with the most remaining headroom. Used below\n // when deciding whether to accept our own parent's data.\n if (childResult.inlinedBytes < smallestChildInlinedBytes) {\n smallestChildInlinedBytes = childResult.inlinedBytes;\n }\n }\n }\n // Leaf segment: no children have consumed any budget yet.\n if (!hasChildren) {\n smallestChildInlinedBytes = 0;\n }\n // Mark this segment as InlinedIntoChild if one of its children accepted.\n // This means this segment doesn't need its own prefetch response — its\n // data is included in the accepting child's response instead.\n let hints = 0;\n if (didInlineIntoChild) {\n hints |= _approutertypes.PrefetchHint.InlinedIntoChild;\n }\n // inlinedBytes represents the total gzipped bytes of parent data inlined\n // into the deepest \"inlining target\" along this branch. It starts at 0 at\n // the leaves and grows as parents are inlined going back up the tree. If a\n // child accepted us, our size is already counted in that child's value.\n let inlinedBytes = didInlineIntoChild ? acceptingChildInlinedBytes : smallestChildInlinedBytes;\n // At leaf nodes (pages), try to inline the head (metadata/viewport) into\n // this page's response. The head is treated like an additional inlined\n // entry — it counts against the same total budget. Only the first page\n // that has room gets the head; subsequent pages skip via the shared\n // headInlineState accumulator.\n if (!hasChildren && !headInlineState.inlined) {\n if (inlinedBytes + headGzipSize < maxBundleSize) {\n hints |= _approutertypes.PrefetchHint.HeadInlinedIntoSelf;\n inlinedBytes += headGzipSize;\n headInlineState.inlined = true;\n }\n }\n // Decide whether to accept our own parent's data. Two conditions:\n //\n // 1. The parent offered us a size (parentGzipSize is not null). It's null\n // when the parent is too large to inline or when this is the root.\n //\n // 2. The total inlined bytes along this branch wouldn't exceed the budget.\n // Even if each segment is individually small, at some point it no\n // longer makes sense to keep adding bytes because the combined response\n // is unique per URL and can't be deduped.\n //\n // A node can be both InlinedIntoChild and ParentInlinedIntoSelf. This\n // happens in multi-level chains: GP → P → C where all are small. C\n // accepts P (P is InlinedIntoChild), then P also accepts GP (P is\n // ParentInlinedIntoSelf). The result: C's response includes both P's\n // and GP's data. The parent's data flows through to the deepest\n // accepting descendant.\n if (parentGzipSize !== null) {\n if (inlinedBytes + parentGzipSize < maxBundleSize) {\n hints |= _approutertypes.PrefetchHint.ParentInlinedIntoSelf;\n inlinedBytes += parentGzipSize;\n }\n }\n return {\n node: {\n hints,\n slots\n },\n inlinedBytes\n };\n}\n// We use gzip size rather than raw size because it better reflects the actual\n// transfer cost. The inlining trade-off is about whether the overhead of an\n// additional HTTP request (connection setup, headers, round trip) is worth\n// the deduplication benefit of keeping a segment separate. Below some\n// compressed size, the request overhead dominates and inlining is better.\n// Above it, the deduplication benefit of a cacheable standalone response\n// wins out.\nasync function getGzipSize(buffer) {\n const stream = new Blob([\n new Uint8Array(buffer)\n ]).stream().pipeThrough(new CompressionStream('gzip'));\n const compressedBlob = await new Response(stream).blob();\n return compressedBlob.size;\n}\nasync function PrefetchTreeData({ isClientParamParsingEnabled, fullPageDataBuffer, serverConsumerManifest, clientModules, staleTime, segmentTasks, onCompletedProcessingRouteTree, prefetchInlining, hints }) {\n // We're currently rendering a Flight response for the route tree prefetch.\n // Inside this component, decode the Flight stream for the whole page. This is\n // a hack to transfer the side effects from the original Flight stream (e.g.\n // Float preloads) onto the Flight stream for the tree prefetch.\n // TODO: React needs a better way to do this. Needed for Server Actions, too.\n const initialRSCPayload = await (0, _client.createFromReadableStream)(createUnclosingPrefetchStream((0, _nodewebstreamshelper.streamFromBuffer)(fullPageDataBuffer)), {\n findSourceMapURL,\n serverConsumerManifest\n });\n const flightData = extractFlightData(initialRSCPayload);\n if (flightData === null) {\n return null;\n }\n const { buildId, flightRouterState, seedData, head } = flightData;\n // Extract the head vary params from the decoded response.\n // The head vary params thenable should be fulfilled by now; if not, treat\n // as unknown (null).\n const headVaryParamsThenable = initialRSCPayload.h;\n const headVaryParams = headVaryParamsThenable !== null ? (0, _varyparamsdecoding.readVaryParams)(headVaryParamsThenable) : null;\n // Compute the route metadata tree by traversing the FlightRouterState. As we\n // walk the tree, we will also spawn a task to produce a prefetch response for\n // each segment (unless prefetch inlining is enabled, in which case all\n // segments are bundled into a single /_inlined response).\n const tree = collectSegmentDataImpl(isClientParamParsingEnabled, flightRouterState, buildId, staleTime, seedData, clientModules, _segmentvalueencoding.ROOT_SEGMENT_REQUEST_KEY, segmentTasks, prefetchInlining, hints);\n if (prefetchInlining) {\n // When prefetch inlining is enabled, bundle all segment data into a single\n // /_inlined response instead of individual per-segment responses. The head\n // is also included in the inlined response.\n segmentTasks.push((0, _scheduler.waitAtLeastOneReactRenderTask)().then(()=>renderInlinedPrefetchResponse(flightRouterState, buildId, staleTime, seedData, head, headVaryParams, clientModules)));\n } else {\n // Also spawn a task to produce a prefetch response for the \"head\" segment.\n // The head contains metadata, like the title; it's not really a route\n // segment, but it contains RSC data, so it's treated like a segment by\n // the client cache.\n segmentTasks.push((0, _scheduler.waitAtLeastOneReactRenderTask)().then(()=>renderSegmentPrefetch(buildId, staleTime, head, _segmentvalueencoding.HEAD_REQUEST_KEY, headVaryParams, clientModules)));\n }\n // Notify the abort controller that we're done processing the route tree.\n // Anything async that happens after this point must be due to hanging\n // promises in the original stream.\n onCompletedProcessingRouteTree();\n // Render the route tree to a special `/_tree` segment.\n const treePrefetch = {\n tree,\n staleTime\n };\n if (buildId) {\n treePrefetch.buildId = buildId;\n }\n return treePrefetch;\n}\nfunction collectSegmentDataImpl(isClientParamParsingEnabled, route, buildId, staleTime, seedData, clientModules, requestKey, segmentTasks, prefetchInlining, hintTree) {\n // Metadata about the segment. Sent as part of the tree prefetch. Null if\n // there are no children.\n let slotMetadata = null;\n const children = route[1];\n const seedDataChildren = seedData !== null ? seedData[1] : null;\n for(const parallelRouteKey in children){\n const childRoute = children[parallelRouteKey];\n const childSegment = childRoute[0];\n const childSeedData = seedDataChildren !== null ? seedDataChildren[parallelRouteKey] : null;\n const childRequestKey = (0, _segmentvalueencoding.appendSegmentRequestKeyPart)(requestKey, parallelRouteKey, (0, _segmentvalueencoding.createSegmentRequestKeyPart)(childSegment));\n const childHintTree = hintTree !== null && hintTree.slots !== null ? hintTree.slots[parallelRouteKey] ?? null : null;\n const childTree = collectSegmentDataImpl(isClientParamParsingEnabled, childRoute, buildId, staleTime, childSeedData, clientModules, childRequestKey, segmentTasks, prefetchInlining, childHintTree);\n if (slotMetadata === null) {\n slotMetadata = {};\n }\n slotMetadata[parallelRouteKey] = childTree;\n }\n // Union the hints already embedded in the FlightRouterState with the\n // separately-computed build-time hints. During the initial build, the\n // FlightRouterState was produced before collectPrefetchHints ran, so\n // inlining hints (ParentInlinedIntoSelf, InlinedIntoChild) won't be in\n // route[4] yet. On subsequent renders the hints are already in the\n // FlightRouterState, so the union is idempotent.\n const prefetchHints = (route[4] ?? 0) | (hintTree !== null ? hintTree.hints : 0);\n // Determine which params this segment varies on.\n // Read the vary params thenable directly from the seed data. By the time\n // collectSegmentData runs, the thenable should be fulfilled. If it's not\n // fulfilled or null, treat as unknown (null means we can't share cache\n // entries across param values).\n const varyParamsThenable = seedData !== null ? seedData[4] : null;\n const varyParams = varyParamsThenable !== null ? (0, _varyparamsdecoding.readVaryParams)(varyParamsThenable) : null;\n if (!prefetchInlining) {\n // When prefetch inlining is disabled, spawn individual segment tasks.\n // When enabled, segment data is bundled into the /_inlined response\n // instead, so we skip per-segment tasks here.\n if (seedData !== null) {\n // Spawn a task to write the segment data to a new Flight stream.\n segmentTasks.push(// Since we're already in the middle of a render, wait until after the\n // current task to escape the current rendering context.\n (0, _scheduler.waitAtLeastOneReactRenderTask)().then(()=>renderSegmentPrefetch(buildId, staleTime, seedData[0], requestKey, varyParams, clientModules)));\n } else {\n // This segment does not have any seed data. Skip generating a prefetch\n // response for it. We'll still include it in the route tree, though.\n // TODO: We should encode in the route tree whether a segment is missing\n // so we don't attempt to fetch it for no reason. As of now this shouldn't\n // ever happen in practice, though.\n }\n }\n const segment = route[0];\n let name;\n let param;\n if (typeof segment === 'string') {\n name = segment;\n param = null;\n } else {\n name = segment[0];\n param = {\n type: segment[2],\n // This value is omitted from the prefetch response when cacheComponents\n // is enabled.\n key: isClientParamParsingEnabled ? null : segment[1],\n siblings: segment[3]\n };\n }\n // Metadata about the segment. Sent to the client as part of the\n // tree prefetch.\n return {\n name,\n param,\n prefetchHints,\n slots: slotMetadata\n };\n}\nasync function renderSegmentPrefetch(buildId, staleTime, rsc, requestKey, varyParams, clientModules) {\n // Render the segment data to a stream.\n const segmentPrefetch = {\n rsc,\n isPartial: await isPartialRSCData(rsc, clientModules),\n staleTime,\n varyParams\n };\n if (buildId) {\n segmentPrefetch.buildId = buildId;\n }\n // Since all we're doing is decoding and re-encoding a cached prerender, if\n // it takes longer than a microtask, it must because of hanging promises\n // caused by dynamic data. Abort the stream at the end of the current task.\n const abortController = new AbortController();\n (0, _scheduler.waitAtLeastOneReactRenderTask)().then(()=>abortController.abort());\n const { prelude: segmentStream } = await (0, _static.prerender)(segmentPrefetch, clientModules, {\n filterStackFrame,\n signal: abortController.signal,\n onError: onSegmentPrerenderError\n });\n const segmentBuffer = await (0, _nodewebstreamshelper.streamToBuffer)(segmentStream);\n if (requestKey === _segmentvalueencoding.ROOT_SEGMENT_REQUEST_KEY) {\n return [\n '/_index',\n segmentBuffer\n ];\n } else {\n return [\n requestKey,\n segmentBuffer\n ];\n }\n}\nasync function renderInlinedPrefetchResponse(route, buildId, staleTime, seedData, head, headVaryParams, clientModules) {\n // Build the inlined tree by walking the route and collecting all segments.\n const inlinedTree = await buildInlinedSegmentPrefetch(route, buildId, staleTime, seedData, clientModules);\n // Build the head segment.\n const headPrefetch = {\n rsc: head,\n isPartial: await isPartialRSCData(head, clientModules),\n staleTime,\n varyParams: headVaryParams\n };\n if (buildId) {\n headPrefetch.buildId = buildId;\n }\n const response = {\n tree: inlinedTree,\n head: headPrefetch\n };\n // Render as a single Flight response.\n const abortController = new AbortController();\n (0, _scheduler.waitAtLeastOneReactRenderTask)().then(()=>abortController.abort());\n const { prelude } = await (0, _static.prerender)(response, clientModules, {\n filterStackFrame,\n signal: abortController.signal,\n onError: onSegmentPrerenderError\n });\n const buffer = await (0, _nodewebstreamshelper.streamToBuffer)(prelude);\n return [\n '/' + _segment.PAGE_SEGMENT_KEY,\n buffer\n ];\n}\nasync function buildInlinedSegmentPrefetch(route, buildId, staleTime, seedData, clientModules) {\n let slots = null;\n const children = route[1];\n const seedDataChildren = seedData !== null ? seedData[1] : null;\n for(const parallelRouteKey in children){\n const childRoute = children[parallelRouteKey];\n const childSeedData = seedDataChildren !== null ? seedDataChildren[parallelRouteKey] : null;\n const childPrefetch = await buildInlinedSegmentPrefetch(childRoute, buildId, staleTime, childSeedData, clientModules);\n if (slots === null) {\n slots = {};\n }\n slots[parallelRouteKey] = childPrefetch;\n }\n const rsc = seedData !== null ? seedData[0] : null;\n const varyParamsThenable = seedData !== null ? seedData[4] : null;\n const varyParams = varyParamsThenable !== null ? (0, _varyparamsdecoding.readVaryParams)(varyParamsThenable) : null;\n const segment = {\n rsc,\n isPartial: rsc !== null ? await isPartialRSCData(rsc, clientModules) : true,\n staleTime,\n varyParams\n };\n if (buildId) {\n segment.buildId = buildId;\n }\n return {\n segment,\n slots\n };\n}\nasync function isPartialRSCData(rsc, clientModules) {\n // We can determine if a segment contains only partial data if it takes longer\n // than a task to encode, because dynamic data is encoded as an infinite\n // promise. We must do this in a separate Flight prerender from the one that\n // actually generates the prefetch stream because we need to include\n // `isPartial` in the stream itself.\n let isPartial = false;\n const abortController = new AbortController();\n (0, _scheduler.waitAtLeastOneReactRenderTask)().then(()=>{\n // If we haven't yet finished the outer task, then it must be because we\n // accessed dynamic data.\n isPartial = true;\n abortController.abort();\n });\n await (0, _static.prerender)(rsc, clientModules, {\n filterStackFrame,\n signal: abortController.signal,\n onError () {}\n });\n return isPartial;\n}\nfunction createUnclosingPrefetchStream(originalFlightStream) {\n // When PPR is enabled, prefetch streams may contain references that never\n // resolve, because that's how we encode dynamic data access. In the decoded\n // object returned by the Flight client, these are reified into hanging\n // promises that suspend during render, which is effectively what we want.\n // The UI resolves when it switches to the dynamic data stream\n // (via useDeferredValue(dynamic, static)).\n //\n // However, the Flight implementation currently errors if the server closes\n // the response before all the references are resolved. As a cheat to work\n // around this, we wrap the original stream in a new stream that never closes,\n // and therefore doesn't error.\n const reader = originalFlightStream.getReader();\n return new ReadableStream({\n async pull (controller) {\n while(true){\n const { done, value } = await reader.read();\n if (!done) {\n // Pass to the target stream and keep consuming the Flight response\n // from the server.\n controller.enqueue(value);\n continue;\n }\n // The server stream has closed. Exit, but intentionally do not close\n // the target stream.\n return;\n }\n }\n });\n}\n\n//# sourceMappingURL=collect-segment-data.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2NvbGxlY3Qtc2VnbWVudC1kYXRhLmpzIiwibWFwcGluZ3MiOiJBQUFBLGdIQUE2SDtBQUM3SCw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBR0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Qsb0JBQW9CLG1CQUFPLENBQUMseUhBQW1CO0FBQy9DLHdCQUF3QixtQkFBTyxDQUFDLHdHQUFtQztBQUNuRSw0QkFBNEIsbUJBQU8sQ0FBQyw0SUFBcUQ7QUFDekYsaUJBQWlCLG1CQUFPLENBQUMsc0ZBQTBCO0FBQ25ELGdCQUFnQixtQkFBTyxDQUFDLHdIQUFpQztBQUN6RCxnQkFBZ0IsbUJBQU8sQ0FBQyxxSkFBaUM7QUFDekQsOEJBQThCLG1CQUFPLENBQUMsOEhBQXlDO0FBQy9FLG1CQUFtQixtQkFBTyxDQUFDLDRFQUFxQjtBQUNoRCw4QkFBOEIsbUJBQU8sQ0FBQyxnSkFBdUQ7QUFDN0YsNEJBQTRCLG1CQUFPLENBQUMsd0dBQXdCO0FBQzVELGdDQUFnQyxtQkFBTyxDQUFDLGdIQUE0QjtBQUNwRSxrQ0FBa0MsbUJBQU8sQ0FBQyxnRkFBK0I7QUFDekUseUJBQXlCLEtBQXFDLEdBQUcsK0hBQWlELEdBQUcsQ0FBUztBQUM5SCx5QkFBeUIsS0FBcUMsR0FBRywrSEFBaUQsR0FBRyxDQUFTO0FBQzlIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHNCQUFzQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDZDQUE2QztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE9BQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQywwS0FBMEs7QUFDNU07QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksNkNBQTZDO0FBQ3pEO0FBQ0EsaUVBQWlFO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsdURBQXVEO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHlCQUF5QjtBQUNyQztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFVBQVU7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixjQUFjO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2NvbGxlY3Qtc2VnbWVudC1kYXRhLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBuZXh0L2ludGVybmFsL25vLWFtYmlndW91cy1qc3ggLS0gQnVuZGxlZCBpbiBlbnRyeS1iYXNlIHNvIGl0IGdldHMgdGhlIHJpZ2h0IEpTWCBydW50aW1lLiAqLyBcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGNvbGxlY3RQcmVmZXRjaEhpbnRzOiBudWxsLFxuICAgIGNvbGxlY3RTZWdtZW50RGF0YTogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBjb2xsZWN0UHJlZmV0Y2hIaW50czogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjb2xsZWN0UHJlZmV0Y2hIaW50cztcbiAgICB9LFxuICAgIGNvbGxlY3RTZWdtZW50RGF0YTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjb2xsZWN0U2VnbWVudERhdGE7XG4gICAgfVxufSk7XG5jb25zdCBfanN4cnVudGltZSA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtcnVudGltZVwiKTtcbmNvbnN0IF9hcHByb3V0ZXJ0eXBlcyA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItdHlwZXNcIik7XG5jb25zdCBfdmFyeXBhcmFtc2RlY29kaW5nID0gcmVxdWlyZShcIi4uLy4uL3NoYXJlZC9saWIvc2VnbWVudC1jYWNoZS92YXJ5LXBhcmFtcy1kZWNvZGluZ1wiKTtcbmNvbnN0IF9zZWdtZW50ID0gcmVxdWlyZShcIi4uLy4uL3NoYXJlZC9saWIvc2VnbWVudFwiKTtcbmNvbnN0IF9jbGllbnQgPSByZXF1aXJlKFwicmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrL2NsaWVudFwiKTtcbmNvbnN0IF9zdGF0aWMgPSByZXF1aXJlKFwicmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrL3N0YXRpY1wiKTtcbmNvbnN0IF9ub2Rld2Vic3RyZWFtc2hlbHBlciA9IHJlcXVpcmUoXCIuLi9zdHJlYW0tdXRpbHMvbm9kZS13ZWItc3RyZWFtcy1oZWxwZXJcIik7XG5jb25zdCBfc2NoZWR1bGVyID0gcmVxdWlyZShcIi4uLy4uL2xpYi9zY2hlZHVsZXJcIik7XG5jb25zdCBfc2VnbWVudHZhbHVlZW5jb2RpbmcgPSByZXF1aXJlKFwiLi4vLi4vc2hhcmVkL2xpYi9zZWdtZW50LWNhY2hlL3NlZ21lbnQtdmFsdWUtZW5jb2RpbmdcIik7XG5jb25zdCBfY3JlYXRlZXJyb3JoYW5kbGVyID0gcmVxdWlyZShcIi4vY3JlYXRlLWVycm9yLWhhbmRsZXJcIik7XG5jb25zdCBfcHJvc3BlY3RpdmVyZW5kZXJ1dGlscyA9IHJlcXVpcmUoXCIuL3Byb3NwZWN0aXZlLXJlbmRlci11dGlsc1wiKTtcbmNvbnN0IF93b3JrYXN5bmNzdG9yYWdlZXh0ZXJuYWwgPSByZXF1aXJlKFwiLi93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWxcIik7XG5jb25zdCBmaWx0ZXJTdGFja0ZyYW1lID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHJlcXVpcmUoJy4uL2xpYi9zb3VyY2UtbWFwcycpLmZpbHRlclN0YWNrRnJhbWVERVYgOiB1bmRlZmluZWQ7XG5jb25zdCBmaW5kU291cmNlTWFwVVJMID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHJlcXVpcmUoJy4uL2xpYi9zb3VyY2UtbWFwcycpLmZpbmRTb3VyY2VNYXBVUkxERVYgOiB1bmRlZmluZWQ7XG5mdW5jdGlvbiBvblNlZ21lbnRQcmVyZW5kZXJFcnJvcihlcnJvcikge1xuICAgIGNvbnN0IGRpZ2VzdCA9ICgwLCBfY3JlYXRlZXJyb3JoYW5kbGVyLmdldERpZ2VzdEZvcldlbGxLbm93bkVycm9yKShlcnJvcik7XG4gICAgaWYgKGRpZ2VzdCkge1xuICAgICAgICByZXR1cm4gZGlnZXN0O1xuICAgIH1cbiAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGxvZyB0aGUgZXJyb3JzIGJlY2F1c2Ugd2Ugd291bGQgaGF2ZSBhbHJlYWR5IGRvbmUgdGhhdFxuICAgIC8vIHdoZW4gZ2VuZXJhdGluZyB0aGUgb3JpZ2luYWwgRmxpZ2h0IHN0cmVhbSBmb3IgdGhlIHdob2xlIHBhZ2UuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5FWFRfREVCVUdfQlVJTEQgfHwgcHJvY2Vzcy5lbnYuX19ORVhUX1ZFUkJPU0VfTE9HR0lORykge1xuICAgICAgICBjb25zdCB3b3JrU3RvcmUgPSBfd29ya2FzeW5jc3RvcmFnZWV4dGVybmFsLndvcmtBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICAgICAgKDAsIF9wcm9zcGVjdGl2ZXJlbmRlcnV0aWxzLnByaW50RGVidWdUaHJvd25WYWx1ZUZvclByb3NwZWN0aXZlUmVuZGVyKShlcnJvciwgKHdvcmtTdG9yZSA9PSBudWxsID8gdm9pZCAwIDogd29ya1N0b3JlLnJvdXRlKSA/PyAndW5rbm93biByb3V0ZScsIF9wcm9zcGVjdGl2ZXJlbmRlcnV0aWxzLlBoYXNlLlNlZ21lbnRDb2xsZWN0aW9uKTtcbiAgICB9XG59XG4vKipcbiAqIEV4dHJhY3QgdGhlIEZsaWdodFJvdXRlclN0YXRlLCBzZWVkIGRhdGEsIGFuZCBoZWFkIGZyb20gYSBwcmVyZW5kZXJlZFxuICogSW5pdGlhbFJTQ1BheWxvYWQuIFJldHVybnMgbnVsbCBpZiB0aGUgcGF5bG9hZCBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZFxuICogc2hhcGUgKHNpbmdsZSBwYXRoIHdpdGggMyBlbGVtZW50cykuXG4gKi8gZnVuY3Rpb24gZXh0cmFjdEZsaWdodERhdGEoaW5pdGlhbFJTQ1BheWxvYWQpIHtcbiAgICBjb25zdCBmbGlnaHREYXRhUGF0aHMgPSBpbml0aWFsUlNDUGF5bG9hZC5mO1xuICAgIC8vIEZsaWdodERhdGFQYXRoIGlzIGFuIHVuc291bmQgdHlwZSwgaGVuY2UgdGhlIGFkZGl0aW9uYWwgY2hlY2tzLlxuICAgIGlmIChmbGlnaHREYXRhUGF0aHMubGVuZ3RoICE9PSAxICYmIGZsaWdodERhdGFQYXRoc1swXS5sZW5ndGggIT09IDMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignSW50ZXJuYWwgTmV4dC5qcyBlcnJvcjogSW5pdGlhbFJTQ1BheWxvYWQgZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkICcgKyAnc2hhcGUgZm9yIGEgcHJlcmVuZGVyZWQgcGFnZSBkdXJpbmcgc2VnbWVudCBwcmVmZXRjaCBnZW5lcmF0aW9uLicpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYnVpbGRJZDogaW5pdGlhbFJTQ1BheWxvYWQuYixcbiAgICAgICAgZmxpZ2h0Um91dGVyU3RhdGU6IGZsaWdodERhdGFQYXRoc1swXVswXSxcbiAgICAgICAgc2VlZERhdGE6IGZsaWdodERhdGFQYXRoc1swXVsxXSxcbiAgICAgICAgaGVhZDogZmxpZ2h0RGF0YVBhdGhzWzBdWzJdXG4gICAgfTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGNvbGxlY3RTZWdtZW50RGF0YShpc0NhY2hlQ29tcG9uZW50c0VuYWJsZWQsIGZ1bGxQYWdlRGF0YUJ1ZmZlciwgc3RhbGVUaW1lLCBjbGllbnRNb2R1bGVzLCBzZXJ2ZXJDb25zdW1lck1hbmlmZXN0LCBwcmVmZXRjaElubGluaW5nLCBoaW50cykge1xuICAgIC8vIFRyYXZlcnNlIHRoZSByb3V0ZXIgdHJlZSBhbmQgZ2VuZXJhdGUgYSBwcmVmZXRjaCByZXNwb25zZSBmb3IgZWFjaCBzZWdtZW50LlxuICAgIC8vIEEgbXV0YWJsZSBtYXAgdG8gY29sbGVjdCB0aGUgcmVzdWx0cyBhcyB3ZSB0cmF2ZXJzZSB0aGUgcm91dGUgdHJlZS5cbiAgICBjb25zdCByZXN1bHRNYXAgPSBuZXcgTWFwKCk7XG4gICAgLy8gQmVmb3JlIHdlIHN0YXJ0LCB3YXJtIHVwIHRoZSBtb2R1bGUgY2FjaGUgYnkgZGVjb2RpbmcgdGhlIHBhZ2UgZGF0YSBvbmNlLlxuICAgIC8vIFRoZW4gd2UgY2FuIGFzc3VtZSB0aGF0IGFueSByZW1haW5pbmcgYXN5bmMgdGFza3MgdGhhdCBvY2N1ciB0aGUgbmV4dCB0aW1lXG4gICAgLy8gYXJlIGR1ZSB0byBoYW5naW5nIHByb21pc2VzIGNhdXNlZCBieSBkeW5hbWljIGRhdGEgYWNjZXNzLiBOb3RlIHdlIG9ubHlcbiAgICAvLyBoYXZlIHRvIGRvIHRoaXMgb25jZSBwZXIgcGFnZSwgbm90IHBlciBpbmRpdmlkdWFsIHNlZ21lbnQuXG4gICAgLy9cbiAgICB0cnkge1xuICAgICAgICBhd2FpdCAoMCwgX2NsaWVudC5jcmVhdGVGcm9tUmVhZGFibGVTdHJlYW0pKCgwLCBfbm9kZXdlYnN0cmVhbXNoZWxwZXIuc3RyZWFtRnJvbUJ1ZmZlcikoZnVsbFBhZ2VEYXRhQnVmZmVyKSwge1xuICAgICAgICAgICAgZmluZFNvdXJjZU1hcFVSTCxcbiAgICAgICAgICAgIHNlcnZlckNvbnN1bWVyTWFuaWZlc3RcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0ICgwLCBfc2NoZWR1bGVyLndhaXRBdExlYXN0T25lUmVhY3RSZW5kZXJUYXNrKSgpO1xuICAgIH0gY2F0Y2ggIHt9XG4gICAgLy8gQ3JlYXRlIGFuIGFib3J0IGNvbnRyb2xsZXIgdGhhdCB3ZSdsbCB1c2UgdG8gc3RvcCB0aGUgc3RyZWFtLlxuICAgIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICBjb25zdCBvbkNvbXBsZXRlZFByb2Nlc3NpbmdSb3V0ZVRyZWUgPSBhc3luYyAoKT0+e1xuICAgICAgICAvLyBTaW5jZSBhbGwgd2UncmUgZG9pbmcgaXMgZGVjb2RpbmcgYW5kIHJlLWVuY29kaW5nIGEgY2FjaGVkIHByZXJlbmRlciwgaWZcbiAgICAgICAgLy8gc2VyaWFsaXppbmcgdGhlIHN0cmVhbSB0YWtlcyBsb25nZXIgdGhhbiBhIG1pY3JvdGFzaywgaXQgbXVzdCBiZWNhdXNlIG9mXG4gICAgICAgIC8vIGhhbmdpbmcgcHJvbWlzZXMgY2F1c2VkIGJ5IGR5bmFtaWMgZGF0YS5cbiAgICAgICAgYXdhaXQgKDAsIF9zY2hlZHVsZXIud2FpdEF0TGVhc3RPbmVSZWFjdFJlbmRlclRhc2spKCk7XG4gICAgICAgIGFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xuICAgIH07XG4gICAgLy8gR2VuZXJhdGUgYSBzdHJlYW0gZm9yIHRoZSByb3V0ZSB0cmVlIHByZWZldGNoLiBXaGlsZSB3ZSdyZSB3YWxraW5nIHRoZVxuICAgIC8vIHRyZWUsIHdlJ2xsIGFsc28gc3Bhd24gYWRkaXRpb25hbCB0YXNrcyB0byBnZW5lcmF0ZSB0aGUgc2VnbWVudCBwcmVmZXRjaGVzLlxuICAgIC8vIFRoZSBwcm9taXNlcyBmb3IgdGhlc2UgdGFza3MgYXJlIHB1c2hlZCB0byBhIG11dGFibGUgYXJyYXkgdGhhdCB3ZSB3aWxsXG4gICAgLy8gYXdhaXQgb25jZSB0aGUgcm91dGUgdHJlZSBpcyBmdWxseSByZW5kZXJlZC5cbiAgICBjb25zdCBzZWdtZW50VGFza3MgPSBbXTtcbiAgICBjb25zdCB7IHByZWx1ZGU6IHRyZWVTdHJlYW0gfSA9IGF3YWl0ICgwLCBfc3RhdGljLnByZXJlbmRlcikoLy8gUm9vdFRyZWVQcmVmZXRjaCBpcyBub3QgYSB2YWxpZCByZXR1cm4gdHlwZSBmb3IgYSBSZWFjdCBjb21wb25lbnQsIGJ1dFxuICAgIC8vIHdlIG5lZWQgdG8gdXNlIGEgY29tcG9uZW50IHNvIHRoYXQgd2hlbiB3ZSBkZWNvZGUgdGhlIG9yaWdpbmFsIHN0cmVhbVxuICAgIC8vIGluc2lkZSBvZiBpdCwgdGhlIHNpZGUgZWZmZWN0cyBhcmUgdHJhbnNmZXJyZWQgdG8gdGhlIG5ldyBzdHJlYW0uXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoUHJlZmV0Y2hUcmVlRGF0YSwge1xuICAgICAgICBpc0NsaWVudFBhcmFtUGFyc2luZ0VuYWJsZWQ6IGlzQ2FjaGVDb21wb25lbnRzRW5hYmxlZCxcbiAgICAgICAgZnVsbFBhZ2VEYXRhQnVmZmVyOiBmdWxsUGFnZURhdGFCdWZmZXIsXG4gICAgICAgIHNlcnZlckNvbnN1bWVyTWFuaWZlc3Q6IHNlcnZlckNvbnN1bWVyTWFuaWZlc3QsXG4gICAgICAgIGNsaWVudE1vZHVsZXM6IGNsaWVudE1vZHVsZXMsXG4gICAgICAgIHN0YWxlVGltZTogc3RhbGVUaW1lLFxuICAgICAgICBzZWdtZW50VGFza3M6IHNlZ21lbnRUYXNrcyxcbiAgICAgICAgb25Db21wbGV0ZWRQcm9jZXNzaW5nUm91dGVUcmVlOiBvbkNvbXBsZXRlZFByb2Nlc3NpbmdSb3V0ZVRyZWUsXG4gICAgICAgIHByZWZldGNoSW5saW5pbmc6IHByZWZldGNoSW5saW5pbmcsXG4gICAgICAgIGhpbnRzOiBoaW50c1xuICAgIH0pLCBjbGllbnRNb2R1bGVzLCB7XG4gICAgICAgIGZpbHRlclN0YWNrRnJhbWUsXG4gICAgICAgIHNpZ25hbDogYWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgb25FcnJvcjogb25TZWdtZW50UHJlcmVuZGVyRXJyb3JcbiAgICB9KTtcbiAgICAvLyBXcml0ZSB0aGUgcm91dGUgdHJlZSB0byBhIHNwZWNpYWwgYC9fdHJlZWAgc2VnbWVudC5cbiAgICBjb25zdCB0cmVlQnVmZmVyID0gYXdhaXQgKDAsIF9ub2Rld2Vic3RyZWFtc2hlbHBlci5zdHJlYW1Ub0J1ZmZlcikodHJlZVN0cmVhbSk7XG4gICAgcmVzdWx0TWFwLnNldCgnL190cmVlJywgdHJlZUJ1ZmZlcik7XG4gICAgLy8gQWxzbyBvdXRwdXQgdGhlIGVudGlyZSBmdWxsIHBhZ2UgZGF0YSByZXNwb25zZVxuICAgIHJlc3VsdE1hcC5zZXQoJy9fZnVsbCcsIGZ1bGxQYWdlRGF0YUJ1ZmZlcik7XG4gICAgLy8gTm93IHRoYXQgd2UndmUgZmluaXNoZWQgcmVuZGVyaW5nIHRoZSByb3V0ZSB0cmVlLCBhbGwgdGhlIHNlZ21lbnQgdGFza3NcbiAgICAvLyBzaG91bGQgaGF2ZSBiZWVuIHNwYXduZWQuIEF3YWl0IHRoZW0gaW4gcGFyYWxsZWwgYW5kIHdyaXRlIHRoZSBzZWdtZW50XG4gICAgLy8gcHJlZmV0Y2hlcyB0byB0aGUgcmVzdWx0IG1hcC5cbiAgICBmb3IgKGNvbnN0IFtzZWdtZW50UGF0aCwgYnVmZmVyXSBvZiAoYXdhaXQgUHJvbWlzZS5hbGwoc2VnbWVudFRhc2tzKSkpe1xuICAgICAgICByZXN1bHRNYXAuc2V0KHNlZ21lbnRQYXRoLCBidWZmZXIpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0TWFwO1xufVxuYXN5bmMgZnVuY3Rpb24gY29sbGVjdFByZWZldGNoSGludHMoZnVsbFBhZ2VEYXRhQnVmZmVyLCBzdGFsZVRpbWUsIGNsaWVudE1vZHVsZXMsIHNlcnZlckNvbnN1bWVyTWFuaWZlc3QsIG1heFNpemUsIG1heEJ1bmRsZVNpemUpIHtcbiAgICAvLyBXYXJtIHVwIHRoZSBtb2R1bGUgY2FjaGUsIHNhbWUgYXMgY29sbGVjdFNlZ21lbnREYXRhLlxuICAgIHRyeSB7XG4gICAgICAgIGF3YWl0ICgwLCBfY2xpZW50LmNyZWF0ZUZyb21SZWFkYWJsZVN0cmVhbSkoKDAsIF9ub2Rld2Vic3RyZWFtc2hlbHBlci5zdHJlYW1Gcm9tQnVmZmVyKShmdWxsUGFnZURhdGFCdWZmZXIpLCB7XG4gICAgICAgICAgICBmaW5kU291cmNlTWFwVVJMLFxuICAgICAgICAgICAgc2VydmVyQ29uc3VtZXJNYW5pZmVzdFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgKDAsIF9zY2hlZHVsZXIud2FpdEF0TGVhc3RPbmVSZWFjdFJlbmRlclRhc2spKCk7XG4gICAgfSBjYXRjaCAge31cbiAgICAvLyBEZWNvZGUgdGhlIEZsaWdodCBkYXRhIHRvIHdhbGsgdGhlIHJvdXRlIHRyZWUuXG4gICAgY29uc3QgaW5pdGlhbFJTQ1BheWxvYWQgPSBhd2FpdCAoMCwgX2NsaWVudC5jcmVhdGVGcm9tUmVhZGFibGVTdHJlYW0pKGNyZWF0ZVVuY2xvc2luZ1ByZWZldGNoU3RyZWFtKCgwLCBfbm9kZXdlYnN0cmVhbXNoZWxwZXIuc3RyZWFtRnJvbUJ1ZmZlcikoZnVsbFBhZ2VEYXRhQnVmZmVyKSksIHtcbiAgICAgICAgZmluZFNvdXJjZU1hcFVSTCxcbiAgICAgICAgc2VydmVyQ29uc3VtZXJNYW5pZmVzdFxuICAgIH0pO1xuICAgIGNvbnN0IGZsaWdodERhdGEgPSBleHRyYWN0RmxpZ2h0RGF0YShpbml0aWFsUlNDUGF5bG9hZCk7XG4gICAgaWYgKGZsaWdodERhdGEgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhpbnRzOiAwLFxuICAgICAgICAgICAgc2xvdHM6IG51bGxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgeyBidWlsZElkLCBmbGlnaHRSb3V0ZXJTdGF0ZSwgc2VlZERhdGEsIGhlYWQgfSA9IGZsaWdodERhdGE7XG4gICAgLy8gTWVhc3VyZSB0aGUgaGVhZCAobWV0YWRhdGEvdmlld3BvcnQpIGd6aXAgc2l6ZSBzbyB0aGUgbWFpbiB0cmF2ZXJzYWxcbiAgICAvLyBjYW4gZGVjaWRlIHdoZXRoZXIgdG8gaW5saW5lIGl0IGludG8gYSBwYWdlJ3MgYnVuZGxlLlxuICAgIGNvbnN0IGhlYWRWYXJ5UGFyYW1zVGhlbmFibGUgPSBpbml0aWFsUlNDUGF5bG9hZC5oO1xuICAgIGNvbnN0IGhlYWRWYXJ5UGFyYW1zID0gaGVhZFZhcnlQYXJhbXNUaGVuYWJsZSAhPT0gbnVsbCA/ICgwLCBfdmFyeXBhcmFtc2RlY29kaW5nLnJlYWRWYXJ5UGFyYW1zKShoZWFkVmFyeVBhcmFtc1RoZW5hYmxlKSA6IG51bGw7XG4gICAgY29uc3QgWywgaGVhZEJ1ZmZlcl0gPSBhd2FpdCByZW5kZXJTZWdtZW50UHJlZmV0Y2goYnVpbGRJZCwgc3RhbGVUaW1lLCBoZWFkLCBfc2VnbWVudHZhbHVlZW5jb2RpbmcuSEVBRF9SRVFVRVNUX0tFWSwgaGVhZFZhcnlQYXJhbXMsIGNsaWVudE1vZHVsZXMpO1xuICAgIGNvbnN0IGhlYWRHemlwU2l6ZSA9IGF3YWl0IGdldEd6aXBTaXplKGhlYWRCdWZmZXIpO1xuICAgIC8vIE11dGFibGUgYWNjdW11bGF0b3I6IHRoZSBmaXJzdCBwYWdlIGxlYWYgdGhhdCBjYW4gZml0IHRoZSBoZWFkIHNldHNcbiAgICAvLyB0aGlzIHRvIHRydWUuIE9uY2Ugc2V0LCBzdWJzZXF1ZW50IGxlYXZlcyBza2lwIHRoZSBjaGVjay5cbiAgICBjb25zdCBoZWFkSW5saW5lU3RhdGUgPSB7XG4gICAgICAgIGlubGluZWQ6IGZhbHNlXG4gICAgfTtcbiAgICAvLyBXYWxrIHRoZSB0cmVlIHdpdGggdGhlIHBhcmVudC1maXJzdCwgY2hpbGQtZGVjaWRlcyBhbGdvcml0aG0uXG4gICAgY29uc3QgeyBub2RlIH0gPSBhd2FpdCBjb2xsZWN0UHJlZmV0Y2hIaW50c0ltcGwoZmxpZ2h0Um91dGVyU3RhdGUsIGJ1aWxkSWQsIHN0YWxlVGltZSwgc2VlZERhdGEsIGNsaWVudE1vZHVsZXMsIF9zZWdtZW50dmFsdWVlbmNvZGluZy5ST09UX1NFR01FTlRfUkVRVUVTVF9LRVksIG51bGwsIG1heFNpemUsIG1heEJ1bmRsZVNpemUsIGhlYWRHemlwU2l6ZSwgaGVhZElubGluZVN0YXRlKTtcbiAgICBpZiAoIWhlYWRJbmxpbmVTdGF0ZS5pbmxpbmVkKSB7XG4gICAgICAgIC8vIE5vIHBhZ2UgY291bGQgYWNjZXB0IHRoZSBoZWFkLiBTZXQgSGVhZE91dGxpbmVkIG9uIHRoZSByb290IHNvIHRoZVxuICAgICAgICAvLyBjbGllbnQga25vd3MgdG8gZmV0Y2ggdGhlIGhlYWQgc2VwYXJhdGVseS5cbiAgICAgICAgbm9kZS5oaW50cyB8PSBfYXBwcm91dGVydHlwZXMuUHJlZmV0Y2hIaW50LkhlYWRPdXRsaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG59XG4vLyBNZWFzdXJlIGEgc2VnbWVudCdzIGd6aXAgc2l6ZSBhbmQgZGVjaWRlIHdoZXRoZXIgaXQgc2hvdWxkIGJlIGlubGluZWQuXG4vL1xuLy8gVGhlc2UgaGludHMgYXJlIGNvbXB1dGVkIG9uY2UgZHVyaW5nIGJ1aWxkIGFuZCBuZXZlciBjaGFuZ2UgZm9yIHRoZVxuLy8gbGlmZXRpbWUgb2YgdGhhdCBkZXBsb3ltZW50LiBUaGUgY2xpZW50IGNhbiBhc3N1bWUgdGhhdCBoaW50cyBkZWxpdmVyZWQgYXNcbi8vIHBhcnQgb2Ygb25lIHJlcXVlc3Qgd2lsbCBiZSB0aGUgc2FtZSBkdXJpbmcgYSBzdWJzZXF1ZW50IHJlcXVlc3QsIGdpdmVuXG4vLyB0aGUgc2FtZSBidWlsZCBJRC4gVGhlcmUncyBubyBza2V3IHRvIHdvcnJ5IGFib3V0IGFzIGxvbmcgYXMgdGhlIGJ1aWxkXG4vLyBpdHNlbGYgaXMgY29uc2lzdGVudC5cbi8vXG4vLyBJbiB0aGUgU2VnbWVudCBDYWNoZSwgd2Ugc3BsaXQgcGFnZSBwcmVmZXRjaGVzIGludG8gbXVsdGlwbGUgcmVxdWVzdHMgc29cbi8vIHRoYXQgZWFjaCBvbmUgY2FuIGJlIGNhY2hlZCBhbmQgZGVkdXBlZCBpbmRlcGVuZGVudGx5LiBIb3dldmVyLCBzb21lXG4vLyBzZWdtZW50cyBhcmUgc21hbGwgZW5vdWdoIHRoYXQgdGhlIHBvdGVudGlhbCBjYWNoaW5nIGJlbmVmaXRzIGFyZSBub3Qgd29ydGhcbi8vIHRoZSBhZGRpdGlvbmFsIG5ldHdvcmsgb3ZlcmhlYWQuIEZvciB0aGVzZSwgd2UgaW5saW5lIGEgcGFyZW50J3MgZGF0YSBpbnRvXG4vLyBvbmUgb2YgaXRzIGNoaWxkcmVuJ3MgcmVzcG9uc2VzLCBhdm9pZGluZyBhIHNlcGFyYXRlIHJlcXVlc3QuIFRoZSBwYXJlbnRcbi8vIGlzIGlubGluZWQgaW50byB0aGUgY2hpbGQgKG5vdCB0aGUgb3RoZXIgd2F5IGFyb3VuZCkgYmVjYXVzZSB0aGUgcGFyZW50J3Ncbi8vIHJlc3BvbnNlIGlzIG1vcmUgbGlrZWx5IHRvIGJlIHNoYXJlZCBhY3Jvc3MgbXVsdGlwbGUgcGFnZXMuIFRoZSBjaGlsZCdzXG4vLyByZXNwb25zZSBpcyBhbHJlYWR5IHBhZ2Utc3BlY2lmaWMsIHNvIGFkZGluZyB0aGUgcGFyZW50J3MgZGF0YSB0aGVyZVxuLy8gZG9lc24ndCBtZWFuaW5nZnVsbHkgcmVkdWNlIGRlZHVwbGljYXRpb24uIEl0J3Mgc2ltaWxhciB0byBob3cgSlMgYnVuZGxlcnNcbi8vIGRlY2lkZSB3aGV0aGVyIHRvIGlubGluZSBhIG1vZHVsZSBpbnRvIGEgY2h1bmsuXG4vL1xuLy8gVGhlIGFsZ29yaXRobSBpcyBwYXJlbnQtZmlyc3QsIGNoaWxkLWRlY2lkZXM6IHRoZSBwYXJlbnQgbWVhc3VyZXMgaXRzZWxmXG4vLyBhbmQgcGFzc2VzIGl0cyBnemlwIHNpemUgZG93bi4gRWFjaCBjaGlsZCBkZWNpZGVzIHdoZXRoZXIgdG8gYWNjZXB0LiBBXG4vLyBjaGlsZCByZWplY3RzIGlmIHRoZSBwYXJlbnQgZXhjZWVkcyBtYXhTaXplIG9yIGlmIGFjY2VwdGluZyB3b3VsZCBwdXNoXG4vLyB0aGUgY3VtdWxhdGl2ZSBpbmxpbmVkIGJ5dGVzIHBhc3QgbWF4QnVuZGxlU2l6ZS4gVGhpcyBwcm9kdWNlc1xuLy8gYm90aCBQYXJlbnRJbmxpbmVkSW50b1NlbGYgKG9uIHRoZSBjaGlsZCkgYW5kIElubGluZWRJbnRvQ2hpbGQgKG9uIHRoZVxuLy8gcGFyZW50KSBpbiBhIHNpbmdsZSBwYXNzLlxuYXN5bmMgZnVuY3Rpb24gY29sbGVjdFByZWZldGNoSGludHNJbXBsKHJvdXRlLCBidWlsZElkLCBzdGFsZVRpbWUsIHNlZWREYXRhLCBjbGllbnRNb2R1bGVzLCAvLyBUT0RPOiBDb25zaWRlciBwZXJzaXN0aW5nIHRoZSBjb21wdXRlZCByZXF1ZXN0S2V5IGludG8gdGhlIGhpbnRzIG91dHB1dFxuLy8gc28gaXQgZG9lc24ndCBuZWVkIHRvIGJlIHJlY29tcHV0ZWQgZHVyaW5nIHRoZSBidWlsZC4gVGhpcyBtaWdodCBhbHNvXG4vLyBzdWdnZXN0IHJlbmFtaW5nIHByZWZldGNoLWhpbnRzLmpzb24gdG8gc29tZXRoaW5nIGxpa2Vcbi8vIHNlZ21lbnQtbWFuaWZlc3QuanNvbiwgc2luY2UgaXQgd291bGQgY29udGFpbiBtb3JlIHRoYW4ganVzdCBoaW50cy5cbnJlcXVlc3RLZXksIHBhcmVudEd6aXBTaXplLCBtYXhTaXplLCBtYXhCdW5kbGVTaXplLCBoZWFkR3ppcFNpemUsIGhlYWRJbmxpbmVTdGF0ZSkge1xuICAgIC8vIFJlbmRlciBjdXJyZW50IHNlZ21lbnQgYW5kIG1lYXN1cmUgaXRzIGd6aXAgc2l6ZS5cbiAgICBsZXQgY3VycmVudEd6aXBTaXplID0gbnVsbDtcbiAgICBpZiAoc2VlZERhdGEgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgdmFyeVBhcmFtc1RoZW5hYmxlID0gc2VlZERhdGFbNF07XG4gICAgICAgIGNvbnN0IHZhcnlQYXJhbXMgPSB2YXJ5UGFyYW1zVGhlbmFibGUgIT09IG51bGwgPyAoMCwgX3ZhcnlwYXJhbXNkZWNvZGluZy5yZWFkVmFyeVBhcmFtcykodmFyeVBhcmFtc1RoZW5hYmxlKSA6IG51bGw7XG4gICAgICAgIGNvbnN0IFssIGJ1ZmZlcl0gPSBhd2FpdCByZW5kZXJTZWdtZW50UHJlZmV0Y2goYnVpbGRJZCwgc3RhbGVUaW1lLCBzZWVkRGF0YVswXSwgcmVxdWVzdEtleSwgdmFyeVBhcmFtcywgY2xpZW50TW9kdWxlcyk7XG4gICAgICAgIGN1cnJlbnRHemlwU2l6ZSA9IGF3YWl0IGdldEd6aXBTaXplKGJ1ZmZlcik7XG4gICAgfVxuICAgIC8vIE9ubHkgb2ZmZXIgdGhpcyBzZWdtZW50IHRvIGl0cyBjaGlsZHJlbiBmb3IgaW5saW5pbmcgaWYgaXRzIGd6aXAgc2l6ZVxuICAgIC8vIGlzIGJlbG93IG1heFNpemUuIFNlZ21lbnRzIGFib3ZlIHRoaXMgZ2V0IHRoZWlyIG93biByZXNwb25zZS5cbiAgICBjb25zdCBzaXplVG9JbmxpbmUgPSBjdXJyZW50R3ppcFNpemUgIT09IG51bGwgJiYgY3VycmVudEd6aXBTaXplIDwgbWF4U2l6ZSA/IGN1cnJlbnRHemlwU2l6ZSA6IG51bGw7XG4gICAgLy8gUHJvY2VzcyBjaGlsZHJlbiBzZXJpYWxseSAobm90IGluIHBhcmFsbGVsKSB0byBlbnN1cmUgZGV0ZXJtaW5pc3RpY1xuICAgIC8vIHJlc3VsdHMuIFNpbmNlIHRoaXMgb25seSBydW5zIGF0IGJ1aWxkIHRpbWUgYW5kIHRoZSByZW5kZXJpbmcgaXMganVzdFxuICAgIC8vIHJlLWVuY29kaW5nIGNhY2hlZCBwcmVyZW5kZXJzLCB0aGlzIHdvbid0IGltcGFjdCBidWlsZCB0aW1lcy4gRWFjaCBjaGlsZFxuICAgIC8vIHJlY2VpdmVzIG91ciBnemlwIHNpemUgYW5kIGRlY2lkZXMgd2hldGhlciB0byBpbmxpbmUgdXMuIE9uY2UgYSBjaGlsZFxuICAgIC8vIGFjY2VwdHMsIHdlIHN0b3Agb2ZmZXJpbmcgdG8gcmVtYWluaW5nIHNpYmxpbmdzIOKAlCB0aGUgcGFyZW50IGlzIG9ubHlcbiAgICAvLyBpbmxpbmVkIGludG8gb25lIGNoaWxkLiBJbiBwYXJhbGxlbCByb3V0ZXMsIHRoaXMgYXZvaWRzIGR1cGxpY2F0aW5nIHRoZVxuICAgIC8vIHBhcmVudCdzIGRhdGEgYWNyb3NzIG11bHRpcGxlIHNpYmxpbmcgcmVzcG9uc2VzLlxuICAgIGNvbnN0IGNoaWxkcmVuID0gcm91dGVbMV07XG4gICAgY29uc3Qgc2VlZERhdGFDaGlsZHJlbiA9IHNlZWREYXRhICE9PSBudWxsID8gc2VlZERhdGFbMV0gOiBudWxsO1xuICAgIGxldCBzbG90cyA9IG51bGw7XG4gICAgbGV0IGRpZElubGluZUludG9DaGlsZCA9IGZhbHNlO1xuICAgIGxldCBhY2NlcHRpbmdDaGlsZElubGluZWRCeXRlcyA9IDA7XG4gICAgLy8gVHJhY2sgdGhlIHNtYWxsZXN0IGlubGluZWRCeXRlcyBhY3Jvc3MgYWxsIGNoaWxkcmVuIHNvIHdlIGtub3cgaG93IG11Y2hcbiAgICAvLyBidWRnZXQgcmVtYWlucyBhbG9uZyB0aGUgYmVzdCBwYXRoLiBXaGVuIG91ciBvd24gcGFyZW50IGFza3Mgd2hldGhlciB3ZVxuICAgIC8vIGNhbiBhY2NlcHQgaXRzIGRhdGEsIHRoZSBwYXJlbnQncyBieXRlcyB3b3VsZCBmbG93IHRocm91Z2ggdG8gdGhlIGNoaWxkXG4gICAgLy8gd2l0aCB0aGUgbW9zdCByZW1haW5pbmcgaGVhZHJvb20uXG4gICAgbGV0IHNtYWxsZXN0Q2hpbGRJbmxpbmVkQnl0ZXMgPSBJbmZpbml0eTtcbiAgICBsZXQgaGFzQ2hpbGRyZW4gPSBmYWxzZTtcbiAgICBmb3IoY29uc3QgcGFyYWxsZWxSb3V0ZUtleSBpbiBjaGlsZHJlbil7XG4gICAgICAgIGhhc0NoaWxkcmVuID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgY2hpbGRSb3V0ZSA9IGNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldO1xuICAgICAgICBjb25zdCBjaGlsZFNlZ21lbnQgPSBjaGlsZFJvdXRlWzBdO1xuICAgICAgICBjb25zdCBjaGlsZFNlZWREYXRhID0gc2VlZERhdGFDaGlsZHJlbiAhPT0gbnVsbCA/IHNlZWREYXRhQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV0gOiBudWxsO1xuICAgICAgICBjb25zdCBjaGlsZFJlcXVlc3RLZXkgPSAoMCwgX3NlZ21lbnR2YWx1ZWVuY29kaW5nLmFwcGVuZFNlZ21lbnRSZXF1ZXN0S2V5UGFydCkocmVxdWVzdEtleSwgcGFyYWxsZWxSb3V0ZUtleSwgKDAsIF9zZWdtZW50dmFsdWVlbmNvZGluZy5jcmVhdGVTZWdtZW50UmVxdWVzdEtleVBhcnQpKGNoaWxkU2VnbWVudCkpO1xuICAgICAgICBjb25zdCBjaGlsZFJlc3VsdCA9IGF3YWl0IGNvbGxlY3RQcmVmZXRjaEhpbnRzSW1wbChjaGlsZFJvdXRlLCBidWlsZElkLCBzdGFsZVRpbWUsIGNoaWxkU2VlZERhdGEsIGNsaWVudE1vZHVsZXMsIGNoaWxkUmVxdWVzdEtleSwgLy8gT25jZSBhIGNoaWxkIGhhcyBhY2NlcHRlZCB1cywgc3RvcCBvZmZlcmluZyB0byByZW1haW5pbmcgc2libGluZ3MuXG4gICAgICAgIGRpZElubGluZUludG9DaGlsZCA/IG51bGwgOiBzaXplVG9JbmxpbmUsIG1heFNpemUsIG1heEJ1bmRsZVNpemUsIGhlYWRHemlwU2l6ZSwgaGVhZElubGluZVN0YXRlKTtcbiAgICAgICAgaWYgKHNsb3RzID09PSBudWxsKSB7XG4gICAgICAgICAgICBzbG90cyA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHNsb3RzW3BhcmFsbGVsUm91dGVLZXldID0gY2hpbGRSZXN1bHQubm9kZTtcbiAgICAgICAgaWYgKGNoaWxkUmVzdWx0Lm5vZGUuaGludHMgJiBfYXBwcm91dGVydHlwZXMuUHJlZmV0Y2hIaW50LlBhcmVudElubGluZWRJbnRvU2VsZikge1xuICAgICAgICAgICAgLy8gVGhpcyBjaGlsZCBhY2NlcHRlZCBvdXIgZGF0YSDigJQgaXQgd2lsbCBpbmNsdWRlIG91ciBzZWdtZW50J3NcbiAgICAgICAgICAgIC8vIHJlc3BvbnNlIGluIGl0cyBvd24uIE5vIG5lZWQgdG8gdHJhY2sgaGVhZHJvb20gYW55bW9yZSBzaW5jZVxuICAgICAgICAgICAgLy8gd2UgYWxyZWFkeSBrbm93IHdoaWNoIGNoaWxkIHdlJ3JlIGlubGluZWQgaW50by5cbiAgICAgICAgICAgIGRpZElubGluZUludG9DaGlsZCA9IHRydWU7XG4gICAgICAgICAgICBhY2NlcHRpbmdDaGlsZElubGluZWRCeXRlcyA9IGNoaWxkUmVzdWx0LmlubGluZWRCeXRlcztcbiAgICAgICAgfSBlbHNlIGlmICghZGlkSW5saW5lSW50b0NoaWxkKSB7XG4gICAgICAgICAgICAvLyBUcmFjayB0aGUgY2hpbGQgd2l0aCB0aGUgbW9zdCByZW1haW5pbmcgaGVhZHJvb20uIFVzZWQgYmVsb3dcbiAgICAgICAgICAgIC8vIHdoZW4gZGVjaWRpbmcgd2hldGhlciB0byBhY2NlcHQgb3VyIG93biBwYXJlbnQncyBkYXRhLlxuICAgICAgICAgICAgaWYgKGNoaWxkUmVzdWx0LmlubGluZWRCeXRlcyA8IHNtYWxsZXN0Q2hpbGRJbmxpbmVkQnl0ZXMpIHtcbiAgICAgICAgICAgICAgICBzbWFsbGVzdENoaWxkSW5saW5lZEJ5dGVzID0gY2hpbGRSZXN1bHQuaW5saW5lZEJ5dGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIExlYWYgc2VnbWVudDogbm8gY2hpbGRyZW4gaGF2ZSBjb25zdW1lZCBhbnkgYnVkZ2V0IHlldC5cbiAgICBpZiAoIWhhc0NoaWxkcmVuKSB7XG4gICAgICAgIHNtYWxsZXN0Q2hpbGRJbmxpbmVkQnl0ZXMgPSAwO1xuICAgIH1cbiAgICAvLyBNYXJrIHRoaXMgc2VnbWVudCBhcyBJbmxpbmVkSW50b0NoaWxkIGlmIG9uZSBvZiBpdHMgY2hpbGRyZW4gYWNjZXB0ZWQuXG4gICAgLy8gVGhpcyBtZWFucyB0aGlzIHNlZ21lbnQgZG9lc24ndCBuZWVkIGl0cyBvd24gcHJlZmV0Y2ggcmVzcG9uc2Ug4oCUIGl0c1xuICAgIC8vIGRhdGEgaXMgaW5jbHVkZWQgaW4gdGhlIGFjY2VwdGluZyBjaGlsZCdzIHJlc3BvbnNlIGluc3RlYWQuXG4gICAgbGV0IGhpbnRzID0gMDtcbiAgICBpZiAoZGlkSW5saW5lSW50b0NoaWxkKSB7XG4gICAgICAgIGhpbnRzIHw9IF9hcHByb3V0ZXJ0eXBlcy5QcmVmZXRjaEhpbnQuSW5saW5lZEludG9DaGlsZDtcbiAgICB9XG4gICAgLy8gaW5saW5lZEJ5dGVzIHJlcHJlc2VudHMgdGhlIHRvdGFsIGd6aXBwZWQgYnl0ZXMgb2YgcGFyZW50IGRhdGEgaW5saW5lZFxuICAgIC8vIGludG8gdGhlIGRlZXBlc3QgXCJpbmxpbmluZyB0YXJnZXRcIiBhbG9uZyB0aGlzIGJyYW5jaC4gSXQgc3RhcnRzIGF0IDAgYXRcbiAgICAvLyB0aGUgbGVhdmVzIGFuZCBncm93cyBhcyBwYXJlbnRzIGFyZSBpbmxpbmVkIGdvaW5nIGJhY2sgdXAgdGhlIHRyZWUuIElmIGFcbiAgICAvLyBjaGlsZCBhY2NlcHRlZCB1cywgb3VyIHNpemUgaXMgYWxyZWFkeSBjb3VudGVkIGluIHRoYXQgY2hpbGQncyB2YWx1ZS5cbiAgICBsZXQgaW5saW5lZEJ5dGVzID0gZGlkSW5saW5lSW50b0NoaWxkID8gYWNjZXB0aW5nQ2hpbGRJbmxpbmVkQnl0ZXMgOiBzbWFsbGVzdENoaWxkSW5saW5lZEJ5dGVzO1xuICAgIC8vIEF0IGxlYWYgbm9kZXMgKHBhZ2VzKSwgdHJ5IHRvIGlubGluZSB0aGUgaGVhZCAobWV0YWRhdGEvdmlld3BvcnQpIGludG9cbiAgICAvLyB0aGlzIHBhZ2UncyByZXNwb25zZS4gVGhlIGhlYWQgaXMgdHJlYXRlZCBsaWtlIGFuIGFkZGl0aW9uYWwgaW5saW5lZFxuICAgIC8vIGVudHJ5IOKAlCBpdCBjb3VudHMgYWdhaW5zdCB0aGUgc2FtZSB0b3RhbCBidWRnZXQuIE9ubHkgdGhlIGZpcnN0IHBhZ2VcbiAgICAvLyB0aGF0IGhhcyByb29tIGdldHMgdGhlIGhlYWQ7IHN1YnNlcXVlbnQgcGFnZXMgc2tpcCB2aWEgdGhlIHNoYXJlZFxuICAgIC8vIGhlYWRJbmxpbmVTdGF0ZSBhY2N1bXVsYXRvci5cbiAgICBpZiAoIWhhc0NoaWxkcmVuICYmICFoZWFkSW5saW5lU3RhdGUuaW5saW5lZCkge1xuICAgICAgICBpZiAoaW5saW5lZEJ5dGVzICsgaGVhZEd6aXBTaXplIDwgbWF4QnVuZGxlU2l6ZSkge1xuICAgICAgICAgICAgaGludHMgfD0gX2FwcHJvdXRlcnR5cGVzLlByZWZldGNoSGludC5IZWFkSW5saW5lZEludG9TZWxmO1xuICAgICAgICAgICAgaW5saW5lZEJ5dGVzICs9IGhlYWRHemlwU2l6ZTtcbiAgICAgICAgICAgIGhlYWRJbmxpbmVTdGF0ZS5pbmxpbmVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBEZWNpZGUgd2hldGhlciB0byBhY2NlcHQgb3VyIG93biBwYXJlbnQncyBkYXRhLiBUd28gY29uZGl0aW9uczpcbiAgICAvL1xuICAgIC8vIDEuIFRoZSBwYXJlbnQgb2ZmZXJlZCB1cyBhIHNpemUgKHBhcmVudEd6aXBTaXplIGlzIG5vdCBudWxsKS4gSXQncyBudWxsXG4gICAgLy8gICAgd2hlbiB0aGUgcGFyZW50IGlzIHRvbyBsYXJnZSB0byBpbmxpbmUgb3Igd2hlbiB0aGlzIGlzIHRoZSByb290LlxuICAgIC8vXG4gICAgLy8gMi4gVGhlIHRvdGFsIGlubGluZWQgYnl0ZXMgYWxvbmcgdGhpcyBicmFuY2ggd291bGRuJ3QgZXhjZWVkIHRoZSBidWRnZXQuXG4gICAgLy8gICAgRXZlbiBpZiBlYWNoIHNlZ21lbnQgaXMgaW5kaXZpZHVhbGx5IHNtYWxsLCBhdCBzb21lIHBvaW50IGl0IG5vXG4gICAgLy8gICAgbG9uZ2VyIG1ha2VzIHNlbnNlIHRvIGtlZXAgYWRkaW5nIGJ5dGVzIGJlY2F1c2UgdGhlIGNvbWJpbmVkIHJlc3BvbnNlXG4gICAgLy8gICAgaXMgdW5pcXVlIHBlciBVUkwgYW5kIGNhbid0IGJlIGRlZHVwZWQuXG4gICAgLy9cbiAgICAvLyBBIG5vZGUgY2FuIGJlIGJvdGggSW5saW5lZEludG9DaGlsZCBhbmQgUGFyZW50SW5saW5lZEludG9TZWxmLiBUaGlzXG4gICAgLy8gaGFwcGVucyBpbiBtdWx0aS1sZXZlbCBjaGFpbnM6IEdQIOKGkiBQIOKGkiBDIHdoZXJlIGFsbCBhcmUgc21hbGwuIENcbiAgICAvLyBhY2NlcHRzIFAgKFAgaXMgSW5saW5lZEludG9DaGlsZCksIHRoZW4gUCBhbHNvIGFjY2VwdHMgR1AgKFAgaXNcbiAgICAvLyBQYXJlbnRJbmxpbmVkSW50b1NlbGYpLiBUaGUgcmVzdWx0OiBDJ3MgcmVzcG9uc2UgaW5jbHVkZXMgYm90aCBQJ3NcbiAgICAvLyBhbmQgR1AncyBkYXRhLiBUaGUgcGFyZW50J3MgZGF0YSBmbG93cyB0aHJvdWdoIHRvIHRoZSBkZWVwZXN0XG4gICAgLy8gYWNjZXB0aW5nIGRlc2NlbmRhbnQuXG4gICAgaWYgKHBhcmVudEd6aXBTaXplICE9PSBudWxsKSB7XG4gICAgICAgIGlmIChpbmxpbmVkQnl0ZXMgKyBwYXJlbnRHemlwU2l6ZSA8IG1heEJ1bmRsZVNpemUpIHtcbiAgICAgICAgICAgIGhpbnRzIHw9IF9hcHByb3V0ZXJ0eXBlcy5QcmVmZXRjaEhpbnQuUGFyZW50SW5saW5lZEludG9TZWxmO1xuICAgICAgICAgICAgaW5saW5lZEJ5dGVzICs9IHBhcmVudEd6aXBTaXplO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIG5vZGU6IHtcbiAgICAgICAgICAgIGhpbnRzLFxuICAgICAgICAgICAgc2xvdHNcbiAgICAgICAgfSxcbiAgICAgICAgaW5saW5lZEJ5dGVzXG4gICAgfTtcbn1cbi8vIFdlIHVzZSBnemlwIHNpemUgcmF0aGVyIHRoYW4gcmF3IHNpemUgYmVjYXVzZSBpdCBiZXR0ZXIgcmVmbGVjdHMgdGhlIGFjdHVhbFxuLy8gdHJhbnNmZXIgY29zdC4gVGhlIGlubGluaW5nIHRyYWRlLW9mZiBpcyBhYm91dCB3aGV0aGVyIHRoZSBvdmVyaGVhZCBvZiBhblxuLy8gYWRkaXRpb25hbCBIVFRQIHJlcXVlc3QgKGNvbm5lY3Rpb24gc2V0dXAsIGhlYWRlcnMsIHJvdW5kIHRyaXApIGlzIHdvcnRoXG4vLyB0aGUgZGVkdXBsaWNhdGlvbiBiZW5lZml0IG9mIGtlZXBpbmcgYSBzZWdtZW50IHNlcGFyYXRlLiBCZWxvdyBzb21lXG4vLyBjb21wcmVzc2VkIHNpemUsIHRoZSByZXF1ZXN0IG92ZXJoZWFkIGRvbWluYXRlcyBhbmQgaW5saW5pbmcgaXMgYmV0dGVyLlxuLy8gQWJvdmUgaXQsIHRoZSBkZWR1cGxpY2F0aW9uIGJlbmVmaXQgb2YgYSBjYWNoZWFibGUgc3RhbmRhbG9uZSByZXNwb25zZVxuLy8gd2lucyBvdXQuXG5hc3luYyBmdW5jdGlvbiBnZXRHemlwU2l6ZShidWZmZXIpIHtcbiAgICBjb25zdCBzdHJlYW0gPSBuZXcgQmxvYihbXG4gICAgICAgIG5ldyBVaW50OEFycmF5KGJ1ZmZlcilcbiAgICBdKS5zdHJlYW0oKS5waXBlVGhyb3VnaChuZXcgQ29tcHJlc3Npb25TdHJlYW0oJ2d6aXAnKSk7XG4gICAgY29uc3QgY29tcHJlc3NlZEJsb2IgPSBhd2FpdCBuZXcgUmVzcG9uc2Uoc3RyZWFtKS5ibG9iKCk7XG4gICAgcmV0dXJuIGNvbXByZXNzZWRCbG9iLnNpemU7XG59XG5hc3luYyBmdW5jdGlvbiBQcmVmZXRjaFRyZWVEYXRhKHsgaXNDbGllbnRQYXJhbVBhcnNpbmdFbmFibGVkLCBmdWxsUGFnZURhdGFCdWZmZXIsIHNlcnZlckNvbnN1bWVyTWFuaWZlc3QsIGNsaWVudE1vZHVsZXMsIHN0YWxlVGltZSwgc2VnbWVudFRhc2tzLCBvbkNvbXBsZXRlZFByb2Nlc3NpbmdSb3V0ZVRyZWUsIHByZWZldGNoSW5saW5pbmcsIGhpbnRzIH0pIHtcbiAgICAvLyBXZSdyZSBjdXJyZW50bHkgcmVuZGVyaW5nIGEgRmxpZ2h0IHJlc3BvbnNlIGZvciB0aGUgcm91dGUgdHJlZSBwcmVmZXRjaC5cbiAgICAvLyBJbnNpZGUgdGhpcyBjb21wb25lbnQsIGRlY29kZSB0aGUgRmxpZ2h0IHN0cmVhbSBmb3IgdGhlIHdob2xlIHBhZ2UuIFRoaXMgaXNcbiAgICAvLyBhIGhhY2sgdG8gdHJhbnNmZXIgdGhlIHNpZGUgZWZmZWN0cyBmcm9tIHRoZSBvcmlnaW5hbCBGbGlnaHQgc3RyZWFtIChlLmcuXG4gICAgLy8gRmxvYXQgcHJlbG9hZHMpIG9udG8gdGhlIEZsaWdodCBzdHJlYW0gZm9yIHRoZSB0cmVlIHByZWZldGNoLlxuICAgIC8vIFRPRE86IFJlYWN0IG5lZWRzIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzLiBOZWVkZWQgZm9yIFNlcnZlciBBY3Rpb25zLCB0b28uXG4gICAgY29uc3QgaW5pdGlhbFJTQ1BheWxvYWQgPSBhd2FpdCAoMCwgX2NsaWVudC5jcmVhdGVGcm9tUmVhZGFibGVTdHJlYW0pKGNyZWF0ZVVuY2xvc2luZ1ByZWZldGNoU3RyZWFtKCgwLCBfbm9kZXdlYnN0cmVhbXNoZWxwZXIuc3RyZWFtRnJvbUJ1ZmZlcikoZnVsbFBhZ2VEYXRhQnVmZmVyKSksIHtcbiAgICAgICAgZmluZFNvdXJjZU1hcFVSTCxcbiAgICAgICAgc2VydmVyQ29uc3VtZXJNYW5pZmVzdFxuICAgIH0pO1xuICAgIGNvbnN0IGZsaWdodERhdGEgPSBleHRyYWN0RmxpZ2h0RGF0YShpbml0aWFsUlNDUGF5bG9hZCk7XG4gICAgaWYgKGZsaWdodERhdGEgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHsgYnVpbGRJZCwgZmxpZ2h0Um91dGVyU3RhdGUsIHNlZWREYXRhLCBoZWFkIH0gPSBmbGlnaHREYXRhO1xuICAgIC8vIEV4dHJhY3QgdGhlIGhlYWQgdmFyeSBwYXJhbXMgZnJvbSB0aGUgZGVjb2RlZCByZXNwb25zZS5cbiAgICAvLyBUaGUgaGVhZCB2YXJ5IHBhcmFtcyB0aGVuYWJsZSBzaG91bGQgYmUgZnVsZmlsbGVkIGJ5IG5vdzsgaWYgbm90LCB0cmVhdFxuICAgIC8vIGFzIHVua25vd24gKG51bGwpLlxuICAgIGNvbnN0IGhlYWRWYXJ5UGFyYW1zVGhlbmFibGUgPSBpbml0aWFsUlNDUGF5bG9hZC5oO1xuICAgIGNvbnN0IGhlYWRWYXJ5UGFyYW1zID0gaGVhZFZhcnlQYXJhbXNUaGVuYWJsZSAhPT0gbnVsbCA/ICgwLCBfdmFyeXBhcmFtc2RlY29kaW5nLnJlYWRWYXJ5UGFyYW1zKShoZWFkVmFyeVBhcmFtc1RoZW5hYmxlKSA6IG51bGw7XG4gICAgLy8gQ29tcHV0ZSB0aGUgcm91dGUgbWV0YWRhdGEgdHJlZSBieSB0cmF2ZXJzaW5nIHRoZSBGbGlnaHRSb3V0ZXJTdGF0ZS4gQXMgd2VcbiAgICAvLyB3YWxrIHRoZSB0cmVlLCB3ZSB3aWxsIGFsc28gc3Bhd24gYSB0YXNrIHRvIHByb2R1Y2UgYSBwcmVmZXRjaCByZXNwb25zZSBmb3JcbiAgICAvLyBlYWNoIHNlZ21lbnQgKHVubGVzcyBwcmVmZXRjaCBpbmxpbmluZyBpcyBlbmFibGVkLCBpbiB3aGljaCBjYXNlIGFsbFxuICAgIC8vIHNlZ21lbnRzIGFyZSBidW5kbGVkIGludG8gYSBzaW5nbGUgL19pbmxpbmVkIHJlc3BvbnNlKS5cbiAgICBjb25zdCB0cmVlID0gY29sbGVjdFNlZ21lbnREYXRhSW1wbChpc0NsaWVudFBhcmFtUGFyc2luZ0VuYWJsZWQsIGZsaWdodFJvdXRlclN0YXRlLCBidWlsZElkLCBzdGFsZVRpbWUsIHNlZWREYXRhLCBjbGllbnRNb2R1bGVzLCBfc2VnbWVudHZhbHVlZW5jb2RpbmcuUk9PVF9TRUdNRU5UX1JFUVVFU1RfS0VZLCBzZWdtZW50VGFza3MsIHByZWZldGNoSW5saW5pbmcsIGhpbnRzKTtcbiAgICBpZiAocHJlZmV0Y2hJbmxpbmluZykge1xuICAgICAgICAvLyBXaGVuIHByZWZldGNoIGlubGluaW5nIGlzIGVuYWJsZWQsIGJ1bmRsZSBhbGwgc2VnbWVudCBkYXRhIGludG8gYSBzaW5nbGVcbiAgICAgICAgLy8gL19pbmxpbmVkIHJlc3BvbnNlIGluc3RlYWQgb2YgaW5kaXZpZHVhbCBwZXItc2VnbWVudCByZXNwb25zZXMuIFRoZSBoZWFkXG4gICAgICAgIC8vIGlzIGFsc28gaW5jbHVkZWQgaW4gdGhlIGlubGluZWQgcmVzcG9uc2UuXG4gICAgICAgIHNlZ21lbnRUYXNrcy5wdXNoKCgwLCBfc2NoZWR1bGVyLndhaXRBdExlYXN0T25lUmVhY3RSZW5kZXJUYXNrKSgpLnRoZW4oKCk9PnJlbmRlcklubGluZWRQcmVmZXRjaFJlc3BvbnNlKGZsaWdodFJvdXRlclN0YXRlLCBidWlsZElkLCBzdGFsZVRpbWUsIHNlZWREYXRhLCBoZWFkLCBoZWFkVmFyeVBhcmFtcywgY2xpZW50TW9kdWxlcykpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBbHNvIHNwYXduIGEgdGFzayB0byBwcm9kdWNlIGEgcHJlZmV0Y2ggcmVzcG9uc2UgZm9yIHRoZSBcImhlYWRcIiBzZWdtZW50LlxuICAgICAgICAvLyBUaGUgaGVhZCBjb250YWlucyBtZXRhZGF0YSwgbGlrZSB0aGUgdGl0bGU7IGl0J3Mgbm90IHJlYWxseSBhIHJvdXRlXG4gICAgICAgIC8vIHNlZ21lbnQsIGJ1dCBpdCBjb250YWlucyBSU0MgZGF0YSwgc28gaXQncyB0cmVhdGVkIGxpa2UgYSBzZWdtZW50IGJ5XG4gICAgICAgIC8vIHRoZSBjbGllbnQgY2FjaGUuXG4gICAgICAgIHNlZ21lbnRUYXNrcy5wdXNoKCgwLCBfc2NoZWR1bGVyLndhaXRBdExlYXN0T25lUmVhY3RSZW5kZXJUYXNrKSgpLnRoZW4oKCk9PnJlbmRlclNlZ21lbnRQcmVmZXRjaChidWlsZElkLCBzdGFsZVRpbWUsIGhlYWQsIF9zZWdtZW50dmFsdWVlbmNvZGluZy5IRUFEX1JFUVVFU1RfS0VZLCBoZWFkVmFyeVBhcmFtcywgY2xpZW50TW9kdWxlcykpKTtcbiAgICB9XG4gICAgLy8gTm90aWZ5IHRoZSBhYm9ydCBjb250cm9sbGVyIHRoYXQgd2UncmUgZG9uZSBwcm9jZXNzaW5nIHRoZSByb3V0ZSB0cmVlLlxuICAgIC8vIEFueXRoaW5nIGFzeW5jIHRoYXQgaGFwcGVucyBhZnRlciB0aGlzIHBvaW50IG11c3QgYmUgZHVlIHRvIGhhbmdpbmdcbiAgICAvLyBwcm9taXNlcyBpbiB0aGUgb3JpZ2luYWwgc3RyZWFtLlxuICAgIG9uQ29tcGxldGVkUHJvY2Vzc2luZ1JvdXRlVHJlZSgpO1xuICAgIC8vIFJlbmRlciB0aGUgcm91dGUgdHJlZSB0byBhIHNwZWNpYWwgYC9fdHJlZWAgc2VnbWVudC5cbiAgICBjb25zdCB0cmVlUHJlZmV0Y2ggPSB7XG4gICAgICAgIHRyZWUsXG4gICAgICAgIHN0YWxlVGltZVxuICAgIH07XG4gICAgaWYgKGJ1aWxkSWQpIHtcbiAgICAgICAgdHJlZVByZWZldGNoLmJ1aWxkSWQgPSBidWlsZElkO1xuICAgIH1cbiAgICByZXR1cm4gdHJlZVByZWZldGNoO1xufVxuZnVuY3Rpb24gY29sbGVjdFNlZ21lbnREYXRhSW1wbChpc0NsaWVudFBhcmFtUGFyc2luZ0VuYWJsZWQsIHJvdXRlLCBidWlsZElkLCBzdGFsZVRpbWUsIHNlZWREYXRhLCBjbGllbnRNb2R1bGVzLCByZXF1ZXN0S2V5LCBzZWdtZW50VGFza3MsIHByZWZldGNoSW5saW5pbmcsIGhpbnRUcmVlKSB7XG4gICAgLy8gTWV0YWRhdGEgYWJvdXQgdGhlIHNlZ21lbnQuIFNlbnQgYXMgcGFydCBvZiB0aGUgdHJlZSBwcmVmZXRjaC4gTnVsbCBpZlxuICAgIC8vIHRoZXJlIGFyZSBubyBjaGlsZHJlbi5cbiAgICBsZXQgc2xvdE1ldGFkYXRhID0gbnVsbDtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHJvdXRlWzFdO1xuICAgIGNvbnN0IHNlZWREYXRhQ2hpbGRyZW4gPSBzZWVkRGF0YSAhPT0gbnVsbCA/IHNlZWREYXRhWzFdIDogbnVsbDtcbiAgICBmb3IoY29uc3QgcGFyYWxsZWxSb3V0ZUtleSBpbiBjaGlsZHJlbil7XG4gICAgICAgIGNvbnN0IGNoaWxkUm91dGUgPSBjaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XTtcbiAgICAgICAgY29uc3QgY2hpbGRTZWdtZW50ID0gY2hpbGRSb3V0ZVswXTtcbiAgICAgICAgY29uc3QgY2hpbGRTZWVkRGF0YSA9IHNlZWREYXRhQ2hpbGRyZW4gIT09IG51bGwgPyBzZWVkRGF0YUNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldIDogbnVsbDtcbiAgICAgICAgY29uc3QgY2hpbGRSZXF1ZXN0S2V5ID0gKDAsIF9zZWdtZW50dmFsdWVlbmNvZGluZy5hcHBlbmRTZWdtZW50UmVxdWVzdEtleVBhcnQpKHJlcXVlc3RLZXksIHBhcmFsbGVsUm91dGVLZXksICgwLCBfc2VnbWVudHZhbHVlZW5jb2RpbmcuY3JlYXRlU2VnbWVudFJlcXVlc3RLZXlQYXJ0KShjaGlsZFNlZ21lbnQpKTtcbiAgICAgICAgY29uc3QgY2hpbGRIaW50VHJlZSA9IGhpbnRUcmVlICE9PSBudWxsICYmIGhpbnRUcmVlLnNsb3RzICE9PSBudWxsID8gaGludFRyZWUuc2xvdHNbcGFyYWxsZWxSb3V0ZUtleV0gPz8gbnVsbCA6IG51bGw7XG4gICAgICAgIGNvbnN0IGNoaWxkVHJlZSA9IGNvbGxlY3RTZWdtZW50RGF0YUltcGwoaXNDbGllbnRQYXJhbVBhcnNpbmdFbmFibGVkLCBjaGlsZFJvdXRlLCBidWlsZElkLCBzdGFsZVRpbWUsIGNoaWxkU2VlZERhdGEsIGNsaWVudE1vZHVsZXMsIGNoaWxkUmVxdWVzdEtleSwgc2VnbWVudFRhc2tzLCBwcmVmZXRjaElubGluaW5nLCBjaGlsZEhpbnRUcmVlKTtcbiAgICAgICAgaWYgKHNsb3RNZXRhZGF0YSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgc2xvdE1ldGFkYXRhID0ge307XG4gICAgICAgIH1cbiAgICAgICAgc2xvdE1ldGFkYXRhW3BhcmFsbGVsUm91dGVLZXldID0gY2hpbGRUcmVlO1xuICAgIH1cbiAgICAvLyBVbmlvbiB0aGUgaGludHMgYWxyZWFkeSBlbWJlZGRlZCBpbiB0aGUgRmxpZ2h0Um91dGVyU3RhdGUgd2l0aCB0aGVcbiAgICAvLyBzZXBhcmF0ZWx5LWNvbXB1dGVkIGJ1aWxkLXRpbWUgaGludHMuIER1cmluZyB0aGUgaW5pdGlhbCBidWlsZCwgdGhlXG4gICAgLy8gRmxpZ2h0Um91dGVyU3RhdGUgd2FzIHByb2R1Y2VkIGJlZm9yZSBjb2xsZWN0UHJlZmV0Y2hIaW50cyByYW4sIHNvXG4gICAgLy8gaW5saW5pbmcgaGludHMgKFBhcmVudElubGluZWRJbnRvU2VsZiwgSW5saW5lZEludG9DaGlsZCkgd29uJ3QgYmUgaW5cbiAgICAvLyByb3V0ZVs0XSB5ZXQuIE9uIHN1YnNlcXVlbnQgcmVuZGVycyB0aGUgaGludHMgYXJlIGFscmVhZHkgaW4gdGhlXG4gICAgLy8gRmxpZ2h0Um91dGVyU3RhdGUsIHNvIHRoZSB1bmlvbiBpcyBpZGVtcG90ZW50LlxuICAgIGNvbnN0IHByZWZldGNoSGludHMgPSAocm91dGVbNF0gPz8gMCkgfCAoaGludFRyZWUgIT09IG51bGwgPyBoaW50VHJlZS5oaW50cyA6IDApO1xuICAgIC8vIERldGVybWluZSB3aGljaCBwYXJhbXMgdGhpcyBzZWdtZW50IHZhcmllcyBvbi5cbiAgICAvLyBSZWFkIHRoZSB2YXJ5IHBhcmFtcyB0aGVuYWJsZSBkaXJlY3RseSBmcm9tIHRoZSBzZWVkIGRhdGEuIEJ5IHRoZSB0aW1lXG4gICAgLy8gY29sbGVjdFNlZ21lbnREYXRhIHJ1bnMsIHRoZSB0aGVuYWJsZSBzaG91bGQgYmUgZnVsZmlsbGVkLiBJZiBpdCdzIG5vdFxuICAgIC8vIGZ1bGZpbGxlZCBvciBudWxsLCB0cmVhdCBhcyB1bmtub3duIChudWxsIG1lYW5zIHdlIGNhbid0IHNoYXJlIGNhY2hlXG4gICAgLy8gZW50cmllcyBhY3Jvc3MgcGFyYW0gdmFsdWVzKS5cbiAgICBjb25zdCB2YXJ5UGFyYW1zVGhlbmFibGUgPSBzZWVkRGF0YSAhPT0gbnVsbCA/IHNlZWREYXRhWzRdIDogbnVsbDtcbiAgICBjb25zdCB2YXJ5UGFyYW1zID0gdmFyeVBhcmFtc1RoZW5hYmxlICE9PSBudWxsID8gKDAsIF92YXJ5cGFyYW1zZGVjb2RpbmcucmVhZFZhcnlQYXJhbXMpKHZhcnlQYXJhbXNUaGVuYWJsZSkgOiBudWxsO1xuICAgIGlmICghcHJlZmV0Y2hJbmxpbmluZykge1xuICAgICAgICAvLyBXaGVuIHByZWZldGNoIGlubGluaW5nIGlzIGRpc2FibGVkLCBzcGF3biBpbmRpdmlkdWFsIHNlZ21lbnQgdGFza3MuXG4gICAgICAgIC8vIFdoZW4gZW5hYmxlZCwgc2VnbWVudCBkYXRhIGlzIGJ1bmRsZWQgaW50byB0aGUgL19pbmxpbmVkIHJlc3BvbnNlXG4gICAgICAgIC8vIGluc3RlYWQsIHNvIHdlIHNraXAgcGVyLXNlZ21lbnQgdGFza3MgaGVyZS5cbiAgICAgICAgaWYgKHNlZWREYXRhICE9PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBTcGF3biBhIHRhc2sgdG8gd3JpdGUgdGhlIHNlZ21lbnQgZGF0YSB0byBhIG5ldyBGbGlnaHQgc3RyZWFtLlxuICAgICAgICAgICAgc2VnbWVudFRhc2tzLnB1c2goLy8gU2luY2Ugd2UncmUgYWxyZWFkeSBpbiB0aGUgbWlkZGxlIG9mIGEgcmVuZGVyLCB3YWl0IHVudGlsIGFmdGVyIHRoZVxuICAgICAgICAgICAgLy8gY3VycmVudCB0YXNrIHRvIGVzY2FwZSB0aGUgY3VycmVudCByZW5kZXJpbmcgY29udGV4dC5cbiAgICAgICAgICAgICgwLCBfc2NoZWR1bGVyLndhaXRBdExlYXN0T25lUmVhY3RSZW5kZXJUYXNrKSgpLnRoZW4oKCk9PnJlbmRlclNlZ21lbnRQcmVmZXRjaChidWlsZElkLCBzdGFsZVRpbWUsIHNlZWREYXRhWzBdLCByZXF1ZXN0S2V5LCB2YXJ5UGFyYW1zLCBjbGllbnRNb2R1bGVzKSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBUaGlzIHNlZ21lbnQgZG9lcyBub3QgaGF2ZSBhbnkgc2VlZCBkYXRhLiBTa2lwIGdlbmVyYXRpbmcgYSBwcmVmZXRjaFxuICAgICAgICAvLyByZXNwb25zZSBmb3IgaXQuIFdlJ2xsIHN0aWxsIGluY2x1ZGUgaXQgaW4gdGhlIHJvdXRlIHRyZWUsIHRob3VnaC5cbiAgICAgICAgLy8gVE9ETzogV2Ugc2hvdWxkIGVuY29kZSBpbiB0aGUgcm91dGUgdHJlZSB3aGV0aGVyIGEgc2VnbWVudCBpcyBtaXNzaW5nXG4gICAgICAgIC8vIHNvIHdlIGRvbid0IGF0dGVtcHQgdG8gZmV0Y2ggaXQgZm9yIG5vIHJlYXNvbi4gQXMgb2Ygbm93IHRoaXMgc2hvdWxkbid0XG4gICAgICAgIC8vIGV2ZXIgaGFwcGVuIGluIHByYWN0aWNlLCB0aG91Z2guXG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgc2VnbWVudCA9IHJvdXRlWzBdO1xuICAgIGxldCBuYW1lO1xuICAgIGxldCBwYXJhbTtcbiAgICBpZiAodHlwZW9mIHNlZ21lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG5hbWUgPSBzZWdtZW50O1xuICAgICAgICBwYXJhbSA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmFtZSA9IHNlZ21lbnRbMF07XG4gICAgICAgIHBhcmFtID0ge1xuICAgICAgICAgICAgdHlwZTogc2VnbWVudFsyXSxcbiAgICAgICAgICAgIC8vIFRoaXMgdmFsdWUgaXMgb21pdHRlZCBmcm9tIHRoZSBwcmVmZXRjaCByZXNwb25zZSB3aGVuIGNhY2hlQ29tcG9uZW50c1xuICAgICAgICAgICAgLy8gaXMgZW5hYmxlZC5cbiAgICAgICAgICAgIGtleTogaXNDbGllbnRQYXJhbVBhcnNpbmdFbmFibGVkID8gbnVsbCA6IHNlZ21lbnRbMV0sXG4gICAgICAgICAgICBzaWJsaW5nczogc2VnbWVudFszXVxuICAgICAgICB9O1xuICAgIH1cbiAgICAvLyBNZXRhZGF0YSBhYm91dCB0aGUgc2VnbWVudC4gU2VudCB0byB0aGUgY2xpZW50IGFzIHBhcnQgb2YgdGhlXG4gICAgLy8gdHJlZSBwcmVmZXRjaC5cbiAgICByZXR1cm4ge1xuICAgICAgICBuYW1lLFxuICAgICAgICBwYXJhbSxcbiAgICAgICAgcHJlZmV0Y2hIaW50cyxcbiAgICAgICAgc2xvdHM6IHNsb3RNZXRhZGF0YVxuICAgIH07XG59XG5hc3luYyBmdW5jdGlvbiByZW5kZXJTZWdtZW50UHJlZmV0Y2goYnVpbGRJZCwgc3RhbGVUaW1lLCByc2MsIHJlcXVlc3RLZXksIHZhcnlQYXJhbXMsIGNsaWVudE1vZHVsZXMpIHtcbiAgICAvLyBSZW5kZXIgdGhlIHNlZ21lbnQgZGF0YSB0byBhIHN0cmVhbS5cbiAgICBjb25zdCBzZWdtZW50UHJlZmV0Y2ggPSB7XG4gICAgICAgIHJzYyxcbiAgICAgICAgaXNQYXJ0aWFsOiBhd2FpdCBpc1BhcnRpYWxSU0NEYXRhKHJzYywgY2xpZW50TW9kdWxlcyksXG4gICAgICAgIHN0YWxlVGltZSxcbiAgICAgICAgdmFyeVBhcmFtc1xuICAgIH07XG4gICAgaWYgKGJ1aWxkSWQpIHtcbiAgICAgICAgc2VnbWVudFByZWZldGNoLmJ1aWxkSWQgPSBidWlsZElkO1xuICAgIH1cbiAgICAvLyBTaW5jZSBhbGwgd2UncmUgZG9pbmcgaXMgZGVjb2RpbmcgYW5kIHJlLWVuY29kaW5nIGEgY2FjaGVkIHByZXJlbmRlciwgaWZcbiAgICAvLyBpdCB0YWtlcyBsb25nZXIgdGhhbiBhIG1pY3JvdGFzaywgaXQgbXVzdCBiZWNhdXNlIG9mIGhhbmdpbmcgcHJvbWlzZXNcbiAgICAvLyBjYXVzZWQgYnkgZHluYW1pYyBkYXRhLiBBYm9ydCB0aGUgc3RyZWFtIGF0IHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgdGFzay5cbiAgICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgKDAsIF9zY2hlZHVsZXIud2FpdEF0TGVhc3RPbmVSZWFjdFJlbmRlclRhc2spKCkudGhlbigoKT0+YWJvcnRDb250cm9sbGVyLmFib3J0KCkpO1xuICAgIGNvbnN0IHsgcHJlbHVkZTogc2VnbWVudFN0cmVhbSB9ID0gYXdhaXQgKDAsIF9zdGF0aWMucHJlcmVuZGVyKShzZWdtZW50UHJlZmV0Y2gsIGNsaWVudE1vZHVsZXMsIHtcbiAgICAgICAgZmlsdGVyU3RhY2tGcmFtZSxcbiAgICAgICAgc2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICBvbkVycm9yOiBvblNlZ21lbnRQcmVyZW5kZXJFcnJvclxuICAgIH0pO1xuICAgIGNvbnN0IHNlZ21lbnRCdWZmZXIgPSBhd2FpdCAoMCwgX25vZGV3ZWJzdHJlYW1zaGVscGVyLnN0cmVhbVRvQnVmZmVyKShzZWdtZW50U3RyZWFtKTtcbiAgICBpZiAocmVxdWVzdEtleSA9PT0gX3NlZ21lbnR2YWx1ZWVuY29kaW5nLlJPT1RfU0VHTUVOVF9SRVFVRVNUX0tFWSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgJy9faW5kZXgnLFxuICAgICAgICAgICAgc2VnbWVudEJ1ZmZlclxuICAgICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICByZXF1ZXN0S2V5LFxuICAgICAgICAgICAgc2VnbWVudEJ1ZmZlclxuICAgICAgICBdO1xuICAgIH1cbn1cbmFzeW5jIGZ1bmN0aW9uIHJlbmRlcklubGluZWRQcmVmZXRjaFJlc3BvbnNlKHJvdXRlLCBidWlsZElkLCBzdGFsZVRpbWUsIHNlZWREYXRhLCBoZWFkLCBoZWFkVmFyeVBhcmFtcywgY2xpZW50TW9kdWxlcykge1xuICAgIC8vIEJ1aWxkIHRoZSBpbmxpbmVkIHRyZWUgYnkgd2Fsa2luZyB0aGUgcm91dGUgYW5kIGNvbGxlY3RpbmcgYWxsIHNlZ21lbnRzLlxuICAgIGNvbnN0IGlubGluZWRUcmVlID0gYXdhaXQgYnVpbGRJbmxpbmVkU2VnbWVudFByZWZldGNoKHJvdXRlLCBidWlsZElkLCBzdGFsZVRpbWUsIHNlZWREYXRhLCBjbGllbnRNb2R1bGVzKTtcbiAgICAvLyBCdWlsZCB0aGUgaGVhZCBzZWdtZW50LlxuICAgIGNvbnN0IGhlYWRQcmVmZXRjaCA9IHtcbiAgICAgICAgcnNjOiBoZWFkLFxuICAgICAgICBpc1BhcnRpYWw6IGF3YWl0IGlzUGFydGlhbFJTQ0RhdGEoaGVhZCwgY2xpZW50TW9kdWxlcyksXG4gICAgICAgIHN0YWxlVGltZSxcbiAgICAgICAgdmFyeVBhcmFtczogaGVhZFZhcnlQYXJhbXNcbiAgICB9O1xuICAgIGlmIChidWlsZElkKSB7XG4gICAgICAgIGhlYWRQcmVmZXRjaC5idWlsZElkID0gYnVpbGRJZDtcbiAgICB9XG4gICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICAgIHRyZWU6IGlubGluZWRUcmVlLFxuICAgICAgICBoZWFkOiBoZWFkUHJlZmV0Y2hcbiAgICB9O1xuICAgIC8vIFJlbmRlciBhcyBhIHNpbmdsZSBGbGlnaHQgcmVzcG9uc2UuXG4gICAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICgwLCBfc2NoZWR1bGVyLndhaXRBdExlYXN0T25lUmVhY3RSZW5kZXJUYXNrKSgpLnRoZW4oKCk9PmFib3J0Q29udHJvbGxlci5hYm9ydCgpKTtcbiAgICBjb25zdCB7IHByZWx1ZGUgfSA9IGF3YWl0ICgwLCBfc3RhdGljLnByZXJlbmRlcikocmVzcG9uc2UsIGNsaWVudE1vZHVsZXMsIHtcbiAgICAgICAgZmlsdGVyU3RhY2tGcmFtZSxcbiAgICAgICAgc2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICBvbkVycm9yOiBvblNlZ21lbnRQcmVyZW5kZXJFcnJvclxuICAgIH0pO1xuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0ICgwLCBfbm9kZXdlYnN0cmVhbXNoZWxwZXIuc3RyZWFtVG9CdWZmZXIpKHByZWx1ZGUpO1xuICAgIHJldHVybiBbXG4gICAgICAgICcvJyArIF9zZWdtZW50LlBBR0VfU0VHTUVOVF9LRVksXG4gICAgICAgIGJ1ZmZlclxuICAgIF07XG59XG5hc3luYyBmdW5jdGlvbiBidWlsZElubGluZWRTZWdtZW50UHJlZmV0Y2gocm91dGUsIGJ1aWxkSWQsIHN0YWxlVGltZSwgc2VlZERhdGEsIGNsaWVudE1vZHVsZXMpIHtcbiAgICBsZXQgc2xvdHMgPSBudWxsO1xuICAgIGNvbnN0IGNoaWxkcmVuID0gcm91dGVbMV07XG4gICAgY29uc3Qgc2VlZERhdGFDaGlsZHJlbiA9IHNlZWREYXRhICE9PSBudWxsID8gc2VlZERhdGFbMV0gOiBudWxsO1xuICAgIGZvcihjb25zdCBwYXJhbGxlbFJvdXRlS2V5IGluIGNoaWxkcmVuKXtcbiAgICAgICAgY29uc3QgY2hpbGRSb3V0ZSA9IGNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldO1xuICAgICAgICBjb25zdCBjaGlsZFNlZWREYXRhID0gc2VlZERhdGFDaGlsZHJlbiAhPT0gbnVsbCA/IHNlZWREYXRhQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV0gOiBudWxsO1xuICAgICAgICBjb25zdCBjaGlsZFByZWZldGNoID0gYXdhaXQgYnVpbGRJbmxpbmVkU2VnbWVudFByZWZldGNoKGNoaWxkUm91dGUsIGJ1aWxkSWQsIHN0YWxlVGltZSwgY2hpbGRTZWVkRGF0YSwgY2xpZW50TW9kdWxlcyk7XG4gICAgICAgIGlmIChzbG90cyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgc2xvdHMgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBzbG90c1twYXJhbGxlbFJvdXRlS2V5XSA9IGNoaWxkUHJlZmV0Y2g7XG4gICAgfVxuICAgIGNvbnN0IHJzYyA9IHNlZWREYXRhICE9PSBudWxsID8gc2VlZERhdGFbMF0gOiBudWxsO1xuICAgIGNvbnN0IHZhcnlQYXJhbXNUaGVuYWJsZSA9IHNlZWREYXRhICE9PSBudWxsID8gc2VlZERhdGFbNF0gOiBudWxsO1xuICAgIGNvbnN0IHZhcnlQYXJhbXMgPSB2YXJ5UGFyYW1zVGhlbmFibGUgIT09IG51bGwgPyAoMCwgX3ZhcnlwYXJhbXNkZWNvZGluZy5yZWFkVmFyeVBhcmFtcykodmFyeVBhcmFtc1RoZW5hYmxlKSA6IG51bGw7XG4gICAgY29uc3Qgc2VnbWVudCA9IHtcbiAgICAgICAgcnNjLFxuICAgICAgICBpc1BhcnRpYWw6IHJzYyAhPT0gbnVsbCA/IGF3YWl0IGlzUGFydGlhbFJTQ0RhdGEocnNjLCBjbGllbnRNb2R1bGVzKSA6IHRydWUsXG4gICAgICAgIHN0YWxlVGltZSxcbiAgICAgICAgdmFyeVBhcmFtc1xuICAgIH07XG4gICAgaWYgKGJ1aWxkSWQpIHtcbiAgICAgICAgc2VnbWVudC5idWlsZElkID0gYnVpbGRJZDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc2VnbWVudCxcbiAgICAgICAgc2xvdHNcbiAgICB9O1xufVxuYXN5bmMgZnVuY3Rpb24gaXNQYXJ0aWFsUlNDRGF0YShyc2MsIGNsaWVudE1vZHVsZXMpIHtcbiAgICAvLyBXZSBjYW4gZGV0ZXJtaW5lIGlmIGEgc2VnbWVudCBjb250YWlucyBvbmx5IHBhcnRpYWwgZGF0YSBpZiBpdCB0YWtlcyBsb25nZXJcbiAgICAvLyB0aGFuIGEgdGFzayB0byBlbmNvZGUsIGJlY2F1c2UgZHluYW1pYyBkYXRhIGlzIGVuY29kZWQgYXMgYW4gaW5maW5pdGVcbiAgICAvLyBwcm9taXNlLiBXZSBtdXN0IGRvIHRoaXMgaW4gYSBzZXBhcmF0ZSBGbGlnaHQgcHJlcmVuZGVyIGZyb20gdGhlIG9uZSB0aGF0XG4gICAgLy8gYWN0dWFsbHkgZ2VuZXJhdGVzIHRoZSBwcmVmZXRjaCBzdHJlYW0gYmVjYXVzZSB3ZSBuZWVkIHRvIGluY2x1ZGVcbiAgICAvLyBgaXNQYXJ0aWFsYCBpbiB0aGUgc3RyZWFtIGl0c2VsZi5cbiAgICBsZXQgaXNQYXJ0aWFsID0gZmFsc2U7XG4gICAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICgwLCBfc2NoZWR1bGVyLndhaXRBdExlYXN0T25lUmVhY3RSZW5kZXJUYXNrKSgpLnRoZW4oKCk9PntcbiAgICAgICAgLy8gSWYgd2UgaGF2ZW4ndCB5ZXQgZmluaXNoZWQgdGhlIG91dGVyIHRhc2ssIHRoZW4gaXQgbXVzdCBiZSBiZWNhdXNlIHdlXG4gICAgICAgIC8vIGFjY2Vzc2VkIGR5bmFtaWMgZGF0YS5cbiAgICAgICAgaXNQYXJ0aWFsID0gdHJ1ZTtcbiAgICAgICAgYWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgfSk7XG4gICAgYXdhaXQgKDAsIF9zdGF0aWMucHJlcmVuZGVyKShyc2MsIGNsaWVudE1vZHVsZXMsIHtcbiAgICAgICAgZmlsdGVyU3RhY2tGcmFtZSxcbiAgICAgICAgc2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICBvbkVycm9yICgpIHt9XG4gICAgfSk7XG4gICAgcmV0dXJuIGlzUGFydGlhbDtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVVuY2xvc2luZ1ByZWZldGNoU3RyZWFtKG9yaWdpbmFsRmxpZ2h0U3RyZWFtKSB7XG4gICAgLy8gV2hlbiBQUFIgaXMgZW5hYmxlZCwgcHJlZmV0Y2ggc3RyZWFtcyBtYXkgY29udGFpbiByZWZlcmVuY2VzIHRoYXQgbmV2ZXJcbiAgICAvLyByZXNvbHZlLCBiZWNhdXNlIHRoYXQncyBob3cgd2UgZW5jb2RlIGR5bmFtaWMgZGF0YSBhY2Nlc3MuIEluIHRoZSBkZWNvZGVkXG4gICAgLy8gb2JqZWN0IHJldHVybmVkIGJ5IHRoZSBGbGlnaHQgY2xpZW50LCB0aGVzZSBhcmUgcmVpZmllZCBpbnRvIGhhbmdpbmdcbiAgICAvLyBwcm9taXNlcyB0aGF0IHN1c3BlbmQgZHVyaW5nIHJlbmRlciwgd2hpY2ggaXMgZWZmZWN0aXZlbHkgd2hhdCB3ZSB3YW50LlxuICAgIC8vIFRoZSBVSSByZXNvbHZlcyB3aGVuIGl0IHN3aXRjaGVzIHRvIHRoZSBkeW5hbWljIGRhdGEgc3RyZWFtXG4gICAgLy8gKHZpYSB1c2VEZWZlcnJlZFZhbHVlKGR5bmFtaWMsIHN0YXRpYykpLlxuICAgIC8vXG4gICAgLy8gSG93ZXZlciwgdGhlIEZsaWdodCBpbXBsZW1lbnRhdGlvbiBjdXJyZW50bHkgZXJyb3JzIGlmIHRoZSBzZXJ2ZXIgY2xvc2VzXG4gICAgLy8gdGhlIHJlc3BvbnNlIGJlZm9yZSBhbGwgdGhlIHJlZmVyZW5jZXMgYXJlIHJlc29sdmVkLiBBcyBhIGNoZWF0IHRvIHdvcmtcbiAgICAvLyBhcm91bmQgdGhpcywgd2Ugd3JhcCB0aGUgb3JpZ2luYWwgc3RyZWFtIGluIGEgbmV3IHN0cmVhbSB0aGF0IG5ldmVyIGNsb3NlcyxcbiAgICAvLyBhbmQgdGhlcmVmb3JlIGRvZXNuJ3QgZXJyb3IuXG4gICAgY29uc3QgcmVhZGVyID0gb3JpZ2luYWxGbGlnaHRTdHJlYW0uZ2V0UmVhZGVyKCk7XG4gICAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgICAgIGFzeW5jIHB1bGwgKGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIHdoaWxlKHRydWUpe1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFkb25lKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFBhc3MgdG8gdGhlIHRhcmdldCBzdHJlYW0gYW5kIGtlZXAgY29uc3VtaW5nIHRoZSBGbGlnaHQgcmVzcG9uc2VcbiAgICAgICAgICAgICAgICAgICAgLy8gZnJvbSB0aGUgc2VydmVyLlxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gVGhlIHNlcnZlciBzdHJlYW0gaGFzIGNsb3NlZC4gRXhpdCwgYnV0IGludGVudGlvbmFsbHkgZG8gbm90IGNsb3NlXG4gICAgICAgICAgICAgICAgLy8gdGhlIHRhcmdldCBzdHJlYW0uXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbGxlY3Qtc2VnbWVudC1kYXRhLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/collect-segment-data.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/app-render/create-error-handler.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/app-render/create-error-handler.js ***!
|
||
\**************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createHTMLErrorHandler: function() {\n return createHTMLErrorHandler;\n },\n createReactServerErrorHandler: function() {\n return createReactServerErrorHandler;\n },\n getDigestForWellKnownError: function() {\n return getDigestForWellKnownError;\n },\n isUserLandError: function() {\n return isUserLandError;\n }\n});\nconst _stringhash = /*#__PURE__*/ _interop_require_default(__webpack_require__(/*! next/dist/compiled/string-hash */ \"(rsc)/./node_modules/next/dist/compiled/string-hash/index.js\"));\nconst _formatservererror = __webpack_require__(/*! ../../lib/format-server-error */ \"(rsc)/./node_modules/next/dist/lib/format-server-error.js\");\nconst _tracer = __webpack_require__(/*! ../lib/trace/tracer */ \"(rsc)/./node_modules/next/dist/server/lib/trace/tracer.js\");\nconst _pipereadable = __webpack_require__(/*! ../pipe-readable */ \"(rsc)/./node_modules/next/dist/server/pipe-readable.js\");\nconst _bailouttocsr = __webpack_require__(/*! ../../shared/lib/lazy-dynamic/bailout-to-csr */ \"(rsc)/./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js\");\nconst _hooksservercontext = __webpack_require__(/*! ../../client/components/hooks-server-context */ \"(rsc)/./node_modules/next/dist/client/components/hooks-server-context.js\");\nconst _isnextroutererror = __webpack_require__(/*! ../../client/components/is-next-router-error */ \"(rsc)/./node_modules/next/dist/client/components/is-next-router-error.js\");\nconst _dynamicrendering = __webpack_require__(/*! ./dynamic-rendering */ \"(rsc)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\");\nconst _iserror = __webpack_require__(/*! ../../lib/is-error */ \"(rsc)/./node_modules/next/dist/lib/is-error.js\");\nconst _errortelemetryutils = __webpack_require__(/*! ../../lib/error-telemetry-utils */ \"(rsc)/./node_modules/next/dist/lib/error-telemetry-utils.js\");\nconst _reactlargeshellerror = __webpack_require__(/*! ./react-large-shell-error */ \"(rsc)/./node_modules/next/dist/server/app-render/react-large-shell-error.js\");\nconst _instantvalidationerror = __webpack_require__(/*! ./instant-validation/instant-validation-error */ \"(rsc)/./node_modules/next/dist/server/app-render/instant-validation/instant-validation-error.js\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction getDigestForWellKnownError(error) {\n // If we're bailing out to CSR, we don't need to log the error.\n if ((0, _bailouttocsr.isBailoutToCSRError)(error)) return error.digest;\n // If this is a navigation error, we don't need to log the error.\n if ((0, _isnextroutererror.isNextRouterError)(error)) return error.digest;\n // If this error occurs, we know that we should be stopping the static\n // render. This is only thrown in static generation when PPR is not enabled,\n // which causes the whole page to be marked as dynamic. We don't need to\n // tell the user about this error, as it's not actionable.\n if ((0, _hooksservercontext.isDynamicServerError)(error)) return error.digest;\n // If this is a prerender interrupted error, we don't need to log the error.\n if ((0, _dynamicrendering.isPrerenderInterruptedError)(error)) return error.digest;\n if ((0, _instantvalidationerror.isInstantValidationError)(error)) return error.digest;\n return undefined;\n}\nfunction createReactServerErrorHandler(shouldFormatError, isBuildTimePrerendering, reactServerErrors, onReactServerRenderError, spanToRecordOn) {\n return (thrownValue)=>{\n var _err_message;\n if (typeof thrownValue === 'string') {\n // TODO-APP: look at using webcrypto instead. Requires a promise to be awaited.\n return (0, _stringhash.default)(thrownValue).toString();\n }\n // If the response was closed, we don't need to log the error.\n if ((0, _pipereadable.isAbortError)(thrownValue)) return;\n const digest = getDigestForWellKnownError(thrownValue);\n if (digest) {\n return digest;\n }\n if ((0, _reactlargeshellerror.isReactLargeShellError)(thrownValue)) {\n // TODO: Aggregate\n console.error(thrownValue);\n return undefined;\n }\n let err = (0, _iserror.getProperError)(thrownValue);\n let silenceLog = false;\n // If the error already has a digest, respect the original digest,\n // so it won't get re-generated into another new error.\n if (err.digest) {\n if (false) {} else {\n // Either we're in development (where we want to keep the transported\n // error with environmentName), or the error is not in reactServerErrors\n // but has a digest from other means. Keep the error as-is.\n }\n } else {\n err.digest = (0, _errortelemetryutils.createDigestWithErrorCode)(err, (0, _stringhash.default)(err.message + (err.stack || '')).toString());\n }\n // @TODO by putting this here and not at the top it is possible that\n // we don't error the build in places we actually expect to\n if (!reactServerErrors.has(err.digest)) {\n reactServerErrors.set(err.digest, err);\n }\n // Format server errors in development to add more helpful error messages\n if (shouldFormatError) {\n (0, _formatservererror.formatServerError)(err);\n }\n // Don't log the suppressed error during export\n if (!(isBuildTimePrerendering && (err == null ? void 0 : (_err_message = err.message) == null ? void 0 : _err_message.includes('The specific message is omitted in production builds to avoid leaking sensitive details.')))) {\n // Record exception on the provided span if available, otherwise try active span.\n const span = spanToRecordOn ?? (0, _tracer.getTracer)().getActiveScopeSpan();\n if (span) {\n span.recordException(err);\n span.setAttribute('error.type', err.name);\n span.setStatus({\n code: _tracer.SpanStatusCode.ERROR,\n message: err.message\n });\n }\n onReactServerRenderError(err, silenceLog);\n }\n return err.digest;\n };\n}\nfunction createHTMLErrorHandler(shouldFormatError, isBuildTimePrerendering, reactServerErrors, allCapturedErrors, onHTMLRenderSSRError, spanToRecordOn) {\n return (thrownValue, errorInfo)=>{\n var _err_message;\n if ((0, _reactlargeshellerror.isReactLargeShellError)(thrownValue)) {\n // TODO: Aggregate\n console.error(thrownValue);\n return undefined;\n }\n let isSSRError = true;\n allCapturedErrors.push(thrownValue);\n // If the response was closed, we don't need to log the error.\n if ((0, _pipereadable.isAbortError)(thrownValue)) return;\n const digest = getDigestForWellKnownError(thrownValue);\n if (digest) {\n return digest;\n }\n const err = (0, _iserror.getProperError)(thrownValue);\n // If the error already has a digest, respect the original digest,\n // so it won't get re-generated into another new error.\n if (err.digest) {\n if (reactServerErrors.has(err.digest)) {\n // This error is likely an obfuscated error from react-server.\n // We recover the original error here.\n thrownValue = reactServerErrors.get(err.digest);\n isSSRError = false;\n } else {\n // The error is not from react-server but has a digest\n // from other means so we don't need to produce a new one\n }\n } else {\n err.digest = (0, _errortelemetryutils.createDigestWithErrorCode)(err, (0, _stringhash.default)(err.message + ((errorInfo == null ? void 0 : errorInfo.componentStack) || err.stack || '')).toString());\n }\n // Format server errors in development to add more helpful error messages\n if (shouldFormatError) {\n (0, _formatservererror.formatServerError)(err);\n }\n // Don't log the suppressed error during export\n if (!(isBuildTimePrerendering && (err == null ? void 0 : (_err_message = err.message) == null ? void 0 : _err_message.includes('The specific message is omitted in production builds to avoid leaking sensitive details.')))) {\n // HTML errors contain RSC errors as well, filter them out before reporting\n if (isSSRError) {\n // Record exception on the provided span if available, otherwise try active span.\n const span = spanToRecordOn ?? (0, _tracer.getTracer)().getActiveScopeSpan();\n if (span) {\n span.recordException(err);\n span.setAttribute('error.type', err.name);\n span.setStatus({\n code: _tracer.SpanStatusCode.ERROR,\n message: err.message\n });\n }\n onHTMLRenderSSRError(err, errorInfo);\n }\n }\n return err.digest;\n };\n}\nfunction isUserLandError(err) {\n return !(0, _pipereadable.isAbortError)(err) && !(0, _bailouttocsr.isBailoutToCSRError)(err) && !(0, _isnextroutererror.isNextRouterError)(err);\n} //# sourceMappingURL=create-error-handler.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2NyZWF0ZS1lcnJvci1oYW5kbGVyLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQXNKZ0JBLHNCQUFzQjtlQUF0QkE7O0lBaEdBQyw2QkFBNkI7ZUFBN0JBOztJQXJCQUMsMEJBQTBCO2VBQTFCQTs7SUEyTUFDLGVBQWU7ZUFBZkE7OzsrRUEzT087K0NBRVc7b0NBQ1E7MENBRWI7MENBQ087Z0RBQ0M7K0NBQ0g7OENBQ1U7cUNBQ2I7aURBQ1c7a0RBQ0g7b0RBQ0U7Ozs7OztBQW1CbEMsU0FBU0QsMkJBQTJCRSxLQUFjO0lBQ3ZELCtEQUErRDtJQUMvRCxJQUFJQyxDQUFBQSxHQUFBQSxjQUFBQSxtQkFBQUEsRUFBb0JELFFBQVEsT0FBT0EsTUFBTUUsTUFBTTtJQUVuRCxpRUFBaUU7SUFDakUsSUFBSUMsQ0FBQUEsR0FBQUEsbUJBQUFBLGlCQUFBQSxFQUFrQkgsUUFBUSxPQUFPQSxNQUFNRSxNQUFNO0lBRWpELHNFQUFzRTtJQUN0RSw0RUFBNEU7SUFDNUUsd0VBQXdFO0lBQ3hFLDBEQUEwRDtJQUMxRCxJQUFJRSxDQUFBQSxHQUFBQSxvQkFBQUEsb0JBQUFBLEVBQXFCSixRQUFRLE9BQU9BLE1BQU1FLE1BQU07SUFFcEQsNEVBQTRFO0lBQzVFLElBQUlHLENBQUFBLEdBQUFBLGtCQUFBQSwyQkFBQUEsRUFBNEJMLFFBQVEsT0FBT0EsTUFBTUUsTUFBTTtJQUUzRCxJQUFJSSxDQUFBQSxHQUFBQSx3QkFBQUEsd0JBQUFBLEVBQXlCTixRQUFRLE9BQU9BLE1BQU1FLE1BQU07SUFFeEQsT0FBT0s7QUFDVDtBQUVPLFNBQVNWLDhCQUNkVyxpQkFBMEIsRUFDMUJDLHVCQUFnQyxFQUNoQ0MsaUJBQTZDLEVBQzdDQyx3QkFBMkUsRUFDM0VDLGNBQW9CO0lBRXBCLE9BQU8sQ0FBQ0M7WUFrRUZDO1FBakVKLElBQUksT0FBT0QsZ0JBQWdCLFVBQVU7WUFDbkMsK0VBQStFO1lB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O1FBQ0Y7UUFFQSxPQUFPL0IsSUFBSVosTUFBTTtJQUNuQjtBQUNGO0FBRU8sU0FBU0gsZ0JBQWdCZSxHQUFRO0lBQ3RDLE9BQ0UsQ0FBQ0csQ0FBQUEsR0FBQUEsY0FBQUEsWUFBQUEsRUFBYUgsUUFBUSxDQUFDYixDQUFBQSxHQUFBQSxjQUFBQSxtQkFBQUEsRUFBb0JhLFFBQVEsQ0FBQ1gsQ0FBQUEsR0FBQUEsbUJBQUFBLGlCQUFBQSxFQUFrQlc7QUFFMUUiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9zcmMvc2VydmVyL2FwcC1yZW5kZXIvY3JlYXRlLWVycm9yLWhhbmRsZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRXJyb3JJbmZvIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgc3RyaW5nSGFzaCBmcm9tICduZXh0L2Rpc3QvY29tcGlsZWQvc3RyaW5nLWhhc2gnXG5cbmltcG9ydCB7IGZvcm1hdFNlcnZlckVycm9yIH0gZnJvbSAnLi4vLi4vbGliL2Zvcm1hdC1zZXJ2ZXItZXJyb3InXG5pbXBvcnQgeyBTcGFuU3RhdHVzQ29kZSwgZ2V0VHJhY2VyIH0gZnJvbSAnLi4vbGliL3RyYWNlL3RyYWNlcidcblxuaW1wb3J0IHsgaXNBYm9ydEVycm9yIH0gZnJvbSAnLi4vcGlwZS1yZWFkYWJsZSdcbmltcG9ydCB7IGlzQmFpbG91dFRvQ1NSRXJyb3IgfSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL2xhenktZHluYW1pYy9iYWlsb3V0LXRvLWNzcidcbmltcG9ydCB7IGlzRHluYW1pY1NlcnZlckVycm9yIH0gZnJvbSAnLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvaG9va3Mtc2VydmVyLWNvbnRleHQnXG5pbXBvcnQgeyBpc05leHRSb3V0ZXJFcnJvciB9IGZyb20gJy4uLy4uL2NsaWVudC9jb21wb25lbnRzL2lzLW5leHQtcm91dGVyLWVycm9yJ1xuaW1wb3J0IHsgaXNQcmVyZW5kZXJJbnRlcnJ1cHRlZEVycm9yIH0gZnJvbSAnLi9keW5hbWljLXJlbmRlcmluZydcbmltcG9ydCB7IGdldFByb3BlckVycm9yIH0gZnJvbSAnLi4vLi4vbGliL2lzLWVycm9yJ1xuaW1wb3J0IHsgY3JlYXRlRGlnZXN0V2l0aEVycm9yQ29kZSB9IGZyb20gJy4uLy4uL2xpYi9lcnJvci10ZWxlbWV0cnktdXRpbHMnXG5pbXBvcnQgeyBpc1JlYWN0TGFyZ2VTaGVsbEVycm9yIH0gZnJvbSAnLi9yZWFjdC1sYXJnZS1zaGVsbC1lcnJvcidcbmltcG9ydCB7IGlzSW5zdGFudFZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4vaW5zdGFudC12YWxpZGF0aW9uL2luc3RhbnQtdmFsaWRhdGlvbi1lcnJvcidcblxuZGVjbGFyZSBnbG9iYWwge1xuICB2YXIgX19uZXh0X2xvZ19lcnJvcl9fOiB1bmRlZmluZWQgfCAoKGVycjogdW5rbm93bikgPT4gdm9pZClcbn1cblxudHlwZSBSU0NFcnJvckhhbmRsZXIgPSAoZXJyOiB1bmtub3duKSA9PiBzdHJpbmcgfCB1bmRlZmluZWRcbnR5cGUgU1NSRXJyb3JIYW5kbGVyID0gKFxuICBlcnI6IHVua25vd24sXG4gIGVycm9ySW5mbz86IEVycm9ySW5mb1xuKSA9PiBzdHJpbmcgfCB1bmRlZmluZWRcblxuZXhwb3J0IHR5cGUgRGlnZXN0ZWRFcnJvciA9IEVycm9yICYgeyBkaWdlc3Q6IHN0cmluZzsgZW52aXJvbm1lbnROYW1lPzogc3RyaW5nIH1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZGlnZXN0IGZvciB3ZWxsLWtub3duIE5leHQuanMgZXJyb3JzLCBvdGhlcndpc2UgYHVuZGVmaW5lZGAuIElmIGFcbiAqIGRpZ2VzdCBpcyByZXR1cm5lZCB0aGlzIGFsc28gbWVhbnMgdGhhdCB0aGUgZXJyb3IgZG9lcyBub3QgbmVlZCB0byBiZVxuICogcmVwb3J0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREaWdlc3RGb3JXZWxsS25vd25FcnJvcihlcnJvcjogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIC8vIElmIHdlJ3JlIGJhaWxpbmcgb3V0IHRvIENTUiwgd2UgZG9uJ3QgbmVlZCB0byBsb2cgdGhlIGVycm9yLlxuICBpZiAoaXNCYWlsb3V0VG9DU1JFcnJvcihlcnJvcikpIHJldHVybiBlcnJvci5kaWdlc3RcblxuICAvLyBJZiB0aGlzIGlzIGEgbmF2aWdhdGlvbiBlcnJvciwgd2UgZG9uJ3QgbmVlZCB0byBsb2cgdGhlIGVycm9yLlxuICBpZiAoaXNOZXh0Um91dGVyRXJyb3IoZXJyb3IpKSByZXR1cm4gZXJyb3IuZGlnZXN0XG5cbiAgLy8gSWYgdGhpcyBlcnJvciBvY2N1cnMsIHdlIGtub3cgdGhhdCB3ZSBzaG91bGQgYmUgc3RvcHBpbmcgdGhlIHN0YXRpY1xuICAvLyByZW5kZXIuIFRoaXMgaXMgb25seSB0aHJvd24gaW4gc3RhdGljIGdlbmVyYXRpb24gd2hlbiBQUFIgaXMgbm90IGVuYWJsZWQsXG4gIC8vIHdoaWNoIGNhdXNlcyB0aGUgd2hvbGUgcGFnZSB0byBiZSBtYXJrZWQgYXMgZHluYW1pYy4gV2UgZG9uJ3QgbmVlZCB0b1xuICAvLyB0ZWxsIHRoZSB1c2VyIGFib3V0IHRoaXMgZXJyb3IsIGFzIGl0J3Mgbm90IGFjdGlvbmFibGUuXG4gIGlmIChpc0R5bmFtaWNTZXJ2ZXJFcnJvcihlcnJvcikpIHJldHVybiBlcnJvci5kaWdlc3RcblxuICAvLyBJZiB0aGlzIGlzIGEgcHJlcmVuZGVyIGludGVycnVwdGVkIGVycm9yLCB3ZSBkb24ndCBuZWVkIHRvIGxvZyB0aGUgZXJyb3IuXG4gIGlmIChpc1ByZXJlbmRlckludGVycnVwdGVkRXJyb3IoZXJyb3IpKSByZXR1cm4gZXJyb3IuZGlnZXN0XG5cbiAgaWYgKGlzSW5zdGFudFZhbGlkYXRpb25FcnJvcihlcnJvcikpIHJldHVybiBlcnJvci5kaWdlc3RcblxuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWFjdFNlcnZlckVycm9ySGFuZGxlcihcbiAgc2hvdWxkRm9ybWF0RXJyb3I6IGJvb2xlYW4sXG4gIGlzQnVpbGRUaW1lUHJlcmVuZGVyaW5nOiBib29sZWFuLFxuICByZWFjdFNlcnZlckVycm9yczogTWFwPHN0cmluZywgRGlnZXN0ZWRFcnJvcj4sXG4gIG9uUmVhY3RTZXJ2ZXJSZW5kZXJFcnJvcjogKGVycjogRGlnZXN0ZWRFcnJvciwgc2lsZW5jZUxvZzogYm9vbGVhbikgPT4gdm9pZCxcbiAgc3BhblRvUmVjb3JkT24/OiBhbnlcbik6IFJTQ0Vycm9ySGFuZGxlciB7XG4gIHJldHVybiAodGhyb3duVmFsdWU6IHVua25vd24pID0+IHtcbiAgICBpZiAodHlwZW9mIHRocm93blZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgLy8gVE9ETy1BUFA6IGxvb2sgYXQgdXNpbmcgd2ViY3J5cHRvIGluc3RlYWQuIFJlcXVpcmVzIGEgcHJvbWlzZSB0byBiZSBhd2FpdGVkLlxuICAgICAgcmV0dXJuIHN0cmluZ0hhc2godGhyb3duVmFsdWUpLnRvU3RyaW5nKClcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgcmVzcG9uc2Ugd2FzIGNsb3NlZCwgd2UgZG9uJ3QgbmVlZCB0byBsb2cgdGhlIGVycm9yLlxuICAgIGlmIChpc0Fib3J0RXJyb3IodGhyb3duVmFsdWUpKSByZXR1cm5cblxuICAgIGNvbnN0IGRpZ2VzdCA9IGdldERpZ2VzdEZvcldlbGxLbm93bkVycm9yKHRocm93blZhbHVlKVxuXG4gICAgaWYgKGRpZ2VzdCkge1xuICAgICAgcmV0dXJuIGRpZ2VzdFxuICAgIH1cblxuICAgIGlmIChpc1JlYWN0TGFyZ2VTaGVsbEVycm9yKHRocm93blZhbHVlKSkge1xuICAgICAgLy8gVE9ETzogQWdncmVnYXRlXG4gICAgICBjb25zb2xlLmVycm9yKHRocm93blZhbHVlKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGxldCBlcnIgPSBnZXRQcm9wZXJFcnJvcih0aHJvd25WYWx1ZSkgYXMgRGlnZXN0ZWRFcnJvclxuICAgIGxldCBzaWxlbmNlTG9nID0gZmFsc2VcblxuICAgIC8vIElmIHRoZSBlcnJvciBhbHJlYWR5IGhhcyBhIGRpZ2VzdCwgcmVzcGVjdCB0aGUgb3JpZ2luYWwgZGlnZXN0LFxuICAgIC8vIHNvIGl0IHdvbid0IGdldCByZS1nZW5lcmF0ZWQgaW50byBhbm90aGVyIG5ldyBlcnJvci5cbiAgICBpZiAoZXJyLmRpZ2VzdCkge1xuICAgICAgaWYgKFxuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICAgIHJlYWN0U2VydmVyRXJyb3JzLmhhcyhlcnIuZGlnZXN0KVxuICAgICAgKSB7XG4gICAgICAgIC8vIFRoaXMgZXJyb3IgaXMgbGlrZWx5IGFuIG9iZnVzY2F0ZWQgZXJyb3IgZnJvbSBhbm90aGVyIHJlYWN0LXNlcnZlclxuICAgICAgICAvLyBlbnZpcm9ubWVudCAoZS5nLiAndXNlIGNhY2hlJykuIFdlIHJlY292ZXIgdGhlIG9yaWdpbmFsIGVycm9yIGhlcmVcbiAgICAgICAgLy8gZm9yIHJlcG9ydGluZyBwdXJwb3Nlcy5cbiAgICAgICAgZXJyID0gcmVhY3RTZXJ2ZXJFcnJvcnMuZ2V0KGVyci5kaWdlc3QpIVxuICAgICAgICAvLyBXZSBkb24ndCBsb2cgaXQgYWdhaW4gdGhvdWdoLCBhcyBpdCB3YXMgYWxyZWFkeSBsb2dnZWQgaW4gdGhlXG4gICAgICAgIC8vIG9yaWdpbmFsIGVudmlyb25tZW50LlxuICAgICAgICBzaWxlbmNlTG9nID0gdHJ1ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRWl0aGVyIHdlJ3JlIGluIGRldmVsb3BtZW50ICh3aGVyZSB3ZSB3YW50IHRvIGtlZXAgdGhlIHRyYW5zcG9ydGVkXG4gICAgICAgIC8vIGVycm9yIHdpdGggZW52aXJvbm1lbnROYW1lKSwgb3IgdGhlIGVycm9yIGlzIG5vdCBpbiByZWFjdFNlcnZlckVycm9yc1xuICAgICAgICAvLyBidXQgaGFzIGEgZGlnZXN0IGZyb20gb3RoZXIgbWVhbnMuIEtlZXAgdGhlIGVycm9yIGFzLWlzLlxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBlcnIuZGlnZXN0ID0gY3JlYXRlRGlnZXN0V2l0aEVycm9yQ29kZShcbiAgICAgICAgZXJyLFxuICAgICAgICAvLyBUT0RPLUFQUDogbG9vayBhdCB1c2luZyB3ZWJjcnlwdG8gaW5zdGVhZC4gUmVxdWlyZXMgYSBwcm9taXNlIHRvIGJlIGF3YWl0ZWQuXG4gICAgICAgIHN0cmluZ0hhc2goZXJyLm1lc3NhZ2UgKyAoZXJyLnN0YWNrIHx8ICcnKSkudG9TdHJpbmcoKVxuICAgICAgKVxuICAgIH1cblxuICAgIC8vIEBUT0RPIGJ5IHB1dHRpbmcgdGhpcyBoZXJlIGFuZCBub3QgYXQgdGhlIHRvcCBpdCBpcyBwb3NzaWJsZSB0aGF0XG4gICAgLy8gd2UgZG9uJ3QgZXJyb3IgdGhlIGJ1aWxkIGluIHBsYWNlcyB3ZSBhY3R1YWxseSBleHBlY3QgdG9cbiAgICBpZiAoIXJlYWN0U2VydmVyRXJyb3JzLmhhcyhlcnIuZGlnZXN0KSkge1xuICAgICAgcmVhY3RTZXJ2ZXJFcnJvcnMuc2V0KGVyci5kaWdlc3QsIGVycilcbiAgICB9XG5cbiAgICAvLyBGb3JtYXQgc2VydmVyIGVycm9ycyBpbiBkZXZlbG9wbWVudCB0byBhZGQgbW9yZSBoZWxwZnVsIGVycm9yIG1lc3NhZ2VzXG4gICAgaWYgKHNob3VsZEZvcm1hdEVycm9yKSB7XG4gICAgICBmb3JtYXRTZXJ2ZXJFcnJvcihlcnIpXG4gICAgfVxuXG4gICAgLy8gRG9uJ3QgbG9nIHRoZSBzdXBwcmVzc2VkIGVycm9yIGR1cmluZyBleHBvcnRcbiAgICBpZiAoXG4gICAgICAhKFxuICAgICAgICBpc0J1aWxkVGltZVByZXJlbmRlcmluZyAmJlxuICAgICAgICBlcnI/Lm1lc3NhZ2U/LmluY2x1ZGVzKFxuICAgICAgICAgICdUaGUgc3BlY2lmaWMgbWVzc2FnZSBpcyBvbWl0dGVkIGluIHByb2R1Y3Rpb24gYnVpbGRzIHRvIGF2b2lkIGxlYWtpbmcgc2Vuc2l0aXZlIGRldGFpbHMuJ1xuICAgICAgICApXG4gICAgICApXG4gICAgKSB7XG4gICAgICAvLyBSZWNvcmQgZXhjZXB0aW9uIG9uIHRoZSBwcm92aWRlZCBzcGFuIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIHRyeSBhY3RpdmUgc3Bhbi5cbiAgICAgIGNvbnN0IHNwYW4gPSBzcGFuVG9SZWNvcmRPbiA/PyBnZXRUcmFjZXIoKS5nZXRBY3RpdmVTY29wZVNwYW4oKVxuICAgICAgaWYgKHNwYW4pIHtcbiAgICAgICAgc3Bhbi5yZWNvcmRFeGNlcHRpb24oZXJyKVxuICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZSgnZXJyb3IudHlwZScsIGVyci5uYW1lKVxuICAgICAgICBzcGFuLnNldFN0YXR1cyh7XG4gICAgICAgICAgY29kZTogU3BhblN0YXR1c0NvZGUuRVJST1IsXG4gICAgICAgICAgbWVzc2FnZTogZXJyLm1lc3NhZ2UsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIG9uUmVhY3RTZXJ2ZXJSZW5kZXJFcnJvcihlcnIsIHNpbGVuY2VMb2cpXG4gICAgfVxuXG4gICAgcmV0dXJuIGVyci5kaWdlc3RcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSFRNTEVycm9ySGFuZGxlcihcbiAgc2hvdWxkRm9ybWF0RXJyb3I6IGJvb2xlYW4sXG4gIGlzQnVpbGRUaW1lUHJlcmVuZGVyaW5nOiBib29sZWFuLFxuICByZWFjdFNlcnZlckVycm9yczogTWFwPHN0cmluZywgRGlnZXN0ZWRFcnJvcj4sXG4gIGFsbENhcHR1cmVkRXJyb3JzOiBBcnJheTx1bmtub3duPixcbiAgb25IVE1MUmVuZGVyU1NSRXJyb3I6IChlcnI6IERpZ2VzdGVkRXJyb3IsIGVycm9ySW5mbz86IEVycm9ySW5mbykgPT4gdm9pZCxcbiAgc3BhblRvUmVjb3JkT24/OiBhbnlcbik6IFNTUkVycm9ySGFuZGxlciB7XG4gIHJldHVybiAodGhyb3duVmFsdWU6IHVua25vd24sIGVycm9ySW5mbz86IEVycm9ySW5mbykgPT4ge1xuICAgIGlmIChpc1JlYWN0TGFyZ2VTaGVsbEVycm9yKHRocm93blZhbHVlKSkge1xuICAgICAgLy8gVE9ETzogQWdncmVnYXRlXG4gICAgICBjb25zb2xlLmVycm9yKHRocm93blZhbHVlKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGxldCBpc1NTUkVycm9yID0gdHJ1ZVxuXG4gICAgYWxsQ2FwdHVyZWRFcnJvcnMucHVzaCh0aHJvd25WYWx1ZSlcblxuICAgIC8vIElmIHRoZSByZXNwb25zZSB3YXMgY2xvc2VkLCB3ZSBkb24ndCBuZWVkIHRvIGxvZyB0aGUgZXJyb3IuXG4gICAgaWYgKGlzQWJvcnRFcnJvcih0aHJvd25WYWx1ZSkpIHJldHVyblxuXG4gICAgY29uc3QgZGlnZXN0ID0gZ2V0RGlnZXN0Rm9yV2VsbEtub3duRXJyb3IodGhyb3duVmFsdWUpXG5cbiAgICBpZiAoZGlnZXN0KSB7XG4gICAgICByZXR1cm4gZGlnZXN0XG4gICAgfVxuXG4gICAgY29uc3QgZXJyID0gZ2V0UHJvcGVyRXJyb3IodGhyb3duVmFsdWUpIGFzIERpZ2VzdGVkRXJyb3JcblxuICAgIC8vIElmIHRoZSBlcnJvciBhbHJlYWR5IGhhcyBhIGRpZ2VzdCwgcmVzcGVjdCB0aGUgb3JpZ2luYWwgZGlnZXN0LFxuICAgIC8vIHNvIGl0IHdvbid0IGdldCByZS1nZW5lcmF0ZWQgaW50byBhbm90aGVyIG5ldyBlcnJvci5cbiAgICBpZiAoZXJyLmRpZ2VzdCkge1xuICAgICAgaWYgKHJlYWN0U2VydmVyRXJyb3JzLmhhcyhlcnIuZGlnZXN0KSkge1xuICAgICAgICAvLyBUaGlzIGVycm9yIGlzIGxpa2VseSBhbiBvYmZ1c2NhdGVkIGVycm9yIGZyb20gcmVhY3Qtc2VydmVyLlxuICAgICAgICAvLyBXZSByZWNvdmVyIHRoZSBvcmlnaW5hbCBlcnJvciBoZXJlLlxuICAgICAgICB0aHJvd25WYWx1ZSA9IHJlYWN0U2VydmVyRXJyb3JzLmdldChlcnIuZGlnZXN0KVxuICAgICAgICBpc1NTUkVycm9yID0gZmFsc2VcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFRoZSBlcnJvciBpcyBub3QgZnJvbSByZWFjdC1zZXJ2ZXIgYnV0IGhhcyBhIGRpZ2VzdFxuICAgICAgICAvLyBmcm9tIG90aGVyIG1lYW5zIHNvIHdlIGRvbid0IG5lZWQgdG8gcHJvZHVjZSBhIG5ldyBvbmVcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZXJyLmRpZ2VzdCA9IGNyZWF0ZURpZ2VzdFdpdGhFcnJvckNvZGUoXG4gICAgICAgIGVycixcbiAgICAgICAgc3RyaW5nSGFzaChcbiAgICAgICAgICBlcnIubWVzc2FnZSArIChlcnJvckluZm8/LmNvbXBvbmVudFN0YWNrIHx8IGVyci5zdGFjayB8fCAnJylcbiAgICAgICAgKS50b1N0cmluZygpXG4gICAgICApXG4gICAgfVxuXG4gICAgLy8gRm9ybWF0IHNlcnZlciBlcnJvcnMgaW4gZGV2ZWxvcG1lbnQgdG8gYWRkIG1vcmUgaGVscGZ1bCBlcnJvciBtZXNzYWdlc1xuICAgIGlmIChzaG91bGRGb3JtYXRFcnJvcikge1xuICAgICAgZm9ybWF0U2VydmVyRXJyb3IoZXJyKVxuICAgIH1cblxuICAgIC8vIERvbid0IGxvZyB0aGUgc3VwcHJlc3NlZCBlcnJvciBkdXJpbmcgZXhwb3J0XG4gICAgaWYgKFxuICAgICAgIShcbiAgICAgICAgaXNCdWlsZFRpbWVQcmVyZW5kZXJpbmcgJiZcbiAgICAgICAgZXJyPy5tZXNzYWdlPy5pbmNsdWRlcyhcbiAgICAgICAgICAnVGhlIHNwZWNpZmljIG1lc3NhZ2UgaXMgb21pdHRlZCBpbiBwcm9kdWN0aW9uIGJ1aWxkcyB0byBhdm9pZCBsZWFraW5nIHNlbnNpdGl2ZSBkZXRhaWxzLidcbiAgICAgICAgKVxuICAgICAgKVxuICAgICkge1xuICAgICAgLy8gSFRNTCBlcnJvcnMgY29udGFpbiBSU0MgZXJyb3JzIGFzIHdlbGwsIGZpbHRlciB0aGVtIG91dCBiZWZvcmUgcmVwb3J0aW5nXG4gICAgICBpZiAoaXNTU1JFcnJvcikge1xuICAgICAgICAvLyBSZWNvcmQgZXhjZXB0aW9uIG9uIHRoZSBwcm92aWRlZCBzcGFuIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIHRyeSBhY3RpdmUgc3Bhbi5cbiAgICAgICAgY29uc3Qgc3BhbiA9IHNwYW5Ub1JlY29yZE9uID8/IGdldFRyYWNlcigpLmdldEFjdGl2ZVNjb3BlU3BhbigpXG4gICAgICAgIGlmIChzcGFuKSB7XG4gICAgICAgICAgc3Bhbi5yZWNvcmRFeGNlcHRpb24oZXJyKVxuICAgICAgICAgIHNwYW4uc2V0QXR0cmlidXRlKCdlcnJvci50eXBlJywgZXJyLm5hbWUpXG4gICAgICAgICAgc3Bhbi5zZXRTdGF0dXMoe1xuICAgICAgICAgICAgY29kZTogU3BhblN0YXR1c0NvZGUuRVJST1IsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnIubWVzc2FnZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgb25IVE1MUmVuZGVyU1NSRXJyb3IoZXJyLCBlcnJvckluZm8pXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGVyci5kaWdlc3RcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNVc2VyTGFuZEVycm9yKGVycjogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgIWlzQWJvcnRFcnJvcihlcnIpICYmICFpc0JhaWxvdXRUb0NTUkVycm9yKGVycikgJiYgIWlzTmV4dFJvdXRlckVycm9yKGVycilcbiAgKVxufVxuIl0sIm5hbWVzIjpbImNyZWF0ZUhUTUxFcnJvckhhbmRsZXIiLCJjcmVhdGVSZWFjdFNlcnZlckVycm9ySGFuZGxlciIsImdldERpZ2VzdEZvcldlbGxLbm93bkVycm9yIiwiaXNVc2VyTGFuZEVycm9yIiwiZXJyb3IiLCJpc0JhaWxvdXRUb0NTUkVycm9yIiwiZGlnZXN0IiwiaXNOZXh0Um91dGVyRXJyb3IiLCJpc0R5bmFtaWNTZXJ2ZXJFcnJvciIsImlzUHJlcmVuZGVySW50ZXJydXB0ZWRFcnJvciIsImlzSW5zdGFudFZhbGlkYXRpb25FcnJvciIsInVuZGVmaW5lZCIsInNob3VsZEZvcm1hdEVycm9yIiwiaXNCdWlsZFRpbWVQcmVyZW5kZXJpbmciLCJyZWFjdFNlcnZlckVycm9ycyIsIm9uUmVhY3RTZXJ2ZXJSZW5kZXJFcnJvciIsInNwYW5Ub1JlY29yZE9uIiwidGhyb3duVmFsdWUiLCJlcnIiLCJzdHJpbmdIYXNoIiwidG9TdHJpbmciLCJpc0Fib3J0RXJyb3IiLCJpc1JlYWN0TGFyZ2VTaGVsbEVycm9yIiwiY29uc29sZSIsImdldFByb3BlckVycm9yIiwic2lsZW5jZUxvZyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImhhcyIsImdldCIsImNyZWF0ZURpZ2VzdFdpdGhFcnJvckNvZGUiLCJtZXNzYWdlIiwic3RhY2siLCJzZXQiLCJmb3JtYXRTZXJ2ZXJFcnJvciIsImluY2x1ZGVzIiwic3BhbiIsImdldFRyYWNlciIsImdldEFjdGl2ZVNjb3BlU3BhbiIsInJlY29yZEV4Y2VwdGlvbiIsInNldEF0dHJpYnV0ZSIsIm5hbWUiLCJzZXRTdGF0dXMiLCJjb2RlIiwiU3BhblN0YXR1c0NvZGUiLCJFUlJPUiIsImFsbENhcHR1cmVkRXJyb3JzIiwib25IVE1MUmVuZGVyU1NSRXJyb3IiLCJlcnJvckluZm8iLCJpc1NTUkVycm9yIiwicHVzaCIsImNvbXBvbmVudFN0YWNrIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/create-error-handler.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/app-render/dynamic-rendering.js":
|
||
/*!***********************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/app-render/dynamic-rendering.js ***!
|
||
\***********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * The functions provided by this module are used to communicate certain properties\n * about the currently running code so that Next.js can make decisions on how to handle\n * the current execution in different rendering modes such as pre-rendering, resuming, and SSR.\n *\n * Today Next.js treats all code as potentially static. Certain APIs may only make sense when dynamically rendering.\n * Traditionally this meant deopting the entire render to dynamic however with PPR we can now deopt parts\n * of a React tree as dynamic while still keeping other parts static. There are really two different kinds of\n * Dynamic indications.\n *\n * The first is simply an intention to be dynamic. unstable_noStore is an example of this where\n * the currently executing code simply declares that the current scope is dynamic but if you use it\n * inside unstable_cache it can still be cached. This type of indication can be removed if we ever\n * make the default dynamic to begin with because the only way you would ever be static is inside\n * a cache scope which this indication does not affect.\n *\n * The second is an indication that a dynamic data source was read. This is a stronger form of dynamic\n * because it means that it is inappropriate to cache this at all. using a dynamic data source inside\n * unstable_cache should error. If you want to use some dynamic data inside unstable_cache you should\n * read that data outside the cache and pass it in as an argument to the cached function.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n DynamicHoleKind: function() {\n return DynamicHoleKind;\n },\n Postpone: function() {\n return Postpone;\n },\n PreludeState: function() {\n return PreludeState;\n },\n abortAndThrowOnSynchronousRequestDataAccess: function() {\n return abortAndThrowOnSynchronousRequestDataAccess;\n },\n abortOnSynchronousPlatformIOAccess: function() {\n return abortOnSynchronousPlatformIOAccess;\n },\n accessedDynamicData: function() {\n return accessedDynamicData;\n },\n annotateDynamicAccess: function() {\n return annotateDynamicAccess;\n },\n consumeDynamicAccess: function() {\n return consumeDynamicAccess;\n },\n createDynamicTrackingState: function() {\n return createDynamicTrackingState;\n },\n createDynamicValidationState: function() {\n return createDynamicValidationState;\n },\n createHangingInputAbortSignal: function() {\n return createHangingInputAbortSignal;\n },\n createInstantValidationState: function() {\n return createInstantValidationState;\n },\n createRenderInBrowserAbortSignal: function() {\n return createRenderInBrowserAbortSignal;\n },\n formatDynamicAPIAccesses: function() {\n return formatDynamicAPIAccesses;\n },\n getFirstDynamicReason: function() {\n return getFirstDynamicReason;\n },\n getNavigationDisallowedDynamicReasons: function() {\n return getNavigationDisallowedDynamicReasons;\n },\n getStaticShellDisallowedDynamicReasons: function() {\n return getStaticShellDisallowedDynamicReasons;\n },\n isDynamicPostpone: function() {\n return isDynamicPostpone;\n },\n isPrerenderInterruptedError: function() {\n return isPrerenderInterruptedError;\n },\n logDisallowedDynamicError: function() {\n return logDisallowedDynamicError;\n },\n markCurrentScopeAsDynamic: function() {\n return markCurrentScopeAsDynamic;\n },\n postponeWithTracking: function() {\n return postponeWithTracking;\n },\n throwIfDisallowedDynamic: function() {\n return throwIfDisallowedDynamic;\n },\n throwToInterruptStaticGeneration: function() {\n return throwToInterruptStaticGeneration;\n },\n trackAllowedDynamicAccess: function() {\n return trackAllowedDynamicAccess;\n },\n trackDynamicDataInDynamicRender: function() {\n return trackDynamicDataInDynamicRender;\n },\n trackDynamicHoleInNavigation: function() {\n return trackDynamicHoleInNavigation;\n },\n trackDynamicHoleInRuntimeShell: function() {\n return trackDynamicHoleInRuntimeShell;\n },\n trackDynamicHoleInStaticShell: function() {\n return trackDynamicHoleInStaticShell;\n },\n trackThrownErrorInNavigation: function() {\n return trackThrownErrorInNavigation;\n },\n useDynamicRouteParams: function() {\n return useDynamicRouteParams;\n },\n useDynamicSearchParams: function() {\n return useDynamicSearchParams;\n }\n});\nconst _react = /*#__PURE__*/ _interop_require_default(__webpack_require__(/*! react */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js\"));\nconst _hooksservercontext = __webpack_require__(/*! ../../client/components/hooks-server-context */ \"(rsc)/./node_modules/next/dist/client/components/hooks-server-context.js\");\nconst _staticgenerationbailout = __webpack_require__(/*! ../../client/components/static-generation-bailout */ \"(rsc)/./node_modules/next/dist/client/components/static-generation-bailout.js\");\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ./work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nconst _workasyncstorageexternal = __webpack_require__(/*! ../app-render/work-async-storage.external */ \"../app-render/work-async-storage.external\");\nconst _dynamicrenderingutils = __webpack_require__(/*! ../dynamic-rendering-utils */ \"(rsc)/./node_modules/next/dist/server/dynamic-rendering-utils.js\");\nconst _boundaryconstants = __webpack_require__(/*! ../../lib/framework/boundary-constants */ \"(rsc)/./node_modules/next/dist/lib/framework/boundary-constants.js\");\nconst _scheduler = __webpack_require__(/*! ../../lib/scheduler */ \"(rsc)/./node_modules/next/dist/lib/scheduler.js\");\nconst _bailouttocsr = __webpack_require__(/*! ../../shared/lib/lazy-dynamic/bailout-to-csr */ \"(rsc)/./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js\");\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(rsc)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nconst _boundaryconstants1 = __webpack_require__(/*! ./instant-validation/boundary-constants */ \"(rsc)/./node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nconst hasPostpone = typeof _react.default.unstable_postpone === 'function';\nfunction createDynamicTrackingState(isDebugDynamicAccesses) {\n return {\n isDebugDynamicAccesses,\n dynamicAccesses: [],\n syncDynamicErrorWithStack: null\n };\n}\nfunction createDynamicValidationState() {\n return {\n hasSuspenseAboveBody: false,\n hasDynamicMetadata: false,\n dynamicMetadata: null,\n hasDynamicViewport: false,\n hasAllowedDynamic: false,\n dynamicErrors: []\n };\n}\nfunction getFirstDynamicReason(trackingState) {\n var _trackingState_dynamicAccesses_;\n return (_trackingState_dynamicAccesses_ = trackingState.dynamicAccesses[0]) == null ? void 0 : _trackingState_dynamicAccesses_.expression;\n}\nfunction markCurrentScopeAsDynamic(store, workUnitStore, expression) {\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return;\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return;\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'request':\n case 'generate-static-params':\n break;\n default:\n workUnitStore;\n }\n }\n // If we're forcing dynamic rendering or we're forcing static rendering, we\n // don't need to do anything here because the entire page is already dynamic\n // or it's static and it should not throw or postpone here.\n if (store.forceDynamic || store.forceStatic) return;\n if (store.dynamicShouldError) {\n throw Object.defineProperty(new _staticgenerationbailout.StaticGenBailoutError(`Route ${store.route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`), \"__NEXT_ERROR_CODE\", {\n value: \"E553\",\n enumerable: false,\n configurable: true\n });\n }\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender-ppr':\n return postponeWithTracking(store.route, expression, workUnitStore.dynamicTracking);\n case 'prerender-legacy':\n workUnitStore.revalidate = 0;\n // We aren't prerendering, but we are generating a static page. We need\n // to bail out of static generation.\n const err = Object.defineProperty(new _hooksservercontext.DynamicServerError(`Route ${store.route} couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`), \"__NEXT_ERROR_CODE\", {\n value: \"E550\",\n enumerable: false,\n configurable: true\n });\n store.dynamicUsageDescription = expression;\n store.dynamicUsageStack = err.stack;\n throw err;\n case 'request':\n if (true) {\n workUnitStore.usedDynamic = true;\n }\n break;\n case 'generate-static-params':\n break;\n default:\n workUnitStore;\n }\n }\n}\nfunction throwToInterruptStaticGeneration(expression, store, prerenderStore) {\n // We aren't prerendering but we are generating a static page. We need to bail out of static generation\n const err = Object.defineProperty(new _hooksservercontext.DynamicServerError(`Route ${store.route} couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`), \"__NEXT_ERROR_CODE\", {\n value: \"E558\",\n enumerable: false,\n configurable: true\n });\n prerenderStore.revalidate = 0;\n store.dynamicUsageDescription = expression;\n store.dynamicUsageStack = err.stack;\n throw err;\n}\nfunction trackDynamicDataInDynamicRender(workUnitStore) {\n switch(workUnitStore.type){\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return;\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return;\n case 'prerender':\n case 'prerender-runtime':\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'prerender-client':\n case 'validation-client':\n case 'generate-static-params':\n break;\n case 'request':\n if (true) {\n workUnitStore.usedDynamic = true;\n }\n break;\n default:\n workUnitStore;\n }\n}\nfunction abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore) {\n const reason = `Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`;\n const error = createPrerenderInterruptedError(reason);\n prerenderStore.controller.abort(error);\n const dynamicTracking = prerenderStore.dynamicTracking;\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n // When we aren't debugging, we don't need to create another error for the\n // stack trace.\n stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined,\n expression\n });\n }\n}\nfunction abortOnSynchronousPlatformIOAccess(route, expression, errorWithStack, prerenderStore) {\n const dynamicTracking = prerenderStore.dynamicTracking;\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore);\n // It is important that we set this tracking value after aborting. Aborts are executed\n // synchronously except for the case where you abort during render itself. By setting this\n // value late we can use it to determine if any of the aborted tasks are the task that\n // called the sync IO expression in the first place.\n if (dynamicTracking) {\n if (dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack;\n }\n }\n}\nfunction abortAndThrowOnSynchronousRequestDataAccess(route, expression, errorWithStack, prerenderStore) {\n const prerenderSignal = prerenderStore.controller.signal;\n if (prerenderSignal.aborted === false) {\n // TODO it would be better to move this aborted check into the callsite so we can avoid making\n // the error object when it isn't relevant to the aborting of the prerender however\n // since we need the throw semantics regardless of whether we abort it is easier to land\n // this way. See how this was handled with `abortOnSynchronousPlatformIOAccess` for a closer\n // to ideal implementation\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore);\n // It is important that we set this tracking value after aborting. Aborts are executed\n // synchronously except for the case where you abort during render itself. By setting this\n // value late we can use it to determine if any of the aborted tasks are the task that\n // called the sync IO expression in the first place.\n const dynamicTracking = prerenderStore.dynamicTracking;\n if (dynamicTracking) {\n if (dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack;\n }\n }\n }\n throw createPrerenderInterruptedError(`Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`);\n}\nfunction Postpone({ reason, route }) {\n const prerenderStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n const dynamicTracking = prerenderStore && prerenderStore.type === 'prerender-ppr' ? prerenderStore.dynamicTracking : null;\n postponeWithTracking(route, reason, dynamicTracking);\n}\nfunction postponeWithTracking(route, expression, dynamicTracking) {\n assertPostpone();\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n // When we aren't debugging, we don't need to create another error for the\n // stack trace.\n stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined,\n expression\n });\n }\n _react.default.unstable_postpone(createPostponeReason(route, expression));\n}\nfunction createPostponeReason(route, expression) {\n return `Route ${route} needs to bail out of prerendering at this point because it used ${expression}. ` + `React throws this special object to indicate where. It should not be caught by ` + `your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`;\n}\nfunction isDynamicPostpone(err) {\n if (typeof err === 'object' && err !== null && typeof err.message === 'string') {\n return isDynamicPostponeReason(err.message);\n }\n return false;\n}\nfunction isDynamicPostponeReason(reason) {\n return reason.includes('needs to bail out of prerendering at this point because it used') && reason.includes('Learn more: https://nextjs.org/docs/messages/ppr-caught-error');\n}\nif (isDynamicPostponeReason(createPostponeReason('%%%', '^^^')) === false) {\n throw Object.defineProperty(new Error('Invariant: isDynamicPostpone misidentified a postpone reason. This is a bug in Next.js'), \"__NEXT_ERROR_CODE\", {\n value: \"E296\",\n enumerable: false,\n configurable: true\n });\n}\nconst NEXT_PRERENDER_INTERRUPTED = 'NEXT_PRERENDER_INTERRUPTED';\nfunction createPrerenderInterruptedError(message) {\n const error = Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n error.digest = NEXT_PRERENDER_INTERRUPTED;\n return error;\n}\nfunction isPrerenderInterruptedError(error) {\n return typeof error === 'object' && error !== null && error.digest === NEXT_PRERENDER_INTERRUPTED && 'name' in error && 'message' in error && error instanceof Error;\n}\nfunction accessedDynamicData(dynamicAccesses) {\n return dynamicAccesses.length > 0;\n}\nfunction consumeDynamicAccess(serverDynamic, clientDynamic) {\n // We mutate because we only call this once we are no longer writing\n // to the dynamicTrackingState and it's more efficient than creating a new\n // array.\n serverDynamic.dynamicAccesses.push(...clientDynamic.dynamicAccesses);\n return serverDynamic.dynamicAccesses;\n}\nfunction formatDynamicAPIAccesses(dynamicAccesses) {\n return dynamicAccesses.filter((access)=>typeof access.stack === 'string' && access.stack.length > 0).map(({ expression, stack })=>{\n stack = stack.split('\\n') // Remove the \"Error: \" prefix from the first line of the stack trace as\n // well as the first 4 lines of the stack trace which is the distance\n // from the user code and the `new Error().stack` call.\n .slice(4).filter((line)=>{\n // Exclude Next.js internals from the stack trace.\n if (line.includes('node_modules/next/')) {\n return false;\n }\n // Exclude anonymous functions from the stack trace.\n if (line.includes(' (<anonymous>)')) {\n return false;\n }\n // Exclude Node.js internals from the stack trace.\n if (line.includes(' (node:')) {\n return false;\n }\n return true;\n }).join('\\n');\n return `Dynamic API Usage Debug - ${expression}:\\n${stack}`;\n });\n}\nfunction assertPostpone() {\n if (!hasPostpone) {\n throw Object.defineProperty(new Error(`Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js`), \"__NEXT_ERROR_CODE\", {\n value: \"E224\",\n enumerable: false,\n configurable: true\n });\n }\n}\nfunction createRenderInBrowserAbortSignal() {\n const controller = new AbortController();\n controller.abort(Object.defineProperty(new _bailouttocsr.BailoutToCSRError('Render in Browser'), \"__NEXT_ERROR_CODE\", {\n value: \"E721\",\n enumerable: false,\n configurable: true\n }));\n return controller.signal;\n}\nfunction createHangingInputAbortSignal(workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-runtime':\n const controller = new AbortController();\n if (workUnitStore.cacheSignal) {\n // If we have a cacheSignal it means we're in a prospective render. If\n // the input we're waiting on is coming from another cache, we do want\n // to wait for it so that we can resolve this cache entry too.\n workUnitStore.cacheSignal.inputReady().then(()=>{\n controller.abort();\n });\n } else {\n // Otherwise we're in the final render and we should already have all\n // our caches filled.\n // If the prerender uses stages, we have wait until the runtime stage,\n // at which point all runtime inputs will be resolved.\n // (otherwise, a runtime prerender might consider `cookies()` hanging\n // even though they'd resolve in the next task.)\n //\n // We might still be waiting on some microtasks so we\n // wait one tick before giving up. When we give up, we still want to\n // render the content of this cache as deeply as we can so that we can\n // suspend as deeply as possible in the tree or not at all if we don't\n // end up waiting for the input.\n if (workUnitStore.type === 'prerender-runtime' && workUnitStore.stagedRendering) {\n const { stagedRendering } = workUnitStore;\n stagedRendering.waitForStage((0, _dynamicrenderingutils.getRuntimeStage)(stagedRendering)).then(()=>(0, _scheduler.scheduleOnNextTick)(()=>controller.abort()));\n } else {\n (0, _scheduler.scheduleOnNextTick)(()=>controller.abort());\n }\n }\n return controller.signal;\n case 'prerender-client':\n case 'validation-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'generate-static-params':\n return undefined;\n default:\n workUnitStore;\n }\n}\nfunction annotateDynamicAccess(expression, prerenderStore) {\n const dynamicTracking = prerenderStore.dynamicTracking;\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined,\n expression\n });\n }\n}\nfunction useDynamicRouteParams(expression) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workStore && workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender-client':\n case 'prerender':\n {\n const fallbackParams = workUnitStore.fallbackRouteParams;\n if (fallbackParams && fallbackParams.size > 0) {\n // We are in a prerender with cacheComponents semantics. We are going to\n // hang here and never resolve. This will cause the currently\n // rendering component to effectively be a dynamic hole.\n _react.default.use((0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, expression));\n }\n break;\n }\n case 'prerender-ppr':\n {\n const fallbackParams = workUnitStore.fallbackRouteParams;\n if (fallbackParams && fallbackParams.size > 0) {\n return postponeWithTracking(workStore.route, expression, workUnitStore.dynamicTracking);\n }\n break;\n }\n case 'validation-client':\n {\n break;\n }\n case 'prerender-runtime':\n throw Object.defineProperty(new _invarianterror.InvariantError(`\\`${expression}\\` was called during a runtime prerender. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), \"__NEXT_ERROR_CODE\", {\n value: \"E771\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'private-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError(`\\`${expression}\\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), \"__NEXT_ERROR_CODE\", {\n value: \"E745\",\n enumerable: false,\n configurable: true\n });\n case 'generate-static-params':\n throw Object.defineProperty(new _invarianterror.InvariantError(`\\`${expression}\\` was called in \\`generateStaticParams\\`. Next.js should be preventing ${expression} from being included in server component files statically, but did not in this case.`), \"__NEXT_ERROR_CODE\", {\n value: \"E1130\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-legacy':\n case 'request':\n case 'unstable-cache':\n break;\n default:\n workUnitStore;\n }\n }\n}\nfunction useDynamicSearchParams(expression) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (!workStore) {\n // We assume pages router context and just return\n return;\n }\n if (!workUnitStore) {\n (0, _workunitasyncstorageexternal.throwForMissingRequestStore)(expression);\n }\n switch(workUnitStore.type){\n case 'validation-client':\n // During instant validation we try to behave as close to client as possible,\n // so this shouldn't hang during SSR.\n return;\n case 'prerender-client':\n {\n _react.default.use((0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, expression));\n break;\n }\n case 'prerender-legacy':\n case 'prerender-ppr':\n {\n if (workStore.forceStatic) {\n return;\n }\n throw Object.defineProperty(new _bailouttocsr.BailoutToCSRError(expression), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n }\n case 'prerender':\n case 'prerender-runtime':\n throw Object.defineProperty(new _invarianterror.InvariantError(`\\`${expression}\\` was called from a Server Component. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), \"__NEXT_ERROR_CODE\", {\n value: \"E795\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'unstable-cache':\n case 'private-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError(`\\`${expression}\\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), \"__NEXT_ERROR_CODE\", {\n value: \"E745\",\n enumerable: false,\n configurable: true\n });\n case 'generate-static-params':\n throw Object.defineProperty(new _invarianterror.InvariantError(`\\`${expression}\\` was called in \\`generateStaticParams\\`. Next.js should be preventing ${expression} from being included in server component files statically, but did not in this case.`), \"__NEXT_ERROR_CODE\", {\n value: \"E1130\",\n enumerable: false,\n configurable: true\n });\n case 'request':\n return;\n default:\n workUnitStore;\n }\n}\nconst hasSuspenseRegex = /\\n\\s+at Suspense \\(<anonymous>\\)/;\n// Common implicit body tags that React will treat as body when placed directly in html\nconst bodyAndImplicitTags = 'body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6';\n// Detects when RootLayoutBoundary (our framework marker component) appears\n// after Suspense in the component stack, indicating the root layout is wrapped\n// within a Suspense boundary. Ensures no body/html/implicit-body components are in between.\n//\n// Example matches:\n// at Suspense (<anonymous>)\n// at __next_root_layout_boundary__ (<anonymous>)\n//\n// Or with other components in between (but not body/html/implicit-body):\n// at Suspense (<anonymous>)\n// at SomeComponent (<anonymous>)\n// at __next_root_layout_boundary__ (<anonymous>)\nconst hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex = new RegExp(`\\\\n\\\\s+at Suspense \\\\(<anonymous>\\\\)(?:(?!\\\\n\\\\s+at (?:${bodyAndImplicitTags}) \\\\(<anonymous>\\\\))[\\\\s\\\\S])*?\\\\n\\\\s+at ${_boundaryconstants.ROOT_LAYOUT_BOUNDARY_NAME} \\\\([^\\\\n]*\\\\)`);\nconst hasMetadataRegex = new RegExp(`\\\\n\\\\s+at ${_boundaryconstants.METADATA_BOUNDARY_NAME}[\\\\n\\\\s]`);\nconst hasViewportRegex = new RegExp(`\\\\n\\\\s+at ${_boundaryconstants.VIEWPORT_BOUNDARY_NAME}[\\\\n\\\\s]`);\nconst hasOutletRegex = new RegExp(`\\\\n\\\\s+at ${_boundaryconstants.OUTLET_BOUNDARY_NAME}[\\\\n\\\\s]`);\nconst hasInstantValidationBoundaryRegex = new RegExp(`\\\\n\\\\s+at ${_boundaryconstants1.INSTANT_VALIDATION_BOUNDARY_NAME}[\\\\n\\\\s]`);\nfunction trackAllowedDynamicAccess(workStore, componentStack, dynamicValidation, clientDynamic) {\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return;\n } else if (hasMetadataRegex.test(componentStack)) {\n dynamicValidation.hasDynamicMetadata = true;\n return;\n } else if (hasViewportRegex.test(componentStack)) {\n dynamicValidation.hasDynamicViewport = true;\n return;\n } else if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true;\n dynamicValidation.hasSuspenseAboveBody = true;\n return;\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true;\n return;\n } else if (clientDynamic.syncDynamicErrorWithStack) {\n // This task was the task that called the sync error.\n dynamicValidation.dynamicErrors.push(clientDynamic.syncDynamicErrorWithStack);\n return;\n } else {\n const message = `Route \"${workStore.route}\": Uncached data was accessed outside of ` + '<Suspense>. This delays the entire page from rendering, resulting in a ' + 'slow user experience. Learn more: ' + 'https://nextjs.org/docs/messages/blocking-route';\n const error = addErrorContext(Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1079\",\n enumerable: false,\n configurable: true\n }), componentStack, null);\n dynamicValidation.dynamicErrors.push(error);\n return;\n }\n}\nvar DynamicHoleKind = /*#__PURE__*/ function(DynamicHoleKind) {\n /** We know that this hole is caused by runtime data. */ DynamicHoleKind[DynamicHoleKind[\"Runtime\"] = 1] = \"Runtime\";\n /** We know that this hole is caused by dynamic data. */ DynamicHoleKind[DynamicHoleKind[\"Dynamic\"] = 2] = \"Dynamic\";\n return DynamicHoleKind;\n}({});\nfunction createInstantValidationState(createInstantStack) {\n return {\n hasDynamicMetadata: false,\n hasAllowedClientDynamicAboveBoundary: false,\n dynamicMetadata: null,\n hasDynamicViewport: false,\n hasAllowedDynamic: false,\n dynamicErrors: [],\n validationPreventingErrors: [],\n thrownErrorsOutsideBoundary: [],\n createInstantStack\n };\n}\nfunction trackDynamicHoleInNavigation(workStore, componentStack, dynamicValidation, clientDynamic, kind, boundaryState) {\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return;\n }\n if (hasMetadataRegex.test(componentStack)) {\n const usageDescription = kind === 1 ? `Runtime data such as \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` was accessed inside \\`generateMetadata\\` or you have file-based metadata such as icons that depend on dynamic params segments.` : `Uncached data or \\`connection()\\` was accessed inside \\`generateMetadata\\`.`;\n const message = `Route \"${workStore.route}\": ${usageDescription} Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`;\n const error = addErrorContext(Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1076\",\n enumerable: false,\n configurable: true\n }), componentStack, dynamicValidation.createInstantStack);\n dynamicValidation.dynamicMetadata = error;\n return;\n }\n if (hasViewportRegex.test(componentStack)) {\n const usageDescription = kind === 1 ? `Runtime data such as \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` was accessed inside \\`generateViewport\\`.` : `Uncached data or \\`connection()\\` was accessed inside \\`generateViewport\\`.`;\n const message = `Route \"${workStore.route}\": ${usageDescription} This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`;\n const error = addErrorContext(Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1086\",\n enumerable: false,\n configurable: true\n }), componentStack, dynamicValidation.createInstantStack);\n dynamicValidation.dynamicErrors.push(error);\n return;\n }\n const boundaryLocation = hasInstantValidationBoundaryRegex.exec(componentStack);\n if (!boundaryLocation) {\n // We don't see the validation boundary in the component stack,\n // so this hole must be coming from a shared parent.\n // Shared parents are fully resolved and don't have RSC holes,\n // but they can still suspend in a client component during SSR.\n // If we managed to render all the validation boundaries, that means\n // that the client holes aren't blocking validation and we can disregard them.\n // Note that we don't even care whether they have suspense or not.\n if (boundaryState.expectedIds.size === boundaryState.renderedIds.size) {\n dynamicValidation.hasAllowedClientDynamicAboveBoundary = true;\n dynamicValidation.hasAllowedDynamic = true // Holes outside the boundary contribute to allowing dynamic metadata\n ;\n return;\n } else {\n // TODO(instant-validation) TODO(NAR-787)\n // If shared parents blocked us from validating, we should only log\n // the errors from the innermost (segments), i.e. omit layouts whose\n // slots managed to render (because clearly they didn't block validation)\n const message = `Route \"${workStore.route}\": Could not validate \\`unstable_instant\\` because a Client Component in a parent segment prevented the page from rendering.`;\n const error = addErrorContext(Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1082\",\n enumerable: false,\n configurable: true\n }), componentStack, dynamicValidation.createInstantStack);\n dynamicValidation.validationPreventingErrors.push(error);\n return;\n }\n } else {\n // The hole originates inside the validation boundary.\n //\n // Check if we have a Suspense above the hole, but below the validation boundary.\n // If we do, then this dynamic usage wouldn't block a navigation to this subtree.\n // Conversely, if the nearest suspense is above the validation boundary, then this subtree would block.\n //\n // Note that in the component stack, children come before parents.\n //\n // Valid:\n // ...\n // at Suspense\n // ...\n // at __next_prefetch_validation_boundary__\n //\n // Invalid:\n // ...\n // at __next_prefetch_validation_boundary__\n // ...\n // at Suspense\n //\n const suspenseLocation = hasSuspenseRegex.exec(componentStack);\n if (suspenseLocation) {\n if (suspenseLocation.index < boundaryLocation.index) {\n dynamicValidation.hasAllowedDynamic = true;\n return;\n } else {\n // invalid - fallthrough\n }\n }\n }\n if (clientDynamic.syncDynamicErrorWithStack) {\n // This task was the task that called the sync error.\n const syncError = clientDynamic.syncDynamicErrorWithStack;\n if (dynamicValidation.createInstantStack !== null && syncError.cause === undefined) {\n syncError.cause = dynamicValidation.createInstantStack();\n }\n dynamicValidation.dynamicErrors.push(syncError);\n return;\n }\n const usageDescription = kind === 1 ? `Runtime data such as \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` was accessed outside of \\`<Suspense>\\`.` : `Uncached data or \\`connection()\\` was accessed outside of \\`<Suspense>\\`.`;\n const message = `Route \"${workStore.route}\": ${usageDescription} This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`;\n const error = addErrorContext(Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1078\",\n enumerable: false,\n configurable: true\n }), componentStack, dynamicValidation.createInstantStack);\n dynamicValidation.dynamicErrors.push(error);\n return;\n}\nfunction trackThrownErrorInNavigation(workStore, dynamicValidation, thrownValue, componentStack) {\n const boundaryLocation = hasInstantValidationBoundaryRegex.exec(componentStack);\n if (!boundaryLocation) {\n // There's no validation boundary on the component stack.\n // This error may have blocked a boundary from rendering.\n // Wrap the error to provide component context.\n // This helps for errors from node_modules which would otherwise\n // have no useful stack information due to ignore-listing,\n // e.g. next/dynamic with `ssr: false`.\n const error = addErrorContext(Object.defineProperty(new Error('An error occurred while attempting to validate instant UI. This error may be preventing the validation from completing.', {\n cause: thrownValue\n }), \"__NEXT_ERROR_CODE\", {\n value: \"E1118\",\n enumerable: false,\n configurable: true\n }), componentStack, null);\n dynamicValidation.thrownErrorsOutsideBoundary.push(error);\n } else {\n // There's validation boundary on the component stack,\n // so we know this error didn't block a validation boundary from rendering.\n // However, this error might be hiding be hiding dynamic content that would\n // cause validation to fail.\n const suspenseLocation = hasSuspenseRegex.exec(componentStack);\n if (suspenseLocation) {\n if (suspenseLocation.index < boundaryLocation.index) {\n // There's a Suspense below the validation boundary but above this error's location.\n // This subtree can't fail instant validation because any potential\n // dynamic holes would be guarded by the Suspense anyway,\n // so we can allow this.\n return;\n } else {\n // invalid - fallthrough\n }\n }\n const message = `Route \"${workStore.route}\": Could not validate \\`unstable_instant\\` because an error prevented the target segment from rendering.`;\n const error = addErrorContext(Object.defineProperty(new Error(message, {\n cause: thrownValue\n }), \"__NEXT_ERROR_CODE\", {\n value: \"E1112\",\n enumerable: false,\n configurable: true\n }), componentStack, null // TODO(instant-validation-build): conflicting use of cause\n );\n dynamicValidation.validationPreventingErrors.push(error);\n }\n}\nfunction trackDynamicHoleInRuntimeShell(workStore, componentStack, dynamicValidation, clientDynamic) {\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return;\n } else if (hasMetadataRegex.test(componentStack)) {\n const message = `Route \"${workStore.route}\": Uncached data or \\`connection()\\` was accessed inside \\`generateMetadata\\`. Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`;\n const error = addErrorContext(Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1080\",\n enumerable: false,\n configurable: true\n }), componentStack, null);\n dynamicValidation.dynamicMetadata = error;\n return;\n } else if (hasViewportRegex.test(componentStack)) {\n // TODO(instant-validation): If the page only has holes caused by runtime data,\n // we won't find out if there's a suspense-above-body and error for dynamic viewport\n // even if there is in fact a suspense-above-body\n const message = `Route \"${workStore.route}\": Uncached data or \\`connection()\\` was accessed inside \\`generateViewport\\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`;\n const error = addErrorContext(Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1077\",\n enumerable: false,\n configurable: true\n }), componentStack, null);\n dynamicValidation.dynamicErrors.push(error);\n return;\n } else if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true;\n dynamicValidation.hasSuspenseAboveBody = true;\n return;\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true;\n return;\n } else if (clientDynamic.syncDynamicErrorWithStack) {\n // This task was the task that called the sync error.\n dynamicValidation.dynamicErrors.push(clientDynamic.syncDynamicErrorWithStack);\n return;\n }\n const message = `Route \"${workStore.route}\": Uncached data or \\`connection()\\` was accessed outside of \\`<Suspense>\\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`;\n const error = addErrorContext(Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1084\",\n enumerable: false,\n configurable: true\n }), componentStack, null);\n dynamicValidation.dynamicErrors.push(error);\n return;\n}\nfunction trackDynamicHoleInStaticShell(workStore, componentStack, dynamicValidation, clientDynamic) {\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return;\n } else if (hasMetadataRegex.test(componentStack)) {\n const message = `Route \"${workStore.route}\": Runtime data such as \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` was accessed inside \\`generateMetadata\\` or you have file-based metadata such as icons that depend on dynamic params segments. Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`;\n const error = addErrorContext(Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1085\",\n enumerable: false,\n configurable: true\n }), componentStack, null);\n dynamicValidation.dynamicMetadata = error;\n return;\n } else if (hasViewportRegex.test(componentStack)) {\n const message = `Route \"${workStore.route}\": Runtime data such as \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` was accessed inside \\`generateViewport\\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`;\n const error = addErrorContext(Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1081\",\n enumerable: false,\n configurable: true\n }), componentStack, null);\n dynamicValidation.dynamicErrors.push(error);\n return;\n } else if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true;\n dynamicValidation.hasSuspenseAboveBody = true;\n return;\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true;\n return;\n } else if (clientDynamic.syncDynamicErrorWithStack) {\n // This task was the task that called the sync error.\n dynamicValidation.dynamicErrors.push(clientDynamic.syncDynamicErrorWithStack);\n return;\n } else {\n const message = `Route \"${workStore.route}\": Runtime data such as \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` was accessed outside of \\`<Suspense>\\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`;\n const error = addErrorContext(Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1083\",\n enumerable: false,\n configurable: true\n }), componentStack, null);\n dynamicValidation.dynamicErrors.push(error);\n return;\n }\n}\n/**\n * In dev mode, we prefer using the owner stack, otherwise the provided\n * component stack is used.\n *\n * Accepts an already-created Error so the SWC error-code plugin can see the\n * `new Error(...)` call at each call site and auto-assign error codes.\n */ function addErrorContext(error, componentStack, createInstantStack) {\n const ownerStack = true && _react.default.captureOwnerStack ? _react.default.captureOwnerStack() : null;\n if (createInstantStack !== null) {\n error.cause = createInstantStack();\n }\n // TODO go back to owner stack here if available. This is temporarily using componentStack to get the right\n //\n error.stack = error.name + ': ' + error.message + (ownerStack || componentStack);\n return error;\n}\nvar PreludeState = /*#__PURE__*/ function(PreludeState) {\n PreludeState[PreludeState[\"Full\"] = 0] = \"Full\";\n PreludeState[PreludeState[\"Empty\"] = 1] = \"Empty\";\n PreludeState[PreludeState[\"Errored\"] = 2] = \"Errored\";\n return PreludeState;\n}({});\nfunction logDisallowedDynamicError(workStore, error) {\n console.error(error);\n if (false) {} else if (false) {}\n}\nfunction throwIfDisallowedDynamic(workStore, prelude, dynamicValidation, serverDynamic) {\n if (serverDynamic.syncDynamicErrorWithStack) {\n logDisallowedDynamicError(workStore, serverDynamic.syncDynamicErrorWithStack);\n throw new _staticgenerationbailout.StaticGenBailoutError();\n }\n if (prelude !== 0) {\n if (dynamicValidation.hasSuspenseAboveBody) {\n // This route has opted into allowing fully dynamic rendering\n // by including a Suspense boundary above the body. In this case\n // a lack of a shell is not considered disallowed so we simply return\n return;\n }\n // We didn't have any sync bailouts but there may be user code which\n // blocked the root. We would have captured these during the prerender\n // and can log them here and then terminate the build/validating render\n const dynamicErrors = dynamicValidation.dynamicErrors;\n if (dynamicErrors.length > 0) {\n for(let i = 0; i < dynamicErrors.length; i++){\n logDisallowedDynamicError(workStore, dynamicErrors[i]);\n }\n throw new _staticgenerationbailout.StaticGenBailoutError();\n }\n // If we got this far then the only other thing that could be blocking\n // the root is dynamic Viewport. If this is dynamic then\n // you need to opt into that by adding a Suspense boundary above the body\n // to indicate your are ok with fully dynamic rendering.\n if (dynamicValidation.hasDynamicViewport) {\n console.error(`Route \"${workStore.route}\" has a \\`generateViewport\\` that depends on Request data (\\`cookies()\\`, etc...) or uncached external data (\\`fetch(...)\\`, etc...) without explicitly allowing fully dynamic rendering. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`);\n throw new _staticgenerationbailout.StaticGenBailoutError();\n }\n if (prelude === 1) {\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n // We still adhere to the constraint that you must produce a shell but invite the\n // user to report this as a bug in Next.js.\n console.error(`Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`);\n throw new _staticgenerationbailout.StaticGenBailoutError();\n }\n } else {\n if (dynamicValidation.hasAllowedDynamic === false && dynamicValidation.hasDynamicMetadata) {\n console.error(`Route \"${workStore.route}\" has a \\`generateMetadata\\` that depends on Request data (\\`cookies()\\`, etc...) or uncached external data (\\`fetch(...)\\`, etc...) when the rest of the route does not. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`);\n throw new _staticgenerationbailout.StaticGenBailoutError();\n }\n }\n}\nfunction getStaticShellDisallowedDynamicReasons(workStore, prelude, dynamicValidation, configAllowsBlocking) {\n if (configAllowsBlocking || dynamicValidation.hasSuspenseAboveBody) {\n // This route has opted into allowing fully dynamic rendering\n // by including a Suspense boundary above the body. In this case\n // a lack of a shell is not considered disallowed so we simply return\n return [];\n }\n if (prelude !== 0) {\n // We didn't have any sync bailouts but there may be user code which\n // blocked the root. We would have captured these during the prerender\n // and can log them here and then terminate the build/validating render\n const dynamicErrors = dynamicValidation.dynamicErrors;\n if (dynamicErrors.length > 0) {\n return dynamicErrors;\n }\n if (prelude === 1) {\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n // We still adhere to the constraint that you must produce a shell but invite the\n // user to report this as a bug in Next.js.\n return [\n Object.defineProperty(new _invarianterror.InvariantError(`Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason.`), \"__NEXT_ERROR_CODE\", {\n value: \"E936\",\n enumerable: false,\n configurable: true\n })\n ];\n }\n } else {\n // We have a prelude but we might still have dynamic metadata without any other dynamic access\n if (dynamicValidation.hasAllowedDynamic === false && dynamicValidation.dynamicErrors.length === 0 && dynamicValidation.dynamicMetadata) {\n return [\n dynamicValidation.dynamicMetadata\n ];\n }\n }\n // We had a non-empty prelude and there are no dynamic holes\n return [];\n}\nfunction getNavigationDisallowedDynamicReasons(workStore, prelude, dynamicValidation, validationSampleTracking, boundaryState) {\n // If we have errors related to missing samples, those should take precedence over everything else.\n if (validationSampleTracking) {\n const { missingSampleErrors } = validationSampleTracking;\n if (missingSampleErrors.length > 0) {\n return missingSampleErrors;\n }\n }\n const { validationPreventingErrors } = dynamicValidation;\n if (validationPreventingErrors.length > 0) {\n return validationPreventingErrors;\n }\n if (boundaryState.renderedIds.size < boundaryState.expectedIds.size) {\n const { thrownErrorsOutsideBoundary, createInstantStack } = dynamicValidation;\n if (thrownErrorsOutsideBoundary.length === 0) {\n const message = `Route \"${workStore.route}\": Could not validate \\`unstable_instant\\` because the target segment was prevented from rendering for an unknown reason.`;\n const error = createInstantStack !== null ? createInstantStack() : new Error();\n error.name = 'Error';\n error.message = message;\n return [\n error\n ];\n } else if (thrownErrorsOutsideBoundary.length === 1) {\n const message = `Route \"${workStore.route}\": Could not validate \\`unstable_instant\\` because the target segment was prevented from rendering, likely due to the following error.`;\n const error = createInstantStack !== null ? createInstantStack() : new Error();\n error.name = 'Error';\n error.message = message;\n return [\n error,\n thrownErrorsOutsideBoundary[0]\n ];\n } else {\n const message = `Route \"${workStore.route}\": Could not validate \\`unstable_instant\\` because the target segment was prevented from rendering, likely due to one of the following errors.`;\n const error = createInstantStack !== null ? createInstantStack() : new Error();\n error.name = 'Error';\n error.message = message;\n return [\n error,\n ...thrownErrorsOutsideBoundary\n ];\n }\n }\n // NOTE: We don't care about Suspense above body here,\n // we're only concerned with the validation boundary\n if (prelude !== 0) {\n const dynamicErrors = dynamicValidation.dynamicErrors;\n if (dynamicErrors.length > 0) {\n return dynamicErrors;\n }\n if (prelude === 1) {\n // If a client component suspended prevented us from rendering a shell\n // but didn't block validation, we don't require a prelude.\n if (dynamicValidation.hasAllowedClientDynamicAboveBoundary) {\n return [];\n }\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n return [\n Object.defineProperty(new _invarianterror.InvariantError(`Route \"${workStore.route}\" failed to render during instant validation and Next.js was unable to determine a reason.`), \"__NEXT_ERROR_CODE\", {\n value: \"E1055\",\n enumerable: false,\n configurable: true\n })\n ];\n }\n } else {\n const dynamicErrors = dynamicValidation.dynamicErrors;\n if (dynamicErrors.length > 0) {\n return dynamicErrors;\n }\n if (dynamicValidation.hasAllowedDynamic === false && dynamicValidation.dynamicMetadata) {\n return [\n dynamicValidation.dynamicMetadata\n ];\n }\n }\n // We had a non-empty prelude and there are no dynamic holes\n return [];\n} //# sourceMappingURL=dynamic-rendering.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2R5bmFtaWMtcmVuZGVyaW5nLmpzIiwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW9CQzs7Ozs7Ozs7Ozs7O0lBc3dCV0EsZUFBZTtlQUFmQTs7SUEzYklDLFFBQVE7ZUFBUkE7O0lBb3hCSkMsWUFBWTtlQUFaQTs7SUF6ekJJQywyQ0FBMkM7ZUFBM0NBOztJQTdCQUMsa0NBQWtDO2VBQWxDQTs7SUE0SkFDLG1CQUFtQjtlQUFuQkE7O0lBd0lBQyxxQkFBcUI7ZUFBckJBOztJQWxJQUMsb0JBQW9CO2VBQXBCQTs7SUFoV0FDLDBCQUEwQjtlQUExQkE7O0lBVUFDLDRCQUE0QjtlQUE1QkE7O0lBOFpBQyw2QkFBNkI7ZUFBN0JBOztJQXVTQUMsNEJBQTRCO2VBQTVCQTs7SUFsVEFDLGdDQUFnQztlQUFoQ0E7O0lBbERBQyx3QkFBd0I7ZUFBeEJBOztJQXRWQUMscUJBQXFCO2VBQXJCQTs7SUF1b0NBQyxxQ0FBcUM7ZUFBckNBOztJQTlDQUMsc0NBQXNDO2VBQXRDQTs7SUF6MEJBQyxpQkFBaUI7ZUFBakJBOztJQXdDQUMsMkJBQTJCO2VBQTNCQTs7SUE2c0JBQyx5QkFBeUI7ZUFBekJBOztJQXgvQkFDLHlCQUF5QjtlQUF6QkE7O0lBdU9BQyxvQkFBb0I7ZUFBcEJBOztJQWt5QkFDLHdCQUF3QjtlQUF4QkE7O0lBNTdCQUMsZ0NBQWdDO2VBQWhDQTs7SUEyaEJBQyx5QkFBeUI7ZUFBekJBOztJQWxnQkFDLCtCQUErQjtlQUEvQkE7O0lBdWxCQUMsNEJBQTRCO2VBQTVCQTs7SUFxTEFDLDhCQUE4QjtlQUE5QkE7O0lBb0RBQyw2QkFBNkI7ZUFBN0JBOztJQXhHQUMsNEJBQTRCO2VBQTVCQTs7SUEvV0FDLHFCQUFxQjtlQUFyQkE7O0lBOERBQyxzQkFBc0I7ZUFBdEJBOzs7MEVBL21CRTtnREFFaUI7cURBQ0c7MERBSS9CO3NEQUMwQjttREFDbUI7K0NBTTdD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Q2xDLHNFQUFzRTtZQUN0RSwyREFBMkQ7WUFDM0QsSUFBSXhCLGtCQUFrQkksb0NBQW9DLEVBQUU7Z0JBQzFELE9BQU8sRUFBRTtZQUNYO1lBQ0EsNkVBQTZFO1lBQzdFLE9BQU87Z0JBQ0wscUJBRUMsQ0FGRCxJQUFJcEIsZ0JBQUFBLGNBQWMsQ0FDaEIsQ0FBQyxPQUFPLEVBQUVSLFVBQVV0RCxLQUFLLENBQUMsMEZBQTBGLENBQUMsR0FEdkg7MkJBQUE7Z0NBQUE7a0NBQUE7Z0JBRUE7YUFDRDtRQUNIO0lBQ0YsT0FBTztRQUNMLE1BQU1WLGdCQUFnQndGLGtCQUFrQnhGLGFBQWE7UUFDckQsSUFBSUEsY0FBYzZDLE1BQU0sR0FBRyxHQUFHO1lBQzVCLE9BQU83QztRQUNUO1FBRUEsSUFDRXdGLGtCQUFrQnpGLGlCQUFpQixLQUFLLFNBQ3hDeUYsa0JBQWtCM0YsZUFBZSxFQUNqQztZQUNBLE9BQU87Z0JBQUMyRixrQkFBa0IzRixlQUFlO2FBQUM7UUFDNUM7SUFDRjtJQUNBLDREQUE0RDtJQUM1RCxPQUFPLEVBQUU7QUFDWCIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9zZXJ2ZXIvYXBwLXJlbmRlci9keW5hbWljLXJlbmRlcmluZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBmdW5jdGlvbnMgcHJvdmlkZWQgYnkgdGhpcyBtb2R1bGUgYXJlIHVzZWQgdG8gY29tbXVuaWNhdGUgY2VydGFpbiBwcm9wZXJ0aWVzXG4gKiBhYm91dCB0aGUgY3VycmVudGx5IHJ1bm5pbmcgY29kZSBzbyB0aGF0IE5leHQuanMgY2FuIG1ha2UgZGVjaXNpb25zIG9uIGhvdyB0byBoYW5kbGVcbiAqIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBpbiBkaWZmZXJlbnQgcmVuZGVyaW5nIG1vZGVzIHN1Y2ggYXMgcHJlLXJlbmRlcmluZywgcmVzdW1pbmcsIGFuZCBTU1IuXG4gKlxuICogVG9kYXkgTmV4dC5qcyB0cmVhdHMgYWxsIGNvZGUgYXMgcG90ZW50aWFsbHkgc3RhdGljLiBDZXJ0YWluIEFQSXMgbWF5IG9ubHkgbWFrZSBzZW5zZSB3aGVuIGR5bmFtaWNhbGx5IHJlbmRlcmluZy5cbiAqIFRyYWRpdGlvbmFsbHkgdGhpcyBtZWFudCBkZW9wdGluZyB0aGUgZW50aXJlIHJlbmRlciB0byBkeW5hbWljIGhvd2V2ZXIgd2l0aCBQUFIgd2UgY2FuIG5vdyBkZW9wdCBwYXJ0c1xuICogb2YgYSBSZWFjdCB0cmVlIGFzIGR5bmFtaWMgd2hpbGUgc3RpbGwga2VlcGluZyBvdGhlciBwYXJ0cyBzdGF0aWMuIFRoZXJlIGFyZSByZWFsbHkgdHdvIGRpZmZlcmVudCBraW5kcyBvZlxuICogRHluYW1pYyBpbmRpY2F0aW9ucy5cbiAqXG4gKiBUaGUgZmlyc3QgaXMgc2ltcGx5IGFuIGludGVudGlvbiB0byBiZSBkeW5hbWljLiB1bnN0YWJsZV9ub1N0b3JlIGlzIGFuIGV4YW1wbGUgb2YgdGhpcyB3aGVyZVxuICogdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgY29kZSBzaW1wbHkgZGVjbGFyZXMgdGhhdCB0aGUgY3VycmVudCBzY29wZSBpcyBkeW5hbWljIGJ1dCBpZiB5b3UgdXNlIGl0XG4gKiBpbnNpZGUgdW5zdGFibGVfY2FjaGUgaXQgY2FuIHN0aWxsIGJlIGNhY2hlZC4gVGhpcyB0eXBlIG9mIGluZGljYXRpb24gY2FuIGJlIHJlbW92ZWQgaWYgd2UgZXZlclxuICogbWFrZSB0aGUgZGVmYXVsdCBkeW5hbWljIHRvIGJlZ2luIHdpdGggYmVjYXVzZSB0aGUgb25seSB3YXkgeW91IHdvdWxkIGV2ZXIgYmUgc3RhdGljIGlzIGluc2lkZVxuICogYSBjYWNoZSBzY29wZSB3aGljaCB0aGlzIGluZGljYXRpb24gZG9lcyBub3QgYWZmZWN0LlxuICpcbiAqIFRoZSBzZWNvbmQgaXMgYW4gaW5kaWNhdGlvbiB0aGF0IGEgZHluYW1pYyBkYXRhIHNvdXJjZSB3YXMgcmVhZC4gVGhpcyBpcyBhIHN0cm9uZ2VyIGZvcm0gb2YgZHluYW1pY1xuICogYmVjYXVzZSBpdCBtZWFucyB0aGF0IGl0IGlzIGluYXBwcm9wcmlhdGUgdG8gY2FjaGUgdGhpcyBhdCBhbGwuIHVzaW5nIGEgZHluYW1pYyBkYXRhIHNvdXJjZSBpbnNpZGVcbiAqIHVuc3RhYmxlX2NhY2hlIHNob3VsZCBlcnJvci4gSWYgeW91IHdhbnQgdG8gdXNlIHNvbWUgZHluYW1pYyBkYXRhIGluc2lkZSB1bnN0YWJsZV9jYWNoZSB5b3Ugc2hvdWxkXG4gKiByZWFkIHRoYXQgZGF0YSBvdXRzaWRlIHRoZSBjYWNoZSBhbmQgcGFzcyBpdCBpbiBhcyBhbiBhcmd1bWVudCB0byB0aGUgY2FjaGVkIGZ1bmN0aW9uLlxuICovXG5cbmltcG9ydCB0eXBlIHsgV29ya1N0b3JlIH0gZnJvbSAnLi4vYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnXG5pbXBvcnQgdHlwZSB7XG4gIFdvcmtVbml0U3RvcmUsXG4gIFByZXJlbmRlclN0b3JlTGVnYWN5LFxuICBQcmVyZW5kZXJTdG9yZU1vZGVybixcbiAgVmFsaWRhdGlvblN0b3JlQ2xpZW50LFxufSBmcm9tICcuLi9hcHAtcmVuZGVyL3dvcmstdW5pdC1hc3luYy1zdG9yYWdlLmV4dGVybmFsJ1xuXG4vLyBPbmNlIHBvc3Rwb25lIGlzIGluIHN0YWJsZSB3ZSBzaG91bGQgc3dpdGNoIHRvIGltcG9ydGluZyB0aGUgcG9zdHBvbmUgZXhwb3J0IGRpcmVjdGx5XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IER5bmFtaWNTZXJ2ZXJFcnJvciB9IGZyb20gJy4uLy4uL2NsaWVudC9jb21wb25lbnRzL2hvb2tzLXNlcnZlci1jb250ZXh0J1xuaW1wb3J0IHsgU3RhdGljR2VuQmFpbG91dEVycm9yIH0gZnJvbSAnLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvc3RhdGljLWdlbmVyYXRpb24tYmFpbG91dCdcbmltcG9ydCB7XG4gIHRocm93Rm9yTWlzc2luZ1JlcXVlc3RTdG9yZSxcbiAgd29ya1VuaXRBc3luY1N0b3JhZ2UsXG59IGZyb20gJy4vd29yay11bml0LWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnXG5pbXBvcnQgeyB3b3JrQXN5bmNTdG9yYWdlIH0gZnJvbSAnLi4vYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnXG5pbXBvcnQgeyBtYWtlSGFuZ2luZ1Byb21pc2UsIGdldFJ1bnRpbWVTdGFnZSB9IGZyb20gJy4uL2R5bmFtaWMtcmVuZGVyaW5nLXV0aWxzJ1xuaW1wb3J0IHtcbiAgTUVUQURBVEFfQk9VTkRBUllfTkFNRSxcbiAgVklFV1BPUlRfQk9VTkRBUllfTkFNRSxcbiAgT1VUTEVUX0JPVU5EQVJZX05BTUUsXG4gIFJPT1RfTEFZT1VUX0JPVU5EQVJZX05BTUUsXG59IGZyb20gJy4uLy4uL2xpYi9mcmFtZXdvcmsvYm91bmRhcnktY29uc3RhbnRzJ1xuaW1wb3J0IHsgc2NoZWR1bGVPbk5leHRUaWNrIH0gZnJvbSAnLi4vLi4vbGliL3NjaGVkdWxlcidcbmltcG9ydCB7IEJhaWxvdXRUb0NTUkVycm9yIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9sYXp5LWR5bmFtaWMvYmFpbG91dC10by1jc3InXG5pbXBvcnQgeyBJbnZhcmlhbnRFcnJvciB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvaW52YXJpYW50LWVycm9yJ1xuaW1wb3J0IHsgSU5TVEFOVF9WQUxJREFUSU9OX0JPVU5EQVJZX05BTUUgfSBmcm9tICcuL2luc3RhbnQtdmFsaWRhdGlvbi9ib3VuZGFyeS1jb25zdGFudHMnXG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25Cb3VuZGFyeVRyYWNraW5nIH0gZnJvbSAnLi9pbnN0YW50LXZhbGlkYXRpb24vYm91bmRhcnktdHJhY2tpbmcnXG5pbXBvcnQgdHlwZSB7IEluc3RhbnRWYWxpZGF0aW9uU2FtcGxlVHJhY2tpbmcgfSBmcm9tICcuL2luc3RhbnQtdmFsaWRhdGlvbi9pbnN0YW50LXNhbXBsZXMnXG5cbmNvbnN0IGhhc1Bvc3Rwb25lID0gdHlwZW9mIFJlYWN0LnVuc3RhYmxlX3Bvc3Rwb25lID09PSAnZnVuY3Rpb24nXG5cbmV4cG9ydCB0eXBlIER5bmFtaWNBY2Nlc3MgPSB7XG4gIC8qKlxuICAgKiBJZiBkZWJ1Z2dpbmcsIHRoaXMgd2lsbCBjb250YWluIHRoZSBzdGFjayB0cmFjZSBvZiB3aGVyZSB0aGUgZHluYW1pYyBhY2Nlc3NcbiAgICogb2NjdXJyZWQuIFRoaXMgaXMgdXNlZCB0byBwcm92aWRlIG1vcmUgaW5mb3JtYXRpb24gdG8gdGhlIHVzZXIgYWJvdXQgd2h5XG4gICAqIHRoZWlyIHBhZ2UgaXMgYmVpbmcgcmVuZGVyZWQgZHluYW1pY2FsbHkuXG4gICAqL1xuICBzdGFjaz86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBUaGUgZXhwcmVzc2lvbiB0aGF0IHdhcyBhY2Nlc3NlZCBkeW5hbWljYWxseS5cbiAgICovXG4gIGV4cHJlc3Npb246IHN0cmluZ1xufVxuXG4vLyBTdG9yZXMgZHluYW1pYyByZWFzb25zIHVzZWQgZHVyaW5nIGFuIFJTQyByZW5kZXIuXG5leHBvcnQgdHlwZSBEeW5hbWljVHJhY2tpbmdTdGF0ZSA9IHtcbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgc3RhY2sgaW5mb3JtYXRpb24gd2lsbCBhbHNvIGJlIHRyYWNrZWQgZHVyaW5nIGR5bmFtaWMgYWNjZXNzLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNEZWJ1Z0R5bmFtaWNBY2Nlc3NlczogYm9vbGVhbiB8IHVuZGVmaW5lZFxuXG4gIC8qKlxuICAgKiBUaGUgZHluYW1pYyBhY2Nlc3NlcyB0aGF0IG9jY3VycmVkIGR1cmluZyB0aGUgcmVuZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgZHluYW1pY0FjY2Vzc2VzOiBBcnJheTxEeW5hbWljQWNjZXNzPlxuXG4gIHN5bmNEeW5hbWljRXJyb3JXaXRoU3RhY2s6IG51bGwgfCBFcnJvclxufVxuXG4vLyBTdG9yZXMgZHluYW1pYyByZWFzb25zIHVzZWQgZHVyaW5nIGFuIFNTUiByZW5kZXIuXG5leHBvcnQgdHlwZSBEeW5hbWljVmFsaWRhdGlvblN0YXRlID0ge1xuICBoYXNTdXNwZW5zZUFib3ZlQm9keTogYm9vbGVhblxuICBoYXNEeW5hbWljTWV0YWRhdGE6IGJvb2xlYW5cbiAgZHluYW1pY01ldGFkYXRhOiBudWxsIHwgRXJyb3JcbiAgaGFzRHluYW1pY1ZpZXdwb3J0OiBib29sZWFuXG4gIGhhc0FsbG93ZWREeW5hbWljOiBib29sZWFuXG4gIGR5bmFtaWNFcnJvcnM6IEFycmF5PEVycm9yPlxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRHluYW1pY1RyYWNraW5nU3RhdGUoXG4gIGlzRGVidWdEeW5hbWljQWNjZXNzZXM6IGJvb2xlYW4gfCB1bmRlZmluZWRcbik6IER5bmFtaWNUcmFja2luZ1N0YXRlIHtcbiAgcmV0dXJuIHtcbiAgICBpc0RlYnVnRHluYW1pY0FjY2Vzc2VzLFxuICAgIGR5bmFtaWNBY2Nlc3NlczogW10sXG4gICAgc3luY0R5bmFtaWNFcnJvcldpdGhTdGFjazogbnVsbCxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRHluYW1pY1ZhbGlkYXRpb25TdGF0ZSgpOiBEeW5hbWljVmFsaWRhdGlvblN0YXRlIHtcbiAgcmV0dXJuIHtcbiAgICBoYXNTdXNwZW5zZUFib3ZlQm9keTogZmFsc2UsXG4gICAgaGFzRHluYW1pY01ldGFkYXRhOiBmYWxzZSxcbiAgICBkeW5hbWljTWV0YWRhdGE6IG51bGwsXG4gICAgaGFzRHluYW1pY1ZpZXdwb3J0OiBmYWxzZSxcbiAgICBoYXNBbGxvd2VkRHluYW1pYzogZmFsc2UsXG4gICAgZHluYW1pY0Vycm9yczogW10sXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpcnN0RHluYW1pY1JlYXNvbihcbiAgdHJhY2tpbmdTdGF0ZTogRHluYW1pY1RyYWNraW5nU3RhdGVcbik6IHVuZGVmaW5lZCB8IHN0cmluZyB7XG4gIHJldHVybiB0cmFja2luZ1N0YXRlLmR5bmFtaWNBY2Nlc3Nlc1swXT8uZXhwcmVzc2lvblxufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gY29tbXVuaWNhdGVzIHRoYXQgdGhlIGN1cnJlbnQgc2NvcGUgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgZHluYW1pYy5cbiAqXG4gKiBJbiBtb3N0IGNhc2VzIHRoaXMgZnVuY3Rpb24gaXMgYSBuby1vcCBidXQgaWYgY2FsbGVkIGR1cmluZ1xuICogYSBQUFIgcHJlcmVuZGVyIGl0IHdpbGwgcG9zdHBvbmUgdGhlIGN1cnJlbnQgc3ViLXRyZWUgYW5kIGNhbGxpbmdcbiAqIGl0IGR1cmluZyBhIG5vcm1hbCBwcmVyZW5kZXIgd2lsbCBjYXVzZSB0aGUgZW50aXJlIHByZXJlbmRlciB0byBhYm9ydFxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFya0N1cnJlbnRTY29wZUFzRHluYW1pYyhcbiAgc3RvcmU6IFdvcmtTdG9yZSxcbiAgd29ya1VuaXRTdG9yZTogdW5kZWZpbmVkIHwgRXhjbHVkZTxXb3JrVW5pdFN0b3JlLCBQcmVyZW5kZXJTdG9yZU1vZGVybj4sXG4gIGV4cHJlc3Npb246IHN0cmluZ1xuKTogdm9pZCB7XG4gIGlmICh3b3JrVW5pdFN0b3JlKSB7XG4gICAgc3dpdGNoICh3b3JrVW5pdFN0b3JlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2NhY2hlJzpcbiAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgLy8gSW5zaWRlIGNhY2hlIHNjb3BlcywgbWFya2luZyBhIHNjb3BlIGFzIGR5bmFtaWMgaGFzIG5vIGVmZmVjdCxcbiAgICAgICAgLy8gYmVjYXVzZSB0aGUgb3V0ZXIgY2FjaGUgc2NvcGUgY3JlYXRlcyBhIGNhY2hlIGJvdW5kYXJ5LiBUaGlzIGlzXG4gICAgICAgIC8vIHN1YnRseSBkaWZmZXJlbnQgZnJvbSByZWFkaW5nIGEgZHluYW1pYyBkYXRhIHNvdXJjZSwgd2hpY2ggaXNcbiAgICAgICAgLy8gZm9yYmlkZGVuIGluc2lkZSBhIGNhY2hlIHNjb3BlLlxuICAgICAgICByZXR1cm5cbiAgICAgIGNhc2UgJ3ByaXZhdGUtY2FjaGUnOlxuICAgICAgICAvLyBBIHByaXZhdGUgY2FjaGUgc2NvcGUgaXMgYWxyZWFkeSBkeW5hbWljIGJ5IGRlZmluaXRpb24uXG4gICAgICAgIHJldHVyblxuICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICBjYXNlICdwcmVyZW5kZXItcHByJzpcbiAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgY2FzZSAnZ2VuZXJhdGUtc3RhdGljLXBhcmFtcyc6XG4gICAgICAgIGJyZWFrXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB3b3JrVW5pdFN0b3JlIHNhdGlzZmllcyBuZXZlclxuICAgIH1cbiAgfVxuXG4gIC8vIElmIHdlJ3JlIGZvcmNpbmcgZHluYW1pYyByZW5kZXJpbmcgb3Igd2UncmUgZm9yY2luZyBzdGF0aWMgcmVuZGVyaW5nLCB3ZVxuICAvLyBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nIGhlcmUgYmVjYXVzZSB0aGUgZW50aXJlIHBhZ2UgaXMgYWxyZWFkeSBkeW5hbWljXG4gIC8vIG9yIGl0J3Mgc3RhdGljIGFuZCBpdCBzaG91bGQgbm90IHRocm93IG9yIHBvc3Rwb25lIGhlcmUuXG4gIGlmIChzdG9yZS5mb3JjZUR5bmFtaWMgfHwgc3RvcmUuZm9yY2VTdGF0aWMpIHJldHVyblxuXG4gIGlmIChzdG9yZS5keW5hbWljU2hvdWxkRXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgU3RhdGljR2VuQmFpbG91dEVycm9yKFxuICAgICAgYFJvdXRlICR7c3RvcmUucm91dGV9IHdpdGggXFxgZHluYW1pYyA9IFwiZXJyb3JcIlxcYCBjb3VsZG4ndCBiZSByZW5kZXJlZCBzdGF0aWNhbGx5IGJlY2F1c2UgaXQgdXNlZCBcXGAke2V4cHJlc3Npb259XFxgLiBTZWUgbW9yZSBpbmZvIGhlcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JlbmRlcmluZy9zdGF0aWMtYW5kLWR5bmFtaWMjZHluYW1pYy1yZW5kZXJpbmdgXG4gICAgKVxuICB9XG5cbiAgaWYgKHdvcmtVbml0U3RvcmUpIHtcbiAgICBzd2l0Y2ggKHdvcmtVbml0U3RvcmUudHlwZSkge1xuICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgIHJldHVybiBwb3N0cG9uZVdpdGhUcmFja2luZyhcbiAgICAgICAgICBzdG9yZS5yb3V0ZSxcbiAgICAgICAgICBleHByZXNzaW9uLFxuICAgICAgICAgIHdvcmtVbml0U3RvcmUuZHluYW1pY1RyYWNraW5nXG4gICAgICAgIClcbiAgICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgICAgICB3b3JrVW5pdFN0b3JlLnJldmFsaWRhdGUgPSAwXG5cbiAgICAgICAgLy8gV2UgYXJlbid0IHByZXJlbmRlcmluZywgYnV0IHdlIGFyZSBnZW5lcmF0aW5nIGEgc3RhdGljIHBhZ2UuIFdlIG5lZWRcbiAgICAgICAgLy8gdG8gYmFpbCBvdXQgb2Ygc3RhdGljIGdlbmVyYXRpb24uXG4gICAgICAgIGNvbnN0IGVyciA9IG5ldyBEeW5hbWljU2VydmVyRXJyb3IoXG4gICAgICAgICAgYFJvdXRlICR7c3RvcmUucm91dGV9IGNvdWxkbid0IGJlIHJlbmRlcmVkIHN0YXRpY2FsbHkgYmVjYXVzZSBpdCB1c2VkICR7ZXhwcmVzc2lvbn0uIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZHluYW1pYy1zZXJ2ZXItZXJyb3JgXG4gICAgICAgIClcbiAgICAgICAgc3RvcmUuZHluYW1pY1VzYWdlRGVzY3JpcHRpb24gPSBleHByZXNzaW9uXG4gICAgICAgIHN0b3JlLmR5bmFtaWNVc2FnZVN0YWNrID0gZXJyLnN0YWNrXG5cbiAgICAgICAgdGhyb3cgZXJyXG4gICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB3b3JrVW5pdFN0b3JlLnVzZWREeW5hbWljID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdnZW5lcmF0ZS1zdGF0aWMtcGFyYW1zJzpcbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHdvcmtVbml0U3RvcmUgc2F0aXNmaWVzIG5ldmVyXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBtZWFudCB0byBiZSB1c2VkIHdoZW4gcHJlcmVuZGVyaW5nIHdpdGhvdXQgY2FjaGVDb21wb25lbnRzIG9yIFBQUi5cbiAqIFdoZW4gY2FsbGVkIGR1cmluZyBhIGJ1aWxkIGl0IHdpbGwgY2F1c2UgTmV4dC5qcyB0byBjb25zaWRlciB0aGUgcm91dGUgYXMgZHluYW1pYy5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRocm93VG9JbnRlcnJ1cHRTdGF0aWNHZW5lcmF0aW9uKFxuICBleHByZXNzaW9uOiBzdHJpbmcsXG4gIHN0b3JlOiBXb3JrU3RvcmUsXG4gIHByZXJlbmRlclN0b3JlOiBQcmVyZW5kZXJTdG9yZUxlZ2FjeVxuKTogbmV2ZXIge1xuICAvLyBXZSBhcmVuJ3QgcHJlcmVuZGVyaW5nIGJ1dCB3ZSBhcmUgZ2VuZXJhdGluZyBhIHN0YXRpYyBwYWdlLiBXZSBuZWVkIHRvIGJhaWwgb3V0IG9mIHN0YXRpYyBnZW5lcmF0aW9uXG4gIGNvbnN0IGVyciA9IG5ldyBEeW5hbWljU2VydmVyRXJyb3IoXG4gICAgYFJvdXRlICR7c3RvcmUucm91dGV9IGNvdWxkbid0IGJlIHJlbmRlcmVkIHN0YXRpY2FsbHkgYmVjYXVzZSBpdCB1c2VkIFxcYCR7ZXhwcmVzc2lvbn1cXGAuIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZHluYW1pYy1zZXJ2ZXItZXJyb3JgXG4gIClcblxuICBwcmVyZW5kZXJTdG9yZS5yZXZhbGlkYXRlID0gMFxuXG4gIHN0b3JlLmR5bmFtaWNVc2FnZURlc2NyaXB0aW9uID0gZXhwcmVzc2lvblxuICBzdG9yZS5keW5hbWljVXNhZ2VTdGFjayA9IGVyci5zdGFja1xuXG4gIHRocm93IGVyclxufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgdG8gdHJhY2sgd2hldGhlciBzb21ldGhpbmcgZHluYW1pYyBoYXBwZW5lZCBldmVuIHdoZW5cbiAqIHdlIGFyZSBpbiBhIGR5bmFtaWMgcmVuZGVyLiBUaGlzIGlzIHVzZWZ1bCBmb3IgRGV2IHdoZXJlIGFsbCByZW5kZXJzIGFyZSBkeW5hbWljIGJ1dFxuICogd2Ugc3RpbGwgdHJhY2sgd2hldGhlciBkeW5hbWljIEFQSXMgd2VyZSBhY2Nlc3NlZCBmb3IgaGVscGZ1bCBtZXNzYWdpbmdcbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYWNrRHluYW1pY0RhdGFJbkR5bmFtaWNSZW5kZXIod29ya1VuaXRTdG9yZTogV29ya1VuaXRTdG9yZSkge1xuICBzd2l0Y2ggKHdvcmtVbml0U3RvcmUudHlwZSkge1xuICAgIGNhc2UgJ2NhY2hlJzpcbiAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAvLyBJbnNpZGUgY2FjaGUgc2NvcGVzLCBtYXJraW5nIGEgc2NvcGUgYXMgZHluYW1pYyBoYXMgbm8gZWZmZWN0LFxuICAgICAgLy8gYmVjYXVzZSB0aGUgb3V0ZXIgY2FjaGUgc2NvcGUgY3JlYXRlcyBhIGNhY2hlIGJvdW5kYXJ5LiBUaGlzIGlzXG4gICAgICAvLyBzdWJ0bHkgZGlmZmVyZW50IGZyb20gcmVhZGluZyBhIGR5bmFtaWMgZGF0YSBzb3VyY2UsIHdoaWNoIGlzXG4gICAgICAvLyBmb3JiaWRkZW4gaW5zaWRlIGEgY2FjaGUgc2NvcGUuXG4gICAgICByZXR1cm5cbiAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgIC8vIEEgcHJpdmF0ZSBjYWNoZSBzY29wZSBpcyBhbHJlYWR5IGR5bmFtaWMgYnkgZGVmaW5pdGlvbi5cbiAgICAgIHJldHVyblxuICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgIGNhc2UgJ3ZhbGlkYXRpb24tY2xpZW50JzpcbiAgICBjYXNlICdnZW5lcmF0ZS1zdGF0aWMtcGFyYW1zJzpcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncmVxdWVzdCc6XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB3b3JrVW5pdFN0b3JlLnVzZWREeW5hbWljID0gdHJ1ZVxuICAgICAgfVxuICAgICAgYnJlYWtcbiAgICBkZWZhdWx0OlxuICAgICAgd29ya1VuaXRTdG9yZSBzYXRpc2ZpZXMgbmV2ZXJcbiAgfVxufVxuXG5mdW5jdGlvbiBhYm9ydE9uU3luY2hyb25vdXNEeW5hbWljRGF0YUFjY2VzcyhcbiAgcm91dGU6IHN0cmluZyxcbiAgZXhwcmVzc2lvbjogc3RyaW5nLFxuICBwcmVyZW5kZXJTdG9yZTogUHJlcmVuZGVyU3RvcmVNb2Rlcm5cbik6IHZvaWQge1xuICBjb25zdCByZWFzb24gPSBgUm91dGUgJHtyb3V0ZX0gbmVlZHMgdG8gYmFpbCBvdXQgb2YgcHJlcmVuZGVyaW5nIGF0IHRoaXMgcG9pbnQgYmVjYXVzZSBpdCB1c2VkICR7ZXhwcmVzc2lvbn0uYFxuXG4gIGNvbnN0IGVycm9yID0gY3JlYXRlUHJlcmVuZGVySW50ZXJydXB0ZWRFcnJvcihyZWFzb24pXG5cbiAgcHJlcmVuZGVyU3RvcmUuY29udHJvbGxlci5hYm9ydChlcnJvcilcblxuICBjb25zdCBkeW5hbWljVHJhY2tpbmcgPSBwcmVyZW5kZXJTdG9yZS5keW5hbWljVHJhY2tpbmdcbiAgaWYgKGR5bmFtaWNUcmFja2luZykge1xuICAgIGR5bmFtaWNUcmFja2luZy5keW5hbWljQWNjZXNzZXMucHVzaCh7XG4gICAgICAvLyBXaGVuIHdlIGFyZW4ndCBkZWJ1Z2dpbmcsIHdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGFub3RoZXIgZXJyb3IgZm9yIHRoZVxuICAgICAgLy8gc3RhY2sgdHJhY2UuXG4gICAgICBzdGFjazogZHluYW1pY1RyYWNraW5nLmlzRGVidWdEeW5hbWljQWNjZXNzZXNcbiAgICAgICAgPyBuZXcgRXJyb3IoKS5zdGFja1xuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGV4cHJlc3Npb24sXG4gICAgfSlcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWJvcnRPblN5bmNocm9ub3VzUGxhdGZvcm1JT0FjY2VzcyhcbiAgcm91dGU6IHN0cmluZyxcbiAgZXhwcmVzc2lvbjogc3RyaW5nLFxuICBlcnJvcldpdGhTdGFjazogRXJyb3IsXG4gIHByZXJlbmRlclN0b3JlOiBQcmVyZW5kZXJTdG9yZU1vZGVyblxuKTogdm9pZCB7XG4gIGNvbnN0IGR5bmFtaWNUcmFja2luZyA9IHByZXJlbmRlclN0b3JlLmR5bmFtaWNUcmFja2luZ1xuICBhYm9ydE9uU3luY2hyb25vdXNEeW5hbWljRGF0YUFjY2Vzcyhyb3V0ZSwgZXhwcmVzc2lvbiwgcHJlcmVuZGVyU3RvcmUpXG4gIC8vIEl0IGlzIGltcG9ydGFudCB0aGF0IHdlIHNldCB0aGlzIHRyYWNraW5nIHZhbHVlIGFmdGVyIGFib3J0aW5nLiBBYm9ydHMgYXJlIGV4ZWN1dGVkXG4gIC8vIHN5bmNocm9ub3VzbHkgZXhjZXB0IGZvciB0aGUgY2FzZSB3aGVyZSB5b3UgYWJvcnQgZHVyaW5nIHJlbmRlciBpdHNlbGYuIEJ5IHNldHRpbmcgdGhpc1xuICAvLyB2YWx1ZSBsYXRlIHdlIGNhbiB1c2UgaXQgdG8gZGV0ZXJtaW5lIGlmIGFueSBvZiB0aGUgYWJvcnRlZCB0YXNrcyBhcmUgdGhlIHRhc2sgdGhhdFxuICAvLyBjYWxsZWQgdGhlIHN5bmMgSU8gZXhwcmVzc2lvbiBpbiB0aGUgZmlyc3QgcGxhY2UuXG4gIGlmIChkeW5hbWljVHJhY2tpbmcpIHtcbiAgICBpZiAoZHluYW1pY1RyYWNraW5nLnN5bmNEeW5hbWljRXJyb3JXaXRoU3RhY2sgPT09IG51bGwpIHtcbiAgICAgIGR5bmFtaWNUcmFja2luZy5zeW5jRHluYW1pY0Vycm9yV2l0aFN0YWNrID0gZXJyb3JXaXRoU3RhY2tcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiB1c2UgdGhpcyBmdW5jdGlvbiB3aGVuIHByZXJlbmRlcmluZyB3aXRoIGNhY2hlQ29tcG9uZW50cy4gSWYgd2UgYXJlIGRvaW5nIGFcbiAqIHByb3NwZWN0aXZlIHByZXJlbmRlciB3ZSBkb24ndCBhY3R1YWxseSBhYm9ydCBiZWNhdXNlIHdlIHdhbnQgdG8gZGlzY292ZXJcbiAqIGFsbCBjYWNoZXMgZm9yIHRoZSBzaGVsbC4gSWYgdGhpcyBpcyB0aGUgYWN0dWFsIHByZXJlbmRlciB3ZSBkbyBhYm9ydC5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGFjY2VwdHMgYSBwcmVyZW5kZXJTdG9yZSBidXQgdGhlIGNhbGxlciBzaG91bGQgZW5zdXJlIHdlJ3JlXG4gKiBhY3R1YWxseSBydW5uaW5nIGluIGNhY2hlQ29tcG9uZW50cyBtb2RlLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWJvcnRBbmRUaHJvd09uU3luY2hyb25vdXNSZXF1ZXN0RGF0YUFjY2VzcyhcbiAgcm91dGU6IHN0cmluZyxcbiAgZXhwcmVzc2lvbjogc3RyaW5nLFxuICBlcnJvcldpdGhTdGFjazogRXJyb3IsXG4gIHByZXJlbmRlclN0b3JlOiBQcmVyZW5kZXJTdG9yZU1vZGVyblxuKTogbmV2ZXIge1xuICBjb25zdCBwcmVyZW5kZXJTaWduYWwgPSBwcmVyZW5kZXJTdG9yZS5jb250cm9sbGVyLnNpZ25hbFxuICBpZiAocHJlcmVuZGVyU2lnbmFsLmFib3J0ZWQgPT09IGZhbHNlKSB7XG4gICAgLy8gVE9ETyBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gbW92ZSB0aGlzIGFib3J0ZWQgY2hlY2sgaW50byB0aGUgY2FsbHNpdGUgc28gd2UgY2FuIGF2b2lkIG1ha2luZ1xuICAgIC8vIHRoZSBlcnJvciBvYmplY3Qgd2hlbiBpdCBpc24ndCByZWxldmFudCB0byB0aGUgYWJvcnRpbmcgb2YgdGhlIHByZXJlbmRlciBob3dldmVyXG4gICAgLy8gc2luY2Ugd2UgbmVlZCB0aGUgdGhyb3cgc2VtYW50aWNzIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB3ZSBhYm9ydCBpdCBpcyBlYXNpZXIgdG8gbGFuZFxuICAgIC8vIHRoaXMgd2F5LiBTZWUgaG93IHRoaXMgd2FzIGhhbmRsZWQgd2l0aCBgYWJvcnRPblN5bmNocm9ub3VzUGxhdGZvcm1JT0FjY2Vzc2AgZm9yIGEgY2xvc2VyXG4gICAgLy8gdG8gaWRlYWwgaW1wbGVtZW50YXRpb25cbiAgICBhYm9ydE9uU3luY2hyb25vdXNEeW5hbWljRGF0YUFjY2Vzcyhyb3V0ZSwgZXhwcmVzc2lvbiwgcHJlcmVuZGVyU3RvcmUpXG4gICAgLy8gSXQgaXMgaW1wb3J0YW50IHRoYXQgd2Ugc2V0IHRoaXMgdHJhY2tpbmcgdmFsdWUgYWZ0ZXIgYWJvcnRpbmcuIEFib3J0cyBhcmUgZXhlY3V0ZWRcbiAgICAvLyBzeW5jaHJvbm91c2x5IGV4Y2VwdCBmb3IgdGhlIGNhc2Ugd2hlcmUgeW91IGFib3J0IGR1cmluZyByZW5kZXIgaXRzZWxmLiBCeSBzZXR0aW5nIHRoaXNcbiAgICAvLyB2YWx1ZSBsYXRlIHdlIGNhbiB1c2UgaXQgdG8gZGV0ZXJtaW5lIGlmIGFueSBvZiB0aGUgYWJvcnRlZCB0YXNrcyBhcmUgdGhlIHRhc2sgdGhhdFxuICAgIC8vIGNhbGxlZCB0aGUgc3luYyBJTyBleHByZXNzaW9uIGluIHRoZSBmaXJzdCBwbGFjZS5cbiAgICBjb25zdCBkeW5hbWljVHJhY2tpbmcgPSBwcmVyZW5kZXJTdG9yZS5keW5hbWljVHJhY2tpbmdcbiAgICBpZiAoZHluYW1pY1RyYWNraW5nKSB7XG4gICAgICBpZiAoZHluYW1pY1RyYWNraW5nLnN5bmNEeW5hbWljRXJyb3JXaXRoU3RhY2sgPT09IG51bGwpIHtcbiAgICAgICAgZHluYW1pY1RyYWNraW5nLnN5bmNEeW5hbWljRXJyb3JXaXRoU3RhY2sgPSBlcnJvcldpdGhTdGFja1xuICAgICAgfVxuICAgIH1cbiAgfVxuICB0aHJvdyBjcmVhdGVQcmVyZW5kZXJJbnRlcnJ1cHRlZEVycm9yKFxuICAgIGBSb3V0ZSAke3JvdXRlfSBuZWVkcyB0byBiYWlsIG91dCBvZiBwcmVyZW5kZXJpbmcgYXQgdGhpcyBwb2ludCBiZWNhdXNlIGl0IHVzZWQgJHtleHByZXNzaW9ufS5gXG4gIClcbn1cblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCB3aWxsIGNhbGwgYFJlYWN0LnBvc3Rwb25lYCB0aGF0IHRocm93cyB0aGUgcG9zdHBvbmVkIGVycm9yLlxuICovXG50eXBlIFBvc3Rwb25lUHJvcHMgPSB7XG4gIHJlYXNvbjogc3RyaW5nXG4gIHJvdXRlOiBzdHJpbmdcbn1cbmV4cG9ydCBmdW5jdGlvbiBQb3N0cG9uZSh7IHJlYXNvbiwgcm91dGUgfTogUG9zdHBvbmVQcm9wcyk6IG5ldmVyIHtcbiAgY29uc3QgcHJlcmVuZGVyU3RvcmUgPSB3b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpXG4gIGNvbnN0IGR5bmFtaWNUcmFja2luZyA9XG4gICAgcHJlcmVuZGVyU3RvcmUgJiYgcHJlcmVuZGVyU3RvcmUudHlwZSA9PT0gJ3ByZXJlbmRlci1wcHInXG4gICAgICA/IHByZXJlbmRlclN0b3JlLmR5bmFtaWNUcmFja2luZ1xuICAgICAgOiBudWxsXG4gIHBvc3Rwb25lV2l0aFRyYWNraW5nKHJvdXRlLCByZWFzb24sIGR5bmFtaWNUcmFja2luZylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc3Rwb25lV2l0aFRyYWNraW5nKFxuICByb3V0ZTogc3RyaW5nLFxuICBleHByZXNzaW9uOiBzdHJpbmcsXG4gIGR5bmFtaWNUcmFja2luZzogbnVsbCB8IER5bmFtaWNUcmFja2luZ1N0YXRlXG4pOiBuZXZlciB7XG4gIGFzc2VydFBvc3Rwb25lKClcbiAgaWYgKGR5bmFtaWNUcmFja2luZykge1xuICAgIGR5bmFtaWNUcmFja2luZy5keW5hbWljQWNjZXNzZXMucHVzaCh7XG4gICAgICAvLyBXaGVuIHdlIGFyZW4ndCBkZWJ1Z2dpbmcsIHdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGFub3RoZXIgZXJyb3IgZm9yIHRoZVxuICAgICAgLy8gc3RhY2sgdHJhY2UuXG4gICAgICBzdGFjazogZHluYW1pY1RyYWNraW5nLmlzRGVidWdEeW5hbWljQWNjZXNzZXNcbiAgICAgICAgPyBuZXcgRXJyb3IoKS5zdGFja1xuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGV4cHJlc3Npb24sXG4gICAgfSlcbiAgfVxuXG4gIFJlYWN0LnVuc3RhYmxlX3Bvc3Rwb25lKGNyZWF0ZVBvc3Rwb25lUmVhc29uKHJvdXRlLCBleHByZXNzaW9uKSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlUG9zdHBvbmVSZWFzb24ocm91dGU6IHN0cmluZywgZXhwcmVzc2lvbjogc3RyaW5nKSB7XG4gIHJldHVybiAoXG4gICAgYFJvdXRlICR7cm91dGV9IG5lZWRzIHRvIGJhaWwgb3V0IG9mIHByZXJlbmRlcmluZyBhdCB0aGlzIHBvaW50IGJlY2F1c2UgaXQgdXNlZCAke2V4cHJlc3Npb259LiBgICtcbiAgICBgUmVhY3QgdGhyb3dzIHRoaXMgc3BlY2lhbCBvYmplY3QgdG8gaW5kaWNhdGUgd2hlcmUuIEl0IHNob3VsZCBub3QgYmUgY2F1Z2h0IGJ5IGAgK1xuICAgIGB5b3VyIG93biB0cnkvY2F0Y2guIExlYXJuIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL3Bwci1jYXVnaHQtZXJyb3JgXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRHluYW1pY1Bvc3Rwb25lKGVycjogdW5rbm93bikge1xuICBpZiAoXG4gICAgdHlwZW9mIGVyciA9PT0gJ29iamVjdCcgJiZcbiAgICBlcnIgIT09IG51bGwgJiZcbiAgICB0eXBlb2YgKGVyciBhcyBhbnkpLm1lc3NhZ2UgPT09ICdzdHJpbmcnXG4gICkge1xuICAgIHJldHVybiBpc0R5bmFtaWNQb3N0cG9uZVJlYXNvbigoZXJyIGFzIGFueSkubWVzc2FnZSlcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gaXNEeW5hbWljUG9zdHBvbmVSZWFzb24ocmVhc29uOiBzdHJpbmcpIHtcbiAgcmV0dXJuIChcbiAgICByZWFzb24uaW5jbHVkZXMoXG4gICAgICAnbmVlZHMgdG8gYmFpbCBvdXQgb2YgcHJlcmVuZGVyaW5nIGF0IHRoaXMgcG9pbnQgYmVjYXVzZSBpdCB1c2VkJ1xuICAgICkgJiZcbiAgICByZWFzb24uaW5jbHVkZXMoXG4gICAgICAnTGVhcm4gbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvcHByLWNhdWdodC1lcnJvcidcbiAgICApXG4gIClcbn1cblxuaWYgKGlzRHluYW1pY1Bvc3Rwb25lUmVhc29uKGNyZWF0ZVBvc3Rwb25lUmVhc29uKCclJSUnLCAnXl5eJykpID09PSBmYWxzZSkge1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgJ0ludmFyaWFudDogaXNEeW5hbWljUG9zdHBvbmUgbWlzaWRlbnRpZmllZCBhIHBvc3Rwb25lIHJlYXNvbi4gVGhpcyBpcyBhIGJ1ZyBpbiBOZXh0LmpzJ1xuICApXG59XG5cbmNvbnN0IE5FWFRfUFJFUkVOREVSX0lOVEVSUlVQVEVEID0gJ05FWFRfUFJFUkVOREVSX0lOVEVSUlVQVEVEJ1xuXG5mdW5jdGlvbiBjcmVhdGVQcmVyZW5kZXJJbnRlcnJ1cHRlZEVycm9yKG1lc3NhZ2U6IHN0cmluZyk6IEVycm9yIHtcbiAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSlcbiAgOyhlcnJvciBhcyBhbnkpLmRpZ2VzdCA9IE5FWFRfUFJFUkVOREVSX0lOVEVSUlVQVEVEXG4gIHJldHVybiBlcnJvclxufVxuXG50eXBlIERpZ2VzdEVycm9yID0gRXJyb3IgJiB7XG4gIGRpZ2VzdDogc3RyaW5nXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ByZXJlbmRlckludGVycnVwdGVkRXJyb3IoXG4gIGVycm9yOiB1bmtub3duXG4pOiBlcnJvciBpcyBEaWdlc3RFcnJvciB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIGVycm9yID09PSAnb2JqZWN0JyAmJlxuICAgIGVycm9yICE9PSBudWxsICYmXG4gICAgKGVycm9yIGFzIGFueSkuZGlnZXN0ID09PSBORVhUX1BSRVJFTkRFUl9JTlRFUlJVUFRFRCAmJlxuICAgICduYW1lJyBpbiBlcnJvciAmJlxuICAgICdtZXNzYWdlJyBpbiBlcnJvciAmJlxuICAgIGVycm9yIGluc3RhbmNlb2YgRXJyb3JcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWNjZXNzZWREeW5hbWljRGF0YShcbiAgZHluYW1pY0FjY2Vzc2VzOiBBcnJheTxEeW5hbWljQWNjZXNzPlxuKTogYm9vbGVhbiB7XG4gIHJldHVybiBkeW5hbWljQWNjZXNzZXMubGVuZ3RoID4gMFxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3VtZUR5bmFtaWNBY2Nlc3MoXG4gIHNlcnZlckR5bmFtaWM6IER5bmFtaWNUcmFja2luZ1N0YXRlLFxuICBjbGllbnREeW5hbWljOiBEeW5hbWljVHJhY2tpbmdTdGF0ZVxuKTogRHluYW1pY1RyYWNraW5nU3RhdGVbJ2R5bmFtaWNBY2Nlc3NlcyddIHtcbiAgLy8gV2UgbXV0YXRlIGJlY2F1c2Ugd2Ugb25seSBjYWxsIHRoaXMgb25jZSB3ZSBhcmUgbm8gbG9uZ2VyIHdyaXRpbmdcbiAgLy8gdG8gdGhlIGR5bmFtaWNUcmFja2luZ1N0YXRlIGFuZCBpdCdzIG1vcmUgZWZmaWNpZW50IHRoYW4gY3JlYXRpbmcgYSBuZXdcbiAgLy8gYXJyYXkuXG4gIHNlcnZlckR5bmFtaWMuZHluYW1pY0FjY2Vzc2VzLnB1c2goLi4uY2xpZW50RHluYW1pYy5keW5hbWljQWNjZXNzZXMpXG4gIHJldHVybiBzZXJ2ZXJEeW5hbWljLmR5bmFtaWNBY2Nlc3Nlc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RHluYW1pY0FQSUFjY2Vzc2VzKFxuICBkeW5hbWljQWNjZXNzZXM6IEFycmF5PER5bmFtaWNBY2Nlc3M+XG4pOiBzdHJpbmdbXSB7XG4gIHJldHVybiBkeW5hbWljQWNjZXNzZXNcbiAgICAuZmlsdGVyKFxuICAgICAgKGFjY2Vzcyk6IGFjY2VzcyBpcyBSZXF1aXJlZDxEeW5hbWljQWNjZXNzPiA9PlxuICAgICAgICB0eXBlb2YgYWNjZXNzLnN0YWNrID09PSAnc3RyaW5nJyAmJiBhY2Nlc3Muc3RhY2subGVuZ3RoID4gMFxuICAgIClcbiAgICAubWFwKCh7IGV4cHJlc3Npb24sIHN0YWNrIH0pID0+IHtcbiAgICAgIHN0YWNrID0gc3RhY2tcbiAgICAgICAgLnNwbGl0KCdcXG4nKVxuICAgICAgICAvLyBSZW1vdmUgdGhlIFwiRXJyb3I6IFwiIHByZWZpeCBmcm9tIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBzdGFjayB0cmFjZSBhc1xuICAgICAgICAvLyB3ZWxsIGFzIHRoZSBmaXJzdCA0IGxpbmVzIG9mIHRoZSBzdGFjayB0cmFjZSB3aGljaCBpcyB0aGUgZGlzdGFuY2VcbiAgICAgICAgLy8gZnJvbSB0aGUgdXNlciBjb2RlIGFuZCB0aGUgYG5ldyBFcnJvcigpLnN0YWNrYCBjYWxsLlxuICAgICAgICAuc2xpY2UoNClcbiAgICAgICAgLmZpbHRlcigobGluZSkgPT4ge1xuICAgICAgICAgIC8vIEV4Y2x1ZGUgTmV4dC5qcyBpbnRlcm5hbHMgZnJvbSB0aGUgc3RhY2sgdHJhY2UuXG4gICAgICAgICAgaWYgKGxpbmUuaW5jbHVkZXMoJ25vZGVfbW9kdWxlcy9uZXh0LycpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBFeGNsdWRlIGFub255bW91cyBmdW5jdGlvbnMgZnJvbSB0aGUgc3RhY2sgdHJhY2UuXG4gICAgICAgICAgaWYgKGxpbmUuaW5jbHVkZXMoJyAoPGFub255bW91cz4pJykpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEV4Y2x1ZGUgTm9kZS5qcyBpbnRlcm5hbHMgZnJvbSB0aGUgc3RhY2sgdHJhY2UuXG4gICAgICAgICAgaWYgKGxpbmUuaW5jbHVkZXMoJyAobm9kZTonKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oJ1xcbicpXG4gICAgICByZXR1cm4gYER5bmFtaWMgQVBJIFVzYWdlIERlYnVnIC0gJHtleHByZXNzaW9ufTpcXG4ke3N0YWNrfWBcbiAgICB9KVxufVxuXG5mdW5jdGlvbiBhc3NlcnRQb3N0cG9uZSgpIHtcbiAgaWYgKCFoYXNQb3N0cG9uZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBJbnZhcmlhbnQ6IFJlYWN0LnVuc3RhYmxlX3Bvc3Rwb25lIGlzIG5vdCBkZWZpbmVkLiBUaGlzIHN1Z2dlc3RzIHRoZSB3cm9uZyB2ZXJzaW9uIG9mIFJlYWN0IHdhcyBsb2FkZWQuIFRoaXMgaXMgYSBidWcgaW4gTmV4dC5qc2BcbiAgICApXG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIGlzIGEgYml0IG9mIGEgaGFjayB0byBhbGxvdyB1cyB0byBhYm9ydCBhIHJlbmRlciB1c2luZyBhIFBvc3Rwb25lIGluc3RhbmNlIGluc3RlYWQgb2YgYW4gRXJyb3Igd2hpY2ggY2hhbmdlcyBSZWFjdCdzXG4gKiBhYm9ydCBzZW1hbnRpY3Mgc2xpZ2h0bHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZW5kZXJJbkJyb3dzZXJBYm9ydFNpZ25hbCgpOiBBYm9ydFNpZ25hbCB7XG4gIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgY29udHJvbGxlci5hYm9ydChuZXcgQmFpbG91dFRvQ1NSRXJyb3IoJ1JlbmRlciBpbiBCcm93c2VyJykpXG4gIHJldHVybiBjb250cm9sbGVyLnNpZ25hbFxufVxuXG4vKipcbiAqIEluIGEgcHJlcmVuZGVyLCB3ZSBtYXkgZW5kIHVwIHdpdGggaGFuZ2luZyBQcm9taXNlcyBhcyBpbnB1dHMgZHVlIHRoZW1cbiAqIHN0YWxsaW5nIG9uIGNvbm5lY3Rpb24oKSBvciBiZWNhdXNlIHRoZXkncmUgbG9hZGluZyBkeW5hbWljIGRhdGEuIEluIHRoYXRcbiAqIGNhc2Ugd2UgbmVlZCB0byBhYm9ydCB0aGUgZW5jb2Rpbmcgb2YgYXJndW1lbnRzIHNpbmNlIHRoZXknbGwgbmV2ZXIgY29tcGxldGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVIYW5naW5nSW5wdXRBYm9ydFNpZ25hbChcbiAgd29ya1VuaXRTdG9yZTogV29ya1VuaXRTdG9yZVxuKTogQWJvcnRTaWduYWwgfCB1bmRlZmluZWQge1xuICBzd2l0Y2ggKHdvcmtVbml0U3RvcmUudHlwZSkge1xuICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuXG4gICAgICBpZiAod29ya1VuaXRTdG9yZS5jYWNoZVNpZ25hbCkge1xuICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgY2FjaGVTaWduYWwgaXQgbWVhbnMgd2UncmUgaW4gYSBwcm9zcGVjdGl2ZSByZW5kZXIuIElmXG4gICAgICAgIC8vIHRoZSBpbnB1dCB3ZSdyZSB3YWl0aW5nIG9uIGlzIGNvbWluZyBmcm9tIGFub3RoZXIgY2FjaGUsIHdlIGRvIHdhbnRcbiAgICAgICAgLy8gdG8gd2FpdCBmb3IgaXQgc28gdGhhdCB3ZSBjYW4gcmVzb2x2ZSB0aGlzIGNhY2hlIGVudHJ5IHRvby5cbiAgICAgICAgd29ya1VuaXRTdG9yZS5jYWNoZVNpZ25hbC5pbnB1dFJlYWR5KCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgY29udHJvbGxlci5hYm9ydCgpXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPdGhlcndpc2Ugd2UncmUgaW4gdGhlIGZpbmFsIHJlbmRlciBhbmQgd2Ugc2hvdWxkIGFscmVhZHkgaGF2ZSBhbGxcbiAgICAgICAgLy8gb3VyIGNhY2hlcyBmaWxsZWQuXG4gICAgICAgIC8vIElmIHRoZSBwcmVyZW5kZXIgdXNlcyBzdGFnZXMsIHdlIGhhdmUgd2FpdCB1bnRpbCB0aGUgcnVudGltZSBzdGFnZSxcbiAgICAgICAgLy8gYXQgd2hpY2ggcG9pbnQgYWxsIHJ1bnRpbWUgaW5wdXRzIHdpbGwgYmUgcmVzb2x2ZWQuXG4gICAgICAgIC8vIChvdGhlcndpc2UsIGEgcnVudGltZSBwcmVyZW5kZXIgbWlnaHQgY29uc2lkZXIgYGNvb2tpZXMoKWAgaGFuZ2luZ1xuICAgICAgICAvLyAgZXZlbiB0aG91Z2ggdGhleSdkIHJlc29sdmUgaW4gdGhlIG5leHQgdGFzay4pXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFdlIG1pZ2h0IHN0aWxsIGJlIHdhaXRpbmcgb24gc29tZSBtaWNyb3Rhc2tzIHNvIHdlXG4gICAgICAgIC8vIHdhaXQgb25lIHRpY2sgYmVmb3JlIGdpdmluZyB1cC4gV2hlbiB3ZSBnaXZlIHVwLCB3ZSBzdGlsbCB3YW50IHRvXG4gICAgICAgIC8vIHJlbmRlciB0aGUgY29udGVudCBvZiB0aGlzIGNhY2hlIGFzIGRlZXBseSBhcyB3ZSBjYW4gc28gdGhhdCB3ZSBjYW5cbiAgICAgICAgLy8gc3VzcGVuZCBhcyBkZWVwbHkgYXMgcG9zc2libGUgaW4gdGhlIHRyZWUgb3Igbm90IGF0IGFsbCBpZiB3ZSBkb24ndFxuICAgICAgICAvLyBlbmQgdXAgd2FpdGluZyBmb3IgdGhlIGlucHV0LlxuICAgICAgICBpZiAoXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4IC0tIFdlIGFyZSBkaXNjcmltaW5hdGluZyBiZXR3ZWVuIHR3byBkaWZmZXJlbnQgcmVmaW5lZCB0eXBlcyBhbmQgZG9uJ3QgbmVlZCBhbiBhZGRpdGlvbiBleGhhdXN0aXZlIHN3aXRjaCBoZXJlXG4gICAgICAgICAgd29ya1VuaXRTdG9yZS50eXBlID09PSAncHJlcmVuZGVyLXJ1bnRpbWUnICYmXG4gICAgICAgICAgd29ya1VuaXRTdG9yZS5zdGFnZWRSZW5kZXJpbmdcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgeyBzdGFnZWRSZW5kZXJpbmcgfSA9IHdvcmtVbml0U3RvcmVcbiAgICAgICAgICBzdGFnZWRSZW5kZXJpbmdcbiAgICAgICAgICAgIC53YWl0Rm9yU3RhZ2UoZ2V0UnVudGltZVN0YWdlKHN0YWdlZFJlbmRlcmluZykpXG4gICAgICAgICAgICAudGhlbigoKSA9PiBzY2hlZHVsZU9uTmV4dFRpY2soKCkgPT4gY29udHJvbGxlci5hYm9ydCgpKSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzY2hlZHVsZU9uTmV4dFRpY2soKCkgPT4gY29udHJvbGxlci5hYm9ydCgpKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250cm9sbGVyLnNpZ25hbFxuICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgIGNhc2UgJ3ZhbGlkYXRpb24tY2xpZW50JzpcbiAgICBjYXNlICdwcmVyZW5kZXItcHByJzpcbiAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICBjYXNlICdjYWNoZSc6XG4gICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgY2FzZSAndW5zdGFibGUtY2FjaGUnOlxuICAgIGNhc2UgJ2dlbmVyYXRlLXN0YXRpYy1wYXJhbXMnOlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGRlZmF1bHQ6XG4gICAgICB3b3JrVW5pdFN0b3JlIHNhdGlzZmllcyBuZXZlclxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbm5vdGF0ZUR5bmFtaWNBY2Nlc3MoXG4gIGV4cHJlc3Npb246IHN0cmluZyxcbiAgcHJlcmVuZGVyU3RvcmU6IFByZXJlbmRlclN0b3JlTW9kZXJuIHwgVmFsaWRhdGlvblN0b3JlQ2xpZW50XG4pIHtcbiAgY29uc3QgZHluYW1pY1RyYWNraW5nID0gcHJlcmVuZGVyU3RvcmUuZHluYW1pY1RyYWNraW5nXG4gIGlmIChkeW5hbWljVHJhY2tpbmcpIHtcbiAgICBkeW5hbWljVHJhY2tpbmcuZHluYW1pY0FjY2Vzc2VzLnB1c2goe1xuICAgICAgc3RhY2s6IGR5bmFtaWNUcmFja2luZy5pc0RlYnVnRHluYW1pY0FjY2Vzc2VzXG4gICAgICAgID8gbmV3IEVycm9yKCkuc3RhY2tcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBleHByZXNzaW9uLFxuICAgIH0pXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUR5bmFtaWNSb3V0ZVBhcmFtcyhleHByZXNzaW9uOiBzdHJpbmcpIHtcbiAgY29uc3Qgd29ya1N0b3JlID0gd29ya0FzeW5jU3RvcmFnZS5nZXRTdG9yZSgpXG4gIGNvbnN0IHdvcmtVbml0U3RvcmUgPSB3b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpXG4gIGlmICh3b3JrU3RvcmUgJiYgd29ya1VuaXRTdG9yZSkge1xuICAgIHN3aXRjaCAod29ya1VuaXRTdG9yZS50eXBlKSB7XG4gICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgIGNhc2UgJ3ByZXJlbmRlcic6IHtcbiAgICAgICAgY29uc3QgZmFsbGJhY2tQYXJhbXMgPSB3b3JrVW5pdFN0b3JlLmZhbGxiYWNrUm91dGVQYXJhbXNcblxuICAgICAgICBpZiAoZmFsbGJhY2tQYXJhbXMgJiYgZmFsbGJhY2tQYXJhbXMuc2l6ZSA+IDApIHtcbiAgICAgICAgICAvLyBXZSBhcmUgaW4gYSBwcmVyZW5kZXIgd2l0aCBjYWNoZUNvbXBvbmVudHMgc2VtYW50aWNzLiBXZSBhcmUgZ29pbmcgdG9cbiAgICAgICAgICAvLyBoYW5nIGhlcmUgYW5kIG5ldmVyIHJlc29sdmUuIFRoaXMgd2lsbCBjYXVzZSB0aGUgY3VycmVudGx5XG4gICAgICAgICAgLy8gcmVuZGVyaW5nIGNvbXBvbmVudCB0byBlZmZlY3RpdmVseSBiZSBhIGR5bmFtaWMgaG9sZS5cbiAgICAgICAgICBSZWFjdC51c2UoXG4gICAgICAgICAgICBtYWtlSGFuZ2luZ1Byb21pc2UoXG4gICAgICAgICAgICAgIHdvcmtVbml0U3RvcmUucmVuZGVyU2lnbmFsLFxuICAgICAgICAgICAgICB3b3JrU3RvcmUucm91dGUsXG4gICAgICAgICAgICAgIGV4cHJlc3Npb25cbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOiB7XG4gICAgICAgIGNvbnN0IGZhbGxiYWNrUGFyYW1zID0gd29ya1VuaXRTdG9yZS5mYWxsYmFja1JvdXRlUGFyYW1zXG4gICAgICAgIGlmIChmYWxsYmFja1BhcmFtcyAmJiBmYWxsYmFja1BhcmFtcy5zaXplID4gMCkge1xuICAgICAgICAgIHJldHVybiBwb3N0cG9uZVdpdGhUcmFja2luZyhcbiAgICAgICAgICAgIHdvcmtTdG9yZS5yb3V0ZSxcbiAgICAgICAgICAgIGV4cHJlc3Npb24sXG4gICAgICAgICAgICB3b3JrVW5pdFN0b3JlLmR5bmFtaWNUcmFja2luZ1xuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAndmFsaWRhdGlvbi1jbGllbnQnOiB7XG4gICAgICAgIC8vIERvbid0IGNoZWNrIGZhbGxiYWNrUm91dGVQYXJhbXMgaGVyZS4gV2UgaGFuZGxlIHBhcmFtcyB0aGF0IHdlcmVuJ3RcbiAgICAgICAgLy8gcHJvdmlkZWQgaW4gdGhlIHNhbXBsZXMgdXNpbmcgYSBwcm94eSB0aGF0IHRocm93cyB3aGVuIGFjY2Vzc2VkLlxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgICAgICB0aHJvdyBuZXcgSW52YXJpYW50RXJyb3IoXG4gICAgICAgICAgYFxcYCR7ZXhwcmVzc2lvbn1cXGAgd2FzIGNhbGxlZCBkdXJpbmcgYSBydW50aW1lIHByZXJlbmRlci4gTmV4dC5qcyBzaG91bGQgYmUgcHJldmVudGluZyAke2V4cHJlc3Npb259IGZyb20gYmVpbmcgaW5jbHVkZWQgaW4gc2VydmVyIGNvbXBvbmVudHMgc3RhdGljYWxseSwgYnV0IGRpZCBub3QgaW4gdGhpcyBjYXNlLmBcbiAgICAgICAgKVxuICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICAgIHRocm93IG5ldyBJbnZhcmlhbnRFcnJvcihcbiAgICAgICAgICBgXFxgJHtleHByZXNzaW9ufVxcYCB3YXMgY2FsbGVkIGluc2lkZSBhIGNhY2hlIHNjb3BlLiBOZXh0LmpzIHNob3VsZCBiZSBwcmV2ZW50aW5nICR7ZXhwcmVzc2lvbn0gZnJvbSBiZWluZyBpbmNsdWRlZCBpbiBzZXJ2ZXIgY29tcG9uZW50cyBzdGF0aWNhbGx5LCBidXQgZGlkIG5vdCBpbiB0aGlzIGNhc2UuYFxuICAgICAgICApXG4gICAgICBjYXNlICdnZW5lcmF0ZS1zdGF0aWMtcGFyYW1zJzpcbiAgICAgICAgdGhyb3cgbmV3IEludmFyaWFudEVycm9yKFxuICAgICAgICAgIGBcXGAke2V4cHJlc3Npb259XFxgIHdhcyBjYWxsZWQgaW4gXFxgZ2VuZXJhdGVTdGF0aWNQYXJhbXNcXGAuIE5leHQuanMgc2hvdWxkIGJlIHByZXZlbnRpbmcgJHtleHByZXNzaW9ufSBmcm9tIGJlaW5nIGluY2x1ZGVkIGluIHNlcnZlciBjb21wb25lbnQgZmlsZXMgc3RhdGljYWxseSwgYnV0IGRpZCBub3QgaW4gdGhpcyBjYXNlLmBcbiAgICAgICAgKVxuICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHdvcmtVbml0U3RvcmUgc2F0aXNmaWVzIG5ldmVyXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VEeW5hbWljU2VhcmNoUGFyYW1zKGV4cHJlc3Npb246IHN0cmluZykge1xuICBjb25zdCB3b3JrU3RvcmUgPSB3b3JrQXN5bmNTdG9yYWdlLmdldFN0b3JlKClcbiAgY29uc3Qgd29ya1VuaXRTdG9yZSA9IHdvcmtVbml0QXN5bmNTdG9yYWdlLmdldFN0b3JlKClcblxuICBpZiAoIXdvcmtTdG9yZSkge1xuICAgIC8vIFdlIGFzc3VtZSBwYWdlcyByb3V0ZXIgY29udGV4dCBhbmQganVzdCByZXR1cm5cbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmICghd29ya1VuaXRTdG9yZSkge1xuICAgIHRocm93Rm9yTWlzc2luZ1JlcXVlc3RTdG9yZShleHByZXNzaW9uKVxuICB9XG5cbiAgc3dpdGNoICh3b3JrVW5pdFN0b3JlLnR5cGUpIHtcbiAgICBjYXNlICd2YWxpZGF0aW9uLWNsaWVudCc6XG4gICAgICAvLyBEdXJpbmcgaW5zdGFudCB2YWxpZGF0aW9uIHdlIHRyeSB0byBiZWhhdmUgYXMgY2xvc2UgdG8gY2xpZW50IGFzIHBvc3NpYmxlLFxuICAgICAgLy8gc28gdGhpcyBzaG91bGRuJ3QgaGFuZyBkdXJpbmcgU1NSLlxuICAgICAgcmV0dXJuXG4gICAgY2FzZSAncHJlcmVuZGVyLWNsaWVudCc6IHtcbiAgICAgIFJlYWN0LnVzZShcbiAgICAgICAgbWFrZUhhbmdpbmdQcm9taXNlKFxuICAgICAgICAgIHdvcmtVbml0U3RvcmUucmVuZGVyU2lnbmFsLFxuICAgICAgICAgIHdvcmtTdG9yZS5yb3V0ZSxcbiAgICAgICAgICBleHByZXNzaW9uXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOiB7XG4gICAgICBpZiAod29ya1N0b3JlLmZvcmNlU3RhdGljKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEJhaWxvdXRUb0NTUkVycm9yKGV4cHJlc3Npb24pXG4gICAgfVxuICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgICAgdGhyb3cgbmV3IEludmFyaWFudEVycm9yKFxuICAgICAgICBgXFxgJHtleHByZXNzaW9ufVxcYCB3YXMgY2FsbGVkIGZyb20gYSBTZXJ2ZXIgQ29tcG9uZW50LiBOZXh0LmpzIHNob3VsZCBiZSBwcmV2ZW50aW5nICR7ZXhwcmVzc2lvbn0gZnJvbSBiZWluZyBpbmNsdWRlZCBpbiBzZXJ2ZXIgY29tcG9uZW50cyBzdGF0aWNhbGx5LCBidXQgZGlkIG5vdCBpbiB0aGlzIGNhc2UuYFxuICAgICAgKVxuICAgIGNhc2UgJ2NhY2hlJzpcbiAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICB0aHJvdyBuZXcgSW52YXJpYW50RXJyb3IoXG4gICAgICAgIGBcXGAke2V4cHJlc3Npb259XFxgIHdhcyBjYWxsZWQgaW5zaWRlIGEgY2FjaGUgc2NvcGUuIE5leHQuanMgc2hvdWxkIGJlIHByZXZlbnRpbmcgJHtleHByZXNzaW9ufSBmcm9tIGJlaW5nIGluY2x1ZGVkIGluIHNlcnZlciBjb21wb25lbnRzIHN0YXRpY2FsbHksIGJ1dCBkaWQgbm90IGluIHRoaXMgY2FzZS5gXG4gICAgICApXG4gICAgY2FzZSAnZ2VuZXJhdGUtc3RhdGljLXBhcmFtcyc6XG4gICAgICB0aHJvdyBuZXcgSW52YXJpYW50RXJyb3IoXG4gICAgICAgIGBcXGAke2V4cHJlc3Npb259XFxgIHdhcyBjYWxsZWQgaW4gXFxgZ2VuZXJhdGVTdGF0aWNQYXJhbXNcXGAuIE5leHQuanMgc2hvdWxkIGJlIHByZXZlbnRpbmcgJHtleHByZXNzaW9ufSBmcm9tIGJlaW5nIGluY2x1ZGVkIGluIHNlcnZlciBjb21wb25lbnQgZmlsZXMgc3RhdGljYWxseSwgYnV0IGRpZCBub3QgaW4gdGhpcyBjYXNlLmBcbiAgICAgIClcbiAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgIHJldHVyblxuICAgIGRlZmF1bHQ6XG4gICAgICB3b3JrVW5pdFN0b3JlIHNhdGlzZmllcyBuZXZlclxuICB9XG59XG5cbmNvbnN0IGhhc1N1c3BlbnNlUmVnZXggPSAvXFxuXFxzK2F0IFN1c3BlbnNlIFxcKDxhbm9ueW1vdXM+XFwpL1xuXG4vLyBDb21tb24gaW1wbGljaXQgYm9keSB0YWdzIHRoYXQgUmVhY3Qgd2lsbCB0cmVhdCBhcyBib2R5IHdoZW4gcGxhY2VkIGRpcmVjdGx5IGluIGh0bWxcbmNvbnN0IGJvZHlBbmRJbXBsaWNpdFRhZ3MgPVxuICAnYm9keXxkaXZ8bWFpbnxzZWN0aW9ufGFydGljbGV8YXNpZGV8aGVhZGVyfGZvb3RlcnxuYXZ8Zm9ybXxwfHNwYW58aDF8aDJ8aDN8aDR8aDV8aDYnXG5cbi8vIERldGVjdHMgd2hlbiBSb290TGF5b3V0Qm91bmRhcnkgKG91ciBmcmFtZXdvcmsgbWFya2VyIGNvbXBvbmVudCkgYXBwZWFyc1xuLy8gYWZ0ZXIgU3VzcGVuc2UgaW4gdGhlIGNvbXBvbmVudCBzdGFjaywgaW5kaWNhdGluZyB0aGUgcm9vdCBsYXlvdXQgaXMgd3JhcHBlZFxuLy8gd2l0aGluIGEgU3VzcGVuc2UgYm91bmRhcnkuIEVuc3VyZXMgbm8gYm9keS9odG1sL2ltcGxpY2l0LWJvZHkgY29tcG9uZW50cyBhcmUgaW4gYmV0d2Vlbi5cbi8vXG4vLyBFeGFtcGxlIG1hdGNoZXM6XG4vLyAgIGF0IFN1c3BlbnNlICg8YW5vbnltb3VzPilcbi8vICAgYXQgX19uZXh0X3Jvb3RfbGF5b3V0X2JvdW5kYXJ5X18gKDxhbm9ueW1vdXM+KVxuLy9cbi8vIE9yIHdpdGggb3RoZXIgY29tcG9uZW50cyBpbiBiZXR3ZWVuIChidXQgbm90IGJvZHkvaHRtbC9pbXBsaWNpdC1ib2R5KTpcbi8vICAgYXQgU3VzcGVuc2UgKDxhbm9ueW1vdXM+KVxuLy8gICBhdCBTb21lQ29tcG9uZW50ICg8YW5vbnltb3VzPilcbi8vICAgYXQgX19uZXh0X3Jvb3RfbGF5b3V0X2JvdW5kYXJ5X18gKDxhbm9ueW1vdXM+KVxuY29uc3QgaGFzU3VzcGVuc2VCZWZvcmVSb290TGF5b3V0V2l0aG91dEJvZHlPckltcGxpY2l0Qm9keVJlZ2V4ID0gbmV3IFJlZ0V4cChcbiAgYFxcXFxuXFxcXHMrYXQgU3VzcGVuc2UgXFxcXCg8YW5vbnltb3VzPlxcXFwpKD86KD8hXFxcXG5cXFxccythdCAoPzoke2JvZHlBbmRJbXBsaWNpdFRhZ3N9KSBcXFxcKDxhbm9ueW1vdXM+XFxcXCkpW1xcXFxzXFxcXFNdKSo/XFxcXG5cXFxccythdCAke1JPT1RfTEFZT1VUX0JPVU5EQVJZX05BTUV9IFxcXFwoW15cXFxcbl0qXFxcXClgXG4pXG5cbmNvbnN0IGhhc01ldGFkYXRhUmVnZXggPSBuZXcgUmVnRXhwKFxuICBgXFxcXG5cXFxccythdCAke01FVEFEQVRBX0JPVU5EQVJZX05BTUV9W1xcXFxuXFxcXHNdYFxuKVxuY29uc3QgaGFzVmlld3BvcnRSZWdleCA9IG5ldyBSZWdFeHAoXG4gIGBcXFxcblxcXFxzK2F0ICR7VklFV1BPUlRfQk9VTkRBUllfTkFNRX1bXFxcXG5cXFxcc11gXG4pXG5jb25zdCBoYXNPdXRsZXRSZWdleCA9IG5ldyBSZWdFeHAoYFxcXFxuXFxcXHMrYXQgJHtPVVRMRVRfQk9VTkRBUllfTkFNRX1bXFxcXG5cXFxcc11gKVxuXG5jb25zdCBoYXNJbnN0YW50VmFsaWRhdGlvbkJvdW5kYXJ5UmVnZXggPSBuZXcgUmVnRXhwKFxuICBgXFxcXG5cXFxccythdCAke0lOU1RBTlRfVkFMSURBVElPTl9CT1VOREFSWV9OQU1FfVtcXFxcblxcXFxzXWBcbilcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYWNrQWxsb3dlZER5bmFtaWNBY2Nlc3MoXG4gIHdvcmtTdG9yZTogV29ya1N0b3JlLFxuICBjb21wb25lbnRTdGFjazogc3RyaW5nLFxuICBkeW5hbWljVmFsaWRhdGlvbjogRHluYW1pY1ZhbGlkYXRpb25TdGF0ZSxcbiAgY2xpZW50RHluYW1pYzogRHluYW1pY1RyYWNraW5nU3RhdGVcbikge1xuICBpZiAoaGFzT3V0bGV0UmVnZXgudGVzdChjb21wb25lbnRTdGFjaykpIHtcbiAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHRyYWNrIHRoYXQgdGhpcyBpcyBkeW5hbWljLiBJdCBpcyBvbmx5IHNvIHdoZW4gc29tZXRoaW5nIGVsc2UgaXMgYWxzbyBkeW5hbWljLlxuICAgIHJldHVyblxuICB9IGVsc2UgaWYgKGhhc01ldGFkYXRhUmVnZXgudGVzdChjb21wb25lbnRTdGFjaykpIHtcbiAgICBkeW5hbWljVmFsaWRhdGlvbi5oYXNEeW5hbWljTWV0YWRhdGEgPSB0cnVlXG4gICAgcmV0dXJuXG4gIH0gZWxzZSBpZiAoaGFzVmlld3BvcnRSZWdleC50ZXN0KGNvbXBvbmVudFN0YWNrKSkge1xuICAgIGR5bmFtaWNWYWxpZGF0aW9uLmhhc0R5bmFtaWNWaWV3cG9ydCA9IHRydWVcbiAgICByZXR1cm5cbiAgfSBlbHNlIGlmIChcbiAgICBoYXNTdXNwZW5zZUJlZm9yZVJvb3RMYXlvdXRXaXRob3V0Qm9keU9ySW1wbGljaXRCb2R5UmVnZXgudGVzdChcbiAgICAgIGNvbXBvbmVudFN0YWNrXG4gICAgKVxuICApIHtcbiAgICAvLyBGb3IgU3VzcGVuc2Ugd2l0aGluIGJvZHksIHRoZSBwcmVsdWRlIHdvdWxkbid0IGJlIGVtcHR5IHNvIGl0IHdvdWxkbid0IHZpb2xhdGUgdGhlIGVtcHR5IHN0YXRpYyBzaGVsbHMgcnVsZS5cbiAgICAvLyBCdXQgaWYgeW91IGhhdmUgU3VzcGVuc2UgYWJvdmUgYm9keSwgdGhlIHByZWx1ZGUgaXMgZW1wdHkgYnV0IHdlIGFsbG93IHRoYXQgYmVjYXVzZSBoYXZpbmcgU3VzcGVuc2VcbiAgICAvLyBpcyBhbiBleHBsaWNpdCBzaWduYWwgZnJvbSB0aGUgdXNlciB0aGF0IHRoZXkgYWNrbm93bGVkZ2UgdGhlIGVtcHR5IHNoZWxsIGFuZCB3YW50IGR5bmFtaWMgcmVuZGVyaW5nLlxuICAgIGR5bmFtaWNWYWxpZGF0aW9uLmhhc0FsbG93ZWREeW5hbWljID0gdHJ1ZVxuICAgIGR5bmFtaWNWYWxpZGF0aW9uLmhhc1N1c3BlbnNlQWJvdmVCb2R5ID0gdHJ1ZVxuICAgIHJldHVyblxuICB9IGVsc2UgaWYgKGhhc1N1c3BlbnNlUmVnZXgudGVzdChjb21wb25lbnRTdGFjaykpIHtcbiAgICAvLyB0aGlzIGVycm9yIGhhZCBhIFN1c3BlbnNlIGJvdW5kYXJ5IGFib3ZlIGl0IHNvIHdlIGRvbid0IG5lZWQgdG8gcmVwb3J0IGl0IGFzIGEgc291cmNlXG4gICAgLy8gb2YgZGlzYWxsb3dlZFxuICAgIGR5bmFtaWNWYWxpZGF0aW9uLmhhc0FsbG93ZWREeW5hbWljID0gdHJ1ZVxuICAgIHJldHVyblxuICB9IGVsc2UgaWYgKGNsaWVudER5bmFtaWMuc3luY0R5bmFtaWNFcnJvcldpdGhTdGFjaykge1xuICAgIC8vIFRoaXMgdGFzayB3YXMgdGhlIHRhc2sgdGhhdCBjYWxsZWQgdGhlIHN5bmMgZXJyb3IuXG4gICAgZHluYW1pY1ZhbGlkYXRpb24uZHluYW1pY0Vycm9ycy5wdXNoKFxuICAgICAgY2xpZW50RHluYW1pYy5zeW5jRHluYW1pY0Vycm9yV2l0aFN0YWNrXG4gICAgKVxuICAgIHJldHVyblxuICB9IGVsc2Uge1xuICAgIGNvbnN0IG1lc3NhZ2UgPVxuICAgICAgYFJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCI6IFVuY2FjaGVkIGRhdGEgd2FzIGFjY2Vzc2VkIG91dHNpZGUgb2YgYCArXG4gICAgICAnPFN1c3BlbnNlPi4gVGhpcyBkZWxheXMgdGhlIGVudGlyZSBwYWdlIGZyb20gcmVuZGVyaW5nLCByZXN1bHRpbmcgaW4gYSAnICtcbiAgICAgICdzbG93IHVzZXIgZXhwZXJpZW5jZS4gTGVhcm4gbW9yZTogJyArXG4gICAgICAnaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvYmxvY2tpbmctcm91dGUnXG4gICAgY29uc3QgZXJyb3IgPSBhZGRFcnJvckNvbnRleHQobmV3IEVycm9yKG1lc3NhZ2UpLCBjb21wb25lbnRTdGFjaywgbnVsbClcbiAgICBkeW5hbWljVmFsaWRhdGlvbi5keW5hbWljRXJyb3JzLnB1c2goZXJyb3IpXG4gICAgcmV0dXJuXG4gIH1cbn1cblxuZXhwb3J0IGVudW0gRHluYW1pY0hvbGVLaW5kIHtcbiAgLyoqIFdlIGtub3cgdGhhdCB0aGlzIGhvbGUgaXMgY2F1c2VkIGJ5IHJ1bnRpbWUgZGF0YS4gKi9cbiAgUnVudGltZSA9IDEsXG4gIC8qKiBXZSBrbm93IHRoYXQgdGhpcyBob2xlIGlzIGNhdXNlZCBieSBkeW5hbWljIGRhdGEuICovXG4gIER5bmFtaWMgPSAyLFxufVxuXG4vKiogU3RvcmVzIGR5bmFtaWMgcmVhc29ucyB1c2VkIGR1cmluZyBhbiBTU1IgcmVuZGVyIGluIGluc3RhbnQgdmFsaWRhdGlvbi4gKi9cbmV4cG9ydCB0eXBlIEluc3RhbnRWYWxpZGF0aW9uU3RhdGUgPSB7XG4gIGhhc0R5bmFtaWNNZXRhZGF0YTogYm9vbGVhblxuICBoYXNBbGxvd2VkQ2xpZW50RHluYW1pY0Fib3ZlQm91bmRhcnk6IGJvb2xlYW5cbiAgZHluYW1pY01ldGFkYXRhOiBudWxsIHwgRXJyb3JcbiAgaGFzRHluYW1pY1ZpZXdwb3J0OiBib29sZWFuXG4gIGhhc0FsbG93ZWREeW5hbWljOiBib29sZWFuXG4gIGR5bmFtaWNFcnJvcnM6IEFycmF5PEVycm9yPlxuICB2YWxpZGF0aW9uUHJldmVudGluZ0Vycm9yczogQXJyYXk8RXJyb3I+XG4gIHRocm93bkVycm9yc091dHNpZGVCb3VuZGFyeTogQXJyYXk8dW5rbm93bj5cbiAgY3JlYXRlSW5zdGFudFN0YWNrOiAoKCkgPT4gRXJyb3IpIHwgbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSW5zdGFudFZhbGlkYXRpb25TdGF0ZShcbiAgY3JlYXRlSW5zdGFudFN0YWNrOiAoKCkgPT4gRXJyb3IpIHwgbnVsbFxuKTogSW5zdGFudFZhbGlkYXRpb25TdGF0ZSB7XG4gIHJldHVybiB7XG4gICAgaGFzRHluYW1pY01ldGFkYXRhOiBmYWxzZSxcbiAgICBoYXNBbGxvd2VkQ2xpZW50RHluYW1pY0Fib3ZlQm91bmRhcnk6IGZhbHNlLFxuICAgIGR5bmFtaWNNZXRhZGF0YTogbnVsbCxcbiAgICBoYXNEeW5hbWljVmlld3BvcnQ6IGZhbHNlLFxuICAgIGhhc0FsbG93ZWREeW5hbWljOiBmYWxzZSxcbiAgICBkeW5hbWljRXJyb3JzOiBbXSxcbiAgICB2YWxpZGF0aW9uUHJldmVudGluZ0Vycm9yczogW10sXG4gICAgdGhyb3duRXJyb3JzT3V0c2lkZUJvdW5kYXJ5OiBbXSxcbiAgICBjcmVhdGVJbnN0YW50U3RhY2ssXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYWNrRHluYW1pY0hvbGVJbk5hdmlnYXRpb24oXG4gIHdvcmtTdG9yZTogV29ya1N0b3JlLFxuICBjb21wb25lbnRTdGFjazogc3RyaW5nLFxuICBkeW5hbWljVmFsaWRhdGlvbjogSW5zdGFudFZhbGlkYXRpb25TdGF0ZSxcbiAgY2xpZW50RHluYW1pYzogRHluYW1pY1RyYWNraW5nU3RhdGUsXG4gIGtpbmQ6IER5bmFtaWNIb2xlS2luZCxcbiAgYm91bmRhcnlTdGF0ZTogVmFsaWRhdGlvbkJvdW5kYXJ5VHJhY2tpbmdcbikge1xuICBpZiAoaGFzT3V0bGV0UmVnZXgudGVzdChjb21wb25lbnRTdGFjaykpIHtcbiAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHRyYWNrIHRoYXQgdGhpcyBpcyBkeW5hbWljLiBJdCBpcyBvbmx5IHNvIHdoZW4gc29tZXRoaW5nIGVsc2UgaXMgYWxzbyBkeW5hbWljLlxuICAgIHJldHVyblxuICB9XG4gIGlmIChoYXNNZXRhZGF0YVJlZ2V4LnRlc3QoY29tcG9uZW50U3RhY2spKSB7XG4gICAgY29uc3QgdXNhZ2VEZXNjcmlwdGlvbiA9XG4gICAgICBraW5kID09PSBEeW5hbWljSG9sZUtpbmQuUnVudGltZVxuICAgICAgICA/IGBSdW50aW1lIGRhdGEgc3VjaCBhcyBcXGBjb29raWVzKClcXGAsIFxcYGhlYWRlcnMoKVxcYCwgXFxgcGFyYW1zXFxgLCBvciBcXGBzZWFyY2hQYXJhbXNcXGAgd2FzIGFjY2Vzc2VkIGluc2lkZSBcXGBnZW5lcmF0ZU1ldGFkYXRhXFxgIG9yIHlvdSBoYXZlIGZpbGUtYmFzZWQgbWV0YWRhdGEgc3VjaCBhcyBpY29ucyB0aGF0IGRlcGVuZCBvbiBkeW5hbWljIHBhcmFtcyBzZWdtZW50cy5gXG4gICAgICAgIDogYFVuY2FjaGVkIGRhdGEgb3IgXFxgY29ubmVjdGlvbigpXFxgIHdhcyBhY2Nlc3NlZCBpbnNpZGUgXFxgZ2VuZXJhdGVNZXRhZGF0YVxcYC5gXG4gICAgY29uc3QgbWVzc2FnZSA9IGBSb3V0ZSBcIiR7d29ya1N0b3JlLnJvdXRlfVwiOiAke3VzYWdlRGVzY3JpcHRpb259IEV4Y2VwdCBmb3IgdGhpcyBpbnN0YW5jZSwgdGhlIHBhZ2Ugd291bGQgaGF2ZSBiZWVuIGVudGlyZWx5IHByZXJlbmRlcmFibGUgd2hpY2ggbWF5IGhhdmUgYmVlbiB0aGUgaW50ZW5kZWQgYmVoYXZpb3IuIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbmV4dC1wcmVyZW5kZXItZHluYW1pYy1tZXRhZGF0YWBcbiAgICBjb25zdCBlcnJvciA9IGFkZEVycm9yQ29udGV4dChcbiAgICAgIG5ldyBFcnJvcihtZXNzYWdlKSxcbiAgICAgIGNvbXBvbmVudFN0YWNrLFxuICAgICAgZHluYW1pY1ZhbGlkYXRpb24uY3JlYXRlSW5zdGFudFN0YWNrXG4gICAgKVxuICAgIGR5bmFtaWNWYWxpZGF0aW9uLmR5bmFtaWNNZXRhZGF0YSA9IGVycm9yXG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKGhhc1ZpZXdwb3J0UmVnZXgudGVzdChjb21wb25lbnRTdGFjaykpIHtcbiAgICBjb25zdCB1c2FnZURlc2NyaXB0aW9uID1cbiAgICAgIGtpbmQgPT09IER5bmFtaWNIb2xlS2luZC5SdW50aW1lXG4gICAgICAgID8gYFJ1bnRpbWUgZGF0YSBzdWNoIGFzIFxcYGNvb2tpZXMoKVxcYCwgXFxgaGVhZGVycygpXFxgLCBcXGBwYXJhbXNcXGAsIG9yIFxcYHNlYXJjaFBhcmFtc1xcYCB3YXMgYWNjZXNzZWQgaW5zaWRlIFxcYGdlbmVyYXRlVmlld3BvcnRcXGAuYFxuICAgICAgICA6IGBVbmNhY2hlZCBkYXRhIG9yIFxcYGNvbm5lY3Rpb24oKVxcYCB3YXMgYWNjZXNzZWQgaW5zaWRlIFxcYGdlbmVyYXRlVmlld3BvcnRcXGAuYFxuICAgIGNvbnN0IG1lc3NhZ2UgPSBgUm91dGUgXCIke3dvcmtTdG9yZS5yb3V0ZX1cIjogJHt1c2FnZURlc2NyaXB0aW9ufSBUaGlzIGRlbGF5cyB0aGUgZW50aXJlIHBhZ2UgZnJvbSByZW5kZXJpbmcsIHJlc3VsdGluZyBpbiBhIHNsb3cgdXNlciBleHBlcmllbmNlLiBMZWFybiBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9uZXh0LXByZXJlbmRlci1keW5hbWljLXZpZXdwb3J0YFxuICAgIGNvbnN0IGVycm9yID0gYWRkRXJyb3JDb250ZXh0KFxuICAgICAgbmV3IEVycm9yKG1lc3NhZ2UpLFxuICAgICAgY29tcG9uZW50U3RhY2ssXG4gICAgICBkeW5hbWljVmFsaWRhdGlvbi5jcmVhdGVJbnN0YW50U3RhY2tcbiAgICApXG4gICAgZHluYW1pY1ZhbGlkYXRpb24uZHluYW1pY0Vycm9ycy5wdXNoKGVycm9yKVxuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgYm91bmRhcnlMb2NhdGlvbiA9XG4gICAgaGFzSW5zdGFudFZhbGlkYXRpb25Cb3VuZGFyeVJlZ2V4LmV4ZWMoY29tcG9uZW50U3RhY2spXG4gIGlmICghYm91bmRhcnlMb2NhdGlvbikge1xuICAgIC8vIFdlIGRvbid0IHNlZSB0aGUgdmFsaWRhdGlvbiBib3VuZGFyeSBpbiB0aGUgY29tcG9uZW50IHN0YWNrLFxuICAgIC8vIHNvIHRoaXMgaG9sZSBtdXN0IGJlIGNvbWluZyBmcm9tIGEgc2hhcmVkIHBhcmVudC5cbiAgICAvLyBTaGFyZWQgcGFyZW50cyBhcmUgZnVsbHkgcmVzb2x2ZWQgYW5kIGRvbid0IGhhdmUgUlNDIGhvbGVzLFxuICAgIC8vIGJ1dCB0aGV5IGNhbiBzdGlsbCBzdXNwZW5kIGluIGEgY2xpZW50IGNvbXBvbmVudCBkdXJpbmcgU1NSLlxuXG4gICAgLy8gSWYgd2UgbWFuYWdlZCB0byByZW5kZXIgYWxsIHRoZSB2YWxpZGF0aW9uIGJvdW5kYXJpZXMsIHRoYXQgbWVhbnNcbiAgICAvLyB0aGF0IHRoZSBjbGllbnQgaG9sZXMgYXJlbid0IGJsb2NraW5nIHZhbGlkYXRpb24gYW5kIHdlIGNhbiBkaXNyZWdhcmQgdGhlbS5cbiAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3QgZXZlbiBjYXJlIHdoZXRoZXIgdGhleSBoYXZlIHN1c3BlbnNlIG9yIG5vdC5cbiAgICBpZiAoYm91bmRhcnlTdGF0ZS5leHBlY3RlZElkcy5zaXplID09PSBib3VuZGFyeVN0YXRlLnJlbmRlcmVkSWRzLnNpemUpIHtcbiAgICAgIGR5bmFtaWNWYWxpZGF0aW9uLmhhc0FsbG93ZWRDbGllbnREeW5hbWljQWJvdmVCb3VuZGFyeSA9IHRydWVcbiAgICAgIGR5bmFtaWNWYWxpZGF0aW9uLmhhc0FsbG93ZWREeW5hbWljID0gdHJ1ZSAvLyBIb2xlcyBvdXRzaWRlIHRoZSBib3VuZGFyeSBjb250cmlidXRlIHRvIGFsbG93aW5nIGR5bmFtaWMgbWV0YWRhdGFcbiAgICAgIHJldHVyblxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUT0RPKGluc3RhbnQtdmFsaWRhdGlvbikgVE9ETyhOQVItNzg3KVxuICAgICAgLy8gSWYgc2hhcmVkIHBhcmVudHMgYmxvY2tlZCB1cyBmcm9tIHZhbGlkYXRpbmcsIHdlIHNob3VsZCBvbmx5IGxvZ1xuICAgICAgLy8gdGhlIGVycm9ycyBmcm9tIHRoZSBpbm5lcm1vc3QgKHNlZ21lbnRzKSwgaS5lLiBvbWl0IGxheW91dHMgd2hvc2VcbiAgICAgIC8vIHNsb3RzIG1hbmFnZWQgdG8gcmVuZGVyIChiZWNhdXNlIGNsZWFybHkgdGhleSBkaWRuJ3QgYmxvY2sgdmFsaWRhdGlvbilcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgUm91dGUgXCIke3dvcmtTdG9yZS5yb3V0ZX1cIjogQ291bGQgbm90IHZhbGlkYXRlIFxcYHVuc3RhYmxlX2luc3RhbnRcXGAgYmVjYXVzZSBhIENsaWVudCBDb21wb25lbnQgaW4gYSBwYXJlbnQgc2VnbWVudCBwcmV2ZW50ZWQgdGhlIHBhZ2UgZnJvbSByZW5kZXJpbmcuYFxuICAgICAgY29uc3QgZXJyb3IgPSBhZGRFcnJvckNvbnRleHQoXG4gICAgICAgIG5ldyBFcnJvcihtZXNzYWdlKSxcbiAgICAgICAgY29tcG9uZW50U3RhY2ssXG4gICAgICAgIGR5bmFtaWNWYWxpZGF0aW9uLmNyZWF0ZUluc3RhbnRTdGFja1xuICAgICAgKVxuICAgICAgZHluYW1pY1ZhbGlkYXRpb24udmFsaWRhdGlvblByZXZlbnRpbmdFcnJvcnMucHVzaChlcnJvcilcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBUaGUgaG9sZSBvcmlnaW5hdGVzIGluc2lkZSB0aGUgdmFsaWRhdGlvbiBib3VuZGFyeS5cbiAgICAvL1xuICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgYSBTdXNwZW5zZSBhYm92ZSB0aGUgaG9sZSwgYnV0IGJlbG93IHRoZSB2YWxpZGF0aW9uIGJvdW5kYXJ5LlxuICAgIC8vIElmIHdlIGRvLCB0aGVuIHRoaXMgZHluYW1pYyB1c2FnZSB3b3VsZG4ndCBibG9jayBhIG5hdmlnYXRpb24gdG8gdGhpcyBzdWJ0cmVlLlxuICAgIC8vIENvbnZlcnNlbHksIGlmIHRoZSBuZWFyZXN0IHN1c3BlbnNlIGlzIGFib3ZlIHRoZSB2YWxpZGF0aW9uIGJvdW5kYXJ5LCB0aGVuIHRoaXMgc3VidHJlZSB3b3VsZCBibG9jay5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCBpbiB0aGUgY29tcG9uZW50IHN0YWNrLCBjaGlsZHJlbiBjb21lIGJlZm9yZSBwYXJlbnRzLlxuICAgIC8vXG4gICAgLy8gVmFsaWQ6XG4gICAgLy8gICAuLi5cbiAgICAvLyAgIGF0IFN1c3BlbnNlXG4gICAgLy8gICAuLi5cbiAgICAvLyAgIGF0IF9fbmV4dF9wcmVmZXRjaF92YWxpZGF0aW9uX2JvdW5kYXJ5X19cbiAgICAvL1xuICAgIC8vIEludmFsaWQ6XG4gICAgLy8gICAuLi5cbiAgICAvLyAgIGF0IF9fbmV4dF9wcmVmZXRjaF92YWxpZGF0aW9uX2JvdW5kYXJ5X19cbiAgICAvLyAgIC4uLlxuICAgIC8vICAgYXQgU3VzcGVuc2VcbiAgICAvL1xuICAgIGNvbnN0IHN1c3BlbnNlTG9jYXRpb24gPSBoYXNTdXNwZW5zZVJlZ2V4LmV4ZWMoY29tcG9uZW50U3RhY2spXG4gICAgaWYgKHN1c3BlbnNlTG9jYXRpb24pIHtcbiAgICAgIGlmIChzdXNwZW5zZUxvY2F0aW9uLmluZGV4IDwgYm91bmRhcnlMb2NhdGlvbi5pbmRleCkge1xuICAgICAgICBkeW5hbWljVmFsaWRhdGlvbi5oYXNBbGxvd2VkRHluYW1pYyA9IHRydWVcbiAgICAgICAgcmV0dXJuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBpbnZhbGlkIC0gZmFsbHRocm91Z2hcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoY2xpZW50RHluYW1pYy5zeW5jRHluYW1pY0Vycm9yV2l0aFN0YWNrKSB7XG4gICAgLy8gVGhpcyB0YXNrIHdhcyB0aGUgdGFzayB0aGF0IGNhbGxlZCB0aGUgc3luYyBlcnJvci5cbiAgICBjb25zdCBzeW5jRXJyb3IgPSBjbGllbnREeW5hbWljLnN5bmNEeW5hbWljRXJyb3JXaXRoU3RhY2tcbiAgICBpZiAoXG4gICAgICBkeW5hbWljVmFsaWRhdGlvbi5jcmVhdGVJbnN0YW50U3RhY2sgIT09IG51bGwgJiZcbiAgICAgIHN5bmNFcnJvci5jYXVzZSA9PT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBzeW5jRXJyb3IuY2F1c2UgPSBkeW5hbWljVmFsaWRhdGlvbi5jcmVhdGVJbnN0YW50U3RhY2soKVxuICAgIH1cbiAgICBkeW5hbWljVmFsaWRhdGlvbi5keW5hbWljRXJyb3JzLnB1c2goc3luY0Vycm9yKVxuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgdXNhZ2VEZXNjcmlwdGlvbiA9XG4gICAga2luZCA9PT0gRHluYW1pY0hvbGVLaW5kLlJ1bnRpbWVcbiAgICAgID8gYFJ1bnRpbWUgZGF0YSBzdWNoIGFzIFxcYGNvb2tpZXMoKVxcYCwgXFxgaGVhZGVycygpXFxgLCBcXGBwYXJhbXNcXGAsIG9yIFxcYHNlYXJjaFBhcmFtc1xcYCB3YXMgYWNjZXNzZWQgb3V0c2lkZSBvZiBcXGA8U3VzcGVuc2U+XFxgLmBcbiAgICAgIDogYFVuY2FjaGVkIGRhdGEgb3IgXFxgY29ubmVjdGlvbigpXFxgIHdhcyBhY2Nlc3NlZCBvdXRzaWRlIG9mIFxcYDxTdXNwZW5zZT5cXGAuYFxuICBjb25zdCBtZXNzYWdlID0gYFJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCI6ICR7dXNhZ2VEZXNjcmlwdGlvbn0gVGhpcyBkZWxheXMgdGhlIGVudGlyZSBwYWdlIGZyb20gcmVuZGVyaW5nLCByZXN1bHRpbmcgaW4gYSBzbG93IHVzZXIgZXhwZXJpZW5jZS4gTGVhcm4gbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvYmxvY2tpbmctcm91dGVgXG4gIGNvbnN0IGVycm9yID0gYWRkRXJyb3JDb250ZXh0KFxuICAgIG5ldyBFcnJvcihtZXNzYWdlKSxcbiAgICBjb21wb25lbnRTdGFjayxcbiAgICBkeW5hbWljVmFsaWRhdGlvbi5jcmVhdGVJbnN0YW50U3RhY2tcbiAgKVxuICBkeW5hbWljVmFsaWRhdGlvbi5keW5hbWljRXJyb3JzLnB1c2goZXJyb3IpXG4gIHJldHVyblxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhY2tUaHJvd25FcnJvckluTmF2aWdhdGlvbihcbiAgd29ya1N0b3JlOiBXb3JrU3RvcmUsXG4gIGR5bmFtaWNWYWxpZGF0aW9uOiBJbnN0YW50VmFsaWRhdGlvblN0YXRlLFxuICB0aHJvd25WYWx1ZTogdW5rbm93bixcbiAgY29tcG9uZW50U3RhY2s6IHN0cmluZ1xuKSB7XG4gIGNvbnN0IGJvdW5kYXJ5TG9jYXRpb24gPVxuICAgIGhhc0luc3RhbnRWYWxpZGF0aW9uQm91bmRhcnlSZWdleC5leGVjKGNvbXBvbmVudFN0YWNrKVxuICBpZiAoIWJvdW5kYXJ5TG9jYXRpb24pIHtcbiAgICAvLyBUaGVyZSdzIG5vIHZhbGlkYXRpb24gYm91bmRhcnkgb24gdGhlIGNvbXBvbmVudCBzdGFjay5cbiAgICAvLyBUaGlzIGVycm9yIG1heSBoYXZlIGJsb2NrZWQgYSBib3VuZGFyeSBmcm9tIHJlbmRlcmluZy5cblxuICAgIC8vIFdyYXAgdGhlIGVycm9yIHRvIHByb3ZpZGUgY29tcG9uZW50IGNvbnRleHQuXG4gICAgLy8gVGhpcyBoZWxwcyBmb3IgZXJyb3JzIGZyb20gbm9kZV9tb2R1bGVzIHdoaWNoIHdvdWxkIG90aGVyd2lzZVxuICAgIC8vIGhhdmUgbm8gdXNlZnVsIHN0YWNrIGluZm9ybWF0aW9uIGR1ZSB0byBpZ25vcmUtbGlzdGluZyxcbiAgICAvLyBlLmcuIG5leHQvZHluYW1pYyB3aXRoIGBzc3I6IGZhbHNlYC5cbiAgICBjb25zdCBlcnJvciA9IGFkZEVycm9yQ29udGV4dChcbiAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIGF0dGVtcHRpbmcgdG8gdmFsaWRhdGUgaW5zdGFudCBVSS4gVGhpcyBlcnJvciBtYXkgYmUgcHJldmVudGluZyB0aGUgdmFsaWRhdGlvbiBmcm9tIGNvbXBsZXRpbmcuJyxcbiAgICAgICAgeyBjYXVzZTogdGhyb3duVmFsdWUgfVxuICAgICAgKSxcbiAgICAgIGNvbXBvbmVudFN0YWNrLFxuICAgICAgbnVsbFxuICAgIClcbiAgICBkeW5hbWljVmFsaWRhdGlvbi50aHJvd25FcnJvcnNPdXRzaWRlQm91bmRhcnkucHVzaChlcnJvcilcbiAgfSBlbHNlIHtcbiAgICAvLyBUaGVyZSdzIHZhbGlkYXRpb24gYm91bmRhcnkgb24gdGhlIGNvbXBvbmVudCBzdGFjayxcbiAgICAvLyBzbyB3ZSBrbm93IHRoaXMgZXJyb3IgZGlkbid0IGJsb2NrIGEgdmFsaWRhdGlvbiBib3VuZGFyeSBmcm9tIHJlbmRlcmluZy5cbiAgICAvLyBIb3dldmVyLCB0aGlzIGVycm9yIG1pZ2h0IGJlIGhpZGluZyBiZSBoaWRpbmcgZHluYW1pYyBjb250ZW50IHRoYXQgd291bGRcbiAgICAvLyBjYXVzZSB2YWxpZGF0aW9uIHRvIGZhaWwuXG4gICAgY29uc3Qgc3VzcGVuc2VMb2NhdGlvbiA9IGhhc1N1c3BlbnNlUmVnZXguZXhlYyhjb21wb25lbnRTdGFjaylcbiAgICBpZiAoc3VzcGVuc2VMb2NhdGlvbikge1xuICAgICAgaWYgKHN1c3BlbnNlTG9jYXRpb24uaW5kZXggPCBib3VuZGFyeUxvY2F0aW9uLmluZGV4KSB7XG4gICAgICAgIC8vIFRoZXJlJ3MgYSBTdXNwZW5zZSBiZWxvdyB0aGUgdmFsaWRhdGlvbiBib3VuZGFyeSBidXQgYWJvdmUgdGhpcyBlcnJvcidzIGxvY2F0aW9uLlxuICAgICAgICAvLyBUaGlzIHN1YnRyZWUgY2FuJ3QgZmFpbCBpbnN0YW50IHZhbGlkYXRpb24gYmVjYXVzZSBhbnkgcG90ZW50aWFsXG4gICAgICAgIC8vIGR5bmFtaWMgaG9sZXMgd291bGQgYmUgZ3VhcmRlZCBieSB0aGUgU3VzcGVuc2UgYW55d2F5LFxuICAgICAgICAvLyBzbyB3ZSBjYW4gYWxsb3cgdGhpcy5cbiAgICAgICAgcmV0dXJuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBpbnZhbGlkIC0gZmFsbHRocm91Z2hcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgbWVzc2FnZSA9IGBSb3V0ZSBcIiR7d29ya1N0b3JlLnJvdXRlfVwiOiBDb3VsZCBub3QgdmFsaWRhdGUgXFxgdW5zdGFibGVfaW5zdGFudFxcYCBiZWNhdXNlIGFuIGVycm9yIHByZXZlbnRlZCB0aGUgdGFyZ2V0IHNlZ21lbnQgZnJvbSByZW5kZXJpbmcuYFxuICAgIGNvbnN0IGVycm9yID0gYWRkRXJyb3JDb250ZXh0KFxuICAgICAgbmV3IEVycm9yKG1lc3NhZ2UsIHsgY2F1c2U6IHRocm93blZhbHVlIH0pLFxuICAgICAgY29tcG9uZW50U3RhY2ssXG4gICAgICBudWxsIC8vIFRPRE8oaW5zdGFudC12YWxpZGF0aW9uLWJ1aWxkKTogY29uZmxpY3RpbmcgdXNlIG9mIGNhdXNlXG4gICAgKVxuICAgIGR5bmFtaWNWYWxpZGF0aW9uLnZhbGlkYXRpb25QcmV2ZW50aW5nRXJyb3JzLnB1c2goZXJyb3IpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYWNrRHluYW1pY0hvbGVJblJ1bnRpbWVTaGVsbChcbiAgd29ya1N0b3JlOiBXb3JrU3RvcmUsXG4gIGNvbXBvbmVudFN0YWNrOiBzdHJpbmcsXG4gIGR5bmFtaWNWYWxpZGF0aW9uOiBEeW5hbWljVmFsaWRhdGlvblN0YXRlLFxuICBjbGllbnREeW5hbWljOiBEeW5hbWljVHJhY2tpbmdTdGF0ZVxuKSB7XG4gIGlmIChoYXNPdXRsZXRSZWdleC50ZXN0KGNvbXBvbmVudFN0YWNrKSkge1xuICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gdHJhY2sgdGhhdCB0aGlzIGlzIGR5bmFtaWMuIEl0IGlzIG9ubHkgc28gd2hlbiBzb21ldGhpbmcgZWxzZSBpcyBhbHNvIGR5bmFtaWMuXG4gICAgcmV0dXJuXG4gIH0gZWxzZSBpZiAoaGFzTWV0YWRhdGFSZWdleC50ZXN0KGNvbXBvbmVudFN0YWNrKSkge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBgUm91dGUgXCIke3dvcmtTdG9yZS5yb3V0ZX1cIjogVW5jYWNoZWQgZGF0YSBvciBcXGBjb25uZWN0aW9uKClcXGAgd2FzIGFjY2Vzc2VkIGluc2lkZSBcXGBnZW5lcmF0ZU1ldGFkYXRhXFxgLiBFeGNlcHQgZm9yIHRoaXMgaW5zdGFuY2UsIHRoZSBwYWdlIHdvdWxkIGhhdmUgYmVlbiBlbnRpcmVseSBwcmVyZW5kZXJhYmxlIHdoaWNoIG1heSBoYXZlIGJlZW4gdGhlIGludGVuZGVkIGJlaGF2aW9yLiBTZWUgbW9yZSBpbmZvIGhlcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL25leHQtcHJlcmVuZGVyLWR5bmFtaWMtbWV0YWRhdGFgXG4gICAgY29uc3QgZXJyb3IgPSBhZGRFcnJvckNvbnRleHQobmV3IEVycm9yKG1lc3NhZ2UpLCBjb21wb25lbnRTdGFjaywgbnVsbClcbiAgICBkeW5hbWljVmFsaWRhdGlvbi5keW5hbWljTWV0YWRhdGEgPSBlcnJvclxuICAgIHJldHVyblxuICB9IGVsc2UgaWYgKGhhc1ZpZXdwb3J0UmVnZXgudGVzdChjb21wb25lbnRTdGFjaykpIHtcbiAgICAvLyBUT0RPKGluc3RhbnQtdmFsaWRhdGlvbik6IElmIHRoZSBwYWdlIG9ubHkgaGFzIGhvbGVzIGNhdXNlZCBieSBydW50aW1lIGRhdGEsXG4gICAgLy8gd2Ugd29uJ3QgZmluZCBvdXQgaWYgdGhlcmUncyBhIHN1c3BlbnNlLWFib3ZlLWJvZHkgYW5kIGVycm9yIGZvciBkeW5hbWljIHZpZXdwb3J0XG4gICAgLy8gZXZlbiBpZiB0aGVyZSBpcyBpbiBmYWN0IGEgc3VzcGVuc2UtYWJvdmUtYm9keVxuICAgIGNvbnN0IG1lc3NhZ2UgPSBgUm91dGUgXCIke3dvcmtTdG9yZS5yb3V0ZX1cIjogVW5jYWNoZWQgZGF0YSBvciBcXGBjb25uZWN0aW9uKClcXGAgd2FzIGFjY2Vzc2VkIGluc2lkZSBcXGBnZW5lcmF0ZVZpZXdwb3J0XFxgLiBUaGlzIGRlbGF5cyB0aGUgZW50aXJlIHBhZ2UgZnJvbSByZW5kZXJpbmcsIHJlc3VsdGluZyBpbiBhIHNsb3cgdXNlciBleHBlcmllbmNlLiBMZWFybiBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9uZXh0LXByZXJlbmRlci1keW5hbWljLXZpZXdwb3J0YFxuICAgIGNvbnN0IGVycm9yID0gYWRkRXJyb3JDb250ZXh0KG5ldyBFcnJvcihtZXNzYWdlKSwgY29tcG9uZW50U3RhY2ssIG51bGwpXG4gICAgZHluYW1pY1ZhbGlkYXRpb24uZHluYW1pY0Vycm9ycy5wdXNoKGVycm9yKVxuICAgIHJldHVyblxuICB9IGVsc2UgaWYgKFxuICAgIGhhc1N1c3BlbnNlQmVmb3JlUm9vdExheW91dFdpdGhvdXRCb2R5T3JJbXBsaWNpdEJvZHlSZWdleC50ZXN0KFxuICAgICAgY29tcG9uZW50U3RhY2tcbiAgICApXG4gICkge1xuICAgIC8vIEZvciBTdXNwZW5zZSB3aXRoaW4gYm9keSwgdGhlIHByZWx1ZGUgd291bGRuJ3QgYmUgZW1wdHkgc28gaXQgd291bGRuJ3QgdmlvbGF0ZSB0aGUgZW1wdHkgc3RhdGljIHNoZWxscyBydWxlLlxuICAgIC8vIEJ1dCBpZiB5b3UgaGF2ZSBTdXNwZW5zZSBhYm92ZSBib2R5LCB0aGUgcHJlbHVkZSBpcyBlbXB0eSBidXQgd2UgYWxsb3cgdGhhdCBiZWNhdXNlIGhhdmluZyBTdXNwZW5zZVxuICAgIC8vIGlzIGFuIGV4cGxpY2l0IHNpZ25hbCBmcm9tIHRoZSB1c2VyIHRoYXQgdGhleSBhY2tub3dsZWRnZSB0aGUgZW1wdHkgc2hlbGwgYW5kIHdhbnQgZHluYW1pYyByZW5kZXJpbmcuXG4gICAgZHluYW1pY1ZhbGlkYXRpb24uaGFzQWxsb3dlZER5bmFtaWMgPSB0cnVlXG4gICAgZHluYW1pY1ZhbGlkYXRpb24uaGFzU3VzcGVuc2VBYm92ZUJvZHkgPSB0cnVlXG4gICAgcmV0dXJuXG4gIH0gZWxzZSBpZiAoaGFzU3VzcGVuc2VSZWdleC50ZXN0KGNvbXBvbmVudFN0YWNrKSkge1xuICAgIC8vIHRoaXMgZXJyb3IgaGFkIGEgU3VzcGVuc2UgYm91bmRhcnkgYWJvdmUgaXQgc28gd2UgZG9uJ3QgbmVlZCB0byByZXBvcnQgaXQgYXMgYSBzb3VyY2VcbiAgICAvLyBvZiBkaXNhbGxvd2VkXG4gICAgZHluYW1pY1ZhbGlkYXRpb24uaGFzQWxsb3dlZER5bmFtaWMgPSB0cnVlXG4gICAgcmV0dXJuXG4gIH0gZWxzZSBpZiAoY2xpZW50RHluYW1pYy5zeW5jRHluYW1pY0Vycm9yV2l0aFN0YWNrKSB7XG4gICAgLy8gVGhpcyB0YXNrIHdhcyB0aGUgdGFzayB0aGF0IGNhbGxlZCB0aGUgc3luYyBlcnJvci5cbiAgICBkeW5hbWljVmFsaWRhdGlvbi5keW5hbWljRXJyb3JzLnB1c2goXG4gICAgICBjbGllbnREeW5hbWljLnN5bmNEeW5hbWljRXJyb3JXaXRoU3RhY2tcbiAgICApXG4gICAgcmV0dXJuXG4gIH1cblxuICBjb25zdCBtZXNzYWdlID0gYFJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCI6IFVuY2FjaGVkIGRhdGEgb3IgXFxgY29ubmVjdGlvbigpXFxgIHdhcyBhY2Nlc3NlZCBvdXRzaWRlIG9mIFxcYDxTdXNwZW5zZT5cXGAuIFRoaXMgZGVsYXlzIHRoZSBlbnRpcmUgcGFnZSBmcm9tIHJlbmRlcmluZywgcmVzdWx0aW5nIGluIGEgc2xvdyB1c2VyIGV4cGVyaWVuY2UuIExlYXJuIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2Jsb2NraW5nLXJvdXRlYFxuICBjb25zdCBlcnJvciA9IGFkZEVycm9yQ29udGV4dChuZXcgRXJyb3IobWVzc2FnZSksIGNvbXBvbmVudFN0YWNrLCBudWxsKVxuICBkeW5hbWljVmFsaWRhdGlvbi5keW5hbWljRXJyb3JzLnB1c2goZXJyb3IpXG4gIHJldHVyblxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhY2tEeW5hbWljSG9sZUluU3RhdGljU2hlbGwoXG4gIHdvcmtTdG9yZTogV29ya1N0b3JlLFxuICBjb21wb25lbnRTdGFjazogc3RyaW5nLFxuICBkeW5hbWljVmFsaWRhdGlvbjogRHluYW1pY1ZhbGlkYXRpb25TdGF0ZSxcbiAgY2xpZW50RHluYW1pYzogRHluYW1pY1RyYWNraW5nU3RhdGVcbikge1xuICBpZiAoaGFzT3V0bGV0UmVnZXgudGVzdChjb21wb25lbnRTdGFjaykpIHtcbiAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHRyYWNrIHRoYXQgdGhpcyBpcyBkeW5hbWljLiBJdCBpcyBvbmx5IHNvIHdoZW4gc29tZXRoaW5nIGVsc2UgaXMgYWxzbyBkeW5hbWljLlxuICAgIHJldHVyblxuICB9IGVsc2UgaWYgKGhhc01ldGFkYXRhUmVnZXgudGVzdChjb21wb25lbnRTdGFjaykpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gYFJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCI6IFJ1bnRpbWUgZGF0YSBzdWNoIGFzIFxcYGNvb2tpZXMoKVxcYCwgXFxgaGVhZGVycygpXFxgLCBcXGBwYXJhbXNcXGAsIG9yIFxcYHNlYXJjaFBhcmFtc1xcYCB3YXMgYWNjZXNzZWQgaW5zaWRlIFxcYGdlbmVyYXRlTWV0YWRhdGFcXGAgb3IgeW91IGhhdmUgZmlsZS1iYXNlZCBtZXRhZGF0YSBzdWNoIGFzIGljb25zIHRoYXQgZGVwZW5kIG9uIGR5bmFtaWMgcGFyYW1zIHNlZ21lbnRzLiBFeGNlcHQgZm9yIHRoaXMgaW5zdGFuY2UsIHRoZSBwYWdlIHdvdWxkIGhhdmUgYmVlbiBlbnRpcmVseSBwcmVyZW5kZXJhYmxlIHdoaWNoIG1heSBoYXZlIGJlZW4gdGhlIGludGVuZGVkIGJlaGF2aW9yLiBTZWUgbW9yZSBpbmZvIGhlcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL25leHQtcHJlcmVuZGVyLWR5bmFtaWMtbWV0YWRhdGFgXG4gICAgY29uc3QgZXJyb3IgPSBhZGRFcnJvckNvbnRleHQobmV3IEVycm9yKG1lc3NhZ2UpLCBjb21wb25lbnRTdGFjaywgbnVsbClcbiAgICBkeW5hbWljVmFsaWRhdGlvbi5keW5hbWljTWV0YWRhdGEgPSBlcnJvclxuICAgIHJldHVyblxuICB9IGVsc2UgaWYgKGhhc1ZpZXdwb3J0UmVnZXgudGVzdChjb21wb25lbnRTdGFjaykpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gYFJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCI6IFJ1bnRpbWUgZGF0YSBzdWNoIGFzIFxcYGNvb2tpZXMoKVxcYCwgXFxgaGVhZGVycygpXFxgLCBcXGBwYXJhbXNcXGAsIG9yIFxcYHNlYXJjaFBhcmFtc1xcYCB3YXMgYWNjZXNzZWQgaW5zaWRlIFxcYGdlbmVyYXRlVmlld3BvcnRcXGAuIFRoaXMgZGVsYXlzIHRoZSBlbnRpcmUgcGFnZSBmcm9tIHJlbmRlcmluZywgcmVzdWx0aW5nIGluIGEgc2xvdyB1c2VyIGV4cGVyaWVuY2UuIExlYXJuIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL25leHQtcHJlcmVuZGVyLWR5bmFtaWMtdmlld3BvcnRgXG4gICAgY29uc3QgZXJyb3IgPSBhZGRFcnJvckNvbnRleHQobmV3IEVycm9yKG1lc3NhZ2UpLCBjb21wb25lbnRTdGFjaywgbnVsbClcbiAgICBkeW5hbWljVmFsaWRhdGlvbi5keW5hbWljRXJyb3JzLnB1c2goZXJyb3IpXG4gICAgcmV0dXJuXG4gIH0gZWxzZSBpZiAoXG4gICAgaGFzU3VzcGVuc2VCZWZvcmVSb290TGF5b3V0V2l0aG91dEJvZHlPckltcGxpY2l0Qm9keVJlZ2V4LnRlc3QoXG4gICAgICBjb21wb25lbnRTdGFja1xuICAgIClcbiAgKSB7XG4gICAgLy8gRm9yIFN1c3BlbnNlIHdpdGhpbiBib2R5LCB0aGUgcHJlbHVkZSB3b3VsZG4ndCBiZSBlbXB0eSBzbyBpdCB3b3VsZG4ndCB2aW9sYXRlIHRoZSBlbXB0eSBzdGF0aWMgc2hlbGxzIHJ1bGUuXG4gICAgLy8gQnV0IGlmIHlvdSBoYXZlIFN1c3BlbnNlIGFib3ZlIGJvZHksIHRoZSBwcmVsdWRlIGlzIGVtcHR5IGJ1dCB3ZSBhbGxvdyB0aGF0IGJlY2F1c2UgaGF2aW5nIFN1c3BlbnNlXG4gICAgLy8gaXMgYW4gZXhwbGljaXQgc2lnbmFsIGZyb20gdGhlIHVzZXIgdGhhdCB0aGV5IGFja25vd2xlZGdlIHRoZSBlbXB0eSBzaGVsbCBhbmQgd2FudCBkeW5hbWljIHJlbmRlcmluZy5cbiAgICBkeW5hbWljVmFsaWRhdGlvbi5oYXNBbGxvd2VkRHluYW1pYyA9IHRydWVcbiAgICBkeW5hbWljVmFsaWRhdGlvbi5oYXNTdXNwZW5zZUFib3ZlQm9keSA9IHRydWVcbiAgICByZXR1cm5cbiAgfSBlbHNlIGlmIChoYXNTdXNwZW5zZVJlZ2V4LnRlc3QoY29tcG9uZW50U3RhY2spKSB7XG4gICAgLy8gdGhpcyBlcnJvciBoYWQgYSBTdXNwZW5zZSBib3VuZGFyeSBhYm92ZSBpdCBzbyB3ZSBkb24ndCBuZWVkIHRvIHJlcG9ydCBpdCBhcyBhIHNvdXJjZVxuICAgIC8vIG9mIGRpc2FsbG93ZWRcbiAgICBkeW5hbWljVmFsaWRhdGlvbi5oYXNBbGxvd2VkRHluYW1pYyA9IHRydWVcbiAgICByZXR1cm5cbiAgfSBlbHNlIGlmIChjbGllbnREeW5hbWljLnN5bmNEeW5hbWljRXJyb3JXaXRoU3RhY2spIHtcbiAgICAvLyBUaGlzIHRhc2sgd2FzIHRoZSB0YXNrIHRoYXQgY2FsbGVkIHRoZSBzeW5jIGVycm9yLlxuICAgIGR5bmFtaWNWYWxpZGF0aW9uLmR5bmFtaWNFcnJvcnMucHVzaChcbiAgICAgIGNsaWVudER5bmFtaWMuc3luY0R5bmFtaWNFcnJvcldpdGhTdGFja1xuICAgIClcbiAgICByZXR1cm5cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBtZXNzYWdlID0gYFJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCI6IFJ1bnRpbWUgZGF0YSBzdWNoIGFzIFxcYGNvb2tpZXMoKVxcYCwgXFxgaGVhZGVycygpXFxgLCBcXGBwYXJhbXNcXGAsIG9yIFxcYHNlYXJjaFBhcmFtc1xcYCB3YXMgYWNjZXNzZWQgb3V0c2lkZSBvZiBcXGA8U3VzcGVuc2U+XFxgLiBUaGlzIGRlbGF5cyB0aGUgZW50aXJlIHBhZ2UgZnJvbSByZW5kZXJpbmcsIHJlc3VsdGluZyBpbiBhIHNsb3cgdXNlciBleHBlcmllbmNlLiBMZWFybiBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9ibG9ja2luZy1yb3V0ZWBcbiAgICBjb25zdCBlcnJvciA9IGFkZEVycm9yQ29udGV4dChuZXcgRXJyb3IobWVzc2FnZSksIGNvbXBvbmVudFN0YWNrLCBudWxsKVxuICAgIGR5bmFtaWNWYWxpZGF0aW9uLmR5bmFtaWNFcnJvcnMucHVzaChlcnJvcilcbiAgICByZXR1cm5cbiAgfVxufVxuXG4vKipcbiAqIEluIGRldiBtb2RlLCB3ZSBwcmVmZXIgdXNpbmcgdGhlIG93bmVyIHN0YWNrLCBvdGhlcndpc2UgdGhlIHByb3ZpZGVkXG4gKiBjb21wb25lbnQgc3RhY2sgaXMgdXNlZC5cbiAqXG4gKiBBY2NlcHRzIGFuIGFscmVhZHktY3JlYXRlZCBFcnJvciBzbyB0aGUgU1dDIGVycm9yLWNvZGUgcGx1Z2luIGNhbiBzZWUgdGhlXG4gKiBgbmV3IEVycm9yKC4uLilgIGNhbGwgYXQgZWFjaCBjYWxsIHNpdGUgYW5kIGF1dG8tYXNzaWduIGVycm9yIGNvZGVzLlxuICovXG5mdW5jdGlvbiBhZGRFcnJvckNvbnRleHQoXG4gIGVycm9yOiBFcnJvcixcbiAgY29tcG9uZW50U3RhY2s6IHN0cmluZyxcbiAgY3JlYXRlSW5zdGFudFN0YWNrOiAoKCkgPT4gRXJyb3IpIHwgbnVsbFxuKSB7XG4gIGNvbnN0IG93bmVyU3RhY2sgPVxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgUmVhY3QuY2FwdHVyZU93bmVyU3RhY2tcbiAgICAgID8gUmVhY3QuY2FwdHVyZU93bmVyU3RhY2soKVxuICAgICAgOiBudWxsXG5cbiAgaWYgKGNyZWF0ZUluc3RhbnRTdGFjayAhPT0gbnVsbCkge1xuICAgIGVycm9yLmNhdXNlID0gY3JlYXRlSW5zdGFudFN0YWNrKClcbiAgfVxuICAvLyBUT0RPIGdvIGJhY2sgdG8gb3duZXIgc3RhY2sgaGVyZSBpZiBhdmFpbGFibGUuIFRoaXMgaXMgdGVtcG9yYXJpbHkgdXNpbmcgY29tcG9uZW50U3RhY2sgdG8gZ2V0IHRoZSByaWdodFxuICAvL1xuICBlcnJvci5zdGFjayA9XG4gICAgZXJyb3IubmFtZSArICc6ICcgKyBlcnJvci5tZXNzYWdlICsgKG93bmVyU3RhY2sgfHwgY29tcG9uZW50U3RhY2spXG4gIHJldHVybiBlcnJvclxufVxuXG5leHBvcnQgZW51bSBQcmVsdWRlU3RhdGUge1xuICBGdWxsID0gMCxcbiAgRW1wdHkgPSAxLFxuICBFcnJvcmVkID0gMixcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvZ0Rpc2FsbG93ZWREeW5hbWljRXJyb3IoXG4gIHdvcmtTdG9yZTogV29ya1N0b3JlLFxuICBlcnJvcjogRXJyb3Jcbik6IHZvaWQge1xuICBjb25zb2xlLmVycm9yKGVycm9yKVxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50Jykge1xuICAgIGNvbnNvbGUuZXJyb3IoYFRvIGdldCBhIG1vcmUgZGV0YWlsZWQgc3RhY2sgdHJhY2UgYW5kIHBpbnBvaW50IHRoZSBpc3N1ZSwgdHJ5IG9uZSBvZiB0aGUgZm9sbG93aW5nOlxuICAtIFN0YXJ0IHRoZSBhcHAgaW4gZGV2ZWxvcG1lbnQgbW9kZSBieSBydW5uaW5nIFxcYG5leHQgZGV2XFxgLCB0aGVuIG9wZW4gXCIke3dvcmtTdG9yZS5yb3V0ZX1cIiBpbiB5b3VyIGJyb3dzZXIgdG8gaW52ZXN0aWdhdGUgdGhlIGVycm9yLlxuICAtIFJlcnVuIHRoZSBwcm9kdWN0aW9uIGJ1aWxkIHdpdGggXFxgbmV4dCBidWlsZCAtLWRlYnVnLXByZXJlbmRlclxcYCB0byBnZW5lcmF0ZSBiZXR0ZXIgc3RhY2sgdHJhY2VzLmApXG4gIH0gZWxzZSBpZiAoIXByb2Nlc3MuZW52Ll9fTkVYVF9ERVZfU0VSVkVSKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIGBUbyBkZWJ1ZyB0aGUgaXNzdWUsIHN0YXJ0IHRoZSBhcHAgaW4gZGV2ZWxvcG1lbnQgbW9kZSBieSBydW5uaW5nIFxcYG5leHQgZGV2XFxgLCB0aGVuIG9wZW4gXCIke3dvcmtTdG9yZS5yb3V0ZX1cIiBpbiB5b3VyIGJyb3dzZXIgdG8gaW52ZXN0aWdhdGUgdGhlIGVycm9yLmBcbiAgICApXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRocm93SWZEaXNhbGxvd2VkRHluYW1pYyhcbiAgd29ya1N0b3JlOiBXb3JrU3RvcmUsXG4gIHByZWx1ZGU6IFByZWx1ZGVTdGF0ZSxcbiAgZHluYW1pY1ZhbGlkYXRpb246IER5bmFtaWNWYWxpZGF0aW9uU3RhdGUsXG4gIHNlcnZlckR5bmFtaWM6IER5bmFtaWNUcmFja2luZ1N0YXRlXG4pOiB2b2lkIHtcbiAgaWYgKHNlcnZlckR5bmFtaWMuc3luY0R5bmFtaWNFcnJvcldpdGhTdGFjaykge1xuICAgIGxvZ0Rpc2FsbG93ZWREeW5hbWljRXJyb3IoXG4gICAgICB3b3JrU3RvcmUsXG4gICAgICBzZXJ2ZXJEeW5hbWljLnN5bmNEeW5hbWljRXJyb3JXaXRoU3RhY2tcbiAgICApXG4gICAgdGhyb3cgbmV3IFN0YXRpY0dlbkJhaWxvdXRFcnJvcigpXG4gIH1cblxuICBpZiAocHJlbHVkZSAhPT0gUHJlbHVkZVN0YXRlLkZ1bGwpIHtcbiAgICBpZiAoZHluYW1pY1ZhbGlkYXRpb24uaGFzU3VzcGVuc2VBYm92ZUJvZHkpIHtcbiAgICAgIC8vIFRoaXMgcm91dGUgaGFzIG9wdGVkIGludG8gYWxsb3dpbmcgZnVsbHkgZHluYW1pYyByZW5kZXJpbmdcbiAgICAgIC8vIGJ5IGluY2x1ZGluZyBhIFN1c3BlbnNlIGJvdW5kYXJ5IGFib3ZlIHRoZSBib2R5LiBJbiB0aGlzIGNhc2VcbiAgICAgIC8vIGEgbGFjayBvZiBhIHNoZWxsIGlzIG5vdCBjb25zaWRlcmVkIGRpc2FsbG93ZWQgc28gd2Ugc2ltcGx5IHJldHVyblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gV2UgZGlkbid0IGhhdmUgYW55IHN5bmMgYmFpbG91dHMgYnV0IHRoZXJlIG1heSBiZSB1c2VyIGNvZGUgd2hpY2hcbiAgICAvLyBibG9ja2VkIHRoZSByb290LiBXZSB3b3VsZCBoYXZlIGNhcHR1cmVkIHRoZXNlIGR1cmluZyB0aGUgcHJlcmVuZGVyXG4gICAgLy8gYW5kIGNhbiBsb2cgdGhlbSBoZXJlIGFuZCB0aGVuIHRlcm1pbmF0ZSB0aGUgYnVpbGQvdmFsaWRhdGluZyByZW5kZXJcbiAgICBjb25zdCBkeW5hbWljRXJyb3JzID0gZHluYW1pY1ZhbGlkYXRpb24uZHluYW1pY0Vycm9yc1xuICAgIGlmIChkeW5hbWljRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZHluYW1pY0Vycm9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsb2dEaXNhbGxvd2VkRHluYW1pY0Vycm9yKHdvcmtTdG9yZSwgZHluYW1pY0Vycm9yc1tpXSlcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IFN0YXRpY0dlbkJhaWxvdXRFcnJvcigpXG4gICAgfVxuXG4gICAgLy8gSWYgd2UgZ290IHRoaXMgZmFyIHRoZW4gdGhlIG9ubHkgb3RoZXIgdGhpbmcgdGhhdCBjb3VsZCBiZSBibG9ja2luZ1xuICAgIC8vIHRoZSByb290IGlzIGR5bmFtaWMgVmlld3BvcnQuIElmIHRoaXMgaXMgZHluYW1pYyB0aGVuXG4gICAgLy8geW91IG5lZWQgdG8gb3B0IGludG8gdGhhdCBieSBhZGRpbmcgYSBTdXNwZW5zZSBib3VuZGFyeSBhYm92ZSB0aGUgYm9keVxuICAgIC8vIHRvIGluZGljYXRlIHlvdXIgYXJlIG9rIHdpdGggZnVsbHkgZHluYW1pYyByZW5kZXJpbmcuXG4gICAgaWYgKGR5bmFtaWNWYWxpZGF0aW9uLmhhc0R5bmFtaWNWaWV3cG9ydCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCIgaGFzIGEgXFxgZ2VuZXJhdGVWaWV3cG9ydFxcYCB0aGF0IGRlcGVuZHMgb24gUmVxdWVzdCBkYXRhIChcXGBjb29raWVzKClcXGAsIGV0Yy4uLikgb3IgdW5jYWNoZWQgZXh0ZXJuYWwgZGF0YSAoXFxgZmV0Y2goLi4uKVxcYCwgZXRjLi4uKSB3aXRob3V0IGV4cGxpY2l0bHkgYWxsb3dpbmcgZnVsbHkgZHluYW1pYyByZW5kZXJpbmcuIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbmV4dC1wcmVyZW5kZXItZHluYW1pYy12aWV3cG9ydGBcbiAgICAgIClcbiAgICAgIHRocm93IG5ldyBTdGF0aWNHZW5CYWlsb3V0RXJyb3IoKVxuICAgIH1cblxuICAgIGlmIChwcmVsdWRlID09PSBQcmVsdWRlU3RhdGUuRW1wdHkpIHtcbiAgICAgIC8vIElmIHdlIGV2ZXIgZ2V0IHRoaXMgZmFyIHRoZW4gd2UgbWVzc2VkIHVwIHRoZSB0cmFja2luZyBvZiBpbnZhbGlkIGR5bmFtaWMuXG4gICAgICAvLyBXZSBzdGlsbCBhZGhlcmUgdG8gdGhlIGNvbnN0cmFpbnQgdGhhdCB5b3UgbXVzdCBwcm9kdWNlIGEgc2hlbGwgYnV0IGludml0ZSB0aGVcbiAgICAgIC8vIHVzZXIgdG8gcmVwb3J0IHRoaXMgYXMgYSBidWcgaW4gTmV4dC5qcy5cbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGBSb3V0ZSBcIiR7d29ya1N0b3JlLnJvdXRlfVwiIGRpZCBub3QgcHJvZHVjZSBhIHN0YXRpYyBzaGVsbCBhbmQgTmV4dC5qcyB3YXMgdW5hYmxlIHRvIGRldGVybWluZSBhIHJlYXNvbi4gVGhpcyBpcyBhIGJ1ZyBpbiBOZXh0LmpzLmBcbiAgICAgIClcbiAgICAgIHRocm93IG5ldyBTdGF0aWNHZW5CYWlsb3V0RXJyb3IoKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoXG4gICAgICBkeW5hbWljVmFsaWRhdGlvbi5oYXNBbGxvd2VkRHluYW1pYyA9PT0gZmFsc2UgJiZcbiAgICAgIGR5bmFtaWNWYWxpZGF0aW9uLmhhc0R5bmFtaWNNZXRhZGF0YVxuICAgICkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCIgaGFzIGEgXFxgZ2VuZXJhdGVNZXRhZGF0YVxcYCB0aGF0IGRlcGVuZHMgb24gUmVxdWVzdCBkYXRhIChcXGBjb29raWVzKClcXGAsIGV0Yy4uLikgb3IgdW5jYWNoZWQgZXh0ZXJuYWwgZGF0YSAoXFxgZmV0Y2goLi4uKVxcYCwgZXRjLi4uKSB3aGVuIHRoZSByZXN0IG9mIHRoZSByb3V0ZSBkb2VzIG5vdC4gU2VlIG1vcmUgaW5mbyBoZXJlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9uZXh0LXByZXJlbmRlci1keW5hbWljLW1ldGFkYXRhYFxuICAgICAgKVxuICAgICAgdGhyb3cgbmV3IFN0YXRpY0dlbkJhaWxvdXRFcnJvcigpXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0aWNTaGVsbERpc2FsbG93ZWREeW5hbWljUmVhc29ucyhcbiAgd29ya1N0b3JlOiBXb3JrU3RvcmUsXG4gIHByZWx1ZGU6IFByZWx1ZGVTdGF0ZSxcbiAgZHluYW1pY1ZhbGlkYXRpb246IER5bmFtaWNWYWxpZGF0aW9uU3RhdGUsXG4gIGNvbmZpZ0FsbG93c0Jsb2NraW5nOiBib29sZWFuXG4pOiBBcnJheTxFcnJvcj4ge1xuICBpZiAoY29uZmlnQWxsb3dzQmxvY2tpbmcgfHwgZHluYW1pY1ZhbGlkYXRpb24uaGFzU3VzcGVuc2VBYm92ZUJvZHkpIHtcbiAgICAvLyBUaGlzIHJvdXRlIGhhcyBvcHRlZCBpbnRvIGFsbG93aW5nIGZ1bGx5IGR5bmFtaWMgcmVuZGVyaW5nXG4gICAgLy8gYnkgaW5jbHVkaW5nIGEgU3VzcGVuc2UgYm91bmRhcnkgYWJvdmUgdGhlIGJvZHkuIEluIHRoaXMgY2FzZVxuICAgIC8vIGEgbGFjayBvZiBhIHNoZWxsIGlzIG5vdCBjb25zaWRlcmVkIGRpc2FsbG93ZWQgc28gd2Ugc2ltcGx5IHJldHVyblxuICAgIHJldHVybiBbXVxuICB9XG5cbiAgaWYgKHByZWx1ZGUgIT09IFByZWx1ZGVTdGF0ZS5GdWxsKSB7XG4gICAgLy8gV2UgZGlkbid0IGhhdmUgYW55IHN5bmMgYmFpbG91dHMgYnV0IHRoZXJlIG1heSBiZSB1c2VyIGNvZGUgd2hpY2hcbiAgICAvLyBibG9ja2VkIHRoZSByb290LiBXZSB3b3VsZCBoYXZlIGNhcHR1cmVkIHRoZXNlIGR1cmluZyB0aGUgcHJlcmVuZGVyXG4gICAgLy8gYW5kIGNhbiBsb2cgdGhlbSBoZXJlIGFuZCB0aGVuIHRlcm1pbmF0ZSB0aGUgYnVpbGQvdmFsaWRhdGluZyByZW5kZXJcbiAgICBjb25zdCBkeW5hbWljRXJyb3JzID0gZHluYW1pY1ZhbGlkYXRpb24uZHluYW1pY0Vycm9yc1xuICAgIGlmIChkeW5hbWljRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBkeW5hbWljRXJyb3JzXG4gICAgfVxuXG4gICAgaWYgKHByZWx1ZGUgPT09IFByZWx1ZGVTdGF0ZS5FbXB0eSkge1xuICAgICAgLy8gSWYgd2UgZXZlciBnZXQgdGhpcyBmYXIgdGhlbiB3ZSBtZXNzZWQgdXAgdGhlIHRyYWNraW5nIG9mIGludmFsaWQgZHluYW1pYy5cbiAgICAgIC8vIFdlIHN0aWxsIGFkaGVyZSB0byB0aGUgY29uc3RyYWludCB0aGF0IHlvdSBtdXN0IHByb2R1Y2UgYSBzaGVsbCBidXQgaW52aXRlIHRoZVxuICAgICAgLy8gdXNlciB0byByZXBvcnQgdGhpcyBhcyBhIGJ1ZyBpbiBOZXh0LmpzLlxuICAgICAgcmV0dXJuIFtcbiAgICAgICAgbmV3IEludmFyaWFudEVycm9yKFxuICAgICAgICAgIGBSb3V0ZSBcIiR7d29ya1N0b3JlLnJvdXRlfVwiIGRpZCBub3QgcHJvZHVjZSBhIHN0YXRpYyBzaGVsbCBhbmQgTmV4dC5qcyB3YXMgdW5hYmxlIHRvIGRldGVybWluZSBhIHJlYXNvbi5gXG4gICAgICAgICksXG4gICAgICBdXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIFdlIGhhdmUgYSBwcmVsdWRlIGJ1dCB3ZSBtaWdodCBzdGlsbCBoYXZlIGR5bmFtaWMgbWV0YWRhdGEgd2l0aG91dCBhbnkgb3RoZXIgZHluYW1pYyBhY2Nlc3NcbiAgICBpZiAoXG4gICAgICBkeW5hbWljVmFsaWRhdGlvbi5oYXNBbGxvd2VkRHluYW1pYyA9PT0gZmFsc2UgJiZcbiAgICAgIGR5bmFtaWNWYWxpZGF0aW9uLmR5bmFtaWNFcnJvcnMubGVuZ3RoID09PSAwICYmXG4gICAgICBkeW5hbWljVmFsaWRhdGlvbi5keW5hbWljTWV0YWRhdGFcbiAgICApIHtcbiAgICAgIHJldHVybiBbZHluYW1pY1ZhbGlkYXRpb24uZHluYW1pY01ldGFkYXRhXVxuICAgIH1cbiAgfVxuICAvLyBXZSBoYWQgYSBub24tZW1wdHkgcHJlbHVkZSBhbmQgdGhlcmUgYXJlIG5vIGR5bmFtaWMgaG9sZXNcbiAgcmV0dXJuIFtdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROYXZpZ2F0aW9uRGlzYWxsb3dlZER5bmFtaWNSZWFzb25zKFxuICB3b3JrU3RvcmU6IFdvcmtTdG9yZSxcbiAgcHJlbHVkZTogUHJlbHVkZVN0YXRlLFxuICBkeW5hbWljVmFsaWRhdGlvbjogSW5zdGFudFZhbGlkYXRpb25TdGF0ZSxcbiAgdmFsaWRhdGlvblNhbXBsZVRyYWNraW5nOiBJbnN0YW50VmFsaWRhdGlvblNhbXBsZVRyYWNraW5nIHwgbnVsbCxcbiAgYm91bmRhcnlTdGF0ZTogVmFsaWRhdGlvbkJvdW5kYXJ5VHJhY2tpbmdcbik6IEFycmF5PEVycm9yPiB7XG4gIC8vIElmIHdlIGhhdmUgZXJyb3JzIHJlbGF0ZWQgdG8gbWlzc2luZyBzYW1wbGVzLCB0aG9zZSBzaG91bGQgdGFrZSBwcmVjZWRlbmNlIG92ZXIgZXZlcnl0aGluZyBlbHNlLlxuICBpZiAodmFsaWRhdGlvblNhbXBsZVRyYWNraW5nKSB7XG4gICAgY29uc3QgeyBtaXNzaW5nU2FtcGxlRXJyb3JzIH0gPSB2YWxpZGF0aW9uU2FtcGxlVHJhY2tpbmdcbiAgICBpZiAobWlzc2luZ1NhbXBsZUVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gbWlzc2luZ1NhbXBsZUVycm9yc1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHsgdmFsaWRhdGlvblByZXZlbnRpbmdFcnJvcnMgfSA9IGR5bmFtaWNWYWxpZGF0aW9uXG4gIGlmICh2YWxpZGF0aW9uUHJldmVudGluZ0Vycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHZhbGlkYXRpb25QcmV2ZW50aW5nRXJyb3JzXG4gIH1cblxuICBpZiAoYm91bmRhcnlTdGF0ZS5yZW5kZXJlZElkcy5zaXplIDwgYm91bmRhcnlTdGF0ZS5leHBlY3RlZElkcy5zaXplKSB7XG4gICAgY29uc3QgeyB0aHJvd25FcnJvcnNPdXRzaWRlQm91bmRhcnksIGNyZWF0ZUluc3RhbnRTdGFjayB9ID1cbiAgICAgIGR5bmFtaWNWYWxpZGF0aW9uXG4gICAgaWYgKHRocm93bkVycm9yc091dHNpZGVCb3VuZGFyeS5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgUm91dGUgXCIke3dvcmtTdG9yZS5yb3V0ZX1cIjogQ291bGQgbm90IHZhbGlkYXRlIFxcYHVuc3RhYmxlX2luc3RhbnRcXGAgYmVjYXVzZSB0aGUgdGFyZ2V0IHNlZ21lbnQgd2FzIHByZXZlbnRlZCBmcm9tIHJlbmRlcmluZyBmb3IgYW4gdW5rbm93biByZWFzb24uYFxuICAgICAgY29uc3QgZXJyb3IgPVxuICAgICAgICBjcmVhdGVJbnN0YW50U3RhY2sgIT09IG51bGwgPyBjcmVhdGVJbnN0YW50U3RhY2soKSA6IG5ldyBFcnJvcigpXG4gICAgICBlcnJvci5uYW1lID0gJ0Vycm9yJ1xuICAgICAgZXJyb3IubWVzc2FnZSA9IG1lc3NhZ2VcbiAgICAgIHJldHVybiBbZXJyb3JdXG4gICAgfSBlbHNlIGlmICh0aHJvd25FcnJvcnNPdXRzaWRlQm91bmRhcnkubGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYFJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCI6IENvdWxkIG5vdCB2YWxpZGF0ZSBcXGB1bnN0YWJsZV9pbnN0YW50XFxgIGJlY2F1c2UgdGhlIHRhcmdldCBzZWdtZW50IHdhcyBwcmV2ZW50ZWQgZnJvbSByZW5kZXJpbmcsIGxpa2VseSBkdWUgdG8gdGhlIGZvbGxvd2luZyBlcnJvci5gXG4gICAgICBjb25zdCBlcnJvciA9XG4gICAgICAgIGNyZWF0ZUluc3RhbnRTdGFjayAhPT0gbnVsbCA/IGNyZWF0ZUluc3RhbnRTdGFjaygpIDogbmV3IEVycm9yKClcbiAgICAgIGVycm9yLm5hbWUgPSAnRXJyb3InXG4gICAgICBlcnJvci5tZXNzYWdlID0gbWVzc2FnZVxuICAgICAgcmV0dXJuIFtlcnJvciwgdGhyb3duRXJyb3JzT3V0c2lkZUJvdW5kYXJ5WzBdIGFzIEVycm9yXVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYFJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCI6IENvdWxkIG5vdCB2YWxpZGF0ZSBcXGB1bnN0YWJsZV9pbnN0YW50XFxgIGJlY2F1c2UgdGhlIHRhcmdldCBzZWdtZW50IHdhcyBwcmV2ZW50ZWQgZnJvbSByZW5kZXJpbmcsIGxpa2VseSBkdWUgdG8gb25lIG9mIHRoZSBmb2xsb3dpbmcgZXJyb3JzLmBcbiAgICAgIGNvbnN0IGVycm9yID1cbiAgICAgICAgY3JlYXRlSW5zdGFudFN0YWNrICE9PSBudWxsID8gY3JlYXRlSW5zdGFudFN0YWNrKCkgOiBuZXcgRXJyb3IoKVxuICAgICAgZXJyb3IubmFtZSA9ICdFcnJvcidcbiAgICAgIGVycm9yLm1lc3NhZ2UgPSBtZXNzYWdlXG4gICAgICByZXR1cm4gW2Vycm9yLCAuLi4odGhyb3duRXJyb3JzT3V0c2lkZUJvdW5kYXJ5IGFzIEVycm9yW10pXVxuICAgIH1cbiAgfVxuXG4gIC8vIE5PVEU6IFdlIGRvbid0IGNhcmUgYWJvdXQgU3VzcGVuc2UgYWJvdmUgYm9keSBoZXJlLFxuICAvLyB3ZSdyZSBvbmx5IGNvbmNlcm5lZCB3aXRoIHRoZSB2YWxpZGF0aW9uIGJvdW5kYXJ5XG4gIGlmIChwcmVsdWRlICE9PSBQcmVsdWRlU3RhdGUuRnVsbCkge1xuICAgIGNvbnN0IGR5bmFtaWNFcnJvcnMgPSBkeW5hbWljVmFsaWRhdGlvbi5keW5hbWljRXJyb3JzXG4gICAgaWYgKGR5bmFtaWNFcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGR5bmFtaWNFcnJvcnNcbiAgICB9XG5cbiAgICBpZiAocHJlbHVkZSA9PT0gUHJlbHVkZVN0YXRlLkVtcHR5KSB7XG4gICAgICAvLyBJZiBhIGNsaWVudCBjb21wb25lbnQgc3VzcGVuZGVkIHByZXZlbnRlZCB1cyBmcm9tIHJlbmRlcmluZyBhIHNoZWxsXG4gICAgICAvLyBidXQgZGlkbid0IGJsb2NrIHZhbGlkYXRpb24sIHdlIGRvbid0IHJlcXVpcmUgYSBwcmVsdWRlLlxuICAgICAgaWYgKGR5bmFtaWNWYWxpZGF0aW9uLmhhc0FsbG93ZWRDbGllbnREeW5hbWljQWJvdmVCb3VuZGFyeSkge1xuICAgICAgICByZXR1cm4gW11cbiAgICAgIH1cbiAgICAgIC8vIElmIHdlIGV2ZXIgZ2V0IHRoaXMgZmFyIHRoZW4gd2UgbWVzc2VkIHVwIHRoZSB0cmFja2luZyBvZiBpbnZhbGlkIGR5bmFtaWMuXG4gICAgICByZXR1cm4gW1xuICAgICAgICBuZXcgSW52YXJpYW50RXJyb3IoXG4gICAgICAgICAgYFJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCIgZmFpbGVkIHRvIHJlbmRlciBkdXJpbmcgaW5zdGFudCB2YWxpZGF0aW9uIGFuZCBOZXh0LmpzIHdhcyB1bmFibGUgdG8gZGV0ZXJtaW5lIGEgcmVhc29uLmBcbiAgICAgICAgKSxcbiAgICAgIF1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZHluYW1pY0Vycm9ycyA9IGR5bmFtaWNWYWxpZGF0aW9uLmR5bmFtaWNFcnJvcnNcbiAgICBpZiAoZHluYW1pY0Vycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gZHluYW1pY0Vycm9yc1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGR5bmFtaWNWYWxpZGF0aW9uLmhhc0FsbG93ZWREeW5hbWljID09PSBmYWxzZSAmJlxuICAgICAgZHluYW1pY1ZhbGlkYXRpb24uZHluYW1pY01ldGFkYXRhXG4gICAgKSB7XG4gICAgICByZXR1cm4gW2R5bmFtaWNWYWxpZGF0aW9uLmR5bmFtaWNNZXRhZGF0YV1cbiAgICB9XG4gIH1cbiAgLy8gV2UgaGFkIGEgbm9uLWVtcHR5IHByZWx1ZGUgYW5kIHRoZXJlIGFyZSBubyBkeW5hbWljIGhvbGVzXG4gIHJldHVybiBbXVxufVxuIl0sIm5hbWVzIjpbIkR5bmFtaWNIb2xlS2luZCIsIlBvc3Rwb25lIiwiUHJlbHVkZVN0YXRlIiwiYWJvcnRBbmRUaHJvd09uU3luY2hyb25vdXNSZXF1ZXN0RGF0YUFjY2VzcyIsImFib3J0T25TeW5jaHJvbm91c1BsYXRmb3JtSU9BY2Nlc3MiLCJhY2Nlc3NlZER5bmFtaWNEYXRhIiwiYW5ub3RhdGVEeW5hbWljQWNjZXNzIiwiY29uc3VtZUR5bmFtaWNBY2Nlc3MiLCJjcmVhdGVEeW5hbWljVHJhY2tpbmdTdGF0ZSIsImNyZWF0ZUR5bmFtaWNWYWxpZGF0aW9uU3RhdGUiLCJjcmVhdGVIYW5naW5nSW5wdXRBYm9ydFNpZ25hbCIsImNyZWF0ZUluc3RhbnRWYWxpZGF0aW9uU3RhdGUiLCJjcmVhdGVSZW5kZXJJbkJyb3dzZXJBYm9ydFNpZ25hbCIsImZvcm1hdER5bmFtaWNBUElBY2Nlc3NlcyIsImdldEZpcnN0RHluYW1pY1JlYXNvbiIsImdldE5hdmlnYXRpb25EaXNhbGxvd2VkRHluYW1pY1JlYXNvbnMiLCJnZXRTdGF0aWNTaGVsbERpc2FsbG93ZWREeW5hbWljUmVhc29ucyIsImlzRHluYW1pY1Bvc3Rwb25lIiwiaXNQcmVyZW5kZXJJbnRlcnJ1cHRlZEVycm9yIiwibG9nRGlzYWxsb3dlZER5bmFtaWNFcnJvciIsIm1hcmtDdXJyZW50U2NvcGVBc0R5bmFtaWMiLCJwb3N0cG9uZVdpdGhUcmFja2luZyIsInRocm93SWZEaXNhbGxvd2VkRHluYW1pYyIsInRocm93VG9JbnRlcnJ1cHRTdGF0aWNHZW5lcmF0aW9uIiwidHJhY2tBbGxvd2VkRHluYW1pY0FjY2VzcyIsInRyYWNrRHluYW1pY0RhdGFJbkR5bmFtaWNSZW5kZXIiLCJ0cmFja0R5bmFtaWNIb2xlSW5OYXZpZ2F0aW9uIiwidHJhY2tEeW5hbWljSG9sZUluUnVudGltZVNoZWxsIiwidHJhY2tEeW5hbWljSG9sZUluU3RhdGljU2hlbGwiLCJ0cmFja1Rocm93bkVycm9ySW5OYXZpZ2F0aW9uIiwidXNlRHluYW1pY1JvdXRlUGFyYW1zIiwidXNlRHluYW1pY1NlYXJjaFBhcmFtcyIsImhhc1Bvc3Rwb25lIiwiUmVhY3QiLCJ1bnN0YWJsZV9wb3N0cG9uZSIsImlzRGVidWdEeW5hbWljQWNjZXNzZXMiLCJkeW5hbWljQWNjZXNzZXMiLCJzeW5jRHluYW1pY0Vycm9yV2l0aFN0YWNrIiwiaGFzU3VzcGVuc2VBYm92ZUJvZHkiLCJoYXNEeW5hbWljTWV0YWRhdGEiLCJkeW5hbWljTWV0YWRhdGEiLCJoYXNEeW5hbWljVmlld3BvcnQiLCJoYXNBbGxvd2VkRHluYW1pYyIsImR5bmFtaWNFcnJvcnMiLCJ0cmFja2luZ1N0YXRlIiwiZXhwcmVzc2lvbiIsInN0b3JlIiwid29ya1VuaXRTdG9yZSIsInR5cGUiLCJmb3JjZUR5bmFtaWMiLCJmb3JjZVN0YXRpYyIsImR5bmFtaWNTaG91bGRFcnJvciIsIlN0YXRpY0dlbkJhaWxvdXRFcnJvciIsInJvdXRlIiwiZHluYW1pY1RyYWNraW5nIiwicmV2YWxpZGF0ZSIsImVyciIsIkR5bmFtaWNTZXJ2ZXJFcnJvciIsImR5bmFtaWNVc2FnZURlc2NyaXB0aW9uIiwiZHluYW1pY1VzYWdlU3RhY2siLCJzdGFjayIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInVzZWREeW5hbWljIiwicHJlcmVuZGVyU3RvcmUiLCJhYm9ydE9uU3luY2hyb25vdXNEeW5hbWljRGF0YUFjY2VzcyIsInJlYXNvbiIsImVycm9yIiwiY3JlYXRlUHJlcmVuZGVySW50ZXJydXB0ZWRFcnJvciIsImNvbnRyb2xsZXIiLCJhYm9ydCIsInB1c2giLCJFcnJvciIsInVuZGVmaW5lZCIsImVycm9yV2l0aFN0YWNrIiwicHJlcmVuZGVyU2lnbmFsIiwic2lnbmFsIiwiYWJvcnRlZCIsIndvcmtVbml0QXN5bmNTdG9yYWdlIiwiZ2V0U3RvcmUiLCJhc3NlcnRQb3N0cG9uZSIsImNyZWF0ZVBvc3Rwb25lUmVhc29uIiwibWVzc2FnZSIsImlzRHluYW1pY1Bvc3Rwb25lUmVhc29uIiwiaW5jbHVkZXMiLCJORVhUX1BSRVJFTkRFUl9JTlRFUlJVUFRFRCIsImRpZ2VzdCIsImxlbmd0aCIsInNlcnZlckR5bmFtaWMiLCJjbGllbnREeW5hbWljIiwiZmlsdGVyIiwiYWNjZXNzIiwibWFwIiwic3BsaXQiLCJzbGljZSIsImxpbmUiLCJqb2luIiwiQWJvcnRDb250cm9sbGVyIiwiQmFpbG91dFRvQ1NSRXJyb3IiLCJjYWNoZVNpZ25hbCIsImlucHV0UmVhZHkiLCJ0aGVuIiwic3RhZ2VkUmVuZGVyaW5nIiwid2FpdEZvclN0YWdlIiwiZ2V0UnVudGltZVN0YWdlIiwic2NoZWR1bGVPbk5leHRUaWNrIiwid29ya1N0b3JlIiwid29ya0FzeW5jU3RvcmFnZSIsImZhbGxiYWNrUGFyYW1zIiwiZmFsbGJhY2tSb3V0ZVBhcmFtcyIsInNpemUiLCJ1c2UiLCJtYWtlSGFuZ2luZ1Byb21pc2UiLCJyZW5kZXJTaWduYWwiLCJJbnZhcmlhbnRFcnJvciIsInRocm93Rm9yTWlzc2luZ1JlcXVlc3RTdG9yZSIsImhhc1N1c3BlbnNlUmVnZXgiLCJib2R5QW5kSW1wbGljaXRUYWdzIiwiaGFzU3VzcGVuc2VCZWZvcmVSb290TGF5b3V0V2l0aG91dEJvZHlPckltcGxpY2l0Qm9keVJlZ2V4IiwiUmVnRXhwIiwiUk9PVF9MQVlPVVRfQk9VTkRBUllfTkFNRSIsImhhc01ldGFkYXRhUmVnZXgiLCJNRVRBREFUQV9CT1VOREFSWV9OQU1FIiwiaGFzVmlld3BvcnRSZWdleCIsIlZJRVdQT1JUX0JPVU5EQVJZX05BTUUiLCJoYXNPdXRsZXRSZWdleCIsIk9VVExFVF9CT1VOREFSWV9OQU1FIiwiaGFzSW5zdGFudFZhbGlkYXRpb25Cb3VuZGFyeVJlZ2V4IiwiSU5TVEFOVF9WQUxJREFUSU9OX0JPVU5EQVJZX05BTUUiLCJjb21wb25lbnRTdGFjayIsImR5bmFtaWNWYWxpZGF0aW9uIiwidGVzdCIsImFkZEVycm9yQ29udGV4dCIsImNyZWF0ZUluc3RhbnRTdGFjayIsImhhc0FsbG93ZWRDbGllbnREeW5hbWljQWJvdmVCb3VuZGFyeSIsInZhbGlkYXRpb25QcmV2ZW50aW5nRXJyb3JzIiwidGhyb3duRXJyb3JzT3V0c2lkZUJvdW5kYXJ5Iiwia2luZCIsImJvdW5kYXJ5U3RhdGUiLCJ1c2FnZURlc2NyaXB0aW9uIiwiYm91bmRhcnlMb2NhdGlvbiIsImV4ZWMiLCJleHBlY3RlZElkcyIsInJlbmRlcmVkSWRzIiwic3VzcGVuc2VMb2NhdGlvbiIsImluZGV4Iiwic3luY0Vycm9yIiwiY2F1c2UiLCJ0aHJvd25WYWx1ZSIsIm93bmVyU3RhY2siLCJjYXB0dXJlT3duZXJTdGFjayIsIm5hbWUiLCJjb25zb2xlIiwiX19ORVhUX0RFVl9TRVJWRVIiLCJwcmVsdWRlIiwiaSIsImNvbmZpZ0FsbG93c0Jsb2NraW5nIiwidmFsaWRhdGlvblNhbXBsZVRyYWNraW5nIiwibWlzc2luZ1NhbXBsZUVycm9ycyJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/app-render/entry-base.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/app-render/entry-base.js ***!
|
||
\****************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("// eslint-disable-next-line import/no-extraneous-dependencies\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n ClientPageRoot: function() {\n return _clientpage.ClientPageRoot;\n },\n ClientSegmentRoot: function() {\n return _clientsegment.ClientSegmentRoot;\n },\n Fragment: function() {\n return _react.Fragment;\n },\n HTTPAccessFallbackBoundary: function() {\n return _errorboundary.HTTPAccessFallbackBoundary;\n },\n InstantValidation: function() {\n return InstantValidation;\n },\n LayoutRouter: function() {\n return _layoutrouter.default;\n },\n LoadingBoundaryProvider: function() {\n return _layoutrouter.LoadingBoundaryProvider;\n },\n Postpone: function() {\n return _postpone.Postpone;\n },\n RenderFromTemplateContext: function() {\n return _renderfromtemplatecontext.default;\n },\n RootLayoutBoundary: function() {\n return _boundarycomponents.RootLayoutBoundary;\n },\n SegmentViewNode: function() {\n return SegmentViewNode;\n },\n SegmentViewStateNode: function() {\n return SegmentViewStateNode;\n },\n actionAsyncStorage: function() {\n return _actionasyncstorageexternal.actionAsyncStorage;\n },\n captureOwnerStack: function() {\n return _react.captureOwnerStack;\n },\n collectPrefetchHints: function() {\n return _collectsegmentdata.collectPrefetchHints;\n },\n collectSegmentData: function() {\n return _collectsegmentdata.collectSegmentData;\n },\n createElement: function() {\n return _react.createElement;\n },\n createMetadataComponents: function() {\n return _metadata.createMetadataComponents;\n },\n createPrerenderParamsForClientSegment: function() {\n return _params.createPrerenderParamsForClientSegment;\n },\n createPrerenderSearchParamsForClientPage: function() {\n return _searchparams.createPrerenderSearchParamsForClientPage;\n },\n createServerParamsForServerSegment: function() {\n return _params.createServerParamsForServerSegment;\n },\n createServerSearchParamsForServerPage: function() {\n return _searchparams.createServerSearchParamsForServerPage;\n },\n createTemporaryReferenceSet: function() {\n return _server.createTemporaryReferenceSet;\n },\n decodeAction: function() {\n return _server.decodeAction;\n },\n decodeFormState: function() {\n return _server.decodeFormState;\n },\n decodeReply: function() {\n return _server.decodeReply;\n },\n patchFetch: function() {\n return patchFetch;\n },\n preconnect: function() {\n return _preloads.preconnect;\n },\n preloadFont: function() {\n return _preloads.preloadFont;\n },\n preloadStyle: function() {\n return _preloads.preloadStyle;\n },\n prerender: function() {\n return _static.prerender;\n },\n renderToReadableStream: function() {\n return _server.renderToReadableStream;\n },\n serverHooks: function() {\n return _hooksservercontext;\n },\n taintObjectReference: function() {\n return _taint.taintObjectReference;\n },\n workAsyncStorage: function() {\n return _workasyncstorageexternal.workAsyncStorage;\n },\n workUnitAsyncStorage: function() {\n return _workunitasyncstorageexternal.workUnitAsyncStorage;\n }\n});\nconst _server = __webpack_require__(/*! react-server-dom-webpack/server */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.js\");\nconst _static = __webpack_require__(/*! react-server-dom-webpack/static */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static.js\");\nconst _react = __webpack_require__(/*! react */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js\");\nconst _layoutrouter = /*#__PURE__*/ _interop_require_wildcard(__webpack_require__(/*! ../../client/components/layout-router */ \"(rsc)/./node_modules/next/dist/client/components/layout-router.js\"));\nconst _renderfromtemplatecontext = /*#__PURE__*/ _interop_require_default(__webpack_require__(/*! ../../client/components/render-from-template-context */ \"(rsc)/./node_modules/next/dist/client/components/render-from-template-context.js\"));\nconst _workasyncstorageexternal = __webpack_require__(/*! ../app-render/work-async-storage.external */ \"../app-render/work-async-storage.external\");\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ./work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nconst _actionasyncstorageexternal = __webpack_require__(/*! ../app-render/action-async-storage.external */ \"../app-render/action-async-storage.external\");\nconst _clientpage = __webpack_require__(/*! ../../client/components/client-page */ \"(rsc)/./node_modules/next/dist/client/components/client-page.js\");\nconst _clientsegment = __webpack_require__(/*! ../../client/components/client-segment */ \"(rsc)/./node_modules/next/dist/client/components/client-segment.js\");\nconst _searchparams = __webpack_require__(/*! ../request/search-params */ \"(rsc)/./node_modules/next/dist/server/request/search-params.js\");\nconst _params = __webpack_require__(/*! ../request/params */ \"(rsc)/./node_modules/next/dist/server/request/params.js\");\nconst _hooksservercontext = /*#__PURE__*/ _interop_require_wildcard(__webpack_require__(/*! ../../client/components/hooks-server-context */ \"(rsc)/./node_modules/next/dist/client/components/hooks-server-context.js\"));\nconst _errorboundary = __webpack_require__(/*! ../../client/components/http-access-fallback/error-boundary */ \"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js\");\nconst _metadata = __webpack_require__(/*! ../../lib/metadata/metadata */ \"(rsc)/./node_modules/next/dist/lib/metadata/metadata.js\");\nconst _boundarycomponents = __webpack_require__(/*! ../../lib/framework/boundary-components */ \"(rsc)/./node_modules/next/dist/lib/framework/boundary-components.js\");\nconst _preloads = __webpack_require__(/*! ./rsc/preloads */ \"(rsc)/./node_modules/next/dist/server/app-render/rsc/preloads.js\");\nconst _postpone = __webpack_require__(/*! ./rsc/postpone */ \"(rsc)/./node_modules/next/dist/server/app-render/rsc/postpone.js\");\nconst _taint = __webpack_require__(/*! ./rsc/taint */ \"(rsc)/./node_modules/next/dist/server/app-render/rsc/taint.js\");\nconst _collectsegmentdata = __webpack_require__(/*! ./collect-segment-data */ \"(rsc)/./node_modules/next/dist/server/app-render/collect-segment-data.js\");\nconst _patchfetch = __webpack_require__(/*! ../lib/patch-fetch */ \"(rsc)/./node_modules/next/dist/server/lib/patch-fetch.js\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {\n __proto__: null\n };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nconst InstantValidation = ()=>{\n if (false) {} else {\n return undefined;\n }\n};\nlet SegmentViewNode = ()=>null;\nlet SegmentViewStateNode = ()=>null;\nif (true) {\n const mod = __webpack_require__(/*! ../../next-devtools/userspace/app/segment-explorer-node */ \"(rsc)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js\");\n SegmentViewNode = mod.SegmentViewNode;\n SegmentViewStateNode = mod.SegmentViewStateNode;\n}\n// hot-reloader modules are not bundled so we need to inject `__next__clear_chunk_cache__`\n// into globalThis from this file which is bundled.\nif (false) {} else {\n // Webpack does not have chunks on the server\n globalThis.__next__clear_chunk_cache__ = null;\n}\nfunction patchFetch() {\n return (0, _patchfetch.patchFetch)({\n workAsyncStorage: _workasyncstorageexternal.workAsyncStorage,\n workUnitAsyncStorage: _workunitasyncstorageexternal.workUnitAsyncStorage\n });\n}\n\n//# sourceMappingURL=entry-base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2VudHJ5LWJhc2UuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FxQ0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxnQkFBZ0IsbUJBQU8sQ0FBQyxxSkFBaUM7QUFDekQsZ0JBQWdCLG1CQUFPLENBQUMscUpBQWlDO0FBQ3pELGVBQWUsbUJBQU8sQ0FBQyxpR0FBTztBQUM5Qiw4REFBOEQsbUJBQU8sQ0FBQyxnSEFBdUM7QUFDN0csMEVBQTBFLG1CQUFPLENBQUMsOElBQXNEO0FBQ3hJLGtDQUFrQyxtQkFBTyxDQUFDLDRGQUEyQztBQUNyRixzQ0FBc0MsbUJBQU8sQ0FBQyw4RUFBb0M7QUFDbEYsb0NBQW9DLG1CQUFPLENBQUMsZ0dBQTZDO0FBQ3pGLG9CQUFvQixtQkFBTyxDQUFDLDRHQUFxQztBQUNqRSx1QkFBdUIsbUJBQU8sQ0FBQyxrSEFBd0M7QUFDdkUsc0JBQXNCLG1CQUFPLENBQUMsZ0dBQTBCO0FBQ3hELGdCQUFnQixtQkFBTyxDQUFDLGtGQUFtQjtBQUMzQyxvRUFBb0UsbUJBQU8sQ0FBQyw4SEFBOEM7QUFDMUgsdUJBQXVCLG1CQUFPLENBQUMsNEpBQTZEO0FBQzVGLGtCQUFrQixtQkFBTyxDQUFDLDRGQUE2QjtBQUN2RCw0QkFBNEIsbUJBQU8sQ0FBQyxvSEFBeUM7QUFDN0Usa0JBQWtCLG1CQUFPLENBQUMsd0ZBQWdCO0FBQzFDLGtCQUFrQixtQkFBTyxDQUFDLHdGQUFnQjtBQUMxQyxlQUFlLG1CQUFPLENBQUMsa0ZBQWE7QUFDcEMsNEJBQTRCLG1CQUFPLENBQUMsd0dBQXdCO0FBQzVELG9CQUFvQixtQkFBTyxDQUFDLG9GQUFvQjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsS0FBMEUsRUFBRSxFQUUvRSxDQUFDO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBc0M7QUFDMUMsZ0JBQWdCLG1CQUFPLENBQUMsb0pBQXlEO0FBQ2pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLEtBQXFCLEVBQUUsRUFFMUIsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvYXBwLXJlbmRlci9lbnRyeS1iYXNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcblwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgQ2xpZW50UGFnZVJvb3Q6IG51bGwsXG4gICAgQ2xpZW50U2VnbWVudFJvb3Q6IG51bGwsXG4gICAgRnJhZ21lbnQ6IG51bGwsXG4gICAgSFRUUEFjY2Vzc0ZhbGxiYWNrQm91bmRhcnk6IG51bGwsXG4gICAgSW5zdGFudFZhbGlkYXRpb246IG51bGwsXG4gICAgTGF5b3V0Um91dGVyOiBudWxsLFxuICAgIExvYWRpbmdCb3VuZGFyeVByb3ZpZGVyOiBudWxsLFxuICAgIFBvc3Rwb25lOiBudWxsLFxuICAgIFJlbmRlckZyb21UZW1wbGF0ZUNvbnRleHQ6IG51bGwsXG4gICAgUm9vdExheW91dEJvdW5kYXJ5OiBudWxsLFxuICAgIFNlZ21lbnRWaWV3Tm9kZTogbnVsbCxcbiAgICBTZWdtZW50Vmlld1N0YXRlTm9kZTogbnVsbCxcbiAgICBhY3Rpb25Bc3luY1N0b3JhZ2U6IG51bGwsXG4gICAgY2FwdHVyZU93bmVyU3RhY2s6IG51bGwsXG4gICAgY29sbGVjdFByZWZldGNoSGludHM6IG51bGwsXG4gICAgY29sbGVjdFNlZ21lbnREYXRhOiBudWxsLFxuICAgIGNyZWF0ZUVsZW1lbnQ6IG51bGwsXG4gICAgY3JlYXRlTWV0YWRhdGFDb21wb25lbnRzOiBudWxsLFxuICAgIGNyZWF0ZVByZXJlbmRlclBhcmFtc0ZvckNsaWVudFNlZ21lbnQ6IG51bGwsXG4gICAgY3JlYXRlUHJlcmVuZGVyU2VhcmNoUGFyYW1zRm9yQ2xpZW50UGFnZTogbnVsbCxcbiAgICBjcmVhdGVTZXJ2ZXJQYXJhbXNGb3JTZXJ2ZXJTZWdtZW50OiBudWxsLFxuICAgIGNyZWF0ZVNlcnZlclNlYXJjaFBhcmFtc0ZvclNlcnZlclBhZ2U6IG51bGwsXG4gICAgY3JlYXRlVGVtcG9yYXJ5UmVmZXJlbmNlU2V0OiBudWxsLFxuICAgIGRlY29kZUFjdGlvbjogbnVsbCxcbiAgICBkZWNvZGVGb3JtU3RhdGU6IG51bGwsXG4gICAgZGVjb2RlUmVwbHk6IG51bGwsXG4gICAgcGF0Y2hGZXRjaDogbnVsbCxcbiAgICBwcmVjb25uZWN0OiBudWxsLFxuICAgIHByZWxvYWRGb250OiBudWxsLFxuICAgIHByZWxvYWRTdHlsZTogbnVsbCxcbiAgICBwcmVyZW5kZXI6IG51bGwsXG4gICAgcmVuZGVyVG9SZWFkYWJsZVN0cmVhbTogbnVsbCxcbiAgICBzZXJ2ZXJIb29rczogbnVsbCxcbiAgICB0YWludE9iamVjdFJlZmVyZW5jZTogbnVsbCxcbiAgICB3b3JrQXN5bmNTdG9yYWdlOiBudWxsLFxuICAgIHdvcmtVbml0QXN5bmNTdG9yYWdlOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIENsaWVudFBhZ2VSb290OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9jbGllbnRwYWdlLkNsaWVudFBhZ2VSb290O1xuICAgIH0sXG4gICAgQ2xpZW50U2VnbWVudFJvb3Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2NsaWVudHNlZ21lbnQuQ2xpZW50U2VnbWVudFJvb3Q7XG4gICAgfSxcbiAgICBGcmFnbWVudDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfcmVhY3QuRnJhZ21lbnQ7XG4gICAgfSxcbiAgICBIVFRQQWNjZXNzRmFsbGJhY2tCb3VuZGFyeTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfZXJyb3Jib3VuZGFyeS5IVFRQQWNjZXNzRmFsbGJhY2tCb3VuZGFyeTtcbiAgICB9LFxuICAgIEluc3RhbnRWYWxpZGF0aW9uOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEluc3RhbnRWYWxpZGF0aW9uO1xuICAgIH0sXG4gICAgTGF5b3V0Um91dGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9sYXlvdXRyb3V0ZXIuZGVmYXVsdDtcbiAgICB9LFxuICAgIExvYWRpbmdCb3VuZGFyeVByb3ZpZGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9sYXlvdXRyb3V0ZXIuTG9hZGluZ0JvdW5kYXJ5UHJvdmlkZXI7XG4gICAgfSxcbiAgICBQb3N0cG9uZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfcG9zdHBvbmUuUG9zdHBvbmU7XG4gICAgfSxcbiAgICBSZW5kZXJGcm9tVGVtcGxhdGVDb250ZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9yZW5kZXJmcm9tdGVtcGxhdGVjb250ZXh0LmRlZmF1bHQ7XG4gICAgfSxcbiAgICBSb290TGF5b3V0Qm91bmRhcnk6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2JvdW5kYXJ5Y29tcG9uZW50cy5Sb290TGF5b3V0Qm91bmRhcnk7XG4gICAgfSxcbiAgICBTZWdtZW50Vmlld05vZGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gU2VnbWVudFZpZXdOb2RlO1xuICAgIH0sXG4gICAgU2VnbWVudFZpZXdTdGF0ZU5vZGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gU2VnbWVudFZpZXdTdGF0ZU5vZGU7XG4gICAgfSxcbiAgICBhY3Rpb25Bc3luY1N0b3JhZ2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2FjdGlvbmFzeW5jc3RvcmFnZWV4dGVybmFsLmFjdGlvbkFzeW5jU3RvcmFnZTtcbiAgICB9LFxuICAgIGNhcHR1cmVPd25lclN0YWNrOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9yZWFjdC5jYXB0dXJlT3duZXJTdGFjaztcbiAgICB9LFxuICAgIGNvbGxlY3RQcmVmZXRjaEhpbnRzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9jb2xsZWN0c2VnbWVudGRhdGEuY29sbGVjdFByZWZldGNoSGludHM7XG4gICAgfSxcbiAgICBjb2xsZWN0U2VnbWVudERhdGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2NvbGxlY3RzZWdtZW50ZGF0YS5jb2xsZWN0U2VnbWVudERhdGE7XG4gICAgfSxcbiAgICBjcmVhdGVFbGVtZW50OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9yZWFjdC5jcmVhdGVFbGVtZW50O1xuICAgIH0sXG4gICAgY3JlYXRlTWV0YWRhdGFDb21wb25lbnRzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9tZXRhZGF0YS5jcmVhdGVNZXRhZGF0YUNvbXBvbmVudHM7XG4gICAgfSxcbiAgICBjcmVhdGVQcmVyZW5kZXJQYXJhbXNGb3JDbGllbnRTZWdtZW50OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9wYXJhbXMuY3JlYXRlUHJlcmVuZGVyUGFyYW1zRm9yQ2xpZW50U2VnbWVudDtcbiAgICB9LFxuICAgIGNyZWF0ZVByZXJlbmRlclNlYXJjaFBhcmFtc0ZvckNsaWVudFBhZ2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3NlYXJjaHBhcmFtcy5jcmVhdGVQcmVyZW5kZXJTZWFyY2hQYXJhbXNGb3JDbGllbnRQYWdlO1xuICAgIH0sXG4gICAgY3JlYXRlU2VydmVyUGFyYW1zRm9yU2VydmVyU2VnbWVudDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfcGFyYW1zLmNyZWF0ZVNlcnZlclBhcmFtc0ZvclNlcnZlclNlZ21lbnQ7XG4gICAgfSxcbiAgICBjcmVhdGVTZXJ2ZXJTZWFyY2hQYXJhbXNGb3JTZXJ2ZXJQYWdlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9zZWFyY2hwYXJhbXMuY3JlYXRlU2VydmVyU2VhcmNoUGFyYW1zRm9yU2VydmVyUGFnZTtcbiAgICB9LFxuICAgIGNyZWF0ZVRlbXBvcmFyeVJlZmVyZW5jZVNldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfc2VydmVyLmNyZWF0ZVRlbXBvcmFyeVJlZmVyZW5jZVNldDtcbiAgICB9LFxuICAgIGRlY29kZUFjdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfc2VydmVyLmRlY29kZUFjdGlvbjtcbiAgICB9LFxuICAgIGRlY29kZUZvcm1TdGF0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfc2VydmVyLmRlY29kZUZvcm1TdGF0ZTtcbiAgICB9LFxuICAgIGRlY29kZVJlcGx5OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9zZXJ2ZXIuZGVjb2RlUmVwbHk7XG4gICAgfSxcbiAgICBwYXRjaEZldGNoOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHBhdGNoRmV0Y2g7XG4gICAgfSxcbiAgICBwcmVjb25uZWN0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9wcmVsb2Fkcy5wcmVjb25uZWN0O1xuICAgIH0sXG4gICAgcHJlbG9hZEZvbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3ByZWxvYWRzLnByZWxvYWRGb250O1xuICAgIH0sXG4gICAgcHJlbG9hZFN0eWxlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9wcmVsb2Fkcy5wcmVsb2FkU3R5bGU7XG4gICAgfSxcbiAgICBwcmVyZW5kZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3N0YXRpYy5wcmVyZW5kZXI7XG4gICAgfSxcbiAgICByZW5kZXJUb1JlYWRhYmxlU3RyZWFtOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9zZXJ2ZXIucmVuZGVyVG9SZWFkYWJsZVN0cmVhbTtcbiAgICB9LFxuICAgIHNlcnZlckhvb2tzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9ob29rc3NlcnZlcmNvbnRleHQ7XG4gICAgfSxcbiAgICB0YWludE9iamVjdFJlZmVyZW5jZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfdGFpbnQudGFpbnRPYmplY3RSZWZlcmVuY2U7XG4gICAgfSxcbiAgICB3b3JrQXN5bmNTdG9yYWdlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF93b3JrYXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya0FzeW5jU3RvcmFnZTtcbiAgICB9LFxuICAgIHdvcmtVbml0QXN5bmNTdG9yYWdlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLndvcmtVbml0QXN5bmNTdG9yYWdlO1xuICAgIH1cbn0pO1xuY29uc3QgX3NlcnZlciA9IHJlcXVpcmUoXCJyZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2svc2VydmVyXCIpO1xuY29uc3QgX3N0YXRpYyA9IHJlcXVpcmUoXCJyZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2svc3RhdGljXCIpO1xuY29uc3QgX3JlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xuY29uc3QgX2xheW91dHJvdXRlciA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZChyZXF1aXJlKFwiLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvbGF5b3V0LXJvdXRlclwiKSk7XG5jb25zdCBfcmVuZGVyZnJvbXRlbXBsYXRlY29udGV4dCA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jbGllbnQvY29tcG9uZW50cy9yZW5kZXItZnJvbS10ZW1wbGF0ZS1jb250ZXh0XCIpKTtcbmNvbnN0IF93b3JrYXN5bmNzdG9yYWdlZXh0ZXJuYWwgPSByZXF1aXJlKFwiLi4vYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWxcIik7XG5jb25zdCBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbCA9IHJlcXVpcmUoXCIuL3dvcmstdW5pdC1hc3luYy1zdG9yYWdlLmV4dGVybmFsXCIpO1xuY29uc3QgX2FjdGlvbmFzeW5jc3RvcmFnZWV4dGVybmFsID0gcmVxdWlyZShcIi4uL2FwcC1yZW5kZXIvYWN0aW9uLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWxcIik7XG5jb25zdCBfY2xpZW50cGFnZSA9IHJlcXVpcmUoXCIuLi8uLi9jbGllbnQvY29tcG9uZW50cy9jbGllbnQtcGFnZVwiKTtcbmNvbnN0IF9jbGllbnRzZWdtZW50ID0gcmVxdWlyZShcIi4uLy4uL2NsaWVudC9jb21wb25lbnRzL2NsaWVudC1zZWdtZW50XCIpO1xuY29uc3QgX3NlYXJjaHBhcmFtcyA9IHJlcXVpcmUoXCIuLi9yZXF1ZXN0L3NlYXJjaC1wYXJhbXNcIik7XG5jb25zdCBfcGFyYW1zID0gcmVxdWlyZShcIi4uL3JlcXVlc3QvcGFyYW1zXCIpO1xuY29uc3QgX2hvb2tzc2VydmVyY29udGV4dCA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZChyZXF1aXJlKFwiLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvaG9va3Mtc2VydmVyLWNvbnRleHRcIikpO1xuY29uc3QgX2Vycm9yYm91bmRhcnkgPSByZXF1aXJlKFwiLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvaHR0cC1hY2Nlc3MtZmFsbGJhY2svZXJyb3ItYm91bmRhcnlcIik7XG5jb25zdCBfbWV0YWRhdGEgPSByZXF1aXJlKFwiLi4vLi4vbGliL21ldGFkYXRhL21ldGFkYXRhXCIpO1xuY29uc3QgX2JvdW5kYXJ5Y29tcG9uZW50cyA9IHJlcXVpcmUoXCIuLi8uLi9saWIvZnJhbWV3b3JrL2JvdW5kYXJ5LWNvbXBvbmVudHNcIik7XG5jb25zdCBfcHJlbG9hZHMgPSByZXF1aXJlKFwiLi9yc2MvcHJlbG9hZHNcIik7XG5jb25zdCBfcG9zdHBvbmUgPSByZXF1aXJlKFwiLi9yc2MvcG9zdHBvbmVcIik7XG5jb25zdCBfdGFpbnQgPSByZXF1aXJlKFwiLi9yc2MvdGFpbnRcIik7XG5jb25zdCBfY29sbGVjdHNlZ21lbnRkYXRhID0gcmVxdWlyZShcIi4vY29sbGVjdC1zZWdtZW50LWRhdGFcIik7XG5jb25zdCBfcGF0Y2hmZXRjaCA9IHJlcXVpcmUoXCIuLi9saWIvcGF0Y2gtZmV0Y2hcIik7XG5mdW5jdGlvbiBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHtcbiAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgfTtcbn1cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkge1xuICAgIGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDtcbiAgICB2YXIgY2FjaGVCYWJlbEludGVyb3AgPSBuZXcgV2Vha01hcCgpO1xuICAgIHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTtcbiAgICByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uKG5vZGVJbnRlcm9wKSB7XG4gICAgICAgIHJldHVybiBub2RlSW50ZXJvcCA/IGNhY2hlTm9kZUludGVyb3AgOiBjYWNoZUJhYmVsSW50ZXJvcDtcbiAgICB9KShub2RlSW50ZXJvcCk7XG59XG5mdW5jdGlvbiBfaW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkKG9iaiwgbm9kZUludGVyb3ApIHtcbiAgICBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkge1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH1cbiAgICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkZWZhdWx0OiBvYmpcbiAgICAgICAgfTtcbiAgICB9XG4gICAgdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKTtcbiAgICBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlLmdldChvYmopO1xuICAgIH1cbiAgICB2YXIgbmV3T2JqID0ge1xuICAgICAgICBfX3Byb3RvX186IG51bGxcbiAgICB9O1xuICAgIHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbiAgICBmb3IodmFyIGtleSBpbiBvYmope1xuICAgICAgICBpZiAoa2V5ICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgICAgICB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDtcbiAgICAgICAgICAgIGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdPYmpba2V5XSA9IG9ialtrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIG5ld09iai5kZWZhdWx0ID0gb2JqO1xuICAgIGlmIChjYWNoZSkge1xuICAgICAgICBjYWNoZS5zZXQob2JqLCBuZXdPYmopO1xuICAgIH1cbiAgICByZXR1cm4gbmV3T2JqO1xufVxuY29uc3QgSW5zdGFudFZhbGlkYXRpb24gPSAoKT0+e1xuICAgIGlmIChwcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgIT09ICdlZGdlJyAmJiBwcm9jZXNzLmVudi5fX05FWFRfQ0FDSEVfQ09NUE9ORU5UUykge1xuICAgICAgICByZXR1cm4gcmVxdWlyZSgnLi9pbnN0YW50LXZhbGlkYXRpb24vaW5zdGFudC12YWxpZGF0aW9uJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG59O1xubGV0IFNlZ21lbnRWaWV3Tm9kZSA9ICgpPT5udWxsO1xubGV0IFNlZ21lbnRWaWV3U3RhdGVOb2RlID0gKCk9Pm51bGw7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICBjb25zdCBtb2QgPSByZXF1aXJlKCcuLi8uLi9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS9hcHAvc2VnbWVudC1leHBsb3Jlci1ub2RlJyk7XG4gICAgU2VnbWVudFZpZXdOb2RlID0gbW9kLlNlZ21lbnRWaWV3Tm9kZTtcbiAgICBTZWdtZW50Vmlld1N0YXRlTm9kZSA9IG1vZC5TZWdtZW50Vmlld1N0YXRlTm9kZTtcbn1cbi8vIGhvdC1yZWxvYWRlciBtb2R1bGVzIGFyZSBub3QgYnVuZGxlZCBzbyB3ZSBuZWVkIHRvIGluamVjdCBgX19uZXh0X19jbGVhcl9jaHVua19jYWNoZV9fYFxuLy8gaW50byBnbG9iYWxUaGlzIGZyb20gdGhpcyBmaWxlIHdoaWNoIGlzIGJ1bmRsZWQuXG5pZiAocHJvY2Vzcy5lbnYuVFVSQk9QQUNLKSB7XG4gICAgZ2xvYmFsVGhpcy5fX25leHRfX2NsZWFyX2NodW5rX2NhY2hlX18gPSBfX3R1cmJvcGFja19jbGVhcl9jaHVua19jYWNoZV9fO1xufSBlbHNlIHtcbiAgICAvLyBXZWJwYWNrIGRvZXMgbm90IGhhdmUgY2h1bmtzIG9uIHRoZSBzZXJ2ZXJcbiAgICBnbG9iYWxUaGlzLl9fbmV4dF9fY2xlYXJfY2h1bmtfY2FjaGVfXyA9IG51bGw7XG59XG5mdW5jdGlvbiBwYXRjaEZldGNoKCkge1xuICAgIHJldHVybiAoMCwgX3BhdGNoZmV0Y2gucGF0Y2hGZXRjaCkoe1xuICAgICAgICB3b3JrQXN5bmNTdG9yYWdlOiBfd29ya2FzeW5jc3RvcmFnZWV4dGVybmFsLndvcmtBc3luY1N0b3JhZ2UsXG4gICAgICAgIHdvcmtVbml0QXN5bmNTdG9yYWdlOiBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrVW5pdEFzeW5jU3RvcmFnZVxuICAgIH0pO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1lbnRyeS1iYXNlLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/entry-base.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/app-render/get-short-dynamic-param-type.js":
|
||
/*!**********************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/app-render/get-short-dynamic-param-type.js ***!
|
||
\**********************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"dynamicParamTypes\", ({\n enumerable: true,\n get: function() {\n return dynamicParamTypes;\n }\n}));\nconst dynamicParamTypes = {\n catchall: 'c',\n 'catchall-intercepted-(..)(..)': 'ci(..)(..)',\n 'catchall-intercepted-(.)': 'ci(.)',\n 'catchall-intercepted-(..)': 'ci(..)',\n 'catchall-intercepted-(...)': 'ci(...)',\n 'optional-catchall': 'oc',\n dynamic: 'd',\n 'dynamic-intercepted-(..)(..)': 'di(..)(..)',\n 'dynamic-intercepted-(.)': 'di(.)',\n 'dynamic-intercepted-(..)': 'di(..)',\n 'dynamic-intercepted-(...)': 'di(...)'\n};\n\n//# sourceMappingURL=get-short-dynamic-param-type.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2dldC1zaG9ydC1keW5hbWljLXBhcmFtLXR5cGUuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixxREFBb0Q7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL2FwcC1yZW5kZXIvZ2V0LXNob3J0LWR5bmFtaWMtcGFyYW0tdHlwZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImR5bmFtaWNQYXJhbVR5cGVzXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBkeW5hbWljUGFyYW1UeXBlcztcbiAgICB9XG59KTtcbmNvbnN0IGR5bmFtaWNQYXJhbVR5cGVzID0ge1xuICAgIGNhdGNoYWxsOiAnYycsXG4gICAgJ2NhdGNoYWxsLWludGVyY2VwdGVkLSguLikoLi4pJzogJ2NpKC4uKSguLiknLFxuICAgICdjYXRjaGFsbC1pbnRlcmNlcHRlZC0oLiknOiAnY2koLiknLFxuICAgICdjYXRjaGFsbC1pbnRlcmNlcHRlZC0oLi4pJzogJ2NpKC4uKScsXG4gICAgJ2NhdGNoYWxsLWludGVyY2VwdGVkLSguLi4pJzogJ2NpKC4uLiknLFxuICAgICdvcHRpb25hbC1jYXRjaGFsbCc6ICdvYycsXG4gICAgZHluYW1pYzogJ2QnLFxuICAgICdkeW5hbWljLWludGVyY2VwdGVkLSguLikoLi4pJzogJ2RpKC4uKSguLiknLFxuICAgICdkeW5hbWljLWludGVyY2VwdGVkLSguKSc6ICdkaSguKScsXG4gICAgJ2R5bmFtaWMtaW50ZXJjZXB0ZWQtKC4uKSc6ICdkaSguLiknLFxuICAgICdkeW5hbWljLWludGVyY2VwdGVkLSguLi4pJzogJ2RpKC4uLiknXG59O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXQtc2hvcnQtZHluYW1pYy1wYXJhbS10eXBlLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/get-short-dynamic-param-type.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js":
|
||
/*!*******************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js ***!
|
||
\*******************************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"INSTANT_VALIDATION_BOUNDARY_NAME\", ({\n enumerable: true,\n get: function() {\n return INSTANT_VALIDATION_BOUNDARY_NAME;\n }\n}));\nconst INSTANT_VALIDATION_BOUNDARY_NAME = '__next_instant_validation_boundary__';\n\n//# sourceMappingURL=boundary-constants.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2luc3RhbnQtdmFsaWRhdGlvbi9ib3VuZGFyeS1jb25zdGFudHMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixvRUFBbUU7QUFDbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRjs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL2FwcC1yZW5kZXIvaW5zdGFudC12YWxpZGF0aW9uL2JvdW5kYXJ5LWNvbnN0YW50cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIklOU1RBTlRfVkFMSURBVElPTl9CT1VOREFSWV9OQU1FXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBJTlNUQU5UX1ZBTElEQVRJT05fQk9VTkRBUllfTkFNRTtcbiAgICB9XG59KTtcbmNvbnN0IElOU1RBTlRfVkFMSURBVElPTl9CT1VOREFSWV9OQU1FID0gJ19fbmV4dF9pbnN0YW50X3ZhbGlkYXRpb25fYm91bmRhcnlfXyc7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJvdW5kYXJ5LWNvbnN0YW50cy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/app-render/instant-validation/instant-samples.js":
|
||
/*!****************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/app-render/instant-validation/instant-samples.js ***!
|
||
\****************************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n assertRootParamInSamples: function() {\n return assertRootParamInSamples;\n },\n createCookiesFromSample: function() {\n return createCookiesFromSample;\n },\n createDraftModeForValidation: function() {\n return createDraftModeForValidation;\n },\n createExhaustiveParamsProxy: function() {\n return createExhaustiveParamsProxy;\n },\n createExhaustiveSearchParamsProxy: function() {\n return createExhaustiveSearchParamsProxy;\n },\n createExhaustiveURLSearchParamsProxy: function() {\n return createExhaustiveURLSearchParamsProxy;\n },\n createHeadersFromSample: function() {\n return createHeadersFromSample;\n },\n createRelativeURLFromSamples: function() {\n return createRelativeURLFromSamples;\n },\n createValidationSampleTracking: function() {\n return createValidationSampleTracking;\n },\n trackMissingSampleError: function() {\n return trackMissingSampleError;\n },\n trackMissingSampleErrorAndThrow: function() {\n return trackMissingSampleErrorAndThrow;\n }\n});\nconst _cookies = __webpack_require__(/*! ../../web/spec-extension/cookies */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/cookies.js\");\nconst _requestcookies = __webpack_require__(/*! ../../web/spec-extension/adapters/request-cookies */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.js\");\nconst _headers = __webpack_require__(/*! ../../web/spec-extension/adapters/headers */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/headers.js\");\nconst _getsegmentparam = __webpack_require__(/*! ../../../shared/lib/router/utils/get-segment-param */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/get-segment-param.js\");\nconst _parserelativeurl = __webpack_require__(/*! ../../../shared/lib/router/utils/parse-relative-url */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js\");\nconst _invarianterror = __webpack_require__(/*! ../../../shared/lib/invariant-error */ \"(rsc)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nconst _instantvalidationerror = __webpack_require__(/*! ./instant-validation-error */ \"(rsc)/./node_modules/next/dist/server/app-render/instant-validation/instant-validation-error.js\");\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ../work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nconst _reflectutils = __webpack_require__(/*! ../../../shared/lib/utils/reflect-utils */ \"(rsc)/./node_modules/next/dist/shared/lib/utils/reflect-utils.js\");\nfunction createValidationSampleTracking() {\n return {\n missingSampleErrors: []\n };\n}\nfunction getExpectedSampleTracking() {\n let validationSampleTracking = null;\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'request':\n case 'validation-client':\n // TODO(instant-validation-build): do we need any special handling for caches?\n validationSampleTracking = workUnitStore.validationSampleTracking ?? null;\n break;\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'prerender-client':\n case 'prerender':\n case 'prerender-runtime':\n case 'generate-static-params':\n break;\n default:\n workUnitStore;\n }\n }\n if (!validationSampleTracking) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected to have a workUnitStore that provides validationSampleTracking'), \"__NEXT_ERROR_CODE\", {\n value: \"E1110\",\n enumerable: false,\n configurable: true\n });\n }\n return validationSampleTracking;\n}\nfunction trackMissingSampleError(error) {\n const validationSampleTracking = getExpectedSampleTracking();\n validationSampleTracking.missingSampleErrors.push(error);\n}\nfunction trackMissingSampleErrorAndThrow(error) {\n // TODO(instant-validation-build): this should abort the render\n trackMissingSampleError(error);\n throw error;\n}\nfunction createCookiesFromSample(sampleCookies, route) {\n const declaredNames = new Set();\n const cookies = new _cookies.RequestCookies(new Headers());\n if (sampleCookies) {\n for (const cookie of sampleCookies){\n declaredNames.add(cookie.name);\n if (cookie.value !== null) {\n cookies.set(cookie.name, cookie.value);\n }\n }\n }\n const sealed = _requestcookies.RequestCookiesAdapter.seal(cookies);\n return new Proxy(sealed, {\n get (target, prop, receiver) {\n if (prop === 'has') {\n const originalMethod = Reflect.get(target, prop, receiver);\n const wrappedMethod = function(name) {\n if (!declaredNames.has(name)) {\n trackMissingSampleErrorAndThrow(createMissingCookieSampleError(route, name));\n }\n return originalMethod.call(target, name);\n };\n return wrappedMethod;\n }\n if (prop === 'get') {\n const originalMethod = Reflect.get(target, prop, receiver);\n const wrappedMethod = function(nameOrCookie) {\n let name;\n if (typeof nameOrCookie === 'string') {\n name = nameOrCookie;\n } else if (nameOrCookie && typeof nameOrCookie === 'object' && typeof nameOrCookie.name === 'string') {\n name = nameOrCookie.name;\n } else {\n // This is an invalid input. Pass it through to the original method so it can error.\n return originalMethod.call(target, nameOrCookie);\n }\n if (!declaredNames.has(name)) {\n trackMissingSampleErrorAndThrow(createMissingCookieSampleError(route, name));\n }\n return originalMethod.call(target, name);\n };\n return wrappedMethod;\n }\n // TODO(instant-validation-build): what should getAll do?\n // Maybe we should only allow it if there's an array (possibly empty?)\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nfunction createMissingCookieSampleError(route, name) {\n return Object.defineProperty(new _instantvalidationerror.InstantValidationError(`Route \"${route}\" accessed cookie \"${name}\" which is not defined in the \\`samples\\` ` + `of \\`unstable_instant\\`. Add it to the sample's \\`cookies\\` array, ` + `or \\`{ name: \"${name}\", value: null }\\` if it should be absent.`), \"__NEXT_ERROR_CODE\", {\n value: \"E1115\",\n enumerable: false,\n configurable: true\n });\n}\nfunction createHeadersFromSample(rawSampleHeaders, sampleCookies, route) {\n // If we have cookie samples, add a `cookie` header to match.\n // Accessing it will be implicitly allowed by the proxy --\n // if the user defined some cookies, accessing the \"cookie\" header is also fine.\n const sampleHeaders = rawSampleHeaders ? [\n ...rawSampleHeaders\n ] : [];\n if (sampleHeaders.find(([name])=>name.toLowerCase() === 'cookie')) {\n throw Object.defineProperty(new _instantvalidationerror.InstantValidationError('Invalid sample: Defining cookies via a \"cookie\" header is not supported. Use `cookies: [{ name: ..., value: ... }]` instead.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1111\",\n enumerable: false,\n configurable: true\n });\n }\n if (sampleCookies) {\n const cookieHeaderValue = sampleCookies.toString();\n sampleHeaders.push([\n 'cookie',\n // if the `cookies` samples were empty, or they were all `null`, then we have no cookies,\n // and the header isn't present, but should remains readable, so we set it to null.\n cookieHeaderValue !== '' ? cookieHeaderValue : null\n ]);\n }\n const declaredNames = new Set();\n const headersInit = {};\n for (const [name, value] of sampleHeaders){\n declaredNames.add(name.toLowerCase());\n if (value !== null) {\n headersInit[name.toLowerCase()] = value;\n }\n }\n const sealed = _headers.HeadersAdapter.seal(_headers.HeadersAdapter.from(headersInit));\n return new Proxy(sealed, {\n get (target, prop, receiver) {\n if (prop === 'get' || prop === 'has') {\n const originalMethod = Reflect.get(target, prop, receiver);\n const patchedMethod = function(rawName) {\n const name = rawName.toLowerCase();\n if (!declaredNames.has(name)) {\n trackMissingSampleErrorAndThrow(Object.defineProperty(new _instantvalidationerror.InstantValidationError(`Route \"${route}\" accessed header \"${name}\" which is not defined in the \\`samples\\` ` + `of \\`unstable_instant\\`. Add it to the sample's \\`headers\\` array, ` + `or \\`[\"${name}\", null]\\` if it should be absent.`), \"__NEXT_ERROR_CODE\", {\n value: \"E1116\",\n enumerable: false,\n configurable: true\n }));\n }\n // typescript can't reconcile a union of functions with a union of return types,\n // so we have to cast the original return type away\n return originalMethod.call(target, name);\n };\n return patchedMethod;\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nfunction createDraftModeForValidation() {\n // Create a minimal DraftModeProvider-compatible object\n // that always reports draft mode as disabled.\n //\n // private properties that can't be set from outside the class.\n return {\n get isEnabled () {\n return false;\n },\n enable () {\n throw Object.defineProperty(new Error('Draft mode cannot be enabled during build-time instant validation.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1092\",\n enumerable: false,\n configurable: true\n });\n },\n disable () {\n throw Object.defineProperty(new Error('Draft mode cannot be disabled during build-time instant validation.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1094\",\n enumerable: false,\n configurable: true\n });\n }\n };\n}\nfunction createExhaustiveParamsProxy(underlyingParams, declaredParamNames, route) {\n return new Proxy(underlyingParams, {\n get (target, prop, receiver) {\n if (typeof prop === 'string' && !_reflectutils.wellKnownProperties.has(prop) && // Only error when accessing a param that is part of the route but wasn't provided.\n // accessing properties that aren't expected to be a valid param value is fine.\n prop in underlyingParams && !declaredParamNames.has(prop)) {\n trackMissingSampleErrorAndThrow(Object.defineProperty(new _instantvalidationerror.InstantValidationError(`Route \"${route}\" accessed param \"${prop}\" which is not defined in the \\`samples\\` ` + `of \\`unstable_instant\\`. Add it to the sample's \\`params\\` object.`), \"__NEXT_ERROR_CODE\", {\n value: \"E1095\",\n enumerable: false,\n configurable: true\n }));\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nfunction createExhaustiveSearchParamsProxy(searchParams, declaredSearchParamNames, route) {\n return new Proxy(searchParams, {\n get (target, prop, receiver) {\n if (typeof prop === 'string' && !_reflectutils.wellKnownProperties.has(prop) && !declaredSearchParamNames.has(prop)) {\n trackMissingSampleErrorAndThrow(createMissingSearchParamSampleError(route, prop));\n }\n return Reflect.get(target, prop, receiver);\n },\n has (target, prop) {\n if (typeof prop === 'string' && !_reflectutils.wellKnownProperties.has(prop) && !declaredSearchParamNames.has(prop)) {\n trackMissingSampleErrorAndThrow(createMissingSearchParamSampleError(route, prop));\n }\n return Reflect.has(target, prop);\n }\n });\n}\nfunction createExhaustiveURLSearchParamsProxy(searchParams, declaredSearchParamNames, route) {\n return new Proxy(searchParams, {\n get (target, prop, receiver) {\n // Intercept method calls that access specific param names\n if (prop === 'get' || prop === 'getAll' || prop === 'has') {\n const originalMathod = Reflect.get(target, prop, receiver);\n return (name)=>{\n if (typeof name === 'string' && !declaredSearchParamNames.has(name)) {\n trackMissingSampleErrorAndThrow(createMissingSearchParamSampleError(route, name));\n }\n return originalMathod.call(target, name);\n };\n }\n const value = Reflect.get(target, prop, receiver);\n // Prevent `TypeError: Value of \"this\" must be of type URLSearchParams` for methods\n if (typeof value === 'function' && !Object.hasOwn(target, prop)) {\n return value.bind(target);\n }\n return value;\n }\n });\n}\nfunction createMissingSearchParamSampleError(route, name) {\n return Object.defineProperty(new _instantvalidationerror.InstantValidationError(`Route \"${route}\" accessed searchParam \"${name}\" which is not defined in the \\`samples\\` ` + `of \\`unstable_instant\\`. Add it to the sample's \\`searchParams\\` object, ` + `or \\`{ \"${name}\": null }\\` if it should be absent.`), \"__NEXT_ERROR_CODE\", {\n value: \"E1098\",\n enumerable: false,\n configurable: true\n });\n}\nfunction createRelativeURLFromSamples(route, sampleParams, sampleSearchParams) {\n // Build searchParams query object and URL search string from sample\n const pathname = createPathnameFromRouteAndSampleParams(route, sampleParams ?? {});\n let search = '';\n if (sampleSearchParams) {\n const qs = createURLSearchParamsFromSample(sampleSearchParams).toString();\n if (qs) {\n search = '?' + qs;\n }\n }\n return (0, _parserelativeurl.parseRelativeUrl)(pathname + search, undefined, true);\n}\nfunction createURLSearchParamsFromSample(sampleSearchParams) {\n const result = new URLSearchParams();\n if (sampleSearchParams) {\n for (const [key, value] of Object.entries(sampleSearchParams)){\n if (value === null || value === undefined) continue;\n if (Array.isArray(value)) {\n for (const v of value){\n result.append(key, v);\n }\n } else {\n result.set(key, value);\n }\n }\n }\n return result;\n}\n/**\n * Substitute sample params into `workStore.route` to create a plausible pathname.\n * TODO(instant-validation-build): this logic is somewhat hacky and likely incomplete,\n * but it should be good enough for some initial testing.\n */ function createPathnameFromRouteAndSampleParams(route, params) {\n let interpolatedSegments = [];\n const rawSegments = route.split('/');\n for (const rawSegment of rawSegments){\n const param = (0, _getsegmentparam.getSegmentParam)(rawSegment);\n if (param) {\n switch(param.paramType){\n case 'catchall':\n case 'optional-catchall':\n {\n let paramValue = params[param.paramName];\n if (paramValue === undefined) {\n // The value for the param was not provided. `usePathname` will detect this and throw\n // before this can surface to userspace. Use `[...NAME]` as a placeholder for the param value\n // in case it pops up somewhere unexpectedly.\n paramValue = [\n rawSegment\n ];\n } else if (!Array.isArray(paramValue)) {\n // NOTE: this happens outside of render, so we don't need `trackMissingSampleErrorAndThrow`\n throw Object.defineProperty(new _instantvalidationerror.InstantValidationError(`Expected sample param value for segment '${rawSegment}' to be an array of strings, got ${typeof paramValue}`), \"__NEXT_ERROR_CODE\", {\n value: \"E1104\",\n enumerable: false,\n configurable: true\n });\n }\n interpolatedSegments.push(...paramValue.map((v)=>encodeURIComponent(v)));\n break;\n }\n case 'dynamic':\n {\n let paramValue = params[param.paramName];\n if (paramValue === undefined) {\n // The value for the param was not provided. `usePathname` will detect this and throw\n // before this can surface to userspace. Use `[NAME]` as a placeholder for the param value\n // in case it pops up somewhere unexpectedly.\n paramValue = rawSegment;\n } else if (typeof paramValue !== 'string') {\n // NOTE: this happens outside of render, so we don't need `trackMissingSampleErrorAndThrow`\n throw Object.defineProperty(new _instantvalidationerror.InstantValidationError(`Expected sample param value for segment '${rawSegment}' to be a string, got ${typeof paramValue}`), \"__NEXT_ERROR_CODE\", {\n value: \"E1108\",\n enumerable: false,\n configurable: true\n });\n }\n interpolatedSegments.push(encodeURIComponent(paramValue));\n break;\n }\n case 'catchall-intercepted-(..)(..)':\n case 'catchall-intercepted-(.)':\n case 'catchall-intercepted-(..)':\n case 'catchall-intercepted-(...)':\n case 'dynamic-intercepted-(..)(..)':\n case 'dynamic-intercepted-(.)':\n case 'dynamic-intercepted-(..)':\n case 'dynamic-intercepted-(...)':\n {\n // TODO(instant-validation-build): i don't know how these are supposed to work, or if we can even get them here\n throw Object.defineProperty(new _invarianterror.InvariantError('Not implemented: Validation of interception routes'), \"__NEXT_ERROR_CODE\", {\n value: \"E1106\",\n enumerable: false,\n configurable: true\n });\n }\n default:\n {\n param.paramType;\n }\n }\n } else {\n interpolatedSegments.push(rawSegment);\n }\n }\n return interpolatedSegments.join('/');\n}\nfunction assertRootParamInSamples(workStore, sampleParams, paramName) {\n if (sampleParams && paramName in sampleParams) {\n // The param is defined in the samples.\n } else {\n const route = workStore.route;\n trackMissingSampleErrorAndThrow(Object.defineProperty(new _instantvalidationerror.InstantValidationError(`Route \"${route}\" accessed root param \"${paramName}\" which is not defined in the \\`samples\\` ` + `of \\`unstable_instant\\`. Add it to the sample's \\`params\\` object.`), \"__NEXT_ERROR_CODE\", {\n value: \"E1114\",\n enumerable: false,\n configurable: true\n }));\n }\n}\n\n//# sourceMappingURL=instant-samples.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2luc3RhbnQtdmFsaWRhdGlvbi9pbnN0YW50LXNhbXBsZXMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBWUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsaUJBQWlCLG1CQUFPLENBQUMsNkdBQWtDO0FBQzNELHdCQUF3QixtQkFBTyxDQUFDLCtJQUFtRDtBQUNuRixpQkFBaUIsbUJBQU8sQ0FBQywrSEFBMkM7QUFDcEUseUJBQXlCLG1CQUFPLENBQUMsdUlBQW9EO0FBQ3JGLDBCQUEwQixtQkFBTyxDQUFDLHlJQUFxRDtBQUN2Rix3QkFBd0IsbUJBQU8sQ0FBQyx5R0FBcUM7QUFDckUsZ0NBQWdDLG1CQUFPLENBQUMsbUlBQTRCO0FBQ3BFLHNDQUFzQyxtQkFBTyxDQUFDLCtFQUFxQztBQUNuRixzQkFBc0IsbUJBQU8sQ0FBQyxpSEFBeUM7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsMkhBQTJILE1BQU0seUJBQXlCLFVBQVU7QUFDcEs7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2luc3RhbnQtdmFsaWRhdGlvbi9pbnN0YW50LXNhbXBsZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBhc3NlcnRSb290UGFyYW1JblNhbXBsZXM6IG51bGwsXG4gICAgY3JlYXRlQ29va2llc0Zyb21TYW1wbGU6IG51bGwsXG4gICAgY3JlYXRlRHJhZnRNb2RlRm9yVmFsaWRhdGlvbjogbnVsbCxcbiAgICBjcmVhdGVFeGhhdXN0aXZlUGFyYW1zUHJveHk6IG51bGwsXG4gICAgY3JlYXRlRXhoYXVzdGl2ZVNlYXJjaFBhcmFtc1Byb3h5OiBudWxsLFxuICAgIGNyZWF0ZUV4aGF1c3RpdmVVUkxTZWFyY2hQYXJhbXNQcm94eTogbnVsbCxcbiAgICBjcmVhdGVIZWFkZXJzRnJvbVNhbXBsZTogbnVsbCxcbiAgICBjcmVhdGVSZWxhdGl2ZVVSTEZyb21TYW1wbGVzOiBudWxsLFxuICAgIGNyZWF0ZVZhbGlkYXRpb25TYW1wbGVUcmFja2luZzogbnVsbCxcbiAgICB0cmFja01pc3NpbmdTYW1wbGVFcnJvcjogbnVsbCxcbiAgICB0cmFja01pc3NpbmdTYW1wbGVFcnJvckFuZFRocm93OiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIGFzc2VydFJvb3RQYXJhbUluU2FtcGxlczogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBhc3NlcnRSb290UGFyYW1JblNhbXBsZXM7XG4gICAgfSxcbiAgICBjcmVhdGVDb29raWVzRnJvbVNhbXBsZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVDb29raWVzRnJvbVNhbXBsZTtcbiAgICB9LFxuICAgIGNyZWF0ZURyYWZ0TW9kZUZvclZhbGlkYXRpb246IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlRHJhZnRNb2RlRm9yVmFsaWRhdGlvbjtcbiAgICB9LFxuICAgIGNyZWF0ZUV4aGF1c3RpdmVQYXJhbXNQcm94eTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVFeGhhdXN0aXZlUGFyYW1zUHJveHk7XG4gICAgfSxcbiAgICBjcmVhdGVFeGhhdXN0aXZlU2VhcmNoUGFyYW1zUHJveHk6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlRXhoYXVzdGl2ZVNlYXJjaFBhcmFtc1Byb3h5O1xuICAgIH0sXG4gICAgY3JlYXRlRXhoYXVzdGl2ZVVSTFNlYXJjaFBhcmFtc1Byb3h5OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUV4aGF1c3RpdmVVUkxTZWFyY2hQYXJhbXNQcm94eTtcbiAgICB9LFxuICAgIGNyZWF0ZUhlYWRlcnNGcm9tU2FtcGxlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUhlYWRlcnNGcm9tU2FtcGxlO1xuICAgIH0sXG4gICAgY3JlYXRlUmVsYXRpdmVVUkxGcm9tU2FtcGxlczogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVSZWxhdGl2ZVVSTEZyb21TYW1wbGVzO1xuICAgIH0sXG4gICAgY3JlYXRlVmFsaWRhdGlvblNhbXBsZVRyYWNraW5nOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVZhbGlkYXRpb25TYW1wbGVUcmFja2luZztcbiAgICB9LFxuICAgIHRyYWNrTWlzc2luZ1NhbXBsZUVycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRyYWNrTWlzc2luZ1NhbXBsZUVycm9yO1xuICAgIH0sXG4gICAgdHJhY2tNaXNzaW5nU2FtcGxlRXJyb3JBbmRUaHJvdzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0cmFja01pc3NpbmdTYW1wbGVFcnJvckFuZFRocm93O1xuICAgIH1cbn0pO1xuY29uc3QgX2Nvb2tpZXMgPSByZXF1aXJlKFwiLi4vLi4vd2ViL3NwZWMtZXh0ZW5zaW9uL2Nvb2tpZXNcIik7XG5jb25zdCBfcmVxdWVzdGNvb2tpZXMgPSByZXF1aXJlKFwiLi4vLi4vd2ViL3NwZWMtZXh0ZW5zaW9uL2FkYXB0ZXJzL3JlcXVlc3QtY29va2llc1wiKTtcbmNvbnN0IF9oZWFkZXJzID0gcmVxdWlyZShcIi4uLy4uL3dlYi9zcGVjLWV4dGVuc2lvbi9hZGFwdGVycy9oZWFkZXJzXCIpO1xuY29uc3QgX2dldHNlZ21lbnRwYXJhbSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9nZXQtc2VnbWVudC1wYXJhbVwiKTtcbmNvbnN0IF9wYXJzZXJlbGF0aXZldXJsID0gcmVxdWlyZShcIi4uLy4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhcnNlLXJlbGF0aXZlLXVybFwiKTtcbmNvbnN0IF9pbnZhcmlhbnRlcnJvciA9IHJlcXVpcmUoXCIuLi8uLi8uLi9zaGFyZWQvbGliL2ludmFyaWFudC1lcnJvclwiKTtcbmNvbnN0IF9pbnN0YW50dmFsaWRhdGlvbmVycm9yID0gcmVxdWlyZShcIi4vaW5zdGFudC12YWxpZGF0aW9uLWVycm9yXCIpO1xuY29uc3QgX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwgPSByZXF1aXJlKFwiLi4vd29yay11bml0LWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWxcIik7XG5jb25zdCBfcmVmbGVjdHV0aWxzID0gcmVxdWlyZShcIi4uLy4uLy4uL3NoYXJlZC9saWIvdXRpbHMvcmVmbGVjdC11dGlsc1wiKTtcbmZ1bmN0aW9uIGNyZWF0ZVZhbGlkYXRpb25TYW1wbGVUcmFja2luZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBtaXNzaW5nU2FtcGxlRXJyb3JzOiBbXVxuICAgIH07XG59XG5mdW5jdGlvbiBnZXRFeHBlY3RlZFNhbXBsZVRyYWNraW5nKCkge1xuICAgIGxldCB2YWxpZGF0aW9uU2FtcGxlVHJhY2tpbmcgPSBudWxsO1xuICAgIGNvbnN0IHdvcmtVbml0U3RvcmUgPSBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICh3b3JrVW5pdFN0b3JlKSB7XG4gICAgICAgIHN3aXRjaCh3b3JrVW5pdFN0b3JlLnR5cGUpe1xuICAgICAgICAgICAgY2FzZSAncmVxdWVzdCc6XG4gICAgICAgICAgICBjYXNlICd2YWxpZGF0aW9uLWNsaWVudCc6XG4gICAgICAgICAgICAgICAgLy8gVE9ETyhpbnN0YW50LXZhbGlkYXRpb24tYnVpbGQpOiBkbyB3ZSBuZWVkIGFueSBzcGVjaWFsIGhhbmRsaW5nIGZvciBjYWNoZXM/XG4gICAgICAgICAgICAgICAgdmFsaWRhdGlvblNhbXBsZVRyYWNraW5nID0gd29ya1VuaXRTdG9yZS52YWxpZGF0aW9uU2FtcGxlVHJhY2tpbmcgPz8gbnVsbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByaXZhdGUtY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAndW5zdGFibGUtY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcHByJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgICAgICAgIGNhc2UgJ2dlbmVyYXRlLXN0YXRpYy1wYXJhbXMnOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB3b3JrVW5pdFN0b3JlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICghdmFsaWRhdGlvblNhbXBsZVRyYWNraW5nKSB7XG4gICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdFeHBlY3RlZCB0byBoYXZlIGEgd29ya1VuaXRTdG9yZSB0aGF0IHByb3ZpZGVzIHZhbGlkYXRpb25TYW1wbGVUcmFja2luZycpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgIHZhbHVlOiBcIkUxMTEwXCIsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkYXRpb25TYW1wbGVUcmFja2luZztcbn1cbmZ1bmN0aW9uIHRyYWNrTWlzc2luZ1NhbXBsZUVycm9yKGVycm9yKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvblNhbXBsZVRyYWNraW5nID0gZ2V0RXhwZWN0ZWRTYW1wbGVUcmFja2luZygpO1xuICAgIHZhbGlkYXRpb25TYW1wbGVUcmFja2luZy5taXNzaW5nU2FtcGxlRXJyb3JzLnB1c2goZXJyb3IpO1xufVxuZnVuY3Rpb24gdHJhY2tNaXNzaW5nU2FtcGxlRXJyb3JBbmRUaHJvdyhlcnJvcikge1xuICAgIC8vIFRPRE8oaW5zdGFudC12YWxpZGF0aW9uLWJ1aWxkKTogdGhpcyBzaG91bGQgYWJvcnQgdGhlIHJlbmRlclxuICAgIHRyYWNrTWlzc2luZ1NhbXBsZUVycm9yKGVycm9yKTtcbiAgICB0aHJvdyBlcnJvcjtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUNvb2tpZXNGcm9tU2FtcGxlKHNhbXBsZUNvb2tpZXMsIHJvdXRlKSB7XG4gICAgY29uc3QgZGVjbGFyZWROYW1lcyA9IG5ldyBTZXQoKTtcbiAgICBjb25zdCBjb29raWVzID0gbmV3IF9jb29raWVzLlJlcXVlc3RDb29raWVzKG5ldyBIZWFkZXJzKCkpO1xuICAgIGlmIChzYW1wbGVDb29raWVzKSB7XG4gICAgICAgIGZvciAoY29uc3QgY29va2llIG9mIHNhbXBsZUNvb2tpZXMpe1xuICAgICAgICAgICAgZGVjbGFyZWROYW1lcy5hZGQoY29va2llLm5hbWUpO1xuICAgICAgICAgICAgaWYgKGNvb2tpZS52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvb2tpZXMuc2V0KGNvb2tpZS5uYW1lLCBjb29raWUudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHNlYWxlZCA9IF9yZXF1ZXN0Y29va2llcy5SZXF1ZXN0Q29va2llc0FkYXB0ZXIuc2VhbChjb29raWVzKTtcbiAgICByZXR1cm4gbmV3IFByb3h5KHNlYWxlZCwge1xuICAgICAgICBnZXQgKHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIGlmIChwcm9wID09PSAnaGFzJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICAgICAgY29uc3Qgd3JhcHBlZE1ldGhvZCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWNsYXJlZE5hbWVzLmhhcyhuYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tNaXNzaW5nU2FtcGxlRXJyb3JBbmRUaHJvdyhjcmVhdGVNaXNzaW5nQ29va2llU2FtcGxlRXJyb3Iocm91dGUsIG5hbWUpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuY2FsbCh0YXJnZXQsIG5hbWUpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWRNZXRob2Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJvcCA9PT0gJ2dldCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZWRNZXRob2QgPSBmdW5jdGlvbihuYW1lT3JDb29raWUpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbmFtZU9yQ29va2llID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWVPckNvb2tpZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lT3JDb29raWUgJiYgdHlwZW9mIG5hbWVPckNvb2tpZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG5hbWVPckNvb2tpZS5uYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWVPckNvb2tpZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBpbnZhbGlkIGlucHV0LiBQYXNzIGl0IHRocm91Z2ggdG8gdGhlIG9yaWdpbmFsIG1ldGhvZCBzbyBpdCBjYW4gZXJyb3IuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuY2FsbCh0YXJnZXQsIG5hbWVPckNvb2tpZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWNsYXJlZE5hbWVzLmhhcyhuYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tNaXNzaW5nU2FtcGxlRXJyb3JBbmRUaHJvdyhjcmVhdGVNaXNzaW5nQ29va2llU2FtcGxlRXJyb3Iocm91dGUsIG5hbWUpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuY2FsbCh0YXJnZXQsIG5hbWUpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWRNZXRob2Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBUT0RPKGluc3RhbnQtdmFsaWRhdGlvbi1idWlsZCk6IHdoYXQgc2hvdWxkIGdldEFsbCBkbz9cbiAgICAgICAgICAgIC8vIE1heWJlIHdlIHNob3VsZCBvbmx5IGFsbG93IGl0IGlmIHRoZXJlJ3MgYW4gYXJyYXkgKHBvc3NpYmx5IGVtcHR5PylcbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlTWlzc2luZ0Nvb2tpZVNhbXBsZUVycm9yKHJvdXRlLCBuYW1lKSB7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2luc3RhbnR2YWxpZGF0aW9uZXJyb3IuSW5zdGFudFZhbGlkYXRpb25FcnJvcihgUm91dGUgXCIke3JvdXRlfVwiIGFjY2Vzc2VkIGNvb2tpZSBcIiR7bmFtZX1cIiB3aGljaCBpcyBub3QgZGVmaW5lZCBpbiB0aGUgXFxgc2FtcGxlc1xcYCBgICsgYG9mIFxcYHVuc3RhYmxlX2luc3RhbnRcXGAuIEFkZCBpdCB0byB0aGUgc2FtcGxlJ3MgXFxgY29va2llc1xcYCBhcnJheSwgYCArIGBvciBcXGB7IG5hbWU6IFwiJHtuYW1lfVwiLCB2YWx1ZTogbnVsbCB9XFxgIGlmIGl0IHNob3VsZCBiZSBhYnNlbnQuYCksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICB2YWx1ZTogXCJFMTExNVwiLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG59XG5mdW5jdGlvbiBjcmVhdGVIZWFkZXJzRnJvbVNhbXBsZShyYXdTYW1wbGVIZWFkZXJzLCBzYW1wbGVDb29raWVzLCByb3V0ZSkge1xuICAgIC8vIElmIHdlIGhhdmUgY29va2llIHNhbXBsZXMsIGFkZCBhIGBjb29raWVgIGhlYWRlciB0byBtYXRjaC5cbiAgICAvLyBBY2Nlc3NpbmcgaXQgd2lsbCBiZSBpbXBsaWNpdGx5IGFsbG93ZWQgYnkgdGhlIHByb3h5IC0tXG4gICAgLy8gaWYgdGhlIHVzZXIgZGVmaW5lZCBzb21lIGNvb2tpZXMsIGFjY2Vzc2luZyB0aGUgXCJjb29raWVcIiBoZWFkZXIgaXMgYWxzbyBmaW5lLlxuICAgIGNvbnN0IHNhbXBsZUhlYWRlcnMgPSByYXdTYW1wbGVIZWFkZXJzID8gW1xuICAgICAgICAuLi5yYXdTYW1wbGVIZWFkZXJzXG4gICAgXSA6IFtdO1xuICAgIGlmIChzYW1wbGVIZWFkZXJzLmZpbmQoKFtuYW1lXSk9Pm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2Nvb2tpZScpKSB7XG4gICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2luc3RhbnR2YWxpZGF0aW9uZXJyb3IuSW5zdGFudFZhbGlkYXRpb25FcnJvcignSW52YWxpZCBzYW1wbGU6IERlZmluaW5nIGNvb2tpZXMgdmlhIGEgXCJjb29raWVcIiBoZWFkZXIgaXMgbm90IHN1cHBvcnRlZC4gVXNlIGBjb29raWVzOiBbeyBuYW1lOiAuLi4sIHZhbHVlOiAuLi4gfV1gIGluc3RlYWQuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgdmFsdWU6IFwiRTExMTFcIixcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoc2FtcGxlQ29va2llcykge1xuICAgICAgICBjb25zdCBjb29raWVIZWFkZXJWYWx1ZSA9IHNhbXBsZUNvb2tpZXMudG9TdHJpbmcoKTtcbiAgICAgICAgc2FtcGxlSGVhZGVycy5wdXNoKFtcbiAgICAgICAgICAgICdjb29raWUnLFxuICAgICAgICAgICAgLy8gaWYgdGhlIGBjb29raWVzYCBzYW1wbGVzIHdlcmUgZW1wdHksIG9yIHRoZXkgd2VyZSBhbGwgYG51bGxgLCB0aGVuIHdlIGhhdmUgbm8gY29va2llcyxcbiAgICAgICAgICAgIC8vIGFuZCB0aGUgaGVhZGVyIGlzbid0IHByZXNlbnQsIGJ1dCBzaG91bGQgcmVtYWlucyByZWFkYWJsZSwgc28gd2Ugc2V0IGl0IHRvIG51bGwuXG4gICAgICAgICAgICBjb29raWVIZWFkZXJWYWx1ZSAhPT0gJycgPyBjb29raWVIZWFkZXJWYWx1ZSA6IG51bGxcbiAgICAgICAgXSk7XG4gICAgfVxuICAgIGNvbnN0IGRlY2xhcmVkTmFtZXMgPSBuZXcgU2V0KCk7XG4gICAgY29uc3QgaGVhZGVyc0luaXQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2Ygc2FtcGxlSGVhZGVycyl7XG4gICAgICAgIGRlY2xhcmVkTmFtZXMuYWRkKG5hbWUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVyc0luaXRbbmFtZS50b0xvd2VyQ2FzZSgpXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHNlYWxlZCA9IF9oZWFkZXJzLkhlYWRlcnNBZGFwdGVyLnNlYWwoX2hlYWRlcnMuSGVhZGVyc0FkYXB0ZXIuZnJvbShoZWFkZXJzSW5pdCkpO1xuICAgIHJldHVybiBuZXcgUHJveHkoc2VhbGVkLCB7XG4gICAgICAgIGdldCAodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKHByb3AgPT09ICdnZXQnIHx8IHByb3AgPT09ICdoYXMnKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRjaGVkTWV0aG9kID0gZnVuY3Rpb24ocmF3TmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gcmF3TmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWRlY2xhcmVkTmFtZXMuaGFzKG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFja01pc3NpbmdTYW1wbGVFcnJvckFuZFRocm93KE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2luc3RhbnR2YWxpZGF0aW9uZXJyb3IuSW5zdGFudFZhbGlkYXRpb25FcnJvcihgUm91dGUgXCIke3JvdXRlfVwiIGFjY2Vzc2VkIGhlYWRlciBcIiR7bmFtZX1cIiB3aGljaCBpcyBub3QgZGVmaW5lZCBpbiB0aGUgXFxgc2FtcGxlc1xcYCBgICsgYG9mIFxcYHVuc3RhYmxlX2luc3RhbnRcXGAuIEFkZCBpdCB0byB0aGUgc2FtcGxlJ3MgXFxgaGVhZGVyc1xcYCBhcnJheSwgYCArIGBvciBcXGBbXCIke25hbWV9XCIsIG51bGxdXFxgIGlmIGl0IHNob3VsZCBiZSBhYnNlbnQuYCksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkUxMTE2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gdHlwZXNjcmlwdCBjYW4ndCByZWNvbmNpbGUgYSB1bmlvbiBvZiBmdW5jdGlvbnMgd2l0aCBhIHVuaW9uIG9mIHJldHVybiB0eXBlcyxcbiAgICAgICAgICAgICAgICAgICAgLy8gc28gd2UgaGF2ZSB0byBjYXN0IHRoZSBvcmlnaW5hbCByZXR1cm4gdHlwZSBhd2F5XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbE1ldGhvZC5jYWxsKHRhcmdldCwgbmFtZSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGF0Y2hlZE1ldGhvZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlRHJhZnRNb2RlRm9yVmFsaWRhdGlvbigpIHtcbiAgICAvLyBDcmVhdGUgYSBtaW5pbWFsIERyYWZ0TW9kZVByb3ZpZGVyLWNvbXBhdGlibGUgb2JqZWN0XG4gICAgLy8gdGhhdCBhbHdheXMgcmVwb3J0cyBkcmFmdCBtb2RlIGFzIGRpc2FibGVkLlxuICAgIC8vXG4gICAgLy8gcHJpdmF0ZSBwcm9wZXJ0aWVzIHRoYXQgY2FuJ3QgYmUgc2V0IGZyb20gb3V0c2lkZSB0aGUgY2xhc3MuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0IGlzRW5hYmxlZCAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIGVuYWJsZSAoKSB7XG4gICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKCdEcmFmdCBtb2RlIGNhbm5vdCBiZSBlbmFibGVkIGR1cmluZyBidWlsZC10aW1lIGluc3RhbnQgdmFsaWRhdGlvbi4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiRTEwOTJcIixcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBkaXNhYmxlICgpIHtcbiAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoJ0RyYWZ0IG1vZGUgY2Fubm90IGJlIGRpc2FibGVkIGR1cmluZyBidWlsZC10aW1lIGluc3RhbnQgdmFsaWRhdGlvbi4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiRTEwOTRcIixcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUV4aGF1c3RpdmVQYXJhbXNQcm94eSh1bmRlcmx5aW5nUGFyYW1zLCBkZWNsYXJlZFBhcmFtTmFtZXMsIHJvdXRlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm94eSh1bmRlcmx5aW5nUGFyYW1zLCB7XG4gICAgICAgIGdldCAodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJyAmJiAhX3JlZmxlY3R1dGlscy53ZWxsS25vd25Qcm9wZXJ0aWVzLmhhcyhwcm9wKSAmJiAvLyBPbmx5IGVycm9yIHdoZW4gYWNjZXNzaW5nIGEgcGFyYW0gdGhhdCBpcyBwYXJ0IG9mIHRoZSByb3V0ZSBidXQgd2Fzbid0IHByb3ZpZGVkLlxuICAgICAgICAgICAgLy8gYWNjZXNzaW5nIHByb3BlcnRpZXMgdGhhdCBhcmVuJ3QgZXhwZWN0ZWQgdG8gYmUgYSB2YWxpZCBwYXJhbSB2YWx1ZSBpcyBmaW5lLlxuICAgICAgICAgICAgcHJvcCBpbiB1bmRlcmx5aW5nUGFyYW1zICYmICFkZWNsYXJlZFBhcmFtTmFtZXMuaGFzKHByb3ApKSB7XG4gICAgICAgICAgICAgICAgdHJhY2tNaXNzaW5nU2FtcGxlRXJyb3JBbmRUaHJvdyhPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnN0YW50dmFsaWRhdGlvbmVycm9yLkluc3RhbnRWYWxpZGF0aW9uRXJyb3IoYFJvdXRlIFwiJHtyb3V0ZX1cIiBhY2Nlc3NlZCBwYXJhbSBcIiR7cHJvcH1cIiB3aGljaCBpcyBub3QgZGVmaW5lZCBpbiB0aGUgXFxgc2FtcGxlc1xcYCBgICsgYG9mIFxcYHVuc3RhYmxlX2luc3RhbnRcXGAuIEFkZCBpdCB0byB0aGUgc2FtcGxlJ3MgXFxgcGFyYW1zXFxgIG9iamVjdC5gKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkUxMDk1XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUV4aGF1c3RpdmVTZWFyY2hQYXJhbXNQcm94eShzZWFyY2hQYXJhbXMsIGRlY2xhcmVkU2VhcmNoUGFyYW1OYW1lcywgcm91dGUpIHtcbiAgICByZXR1cm4gbmV3IFByb3h5KHNlYXJjaFBhcmFtcywge1xuICAgICAgICBnZXQgKHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N0cmluZycgJiYgIV9yZWZsZWN0dXRpbHMud2VsbEtub3duUHJvcGVydGllcy5oYXMocHJvcCkgJiYgIWRlY2xhcmVkU2VhcmNoUGFyYW1OYW1lcy5oYXMocHJvcCkpIHtcbiAgICAgICAgICAgICAgICB0cmFja01pc3NpbmdTYW1wbGVFcnJvckFuZFRocm93KGNyZWF0ZU1pc3NpbmdTZWFyY2hQYXJhbVNhbXBsZUVycm9yKHJvdXRlLCBwcm9wKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgIH0sXG4gICAgICAgIGhhcyAodGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnICYmICFfcmVmbGVjdHV0aWxzLndlbGxLbm93blByb3BlcnRpZXMuaGFzKHByb3ApICYmICFkZWNsYXJlZFNlYXJjaFBhcmFtTmFtZXMuaGFzKHByb3ApKSB7XG4gICAgICAgICAgICAgICAgdHJhY2tNaXNzaW5nU2FtcGxlRXJyb3JBbmRUaHJvdyhjcmVhdGVNaXNzaW5nU2VhcmNoUGFyYW1TYW1wbGVFcnJvcihyb3V0ZSwgcHJvcCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuaGFzKHRhcmdldCwgcHJvcCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUV4aGF1c3RpdmVVUkxTZWFyY2hQYXJhbXNQcm94eShzZWFyY2hQYXJhbXMsIGRlY2xhcmVkU2VhcmNoUGFyYW1OYW1lcywgcm91dGUpIHtcbiAgICByZXR1cm4gbmV3IFByb3h5KHNlYXJjaFBhcmFtcywge1xuICAgICAgICBnZXQgKHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIC8vIEludGVyY2VwdCBtZXRob2QgY2FsbHMgdGhhdCBhY2Nlc3Mgc3BlY2lmaWMgcGFyYW0gbmFtZXNcbiAgICAgICAgICAgIGlmIChwcm9wID09PSAnZ2V0JyB8fCBwcm9wID09PSAnZ2V0QWxsJyB8fCBwcm9wID09PSAnaGFzJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsTWF0aG9kID0gUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChuYW1lKT0+e1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG5hbWUgPT09ICdzdHJpbmcnICYmICFkZWNsYXJlZFNlYXJjaFBhcmFtTmFtZXMuaGFzKG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFja01pc3NpbmdTYW1wbGVFcnJvckFuZFRocm93KGNyZWF0ZU1pc3NpbmdTZWFyY2hQYXJhbVNhbXBsZUVycm9yKHJvdXRlLCBuYW1lKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsTWF0aG9kLmNhbGwodGFyZ2V0LCBuYW1lKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgIC8vIFByZXZlbnQgYFR5cGVFcnJvcjogVmFsdWUgb2YgXCJ0aGlzXCIgbXVzdCBiZSBvZiB0eXBlIFVSTFNlYXJjaFBhcmFtc2AgZm9yIG1ldGhvZHNcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgJiYgIU9iamVjdC5oYXNPd24odGFyZ2V0LCBwcm9wKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5iaW5kKHRhcmdldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZU1pc3NpbmdTZWFyY2hQYXJhbVNhbXBsZUVycm9yKHJvdXRlLCBuYW1lKSB7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2luc3RhbnR2YWxpZGF0aW9uZXJyb3IuSW5zdGFudFZhbGlkYXRpb25FcnJvcihgUm91dGUgXCIke3JvdXRlfVwiIGFjY2Vzc2VkIHNlYXJjaFBhcmFtIFwiJHtuYW1lfVwiIHdoaWNoIGlzIG5vdCBkZWZpbmVkIGluIHRoZSBcXGBzYW1wbGVzXFxgIGAgKyBgb2YgXFxgdW5zdGFibGVfaW5zdGFudFxcYC4gQWRkIGl0IHRvIHRoZSBzYW1wbGUncyBcXGBzZWFyY2hQYXJhbXNcXGAgb2JqZWN0LCBgICsgYG9yIFxcYHsgXCIke25hbWV9XCI6IG51bGwgfVxcYCBpZiBpdCBzaG91bGQgYmUgYWJzZW50LmApLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgdmFsdWU6IFwiRTEwOThcIixcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlUmVsYXRpdmVVUkxGcm9tU2FtcGxlcyhyb3V0ZSwgc2FtcGxlUGFyYW1zLCBzYW1wbGVTZWFyY2hQYXJhbXMpIHtcbiAgICAvLyBCdWlsZCBzZWFyY2hQYXJhbXMgcXVlcnkgb2JqZWN0IGFuZCBVUkwgc2VhcmNoIHN0cmluZyBmcm9tIHNhbXBsZVxuICAgIGNvbnN0IHBhdGhuYW1lID0gY3JlYXRlUGF0aG5hbWVGcm9tUm91dGVBbmRTYW1wbGVQYXJhbXMocm91dGUsIHNhbXBsZVBhcmFtcyA/PyB7fSk7XG4gICAgbGV0IHNlYXJjaCA9ICcnO1xuICAgIGlmIChzYW1wbGVTZWFyY2hQYXJhbXMpIHtcbiAgICAgICAgY29uc3QgcXMgPSBjcmVhdGVVUkxTZWFyY2hQYXJhbXNGcm9tU2FtcGxlKHNhbXBsZVNlYXJjaFBhcmFtcykudG9TdHJpbmcoKTtcbiAgICAgICAgaWYgKHFzKSB7XG4gICAgICAgICAgICBzZWFyY2ggPSAnPycgKyBxcztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gKDAsIF9wYXJzZXJlbGF0aXZldXJsLnBhcnNlUmVsYXRpdmVVcmwpKHBhdGhuYW1lICsgc2VhcmNoLCB1bmRlZmluZWQsIHRydWUpO1xufVxuZnVuY3Rpb24gY3JlYXRlVVJMU2VhcmNoUGFyYW1zRnJvbVNhbXBsZShzYW1wbGVTZWFyY2hQYXJhbXMpIHtcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgaWYgKHNhbXBsZVNlYXJjaFBhcmFtcykge1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhzYW1wbGVTZWFyY2hQYXJhbXMpKXtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdiBvZiB2YWx1ZSl7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoa2V5LCB2KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbi8qKlxuICogU3Vic3RpdHV0ZSBzYW1wbGUgcGFyYW1zIGludG8gYHdvcmtTdG9yZS5yb3V0ZWAgdG8gY3JlYXRlIGEgcGxhdXNpYmxlIHBhdGhuYW1lLlxuICogVE9ETyhpbnN0YW50LXZhbGlkYXRpb24tYnVpbGQpOiB0aGlzIGxvZ2ljIGlzIHNvbWV3aGF0IGhhY2t5IGFuZCBsaWtlbHkgaW5jb21wbGV0ZSxcbiAqIGJ1dCBpdCBzaG91bGQgYmUgZ29vZCBlbm91Z2ggZm9yIHNvbWUgaW5pdGlhbCB0ZXN0aW5nLlxuICovIGZ1bmN0aW9uIGNyZWF0ZVBhdGhuYW1lRnJvbVJvdXRlQW5kU2FtcGxlUGFyYW1zKHJvdXRlLCBwYXJhbXMpIHtcbiAgICBsZXQgaW50ZXJwb2xhdGVkU2VnbWVudHMgPSBbXTtcbiAgICBjb25zdCByYXdTZWdtZW50cyA9IHJvdXRlLnNwbGl0KCcvJyk7XG4gICAgZm9yIChjb25zdCByYXdTZWdtZW50IG9mIHJhd1NlZ21lbnRzKXtcbiAgICAgICAgY29uc3QgcGFyYW0gPSAoMCwgX2dldHNlZ21lbnRwYXJhbS5nZXRTZWdtZW50UGFyYW0pKHJhd1NlZ21lbnQpO1xuICAgICAgICBpZiAocGFyYW0pIHtcbiAgICAgICAgICAgIHN3aXRjaChwYXJhbS5wYXJhbVR5cGUpe1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NhdGNoYWxsJzpcbiAgICAgICAgICAgICAgICBjYXNlICdvcHRpb25hbC1jYXRjaGFsbCc6XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXJhbVZhbHVlID0gcGFyYW1zW3BhcmFtLnBhcmFtTmFtZV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1WYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHZhbHVlIGZvciB0aGUgcGFyYW0gd2FzIG5vdCBwcm92aWRlZC4gYHVzZVBhdGhuYW1lYCB3aWxsIGRldGVjdCB0aGlzIGFuZCB0aHJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlZm9yZSB0aGlzIGNhbiBzdXJmYWNlIHRvIHVzZXJzcGFjZS4gVXNlIGBbLi4uTkFNRV1gIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHRoZSBwYXJhbSB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIGNhc2UgaXQgcG9wcyB1cCBzb21ld2hlcmUgdW5leHBlY3RlZGx5LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtVmFsdWUgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhd1NlZ21lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShwYXJhbVZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHRoaXMgaGFwcGVucyBvdXRzaWRlIG9mIHJlbmRlciwgc28gd2UgZG9uJ3QgbmVlZCBgdHJhY2tNaXNzaW5nU2FtcGxlRXJyb3JBbmRUaHJvd2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnN0YW50dmFsaWRhdGlvbmVycm9yLkluc3RhbnRWYWxpZGF0aW9uRXJyb3IoYEV4cGVjdGVkIHNhbXBsZSBwYXJhbSB2YWx1ZSBmb3Igc2VnbWVudCAnJHtyYXdTZWdtZW50fScgdG8gYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncywgZ290ICR7dHlwZW9mIHBhcmFtVmFsdWV9YCksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMTEwNFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnBvbGF0ZWRTZWdtZW50cy5wdXNoKC4uLnBhcmFtVmFsdWUubWFwKCh2KT0+ZW5jb2RlVVJJQ29tcG9uZW50KHYpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJ2R5bmFtaWMnOlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGFyYW1WYWx1ZSA9IHBhcmFtc1twYXJhbS5wYXJhbU5hbWVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSB2YWx1ZSBmb3IgdGhlIHBhcmFtIHdhcyBub3QgcHJvdmlkZWQuIGB1c2VQYXRobmFtZWAgd2lsbCBkZXRlY3QgdGhpcyBhbmQgdGhyb3dcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZWZvcmUgdGhpcyBjYW4gc3VyZmFjZSB0byB1c2Vyc3BhY2UuIFVzZSBgW05BTUVdYCBhcyBhIHBsYWNlaG9sZGVyIGZvciB0aGUgcGFyYW0gdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbiBjYXNlIGl0IHBvcHMgdXAgc29tZXdoZXJlIHVuZXhwZWN0ZWRseS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbVZhbHVlID0gcmF3U2VnbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHBhcmFtVmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogdGhpcyBoYXBwZW5zIG91dHNpZGUgb2YgcmVuZGVyLCBzbyB3ZSBkb24ndCBuZWVkIGB0cmFja01pc3NpbmdTYW1wbGVFcnJvckFuZFRocm93YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2luc3RhbnR2YWxpZGF0aW9uZXJyb3IuSW5zdGFudFZhbGlkYXRpb25FcnJvcihgRXhwZWN0ZWQgc2FtcGxlIHBhcmFtIHZhbHVlIGZvciBzZWdtZW50ICcke3Jhd1NlZ21lbnR9JyB0byBiZSBhIHN0cmluZywgZ290ICR7dHlwZW9mIHBhcmFtVmFsdWV9YCksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMTEwOFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnBvbGF0ZWRTZWdtZW50cy5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChwYXJhbVZhbHVlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJ2NhdGNoYWxsLWludGVyY2VwdGVkLSguLikoLi4pJzpcbiAgICAgICAgICAgICAgICBjYXNlICdjYXRjaGFsbC1pbnRlcmNlcHRlZC0oLiknOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2NhdGNoYWxsLWludGVyY2VwdGVkLSguLiknOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2NhdGNoYWxsLWludGVyY2VwdGVkLSguLi4pJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkeW5hbWljLWludGVyY2VwdGVkLSguLikoLi4pJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkeW5hbWljLWludGVyY2VwdGVkLSguKSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZHluYW1pYy1pbnRlcmNlcHRlZC0oLi4pJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkeW5hbWljLWludGVyY2VwdGVkLSguLi4pJzpcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETyhpbnN0YW50LXZhbGlkYXRpb24tYnVpbGQpOiBpIGRvbid0IGtub3cgaG93IHRoZXNlIGFyZSBzdXBwb3NlZCB0byB3b3JrLCBvciBpZiB3ZSBjYW4gZXZlbiBnZXQgdGhlbSBoZXJlXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignTm90IGltcGxlbWVudGVkOiBWYWxpZGF0aW9uIG9mIGludGVyY2VwdGlvbiByb3V0ZXMnKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTExMDZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0ucGFyYW1UeXBlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbnRlcnBvbGF0ZWRTZWdtZW50cy5wdXNoKHJhd1NlZ21lbnQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpbnRlcnBvbGF0ZWRTZWdtZW50cy5qb2luKCcvJyk7XG59XG5mdW5jdGlvbiBhc3NlcnRSb290UGFyYW1JblNhbXBsZXMod29ya1N0b3JlLCBzYW1wbGVQYXJhbXMsIHBhcmFtTmFtZSkge1xuICAgIGlmIChzYW1wbGVQYXJhbXMgJiYgcGFyYW1OYW1lIGluIHNhbXBsZVBhcmFtcykge1xuICAgIC8vIFRoZSBwYXJhbSBpcyBkZWZpbmVkIGluIHRoZSBzYW1wbGVzLlxuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJvdXRlID0gd29ya1N0b3JlLnJvdXRlO1xuICAgICAgICB0cmFja01pc3NpbmdTYW1wbGVFcnJvckFuZFRocm93KE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2luc3RhbnR2YWxpZGF0aW9uZXJyb3IuSW5zdGFudFZhbGlkYXRpb25FcnJvcihgUm91dGUgXCIke3JvdXRlfVwiIGFjY2Vzc2VkIHJvb3QgcGFyYW0gXCIke3BhcmFtTmFtZX1cIiB3aGljaCBpcyBub3QgZGVmaW5lZCBpbiB0aGUgXFxgc2FtcGxlc1xcYCBgICsgYG9mIFxcYHVuc3RhYmxlX2luc3RhbnRcXGAuIEFkZCBpdCB0byB0aGUgc2FtcGxlJ3MgXFxgcGFyYW1zXFxgIG9iamVjdC5gKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICB2YWx1ZTogXCJFMTExNFwiLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgfSkpO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5zdGFudC1zYW1wbGVzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/instant-validation/instant-samples.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/app-render/instant-validation/instant-validation-error.js":
|
||
/*!*************************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/app-render/instant-validation/instant-validation-error.js ***!
|
||
\*************************************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n InstantValidationError: function() {\n return InstantValidationError;\n },\n isInstantValidationError: function() {\n return isInstantValidationError;\n }\n});\nconst INSTANT_VALIDATION_ERROR_DIGEST = 'INSTANT_VALIDATION_ERROR';\nfunction isInstantValidationError(err) {\n return !!(err && typeof err === 'object' && err instanceof Error && err.digest === INSTANT_VALIDATION_ERROR_DIGEST);\n}\nclass InstantValidationError extends Error {\n constructor(...args){\n super(...args), this.digest = INSTANT_VALIDATION_ERROR_DIGEST;\n }\n}\n\n//# sourceMappingURL=instant-validation-error.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2luc3RhbnQtdmFsaWRhdGlvbi9pbnN0YW50LXZhbGlkYXRpb24tZXJyb3IuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBR0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvYXBwLXJlbmRlci9pbnN0YW50LXZhbGlkYXRpb24vaW5zdGFudC12YWxpZGF0aW9uLWVycm9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgSW5zdGFudFZhbGlkYXRpb25FcnJvcjogbnVsbCxcbiAgICBpc0luc3RhbnRWYWxpZGF0aW9uRXJyb3I6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgSW5zdGFudFZhbGlkYXRpb25FcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBJbnN0YW50VmFsaWRhdGlvbkVycm9yO1xuICAgIH0sXG4gICAgaXNJbnN0YW50VmFsaWRhdGlvbkVycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGlzSW5zdGFudFZhbGlkYXRpb25FcnJvcjtcbiAgICB9XG59KTtcbmNvbnN0IElOU1RBTlRfVkFMSURBVElPTl9FUlJPUl9ESUdFU1QgPSAnSU5TVEFOVF9WQUxJREFUSU9OX0VSUk9SJztcbmZ1bmN0aW9uIGlzSW5zdGFudFZhbGlkYXRpb25FcnJvcihlcnIpIHtcbiAgICByZXR1cm4gISEoZXJyICYmIHR5cGVvZiBlcnIgPT09ICdvYmplY3QnICYmIGVyciBpbnN0YW5jZW9mIEVycm9yICYmIGVyci5kaWdlc3QgPT09IElOU1RBTlRfVkFMSURBVElPTl9FUlJPUl9ESUdFU1QpO1xufVxuY2xhc3MgSW5zdGFudFZhbGlkYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvciguLi5hcmdzKXtcbiAgICAgICAgc3VwZXIoLi4uYXJncyksIHRoaXMuZGlnZXN0ID0gSU5TVEFOVF9WQUxJREFUSU9OX0VSUk9SX0RJR0VTVDtcbiAgICB9XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluc3RhbnQtdmFsaWRhdGlvbi1lcnJvci5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/instant-validation/instant-validation-error.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/app-render/interop-default.js":
|
||
/*!*********************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/app-render/interop-default.js ***!
|
||
\*********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * Interop between \"export default\" and \"module.exports\".\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"interopDefault\", ({\n enumerable: true,\n get: function() {\n return interopDefault;\n }\n}));\nfunction interopDefault(mod) {\n return mod.default || mod;\n}\n\n//# sourceMappingURL=interop-default.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2ludGVyb3AtZGVmYXVsdC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0EsSUFBaUI7QUFDakIsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0Ysa0RBQWlEO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0Y7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvYXBwLXJlbmRlci9pbnRlcm9wLWRlZmF1bHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBJbnRlcm9wIGJldHdlZW4gXCJleHBvcnQgZGVmYXVsdFwiIGFuZCBcIm1vZHVsZS5leHBvcnRzXCIuXG4gKi8gXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJpbnRlcm9wRGVmYXVsdFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaW50ZXJvcERlZmF1bHQ7XG4gICAgfVxufSk7XG5mdW5jdGlvbiBpbnRlcm9wRGVmYXVsdChtb2QpIHtcbiAgICByZXR1cm4gbW9kLmRlZmF1bHQgfHwgbW9kO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbnRlcm9wLWRlZmF1bHQuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/interop-default.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/app-render/manifests-singleton.js":
|
||
/*!*************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/app-render/manifests-singleton.js ***!
|
||
\*************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getClientReferenceManifest: function() {\n return getClientReferenceManifest;\n },\n getServerActionsManifest: function() {\n return getServerActionsManifest;\n },\n getServerModuleMap: function() {\n return getServerModuleMap;\n },\n selectWorkerForForwarding: function() {\n return selectWorkerForForwarding;\n },\n setManifestsSingleton: function() {\n return setManifestsSingleton;\n }\n});\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(rsc)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nconst _apppaths = __webpack_require__(/*! ../../shared/lib/router/utils/app-paths */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/app-paths.js\");\nconst _pathhasprefix = __webpack_require__(/*! ../../shared/lib/router/utils/path-has-prefix */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js\");\nconst _removepathprefix = __webpack_require__(/*! ../../shared/lib/router/utils/remove-path-prefix */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/remove-path-prefix.js\");\nconst _workasyncstorageexternal = __webpack_require__(/*! ./work-async-storage.external */ \"../app-render/work-async-storage.external\");\n// This is a global singleton that is, among other things, also used to\n// encode/decode bound args of server function closures. This can't be using a\n// AsyncLocalStorage as it might happen at the module level.\nconst MANIFESTS_SINGLETON = Symbol.for('next.server.manifests');\nconst globalThisWithManifests = globalThis;\nfunction createProxiedClientReferenceManifest(clientReferenceManifestsPerRoute) {\n const createMappingProxy = (prop)=>{\n return new Proxy({}, {\n get (_, id) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (workStore) {\n const currentManifest = clientReferenceManifestsPerRoute.get(workStore.route);\n if (currentManifest == null ? void 0 : currentManifest[prop][id]) {\n return currentManifest[prop][id];\n }\n // In development, we also check all other manifests to see if the\n // module exists there. This is to support a scenario where React's\n // I/O tracking (dev-only) creates a connection from one page to\n // another through an emitted async I/O node that references client\n // components from the other page, e.g. in owner props.\n // TODO: Maybe we need to add a `debugBundlerConfig` option to React\n // to avoid this workaround. The current workaround has the\n // disadvantage that one might accidentally or intentionally share\n // client references across pages (e.g. by storing them in a global\n // variable), which would then only be caught in production.\n if (true) {\n for (const [route, manifest] of clientReferenceManifestsPerRoute){\n if (route === workStore.route) {\n continue;\n }\n const entry = manifest[prop][id];\n if (entry !== undefined) {\n return entry;\n }\n }\n }\n } else {\n // If there's no work store defined, we can assume that a client\n // reference manifest is needed during module evaluation, e.g. to\n // create a server function using a higher-order function. This\n // might also use client components which need to be serialized by\n // Flight, and therefore client references need to be resolvable. In\n // that case we search all page manifests to find the module.\n for (const manifest of clientReferenceManifestsPerRoute.values()){\n const entry = manifest[prop][id];\n if (entry !== undefined) {\n return entry;\n }\n }\n }\n return undefined;\n }\n });\n };\n const mappingProxies = new Map();\n return new Proxy({}, {\n get (_, prop) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n switch(prop){\n case 'moduleLoading':\n case 'entryCSSFiles':\n case 'entryJSFiles':\n {\n if (!workStore) {\n throw Object.defineProperty(new _invarianterror.InvariantError(`Cannot access \"${prop}\" without a work store.`), \"__NEXT_ERROR_CODE\", {\n value: \"E952\",\n enumerable: false,\n configurable: true\n });\n }\n const currentManifest = clientReferenceManifestsPerRoute.get(workStore.route);\n if (!currentManifest) {\n throw Object.defineProperty(new _invarianterror.InvariantError(`The client reference manifest for route \"${workStore.route}\" does not exist.`), \"__NEXT_ERROR_CODE\", {\n value: \"E951\",\n enumerable: false,\n configurable: true\n });\n }\n return currentManifest[prop];\n }\n case 'clientModules':\n case 'rscModuleMapping':\n case 'edgeRscModuleMapping':\n case 'ssrModuleMapping':\n case 'edgeSSRModuleMapping':\n {\n let proxy = mappingProxies.get(prop);\n if (!proxy) {\n proxy = createMappingProxy(prop);\n mappingProxies.set(prop, proxy);\n }\n return proxy;\n }\n default:\n {\n throw Object.defineProperty(new _invarianterror.InvariantError(`This is a proxied client reference manifest. The property \"${String(prop)}\" is not handled.`), \"__NEXT_ERROR_CODE\", {\n value: \"E953\",\n enumerable: false,\n configurable: true\n });\n }\n }\n }\n });\n}\n/**\n * This function creates a Flight-acceptable server module map proxy from our\n * Server Reference Manifest similar to our client module map. This is because\n * our manifest contains a lot of internal Next.js data that are relevant to the\n * runtime, workers, etc. that React doesn't need to know.\n */ function createServerModuleMap() {\n return new Proxy({}, {\n get: (_, id)=>{\n var _getServerActionsManifest__id, _getServerActionsManifest_;\n const workers = (_getServerActionsManifest_ = getServerActionsManifest()[ false ? 0 : 'node']) == null ? void 0 : (_getServerActionsManifest__id = _getServerActionsManifest_[id]) == null ? void 0 : _getServerActionsManifest__id.workers;\n if (!workers) {\n return undefined;\n }\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n let workerEntry;\n if (workStore) {\n workerEntry = workers[normalizeWorkerPageName(workStore.page)];\n } else {\n // If there's no work store defined, we can assume that a server\n // module map is needed during module evaluation, e.g. to create a\n // server action using a higher-order function. Therefore it should be\n // safe to return any entry from the manifest that matches the action\n // ID. They all refer to the same module ID, which must also exist in\n // the current page bundle. TODO: This is currently not guaranteed in\n // Turbopack, and needs to be fixed.\n workerEntry = Object.values(workers).at(0);\n }\n if (!workerEntry) {\n return undefined;\n }\n const { moduleId, async } = workerEntry;\n return {\n id: moduleId,\n name: id,\n chunks: [],\n async\n };\n }\n });\n}\n/**\n * The flight entry loader keys actions by bundlePath. bundlePath corresponds\n * with the relative path (including 'app') to the page entrypoint.\n */ function normalizeWorkerPageName(pageName) {\n if ((0, _pathhasprefix.pathHasPrefix)(pageName, 'app')) {\n return pageName;\n }\n return 'app' + pageName;\n}\n/**\n * Converts a bundlePath (relative path to the entrypoint) to a routable page\n * name.\n */ function denormalizeWorkerPageName(bundlePath) {\n return (0, _apppaths.normalizeAppPath)((0, _removepathprefix.removePathPrefix)(bundlePath, 'app'));\n}\nfunction selectWorkerForForwarding(actionId, pageName) {\n var _serverActionsManifest__actionId;\n const serverActionsManifest = getServerActionsManifest();\n const workers = (_serverActionsManifest__actionId = serverActionsManifest[ false ? 0 : 'node'][actionId]) == null ? void 0 : _serverActionsManifest__actionId.workers;\n // There are no workers to handle this action, nothing to forward to.\n if (!workers) {\n return;\n }\n // If there is an entry for the current page, we don't need to forward.\n if (workers[normalizeWorkerPageName(pageName)]) {\n return;\n }\n // Otherwise, grab the first worker that has a handler for this action id.\n return denormalizeWorkerPageName(Object.keys(workers)[0]);\n}\nfunction setManifestsSingleton({ page, clientReferenceManifest, serverActionsManifest: rawServerActionsManifest }) {\n const existingSingleton = globalThisWithManifests[MANIFESTS_SINGLETON];\n const serverActionsManifest = {\n encryptionKey: rawServerActionsManifest.encryptionKey,\n // Use null-prototypes for the action objects to prevent prototype pollution\n // from affecting action ID lookups.\n node: Object.assign(Object.create(null), rawServerActionsManifest.node),\n edge: Object.assign(Object.create(null), rawServerActionsManifest.edge)\n };\n if (existingSingleton) {\n existingSingleton.clientReferenceManifestsPerRoute.set((0, _apppaths.normalizeAppPath)(page), clientReferenceManifest);\n existingSingleton.serverActionsManifest = serverActionsManifest;\n } else {\n const clientReferenceManifestsPerRoute = new Map([\n [\n (0, _apppaths.normalizeAppPath)(page),\n clientReferenceManifest\n ]\n ]);\n const proxiedClientReferenceManifest = createProxiedClientReferenceManifest(clientReferenceManifestsPerRoute);\n globalThisWithManifests[MANIFESTS_SINGLETON] = {\n clientReferenceManifestsPerRoute,\n proxiedClientReferenceManifest,\n serverActionsManifest,\n serverModuleMap: createServerModuleMap()\n };\n }\n}\nfunction getManifestsSingleton() {\n const manifestSingleton = globalThisWithManifests[MANIFESTS_SINGLETON];\n if (!manifestSingleton) {\n throw Object.defineProperty(new _invarianterror.InvariantError('The manifests singleton was not initialized.'), \"__NEXT_ERROR_CODE\", {\n value: \"E950\",\n enumerable: false,\n configurable: true\n });\n }\n return manifestSingleton;\n}\nfunction getClientReferenceManifest() {\n return getManifestsSingleton().proxiedClientReferenceManifest;\n}\nfunction getServerActionsManifest() {\n return getManifestsSingleton().serverActionsManifest;\n}\nfunction getServerModuleMap() {\n return getManifestsSingleton().serverModuleMap;\n} //# sourceMappingURL=manifests-singleton.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL21hbmlmZXN0cy1zaW5nbGV0b24uanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBd1VnQkEsMEJBQTBCO2VBQTFCQTs7SUFJQUMsd0JBQXdCO2VBQXhCQTs7SUFJQUMsa0JBQWtCO2VBQWxCQTs7SUF2RkFDLHlCQUF5QjtlQUF6QkE7O0lBd0JBQyxxQkFBcUI7ZUFBckJBOzs7NENBOVFlO3NDQUNFOzJDQUNIOzhDQUNHO3NEQUNBO0FBV2pDLHVFQUF1RTtBQUN2RSw4RUFBOEU7QUFDOUUsNERBQTREO0FBQzVELE1BQU1DLHNCQUFzQkMsT0FBT0MsR0FBRyxDQUFDO0FBdUJ2QyxNQUFNQywwQkFBMEJDO0FBRWhDLFNBQVNDLHFDQUNQQyxnQ0FHQztJQUVELE1BQU1DLHFCQUFxQixDQUFDQztRQUMxQixPQUFPLElBQUlDLE1BQ1QsQ0FBQyxHQUNEO1lBQ0VDLEtBQUlDLENBQUMsRUFBRUMsRUFBVTtnQkFDZixNQUFNQyxZQUFZQywwQkFBQUEsZ0JBQWdCLENBQUNDLFFBQVE7Z0JBRTNDLElBQUlGLFdBQVc7b0JBQ2IsTUFBTUcsa0JBQWtCVixpQ0FBaUNJLEdBQUcsQ0FDMURHLFVBQVVJLEtBQUs7b0JBR2pCLElBQUlELG1CQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxlQUFpQixDQUFDUixLQUFLLENBQUNJLEdBQUcsRUFBRTt3QkFDL0IsT0FBT0ksZUFBZSxDQUFDUixLQUFLLENBQUNJLEdBQUc7b0JBQ2xDO29CQUVBLGtFQUFrRTtvQkFDbEUsbUVBQW1FO29CQUNuRSxnRUFBZ0U7b0JBQ2hFLG1FQUFtRTtvQkFDbkUsdURBQXVEO29CQUN2RCxvRUFBb0U7b0JBQ3BFLDJEQUEyRDtvQkFDM0Qsa0VBQWtFO29CQUNsRSxtRUFBbUU7b0JBQ25FLDREQUE0RDtvQkFDNUQsSUFBSU0sSUFBb0IsRUFBbUI7d0JBQ3pDLEtBQUssTUFBTSxDQUNURCxPQUNBSSxTQUNELElBQUlmLGlD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O0FBQ3REO0FBRU8sU0FBU3JEO0lBQ2QsT0FBT2lFLHdCQUF3QkQsZUFBZTtBQUNoRCIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9zZXJ2ZXIvYXBwLXJlbmRlci9tYW5pZmVzdHMtc2luZ2xldG9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQWN0aW9uTWFuaWZlc3QgfSBmcm9tICcuLi8uLi9idWlsZC93ZWJwYWNrL3BsdWdpbnMvZmxpZ2h0LWNsaWVudC1lbnRyeS1wbHVnaW4nXG5pbXBvcnQgdHlwZSB7IENsaWVudFJlZmVyZW5jZU1hbmlmZXN0IH0gZnJvbSAnLi4vLi4vYnVpbGQvd2VicGFjay9wbHVnaW5zL2ZsaWdodC1tYW5pZmVzdC1wbHVnaW4nXG5pbXBvcnQgdHlwZSB7IERlZXBSZWFkb25seSB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvZGVlcC1yZWFkb25seSdcbmltcG9ydCB7IEludmFyaWFudEVycm9yIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9pbnZhcmlhbnQtZXJyb3InXG5pbXBvcnQgeyBub3JtYWxpemVBcHBQYXRoIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvYXBwLXBhdGhzJ1xuaW1wb3J0IHsgcGF0aEhhc1ByZWZpeCB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhdGgtaGFzLXByZWZpeCdcbmltcG9ydCB7IHJlbW92ZVBhdGhQcmVmaXggfSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9yZW1vdmUtcGF0aC1wcmVmaXgnXG5pbXBvcnQgeyB3b3JrQXN5bmNTdG9yYWdlIH0gZnJvbSAnLi93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVyTW9kdWxlTWFwIHtcbiAgcmVhZG9ubHkgW25hbWU6IHN0cmluZ106IHtcbiAgICByZWFkb25seSBpZDogc3RyaW5nIHwgbnVtYmVyXG4gICAgcmVhZG9ubHkgbmFtZTogc3RyaW5nXG4gICAgcmVhZG9ubHkgY2h1bmtzOiBSZWFkb25seTxBcnJheTxzdHJpbmc+PiAvLyBjdXJyZW50bHkgbm90IHVzZWRcbiAgICByZWFkb25seSBhc3luYz86IGJvb2xlYW5cbiAgfVxufVxuXG4vLyBUaGlzIGlzIGEgZ2xvYmFsIHNpbmdsZXRvbiB0aGF0IGlzLCBhbW9uZyBvdGhlciB0aGluZ3MsIGFsc28gdXNlZCB0b1xuLy8gZW5jb2RlL2RlY29kZSBib3VuZCBhcmdzIG9mIHNlcnZlciBmdW5jdGlvbiBjbG9zdXJlcy4gVGhpcyBjYW4ndCBiZSB1c2luZyBhXG4vLyBBc3luY0xvY2FsU3RvcmFnZSBhcyBpdCBtaWdodCBoYXBwZW4gYXQgdGhlIG1vZHVsZSBsZXZlbC5cbmNvbnN0IE1BTklGRVNUU19TSU5HTEVUT04gPSBTeW1ib2wuZm9yKCduZXh0LnNlcnZlci5tYW5pZmVzdHMnKVxuXG5pbnRlcmZhY2UgTWFuaWZlc3RzU2luZ2xldG9uIHtcbiAgcmVhZG9ubHkgY2xpZW50UmVmZXJlbmNlTWFuaWZlc3RzUGVyUm91dGU6IE1hcDxcbiAgICBzdHJpbmcsXG4gICAgRGVlcFJlYWRvbmx5PENsaWVudFJlZmVyZW5jZU1hbmlmZXN0PlxuICA+XG4gIHJlYWRvbmx5IHByb3hpZWRDbGllbnRSZWZlcmVuY2VNYW5pZmVzdDogRGVlcFJlYWRvbmx5PENsaWVudFJlZmVyZW5jZU1hbmlmZXN0PlxuICBzZXJ2ZXJBY3Rpb25zTWFuaWZlc3Q6IERlZXBSZWFkb25seTxBY3Rpb25NYW5pZmVzdD5cbiAgc2VydmVyTW9kdWxlTWFwOiBTZXJ2ZXJNb2R1bGVNYXBcbn1cblxudHlwZSBHbG9iYWxUaGlzV2l0aE1hbmlmZXN0cyA9IHR5cGVvZiBnbG9iYWxUaGlzICYge1xuICBbTUFOSUZFU1RTX1NJTkdMRVRPTl0/OiBNYW5pZmVzdHNTaW5nbGV0b25cbn1cblxudHlwZSBDbGllbnRSZWZlcmVuY2VNYW5pZmVzdE1hcHBpbmdQcm9wID1cbiAgfCAnY2xpZW50TW9kdWxlcydcbiAgfCAncnNjTW9kdWxlTWFwcGluZydcbiAgfCAnZWRnZVJzY01vZHVsZU1hcHBpbmcnXG4gIHwgJ3Nzck1vZHVsZU1hcHBpbmcnXG4gIHwgJ2VkZ2VTU1JNb2R1bGVNYXBwaW5nJ1xuXG5jb25zdCBnbG9iYWxUaGlzV2l0aE1hbmlmZXN0cyA9IGdsb2JhbFRoaXMgYXMgR2xvYmFsVGhpc1dpdGhNYW5pZmVzdHNcblxuZnVuY3Rpb24gY3JlYXRlUHJveGllZENsaWVudFJlZmVyZW5jZU1hbmlmZXN0KFxuICBjbGllbnRSZWZlcmVuY2VNYW5pZmVzdHNQZXJSb3V0ZTogTWFwPFxuICAgIHN0cmluZyxcbiAgICBEZWVwUmVhZG9ubHk8Q2xpZW50UmVmZXJlbmNlTWFuaWZlc3Q+XG4gID5cbik6IERlZXBSZWFkb25seTxDbGllbnRSZWZlcmVuY2VNYW5pZmVzdD4ge1xuICBjb25zdCBjcmVhdGVNYXBwaW5nUHJveHkgPSAocHJvcDogQ2xpZW50UmVmZXJlbmNlTWFuaWZlc3RNYXBwaW5nUHJvcCkgPT4ge1xuICAgIHJldHVybiBuZXcgUHJveHkoXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZ2V0KF8sIGlkOiBzdHJpbmcpIHtcbiAgICAgICAgICBjb25zdCB3b3JrU3RvcmUgPSB3b3JrQXN5bmNTdG9yYWdlLmdldFN0b3JlKClcblxuICAgICAgICAgIGlmICh3b3JrU3RvcmUpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRNYW5pZmVzdCA9IGNsaWVudFJlZmVyZW5jZU1hbmlmZXN0c1BlclJvdXRlLmdldChcbiAgICAgICAgICAgICAgd29ya1N0b3JlLnJvdXRlXG4gICAgICAgICAgICApXG5cbiAgICAgICAgICAgIGlmIChjdXJyZW50TWFuaWZlc3Q/Lltwcm9wXVtpZF0pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRNYW5pZmVzdFtwcm9wXVtpZF1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gSW4gZGV2ZWxvcG1lbnQsIHdlIGFsc28gY2hlY2sgYWxsIG90aGVyIG1hbmlmZXN0cyB0byBzZWUgaWYgdGhlXG4gICAgICAgICAgICAvLyBtb2R1bGUgZXhpc3RzIHRoZXJlLiBUaGlzIGlzIHRvIHN1cHBvcnQgYSBzY2VuYXJpbyB3aGVyZSBSZWFjdCdzXG4gICAgICAgICAgICAvLyBJL08gdHJhY2tpbmcgKGRldi1vbmx5KSBjcmVhdGVzIGEgY29ubmVjdGlvbiBmcm9tIG9uZSBwYWdlIHRvXG4gICAgICAgICAgICAvLyBhbm90aGVyIHRocm91Z2ggYW4gZW1pdHRlZCBhc3luYyBJL08gbm9kZSB0aGF0IHJlZmVyZW5jZXMgY2xpZW50XG4gICAgICAgICAgICAvLyBjb21wb25lbnRzIGZyb20gdGhlIG90aGVyIHBhZ2UsIGUuZy4gaW4gb3duZXIgcHJvcHMuXG4gICAgICAgICAgICAvLyBUT0RPOiBNYXliZSB3ZSBuZWVkIHRvIGFkZCBhIGBkZWJ1Z0J1bmRsZXJDb25maWdgIG9wdGlvbiB0byBSZWFjdFxuICAgICAgICAgICAgLy8gdG8gYXZvaWQgdGhpcyB3b3JrYXJvdW5kLiBUaGUgY3VycmVudCB3b3JrYXJvdW5kIGhhcyB0aGVcbiAgICAgICAgICAgIC8vIGRpc2FkdmFudGFnZSB0aGF0IG9uZSBtaWdodCBhY2NpZGVudGFsbHkgb3IgaW50ZW50aW9uYWxseSBzaGFyZVxuICAgICAgICAgICAgLy8gY2xpZW50IHJlZmVyZW5jZXMgYWNyb3NzIHBhZ2VzIChlLmcuIGJ5IHN0b3JpbmcgdGhlbSBpbiBhIGdsb2JhbFxuICAgICAgICAgICAgLy8gdmFyaWFibGUpLCB3aGljaCB3b3VsZCB0aGVuIG9ubHkgYmUgY2F1Z2h0IGluIHByb2R1Y3Rpb24uXG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtcbiAgICAgICAgICAgICAgICByb3V0ZSxcbiAgICAgICAgICAgICAgICBtYW5pZmVzdCxcbiAgICAgICAgICAgICAgXSBvZiBjbGllbnRSZWZlcmVuY2VNYW5pZmVzdHNQZXJSb3V0ZSkge1xuICAgICAgICAgICAgICAgIGlmIChyb3V0ZSA9PT0gd29ya1N0b3JlLnJvdXRlKSB7XG4gICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gbWFuaWZlc3RbcHJvcF1baWRdXG5cbiAgICAgICAgICAgICAgICBpZiAoZW50cnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIElmIHRoZXJlJ3Mgbm8gd29yayBzdG9yZSBkZWZpbmVkLCB3ZSBjYW4gYXNzdW1lIHRoYXQgYSBjbGllbnRcbiAgICAgICAgICAgIC8vIHJlZmVyZW5jZSBtYW5pZmVzdCBpcyBuZWVkZWQgZHVyaW5nIG1vZHVsZSBldmFsdWF0aW9uLCBlLmcuIHRvXG4gICAgICAgICAgICAvLyBjcmVhdGUgYSBzZXJ2ZXIgZnVuY3Rpb24gdXNpbmcgYSBoaWdoZXItb3JkZXIgZnVuY3Rpb24uIFRoaXNcbiAgICAgICAgICAgIC8vIG1pZ2h0IGFsc28gdXNlIGNsaWVudCBjb21wb25lbnRzIHdoaWNoIG5lZWQgdG8gYmUgc2VyaWFsaXplZCBieVxuICAgICAgICAgICAgLy8gRmxpZ2h0LCBhbmQgdGhlcmVmb3JlIGNsaWVudCByZWZlcmVuY2VzIG5lZWQgdG8gYmUgcmVzb2x2YWJsZS4gSW5cbiAgICAgICAgICAgIC8vIHRoYXQgY2FzZSB3ZSBzZWFyY2ggYWxsIHBhZ2UgbWFuaWZlc3RzIHRvIGZpbmQgdGhlIG1vZHVsZS5cbiAgICAgICAgICAgIGZvciAoY29uc3QgbWFuaWZlc3Qgb2YgY2xpZW50UmVmZXJlbmNlTWFuaWZlc3RzUGVyUm91dGUudmFsdWVzKCkpIHtcbiAgICAgICAgICAgICAgY29uc3QgZW50cnkgPSBtYW5pZmVzdFtwcm9wXVtpZF1cblxuICAgICAgICAgICAgICBpZiAoZW50cnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIClcbiAgfVxuXG4gIGNvbnN0IG1hcHBpbmdQcm94aWVzID0gbmV3IE1hcDxcbiAgICBDbGllbnRSZWZlcmVuY2VNYW5pZmVzdE1hcHBpbmdQcm9wLFxuICAgIFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZU1hcHBpbmdQcm94eT5cbiAgPigpXG5cbiAgcmV0dXJuIG5ldyBQcm94eShcbiAgICB7fSxcbiAgICB7XG4gICAgICBnZXQoXywgcHJvcCkge1xuICAgICAgICBjb25zdCB3b3JrU3RvcmUgPSB3b3JrQXN5bmNTdG9yYWdlLmdldFN0b3JlKClcblxuICAgICAgICBzd2l0Y2ggKHByb3ApIHtcbiAgICAgICAgICBjYXNlICdtb2R1bGVMb2FkaW5nJzpcbiAgICAgICAgICBjYXNlICdlbnRyeUNTU0ZpbGVzJzpcbiAgICAgICAgICBjYXNlICdlbnRyeUpTRmlsZXMnOiB7XG4gICAgICAgICAgICBpZiAoIXdvcmtTdG9yZSkge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YXJpYW50RXJyb3IoXG4gICAgICAgICAgICAgICAgYENhbm5vdCBhY2Nlc3MgXCIke3Byb3B9XCIgd2l0aG91dCBhIHdvcmsgc3RvcmUuYFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRNYW5pZmVzdCA9IGNsaWVudFJlZmVyZW5jZU1hbmlmZXN0c1BlclJvdXRlLmdldChcbiAgICAgICAgICAgICAgd29ya1N0b3JlLnJvdXRlXG4gICAgICAgICAgICApXG5cbiAgICAgICAgICAgIGlmICghY3VycmVudE1hbmlmZXN0KSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhcmlhbnRFcnJvcihcbiAgICAgICAgICAgICAgICBgVGhlIGNsaWVudCByZWZlcmVuY2UgbWFuaWZlc3QgZm9yIHJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCIgZG9lcyBub3QgZXhpc3QuYFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50TWFuaWZlc3RbcHJvcF1cbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAnY2xpZW50TW9kdWxlcyc6XG4gICAgICAgICAgY2FzZSAncnNjTW9kdWxlTWFwcGluZyc6XG4gICAgICAgICAgY2FzZSAnZWRnZVJzY01vZHVsZU1hcHBpbmcnOlxuICAgICAgICAgIGNhc2UgJ3Nzck1vZHVsZU1hcHBpbmcnOlxuICAgICAgICAgIGNhc2UgJ2VkZ2VTU1JNb2R1bGVNYXBwaW5nJzoge1xuICAgICAgICAgICAgbGV0IHByb3h5ID0gbWFwcGluZ1Byb3hpZXMuZ2V0KHByb3ApXG5cbiAgICAgICAgICAgIGlmICghcHJveHkpIHtcbiAgICAgICAgICAgICAgcHJveHkgPSBjcmVhdGVNYXBwaW5nUHJveHkocHJvcClcbiAgICAgICAgICAgICAgbWFwcGluZ1Byb3hpZXMuc2V0KHByb3AsIHByb3h5KVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcHJveHlcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEludmFyaWFudEVycm9yKFxuICAgICAgICAgICAgICBgVGhpcyBpcyBhIHByb3hpZWQgY2xpZW50IHJlZmVyZW5jZSBtYW5pZmVzdC4gVGhlIHByb3BlcnR5IFwiJHtTdHJpbmcocHJvcCl9XCIgaXMgbm90IGhhbmRsZWQuYFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9XG4gICkgYXMgRGVlcFJlYWRvbmx5PENsaWVudFJlZmVyZW5jZU1hbmlmZXN0PlxufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIEZsaWdodC1hY2NlcHRhYmxlIHNlcnZlciBtb2R1bGUgbWFwIHByb3h5IGZyb20gb3VyXG4gKiBTZXJ2ZXIgUmVmZXJlbmNlIE1hbmlmZXN0IHNpbWlsYXIgdG8gb3VyIGNsaWVudCBtb2R1bGUgbWFwLiBUaGlzIGlzIGJlY2F1c2VcbiAqIG91ciBtYW5pZmVzdCBjb250YWlucyBhIGxvdCBvZiBpbnRlcm5hbCBOZXh0LmpzIGRhdGEgdGhhdCBhcmUgcmVsZXZhbnQgdG8gdGhlXG4gKiBydW50aW1lLCB3b3JrZXJzLCBldGMuIHRoYXQgUmVhY3QgZG9lc24ndCBuZWVkIHRvIGtub3cuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVNlcnZlck1vZHVsZU1hcCgpOiBTZXJ2ZXJNb2R1bGVNYXAge1xuICByZXR1cm4gbmV3IFByb3h5KFxuICAgIHt9LFxuICAgIHtcbiAgICAgIGdldDogKF8sIGlkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3Qgd29ya2VycyA9XG4gICAgICAgICAgZ2V0U2VydmVyQWN0aW9uc01hbmlmZXN0KClbXG4gICAgICAgICAgICBwcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgPT09ICdlZGdlJyA/ICdlZGdlJyA6ICdub2RlJ1xuICAgICAgICAgIF0/LltpZF0/LndvcmtlcnNcblxuICAgICAgICBpZiAoIXdvcmtlcnMpIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB3b3JrU3RvcmUgPSB3b3JrQXN5bmNTdG9yYWdlLmdldFN0b3JlKClcblxuICAgICAgICBsZXQgd29ya2VyRW50cnk6XG4gICAgICAgICAgfCB7IG1vZHVsZUlkOiBzdHJpbmcgfCBudW1iZXI7IGFzeW5jOiBib29sZWFuIH1cbiAgICAgICAgICB8IHVuZGVmaW5lZFxuXG4gICAgICAgIGlmICh3b3JrU3RvcmUpIHtcbiAgICAgICAgICB3b3JrZXJFbnRyeSA9IHdvcmtlcnNbbm9ybWFsaXplV29ya2VyUGFnZU5hbWUod29ya1N0b3JlLnBhZ2UpXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIElmIHRoZXJlJ3Mgbm8gd29yayBzdG9yZSBkZWZpbmVkLCB3ZSBjYW4gYXNzdW1lIHRoYXQgYSBzZXJ2ZXJcbiAgICAgICAgICAvLyBtb2R1bGUgbWFwIGlzIG5lZWRlZCBkdXJpbmcgbW9kdWxlIGV2YWx1YXRpb24sIGUuZy4gdG8gY3JlYXRlIGFcbiAgICAgICAgICAvLyBzZXJ2ZXIgYWN0aW9uIHVzaW5nIGEgaGlnaGVyLW9yZGVyIGZ1bmN0aW9uLiBUaGVyZWZvcmUgaXQgc2hvdWxkIGJlXG4gICAgICAgICAgLy8gc2FmZSB0byByZXR1cm4gYW55IGVudHJ5IGZyb20gdGhlIG1hbmlmZXN0IHRoYXQgbWF0Y2hlcyB0aGUgYWN0aW9uXG4gICAgICAgICAgLy8gSUQuIFRoZXkgYWxsIHJlZmVyIHRvIHRoZSBzYW1lIG1vZHVsZSBJRCwgd2hpY2ggbXVzdCBhbHNvIGV4aXN0IGluXG4gICAgICAgICAgLy8gdGhlIGN1cnJlbnQgcGFnZSBidW5kbGUuIFRPRE86IFRoaXMgaXMgY3VycmVudGx5IG5vdCBndWFyYW50ZWVkIGluXG4gICAgICAgICAgLy8gVHVyYm9wYWNrLCBhbmQgbmVlZHMgdG8gYmUgZml4ZWQuXG4gICAgICAgICAgd29ya2VyRW50cnkgPSBPYmplY3QudmFsdWVzKHdvcmtlcnMpLmF0KDApXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXdvcmtlckVudHJ5KSB7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBtb2R1bGVJZCwgYXN5bmMgfSA9IHdvcmtlckVudHJ5XG5cbiAgICAgICAgcmV0dXJuIHsgaWQ6IG1vZHVsZUlkLCBuYW1lOiBpZCwgY2h1bmtzOiBbXSwgYXN5bmMgfVxuICAgICAgfSxcbiAgICB9XG4gIClcbn1cblxuLyoqXG4gKiBUaGUgZmxpZ2h0IGVudHJ5IGxvYWRlciBrZXlzIGFjdGlvbnMgYnkgYnVuZGxlUGF0aC4gYnVuZGxlUGF0aCBjb3JyZXNwb25kc1xuICogd2l0aCB0aGUgcmVsYXRpdmUgcGF0aCAoaW5jbHVkaW5nICdhcHAnKSB0byB0aGUgcGFnZSBlbnRyeXBvaW50LlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVXb3JrZXJQYWdlTmFtZShwYWdlTmFtZTogc3RyaW5nKSB7XG4gIGlmIChwYXRoSGFzUHJlZml4KHBhZ2VOYW1lLCAnYXBwJykpIHtcbiAgICByZXR1cm4gcGFnZU5hbWVcbiAgfVxuXG4gIHJldHVybiAnYXBwJyArIHBhZ2VOYW1lXG59XG5cbi8qKlxuICogQ29udmVydHMgYSBidW5kbGVQYXRoIChyZWxhdGl2ZSBwYXRoIHRvIHRoZSBlbnRyeXBvaW50KSB0byBhIHJvdXRhYmxlIHBhZ2VcbiAqIG5hbWUuXG4gKi9cbmZ1bmN0aW9uIGRlbm9ybWFsaXplV29ya2VyUGFnZU5hbWUoYnVuZGxlUGF0aDogc3RyaW5nKSB7XG4gIHJldHVybiBub3JtYWxpemVBcHBQYXRoKHJlbW92ZVBhdGhQcmVmaXgoYnVuZGxlUGF0aCwgJ2FwcCcpKVxufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgcmVxdWVzdGVkIGFjdGlvbiBoYXMgYSB3b3JrZXIgZm9yIHRoZSBjdXJyZW50IHBhZ2UuXG4gKiBJZiBub3QsIGl0IHJldHVybnMgdGhlIGZpcnN0IHdvcmtlciB0aGF0IGhhcyBhIGhhbmRsZXIgZm9yIHRoZSBhY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RXb3JrZXJGb3JGb3J3YXJkaW5nKFxuICBhY3Rpb25JZDogc3RyaW5nLFxuICBwYWdlTmFtZTogc3RyaW5nXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBzZXJ2ZXJBY3Rpb25zTWFuaWZlc3QgPSBnZXRTZXJ2ZXJBY3Rpb25zTWFuaWZlc3QoKVxuICBjb25zdCB3b3JrZXJzID1cbiAgICBzZXJ2ZXJBY3Rpb25zTWFuaWZlc3RbXG4gICAgICBwcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgPT09ICdlZGdlJyA/ICdlZGdlJyA6ICdub2RlJ1xuICAgIF1bYWN0aW9uSWRdPy53b3JrZXJzXG5cbiAgLy8gVGhlcmUgYXJlIG5vIHdvcmtlcnMgdG8gaGFuZGxlIHRoaXMgYWN0aW9uLCBub3RoaW5nIHRvIGZvcndhcmQgdG8uXG4gIGlmICghd29ya2Vycykge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gSWYgdGhlcmUgaXMgYW4gZW50cnkgZm9yIHRoZSBjdXJyZW50IHBhZ2UsIHdlIGRvbid0IG5lZWQgdG8gZm9yd2FyZC5cbiAgaWYgKHdvcmtlcnNbbm9ybWFsaXplV29ya2VyUGFnZU5hbWUocGFnZU5hbWUpXSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gT3RoZXJ3aXNlLCBncmFiIHRoZSBmaXJzdCB3b3JrZXIgdGhhdCBoYXMgYSBoYW5kbGVyIGZvciB0aGlzIGFjdGlvbiBpZC5cbiAgcmV0dXJuIGRlbm9ybWFsaXplV29ya2VyUGFnZU5hbWUoT2JqZWN0LmtleXMod29ya2VycylbMF0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRNYW5pZmVzdHNTaW5nbGV0b24oe1xuICBwYWdlLFxuICBjbGllbnRSZWZlcmVuY2VNYW5pZmVzdCxcbiAgc2VydmVyQWN0aW9uc01hbmlmZXN0OiByYXdTZXJ2ZXJBY3Rpb25zTWFuaWZlc3QsXG59OiB7XG4gIHBhZ2U6IHN0cmluZ1xuICBjbGllbnRSZWZlcmVuY2VNYW5pZmVzdDogRGVlcFJlYWRvbmx5PENsaWVudFJlZmVyZW5jZU1hbmlmZXN0PlxuICBzZXJ2ZXJBY3Rpb25zTWFuaWZlc3Q6IERlZXBSZWFkb25seTxBY3Rpb25NYW5pZmVzdD5cbn0pIHtcbiAgY29uc3QgZXhpc3RpbmdTaW5nbGV0b24gPSBnbG9iYWxUaGlzV2l0aE1hbmlmZXN0c1tNQU5JRkVTVFNfU0lOR0xFVE9OXVxuXG4gIGNvbnN0IHNlcnZlckFjdGlvbnNNYW5pZmVzdDogRGVlcFJlYWRvbmx5PEFjdGlvbk1hbmlmZXN0PiA9IHtcbiAgICBlbmNyeXB0aW9uS2V5OiByYXdTZXJ2ZXJBY3Rpb25zTWFuaWZlc3QuZW5jcnlwdGlvbktleSxcbiAgICAvLyBVc2UgbnVsbC1wcm90b3R5cGVzIGZvciB0aGUgYWN0aW9uIG9iamVjdHMgdG8gcHJldmVudCBwcm90b3R5cGUgcG9sbHV0aW9uXG4gICAgLy8gZnJvbSBhZmZlY3RpbmcgYWN0aW9uIElEIGxvb2t1cHMuXG4gICAgbm9kZTogT2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLCByYXdTZXJ2ZXJBY3Rpb25zTWFuaWZlc3Qubm9kZSksXG4gICAgZWRnZTogT2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLCByYXdTZXJ2ZXJBY3Rpb25zTWFuaWZlc3QuZWRnZSksXG4gIH1cblxuICBpZiAoZXhpc3RpbmdTaW5nbGV0b24pIHtcbiAgICBleGlzdGluZ1NpbmdsZXRvbi5jbGllbnRSZWZlcmVuY2VNYW5pZmVzdHNQZXJSb3V0ZS5zZXQoXG4gICAgICBub3JtYWxpemVBcHBQYXRoKHBhZ2UpLFxuICAgICAgY2xpZW50UmVmZXJlbmNlTWFuaWZlc3RcbiAgICApXG5cbiAgICBleGlzdGluZ1NpbmdsZXRvbi5zZXJ2ZXJBY3Rpb25zTWFuaWZlc3QgPSBzZXJ2ZXJBY3Rpb25zTWFuaWZlc3RcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBjbGllbnRSZWZlcmVuY2VNYW5pZmVzdHNQZXJSb3V0ZSA9IG5ldyBNYXA8XG4gICAgICBzdHJpbmcsXG4gICAgICBEZWVwUmVhZG9ubHk8Q2xpZW50UmVmZXJlbmNlTWFuaWZlc3Q+XG4gICAgPihbW25vcm1hbGl6ZUFwcFBhdGgocGFnZSksIGNsaWVudFJlZmVyZW5jZU1hbmlmZXN0XV0pXG5cbiAgICBjb25zdCBwcm94aWVkQ2xpZW50UmVmZXJlbmNlTWFuaWZlc3QgPSBjcmVhdGVQcm94aWVkQ2xpZW50UmVmZXJlbmNlTWFuaWZlc3QoXG4gICAgICBjbGllbnRSZWZlcmVuY2VNYW5pZmVzdHNQZXJSb3V0ZVxuICAgIClcblxuICAgIGdsb2JhbFRoaXNXaXRoTWFuaWZlc3RzW01BTklGRVNUU19TSU5HTEVUT05dID0ge1xuICAgICAgY2xpZW50UmVmZXJlbmNlTWFuaWZlc3RzUGVyUm91dGUsXG4gICAgICBwcm94aWVkQ2xpZW50UmVmZXJlbmNlTWFuaWZlc3QsXG4gICAgICBzZXJ2ZXJBY3Rpb25zTWFuaWZlc3QsXG4gICAgICBzZXJ2ZXJNb2R1bGVNYXA6IGNyZWF0ZVNlcnZlck1vZHVsZU1hcCgpLFxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRNYW5pZmVzdHNTaW5nbGV0b24oKTogTWFuaWZlc3RzU2luZ2xldG9uIHtcbiAgY29uc3QgbWFuaWZlc3RTaW5nbGV0b24gPSBnbG9iYWxUaGlzV2l0aE1hbmlmZXN0c1tNQU5JRkVTVFNfU0lOR0xFVE9OXVxuXG4gIGlmICghbWFuaWZlc3RTaW5nbGV0b24pIHtcbiAgICB0aHJvdyBuZXcgSW52YXJpYW50RXJyb3IoJ1RoZSBtYW5pZmVzdHMgc2luZ2xldG9uIHdhcyBub3QgaW5pdGlhbGl6ZWQuJylcbiAgfVxuXG4gIHJldHVybiBtYW5pZmVzdFNpbmdsZXRvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2xpZW50UmVmZXJlbmNlTWFuaWZlc3QoKTogRGVlcFJlYWRvbmx5PENsaWVudFJlZmVyZW5jZU1hbmlmZXN0PiB7XG4gIHJldHVybiBnZXRNYW5pZmVzdHNTaW5nbGV0b24oKS5wcm94aWVkQ2xpZW50UmVmZXJlbmNlTWFuaWZlc3Rcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlcnZlckFjdGlvbnNNYW5pZmVzdCgpOiBEZWVwUmVhZG9ubHk8QWN0aW9uTWFuaWZlc3Q+IHtcbiAgcmV0dXJuIGdldE1hbmlmZXN0c1NpbmdsZXRvbigpLnNlcnZlckFjdGlvbnNNYW5pZmVzdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VydmVyTW9kdWxlTWFwKCkge1xuICByZXR1cm4gZ2V0TWFuaWZlc3RzU2luZ2xldG9uKCkuc2VydmVyTW9kdWxlTWFwXG59XG4iXSwibmFtZXMiOlsiZ2V0Q2xpZW50UmVmZXJlbmNlTWFuaWZlc3QiLCJnZXRTZXJ2ZXJBY3Rpb25zTWFuaWZlc3QiLCJnZXRTZXJ2ZXJNb2R1bGVNYXAiLCJzZWxlY3RXb3JrZXJGb3JGb3J3YXJkaW5nIiwic2V0TWFuaWZlc3RzU2luZ2xldG9uIiwiTUFOSUZFU1RTX1NJTkdMRVRPTiIsIlN5bWJvbCIsImZvciIsImdsb2JhbFRoaXNXaXRoTWFuaWZlc3RzIiwiZ2xvYmFsVGhpcyIsImNyZWF0ZVByb3hpZWRDbGllbnRSZWZlcmVuY2VNYW5pZmVzdCIsImNsaWVudFJlZmVyZW5jZU1hbmlmZXN0c1BlclJvdXRlIiwiY3JlYXRlTWFwcGluZ1Byb3h5IiwicHJvcCIsIlByb3h5IiwiZ2V0IiwiXyIsImlkIiwid29ya1N0b3JlIiwid29ya0FzeW5jU3RvcmFnZSIsImdldFN0b3JlIiwiY3VycmVudE1hbmlmZXN0Iiwicm91dGUiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJtYW5pZmVzdCIsImVudHJ5IiwidW5kZWZpbmVkIiwidmFsdWVzIiwibWFwcGluZ1Byb3hpZXMiLCJNYXAiLCJJbnZhcmlhbnRFcnJvciIsInByb3h5Iiwic2V0IiwiU3RyaW5nIiwiY3JlYXRlU2VydmVyTW9kdWxlTWFwIiwid29ya2VycyIsIk5FWFRfUlVOVElNRSIsIndvcmtlckVudHJ5Iiwibm9ybWFsaXplV29ya2VyUGFnZU5hbWUiLCJwYWdlIiwiT2JqZWN0IiwiYXQiLCJtb2R1bGVJZCIsImFzeW5jIiwibmFtZSIsImNodW5rcyIsInBhZ2VOYW1lIiwicGF0aEhhc1ByZWZpeCIsImRlbm9ybWFsaXplV29ya2VyUGFnZU5hbWUiLCJidW5kbGVQYXRoIiwibm9ybWFsaXplQXBwUGF0aCIsInJlbW92ZVBhdGhQcmVmaXgiLCJhY3Rpb25JZCIsInNlcnZlckFjdGlvbnNNYW5pZmVzdCIsImtleXMiLCJjbGllbnRSZWZlcmVuY2VNYW5pZmVzdCIsInJhd1NlcnZlckFjdGlvbnNNYW5pZmVzdCIsImV4aXN0aW5nU2luZ2xldG9uIiwiZW5jcnlwdGlvbktleSIsIm5vZGUiLCJhc3NpZ24iLCJjcmVhdGUiLCJlZGdlIiwicHJveGllZENsaWVudFJlZmVyZW5jZU1hbmlmZXN0Iiwic2VydmVyTW9kdWxlTWFwIiwiZ2V0TWFuaWZlc3RzU2luZ2xldG9uIiwibWFuaWZlc3RTaW5nbGV0b24iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/manifests-singleton.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/app-render/prospective-render-utils.js":
|
||
/*!******************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/app-render/prospective-render-utils.js ***!
|
||
\******************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n Phase: function() {\n return Phase;\n },\n printDebugThrownValueForProspectiveRender: function() {\n return printDebugThrownValueForProspectiveRender;\n }\n});\nconst _createerrorhandler = __webpack_require__(/*! ./create-error-handler */ \"(rsc)/./node_modules/next/dist/server/app-render/create-error-handler.js\");\nconst _reactlargeshellerror = __webpack_require__(/*! ./react-large-shell-error */ \"(rsc)/./node_modules/next/dist/server/app-render/react-large-shell-error.js\");\nvar Phase = /*#__PURE__*/ function(Phase) {\n Phase[\"ProspectiveRender\"] = \"the prospective render\";\n Phase[\"SegmentCollection\"] = \"segment collection\";\n Phase[\"InstantValidation\"] = \"instant validation\";\n return Phase;\n}({});\nfunction printDebugThrownValueForProspectiveRender(thrownValue, route, phase) {\n // We don't need to print well-known Next.js errors.\n if ((0, _createerrorhandler.getDigestForWellKnownError)(thrownValue)) {\n return;\n }\n if ((0, _reactlargeshellerror.isReactLargeShellError)(thrownValue)) {\n // TODO: Aggregate\n console.error(thrownValue);\n return undefined;\n }\n let message;\n if (typeof thrownValue === 'object' && thrownValue !== null && typeof thrownValue.message === 'string') {\n message = thrownValue.message;\n if (typeof thrownValue.stack === 'string') {\n const originalErrorStack = thrownValue.stack;\n const stackStart = originalErrorStack.indexOf('\\n');\n if (stackStart > -1) {\n const error = Object.defineProperty(new Error(`Route ${route} errored during ${phase}. These errors are normally ignored and may not prevent the route from prerendering but are logged here because build debugging is enabled.\n \nOriginal Error: ${message}`), \"__NEXT_ERROR_CODE\", {\n value: \"E949\",\n enumerable: false,\n configurable: true\n });\n error.stack = 'Error: ' + error.message + originalErrorStack.slice(stackStart);\n console.error(error);\n return;\n }\n }\n } else if (typeof thrownValue === 'string') {\n message = thrownValue;\n }\n if (message) {\n console.error(`Route ${route} errored during ${phase}. These errors are normally ignored and may not prevent the route from prerendering but are logged here because build debugging is enabled. No stack was provided.\n \nOriginal Message: ${message}`);\n return;\n }\n console.error(`Route ${route} errored during ${phase}. These errors are normally ignored and may not prevent the route from prerendering but are logged here because build debugging is enabled. The thrown value is logged just following this message`);\n console.error(thrownValue);\n return;\n}\n\n//# sourceMappingURL=prospective-render-utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL3Byb3NwZWN0aXZlLXJlbmRlci11dGlscy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FHTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCw0QkFBNEIsbUJBQU8sQ0FBQyx3R0FBd0I7QUFDNUQsOEJBQThCLG1CQUFPLENBQUMsOEdBQTJCO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEdBQUc7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUVBQXVFLE9BQU8saUJBQWlCLE1BQU07QUFDckc7QUFDQSxrQkFBa0IsUUFBUTtBQUMxQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsT0FBTyxpQkFBaUIsTUFBTTtBQUM3RDtBQUNBLG9CQUFvQixRQUFRO0FBQzVCO0FBQ0E7QUFDQSwyQkFBMkIsT0FBTyxpQkFBaUIsTUFBTTtBQUN6RDtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL3Byb3NwZWN0aXZlLXJlbmRlci11dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIFBoYXNlOiBudWxsLFxuICAgIHByaW50RGVidWdUaHJvd25WYWx1ZUZvclByb3NwZWN0aXZlUmVuZGVyOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIFBoYXNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFBoYXNlO1xuICAgIH0sXG4gICAgcHJpbnREZWJ1Z1Rocm93blZhbHVlRm9yUHJvc3BlY3RpdmVSZW5kZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcHJpbnREZWJ1Z1Rocm93blZhbHVlRm9yUHJvc3BlY3RpdmVSZW5kZXI7XG4gICAgfVxufSk7XG5jb25zdCBfY3JlYXRlZXJyb3JoYW5kbGVyID0gcmVxdWlyZShcIi4vY3JlYXRlLWVycm9yLWhhbmRsZXJcIik7XG5jb25zdCBfcmVhY3RsYXJnZXNoZWxsZXJyb3IgPSByZXF1aXJlKFwiLi9yZWFjdC1sYXJnZS1zaGVsbC1lcnJvclwiKTtcbnZhciBQaGFzZSA9IC8qI19fUFVSRV9fKi8gZnVuY3Rpb24oUGhhc2UpIHtcbiAgICBQaGFzZVtcIlByb3NwZWN0aXZlUmVuZGVyXCJdID0gXCJ0aGUgcHJvc3BlY3RpdmUgcmVuZGVyXCI7XG4gICAgUGhhc2VbXCJTZWdtZW50Q29sbGVjdGlvblwiXSA9IFwic2VnbWVudCBjb2xsZWN0aW9uXCI7XG4gICAgUGhhc2VbXCJJbnN0YW50VmFsaWRhdGlvblwiXSA9IFwiaW5zdGFudCB2YWxpZGF0aW9uXCI7XG4gICAgcmV0dXJuIFBoYXNlO1xufSh7fSk7XG5mdW5jdGlvbiBwcmludERlYnVnVGhyb3duVmFsdWVGb3JQcm9zcGVjdGl2ZVJlbmRlcih0aHJvd25WYWx1ZSwgcm91dGUsIHBoYXNlKSB7XG4gICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBwcmludCB3ZWxsLWtub3duIE5leHQuanMgZXJyb3JzLlxuICAgIGlmICgoMCwgX2NyZWF0ZWVycm9yaGFuZGxlci5nZXREaWdlc3RGb3JXZWxsS25vd25FcnJvcikodGhyb3duVmFsdWUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCgwLCBfcmVhY3RsYXJnZXNoZWxsZXJyb3IuaXNSZWFjdExhcmdlU2hlbGxFcnJvcikodGhyb3duVmFsdWUpKSB7XG4gICAgICAgIC8vIFRPRE86IEFnZ3JlZ2F0ZVxuICAgICAgICBjb25zb2xlLmVycm9yKHRocm93blZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgbGV0IG1lc3NhZ2U7XG4gICAgaWYgKHR5cGVvZiB0aHJvd25WYWx1ZSA9PT0gJ29iamVjdCcgJiYgdGhyb3duVmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHRocm93blZhbHVlLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG1lc3NhZ2UgPSB0aHJvd25WYWx1ZS5tZXNzYWdlO1xuICAgICAgICBpZiAodHlwZW9mIHRocm93blZhbHVlLnN0YWNrID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxFcnJvclN0YWNrID0gdGhyb3duVmFsdWUuc3RhY2s7XG4gICAgICAgICAgICBjb25zdCBzdGFja1N0YXJ0ID0gb3JpZ2luYWxFcnJvclN0YWNrLmluZGV4T2YoJ1xcbicpO1xuICAgICAgICAgICAgaWYgKHN0YWNrU3RhcnQgPiAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcihgUm91dGUgJHtyb3V0ZX0gZXJyb3JlZCBkdXJpbmcgJHtwaGFzZX0uIFRoZXNlIGVycm9ycyBhcmUgbm9ybWFsbHkgaWdub3JlZCBhbmQgbWF5IG5vdCBwcmV2ZW50IHRoZSByb3V0ZSBmcm9tIHByZXJlbmRlcmluZyBidXQgYXJlIGxvZ2dlZCBoZXJlIGJlY2F1c2UgYnVpbGQgZGVidWdnaW5nIGlzIGVuYWJsZWQuXG4gICAgICAgICAgXG5PcmlnaW5hbCBFcnJvcjogJHttZXNzYWdlfWApLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTk0OVwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgZXJyb3Iuc3RhY2sgPSAnRXJyb3I6ICcgKyBlcnJvci5tZXNzYWdlICsgb3JpZ2luYWxFcnJvclN0YWNrLnNsaWNlKHN0YWNrU3RhcnQpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRocm93blZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBtZXNzYWdlID0gdGhyb3duVmFsdWU7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFJvdXRlICR7cm91dGV9IGVycm9yZWQgZHVyaW5nICR7cGhhc2V9LiBUaGVzZSBlcnJvcnMgYXJlIG5vcm1hbGx5IGlnbm9yZWQgYW5kIG1heSBub3QgcHJldmVudCB0aGUgcm91dGUgZnJvbSBwcmVyZW5kZXJpbmcgYnV0IGFyZSBsb2dnZWQgaGVyZSBiZWNhdXNlIGJ1aWxkIGRlYnVnZ2luZyBpcyBlbmFibGVkLiBObyBzdGFjayB3YXMgcHJvdmlkZWQuXG4gICAgICAgICAgXG5PcmlnaW5hbCBNZXNzYWdlOiAke21lc3NhZ2V9YCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc29sZS5lcnJvcihgUm91dGUgJHtyb3V0ZX0gZXJyb3JlZCBkdXJpbmcgJHtwaGFzZX0uIFRoZXNlIGVycm9ycyBhcmUgbm9ybWFsbHkgaWdub3JlZCBhbmQgbWF5IG5vdCBwcmV2ZW50IHRoZSByb3V0ZSBmcm9tIHByZXJlbmRlcmluZyBidXQgYXJlIGxvZ2dlZCBoZXJlIGJlY2F1c2UgYnVpbGQgZGVidWdnaW5nIGlzIGVuYWJsZWQuIFRoZSB0aHJvd24gdmFsdWUgaXMgbG9nZ2VkIGp1c3QgZm9sbG93aW5nIHRoaXMgbWVzc2FnZWApO1xuICAgIGNvbnNvbGUuZXJyb3IodGhyb3duVmFsdWUpO1xuICAgIHJldHVybjtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cHJvc3BlY3RpdmUtcmVuZGVyLXV0aWxzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/prospective-render-utils.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/app-render/react-large-shell-error.js":
|
||
/*!*****************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/app-render/react-large-shell-error.js ***!
|
||
\*****************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("// TODO: isWellKnownError -> isNextInternalError\n// isReactLargeShellError -> isWarning\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"isReactLargeShellError\", ({\n enumerable: true,\n get: function() {\n return isReactLargeShellError;\n }\n}));\nfunction isReactLargeShellError(error) {\n return typeof error === 'object' && error !== null && 'message' in error && typeof error.message === 'string' && error.message.startsWith('This rendered a large document (>');\n}\n\n//# sourceMappingURL=react-large-shell-error.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL3JlYWN0LWxhcmdlLXNoZWxsLWVycm9yLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLDBEQUF5RDtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL2FwcC1yZW5kZXIvcmVhY3QtbGFyZ2Utc2hlbGwtZXJyb3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVE9ETzogaXNXZWxsS25vd25FcnJvciAtPiBpc05leHRJbnRlcm5hbEVycm9yXG4vLyBpc1JlYWN0TGFyZ2VTaGVsbEVycm9yIC0+IGlzV2FybmluZ1xuXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJpc1JlYWN0TGFyZ2VTaGVsbEVycm9yXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpc1JlYWN0TGFyZ2VTaGVsbEVycm9yO1xuICAgIH1cbn0pO1xuZnVuY3Rpb24gaXNSZWFjdExhcmdlU2hlbGxFcnJvcihlcnJvcikge1xuICAgIHJldHVybiB0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmIGVycm9yICE9PSBudWxsICYmICdtZXNzYWdlJyBpbiBlcnJvciAmJiB0eXBlb2YgZXJyb3IubWVzc2FnZSA9PT0gJ3N0cmluZycgJiYgZXJyb3IubWVzc2FnZS5zdGFydHNXaXRoKCdUaGlzIHJlbmRlcmVkIGEgbGFyZ2UgZG9jdW1lbnQgKD4nKTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVhY3QtbGFyZ2Utc2hlbGwtZXJyb3IuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/react-large-shell-error.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/app-render/rsc/postpone.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/app-render/rsc/postpone.js ***!
|
||
\******************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/*\n\nFiles in the rsc directory are meant to be packaged as part of the RSC graph using next-app-loader.\n\n*/ // When postpone is available in canary React we can switch to importing it directly\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"Postpone\", ({\n enumerable: true,\n get: function() {\n return _dynamicrendering.Postpone;\n }\n}));\nconst _dynamicrendering = __webpack_require__(/*! ../dynamic-rendering */ \"(rsc)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\");\n\n//# sourceMappingURL=postpone.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL3JzYy9wb3N0cG9uZS5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTs7QUFFQTtBQUNhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsNENBQTJDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsMEJBQTBCLG1CQUFPLENBQUMsbUdBQXNCOztBQUV4RCIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL2FwcC1yZW5kZXIvcnNjL3Bvc3Rwb25lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5cbkZpbGVzIGluIHRoZSByc2MgZGlyZWN0b3J5IGFyZSBtZWFudCB0byBiZSBwYWNrYWdlZCBhcyBwYXJ0IG9mIHRoZSBSU0MgZ3JhcGggdXNpbmcgbmV4dC1hcHAtbG9hZGVyLlxuXG4qLyAvLyBXaGVuIHBvc3Rwb25lIGlzIGF2YWlsYWJsZSBpbiBjYW5hcnkgUmVhY3Qgd2UgY2FuIHN3aXRjaCB0byBpbXBvcnRpbmcgaXQgZGlyZWN0bHlcblwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUG9zdHBvbmVcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9keW5hbWljcmVuZGVyaW5nLlBvc3Rwb25lO1xuICAgIH1cbn0pO1xuY29uc3QgX2R5bmFtaWNyZW5kZXJpbmcgPSByZXF1aXJlKFwiLi4vZHluYW1pYy1yZW5kZXJpbmdcIik7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvc3Rwb25lLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/rsc/postpone.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/app-render/rsc/preloads.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/app-render/rsc/preloads.js ***!
|
||
\******************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/*\n\nFiles in the rsc directory are meant to be packaged as part of the RSC graph using next-app-loader.\n\n*/ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n preconnect: function() {\n return preconnect;\n },\n preloadFont: function() {\n return preloadFont;\n },\n preloadStyle: function() {\n return preloadStyle;\n }\n});\nconst _reactdom = /*#__PURE__*/ _interop_require_default(__webpack_require__(/*! react-dom */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-dom.js\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction preloadStyle(href, crossOrigin, nonce) {\n const opts = {\n as: 'style'\n };\n if (typeof crossOrigin === 'string') {\n opts.crossOrigin = crossOrigin;\n }\n if (typeof nonce === 'string') {\n opts.nonce = nonce;\n }\n _reactdom.default.preload(href, opts);\n}\nfunction preloadFont(href, type, crossOrigin, nonce) {\n const opts = {\n as: 'font',\n type\n };\n if (typeof crossOrigin === 'string') {\n opts.crossOrigin = crossOrigin;\n }\n if (typeof nonce === 'string') {\n opts.nonce = nonce;\n }\n _reactdom.default.preload(href, opts);\n}\nfunction preconnect(href, crossOrigin, nonce) {\n const opts = {};\n if (typeof crossOrigin === 'string') {\n opts.crossOrigin = crossOrigin;\n }\n if (typeof nonce === 'string') {\n opts.nonce = nonce;\n }\n ;\n _reactdom.default.preconnect(href, opts);\n}\n\n//# sourceMappingURL=preloads.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL3JzYy9wcmVsb2Fkcy5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTs7QUFFQSxHQUFnQjtBQUNoQiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBSUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCx5REFBeUQsbUJBQU8sQ0FBQyx5R0FBVztBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvYXBwLXJlbmRlci9yc2MvcHJlbG9hZHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcblxuRmlsZXMgaW4gdGhlIHJzYyBkaXJlY3RvcnkgYXJlIG1lYW50IHRvIGJlIHBhY2thZ2VkIGFzIHBhcnQgb2YgdGhlIFJTQyBncmFwaCB1c2luZyBuZXh0LWFwcC1sb2FkZXIuXG5cbiovIFwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgcHJlY29ubmVjdDogbnVsbCxcbiAgICBwcmVsb2FkRm9udDogbnVsbCxcbiAgICBwcmVsb2FkU3R5bGU6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgcHJlY29ubmVjdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBwcmVjb25uZWN0O1xuICAgIH0sXG4gICAgcHJlbG9hZEZvbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcHJlbG9hZEZvbnQ7XG4gICAgfSxcbiAgICBwcmVsb2FkU3R5bGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcHJlbG9hZFN0eWxlO1xuICAgIH1cbn0pO1xuY29uc3QgX3JlYWN0ZG9tID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQocmVxdWlyZShcInJlYWN0LWRvbVwiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHtcbiAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgfTtcbn1cbmZ1bmN0aW9uIHByZWxvYWRTdHlsZShocmVmLCBjcm9zc09yaWdpbiwgbm9uY2UpIHtcbiAgICBjb25zdCBvcHRzID0ge1xuICAgICAgICBhczogJ3N0eWxlJ1xuICAgIH07XG4gICAgaWYgKHR5cGVvZiBjcm9zc09yaWdpbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgb3B0cy5jcm9zc09yaWdpbiA9IGNyb3NzT3JpZ2luO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG5vbmNlID09PSAnc3RyaW5nJykge1xuICAgICAgICBvcHRzLm5vbmNlID0gbm9uY2U7XG4gICAgfVxuICAgIF9yZWFjdGRvbS5kZWZhdWx0LnByZWxvYWQoaHJlZiwgb3B0cyk7XG59XG5mdW5jdGlvbiBwcmVsb2FkRm9udChocmVmLCB0eXBlLCBjcm9zc09yaWdpbiwgbm9uY2UpIHtcbiAgICBjb25zdCBvcHRzID0ge1xuICAgICAgICBhczogJ2ZvbnQnLFxuICAgICAgICB0eXBlXG4gICAgfTtcbiAgICBpZiAodHlwZW9mIGNyb3NzT3JpZ2luID09PSAnc3RyaW5nJykge1xuICAgICAgICBvcHRzLmNyb3NzT3JpZ2luID0gY3Jvc3NPcmlnaW47XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygbm9uY2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG9wdHMubm9uY2UgPSBub25jZTtcbiAgICB9XG4gICAgX3JlYWN0ZG9tLmRlZmF1bHQucHJlbG9hZChocmVmLCBvcHRzKTtcbn1cbmZ1bmN0aW9uIHByZWNvbm5lY3QoaHJlZiwgY3Jvc3NPcmlnaW4sIG5vbmNlKSB7XG4gICAgY29uc3Qgb3B0cyA9IHt9O1xuICAgIGlmICh0eXBlb2YgY3Jvc3NPcmlnaW4gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG9wdHMuY3Jvc3NPcmlnaW4gPSBjcm9zc09yaWdpbjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBub25jZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgb3B0cy5ub25jZSA9IG5vbmNlO1xuICAgIH1cbiAgICA7XG4gICAgX3JlYWN0ZG9tLmRlZmF1bHQucHJlY29ubmVjdChocmVmLCBvcHRzKTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cHJlbG9hZHMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/rsc/preloads.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/app-render/rsc/taint.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/app-render/rsc/taint.js ***!
|
||
\***************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/*\n\nFiles in the rsc directory are meant to be packaged as part of the RSC graph using next-app-loader.\n\n*/ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n taintObjectReference: function() {\n return taintObjectReference;\n },\n taintUniqueValue: function() {\n return taintUniqueValue;\n }\n});\nconst _react = /*#__PURE__*/ _interop_require_wildcard(__webpack_require__(/*! react */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js\"));\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {\n __proto__: null\n };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction notImplemented() {\n throw Object.defineProperty(new Error('Taint can only be used with the taint flag.'), \"__NEXT_ERROR_CODE\", {\n value: \"E354\",\n enumerable: false,\n configurable: true\n });\n}\nconst taintObjectReference = false ? 0 : notImplemented;\nconst taintUniqueValue = false ? 0 : notImplemented;\n\n//# sourceMappingURL=taint.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL3JzYy90YWludC5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTs7QUFFQSxHQUFnQjtBQUNoQiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBR0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsdURBQXVELG1CQUFPLENBQUMsaUdBQU87QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsNkJBQTZCLE1BQXFDLEdBQUcsQ0FBd0M7QUFDN0cseUJBQXlCLE1BQXFDLEdBQUcsQ0FBb0M7O0FBRXJHIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvYXBwLXJlbmRlci9yc2MvdGFpbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcblxuRmlsZXMgaW4gdGhlIHJzYyBkaXJlY3RvcnkgYXJlIG1lYW50IHRvIGJlIHBhY2thZ2VkIGFzIHBhcnQgb2YgdGhlIFJTQyBncmFwaCB1c2luZyBuZXh0LWFwcC1sb2FkZXIuXG5cbiovIFwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgdGFpbnRPYmplY3RSZWZlcmVuY2U6IG51bGwsXG4gICAgdGFpbnRVbmlxdWVWYWx1ZTogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICB0YWludE9iamVjdFJlZmVyZW5jZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0YWludE9iamVjdFJlZmVyZW5jZTtcbiAgICB9LFxuICAgIHRhaW50VW5pcXVlVmFsdWU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGFpbnRVbmlxdWVWYWx1ZTtcbiAgICB9XG59KTtcbmNvbnN0IF9yZWFjdCA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7XG4gICAgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsO1xuICAgIHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7XG4gICAgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpO1xuICAgIHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24obm9kZUludGVyb3ApIHtcbiAgICAgICAgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wO1xuICAgIH0pKG5vZGVJbnRlcm9wKTtcbn1cbmZ1bmN0aW9uIF9pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkge1xuICAgIGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRlZmF1bHQ6IG9ialxuICAgICAgICB9O1xuICAgIH1cbiAgICB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApO1xuICAgIGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkge1xuICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KG9iaik7XG4gICAgfVxuICAgIHZhciBuZXdPYmogPSB7XG4gICAgICAgIF9fcHJvdG9fXzogbnVsbFxuICAgIH07XG4gICAgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuICAgIGZvcih2YXIga2V5IGluIG9iail7XG4gICAgICAgIGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld09ialtrZXldID0gb2JqW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgbmV3T2JqLmRlZmF1bHQgPSBvYmo7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIGNhY2hlLnNldChvYmosIG5ld09iaik7XG4gICAgfVxuICAgIHJldHVybiBuZXdPYmo7XG59XG5mdW5jdGlvbiBub3RJbXBsZW1lbnRlZCgpIHtcbiAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKCdUYWludCBjYW4gb25seSBiZSB1c2VkIHdpdGggdGhlIHRhaW50IGZsYWcuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICB2YWx1ZTogXCJFMzU0XCIsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbn1cbmNvbnN0IHRhaW50T2JqZWN0UmVmZXJlbmNlID0gcHJvY2Vzcy5lbnYuX19ORVhUX0VYUEVSSU1FTlRBTF9SRUFDVCA/IF9yZWFjdC5leHBlcmltZW50YWxfdGFpbnRPYmplY3RSZWZlcmVuY2UgOiBub3RJbXBsZW1lbnRlZDtcbmNvbnN0IHRhaW50VW5pcXVlVmFsdWUgPSBwcm9jZXNzLmVudi5fX05FWFRfRVhQRVJJTUVOVEFMX1JFQUNUID8gX3JlYWN0LmV4cGVyaW1lbnRhbF90YWludFVuaXF1ZVZhbHVlIDogbm90SW1wbGVtZW50ZWQ7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRhaW50LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/rsc/taint.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/app-render/staged-rendering.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/app-render/staged-rendering.js ***!
|
||
\**********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n RenderStage: function() {\n return RenderStage;\n },\n StagedRenderingController: function() {\n return StagedRenderingController;\n }\n});\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(rsc)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nconst _promisewithresolvers = __webpack_require__(/*! ../../shared/lib/promise-with-resolvers */ \"(rsc)/./node_modules/next/dist/shared/lib/promise-with-resolvers.js\");\nvar RenderStage = /*#__PURE__*/ function(RenderStage) {\n RenderStage[RenderStage[\"Before\"] = 1] = \"Before\";\n RenderStage[RenderStage[\"EarlyStatic\"] = 2] = \"EarlyStatic\";\n RenderStage[RenderStage[\"Static\"] = 3] = \"Static\";\n RenderStage[RenderStage[\"EarlyRuntime\"] = 4] = \"EarlyRuntime\";\n RenderStage[RenderStage[\"Runtime\"] = 5] = \"Runtime\";\n RenderStage[RenderStage[\"Dynamic\"] = 6] = \"Dynamic\";\n RenderStage[RenderStage[\"Abandoned\"] = 7] = \"Abandoned\";\n return RenderStage;\n}({});\nclass StagedRenderingController {\n constructor(abortSignal, abandonController, shouldTrackSyncIO){\n this.abortSignal = abortSignal;\n this.abandonController = abandonController;\n this.shouldTrackSyncIO = shouldTrackSyncIO;\n this.currentStage = 1;\n this.syncInterruptReason = null;\n this.staticStageEndTime = Infinity;\n this.runtimeStageEndTime = Infinity;\n this.staticStageListeners = [];\n this.earlyRuntimeStageListeners = [];\n this.runtimeStageListeners = [];\n this.dynamicStageListeners = [];\n this.staticStagePromise = (0, _promisewithresolvers.createPromiseWithResolvers)();\n this.earlyRuntimeStagePromise = (0, _promisewithresolvers.createPromiseWithResolvers)();\n this.runtimeStagePromise = (0, _promisewithresolvers.createPromiseWithResolvers)();\n this.dynamicStagePromise = (0, _promisewithresolvers.createPromiseWithResolvers)();\n if (abortSignal) {\n abortSignal.addEventListener('abort', ()=>{\n // Reject all stage promises that haven't already been resolved.\n // If a promise was already resolved via advanceStage, the reject\n // is a no-op. The ignoreReject handler suppresses unhandled\n // rejection warnings for promises that no one is awaiting.\n const { reason } = abortSignal;\n this.staticStagePromise.promise.catch(ignoreReject);\n this.staticStagePromise.reject(reason);\n this.earlyRuntimeStagePromise.promise.catch(ignoreReject);\n this.earlyRuntimeStagePromise.reject(reason);\n this.runtimeStagePromise.promise.catch(ignoreReject);\n this.runtimeStagePromise.reject(reason);\n this.dynamicStagePromise.promise.catch(ignoreReject);\n this.dynamicStagePromise.reject(reason);\n }, {\n once: true\n });\n }\n if (abandonController) {\n abandonController.signal.addEventListener('abort', ()=>{\n this.abandonRender();\n }, {\n once: true\n });\n }\n }\n onStage(stage, callback) {\n if (this.currentStage >= stage) {\n callback();\n } else if (stage === 3) {\n this.staticStageListeners.push(callback);\n } else if (stage === 4) {\n this.earlyRuntimeStageListeners.push(callback);\n } else if (stage === 5) {\n this.runtimeStageListeners.push(callback);\n } else if (stage === 6) {\n this.dynamicStageListeners.push(callback);\n } else {\n // This should never happen\n throw Object.defineProperty(new _invarianterror.InvariantError(`Invalid render stage: ${stage}`), \"__NEXT_ERROR_CODE\", {\n value: \"E881\",\n enumerable: false,\n configurable: true\n });\n }\n }\n shouldTrackSyncInterrupt() {\n if (!this.shouldTrackSyncIO) {\n return false;\n }\n switch(this.currentStage){\n case 1:\n // If we haven't started the render yet, it can't be interrupted.\n return false;\n case 2:\n case 3:\n return true;\n case 4:\n // EarlyRuntime is for runtime-prefetchable segments. Sync IO\n // should error because it would abort a runtime prefetch.\n return true;\n case 5:\n // Runtime is for non-prefetchable segments. Sync IO is fine there\n // because in practice this segment will never be runtime prefetched\n return false;\n case 6:\n case 7:\n return false;\n default:\n return false;\n }\n }\n syncInterruptCurrentStageWithReason(reason) {\n if (this.currentStage === 1) {\n return;\n }\n // If the render has already been abandoned, there's nothing to interrupt.\n if (this.currentStage === 7) {\n return;\n }\n // If Sync IO occurs during an abandonable render, we trigger the abandon.\n // The abandon listener will call abandonRender which advances through\n // stages to let caches fill before marking as Abandoned.\n if (this.abandonController) {\n this.abandonController.abort();\n return;\n }\n if (this.abortSignal) {\n // If this is an abortable render, we capture the interruption reason and stop advancing.\n // We don't release any more promises.\n // The caller is expected to abort the signal.\n this.syncInterruptReason = reason;\n this.currentStage = 7;\n return;\n }\n // If we're in a non-abandonable & non-abortable render,\n // we need to advance to the Dynamic stage and capture the interruption reason.\n // (in dev, this will be the restarted render)\n switch(this.currentStage){\n case 2:\n case 3:\n case 4:\n {\n // EarlyRuntime is for runtime-prefetchable segments. Sync IO here\n // means the prefetch would be aborted too early.\n this.syncInterruptReason = reason;\n this.advanceStage(6);\n return;\n }\n case 5:\n {\n // canSyncInterrupt returns false for Runtime, so we should\n // never get here. Defensive no-op.\n return;\n }\n case 6:\n default:\n }\n }\n getSyncInterruptReason() {\n return this.syncInterruptReason;\n }\n getStaticStageEndTime() {\n return this.staticStageEndTime;\n }\n getRuntimeStageEndTime() {\n return this.runtimeStageEndTime;\n }\n abandonRender() {\n // In staged rendering, only the initial render is abandonable.\n // We can abandon the initial render if\n // 1. We notice a cache miss, and need to wait for caches to fill\n // 2. A sync IO error occurs, and the render should be interrupted\n // (this might be a lazy intitialization of a module,\n // so we still want to restart in this case and see if it still occurs)\n // In either case, we'll be doing another render after this one,\n // so we only want to unblock the next stage, not Dynamic, because\n // unblocking the dynamic stage would likely lead to wasted (uncached) IO.\n const { currentStage } = this;\n switch(currentStage){\n case 2:\n {\n this.resolveStaticStage();\n }\n // intentional fallthrough\n case 3:\n {\n this.resolveEarlyRuntimeStage();\n }\n // intentional fallthrough\n case 4:\n {\n this.resolveRuntimeStage();\n }\n // intentional fallthrough\n case 5:\n {\n this.currentStage = 7;\n return;\n }\n case 6:\n case 1:\n case 7:\n break;\n default:\n {\n currentStage;\n }\n }\n }\n advanceStage(stage) {\n // If we're already at the target stage or beyond, do nothing.\n // (this can happen e.g. if sync IO advanced us to the dynamic stage)\n if (stage <= this.currentStage) {\n return;\n }\n let currentStage = this.currentStage;\n this.currentStage = stage;\n if (currentStage < 3 && stage >= 3) {\n this.resolveStaticStage();\n }\n if (currentStage < 4 && stage >= 4) {\n this.resolveEarlyRuntimeStage();\n }\n if (currentStage < 5 && stage >= 5) {\n this.staticStageEndTime = performance.now() + performance.timeOrigin;\n this.resolveRuntimeStage();\n }\n if (currentStage < 6 && stage >= 6) {\n this.runtimeStageEndTime = performance.now() + performance.timeOrigin;\n this.resolveDynamicStage();\n return;\n }\n }\n /** Fire the `onStage` listeners for the static stage and unblock any promises waiting for it. */ resolveStaticStage() {\n const staticListeners = this.staticStageListeners;\n for(let i = 0; i < staticListeners.length; i++){\n staticListeners[i]();\n }\n staticListeners.length = 0;\n this.staticStagePromise.resolve();\n }\n /** Fire the `onStage` listeners for the early runtime stage and unblock any promises waiting for it. */ resolveEarlyRuntimeStage() {\n const earlyRuntimeListeners = this.earlyRuntimeStageListeners;\n for(let i = 0; i < earlyRuntimeListeners.length; i++){\n earlyRuntimeListeners[i]();\n }\n earlyRuntimeListeners.length = 0;\n this.earlyRuntimeStagePromise.resolve();\n }\n /** Fire the `onStage` listeners for the runtime stage and unblock any promises waiting for it. */ resolveRuntimeStage() {\n const runtimeListeners = this.runtimeStageListeners;\n for(let i = 0; i < runtimeListeners.length; i++){\n runtimeListeners[i]();\n }\n runtimeListeners.length = 0;\n this.runtimeStagePromise.resolve();\n }\n /** Fire the `onStage` listeners for the dynamic stage and unblock any promises waiting for it. */ resolveDynamicStage() {\n const dynamicListeners = this.dynamicStageListeners;\n for(let i = 0; i < dynamicListeners.length; i++){\n dynamicListeners[i]();\n }\n dynamicListeners.length = 0;\n this.dynamicStagePromise.resolve();\n }\n getStagePromise(stage) {\n switch(stage){\n case 3:\n {\n return this.staticStagePromise.promise;\n }\n case 4:\n {\n return this.earlyRuntimeStagePromise.promise;\n }\n case 5:\n {\n return this.runtimeStagePromise.promise;\n }\n case 6:\n {\n return this.dynamicStagePromise.promise;\n }\n default:\n {\n stage;\n throw Object.defineProperty(new _invarianterror.InvariantError(`Invalid render stage: ${stage}`), \"__NEXT_ERROR_CODE\", {\n value: \"E881\",\n enumerable: false,\n configurable: true\n });\n }\n }\n }\n waitForStage(stage) {\n return this.getStagePromise(stage);\n }\n delayUntilStage(stage, displayName, resolvedValue) {\n const ioTriggerPromise = this.getStagePromise(stage);\n const promise = makeDevtoolsIOPromiseFromIOTrigger(ioTriggerPromise, displayName, resolvedValue);\n // Analogously to `makeHangingPromise`, we might reject this promise if the signal is invoked.\n // (e.g. in the case where we don't want want the render to proceed to the dynamic stage and abort it).\n // We shouldn't consider this an unhandled rejection, so we attach a noop catch handler here to suppress this warning.\n if (this.abortSignal) {\n promise.catch(ignoreReject);\n }\n return promise;\n }\n}\nfunction ignoreReject() {}\n// TODO(restart-on-cache-miss): the layering of `delayUntilStage`,\n// `makeDevtoolsIOPromiseFromIOTrigger` and and `makeDevtoolsIOAwarePromise`\n// is confusing, we should clean it up.\nfunction makeDevtoolsIOPromiseFromIOTrigger(ioTrigger, displayName, resolvedValue) {\n // If we create a `new Promise` and give it a displayName\n // (with no userspace code above us in the stack)\n // React Devtools will use it as the IO cause when determining \"suspended by\".\n // In particular, it should shadow any inner IO that resolved/rejected the promise\n // (in case of staged rendering, this will be the `setTimeout` that triggers the relevant stage)\n const promise = new Promise((resolve, reject)=>{\n ioTrigger.then(resolve.bind(null, resolvedValue), reject);\n });\n if (displayName !== undefined) {\n // @ts-expect-error\n promise.displayName = displayName;\n }\n return promise;\n}\n\n//# sourceMappingURL=staged-rendering.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL3N0YWdlZC1yZW5kZXJpbmcuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBR0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Qsd0JBQXdCLG1CQUFPLENBQUMsc0dBQWtDO0FBQ2xFLDhCQUE4QixtQkFBTyxDQUFDLG9IQUF5QztBQUMvRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEdBQUc7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLFNBQVM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0Esb0dBQW9HLE1BQU07QUFDMUc7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGVBQWU7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDRCQUE0QjtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixrQ0FBa0M7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsNkJBQTZCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDZCQUE2QjtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEdBQTRHLE1BQU07QUFDbEg7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL3N0YWdlZC1yZW5kZXJpbmcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBSZW5kZXJTdGFnZTogbnVsbCxcbiAgICBTdGFnZWRSZW5kZXJpbmdDb250cm9sbGVyOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIFJlbmRlclN0YWdlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFJlbmRlclN0YWdlO1xuICAgIH0sXG4gICAgU3RhZ2VkUmVuZGVyaW5nQ29udHJvbGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBTdGFnZWRSZW5kZXJpbmdDb250cm9sbGVyO1xuICAgIH1cbn0pO1xuY29uc3QgX2ludmFyaWFudGVycm9yID0gcmVxdWlyZShcIi4uLy4uL3NoYXJlZC9saWIvaW52YXJpYW50LWVycm9yXCIpO1xuY29uc3QgX3Byb21pc2V3aXRocmVzb2x2ZXJzID0gcmVxdWlyZShcIi4uLy4uL3NoYXJlZC9saWIvcHJvbWlzZS13aXRoLXJlc29sdmVyc1wiKTtcbnZhciBSZW5kZXJTdGFnZSA9IC8qI19fUFVSRV9fKi8gZnVuY3Rpb24oUmVuZGVyU3RhZ2UpIHtcbiAgICBSZW5kZXJTdGFnZVtSZW5kZXJTdGFnZVtcIkJlZm9yZVwiXSA9IDFdID0gXCJCZWZvcmVcIjtcbiAgICBSZW5kZXJTdGFnZVtSZW5kZXJTdGFnZVtcIkVhcmx5U3RhdGljXCJdID0gMl0gPSBcIkVhcmx5U3RhdGljXCI7XG4gICAgUmVuZGVyU3RhZ2VbUmVuZGVyU3RhZ2VbXCJTdGF0aWNcIl0gPSAzXSA9IFwiU3RhdGljXCI7XG4gICAgUmVuZGVyU3RhZ2VbUmVuZGVyU3RhZ2VbXCJFYXJseVJ1bnRpbWVcIl0gPSA0XSA9IFwiRWFybHlSdW50aW1lXCI7XG4gICAgUmVuZGVyU3RhZ2VbUmVuZGVyU3RhZ2VbXCJSdW50aW1lXCJdID0gNV0gPSBcIlJ1bnRpbWVcIjtcbiAgICBSZW5kZXJTdGFnZVtSZW5kZXJTdGFnZVtcIkR5bmFtaWNcIl0gPSA2XSA9IFwiRHluYW1pY1wiO1xuICAgIFJlbmRlclN0YWdlW1JlbmRlclN0YWdlW1wiQWJhbmRvbmVkXCJdID0gN10gPSBcIkFiYW5kb25lZFwiO1xuICAgIHJldHVybiBSZW5kZXJTdGFnZTtcbn0oe30pO1xuY2xhc3MgU3RhZ2VkUmVuZGVyaW5nQ29udHJvbGxlciB7XG4gICAgY29uc3RydWN0b3IoYWJvcnRTaWduYWwsIGFiYW5kb25Db250cm9sbGVyLCBzaG91bGRUcmFja1N5bmNJTyl7XG4gICAgICAgIHRoaXMuYWJvcnRTaWduYWwgPSBhYm9ydFNpZ25hbDtcbiAgICAgICAgdGhpcy5hYmFuZG9uQ29udHJvbGxlciA9IGFiYW5kb25Db250cm9sbGVyO1xuICAgICAgICB0aGlzLnNob3VsZFRyYWNrU3luY0lPID0gc2hvdWxkVHJhY2tTeW5jSU87XG4gICAgICAgIHRoaXMuY3VycmVudFN0YWdlID0gMTtcbiAgICAgICAgdGhpcy5zeW5jSW50ZXJydXB0UmVhc29uID0gbnVsbDtcbiAgICAgICAgdGhpcy5zdGF0aWNTdGFnZUVuZFRpbWUgPSBJbmZpbml0eTtcbiAgICAgICAgdGhpcy5ydW50aW1lU3RhZ2VFbmRUaW1lID0gSW5maW5pdHk7XG4gICAgICAgIHRoaXMuc3RhdGljU3RhZ2VMaXN0ZW5lcnMgPSBbXTtcbiAgICAgICAgdGhpcy5lYXJseVJ1bnRpbWVTdGFnZUxpc3RlbmVycyA9IFtdO1xuICAgICAgICB0aGlzLnJ1bnRpbWVTdGFnZUxpc3RlbmVycyA9IFtdO1xuICAgICAgICB0aGlzLmR5bmFtaWNTdGFnZUxpc3RlbmVycyA9IFtdO1xuICAgICAgICB0aGlzLnN0YXRpY1N0YWdlUHJvbWlzZSA9ICgwLCBfcHJvbWlzZXdpdGhyZXNvbHZlcnMuY3JlYXRlUHJvbWlzZVdpdGhSZXNvbHZlcnMpKCk7XG4gICAgICAgIHRoaXMuZWFybHlSdW50aW1lU3RhZ2VQcm9taXNlID0gKDAsIF9wcm9taXNld2l0aHJlc29sdmVycy5jcmVhdGVQcm9taXNlV2l0aFJlc29sdmVycykoKTtcbiAgICAgICAgdGhpcy5ydW50aW1lU3RhZ2VQcm9taXNlID0gKDAsIF9wcm9taXNld2l0aHJlc29sdmVycy5jcmVhdGVQcm9taXNlV2l0aFJlc29sdmVycykoKTtcbiAgICAgICAgdGhpcy5keW5hbWljU3RhZ2VQcm9taXNlID0gKDAsIF9wcm9taXNld2l0aHJlc29sdmVycy5jcmVhdGVQcm9taXNlV2l0aFJlc29sdmVycykoKTtcbiAgICAgICAgaWYgKGFib3J0U2lnbmFsKSB7XG4gICAgICAgICAgICBhYm9ydFNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsICgpPT57XG4gICAgICAgICAgICAgICAgLy8gUmVqZWN0IGFsbCBzdGFnZSBwcm9taXNlcyB0aGF0IGhhdmVuJ3QgYWxyZWFkeSBiZWVuIHJlc29sdmVkLlxuICAgICAgICAgICAgICAgIC8vIElmIGEgcHJvbWlzZSB3YXMgYWxyZWFkeSByZXNvbHZlZCB2aWEgYWR2YW5jZVN0YWdlLCB0aGUgcmVqZWN0XG4gICAgICAgICAgICAgICAgLy8gaXMgYSBuby1vcC4gVGhlIGlnbm9yZVJlamVjdCBoYW5kbGVyIHN1cHByZXNzZXMgdW5oYW5kbGVkXG4gICAgICAgICAgICAgICAgLy8gcmVqZWN0aW9uIHdhcm5pbmdzIGZvciBwcm9taXNlcyB0aGF0IG5vIG9uZSBpcyBhd2FpdGluZy5cbiAgICAgICAgICAgICAgICBjb25zdCB7IHJlYXNvbiB9ID0gYWJvcnRTaWduYWw7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0aWNTdGFnZVByb21pc2UucHJvbWlzZS5jYXRjaChpZ25vcmVSZWplY3QpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGljU3RhZ2VQcm9taXNlLnJlamVjdChyZWFzb24pO1xuICAgICAgICAgICAgICAgIHRoaXMuZWFybHlSdW50aW1lU3RhZ2VQcm9taXNlLnByb21pc2UuY2F0Y2goaWdub3JlUmVqZWN0KTtcbiAgICAgICAgICAgICAgICB0aGlzLmVhcmx5UnVudGltZVN0YWdlUHJvbWlzZS5yZWplY3QocmVhc29uKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJ1bnRpbWVTdGFnZVByb21pc2UucHJvbWlzZS5jYXRjaChpZ25vcmVSZWplY3QpO1xuICAgICAgICAgICAgICAgIHRoaXMucnVudGltZVN0YWdlUHJvbWlzZS5yZWplY3QocmVhc29uKTtcbiAgICAgICAgICAgICAgICB0aGlzLmR5bmFtaWNTdGFnZVByb21pc2UucHJvbWlzZS5jYXRjaChpZ25vcmVSZWplY3QpO1xuICAgICAgICAgICAgICAgIHRoaXMuZHluYW1pY1N0YWdlUHJvbWlzZS5yZWplY3QocmVhc29uKTtcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBvbmNlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWJhbmRvbkNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIGFiYW5kb25Db250cm9sbGVyLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsICgpPT57XG4gICAgICAgICAgICAgICAgdGhpcy5hYmFuZG9uUmVuZGVyKCk7XG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25TdGFnZShzdGFnZSwgY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFN0YWdlID49IHN0YWdlKSB7XG4gICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YWdlID09PSAzKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRpY1N0YWdlTGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YWdlID09PSA0KSB7XG4gICAgICAgICAgICB0aGlzLmVhcmx5UnVudGltZVN0YWdlTGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YWdlID09PSA1KSB7XG4gICAgICAgICAgICB0aGlzLnJ1bnRpbWVTdGFnZUxpc3RlbmVycy5wdXNoKGNhbGxiYWNrKTtcbiAgICAgICAgfSBlbHNlIGlmIChzdGFnZSA9PT0gNikge1xuICAgICAgICAgICAgdGhpcy5keW5hbWljU3RhZ2VMaXN0ZW5lcnMucHVzaChjYWxsYmFjayk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW5cbiAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKGBJbnZhbGlkIHJlbmRlciBzdGFnZTogJHtzdGFnZX1gKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiRTg4MVwiLFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2hvdWxkVHJhY2tTeW5jSW50ZXJydXB0KCkge1xuICAgICAgICBpZiAoIXRoaXMuc2hvdWxkVHJhY2tTeW5jSU8pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2godGhpcy5jdXJyZW50U3RhZ2Upe1xuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmVuJ3Qgc3RhcnRlZCB0aGUgcmVuZGVyIHlldCwgaXQgY2FuJ3QgYmUgaW50ZXJydXB0ZWQuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgIC8vIEVhcmx5UnVudGltZSBpcyBmb3IgcnVudGltZS1wcmVmZXRjaGFibGUgc2VnbWVudHMuIFN5bmMgSU9cbiAgICAgICAgICAgICAgICAvLyBzaG91bGQgZXJyb3IgYmVjYXVzZSBpdCB3b3VsZCBhYm9ydCBhIHJ1bnRpbWUgcHJlZmV0Y2guXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgLy8gUnVudGltZSBpcyBmb3Igbm9uLXByZWZldGNoYWJsZSBzZWdtZW50cy4gU3luYyBJTyBpcyBmaW5lIHRoZXJlXG4gICAgICAgICAgICAgICAgLy8gYmVjYXVzZSBpbiBwcmFjdGljZSB0aGlzIHNlZ21lbnQgd2lsbCBuZXZlciBiZSBydW50aW1lIHByZWZldGNoZWRcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3luY0ludGVycnVwdEN1cnJlbnRTdGFnZVdpdGhSZWFzb24ocmVhc29uKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRTdGFnZSA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIHRoZSByZW5kZXIgaGFzIGFscmVhZHkgYmVlbiBhYmFuZG9uZWQsIHRoZXJlJ3Mgbm90aGluZyB0byBpbnRlcnJ1cHQuXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRTdGFnZSA9PT0gNykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIFN5bmMgSU8gb2NjdXJzIGR1cmluZyBhbiBhYmFuZG9uYWJsZSByZW5kZXIsIHdlIHRyaWdnZXIgdGhlIGFiYW5kb24uXG4gICAgICAgIC8vIFRoZSBhYmFuZG9uIGxpc3RlbmVyIHdpbGwgY2FsbCBhYmFuZG9uUmVuZGVyIHdoaWNoIGFkdmFuY2VzIHRocm91Z2hcbiAgICAgICAgLy8gc3RhZ2VzIHRvIGxldCBjYWNoZXMgZmlsbCBiZWZvcmUgbWFya2luZyBhcyBBYmFuZG9uZWQuXG4gICAgICAgIGlmICh0aGlzLmFiYW5kb25Db250cm9sbGVyKSB7XG4gICAgICAgICAgICB0aGlzLmFiYW5kb25Db250cm9sbGVyLmFib3J0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYWJvcnRTaWduYWwpIHtcbiAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYW4gYWJvcnRhYmxlIHJlbmRlciwgd2UgY2FwdHVyZSB0aGUgaW50ZXJydXB0aW9uIHJlYXNvbiBhbmQgc3RvcCBhZHZhbmNpbmcuXG4gICAgICAgICAgICAvLyBXZSBkb24ndCByZWxlYXNlIGFueSBtb3JlIHByb21pc2VzLlxuICAgICAgICAgICAgLy8gVGhlIGNhbGxlciBpcyBleHBlY3RlZCB0byBhYm9ydCB0aGUgc2lnbmFsLlxuICAgICAgICAgICAgdGhpcy5zeW5jSW50ZXJydXB0UmVhc29uID0gcmVhc29uO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RhZ2UgPSA3O1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIHdlJ3JlIGluIGEgbm9uLWFiYW5kb25hYmxlICYgbm9uLWFib3J0YWJsZSByZW5kZXIsXG4gICAgICAgIC8vIHdlIG5lZWQgdG8gYWR2YW5jZSB0byB0aGUgRHluYW1pYyBzdGFnZSBhbmQgY2FwdHVyZSB0aGUgaW50ZXJydXB0aW9uIHJlYXNvbi5cbiAgICAgICAgLy8gKGluIGRldiwgdGhpcyB3aWxsIGJlIHRoZSByZXN0YXJ0ZWQgcmVuZGVyKVxuICAgICAgICBzd2l0Y2godGhpcy5jdXJyZW50U3RhZ2Upe1xuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRWFybHlSdW50aW1lIGlzIGZvciBydW50aW1lLXByZWZldGNoYWJsZSBzZWdtZW50cy4gU3luYyBJTyBoZXJlXG4gICAgICAgICAgICAgICAgICAgIC8vIG1lYW5zIHRoZSBwcmVmZXRjaCB3b3VsZCBiZSBhYm9ydGVkIHRvbyBlYXJseS5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zeW5jSW50ZXJydXB0UmVhc29uID0gcmVhc29uO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkdmFuY2VTdGFnZSg2KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNhblN5bmNJbnRlcnJ1cHQgcmV0dXJucyBmYWxzZSBmb3IgUnVudGltZSwgc28gd2Ugc2hvdWxkXG4gICAgICAgICAgICAgICAgICAgIC8vIG5ldmVyIGdldCBoZXJlLiBEZWZlbnNpdmUgbm8tb3AuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICB9XG4gICAgfVxuICAgIGdldFN5bmNJbnRlcnJ1cHRSZWFzb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN5bmNJbnRlcnJ1cHRSZWFzb247XG4gICAgfVxuICAgIGdldFN0YXRpY1N0YWdlRW5kVGltZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGljU3RhZ2VFbmRUaW1lO1xuICAgIH1cbiAgICBnZXRSdW50aW1lU3RhZ2VFbmRUaW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ydW50aW1lU3RhZ2VFbmRUaW1lO1xuICAgIH1cbiAgICBhYmFuZG9uUmVuZGVyKCkge1xuICAgICAgICAvLyBJbiBzdGFnZWQgcmVuZGVyaW5nLCBvbmx5IHRoZSBpbml0aWFsIHJlbmRlciBpcyBhYmFuZG9uYWJsZS5cbiAgICAgICAgLy8gV2UgY2FuIGFiYW5kb24gdGhlIGluaXRpYWwgcmVuZGVyIGlmXG4gICAgICAgIC8vICAgMS4gV2Ugbm90aWNlIGEgY2FjaGUgbWlzcywgYW5kIG5lZWQgdG8gd2FpdCBmb3IgY2FjaGVzIHRvIGZpbGxcbiAgICAgICAgLy8gICAyLiBBIHN5bmMgSU8gZXJyb3Igb2NjdXJzLCBhbmQgdGhlIHJlbmRlciBzaG91bGQgYmUgaW50ZXJydXB0ZWRcbiAgICAgICAgLy8gICAgICAodGhpcyBtaWdodCBiZSBhIGxhenkgaW50aXRpYWxpemF0aW9uIG9mIGEgbW9kdWxlLFxuICAgICAgICAvLyAgICAgICBzbyB3ZSBzdGlsbCB3YW50IHRvIHJlc3RhcnQgaW4gdGhpcyBjYXNlIGFuZCBzZWUgaWYgaXQgc3RpbGwgb2NjdXJzKVxuICAgICAgICAvLyBJbiBlaXRoZXIgY2FzZSwgd2UnbGwgYmUgZG9pbmcgYW5vdGhlciByZW5kZXIgYWZ0ZXIgdGhpcyBvbmUsXG4gICAgICAgIC8vIHNvIHdlIG9ubHkgd2FudCB0byB1bmJsb2NrIHRoZSBuZXh0IHN0YWdlLCBub3QgRHluYW1pYywgYmVjYXVzZVxuICAgICAgICAvLyB1bmJsb2NraW5nIHRoZSBkeW5hbWljIHN0YWdlIHdvdWxkIGxpa2VseSBsZWFkIHRvIHdhc3RlZCAodW5jYWNoZWQpIElPLlxuICAgICAgICBjb25zdCB7IGN1cnJlbnRTdGFnZSB9ID0gdGhpcztcbiAgICAgICAgc3dpdGNoKGN1cnJlbnRTdGFnZSl7XG4gICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc29sdmVTdGF0aWNTdGFnZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGludGVudGlvbmFsIGZhbGx0aHJvdWdoXG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc29sdmVFYXJseVJ1bnRpbWVTdGFnZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGludGVudGlvbmFsIGZhbGx0aHJvdWdoXG4gICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc29sdmVSdW50aW1lU3RhZ2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBpbnRlbnRpb25hbCBmYWxsdGhyb3VnaFxuICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RhZ2UgPSA3O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdGFnZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYWR2YW5jZVN0YWdlKHN0YWdlKSB7XG4gICAgICAgIC8vIElmIHdlJ3JlIGFscmVhZHkgYXQgdGhlIHRhcmdldCBzdGFnZSBvciBiZXlvbmQsIGRvIG5vdGhpbmcuXG4gICAgICAgIC8vICh0aGlzIGNhbiBoYXBwZW4gZS5nLiBpZiBzeW5jIElPIGFkdmFuY2VkIHVzIHRvIHRoZSBkeW5hbWljIHN0YWdlKVxuICAgICAgICBpZiAoc3RhZ2UgPD0gdGhpcy5jdXJyZW50U3RhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY3VycmVudFN0YWdlID0gdGhpcy5jdXJyZW50U3RhZ2U7XG4gICAgICAgIHRoaXMuY3VycmVudFN0YWdlID0gc3RhZ2U7XG4gICAgICAgIGlmIChjdXJyZW50U3RhZ2UgPCAzICYmIHN0YWdlID49IDMpIHtcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZVN0YXRpY1N0YWdlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN1cnJlbnRTdGFnZSA8IDQgJiYgc3RhZ2UgPj0gNCkge1xuICAgICAgICAgICAgdGhpcy5yZXNvbHZlRWFybHlSdW50aW1lU3RhZ2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3VycmVudFN0YWdlIDwgNSAmJiBzdGFnZSA+PSA1KSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRpY1N0YWdlRW5kVGltZSA9IHBlcmZvcm1hbmNlLm5vdygpICsgcGVyZm9ybWFuY2UudGltZU9yaWdpbjtcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZVJ1bnRpbWVTdGFnZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjdXJyZW50U3RhZ2UgPCA2ICYmIHN0YWdlID49IDYpIHtcbiAgICAgICAgICAgIHRoaXMucnVudGltZVN0YWdlRW5kVGltZSA9IHBlcmZvcm1hbmNlLm5vdygpICsgcGVyZm9ybWFuY2UudGltZU9yaWdpbjtcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZUR5bmFtaWNTdGFnZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKiBGaXJlIHRoZSBgb25TdGFnZWAgbGlzdGVuZXJzIGZvciB0aGUgc3RhdGljIHN0YWdlIGFuZCB1bmJsb2NrIGFueSBwcm9taXNlcyB3YWl0aW5nIGZvciBpdC4gKi8gcmVzb2x2ZVN0YXRpY1N0YWdlKCkge1xuICAgICAgICBjb25zdCBzdGF0aWNMaXN0ZW5lcnMgPSB0aGlzLnN0YXRpY1N0YWdlTGlzdGVuZXJzO1xuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgc3RhdGljTGlzdGVuZXJzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIHN0YXRpY0xpc3RlbmVyc1tpXSgpO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpY0xpc3RlbmVycy5sZW5ndGggPSAwO1xuICAgICAgICB0aGlzLnN0YXRpY1N0YWdlUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuICAgIC8qKiBGaXJlIHRoZSBgb25TdGFnZWAgbGlzdGVuZXJzIGZvciB0aGUgZWFybHkgcnVudGltZSBzdGFnZSBhbmQgdW5ibG9jayBhbnkgcHJvbWlzZXMgd2FpdGluZyBmb3IgaXQuICovIHJlc29sdmVFYXJseVJ1bnRpbWVTdGFnZSgpIHtcbiAgICAgICAgY29uc3QgZWFybHlSdW50aW1lTGlzdGVuZXJzID0gdGhpcy5lYXJseVJ1bnRpbWVTdGFnZUxpc3RlbmVycztcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGVhcmx5UnVudGltZUxpc3RlbmVycy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICBlYXJseVJ1bnRpbWVMaXN0ZW5lcnNbaV0oKTtcbiAgICAgICAgfVxuICAgICAgICBlYXJseVJ1bnRpbWVMaXN0ZW5lcnMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5lYXJseVJ1bnRpbWVTdGFnZVByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cbiAgICAvKiogRmlyZSB0aGUgYG9uU3RhZ2VgIGxpc3RlbmVycyBmb3IgdGhlIHJ1bnRpbWUgc3RhZ2UgYW5kIHVuYmxvY2sgYW55IHByb21pc2VzIHdhaXRpbmcgZm9yIGl0LiAqLyByZXNvbHZlUnVudGltZVN0YWdlKCkge1xuICAgICAgICBjb25zdCBydW50aW1lTGlzdGVuZXJzID0gdGhpcy5ydW50aW1lU3RhZ2VMaXN0ZW5lcnM7XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBydW50aW1lTGlzdGVuZXJzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIHJ1bnRpbWVMaXN0ZW5lcnNbaV0oKTtcbiAgICAgICAgfVxuICAgICAgICBydW50aW1lTGlzdGVuZXJzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMucnVudGltZVN0YWdlUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuICAgIC8qKiBGaXJlIHRoZSBgb25TdGFnZWAgbGlzdGVuZXJzIGZvciB0aGUgZHluYW1pYyBzdGFnZSBhbmQgdW5ibG9jayBhbnkgcHJvbWlzZXMgd2FpdGluZyBmb3IgaXQuICovIHJlc29sdmVEeW5hbWljU3RhZ2UoKSB7XG4gICAgICAgIGNvbnN0IGR5bmFtaWNMaXN0ZW5lcnMgPSB0aGlzLmR5bmFtaWNTdGFnZUxpc3RlbmVycztcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGR5bmFtaWNMaXN0ZW5lcnMubGVuZ3RoOyBpKyspe1xuICAgICAgICAgICAgZHluYW1pY0xpc3RlbmVyc1tpXSgpO1xuICAgICAgICB9XG4gICAgICAgIGR5bmFtaWNMaXN0ZW5lcnMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5keW5hbWljU3RhZ2VQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG4gICAgZ2V0U3RhZ2VQcm9taXNlKHN0YWdlKSB7XG4gICAgICAgIHN3aXRjaChzdGFnZSl7XG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdGF0aWNTdGFnZVByb21pc2UucHJvbWlzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lYXJseVJ1bnRpbWVTdGFnZVByb21pc2UucHJvbWlzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ydW50aW1lU3RhZ2VQcm9taXNlLnByb21pc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZHluYW1pY1N0YWdlUHJvbWlzZS5wcm9taXNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzdGFnZTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoYEludmFsaWQgcmVuZGVyIHN0YWdlOiAke3N0YWdlfWApLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU4ODFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICB3YWl0Rm9yU3RhZ2Uoc3RhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RhZ2VQcm9taXNlKHN0YWdlKTtcbiAgICB9XG4gICAgZGVsYXlVbnRpbFN0YWdlKHN0YWdlLCBkaXNwbGF5TmFtZSwgcmVzb2x2ZWRWYWx1ZSkge1xuICAgICAgICBjb25zdCBpb1RyaWdnZXJQcm9taXNlID0gdGhpcy5nZXRTdGFnZVByb21pc2Uoc3RhZ2UpO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gbWFrZURldnRvb2xzSU9Qcm9taXNlRnJvbUlPVHJpZ2dlcihpb1RyaWdnZXJQcm9taXNlLCBkaXNwbGF5TmFtZSwgcmVzb2x2ZWRWYWx1ZSk7XG4gICAgICAgIC8vIEFuYWxvZ291c2x5IHRvIGBtYWtlSGFuZ2luZ1Byb21pc2VgLCB3ZSBtaWdodCByZWplY3QgdGhpcyBwcm9taXNlIGlmIHRoZSBzaWduYWwgaXMgaW52b2tlZC5cbiAgICAgICAgLy8gKGUuZy4gaW4gdGhlIGNhc2Ugd2hlcmUgd2UgZG9uJ3Qgd2FudCB3YW50IHRoZSByZW5kZXIgdG8gcHJvY2VlZCB0byB0aGUgZHluYW1pYyBzdGFnZSBhbmQgYWJvcnQgaXQpLlxuICAgICAgICAvLyBXZSBzaG91bGRuJ3QgY29uc2lkZXIgdGhpcyBhbiB1bmhhbmRsZWQgcmVqZWN0aW9uLCBzbyB3ZSBhdHRhY2ggYSBub29wIGNhdGNoIGhhbmRsZXIgaGVyZSB0byBzdXBwcmVzcyB0aGlzIHdhcm5pbmcuXG4gICAgICAgIGlmICh0aGlzLmFib3J0U2lnbmFsKSB7XG4gICAgICAgICAgICBwcm9taXNlLmNhdGNoKGlnbm9yZVJlamVjdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxufVxuZnVuY3Rpb24gaWdub3JlUmVqZWN0KCkge31cbi8vIFRPRE8ocmVzdGFydC1vbi1jYWNoZS1taXNzKTogdGhlIGxheWVyaW5nIG9mIGBkZWxheVVudGlsU3RhZ2VgLFxuLy8gYG1ha2VEZXZ0b29sc0lPUHJvbWlzZUZyb21JT1RyaWdnZXJgIGFuZCBhbmQgYG1ha2VEZXZ0b29sc0lPQXdhcmVQcm9taXNlYFxuLy8gaXMgY29uZnVzaW5nLCB3ZSBzaG91bGQgY2xlYW4gaXQgdXAuXG5mdW5jdGlvbiBtYWtlRGV2dG9vbHNJT1Byb21pc2VGcm9tSU9UcmlnZ2VyKGlvVHJpZ2dlciwgZGlzcGxheU5hbWUsIHJlc29sdmVkVmFsdWUpIHtcbiAgICAvLyBJZiB3ZSBjcmVhdGUgYSBgbmV3IFByb21pc2VgIGFuZCBnaXZlIGl0IGEgZGlzcGxheU5hbWVcbiAgICAvLyAod2l0aCBubyB1c2Vyc3BhY2UgY29kZSBhYm92ZSB1cyBpbiB0aGUgc3RhY2spXG4gICAgLy8gUmVhY3QgRGV2dG9vbHMgd2lsbCB1c2UgaXQgYXMgdGhlIElPIGNhdXNlIHdoZW4gZGV0ZXJtaW5pbmcgXCJzdXNwZW5kZWQgYnlcIi5cbiAgICAvLyBJbiBwYXJ0aWN1bGFyLCBpdCBzaG91bGQgc2hhZG93IGFueSBpbm5lciBJTyB0aGF0IHJlc29sdmVkL3JlamVjdGVkIHRoZSBwcm9taXNlXG4gICAgLy8gKGluIGNhc2Ugb2Ygc3RhZ2VkIHJlbmRlcmluZywgdGhpcyB3aWxsIGJlIHRoZSBgc2V0VGltZW91dGAgdGhhdCB0cmlnZ2VycyB0aGUgcmVsZXZhbnQgc3RhZ2UpXG4gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57XG4gICAgICAgIGlvVHJpZ2dlci50aGVuKHJlc29sdmUuYmluZChudWxsLCByZXNvbHZlZFZhbHVlKSwgcmVqZWN0KTtcbiAgICB9KTtcbiAgICBpZiAoZGlzcGxheU5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgIHByb21pc2UuZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXN0YWdlZC1yZW5kZXJpbmcuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/staged-rendering.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/app-render/strip-flight-headers.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/app-render/strip-flight-headers.js ***!
|
||
\**************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"stripFlightHeaders\", ({\n enumerable: true,\n get: function() {\n return stripFlightHeaders;\n }\n}));\nconst _approuterheaders = __webpack_require__(/*! ../../client/components/app-router-headers */ \"(rsc)/./node_modules/next/dist/client/components/app-router-headers.js\");\nfunction stripFlightHeaders(headers) {\n for (const header of _approuterheaders.FLIGHT_HEADERS){\n delete headers[header];\n }\n}\n\n//# sourceMappingURL=strip-flight-headers.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL3N0cmlwLWZsaWdodC1oZWFkZXJzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0Ysc0RBQXFEO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsMEJBQTBCLG1CQUFPLENBQUMsMEhBQTRDO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL3N0cmlwLWZsaWdodC1oZWFkZXJzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwic3RyaXBGbGlnaHRIZWFkZXJzXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzdHJpcEZsaWdodEhlYWRlcnM7XG4gICAgfVxufSk7XG5jb25zdCBfYXBwcm91dGVyaGVhZGVycyA9IHJlcXVpcmUoXCIuLi8uLi9jbGllbnQvY29tcG9uZW50cy9hcHAtcm91dGVyLWhlYWRlcnNcIik7XG5mdW5jdGlvbiBzdHJpcEZsaWdodEhlYWRlcnMoaGVhZGVycykge1xuICAgIGZvciAoY29uc3QgaGVhZGVyIG9mIF9hcHByb3V0ZXJoZWFkZXJzLkZMSUdIVF9IRUFERVJTKXtcbiAgICAgICAgZGVsZXRlIGhlYWRlcnNbaGVhZGVyXTtcbiAgICB9XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXN0cmlwLWZsaWdodC1oZWFkZXJzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/strip-flight-headers.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/app-render/vary-params.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/app-render/vary-params.js ***!
|
||
\*****************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n accumulateRootVaryParam: function() {\n return accumulateRootVaryParam;\n },\n accumulateVaryParam: function() {\n return accumulateVaryParam;\n },\n createResponseVaryParamsAccumulator: function() {\n return createResponseVaryParamsAccumulator;\n },\n createVaryParamsAccumulator: function() {\n return createVaryParamsAccumulator;\n },\n createVaryingParams: function() {\n return createVaryingParams;\n },\n createVaryingSearchParams: function() {\n return createVaryingSearchParams;\n },\n emptyVaryParamsAccumulator: function() {\n return emptyVaryParamsAccumulator;\n },\n finishAccumulatingVaryParams: function() {\n return finishAccumulatingVaryParams;\n },\n getMetadataVaryParamsAccumulator: function() {\n return getMetadataVaryParamsAccumulator;\n },\n getMetadataVaryParamsThenable: function() {\n return getMetadataVaryParamsThenable;\n },\n getRootParamsVaryParamsAccumulator: function() {\n return getRootParamsVaryParamsAccumulator;\n },\n getVaryParamsThenable: function() {\n return getVaryParamsThenable;\n },\n getViewportVaryParamsAccumulator: function() {\n return getViewportVaryParamsAccumulator;\n }\n});\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ./work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nfunction createSegmentVaryParamsAccumulator() {\n const accumulator = {\n varyParams: new Set(),\n status: 'pending',\n value: new Set(),\n then (onfulfilled) {\n if (onfulfilled) {\n if (accumulator.status === 'pending') {\n accumulator.resolvers.push(onfulfilled);\n } else {\n onfulfilled(accumulator.value);\n }\n }\n },\n resolvers: []\n };\n return accumulator;\n}\n/**\n * A singleton accumulator that's already resolved to an empty Set. Use this for\n * segments where we know upfront that no params will be accessed, such as\n * client components or segments without user code.\n *\n * Benefits:\n * - No need to accumulate or resolve later\n * - Resilient: resolves correctly even if other tracking fails\n * - Memory efficient: reuses the same object\n */ const emptySet = new Set();\nconst emptyVaryParamsAccumulator = {\n varyParams: emptySet,\n status: 'fulfilled',\n value: emptySet,\n then (onfulfilled) {\n if (onfulfilled) {\n onfulfilled(emptySet);\n }\n },\n resolvers: []\n};\nfunction createResponseVaryParamsAccumulator() {\n // Create the head and rootParams accumulators as top-level fields.\n // Segment accumulators are added to the segments set as they are created.\n const head = createSegmentVaryParamsAccumulator();\n const rootParams = createSegmentVaryParamsAccumulator();\n const segments = new Set();\n return {\n head,\n rootParams,\n segments\n };\n}\nfunction createVaryParamsAccumulator() {\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-runtime':\n {\n const responseAccumulator = workUnitStore.varyParamsAccumulator;\n if (responseAccumulator !== null) {\n const accumulator = createSegmentVaryParamsAccumulator();\n responseAccumulator.segments.add(accumulator);\n return accumulator;\n }\n return null;\n }\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'prerender-client':\n case 'validation-client':\n case 'unstable-cache':\n case 'generate-static-params':\n break;\n default:\n workUnitStore;\n }\n }\n return null;\n}\nfunction getMetadataVaryParamsAccumulator() {\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-runtime':\n {\n const responseAccumulator = workUnitStore.varyParamsAccumulator;\n if (responseAccumulator !== null) {\n return responseAccumulator.head;\n }\n return null;\n }\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'prerender-client':\n case 'validation-client':\n case 'unstable-cache':\n case 'generate-static-params':\n return null;\n default:\n workUnitStore;\n }\n }\n return null;\n}\nfunction getVaryParamsThenable(accumulator) {\n return accumulator;\n}\nfunction getMetadataVaryParamsThenable() {\n const accumulator = getMetadataVaryParamsAccumulator();\n if (accumulator !== null) {\n return getVaryParamsThenable(accumulator);\n }\n return null;\n}\nconst getViewportVaryParamsAccumulator = getMetadataVaryParamsAccumulator;\nfunction getRootParamsVaryParamsAccumulator() {\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-runtime':\n {\n const responseAccumulator = workUnitStore.varyParamsAccumulator;\n if (responseAccumulator !== null) {\n return responseAccumulator.rootParams;\n }\n return null;\n }\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'prerender-client':\n case 'validation-client':\n case 'unstable-cache':\n case 'generate-static-params':\n return null;\n default:\n workUnitStore;\n }\n }\n return null;\n}\nfunction accumulateVaryParam(accumulator, paramName) {\n accumulator.varyParams.add(paramName);\n}\nfunction accumulateRootVaryParam(paramName) {\n const rootParamsAccumulator = getRootParamsVaryParamsAccumulator();\n if (rootParamsAccumulator !== null) {\n accumulateVaryParam(rootParamsAccumulator, paramName);\n }\n}\nfunction createVaryingParams(accumulator, originalParamsObject, optionalCatchAllParamName) {\n if (optionalCatchAllParamName !== null) {\n // When there's an optional catch-all param with no value (e.g.,\n // [[...slug]] at /), the param doesn't exist as a property on the params\n // object. Use a Proxy to track all param access — both existing params\n // and the missing optional param — including enumeration patterns like\n // Object.keys(), spread, for...in, and `in` checks.\n return new Proxy(originalParamsObject, {\n get (target, prop, receiver) {\n if (typeof prop === 'string') {\n if (prop === optionalCatchAllParamName || Object.prototype.hasOwnProperty.call(target, prop)) {\n accumulateVaryParam(accumulator, prop);\n }\n }\n return Reflect.get(target, prop, receiver);\n },\n has (target, prop) {\n if (prop === optionalCatchAllParamName) {\n accumulateVaryParam(accumulator, optionalCatchAllParamName);\n }\n return Reflect.has(target, prop);\n },\n ownKeys (target) {\n // Enumerating the params object means the user's code may depend on\n // which params are present, so conservatively track the optional\n // param as accessed.\n accumulateVaryParam(accumulator, optionalCatchAllParamName);\n return Reflect.ownKeys(target);\n }\n });\n }\n // When there's no optional catch-all, all params exist as properties on the\n // object, so we can use defineProperty getters instead of a Proxy. This is\n // faster because the engine can optimize property access on regular objects\n // more aggressively than Proxy trap calls.\n const underlyingParamsWithVarying = {};\n for(const paramName in originalParamsObject){\n Object.defineProperty(underlyingParamsWithVarying, paramName, {\n get () {\n accumulateVaryParam(accumulator, paramName);\n return originalParamsObject[paramName];\n },\n enumerable: true\n });\n }\n return underlyingParamsWithVarying;\n}\nfunction createVaryingSearchParams(accumulator, originalSearchParamsObject) {\n const underlyingSearchParamsWithVarying = {};\n for(const searchParamName in originalSearchParamsObject){\n Object.defineProperty(underlyingSearchParamsWithVarying, searchParamName, {\n get () {\n // TODO: Unlike path params, we don't vary track each search param\n // individually. The entire search string is treated as a single param.\n // This may change in the future.\n accumulateVaryParam(accumulator, '?');\n return originalSearchParamsObject[searchParamName];\n },\n enumerable: true\n });\n }\n return underlyingSearchParamsWithVarying;\n}\nasync function finishAccumulatingVaryParams(responseAccumulator) {\n const rootVaryParams = responseAccumulator.rootParams.varyParams;\n // Resolve head\n finishSegmentAccumulator(responseAccumulator.head, rootVaryParams);\n // Resolve each segment\n for (const segmentAccumulator of responseAccumulator.segments){\n finishSegmentAccumulator(segmentAccumulator, rootVaryParams);\n }\n // Now that the thenables are resolved, Flight should be able to flush the\n // vary params into the response stream. This work gets scheduled internally\n // by Flight using a microtask as soon as we notify the thenable listeners.\n //\n // We need to ensure that Flight's pending queues are emptied before this\n // function returns; the caller will abort the prerender immediately after.\n // We can't use a macrotask, because that would allow dynamic IO to sneak\n // into the response. So we use microtasks instead.\n //\n // The exact number of awaits here isn't important (indeed, one seems to be\n // sufficient, at the time of writing), as long as we wait enough ticks for\n // Flight to finish writing the response.\n //\n // Anything that remains in Flight's internal queue after these awaits must\n // be actual dynamic IO, not caused by pending vary params tasks. In other\n // words, failing to do this would cause us to treat a fully static prerender\n // as if it were partially dynamic.\n await Promise.resolve();\n await Promise.resolve();\n await Promise.resolve();\n}\nfunction finishSegmentAccumulator(accumulator, rootVaryParams) {\n if (accumulator.status !== 'pending') {\n return;\n }\n const merged = new Set(accumulator.varyParams);\n for (const param of rootVaryParams){\n merged.add(param);\n }\n accumulator.value = merged;\n accumulator.status = 'fulfilled';\n for (const resolver of accumulator.resolvers){\n resolver(merged);\n }\n accumulator.resolvers = [];\n}\n\n//# sourceMappingURL=vary-params.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL3ZhcnktcGFyYW1zLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQWNMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxzQ0FBc0MsbUJBQU8sQ0FBQyw4RUFBb0M7QUFDbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL2FwcC1yZW5kZXIvdmFyeS1wYXJhbXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBhY2N1bXVsYXRlUm9vdFZhcnlQYXJhbTogbnVsbCxcbiAgICBhY2N1bXVsYXRlVmFyeVBhcmFtOiBudWxsLFxuICAgIGNyZWF0ZVJlc3BvbnNlVmFyeVBhcmFtc0FjY3VtdWxhdG9yOiBudWxsLFxuICAgIGNyZWF0ZVZhcnlQYXJhbXNBY2N1bXVsYXRvcjogbnVsbCxcbiAgICBjcmVhdGVWYXJ5aW5nUGFyYW1zOiBudWxsLFxuICAgIGNyZWF0ZVZhcnlpbmdTZWFyY2hQYXJhbXM6IG51bGwsXG4gICAgZW1wdHlWYXJ5UGFyYW1zQWNjdW11bGF0b3I6IG51bGwsXG4gICAgZmluaXNoQWNjdW11bGF0aW5nVmFyeVBhcmFtczogbnVsbCxcbiAgICBnZXRNZXRhZGF0YVZhcnlQYXJhbXNBY2N1bXVsYXRvcjogbnVsbCxcbiAgICBnZXRNZXRhZGF0YVZhcnlQYXJhbXNUaGVuYWJsZTogbnVsbCxcbiAgICBnZXRSb290UGFyYW1zVmFyeVBhcmFtc0FjY3VtdWxhdG9yOiBudWxsLFxuICAgIGdldFZhcnlQYXJhbXNUaGVuYWJsZTogbnVsbCxcbiAgICBnZXRWaWV3cG9ydFZhcnlQYXJhbXNBY2N1bXVsYXRvcjogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBhY2N1bXVsYXRlUm9vdFZhcnlQYXJhbTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBhY2N1bXVsYXRlUm9vdFZhcnlQYXJhbTtcbiAgICB9LFxuICAgIGFjY3VtdWxhdGVWYXJ5UGFyYW06IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gYWNjdW11bGF0ZVZhcnlQYXJhbTtcbiAgICB9LFxuICAgIGNyZWF0ZVJlc3BvbnNlVmFyeVBhcmFtc0FjY3VtdWxhdG9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVJlc3BvbnNlVmFyeVBhcmFtc0FjY3VtdWxhdG9yO1xuICAgIH0sXG4gICAgY3JlYXRlVmFyeVBhcmFtc0FjY3VtdWxhdG9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVZhcnlQYXJhbXNBY2N1bXVsYXRvcjtcbiAgICB9LFxuICAgIGNyZWF0ZVZhcnlpbmdQYXJhbXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlVmFyeWluZ1BhcmFtcztcbiAgICB9LFxuICAgIGNyZWF0ZVZhcnlpbmdTZWFyY2hQYXJhbXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlVmFyeWluZ1NlYXJjaFBhcmFtcztcbiAgICB9LFxuICAgIGVtcHR5VmFyeVBhcmFtc0FjY3VtdWxhdG9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGVtcHR5VmFyeVBhcmFtc0FjY3VtdWxhdG9yO1xuICAgIH0sXG4gICAgZmluaXNoQWNjdW11bGF0aW5nVmFyeVBhcmFtczogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBmaW5pc2hBY2N1bXVsYXRpbmdWYXJ5UGFyYW1zO1xuICAgIH0sXG4gICAgZ2V0TWV0YWRhdGFWYXJ5UGFyYW1zQWNjdW11bGF0b3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZ2V0TWV0YWRhdGFWYXJ5UGFyYW1zQWNjdW11bGF0b3I7XG4gICAgfSxcbiAgICBnZXRNZXRhZGF0YVZhcnlQYXJhbXNUaGVuYWJsZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRNZXRhZGF0YVZhcnlQYXJhbXNUaGVuYWJsZTtcbiAgICB9LFxuICAgIGdldFJvb3RQYXJhbXNWYXJ5UGFyYW1zQWNjdW11bGF0b3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZ2V0Um9vdFBhcmFtc1ZhcnlQYXJhbXNBY2N1bXVsYXRvcjtcbiAgICB9LFxuICAgIGdldFZhcnlQYXJhbXNUaGVuYWJsZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRWYXJ5UGFyYW1zVGhlbmFibGU7XG4gICAgfSxcbiAgICBnZXRWaWV3cG9ydFZhcnlQYXJhbXNBY2N1bXVsYXRvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRWaWV3cG9ydFZhcnlQYXJhbXNBY2N1bXVsYXRvcjtcbiAgICB9XG59KTtcbmNvbnN0IF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsID0gcmVxdWlyZShcIi4vd29yay11bml0LWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWxcIik7XG5mdW5jdGlvbiBjcmVhdGVTZWdtZW50VmFyeVBhcmFtc0FjY3VtdWxhdG9yKCkge1xuICAgIGNvbnN0IGFjY3VtdWxhdG9yID0ge1xuICAgICAgICB2YXJ5UGFyYW1zOiBuZXcgU2V0KCksXG4gICAgICAgIHN0YXR1czogJ3BlbmRpbmcnLFxuICAgICAgICB2YWx1ZTogbmV3IFNldCgpLFxuICAgICAgICB0aGVuIChvbmZ1bGZpbGxlZCkge1xuICAgICAgICAgICAgaWYgKG9uZnVsZmlsbGVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKGFjY3VtdWxhdG9yLnN0YXR1cyA9PT0gJ3BlbmRpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yLnJlc29sdmVycy5wdXNoKG9uZnVsZmlsbGVkKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvbmZ1bGZpbGxlZChhY2N1bXVsYXRvci52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZXNvbHZlcnM6IFtdXG4gICAgfTtcbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG59XG4vKipcbiAqIEEgc2luZ2xldG9uIGFjY3VtdWxhdG9yIHRoYXQncyBhbHJlYWR5IHJlc29sdmVkIHRvIGFuIGVtcHR5IFNldC4gVXNlIHRoaXMgZm9yXG4gKiBzZWdtZW50cyB3aGVyZSB3ZSBrbm93IHVwZnJvbnQgdGhhdCBubyBwYXJhbXMgd2lsbCBiZSBhY2Nlc3NlZCwgc3VjaCBhc1xuICogY2xpZW50IGNvbXBvbmVudHMgb3Igc2VnbWVudHMgd2l0aG91dCB1c2VyIGNvZGUuXG4gKlxuICogQmVuZWZpdHM6XG4gKiAtIE5vIG5lZWQgdG8gYWNjdW11bGF0ZSBvciByZXNvbHZlIGxhdGVyXG4gKiAtIFJlc2lsaWVudDogcmVzb2x2ZXMgY29ycmVjdGx5IGV2ZW4gaWYgb3RoZXIgdHJhY2tpbmcgZmFpbHNcbiAqIC0gTWVtb3J5IGVmZmljaWVudDogcmV1c2VzIHRoZSBzYW1lIG9iamVjdFxuICovIGNvbnN0IGVtcHR5U2V0ID0gbmV3IFNldCgpO1xuY29uc3QgZW1wdHlWYXJ5UGFyYW1zQWNjdW11bGF0b3IgPSB7XG4gICAgdmFyeVBhcmFtczogZW1wdHlTZXQsXG4gICAgc3RhdHVzOiAnZnVsZmlsbGVkJyxcbiAgICB2YWx1ZTogZW1wdHlTZXQsXG4gICAgdGhlbiAob25mdWxmaWxsZWQpIHtcbiAgICAgICAgaWYgKG9uZnVsZmlsbGVkKSB7XG4gICAgICAgICAgICBvbmZ1bGZpbGxlZChlbXB0eVNldCk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHJlc29sdmVyczogW11cbn07XG5mdW5jdGlvbiBjcmVhdGVSZXNwb25zZVZhcnlQYXJhbXNBY2N1bXVsYXRvcigpIHtcbiAgICAvLyBDcmVhdGUgdGhlIGhlYWQgYW5kIHJvb3RQYXJhbXMgYWNjdW11bGF0b3JzIGFzIHRvcC1sZXZlbCBmaWVsZHMuXG4gICAgLy8gU2VnbWVudCBhY2N1bXVsYXRvcnMgYXJlIGFkZGVkIHRvIHRoZSBzZWdtZW50cyBzZXQgYXMgdGhleSBhcmUgY3JlYXRlZC5cbiAgICBjb25zdCBoZWFkID0gY3JlYXRlU2VnbWVudFZhcnlQYXJhbXNBY2N1bXVsYXRvcigpO1xuICAgIGNvbnN0IHJvb3RQYXJhbXMgPSBjcmVhdGVTZWdtZW50VmFyeVBhcmFtc0FjY3VtdWxhdG9yKCk7XG4gICAgY29uc3Qgc2VnbWVudHMgPSBuZXcgU2V0KCk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaGVhZCxcbiAgICAgICAgcm9vdFBhcmFtcyxcbiAgICAgICAgc2VnbWVudHNcbiAgICB9O1xufVxuZnVuY3Rpb24gY3JlYXRlVmFyeVBhcmFtc0FjY3VtdWxhdG9yKCkge1xuICAgIGNvbnN0IHdvcmtVbml0U3RvcmUgPSBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICh3b3JrVW5pdFN0b3JlKSB7XG4gICAgICAgIHN3aXRjaCh3b3JrVW5pdFN0b3JlLnR5cGUpe1xuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlQWNjdW11bGF0b3IgPSB3b3JrVW5pdFN0b3JlLnZhcnlQYXJhbXNBY2N1bXVsYXRvcjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlQWNjdW11bGF0b3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjY3VtdWxhdG9yID0gY3JlYXRlU2VnbWVudFZhcnlQYXJhbXNBY2N1bXVsYXRvcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VBY2N1bXVsYXRvci5zZWdtZW50cy5hZGQoYWNjdW11bGF0b3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgICAgICAgIGNhc2UgJ2NhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByaXZhdGUtY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWNsaWVudCc6XG4gICAgICAgICAgICBjYXNlICd2YWxpZGF0aW9uLWNsaWVudCc6XG4gICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICBjYXNlICdnZW5lcmF0ZS1zdGF0aWMtcGFyYW1zJzpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGdldE1ldGFkYXRhVmFyeVBhcmFtc0FjY3VtdWxhdG9yKCkge1xuICAgIGNvbnN0IHdvcmtVbml0U3RvcmUgPSBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICh3b3JrVW5pdFN0b3JlKSB7XG4gICAgICAgIHN3aXRjaCh3b3JrVW5pdFN0b3JlLnR5cGUpe1xuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlQWNjdW11bGF0b3IgPSB3b3JrVW5pdFN0b3JlLnZhcnlQYXJhbXNBY2N1bXVsYXRvcjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlQWNjdW11bGF0b3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZUFjY3VtdWxhdG9yLmhlYWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ3ZhbGlkYXRpb24tY2xpZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ2dlbmVyYXRlLXN0YXRpYy1wYXJhbXMnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB3b3JrVW5pdFN0b3JlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gZ2V0VmFyeVBhcmFtc1RoZW5hYmxlKGFjY3VtdWxhdG9yKSB7XG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xufVxuZnVuY3Rpb24gZ2V0TWV0YWRhdGFWYXJ5UGFyYW1zVGhlbmFibGUoKSB7XG4gICAgY29uc3QgYWNjdW11bGF0b3IgPSBnZXRNZXRhZGF0YVZhcnlQYXJhbXNBY2N1bXVsYXRvcigpO1xuICAgIGlmIChhY2N1bXVsYXRvciAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZ2V0VmFyeVBhcmFtc1RoZW5hYmxlKGFjY3VtdWxhdG9yKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5jb25zdCBnZXRWaWV3cG9ydFZhcnlQYXJhbXNBY2N1bXVsYXRvciA9IGdldE1ldGFkYXRhVmFyeVBhcmFtc0FjY3VtdWxhdG9yO1xuZnVuY3Rpb24gZ2V0Um9vdFBhcmFtc1ZhcnlQYXJhbXNBY2N1bXVsYXRvcigpIHtcbiAgICBjb25zdCB3b3JrVW5pdFN0b3JlID0gX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya1VuaXRBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgICAgICBzd2l0Y2god29ya1VuaXRTdG9yZS50eXBlKXtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZUFjY3VtdWxhdG9yID0gd29ya1VuaXRTdG9yZS52YXJ5UGFyYW1zQWNjdW11bGF0b3I7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZUFjY3VtdWxhdG9yICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2VBY2N1bXVsYXRvci5yb290UGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgICAgICAgIGNhc2UgJ2NhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByaXZhdGUtY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWNsaWVudCc6XG4gICAgICAgICAgICBjYXNlICd2YWxpZGF0aW9uLWNsaWVudCc6XG4gICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICBjYXNlICdnZW5lcmF0ZS1zdGF0aWMtcGFyYW1zJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGFjY3VtdWxhdGVWYXJ5UGFyYW0oYWNjdW11bGF0b3IsIHBhcmFtTmFtZSkge1xuICAgIGFjY3VtdWxhdG9yLnZhcnlQYXJhbXMuYWRkKHBhcmFtTmFtZSk7XG59XG5mdW5jdGlvbiBhY2N1bXVsYXRlUm9vdFZhcnlQYXJhbShwYXJhbU5hbWUpIHtcbiAgICBjb25zdCByb290UGFyYW1zQWNjdW11bGF0b3IgPSBnZXRSb290UGFyYW1zVmFyeVBhcmFtc0FjY3VtdWxhdG9yKCk7XG4gICAgaWYgKHJvb3RQYXJhbXNBY2N1bXVsYXRvciAhPT0gbnVsbCkge1xuICAgICAgICBhY2N1bXVsYXRlVmFyeVBhcmFtKHJvb3RQYXJhbXNBY2N1bXVsYXRvciwgcGFyYW1OYW1lKTtcbiAgICB9XG59XG5mdW5jdGlvbiBjcmVhdGVWYXJ5aW5nUGFyYW1zKGFjY3VtdWxhdG9yLCBvcmlnaW5hbFBhcmFtc09iamVjdCwgb3B0aW9uYWxDYXRjaEFsbFBhcmFtTmFtZSkge1xuICAgIGlmIChvcHRpb25hbENhdGNoQWxsUGFyYW1OYW1lICE9PSBudWxsKSB7XG4gICAgICAgIC8vIFdoZW4gdGhlcmUncyBhbiBvcHRpb25hbCBjYXRjaC1hbGwgcGFyYW0gd2l0aCBubyB2YWx1ZSAoZS5nLixcbiAgICAgICAgLy8gW1suLi5zbHVnXV0gYXQgLyksIHRoZSBwYXJhbSBkb2Vzbid0IGV4aXN0IGFzIGEgcHJvcGVydHkgb24gdGhlIHBhcmFtc1xuICAgICAgICAvLyBvYmplY3QuIFVzZSBhIFByb3h5IHRvIHRyYWNrIGFsbCBwYXJhbSBhY2Nlc3Mg4oCUIGJvdGggZXhpc3RpbmcgcGFyYW1zXG4gICAgICAgIC8vIGFuZCB0aGUgbWlzc2luZyBvcHRpb25hbCBwYXJhbSDigJQgaW5jbHVkaW5nIGVudW1lcmF0aW9uIHBhdHRlcm5zIGxpa2VcbiAgICAgICAgLy8gT2JqZWN0LmtleXMoKSwgc3ByZWFkLCBmb3IuLi5pbiwgYW5kIGBpbmAgY2hlY2tzLlxuICAgICAgICByZXR1cm4gbmV3IFByb3h5KG9yaWdpbmFsUGFyYW1zT2JqZWN0LCB7XG4gICAgICAgICAgICBnZXQgKHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wID09PSBvcHRpb25hbENhdGNoQWxsUGFyYW1OYW1lIHx8IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0YXJnZXQsIHByb3ApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRlVmFyeVBhcmFtKGFjY3VtdWxhdG9yLCBwcm9wKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGFzICh0YXJnZXQsIHByb3ApIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcCA9PT0gb3B0aW9uYWxDYXRjaEFsbFBhcmFtTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRlVmFyeVBhcmFtKGFjY3VtdWxhdG9yLCBvcHRpb25hbENhdGNoQWxsUGFyYW1OYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuaGFzKHRhcmdldCwgcHJvcCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3duS2V5cyAodGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgLy8gRW51bWVyYXRpbmcgdGhlIHBhcmFtcyBvYmplY3QgbWVhbnMgdGhlIHVzZXIncyBjb2RlIG1heSBkZXBlbmQgb25cbiAgICAgICAgICAgICAgICAvLyB3aGljaCBwYXJhbXMgYXJlIHByZXNlbnQsIHNvIGNvbnNlcnZhdGl2ZWx5IHRyYWNrIHRoZSBvcHRpb25hbFxuICAgICAgICAgICAgICAgIC8vIHBhcmFtIGFzIGFjY2Vzc2VkLlxuICAgICAgICAgICAgICAgIGFjY3VtdWxhdGVWYXJ5UGFyYW0oYWNjdW11bGF0b3IsIG9wdGlvbmFsQ2F0Y2hBbGxQYXJhbU5hbWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0Lm93bktleXModGFyZ2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8vIFdoZW4gdGhlcmUncyBubyBvcHRpb25hbCBjYXRjaC1hbGwsIGFsbCBwYXJhbXMgZXhpc3QgYXMgcHJvcGVydGllcyBvbiB0aGVcbiAgICAvLyBvYmplY3QsIHNvIHdlIGNhbiB1c2UgZGVmaW5lUHJvcGVydHkgZ2V0dGVycyBpbnN0ZWFkIG9mIGEgUHJveHkuIFRoaXMgaXNcbiAgICAvLyBmYXN0ZXIgYmVjYXVzZSB0aGUgZW5naW5lIGNhbiBvcHRpbWl6ZSBwcm9wZXJ0eSBhY2Nlc3Mgb24gcmVndWxhciBvYmplY3RzXG4gICAgLy8gbW9yZSBhZ2dyZXNzaXZlbHkgdGhhbiBQcm94eSB0cmFwIGNhbGxzLlxuICAgIGNvbnN0IHVuZGVybHlpbmdQYXJhbXNXaXRoVmFyeWluZyA9IHt9O1xuICAgIGZvcihjb25zdCBwYXJhbU5hbWUgaW4gb3JpZ2luYWxQYXJhbXNPYmplY3Qpe1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodW5kZXJseWluZ1BhcmFtc1dpdGhWYXJ5aW5nLCBwYXJhbU5hbWUsIHtcbiAgICAgICAgICAgIGdldCAoKSB7XG4gICAgICAgICAgICAgICAgYWNjdW11bGF0ZVZhcnlQYXJhbShhY2N1bXVsYXRvciwgcGFyYW1OYW1lKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxQYXJhbXNPYmplY3RbcGFyYW1OYW1lXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZXJseWluZ1BhcmFtc1dpdGhWYXJ5aW5nO1xufVxuZnVuY3Rpb24gY3JlYXRlVmFyeWluZ1NlYXJjaFBhcmFtcyhhY2N1bXVsYXRvciwgb3JpZ2luYWxTZWFyY2hQYXJhbXNPYmplY3QpIHtcbiAgICBjb25zdCB1bmRlcmx5aW5nU2VhcmNoUGFyYW1zV2l0aFZhcnlpbmcgPSB7fTtcbiAgICBmb3IoY29uc3Qgc2VhcmNoUGFyYW1OYW1lIGluIG9yaWdpbmFsU2VhcmNoUGFyYW1zT2JqZWN0KXtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHVuZGVybHlpbmdTZWFyY2hQYXJhbXNXaXRoVmFyeWluZywgc2VhcmNoUGFyYW1OYW1lLCB7XG4gICAgICAgICAgICBnZXQgKCkge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IFVubGlrZSBwYXRoIHBhcmFtcywgd2UgZG9uJ3QgdmFyeSB0cmFjayBlYWNoIHNlYXJjaCBwYXJhbVxuICAgICAgICAgICAgICAgIC8vIGluZGl2aWR1YWxseS4gVGhlIGVudGlyZSBzZWFyY2ggc3RyaW5nIGlzIHRyZWF0ZWQgYXMgYSBzaW5nbGUgcGFyYW0uXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG4gICAgICAgICAgICAgICAgYWNjdW11bGF0ZVZhcnlQYXJhbShhY2N1bXVsYXRvciwgJz8nKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxTZWFyY2hQYXJhbXNPYmplY3Rbc2VhcmNoUGFyYW1OYW1lXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZXJseWluZ1NlYXJjaFBhcmFtc1dpdGhWYXJ5aW5nO1xufVxuYXN5bmMgZnVuY3Rpb24gZmluaXNoQWNjdW11bGF0aW5nVmFyeVBhcmFtcyhyZXNwb25zZUFjY3VtdWxhdG9yKSB7XG4gICAgY29uc3Qgcm9vdFZhcnlQYXJhbXMgPSByZXNwb25zZUFjY3VtdWxhdG9yLnJvb3RQYXJhbXMudmFyeVBhcmFtcztcbiAgICAvLyBSZXNvbHZlIGhlYWRcbiAgICBmaW5pc2hTZWdtZW50QWNjdW11bGF0b3IocmVzcG9uc2VBY2N1bXVsYXRvci5oZWFkLCByb290VmFyeVBhcmFtcyk7XG4gICAgLy8gUmVzb2x2ZSBlYWNoIHNlZ21lbnRcbiAgICBmb3IgKGNvbnN0IHNlZ21lbnRBY2N1bXVsYXRvciBvZiByZXNwb25zZUFjY3VtdWxhdG9yLnNlZ21lbnRzKXtcbiAgICAgICAgZmluaXNoU2VnbWVudEFjY3VtdWxhdG9yKHNlZ21lbnRBY2N1bXVsYXRvciwgcm9vdFZhcnlQYXJhbXMpO1xuICAgIH1cbiAgICAvLyBOb3cgdGhhdCB0aGUgdGhlbmFibGVzIGFyZSByZXNvbHZlZCwgRmxpZ2h0IHNob3VsZCBiZSBhYmxlIHRvIGZsdXNoIHRoZVxuICAgIC8vIHZhcnkgcGFyYW1zIGludG8gdGhlIHJlc3BvbnNlIHN0cmVhbS4gVGhpcyB3b3JrIGdldHMgc2NoZWR1bGVkIGludGVybmFsbHlcbiAgICAvLyBieSBGbGlnaHQgdXNpbmcgYSBtaWNyb3Rhc2sgYXMgc29vbiBhcyB3ZSBub3RpZnkgdGhlIHRoZW5hYmxlIGxpc3RlbmVycy5cbiAgICAvL1xuICAgIC8vIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgRmxpZ2h0J3MgcGVuZGluZyBxdWV1ZXMgYXJlIGVtcHRpZWQgYmVmb3JlIHRoaXNcbiAgICAvLyBmdW5jdGlvbiByZXR1cm5zOyB0aGUgY2FsbGVyIHdpbGwgYWJvcnQgdGhlIHByZXJlbmRlciBpbW1lZGlhdGVseSBhZnRlci5cbiAgICAvLyBXZSBjYW4ndCB1c2UgYSBtYWNyb3Rhc2ssIGJlY2F1c2UgdGhhdCB3b3VsZCBhbGxvdyBkeW5hbWljIElPIHRvIHNuZWFrXG4gICAgLy8gaW50byB0aGUgcmVzcG9uc2UuIFNvIHdlIHVzZSBtaWNyb3Rhc2tzIGluc3RlYWQuXG4gICAgLy9cbiAgICAvLyBUaGUgZXhhY3QgbnVtYmVyIG9mIGF3YWl0cyBoZXJlIGlzbid0IGltcG9ydGFudCAoaW5kZWVkLCBvbmUgc2VlbXMgdG8gYmVcbiAgICAvLyBzdWZmaWNpZW50LCBhdCB0aGUgdGltZSBvZiB3cml0aW5nKSwgYXMgbG9uZyBhcyB3ZSB3YWl0IGVub3VnaCB0aWNrcyBmb3JcbiAgICAvLyBGbGlnaHQgdG8gZmluaXNoIHdyaXRpbmcgdGhlIHJlc3BvbnNlLlxuICAgIC8vXG4gICAgLy8gQW55dGhpbmcgdGhhdCByZW1haW5zIGluIEZsaWdodCdzIGludGVybmFsIHF1ZXVlIGFmdGVyIHRoZXNlIGF3YWl0cyBtdXN0XG4gICAgLy8gYmUgYWN0dWFsIGR5bmFtaWMgSU8sIG5vdCBjYXVzZWQgYnkgcGVuZGluZyB2YXJ5IHBhcmFtcyB0YXNrcy4gSW4gb3RoZXJcbiAgICAvLyB3b3JkcywgZmFpbGluZyB0byBkbyB0aGlzIHdvdWxkIGNhdXNlIHVzIHRvIHRyZWF0IGEgZnVsbHkgc3RhdGljIHByZXJlbmRlclxuICAgIC8vIGFzIGlmIGl0IHdlcmUgcGFydGlhbGx5IGR5bmFtaWMuXG4gICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCk7XG59XG5mdW5jdGlvbiBmaW5pc2hTZWdtZW50QWNjdW11bGF0b3IoYWNjdW11bGF0b3IsIHJvb3RWYXJ5UGFyYW1zKSB7XG4gICAgaWYgKGFjY3VtdWxhdG9yLnN0YXR1cyAhPT0gJ3BlbmRpbmcnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbWVyZ2VkID0gbmV3IFNldChhY2N1bXVsYXRvci52YXJ5UGFyYW1zKTtcbiAgICBmb3IgKGNvbnN0IHBhcmFtIG9mIHJvb3RWYXJ5UGFyYW1zKXtcbiAgICAgICAgbWVyZ2VkLmFkZChwYXJhbSk7XG4gICAgfVxuICAgIGFjY3VtdWxhdG9yLnZhbHVlID0gbWVyZ2VkO1xuICAgIGFjY3VtdWxhdG9yLnN0YXR1cyA9ICdmdWxmaWxsZWQnO1xuICAgIGZvciAoY29uc3QgcmVzb2x2ZXIgb2YgYWNjdW11bGF0b3IucmVzb2x2ZXJzKXtcbiAgICAgICAgcmVzb2x2ZXIobWVyZ2VkKTtcbiAgICB9XG4gICAgYWNjdW11bGF0b3IucmVzb2x2ZXJzID0gW107XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXZhcnktcGFyYW1zLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/vary-params.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/base-http/helpers.js":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/base-http/helpers.js ***!
|
||
\************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n isNodeNextRequest: function() {\n return isNodeNextRequest;\n },\n isNodeNextResponse: function() {\n return isNodeNextResponse;\n },\n isWebNextRequest: function() {\n return isWebNextRequest;\n },\n isWebNextResponse: function() {\n return isWebNextResponse;\n }\n});\nconst isWebNextRequest = (req)=>\"nodejs\" === 'edge';\nconst isWebNextResponse = (res)=>\"nodejs\" === 'edge';\nconst isNodeNextRequest = (req)=>\"nodejs\" !== 'edge';\nconst isNodeNextResponse = (res)=>\"nodejs\" !== 'edge';\n\n//# sourceMappingURL=helpers.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9iYXNlLWh0dHAvaGVscGVycy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FLTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsZ0NBQWdDLFFBQXdCO0FBQ3hELGlDQUFpQyxRQUF3QjtBQUN6RCxpQ0FBaUMsUUFBd0I7QUFDekQsa0NBQWtDLFFBQXdCOztBQUUxRCIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL2Jhc2UtaHR0cC9oZWxwZXJzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgaXNOb2RlTmV4dFJlcXVlc3Q6IG51bGwsXG4gICAgaXNOb2RlTmV4dFJlc3BvbnNlOiBudWxsLFxuICAgIGlzV2ViTmV4dFJlcXVlc3Q6IG51bGwsXG4gICAgaXNXZWJOZXh0UmVzcG9uc2U6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgaXNOb2RlTmV4dFJlcXVlc3Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaXNOb2RlTmV4dFJlcXVlc3Q7XG4gICAgfSxcbiAgICBpc05vZGVOZXh0UmVzcG9uc2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaXNOb2RlTmV4dFJlc3BvbnNlO1xuICAgIH0sXG4gICAgaXNXZWJOZXh0UmVxdWVzdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpc1dlYk5leHRSZXF1ZXN0O1xuICAgIH0sXG4gICAgaXNXZWJOZXh0UmVzcG9uc2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaXNXZWJOZXh0UmVzcG9uc2U7XG4gICAgfVxufSk7XG5jb25zdCBpc1dlYk5leHRSZXF1ZXN0ID0gKHJlcSk9PnByb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSA9PT0gJ2VkZ2UnO1xuY29uc3QgaXNXZWJOZXh0UmVzcG9uc2UgPSAocmVzKT0+cHJvY2Vzcy5lbnYuTkVYVF9SVU5USU1FID09PSAnZWRnZSc7XG5jb25zdCBpc05vZGVOZXh0UmVxdWVzdCA9IChyZXEpPT5wcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgIT09ICdlZGdlJztcbmNvbnN0IGlzTm9kZU5leHRSZXNwb25zZSA9IChyZXMpPT5wcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgIT09ICdlZGdlJztcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGVscGVycy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/base-http/helpers.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/base-http/index.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/next/dist/server/base-http/index.js ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n BaseNextRequest: function() {\n return BaseNextRequest;\n },\n BaseNextResponse: function() {\n return BaseNextResponse;\n }\n});\nconst _redirectstatuscode = __webpack_require__(/*! ../../client/components/redirect-status-code */ \"(rsc)/./node_modules/next/dist/client/components/redirect-status-code.js\");\nconst _getcookieparser = __webpack_require__(/*! ../api-utils/get-cookie-parser */ \"(rsc)/./node_modules/next/dist/server/api-utils/get-cookie-parser.js\");\nclass BaseNextRequest {\n constructor(method, url, body){\n this.method = method;\n this.url = url;\n this.body = body;\n }\n // Utils implemented using the abstract methods above\n get cookies() {\n if (this._cookies) return this._cookies;\n return this._cookies = (0, _getcookieparser.getCookieParser)(this.headers)();\n }\n}\nclass BaseNextResponse {\n constructor(destination){\n this.destination = destination;\n }\n // Utils implemented using the abstract methods above\n redirect(destination, statusCode) {\n this.setHeader('Location', destination);\n this.statusCode = statusCode;\n // Since IE11 doesn't support the 308 header add backwards\n // compatibility using refresh header\n if (statusCode === _redirectstatuscode.RedirectStatusCode.PermanentRedirect) {\n this.setHeader('Refresh', `0;url=${destination}`);\n }\n return this;\n }\n}\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9iYXNlLWh0dHAvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBR0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsNEJBQTRCLG1CQUFPLENBQUMsOEhBQThDO0FBQ2xGLHlCQUF5QixtQkFBTyxDQUFDLDRHQUFnQztBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLE1BQU0sWUFBWTtBQUMzRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL2Jhc2UtaHR0cC9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIEJhc2VOZXh0UmVxdWVzdDogbnVsbCxcbiAgICBCYXNlTmV4dFJlc3BvbnNlOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIEJhc2VOZXh0UmVxdWVzdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBCYXNlTmV4dFJlcXVlc3Q7XG4gICAgfSxcbiAgICBCYXNlTmV4dFJlc3BvbnNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEJhc2VOZXh0UmVzcG9uc2U7XG4gICAgfVxufSk7XG5jb25zdCBfcmVkaXJlY3RzdGF0dXNjb2RlID0gcmVxdWlyZShcIi4uLy4uL2NsaWVudC9jb21wb25lbnRzL3JlZGlyZWN0LXN0YXR1cy1jb2RlXCIpO1xuY29uc3QgX2dldGNvb2tpZXBhcnNlciA9IHJlcXVpcmUoXCIuLi9hcGktdXRpbHMvZ2V0LWNvb2tpZS1wYXJzZXJcIik7XG5jbGFzcyBCYXNlTmV4dFJlcXVlc3Qge1xuICAgIGNvbnN0cnVjdG9yKG1ldGhvZCwgdXJsLCBib2R5KXtcbiAgICAgICAgdGhpcy5tZXRob2QgPSBtZXRob2Q7XG4gICAgICAgIHRoaXMudXJsID0gdXJsO1xuICAgICAgICB0aGlzLmJvZHkgPSBib2R5O1xuICAgIH1cbiAgICAvLyBVdGlscyBpbXBsZW1lbnRlZCB1c2luZyB0aGUgYWJzdHJhY3QgbWV0aG9kcyBhYm92ZVxuICAgIGdldCBjb29raWVzKCkge1xuICAgICAgICBpZiAodGhpcy5fY29va2llcykgcmV0dXJuIHRoaXMuX2Nvb2tpZXM7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb29raWVzID0gKDAsIF9nZXRjb29raWVwYXJzZXIuZ2V0Q29va2llUGFyc2VyKSh0aGlzLmhlYWRlcnMpKCk7XG4gICAgfVxufVxuY2xhc3MgQmFzZU5leHRSZXNwb25zZSB7XG4gICAgY29uc3RydWN0b3IoZGVzdGluYXRpb24pe1xuICAgICAgICB0aGlzLmRlc3RpbmF0aW9uID0gZGVzdGluYXRpb247XG4gICAgfVxuICAgIC8vIFV0aWxzIGltcGxlbWVudGVkIHVzaW5nIHRoZSBhYnN0cmFjdCBtZXRob2RzIGFib3ZlXG4gICAgcmVkaXJlY3QoZGVzdGluYXRpb24sIHN0YXR1c0NvZGUpIHtcbiAgICAgICAgdGhpcy5zZXRIZWFkZXIoJ0xvY2F0aW9uJywgZGVzdGluYXRpb24pO1xuICAgICAgICB0aGlzLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuICAgICAgICAvLyBTaW5jZSBJRTExIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgMzA4IGhlYWRlciBhZGQgYmFja3dhcmRzXG4gICAgICAgIC8vIGNvbXBhdGliaWxpdHkgdXNpbmcgcmVmcmVzaCBoZWFkZXJcbiAgICAgICAgaWYgKHN0YXR1c0NvZGUgPT09IF9yZWRpcmVjdHN0YXR1c2NvZGUuUmVkaXJlY3RTdGF0dXNDb2RlLlBlcm1hbmVudFJlZGlyZWN0KSB7XG4gICAgICAgICAgICB0aGlzLnNldEhlYWRlcignUmVmcmVzaCcsIGAwO3VybD0ke2Rlc3RpbmF0aW9ufWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/base-http/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/base-http/node.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/next/dist/server/base-http/node.js ***!
|
||
\*********************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n NodeNextRequest: function() {\n return NodeNextRequest;\n },\n NodeNextResponse: function() {\n return NodeNextResponse;\n }\n});\nconst _apiutils = __webpack_require__(/*! ../api-utils */ \"(rsc)/./node_modules/next/dist/server/api-utils/index.js\");\nconst _requestmeta = __webpack_require__(/*! ../request-meta */ \"(rsc)/./node_modules/next/dist/server/request-meta.js\");\nconst _index = __webpack_require__(/*! ./index */ \"(rsc)/./node_modules/next/dist/server/base-http/index.js\");\nlet prop;\nclass NodeNextRequest extends _index.BaseNextRequest {\n static #_ = prop = _NEXT_REQUEST_META = _requestmeta.NEXT_REQUEST_META;\n constructor(_req){\n var _this__req;\n super(_req.method.toUpperCase(), _req.url, _req), this._req = _req, this.headers = this._req.headers, this.fetchMetrics = (_this__req = this._req) == null ? void 0 : _this__req.fetchMetrics, this[_NEXT_REQUEST_META] = this._req[_requestmeta.NEXT_REQUEST_META] || {}, this.streaming = false;\n }\n get originalRequest() {\n // Need to mimic these changes to the original req object for places where we use it:\n // render.tsx, api/ssg requests\n this._req[_requestmeta.NEXT_REQUEST_META] = this[_requestmeta.NEXT_REQUEST_META];\n this._req.url = this.url;\n this._req.cookies = this.cookies;\n return this._req;\n }\n set originalRequest(value) {\n this._req = value;\n }\n /**\n * Returns the request body as a Web Readable Stream. The body here can only\n * be read once as the body will start flowing as soon as the data handler\n * is attached.\n *\n * @internal\n */ stream() {\n if (this.streaming) {\n throw Object.defineProperty(new Error('Invariant: NodeNextRequest.stream() can only be called once'), \"__NEXT_ERROR_CODE\", {\n value: \"E467\",\n enumerable: false,\n configurable: true\n });\n }\n this.streaming = true;\n return new ReadableStream({\n start: (controller)=>{\n this._req.on('data', (chunk)=>{\n controller.enqueue(new Uint8Array(chunk));\n });\n this._req.on('end', ()=>{\n controller.close();\n });\n this._req.on('error', (err)=>{\n controller.error(err);\n });\n }\n });\n }\n}\nclass NodeNextResponse extends _index.BaseNextResponse {\n get originalResponse() {\n if (_apiutils.SYMBOL_CLEARED_COOKIES in this) {\n this._res[_apiutils.SYMBOL_CLEARED_COOKIES] = this[_apiutils.SYMBOL_CLEARED_COOKIES];\n }\n return this._res;\n }\n constructor(_res){\n super(_res), this._res = _res, this.textBody = undefined;\n }\n get sent() {\n return this._res.finished || this._res.headersSent;\n }\n get statusCode() {\n return this._res.statusCode;\n }\n set statusCode(value) {\n this._res.statusCode = value;\n }\n get statusMessage() {\n return this._res.statusMessage;\n }\n set statusMessage(value) {\n this._res.statusMessage = value;\n }\n setHeader(name, value) {\n this._res.setHeader(name, value);\n return this;\n }\n removeHeader(name) {\n this._res.removeHeader(name);\n return this;\n }\n getHeaderValues(name) {\n const values = this._res.getHeader(name);\n if (values === undefined) return undefined;\n return (Array.isArray(values) ? values : [\n values\n ]).map((value)=>value.toString());\n }\n hasHeader(name) {\n return this._res.hasHeader(name);\n }\n getHeader(name) {\n const values = this.getHeaderValues(name);\n return Array.isArray(values) ? values.join(',') : undefined;\n }\n getHeaders() {\n return this._res.getHeaders();\n }\n appendHeader(name, value) {\n const currentValues = this.getHeaderValues(name) ?? [];\n if (!currentValues.includes(value)) {\n this._res.setHeader(name, [\n ...currentValues,\n value\n ]);\n }\n return this;\n }\n body(value) {\n this.textBody = value;\n return this;\n }\n send() {\n this._res.end(this.textBody);\n }\n onClose(callback) {\n this.originalResponse.on('close', callback);\n }\n}\nvar _NEXT_REQUEST_META;\n\n//# sourceMappingURL=node.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9iYXNlLWh0dHAvbm9kZS5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FHTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxrQkFBa0IsbUJBQU8sQ0FBQyw4RUFBYztBQUN4QyxxQkFBcUIsbUJBQU8sQ0FBQyw4RUFBaUI7QUFDOUMsZUFBZSxtQkFBTyxDQUFDLHlFQUFTO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpUkFBaVI7QUFDalI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL2Jhc2UtaHR0cC9ub2RlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgTm9kZU5leHRSZXF1ZXN0OiBudWxsLFxuICAgIE5vZGVOZXh0UmVzcG9uc2U6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgTm9kZU5leHRSZXF1ZXN0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5vZGVOZXh0UmVxdWVzdDtcbiAgICB9LFxuICAgIE5vZGVOZXh0UmVzcG9uc2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTm9kZU5leHRSZXNwb25zZTtcbiAgICB9XG59KTtcbmNvbnN0IF9hcGl1dGlscyA9IHJlcXVpcmUoXCIuLi9hcGktdXRpbHNcIik7XG5jb25zdCBfcmVxdWVzdG1ldGEgPSByZXF1aXJlKFwiLi4vcmVxdWVzdC1tZXRhXCIpO1xuY29uc3QgX2luZGV4ID0gcmVxdWlyZShcIi4vaW5kZXhcIik7XG5sZXQgcHJvcDtcbmNsYXNzIE5vZGVOZXh0UmVxdWVzdCBleHRlbmRzIF9pbmRleC5CYXNlTmV4dFJlcXVlc3Qge1xuICAgIHN0YXRpYyAjXyA9IHByb3AgPSBfTkVYVF9SRVFVRVNUX01FVEEgPSBfcmVxdWVzdG1ldGEuTkVYVF9SRVFVRVNUX01FVEE7XG4gICAgY29uc3RydWN0b3IoX3JlcSl7XG4gICAgICAgIHZhciBfdGhpc19fcmVxO1xuICAgICAgICBzdXBlcihfcmVxLm1ldGhvZC50b1VwcGVyQ2FzZSgpLCBfcmVxLnVybCwgX3JlcSksIHRoaXMuX3JlcSA9IF9yZXEsIHRoaXMuaGVhZGVycyA9IHRoaXMuX3JlcS5oZWFkZXJzLCB0aGlzLmZldGNoTWV0cmljcyA9IChfdGhpc19fcmVxID0gdGhpcy5fcmVxKSA9PSBudWxsID8gdm9pZCAwIDogX3RoaXNfX3JlcS5mZXRjaE1ldHJpY3MsIHRoaXNbX05FWFRfUkVRVUVTVF9NRVRBXSA9IHRoaXMuX3JlcVtfcmVxdWVzdG1ldGEuTkVYVF9SRVFVRVNUX01FVEFdIHx8IHt9LCB0aGlzLnN0cmVhbWluZyA9IGZhbHNlO1xuICAgIH1cbiAgICBnZXQgb3JpZ2luYWxSZXF1ZXN0KCkge1xuICAgICAgICAvLyBOZWVkIHRvIG1pbWljIHRoZXNlIGNoYW5nZXMgdG8gdGhlIG9yaWdpbmFsIHJlcSBvYmplY3QgZm9yIHBsYWNlcyB3aGVyZSB3ZSB1c2UgaXQ6XG4gICAgICAgIC8vIHJlbmRlci50c3gsIGFwaS9zc2cgcmVxdWVzdHNcbiAgICAgICAgdGhpcy5fcmVxW19yZXF1ZXN0bWV0YS5ORVhUX1JFUVVFU1RfTUVUQV0gPSB0aGlzW19yZXF1ZXN0bWV0YS5ORVhUX1JFUVVFU1RfTUVUQV07XG4gICAgICAgIHRoaXMuX3JlcS51cmwgPSB0aGlzLnVybDtcbiAgICAgICAgdGhpcy5fcmVxLmNvb2tpZXMgPSB0aGlzLmNvb2tpZXM7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXE7XG4gICAgfVxuICAgIHNldCBvcmlnaW5hbFJlcXVlc3QodmFsdWUpIHtcbiAgICAgICAgdGhpcy5fcmVxID0gdmFsdWU7XG4gICAgfVxuICAgIC8qKlxuICAgKiBSZXR1cm5zIHRoZSByZXF1ZXN0IGJvZHkgYXMgYSBXZWIgUmVhZGFibGUgU3RyZWFtLiBUaGUgYm9keSBoZXJlIGNhbiBvbmx5XG4gICAqIGJlIHJlYWQgb25jZSBhcyB0aGUgYm9keSB3aWxsIHN0YXJ0IGZsb3dpbmcgYXMgc29vbiBhcyB0aGUgZGF0YSBoYW5kbGVyXG4gICAqIGlzIGF0dGFjaGVkLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovIHN0cmVhbSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc3RyZWFtaW5nKSB7XG4gICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKCdJbnZhcmlhbnQ6IE5vZGVOZXh0UmVxdWVzdC5zdHJlYW0oKSBjYW4gb25seSBiZSBjYWxsZWQgb25jZScpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNDY3XCIsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0cmVhbWluZyA9IHRydWU7XG4gICAgICAgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe1xuICAgICAgICAgICAgc3RhcnQ6IChjb250cm9sbGVyKT0+e1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlcS5vbignZGF0YScsIChjaHVuayk9PntcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KGNodW5rKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVxLm9uKCdlbmQnLCAoKT0+e1xuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVxLm9uKCdlcnJvcicsIChlcnIpPT57XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuY2xhc3MgTm9kZU5leHRSZXNwb25zZSBleHRlbmRzIF9pbmRleC5CYXNlTmV4dFJlc3BvbnNlIHtcbiAgICBnZXQgb3JpZ2luYWxSZXNwb25zZSgpIHtcbiAgICAgICAgaWYgKF9hcGl1dGlscy5TWU1CT0xfQ0xFQVJFRF9DT09LSUVTIGluIHRoaXMpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc1tfYXBpdXRpbHMuU1lNQk9MX0NMRUFSRURfQ09PS0lFU10gPSB0aGlzW19hcGl1dGlscy5TWU1CT0xfQ0xFQVJFRF9DT09LSUVTXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fcmVzO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihfcmVzKXtcbiAgICAgICAgc3VwZXIoX3JlcyksIHRoaXMuX3JlcyA9IF9yZXMsIHRoaXMudGV4dEJvZHkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGdldCBzZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzLmZpbmlzaGVkIHx8IHRoaXMuX3Jlcy5oZWFkZXJzU2VudDtcbiAgICB9XG4gICAgZ2V0IHN0YXR1c0NvZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXMuc3RhdHVzQ29kZTtcbiAgICB9XG4gICAgc2V0IHN0YXR1c0NvZGUodmFsdWUpIHtcbiAgICAgICAgdGhpcy5fcmVzLnN0YXR1c0NvZGUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IHN0YXR1c01lc3NhZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXMuc3RhdHVzTWVzc2FnZTtcbiAgICB9XG4gICAgc2V0IHN0YXR1c01lc3NhZ2UodmFsdWUpIHtcbiAgICAgICAgdGhpcy5fcmVzLnN0YXR1c01lc3NhZ2UgPSB2YWx1ZTtcbiAgICB9XG4gICAgc2V0SGVhZGVyKG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX3Jlcy5zZXRIZWFkZXIobmFtZSwgdmFsdWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgcmVtb3ZlSGVhZGVyKG5hbWUpIHtcbiAgICAgICAgdGhpcy5fcmVzLnJlbW92ZUhlYWRlcihuYW1lKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIGdldEhlYWRlclZhbHVlcyhuYW1lKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuX3Jlcy5nZXRIZWFkZXIobmFtZSk7XG4gICAgICAgIGlmICh2YWx1ZXMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIChBcnJheS5pc0FycmF5KHZhbHVlcykgPyB2YWx1ZXMgOiBbXG4gICAgICAgICAgICB2YWx1ZXNcbiAgICAgICAgXSkubWFwKCh2YWx1ZSk9PnZhbHVlLnRvU3RyaW5nKCkpO1xuICAgIH1cbiAgICBoYXNIZWFkZXIobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzLmhhc0hlYWRlcihuYW1lKTtcbiAgICB9XG4gICAgZ2V0SGVhZGVyKG5hbWUpIHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy5nZXRIZWFkZXJWYWx1ZXMobmFtZSk7XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlcykgPyB2YWx1ZXMuam9pbignLCcpIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICBnZXRIZWFkZXJzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzLmdldEhlYWRlcnMoKTtcbiAgICB9XG4gICAgYXBwZW5kSGVhZGVyKG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZXMgPSB0aGlzLmdldEhlYWRlclZhbHVlcyhuYW1lKSA/PyBbXTtcbiAgICAgICAgaWYgKCFjdXJyZW50VmFsdWVzLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5fcmVzLnNldEhlYWRlcihuYW1lLCBbXG4gICAgICAgICAgICAgICAgLi4uY3VycmVudFZhbHVlcyxcbiAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIGJvZHkodmFsdWUpIHtcbiAgICAgICAgdGhpcy50ZXh0Qm9keSA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgc2VuZCgpIHtcbiAgICAgICAgdGhpcy5fcmVzLmVuZCh0aGlzLnRleHRCb2R5KTtcbiAgICB9XG4gICAgb25DbG9zZShjYWxsYmFjaykge1xuICAgICAgICB0aGlzLm9yaWdpbmFsUmVzcG9uc2Uub24oJ2Nsb3NlJywgY2FsbGJhY2spO1xuICAgIH1cbn1cbnZhciBfTkVYVF9SRVFVRVNUX01FVEE7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW5vZGUuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/base-http/node.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/client-component-renderer-logger.js":
|
||
/*!***************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/client-component-renderer-logger.js ***!
|
||
\***************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getClientComponentLoaderMetrics: function() {\n return getClientComponentLoaderMetrics;\n },\n wrapClientComponentLoader: function() {\n return wrapClientComponentLoader;\n }\n});\n// Combined load times for loading client components\nlet clientComponentLoadStart = 0;\nlet clientComponentLoadTimes = 0;\nlet clientComponentLoadCount = 0;\nfunction wrapClientComponentLoader(ComponentMod) {\n if (!('performance' in globalThis)) {\n return ComponentMod.__next_app__;\n }\n return {\n require: (...args)=>{\n const startTime = performance.now();\n if (clientComponentLoadStart === 0) {\n clientComponentLoadStart = startTime;\n }\n try {\n clientComponentLoadCount += 1;\n return ComponentMod.__next_app__.require(...args);\n } finally{\n clientComponentLoadTimes += performance.now() - startTime;\n }\n },\n loadChunk: (...args)=>{\n const startTime = performance.now();\n const result = ComponentMod.__next_app__.loadChunk(...args);\n // Avoid wrapping `loadChunk`'s result in an extra promise in case something like React depends on its identity.\n // We only need to know when it's settled.\n result.finally(()=>{\n clientComponentLoadTimes += performance.now() - startTime;\n });\n return result;\n }\n };\n}\nfunction getClientComponentLoaderMetrics(options = {}) {\n const metrics = clientComponentLoadStart === 0 ? undefined : {\n clientComponentLoadStart,\n clientComponentLoadTimes,\n clientComponentLoadCount\n };\n if (options.reset) {\n clientComponentLoadStart = 0;\n clientComponentLoadTimes = 0;\n clientComponentLoadCount = 0;\n }\n return metrics;\n}\n\n//# sourceMappingURL=client-component-renderer-logger.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9jbGllbnQtY29tcG9uZW50LXJlbmRlcmVyLWxvZ2dlci5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FHTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQ7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvY2xpZW50LWNvbXBvbmVudC1yZW5kZXJlci1sb2dnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBnZXRDbGllbnRDb21wb25lbnRMb2FkZXJNZXRyaWNzOiBudWxsLFxuICAgIHdyYXBDbGllbnRDb21wb25lbnRMb2FkZXI6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgZ2V0Q2xpZW50Q29tcG9uZW50TG9hZGVyTWV0cmljczogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRDbGllbnRDb21wb25lbnRMb2FkZXJNZXRyaWNzO1xuICAgIH0sXG4gICAgd3JhcENsaWVudENvbXBvbmVudExvYWRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB3cmFwQ2xpZW50Q29tcG9uZW50TG9hZGVyO1xuICAgIH1cbn0pO1xuLy8gQ29tYmluZWQgbG9hZCB0aW1lcyBmb3IgbG9hZGluZyBjbGllbnQgY29tcG9uZW50c1xubGV0IGNsaWVudENvbXBvbmVudExvYWRTdGFydCA9IDA7XG5sZXQgY2xpZW50Q29tcG9uZW50TG9hZFRpbWVzID0gMDtcbmxldCBjbGllbnRDb21wb25lbnRMb2FkQ291bnQgPSAwO1xuZnVuY3Rpb24gd3JhcENsaWVudENvbXBvbmVudExvYWRlcihDb21wb25lbnRNb2QpIHtcbiAgICBpZiAoISgncGVyZm9ybWFuY2UnIGluIGdsb2JhbFRoaXMpKSB7XG4gICAgICAgIHJldHVybiBDb21wb25lbnRNb2QuX19uZXh0X2FwcF9fO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICByZXF1aXJlOiAoLi4uYXJncyk9PntcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgICAgICAgICAgaWYgKGNsaWVudENvbXBvbmVudExvYWRTdGFydCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGNsaWVudENvbXBvbmVudExvYWRTdGFydCA9IHN0YXJ0VGltZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY2xpZW50Q29tcG9uZW50TG9hZENvdW50ICs9IDE7XG4gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBvbmVudE1vZC5fX25leHRfYXBwX18ucmVxdWlyZSguLi5hcmdzKTtcbiAgICAgICAgICAgIH0gZmluYWxseXtcbiAgICAgICAgICAgICAgICBjbGllbnRDb21wb25lbnRMb2FkVGltZXMgKz0gcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFRpbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGxvYWRDaHVuazogKC4uLmFyZ3MpPT57XG4gICAgICAgICAgICBjb25zdCBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IENvbXBvbmVudE1vZC5fX25leHRfYXBwX18ubG9hZENodW5rKC4uLmFyZ3MpO1xuICAgICAgICAgICAgLy8gQXZvaWQgd3JhcHBpbmcgYGxvYWRDaHVua2AncyByZXN1bHQgaW4gYW4gZXh0cmEgcHJvbWlzZSBpbiBjYXNlIHNvbWV0aGluZyBsaWtlIFJlYWN0IGRlcGVuZHMgb24gaXRzIGlkZW50aXR5LlxuICAgICAgICAgICAgLy8gV2Ugb25seSBuZWVkIHRvIGtub3cgd2hlbiBpdCdzIHNldHRsZWQuXG4gICAgICAgICAgICByZXN1bHQuZmluYWxseSgoKT0+e1xuICAgICAgICAgICAgICAgIGNsaWVudENvbXBvbmVudExvYWRUaW1lcyArPSBwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgIH07XG59XG5mdW5jdGlvbiBnZXRDbGllbnRDb21wb25lbnRMb2FkZXJNZXRyaWNzKG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IG1ldHJpY3MgPSBjbGllbnRDb21wb25lbnRMb2FkU3RhcnQgPT09IDAgPyB1bmRlZmluZWQgOiB7XG4gICAgICAgIGNsaWVudENvbXBvbmVudExvYWRTdGFydCxcbiAgICAgICAgY2xpZW50Q29tcG9uZW50TG9hZFRpbWVzLFxuICAgICAgICBjbGllbnRDb21wb25lbnRMb2FkQ291bnRcbiAgICB9O1xuICAgIGlmIChvcHRpb25zLnJlc2V0KSB7XG4gICAgICAgIGNsaWVudENvbXBvbmVudExvYWRTdGFydCA9IDA7XG4gICAgICAgIGNsaWVudENvbXBvbmVudExvYWRUaW1lcyA9IDA7XG4gICAgICAgIGNsaWVudENvbXBvbmVudExvYWRDb3VudCA9IDA7XG4gICAgfVxuICAgIHJldHVybiBtZXRyaWNzO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1jbGllbnQtY29tcG9uZW50LXJlbmRlcmVyLWxvZ2dlci5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/client-component-renderer-logger.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js":
|
||
/*!*****************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js ***!
|
||
\*****************************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createDedupedByCallsiteServerErrorLoggerDev\", ({\n enumerable: true,\n get: function() {\n return createDedupedByCallsiteServerErrorLoggerDev;\n }\n}));\nconst _react = /*#__PURE__*/ _interop_require_wildcard(__webpack_require__(/*! react */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js\"));\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {\n __proto__: null\n };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nconst errorRef = {\n current: null\n};\n// React.cache is currently only available in canary/experimental React channels.\nconst cache = typeof _react.cache === 'function' ? _react.cache : (fn)=>fn;\n// When Cache Components is enabled, we record these as errors so that they\n// are captured by the dev overlay as it's more critical to fix these\n// when enabled.\nconst logErrorOrWarn = false ? 0 : console.warn;\n// We don't want to dedupe across requests.\n// The developer might've just attempted to fix the warning so we should warn again if it still happens.\nconst flushCurrentErrorIfNew = cache(// eslint-disable-next-line @typescript-eslint/no-unused-vars -- cache key\n(key)=>{\n try {\n logErrorOrWarn(errorRef.current);\n } finally{\n errorRef.current = null;\n }\n});\nfunction createDedupedByCallsiteServerErrorLoggerDev(getMessage) {\n return function logDedupedError(...args) {\n const message = getMessage(...args);\n if (true) {\n var _stack;\n const callStackFrames = (_stack = new Error().stack) == null ? void 0 : _stack.split('\\n');\n if (callStackFrames === undefined || callStackFrames.length < 4) {\n logErrorOrWarn(message);\n } else {\n // Error:\n // logDedupedError\n // asyncApiBeingAccessedSynchronously\n // <userland callsite>\n // TODO: This breaks if sourcemaps with ignore lists are enabled.\n const key = callStackFrames[4];\n errorRef.current = message;\n flushCurrentErrorIfNew(key);\n }\n } else {}\n };\n}\n\n//# sourceMappingURL=create-deduped-by-callsite-server-error-logger.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9jcmVhdGUtZGVkdXBlZC1ieS1jYWxsc2l0ZS1zZXJ2ZXItZXJyb3ItbG9nZ2VyLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsK0VBQThFO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsdURBQXVELG1CQUFPLENBQUMsaUdBQU87QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLE1BQW1DLEdBQUcsQ0FBYTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxZQUFZLElBQXFDO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsS0FBSyxFQUVOO0FBQ1Q7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL2NyZWF0ZS1kZWR1cGVkLWJ5LWNhbGxzaXRlLXNlcnZlci1lcnJvci1sb2dnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJjcmVhdGVEZWR1cGVkQnlDYWxsc2l0ZVNlcnZlckVycm9yTG9nZ2VyRGV2XCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVEZWR1cGVkQnlDYWxsc2l0ZVNlcnZlckVycm9yTG9nZ2VyRGV2O1xuICAgIH1cbn0pO1xuY29uc3QgX3JlYWN0ID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHtcbiAgICBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7XG4gICAgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTtcbiAgICB2YXIgY2FjaGVOb2RlSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7XG4gICAgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbihub2RlSW50ZXJvcCkge1xuICAgICAgICByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7XG4gICAgfSkobm9kZUludGVyb3ApO1xufVxuZnVuY3Rpb24gX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7XG4gICAgaWYgKCFub2RlSW50ZXJvcCAmJiBvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgICAgIH07XG4gICAgfVxuICAgIHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCk7XG4gICAgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7XG4gICAgICAgIHJldHVybiBjYWNoZS5nZXQob2JqKTtcbiAgICB9XG4gICAgdmFyIG5ld09iaiA9IHtcbiAgICAgICAgX19wcm90b19fOiBudWxsXG4gICAgfTtcbiAgICB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICAgZm9yKHZhciBrZXkgaW4gb2JqKXtcbiAgICAgICAgaWYgKGtleSAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICAgICAgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7XG4gICAgICAgICAgICBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3T2JqW2tleV0gPSBvYmpba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBuZXdPYmouZGVmYXVsdCA9IG9iajtcbiAgICBpZiAoY2FjaGUpIHtcbiAgICAgICAgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld09iajtcbn1cbmNvbnN0IGVycm9yUmVmID0ge1xuICAgIGN1cnJlbnQ6IG51bGxcbn07XG4vLyBSZWFjdC5jYWNoZSBpcyBjdXJyZW50bHkgb25seSBhdmFpbGFibGUgaW4gY2FuYXJ5L2V4cGVyaW1lbnRhbCBSZWFjdCBjaGFubmVscy5cbmNvbnN0IGNhY2hlID0gdHlwZW9mIF9yZWFjdC5jYWNoZSA9PT0gJ2Z1bmN0aW9uJyA/IF9yZWFjdC5jYWNoZSA6IChmbik9PmZuO1xuLy8gV2hlbiBDYWNoZSBDb21wb25lbnRzIGlzIGVuYWJsZWQsIHdlIHJlY29yZCB0aGVzZSBhcyBlcnJvcnMgc28gdGhhdCB0aGV5XG4vLyBhcmUgY2FwdHVyZWQgYnkgdGhlIGRldiBvdmVybGF5IGFzIGl0J3MgbW9yZSBjcml0aWNhbCB0byBmaXggdGhlc2Vcbi8vIHdoZW4gZW5hYmxlZC5cbmNvbnN0IGxvZ0Vycm9yT3JXYXJuID0gcHJvY2Vzcy5lbnYuX19ORVhUX0NBQ0hFX0NPTVBPTkVOVFMgPyBjb25zb2xlLmVycm9yIDogY29uc29sZS53YXJuO1xuLy8gV2UgZG9uJ3Qgd2FudCB0byBkZWR1cGUgYWNyb3NzIHJlcXVlc3RzLlxuLy8gVGhlIGRldmVsb3BlciBtaWdodCd2ZSBqdXN0IGF0dGVtcHRlZCB0byBmaXggdGhlIHdhcm5pbmcgc28gd2Ugc2hvdWxkIHdhcm4gYWdhaW4gaWYgaXQgc3RpbGwgaGFwcGVucy5cbmNvbnN0IGZsdXNoQ3VycmVudEVycm9ySWZOZXcgPSBjYWNoZSgvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzIC0tIGNhY2hlIGtleVxuKGtleSk9PntcbiAgICB0cnkge1xuICAgICAgICBsb2dFcnJvck9yV2FybihlcnJvclJlZi5jdXJyZW50KTtcbiAgICB9IGZpbmFsbHl7XG4gICAgICAgIGVycm9yUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgIH1cbn0pO1xuZnVuY3Rpb24gY3JlYXRlRGVkdXBlZEJ5Q2FsbHNpdGVTZXJ2ZXJFcnJvckxvZ2dlckRldihnZXRNZXNzYWdlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGxvZ0RlZHVwZWRFcnJvciguLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBnZXRNZXNzYWdlKC4uLmFyZ3MpO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgdmFyIF9zdGFjaztcbiAgICAgICAgICAgIGNvbnN0IGNhbGxTdGFja0ZyYW1lcyA9IChfc3RhY2sgPSBuZXcgRXJyb3IoKS5zdGFjaykgPT0gbnVsbCA/IHZvaWQgMCA6IF9zdGFjay5zcGxpdCgnXFxuJyk7XG4gICAgICAgICAgICBpZiAoY2FsbFN0YWNrRnJhbWVzID09PSB1bmRlZmluZWQgfHwgY2FsbFN0YWNrRnJhbWVzLmxlbmd0aCA8IDQpIHtcbiAgICAgICAgICAgICAgICBsb2dFcnJvck9yV2FybihtZXNzYWdlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gRXJyb3I6XG4gICAgICAgICAgICAgICAgLy8gICBsb2dEZWR1cGVkRXJyb3JcbiAgICAgICAgICAgICAgICAvLyAgIGFzeW5jQXBpQmVpbmdBY2Nlc3NlZFN5bmNocm9ub3VzbHlcbiAgICAgICAgICAgICAgICAvLyAgIDx1c2VybGFuZCBjYWxsc2l0ZT5cbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBUaGlzIGJyZWFrcyBpZiBzb3VyY2VtYXBzIHdpdGggaWdub3JlIGxpc3RzIGFyZSBlbmFibGVkLlxuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGNhbGxTdGFja0ZyYW1lc1s0XTtcbiAgICAgICAgICAgICAgICBlcnJvclJlZi5jdXJyZW50ID0gbWVzc2FnZTtcbiAgICAgICAgICAgICAgICBmbHVzaEN1cnJlbnRFcnJvcklmTmV3KGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsb2dFcnJvck9yV2FybihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNyZWF0ZS1kZWR1cGVkLWJ5LWNhbGxzaXRlLXNlcnZlci1lcnJvci1sb2dnZXIuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/dynamic-rendering-utils.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/dynamic-rendering-utils.js ***!
|
||
\******************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n delayUntilRuntimeStage: function() {\n return delayUntilRuntimeStage;\n },\n getRuntimeStage: function() {\n return getRuntimeStage;\n },\n isHangingPromiseRejectionError: function() {\n return isHangingPromiseRejectionError;\n },\n makeDevtoolsIOAwarePromise: function() {\n return makeDevtoolsIOAwarePromise;\n },\n makeHangingPromise: function() {\n return makeHangingPromise;\n }\n});\nconst _stagedrendering = __webpack_require__(/*! ./app-render/staged-rendering */ \"(rsc)/./node_modules/next/dist/server/app-render/staged-rendering.js\");\nfunction isHangingPromiseRejectionError(err) {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false;\n }\n return err.digest === HANGING_PROMISE_REJECTION;\n}\nconst HANGING_PROMISE_REJECTION = 'HANGING_PROMISE_REJECTION';\nclass HangingPromiseRejectionError extends Error {\n constructor(route, expression){\n super(`During prerendering, ${expression} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${expression} to a different context by using \\`setTimeout\\`, \\`after\\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route \"${route}\".`), this.route = route, this.expression = expression, this.digest = HANGING_PROMISE_REJECTION;\n }\n}\nconst abortListenersBySignal = new WeakMap();\nfunction makeHangingPromise(signal, route, expression) {\n if (signal.aborted) {\n return Promise.reject(new HangingPromiseRejectionError(route, expression));\n } else {\n const hangingPromise = new Promise((_, reject)=>{\n const boundRejection = reject.bind(null, new HangingPromiseRejectionError(route, expression));\n let currentListeners = abortListenersBySignal.get(signal);\n if (currentListeners) {\n currentListeners.push(boundRejection);\n } else {\n const listeners = [\n boundRejection\n ];\n abortListenersBySignal.set(signal, listeners);\n signal.addEventListener('abort', ()=>{\n for(let i = 0; i < listeners.length; i++){\n listeners[i]();\n }\n }, {\n once: true\n });\n }\n });\n // We are fine if no one actually awaits this promise. We shouldn't consider this an unhandled rejection so\n // we attach a noop catch handler here to suppress this warning. If you actually await somewhere or construct\n // your own promise out of it you'll need to ensure you handle the error when it rejects.\n hangingPromise.catch(ignoreReject);\n return hangingPromise;\n }\n}\nfunction ignoreReject() {}\nfunction makeDevtoolsIOAwarePromise(underlying, requestStore, stage) {\n if (requestStore.stagedRendering) {\n // We resolve each stage in a timeout, so React DevTools will pick this up as IO.\n return requestStore.stagedRendering.delayUntilStage(stage, undefined, underlying);\n }\n // in React DevTools if we resolve in a setTimeout we will observe\n // the promise resolution as something that can suspend a boundary or root.\n return new Promise((resolve)=>{\n // Must use setTimeout to be considered IO React DevTools. setImmediate will not work.\n setTimeout(()=>{\n resolve(underlying);\n }, 0);\n });\n}\nfunction getRuntimeStage(stagedRendering) {\n if (stagedRendering.currentStage === _stagedrendering.RenderStage.EarlyStatic || stagedRendering.currentStage === _stagedrendering.RenderStage.EarlyRuntime) {\n return _stagedrendering.RenderStage.EarlyRuntime;\n }\n return _stagedrendering.RenderStage.Runtime;\n}\nfunction delayUntilRuntimeStage(prerenderStore, result) {\n const { stagedRendering } = prerenderStore;\n if (!stagedRendering) {\n return result;\n }\n return stagedRendering.waitForStage(getRuntimeStage(stagedRendering)).then(()=>result);\n}\n\n//# sourceMappingURL=dynamic-rendering-utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9keW5hbWljLXJlbmRlcmluZy11dGlscy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FNTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCx5QkFBeUIsbUJBQU8sQ0FBQywyR0FBK0I7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLFlBQVksc0dBQXNHLFlBQVksK0tBQStLLE1BQU07QUFDelY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxzQkFBc0I7QUFDekQ7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksa0JBQWtCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9keW5hbWljLXJlbmRlcmluZy11dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGRlbGF5VW50aWxSdW50aW1lU3RhZ2U6IG51bGwsXG4gICAgZ2V0UnVudGltZVN0YWdlOiBudWxsLFxuICAgIGlzSGFuZ2luZ1Byb21pc2VSZWplY3Rpb25FcnJvcjogbnVsbCxcbiAgICBtYWtlRGV2dG9vbHNJT0F3YXJlUHJvbWlzZTogbnVsbCxcbiAgICBtYWtlSGFuZ2luZ1Byb21pc2U6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgZGVsYXlVbnRpbFJ1bnRpbWVTdGFnZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBkZWxheVVudGlsUnVudGltZVN0YWdlO1xuICAgIH0sXG4gICAgZ2V0UnVudGltZVN0YWdlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldFJ1bnRpbWVTdGFnZTtcbiAgICB9LFxuICAgIGlzSGFuZ2luZ1Byb21pc2VSZWplY3Rpb25FcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpc0hhbmdpbmdQcm9taXNlUmVqZWN0aW9uRXJyb3I7XG4gICAgfSxcbiAgICBtYWtlRGV2dG9vbHNJT0F3YXJlUHJvbWlzZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBtYWtlRGV2dG9vbHNJT0F3YXJlUHJvbWlzZTtcbiAgICB9LFxuICAgIG1ha2VIYW5naW5nUHJvbWlzZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBtYWtlSGFuZ2luZ1Byb21pc2U7XG4gICAgfVxufSk7XG5jb25zdCBfc3RhZ2VkcmVuZGVyaW5nID0gcmVxdWlyZShcIi4vYXBwLXJlbmRlci9zdGFnZWQtcmVuZGVyaW5nXCIpO1xuZnVuY3Rpb24gaXNIYW5naW5nUHJvbWlzZVJlamVjdGlvbkVycm9yKGVycikge1xuICAgIGlmICh0eXBlb2YgZXJyICE9PSAnb2JqZWN0JyB8fCBlcnIgPT09IG51bGwgfHwgISgnZGlnZXN0JyBpbiBlcnIpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGVyci5kaWdlc3QgPT09IEhBTkdJTkdfUFJPTUlTRV9SRUpFQ1RJT047XG59XG5jb25zdCBIQU5HSU5HX1BST01JU0VfUkVKRUNUSU9OID0gJ0hBTkdJTkdfUFJPTUlTRV9SRUpFQ1RJT04nO1xuY2xhc3MgSGFuZ2luZ1Byb21pc2VSZWplY3Rpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3Rvcihyb3V0ZSwgZXhwcmVzc2lvbil7XG4gICAgICAgIHN1cGVyKGBEdXJpbmcgcHJlcmVuZGVyaW5nLCAke2V4cHJlc3Npb259IHJlamVjdHMgd2hlbiB0aGUgcHJlcmVuZGVyIGlzIGNvbXBsZXRlLiBUeXBpY2FsbHkgdGhlc2UgZXJyb3JzIGFyZSBoYW5kbGVkIGJ5IFJlYWN0IGJ1dCBpZiB5b3UgbW92ZSAke2V4cHJlc3Npb259IHRvIGEgZGlmZmVyZW50IGNvbnRleHQgYnkgdXNpbmcgXFxgc2V0VGltZW91dFxcYCwgXFxgYWZ0ZXJcXGAsIG9yIHNpbWlsYXIgZnVuY3Rpb25zIHlvdSBtYXkgb2JzZXJ2ZSB0aGlzIGVycm9yIGFuZCB5b3Ugc2hvdWxkIGhhbmRsZSBpdCBpbiB0aGF0IGNvbnRleHQuIFRoaXMgb2NjdXJyZWQgYXQgcm91dGUgXCIke3JvdXRlfVwiLmApLCB0aGlzLnJvdXRlID0gcm91dGUsIHRoaXMuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb24sIHRoaXMuZGlnZXN0ID0gSEFOR0lOR19QUk9NSVNFX1JFSkVDVElPTjtcbiAgICB9XG59XG5jb25zdCBhYm9ydExpc3RlbmVyc0J5U2lnbmFsID0gbmV3IFdlYWtNYXAoKTtcbmZ1bmN0aW9uIG1ha2VIYW5naW5nUHJvbWlzZShzaWduYWwsIHJvdXRlLCBleHByZXNzaW9uKSB7XG4gICAgaWYgKHNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgSGFuZ2luZ1Byb21pc2VSZWplY3Rpb25FcnJvcihyb3V0ZSwgZXhwcmVzc2lvbikpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGhhbmdpbmdQcm9taXNlID0gbmV3IFByb21pc2UoKF8sIHJlamVjdCk9PntcbiAgICAgICAgICAgIGNvbnN0IGJvdW5kUmVqZWN0aW9uID0gcmVqZWN0LmJpbmQobnVsbCwgbmV3IEhhbmdpbmdQcm9taXNlUmVqZWN0aW9uRXJyb3Iocm91dGUsIGV4cHJlc3Npb24pKTtcbiAgICAgICAgICAgIGxldCBjdXJyZW50TGlzdGVuZXJzID0gYWJvcnRMaXN0ZW5lcnNCeVNpZ25hbC5nZXQoc2lnbmFsKTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50TGlzdGVuZXJzKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudExpc3RlbmVycy5wdXNoKGJvdW5kUmVqZWN0aW9uKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlzdGVuZXJzID0gW1xuICAgICAgICAgICAgICAgICAgICBib3VuZFJlamVjdGlvblxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgYWJvcnRMaXN0ZW5lcnNCeVNpZ25hbC5zZXQoc2lnbmFsLCBsaXN0ZW5lcnMpO1xuICAgICAgICAgICAgICAgIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsICgpPT57XG4gICAgICAgICAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyBpKyspe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXJzW2ldKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIG9uY2U6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIFdlIGFyZSBmaW5lIGlmIG5vIG9uZSBhY3R1YWxseSBhd2FpdHMgdGhpcyBwcm9taXNlLiBXZSBzaG91bGRuJ3QgY29uc2lkZXIgdGhpcyBhbiB1bmhhbmRsZWQgcmVqZWN0aW9uIHNvXG4gICAgICAgIC8vIHdlIGF0dGFjaCBhIG5vb3AgY2F0Y2ggaGFuZGxlciBoZXJlIHRvIHN1cHByZXNzIHRoaXMgd2FybmluZy4gSWYgeW91IGFjdHVhbGx5IGF3YWl0IHNvbWV3aGVyZSBvciBjb25zdHJ1Y3RcbiAgICAgICAgLy8geW91ciBvd24gcHJvbWlzZSBvdXQgb2YgaXQgeW91J2xsIG5lZWQgdG8gZW5zdXJlIHlvdSBoYW5kbGUgdGhlIGVycm9yIHdoZW4gaXQgcmVqZWN0cy5cbiAgICAgICAgaGFuZ2luZ1Byb21pc2UuY2F0Y2goaWdub3JlUmVqZWN0KTtcbiAgICAgICAgcmV0dXJuIGhhbmdpbmdQcm9taXNlO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGlnbm9yZVJlamVjdCgpIHt9XG5mdW5jdGlvbiBtYWtlRGV2dG9vbHNJT0F3YXJlUHJvbWlzZSh1bmRlcmx5aW5nLCByZXF1ZXN0U3RvcmUsIHN0YWdlKSB7XG4gICAgaWYgKHJlcXVlc3RTdG9yZS5zdGFnZWRSZW5kZXJpbmcpIHtcbiAgICAgICAgLy8gV2UgcmVzb2x2ZSBlYWNoIHN0YWdlIGluIGEgdGltZW91dCwgc28gUmVhY3QgRGV2VG9vbHMgd2lsbCBwaWNrIHRoaXMgdXAgYXMgSU8uXG4gICAgICAgIHJldHVybiByZXF1ZXN0U3RvcmUuc3RhZ2VkUmVuZGVyaW5nLmRlbGF5VW50aWxTdGFnZShzdGFnZSwgdW5kZWZpbmVkLCB1bmRlcmx5aW5nKTtcbiAgICB9XG4gICAgLy8gaW4gUmVhY3QgRGV2VG9vbHMgaWYgd2UgcmVzb2x2ZSBpbiBhIHNldFRpbWVvdXQgd2Ugd2lsbCBvYnNlcnZlXG4gICAgLy8gdGhlIHByb21pc2UgcmVzb2x1dGlvbiBhcyBzb21ldGhpbmcgdGhhdCBjYW4gc3VzcGVuZCBhIGJvdW5kYXJ5IG9yIHJvb3QuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKT0+e1xuICAgICAgICAvLyBNdXN0IHVzZSBzZXRUaW1lb3V0IHRvIGJlIGNvbnNpZGVyZWQgSU8gUmVhY3QgRGV2VG9vbHMuIHNldEltbWVkaWF0ZSB3aWxsIG5vdCB3b3JrLlxuICAgICAgICBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICByZXNvbHZlKHVuZGVybHlpbmcpO1xuICAgICAgICB9LCAwKTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGdldFJ1bnRpbWVTdGFnZShzdGFnZWRSZW5kZXJpbmcpIHtcbiAgICBpZiAoc3RhZ2VkUmVuZGVyaW5nLmN1cnJlbnRTdGFnZSA9PT0gX3N0YWdlZHJlbmRlcmluZy5SZW5kZXJTdGFnZS5FYXJseVN0YXRpYyB8fCBzdGFnZWRSZW5kZXJpbmcuY3VycmVudFN0YWdlID09PSBfc3RhZ2VkcmVuZGVyaW5nLlJlbmRlclN0YWdlLkVhcmx5UnVudGltZSkge1xuICAgICAgICByZXR1cm4gX3N0YWdlZHJlbmRlcmluZy5SZW5kZXJTdGFnZS5FYXJseVJ1bnRpbWU7XG4gICAgfVxuICAgIHJldHVybiBfc3RhZ2VkcmVuZGVyaW5nLlJlbmRlclN0YWdlLlJ1bnRpbWU7XG59XG5mdW5jdGlvbiBkZWxheVVudGlsUnVudGltZVN0YWdlKHByZXJlbmRlclN0b3JlLCByZXN1bHQpIHtcbiAgICBjb25zdCB7IHN0YWdlZFJlbmRlcmluZyB9ID0gcHJlcmVuZGVyU3RvcmU7XG4gICAgaWYgKCFzdGFnZWRSZW5kZXJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIHN0YWdlZFJlbmRlcmluZy53YWl0Rm9yU3RhZ2UoZ2V0UnVudGltZVN0YWdlKHN0YWdlZFJlbmRlcmluZykpLnRoZW4oKCk9PnJlc3VsdCk7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWR5bmFtaWMtcmVuZGVyaW5nLXV0aWxzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/dynamic-rendering-utils.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/instrumentation/utils.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/instrumentation/utils.js ***!
|
||
\****************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getRevalidateReason\", ({\n enumerable: true,\n get: function() {\n return getRevalidateReason;\n }\n}));\nfunction getRevalidateReason(params) {\n if (params.isOnDemandRevalidate) {\n return 'on-demand';\n }\n if (params.isStaticGeneration) {\n return 'stale';\n }\n return undefined;\n}\n\n//# sourceMappingURL=utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9pbnN0cnVtZW50YXRpb24vdXRpbHMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRix1REFBc0Q7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9pbnN0cnVtZW50YXRpb24vdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJnZXRSZXZhbGlkYXRlUmVhc29uXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRSZXZhbGlkYXRlUmVhc29uO1xuICAgIH1cbn0pO1xuZnVuY3Rpb24gZ2V0UmV2YWxpZGF0ZVJlYXNvbihwYXJhbXMpIHtcbiAgICBpZiAocGFyYW1zLmlzT25EZW1hbmRSZXZhbGlkYXRlKSB7XG4gICAgICAgIHJldHVybiAnb24tZGVtYW5kJztcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5pc1N0YXRpY0dlbmVyYXRpb24pIHtcbiAgICAgICAgcmV0dXJuICdzdGFsZSc7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXV0aWxzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/instrumentation/utils.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/lib/app-dir-module.js":
|
||
/*!*************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/lib/app-dir-module.js ***!
|
||
\*************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getComponentTypeModule: function() {\n return getComponentTypeModule;\n },\n getLayoutOrPageModule: function() {\n return getLayoutOrPageModule;\n }\n});\nconst _segment = __webpack_require__(/*! ../../shared/lib/segment */ \"(rsc)/./node_modules/next/dist/shared/lib/segment.js\");\nasync function getLayoutOrPageModule(loaderTree) {\n const { layout, page, defaultPage } = loaderTree[2];\n const isLayout = typeof layout !== 'undefined';\n const isPage = typeof page !== 'undefined';\n const isDefaultPage = typeof defaultPage !== 'undefined' && loaderTree[0] === _segment.DEFAULT_SEGMENT_KEY;\n let mod = undefined;\n let modType = undefined;\n let filePath = undefined;\n if (isLayout) {\n mod = await layout[0]();\n modType = 'layout';\n filePath = layout[1];\n } else if (isPage) {\n mod = await page[0]();\n modType = 'page';\n filePath = page[1];\n } else if (isDefaultPage) {\n mod = await defaultPage[0]();\n modType = 'page';\n filePath = defaultPage[1];\n }\n return {\n mod,\n modType,\n filePath\n };\n}\nasync function getComponentTypeModule(loaderTree, moduleType) {\n const { [moduleType]: module1 } = loaderTree[2];\n if (typeof module1 !== 'undefined') {\n return await module1[0]();\n }\n return undefined;\n}\n\n//# sourceMappingURL=app-dir-module.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvYXBwLWRpci1tb2R1bGUuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBR0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsaUJBQWlCLG1CQUFPLENBQUMsc0ZBQTBCO0FBQ25EO0FBQ0EsWUFBWSw0QkFBNEI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHdCQUF3QjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvbGliL2FwcC1kaXItbW9kdWxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgZ2V0Q29tcG9uZW50VHlwZU1vZHVsZTogbnVsbCxcbiAgICBnZXRMYXlvdXRPclBhZ2VNb2R1bGU6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgZ2V0Q29tcG9uZW50VHlwZU1vZHVsZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRDb21wb25lbnRUeXBlTW9kdWxlO1xuICAgIH0sXG4gICAgZ2V0TGF5b3V0T3JQYWdlTW9kdWxlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldExheW91dE9yUGFnZU1vZHVsZTtcbiAgICB9XG59KTtcbmNvbnN0IF9zZWdtZW50ID0gcmVxdWlyZShcIi4uLy4uL3NoYXJlZC9saWIvc2VnbWVudFwiKTtcbmFzeW5jIGZ1bmN0aW9uIGdldExheW91dE9yUGFnZU1vZHVsZShsb2FkZXJUcmVlKSB7XG4gICAgY29uc3QgeyBsYXlvdXQsIHBhZ2UsIGRlZmF1bHRQYWdlIH0gPSBsb2FkZXJUcmVlWzJdO1xuICAgIGNvbnN0IGlzTGF5b3V0ID0gdHlwZW9mIGxheW91dCAhPT0gJ3VuZGVmaW5lZCc7XG4gICAgY29uc3QgaXNQYWdlID0gdHlwZW9mIHBhZ2UgIT09ICd1bmRlZmluZWQnO1xuICAgIGNvbnN0IGlzRGVmYXVsdFBhZ2UgPSB0eXBlb2YgZGVmYXVsdFBhZ2UgIT09ICd1bmRlZmluZWQnICYmIGxvYWRlclRyZWVbMF0gPT09IF9zZWdtZW50LkRFRkFVTFRfU0VHTUVOVF9LRVk7XG4gICAgbGV0IG1vZCA9IHVuZGVmaW5lZDtcbiAgICBsZXQgbW9kVHlwZSA9IHVuZGVmaW5lZDtcbiAgICBsZXQgZmlsZVBhdGggPSB1bmRlZmluZWQ7XG4gICAgaWYgKGlzTGF5b3V0KSB7XG4gICAgICAgIG1vZCA9IGF3YWl0IGxheW91dFswXSgpO1xuICAgICAgICBtb2RUeXBlID0gJ2xheW91dCc7XG4gICAgICAgIGZpbGVQYXRoID0gbGF5b3V0WzFdO1xuICAgIH0gZWxzZSBpZiAoaXNQYWdlKSB7XG4gICAgICAgIG1vZCA9IGF3YWl0IHBhZ2VbMF0oKTtcbiAgICAgICAgbW9kVHlwZSA9ICdwYWdlJztcbiAgICAgICAgZmlsZVBhdGggPSBwYWdlWzFdO1xuICAgIH0gZWxzZSBpZiAoaXNEZWZhdWx0UGFnZSkge1xuICAgICAgICBtb2QgPSBhd2FpdCBkZWZhdWx0UGFnZVswXSgpO1xuICAgICAgICBtb2RUeXBlID0gJ3BhZ2UnO1xuICAgICAgICBmaWxlUGF0aCA9IGRlZmF1bHRQYWdlWzFdO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBtb2QsXG4gICAgICAgIG1vZFR5cGUsXG4gICAgICAgIGZpbGVQYXRoXG4gICAgfTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGdldENvbXBvbmVudFR5cGVNb2R1bGUobG9hZGVyVHJlZSwgbW9kdWxlVHlwZSkge1xuICAgIGNvbnN0IHsgW21vZHVsZVR5cGVdOiBtb2R1bGUxIH0gPSBsb2FkZXJUcmVlWzJdO1xuICAgIGlmICh0eXBlb2YgbW9kdWxlMSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG1vZHVsZTFbMF0oKTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXBwLWRpci1tb2R1bGUuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/app-dir-module.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/lib/cache-control.js":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/lib/cache-control.js ***!
|
||
\************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getCacheControlHeader\", ({\n enumerable: true,\n get: function() {\n return getCacheControlHeader;\n }\n}));\nconst _constants = __webpack_require__(/*! ../../lib/constants */ \"(rsc)/./node_modules/next/dist/lib/constants.js\");\nfunction getCacheControlHeader({ revalidate, expire }) {\n const swrHeader = typeof revalidate === 'number' && expire !== undefined && revalidate < expire ? `, stale-while-revalidate=${expire - revalidate}` : '';\n if (revalidate === 0) {\n return 'private, no-cache, no-store, max-age=0, must-revalidate';\n } else if (typeof revalidate === 'number') {\n return `s-maxage=${revalidate}${swrHeader}`;\n }\n return `s-maxage=${_constants.CACHE_ONE_YEAR_SECONDS}${swrHeader}`;\n}\n\n//# sourceMappingURL=cache-control.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvY2FjaGUtY29udHJvbC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLHlEQUF3RDtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGLG1CQUFtQixtQkFBTyxDQUFDLDRFQUFxQjtBQUNoRCxpQ0FBaUMsb0JBQW9CO0FBQ3JELGtJQUFrSSxvQkFBb0I7QUFDdEo7QUFDQTtBQUNBLE1BQU07QUFDTiwyQkFBMkIsV0FBVyxFQUFFLFVBQVU7QUFDbEQ7QUFDQSx1QkFBdUIsa0NBQWtDLEVBQUUsVUFBVTtBQUNyRTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL2xpYi9jYWNoZS1jb250cm9sLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZ2V0Q2FjaGVDb250cm9sSGVhZGVyXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRDYWNoZUNvbnRyb2xIZWFkZXI7XG4gICAgfVxufSk7XG5jb25zdCBfY29uc3RhbnRzID0gcmVxdWlyZShcIi4uLy4uL2xpYi9jb25zdGFudHNcIik7XG5mdW5jdGlvbiBnZXRDYWNoZUNvbnRyb2xIZWFkZXIoeyByZXZhbGlkYXRlLCBleHBpcmUgfSkge1xuICAgIGNvbnN0IHN3ckhlYWRlciA9IHR5cGVvZiByZXZhbGlkYXRlID09PSAnbnVtYmVyJyAmJiBleHBpcmUgIT09IHVuZGVmaW5lZCAmJiByZXZhbGlkYXRlIDwgZXhwaXJlID8gYCwgc3RhbGUtd2hpbGUtcmV2YWxpZGF0ZT0ke2V4cGlyZSAtIHJldmFsaWRhdGV9YCA6ICcnO1xuICAgIGlmIChyZXZhbGlkYXRlID09PSAwKSB7XG4gICAgICAgIHJldHVybiAncHJpdmF0ZSwgbm8tY2FjaGUsIG5vLXN0b3JlLCBtYXgtYWdlPTAsIG11c3QtcmV2YWxpZGF0ZSc7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcmV2YWxpZGF0ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIGBzLW1heGFnZT0ke3JldmFsaWRhdGV9JHtzd3JIZWFkZXJ9YDtcbiAgICB9XG4gICAgcmV0dXJuIGBzLW1heGFnZT0ke19jb25zdGFudHMuQ0FDSEVfT05FX1lFQVJfU0VDT05EU30ke3N3ckhlYWRlcn1gO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1jYWNoZS1jb250cm9sLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/cache-control.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/lib/clone-response.js":
|
||
/*!*************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/lib/clone-response.js ***!
|
||
\*************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"cloneResponse\", ({\n enumerable: true,\n get: function() {\n return cloneResponse;\n }\n}));\nconst noop = ()=>{};\nlet registry;\nif (globalThis.FinalizationRegistry) {\n registry = new FinalizationRegistry((weakRef)=>{\n const stream = weakRef.deref();\n if (stream && !stream.locked) {\n stream.cancel('Response object has been garbage collected').then(noop);\n }\n });\n}\nfunction cloneResponse(original) {\n // If the response has no body, then we can just return the original response\n // twice because it's immutable.\n if (!original.body) {\n return [\n original,\n original\n ];\n }\n const [body1, body2] = original.body.tee();\n const cloned1 = new Response(body1, {\n status: original.status,\n statusText: original.statusText,\n headers: original.headers\n });\n Object.defineProperty(cloned1, 'url', {\n value: original.url,\n // How the original response.url behaves\n configurable: true,\n enumerable: true,\n writable: false\n });\n const cloned2 = new Response(body2, {\n status: original.status,\n statusText: original.statusText,\n headers: original.headers\n });\n Object.defineProperty(cloned2, 'url', {\n value: original.url,\n // How the original response.url behaves\n configurable: true,\n enumerable: true,\n writable: false\n });\n // The Fetch Standard allows users to skip consuming the response body by\n // relying on garbage collection to release connection resources.\n // https://github.com/nodejs/undici?tab=readme-ov-file#garbage-collection\n //\n // To cancel the stream you then need to cancel both resulting branches.\n // Teeing a stream will generally lock it for the duration, preventing other\n // readers from locking it.\n // https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/tee\n if (registry) {\n if (cloned1.body) {\n registry.register(cloned1, new WeakRef(cloned1.body));\n }\n if (cloned2.body) {\n registry.register(cloned2, new WeakRef(cloned2.body));\n }\n }\n return [\n cloned1,\n cloned2\n ];\n}\n\n//# sourceMappingURL=clone-response.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvY2xvbmUtcmVzcG9uc2UuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixpREFBZ0Q7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL2xpYi9jbG9uZS1yZXNwb25zZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImNsb25lUmVzcG9uc2VcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNsb25lUmVzcG9uc2U7XG4gICAgfVxufSk7XG5jb25zdCBub29wID0gKCk9Pnt9O1xubGV0IHJlZ2lzdHJ5O1xuaWYgKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkpIHtcbiAgICByZWdpc3RyeSA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgod2Vha1JlZik9PntcbiAgICAgICAgY29uc3Qgc3RyZWFtID0gd2Vha1JlZi5kZXJlZigpO1xuICAgICAgICBpZiAoc3RyZWFtICYmICFzdHJlYW0ubG9ja2VkKSB7XG4gICAgICAgICAgICBzdHJlYW0uY2FuY2VsKCdSZXNwb25zZSBvYmplY3QgaGFzIGJlZW4gZ2FyYmFnZSBjb2xsZWN0ZWQnKS50aGVuKG5vb3ApO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5mdW5jdGlvbiBjbG9uZVJlc3BvbnNlKG9yaWdpbmFsKSB7XG4gICAgLy8gSWYgdGhlIHJlc3BvbnNlIGhhcyBubyBib2R5LCB0aGVuIHdlIGNhbiBqdXN0IHJldHVybiB0aGUgb3JpZ2luYWwgcmVzcG9uc2VcbiAgICAvLyB0d2ljZSBiZWNhdXNlIGl0J3MgaW1tdXRhYmxlLlxuICAgIGlmICghb3JpZ2luYWwuYm9keSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgb3JpZ2luYWwsXG4gICAgICAgICAgICBvcmlnaW5hbFxuICAgICAgICBdO1xuICAgIH1cbiAgICBjb25zdCBbYm9keTEsIGJvZHkyXSA9IG9yaWdpbmFsLmJvZHkudGVlKCk7XG4gICAgY29uc3QgY2xvbmVkMSA9IG5ldyBSZXNwb25zZShib2R5MSwge1xuICAgICAgICBzdGF0dXM6IG9yaWdpbmFsLnN0YXR1cyxcbiAgICAgICAgc3RhdHVzVGV4dDogb3JpZ2luYWwuc3RhdHVzVGV4dCxcbiAgICAgICAgaGVhZGVyczogb3JpZ2luYWwuaGVhZGVyc1xuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjbG9uZWQxLCAndXJsJywge1xuICAgICAgICB2YWx1ZTogb3JpZ2luYWwudXJsLFxuICAgICAgICAvLyBIb3cgdGhlIG9yaWdpbmFsIHJlc3BvbnNlLnVybCBiZWhhdmVzXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlXG4gICAgfSk7XG4gICAgY29uc3QgY2xvbmVkMiA9IG5ldyBSZXNwb25zZShib2R5Miwge1xuICAgICAgICBzdGF0dXM6IG9yaWdpbmFsLnN0YXR1cyxcbiAgICAgICAgc3RhdHVzVGV4dDogb3JpZ2luYWwuc3RhdHVzVGV4dCxcbiAgICAgICAgaGVhZGVyczogb3JpZ2luYWwuaGVhZGVyc1xuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjbG9uZWQyLCAndXJsJywge1xuICAgICAgICB2YWx1ZTogb3JpZ2luYWwudXJsLFxuICAgICAgICAvLyBIb3cgdGhlIG9yaWdpbmFsIHJlc3BvbnNlLnVybCBiZWhhdmVzXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlXG4gICAgfSk7XG4gICAgLy8gVGhlIEZldGNoIFN0YW5kYXJkIGFsbG93cyB1c2VycyB0byBza2lwIGNvbnN1bWluZyB0aGUgcmVzcG9uc2UgYm9keSBieVxuICAgIC8vIHJlbHlpbmcgb24gZ2FyYmFnZSBjb2xsZWN0aW9uIHRvIHJlbGVhc2UgY29ubmVjdGlvbiByZXNvdXJjZXMuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy91bmRpY2k/dGFiPXJlYWRtZS1vdi1maWxlI2dhcmJhZ2UtY29sbGVjdGlvblxuICAgIC8vXG4gICAgLy8gVG8gY2FuY2VsIHRoZSBzdHJlYW0geW91IHRoZW4gbmVlZCB0byBjYW5jZWwgYm90aCByZXN1bHRpbmcgYnJhbmNoZXMuXG4gICAgLy8gVGVlaW5nIGEgc3RyZWFtIHdpbGwgZ2VuZXJhbGx5IGxvY2sgaXQgZm9yIHRoZSBkdXJhdGlvbiwgcHJldmVudGluZyBvdGhlclxuICAgIC8vIHJlYWRlcnMgZnJvbSBsb2NraW5nIGl0LlxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9SZWFkYWJsZVN0cmVhbS90ZWVcbiAgICBpZiAocmVnaXN0cnkpIHtcbiAgICAgICAgaWYgKGNsb25lZDEuYm9keSkge1xuICAgICAgICAgICAgcmVnaXN0cnkucmVnaXN0ZXIoY2xvbmVkMSwgbmV3IFdlYWtSZWYoY2xvbmVkMS5ib2R5KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNsb25lZDIuYm9keSkge1xuICAgICAgICAgICAgcmVnaXN0cnkucmVnaXN0ZXIoY2xvbmVkMiwgbmV3IFdlYWtSZWYoY2xvbmVkMi5ib2R5KSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFtcbiAgICAgICAgY2xvbmVkMSxcbiAgICAgICAgY2xvbmVkMlxuICAgIF07XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNsb25lLXJlc3BvbnNlLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/clone-response.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/lib/dedupe-fetch.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/next/dist/server/lib/dedupe-fetch.js ***!
|
||
\***********************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * Based on https://github.com/facebook/react/blob/d4e78c42a94be027b4dc7ed2659a5fddfbf9bd4e/packages/react/src/ReactFetch.js\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createDedupeFetch\", ({\n enumerable: true,\n get: function() {\n return createDedupeFetch;\n }\n}));\nconst _react = /*#__PURE__*/ _interop_require_wildcard(__webpack_require__(/*! react */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js\"));\nconst _cloneresponse = __webpack_require__(/*! ./clone-response */ \"(rsc)/./node_modules/next/dist/server/lib/clone-response.js\");\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(rsc)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {\n __proto__: null\n };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nconst simpleCacheKey = '[\"GET\",[],null,\"follow\",null,null,null,null]' // generateCacheKey(new Request('https://blank'));\n;\n// Headers that should not affect deduplication\n// traceparent and tracestate are used for distributed tracing and should not affect cache keys\nconst headersToExcludeInCacheKey = new Set([\n 'traceparent',\n 'tracestate'\n]);\nfunction generateCacheKey(request) {\n // We pick the fields that goes into the key used to dedupe requests.\n // We don't include the `cache` field, because we end up using whatever\n // caching resulted from the first request.\n // Notably we currently don't consider non-standard (or future) options.\n // This might not be safe. TODO: warn for non-standard extensions differing.\n // IF YOU CHANGE THIS UPDATE THE simpleCacheKey ABOVE.\n const filteredHeaders = Array.from(request.headers.entries()).filter(([key])=>!headersToExcludeInCacheKey.has(key.toLowerCase()));\n return JSON.stringify([\n request.method,\n filteredHeaders,\n request.mode,\n request.redirect,\n request.credentials,\n request.referrer,\n request.referrerPolicy,\n request.integrity\n ]);\n}\nfunction createDedupeFetch(originalFetch) {\n const getCacheEntries = _react.cache(// eslint-disable-next-line @typescript-eslint/no-unused-vars -- url is the cache key\n (url)=>[]);\n return function dedupeFetch(resource, options) {\n if (options && options.signal) {\n // If we're passed a signal, then we assume that\n // someone else controls the lifetime of this object and opts out of\n // caching. It's effectively the opt-out mechanism.\n // Ideally we should be able to check this on the Request but\n // it always gets initialized with its own signal so we don't\n // know if it's supposed to override - unless we also override the\n // Request constructor.\n return originalFetch(resource, options);\n }\n // Normalize the Request\n let url;\n let cacheKey;\n if (typeof resource === 'string' && !options) {\n // Fast path.\n cacheKey = simpleCacheKey;\n url = resource;\n } else {\n // Normalize the request.\n // if resource is not a string or a URL (its an instance of Request)\n // then do not instantiate a new Request but instead\n // reuse the request as to not disturb the body in the event it's a ReadableStream.\n const request = typeof resource === 'string' || resource instanceof URL ? new Request(resource, options) : resource;\n if (request.method !== 'GET' && request.method !== 'HEAD' || request.keepalive) {\n // We currently don't dedupe requests that might have side-effects. Those\n // have to be explicitly cached. We assume that the request doesn't have a\n // body if it's GET or HEAD.\n // keepalive gets treated the same as if you passed a custom cache signal.\n return originalFetch(resource, options);\n }\n cacheKey = generateCacheKey(request);\n url = request.url;\n }\n const cacheEntries = getCacheEntries(url);\n for(let i = 0, j = cacheEntries.length; i < j; i += 1){\n const [key, promise] = cacheEntries[i];\n if (key === cacheKey) {\n return promise.then(()=>{\n const response = cacheEntries[i][2];\n if (!response) throw Object.defineProperty(new _invarianterror.InvariantError('No cached response'), \"__NEXT_ERROR_CODE\", {\n value: \"E579\",\n enumerable: false,\n configurable: true\n });\n // We're cloning the response using this utility because there exists\n // a bug in the undici library around response cloning. See the\n // following pull request for more details:\n // https://github.com/vercel/next.js/pull/73274\n const [cloned1, cloned2] = (0, _cloneresponse.cloneResponse)(response);\n cacheEntries[i][2] = cloned2;\n return cloned1;\n });\n }\n }\n // We pass the original arguments here in case normalizing the Request\n // doesn't include all the options in this environment.\n const promise = originalFetch(resource, options);\n const entry = [\n cacheKey,\n promise,\n null\n ];\n cacheEntries.push(entry);\n return promise.then((response)=>{\n // We're cloning the response using this utility because there exists\n // a bug in the undici library around response cloning. See the\n // following pull request for more details:\n // https://github.com/vercel/next.js/pull/73274\n const [cloned1, cloned2] = (0, _cloneresponse.cloneResponse)(response);\n entry[2] = cloned2;\n return cloned1;\n });\n };\n}\n\n//# sourceMappingURL=dedupe-fetch.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvZGVkdXBlLWZldGNoLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQSxJQUFpQjtBQUNqQiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixxREFBb0Q7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRix1REFBdUQsbUJBQU8sQ0FBQyxpR0FBTztBQUN0RSx1QkFBdUIsbUJBQU8sQ0FBQyxxRkFBa0I7QUFDakQsd0JBQXdCLG1CQUFPLENBQUMsc0dBQWtDO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdELE9BQU87QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvbGliL2RlZHVwZS1mZXRjaC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9ibG9iL2Q0ZTc4YzQyYTk0YmUwMjdiNGRjN2VkMjY1OWE1ZmRkZmJmOWJkNGUvcGFja2FnZXMvcmVhY3Qvc3JjL1JlYWN0RmV0Y2guanNcbiAqLyBcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImNyZWF0ZURlZHVwZUZldGNoXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVEZWR1cGVGZXRjaDtcbiAgICB9XG59KTtcbmNvbnN0IF9yZWFjdCA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuY29uc3QgX2Nsb25lcmVzcG9uc2UgPSByZXF1aXJlKFwiLi9jbG9uZS1yZXNwb25zZVwiKTtcbmNvbnN0IF9pbnZhcmlhbnRlcnJvciA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvbGliL2ludmFyaWFudC1lcnJvclwiKTtcbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkge1xuICAgIGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDtcbiAgICB2YXIgY2FjaGVCYWJlbEludGVyb3AgPSBuZXcgV2Vha01hcCgpO1xuICAgIHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTtcbiAgICByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uKG5vZGVJbnRlcm9wKSB7XG4gICAgICAgIHJldHVybiBub2RlSW50ZXJvcCA/IGNhY2hlTm9kZUludGVyb3AgOiBjYWNoZUJhYmVsSW50ZXJvcDtcbiAgICB9KShub2RlSW50ZXJvcCk7XG59XG5mdW5jdGlvbiBfaW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkKG9iaiwgbm9kZUludGVyb3ApIHtcbiAgICBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkge1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH1cbiAgICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkZWZhdWx0OiBvYmpcbiAgICAgICAgfTtcbiAgICB9XG4gICAgdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKTtcbiAgICBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlLmdldChvYmopO1xuICAgIH1cbiAgICB2YXIgbmV3T2JqID0ge1xuICAgICAgICBfX3Byb3RvX186IG51bGxcbiAgICB9O1xuICAgIHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbiAgICBmb3IodmFyIGtleSBpbiBvYmope1xuICAgICAgICBpZiAoa2V5ICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgICAgICB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDtcbiAgICAgICAgICAgIGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdPYmpba2V5XSA9IG9ialtrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIG5ld09iai5kZWZhdWx0ID0gb2JqO1xuICAgIGlmIChjYWNoZSkge1xuICAgICAgICBjYWNoZS5zZXQob2JqLCBuZXdPYmopO1xuICAgIH1cbiAgICByZXR1cm4gbmV3T2JqO1xufVxuY29uc3Qgc2ltcGxlQ2FjaGVLZXkgPSAnW1wiR0VUXCIsW10sbnVsbCxcImZvbGxvd1wiLG51bGwsbnVsbCxudWxsLG51bGxdJyAvLyBnZW5lcmF0ZUNhY2hlS2V5KG5ldyBSZXF1ZXN0KCdodHRwczovL2JsYW5rJykpO1xuO1xuLy8gSGVhZGVycyB0aGF0IHNob3VsZCBub3QgYWZmZWN0IGRlZHVwbGljYXRpb25cbi8vIHRyYWNlcGFyZW50IGFuZCB0cmFjZXN0YXRlIGFyZSB1c2VkIGZvciBkaXN0cmlidXRlZCB0cmFjaW5nIGFuZCBzaG91bGQgbm90IGFmZmVjdCBjYWNoZSBrZXlzXG5jb25zdCBoZWFkZXJzVG9FeGNsdWRlSW5DYWNoZUtleSA9IG5ldyBTZXQoW1xuICAgICd0cmFjZXBhcmVudCcsXG4gICAgJ3RyYWNlc3RhdGUnXG5dKTtcbmZ1bmN0aW9uIGdlbmVyYXRlQ2FjaGVLZXkocmVxdWVzdCkge1xuICAgIC8vIFdlIHBpY2sgdGhlIGZpZWxkcyB0aGF0IGdvZXMgaW50byB0aGUga2V5IHVzZWQgdG8gZGVkdXBlIHJlcXVlc3RzLlxuICAgIC8vIFdlIGRvbid0IGluY2x1ZGUgdGhlIGBjYWNoZWAgZmllbGQsIGJlY2F1c2Ugd2UgZW5kIHVwIHVzaW5nIHdoYXRldmVyXG4gICAgLy8gY2FjaGluZyByZXN1bHRlZCBmcm9tIHRoZSBmaXJzdCByZXF1ZXN0LlxuICAgIC8vIE5vdGFibHkgd2UgY3VycmVudGx5IGRvbid0IGNvbnNpZGVyIG5vbi1zdGFuZGFyZCAob3IgZnV0dXJlKSBvcHRpb25zLlxuICAgIC8vIFRoaXMgbWlnaHQgbm90IGJlIHNhZmUuIFRPRE86IHdhcm4gZm9yIG5vbi1zdGFuZGFyZCBleHRlbnNpb25zIGRpZmZlcmluZy5cbiAgICAvLyBJRiBZT1UgQ0hBTkdFIFRISVMgVVBEQVRFIFRIRSBzaW1wbGVDYWNoZUtleSBBQk9WRS5cbiAgICBjb25zdCBmaWx0ZXJlZEhlYWRlcnMgPSBBcnJheS5mcm9tKHJlcXVlc3QuaGVhZGVycy5lbnRyaWVzKCkpLmZpbHRlcigoW2tleV0pPT4haGVhZGVyc1RvRXhjbHVkZUluQ2FjaGVLZXkuaGFzKGtleS50b0xvd2VyQ2FzZSgpKSk7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFtcbiAgICAgICAgcmVxdWVzdC5tZXRob2QsXG4gICAgICAgIGZpbHRlcmVkSGVhZGVycyxcbiAgICAgICAgcmVxdWVzdC5tb2RlLFxuICAgICAgICByZXF1ZXN0LnJlZGlyZWN0LFxuICAgICAgICByZXF1ZXN0LmNyZWRlbnRpYWxzLFxuICAgICAgICByZXF1ZXN0LnJlZmVycmVyLFxuICAgICAgICByZXF1ZXN0LnJlZmVycmVyUG9saWN5LFxuICAgICAgICByZXF1ZXN0LmludGVncml0eVxuICAgIF0pO1xufVxuZnVuY3Rpb24gY3JlYXRlRGVkdXBlRmV0Y2gob3JpZ2luYWxGZXRjaCkge1xuICAgIGNvbnN0IGdldENhY2hlRW50cmllcyA9IF9yZWFjdC5jYWNoZSgvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzIC0tIHVybCBpcyB0aGUgY2FjaGUga2V5XG4gICAgKHVybCk9PltdKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gZGVkdXBlRmV0Y2gocmVzb3VyY2UsIG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zaWduYWwpIHtcbiAgICAgICAgICAgIC8vIElmIHdlJ3JlIHBhc3NlZCBhIHNpZ25hbCwgdGhlbiB3ZSBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgLy8gc29tZW9uZSBlbHNlIGNvbnRyb2xzIHRoZSBsaWZldGltZSBvZiB0aGlzIG9iamVjdCBhbmQgb3B0cyBvdXQgb2ZcbiAgICAgICAgICAgIC8vIGNhY2hpbmcuIEl0J3MgZWZmZWN0aXZlbHkgdGhlIG9wdC1vdXQgbWVjaGFuaXNtLlxuICAgICAgICAgICAgLy8gSWRlYWxseSB3ZSBzaG91bGQgYmUgYWJsZSB0byBjaGVjayB0aGlzIG9uIHRoZSBSZXF1ZXN0IGJ1dFxuICAgICAgICAgICAgLy8gaXQgYWx3YXlzIGdldHMgaW5pdGlhbGl6ZWQgd2l0aCBpdHMgb3duIHNpZ25hbCBzbyB3ZSBkb24ndFxuICAgICAgICAgICAgLy8ga25vdyBpZiBpdCdzIHN1cHBvc2VkIHRvIG92ZXJyaWRlIC0gdW5sZXNzIHdlIGFsc28gb3ZlcnJpZGUgdGhlXG4gICAgICAgICAgICAvLyBSZXF1ZXN0IGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsRmV0Y2gocmVzb3VyY2UsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE5vcm1hbGl6ZSB0aGUgUmVxdWVzdFxuICAgICAgICBsZXQgdXJsO1xuICAgICAgICBsZXQgY2FjaGVLZXk7XG4gICAgICAgIGlmICh0eXBlb2YgcmVzb3VyY2UgPT09ICdzdHJpbmcnICYmICFvcHRpb25zKSB7XG4gICAgICAgICAgICAvLyBGYXN0IHBhdGguXG4gICAgICAgICAgICBjYWNoZUtleSA9IHNpbXBsZUNhY2hlS2V5O1xuICAgICAgICAgICAgdXJsID0gcmVzb3VyY2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBOb3JtYWxpemUgdGhlIHJlcXVlc3QuXG4gICAgICAgICAgICAvLyBpZiByZXNvdXJjZSBpcyBub3QgYSBzdHJpbmcgb3IgYSBVUkwgKGl0cyBhbiBpbnN0YW5jZSBvZiBSZXF1ZXN0KVxuICAgICAgICAgICAgLy8gdGhlbiBkbyBub3QgaW5zdGFudGlhdGUgYSBuZXcgUmVxdWVzdCBidXQgaW5zdGVhZFxuICAgICAgICAgICAgLy8gcmV1c2UgdGhlIHJlcXVlc3QgYXMgdG8gbm90IGRpc3R1cmIgdGhlIGJvZHkgaW4gdGhlIGV2ZW50IGl0J3MgYSBSZWFkYWJsZVN0cmVhbS5cbiAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSB0eXBlb2YgcmVzb3VyY2UgPT09ICdzdHJpbmcnIHx8IHJlc291cmNlIGluc3RhbmNlb2YgVVJMID8gbmV3IFJlcXVlc3QocmVzb3VyY2UsIG9wdGlvbnMpIDogcmVzb3VyY2U7XG4gICAgICAgICAgICBpZiAocmVxdWVzdC5tZXRob2QgIT09ICdHRVQnICYmIHJlcXVlc3QubWV0aG9kICE9PSAnSEVBRCcgfHwgcmVxdWVzdC5rZWVwYWxpdmUpIHtcbiAgICAgICAgICAgICAgICAvLyBXZSBjdXJyZW50bHkgZG9uJ3QgZGVkdXBlIHJlcXVlc3RzIHRoYXQgbWlnaHQgaGF2ZSBzaWRlLWVmZmVjdHMuIFRob3NlXG4gICAgICAgICAgICAgICAgLy8gaGF2ZSB0byBiZSBleHBsaWNpdGx5IGNhY2hlZC4gV2UgYXNzdW1lIHRoYXQgdGhlIHJlcXVlc3QgZG9lc24ndCBoYXZlIGFcbiAgICAgICAgICAgICAgICAvLyBib2R5IGlmIGl0J3MgR0VUIG9yIEhFQUQuXG4gICAgICAgICAgICAgICAgLy8ga2VlcGFsaXZlIGdldHMgdHJlYXRlZCB0aGUgc2FtZSBhcyBpZiB5b3UgcGFzc2VkIGEgY3VzdG9tIGNhY2hlIHNpZ25hbC5cbiAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxGZXRjaChyZXNvdXJjZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYWNoZUtleSA9IGdlbmVyYXRlQ2FjaGVLZXkocmVxdWVzdCk7XG4gICAgICAgICAgICB1cmwgPSByZXF1ZXN0LnVybDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjYWNoZUVudHJpZXMgPSBnZXRDYWNoZUVudHJpZXModXJsKTtcbiAgICAgICAgZm9yKGxldCBpID0gMCwgaiA9IGNhY2hlRW50cmllcy5sZW5ndGg7IGkgPCBqOyBpICs9IDEpe1xuICAgICAgICAgICAgY29uc3QgW2tleSwgcHJvbWlzZV0gPSBjYWNoZUVudHJpZXNbaV07XG4gICAgICAgICAgICBpZiAoa2V5ID09PSBjYWNoZUtleSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9taXNlLnRoZW4oKCk9PntcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBjYWNoZUVudHJpZXNbaV1bMl07XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2UpIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdObyBjYWNoZWQgcmVzcG9uc2UnKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNTc5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2UncmUgY2xvbmluZyB0aGUgcmVzcG9uc2UgdXNpbmcgdGhpcyB1dGlsaXR5IGJlY2F1c2UgdGhlcmUgZXhpc3RzXG4gICAgICAgICAgICAgICAgICAgIC8vIGEgYnVnIGluIHRoZSB1bmRpY2kgbGlicmFyeSBhcm91bmQgcmVzcG9uc2UgY2xvbmluZy4gU2VlIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyBmb2xsb3dpbmcgcHVsbCByZXF1ZXN0IGZvciBtb3JlIGRldGFpbHM6XG4gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS92ZXJjZWwvbmV4dC5qcy9wdWxsLzczMjc0XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFtjbG9uZWQxLCBjbG9uZWQyXSA9ICgwLCBfY2xvbmVyZXNwb25zZS5jbG9uZVJlc3BvbnNlKShyZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlRW50cmllc1tpXVsyXSA9IGNsb25lZDI7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjbG9uZWQxO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIFdlIHBhc3MgdGhlIG9yaWdpbmFsIGFyZ3VtZW50cyBoZXJlIGluIGNhc2Ugbm9ybWFsaXppbmcgdGhlIFJlcXVlc3RcbiAgICAgICAgLy8gZG9lc24ndCBpbmNsdWRlIGFsbCB0aGUgb3B0aW9ucyBpbiB0aGlzIGVudmlyb25tZW50LlxuICAgICAgICBjb25zdCBwcm9taXNlID0gb3JpZ2luYWxGZXRjaChyZXNvdXJjZSwgb3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gW1xuICAgICAgICAgICAgY2FjaGVLZXksXG4gICAgICAgICAgICBwcm9taXNlLFxuICAgICAgICAgICAgbnVsbFxuICAgICAgICBdO1xuICAgICAgICBjYWNoZUVudHJpZXMucHVzaChlbnRyeSk7XG4gICAgICAgIHJldHVybiBwcm9taXNlLnRoZW4oKHJlc3BvbnNlKT0+e1xuICAgICAgICAgICAgLy8gV2UncmUgY2xvbmluZyB0aGUgcmVzcG9uc2UgdXNpbmcgdGhpcyB1dGlsaXR5IGJlY2F1c2UgdGhlcmUgZXhpc3RzXG4gICAgICAgICAgICAvLyBhIGJ1ZyBpbiB0aGUgdW5kaWNpIGxpYnJhcnkgYXJvdW5kIHJlc3BvbnNlIGNsb25pbmcuIFNlZSB0aGVcbiAgICAgICAgICAgIC8vIGZvbGxvd2luZyBwdWxsIHJlcXVlc3QgZm9yIG1vcmUgZGV0YWlsczpcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS92ZXJjZWwvbmV4dC5qcy9wdWxsLzczMjc0XG4gICAgICAgICAgICBjb25zdCBbY2xvbmVkMSwgY2xvbmVkMl0gPSAoMCwgX2Nsb25lcmVzcG9uc2UuY2xvbmVSZXNwb25zZSkocmVzcG9uc2UpO1xuICAgICAgICAgICAgZW50cnlbMl0gPSBjbG9uZWQyO1xuICAgICAgICAgICAgcmV0dXJuIGNsb25lZDE7XG4gICAgICAgIH0pO1xuICAgIH07XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRlZHVwZS1mZXRjaC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/dedupe-fetch.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/lib/etag.js":
|
||
/*!***************************************************!*\
|
||
!*** ./node_modules/next/dist/server/lib/etag.js ***!
|
||
\***************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * FNV-1a Hash implementation\n * @author Travis Webb (tjwebb) <me@traviswebb.com>\n *\n * Ported from https://github.com/tjwebb/fnv-plus/blob/master/index.js\n *\n * Simplified, optimized and add modified for 52 bit, which provides a larger hash space\n * and still making use of Javascript's 53-bit integer space.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n fnv1a52: function() {\n return fnv1a52;\n },\n generateETag: function() {\n return generateETag;\n }\n});\nconst fnv1a52 = (str)=>{\n const len = str.length;\n let i = 0, t0 = 0, v0 = 0x2325, t1 = 0, v1 = 0x8422, t2 = 0, v2 = 0x9ce4, t3 = 0, v3 = 0xcbf2;\n while(i < len){\n v0 ^= str.charCodeAt(i++);\n t0 = v0 * 435;\n t1 = v1 * 435;\n t2 = v2 * 435;\n t3 = v3 * 435;\n t2 += v0 << 8;\n t3 += v1 << 8;\n t1 += t0 >>> 16;\n v0 = t0 & 65535;\n t2 += t1 >>> 16;\n v1 = t1 & 65535;\n v3 = t3 + (t2 >>> 16) & 65535;\n v2 = t2 & 65535;\n }\n return (v3 & 15) * 281474976710656 + v2 * 4294967296 + v1 * 65536 + (v0 ^ v3 >> 4);\n};\nconst generateETag = (payload, weak = false)=>{\n const prefix = weak ? 'W/\"' : '\"';\n return prefix + fnv1a52(payload).toString(36) + payload.length.toString(36) + '\"';\n};\n\n//# sourceMappingURL=etag.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvZXRhZy5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBaUI7QUFDakIsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQUdMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL2xpYi9ldGFnLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRk5WLTFhIEhhc2ggaW1wbGVtZW50YXRpb25cbiAqIEBhdXRob3IgVHJhdmlzIFdlYmIgKHRqd2ViYikgPG1lQHRyYXZpc3dlYmIuY29tPlxuICpcbiAqIFBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS90andlYmIvZm52LXBsdXMvYmxvYi9tYXN0ZXIvaW5kZXguanNcbiAqXG4gKiBTaW1wbGlmaWVkLCBvcHRpbWl6ZWQgYW5kIGFkZCBtb2RpZmllZCBmb3IgNTIgYml0LCB3aGljaCBwcm92aWRlcyBhIGxhcmdlciBoYXNoIHNwYWNlXG4gKiBhbmQgc3RpbGwgbWFraW5nIHVzZSBvZiBKYXZhc2NyaXB0J3MgNTMtYml0IGludGVnZXIgc3BhY2UuXG4gKi8gXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBmbnYxYTUyOiBudWxsLFxuICAgIGdlbmVyYXRlRVRhZzogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBmbnYxYTUyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGZudjFhNTI7XG4gICAgfSxcbiAgICBnZW5lcmF0ZUVUYWc6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZ2VuZXJhdGVFVGFnO1xuICAgIH1cbn0pO1xuY29uc3QgZm52MWE1MiA9IChzdHIpPT57XG4gICAgY29uc3QgbGVuID0gc3RyLmxlbmd0aDtcbiAgICBsZXQgaSA9IDAsIHQwID0gMCwgdjAgPSAweDIzMjUsIHQxID0gMCwgdjEgPSAweDg0MjIsIHQyID0gMCwgdjIgPSAweDljZTQsIHQzID0gMCwgdjMgPSAweGNiZjI7XG4gICAgd2hpbGUoaSA8IGxlbil7XG4gICAgICAgIHYwIF49IHN0ci5jaGFyQ29kZUF0KGkrKyk7XG4gICAgICAgIHQwID0gdjAgKiA0MzU7XG4gICAgICAgIHQxID0gdjEgKiA0MzU7XG4gICAgICAgIHQyID0gdjIgKiA0MzU7XG4gICAgICAgIHQzID0gdjMgKiA0MzU7XG4gICAgICAgIHQyICs9IHYwIDw8IDg7XG4gICAgICAgIHQzICs9IHYxIDw8IDg7XG4gICAgICAgIHQxICs9IHQwID4+PiAxNjtcbiAgICAgICAgdjAgPSB0MCAmIDY1NTM1O1xuICAgICAgICB0MiArPSB0MSA+Pj4gMTY7XG4gICAgICAgIHYxID0gdDEgJiA2NTUzNTtcbiAgICAgICAgdjMgPSB0MyArICh0MiA+Pj4gMTYpICYgNjU1MzU7XG4gICAgICAgIHYyID0gdDIgJiA2NTUzNTtcbiAgICB9XG4gICAgcmV0dXJuICh2MyAmIDE1KSAqIDI4MTQ3NDk3NjcxMDY1NiArIHYyICogNDI5NDk2NzI5NiArIHYxICogNjU1MzYgKyAodjAgXiB2MyA+PiA0KTtcbn07XG5jb25zdCBnZW5lcmF0ZUVUYWcgPSAocGF5bG9hZCwgd2VhayA9IGZhbHNlKT0+e1xuICAgIGNvbnN0IHByZWZpeCA9IHdlYWsgPyAnVy9cIicgOiAnXCInO1xuICAgIHJldHVybiBwcmVmaXggKyBmbnYxYTUyKHBheWxvYWQpLnRvU3RyaW5nKDM2KSArIHBheWxvYWQubGVuZ3RoLnRvU3RyaW5nKDM2KSArICdcIic7XG59O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1ldGFnLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/etag.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/lib/experimental/ppr.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/lib/experimental/ppr.js ***!
|
||
\***************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * If set to `incremental`, only those leaf pages that export\n * `experimental_ppr = true` will have partial prerendering enabled. If any\n * page exports this value as `false` or does not export it at all will not\n * have partial prerendering enabled. If set to a boolean, the options for\n * `experimental_ppr` will be ignored.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n checkIsAppPPREnabled: function() {\n return checkIsAppPPREnabled;\n },\n checkIsRoutePPREnabled: function() {\n return checkIsRoutePPREnabled;\n }\n});\nfunction checkIsAppPPREnabled(config) {\n // If the config is undefined, partial prerendering is disabled.\n if (typeof config === 'undefined') return false;\n // If the config is a boolean, use it directly.\n if (typeof config === 'boolean') return config;\n // If the config is a string, it must be 'incremental' to enable partial\n // prerendering.\n if (config === 'incremental') return true;\n return false;\n}\nfunction checkIsRoutePPREnabled(config) {\n // If the config is undefined, partial prerendering is disabled.\n if (typeof config === 'undefined') return false;\n // If the config is a boolean, use it directly.\n if (typeof config === 'boolean') return config;\n return false;\n}\n\n//# sourceMappingURL=ppr.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvZXhwZXJpbWVudGFsL3Bwci5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFpQjtBQUNqQiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBR0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL2xpYi9leHBlcmltZW50YWwvcHByLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSWYgc2V0IHRvIGBpbmNyZW1lbnRhbGAsIG9ubHkgdGhvc2UgbGVhZiBwYWdlcyB0aGF0IGV4cG9ydFxuICogYGV4cGVyaW1lbnRhbF9wcHIgPSB0cnVlYCB3aWxsIGhhdmUgcGFydGlhbCBwcmVyZW5kZXJpbmcgZW5hYmxlZC4gSWYgYW55XG4gKiBwYWdlIGV4cG9ydHMgdGhpcyB2YWx1ZSBhcyBgZmFsc2VgIG9yIGRvZXMgbm90IGV4cG9ydCBpdCBhdCBhbGwgd2lsbCBub3RcbiAqIGhhdmUgcGFydGlhbCBwcmVyZW5kZXJpbmcgZW5hYmxlZC4gSWYgc2V0IHRvIGEgYm9vbGVhbiwgdGhlIG9wdGlvbnMgZm9yXG4gKiBgZXhwZXJpbWVudGFsX3BwcmAgd2lsbCBiZSBpZ25vcmVkLlxuICovIFwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgY2hlY2tJc0FwcFBQUkVuYWJsZWQ6IG51bGwsXG4gICAgY2hlY2tJc1JvdXRlUFBSRW5hYmxlZDogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBjaGVja0lzQXBwUFBSRW5hYmxlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjaGVja0lzQXBwUFBSRW5hYmxlZDtcbiAgICB9LFxuICAgIGNoZWNrSXNSb3V0ZVBQUkVuYWJsZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY2hlY2tJc1JvdXRlUFBSRW5hYmxlZDtcbiAgICB9XG59KTtcbmZ1bmN0aW9uIGNoZWNrSXNBcHBQUFJFbmFibGVkKGNvbmZpZykge1xuICAgIC8vIElmIHRoZSBjb25maWcgaXMgdW5kZWZpbmVkLCBwYXJ0aWFsIHByZXJlbmRlcmluZyBpcyBkaXNhYmxlZC5cbiAgICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiBmYWxzZTtcbiAgICAvLyBJZiB0aGUgY29uZmlnIGlzIGEgYm9vbGVhbiwgdXNlIGl0IGRpcmVjdGx5LlxuICAgIGlmICh0eXBlb2YgY29uZmlnID09PSAnYm9vbGVhbicpIHJldHVybiBjb25maWc7XG4gICAgLy8gSWYgdGhlIGNvbmZpZyBpcyBhIHN0cmluZywgaXQgbXVzdCBiZSAnaW5jcmVtZW50YWwnIHRvIGVuYWJsZSBwYXJ0aWFsXG4gICAgLy8gcHJlcmVuZGVyaW5nLlxuICAgIGlmIChjb25maWcgPT09ICdpbmNyZW1lbnRhbCcpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGNoZWNrSXNSb3V0ZVBQUkVuYWJsZWQoY29uZmlnKSB7XG4gICAgLy8gSWYgdGhlIGNvbmZpZyBpcyB1bmRlZmluZWQsIHBhcnRpYWwgcHJlcmVuZGVyaW5nIGlzIGRpc2FibGVkLlxuICAgIGlmICh0eXBlb2YgY29uZmlnID09PSAndW5kZWZpbmVkJykgcmV0dXJuIGZhbHNlO1xuICAgIC8vIElmIHRoZSBjb25maWcgaXMgYSBib29sZWFuLCB1c2UgaXQgZGlyZWN0bHkuXG4gICAgaWYgKHR5cGVvZiBjb25maWcgPT09ICdib29sZWFuJykgcmV0dXJuIGNvbmZpZztcbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBwci5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/experimental/ppr.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/lib/lazy-result.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/next/dist/server/lib/lazy-result.js ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createLazyResult: function() {\n return createLazyResult;\n },\n isResolvedLazyResult: function() {\n return isResolvedLazyResult;\n }\n});\nfunction createLazyResult(fn) {\n let pendingResult;\n const result = {\n then (onfulfilled, onrejected) {\n if (!pendingResult) {\n pendingResult = Promise.resolve(fn());\n }\n pendingResult.then((value)=>{\n result.value = value;\n }).catch(()=>{\n // The externally awaited result will be rejected via `onrejected`. We\n // don't need to handle it here. But we do want to avoid an unhandled\n // rejection.\n });\n return pendingResult.then(onfulfilled, onrejected);\n }\n };\n return result;\n}\nfunction isResolvedLazyResult(result) {\n return result.hasOwnProperty('value');\n}\n\n//# sourceMappingURL=lazy-result.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvbGF6eS1yZXN1bHQuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBR0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvbGliL2xhenktcmVzdWx0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgY3JlYXRlTGF6eVJlc3VsdDogbnVsbCxcbiAgICBpc1Jlc29sdmVkTGF6eVJlc3VsdDogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBjcmVhdGVMYXp5UmVzdWx0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlSZXN1bHQ7XG4gICAgfSxcbiAgICBpc1Jlc29sdmVkTGF6eVJlc3VsdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpc1Jlc29sdmVkTGF6eVJlc3VsdDtcbiAgICB9XG59KTtcbmZ1bmN0aW9uIGNyZWF0ZUxhenlSZXN1bHQoZm4pIHtcbiAgICBsZXQgcGVuZGluZ1Jlc3VsdDtcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAgIHRoZW4gKG9uZnVsZmlsbGVkLCBvbnJlamVjdGVkKSB7XG4gICAgICAgICAgICBpZiAoIXBlbmRpbmdSZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBwZW5kaW5nUmVzdWx0ID0gUHJvbWlzZS5yZXNvbHZlKGZuKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGVuZGluZ1Jlc3VsdC50aGVuKCh2YWx1ZSk9PntcbiAgICAgICAgICAgICAgICByZXN1bHQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIH0pLmNhdGNoKCgpPT57XG4gICAgICAgICAgICAvLyBUaGUgZXh0ZXJuYWxseSBhd2FpdGVkIHJlc3VsdCB3aWxsIGJlIHJlamVjdGVkIHZpYSBgb25yZWplY3RlZGAuIFdlXG4gICAgICAgICAgICAvLyBkb24ndCBuZWVkIHRvIGhhbmRsZSBpdCBoZXJlLiBCdXQgd2UgZG8gd2FudCB0byBhdm9pZCBhbiB1bmhhbmRsZWRcbiAgICAgICAgICAgIC8vIHJlamVjdGlvbi5cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHBlbmRpbmdSZXN1bHQudGhlbihvbmZ1bGZpbGxlZCwgb25yZWplY3RlZCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBpc1Jlc29sdmVkTGF6eVJlc3VsdChyZXN1bHQpIHtcbiAgICByZXR1cm4gcmVzdWx0Lmhhc093blByb3BlcnR5KCd2YWx1ZScpO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1sYXp5LXJlc3VsdC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/lazy-result.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/lib/lru-cache.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/next/dist/server/lib/lru-cache.js ***!
|
||
\********************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * Node in the doubly-linked list used for LRU tracking.\n * Each node represents a cache entry with bidirectional pointers.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"LRUCache\", ({\n enumerable: true,\n get: function() {\n return LRUCache;\n }\n}));\nclass LRUNode {\n constructor(key, data, size){\n this.prev = null;\n this.next = null;\n this.key = key;\n this.data = data;\n this.size = size;\n }\n}\n/**\n * Sentinel node used for head/tail boundaries.\n * These nodes don't contain actual cache data but simplify list operations.\n */ class SentinelNode {\n constructor(){\n this.prev = null;\n this.next = null;\n }\n}\nclass LRUCache {\n constructor(maxSize, calculateSize, onEvict){\n this.cache = new Map();\n this.totalSize = 0;\n this.maxSize = maxSize;\n this.calculateSize = calculateSize;\n this.onEvict = onEvict;\n // Create sentinel nodes to simplify doubly-linked list operations\n // HEAD <-> TAIL (empty list)\n this.head = new SentinelNode();\n this.tail = new SentinelNode();\n this.head.next = this.tail;\n this.tail.prev = this.head;\n }\n /**\n * Adds a node immediately after the head (marks as most recently used).\n * Used when inserting new items or when an item is accessed.\n * PRECONDITION: node must be disconnected (prev/next should be null)\n */ addToHead(node) {\n node.prev = this.head;\n node.next = this.head.next;\n // head.next is always non-null (points to tail or another node)\n this.head.next.prev = node;\n this.head.next = node;\n }\n /**\n * Removes a node from its current position in the doubly-linked list.\n * Updates the prev/next pointers of adjacent nodes to maintain list integrity.\n * PRECONDITION: node must be connected (prev/next are non-null)\n */ removeNode(node) {\n // Connected nodes always have non-null prev/next\n node.prev.next = node.next;\n node.next.prev = node.prev;\n }\n /**\n * Moves an existing node to the head position (marks as most recently used).\n * This is the core LRU operation - accessed items become most recent.\n */ moveToHead(node) {\n this.removeNode(node);\n this.addToHead(node);\n }\n /**\n * Removes and returns the least recently used node (the one before tail).\n * This is called during eviction when the cache exceeds capacity.\n * PRECONDITION: cache is not empty (ensured by caller)\n */ removeTail() {\n const lastNode = this.tail.prev;\n // tail.prev is always non-null and always LRUNode when cache is not empty\n this.removeNode(lastNode);\n return lastNode;\n }\n /**\n * Sets a key-value pair in the cache.\n * If the key exists, updates the value and moves to head.\n * If new, adds at head and evicts from tail if necessary.\n *\n * Time Complexity:\n * - O(1) for uniform item sizes\n * - O(k) where k is the number of items evicted (can be O(N) for variable sizes)\n */ set(key, value) {\n const size = (this.calculateSize == null ? void 0 : this.calculateSize.call(this, value)) ?? 1;\n if (size <= 0) {\n throw Object.defineProperty(new Error(`LRUCache: calculateSize returned ${size}, but size must be > 0. ` + `Items with size 0 would never be evicted, causing unbounded cache growth.`), \"__NEXT_ERROR_CODE\", {\n value: \"E1045\",\n enumerable: false,\n configurable: true\n });\n }\n if (size > this.maxSize) {\n console.warn('Single item size exceeds maxSize');\n return false;\n }\n const existing = this.cache.get(key);\n if (existing) {\n // Update existing node: adjust size and move to head (most recent)\n existing.data = value;\n this.totalSize = this.totalSize - existing.size + size;\n existing.size = size;\n this.moveToHead(existing);\n } else {\n // Add new node at head (most recent position)\n const newNode = new LRUNode(key, value, size);\n this.cache.set(key, newNode);\n this.addToHead(newNode);\n this.totalSize += size;\n }\n // Evict least recently used items until under capacity\n while(this.totalSize > this.maxSize && this.cache.size > 0){\n const tail = this.removeTail();\n this.cache.delete(tail.key);\n this.totalSize -= tail.size;\n this.onEvict == null ? void 0 : this.onEvict.call(this, tail.key, tail.data);\n }\n return true;\n }\n /**\n * Checks if a key exists in the cache.\n * This is a pure query operation - does NOT update LRU order.\n *\n * Time Complexity: O(1)\n */ has(key) {\n return this.cache.has(key);\n }\n /**\n * Retrieves a value by key and marks it as most recently used.\n * Moving to head maintains the LRU property for future evictions.\n *\n * Time Complexity: O(1)\n */ get(key) {\n const node = this.cache.get(key);\n if (!node) return undefined;\n // Mark as most recently used by moving to head\n this.moveToHead(node);\n return node.data;\n }\n /**\n * Returns an iterator over the cache entries. The order is outputted in the\n * order of most recently used to least recently used.\n */ *[Symbol.iterator]() {\n let current = this.head.next;\n while(current && current !== this.tail){\n // Between head and tail, current is always LRUNode\n const node = current;\n yield [\n node.key,\n node.data\n ];\n current = current.next;\n }\n }\n /**\n * Removes a specific key from the cache.\n * Updates both the hash map and doubly-linked list.\n *\n * Note: This is an explicit removal and does NOT trigger the `onEvict`\n * callback. Use this for intentional deletions where eviction tracking\n * is not needed.\n *\n * Time Complexity: O(1)\n */ remove(key) {\n const node = this.cache.get(key);\n if (!node) return;\n this.removeNode(node);\n this.cache.delete(key);\n this.totalSize -= node.size;\n }\n /**\n * Returns the number of items in the cache.\n */ get size() {\n return this.cache.size;\n }\n /**\n * Returns the current total size of all cached items.\n * This uses the custom size calculation if provided.\n */ get currentSize() {\n return this.totalSize;\n }\n}\n\n//# sourceMappingURL=lru-cache.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvbHJ1LWNhY2hlLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLElBQWlCO0FBQ2pCLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLDRDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzRkFBc0YsS0FBSztBQUMzRjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL2xpYi9scnUtY2FjaGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBOb2RlIGluIHRoZSBkb3VibHktbGlua2VkIGxpc3QgdXNlZCBmb3IgTFJVIHRyYWNraW5nLlxuICogRWFjaCBub2RlIHJlcHJlc2VudHMgYSBjYWNoZSBlbnRyeSB3aXRoIGJpZGlyZWN0aW9uYWwgcG9pbnRlcnMuXG4gKi8gXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJMUlVDYWNoZVwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTFJVQ2FjaGU7XG4gICAgfVxufSk7XG5jbGFzcyBMUlVOb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihrZXksIGRhdGEsIHNpemUpe1xuICAgICAgICB0aGlzLnByZXYgPSBudWxsO1xuICAgICAgICB0aGlzLm5leHQgPSBudWxsO1xuICAgICAgICB0aGlzLmtleSA9IGtleTtcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICAgICAgdGhpcy5zaXplID0gc2l6ZTtcbiAgICB9XG59XG4vKipcbiAqIFNlbnRpbmVsIG5vZGUgdXNlZCBmb3IgaGVhZC90YWlsIGJvdW5kYXJpZXMuXG4gKiBUaGVzZSBub2RlcyBkb24ndCBjb250YWluIGFjdHVhbCBjYWNoZSBkYXRhIGJ1dCBzaW1wbGlmeSBsaXN0IG9wZXJhdGlvbnMuXG4gKi8gY2xhc3MgU2VudGluZWxOb2RlIHtcbiAgICBjb25zdHJ1Y3Rvcigpe1xuICAgICAgICB0aGlzLnByZXYgPSBudWxsO1xuICAgICAgICB0aGlzLm5leHQgPSBudWxsO1xuICAgIH1cbn1cbmNsYXNzIExSVUNhY2hlIHtcbiAgICBjb25zdHJ1Y3RvcihtYXhTaXplLCBjYWxjdWxhdGVTaXplLCBvbkV2aWN0KXtcbiAgICAgICAgdGhpcy5jYWNoZSA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy50b3RhbFNpemUgPSAwO1xuICAgICAgICB0aGlzLm1heFNpemUgPSBtYXhTaXplO1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZVNpemUgPSBjYWxjdWxhdGVTaXplO1xuICAgICAgICB0aGlzLm9uRXZpY3QgPSBvbkV2aWN0O1xuICAgICAgICAvLyBDcmVhdGUgc2VudGluZWwgbm9kZXMgdG8gc2ltcGxpZnkgZG91Ymx5LWxpbmtlZCBsaXN0IG9wZXJhdGlvbnNcbiAgICAgICAgLy8gSEVBRCA8LT4gVEFJTCAoZW1wdHkgbGlzdClcbiAgICAgICAgdGhpcy5oZWFkID0gbmV3IFNlbnRpbmVsTm9kZSgpO1xuICAgICAgICB0aGlzLnRhaWwgPSBuZXcgU2VudGluZWxOb2RlKCk7XG4gICAgICAgIHRoaXMuaGVhZC5uZXh0ID0gdGhpcy50YWlsO1xuICAgICAgICB0aGlzLnRhaWwucHJldiA9IHRoaXMuaGVhZDtcbiAgICB9XG4gICAgLyoqXG4gICAqIEFkZHMgYSBub2RlIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBoZWFkIChtYXJrcyBhcyBtb3N0IHJlY2VudGx5IHVzZWQpLlxuICAgKiBVc2VkIHdoZW4gaW5zZXJ0aW5nIG5ldyBpdGVtcyBvciB3aGVuIGFuIGl0ZW0gaXMgYWNjZXNzZWQuXG4gICAqIFBSRUNPTkRJVElPTjogbm9kZSBtdXN0IGJlIGRpc2Nvbm5lY3RlZCAocHJldi9uZXh0IHNob3VsZCBiZSBudWxsKVxuICAgKi8gYWRkVG9IZWFkKG5vZGUpIHtcbiAgICAgICAgbm9kZS5wcmV2ID0gdGhpcy5oZWFkO1xuICAgICAgICBub2RlLm5leHQgPSB0aGlzLmhlYWQubmV4dDtcbiAgICAgICAgLy8gaGVhZC5uZXh0IGlzIGFsd2F5cyBub24tbnVsbCAocG9pbnRzIHRvIHRhaWwgb3IgYW5vdGhlciBub2RlKVxuICAgICAgICB0aGlzLmhlYWQubmV4dC5wcmV2ID0gbm9kZTtcbiAgICAgICAgdGhpcy5oZWFkLm5leHQgPSBub2RlO1xuICAgIH1cbiAgICAvKipcbiAgICogUmVtb3ZlcyBhIG5vZGUgZnJvbSBpdHMgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgZG91Ymx5LWxpbmtlZCBsaXN0LlxuICAgKiBVcGRhdGVzIHRoZSBwcmV2L25leHQgcG9pbnRlcnMgb2YgYWRqYWNlbnQgbm9kZXMgdG8gbWFpbnRhaW4gbGlzdCBpbnRlZ3JpdHkuXG4gICAqIFBSRUNPTkRJVElPTjogbm9kZSBtdXN0IGJlIGNvbm5lY3RlZCAocHJldi9uZXh0IGFyZSBub24tbnVsbClcbiAgICovIHJlbW92ZU5vZGUobm9kZSkge1xuICAgICAgICAvLyBDb25uZWN0ZWQgbm9kZXMgYWx3YXlzIGhhdmUgbm9uLW51bGwgcHJldi9uZXh0XG4gICAgICAgIG5vZGUucHJldi5uZXh0ID0gbm9kZS5uZXh0O1xuICAgICAgICBub2RlLm5leHQucHJldiA9IG5vZGUucHJldjtcbiAgICB9XG4gICAgLyoqXG4gICAqIE1vdmVzIGFuIGV4aXN0aW5nIG5vZGUgdG8gdGhlIGhlYWQgcG9zaXRpb24gKG1hcmtzIGFzIG1vc3QgcmVjZW50bHkgdXNlZCkuXG4gICAqIFRoaXMgaXMgdGhlIGNvcmUgTFJVIG9wZXJhdGlvbiAtIGFjY2Vzc2VkIGl0ZW1zIGJlY29tZSBtb3N0IHJlY2VudC5cbiAgICovIG1vdmVUb0hlYWQobm9kZSkge1xuICAgICAgICB0aGlzLnJlbW92ZU5vZGUobm9kZSk7XG4gICAgICAgIHRoaXMuYWRkVG9IZWFkKG5vZGUpO1xuICAgIH1cbiAgICAvKipcbiAgICogUmVtb3ZlcyBhbmQgcmV0dXJucyB0aGUgbGVhc3QgcmVjZW50bHkgdXNlZCBub2RlICh0aGUgb25lIGJlZm9yZSB0YWlsKS5cbiAgICogVGhpcyBpcyBjYWxsZWQgZHVyaW5nIGV2aWN0aW9uIHdoZW4gdGhlIGNhY2hlIGV4Y2VlZHMgY2FwYWNpdHkuXG4gICAqIFBSRUNPTkRJVElPTjogY2FjaGUgaXMgbm90IGVtcHR5IChlbnN1cmVkIGJ5IGNhbGxlcilcbiAgICovIHJlbW92ZVRhaWwoKSB7XG4gICAgICAgIGNvbnN0IGxhc3ROb2RlID0gdGhpcy50YWlsLnByZXY7XG4gICAgICAgIC8vIHRhaWwucHJldiBpcyBhbHdheXMgbm9uLW51bGwgYW5kIGFsd2F5cyBMUlVOb2RlIHdoZW4gY2FjaGUgaXMgbm90IGVtcHR5XG4gICAgICAgIHRoaXMucmVtb3ZlTm9kZShsYXN0Tm9kZSk7XG4gICAgICAgIHJldHVybiBsYXN0Tm9kZTtcbiAgICB9XG4gICAgLyoqXG4gICAqIFNldHMgYSBrZXktdmFsdWUgcGFpciBpbiB0aGUgY2FjaGUuXG4gICAqIElmIHRoZSBrZXkgZXhpc3RzLCB1cGRhdGVzIHRoZSB2YWx1ZSBhbmQgbW92ZXMgdG8gaGVhZC5cbiAgICogSWYgbmV3LCBhZGRzIGF0IGhlYWQgYW5kIGV2aWN0cyBmcm9tIHRhaWwgaWYgbmVjZXNzYXJ5LlxuICAgKlxuICAgKiBUaW1lIENvbXBsZXhpdHk6XG4gICAqIC0gTygxKSBmb3IgdW5pZm9ybSBpdGVtIHNpemVzXG4gICAqIC0gTyhrKSB3aGVyZSBrIGlzIHRoZSBudW1iZXIgb2YgaXRlbXMgZXZpY3RlZCAoY2FuIGJlIE8oTikgZm9yIHZhcmlhYmxlIHNpemVzKVxuICAgKi8gc2V0KGtleSwgdmFsdWUpIHtcbiAgICAgICAgY29uc3Qgc2l6ZSA9ICh0aGlzLmNhbGN1bGF0ZVNpemUgPT0gbnVsbCA/IHZvaWQgMCA6IHRoaXMuY2FsY3VsYXRlU2l6ZS5jYWxsKHRoaXMsIHZhbHVlKSkgPz8gMTtcbiAgICAgICAgaWYgKHNpemUgPD0gMCkge1xuICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcihgTFJVQ2FjaGU6IGNhbGN1bGF0ZVNpemUgcmV0dXJuZWQgJHtzaXplfSwgYnV0IHNpemUgbXVzdCBiZSA+IDAuIGAgKyBgSXRlbXMgd2l0aCBzaXplIDAgd291bGQgbmV2ZXIgYmUgZXZpY3RlZCwgY2F1c2luZyB1bmJvdW5kZWQgY2FjaGUgZ3Jvd3RoLmApLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMTA0NVwiLFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNpemUgPiB0aGlzLm1heFNpemUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignU2luZ2xlIGl0ZW0gc2l6ZSBleGNlZWRzIG1heFNpemUnKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuY2FjaGUuZ2V0KGtleSk7XG4gICAgICAgIGlmIChleGlzdGluZykge1xuICAgICAgICAgICAgLy8gVXBkYXRlIGV4aXN0aW5nIG5vZGU6IGFkanVzdCBzaXplIGFuZCBtb3ZlIHRvIGhlYWQgKG1vc3QgcmVjZW50KVxuICAgICAgICAgICAgZXhpc3RpbmcuZGF0YSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy50b3RhbFNpemUgPSB0aGlzLnRvdGFsU2l6ZSAtIGV4aXN0aW5nLnNpemUgKyBzaXplO1xuICAgICAgICAgICAgZXhpc3Rpbmcuc2l6ZSA9IHNpemU7XG4gICAgICAgICAgICB0aGlzLm1vdmVUb0hlYWQoZXhpc3RpbmcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQWRkIG5ldyBub2RlIGF0IGhlYWQgKG1vc3QgcmVjZW50IHBvc2l0aW9uKVxuICAgICAgICAgICAgY29uc3QgbmV3Tm9kZSA9IG5ldyBMUlVOb2RlKGtleSwgdmFsdWUsIHNpemUpO1xuICAgICAgICAgICAgdGhpcy5jYWNoZS5zZXQoa2V5LCBuZXdOb2RlKTtcbiAgICAgICAgICAgIHRoaXMuYWRkVG9IZWFkKG5ld05vZGUpO1xuICAgICAgICAgICAgdGhpcy50b3RhbFNpemUgKz0gc2l6ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBFdmljdCBsZWFzdCByZWNlbnRseSB1c2VkIGl0ZW1zIHVudGlsIHVuZGVyIGNhcGFjaXR5XG4gICAgICAgIHdoaWxlKHRoaXMudG90YWxTaXplID4gdGhpcy5tYXhTaXplICYmIHRoaXMuY2FjaGUuc2l6ZSA+IDApe1xuICAgICAgICAgICAgY29uc3QgdGFpbCA9IHRoaXMucmVtb3ZlVGFpbCgpO1xuICAgICAgICAgICAgdGhpcy5jYWNoZS5kZWxldGUodGFpbC5rZXkpO1xuICAgICAgICAgICAgdGhpcy50b3RhbFNpemUgLT0gdGFpbC5zaXplO1xuICAgICAgICAgICAgdGhpcy5vbkV2aWN0ID09IG51bGwgPyB2b2lkIDAgOiB0aGlzLm9uRXZpY3QuY2FsbCh0aGlzLCB0YWlsLmtleSwgdGFpbC5kYXRhKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLyoqXG4gICAqIENoZWNrcyBpZiBhIGtleSBleGlzdHMgaW4gdGhlIGNhY2hlLlxuICAgKiBUaGlzIGlzIGEgcHVyZSBxdWVyeSBvcGVyYXRpb24gLSBkb2VzIE5PVCB1cGRhdGUgTFJVIG9yZGVyLlxuICAgKlxuICAgKiBUaW1lIENvbXBsZXhpdHk6IE8oMSlcbiAgICovIGhhcyhrZXkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGUuaGFzKGtleSk7XG4gICAgfVxuICAgIC8qKlxuICAgKiBSZXRyaWV2ZXMgYSB2YWx1ZSBieSBrZXkgYW5kIG1hcmtzIGl0IGFzIG1vc3QgcmVjZW50bHkgdXNlZC5cbiAgICogTW92aW5nIHRvIGhlYWQgbWFpbnRhaW5zIHRoZSBMUlUgcHJvcGVydHkgZm9yIGZ1dHVyZSBldmljdGlvbnMuXG4gICAqXG4gICAqIFRpbWUgQ29tcGxleGl0eTogTygxKVxuICAgKi8gZ2V0KGtleSkge1xuICAgICAgICBjb25zdCBub2RlID0gdGhpcy5jYWNoZS5nZXQoa2V5KTtcbiAgICAgICAgaWYgKCFub2RlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAvLyBNYXJrIGFzIG1vc3QgcmVjZW50bHkgdXNlZCBieSBtb3ZpbmcgdG8gaGVhZFxuICAgICAgICB0aGlzLm1vdmVUb0hlYWQobm9kZSk7XG4gICAgICAgIHJldHVybiBub2RlLmRhdGE7XG4gICAgfVxuICAgIC8qKlxuICAgKiBSZXR1cm5zIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGNhY2hlIGVudHJpZXMuIFRoZSBvcmRlciBpcyBvdXRwdXR0ZWQgaW4gdGhlXG4gICAqIG9yZGVyIG9mIG1vc3QgcmVjZW50bHkgdXNlZCB0byBsZWFzdCByZWNlbnRseSB1c2VkLlxuICAgKi8gKltTeW1ib2wuaXRlcmF0b3JdKCkge1xuICAgICAgICBsZXQgY3VycmVudCA9IHRoaXMuaGVhZC5uZXh0O1xuICAgICAgICB3aGlsZShjdXJyZW50ICYmIGN1cnJlbnQgIT09IHRoaXMudGFpbCl7XG4gICAgICAgICAgICAvLyBCZXR3ZWVuIGhlYWQgYW5kIHRhaWwsIGN1cnJlbnQgaXMgYWx3YXlzIExSVU5vZGVcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBjdXJyZW50O1xuICAgICAgICAgICAgeWllbGQgW1xuICAgICAgICAgICAgICAgIG5vZGUua2V5LFxuICAgICAgICAgICAgICAgIG5vZGUuZGF0YVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAqIFJlbW92ZXMgYSBzcGVjaWZpYyBrZXkgZnJvbSB0aGUgY2FjaGUuXG4gICAqIFVwZGF0ZXMgYm90aCB0aGUgaGFzaCBtYXAgYW5kIGRvdWJseS1saW5rZWQgbGlzdC5cbiAgICpcbiAgICogTm90ZTogVGhpcyBpcyBhbiBleHBsaWNpdCByZW1vdmFsIGFuZCBkb2VzIE5PVCB0cmlnZ2VyIHRoZSBgb25FdmljdGBcbiAgICogY2FsbGJhY2suIFVzZSB0aGlzIGZvciBpbnRlbnRpb25hbCBkZWxldGlvbnMgd2hlcmUgZXZpY3Rpb24gdHJhY2tpbmdcbiAgICogaXMgbm90IG5lZWRlZC5cbiAgICpcbiAgICogVGltZSBDb21wbGV4aXR5OiBPKDEpXG4gICAqLyByZW1vdmUoa2V5KSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmNhY2hlLmdldChrZXkpO1xuICAgICAgICBpZiAoIW5vZGUpIHJldHVybjtcbiAgICAgICAgdGhpcy5yZW1vdmVOb2RlKG5vZGUpO1xuICAgICAgICB0aGlzLmNhY2hlLmRlbGV0ZShrZXkpO1xuICAgICAgICB0aGlzLnRvdGFsU2l6ZSAtPSBub2RlLnNpemU7XG4gICAgfVxuICAgIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGNhY2hlLlxuICAgKi8gZ2V0IHNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhY2hlLnNpemU7XG4gICAgfVxuICAgIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHRvdGFsIHNpemUgb2YgYWxsIGNhY2hlZCBpdGVtcy5cbiAgICogVGhpcyB1c2VzIHRoZSBjdXN0b20gc2l6ZSBjYWxjdWxhdGlvbiBpZiBwcm92aWRlZC5cbiAgICovIGdldCBjdXJyZW50U2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG90YWxTaXplO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bHJ1LWNhY2hlLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/lru-cache.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/lib/patch-fetch.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/next/dist/server/lib/patch-fetch.js ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n NEXT_PATCH_SYMBOL: function() {\n return NEXT_PATCH_SYMBOL;\n },\n createPatchedFetcher: function() {\n return createPatchedFetcher;\n },\n patchFetch: function() {\n return patchFetch;\n },\n validateRevalidate: function() {\n return validateRevalidate;\n },\n validateTags: function() {\n return validateTags;\n }\n});\nconst _constants = __webpack_require__(/*! ./trace/constants */ \"(rsc)/./node_modules/next/dist/server/lib/trace/constants.js\");\nconst _tracer = __webpack_require__(/*! ./trace/tracer */ \"(rsc)/./node_modules/next/dist/server/lib/trace/tracer.js\");\nconst _constants1 = __webpack_require__(/*! ../../lib/constants */ \"(rsc)/./node_modules/next/dist/lib/constants.js\");\nconst _dynamicrendering = __webpack_require__(/*! ../app-render/dynamic-rendering */ \"(rsc)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\");\nconst _dynamicrenderingutils = __webpack_require__(/*! ../dynamic-rendering-utils */ \"(rsc)/./node_modules/next/dist/server/dynamic-rendering-utils.js\");\nconst _dedupefetch = __webpack_require__(/*! ./dedupe-fetch */ \"(rsc)/./node_modules/next/dist/server/lib/dedupe-fetch.js\");\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ../app-render/work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nconst _responsecache = __webpack_require__(/*! ../response-cache */ \"(rsc)/./node_modules/next/dist/server/response-cache/index.js\");\nconst _cloneresponse = __webpack_require__(/*! ./clone-response */ \"(rsc)/./node_modules/next/dist/server/lib/clone-response.js\");\nconst _stagedrendering = __webpack_require__(/*! ../app-render/staged-rendering */ \"(rsc)/./node_modules/next/dist/server/app-render/staged-rendering.js\");\nconst isEdgeRuntime = \"nodejs\" === 'edge';\nconst NEXT_PATCH_SYMBOL = Symbol.for('next-patch');\nfunction isFetchPatched() {\n return globalThis[NEXT_PATCH_SYMBOL] === true;\n}\nfunction validateRevalidate(revalidateVal, route) {\n try {\n let normalizedRevalidate = undefined;\n if (revalidateVal === false) {\n normalizedRevalidate = _constants1.INFINITE_CACHE;\n } else if (typeof revalidateVal === 'number' && !isNaN(revalidateVal) && revalidateVal > -1) {\n normalizedRevalidate = revalidateVal;\n } else if (typeof revalidateVal !== 'undefined') {\n throw Object.defineProperty(new Error(`Invalid revalidate value \"${revalidateVal}\" on \"${route}\", must be a non-negative number or false`), \"__NEXT_ERROR_CODE\", {\n value: \"E179\",\n enumerable: false,\n configurable: true\n });\n }\n return normalizedRevalidate;\n } catch (err) {\n // handle client component error from attempting to check revalidate value\n if (err instanceof Error && err.message.includes('Invalid revalidate')) {\n throw err;\n }\n return undefined;\n }\n}\nfunction validateTags(tags, description) {\n const validTags = [];\n const invalidTags = [];\n for(let i = 0; i < tags.length; i++){\n const tag = tags[i];\n if (typeof tag !== 'string') {\n invalidTags.push({\n tag,\n reason: 'invalid type, must be a string'\n });\n } else if (tag.length > _constants1.NEXT_CACHE_TAG_MAX_LENGTH) {\n invalidTags.push({\n tag,\n reason: `exceeded max length of ${_constants1.NEXT_CACHE_TAG_MAX_LENGTH}`\n });\n } else {\n validTags.push(tag);\n }\n if (validTags.length > _constants1.NEXT_CACHE_TAG_MAX_ITEMS) {\n console.warn(`Warning: exceeded max tag count for ${description}, dropped tags:`, tags.slice(i).join(', '));\n break;\n }\n }\n if (invalidTags.length > 0) {\n console.warn(`Warning: invalid tags passed to ${description}: `);\n for (const { tag, reason } of invalidTags){\n console.log(`tag: \"${tag}\" ${reason}`);\n }\n }\n return validTags;\n}\nfunction trackFetchMetric(workStore, ctx) {\n if (!workStore.shouldTrackFetchMetrics) {\n return;\n }\n workStore.fetchMetrics ??= [];\n workStore.fetchMetrics.push({\n ...ctx,\n end: performance.timeOrigin + performance.now(),\n idx: workStore.nextFetchId || 0\n });\n}\nasync function createCachedPrerenderResponse(res, cacheKey, incrementalCacheContext, incrementalCache, revalidate, handleUnlock) {\n // We are prerendering at build time or revalidate time with cacheComponents so we\n // need to buffer the response so we can guarantee it can be read in a\n // microtask.\n const bodyBuffer = await res.arrayBuffer();\n const fetchedData = {\n headers: Object.fromEntries(res.headers.entries()),\n body: Buffer.from(bodyBuffer).toString('base64'),\n status: res.status,\n url: res.url\n };\n // We can skip setting the serverComponentsHmrCache because we aren't in dev\n // mode.\n if (incrementalCacheContext) {\n await incrementalCache.set(cacheKey, {\n kind: _responsecache.CachedRouteKind.FETCH,\n data: fetchedData,\n revalidate\n }, incrementalCacheContext);\n }\n await handleUnlock();\n // We return a new Response to the caller.\n return new Response(bodyBuffer, {\n headers: res.headers,\n status: res.status,\n statusText: res.statusText\n });\n}\nasync function createCachedDynamicResponse(workStore, res, cacheKey, incrementalCacheContext, incrementalCache, serverComponentsHmrCache, revalidate, input, handleUnlock, signal) {\n // We're cloning the response using this utility because there exists a bug in\n // the undici library around response cloning. See the following pull request\n // for more details: https://github.com/vercel/next.js/pull/73274\n const [cloned1, cloned2] = (0, _cloneresponse.cloneResponse)(res);\n // We are dynamically rendering including dev mode. We want to return the\n // response to the caller as soon as possible because it might stream over a\n // very long time.\n const cacheSetPromise = cloned1.arrayBuffer().then(async (arrayBuffer)=>{\n const bodyBuffer = Buffer.from(arrayBuffer);\n const fetchedData = {\n headers: Object.fromEntries(cloned1.headers.entries()),\n body: bodyBuffer.toString('base64'),\n status: cloned1.status,\n url: cloned1.url\n };\n serverComponentsHmrCache == null ? void 0 : serverComponentsHmrCache.set(cacheKey, fetchedData);\n if (incrementalCacheContext) {\n await incrementalCache.set(cacheKey, {\n kind: _responsecache.CachedRouteKind.FETCH,\n data: fetchedData,\n revalidate\n }, incrementalCacheContext);\n }\n }).catch((error)=>{\n // Don't warn if the request was aborted intentionally.\n if (!(signal == null ? void 0 : signal.aborted)) {\n console.warn(`Failed to set fetch cache`, input, error);\n }\n }).finally(handleUnlock);\n const pendingRevalidateKey = `cache-set-${cacheKey}`;\n const pendingRevalidates = workStore.pendingRevalidates ??= {};\n let pendingRevalidatePromise = Promise.resolve();\n if (pendingRevalidateKey in pendingRevalidates) {\n // There is already a pending revalidate entry that we need to await to\n // avoid race conditions.\n pendingRevalidatePromise = pendingRevalidates[pendingRevalidateKey];\n }\n pendingRevalidates[pendingRevalidateKey] = pendingRevalidatePromise.then(()=>cacheSetPromise).finally(()=>{\n // If the pending revalidate is not present in the store, then we have\n // nothing to delete.\n if (!(pendingRevalidates == null ? void 0 : pendingRevalidates[pendingRevalidateKey])) {\n return;\n }\n delete pendingRevalidates[pendingRevalidateKey];\n });\n return cloned2;\n}\nfunction createPatchedFetcher(originFetch, { workAsyncStorage, workUnitAsyncStorage }) {\n // Create the patched fetch function.\n const patched = async function fetch(input, init) {\n var _init_method, _init_next;\n let url;\n try {\n url = new URL(input instanceof Request ? input.url : input);\n url.username = '';\n url.password = '';\n } catch {\n // Error caused by malformed URL should be handled by native fetch\n url = undefined;\n }\n const fetchUrl = (url == null ? void 0 : url.href) ?? '';\n const method = (init == null ? void 0 : (_init_method = init.method) == null ? void 0 : _init_method.toUpperCase()) || 'GET';\n // Do create a new span trace for internal fetches in the\n // non-verbose mode.\n const isInternal = (init == null ? void 0 : (_init_next = init.next) == null ? void 0 : _init_next.internal) === true;\n const hideSpan = process.env.NEXT_OTEL_FETCH_DISABLED === '1';\n // We don't track fetch metrics for internal fetches\n // so it's not critical that we have a start time, as it won't be recorded.\n // This is to workaround a flaky issue where performance APIs might\n // not be available and will require follow-up investigation.\n const fetchStart = isInternal ? undefined : performance.timeOrigin + performance.now();\n const workStore = workAsyncStorage.getStore();\n const workUnitStore = workUnitAsyncStorage.getStore();\n let cacheSignal = workUnitStore ? (0, _workunitasyncstorageexternal.getCacheSignal)(workUnitStore) : null;\n if (cacheSignal) {\n cacheSignal.beginRead();\n }\n const result = (0, _tracer.getTracer)().trace(isInternal ? _constants.NextNodeServerSpan.internalFetch : _constants.AppRenderSpan.fetch, {\n hideSpan,\n kind: _tracer.SpanKind.CLIENT,\n spanName: [\n 'fetch',\n method,\n fetchUrl\n ].filter(Boolean).join(' '),\n attributes: {\n 'http.url': fetchUrl,\n 'http.method': method,\n 'net.peer.name': url == null ? void 0 : url.hostname,\n 'net.peer.port': (url == null ? void 0 : url.port) || undefined\n }\n }, async ()=>{\n var _getRequestMeta;\n // If this is an internal fetch, we should not do any special treatment.\n if (isInternal) {\n return originFetch(input, init);\n }\n // If the workStore is not available, we can't do any\n // special treatment of fetch, therefore fallback to the original\n // fetch implementation.\n if (!workStore) {\n return originFetch(input, init);\n }\n // We should also fallback to the original fetch implementation if we\n // are in draft mode, it does not constitute a static generation.\n if (workStore.isDraftMode) {\n return originFetch(input, init);\n }\n const isRequestInput = input && typeof input === 'object' && typeof input.method === 'string';\n const getRequestMeta = (field)=>{\n // If request input is present but init is not, retrieve from input first.\n const value = init == null ? void 0 : init[field];\n return value || (isRequestInput ? input[field] : null);\n };\n let finalRevalidate = undefined;\n const getNextField = (field)=>{\n var _init_next, _init_next1, _input_next;\n return typeof (init == null ? void 0 : (_init_next = init.next) == null ? void 0 : _init_next[field]) !== 'undefined' ? init == null ? void 0 : (_init_next1 = init.next) == null ? void 0 : _init_next1[field] : isRequestInput ? (_input_next = input.next) == null ? void 0 : _input_next[field] : undefined;\n };\n // RequestInit doesn't keep extra fields e.g. next so it's\n // only available if init is used separate\n const originalFetchRevalidate = getNextField('revalidate');\n let currentFetchRevalidate = originalFetchRevalidate;\n const tags = validateTags(getNextField('tags') || [], `fetch ${input.toString()}`);\n let revalidateStore;\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-runtime':\n // TODO: Stop accumulating tags in client prerender. (fallthrough)\n case 'prerender-client':\n case 'validation-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n revalidateStore = workUnitStore;\n break;\n case 'request':\n case 'unstable-cache':\n case 'generate-static-params':\n break;\n default:\n workUnitStore;\n }\n }\n if (revalidateStore) {\n if (Array.isArray(tags)) {\n // Collect tags onto parent caches or parent prerenders.\n const collectedTags = revalidateStore.tags ?? (revalidateStore.tags = []);\n for (const tag of tags){\n if (!collectedTags.includes(tag)) {\n collectedTags.push(tag);\n }\n }\n }\n }\n const implicitTags = workUnitStore == null ? void 0 : workUnitStore.implicitTags;\n let pageFetchCacheMode = workStore.fetchCache;\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'unstable-cache':\n // Inside unstable-cache we treat it the same as force-no-store on\n // the page.\n pageFetchCacheMode = 'force-no-store';\n break;\n case 'prerender':\n case 'prerender-client':\n case 'validation-client':\n case 'prerender-runtime':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'generate-static-params':\n break;\n default:\n workUnitStore;\n }\n }\n const isUsingNoStore = !!workStore.isUnstableNoStore;\n let currentFetchCacheConfig = getRequestMeta('cache');\n let cacheReason = '';\n let cacheWarning;\n if (typeof currentFetchCacheConfig === 'string' && typeof currentFetchRevalidate !== 'undefined') {\n // If the revalidate value conflicts with the cache value, we should warn the user and unset the conflicting values.\n const isConflictingRevalidate = currentFetchCacheConfig === 'force-cache' && currentFetchRevalidate === 0 || // revalidate: >0 or revalidate: false and cache: no-store\n currentFetchCacheConfig === 'no-store' && (currentFetchRevalidate > 0 || currentFetchRevalidate === false);\n if (isConflictingRevalidate) {\n cacheWarning = `Specified \"cache: ${currentFetchCacheConfig}\" and \"revalidate: ${currentFetchRevalidate}\", only one should be specified.`;\n currentFetchCacheConfig = undefined;\n currentFetchRevalidate = undefined;\n }\n }\n const hasExplicitFetchCacheOptOut = currentFetchCacheConfig === 'no-cache' || currentFetchCacheConfig === 'no-store' || // the fetch isn't explicitly caching and the segment level cache config signals not to cache\n // note: `pageFetchCacheMode` is also set by being in an unstable_cache context.\n pageFetchCacheMode === 'force-no-store' || pageFetchCacheMode === 'only-no-store';\n // If no explicit fetch cache mode is set, but dynamic = `force-dynamic` is set,\n // we shouldn't consider caching the fetch. This is because the `dynamic` cache\n // is considered a \"top-level\" cache mode, whereas something like `fetchCache` is more\n // fine-grained. Top-level modes are responsible for setting reasonable defaults for the\n // other configurations.\n const noFetchConfigAndForceDynamic = !pageFetchCacheMode && !currentFetchCacheConfig && !currentFetchRevalidate && workStore.forceDynamic;\n if (// which will signal the cache to not revalidate\n currentFetchCacheConfig === 'force-cache' && typeof currentFetchRevalidate === 'undefined') {\n currentFetchRevalidate = false;\n } else if (hasExplicitFetchCacheOptOut || noFetchConfigAndForceDynamic) {\n currentFetchRevalidate = 0;\n }\n if (currentFetchCacheConfig === 'no-cache' || currentFetchCacheConfig === 'no-store') {\n cacheReason = `cache: ${currentFetchCacheConfig}`;\n }\n finalRevalidate = validateRevalidate(currentFetchRevalidate, workStore.route);\n const _headers = getRequestMeta('headers');\n const initHeaders = typeof (_headers == null ? void 0 : _headers.get) === 'function' ? _headers : new Headers(_headers || {});\n const hasUnCacheableHeader = initHeaders.get('authorization') || initHeaders.get('cookie');\n const isUnCacheableMethod = ![\n 'get',\n 'head'\n ].includes(((_getRequestMeta = getRequestMeta('method')) == null ? void 0 : _getRequestMeta.toLowerCase()) || 'get');\n /**\n * We automatically disable fetch caching under the following conditions:\n * - Fetch cache configs are not set. Specifically:\n * - A page fetch cache mode is not set (export const fetchCache=...)\n * - A fetch cache mode is not set in the fetch call (fetch(url, { cache: ... }))\n * or the fetch cache mode is set to 'default'\n * - A fetch revalidate value is not set in the fetch call (fetch(url, { revalidate: ... }))\n * - OR the fetch comes after a configuration that triggered dynamic rendering (e.g., reading cookies())\n * and the fetch was considered uncacheable (e.g., POST method or has authorization headers)\n */ const hasNoExplicitCacheConfig = pageFetchCacheMode == undefined && // eslint-disable-next-line eqeqeq\n (currentFetchCacheConfig == undefined || // when considering whether to opt into the default \"no-cache\" fetch semantics,\n // a \"default\" cache config should be treated the same as no cache config\n currentFetchCacheConfig === 'default') && // eslint-disable-next-line eqeqeq\n currentFetchRevalidate == undefined;\n let autoNoCache = Boolean((hasUnCacheableHeader || isUnCacheableMethod) && (revalidateStore == null ? void 0 : revalidateStore.revalidate) === 0);\n let isImplicitBuildTimeCache = false;\n if (!autoNoCache && hasNoExplicitCacheConfig) {\n // We don't enable automatic no-cache behavior during build-time\n // prerendering so that we can still leverage the fetch cache between\n // export workers.\n if (workStore.isBuildTimePrerendering) {\n isImplicitBuildTimeCache = true;\n } else {\n autoNoCache = true;\n }\n }\n // If we have no cache config, and we're in Dynamic I/O prerendering,\n // it'll be a dynamic call. We don't have to issue that dynamic call.\n if (hasNoExplicitCacheConfig && workUnitStore !== undefined) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-runtime':\n // While we don't want to do caching in the client scope we know the\n // fetch will be dynamic for cacheComponents so we may as well avoid the\n // call here. (fallthrough)\n case 'prerender-client':\n if (cacheSignal) {\n cacheSignal.endRead();\n cacheSignal = null;\n }\n return (0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, 'fetch()');\n case 'validation-client':\n break;\n case 'request':\n if ( true && workUnitStore.stagedRendering) {\n if (cacheSignal) {\n cacheSignal.endRead();\n cacheSignal = null;\n }\n await workUnitStore.stagedRendering.waitForStage(_stagedrendering.RenderStage.Dynamic);\n }\n break;\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'generate-static-params':\n break;\n default:\n workUnitStore;\n }\n }\n switch(pageFetchCacheMode){\n case 'force-no-store':\n {\n cacheReason = 'fetchCache = force-no-store';\n break;\n }\n case 'only-no-store':\n {\n if (currentFetchCacheConfig === 'force-cache' || typeof finalRevalidate !== 'undefined' && finalRevalidate > 0) {\n throw Object.defineProperty(new Error(`cache: 'force-cache' used on fetch for ${fetchUrl} with 'export const fetchCache = 'only-no-store'`), \"__NEXT_ERROR_CODE\", {\n value: \"E448\",\n enumerable: false,\n configurable: true\n });\n }\n cacheReason = 'fetchCache = only-no-store';\n break;\n }\n case 'only-cache':\n {\n if (currentFetchCacheConfig === 'no-store') {\n throw Object.defineProperty(new Error(`cache: 'no-store' used on fetch for ${fetchUrl} with 'export const fetchCache = 'only-cache'`), \"__NEXT_ERROR_CODE\", {\n value: \"E521\",\n enumerable: false,\n configurable: true\n });\n }\n break;\n }\n case 'force-cache':\n {\n if (typeof currentFetchRevalidate === 'undefined' || currentFetchRevalidate === 0) {\n cacheReason = 'fetchCache = force-cache';\n finalRevalidate = _constants1.INFINITE_CACHE;\n }\n break;\n }\n case 'default-cache':\n case 'default-no-store':\n case 'auto':\n case undefined:\n break;\n default:\n pageFetchCacheMode;\n }\n if (typeof finalRevalidate === 'undefined') {\n if (pageFetchCacheMode === 'default-cache' && !isUsingNoStore) {\n finalRevalidate = _constants1.INFINITE_CACHE;\n cacheReason = 'fetchCache = default-cache';\n } else if (pageFetchCacheMode === 'default-no-store') {\n finalRevalidate = 0;\n cacheReason = 'fetchCache = default-no-store';\n } else if (isUsingNoStore) {\n finalRevalidate = 0;\n cacheReason = 'noStore call';\n } else if (autoNoCache) {\n finalRevalidate = 0;\n cacheReason = 'auto no cache';\n } else {\n // TODO: should we consider this case an invariant?\n cacheReason = 'auto cache';\n finalRevalidate = revalidateStore ? revalidateStore.revalidate : _constants1.INFINITE_CACHE;\n }\n } else if (!cacheReason) {\n cacheReason = `revalidate: ${finalRevalidate}`;\n }\n if (// `revalidate: 0` values\n !(workStore.forceStatic && finalRevalidate === 0) && // we don't consider autoNoCache to switch to dynamic for ISR\n !autoNoCache && // If the revalidate value isn't currently set or the value is less\n // than the current revalidate value, we should update the revalidate\n // value.\n revalidateStore && finalRevalidate < revalidateStore.revalidate) {\n // If we were setting the revalidate value to 0, we should try to\n // postpone instead first.\n if (finalRevalidate === 0) {\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n // If we're in an instant validation, a dynamic fetch won't\n // have time to resolve during the validation prerender anyway,\n // so we leave it hanging. This can cause false negatives in shared parents,\n // but we accept that for now, because client data fetching is non-idiomatic.\n // eslint-disable-next-line no-fallthrough\n case 'validation-client':\n if (cacheSignal) {\n cacheSignal.endRead();\n cacheSignal = null;\n }\n return (0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, 'fetch()');\n case 'request':\n if ( true && workUnitStore.stagedRendering) {\n if (cacheSignal) {\n cacheSignal.endRead();\n cacheSignal = null;\n }\n await workUnitStore.stagedRendering.waitForStage(_stagedrendering.RenderStage.Dynamic);\n }\n break;\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'generate-static-params':\n break;\n default:\n workUnitStore;\n }\n }\n (0, _dynamicrendering.markCurrentScopeAsDynamic)(workStore, workUnitStore, `revalidate: 0 fetch ${input} ${workStore.route}`);\n }\n // We only want to set the revalidate store's revalidate time if it\n // was explicitly set for the fetch call, i.e.\n // originalFetchRevalidate.\n if (revalidateStore && originalFetchRevalidate === finalRevalidate) {\n revalidateStore.revalidate = finalRevalidate;\n }\n }\n const isCacheableRevalidate = typeof finalRevalidate === 'number' && finalRevalidate > 0;\n let cacheKey;\n const { incrementalCache } = workStore;\n let isHmrRefresh = false;\n let serverComponentsHmrCache;\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'request':\n case 'cache':\n case 'private-cache':\n isHmrRefresh = workUnitStore.isHmrRefresh ?? false;\n serverComponentsHmrCache = workUnitStore.serverComponentsHmrCache;\n break;\n case 'prerender':\n case 'prerender-client':\n case 'validation-client':\n case 'prerender-runtime':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'unstable-cache':\n case 'generate-static-params':\n break;\n default:\n workUnitStore;\n }\n }\n if (incrementalCache && (isCacheableRevalidate || serverComponentsHmrCache)) {\n try {\n cacheKey = await incrementalCache.generateCacheKey(fetchUrl, isRequestInput ? input : init);\n } catch (err) {\n console.error(`Failed to generate cache key for`, input);\n }\n }\n const fetchIdx = workStore.nextFetchId ?? 1;\n workStore.nextFetchId = fetchIdx + 1;\n let handleUnlock = ()=>{};\n const doOriginalFetch = async (isStale, cacheReasonOverride)=>{\n const requestInputFields = [\n 'cache',\n 'credentials',\n 'headers',\n 'integrity',\n 'keepalive',\n 'method',\n 'mode',\n 'redirect',\n 'referrer',\n 'referrerPolicy',\n 'window',\n 'duplex',\n // don't pass through signal when revalidating\n ...isStale ? [] : [\n 'signal'\n ]\n ];\n if (isRequestInput) {\n const reqInput = input;\n const reqOptions = {\n body: reqInput._ogBody || reqInput.body\n };\n for (const field of requestInputFields){\n // @ts-expect-error custom fields\n reqOptions[field] = reqInput[field];\n }\n input = new Request(reqInput.url, reqOptions);\n } else if (init) {\n const { _ogBody, body, signal, ...otherInput } = init;\n init = {\n ...otherInput,\n body: _ogBody || body,\n signal: isStale ? undefined : signal\n };\n }\n // add metadata to init without editing the original\n const clonedInit = {\n ...init,\n next: {\n ...init == null ? void 0 : init.next,\n fetchType: 'origin',\n fetchIdx\n }\n };\n return originFetch(input, clonedInit).then(async (res)=>{\n if (!isStale && fetchStart) {\n trackFetchMetric(workStore, {\n start: fetchStart,\n url: fetchUrl,\n cacheReason: cacheReasonOverride || cacheReason,\n cacheStatus: finalRevalidate === 0 || cacheReasonOverride ? 'skip' : 'miss',\n cacheWarning,\n status: res.status,\n method: clonedInit.method || 'GET'\n });\n }\n if (res.status === 200 && incrementalCache && cacheKey && (isCacheableRevalidate || serverComponentsHmrCache)) {\n const normalizedRevalidate = finalRevalidate >= _constants1.INFINITE_CACHE ? _constants1.CACHE_ONE_YEAR_SECONDS : finalRevalidate;\n const incrementalCacheConfig = isCacheableRevalidate ? {\n fetchCache: true,\n fetchUrl,\n fetchIdx,\n tags,\n isImplicitBuildTimeCache\n } : undefined;\n switch(workUnitStore == null ? void 0 : workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'validation-client':\n case 'prerender-runtime':\n return createCachedPrerenderResponse(res, cacheKey, incrementalCacheConfig, incrementalCache, normalizedRevalidate, handleUnlock);\n case 'request':\n if ( true && workUnitStore.stagedRendering && workUnitStore.cacheSignal && isCacheableRevalidate) {\n // We're filling caches for a staged render with an\n // explicit cache config, so we need to wait for the\n // response to finish instead of streaming. For HMR-only\n // caching (no explicit revalidate), we fall through to\n // createCachedDynamicResponse which handles streaming\n // and abort gracefully.\n return createCachedPrerenderResponse(res, cacheKey, incrementalCacheConfig, incrementalCache, normalizedRevalidate, handleUnlock);\n }\n // fallthrough\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'generate-static-params':\n case undefined:\n return createCachedDynamicResponse(workStore, res, cacheKey, incrementalCacheConfig, incrementalCache, serverComponentsHmrCache, normalizedRevalidate, input, handleUnlock, getRequestMeta('signal'));\n default:\n workUnitStore;\n }\n }\n // we had response that we determined shouldn't be cached so we return it\n // and don't cache it. This also needs to unlock the cache lock we acquired.\n await handleUnlock();\n return res;\n }).catch((error)=>{\n handleUnlock();\n throw error;\n });\n };\n let cacheReasonOverride;\n let isForegroundRevalidate = false;\n let isHmrRefreshCache = false;\n if (cacheKey && incrementalCache) {\n let cachedFetchData;\n if (isHmrRefresh && serverComponentsHmrCache) {\n cachedFetchData = serverComponentsHmrCache.get(cacheKey);\n isHmrRefreshCache = true;\n }\n if (isCacheableRevalidate && !cachedFetchData) {\n handleUnlock = await incrementalCache.lock(cacheKey);\n const entry = workStore.isOnDemandRevalidate ? null : await incrementalCache.get(cacheKey, {\n kind: _responsecache.IncrementalCacheKind.FETCH,\n revalidate: finalRevalidate,\n fetchUrl,\n fetchIdx,\n tags,\n softTags: implicitTags == null ? void 0 : implicitTags.tags\n });\n if (hasNoExplicitCacheConfig && workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'validation-client':\n case 'prerender-runtime':\n // We sometimes use the cache to dedupe fetches that do not\n // specify a cache configuration. In these cases we want to\n // make sure we still exclude them from prerenders if\n // cacheComponents is on so we introduce an artificial task boundary\n // here.\n await getTimeoutBoundary();\n break;\n case 'request':\n if ( true && workUnitStore.stagedRendering) {\n await workUnitStore.stagedRendering.waitForStage(_stagedrendering.RenderStage.Dynamic);\n }\n break;\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'generate-static-params':\n break;\n default:\n workUnitStore;\n }\n }\n if (entry) {\n await handleUnlock();\n } else {\n // in dev, incremental cache response will be null in case the browser adds `cache-control: no-cache` in the request headers\n // TODO: it seems like we also hit this after revalidates in dev?\n cacheReasonOverride = 'cache-control: no-cache (hard refresh)';\n }\n if ((entry == null ? void 0 : entry.value) && entry.value.kind === _responsecache.CachedRouteKind.FETCH) {\n // when stale and is revalidating we wait for fresh data\n // so the revalidated entry has the updated data\n if (workStore.isStaticGeneration && entry.isStale) {\n isForegroundRevalidate = true;\n } else {\n if (entry.isStale) {\n workStore.pendingRevalidates ??= {};\n if (!workStore.pendingRevalidates[cacheKey]) {\n const pendingRevalidate = doOriginalFetch(true).then(async (response)=>({\n body: await response.arrayBuffer(),\n headers: response.headers,\n status: response.status,\n statusText: response.statusText\n })).finally(()=>{\n workStore.pendingRevalidates ??= {};\n delete workStore.pendingRevalidates[cacheKey || ''];\n });\n // Attach the empty catch here so we don't get a \"unhandled\n // promise rejection\" warning.\n pendingRevalidate.catch(console.error);\n workStore.pendingRevalidates[cacheKey] = pendingRevalidate;\n }\n }\n cachedFetchData = entry.value.data;\n }\n }\n }\n if (cachedFetchData) {\n if (fetchStart) {\n trackFetchMetric(workStore, {\n start: fetchStart,\n url: fetchUrl,\n cacheReason,\n cacheStatus: isHmrRefreshCache ? 'hmr' : 'hit',\n cacheWarning,\n status: cachedFetchData.status || 200,\n method: (init == null ? void 0 : init.method) || 'GET'\n });\n }\n const response = new Response(Buffer.from(cachedFetchData.body, 'base64'), {\n headers: cachedFetchData.headers,\n status: cachedFetchData.status\n });\n Object.defineProperty(response, 'url', {\n value: cachedFetchData.url\n });\n return response;\n }\n }\n if ((workStore.isStaticGeneration || false && 0) && init && typeof init === 'object') {\n const { cache } = init;\n // Delete `cache` property as Cloudflare Workers will throw an error\n if (isEdgeRuntime) delete init.cache;\n if (cache === 'no-store') {\n // If enabled, we should bail out of static generation.\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n case 'validation-client':\n if (cacheSignal) {\n cacheSignal.endRead();\n cacheSignal = null;\n }\n return (0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, 'fetch()');\n case 'request':\n if ( true && workUnitStore.stagedRendering) {\n if (cacheSignal) {\n cacheSignal.endRead();\n cacheSignal = null;\n }\n await workUnitStore.stagedRendering.waitForStage(_stagedrendering.RenderStage.Dynamic);\n }\n break;\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'generate-static-params':\n break;\n default:\n workUnitStore;\n }\n }\n (0, _dynamicrendering.markCurrentScopeAsDynamic)(workStore, workUnitStore, `no-store fetch ${input} ${workStore.route}`);\n }\n const hasNextConfig = 'next' in init;\n const { next = {} } = init;\n if (typeof next.revalidate === 'number' && revalidateStore && next.revalidate < revalidateStore.revalidate) {\n if (next.revalidate === 0) {\n // If enabled, we should bail out of static generation.\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n case 'validation-client':\n return (0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, 'fetch()');\n case 'request':\n if ( true && workUnitStore.stagedRendering) {\n await workUnitStore.stagedRendering.waitForStage(_stagedrendering.RenderStage.Dynamic);\n }\n break;\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'generate-static-params':\n break;\n default:\n workUnitStore;\n }\n }\n (0, _dynamicrendering.markCurrentScopeAsDynamic)(workStore, workUnitStore, `revalidate: 0 fetch ${input} ${workStore.route}`);\n }\n if (!workStore.forceStatic || next.revalidate !== 0) {\n revalidateStore.revalidate = next.revalidate;\n }\n }\n if (hasNextConfig) delete init.next;\n }\n // if we are revalidating the whole page via time or on-demand and\n // the fetch cache entry is stale we should still de-dupe the\n // origin hit if it's a cache-able entry\n if (cacheKey && isForegroundRevalidate) {\n const pendingRevalidateKey = cacheKey;\n workStore.pendingRevalidates ??= {};\n let pendingRevalidate = workStore.pendingRevalidates[pendingRevalidateKey];\n if (pendingRevalidate) {\n const revalidatedResult = await pendingRevalidate;\n return new Response(revalidatedResult.body, {\n headers: revalidatedResult.headers,\n status: revalidatedResult.status,\n statusText: revalidatedResult.statusText\n });\n }\n // We used to just resolve the Response and clone it however for\n // static generation with cacheComponents we need the response to be able to\n // be resolved in a microtask and cloning the response will never have\n // a body that can resolve in a microtask in node (as observed through\n // experimentation) So instead we await the body and then when it is\n // available we construct manually cloned Response objects with the\n // body as an ArrayBuffer. This will be resolvable in a microtask\n // making it compatible with cacheComponents.\n const pendingResponse = doOriginalFetch(true, cacheReasonOverride) // We're cloning the response using this utility because there\n // exists a bug in the undici library around response cloning.\n // See the following pull request for more details:\n // https://github.com/vercel/next.js/pull/73274\n .then(_cloneresponse.cloneResponse);\n pendingRevalidate = pendingResponse.then(async (responses)=>{\n const response = responses[0];\n return {\n body: await response.arrayBuffer(),\n headers: response.headers,\n status: response.status,\n statusText: response.statusText\n };\n }).finally(()=>{\n var _workStore_pendingRevalidates;\n // If the pending revalidate is not present in the store, then\n // we have nothing to delete.\n if (!((_workStore_pendingRevalidates = workStore.pendingRevalidates) == null ? void 0 : _workStore_pendingRevalidates[pendingRevalidateKey])) {\n return;\n }\n delete workStore.pendingRevalidates[pendingRevalidateKey];\n });\n // Attach the empty catch here so we don't get a \"unhandled promise\n // rejection\" warning\n pendingRevalidate.catch(()=>{});\n workStore.pendingRevalidates[pendingRevalidateKey] = pendingRevalidate;\n return pendingResponse.then((responses)=>responses[1]);\n } else {\n return doOriginalFetch(false, cacheReasonOverride);\n }\n });\n if (cacheSignal) {\n try {\n return await result;\n } finally{\n if (cacheSignal) {\n cacheSignal.endRead();\n }\n }\n }\n return result;\n };\n // Attach the necessary properties to the patched fetch function.\n // We don't use this to determine if the fetch function has been patched,\n // but for external consumers to determine if the fetch function has been\n // patched.\n patched.__nextPatched = true;\n patched.__nextGetStaticStore = ()=>workAsyncStorage;\n patched._nextOriginalFetch = originFetch;\n globalThis[NEXT_PATCH_SYMBOL] = true;\n // Assign the function name also as a name property, so that it's preserved\n // even when mangling is enabled.\n Object.defineProperty(patched, 'name', {\n value: 'fetch',\n writable: false\n });\n return patched;\n}\nfunction patchFetch(options) {\n // If we've already patched fetch, we should not patch it again.\n if (isFetchPatched()) return;\n // Grab the original fetch function. We'll attach this so we can use it in\n // the patched fetch function.\n const original = (0, _dedupefetch.createDedupeFetch)(globalThis.fetch);\n // Set the global fetch to the patched fetch.\n globalThis.fetch = createPatchedFetcher(original, options);\n}\nlet currentTimeoutBoundary = null;\nfunction getTimeoutBoundary() {\n if (!currentTimeoutBoundary) {\n currentTimeoutBoundary = new Promise((r)=>{\n setTimeout(()=>{\n currentTimeoutBoundary = null;\n r();\n }, 0);\n });\n }\n return currentTimeoutBoundary;\n} //# sourceMappingURL=patch-fetch.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvcGF0Y2gtZmV0Y2guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBMkNhQSxpQkFBaUI7ZUFBakJBOztJQXNOR0Msb0JBQW9CO2VBQXBCQTs7SUFzaENBQyxVQUFVO2VBQVZBOztJQXR1Q0FDLGtCQUFrQjtlQUFsQkE7O0lBOEJBQyxZQUFZO2VBQVpBOzs7dUNBMUVrQztvQ0FDZDt3Q0FNN0I7OENBQ21DO21EQUNQO3lDQUVEOzBEQUszQjsyQ0FPQTsyQ0FDdUI7NkNBRUY7QUFFNUIsTUFBTUMsZ0JBQWdCQyxRQUF3QixLQUFLO0FBVTVDLE1BQU1OLG9CQUFvQlMsT0FBT0MsR0FBRyxDQUFDO0FBRTVDLFNBQVNDO0lBQ1AsT0FBUUMsVUFBc0MsQ0FBQ1osa0JBQWtCLEtBQUs7QUFDeEU7QUFFTyxTQUFTRyxtQkFDZFUsYUFBc0IsRUFDdEJDLEtBQWE7SUFFYixJQUFJO1FBQ0YsSUFBSUMsdUJBQTJDQztRQUUvQyxJQUFJSCxrQkFBa0IsT0FBTztZQUMzQkUsdUJBQXVCRSxZQUFBQSxjQUFjO1FBQ3ZDLE9BQU8sSUFDTCxPQUFPSixrQkFBa0IsWUFDekIsQ0FBQ0ssTUFBTUwsa0JBQ1BBLGdCQUFnQixDQUFDLEdBQ2pCO1lBQ0FFLHVCQUF1QkY7UUFDekIsT0FBTyxJQUFJLE9BQU9BLGtCQUFrQixhQUFhO1lBQy9DLE1BQU0scUJBRUwsQ0FGSyxJQUFJTSxNQUNSLENBQUMsMEJBQTBCLEVBQUVOLGNBQWMsTUFBTSxFQUFFQyxNQUFNLHlDQUF5QyxDQUFDLEdBRC9GO3VCQUFBOzRCQUFBOzhCQUFBO1lBRU47UUFDRjtRQUNBLE9BQU9DO0lBQ1QsRUFBRSxPQUFPSyxLQUFVO1FBQ2pCLDBFQUEwRTtRQUMxRSxJQUFJQSxlQUFlRCxTQUFTQyxJQUFJQyxPQUFPLENBQUNDLFFBQVEsQ0FBQyx1QkFBdUI7WUFDdEUsTUFBTUY7UUFDUjtRQUNBLE9BQU9KO0lBQ1Q7QUFDRjtBQUVPLFNBQVNaLGFBQWFtQixJQUFXLEVBQUVDLFdBQW1CO0lBQzNELE1BQU1DLFlBQXNCLEVBQUU7SUFDOUIsTUFBTUMsY0FHRCxFQUFFO0lBRVAsSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlKLEtBQUtLLE1BQU0sRUFBRUQsSUFBSztRQUNwQyxNQUFNRSxNQUFNTixJQUFJLENBQUNJLEVBQUU7UUFFbkIsSUFBSSxPQUFPRSxRQUFRLFVBQVU7WUFDM0JILFlBQVlJLElBQUksQ0FBQztnQkFBRUQ7Z0JBQUtFLFFBQVE7WUFBaUM7UUFDbkUsT0FBTyxJQUFJRixJQUFJRCxNQUFNLEdBQUdJLFlBQUFBLHlCQUF5QixFQUFFO1lBQ2pETixZQUFZSSxJQUFJLENBQUM7Z0JBQ2ZEO2dCQUNBRSxRQUFRLENBQUMsdUJBQXVCLEVBQUVDLFlBQUFBLHlCQUF5QixFQUFFO1lBQy9EO1FBQ0YsT0FBTztZQUNMUCxVQUFVSyxJQUFJLENBQUNEO1FBQ2pCO1FBRUEsSUFBSUosVUFBVUcsTUFBTSxHQUFHSyxZQUFBQSx3QkFBd0IsRUFBRTtZQUMvQ0MsUUFBUUMsSUFBSSxDQUNWLENBQUMsb0NBQW9DLEVBQUVYLFlBQVksZUFBZSxDQUFDLEVBQ25FRCxLQUFLYSxLQUFLLENBQUNULEdBQUdVLElBQUksQ0FBQztZQUVyQjtRQUNGO0lBQ0Y7SUFFQSxJQUFJWCxZQUFZRSxNQUFNLEdBQUcsR0FBRztRQUMxQk0sUUFBUUMsSUFBSSxDQUFDLENBQUMsZ0NBQWdDLEVBQUVYLFlBQVksRUFBRSxDQUFDO1FBRS9ELEtBQUssTUFBTSxFQUFFSyxHQUFHLEVBQUVFLE1BQU0sRUFBRSxJQUFJTCxZQUFhO1lBQ3pDUSxRQUFRSSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUVULElBQUksRUFBRSxFQUFFRSxRQUFRO1FBQ3ZDO0lBQ0Y7SUFDQSxPQUFPTjtBQUNUO0FBRUEsU0FBU2MsaUJBQ1BDLFNBQW9CLEVBQ3BCQyxHQUFxQztJQUVyQyxJQUFJLENBQUNELFVBQVVFLHVCQUF1QixFQUFFO1FBQ3RDO0lBQ0Y7SUFFQUYsVUFBVUcsWUFBWSxLQUFLLEVBQUU7SUFFN0JILFVBQVVHLFlBQVksQ0FBQ2IsSUFBSSxDQUFDO1FBQzFCLEdBQUdXLEdBQUc7UUFDTkcsS0FBS0MsWUFBWUMsVUFBVSxHQUFHRCxZQUFZRSxHQUFHO1FBQzdDQyxLQUFLUixVQUFVUyxXQUFXLElBQUk7SUFDaEM7QUFDRjtBQUVBLGVBQWVDLDhCQUNiQyxHQUFhLEVBQ2JDLFFBQWdCLEVBQ2hCQyx1QkFBb0UsRUFDcEVDLGdCQUFrQyxFQUNsQ0MsVUFBa0IsRUFDbEJDLFlBQXdDO0lBRXhDLGtGQUFrRjtJQUNsRixzRUFBc0U7SUFDdEUsYUFBYTtJQUNiLE1BQU1DLGFBQWEsTUFBTU4sSUFBSU8sV0FBVztJQUV4QyxNQUFNQyxjQUFjO1FBQ2xCQyxTQUFTQyxPQUFPQyxXQUFXLENBQUNYLElBQUlTLE9BQU8sQ0FBQ0csT0FBTztRQUMvQ0MsTUFBTUMsT0FBT0MsSUFBSSxDQUFDVCxZQUFZVSxRQUFRLENBQUM7UUFDdkNDLFFBQVFqQixJQUFJaUIsTUFBTTtRQUNsQkMsS0FBS2xCLElBQUlrQixHQUFHO0lBQ2Q7SUFFQSw0RUFBNEU7SUFDNUUsUUFBUTtJQUVSLElBQUloQix5QkFBeUI7UUFDM0IsTUFBTUMsaUJBQWlCZ0IsR0FBRyxDQUN4QmxCLFVBQ0E7WUFBRW1CLE1BQU1DLGVBQUFBLGVBQWUsQ0FBQ0MsS0FBSztZQUFFQyxNQUFNZjtZQUFhSjtRQUFXLEdBQzdERjtJQUVKO0lBRUEsTUFBTUc7SUFFTiwwQ0FBMEM7SUFDMUMsT0FBTyxJQUFJbUIsU0FBU2xCLFlBQVk7UUFDOUJHLFNBQVNULElBQUlTLE9BQU87UUFDcEJRLFFBQVFqQixJQUFJaUIsTUFBTTtRQUNsQlEsWUFBWXpCLElBQUl5QixVQUFVO0lBQzVCO0FBQ0Y7QUFFQSxlQUFlQyw0QkFDYnJDLFNBQW9CLEVBQ3BCVyxHQUFhLEVBQ2JDLFFBQWdCLEVBQ2hCQyx1QkFBb0UsRUFDcEVDLGdCQUFrQyxFQUNsQ3dCLHdCQUE4RCxFQUM5RHZCLFVBQWtCLEVBQ2xCd0IsS0FBd0IsRUFDeEJ2QixZQUF3QyxFQUN4Q3dCLE1BQTBCO0lBRTFCLDhFQUE4RTtJQUM5RSw2RUFBNkU7SUFDN0UsaUVBQWlFO0lBQ2pFLE1BQU0sQ0FBQ0MsU0FBU0MsUUFBUSxHQUFHQyxDQUFBQSxHQUFBQSxlQUFBQSxhQUFBQSxFQUFjaEM7SUFFekMseUVBQXlFO0lBQ3pFLDRFQUE0RTtJQUM1RSxrQkFBa0I7SUFDbEIsTUFBTWlDLGtCQUFrQkgsUUFDckJ2QixXQUFXLEdBQ1gyQixJQUFJLENBQUMsT0FBTzNCO1FBQ1gsTUFBTUQsYUFBYVEsT0FBT0MsSUFBSSxDQUFDUjtRQUUvQixNQUFNQyxjQUFjO1lBQ2xCQyxTQUFTQyxPQUFPQyxXQUFXLENBQUNtQixRQUFRckIsT0FBTyxDQUFDRyxPQUFPO1lBQ25EQyxNQUFNUCxXQUFXVSxRQUFRLENBQUM7WUFDMUJDLFFBQVFhLFFBQVFiLE1BQU07WUFDdEJDLEtBQUtZLFFBQVFaLEdBQUc7UUFDbEI7UUFFQVMsNEJBQUFBLE9BQUFBLEtBQUFBLElBQUFBLHlCQUEwQlIsR0FBRyxDQUFDbEIsVUFBVU87UUFFeEMsSUFBSU4seUJBQXlCO1lBQzNCLE1BQU1DLGlCQUFpQmdCLEdBQUcsQ0FDeEJsQixVQUNBO2dCQUFFbUIsTUFBTUMsZUFBQUEsZUFBZSxDQUFDQyxLQUFLO2dCQUFFQyxNQUFNZjtnQkFBYUo7WUFBVyxHQUM3REY7UUFFSjtJQUNGLEdBQ0NpQyxLQUFLLENBQUMsQ0FBQ0M7UUFDTix1REFBdUQ7UUFDdkQsSUFBSSxFQUFDUCxVQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxPQUFRUSxPQUFBQSxHQUFTO1lBQ3BCdEQsUUFBUUMsSUFBSSxDQUFDLENBQUMseUJBQXlCLENBQUMsRUFBRTRDLE9BQU9RO1FBQ25EO0lBQ0YsR0FDQ0UsT0FBTyxDQUFDakM7SUFFWCxNQUFNa0MsdUJBQXVCLENBQUMsVUFBVSxFQUFFdEMsVUFBVTtJQUNwRCxNQUFNdUMscUJBQXNCbkQsVUFBVW1ELGtCQUFrQixLQUFLLENBQUM7SUFFOUQsSUFBSUMsMkJBQTJCQyxRQUFRQyxPQUFPO0lBQzlDLElBQUlKLHdCQUF3QkMsb0JBQW9CO1FBQzlDLHVFQUF1RTtRQUN2RSx5QkFBeUI7UUFDekJDLDJCQUEyQkQsa0JBQWtCLENBQUNELHFCQUFxQjtJQUNyRTtJQUVBQyxrQkFBa0IsQ0FBQ0QscUJBQXFCLEdBQUdFLHlCQUN4Q1AsSUFBSSxDQUFDLElBQU1ELGlCQUNYSyxPQUFPLENBQUM7UUFDUCxzRUFBc0U7UUFDdEUscUJBQXFCO1FBQ3JCLElBQUksQ0FBQ0UsdUJBQUFBLE9BQUFBLEtBQUFBLElBQUFBLGtCQUFvQixDQUFDRCxxQkFBcUIsR0FBRTtZQUMvQztRQUNGO1FBRUEsT0FBT0Msa0JBQWtCLENBQUNELHFCQUFxQjtJQUNqRDtJQUVGLE9BQU9SO0FBQ1Q7QUFPTyxTQUFTakYscUJBQ2Q4RixXQUFvQixFQUNwQixFQUFFQyxnQkFBZ0IsRUFBRUMsb0JBQW9CLEVBQW1CO0lBRTNELHFDQUFxQztJQUNyQyxNQUFNQyxVQUFVLGVBQWVDLE1BQzdCcEIsS0FBd0IsRUFDeEJxQixJQUE2QjtZQVlkQSxjQUlLQTtRQWRwQixJQUFJL0I7UUFDSixJQUFJO1lBQ0ZBLE1BQU0sSUFBSWdDLElBQUl0QixpQkFBaUJ1QixVQUFVdkIsTUFBTVYsR0FBRyxHQUFHVTtZQUNyRFYsSUFBSWtDLFFBQVEsR0FBRztZQUNmbEMsSUFBSW1DLFFBQVEsR0FBRztRQUNqQixFQUFFLE9BQU07WUFDTixrRUFBa0U7WUFDbEVuQyxNQUFNckQ7UUFDUjtRQUNBLE1BQU15RixXQUFXcEMsQ0FBQUEsT0FBQUEsT0FBQUEsS0FBQUEsSUFBQUEsSUFBS3FDLElBQUFBLEtBQVE7UUFDOUIsTUFBTUMsU0FBU1AsU0FBQUEsT0FBQUEsS0FBQUEsSUFBQUEsQ0FBQUEsZUFBQUEsS0FBTU8sTUFBQUEsS0FBTSxnQkFBWlAsYUFBY1EsV0FBVyxPQUFNO1FBRTlDLHlEQUF5RDtRQUN6RCxvQkFBb0I7UUFDcEIsTUFBTUMsYUFBYSxTQUFDVCxPQUFBQSxLQUFBQSxJQUFBQSxDQUFBQSxhQUFBQSxLQUFNVSxJQUFBQSxLQUFJLGdCQUFWVixXQUFvQlcsUUFBQUEsTUFBYTtRQUNyRCxNQUFNQyxXQUFXMUcsUUFBUUMsR0FBRyxDQUFDMEcsd0JBQXdCLEtBQUs7UUFDMUQsb0RBQW9EO1FBQ3BELDJFQUEyRTtRQUMzRSxtRUFBbUU7UUFDbkUsNkRBQTZEO1FBQzdELE1BQU1DLGFBQWlDTCxhQUNuQzdGLFlBQ0E2QixZQUFZQyxVQUFVLEdBQUdELFlBQVlFLEdBQUc7UUFFNUMsTUFBTVAsWUFBWXdELGlCQUFpQm1CLFFBQVE7UUFDM0MsTUFBTUMsZ0JBQWdCbkIscUJBQXFCa0IsUUFBUTtRQUVuRCxJQUFJRSxjQUFjRCxnQkFBZ0JFLENBQUFBLEdBQUFBLDhCQUFBQSxjQUFBQSxFQUFlRixpQkFBaUI7UUFDbEUsSUFBSUMsYUFBYTtZQUNmQSxZQUFZRSxTQUFTO1FBQ3ZCO1FBRUEsTUFBTUMsU0FBU0MsQ0FBQUEsR0FBQUEsUUFBQUEsU0FBQUEsSUFBWUMsS0FBSyxDQUM5QmIsYUFBYWMsV0FBQUEsa0JBQWtCLENBQUNDLGFBQWEsR0FBR0MsV0FBQUEsYUFBYSxDQUFDMUIsS0FBSyxFQUNuRTtZQUNFYTtZQUNBekMsTUFBTXVELFFBQUFBLFFBQVEsQ0FBQ0MsTUFBTTtZQUNyQkMsVUFBVTtnQkFBQztnQkFBU3JCO2dCQUFRRjthQUFTLENBQUN3QixNQUFNLENBQUNDLFNBQVM3RixJQUFJLENBQUM7WUFDM0Q4RixZQUFZO2dCQUNWLFlBQVkxQjtnQkFDWixlQUFlRTtnQkFDZixlQUFlLEVBQUV0QyxPQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxJQUFLK0QsUUFBUTtnQkFDOUIsaUJBQWlCL0QsQ0FBQUEsT0FBQUEsT0FBQUEsS0FBQUEsSUFBQUEsSUFBS2dFLElBQUFBLEtBQVFySDtZQUNoQztRQUNGLEdBQ0E7Z0JBaU1Jc0g7WUFoTUYsd0VBQXdFO1lBQ3hFLElBQUl6QixZQUFZO2dCQUNkLE9BQU9kLFlBQVloQixPQUFPcUI7WUFDNUI7WUFFQSxxREFBcUQ7WUFDckQsaUVBQWlFO1lBQ2pFLHdCQUF3QjtZQUN4QixJQUFJLENBQUM1RCxXQUFXO2dCQUNkLE9BQU91RCxZQUFZaEIsT0FBT3FCO1lBQzVCO1lBRUEscUVBQXFFO1lBQ3JFLGlFQUFpRTtZQUNqRSxJQUFJNUQsVUFBVStGLFdBQVcsRUFBRTtnQkFDekIsT0FBT3hDLFlBQVloQixPQUFPcUI7WUFDNUI7WUFFQSxNQUFNb0MsaUJBQ0p6RCxTQUNBLE9BQU9BLFVBQVUsWUFDakIsT0FBUUEsTUFBa0I0QixNQUFNLEtBQUs7WUFFdkMsTUFBTTJCLGlCQUFpQixDQUFDRztnQkFDdEIsMEVBQTBFO2dCQUMxRSxNQUFNQyxRQUFTdEMsUUFBQUEsT0FBQUEsS0FBQUEsSUFBQUEsSUFBYyxDQUFDcUMsTUFBTTtnQkFDcEMsT0FBT0MsU0FBVUYsQ0FBQUEsaUJBQWtCekQsS0FBYSxDQUFDMEQsTUFBTSxHQUFHLEtBQUc7WUFDL0Q7WUFFQSxJQUFJRSxrQkFBc0MzSDtZQUMxQyxNQUFNNEgsZUFBZSxDQUFDSDtvQkFDTnJDLFlBQ1ZBLGFBRUU7Z0JBSE4sT0FBTyxRQUFPQSxRQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxDQUFBQSxhQUFBQSxLQUFNVSxJQUFJLHFCQUFWVixVQUFZLENBQUNxQyxNQUFBQSxNQUFXLGNBQ2xDckMsUUFBQUEsT0FBQUEsS0FBQUEsSUFBQUEsQ0FBQUEsY0FBQUEsS0FBTVUsSUFBQUEsS0FBSSxnQkFBVlYsV0FBWSxDQUFDcUMsTUFBTSxHQUNuQkQsaUJBQUFBLENBQ0UsY0FBQ3pELE1BQWMrQixJQUFBQSxLQUFJLGdCQUFuQixXQUFxQixDQUFDMkIsTUFBTSxHQUM1QnpIO1lBQ1I7WUFDQSwwREFBMEQ7WUFDMUQsMENBQTBDO1lBQzFDLE1BQU02SCwwQkFBMEJELGFBQWE7WUFDN0MsSUFBSUUseUJBQXlCRDtZQUM3QixNQUFNdEgsT0FBaUJuQixhQUNyQndJLGFBQWEsV0FBVyxFQUFFLEVBQzFCLENBQUMsTUFBTSxFQUFFN0QsTUFBTVosUUFBUSxJQUFJO1lBRzdCLElBQUk0RTtZQUVKLElBQUkzQixlQUFlO2dCQUNqQixPQUFRQSxjQUFjNEIsSUFBSTtvQkFDeEIsS0FBSztvQkFDTCxLQUFLO29CQUNMLGtFQUFrRTtvQkFDbEUsS0FBSztvQkFDTCxLQUFLO29CQUNMLEtBQUs7b0JBQ0wsS0FBSztvQkFDTCxLQUFLO29CQUNMLEtBQUs7d0JBQ0hELGtCQUFrQjNCO3dCQUNsQjtvQkFDRixLQUFLO29CQUNMLEtBQUs7b0JBQ0wsS0FBSzt3QkFDSDtvQkFDRjt3QkFDRUE7Z0JBQ0o7WUFDRjtZQUVBLElBQUkyQixpQkFBaUI7Z0JBQ25CLElBQUlFLE1BQU1DLE9BQU8sQ0FBQzNILE9BQU87b0JBQ3ZCLHdEQUF3RDtvQkFDeEQsTUFBTTRILGdCQUNKSixnQkFBZ0J4SCxJQUFJLElBQUt3SCxDQUFBQSxnQkFBZ0J4SCxJQUFJLEdBQUc7b0JBQ2xELEtBQUssTUFBTU0sT0FBT04sS0FBTTt3QkFDdEIsSUFBSSxDQUFDNEgsY0FBYzdILFFBQVEsQ0FBQ08sTUFBTTs0QkFDaENzSCxjQUFjckgsSUFBSSxDQUFDRDt3QkFDckI7b0JBQ0Y7Z0JBQ0Y7WUFDRjtZQUVBLE1BQU11SCxlQUFlaEMsaUJBQUFBLE9BQUFBLEtBQUFBLElBQUFBLGNBQWVnQyxZQUFZO1lBRWhELElBQUlDLHFCQUFxQjdHLFVBQVU4RyxVQUFVO1lBRTdDLElBQUlsQyxlQUFlO2dCQUNqQixPQUFRQSxjQUFjNEIsSUFBSTtvQkFDeEIsS0FBSzt3QkFDSCxrRUFBa0U7d0JBQ2xFLFlBQVk7d0JBQ1pLLHFCQUFxQjt3QkFDckI7b0JBQ0YsS0FBSztvQkFDTCxLQUFLO29CQUNMLEtBQUs7b0JBQ0wsS0FBSztvQkFDTCxLQUFLO29CQUNMLEtBQUs7b0JBQ0wsS0FBSztvQkFDTCxLQUFLO29CQUNMLEtBQUs7b0JBQ0wsS0FBSzt3QkFDSDtvQkFDRjt3QkFDRWpDO2dCQUNKO1lBQ0Y7WUFFQSxNQUFNbUMsaUJBQWlCLENBQUMsQ0FBQy9HLFVBQVVnSCxpQkFBaUI7WUFFcEQsSUFBSUMsMEJBQTBCbkIsZUFBZTtZQUM3QyxJQUFJb0IsY0FBYztZQUNsQixJQUFJQztZQUVKLElBQ0UsT0FBT0YsNEJBQTRCLFlBQ25DLE9BQU9YLDJCQUEyQixhQUNsQztnQkFDQSxvSEFBb0g7Z0JBQ3BILE1BQU1jLDBCQUVISCw0QkFBNEIsV0FEVSxNQUVyQ1gsMkJBQTJCLEtBQzdCLDBEQUEwRDtnQkFDekRXLDRCQUE0QixjQUMxQlgsQ0FBQUEseUJBQXlCLEtBQUtBLDJCQUEyQixNQUFJO2dCQUVsRSxJQUFJYyx5QkFBeUI7b0JBQzNCRCxlQUFlLENBQUMsa0JBQWtCLEVBQUVGLHdCQUF3QixtQkFBbUIsRUFBRVgsdUJBQXVCLGdDQUFnQyxDQUFDO29CQUN6SVcsMEJBQTBCekk7b0JBQzFCOEgseUJBQXlCOUg7Z0JBQzNCO1lBQ0Y7WUFFQSxNQUFNNkksOEJBQ0osNEJBQzRCLGNBQzVCSixDQUYyQywyQkFFZixjQUM1Qiw2RkFBNkY7WUFDN0YsZ0ZBQWdGO1lBQ2hGSix1QkFBdUIsb0JBQ3ZCQSx1QkFBdUI7WUFFekIsZ0ZBQWdGO1lBQ2hGLCtFQUErRTtZQUMvRSxzRkFBc0Y7WUFDdEYsd0ZBQXdGO1lBQ3hGLHdCQUF3QjtZQUN4QixNQUFNUywrQkFDSixDQUFDVCxzQkFDRCxDQUFDSSwyQkFDRCxDQUFDWCwwQkFDRHRHLFVBQVV1SCxZQUFZO1lBRXhCLElBQ0UsZ0RBQ2dEO1lBQ2hETiw0QkFBNEIsaUJBQzVCLE9BQU9YLDJCQUEyQixhQUNsQztnQkFDQUEseUJBQXlCO1lBQzNCLE9BQU8sSUFDTGUsK0JBQ0FDLDhCQUNBO2dCQUNBaEIseUJBQXlCO1lBQzNCO1lBRUEsSUFDRVcsNEJBQTRCLGNBQzVCQSw0QkFBNEIsWUFDNUI7Z0JBQ0FDLGNBQWMsQ0FBQyxPQUFPLEVBQUVELHlCQUF5QjtZQUNuRDtZQUVBZCxrQkFBa0J4SSxtQkFDaEIySSx3QkFDQXRHLFVBQVUxQixLQUFLO1lBR2pCLE1BQU1rSixXQUFXMUIsZUFBZTtZQUNoQyxNQUFNMkIsY0FDSixRQUFPRCxZQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxTQUFVRSxHQUFBQSxNQUFRLGFBQ3JCRixXQUNBLElBQUlHLFFBQVFILFlBQVksQ0FBQztZQUUvQixNQUFNSSx1QkFDSkgsWUFBWUMsR0FBRyxDQUFDLG9CQUFvQkQsWUFBWUMsR0FBRyxDQUFDO1lBRXRELE1BQU1HLHNCQUFzQixDQUFDO2dCQUFDO2dCQUFPO2FBQU8sQ0FBQy9JLFFBQVEsQ0FDbkRnSCxDQUFBQSxDQUFBQSxrQkFBQUEsZUFBZSw4QkFBZkEsZ0JBQTBCZ0MsV0FBVyxPQUFNO1lBRzdDOzs7Ozs7Ozs7U0FTQyxHQUNELE1BQU1DLDJCQUNKLHNCQUNzQnZKLFlBRFksQ0FFbEMsa0NBQWtDO2FBQ2pDeUksMkJBQTJCekksYUFDMUIsK0VBQStFO1lBQy9FLHlFQUF5RTtZQUN6RXlJLDRCQUE0QixVQUFRLElBQ3RDLGtDQUFrQztZQUNsQ1gsMEJBQTBCOUg7WUFFNUIsSUFBSXdKLGNBQWN0QyxRQUNma0MsQ0FBQUEsd0JBQXdCQyxtQkFBQUEsQ0FBa0IsSUFDekN0QixvQkFBQUEsT0FBQUEsS0FBQUEsSUFBQUEsZ0JBQWlCeEYsVUFBQUEsTUFBZTtZQUdwQyxJQUFJa0gsMkJBQTJCO1lBRS9CLElBQUksQ0FBQ0QsZUFBZUQsMEJBQTBCO2dCQUM1QyxnRUFBZ0U7Z0JBQ2hFLHFFQUFxRTtnQkFDckUsa0JBQWtCO2dCQUNsQixJQUFJL0gsVUFBVWtJLHVCQUF1QixFQUFFO29CQUNyQ0QsMkJBQTJCO2dCQUM3QixPQUFPO29CQUNMRCxjQUFjO2dCQUNoQjtZQUNGO1lBRUEscUVBQXFFO1lBQ3JFLHFFQUFxRTtZQUNyRSxJQUFJRCw0QkFBNEJuRCxrQkFBa0JwRyxXQUFXO2dCQUMzRCxPQUFRb0csY0FBYzRCLElBQUk7b0JBQ3hCLEtBQUs7b0JBQ0wsS0FBSztvQkFDTCxvRUFBb0U7b0JBQ3BFLHdFQUF3RTtvQkFDeEUsMkJBQTJCO29CQUMzQixLQUFLO3dCQUNILElBQUkzQixhQUFhOzRCQUNmQSxZQUFZc0QsT0FBTzs0QkFDbkJ0RCxjQUFjO3dCQUNoQjt3QkFFQSxPQUFPdUQsQ0FBQUEsR0FBQUEsdUJBQUFBLGtCQUFBQSxFQUNMeEQsY0FBY3lELFlBQVksRUFDMUJySSxVQUFVMUIsS0FBSyxFQUNmO29CQUVKLEtBQUs7d0JBQ0g7b0JBQ0YsS0FBSzt3QkFDSCxJQUNFUixLQUFvQixJQUNwQjhHLGNBQWMyRCxlQUFlLEVBQzdCOzRCQUNBLElBQUkxRCxhQUFhO2dDQUNmQSxZQUFZc0QsT0FBTztnQ0FDbkJ0RCxjQUFjOzRCQUNoQjs0QkFDQSxNQUFNRCxjQUFjMkQsZUFBZSxDQUFDQyxZQUFZLENBQzlDQyxpQkFBQUEsV0FBVyxDQUFDQyxPQUFPO3dCQUV2Qjt3QkFDQTtvQkFDRixLQUFLO29CQUNMLEtBQUs7b0JBQ0wsS0FBSztvQkFDTCxLQUFLO29CQUNMLEtBQUs7b0JBQ0wsS0FBSzt3QkFDSDtvQkFDRjt3QkFDRTlEO2dCQUNKO1lBQ0Y7WUFFQSxPQUFRaUM7Z0JBQ04sS0FBSztvQkFBa0I7d0JBQ3JCSyxjQUFjO3dCQUNkO29CQUNGO2dCQUNBLEtBQUs7b0JBQWlCO3dCQUNwQixJQUNFRCw0QkFBNEIsaUJBQzNCLE9BQU9kLG9CQUFvQixlQUFlQSxrQkFBa0IsR0FDN0Q7NEJBQ0EsTUFBTSxxQkFFTCxDQUZLLElBQUl4SCxNQUNSLENBQUMsdUNBQXVDLEVBQUVzRixTQUFTLGdEQUFnRCxDQUFDLEdBRGhHO3VDQUFBOzRDQUFBOzhDQUFBOzRCQUVOO3dCQUNGO3dCQUNBaUQsY0FBYzt3QkFDZDtvQkFDRjtnQkFDQSxLQUFLO29CQUFjO3dCQUNqQixJQUFJRCw0QkFBNEIsWUFBWTs0QkFDMUMsTUFBTSxxQkFFTCxDQUZLLElBQUl0SSxNQUNSLENBQUMsb0NBQW9DLEVBQUVzRixTQUFTLDZDQUE2QyxDQUFDLEdBRDFGO3VDQUFBOzRDQUFBOzhDQUFBOzRCQUVOO3dCQUNGO3dCQUNBO29CQUNGO2dCQUNBLEtBQUs7b0JBQWU7d0JBQ2xCLElBQ0UsT0FBT3FDLDJCQUEyQixlQUNsQ0EsMkJBQTJCLEdBQzNCOzRCQUNBWSxjQUFjOzRCQUNkZixrQkFBa0IxSCxZQUFBQSxjQUFjO3dCQUNsQzt3QkFDQTtvQkFDRjtnQkFDQSxLQUFLO2dCQUNMLEtBQUs7Z0JBQ0wsS0FBSztnQkFDTCxLQUFLRDtvQkFLSDtnQkFDRjtvQkFDRXFJO1lBQ0o7WUFFQSxJQUFJLE9BQU9WLG9CQUFvQixhQUFhO2dCQUMxQyxJQUFJVSx1QkFBdUIsbUJBQW1CLENBQUNFLGdCQUFnQjtvQkFDN0RaLGtCQUFrQjFILFlBQUFBLGNBQWM7b0JBQ2hDeUksY0FBYztnQkFDaEIsT0FBTyxJQUFJTCx1QkFBdUIsb0JBQW9CO29CQUNwRFYsa0JBQWtCO29CQUNsQmUsY0FBYztnQkFDaEIsT0FBTyxJQUFJSCxnQkFBZ0I7b0JBQ3pCWixrQkFBa0I7b0JBQ2xCZSxjQUFjO2dCQUNoQixPQUFPLElBQUljLGFBQWE7b0JBQ3RCN0Isa0JBQWtCO29CQUNsQmUsY0FBYztnQkFDaEIsT0FBTztvQkFDTCxtREFBbUQ7b0JBQ25EQSxjQUFjO29CQUNkZixrQkFBa0JJLGtCQUNkQSxnQkFBZ0J4RixVQUFVLEdBQzFCdEMsWUFBQUEsY0FBYztnQkFDcEI7WUFDRixPQUFPLElBQUksQ0FBQ3lJLGFBQWE7Z0JBQ3ZCQSxjQUFjLENBQUMsWUFBWSxFQUFFZixpQkFBaUI7WUFDaEQ7WUFFQSxJQUNFLHlCQUN5QjtZQUN6QixDQUFFbkcsQ0FBQUEsVUFBVTJJLFdBQVcsSUFBSXhDLHFCQUFvQixLQUMvQyw2REFBNkQ7WUFDN0QsQ0FBQzZCLGVBQ0QsbUVBQW1FO1lBQ25FLHFFQUFxRTtZQUNyRSxTQUFTO1lBQ1R6QixtQkFDQUosa0JBQWtCSSxnQkFBZ0J4RixVQUFVLEVBQzVDO2dCQUNBLGlFQUFpRTtnQkFDakUsMEJBQTBCO2dCQUMxQixJQUFJb0Ysb0JBQW9CLEdBQUc7b0JBQ3pCLElBQUl2QixlQUFlO3dCQUNqQixPQUFRQSxjQUFjNEIsSUFBSTs0QkFDeEIsS0FBSzs0QkFDTCxLQUFLOzRCQUNMLEtBQUs7NEJBQ0wsMkRBQTJEOzRCQUMzRCwrREFBK0Q7NEJBQy9ELDRFQUE0RTs0QkFDNUUsNkVBQTZFOzRCQUM3RSwwQ0FBMEM7NEJBQzFDLEtBQUs7Z0NBQ0gsSUFBSTNCLGFBQWE7b0NBQ2ZBLFlBQVlzRCxPQUFPO29DQUNuQnRELGNBQWM7Z0NBQ2hCO2dDQUNBLE9BQU91RCxDQUFBQSxHQUFBQSx1QkFBQUEsa0JBQUFBLEVBQ0x4RCxjQUFjeUQsWUFBWSxFQUMxQnJJLFVBQVUxQixLQUFLLEVBQ2Y7NEJBRUosS0FBSztnQ0FDSCxJQUNFUixLQUFvQixJQUNwQjhHLGNBQWMyRCxlQUFlLEVBQzdCO29DQUNBLElBQUkxRCxhQUFhO3dDQUNmQSxZQUFZc0QsT0FBTzt3Q0FDbkJ0RCxjQUFjO29DQUNoQjtvQ0FDQSxNQUFNRCxjQUFjMkQsZUFBZSxDQUFDQyxZQUFZLENBQzlDQyxpQkFBQUEsV0FBVyxDQUFDQyxPQUFPO2dDQUV2QjtnQ0FDQTs0QkFDRixLQUFLOzRCQUNMLEtBQUs7NEJBQ0wsS0FBSzs0QkFDTCxLQUFLOzRCQUNMLEtBQUs7NEJBQ0wsS0FBSztnQ0FDSDs0QkFDRjtnQ0FDRTlEO3dCQUNKO29CQUNGO29CQUVBZ0UsQ0FBQUEsR0FBQUEsa0JBQUFBLHlCQUFBQSxFQUNFNUksV0FDQTRFLGVBQ0EsQ0FBQyxvQkFBb0IsRUFBRXJDLE1BQU0sQ0FBQyxFQUFFdkMsVUFBVTFCLEtBQUssRUFBRTtnQkFFckQ7Z0JBRUEsbUVBQW1FO2dCQUNuRSw4Q0FBOEM7Z0JBQzlDLDJCQUEyQjtnQkFDM0IsSUFBSWlJLG1CQUFtQkYsNEJBQTRCRixpQkFBaUI7b0JBQ2xFSSxnQkFBZ0J4RixVQUFVLEdBQUdvRjtnQkFDL0I7WUFDRjtZQUVBLE1BQU0wQyx3QkFDSixPQUFPMUMsb0JBQW9CLFlBQVlBLGtCQUFrQjtZQUUzRCxJQUFJdkY7WUFDSixNQUFNLEVBQUVFLGdCQUFnQixFQUFFLEdBQUdkO1lBQzdCLElBQUk4SSxlQUFlO1lBQ25CLElBQUl4RztZQUVKLElBQUlzQyxlQUFlO2dCQUNqQixPQUFRQSxjQUFjNEIsSUFBSTtvQkFDeEIsS0FBSztvQkFDTCxLQUFLO29CQUNMLEtBQUs7d0JBQ0hzQyxlQUFlbEUsY0FBY2tFLFlBQVksSUFBSTt3QkFDN0N4RywyQkFBMkJzQyxjQUFjdEMsd0JBQXdCO3dCQUNqRTtvQkFDRixLQUFLO29CQUNMLEtBQUs7b0JBQ0wsS0FBSztvQkFDTCxLQUFLO29CQUNMLEtBQUs7b0JBQ0wsS0FBSztvQkFDTCxLQUFLO29CQUNMLEtBQUs7d0JBQ0g7b0JBQ0Y7d0JBQ0VzQztnQkFDSjtZQUNGO1lBRUEsSUFDRTlELG9CQUNDK0gsMEJBQXlCdkcsd0JBQUFBLENBQXVCLEVBQ2pEO2dCQUNBLElBQUk7b0JBQ0YxQixXQUFXLE1BQU1FLGlCQUFpQmlJLGdCQUFnQixDQUNoRDlFLFVBQ0ErQixpQkFBa0J6RCxRQUF3QnFCO2dCQUU5QyxFQUFFLE9BQU9oRixLQUFLO29CQUNaYyxRQUFRcUQsS0FBSyxDQUFDLENBQUMsZ0NBQWdDLENBQUMsRUFBRVI7Z0JBQ3BEO1lBQ0Y7WUFFQSxNQUFNeUcsV0FBV2hKLFVBQVVTLFdBQVcsSUFBSTtZQUMxQ1QsVUFBVVMsV0FBVyxHQUFHdUksV0FBVztZQUVuQyxJQUFJaEksZUFBMkMsS0FBTztZQUV0RCxNQUFNaUksa0JBQWtCLE9BQ3RCQyxTQUNBQztnQkFFQSxNQUFNQyxxQkFBcUI7b0JBQ3pCO29CQUNBO29CQUNBO29CQUNBO29CQUNBO29CQUNBO29CQUNBO29CQUNBO29CQUNBO29CQUNBO29CQUNBO29CQUNBO29CQUVBLDhDQUE4Qzt1QkFDMUNGLFVBQVUsRUFBRSxHQUFHO3dCQUFDO3FCQUFTO2lCQUM5QjtnQkFFRCxJQUFJbEQsZ0JBQWdCO29CQUNsQixNQUFNcUQsV0FBb0I5RztvQkFDMUIsTUFBTStHLGFBQTBCO3dCQUM5QjlILE1BQU82SCxTQUFpQkUsT0FBTyxJQUFJRixTQUFTN0gsSUFBSTtvQkFDbEQ7b0JBRUEsS0FBSyxNQUFNeUUsU0FBU21ELG1CQUFvQjt3QkFDdEMsaUNBQWlDO3dCQUNqQ0UsVUFBVSxDQUFDckQsTUFBTSxHQUFHb0QsUUFBUSxDQUFDcEQsTUFBTTtvQkFDckM7b0JBQ0ExRCxRQUFRLElBQUl1QixRQUFRdUYsU0FBU3hILEdBQUcsRUFBRXlIO2dCQUNwQyxPQUFPLElBQUkxRixNQUFNO29CQUNmLE1BQU0sRUFBRTJGLE9BQU8sRUFBRS9ILElBQUksRUFBRWdCLE1BQU0sRUFBRSxHQUFHZ0gsWUFBWSxHQUM1QzVGO29CQUNGQSxPQUFPO3dCQUNMLEdBQUc0RixVQUFVO3dCQUNiaEksTUFBTStILFdBQVcvSDt3QkFDakJnQixRQUFRMEcsVUFBVTFLLFlBQVlnRTtvQkFDaEM7Z0JBQ0Y7Z0JBRUEsb0RBQW9EO2dCQUNwRCxNQUFNaUgsYUFBYTtvQkFDakIsR0FBRzdGLElBQUk7b0JBQ1BVLE1BQU07MkJBQUtWLFFBQUFBLE9BQUFBLEtBQUFBLElBQUFBLEtBQU1VLElBQVQ7d0JBQWVvRixXQUFXO3dCQUFVVjtvQkFBUztnQkFDdkQ7Z0JBRUEsT0FBT3pGLFlBQVloQixPQUFPa0gsWUFDdkI1RyxJQUFJLENBQUMsT0FBT2xDO29CQUNYLElBQUksQ0FBQ3VJLFdBQVd4RSxZQUFZO3dCQUMxQjNFLGlCQUFpQkMsV0FBVzs0QkFDMUIySixPQUFPakY7NEJBQ1A3QyxLQUFLb0M7NEJBQ0xpRCxhQUFhaUMsdUJBQXVCakM7NEJBQ3BDMEMsYUFDRXpELG9CQUFvQixLQUFLZ0Qsc0JBQ3JCLFNBQ0E7NEJBQ05oQzs0QkFDQXZGLFFBQVFqQixJQUFJaUIsTUFBTTs0QkFDbEJ1QyxRQUFRc0YsV0FBV3RGLE1BQU0sSUFBSTt3QkFDL0I7b0JBQ0Y7b0JBQ0EsSUFDRXhELElBQUlpQixNQUFNLEtBQUssT0FDZmQsb0JBQ0FGLFlBQ0NpSSxDQUFBQSx5QkFBeUJ2Ryx3QkFBQUEsQ0FBdUIsRUFDakQ7d0JBQ0EsTUFBTS9ELHVCQUNKNEgsbUJBQW1CMUgsWUFBQUEsY0FBYyxHQUM3Qm9MLFlBQUFBLHNCQUFzQixHQUN0QjFEO3dCQUVOLE1BQU0yRCx5QkFFVWpCLHdCQUNaOzRCQUNFL0IsWUFBWTs0QkFDWjdDOzRCQUNBK0U7NEJBQ0FqSzs0QkFDQWtKO3dCQUNGLElBQ0F6Sjt3QkFFSixPQUFRb0csaUJBQUFBLE9BQUFBLEtBQUFBLElBQUFBLGNBQWU0QixJQUFJOzRCQUN6QixLQUFLOzRCQUNMLEtBQUs7NEJBQ0wsS0FBSzs0QkFDTCxLQUFLO2dDQUNILE9BQU85Riw4QkFDTEMsS0FDQUMsVUFDQWtKLHdCQUNBaEosa0JBQ0F2QyxzQkFDQXlDOzRCQUVKLEtBQUs7Z0NBQ0gsSUFDRWxELEtBQW9CLElBQ3BCOEcsY0FBYzJELGVBQWUsSUFDN0IzRCxjQUFjQyxXQUFXLElBQ3pCZ0UsdUJBQ0E7b0NBQ0EsbURBQW1EO29DQUNuRCxvREFBb0Q7b0NBQ3BELHdEQUF3RDtvQ0FDeEQsdURBQXVEO29DQUN2RCxzREFBc0Q7b0NBQ3RELHdCQUF3QjtvQ0FDeEIsT0FBT25JLDhCQUNMQyxLQUNBQyxVQUNBa0osd0JBQ0FoSixrQkFDQXZDLHNCQUNBeUM7Z0NBRUo7NEJBQ0YsY0FBYzs0QkFDZCxLQUFLOzRCQUNMLEtBQUs7NEJBQ0wsS0FBSzs0QkFDTCxLQUFLOzRCQUNMLEtBQUs7NEJBQ0wsS0FBSzs0QkFDTCxLQUFLeEM7Z0NBQ0gsT0FBTzZELDRCQUNMckMsV0FDQVcsS0FDQUMsVUFDQWtKLHdCQUNBaEosa0JBQ0F3QiwwQkFDQS9ELHNCQUNBZ0UsT0FDQXZCLGNBQ0E4RSxlQUFlOzRCQUVuQjtnQ0FDRWxCO3dCQUNKO29CQUNGO29CQUVBLHlFQUF5RTtvQkFDekUsNEVBQTRFO29CQUM1RSxNQUFNNUQ7b0JBRU4sT0FBT0w7Z0JBQ1QsR0FDQ21DLEtBQUssQ0FBQyxDQUFDQztvQkFDTi9CO29CQUNBLE1BQU0rQjtnQkFDUjtZQUNKO1lBRUEsSUFBSW9HO1lBQ0osSUFBSVkseUJBQXlCO1lBQzdCLElBQUlDLG9CQUFvQjtZQUV4QixJQUFJcEosWUFBWUUsa0JBQWtCO2dCQUNoQyxJQUFJbUo7Z0JBRUosSUFBSW5CLGdCQUFnQnhHLDBCQUEwQjtvQkFDNUMySCxrQkFBa0IzSCx5QkFBeUJvRixHQUFHLENBQUM5RztvQkFDL0NvSixvQkFBb0I7Z0JBQ3RCO2dCQUVBLElBQUluQix5QkFBeUIsQ0FBQ29CLGlCQUFpQjtvQkFDN0NqSixlQUFlLE1BQU1GLGlCQUFpQm9KLElBQUksQ0FBQ3RKO29CQUMzQyxNQUFNdUosUUFBUW5LLFVBQVVvSyxvQkFBb0IsR0FDeEMsT0FDQSxNQUFNdEosaUJBQWlCNEcsR0FBRyxDQUFDOUcsVUFBVTt3QkFDbkNtQixNQUFNc0ksZUFBQUEsb0JBQW9CLENBQUNwSSxLQUFLO3dCQUNoQ2xCLFlBQVlvRjt3QkFDWmxDO3dCQUNBK0U7d0JBQ0FqSzt3QkFDQXVMLFFBQVEsRUFBRTFELGdCQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxhQUFjN0gsSUFBSTtvQkFDOUI7b0JBRUosSUFBSWdKLDRCQUE0Qm5ELGVBQWU7d0JBQzdDLE9BQVFBLGNBQWM0QixJQUFJOzRCQUN4QixLQUFLOzRCQUNMLEtBQUs7NEJBQ0wsS0FBSzs0QkFDTCxLQUFLO2dDQUNILDJEQUEyRDtnQ0FDM0QsMkRBQTJEO2dDQUMzRCxxREFBcUQ7Z0NBQ3JELG9FQUFvRTtnQ0FDcEUsUUFBUTtnQ0FDUixNQUFNK0Q7Z0NBQ047NEJBQ0YsS0FBSztnQ0FDSCxJQUNFek0sS0FBb0IsSUFDcEI4RyxjQUFjMkQsZUFBZSxFQUM3QjtvQ0FDQSxNQUFNM0QsY0FBYzJELGVBQWUsQ0FBQ0MsWUFBWSxDQUM5Q0MsaUJBQUFBLFdBQVcsQ0FBQ0MsT0FBTztnQ0FFdkI7Z0NBQ0E7NEJBQ0YsS0FBSzs0QkFDTCxLQUFLOzRCQUNMLEtBQUs7NEJBQ0wsS0FBSzs0QkFDTCxLQUFLOzRCQUNMLEtBQUs7Z0NBQ0g7NEJBQ0Y7Z0NBQ0U5RDt3QkFDSjtvQkFDRjtvQkFFQSxJQUFJdUYsT0FBTzt3QkFDVCxNQUFNbko7b0JBQ1IsT0FBTzt3QkFDTCw0SEFBNEg7d0JBQzVILGlFQUFpRTt3QkFDakVtSSxzQkFBc0I7b0JBQ3hCO29CQUVBLElBQUlnQixVQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxNQUFPakUsS0FBQUEsS0FBU2lFLE1BQU1qRSxLQUFLLENBQUNuRSxJQUFJLEtBQUtDLGVBQUFBLGVBQWUsQ0FBQ0MsS0FBSyxFQUFFO3dCQUM5RCx3REFBd0Q7d0JBQ3hELGdEQUFnRDt3QkFDaEQsSUFBSWpDLFVBQVV3SyxrQkFBa0IsSUFBSUwsTUFBTWpCLE9BQU8sRUFBRTs0QkFDakRhLHlCQUF5Qjt3QkFDM0IsT0FBTzs0QkFDTCxJQUFJSSxNQUFNakIsT0FBTyxFQUFFO2dDQUNqQmxKLFVBQVVtRCxrQkFBa0IsS0FBSyxDQUFDO2dDQUNsQyxJQUFJLENBQUNuRCxVQUFVbUQsa0JBQWtCLENBQUN2QyxTQUFTLEVBQUU7b0NBQzNDLE1BQU02SixvQkFBb0J4QixnQkFBZ0IsTUFDdkNwRyxJQUFJLENBQUMsT0FBTzZILFdBQWM7NENBQ3pCbEosTUFBTSxNQUFNa0osU0FBU3hKLFdBQVc7NENBQ2hDRSxTQUFTc0osU0FBU3RKLE9BQU87NENBQ3pCUSxRQUFROEksU0FBUzlJLE1BQU07NENBQ3ZCUSxZQUFZc0ksU0FBU3RJLFVBQVU7eUNBQ2pDLEdBQ0NhLE9BQU8sQ0FBQzt3Q0FDUGpELFVBQVVtRCxrQkFBa0IsS0FBSyxDQUFDO3dDQUNsQyxPQUFPbkQsVUFBVW1ELGtCQUFrQixDQUFDdkMsWUFBWSxHQUFHO29DQUNyRDtvQ0FFRiwyREFBMkQ7b0NBQzNELDhCQUE4QjtvQ0FDOUI2SixrQkFBa0IzSCxLQUFLLENBQUNwRCxRQUFRcUQsS0FBSztvQ0FFckMvQyxVQUFVbUQsa0JBQWtCLENBQUN2QyxTQUFTLEdBQUc2SjtnQ0FDM0M7NEJBQ0Y7NEJBRUFSLGtCQUFrQkUsTUFBTWpFLEtBQUssQ0FBQ2hFLElBQUk7d0JBQ3BDO29CQUNGO2dCQUNGO2dCQUVBLElBQUkrSCxpQkFBaUI7b0JBQ25CLElBQUl2RixZQUFZO3dCQUNkM0UsaUJBQWlCQyxXQUFXOzRCQUMxQjJKLE9BQU9qRjs0QkFDUDdDLEtBQUtvQzs0QkFDTGlEOzRCQUNBMEMsYUFBYUksb0JBQW9CLFFBQVE7NEJBQ3pDN0M7NEJBQ0F2RixRQUFRcUksZ0JBQWdCckksTUFBTSxJQUFJOzRCQUNsQ3VDLFFBQVFQLENBQUFBLFFBQUFBLE9BQUFBLEtBQUFBLElBQUFBLEtBQU1PLE1BQUFBLEtBQVU7d0JBQzFCO29CQUNGO29CQUVBLE1BQU11RyxXQUFXLElBQUl2SSxTQUNuQlYsT0FBT0MsSUFBSSxDQUFDdUksZ0JBQWdCekksSUFBSSxFQUFFLFdBQ2xDO3dCQUNFSixTQUFTNkksZ0JBQWdCN0ksT0FBTzt3QkFDaENRLFFBQVFxSSxnQkFBZ0JySSxNQUFNO29CQUNoQztvQkFHRlAsT0FBT3NKLGNBQWMsQ0FBQ0QsVUFBVSxPQUFPO3dCQUNyQ3hFLE9BQU8rRCxnQkFBZ0JwSSxHQUFHO29CQUM1QjtvQkFFQSxPQUFPNkk7Z0JBQ1Q7WUFDRjtZQUVBLElBQ0cxSyxDQUFBQSxVQUFVd0ssa0JBQWtCLElBQzFCMU0sTUFJaUMsSUFDaEM4RyxDQUFjMkQsS0FDbEIzRSxRQUNBLE9BQU9BLFNBQVMsVUFDaEI7Z0JBQ0EsTUFBTSxFQUFFaUgsS0FBSyxFQUFFLEdBQUdqSDtnQkFFbEIsb0VBQW9FO2dCQUNwRSxJQUFJL0YsZUFBZSxPQUFPK0YsS0FBS2lILEtBQUs7Z0JBRXBDLElBQUlBLFVBQVUsWUFBWTtvQkFDeEIsdURBQXVEO29CQUN2RCxJQUFJakcsZUFBZTt3QkFDakIsT0FBUUEsY0FBYzRCLElBQUk7NEJBQ3hCLEtBQUs7NEJBQ0wsS0FBSzs0QkFDTCxLQUFLOzRCQUNMLEtBQUs7Z0NBQ0gsSUFBSTNCLGFBQWE7b0NBQ2ZBLFlBQVlzRCxPQUFPO29DQUNuQnRELGNBQWM7Z0NBQ2hCO2dDQUNBLE9BQU91RCxDQUFBQSxHQUFBQSx1QkFBQUEsa0JBQUFBLEVBQ0x4RCxjQUFjeUQsWUFBWSxFQUMxQnJJLFVBQVUxQixLQUFLLEVBQ2Y7NEJBRUosS0FBSztnQ0FDSCxJQUNFUixLQUFvQixJQUNwQjhHLGNBQWMyRCxlQUFlLEVBQzdCO29DQUNBLElBQUkxRCxhQUFhO3dDQUNmQSxZQUFZc0QsT0FBTzt3Q0FDbkJ0RCxjQUFjO29DQUNoQjtvQ0FDQSxNQUFNRCxjQUFjMkQsZUFBZSxDQUFDQyxZQUFZLENBQzlDQyxpQkFBQUEsV0FBVyxDQUFDQyxPQUFPO2dDQUV2QjtnQ0FDQTs0QkFDRixLQUFLOzRCQUNMLEtBQUs7NEJBQ0wsS0FBSzs0QkFDTCxLQUFLOzRCQUNMLEtBQUs7NEJBQ0wsS0FBSztnQ0FDSDs0QkFDRjtnQ0FDRTlEO3dCQUNKO29CQUNGO29CQUNBZ0UsQ0FBQUEsR0FBQUEsa0JBQUFBLHlCQUFBQSxFQUNFNUksV0FDQTRFLGVBQ0EsQ0FBQyxlQUFlLEVBQUVyQyxNQUFNLENBQUMsRUFBRXZDLFVBQVUxQixLQUFLLEVBQUU7Z0JBRWhEO2dCQUVBLE1BQU13TSxnQkFBZ0IsVUFBVWxIO2dCQUNoQyxNQUFNLEVBQUVVLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBR1Y7Z0JBQ3RCLElBQ0UsT0FBT1UsS0FBS3ZELFVBQVUsS0FBSyxZQUMzQndGLG1CQUNBakMsS0FBS3ZELFVBQVUsR0FBR3dGLGdCQUFnQnhGLFVBQVUsRUFDNUM7b0JBQ0EsSUFBSXVELEtBQUt2RCxVQUFVLEtBQUssR0FBRzt3QkFDekIsdURBQXVEO3dCQUN2RCxJQUFJNkQsZUFBZTs0QkFDakIsT0FBUUEsY0FBYzRCLElBQUk7Z0NBQ3hCLEtBQUs7Z0NBQ0wsS0FBSztnQ0FDTCxLQUFLO2dDQUNMLEtBQUs7b0NBQ0gsT0FBTzRCLENBQUFBLEdBQUFBLHVCQUFBQSxrQkFBQUEsRUFDTHhELGNBQWN5RCxZQUFZLEVBQzFCckksVUFBVTFCLEtBQUssRUFDZjtnQ0FFSixLQUFLO29DQUNILElBQ0VSLEtBQW9CLElBQ3BCOEcsY0FBYzJELGVBQWUsRUFDN0I7d0NBQ0EsTUFBTTNELGNBQWMyRCxlQUFlLENBQUNDLFlBQVksQ0FDOUNDLGlCQUFBQSxXQUFXLENBQUNDLE9BQU87b0NBRXZCO29DQUNBO2dDQUNGLEtBQUs7Z0NBQ0wsS0FBSztnQ0FDTCxLQUFLO2dDQUNMLEtBQUs7Z0NBQ0wsS0FBSztnQ0FDTCxLQUFLO29DQUNIO2dDQUNGO29DQUNFOUQ7NEJBQ0o7d0JBQ0Y7d0JBQ0FnRSxDQUFBQSxHQUFBQSxrQkFBQUEseUJBQUFBLEVBQ0U1SSxXQUNBNEUsZUFDQSxDQUFDLG9CQUFvQixFQUFFckMsTUFBTSxDQUFDLEVBQUV2QyxVQUFVMUIsS0FBSyxFQUFFO29CQUVyRDtvQkFFQSxJQUFJLENBQUMwQixVQUFVMkksV0FBVyxJQUFJckUsS0FBS3ZELFVBQVUsS0FBSyxHQUFHO3dCQUNuRHdGLGdCQUFnQnhGLFVBQVUsR0FBR3VELEtBQUt2RCxVQUFVO29CQUM5QztnQkFDRjtnQkFDQSxJQUFJK0osZUFBZSxPQUFPbEgsS0FBS1UsSUFBSTtZQUNyQztZQUVBLGtFQUFrRTtZQUNsRSw2REFBNkQ7WUFDN0Qsd0NBQXdDO1lBQ3hDLElBQUkxRCxZQUFZbUosd0JBQXdCO2dCQUN0QyxNQUFNN0csdUJBQXVCdEM7Z0JBQzdCWixVQUFVbUQsa0JBQWtCLEtBQUssQ0FBQztnQkFDbEMsSUFBSXNILG9CQUNGekssVUFBVW1ELGtCQUFrQixDQUFDRCxxQkFBcUI7Z0JBRXBELElBQUl1SCxtQkFBbUI7b0JBQ3JCLE1BQU1NLG9CQUtGLE1BQU1OO29CQUNWLE9BQU8sSUFBSXRJLFNBQVM0SSxrQkFBa0J2SixJQUFJLEVBQUU7d0JBQzFDSixTQUFTMkosa0JBQWtCM0osT0FBTzt3QkFDbENRLFFBQVFtSixrQkFBa0JuSixNQUFNO3dCQUNoQ1EsWUFBWTJJLGtCQUFrQjNJLFVBQVU7b0JBQzFDO2dCQUNGO2dCQUVBLGdFQUFnRTtnQkFDaEUsNEVBQTRFO2dCQUM1RSxzRUFBc0U7Z0JBQ3RFLHNFQUFzRTtnQkFDdEUsb0VBQW9FO2dCQUNwRSxtRUFBbUU7Z0JBQ25FLGlFQUFpRTtnQkFDakUsNkNBQTZDO2dCQUM3QyxNQUFNNEksa0JBQWtCL0IsZ0JBQWdCLE1BQU1FLHFCQUM1Qyw4REFBOEQ7Z0JBQzlELDhEQUE4RDtnQkFDOUQsbURBQW1EO2dCQUNuRCwrQ0FBK0M7aUJBQzlDdEcsSUFBSSxDQUFDRixlQUFBQSxhQUFhO2dCQUVyQjhILG9CQUFvQk8sZ0JBQ2pCbkksSUFBSSxDQUFDLE9BQU9vSTtvQkFDWCxNQUFNUCxXQUFXTyxTQUFTLENBQUMsRUFBRTtvQkFDN0IsT0FBTzt3QkFDTHpKLE1BQU0sTUFBTWtKLFNBQVN4SixXQUFXO3dCQUNoQ0UsU0FBU3NKLFNBQVN0SixPQUFPO3dCQUN6QlEsUUFBUThJLFNBQVM5SSxNQUFNO3dCQUN2QlEsWUFBWXNJLFNBQVN0SSxVQUFVO29CQUNqQztnQkFDRixHQUNDYSxPQUFPLENBQUM7d0JBR0ZqRDtvQkFGTCw4REFBOEQ7b0JBQzlELDZCQUE2QjtvQkFDN0IsSUFBSSxHQUFDQSxnQ0FBQUEsVUFBVW1ELGtCQUFBQSxLQUFrQixnQkFBNUJuRCw2QkFBOEIsQ0FBQ2tELHFCQUFxQixHQUFFO3dCQUN6RDtvQkFDRjtvQkFFQSxPQUFPbEQsVUFBVW1ELGtCQUFrQixDQUFDRCxxQkFBcUI7Z0JBQzNEO2dCQUVGLG1FQUFtRTtnQkFDbkUscUJBQXFCO2dCQUNyQnVILGtCQUFrQjNILEtBQUssQ0FBQyxLQUFPO2dCQUUvQjlDLFVBQVVtRCxrQkFBa0IsQ0FBQ0QscUJBQXFCLEdBQUd1SDtnQkFFckQsT0FBT08sZ0JBQWdCbkksSUFBSSxDQUFDLENBQUNvSSxZQUFjQSxTQUFTLENBQUMsRUFBRTtZQUN6RCxPQUFPO2dCQUNMLE9BQU9oQyxnQkFBZ0IsT0FBT0U7WUFDaEM7UUFDRjtRQUdGLElBQUl0RSxhQUFhO1lBQ2YsSUFBSTtnQkFDRixPQUFPLE1BQU1HO1lBQ2YsU0FBVTtnQkFDUixJQUFJSCxhQUFhO29CQUNmQSxZQUFZc0QsT0FBTztnQkFDckI7WUFDRjtRQUNGO1FBQ0EsT0FBT25EO0lBQ1Q7SUFFQSxpRUFBaUU7SUFDakUseUVBQXlFO0lBQ3pFLHlFQUF5RTtJQUN6RSxXQUFXO0lBQ1h0QixRQUFRd0gsYUFBYSxHQUFHO0lBQ3hCeEgsUUFBUXlILG9CQUFvQixHQUFHLElBQU0zSDtJQUNyQ0UsUUFBUTBILGtCQUFrQixHQUFHN0g7SUFDM0JuRixVQUFzQyxDQUFDWixrQkFBa0IsR0FBRztJQUU5RCwyRUFBMkU7SUFDM0UsaUNBQWlDO0lBQ2pDNkQsT0FBT3NKLGNBQWMsQ0FBQ2pILFNBQVMsUUFBUTtRQUFFd0MsT0FBTztRQUFTbUYsVUFBVTtJQUFNO0lBRXpFLE9BQU8zSDtBQUNUO0FBSU8sU0FBU2hHLFdBQVc0TixPQUF3QjtJQUNqRCxnRUFBZ0U7SUFDaEUsSUFBSW5OLGtCQUFrQjtJQUV0QiwwRUFBMEU7SUFDMUUsOEJBQThCO0lBQzlCLE1BQU1vTixXQUFXQyxDQUFBQSxHQUFBQSxhQUFBQSxpQkFBQUEsRUFBa0JwTixXQUFXdUYsS0FBSztJQUVuRCw2Q0FBNkM7SUFDN0N2RixXQUFXdUYsS0FBSyxHQUFHbEcscUJBQXFCOE4sVUFBVUQ7QUFDcEQ7QUFFQSxJQUFJRyx5QkFBK0M7QUFDbkQsU0FBU2xCO0lBQ1AsSUFBSSxDQUFDa0Isd0JBQXdCO1FBQzNCQSx5QkFBeUIsSUFBSXBJLFFBQVEsQ0FBQ3FJO1lBQ3BDQyxXQUFXO2dCQUNURix5QkFBeUI7Z0JBQ3pCQztZQUNGLEdBQUc7UUFDTDtJQUNGO0lBQ0EsT0FBT0Q7QUFDVCIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9zZXJ2ZXIvbGliL3BhdGNoLWZldGNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgV29ya0FzeW5jU3RvcmFnZSxcbiAgV29ya1N0b3JlLFxufSBmcm9tICcuLi9hcHAtcmVuZGVyL3dvcmstYXN5bmMtc3RvcmFnZS5leHRlcm5hbCdcblxuaW1wb3J0IHsgQXBwUmVuZGVyU3BhbiwgTmV4dE5vZGVTZXJ2ZXJTcGFuIH0gZnJvbSAnLi90cmFjZS9jb25zdGFudHMnXG5pbXBvcnQgeyBnZXRUcmFjZXIsIFNwYW5LaW5kIH0gZnJvbSAnLi90cmFjZS90cmFjZXInXG5pbXBvcnQge1xuICBDQUNIRV9PTkVfWUVBUl9TRUNPTkRTLFxuICBJTkZJTklURV9DQUNIRSxcbiAgTkVYVF9DQUNIRV9UQUdfTUFYX0lURU1TLFxuICBORVhUX0NBQ0hFX1RBR19NQVhfTEVOR1RILFxufSBmcm9tICcuLi8uLi9saWIvY29uc3RhbnRzJ1xuaW1wb3J0IHsgbWFya0N1cnJlbnRTY29wZUFzRHluYW1pYyB9IGZyb20gJy4uL2FwcC1yZW5kZXIvZHluYW1pYy1yZW5kZXJpbmcnXG5pbXBvcnQgeyBtYWtlSGFuZ2luZ1Byb21pc2UgfSBmcm9tICcuLi9keW5hbWljLXJlbmRlcmluZy11dGlscydcbmltcG9ydCB0eXBlIHsgRmV0Y2hNZXRyaWMgfSBmcm9tICcuLi9iYXNlLWh0dHAnXG5pbXBvcnQgeyBjcmVhdGVEZWR1cGVGZXRjaCB9IGZyb20gJy4vZGVkdXBlLWZldGNoJ1xuaW1wb3J0IHtcbiAgZ2V0Q2FjaGVTaWduYWwsXG4gIHR5cGUgUmV2YWxpZGF0ZVN0b3JlLFxuICB0eXBlIFdvcmtVbml0QXN5bmNTdG9yYWdlLFxufSBmcm9tICcuLi9hcHAtcmVuZGVyL3dvcmstdW5pdC1hc3luYy1zdG9yYWdlLmV4dGVybmFsJ1xuaW1wb3J0IHtcbiAgQ2FjaGVkUm91dGVLaW5kLFxuICBJbmNyZW1lbnRhbENhY2hlS2luZCxcbiAgdHlwZSBDYWNoZWRGZXRjaERhdGEsXG4gIHR5cGUgU2VydmVyQ29tcG9uZW50c0htckNhY2hlLFxuICB0eXBlIFNldEluY3JlbWVudGFsRmV0Y2hDYWNoZUNvbnRleHQsXG59IGZyb20gJy4uL3Jlc3BvbnNlLWNhY2hlJ1xuaW1wb3J0IHsgY2xvbmVSZXNwb25zZSB9IGZyb20gJy4vY2xvbmUtcmVzcG9uc2UnXG5pbXBvcnQgdHlwZSB7IEluY3JlbWVudGFsQ2FjaGUgfSBmcm9tICcuL2luY3JlbWVudGFsLWNhY2hlJ1xuaW1wb3J0IHsgUmVuZGVyU3RhZ2UgfSBmcm9tICcuLi9hcHAtcmVuZGVyL3N0YWdlZC1yZW5kZXJpbmcnXG5cbmNvbnN0IGlzRWRnZVJ1bnRpbWUgPSBwcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgPT09ICdlZGdlJ1xuXG50eXBlIEZldGNoZXIgPSB0eXBlb2YgZmV0Y2hcblxudHlwZSBQYXRjaGVkRmV0Y2hlciA9IEZldGNoZXIgJiB7XG4gIHJlYWRvbmx5IF9fbmV4dFBhdGNoZWQ6IHRydWVcbiAgcmVhZG9ubHkgX19uZXh0R2V0U3RhdGljU3RvcmU6ICgpID0+IFdvcmtBc3luY1N0b3JhZ2VcbiAgcmVhZG9ubHkgX25leHRPcmlnaW5hbEZldGNoOiBGZXRjaGVyXG59XG5cbmV4cG9ydCBjb25zdCBORVhUX1BBVENIX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ25leHQtcGF0Y2gnKVxuXG5mdW5jdGlvbiBpc0ZldGNoUGF0Y2hlZCgpIHtcbiAgcmV0dXJuIChnbG9iYWxUaGlzIGFzIFJlY29yZDxzeW1ib2wsIHVua25vd24+KVtORVhUX1BBVENIX1NZTUJPTF0gPT09IHRydWVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUmV2YWxpZGF0ZShcbiAgcmV2YWxpZGF0ZVZhbDogdW5rbm93bixcbiAgcm91dGU6IHN0cmluZ1xuKTogdW5kZWZpbmVkIHwgbnVtYmVyIHtcbiAgdHJ5IHtcbiAgICBsZXQgbm9ybWFsaXplZFJldmFsaWRhdGU6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuXG4gICAgaWYgKHJldmFsaWRhdGVWYWwgPT09IGZhbHNlKSB7XG4gICAgICBub3JtYWxpemVkUmV2YWxpZGF0ZSA9IElORklOSVRFX0NBQ0hFXG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHR5cGVvZiByZXZhbGlkYXRlVmFsID09PSAnbnVtYmVyJyAmJlxuICAgICAgIWlzTmFOKHJldmFsaWRhdGVWYWwpICYmXG4gICAgICByZXZhbGlkYXRlVmFsID4gLTFcbiAgICApIHtcbiAgICAgIG5vcm1hbGl6ZWRSZXZhbGlkYXRlID0gcmV2YWxpZGF0ZVZhbFxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHJldmFsaWRhdGVWYWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIHJldmFsaWRhdGUgdmFsdWUgXCIke3JldmFsaWRhdGVWYWx9XCIgb24gXCIke3JvdXRlfVwiLCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlciBvciBmYWxzZWBcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIG5vcm1hbGl6ZWRSZXZhbGlkYXRlXG4gIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgLy8gaGFuZGxlIGNsaWVudCBjb21wb25lbnQgZXJyb3IgZnJvbSBhdHRlbXB0aW5nIHRvIGNoZWNrIHJldmFsaWRhdGUgdmFsdWVcbiAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ0ludmFsaWQgcmV2YWxpZGF0ZScpKSB7XG4gICAgICB0aHJvdyBlcnJcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRhZ3ModGFnczogYW55W10sIGRlc2NyaXB0aW9uOiBzdHJpbmcpIHtcbiAgY29uc3QgdmFsaWRUYWdzOiBzdHJpbmdbXSA9IFtdXG4gIGNvbnN0IGludmFsaWRUYWdzOiBBcnJheTx7XG4gICAgdGFnOiBhbnlcbiAgICByZWFzb246IHN0cmluZ1xuICB9PiA9IFtdXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWdzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgdGFnID0gdGFnc1tpXVxuXG4gICAgaWYgKHR5cGVvZiB0YWcgIT09ICdzdHJpbmcnKSB7XG4gICAgICBpbnZhbGlkVGFncy5wdXNoKHsgdGFnLCByZWFzb246ICdpbnZhbGlkIHR5cGUsIG11c3QgYmUgYSBzdHJpbmcnIH0pXG4gICAgfSBlbHNlIGlmICh0YWcubGVuZ3RoID4gTkVYVF9DQUNIRV9UQUdfTUFYX0xFTkdUSCkge1xuICAgICAgaW52YWxpZFRhZ3MucHVzaCh7XG4gICAgICAgIHRhZyxcbiAgICAgICAgcmVhc29uOiBgZXhjZWVkZWQgbWF4IGxlbmd0aCBvZiAke05FWFRfQ0FDSEVfVEFHX01BWF9MRU5HVEh9YCxcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbGlkVGFncy5wdXNoKHRhZylcbiAgICB9XG5cbiAgICBpZiAodmFsaWRUYWdzLmxlbmd0aCA+IE5FWFRfQ0FDSEVfVEFHX01BWF9JVEVNUykge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgV2FybmluZzogZXhjZWVkZWQgbWF4IHRhZyBjb3VudCBmb3IgJHtkZXNjcmlwdGlvbn0sIGRyb3BwZWQgdGFnczpgLFxuICAgICAgICB0YWdzLnNsaWNlKGkpLmpvaW4oJywgJylcbiAgICAgIClcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKGludmFsaWRUYWdzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zb2xlLndhcm4oYFdhcm5pbmc6IGludmFsaWQgdGFncyBwYXNzZWQgdG8gJHtkZXNjcmlwdGlvbn06IGApXG5cbiAgICBmb3IgKGNvbnN0IHsgdGFnLCByZWFzb24gfSBvZiBpbnZhbGlkVGFncykge1xuICAgICAgY29uc29sZS5sb2coYHRhZzogXCIke3RhZ31cIiAke3JlYXNvbn1gKVxuICAgIH1cbiAgfVxuICByZXR1cm4gdmFsaWRUYWdzXG59XG5cbmZ1bmN0aW9uIHRyYWNrRmV0Y2hNZXRyaWMoXG4gIHdvcmtTdG9yZTogV29ya1N0b3JlLFxuICBjdHg6IE9taXQ8RmV0Y2hNZXRyaWMsICdlbmQnIHwgJ2lkeCc+XG4pIHtcbiAgaWYgKCF3b3JrU3RvcmUuc2hvdWxkVHJhY2tGZXRjaE1ldHJpY3MpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHdvcmtTdG9yZS5mZXRjaE1ldHJpY3MgPz89IFtdXG5cbiAgd29ya1N0b3JlLmZldGNoTWV0cmljcy5wdXNoKHtcbiAgICAuLi5jdHgsXG4gICAgZW5kOiBwZXJmb3JtYW5jZS50aW1lT3JpZ2luICsgcGVyZm9ybWFuY2Uubm93KCksXG4gICAgaWR4OiB3b3JrU3RvcmUubmV4dEZldGNoSWQgfHwgMCxcbiAgfSlcbn1cblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ2FjaGVkUHJlcmVuZGVyUmVzcG9uc2UoXG4gIHJlczogUmVzcG9uc2UsXG4gIGNhY2hlS2V5OiBzdHJpbmcsXG4gIGluY3JlbWVudGFsQ2FjaGVDb250ZXh0OiBTZXRJbmNyZW1lbnRhbEZldGNoQ2FjaGVDb250ZXh0IHwgdW5kZWZpbmVkLFxuICBpbmNyZW1lbnRhbENhY2hlOiBJbmNyZW1lbnRhbENhY2hlLFxuICByZXZhbGlkYXRlOiBudW1iZXIsXG4gIGhhbmRsZVVubG9jazogKCkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWRcbik6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgLy8gV2UgYXJlIHByZXJlbmRlcmluZyBhdCBidWlsZCB0aW1lIG9yIHJldmFsaWRhdGUgdGltZSB3aXRoIGNhY2hlQ29tcG9uZW50cyBzbyB3ZVxuICAvLyBuZWVkIHRvIGJ1ZmZlciB0aGUgcmVzcG9uc2Ugc28gd2UgY2FuIGd1YXJhbnRlZSBpdCBjYW4gYmUgcmVhZCBpbiBhXG4gIC8vIG1pY3JvdGFzay5cbiAgY29uc3QgYm9keUJ1ZmZlciA9IGF3YWl0IHJlcy5hcnJheUJ1ZmZlcigpXG5cbiAgY29uc3QgZmV0Y2hlZERhdGEgPSB7XG4gICAgaGVhZGVyczogT2JqZWN0LmZyb21FbnRyaWVzKHJlcy5oZWFkZXJzLmVudHJpZXMoKSksXG4gICAgYm9keTogQnVmZmVyLmZyb20oYm9keUJ1ZmZlcikudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgIHN0YXR1czogcmVzLnN0YXR1cyxcbiAgICB1cmw6IHJlcy51cmwsXG4gIH1cblxuICAvLyBXZSBjYW4gc2tpcCBzZXR0aW5nIHRoZSBzZXJ2ZXJDb21wb25lbnRzSG1yQ2FjaGUgYmVjYXVzZSB3ZSBhcmVuJ3QgaW4gZGV2XG4gIC8vIG1vZGUuXG5cbiAgaWYgKGluY3JlbWVudGFsQ2FjaGVDb250ZXh0KSB7XG4gICAgYXdhaXQgaW5jcmVtZW50YWxDYWNoZS5zZXQoXG4gICAgICBjYWNoZUtleSxcbiAgICAgIHsga2luZDogQ2FjaGVkUm91dGVLaW5kLkZFVENILCBkYXRhOiBmZXRjaGVkRGF0YSwgcmV2YWxpZGF0ZSB9LFxuICAgICAgaW5jcmVtZW50YWxDYWNoZUNvbnRleHRcbiAgICApXG4gIH1cblxuICBhd2FpdCBoYW5kbGVVbmxvY2soKVxuXG4gIC8vIFdlIHJldHVybiBhIG5ldyBSZXNwb25zZSB0byB0aGUgY2FsbGVyLlxuICByZXR1cm4gbmV3IFJlc3BvbnNlKGJvZHlCdWZmZXIsIHtcbiAgICBoZWFkZXJzOiByZXMuaGVhZGVycyxcbiAgICBzdGF0dXM6IHJlcy5zdGF0dXMsXG4gICAgc3RhdHVzVGV4dDogcmVzLnN0YXR1c1RleHQsXG4gIH0pXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNhY2hlZER5bmFtaWNSZXNwb25zZShcbiAgd29ya1N0b3JlOiBXb3JrU3RvcmUsXG4gIHJlczogUmVzcG9uc2UsXG4gIGNhY2hlS2V5OiBzdHJpbmcsXG4gIGluY3JlbWVudGFsQ2FjaGVDb250ZXh0OiBTZXRJbmNyZW1lbnRhbEZldGNoQ2FjaGVDb250ZXh0IHwgdW5kZWZpbmVkLFxuICBpbmNyZW1lbnRhbENhY2hlOiBJbmNyZW1lbnRhbENhY2hlLFxuICBzZXJ2ZXJDb21wb25lbnRzSG1yQ2FjaGU6IFNlcnZlckNvbXBvbmVudHNIbXJDYWNoZSB8IHVuZGVmaW5lZCxcbiAgcmV2YWxpZGF0ZTogbnVtYmVyLFxuICBpbnB1dDogUmVxdWVzdEluZm8gfCBVUkwsXG4gIGhhbmRsZVVubG9jazogKCkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQsXG4gIHNpZ25hbDogQWJvcnRTaWduYWwgfCBudWxsXG4pOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gIC8vIFdlJ3JlIGNsb25pbmcgdGhlIHJlc3BvbnNlIHVzaW5nIHRoaXMgdXRpbGl0eSBiZWNhdXNlIHRoZXJlIGV4aXN0cyBhIGJ1ZyBpblxuICAvLyB0aGUgdW5kaWNpIGxpYnJhcnkgYXJvdW5kIHJlc3BvbnNlIGNsb25pbmcuIFNlZSB0aGUgZm9sbG93aW5nIHB1bGwgcmVxdWVzdFxuICAvLyBmb3IgbW9yZSBkZXRhaWxzOiBodHRwczovL2dpdGh1Yi5jb20vdmVyY2VsL25leHQuanMvcHVsbC83MzI3NFxuICBjb25zdCBbY2xvbmVkMSwgY2xvbmVkMl0gPSBjbG9uZVJlc3BvbnNlKHJlcylcblxuICAvLyBXZSBhcmUgZHluYW1pY2FsbHkgcmVuZGVyaW5nIGluY2x1ZGluZyBkZXYgbW9kZS4gV2Ugd2FudCB0byByZXR1cm4gdGhlXG4gIC8vIHJlc3BvbnNlIHRvIHRoZSBjYWxsZXIgYXMgc29vbiBhcyBwb3NzaWJsZSBiZWNhdXNlIGl0IG1pZ2h0IHN0cmVhbSBvdmVyIGFcbiAgLy8gdmVyeSBsb25nIHRpbWUuXG4gIGNvbnN0IGNhY2hlU2V0UHJvbWlzZSA9IGNsb25lZDFcbiAgICAuYXJyYXlCdWZmZXIoKVxuICAgIC50aGVuKGFzeW5jIChhcnJheUJ1ZmZlcikgPT4ge1xuICAgICAgY29uc3QgYm9keUJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGFycmF5QnVmZmVyKVxuXG4gICAgICBjb25zdCBmZXRjaGVkRGF0YSA9IHtcbiAgICAgICAgaGVhZGVyczogT2JqZWN0LmZyb21FbnRyaWVzKGNsb25lZDEuaGVhZGVycy5lbnRyaWVzKCkpLFxuICAgICAgICBib2R5OiBib2R5QnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAgICAgc3RhdHVzOiBjbG9uZWQxLnN0YXR1cyxcbiAgICAgICAgdXJsOiBjbG9uZWQxLnVybCxcbiAgICAgIH1cblxuICAgICAgc2VydmVyQ29tcG9uZW50c0htckNhY2hlPy5zZXQoY2FjaGVLZXksIGZldGNoZWREYXRhKVxuXG4gICAgICBpZiAoaW5jcmVtZW50YWxDYWNoZUNvbnRleHQpIHtcbiAgICAgICAgYXdhaXQgaW5jcmVtZW50YWxDYWNoZS5zZXQoXG4gICAgICAgICAgY2FjaGVLZXksXG4gICAgICAgICAgeyBraW5kOiBDYWNoZWRSb3V0ZUtpbmQuRkVUQ0gsIGRhdGE6IGZldGNoZWREYXRhLCByZXZhbGlkYXRlIH0sXG4gICAgICAgICAgaW5jcmVtZW50YWxDYWNoZUNvbnRleHRcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0pXG4gICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgLy8gRG9uJ3Qgd2FybiBpZiB0aGUgcmVxdWVzdCB3YXMgYWJvcnRlZCBpbnRlbnRpb25hbGx5LlxuICAgICAgaWYgKCFzaWduYWw/LmFib3J0ZWQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBGYWlsZWQgdG8gc2V0IGZldGNoIGNhY2hlYCwgaW5wdXQsIGVycm9yKVxuICAgICAgfVxuICAgIH0pXG4gICAgLmZpbmFsbHkoaGFuZGxlVW5sb2NrKVxuXG4gIGNvbnN0IHBlbmRpbmdSZXZhbGlkYXRlS2V5ID0gYGNhY2hlLXNldC0ke2NhY2hlS2V5fWBcbiAgY29uc3QgcGVuZGluZ1JldmFsaWRhdGVzID0gKHdvcmtTdG9yZS5wZW5kaW5nUmV2YWxpZGF0ZXMgPz89IHt9KVxuXG4gIGxldCBwZW5kaW5nUmV2YWxpZGF0ZVByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKVxuICBpZiAocGVuZGluZ1JldmFsaWRhdGVLZXkgaW4gcGVuZGluZ1JldmFsaWRhdGVzKSB7XG4gICAgLy8gVGhlcmUgaXMgYWxyZWFkeSBhIHBlbmRpbmcgcmV2YWxpZGF0ZSBlbnRyeSB0aGF0IHdlIG5lZWQgdG8gYXdhaXQgdG9cbiAgICAvLyBhdm9pZCByYWNlIGNvbmRpdGlvbnMuXG4gICAgcGVuZGluZ1JldmFsaWRhdGVQcm9taXNlID0gcGVuZGluZ1JldmFsaWRhdGVzW3BlbmRpbmdSZXZhbGlkYXRlS2V5XVxuICB9XG5cbiAgcGVuZGluZ1JldmFsaWRhdGVzW3BlbmRpbmdSZXZhbGlkYXRlS2V5XSA9IHBlbmRpbmdSZXZhbGlkYXRlUHJvbWlzZVxuICAgIC50aGVuKCgpID0+IGNhY2hlU2V0UHJvbWlzZSlcbiAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAvLyBJZiB0aGUgcGVuZGluZyByZXZhbGlkYXRlIGlzIG5vdCBwcmVzZW50IGluIHRoZSBzdG9yZSwgdGhlbiB3ZSBoYXZlXG4gICAgICAvLyBub3RoaW5nIHRvIGRlbGV0ZS5cbiAgICAgIGlmICghcGVuZGluZ1JldmFsaWRhdGVzPy5bcGVuZGluZ1JldmFsaWRhdGVLZXldKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBkZWxldGUgcGVuZGluZ1JldmFsaWRhdGVzW3BlbmRpbmdSZXZhbGlkYXRlS2V5XVxuICAgIH0pXG5cbiAgcmV0dXJuIGNsb25lZDJcbn1cblxuaW50ZXJmYWNlIFBhdGNoYWJsZU1vZHVsZSB7XG4gIHdvcmtBc3luY1N0b3JhZ2U6IFdvcmtBc3luY1N0b3JhZ2VcbiAgd29ya1VuaXRBc3luY1N0b3JhZ2U6IFdvcmtVbml0QXN5bmNTdG9yYWdlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQYXRjaGVkRmV0Y2hlcihcbiAgb3JpZ2luRmV0Y2g6IEZldGNoZXIsXG4gIHsgd29ya0FzeW5jU3RvcmFnZSwgd29ya1VuaXRBc3luY1N0b3JhZ2UgfTogUGF0Y2hhYmxlTW9kdWxlXG4pOiBQYXRjaGVkRmV0Y2hlciB7XG4gIC8vIENyZWF0ZSB0aGUgcGF0Y2hlZCBmZXRjaCBmdW5jdGlvbi5cbiAgY29uc3QgcGF0Y2hlZCA9IGFzeW5jIGZ1bmN0aW9uIGZldGNoKFxuICAgIGlucHV0OiBSZXF1ZXN0SW5mbyB8IFVSTCxcbiAgICBpbml0OiBSZXF1ZXN0SW5pdCB8IHVuZGVmaW5lZFxuICApOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgbGV0IHVybDogVVJMIHwgdW5kZWZpbmVkXG4gICAgdHJ5IHtcbiAgICAgIHVybCA9IG5ldyBVUkwoaW5wdXQgaW5zdGFuY2VvZiBSZXF1ZXN0ID8gaW5wdXQudXJsIDogaW5wdXQpXG4gICAgICB1cmwudXNlcm5hbWUgPSAnJ1xuICAgICAgdXJsLnBhc3N3b3JkID0gJydcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEVycm9yIGNhdXNlZCBieSBtYWxmb3JtZWQgVVJMIHNob3VsZCBiZSBoYW5kbGVkIGJ5IG5hdGl2ZSBmZXRjaFxuICAgICAgdXJsID0gdW5kZWZpbmVkXG4gICAgfVxuICAgIGNvbnN0IGZldGNoVXJsID0gdXJsPy5ocmVmID8/ICcnXG4gICAgY29uc3QgbWV0aG9kID0gaW5pdD8ubWV0aG9kPy50b1VwcGVyQ2FzZSgpIHx8ICdHRVQnXG5cbiAgICAvLyBEbyBjcmVhdGUgYSBuZXcgc3BhbiB0cmFjZSBmb3IgaW50ZXJuYWwgZmV0Y2hlcyBpbiB0aGVcbiAgICAvLyBub24tdmVyYm9zZSBtb2RlLlxuICAgIGNvbnN0IGlzSW50ZXJuYWwgPSAoaW5pdD8ubmV4dCBhcyBhbnkpPy5pbnRlcm5hbCA9PT0gdHJ1ZVxuICAgIGNvbnN0IGhpZGVTcGFuID0gcHJvY2Vzcy5lbnYuTkVYVF9PVEVMX0ZFVENIX0RJU0FCTEVEID09PSAnMSdcbiAgICAvLyBXZSBkb24ndCB0cmFjayBmZXRjaCBtZXRyaWNzIGZvciBpbnRlcm5hbCBmZXRjaGVzXG4gICAgLy8gc28gaXQncyBub3QgY3JpdGljYWwgdGhhdCB3ZSBoYXZlIGEgc3RhcnQgdGltZSwgYXMgaXQgd29uJ3QgYmUgcmVjb3JkZWQuXG4gICAgLy8gVGhpcyBpcyB0byB3b3JrYXJvdW5kIGEgZmxha3kgaXNzdWUgd2hlcmUgcGVyZm9ybWFuY2UgQVBJcyBtaWdodFxuICAgIC8vIG5vdCBiZSBhdmFpbGFibGUgYW5kIHdpbGwgcmVxdWlyZSBmb2xsb3ctdXAgaW52ZXN0aWdhdGlvbi5cbiAgICBjb25zdCBmZXRjaFN0YXJ0OiBudW1iZXIgfCB1bmRlZmluZWQgPSBpc0ludGVybmFsXG4gICAgICA/IHVuZGVmaW5lZFxuICAgICAgOiBwZXJmb3JtYW5jZS50aW1lT3JpZ2luICsgcGVyZm9ybWFuY2Uubm93KClcblxuICAgIGNvbnN0IHdvcmtTdG9yZSA9IHdvcmtBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKVxuICAgIGNvbnN0IHdvcmtVbml0U3RvcmUgPSB3b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpXG5cbiAgICBsZXQgY2FjaGVTaWduYWwgPSB3b3JrVW5pdFN0b3JlID8gZ2V0Q2FjaGVTaWduYWwod29ya1VuaXRTdG9yZSkgOiBudWxsXG4gICAgaWYgKGNhY2hlU2lnbmFsKSB7XG4gICAgICBjYWNoZVNpZ25hbC5iZWdpblJlYWQoKVxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGdldFRyYWNlcigpLnRyYWNlKFxuICAgICAgaXNJbnRlcm5hbCA/IE5leHROb2RlU2VydmVyU3Bhbi5pbnRlcm5hbEZldGNoIDogQXBwUmVuZGVyU3Bhbi5mZXRjaCxcbiAgICAgIHtcbiAgICAgICAgaGlkZVNwYW4sXG4gICAgICAgIGtpbmQ6IFNwYW5LaW5kLkNMSUVOVCxcbiAgICAgICAgc3Bhbk5hbWU6IFsnZmV0Y2gnLCBtZXRob2QsIGZldGNoVXJsXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpLFxuICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgJ2h0dHAudXJsJzogZmV0Y2hVcmwsXG4gICAgICAgICAgJ2h0dHAubWV0aG9kJzogbWV0aG9kLFxuICAgICAgICAgICduZXQucGVlci5uYW1lJzogdXJsPy5ob3N0bmFtZSxcbiAgICAgICAgICAnbmV0LnBlZXIucG9ydCc6IHVybD8ucG9ydCB8fCB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAvLyBJZiB0aGlzIGlzIGFuIGludGVybmFsIGZldGNoLCB3ZSBzaG91bGQgbm90IGRvIGFueSBzcGVjaWFsIHRyZWF0bWVudC5cbiAgICAgICAgaWYgKGlzSW50ZXJuYWwpIHtcbiAgICAgICAgICByZXR1cm4gb3JpZ2luRmV0Y2goaW5wdXQsIGluaXQpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiB0aGUgd29ya1N0b3JlIGlzIG5vdCBhdmFpbGFibGUsIHdlIGNhbid0IGRvIGFueVxuICAgICAgICAvLyBzcGVjaWFsIHRyZWF0bWVudCBvZiBmZXRjaCwgdGhlcmVmb3JlIGZhbGxiYWNrIHRvIHRoZSBvcmlnaW5hbFxuICAgICAgICAvLyBmZXRjaCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgICAgaWYgKCF3b3JrU3RvcmUpIHtcbiAgICAgICAgICByZXR1cm4gb3JpZ2luRmV0Y2goaW5wdXQsIGluaXQpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBXZSBzaG91bGQgYWxzbyBmYWxsYmFjayB0byB0aGUgb3JpZ2luYWwgZmV0Y2ggaW1wbGVtZW50YXRpb24gaWYgd2VcbiAgICAgICAgLy8gYXJlIGluIGRyYWZ0IG1vZGUsIGl0IGRvZXMgbm90IGNvbnN0aXR1dGUgYSBzdGF0aWMgZ2VuZXJhdGlvbi5cbiAgICAgICAgaWYgKHdvcmtTdG9yZS5pc0RyYWZ0TW9kZSkge1xuICAgICAgICAgIHJldHVybiBvcmlnaW5GZXRjaChpbnB1dCwgaW5pdClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzUmVxdWVzdElucHV0ID1cbiAgICAgICAgICBpbnB1dCAmJlxuICAgICAgICAgIHR5cGVvZiBpbnB1dCA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICB0eXBlb2YgKGlucHV0IGFzIFJlcXVlc3QpLm1ldGhvZCA9PT0gJ3N0cmluZydcblxuICAgICAgICBjb25zdCBnZXRSZXF1ZXN0TWV0YSA9IChmaWVsZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgLy8gSWYgcmVxdWVzdCBpbnB1dCBpcyBwcmVzZW50IGJ1dCBpbml0IGlzIG5vdCwgcmV0cmlldmUgZnJvbSBpbnB1dCBmaXJzdC5cbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IChpbml0IGFzIGFueSk/LltmaWVsZF1cbiAgICAgICAgICByZXR1cm4gdmFsdWUgfHwgKGlzUmVxdWVzdElucHV0ID8gKGlucHV0IGFzIGFueSlbZmllbGRdIDogbnVsbClcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmaW5hbFJldmFsaWRhdGU6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICAgICAgICBjb25zdCBnZXROZXh0RmllbGQgPSAoZmllbGQ6ICdyZXZhbGlkYXRlJyB8ICd0YWdzJykgPT4ge1xuICAgICAgICAgIHJldHVybiB0eXBlb2YgaW5pdD8ubmV4dD8uW2ZpZWxkXSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgID8gaW5pdD8ubmV4dD8uW2ZpZWxkXVxuICAgICAgICAgICAgOiBpc1JlcXVlc3RJbnB1dFxuICAgICAgICAgICAgICA/IChpbnB1dCBhcyBhbnkpLm5leHQ/LltmaWVsZF1cbiAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICAvLyBSZXF1ZXN0SW5pdCBkb2Vzbid0IGtlZXAgZXh0cmEgZmllbGRzIGUuZy4gbmV4dCBzbyBpdCdzXG4gICAgICAgIC8vIG9ubHkgYXZhaWxhYmxlIGlmIGluaXQgaXMgdXNlZCBzZXBhcmF0ZVxuICAgICAgICBjb25zdCBvcmlnaW5hbEZldGNoUmV2YWxpZGF0ZSA9IGdldE5leHRGaWVsZCgncmV2YWxpZGF0ZScpXG4gICAgICAgIGxldCBjdXJyZW50RmV0Y2hSZXZhbGlkYXRlID0gb3JpZ2luYWxGZXRjaFJldmFsaWRhdGVcbiAgICAgICAgY29uc3QgdGFnczogc3RyaW5nW10gPSB2YWxpZGF0ZVRhZ3MoXG4gICAgICAgICAgZ2V0TmV4dEZpZWxkKCd0YWdzJykgfHwgW10sXG4gICAgICAgICAgYGZldGNoICR7aW5wdXQudG9TdHJpbmcoKX1gXG4gICAgICAgIClcblxuICAgICAgICBsZXQgcmV2YWxpZGF0ZVN0b3JlOiBSZXZhbGlkYXRlU3RvcmUgfCB1bmRlZmluZWRcblxuICAgICAgICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgICAgICAgIHN3aXRjaCAod29ya1VuaXRTdG9yZS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgICAgICAgICAgLy8gVE9ETzogU3RvcCBhY2N1bXVsYXRpbmcgdGFncyBpbiBjbGllbnQgcHJlcmVuZGVyLiAoZmFsbHRocm91Z2gpXG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ3ZhbGlkYXRpb24tY2xpZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICBjYXNlICdjYWNoZSc6XG4gICAgICAgICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgICAgICAgICAgcmV2YWxpZGF0ZVN0b3JlID0gd29ya1VuaXRTdG9yZVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgY2FzZSAncmVxdWVzdCc6XG4gICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICBjYXNlICdnZW5lcmF0ZS1zdGF0aWMtcGFyYW1zJzpcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHdvcmtVbml0U3RvcmUgc2F0aXNmaWVzIG5ldmVyXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJldmFsaWRhdGVTdG9yZSkge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRhZ3MpKSB7XG4gICAgICAgICAgICAvLyBDb2xsZWN0IHRhZ3Mgb250byBwYXJlbnQgY2FjaGVzIG9yIHBhcmVudCBwcmVyZW5kZXJzLlxuICAgICAgICAgICAgY29uc3QgY29sbGVjdGVkVGFncyA9XG4gICAgICAgICAgICAgIHJldmFsaWRhdGVTdG9yZS50YWdzID8/IChyZXZhbGlkYXRlU3RvcmUudGFncyA9IFtdKVxuICAgICAgICAgICAgZm9yIChjb25zdCB0YWcgb2YgdGFncykge1xuICAgICAgICAgICAgICBpZiAoIWNvbGxlY3RlZFRhZ3MuaW5jbHVkZXModGFnKSkge1xuICAgICAgICAgICAgICAgIGNvbGxlY3RlZFRhZ3MucHVzaCh0YWcpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbXBsaWNpdFRhZ3MgPSB3b3JrVW5pdFN0b3JlPy5pbXBsaWNpdFRhZ3NcblxuICAgICAgICBsZXQgcGFnZUZldGNoQ2FjaGVNb2RlID0gd29ya1N0b3JlLmZldGNoQ2FjaGVcblxuICAgICAgICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgICAgICAgIHN3aXRjaCAod29ya1VuaXRTdG9yZS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICAgIC8vIEluc2lkZSB1bnN0YWJsZS1jYWNoZSB3ZSB0cmVhdCBpdCB0aGUgc2FtZSBhcyBmb3JjZS1uby1zdG9yZSBvblxuICAgICAgICAgICAgICAvLyB0aGUgcGFnZS5cbiAgICAgICAgICAgICAgcGFnZUZldGNoQ2FjaGVNb2RlID0gJ2ZvcmNlLW5vLXN0b3JlJ1xuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAgY2FzZSAndmFsaWRhdGlvbi1jbGllbnQnOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICAgICAgICBjYXNlICdnZW5lcmF0ZS1zdGF0aWMtcGFyYW1zJzpcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHdvcmtVbml0U3RvcmUgc2F0aXNmaWVzIG5ldmVyXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNVc2luZ05vU3RvcmUgPSAhIXdvcmtTdG9yZS5pc1Vuc3RhYmxlTm9TdG9yZVxuXG4gICAgICAgIGxldCBjdXJyZW50RmV0Y2hDYWNoZUNvbmZpZyA9IGdldFJlcXVlc3RNZXRhKCdjYWNoZScpXG4gICAgICAgIGxldCBjYWNoZVJlYXNvbiA9ICcnXG4gICAgICAgIGxldCBjYWNoZVdhcm5pbmc6IHN0cmluZyB8IHVuZGVmaW5lZFxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0eXBlb2YgY3VycmVudEZldGNoQ2FjaGVDb25maWcgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgdHlwZW9mIGN1cnJlbnRGZXRjaFJldmFsaWRhdGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgICkge1xuICAgICAgICAgIC8vIElmIHRoZSByZXZhbGlkYXRlIHZhbHVlIGNvbmZsaWN0cyB3aXRoIHRoZSBjYWNoZSB2YWx1ZSwgd2Ugc2hvdWxkIHdhcm4gdGhlIHVzZXIgYW5kIHVuc2V0IHRoZSBjb25mbGljdGluZyB2YWx1ZXMuXG4gICAgICAgICAgY29uc3QgaXNDb25mbGljdGluZ1JldmFsaWRhdGUgPVxuICAgICAgICAgICAgLy8gcmV2YWxpZGF0ZTogMCBhbmQgY2FjaGU6IGZvcmNlLWNhY2hlXG4gICAgICAgICAgICAoY3VycmVudEZldGNoQ2FjaGVDb25maWcgPT09ICdmb3JjZS1jYWNoZScgJiZcbiAgICAgICAgICAgICAgY3VycmVudEZldGNoUmV2YWxpZGF0ZSA9PT0gMCkgfHxcbiAgICAgICAgICAgIC8vIHJldmFsaWRhdGU6ID4wIG9yIHJldmFsaWRhdGU6IGZhbHNlIGFuZCBjYWNoZTogbm8tc3RvcmVcbiAgICAgICAgICAgIChjdXJyZW50RmV0Y2hDYWNoZUNvbmZpZyA9PT0gJ25vLXN0b3JlJyAmJlxuICAgICAgICAgICAgICAoY3VycmVudEZldGNoUmV2YWxpZGF0ZSA+IDAgfHwgY3VycmVudEZldGNoUmV2YWxpZGF0ZSA9PT0gZmFsc2UpKVxuXG4gICAgICAgICAgaWYgKGlzQ29uZmxpY3RpbmdSZXZhbGlkYXRlKSB7XG4gICAgICAgICAgICBjYWNoZVdhcm5pbmcgPSBgU3BlY2lmaWVkIFwiY2FjaGU6ICR7Y3VycmVudEZldGNoQ2FjaGVDb25maWd9XCIgYW5kIFwicmV2YWxpZGF0ZTogJHtjdXJyZW50RmV0Y2hSZXZhbGlkYXRlfVwiLCBvbmx5IG9uZSBzaG91bGQgYmUgc3BlY2lmaWVkLmBcbiAgICAgICAgICAgIGN1cnJlbnRGZXRjaENhY2hlQ29uZmlnID0gdW5kZWZpbmVkXG4gICAgICAgICAgICBjdXJyZW50RmV0Y2hSZXZhbGlkYXRlID0gdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaGFzRXhwbGljaXRGZXRjaENhY2hlT3B0T3V0ID1cbiAgICAgICAgICAvLyBmZXRjaCBjb25maWcgaXRzZWxmIHNpZ25hbHMgbm90IHRvIGNhY2hlXG4gICAgICAgICAgY3VycmVudEZldGNoQ2FjaGVDb25maWcgPT09ICduby1jYWNoZScgfHxcbiAgICAgICAgICBjdXJyZW50RmV0Y2hDYWNoZUNvbmZpZyA9PT0gJ25vLXN0b3JlJyB8fFxuICAgICAgICAgIC8vIHRoZSBmZXRjaCBpc24ndCBleHBsaWNpdGx5IGNhY2hpbmcgYW5kIHRoZSBzZWdtZW50IGxldmVsIGNhY2hlIGNvbmZpZyBzaWduYWxzIG5vdCB0byBjYWNoZVxuICAgICAgICAgIC8vIG5vdGU6IGBwYWdlRmV0Y2hDYWNoZU1vZGVgIGlzIGFsc28gc2V0IGJ5IGJlaW5nIGluIGFuIHVuc3RhYmxlX2NhY2hlIGNvbnRleHQuXG4gICAgICAgICAgcGFnZUZldGNoQ2FjaGVNb2RlID09PSAnZm9yY2Utbm8tc3RvcmUnIHx8XG4gICAgICAgICAgcGFnZUZldGNoQ2FjaGVNb2RlID09PSAnb25seS1uby1zdG9yZSdcblxuICAgICAgICAvLyBJZiBubyBleHBsaWNpdCBmZXRjaCBjYWNoZSBtb2RlIGlzIHNldCwgYnV0IGR5bmFtaWMgPSBgZm9yY2UtZHluYW1pY2AgaXMgc2V0LFxuICAgICAgICAvLyB3ZSBzaG91bGRuJ3QgY29uc2lkZXIgY2FjaGluZyB0aGUgZmV0Y2guIFRoaXMgaXMgYmVjYXVzZSB0aGUgYGR5bmFtaWNgIGNhY2hlXG4gICAgICAgIC8vIGlzIGNvbnNpZGVyZWQgYSBcInRvcC1sZXZlbFwiIGNhY2hlIG1vZGUsIHdoZXJlYXMgc29tZXRoaW5nIGxpa2UgYGZldGNoQ2FjaGVgIGlzIG1vcmVcbiAgICAgICAgLy8gZmluZS1ncmFpbmVkLiBUb3AtbGV2ZWwgbW9kZXMgYXJlIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHJlYXNvbmFibGUgZGVmYXVsdHMgZm9yIHRoZVxuICAgICAgICAvLyBvdGhlciBjb25maWd1cmF0aW9ucy5cbiAgICAgICAgY29uc3Qgbm9GZXRjaENvbmZpZ0FuZEZvcmNlRHluYW1pYyA9XG4gICAgICAgICAgIXBhZ2VGZXRjaENhY2hlTW9kZSAmJlxuICAgICAgICAgICFjdXJyZW50RmV0Y2hDYWNoZUNvbmZpZyAmJlxuICAgICAgICAgICFjdXJyZW50RmV0Y2hSZXZhbGlkYXRlICYmXG4gICAgICAgICAgd29ya1N0b3JlLmZvcmNlRHluYW1pY1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAvLyBmb3JjZS1jYWNoZSB3YXMgc3BlY2lmaWVkIHdpdGhvdXQgYSByZXZhbGlkYXRlIHZhbHVlLiBXZSBzZXQgdGhlIHJldmFsaWRhdGUgdmFsdWUgdG8gZmFsc2VcbiAgICAgICAgICAvLyB3aGljaCB3aWxsIHNpZ25hbCB0aGUgY2FjaGUgdG8gbm90IHJldmFsaWRhdGVcbiAgICAgICAgICBjdXJyZW50RmV0Y2hDYWNoZUNvbmZpZyA9PT0gJ2ZvcmNlLWNhY2hlJyAmJlxuICAgICAgICAgIHR5cGVvZiBjdXJyZW50RmV0Y2hSZXZhbGlkYXRlID09PSAndW5kZWZpbmVkJ1xuICAgICAgICApIHtcbiAgICAgICAgICBjdXJyZW50RmV0Y2hSZXZhbGlkYXRlID0gZmFsc2VcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICBoYXNFeHBsaWNpdEZldGNoQ2FjaGVPcHRPdXQgfHxcbiAgICAgICAgICBub0ZldGNoQ29uZmlnQW5kRm9yY2VEeW5hbWljXG4gICAgICAgICkge1xuICAgICAgICAgIGN1cnJlbnRGZXRjaFJldmFsaWRhdGUgPSAwXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgY3VycmVudEZldGNoQ2FjaGVDb25maWcgPT09ICduby1jYWNoZScgfHxcbiAgICAgICAgICBjdXJyZW50RmV0Y2hDYWNoZUNvbmZpZyA9PT0gJ25vLXN0b3JlJ1xuICAgICAgICApIHtcbiAgICAgICAgICBjYWNoZVJlYXNvbiA9IGBjYWNoZTogJHtjdXJyZW50RmV0Y2hDYWNoZUNvbmZpZ31gXG4gICAgICAgIH1cblxuICAgICAgICBmaW5hbFJldmFsaWRhdGUgPSB2YWxpZGF0ZVJldmFsaWRhdGUoXG4gICAgICAgICAgY3VycmVudEZldGNoUmV2YWxpZGF0ZSxcbiAgICAgICAgICB3b3JrU3RvcmUucm91dGVcbiAgICAgICAgKVxuXG4gICAgICAgIGNvbnN0IF9oZWFkZXJzID0gZ2V0UmVxdWVzdE1ldGEoJ2hlYWRlcnMnKVxuICAgICAgICBjb25zdCBpbml0SGVhZGVyczogSGVhZGVycyA9XG4gICAgICAgICAgdHlwZW9mIF9oZWFkZXJzPy5nZXQgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgID8gX2hlYWRlcnNcbiAgICAgICAgICAgIDogbmV3IEhlYWRlcnMoX2hlYWRlcnMgfHwge30pXG5cbiAgICAgICAgY29uc3QgaGFzVW5DYWNoZWFibGVIZWFkZXIgPVxuICAgICAgICAgIGluaXRIZWFkZXJzLmdldCgnYXV0aG9yaXphdGlvbicpIHx8IGluaXRIZWFkZXJzLmdldCgnY29va2llJylcblxuICAgICAgICBjb25zdCBpc1VuQ2FjaGVhYmxlTWV0aG9kID0gIVsnZ2V0JywgJ2hlYWQnXS5pbmNsdWRlcyhcbiAgICAgICAgICBnZXRSZXF1ZXN0TWV0YSgnbWV0aG9kJyk/LnRvTG93ZXJDYXNlKCkgfHwgJ2dldCdcbiAgICAgICAgKVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXZSBhdXRvbWF0aWNhbGx5IGRpc2FibGUgZmV0Y2ggY2FjaGluZyB1bmRlciB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gICAgICAgICAqIC0gRmV0Y2ggY2FjaGUgY29uZmlncyBhcmUgbm90IHNldC4gU3BlY2lmaWNhbGx5OlxuICAgICAgICAgKiAgICAtIEEgcGFnZSBmZXRjaCBjYWNoZSBtb2RlIGlzIG5vdCBzZXQgKGV4cG9ydCBjb25zdCBmZXRjaENhY2hlPS4uLilcbiAgICAgICAgICogICAgLSBBIGZldGNoIGNhY2hlIG1vZGUgaXMgbm90IHNldCBpbiB0aGUgZmV0Y2ggY2FsbCAoZmV0Y2godXJsLCB7IGNhY2hlOiAuLi4gfSkpXG4gICAgICAgICAqICAgICAgb3IgdGhlIGZldGNoIGNhY2hlIG1vZGUgaXMgc2V0IHRvICdkZWZhdWx0J1xuICAgICAgICAgKiAgICAtIEEgZmV0Y2ggcmV2YWxpZGF0ZSB2YWx1ZSBpcyBub3Qgc2V0IGluIHRoZSBmZXRjaCBjYWxsIChmZXRjaCh1cmwsIHsgcmV2YWxpZGF0ZTogLi4uIH0pKVxuICAgICAgICAgKiAtIE9SIHRoZSBmZXRjaCBjb21lcyBhZnRlciBhIGNvbmZpZ3VyYXRpb24gdGhhdCB0cmlnZ2VyZWQgZHluYW1pYyByZW5kZXJpbmcgKGUuZy4sIHJlYWRpbmcgY29va2llcygpKVxuICAgICAgICAgKiAgIGFuZCB0aGUgZmV0Y2ggd2FzIGNvbnNpZGVyZWQgdW5jYWNoZWFibGUgKGUuZy4sIFBPU1QgbWV0aG9kIG9yIGhhcyBhdXRob3JpemF0aW9uIGhlYWRlcnMpXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBoYXNOb0V4cGxpY2l0Q2FjaGVDb25maWcgPVxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcbiAgICAgICAgICBwYWdlRmV0Y2hDYWNoZU1vZGUgPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVxZXFlcVxuICAgICAgICAgIChjdXJyZW50RmV0Y2hDYWNoZUNvbmZpZyA9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIC8vIHdoZW4gY29uc2lkZXJpbmcgd2hldGhlciB0byBvcHQgaW50byB0aGUgZGVmYXVsdCBcIm5vLWNhY2hlXCIgZmV0Y2ggc2VtYW50aWNzLFxuICAgICAgICAgICAgLy8gYSBcImRlZmF1bHRcIiBjYWNoZSBjb25maWcgc2hvdWxkIGJlIHRyZWF0ZWQgdGhlIHNhbWUgYXMgbm8gY2FjaGUgY29uZmlnXG4gICAgICAgICAgICBjdXJyZW50RmV0Y2hDYWNoZUNvbmZpZyA9PT0gJ2RlZmF1bHQnKSAmJlxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcbiAgICAgICAgICBjdXJyZW50RmV0Y2hSZXZhbGlkYXRlID09IHVuZGVmaW5lZFxuXG4gICAgICAgIGxldCBhdXRvTm9DYWNoZSA9IEJvb2xlYW4oXG4gICAgICAgICAgKGhhc1VuQ2FjaGVhYmxlSGVhZGVyIHx8IGlzVW5DYWNoZWFibGVNZXRob2QpICYmXG4gICAgICAgICAgICByZXZhbGlkYXRlU3RvcmU/LnJldmFsaWRhdGUgPT09IDBcbiAgICAgICAgKVxuXG4gICAgICAgIGxldCBpc0ltcGxpY2l0QnVpbGRUaW1lQ2FjaGUgPSBmYWxzZVxuXG4gICAgICAgIGlmICghYXV0b05vQ2FjaGUgJiYgaGFzTm9FeHBsaWNpdENhY2hlQ29uZmlnKSB7XG4gICAgICAgICAgLy8gV2UgZG9uJ3QgZW5hYmxlIGF1dG9tYXRpYyBuby1jYWNoZSBiZWhhdmlvciBkdXJpbmcgYnVpbGQtdGltZVxuICAgICAgICAgIC8vIHByZXJlbmRlcmluZyBzbyB0aGF0IHdlIGNhbiBzdGlsbCBsZXZlcmFnZSB0aGUgZmV0Y2ggY2FjaGUgYmV0d2VlblxuICAgICAgICAgIC8vIGV4cG9ydCB3b3JrZXJzLlxuICAgICAgICAgIGlmICh3b3JrU3RvcmUuaXNCdWlsZFRpbWVQcmVyZW5kZXJpbmcpIHtcbiAgICAgICAgICAgIGlzSW1wbGljaXRCdWlsZFRpbWVDYWNoZSA9IHRydWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXV0b05vQ2FjaGUgPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgd2UgaGF2ZSBubyBjYWNoZSBjb25maWcsIGFuZCB3ZSdyZSBpbiBEeW5hbWljIEkvTyBwcmVyZW5kZXJpbmcsXG4gICAgICAgIC8vIGl0J2xsIGJlIGEgZHluYW1pYyBjYWxsLiBXZSBkb24ndCBoYXZlIHRvIGlzc3VlIHRoYXQgZHluYW1pYyBjYWxsLlxuICAgICAgICBpZiAoaGFzTm9FeHBsaWNpdENhY2hlQ29uZmlnICYmIHdvcmtVbml0U3RvcmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHN3aXRjaCAod29ya1VuaXRTdG9yZS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgICAgICAgICAgLy8gV2hpbGUgd2UgZG9uJ3Qgd2FudCB0byBkbyBjYWNoaW5nIGluIHRoZSBjbGllbnQgc2NvcGUgd2Uga25vdyB0aGVcbiAgICAgICAgICAgIC8vIGZldGNoIHdpbGwgYmUgZHluYW1pYyBmb3IgY2FjaGVDb21wb25lbnRzIHNvIHdlIG1heSBhcyB3ZWxsIGF2b2lkIHRoZVxuICAgICAgICAgICAgLy8gY2FsbCBoZXJlLiAoZmFsbHRocm91Z2gpXG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgICAgICAgICAgaWYgKGNhY2hlU2lnbmFsKSB7XG4gICAgICAgICAgICAgICAgY2FjaGVTaWduYWwuZW5kUmVhZCgpXG4gICAgICAgICAgICAgICAgY2FjaGVTaWduYWwgPSBudWxsXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gbWFrZUhhbmdpbmdQcm9taXNlPFJlc3BvbnNlPihcbiAgICAgICAgICAgICAgICB3b3JrVW5pdFN0b3JlLnJlbmRlclNpZ25hbCxcbiAgICAgICAgICAgICAgICB3b3JrU3RvcmUucm91dGUsXG4gICAgICAgICAgICAgICAgJ2ZldGNoKCknXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNhc2UgJ3ZhbGlkYXRpb24tY2xpZW50JzpcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcgJiZcbiAgICAgICAgICAgICAgICB3b3JrVW5pdFN0b3JlLnN0YWdlZFJlbmRlcmluZ1xuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBpZiAoY2FjaGVTaWduYWwpIHtcbiAgICAgICAgICAgICAgICAgIGNhY2hlU2lnbmFsLmVuZFJlYWQoKVxuICAgICAgICAgICAgICAgICAgY2FjaGVTaWduYWwgPSBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGF3YWl0IHdvcmtVbml0U3RvcmUuc3RhZ2VkUmVuZGVyaW5nLndhaXRGb3JTdGFnZShcbiAgICAgICAgICAgICAgICAgIFJlbmRlclN0YWdlLkR5bmFtaWNcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICBjYXNlICdjYWNoZSc6XG4gICAgICAgICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ2dlbmVyYXRlLXN0YXRpYy1wYXJhbXMnOlxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZSBzYXRpc2ZpZXMgbmV2ZXJcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKHBhZ2VGZXRjaENhY2hlTW9kZSkge1xuICAgICAgICAgIGNhc2UgJ2ZvcmNlLW5vLXN0b3JlJzoge1xuICAgICAgICAgICAgY2FjaGVSZWFzb24gPSAnZmV0Y2hDYWNoZSA9IGZvcmNlLW5vLXN0b3JlJ1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAnb25seS1uby1zdG9yZSc6IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgY3VycmVudEZldGNoQ2FjaGVDb25maWcgPT09ICdmb3JjZS1jYWNoZScgfHxcbiAgICAgICAgICAgICAgKHR5cGVvZiBmaW5hbFJldmFsaWRhdGUgIT09ICd1bmRlZmluZWQnICYmIGZpbmFsUmV2YWxpZGF0ZSA+IDApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBjYWNoZTogJ2ZvcmNlLWNhY2hlJyB1c2VkIG9uIGZldGNoIGZvciAke2ZldGNoVXJsfSB3aXRoICdleHBvcnQgY29uc3QgZmV0Y2hDYWNoZSA9ICdvbmx5LW5vLXN0b3JlJ2BcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FjaGVSZWFzb24gPSAnZmV0Y2hDYWNoZSA9IG9ubHktbm8tc3RvcmUnXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlICdvbmx5LWNhY2hlJzoge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRGZXRjaENhY2hlQ29uZmlnID09PSAnbm8tc3RvcmUnKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgY2FjaGU6ICduby1zdG9yZScgdXNlZCBvbiBmZXRjaCBmb3IgJHtmZXRjaFVybH0gd2l0aCAnZXhwb3J0IGNvbnN0IGZldGNoQ2FjaGUgPSAnb25seS1jYWNoZSdgXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ2ZvcmNlLWNhY2hlJzoge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0eXBlb2YgY3VycmVudEZldGNoUmV2YWxpZGF0ZSA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICAgICAgICAgICAgY3VycmVudEZldGNoUmV2YWxpZGF0ZSA9PT0gMFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGNhY2hlUmVhc29uID0gJ2ZldGNoQ2FjaGUgPSBmb3JjZS1jYWNoZSdcbiAgICAgICAgICAgICAgZmluYWxSZXZhbGlkYXRlID0gSU5GSU5JVEVfQ0FDSEVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ2RlZmF1bHQtY2FjaGUnOlxuICAgICAgICAgIGNhc2UgJ2RlZmF1bHQtbm8tc3RvcmUnOlxuICAgICAgICAgIGNhc2UgJ2F1dG8nOlxuICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgICAgLy8gc29tZXRpbWVzIHdlIHdvbid0IG1hdGNoIHRoZSBhYm92ZSBjYXNlcy4gdGhlIHJlYXNvbiB3ZSBkb24ndCBtb3ZlXG4gICAgICAgICAgICAvLyBldmVyeXRoaW5nIHRvIHRoaXMgc3dpdGNoIGlzIHRoZSB1c2Ugb2YgYXV0b05vQ2FjaGUgd2hpY2ggaXMgbm90IGEgZmV0Y2hDYWNoZU1vZGVcbiAgICAgICAgICAgIC8vIEkgc3VzcGVjdCB0aGlzIGNvdWxkIGJlIHVuaWZpZWQgd2l0aCBmZXRjaENhY2hlTW9kZSBob3dldmVyIGluIHdoaWNoIGNhc2Ugd2UgY291bGRcbiAgICAgICAgICAgIC8vIHNpbXBsaWZ5IHRoZSBzd2l0Y2ggY2FzZSBhbmQgZW5zdXJlIHdlIGhhdmUgYW4gZXhoYXVzdGl2ZSBzd2l0Y2ggaGFuZGxpbmcgYWxsIG1vZGVzXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBwYWdlRmV0Y2hDYWNoZU1vZGUgc2F0aXNmaWVzIG5ldmVyXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGZpbmFsUmV2YWxpZGF0ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBpZiAocGFnZUZldGNoQ2FjaGVNb2RlID09PSAnZGVmYXVsdC1jYWNoZScgJiYgIWlzVXNpbmdOb1N0b3JlKSB7XG4gICAgICAgICAgICBmaW5hbFJldmFsaWRhdGUgPSBJTkZJTklURV9DQUNIRVxuICAgICAgICAgICAgY2FjaGVSZWFzb24gPSAnZmV0Y2hDYWNoZSA9IGRlZmF1bHQtY2FjaGUnXG4gICAgICAgICAgfSBlbHNlIGlmIChwYWdlRmV0Y2hDYWNoZU1vZGUgPT09ICdkZWZhdWx0LW5vLXN0b3JlJykge1xuICAgICAgICAgICAgZmluYWxSZXZhbGlkYXRlID0gMFxuICAgICAgICAgICAgY2FjaGVSZWFzb24gPSAnZmV0Y2hDYWNoZSA9IGRlZmF1bHQtbm8tc3RvcmUnXG4gICAgICAgICAgfSBlbHNlIGlmIChpc1VzaW5nTm9TdG9yZSkge1xuICAgICAgICAgICAgZmluYWxSZXZhbGlkYXRlID0gMFxuICAgICAgICAgICAgY2FjaGVSZWFzb24gPSAnbm9TdG9yZSBjYWxsJ1xuICAgICAgICAgIH0gZWxzZSBpZiAoYXV0b05vQ2FjaGUpIHtcbiAgICAgICAgICAgIGZpbmFsUmV2YWxpZGF0ZSA9IDBcbiAgICAgICAgICAgIGNhY2hlUmVhc29uID0gJ2F1dG8gbm8gY2FjaGUnXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFRPRE86IHNob3VsZCB3ZSBjb25zaWRlciB0aGlzIGNhc2UgYW4gaW52YXJpYW50P1xuICAgICAgICAgICAgY2FjaGVSZWFzb24gPSAnYXV0byBjYWNoZSdcbiAgICAgICAgICAgIGZpbmFsUmV2YWxpZGF0ZSA9IHJldmFsaWRhdGVTdG9yZVxuICAgICAgICAgICAgICA/IHJldmFsaWRhdGVTdG9yZS5yZXZhbGlkYXRlXG4gICAgICAgICAgICAgIDogSU5GSU5JVEVfQ0FDSEVcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIWNhY2hlUmVhc29uKSB7XG4gICAgICAgICAgY2FjaGVSZWFzb24gPSBgcmV2YWxpZGF0ZTogJHtmaW5hbFJldmFsaWRhdGV9YFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIC8vIHdoZW4gZm9yY2Ugc3RhdGljIGlzIGNvbmZpZ3VyZWQgd2UgZG9uJ3QgYmFpbCBmcm9tXG4gICAgICAgICAgLy8gYHJldmFsaWRhdGU6IDBgIHZhbHVlc1xuICAgICAgICAgICEod29ya1N0b3JlLmZvcmNlU3RhdGljICYmIGZpbmFsUmV2YWxpZGF0ZSA9PT0gMCkgJiZcbiAgICAgICAgICAvLyB3ZSBkb24ndCBjb25zaWRlciBhdXRvTm9DYWNoZSB0byBzd2l0Y2ggdG8gZHluYW1pYyBmb3IgSVNSXG4gICAgICAgICAgIWF1dG9Ob0NhY2hlICYmXG4gICAgICAgICAgLy8gSWYgdGhlIHJldmFsaWRhdGUgdmFsdWUgaXNuJ3QgY3VycmVudGx5IHNldCBvciB0aGUgdmFsdWUgaXMgbGVzc1xuICAgICAgICAgIC8vIHRoYW4gdGhlIGN1cnJlbnQgcmV2YWxpZGF0ZSB2YWx1ZSwgd2Ugc2hvdWxkIHVwZGF0ZSB0aGUgcmV2YWxpZGF0ZVxuICAgICAgICAgIC8vIHZhbHVlLlxuICAgICAgICAgIHJldmFsaWRhdGVTdG9yZSAmJlxuICAgICAgICAgIGZpbmFsUmV2YWxpZGF0ZSA8IHJldmFsaWRhdGVTdG9yZS5yZXZhbGlkYXRlXG4gICAgICAgICkge1xuICAgICAgICAgIC8vIElmIHdlIHdlcmUgc2V0dGluZyB0aGUgcmV2YWxpZGF0ZSB2YWx1ZSB0byAwLCB3ZSBzaG91bGQgdHJ5IHRvXG4gICAgICAgICAgLy8gcG9zdHBvbmUgaW5zdGVhZCBmaXJzdC5cbiAgICAgICAgICBpZiAoZmluYWxSZXZhbGlkYXRlID09PSAwKSB7XG4gICAgICAgICAgICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgICAgICAgICAgICBzd2l0Y2ggKHdvcmtVbml0U3RvcmUudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWNsaWVudCc6XG4gICAgICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgICAgICAgICAgICAgIC8vIElmIHdlJ3JlIGluIGFuIGluc3RhbnQgdmFsaWRhdGlvbiwgYSBkeW5hbWljIGZldGNoIHdvbid0XG4gICAgICAgICAgICAgICAgLy8gaGF2ZSB0aW1lIHRvIHJlc29sdmUgZHVyaW5nIHRoZSB2YWxpZGF0aW9uIHByZXJlbmRlciBhbnl3YXksXG4gICAgICAgICAgICAgICAgLy8gc28gd2UgbGVhdmUgaXQgaGFuZ2luZy4gVGhpcyBjYW4gY2F1c2UgZmFsc2UgbmVnYXRpdmVzIGluIHNoYXJlZCBwYXJlbnRzLFxuICAgICAgICAgICAgICAgIC8vIGJ1dCB3ZSBhY2NlcHQgdGhhdCBmb3Igbm93LCBiZWNhdXNlIGNsaWVudCBkYXRhIGZldGNoaW5nIGlzIG5vbi1pZGlvbWF0aWMuXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWZhbGx0aHJvdWdoXG4gICAgICAgICAgICAgICAgY2FzZSAndmFsaWRhdGlvbi1jbGllbnQnOlxuICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlU2lnbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlU2lnbmFsLmVuZFJlYWQoKVxuICAgICAgICAgICAgICAgICAgICBjYWNoZVNpZ25hbCA9IG51bGxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlSGFuZ2luZ1Byb21pc2U8UmVzcG9uc2U+KFxuICAgICAgICAgICAgICAgICAgICB3b3JrVW5pdFN0b3JlLnJlbmRlclNpZ25hbCxcbiAgICAgICAgICAgICAgICAgICAgd29ya1N0b3JlLnJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAnZmV0Y2goKSdcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcgJiZcbiAgICAgICAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZS5zdGFnZWRSZW5kZXJpbmdcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVTaWduYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjYWNoZVNpZ25hbC5lbmRSZWFkKClcbiAgICAgICAgICAgICAgICAgICAgICBjYWNoZVNpZ25hbCA9IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB3b3JrVW5pdFN0b3JlLnN0YWdlZFJlbmRlcmluZy53YWl0Rm9yU3RhZ2UoXG4gICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3RhZ2UuRHluYW1pY1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2NhY2hlJzpcbiAgICAgICAgICAgICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZ2VuZXJhdGUtc3RhdGljLXBhcmFtcyc6XG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICB3b3JrVW5pdFN0b3JlIHNhdGlzZmllcyBuZXZlclxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG1hcmtDdXJyZW50U2NvcGVBc0R5bmFtaWMoXG4gICAgICAgICAgICAgIHdvcmtTdG9yZSxcbiAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZSxcbiAgICAgICAgICAgICAgYHJldmFsaWRhdGU6IDAgZmV0Y2ggJHtpbnB1dH0gJHt3b3JrU3RvcmUucm91dGV9YFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFdlIG9ubHkgd2FudCB0byBzZXQgdGhlIHJldmFsaWRhdGUgc3RvcmUncyByZXZhbGlkYXRlIHRpbWUgaWYgaXRcbiAgICAgICAgICAvLyB3YXMgZXhwbGljaXRseSBzZXQgZm9yIHRoZSBmZXRjaCBjYWxsLCBpLmUuXG4gICAgICAgICAgLy8gb3JpZ2luYWxGZXRjaFJldmFsaWRhdGUuXG4gICAgICAgICAgaWYgKHJldmFsaWRhdGVTdG9yZSAmJiBvcmlnaW5hbEZldGNoUmV2YWxpZGF0ZSA9PT0gZmluYWxSZXZhbGlkYXRlKSB7XG4gICAgICAgICAgICByZXZhbGlkYXRlU3RvcmUucmV2YWxpZGF0ZSA9IGZpbmFsUmV2YWxpZGF0ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzQ2FjaGVhYmxlUmV2YWxpZGF0ZSA9XG4gICAgICAgICAgdHlwZW9mIGZpbmFsUmV2YWxpZGF0ZSA9PT0gJ251bWJlcicgJiYgZmluYWxSZXZhbGlkYXRlID4gMFxuXG4gICAgICAgIGxldCBjYWNoZUtleTogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgICAgIGNvbnN0IHsgaW5jcmVtZW50YWxDYWNoZSB9ID0gd29ya1N0b3JlXG4gICAgICAgIGxldCBpc0htclJlZnJlc2ggPSBmYWxzZVxuICAgICAgICBsZXQgc2VydmVyQ29tcG9uZW50c0htckNhY2hlOiBTZXJ2ZXJDb21wb25lbnRzSG1yQ2FjaGUgfCB1bmRlZmluZWRcblxuICAgICAgICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgICAgICAgIHN3aXRjaCAod29ya1VuaXRTdG9yZS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgICAgICAgIGNhc2UgJ2NhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByaXZhdGUtY2FjaGUnOlxuICAgICAgICAgICAgICBpc0htclJlZnJlc2ggPSB3b3JrVW5pdFN0b3JlLmlzSG1yUmVmcmVzaCA/PyBmYWxzZVxuICAgICAgICAgICAgICBzZXJ2ZXJDb21wb25lbnRzSG1yQ2FjaGUgPSB3b3JrVW5pdFN0b3JlLnNlcnZlckNvbXBvbmVudHNIbXJDYWNoZVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAgY2FzZSAndmFsaWRhdGlvbi1jbGllbnQnOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ2dlbmVyYXRlLXN0YXRpYy1wYXJhbXMnOlxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZSBzYXRpc2ZpZXMgbmV2ZXJcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgaW5jcmVtZW50YWxDYWNoZSAmJlxuICAgICAgICAgIChpc0NhY2hlYWJsZVJldmFsaWRhdGUgfHwgc2VydmVyQ29tcG9uZW50c0htckNhY2hlKVxuICAgICAgICApIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY2FjaGVLZXkgPSBhd2FpdCBpbmNyZW1lbnRhbENhY2hlLmdlbmVyYXRlQ2FjaGVLZXkoXG4gICAgICAgICAgICAgIGZldGNoVXJsLFxuICAgICAgICAgICAgICBpc1JlcXVlc3RJbnB1dCA/IChpbnB1dCBhcyBSZXF1ZXN0SW5pdCkgOiBpbml0XG4gICAgICAgICAgICApXG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZ2VuZXJhdGUgY2FjaGUga2V5IGZvcmAsIGlucHV0KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZldGNoSWR4ID0gd29ya1N0b3JlLm5leHRGZXRjaElkID8/IDFcbiAgICAgICAgd29ya1N0b3JlLm5leHRGZXRjaElkID0gZmV0Y2hJZHggKyAxXG5cbiAgICAgICAgbGV0IGhhbmRsZVVubG9jazogKCkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQgPSAoKSA9PiB7fVxuXG4gICAgICAgIGNvbnN0IGRvT3JpZ2luYWxGZXRjaCA9IGFzeW5jIChcbiAgICAgICAgICBpc1N0YWxlPzogYm9vbGVhbixcbiAgICAgICAgICBjYWNoZVJlYXNvbk92ZXJyaWRlPzogc3RyaW5nXG4gICAgICAgICkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlcXVlc3RJbnB1dEZpZWxkcyA9IFtcbiAgICAgICAgICAgICdjYWNoZScsXG4gICAgICAgICAgICAnY3JlZGVudGlhbHMnLFxuICAgICAgICAgICAgJ2hlYWRlcnMnLFxuICAgICAgICAgICAgJ2ludGVncml0eScsXG4gICAgICAgICAgICAna2VlcGFsaXZlJyxcbiAgICAgICAgICAgICdtZXRob2QnLFxuICAgICAgICAgICAgJ21vZGUnLFxuICAgICAgICAgICAgJ3JlZGlyZWN0JyxcbiAgICAgICAgICAgICdyZWZlcnJlcicsXG4gICAgICAgICAgICAncmVmZXJyZXJQb2xpY3knLFxuICAgICAgICAgICAgJ3dpbmRvdycsXG4gICAgICAgICAgICAnZHVwbGV4JyxcblxuICAgICAgICAgICAgLy8gZG9uJ3QgcGFzcyB0aHJvdWdoIHNpZ25hbCB3aGVuIHJldmFsaWRhdGluZ1xuICAgICAgICAgICAgLi4uKGlzU3RhbGUgPyBbXSA6IFsnc2lnbmFsJ10pLFxuICAgICAgICAgIF1cblxuICAgICAgICAgIGlmIChpc1JlcXVlc3RJbnB1dCkge1xuICAgICAgICAgICAgY29uc3QgcmVxSW5wdXQ6IFJlcXVlc3QgPSBpbnB1dCBhcyBhbnlcbiAgICAgICAgICAgIGNvbnN0IHJlcU9wdGlvbnM6IFJlcXVlc3RJbml0ID0ge1xuICAgICAgICAgICAgICBib2R5OiAocmVxSW5wdXQgYXMgYW55KS5fb2dCb2R5IHx8IHJlcUlucHV0LmJvZHksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgcmVxdWVzdElucHV0RmllbGRzKSB7XG4gICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgY3VzdG9tIGZpZWxkc1xuICAgICAgICAgICAgICByZXFPcHRpb25zW2ZpZWxkXSA9IHJlcUlucHV0W2ZpZWxkXVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5wdXQgPSBuZXcgUmVxdWVzdChyZXFJbnB1dC51cmwsIHJlcU9wdGlvbnMpXG4gICAgICAgICAgfSBlbHNlIGlmIChpbml0KSB7XG4gICAgICAgICAgICBjb25zdCB7IF9vZ0JvZHksIGJvZHksIHNpZ25hbCwgLi4ub3RoZXJJbnB1dCB9ID1cbiAgICAgICAgICAgICAgaW5pdCBhcyBSZXF1ZXN0SW5pdCAmIHsgX29nQm9keT86IGFueSB9XG4gICAgICAgICAgICBpbml0ID0ge1xuICAgICAgICAgICAgICAuLi5vdGhlcklucHV0LFxuICAgICAgICAgICAgICBib2R5OiBfb2dCb2R5IHx8IGJvZHksXG4gICAgICAgICAgICAgIHNpZ25hbDogaXNTdGFsZSA/IHVuZGVmaW5lZCA6IHNpZ25hbCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBhZGQgbWV0YWRhdGEgdG8gaW5pdCB3aXRob3V0IGVkaXRpbmcgdGhlIG9yaWdpbmFsXG4gICAgICAgICAgY29uc3QgY2xvbmVkSW5pdCA9IHtcbiAgICAgICAgICAgIC4uLmluaXQsXG4gICAgICAgICAgICBuZXh0OiB7IC4uLmluaXQ/Lm5leHQsIGZldGNoVHlwZTogJ29yaWdpbicsIGZldGNoSWR4IH0sXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG9yaWdpbkZldGNoKGlucHV0LCBjbG9uZWRJbml0KVxuICAgICAgICAgICAgLnRoZW4oYXN5bmMgKHJlcykgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWlzU3RhbGUgJiYgZmV0Y2hTdGFydCkge1xuICAgICAgICAgICAgICAgIHRyYWNrRmV0Y2hNZXRyaWMod29ya1N0b3JlLCB7XG4gICAgICAgICAgICAgICAgICBzdGFydDogZmV0Y2hTdGFydCxcbiAgICAgICAgICAgICAgICAgIHVybDogZmV0Y2hVcmwsXG4gICAgICAgICAgICAgICAgICBjYWNoZVJlYXNvbjogY2FjaGVSZWFzb25PdmVycmlkZSB8fCBjYWNoZVJlYXNvbixcbiAgICAgICAgICAgICAgICAgIGNhY2hlU3RhdHVzOlxuICAgICAgICAgICAgICAgICAgICBmaW5hbFJldmFsaWRhdGUgPT09IDAgfHwgY2FjaGVSZWFzb25PdmVycmlkZVxuICAgICAgICAgICAgICAgICAgICAgID8gJ3NraXAnXG4gICAgICAgICAgICAgICAgICAgICAgOiAnbWlzcycsXG4gICAgICAgICAgICAgICAgICBjYWNoZVdhcm5pbmcsXG4gICAgICAgICAgICAgICAgICBzdGF0dXM6IHJlcy5zdGF0dXMsXG4gICAgICAgICAgICAgICAgICBtZXRob2Q6IGNsb25lZEluaXQubWV0aG9kIHx8ICdHRVQnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHJlcy5zdGF0dXMgPT09IDIwMCAmJlxuICAgICAgICAgICAgICAgIGluY3JlbWVudGFsQ2FjaGUgJiZcbiAgICAgICAgICAgICAgICBjYWNoZUtleSAmJlxuICAgICAgICAgICAgICAgIChpc0NhY2hlYWJsZVJldmFsaWRhdGUgfHwgc2VydmVyQ29tcG9uZW50c0htckNhY2hlKVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkUmV2YWxpZGF0ZSA9XG4gICAgICAgICAgICAgICAgICBmaW5hbFJldmFsaWRhdGUgPj0gSU5GSU5JVEVfQ0FDSEVcbiAgICAgICAgICAgICAgICAgICAgPyBDQUNIRV9PTkVfWUVBUl9TRUNPTkRTXG4gICAgICAgICAgICAgICAgICAgIDogZmluYWxSZXZhbGlkYXRlXG5cbiAgICAgICAgICAgICAgICBjb25zdCBpbmNyZW1lbnRhbENhY2hlQ29uZmlnOlxuICAgICAgICAgICAgICAgICAgfCBTZXRJbmNyZW1lbnRhbEZldGNoQ2FjaGVDb250ZXh0XG4gICAgICAgICAgICAgICAgICB8IHVuZGVmaW5lZCA9IGlzQ2FjaGVhYmxlUmV2YWxpZGF0ZVxuICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgZmV0Y2hDYWNoZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICBmZXRjaFVybCxcbiAgICAgICAgICAgICAgICAgICAgICBmZXRjaElkeCxcbiAgICAgICAgICAgICAgICAgICAgICB0YWdzLFxuICAgICAgICAgICAgICAgICAgICAgIGlzSW1wbGljaXRCdWlsZFRpbWVDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcblxuICAgICAgICAgICAgICAgIHN3aXRjaCAod29ya1VuaXRTdG9yZT8udHlwZSkge1xuICAgICAgICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAgICAgICAgY2FzZSAndmFsaWRhdGlvbi1jbGllbnQnOlxuICAgICAgICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlQ2FjaGVkUHJlcmVuZGVyUmVzcG9uc2UoXG4gICAgICAgICAgICAgICAgICAgICAgcmVzLFxuICAgICAgICAgICAgICAgICAgICAgIGNhY2hlS2V5LFxuICAgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudGFsQ2FjaGVDb25maWcsXG4gICAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50YWxDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkUmV2YWxpZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVVbmxvY2tcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgY2FzZSAncmVxdWVzdCc6XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50JyAmJlxuICAgICAgICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmUuc3RhZ2VkUmVuZGVyaW5nICYmXG4gICAgICAgICAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZS5jYWNoZVNpZ25hbCAmJlxuICAgICAgICAgICAgICAgICAgICAgIGlzQ2FjaGVhYmxlUmV2YWxpZGF0ZVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAvLyBXZSdyZSBmaWxsaW5nIGNhY2hlcyBmb3IgYSBzdGFnZWQgcmVuZGVyIHdpdGggYW5cbiAgICAgICAgICAgICAgICAgICAgICAvLyBleHBsaWNpdCBjYWNoZSBjb25maWcsIHNvIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgLy8gcmVzcG9uc2UgdG8gZmluaXNoIGluc3RlYWQgb2Ygc3RyZWFtaW5nLiBGb3IgSE1SLW9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAvLyBjYWNoaW5nIChubyBleHBsaWNpdCByZXZhbGlkYXRlKSwgd2UgZmFsbCB0aHJvdWdoIHRvXG4gICAgICAgICAgICAgICAgICAgICAgLy8gY3JlYXRlQ2FjaGVkRHluYW1pY1Jlc3BvbnNlIHdoaWNoIGhhbmRsZXMgc3RyZWFtaW5nXG4gICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIGFib3J0IGdyYWNlZnVsbHkuXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUNhY2hlZFByZXJlbmRlclJlc3BvbnNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRhbENhY2hlQ29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50YWxDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRSZXZhbGlkYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlVW5sb2NrXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvLyBmYWxsdGhyb3VnaFxuICAgICAgICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ2NhY2hlJzpcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByaXZhdGUtY2FjaGUnOlxuICAgICAgICAgICAgICAgICAgY2FzZSAndW5zdGFibGUtY2FjaGUnOlxuICAgICAgICAgICAgICAgICAgY2FzZSAnZ2VuZXJhdGUtc3RhdGljLXBhcmFtcyc6XG4gICAgICAgICAgICAgICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUNhY2hlZER5bmFtaWNSZXNwb25zZShcbiAgICAgICAgICAgICAgICAgICAgICB3b3JrU3RvcmUsXG4gICAgICAgICAgICAgICAgICAgICAgcmVzLFxuICAgICAgICAgICAgICAgICAgICAgIGNhY2hlS2V5LFxuICAgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudGFsQ2FjaGVDb25maWcsXG4gICAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50YWxDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJDb21wb25lbnRzSG1yQ2FjaGUsXG4gICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZFJldmFsaWRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlVW5sb2NrLFxuICAgICAgICAgICAgICAgICAgICAgIGdldFJlcXVlc3RNZXRhKCdzaWduYWwnKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB3b3JrVW5pdFN0b3JlIHNhdGlzZmllcyBuZXZlclxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIHdlIGhhZCByZXNwb25zZSB0aGF0IHdlIGRldGVybWluZWQgc2hvdWxkbid0IGJlIGNhY2hlZCBzbyB3ZSByZXR1cm4gaXRcbiAgICAgICAgICAgICAgLy8gYW5kIGRvbid0IGNhY2hlIGl0LiBUaGlzIGFsc28gbmVlZHMgdG8gdW5sb2NrIHRoZSBjYWNoZSBsb2NrIHdlIGFjcXVpcmVkLlxuICAgICAgICAgICAgICBhd2FpdCBoYW5kbGVVbmxvY2soKVxuXG4gICAgICAgICAgICAgIHJldHVybiByZXNcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgIGhhbmRsZVVubG9jaygpXG4gICAgICAgICAgICAgIHRocm93IGVycm9yXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNhY2hlUmVhc29uT3ZlcnJpZGVcbiAgICAgICAgbGV0IGlzRm9yZWdyb3VuZFJldmFsaWRhdGUgPSBmYWxzZVxuICAgICAgICBsZXQgaXNIbXJSZWZyZXNoQ2FjaGUgPSBmYWxzZVxuXG4gICAgICAgIGlmIChjYWNoZUtleSAmJiBpbmNyZW1lbnRhbENhY2hlKSB7XG4gICAgICAgICAgbGV0IGNhY2hlZEZldGNoRGF0YTogQ2FjaGVkRmV0Y2hEYXRhIHwgdW5kZWZpbmVkXG5cbiAgICAgICAgICBpZiAoaXNIbXJSZWZyZXNoICYmIHNlcnZlckNvbXBvbmVudHNIbXJDYWNoZSkge1xuICAgICAgICAgICAgY2FjaGVkRmV0Y2hEYXRhID0gc2VydmVyQ29tcG9uZW50c0htckNhY2hlLmdldChjYWNoZUtleSlcbiAgICAgICAgICAgIGlzSG1yUmVmcmVzaENhY2hlID0gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpc0NhY2hlYWJsZVJldmFsaWRhdGUgJiYgIWNhY2hlZEZldGNoRGF0YSkge1xuICAgICAgICAgICAgaGFuZGxlVW5sb2NrID0gYXdhaXQgaW5jcmVtZW50YWxDYWNoZS5sb2NrKGNhY2hlS2V5KVxuICAgICAgICAgICAgY29uc3QgZW50cnkgPSB3b3JrU3RvcmUuaXNPbkRlbWFuZFJldmFsaWRhdGVcbiAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgIDogYXdhaXQgaW5jcmVtZW50YWxDYWNoZS5nZXQoY2FjaGVLZXksIHtcbiAgICAgICAgICAgICAgICAgIGtpbmQ6IEluY3JlbWVudGFsQ2FjaGVLaW5kLkZFVENILFxuICAgICAgICAgICAgICAgICAgcmV2YWxpZGF0ZTogZmluYWxSZXZhbGlkYXRlLFxuICAgICAgICAgICAgICAgICAgZmV0Y2hVcmwsXG4gICAgICAgICAgICAgICAgICBmZXRjaElkeCxcbiAgICAgICAgICAgICAgICAgIHRhZ3MsXG4gICAgICAgICAgICAgICAgICBzb2Z0VGFnczogaW1wbGljaXRUYWdzPy50YWdzLFxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGlmIChoYXNOb0V4cGxpY2l0Q2FjaGVDb25maWcgJiYgd29ya1VuaXRTdG9yZSkge1xuICAgICAgICAgICAgICBzd2l0Y2ggKHdvcmtVbml0U3RvcmUudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWNsaWVudCc6XG4gICAgICAgICAgICAgICAgY2FzZSAndmFsaWRhdGlvbi1jbGllbnQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgICAgICAgICAgICAgIC8vIFdlIHNvbWV0aW1lcyB1c2UgdGhlIGNhY2hlIHRvIGRlZHVwZSBmZXRjaGVzIHRoYXQgZG8gbm90XG4gICAgICAgICAgICAgICAgICAvLyBzcGVjaWZ5IGEgY2FjaGUgY29uZmlndXJhdGlvbi4gSW4gdGhlc2UgY2FzZXMgd2Ugd2FudCB0b1xuICAgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHdlIHN0aWxsIGV4Y2x1ZGUgdGhlbSBmcm9tIHByZXJlbmRlcnMgaWZcbiAgICAgICAgICAgICAgICAgIC8vIGNhY2hlQ29tcG9uZW50cyBpcyBvbiBzbyB3ZSBpbnRyb2R1Y2UgYW4gYXJ0aWZpY2lhbCB0YXNrIGJvdW5kYXJ5XG4gICAgICAgICAgICAgICAgICAvLyBoZXJlLlxuICAgICAgICAgICAgICAgICAgYXdhaXQgZ2V0VGltZW91dEJvdW5kYXJ5KClcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgY2FzZSAncmVxdWVzdCc6XG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnICYmXG4gICAgICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmUuc3RhZ2VkUmVuZGVyaW5nXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd29ya1VuaXRTdG9yZS5zdGFnZWRSZW5kZXJpbmcud2FpdEZvclN0YWdlKFxuICAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0YWdlLkR5bmFtaWNcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcHByJzpcbiAgICAgICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgICAgICBjYXNlICdjYWNoZSc6XG4gICAgICAgICAgICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICAgICAgICAgICAgY2FzZSAndW5zdGFibGUtY2FjaGUnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2dlbmVyYXRlLXN0YXRpYy1wYXJhbXMnOlxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZSBzYXRpc2ZpZXMgbmV2ZXJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgICAgICAgYXdhaXQgaGFuZGxlVW5sb2NrKClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIGluIGRldiwgaW5jcmVtZW50YWwgY2FjaGUgcmVzcG9uc2Ugd2lsbCBiZSBudWxsIGluIGNhc2UgdGhlIGJyb3dzZXIgYWRkcyBgY2FjaGUtY29udHJvbDogbm8tY2FjaGVgIGluIHRoZSByZXF1ZXN0IGhlYWRlcnNcbiAgICAgICAgICAgICAgLy8gVE9ETzogaXQgc2VlbXMgbGlrZSB3ZSBhbHNvIGhpdCB0aGlzIGFmdGVyIHJldmFsaWRhdGVzIGluIGRldj9cbiAgICAgICAgICAgICAgY2FjaGVSZWFzb25PdmVycmlkZSA9ICdjYWNoZS1jb250cm9sOiBuby1jYWNoZSAoaGFyZCByZWZyZXNoKSdcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGVudHJ5Py52YWx1ZSAmJiBlbnRyeS52YWx1ZS5raW5kID09PSBDYWNoZWRSb3V0ZUtpbmQuRkVUQ0gpIHtcbiAgICAgICAgICAgICAgLy8gd2hlbiBzdGFsZSBhbmQgaXMgcmV2YWxpZGF0aW5nIHdlIHdhaXQgZm9yIGZyZXNoIGRhdGFcbiAgICAgICAgICAgICAgLy8gc28gdGhlIHJldmFsaWRhdGVkIGVudHJ5IGhhcyB0aGUgdXBkYXRlZCBkYXRhXG4gICAgICAgICAgICAgIGlmICh3b3JrU3RvcmUuaXNTdGF0aWNHZW5lcmF0aW9uICYmIGVudHJ5LmlzU3RhbGUpIHtcbiAgICAgICAgICAgICAgICBpc0ZvcmVncm91bmRSZXZhbGlkYXRlID0gdHJ1ZVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChlbnRyeS5pc1N0YWxlKSB7XG4gICAgICAgICAgICAgICAgICB3b3JrU3RvcmUucGVuZGluZ1JldmFsaWRhdGVzID8/PSB7fVxuICAgICAgICAgICAgICAgICAgaWYgKCF3b3JrU3RvcmUucGVuZGluZ1JldmFsaWRhdGVzW2NhY2hlS2V5XSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwZW5kaW5nUmV2YWxpZGF0ZSA9IGRvT3JpZ2luYWxGZXRjaCh0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgIC50aGVuKGFzeW5jIChyZXNwb25zZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGF3YWl0IHJlc3BvbnNlLmFycmF5QnVmZmVyKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiByZXNwb25zZS5oZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0OiByZXNwb25zZS5zdGF0dXNUZXh0LFxuICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtTdG9yZS5wZW5kaW5nUmV2YWxpZGF0ZXMgPz89IHt9XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgd29ya1N0b3JlLnBlbmRpbmdSZXZhbGlkYXRlc1tjYWNoZUtleSB8fCAnJ11cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIEF0dGFjaCB0aGUgZW1wdHkgY2F0Y2ggaGVyZSBzbyB3ZSBkb24ndCBnZXQgYSBcInVuaGFuZGxlZFxuICAgICAgICAgICAgICAgICAgICAvLyBwcm9taXNlIHJlamVjdGlvblwiIHdhcm5pbmcuXG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdSZXZhbGlkYXRlLmNhdGNoKGNvbnNvbGUuZXJyb3IpXG5cbiAgICAgICAgICAgICAgICAgICAgd29ya1N0b3JlLnBlbmRpbmdSZXZhbGlkYXRlc1tjYWNoZUtleV0gPSBwZW5kaW5nUmV2YWxpZGF0ZVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNhY2hlZEZldGNoRGF0YSA9IGVudHJ5LnZhbHVlLmRhdGFcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjYWNoZWRGZXRjaERhdGEpIHtcbiAgICAgICAgICAgIGlmIChmZXRjaFN0YXJ0KSB7XG4gICAgICAgICAgICAgIHRyYWNrRmV0Y2hNZXRyaWMod29ya1N0b3JlLCB7XG4gICAgICAgICAgICAgICAgc3RhcnQ6IGZldGNoU3RhcnQsXG4gICAgICAgICAgICAgICAgdXJsOiBmZXRjaFVybCxcbiAgICAgICAgICAgICAgICBjYWNoZVJlYXNvbixcbiAgICAgICAgICAgICAgICBjYWNoZVN0YXR1czogaXNIbXJSZWZyZXNoQ2FjaGUgPyAnaG1yJyA6ICdoaXQnLFxuICAgICAgICAgICAgICAgIGNhY2hlV2FybmluZyxcbiAgICAgICAgICAgICAgICBzdGF0dXM6IGNhY2hlZEZldGNoRGF0YS5zdGF0dXMgfHwgMjAwLFxuICAgICAgICAgICAgICAgIG1ldGhvZDogaW5pdD8ubWV0aG9kIHx8ICdHRVQnLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IG5ldyBSZXNwb25zZShcbiAgICAgICAgICAgICAgQnVmZmVyLmZyb20oY2FjaGVkRmV0Y2hEYXRhLmJvZHksICdiYXNlNjQnKSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGNhY2hlZEZldGNoRGF0YS5oZWFkZXJzLFxuICAgICAgICAgICAgICAgIHN0YXR1czogY2FjaGVkRmV0Y2hEYXRhLnN0YXR1cyxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzcG9uc2UsICd1cmwnLCB7XG4gICAgICAgICAgICAgIHZhbHVlOiBjYWNoZWRGZXRjaERhdGEudXJsLFxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICh3b3JrU3RvcmUuaXNTdGF0aWNHZW5lcmF0aW9uIHx8XG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcgJiZcbiAgICAgICAgICAgICAgcHJvY2Vzcy5lbnYuX19ORVhUX0NBQ0hFX0NPTVBPTkVOVFMgJiZcbiAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZSAmJlxuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZS50eXBlID09PSAncmVxdWVzdCcgJiZcbiAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZS5zdGFnZWRSZW5kZXJpbmcpKSAmJlxuICAgICAgICAgIGluaXQgJiZcbiAgICAgICAgICB0eXBlb2YgaW5pdCA9PT0gJ29iamVjdCdcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgeyBjYWNoZSB9ID0gaW5pdFxuXG4gICAgICAgICAgLy8gRGVsZXRlIGBjYWNoZWAgcHJvcGVydHkgYXMgQ2xvdWRmbGFyZSBXb3JrZXJzIHdpbGwgdGhyb3cgYW4gZXJyb3JcbiAgICAgICAgICBpZiAoaXNFZGdlUnVudGltZSkgZGVsZXRlIGluaXQuY2FjaGVcblxuICAgICAgICAgIGlmIChjYWNoZSA9PT0gJ25vLXN0b3JlJykge1xuICAgICAgICAgICAgLy8gSWYgZW5hYmxlZCwgd2Ugc2hvdWxkIGJhaWwgb3V0IG9mIHN0YXRpYyBnZW5lcmF0aW9uLlxuICAgICAgICAgICAgaWYgKHdvcmtVbml0U3RvcmUpIHtcbiAgICAgICAgICAgICAgc3dpdGNoICh3b3JrVW5pdFN0b3JlLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdwcmVyZW5kZXInOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgICAgICAgICAgICBjYXNlICd2YWxpZGF0aW9uLWNsaWVudCc6XG4gICAgICAgICAgICAgICAgICBpZiAoY2FjaGVTaWduYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FjaGVTaWduYWwuZW5kUmVhZCgpXG4gICAgICAgICAgICAgICAgICAgIGNhY2hlU2lnbmFsID0gbnVsbFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VIYW5naW5nUHJvbWlzZTxSZXNwb25zZT4oXG4gICAgICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmUucmVuZGVyU2lnbmFsLFxuICAgICAgICAgICAgICAgICAgICB3b3JrU3RvcmUucm91dGUsXG4gICAgICAgICAgICAgICAgICAgICdmZXRjaCgpJ1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50JyAmJlxuICAgICAgICAgICAgICAgICAgICB3b3JrVW5pdFN0b3JlLnN0YWdlZFJlbmRlcmluZ1xuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZVNpZ25hbCkge1xuICAgICAgICAgICAgICAgICAgICAgIGNhY2hlU2lnbmFsLmVuZFJlYWQoKVxuICAgICAgICAgICAgICAgICAgICAgIGNhY2hlU2lnbmFsID0gbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdvcmtVbml0U3RvcmUuc3RhZ2VkUmVuZGVyaW5nLndhaXRGb3JTdGFnZShcbiAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdGFnZS5EeW5hbWljXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3ByaXZhdGUtY2FjaGUnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICBjYXNlICdnZW5lcmF0ZS1zdGF0aWMtcGFyYW1zJzpcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmUgc2F0aXNmaWVzIG5ldmVyXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1hcmtDdXJyZW50U2NvcGVBc0R5bmFtaWMoXG4gICAgICAgICAgICAgIHdvcmtTdG9yZSxcbiAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZSxcbiAgICAgICAgICAgICAgYG5vLXN0b3JlIGZldGNoICR7aW5wdXR9ICR7d29ya1N0b3JlLnJvdXRlfWBcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBoYXNOZXh0Q29uZmlnID0gJ25leHQnIGluIGluaXRcbiAgICAgICAgICBjb25zdCB7IG5leHQgPSB7fSB9ID0gaW5pdFxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHR5cGVvZiBuZXh0LnJldmFsaWRhdGUgPT09ICdudW1iZXInICYmXG4gICAgICAgICAgICByZXZhbGlkYXRlU3RvcmUgJiZcbiAgICAgICAgICAgIG5leHQucmV2YWxpZGF0ZSA8IHJldmFsaWRhdGVTdG9yZS5yZXZhbGlkYXRlXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAobmV4dC5yZXZhbGlkYXRlID09PSAwKSB7XG4gICAgICAgICAgICAgIC8vIElmIGVuYWJsZWQsIHdlIHNob3VsZCBiYWlsIG91dCBvZiBzdGF0aWMgZ2VuZXJhdGlvbi5cbiAgICAgICAgICAgICAgaWYgKHdvcmtVbml0U3RvcmUpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHdvcmtVbml0U3RvcmUudHlwZSkge1xuICAgICAgICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgICAgICAgICAgICAgICAgY2FzZSAndmFsaWRhdGlvbi1jbGllbnQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZUhhbmdpbmdQcm9taXNlPFJlc3BvbnNlPihcbiAgICAgICAgICAgICAgICAgICAgICB3b3JrVW5pdFN0b3JlLnJlbmRlclNpZ25hbCxcbiAgICAgICAgICAgICAgICAgICAgICB3b3JrU3RvcmUucm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgJ2ZldGNoKCknXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICB3b3JrVW5pdFN0b3JlLnN0YWdlZFJlbmRlcmluZ1xuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB3b3JrVW5pdFN0b3JlLnN0YWdlZFJlbmRlcmluZy53YWl0Rm9yU3RhZ2UoXG4gICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdGFnZS5EeW5hbWljXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICBjYXNlICdjYWNoZSc6XG4gICAgICAgICAgICAgICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgICAgICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICAgICAgICBjYXNlICdnZW5lcmF0ZS1zdGF0aWMtcGFyYW1zJzpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmUgc2F0aXNmaWVzIG5ldmVyXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG1hcmtDdXJyZW50U2NvcGVBc0R5bmFtaWMoXG4gICAgICAgICAgICAgICAgd29ya1N0b3JlLFxuICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmUsXG4gICAgICAgICAgICAgICAgYHJldmFsaWRhdGU6IDAgZmV0Y2ggJHtpbnB1dH0gJHt3b3JrU3RvcmUucm91dGV9YFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghd29ya1N0b3JlLmZvcmNlU3RhdGljIHx8IG5leHQucmV2YWxpZGF0ZSAhPT0gMCkge1xuICAgICAgICAgICAgICByZXZhbGlkYXRlU3RvcmUucmV2YWxpZGF0ZSA9IG5leHQucmV2YWxpZGF0ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaGFzTmV4dENvbmZpZykgZGVsZXRlIGluaXQubmV4dFxuICAgICAgICB9XG5cbiAgICAgICAgLy8gaWYgd2UgYXJlIHJldmFsaWRhdGluZyB0aGUgd2hvbGUgcGFnZSB2aWEgdGltZSBvciBvbi1kZW1hbmQgYW5kXG4gICAgICAgIC8vIHRoZSBmZXRjaCBjYWNoZSBlbnRyeSBpcyBzdGFsZSB3ZSBzaG91bGQgc3RpbGwgZGUtZHVwZSB0aGVcbiAgICAgICAgLy8gb3JpZ2luIGhpdCBpZiBpdCdzIGEgY2FjaGUtYWJsZSBlbnRyeVxuICAgICAgICBpZiAoY2FjaGVLZXkgJiYgaXNGb3JlZ3JvdW5kUmV2YWxpZGF0ZSkge1xuICAgICAgICAgIGNvbnN0IHBlbmRpbmdSZXZhbGlkYXRlS2V5ID0gY2FjaGVLZXlcbiAgICAgICAgICB3b3JrU3RvcmUucGVuZGluZ1JldmFsaWRhdGVzID8/PSB7fVxuICAgICAgICAgIGxldCBwZW5kaW5nUmV2YWxpZGF0ZSA9XG4gICAgICAgICAgICB3b3JrU3RvcmUucGVuZGluZ1JldmFsaWRhdGVzW3BlbmRpbmdSZXZhbGlkYXRlS2V5XVxuXG4gICAgICAgICAgaWYgKHBlbmRpbmdSZXZhbGlkYXRlKSB7XG4gICAgICAgICAgICBjb25zdCByZXZhbGlkYXRlZFJlc3VsdDoge1xuICAgICAgICAgICAgICBib2R5OiBBcnJheUJ1ZmZlclxuICAgICAgICAgICAgICBoZWFkZXJzOiBIZWFkZXJzXG4gICAgICAgICAgICAgIHN0YXR1czogbnVtYmVyXG4gICAgICAgICAgICAgIHN0YXR1c1RleHQ6IHN0cmluZ1xuICAgICAgICAgICAgfSA9IGF3YWl0IHBlbmRpbmdSZXZhbGlkYXRlXG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKHJldmFsaWRhdGVkUmVzdWx0LmJvZHksIHtcbiAgICAgICAgICAgICAgaGVhZGVyczogcmV2YWxpZGF0ZWRSZXN1bHQuaGVhZGVycyxcbiAgICAgICAgICAgICAgc3RhdHVzOiByZXZhbGlkYXRlZFJlc3VsdC5zdGF0dXMsXG4gICAgICAgICAgICAgIHN0YXR1c1RleHQ6IHJldmFsaWRhdGVkUmVzdWx0LnN0YXR1c1RleHQsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFdlIHVzZWQgdG8ganVzdCByZXNvbHZlIHRoZSBSZXNwb25zZSBhbmQgY2xvbmUgaXQgaG93ZXZlciBmb3JcbiAgICAgICAgICAvLyBzdGF0aWMgZ2VuZXJhdGlvbiB3aXRoIGNhY2hlQ29tcG9uZW50cyB3ZSBuZWVkIHRoZSByZXNwb25zZSB0byBiZSBhYmxlIHRvXG4gICAgICAgICAgLy8gYmUgcmVzb2x2ZWQgaW4gYSBtaWNyb3Rhc2sgYW5kIGNsb25pbmcgdGhlIHJlc3BvbnNlIHdpbGwgbmV2ZXIgaGF2ZVxuICAgICAgICAgIC8vIGEgYm9keSB0aGF0IGNhbiByZXNvbHZlIGluIGEgbWljcm90YXNrIGluIG5vZGUgKGFzIG9ic2VydmVkIHRocm91Z2hcbiAgICAgICAgICAvLyBleHBlcmltZW50YXRpb24pIFNvIGluc3RlYWQgd2UgYXdhaXQgdGhlIGJvZHkgYW5kIHRoZW4gd2hlbiBpdCBpc1xuICAgICAgICAgIC8vIGF2YWlsYWJsZSB3ZSBjb25zdHJ1Y3QgbWFudWFsbHkgY2xvbmVkIFJlc3BvbnNlIG9iamVjdHMgd2l0aCB0aGVcbiAgICAgICAgICAvLyBib2R5IGFzIGFuIEFycmF5QnVmZmVyLiBUaGlzIHdpbGwgYmUgcmVzb2x2YWJsZSBpbiBhIG1pY3JvdGFza1xuICAgICAgICAgIC8vIG1ha2luZyBpdCBjb21wYXRpYmxlIHdpdGggY2FjaGVDb21wb25lbnRzLlxuICAgICAgICAgIGNvbnN0IHBlbmRpbmdSZXNwb25zZSA9IGRvT3JpZ2luYWxGZXRjaCh0cnVlLCBjYWNoZVJlYXNvbk92ZXJyaWRlKVxuICAgICAgICAgICAgLy8gV2UncmUgY2xvbmluZyB0aGUgcmVzcG9uc2UgdXNpbmcgdGhpcyB1dGlsaXR5IGJlY2F1c2UgdGhlcmVcbiAgICAgICAgICAgIC8vIGV4aXN0cyBhIGJ1ZyBpbiB0aGUgdW5kaWNpIGxpYnJhcnkgYXJvdW5kIHJlc3BvbnNlIGNsb25pbmcuXG4gICAgICAgICAgICAvLyBTZWUgdGhlIGZvbGxvd2luZyBwdWxsIHJlcXVlc3QgZm9yIG1vcmUgZGV0YWlsczpcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS92ZXJjZWwvbmV4dC5qcy9wdWxsLzczMjc0XG4gICAgICAgICAgICAudGhlbihjbG9uZVJlc3BvbnNlKVxuXG4gICAgICAgICAgcGVuZGluZ1JldmFsaWRhdGUgPSBwZW5kaW5nUmVzcG9uc2VcbiAgICAgICAgICAgIC50aGVuKGFzeW5jIChyZXNwb25zZXMpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSByZXNwb25zZXNbMF1cbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBib2R5OiBhd2FpdCByZXNwb25zZS5hcnJheUJ1ZmZlcigpLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHJlc3BvbnNlLmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsXG4gICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogcmVzcG9uc2Uuc3RhdHVzVGV4dCxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgICAgLy8gSWYgdGhlIHBlbmRpbmcgcmV2YWxpZGF0ZSBpcyBub3QgcHJlc2VudCBpbiB0aGUgc3RvcmUsIHRoZW5cbiAgICAgICAgICAgICAgLy8gd2UgaGF2ZSBub3RoaW5nIHRvIGRlbGV0ZS5cbiAgICAgICAgICAgICAgaWYgKCF3b3JrU3RvcmUucGVuZGluZ1JldmFsaWRhdGVzPy5bcGVuZGluZ1JldmFsaWRhdGVLZXldKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBkZWxldGUgd29ya1N0b3JlLnBlbmRpbmdSZXZhbGlkYXRlc1twZW5kaW5nUmV2YWxpZGF0ZUtleV1cbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAvLyBBdHRhY2ggdGhlIGVtcHR5IGNhdGNoIGhlcmUgc28gd2UgZG9uJ3QgZ2V0IGEgXCJ1bmhhbmRsZWQgcHJvbWlzZVxuICAgICAgICAgIC8vIHJlamVjdGlvblwiIHdhcm5pbmdcbiAgICAgICAgICBwZW5kaW5nUmV2YWxpZGF0ZS5jYXRjaCgoKSA9PiB7fSlcblxuICAgICAgICAgIHdvcmtTdG9yZS5wZW5kaW5nUmV2YWxpZGF0ZXNbcGVuZGluZ1JldmFsaWRhdGVLZXldID0gcGVuZGluZ1JldmFsaWRhdGVcblxuICAgICAgICAgIHJldHVybiBwZW5kaW5nUmVzcG9uc2UudGhlbigocmVzcG9uc2VzKSA9PiByZXNwb25zZXNbMV0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGRvT3JpZ2luYWxGZXRjaChmYWxzZSwgY2FjaGVSZWFzb25PdmVycmlkZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIClcblxuICAgIGlmIChjYWNoZVNpZ25hbCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlc3VsdFxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKGNhY2hlU2lnbmFsKSB7XG4gICAgICAgICAgY2FjaGVTaWduYWwuZW5kUmVhZCgpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgLy8gQXR0YWNoIHRoZSBuZWNlc3NhcnkgcHJvcGVydGllcyB0byB0aGUgcGF0Y2hlZCBmZXRjaCBmdW5jdGlvbi5cbiAgLy8gV2UgZG9uJ3QgdXNlIHRoaXMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBmZXRjaCBmdW5jdGlvbiBoYXMgYmVlbiBwYXRjaGVkLFxuICAvLyBidXQgZm9yIGV4dGVybmFsIGNvbnN1bWVycyB0byBkZXRlcm1pbmUgaWYgdGhlIGZldGNoIGZ1bmN0aW9uIGhhcyBiZWVuXG4gIC8vIHBhdGNoZWQuXG4gIHBhdGNoZWQuX19uZXh0UGF0Y2hlZCA9IHRydWUgYXMgY29uc3RcbiAgcGF0Y2hlZC5fX25leHRHZXRTdGF0aWNTdG9yZSA9ICgpID0+IHdvcmtBc3luY1N0b3JhZ2VcbiAgcGF0Y2hlZC5fbmV4dE9yaWdpbmFsRmV0Y2ggPSBvcmlnaW5GZXRjaFxuICA7KGdsb2JhbFRoaXMgYXMgUmVjb3JkPHN5bWJvbCwgdW5rbm93bj4pW05FWFRfUEFUQ0hfU1lNQk9MXSA9IHRydWVcblxuICAvLyBBc3NpZ24gdGhlIGZ1bmN0aW9uIG5hbWUgYWxzbyBhcyBhIG5hbWUgcHJvcGVydHksIHNvIHRoYXQgaXQncyBwcmVzZXJ2ZWRcbiAgLy8gZXZlbiB3aGVuIG1hbmdsaW5nIGlzIGVuYWJsZWQuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwYXRjaGVkLCAnbmFtZScsIHsgdmFsdWU6ICdmZXRjaCcsIHdyaXRhYmxlOiBmYWxzZSB9KVxuXG4gIHJldHVybiBwYXRjaGVkXG59XG5cbi8vIHdlIHBhdGNoIGZldGNoIHRvIGNvbGxlY3QgY2FjaGUgaW5mb3JtYXRpb24gdXNlZCBmb3Jcbi8vIGRldGVybWluaW5nIGlmIGEgcGFnZSBpcyBzdGF0aWMgb3Igbm90XG5leHBvcnQgZnVuY3Rpb24gcGF0Y2hGZXRjaChvcHRpb25zOiBQYXRjaGFibGVNb2R1bGUpIHtcbiAgLy8gSWYgd2UndmUgYWxyZWFkeSBwYXRjaGVkIGZldGNoLCB3ZSBzaG91bGQgbm90IHBhdGNoIGl0IGFnYWluLlxuICBpZiAoaXNGZXRjaFBhdGNoZWQoKSkgcmV0dXJuXG5cbiAgLy8gR3JhYiB0aGUgb3JpZ2luYWwgZmV0Y2ggZnVuY3Rpb24uIFdlJ2xsIGF0dGFjaCB0aGlzIHNvIHdlIGNhbiB1c2UgaXQgaW5cbiAgLy8gdGhlIHBhdGNoZWQgZmV0Y2ggZnVuY3Rpb24uXG4gIGNvbnN0IG9yaWdpbmFsID0gY3JlYXRlRGVkdXBlRmV0Y2goZ2xvYmFsVGhpcy5mZXRjaClcblxuICAvLyBTZXQgdGhlIGdsb2JhbCBmZXRjaCB0byB0aGUgcGF0Y2hlZCBmZXRjaC5cbiAgZ2xvYmFsVGhpcy5mZXRjaCA9IGNyZWF0ZVBhdGNoZWRGZXRjaGVyKG9yaWdpbmFsLCBvcHRpb25zKVxufVxuXG5sZXQgY3VycmVudFRpbWVvdXRCb3VuZGFyeTogbnVsbCB8IFByb21pc2U8dm9pZD4gPSBudWxsXG5mdW5jdGlvbiBnZXRUaW1lb3V0Qm91bmRhcnkoKSB7XG4gIGlmICghY3VycmVudFRpbWVvdXRCb3VuZGFyeSkge1xuICAgIGN1cnJlbnRUaW1lb3V0Qm91bmRhcnkgPSBuZXcgUHJvbWlzZSgocikgPT4ge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGN1cnJlbnRUaW1lb3V0Qm91bmRhcnkgPSBudWxsXG4gICAgICAgIHIoKVxuICAgICAgfSwgMClcbiAgICB9KVxuICB9XG4gIHJldHVybiBjdXJyZW50VGltZW91dEJvdW5kYXJ5XG59XG4iXSwibmFtZXMiOlsiTkVYVF9QQVRDSF9TWU1CT0wiLCJjcmVhdGVQYXRjaGVkRmV0Y2hlciIsInBhdGNoRmV0Y2giLCJ2YWxpZGF0ZVJldmFsaWRhdGUiLCJ2YWxpZGF0ZVRhZ3MiLCJpc0VkZ2VSdW50aW1lIiwicHJvY2VzcyIsImVudiIsIk5FWFRfUlVOVElNRSIsIlN5bWJvbCIsImZvciIsImlzRmV0Y2hQYXRjaGVkIiwiZ2xvYmFsVGhpcyIsInJldmFsaWRhdGVWYWwiLCJyb3V0ZSIsIm5vcm1hbGl6ZWRSZXZhbGlkYXRlIiwidW5kZWZpbmVkIiwiSU5GSU5JVEVfQ0FDSEUiLCJpc05hTiIsIkVycm9yIiwiZXJyIiwibWVzc2FnZSIsImluY2x1ZGVzIiwidGFncyIsImRlc2NyaXB0aW9uIiwidmFsaWRUYWdzIiwiaW52YWxpZFRhZ3MiLCJpIiwibGVuZ3RoIiwidGFnIiwicHVzaCIsInJlYXNvbiIsIk5FWFRfQ0FDSEVfVEFHX01BWF9MRU5HVEgiLCJORVhUX0NBQ0hFX1RBR19NQVhfSVRFTVMiLCJjb25zb2xlIiwid2FybiIsInNsaWNlIiwiam9pbiIsImxvZyIsInRyYWNrRmV0Y2hNZXRyaWMiLCJ3b3JrU3RvcmUiLCJjdHgiLCJzaG91bGRUcmFja0ZldGNoTWV0cmljcyIsImZldGNoTWV0cmljcyIsImVuZCIsInBlcmZvcm1hbmNlIiwidGltZU9yaWdpbiIsIm5vdyIsImlkeCIsIm5leHRGZXRjaElkIiwiY3JlYXRlQ2FjaGVkUHJlcmVuZGVyUmVzcG9uc2UiLCJyZXMiLCJjYWNoZUtleSIsImluY3JlbWVudGFsQ2FjaGVDb250ZXh0IiwiaW5jcmVtZW50YWxDYWNoZSIsInJldmFsaWRhdGUiLCJoYW5kbGVVbmxvY2siLCJib2R5QnVmZmVyIiwiYXJyYXlCdWZmZXIiLCJmZXRjaGVkRGF0YSIsImhlYWRlcnMiLCJPYmplY3QiLCJmcm9tRW50cmllcyIsImVudHJpZXMiLCJib2R5IiwiQnVmZmVyIiwiZnJvbSIsInRvU3RyaW5nIiwic3RhdHVzIiwidXJsIiwic2V0Iiwia2luZCIsIkNhY2hlZFJvdXRlS2luZCIsIkZFVENIIiwiZGF0YSIsIlJlc3BvbnNlIiwic3RhdHVzVGV4dCIsImNyZWF0ZUNhY2hlZER5bmFtaWNSZXNwb25zZSIsInNlcnZlckNvbXBvbmVudHNIbXJDYWNoZSIsImlucHV0Iiwic2lnbmFsIiwiY2xvbmVkMSIsImNsb25lZDIiLCJjbG9uZVJlc3BvbnNlIiwiY2FjaGVTZXRQcm9taXNlIiwidGhlbiIsImNhdGNoIiwiZXJyb3IiLCJhYm9ydGVkIiwiZmluYWxseSIsInBlbmRpbmdSZXZhbGlkYXRlS2V5IiwicGVuZGluZ1JldmFsaWRhdGVzIiwicGVuZGluZ1JldmFsaWRhdGVQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJvcmlnaW5GZXRjaCIsIndvcmtBc3luY1N0b3JhZ2UiLCJ3b3JrVW5pdEFzeW5jU3RvcmFnZSIsInBhdGNoZWQiLCJmZXRjaCIsImluaXQiLCJVUkwiLCJSZXF1ZXN0IiwidXNlcm5hbWUiLCJwYXNzd29yZCIsImZldGNoVXJsIiwiaHJlZiIsIm1ldGhvZCIsInRvVXBwZXJDYXNlIiwiaXNJbnRlcm5hbCIsIm5leHQiLCJpbnRlcm5hbCIsImhpZGVTcGFuIiwiTkVYVF9PVEVMX0ZFVENIX0RJU0FCTEVEIiwiZmV0Y2hTdGFydCIsImdldFN0b3JlIiwid29ya1VuaXRTdG9yZSIsImNhY2hlU2lnbmFsIiwiZ2V0Q2FjaGVTaWduYWwiLCJiZWdpblJlYWQiLCJyZXN1bHQiLCJnZXRUcmFjZXIiLCJ0cmFjZSIsIk5leHROb2RlU2VydmVyU3BhbiIsImludGVybmFsRmV0Y2giLCJBcHBSZW5kZXJTcGFuIiwiU3BhbktpbmQiLCJDTElFTlQiLCJzcGFuTmFtZSIsImZpbHRlciIsIkJvb2xlYW4iLCJhdHRyaWJ1dGVzIiwiaG9zdG5hbWUiLCJwb3J0IiwiZ2V0UmVxdWVzdE1ldGEiLCJpc0RyYWZ0TW9kZSIsImlzUmVxdWVzdElucHV0IiwiZmllbGQiLCJ2YWx1ZSIsImZpbmFsUmV2YWxpZGF0ZSIsImdldE5leHRGaWVsZCIsIm9yaWdpbmFsRmV0Y2hSZXZhbGlkYXRlIiwiY3VycmVudEZldGNoUmV2YWxpZGF0ZSIsInJldmFsaWRhdGVTdG9yZSIsInR5cGUiLCJBcnJheSIsImlzQXJyYXkiLCJjb2xsZWN0ZWRUYWdzIiwiaW1wbGljaXRUYWdzIiwicGFnZUZldGNoQ2FjaGVNb2RlIiwiZmV0Y2hDYWNoZSIsImlzVXNpbmdOb1N0b3JlIiwiaXNVbnN0YWJsZU5vU3RvcmUiLCJjdXJyZW50RmV0Y2hDYWNoZUNvbmZpZyIsImNhY2hlUmVhc29uIiwiY2FjaGVXYXJuaW5nIiwiaXNDb25mbGljdGluZ1JldmFsaWRhdGUiLCJoYXNFeHBsaWNpdEZldGNoQ2FjaGVPcHRPdXQiLCJub0ZldGNoQ29uZmlnQW5kRm9yY2VEeW5hbWljIiwiZm9yY2VEeW5hbWljIiwiX2hlYWRlcnMiLCJpbml0SGVhZGVycyIsImdldCIsIkhlYWRlcnMiLCJoYXNVbkNhY2hlYWJsZUhlYWRlciIsImlzVW5DYWNoZWFibGVNZXRob2QiLCJ0b0xvd2VyQ2FzZSIsImhhc05vRXhwbGljaXRDYWNoZUNvbmZpZyIsImF1dG9Ob0NhY2hlIiwiaXNJbXBsaWNpdEJ1aWxkVGltZUNhY2hlIiwiaXNCdWlsZFRpbWVQcmVyZW5kZXJpbmciLCJlbmRSZWFkIiwibWFrZUhhbmdpbmdQcm9taXNlIiwicmVuZGVyU2lnbmFsIiwiTk9ERV9FTlYiLCJzdGFnZWRSZW5kZXJpbmciLCJ3YWl0Rm9yU3RhZ2UiLCJSZW5kZXJTdGFnZSIsIkR5bmFtaWMiLCJmb3JjZVN0YXRpYyIsIm1hcmtDdXJyZW50U2NvcGVBc0R5bmFtaWMiLCJpc0NhY2hlYWJsZVJldmFsaWRhdGUiLCJpc0htclJlZnJlc2giLCJnZW5lcmF0ZUNhY2hlS2V5IiwiZmV0Y2hJZHgiLCJkb09yaWdpbmFsRmV0Y2giLCJpc1N0YWxlIiwiY2FjaGVSZWFzb25PdmVycmlkZSIsInJlcXVlc3RJbnB1dEZpZWxkcyIsInJlcUlucHV0IiwicmVxT3B0aW9ucyIsIl9vZ0JvZHkiLCJvdGhlcklucHV0IiwiY2xvbmVkSW5pdCIsImZldGNoVHlwZSIsInN0YXJ0IiwiY2FjaGVTdGF0dXMiLCJDQUNIRV9PTkVfWUVBUl9TRUNPTkRTIiwiaW5jcmVtZW50YWxDYWNoZUNvbmZpZyIsImlzRm9yZWdyb3VuZFJldmFsaWRhdGUiLCJpc0htclJlZnJlc2hDYWNoZSIsImNhY2hlZEZldGNoRGF0YSIsImxvY2siLCJlbnRyeSIsImlzT25EZW1hbmRSZXZhbGlkYXRlIiwiSW5jcmVtZW50YWxDYWNoZUtpbmQiLCJzb2Z0VGFncyIsImdldFRpbWVvdXRCb3VuZGFyeSIsImlzU3RhdGljR2VuZXJhdGlvbiIsInBlbmRpbmdSZXZhbGlkYXRlIiwicmVzcG9uc2UiLCJkZWZpbmVQcm9wZXJ0eSIsIl9fTkVYVF9DQUNIRV9DT01QT05FTlRTIiwiY2FjaGUiLCJoYXNOZXh0Q29uZmlnIiwicmV2YWxpZGF0ZWRSZXN1bHQiLCJwZW5kaW5nUmVzcG9uc2UiLCJyZXNwb25zZXMiLCJfX25leHRQYXRjaGVkIiwiX19uZXh0R2V0U3RhdGljU3RvcmUiLCJfbmV4dE9yaWdpbmFsRmV0Y2giLCJ3cml0YWJsZSIsIm9wdGlvbnMiLCJvcmlnaW5hbCIsImNyZWF0ZURlZHVwZUZldGNoIiwiY3VycmVudFRpbWVvdXRCb3VuZGFyeSIsInIiLCJzZXRUaW1lb3V0Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/patch-fetch.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/lib/postponed-request-body.js":
|
||
/*!*********************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/lib/postponed-request-body.js ***!
|
||
\*********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getMaxPostponedStateSize: function() {\n return getMaxPostponedStateSize;\n },\n getPostponedStateExceededErrorMessage: function() {\n return getPostponedStateExceededErrorMessage;\n },\n readBodyWithSizeLimit: function() {\n return readBodyWithSizeLimit;\n }\n});\nconst _sizelimit = __webpack_require__(/*! ../../shared/lib/size-limit */ \"(rsc)/./node_modules/next/dist/shared/lib/size-limit.js\");\nconst INVALID_MAX_POSTPONED_STATE_SIZE_ERROR_MESSAGE = 'maxPostponedStateSize must be a valid number (bytes) or filesize format string (e.g., \"5mb\")';\nfunction getMaxPostponedStateSize(configuredMaxPostponedStateSize) {\n const maxPostponedStateSize = configuredMaxPostponedStateSize ?? _sizelimit.DEFAULT_MAX_POSTPONED_STATE_SIZE;\n const maxPostponedStateSizeBytes = (0, _sizelimit.parseMaxPostponedStateSize)(configuredMaxPostponedStateSize);\n if (maxPostponedStateSizeBytes === undefined) {\n throw Object.defineProperty(new Error(INVALID_MAX_POSTPONED_STATE_SIZE_ERROR_MESSAGE), \"__NEXT_ERROR_CODE\", {\n value: \"E977\",\n enumerable: false,\n configurable: true\n });\n }\n return {\n maxPostponedStateSize,\n maxPostponedStateSizeBytes\n };\n}\nfunction getPostponedStateExceededErrorMessage(maxPostponedStateSize) {\n return `Postponed state exceeded ${maxPostponedStateSize} limit. ` + `To configure the limit, see: https://nextjs.org/docs/app/api-reference/config/next-config-js/max-postponed-state-size`;\n}\nfunction toBuffer(chunk) {\n return Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);\n}\nasync function readBodyWithSizeLimit(body, maxBodySizeBytes) {\n const chunks = [];\n let size = 0;\n for await (const chunk of body){\n const buffer = toBuffer(chunk);\n size += buffer.byteLength;\n if (size > maxBodySizeBytes) {\n return null;\n }\n chunks.push(buffer);\n }\n return Buffer.concat(chunks);\n}\n\n//# sourceMappingURL=postponed-request-body.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvcG9zdHBvbmVkLXJlcXVlc3QtYm9keS5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FJTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELG1CQUFtQixtQkFBTyxDQUFDLDRGQUE2QjtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsdUJBQXVCO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvcG9zdHBvbmVkLXJlcXVlc3QtYm9keS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGdldE1heFBvc3Rwb25lZFN0YXRlU2l6ZTogbnVsbCxcbiAgICBnZXRQb3N0cG9uZWRTdGF0ZUV4Y2VlZGVkRXJyb3JNZXNzYWdlOiBudWxsLFxuICAgIHJlYWRCb2R5V2l0aFNpemVMaW1pdDogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBnZXRNYXhQb3N0cG9uZWRTdGF0ZVNpemU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZ2V0TWF4UG9zdHBvbmVkU3RhdGVTaXplO1xuICAgIH0sXG4gICAgZ2V0UG9zdHBvbmVkU3RhdGVFeGNlZWRlZEVycm9yTWVzc2FnZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRQb3N0cG9uZWRTdGF0ZUV4Y2VlZGVkRXJyb3JNZXNzYWdlO1xuICAgIH0sXG4gICAgcmVhZEJvZHlXaXRoU2l6ZUxpbWl0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHJlYWRCb2R5V2l0aFNpemVMaW1pdDtcbiAgICB9XG59KTtcbmNvbnN0IF9zaXplbGltaXQgPSByZXF1aXJlKFwiLi4vLi4vc2hhcmVkL2xpYi9zaXplLWxpbWl0XCIpO1xuY29uc3QgSU5WQUxJRF9NQVhfUE9TVFBPTkVEX1NUQVRFX1NJWkVfRVJST1JfTUVTU0FHRSA9ICdtYXhQb3N0cG9uZWRTdGF0ZVNpemUgbXVzdCBiZSBhIHZhbGlkIG51bWJlciAoYnl0ZXMpIG9yIGZpbGVzaXplIGZvcm1hdCBzdHJpbmcgKGUuZy4sIFwiNW1iXCIpJztcbmZ1bmN0aW9uIGdldE1heFBvc3Rwb25lZFN0YXRlU2l6ZShjb25maWd1cmVkTWF4UG9zdHBvbmVkU3RhdGVTaXplKSB7XG4gICAgY29uc3QgbWF4UG9zdHBvbmVkU3RhdGVTaXplID0gY29uZmlndXJlZE1heFBvc3Rwb25lZFN0YXRlU2l6ZSA/PyBfc2l6ZWxpbWl0LkRFRkFVTFRfTUFYX1BPU1RQT05FRF9TVEFURV9TSVpFO1xuICAgIGNvbnN0IG1heFBvc3Rwb25lZFN0YXRlU2l6ZUJ5dGVzID0gKDAsIF9zaXplbGltaXQucGFyc2VNYXhQb3N0cG9uZWRTdGF0ZVNpemUpKGNvbmZpZ3VyZWRNYXhQb3N0cG9uZWRTdGF0ZVNpemUpO1xuICAgIGlmIChtYXhQb3N0cG9uZWRTdGF0ZVNpemVCeXRlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoSU5WQUxJRF9NQVhfUE9TVFBPTkVEX1NUQVRFX1NJWkVfRVJST1JfTUVTU0FHRSksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgdmFsdWU6IFwiRTk3N1wiLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIG1heFBvc3Rwb25lZFN0YXRlU2l6ZSxcbiAgICAgICAgbWF4UG9zdHBvbmVkU3RhdGVTaXplQnl0ZXNcbiAgICB9O1xufVxuZnVuY3Rpb24gZ2V0UG9zdHBvbmVkU3RhdGVFeGNlZWRlZEVycm9yTWVzc2FnZShtYXhQb3N0cG9uZWRTdGF0ZVNpemUpIHtcbiAgICByZXR1cm4gYFBvc3Rwb25lZCBzdGF0ZSBleGNlZWRlZCAke21heFBvc3Rwb25lZFN0YXRlU2l6ZX0gbGltaXQuIGAgKyBgVG8gY29uZmlndXJlIHRoZSBsaW1pdCwgc2VlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9jb25maWcvbmV4dC1jb25maWctanMvbWF4LXBvc3Rwb25lZC1zdGF0ZS1zaXplYDtcbn1cbmZ1bmN0aW9uIHRvQnVmZmVyKGNodW5rKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihjaHVuaykgPyBjaHVuayA6IEJ1ZmZlci5mcm9tKGNodW5rKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIHJlYWRCb2R5V2l0aFNpemVMaW1pdChib2R5LCBtYXhCb2R5U2l6ZUJ5dGVzKSB7XG4gICAgY29uc3QgY2h1bmtzID0gW107XG4gICAgbGV0IHNpemUgPSAwO1xuICAgIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgYm9keSl7XG4gICAgICAgIGNvbnN0IGJ1ZmZlciA9IHRvQnVmZmVyKGNodW5rKTtcbiAgICAgICAgc2l6ZSArPSBidWZmZXIuYnl0ZUxlbmd0aDtcbiAgICAgICAgaWYgKHNpemUgPiBtYXhCb2R5U2l6ZUJ5dGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjaHVua3MucHVzaChidWZmZXIpO1xuICAgIH1cbiAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChjaHVua3MpO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1wb3N0cG9uZWQtcmVxdWVzdC1ib2R5LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/postponed-request-body.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/lib/router-utils/is-postpone.js":
|
||
/*!***********************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/lib/router-utils/is-postpone.js ***!
|
||
\***********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"isPostpone\", ({\n enumerable: true,\n get: function() {\n return isPostpone;\n }\n}));\nconst REACT_POSTPONE_TYPE = Symbol.for('react.postpone');\nfunction isPostpone(error) {\n return typeof error === 'object' && error !== null && error.$$typeof === REACT_POSTPONE_TYPE;\n}\n\n//# sourceMappingURL=is-postpone.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvcm91dGVyLXV0aWxzL2lzLXBvc3Rwb25lLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsOENBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvcm91dGVyLXV0aWxzL2lzLXBvc3Rwb25lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiaXNQb3N0cG9uZVwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaXNQb3N0cG9uZTtcbiAgICB9XG59KTtcbmNvbnN0IFJFQUNUX1BPU1RQT05FX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5wb3N0cG9uZScpO1xuZnVuY3Rpb24gaXNQb3N0cG9uZShlcnJvcikge1xuICAgIHJldHVybiB0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmIGVycm9yICE9PSBudWxsICYmIGVycm9yLiQkdHlwZW9mID09PSBSRUFDVF9QT1NUUE9ORV9UWVBFO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1wb3N0cG9uZS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/router-utils/is-postpone.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/lib/server-action-request-meta.js":
|
||
/*!*************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/lib/server-action-request-meta.js ***!
|
||
\*************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getIsPossibleServerAction: function() {\n return getIsPossibleServerAction;\n },\n getServerActionRequestMetadata: function() {\n return getServerActionRequestMetadata;\n }\n});\nconst _approuterheaders = __webpack_require__(/*! ../../client/components/app-router-headers */ \"(rsc)/./node_modules/next/dist/client/components/app-router-headers.js\");\nfunction getServerActionRequestMetadata(req) {\n let actionId;\n let contentType;\n if (req.headers instanceof Headers) {\n actionId = req.headers.get(_approuterheaders.ACTION_HEADER) ?? null;\n contentType = req.headers.get('content-type');\n } else {\n actionId = req.headers[_approuterheaders.ACTION_HEADER] ?? null;\n contentType = req.headers['content-type'] ?? null;\n }\n // We don't actually support URL encoded actions, and the action handler will bail out if it sees one.\n // But we still want it to flow through to the action handler, to prevent changes in behavior when a regular\n // page component tries to handle a POST.\n const isURLEncodedAction = Boolean(req.method === 'POST' && contentType === 'application/x-www-form-urlencoded');\n const isMultipartAction = Boolean(req.method === 'POST' && (contentType == null ? void 0 : contentType.startsWith('multipart/form-data')));\n const isFetchAction = Boolean(actionId !== undefined && typeof actionId === 'string' && req.method === 'POST');\n const isPossibleServerAction = Boolean(isFetchAction || isURLEncodedAction || isMultipartAction);\n return {\n actionId,\n isURLEncodedAction,\n isMultipartAction,\n isFetchAction,\n isPossibleServerAction\n };\n}\nfunction getIsPossibleServerAction(req) {\n return getServerActionRequestMetadata(req).isPossibleServerAction;\n}\n\n//# sourceMappingURL=server-action-request-meta.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvc2VydmVyLWFjdGlvbi1yZXF1ZXN0LW1ldGEuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBR0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsMEJBQTBCLG1CQUFPLENBQUMsMEhBQTRDO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvc2VydmVyLWFjdGlvbi1yZXF1ZXN0LW1ldGEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBnZXRJc1Bvc3NpYmxlU2VydmVyQWN0aW9uOiBudWxsLFxuICAgIGdldFNlcnZlckFjdGlvblJlcXVlc3RNZXRhZGF0YTogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBnZXRJc1Bvc3NpYmxlU2VydmVyQWN0aW9uOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldElzUG9zc2libGVTZXJ2ZXJBY3Rpb247XG4gICAgfSxcbiAgICBnZXRTZXJ2ZXJBY3Rpb25SZXF1ZXN0TWV0YWRhdGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZ2V0U2VydmVyQWN0aW9uUmVxdWVzdE1ldGFkYXRhO1xuICAgIH1cbn0pO1xuY29uc3QgX2FwcHJvdXRlcmhlYWRlcnMgPSByZXF1aXJlKFwiLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvYXBwLXJvdXRlci1oZWFkZXJzXCIpO1xuZnVuY3Rpb24gZ2V0U2VydmVyQWN0aW9uUmVxdWVzdE1ldGFkYXRhKHJlcSkge1xuICAgIGxldCBhY3Rpb25JZDtcbiAgICBsZXQgY29udGVudFR5cGU7XG4gICAgaWYgKHJlcS5oZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycykge1xuICAgICAgICBhY3Rpb25JZCA9IHJlcS5oZWFkZXJzLmdldChfYXBwcm91dGVyaGVhZGVycy5BQ1RJT05fSEVBREVSKSA/PyBudWxsO1xuICAgICAgICBjb250ZW50VHlwZSA9IHJlcS5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgYWN0aW9uSWQgPSByZXEuaGVhZGVyc1tfYXBwcm91dGVyaGVhZGVycy5BQ1RJT05fSEVBREVSXSA/PyBudWxsO1xuICAgICAgICBjb250ZW50VHlwZSA9IHJlcS5oZWFkZXJzWydjb250ZW50LXR5cGUnXSA/PyBudWxsO1xuICAgIH1cbiAgICAvLyBXZSBkb24ndCBhY3R1YWxseSBzdXBwb3J0IFVSTCBlbmNvZGVkIGFjdGlvbnMsIGFuZCB0aGUgYWN0aW9uIGhhbmRsZXIgd2lsbCBiYWlsIG91dCBpZiBpdCBzZWVzIG9uZS5cbiAgICAvLyBCdXQgd2Ugc3RpbGwgd2FudCBpdCB0byBmbG93IHRocm91Z2ggdG8gdGhlIGFjdGlvbiBoYW5kbGVyLCB0byBwcmV2ZW50IGNoYW5nZXMgaW4gYmVoYXZpb3Igd2hlbiBhIHJlZ3VsYXJcbiAgICAvLyBwYWdlIGNvbXBvbmVudCB0cmllcyB0byBoYW5kbGUgYSBQT1NULlxuICAgIGNvbnN0IGlzVVJMRW5jb2RlZEFjdGlvbiA9IEJvb2xlYW4ocmVxLm1ldGhvZCA9PT0gJ1BPU1QnICYmIGNvbnRlbnRUeXBlID09PSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyk7XG4gICAgY29uc3QgaXNNdWx0aXBhcnRBY3Rpb24gPSBCb29sZWFuKHJlcS5tZXRob2QgPT09ICdQT1NUJyAmJiAoY29udGVudFR5cGUgPT0gbnVsbCA/IHZvaWQgMCA6IGNvbnRlbnRUeXBlLnN0YXJ0c1dpdGgoJ211bHRpcGFydC9mb3JtLWRhdGEnKSkpO1xuICAgIGNvbnN0IGlzRmV0Y2hBY3Rpb24gPSBCb29sZWFuKGFjdGlvbklkICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGFjdGlvbklkID09PSAnc3RyaW5nJyAmJiByZXEubWV0aG9kID09PSAnUE9TVCcpO1xuICAgIGNvbnN0IGlzUG9zc2libGVTZXJ2ZXJBY3Rpb24gPSBCb29sZWFuKGlzRmV0Y2hBY3Rpb24gfHwgaXNVUkxFbmNvZGVkQWN0aW9uIHx8IGlzTXVsdGlwYXJ0QWN0aW9uKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBhY3Rpb25JZCxcbiAgICAgICAgaXNVUkxFbmNvZGVkQWN0aW9uLFxuICAgICAgICBpc011bHRpcGFydEFjdGlvbixcbiAgICAgICAgaXNGZXRjaEFjdGlvbixcbiAgICAgICAgaXNQb3NzaWJsZVNlcnZlckFjdGlvblxuICAgIH07XG59XG5mdW5jdGlvbiBnZXRJc1Bvc3NpYmxlU2VydmVyQWN0aW9uKHJlcSkge1xuICAgIHJldHVybiBnZXRTZXJ2ZXJBY3Rpb25SZXF1ZXN0TWV0YWRhdGEocmVxKS5pc1Bvc3NpYmxlU2VydmVyQWN0aW9uO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1zZXJ2ZXItYWN0aW9uLXJlcXVlc3QtbWV0YS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/server-action-request-meta.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/lib/source-maps.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/next/dist/server/lib/source-maps.js ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n devirtualizeReactServerURL: function() {\n return devirtualizeReactServerURL;\n },\n filterStackFrameDEV: function() {\n return filterStackFrameDEV;\n },\n findApplicableSourceMapPayload: function() {\n return findApplicableSourceMapPayload;\n },\n findSourceMapURLDEV: function() {\n return findSourceMapURLDEV;\n },\n ignoreListAnonymousStackFramesIfSandwiched: function() {\n return ignoreListAnonymousStackFramesIfSandwiched;\n },\n sourceMapIgnoreListsEverything: function() {\n return sourceMapIgnoreListsEverything;\n }\n});\nconst _lrucache = __webpack_require__(/*! ./lru-cache */ \"(rsc)/./node_modules/next/dist/server/lib/lru-cache.js\");\nfunction noSourceMap() {\n return undefined;\n}\n// Edge runtime does not implement `module`\nconst findSourceMap = false ? 0 : (__webpack_require__(/*! module */ \"module\").findSourceMap);\nfunction sourceMapIgnoreListsEverything(sourceMap) {\n return sourceMap.ignoreList !== undefined && sourceMap.sources.length === sourceMap.ignoreList.length;\n}\nfunction findApplicableSourceMapPayload(line0, column0, payload) {\n if ('sections' in payload) {\n if (payload.sections.length === 0) {\n return undefined;\n }\n // Sections must not overlap and must be sorted: https://tc39.es/source-map/#section-object\n // Therefore the last section that has an offset less than or equal to the frame is the applicable one.\n const sections = payload.sections;\n let left = 0;\n let right = sections.length - 1;\n let result = null;\n while(left <= right){\n // fast Math.floor\n const middle = ~~((left + right) / 2);\n const section = sections[middle];\n const offset = section.offset;\n if (offset.line < line0 || offset.line === line0 && offset.column <= column0) {\n result = section;\n left = middle + 1;\n } else {\n right = middle - 1;\n }\n }\n return result === null ? undefined : result.map;\n } else {\n return payload;\n }\n}\nconst didWarnAboutInvalidSourceMapDEV = new Set();\nfunction filterStackFrameDEV(sourceURL, functionName, line1, column1) {\n if (sourceURL === '') {\n // The default implementation filters out <anonymous> stack frames\n // but we want to retain them because current Server Components and\n // built-in Components in parent stacks don't have source location.\n // Filter out frames that show up in Promises to get good names in React's\n // Server Request track until we come up with a better heuristic.\n return functionName !== 'new Promise';\n }\n if (sourceURL.startsWith('node:') || sourceURL.includes('node_modules')) {\n return false;\n }\n try {\n // Node.js loads source maps eagerly so this call is cheap.\n // TODO: ESM sourcemaps are O(1) but CommonJS sourcemaps are O(Number of CJS modules).\n // Make sure this doesn't adversely affect performance when CJS is used by Next.js.\n const sourceMap = findSourceMap(sourceURL);\n if (sourceMap === undefined) {\n // No source map assoicated.\n // TODO: Node.js types should reflect that `findSourceMap` can return `undefined`.\n return true;\n }\n const sourceMapPayload = findApplicableSourceMapPayload(line1 - 1, column1 - 1, sourceMap.payload);\n if (sourceMapPayload === undefined) {\n // No source map section applicable to the frame.\n return true;\n }\n return !sourceMapIgnoreListsEverything(sourceMapPayload);\n } catch (cause) {\n if (true) {\n // TODO: Share cache with patch-error-inspect\n if (!didWarnAboutInvalidSourceMapDEV.has(sourceURL)) {\n didWarnAboutInvalidSourceMapDEV.add(sourceURL);\n // We should not log an actual error instance here because that will re-enter\n // this codepath during error inspection and could lead to infinite recursion.\n console.error(`${sourceURL}: Invalid source map. Only conformant source maps can be used to filter stack frames. Cause: ${cause}`);\n }\n }\n return true;\n }\n}\nconst invalidSourceMap = Symbol('invalid-source-map');\nconst sourceMapURLs = new _lrucache.LRUCache(512 * 1024 * 1024, (url)=>url === invalidSourceMap ? // so that we don't create a huge cache with empty source maps.\n 8 * 1024 : url.length);\nfunction findSourceMapURLDEV(scriptNameOrSourceURL) {\n let sourceMapURL = sourceMapURLs.get(scriptNameOrSourceURL);\n if (sourceMapURL === undefined) {\n let sourceMapPayload;\n try {\n var _findSourceMap;\n sourceMapPayload = (_findSourceMap = findSourceMap(scriptNameOrSourceURL)) == null ? void 0 : _findSourceMap.payload;\n } catch (cause) {\n console.error(`${scriptNameOrSourceURL}: Invalid source map. Only conformant source maps can be used to find the original code. Cause: ${cause}`);\n }\n if (sourceMapPayload === undefined) {\n sourceMapURL = invalidSourceMap;\n } else {\n // TODO: Might be more efficient to extract the relevant section from Index Maps.\n // Unclear if that search is worth the smaller payload we have to stringify.\n const sourceMapJSON = JSON.stringify(sourceMapPayload);\n const sourceMapURLData = Buffer.from(sourceMapJSON, 'utf8').toString('base64');\n sourceMapURL = `data:application/json;base64,${sourceMapURLData}`;\n }\n sourceMapURLs.set(scriptNameOrSourceURL, sourceMapURL);\n }\n return sourceMapURL === invalidSourceMap ? null : sourceMapURL;\n}\nfunction devirtualizeReactServerURL(sourceURL) {\n if (sourceURL.startsWith('about://React/')) {\n // about://React/Server/file://<filename>?42 => file://<filename>\n const envIdx = sourceURL.indexOf('/', 'about://React/'.length);\n const suffixIdx = sourceURL.lastIndexOf('?');\n if (envIdx > -1 && suffixIdx > -1) {\n return decodeURI(sourceURL.slice(envIdx + 1, suffixIdx));\n }\n }\n return sourceURL;\n}\nfunction isAnonymousFrameLikelyJSNative(methodName) {\n // Anonymous frames can also be produced in React parent stacks either from\n // host components or Server Components. We don't want to ignore those.\n // This could hide user-space methods that are named like native JS methods but\n // should you really do that?\n return(// e.g. JSON.parse\n methodName.startsWith('JSON.') || // E.g. Promise.withResolves\n methodName.startsWith('Function.') || // various JS built-ins\n methodName.startsWith('Promise.') || methodName.startsWith('Array.') || methodName.startsWith('Set.') || methodName.startsWith('Map.'));\n}\nfunction ignoreListAnonymousStackFramesIfSandwiched(frames, isAnonymousFrame, isIgnoredFrame, getMethodName, /** only passes frames for which `isAnonymousFrame` and their method is a native JS method or `isIgnoredFrame` return true */ ignoreFrame) {\n for(let i = 1; i < frames.length; i++){\n const currentFrame = frames[i];\n if (!(isAnonymousFrame(currentFrame) && isAnonymousFrameLikelyJSNative(getMethodName(currentFrame)))) {\n continue;\n }\n const previousFrameIsIgnored = isIgnoredFrame(frames[i - 1]);\n if (previousFrameIsIgnored && i < frames.length - 1) {\n let ignoreSandwich = false;\n let j = i + 1;\n for(j; j < frames.length; j++){\n const nextFrame = frames[j];\n const nextFrameIsAnonymous = isAnonymousFrame(nextFrame) && isAnonymousFrameLikelyJSNative(getMethodName(nextFrame));\n if (nextFrameIsAnonymous) {\n continue;\n }\n const nextFrameIsIgnored = isIgnoredFrame(nextFrame);\n if (nextFrameIsIgnored) {\n ignoreSandwich = true;\n break;\n }\n }\n if (ignoreSandwich) {\n for(i; i < j; i++){\n ignoreFrame(frames[i]);\n }\n }\n }\n }\n}\n\n//# sourceMappingURL=source-maps.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvc291cmNlLW1hcHMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBT0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxrQkFBa0IsbUJBQU8sQ0FBQywyRUFBYTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixNQUFtQyxHQUFHLENBQVcsR0FBRywyREFBK0I7QUFDekc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTixZQUFZLElBQXFDO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsVUFBVSwrRkFBK0YsTUFBTTtBQUNoSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsNkJBQTZCLHNCQUFzQixrR0FBa0csTUFBTTtBQUMzSjtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBa0QsU0FBUyxpQkFBaUI7QUFDNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG1CQUFtQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG1CQUFtQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsT0FBTztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvc291cmNlLW1hcHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBkZXZpcnR1YWxpemVSZWFjdFNlcnZlclVSTDogbnVsbCxcbiAgICBmaWx0ZXJTdGFja0ZyYW1lREVWOiBudWxsLFxuICAgIGZpbmRBcHBsaWNhYmxlU291cmNlTWFwUGF5bG9hZDogbnVsbCxcbiAgICBmaW5kU291cmNlTWFwVVJMREVWOiBudWxsLFxuICAgIGlnbm9yZUxpc3RBbm9ueW1vdXNTdGFja0ZyYW1lc0lmU2FuZHdpY2hlZDogbnVsbCxcbiAgICBzb3VyY2VNYXBJZ25vcmVMaXN0c0V2ZXJ5dGhpbmc6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgZGV2aXJ0dWFsaXplUmVhY3RTZXJ2ZXJVUkw6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZGV2aXJ0dWFsaXplUmVhY3RTZXJ2ZXJVUkw7XG4gICAgfSxcbiAgICBmaWx0ZXJTdGFja0ZyYW1lREVWOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGZpbHRlclN0YWNrRnJhbWVERVY7XG4gICAgfSxcbiAgICBmaW5kQXBwbGljYWJsZVNvdXJjZU1hcFBheWxvYWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZmluZEFwcGxpY2FibGVTb3VyY2VNYXBQYXlsb2FkO1xuICAgIH0sXG4gICAgZmluZFNvdXJjZU1hcFVSTERFVjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBmaW5kU291cmNlTWFwVVJMREVWO1xuICAgIH0sXG4gICAgaWdub3JlTGlzdEFub255bW91c1N0YWNrRnJhbWVzSWZTYW5kd2ljaGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGlnbm9yZUxpc3RBbm9ueW1vdXNTdGFja0ZyYW1lc0lmU2FuZHdpY2hlZDtcbiAgICB9LFxuICAgIHNvdXJjZU1hcElnbm9yZUxpc3RzRXZlcnl0aGluZzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzb3VyY2VNYXBJZ25vcmVMaXN0c0V2ZXJ5dGhpbmc7XG4gICAgfVxufSk7XG5jb25zdCBfbHJ1Y2FjaGUgPSByZXF1aXJlKFwiLi9scnUtY2FjaGVcIik7XG5mdW5jdGlvbiBub1NvdXJjZU1hcCgpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuLy8gRWRnZSBydW50aW1lIGRvZXMgbm90IGltcGxlbWVudCBgbW9kdWxlYFxuY29uc3QgZmluZFNvdXJjZU1hcCA9IHByb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSA9PT0gJ2VkZ2UnID8gbm9Tb3VyY2VNYXAgOiByZXF1aXJlKCdtb2R1bGUnKS5maW5kU291cmNlTWFwO1xuZnVuY3Rpb24gc291cmNlTWFwSWdub3JlTGlzdHNFdmVyeXRoaW5nKHNvdXJjZU1hcCkge1xuICAgIHJldHVybiBzb3VyY2VNYXAuaWdub3JlTGlzdCAhPT0gdW5kZWZpbmVkICYmIHNvdXJjZU1hcC5zb3VyY2VzLmxlbmd0aCA9PT0gc291cmNlTWFwLmlnbm9yZUxpc3QubGVuZ3RoO1xufVxuZnVuY3Rpb24gZmluZEFwcGxpY2FibGVTb3VyY2VNYXBQYXlsb2FkKGxpbmUwLCBjb2x1bW4wLCBwYXlsb2FkKSB7XG4gICAgaWYgKCdzZWN0aW9ucycgaW4gcGF5bG9hZCkge1xuICAgICAgICBpZiAocGF5bG9hZC5zZWN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU2VjdGlvbnMgbXVzdCBub3Qgb3ZlcmxhcCBhbmQgbXVzdCBiZSBzb3J0ZWQ6IGh0dHBzOi8vdGMzOS5lcy9zb3VyY2UtbWFwLyNzZWN0aW9uLW9iamVjdFxuICAgICAgICAvLyBUaGVyZWZvcmUgdGhlIGxhc3Qgc2VjdGlvbiB0aGF0IGhhcyBhbiBvZmZzZXQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBmcmFtZSBpcyB0aGUgYXBwbGljYWJsZSBvbmUuXG4gICAgICAgIGNvbnN0IHNlY3Rpb25zID0gcGF5bG9hZC5zZWN0aW9ucztcbiAgICAgICAgbGV0IGxlZnQgPSAwO1xuICAgICAgICBsZXQgcmlnaHQgPSBzZWN0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDtcbiAgICAgICAgd2hpbGUobGVmdCA8PSByaWdodCl7XG4gICAgICAgICAgICAvLyBmYXN0IE1hdGguZmxvb3JcbiAgICAgICAgICAgIGNvbnN0IG1pZGRsZSA9IH5+KChsZWZ0ICsgcmlnaHQpIC8gMik7XG4gICAgICAgICAgICBjb25zdCBzZWN0aW9uID0gc2VjdGlvbnNbbWlkZGxlXTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IHNlY3Rpb24ub2Zmc2V0O1xuICAgICAgICAgICAgaWYgKG9mZnNldC5saW5lIDwgbGluZTAgfHwgb2Zmc2V0LmxpbmUgPT09IGxpbmUwICYmIG9mZnNldC5jb2x1bW4gPD0gY29sdW1uMCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlY3Rpb247XG4gICAgICAgICAgICAgICAgbGVmdCA9IG1pZGRsZSArIDE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJpZ2h0ID0gbWlkZGxlIC0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0ID09PSBudWxsID8gdW5kZWZpbmVkIDogcmVzdWx0Lm1hcDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9XG59XG5jb25zdCBkaWRXYXJuQWJvdXRJbnZhbGlkU291cmNlTWFwREVWID0gbmV3IFNldCgpO1xuZnVuY3Rpb24gZmlsdGVyU3RhY2tGcmFtZURFVihzb3VyY2VVUkwsIGZ1bmN0aW9uTmFtZSwgbGluZTEsIGNvbHVtbjEpIHtcbiAgICBpZiAoc291cmNlVVJMID09PSAnJykge1xuICAgICAgICAvLyBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmaWx0ZXJzIG91dCA8YW5vbnltb3VzPiBzdGFjayBmcmFtZXNcbiAgICAgICAgLy8gYnV0IHdlIHdhbnQgdG8gcmV0YWluIHRoZW0gYmVjYXVzZSBjdXJyZW50IFNlcnZlciBDb21wb25lbnRzIGFuZFxuICAgICAgICAvLyBidWlsdC1pbiBDb21wb25lbnRzIGluIHBhcmVudCBzdGFja3MgZG9uJ3QgaGF2ZSBzb3VyY2UgbG9jYXRpb24uXG4gICAgICAgIC8vIEZpbHRlciBvdXQgZnJhbWVzIHRoYXQgc2hvdyB1cCBpbiBQcm9taXNlcyB0byBnZXQgZ29vZCBuYW1lcyBpbiBSZWFjdCdzXG4gICAgICAgIC8vIFNlcnZlciBSZXF1ZXN0IHRyYWNrIHVudGlsIHdlIGNvbWUgdXAgd2l0aCBhIGJldHRlciBoZXVyaXN0aWMuXG4gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWUgIT09ICduZXcgUHJvbWlzZSc7XG4gICAgfVxuICAgIGlmIChzb3VyY2VVUkwuc3RhcnRzV2l0aCgnbm9kZTonKSB8fCBzb3VyY2VVUkwuaW5jbHVkZXMoJ25vZGVfbW9kdWxlcycpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gTm9kZS5qcyBsb2FkcyBzb3VyY2UgbWFwcyBlYWdlcmx5IHNvIHRoaXMgY2FsbCBpcyBjaGVhcC5cbiAgICAgICAgLy8gVE9ETzogRVNNIHNvdXJjZW1hcHMgYXJlIE8oMSkgYnV0IENvbW1vbkpTIHNvdXJjZW1hcHMgYXJlIE8oTnVtYmVyIG9mIENKUyBtb2R1bGVzKS5cbiAgICAgICAgLy8gTWFrZSBzdXJlIHRoaXMgZG9lc24ndCBhZHZlcnNlbHkgYWZmZWN0IHBlcmZvcm1hbmNlIHdoZW4gQ0pTIGlzIHVzZWQgYnkgTmV4dC5qcy5cbiAgICAgICAgY29uc3Qgc291cmNlTWFwID0gZmluZFNvdXJjZU1hcChzb3VyY2VVUkwpO1xuICAgICAgICBpZiAoc291cmNlTWFwID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIE5vIHNvdXJjZSBtYXAgYXNzb2ljYXRlZC5cbiAgICAgICAgICAgIC8vIFRPRE86IE5vZGUuanMgdHlwZXMgc2hvdWxkIHJlZmxlY3QgdGhhdCBgZmluZFNvdXJjZU1hcGAgY2FuIHJldHVybiBgdW5kZWZpbmVkYC5cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNvdXJjZU1hcFBheWxvYWQgPSBmaW5kQXBwbGljYWJsZVNvdXJjZU1hcFBheWxvYWQobGluZTEgLSAxLCBjb2x1bW4xIC0gMSwgc291cmNlTWFwLnBheWxvYWQpO1xuICAgICAgICBpZiAoc291cmNlTWFwUGF5bG9hZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBObyBzb3VyY2UgbWFwIHNlY3Rpb24gYXBwbGljYWJsZSB0byB0aGUgZnJhbWUuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIXNvdXJjZU1hcElnbm9yZUxpc3RzRXZlcnl0aGluZyhzb3VyY2VNYXBQYXlsb2FkKTtcbiAgICB9IGNhdGNoIChjYXVzZSkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgLy8gVE9ETzogU2hhcmUgY2FjaGUgd2l0aCBwYXRjaC1lcnJvci1pbnNwZWN0XG4gICAgICAgICAgICBpZiAoIWRpZFdhcm5BYm91dEludmFsaWRTb3VyY2VNYXBERVYuaGFzKHNvdXJjZVVSTCkpIHtcbiAgICAgICAgICAgICAgICBkaWRXYXJuQWJvdXRJbnZhbGlkU291cmNlTWFwREVWLmFkZChzb3VyY2VVUkwpO1xuICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBub3QgbG9nIGFuIGFjdHVhbCBlcnJvciBpbnN0YW5jZSBoZXJlIGJlY2F1c2UgdGhhdCB3aWxsIHJlLWVudGVyXG4gICAgICAgICAgICAgICAgLy8gdGhpcyBjb2RlcGF0aCBkdXJpbmcgZXJyb3IgaW5zcGVjdGlvbiBhbmQgY291bGQgbGVhZCB0byBpbmZpbml0ZSByZWN1cnNpb24uXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgJHtzb3VyY2VVUkx9OiBJbnZhbGlkIHNvdXJjZSBtYXAuIE9ubHkgY29uZm9ybWFudCBzb3VyY2UgbWFwcyBjYW4gYmUgdXNlZCB0byBmaWx0ZXIgc3RhY2sgZnJhbWVzLiBDYXVzZTogJHtjYXVzZX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG5jb25zdCBpbnZhbGlkU291cmNlTWFwID0gU3ltYm9sKCdpbnZhbGlkLXNvdXJjZS1tYXAnKTtcbmNvbnN0IHNvdXJjZU1hcFVSTHMgPSBuZXcgX2xydWNhY2hlLkxSVUNhY2hlKDUxMiAqIDEwMjQgKiAxMDI0LCAodXJsKT0+dXJsID09PSBpbnZhbGlkU291cmNlTWFwID8gLy8gc28gdGhhdCB3ZSBkb24ndCBjcmVhdGUgYSBodWdlIGNhY2hlIHdpdGggZW1wdHkgc291cmNlIG1hcHMuXG4gICAgOCAqIDEwMjQgOiB1cmwubGVuZ3RoKTtcbmZ1bmN0aW9uIGZpbmRTb3VyY2VNYXBVUkxERVYoc2NyaXB0TmFtZU9yU291cmNlVVJMKSB7XG4gICAgbGV0IHNvdXJjZU1hcFVSTCA9IHNvdXJjZU1hcFVSTHMuZ2V0KHNjcmlwdE5hbWVPclNvdXJjZVVSTCk7XG4gICAgaWYgKHNvdXJjZU1hcFVSTCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxldCBzb3VyY2VNYXBQYXlsb2FkO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIF9maW5kU291cmNlTWFwO1xuICAgICAgICAgICAgc291cmNlTWFwUGF5bG9hZCA9IChfZmluZFNvdXJjZU1hcCA9IGZpbmRTb3VyY2VNYXAoc2NyaXB0TmFtZU9yU291cmNlVVJMKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9maW5kU291cmNlTWFwLnBheWxvYWQ7XG4gICAgICAgIH0gY2F0Y2ggKGNhdXNlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke3NjcmlwdE5hbWVPclNvdXJjZVVSTH06IEludmFsaWQgc291cmNlIG1hcC4gT25seSBjb25mb3JtYW50IHNvdXJjZSBtYXBzIGNhbiBiZSB1c2VkIHRvIGZpbmQgdGhlIG9yaWdpbmFsIGNvZGUuIENhdXNlOiAke2NhdXNlfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzb3VyY2VNYXBQYXlsb2FkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHNvdXJjZU1hcFVSTCA9IGludmFsaWRTb3VyY2VNYXA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUT0RPOiBNaWdodCBiZSBtb3JlIGVmZmljaWVudCB0byBleHRyYWN0IHRoZSByZWxldmFudCBzZWN0aW9uIGZyb20gSW5kZXggTWFwcy5cbiAgICAgICAgICAgIC8vIFVuY2xlYXIgaWYgdGhhdCBzZWFyY2ggaXMgd29ydGggdGhlIHNtYWxsZXIgcGF5bG9hZCB3ZSBoYXZlIHRvIHN0cmluZ2lmeS5cbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZU1hcEpTT04gPSBKU09OLnN0cmluZ2lmeShzb3VyY2VNYXBQYXlsb2FkKTtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZU1hcFVSTERhdGEgPSBCdWZmZXIuZnJvbShzb3VyY2VNYXBKU09OLCAndXRmOCcpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgICAgICAgIHNvdXJjZU1hcFVSTCA9IGBkYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LCR7c291cmNlTWFwVVJMRGF0YX1gO1xuICAgICAgICB9XG4gICAgICAgIHNvdXJjZU1hcFVSTHMuc2V0KHNjcmlwdE5hbWVPclNvdXJjZVVSTCwgc291cmNlTWFwVVJMKTtcbiAgICB9XG4gICAgcmV0dXJuIHNvdXJjZU1hcFVSTCA9PT0gaW52YWxpZFNvdXJjZU1hcCA/IG51bGwgOiBzb3VyY2VNYXBVUkw7XG59XG5mdW5jdGlvbiBkZXZpcnR1YWxpemVSZWFjdFNlcnZlclVSTChzb3VyY2VVUkwpIHtcbiAgICBpZiAoc291cmNlVVJMLnN0YXJ0c1dpdGgoJ2Fib3V0Oi8vUmVhY3QvJykpIHtcbiAgICAgICAgLy8gYWJvdXQ6Ly9SZWFjdC9TZXJ2ZXIvZmlsZTovLzxmaWxlbmFtZT4/NDIgPT4gZmlsZTovLzxmaWxlbmFtZT5cbiAgICAgICAgY29uc3QgZW52SWR4ID0gc291cmNlVVJMLmluZGV4T2YoJy8nLCAnYWJvdXQ6Ly9SZWFjdC8nLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IHN1ZmZpeElkeCA9IHNvdXJjZVVSTC5sYXN0SW5kZXhPZignPycpO1xuICAgICAgICBpZiAoZW52SWR4ID4gLTEgJiYgc3VmZml4SWR4ID4gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWNvZGVVUkkoc291cmNlVVJMLnNsaWNlKGVudklkeCArIDEsIHN1ZmZpeElkeCkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2VVUkw7XG59XG5mdW5jdGlvbiBpc0Fub255bW91c0ZyYW1lTGlrZWx5SlNOYXRpdmUobWV0aG9kTmFtZSkge1xuICAgIC8vIEFub255bW91cyBmcmFtZXMgY2FuIGFsc28gYmUgcHJvZHVjZWQgaW4gUmVhY3QgcGFyZW50IHN0YWNrcyBlaXRoZXIgZnJvbVxuICAgIC8vIGhvc3QgY29tcG9uZW50cyBvciBTZXJ2ZXIgQ29tcG9uZW50cy4gV2UgZG9uJ3Qgd2FudCB0byBpZ25vcmUgdGhvc2UuXG4gICAgLy8gVGhpcyBjb3VsZCBoaWRlIHVzZXItc3BhY2UgbWV0aG9kcyB0aGF0IGFyZSBuYW1lZCBsaWtlIG5hdGl2ZSBKUyBtZXRob2RzIGJ1dFxuICAgIC8vIHNob3VsZCB5b3UgcmVhbGx5IGRvIHRoYXQ/XG4gICAgcmV0dXJuKC8vIGUuZy4gSlNPTi5wYXJzZVxuICAgIG1ldGhvZE5hbWUuc3RhcnRzV2l0aCgnSlNPTi4nKSB8fCAvLyBFLmcuIFByb21pc2Uud2l0aFJlc29sdmVzXG4gICAgbWV0aG9kTmFtZS5zdGFydHNXaXRoKCdGdW5jdGlvbi4nKSB8fCAvLyB2YXJpb3VzIEpTIGJ1aWx0LWluc1xuICAgIG1ldGhvZE5hbWUuc3RhcnRzV2l0aCgnUHJvbWlzZS4nKSB8fCBtZXRob2ROYW1lLnN0YXJ0c1dpdGgoJ0FycmF5LicpIHx8IG1ldGhvZE5hbWUuc3RhcnRzV2l0aCgnU2V0LicpIHx8IG1ldGhvZE5hbWUuc3RhcnRzV2l0aCgnTWFwLicpKTtcbn1cbmZ1bmN0aW9uIGlnbm9yZUxpc3RBbm9ueW1vdXNTdGFja0ZyYW1lc0lmU2FuZHdpY2hlZChmcmFtZXMsIGlzQW5vbnltb3VzRnJhbWUsIGlzSWdub3JlZEZyYW1lLCBnZXRNZXRob2ROYW1lLCAvKiogb25seSBwYXNzZXMgZnJhbWVzIGZvciB3aGljaCBgaXNBbm9ueW1vdXNGcmFtZWAgYW5kIHRoZWlyIG1ldGhvZCBpcyBhIG5hdGl2ZSBKUyBtZXRob2Qgb3IgYGlzSWdub3JlZEZyYW1lYCByZXR1cm4gdHJ1ZSAqLyBpZ25vcmVGcmFtZSkge1xuICAgIGZvcihsZXQgaSA9IDE7IGkgPCBmcmFtZXMubGVuZ3RoOyBpKyspe1xuICAgICAgICBjb25zdCBjdXJyZW50RnJhbWUgPSBmcmFtZXNbaV07XG4gICAgICAgIGlmICghKGlzQW5vbnltb3VzRnJhbWUoY3VycmVudEZyYW1lKSAmJiBpc0Fub255bW91c0ZyYW1lTGlrZWx5SlNOYXRpdmUoZ2V0TWV0aG9kTmFtZShjdXJyZW50RnJhbWUpKSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByZXZpb3VzRnJhbWVJc0lnbm9yZWQgPSBpc0lnbm9yZWRGcmFtZShmcmFtZXNbaSAtIDFdKTtcbiAgICAgICAgaWYgKHByZXZpb3VzRnJhbWVJc0lnbm9yZWQgJiYgaSA8IGZyYW1lcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBsZXQgaWdub3JlU2FuZHdpY2ggPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBqID0gaSArIDE7XG4gICAgICAgICAgICBmb3IoajsgaiA8IGZyYW1lcy5sZW5ndGg7IGorKyl7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dEZyYW1lID0gZnJhbWVzW2pdO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRGcmFtZUlzQW5vbnltb3VzID0gaXNBbm9ueW1vdXNGcmFtZShuZXh0RnJhbWUpICYmIGlzQW5vbnltb3VzRnJhbWVMaWtlbHlKU05hdGl2ZShnZXRNZXRob2ROYW1lKG5leHRGcmFtZSkpO1xuICAgICAgICAgICAgICAgIGlmIChuZXh0RnJhbWVJc0Fub255bW91cykge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dEZyYW1lSXNJZ25vcmVkID0gaXNJZ25vcmVkRnJhbWUobmV4dEZyYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAobmV4dEZyYW1lSXNJZ25vcmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlnbm9yZVNhbmR3aWNoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlnbm9yZVNhbmR3aWNoKSB7XG4gICAgICAgICAgICAgICAgZm9yKGk7IGkgPCBqOyBpKyspe1xuICAgICAgICAgICAgICAgICAgICBpZ25vcmVGcmFtZShmcmFtZXNbaV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c291cmNlLW1hcHMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/source-maps.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/lib/streaming-metadata.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/lib/streaming-metadata.js ***!
|
||
\*****************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n isHtmlBotRequest: function() {\n return isHtmlBotRequest;\n },\n shouldServeStreamingMetadata: function() {\n return shouldServeStreamingMetadata;\n }\n});\nconst _isbot = __webpack_require__(/*! ../../shared/lib/router/utils/is-bot */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/is-bot.js\");\nfunction shouldServeStreamingMetadata(userAgent, htmlLimitedBots) {\n const blockingMetadataUARegex = new RegExp(htmlLimitedBots || _isbot.HTML_LIMITED_BOT_UA_RE_STRING, 'i');\n // Only block metadata for HTML-limited bots\n if (userAgent && blockingMetadataUARegex.test(userAgent)) {\n return false;\n }\n return true;\n}\nfunction isHtmlBotRequest(req) {\n const ua = req.headers['user-agent'] || '';\n const botType = (0, _isbot.getBotType)(ua);\n return botType === 'html';\n}\n\n//# sourceMappingURL=streaming-metadata.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvc3RyZWFtaW5nLW1ldGFkYXRhLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQUdMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELGVBQWUsbUJBQU8sQ0FBQyw4R0FBc0M7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvc3RyZWFtaW5nLW1ldGFkYXRhLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgaXNIdG1sQm90UmVxdWVzdDogbnVsbCxcbiAgICBzaG91bGRTZXJ2ZVN0cmVhbWluZ01ldGFkYXRhOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIGlzSHRtbEJvdFJlcXVlc3Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaXNIdG1sQm90UmVxdWVzdDtcbiAgICB9LFxuICAgIHNob3VsZFNlcnZlU3RyZWFtaW5nTWV0YWRhdGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gc2hvdWxkU2VydmVTdHJlYW1pbmdNZXRhZGF0YTtcbiAgICB9XG59KTtcbmNvbnN0IF9pc2JvdCA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9pcy1ib3RcIik7XG5mdW5jdGlvbiBzaG91bGRTZXJ2ZVN0cmVhbWluZ01ldGFkYXRhKHVzZXJBZ2VudCwgaHRtbExpbWl0ZWRCb3RzKSB7XG4gICAgY29uc3QgYmxvY2tpbmdNZXRhZGF0YVVBUmVnZXggPSBuZXcgUmVnRXhwKGh0bWxMaW1pdGVkQm90cyB8fCBfaXNib3QuSFRNTF9MSU1JVEVEX0JPVF9VQV9SRV9TVFJJTkcsICdpJyk7XG4gICAgLy8gT25seSBibG9jayBtZXRhZGF0YSBmb3IgSFRNTC1saW1pdGVkIGJvdHNcbiAgICBpZiAodXNlckFnZW50ICYmIGJsb2NraW5nTWV0YWRhdGFVQVJlZ2V4LnRlc3QodXNlckFnZW50KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuZnVuY3Rpb24gaXNIdG1sQm90UmVxdWVzdChyZXEpIHtcbiAgICBjb25zdCB1YSA9IHJlcS5oZWFkZXJzWyd1c2VyLWFnZW50J10gfHwgJyc7XG4gICAgY29uc3QgYm90VHlwZSA9ICgwLCBfaXNib3QuZ2V0Qm90VHlwZSkodWEpO1xuICAgIHJldHVybiBib3RUeXBlID09PSAnaHRtbCc7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXN0cmVhbWluZy1tZXRhZGF0YS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/streaming-metadata.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/lib/trace/constants.js":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/lib/trace/constants.js ***!
|
||
\**************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * Contains predefined constants for the trace span name in next/server.\n *\n * Currently, next/server/tracer is internal implementation only for tracking\n * next.js's implementation only with known span names defined here.\n **/ // eslint typescript has a bug with TS enums\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n AppRenderSpan: function() {\n return AppRenderSpan;\n },\n AppRouteRouteHandlersSpan: function() {\n return AppRouteRouteHandlersSpan;\n },\n BaseServerSpan: function() {\n return BaseServerSpan;\n },\n LoadComponentsSpan: function() {\n return LoadComponentsSpan;\n },\n LogSpanAllowList: function() {\n return LogSpanAllowList;\n },\n MiddlewareSpan: function() {\n return MiddlewareSpan;\n },\n NextNodeServerSpan: function() {\n return NextNodeServerSpan;\n },\n NextServerSpan: function() {\n return NextServerSpan;\n },\n NextVanillaSpanAllowlist: function() {\n return NextVanillaSpanAllowlist;\n },\n NodeSpan: function() {\n return NodeSpan;\n },\n RenderSpan: function() {\n return RenderSpan;\n },\n ResolveMetadataSpan: function() {\n return ResolveMetadataSpan;\n },\n RouterSpan: function() {\n return RouterSpan;\n },\n StartServerSpan: function() {\n return StartServerSpan;\n }\n});\nvar BaseServerSpan = /*#__PURE__*/ function(BaseServerSpan) {\n BaseServerSpan[\"handleRequest\"] = \"BaseServer.handleRequest\";\n BaseServerSpan[\"run\"] = \"BaseServer.run\";\n BaseServerSpan[\"pipe\"] = \"BaseServer.pipe\";\n BaseServerSpan[\"getStaticHTML\"] = \"BaseServer.getStaticHTML\";\n BaseServerSpan[\"render\"] = \"BaseServer.render\";\n BaseServerSpan[\"renderToResponseWithComponents\"] = \"BaseServer.renderToResponseWithComponents\";\n BaseServerSpan[\"renderToResponse\"] = \"BaseServer.renderToResponse\";\n BaseServerSpan[\"renderToHTML\"] = \"BaseServer.renderToHTML\";\n BaseServerSpan[\"renderError\"] = \"BaseServer.renderError\";\n BaseServerSpan[\"renderErrorToResponse\"] = \"BaseServer.renderErrorToResponse\";\n BaseServerSpan[\"renderErrorToHTML\"] = \"BaseServer.renderErrorToHTML\";\n BaseServerSpan[\"render404\"] = \"BaseServer.render404\";\n return BaseServerSpan;\n}(BaseServerSpan || {});\nvar LoadComponentsSpan = /*#__PURE__*/ function(LoadComponentsSpan) {\n LoadComponentsSpan[\"loadDefaultErrorComponents\"] = \"LoadComponents.loadDefaultErrorComponents\";\n LoadComponentsSpan[\"loadComponents\"] = \"LoadComponents.loadComponents\";\n return LoadComponentsSpan;\n}(LoadComponentsSpan || {});\nvar NextServerSpan = /*#__PURE__*/ function(NextServerSpan) {\n NextServerSpan[\"getRequestHandler\"] = \"NextServer.getRequestHandler\";\n NextServerSpan[\"getRequestHandlerWithMetadata\"] = \"NextServer.getRequestHandlerWithMetadata\";\n NextServerSpan[\"getServer\"] = \"NextServer.getServer\";\n NextServerSpan[\"getServerRequestHandler\"] = \"NextServer.getServerRequestHandler\";\n NextServerSpan[\"createServer\"] = \"createServer.createServer\";\n return NextServerSpan;\n}(NextServerSpan || {});\nvar NextNodeServerSpan = /*#__PURE__*/ function(NextNodeServerSpan) {\n NextNodeServerSpan[\"compression\"] = \"NextNodeServer.compression\";\n NextNodeServerSpan[\"getBuildId\"] = \"NextNodeServer.getBuildId\";\n NextNodeServerSpan[\"createComponentTree\"] = \"NextNodeServer.createComponentTree\";\n NextNodeServerSpan[\"clientComponentLoading\"] = \"NextNodeServer.clientComponentLoading\";\n NextNodeServerSpan[\"getLayoutOrPageModule\"] = \"NextNodeServer.getLayoutOrPageModule\";\n NextNodeServerSpan[\"generateStaticRoutes\"] = \"NextNodeServer.generateStaticRoutes\";\n NextNodeServerSpan[\"generateFsStaticRoutes\"] = \"NextNodeServer.generateFsStaticRoutes\";\n NextNodeServerSpan[\"generatePublicRoutes\"] = \"NextNodeServer.generatePublicRoutes\";\n NextNodeServerSpan[\"generateImageRoutes\"] = \"NextNodeServer.generateImageRoutes.route\";\n NextNodeServerSpan[\"sendRenderResult\"] = \"NextNodeServer.sendRenderResult\";\n NextNodeServerSpan[\"proxyRequest\"] = \"NextNodeServer.proxyRequest\";\n NextNodeServerSpan[\"runApi\"] = \"NextNodeServer.runApi\";\n NextNodeServerSpan[\"render\"] = \"NextNodeServer.render\";\n NextNodeServerSpan[\"renderHTML\"] = \"NextNodeServer.renderHTML\";\n NextNodeServerSpan[\"imageOptimizer\"] = \"NextNodeServer.imageOptimizer\";\n NextNodeServerSpan[\"getPagePath\"] = \"NextNodeServer.getPagePath\";\n NextNodeServerSpan[\"getRoutesManifest\"] = \"NextNodeServer.getRoutesManifest\";\n NextNodeServerSpan[\"findPageComponents\"] = \"NextNodeServer.findPageComponents\";\n NextNodeServerSpan[\"getFontManifest\"] = \"NextNodeServer.getFontManifest\";\n NextNodeServerSpan[\"getServerComponentManifest\"] = \"NextNodeServer.getServerComponentManifest\";\n NextNodeServerSpan[\"getRequestHandler\"] = \"NextNodeServer.getRequestHandler\";\n NextNodeServerSpan[\"renderToHTML\"] = \"NextNodeServer.renderToHTML\";\n NextNodeServerSpan[\"renderError\"] = \"NextNodeServer.renderError\";\n NextNodeServerSpan[\"renderErrorToHTML\"] = \"NextNodeServer.renderErrorToHTML\";\n NextNodeServerSpan[\"render404\"] = \"NextNodeServer.render404\";\n NextNodeServerSpan[\"startResponse\"] = \"NextNodeServer.startResponse\";\n // nested inner span, does not require parent scope name\n NextNodeServerSpan[\"route\"] = \"route\";\n NextNodeServerSpan[\"onProxyReq\"] = \"onProxyReq\";\n NextNodeServerSpan[\"apiResolver\"] = \"apiResolver\";\n NextNodeServerSpan[\"internalFetch\"] = \"internalFetch\";\n return NextNodeServerSpan;\n}(NextNodeServerSpan || {});\nvar StartServerSpan = /*#__PURE__*/ function(StartServerSpan) {\n StartServerSpan[\"startServer\"] = \"startServer.startServer\";\n return StartServerSpan;\n}(StartServerSpan || {});\nvar RenderSpan = /*#__PURE__*/ function(RenderSpan) {\n RenderSpan[\"getServerSideProps\"] = \"Render.getServerSideProps\";\n RenderSpan[\"getStaticProps\"] = \"Render.getStaticProps\";\n RenderSpan[\"renderToString\"] = \"Render.renderToString\";\n RenderSpan[\"renderDocument\"] = \"Render.renderDocument\";\n RenderSpan[\"createBodyResult\"] = \"Render.createBodyResult\";\n return RenderSpan;\n}(RenderSpan || {});\nvar AppRenderSpan = /*#__PURE__*/ function(AppRenderSpan) {\n AppRenderSpan[\"renderToString\"] = \"AppRender.renderToString\";\n AppRenderSpan[\"renderToReadableStream\"] = \"AppRender.renderToReadableStream\";\n AppRenderSpan[\"getBodyResult\"] = \"AppRender.getBodyResult\";\n AppRenderSpan[\"fetch\"] = \"AppRender.fetch\";\n return AppRenderSpan;\n}(AppRenderSpan || {});\nvar RouterSpan = /*#__PURE__*/ function(RouterSpan) {\n RouterSpan[\"executeRoute\"] = \"Router.executeRoute\";\n return RouterSpan;\n}(RouterSpan || {});\nvar NodeSpan = /*#__PURE__*/ function(NodeSpan) {\n NodeSpan[\"runHandler\"] = \"Node.runHandler\";\n return NodeSpan;\n}(NodeSpan || {});\nvar AppRouteRouteHandlersSpan = /*#__PURE__*/ function(AppRouteRouteHandlersSpan) {\n AppRouteRouteHandlersSpan[\"runHandler\"] = \"AppRouteRouteHandlers.runHandler\";\n return AppRouteRouteHandlersSpan;\n}(AppRouteRouteHandlersSpan || {});\nvar ResolveMetadataSpan = /*#__PURE__*/ function(ResolveMetadataSpan) {\n ResolveMetadataSpan[\"generateMetadata\"] = \"ResolveMetadata.generateMetadata\";\n ResolveMetadataSpan[\"generateViewport\"] = \"ResolveMetadata.generateViewport\";\n return ResolveMetadataSpan;\n}(ResolveMetadataSpan || {});\nvar MiddlewareSpan = /*#__PURE__*/ function(MiddlewareSpan) {\n MiddlewareSpan[\"execute\"] = \"Middleware.execute\";\n return MiddlewareSpan;\n}(MiddlewareSpan || {});\nconst NextVanillaSpanAllowlist = new Set([\n \"Middleware.execute\",\n \"BaseServer.handleRequest\",\n \"Render.getServerSideProps\",\n \"Render.getStaticProps\",\n \"AppRender.fetch\",\n \"AppRender.getBodyResult\",\n \"Render.renderDocument\",\n \"Node.runHandler\",\n \"AppRouteRouteHandlers.runHandler\",\n \"ResolveMetadata.generateMetadata\",\n \"ResolveMetadata.generateViewport\",\n \"NextNodeServer.createComponentTree\",\n \"NextNodeServer.findPageComponents\",\n \"NextNodeServer.getLayoutOrPageModule\",\n \"NextNodeServer.startResponse\",\n \"NextNodeServer.clientComponentLoading\"\n]);\nconst LogSpanAllowList = new Set([\n \"NextNodeServer.findPageComponents\",\n \"NextNodeServer.createComponentTree\",\n \"NextNodeServer.clientComponentLoading\"\n]);\n\n//# sourceMappingURL=constants.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvdHJhY2UvY29uc3RhbnRzLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQWVMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLHFCQUFxQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMseUJBQXlCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxxQkFBcUI7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyx5QkFBeUI7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxzQkFBc0I7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGlCQUFpQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLG9CQUFvQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxDQUFDLGlCQUFpQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQSxDQUFDLGVBQWU7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxnQ0FBZ0M7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLDBCQUEwQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQSxDQUFDLHFCQUFxQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvbGliL3RyYWNlL2NvbnN0YW50cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnRhaW5zIHByZWRlZmluZWQgY29uc3RhbnRzIGZvciB0aGUgdHJhY2Ugc3BhbiBuYW1lIGluIG5leHQvc2VydmVyLlxuICpcbiAqIEN1cnJlbnRseSwgbmV4dC9zZXJ2ZXIvdHJhY2VyIGlzIGludGVybmFsIGltcGxlbWVudGF0aW9uIG9ubHkgZm9yIHRyYWNraW5nXG4gKiBuZXh0LmpzJ3MgaW1wbGVtZW50YXRpb24gb25seSB3aXRoIGtub3duIHNwYW4gbmFtZXMgZGVmaW5lZCBoZXJlLlxuICoqLyAvLyBlc2xpbnQgdHlwZXNjcmlwdCBoYXMgYSBidWcgd2l0aCBUUyBlbnVtc1xuXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBBcHBSZW5kZXJTcGFuOiBudWxsLFxuICAgIEFwcFJvdXRlUm91dGVIYW5kbGVyc1NwYW46IG51bGwsXG4gICAgQmFzZVNlcnZlclNwYW46IG51bGwsXG4gICAgTG9hZENvbXBvbmVudHNTcGFuOiBudWxsLFxuICAgIExvZ1NwYW5BbGxvd0xpc3Q6IG51bGwsXG4gICAgTWlkZGxld2FyZVNwYW46IG51bGwsXG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuOiBudWxsLFxuICAgIE5leHRTZXJ2ZXJTcGFuOiBudWxsLFxuICAgIE5leHRWYW5pbGxhU3BhbkFsbG93bGlzdDogbnVsbCxcbiAgICBOb2RlU3BhbjogbnVsbCxcbiAgICBSZW5kZXJTcGFuOiBudWxsLFxuICAgIFJlc29sdmVNZXRhZGF0YVNwYW46IG51bGwsXG4gICAgUm91dGVyU3BhbjogbnVsbCxcbiAgICBTdGFydFNlcnZlclNwYW46IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgQXBwUmVuZGVyU3BhbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBBcHBSZW5kZXJTcGFuO1xuICAgIH0sXG4gICAgQXBwUm91dGVSb3V0ZUhhbmRsZXJzU3BhbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBBcHBSb3V0ZVJvdXRlSGFuZGxlcnNTcGFuO1xuICAgIH0sXG4gICAgQmFzZVNlcnZlclNwYW46IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gQmFzZVNlcnZlclNwYW47XG4gICAgfSxcbiAgICBMb2FkQ29tcG9uZW50c1NwYW46IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTG9hZENvbXBvbmVudHNTcGFuO1xuICAgIH0sXG4gICAgTG9nU3BhbkFsbG93TGlzdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBMb2dTcGFuQWxsb3dMaXN0O1xuICAgIH0sXG4gICAgTWlkZGxld2FyZVNwYW46IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTWlkZGxld2FyZVNwYW47XG4gICAgfSxcbiAgICBOZXh0Tm9kZVNlcnZlclNwYW46IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTmV4dE5vZGVTZXJ2ZXJTcGFuO1xuICAgIH0sXG4gICAgTmV4dFNlcnZlclNwYW46IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTmV4dFNlcnZlclNwYW47XG4gICAgfSxcbiAgICBOZXh0VmFuaWxsYVNwYW5BbGxvd2xpc3Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTmV4dFZhbmlsbGFTcGFuQWxsb3dsaXN0O1xuICAgIH0sXG4gICAgTm9kZVNwYW46IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTm9kZVNwYW47XG4gICAgfSxcbiAgICBSZW5kZXJTcGFuOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFJlbmRlclNwYW47XG4gICAgfSxcbiAgICBSZXNvbHZlTWV0YWRhdGFTcGFuOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFJlc29sdmVNZXRhZGF0YVNwYW47XG4gICAgfSxcbiAgICBSb3V0ZXJTcGFuOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFJvdXRlclNwYW47XG4gICAgfSxcbiAgICBTdGFydFNlcnZlclNwYW46IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gU3RhcnRTZXJ2ZXJTcGFuO1xuICAgIH1cbn0pO1xudmFyIEJhc2VTZXJ2ZXJTcGFuID0gLyojX19QVVJFX18qLyBmdW5jdGlvbihCYXNlU2VydmVyU3Bhbikge1xuICAgIEJhc2VTZXJ2ZXJTcGFuW1wiaGFuZGxlUmVxdWVzdFwiXSA9IFwiQmFzZVNlcnZlci5oYW5kbGVSZXF1ZXN0XCI7XG4gICAgQmFzZVNlcnZlclNwYW5bXCJydW5cIl0gPSBcIkJhc2VTZXJ2ZXIucnVuXCI7XG4gICAgQmFzZVNlcnZlclNwYW5bXCJwaXBlXCJdID0gXCJCYXNlU2VydmVyLnBpcGVcIjtcbiAgICBCYXNlU2VydmVyU3BhbltcImdldFN0YXRpY0hUTUxcIl0gPSBcIkJhc2VTZXJ2ZXIuZ2V0U3RhdGljSFRNTFwiO1xuICAgIEJhc2VTZXJ2ZXJTcGFuW1wicmVuZGVyXCJdID0gXCJCYXNlU2VydmVyLnJlbmRlclwiO1xuICAgIEJhc2VTZXJ2ZXJTcGFuW1wicmVuZGVyVG9SZXNwb25zZVdpdGhDb21wb25lbnRzXCJdID0gXCJCYXNlU2VydmVyLnJlbmRlclRvUmVzcG9uc2VXaXRoQ29tcG9uZW50c1wiO1xuICAgIEJhc2VTZXJ2ZXJTcGFuW1wicmVuZGVyVG9SZXNwb25zZVwiXSA9IFwiQmFzZVNlcnZlci5yZW5kZXJUb1Jlc3BvbnNlXCI7XG4gICAgQmFzZVNlcnZlclNwYW5bXCJyZW5kZXJUb0hUTUxcIl0gPSBcIkJhc2VTZXJ2ZXIucmVuZGVyVG9IVE1MXCI7XG4gICAgQmFzZVNlcnZlclNwYW5bXCJyZW5kZXJFcnJvclwiXSA9IFwiQmFzZVNlcnZlci5yZW5kZXJFcnJvclwiO1xuICAgIEJhc2VTZXJ2ZXJTcGFuW1wicmVuZGVyRXJyb3JUb1Jlc3BvbnNlXCJdID0gXCJCYXNlU2VydmVyLnJlbmRlckVycm9yVG9SZXNwb25zZVwiO1xuICAgIEJhc2VTZXJ2ZXJTcGFuW1wicmVuZGVyRXJyb3JUb0hUTUxcIl0gPSBcIkJhc2VTZXJ2ZXIucmVuZGVyRXJyb3JUb0hUTUxcIjtcbiAgICBCYXNlU2VydmVyU3BhbltcInJlbmRlcjQwNFwiXSA9IFwiQmFzZVNlcnZlci5yZW5kZXI0MDRcIjtcbiAgICByZXR1cm4gQmFzZVNlcnZlclNwYW47XG59KEJhc2VTZXJ2ZXJTcGFuIHx8IHt9KTtcbnZhciBMb2FkQ29tcG9uZW50c1NwYW4gPSAvKiNfX1BVUkVfXyovIGZ1bmN0aW9uKExvYWRDb21wb25lbnRzU3Bhbikge1xuICAgIExvYWRDb21wb25lbnRzU3BhbltcImxvYWREZWZhdWx0RXJyb3JDb21wb25lbnRzXCJdID0gXCJMb2FkQ29tcG9uZW50cy5sb2FkRGVmYXVsdEVycm9yQ29tcG9uZW50c1wiO1xuICAgIExvYWRDb21wb25lbnRzU3BhbltcImxvYWRDb21wb25lbnRzXCJdID0gXCJMb2FkQ29tcG9uZW50cy5sb2FkQ29tcG9uZW50c1wiO1xuICAgIHJldHVybiBMb2FkQ29tcG9uZW50c1NwYW47XG59KExvYWRDb21wb25lbnRzU3BhbiB8fCB7fSk7XG52YXIgTmV4dFNlcnZlclNwYW4gPSAvKiNfX1BVUkVfXyovIGZ1bmN0aW9uKE5leHRTZXJ2ZXJTcGFuKSB7XG4gICAgTmV4dFNlcnZlclNwYW5bXCJnZXRSZXF1ZXN0SGFuZGxlclwiXSA9IFwiTmV4dFNlcnZlci5nZXRSZXF1ZXN0SGFuZGxlclwiO1xuICAgIE5leHRTZXJ2ZXJTcGFuW1wiZ2V0UmVxdWVzdEhhbmRsZXJXaXRoTWV0YWRhdGFcIl0gPSBcIk5leHRTZXJ2ZXIuZ2V0UmVxdWVzdEhhbmRsZXJXaXRoTWV0YWRhdGFcIjtcbiAgICBOZXh0U2VydmVyU3BhbltcImdldFNlcnZlclwiXSA9IFwiTmV4dFNlcnZlci5nZXRTZXJ2ZXJcIjtcbiAgICBOZXh0U2VydmVyU3BhbltcImdldFNlcnZlclJlcXVlc3RIYW5kbGVyXCJdID0gXCJOZXh0U2VydmVyLmdldFNlcnZlclJlcXVlc3RIYW5kbGVyXCI7XG4gICAgTmV4dFNlcnZlclNwYW5bXCJjcmVhdGVTZXJ2ZXJcIl0gPSBcImNyZWF0ZVNlcnZlci5jcmVhdGVTZXJ2ZXJcIjtcbiAgICByZXR1cm4gTmV4dFNlcnZlclNwYW47XG59KE5leHRTZXJ2ZXJTcGFuIHx8IHt9KTtcbnZhciBOZXh0Tm9kZVNlcnZlclNwYW4gPSAvKiNfX1BVUkVfXyovIGZ1bmN0aW9uKE5leHROb2RlU2VydmVyU3Bhbikge1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImNvbXByZXNzaW9uXCJdID0gXCJOZXh0Tm9kZVNlcnZlci5jb21wcmVzc2lvblwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImdldEJ1aWxkSWRcIl0gPSBcIk5leHROb2RlU2VydmVyLmdldEJ1aWxkSWRcIjtcbiAgICBOZXh0Tm9kZVNlcnZlclNwYW5bXCJjcmVhdGVDb21wb25lbnRUcmVlXCJdID0gXCJOZXh0Tm9kZVNlcnZlci5jcmVhdGVDb21wb25lbnRUcmVlXCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wiY2xpZW50Q29tcG9uZW50TG9hZGluZ1wiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIuY2xpZW50Q29tcG9uZW50TG9hZGluZ1wiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImdldExheW91dE9yUGFnZU1vZHVsZVwiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIuZ2V0TGF5b3V0T3JQYWdlTW9kdWxlXCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wiZ2VuZXJhdGVTdGF0aWNSb3V0ZXNcIl0gPSBcIk5leHROb2RlU2VydmVyLmdlbmVyYXRlU3RhdGljUm91dGVzXCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wiZ2VuZXJhdGVGc1N0YXRpY1JvdXRlc1wiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIuZ2VuZXJhdGVGc1N0YXRpY1JvdXRlc1wiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImdlbmVyYXRlUHVibGljUm91dGVzXCJdID0gXCJOZXh0Tm9kZVNlcnZlci5nZW5lcmF0ZVB1YmxpY1JvdXRlc1wiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImdlbmVyYXRlSW1hZ2VSb3V0ZXNcIl0gPSBcIk5leHROb2RlU2VydmVyLmdlbmVyYXRlSW1hZ2VSb3V0ZXMucm91dGVcIjtcbiAgICBOZXh0Tm9kZVNlcnZlclNwYW5bXCJzZW5kUmVuZGVyUmVzdWx0XCJdID0gXCJOZXh0Tm9kZVNlcnZlci5zZW5kUmVuZGVyUmVzdWx0XCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wicHJveHlSZXF1ZXN0XCJdID0gXCJOZXh0Tm9kZVNlcnZlci5wcm94eVJlcXVlc3RcIjtcbiAgICBOZXh0Tm9kZVNlcnZlclNwYW5bXCJydW5BcGlcIl0gPSBcIk5leHROb2RlU2VydmVyLnJ1bkFwaVwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcInJlbmRlclwiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIucmVuZGVyXCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wicmVuZGVySFRNTFwiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIucmVuZGVySFRNTFwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImltYWdlT3B0aW1pemVyXCJdID0gXCJOZXh0Tm9kZVNlcnZlci5pbWFnZU9wdGltaXplclwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImdldFBhZ2VQYXRoXCJdID0gXCJOZXh0Tm9kZVNlcnZlci5nZXRQYWdlUGF0aFwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImdldFJvdXRlc01hbmlmZXN0XCJdID0gXCJOZXh0Tm9kZVNlcnZlci5nZXRSb3V0ZXNNYW5pZmVzdFwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImZpbmRQYWdlQ29tcG9uZW50c1wiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIuZmluZFBhZ2VDb21wb25lbnRzXCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wiZ2V0Rm9udE1hbmlmZXN0XCJdID0gXCJOZXh0Tm9kZVNlcnZlci5nZXRGb250TWFuaWZlc3RcIjtcbiAgICBOZXh0Tm9kZVNlcnZlclNwYW5bXCJnZXRTZXJ2ZXJDb21wb25lbnRNYW5pZmVzdFwiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIuZ2V0U2VydmVyQ29tcG9uZW50TWFuaWZlc3RcIjtcbiAgICBOZXh0Tm9kZVNlcnZlclNwYW5bXCJnZXRSZXF1ZXN0SGFuZGxlclwiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIuZ2V0UmVxdWVzdEhhbmRsZXJcIjtcbiAgICBOZXh0Tm9kZVNlcnZlclNwYW5bXCJyZW5kZXJUb0hUTUxcIl0gPSBcIk5leHROb2RlU2VydmVyLnJlbmRlclRvSFRNTFwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcInJlbmRlckVycm9yXCJdID0gXCJOZXh0Tm9kZVNlcnZlci5yZW5kZXJFcnJvclwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcInJlbmRlckVycm9yVG9IVE1MXCJdID0gXCJOZXh0Tm9kZVNlcnZlci5yZW5kZXJFcnJvclRvSFRNTFwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcInJlbmRlcjQwNFwiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIucmVuZGVyNDA0XCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wic3RhcnRSZXNwb25zZVwiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIuc3RhcnRSZXNwb25zZVwiO1xuICAgIC8vIG5lc3RlZCBpbm5lciBzcGFuLCBkb2VzIG5vdCByZXF1aXJlIHBhcmVudCBzY29wZSBuYW1lXG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wicm91dGVcIl0gPSBcInJvdXRlXCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wib25Qcm94eVJlcVwiXSA9IFwib25Qcm94eVJlcVwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImFwaVJlc29sdmVyXCJdID0gXCJhcGlSZXNvbHZlclwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImludGVybmFsRmV0Y2hcIl0gPSBcImludGVybmFsRmV0Y2hcIjtcbiAgICByZXR1cm4gTmV4dE5vZGVTZXJ2ZXJTcGFuO1xufShOZXh0Tm9kZVNlcnZlclNwYW4gfHwge30pO1xudmFyIFN0YXJ0U2VydmVyU3BhbiA9IC8qI19fUFVSRV9fKi8gZnVuY3Rpb24oU3RhcnRTZXJ2ZXJTcGFuKSB7XG4gICAgU3RhcnRTZXJ2ZXJTcGFuW1wic3RhcnRTZXJ2ZXJcIl0gPSBcInN0YXJ0U2VydmVyLnN0YXJ0U2VydmVyXCI7XG4gICAgcmV0dXJuIFN0YXJ0U2VydmVyU3Bhbjtcbn0oU3RhcnRTZXJ2ZXJTcGFuIHx8IHt9KTtcbnZhciBSZW5kZXJTcGFuID0gLyojX19QVVJFX18qLyBmdW5jdGlvbihSZW5kZXJTcGFuKSB7XG4gICAgUmVuZGVyU3BhbltcImdldFNlcnZlclNpZGVQcm9wc1wiXSA9IFwiUmVuZGVyLmdldFNlcnZlclNpZGVQcm9wc1wiO1xuICAgIFJlbmRlclNwYW5bXCJnZXRTdGF0aWNQcm9wc1wiXSA9IFwiUmVuZGVyLmdldFN0YXRpY1Byb3BzXCI7XG4gICAgUmVuZGVyU3BhbltcInJlbmRlclRvU3RyaW5nXCJdID0gXCJSZW5kZXIucmVuZGVyVG9TdHJpbmdcIjtcbiAgICBSZW5kZXJTcGFuW1wicmVuZGVyRG9jdW1lbnRcIl0gPSBcIlJlbmRlci5yZW5kZXJEb2N1bWVudFwiO1xuICAgIFJlbmRlclNwYW5bXCJjcmVhdGVCb2R5UmVzdWx0XCJdID0gXCJSZW5kZXIuY3JlYXRlQm9keVJlc3VsdFwiO1xuICAgIHJldHVybiBSZW5kZXJTcGFuO1xufShSZW5kZXJTcGFuIHx8IHt9KTtcbnZhciBBcHBSZW5kZXJTcGFuID0gLyojX19QVVJFX18qLyBmdW5jdGlvbihBcHBSZW5kZXJTcGFuKSB7XG4gICAgQXBwUmVuZGVyU3BhbltcInJlbmRlclRvU3RyaW5nXCJdID0gXCJBcHBSZW5kZXIucmVuZGVyVG9TdHJpbmdcIjtcbiAgICBBcHBSZW5kZXJTcGFuW1wicmVuZGVyVG9SZWFkYWJsZVN0cmVhbVwiXSA9IFwiQXBwUmVuZGVyLnJlbmRlclRvUmVhZGFibGVTdHJlYW1cIjtcbiAgICBBcHBSZW5kZXJTcGFuW1wiZ2V0Qm9keVJlc3VsdFwiXSA9IFwiQXBwUmVuZGVyLmdldEJvZHlSZXN1bHRcIjtcbiAgICBBcHBSZW5kZXJTcGFuW1wiZmV0Y2hcIl0gPSBcIkFwcFJlbmRlci5mZXRjaFwiO1xuICAgIHJldHVybiBBcHBSZW5kZXJTcGFuO1xufShBcHBSZW5kZXJTcGFuIHx8IHt9KTtcbnZhciBSb3V0ZXJTcGFuID0gLyojX19QVVJFX18qLyBmdW5jdGlvbihSb3V0ZXJTcGFuKSB7XG4gICAgUm91dGVyU3BhbltcImV4ZWN1dGVSb3V0ZVwiXSA9IFwiUm91dGVyLmV4ZWN1dGVSb3V0ZVwiO1xuICAgIHJldHVybiBSb3V0ZXJTcGFuO1xufShSb3V0ZXJTcGFuIHx8IHt9KTtcbnZhciBOb2RlU3BhbiA9IC8qI19fUFVSRV9fKi8gZnVuY3Rpb24oTm9kZVNwYW4pIHtcbiAgICBOb2RlU3BhbltcInJ1bkhhbmRsZXJcIl0gPSBcIk5vZGUucnVuSGFuZGxlclwiO1xuICAgIHJldHVybiBOb2RlU3Bhbjtcbn0oTm9kZVNwYW4gfHwge30pO1xudmFyIEFwcFJvdXRlUm91dGVIYW5kbGVyc1NwYW4gPSAvKiNfX1BVUkVfXyovIGZ1bmN0aW9uKEFwcFJvdXRlUm91dGVIYW5kbGVyc1NwYW4pIHtcbiAgICBBcHBSb3V0ZVJvdXRlSGFuZGxlcnNTcGFuW1wicnVuSGFuZGxlclwiXSA9IFwiQXBwUm91dGVSb3V0ZUhhbmRsZXJzLnJ1bkhhbmRsZXJcIjtcbiAgICByZXR1cm4gQXBwUm91dGVSb3V0ZUhhbmRsZXJzU3Bhbjtcbn0oQXBwUm91dGVSb3V0ZUhhbmRsZXJzU3BhbiB8fCB7fSk7XG52YXIgUmVzb2x2ZU1ldGFkYXRhU3BhbiA9IC8qI19fUFVSRV9fKi8gZnVuY3Rpb24oUmVzb2x2ZU1ldGFkYXRhU3Bhbikge1xuICAgIFJlc29sdmVNZXRhZGF0YVNwYW5bXCJnZW5lcmF0ZU1ldGFkYXRhXCJdID0gXCJSZXNvbHZlTWV0YWRhdGEuZ2VuZXJhdGVNZXRhZGF0YVwiO1xuICAgIFJlc29sdmVNZXRhZGF0YVNwYW5bXCJnZW5lcmF0ZVZpZXdwb3J0XCJdID0gXCJSZXNvbHZlTWV0YWRhdGEuZ2VuZXJhdGVWaWV3cG9ydFwiO1xuICAgIHJldHVybiBSZXNvbHZlTWV0YWRhdGFTcGFuO1xufShSZXNvbHZlTWV0YWRhdGFTcGFuIHx8IHt9KTtcbnZhciBNaWRkbGV3YXJlU3BhbiA9IC8qI19fUFVSRV9fKi8gZnVuY3Rpb24oTWlkZGxld2FyZVNwYW4pIHtcbiAgICBNaWRkbGV3YXJlU3BhbltcImV4ZWN1dGVcIl0gPSBcIk1pZGRsZXdhcmUuZXhlY3V0ZVwiO1xuICAgIHJldHVybiBNaWRkbGV3YXJlU3Bhbjtcbn0oTWlkZGxld2FyZVNwYW4gfHwge30pO1xuY29uc3QgTmV4dFZhbmlsbGFTcGFuQWxsb3dsaXN0ID0gbmV3IFNldChbXG4gICAgXCJNaWRkbGV3YXJlLmV4ZWN1dGVcIixcbiAgICBcIkJhc2VTZXJ2ZXIuaGFuZGxlUmVxdWVzdFwiLFxuICAgIFwiUmVuZGVyLmdldFNlcnZlclNpZGVQcm9wc1wiLFxuICAgIFwiUmVuZGVyLmdldFN0YXRpY1Byb3BzXCIsXG4gICAgXCJBcHBSZW5kZXIuZmV0Y2hcIixcbiAgICBcIkFwcFJlbmRlci5nZXRCb2R5UmVzdWx0XCIsXG4gICAgXCJSZW5kZXIucmVuZGVyRG9jdW1lbnRcIixcbiAgICBcIk5vZGUucnVuSGFuZGxlclwiLFxuICAgIFwiQXBwUm91dGVSb3V0ZUhhbmRsZXJzLnJ1bkhhbmRsZXJcIixcbiAgICBcIlJlc29sdmVNZXRhZGF0YS5nZW5lcmF0ZU1ldGFkYXRhXCIsXG4gICAgXCJSZXNvbHZlTWV0YWRhdGEuZ2VuZXJhdGVWaWV3cG9ydFwiLFxuICAgIFwiTmV4dE5vZGVTZXJ2ZXIuY3JlYXRlQ29tcG9uZW50VHJlZVwiLFxuICAgIFwiTmV4dE5vZGVTZXJ2ZXIuZmluZFBhZ2VDb21wb25lbnRzXCIsXG4gICAgXCJOZXh0Tm9kZVNlcnZlci5nZXRMYXlvdXRPclBhZ2VNb2R1bGVcIixcbiAgICBcIk5leHROb2RlU2VydmVyLnN0YXJ0UmVzcG9uc2VcIixcbiAgICBcIk5leHROb2RlU2VydmVyLmNsaWVudENvbXBvbmVudExvYWRpbmdcIlxuXSk7XG5jb25zdCBMb2dTcGFuQWxsb3dMaXN0ID0gbmV3IFNldChbXG4gICAgXCJOZXh0Tm9kZVNlcnZlci5maW5kUGFnZUNvbXBvbmVudHNcIixcbiAgICBcIk5leHROb2RlU2VydmVyLmNyZWF0ZUNvbXBvbmVudFRyZWVcIixcbiAgICBcIk5leHROb2RlU2VydmVyLmNsaWVudENvbXBvbmVudExvYWRpbmdcIlxuXSk7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbnN0YW50cy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/trace/constants.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/lib/trace/tracer.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/next/dist/server/lib/trace/tracer.js ***!
|
||
\***********************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n BubbledError: function() {\n return BubbledError;\n },\n SpanKind: function() {\n return SpanKind;\n },\n SpanStatusCode: function() {\n return SpanStatusCode;\n },\n getTracer: function() {\n return getTracer;\n },\n isBubbledError: function() {\n return isBubbledError;\n }\n});\nconst _constants = __webpack_require__(/*! ./constants */ \"(rsc)/./node_modules/next/dist/server/lib/trace/constants.js\");\nconst _isthenable = __webpack_require__(/*! ../../../shared/lib/is-thenable */ \"(rsc)/./node_modules/next/dist/shared/lib/is-thenable.js\");\nconst NEXT_OTEL_PERFORMANCE_PREFIX = process.env.NEXT_OTEL_PERFORMANCE_PREFIX;\nlet api;\n// we want to allow users to use their own version of @opentelemetry/api if they\n// want to, so we try to require it first, and if it fails we fall back to the\n// version that is bundled with Next.js\n// this is because @opentelemetry/api has to be synced with the version of\n// @opentelemetry/tracing that is used, and we don't want to force users to use\n// the version that is bundled with Next.js.\n// the API is ~stable, so this should be fine\nif (false) {} else {\n try {\n api = __webpack_require__(/*! @opentelemetry/api */ \"(rsc)/./node_modules/next/dist/compiled/@opentelemetry/api/index.js\");\n } catch (err) {\n api = __webpack_require__(/*! next/dist/compiled/@opentelemetry/api */ \"(rsc)/./node_modules/next/dist/compiled/@opentelemetry/api/index.js\");\n }\n}\nconst { context, propagation, trace, SpanStatusCode, SpanKind, ROOT_CONTEXT } = api;\nclass BubbledError extends Error {\n constructor(bubble, result){\n super(), this.bubble = bubble, this.result = result;\n }\n}\nfunction isBubbledError(error) {\n if (typeof error !== 'object' || error === null) return false;\n return error instanceof BubbledError;\n}\nconst closeSpanWithError = (span, error)=>{\n if (isBubbledError(error) && error.bubble) {\n span.setAttribute('next.bubble', true);\n } else {\n if (error) {\n span.recordException(error);\n span.setAttribute('error.type', error.name);\n }\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error == null ? void 0 : error.message\n });\n }\n span.end();\n};\n/** we use this map to propagate attributes from nested spans to the top span */ const rootSpanAttributesStore = new Map();\nconst rootSpanIdKey = api.createContextKey('next.rootSpanId');\nlet lastSpanId = 0;\nconst getSpanId = ()=>lastSpanId++;\nconst clientTraceDataSetter = {\n set (carrier, key, value) {\n carrier.push({\n key,\n value\n });\n }\n};\nclass NextTracerImpl {\n /**\n * Returns an instance to the trace with configured name.\n * Since wrap / trace can be defined in any place prior to actual trace subscriber initialization,\n * This should be lazily evaluated.\n */ getTracerInstance() {\n return trace.getTracer('next.js', '0.0.1');\n }\n getContext() {\n return context;\n }\n getTracePropagationData() {\n const activeContext = context.active();\n const entries = [];\n propagation.inject(activeContext, entries, clientTraceDataSetter);\n return entries;\n }\n getActiveScopeSpan() {\n return trace.getSpan(context == null ? void 0 : context.active());\n }\n withPropagatedContext(carrier, fn, getter, force = false) {\n const activeContext = context.active();\n if (force) {\n const remoteContext = propagation.extract(ROOT_CONTEXT, carrier, getter);\n if (trace.getSpanContext(remoteContext)) {\n return context.with(remoteContext, fn);\n }\n // Preserve the current active span while still merging any extracted\n // baggage/context values from the carrier.\n const mergedContext = propagation.extract(activeContext, carrier, getter);\n return context.with(mergedContext, fn);\n }\n if (trace.getSpanContext(activeContext)) {\n // Active span is already set, too late to propagate.\n return fn();\n }\n const remoteContext = propagation.extract(activeContext, carrier, getter);\n return context.with(remoteContext, fn);\n }\n trace(...args) {\n const [type, fnOrOptions, fnOrEmpty] = args;\n // coerce options form overload\n const { fn, options } = typeof fnOrOptions === 'function' ? {\n fn: fnOrOptions,\n options: {}\n } : {\n fn: fnOrEmpty,\n options: {\n ...fnOrOptions\n }\n };\n const spanName = options.spanName ?? type;\n if (!_constants.NextVanillaSpanAllowlist.has(type) && process.env.NEXT_OTEL_VERBOSE !== '1' || options.hideSpan) {\n return fn();\n }\n // Trying to get active scoped span to assign parent. If option specifies parent span manually, will try to use it.\n let spanContext = this.getSpanContext((options == null ? void 0 : options.parentSpan) ?? this.getActiveScopeSpan());\n if (!spanContext) {\n spanContext = (context == null ? void 0 : context.active()) ?? ROOT_CONTEXT;\n }\n // Check if there's already a root span in the store for this trace\n // We are intentionally not checking whether there is an active context\n // from outside of nextjs to ensure that we can provide the same level\n // of telemetry when using a custom server\n const existingRootSpanId = spanContext.getValue(rootSpanIdKey);\n const isRootSpan = typeof existingRootSpanId !== 'number' || !rootSpanAttributesStore.has(existingRootSpanId);\n const spanId = getSpanId();\n options.attributes = {\n 'next.span_name': spanName,\n 'next.span_type': type,\n ...options.attributes\n };\n return context.with(spanContext.setValue(rootSpanIdKey, spanId), ()=>this.getTracerInstance().startActiveSpan(spanName, options, (span)=>{\n let startTime;\n if (NEXT_OTEL_PERFORMANCE_PREFIX && type && _constants.LogSpanAllowList.has(type)) {\n startTime = 'performance' in globalThis && 'measure' in performance ? globalThis.performance.now() : undefined;\n }\n let cleanedUp = false;\n const onCleanup = ()=>{\n if (cleanedUp) return;\n cleanedUp = true;\n rootSpanAttributesStore.delete(spanId);\n if (startTime) {\n performance.measure(`${NEXT_OTEL_PERFORMANCE_PREFIX}:next-${(type.split('.').pop() || '').replace(/[A-Z]/g, (match)=>'-' + match.toLowerCase())}`, {\n start: startTime,\n end: performance.now()\n });\n }\n };\n if (isRootSpan) {\n rootSpanAttributesStore.set(spanId, new Map(Object.entries(options.attributes ?? {})));\n }\n if (fn.length > 1) {\n try {\n return fn(span, (err)=>closeSpanWithError(span, err));\n } catch (err) {\n closeSpanWithError(span, err);\n throw err;\n } finally{\n onCleanup();\n }\n }\n try {\n const result = fn(span);\n if ((0, _isthenable.isThenable)(result)) {\n // If there's error make sure it throws\n return result.then((res)=>{\n span.end();\n // Need to pass down the promise result,\n // it could be react stream response with error { error, stream }\n return res;\n }).catch((err)=>{\n closeSpanWithError(span, err);\n throw err;\n }).finally(onCleanup);\n } else {\n span.end();\n onCleanup();\n }\n return result;\n } catch (err) {\n closeSpanWithError(span, err);\n onCleanup();\n throw err;\n }\n }));\n }\n wrap(...args) {\n const tracer = this;\n const [name, options, fn] = args.length === 3 ? args : [\n args[0],\n {},\n args[1]\n ];\n if (!_constants.NextVanillaSpanAllowlist.has(name) && process.env.NEXT_OTEL_VERBOSE !== '1') {\n return fn;\n }\n return function() {\n let optionsObj = options;\n if (typeof optionsObj === 'function' && typeof fn === 'function') {\n optionsObj = optionsObj.apply(this, arguments);\n }\n const lastArgId = arguments.length - 1;\n const cb = arguments[lastArgId];\n if (typeof cb === 'function') {\n const scopeBoundCb = tracer.getContext().bind(context.active(), cb);\n return tracer.trace(name, optionsObj, (_span, done)=>{\n arguments[lastArgId] = function(err) {\n done == null ? void 0 : done(err);\n return scopeBoundCb.apply(this, arguments);\n };\n return fn.apply(this, arguments);\n });\n } else {\n return tracer.trace(name, optionsObj, ()=>fn.apply(this, arguments));\n }\n };\n }\n startSpan(...args) {\n const [type, options] = args;\n const spanContext = this.getSpanContext((options == null ? void 0 : options.parentSpan) ?? this.getActiveScopeSpan());\n return this.getTracerInstance().startSpan(type, options, spanContext);\n }\n getSpanContext(parentSpan) {\n const spanContext = parentSpan ? trace.setSpan(context.active(), parentSpan) : undefined;\n return spanContext;\n }\n getRootSpanAttributes() {\n const spanId = context.active().getValue(rootSpanIdKey);\n return rootSpanAttributesStore.get(spanId);\n }\n setRootSpanAttribute(key, value) {\n const spanId = context.active().getValue(rootSpanIdKey);\n const attributes = rootSpanAttributesStore.get(spanId);\n if (attributes && !attributes.has(key)) {\n attributes.set(key, value);\n }\n }\n withSpan(span, fn) {\n const spanContext = trace.setSpan(context.active(), span);\n return context.with(spanContext, fn);\n }\n}\nconst getTracer = (()=>{\n const tracer = new NextTracerImpl();\n return ()=>tracer;\n})();\n\n//# sourceMappingURL=tracer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvdHJhY2UvdHJhY2VyLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQU1MO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELG1CQUFtQixtQkFBTyxDQUFDLGlGQUFhO0FBQ3hDLG9CQUFvQixtQkFBTyxDQUFDLGlHQUFpQztBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLEtBQW1DLEVBQUUsRUFFeEMsQ0FBQztBQUNGO0FBQ0EsY0FBYyxtQkFBTyxDQUFDLCtGQUFvQjtBQUMxQyxNQUFNO0FBQ04sY0FBYyxtQkFBTyxDQUFDLGtIQUF1QztBQUM3RDtBQUNBO0FBQ0EsUUFBUSxzRUFBc0U7QUFDOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGNBQWM7QUFDOUI7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyw2QkFBNkIsUUFBUSxvRkFBb0Y7QUFDeEs7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQSx1R0FBdUc7QUFDdkc7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhFQUE4RTtBQUM5RTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvbGliL3RyYWNlL3RyYWNlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIEJ1YmJsZWRFcnJvcjogbnVsbCxcbiAgICBTcGFuS2luZDogbnVsbCxcbiAgICBTcGFuU3RhdHVzQ29kZTogbnVsbCxcbiAgICBnZXRUcmFjZXI6IG51bGwsXG4gICAgaXNCdWJibGVkRXJyb3I6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgQnViYmxlZEVycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEJ1YmJsZWRFcnJvcjtcbiAgICB9LFxuICAgIFNwYW5LaW5kOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFNwYW5LaW5kO1xuICAgIH0sXG4gICAgU3BhblN0YXR1c0NvZGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gU3BhblN0YXR1c0NvZGU7XG4gICAgfSxcbiAgICBnZXRUcmFjZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZ2V0VHJhY2VyO1xuICAgIH0sXG4gICAgaXNCdWJibGVkRXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaXNCdWJibGVkRXJyb3I7XG4gICAgfVxufSk7XG5jb25zdCBfY29uc3RhbnRzID0gcmVxdWlyZShcIi4vY29uc3RhbnRzXCIpO1xuY29uc3QgX2lzdGhlbmFibGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vc2hhcmVkL2xpYi9pcy10aGVuYWJsZVwiKTtcbmNvbnN0IE5FWFRfT1RFTF9QRVJGT1JNQU5DRV9QUkVGSVggPSBwcm9jZXNzLmVudi5ORVhUX09URUxfUEVSRk9STUFOQ0VfUFJFRklYO1xubGV0IGFwaTtcbi8vIHdlIHdhbnQgdG8gYWxsb3cgdXNlcnMgdG8gdXNlIHRoZWlyIG93biB2ZXJzaW9uIG9mIEBvcGVudGVsZW1ldHJ5L2FwaSBpZiB0aGV5XG4vLyB3YW50IHRvLCBzbyB3ZSB0cnkgdG8gcmVxdWlyZSBpdCBmaXJzdCwgYW5kIGlmIGl0IGZhaWxzIHdlIGZhbGwgYmFjayB0byB0aGVcbi8vIHZlcnNpb24gdGhhdCBpcyBidW5kbGVkIHdpdGggTmV4dC5qc1xuLy8gdGhpcyBpcyBiZWNhdXNlIEBvcGVudGVsZW1ldHJ5L2FwaSBoYXMgdG8gYmUgc3luY2VkIHdpdGggdGhlIHZlcnNpb24gb2Zcbi8vIEBvcGVudGVsZW1ldHJ5L3RyYWNpbmcgdGhhdCBpcyB1c2VkLCBhbmQgd2UgZG9uJ3Qgd2FudCB0byBmb3JjZSB1c2VycyB0byB1c2Vcbi8vIHRoZSB2ZXJzaW9uIHRoYXQgaXMgYnVuZGxlZCB3aXRoIE5leHQuanMuXG4vLyB0aGUgQVBJIGlzIH5zdGFibGUsIHNvIHRoaXMgc2hvdWxkIGJlIGZpbmVcbmlmIChwcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgPT09ICdlZGdlJykge1xuICAgIGFwaSA9IHJlcXVpcmUoJ0BvcGVudGVsZW1ldHJ5L2FwaScpO1xufSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgICBhcGkgPSByZXF1aXJlKCdAb3BlbnRlbGVtZXRyeS9hcGknKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgYXBpID0gcmVxdWlyZSgnbmV4dC9kaXN0L2NvbXBpbGVkL0BvcGVudGVsZW1ldHJ5L2FwaScpO1xuICAgIH1cbn1cbmNvbnN0IHsgY29udGV4dCwgcHJvcGFnYXRpb24sIHRyYWNlLCBTcGFuU3RhdHVzQ29kZSwgU3BhbktpbmQsIFJPT1RfQ09OVEVYVCB9ID0gYXBpO1xuY2xhc3MgQnViYmxlZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKGJ1YmJsZSwgcmVzdWx0KXtcbiAgICAgICAgc3VwZXIoKSwgdGhpcy5idWJibGUgPSBidWJibGUsIHRoaXMucmVzdWx0ID0gcmVzdWx0O1xuICAgIH1cbn1cbmZ1bmN0aW9uIGlzQnViYmxlZEVycm9yKGVycm9yKSB7XG4gICAgaWYgKHR5cGVvZiBlcnJvciAhPT0gJ29iamVjdCcgfHwgZXJyb3IgPT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gZXJyb3IgaW5zdGFuY2VvZiBCdWJibGVkRXJyb3I7XG59XG5jb25zdCBjbG9zZVNwYW5XaXRoRXJyb3IgPSAoc3BhbiwgZXJyb3IpPT57XG4gICAgaWYgKGlzQnViYmxlZEVycm9yKGVycm9yKSAmJiBlcnJvci5idWJibGUpIHtcbiAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoJ25leHQuYnViYmxlJywgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICBzcGFuLnJlY29yZEV4Y2VwdGlvbihlcnJvcik7XG4gICAgICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZSgnZXJyb3IudHlwZScsIGVycm9yLm5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHNwYW4uc2V0U3RhdHVzKHtcbiAgICAgICAgICAgIGNvZGU6IFNwYW5TdGF0dXNDb2RlLkVSUk9SLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3IgPT0gbnVsbCA/IHZvaWQgMCA6IGVycm9yLm1lc3NhZ2VcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHNwYW4uZW5kKCk7XG59O1xuLyoqIHdlIHVzZSB0aGlzIG1hcCB0byBwcm9wYWdhdGUgYXR0cmlidXRlcyBmcm9tIG5lc3RlZCBzcGFucyB0byB0aGUgdG9wIHNwYW4gKi8gY29uc3Qgcm9vdFNwYW5BdHRyaWJ1dGVzU3RvcmUgPSBuZXcgTWFwKCk7XG5jb25zdCByb290U3BhbklkS2V5ID0gYXBpLmNyZWF0ZUNvbnRleHRLZXkoJ25leHQucm9vdFNwYW5JZCcpO1xubGV0IGxhc3RTcGFuSWQgPSAwO1xuY29uc3QgZ2V0U3BhbklkID0gKCk9Pmxhc3RTcGFuSWQrKztcbmNvbnN0IGNsaWVudFRyYWNlRGF0YVNldHRlciA9IHtcbiAgICBzZXQgKGNhcnJpZXIsIGtleSwgdmFsdWUpIHtcbiAgICAgICAgY2Fycmllci5wdXNoKHtcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIHZhbHVlXG4gICAgICAgIH0pO1xuICAgIH1cbn07XG5jbGFzcyBOZXh0VHJhY2VySW1wbCB7XG4gICAgLyoqXG4gICAqIFJldHVybnMgYW4gaW5zdGFuY2UgdG8gdGhlIHRyYWNlIHdpdGggY29uZmlndXJlZCBuYW1lLlxuICAgKiBTaW5jZSB3cmFwIC8gdHJhY2UgY2FuIGJlIGRlZmluZWQgaW4gYW55IHBsYWNlIHByaW9yIHRvIGFjdHVhbCB0cmFjZSBzdWJzY3JpYmVyIGluaXRpYWxpemF0aW9uLFxuICAgKiBUaGlzIHNob3VsZCBiZSBsYXppbHkgZXZhbHVhdGVkLlxuICAgKi8gZ2V0VHJhY2VySW5zdGFuY2UoKSB7XG4gICAgICAgIHJldHVybiB0cmFjZS5nZXRUcmFjZXIoJ25leHQuanMnLCAnMC4wLjEnKTtcbiAgICB9XG4gICAgZ2V0Q29udGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRleHQ7XG4gICAgfVxuICAgIGdldFRyYWNlUHJvcGFnYXRpb25EYXRhKCkge1xuICAgICAgICBjb25zdCBhY3RpdmVDb250ZXh0ID0gY29udGV4dC5hY3RpdmUoKTtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgICAgICBwcm9wYWdhdGlvbi5pbmplY3QoYWN0aXZlQ29udGV4dCwgZW50cmllcywgY2xpZW50VHJhY2VEYXRhU2V0dGVyKTtcbiAgICAgICAgcmV0dXJuIGVudHJpZXM7XG4gICAgfVxuICAgIGdldEFjdGl2ZVNjb3BlU3BhbigpIHtcbiAgICAgICAgcmV0dXJuIHRyYWNlLmdldFNwYW4oY29udGV4dCA9PSBudWxsID8gdm9pZCAwIDogY29udGV4dC5hY3RpdmUoKSk7XG4gICAgfVxuICAgIHdpdGhQcm9wYWdhdGVkQ29udGV4dChjYXJyaWVyLCBmbiwgZ2V0dGVyLCBmb3JjZSA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUNvbnRleHQgPSBjb250ZXh0LmFjdGl2ZSgpO1xuICAgICAgICBpZiAoZm9yY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbW90ZUNvbnRleHQgPSBwcm9wYWdhdGlvbi5leHRyYWN0KFJPT1RfQ09OVEVYVCwgY2FycmllciwgZ2V0dGVyKTtcbiAgICAgICAgICAgIGlmICh0cmFjZS5nZXRTcGFuQ29udGV4dChyZW1vdGVDb250ZXh0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LndpdGgocmVtb3RlQ29udGV4dCwgZm4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUHJlc2VydmUgdGhlIGN1cnJlbnQgYWN0aXZlIHNwYW4gd2hpbGUgc3RpbGwgbWVyZ2luZyBhbnkgZXh0cmFjdGVkXG4gICAgICAgICAgICAvLyBiYWdnYWdlL2NvbnRleHQgdmFsdWVzIGZyb20gdGhlIGNhcnJpZXIuXG4gICAgICAgICAgICBjb25zdCBtZXJnZWRDb250ZXh0ID0gcHJvcGFnYXRpb24uZXh0cmFjdChhY3RpdmVDb250ZXh0LCBjYXJyaWVyLCBnZXR0ZXIpO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQud2l0aChtZXJnZWRDb250ZXh0LCBmbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRyYWNlLmdldFNwYW5Db250ZXh0KGFjdGl2ZUNvbnRleHQpKSB7XG4gICAgICAgICAgICAvLyBBY3RpdmUgc3BhbiBpcyBhbHJlYWR5IHNldCwgdG9vIGxhdGUgdG8gcHJvcGFnYXRlLlxuICAgICAgICAgICAgcmV0dXJuIGZuKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVtb3RlQ29udGV4dCA9IHByb3BhZ2F0aW9uLmV4dHJhY3QoYWN0aXZlQ29udGV4dCwgY2FycmllciwgZ2V0dGVyKTtcbiAgICAgICAgcmV0dXJuIGNvbnRleHQud2l0aChyZW1vdGVDb250ZXh0LCBmbik7XG4gICAgfVxuICAgIHRyYWNlKC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgW3R5cGUsIGZuT3JPcHRpb25zLCBmbk9yRW1wdHldID0gYXJncztcbiAgICAgICAgLy8gY29lcmNlIG9wdGlvbnMgZm9ybSBvdmVybG9hZFxuICAgICAgICBjb25zdCB7IGZuLCBvcHRpb25zIH0gPSB0eXBlb2YgZm5Pck9wdGlvbnMgPT09ICdmdW5jdGlvbicgPyB7XG4gICAgICAgICAgICBmbjogZm5Pck9wdGlvbnMsXG4gICAgICAgICAgICBvcHRpb25zOiB7fVxuICAgICAgICB9IDoge1xuICAgICAgICAgICAgZm46IGZuT3JFbXB0eSxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAuLi5mbk9yT3B0aW9uc1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBzcGFuTmFtZSA9IG9wdGlvbnMuc3Bhbk5hbWUgPz8gdHlwZTtcbiAgICAgICAgaWYgKCFfY29uc3RhbnRzLk5leHRWYW5pbGxhU3BhbkFsbG93bGlzdC5oYXModHlwZSkgJiYgcHJvY2Vzcy5lbnYuTkVYVF9PVEVMX1ZFUkJPU0UgIT09ICcxJyB8fCBvcHRpb25zLmhpZGVTcGFuKSB7XG4gICAgICAgICAgICByZXR1cm4gZm4oKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUcnlpbmcgdG8gZ2V0IGFjdGl2ZSBzY29wZWQgc3BhbiB0byBhc3NpZ24gcGFyZW50LiBJZiBvcHRpb24gc3BlY2lmaWVzIHBhcmVudCBzcGFuIG1hbnVhbGx5LCB3aWxsIHRyeSB0byB1c2UgaXQuXG4gICAgICAgIGxldCBzcGFuQ29udGV4dCA9IHRoaXMuZ2V0U3BhbkNvbnRleHQoKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMucGFyZW50U3BhbikgPz8gdGhpcy5nZXRBY3RpdmVTY29wZVNwYW4oKSk7XG4gICAgICAgIGlmICghc3BhbkNvbnRleHQpIHtcbiAgICAgICAgICAgIHNwYW5Db250ZXh0ID0gKGNvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IGNvbnRleHQuYWN0aXZlKCkpID8/IFJPT1RfQ09OVEVYVDtcbiAgICAgICAgfVxuICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGFscmVhZHkgYSByb290IHNwYW4gaW4gdGhlIHN0b3JlIGZvciB0aGlzIHRyYWNlXG4gICAgICAgIC8vIFdlIGFyZSBpbnRlbnRpb25hbGx5IG5vdCBjaGVja2luZyB3aGV0aGVyIHRoZXJlIGlzIGFuIGFjdGl2ZSBjb250ZXh0XG4gICAgICAgIC8vIGZyb20gb3V0c2lkZSBvZiBuZXh0anMgdG8gZW5zdXJlIHRoYXQgd2UgY2FuIHByb3ZpZGUgdGhlIHNhbWUgbGV2ZWxcbiAgICAgICAgLy8gb2YgdGVsZW1ldHJ5IHdoZW4gdXNpbmcgYSBjdXN0b20gc2VydmVyXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nUm9vdFNwYW5JZCA9IHNwYW5Db250ZXh0LmdldFZhbHVlKHJvb3RTcGFuSWRLZXkpO1xuICAgICAgICBjb25zdCBpc1Jvb3RTcGFuID0gdHlwZW9mIGV4aXN0aW5nUm9vdFNwYW5JZCAhPT0gJ251bWJlcicgfHwgIXJvb3RTcGFuQXR0cmlidXRlc1N0b3JlLmhhcyhleGlzdGluZ1Jvb3RTcGFuSWQpO1xuICAgICAgICBjb25zdCBzcGFuSWQgPSBnZXRTcGFuSWQoKTtcbiAgICAgICAgb3B0aW9ucy5hdHRyaWJ1dGVzID0ge1xuICAgICAgICAgICAgJ25leHQuc3Bhbl9uYW1lJzogc3Bhbk5hbWUsXG4gICAgICAgICAgICAnbmV4dC5zcGFuX3R5cGUnOiB0eXBlLFxuICAgICAgICAgICAgLi4ub3B0aW9ucy5hdHRyaWJ1dGVzXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBjb250ZXh0LndpdGgoc3BhbkNvbnRleHQuc2V0VmFsdWUocm9vdFNwYW5JZEtleSwgc3BhbklkKSwgKCk9PnRoaXMuZ2V0VHJhY2VySW5zdGFuY2UoKS5zdGFydEFjdGl2ZVNwYW4oc3Bhbk5hbWUsIG9wdGlvbnMsIChzcGFuKT0+e1xuICAgICAgICAgICAgICAgIGxldCBzdGFydFRpbWU7XG4gICAgICAgICAgICAgICAgaWYgKE5FWFRfT1RFTF9QRVJGT1JNQU5DRV9QUkVGSVggJiYgdHlwZSAmJiBfY29uc3RhbnRzLkxvZ1NwYW5BbGxvd0xpc3QuaGFzKHR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZSA9ICdwZXJmb3JtYW5jZScgaW4gZ2xvYmFsVGhpcyAmJiAnbWVhc3VyZScgaW4gcGVyZm9ybWFuY2UgPyBnbG9iYWxUaGlzLnBlcmZvcm1hbmNlLm5vdygpIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgY2xlYW5lZFVwID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3Qgb25DbGVhbnVwID0gKCk9PntcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNsZWFuZWRVcCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICBjbGVhbmVkVXAgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICByb290U3BhbkF0dHJpYnV0ZXNTdG9yZS5kZWxldGUoc3BhbklkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0VGltZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybWFuY2UubWVhc3VyZShgJHtORVhUX09URUxfUEVSRk9STUFOQ0VfUFJFRklYfTpuZXh0LSR7KHR5cGUuc3BsaXQoJy4nKS5wb3AoKSB8fCAnJykucmVwbGFjZSgvW0EtWl0vZywgKG1hdGNoKT0+Jy0nICsgbWF0Y2gudG9Mb3dlckNhc2UoKSl9YCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBzdGFydFRpbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBwZXJmb3JtYW5jZS5ub3coKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmIChpc1Jvb3RTcGFuKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvb3RTcGFuQXR0cmlidXRlc1N0b3JlLnNldChzcGFuSWQsIG5ldyBNYXAoT2JqZWN0LmVudHJpZXMob3B0aW9ucy5hdHRyaWJ1dGVzID8/IHt9KSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZm4ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZuKHNwYW4sIChlcnIpPT5jbG9zZVNwYW5XaXRoRXJyb3Ioc3BhbiwgZXJyKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTcGFuV2l0aEVycm9yKHNwYW4sIGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgICAgIH0gZmluYWxseXtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xlYW51cCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGZuKHNwYW4pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoKDAsIF9pc3RoZW5hYmxlLmlzVGhlbmFibGUpKHJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgZXJyb3IgbWFrZSBzdXJlIGl0IHRocm93c1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC50aGVuKChyZXMpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bhbi5lbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIHBhc3MgZG93biB0aGUgcHJvbWlzZSByZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgY291bGQgYmUgcmVhY3Qgc3RyZWFtIHJlc3BvbnNlIHdpdGggZXJyb3IgeyBlcnJvciwgc3RyZWFtIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycik9PntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNwYW5XaXRoRXJyb3Ioc3BhbiwgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KS5maW5hbGx5KG9uQ2xlYW51cCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFuLmVuZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGVhbnVwKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VTcGFuV2l0aEVycm9yKHNwYW4sIGVycik7XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xlYW51cCgpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpO1xuICAgIH1cbiAgICB3cmFwKC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgdHJhY2VyID0gdGhpcztcbiAgICAgICAgY29uc3QgW25hbWUsIG9wdGlvbnMsIGZuXSA9IGFyZ3MubGVuZ3RoID09PSAzID8gYXJncyA6IFtcbiAgICAgICAgICAgIGFyZ3NbMF0sXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICAgIGFyZ3NbMV1cbiAgICAgICAgXTtcbiAgICAgICAgaWYgKCFfY29uc3RhbnRzLk5leHRWYW5pbGxhU3BhbkFsbG93bGlzdC5oYXMobmFtZSkgJiYgcHJvY2Vzcy5lbnYuTkVYVF9PVEVMX1ZFUkJPU0UgIT09ICcxJykge1xuICAgICAgICAgICAgcmV0dXJuIGZuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGxldCBvcHRpb25zT2JqID0gb3B0aW9ucztcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uc09iaiA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zT2JqID0gb3B0aW9uc09iai5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbGFzdEFyZ0lkID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICBjb25zdCBjYiA9IGFyZ3VtZW50c1tsYXN0QXJnSWRdO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjb3BlQm91bmRDYiA9IHRyYWNlci5nZXRDb250ZXh0KCkuYmluZChjb250ZXh0LmFjdGl2ZSgpLCBjYik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYWNlci50cmFjZShuYW1lLCBvcHRpb25zT2JqLCAoX3NwYW4sIGRvbmUpPT57XG4gICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1tsYXN0QXJnSWRdID0gZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb25lID09IG51bGwgPyB2b2lkIDAgOiBkb25lKGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2NvcGVCb3VuZENiLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJhY2VyLnRyYWNlKG5hbWUsIG9wdGlvbnNPYmosICgpPT5mbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG4gICAgc3RhcnRTcGFuKC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgW3R5cGUsIG9wdGlvbnNdID0gYXJncztcbiAgICAgICAgY29uc3Qgc3BhbkNvbnRleHQgPSB0aGlzLmdldFNwYW5Db250ZXh0KChvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLnBhcmVudFNwYW4pID8/IHRoaXMuZ2V0QWN0aXZlU2NvcGVTcGFuKCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUcmFjZXJJbnN0YW5jZSgpLnN0YXJ0U3Bhbih0eXBlLCBvcHRpb25zLCBzcGFuQ29udGV4dCk7XG4gICAgfVxuICAgIGdldFNwYW5Db250ZXh0KHBhcmVudFNwYW4pIHtcbiAgICAgICAgY29uc3Qgc3BhbkNvbnRleHQgPSBwYXJlbnRTcGFuID8gdHJhY2Uuc2V0U3Bhbihjb250ZXh0LmFjdGl2ZSgpLCBwYXJlbnRTcGFuKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHNwYW5Db250ZXh0O1xuICAgIH1cbiAgICBnZXRSb290U3BhbkF0dHJpYnV0ZXMoKSB7XG4gICAgICAgIGNvbnN0IHNwYW5JZCA9IGNvbnRleHQuYWN0aXZlKCkuZ2V0VmFsdWUocm9vdFNwYW5JZEtleSk7XG4gICAgICAgIHJldHVybiByb290U3BhbkF0dHJpYnV0ZXNTdG9yZS5nZXQoc3BhbklkKTtcbiAgICB9XG4gICAgc2V0Um9vdFNwYW5BdHRyaWJ1dGUoa2V5LCB2YWx1ZSkge1xuICAgICAgICBjb25zdCBzcGFuSWQgPSBjb250ZXh0LmFjdGl2ZSgpLmdldFZhbHVlKHJvb3RTcGFuSWRLZXkpO1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0gcm9vdFNwYW5BdHRyaWJ1dGVzU3RvcmUuZ2V0KHNwYW5JZCk7XG4gICAgICAgIGlmIChhdHRyaWJ1dGVzICYmICFhdHRyaWJ1dGVzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB3aXRoU3BhbihzcGFuLCBmbikge1xuICAgICAgICBjb25zdCBzcGFuQ29udGV4dCA9IHRyYWNlLnNldFNwYW4oY29udGV4dC5hY3RpdmUoKSwgc3Bhbik7XG4gICAgICAgIHJldHVybiBjb250ZXh0LndpdGgoc3BhbkNvbnRleHQsIGZuKTtcbiAgICB9XG59XG5jb25zdCBnZXRUcmFjZXIgPSAoKCk9PntcbiAgICBjb25zdCB0cmFjZXIgPSBuZXcgTmV4dFRyYWNlckltcGwoKTtcbiAgICByZXR1cm4gKCk9PnRyYWNlcjtcbn0pKCk7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRyYWNlci5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/trace/tracer.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/pipe-readable.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/next/dist/server/pipe-readable.js ***!
|
||
\********************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n isAbortError: function() {\n return isAbortError;\n },\n pipeToNodeResponse: function() {\n return pipeToNodeResponse;\n }\n});\nconst _nextrequest = __webpack_require__(/*! ./web/spec-extension/adapters/next-request */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/next-request.js\");\nconst _detachedpromise = __webpack_require__(/*! ../lib/detached-promise */ \"(rsc)/./node_modules/next/dist/lib/detached-promise.js\");\nconst _tracer = __webpack_require__(/*! ./lib/trace/tracer */ \"(rsc)/./node_modules/next/dist/server/lib/trace/tracer.js\");\nconst _constants = __webpack_require__(/*! ./lib/trace/constants */ \"(rsc)/./node_modules/next/dist/server/lib/trace/constants.js\");\nconst _clientcomponentrendererlogger = __webpack_require__(/*! ./client-component-renderer-logger */ \"(rsc)/./node_modules/next/dist/server/client-component-renderer-logger.js\");\nfunction isAbortError(e) {\n return (e == null ? void 0 : e.name) === 'AbortError' || (e == null ? void 0 : e.name) === _nextrequest.ResponseAbortedName;\n}\nfunction createWriterFromResponse(res, waitUntilForEnd) {\n let started = false;\n // Create a promise that will resolve once the response has drained. See\n // https://nodejs.org/api/stream.html#stream_event_drain\n let drained = new _detachedpromise.DetachedPromise();\n function onDrain() {\n drained.resolve();\n }\n res.on('drain', onDrain);\n // If the finish event fires, it means we shouldn't block and wait for the\n // drain event.\n res.once('close', ()=>{\n res.off('drain', onDrain);\n drained.resolve();\n });\n // Create a promise that will resolve once the response has finished. See\n // https://nodejs.org/api/http.html#event-finish_1\n const finished = new _detachedpromise.DetachedPromise();\n res.once('finish', ()=>{\n finished.resolve();\n });\n // Create a writable stream that will write to the response.\n return new WritableStream({\n write: async (chunk)=>{\n // You'd think we'd want to use `start` instead of placing this in `write`\n // but this ensures that we don't actually flush the headers until we've\n // started writing chunks.\n if (!started) {\n started = true;\n if ('performance' in globalThis && process.env.NEXT_OTEL_PERFORMANCE_PREFIX) {\n const metrics = (0, _clientcomponentrendererlogger.getClientComponentLoaderMetrics)();\n if (metrics) {\n performance.measure(`${process.env.NEXT_OTEL_PERFORMANCE_PREFIX}:next-client-component-loading`, {\n start: metrics.clientComponentLoadStart,\n end: metrics.clientComponentLoadStart + metrics.clientComponentLoadTimes\n });\n }\n }\n res.flushHeaders();\n (0, _tracer.getTracer)().trace(_constants.NextNodeServerSpan.startResponse, {\n spanName: 'start response'\n }, ()=>undefined);\n }\n try {\n const ok = res.write(chunk);\n // Added by the `compression` middleware, this is a function that will\n // flush the partially-compressed response to the client.\n if ('flush' in res && typeof res.flush === 'function') {\n res.flush();\n }\n // If the write returns false, it means there's some backpressure, so\n // wait until it's streamed before continuing.\n if (!ok) {\n await drained.promise;\n // Reset the drained promise so that we can wait for the next drain event.\n drained = new _detachedpromise.DetachedPromise();\n }\n } catch (err) {\n res.end();\n throw Object.defineProperty(new Error('failed to write chunk to response', {\n cause: err\n }), \"__NEXT_ERROR_CODE\", {\n value: \"E321\",\n enumerable: false,\n configurable: true\n });\n }\n },\n abort: (err)=>{\n if (res.writableFinished) return;\n res.destroy(err);\n },\n close: async ()=>{\n // if a waitUntil promise was passed, wait for it to resolve before\n // ending the response.\n if (waitUntilForEnd) {\n await waitUntilForEnd;\n }\n if (res.writableFinished) return;\n res.end();\n return finished.promise;\n }\n });\n}\nasync function pipeToNodeResponse(readable, res, waitUntilForEnd) {\n try {\n // If the response has already errored, then just return now.\n const { errored, destroyed } = res;\n if (errored || destroyed) return;\n // Create a new AbortController so that we can abort the readable if the\n // client disconnects.\n const controller = (0, _nextrequest.createAbortController)(res);\n const writer = createWriterFromResponse(res, waitUntilForEnd);\n await readable.pipeTo(writer, {\n signal: controller.signal\n });\n } catch (err) {\n // If this isn't related to an abort error, re-throw it.\n if (isAbortError(err)) return;\n throw Object.defineProperty(new Error('failed to pipe response', {\n cause: err\n }), \"__NEXT_ERROR_CODE\", {\n value: \"E180\",\n enumerable: false,\n configurable: true\n });\n }\n}\n\n//# sourceMappingURL=pipe-readable.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9waXBlLXJlYWRhYmxlLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQUdMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELHFCQUFxQixtQkFBTyxDQUFDLHFJQUE0QztBQUN6RSx5QkFBeUIsbUJBQU8sQ0FBQyx1RkFBeUI7QUFDMUQsZ0JBQWdCLG1CQUFPLENBQUMscUZBQW9CO0FBQzVDLG1CQUFtQixtQkFBTyxDQUFDLDJGQUF1QjtBQUNsRCx1Q0FBdUMsbUJBQU8sQ0FBQyxxSEFBb0M7QUFDbkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MseUNBQXlDO0FBQ3hGO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IscUJBQXFCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL3BpcGUtcmVhZGFibGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBpc0Fib3J0RXJyb3I6IG51bGwsXG4gICAgcGlwZVRvTm9kZVJlc3BvbnNlOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIGlzQWJvcnRFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpc0Fib3J0RXJyb3I7XG4gICAgfSxcbiAgICBwaXBlVG9Ob2RlUmVzcG9uc2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcGlwZVRvTm9kZVJlc3BvbnNlO1xuICAgIH1cbn0pO1xuY29uc3QgX25leHRyZXF1ZXN0ID0gcmVxdWlyZShcIi4vd2ViL3NwZWMtZXh0ZW5zaW9uL2FkYXB0ZXJzL25leHQtcmVxdWVzdFwiKTtcbmNvbnN0IF9kZXRhY2hlZHByb21pc2UgPSByZXF1aXJlKFwiLi4vbGliL2RldGFjaGVkLXByb21pc2VcIik7XG5jb25zdCBfdHJhY2VyID0gcmVxdWlyZShcIi4vbGliL3RyYWNlL3RyYWNlclwiKTtcbmNvbnN0IF9jb25zdGFudHMgPSByZXF1aXJlKFwiLi9saWIvdHJhY2UvY29uc3RhbnRzXCIpO1xuY29uc3QgX2NsaWVudGNvbXBvbmVudHJlbmRlcmVybG9nZ2VyID0gcmVxdWlyZShcIi4vY2xpZW50LWNvbXBvbmVudC1yZW5kZXJlci1sb2dnZXJcIik7XG5mdW5jdGlvbiBpc0Fib3J0RXJyb3IoZSkge1xuICAgIHJldHVybiAoZSA9PSBudWxsID8gdm9pZCAwIDogZS5uYW1lKSA9PT0gJ0Fib3J0RXJyb3InIHx8IChlID09IG51bGwgPyB2b2lkIDAgOiBlLm5hbWUpID09PSBfbmV4dHJlcXVlc3QuUmVzcG9uc2VBYm9ydGVkTmFtZTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVdyaXRlckZyb21SZXNwb25zZShyZXMsIHdhaXRVbnRpbEZvckVuZCkge1xuICAgIGxldCBzdGFydGVkID0gZmFsc2U7XG4gICAgLy8gQ3JlYXRlIGEgcHJvbWlzZSB0aGF0IHdpbGwgcmVzb2x2ZSBvbmNlIHRoZSByZXNwb25zZSBoYXMgZHJhaW5lZC4gU2VlXG4gICAgLy8gaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9zdHJlYW0uaHRtbCNzdHJlYW1fZXZlbnRfZHJhaW5cbiAgICBsZXQgZHJhaW5lZCA9IG5ldyBfZGV0YWNoZWRwcm9taXNlLkRldGFjaGVkUHJvbWlzZSgpO1xuICAgIGZ1bmN0aW9uIG9uRHJhaW4oKSB7XG4gICAgICAgIGRyYWluZWQucmVzb2x2ZSgpO1xuICAgIH1cbiAgICByZXMub24oJ2RyYWluJywgb25EcmFpbik7XG4gICAgLy8gSWYgdGhlIGZpbmlzaCBldmVudCBmaXJlcywgaXQgbWVhbnMgd2Ugc2hvdWxkbid0IGJsb2NrIGFuZCB3YWl0IGZvciB0aGVcbiAgICAvLyBkcmFpbiBldmVudC5cbiAgICByZXMub25jZSgnY2xvc2UnLCAoKT0+e1xuICAgICAgICByZXMub2ZmKCdkcmFpbicsIG9uRHJhaW4pO1xuICAgICAgICBkcmFpbmVkLnJlc29sdmUoKTtcbiAgICB9KTtcbiAgICAvLyBDcmVhdGUgYSBwcm9taXNlIHRoYXQgd2lsbCByZXNvbHZlIG9uY2UgdGhlIHJlc3BvbnNlIGhhcyBmaW5pc2hlZC4gU2VlXG4gICAgLy8gaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9odHRwLmh0bWwjZXZlbnQtZmluaXNoXzFcbiAgICBjb25zdCBmaW5pc2hlZCA9IG5ldyBfZGV0YWNoZWRwcm9taXNlLkRldGFjaGVkUHJvbWlzZSgpO1xuICAgIHJlcy5vbmNlKCdmaW5pc2gnLCAoKT0+e1xuICAgICAgICBmaW5pc2hlZC5yZXNvbHZlKCk7XG4gICAgfSk7XG4gICAgLy8gQ3JlYXRlIGEgd3JpdGFibGUgc3RyZWFtIHRoYXQgd2lsbCB3cml0ZSB0byB0aGUgcmVzcG9uc2UuXG4gICAgcmV0dXJuIG5ldyBXcml0YWJsZVN0cmVhbSh7XG4gICAgICAgIHdyaXRlOiBhc3luYyAoY2h1bmspPT57XG4gICAgICAgICAgICAvLyBZb3UnZCB0aGluayB3ZSdkIHdhbnQgdG8gdXNlIGBzdGFydGAgaW5zdGVhZCBvZiBwbGFjaW5nIHRoaXMgaW4gYHdyaXRlYFxuICAgICAgICAgICAgLy8gYnV0IHRoaXMgZW5zdXJlcyB0aGF0IHdlIGRvbid0IGFjdHVhbGx5IGZsdXNoIHRoZSBoZWFkZXJzIHVudGlsIHdlJ3ZlXG4gICAgICAgICAgICAvLyBzdGFydGVkIHdyaXRpbmcgY2h1bmtzLlxuICAgICAgICAgICAgaWYgKCFzdGFydGVkKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKCdwZXJmb3JtYW5jZScgaW4gZ2xvYmFsVGhpcyAmJiBwcm9jZXNzLmVudi5ORVhUX09URUxfUEVSRk9STUFOQ0VfUFJFRklYKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1ldHJpY3MgPSAoMCwgX2NsaWVudGNvbXBvbmVudHJlbmRlcmVybG9nZ2VyLmdldENsaWVudENvbXBvbmVudExvYWRlck1ldHJpY3MpKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtZXRyaWNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtYW5jZS5tZWFzdXJlKGAke3Byb2Nlc3MuZW52Lk5FWFRfT1RFTF9QRVJGT1JNQU5DRV9QUkVGSVh9Om5leHQtY2xpZW50LWNvbXBvbmVudC1sb2FkaW5nYCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBtZXRyaWNzLmNsaWVudENvbXBvbmVudExvYWRTdGFydCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IG1ldHJpY3MuY2xpZW50Q29tcG9uZW50TG9hZFN0YXJ0ICsgbWV0cmljcy5jbGllbnRDb21wb25lbnRMb2FkVGltZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlcy5mbHVzaEhlYWRlcnMoKTtcbiAgICAgICAgICAgICAgICAoMCwgX3RyYWNlci5nZXRUcmFjZXIpKCkudHJhY2UoX2NvbnN0YW50cy5OZXh0Tm9kZVNlcnZlclNwYW4uc3RhcnRSZXNwb25zZSwge1xuICAgICAgICAgICAgICAgICAgICBzcGFuTmFtZTogJ3N0YXJ0IHJlc3BvbnNlJ1xuICAgICAgICAgICAgICAgIH0sICgpPT51bmRlZmluZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBvayA9IHJlcy53cml0ZShjaHVuayk7XG4gICAgICAgICAgICAgICAgLy8gQWRkZWQgYnkgdGhlIGBjb21wcmVzc2lvbmAgbWlkZGxld2FyZSwgdGhpcyBpcyBhIGZ1bmN0aW9uIHRoYXQgd2lsbFxuICAgICAgICAgICAgICAgIC8vIGZsdXNoIHRoZSBwYXJ0aWFsbHktY29tcHJlc3NlZCByZXNwb25zZSB0byB0aGUgY2xpZW50LlxuICAgICAgICAgICAgICAgIGlmICgnZmx1c2gnIGluIHJlcyAmJiB0eXBlb2YgcmVzLmZsdXNoID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5mbHVzaCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgd3JpdGUgcmV0dXJucyBmYWxzZSwgaXQgbWVhbnMgdGhlcmUncyBzb21lIGJhY2twcmVzc3VyZSwgc29cbiAgICAgICAgICAgICAgICAvLyB3YWl0IHVudGlsIGl0J3Mgc3RyZWFtZWQgYmVmb3JlIGNvbnRpbnVpbmcuXG4gICAgICAgICAgICAgICAgaWYgKCFvaykge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBkcmFpbmVkLnByb21pc2U7XG4gICAgICAgICAgICAgICAgICAgIC8vIFJlc2V0IHRoZSBkcmFpbmVkIHByb21pc2Ugc28gdGhhdCB3ZSBjYW4gd2FpdCBmb3IgdGhlIG5leHQgZHJhaW4gZXZlbnQuXG4gICAgICAgICAgICAgICAgICAgIGRyYWluZWQgPSBuZXcgX2RldGFjaGVkcHJvbWlzZS5EZXRhY2hlZFByb21pc2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICByZXMuZW5kKCk7XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcignZmFpbGVkIHRvIHdyaXRlIGNodW5rIHRvIHJlc3BvbnNlJywge1xuICAgICAgICAgICAgICAgICAgICBjYXVzZTogZXJyXG4gICAgICAgICAgICAgICAgfSksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMzIxXCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgYWJvcnQ6IChlcnIpPT57XG4gICAgICAgICAgICBpZiAocmVzLndyaXRhYmxlRmluaXNoZWQpIHJldHVybjtcbiAgICAgICAgICAgIHJlcy5kZXN0cm95KGVycik7XG4gICAgICAgIH0sXG4gICAgICAgIGNsb3NlOiBhc3luYyAoKT0+e1xuICAgICAgICAgICAgLy8gaWYgYSB3YWl0VW50aWwgcHJvbWlzZSB3YXMgcGFzc2VkLCB3YWl0IGZvciBpdCB0byByZXNvbHZlIGJlZm9yZVxuICAgICAgICAgICAgLy8gZW5kaW5nIHRoZSByZXNwb25zZS5cbiAgICAgICAgICAgIGlmICh3YWl0VW50aWxGb3JFbmQpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB3YWl0VW50aWxGb3JFbmQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVzLndyaXRhYmxlRmluaXNoZWQpIHJldHVybjtcbiAgICAgICAgICAgIHJlcy5lbmQoKTtcbiAgICAgICAgICAgIHJldHVybiBmaW5pc2hlZC5wcm9taXNlO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5hc3luYyBmdW5jdGlvbiBwaXBlVG9Ob2RlUmVzcG9uc2UocmVhZGFibGUsIHJlcywgd2FpdFVudGlsRm9yRW5kKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gSWYgdGhlIHJlc3BvbnNlIGhhcyBhbHJlYWR5IGVycm9yZWQsIHRoZW4ganVzdCByZXR1cm4gbm93LlxuICAgICAgICBjb25zdCB7IGVycm9yZWQsIGRlc3Ryb3llZCB9ID0gcmVzO1xuICAgICAgICBpZiAoZXJyb3JlZCB8fCBkZXN0cm95ZWQpIHJldHVybjtcbiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IEFib3J0Q29udHJvbGxlciBzbyB0aGF0IHdlIGNhbiBhYm9ydCB0aGUgcmVhZGFibGUgaWYgdGhlXG4gICAgICAgIC8vIGNsaWVudCBkaXNjb25uZWN0cy5cbiAgICAgICAgY29uc3QgY29udHJvbGxlciA9ICgwLCBfbmV4dHJlcXVlc3QuY3JlYXRlQWJvcnRDb250cm9sbGVyKShyZXMpO1xuICAgICAgICBjb25zdCB3cml0ZXIgPSBjcmVhdGVXcml0ZXJGcm9tUmVzcG9uc2UocmVzLCB3YWl0VW50aWxGb3JFbmQpO1xuICAgICAgICBhd2FpdCByZWFkYWJsZS5waXBlVG8od3JpdGVyLCB7XG4gICAgICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsXG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAvLyBJZiB0aGlzIGlzbid0IHJlbGF0ZWQgdG8gYW4gYWJvcnQgZXJyb3IsIHJlLXRocm93IGl0LlxuICAgICAgICBpZiAoaXNBYm9ydEVycm9yKGVycikpIHJldHVybjtcbiAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcignZmFpbGVkIHRvIHBpcGUgcmVzcG9uc2UnLCB7XG4gICAgICAgICAgICBjYXVzZTogZXJyXG4gICAgICAgIH0pLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgIHZhbHVlOiBcIkUxODBcIixcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGlwZS1yZWFkYWJsZS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/pipe-readable.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/render-result.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/next/dist/server/render-result.js ***!
|
||
\********************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return RenderResult;\n }\n}));\nconst _nodewebstreamshelper = __webpack_require__(/*! ./stream-utils/node-web-streams-helper */ \"(rsc)/./node_modules/next/dist/server/stream-utils/node-web-streams-helper.js\");\nconst _pipereadable = __webpack_require__(/*! ./pipe-readable */ \"(rsc)/./node_modules/next/dist/server/pipe-readable.js\");\nconst _invarianterror = __webpack_require__(/*! ../shared/lib/invariant-error */ \"(rsc)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nclass RenderResult {\n static #_ = /**\n * A render result that represents an empty response. This is used to\n * represent a response that was not found or was already sent.\n */ this.EMPTY = new RenderResult(null, {\n metadata: {},\n contentType: null\n });\n /**\n * Creates a new RenderResult instance from a static response.\n *\n * @param value the static response value\n * @param contentType the content type of the response\n * @returns a new RenderResult instance\n */ static fromStatic(value, contentType) {\n return new RenderResult(value, {\n metadata: {},\n contentType\n });\n }\n constructor(response, { contentType, waitUntil, metadata }){\n this.response = response;\n this.contentType = contentType;\n this.metadata = metadata;\n this.waitUntil = waitUntil;\n }\n assignMetadata(metadata) {\n Object.assign(this.metadata, metadata);\n }\n /**\n * Returns true if the response is null. It can be null if the response was\n * not found or was already sent.\n */ get isNull() {\n return this.response === null;\n }\n /**\n * Returns false if the response is a string. It can be a string if the page\n * was prerendered. If it's not, then it was generated dynamically.\n */ get isDynamic() {\n return typeof this.response !== 'string';\n }\n toUnchunkedString(stream = false) {\n if (this.response === null) {\n // If the response is null, return an empty string. This behavior is\n // intentional as we're now providing the `RenderResult.EMPTY` value.\n return '';\n }\n if (typeof this.response !== 'string') {\n if (!stream) {\n throw Object.defineProperty(new _invarianterror.InvariantError('dynamic responses cannot be unchunked. This is a bug in Next.js'), \"__NEXT_ERROR_CODE\", {\n value: \"E732\",\n enumerable: false,\n configurable: true\n });\n }\n return (0, _nodewebstreamshelper.streamToString)(this.readable);\n }\n return this.response;\n }\n /**\n * Returns a readable stream of the response.\n */ get readable() {\n if (this.response === null) {\n // If the response is null, return an empty stream. This behavior is\n // intentional as we're now providing the `RenderResult.EMPTY` value.\n return new ReadableStream({\n start (controller) {\n controller.close();\n }\n });\n }\n if (typeof this.response === 'string') {\n return (0, _nodewebstreamshelper.streamFromString)(this.response);\n }\n if (Buffer.isBuffer(this.response)) {\n return (0, _nodewebstreamshelper.streamFromBuffer)(this.response);\n }\n // If the response is an array of streams, then chain them together.\n if (Array.isArray(this.response)) {\n return (0, _nodewebstreamshelper.chainStreams)(...this.response);\n }\n return this.response;\n }\n /**\n * Coerces the response to an array of streams. This will convert the response\n * to an array of streams if it is not already one.\n *\n * @returns An array of streams\n */ coerce() {\n if (this.response === null) {\n // If the response is null, return an empty stream. This behavior is\n // intentional as we're now providing the `RenderResult.EMPTY` value.\n return [];\n }\n if (typeof this.response === 'string') {\n return [\n (0, _nodewebstreamshelper.streamFromString)(this.response)\n ];\n } else if (Array.isArray(this.response)) {\n return this.response;\n } else if (Buffer.isBuffer(this.response)) {\n return [\n (0, _nodewebstreamshelper.streamFromBuffer)(this.response)\n ];\n } else {\n return [\n this.response\n ];\n }\n }\n /**\n * Pipes the response through a transform stream. This converts the response\n * to a single readable stream (chaining if needed) and pipes it through the\n * provided transform.\n *\n * @param transform The transform stream to pipe through\n */ pipeThrough(transform) {\n this.response = this.readable.pipeThrough(transform);\n }\n /**\n * Unshifts a new stream to the response. This will convert the response to an\n * array of streams if it is not already one and will add the new stream to\n * the start of the array. When this response is piped, all of the streams\n * will be piped one after the other.\n *\n * @param readable The new stream to unshift\n */ unshift(readable) {\n // Coerce the response to an array of streams.\n this.response = this.coerce();\n // Add the new stream to the start of the array.\n this.response.unshift(readable);\n }\n /**\n * Chains a new stream to the response. This will convert the response to an\n * array of streams if it is not already one and will add the new stream to\n * the end. When this response is piped, all of the streams will be piped\n * one after the other.\n *\n * @param readable The new stream to chain\n */ push(readable) {\n // Coerce the response to an array of streams.\n this.response = this.coerce();\n // Add the new stream to the end of the array.\n this.response.push(readable);\n }\n /**\n * Pipes the response to a writable stream. This will close/cancel the\n * writable stream if an error is encountered. If this doesn't throw, then\n * the writable stream will be closed or aborted.\n *\n * @param writable Writable stream to pipe the response to\n */ async pipeTo(writable) {\n try {\n await this.readable.pipeTo(writable, {\n // We want to close the writable stream ourselves so that we can wait\n // for the waitUntil promise to resolve before closing it. If an error\n // is encountered, we'll abort the writable stream if we swallowed the\n // error.\n preventClose: true\n });\n // If there is a waitUntil promise, wait for it to resolve before\n // closing the writable stream.\n if (this.waitUntil) await this.waitUntil;\n // Close the writable stream.\n await writable.close();\n } catch (err) {\n // If this is an abort error, we should abort the writable stream (as we\n // took ownership of it when we started piping). We don't need to re-throw\n // because we handled the error.\n if ((0, _pipereadable.isAbortError)(err)) {\n // Abort the writable stream if an error is encountered.\n await writable.abort(err);\n return;\n }\n // We're not aborting the writer here as when this method throws it's not\n // clear as to how so the caller should assume it's their responsibility\n // to clean up the writer.\n throw err;\n }\n }\n /**\n * Pipes the response to a node response. This will close/cancel the node\n * response if an error is encountered.\n *\n * @param res\n */ async pipeToNodeResponse(res) {\n await (0, _pipereadable.pipeToNodeResponse)(this.readable, res, this.waitUntil);\n }\n}\n\n//# sourceMappingURL=render-result.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZW5kZXItcmVzdWx0LmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsMkNBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsOEJBQThCLG1CQUFPLENBQUMsNkhBQXdDO0FBQzlFLHNCQUFzQixtQkFBTyxDQUFDLCtFQUFpQjtBQUMvQyx3QkFBd0IsbUJBQU8sQ0FBQyxtR0FBK0I7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0EsU0FBUztBQUNUO0FBQ0EsNEJBQTRCLGtDQUFrQztBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL3JlbmRlci1yZXN1bHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkZWZhdWx0XCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSZW5kZXJSZXN1bHQ7XG4gICAgfVxufSk7XG5jb25zdCBfbm9kZXdlYnN0cmVhbXNoZWxwZXIgPSByZXF1aXJlKFwiLi9zdHJlYW0tdXRpbHMvbm9kZS13ZWItc3RyZWFtcy1oZWxwZXJcIik7XG5jb25zdCBfcGlwZXJlYWRhYmxlID0gcmVxdWlyZShcIi4vcGlwZS1yZWFkYWJsZVwiKTtcbmNvbnN0IF9pbnZhcmlhbnRlcnJvciA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL2ludmFyaWFudC1lcnJvclwiKTtcbmNsYXNzIFJlbmRlclJlc3VsdCB7XG4gICAgc3RhdGljICNfID0gLyoqXG4gICAqIEEgcmVuZGVyIHJlc3VsdCB0aGF0IHJlcHJlc2VudHMgYW4gZW1wdHkgcmVzcG9uc2UuIFRoaXMgaXMgdXNlZCB0b1xuICAgKiByZXByZXNlbnQgYSByZXNwb25zZSB0aGF0IHdhcyBub3QgZm91bmQgb3Igd2FzIGFscmVhZHkgc2VudC5cbiAgICovIHRoaXMuRU1QVFkgPSBuZXcgUmVuZGVyUmVzdWx0KG51bGwsIHtcbiAgICAgICAgbWV0YWRhdGE6IHt9LFxuICAgICAgICBjb250ZW50VHlwZTogbnVsbFxuICAgIH0pO1xuICAgIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFJlbmRlclJlc3VsdCBpbnN0YW5jZSBmcm9tIGEgc3RhdGljIHJlc3BvbnNlLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgdGhlIHN0YXRpYyByZXNwb25zZSB2YWx1ZVxuICAgKiBAcGFyYW0gY29udGVudFR5cGUgdGhlIGNvbnRlbnQgdHlwZSBvZiB0aGUgcmVzcG9uc2VcbiAgICogQHJldHVybnMgYSBuZXcgUmVuZGVyUmVzdWx0IGluc3RhbmNlXG4gICAqLyBzdGF0aWMgZnJvbVN0YXRpYyh2YWx1ZSwgY29udGVudFR5cGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZW5kZXJSZXN1bHQodmFsdWUsIHtcbiAgICAgICAgICAgIG1ldGFkYXRhOiB7fSxcbiAgICAgICAgICAgIGNvbnRlbnRUeXBlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihyZXNwb25zZSwgeyBjb250ZW50VHlwZSwgd2FpdFVudGlsLCBtZXRhZGF0YSB9KXtcbiAgICAgICAgdGhpcy5yZXNwb25zZSA9IHJlc3BvbnNlO1xuICAgICAgICB0aGlzLmNvbnRlbnRUeXBlID0gY29udGVudFR5cGU7XG4gICAgICAgIHRoaXMubWV0YWRhdGEgPSBtZXRhZGF0YTtcbiAgICAgICAgdGhpcy53YWl0VW50aWwgPSB3YWl0VW50aWw7XG4gICAgfVxuICAgIGFzc2lnbk1ldGFkYXRhKG1ldGFkYXRhKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5tZXRhZGF0YSwgbWV0YWRhdGEpO1xuICAgIH1cbiAgICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoZSByZXNwb25zZSBpcyBudWxsLiBJdCBjYW4gYmUgbnVsbCBpZiB0aGUgcmVzcG9uc2Ugd2FzXG4gICAqIG5vdCBmb3VuZCBvciB3YXMgYWxyZWFkeSBzZW50LlxuICAgKi8gZ2V0IGlzTnVsbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzcG9uc2UgPT09IG51bGw7XG4gICAgfVxuICAgIC8qKlxuICAgKiBSZXR1cm5zIGZhbHNlIGlmIHRoZSByZXNwb25zZSBpcyBhIHN0cmluZy4gSXQgY2FuIGJlIGEgc3RyaW5nIGlmIHRoZSBwYWdlXG4gICAqIHdhcyBwcmVyZW5kZXJlZC4gSWYgaXQncyBub3QsIHRoZW4gaXQgd2FzIGdlbmVyYXRlZCBkeW5hbWljYWxseS5cbiAgICovIGdldCBpc0R5bmFtaWMoKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5yZXNwb25zZSAhPT0gJ3N0cmluZyc7XG4gICAgfVxuICAgIHRvVW5jaHVua2VkU3RyaW5nKHN0cmVhbSA9IGZhbHNlKSB7XG4gICAgICAgIGlmICh0aGlzLnJlc3BvbnNlID09PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBJZiB0aGUgcmVzcG9uc2UgaXMgbnVsbCwgcmV0dXJuIGFuIGVtcHR5IHN0cmluZy4gVGhpcyBiZWhhdmlvciBpc1xuICAgICAgICAgICAgLy8gaW50ZW50aW9uYWwgYXMgd2UncmUgbm93IHByb3ZpZGluZyB0aGUgYFJlbmRlclJlc3VsdC5FTVBUWWAgdmFsdWUuXG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlc3BvbnNlICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgaWYgKCFzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignZHluYW1pYyByZXNwb25zZXMgY2Fubm90IGJlIHVuY2h1bmtlZC4gVGhpcyBpcyBhIGJ1ZyBpbiBOZXh0LmpzJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNzMyXCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAoMCwgX25vZGV3ZWJzdHJlYW1zaGVscGVyLnN0cmVhbVRvU3RyaW5nKSh0aGlzLnJlYWRhYmxlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZXNwb25zZTtcbiAgICB9XG4gICAgLyoqXG4gICAqIFJldHVybnMgYSByZWFkYWJsZSBzdHJlYW0gb2YgdGhlIHJlc3BvbnNlLlxuICAgKi8gZ2V0IHJlYWRhYmxlKCkge1xuICAgICAgICBpZiAodGhpcy5yZXNwb25zZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gSWYgdGhlIHJlc3BvbnNlIGlzIG51bGwsIHJldHVybiBhbiBlbXB0eSBzdHJlYW0uIFRoaXMgYmVoYXZpb3IgaXNcbiAgICAgICAgICAgIC8vIGludGVudGlvbmFsIGFzIHdlJ3JlIG5vdyBwcm92aWRpbmcgdGhlIGBSZW5kZXJSZXN1bHQuRU1QVFlgIHZhbHVlLlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgICAgICAgICAgICAgc3RhcnQgKGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlci5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZXNwb25zZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiAoMCwgX25vZGV3ZWJzdHJlYW1zaGVscGVyLnN0cmVhbUZyb21TdHJpbmcpKHRoaXMucmVzcG9uc2UpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChCdWZmZXIuaXNCdWZmZXIodGhpcy5yZXNwb25zZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAoMCwgX25vZGV3ZWJzdHJlYW1zaGVscGVyLnN0cmVhbUZyb21CdWZmZXIpKHRoaXMucmVzcG9uc2UpO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIHRoZSByZXNwb25zZSBpcyBhbiBhcnJheSBvZiBzdHJlYW1zLCB0aGVuIGNoYWluIHRoZW0gdG9nZXRoZXIuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMucmVzcG9uc2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIF9ub2Rld2Vic3RyZWFtc2hlbHBlci5jaGFpblN0cmVhbXMpKC4uLnRoaXMucmVzcG9uc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlc3BvbnNlO1xuICAgIH1cbiAgICAvKipcbiAgICogQ29lcmNlcyB0aGUgcmVzcG9uc2UgdG8gYW4gYXJyYXkgb2Ygc3RyZWFtcy4gVGhpcyB3aWxsIGNvbnZlcnQgdGhlIHJlc3BvbnNlXG4gICAqIHRvIGFuIGFycmF5IG9mIHN0cmVhbXMgaWYgaXQgaXMgbm90IGFscmVhZHkgb25lLlxuICAgKlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzdHJlYW1zXG4gICAqLyBjb2VyY2UoKSB7XG4gICAgICAgIGlmICh0aGlzLnJlc3BvbnNlID09PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBJZiB0aGUgcmVzcG9uc2UgaXMgbnVsbCwgcmV0dXJuIGFuIGVtcHR5IHN0cmVhbS4gVGhpcyBiZWhhdmlvciBpc1xuICAgICAgICAgICAgLy8gaW50ZW50aW9uYWwgYXMgd2UncmUgbm93IHByb3ZpZGluZyB0aGUgYFJlbmRlclJlc3VsdC5FTVBUWWAgdmFsdWUuXG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlc3BvbnNlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAoMCwgX25vZGV3ZWJzdHJlYW1zaGVscGVyLnN0cmVhbUZyb21TdHJpbmcpKHRoaXMucmVzcG9uc2UpXG4gICAgICAgICAgICBdO1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5yZXNwb25zZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc3BvbnNlO1xuICAgICAgICB9IGVsc2UgaWYgKEJ1ZmZlci5pc0J1ZmZlcih0aGlzLnJlc3BvbnNlKSkge1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAoMCwgX25vZGV3ZWJzdHJlYW1zaGVscGVyLnN0cmVhbUZyb21CdWZmZXIpKHRoaXMucmVzcG9uc2UpXG4gICAgICAgICAgICBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgKiBQaXBlcyB0aGUgcmVzcG9uc2UgdGhyb3VnaCBhIHRyYW5zZm9ybSBzdHJlYW0uIFRoaXMgY29udmVydHMgdGhlIHJlc3BvbnNlXG4gICAqIHRvIGEgc2luZ2xlIHJlYWRhYmxlIHN0cmVhbSAoY2hhaW5pbmcgaWYgbmVlZGVkKSBhbmQgcGlwZXMgaXQgdGhyb3VnaCB0aGVcbiAgICogcHJvdmlkZWQgdHJhbnNmb3JtLlxuICAgKlxuICAgKiBAcGFyYW0gdHJhbnNmb3JtIFRoZSB0cmFuc2Zvcm0gc3RyZWFtIHRvIHBpcGUgdGhyb3VnaFxuICAgKi8gcGlwZVRocm91Z2godHJhbnNmb3JtKSB7XG4gICAgICAgIHRoaXMucmVzcG9uc2UgPSB0aGlzLnJlYWRhYmxlLnBpcGVUaHJvdWdoKHRyYW5zZm9ybSk7XG4gICAgfVxuICAgIC8qKlxuICAgKiBVbnNoaWZ0cyBhIG5ldyBzdHJlYW0gdG8gdGhlIHJlc3BvbnNlLiBUaGlzIHdpbGwgY29udmVydCB0aGUgcmVzcG9uc2UgdG8gYW5cbiAgICogYXJyYXkgb2Ygc3RyZWFtcyBpZiBpdCBpcyBub3QgYWxyZWFkeSBvbmUgYW5kIHdpbGwgYWRkIHRoZSBuZXcgc3RyZWFtIHRvXG4gICAqIHRoZSBzdGFydCBvZiB0aGUgYXJyYXkuIFdoZW4gdGhpcyByZXNwb25zZSBpcyBwaXBlZCwgYWxsIG9mIHRoZSBzdHJlYW1zXG4gICAqIHdpbGwgYmUgcGlwZWQgb25lIGFmdGVyIHRoZSBvdGhlci5cbiAgICpcbiAgICogQHBhcmFtIHJlYWRhYmxlIFRoZSBuZXcgc3RyZWFtIHRvIHVuc2hpZnRcbiAgICovIHVuc2hpZnQocmVhZGFibGUpIHtcbiAgICAgICAgLy8gQ29lcmNlIHRoZSByZXNwb25zZSB0byBhbiBhcnJheSBvZiBzdHJlYW1zLlxuICAgICAgICB0aGlzLnJlc3BvbnNlID0gdGhpcy5jb2VyY2UoKTtcbiAgICAgICAgLy8gQWRkIHRoZSBuZXcgc3RyZWFtIHRvIHRoZSBzdGFydCBvZiB0aGUgYXJyYXkuXG4gICAgICAgIHRoaXMucmVzcG9uc2UudW5zaGlmdChyZWFkYWJsZSk7XG4gICAgfVxuICAgIC8qKlxuICAgKiBDaGFpbnMgYSBuZXcgc3RyZWFtIHRvIHRoZSByZXNwb25zZS4gVGhpcyB3aWxsIGNvbnZlcnQgdGhlIHJlc3BvbnNlIHRvIGFuXG4gICAqIGFycmF5IG9mIHN0cmVhbXMgaWYgaXQgaXMgbm90IGFscmVhZHkgb25lIGFuZCB3aWxsIGFkZCB0aGUgbmV3IHN0cmVhbSB0b1xuICAgKiB0aGUgZW5kLiBXaGVuIHRoaXMgcmVzcG9uc2UgaXMgcGlwZWQsIGFsbCBvZiB0aGUgc3RyZWFtcyB3aWxsIGJlIHBpcGVkXG4gICAqIG9uZSBhZnRlciB0aGUgb3RoZXIuXG4gICAqXG4gICAqIEBwYXJhbSByZWFkYWJsZSBUaGUgbmV3IHN0cmVhbSB0byBjaGFpblxuICAgKi8gcHVzaChyZWFkYWJsZSkge1xuICAgICAgICAvLyBDb2VyY2UgdGhlIHJlc3BvbnNlIHRvIGFuIGFycmF5IG9mIHN0cmVhbXMuXG4gICAgICAgIHRoaXMucmVzcG9uc2UgPSB0aGlzLmNvZXJjZSgpO1xuICAgICAgICAvLyBBZGQgdGhlIG5ldyBzdHJlYW0gdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkuXG4gICAgICAgIHRoaXMucmVzcG9uc2UucHVzaChyZWFkYWJsZSk7XG4gICAgfVxuICAgIC8qKlxuICAgKiBQaXBlcyB0aGUgcmVzcG9uc2UgdG8gYSB3cml0YWJsZSBzdHJlYW0uIFRoaXMgd2lsbCBjbG9zZS9jYW5jZWwgdGhlXG4gICAqIHdyaXRhYmxlIHN0cmVhbSBpZiBhbiBlcnJvciBpcyBlbmNvdW50ZXJlZC4gSWYgdGhpcyBkb2Vzbid0IHRocm93LCB0aGVuXG4gICAqIHRoZSB3cml0YWJsZSBzdHJlYW0gd2lsbCBiZSBjbG9zZWQgb3IgYWJvcnRlZC5cbiAgICpcbiAgICogQHBhcmFtIHdyaXRhYmxlIFdyaXRhYmxlIHN0cmVhbSB0byBwaXBlIHRoZSByZXNwb25zZSB0b1xuICAgKi8gYXN5bmMgcGlwZVRvKHdyaXRhYmxlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlYWRhYmxlLnBpcGVUbyh3cml0YWJsZSwge1xuICAgICAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gY2xvc2UgdGhlIHdyaXRhYmxlIHN0cmVhbSBvdXJzZWx2ZXMgc28gdGhhdCB3ZSBjYW4gd2FpdFxuICAgICAgICAgICAgICAgIC8vIGZvciB0aGUgd2FpdFVudGlsIHByb21pc2UgdG8gcmVzb2x2ZSBiZWZvcmUgY2xvc2luZyBpdC4gSWYgYW4gZXJyb3JcbiAgICAgICAgICAgICAgICAvLyBpcyBlbmNvdW50ZXJlZCwgd2UnbGwgYWJvcnQgdGhlIHdyaXRhYmxlIHN0cmVhbSBpZiB3ZSBzd2FsbG93ZWQgdGhlXG4gICAgICAgICAgICAgICAgLy8gZXJyb3IuXG4gICAgICAgICAgICAgICAgcHJldmVudENsb3NlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgd2FpdFVudGlsIHByb21pc2UsIHdhaXQgZm9yIGl0IHRvIHJlc29sdmUgYmVmb3JlXG4gICAgICAgICAgICAvLyBjbG9zaW5nIHRoZSB3cml0YWJsZSBzdHJlYW0uXG4gICAgICAgICAgICBpZiAodGhpcy53YWl0VW50aWwpIGF3YWl0IHRoaXMud2FpdFVudGlsO1xuICAgICAgICAgICAgLy8gQ2xvc2UgdGhlIHdyaXRhYmxlIHN0cmVhbS5cbiAgICAgICAgICAgIGF3YWl0IHdyaXRhYmxlLmNsb3NlKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhbiBhYm9ydCBlcnJvciwgd2Ugc2hvdWxkIGFib3J0IHRoZSB3cml0YWJsZSBzdHJlYW0gKGFzIHdlXG4gICAgICAgICAgICAvLyB0b29rIG93bmVyc2hpcCBvZiBpdCB3aGVuIHdlIHN0YXJ0ZWQgcGlwaW5nKS4gV2UgZG9uJ3QgbmVlZCB0byByZS10aHJvd1xuICAgICAgICAgICAgLy8gYmVjYXVzZSB3ZSBoYW5kbGVkIHRoZSBlcnJvci5cbiAgICAgICAgICAgIGlmICgoMCwgX3BpcGVyZWFkYWJsZS5pc0Fib3J0RXJyb3IpKGVycikpIHtcbiAgICAgICAgICAgICAgICAvLyBBYm9ydCB0aGUgd3JpdGFibGUgc3RyZWFtIGlmIGFuIGVycm9yIGlzIGVuY291bnRlcmVkLlxuICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRhYmxlLmFib3J0KGVycik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gV2UncmUgbm90IGFib3J0aW5nIHRoZSB3cml0ZXIgaGVyZSBhcyB3aGVuIHRoaXMgbWV0aG9kIHRocm93cyBpdCdzIG5vdFxuICAgICAgICAgICAgLy8gY2xlYXIgYXMgdG8gaG93IHNvIHRoZSBjYWxsZXIgc2hvdWxkIGFzc3VtZSBpdCdzIHRoZWlyIHJlc3BvbnNpYmlsaXR5XG4gICAgICAgICAgICAvLyB0byBjbGVhbiB1cCB0aGUgd3JpdGVyLlxuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgKiBQaXBlcyB0aGUgcmVzcG9uc2UgdG8gYSBub2RlIHJlc3BvbnNlLiBUaGlzIHdpbGwgY2xvc2UvY2FuY2VsIHRoZSBub2RlXG4gICAqIHJlc3BvbnNlIGlmIGFuIGVycm9yIGlzIGVuY291bnRlcmVkLlxuICAgKlxuICAgKiBAcGFyYW0gcmVzXG4gICAqLyBhc3luYyBwaXBlVG9Ob2RlUmVzcG9uc2UocmVzKSB7XG4gICAgICAgIGF3YWl0ICgwLCBfcGlwZXJlYWRhYmxlLnBpcGVUb05vZGVSZXNwb25zZSkodGhpcy5yZWFkYWJsZSwgcmVzLCB0aGlzLndhaXRVbnRpbCk7XG4gICAgfVxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZW5kZXItcmVzdWx0LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/render-result.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/request-meta.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/next/dist/server/request-meta.js ***!
|
||
\*******************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n NEXT_REQUEST_META: function() {\n return NEXT_REQUEST_META;\n },\n addRequestMeta: function() {\n return addRequestMeta;\n },\n getRequestMeta: function() {\n return getRequestMeta;\n },\n removeRequestMeta: function() {\n return removeRequestMeta;\n },\n setRequestMeta: function() {\n return setRequestMeta;\n }\n});\nconst NEXT_REQUEST_META = Symbol.for('NextInternalRequestMeta');\nfunction getRequestMeta(req, key) {\n const meta = req[NEXT_REQUEST_META] || {};\n return typeof key === 'string' ? meta[key] : meta;\n}\nfunction setRequestMeta(req, meta) {\n req[NEXT_REQUEST_META] = meta;\n return meta;\n}\nfunction addRequestMeta(request, key, value) {\n const meta = getRequestMeta(request);\n meta[key] = value;\n return setRequestMeta(request, meta);\n}\nfunction removeRequestMeta(request, key) {\n const meta = getRequestMeta(request);\n delete meta[key];\n return setRequestMeta(request, meta);\n}\n\n//# sourceMappingURL=request-meta.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXF1ZXN0LW1ldGEuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBTUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXF1ZXN0LW1ldGEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBORVhUX1JFUVVFU1RfTUVUQTogbnVsbCxcbiAgICBhZGRSZXF1ZXN0TWV0YTogbnVsbCxcbiAgICBnZXRSZXF1ZXN0TWV0YTogbnVsbCxcbiAgICByZW1vdmVSZXF1ZXN0TWV0YTogbnVsbCxcbiAgICBzZXRSZXF1ZXN0TWV0YTogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBORVhUX1JFUVVFU1RfTUVUQTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBORVhUX1JFUVVFU1RfTUVUQTtcbiAgICB9LFxuICAgIGFkZFJlcXVlc3RNZXRhOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGFkZFJlcXVlc3RNZXRhO1xuICAgIH0sXG4gICAgZ2V0UmVxdWVzdE1ldGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZ2V0UmVxdWVzdE1ldGE7XG4gICAgfSxcbiAgICByZW1vdmVSZXF1ZXN0TWV0YTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZW1vdmVSZXF1ZXN0TWV0YTtcbiAgICB9LFxuICAgIHNldFJlcXVlc3RNZXRhOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHNldFJlcXVlc3RNZXRhO1xuICAgIH1cbn0pO1xuY29uc3QgTkVYVF9SRVFVRVNUX01FVEEgPSBTeW1ib2wuZm9yKCdOZXh0SW50ZXJuYWxSZXF1ZXN0TWV0YScpO1xuZnVuY3Rpb24gZ2V0UmVxdWVzdE1ldGEocmVxLCBrZXkpIHtcbiAgICBjb25zdCBtZXRhID0gcmVxW05FWFRfUkVRVUVTVF9NRVRBXSB8fCB7fTtcbiAgICByZXR1cm4gdHlwZW9mIGtleSA9PT0gJ3N0cmluZycgPyBtZXRhW2tleV0gOiBtZXRhO1xufVxuZnVuY3Rpb24gc2V0UmVxdWVzdE1ldGEocmVxLCBtZXRhKSB7XG4gICAgcmVxW05FWFRfUkVRVUVTVF9NRVRBXSA9IG1ldGE7XG4gICAgcmV0dXJuIG1ldGE7XG59XG5mdW5jdGlvbiBhZGRSZXF1ZXN0TWV0YShyZXF1ZXN0LCBrZXksIHZhbHVlKSB7XG4gICAgY29uc3QgbWV0YSA9IGdldFJlcXVlc3RNZXRhKHJlcXVlc3QpO1xuICAgIG1ldGFba2V5XSA9IHZhbHVlO1xuICAgIHJldHVybiBzZXRSZXF1ZXN0TWV0YShyZXF1ZXN0LCBtZXRhKTtcbn1cbmZ1bmN0aW9uIHJlbW92ZVJlcXVlc3RNZXRhKHJlcXVlc3QsIGtleSkge1xuICAgIGNvbnN0IG1ldGEgPSBnZXRSZXF1ZXN0TWV0YShyZXF1ZXN0KTtcbiAgICBkZWxldGUgbWV0YVtrZXldO1xuICAgIHJldHVybiBzZXRSZXF1ZXN0TWV0YShyZXF1ZXN0LCBtZXRhKTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVxdWVzdC1tZXRhLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/request-meta.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/request/fallback-params.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/request/fallback-params.js ***!
|
||
\******************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createOpaqueFallbackRouteParams: function() {\n return createOpaqueFallbackRouteParams;\n },\n getFallbackRouteParams: function() {\n return getFallbackRouteParams;\n }\n});\nconst _utils = __webpack_require__(/*! ../../build/static-paths/utils */ \"(rsc)/./node_modules/next/dist/build/static-paths/utils.js\");\nconst _getshortdynamicparamtype = __webpack_require__(/*! ../app-render/get-short-dynamic-param-type */ \"(rsc)/./node_modules/next/dist/server/app-render/get-short-dynamic-param-type.js\");\nconst _app = __webpack_require__(/*! ../../shared/lib/router/routes/app */ \"(rsc)/./node_modules/next/dist/shared/lib/router/routes/app.js\");\nconst _extractpathnamerouteparamsegmentsfromloadertree = __webpack_require__(/*! ../../build/static-paths/app/extract-pathname-route-param-segments-from-loader-tree */ \"(rsc)/./node_modules/next/dist/build/static-paths/app/extract-pathname-route-param-segments-from-loader-tree.js\");\nfunction createOpaqueFallbackRouteParams(fallbackRouteParams) {\n // If there are no fallback route params, we can return early.\n if (fallbackRouteParams.length === 0) return null;\n // As we're creating unique keys for each of the dynamic route params, we only\n // need to generate a unique ID once per request because each of the keys will\n // be also be unique.\n const uniqueID = Math.random().toString(16).slice(2);\n const keys = new Map();\n // Generate a unique key for the fallback route param, if this key is found\n // in the static output, it represents a bug in cache components.\n for (const { paramName, paramType } of fallbackRouteParams){\n keys.set(paramName, [\n `%%drp:${paramName}:${uniqueID}%%`,\n _getshortdynamicparamtype.dynamicParamTypes[paramType]\n ]);\n }\n return keys;\n}\nfunction getFallbackRouteParams(page, routeModule) {\n const route = (0, _app.parseAppRoute)(page, true);\n // Extract the pathname-contributing segments from the loader tree. This\n // mirrors the logic in buildAppStaticPaths where we determine which segments\n // actually contribute to the pathname.\n const { pathnameRouteParamSegments, params } = (0, _extractpathnamerouteparamsegmentsfromloadertree.extractPathnameRouteParamSegmentsFromLoaderTree)(routeModule.userland.loaderTree, route);\n // Create fallback route params for the pathname segments.\n const fallbackRouteParams = pathnameRouteParamSegments.map(({ paramName, paramType })=>({\n paramName,\n paramType\n }));\n // Resolve route params from the loader tree. This mutates the\n // fallbackRouteParams array to add any route params that are\n // unknown at request time.\n //\n // The page parameter contains placeholders like [slug], which helps\n // resolveRouteParamsFromTree determine which params are unknown.\n (0, _utils.resolveRouteParamsFromTree)(routeModule.userland.loaderTree, params, route, fallbackRouteParams // Will be mutated to add route params\n );\n // Convert the fallback route params to an opaque format that can be safely\n // used in the postponed state without exposing implementation details.\n return createOpaqueFallbackRouteParams(fallbackRouteParams);\n}\n\n//# sourceMappingURL=fallback-params.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXF1ZXN0L2ZhbGxiYWNrLXBhcmFtcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FHTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxlQUFlLG1CQUFPLENBQUMsa0dBQWdDO0FBQ3ZELGtDQUFrQyxtQkFBTyxDQUFDLG9JQUE0QztBQUN0RixhQUFhLG1CQUFPLENBQUMsMEdBQW9DO0FBQ3pELHlEQUF5RCxtQkFBTyxDQUFDLDRNQUFxRjtBQUN0SjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQix1QkFBdUI7QUFDeEM7QUFDQSxxQkFBcUIsVUFBVSxHQUFHLFNBQVM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHFDQUFxQztBQUNqRDtBQUNBLGtFQUFrRSxzQkFBc0I7QUFDeEY7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXF1ZXN0L2ZhbGxiYWNrLXBhcmFtcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGNyZWF0ZU9wYXF1ZUZhbGxiYWNrUm91dGVQYXJhbXM6IG51bGwsXG4gICAgZ2V0RmFsbGJhY2tSb3V0ZVBhcmFtczogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBjcmVhdGVPcGFxdWVGYWxsYmFja1JvdXRlUGFyYW1zOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZU9wYXF1ZUZhbGxiYWNrUm91dGVQYXJhbXM7XG4gICAgfSxcbiAgICBnZXRGYWxsYmFja1JvdXRlUGFyYW1zOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldEZhbGxiYWNrUm91dGVQYXJhbXM7XG4gICAgfVxufSk7XG5jb25zdCBfdXRpbHMgPSByZXF1aXJlKFwiLi4vLi4vYnVpbGQvc3RhdGljLXBhdGhzL3V0aWxzXCIpO1xuY29uc3QgX2dldHNob3J0ZHluYW1pY3BhcmFtdHlwZSA9IHJlcXVpcmUoXCIuLi9hcHAtcmVuZGVyL2dldC1zaG9ydC1keW5hbWljLXBhcmFtLXR5cGVcIik7XG5jb25zdCBfYXBwID0gcmVxdWlyZShcIi4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3JvdXRlcy9hcHBcIik7XG5jb25zdCBfZXh0cmFjdHBhdGhuYW1lcm91dGVwYXJhbXNlZ21lbnRzZnJvbWxvYWRlcnRyZWUgPSByZXF1aXJlKFwiLi4vLi4vYnVpbGQvc3RhdGljLXBhdGhzL2FwcC9leHRyYWN0LXBhdGhuYW1lLXJvdXRlLXBhcmFtLXNlZ21lbnRzLWZyb20tbG9hZGVyLXRyZWVcIik7XG5mdW5jdGlvbiBjcmVhdGVPcGFxdWVGYWxsYmFja1JvdXRlUGFyYW1zKGZhbGxiYWNrUm91dGVQYXJhbXMpIHtcbiAgICAvLyBJZiB0aGVyZSBhcmUgbm8gZmFsbGJhY2sgcm91dGUgcGFyYW1zLCB3ZSBjYW4gcmV0dXJuIGVhcmx5LlxuICAgIGlmIChmYWxsYmFja1JvdXRlUGFyYW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG4gICAgLy8gQXMgd2UncmUgY3JlYXRpbmcgdW5pcXVlIGtleXMgZm9yIGVhY2ggb2YgdGhlIGR5bmFtaWMgcm91dGUgcGFyYW1zLCB3ZSBvbmx5XG4gICAgLy8gbmVlZCB0byBnZW5lcmF0ZSBhIHVuaXF1ZSBJRCBvbmNlIHBlciByZXF1ZXN0IGJlY2F1c2UgZWFjaCBvZiB0aGUga2V5cyB3aWxsXG4gICAgLy8gYmUgYWxzbyBiZSB1bmlxdWUuXG4gICAgY29uc3QgdW5pcXVlSUQgPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDE2KS5zbGljZSgyKTtcbiAgICBjb25zdCBrZXlzID0gbmV3IE1hcCgpO1xuICAgIC8vIEdlbmVyYXRlIGEgdW5pcXVlIGtleSBmb3IgdGhlIGZhbGxiYWNrIHJvdXRlIHBhcmFtLCBpZiB0aGlzIGtleSBpcyBmb3VuZFxuICAgIC8vIGluIHRoZSBzdGF0aWMgb3V0cHV0LCBpdCByZXByZXNlbnRzIGEgYnVnIGluIGNhY2hlIGNvbXBvbmVudHMuXG4gICAgZm9yIChjb25zdCB7IHBhcmFtTmFtZSwgcGFyYW1UeXBlIH0gb2YgZmFsbGJhY2tSb3V0ZVBhcmFtcyl7XG4gICAgICAgIGtleXMuc2V0KHBhcmFtTmFtZSwgW1xuICAgICAgICAgICAgYCUlZHJwOiR7cGFyYW1OYW1lfToke3VuaXF1ZUlEfSUlYCxcbiAgICAgICAgICAgIF9nZXRzaG9ydGR5bmFtaWNwYXJhbXR5cGUuZHluYW1pY1BhcmFtVHlwZXNbcGFyYW1UeXBlXVxuICAgICAgICBdKTtcbiAgICB9XG4gICAgcmV0dXJuIGtleXM7XG59XG5mdW5jdGlvbiBnZXRGYWxsYmFja1JvdXRlUGFyYW1zKHBhZ2UsIHJvdXRlTW9kdWxlKSB7XG4gICAgY29uc3Qgcm91dGUgPSAoMCwgX2FwcC5wYXJzZUFwcFJvdXRlKShwYWdlLCB0cnVlKTtcbiAgICAvLyBFeHRyYWN0IHRoZSBwYXRobmFtZS1jb250cmlidXRpbmcgc2VnbWVudHMgZnJvbSB0aGUgbG9hZGVyIHRyZWUuIFRoaXNcbiAgICAvLyBtaXJyb3JzIHRoZSBsb2dpYyBpbiBidWlsZEFwcFN0YXRpY1BhdGhzIHdoZXJlIHdlIGRldGVybWluZSB3aGljaCBzZWdtZW50c1xuICAgIC8vIGFjdHVhbGx5IGNvbnRyaWJ1dGUgdG8gdGhlIHBhdGhuYW1lLlxuICAgIGNvbnN0IHsgcGF0aG5hbWVSb3V0ZVBhcmFtU2VnbWVudHMsIHBhcmFtcyB9ID0gKDAsIF9leHRyYWN0cGF0aG5hbWVyb3V0ZXBhcmFtc2VnbWVudHNmcm9tbG9hZGVydHJlZS5leHRyYWN0UGF0aG5hbWVSb3V0ZVBhcmFtU2VnbWVudHNGcm9tTG9hZGVyVHJlZSkocm91dGVNb2R1bGUudXNlcmxhbmQubG9hZGVyVHJlZSwgcm91dGUpO1xuICAgIC8vIENyZWF0ZSBmYWxsYmFjayByb3V0ZSBwYXJhbXMgZm9yIHRoZSBwYXRobmFtZSBzZWdtZW50cy5cbiAgICBjb25zdCBmYWxsYmFja1JvdXRlUGFyYW1zID0gcGF0aG5hbWVSb3V0ZVBhcmFtU2VnbWVudHMubWFwKCh7IHBhcmFtTmFtZSwgcGFyYW1UeXBlIH0pPT4oe1xuICAgICAgICAgICAgcGFyYW1OYW1lLFxuICAgICAgICAgICAgcGFyYW1UeXBlXG4gICAgICAgIH0pKTtcbiAgICAvLyBSZXNvbHZlIHJvdXRlIHBhcmFtcyBmcm9tIHRoZSBsb2FkZXIgdHJlZS4gVGhpcyBtdXRhdGVzIHRoZVxuICAgIC8vIGZhbGxiYWNrUm91dGVQYXJhbXMgYXJyYXkgdG8gYWRkIGFueSByb3V0ZSBwYXJhbXMgdGhhdCBhcmVcbiAgICAvLyB1bmtub3duIGF0IHJlcXVlc3QgdGltZS5cbiAgICAvL1xuICAgIC8vIFRoZSBwYWdlIHBhcmFtZXRlciBjb250YWlucyBwbGFjZWhvbGRlcnMgbGlrZSBbc2x1Z10sIHdoaWNoIGhlbHBzXG4gICAgLy8gcmVzb2x2ZVJvdXRlUGFyYW1zRnJvbVRyZWUgZGV0ZXJtaW5lIHdoaWNoIHBhcmFtcyBhcmUgdW5rbm93bi5cbiAgICAoMCwgX3V0aWxzLnJlc29sdmVSb3V0ZVBhcmFtc0Zyb21UcmVlKShyb3V0ZU1vZHVsZS51c2VybGFuZC5sb2FkZXJUcmVlLCBwYXJhbXMsIHJvdXRlLCBmYWxsYmFja1JvdXRlUGFyYW1zIC8vIFdpbGwgYmUgbXV0YXRlZCB0byBhZGQgcm91dGUgcGFyYW1zXG4gICAgKTtcbiAgICAvLyBDb252ZXJ0IHRoZSBmYWxsYmFjayByb3V0ZSBwYXJhbXMgdG8gYW4gb3BhcXVlIGZvcm1hdCB0aGF0IGNhbiBiZSBzYWZlbHlcbiAgICAvLyB1c2VkIGluIHRoZSBwb3N0cG9uZWQgc3RhdGUgd2l0aG91dCBleHBvc2luZyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuICAgIHJldHVybiBjcmVhdGVPcGFxdWVGYWxsYmFja1JvdXRlUGFyYW1zKGZhbGxiYWNrUm91dGVQYXJhbXMpO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1mYWxsYmFjay1wYXJhbXMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/request/fallback-params.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/request/params.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/next/dist/server/request/params.js ***!
|
||
\*********************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createParamsFromClient: function() {\n return createParamsFromClient;\n },\n createPrerenderParamsForClientSegment: function() {\n return createPrerenderParamsForClientSegment;\n },\n createServerParamsForMetadata: function() {\n return createServerParamsForMetadata;\n },\n createServerParamsForRoute: function() {\n return createServerParamsForRoute;\n },\n createServerParamsForServerSegment: function() {\n return createServerParamsForServerSegment;\n }\n});\nconst _workasyncstorageexternal = __webpack_require__(/*! ../app-render/work-async-storage.external */ \"../app-render/work-async-storage.external\");\nconst _varyparams = __webpack_require__(/*! ../app-render/vary-params */ \"(rsc)/./node_modules/next/dist/server/app-render/vary-params.js\");\nconst _reflect = __webpack_require__(/*! ../web/spec-extension/adapters/reflect */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js\");\nconst _dynamicrendering = __webpack_require__(/*! ../app-render/dynamic-rendering */ \"(rsc)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\");\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ../app-render/work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(rsc)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nconst _reflectutils = __webpack_require__(/*! ../../shared/lib/utils/reflect-utils */ \"(rsc)/./node_modules/next/dist/shared/lib/utils/reflect-utils.js\");\nconst _dynamicrenderingutils = __webpack_require__(/*! ../dynamic-rendering-utils */ \"(rsc)/./node_modules/next/dist/server/dynamic-rendering-utils.js\");\nconst _creatededupedbycallsiteservererrorlogger = __webpack_require__(/*! ../create-deduped-by-callsite-server-error-logger */ \"(rsc)/./node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js\");\nconst _dynamicaccessasyncstorageexternal = __webpack_require__(/*! ../app-render/dynamic-access-async-storage.external */ \"../app-render/dynamic-access-async-storage.external\");\nconst _stagedrendering = __webpack_require__(/*! ../app-render/staged-rendering */ \"(rsc)/./node_modules/next/dist/server/app-render/staged-rendering.js\");\nfunction createParamsFromClient(underlyingParams) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (!workStore) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected workStore to be initialized'), \"__NEXT_ERROR_CODE\", {\n value: \"E1068\",\n enumerable: false,\n configurable: true\n });\n }\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n // Client params don't need additional vary tracking because by the\n // time they reach the client, the access would have already been\n // tracked by the server.\n const varyParamsAccumulator = null;\n return createStaticPrerenderParams(underlyingParams, null, workStore, workUnitStore, varyParamsAccumulator);\n case 'validation-client':\n return createClientParamsInInstantValidation(underlyingParams, workStore, workUnitStore.validationSamples);\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createParamsFromClient should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E736\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n throw Object.defineProperty(new _invarianterror.InvariantError('createParamsFromClient should not be called in a runtime prerender.'), \"__NEXT_ERROR_CODE\", {\n value: \"E770\",\n enumerable: false,\n configurable: true\n });\n case 'generate-static-params':\n throw Object.defineProperty(new _invarianterror.InvariantError('createParamsFromClient should not be called inside generateStaticParams.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1122\",\n enumerable: false,\n configurable: true\n });\n case 'request':\n if (true) {\n // Semantically we only need the dev tracking when running in `next dev`\n // but since you would never use next dev with production NODE_ENV we use this\n // as a proxy so we can statically exclude this code from production builds.\n const fallbackParams = workUnitStore.fallbackParams;\n // Client params are not runtime prefetchable\n const isRuntimePrefetchable = false;\n return createRenderParamsInDev(underlyingParams, fallbackParams, workStore, workUnitStore, isRuntimePrefetchable);\n } else {}\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nfunction createServerParamsForMetadata(underlyingParams, optionalCatchAllParamName, isRuntimePrefetchable) {\n const metadataVaryParamsAccumulator = (0, _varyparams.getMetadataVaryParamsAccumulator)();\n return createServerParamsForServerSegment(underlyingParams, optionalCatchAllParamName, metadataVaryParamsAccumulator, isRuntimePrefetchable);\n}\nfunction createServerParamsForRoute(underlyingParams, varyParamsAccumulator = null) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (!workStore) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected workStore to be initialized'), \"__NEXT_ERROR_CODE\", {\n value: \"E1068\",\n enumerable: false,\n configurable: true\n });\n }\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-ppr':\n case 'prerender-legacy':\n return createStaticPrerenderParams(underlyingParams, null, workStore, workUnitStore, varyParamsAccumulator);\n case 'prerender-client':\n case 'validation-client':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerParamsForRoute should not be called in client contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1064\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerParamsForRoute should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E738\",\n enumerable: false,\n configurable: true\n });\n case 'generate-static-params':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerParamsForRoute should not be called inside generateStaticParams.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1131\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n {\n // Route params are not runtime prefetchable\n const isRuntimePrefetchable = false;\n return createRuntimePrerenderParams(underlyingParams, null, workUnitStore, varyParamsAccumulator, isRuntimePrefetchable);\n }\n case 'request':\n if (true) {\n // Semantically we only need the dev tracking when running in `next dev`\n // but since you would never use next dev with production NODE_ENV we use this\n // as a proxy so we can statically exclude this code from production builds.\n const fallbackParams = workUnitStore.fallbackParams;\n // Route params are not runtime prefetchable\n const isRuntimePrefetchable = false;\n return createRenderParamsInDev(underlyingParams, fallbackParams, workStore, workUnitStore, isRuntimePrefetchable);\n } else {}\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nfunction createServerParamsForServerSegment(underlyingParams, optionalCatchAllParamName, varyParamsAccumulator, isRuntimePrefetchable) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (!workStore) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected workStore to be initialized'), \"__NEXT_ERROR_CODE\", {\n value: \"E1068\",\n enumerable: false,\n configurable: true\n });\n }\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n return createStaticPrerenderParams(underlyingParams, optionalCatchAllParamName, workStore, workUnitStore, varyParamsAccumulator);\n case 'validation-client':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerParamsForServerSegment should not be called in client contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1101\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerParamsForServerSegment should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E743\",\n enumerable: false,\n configurable: true\n });\n case 'generate-static-params':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerParamsForServerSegment should not be called inside generateStaticParams.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1120\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n return createRuntimePrerenderParams(underlyingParams, optionalCatchAllParamName, workUnitStore, varyParamsAccumulator, isRuntimePrefetchable);\n case 'request':\n if (true) {\n // Semantically we only need the dev tracking when running in `next dev`\n // but since you would never use next dev with production NODE_ENV we use this\n // as a proxy so we can statically exclude this code from production builds.\n const fallbackParams = workUnitStore.fallbackParams;\n return createRenderParamsInDev(underlyingParams, fallbackParams, workStore, workUnitStore, isRuntimePrefetchable);\n } else {}\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nfunction createPrerenderParamsForClientSegment(underlyingParams) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (!workStore) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Missing workStore in createPrerenderParamsForClientSegment'), \"__NEXT_ERROR_CODE\", {\n value: \"E773\",\n enumerable: false,\n configurable: true\n });\n }\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n const fallbackParams = workUnitStore.fallbackRouteParams;\n if (fallbackParams) {\n for(let key in underlyingParams){\n if (fallbackParams.has(key)) {\n // This params object has one or more fallback params, so we need\n // to consider the awaiting of this params object \"dynamic\". Since\n // we are in cacheComponents mode we encode this as a promise that never\n // resolves.\n return (0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, '`params`');\n }\n }\n }\n break;\n case 'validation-client':\n throw Object.defineProperty(new _invarianterror.InvariantError('createPrerenderParamsForClientSegment should not be called in validation contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1099\",\n enumerable: false,\n configurable: true\n });\n break;\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createPrerenderParamsForClientSegment should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E734\",\n enumerable: false,\n configurable: true\n });\n case 'generate-static-params':\n throw Object.defineProperty(new _invarianterror.InvariantError('createPrerenderParamsForClientSegment should not be called inside generateStaticParams.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1126\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'prerender-runtime':\n case 'request':\n break;\n default:\n workUnitStore;\n }\n }\n // We're prerendering in a mode that does not abort. We resolve the promise without\n // any tracking because we're just transporting a value from server to client where the tracking\n // will be applied.\n return Promise.resolve(underlyingParams);\n}\nfunction createStaticPrerenderParams(underlyingParams, optionalCatchAllParamName, workStore, prerenderStore, varyParamsAccumulator) {\n const underlyingParamsWithVarying = varyParamsAccumulator !== null ? (0, _varyparams.createVaryingParams)(varyParamsAccumulator, underlyingParams, optionalCatchAllParamName) : underlyingParams;\n switch(prerenderStore.type){\n case 'prerender':\n case 'prerender-client':\n {\n const fallbackParams = prerenderStore.fallbackRouteParams;\n if (fallbackParams) {\n for(const key in underlyingParams){\n if (fallbackParams.has(key)) {\n // This params object has one or more fallback params, so we need\n // to consider the awaiting of this params object \"dynamic\". Since\n // we are in cacheComponents mode we encode this as a promise that never\n // resolves.\n return makeHangingParams(underlyingParamsWithVarying, workStore, prerenderStore);\n }\n }\n }\n break;\n }\n case 'prerender-ppr':\n {\n const fallbackParams = prerenderStore.fallbackRouteParams;\n if (fallbackParams) {\n for(const key in underlyingParams){\n if (fallbackParams.has(key)) {\n return makeErroringParams(underlyingParamsWithVarying, fallbackParams, workStore, prerenderStore);\n }\n }\n }\n break;\n }\n case 'prerender-legacy':\n break;\n default:\n prerenderStore;\n }\n return makeUntrackedParams(underlyingParamsWithVarying);\n}\nfunction createRuntimePrerenderParams(underlyingParams, optionalCatchAllParamName, workUnitStore, varyParamsAccumulator, isRuntimePrefetchable) {\n const underlyingParamsWithVarying = varyParamsAccumulator !== null ? (0, _varyparams.createVaryingParams)(varyParamsAccumulator, underlyingParams, optionalCatchAllParamName) : underlyingParams;\n const result = makeUntrackedParams(underlyingParamsWithVarying);\n const { stagedRendering } = workUnitStore;\n if (!stagedRendering) {\n return result;\n }\n const stage = isRuntimePrefetchable ? _stagedrendering.RenderStage.EarlyRuntime : _stagedrendering.RenderStage.Runtime;\n return stagedRendering.waitForStage(stage).then(()=>result);\n}\nfunction hasFallbackRouteParams(underlyingParams, fallbackParams) {\n if (fallbackParams) {\n for(let key in underlyingParams){\n if (fallbackParams.has(key)) {\n return true;\n }\n }\n }\n return false;\n}\nfunction createServerParamsInInstantValidation(underlyingParams, workStore, validationSamples, asyncApiPromises, isRuntimePrefetchable) {\n const { createExhaustiveParamsProxy } = __webpack_require__(/*! ../app-render/instant-validation/instant-samples */ \"(rsc)/./node_modules/next/dist/server/app-render/instant-validation/instant-samples.js\");\n const declaredParams = new Set(Object.keys(validationSamples.params ?? {}));\n const proxiedUnderlying = createExhaustiveParamsProxy(underlyingParams, declaredParams, workStore.route);\n return (isRuntimePrefetchable ? asyncApiPromises.earlySharedParamsParent : asyncApiPromises.sharedParamsParent).then(()=>proxiedUnderlying);\n}\nfunction createClientParamsInInstantValidation(underlyingParams, workStore, validationSamples) {\n const { createExhaustiveParamsProxy } = __webpack_require__(/*! ../app-render/instant-validation/instant-samples */ \"(rsc)/./node_modules/next/dist/server/app-render/instant-validation/instant-samples.js\");\n const declaredParams = new Set(Object.keys((validationSamples == null ? void 0 : validationSamples.params) ?? {}));\n const proxiedUnderlying = createExhaustiveParamsProxy(underlyingParams, declaredParams, workStore.route);\n return Promise.resolve(proxiedUnderlying);\n}\nfunction createRenderParamsInProd(underlyingParams) {\n return makeUntrackedParams(underlyingParams);\n}\nfunction createRenderParamsInDev(underlyingParams, fallbackParams, workStore, requestStore, isRuntimePrefetchable) {\n return makeDynamicallyTrackedParamsWithDevWarnings(underlyingParams, hasFallbackRouteParams(underlyingParams, fallbackParams), workStore, requestStore, isRuntimePrefetchable);\n}\nconst CachedParams = new WeakMap();\nconst fallbackParamsProxyHandler = {\n get: function get(target, prop, receiver) {\n if (prop === 'then' || prop === 'catch' || prop === 'finally') {\n const originalMethod = _reflect.ReflectAdapter.get(target, prop, receiver);\n return ({\n [prop]: (...args)=>{\n const store = _dynamicaccessasyncstorageexternal.dynamicAccessAsyncStorage.getStore();\n if (store) {\n store.abortController.abort(Object.defineProperty(new Error(`Accessed fallback \\`params\\` during prerendering.`), \"__NEXT_ERROR_CODE\", {\n value: \"E691\",\n enumerable: false,\n configurable: true\n }));\n }\n return new Proxy(originalMethod.apply(target, args), fallbackParamsProxyHandler);\n }\n })[prop];\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n};\nfunction makeHangingParams(underlyingParams, workStore, prerenderStore) {\n const cachedParams = CachedParams.get(underlyingParams);\n if (cachedParams) {\n return cachedParams;\n }\n const promise = new Proxy((0, _dynamicrenderingutils.makeHangingPromise)(prerenderStore.renderSignal, workStore.route, '`params`'), fallbackParamsProxyHandler);\n CachedParams.set(underlyingParams, promise);\n return promise;\n}\nfunction makeErroringParams(underlyingParams, fallbackParams, workStore, prerenderStore) {\n const cachedParams = CachedParams.get(underlyingParams);\n if (cachedParams) {\n return cachedParams;\n }\n const augmentedUnderlying = {\n ...underlyingParams\n };\n // We don't use makeResolvedReactPromise here because params\n // supports copying with spread and we don't want to unnecessarily\n // instrument the promise with spreadable properties of ReactPromise.\n const promise = Promise.resolve(augmentedUnderlying);\n CachedParams.set(underlyingParams, promise);\n Object.keys(underlyingParams).forEach((prop)=>{\n if (_reflectutils.wellKnownProperties.has(prop)) {\n // These properties cannot be shadowed because they need to be the\n // true underlying value for Promises to work correctly at runtime\n } else {\n if (fallbackParams.has(prop)) {\n Object.defineProperty(augmentedUnderlying, prop, {\n get () {\n const expression = (0, _reflectutils.describeStringPropertyAccess)('params', prop);\n // In most dynamic APIs we also throw if `dynamic = \"error\"` however\n // for params is only dynamic when we're generating a fallback shell\n // and even when `dynamic = \"error\"` we still support generating dynamic\n // fallback shells\n // TODO remove this comment when cacheComponents is the default since there\n // will be no `dynamic = \"error\"`\n if (prerenderStore.type === 'prerender-ppr') {\n // PPR Prerender (no cacheComponents)\n (0, _dynamicrendering.postponeWithTracking)(workStore.route, expression, prerenderStore.dynamicTracking);\n } else {\n // Legacy Prerender\n (0, _dynamicrendering.throwToInterruptStaticGeneration)(expression, workStore, prerenderStore);\n }\n },\n enumerable: true\n });\n }\n }\n });\n return promise;\n}\nfunction makeUntrackedParams(underlyingParams) {\n const cachedParams = CachedParams.get(underlyingParams);\n if (cachedParams) {\n return cachedParams;\n }\n const promise = Promise.resolve(underlyingParams);\n CachedParams.set(underlyingParams, promise);\n return promise;\n}\nfunction makeDynamicallyTrackedParamsWithDevWarnings(underlyingParams, hasFallbackParams, workStore, requestStore, isRuntimePrefetchable) {\n if (requestStore.asyncApiPromises && hasFallbackParams) {\n // We wrap each instance of params in a `new Promise()`, because deduping\n // them across requests doesn't work anyway and this let us show each\n // await a different set of values. This is important when all awaits\n // are in third party which would otherwise track all the way to the\n // internal params.\n const sharedParamsParent = isRuntimePrefetchable ? requestStore.asyncApiPromises.earlySharedParamsParent : requestStore.asyncApiPromises.sharedParamsParent;\n const promise = new Promise((resolve, reject)=>{\n sharedParamsParent.then(()=>resolve(underlyingParams), reject);\n });\n // @ts-expect-error\n promise.displayName = 'params';\n return instrumentParamsPromiseWithDevWarnings(underlyingParams, promise, workStore);\n }\n const cachedParams = CachedParams.get(underlyingParams);\n if (cachedParams) {\n return cachedParams;\n }\n // We don't use makeResolvedReactPromise here because params\n // supports copying with spread and we don't want to unnecessarily\n // instrument the promise with spreadable properties of ReactPromise.\n const promise = hasFallbackParams ? (0, _dynamicrenderingutils.makeDevtoolsIOAwarePromise)(underlyingParams, requestStore, _stagedrendering.RenderStage.Runtime) : Promise.resolve(underlyingParams);\n const proxiedPromise = instrumentParamsPromiseWithDevWarnings(underlyingParams, promise, workStore);\n CachedParams.set(underlyingParams, proxiedPromise);\n return proxiedPromise;\n}\nfunction instrumentParamsPromiseWithDevWarnings(underlyingParams, promise, workStore) {\n // Track which properties we should warn for.\n const proxiedProperties = new Set();\n Object.keys(underlyingParams).forEach((prop)=>{\n if (_reflectutils.wellKnownProperties.has(prop)) {\n // These properties cannot be shadowed because they need to be the\n // true underlying value for Promises to work correctly at runtime\n } else {\n proxiedProperties.add(prop);\n }\n });\n return new Proxy(promise, {\n get (target, prop, receiver) {\n if (typeof prop === 'string') {\n if (// We are accessing a property that was proxied to the promise instance\n proxiedProperties.has(prop)) {\n const expression = (0, _reflectutils.describeStringPropertyAccess)('params', prop);\n warnForSyncAccess(workStore.route, expression);\n }\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n },\n set (target, prop, value, receiver) {\n if (typeof prop === 'string') {\n proxiedProperties.delete(prop);\n }\n return _reflect.ReflectAdapter.set(target, prop, value, receiver);\n },\n ownKeys (target) {\n const expression = '`...params` or similar expression';\n warnForSyncAccess(workStore.route, expression);\n return Reflect.ownKeys(target);\n }\n });\n}\nconst warnForSyncAccess = (0, _creatededupedbycallsiteservererrorlogger.createDedupedByCallsiteServerErrorLoggerDev)(createParamsAccessError);\nfunction createParamsAccessError(route, expression) {\n const prefix = route ? `Route \"${route}\" ` : 'This route ';\n return Object.defineProperty(new Error(`${prefix}used ${expression}. ` + `\\`params\\` is a Promise and must be unwrapped with \\`await\\` or \\`React.use()\\` before accessing its properties. ` + `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`), \"__NEXT_ERROR_CODE\", {\n value: \"E834\",\n enumerable: false,\n configurable: true\n });\n}\n\n//# sourceMappingURL=params.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXF1ZXN0L3BhcmFtcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FNTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxrQ0FBa0MsbUJBQU8sQ0FBQyw0RkFBMkM7QUFDckYsb0JBQW9CLG1CQUFPLENBQUMsa0dBQTJCO0FBQ3ZELGlCQUFpQixtQkFBTyxDQUFDLDRIQUF3QztBQUNqRSwwQkFBMEIsbUJBQU8sQ0FBQyw4R0FBaUM7QUFDbkUsc0NBQXNDLG1CQUFPLENBQUMsMEZBQWdEO0FBQzlGLHdCQUF3QixtQkFBTyxDQUFDLHNHQUFrQztBQUNsRSxzQkFBc0IsbUJBQU8sQ0FBQyw4R0FBc0M7QUFDcEUsK0JBQStCLG1CQUFPLENBQUMsb0dBQTRCO0FBQ25FLGtEQUFrRCxtQkFBTyxDQUFDLGtKQUFtRDtBQUM3RywyQ0FBMkMsbUJBQU8sQ0FBQyxnSEFBcUQ7QUFDeEcseUJBQXlCLG1CQUFPLENBQUMsNEdBQWdDO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLG9CQUFvQixJQUFzQztBQUMx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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsTUFBTTtBQUMzQyw4Q0FBOEMsT0FBTyxPQUFPLFdBQVc7QUFDdkU7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvcmVxdWVzdC9wYXJhbXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVQYXJhbXNGcm9tQ2xpZW50OiBudWxsLFxuICAgIGNyZWF0ZVByZXJlbmRlclBhcmFtc0ZvckNsaWVudFNlZ21lbnQ6IG51bGwsXG4gICAgY3JlYXRlU2VydmVyUGFyYW1zRm9yTWV0YWRhdGE6IG51bGwsXG4gICAgY3JlYXRlU2VydmVyUGFyYW1zRm9yUm91dGU6IG51bGwsXG4gICAgY3JlYXRlU2VydmVyUGFyYW1zRm9yU2VydmVyU2VnbWVudDogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBjcmVhdGVQYXJhbXNGcm9tQ2xpZW50OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVBhcmFtc0Zyb21DbGllbnQ7XG4gICAgfSxcbiAgICBjcmVhdGVQcmVyZW5kZXJQYXJhbXNGb3JDbGllbnRTZWdtZW50OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVByZXJlbmRlclBhcmFtc0ZvckNsaWVudFNlZ21lbnQ7XG4gICAgfSxcbiAgICBjcmVhdGVTZXJ2ZXJQYXJhbXNGb3JNZXRhZGF0YTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVTZXJ2ZXJQYXJhbXNGb3JNZXRhZGF0YTtcbiAgICB9LFxuICAgIGNyZWF0ZVNlcnZlclBhcmFtc0ZvclJvdXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVNlcnZlclBhcmFtc0ZvclJvdXRlO1xuICAgIH0sXG4gICAgY3JlYXRlU2VydmVyUGFyYW1zRm9yU2VydmVyU2VnbWVudDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVTZXJ2ZXJQYXJhbXNGb3JTZXJ2ZXJTZWdtZW50O1xuICAgIH1cbn0pO1xuY29uc3QgX3dvcmthc3luY3N0b3JhZ2VleHRlcm5hbCA9IHJlcXVpcmUoXCIuLi9hcHAtcmVuZGVyL3dvcmstYXN5bmMtc3RvcmFnZS5leHRlcm5hbFwiKTtcbmNvbnN0IF92YXJ5cGFyYW1zID0gcmVxdWlyZShcIi4uL2FwcC1yZW5kZXIvdmFyeS1wYXJhbXNcIik7XG5jb25zdCBfcmVmbGVjdCA9IHJlcXVpcmUoXCIuLi93ZWIvc3BlYy1leHRlbnNpb24vYWRhcHRlcnMvcmVmbGVjdFwiKTtcbmNvbnN0IF9keW5hbWljcmVuZGVyaW5nID0gcmVxdWlyZShcIi4uL2FwcC1yZW5kZXIvZHluYW1pYy1yZW5kZXJpbmdcIik7XG5jb25zdCBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbCA9IHJlcXVpcmUoXCIuLi9hcHAtcmVuZGVyL3dvcmstdW5pdC1hc3luYy1zdG9yYWdlLmV4dGVybmFsXCIpO1xuY29uc3QgX2ludmFyaWFudGVycm9yID0gcmVxdWlyZShcIi4uLy4uL3NoYXJlZC9saWIvaW52YXJpYW50LWVycm9yXCIpO1xuY29uc3QgX3JlZmxlY3R1dGlscyA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvbGliL3V0aWxzL3JlZmxlY3QtdXRpbHNcIik7XG5jb25zdCBfZHluYW1pY3JlbmRlcmluZ3V0aWxzID0gcmVxdWlyZShcIi4uL2R5bmFtaWMtcmVuZGVyaW5nLXV0aWxzXCIpO1xuY29uc3QgX2NyZWF0ZWRlZHVwZWRieWNhbGxzaXRlc2VydmVyZXJyb3Jsb2dnZXIgPSByZXF1aXJlKFwiLi4vY3JlYXRlLWRlZHVwZWQtYnktY2FsbHNpdGUtc2VydmVyLWVycm9yLWxvZ2dlclwiKTtcbmNvbnN0IF9keW5hbWljYWNjZXNzYXN5bmNzdG9yYWdlZXh0ZXJuYWwgPSByZXF1aXJlKFwiLi4vYXBwLXJlbmRlci9keW5hbWljLWFjY2Vzcy1hc3luYy1zdG9yYWdlLmV4dGVybmFsXCIpO1xuY29uc3QgX3N0YWdlZHJlbmRlcmluZyA9IHJlcXVpcmUoXCIuLi9hcHAtcmVuZGVyL3N0YWdlZC1yZW5kZXJpbmdcIik7XG5mdW5jdGlvbiBjcmVhdGVQYXJhbXNGcm9tQ2xpZW50KHVuZGVybHlpbmdQYXJhbXMpIHtcbiAgICBjb25zdCB3b3JrU3RvcmUgPSBfd29ya2FzeW5jc3RvcmFnZWV4dGVybmFsLndvcmtBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAoIXdvcmtTdG9yZSkge1xuICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignRXhwZWN0ZWQgd29ya1N0b3JlIHRvIGJlIGluaXRpYWxpemVkJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgdmFsdWU6IFwiRTEwNjhcIixcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCB3b3JrVW5pdFN0b3JlID0gX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya1VuaXRBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgICAgICBzd2l0Y2god29ya1VuaXRTdG9yZS50eXBlKXtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICAgICAgLy8gQ2xpZW50IHBhcmFtcyBkb24ndCBuZWVkIGFkZGl0aW9uYWwgdmFyeSB0cmFja2luZyBiZWNhdXNlIGJ5IHRoZVxuICAgICAgICAgICAgICAgIC8vIHRpbWUgdGhleSByZWFjaCB0aGUgY2xpZW50LCB0aGUgYWNjZXNzIHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVuXG4gICAgICAgICAgICAgICAgLy8gdHJhY2tlZCBieSB0aGUgc2VydmVyLlxuICAgICAgICAgICAgICAgIGNvbnN0IHZhcnlQYXJhbXNBY2N1bXVsYXRvciA9IG51bGw7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVN0YXRpY1ByZXJlbmRlclBhcmFtcyh1bmRlcmx5aW5nUGFyYW1zLCBudWxsLCB3b3JrU3RvcmUsIHdvcmtVbml0U3RvcmUsIHZhcnlQYXJhbXNBY2N1bXVsYXRvcik7XG4gICAgICAgICAgICBjYXNlICd2YWxpZGF0aW9uLWNsaWVudCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUNsaWVudFBhcmFtc0luSW5zdGFudFZhbGlkYXRpb24odW5kZXJseWluZ1BhcmFtcywgd29ya1N0b3JlLCB3b3JrVW5pdFN0b3JlLnZhbGlkYXRpb25TYW1wbGVzKTtcbiAgICAgICAgICAgIGNhc2UgJ2NhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByaXZhdGUtY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAndW5zdGFibGUtY2FjaGUnOlxuICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdjcmVhdGVQYXJhbXNGcm9tQ2xpZW50IHNob3VsZCBub3QgYmUgY2FsbGVkIGluIGNhY2hlIGNvbnRleHRzLicpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTczNlwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVBhcmFtc0Zyb21DbGllbnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gYSBydW50aW1lIHByZXJlbmRlci4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU3NzBcIixcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2FzZSAnZ2VuZXJhdGUtc3RhdGljLXBhcmFtcyc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVBhcmFtc0Zyb21DbGllbnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW5zaWRlIGdlbmVyYXRlU3RhdGljUGFyYW1zLicpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTExMjJcIixcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2FzZSAncmVxdWVzdCc6XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNlbWFudGljYWxseSB3ZSBvbmx5IG5lZWQgdGhlIGRldiB0cmFja2luZyB3aGVuIHJ1bm5pbmcgaW4gYG5leHQgZGV2YFxuICAgICAgICAgICAgICAgICAgICAvLyBidXQgc2luY2UgeW91IHdvdWxkIG5ldmVyIHVzZSBuZXh0IGRldiB3aXRoIHByb2R1Y3Rpb24gTk9ERV9FTlYgd2UgdXNlIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgLy8gYXMgYSBwcm94eSBzbyB3ZSBjYW4gc3RhdGljYWxseSBleGNsdWRlIHRoaXMgY29kZSBmcm9tIHByb2R1Y3Rpb24gYnVpbGRzLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmYWxsYmFja1BhcmFtcyA9IHdvcmtVbml0U3RvcmUuZmFsbGJhY2tQYXJhbXM7XG4gICAgICAgICAgICAgICAgICAgIC8vIENsaWVudCBwYXJhbXMgYXJlIG5vdCBydW50aW1lIHByZWZldGNoYWJsZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1J1bnRpbWVQcmVmZXRjaGFibGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlclBhcmFtc0luRGV2KHVuZGVybHlpbmdQYXJhbXMsIGZhbGxiYWNrUGFyYW1zLCB3b3JrU3RvcmUsIHdvcmtVbml0U3RvcmUsIGlzUnVudGltZVByZWZldGNoYWJsZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3b3JrVW5pdFN0b3JlLnZhbGlkYXRpb25TYW1wbGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVDbGllbnRQYXJhbXNJbkluc3RhbnRWYWxpZGF0aW9uKHVuZGVybHlpbmdQYXJhbXMsIHdvcmtTdG9yZSwgd29ya1VuaXRTdG9yZS52YWxpZGF0aW9uU2FtcGxlcyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlclBhcmFtc0luUHJvZCh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgKDAsIF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLnRocm93SW52YXJpYW50Rm9yTWlzc2luZ1N0b3JlKSgpO1xufVxuZnVuY3Rpb24gY3JlYXRlU2VydmVyUGFyYW1zRm9yTWV0YWRhdGEodW5kZXJseWluZ1BhcmFtcywgb3B0aW9uYWxDYXRjaEFsbFBhcmFtTmFtZSwgaXNSdW50aW1lUHJlZmV0Y2hhYmxlKSB7XG4gICAgY29uc3QgbWV0YWRhdGFWYXJ5UGFyYW1zQWNjdW11bGF0b3IgPSAoMCwgX3ZhcnlwYXJhbXMuZ2V0TWV0YWRhdGFWYXJ5UGFyYW1zQWNjdW11bGF0b3IpKCk7XG4gICAgcmV0dXJuIGNyZWF0ZVNlcnZlclBhcmFtc0ZvclNlcnZlclNlZ21lbnQodW5kZXJseWluZ1BhcmFtcywgb3B0aW9uYWxDYXRjaEFsbFBhcmFtTmFtZSwgbWV0YWRhdGFWYXJ5UGFyYW1zQWNjdW11bGF0b3IsIGlzUnVudGltZVByZWZldGNoYWJsZSk7XG59XG5mdW5jdGlvbiBjcmVhdGVTZXJ2ZXJQYXJhbXNGb3JSb3V0ZSh1bmRlcmx5aW5nUGFyYW1zLCB2YXJ5UGFyYW1zQWNjdW11bGF0b3IgPSBudWxsKSB7XG4gICAgY29uc3Qgd29ya1N0b3JlID0gX3dvcmthc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrQXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgaWYgKCF3b3JrU3RvcmUpIHtcbiAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ0V4cGVjdGVkIHdvcmtTdG9yZSB0byBiZSBpbml0aWFsaXplZCcpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgIHZhbHVlOiBcIkUxMDY4XCIsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3Qgd29ya1VuaXRTdG9yZSA9IF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLndvcmtVbml0QXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgaWYgKHdvcmtVbml0U3RvcmUpIHtcbiAgICAgICAgc3dpdGNoKHdvcmtVbml0U3RvcmUudHlwZSl7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlU3RhdGljUHJlcmVuZGVyUGFyYW1zKHVuZGVybHlpbmdQYXJhbXMsIG51bGwsIHdvcmtTdG9yZSwgd29ya1VuaXRTdG9yZSwgdmFyeVBhcmFtc0FjY3VtdWxhdG9yKTtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAgY2FzZSAndmFsaWRhdGlvbi1jbGllbnQnOlxuICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdjcmVhdGVTZXJ2ZXJQYXJhbXNGb3JSb3V0ZSBzaG91bGQgbm90IGJlIGNhbGxlZCBpbiBjbGllbnQgY29udGV4dHMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMTA2NFwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlICdjYWNoZSc6XG4gICAgICAgICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignY3JlYXRlU2VydmVyUGFyYW1zRm9yUm91dGUgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gY2FjaGUgY29udGV4dHMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNzM4XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ2dlbmVyYXRlLXN0YXRpYy1wYXJhbXMnOlxuICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdjcmVhdGVTZXJ2ZXJQYXJhbXNGb3JSb3V0ZSBzaG91bGQgbm90IGJlIGNhbGxlZCBpbnNpZGUgZ2VuZXJhdGVTdGF0aWNQYXJhbXMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMTEzMVwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAvLyBSb3V0ZSBwYXJhbXMgYXJlIG5vdCBydW50aW1lIHByZWZldGNoYWJsZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1J1bnRpbWVQcmVmZXRjaGFibGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJ1bnRpbWVQcmVyZW5kZXJQYXJhbXModW5kZXJseWluZ1BhcmFtcywgbnVsbCwgd29ya1VuaXRTdG9yZSwgdmFyeVBhcmFtc0FjY3VtdWxhdG9yLCBpc1J1bnRpbWVQcmVmZXRjaGFibGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgICAgICAgICAvLyBTZW1hbnRpY2FsbHkgd2Ugb25seSBuZWVkIHRoZSBkZXYgdHJhY2tpbmcgd2hlbiBydW5uaW5nIGluIGBuZXh0IGRldmBcbiAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHNpbmNlIHlvdSB3b3VsZCBuZXZlciB1c2UgbmV4dCBkZXYgd2l0aCBwcm9kdWN0aW9uIE5PREVfRU5WIHdlIHVzZSB0aGlzXG4gICAgICAgICAgICAgICAgICAgIC8vIGFzIGEgcHJveHkgc28gd2UgY2FuIHN0YXRpY2FsbHkgZXhjbHVkZSB0aGlzIGNvZGUgZnJvbSBwcm9kdWN0aW9uIGJ1aWxkcy5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmFsbGJhY2tQYXJhbXMgPSB3b3JrVW5pdFN0b3JlLmZhbGxiYWNrUGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICAvLyBSb3V0ZSBwYXJhbXMgYXJlIG5vdCBydW50aW1lIHByZWZldGNoYWJsZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1J1bnRpbWVQcmVmZXRjaGFibGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlclBhcmFtc0luRGV2KHVuZGVybHlpbmdQYXJhbXMsIGZhbGxiYWNrUGFyYW1zLCB3b3JrU3RvcmUsIHdvcmtVbml0U3RvcmUsIGlzUnVudGltZVByZWZldGNoYWJsZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlclBhcmFtc0luUHJvZCh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgKDAsIF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLnRocm93SW52YXJpYW50Rm9yTWlzc2luZ1N0b3JlKSgpO1xufVxuZnVuY3Rpb24gY3JlYXRlU2VydmVyUGFyYW1zRm9yU2VydmVyU2VnbWVudCh1bmRlcmx5aW5nUGFyYW1zLCBvcHRpb25hbENhdGNoQWxsUGFyYW1OYW1lLCB2YXJ5UGFyYW1zQWNjdW11bGF0b3IsIGlzUnVudGltZVByZWZldGNoYWJsZSkge1xuICAgIGNvbnN0IHdvcmtTdG9yZSA9IF93b3JrYXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya0FzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICghd29ya1N0b3JlKSB7XG4gICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdFeHBlY3RlZCB3b3JrU3RvcmUgdG8gYmUgaW5pdGlhbGl6ZWQnKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICB2YWx1ZTogXCJFMTA2OFwiLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHdvcmtVbml0U3RvcmUgPSBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICh3b3JrVW5pdFN0b3JlKSB7XG4gICAgICAgIHN3aXRjaCh3b3JrVW5pdFN0b3JlLnR5cGUpe1xuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlU3RhdGljUHJlcmVuZGVyUGFyYW1zKHVuZGVybHlpbmdQYXJhbXMsIG9wdGlvbmFsQ2F0Y2hBbGxQYXJhbU5hbWUsIHdvcmtTdG9yZSwgd29ya1VuaXRTdG9yZSwgdmFyeVBhcmFtc0FjY3VtdWxhdG9yKTtcbiAgICAgICAgICAgIGNhc2UgJ3ZhbGlkYXRpb24tY2xpZW50JzpcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignY3JlYXRlU2VydmVyUGFyYW1zRm9yU2VydmVyU2VnbWVudCBzaG91bGQgbm90IGJlIGNhbGxlZCBpbiBjbGllbnQgY29udGV4dHMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMTEwMVwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlICdjYWNoZSc6XG4gICAgICAgICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignY3JlYXRlU2VydmVyUGFyYW1zRm9yU2VydmVyU2VnbWVudCBzaG91bGQgbm90IGJlIGNhbGxlZCBpbiBjYWNoZSBjb250ZXh0cy4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU3NDNcIixcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2FzZSAnZ2VuZXJhdGUtc3RhdGljLXBhcmFtcyc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVNlcnZlclBhcmFtc0ZvclNlcnZlclNlZ21lbnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW5zaWRlIGdlbmVyYXRlU3RhdGljUGFyYW1zLicpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTExMjBcIixcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSdW50aW1lUHJlcmVuZGVyUGFyYW1zKHVuZGVybHlpbmdQYXJhbXMsIG9wdGlvbmFsQ2F0Y2hBbGxQYXJhbU5hbWUsIHdvcmtVbml0U3RvcmUsIHZhcnlQYXJhbXNBY2N1bXVsYXRvciwgaXNSdW50aW1lUHJlZmV0Y2hhYmxlKTtcbiAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgICAgICAgICAvLyBTZW1hbnRpY2FsbHkgd2Ugb25seSBuZWVkIHRoZSBkZXYgdHJhY2tpbmcgd2hlbiBydW5uaW5nIGluIGBuZXh0IGRldmBcbiAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHNpbmNlIHlvdSB3b3VsZCBuZXZlciB1c2UgbmV4dCBkZXYgd2l0aCBwcm9kdWN0aW9uIE5PREVfRU5WIHdlIHVzZSB0aGlzXG4gICAgICAgICAgICAgICAgICAgIC8vIGFzIGEgcHJveHkgc28gd2UgY2FuIHN0YXRpY2FsbHkgZXhjbHVkZSB0aGlzIGNvZGUgZnJvbSBwcm9kdWN0aW9uIGJ1aWxkcy5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmFsbGJhY2tQYXJhbXMgPSB3b3JrVW5pdFN0b3JlLmZhbGxiYWNrUGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyUGFyYW1zSW5EZXYodW5kZXJseWluZ1BhcmFtcywgZmFsbGJhY2tQYXJhbXMsIHdvcmtTdG9yZSwgd29ya1VuaXRTdG9yZSwgaXNSdW50aW1lUHJlZmV0Y2hhYmxlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdvcmtVbml0U3RvcmUuYXN5bmNBcGlQcm9taXNlcyAmJiB3b3JrVW5pdFN0b3JlLnZhbGlkYXRpb25TYW1wbGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVTZXJ2ZXJQYXJhbXNJbkluc3RhbnRWYWxpZGF0aW9uKHVuZGVybHlpbmdQYXJhbXMsIHdvcmtTdG9yZSwgd29ya1VuaXRTdG9yZS52YWxpZGF0aW9uU2FtcGxlcywgd29ya1VuaXRTdG9yZS5hc3luY0FwaVByb21pc2VzLCBpc1J1bnRpbWVQcmVmZXRjaGFibGUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod29ya1VuaXRTdG9yZS5hc3luY0FwaVByb21pc2VzICYmIGhhc0ZhbGxiYWNrUm91dGVQYXJhbXModW5kZXJseWluZ1BhcmFtcywgd29ya1VuaXRTdG9yZS5mYWxsYmFja1BhcmFtcykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChpc1J1bnRpbWVQcmVmZXRjaGFibGUgPyB3b3JrVW5pdFN0b3JlLmFzeW5jQXBpUHJvbWlzZXMuZWFybHlTaGFyZWRQYXJhbXNQYXJlbnQgOiB3b3JrVW5pdFN0b3JlLmFzeW5jQXBpUHJvbWlzZXMuc2hhcmVkUGFyYW1zUGFyZW50KS50aGVuKCgpPT51bmRlcmx5aW5nUGFyYW1zKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyUGFyYW1zSW5Qcm9kKHVuZGVybHlpbmdQYXJhbXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAoMCwgX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwudGhyb3dJbnZhcmlhbnRGb3JNaXNzaW5nU3RvcmUpKCk7XG59XG5mdW5jdGlvbiBjcmVhdGVQcmVyZW5kZXJQYXJhbXNGb3JDbGllbnRTZWdtZW50KHVuZGVybHlpbmdQYXJhbXMpIHtcbiAgICBjb25zdCB3b3JrU3RvcmUgPSBfd29ya2FzeW5jc3RvcmFnZWV4dGVybmFsLndvcmtBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAoIXdvcmtTdG9yZSkge1xuICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignTWlzc2luZyB3b3JrU3RvcmUgaW4gY3JlYXRlUHJlcmVuZGVyUGFyYW1zRm9yQ2xpZW50U2VnbWVudCcpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgIHZhbHVlOiBcIkU3NzNcIixcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCB3b3JrVW5pdFN0b3JlID0gX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya1VuaXRBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgICAgICBzd2l0Y2god29ya1VuaXRTdG9yZS50eXBlKXtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgICAgICAgICAgICBjb25zdCBmYWxsYmFja1BhcmFtcyA9IHdvcmtVbml0U3RvcmUuZmFsbGJhY2tSb3V0ZVBhcmFtcztcbiAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2tQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBrZXkgaW4gdW5kZXJseWluZ1BhcmFtcyl7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2tQYXJhbXMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHBhcmFtcyBvYmplY3QgaGFzIG9uZSBvciBtb3JlIGZhbGxiYWNrIHBhcmFtcywgc28gd2UgbmVlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGNvbnNpZGVyIHRoZSBhd2FpdGluZyBvZiB0aGlzIHBhcmFtcyBvYmplY3QgXCJkeW5hbWljXCIuIFNpbmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgYXJlIGluIGNhY2hlQ29tcG9uZW50cyBtb2RlIHdlIGVuY29kZSB0aGlzIGFzIGEgcHJvbWlzZSB0aGF0IG5ldmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzb2x2ZXMuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCBfZHluYW1pY3JlbmRlcmluZ3V0aWxzLm1ha2VIYW5naW5nUHJvbWlzZSkod29ya1VuaXRTdG9yZS5yZW5kZXJTaWduYWwsIHdvcmtTdG9yZS5yb3V0ZSwgJ2BwYXJhbXNgJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd2YWxpZGF0aW9uLWNsaWVudCc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVByZXJlbmRlclBhcmFtc0ZvckNsaWVudFNlZ21lbnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gdmFsaWRhdGlvbiBjb250ZXh0cy4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkUxMDk5XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByaXZhdGUtY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAndW5zdGFibGUtY2FjaGUnOlxuICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdjcmVhdGVQcmVyZW5kZXJQYXJhbXNGb3JDbGllbnRTZWdtZW50IHNob3VsZCBub3QgYmUgY2FsbGVkIGluIGNhY2hlIGNvbnRleHRzLicpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTczNFwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlICdnZW5lcmF0ZS1zdGF0aWMtcGFyYW1zJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignY3JlYXRlUHJlcmVuZGVyUGFyYW1zRm9yQ2xpZW50U2VnbWVudCBzaG91bGQgbm90IGJlIGNhbGxlZCBpbnNpZGUgZ2VuZXJhdGVTdGF0aWNQYXJhbXMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMTEyNlwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcHByJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgICAgICAgICAgY2FzZSAncmVxdWVzdCc6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gV2UncmUgcHJlcmVuZGVyaW5nIGluIGEgbW9kZSB0aGF0IGRvZXMgbm90IGFib3J0LiBXZSByZXNvbHZlIHRoZSBwcm9taXNlIHdpdGhvdXRcbiAgICAvLyBhbnkgdHJhY2tpbmcgYmVjYXVzZSB3ZSdyZSBqdXN0IHRyYW5zcG9ydGluZyBhIHZhbHVlIGZyb20gc2VydmVyIHRvIGNsaWVudCB3aGVyZSB0aGUgdHJhY2tpbmdcbiAgICAvLyB3aWxsIGJlIGFwcGxpZWQuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlcmx5aW5nUGFyYW1zKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVN0YXRpY1ByZXJlbmRlclBhcmFtcyh1bmRlcmx5aW5nUGFyYW1zLCBvcHRpb25hbENhdGNoQWxsUGFyYW1OYW1lLCB3b3JrU3RvcmUsIHByZXJlbmRlclN0b3JlLCB2YXJ5UGFyYW1zQWNjdW11bGF0b3IpIHtcbiAgICBjb25zdCB1bmRlcmx5aW5nUGFyYW1zV2l0aFZhcnlpbmcgPSB2YXJ5UGFyYW1zQWNjdW11bGF0b3IgIT09IG51bGwgPyAoMCwgX3ZhcnlwYXJhbXMuY3JlYXRlVmFyeWluZ1BhcmFtcykodmFyeVBhcmFtc0FjY3VtdWxhdG9yLCB1bmRlcmx5aW5nUGFyYW1zLCBvcHRpb25hbENhdGNoQWxsUGFyYW1OYW1lKSA6IHVuZGVybHlpbmdQYXJhbXM7XG4gICAgc3dpdGNoKHByZXJlbmRlclN0b3JlLnR5cGUpe1xuICAgICAgICBjYXNlICdwcmVyZW5kZXInOlxuICAgICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmYWxsYmFja1BhcmFtcyA9IHByZXJlbmRlclN0b3JlLmZhbGxiYWNrUm91dGVQYXJhbXM7XG4gICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrUGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcihjb25zdCBrZXkgaW4gdW5kZXJseWluZ1BhcmFtcyl7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2tQYXJhbXMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHBhcmFtcyBvYmplY3QgaGFzIG9uZSBvciBtb3JlIGZhbGxiYWNrIHBhcmFtcywgc28gd2UgbmVlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGNvbnNpZGVyIHRoZSBhd2FpdGluZyBvZiB0aGlzIHBhcmFtcyBvYmplY3QgXCJkeW5hbWljXCIuIFNpbmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgYXJlIGluIGNhY2hlQ29tcG9uZW50cyBtb2RlIHdlIGVuY29kZSB0aGlzIGFzIGEgcHJvbWlzZSB0aGF0IG5ldmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzb2x2ZXMuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VIYW5naW5nUGFyYW1zKHVuZGVybHlpbmdQYXJhbXNXaXRoVmFyeWluZywgd29ya1N0b3JlLCBwcmVyZW5kZXJTdG9yZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZhbGxiYWNrUGFyYW1zID0gcHJlcmVuZGVyU3RvcmUuZmFsbGJhY2tSb3V0ZVBhcmFtcztcbiAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2tQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yKGNvbnN0IGtleSBpbiB1bmRlcmx5aW5nUGFyYW1zKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWxsYmFja1BhcmFtcy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlRXJyb3JpbmdQYXJhbXModW5kZXJseWluZ1BhcmFtc1dpdGhWYXJ5aW5nLCBmYWxsYmFja1BhcmFtcywgd29ya1N0b3JlLCBwcmVyZW5kZXJTdG9yZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBwcmVyZW5kZXJTdG9yZTtcbiAgICB9XG4gICAgcmV0dXJuIG1ha2VVbnRyYWNrZWRQYXJhbXModW5kZXJseWluZ1BhcmFtc1dpdGhWYXJ5aW5nKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVJ1bnRpbWVQcmVyZW5kZXJQYXJhbXModW5kZXJseWluZ1BhcmFtcywgb3B0aW9uYWxDYXRjaEFsbFBhcmFtTmFtZSwgd29ya1VuaXRTdG9yZSwgdmFyeVBhcmFtc0FjY3VtdWxhdG9yLCBpc1J1bnRpbWVQcmVmZXRjaGFibGUpIHtcbiAgICBjb25zdCB1bmRlcmx5aW5nUGFyYW1zV2l0aFZhcnlpbmcgPSB2YXJ5UGFyYW1zQWNjdW11bGF0b3IgIT09IG51bGwgPyAoMCwgX3ZhcnlwYXJhbXMuY3JlYXRlVmFyeWluZ1BhcmFtcykodmFyeVBhcmFtc0FjY3VtdWxhdG9yLCB1bmRlcmx5aW5nUGFyYW1zLCBvcHRpb25hbENhdGNoQWxsUGFyYW1OYW1lKSA6IHVuZGVybHlpbmdQYXJhbXM7XG4gICAgY29uc3QgcmVzdWx0ID0gbWFrZVVudHJhY2tlZFBhcmFtcyh1bmRlcmx5aW5nUGFyYW1zV2l0aFZhcnlpbmcpO1xuICAgIGNvbnN0IHsgc3RhZ2VkUmVuZGVyaW5nIH0gPSB3b3JrVW5pdFN0b3JlO1xuICAgIGlmICghc3RhZ2VkUmVuZGVyaW5nKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGNvbnN0IHN0YWdlID0gaXNSdW50aW1lUHJlZmV0Y2hhYmxlID8gX3N0YWdlZHJlbmRlcmluZy5SZW5kZXJTdGFnZS5FYXJseVJ1bnRpbWUgOiBfc3RhZ2VkcmVuZGVyaW5nLlJlbmRlclN0YWdlLlJ1bnRpbWU7XG4gICAgcmV0dXJuIHN0YWdlZFJlbmRlcmluZy53YWl0Rm9yU3RhZ2Uoc3RhZ2UpLnRoZW4oKCk9PnJlc3VsdCk7XG59XG5mdW5jdGlvbiBoYXNGYWxsYmFja1JvdXRlUGFyYW1zKHVuZGVybHlpbmdQYXJhbXMsIGZhbGxiYWNrUGFyYW1zKSB7XG4gICAgaWYgKGZhbGxiYWNrUGFyYW1zKSB7XG4gICAgICAgIGZvcihsZXQga2V5IGluIHVuZGVybHlpbmdQYXJhbXMpe1xuICAgICAgICAgICAgaWYgKGZhbGxiYWNrUGFyYW1zLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gY3JlYXRlU2VydmVyUGFyYW1zSW5JbnN0YW50VmFsaWRhdGlvbih1bmRlcmx5aW5nUGFyYW1zLCB3b3JrU3RvcmUsIHZhbGlkYXRpb25TYW1wbGVzLCBhc3luY0FwaVByb21pc2VzLCBpc1J1bnRpbWVQcmVmZXRjaGFibGUpIHtcbiAgICBjb25zdCB7IGNyZWF0ZUV4aGF1c3RpdmVQYXJhbXNQcm94eSB9ID0gcmVxdWlyZSgnLi4vYXBwLXJlbmRlci9pbnN0YW50LXZhbGlkYXRpb24vaW5zdGFudC1zYW1wbGVzJyk7XG4gICAgY29uc3QgZGVjbGFyZWRQYXJhbXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKHZhbGlkYXRpb25TYW1wbGVzLnBhcmFtcyA/PyB7fSkpO1xuICAgIGNvbnN0IHByb3hpZWRVbmRlcmx5aW5nID0gY3JlYXRlRXhoYXVzdGl2ZVBhcmFtc1Byb3h5KHVuZGVybHlpbmdQYXJhbXMsIGRlY2xhcmVkUGFyYW1zLCB3b3JrU3RvcmUucm91dGUpO1xuICAgIHJldHVybiAoaXNSdW50aW1lUHJlZmV0Y2hhYmxlID8gYXN5bmNBcGlQcm9taXNlcy5lYXJseVNoYXJlZFBhcmFtc1BhcmVudCA6IGFzeW5jQXBpUHJvbWlzZXMuc2hhcmVkUGFyYW1zUGFyZW50KS50aGVuKCgpPT5wcm94aWVkVW5kZXJseWluZyk7XG59XG5mdW5jdGlvbiBjcmVhdGVDbGllbnRQYXJhbXNJbkluc3RhbnRWYWxpZGF0aW9uKHVuZGVybHlpbmdQYXJhbXMsIHdvcmtTdG9yZSwgdmFsaWRhdGlvblNhbXBsZXMpIHtcbiAgICBjb25zdCB7IGNyZWF0ZUV4aGF1c3RpdmVQYXJhbXNQcm94eSB9ID0gcmVxdWlyZSgnLi4vYXBwLXJlbmRlci9pbnN0YW50LXZhbGlkYXRpb24vaW5zdGFudC1zYW1wbGVzJyk7XG4gICAgY29uc3QgZGVjbGFyZWRQYXJhbXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKCh2YWxpZGF0aW9uU2FtcGxlcyA9PSBudWxsID8gdm9pZCAwIDogdmFsaWRhdGlvblNhbXBsZXMucGFyYW1zKSA/PyB7fSkpO1xuICAgIGNvbnN0IHByb3hpZWRVbmRlcmx5aW5nID0gY3JlYXRlRXhoYXVzdGl2ZVBhcmFtc1Byb3h5KHVuZGVybHlpbmdQYXJhbXMsIGRlY2xhcmVkUGFyYW1zLCB3b3JrU3RvcmUucm91dGUpO1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocHJveGllZFVuZGVybHlpbmcpO1xufVxuZnVuY3Rpb24gY3JlYXRlUmVuZGVyUGFyYW1zSW5Qcm9kKHVuZGVybHlpbmdQYXJhbXMpIHtcbiAgICByZXR1cm4gbWFrZVVudHJhY2tlZFBhcmFtcyh1bmRlcmx5aW5nUGFyYW1zKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVJlbmRlclBhcmFtc0luRGV2KHVuZGVybHlpbmdQYXJhbXMsIGZhbGxiYWNrUGFyYW1zLCB3b3JrU3RvcmUsIHJlcXVlc3RTdG9yZSwgaXNSdW50aW1lUHJlZmV0Y2hhYmxlKSB7XG4gICAgcmV0dXJuIG1ha2VEeW5hbWljYWxseVRyYWNrZWRQYXJhbXNXaXRoRGV2V2FybmluZ3ModW5kZXJseWluZ1BhcmFtcywgaGFzRmFsbGJhY2tSb3V0ZVBhcmFtcyh1bmRlcmx5aW5nUGFyYW1zLCBmYWxsYmFja1BhcmFtcyksIHdvcmtTdG9yZSwgcmVxdWVzdFN0b3JlLCBpc1J1bnRpbWVQcmVmZXRjaGFibGUpO1xufVxuY29uc3QgQ2FjaGVkUGFyYW1zID0gbmV3IFdlYWtNYXAoKTtcbmNvbnN0IGZhbGxiYWNrUGFyYW1zUHJveHlIYW5kbGVyID0ge1xuICAgIGdldDogZnVuY3Rpb24gZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgaWYgKHByb3AgPT09ICd0aGVuJyB8fCBwcm9wID09PSAnY2F0Y2gnIHx8IHByb3AgPT09ICdmaW5hbGx5Jykge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICByZXR1cm4gKHtcbiAgICAgICAgICAgICAgICBbcHJvcF06ICguLi5hcmdzKT0+e1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdG9yZSA9IF9keW5hbWljYWNjZXNzYXN5bmNzdG9yYWdlZXh0ZXJuYWwuZHluYW1pY0FjY2Vzc0FzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RvcmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLmFib3J0Q29udHJvbGxlci5hYm9ydChPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKGBBY2Nlc3NlZCBmYWxsYmFjayBcXGBwYXJhbXNcXGAgZHVyaW5nIHByZXJlbmRlcmluZy5gKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTY5MVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJveHkob3JpZ2luYWxNZXRob2QuYXBwbHkodGFyZ2V0LCBhcmdzKSwgZmFsbGJhY2tQYXJhbXNQcm94eUhhbmRsZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pW3Byb3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgfVxufTtcbmZ1bmN0aW9uIG1ha2VIYW5naW5nUGFyYW1zKHVuZGVybHlpbmdQYXJhbXMsIHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpIHtcbiAgICBjb25zdCBjYWNoZWRQYXJhbXMgPSBDYWNoZWRQYXJhbXMuZ2V0KHVuZGVybHlpbmdQYXJhbXMpO1xuICAgIGlmIChjYWNoZWRQYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFBhcmFtcztcbiAgICB9XG4gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm94eSgoMCwgX2R5bmFtaWNyZW5kZXJpbmd1dGlscy5tYWtlSGFuZ2luZ1Byb21pc2UpKHByZXJlbmRlclN0b3JlLnJlbmRlclNpZ25hbCwgd29ya1N0b3JlLnJvdXRlLCAnYHBhcmFtc2AnKSwgZmFsbGJhY2tQYXJhbXNQcm94eUhhbmRsZXIpO1xuICAgIENhY2hlZFBhcmFtcy5zZXQodW5kZXJseWluZ1BhcmFtcywgcHJvbWlzZSk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5mdW5jdGlvbiBtYWtlRXJyb3JpbmdQYXJhbXModW5kZXJseWluZ1BhcmFtcywgZmFsbGJhY2tQYXJhbXMsIHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpIHtcbiAgICBjb25zdCBjYWNoZWRQYXJhbXMgPSBDYWNoZWRQYXJhbXMuZ2V0KHVuZGVybHlpbmdQYXJhbXMpO1xuICAgIGlmIChjYWNoZWRQYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFBhcmFtcztcbiAgICB9XG4gICAgY29uc3QgYXVnbWVudGVkVW5kZXJseWluZyA9IHtcbiAgICAgICAgLi4udW5kZXJseWluZ1BhcmFtc1xuICAgIH07XG4gICAgLy8gV2UgZG9uJ3QgdXNlIG1ha2VSZXNvbHZlZFJlYWN0UHJvbWlzZSBoZXJlIGJlY2F1c2UgcGFyYW1zXG4gICAgLy8gc3VwcG9ydHMgY29weWluZyB3aXRoIHNwcmVhZCBhbmQgd2UgZG9uJ3Qgd2FudCB0byB1bm5lY2Vzc2FyaWx5XG4gICAgLy8gaW5zdHJ1bWVudCB0aGUgcHJvbWlzZSB3aXRoIHNwcmVhZGFibGUgcHJvcGVydGllcyBvZiBSZWFjdFByb21pc2UuXG4gICAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShhdWdtZW50ZWRVbmRlcmx5aW5nKTtcbiAgICBDYWNoZWRQYXJhbXMuc2V0KHVuZGVybHlpbmdQYXJhbXMsIHByb21pc2UpO1xuICAgIE9iamVjdC5rZXlzKHVuZGVybHlpbmdQYXJhbXMpLmZvckVhY2goKHByb3ApPT57XG4gICAgICAgIGlmIChfcmVmbGVjdHV0aWxzLndlbGxLbm93blByb3BlcnRpZXMuaGFzKHByb3ApKSB7XG4gICAgICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgY2Fubm90IGJlIHNoYWRvd2VkIGJlY2F1c2UgdGhleSBuZWVkIHRvIGJlIHRoZVxuICAgICAgICAvLyB0cnVlIHVuZGVybHlpbmcgdmFsdWUgZm9yIFByb21pc2VzIHRvIHdvcmsgY29ycmVjdGx5IGF0IHJ1bnRpbWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmYWxsYmFja1BhcmFtcy5oYXMocHJvcCkpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYXVnbWVudGVkVW5kZXJseWluZywgcHJvcCwge1xuICAgICAgICAgICAgICAgICAgICBnZXQgKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICgwLCBfcmVmbGVjdHV0aWxzLmRlc2NyaWJlU3RyaW5nUHJvcGVydHlBY2Nlc3MpKCdwYXJhbXMnLCBwcm9wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluIG1vc3QgZHluYW1pYyBBUElzIHdlIGFsc28gdGhyb3cgaWYgYGR5bmFtaWMgPSBcImVycm9yXCJgIGhvd2V2ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBwYXJhbXMgaXMgb25seSBkeW5hbWljIHdoZW4gd2UncmUgZ2VuZXJhdGluZyBhIGZhbGxiYWNrIHNoZWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgZXZlbiB3aGVuIGBkeW5hbWljID0gXCJlcnJvclwiYCB3ZSBzdGlsbCBzdXBwb3J0IGdlbmVyYXRpbmcgZHluYW1pY1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmFsbGJhY2sgc2hlbGxzXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPIHJlbW92ZSB0aGlzIGNvbW1lbnQgd2hlbiBjYWNoZUNvbXBvbmVudHMgaXMgdGhlIGRlZmF1bHQgc2luY2UgdGhlcmVcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgYmUgbm8gYGR5bmFtaWMgPSBcImVycm9yXCJgXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJlcmVuZGVyU3RvcmUudHlwZSA9PT0gJ3ByZXJlbmRlci1wcHInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUFBSIFByZXJlbmRlciAobm8gY2FjaGVDb21wb25lbnRzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfZHluYW1pY3JlbmRlcmluZy5wb3N0cG9uZVdpdGhUcmFja2luZykod29ya1N0b3JlLnJvdXRlLCBleHByZXNzaW9uLCBwcmVyZW5kZXJTdG9yZS5keW5hbWljVHJhY2tpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZWdhY3kgUHJlcmVuZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAsIF9keW5hbWljcmVuZGVyaW5nLnRocm93VG9JbnRlcnJ1cHRTdGF0aWNHZW5lcmF0aW9uKShleHByZXNzaW9uLCB3b3JrU3RvcmUsIHByZXJlbmRlclN0b3JlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5mdW5jdGlvbiBtYWtlVW50cmFja2VkUGFyYW1zKHVuZGVybHlpbmdQYXJhbXMpIHtcbiAgICBjb25zdCBjYWNoZWRQYXJhbXMgPSBDYWNoZWRQYXJhbXMuZ2V0KHVuZGVybHlpbmdQYXJhbXMpO1xuICAgIGlmIChjYWNoZWRQYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFBhcmFtcztcbiAgICB9XG4gICAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICBDYWNoZWRQYXJhbXMuc2V0KHVuZGVybHlpbmdQYXJhbXMsIHByb21pc2UpO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuZnVuY3Rpb24gbWFrZUR5bmFtaWNhbGx5VHJhY2tlZFBhcmFtc1dpdGhEZXZXYXJuaW5ncyh1bmRlcmx5aW5nUGFyYW1zLCBoYXNGYWxsYmFja1BhcmFtcywgd29ya1N0b3JlLCByZXF1ZXN0U3RvcmUsIGlzUnVudGltZVByZWZldGNoYWJsZSkge1xuICAgIGlmIChyZXF1ZXN0U3RvcmUuYXN5bmNBcGlQcm9taXNlcyAmJiBoYXNGYWxsYmFja1BhcmFtcykge1xuICAgICAgICAvLyBXZSB3cmFwIGVhY2ggaW5zdGFuY2Ugb2YgcGFyYW1zIGluIGEgYG5ldyBQcm9taXNlKClgLCBiZWNhdXNlIGRlZHVwaW5nXG4gICAgICAgIC8vIHRoZW0gYWNyb3NzIHJlcXVlc3RzIGRvZXNuJ3Qgd29yayBhbnl3YXkgYW5kIHRoaXMgbGV0IHVzIHNob3cgZWFjaFxuICAgICAgICAvLyBhd2FpdCBhIGRpZmZlcmVudCBzZXQgb2YgdmFsdWVzLiBUaGlzIGlzIGltcG9ydGFudCB3aGVuIGFsbCBhd2FpdHNcbiAgICAgICAgLy8gYXJlIGluIHRoaXJkIHBhcnR5IHdoaWNoIHdvdWxkIG90aGVyd2lzZSB0cmFjayBhbGwgdGhlIHdheSB0byB0aGVcbiAgICAgICAgLy8gaW50ZXJuYWwgcGFyYW1zLlxuICAgICAgICBjb25zdCBzaGFyZWRQYXJhbXNQYXJlbnQgPSBpc1J1bnRpbWVQcmVmZXRjaGFibGUgPyByZXF1ZXN0U3RvcmUuYXN5bmNBcGlQcm9taXNlcy5lYXJseVNoYXJlZFBhcmFtc1BhcmVudCA6IHJlcXVlc3RTdG9yZS5hc3luY0FwaVByb21pc2VzLnNoYXJlZFBhcmFtc1BhcmVudDtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57XG4gICAgICAgICAgICBzaGFyZWRQYXJhbXNQYXJlbnQudGhlbigoKT0+cmVzb2x2ZSh1bmRlcmx5aW5nUGFyYW1zKSwgcmVqZWN0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgcHJvbWlzZS5kaXNwbGF5TmFtZSA9ICdwYXJhbXMnO1xuICAgICAgICByZXR1cm4gaW5zdHJ1bWVudFBhcmFtc1Byb21pc2VXaXRoRGV2V2FybmluZ3ModW5kZXJseWluZ1BhcmFtcywgcHJvbWlzZSwgd29ya1N0b3JlKTtcbiAgICB9XG4gICAgY29uc3QgY2FjaGVkUGFyYW1zID0gQ2FjaGVkUGFyYW1zLmdldCh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICBpZiAoY2FjaGVkUGFyYW1zKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRQYXJhbXM7XG4gICAgfVxuICAgIC8vIFdlIGRvbid0IHVzZSBtYWtlUmVzb2x2ZWRSZWFjdFByb21pc2UgaGVyZSBiZWNhdXNlIHBhcmFtc1xuICAgIC8vIHN1cHBvcnRzIGNvcHlpbmcgd2l0aCBzcHJlYWQgYW5kIHdlIGRvbid0IHdhbnQgdG8gdW5uZWNlc3NhcmlseVxuICAgIC8vIGluc3RydW1lbnQgdGhlIHByb21pc2Ugd2l0aCBzcHJlYWRhYmxlIHByb3BlcnRpZXMgb2YgUmVhY3RQcm9taXNlLlxuICAgIGNvbnN0IHByb21pc2UgPSBoYXNGYWxsYmFja1BhcmFtcyA/ICgwLCBfZHluYW1pY3JlbmRlcmluZ3V0aWxzLm1ha2VEZXZ0b29sc0lPQXdhcmVQcm9taXNlKSh1bmRlcmx5aW5nUGFyYW1zLCByZXF1ZXN0U3RvcmUsIF9zdGFnZWRyZW5kZXJpbmcuUmVuZGVyU3RhZ2UuUnVudGltZSkgOiBQcm9taXNlLnJlc29sdmUodW5kZXJseWluZ1BhcmFtcyk7XG4gICAgY29uc3QgcHJveGllZFByb21pc2UgPSBpbnN0cnVtZW50UGFyYW1zUHJvbWlzZVdpdGhEZXZXYXJuaW5ncyh1bmRlcmx5aW5nUGFyYW1zLCBwcm9taXNlLCB3b3JrU3RvcmUpO1xuICAgIENhY2hlZFBhcmFtcy5zZXQodW5kZXJseWluZ1BhcmFtcywgcHJveGllZFByb21pc2UpO1xuICAgIHJldHVybiBwcm94aWVkUHJvbWlzZTtcbn1cbmZ1bmN0aW9uIGluc3RydW1lbnRQYXJhbXNQcm9taXNlV2l0aERldldhcm5pbmdzKHVuZGVybHlpbmdQYXJhbXMsIHByb21pc2UsIHdvcmtTdG9yZSkge1xuICAgIC8vIFRyYWNrIHdoaWNoIHByb3BlcnRpZXMgd2Ugc2hvdWxkIHdhcm4gZm9yLlxuICAgIGNvbnN0IHByb3hpZWRQcm9wZXJ0aWVzID0gbmV3IFNldCgpO1xuICAgIE9iamVjdC5rZXlzKHVuZGVybHlpbmdQYXJhbXMpLmZvckVhY2goKHByb3ApPT57XG4gICAgICAgIGlmIChfcmVmbGVjdHV0aWxzLndlbGxLbm93blByb3BlcnRpZXMuaGFzKHByb3ApKSB7XG4gICAgICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgY2Fubm90IGJlIHNoYWRvd2VkIGJlY2F1c2UgdGhleSBuZWVkIHRvIGJlIHRoZVxuICAgICAgICAvLyB0cnVlIHVuZGVybHlpbmcgdmFsdWUgZm9yIFByb21pc2VzIHRvIHdvcmsgY29ycmVjdGx5IGF0IHJ1bnRpbWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb3hpZWRQcm9wZXJ0aWVzLmFkZChwcm9wKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBuZXcgUHJveHkocHJvbWlzZSwge1xuICAgICAgICBnZXQgKHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpZiAoLy8gV2UgYXJlIGFjY2Vzc2luZyBhIHByb3BlcnR5IHRoYXQgd2FzIHByb3hpZWQgdG8gdGhlIHByb21pc2UgaW5zdGFuY2VcbiAgICAgICAgICAgICAgICBwcm94aWVkUHJvcGVydGllcy5oYXMocHJvcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICgwLCBfcmVmbGVjdHV0aWxzLmRlc2NyaWJlU3RyaW5nUHJvcGVydHlBY2Nlc3MpKCdwYXJhbXMnLCBwcm9wKTtcbiAgICAgICAgICAgICAgICAgICAgd2FybkZvclN5bmNBY2Nlc3Mod29ya1N0b3JlLnJvdXRlLCBleHByZXNzaW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gX3JlZmxlY3QuUmVmbGVjdEFkYXB0ZXIuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpO1xuICAgICAgICB9LFxuICAgICAgICBzZXQgKHRhcmdldCwgcHJvcCwgdmFsdWUsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcHJveGllZFByb3BlcnRpZXMuZGVsZXRlKHByb3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLnNldCh0YXJnZXQsIHByb3AsIHZhbHVlLCByZWNlaXZlcik7XG4gICAgICAgIH0sXG4gICAgICAgIG93bktleXMgKHRhcmdldCkge1xuICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICdgLi4ucGFyYW1zYCBvciBzaW1pbGFyIGV4cHJlc3Npb24nO1xuICAgICAgICAgICAgd2FybkZvclN5bmNBY2Nlc3Mod29ya1N0b3JlLnJvdXRlLCBleHByZXNzaW9uKTtcbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0Lm93bktleXModGFyZ2V0KTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuY29uc3Qgd2FybkZvclN5bmNBY2Nlc3MgPSAoMCwgX2NyZWF0ZWRlZHVwZWRieWNhbGxzaXRlc2VydmVyZXJyb3Jsb2dnZXIuY3JlYXRlRGVkdXBlZEJ5Q2FsbHNpdGVTZXJ2ZXJFcnJvckxvZ2dlckRldikoY3JlYXRlUGFyYW1zQWNjZXNzRXJyb3IpO1xuZnVuY3Rpb24gY3JlYXRlUGFyYW1zQWNjZXNzRXJyb3Iocm91dGUsIGV4cHJlc3Npb24pIHtcbiAgICBjb25zdCBwcmVmaXggPSByb3V0ZSA/IGBSb3V0ZSBcIiR7cm91dGV9XCIgYCA6ICdUaGlzIHJvdXRlICc7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoYCR7cHJlZml4fXVzZWQgJHtleHByZXNzaW9ufS4gYCArIGBcXGBwYXJhbXNcXGAgaXMgYSBQcm9taXNlIGFuZCBtdXN0IGJlIHVud3JhcHBlZCB3aXRoIFxcYGF3YWl0XFxgIG9yIFxcYFJlYWN0LnVzZSgpXFxgIGJlZm9yZSBhY2Nlc3NpbmcgaXRzIHByb3BlcnRpZXMuIGAgKyBgTGVhcm4gbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvc3luYy1keW5hbWljLWFwaXNgKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgIHZhbHVlOiBcIkU4MzRcIixcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXJhbXMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/request/params.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/request/pathname.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/next/dist/server/request/pathname.js ***!
|
||
\***********************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createServerPathnameForMetadata\", ({\n enumerable: true,\n get: function() {\n return createServerPathnameForMetadata;\n }\n}));\nconst _workasyncstorageexternal = __webpack_require__(/*! ../app-render/work-async-storage.external */ \"../app-render/work-async-storage.external\");\nconst _dynamicrendering = __webpack_require__(/*! ../app-render/dynamic-rendering */ \"(rsc)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\");\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ../app-render/work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nconst _dynamicrenderingutils = __webpack_require__(/*! ../dynamic-rendering-utils */ \"(rsc)/./node_modules/next/dist/server/dynamic-rendering-utils.js\");\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(rsc)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nfunction createServerPathnameForMetadata(underlyingPathname) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (!workStore) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected workStore to be initialized'), \"__NEXT_ERROR_CODE\", {\n value: \"E1068\",\n enumerable: false,\n configurable: true\n });\n }\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-ppr':\n case 'prerender-legacy':\n {\n return createPrerenderPathname(underlyingPathname, workStore, workUnitStore);\n }\n case 'prerender-client':\n case 'validation-client':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerPathnameForMetadata should not be called in client contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1065\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerPathnameForMetadata should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E740\",\n enumerable: false,\n configurable: true\n });\n case 'generate-static-params':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerPathnameForMetadata should not be called inside generateStaticParams.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1129\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n return (0, _dynamicrenderingutils.delayUntilRuntimeStage)(workUnitStore, createRenderPathname(underlyingPathname));\n case 'request':\n return createRenderPathname(underlyingPathname);\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nfunction createPrerenderPathname(underlyingPathname, workStore, prerenderStore) {\n switch(prerenderStore.type){\n case 'prerender':\n {\n const fallbackParams = prerenderStore.fallbackRouteParams;\n if (fallbackParams && fallbackParams.size > 0) {\n return (0, _dynamicrenderingutils.makeHangingPromise)(prerenderStore.renderSignal, workStore.route, '`pathname`');\n }\n break;\n }\n case 'prerender-ppr':\n {\n const fallbackParams = prerenderStore.fallbackRouteParams;\n if (fallbackParams && fallbackParams.size > 0) {\n return makeErroringPathname(workStore, prerenderStore.dynamicTracking);\n }\n break;\n }\n case 'prerender-legacy':\n break;\n default:\n prerenderStore;\n }\n // We don't have any fallback params so we have an entirely static safe params object\n return Promise.resolve(underlyingPathname);\n}\nfunction makeErroringPathname(workStore, dynamicTracking) {\n let reject = null;\n const promise = new Promise((_, re)=>{\n reject = re;\n });\n const originalThen = promise.then.bind(promise);\n // We instrument .then so that we can generate a tracking event only if you actually\n // await this promise, not just that it is created.\n promise.then = (onfulfilled, onrejected)=>{\n if (reject) {\n try {\n (0, _dynamicrendering.postponeWithTracking)(workStore.route, 'metadata relative url resolving', dynamicTracking);\n } catch (error) {\n reject(error);\n reject = null;\n }\n }\n return originalThen(onfulfilled, onrejected);\n };\n // We wrap in a noop proxy to trick the runtime into thinking it\n // isn't a native promise (it's not really). This is so that awaiting\n // the promise will call the `then` property triggering the lazy postpone\n return new Proxy(promise, {});\n}\nfunction createRenderPathname(underlyingPathname) {\n return Promise.resolve(underlyingPathname);\n}\n\n//# sourceMappingURL=pathname.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXF1ZXN0L3BhdGhuYW1lLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsbUVBQWtFO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0Ysa0NBQWtDLG1CQUFPLENBQUMsNEZBQTJDO0FBQ3JGLDBCQUEwQixtQkFBTyxDQUFDLDhHQUFpQztBQUNuRSxzQ0FBc0MsbUJBQU8sQ0FBQywwRkFBZ0Q7QUFDOUYsK0JBQStCLG1CQUFPLENBQUMsb0dBQTRCO0FBQ25FLHdCQUF3QixtQkFBTyxDQUFDLHNHQUFrQztBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL3JlcXVlc3QvcGF0aG5hbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJjcmVhdGVTZXJ2ZXJQYXRobmFtZUZvck1ldGFkYXRhXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVTZXJ2ZXJQYXRobmFtZUZvck1ldGFkYXRhO1xuICAgIH1cbn0pO1xuY29uc3QgX3dvcmthc3luY3N0b3JhZ2VleHRlcm5hbCA9IHJlcXVpcmUoXCIuLi9hcHAtcmVuZGVyL3dvcmstYXN5bmMtc3RvcmFnZS5leHRlcm5hbFwiKTtcbmNvbnN0IF9keW5hbWljcmVuZGVyaW5nID0gcmVxdWlyZShcIi4uL2FwcC1yZW5kZXIvZHluYW1pYy1yZW5kZXJpbmdcIik7XG5jb25zdCBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbCA9IHJlcXVpcmUoXCIuLi9hcHAtcmVuZGVyL3dvcmstdW5pdC1hc3luYy1zdG9yYWdlLmV4dGVybmFsXCIpO1xuY29uc3QgX2R5bmFtaWNyZW5kZXJpbmd1dGlscyA9IHJlcXVpcmUoXCIuLi9keW5hbWljLXJlbmRlcmluZy11dGlsc1wiKTtcbmNvbnN0IF9pbnZhcmlhbnRlcnJvciA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvbGliL2ludmFyaWFudC1lcnJvclwiKTtcbmZ1bmN0aW9uIGNyZWF0ZVNlcnZlclBhdGhuYW1lRm9yTWV0YWRhdGEodW5kZXJseWluZ1BhdGhuYW1lKSB7XG4gICAgY29uc3Qgd29ya1N0b3JlID0gX3dvcmthc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrQXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgaWYgKCF3b3JrU3RvcmUpIHtcbiAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ0V4cGVjdGVkIHdvcmtTdG9yZSB0byBiZSBpbml0aWFsaXplZCcpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgIHZhbHVlOiBcIkUxMDY4XCIsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3Qgd29ya1VuaXRTdG9yZSA9IF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLndvcmtVbml0QXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgaWYgKHdvcmtVbml0U3RvcmUpIHtcbiAgICAgICAgc3dpdGNoKHdvcmtVbml0U3RvcmUudHlwZSl7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVQcmVyZW5kZXJQYXRobmFtZSh1bmRlcmx5aW5nUGF0aG5hbWUsIHdvcmtTdG9yZSwgd29ya1VuaXRTdG9yZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWNsaWVudCc6XG4gICAgICAgICAgICBjYXNlICd2YWxpZGF0aW9uLWNsaWVudCc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVNlcnZlclBhdGhuYW1lRm9yTWV0YWRhdGEgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gY2xpZW50IGNvbnRleHRzLicpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTEwNjVcIixcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVNlcnZlclBhdGhuYW1lRm9yTWV0YWRhdGEgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gY2FjaGUgY29udGV4dHMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNzQwXCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ2dlbmVyYXRlLXN0YXRpYy1wYXJhbXMnOlxuICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdjcmVhdGVTZXJ2ZXJQYXRobmFtZUZvck1ldGFkYXRhIHNob3VsZCBub3QgYmUgY2FsbGVkIGluc2lkZSBnZW5lcmF0ZVN0YXRpY1BhcmFtcy4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkUxMTI5XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKDAsIF9keW5hbWljcmVuZGVyaW5ndXRpbHMuZGVsYXlVbnRpbFJ1bnRpbWVTdGFnZSkod29ya1VuaXRTdG9yZSwgY3JlYXRlUmVuZGVyUGF0aG5hbWUodW5kZXJseWluZ1BhdGhuYW1lKSk7XG4gICAgICAgICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyUGF0aG5hbWUodW5kZXJseWluZ1BhdGhuYW1lKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAoMCwgX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwudGhyb3dJbnZhcmlhbnRGb3JNaXNzaW5nU3RvcmUpKCk7XG59XG5mdW5jdGlvbiBjcmVhdGVQcmVyZW5kZXJQYXRobmFtZSh1bmRlcmx5aW5nUGF0aG5hbWUsIHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpIHtcbiAgICBzd2l0Y2gocHJlcmVuZGVyU3RvcmUudHlwZSl7XG4gICAgICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmFsbGJhY2tQYXJhbXMgPSBwcmVyZW5kZXJTdG9yZS5mYWxsYmFja1JvdXRlUGFyYW1zO1xuICAgICAgICAgICAgICAgIGlmIChmYWxsYmFja1BhcmFtcyAmJiBmYWxsYmFja1BhcmFtcy5zaXplID4gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAsIF9keW5hbWljcmVuZGVyaW5ndXRpbHMubWFrZUhhbmdpbmdQcm9taXNlKShwcmVyZW5kZXJTdG9yZS5yZW5kZXJTaWduYWwsIHdvcmtTdG9yZS5yb3V0ZSwgJ2BwYXRobmFtZWAnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZhbGxiYWNrUGFyYW1zID0gcHJlcmVuZGVyU3RvcmUuZmFsbGJhY2tSb3V0ZVBhcmFtcztcbiAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2tQYXJhbXMgJiYgZmFsbGJhY2tQYXJhbXMuc2l6ZSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VFcnJvcmluZ1BhdGhuYW1lKHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUuZHluYW1pY1RyYWNraW5nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBwcmVyZW5kZXJTdG9yZTtcbiAgICB9XG4gICAgLy8gV2UgZG9uJ3QgaGF2ZSBhbnkgZmFsbGJhY2sgcGFyYW1zIHNvIHdlIGhhdmUgYW4gZW50aXJlbHkgc3RhdGljIHNhZmUgcGFyYW1zIG9iamVjdFxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZXJseWluZ1BhdGhuYW1lKTtcbn1cbmZ1bmN0aW9uIG1ha2VFcnJvcmluZ1BhdGhuYW1lKHdvcmtTdG9yZSwgZHluYW1pY1RyYWNraW5nKSB7XG4gICAgbGV0IHJlamVjdCA9IG51bGw7XG4gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChfLCByZSk9PntcbiAgICAgICAgcmVqZWN0ID0gcmU7XG4gICAgfSk7XG4gICAgY29uc3Qgb3JpZ2luYWxUaGVuID0gcHJvbWlzZS50aGVuLmJpbmQocHJvbWlzZSk7XG4gICAgLy8gV2UgaW5zdHJ1bWVudCAudGhlbiBzbyB0aGF0IHdlIGNhbiBnZW5lcmF0ZSBhIHRyYWNraW5nIGV2ZW50IG9ubHkgaWYgeW91IGFjdHVhbGx5XG4gICAgLy8gYXdhaXQgdGhpcyBwcm9taXNlLCBub3QganVzdCB0aGF0IGl0IGlzIGNyZWF0ZWQuXG4gICAgcHJvbWlzZS50aGVuID0gKG9uZnVsZmlsbGVkLCBvbnJlamVjdGVkKT0+e1xuICAgICAgICBpZiAocmVqZWN0KSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICgwLCBfZHluYW1pY3JlbmRlcmluZy5wb3N0cG9uZVdpdGhUcmFja2luZykod29ya1N0b3JlLnJvdXRlLCAnbWV0YWRhdGEgcmVsYXRpdmUgdXJsIHJlc29sdmluZycsIGR5bmFtaWNUcmFja2luZyk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICAgICAgcmVqZWN0ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3JpZ2luYWxUaGVuKG9uZnVsZmlsbGVkLCBvbnJlamVjdGVkKTtcbiAgICB9O1xuICAgIC8vIFdlIHdyYXAgaW4gYSBub29wIHByb3h5IHRvIHRyaWNrIHRoZSBydW50aW1lIGludG8gdGhpbmtpbmcgaXRcbiAgICAvLyBpc24ndCBhIG5hdGl2ZSBwcm9taXNlIChpdCdzIG5vdCByZWFsbHkpLiBUaGlzIGlzIHNvIHRoYXQgYXdhaXRpbmdcbiAgICAvLyB0aGUgcHJvbWlzZSB3aWxsIGNhbGwgdGhlIGB0aGVuYCBwcm9wZXJ0eSB0cmlnZ2VyaW5nIHRoZSBsYXp5IHBvc3Rwb25lXG4gICAgcmV0dXJuIG5ldyBQcm94eShwcm9taXNlLCB7fSk7XG59XG5mdW5jdGlvbiBjcmVhdGVSZW5kZXJQYXRobmFtZSh1bmRlcmx5aW5nUGF0aG5hbWUpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVybHlpbmdQYXRobmFtZSk7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhdGhuYW1lLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/request/pathname.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/request/search-params.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/request/search-params.js ***!
|
||
\****************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createPrerenderSearchParamsForClientPage: function() {\n return createPrerenderSearchParamsForClientPage;\n },\n createSearchParamsFromClient: function() {\n return createSearchParamsFromClient;\n },\n createServerSearchParamsForMetadata: function() {\n return createServerSearchParamsForMetadata;\n },\n createServerSearchParamsForServerPage: function() {\n return createServerSearchParamsForServerPage;\n },\n makeErroringSearchParamsForUseCache: function() {\n return makeErroringSearchParamsForUseCache;\n }\n});\nconst _workasyncstorageexternal = __webpack_require__(/*! ../app-render/work-async-storage.external */ \"../app-render/work-async-storage.external\");\nconst _varyparams = __webpack_require__(/*! ../app-render/vary-params */ \"(rsc)/./node_modules/next/dist/server/app-render/vary-params.js\");\nconst _reflect = __webpack_require__(/*! ../web/spec-extension/adapters/reflect */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js\");\nconst _dynamicrendering = __webpack_require__(/*! ../app-render/dynamic-rendering */ \"(rsc)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\");\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ../app-render/work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(rsc)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nconst _dynamicrenderingutils = __webpack_require__(/*! ../dynamic-rendering-utils */ \"(rsc)/./node_modules/next/dist/server/dynamic-rendering-utils.js\");\nconst _creatededupedbycallsiteservererrorlogger = __webpack_require__(/*! ../create-deduped-by-callsite-server-error-logger */ \"(rsc)/./node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js\");\nconst _reflectutils = __webpack_require__(/*! ../../shared/lib/utils/reflect-utils */ \"(rsc)/./node_modules/next/dist/shared/lib/utils/reflect-utils.js\");\nconst _utils = __webpack_require__(/*! ./utils */ \"(rsc)/./node_modules/next/dist/server/request/utils.js\");\nconst _stagedrendering = __webpack_require__(/*! ../app-render/staged-rendering */ \"(rsc)/./node_modules/next/dist/server/app-render/staged-rendering.js\");\nfunction createSearchParamsFromClient(underlyingSearchParams) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (!workStore) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected workStore to be initialized'), \"__NEXT_ERROR_CODE\", {\n value: \"E1068\",\n enumerable: false,\n configurable: true\n });\n }\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n return createStaticPrerenderSearchParams(workStore, workUnitStore);\n case 'validation-client':\n {\n return createClientSearchParamsInValidation(underlyingSearchParams, workStore, workUnitStore);\n }\n case 'prerender-runtime':\n throw Object.defineProperty(new _invarianterror.InvariantError('createSearchParamsFromClient should not be called in a runtime prerender.'), \"__NEXT_ERROR_CODE\", {\n value: \"E769\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createSearchParamsFromClient should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E739\",\n enumerable: false,\n configurable: true\n });\n case 'generate-static-params':\n throw Object.defineProperty(new _invarianterror.InvariantError('createSearchParamsFromClient should not be called inside generateStaticParams.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1133\",\n enumerable: false,\n configurable: true\n });\n case 'request':\n // Client searchParams are not runtime prefetchable\n const isRuntimePrefetchable = false;\n return createRenderSearchParams(underlyingSearchParams, workStore, workUnitStore, isRuntimePrefetchable);\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nfunction createServerSearchParamsForMetadata(underlyingSearchParams, isRuntimePrefetchable) {\n const metadataVaryParamsAccumulator = (0, _varyparams.getMetadataVaryParamsAccumulator)();\n return createServerSearchParamsForServerPage(underlyingSearchParams, metadataVaryParamsAccumulator, isRuntimePrefetchable);\n}\nfunction createServerSearchParamsForServerPage(underlyingSearchParams, varyParamsAccumulator, isRuntimePrefetchable) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (!workStore) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected workStore to be initialized'), \"__NEXT_ERROR_CODE\", {\n value: \"E1068\",\n enumerable: false,\n configurable: true\n });\n }\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n return createStaticPrerenderSearchParams(workStore, workUnitStore);\n case 'validation-client':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerSearchParamsForServerPage should not be called in a client validation.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1066\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerSearchParamsForServerPage should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E747\",\n enumerable: false,\n configurable: true\n });\n case 'generate-static-params':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerSearchParamsForServerPage should not be called inside generateStaticParams.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1128\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n return createRuntimePrerenderSearchParams(underlyingSearchParams, workUnitStore, varyParamsAccumulator, isRuntimePrefetchable);\n case 'request':\n return createRenderSearchParams(underlyingSearchParams, workStore, workUnitStore, isRuntimePrefetchable);\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nfunction createPrerenderSearchParamsForClientPage() {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (!workStore) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected workStore to be initialized'), \"__NEXT_ERROR_CODE\", {\n value: \"E1068\",\n enumerable: false,\n configurable: true\n });\n }\n if (workStore.forceStatic) {\n // When using forceStatic we override all other logic and always just return an empty\n // dictionary object.\n return Promise.resolve({});\n }\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n // We're prerendering in a mode that aborts (cacheComponents) and should stall\n // the promise to ensure the RSC side is considered dynamic\n return (0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, '`searchParams`');\n case 'validation-client':\n throw Object.defineProperty(new _invarianterror.InvariantError('createPrerenderSearchParamsForClientPage should not be called in a client validation.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1061\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n throw Object.defineProperty(new _invarianterror.InvariantError('createPrerenderSearchParamsForClientPage should not be called in a runtime prerender.'), \"__NEXT_ERROR_CODE\", {\n value: \"E768\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createPrerenderSearchParamsForClientPage should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E746\",\n enumerable: false,\n configurable: true\n });\n case 'generate-static-params':\n throw Object.defineProperty(new _invarianterror.InvariantError('createPrerenderSearchParamsForClientPage should not be called inside generateStaticParams.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1124\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n return Promise.resolve({});\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nfunction createStaticPrerenderSearchParams(workStore, prerenderStore) {\n if (workStore.forceStatic) {\n // When using forceStatic we override all other logic and always just return an empty\n // dictionary object.\n return Promise.resolve({});\n }\n switch(prerenderStore.type){\n case 'prerender':\n case 'prerender-client':\n // We are in a cacheComponents (PPR or otherwise) prerender\n return makeHangingSearchParams(workStore, prerenderStore);\n case 'prerender-ppr':\n case 'prerender-legacy':\n // We are in a legacy static generation and need to interrupt the\n // prerender when search params are accessed.\n return makeErroringSearchParams(workStore, prerenderStore);\n default:\n return prerenderStore;\n }\n}\nfunction createRuntimePrerenderSearchParams(underlyingSearchParams, workUnitStore, varyParamsAccumulator, isRuntimePrefetchable) {\n const underlyingSearchParamsWithVarying = varyParamsAccumulator !== null ? (0, _varyparams.createVaryingSearchParams)(varyParamsAccumulator, underlyingSearchParams) : underlyingSearchParams;\n const result = makeUntrackedSearchParams(underlyingSearchParamsWithVarying);\n const { stagedRendering } = workUnitStore;\n if (!stagedRendering) {\n return result;\n }\n const stage = isRuntimePrefetchable ? _stagedrendering.RenderStage.EarlyRuntime : _stagedrendering.RenderStage.Runtime;\n return stagedRendering.waitForStage(stage).then(()=>result);\n}\nfunction createRenderSearchParams(underlyingSearchParams, workStore, requestStore, isRuntimePrefetchable) {\n if (workStore.forceStatic) {\n // When using forceStatic we override all other logic and always just return an empty\n // dictionary object.\n return Promise.resolve({});\n } else {\n if (true) {\n // Semantically we only need the dev tracking when running in `next dev`\n // but since you would never use next dev with production NODE_ENV we use this\n // as a proxy so we can statically exclude this code from production builds.\n return makeUntrackedSearchParamsWithDevWarnings(underlyingSearchParams, workStore, requestStore, isRuntimePrefetchable);\n } else {}\n }\n}\nconst CachedSearchParams = new WeakMap();\nconst CachedSearchParamsForUseCache = new WeakMap();\nfunction makeHangingSearchParams(workStore, prerenderStore) {\n const cachedSearchParams = CachedSearchParams.get(prerenderStore);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const promise = (0, _dynamicrenderingutils.makeHangingPromise)(prerenderStore.renderSignal, workStore.route, '`searchParams`');\n const proxiedPromise = new Proxy(promise, {\n get (target, prop, receiver) {\n if (Object.hasOwn(promise, prop)) {\n // The promise has this property directly. we must return it.\n // We know it isn't a dynamic access because it can only be something\n // that was previously written to the promise and thus not an underlying searchParam value\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n switch(prop){\n case 'then':\n {\n const expression = '`await searchParams`, `searchParams.then`, or similar';\n (0, _dynamicrendering.annotateDynamicAccess)(expression, prerenderStore);\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n case 'status':\n {\n const expression = '`use(searchParams)`, `searchParams.status`, or similar';\n (0, _dynamicrendering.annotateDynamicAccess)(expression, prerenderStore);\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n default:\n {\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n }\n }\n });\n CachedSearchParams.set(prerenderStore, proxiedPromise);\n return proxiedPromise;\n}\nfunction makeErroringSearchParams(workStore, prerenderStore) {\n const cachedSearchParams = CachedSearchParams.get(workStore);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const underlyingSearchParams = {};\n // For search params we don't construct a ReactPromise because we want to interrupt\n // rendering on any property access that was not set from outside and so we only want\n // to have properties like value and status if React sets them.\n const promise = Promise.resolve(underlyingSearchParams);\n const proxiedPromise = new Proxy(promise, {\n get (target, prop, receiver) {\n if (Object.hasOwn(promise, prop)) {\n // The promise has this property directly. we must return it.\n // We know it isn't a dynamic access because it can only be something\n // that was previously written to the promise and thus not an underlying searchParam value\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n if (typeof prop === 'string' && prop === 'then') {\n const expression = '`await searchParams`, `searchParams.then`, or similar';\n if (workStore.dynamicShouldError) {\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(workStore.route, expression);\n } else if (prerenderStore.type === 'prerender-ppr') {\n // PPR Prerender (no cacheComponents)\n (0, _dynamicrendering.postponeWithTracking)(workStore.route, expression, prerenderStore.dynamicTracking);\n } else {\n // Legacy Prerender\n (0, _dynamicrendering.throwToInterruptStaticGeneration)(expression, workStore, prerenderStore);\n }\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n });\n CachedSearchParams.set(workStore, proxiedPromise);\n return proxiedPromise;\n}\nfunction makeErroringSearchParamsForUseCache() {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (!workStore) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected workStore to be initialized'), \"__NEXT_ERROR_CODE\", {\n value: \"E1068\",\n enumerable: false,\n configurable: true\n });\n }\n const cachedSearchParams = CachedSearchParamsForUseCache.get(workStore);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const promise = Promise.resolve({});\n const proxiedPromise = new Proxy(promise, {\n get: function get(target, prop, receiver) {\n if (Object.hasOwn(promise, prop)) {\n // The promise has this property directly. we must return it. We know it\n // isn't a dynamic access because it can only be something that was\n // previously written to the promise and thus not an underlying\n // searchParam value\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n if (typeof prop === 'string' && (prop === 'then' || !_reflectutils.wellKnownProperties.has(prop))) {\n (0, _utils.throwForSearchParamsAccessInUseCache)(workStore, get);\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n });\n CachedSearchParamsForUseCache.set(workStore, proxiedPromise);\n return proxiedPromise;\n}\nfunction makeUntrackedSearchParams(underlyingSearchParams) {\n const cachedSearchParams = CachedSearchParams.get(underlyingSearchParams);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const promise = Promise.resolve(underlyingSearchParams);\n CachedSearchParams.set(underlyingSearchParams, promise);\n return promise;\n}\nfunction makeUntrackedSearchParamsWithDevWarnings(underlyingSearchParams, workStore, requestStore, isRuntimePrefetchable) {\n if (requestStore.asyncApiPromises) {\n // Do not cache the resulting promise. If we do, we'll only show the first \"awaited at\"\n // across all segments that receive searchParams.\n return makeUntrackedSearchParamsWithDevWarningsImpl(underlyingSearchParams, workStore, requestStore, isRuntimePrefetchable);\n } else {\n const cachedSearchParams = CachedSearchParams.get(underlyingSearchParams);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const promise = makeUntrackedSearchParamsWithDevWarningsImpl(underlyingSearchParams, workStore, requestStore, isRuntimePrefetchable);\n CachedSearchParams.set(requestStore, promise);\n return promise;\n }\n}\nfunction makeUntrackedSearchParamsWithDevWarningsImpl(underlyingSearchParams, workStore, requestStore, isRuntimePrefetchable) {\n const promiseInitialized = {\n current: false\n };\n const proxiedUnderlying = instrumentSearchParamsObjectWithDevWarnings(underlyingSearchParams, workStore, promiseInitialized);\n let promise;\n if (requestStore.asyncApiPromises) {\n // We wrap each instance of searchParams in a `new Promise()`.\n // This is important when all awaits are in third party which would otherwise\n // track all the way to the internal params.\n const sharedSearchParamsParent = isRuntimePrefetchable ? requestStore.asyncApiPromises.earlySharedSearchParamsParent : requestStore.asyncApiPromises.sharedSearchParamsParent;\n promise = new Promise((resolve, reject)=>{\n sharedSearchParamsParent.then(()=>resolve(proxiedUnderlying), reject);\n });\n // @ts-expect-error\n promise.displayName = 'searchParams';\n } else {\n promise = (0, _dynamicrenderingutils.makeDevtoolsIOAwarePromise)(proxiedUnderlying, requestStore, _stagedrendering.RenderStage.Runtime);\n }\n promise.then(()=>{\n promiseInitialized.current = true;\n }, // If we're in staged rendering, this promise will reject if the render\n // is aborted before it can reach the runtime stage.\n // In that case, we have to prevent an unhandled rejection from the promise\n // created by this `.then()` call.\n // This does not affect the `promiseInitialized` logic above,\n // because `proxiedUnderlying` will not be used to resolve the promise,\n // so there's no risk of any of its properties being accessed and triggering\n // an undesireable warning.\n ignoreReject);\n return instrumentSearchParamsPromiseWithDevWarnings(underlyingSearchParams, promise, workStore);\n}\nfunction ignoreReject() {}\nfunction instrumentSearchParamsObjectWithDevWarnings(underlyingSearchParams, workStore, promiseInitialized) {\n // We have an unfortunate sequence of events that requires this initialization logic. We want to instrument the underlying\n // searchParams object to detect if you are accessing values in dev. This is used for warnings and for things like the static prerender\n // indicator. However when we pass this proxy to our Promise.resolve() below the VM checks if the resolved value is a promise by looking\n // at the `.then` property. To our dynamic tracking logic this is indistinguishable from a `then` searchParam and so we would normally trigger\n // dynamic tracking. However we know that this .then is not real dynamic access, it's just how thenables resolve in sequence. So we introduce\n // this initialization concept so we omit the dynamic check until after we've constructed our resolved promise.\n return new Proxy(underlyingSearchParams, {\n get (target, prop, receiver) {\n if (typeof prop === 'string' && promiseInitialized.current) {\n if (workStore.dynamicShouldError) {\n const expression = (0, _reflectutils.describeStringPropertyAccess)('searchParams', prop);\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(workStore.route, expression);\n }\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n },\n has (target, prop) {\n if (typeof prop === 'string') {\n if (workStore.dynamicShouldError) {\n const expression = (0, _reflectutils.describeHasCheckingStringProperty)('searchParams', prop);\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(workStore.route, expression);\n }\n }\n return Reflect.has(target, prop);\n },\n ownKeys (target) {\n if (workStore.dynamicShouldError) {\n const expression = '`{...searchParams}`, `Object.keys(searchParams)`, or similar';\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(workStore.route, expression);\n }\n return Reflect.ownKeys(target);\n }\n });\n}\nfunction instrumentSearchParamsPromiseWithDevWarnings(underlyingSearchParams, promise, workStore) {\n // Track which properties we should warn for.\n const proxiedProperties = new Set();\n Object.keys(underlyingSearchParams).forEach((prop)=>{\n if (_reflectutils.wellKnownProperties.has(prop)) {\n // These properties cannot be shadowed because they need to be the\n // true underlying value for Promises to work correctly at runtime\n } else {\n proxiedProperties.add(prop);\n }\n });\n return new Proxy(promise, {\n get (target, prop, receiver) {\n if (prop === 'then' && workStore.dynamicShouldError) {\n const expression = '`searchParams.then`';\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(workStore.route, expression);\n }\n if (typeof prop === 'string') {\n if (!_reflectutils.wellKnownProperties.has(prop) && (proxiedProperties.has(prop) || // We are accessing a property that doesn't exist on the promise nor\n // the underlying searchParams.\n Reflect.has(target, prop) === false)) {\n const expression = (0, _reflectutils.describeStringPropertyAccess)('searchParams', prop);\n warnForSyncAccess(workStore.route, expression);\n }\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n },\n set (target, prop, value, receiver) {\n if (typeof prop === 'string') {\n proxiedProperties.delete(prop);\n }\n return Reflect.set(target, prop, value, receiver);\n },\n has (target, prop) {\n if (typeof prop === 'string') {\n if (!_reflectutils.wellKnownProperties.has(prop) && (proxiedProperties.has(prop) || // We are accessing a property that doesn't exist on the promise nor\n // the underlying searchParams.\n Reflect.has(target, prop) === false)) {\n const expression = (0, _reflectutils.describeHasCheckingStringProperty)('searchParams', prop);\n warnForSyncAccess(workStore.route, expression);\n }\n }\n return Reflect.has(target, prop);\n },\n ownKeys (target) {\n const expression = '`Object.keys(searchParams)` or similar';\n warnForSyncAccess(workStore.route, expression);\n return Reflect.ownKeys(target);\n }\n });\n}\nconst warnForSyncAccess = (0, _creatededupedbycallsiteservererrorlogger.createDedupedByCallsiteServerErrorLoggerDev)(createSearchAccessError);\nfunction createSearchAccessError(route, expression) {\n const prefix = route ? `Route \"${route}\" ` : 'This route ';\n return Object.defineProperty(new Error(`${prefix}used ${expression}. ` + `\\`searchParams\\` is a Promise and must be unwrapped with \\`await\\` or \\`React.use()\\` before accessing its properties. ` + `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`), \"__NEXT_ERROR_CODE\", {\n value: \"E848\",\n enumerable: false,\n configurable: true\n });\n}\nfunction createClientSearchParamsInValidation(underlyingSearchParams, workStore, workUnitStore) {\n var _workUnitStore_validationSamples;\n const { createExhaustiveSearchParamsProxy } = __webpack_require__(/*! ../app-render/instant-validation/instant-samples */ \"(rsc)/./node_modules/next/dist/server/app-render/instant-validation/instant-samples.js\");\n const declaredKeys = new Set(Object.keys(((_workUnitStore_validationSamples = workUnitStore.validationSamples) == null ? void 0 : _workUnitStore_validationSamples.searchParams) ?? {}));\n underlyingSearchParams = createExhaustiveSearchParamsProxy(underlyingSearchParams, declaredKeys, workStore.route);\n return Promise.resolve(underlyingSearchParams);\n}\n\n//# sourceMappingURL=search-params.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXF1ZXN0L3NlYXJjaC1wYXJhbXMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBTUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Qsa0NBQWtDLG1CQUFPLENBQUMsNEZBQTJDO0FBQ3JGLG9CQUFvQixtQkFBTyxDQUFDLGtHQUEyQjtBQUN2RCxpQkFBaUIsbUJBQU8sQ0FBQyw0SEFBd0M7QUFDakUsMEJBQTBCLG1CQUFPLENBQUMsOEdBQWlDO0FBQ25FLHNDQUFzQyxtQkFBTyxDQUFDLDBGQUFnRDtBQUM5Rix3QkFBd0IsbUJBQU8sQ0FBQyxzR0FBa0M7QUFDbEUsK0JBQStCLG1CQUFPLENBQUMsb0dBQTRCO0FBQ25FLGtEQUFrRCxtQkFBTyxDQUFDLGtKQUFtRDtBQUM3RyxzQkFBc0IsbUJBQU8sQ0FBQyw4R0FBc0M7QUFDcEUsZUFBZSxtQkFBTyxDQUFDLHVFQUFTO0FBQ2hDLHlCQUF5QixtQkFBTyxDQUFDLDRHQUFnQztBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksa0JBQWtCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDLE1BQU07QUFDTixZQUFZLElBQXNDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxLQUFLLEVBU047QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxzQ0FBc0MsZ0JBQWdCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxNQUFNO0FBQzNDLDhDQUE4QyxPQUFPLE9BQU8sV0FBVztBQUN2RTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsWUFBWSxvQ0FBb0MsRUFBRSxtQkFBTyxDQUFDLGdKQUFrRDtBQUM1RywwTEFBMEw7QUFDMUw7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvcmVxdWVzdC9zZWFyY2gtcGFyYW1zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgY3JlYXRlUHJlcmVuZGVyU2VhcmNoUGFyYW1zRm9yQ2xpZW50UGFnZTogbnVsbCxcbiAgICBjcmVhdGVTZWFyY2hQYXJhbXNGcm9tQ2xpZW50OiBudWxsLFxuICAgIGNyZWF0ZVNlcnZlclNlYXJjaFBhcmFtc0Zvck1ldGFkYXRhOiBudWxsLFxuICAgIGNyZWF0ZVNlcnZlclNlYXJjaFBhcmFtc0ZvclNlcnZlclBhZ2U6IG51bGwsXG4gICAgbWFrZUVycm9yaW5nU2VhcmNoUGFyYW1zRm9yVXNlQ2FjaGU6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgY3JlYXRlUHJlcmVuZGVyU2VhcmNoUGFyYW1zRm9yQ2xpZW50UGFnZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVQcmVyZW5kZXJTZWFyY2hQYXJhbXNGb3JDbGllbnRQYWdlO1xuICAgIH0sXG4gICAgY3JlYXRlU2VhcmNoUGFyYW1zRnJvbUNsaWVudDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVTZWFyY2hQYXJhbXNGcm9tQ2xpZW50O1xuICAgIH0sXG4gICAgY3JlYXRlU2VydmVyU2VhcmNoUGFyYW1zRm9yTWV0YWRhdGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlU2VydmVyU2VhcmNoUGFyYW1zRm9yTWV0YWRhdGE7XG4gICAgfSxcbiAgICBjcmVhdGVTZXJ2ZXJTZWFyY2hQYXJhbXNGb3JTZXJ2ZXJQYWdlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVNlcnZlclNlYXJjaFBhcmFtc0ZvclNlcnZlclBhZ2U7XG4gICAgfSxcbiAgICBtYWtlRXJyb3JpbmdTZWFyY2hQYXJhbXNGb3JVc2VDYWNoZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBtYWtlRXJyb3JpbmdTZWFyY2hQYXJhbXNGb3JVc2VDYWNoZTtcbiAgICB9XG59KTtcbmNvbnN0IF93b3JrYXN5bmNzdG9yYWdlZXh0ZXJuYWwgPSByZXF1aXJlKFwiLi4vYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWxcIik7XG5jb25zdCBfdmFyeXBhcmFtcyA9IHJlcXVpcmUoXCIuLi9hcHAtcmVuZGVyL3ZhcnktcGFyYW1zXCIpO1xuY29uc3QgX3JlZmxlY3QgPSByZXF1aXJlKFwiLi4vd2ViL3NwZWMtZXh0ZW5zaW9uL2FkYXB0ZXJzL3JlZmxlY3RcIik7XG5jb25zdCBfZHluYW1pY3JlbmRlcmluZyA9IHJlcXVpcmUoXCIuLi9hcHAtcmVuZGVyL2R5bmFtaWMtcmVuZGVyaW5nXCIpO1xuY29uc3QgX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwgPSByZXF1aXJlKFwiLi4vYXBwLXJlbmRlci93b3JrLXVuaXQtYXN5bmMtc3RvcmFnZS5leHRlcm5hbFwiKTtcbmNvbnN0IF9pbnZhcmlhbnRlcnJvciA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvbGliL2ludmFyaWFudC1lcnJvclwiKTtcbmNvbnN0IF9keW5hbWljcmVuZGVyaW5ndXRpbHMgPSByZXF1aXJlKFwiLi4vZHluYW1pYy1yZW5kZXJpbmctdXRpbHNcIik7XG5jb25zdCBfY3JlYXRlZGVkdXBlZGJ5Y2FsbHNpdGVzZXJ2ZXJlcnJvcmxvZ2dlciA9IHJlcXVpcmUoXCIuLi9jcmVhdGUtZGVkdXBlZC1ieS1jYWxsc2l0ZS1zZXJ2ZXItZXJyb3ItbG9nZ2VyXCIpO1xuY29uc3QgX3JlZmxlY3R1dGlscyA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvbGliL3V0aWxzL3JlZmxlY3QtdXRpbHNcIik7XG5jb25zdCBfdXRpbHMgPSByZXF1aXJlKFwiLi91dGlsc1wiKTtcbmNvbnN0IF9zdGFnZWRyZW5kZXJpbmcgPSByZXF1aXJlKFwiLi4vYXBwLXJlbmRlci9zdGFnZWQtcmVuZGVyaW5nXCIpO1xuZnVuY3Rpb24gY3JlYXRlU2VhcmNoUGFyYW1zRnJvbUNsaWVudCh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zKSB7XG4gICAgY29uc3Qgd29ya1N0b3JlID0gX3dvcmthc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrQXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgaWYgKCF3b3JrU3RvcmUpIHtcbiAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ0V4cGVjdGVkIHdvcmtTdG9yZSB0byBiZSBpbml0aWFsaXplZCcpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgIHZhbHVlOiBcIkUxMDY4XCIsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3Qgd29ya1VuaXRTdG9yZSA9IF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLndvcmtVbml0QXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgaWYgKHdvcmtVbml0U3RvcmUpIHtcbiAgICAgICAgc3dpdGNoKHdvcmtVbml0U3RvcmUudHlwZSl7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWNsaWVudCc6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcHByJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVTdGF0aWNQcmVyZW5kZXJTZWFyY2hQYXJhbXMod29ya1N0b3JlLCB3b3JrVW5pdFN0b3JlKTtcbiAgICAgICAgICAgIGNhc2UgJ3ZhbGlkYXRpb24tY2xpZW50JzpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVDbGllbnRTZWFyY2hQYXJhbXNJblZhbGlkYXRpb24odW5kZXJseWluZ1NlYXJjaFBhcmFtcywgd29ya1N0b3JlLCB3b3JrVW5pdFN0b3JlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVNlYXJjaFBhcmFtc0Zyb21DbGllbnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gYSBydW50aW1lIHByZXJlbmRlci4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU3NjlcIixcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVNlYXJjaFBhcmFtc0Zyb21DbGllbnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gY2FjaGUgY29udGV4dHMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNzM5XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ2dlbmVyYXRlLXN0YXRpYy1wYXJhbXMnOlxuICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdjcmVhdGVTZWFyY2hQYXJhbXNGcm9tQ2xpZW50IHNob3VsZCBub3QgYmUgY2FsbGVkIGluc2lkZSBnZW5lcmF0ZVN0YXRpY1BhcmFtcy4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkUxMTMzXCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgICAgIC8vIENsaWVudCBzZWFyY2hQYXJhbXMgYXJlIG5vdCBydW50aW1lIHByZWZldGNoYWJsZVxuICAgICAgICAgICAgICAgIGNvbnN0IGlzUnVudGltZVByZWZldGNoYWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJTZWFyY2hQYXJhbXModW5kZXJseWluZ1NlYXJjaFBhcmFtcywgd29ya1N0b3JlLCB3b3JrVW5pdFN0b3JlLCBpc1J1bnRpbWVQcmVmZXRjaGFibGUpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB3b3JrVW5pdFN0b3JlO1xuICAgICAgICB9XG4gICAgfVxuICAgICgwLCBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC50aHJvd0ludmFyaWFudEZvck1pc3NpbmdTdG9yZSkoKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVNlcnZlclNlYXJjaFBhcmFtc0Zvck1ldGFkYXRhKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIGlzUnVudGltZVByZWZldGNoYWJsZSkge1xuICAgIGNvbnN0IG1ldGFkYXRhVmFyeVBhcmFtc0FjY3VtdWxhdG9yID0gKDAsIF92YXJ5cGFyYW1zLmdldE1ldGFkYXRhVmFyeVBhcmFtc0FjY3VtdWxhdG9yKSgpO1xuICAgIHJldHVybiBjcmVhdGVTZXJ2ZXJTZWFyY2hQYXJhbXNGb3JTZXJ2ZXJQYWdlKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIG1ldGFkYXRhVmFyeVBhcmFtc0FjY3VtdWxhdG9yLCBpc1J1bnRpbWVQcmVmZXRjaGFibGUpO1xufVxuZnVuY3Rpb24gY3JlYXRlU2VydmVyU2VhcmNoUGFyYW1zRm9yU2VydmVyUGFnZSh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCB2YXJ5UGFyYW1zQWNjdW11bGF0b3IsIGlzUnVudGltZVByZWZldGNoYWJsZSkge1xuICAgIGNvbnN0IHdvcmtTdG9yZSA9IF93b3JrYXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya0FzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICghd29ya1N0b3JlKSB7XG4gICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdFeHBlY3RlZCB3b3JrU3RvcmUgdG8gYmUgaW5pdGlhbGl6ZWQnKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICB2YWx1ZTogXCJFMTA2OFwiLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHdvcmtVbml0U3RvcmUgPSBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICh3b3JrVW5pdFN0b3JlKSB7XG4gICAgICAgIHN3aXRjaCh3b3JrVW5pdFN0b3JlLnR5cGUpe1xuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlU3RhdGljUHJlcmVuZGVyU2VhcmNoUGFyYW1zKHdvcmtTdG9yZSwgd29ya1VuaXRTdG9yZSk7XG4gICAgICAgICAgICBjYXNlICd2YWxpZGF0aW9uLWNsaWVudCc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVNlcnZlclNlYXJjaFBhcmFtc0ZvclNlcnZlclBhZ2Ugc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gYSBjbGllbnQgdmFsaWRhdGlvbi4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkUxMDY2XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ2NhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByaXZhdGUtY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAndW5zdGFibGUtY2FjaGUnOlxuICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdjcmVhdGVTZXJ2ZXJTZWFyY2hQYXJhbXNGb3JTZXJ2ZXJQYWdlIHNob3VsZCBub3QgYmUgY2FsbGVkIGluIGNhY2hlIGNvbnRleHRzLicpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTc0N1wiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlICdnZW5lcmF0ZS1zdGF0aWMtcGFyYW1zJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignY3JlYXRlU2VydmVyU2VhcmNoUGFyYW1zRm9yU2VydmVyUGFnZSBzaG91bGQgbm90IGJlIGNhbGxlZCBpbnNpZGUgZ2VuZXJhdGVTdGF0aWNQYXJhbXMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMTEyOFwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJ1bnRpbWVQcmVyZW5kZXJTZWFyY2hQYXJhbXModW5kZXJseWluZ1NlYXJjaFBhcmFtcywgd29ya1VuaXRTdG9yZSwgdmFyeVBhcmFtc0FjY3VtdWxhdG9yLCBpc1J1bnRpbWVQcmVmZXRjaGFibGUpO1xuICAgICAgICAgICAgY2FzZSAncmVxdWVzdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlclNlYXJjaFBhcmFtcyh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCB3b3JrU3RvcmUsIHdvcmtVbml0U3RvcmUsIGlzUnVudGltZVByZWZldGNoYWJsZSk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgKDAsIF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLnRocm93SW52YXJpYW50Rm9yTWlzc2luZ1N0b3JlKSgpO1xufVxuZnVuY3Rpb24gY3JlYXRlUHJlcmVuZGVyU2VhcmNoUGFyYW1zRm9yQ2xpZW50UGFnZSgpIHtcbiAgICBjb25zdCB3b3JrU3RvcmUgPSBfd29ya2FzeW5jc3RvcmFnZWV4dGVybmFsLndvcmtBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAoIXdvcmtTdG9yZSkge1xuICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignRXhwZWN0ZWQgd29ya1N0b3JlIHRvIGJlIGluaXRpYWxpemVkJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgdmFsdWU6IFwiRTEwNjhcIixcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAod29ya1N0b3JlLmZvcmNlU3RhdGljKSB7XG4gICAgICAgIC8vIFdoZW4gdXNpbmcgZm9yY2VTdGF0aWMgd2Ugb3ZlcnJpZGUgYWxsIG90aGVyIGxvZ2ljIGFuZCBhbHdheXMganVzdCByZXR1cm4gYW4gZW1wdHlcbiAgICAgICAgLy8gZGljdGlvbmFyeSBvYmplY3QuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuICAgIH1cbiAgICBjb25zdCB3b3JrVW5pdFN0b3JlID0gX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya1VuaXRBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgICAgICBzd2l0Y2god29ya1VuaXRTdG9yZS50eXBlKXtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgICAgICAgICAgICAvLyBXZSdyZSBwcmVyZW5kZXJpbmcgaW4gYSBtb2RlIHRoYXQgYWJvcnRzIChjYWNoZUNvbXBvbmVudHMpIGFuZCBzaG91bGQgc3RhbGxcbiAgICAgICAgICAgICAgICAvLyB0aGUgcHJvbWlzZSB0byBlbnN1cmUgdGhlIFJTQyBzaWRlIGlzIGNvbnNpZGVyZWQgZHluYW1pY1xuICAgICAgICAgICAgICAgIHJldHVybiAoMCwgX2R5bmFtaWNyZW5kZXJpbmd1dGlscy5tYWtlSGFuZ2luZ1Byb21pc2UpKHdvcmtVbml0U3RvcmUucmVuZGVyU2lnbmFsLCB3b3JrU3RvcmUucm91dGUsICdgc2VhcmNoUGFyYW1zYCcpO1xuICAgICAgICAgICAgY2FzZSAndmFsaWRhdGlvbi1jbGllbnQnOlxuICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdjcmVhdGVQcmVyZW5kZXJTZWFyY2hQYXJhbXNGb3JDbGllbnRQYWdlIHNob3VsZCBub3QgYmUgY2FsbGVkIGluIGEgY2xpZW50IHZhbGlkYXRpb24uJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMTA2MVwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVByZXJlbmRlclNlYXJjaFBhcmFtc0ZvckNsaWVudFBhZ2Ugc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gYSBydW50aW1lIHByZXJlbmRlci4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU3NjhcIixcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVByZXJlbmRlclNlYXJjaFBhcmFtc0ZvckNsaWVudFBhZ2Ugc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gY2FjaGUgY29udGV4dHMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNzQ2XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ2dlbmVyYXRlLXN0YXRpYy1wYXJhbXMnOlxuICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdjcmVhdGVQcmVyZW5kZXJTZWFyY2hQYXJhbXNGb3JDbGllbnRQYWdlIHNob3VsZCBub3QgYmUgY2FsbGVkIGluc2lkZSBnZW5lcmF0ZVN0YXRpY1BhcmFtcy4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkUxMTI0XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAoMCwgX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwudGhyb3dJbnZhcmlhbnRGb3JNaXNzaW5nU3RvcmUpKCk7XG59XG5mdW5jdGlvbiBjcmVhdGVTdGF0aWNQcmVyZW5kZXJTZWFyY2hQYXJhbXMod29ya1N0b3JlLCBwcmVyZW5kZXJTdG9yZSkge1xuICAgIGlmICh3b3JrU3RvcmUuZm9yY2VTdGF0aWMpIHtcbiAgICAgICAgLy8gV2hlbiB1c2luZyBmb3JjZVN0YXRpYyB3ZSBvdmVycmlkZSBhbGwgb3RoZXIgbG9naWMgYW5kIGFsd2F5cyBqdXN0IHJldHVybiBhbiBlbXB0eVxuICAgICAgICAvLyBkaWN0aW9uYXJ5IG9iamVjdC5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XG4gICAgfVxuICAgIHN3aXRjaChwcmVyZW5kZXJTdG9yZS50eXBlKXtcbiAgICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgICAgY2FzZSAncHJlcmVuZGVyLWNsaWVudCc6XG4gICAgICAgICAgICAvLyBXZSBhcmUgaW4gYSBjYWNoZUNvbXBvbmVudHMgKFBQUiBvciBvdGhlcndpc2UpIHByZXJlbmRlclxuICAgICAgICAgICAgcmV0dXJuIG1ha2VIYW5naW5nU2VhcmNoUGFyYW1zKHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpO1xuICAgICAgICBjYXNlICdwcmVyZW5kZXItcHByJzpcbiAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICAvLyBXZSBhcmUgaW4gYSBsZWdhY3kgc3RhdGljIGdlbmVyYXRpb24gYW5kIG5lZWQgdG8gaW50ZXJydXB0IHRoZVxuICAgICAgICAgICAgLy8gcHJlcmVuZGVyIHdoZW4gc2VhcmNoIHBhcmFtcyBhcmUgYWNjZXNzZWQuXG4gICAgICAgICAgICByZXR1cm4gbWFrZUVycm9yaW5nU2VhcmNoUGFyYW1zKHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIHByZXJlbmRlclN0b3JlO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZVJ1bnRpbWVQcmVyZW5kZXJTZWFyY2hQYXJhbXModW5kZXJseWluZ1NlYXJjaFBhcmFtcywgd29ya1VuaXRTdG9yZSwgdmFyeVBhcmFtc0FjY3VtdWxhdG9yLCBpc1J1bnRpbWVQcmVmZXRjaGFibGUpIHtcbiAgICBjb25zdCB1bmRlcmx5aW5nU2VhcmNoUGFyYW1zV2l0aFZhcnlpbmcgPSB2YXJ5UGFyYW1zQWNjdW11bGF0b3IgIT09IG51bGwgPyAoMCwgX3ZhcnlwYXJhbXMuY3JlYXRlVmFyeWluZ1NlYXJjaFBhcmFtcykodmFyeVBhcmFtc0FjY3VtdWxhdG9yLCB1bmRlcmx5aW5nU2VhcmNoUGFyYW1zKSA6IHVuZGVybHlpbmdTZWFyY2hQYXJhbXM7XG4gICAgY29uc3QgcmVzdWx0ID0gbWFrZVVudHJhY2tlZFNlYXJjaFBhcmFtcyh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zV2l0aFZhcnlpbmcpO1xuICAgIGNvbnN0IHsgc3RhZ2VkUmVuZGVyaW5nIH0gPSB3b3JrVW5pdFN0b3JlO1xuICAgIGlmICghc3RhZ2VkUmVuZGVyaW5nKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGNvbnN0IHN0YWdlID0gaXNSdW50aW1lUHJlZmV0Y2hhYmxlID8gX3N0YWdlZHJlbmRlcmluZy5SZW5kZXJTdGFnZS5FYXJseVJ1bnRpbWUgOiBfc3RhZ2VkcmVuZGVyaW5nLlJlbmRlclN0YWdlLlJ1bnRpbWU7XG4gICAgcmV0dXJuIHN0YWdlZFJlbmRlcmluZy53YWl0Rm9yU3RhZ2Uoc3RhZ2UpLnRoZW4oKCk9PnJlc3VsdCk7XG59XG5mdW5jdGlvbiBjcmVhdGVSZW5kZXJTZWFyY2hQYXJhbXModW5kZXJseWluZ1NlYXJjaFBhcmFtcywgd29ya1N0b3JlLCByZXF1ZXN0U3RvcmUsIGlzUnVudGltZVByZWZldGNoYWJsZSkge1xuICAgIGlmICh3b3JrU3RvcmUuZm9yY2VTdGF0aWMpIHtcbiAgICAgICAgLy8gV2hlbiB1c2luZyBmb3JjZVN0YXRpYyB3ZSBvdmVycmlkZSBhbGwgb3RoZXIgbG9naWMgYW5kIGFsd2F5cyBqdXN0IHJldHVybiBhbiBlbXB0eVxuICAgICAgICAvLyBkaWN0aW9uYXJ5IG9iamVjdC5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAgICAgICAvLyBTZW1hbnRpY2FsbHkgd2Ugb25seSBuZWVkIHRoZSBkZXYgdHJhY2tpbmcgd2hlbiBydW5uaW5nIGluIGBuZXh0IGRldmBcbiAgICAgICAgICAgIC8vIGJ1dCBzaW5jZSB5b3Ugd291bGQgbmV2ZXIgdXNlIG5leHQgZGV2IHdpdGggcHJvZHVjdGlvbiBOT0RFX0VOViB3ZSB1c2UgdGhpc1xuICAgICAgICAgICAgLy8gYXMgYSBwcm94eSBzbyB3ZSBjYW4gc3RhdGljYWxseSBleGNsdWRlIHRoaXMgY29kZSBmcm9tIHByb2R1Y3Rpb24gYnVpbGRzLlxuICAgICAgICAgICAgcmV0dXJuIG1ha2VVbnRyYWNrZWRTZWFyY2hQYXJhbXNXaXRoRGV2V2FybmluZ3ModW5kZXJseWluZ1NlYXJjaFBhcmFtcywgd29ya1N0b3JlLCByZXF1ZXN0U3RvcmUsIGlzUnVudGltZVByZWZldGNoYWJsZSk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVxdWVzdFN0b3JlLmFzeW5jQXBpUHJvbWlzZXMpIHtcbiAgICAgICAgICAgIGlmIChyZXF1ZXN0U3RvcmUudmFsaWRhdGlvblNhbXBsZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGNyZWF0ZUV4aGF1c3RpdmVTZWFyY2hQYXJhbXNQcm94eSB9ID0gcmVxdWlyZSgnLi4vYXBwLXJlbmRlci9pbnN0YW50LXZhbGlkYXRpb24vaW5zdGFudC1zYW1wbGVzJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVjbGFyZWRLZXlzID0gbmV3IFNldChPYmplY3Qua2V5cyhyZXF1ZXN0U3RvcmUudmFsaWRhdGlvblNhbXBsZXMuc2VhcmNoUGFyYW1zID8/IHt9KSk7XG4gICAgICAgICAgICAgICAgdW5kZXJseWluZ1NlYXJjaFBhcmFtcyA9IGNyZWF0ZUV4aGF1c3RpdmVTZWFyY2hQYXJhbXNQcm94eSh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCBkZWNsYXJlZEtleXMsIHdvcmtTdG9yZS5yb3V0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gKGlzUnVudGltZVByZWZldGNoYWJsZSA/IHJlcXVlc3RTdG9yZS5hc3luY0FwaVByb21pc2VzLmVhcmx5U2hhcmVkU2VhcmNoUGFyYW1zUGFyZW50IDogcmVxdWVzdFN0b3JlLmFzeW5jQXBpUHJvbWlzZXMuc2hhcmVkU2VhcmNoUGFyYW1zUGFyZW50KS50aGVuKCgpPT51bmRlcmx5aW5nU2VhcmNoUGFyYW1zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBtYWtlVW50cmFja2VkU2VhcmNoUGFyYW1zKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMpO1xuICAgICAgICB9XG4gICAgfVxufVxuY29uc3QgQ2FjaGVkU2VhcmNoUGFyYW1zID0gbmV3IFdlYWtNYXAoKTtcbmNvbnN0IENhY2hlZFNlYXJjaFBhcmFtc0ZvclVzZUNhY2hlID0gbmV3IFdlYWtNYXAoKTtcbmZ1bmN0aW9uIG1ha2VIYW5naW5nU2VhcmNoUGFyYW1zKHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpIHtcbiAgICBjb25zdCBjYWNoZWRTZWFyY2hQYXJhbXMgPSBDYWNoZWRTZWFyY2hQYXJhbXMuZ2V0KHByZXJlbmRlclN0b3JlKTtcbiAgICBpZiAoY2FjaGVkU2VhcmNoUGFyYW1zKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRTZWFyY2hQYXJhbXM7XG4gICAgfVxuICAgIGNvbnN0IHByb21pc2UgPSAoMCwgX2R5bmFtaWNyZW5kZXJpbmd1dGlscy5tYWtlSGFuZ2luZ1Byb21pc2UpKHByZXJlbmRlclN0b3JlLnJlbmRlclNpZ25hbCwgd29ya1N0b3JlLnJvdXRlLCAnYHNlYXJjaFBhcmFtc2AnKTtcbiAgICBjb25zdCBwcm94aWVkUHJvbWlzZSA9IG5ldyBQcm94eShwcm9taXNlLCB7XG4gICAgICAgIGdldCAodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5oYXNPd24ocHJvbWlzZSwgcHJvcCkpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGUgcHJvbWlzZSBoYXMgdGhpcyBwcm9wZXJ0eSBkaXJlY3RseS4gd2UgbXVzdCByZXR1cm4gaXQuXG4gICAgICAgICAgICAgICAgLy8gV2Uga25vdyBpdCBpc24ndCBhIGR5bmFtaWMgYWNjZXNzIGJlY2F1c2UgaXQgY2FuIG9ubHkgYmUgc29tZXRoaW5nXG4gICAgICAgICAgICAgICAgLy8gdGhhdCB3YXMgcHJldmlvdXNseSB3cml0dGVuIHRvIHRoZSBwcm9taXNlIGFuZCB0aHVzIG5vdCBhbiB1bmRlcmx5aW5nIHNlYXJjaFBhcmFtIHZhbHVlXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN3aXRjaChwcm9wKXtcbiAgICAgICAgICAgICAgICBjYXNlICd0aGVuJzpcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICdgYXdhaXQgc2VhcmNoUGFyYW1zYCwgYHNlYXJjaFBhcmFtcy50aGVuYCwgb3Igc2ltaWxhcic7XG4gICAgICAgICAgICAgICAgICAgICAgICAoMCwgX2R5bmFtaWNyZW5kZXJpbmcuYW5ub3RhdGVEeW5hbWljQWNjZXNzKShleHByZXNzaW9uLCBwcmVyZW5kZXJTdG9yZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3JlZmxlY3QuUmVmbGVjdEFkYXB0ZXIuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAnc3RhdHVzJzpcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICdgdXNlKHNlYXJjaFBhcmFtcylgLCBgc2VhcmNoUGFyYW1zLnN0YXR1c2AsIG9yIHNpbWlsYXInO1xuICAgICAgICAgICAgICAgICAgICAgICAgKDAsIF9keW5hbWljcmVuZGVyaW5nLmFubm90YXRlRHluYW1pY0FjY2VzcykoZXhwcmVzc2lvbiwgcHJlcmVuZGVyU3RvcmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIENhY2hlZFNlYXJjaFBhcmFtcy5zZXQocHJlcmVuZGVyU3RvcmUsIHByb3hpZWRQcm9taXNlKTtcbiAgICByZXR1cm4gcHJveGllZFByb21pc2U7XG59XG5mdW5jdGlvbiBtYWtlRXJyb3JpbmdTZWFyY2hQYXJhbXMod29ya1N0b3JlLCBwcmVyZW5kZXJTdG9yZSkge1xuICAgIGNvbnN0IGNhY2hlZFNlYXJjaFBhcmFtcyA9IENhY2hlZFNlYXJjaFBhcmFtcy5nZXQod29ya1N0b3JlKTtcbiAgICBpZiAoY2FjaGVkU2VhcmNoUGFyYW1zKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRTZWFyY2hQYXJhbXM7XG4gICAgfVxuICAgIGNvbnN0IHVuZGVybHlpbmdTZWFyY2hQYXJhbXMgPSB7fTtcbiAgICAvLyBGb3Igc2VhcmNoIHBhcmFtcyB3ZSBkb24ndCBjb25zdHJ1Y3QgYSBSZWFjdFByb21pc2UgYmVjYXVzZSB3ZSB3YW50IHRvIGludGVycnVwdFxuICAgIC8vIHJlbmRlcmluZyBvbiBhbnkgcHJvcGVydHkgYWNjZXNzIHRoYXQgd2FzIG5vdCBzZXQgZnJvbSBvdXRzaWRlIGFuZCBzbyB3ZSBvbmx5IHdhbnRcbiAgICAvLyB0byBoYXZlIHByb3BlcnRpZXMgbGlrZSB2YWx1ZSBhbmQgc3RhdHVzIGlmIFJlYWN0IHNldHMgdGhlbS5cbiAgICBjb25zdCBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMpO1xuICAgIGNvbnN0IHByb3hpZWRQcm9taXNlID0gbmV3IFByb3h5KHByb21pc2UsIHtcbiAgICAgICAgZ2V0ICh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0Lmhhc093bihwcm9taXNlLCBwcm9wKSkge1xuICAgICAgICAgICAgICAgIC8vIFRoZSBwcm9taXNlIGhhcyB0aGlzIHByb3BlcnR5IGRpcmVjdGx5LiB3ZSBtdXN0IHJldHVybiBpdC5cbiAgICAgICAgICAgICAgICAvLyBXZSBrbm93IGl0IGlzbid0IGEgZHluYW1pYyBhY2Nlc3MgYmVjYXVzZSBpdCBjYW4gb25seSBiZSBzb21ldGhpbmdcbiAgICAgICAgICAgICAgICAvLyB0aGF0IHdhcyBwcmV2aW91c2x5IHdyaXR0ZW4gdG8gdGhlIHByb21pc2UgYW5kIHRodXMgbm90IGFuIHVuZGVybHlpbmcgc2VhcmNoUGFyYW0gdmFsdWVcbiAgICAgICAgICAgICAgICByZXR1cm4gX3JlZmxlY3QuUmVmbGVjdEFkYXB0ZXIuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJyAmJiBwcm9wID09PSAndGhlbicpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gJ2Bhd2FpdCBzZWFyY2hQYXJhbXNgLCBgc2VhcmNoUGFyYW1zLnRoZW5gLCBvciBzaW1pbGFyJztcbiAgICAgICAgICAgICAgICBpZiAod29ya1N0b3JlLmR5bmFtaWNTaG91bGRFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAoMCwgX3V0aWxzLnRocm93V2l0aFN0YXRpY0dlbmVyYXRpb25CYWlsb3V0RXJyb3JXaXRoRHluYW1pY0Vycm9yKSh3b3JrU3RvcmUucm91dGUsIGV4cHJlc3Npb24pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJlcmVuZGVyU3RvcmUudHlwZSA9PT0gJ3ByZXJlbmRlci1wcHInKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFBQUiBQcmVyZW5kZXIgKG5vIGNhY2hlQ29tcG9uZW50cylcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9keW5hbWljcmVuZGVyaW5nLnBvc3Rwb25lV2l0aFRyYWNraW5nKSh3b3JrU3RvcmUucm91dGUsIGV4cHJlc3Npb24sIHByZXJlbmRlclN0b3JlLmR5bmFtaWNUcmFja2luZyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTGVnYWN5IFByZXJlbmRlclxuICAgICAgICAgICAgICAgICAgICAoMCwgX2R5bmFtaWNyZW5kZXJpbmcudGhyb3dUb0ludGVycnVwdFN0YXRpY0dlbmVyYXRpb24pKGV4cHJlc3Npb24sIHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBDYWNoZWRTZWFyY2hQYXJhbXMuc2V0KHdvcmtTdG9yZSwgcHJveGllZFByb21pc2UpO1xuICAgIHJldHVybiBwcm94aWVkUHJvbWlzZTtcbn1cbmZ1bmN0aW9uIG1ha2VFcnJvcmluZ1NlYXJjaFBhcmFtc0ZvclVzZUNhY2hlKCkge1xuICAgIGNvbnN0IHdvcmtTdG9yZSA9IF93b3JrYXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya0FzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICghd29ya1N0b3JlKSB7XG4gICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdFeHBlY3RlZCB3b3JrU3RvcmUgdG8gYmUgaW5pdGlhbGl6ZWQnKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICB2YWx1ZTogXCJFMTA2OFwiLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGNhY2hlZFNlYXJjaFBhcmFtcyA9IENhY2hlZFNlYXJjaFBhcmFtc0ZvclVzZUNhY2hlLmdldCh3b3JrU3RvcmUpO1xuICAgIGlmIChjYWNoZWRTZWFyY2hQYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNlYXJjaFBhcmFtcztcbiAgICB9XG4gICAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh7fSk7XG4gICAgY29uc3QgcHJveGllZFByb21pc2UgPSBuZXcgUHJveHkocHJvbWlzZSwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0Lmhhc093bihwcm9taXNlLCBwcm9wKSkge1xuICAgICAgICAgICAgICAgIC8vIFRoZSBwcm9taXNlIGhhcyB0aGlzIHByb3BlcnR5IGRpcmVjdGx5LiB3ZSBtdXN0IHJldHVybiBpdC4gV2Uga25vdyBpdFxuICAgICAgICAgICAgICAgIC8vIGlzbid0IGEgZHluYW1pYyBhY2Nlc3MgYmVjYXVzZSBpdCBjYW4gb25seSBiZSBzb21ldGhpbmcgdGhhdCB3YXNcbiAgICAgICAgICAgICAgICAvLyBwcmV2aW91c2x5IHdyaXR0ZW4gdG8gdGhlIHByb21pc2UgYW5kIHRodXMgbm90IGFuIHVuZGVybHlpbmdcbiAgICAgICAgICAgICAgICAvLyBzZWFyY2hQYXJhbSB2YWx1ZVxuICAgICAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnICYmIChwcm9wID09PSAndGhlbicgfHwgIV9yZWZsZWN0dXRpbHMud2VsbEtub3duUHJvcGVydGllcy5oYXMocHJvcCkpKSB7XG4gICAgICAgICAgICAgICAgKDAsIF91dGlscy50aHJvd0ZvclNlYXJjaFBhcmFtc0FjY2Vzc0luVXNlQ2FjaGUpKHdvcmtTdG9yZSwgZ2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBDYWNoZWRTZWFyY2hQYXJhbXNGb3JVc2VDYWNoZS5zZXQod29ya1N0b3JlLCBwcm94aWVkUHJvbWlzZSk7XG4gICAgcmV0dXJuIHByb3hpZWRQcm9taXNlO1xufVxuZnVuY3Rpb24gbWFrZVVudHJhY2tlZFNlYXJjaFBhcmFtcyh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zKSB7XG4gICAgY29uc3QgY2FjaGVkU2VhcmNoUGFyYW1zID0gQ2FjaGVkU2VhcmNoUGFyYW1zLmdldCh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zKTtcbiAgICBpZiAoY2FjaGVkU2VhcmNoUGFyYW1zKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRTZWFyY2hQYXJhbXM7XG4gICAgfVxuICAgIGNvbnN0IHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUodW5kZXJseWluZ1NlYXJjaFBhcmFtcyk7XG4gICAgQ2FjaGVkU2VhcmNoUGFyYW1zLnNldCh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCBwcm9taXNlKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbn1cbmZ1bmN0aW9uIG1ha2VVbnRyYWNrZWRTZWFyY2hQYXJhbXNXaXRoRGV2V2FybmluZ3ModW5kZXJseWluZ1NlYXJjaFBhcmFtcywgd29ya1N0b3JlLCByZXF1ZXN0U3RvcmUsIGlzUnVudGltZVByZWZldGNoYWJsZSkge1xuICAgIGlmIChyZXF1ZXN0U3RvcmUuYXN5bmNBcGlQcm9taXNlcykge1xuICAgICAgICAvLyBEbyBub3QgY2FjaGUgdGhlIHJlc3VsdGluZyBwcm9taXNlLiBJZiB3ZSBkbywgd2UnbGwgb25seSBzaG93IHRoZSBmaXJzdCBcImF3YWl0ZWQgYXRcIlxuICAgICAgICAvLyBhY3Jvc3MgYWxsIHNlZ21lbnRzIHRoYXQgcmVjZWl2ZSBzZWFyY2hQYXJhbXMuXG4gICAgICAgIHJldHVybiBtYWtlVW50cmFja2VkU2VhcmNoUGFyYW1zV2l0aERldldhcm5pbmdzSW1wbCh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCB3b3JrU3RvcmUsIHJlcXVlc3RTdG9yZSwgaXNSdW50aW1lUHJlZmV0Y2hhYmxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBjYWNoZWRTZWFyY2hQYXJhbXMgPSBDYWNoZWRTZWFyY2hQYXJhbXMuZ2V0KHVuZGVybHlpbmdTZWFyY2hQYXJhbXMpO1xuICAgICAgICBpZiAoY2FjaGVkU2VhcmNoUGFyYW1zKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2VhcmNoUGFyYW1zO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSBtYWtlVW50cmFja2VkU2VhcmNoUGFyYW1zV2l0aERldldhcm5pbmdzSW1wbCh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCB3b3JrU3RvcmUsIHJlcXVlc3RTdG9yZSwgaXNSdW50aW1lUHJlZmV0Y2hhYmxlKTtcbiAgICAgICAgQ2FjaGVkU2VhcmNoUGFyYW1zLnNldChyZXF1ZXN0U3RvcmUsIHByb21pc2UpO1xuICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG59XG5mdW5jdGlvbiBtYWtlVW50cmFja2VkU2VhcmNoUGFyYW1zV2l0aERldldhcm5pbmdzSW1wbCh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCB3b3JrU3RvcmUsIHJlcXVlc3RTdG9yZSwgaXNSdW50aW1lUHJlZmV0Y2hhYmxlKSB7XG4gICAgY29uc3QgcHJvbWlzZUluaXRpYWxpemVkID0ge1xuICAgICAgICBjdXJyZW50OiBmYWxzZVxuICAgIH07XG4gICAgY29uc3QgcHJveGllZFVuZGVybHlpbmcgPSBpbnN0cnVtZW50U2VhcmNoUGFyYW1zT2JqZWN0V2l0aERldldhcm5pbmdzKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIHdvcmtTdG9yZSwgcHJvbWlzZUluaXRpYWxpemVkKTtcbiAgICBsZXQgcHJvbWlzZTtcbiAgICBpZiAocmVxdWVzdFN0b3JlLmFzeW5jQXBpUHJvbWlzZXMpIHtcbiAgICAgICAgLy8gV2Ugd3JhcCBlYWNoIGluc3RhbmNlIG9mIHNlYXJjaFBhcmFtcyBpbiBhIGBuZXcgUHJvbWlzZSgpYC5cbiAgICAgICAgLy8gVGhpcyBpcyBpbXBvcnRhbnQgd2hlbiBhbGwgYXdhaXRzIGFyZSBpbiB0aGlyZCBwYXJ0eSB3aGljaCB3b3VsZCBvdGhlcndpc2VcbiAgICAgICAgLy8gdHJhY2sgYWxsIHRoZSB3YXkgdG8gdGhlIGludGVybmFsIHBhcmFtcy5cbiAgICAgICAgY29uc3Qgc2hhcmVkU2VhcmNoUGFyYW1zUGFyZW50ID0gaXNSdW50aW1lUHJlZmV0Y2hhYmxlID8gcmVxdWVzdFN0b3JlLmFzeW5jQXBpUHJvbWlzZXMuZWFybHlTaGFyZWRTZWFyY2hQYXJhbXNQYXJlbnQgOiByZXF1ZXN0U3RvcmUuYXN5bmNBcGlQcm9taXNlcy5zaGFyZWRTZWFyY2hQYXJhbXNQYXJlbnQ7XG4gICAgICAgIHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+e1xuICAgICAgICAgICAgc2hhcmVkU2VhcmNoUGFyYW1zUGFyZW50LnRoZW4oKCk9PnJlc29sdmUocHJveGllZFVuZGVybHlpbmcpLCByZWplY3QpO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICBwcm9taXNlLmRpc3BsYXlOYW1lID0gJ3NlYXJjaFBhcmFtcyc7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcHJvbWlzZSA9ICgwLCBfZHluYW1pY3JlbmRlcmluZ3V0aWxzLm1ha2VEZXZ0b29sc0lPQXdhcmVQcm9taXNlKShwcm94aWVkVW5kZXJseWluZywgcmVxdWVzdFN0b3JlLCBfc3RhZ2VkcmVuZGVyaW5nLlJlbmRlclN0YWdlLlJ1bnRpbWUpO1xuICAgIH1cbiAgICBwcm9taXNlLnRoZW4oKCk9PntcbiAgICAgICAgcHJvbWlzZUluaXRpYWxpemVkLmN1cnJlbnQgPSB0cnVlO1xuICAgIH0sIC8vIElmIHdlJ3JlIGluIHN0YWdlZCByZW5kZXJpbmcsIHRoaXMgcHJvbWlzZSB3aWxsIHJlamVjdCBpZiB0aGUgcmVuZGVyXG4gICAgLy8gaXMgYWJvcnRlZCBiZWZvcmUgaXQgY2FuIHJlYWNoIHRoZSBydW50aW1lIHN0YWdlLlxuICAgIC8vIEluIHRoYXQgY2FzZSwgd2UgaGF2ZSB0byBwcmV2ZW50IGFuIHVuaGFuZGxlZCByZWplY3Rpb24gZnJvbSB0aGUgcHJvbWlzZVxuICAgIC8vIGNyZWF0ZWQgYnkgdGhpcyBgLnRoZW4oKWAgY2FsbC5cbiAgICAvLyBUaGlzIGRvZXMgbm90IGFmZmVjdCB0aGUgYHByb21pc2VJbml0aWFsaXplZGAgbG9naWMgYWJvdmUsXG4gICAgLy8gYmVjYXVzZSBgcHJveGllZFVuZGVybHlpbmdgIHdpbGwgbm90IGJlIHVzZWQgdG8gcmVzb2x2ZSB0aGUgcHJvbWlzZSxcbiAgICAvLyBzbyB0aGVyZSdzIG5vIHJpc2sgb2YgYW55IG9mIGl0cyBwcm9wZXJ0aWVzIGJlaW5nIGFjY2Vzc2VkIGFuZCB0cmlnZ2VyaW5nXG4gICAgLy8gYW4gdW5kZXNpcmVhYmxlIHdhcm5pbmcuXG4gICAgaWdub3JlUmVqZWN0KTtcbiAgICByZXR1cm4gaW5zdHJ1bWVudFNlYXJjaFBhcmFtc1Byb21pc2VXaXRoRGV2V2FybmluZ3ModW5kZXJseWluZ1NlYXJjaFBhcmFtcywgcHJvbWlzZSwgd29ya1N0b3JlKTtcbn1cbmZ1bmN0aW9uIGlnbm9yZVJlamVjdCgpIHt9XG5mdW5jdGlvbiBpbnN0cnVtZW50U2VhcmNoUGFyYW1zT2JqZWN0V2l0aERldldhcm5pbmdzKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIHdvcmtTdG9yZSwgcHJvbWlzZUluaXRpYWxpemVkKSB7XG4gICAgLy8gV2UgaGF2ZSBhbiB1bmZvcnR1bmF0ZSBzZXF1ZW5jZSBvZiBldmVudHMgdGhhdCByZXF1aXJlcyB0aGlzIGluaXRpYWxpemF0aW9uIGxvZ2ljLiBXZSB3YW50IHRvIGluc3RydW1lbnQgdGhlIHVuZGVybHlpbmdcbiAgICAvLyBzZWFyY2hQYXJhbXMgb2JqZWN0IHRvIGRldGVjdCBpZiB5b3UgYXJlIGFjY2Vzc2luZyB2YWx1ZXMgaW4gZGV2LiBUaGlzIGlzIHVzZWQgZm9yIHdhcm5pbmdzIGFuZCBmb3IgdGhpbmdzIGxpa2UgdGhlIHN0YXRpYyBwcmVyZW5kZXJcbiAgICAvLyBpbmRpY2F0b3IuIEhvd2V2ZXIgd2hlbiB3ZSBwYXNzIHRoaXMgcHJveHkgdG8gb3VyIFByb21pc2UucmVzb2x2ZSgpIGJlbG93IHRoZSBWTSBjaGVja3MgaWYgdGhlIHJlc29sdmVkIHZhbHVlIGlzIGEgcHJvbWlzZSBieSBsb29raW5nXG4gICAgLy8gYXQgdGhlIGAudGhlbmAgcHJvcGVydHkuIFRvIG91ciBkeW5hbWljIHRyYWNraW5nIGxvZ2ljIHRoaXMgaXMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBhIGB0aGVuYCBzZWFyY2hQYXJhbSBhbmQgc28gd2Ugd291bGQgbm9ybWFsbHkgdHJpZ2dlclxuICAgIC8vIGR5bmFtaWMgdHJhY2tpbmcuIEhvd2V2ZXIgd2Uga25vdyB0aGF0IHRoaXMgLnRoZW4gaXMgbm90IHJlYWwgZHluYW1pYyBhY2Nlc3MsIGl0J3MganVzdCBob3cgdGhlbmFibGVzIHJlc29sdmUgaW4gc2VxdWVuY2UuIFNvIHdlIGludHJvZHVjZVxuICAgIC8vIHRoaXMgaW5pdGlhbGl6YXRpb24gY29uY2VwdCBzbyB3ZSBvbWl0IHRoZSBkeW5hbWljIGNoZWNrIHVudGlsIGFmdGVyIHdlJ3ZlIGNvbnN0cnVjdGVkIG91ciByZXNvbHZlZCBwcm9taXNlLlxuICAgIHJldHVybiBuZXcgUHJveHkodW5kZXJseWluZ1NlYXJjaFBhcmFtcywge1xuICAgICAgICBnZXQgKHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N0cmluZycgJiYgcHJvbWlzZUluaXRpYWxpemVkLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAod29ya1N0b3JlLmR5bmFtaWNTaG91bGRFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gKDAsIF9yZWZsZWN0dXRpbHMuZGVzY3JpYmVTdHJpbmdQcm9wZXJ0eUFjY2VzcykoJ3NlYXJjaFBhcmFtcycsIHByb3ApO1xuICAgICAgICAgICAgICAgICAgICAoMCwgX3V0aWxzLnRocm93V2l0aFN0YXRpY0dlbmVyYXRpb25CYWlsb3V0RXJyb3JXaXRoRHluYW1pY0Vycm9yKSh3b3JrU3RvcmUucm91dGUsIGV4cHJlc3Npb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgIH0sXG4gICAgICAgIGhhcyAodGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHdvcmtTdG9yZS5keW5hbWljU2hvdWxkRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICgwLCBfcmVmbGVjdHV0aWxzLmRlc2NyaWJlSGFzQ2hlY2tpbmdTdHJpbmdQcm9wZXJ0eSkoJ3NlYXJjaFBhcmFtcycsIHByb3ApO1xuICAgICAgICAgICAgICAgICAgICAoMCwgX3V0aWxzLnRocm93V2l0aFN0YXRpY0dlbmVyYXRpb25CYWlsb3V0RXJyb3JXaXRoRHluYW1pY0Vycm9yKSh3b3JrU3RvcmUucm91dGUsIGV4cHJlc3Npb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0Lmhhcyh0YXJnZXQsIHByb3ApO1xuICAgICAgICB9LFxuICAgICAgICBvd25LZXlzICh0YXJnZXQpIHtcbiAgICAgICAgICAgIGlmICh3b3JrU3RvcmUuZHluYW1pY1Nob3VsZEVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICdgey4uLnNlYXJjaFBhcmFtc31gLCBgT2JqZWN0LmtleXMoc2VhcmNoUGFyYW1zKWAsIG9yIHNpbWlsYXInO1xuICAgICAgICAgICAgICAgICgwLCBfdXRpbHMudGhyb3dXaXRoU3RhdGljR2VuZXJhdGlvbkJhaWxvdXRFcnJvcldpdGhEeW5hbWljRXJyb3IpKHdvcmtTdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5vd25LZXlzKHRhcmdldCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGluc3RydW1lbnRTZWFyY2hQYXJhbXNQcm9taXNlV2l0aERldldhcm5pbmdzKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIHByb21pc2UsIHdvcmtTdG9yZSkge1xuICAgIC8vIFRyYWNrIHdoaWNoIHByb3BlcnRpZXMgd2Ugc2hvdWxkIHdhcm4gZm9yLlxuICAgIGNvbnN0IHByb3hpZWRQcm9wZXJ0aWVzID0gbmV3IFNldCgpO1xuICAgIE9iamVjdC5rZXlzKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMpLmZvckVhY2goKHByb3ApPT57XG4gICAgICAgIGlmIChfcmVmbGVjdHV0aWxzLndlbGxLbm93blByb3BlcnRpZXMuaGFzKHByb3ApKSB7XG4gICAgICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgY2Fubm90IGJlIHNoYWRvd2VkIGJlY2F1c2UgdGhleSBuZWVkIHRvIGJlIHRoZVxuICAgICAgICAvLyB0cnVlIHVuZGVybHlpbmcgdmFsdWUgZm9yIFByb21pc2VzIHRvIHdvcmsgY29ycmVjdGx5IGF0IHJ1bnRpbWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb3hpZWRQcm9wZXJ0aWVzLmFkZChwcm9wKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBuZXcgUHJveHkocHJvbWlzZSwge1xuICAgICAgICBnZXQgKHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIGlmIChwcm9wID09PSAndGhlbicgJiYgd29ya1N0b3JlLmR5bmFtaWNTaG91bGRFcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAnYHNlYXJjaFBhcmFtcy50aGVuYCc7XG4gICAgICAgICAgICAgICAgKDAsIF91dGlscy50aHJvd1dpdGhTdGF0aWNHZW5lcmF0aW9uQmFpbG91dEVycm9yV2l0aER5bmFtaWNFcnJvcikod29ya1N0b3JlLnJvdXRlLCBleHByZXNzaW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpZiAoIV9yZWZsZWN0dXRpbHMud2VsbEtub3duUHJvcGVydGllcy5oYXMocHJvcCkgJiYgKHByb3hpZWRQcm9wZXJ0aWVzLmhhcyhwcm9wKSB8fCAvLyBXZSBhcmUgYWNjZXNzaW5nIGEgcHJvcGVydHkgdGhhdCBkb2Vzbid0IGV4aXN0IG9uIHRoZSBwcm9taXNlIG5vclxuICAgICAgICAgICAgICAgIC8vIHRoZSB1bmRlcmx5aW5nIHNlYXJjaFBhcmFtcy5cbiAgICAgICAgICAgICAgICBSZWZsZWN0Lmhhcyh0YXJnZXQsIHByb3ApID09PSBmYWxzZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICgwLCBfcmVmbGVjdHV0aWxzLmRlc2NyaWJlU3RyaW5nUHJvcGVydHlBY2Nlc3MpKCdzZWFyY2hQYXJhbXMnLCBwcm9wKTtcbiAgICAgICAgICAgICAgICAgICAgd2FybkZvclN5bmNBY2Nlc3Mod29ya1N0b3JlLnJvdXRlLCBleHByZXNzaW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gX3JlZmxlY3QuUmVmbGVjdEFkYXB0ZXIuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpO1xuICAgICAgICB9LFxuICAgICAgICBzZXQgKHRhcmdldCwgcHJvcCwgdmFsdWUsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcHJveGllZFByb3BlcnRpZXMuZGVsZXRlKHByb3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3Quc2V0KHRhcmdldCwgcHJvcCwgdmFsdWUsIHJlY2VpdmVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgaGFzICh0YXJnZXQsIHByb3ApIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpZiAoIV9yZWZsZWN0dXRpbHMud2VsbEtub3duUHJvcGVydGllcy5oYXMocHJvcCkgJiYgKHByb3hpZWRQcm9wZXJ0aWVzLmhhcyhwcm9wKSB8fCAvLyBXZSBhcmUgYWNjZXNzaW5nIGEgcHJvcGVydHkgdGhhdCBkb2Vzbid0IGV4aXN0IG9uIHRoZSBwcm9taXNlIG5vclxuICAgICAgICAgICAgICAgIC8vIHRoZSB1bmRlcmx5aW5nIHNlYXJjaFBhcmFtcy5cbiAgICAgICAgICAgICAgICBSZWZsZWN0Lmhhcyh0YXJnZXQsIHByb3ApID09PSBmYWxzZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICgwLCBfcmVmbGVjdHV0aWxzLmRlc2NyaWJlSGFzQ2hlY2tpbmdTdHJpbmdQcm9wZXJ0eSkoJ3NlYXJjaFBhcmFtcycsIHByb3ApO1xuICAgICAgICAgICAgICAgICAgICB3YXJuRm9yU3luY0FjY2Vzcyh3b3JrU3RvcmUucm91dGUsIGV4cHJlc3Npb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0Lmhhcyh0YXJnZXQsIHByb3ApO1xuICAgICAgICB9LFxuICAgICAgICBvd25LZXlzICh0YXJnZXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAnYE9iamVjdC5rZXlzKHNlYXJjaFBhcmFtcylgIG9yIHNpbWlsYXInO1xuICAgICAgICAgICAgd2FybkZvclN5bmNBY2Nlc3Mod29ya1N0b3JlLnJvdXRlLCBleHByZXNzaW9uKTtcbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0Lm93bktleXModGFyZ2V0KTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuY29uc3Qgd2FybkZvclN5bmNBY2Nlc3MgPSAoMCwgX2NyZWF0ZWRlZHVwZWRieWNhbGxzaXRlc2VydmVyZXJyb3Jsb2dnZXIuY3JlYXRlRGVkdXBlZEJ5Q2FsbHNpdGVTZXJ2ZXJFcnJvckxvZ2dlckRldikoY3JlYXRlU2VhcmNoQWNjZXNzRXJyb3IpO1xuZnVuY3Rpb24gY3JlYXRlU2VhcmNoQWNjZXNzRXJyb3Iocm91dGUsIGV4cHJlc3Npb24pIHtcbiAgICBjb25zdCBwcmVmaXggPSByb3V0ZSA/IGBSb3V0ZSBcIiR7cm91dGV9XCIgYCA6ICdUaGlzIHJvdXRlICc7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoYCR7cHJlZml4fXVzZWQgJHtleHByZXNzaW9ufS4gYCArIGBcXGBzZWFyY2hQYXJhbXNcXGAgaXMgYSBQcm9taXNlIGFuZCBtdXN0IGJlIHVud3JhcHBlZCB3aXRoIFxcYGF3YWl0XFxgIG9yIFxcYFJlYWN0LnVzZSgpXFxgIGJlZm9yZSBhY2Nlc3NpbmcgaXRzIHByb3BlcnRpZXMuIGAgKyBgTGVhcm4gbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvc3luYy1keW5hbWljLWFwaXNgKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgIHZhbHVlOiBcIkU4NDhcIixcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlQ2xpZW50U2VhcmNoUGFyYW1zSW5WYWxpZGF0aW9uKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIHdvcmtTdG9yZSwgd29ya1VuaXRTdG9yZSkge1xuICAgIHZhciBfd29ya1VuaXRTdG9yZV92YWxpZGF0aW9uU2FtcGxlcztcbiAgICBjb25zdCB7IGNyZWF0ZUV4aGF1c3RpdmVTZWFyY2hQYXJhbXNQcm94eSB9ID0gcmVxdWlyZSgnLi4vYXBwLXJlbmRlci9pbnN0YW50LXZhbGlkYXRpb24vaW5zdGFudC1zYW1wbGVzJyk7XG4gICAgY29uc3QgZGVjbGFyZWRLZXlzID0gbmV3IFNldChPYmplY3Qua2V5cygoKF93b3JrVW5pdFN0b3JlX3ZhbGlkYXRpb25TYW1wbGVzID0gd29ya1VuaXRTdG9yZS52YWxpZGF0aW9uU2FtcGxlcykgPT0gbnVsbCA/IHZvaWQgMCA6IF93b3JrVW5pdFN0b3JlX3ZhbGlkYXRpb25TYW1wbGVzLnNlYXJjaFBhcmFtcykgPz8ge30pKTtcbiAgICB1bmRlcmx5aW5nU2VhcmNoUGFyYW1zID0gY3JlYXRlRXhoYXVzdGl2ZVNlYXJjaFBhcmFtc1Byb3h5KHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIGRlY2xhcmVkS2V5cywgd29ya1N0b3JlLnJvdXRlKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMpO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1zZWFyY2gtcGFyYW1zLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/request/search-params.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/request/utils.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/next/dist/server/request/utils.js ***!
|
||
\********************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n isRequestAPICallableInsideAfter: function() {\n return isRequestAPICallableInsideAfter;\n },\n throwForSearchParamsAccessInUseCache: function() {\n return throwForSearchParamsAccessInUseCache;\n },\n throwWithStaticGenerationBailoutErrorWithDynamicError: function() {\n return throwWithStaticGenerationBailoutErrorWithDynamicError;\n }\n});\nconst _staticgenerationbailout = __webpack_require__(/*! ../../client/components/static-generation-bailout */ \"(rsc)/./node_modules/next/dist/client/components/static-generation-bailout.js\");\nconst _aftertaskasyncstorageexternal = __webpack_require__(/*! ../app-render/after-task-async-storage.external */ \"../app-render/after-task-async-storage.external\");\nfunction throwWithStaticGenerationBailoutErrorWithDynamicError(route, expression) {\n throw Object.defineProperty(new _staticgenerationbailout.StaticGenBailoutError(`Route ${route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`), \"__NEXT_ERROR_CODE\", {\n value: \"E543\",\n enumerable: false,\n configurable: true\n });\n}\nfunction throwForSearchParamsAccessInUseCache(workStore, constructorOpt) {\n const error = Object.defineProperty(new Error(`Route ${workStore.route} used \\`searchParams\\` inside \"use cache\". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \\`searchParams\\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`), \"__NEXT_ERROR_CODE\", {\n value: \"E842\",\n enumerable: false,\n configurable: true\n });\n Error.captureStackTrace(error, constructorOpt);\n workStore.invalidDynamicUsageError ??= error;\n throw error;\n}\nfunction isRequestAPICallableInsideAfter() {\n const afterTaskStore = _aftertaskasyncstorageexternal.afterTaskAsyncStorage.getStore();\n return (afterTaskStore == null ? void 0 : afterTaskStore.rootTaskSpawnPhase) === 'action';\n} //# sourceMappingURL=utils.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXF1ZXN0L3V0aWxzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQTJCZ0JBLCtCQUErQjtlQUEvQkE7O0lBZEFDLG9DQUFvQztlQUFwQ0E7O0lBVEFDLHFEQUFxRDtlQUFyREE7OztxREFKc0I7MkRBQ0E7QUFHL0IsU0FBU0Esc0RBQ2RDLEtBQWEsRUFDYkMsVUFBa0I7SUFFbEIsTUFBTSxxQkFFTCxDQUZLLElBQUlDLHlCQUFBQSxxQkFBcUIsQ0FDN0IsQ0FBQyxNQUFNLEVBQUVGLE1BQU0sNEVBQTRFLEVBQUVDLFdBQVcsMEhBQTBILENBQUMsR0FEL047ZUFBQTtvQkFBQTtzQkFBQTtJQUVOO0FBQ0Y7QUFFTyxTQUFTSCxxQ0FDZEssU0FBb0IsRUFDcEJDLGNBQXdCO0lBRXhCLE1BQU1DLFFBQVEscUJBRWIsQ0FGYSxJQUFJQyxNQUNoQixDQUFDLE1BQU0sRUFBRUgsVUFBVUgsS0FBSyxDQUFDLDJYQUEyWCxDQUFDLEdBRHpZO2VBQUE7b0JBQUE7c0JBQUE7SUFFZDtJQUVBTSxNQUFNQyxpQkFBaUIsQ0FBQ0YsT0FBT0Q7SUFDL0JELFVBQVVLLHdCQUF3QixLQUFLSDtJQUV2QyxNQUFNQTtBQUNSO0FBRU8sU0FBU1I7SUFDZCxNQUFNWSxpQkFBaUJDLCtCQUFBQSxxQkFBcUIsQ0FBQ0MsUUFBUTtJQUNyRCxPQUFPRixDQUFBQSxrQkFBQUEsT0FBQUEsS0FBQUEsSUFBQUEsZUFBZ0JHLGtCQUFBQSxNQUF1QjtBQUNoRCIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9zZXJ2ZXIvcmVxdWVzdC91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGF0aWNHZW5CYWlsb3V0RXJyb3IgfSBmcm9tICcuLi8uLi9jbGllbnQvY29tcG9uZW50cy9zdGF0aWMtZ2VuZXJhdGlvbi1iYWlsb3V0J1xuaW1wb3J0IHsgYWZ0ZXJUYXNrQXN5bmNTdG9yYWdlIH0gZnJvbSAnLi4vYXBwLXJlbmRlci9hZnRlci10YXNrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnXG5pbXBvcnQgdHlwZSB7IFdvcmtTdG9yZSB9IGZyb20gJy4uL2FwcC1yZW5kZXIvd29yay1hc3luYy1zdG9yYWdlLmV4dGVybmFsJ1xuXG5leHBvcnQgZnVuY3Rpb24gdGhyb3dXaXRoU3RhdGljR2VuZXJhdGlvbkJhaWxvdXRFcnJvcldpdGhEeW5hbWljRXJyb3IoXG4gIHJvdXRlOiBzdHJpbmcsXG4gIGV4cHJlc3Npb246IHN0cmluZ1xuKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgU3RhdGljR2VuQmFpbG91dEVycm9yKFxuICAgIGBSb3V0ZSAke3JvdXRlfSB3aXRoIFxcYGR5bmFtaWMgPSBcImVycm9yXCJcXGAgY291bGRuJ3QgYmUgcmVuZGVyZWQgc3RhdGljYWxseSBiZWNhdXNlIGl0IHVzZWQgJHtleHByZXNzaW9ufS4gU2VlIG1vcmUgaW5mbyBoZXJlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvc3RhdGljLWFuZC1keW5hbWljI2R5bmFtaWMtcmVuZGVyaW5nYFxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd0ZvclNlYXJjaFBhcmFtc0FjY2Vzc0luVXNlQ2FjaGUoXG4gIHdvcmtTdG9yZTogV29ya1N0b3JlLFxuICBjb25zdHJ1Y3Rvck9wdDogRnVuY3Rpb25cbik6IG5ldmVyIHtcbiAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgYFJvdXRlICR7d29ya1N0b3JlLnJvdXRlfSB1c2VkIFxcYHNlYXJjaFBhcmFtc1xcYCBpbnNpZGUgXCJ1c2UgY2FjaGVcIi4gQWNjZXNzaW5nIGR5bmFtaWMgcmVxdWVzdCBkYXRhIGluc2lkZSBhIGNhY2hlIHNjb3BlIGlzIG5vdCBzdXBwb3J0ZWQuIElmIHlvdSBuZWVkIHNvbWUgc2VhcmNoIHBhcmFtcyBpbnNpZGUgYSBjYWNoZWQgZnVuY3Rpb24gYXdhaXQgXFxgc2VhcmNoUGFyYW1zXFxgIG91dHNpZGUgb2YgdGhlIGNhY2hlZCBmdW5jdGlvbiBhbmQgcGFzcyBvbmx5IHRoZSByZXF1aXJlZCBzZWFyY2ggcGFyYW1zIGFzIGFyZ3VtZW50cyB0byB0aGUgY2FjaGVkIGZ1bmN0aW9uLiBTZWUgbW9yZSBpbmZvIGhlcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL25leHQtcmVxdWVzdC1pbi11c2UtY2FjaGVgXG4gIClcblxuICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnJvciwgY29uc3RydWN0b3JPcHQpXG4gIHdvcmtTdG9yZS5pbnZhbGlkRHluYW1pY1VzYWdlRXJyb3IgPz89IGVycm9yXG5cbiAgdGhyb3cgZXJyb3Jcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVxdWVzdEFQSUNhbGxhYmxlSW5zaWRlQWZ0ZXIoKSB7XG4gIGNvbnN0IGFmdGVyVGFza1N0b3JlID0gYWZ0ZXJUYXNrQXN5bmNTdG9yYWdlLmdldFN0b3JlKClcbiAgcmV0dXJuIGFmdGVyVGFza1N0b3JlPy5yb290VGFza1NwYXduUGhhc2UgPT09ICdhY3Rpb24nXG59XG4iXSwibmFtZXMiOlsiaXNSZXF1ZXN0QVBJQ2FsbGFibGVJbnNpZGVBZnRlciIsInRocm93Rm9yU2VhcmNoUGFyYW1zQWNjZXNzSW5Vc2VDYWNoZSIsInRocm93V2l0aFN0YXRpY0dlbmVyYXRpb25CYWlsb3V0RXJyb3JXaXRoRHluYW1pY0Vycm9yIiwicm91dGUiLCJleHByZXNzaW9uIiwiU3RhdGljR2VuQmFpbG91dEVycm9yIiwid29ya1N0b3JlIiwiY29uc3RydWN0b3JPcHQiLCJlcnJvciIsIkVycm9yIiwiY2FwdHVyZVN0YWNrVHJhY2UiLCJpbnZhbGlkRHluYW1pY1VzYWdlRXJyb3IiLCJhZnRlclRhc2tTdG9yZSIsImFmdGVyVGFza0FzeW5jU3RvcmFnZSIsImdldFN0b3JlIiwicm9vdFRhc2tTcGF3blBoYXNlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/request/utils.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/response-cache/index.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/response-cache/index.js ***!
|
||
\***************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return ResponseCache;\n }\n}));\n0 && 0;\nconst _batcher = __webpack_require__(/*! ../../lib/batcher */ \"(rsc)/./node_modules/next/dist/lib/batcher.js\");\nconst _lrucache = __webpack_require__(/*! ../lib/lru-cache */ \"(rsc)/./node_modules/next/dist/server/lib/lru-cache.js\");\nconst _log = __webpack_require__(/*! ../../build/output/log */ \"(rsc)/./node_modules/next/dist/build/output/log.js\");\nconst _scheduler = __webpack_require__(/*! ../../lib/scheduler */ \"(rsc)/./node_modules/next/dist/lib/scheduler.js\");\nconst _utils = __webpack_require__(/*! ./utils */ \"(rsc)/./node_modules/next/dist/server/response-cache/utils.js\");\n_export_star(__webpack_require__(/*! ./types */ \"(rsc)/./node_modules/next/dist/server/response-cache/types.js\"), exports);\nfunction _export_star(from, to) {\n Object.keys(from).forEach(function(k) {\n if (k !== \"default\" && !Object.prototype.hasOwnProperty.call(to, k)) {\n Object.defineProperty(to, k, {\n enumerable: true,\n get: function() {\n return from[k];\n }\n });\n }\n });\n return from;\n}\n/**\n * Parses an environment variable as a positive integer, returning the fallback\n * if the value is missing, not a number, or not positive.\n */ function parsePositiveInt(envValue, fallback) {\n if (!envValue) return fallback;\n const parsed = parseInt(envValue, 10);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;\n}\n/**\n * Default TTL (in milliseconds) for minimal mode response cache entries.\n * Used for cache hit validation as a fallback for providers that don't\n * send the x-invocation-id header yet.\n *\n * 10 seconds chosen because:\n * - Long enough to dedupe rapid successive requests (e.g., page + data)\n * - Short enough to not serve stale data across unrelated requests\n *\n * Can be configured via `NEXT_PRIVATE_RESPONSE_CACHE_TTL` environment variable.\n */ const DEFAULT_TTL_MS = parsePositiveInt(process.env.NEXT_PRIVATE_RESPONSE_CACHE_TTL, 10000);\n/**\n * Default maximum number of entries in the response cache.\n * Can be configured via `NEXT_PRIVATE_RESPONSE_CACHE_MAX_SIZE` environment variable.\n */ const DEFAULT_MAX_SIZE = parsePositiveInt(process.env.NEXT_PRIVATE_RESPONSE_CACHE_MAX_SIZE, 150);\n/**\n * Separator used in compound cache keys to join pathname and invocationID.\n * Using null byte (\\0) since it cannot appear in valid URL paths or UUIDs.\n */ const KEY_SEPARATOR = '\\0';\n/**\n * Sentinel value used for TTL-based cache entries (when invocationID is undefined).\n * Chosen to be a clearly reserved marker for internal cache keys.\n */ const TTL_SENTINEL = '__ttl_sentinel__';\n/**\n * Creates a compound cache key from pathname and invocationID.\n */ function createCacheKey(pathname, invocationID) {\n return `${pathname}${KEY_SEPARATOR}${invocationID ?? TTL_SENTINEL}`;\n}\n/**\n * Extracts the invocationID from a compound cache key.\n * Returns undefined if the key used TTL_SENTINEL.\n */ function extractInvocationID(compoundKey) {\n const separatorIndex = compoundKey.lastIndexOf(KEY_SEPARATOR);\n if (separatorIndex === -1) return undefined;\n const invocationID = compoundKey.slice(separatorIndex + 1);\n return invocationID === TTL_SENTINEL ? undefined : invocationID;\n}\nclass ResponseCache {\n constructor(minimal_mode, maxSize = DEFAULT_MAX_SIZE, ttl = DEFAULT_TTL_MS){\n this.getBatcher = _batcher.Batcher.create({\n // Ensure on-demand revalidate doesn't block normal requests, it should be\n // safe to run an on-demand revalidate for the same key as a normal request.\n cacheKeyFn: ({ key, isOnDemandRevalidate })=>`${key}-${isOnDemandRevalidate ? '1' : '0'}`,\n // We wait to do any async work until after we've added our promise to\n // `pendingResponses` to ensure that any any other calls will reuse the\n // same promise until we've fully finished our work.\n schedulerFn: _scheduler.scheduleOnNextTick\n });\n this.revalidateBatcher = _batcher.Batcher.create({\n // We wait to do any async work until after we've added our promise to\n // `pendingResponses` to ensure that any any other calls will reuse the\n // same promise until we've fully finished our work.\n schedulerFn: _scheduler.scheduleOnNextTick\n });\n /**\n * Set of invocation IDs that have had cache entries evicted.\n * Used to detect when the cache size may be too small.\n * Bounded to prevent memory growth.\n */ this.evictedInvocationIDs = new Set();\n this.minimal_mode = minimal_mode;\n this.maxSize = maxSize;\n this.ttl = ttl;\n // Create the LRU cache with eviction tracking\n this.cache = new _lrucache.LRUCache(maxSize, undefined, (compoundKey)=>{\n const invocationID = extractInvocationID(compoundKey);\n if (invocationID) {\n // Bound to 100 entries to prevent unbounded memory growth.\n // FIFO eviction is acceptable here because:\n // 1. Invocations are short-lived (single request lifecycle), so older\n // invocations are unlikely to still be active after 100 newer ones\n // 2. This warning mechanism is best-effort for developer guidance—\n // missing occasional eviction warnings doesn't affect correctness\n // 3. If a long-running invocation is somehow evicted and then has\n // another cache entry evicted, it will simply be re-added\n if (this.evictedInvocationIDs.size >= 100) {\n const first = this.evictedInvocationIDs.values().next().value;\n if (first) this.evictedInvocationIDs.delete(first);\n }\n this.evictedInvocationIDs.add(invocationID);\n }\n });\n }\n /**\n * Gets the response cache entry for the given key.\n *\n * @param key - The key to get the response cache entry for.\n * @param responseGenerator - The response generator to use to generate the response cache entry.\n * @param context - The context for the get request.\n * @returns The response cache entry.\n */ async get(key, responseGenerator, context) {\n // If there is no key for the cache, we can't possibly look this up in the\n // cache so just return the result of the response generator.\n if (!key) {\n return responseGenerator({\n hasResolved: false,\n previousCacheEntry: null\n });\n }\n // Check minimal mode cache before doing any other work.\n if (this.minimal_mode) {\n const cacheKey = createCacheKey(key, context.invocationID);\n const cachedItem = this.cache.get(cacheKey);\n if (cachedItem) {\n // With invocationID: exact match found - always a hit\n // With TTL mode: must check expiration\n if (context.invocationID !== undefined) {\n return (0, _utils.toResponseCacheEntry)(cachedItem.entry);\n }\n // TTL mode: check expiration\n const now = Date.now();\n if (cachedItem.expiresAt > now) {\n return (0, _utils.toResponseCacheEntry)(cachedItem.entry);\n }\n // TTL expired - clean up\n this.cache.remove(cacheKey);\n }\n // Warn if this invocation had entries evicted - indicates cache may be too small.\n if (context.invocationID && this.evictedInvocationIDs.has(context.invocationID)) {\n (0, _log.warnOnce)(`Response cache entry was evicted for invocation ${context.invocationID}. ` + `Consider increasing NEXT_PRIVATE_RESPONSE_CACHE_MAX_SIZE (current: ${this.maxSize}).`);\n }\n }\n const { incrementalCache, isOnDemandRevalidate = false, isFallback = false, isRoutePPREnabled = false, isPrefetch = false, waitUntil, routeKind, invocationID } = context;\n const response = await this.getBatcher.batch({\n key,\n isOnDemandRevalidate\n }, ({ resolve })=>{\n const promise = this.handleGet(key, responseGenerator, {\n incrementalCache,\n isOnDemandRevalidate,\n isFallback,\n isRoutePPREnabled,\n isPrefetch,\n routeKind,\n invocationID\n }, resolve);\n // We need to ensure background revalidates are passed to waitUntil.\n if (waitUntil) waitUntil(promise);\n return promise;\n });\n return (0, _utils.toResponseCacheEntry)(response);\n }\n /**\n * Handles the get request for the response cache.\n *\n * @param key - The key to get the response cache entry for.\n * @param responseGenerator - The response generator to use to generate the response cache entry.\n * @param context - The context for the get request.\n * @param resolve - The resolve function to use to resolve the response cache entry.\n * @returns The response cache entry.\n */ async handleGet(key, responseGenerator, context, resolve) {\n let previousIncrementalCacheEntry = null;\n let resolved = false;\n try {\n // Get the previous cache entry if not in minimal mode\n previousIncrementalCacheEntry = !this.minimal_mode ? await context.incrementalCache.get(key, {\n kind: (0, _utils.routeKindToIncrementalCacheKind)(context.routeKind),\n isRoutePPREnabled: context.isRoutePPREnabled,\n isFallback: context.isFallback\n }) : null;\n if (previousIncrementalCacheEntry && !context.isOnDemandRevalidate) {\n resolve(previousIncrementalCacheEntry);\n resolved = true;\n if (!previousIncrementalCacheEntry.isStale || context.isPrefetch) {\n // The cached value is still valid, so we don't need to update it yet.\n return previousIncrementalCacheEntry;\n }\n }\n // Revalidate the cache entry\n const incrementalResponseCacheEntry = await this.revalidate(key, context.incrementalCache, context.isRoutePPREnabled, context.isFallback, responseGenerator, previousIncrementalCacheEntry, previousIncrementalCacheEntry !== null && !context.isOnDemandRevalidate, undefined, context.invocationID);\n // Handle null response\n if (!incrementalResponseCacheEntry) {\n // Remove the cache item if it was set so we don't use it again.\n if (this.minimal_mode) {\n const cacheKey = createCacheKey(key, context.invocationID);\n this.cache.remove(cacheKey);\n }\n return null;\n }\n // Resolve for on-demand revalidation or if not already resolved\n if (context.isOnDemandRevalidate && !resolved) {\n return incrementalResponseCacheEntry;\n }\n return incrementalResponseCacheEntry;\n } catch (err) {\n // If we've already resolved the cache entry, we can't reject as we\n // already resolved the cache entry so log the error here.\n if (resolved) {\n console.error(err);\n return null;\n }\n throw err;\n }\n }\n /**\n * Revalidates the cache entry for the given key.\n *\n * @param key - The key to revalidate the cache entry for.\n * @param incrementalCache - The incremental cache to use to revalidate the cache entry.\n * @param isRoutePPREnabled - Whether the route is PPR enabled.\n * @param isFallback - Whether the route is a fallback.\n * @param responseGenerator - The response generator to use to generate the response cache entry.\n * @param previousIncrementalCacheEntry - The previous cache entry to use to revalidate the cache entry.\n * @param hasResolved - Whether the response has been resolved.\n * @param waitUntil - Optional function to register background work.\n * @param invocationID - The invocation ID for cache key scoping.\n * @returns The revalidated cache entry.\n */ async revalidate(key, incrementalCache, isRoutePPREnabled, isFallback, responseGenerator, previousIncrementalCacheEntry, hasResolved, waitUntil, invocationID) {\n return this.revalidateBatcher.batch(key, ()=>{\n const promise = this.handleRevalidate(key, incrementalCache, isRoutePPREnabled, isFallback, responseGenerator, previousIncrementalCacheEntry, hasResolved, invocationID);\n // We need to ensure background revalidates are passed to waitUntil.\n if (waitUntil) waitUntil(promise);\n return promise;\n });\n }\n async handleRevalidate(key, incrementalCache, isRoutePPREnabled, isFallback, responseGenerator, previousIncrementalCacheEntry, hasResolved, invocationID) {\n try {\n // Generate the response cache entry using the response generator.\n const responseCacheEntry = await responseGenerator({\n hasResolved,\n previousCacheEntry: previousIncrementalCacheEntry,\n isRevalidating: true\n });\n if (!responseCacheEntry) {\n return null;\n }\n // Convert the response cache entry to an incremental response cache entry.\n const incrementalResponseCacheEntry = await (0, _utils.fromResponseCacheEntry)({\n ...responseCacheEntry,\n isMiss: !previousIncrementalCacheEntry\n });\n // We want to persist the result only if it has a cache control value\n // defined.\n if (incrementalResponseCacheEntry.cacheControl) {\n if (this.minimal_mode) {\n // Set TTL expiration for cache hit validation. Entries are validated\n // by invocationID when available, with TTL as a fallback for providers\n // that don't send x-invocation-id. Memory is managed by LRU eviction.\n const cacheKey = createCacheKey(key, invocationID);\n this.cache.set(cacheKey, {\n entry: incrementalResponseCacheEntry,\n expiresAt: Date.now() + this.ttl\n });\n } else {\n await incrementalCache.set(key, incrementalResponseCacheEntry.value, {\n cacheControl: incrementalResponseCacheEntry.cacheControl,\n isRoutePPREnabled,\n isFallback\n });\n }\n }\n return incrementalResponseCacheEntry;\n } catch (err) {\n // When a path is erroring we automatically re-set the existing cache\n // with new revalidate and expire times to prevent non-stop retrying.\n if (previousIncrementalCacheEntry == null ? void 0 : previousIncrementalCacheEntry.cacheControl) {\n const revalidate = Math.min(Math.max(previousIncrementalCacheEntry.cacheControl.revalidate || 3, 3), 30);\n const expire = previousIncrementalCacheEntry.cacheControl.expire === undefined ? undefined : Math.max(revalidate + 3, previousIncrementalCacheEntry.cacheControl.expire);\n await incrementalCache.set(key, previousIncrementalCacheEntry.value, {\n cacheControl: {\n revalidate: revalidate,\n expire: expire\n },\n isRoutePPREnabled,\n isFallback\n });\n }\n // We haven't resolved yet, so let's throw to indicate an error.\n throw err;\n }\n }\n}\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXNwb25zZS1jYWNoZS9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLDJDQUEwQztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGLEtBQUssQ0FBNEI7QUFDakMsaUJBQWlCLG1CQUFPLENBQUMsd0VBQW1CO0FBQzVDLGtCQUFrQixtQkFBTyxDQUFDLGdGQUFrQjtBQUM1QyxhQUFhLG1CQUFPLENBQUMsa0ZBQXdCO0FBQzdDLG1CQUFtQixtQkFBTyxDQUFDLDRFQUFxQjtBQUNoRCxlQUFlLG1CQUFPLENBQUMsOEVBQVM7QUFDaEMsYUFBYSxtQkFBTyxDQUFDLDhFQUFTO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxTQUFTLEVBQUUsY0FBYyxFQUFFLDZCQUE2QjtBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsMkJBQTJCLE1BQU0sSUFBSSxHQUFHLGlDQUFpQztBQUNwRztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNGQUFzRixxQkFBcUIsNEVBQTRFLGFBQWE7QUFDcE07QUFDQTtBQUNBLGdCQUFnQix3SkFBd0o7QUFDeEs7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFLLFNBQVM7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQixrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL3Jlc3BvbnNlLWNhY2hlL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGVmYXVsdFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUmVzcG9uc2VDYWNoZTtcbiAgICB9XG59KTtcbjAgJiYgX19leHBvcnQocmVxdWlyZShcIi4vdHlwZXNcIikpO1xuY29uc3QgX2JhdGNoZXIgPSByZXF1aXJlKFwiLi4vLi4vbGliL2JhdGNoZXJcIik7XG5jb25zdCBfbHJ1Y2FjaGUgPSByZXF1aXJlKFwiLi4vbGliL2xydS1jYWNoZVwiKTtcbmNvbnN0IF9sb2cgPSByZXF1aXJlKFwiLi4vLi4vYnVpbGQvb3V0cHV0L2xvZ1wiKTtcbmNvbnN0IF9zY2hlZHVsZXIgPSByZXF1aXJlKFwiLi4vLi4vbGliL3NjaGVkdWxlclwiKTtcbmNvbnN0IF91dGlscyA9IHJlcXVpcmUoXCIuL3V0aWxzXCIpO1xuX2V4cG9ydF9zdGFyKHJlcXVpcmUoXCIuL3R5cGVzXCIpLCBleHBvcnRzKTtcbmZ1bmN0aW9uIF9leHBvcnRfc3Rhcihmcm9tLCB0bykge1xuICAgIE9iamVjdC5rZXlzKGZyb20pLmZvckVhY2goZnVuY3Rpb24oaykge1xuICAgICAgICBpZiAoayAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0bywgaykpIHtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0bywgaywge1xuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZyb21ba107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZnJvbTtcbn1cbi8qKlxuICogUGFyc2VzIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGFzIGEgcG9zaXRpdmUgaW50ZWdlciwgcmV0dXJuaW5nIHRoZSBmYWxsYmFja1xuICogaWYgdGhlIHZhbHVlIGlzIG1pc3NpbmcsIG5vdCBhIG51bWJlciwgb3Igbm90IHBvc2l0aXZlLlxuICovIGZ1bmN0aW9uIHBhcnNlUG9zaXRpdmVJbnQoZW52VmFsdWUsIGZhbGxiYWNrKSB7XG4gICAgaWYgKCFlbnZWYWx1ZSkgcmV0dXJuIGZhbGxiYWNrO1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KGVudlZhbHVlLCAxMCk7XG4gICAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShwYXJzZWQpICYmIHBhcnNlZCA+IDAgPyBwYXJzZWQgOiBmYWxsYmFjaztcbn1cbi8qKlxuICogRGVmYXVsdCBUVEwgKGluIG1pbGxpc2Vjb25kcykgZm9yIG1pbmltYWwgbW9kZSByZXNwb25zZSBjYWNoZSBlbnRyaWVzLlxuICogVXNlZCBmb3IgY2FjaGUgaGl0IHZhbGlkYXRpb24gYXMgYSBmYWxsYmFjayBmb3IgcHJvdmlkZXJzIHRoYXQgZG9uJ3RcbiAqIHNlbmQgdGhlIHgtaW52b2NhdGlvbi1pZCBoZWFkZXIgeWV0LlxuICpcbiAqIDEwIHNlY29uZHMgY2hvc2VuIGJlY2F1c2U6XG4gKiAtIExvbmcgZW5vdWdoIHRvIGRlZHVwZSByYXBpZCBzdWNjZXNzaXZlIHJlcXVlc3RzIChlLmcuLCBwYWdlICsgZGF0YSlcbiAqIC0gU2hvcnQgZW5vdWdoIHRvIG5vdCBzZXJ2ZSBzdGFsZSBkYXRhIGFjcm9zcyB1bnJlbGF0ZWQgcmVxdWVzdHNcbiAqXG4gKiBDYW4gYmUgY29uZmlndXJlZCB2aWEgYE5FWFRfUFJJVkFURV9SRVNQT05TRV9DQUNIRV9UVExgIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICovIGNvbnN0IERFRkFVTFRfVFRMX01TID0gcGFyc2VQb3NpdGl2ZUludChwcm9jZXNzLmVudi5ORVhUX1BSSVZBVEVfUkVTUE9OU0VfQ0FDSEVfVFRMLCAxMDAwMCk7XG4vKipcbiAqIERlZmF1bHQgbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgcmVzcG9uc2UgY2FjaGUuXG4gKiBDYW4gYmUgY29uZmlndXJlZCB2aWEgYE5FWFRfUFJJVkFURV9SRVNQT05TRV9DQUNIRV9NQVhfU0laRWAgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gKi8gY29uc3QgREVGQVVMVF9NQVhfU0laRSA9IHBhcnNlUG9zaXRpdmVJbnQocHJvY2Vzcy5lbnYuTkVYVF9QUklWQVRFX1JFU1BPTlNFX0NBQ0hFX01BWF9TSVpFLCAxNTApO1xuLyoqXG4gKiBTZXBhcmF0b3IgdXNlZCBpbiBjb21wb3VuZCBjYWNoZSBrZXlzIHRvIGpvaW4gcGF0aG5hbWUgYW5kIGludm9jYXRpb25JRC5cbiAqIFVzaW5nIG51bGwgYnl0ZSAoXFwwKSBzaW5jZSBpdCBjYW5ub3QgYXBwZWFyIGluIHZhbGlkIFVSTCBwYXRocyBvciBVVUlEcy5cbiAqLyBjb25zdCBLRVlfU0VQQVJBVE9SID0gJ1xcMCc7XG4vKipcbiAqIFNlbnRpbmVsIHZhbHVlIHVzZWQgZm9yIFRUTC1iYXNlZCBjYWNoZSBlbnRyaWVzICh3aGVuIGludm9jYXRpb25JRCBpcyB1bmRlZmluZWQpLlxuICogQ2hvc2VuIHRvIGJlIGEgY2xlYXJseSByZXNlcnZlZCBtYXJrZXIgZm9yIGludGVybmFsIGNhY2hlIGtleXMuXG4gKi8gY29uc3QgVFRMX1NFTlRJTkVMID0gJ19fdHRsX3NlbnRpbmVsX18nO1xuLyoqXG4gKiBDcmVhdGVzIGEgY29tcG91bmQgY2FjaGUga2V5IGZyb20gcGF0aG5hbWUgYW5kIGludm9jYXRpb25JRC5cbiAqLyBmdW5jdGlvbiBjcmVhdGVDYWNoZUtleShwYXRobmFtZSwgaW52b2NhdGlvbklEKSB7XG4gICAgcmV0dXJuIGAke3BhdGhuYW1lfSR7S0VZX1NFUEFSQVRPUn0ke2ludm9jYXRpb25JRCA/PyBUVExfU0VOVElORUx9YDtcbn1cbi8qKlxuICogRXh0cmFjdHMgdGhlIGludm9jYXRpb25JRCBmcm9tIGEgY29tcG91bmQgY2FjaGUga2V5LlxuICogUmV0dXJucyB1bmRlZmluZWQgaWYgdGhlIGtleSB1c2VkIFRUTF9TRU5USU5FTC5cbiAqLyBmdW5jdGlvbiBleHRyYWN0SW52b2NhdGlvbklEKGNvbXBvdW5kS2V5KSB7XG4gICAgY29uc3Qgc2VwYXJhdG9ySW5kZXggPSBjb21wb3VuZEtleS5sYXN0SW5kZXhPZihLRVlfU0VQQVJBVE9SKTtcbiAgICBpZiAoc2VwYXJhdG9ySW5kZXggPT09IC0xKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGludm9jYXRpb25JRCA9IGNvbXBvdW5kS2V5LnNsaWNlKHNlcGFyYXRvckluZGV4ICsgMSk7XG4gICAgcmV0dXJuIGludm9jYXRpb25JRCA9PT0gVFRMX1NFTlRJTkVMID8gdW5kZWZpbmVkIDogaW52b2NhdGlvbklEO1xufVxuY2xhc3MgUmVzcG9uc2VDYWNoZSB7XG4gICAgY29uc3RydWN0b3IobWluaW1hbF9tb2RlLCBtYXhTaXplID0gREVGQVVMVF9NQVhfU0laRSwgdHRsID0gREVGQVVMVF9UVExfTVMpe1xuICAgICAgICB0aGlzLmdldEJhdGNoZXIgPSBfYmF0Y2hlci5CYXRjaGVyLmNyZWF0ZSh7XG4gICAgICAgICAgICAvLyBFbnN1cmUgb24tZGVtYW5kIHJldmFsaWRhdGUgZG9lc24ndCBibG9jayBub3JtYWwgcmVxdWVzdHMsIGl0IHNob3VsZCBiZVxuICAgICAgICAgICAgLy8gc2FmZSB0byBydW4gYW4gb24tZGVtYW5kIHJldmFsaWRhdGUgZm9yIHRoZSBzYW1lIGtleSBhcyBhIG5vcm1hbCByZXF1ZXN0LlxuICAgICAgICAgICAgY2FjaGVLZXlGbjogKHsga2V5LCBpc09uRGVtYW5kUmV2YWxpZGF0ZSB9KT0+YCR7a2V5fS0ke2lzT25EZW1hbmRSZXZhbGlkYXRlID8gJzEnIDogJzAnfWAsXG4gICAgICAgICAgICAvLyBXZSB3YWl0IHRvIGRvIGFueSBhc3luYyB3b3JrIHVudGlsIGFmdGVyIHdlJ3ZlIGFkZGVkIG91ciBwcm9taXNlIHRvXG4gICAgICAgICAgICAvLyBgcGVuZGluZ1Jlc3BvbnNlc2AgdG8gZW5zdXJlIHRoYXQgYW55IGFueSBvdGhlciBjYWxscyB3aWxsIHJldXNlIHRoZVxuICAgICAgICAgICAgLy8gc2FtZSBwcm9taXNlIHVudGlsIHdlJ3ZlIGZ1bGx5IGZpbmlzaGVkIG91ciB3b3JrLlxuICAgICAgICAgICAgc2NoZWR1bGVyRm46IF9zY2hlZHVsZXIuc2NoZWR1bGVPbk5leHRUaWNrXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJldmFsaWRhdGVCYXRjaGVyID0gX2JhdGNoZXIuQmF0Y2hlci5jcmVhdGUoe1xuICAgICAgICAgICAgLy8gV2Ugd2FpdCB0byBkbyBhbnkgYXN5bmMgd29yayB1bnRpbCBhZnRlciB3ZSd2ZSBhZGRlZCBvdXIgcHJvbWlzZSB0b1xuICAgICAgICAgICAgLy8gYHBlbmRpbmdSZXNwb25zZXNgIHRvIGVuc3VyZSB0aGF0IGFueSBhbnkgb3RoZXIgY2FsbHMgd2lsbCByZXVzZSB0aGVcbiAgICAgICAgICAgIC8vIHNhbWUgcHJvbWlzZSB1bnRpbCB3ZSd2ZSBmdWxseSBmaW5pc2hlZCBvdXIgd29yay5cbiAgICAgICAgICAgIHNjaGVkdWxlckZuOiBfc2NoZWR1bGVyLnNjaGVkdWxlT25OZXh0VGlja1xuICAgICAgICB9KTtcbiAgICAgICAgLyoqXG4gICAqIFNldCBvZiBpbnZvY2F0aW9uIElEcyB0aGF0IGhhdmUgaGFkIGNhY2hlIGVudHJpZXMgZXZpY3RlZC5cbiAgICogVXNlZCB0byBkZXRlY3Qgd2hlbiB0aGUgY2FjaGUgc2l6ZSBtYXkgYmUgdG9vIHNtYWxsLlxuICAgKiBCb3VuZGVkIHRvIHByZXZlbnQgbWVtb3J5IGdyb3d0aC5cbiAgICovIHRoaXMuZXZpY3RlZEludm9jYXRpb25JRHMgPSBuZXcgU2V0KCk7XG4gICAgICAgIHRoaXMubWluaW1hbF9tb2RlID0gbWluaW1hbF9tb2RlO1xuICAgICAgICB0aGlzLm1heFNpemUgPSBtYXhTaXplO1xuICAgICAgICB0aGlzLnR0bCA9IHR0bDtcbiAgICAgICAgLy8gQ3JlYXRlIHRoZSBMUlUgY2FjaGUgd2l0aCBldmljdGlvbiB0cmFja2luZ1xuICAgICAgICB0aGlzLmNhY2hlID0gbmV3IF9scnVjYWNoZS5MUlVDYWNoZShtYXhTaXplLCB1bmRlZmluZWQsIChjb21wb3VuZEtleSk9PntcbiAgICAgICAgICAgIGNvbnN0IGludm9jYXRpb25JRCA9IGV4dHJhY3RJbnZvY2F0aW9uSUQoY29tcG91bmRLZXkpO1xuICAgICAgICAgICAgaWYgKGludm9jYXRpb25JRCkge1xuICAgICAgICAgICAgICAgIC8vIEJvdW5kIHRvIDEwMCBlbnRyaWVzIHRvIHByZXZlbnQgdW5ib3VuZGVkIG1lbW9yeSBncm93dGguXG4gICAgICAgICAgICAgICAgLy8gRklGTyBldmljdGlvbiBpcyBhY2NlcHRhYmxlIGhlcmUgYmVjYXVzZTpcbiAgICAgICAgICAgICAgICAvLyAxLiBJbnZvY2F0aW9ucyBhcmUgc2hvcnQtbGl2ZWQgKHNpbmdsZSByZXF1ZXN0IGxpZmVjeWNsZSksIHNvIG9sZGVyXG4gICAgICAgICAgICAgICAgLy8gICAgaW52b2NhdGlvbnMgYXJlIHVubGlrZWx5IHRvIHN0aWxsIGJlIGFjdGl2ZSBhZnRlciAxMDAgbmV3ZXIgb25lc1xuICAgICAgICAgICAgICAgIC8vIDIuIFRoaXMgd2FybmluZyBtZWNoYW5pc20gaXMgYmVzdC1lZmZvcnQgZm9yIGRldmVsb3BlciBndWlkYW5jZeKAlFxuICAgICAgICAgICAgICAgIC8vICAgIG1pc3Npbmcgb2NjYXNpb25hbCBldmljdGlvbiB3YXJuaW5ncyBkb2Vzbid0IGFmZmVjdCBjb3JyZWN0bmVzc1xuICAgICAgICAgICAgICAgIC8vIDMuIElmIGEgbG9uZy1ydW5uaW5nIGludm9jYXRpb24gaXMgc29tZWhvdyBldmljdGVkIGFuZCB0aGVuIGhhc1xuICAgICAgICAgICAgICAgIC8vICAgIGFub3RoZXIgY2FjaGUgZW50cnkgZXZpY3RlZCwgaXQgd2lsbCBzaW1wbHkgYmUgcmUtYWRkZWRcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5ldmljdGVkSW52b2NhdGlvbklEcy5zaXplID49IDEwMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdCA9IHRoaXMuZXZpY3RlZEludm9jYXRpb25JRHMudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3QpIHRoaXMuZXZpY3RlZEludm9jYXRpb25JRHMuZGVsZXRlKGZpcnN0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5ldmljdGVkSW52b2NhdGlvbklEcy5hZGQoaW52b2NhdGlvbklEKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgKiBHZXRzIHRoZSByZXNwb25zZSBjYWNoZSBlbnRyeSBmb3IgdGhlIGdpdmVuIGtleS5cbiAgICpcbiAgICogQHBhcmFtIGtleSAtIFRoZSBrZXkgdG8gZ2V0IHRoZSByZXNwb25zZSBjYWNoZSBlbnRyeSBmb3IuXG4gICAqIEBwYXJhbSByZXNwb25zZUdlbmVyYXRvciAtIFRoZSByZXNwb25zZSBnZW5lcmF0b3IgdG8gdXNlIHRvIGdlbmVyYXRlIHRoZSByZXNwb25zZSBjYWNoZSBlbnRyeS5cbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgY29udGV4dCBmb3IgdGhlIGdldCByZXF1ZXN0LlxuICAgKiBAcmV0dXJucyBUaGUgcmVzcG9uc2UgY2FjaGUgZW50cnkuXG4gICAqLyBhc3luYyBnZXQoa2V5LCByZXNwb25zZUdlbmVyYXRvciwgY29udGV4dCkge1xuICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBrZXkgZm9yIHRoZSBjYWNoZSwgd2UgY2FuJ3QgcG9zc2libHkgbG9vayB0aGlzIHVwIGluIHRoZVxuICAgICAgICAvLyBjYWNoZSBzbyBqdXN0IHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSByZXNwb25zZSBnZW5lcmF0b3IuXG4gICAgICAgIGlmICgha2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2VHZW5lcmF0b3Ioe1xuICAgICAgICAgICAgICAgIGhhc1Jlc29sdmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBwcmV2aW91c0NhY2hlRW50cnk6IG51bGxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIENoZWNrIG1pbmltYWwgbW9kZSBjYWNoZSBiZWZvcmUgZG9pbmcgYW55IG90aGVyIHdvcmsuXG4gICAgICAgIGlmICh0aGlzLm1pbmltYWxfbW9kZSkge1xuICAgICAgICAgICAgY29uc3QgY2FjaGVLZXkgPSBjcmVhdGVDYWNoZUtleShrZXksIGNvbnRleHQuaW52b2NhdGlvbklEKTtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlZEl0ZW0gPSB0aGlzLmNhY2hlLmdldChjYWNoZUtleSk7XG4gICAgICAgICAgICBpZiAoY2FjaGVkSXRlbSkge1xuICAgICAgICAgICAgICAgIC8vIFdpdGggaW52b2NhdGlvbklEOiBleGFjdCBtYXRjaCBmb3VuZCAtIGFsd2F5cyBhIGhpdFxuICAgICAgICAgICAgICAgIC8vIFdpdGggVFRMIG1vZGU6IG11c3QgY2hlY2sgZXhwaXJhdGlvblxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0Lmludm9jYXRpb25JRCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCwgX3V0aWxzLnRvUmVzcG9uc2VDYWNoZUVudHJ5KShjYWNoZWRJdGVtLmVudHJ5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gVFRMIG1vZGU6IGNoZWNrIGV4cGlyYXRpb25cbiAgICAgICAgICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgIGlmIChjYWNoZWRJdGVtLmV4cGlyZXNBdCA+IG5vdykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAsIF91dGlscy50b1Jlc3BvbnNlQ2FjaGVFbnRyeSkoY2FjaGVkSXRlbS5lbnRyeSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFRUTCBleHBpcmVkIC0gY2xlYW4gdXBcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlLnJlbW92ZShjYWNoZUtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBXYXJuIGlmIHRoaXMgaW52b2NhdGlvbiBoYWQgZW50cmllcyBldmljdGVkIC0gaW5kaWNhdGVzIGNhY2hlIG1heSBiZSB0b28gc21hbGwuXG4gICAgICAgICAgICBpZiAoY29udGV4dC5pbnZvY2F0aW9uSUQgJiYgdGhpcy5ldmljdGVkSW52b2NhdGlvbklEcy5oYXMoY29udGV4dC5pbnZvY2F0aW9uSUQpKSB7XG4gICAgICAgICAgICAgICAgKDAsIF9sb2cud2Fybk9uY2UpKGBSZXNwb25zZSBjYWNoZSBlbnRyeSB3YXMgZXZpY3RlZCBmb3IgaW52b2NhdGlvbiAke2NvbnRleHQuaW52b2NhdGlvbklEfS4gYCArIGBDb25zaWRlciBpbmNyZWFzaW5nIE5FWFRfUFJJVkFURV9SRVNQT05TRV9DQUNIRV9NQVhfU0laRSAoY3VycmVudDogJHt0aGlzLm1heFNpemV9KS5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IGluY3JlbWVudGFsQ2FjaGUsIGlzT25EZW1hbmRSZXZhbGlkYXRlID0gZmFsc2UsIGlzRmFsbGJhY2sgPSBmYWxzZSwgaXNSb3V0ZVBQUkVuYWJsZWQgPSBmYWxzZSwgaXNQcmVmZXRjaCA9IGZhbHNlLCB3YWl0VW50aWwsIHJvdXRlS2luZCwgaW52b2NhdGlvbklEIH0gPSBjb250ZXh0O1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZ2V0QmF0Y2hlci5iYXRjaCh7XG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICBpc09uRGVtYW5kUmV2YWxpZGF0ZVxuICAgICAgICB9LCAoeyByZXNvbHZlIH0pPT57XG4gICAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5oYW5kbGVHZXQoa2V5LCByZXNwb25zZUdlbmVyYXRvciwge1xuICAgICAgICAgICAgICAgIGluY3JlbWVudGFsQ2FjaGUsXG4gICAgICAgICAgICAgICAgaXNPbkRlbWFuZFJldmFsaWRhdGUsXG4gICAgICAgICAgICAgICAgaXNGYWxsYmFjayxcbiAgICAgICAgICAgICAgICBpc1JvdXRlUFBSRW5hYmxlZCxcbiAgICAgICAgICAgICAgICBpc1ByZWZldGNoLFxuICAgICAgICAgICAgICAgIHJvdXRlS2luZCxcbiAgICAgICAgICAgICAgICBpbnZvY2F0aW9uSURcbiAgICAgICAgICAgIH0sIHJlc29sdmUpO1xuICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBlbnN1cmUgYmFja2dyb3VuZCByZXZhbGlkYXRlcyBhcmUgcGFzc2VkIHRvIHdhaXRVbnRpbC5cbiAgICAgICAgICAgIGlmICh3YWl0VW50aWwpIHdhaXRVbnRpbChwcm9taXNlKTtcbiAgICAgICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuICgwLCBfdXRpbHMudG9SZXNwb25zZUNhY2hlRW50cnkpKHJlc3BvbnNlKTtcbiAgICB9XG4gICAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGdldCByZXF1ZXN0IGZvciB0aGUgcmVzcG9uc2UgY2FjaGUuXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IHRvIGdldCB0aGUgcmVzcG9uc2UgY2FjaGUgZW50cnkgZm9yLlxuICAgKiBAcGFyYW0gcmVzcG9uc2VHZW5lcmF0b3IgLSBUaGUgcmVzcG9uc2UgZ2VuZXJhdG9yIHRvIHVzZSB0byBnZW5lcmF0ZSB0aGUgcmVzcG9uc2UgY2FjaGUgZW50cnkuXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIGNvbnRleHQgZm9yIHRoZSBnZXQgcmVxdWVzdC5cbiAgICogQHBhcmFtIHJlc29sdmUgLSBUaGUgcmVzb2x2ZSBmdW5jdGlvbiB0byB1c2UgdG8gcmVzb2x2ZSB0aGUgcmVzcG9uc2UgY2FjaGUgZW50cnkuXG4gICAqIEByZXR1cm5zIFRoZSByZXNwb25zZSBjYWNoZSBlbnRyeS5cbiAgICovIGFzeW5jIGhhbmRsZUdldChrZXksIHJlc3BvbnNlR2VuZXJhdG9yLCBjb250ZXh0LCByZXNvbHZlKSB7XG4gICAgICAgIGxldCBwcmV2aW91c0luY3JlbWVudGFsQ2FjaGVFbnRyeSA9IG51bGw7XG4gICAgICAgIGxldCByZXNvbHZlZCA9IGZhbHNlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gR2V0IHRoZSBwcmV2aW91cyBjYWNoZSBlbnRyeSBpZiBub3QgaW4gbWluaW1hbCBtb2RlXG4gICAgICAgICAgICBwcmV2aW91c0luY3JlbWVudGFsQ2FjaGVFbnRyeSA9ICF0aGlzLm1pbmltYWxfbW9kZSA/IGF3YWl0IGNvbnRleHQuaW5jcmVtZW50YWxDYWNoZS5nZXQoa2V5LCB7XG4gICAgICAgICAgICAgICAga2luZDogKDAsIF91dGlscy5yb3V0ZUtpbmRUb0luY3JlbWVudGFsQ2FjaGVLaW5kKShjb250ZXh0LnJvdXRlS2luZCksXG4gICAgICAgICAgICAgICAgaXNSb3V0ZVBQUkVuYWJsZWQ6IGNvbnRleHQuaXNSb3V0ZVBQUkVuYWJsZWQsXG4gICAgICAgICAgICAgICAgaXNGYWxsYmFjazogY29udGV4dC5pc0ZhbGxiYWNrXG4gICAgICAgICAgICB9KSA6IG51bGw7XG4gICAgICAgICAgICBpZiAocHJldmlvdXNJbmNyZW1lbnRhbENhY2hlRW50cnkgJiYgIWNvbnRleHQuaXNPbkRlbWFuZFJldmFsaWRhdGUpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHByZXZpb3VzSW5jcmVtZW50YWxDYWNoZUVudHJ5KTtcbiAgICAgICAgICAgICAgICByZXNvbHZlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c0luY3JlbWVudGFsQ2FjaGVFbnRyeS5pc1N0YWxlIHx8IGNvbnRleHQuaXNQcmVmZXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBUaGUgY2FjaGVkIHZhbHVlIGlzIHN0aWxsIHZhbGlkLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHVwZGF0ZSBpdCB5ZXQuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0luY3JlbWVudGFsQ2FjaGVFbnRyeTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBSZXZhbGlkYXRlIHRoZSBjYWNoZSBlbnRyeVxuICAgICAgICAgICAgY29uc3QgaW5jcmVtZW50YWxSZXNwb25zZUNhY2hlRW50cnkgPSBhd2FpdCB0aGlzLnJldmFsaWRhdGUoa2V5LCBjb250ZXh0LmluY3JlbWVudGFsQ2FjaGUsIGNvbnRleHQuaXNSb3V0ZVBQUkVuYWJsZWQsIGNvbnRleHQuaXNGYWxsYmFjaywgcmVzcG9uc2VHZW5lcmF0b3IsIHByZXZpb3VzSW5jcmVtZW50YWxDYWNoZUVudHJ5LCBwcmV2aW91c0luY3JlbWVudGFsQ2FjaGVFbnRyeSAhPT0gbnVsbCAmJiAhY29udGV4dC5pc09uRGVtYW5kUmV2YWxpZGF0ZSwgdW5kZWZpbmVkLCBjb250ZXh0Lmludm9jYXRpb25JRCk7XG4gICAgICAgICAgICAvLyBIYW5kbGUgbnVsbCByZXNwb25zZVxuICAgICAgICAgICAgaWYgKCFpbmNyZW1lbnRhbFJlc3BvbnNlQ2FjaGVFbnRyeSkge1xuICAgICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgY2FjaGUgaXRlbSBpZiBpdCB3YXMgc2V0IHNvIHdlIGRvbid0IHVzZSBpdCBhZ2Fpbi5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5taW5pbWFsX21vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FjaGVLZXkgPSBjcmVhdGVDYWNoZUtleShrZXksIGNvbnRleHQuaW52b2NhdGlvbklEKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWNoZS5yZW1vdmUoY2FjaGVLZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFJlc29sdmUgZm9yIG9uLWRlbWFuZCByZXZhbGlkYXRpb24gb3IgaWYgbm90IGFscmVhZHkgcmVzb2x2ZWRcbiAgICAgICAgICAgIGlmIChjb250ZXh0LmlzT25EZW1hbmRSZXZhbGlkYXRlICYmICFyZXNvbHZlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpbmNyZW1lbnRhbFJlc3BvbnNlQ2FjaGVFbnRyeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpbmNyZW1lbnRhbFJlc3BvbnNlQ2FjaGVFbnRyeTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IHJlc29sdmVkIHRoZSBjYWNoZSBlbnRyeSwgd2UgY2FuJ3QgcmVqZWN0IGFzIHdlXG4gICAgICAgICAgICAvLyBhbHJlYWR5IHJlc29sdmVkIHRoZSBjYWNoZSBlbnRyeSBzbyBsb2cgdGhlIGVycm9yIGhlcmUuXG4gICAgICAgICAgICBpZiAocmVzb2x2ZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAqIFJldmFsaWRhdGVzIHRoZSBjYWNoZSBlbnRyeSBmb3IgdGhlIGdpdmVuIGtleS5cbiAgICpcbiAgICogQHBhcmFtIGtleSAtIFRoZSBrZXkgdG8gcmV2YWxpZGF0ZSB0aGUgY2FjaGUgZW50cnkgZm9yLlxuICAgKiBAcGFyYW0gaW5jcmVtZW50YWxDYWNoZSAtIFRoZSBpbmNyZW1lbnRhbCBjYWNoZSB0byB1c2UgdG8gcmV2YWxpZGF0ZSB0aGUgY2FjaGUgZW50cnkuXG4gICAqIEBwYXJhbSBpc1JvdXRlUFBSRW5hYmxlZCAtIFdoZXRoZXIgdGhlIHJvdXRlIGlzIFBQUiBlbmFibGVkLlxuICAgKiBAcGFyYW0gaXNGYWxsYmFjayAtIFdoZXRoZXIgdGhlIHJvdXRlIGlzIGEgZmFsbGJhY2suXG4gICAqIEBwYXJhbSByZXNwb25zZUdlbmVyYXRvciAtIFRoZSByZXNwb25zZSBnZW5lcmF0b3IgdG8gdXNlIHRvIGdlbmVyYXRlIHRoZSByZXNwb25zZSBjYWNoZSBlbnRyeS5cbiAgICogQHBhcmFtIHByZXZpb3VzSW5jcmVtZW50YWxDYWNoZUVudHJ5IC0gVGhlIHByZXZpb3VzIGNhY2hlIGVudHJ5IHRvIHVzZSB0byByZXZhbGlkYXRlIHRoZSBjYWNoZSBlbnRyeS5cbiAgICogQHBhcmFtIGhhc1Jlc29sdmVkIC0gV2hldGhlciB0aGUgcmVzcG9uc2UgaGFzIGJlZW4gcmVzb2x2ZWQuXG4gICAqIEBwYXJhbSB3YWl0VW50aWwgLSBPcHRpb25hbCBmdW5jdGlvbiB0byByZWdpc3RlciBiYWNrZ3JvdW5kIHdvcmsuXG4gICAqIEBwYXJhbSBpbnZvY2F0aW9uSUQgLSBUaGUgaW52b2NhdGlvbiBJRCBmb3IgY2FjaGUga2V5IHNjb3BpbmcuXG4gICAqIEByZXR1cm5zIFRoZSByZXZhbGlkYXRlZCBjYWNoZSBlbnRyeS5cbiAgICovIGFzeW5jIHJldmFsaWRhdGUoa2V5LCBpbmNyZW1lbnRhbENhY2hlLCBpc1JvdXRlUFBSRW5hYmxlZCwgaXNGYWxsYmFjaywgcmVzcG9uc2VHZW5lcmF0b3IsIHByZXZpb3VzSW5jcmVtZW50YWxDYWNoZUVudHJ5LCBoYXNSZXNvbHZlZCwgd2FpdFVudGlsLCBpbnZvY2F0aW9uSUQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmV2YWxpZGF0ZUJhdGNoZXIuYmF0Y2goa2V5LCAoKT0+e1xuICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuaGFuZGxlUmV2YWxpZGF0ZShrZXksIGluY3JlbWVudGFsQ2FjaGUsIGlzUm91dGVQUFJFbmFibGVkLCBpc0ZhbGxiYWNrLCByZXNwb25zZUdlbmVyYXRvciwgcHJldmlvdXNJbmNyZW1lbnRhbENhY2hlRW50cnksIGhhc1Jlc29sdmVkLCBpbnZvY2F0aW9uSUQpO1xuICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBlbnN1cmUgYmFja2dyb3VuZCByZXZhbGlkYXRlcyBhcmUgcGFzc2VkIHRvIHdhaXRVbnRpbC5cbiAgICAgICAgICAgIGlmICh3YWl0VW50aWwpIHdhaXRVbnRpbChwcm9taXNlKTtcbiAgICAgICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgaGFuZGxlUmV2YWxpZGF0ZShrZXksIGluY3JlbWVudGFsQ2FjaGUsIGlzUm91dGVQUFJFbmFibGVkLCBpc0ZhbGxiYWNrLCByZXNwb25zZUdlbmVyYXRvciwgcHJldmlvdXNJbmNyZW1lbnRhbENhY2hlRW50cnksIGhhc1Jlc29sdmVkLCBpbnZvY2F0aW9uSUQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIEdlbmVyYXRlIHRoZSByZXNwb25zZSBjYWNoZSBlbnRyeSB1c2luZyB0aGUgcmVzcG9uc2UgZ2VuZXJhdG9yLlxuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2VDYWNoZUVudHJ5ID0gYXdhaXQgcmVzcG9uc2VHZW5lcmF0b3Ioe1xuICAgICAgICAgICAgICAgIGhhc1Jlc29sdmVkLFxuICAgICAgICAgICAgICAgIHByZXZpb3VzQ2FjaGVFbnRyeTogcHJldmlvdXNJbmNyZW1lbnRhbENhY2hlRW50cnksXG4gICAgICAgICAgICAgICAgaXNSZXZhbGlkYXRpbmc6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKCFyZXNwb25zZUNhY2hlRW50cnkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIHJlc3BvbnNlIGNhY2hlIGVudHJ5IHRvIGFuIGluY3JlbWVudGFsIHJlc3BvbnNlIGNhY2hlIGVudHJ5LlxuICAgICAgICAgICAgY29uc3QgaW5jcmVtZW50YWxSZXNwb25zZUNhY2hlRW50cnkgPSBhd2FpdCAoMCwgX3V0aWxzLmZyb21SZXNwb25zZUNhY2hlRW50cnkpKHtcbiAgICAgICAgICAgICAgICAuLi5yZXNwb25zZUNhY2hlRW50cnksXG4gICAgICAgICAgICAgICAgaXNNaXNzOiAhcHJldmlvdXNJbmNyZW1lbnRhbENhY2hlRW50cnlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gV2Ugd2FudCB0byBwZXJzaXN0IHRoZSByZXN1bHQgb25seSBpZiBpdCBoYXMgYSBjYWNoZSBjb250cm9sIHZhbHVlXG4gICAgICAgICAgICAvLyBkZWZpbmVkLlxuICAgICAgICAgICAgaWYgKGluY3JlbWVudGFsUmVzcG9uc2VDYWNoZUVudHJ5LmNhY2hlQ29udHJvbCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1pbmltYWxfbW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBTZXQgVFRMIGV4cGlyYXRpb24gZm9yIGNhY2hlIGhpdCB2YWxpZGF0aW9uLiBFbnRyaWVzIGFyZSB2YWxpZGF0ZWRcbiAgICAgICAgICAgICAgICAgICAgLy8gYnkgaW52b2NhdGlvbklEIHdoZW4gYXZhaWxhYmxlLCB3aXRoIFRUTCBhcyBhIGZhbGxiYWNrIGZvciBwcm92aWRlcnNcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBkb24ndCBzZW5kIHgtaW52b2NhdGlvbi1pZC4gTWVtb3J5IGlzIG1hbmFnZWQgYnkgTFJVIGV2aWN0aW9uLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYWNoZUtleSA9IGNyZWF0ZUNhY2hlS2V5KGtleSwgaW52b2NhdGlvbklEKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWNoZS5zZXQoY2FjaGVLZXksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5OiBpbmNyZW1lbnRhbFJlc3BvbnNlQ2FjaGVFbnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyZXNBdDogRGF0ZS5ub3coKSArIHRoaXMudHRsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGluY3JlbWVudGFsQ2FjaGUuc2V0KGtleSwgaW5jcmVtZW50YWxSZXNwb25zZUNhY2hlRW50cnkudmFsdWUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlQ29udHJvbDogaW5jcmVtZW50YWxSZXNwb25zZUNhY2hlRW50cnkuY2FjaGVDb250cm9sLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNSb3V0ZVBQUkVuYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0ZhbGxiYWNrXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpbmNyZW1lbnRhbFJlc3BvbnNlQ2FjaGVFbnRyeTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAvLyBXaGVuIGEgcGF0aCBpcyBlcnJvcmluZyB3ZSBhdXRvbWF0aWNhbGx5IHJlLXNldCB0aGUgZXhpc3RpbmcgY2FjaGVcbiAgICAgICAgICAgIC8vIHdpdGggbmV3IHJldmFsaWRhdGUgYW5kIGV4cGlyZSB0aW1lcyB0byBwcmV2ZW50IG5vbi1zdG9wIHJldHJ5aW5nLlxuICAgICAgICAgICAgaWYgKHByZXZpb3VzSW5jcmVtZW50YWxDYWNoZUVudHJ5ID09IG51bGwgPyB2b2lkIDAgOiBwcmV2aW91c0luY3JlbWVudGFsQ2FjaGVFbnRyeS5jYWNoZUNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXZhbGlkYXRlID0gTWF0aC5taW4oTWF0aC5tYXgocHJldmlvdXNJbmNyZW1lbnRhbENhY2hlRW50cnkuY2FjaGVDb250cm9sLnJldmFsaWRhdGUgfHwgMywgMyksIDMwKTtcbiAgICAgICAgICAgICAgICBjb25zdCBleHBpcmUgPSBwcmV2aW91c0luY3JlbWVudGFsQ2FjaGVFbnRyeS5jYWNoZUNvbnRyb2wuZXhwaXJlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBNYXRoLm1heChyZXZhbGlkYXRlICsgMywgcHJldmlvdXNJbmNyZW1lbnRhbENhY2hlRW50cnkuY2FjaGVDb250cm9sLmV4cGlyZSk7XG4gICAgICAgICAgICAgICAgYXdhaXQgaW5jcmVtZW50YWxDYWNoZS5zZXQoa2V5LCBwcmV2aW91c0luY3JlbWVudGFsQ2FjaGVFbnRyeS52YWx1ZSwge1xuICAgICAgICAgICAgICAgICAgICBjYWNoZUNvbnRyb2w6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldmFsaWRhdGU6IHJldmFsaWRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBpcmU6IGV4cGlyZVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBpc1JvdXRlUFBSRW5hYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgaXNGYWxsYmFja1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gV2UgaGF2ZW4ndCByZXNvbHZlZCB5ZXQsIHNvIGxldCdzIHRocm93IHRvIGluZGljYXRlIGFuIGVycm9yLlxuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/response-cache/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/response-cache/types.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/response-cache/types.js ***!
|
||
\***************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n CachedRouteKind: function() {\n return CachedRouteKind;\n },\n IncrementalCacheKind: function() {\n return IncrementalCacheKind;\n }\n});\nvar CachedRouteKind = /*#__PURE__*/ function(CachedRouteKind) {\n CachedRouteKind[\"APP_PAGE\"] = \"APP_PAGE\";\n CachedRouteKind[\"APP_ROUTE\"] = \"APP_ROUTE\";\n CachedRouteKind[\"PAGES\"] = \"PAGES\";\n CachedRouteKind[\"FETCH\"] = \"FETCH\";\n CachedRouteKind[\"REDIRECT\"] = \"REDIRECT\";\n CachedRouteKind[\"IMAGE\"] = \"IMAGE\";\n return CachedRouteKind;\n}({});\nvar IncrementalCacheKind = /*#__PURE__*/ function(IncrementalCacheKind) {\n IncrementalCacheKind[\"APP_PAGE\"] = \"APP_PAGE\";\n IncrementalCacheKind[\"APP_ROUTE\"] = \"APP_ROUTE\";\n IncrementalCacheKind[\"PAGES\"] = \"PAGES\";\n IncrementalCacheKind[\"FETCH\"] = \"FETCH\";\n IncrementalCacheKind[\"IMAGE\"] = \"IMAGE\";\n return IncrementalCacheKind;\n}({});\n\n//# sourceMappingURL=types.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXNwb25zZS1jYWNoZS90eXBlcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FHTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxHQUFHO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEdBQUc7O0FBRUoiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXNwb25zZS1jYWNoZS90eXBlcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIENhY2hlZFJvdXRlS2luZDogbnVsbCxcbiAgICBJbmNyZW1lbnRhbENhY2hlS2luZDogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBDYWNoZWRSb3V0ZUtpbmQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gQ2FjaGVkUm91dGVLaW5kO1xuICAgIH0sXG4gICAgSW5jcmVtZW50YWxDYWNoZUtpbmQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gSW5jcmVtZW50YWxDYWNoZUtpbmQ7XG4gICAgfVxufSk7XG52YXIgQ2FjaGVkUm91dGVLaW5kID0gLyojX19QVVJFX18qLyBmdW5jdGlvbihDYWNoZWRSb3V0ZUtpbmQpIHtcbiAgICBDYWNoZWRSb3V0ZUtpbmRbXCJBUFBfUEFHRVwiXSA9IFwiQVBQX1BBR0VcIjtcbiAgICBDYWNoZWRSb3V0ZUtpbmRbXCJBUFBfUk9VVEVcIl0gPSBcIkFQUF9ST1VURVwiO1xuICAgIENhY2hlZFJvdXRlS2luZFtcIlBBR0VTXCJdID0gXCJQQUdFU1wiO1xuICAgIENhY2hlZFJvdXRlS2luZFtcIkZFVENIXCJdID0gXCJGRVRDSFwiO1xuICAgIENhY2hlZFJvdXRlS2luZFtcIlJFRElSRUNUXCJdID0gXCJSRURJUkVDVFwiO1xuICAgIENhY2hlZFJvdXRlS2luZFtcIklNQUdFXCJdID0gXCJJTUFHRVwiO1xuICAgIHJldHVybiBDYWNoZWRSb3V0ZUtpbmQ7XG59KHt9KTtcbnZhciBJbmNyZW1lbnRhbENhY2hlS2luZCA9IC8qI19fUFVSRV9fKi8gZnVuY3Rpb24oSW5jcmVtZW50YWxDYWNoZUtpbmQpIHtcbiAgICBJbmNyZW1lbnRhbENhY2hlS2luZFtcIkFQUF9QQUdFXCJdID0gXCJBUFBfUEFHRVwiO1xuICAgIEluY3JlbWVudGFsQ2FjaGVLaW5kW1wiQVBQX1JPVVRFXCJdID0gXCJBUFBfUk9VVEVcIjtcbiAgICBJbmNyZW1lbnRhbENhY2hlS2luZFtcIlBBR0VTXCJdID0gXCJQQUdFU1wiO1xuICAgIEluY3JlbWVudGFsQ2FjaGVLaW5kW1wiRkVUQ0hcIl0gPSBcIkZFVENIXCI7XG4gICAgSW5jcmVtZW50YWxDYWNoZUtpbmRbXCJJTUFHRVwiXSA9IFwiSU1BR0VcIjtcbiAgICByZXR1cm4gSW5jcmVtZW50YWxDYWNoZUtpbmQ7XG59KHt9KTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dHlwZXMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/response-cache/types.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/response-cache/utils.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/response-cache/utils.js ***!
|
||
\***************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n fromResponseCacheEntry: function() {\n return fromResponseCacheEntry;\n },\n routeKindToIncrementalCacheKind: function() {\n return routeKindToIncrementalCacheKind;\n },\n toResponseCacheEntry: function() {\n return toResponseCacheEntry;\n }\n});\nconst _types = __webpack_require__(/*! ./types */ \"(rsc)/./node_modules/next/dist/server/response-cache/types.js\");\nconst _renderresult = /*#__PURE__*/ _interop_require_default(__webpack_require__(/*! ../render-result */ \"(rsc)/./node_modules/next/dist/server/render-result.js\"));\nconst _routekind = __webpack_require__(/*! ../route-kind */ \"(rsc)/./node_modules/next/dist/server/route-kind.js\");\nconst _constants = __webpack_require__(/*! ../../lib/constants */ \"(rsc)/./node_modules/next/dist/lib/constants.js\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nasync function fromResponseCacheEntry(cacheEntry) {\n var _cacheEntry_value, _cacheEntry_value1;\n return {\n ...cacheEntry,\n value: ((_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) === _types.CachedRouteKind.PAGES ? {\n kind: _types.CachedRouteKind.PAGES,\n html: await cacheEntry.value.html.toUnchunkedString(true),\n pageData: cacheEntry.value.pageData,\n headers: cacheEntry.value.headers,\n status: cacheEntry.value.status\n } : ((_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind) === _types.CachedRouteKind.APP_PAGE ? {\n kind: _types.CachedRouteKind.APP_PAGE,\n html: await cacheEntry.value.html.toUnchunkedString(true),\n postponed: cacheEntry.value.postponed,\n rscData: cacheEntry.value.rscData,\n headers: cacheEntry.value.headers,\n status: cacheEntry.value.status,\n segmentData: cacheEntry.value.segmentData\n } : cacheEntry.value\n };\n}\nasync function toResponseCacheEntry(response) {\n var _response_value, _response_value1;\n if (!response) return null;\n return {\n isMiss: response.isMiss,\n isStale: response.isStale,\n cacheControl: response.cacheControl,\n isFallback: response.isFallback,\n value: ((_response_value = response.value) == null ? void 0 : _response_value.kind) === _types.CachedRouteKind.PAGES ? {\n kind: _types.CachedRouteKind.PAGES,\n html: _renderresult.default.fromStatic(response.value.html, _constants.HTML_CONTENT_TYPE_HEADER),\n pageData: response.value.pageData,\n headers: response.value.headers,\n status: response.value.status\n } : ((_response_value1 = response.value) == null ? void 0 : _response_value1.kind) === _types.CachedRouteKind.APP_PAGE ? {\n kind: _types.CachedRouteKind.APP_PAGE,\n html: _renderresult.default.fromStatic(response.value.html, _constants.HTML_CONTENT_TYPE_HEADER),\n rscData: response.value.rscData,\n headers: response.value.headers,\n status: response.value.status,\n postponed: response.value.postponed,\n segmentData: response.value.segmentData\n } : response.value\n };\n}\nfunction routeKindToIncrementalCacheKind(routeKind) {\n switch(routeKind){\n case _routekind.RouteKind.PAGES:\n return _types.IncrementalCacheKind.PAGES;\n case _routekind.RouteKind.APP_PAGE:\n return _types.IncrementalCacheKind.APP_PAGE;\n case _routekind.RouteKind.IMAGE:\n return _types.IncrementalCacheKind.IMAGE;\n case _routekind.RouteKind.APP_ROUTE:\n return _types.IncrementalCacheKind.APP_ROUTE;\n case _routekind.RouteKind.PAGES_API:\n // Pages Router API routes are not cached in the incremental cache.\n throw Object.defineProperty(new Error(`Unexpected route kind ${routeKind}`), \"__NEXT_ERROR_CODE\", {\n value: \"E64\",\n enumerable: false,\n configurable: true\n });\n default:\n return routeKind;\n }\n}\n\n//# sourceMappingURL=utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXNwb25zZS1jYWNoZS91dGlscy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FJTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELGVBQWUsbUJBQU8sQ0FBQyw4RUFBUztBQUNoQyw2REFBNkQsbUJBQU8sQ0FBQyxnRkFBa0I7QUFDdkYsbUJBQW1CLG1CQUFPLENBQUMsMEVBQWU7QUFDMUMsbUJBQW1CLG1CQUFPLENBQUMsNEVBQXFCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkVBQTJFLFVBQVU7QUFDckY7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvcmVzcG9uc2UtY2FjaGUvdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBmcm9tUmVzcG9uc2VDYWNoZUVudHJ5OiBudWxsLFxuICAgIHJvdXRlS2luZFRvSW5jcmVtZW50YWxDYWNoZUtpbmQ6IG51bGwsXG4gICAgdG9SZXNwb25zZUNhY2hlRW50cnk6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgZnJvbVJlc3BvbnNlQ2FjaGVFbnRyeTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBmcm9tUmVzcG9uc2VDYWNoZUVudHJ5O1xuICAgIH0sXG4gICAgcm91dGVLaW5kVG9JbmNyZW1lbnRhbENhY2hlS2luZDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByb3V0ZUtpbmRUb0luY3JlbWVudGFsQ2FjaGVLaW5kO1xuICAgIH0sXG4gICAgdG9SZXNwb25zZUNhY2hlRW50cnk6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdG9SZXNwb25zZUNhY2hlRW50cnk7XG4gICAgfVxufSk7XG5jb25zdCBfdHlwZXMgPSByZXF1aXJlKFwiLi90eXBlc1wiKTtcbmNvbnN0IF9yZW5kZXJyZXN1bHQgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChyZXF1aXJlKFwiLi4vcmVuZGVyLXJlc3VsdFwiKSk7XG5jb25zdCBfcm91dGVraW5kID0gcmVxdWlyZShcIi4uL3JvdXRlLWtpbmRcIik7XG5jb25zdCBfY29uc3RhbnRzID0gcmVxdWlyZShcIi4uLy4uL2xpYi9jb25zdGFudHNcIik7XG5mdW5jdGlvbiBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHtcbiAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgfTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGZyb21SZXNwb25zZUNhY2hlRW50cnkoY2FjaGVFbnRyeSkge1xuICAgIHZhciBfY2FjaGVFbnRyeV92YWx1ZSwgX2NhY2hlRW50cnlfdmFsdWUxO1xuICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNhY2hlRW50cnksXG4gICAgICAgIHZhbHVlOiAoKF9jYWNoZUVudHJ5X3ZhbHVlID0gY2FjaGVFbnRyeS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9jYWNoZUVudHJ5X3ZhbHVlLmtpbmQpID09PSBfdHlwZXMuQ2FjaGVkUm91dGVLaW5kLlBBR0VTID8ge1xuICAgICAgICAgICAga2luZDogX3R5cGVzLkNhY2hlZFJvdXRlS2luZC5QQUdFUyxcbiAgICAgICAgICAgIGh0bWw6IGF3YWl0IGNhY2hlRW50cnkudmFsdWUuaHRtbC50b1VuY2h1bmtlZFN0cmluZyh0cnVlKSxcbiAgICAgICAgICAgIHBhZ2VEYXRhOiBjYWNoZUVudHJ5LnZhbHVlLnBhZ2VEYXRhLFxuICAgICAgICAgICAgaGVhZGVyczogY2FjaGVFbnRyeS52YWx1ZS5oZWFkZXJzLFxuICAgICAgICAgICAgc3RhdHVzOiBjYWNoZUVudHJ5LnZhbHVlLnN0YXR1c1xuICAgICAgICB9IDogKChfY2FjaGVFbnRyeV92YWx1ZTEgPSBjYWNoZUVudHJ5LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2NhY2hlRW50cnlfdmFsdWUxLmtpbmQpID09PSBfdHlwZXMuQ2FjaGVkUm91dGVLaW5kLkFQUF9QQUdFID8ge1xuICAgICAgICAgICAga2luZDogX3R5cGVzLkNhY2hlZFJvdXRlS2luZC5BUFBfUEFHRSxcbiAgICAgICAgICAgIGh0bWw6IGF3YWl0IGNhY2hlRW50cnkudmFsdWUuaHRtbC50b1VuY2h1bmtlZFN0cmluZyh0cnVlKSxcbiAgICAgICAgICAgIHBvc3Rwb25lZDogY2FjaGVFbnRyeS52YWx1ZS5wb3N0cG9uZWQsXG4gICAgICAgICAgICByc2NEYXRhOiBjYWNoZUVudHJ5LnZhbHVlLnJzY0RhdGEsXG4gICAgICAgICAgICBoZWFkZXJzOiBjYWNoZUVudHJ5LnZhbHVlLmhlYWRlcnMsXG4gICAgICAgICAgICBzdGF0dXM6IGNhY2hlRW50cnkudmFsdWUuc3RhdHVzLFxuICAgICAgICAgICAgc2VnbWVudERhdGE6IGNhY2hlRW50cnkudmFsdWUuc2VnbWVudERhdGFcbiAgICAgICAgfSA6IGNhY2hlRW50cnkudmFsdWVcbiAgICB9O1xufVxuYXN5bmMgZnVuY3Rpb24gdG9SZXNwb25zZUNhY2hlRW50cnkocmVzcG9uc2UpIHtcbiAgICB2YXIgX3Jlc3BvbnNlX3ZhbHVlLCBfcmVzcG9uc2VfdmFsdWUxO1xuICAgIGlmICghcmVzcG9uc2UpIHJldHVybiBudWxsO1xuICAgIHJldHVybiB7XG4gICAgICAgIGlzTWlzczogcmVzcG9uc2UuaXNNaXNzLFxuICAgICAgICBpc1N0YWxlOiByZXNwb25zZS5pc1N0YWxlLFxuICAgICAgICBjYWNoZUNvbnRyb2w6IHJlc3BvbnNlLmNhY2hlQ29udHJvbCxcbiAgICAgICAgaXNGYWxsYmFjazogcmVzcG9uc2UuaXNGYWxsYmFjayxcbiAgICAgICAgdmFsdWU6ICgoX3Jlc3BvbnNlX3ZhbHVlID0gcmVzcG9uc2UudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfcmVzcG9uc2VfdmFsdWUua2luZCkgPT09IF90eXBlcy5DYWNoZWRSb3V0ZUtpbmQuUEFHRVMgPyB7XG4gICAgICAgICAgICBraW5kOiBfdHlwZXMuQ2FjaGVkUm91dGVLaW5kLlBBR0VTLFxuICAgICAgICAgICAgaHRtbDogX3JlbmRlcnJlc3VsdC5kZWZhdWx0LmZyb21TdGF0aWMocmVzcG9uc2UudmFsdWUuaHRtbCwgX2NvbnN0YW50cy5IVE1MX0NPTlRFTlRfVFlQRV9IRUFERVIpLFxuICAgICAgICAgICAgcGFnZURhdGE6IHJlc3BvbnNlLnZhbHVlLnBhZ2VEYXRhLFxuICAgICAgICAgICAgaGVhZGVyczogcmVzcG9uc2UudmFsdWUuaGVhZGVycyxcbiAgICAgICAgICAgIHN0YXR1czogcmVzcG9uc2UudmFsdWUuc3RhdHVzXG4gICAgICAgIH0gOiAoKF9yZXNwb25zZV92YWx1ZTEgPSByZXNwb25zZS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9yZXNwb25zZV92YWx1ZTEua2luZCkgPT09IF90eXBlcy5DYWNoZWRSb3V0ZUtpbmQuQVBQX1BBR0UgPyB7XG4gICAgICAgICAgICBraW5kOiBfdHlwZXMuQ2FjaGVkUm91dGVLaW5kLkFQUF9QQUdFLFxuICAgICAgICAgICAgaHRtbDogX3JlbmRlcnJlc3VsdC5kZWZhdWx0LmZyb21TdGF0aWMocmVzcG9uc2UudmFsdWUuaHRtbCwgX2NvbnN0YW50cy5IVE1MX0NPTlRFTlRfVFlQRV9IRUFERVIpLFxuICAgICAgICAgICAgcnNjRGF0YTogcmVzcG9uc2UudmFsdWUucnNjRGF0YSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHJlc3BvbnNlLnZhbHVlLmhlYWRlcnMsXG4gICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnZhbHVlLnN0YXR1cyxcbiAgICAgICAgICAgIHBvc3Rwb25lZDogcmVzcG9uc2UudmFsdWUucG9zdHBvbmVkLFxuICAgICAgICAgICAgc2VnbWVudERhdGE6IHJlc3BvbnNlLnZhbHVlLnNlZ21lbnREYXRhXG4gICAgICAgIH0gOiByZXNwb25zZS52YWx1ZVxuICAgIH07XG59XG5mdW5jdGlvbiByb3V0ZUtpbmRUb0luY3JlbWVudGFsQ2FjaGVLaW5kKHJvdXRlS2luZCkge1xuICAgIHN3aXRjaChyb3V0ZUtpbmQpe1xuICAgICAgICBjYXNlIF9yb3V0ZWtpbmQuUm91dGVLaW5kLlBBR0VTOlxuICAgICAgICAgICAgcmV0dXJuIF90eXBlcy5JbmNyZW1lbnRhbENhY2hlS2luZC5QQUdFUztcbiAgICAgICAgY2FzZSBfcm91dGVraW5kLlJvdXRlS2luZC5BUFBfUEFHRTpcbiAgICAgICAgICAgIHJldHVybiBfdHlwZXMuSW5jcmVtZW50YWxDYWNoZUtpbmQuQVBQX1BBR0U7XG4gICAgICAgIGNhc2UgX3JvdXRla2luZC5Sb3V0ZUtpbmQuSU1BR0U6XG4gICAgICAgICAgICByZXR1cm4gX3R5cGVzLkluY3JlbWVudGFsQ2FjaGVLaW5kLklNQUdFO1xuICAgICAgICBjYXNlIF9yb3V0ZWtpbmQuUm91dGVLaW5kLkFQUF9ST1VURTpcbiAgICAgICAgICAgIHJldHVybiBfdHlwZXMuSW5jcmVtZW50YWxDYWNoZUtpbmQuQVBQX1JPVVRFO1xuICAgICAgICBjYXNlIF9yb3V0ZWtpbmQuUm91dGVLaW5kLlBBR0VTX0FQSTpcbiAgICAgICAgICAgIC8vIFBhZ2VzIFJvdXRlciBBUEkgcm91dGVzIGFyZSBub3QgY2FjaGVkIGluIHRoZSBpbmNyZW1lbnRhbCBjYWNoZS5cbiAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgcm91dGUga2luZCAke3JvdXRlS2luZH1gKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiRTY0XCIsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiByb3V0ZUtpbmQ7XG4gICAgfVxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD11dGlscy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/response-cache/utils.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/route-kind.js":
|
||
/*!*****************************************************!*\
|
||
!*** ./node_modules/next/dist/server/route-kind.js ***!
|
||
\*****************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"RouteKind\", ({\n enumerable: true,\n get: function() {\n return RouteKind;\n }\n}));\nvar RouteKind = /*#__PURE__*/ function(RouteKind) {\n /**\n * `PAGES` represents all the React pages that are under `pages/`.\n */ RouteKind[\"PAGES\"] = \"PAGES\";\n /**\n * `PAGES_API` represents all the API routes under `pages/api/`.\n */ RouteKind[\"PAGES_API\"] = \"PAGES_API\";\n /**\n * `APP_PAGE` represents all the React pages that are under `app/` with the\n * filename of `page.{j,t}s{,x}`.\n */ RouteKind[\"APP_PAGE\"] = \"APP_PAGE\";\n /**\n * `APP_ROUTE` represents all the API routes and metadata routes that are under `app/` with the\n * filename of `route.{j,t}s{,x}`.\n */ RouteKind[\"APP_ROUTE\"] = \"APP_ROUTE\";\n /**\n * `IMAGE` represents all the images that are generated by `next/image`.\n */ RouteKind[\"IMAGE\"] = \"IMAGE\";\n return RouteKind;\n}({});\n\n//# sourceMappingURL=route-kind.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1raW5kLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsNkNBQTRDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLElBQUksRUFBRSxHQUFHO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixJQUFJLEVBQUUsR0FBRztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxHQUFHOztBQUVKIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvcm91dGUta2luZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJvdXRlS2luZFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUm91dGVLaW5kO1xuICAgIH1cbn0pO1xudmFyIFJvdXRlS2luZCA9IC8qI19fUFVSRV9fKi8gZnVuY3Rpb24oUm91dGVLaW5kKSB7XG4gICAgLyoqXG4gICAqIGBQQUdFU2AgcmVwcmVzZW50cyBhbGwgdGhlIFJlYWN0IHBhZ2VzIHRoYXQgYXJlIHVuZGVyIGBwYWdlcy9gLlxuICAgKi8gUm91dGVLaW5kW1wiUEFHRVNcIl0gPSBcIlBBR0VTXCI7XG4gICAgLyoqXG4gICAqIGBQQUdFU19BUElgIHJlcHJlc2VudHMgYWxsIHRoZSBBUEkgcm91dGVzIHVuZGVyIGBwYWdlcy9hcGkvYC5cbiAgICovIFJvdXRlS2luZFtcIlBBR0VTX0FQSVwiXSA9IFwiUEFHRVNfQVBJXCI7XG4gICAgLyoqXG4gICAqIGBBUFBfUEFHRWAgcmVwcmVzZW50cyBhbGwgdGhlIFJlYWN0IHBhZ2VzIHRoYXQgYXJlIHVuZGVyIGBhcHAvYCB3aXRoIHRoZVxuICAgKiBmaWxlbmFtZSBvZiBgcGFnZS57aix0fXN7LHh9YC5cbiAgICovIFJvdXRlS2luZFtcIkFQUF9QQUdFXCJdID0gXCJBUFBfUEFHRVwiO1xuICAgIC8qKlxuICAgKiBgQVBQX1JPVVRFYCByZXByZXNlbnRzIGFsbCB0aGUgQVBJIHJvdXRlcyBhbmQgbWV0YWRhdGEgcm91dGVzIHRoYXQgYXJlIHVuZGVyIGBhcHAvYCB3aXRoIHRoZVxuICAgKiBmaWxlbmFtZSBvZiBgcm91dGUue2osdH1zeyx4fWAuXG4gICAqLyBSb3V0ZUtpbmRbXCJBUFBfUk9VVEVcIl0gPSBcIkFQUF9ST1VURVwiO1xuICAgIC8qKlxuICAgKiBgSU1BR0VgIHJlcHJlc2VudHMgYWxsIHRoZSBpbWFnZXMgdGhhdCBhcmUgZ2VuZXJhdGVkIGJ5IGBuZXh0L2ltYWdlYC5cbiAgICovIFJvdXRlS2luZFtcIklNQUdFXCJdID0gXCJJTUFHRVwiO1xuICAgIHJldHVybiBSb3V0ZUtpbmQ7XG59KHt9KTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cm91dGUta2luZC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/route-kind.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-dom.js":
|
||
/*!****************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-dom.js ***!
|
||
\****************************************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?8030\").vendored[\"react-rsc\"].ReactDOM;\n\n//# sourceMappingURL=react-dom.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3JzYy9yZWFjdC1kb20uanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYix3TEFBZ0Y7O0FBRWhGIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvcm91dGUtbW9kdWxlcy9hcHAtcGFnZS92ZW5kb3JlZC9yc2MvcmVhY3QtZG9tLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGUuY29tcGlsZWQnKS52ZW5kb3JlZFsncmVhY3QtcnNjJ10uUmVhY3RET007XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlYWN0LWRvbS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-dom.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.js":
|
||
/*!****************************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.js ***!
|
||
\****************************************************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?8030\").vendored[\"react-rsc\"].ReactJsxDevRuntime;\n\n//# sourceMappingURL=react-jsx-dev-runtime.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3JzYy9yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYixrTUFBMEY7O0FBRTFGIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvcm91dGUtbW9kdWxlcy9hcHAtcGFnZS92ZW5kb3JlZC9yc2MvcmVhY3QtanN4LWRldi1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGUuY29tcGlsZWQnKS52ZW5kb3JlZFsncmVhY3QtcnNjJ10uUmVhY3RKc3hEZXZSdW50aW1lO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js":
|
||
/*!************************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js ***!
|
||
\************************************************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?8030\").vendored[\"react-rsc\"].ReactJsxRuntime;\n\n//# sourceMappingURL=react-jsx-runtime.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3JzYy9yZWFjdC1qc3gtcnVudGltZS5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLCtMQUF1Rjs7QUFFdkYiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3JzYy9yZWFjdC1qc3gtcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlLmNvbXBpbGVkJykudmVuZG9yZWRbJ3JlYWN0LXJzYyddLlJlYWN0SnN4UnVudGltZTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVhY3QtanN4LXJ1bnRpbWUuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.js":
|
||
/*!**************************************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.js ***!
|
||
\**************************************************************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?8030\").vendored[\"react-rsc\"].ReactServerDOMWebpackServer;\n\n//# sourceMappingURL=react-server-dom-webpack-server.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3JzYy9yZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2stc2VydmVyLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsMk1BQW1HOztBQUVuRyIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL3JvdXRlLW1vZHVsZXMvYXBwLXBhZ2UvdmVuZG9yZWQvcnNjL3JlYWN0LXNlcnZlci1kb20td2VicGFjay1zZXJ2ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZS5jb21waWxlZCcpLnZlbmRvcmVkWydyZWFjdC1yc2MnXS5SZWFjdFNlcnZlckRPTVdlYnBhY2tTZXJ2ZXI7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlYWN0LXNlcnZlci1kb20td2VicGFjay1zZXJ2ZXIuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static.js":
|
||
/*!**************************************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static.js ***!
|
||
\**************************************************************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?8030\").vendored[\"react-rsc\"].ReactServerDOMWebpackStatic;\n\n//# sourceMappingURL=react-server-dom-webpack-static.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3JzYy9yZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2stc3RhdGljLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsMk1BQW1HOztBQUVuRyIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL3JvdXRlLW1vZHVsZXMvYXBwLXBhZ2UvdmVuZG9yZWQvcnNjL3JlYWN0LXNlcnZlci1kb20td2VicGFjay1zdGF0aWMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZS5jb21waWxlZCcpLnZlbmRvcmVkWydyZWFjdC1yc2MnXS5SZWFjdFNlcnZlckRPTVdlYnBhY2tTdGF0aWM7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlYWN0LXNlcnZlci1kb20td2VicGFjay1zdGF0aWMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js":
|
||
/*!************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js ***!
|
||
\************************************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?8030\").vendored[\"react-rsc\"].React;\n\n//# sourceMappingURL=react.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3JzYy9yZWFjdC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLHFMQUE2RTs7QUFFN0UiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3JzYy9yZWFjdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlLmNvbXBpbGVkJykudmVuZG9yZWRbJ3JlYWN0LXJzYyddLlJlYWN0O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZWFjdC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/route-modules/checks.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/route-modules/checks.js ***!
|
||
\***************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n isAppPageRouteModule: function() {\n return isAppPageRouteModule;\n },\n isAppRouteRouteModule: function() {\n return isAppRouteRouteModule;\n },\n isPagesAPIRouteModule: function() {\n return isPagesAPIRouteModule;\n },\n isPagesRouteModule: function() {\n return isPagesRouteModule;\n }\n});\nconst _routekind = __webpack_require__(/*! ../route-kind */ \"(rsc)/./node_modules/next/dist/server/route-kind.js\");\nfunction isAppRouteRouteModule(routeModule) {\n return routeModule.definition.kind === _routekind.RouteKind.APP_ROUTE;\n}\nfunction isAppPageRouteModule(routeModule) {\n return routeModule.definition.kind === _routekind.RouteKind.APP_PAGE;\n}\nfunction isPagesRouteModule(routeModule) {\n return routeModule.definition.kind === _routekind.RouteKind.PAGES;\n}\nfunction isPagesAPIRouteModule(routeModule) {\n return routeModule.definition.kind === _routekind.RouteKind.PAGES_API;\n}\n\n//# sourceMappingURL=checks.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2NoZWNrcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FLTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsbUJBQW1CLG1CQUFPLENBQUMsMEVBQWU7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvcm91dGUtbW9kdWxlcy9jaGVja3MuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBpc0FwcFBhZ2VSb3V0ZU1vZHVsZTogbnVsbCxcbiAgICBpc0FwcFJvdXRlUm91dGVNb2R1bGU6IG51bGwsXG4gICAgaXNQYWdlc0FQSVJvdXRlTW9kdWxlOiBudWxsLFxuICAgIGlzUGFnZXNSb3V0ZU1vZHVsZTogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBpc0FwcFBhZ2VSb3V0ZU1vZHVsZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpc0FwcFBhZ2VSb3V0ZU1vZHVsZTtcbiAgICB9LFxuICAgIGlzQXBwUm91dGVSb3V0ZU1vZHVsZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpc0FwcFJvdXRlUm91dGVNb2R1bGU7XG4gICAgfSxcbiAgICBpc1BhZ2VzQVBJUm91dGVNb2R1bGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaXNQYWdlc0FQSVJvdXRlTW9kdWxlO1xuICAgIH0sXG4gICAgaXNQYWdlc1JvdXRlTW9kdWxlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGlzUGFnZXNSb3V0ZU1vZHVsZTtcbiAgICB9XG59KTtcbmNvbnN0IF9yb3V0ZWtpbmQgPSByZXF1aXJlKFwiLi4vcm91dGUta2luZFwiKTtcbmZ1bmN0aW9uIGlzQXBwUm91dGVSb3V0ZU1vZHVsZShyb3V0ZU1vZHVsZSkge1xuICAgIHJldHVybiByb3V0ZU1vZHVsZS5kZWZpbml0aW9uLmtpbmQgPT09IF9yb3V0ZWtpbmQuUm91dGVLaW5kLkFQUF9ST1VURTtcbn1cbmZ1bmN0aW9uIGlzQXBwUGFnZVJvdXRlTW9kdWxlKHJvdXRlTW9kdWxlKSB7XG4gICAgcmV0dXJuIHJvdXRlTW9kdWxlLmRlZmluaXRpb24ua2luZCA9PT0gX3JvdXRla2luZC5Sb3V0ZUtpbmQuQVBQX1BBR0U7XG59XG5mdW5jdGlvbiBpc1BhZ2VzUm91dGVNb2R1bGUocm91dGVNb2R1bGUpIHtcbiAgICByZXR1cm4gcm91dGVNb2R1bGUuZGVmaW5pdGlvbi5raW5kID09PSBfcm91dGVraW5kLlJvdXRlS2luZC5QQUdFUztcbn1cbmZ1bmN0aW9uIGlzUGFnZXNBUElSb3V0ZU1vZHVsZShyb3V0ZU1vZHVsZSkge1xuICAgIHJldHVybiByb3V0ZU1vZHVsZS5kZWZpbml0aW9uLmtpbmQgPT09IF9yb3V0ZWtpbmQuUm91dGVLaW5kLlBBR0VTX0FQSTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2hlY2tzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/route-modules/checks.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/send-payload.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/next/dist/server/send-payload.js ***!
|
||
\*******************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n sendEtagResponse: function() {\n return sendEtagResponse;\n },\n sendRenderResult: function() {\n return sendRenderResult;\n }\n});\nconst _utils = __webpack_require__(/*! ../shared/lib/utils */ \"(rsc)/./node_modules/next/dist/shared/lib/utils.js\");\nconst _etag = __webpack_require__(/*! ./lib/etag */ \"(rsc)/./node_modules/next/dist/server/lib/etag.js\");\nconst _fresh = /*#__PURE__*/ _interop_require_default(__webpack_require__(/*! next/dist/compiled/fresh */ \"(rsc)/./node_modules/next/dist/compiled/fresh/index.js\"));\nconst _cachecontrol = __webpack_require__(/*! ./lib/cache-control */ \"(rsc)/./node_modules/next/dist/server/lib/cache-control.js\");\nconst _constants = __webpack_require__(/*! ../lib/constants */ \"(rsc)/./node_modules/next/dist/lib/constants.js\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction sendEtagResponse(req, res, etag) {\n if (etag) {\n /**\n * The server generating a 304 response MUST generate any of the\n * following header fields that would have been sent in a 200 (OK)\n * response to the same request: Cache-Control, Content-Location, Date,\n * ETag, Expires, and Vary. https://tools.ietf.org/html/rfc7232#section-4.1\n */ res.setHeader('ETag', etag);\n }\n if ((0, _fresh.default)(req.headers, {\n etag\n })) {\n res.statusCode = 304;\n res.end();\n return true;\n }\n return false;\n}\nasync function sendRenderResult({ req, res, result, generateEtags, poweredByHeader, cacheControl }) {\n if ((0, _utils.isResSent)(res)) {\n return;\n }\n if (poweredByHeader && result.contentType === _constants.HTML_CONTENT_TYPE_HEADER) {\n res.setHeader('X-Powered-By', 'Next.js');\n }\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (cacheControl && !res.getHeader('Cache-Control')) {\n res.setHeader('Cache-Control', (0, _cachecontrol.getCacheControlHeader)(cacheControl));\n }\n const payload = result.isDynamic ? null : result.toUnchunkedString();\n if (generateEtags && payload !== null) {\n const etag = (0, _etag.generateETag)(payload);\n if (sendEtagResponse(req, res, etag)) {\n return;\n }\n }\n if (!res.getHeader('Content-Type') && result.contentType) {\n res.setHeader('Content-Type', result.contentType);\n }\n if (payload) {\n res.setHeader('Content-Length', Buffer.byteLength(payload));\n }\n if (req.method === 'HEAD') {\n res.end(null);\n return;\n }\n if (payload !== null) {\n res.end(payload);\n return;\n }\n // Pipe the render result to the response after we get a writer for it.\n await result.pipeToNodeResponse(res);\n}\n\n//# sourceMappingURL=send-payload.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9zZW5kLXBheWxvYWQuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBR0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsZUFBZSxtQkFBTyxDQUFDLCtFQUFxQjtBQUM1QyxjQUFjLG1CQUFPLENBQUMscUVBQVk7QUFDbEMsc0RBQXNELG1CQUFPLENBQUMsd0ZBQTBCO0FBQ3hGLHNCQUFzQixtQkFBTyxDQUFDLHVGQUFxQjtBQUNuRCxtQkFBbUIsbUJBQU8sQ0FBQyx5RUFBa0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLGdFQUFnRTtBQUNsRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvc2VuZC1wYXlsb2FkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgc2VuZEV0YWdSZXNwb25zZTogbnVsbCxcbiAgICBzZW5kUmVuZGVyUmVzdWx0OiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIHNlbmRFdGFnUmVzcG9uc2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gc2VuZEV0YWdSZXNwb25zZTtcbiAgICB9LFxuICAgIHNlbmRSZW5kZXJSZXN1bHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gc2VuZFJlbmRlclJlc3VsdDtcbiAgICB9XG59KTtcbmNvbnN0IF91dGlscyA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3V0aWxzXCIpO1xuY29uc3QgX2V0YWcgPSByZXF1aXJlKFwiLi9saWIvZXRhZ1wiKTtcbmNvbnN0IF9mcmVzaCA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0KHJlcXVpcmUoXCJuZXh0L2Rpc3QvY29tcGlsZWQvZnJlc2hcIikpO1xuY29uc3QgX2NhY2hlY29udHJvbCA9IHJlcXVpcmUoXCIuL2xpYi9jYWNoZS1jb250cm9sXCIpO1xuY29uc3QgX2NvbnN0YW50cyA9IHJlcXVpcmUoXCIuLi9saWIvY29uc3RhbnRzXCIpO1xuZnVuY3Rpb24gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0KG9iaikge1xuICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIGRlZmF1bHQ6IG9ialxuICAgIH07XG59XG5mdW5jdGlvbiBzZW5kRXRhZ1Jlc3BvbnNlKHJlcSwgcmVzLCBldGFnKSB7XG4gICAgaWYgKGV0YWcpIHtcbiAgICAgICAgLyoqXG4gICAgICogVGhlIHNlcnZlciBnZW5lcmF0aW5nIGEgMzA0IHJlc3BvbnNlIE1VU1QgZ2VuZXJhdGUgYW55IG9mIHRoZVxuICAgICAqIGZvbGxvd2luZyBoZWFkZXIgZmllbGRzIHRoYXQgd291bGQgaGF2ZSBiZWVuIHNlbnQgaW4gYSAyMDAgKE9LKVxuICAgICAqIHJlc3BvbnNlIHRvIHRoZSBzYW1lIHJlcXVlc3Q6IENhY2hlLUNvbnRyb2wsIENvbnRlbnQtTG9jYXRpb24sIERhdGUsXG4gICAgICogRVRhZywgRXhwaXJlcywgYW5kIFZhcnkuIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMyI3NlY3Rpb24tNC4xXG4gICAgICovIHJlcy5zZXRIZWFkZXIoJ0VUYWcnLCBldGFnKTtcbiAgICB9XG4gICAgaWYgKCgwLCBfZnJlc2guZGVmYXVsdCkocmVxLmhlYWRlcnMsIHtcbiAgICAgICAgZXRhZ1xuICAgIH0pKSB7XG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMzA0O1xuICAgICAgICByZXMuZW5kKCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5hc3luYyBmdW5jdGlvbiBzZW5kUmVuZGVyUmVzdWx0KHsgcmVxLCByZXMsIHJlc3VsdCwgZ2VuZXJhdGVFdGFncywgcG93ZXJlZEJ5SGVhZGVyLCBjYWNoZUNvbnRyb2wgfSkge1xuICAgIGlmICgoMCwgX3V0aWxzLmlzUmVzU2VudCkocmVzKSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChwb3dlcmVkQnlIZWFkZXIgJiYgcmVzdWx0LmNvbnRlbnRUeXBlID09PSBfY29uc3RhbnRzLkhUTUxfQ09OVEVOVF9UWVBFX0hFQURFUikge1xuICAgICAgICByZXMuc2V0SGVhZGVyKCdYLVBvd2VyZWQtQnknLCAnTmV4dC5qcycpO1xuICAgIH1cbiAgICAvLyBJZiBjYWNoZSBjb250cm9sIGlzIGFscmVhZHkgc2V0IG9uIHRoZSByZXNwb25zZSB3ZSBkb24ndFxuICAgIC8vIG92ZXJyaWRlIGl0IHRvIGFsbG93IHVzZXJzIHRvIGN1c3RvbWl6ZSBpdCB2aWEgbmV4dC5jb25maWdcbiAgICBpZiAoY2FjaGVDb250cm9sICYmICFyZXMuZ2V0SGVhZGVyKCdDYWNoZS1Db250cm9sJykpIHtcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ2FjaGUtQ29udHJvbCcsICgwLCBfY2FjaGVjb250cm9sLmdldENhY2hlQ29udHJvbEhlYWRlcikoY2FjaGVDb250cm9sKSk7XG4gICAgfVxuICAgIGNvbnN0IHBheWxvYWQgPSByZXN1bHQuaXNEeW5hbWljID8gbnVsbCA6IHJlc3VsdC50b1VuY2h1bmtlZFN0cmluZygpO1xuICAgIGlmIChnZW5lcmF0ZUV0YWdzICYmIHBheWxvYWQgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgZXRhZyA9ICgwLCBfZXRhZy5nZW5lcmF0ZUVUYWcpKHBheWxvYWQpO1xuICAgICAgICBpZiAoc2VuZEV0YWdSZXNwb25zZShyZXEsIHJlcywgZXRhZykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoIXJlcy5nZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScpICYmIHJlc3VsdC5jb250ZW50VHlwZSkge1xuICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCByZXN1bHQuY29udGVudFR5cGUpO1xuICAgIH1cbiAgICBpZiAocGF5bG9hZCkge1xuICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LUxlbmd0aCcsIEJ1ZmZlci5ieXRlTGVuZ3RoKHBheWxvYWQpKTtcbiAgICB9XG4gICAgaWYgKHJlcS5tZXRob2QgPT09ICdIRUFEJykge1xuICAgICAgICByZXMuZW5kKG51bGwpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChwYXlsb2FkICE9PSBudWxsKSB7XG4gICAgICAgIHJlcy5lbmQocGF5bG9hZCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gUGlwZSB0aGUgcmVuZGVyIHJlc3VsdCB0byB0aGUgcmVzcG9uc2UgYWZ0ZXIgd2UgZ2V0IGEgd3JpdGVyIGZvciBpdC5cbiAgICBhd2FpdCByZXN1bHQucGlwZVRvTm9kZVJlc3BvbnNlKHJlcyk7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNlbmQtcGF5bG9hZC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/send-payload.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/stream-utils/encoded-tags.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/stream-utils/encoded-tags.js ***!
|
||
\********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"ENCODED_TAGS\", ({\n enumerable: true,\n get: function() {\n return ENCODED_TAGS;\n }\n}));\nconst ENCODED_TAGS = {\n // opening tags do not have the closing `>` since they can contain other attributes such as `<body className=''>`\n OPENING: {\n // <html\n HTML: new Uint8Array([\n 60,\n 104,\n 116,\n 109,\n 108\n ]),\n // <head\n HEAD: new Uint8Array([\n 60,\n 104,\n 101,\n 97,\n 100\n ]),\n // <body\n BODY: new Uint8Array([\n 60,\n 98,\n 111,\n 100,\n 121\n ])\n },\n CLOSED: {\n // </head>\n HEAD: new Uint8Array([\n 60,\n 47,\n 104,\n 101,\n 97,\n 100,\n 62\n ]),\n // </body>\n BODY: new Uint8Array([\n 60,\n 47,\n 98,\n 111,\n 100,\n 121,\n 62\n ]),\n // </html>\n HTML: new Uint8Array([\n 60,\n 47,\n 104,\n 116,\n 109,\n 108,\n 62\n ]),\n // </body></html>\n BODY_AND_HTML: new Uint8Array([\n 60,\n 47,\n 98,\n 111,\n 100,\n 121,\n 62,\n 60,\n 47,\n 104,\n 116,\n 109,\n 108,\n 62\n ])\n },\n META: {\n // Only the match the prefix cause the suffix can be different wether it's xml compatible or not \">\" or \"/>\"\n // <meta name=\"«nxt-icon»\"\n // This is a special mark that will be replaced by the icon insertion script tag.\n ICON_MARK: new Uint8Array([\n 60,\n 109,\n 101,\n 116,\n 97,\n 32,\n 110,\n 97,\n 109,\n 101,\n 61,\n 34,\n 194,\n 171,\n 110,\n 120,\n 116,\n 45,\n 105,\n 99,\n 111,\n 110,\n 194,\n 187,\n 34\n ])\n }\n};\n\n//# sourceMappingURL=encoded-tags.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9zdHJlYW0tdXRpbHMvZW5jb2RlZC10YWdzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsZ0RBQStDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9zdHJlYW0tdXRpbHMvZW5jb2RlZC10YWdzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRU5DT0RFRF9UQUdTXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBFTkNPREVEX1RBR1M7XG4gICAgfVxufSk7XG5jb25zdCBFTkNPREVEX1RBR1MgPSB7XG4gICAgLy8gb3BlbmluZyB0YWdzIGRvIG5vdCBoYXZlIHRoZSBjbG9zaW5nIGA+YCBzaW5jZSB0aGV5IGNhbiBjb250YWluIG90aGVyIGF0dHJpYnV0ZXMgc3VjaCBhcyBgPGJvZHkgY2xhc3NOYW1lPScnPmBcbiAgICBPUEVOSU5HOiB7XG4gICAgICAgIC8vIDxodG1sXG4gICAgICAgIEhUTUw6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgICAgICAgIDYwLFxuICAgICAgICAgICAgMTA0LFxuICAgICAgICAgICAgMTE2LFxuICAgICAgICAgICAgMTA5LFxuICAgICAgICAgICAgMTA4XG4gICAgICAgIF0pLFxuICAgICAgICAvLyA8aGVhZFxuICAgICAgICBIRUFEOiBuZXcgVWludDhBcnJheShbXG4gICAgICAgICAgICA2MCxcbiAgICAgICAgICAgIDEwNCxcbiAgICAgICAgICAgIDEwMSxcbiAgICAgICAgICAgIDk3LFxuICAgICAgICAgICAgMTAwXG4gICAgICAgIF0pLFxuICAgICAgICAvLyA8Ym9keVxuICAgICAgICBCT0RZOiBuZXcgVWludDhBcnJheShbXG4gICAgICAgICAgICA2MCxcbiAgICAgICAgICAgIDk4LFxuICAgICAgICAgICAgMTExLFxuICAgICAgICAgICAgMTAwLFxuICAgICAgICAgICAgMTIxXG4gICAgICAgIF0pXG4gICAgfSxcbiAgICBDTE9TRUQ6IHtcbiAgICAgICAgLy8gPC9oZWFkPlxuICAgICAgICBIRUFEOiBuZXcgVWludDhBcnJheShbXG4gICAgICAgICAgICA2MCxcbiAgICAgICAgICAgIDQ3LFxuICAgICAgICAgICAgMTA0LFxuICAgICAgICAgICAgMTAxLFxuICAgICAgICAgICAgOTcsXG4gICAgICAgICAgICAxMDAsXG4gICAgICAgICAgICA2MlxuICAgICAgICBdKSxcbiAgICAgICAgLy8gPC9ib2R5PlxuICAgICAgICBCT0RZOiBuZXcgVWludDhBcnJheShbXG4gICAgICAgICAgICA2MCxcbiAgICAgICAgICAgIDQ3LFxuICAgICAgICAgICAgOTgsXG4gICAgICAgICAgICAxMTEsXG4gICAgICAgICAgICAxMDAsXG4gICAgICAgICAgICAxMjEsXG4gICAgICAgICAgICA2MlxuICAgICAgICBdKSxcbiAgICAgICAgLy8gPC9odG1sPlxuICAgICAgICBIVE1MOiBuZXcgVWludDhBcnJheShbXG4gICAgICAgICAgICA2MCxcbiAgICAgICAgICAgIDQ3LFxuICAgICAgICAgICAgMTA0LFxuICAgICAgICAgICAgMTE2LFxuICAgICAgICAgICAgMTA5LFxuICAgICAgICAgICAgMTA4LFxuICAgICAgICAgICAgNjJcbiAgICAgICAgXSksXG4gICAgICAgIC8vIDwvYm9keT48L2h0bWw+XG4gICAgICAgIEJPRFlfQU5EX0hUTUw6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgICAgICAgIDYwLFxuICAgICAgICAgICAgNDcsXG4gICAgICAgICAgICA5OCxcbiAgICAgICAgICAgIDExMSxcbiAgICAgICAgICAgIDEwMCxcbiAgICAgICAgICAgIDEyMSxcbiAgICAgICAgICAgIDYyLFxuICAgICAgICAgICAgNjAsXG4gICAgICAgICAgICA0NyxcbiAgICAgICAgICAgIDEwNCxcbiAgICAgICAgICAgIDExNixcbiAgICAgICAgICAgIDEwOSxcbiAgICAgICAgICAgIDEwOCxcbiAgICAgICAgICAgIDYyXG4gICAgICAgIF0pXG4gICAgfSxcbiAgICBNRVRBOiB7XG4gICAgICAgIC8vIE9ubHkgdGhlIG1hdGNoIHRoZSBwcmVmaXggY2F1c2UgdGhlIHN1ZmZpeCBjYW4gYmUgZGlmZmVyZW50IHdldGhlciBpdCdzIHhtbCBjb21wYXRpYmxlIG9yIG5vdCBcIj5cIiBvciBcIi8+XCJcbiAgICAgICAgLy8gPG1ldGEgbmFtZT1cIsKrbnh0LWljb27Cu1wiXG4gICAgICAgIC8vIFRoaXMgaXMgYSBzcGVjaWFsIG1hcmsgdGhhdCB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSBpY29uIGluc2VydGlvbiBzY3JpcHQgdGFnLlxuICAgICAgICBJQ09OX01BUks6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgICAgICAgIDYwLFxuICAgICAgICAgICAgMTA5LFxuICAgICAgICAgICAgMTAxLFxuICAgICAgICAgICAgMTE2LFxuICAgICAgICAgICAgOTcsXG4gICAgICAgICAgICAzMixcbiAgICAgICAgICAgIDExMCxcbiAgICAgICAgICAgIDk3LFxuICAgICAgICAgICAgMTA5LFxuICAgICAgICAgICAgMTAxLFxuICAgICAgICAgICAgNjEsXG4gICAgICAgICAgICAzNCxcbiAgICAgICAgICAgIDE5NCxcbiAgICAgICAgICAgIDE3MSxcbiAgICAgICAgICAgIDExMCxcbiAgICAgICAgICAgIDEyMCxcbiAgICAgICAgICAgIDExNixcbiAgICAgICAgICAgIDQ1LFxuICAgICAgICAgICAgMTA1LFxuICAgICAgICAgICAgOTksXG4gICAgICAgICAgICAxMTEsXG4gICAgICAgICAgICAxMTAsXG4gICAgICAgICAgICAxOTQsXG4gICAgICAgICAgICAxODcsXG4gICAgICAgICAgICAzNFxuICAgICAgICBdKVxuICAgIH1cbn07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVuY29kZWQtdGFncy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/stream-utils/encoded-tags.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/stream-utils/node-web-streams-helper.js":
|
||
/*!*******************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/stream-utils/node-web-streams-helper.js ***!
|
||
\*******************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n chainStreams: function() {\n return chainStreams;\n },\n continueDynamicHTMLResume: function() {\n return continueDynamicHTMLResume;\n },\n continueDynamicPrerender: function() {\n return continueDynamicPrerender;\n },\n continueFizzStream: function() {\n return continueFizzStream;\n },\n continueStaticFallbackPrerender: function() {\n return continueStaticFallbackPrerender;\n },\n continueStaticPrerender: function() {\n return continueStaticPrerender;\n },\n createBufferedTransformStream: function() {\n return createBufferedTransformStream;\n },\n createDocumentClosingStream: function() {\n return createDocumentClosingStream;\n },\n createInstantTestScriptInsertionTransformStream: function() {\n return createInstantTestScriptInsertionTransformStream;\n },\n createRootLayoutValidatorStream: function() {\n return createRootLayoutValidatorStream;\n },\n createRuntimePrefetchTransformStream: function() {\n return createRuntimePrefetchTransformStream;\n },\n renderToInitialFizzStream: function() {\n return renderToInitialFizzStream;\n },\n streamFromBuffer: function() {\n return streamFromBuffer;\n },\n streamFromString: function() {\n return streamFromString;\n },\n streamToBuffer: function() {\n return streamToBuffer;\n },\n streamToString: function() {\n return streamToString;\n },\n streamToUint8Array: function() {\n return streamToUint8Array;\n }\n});\nconst _tracer = __webpack_require__(/*! ../lib/trace/tracer */ \"(rsc)/./node_modules/next/dist/server/lib/trace/tracer.js\");\nconst _constants = __webpack_require__(/*! ../lib/trace/constants */ \"(rsc)/./node_modules/next/dist/server/lib/trace/constants.js\");\nconst _detachedpromise = __webpack_require__(/*! ../../lib/detached-promise */ \"(rsc)/./node_modules/next/dist/lib/detached-promise.js\");\nconst _scheduler = __webpack_require__(/*! ../../lib/scheduler */ \"(rsc)/./node_modules/next/dist/lib/scheduler.js\");\nconst _encodedtags = __webpack_require__(/*! ./encoded-tags */ \"(rsc)/./node_modules/next/dist/server/stream-utils/encoded-tags.js\");\nconst _uint8arrayhelpers = __webpack_require__(/*! ./uint8array-helpers */ \"(rsc)/./node_modules/next/dist/server/stream-utils/uint8array-helpers.js\");\nconst _constants1 = __webpack_require__(/*! ../../shared/lib/errors/constants */ \"(rsc)/./node_modules/next/dist/shared/lib/errors/constants.js\");\nconst _approuterheaders = __webpack_require__(/*! ../../client/components/app-router-headers */ \"(rsc)/./node_modules/next/dist/client/components/app-router-headers.js\");\nconst _cachebustingsearchparam = __webpack_require__(/*! ../../shared/lib/router/utils/cache-busting-search-param */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/cache-busting-search-param.js\");\nfunction voidCatch() {\n// this catcher is designed to be used with pipeTo where we expect the underlying\n// pipe implementation to forward errors but we don't want the pipeTo promise to reject\n// and be unhandled\n}\n// We can share the same encoder instance everywhere\n// Notably we cannot do the same for TextDecoder because it is stateful\n// when handling streaming data\nconst encoder = new TextEncoder();\nfunction chainStreams(...streams) {\n // If we have no streams, return an empty stream. This behavior is\n // intentional as we're now providing the `RenderResult.EMPTY` value.\n if (streams.length === 0) {\n return new ReadableStream({\n start (controller) {\n controller.close();\n }\n });\n }\n // If we only have 1 stream we fast path it by returning just this stream\n if (streams.length === 1) {\n return streams[0];\n }\n const { readable, writable } = new TransformStream();\n // We always initiate pipeTo immediately. We know we have at least 2 streams\n // so we need to avoid closing the writable when this one finishes.\n let promise = streams[0].pipeTo(writable, {\n preventClose: true\n });\n let i = 1;\n for(; i < streams.length - 1; i++){\n const nextStream = streams[i];\n promise = promise.then(()=>nextStream.pipeTo(writable, {\n preventClose: true\n }));\n }\n // We can omit the length check because we halted before the last stream and there\n // is at least two streams so the lastStream here will always be defined\n const lastStream = streams[i];\n promise = promise.then(()=>lastStream.pipeTo(writable));\n // Catch any errors from the streams and ignore them, they will be handled\n // by whatever is consuming the readable stream.\n promise.catch(voidCatch);\n return readable;\n}\nfunction streamFromString(str) {\n return new ReadableStream({\n start (controller) {\n controller.enqueue(encoder.encode(str));\n controller.close();\n }\n });\n}\nfunction streamFromBuffer(chunk) {\n return new ReadableStream({\n start (controller) {\n controller.enqueue(chunk);\n controller.close();\n }\n });\n}\nasync function streamToChunks(stream) {\n const reader = stream.getReader();\n const chunks = [];\n while(true){\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n chunks.push(value);\n }\n return chunks;\n}\nfunction concatUint8Arrays(chunks) {\n const totalLength = chunks.reduce((sum, chunk)=>sum + chunk.length, 0);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of chunks){\n result.set(chunk, offset);\n offset += chunk.length;\n }\n return result;\n}\nasync function streamToUint8Array(stream) {\n return concatUint8Arrays(await streamToChunks(stream));\n}\nasync function streamToBuffer(stream) {\n return Buffer.concat(await streamToChunks(stream));\n}\nasync function streamToString(stream, signal) {\n const decoder = new TextDecoder('utf-8', {\n fatal: true\n });\n let string = '';\n for await (const chunk of stream){\n if (signal == null ? void 0 : signal.aborted) {\n return string;\n }\n string += decoder.decode(chunk, {\n stream: true\n });\n }\n string += decoder.decode();\n return string;\n}\nfunction createBufferedTransformStream(options = {}) {\n const { maxBufferByteLength = Infinity } = options;\n let bufferedChunks = [];\n let bufferByteLength = 0;\n let pending;\n const flush = (controller)=>{\n try {\n if (bufferedChunks.length === 0) {\n return;\n }\n const chunk = new Uint8Array(bufferByteLength);\n let copiedBytes = 0;\n for(let i = 0; i < bufferedChunks.length; i++){\n const bufferedChunk = bufferedChunks[i];\n chunk.set(bufferedChunk, copiedBytes);\n copiedBytes += bufferedChunk.byteLength;\n }\n // We just wrote all the buffered chunks so we need to reset the bufferedChunks array\n // and our bufferByteLength to prepare for the next round of buffered chunks\n bufferedChunks.length = 0;\n bufferByteLength = 0;\n controller.enqueue(chunk);\n } catch {\n // If an error occurs while enqueuing, it can't be due to this\n // transformer. It's most likely caused by the controller having been\n // errored (for example, if the stream was cancelled).\n }\n };\n const scheduleFlush = (controller)=>{\n if (pending) {\n return;\n }\n const detached = new _detachedpromise.DetachedPromise();\n pending = detached;\n (0, _scheduler.scheduleImmediate)(()=>{\n try {\n flush(controller);\n } finally{\n pending = undefined;\n detached.resolve();\n }\n });\n };\n return new TransformStream({\n transform (chunk, controller) {\n // Combine the previous buffer with the new chunk.\n bufferedChunks.push(chunk);\n bufferByteLength += chunk.byteLength;\n if (bufferByteLength >= maxBufferByteLength) {\n flush(controller);\n } else {\n scheduleFlush(controller);\n }\n },\n flush () {\n return pending == null ? void 0 : pending.promise;\n }\n });\n}\nfunction renderToInitialFizzStream({ ReactDOMServer, element, streamOptions }) {\n return (0, _tracer.getTracer)().trace(_constants.AppRenderSpan.renderToReadableStream, async ()=>ReactDOMServer.renderToReadableStream(element, streamOptions));\n}\nfunction createMetadataTransformStream(insert) {\n let chunkIndex = -1;\n let isMarkRemoved = false;\n return new TransformStream({\n async transform (chunk, controller) {\n let iconMarkIndex = -1;\n let closedHeadIndex = -1;\n chunkIndex++;\n if (isMarkRemoved) {\n controller.enqueue(chunk);\n return;\n }\n let iconMarkLength = 0;\n // Only search for the closed head tag once\n if (iconMarkIndex === -1) {\n iconMarkIndex = (0, _uint8arrayhelpers.indexOfUint8Array)(chunk, _encodedtags.ENCODED_TAGS.META.ICON_MARK);\n if (iconMarkIndex === -1) {\n controller.enqueue(chunk);\n return;\n } else {\n // When we found the `<meta name=\"«nxt-icon»\"` tag prefix, we will remove it from the chunk.\n // Its close tag could either be `/>` or `>`, checking the next char to ensure we cover both cases.\n iconMarkLength = _encodedtags.ENCODED_TAGS.META.ICON_MARK.length;\n // Check if next char is /, this is for xml mode.\n if (chunk[iconMarkIndex + iconMarkLength] === 47) {\n iconMarkLength += 2;\n } else {\n // The last char is `>`\n iconMarkLength++;\n }\n }\n }\n // Check if icon mark is inside <head> tag in the first chunk.\n if (chunkIndex === 0) {\n closedHeadIndex = (0, _uint8arrayhelpers.indexOfUint8Array)(chunk, _encodedtags.ENCODED_TAGS.CLOSED.HEAD);\n if (iconMarkIndex !== -1) {\n // The mark icon is located in the 1st chunk before the head tag.\n // We do not need to insert the script tag in this case because it's in the head.\n // Just remove the icon mark from the chunk.\n if (iconMarkIndex < closedHeadIndex) {\n const replaced = new Uint8Array(chunk.length - iconMarkLength);\n // Remove the icon mark from the chunk.\n replaced.set(chunk.subarray(0, iconMarkIndex));\n replaced.set(chunk.subarray(iconMarkIndex + iconMarkLength), iconMarkIndex);\n chunk = replaced;\n } else {\n // The icon mark is after the head tag, replace and insert the script tag at that position.\n const insertion = await insert();\n const encodedInsertion = encoder.encode(insertion);\n const insertionLength = encodedInsertion.length;\n const replaced = new Uint8Array(chunk.length - iconMarkLength + insertionLength);\n replaced.set(chunk.subarray(0, iconMarkIndex));\n replaced.set(encodedInsertion, iconMarkIndex);\n replaced.set(chunk.subarray(iconMarkIndex + iconMarkLength), iconMarkIndex + insertionLength);\n chunk = replaced;\n }\n isMarkRemoved = true;\n }\n // If there's no icon mark located, it will be handled later when if present in the following chunks.\n } else {\n // When it's appeared in the following chunks, we'll need to\n // remove the mark and then insert the script tag at that position.\n const insertion = await insert();\n const encodedInsertion = encoder.encode(insertion);\n const insertionLength = encodedInsertion.length;\n // Replace the icon mark with the hoist script or empty string.\n const replaced = new Uint8Array(chunk.length - iconMarkLength + insertionLength);\n // Set the first part of the chunk, before the icon mark.\n replaced.set(chunk.subarray(0, iconMarkIndex));\n // Set the insertion after the icon mark.\n replaced.set(encodedInsertion, iconMarkIndex);\n // Set the rest of the chunk after the icon mark.\n replaced.set(chunk.subarray(iconMarkIndex + iconMarkLength), iconMarkIndex + insertionLength);\n chunk = replaced;\n isMarkRemoved = true;\n }\n controller.enqueue(chunk);\n }\n });\n}\nfunction createHeadInsertionTransformStream(insert) {\n let inserted = false;\n // We need to track if this transform saw any bytes because if it didn't\n // we won't want to insert any server HTML at all\n let hasBytes = false;\n return new TransformStream({\n async transform (chunk, controller) {\n hasBytes = true;\n const insertion = await insert();\n if (inserted) {\n if (insertion) {\n const encodedInsertion = encoder.encode(insertion);\n controller.enqueue(encodedInsertion);\n }\n controller.enqueue(chunk);\n } else {\n // TODO (@Ethan-Arrowood): Replace the generic `indexOfUint8Array` method with something finely tuned for the subset of things actually being checked for.\n const index = (0, _uint8arrayhelpers.indexOfUint8Array)(chunk, _encodedtags.ENCODED_TAGS.CLOSED.HEAD);\n // In fully static rendering or non PPR rendering cases:\n // `/head>` will always be found in the chunk in first chunk rendering.\n if (index !== -1) {\n if (insertion) {\n const encodedInsertion = encoder.encode(insertion);\n // Get the total count of the bytes in the chunk and the insertion\n // e.g.\n // chunk = <head><meta charset=\"utf-8\"></head>\n // insertion = <script>...</script>\n // output = <head><meta charset=\"utf-8\"> [ <script>...</script> ] </head>\n const insertedHeadContent = new Uint8Array(chunk.length + encodedInsertion.length);\n // Append the first part of the chunk, before the head tag\n insertedHeadContent.set(chunk.slice(0, index));\n // Append the server inserted content\n insertedHeadContent.set(encodedInsertion, index);\n // Append the rest of the chunk\n insertedHeadContent.set(chunk.slice(index), index + encodedInsertion.length);\n controller.enqueue(insertedHeadContent);\n } else {\n controller.enqueue(chunk);\n }\n inserted = true;\n } else {\n // This will happens in PPR rendering during next start, when the page is partially rendered.\n // When the page resumes, the head tag will be found in the middle of the chunk.\n // Where we just need to append the insertion and chunk to the current stream.\n // e.g.\n // PPR-static: <head>...</head><body> [ resume content ] </body>\n // PPR-resume: [ insertion ] [ rest content ]\n if (insertion) {\n controller.enqueue(encoder.encode(insertion));\n }\n controller.enqueue(chunk);\n inserted = true;\n }\n }\n },\n async flush (controller) {\n // Check before closing if there's anything remaining to insert.\n if (hasBytes) {\n const insertion = await insert();\n if (insertion) {\n controller.enqueue(encoder.encode(insertion));\n }\n }\n }\n });\n}\nfunction createClientResumeScriptInsertionTransformStream() {\n const segmentPath = '/_full';\n const cacheBustingHeader = (0, _cachebustingsearchparam.computeCacheBustingSearchParam)('1', '/_full', undefined, undefined // headers[NEXT_URL]\n );\n const searchStr = `${_approuterheaders.NEXT_RSC_UNION_QUERY}=${cacheBustingHeader}`;\n const NEXT_CLIENT_RESUME_SCRIPT = `<script>__NEXT_CLIENT_RESUME=fetch(location.pathname+'?${searchStr}',{credentials:'same-origin',headers:{'${_approuterheaders.RSC_HEADER}': '1','${_approuterheaders.NEXT_ROUTER_PREFETCH_HEADER}': '1','${_approuterheaders.NEXT_ROUTER_SEGMENT_PREFETCH_HEADER}': '${segmentPath}'}})</script>`;\n let didAlreadyInsert = false;\n return new TransformStream({\n transform (chunk, controller) {\n if (didAlreadyInsert) {\n // Already inserted the script into the head. Pass through.\n controller.enqueue(chunk);\n return;\n }\n // TODO (@Ethan-Arrowood): Replace the generic `indexOfUint8Array` method with something finely tuned for the subset of things actually being checked for.\n const headClosingTagIndex = (0, _uint8arrayhelpers.indexOfUint8Array)(chunk, _encodedtags.ENCODED_TAGS.CLOSED.HEAD);\n if (headClosingTagIndex === -1) {\n // In fully static rendering or non PPR rendering cases:\n // `/head>` will always be found in the chunk in first chunk rendering.\n controller.enqueue(chunk);\n return;\n }\n const encodedInsertion = encoder.encode(NEXT_CLIENT_RESUME_SCRIPT);\n // Get the total count of the bytes in the chunk and the insertion\n // e.g.\n // chunk = <head><meta charset=\"utf-8\"></head>\n // insertion = <script>...</script>\n // output = <head><meta charset=\"utf-8\"> [ <script>...</script> ] </head>\n const insertedHeadContent = new Uint8Array(chunk.length + encodedInsertion.length);\n // Append the first part of the chunk, before the head tag\n insertedHeadContent.set(chunk.slice(0, headClosingTagIndex));\n // Append the server inserted content\n insertedHeadContent.set(encodedInsertion, headClosingTagIndex);\n // Append the rest of the chunk\n insertedHeadContent.set(chunk.slice(headClosingTagIndex), headClosingTagIndex + encodedInsertion.length);\n controller.enqueue(insertedHeadContent);\n didAlreadyInsert = true;\n }\n });\n}\nfunction createInstantTestScriptInsertionTransformStream(requestId) {\n // Kick off a fetch for the static RSC payload. This is the hydration\n // source for the locked static shell — same as the __NEXT_CLIENT_RESUME\n // fetch used for fallback routes, but with NEXT_INSTANT_PREFETCH_HEADER\n // so the server returns static-only data.\n //\n // The fetch promise is stored as self.__next_instant_test, which doubles\n // as the feature flag (truthy = instant test mode). The client processes\n // this as a fallback prerender payload for hydration.\n const segmentPath = '/_full';\n const cacheBustingHeader = (0, _cachebustingsearchparam.computeCacheBustingSearchParam)('1', segmentPath, undefined, undefined);\n const searchStr = `${_approuterheaders.NEXT_RSC_UNION_QUERY}=${cacheBustingHeader}`;\n // In dev mode, inject self.__next_r (request ID) so that HMR WebSocket\n // and debug channel initialization don't crash. The static shell\n // bypasses renderToFizzStream which normally injects this via\n // bootstrapScriptContent.\n const requestIdScript = requestId !== null ? `self.__next_r=${JSON.stringify(requestId)};` : '';\n const INSTANT_TEST_SCRIPT = `<script>${requestIdScript}self.__next_instant_test=fetch(location.pathname+'?${searchStr}',{credentials:'same-origin',headers:{'${_approuterheaders.RSC_HEADER}':'1','${_approuterheaders.NEXT_ROUTER_PREFETCH_HEADER}':'1','${_approuterheaders.NEXT_ROUTER_SEGMENT_PREFETCH_HEADER}':'${segmentPath}','${_approuterheaders.NEXT_INSTANT_PREFETCH_HEADER}':'1'}})</script>`;\n let didAlreadyInsert = false;\n return new TransformStream({\n transform (chunk, controller) {\n if (didAlreadyInsert) {\n // Already inserted the script into the head. Pass through.\n controller.enqueue(chunk);\n return;\n }\n // Find the opening <head tag (may have attributes like <head class=\"...\">)\n const headOpenIndex = (0, _uint8arrayhelpers.indexOfUint8Array)(chunk, _encodedtags.ENCODED_TAGS.OPENING.HEAD);\n if (headOpenIndex === -1) {\n controller.enqueue(chunk);\n return;\n }\n // Find the closing > of the <head ...> tag\n const headCloseAngle = chunk.indexOf(62, headOpenIndex + _encodedtags.ENCODED_TAGS.OPENING.HEAD.length);\n if (headCloseAngle === -1) {\n controller.enqueue(chunk);\n return;\n }\n const encodedInsertion = encoder.encode(INSTANT_TEST_SCRIPT);\n const insertionPoint = headCloseAngle + 1;\n // e.g.\n // chunk = <!DOCTYPE html><html><head><meta charset=\"utf-8\">...\n // insertion = <script>self.__next_instant_test=fetch(...)</script>\n // output = <!DOCTYPE html><html><head> [ <script>...</script> ] <meta charset=\"utf-8\">...\n const insertedHeadContent = new Uint8Array(chunk.length + encodedInsertion.length);\n insertedHeadContent.set(chunk.slice(0, insertionPoint));\n insertedHeadContent.set(encodedInsertion, insertionPoint);\n insertedHeadContent.set(chunk.slice(insertionPoint), insertionPoint + encodedInsertion.length);\n controller.enqueue(insertedHeadContent);\n didAlreadyInsert = true;\n },\n flush (controller) {\n // Append closing tags so the browser can parse the full document.\n controller.enqueue(_encodedtags.ENCODED_TAGS.CLOSED.BODY_AND_HTML);\n }\n });\n}\n// Suffix after main body content - scripts before </body>,\n// but wait for the major chunks to be enqueued.\nfunction createDeferredSuffixStream(suffix) {\n let flushed = false;\n let pending;\n const flush = (controller)=>{\n const detached = new _detachedpromise.DetachedPromise();\n pending = detached;\n (0, _scheduler.scheduleImmediate)(()=>{\n try {\n controller.enqueue(encoder.encode(suffix));\n } catch {\n // If an error occurs while enqueuing it can't be due to this\n // transformers fault. It's likely due to the controller being\n // errored due to the stream being cancelled.\n } finally{\n pending = undefined;\n detached.resolve();\n }\n });\n };\n return new TransformStream({\n transform (chunk, controller) {\n controller.enqueue(chunk);\n // If we've already flushed, we're done.\n if (flushed) return;\n // Schedule the flush to happen.\n flushed = true;\n flush(controller);\n },\n flush (controller) {\n if (pending) return pending.promise;\n if (flushed) return;\n // Flush now.\n controller.enqueue(encoder.encode(suffix));\n }\n });\n}\nfunction createFlightDataInjectionTransformStream(stream, delayDataUntilFirstHtmlChunk) {\n let htmlStreamFinished = false;\n let pull = null;\n let donePulling = false;\n function startOrContinuePulling(controller) {\n if (!pull) {\n pull = startPulling(controller);\n }\n return pull;\n }\n async function startPulling(controller) {\n const reader = stream.getReader();\n if (delayDataUntilFirstHtmlChunk) {\n // NOTE: streaming flush\n // We are buffering here for the inlined data stream because the\n // \"shell\" stream might be chunkenized again by the underlying stream\n // implementation, e.g. with a specific high-water mark. To ensure it's\n // the safe timing to pipe the data stream, this extra tick is\n // necessary.\n // We don't start reading until we've left the current Task to ensure\n // that it's inserted after flushing the shell. Note that this implementation\n // might get stale if impl details of Fizz change in the future.\n await (0, _scheduler.atLeastOneTask)();\n }\n try {\n while(true){\n const { done, value } = await reader.read();\n if (done) {\n donePulling = true;\n return;\n }\n // We want to prioritize HTML over RSC data.\n // The SSR render is based on the same RSC stream, so when we get a new RSC chunk,\n // we're likely to produce an HTML chunk as well, so give it a chance to flush first.\n if (!delayDataUntilFirstHtmlChunk && !htmlStreamFinished) {\n await (0, _scheduler.atLeastOneTask)();\n }\n controller.enqueue(value);\n }\n } catch (err) {\n controller.error(err);\n }\n }\n return new TransformStream({\n start (controller) {\n if (!delayDataUntilFirstHtmlChunk) {\n startOrContinuePulling(controller);\n }\n },\n transform (chunk, controller) {\n controller.enqueue(chunk);\n // Start the streaming if it hasn't already been started yet.\n if (delayDataUntilFirstHtmlChunk) {\n startOrContinuePulling(controller);\n }\n },\n flush (controller) {\n htmlStreamFinished = true;\n if (donePulling) {\n return;\n }\n return startOrContinuePulling(controller);\n }\n });\n}\nconst CLOSE_TAG = '</body></html>';\n/**\n * This transform stream moves the suffix to the end of the stream, so results\n * like `</body></html><script>...</script>` will be transformed to\n * `<script>...</script></body></html>`.\n */ function createMoveSuffixStream() {\n let foundSuffix = false;\n return new TransformStream({\n transform (chunk, controller) {\n if (foundSuffix) {\n return controller.enqueue(chunk);\n }\n const index = (0, _uint8arrayhelpers.indexOfUint8Array)(chunk, _encodedtags.ENCODED_TAGS.CLOSED.BODY_AND_HTML);\n if (index > -1) {\n foundSuffix = true;\n // If the whole chunk is the suffix, then don't write anything, it will\n // be written in the flush.\n if (chunk.length === _encodedtags.ENCODED_TAGS.CLOSED.BODY_AND_HTML.length) {\n return;\n }\n // Write out the part before the suffix.\n const before = chunk.slice(0, index);\n controller.enqueue(before);\n // In the case where the suffix is in the middle of the chunk, we need\n // to split the chunk into two parts.\n if (chunk.length > _encodedtags.ENCODED_TAGS.CLOSED.BODY_AND_HTML.length + index) {\n // Write out the part after the suffix.\n const after = chunk.slice(index + _encodedtags.ENCODED_TAGS.CLOSED.BODY_AND_HTML.length);\n controller.enqueue(after);\n }\n } else {\n controller.enqueue(chunk);\n }\n },\n flush (controller) {\n // Even if we didn't find the suffix, the HTML is not valid if we don't\n // add it, so insert it at the end.\n controller.enqueue(_encodedtags.ENCODED_TAGS.CLOSED.BODY_AND_HTML);\n }\n });\n}\nfunction createStripDocumentClosingTagsTransform() {\n return new TransformStream({\n transform (chunk, controller) {\n // We rely on the assumption that chunks will never break across a code unit.\n // This is reasonable because we currently concat all of React's output from a single\n // flush into one chunk before streaming it forward which means the chunk will represent\n // a single coherent utf-8 string. This is not safe to use if we change our streaming to no\n // longer do this large buffered chunk\n if ((0, _uint8arrayhelpers.isEquivalentUint8Arrays)(chunk, _encodedtags.ENCODED_TAGS.CLOSED.BODY_AND_HTML) || (0, _uint8arrayhelpers.isEquivalentUint8Arrays)(chunk, _encodedtags.ENCODED_TAGS.CLOSED.BODY) || (0, _uint8arrayhelpers.isEquivalentUint8Arrays)(chunk, _encodedtags.ENCODED_TAGS.CLOSED.HTML)) {\n // the entire chunk is the closing tags; return without enqueueing anything.\n return;\n }\n // We assume these tags will go at together at the end of the document and that\n // they won't appear anywhere else in the document. This is not really a safe assumption\n // but until we revamp our streaming infra this is a performant way to string the tags\n chunk = (0, _uint8arrayhelpers.removeFromUint8Array)(chunk, _encodedtags.ENCODED_TAGS.CLOSED.BODY);\n chunk = (0, _uint8arrayhelpers.removeFromUint8Array)(chunk, _encodedtags.ENCODED_TAGS.CLOSED.HTML);\n controller.enqueue(chunk);\n }\n });\n}\nfunction createHtmlDataDplIdTransformStream(dplId) {\n let didTransform = false;\n return new TransformStream({\n transform (chunk, controller) {\n if (didTransform) {\n controller.enqueue(chunk);\n return;\n }\n const htmlTagIndex = (0, _uint8arrayhelpers.indexOfUint8Array)(chunk, _encodedtags.ENCODED_TAGS.OPENING.HTML);\n if (htmlTagIndex === -1) {\n controller.enqueue(chunk);\n return;\n }\n // Insert the data-dpl-id attribute right after \"<html \"\n const insertionPoint = htmlTagIndex + _encodedtags.ENCODED_TAGS.OPENING.HTML.length;\n const attribute = ` data-dpl-id=\"${dplId}\"`;\n const encodedAttribute = encoder.encode(attribute);\n const modifiedChunk = new Uint8Array(chunk.length + encodedAttribute.length);\n // Copy everything before the insertion point\n modifiedChunk.set(chunk.subarray(0, insertionPoint));\n // Insert the attribute\n modifiedChunk.set(encodedAttribute, insertionPoint);\n // Copy everything after\n modifiedChunk.set(chunk.subarray(insertionPoint), insertionPoint + encodedAttribute.length);\n controller.enqueue(modifiedChunk);\n didTransform = true;\n }\n });\n}\nfunction createRootLayoutValidatorStream() {\n let foundHtml = false;\n let foundBody = false;\n return new TransformStream({\n async transform (chunk, controller) {\n // Peek into the streamed chunk to see if the tags are present.\n if (!foundHtml && (0, _uint8arrayhelpers.indexOfUint8Array)(chunk, _encodedtags.ENCODED_TAGS.OPENING.HTML) > -1) {\n foundHtml = true;\n }\n if (!foundBody && (0, _uint8arrayhelpers.indexOfUint8Array)(chunk, _encodedtags.ENCODED_TAGS.OPENING.BODY) > -1) {\n foundBody = true;\n }\n controller.enqueue(chunk);\n },\n flush (controller) {\n const missingTags = [];\n if (!foundHtml) missingTags.push('html');\n if (!foundBody) missingTags.push('body');\n if (!missingTags.length) return;\n controller.enqueue(encoder.encode(`<html id=\"__next_error__\">\n <template\n data-next-error-message=\"Missing ${missingTags.map((c)=>`<${c}>`).join(missingTags.length > 1 ? ' and ' : '')} tags in the root layout.\\nRead more at https://nextjs.org/docs/messages/missing-root-layout-tags\"\n data-next-error-digest=\"${_constants1.MISSING_ROOT_TAGS_ERROR}\"\n data-next-error-stack=\"\"\n ></template>\n `));\n }\n });\n}\nfunction chainTransformers(readable, transformers) {\n let stream = readable;\n for (const transformer of transformers){\n if (!transformer) continue;\n stream = stream.pipeThrough(transformer);\n }\n return stream;\n}\nasync function continueFizzStream(renderStream, { suffix, inlinedDataStream, isStaticGeneration, deploymentId, getServerInsertedHTML, getServerInsertedMetadata, validateRootLayout }) {\n // Suffix itself might contain close tags at the end, so we need to split it.\n const suffixUnclosed = suffix ? suffix.split(CLOSE_TAG, 1)[0] : null;\n if (isStaticGeneration) {\n // If we're generating static HTML we need to wait for it to resolve before continuing.\n await renderStream.allReady;\n } else {\n // Otherwise, we want to make sure Fizz is done with all microtasky work\n // before we start pulling the stream and cause a flush.\n await (0, _scheduler.waitAtLeastOneReactRenderTask)();\n }\n return chainTransformers(renderStream, [\n // Buffer everything to avoid flushing too frequently\n createBufferedTransformStream(),\n // Insert data-dpl-id attribute on the html tag\n deploymentId ? createHtmlDataDplIdTransformStream(deploymentId) : null,\n // Transform metadata\n createMetadataTransformStream(getServerInsertedMetadata),\n // Insert suffix content\n suffixUnclosed != null && suffixUnclosed.length > 0 ? createDeferredSuffixStream(suffixUnclosed) : null,\n // Insert the inlined data (Flight data, form state, etc.) stream into the HTML\n inlinedDataStream ? createFlightDataInjectionTransformStream(inlinedDataStream, true) : null,\n // Validate the root layout for missing html or body tags\n validateRootLayout ? createRootLayoutValidatorStream() : null,\n // Close tags should always be deferred to the end\n createMoveSuffixStream(),\n // Special head insertions\n // TODO-APP: Insert server side html to end of head in app layout rendering, to avoid\n // hydration errors. Remove this once it's ready to be handled by react itself.\n createHeadInsertionTransformStream(getServerInsertedHTML)\n ]);\n}\nasync function continueDynamicPrerender(prerenderStream, { getServerInsertedHTML, getServerInsertedMetadata, deploymentId }) {\n return chainTransformers(prerenderStream, [\n // Buffer everything to avoid flushing too frequently\n createBufferedTransformStream(),\n createStripDocumentClosingTagsTransform(),\n // Insert data-dpl-id attribute on the html tag\n deploymentId ? createHtmlDataDplIdTransformStream(deploymentId) : null,\n // Insert generated tags to head\n createHeadInsertionTransformStream(getServerInsertedHTML),\n // Transform metadata\n createMetadataTransformStream(getServerInsertedMetadata)\n ]);\n}\nasync function continueStaticPrerender(prerenderStream, { inlinedDataStream, getServerInsertedHTML, getServerInsertedMetadata, deploymentId }) {\n return chainTransformers(prerenderStream, [\n // Buffer everything to avoid flushing too frequently\n createBufferedTransformStream(),\n // Add build id comment to start of the HTML document (in export mode)\n // Insert data-dpl-id attribute on the html tag\n deploymentId ? createHtmlDataDplIdTransformStream(deploymentId) : null,\n // Insert generated tags to head\n createHeadInsertionTransformStream(getServerInsertedHTML),\n // Transform metadata\n createMetadataTransformStream(getServerInsertedMetadata),\n // Insert the inlined data (Flight data, form state, etc.) stream into the HTML\n createFlightDataInjectionTransformStream(inlinedDataStream, true),\n // Close tags should always be deferred to the end\n createMoveSuffixStream()\n ]);\n}\nasync function continueStaticFallbackPrerender(prerenderStream, { inlinedDataStream, getServerInsertedHTML, getServerInsertedMetadata, deploymentId }) {\n // Same as `continueStaticPrerender`, but also inserts an additional script\n // to instruct the client to start fetching the hydration data as early\n // as possible.\n return chainTransformers(prerenderStream, [\n // Buffer everything to avoid flushing too frequently\n createBufferedTransformStream(),\n // Insert data-dpl-id attribute on the html tag\n deploymentId ? createHtmlDataDplIdTransformStream(deploymentId) : null,\n // Insert generated tags to head\n createHeadInsertionTransformStream(getServerInsertedHTML),\n // Insert the client resume script into the head\n createClientResumeScriptInsertionTransformStream(),\n // Transform metadata\n createMetadataTransformStream(getServerInsertedMetadata),\n // Insert the inlined data (Flight data, form state, etc.) stream into the HTML\n createFlightDataInjectionTransformStream(inlinedDataStream, true),\n // Close tags should always be deferred to the end\n createMoveSuffixStream()\n ]);\n}\nasync function continueDynamicHTMLResume(renderStream, { delayDataUntilFirstHtmlChunk, inlinedDataStream, getServerInsertedHTML, getServerInsertedMetadata, deploymentId }) {\n return chainTransformers(renderStream, [\n // Buffer everything to avoid flushing too frequently\n createBufferedTransformStream(),\n // Insert data-dpl-id attribute on the html tag\n deploymentId ? createHtmlDataDplIdTransformStream(deploymentId) : null,\n // Insert generated tags to head\n createHeadInsertionTransformStream(getServerInsertedHTML),\n // Transform metadata\n createMetadataTransformStream(getServerInsertedMetadata),\n // Insert the inlined data (Flight data, form state, etc.) stream into the HTML\n createFlightDataInjectionTransformStream(inlinedDataStream, delayDataUntilFirstHtmlChunk),\n // Close tags should always be deferred to the end\n createMoveSuffixStream()\n ]);\n}\nfunction createDocumentClosingStream() {\n return streamFromString(CLOSE_TAG);\n}\nfunction createRuntimePrefetchTransformStream(sentinel, isPartial, staleTime) {\n const enc = new TextEncoder();\n // Search for: [<sentinel>]\n // Replace with: [<isPartial>,<staleTime>]\n const search = enc.encode(`[${sentinel}]`);\n const first = search[0];\n const replace = enc.encode(`[${isPartial},${staleTime}]`);\n const searchLen = search.length;\n let currentChunk = null;\n let found = false;\n function processChunk(controller, nextChunk) {\n if (found) {\n if (nextChunk) {\n controller.enqueue(nextChunk);\n }\n return;\n }\n if (currentChunk) {\n // We can't search past the index that can contain a full match\n let exclusiveUpperBound = currentChunk.length - (searchLen - 1);\n if (nextChunk) {\n // If we have any overflow bytes we can search up to the chunk's final byte\n exclusiveUpperBound += Math.min(nextChunk.length, searchLen - 1);\n }\n if (exclusiveUpperBound < 1) {\n // we can't match the current chunk.\n controller.enqueue(currentChunk);\n currentChunk = nextChunk // advance so we don't process this chunk again\n ;\n return;\n }\n let currentIndex = currentChunk.indexOf(first);\n // check the current candidate match if it is within the bounds of our search space for the currentChunk\n candidateLoop: while(-1 < currentIndex && currentIndex < exclusiveUpperBound){\n // We already know index 0 matches because we used indexOf to find the candidateIndex so we start at index 1\n let matchIndex = 1;\n while(matchIndex < searchLen){\n const candidateIndex = currentIndex + matchIndex;\n const candidateValue = candidateIndex < currentChunk.length ? currentChunk[candidateIndex] : nextChunk[candidateIndex - currentChunk.length];\n if (candidateValue !== search[matchIndex]) {\n // No match, reset and continue the search from the next position\n currentIndex = currentChunk.indexOf(first, currentIndex + 1);\n continue candidateLoop;\n }\n matchIndex++;\n }\n // We found a complete match. currentIndex is our starting point to replace the value.\n found = true;\n // enqueue everything up to the match\n controller.enqueue(currentChunk.subarray(0, currentIndex));\n // enqueue the replacement value\n controller.enqueue(replace);\n // If there are bytes in the currentChunk after the match enqueue them\n if (currentIndex + searchLen < currentChunk.length) {\n controller.enqueue(currentChunk.slice(currentIndex + searchLen));\n }\n // If we have a next chunk we enqueue it now\n if (nextChunk) {\n // if replacement spills over to the next chunk we first exclude the replaced bytes\n const overflowBytes = currentIndex + searchLen - currentChunk.length;\n const truncatedChunk = overflowBytes > 0 ? nextChunk.subarray(overflowBytes) : nextChunk;\n controller.enqueue(truncatedChunk);\n }\n // We are now in found mode and don't need to track currentChunk anymore\n currentChunk = null;\n return;\n }\n // No match found in this chunk, emit it and wait for the next one\n controller.enqueue(currentChunk);\n }\n // Advance to the next chunk\n currentChunk = nextChunk;\n }\n return new TransformStream({\n transform (chunk, controller) {\n processChunk(controller, chunk);\n },\n flush (controller) {\n processChunk(controller, null);\n }\n });\n}\n\n//# sourceMappingURL=node-web-streams-helper.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9zdHJlYW0tdXRpbHMvbm9kZS13ZWItc3RyZWFtcy1oZWxwZXIuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBa0JMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELGdCQUFnQixtQkFBTyxDQUFDLHNGQUFxQjtBQUM3QyxtQkFBbUIsbUJBQU8sQ0FBQyw0RkFBd0I7QUFDbkQseUJBQXlCLG1CQUFPLENBQUMsMEZBQTRCO0FBQzdELG1CQUFtQixtQkFBTyxDQUFDLDRFQUFxQjtBQUNoRCxxQkFBcUIsbUJBQU8sQ0FBQywwRkFBZ0I7QUFDN0MsMkJBQTJCLG1CQUFPLENBQUMsc0dBQXNCO0FBQ3pELG9CQUFvQixtQkFBTyxDQUFDLHdHQUFtQztBQUMvRCwwQkFBMEIsbUJBQU8sQ0FBQywwSEFBNEM7QUFDOUUsaUNBQWlDLG1CQUFPLENBQUMsc0pBQTBEO0FBQ25HO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixjQUFjO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQ7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDLE1BQU07QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELHlCQUF5QixFQUFFLGlEQUFpRDtBQUM3SCx3Q0FBd0Msb0NBQW9DO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRCxtSUFBbUk7QUFDckw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRCxnRUFBZ0U7QUFDM0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMERBQTBELG1GQUFtRjtBQUM3STtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtFQUFrRSxtRkFBbUY7QUFDcko7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RCxpSEFBaUg7QUFDMUs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsU0FBUztBQUMzQztBQUNBLG1DQUFtQyxVQUFVLEdBQUcsVUFBVTtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvc3RyZWFtLXV0aWxzL25vZGUtd2ViLXN0cmVhbXMtaGVscGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgY2hhaW5TdHJlYW1zOiBudWxsLFxuICAgIGNvbnRpbnVlRHluYW1pY0hUTUxSZXN1bWU6IG51bGwsXG4gICAgY29udGludWVEeW5hbWljUHJlcmVuZGVyOiBudWxsLFxuICAgIGNvbnRpbnVlRml6elN0cmVhbTogbnVsbCxcbiAgICBjb250aW51ZVN0YXRpY0ZhbGxiYWNrUHJlcmVuZGVyOiBudWxsLFxuICAgIGNvbnRpbnVlU3RhdGljUHJlcmVuZGVyOiBudWxsLFxuICAgIGNyZWF0ZUJ1ZmZlcmVkVHJhbnNmb3JtU3RyZWFtOiBudWxsLFxuICAgIGNyZWF0ZURvY3VtZW50Q2xvc2luZ1N0cmVhbTogbnVsbCxcbiAgICBjcmVhdGVJbnN0YW50VGVzdFNjcmlwdEluc2VydGlvblRyYW5zZm9ybVN0cmVhbTogbnVsbCxcbiAgICBjcmVhdGVSb290TGF5b3V0VmFsaWRhdG9yU3RyZWFtOiBudWxsLFxuICAgIGNyZWF0ZVJ1bnRpbWVQcmVmZXRjaFRyYW5zZm9ybVN0cmVhbTogbnVsbCxcbiAgICByZW5kZXJUb0luaXRpYWxGaXp6U3RyZWFtOiBudWxsLFxuICAgIHN0cmVhbUZyb21CdWZmZXI6IG51bGwsXG4gICAgc3RyZWFtRnJvbVN0cmluZzogbnVsbCxcbiAgICBzdHJlYW1Ub0J1ZmZlcjogbnVsbCxcbiAgICBzdHJlYW1Ub1N0cmluZzogbnVsbCxcbiAgICBzdHJlYW1Ub1VpbnQ4QXJyYXk6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgY2hhaW5TdHJlYW1zOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNoYWluU3RyZWFtcztcbiAgICB9LFxuICAgIGNvbnRpbnVlRHluYW1pY0hUTUxSZXN1bWU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY29udGludWVEeW5hbWljSFRNTFJlc3VtZTtcbiAgICB9LFxuICAgIGNvbnRpbnVlRHluYW1pY1ByZXJlbmRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjb250aW51ZUR5bmFtaWNQcmVyZW5kZXI7XG4gICAgfSxcbiAgICBjb250aW51ZUZpenpTdHJlYW06IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY29udGludWVGaXp6U3RyZWFtO1xuICAgIH0sXG4gICAgY29udGludWVTdGF0aWNGYWxsYmFja1ByZXJlbmRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjb250aW51ZVN0YXRpY0ZhbGxiYWNrUHJlcmVuZGVyO1xuICAgIH0sXG4gICAgY29udGludWVTdGF0aWNQcmVyZW5kZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY29udGludWVTdGF0aWNQcmVyZW5kZXI7XG4gICAgfSxcbiAgICBjcmVhdGVCdWZmZXJlZFRyYW5zZm9ybVN0cmVhbTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVCdWZmZXJlZFRyYW5zZm9ybVN0cmVhbTtcbiAgICB9LFxuICAgIGNyZWF0ZURvY3VtZW50Q2xvc2luZ1N0cmVhbTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVEb2N1bWVudENsb3NpbmdTdHJlYW07XG4gICAgfSxcbiAgICBjcmVhdGVJbnN0YW50VGVzdFNjcmlwdEluc2VydGlvblRyYW5zZm9ybVN0cmVhbTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVJbnN0YW50VGVzdFNjcmlwdEluc2VydGlvblRyYW5zZm9ybVN0cmVhbTtcbiAgICB9LFxuICAgIGNyZWF0ZVJvb3RMYXlvdXRWYWxpZGF0b3JTdHJlYW06IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlUm9vdExheW91dFZhbGlkYXRvclN0cmVhbTtcbiAgICB9LFxuICAgIGNyZWF0ZVJ1bnRpbWVQcmVmZXRjaFRyYW5zZm9ybVN0cmVhbTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVSdW50aW1lUHJlZmV0Y2hUcmFuc2Zvcm1TdHJlYW07XG4gICAgfSxcbiAgICByZW5kZXJUb0luaXRpYWxGaXp6U3RyZWFtOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHJlbmRlclRvSW5pdGlhbEZpenpTdHJlYW07XG4gICAgfSxcbiAgICBzdHJlYW1Gcm9tQnVmZmVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHN0cmVhbUZyb21CdWZmZXI7XG4gICAgfSxcbiAgICBzdHJlYW1Gcm9tU3RyaW5nOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHN0cmVhbUZyb21TdHJpbmc7XG4gICAgfSxcbiAgICBzdHJlYW1Ub0J1ZmZlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzdHJlYW1Ub0J1ZmZlcjtcbiAgICB9LFxuICAgIHN0cmVhbVRvU3RyaW5nOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHN0cmVhbVRvU3RyaW5nO1xuICAgIH0sXG4gICAgc3RyZWFtVG9VaW50OEFycmF5OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHN0cmVhbVRvVWludDhBcnJheTtcbiAgICB9XG59KTtcbmNvbnN0IF90cmFjZXIgPSByZXF1aXJlKFwiLi4vbGliL3RyYWNlL3RyYWNlclwiKTtcbmNvbnN0IF9jb25zdGFudHMgPSByZXF1aXJlKFwiLi4vbGliL3RyYWNlL2NvbnN0YW50c1wiKTtcbmNvbnN0IF9kZXRhY2hlZHByb21pc2UgPSByZXF1aXJlKFwiLi4vLi4vbGliL2RldGFjaGVkLXByb21pc2VcIik7XG5jb25zdCBfc2NoZWR1bGVyID0gcmVxdWlyZShcIi4uLy4uL2xpYi9zY2hlZHVsZXJcIik7XG5jb25zdCBfZW5jb2RlZHRhZ3MgPSByZXF1aXJlKFwiLi9lbmNvZGVkLXRhZ3NcIik7XG5jb25zdCBfdWludDhhcnJheWhlbHBlcnMgPSByZXF1aXJlKFwiLi91aW50OGFycmF5LWhlbHBlcnNcIik7XG5jb25zdCBfY29uc3RhbnRzMSA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvbGliL2Vycm9ycy9jb25zdGFudHNcIik7XG5jb25zdCBfYXBwcm91dGVyaGVhZGVycyA9IHJlcXVpcmUoXCIuLi8uLi9jbGllbnQvY29tcG9uZW50cy9hcHAtcm91dGVyLWhlYWRlcnNcIik7XG5jb25zdCBfY2FjaGVidXN0aW5nc2VhcmNocGFyYW0gPSByZXF1aXJlKFwiLi4vLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvY2FjaGUtYnVzdGluZy1zZWFyY2gtcGFyYW1cIik7XG5mdW5jdGlvbiB2b2lkQ2F0Y2goKSB7XG4vLyB0aGlzIGNhdGNoZXIgaXMgZGVzaWduZWQgdG8gYmUgdXNlZCB3aXRoIHBpcGVUbyB3aGVyZSB3ZSBleHBlY3QgdGhlIHVuZGVybHlpbmdcbi8vIHBpcGUgaW1wbGVtZW50YXRpb24gdG8gZm9yd2FyZCBlcnJvcnMgYnV0IHdlIGRvbid0IHdhbnQgdGhlIHBpcGVUbyBwcm9taXNlIHRvIHJlamVjdFxuLy8gYW5kIGJlIHVuaGFuZGxlZFxufVxuLy8gV2UgY2FuIHNoYXJlIHRoZSBzYW1lIGVuY29kZXIgaW5zdGFuY2UgZXZlcnl3aGVyZVxuLy8gTm90YWJseSB3ZSBjYW5ub3QgZG8gdGhlIHNhbWUgZm9yIFRleHREZWNvZGVyIGJlY2F1c2UgaXQgaXMgc3RhdGVmdWxcbi8vIHdoZW4gaGFuZGxpbmcgc3RyZWFtaW5nIGRhdGFcbmNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcbmZ1bmN0aW9uIGNoYWluU3RyZWFtcyguLi5zdHJlYW1zKSB7XG4gICAgLy8gSWYgd2UgaGF2ZSBubyBzdHJlYW1zLCByZXR1cm4gYW4gZW1wdHkgc3RyZWFtLiBUaGlzIGJlaGF2aW9yIGlzXG4gICAgLy8gaW50ZW50aW9uYWwgYXMgd2UncmUgbm93IHByb3ZpZGluZyB0aGUgYFJlbmRlclJlc3VsdC5FTVBUWWAgdmFsdWUuXG4gICAgaWYgKHN0cmVhbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe1xuICAgICAgICAgICAgc3RhcnQgKGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBJZiB3ZSBvbmx5IGhhdmUgMSBzdHJlYW0gd2UgZmFzdCBwYXRoIGl0IGJ5IHJldHVybmluZyBqdXN0IHRoaXMgc3RyZWFtXG4gICAgaWYgKHN0cmVhbXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiBzdHJlYW1zWzBdO1xuICAgIH1cbiAgICBjb25zdCB7IHJlYWRhYmxlLCB3cml0YWJsZSB9ID0gbmV3IFRyYW5zZm9ybVN0cmVhbSgpO1xuICAgIC8vIFdlIGFsd2F5cyBpbml0aWF0ZSBwaXBlVG8gaW1tZWRpYXRlbHkuIFdlIGtub3cgd2UgaGF2ZSBhdCBsZWFzdCAyIHN0cmVhbXNcbiAgICAvLyBzbyB3ZSBuZWVkIHRvIGF2b2lkIGNsb3NpbmcgdGhlIHdyaXRhYmxlIHdoZW4gdGhpcyBvbmUgZmluaXNoZXMuXG4gICAgbGV0IHByb21pc2UgPSBzdHJlYW1zWzBdLnBpcGVUbyh3cml0YWJsZSwge1xuICAgICAgICBwcmV2ZW50Q2xvc2U6IHRydWVcbiAgICB9KTtcbiAgICBsZXQgaSA9IDE7XG4gICAgZm9yKDsgaSA8IHN0cmVhbXMubGVuZ3RoIC0gMTsgaSsrKXtcbiAgICAgICAgY29uc3QgbmV4dFN0cmVhbSA9IHN0cmVhbXNbaV07XG4gICAgICAgIHByb21pc2UgPSBwcm9taXNlLnRoZW4oKCk9Pm5leHRTdHJlYW0ucGlwZVRvKHdyaXRhYmxlLCB7XG4gICAgICAgICAgICAgICAgcHJldmVudENsb3NlOiB0cnVlXG4gICAgICAgICAgICB9KSk7XG4gICAgfVxuICAgIC8vIFdlIGNhbiBvbWl0IHRoZSBsZW5ndGggY2hlY2sgYmVjYXVzZSB3ZSBoYWx0ZWQgYmVmb3JlIHRoZSBsYXN0IHN0cmVhbSBhbmQgdGhlcmVcbiAgICAvLyBpcyBhdCBsZWFzdCB0d28gc3RyZWFtcyBzbyB0aGUgbGFzdFN0cmVhbSBoZXJlIHdpbGwgYWx3YXlzIGJlIGRlZmluZWRcbiAgICBjb25zdCBsYXN0U3RyZWFtID0gc3RyZWFtc1tpXTtcbiAgICBwcm9taXNlID0gcHJvbWlzZS50aGVuKCgpPT5sYXN0U3RyZWFtLnBpcGVUbyh3cml0YWJsZSkpO1xuICAgIC8vIENhdGNoIGFueSBlcnJvcnMgZnJvbSB0aGUgc3RyZWFtcyBhbmQgaWdub3JlIHRoZW0sIHRoZXkgd2lsbCBiZSBoYW5kbGVkXG4gICAgLy8gYnkgd2hhdGV2ZXIgaXMgY29uc3VtaW5nIHRoZSByZWFkYWJsZSBzdHJlYW0uXG4gICAgcHJvbWlzZS5jYXRjaCh2b2lkQ2F0Y2gpO1xuICAgIHJldHVybiByZWFkYWJsZTtcbn1cbmZ1bmN0aW9uIHN0cmVhbUZyb21TdHJpbmcoc3RyKSB7XG4gICAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgICAgIHN0YXJ0IChjb250cm9sbGVyKSB7XG4gICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoZW5jb2Rlci5lbmNvZGUoc3RyKSk7XG4gICAgICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHN0cmVhbUZyb21CdWZmZXIoY2h1bmspIHtcbiAgICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtcbiAgICAgICAgc3RhcnQgKGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XG4gICAgICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmFzeW5jIGZ1bmN0aW9uIHN0cmVhbVRvQ2h1bmtzKHN0cmVhbSkge1xuICAgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTtcbiAgICBjb25zdCBjaHVua3MgPSBbXTtcbiAgICB3aGlsZSh0cnVlKXtcbiAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKTtcbiAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNodW5rcy5wdXNoKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIGNodW5rcztcbn1cbmZ1bmN0aW9uIGNvbmNhdFVpbnQ4QXJyYXlzKGNodW5rcykge1xuICAgIGNvbnN0IHRvdGFsTGVuZ3RoID0gY2h1bmtzLnJlZHVjZSgoc3VtLCBjaHVuayk9PnN1bSArIGNodW5rLmxlbmd0aCwgMCk7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IFVpbnQ4QXJyYXkodG90YWxMZW5ndGgpO1xuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIGZvciAoY29uc3QgY2h1bmsgb2YgY2h1bmtzKXtcbiAgICAgICAgcmVzdWx0LnNldChjaHVuaywgb2Zmc2V0KTtcbiAgICAgICAgb2Zmc2V0ICs9IGNodW5rLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmFzeW5jIGZ1bmN0aW9uIHN0cmVhbVRvVWludDhBcnJheShzdHJlYW0pIHtcbiAgICByZXR1cm4gY29uY2F0VWludDhBcnJheXMoYXdhaXQgc3RyZWFtVG9DaHVua3Moc3RyZWFtKSk7XG59XG5hc3luYyBmdW5jdGlvbiBzdHJlYW1Ub0J1ZmZlcihzdHJlYW0pIHtcbiAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChhd2FpdCBzdHJlYW1Ub0NodW5rcyhzdHJlYW0pKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIHN0cmVhbVRvU3RyaW5nKHN0cmVhbSwgc2lnbmFsKSB7XG4gICAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigndXRmLTgnLCB7XG4gICAgICAgIGZhdGFsOiB0cnVlXG4gICAgfSk7XG4gICAgbGV0IHN0cmluZyA9ICcnO1xuICAgIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2Ygc3RyZWFtKXtcbiAgICAgICAgaWYgKHNpZ25hbCA9PSBudWxsID8gdm9pZCAwIDogc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgICAgc3RyaW5nICs9IGRlY29kZXIuZGVjb2RlKGNodW5rLCB7XG4gICAgICAgICAgICBzdHJlYW06IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHN0cmluZyArPSBkZWNvZGVyLmRlY29kZSgpO1xuICAgIHJldHVybiBzdHJpbmc7XG59XG5mdW5jdGlvbiBjcmVhdGVCdWZmZXJlZFRyYW5zZm9ybVN0cmVhbShvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCB7IG1heEJ1ZmZlckJ5dGVMZW5ndGggPSBJbmZpbml0eSB9ID0gb3B0aW9ucztcbiAgICBsZXQgYnVmZmVyZWRDaHVua3MgPSBbXTtcbiAgICBsZXQgYnVmZmVyQnl0ZUxlbmd0aCA9IDA7XG4gICAgbGV0IHBlbmRpbmc7XG4gICAgY29uc3QgZmx1c2ggPSAoY29udHJvbGxlcik9PntcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChidWZmZXJlZENodW5rcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBjaHVuayA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlckJ5dGVMZW5ndGgpO1xuICAgICAgICAgICAgbGV0IGNvcGllZEJ5dGVzID0gMDtcbiAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBidWZmZXJlZENodW5rcy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICAgICAgY29uc3QgYnVmZmVyZWRDaHVuayA9IGJ1ZmZlcmVkQ2h1bmtzW2ldO1xuICAgICAgICAgICAgICAgIGNodW5rLnNldChidWZmZXJlZENodW5rLCBjb3BpZWRCeXRlcyk7XG4gICAgICAgICAgICAgICAgY29waWVkQnl0ZXMgKz0gYnVmZmVyZWRDaHVuay5ieXRlTGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gV2UganVzdCB3cm90ZSBhbGwgdGhlIGJ1ZmZlcmVkIGNodW5rcyBzbyB3ZSBuZWVkIHRvIHJlc2V0IHRoZSBidWZmZXJlZENodW5rcyBhcnJheVxuICAgICAgICAgICAgLy8gYW5kIG91ciBidWZmZXJCeXRlTGVuZ3RoIHRvIHByZXBhcmUgZm9yIHRoZSBuZXh0IHJvdW5kIG9mIGJ1ZmZlcmVkIGNodW5rc1xuICAgICAgICAgICAgYnVmZmVyZWRDaHVua3MubGVuZ3RoID0gMDtcbiAgICAgICAgICAgIGJ1ZmZlckJ5dGVMZW5ndGggPSAwO1xuICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTtcbiAgICAgICAgfSBjYXRjaCAge1xuICAgICAgICAvLyBJZiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgZW5xdWV1aW5nLCBpdCBjYW4ndCBiZSBkdWUgdG8gdGhpc1xuICAgICAgICAvLyB0cmFuc2Zvcm1lci4gSXQncyBtb3N0IGxpa2VseSBjYXVzZWQgYnkgdGhlIGNvbnRyb2xsZXIgaGF2aW5nIGJlZW5cbiAgICAgICAgLy8gZXJyb3JlZCAoZm9yIGV4YW1wbGUsIGlmIHRoZSBzdHJlYW0gd2FzIGNhbmNlbGxlZCkuXG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IHNjaGVkdWxlRmx1c2ggPSAoY29udHJvbGxlcik9PntcbiAgICAgICAgaWYgKHBlbmRpbmcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkZXRhY2hlZCA9IG5ldyBfZGV0YWNoZWRwcm9taXNlLkRldGFjaGVkUHJvbWlzZSgpO1xuICAgICAgICBwZW5kaW5nID0gZGV0YWNoZWQ7XG4gICAgICAgICgwLCBfc2NoZWR1bGVyLnNjaGVkdWxlSW1tZWRpYXRlKSgoKT0+e1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmbHVzaChjb250cm9sbGVyKTtcbiAgICAgICAgICAgIH0gZmluYWxseXtcbiAgICAgICAgICAgICAgICBwZW5kaW5nID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGRldGFjaGVkLnJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7XG4gICAgICAgIHRyYW5zZm9ybSAoY2h1bmssIGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIC8vIENvbWJpbmUgdGhlIHByZXZpb3VzIGJ1ZmZlciB3aXRoIHRoZSBuZXcgY2h1bmsuXG4gICAgICAgICAgICBidWZmZXJlZENodW5rcy5wdXNoKGNodW5rKTtcbiAgICAgICAgICAgIGJ1ZmZlckJ5dGVMZW5ndGggKz0gY2h1bmsuYnl0ZUxlbmd0aDtcbiAgICAgICAgICAgIGlmIChidWZmZXJCeXRlTGVuZ3RoID49IG1heEJ1ZmZlckJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBmbHVzaChjb250cm9sbGVyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2NoZWR1bGVGbHVzaChjb250cm9sbGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZmx1c2ggKCkge1xuICAgICAgICAgICAgcmV0dXJuIHBlbmRpbmcgPT0gbnVsbCA/IHZvaWQgMCA6IHBlbmRpbmcucHJvbWlzZTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuZnVuY3Rpb24gcmVuZGVyVG9Jbml0aWFsRml6elN0cmVhbSh7IFJlYWN0RE9NU2VydmVyLCBlbGVtZW50LCBzdHJlYW1PcHRpb25zIH0pIHtcbiAgICByZXR1cm4gKDAsIF90cmFjZXIuZ2V0VHJhY2VyKSgpLnRyYWNlKF9jb25zdGFudHMuQXBwUmVuZGVyU3Bhbi5yZW5kZXJUb1JlYWRhYmxlU3RyZWFtLCBhc3luYyAoKT0+UmVhY3RET01TZXJ2ZXIucmVuZGVyVG9SZWFkYWJsZVN0cmVhbShlbGVtZW50LCBzdHJlYW1PcHRpb25zKSk7XG59XG5mdW5jdGlvbiBjcmVhdGVNZXRhZGF0YVRyYW5zZm9ybVN0cmVhbShpbnNlcnQpIHtcbiAgICBsZXQgY2h1bmtJbmRleCA9IC0xO1xuICAgIGxldCBpc01hcmtSZW1vdmVkID0gZmFsc2U7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xuICAgICAgICBhc3luYyB0cmFuc2Zvcm0gKGNodW5rLCBjb250cm9sbGVyKSB7XG4gICAgICAgICAgICBsZXQgaWNvbk1hcmtJbmRleCA9IC0xO1xuICAgICAgICAgICAgbGV0IGNsb3NlZEhlYWRJbmRleCA9IC0xO1xuICAgICAgICAgICAgY2h1bmtJbmRleCsrO1xuICAgICAgICAgICAgaWYgKGlzTWFya1JlbW92ZWQpIHtcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBpY29uTWFya0xlbmd0aCA9IDA7XG4gICAgICAgICAgICAvLyBPbmx5IHNlYXJjaCBmb3IgdGhlIGNsb3NlZCBoZWFkIHRhZyBvbmNlXG4gICAgICAgICAgICBpZiAoaWNvbk1hcmtJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBpY29uTWFya0luZGV4ID0gKDAsIF91aW50OGFycmF5aGVscGVycy5pbmRleE9mVWludDhBcnJheSkoY2h1bmssIF9lbmNvZGVkdGFncy5FTkNPREVEX1RBR1MuTUVUQS5JQ09OX01BUkspO1xuICAgICAgICAgICAgICAgIGlmIChpY29uTWFya0luZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiB3ZSBmb3VuZCB0aGUgYDxtZXRhIG5hbWU9XCLCq254dC1pY29uwrtcImAgdGFnIHByZWZpeCwgd2Ugd2lsbCByZW1vdmUgaXQgZnJvbSB0aGUgY2h1bmsuXG4gICAgICAgICAgICAgICAgICAgIC8vIEl0cyBjbG9zZSB0YWcgY291bGQgZWl0aGVyIGJlIGAvPmAgb3IgYD5gLCBjaGVja2luZyB0aGUgbmV4dCBjaGFyIHRvIGVuc3VyZSB3ZSBjb3ZlciBib3RoIGNhc2VzLlxuICAgICAgICAgICAgICAgICAgICBpY29uTWFya0xlbmd0aCA9IF9lbmNvZGVkdGFncy5FTkNPREVEX1RBR1MuTUVUQS5JQ09OX01BUksubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiBuZXh0IGNoYXIgaXMgLywgdGhpcyBpcyBmb3IgeG1sIG1vZGUuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaHVua1tpY29uTWFya0luZGV4ICsgaWNvbk1hcmtMZW5ndGhdID09PSA0Nykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbk1hcmtMZW5ndGggKz0gMjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBsYXN0IGNoYXIgaXMgYD5gXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uTWFya0xlbmd0aCsrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgaWNvbiBtYXJrIGlzIGluc2lkZSA8aGVhZD4gdGFnIGluIHRoZSBmaXJzdCBjaHVuay5cbiAgICAgICAgICAgIGlmIChjaHVua0luZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgY2xvc2VkSGVhZEluZGV4ID0gKDAsIF91aW50OGFycmF5aGVscGVycy5pbmRleE9mVWludDhBcnJheSkoY2h1bmssIF9lbmNvZGVkdGFncy5FTkNPREVEX1RBR1MuQ0xPU0VELkhFQUQpO1xuICAgICAgICAgICAgICAgIGlmIChpY29uTWFya0luZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBUaGUgbWFyayBpY29uIGlzIGxvY2F0ZWQgaW4gdGhlIDFzdCBjaHVuayBiZWZvcmUgdGhlIGhlYWQgdGFnLlxuICAgICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3QgbmVlZCB0byBpbnNlcnQgdGhlIHNjcmlwdCB0YWcgaW4gdGhpcyBjYXNlIGJlY2F1c2UgaXQncyBpbiB0aGUgaGVhZC5cbiAgICAgICAgICAgICAgICAgICAgLy8gSnVzdCByZW1vdmUgdGhlIGljb24gbWFyayBmcm9tIHRoZSBjaHVuay5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGljb25NYXJrSW5kZXggPCBjbG9zZWRIZWFkSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcGxhY2VkID0gbmV3IFVpbnQ4QXJyYXkoY2h1bmsubGVuZ3RoIC0gaWNvbk1hcmtMZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBpY29uIG1hcmsgZnJvbSB0aGUgY2h1bmsuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlZC5zZXQoY2h1bmsuc3ViYXJyYXkoMCwgaWNvbk1hcmtJbmRleCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZWQuc2V0KGNodW5rLnN1YmFycmF5KGljb25NYXJrSW5kZXggKyBpY29uTWFya0xlbmd0aCksIGljb25NYXJrSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmsgPSByZXBsYWNlZDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBpY29uIG1hcmsgaXMgYWZ0ZXIgdGhlIGhlYWQgdGFnLCByZXBsYWNlIGFuZCBpbnNlcnQgdGhlIHNjcmlwdCB0YWcgYXQgdGhhdCBwb3NpdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluc2VydGlvbiA9IGF3YWl0IGluc2VydCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5jb2RlZEluc2VydGlvbiA9IGVuY29kZXIuZW5jb2RlKGluc2VydGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnNlcnRpb25MZW5ndGggPSBlbmNvZGVkSW5zZXJ0aW9uLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcGxhY2VkID0gbmV3IFVpbnQ4QXJyYXkoY2h1bmsubGVuZ3RoIC0gaWNvbk1hcmtMZW5ndGggKyBpbnNlcnRpb25MZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZWQuc2V0KGNodW5rLnN1YmFycmF5KDAsIGljb25NYXJrSW5kZXgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VkLnNldChlbmNvZGVkSW5zZXJ0aW9uLCBpY29uTWFya0luZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VkLnNldChjaHVuay5zdWJhcnJheShpY29uTWFya0luZGV4ICsgaWNvbk1hcmtMZW5ndGgpLCBpY29uTWFya0luZGV4ICsgaW5zZXJ0aW9uTGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rID0gcmVwbGFjZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaXNNYXJrUmVtb3ZlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBubyBpY29uIG1hcmsgbG9jYXRlZCwgaXQgd2lsbCBiZSBoYW5kbGVkIGxhdGVyIHdoZW4gaWYgcHJlc2VudCBpbiB0aGUgZm9sbG93aW5nIGNodW5rcy5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gV2hlbiBpdCdzIGFwcGVhcmVkIGluIHRoZSBmb2xsb3dpbmcgY2h1bmtzLCB3ZSdsbCBuZWVkIHRvXG4gICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHRoZSBtYXJrIGFuZCB0aGVuIGluc2VydCB0aGUgc2NyaXB0IHRhZyBhdCB0aGF0IHBvc2l0aW9uLlxuICAgICAgICAgICAgICAgIGNvbnN0IGluc2VydGlvbiA9IGF3YWl0IGluc2VydCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuY29kZWRJbnNlcnRpb24gPSBlbmNvZGVyLmVuY29kZShpbnNlcnRpb24pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGluc2VydGlvbkxlbmd0aCA9IGVuY29kZWRJbnNlcnRpb24ubGVuZ3RoO1xuICAgICAgICAgICAgICAgIC8vIFJlcGxhY2UgdGhlIGljb24gbWFyayB3aXRoIHRoZSBob2lzdCBzY3JpcHQgb3IgZW1wdHkgc3RyaW5nLlxuICAgICAgICAgICAgICAgIGNvbnN0IHJlcGxhY2VkID0gbmV3IFVpbnQ4QXJyYXkoY2h1bmsubGVuZ3RoIC0gaWNvbk1hcmtMZW5ndGggKyBpbnNlcnRpb25MZW5ndGgpO1xuICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgZmlyc3QgcGFydCBvZiB0aGUgY2h1bmssIGJlZm9yZSB0aGUgaWNvbiBtYXJrLlxuICAgICAgICAgICAgICAgIHJlcGxhY2VkLnNldChjaHVuay5zdWJhcnJheSgwLCBpY29uTWFya0luZGV4KSk7XG4gICAgICAgICAgICAgICAgLy8gU2V0IHRoZSBpbnNlcnRpb24gYWZ0ZXIgdGhlIGljb24gbWFyay5cbiAgICAgICAgICAgICAgICByZXBsYWNlZC5zZXQoZW5jb2RlZEluc2VydGlvbiwgaWNvbk1hcmtJbmRleCk7XG4gICAgICAgICAgICAgICAgLy8gU2V0IHRoZSByZXN0IG9mIHRoZSBjaHVuayBhZnRlciB0aGUgaWNvbiBtYXJrLlxuICAgICAgICAgICAgICAgIHJlcGxhY2VkLnNldChjaHVuay5zdWJhcnJheShpY29uTWFya0luZGV4ICsgaWNvbk1hcmtMZW5ndGgpLCBpY29uTWFya0luZGV4ICsgaW5zZXJ0aW9uTGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBjaHVuayA9IHJlcGxhY2VkO1xuICAgICAgICAgICAgICAgIGlzTWFya1JlbW92ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlSGVhZEluc2VydGlvblRyYW5zZm9ybVN0cmVhbShpbnNlcnQpIHtcbiAgICBsZXQgaW5zZXJ0ZWQgPSBmYWxzZTtcbiAgICAvLyBXZSBuZWVkIHRvIHRyYWNrIGlmIHRoaXMgdHJhbnNmb3JtIHNhdyBhbnkgYnl0ZXMgYmVjYXVzZSBpZiBpdCBkaWRuJ3RcbiAgICAvLyB3ZSB3b24ndCB3YW50IHRvIGluc2VydCBhbnkgc2VydmVyIEhUTUwgYXQgYWxsXG4gICAgbGV0IGhhc0J5dGVzID0gZmFsc2U7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xuICAgICAgICBhc3luYyB0cmFuc2Zvcm0gKGNodW5rLCBjb250cm9sbGVyKSB7XG4gICAgICAgICAgICBoYXNCeXRlcyA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpbnNlcnRpb24gPSBhd2FpdCBpbnNlcnQoKTtcbiAgICAgICAgICAgIGlmIChpbnNlcnRlZCkge1xuICAgICAgICAgICAgICAgIGlmIChpbnNlcnRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5jb2RlZEluc2VydGlvbiA9IGVuY29kZXIuZW5jb2RlKGluc2VydGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShlbmNvZGVkSW5zZXJ0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETyAoQEV0aGFuLUFycm93b29kKTogUmVwbGFjZSB0aGUgZ2VuZXJpYyBgaW5kZXhPZlVpbnQ4QXJyYXlgIG1ldGhvZCB3aXRoIHNvbWV0aGluZyBmaW5lbHkgdHVuZWQgZm9yIHRoZSBzdWJzZXQgb2YgdGhpbmdzIGFjdHVhbGx5IGJlaW5nIGNoZWNrZWQgZm9yLlxuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gKDAsIF91aW50OGFycmF5aGVscGVycy5pbmRleE9mVWludDhBcnJheSkoY2h1bmssIF9lbmNvZGVkdGFncy5FTkNPREVEX1RBR1MuQ0xPU0VELkhFQUQpO1xuICAgICAgICAgICAgICAgIC8vIEluIGZ1bGx5IHN0YXRpYyByZW5kZXJpbmcgb3Igbm9uIFBQUiByZW5kZXJpbmcgY2FzZXM6XG4gICAgICAgICAgICAgICAgLy8gYC9oZWFkPmAgd2lsbCBhbHdheXMgYmUgZm91bmQgaW4gdGhlIGNodW5rIGluIGZpcnN0IGNodW5rIHJlbmRlcmluZy5cbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnNlcnRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVuY29kZWRJbnNlcnRpb24gPSBlbmNvZGVyLmVuY29kZShpbnNlcnRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gR2V0IHRoZSB0b3RhbCBjb3VudCBvZiB0aGUgYnl0ZXMgaW4gdGhlIGNodW5rIGFuZCB0aGUgaW5zZXJ0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlLmcuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjaHVuayA9IDxoZWFkPjxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiPjwvaGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluc2VydGlvbiA9IDxzY3JpcHQ+Li4uPC9zY3JpcHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXQgPSA8aGVhZD48bWV0YSBjaGFyc2V0PVwidXRmLThcIj4gWyA8c2NyaXB0Pi4uLjwvc2NyaXB0PiBdIDwvaGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluc2VydGVkSGVhZENvbnRlbnQgPSBuZXcgVWludDhBcnJheShjaHVuay5sZW5ndGggKyBlbmNvZGVkSW5zZXJ0aW9uLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBlbmQgdGhlIGZpcnN0IHBhcnQgb2YgdGhlIGNodW5rLCBiZWZvcmUgdGhlIGhlYWQgdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRlZEhlYWRDb250ZW50LnNldChjaHVuay5zbGljZSgwLCBpbmRleCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwZW5kIHRoZSBzZXJ2ZXIgaW5zZXJ0ZWQgY29udGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0ZWRIZWFkQ29udGVudC5zZXQoZW5jb2RlZEluc2VydGlvbiwgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwZW5kIHRoZSByZXN0IG9mIHRoZSBjaHVua1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0ZWRIZWFkQ29udGVudC5zZXQoY2h1bmsuc2xpY2UoaW5kZXgpLCBpbmRleCArIGVuY29kZWRJbnNlcnRpb24ubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShpbnNlcnRlZEhlYWRDb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBoYXBwZW5zIGluIFBQUiByZW5kZXJpbmcgZHVyaW5nIG5leHQgc3RhcnQsIHdoZW4gdGhlIHBhZ2UgaXMgcGFydGlhbGx5IHJlbmRlcmVkLlxuICAgICAgICAgICAgICAgICAgICAvLyBXaGVuIHRoZSBwYWdlIHJlc3VtZXMsIHRoZSBoZWFkIHRhZyB3aWxsIGJlIGZvdW5kIGluIHRoZSBtaWRkbGUgb2YgdGhlIGNodW5rLlxuICAgICAgICAgICAgICAgICAgICAvLyBXaGVyZSB3ZSBqdXN0IG5lZWQgdG8gYXBwZW5kIHRoZSBpbnNlcnRpb24gYW5kIGNodW5rIHRvIHRoZSBjdXJyZW50IHN0cmVhbS5cbiAgICAgICAgICAgICAgICAgICAgLy8gZS5nLlxuICAgICAgICAgICAgICAgICAgICAvLyBQUFItc3RhdGljOiA8aGVhZD4uLi48L2hlYWQ+PGJvZHk+IFsgcmVzdW1lIGNvbnRlbnQgXSA8L2JvZHk+XG4gICAgICAgICAgICAgICAgICAgIC8vIFBQUi1yZXN1bWU6IFsgaW5zZXJ0aW9uIF0gWyByZXN0IGNvbnRlbnQgXVxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoZW5jb2Rlci5lbmNvZGUoaW5zZXJ0aW9uKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTtcbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgYXN5bmMgZmx1c2ggKGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIC8vIENoZWNrIGJlZm9yZSBjbG9zaW5nIGlmIHRoZXJlJ3MgYW55dGhpbmcgcmVtYWluaW5nIHRvIGluc2VydC5cbiAgICAgICAgICAgIGlmIChoYXNCeXRlcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluc2VydGlvbiA9IGF3YWl0IGluc2VydCgpO1xuICAgICAgICAgICAgICAgIGlmIChpbnNlcnRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGVuY29kZXIuZW5jb2RlKGluc2VydGlvbikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlQ2xpZW50UmVzdW1lU2NyaXB0SW5zZXJ0aW9uVHJhbnNmb3JtU3RyZWFtKCkge1xuICAgIGNvbnN0IHNlZ21lbnRQYXRoID0gJy9fZnVsbCc7XG4gICAgY29uc3QgY2FjaGVCdXN0aW5nSGVhZGVyID0gKDAsIF9jYWNoZWJ1c3RpbmdzZWFyY2hwYXJhbS5jb21wdXRlQ2FjaGVCdXN0aW5nU2VhcmNoUGFyYW0pKCcxJywgJy9fZnVsbCcsIHVuZGVmaW5lZCwgdW5kZWZpbmVkIC8vICAgICAgIGhlYWRlcnNbTkVYVF9VUkxdXG4gICAgKTtcbiAgICBjb25zdCBzZWFyY2hTdHIgPSBgJHtfYXBwcm91dGVyaGVhZGVycy5ORVhUX1JTQ19VTklPTl9RVUVSWX09JHtjYWNoZUJ1c3RpbmdIZWFkZXJ9YDtcbiAgICBjb25zdCBORVhUX0NMSUVOVF9SRVNVTUVfU0NSSVBUID0gYDxzY3JpcHQ+X19ORVhUX0NMSUVOVF9SRVNVTUU9ZmV0Y2gobG9jYXRpb24ucGF0aG5hbWUrJz8ke3NlYXJjaFN0cn0nLHtjcmVkZW50aWFsczonc2FtZS1vcmlnaW4nLGhlYWRlcnM6eycke19hcHByb3V0ZXJoZWFkZXJzLlJTQ19IRUFERVJ9JzogJzEnLCcke19hcHByb3V0ZXJoZWFkZXJzLk5FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUn0nOiAnMScsJyR7X2FwcHJvdXRlcmhlYWRlcnMuTkVYVF9ST1VURVJfU0VHTUVOVF9QUkVGRVRDSF9IRUFERVJ9JzogJyR7c2VnbWVudFBhdGh9J319KTwvc2NyaXB0PmA7XG4gICAgbGV0IGRpZEFscmVhZHlJbnNlcnQgPSBmYWxzZTtcbiAgICByZXR1cm4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7XG4gICAgICAgIHRyYW5zZm9ybSAoY2h1bmssIGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIGlmIChkaWRBbHJlYWR5SW5zZXJ0KSB7XG4gICAgICAgICAgICAgICAgLy8gQWxyZWFkeSBpbnNlcnRlZCB0aGUgc2NyaXB0IGludG8gdGhlIGhlYWQuIFBhc3MgdGhyb3VnaC5cbiAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRPRE8gKEBFdGhhbi1BcnJvd29vZCk6IFJlcGxhY2UgdGhlIGdlbmVyaWMgYGluZGV4T2ZVaW50OEFycmF5YCBtZXRob2Qgd2l0aCBzb21ldGhpbmcgZmluZWx5IHR1bmVkIGZvciB0aGUgc3Vic2V0IG9mIHRoaW5ncyBhY3R1YWxseSBiZWluZyBjaGVja2VkIGZvci5cbiAgICAgICAgICAgIGNvbnN0IGhlYWRDbG9zaW5nVGFnSW5kZXggPSAoMCwgX3VpbnQ4YXJyYXloZWxwZXJzLmluZGV4T2ZVaW50OEFycmF5KShjaHVuaywgX2VuY29kZWR0YWdzLkVOQ09ERURfVEFHUy5DTE9TRUQuSEVBRCk7XG4gICAgICAgICAgICBpZiAoaGVhZENsb3NpbmdUYWdJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAvLyBJbiBmdWxseSBzdGF0aWMgcmVuZGVyaW5nIG9yIG5vbiBQUFIgcmVuZGVyaW5nIGNhc2VzOlxuICAgICAgICAgICAgICAgIC8vIGAvaGVhZD5gIHdpbGwgYWx3YXlzIGJlIGZvdW5kIGluIHRoZSBjaHVuayBpbiBmaXJzdCBjaHVuayByZW5kZXJpbmcuXG4gICAgICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBlbmNvZGVkSW5zZXJ0aW9uID0gZW5jb2Rlci5lbmNvZGUoTkVYVF9DTElFTlRfUkVTVU1FX1NDUklQVCk7XG4gICAgICAgICAgICAvLyBHZXQgdGhlIHRvdGFsIGNvdW50IG9mIHRoZSBieXRlcyBpbiB0aGUgY2h1bmsgYW5kIHRoZSBpbnNlcnRpb25cbiAgICAgICAgICAgIC8vIGUuZy5cbiAgICAgICAgICAgIC8vIGNodW5rID0gPGhlYWQ+PG1ldGEgY2hhcnNldD1cInV0Zi04XCI+PC9oZWFkPlxuICAgICAgICAgICAgLy8gaW5zZXJ0aW9uID0gPHNjcmlwdD4uLi48L3NjcmlwdD5cbiAgICAgICAgICAgIC8vIG91dHB1dCA9IDxoZWFkPjxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiPiBbIDxzY3JpcHQ+Li4uPC9zY3JpcHQ+IF0gPC9oZWFkPlxuICAgICAgICAgICAgY29uc3QgaW5zZXJ0ZWRIZWFkQ29udGVudCA9IG5ldyBVaW50OEFycmF5KGNodW5rLmxlbmd0aCArIGVuY29kZWRJbnNlcnRpb24ubGVuZ3RoKTtcbiAgICAgICAgICAgIC8vIEFwcGVuZCB0aGUgZmlyc3QgcGFydCBvZiB0aGUgY2h1bmssIGJlZm9yZSB0aGUgaGVhZCB0YWdcbiAgICAgICAgICAgIGluc2VydGVkSGVhZENvbnRlbnQuc2V0KGNodW5rLnNsaWNlKDAsIGhlYWRDbG9zaW5nVGFnSW5kZXgpKTtcbiAgICAgICAgICAgIC8vIEFwcGVuZCB0aGUgc2VydmVyIGluc2VydGVkIGNvbnRlbnRcbiAgICAgICAgICAgIGluc2VydGVkSGVhZENvbnRlbnQuc2V0KGVuY29kZWRJbnNlcnRpb24sIGhlYWRDbG9zaW5nVGFnSW5kZXgpO1xuICAgICAgICAgICAgLy8gQXBwZW5kIHRoZSByZXN0IG9mIHRoZSBjaHVua1xuICAgICAgICAgICAgaW5zZXJ0ZWRIZWFkQ29udGVudC5zZXQoY2h1bmsuc2xpY2UoaGVhZENsb3NpbmdUYWdJbmRleCksIGhlYWRDbG9zaW5nVGFnSW5kZXggKyBlbmNvZGVkSW5zZXJ0aW9uLmxlbmd0aCk7XG4gICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoaW5zZXJ0ZWRIZWFkQ29udGVudCk7XG4gICAgICAgICAgICBkaWRBbHJlYWR5SW5zZXJ0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlSW5zdGFudFRlc3RTY3JpcHRJbnNlcnRpb25UcmFuc2Zvcm1TdHJlYW0ocmVxdWVzdElkKSB7XG4gICAgLy8gS2ljayBvZmYgYSBmZXRjaCBmb3IgdGhlIHN0YXRpYyBSU0MgcGF5bG9hZC4gVGhpcyBpcyB0aGUgaHlkcmF0aW9uXG4gICAgLy8gc291cmNlIGZvciB0aGUgbG9ja2VkIHN0YXRpYyBzaGVsbCDigJQgc2FtZSBhcyB0aGUgX19ORVhUX0NMSUVOVF9SRVNVTUVcbiAgICAvLyBmZXRjaCB1c2VkIGZvciBmYWxsYmFjayByb3V0ZXMsIGJ1dCB3aXRoIE5FWFRfSU5TVEFOVF9QUkVGRVRDSF9IRUFERVJcbiAgICAvLyBzbyB0aGUgc2VydmVyIHJldHVybnMgc3RhdGljLW9ubHkgZGF0YS5cbiAgICAvL1xuICAgIC8vIFRoZSBmZXRjaCBwcm9taXNlIGlzIHN0b3JlZCBhcyBzZWxmLl9fbmV4dF9pbnN0YW50X3Rlc3QsIHdoaWNoIGRvdWJsZXNcbiAgICAvLyBhcyB0aGUgZmVhdHVyZSBmbGFnICh0cnV0aHkgPSBpbnN0YW50IHRlc3QgbW9kZSkuIFRoZSBjbGllbnQgcHJvY2Vzc2VzXG4gICAgLy8gdGhpcyBhcyBhIGZhbGxiYWNrIHByZXJlbmRlciBwYXlsb2FkIGZvciBoeWRyYXRpb24uXG4gICAgY29uc3Qgc2VnbWVudFBhdGggPSAnL19mdWxsJztcbiAgICBjb25zdCBjYWNoZUJ1c3RpbmdIZWFkZXIgPSAoMCwgX2NhY2hlYnVzdGluZ3NlYXJjaHBhcmFtLmNvbXB1dGVDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbSkoJzEnLCBzZWdtZW50UGF0aCwgdW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuICAgIGNvbnN0IHNlYXJjaFN0ciA9IGAke19hcHByb3V0ZXJoZWFkZXJzLk5FWFRfUlNDX1VOSU9OX1FVRVJZfT0ke2NhY2hlQnVzdGluZ0hlYWRlcn1gO1xuICAgIC8vIEluIGRldiBtb2RlLCBpbmplY3Qgc2VsZi5fX25leHRfciAocmVxdWVzdCBJRCkgc28gdGhhdCBITVIgV2ViU29ja2V0XG4gICAgLy8gYW5kIGRlYnVnIGNoYW5uZWwgaW5pdGlhbGl6YXRpb24gZG9uJ3QgY3Jhc2guIFRoZSBzdGF0aWMgc2hlbGxcbiAgICAvLyBieXBhc3NlcyByZW5kZXJUb0ZpenpTdHJlYW0gd2hpY2ggbm9ybWFsbHkgaW5qZWN0cyB0aGlzIHZpYVxuICAgIC8vIGJvb3RzdHJhcFNjcmlwdENvbnRlbnQuXG4gICAgY29uc3QgcmVxdWVzdElkU2NyaXB0ID0gcmVxdWVzdElkICE9PSBudWxsID8gYHNlbGYuX19uZXh0X3I9JHtKU09OLnN0cmluZ2lmeShyZXF1ZXN0SWQpfTtgIDogJyc7XG4gICAgY29uc3QgSU5TVEFOVF9URVNUX1NDUklQVCA9IGA8c2NyaXB0PiR7cmVxdWVzdElkU2NyaXB0fXNlbGYuX19uZXh0X2luc3RhbnRfdGVzdD1mZXRjaChsb2NhdGlvbi5wYXRobmFtZSsnPyR7c2VhcmNoU3RyfScse2NyZWRlbnRpYWxzOidzYW1lLW9yaWdpbicsaGVhZGVyczp7JyR7X2FwcHJvdXRlcmhlYWRlcnMuUlNDX0hFQURFUn0nOicxJywnJHtfYXBwcm91dGVyaGVhZGVycy5ORVhUX1JPVVRFUl9QUkVGRVRDSF9IRUFERVJ9JzonMScsJyR7X2FwcHJvdXRlcmhlYWRlcnMuTkVYVF9ST1VURVJfU0VHTUVOVF9QUkVGRVRDSF9IRUFERVJ9JzonJHtzZWdtZW50UGF0aH0nLCcke19hcHByb3V0ZXJoZWFkZXJzLk5FWFRfSU5TVEFOVF9QUkVGRVRDSF9IRUFERVJ9JzonMSd9fSk8L3NjcmlwdD5gO1xuICAgIGxldCBkaWRBbHJlYWR5SW5zZXJ0ID0gZmFsc2U7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xuICAgICAgICB0cmFuc2Zvcm0gKGNodW5rLCBjb250cm9sbGVyKSB7XG4gICAgICAgICAgICBpZiAoZGlkQWxyZWFkeUluc2VydCkge1xuICAgICAgICAgICAgICAgIC8vIEFscmVhZHkgaW5zZXJ0ZWQgdGhlIHNjcmlwdCBpbnRvIHRoZSBoZWFkLiBQYXNzIHRocm91Z2guXG4gICAgICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGaW5kIHRoZSBvcGVuaW5nIDxoZWFkIHRhZyAobWF5IGhhdmUgYXR0cmlidXRlcyBsaWtlIDxoZWFkIGNsYXNzPVwiLi4uXCI+KVxuICAgICAgICAgICAgY29uc3QgaGVhZE9wZW5JbmRleCA9ICgwLCBfdWludDhhcnJheWhlbHBlcnMuaW5kZXhPZlVpbnQ4QXJyYXkpKGNodW5rLCBfZW5jb2RlZHRhZ3MuRU5DT0RFRF9UQUdTLk9QRU5JTkcuSEVBRCk7XG4gICAgICAgICAgICBpZiAoaGVhZE9wZW5JbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEZpbmQgdGhlIGNsb3NpbmcgPiBvZiB0aGUgPGhlYWQgLi4uPiB0YWdcbiAgICAgICAgICAgIGNvbnN0IGhlYWRDbG9zZUFuZ2xlID0gY2h1bmsuaW5kZXhPZig2MiwgaGVhZE9wZW5JbmRleCArIF9lbmNvZGVkdGFncy5FTkNPREVEX1RBR1MuT1BFTklORy5IRUFELmxlbmd0aCk7XG4gICAgICAgICAgICBpZiAoaGVhZENsb3NlQW5nbGUgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBlbmNvZGVkSW5zZXJ0aW9uID0gZW5jb2Rlci5lbmNvZGUoSU5TVEFOVF9URVNUX1NDUklQVCk7XG4gICAgICAgICAgICBjb25zdCBpbnNlcnRpb25Qb2ludCA9IGhlYWRDbG9zZUFuZ2xlICsgMTtcbiAgICAgICAgICAgIC8vIGUuZy5cbiAgICAgICAgICAgIC8vIGNodW5rID0gPCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD1cInV0Zi04XCI+Li4uXG4gICAgICAgICAgICAvLyBpbnNlcnRpb24gPSA8c2NyaXB0PnNlbGYuX19uZXh0X2luc3RhbnRfdGVzdD1mZXRjaCguLi4pPC9zY3JpcHQ+XG4gICAgICAgICAgICAvLyBvdXRwdXQgPSA8IURPQ1RZUEUgaHRtbD48aHRtbD48aGVhZD4gWyA8c2NyaXB0Pi4uLjwvc2NyaXB0PiBdIDxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiPi4uLlxuICAgICAgICAgICAgY29uc3QgaW5zZXJ0ZWRIZWFkQ29udGVudCA9IG5ldyBVaW50OEFycmF5KGNodW5rLmxlbmd0aCArIGVuY29kZWRJbnNlcnRpb24ubGVuZ3RoKTtcbiAgICAgICAgICAgIGluc2VydGVkSGVhZENvbnRlbnQuc2V0KGNodW5rLnNsaWNlKDAsIGluc2VydGlvblBvaW50KSk7XG4gICAgICAgICAgICBpbnNlcnRlZEhlYWRDb250ZW50LnNldChlbmNvZGVkSW5zZXJ0aW9uLCBpbnNlcnRpb25Qb2ludCk7XG4gICAgICAgICAgICBpbnNlcnRlZEhlYWRDb250ZW50LnNldChjaHVuay5zbGljZShpbnNlcnRpb25Qb2ludCksIGluc2VydGlvblBvaW50ICsgZW5jb2RlZEluc2VydGlvbi5sZW5ndGgpO1xuICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGluc2VydGVkSGVhZENvbnRlbnQpO1xuICAgICAgICAgICAgZGlkQWxyZWFkeUluc2VydCA9IHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIGZsdXNoIChjb250cm9sbGVyKSB7XG4gICAgICAgICAgICAvLyBBcHBlbmQgY2xvc2luZyB0YWdzIHNvIHRoZSBicm93c2VyIGNhbiBwYXJzZSB0aGUgZnVsbCBkb2N1bWVudC5cbiAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShfZW5jb2RlZHRhZ3MuRU5DT0RFRF9UQUdTLkNMT1NFRC5CT0RZX0FORF9IVE1MKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuLy8gU3VmZml4IGFmdGVyIG1haW4gYm9keSBjb250ZW50IC0gc2NyaXB0cyBiZWZvcmUgPC9ib2R5Pixcbi8vIGJ1dCB3YWl0IGZvciB0aGUgbWFqb3IgY2h1bmtzIHRvIGJlIGVucXVldWVkLlxuZnVuY3Rpb24gY3JlYXRlRGVmZXJyZWRTdWZmaXhTdHJlYW0oc3VmZml4KSB7XG4gICAgbGV0IGZsdXNoZWQgPSBmYWxzZTtcbiAgICBsZXQgcGVuZGluZztcbiAgICBjb25zdCBmbHVzaCA9IChjb250cm9sbGVyKT0+e1xuICAgICAgICBjb25zdCBkZXRhY2hlZCA9IG5ldyBfZGV0YWNoZWRwcm9taXNlLkRldGFjaGVkUHJvbWlzZSgpO1xuICAgICAgICBwZW5kaW5nID0gZGV0YWNoZWQ7XG4gICAgICAgICgwLCBfc2NoZWR1bGVyLnNjaGVkdWxlSW1tZWRpYXRlKSgoKT0+e1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoZW5jb2Rlci5lbmNvZGUoc3VmZml4KSk7XG4gICAgICAgICAgICB9IGNhdGNoICB7XG4gICAgICAgICAgICAvLyBJZiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgZW5xdWV1aW5nIGl0IGNhbid0IGJlIGR1ZSB0byB0aGlzXG4gICAgICAgICAgICAvLyB0cmFuc2Zvcm1lcnMgZmF1bHQuIEl0J3MgbGlrZWx5IGR1ZSB0byB0aGUgY29udHJvbGxlciBiZWluZ1xuICAgICAgICAgICAgLy8gZXJyb3JlZCBkdWUgdG8gdGhlIHN0cmVhbSBiZWluZyBjYW5jZWxsZWQuXG4gICAgICAgICAgICB9IGZpbmFsbHl7XG4gICAgICAgICAgICAgICAgcGVuZGluZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBkZXRhY2hlZC5yZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xuICAgICAgICB0cmFuc2Zvcm0gKGNodW5rLCBjb250cm9sbGVyKSB7XG4gICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspO1xuICAgICAgICAgICAgLy8gSWYgd2UndmUgYWxyZWFkeSBmbHVzaGVkLCB3ZSdyZSBkb25lLlxuICAgICAgICAgICAgaWYgKGZsdXNoZWQpIHJldHVybjtcbiAgICAgICAgICAgIC8vIFNjaGVkdWxlIHRoZSBmbHVzaCB0byBoYXBwZW4uXG4gICAgICAgICAgICBmbHVzaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGZsdXNoKGNvbnRyb2xsZXIpO1xuICAgICAgICB9LFxuICAgICAgICBmbHVzaCAoY29udHJvbGxlcikge1xuICAgICAgICAgICAgaWYgKHBlbmRpbmcpIHJldHVybiBwZW5kaW5nLnByb21pc2U7XG4gICAgICAgICAgICBpZiAoZmx1c2hlZCkgcmV0dXJuO1xuICAgICAgICAgICAgLy8gRmx1c2ggbm93LlxuICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGVuY29kZXIuZW5jb2RlKHN1ZmZpeCkpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5mdW5jdGlvbiBjcmVhdGVGbGlnaHREYXRhSW5qZWN0aW9uVHJhbnNmb3JtU3RyZWFtKHN0cmVhbSwgZGVsYXlEYXRhVW50aWxGaXJzdEh0bWxDaHVuaykge1xuICAgIGxldCBodG1sU3RyZWFtRmluaXNoZWQgPSBmYWxzZTtcbiAgICBsZXQgcHVsbCA9IG51bGw7XG4gICAgbGV0IGRvbmVQdWxsaW5nID0gZmFsc2U7XG4gICAgZnVuY3Rpb24gc3RhcnRPckNvbnRpbnVlUHVsbGluZyhjb250cm9sbGVyKSB7XG4gICAgICAgIGlmICghcHVsbCkge1xuICAgICAgICAgICAgcHVsbCA9IHN0YXJ0UHVsbGluZyhjb250cm9sbGVyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHVsbDtcbiAgICB9XG4gICAgYXN5bmMgZnVuY3Rpb24gc3RhcnRQdWxsaW5nKGNvbnRyb2xsZXIpIHtcbiAgICAgICAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpO1xuICAgICAgICBpZiAoZGVsYXlEYXRhVW50aWxGaXJzdEh0bWxDaHVuaykge1xuICAgICAgICAgICAgLy8gTk9URTogc3RyZWFtaW5nIGZsdXNoXG4gICAgICAgICAgICAvLyBXZSBhcmUgYnVmZmVyaW5nIGhlcmUgZm9yIHRoZSBpbmxpbmVkIGRhdGEgc3RyZWFtIGJlY2F1c2UgdGhlXG4gICAgICAgICAgICAvLyBcInNoZWxsXCIgc3RyZWFtIG1pZ2h0IGJlIGNodW5rZW5pemVkIGFnYWluIGJ5IHRoZSB1bmRlcmx5aW5nIHN0cmVhbVxuICAgICAgICAgICAgLy8gaW1wbGVtZW50YXRpb24sIGUuZy4gd2l0aCBhIHNwZWNpZmljIGhpZ2gtd2F0ZXIgbWFyay4gVG8gZW5zdXJlIGl0J3NcbiAgICAgICAgICAgIC8vIHRoZSBzYWZlIHRpbWluZyB0byBwaXBlIHRoZSBkYXRhIHN0cmVhbSwgdGhpcyBleHRyYSB0aWNrIGlzXG4gICAgICAgICAgICAvLyBuZWNlc3NhcnkuXG4gICAgICAgICAgICAvLyBXZSBkb24ndCBzdGFydCByZWFkaW5nIHVudGlsIHdlJ3ZlIGxlZnQgdGhlIGN1cnJlbnQgVGFzayB0byBlbnN1cmVcbiAgICAgICAgICAgIC8vIHRoYXQgaXQncyBpbnNlcnRlZCBhZnRlciBmbHVzaGluZyB0aGUgc2hlbGwuIE5vdGUgdGhhdCB0aGlzIGltcGxlbWVudGF0aW9uXG4gICAgICAgICAgICAvLyBtaWdodCBnZXQgc3RhbGUgaWYgaW1wbCBkZXRhaWxzIG9mIEZpenogY2hhbmdlIGluIHRoZSBmdXR1cmUuXG4gICAgICAgICAgICBhd2FpdCAoMCwgX3NjaGVkdWxlci5hdExlYXN0T25lVGFzaykoKTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgd2hpbGUodHJ1ZSl7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKTtcbiAgICAgICAgICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgICAgICAgICAgICBkb25lUHVsbGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gV2Ugd2FudCB0byBwcmlvcml0aXplIEhUTUwgb3ZlciBSU0MgZGF0YS5cbiAgICAgICAgICAgICAgICAvLyBUaGUgU1NSIHJlbmRlciBpcyBiYXNlZCBvbiB0aGUgc2FtZSBSU0Mgc3RyZWFtLCBzbyB3aGVuIHdlIGdldCBhIG5ldyBSU0MgY2h1bmssXG4gICAgICAgICAgICAgICAgLy8gd2UncmUgbGlrZWx5IHRvIHByb2R1Y2UgYW4gSFRNTCBjaHVuayBhcyB3ZWxsLCBzbyBnaXZlIGl0IGEgY2hhbmNlIHRvIGZsdXNoIGZpcnN0LlxuICAgICAgICAgICAgICAgIGlmICghZGVsYXlEYXRhVW50aWxGaXJzdEh0bWxDaHVuayAmJiAhaHRtbFN0cmVhbUZpbmlzaGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0ICgwLCBfc2NoZWR1bGVyLmF0TGVhc3RPbmVUYXNrKSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuZXJyb3IoZXJyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7XG4gICAgICAgIHN0YXJ0IChjb250cm9sbGVyKSB7XG4gICAgICAgICAgICBpZiAoIWRlbGF5RGF0YVVudGlsRmlyc3RIdG1sQ2h1bmspIHtcbiAgICAgICAgICAgICAgICBzdGFydE9yQ29udGludWVQdWxsaW5nKGNvbnRyb2xsZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB0cmFuc2Zvcm0gKGNodW5rLCBjb250cm9sbGVyKSB7XG4gICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspO1xuICAgICAgICAgICAgLy8gU3RhcnQgdGhlIHN0cmVhbWluZyBpZiBpdCBoYXNuJ3QgYWxyZWFkeSBiZWVuIHN0YXJ0ZWQgeWV0LlxuICAgICAgICAgICAgaWYgKGRlbGF5RGF0YVVudGlsRmlyc3RIdG1sQ2h1bmspIHtcbiAgICAgICAgICAgICAgICBzdGFydE9yQ29udGludWVQdWxsaW5nKGNvbnRyb2xsZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBmbHVzaCAoY29udHJvbGxlcikge1xuICAgICAgICAgICAgaHRtbFN0cmVhbUZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChkb25lUHVsbGluZykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzdGFydE9yQ29udGludWVQdWxsaW5nKGNvbnRyb2xsZXIpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5jb25zdCBDTE9TRV9UQUcgPSAnPC9ib2R5PjwvaHRtbD4nO1xuLyoqXG4gKiBUaGlzIHRyYW5zZm9ybSBzdHJlYW0gbW92ZXMgdGhlIHN1ZmZpeCB0byB0aGUgZW5kIG9mIHRoZSBzdHJlYW0sIHNvIHJlc3VsdHNcbiAqIGxpa2UgYDwvYm9keT48L2h0bWw+PHNjcmlwdD4uLi48L3NjcmlwdD5gIHdpbGwgYmUgdHJhbnNmb3JtZWQgdG9cbiAqIGA8c2NyaXB0Pi4uLjwvc2NyaXB0PjwvYm9keT48L2h0bWw+YC5cbiAqLyBmdW5jdGlvbiBjcmVhdGVNb3ZlU3VmZml4U3RyZWFtKCkge1xuICAgIGxldCBmb3VuZFN1ZmZpeCA9IGZhbHNlO1xuICAgIHJldHVybiBuZXcgVHJhbnNmb3JtU3RyZWFtKHtcbiAgICAgICAgdHJhbnNmb3JtIChjaHVuaywgY29udHJvbGxlcikge1xuICAgICAgICAgICAgaWYgKGZvdW5kU3VmZml4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9ICgwLCBfdWludDhhcnJheWhlbHBlcnMuaW5kZXhPZlVpbnQ4QXJyYXkpKGNodW5rLCBfZW5jb2RlZHRhZ3MuRU5DT0RFRF9UQUdTLkNMT1NFRC5CT0RZX0FORF9IVE1MKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgZm91bmRTdWZmaXggPSB0cnVlO1xuICAgICAgICAgICAgICAgIC8vIElmIHRoZSB3aG9sZSBjaHVuayBpcyB0aGUgc3VmZml4LCB0aGVuIGRvbid0IHdyaXRlIGFueXRoaW5nLCBpdCB3aWxsXG4gICAgICAgICAgICAgICAgLy8gYmUgd3JpdHRlbiBpbiB0aGUgZmx1c2guXG4gICAgICAgICAgICAgICAgaWYgKGNodW5rLmxlbmd0aCA9PT0gX2VuY29kZWR0YWdzLkVOQ09ERURfVEFHUy5DTE9TRUQuQk9EWV9BTkRfSFRNTC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBXcml0ZSBvdXQgdGhlIHBhcnQgYmVmb3JlIHRoZSBzdWZmaXguXG4gICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlID0gY2h1bmsuc2xpY2UoMCwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShiZWZvcmUpO1xuICAgICAgICAgICAgICAgIC8vIEluIHRoZSBjYXNlIHdoZXJlIHRoZSBzdWZmaXggaXMgaW4gdGhlIG1pZGRsZSBvZiB0aGUgY2h1bmssIHdlIG5lZWRcbiAgICAgICAgICAgICAgICAvLyB0byBzcGxpdCB0aGUgY2h1bmsgaW50byB0d28gcGFydHMuXG4gICAgICAgICAgICAgICAgaWYgKGNodW5rLmxlbmd0aCA+IF9lbmNvZGVkdGFncy5FTkNPREVEX1RBR1MuQ0xPU0VELkJPRFlfQU5EX0hUTUwubGVuZ3RoICsgaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gV3JpdGUgb3V0IHRoZSBwYXJ0IGFmdGVyIHRoZSBzdWZmaXguXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFmdGVyID0gY2h1bmsuc2xpY2UoaW5kZXggKyBfZW5jb2RlZHRhZ3MuRU5DT0RFRF9UQUdTLkNMT1NFRC5CT0RZX0FORF9IVE1MLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShhZnRlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBmbHVzaCAoY29udHJvbGxlcikge1xuICAgICAgICAgICAgLy8gRXZlbiBpZiB3ZSBkaWRuJ3QgZmluZCB0aGUgc3VmZml4LCB0aGUgSFRNTCBpcyBub3QgdmFsaWQgaWYgd2UgZG9uJ3RcbiAgICAgICAgICAgIC8vIGFkZCBpdCwgc28gaW5zZXJ0IGl0IGF0IHRoZSBlbmQuXG4gICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoX2VuY29kZWR0YWdzLkVOQ09ERURfVEFHUy5DTE9TRUQuQk9EWV9BTkRfSFRNTCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVN0cmlwRG9jdW1lbnRDbG9zaW5nVGFnc1RyYW5zZm9ybSgpIHtcbiAgICByZXR1cm4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7XG4gICAgICAgIHRyYW5zZm9ybSAoY2h1bmssIGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIC8vIFdlIHJlbHkgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBjaHVua3Mgd2lsbCBuZXZlciBicmVhayBhY3Jvc3MgYSBjb2RlIHVuaXQuXG4gICAgICAgICAgICAvLyBUaGlzIGlzIHJlYXNvbmFibGUgYmVjYXVzZSB3ZSBjdXJyZW50bHkgY29uY2F0IGFsbCBvZiBSZWFjdCdzIG91dHB1dCBmcm9tIGEgc2luZ2xlXG4gICAgICAgICAgICAvLyBmbHVzaCBpbnRvIG9uZSBjaHVuayBiZWZvcmUgc3RyZWFtaW5nIGl0IGZvcndhcmQgd2hpY2ggbWVhbnMgdGhlIGNodW5rIHdpbGwgcmVwcmVzZW50XG4gICAgICAgICAgICAvLyBhIHNpbmdsZSBjb2hlcmVudCB1dGYtOCBzdHJpbmcuIFRoaXMgaXMgbm90IHNhZmUgdG8gdXNlIGlmIHdlIGNoYW5nZSBvdXIgc3RyZWFtaW5nIHRvIG5vXG4gICAgICAgICAgICAvLyBsb25nZXIgZG8gdGhpcyBsYXJnZSBidWZmZXJlZCBjaHVua1xuICAgICAgICAgICAgaWYgKCgwLCBfdWludDhhcnJheWhlbHBlcnMuaXNFcXVpdmFsZW50VWludDhBcnJheXMpKGNodW5rLCBfZW5jb2RlZHRhZ3MuRU5DT0RFRF9UQUdTLkNMT1NFRC5CT0RZX0FORF9IVE1MKSB8fCAoMCwgX3VpbnQ4YXJyYXloZWxwZXJzLmlzRXF1aXZhbGVudFVpbnQ4QXJyYXlzKShjaHVuaywgX2VuY29kZWR0YWdzLkVOQ09ERURfVEFHUy5DTE9TRUQuQk9EWSkgfHwgKDAsIF91aW50OGFycmF5aGVscGVycy5pc0VxdWl2YWxlbnRVaW50OEFycmF5cykoY2h1bmssIF9lbmNvZGVkdGFncy5FTkNPREVEX1RBR1MuQ0xPU0VELkhUTUwpKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhlIGVudGlyZSBjaHVuayBpcyB0aGUgY2xvc2luZyB0YWdzOyByZXR1cm4gd2l0aG91dCBlbnF1ZXVlaW5nIGFueXRoaW5nLlxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFdlIGFzc3VtZSB0aGVzZSB0YWdzIHdpbGwgZ28gYXQgdG9nZXRoZXIgYXQgdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQgYW5kIHRoYXRcbiAgICAgICAgICAgIC8vIHRoZXkgd29uJ3QgYXBwZWFyIGFueXdoZXJlIGVsc2UgaW4gdGhlIGRvY3VtZW50LiBUaGlzIGlzIG5vdCByZWFsbHkgYSBzYWZlIGFzc3VtcHRpb25cbiAgICAgICAgICAgIC8vIGJ1dCB1bnRpbCB3ZSByZXZhbXAgb3VyIHN0cmVhbWluZyBpbmZyYSB0aGlzIGlzIGEgcGVyZm9ybWFudCB3YXkgdG8gc3RyaW5nIHRoZSB0YWdzXG4gICAgICAgICAgICBjaHVuayA9ICgwLCBfdWludDhhcnJheWhlbHBlcnMucmVtb3ZlRnJvbVVpbnQ4QXJyYXkpKGNodW5rLCBfZW5jb2RlZHRhZ3MuRU5DT0RFRF9UQUdTLkNMT1NFRC5CT0RZKTtcbiAgICAgICAgICAgIGNodW5rID0gKDAsIF91aW50OGFycmF5aGVscGVycy5yZW1vdmVGcm9tVWludDhBcnJheSkoY2h1bmssIF9lbmNvZGVkdGFncy5FTkNPREVEX1RBR1MuQ0xPU0VELkhUTUwpO1xuICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlSHRtbERhdGFEcGxJZFRyYW5zZm9ybVN0cmVhbShkcGxJZCkge1xuICAgIGxldCBkaWRUcmFuc2Zvcm0gPSBmYWxzZTtcbiAgICByZXR1cm4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7XG4gICAgICAgIHRyYW5zZm9ybSAoY2h1bmssIGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIGlmIChkaWRUcmFuc2Zvcm0pIHtcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGh0bWxUYWdJbmRleCA9ICgwLCBfdWludDhhcnJheWhlbHBlcnMuaW5kZXhPZlVpbnQ4QXJyYXkpKGNodW5rLCBfZW5jb2RlZHRhZ3MuRU5DT0RFRF9UQUdTLk9QRU5JTkcuSFRNTCk7XG4gICAgICAgICAgICBpZiAoaHRtbFRhZ0luZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSW5zZXJ0IHRoZSBkYXRhLWRwbC1pZCBhdHRyaWJ1dGUgcmlnaHQgYWZ0ZXIgXCI8aHRtbCBcIlxuICAgICAgICAgICAgY29uc3QgaW5zZXJ0aW9uUG9pbnQgPSBodG1sVGFnSW5kZXggKyBfZW5jb2RlZHRhZ3MuRU5DT0RFRF9UQUdTLk9QRU5JTkcuSFRNTC5sZW5ndGg7XG4gICAgICAgICAgICBjb25zdCBhdHRyaWJ1dGUgPSBgIGRhdGEtZHBsLWlkPVwiJHtkcGxJZH1cImA7XG4gICAgICAgICAgICBjb25zdCBlbmNvZGVkQXR0cmlidXRlID0gZW5jb2Rlci5lbmNvZGUoYXR0cmlidXRlKTtcbiAgICAgICAgICAgIGNvbnN0IG1vZGlmaWVkQ2h1bmsgPSBuZXcgVWludDhBcnJheShjaHVuay5sZW5ndGggKyBlbmNvZGVkQXR0cmlidXRlLmxlbmd0aCk7XG4gICAgICAgICAgICAvLyBDb3B5IGV2ZXJ5dGhpbmcgYmVmb3JlIHRoZSBpbnNlcnRpb24gcG9pbnRcbiAgICAgICAgICAgIG1vZGlmaWVkQ2h1bmsuc2V0KGNodW5rLnN1YmFycmF5KDAsIGluc2VydGlvblBvaW50KSk7XG4gICAgICAgICAgICAvLyBJbnNlcnQgdGhlIGF0dHJpYnV0ZVxuICAgICAgICAgICAgbW9kaWZpZWRDaHVuay5zZXQoZW5jb2RlZEF0dHJpYnV0ZSwgaW5zZXJ0aW9uUG9pbnQpO1xuICAgICAgICAgICAgLy8gQ29weSBldmVyeXRoaW5nIGFmdGVyXG4gICAgICAgICAgICBtb2RpZmllZENodW5rLnNldChjaHVuay5zdWJhcnJheShpbnNlcnRpb25Qb2ludCksIGluc2VydGlvblBvaW50ICsgZW5jb2RlZEF0dHJpYnV0ZS5sZW5ndGgpO1xuICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKG1vZGlmaWVkQ2h1bmspO1xuICAgICAgICAgICAgZGlkVHJhbnNmb3JtID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlUm9vdExheW91dFZhbGlkYXRvclN0cmVhbSgpIHtcbiAgICBsZXQgZm91bmRIdG1sID0gZmFsc2U7XG4gICAgbGV0IGZvdW5kQm9keSA9IGZhbHNlO1xuICAgIHJldHVybiBuZXcgVHJhbnNmb3JtU3RyZWFtKHtcbiAgICAgICAgYXN5bmMgdHJhbnNmb3JtIChjaHVuaywgY29udHJvbGxlcikge1xuICAgICAgICAgICAgLy8gUGVlayBpbnRvIHRoZSBzdHJlYW1lZCBjaHVuayB0byBzZWUgaWYgdGhlIHRhZ3MgYXJlIHByZXNlbnQuXG4gICAgICAgICAgICBpZiAoIWZvdW5kSHRtbCAmJiAoMCwgX3VpbnQ4YXJyYXloZWxwZXJzLmluZGV4T2ZVaW50OEFycmF5KShjaHVuaywgX2VuY29kZWR0YWdzLkVOQ09ERURfVEFHUy5PUEVOSU5HLkhUTUwpID4gLTEpIHtcbiAgICAgICAgICAgICAgICBmb3VuZEh0bWwgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFmb3VuZEJvZHkgJiYgKDAsIF91aW50OGFycmF5aGVscGVycy5pbmRleE9mVWludDhBcnJheSkoY2h1bmssIF9lbmNvZGVkdGFncy5FTkNPREVEX1RBR1MuT1BFTklORy5CT0RZKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgZm91bmRCb2R5ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XG4gICAgICAgIH0sXG4gICAgICAgIGZsdXNoIChjb250cm9sbGVyKSB7XG4gICAgICAgICAgICBjb25zdCBtaXNzaW5nVGFncyA9IFtdO1xuICAgICAgICAgICAgaWYgKCFmb3VuZEh0bWwpIG1pc3NpbmdUYWdzLnB1c2goJ2h0bWwnKTtcbiAgICAgICAgICAgIGlmICghZm91bmRCb2R5KSBtaXNzaW5nVGFncy5wdXNoKCdib2R5Jyk7XG4gICAgICAgICAgICBpZiAoIW1pc3NpbmdUYWdzLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGVuY29kZXIuZW5jb2RlKGA8aHRtbCBpZD1cIl9fbmV4dF9lcnJvcl9fXCI+XG4gICAgICAgICAgICA8dGVtcGxhdGVcbiAgICAgICAgICAgICAgZGF0YS1uZXh0LWVycm9yLW1lc3NhZ2U9XCJNaXNzaW5nICR7bWlzc2luZ1RhZ3MubWFwKChjKT0+YDwke2N9PmApLmpvaW4obWlzc2luZ1RhZ3MubGVuZ3RoID4gMSA/ICcgYW5kICcgOiAnJyl9IHRhZ3MgaW4gdGhlIHJvb3QgbGF5b3V0LlxcblJlYWQgbW9yZSBhdCBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9taXNzaW5nLXJvb3QtbGF5b3V0LXRhZ3NcIlxuICAgICAgICAgICAgICBkYXRhLW5leHQtZXJyb3ItZGlnZXN0PVwiJHtfY29uc3RhbnRzMS5NSVNTSU5HX1JPT1RfVEFHU19FUlJPUn1cIlxuICAgICAgICAgICAgICBkYXRhLW5leHQtZXJyb3Itc3RhY2s9XCJcIlxuICAgICAgICAgICAgPjwvdGVtcGxhdGU+XG4gICAgICAgICAgYCkpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5mdW5jdGlvbiBjaGFpblRyYW5zZm9ybWVycyhyZWFkYWJsZSwgdHJhbnNmb3JtZXJzKSB7XG4gICAgbGV0IHN0cmVhbSA9IHJlYWRhYmxlO1xuICAgIGZvciAoY29uc3QgdHJhbnNmb3JtZXIgb2YgdHJhbnNmb3JtZXJzKXtcbiAgICAgICAgaWYgKCF0cmFuc2Zvcm1lcikgY29udGludWU7XG4gICAgICAgIHN0cmVhbSA9IHN0cmVhbS5waXBlVGhyb3VnaCh0cmFuc2Zvcm1lcik7XG4gICAgfVxuICAgIHJldHVybiBzdHJlYW07XG59XG5hc3luYyBmdW5jdGlvbiBjb250aW51ZUZpenpTdHJlYW0ocmVuZGVyU3RyZWFtLCB7IHN1ZmZpeCwgaW5saW5lZERhdGFTdHJlYW0sIGlzU3RhdGljR2VuZXJhdGlvbiwgZGVwbG95bWVudElkLCBnZXRTZXJ2ZXJJbnNlcnRlZEhUTUwsIGdldFNlcnZlckluc2VydGVkTWV0YWRhdGEsIHZhbGlkYXRlUm9vdExheW91dCB9KSB7XG4gICAgLy8gU3VmZml4IGl0c2VsZiBtaWdodCBjb250YWluIGNsb3NlIHRhZ3MgYXQgdGhlIGVuZCwgc28gd2UgbmVlZCB0byBzcGxpdCBpdC5cbiAgICBjb25zdCBzdWZmaXhVbmNsb3NlZCA9IHN1ZmZpeCA/IHN1ZmZpeC5zcGxpdChDTE9TRV9UQUcsIDEpWzBdIDogbnVsbDtcbiAgICBpZiAoaXNTdGF0aWNHZW5lcmF0aW9uKSB7XG4gICAgICAgIC8vIElmIHdlJ3JlIGdlbmVyYXRpbmcgc3RhdGljIEhUTUwgd2UgbmVlZCB0byB3YWl0IGZvciBpdCB0byByZXNvbHZlIGJlZm9yZSBjb250aW51aW5nLlxuICAgICAgICBhd2FpdCByZW5kZXJTdHJlYW0uYWxsUmVhZHk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3RoZXJ3aXNlLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSBGaXp6IGlzIGRvbmUgd2l0aCBhbGwgbWljcm90YXNreSB3b3JrXG4gICAgICAgIC8vIGJlZm9yZSB3ZSBzdGFydCBwdWxsaW5nIHRoZSBzdHJlYW0gYW5kIGNhdXNlIGEgZmx1c2guXG4gICAgICAgIGF3YWl0ICgwLCBfc2NoZWR1bGVyLndhaXRBdExlYXN0T25lUmVhY3RSZW5kZXJUYXNrKSgpO1xuICAgIH1cbiAgICByZXR1cm4gY2hhaW5UcmFuc2Zvcm1lcnMocmVuZGVyU3RyZWFtLCBbXG4gICAgICAgIC8vIEJ1ZmZlciBldmVyeXRoaW5nIHRvIGF2b2lkIGZsdXNoaW5nIHRvbyBmcmVxdWVudGx5XG4gICAgICAgIGNyZWF0ZUJ1ZmZlcmVkVHJhbnNmb3JtU3RyZWFtKCksXG4gICAgICAgIC8vIEluc2VydCBkYXRhLWRwbC1pZCBhdHRyaWJ1dGUgb24gdGhlIGh0bWwgdGFnXG4gICAgICAgIGRlcGxveW1lbnRJZCA/IGNyZWF0ZUh0bWxEYXRhRHBsSWRUcmFuc2Zvcm1TdHJlYW0oZGVwbG95bWVudElkKSA6IG51bGwsXG4gICAgICAgIC8vIFRyYW5zZm9ybSBtZXRhZGF0YVxuICAgICAgICBjcmVhdGVNZXRhZGF0YVRyYW5zZm9ybVN0cmVhbShnZXRTZXJ2ZXJJbnNlcnRlZE1ldGFkYXRhKSxcbiAgICAgICAgLy8gSW5zZXJ0IHN1ZmZpeCBjb250ZW50XG4gICAgICAgIHN1ZmZpeFVuY2xvc2VkICE9IG51bGwgJiYgc3VmZml4VW5jbG9zZWQubGVuZ3RoID4gMCA/IGNyZWF0ZURlZmVycmVkU3VmZml4U3RyZWFtKHN1ZmZpeFVuY2xvc2VkKSA6IG51bGwsXG4gICAgICAgIC8vIEluc2VydCB0aGUgaW5saW5lZCBkYXRhIChGbGlnaHQgZGF0YSwgZm9ybSBzdGF0ZSwgZXRjLikgc3RyZWFtIGludG8gdGhlIEhUTUxcbiAgICAgICAgaW5saW5lZERhdGFTdHJlYW0gPyBjcmVhdGVGbGlnaHREYXRhSW5qZWN0aW9uVHJhbnNmb3JtU3RyZWFtKGlubGluZWREYXRhU3RyZWFtLCB0cnVlKSA6IG51bGwsXG4gICAgICAgIC8vIFZhbGlkYXRlIHRoZSByb290IGxheW91dCBmb3IgbWlzc2luZyBodG1sIG9yIGJvZHkgdGFnc1xuICAgICAgICB2YWxpZGF0ZVJvb3RMYXlvdXQgPyBjcmVhdGVSb290TGF5b3V0VmFsaWRhdG9yU3RyZWFtKCkgOiBudWxsLFxuICAgICAgICAvLyBDbG9zZSB0YWdzIHNob3VsZCBhbHdheXMgYmUgZGVmZXJyZWQgdG8gdGhlIGVuZFxuICAgICAgICBjcmVhdGVNb3ZlU3VmZml4U3RyZWFtKCksXG4gICAgICAgIC8vIFNwZWNpYWwgaGVhZCBpbnNlcnRpb25zXG4gICAgICAgIC8vIFRPRE8tQVBQOiBJbnNlcnQgc2VydmVyIHNpZGUgaHRtbCB0byBlbmQgb2YgaGVhZCBpbiBhcHAgbGF5b3V0IHJlbmRlcmluZywgdG8gYXZvaWRcbiAgICAgICAgLy8gaHlkcmF0aW9uIGVycm9ycy4gUmVtb3ZlIHRoaXMgb25jZSBpdCdzIHJlYWR5IHRvIGJlIGhhbmRsZWQgYnkgcmVhY3QgaXRzZWxmLlxuICAgICAgICBjcmVhdGVIZWFkSW5zZXJ0aW9uVHJhbnNmb3JtU3RyZWFtKGdldFNlcnZlckluc2VydGVkSFRNTClcbiAgICBdKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGNvbnRpbnVlRHluYW1pY1ByZXJlbmRlcihwcmVyZW5kZXJTdHJlYW0sIHsgZ2V0U2VydmVySW5zZXJ0ZWRIVE1MLCBnZXRTZXJ2ZXJJbnNlcnRlZE1ldGFkYXRhLCBkZXBsb3ltZW50SWQgfSkge1xuICAgIHJldHVybiBjaGFpblRyYW5zZm9ybWVycyhwcmVyZW5kZXJTdHJlYW0sIFtcbiAgICAgICAgLy8gQnVmZmVyIGV2ZXJ5dGhpbmcgdG8gYXZvaWQgZmx1c2hpbmcgdG9vIGZyZXF1ZW50bHlcbiAgICAgICAgY3JlYXRlQnVmZmVyZWRUcmFuc2Zvcm1TdHJlYW0oKSxcbiAgICAgICAgY3JlYXRlU3RyaXBEb2N1bWVudENsb3NpbmdUYWdzVHJhbnNmb3JtKCksXG4gICAgICAgIC8vIEluc2VydCBkYXRhLWRwbC1pZCBhdHRyaWJ1dGUgb24gdGhlIGh0bWwgdGFnXG4gICAgICAgIGRlcGxveW1lbnRJZCA/IGNyZWF0ZUh0bWxEYXRhRHBsSWRUcmFuc2Zvcm1TdHJlYW0oZGVwbG95bWVudElkKSA6IG51bGwsXG4gICAgICAgIC8vIEluc2VydCBnZW5lcmF0ZWQgdGFncyB0byBoZWFkXG4gICAgICAgIGNyZWF0ZUhlYWRJbnNlcnRpb25UcmFuc2Zvcm1TdHJlYW0oZ2V0U2VydmVySW5zZXJ0ZWRIVE1MKSxcbiAgICAgICAgLy8gVHJhbnNmb3JtIG1ldGFkYXRhXG4gICAgICAgIGNyZWF0ZU1ldGFkYXRhVHJhbnNmb3JtU3RyZWFtKGdldFNlcnZlckluc2VydGVkTWV0YWRhdGEpXG4gICAgXSk7XG59XG5hc3luYyBmdW5jdGlvbiBjb250aW51ZVN0YXRpY1ByZXJlbmRlcihwcmVyZW5kZXJTdHJlYW0sIHsgaW5saW5lZERhdGFTdHJlYW0sIGdldFNlcnZlckluc2VydGVkSFRNTCwgZ2V0U2VydmVySW5zZXJ0ZWRNZXRhZGF0YSwgZGVwbG95bWVudElkIH0pIHtcbiAgICByZXR1cm4gY2hhaW5UcmFuc2Zvcm1lcnMocHJlcmVuZGVyU3RyZWFtLCBbXG4gICAgICAgIC8vIEJ1ZmZlciBldmVyeXRoaW5nIHRvIGF2b2lkIGZsdXNoaW5nIHRvbyBmcmVxdWVudGx5XG4gICAgICAgIGNyZWF0ZUJ1ZmZlcmVkVHJhbnNmb3JtU3RyZWFtKCksXG4gICAgICAgIC8vIEFkZCBidWlsZCBpZCBjb21tZW50IHRvIHN0YXJ0IG9mIHRoZSBIVE1MIGRvY3VtZW50IChpbiBleHBvcnQgbW9kZSlcbiAgICAgICAgLy8gSW5zZXJ0IGRhdGEtZHBsLWlkIGF0dHJpYnV0ZSBvbiB0aGUgaHRtbCB0YWdcbiAgICAgICAgZGVwbG95bWVudElkID8gY3JlYXRlSHRtbERhdGFEcGxJZFRyYW5zZm9ybVN0cmVhbShkZXBsb3ltZW50SWQpIDogbnVsbCxcbiAgICAgICAgLy8gSW5zZXJ0IGdlbmVyYXRlZCB0YWdzIHRvIGhlYWRcbiAgICAgICAgY3JlYXRlSGVhZEluc2VydGlvblRyYW5zZm9ybVN0cmVhbShnZXRTZXJ2ZXJJbnNlcnRlZEhUTUwpLFxuICAgICAgICAvLyBUcmFuc2Zvcm0gbWV0YWRhdGFcbiAgICAgICAgY3JlYXRlTWV0YWRhdGFUcmFuc2Zvcm1TdHJlYW0oZ2V0U2VydmVySW5zZXJ0ZWRNZXRhZGF0YSksXG4gICAgICAgIC8vIEluc2VydCB0aGUgaW5saW5lZCBkYXRhIChGbGlnaHQgZGF0YSwgZm9ybSBzdGF0ZSwgZXRjLikgc3RyZWFtIGludG8gdGhlIEhUTUxcbiAgICAgICAgY3JlYXRlRmxpZ2h0RGF0YUluamVjdGlvblRyYW5zZm9ybVN0cmVhbShpbmxpbmVkRGF0YVN0cmVhbSwgdHJ1ZSksXG4gICAgICAgIC8vIENsb3NlIHRhZ3Mgc2hvdWxkIGFsd2F5cyBiZSBkZWZlcnJlZCB0byB0aGUgZW5kXG4gICAgICAgIGNyZWF0ZU1vdmVTdWZmaXhTdHJlYW0oKVxuICAgIF0pO1xufVxuYXN5bmMgZnVuY3Rpb24gY29udGludWVTdGF0aWNGYWxsYmFja1ByZXJlbmRlcihwcmVyZW5kZXJTdHJlYW0sIHsgaW5saW5lZERhdGFTdHJlYW0sIGdldFNlcnZlckluc2VydGVkSFRNTCwgZ2V0U2VydmVySW5zZXJ0ZWRNZXRhZGF0YSwgZGVwbG95bWVudElkIH0pIHtcbiAgICAvLyBTYW1lIGFzIGBjb250aW51ZVN0YXRpY1ByZXJlbmRlcmAsIGJ1dCBhbHNvIGluc2VydHMgYW4gYWRkaXRpb25hbCBzY3JpcHRcbiAgICAvLyB0byBpbnN0cnVjdCB0aGUgY2xpZW50IHRvIHN0YXJ0IGZldGNoaW5nIHRoZSBoeWRyYXRpb24gZGF0YSBhcyBlYXJseVxuICAgIC8vIGFzIHBvc3NpYmxlLlxuICAgIHJldHVybiBjaGFpblRyYW5zZm9ybWVycyhwcmVyZW5kZXJTdHJlYW0sIFtcbiAgICAgICAgLy8gQnVmZmVyIGV2ZXJ5dGhpbmcgdG8gYXZvaWQgZmx1c2hpbmcgdG9vIGZyZXF1ZW50bHlcbiAgICAgICAgY3JlYXRlQnVmZmVyZWRUcmFuc2Zvcm1TdHJlYW0oKSxcbiAgICAgICAgLy8gSW5zZXJ0IGRhdGEtZHBsLWlkIGF0dHJpYnV0ZSBvbiB0aGUgaHRtbCB0YWdcbiAgICAgICAgZGVwbG95bWVudElkID8gY3JlYXRlSHRtbERhdGFEcGxJZFRyYW5zZm9ybVN0cmVhbShkZXBsb3ltZW50SWQpIDogbnVsbCxcbiAgICAgICAgLy8gSW5zZXJ0IGdlbmVyYXRlZCB0YWdzIHRvIGhlYWRcbiAgICAgICAgY3JlYXRlSGVhZEluc2VydGlvblRyYW5zZm9ybVN0cmVhbShnZXRTZXJ2ZXJJbnNlcnRlZEhUTUwpLFxuICAgICAgICAvLyBJbnNlcnQgdGhlIGNsaWVudCByZXN1bWUgc2NyaXB0IGludG8gdGhlIGhlYWRcbiAgICAgICAgY3JlYXRlQ2xpZW50UmVzdW1lU2NyaXB0SW5zZXJ0aW9uVHJhbnNmb3JtU3RyZWFtKCksXG4gICAgICAgIC8vIFRyYW5zZm9ybSBtZXRhZGF0YVxuICAgICAgICBjcmVhdGVNZXRhZGF0YVRyYW5zZm9ybVN0cmVhbShnZXRTZXJ2ZXJJbnNlcnRlZE1ldGFkYXRhKSxcbiAgICAgICAgLy8gSW5zZXJ0IHRoZSBpbmxpbmVkIGRhdGEgKEZsaWdodCBkYXRhLCBmb3JtIHN0YXRlLCBldGMuKSBzdHJlYW0gaW50byB0aGUgSFRNTFxuICAgICAgICBjcmVhdGVGbGlnaHREYXRhSW5qZWN0aW9uVHJhbnNmb3JtU3RyZWFtKGlubGluZWREYXRhU3RyZWFtLCB0cnVlKSxcbiAgICAgICAgLy8gQ2xvc2UgdGFncyBzaG91bGQgYWx3YXlzIGJlIGRlZmVycmVkIHRvIHRoZSBlbmRcbiAgICAgICAgY3JlYXRlTW92ZVN1ZmZpeFN0cmVhbSgpXG4gICAgXSk7XG59XG5hc3luYyBmdW5jdGlvbiBjb250aW51ZUR5bmFtaWNIVE1MUmVzdW1lKHJlbmRlclN0cmVhbSwgeyBkZWxheURhdGFVbnRpbEZpcnN0SHRtbENodW5rLCBpbmxpbmVkRGF0YVN0cmVhbSwgZ2V0U2VydmVySW5zZXJ0ZWRIVE1MLCBnZXRTZXJ2ZXJJbnNlcnRlZE1ldGFkYXRhLCBkZXBsb3ltZW50SWQgfSkge1xuICAgIHJldHVybiBjaGFpblRyYW5zZm9ybWVycyhyZW5kZXJTdHJlYW0sIFtcbiAgICAgICAgLy8gQnVmZmVyIGV2ZXJ5dGhpbmcgdG8gYXZvaWQgZmx1c2hpbmcgdG9vIGZyZXF1ZW50bHlcbiAgICAgICAgY3JlYXRlQnVmZmVyZWRUcmFuc2Zvcm1TdHJlYW0oKSxcbiAgICAgICAgLy8gSW5zZXJ0IGRhdGEtZHBsLWlkIGF0dHJpYnV0ZSBvbiB0aGUgaHRtbCB0YWdcbiAgICAgICAgZGVwbG95bWVudElkID8gY3JlYXRlSHRtbERhdGFEcGxJZFRyYW5zZm9ybVN0cmVhbShkZXBsb3ltZW50SWQpIDogbnVsbCxcbiAgICAgICAgLy8gSW5zZXJ0IGdlbmVyYXRlZCB0YWdzIHRvIGhlYWRcbiAgICAgICAgY3JlYXRlSGVhZEluc2VydGlvblRyYW5zZm9ybVN0cmVhbShnZXRTZXJ2ZXJJbnNlcnRlZEhUTUwpLFxuICAgICAgICAvLyBUcmFuc2Zvcm0gbWV0YWRhdGFcbiAgICAgICAgY3JlYXRlTWV0YWRhdGFUcmFuc2Zvcm1TdHJlYW0oZ2V0U2VydmVySW5zZXJ0ZWRNZXRhZGF0YSksXG4gICAgICAgIC8vIEluc2VydCB0aGUgaW5saW5lZCBkYXRhIChGbGlnaHQgZGF0YSwgZm9ybSBzdGF0ZSwgZXRjLikgc3RyZWFtIGludG8gdGhlIEhUTUxcbiAgICAgICAgY3JlYXRlRmxpZ2h0RGF0YUluamVjdGlvblRyYW5zZm9ybVN0cmVhbShpbmxpbmVkRGF0YVN0cmVhbSwgZGVsYXlEYXRhVW50aWxGaXJzdEh0bWxDaHVuayksXG4gICAgICAgIC8vIENsb3NlIHRhZ3Mgc2hvdWxkIGFsd2F5cyBiZSBkZWZlcnJlZCB0byB0aGUgZW5kXG4gICAgICAgIGNyZWF0ZU1vdmVTdWZmaXhTdHJlYW0oKVxuICAgIF0pO1xufVxuZnVuY3Rpb24gY3JlYXRlRG9jdW1lbnRDbG9zaW5nU3RyZWFtKCkge1xuICAgIHJldHVybiBzdHJlYW1Gcm9tU3RyaW5nKENMT1NFX1RBRyk7XG59XG5mdW5jdGlvbiBjcmVhdGVSdW50aW1lUHJlZmV0Y2hUcmFuc2Zvcm1TdHJlYW0oc2VudGluZWwsIGlzUGFydGlhbCwgc3RhbGVUaW1lKSB7XG4gICAgY29uc3QgZW5jID0gbmV3IFRleHRFbmNvZGVyKCk7XG4gICAgLy8gU2VhcmNoIGZvcjogWzxzZW50aW5lbD5dXG4gICAgLy8gUmVwbGFjZSB3aXRoOiBbPGlzUGFydGlhbD4sPHN0YWxlVGltZT5dXG4gICAgY29uc3Qgc2VhcmNoID0gZW5jLmVuY29kZShgWyR7c2VudGluZWx9XWApO1xuICAgIGNvbnN0IGZpcnN0ID0gc2VhcmNoWzBdO1xuICAgIGNvbnN0IHJlcGxhY2UgPSBlbmMuZW5jb2RlKGBbJHtpc1BhcnRpYWx9LCR7c3RhbGVUaW1lfV1gKTtcbiAgICBjb25zdCBzZWFyY2hMZW4gPSBzZWFyY2gubGVuZ3RoO1xuICAgIGxldCBjdXJyZW50Q2h1bmsgPSBudWxsO1xuICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgIGZ1bmN0aW9uIHByb2Nlc3NDaHVuayhjb250cm9sbGVyLCBuZXh0Q2h1bmspIHtcbiAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICBpZiAobmV4dENodW5rKSB7XG4gICAgICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKG5leHRDaHVuayk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN1cnJlbnRDaHVuaykge1xuICAgICAgICAgICAgLy8gV2UgY2FuJ3Qgc2VhcmNoIHBhc3QgdGhlIGluZGV4IHRoYXQgY2FuIGNvbnRhaW4gYSBmdWxsIG1hdGNoXG4gICAgICAgICAgICBsZXQgZXhjbHVzaXZlVXBwZXJCb3VuZCA9IGN1cnJlbnRDaHVuay5sZW5ndGggLSAoc2VhcmNoTGVuIC0gMSk7XG4gICAgICAgICAgICBpZiAobmV4dENodW5rKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhbnkgb3ZlcmZsb3cgYnl0ZXMgd2UgY2FuIHNlYXJjaCB1cCB0byB0aGUgY2h1bmsncyBmaW5hbCBieXRlXG4gICAgICAgICAgICAgICAgZXhjbHVzaXZlVXBwZXJCb3VuZCArPSBNYXRoLm1pbihuZXh0Q2h1bmsubGVuZ3RoLCBzZWFyY2hMZW4gLSAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChleGNsdXNpdmVVcHBlckJvdW5kIDwgMSkge1xuICAgICAgICAgICAgICAgIC8vIHdlIGNhbid0IG1hdGNoIHRoZSBjdXJyZW50IGNodW5rLlxuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjdXJyZW50Q2h1bmspO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRDaHVuayA9IG5leHRDaHVuayAvLyBhZHZhbmNlIHNvIHdlIGRvbid0IHByb2Nlc3MgdGhpcyBjaHVuayBhZ2FpblxuICAgICAgICAgICAgICAgIDtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgY3VycmVudEluZGV4ID0gY3VycmVudENodW5rLmluZGV4T2YoZmlyc3QpO1xuICAgICAgICAgICAgLy8gY2hlY2sgdGhlIGN1cnJlbnQgY2FuZGlkYXRlIG1hdGNoIGlmIGl0IGlzIHdpdGhpbiB0aGUgYm91bmRzIG9mIG91ciBzZWFyY2ggc3BhY2UgZm9yIHRoZSBjdXJyZW50Q2h1bmtcbiAgICAgICAgICAgIGNhbmRpZGF0ZUxvb3A6IHdoaWxlKC0xIDwgY3VycmVudEluZGV4ICYmIGN1cnJlbnRJbmRleCA8IGV4Y2x1c2l2ZVVwcGVyQm91bmQpe1xuICAgICAgICAgICAgICAgIC8vIFdlIGFscmVhZHkga25vdyBpbmRleCAwIG1hdGNoZXMgYmVjYXVzZSB3ZSB1c2VkIGluZGV4T2YgdG8gZmluZCB0aGUgY2FuZGlkYXRlSW5kZXggc28gd2Ugc3RhcnQgYXQgaW5kZXggMVxuICAgICAgICAgICAgICAgIGxldCBtYXRjaEluZGV4ID0gMTtcbiAgICAgICAgICAgICAgICB3aGlsZShtYXRjaEluZGV4IDwgc2VhcmNoTGVuKXtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlSW5kZXggPSBjdXJyZW50SW5kZXggKyBtYXRjaEluZGV4O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5kaWRhdGVWYWx1ZSA9IGNhbmRpZGF0ZUluZGV4IDwgY3VycmVudENodW5rLmxlbmd0aCA/IGN1cnJlbnRDaHVua1tjYW5kaWRhdGVJbmRleF0gOiBuZXh0Q2h1bmtbY2FuZGlkYXRlSW5kZXggLSBjdXJyZW50Q2h1bmsubGVuZ3RoXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZVZhbHVlICE9PSBzZWFyY2hbbWF0Y2hJbmRleF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vIG1hdGNoLCByZXNldCBhbmQgY29udGludWUgdGhlIHNlYXJjaCBmcm9tIHRoZSBuZXh0IHBvc2l0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50SW5kZXggPSBjdXJyZW50Q2h1bmsuaW5kZXhPZihmaXJzdCwgY3VycmVudEluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSBjYW5kaWRhdGVMb29wO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoSW5kZXgrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gV2UgZm91bmQgYSBjb21wbGV0ZSBtYXRjaC4gY3VycmVudEluZGV4IGlzIG91ciBzdGFydGluZyBwb2ludCB0byByZXBsYWNlIHRoZSB2YWx1ZS5cbiAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgLy8gZW5xdWV1ZSBldmVyeXRoaW5nIHVwIHRvIHRoZSBtYXRjaFxuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjdXJyZW50Q2h1bmsuc3ViYXJyYXkoMCwgY3VycmVudEluZGV4KSk7XG4gICAgICAgICAgICAgICAgLy8gZW5xdWV1ZSB0aGUgcmVwbGFjZW1lbnQgdmFsdWVcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUocmVwbGFjZSk7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIGJ5dGVzIGluIHRoZSBjdXJyZW50Q2h1bmsgYWZ0ZXIgdGhlIG1hdGNoIGVucXVldWUgdGhlbVxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50SW5kZXggKyBzZWFyY2hMZW4gPCBjdXJyZW50Q2h1bmsubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjdXJyZW50Q2h1bmsuc2xpY2UoY3VycmVudEluZGV4ICsgc2VhcmNoTGVuKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBuZXh0IGNodW5rIHdlIGVucXVldWUgaXQgbm93XG4gICAgICAgICAgICAgICAgaWYgKG5leHRDaHVuaykge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiByZXBsYWNlbWVudCBzcGlsbHMgb3ZlciB0byB0aGUgbmV4dCBjaHVuayB3ZSBmaXJzdCBleGNsdWRlIHRoZSByZXBsYWNlZCBieXRlc1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvdmVyZmxvd0J5dGVzID0gY3VycmVudEluZGV4ICsgc2VhcmNoTGVuIC0gY3VycmVudENodW5rLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJ1bmNhdGVkQ2h1bmsgPSBvdmVyZmxvd0J5dGVzID4gMCA/IG5leHRDaHVuay5zdWJhcnJheShvdmVyZmxvd0J5dGVzKSA6IG5leHRDaHVuaztcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKHRydW5jYXRlZENodW5rKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gV2UgYXJlIG5vdyBpbiBmb3VuZCBtb2RlIGFuZCBkb24ndCBuZWVkIHRvIHRyYWNrIGN1cnJlbnRDaHVuayBhbnltb3JlXG4gICAgICAgICAgICAgICAgY3VycmVudENodW5rID0gbnVsbDtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBObyBtYXRjaCBmb3VuZCBpbiB0aGlzIGNodW5rLCBlbWl0IGl0IGFuZCB3YWl0IGZvciB0aGUgbmV4dCBvbmVcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjdXJyZW50Q2h1bmspO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFkdmFuY2UgdG8gdGhlIG5leHQgY2h1bmtcbiAgICAgICAgY3VycmVudENodW5rID0gbmV4dENodW5rO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7XG4gICAgICAgIHRyYW5zZm9ybSAoY2h1bmssIGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIHByb2Nlc3NDaHVuayhjb250cm9sbGVyLCBjaHVuayk7XG4gICAgICAgIH0sXG4gICAgICAgIGZsdXNoIChjb250cm9sbGVyKSB7XG4gICAgICAgICAgICBwcm9jZXNzQ2h1bmsoY29udHJvbGxlciwgbnVsbCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bm9kZS13ZWItc3RyZWFtcy1oZWxwZXIuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/stream-utils/node-web-streams-helper.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/stream-utils/uint8array-helpers.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/stream-utils/uint8array-helpers.js ***!
|
||
\**************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * Find the starting index of Uint8Array `b` within Uint8Array `a`.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n indexOfUint8Array: function() {\n return indexOfUint8Array;\n },\n isEquivalentUint8Arrays: function() {\n return isEquivalentUint8Arrays;\n },\n removeFromUint8Array: function() {\n return removeFromUint8Array;\n }\n});\nfunction indexOfUint8Array(a, b) {\n if (b.length === 0) return 0;\n if (a.length === 0 || b.length > a.length) return -1;\n // Use Node's native implementation when available.\n if (typeof Buffer !== 'undefined') {\n const haystack = Buffer.isBuffer(a) ? a : Buffer.from(a.buffer, a.byteOffset, a.byteLength);\n return haystack.indexOf(b);\n }\n // start iterating through `a`\n for(let i = 0; i <= a.length - b.length; i++){\n let completeMatch = true;\n // from index `i`, iterate through `b` and check for mismatch\n for(let j = 0; j < b.length; j++){\n // if the values do not match, then this isn't a complete match, exit `b` iteration early and iterate to next index of `a`.\n if (a[i + j] !== b[j]) {\n completeMatch = false;\n break;\n }\n }\n if (completeMatch) {\n return i;\n }\n }\n return -1;\n}\nfunction isEquivalentUint8Arrays(a, b) {\n if (a.length !== b.length) return false;\n for(let i = 0; i < a.length; i++){\n if (a[i] !== b[i]) return false;\n }\n return true;\n}\nfunction removeFromUint8Array(a, b) {\n const tagIndex = indexOfUint8Array(a, b);\n if (tagIndex === 0) return a.subarray(b.length);\n if (tagIndex > -1) {\n const removed = new Uint8Array(a.length - b.length);\n removed.set(a.subarray(0, tagIndex));\n removed.set(a.subarray(tagIndex + b.length), tagIndex);\n return removed;\n } else {\n return a;\n }\n}\n\n//# sourceMappingURL=uint8array-helpers.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9zdHJlYW0tdXRpbHMvdWludDhhcnJheS1oZWxwZXJzLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQSxJQUFpQjtBQUNqQiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBSUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsMEJBQTBCO0FBQzdDO0FBQ0E7QUFDQSx1QkFBdUIsY0FBYztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGNBQWM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL3N0cmVhbS11dGlscy91aW50OGFycmF5LWhlbHBlcnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGaW5kIHRoZSBzdGFydGluZyBpbmRleCBvZiBVaW50OEFycmF5IGBiYCB3aXRoaW4gVWludDhBcnJheSBgYWAuXG4gKi8gXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBpbmRleE9mVWludDhBcnJheTogbnVsbCxcbiAgICBpc0VxdWl2YWxlbnRVaW50OEFycmF5czogbnVsbCxcbiAgICByZW1vdmVGcm9tVWludDhBcnJheTogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBpbmRleE9mVWludDhBcnJheTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpbmRleE9mVWludDhBcnJheTtcbiAgICB9LFxuICAgIGlzRXF1aXZhbGVudFVpbnQ4QXJyYXlzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGlzRXF1aXZhbGVudFVpbnQ4QXJyYXlzO1xuICAgIH0sXG4gICAgcmVtb3ZlRnJvbVVpbnQ4QXJyYXk6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVtb3ZlRnJvbVVpbnQ4QXJyYXk7XG4gICAgfVxufSk7XG5mdW5jdGlvbiBpbmRleE9mVWludDhBcnJheShhLCBiKSB7XG4gICAgaWYgKGIubGVuZ3RoID09PSAwKSByZXR1cm4gMDtcbiAgICBpZiAoYS5sZW5ndGggPT09IDAgfHwgYi5sZW5ndGggPiBhLmxlbmd0aCkgcmV0dXJuIC0xO1xuICAgIC8vIFVzZSBOb2RlJ3MgbmF0aXZlIGltcGxlbWVudGF0aW9uIHdoZW4gYXZhaWxhYmxlLlxuICAgIGlmICh0eXBlb2YgQnVmZmVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb25zdCBoYXlzdGFjayA9IEJ1ZmZlci5pc0J1ZmZlcihhKSA/IGEgOiBCdWZmZXIuZnJvbShhLmJ1ZmZlciwgYS5ieXRlT2Zmc2V0LCBhLmJ5dGVMZW5ndGgpO1xuICAgICAgICByZXR1cm4gaGF5c3RhY2suaW5kZXhPZihiKTtcbiAgICB9XG4gICAgLy8gc3RhcnQgaXRlcmF0aW5nIHRocm91Z2ggYGFgXG4gICAgZm9yKGxldCBpID0gMDsgaSA8PSBhLmxlbmd0aCAtIGIubGVuZ3RoOyBpKyspe1xuICAgICAgICBsZXQgY29tcGxldGVNYXRjaCA9IHRydWU7XG4gICAgICAgIC8vIGZyb20gaW5kZXggYGlgLCBpdGVyYXRlIHRocm91Z2ggYGJgIGFuZCBjaGVjayBmb3IgbWlzbWF0Y2hcbiAgICAgICAgZm9yKGxldCBqID0gMDsgaiA8IGIubGVuZ3RoOyBqKyspe1xuICAgICAgICAgICAgLy8gaWYgdGhlIHZhbHVlcyBkbyBub3QgbWF0Y2gsIHRoZW4gdGhpcyBpc24ndCBhIGNvbXBsZXRlIG1hdGNoLCBleGl0IGBiYCBpdGVyYXRpb24gZWFybHkgYW5kIGl0ZXJhdGUgdG8gbmV4dCBpbmRleCBvZiBgYWAuXG4gICAgICAgICAgICBpZiAoYVtpICsgal0gIT09IGJbal0pIHtcbiAgICAgICAgICAgICAgICBjb21wbGV0ZU1hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbXBsZXRlTWF0Y2gpIHtcbiAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbn1cbmZ1bmN0aW9uIGlzRXF1aXZhbGVudFVpbnQ4QXJyYXlzKGEsIGIpIHtcbiAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspe1xuICAgICAgICBpZiAoYVtpXSAhPT0gYltpXSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIHJlbW92ZUZyb21VaW50OEFycmF5KGEsIGIpIHtcbiAgICBjb25zdCB0YWdJbmRleCA9IGluZGV4T2ZVaW50OEFycmF5KGEsIGIpO1xuICAgIGlmICh0YWdJbmRleCA9PT0gMCkgcmV0dXJuIGEuc3ViYXJyYXkoYi5sZW5ndGgpO1xuICAgIGlmICh0YWdJbmRleCA+IC0xKSB7XG4gICAgICAgIGNvbnN0IHJlbW92ZWQgPSBuZXcgVWludDhBcnJheShhLmxlbmd0aCAtIGIubGVuZ3RoKTtcbiAgICAgICAgcmVtb3ZlZC5zZXQoYS5zdWJhcnJheSgwLCB0YWdJbmRleCkpO1xuICAgICAgICByZW1vdmVkLnNldChhLnN1YmFycmF5KHRhZ0luZGV4ICsgYi5sZW5ndGgpLCB0YWdJbmRleCk7XG4gICAgICAgIHJldHVybiByZW1vdmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBhO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dWludDhhcnJheS1oZWxwZXJzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/stream-utils/uint8array-helpers.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/web/error.js":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/next/dist/server/web/error.js ***!
|
||
\****************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n PageSignatureError: function() {\n return PageSignatureError;\n },\n RemovedPageError: function() {\n return RemovedPageError;\n },\n RemovedUAError: function() {\n return RemovedUAError;\n }\n});\nclass PageSignatureError extends Error {\n constructor({ page }){\n super(`The middleware \"${page}\" accepts an async API directly with the form:\n \n export function middleware(request, event) {\n return NextResponse.redirect('/new-location')\n }\n \n Read more: https://nextjs.org/docs/messages/middleware-new-signature\n `);\n }\n}\nclass RemovedPageError extends Error {\n constructor(){\n super(`The request.page has been deprecated in favour of \\`URLPattern\\`.\n Read more: https://nextjs.org/docs/messages/middleware-request-page\n `);\n }\n}\nclass RemovedUAError extends Error {\n constructor(){\n super(`The request.ua has been removed in favour of \\`userAgent\\` function.\n Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent\n `);\n }\n}\n\n//# sourceMappingURL=error.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvZXJyb3IuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBSUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBLGtCQUFrQixNQUFNO0FBQ3hCLGlDQUFpQyxLQUFLO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvZXJyb3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBQYWdlU2lnbmF0dXJlRXJyb3I6IG51bGwsXG4gICAgUmVtb3ZlZFBhZ2VFcnJvcjogbnVsbCxcbiAgICBSZW1vdmVkVUFFcnJvcjogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBQYWdlU2lnbmF0dXJlRXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUGFnZVNpZ25hdHVyZUVycm9yO1xuICAgIH0sXG4gICAgUmVtb3ZlZFBhZ2VFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSZW1vdmVkUGFnZUVycm9yO1xuICAgIH0sXG4gICAgUmVtb3ZlZFVBRXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUmVtb3ZlZFVBRXJyb3I7XG4gICAgfVxufSk7XG5jbGFzcyBQYWdlU2lnbmF0dXJlRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IoeyBwYWdlIH0pe1xuICAgICAgICBzdXBlcihgVGhlIG1pZGRsZXdhcmUgXCIke3BhZ2V9XCIgYWNjZXB0cyBhbiBhc3luYyBBUEkgZGlyZWN0bHkgd2l0aCB0aGUgZm9ybTpcbiAgXG4gIGV4cG9ydCBmdW5jdGlvbiBtaWRkbGV3YXJlKHJlcXVlc3QsIGV2ZW50KSB7XG4gICAgcmV0dXJuIE5leHRSZXNwb25zZS5yZWRpcmVjdCgnL25ldy1sb2NhdGlvbicpXG4gIH1cbiAgXG4gIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbWlkZGxld2FyZS1uZXctc2lnbmF0dXJlXG4gIGApO1xuICAgIH1cbn1cbmNsYXNzIFJlbW92ZWRQYWdlRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IoKXtcbiAgICAgICAgc3VwZXIoYFRoZSByZXF1ZXN0LnBhZ2UgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgXFxgVVJMUGF0dGVyblxcYC5cbiAgUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9taWRkbGV3YXJlLXJlcXVlc3QtcGFnZVxuICBgKTtcbiAgICB9XG59XG5jbGFzcyBSZW1vdmVkVUFFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3Rvcigpe1xuICAgICAgICBzdXBlcihgVGhlIHJlcXVlc3QudWEgaGFzIGJlZW4gcmVtb3ZlZCBpbiBmYXZvdXIgb2YgXFxgdXNlckFnZW50XFxgIGZ1bmN0aW9uLlxuICBSZWFkIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL21pZGRsZXdhcmUtcGFyc2UtdXNlci1hZ2VudFxuICBgKTtcbiAgICB9XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVycm9yLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/web/error.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/web/next-url.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/next/dist/server/web/next-url.js ***!
|
||
\*******************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"NextURL\", ({\n enumerable: true,\n get: function() {\n return NextURL;\n }\n}));\nconst _detectdomainlocale = __webpack_require__(/*! ../../shared/lib/i18n/detect-domain-locale */ \"(rsc)/./node_modules/next/dist/shared/lib/i18n/detect-domain-locale.js\");\nconst _formatnextpathnameinfo = __webpack_require__(/*! ../../shared/lib/router/utils/format-next-pathname-info */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js\");\nconst _gethostname = __webpack_require__(/*! ../../shared/lib/get-hostname */ \"(rsc)/./node_modules/next/dist/shared/lib/get-hostname.js\");\nconst _getnextpathnameinfo = __webpack_require__(/*! ../../shared/lib/router/utils/get-next-pathname-info */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js\");\nconst REGEX_LOCALHOST_HOSTNAME = /^(?:127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|\\[::1\\]|localhost)$/;\nfunction parseURL(url, base) {\n const parsed = new URL(String(url), base && String(base));\n if (REGEX_LOCALHOST_HOSTNAME.test(parsed.hostname)) {\n parsed.hostname = 'localhost';\n }\n return parsed;\n}\nconst Internal = Symbol('NextURLInternal');\nclass NextURL {\n constructor(input, baseOrOpts, opts){\n let base;\n let options;\n if (typeof baseOrOpts === 'object' && 'pathname' in baseOrOpts || typeof baseOrOpts === 'string') {\n base = baseOrOpts;\n options = opts || {};\n } else {\n options = opts || baseOrOpts || {};\n }\n this[Internal] = {\n url: parseURL(input, base ?? options.base),\n options: options,\n basePath: ''\n };\n this.analyze();\n }\n analyze() {\n var _this_Internal_options_nextConfig_i18n, _this_Internal_options_nextConfig, _this_Internal_domainLocale, _this_Internal_options_nextConfig_i18n1, _this_Internal_options_nextConfig1;\n const info = (0, _getnextpathnameinfo.getNextPathnameInfo)(this[Internal].url.pathname, {\n nextConfig: this[Internal].options.nextConfig,\n parseData: !undefined,\n i18nProvider: this[Internal].options.i18nProvider\n });\n const hostname = (0, _gethostname.getHostname)(this[Internal].url, this[Internal].options.headers);\n this[Internal].domainLocale = this[Internal].options.i18nProvider ? this[Internal].options.i18nProvider.detectDomainLocale(hostname) : (0, _detectdomainlocale.detectDomainLocale)((_this_Internal_options_nextConfig = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n = _this_Internal_options_nextConfig.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n.domains, hostname);\n const defaultLocale = ((_this_Internal_domainLocale = this[Internal].domainLocale) == null ? void 0 : _this_Internal_domainLocale.defaultLocale) || ((_this_Internal_options_nextConfig1 = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n1 = _this_Internal_options_nextConfig1.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n1.defaultLocale);\n this[Internal].url.pathname = info.pathname;\n this[Internal].defaultLocale = defaultLocale;\n this[Internal].basePath = info.basePath ?? '';\n this[Internal].buildId = info.buildId;\n this[Internal].locale = info.locale ?? defaultLocale;\n this[Internal].trailingSlash = info.trailingSlash;\n }\n formatPathname() {\n return (0, _formatnextpathnameinfo.formatNextPathnameInfo)({\n basePath: this[Internal].basePath,\n buildId: this[Internal].buildId,\n defaultLocale: !this[Internal].options.forceLocale ? this[Internal].defaultLocale : undefined,\n locale: this[Internal].locale,\n pathname: this[Internal].url.pathname,\n trailingSlash: this[Internal].trailingSlash\n });\n }\n formatSearch() {\n return this[Internal].url.search;\n }\n get buildId() {\n return this[Internal].buildId;\n }\n set buildId(buildId) {\n this[Internal].buildId = buildId;\n }\n get locale() {\n return this[Internal].locale ?? '';\n }\n set locale(locale) {\n var _this_Internal_options_nextConfig_i18n, _this_Internal_options_nextConfig;\n if (!this[Internal].locale || !((_this_Internal_options_nextConfig = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n = _this_Internal_options_nextConfig.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n.locales.includes(locale))) {\n throw Object.defineProperty(new TypeError(`The NextURL configuration includes no locale \"${locale}\"`), \"__NEXT_ERROR_CODE\", {\n value: \"E597\",\n enumerable: false,\n configurable: true\n });\n }\n this[Internal].locale = locale;\n }\n get defaultLocale() {\n return this[Internal].defaultLocale;\n }\n get domainLocale() {\n return this[Internal].domainLocale;\n }\n get searchParams() {\n return this[Internal].url.searchParams;\n }\n get host() {\n return this[Internal].url.host;\n }\n set host(value) {\n this[Internal].url.host = value;\n }\n get hostname() {\n return this[Internal].url.hostname;\n }\n set hostname(value) {\n this[Internal].url.hostname = value;\n }\n get port() {\n return this[Internal].url.port;\n }\n set port(value) {\n this[Internal].url.port = value;\n }\n get protocol() {\n return this[Internal].url.protocol;\n }\n set protocol(value) {\n this[Internal].url.protocol = value;\n }\n get href() {\n const pathname = this.formatPathname();\n const search = this.formatSearch();\n return `${this.protocol}//${this.host}${pathname}${search}${this.hash}`;\n }\n set href(url) {\n this[Internal].url = parseURL(url);\n this.analyze();\n }\n get origin() {\n return this[Internal].url.origin;\n }\n get pathname() {\n return this[Internal].url.pathname;\n }\n set pathname(value) {\n this[Internal].url.pathname = value;\n }\n get hash() {\n return this[Internal].url.hash;\n }\n set hash(value) {\n this[Internal].url.hash = value;\n }\n get search() {\n return this[Internal].url.search;\n }\n set search(value) {\n this[Internal].url.search = value;\n }\n get password() {\n return this[Internal].url.password;\n }\n set password(value) {\n this[Internal].url.password = value;\n }\n get username() {\n return this[Internal].url.username;\n }\n set username(value) {\n this[Internal].url.username = value;\n }\n get basePath() {\n return this[Internal].basePath;\n }\n set basePath(value) {\n this[Internal].basePath = value.startsWith('/') ? value : `/${value}`;\n }\n toString() {\n return this.href;\n }\n toJSON() {\n return this.href;\n }\n [Symbol.for('edge-runtime.inspect.custom')]() {\n return {\n href: this.href,\n origin: this.origin,\n protocol: this.protocol,\n username: this.username,\n password: this.password,\n host: this.host,\n hostname: this.hostname,\n port: this.port,\n pathname: this.pathname,\n search: this.search,\n searchParams: this.searchParams,\n hash: this.hash\n };\n }\n clone() {\n return new NextURL(String(this), this[Internal].options);\n }\n}\n\n//# sourceMappingURL=next-url.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvbmV4dC11cmwuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRiwyQ0FBMEM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRiw0QkFBNEIsbUJBQU8sQ0FBQywwSEFBNEM7QUFDaEYsZ0NBQWdDLG1CQUFPLENBQUMsb0pBQXlEO0FBQ2pHLHFCQUFxQixtQkFBTyxDQUFDLGdHQUErQjtBQUM1RCw2QkFBNkIsbUJBQU8sQ0FBQyw4SUFBc0Q7QUFDM0Ysd0ZBQXdGLEVBQUU7QUFDMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLFNBQThDO0FBQ3RFO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVHQUF1RyxPQUFPO0FBQzlHO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsY0FBYyxJQUFJLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFVBQVU7QUFDOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0VBQXNFLE1BQU07QUFDNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvd2ViL25leHQtdXJsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTmV4dFVSTFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTmV4dFVSTDtcbiAgICB9XG59KTtcbmNvbnN0IF9kZXRlY3Rkb21haW5sb2NhbGUgPSByZXF1aXJlKFwiLi4vLi4vc2hhcmVkL2xpYi9pMThuL2RldGVjdC1kb21haW4tbG9jYWxlXCIpO1xuY29uc3QgX2Zvcm1hdG5leHRwYXRobmFtZWluZm8gPSByZXF1aXJlKFwiLi4vLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZm9ybWF0LW5leHQtcGF0aG5hbWUtaW5mb1wiKTtcbmNvbnN0IF9nZXRob3N0bmFtZSA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvbGliL2dldC1ob3N0bmFtZVwiKTtcbmNvbnN0IF9nZXRuZXh0cGF0aG5hbWVpbmZvID0gcmVxdWlyZShcIi4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2dldC1uZXh0LXBhdGhuYW1lLWluZm9cIik7XG5jb25zdCBSRUdFWF9MT0NBTEhPU1RfSE9TVE5BTUUgPSAvXig/OjEyNyg/OlxcLig/OjI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPykpezN9fFxcWzo6MVxcXXxsb2NhbGhvc3QpJC87XG5mdW5jdGlvbiBwYXJzZVVSTCh1cmwsIGJhc2UpIHtcbiAgICBjb25zdCBwYXJzZWQgPSBuZXcgVVJMKFN0cmluZyh1cmwpLCBiYXNlICYmIFN0cmluZyhiYXNlKSk7XG4gICAgaWYgKFJFR0VYX0xPQ0FMSE9TVF9IT1NUTkFNRS50ZXN0KHBhcnNlZC5ob3N0bmFtZSkpIHtcbiAgICAgICAgcGFyc2VkLmhvc3RuYW1lID0gJ2xvY2FsaG9zdCc7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZWQ7XG59XG5jb25zdCBJbnRlcm5hbCA9IFN5bWJvbCgnTmV4dFVSTEludGVybmFsJyk7XG5jbGFzcyBOZXh0VVJMIHtcbiAgICBjb25zdHJ1Y3RvcihpbnB1dCwgYmFzZU9yT3B0cywgb3B0cyl7XG4gICAgICAgIGxldCBiYXNlO1xuICAgICAgICBsZXQgb3B0aW9ucztcbiAgICAgICAgaWYgKHR5cGVvZiBiYXNlT3JPcHRzID09PSAnb2JqZWN0JyAmJiAncGF0aG5hbWUnIGluIGJhc2VPck9wdHMgfHwgdHlwZW9mIGJhc2VPck9wdHMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBiYXNlID0gYmFzZU9yT3B0cztcbiAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRzIHx8IHt9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3B0aW9ucyA9IG9wdHMgfHwgYmFzZU9yT3B0cyB8fCB7fTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzW0ludGVybmFsXSA9IHtcbiAgICAgICAgICAgIHVybDogcGFyc2VVUkwoaW5wdXQsIGJhc2UgPz8gb3B0aW9ucy5iYXNlKSxcbiAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICAgICAgICBiYXNlUGF0aDogJydcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5hbmFseXplKCk7XG4gICAgfVxuICAgIGFuYWx5emUoKSB7XG4gICAgICAgIHZhciBfdGhpc19JbnRlcm5hbF9vcHRpb25zX25leHRDb25maWdfaTE4biwgX3RoaXNfSW50ZXJuYWxfb3B0aW9uc19uZXh0Q29uZmlnLCBfdGhpc19JbnRlcm5hbF9kb21haW5Mb2NhbGUsIF90aGlzX0ludGVybmFsX29wdGlvbnNfbmV4dENvbmZpZ19pMThuMSwgX3RoaXNfSW50ZXJuYWxfb3B0aW9uc19uZXh0Q29uZmlnMTtcbiAgICAgICAgY29uc3QgaW5mbyA9ICgwLCBfZ2V0bmV4dHBhdGhuYW1laW5mby5nZXROZXh0UGF0aG5hbWVJbmZvKSh0aGlzW0ludGVybmFsXS51cmwucGF0aG5hbWUsIHtcbiAgICAgICAgICAgIG5leHRDb25maWc6IHRoaXNbSW50ZXJuYWxdLm9wdGlvbnMubmV4dENvbmZpZyxcbiAgICAgICAgICAgIHBhcnNlRGF0YTogIXByb2Nlc3MuZW52Ll9fTkVYVF9OT19NSURETEVXQVJFX1VSTF9OT1JNQUxJWkUsXG4gICAgICAgICAgICBpMThuUHJvdmlkZXI6IHRoaXNbSW50ZXJuYWxdLm9wdGlvbnMuaTE4blByb3ZpZGVyXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBob3N0bmFtZSA9ICgwLCBfZ2V0aG9zdG5hbWUuZ2V0SG9zdG5hbWUpKHRoaXNbSW50ZXJuYWxdLnVybCwgdGhpc1tJbnRlcm5hbF0ub3B0aW9ucy5oZWFkZXJzKTtcbiAgICAgICAgdGhpc1tJbnRlcm5hbF0uZG9tYWluTG9jYWxlID0gdGhpc1tJbnRlcm5hbF0ub3B0aW9ucy5pMThuUHJvdmlkZXIgPyB0aGlzW0ludGVybmFsXS5vcHRpb25zLmkxOG5Qcm92aWRlci5kZXRlY3REb21haW5Mb2NhbGUoaG9zdG5hbWUpIDogKDAsIF9kZXRlY3Rkb21haW5sb2NhbGUuZGV0ZWN0RG9tYWluTG9jYWxlKSgoX3RoaXNfSW50ZXJuYWxfb3B0aW9uc19uZXh0Q29uZmlnID0gdGhpc1tJbnRlcm5hbF0ub3B0aW9ucy5uZXh0Q29uZmlnKSA9PSBudWxsID8gdm9pZCAwIDogKF90aGlzX0ludGVybmFsX29wdGlvbnNfbmV4dENvbmZpZ19pMThuID0gX3RoaXNfSW50ZXJuYWxfb3B0aW9uc19uZXh0Q29uZmlnLmkxOG4pID09IG51bGwgPyB2b2lkIDAgOiBfdGhpc19JbnRlcm5hbF9vcHRpb25zX25leHRDb25maWdfaTE4bi5kb21haW5zLCBob3N0bmFtZSk7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRMb2NhbGUgPSAoKF90aGlzX0ludGVybmFsX2RvbWFpbkxvY2FsZSA9IHRoaXNbSW50ZXJuYWxdLmRvbWFpbkxvY2FsZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGlzX0ludGVybmFsX2RvbWFpbkxvY2FsZS5kZWZhdWx0TG9jYWxlKSB8fCAoKF90aGlzX0ludGVybmFsX29wdGlvbnNfbmV4dENvbmZpZzEgPSB0aGlzW0ludGVybmFsXS5vcHRpb25zLm5leHRDb25maWcpID09IG51bGwgPyB2b2lkIDAgOiAoX3RoaXNfSW50ZXJuYWxfb3B0aW9uc19uZXh0Q29uZmlnX2kxOG4xID0gX3RoaXNfSW50ZXJuYWxfb3B0aW9uc19uZXh0Q29uZmlnMS5pMThuKSA9PSBudWxsID8gdm9pZCAwIDogX3RoaXNfSW50ZXJuYWxfb3B0aW9uc19uZXh0Q29uZmlnX2kxOG4xLmRlZmF1bHRMb2NhbGUpO1xuICAgICAgICB0aGlzW0ludGVybmFsXS51cmwucGF0aG5hbWUgPSBpbmZvLnBhdGhuYW1lO1xuICAgICAgICB0aGlzW0ludGVybmFsXS5kZWZhdWx0TG9jYWxlID0gZGVmYXVsdExvY2FsZTtcbiAgICAgICAgdGhpc1tJbnRlcm5hbF0uYmFzZVBhdGggPSBpbmZvLmJhc2VQYXRoID8/ICcnO1xuICAgICAgICB0aGlzW0ludGVybmFsXS5idWlsZElkID0gaW5mby5idWlsZElkO1xuICAgICAgICB0aGlzW0ludGVybmFsXS5sb2NhbGUgPSBpbmZvLmxvY2FsZSA/PyBkZWZhdWx0TG9jYWxlO1xuICAgICAgICB0aGlzW0ludGVybmFsXS50cmFpbGluZ1NsYXNoID0gaW5mby50cmFpbGluZ1NsYXNoO1xuICAgIH1cbiAgICBmb3JtYXRQYXRobmFtZSgpIHtcbiAgICAgICAgcmV0dXJuICgwLCBfZm9ybWF0bmV4dHBhdGhuYW1laW5mby5mb3JtYXROZXh0UGF0aG5hbWVJbmZvKSh7XG4gICAgICAgICAgICBiYXNlUGF0aDogdGhpc1tJbnRlcm5hbF0uYmFzZVBhdGgsXG4gICAgICAgICAgICBidWlsZElkOiB0aGlzW0ludGVybmFsXS5idWlsZElkLFxuICAgICAgICAgICAgZGVmYXVsdExvY2FsZTogIXRoaXNbSW50ZXJuYWxdLm9wdGlvbnMuZm9yY2VMb2NhbGUgPyB0aGlzW0ludGVybmFsXS5kZWZhdWx0TG9jYWxlIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbG9jYWxlOiB0aGlzW0ludGVybmFsXS5sb2NhbGUsXG4gICAgICAgICAgICBwYXRobmFtZTogdGhpc1tJbnRlcm5hbF0udXJsLnBhdGhuYW1lLFxuICAgICAgICAgICAgdHJhaWxpbmdTbGFzaDogdGhpc1tJbnRlcm5hbF0udHJhaWxpbmdTbGFzaFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZm9ybWF0U2VhcmNoKCkge1xuICAgICAgICByZXR1cm4gdGhpc1tJbnRlcm5hbF0udXJsLnNlYXJjaDtcbiAgICB9XG4gICAgZ2V0IGJ1aWxkSWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzW0ludGVybmFsXS5idWlsZElkO1xuICAgIH1cbiAgICBzZXQgYnVpbGRJZChidWlsZElkKSB7XG4gICAgICAgIHRoaXNbSW50ZXJuYWxdLmJ1aWxkSWQgPSBidWlsZElkO1xuICAgIH1cbiAgICBnZXQgbG9jYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpc1tJbnRlcm5hbF0ubG9jYWxlID8/ICcnO1xuICAgIH1cbiAgICBzZXQgbG9jYWxlKGxvY2FsZSkge1xuICAgICAgICB2YXIgX3RoaXNfSW50ZXJuYWxfb3B0aW9uc19uZXh0Q29uZmlnX2kxOG4sIF90aGlzX0ludGVybmFsX29wdGlvbnNfbmV4dENvbmZpZztcbiAgICAgICAgaWYgKCF0aGlzW0ludGVybmFsXS5sb2NhbGUgfHwgISgoX3RoaXNfSW50ZXJuYWxfb3B0aW9uc19uZXh0Q29uZmlnID0gdGhpc1tJbnRlcm5hbF0ub3B0aW9ucy5uZXh0Q29uZmlnKSA9PSBudWxsID8gdm9pZCAwIDogKF90aGlzX0ludGVybmFsX29wdGlvbnNfbmV4dENvbmZpZ19pMThuID0gX3RoaXNfSW50ZXJuYWxfb3B0aW9uc19uZXh0Q29uZmlnLmkxOG4pID09IG51bGwgPyB2b2lkIDAgOiBfdGhpc19JbnRlcm5hbF9vcHRpb25zX25leHRDb25maWdfaTE4bi5sb2NhbGVzLmluY2x1ZGVzKGxvY2FsZSkpKSB7XG4gICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IFR5cGVFcnJvcihgVGhlIE5leHRVUkwgY29uZmlndXJhdGlvbiBpbmNsdWRlcyBubyBsb2NhbGUgXCIke2xvY2FsZX1cImApLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNTk3XCIsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzW0ludGVybmFsXS5sb2NhbGUgPSBsb2NhbGU7XG4gICAgfVxuICAgIGdldCBkZWZhdWx0TG9jYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpc1tJbnRlcm5hbF0uZGVmYXVsdExvY2FsZTtcbiAgICB9XG4gICAgZ2V0IGRvbWFpbkxvY2FsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSW50ZXJuYWxdLmRvbWFpbkxvY2FsZTtcbiAgICB9XG4gICAgZ2V0IHNlYXJjaFBhcmFtcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSW50ZXJuYWxdLnVybC5zZWFyY2hQYXJhbXM7XG4gICAgfVxuICAgIGdldCBob3N0KCkge1xuICAgICAgICByZXR1cm4gdGhpc1tJbnRlcm5hbF0udXJsLmhvc3Q7XG4gICAgfVxuICAgIHNldCBob3N0KHZhbHVlKSB7XG4gICAgICAgIHRoaXNbSW50ZXJuYWxdLnVybC5ob3N0ID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBob3N0bmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSW50ZXJuYWxdLnVybC5ob3N0bmFtZTtcbiAgICB9XG4gICAgc2V0IGhvc3RuYW1lKHZhbHVlKSB7XG4gICAgICAgIHRoaXNbSW50ZXJuYWxdLnVybC5ob3N0bmFtZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgcG9ydCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSW50ZXJuYWxdLnVybC5wb3J0O1xuICAgIH1cbiAgICBzZXQgcG9ydCh2YWx1ZSkge1xuICAgICAgICB0aGlzW0ludGVybmFsXS51cmwucG9ydCA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgcHJvdG9jb2woKSB7XG4gICAgICAgIHJldHVybiB0aGlzW0ludGVybmFsXS51cmwucHJvdG9jb2w7XG4gICAgfVxuICAgIHNldCBwcm90b2NvbCh2YWx1ZSkge1xuICAgICAgICB0aGlzW0ludGVybmFsXS51cmwucHJvdG9jb2wgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IGhyZWYoKSB7XG4gICAgICAgIGNvbnN0IHBhdGhuYW1lID0gdGhpcy5mb3JtYXRQYXRobmFtZSgpO1xuICAgICAgICBjb25zdCBzZWFyY2ggPSB0aGlzLmZvcm1hdFNlYXJjaCgpO1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5wcm90b2NvbH0vLyR7dGhpcy5ob3N0fSR7cGF0aG5hbWV9JHtzZWFyY2h9JHt0aGlzLmhhc2h9YDtcbiAgICB9XG4gICAgc2V0IGhyZWYodXJsKSB7XG4gICAgICAgIHRoaXNbSW50ZXJuYWxdLnVybCA9IHBhcnNlVVJMKHVybCk7XG4gICAgICAgIHRoaXMuYW5hbHl6ZSgpO1xuICAgIH1cbiAgICBnZXQgb3JpZ2luKCkge1xuICAgICAgICByZXR1cm4gdGhpc1tJbnRlcm5hbF0udXJsLm9yaWdpbjtcbiAgICB9XG4gICAgZ2V0IHBhdGhuYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpc1tJbnRlcm5hbF0udXJsLnBhdGhuYW1lO1xuICAgIH1cbiAgICBzZXQgcGF0aG5hbWUodmFsdWUpIHtcbiAgICAgICAgdGhpc1tJbnRlcm5hbF0udXJsLnBhdGhuYW1lID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBoYXNoKCkge1xuICAgICAgICByZXR1cm4gdGhpc1tJbnRlcm5hbF0udXJsLmhhc2g7XG4gICAgfVxuICAgIHNldCBoYXNoKHZhbHVlKSB7XG4gICAgICAgIHRoaXNbSW50ZXJuYWxdLnVybC5oYXNoID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBzZWFyY2goKSB7XG4gICAgICAgIHJldHVybiB0aGlzW0ludGVybmFsXS51cmwuc2VhcmNoO1xuICAgIH1cbiAgICBzZXQgc2VhcmNoKHZhbHVlKSB7XG4gICAgICAgIHRoaXNbSW50ZXJuYWxdLnVybC5zZWFyY2ggPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IHBhc3N3b3JkKCkge1xuICAgICAgICByZXR1cm4gdGhpc1tJbnRlcm5hbF0udXJsLnBhc3N3b3JkO1xuICAgIH1cbiAgICBzZXQgcGFzc3dvcmQodmFsdWUpIHtcbiAgICAgICAgdGhpc1tJbnRlcm5hbF0udXJsLnBhc3N3b3JkID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCB1c2VybmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSW50ZXJuYWxdLnVybC51c2VybmFtZTtcbiAgICB9XG4gICAgc2V0IHVzZXJuYW1lKHZhbHVlKSB7XG4gICAgICAgIHRoaXNbSW50ZXJuYWxdLnVybC51c2VybmFtZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgYmFzZVBhdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzW0ludGVybmFsXS5iYXNlUGF0aDtcbiAgICB9XG4gICAgc2V0IGJhc2VQYXRoKHZhbHVlKSB7XG4gICAgICAgIHRoaXNbSW50ZXJuYWxdLmJhc2VQYXRoID0gdmFsdWUuc3RhcnRzV2l0aCgnLycpID8gdmFsdWUgOiBgLyR7dmFsdWV9YDtcbiAgICB9XG4gICAgdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhyZWY7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHJlZjtcbiAgICB9XG4gICAgW1N5bWJvbC5mb3IoJ2VkZ2UtcnVudGltZS5pbnNwZWN0LmN1c3RvbScpXSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhyZWY6IHRoaXMuaHJlZixcbiAgICAgICAgICAgIG9yaWdpbjogdGhpcy5vcmlnaW4sXG4gICAgICAgICAgICBwcm90b2NvbDogdGhpcy5wcm90b2NvbCxcbiAgICAgICAgICAgIHVzZXJuYW1lOiB0aGlzLnVzZXJuYW1lLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IHRoaXMucGFzc3dvcmQsXG4gICAgICAgICAgICBob3N0OiB0aGlzLmhvc3QsXG4gICAgICAgICAgICBob3N0bmFtZTogdGhpcy5ob3N0bmFtZSxcbiAgICAgICAgICAgIHBvcnQ6IHRoaXMucG9ydCxcbiAgICAgICAgICAgIHBhdGhuYW1lOiB0aGlzLnBhdGhuYW1lLFxuICAgICAgICAgICAgc2VhcmNoOiB0aGlzLnNlYXJjaCxcbiAgICAgICAgICAgIHNlYXJjaFBhcmFtczogdGhpcy5zZWFyY2hQYXJhbXMsXG4gICAgICAgICAgICBoYXNoOiB0aGlzLmhhc2hcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY2xvbmUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgTmV4dFVSTChTdHJpbmcodGhpcyksIHRoaXNbSW50ZXJuYWxdLm9wdGlvbnMpO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bmV4dC11cmwuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/web/next-url.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/headers.js":
|
||
/*!******************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/web/spec-extension/adapters/headers.js ***!
|
||
\******************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n HeadersAdapter: function() {\n return HeadersAdapter;\n },\n ReadonlyHeadersError: function() {\n return ReadonlyHeadersError;\n }\n});\nconst _reflect = __webpack_require__(/*! ./reflect */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js\");\nclass ReadonlyHeadersError extends Error {\n constructor(){\n super('Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers');\n }\n static callable() {\n throw new ReadonlyHeadersError();\n }\n}\nclass HeadersAdapter extends Headers {\n constructor(headers){\n // We've already overridden the methods that would be called, so we're just\n // calling the super constructor to ensure that the instanceof check works.\n super();\n this.headers = new Proxy(headers, {\n get (target, prop, receiver) {\n // Because this is just an object, we expect that all \"get\" operations\n // are for properties. If it's a \"get\" for a symbol, we'll just return\n // the symbol.\n if (typeof prop === 'symbol') {\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n const lowercased = prop.toLowerCase();\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased);\n // If the original casing doesn't exist, return undefined.\n if (typeof original === 'undefined') return;\n // If the original casing exists, return the value.\n return _reflect.ReflectAdapter.get(target, original, receiver);\n },\n set (target, prop, value, receiver) {\n if (typeof prop === 'symbol') {\n return _reflect.ReflectAdapter.set(target, prop, value, receiver);\n }\n const lowercased = prop.toLowerCase();\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased);\n // If the original casing doesn't exist, use the prop as the key.\n return _reflect.ReflectAdapter.set(target, original ?? prop, value, receiver);\n },\n has (target, prop) {\n if (typeof prop === 'symbol') return _reflect.ReflectAdapter.has(target, prop);\n const lowercased = prop.toLowerCase();\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased);\n // If the original casing doesn't exist, return false.\n if (typeof original === 'undefined') return false;\n // If the original casing exists, return true.\n return _reflect.ReflectAdapter.has(target, original);\n },\n deleteProperty (target, prop) {\n if (typeof prop === 'symbol') return _reflect.ReflectAdapter.deleteProperty(target, prop);\n const lowercased = prop.toLowerCase();\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased);\n // If the original casing doesn't exist, return true.\n if (typeof original === 'undefined') return true;\n // If the original casing exists, delete the property.\n return _reflect.ReflectAdapter.deleteProperty(target, original);\n }\n });\n }\n /**\n * Seals a Headers instance to prevent modification by throwing an error when\n * any mutating method is called.\n */ static seal(headers) {\n return new Proxy(headers, {\n get (target, prop, receiver) {\n switch(prop){\n case 'append':\n case 'delete':\n case 'set':\n return ReadonlyHeadersError.callable;\n default:\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n }\n });\n }\n /**\n * Merges a header value into a string. This stores multiple values as an\n * array, so we need to merge them into a string.\n *\n * @param value a header value\n * @returns a merged header value (a string)\n */ merge(value) {\n if (Array.isArray(value)) return value.join(', ');\n return value;\n }\n /**\n * Creates a Headers instance from a plain object or a Headers instance.\n *\n * @param headers a plain object or a Headers instance\n * @returns a headers instance\n */ static from(headers) {\n if (headers instanceof Headers) return headers;\n return new HeadersAdapter(headers);\n }\n append(name, value) {\n const existing = this.headers[name];\n if (typeof existing === 'string') {\n this.headers[name] = [\n existing,\n value\n ];\n } else if (Array.isArray(existing)) {\n existing.push(value);\n } else {\n this.headers[name] = value;\n }\n }\n delete(name) {\n delete this.headers[name];\n }\n get(name) {\n const value = this.headers[name];\n if (typeof value !== 'undefined') return this.merge(value);\n return null;\n }\n has(name) {\n return typeof this.headers[name] !== 'undefined';\n }\n set(name, value) {\n this.headers[name] = value;\n }\n forEach(callbackfn, thisArg) {\n for (const [name, value] of this.entries()){\n callbackfn.call(thisArg, value, name, this);\n }\n }\n *entries() {\n for (const key of Object.keys(this.headers)){\n const name = key.toLowerCase();\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(name);\n yield [\n name,\n value\n ];\n }\n }\n *keys() {\n for (const key of Object.keys(this.headers)){\n const name = key.toLowerCase();\n yield name;\n }\n }\n *values() {\n for (const key of Object.keys(this.headers)){\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(key);\n yield value;\n }\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n}\n\n//# sourceMappingURL=headers.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vYWRhcHRlcnMvaGVhZGVycy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FHTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxpQkFBaUIsbUJBQU8sQ0FBQywrRkFBVztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vYWRhcHRlcnMvaGVhZGVycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIEhlYWRlcnNBZGFwdGVyOiBudWxsLFxuICAgIFJlYWRvbmx5SGVhZGVyc0Vycm9yOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIEhlYWRlcnNBZGFwdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEhlYWRlcnNBZGFwdGVyO1xuICAgIH0sXG4gICAgUmVhZG9ubHlIZWFkZXJzRXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUmVhZG9ubHlIZWFkZXJzRXJyb3I7XG4gICAgfVxufSk7XG5jb25zdCBfcmVmbGVjdCA9IHJlcXVpcmUoXCIuL3JlZmxlY3RcIik7XG5jbGFzcyBSZWFkb25seUhlYWRlcnNFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3Rvcigpe1xuICAgICAgICBzdXBlcignSGVhZGVycyBjYW5ub3QgYmUgbW9kaWZpZWQuIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL2hlYWRlcnMnKTtcbiAgICB9XG4gICAgc3RhdGljIGNhbGxhYmxlKCkge1xuICAgICAgICB0aHJvdyBuZXcgUmVhZG9ubHlIZWFkZXJzRXJyb3IoKTtcbiAgICB9XG59XG5jbGFzcyBIZWFkZXJzQWRhcHRlciBleHRlbmRzIEhlYWRlcnMge1xuICAgIGNvbnN0cnVjdG9yKGhlYWRlcnMpe1xuICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IG92ZXJyaWRkZW4gdGhlIG1ldGhvZHMgdGhhdCB3b3VsZCBiZSBjYWxsZWQsIHNvIHdlJ3JlIGp1c3RcbiAgICAgICAgLy8gY2FsbGluZyB0aGUgc3VwZXIgY29uc3RydWN0b3IgdG8gZW5zdXJlIHRoYXQgdGhlIGluc3RhbmNlb2YgY2hlY2sgd29ya3MuXG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuaGVhZGVycyA9IG5ldyBQcm94eShoZWFkZXJzLCB7XG4gICAgICAgICAgICBnZXQgKHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIHRoaXMgaXMganVzdCBhbiBvYmplY3QsIHdlIGV4cGVjdCB0aGF0IGFsbCBcImdldFwiIG9wZXJhdGlvbnNcbiAgICAgICAgICAgICAgICAvLyBhcmUgZm9yIHByb3BlcnRpZXMuIElmIGl0J3MgYSBcImdldFwiIGZvciBhIHN5bWJvbCwgd2UnbGwganVzdCByZXR1cm5cbiAgICAgICAgICAgICAgICAvLyB0aGUgc3ltYm9sLlxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbG93ZXJjYXNlZCA9IHByb3AudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAvLyBMZXQncyBmaW5kIHRoZSBvcmlnaW5hbCBjYXNpbmcgb2YgdGhlIGtleS4gVGhpcyBhc3N1bWVzIHRoYXQgdGhlcmUgaXNcbiAgICAgICAgICAgICAgICAvLyBubyBtaXhlZCBjYXNlIGtleXMgKGUuZy4gXCJDb250ZW50LVR5cGVcIiBhbmQgXCJjb250ZW50LXR5cGVcIikgaW4gdGhlXG4gICAgICAgICAgICAgICAgLy8gaGVhZGVycyBvYmplY3QuXG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWwgPSBPYmplY3Qua2V5cyhoZWFkZXJzKS5maW5kKChvKT0+by50b0xvd2VyQ2FzZSgpID09PSBsb3dlcmNhc2VkKTtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgb3JpZ2luYWwgY2FzaW5nIGRvZXNuJ3QgZXhpc3QsIHJldHVybiB1bmRlZmluZWQuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvcmlnaW5hbCA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgb3JpZ2luYWwgY2FzaW5nIGV4aXN0cywgcmV0dXJuIHRoZSB2YWx1ZS5cbiAgICAgICAgICAgICAgICByZXR1cm4gX3JlZmxlY3QuUmVmbGVjdEFkYXB0ZXIuZ2V0KHRhcmdldCwgb3JpZ2luYWwsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgKHRhcmdldCwgcHJvcCwgdmFsdWUsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3ltYm9sJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3JlZmxlY3QuUmVmbGVjdEFkYXB0ZXIuc2V0KHRhcmdldCwgcHJvcCwgdmFsdWUsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbG93ZXJjYXNlZCA9IHByb3AudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAvLyBMZXQncyBmaW5kIHRoZSBvcmlnaW5hbCBjYXNpbmcgb2YgdGhlIGtleS4gVGhpcyBhc3N1bWVzIHRoYXQgdGhlcmUgaXNcbiAgICAgICAgICAgICAgICAvLyBubyBtaXhlZCBjYXNlIGtleXMgKGUuZy4gXCJDb250ZW50LVR5cGVcIiBhbmQgXCJjb250ZW50LXR5cGVcIikgaW4gdGhlXG4gICAgICAgICAgICAgICAgLy8gaGVhZGVycyBvYmplY3QuXG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWwgPSBPYmplY3Qua2V5cyhoZWFkZXJzKS5maW5kKChvKT0+by50b0xvd2VyQ2FzZSgpID09PSBsb3dlcmNhc2VkKTtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgb3JpZ2luYWwgY2FzaW5nIGRvZXNuJ3QgZXhpc3QsIHVzZSB0aGUgcHJvcCBhcyB0aGUga2V5LlxuICAgICAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5zZXQodGFyZ2V0LCBvcmlnaW5hbCA/PyBwcm9wLCB2YWx1ZSwgcmVjZWl2ZXIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhhcyAodGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3ltYm9sJykgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmhhcyh0YXJnZXQsIHByb3ApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvd2VyY2FzZWQgPSBwcm9wLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgLy8gTGV0J3MgZmluZCB0aGUgb3JpZ2luYWwgY2FzaW5nIG9mIHRoZSBrZXkuIFRoaXMgYXNzdW1lcyB0aGF0IHRoZXJlIGlzXG4gICAgICAgICAgICAgICAgLy8gbm8gbWl4ZWQgY2FzZSBrZXlzIChlLmcuIFwiQ29udGVudC1UeXBlXCIgYW5kIFwiY29udGVudC10eXBlXCIpIGluIHRoZVxuICAgICAgICAgICAgICAgIC8vIGhlYWRlcnMgb2JqZWN0LlxuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsID0gT2JqZWN0LmtleXMoaGVhZGVycykuZmluZCgobyk9Pm8udG9Mb3dlckNhc2UoKSA9PT0gbG93ZXJjYXNlZCk7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIG9yaWdpbmFsIGNhc2luZyBkb2Vzbid0IGV4aXN0LCByZXR1cm4gZmFsc2UuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvcmlnaW5hbCA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgb3JpZ2luYWwgY2FzaW5nIGV4aXN0cywgcmV0dXJuIHRydWUuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmhhcyh0YXJnZXQsIG9yaWdpbmFsKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZWxldGVQcm9wZXJ0eSAodGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3ltYm9sJykgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmRlbGV0ZVByb3BlcnR5KHRhcmdldCwgcHJvcCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbG93ZXJjYXNlZCA9IHByb3AudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAvLyBMZXQncyBmaW5kIHRoZSBvcmlnaW5hbCBjYXNpbmcgb2YgdGhlIGtleS4gVGhpcyBhc3N1bWVzIHRoYXQgdGhlcmUgaXNcbiAgICAgICAgICAgICAgICAvLyBubyBtaXhlZCBjYXNlIGtleXMgKGUuZy4gXCJDb250ZW50LVR5cGVcIiBhbmQgXCJjb250ZW50LXR5cGVcIikgaW4gdGhlXG4gICAgICAgICAgICAgICAgLy8gaGVhZGVycyBvYmplY3QuXG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWwgPSBPYmplY3Qua2V5cyhoZWFkZXJzKS5maW5kKChvKT0+by50b0xvd2VyQ2FzZSgpID09PSBsb3dlcmNhc2VkKTtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgb3JpZ2luYWwgY2FzaW5nIGRvZXNuJ3QgZXhpc3QsIHJldHVybiB0cnVlLlxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3JpZ2luYWwgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgb3JpZ2luYWwgY2FzaW5nIGV4aXN0cywgZGVsZXRlIHRoZSBwcm9wZXJ0eS5cbiAgICAgICAgICAgICAgICByZXR1cm4gX3JlZmxlY3QuUmVmbGVjdEFkYXB0ZXIuZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBvcmlnaW5hbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICogU2VhbHMgYSBIZWFkZXJzIGluc3RhbmNlIHRvIHByZXZlbnQgbW9kaWZpY2F0aW9uIGJ5IHRocm93aW5nIGFuIGVycm9yIHdoZW5cbiAgICogYW55IG11dGF0aW5nIG1ldGhvZCBpcyBjYWxsZWQuXG4gICAqLyBzdGF0aWMgc2VhbChoZWFkZXJzKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJveHkoaGVhZGVycywge1xuICAgICAgICAgICAgZ2V0ICh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoKHByb3Ape1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdhcHBlbmQnOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdkZWxldGUnOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdzZXQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlYWRvbmx5SGVhZGVyc0Vycm9yLmNhbGxhYmxlO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICogTWVyZ2VzIGEgaGVhZGVyIHZhbHVlIGludG8gYSBzdHJpbmcuIFRoaXMgc3RvcmVzIG11bHRpcGxlIHZhbHVlcyBhcyBhblxuICAgKiBhcnJheSwgc28gd2UgbmVlZCB0byBtZXJnZSB0aGVtIGludG8gYSBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBhIGhlYWRlciB2YWx1ZVxuICAgKiBAcmV0dXJucyBhIG1lcmdlZCBoZWFkZXIgdmFsdWUgKGEgc3RyaW5nKVxuICAgKi8gbWVyZ2UodmFsdWUpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4gdmFsdWUuam9pbignLCAnKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICAvKipcbiAgICogQ3JlYXRlcyBhIEhlYWRlcnMgaW5zdGFuY2UgZnJvbSBhIHBsYWluIG9iamVjdCBvciBhIEhlYWRlcnMgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSBoZWFkZXJzIGEgcGxhaW4gb2JqZWN0IG9yIGEgSGVhZGVycyBpbnN0YW5jZVxuICAgKiBAcmV0dXJucyBhIGhlYWRlcnMgaW5zdGFuY2VcbiAgICovIHN0YXRpYyBmcm9tKGhlYWRlcnMpIHtcbiAgICAgICAgaWYgKGhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzKSByZXR1cm4gaGVhZGVycztcbiAgICAgICAgcmV0dXJuIG5ldyBIZWFkZXJzQWRhcHRlcihoZWFkZXJzKTtcbiAgICB9XG4gICAgYXBwZW5kKG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5oZWFkZXJzW25hbWVdO1xuICAgICAgICBpZiAodHlwZW9mIGV4aXN0aW5nID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhpcy5oZWFkZXJzW25hbWVdID0gW1xuICAgICAgICAgICAgICAgIGV4aXN0aW5nLFxuICAgICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICBdO1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZXhpc3RpbmcpKSB7XG4gICAgICAgICAgICBleGlzdGluZy5wdXNoKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGVhZGVyc1tuYW1lXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGRlbGV0ZShuYW1lKSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmhlYWRlcnNbbmFtZV07XG4gICAgfVxuICAgIGdldChuYW1lKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5oZWFkZXJzW25hbWVdO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIHRoaXMubWVyZ2UodmFsdWUpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaGFzKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLmhlYWRlcnNbbmFtZV0gIT09ICd1bmRlZmluZWQnO1xuICAgIH1cbiAgICBzZXQobmFtZSwgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzW25hbWVdID0gdmFsdWU7XG4gICAgfVxuICAgIGZvckVhY2goY2FsbGJhY2tmbiwgdGhpc0FyZykge1xuICAgICAgICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgdGhpcy5lbnRyaWVzKCkpe1xuICAgICAgICAgICAgY2FsbGJhY2tmbi5jYWxsKHRoaXNBcmcsIHZhbHVlLCBuYW1lLCB0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAqZW50cmllcygpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5oZWFkZXJzKSl7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAvLyBXZSBhc3NlcnQgaGVyZSB0aGF0IHRoaXMgaXMgYSBzdHJpbmcgYmVjYXVzZSB3ZSBnb3QgaXQgZnJvbSB0aGVcbiAgICAgICAgICAgIC8vIE9iamVjdC5rZXlzKCkgY2FsbCBhYm92ZS5cbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXQobmFtZSk7XG4gICAgICAgICAgICB5aWVsZCBbXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAqa2V5cygpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5oZWFkZXJzKSl7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB5aWVsZCBuYW1lO1xuICAgICAgICB9XG4gICAgfVxuICAgICp2YWx1ZXMoKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuaGVhZGVycykpe1xuICAgICAgICAgICAgLy8gV2UgYXNzZXJ0IGhlcmUgdGhhdCB0aGlzIGlzIGEgc3RyaW5nIGJlY2F1c2Ugd2UgZ290IGl0IGZyb20gdGhlXG4gICAgICAgICAgICAvLyBPYmplY3Qua2V5cygpIGNhbGwgYWJvdmUuXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0KGtleSk7XG4gICAgICAgICAgICB5aWVsZCB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50cmllcygpO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGVhZGVycy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/headers.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/next-request.js":
|
||
/*!***********************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/web/spec-extension/adapters/next-request.js ***!
|
||
\***********************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n NextRequestAdapter: function() {\n return NextRequestAdapter;\n },\n ResponseAborted: function() {\n return ResponseAborted;\n },\n ResponseAbortedName: function() {\n return ResponseAbortedName;\n },\n createAbortController: function() {\n return createAbortController;\n },\n signalFromNodeResponse: function() {\n return signalFromNodeResponse;\n }\n});\nconst _requestmeta = __webpack_require__(/*! ../../../request-meta */ \"(rsc)/./node_modules/next/dist/server/request-meta.js\");\nconst _utils = __webpack_require__(/*! ../../utils */ \"(rsc)/./node_modules/next/dist/server/web/utils.js\");\nconst _request = __webpack_require__(/*! ../request */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/request.js\");\nconst _helpers = __webpack_require__(/*! ../../../base-http/helpers */ \"(rsc)/./node_modules/next/dist/server/base-http/helpers.js\");\nconst ResponseAbortedName = 'ResponseAborted';\nclass ResponseAborted extends Error {\n constructor(...args){\n super(...args), this.name = ResponseAbortedName;\n }\n}\nfunction createAbortController(response) {\n const controller = new AbortController();\n // If `finish` fires first, then `res.end()` has been called and the close is\n // just us finishing the stream on our side. If `close` fires first, then we\n // know the client disconnected before we finished.\n response.once('close', ()=>{\n if (response.writableFinished) return;\n controller.abort(new ResponseAborted());\n });\n return controller;\n}\nfunction signalFromNodeResponse(response) {\n const { errored, destroyed } = response;\n if (errored || destroyed) {\n return AbortSignal.abort(errored ?? new ResponseAborted());\n }\n const { signal } = createAbortController(response);\n return signal;\n}\nclass NextRequestAdapter {\n static fromBaseNextRequest(request, signal) {\n if (// The type check here ensures that `req` is correctly typed, and the\n // environment variable check provides dead code elimination.\n false) {} else if (// The type check here ensures that `req` is correctly typed, and the\n // environment variable check provides dead code elimination.\n true && (0, _helpers.isNodeNextRequest)(request)) {\n return NextRequestAdapter.fromNodeNextRequest(request, signal);\n } else {\n throw Object.defineProperty(new Error('Invariant: Unsupported NextRequest type'), \"__NEXT_ERROR_CODE\", {\n value: \"E345\",\n enumerable: false,\n configurable: true\n });\n }\n }\n static fromNodeNextRequest(request, signal) {\n // HEAD and GET requests can not have a body.\n let body = null;\n if (request.method !== 'GET' && request.method !== 'HEAD' && request.body) {\n // @ts-expect-error - this is handled by undici, when streams/web land use it instead\n body = request.body;\n }\n let url;\n if (request.url.startsWith('http')) {\n url = new URL(request.url);\n } else {\n // Grab the full URL from the request metadata.\n const base = (0, _requestmeta.getRequestMeta)(request, 'initURL');\n if (!base || !base.startsWith('http')) {\n // Because the URL construction relies on the fact that the URL provided\n // is absolute, we need to provide a base URL. We can't use the request\n // URL because it's relative, so we use a dummy URL instead.\n url = new URL(request.url, 'http://n');\n } else {\n url = new URL(request.url, base);\n }\n }\n return new _request.NextRequest(url, {\n method: request.method,\n headers: (0, _utils.fromNodeOutgoingHttpHeaders)(request.headers),\n duplex: 'half',\n signal,\n // geo\n // ip\n // nextConfig\n // body can not be passed if request was aborted\n // or we get a Request body was disturbed error\n ...signal.aborted ? {} : {\n body\n }\n });\n }\n static fromWebNextRequest(request) {\n // HEAD and GET requests can not have a body.\n let body = null;\n if (request.method !== 'GET' && request.method !== 'HEAD') {\n body = request.body;\n }\n return new _request.NextRequest(request.url, {\n method: request.method,\n headers: (0, _utils.fromNodeOutgoingHttpHeaders)(request.headers),\n duplex: 'half',\n signal: request.request.signal,\n // geo\n // ip\n // nextConfig\n // body can not be passed if request was aborted\n // or we get a Request body was disturbed error\n ...request.request.signal.aborted ? {} : {\n body\n }\n });\n }\n}\n\n//# sourceMappingURL=next-request.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vYWRhcHRlcnMvbmV4dC1yZXF1ZXN0LmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQU1MO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELHFCQUFxQixtQkFBTyxDQUFDLG9GQUF1QjtBQUNwRCxlQUFlLG1CQUFPLENBQUMsdUVBQWE7QUFDcEMsaUJBQWlCLG1CQUFPLENBQUMsdUZBQVk7QUFDckMsaUJBQWlCLG1CQUFPLENBQUMsOEZBQTRCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsWUFBWSxxQkFBcUI7QUFDakM7QUFDQTtBQUNBO0FBQ0EsWUFBWSxTQUFTO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsS0FBOEUsRUFBRSxFQUUvRSxDQUFDO0FBQ1Y7QUFDQSxRQUFRLEtBQW1DO0FBQzNDO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQ7QUFDbkQ7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvd2ViL3NwZWMtZXh0ZW5zaW9uL2FkYXB0ZXJzL25leHQtcmVxdWVzdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIE5leHRSZXF1ZXN0QWRhcHRlcjogbnVsbCxcbiAgICBSZXNwb25zZUFib3J0ZWQ6IG51bGwsXG4gICAgUmVzcG9uc2VBYm9ydGVkTmFtZTogbnVsbCxcbiAgICBjcmVhdGVBYm9ydENvbnRyb2xsZXI6IG51bGwsXG4gICAgc2lnbmFsRnJvbU5vZGVSZXNwb25zZTogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBOZXh0UmVxdWVzdEFkYXB0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTmV4dFJlcXVlc3RBZGFwdGVyO1xuICAgIH0sXG4gICAgUmVzcG9uc2VBYm9ydGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFJlc3BvbnNlQWJvcnRlZDtcbiAgICB9LFxuICAgIFJlc3BvbnNlQWJvcnRlZE5hbWU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUmVzcG9uc2VBYm9ydGVkTmFtZTtcbiAgICB9LFxuICAgIGNyZWF0ZUFib3J0Q29udHJvbGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVBYm9ydENvbnRyb2xsZXI7XG4gICAgfSxcbiAgICBzaWduYWxGcm9tTm9kZVJlc3BvbnNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHNpZ25hbEZyb21Ob2RlUmVzcG9uc2U7XG4gICAgfVxufSk7XG5jb25zdCBfcmVxdWVzdG1ldGEgPSByZXF1aXJlKFwiLi4vLi4vLi4vcmVxdWVzdC1tZXRhXCIpO1xuY29uc3QgX3V0aWxzID0gcmVxdWlyZShcIi4uLy4uL3V0aWxzXCIpO1xuY29uc3QgX3JlcXVlc3QgPSByZXF1aXJlKFwiLi4vcmVxdWVzdFwiKTtcbmNvbnN0IF9oZWxwZXJzID0gcmVxdWlyZShcIi4uLy4uLy4uL2Jhc2UtaHR0cC9oZWxwZXJzXCIpO1xuY29uc3QgUmVzcG9uc2VBYm9ydGVkTmFtZSA9ICdSZXNwb25zZUFib3J0ZWQnO1xuY2xhc3MgUmVzcG9uc2VBYm9ydGVkIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3Mpe1xuICAgICAgICBzdXBlciguLi5hcmdzKSwgdGhpcy5uYW1lID0gUmVzcG9uc2VBYm9ydGVkTmFtZTtcbiAgICB9XG59XG5mdW5jdGlvbiBjcmVhdGVBYm9ydENvbnRyb2xsZXIocmVzcG9uc2UpIHtcbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIC8vIElmIGBmaW5pc2hgIGZpcmVzIGZpcnN0LCB0aGVuIGByZXMuZW5kKClgIGhhcyBiZWVuIGNhbGxlZCBhbmQgdGhlIGNsb3NlIGlzXG4gICAgLy8ganVzdCB1cyBmaW5pc2hpbmcgdGhlIHN0cmVhbSBvbiBvdXIgc2lkZS4gSWYgYGNsb3NlYCBmaXJlcyBmaXJzdCwgdGhlbiB3ZVxuICAgIC8vIGtub3cgdGhlIGNsaWVudCBkaXNjb25uZWN0ZWQgYmVmb3JlIHdlIGZpbmlzaGVkLlxuICAgIHJlc3BvbnNlLm9uY2UoJ2Nsb3NlJywgKCk9PntcbiAgICAgICAgaWYgKHJlc3BvbnNlLndyaXRhYmxlRmluaXNoZWQpIHJldHVybjtcbiAgICAgICAgY29udHJvbGxlci5hYm9ydChuZXcgUmVzcG9uc2VBYm9ydGVkKCkpO1xuICAgIH0pO1xuICAgIHJldHVybiBjb250cm9sbGVyO1xufVxuZnVuY3Rpb24gc2lnbmFsRnJvbU5vZGVSZXNwb25zZShyZXNwb25zZSkge1xuICAgIGNvbnN0IHsgZXJyb3JlZCwgZGVzdHJveWVkIH0gPSByZXNwb25zZTtcbiAgICBpZiAoZXJyb3JlZCB8fCBkZXN0cm95ZWQpIHtcbiAgICAgICAgcmV0dXJuIEFib3J0U2lnbmFsLmFib3J0KGVycm9yZWQgPz8gbmV3IFJlc3BvbnNlQWJvcnRlZCgpKTtcbiAgICB9XG4gICAgY29uc3QgeyBzaWduYWwgfSA9IGNyZWF0ZUFib3J0Q29udHJvbGxlcihyZXNwb25zZSk7XG4gICAgcmV0dXJuIHNpZ25hbDtcbn1cbmNsYXNzIE5leHRSZXF1ZXN0QWRhcHRlciB7XG4gICAgc3RhdGljIGZyb21CYXNlTmV4dFJlcXVlc3QocmVxdWVzdCwgc2lnbmFsKSB7XG4gICAgICAgIGlmICgvLyBUaGUgdHlwZSBjaGVjayBoZXJlIGVuc3VyZXMgdGhhdCBgcmVxYCBpcyBjb3JyZWN0bHkgdHlwZWQsIGFuZCB0aGVcbiAgICAgICAgLy8gZW52aXJvbm1lbnQgdmFyaWFibGUgY2hlY2sgcHJvdmlkZXMgZGVhZCBjb2RlIGVsaW1pbmF0aW9uLlxuICAgICAgICBwcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgPT09ICdlZGdlJyAmJiAoMCwgX2hlbHBlcnMuaXNXZWJOZXh0UmVxdWVzdCkocmVxdWVzdCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOZXh0UmVxdWVzdEFkYXB0ZXIuZnJvbVdlYk5leHRSZXF1ZXN0KHJlcXVlc3QpO1xuICAgICAgICB9IGVsc2UgaWYgKC8vIFRoZSB0eXBlIGNoZWNrIGhlcmUgZW5zdXJlcyB0aGF0IGByZXFgIGlzIGNvcnJlY3RseSB0eXBlZCwgYW5kIHRoZVxuICAgICAgICAvLyBlbnZpcm9ubWVudCB2YXJpYWJsZSBjaGVjayBwcm92aWRlcyBkZWFkIGNvZGUgZWxpbWluYXRpb24uXG4gICAgICAgIHByb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSAhPT0gJ2VkZ2UnICYmICgwLCBfaGVscGVycy5pc05vZGVOZXh0UmVxdWVzdCkocmVxdWVzdCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOZXh0UmVxdWVzdEFkYXB0ZXIuZnJvbU5vZGVOZXh0UmVxdWVzdChyZXF1ZXN0LCBzaWduYWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcignSW52YXJpYW50OiBVbnN1cHBvcnRlZCBOZXh0UmVxdWVzdCB0eXBlJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBcIkUzNDVcIixcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tTm9kZU5leHRSZXF1ZXN0KHJlcXVlc3QsIHNpZ25hbCkge1xuICAgICAgICAvLyBIRUFEIGFuZCBHRVQgcmVxdWVzdHMgY2FuIG5vdCBoYXZlIGEgYm9keS5cbiAgICAgICAgbGV0IGJvZHkgPSBudWxsO1xuICAgICAgICBpZiAocmVxdWVzdC5tZXRob2QgIT09ICdHRVQnICYmIHJlcXVlc3QubWV0aG9kICE9PSAnSEVBRCcgJiYgcmVxdWVzdC5ib2R5KSB7XG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gdGhpcyBpcyBoYW5kbGVkIGJ5IHVuZGljaSwgd2hlbiBzdHJlYW1zL3dlYiBsYW5kIHVzZSBpdCBpbnN0ZWFkXG4gICAgICAgICAgICBib2R5ID0gcmVxdWVzdC5ib2R5O1xuICAgICAgICB9XG4gICAgICAgIGxldCB1cmw7XG4gICAgICAgIGlmIChyZXF1ZXN0LnVybC5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgICAgICAgIHVybCA9IG5ldyBVUkwocmVxdWVzdC51cmwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gR3JhYiB0aGUgZnVsbCBVUkwgZnJvbSB0aGUgcmVxdWVzdCBtZXRhZGF0YS5cbiAgICAgICAgICAgIGNvbnN0IGJhc2UgPSAoMCwgX3JlcXVlc3RtZXRhLmdldFJlcXVlc3RNZXRhKShyZXF1ZXN0LCAnaW5pdFVSTCcpO1xuICAgICAgICAgICAgaWYgKCFiYXNlIHx8ICFiYXNlLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgICAgICAgICAgIC8vIEJlY2F1c2UgdGhlIFVSTCBjb25zdHJ1Y3Rpb24gcmVsaWVzIG9uIHRoZSBmYWN0IHRoYXQgdGhlIFVSTCBwcm92aWRlZFxuICAgICAgICAgICAgICAgIC8vIGlzIGFic29sdXRlLCB3ZSBuZWVkIHRvIHByb3ZpZGUgYSBiYXNlIFVSTC4gV2UgY2FuJ3QgdXNlIHRoZSByZXF1ZXN0XG4gICAgICAgICAgICAgICAgLy8gVVJMIGJlY2F1c2UgaXQncyByZWxhdGl2ZSwgc28gd2UgdXNlIGEgZHVtbXkgVVJMIGluc3RlYWQuXG4gICAgICAgICAgICAgICAgdXJsID0gbmV3IFVSTChyZXF1ZXN0LnVybCwgJ2h0dHA6Ly9uJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHVybCA9IG5ldyBVUkwocmVxdWVzdC51cmwsIGJhc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgX3JlcXVlc3QuTmV4dFJlcXVlc3QodXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IHJlcXVlc3QubWV0aG9kLFxuICAgICAgICAgICAgaGVhZGVyczogKDAsIF91dGlscy5mcm9tTm9kZU91dGdvaW5nSHR0cEhlYWRlcnMpKHJlcXVlc3QuaGVhZGVycyksXG4gICAgICAgICAgICBkdXBsZXg6ICdoYWxmJyxcbiAgICAgICAgICAgIHNpZ25hbCxcbiAgICAgICAgICAgIC8vIGdlb1xuICAgICAgICAgICAgLy8gaXBcbiAgICAgICAgICAgIC8vIG5leHRDb25maWdcbiAgICAgICAgICAgIC8vIGJvZHkgY2FuIG5vdCBiZSBwYXNzZWQgaWYgcmVxdWVzdCB3YXMgYWJvcnRlZFxuICAgICAgICAgICAgLy8gb3Igd2UgZ2V0IGEgUmVxdWVzdCBib2R5IHdhcyBkaXN0dXJiZWQgZXJyb3JcbiAgICAgICAgICAgIC4uLnNpZ25hbC5hYm9ydGVkID8ge30gOiB7XG4gICAgICAgICAgICAgICAgYm9keVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgc3RhdGljIGZyb21XZWJOZXh0UmVxdWVzdChyZXF1ZXN0KSB7XG4gICAgICAgIC8vIEhFQUQgYW5kIEdFVCByZXF1ZXN0cyBjYW4gbm90IGhhdmUgYSBib2R5LlxuICAgICAgICBsZXQgYm9keSA9IG51bGw7XG4gICAgICAgIGlmIChyZXF1ZXN0Lm1ldGhvZCAhPT0gJ0dFVCcgJiYgcmVxdWVzdC5tZXRob2QgIT09ICdIRUFEJykge1xuICAgICAgICAgICAgYm9keSA9IHJlcXVlc3QuYm9keTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IF9yZXF1ZXN0Lk5leHRSZXF1ZXN0KHJlcXVlc3QudXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IHJlcXVlc3QubWV0aG9kLFxuICAgICAgICAgICAgaGVhZGVyczogKDAsIF91dGlscy5mcm9tTm9kZU91dGdvaW5nSHR0cEhlYWRlcnMpKHJlcXVlc3QuaGVhZGVycyksXG4gICAgICAgICAgICBkdXBsZXg6ICdoYWxmJyxcbiAgICAgICAgICAgIHNpZ25hbDogcmVxdWVzdC5yZXF1ZXN0LnNpZ25hbCxcbiAgICAgICAgICAgIC8vIGdlb1xuICAgICAgICAgICAgLy8gaXBcbiAgICAgICAgICAgIC8vIG5leHRDb25maWdcbiAgICAgICAgICAgIC8vIGJvZHkgY2FuIG5vdCBiZSBwYXNzZWQgaWYgcmVxdWVzdCB3YXMgYWJvcnRlZFxuICAgICAgICAgICAgLy8gb3Igd2UgZ2V0IGEgUmVxdWVzdCBib2R5IHdhcyBkaXN0dXJiZWQgZXJyb3JcbiAgICAgICAgICAgIC4uLnJlcXVlc3QucmVxdWVzdC5zaWduYWwuYWJvcnRlZCA/IHt9IDoge1xuICAgICAgICAgICAgICAgIGJvZHlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1uZXh0LXJlcXVlc3QuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/next-request.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js":
|
||
/*!******************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js ***!
|
||
\******************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"ReflectAdapter\", ({\n enumerable: true,\n get: function() {\n return ReflectAdapter;\n }\n}));\nclass ReflectAdapter {\n static get(target, prop, receiver) {\n const value = Reflect.get(target, prop, receiver);\n if (typeof value === 'function') {\n return value.bind(target);\n }\n return value;\n }\n static set(target, prop, value, receiver) {\n return Reflect.set(target, prop, value, receiver);\n }\n static has(target, prop) {\n return Reflect.has(target, prop);\n }\n static deleteProperty(target, prop) {\n return Reflect.deleteProperty(target, prop);\n }\n}\n\n//# sourceMappingURL=reflect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vYWRhcHRlcnMvcmVmbGVjdC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLGtEQUFpRDtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL3dlYi9zcGVjLWV4dGVuc2lvbi9hZGFwdGVycy9yZWZsZWN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVmbGVjdEFkYXB0ZXJcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3RBZGFwdGVyO1xuICAgIH1cbn0pO1xuY2xhc3MgUmVmbGVjdEFkYXB0ZXIge1xuICAgIHN0YXRpYyBnZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUuYmluZCh0YXJnZXQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgc3RhdGljIHNldCh0YXJnZXQsIHByb3AsIHZhbHVlLCByZWNlaXZlcikge1xuICAgICAgICByZXR1cm4gUmVmbGVjdC5zZXQodGFyZ2V0LCBwcm9wLCB2YWx1ZSwgcmVjZWl2ZXIpO1xuICAgIH1cbiAgICBzdGF0aWMgaGFzKHRhcmdldCwgcHJvcCkge1xuICAgICAgICByZXR1cm4gUmVmbGVjdC5oYXModGFyZ2V0LCBwcm9wKTtcbiAgICB9XG4gICAgc3RhdGljIGRlbGV0ZVByb3BlcnR5KHRhcmdldCwgcHJvcCkge1xuICAgICAgICByZXR1cm4gUmVmbGVjdC5kZWxldGVQcm9wZXJ0eSh0YXJnZXQsIHByb3ApO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVmbGVjdC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.js":
|
||
/*!**************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.js ***!
|
||
\**************************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n MutableRequestCookiesAdapter: function() {\n return MutableRequestCookiesAdapter;\n },\n ReadonlyRequestCookiesError: function() {\n return ReadonlyRequestCookiesError;\n },\n RequestCookiesAdapter: function() {\n return RequestCookiesAdapter;\n },\n appendMutableCookies: function() {\n return appendMutableCookies;\n },\n areCookiesMutableInCurrentPhase: function() {\n return areCookiesMutableInCurrentPhase;\n },\n createCookiesWithMutableAccessCheck: function() {\n return createCookiesWithMutableAccessCheck;\n },\n getModifiedCookieValues: function() {\n return getModifiedCookieValues;\n },\n responseCookiesToRequestCookies: function() {\n return responseCookiesToRequestCookies;\n }\n});\nconst _cookies = __webpack_require__(/*! ../cookies */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/cookies.js\");\nconst _reflect = __webpack_require__(/*! ./reflect */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js\");\nconst _workasyncstorageexternal = __webpack_require__(/*! ../../../app-render/work-async-storage.external */ \"../app-render/work-async-storage.external\");\nconst _actionrevalidationkind = __webpack_require__(/*! ../../../../shared/lib/action-revalidation-kind */ \"(rsc)/./node_modules/next/dist/shared/lib/action-revalidation-kind.js\");\nclass ReadonlyRequestCookiesError extends Error {\n constructor(){\n super('Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#options');\n }\n static callable() {\n throw new ReadonlyRequestCookiesError();\n }\n}\nclass RequestCookiesAdapter {\n static seal(cookies) {\n return new Proxy(cookies, {\n get (target, prop, receiver) {\n switch(prop){\n case 'clear':\n case 'delete':\n case 'set':\n return ReadonlyRequestCookiesError.callable;\n default:\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n }\n });\n }\n}\nconst SYMBOL_MODIFY_COOKIE_VALUES = Symbol.for('next.mutated.cookies');\nfunction getModifiedCookieValues(cookies) {\n const modified = cookies[SYMBOL_MODIFY_COOKIE_VALUES];\n if (!modified || !Array.isArray(modified) || modified.length === 0) {\n return [];\n }\n return modified;\n}\nfunction appendMutableCookies(headers, mutableCookies) {\n const modifiedCookieValues = getModifiedCookieValues(mutableCookies);\n if (modifiedCookieValues.length === 0) {\n return false;\n }\n // Return a new response that extends the response with\n // the modified cookies as fallbacks. `res` cookies\n // will still take precedence.\n const resCookies = new _cookies.ResponseCookies(headers);\n const returnedCookies = resCookies.getAll();\n // Set the modified cookies as fallbacks.\n for (const cookie of modifiedCookieValues){\n resCookies.set(cookie);\n }\n // Set the original cookies as the final values.\n for (const cookie of returnedCookies){\n resCookies.set(cookie);\n }\n return true;\n}\nclass MutableRequestCookiesAdapter {\n static wrap(cookies, onUpdateCookies) {\n const responseCookies = new _cookies.ResponseCookies(new Headers());\n for (const cookie of cookies.getAll()){\n responseCookies.set(cookie);\n }\n let modifiedValues = [];\n const modifiedCookies = new Set();\n const updateResponseCookies = ()=>{\n // TODO-APP: change method of getting workStore\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (workStore) {\n workStore.pathWasRevalidated = _actionrevalidationkind.ActionDidRevalidateStaticAndDynamic;\n }\n const allCookies = responseCookies.getAll();\n modifiedValues = allCookies.filter((c)=>modifiedCookies.has(c.name));\n if (onUpdateCookies) {\n const serializedCookies = [];\n for (const cookie of modifiedValues){\n const tempCookies = new _cookies.ResponseCookies(new Headers());\n tempCookies.set(cookie);\n serializedCookies.push(tempCookies.toString());\n }\n onUpdateCookies(serializedCookies);\n }\n };\n const wrappedCookies = new Proxy(responseCookies, {\n get (target, prop, receiver) {\n switch(prop){\n // A special symbol to get the modified cookie values\n case SYMBOL_MODIFY_COOKIE_VALUES:\n return modifiedValues;\n // TODO: Throw error if trying to set a cookie after the response\n // headers have been set.\n case 'delete':\n return function(...args) {\n modifiedCookies.add(typeof args[0] === 'string' ? args[0] : args[0].name);\n try {\n target.delete(...args);\n return wrappedCookies;\n } finally{\n updateResponseCookies();\n }\n };\n case 'set':\n return function(...args) {\n modifiedCookies.add(typeof args[0] === 'string' ? args[0] : args[0].name);\n try {\n target.set(...args);\n return wrappedCookies;\n } finally{\n updateResponseCookies();\n }\n };\n default:\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n }\n });\n return wrappedCookies;\n }\n}\nfunction createCookiesWithMutableAccessCheck(requestStore) {\n const wrappedCookies = new Proxy(requestStore.mutableCookies, {\n get (target, prop, receiver) {\n switch(prop){\n case 'delete':\n return function(...args) {\n ensureCookiesAreStillMutable(requestStore, 'cookies().delete');\n target.delete(...args);\n return wrappedCookies;\n };\n case 'set':\n return function(...args) {\n ensureCookiesAreStillMutable(requestStore, 'cookies().set');\n target.set(...args);\n return wrappedCookies;\n };\n default:\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n }\n });\n return wrappedCookies;\n}\nfunction areCookiesMutableInCurrentPhase(requestStore) {\n return requestStore.phase === 'action';\n}\n/** Ensure that cookies() starts throwing on mutation\n * if we changed phases and can no longer mutate.\n *\n * This can happen when going:\n * 'render' -> 'after'\n * 'action' -> 'render'\n * */ function ensureCookiesAreStillMutable(requestStore, _callingExpression) {\n if (!areCookiesMutableInCurrentPhase(requestStore)) {\n // TODO: maybe we can give a more precise error message based on callingExpression?\n throw new ReadonlyRequestCookiesError();\n }\n}\nfunction responseCookiesToRequestCookies(responseCookies) {\n const requestCookies = new _cookies.RequestCookies(new Headers());\n for (const cookie of responseCookies.getAll()){\n requestCookies.set(cookie);\n }\n return requestCookies;\n}\n\n//# sourceMappingURL=request-cookies.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vYWRhcHRlcnMvcmVxdWVzdC1jb29raWVzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQVNMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELGlCQUFpQixtQkFBTyxDQUFDLHVGQUFZO0FBQ3JDLGlCQUFpQixtQkFBTyxDQUFDLCtGQUFXO0FBQ3BDLGtDQUFrQyxtQkFBTyxDQUFDLGtHQUFpRDtBQUMzRixnQ0FBZ0MsbUJBQU8sQ0FBQyw4SEFBaUQ7QUFDekY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL3dlYi9zcGVjLWV4dGVuc2lvbi9hZGFwdGVycy9yZXF1ZXN0LWNvb2tpZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBNdXRhYmxlUmVxdWVzdENvb2tpZXNBZGFwdGVyOiBudWxsLFxuICAgIFJlYWRvbmx5UmVxdWVzdENvb2tpZXNFcnJvcjogbnVsbCxcbiAgICBSZXF1ZXN0Q29va2llc0FkYXB0ZXI6IG51bGwsXG4gICAgYXBwZW5kTXV0YWJsZUNvb2tpZXM6IG51bGwsXG4gICAgYXJlQ29va2llc011dGFibGVJbkN1cnJlbnRQaGFzZTogbnVsbCxcbiAgICBjcmVhdGVDb29raWVzV2l0aE11dGFibGVBY2Nlc3NDaGVjazogbnVsbCxcbiAgICBnZXRNb2RpZmllZENvb2tpZVZhbHVlczogbnVsbCxcbiAgICByZXNwb25zZUNvb2tpZXNUb1JlcXVlc3RDb29raWVzOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIE11dGFibGVSZXF1ZXN0Q29va2llc0FkYXB0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTXV0YWJsZVJlcXVlc3RDb29raWVzQWRhcHRlcjtcbiAgICB9LFxuICAgIFJlYWRvbmx5UmVxdWVzdENvb2tpZXNFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSZWFkb25seVJlcXVlc3RDb29raWVzRXJyb3I7XG4gICAgfSxcbiAgICBSZXF1ZXN0Q29va2llc0FkYXB0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUmVxdWVzdENvb2tpZXNBZGFwdGVyO1xuICAgIH0sXG4gICAgYXBwZW5kTXV0YWJsZUNvb2tpZXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gYXBwZW5kTXV0YWJsZUNvb2tpZXM7XG4gICAgfSxcbiAgICBhcmVDb29raWVzTXV0YWJsZUluQ3VycmVudFBoYXNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGFyZUNvb2tpZXNNdXRhYmxlSW5DdXJyZW50UGhhc2U7XG4gICAgfSxcbiAgICBjcmVhdGVDb29raWVzV2l0aE11dGFibGVBY2Nlc3NDaGVjazogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVDb29raWVzV2l0aE11dGFibGVBY2Nlc3NDaGVjaztcbiAgICB9LFxuICAgIGdldE1vZGlmaWVkQ29va2llVmFsdWVzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldE1vZGlmaWVkQ29va2llVmFsdWVzO1xuICAgIH0sXG4gICAgcmVzcG9uc2VDb29raWVzVG9SZXF1ZXN0Q29va2llczogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZXNwb25zZUNvb2tpZXNUb1JlcXVlc3RDb29raWVzO1xuICAgIH1cbn0pO1xuY29uc3QgX2Nvb2tpZXMgPSByZXF1aXJlKFwiLi4vY29va2llc1wiKTtcbmNvbnN0IF9yZWZsZWN0ID0gcmVxdWlyZShcIi4vcmVmbGVjdFwiKTtcbmNvbnN0IF93b3JrYXN5bmNzdG9yYWdlZXh0ZXJuYWwgPSByZXF1aXJlKFwiLi4vLi4vLi4vYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWxcIik7XG5jb25zdCBfYWN0aW9ucmV2YWxpZGF0aW9ua2luZCA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9zaGFyZWQvbGliL2FjdGlvbi1yZXZhbGlkYXRpb24ta2luZFwiKTtcbmNsYXNzIFJlYWRvbmx5UmVxdWVzdENvb2tpZXNFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3Rvcigpe1xuICAgICAgICBzdXBlcignQ29va2llcyBjYW4gb25seSBiZSBtb2RpZmllZCBpbiBhIFNlcnZlciBBY3Rpb24gb3IgUm91dGUgSGFuZGxlci4gUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvY29va2llcyNvcHRpb25zJyk7XG4gICAgfVxuICAgIHN0YXRpYyBjYWxsYWJsZSgpIHtcbiAgICAgICAgdGhyb3cgbmV3IFJlYWRvbmx5UmVxdWVzdENvb2tpZXNFcnJvcigpO1xuICAgIH1cbn1cbmNsYXNzIFJlcXVlc3RDb29raWVzQWRhcHRlciB7XG4gICAgc3RhdGljIHNlYWwoY29va2llcykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3h5KGNvb2tpZXMsIHtcbiAgICAgICAgICAgIGdldCAodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgICAgIHN3aXRjaChwcm9wKXtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2xlYXInOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdkZWxldGUnOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdzZXQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlYWRvbmx5UmVxdWVzdENvb2tpZXNFcnJvci5jYWxsYWJsZTtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG5jb25zdCBTWU1CT0xfTU9ESUZZX0NPT0tJRV9WQUxVRVMgPSBTeW1ib2wuZm9yKCduZXh0Lm11dGF0ZWQuY29va2llcycpO1xuZnVuY3Rpb24gZ2V0TW9kaWZpZWRDb29raWVWYWx1ZXMoY29va2llcykge1xuICAgIGNvbnN0IG1vZGlmaWVkID0gY29va2llc1tTWU1CT0xfTU9ESUZZX0NPT0tJRV9WQUxVRVNdO1xuICAgIGlmICghbW9kaWZpZWQgfHwgIUFycmF5LmlzQXJyYXkobW9kaWZpZWQpIHx8IG1vZGlmaWVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiBtb2RpZmllZDtcbn1cbmZ1bmN0aW9uIGFwcGVuZE11dGFibGVDb29raWVzKGhlYWRlcnMsIG11dGFibGVDb29raWVzKSB7XG4gICAgY29uc3QgbW9kaWZpZWRDb29raWVWYWx1ZXMgPSBnZXRNb2RpZmllZENvb2tpZVZhbHVlcyhtdXRhYmxlQ29va2llcyk7XG4gICAgaWYgKG1vZGlmaWVkQ29va2llVmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIFJldHVybiBhIG5ldyByZXNwb25zZSB0aGF0IGV4dGVuZHMgdGhlIHJlc3BvbnNlIHdpdGhcbiAgICAvLyB0aGUgbW9kaWZpZWQgY29va2llcyBhcyBmYWxsYmFja3MuIGByZXNgIGNvb2tpZXNcbiAgICAvLyB3aWxsIHN0aWxsIHRha2UgcHJlY2VkZW5jZS5cbiAgICBjb25zdCByZXNDb29raWVzID0gbmV3IF9jb29raWVzLlJlc3BvbnNlQ29va2llcyhoZWFkZXJzKTtcbiAgICBjb25zdCByZXR1cm5lZENvb2tpZXMgPSByZXNDb29raWVzLmdldEFsbCgpO1xuICAgIC8vIFNldCB0aGUgbW9kaWZpZWQgY29va2llcyBhcyBmYWxsYmFja3MuXG4gICAgZm9yIChjb25zdCBjb29raWUgb2YgbW9kaWZpZWRDb29raWVWYWx1ZXMpe1xuICAgICAgICByZXNDb29raWVzLnNldChjb29raWUpO1xuICAgIH1cbiAgICAvLyBTZXQgdGhlIG9yaWdpbmFsIGNvb2tpZXMgYXMgdGhlIGZpbmFsIHZhbHVlcy5cbiAgICBmb3IgKGNvbnN0IGNvb2tpZSBvZiByZXR1cm5lZENvb2tpZXMpe1xuICAgICAgICByZXNDb29raWVzLnNldChjb29raWUpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmNsYXNzIE11dGFibGVSZXF1ZXN0Q29va2llc0FkYXB0ZXIge1xuICAgIHN0YXRpYyB3cmFwKGNvb2tpZXMsIG9uVXBkYXRlQ29va2llcykge1xuICAgICAgICBjb25zdCByZXNwb25zZUNvb2tpZXMgPSBuZXcgX2Nvb2tpZXMuUmVzcG9uc2VDb29raWVzKG5ldyBIZWFkZXJzKCkpO1xuICAgICAgICBmb3IgKGNvbnN0IGNvb2tpZSBvZiBjb29raWVzLmdldEFsbCgpKXtcbiAgICAgICAgICAgIHJlc3BvbnNlQ29va2llcy5zZXQoY29va2llKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbW9kaWZpZWRWYWx1ZXMgPSBbXTtcbiAgICAgICAgY29uc3QgbW9kaWZpZWRDb29raWVzID0gbmV3IFNldCgpO1xuICAgICAgICBjb25zdCB1cGRhdGVSZXNwb25zZUNvb2tpZXMgPSAoKT0+e1xuICAgICAgICAgICAgLy8gVE9ETy1BUFA6IGNoYW5nZSBtZXRob2Qgb2YgZ2V0dGluZyB3b3JrU3RvcmVcbiAgICAgICAgICAgIGNvbnN0IHdvcmtTdG9yZSA9IF93b3JrYXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya0FzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgICAgICAgICAgaWYgKHdvcmtTdG9yZSkge1xuICAgICAgICAgICAgICAgIHdvcmtTdG9yZS5wYXRoV2FzUmV2YWxpZGF0ZWQgPSBfYWN0aW9ucmV2YWxpZGF0aW9ua2luZC5BY3Rpb25EaWRSZXZhbGlkYXRlU3RhdGljQW5kRHluYW1pYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFsbENvb2tpZXMgPSByZXNwb25zZUNvb2tpZXMuZ2V0QWxsKCk7XG4gICAgICAgICAgICBtb2RpZmllZFZhbHVlcyA9IGFsbENvb2tpZXMuZmlsdGVyKChjKT0+bW9kaWZpZWRDb29raWVzLmhhcyhjLm5hbWUpKTtcbiAgICAgICAgICAgIGlmIChvblVwZGF0ZUNvb2tpZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZXJpYWxpemVkQ29va2llcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY29va2llIG9mIG1vZGlmaWVkVmFsdWVzKXtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVtcENvb2tpZXMgPSBuZXcgX2Nvb2tpZXMuUmVzcG9uc2VDb29raWVzKG5ldyBIZWFkZXJzKCkpO1xuICAgICAgICAgICAgICAgICAgICB0ZW1wQ29va2llcy5zZXQoY29va2llKTtcbiAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZENvb2tpZXMucHVzaCh0ZW1wQ29va2llcy50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25VcGRhdGVDb29raWVzKHNlcmlhbGl6ZWRDb29raWVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgd3JhcHBlZENvb2tpZXMgPSBuZXcgUHJveHkocmVzcG9uc2VDb29raWVzLCB7XG4gICAgICAgICAgICBnZXQgKHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2gocHJvcCl7XG4gICAgICAgICAgICAgICAgICAgIC8vIEEgc3BlY2lhbCBzeW1ib2wgdG8gZ2V0IHRoZSBtb2RpZmllZCBjb29raWUgdmFsdWVzXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgU1lNQk9MX01PRElGWV9DT09LSUVfVkFMVUVTOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZGlmaWVkVmFsdWVzO1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBUaHJvdyBlcnJvciBpZiB0cnlpbmcgdG8gc2V0IGEgY29va2llIGFmdGVyIHRoZSByZXNwb25zZVxuICAgICAgICAgICAgICAgICAgICAvLyBoZWFkZXJzIGhhdmUgYmVlbiBzZXQuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2RlbGV0ZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oLi4uYXJncykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkQ29va2llcy5hZGQodHlwZW9mIGFyZ3NbMF0gPT09ICdzdHJpbmcnID8gYXJnc1swXSA6IGFyZ3NbMF0ubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmRlbGV0ZSguLi5hcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWRDb29raWVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlUmVzcG9uc2VDb29raWVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2V0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiguLi5hcmdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWRDb29raWVzLmFkZCh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycgPyBhcmdzWzBdIDogYXJnc1swXS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc2V0KC4uLmFyZ3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZENvb2tpZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVSZXNwb25zZUNvb2tpZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gd3JhcHBlZENvb2tpZXM7XG4gICAgfVxufVxuZnVuY3Rpb24gY3JlYXRlQ29va2llc1dpdGhNdXRhYmxlQWNjZXNzQ2hlY2socmVxdWVzdFN0b3JlKSB7XG4gICAgY29uc3Qgd3JhcHBlZENvb2tpZXMgPSBuZXcgUHJveHkocmVxdWVzdFN0b3JlLm11dGFibGVDb29raWVzLCB7XG4gICAgICAgIGdldCAodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgc3dpdGNoKHByb3Ape1xuICAgICAgICAgICAgICAgIGNhc2UgJ2RlbGV0ZSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiguLi5hcmdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnN1cmVDb29raWVzQXJlU3RpbGxNdXRhYmxlKHJlcXVlc3RTdG9yZSwgJ2Nvb2tpZXMoKS5kZWxldGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5kZWxldGUoLi4uYXJncyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZENvb2tpZXM7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY2FzZSAnc2V0JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKC4uLmFyZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuc3VyZUNvb2tpZXNBcmVTdGlsbE11dGFibGUocmVxdWVzdFN0b3JlLCAnY29va2llcygpLnNldCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnNldCguLi5hcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkQ29va2llcztcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3JlZmxlY3QuUmVmbGVjdEFkYXB0ZXIuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHdyYXBwZWRDb29raWVzO1xufVxuZnVuY3Rpb24gYXJlQ29va2llc011dGFibGVJbkN1cnJlbnRQaGFzZShyZXF1ZXN0U3RvcmUpIHtcbiAgICByZXR1cm4gcmVxdWVzdFN0b3JlLnBoYXNlID09PSAnYWN0aW9uJztcbn1cbi8qKiBFbnN1cmUgdGhhdCBjb29raWVzKCkgc3RhcnRzIHRocm93aW5nIG9uIG11dGF0aW9uXG4gKiBpZiB3ZSBjaGFuZ2VkIHBoYXNlcyBhbmQgY2FuIG5vIGxvbmdlciBtdXRhdGUuXG4gKlxuICogVGhpcyBjYW4gaGFwcGVuIHdoZW4gZ29pbmc6XG4gKiAgICdyZW5kZXInIC0+ICdhZnRlcidcbiAqICAgJ2FjdGlvbicgLT4gJ3JlbmRlcidcbiAqICovIGZ1bmN0aW9uIGVuc3VyZUNvb2tpZXNBcmVTdGlsbE11dGFibGUocmVxdWVzdFN0b3JlLCBfY2FsbGluZ0V4cHJlc3Npb24pIHtcbiAgICBpZiAoIWFyZUNvb2tpZXNNdXRhYmxlSW5DdXJyZW50UGhhc2UocmVxdWVzdFN0b3JlKSkge1xuICAgICAgICAvLyBUT0RPOiBtYXliZSB3ZSBjYW4gZ2l2ZSBhIG1vcmUgcHJlY2lzZSBlcnJvciBtZXNzYWdlIGJhc2VkIG9uIGNhbGxpbmdFeHByZXNzaW9uP1xuICAgICAgICB0aHJvdyBuZXcgUmVhZG9ubHlSZXF1ZXN0Q29va2llc0Vycm9yKCk7XG4gICAgfVxufVxuZnVuY3Rpb24gcmVzcG9uc2VDb29raWVzVG9SZXF1ZXN0Q29va2llcyhyZXNwb25zZUNvb2tpZXMpIHtcbiAgICBjb25zdCByZXF1ZXN0Q29va2llcyA9IG5ldyBfY29va2llcy5SZXF1ZXN0Q29va2llcyhuZXcgSGVhZGVycygpKTtcbiAgICBmb3IgKGNvbnN0IGNvb2tpZSBvZiByZXNwb25zZUNvb2tpZXMuZ2V0QWxsKCkpe1xuICAgICAgICByZXF1ZXN0Q29va2llcy5zZXQoY29va2llKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcXVlc3RDb29raWVzO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXF1ZXN0LWNvb2tpZXMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/web/spec-extension/cookies.js":
|
||
/*!*********************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/web/spec-extension/cookies.js ***!
|
||
\*********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n RequestCookies: function() {\n return _cookies.RequestCookies;\n },\n ResponseCookies: function() {\n return _cookies.ResponseCookies;\n },\n stringifyCookie: function() {\n return _cookies.stringifyCookie;\n }\n});\nconst _cookies = __webpack_require__(/*! next/dist/compiled/@edge-runtime/cookies */ \"(rsc)/./node_modules/next/dist/compiled/@edge-runtime/cookies/index.js\");\n\n//# sourceMappingURL=cookies.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vY29va2llcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FJTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELGlCQUFpQixtQkFBTyxDQUFDLHdIQUEwQzs7QUFFbkUiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vY29va2llcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIFJlcXVlc3RDb29raWVzOiBudWxsLFxuICAgIFJlc3BvbnNlQ29va2llczogbnVsbCxcbiAgICBzdHJpbmdpZnlDb29raWU6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgUmVxdWVzdENvb2tpZXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2Nvb2tpZXMuUmVxdWVzdENvb2tpZXM7XG4gICAgfSxcbiAgICBSZXNwb25zZUNvb2tpZXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2Nvb2tpZXMuUmVzcG9uc2VDb29raWVzO1xuICAgIH0sXG4gICAgc3RyaW5naWZ5Q29va2llOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9jb29raWVzLnN0cmluZ2lmeUNvb2tpZTtcbiAgICB9XG59KTtcbmNvbnN0IF9jb29raWVzID0gcmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9AZWRnZS1ydW50aW1lL2Nvb2tpZXNcIik7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvb2tpZXMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/web/spec-extension/cookies.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/web/spec-extension/request.js":
|
||
/*!*********************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/web/spec-extension/request.js ***!
|
||
\*********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n INTERNALS: function() {\n return INTERNALS;\n },\n NextRequest: function() {\n return NextRequest;\n }\n});\nconst _nexturl = __webpack_require__(/*! ../next-url */ \"(rsc)/./node_modules/next/dist/server/web/next-url.js\");\nconst _utils = __webpack_require__(/*! ../utils */ \"(rsc)/./node_modules/next/dist/server/web/utils.js\");\nconst _error = __webpack_require__(/*! ../error */ \"(rsc)/./node_modules/next/dist/server/web/error.js\");\nconst _cookies = __webpack_require__(/*! ./cookies */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/cookies.js\");\nconst INTERNALS = Symbol('internal request');\nclass NextRequest extends Request {\n constructor(input, init = {}){\n const url = typeof input !== 'string' && 'url' in input ? input.url : String(input);\n (0, _utils.validateURL)(url);\n // node Request instance requires duplex option when a body\n // is present or it errors, we don't handle this for\n // Request being passed in since it would have already\n // errored if this wasn't configured\n if (true) {\n if (init.body && init.duplex !== 'half') {\n init.duplex = 'half';\n }\n }\n if (input instanceof Request) super(input, init);\n else super(url, init);\n const nextUrl = new _nexturl.NextURL(url, {\n headers: (0, _utils.toNodeOutgoingHttpHeaders)(this.headers),\n nextConfig: init.nextConfig\n });\n this[INTERNALS] = {\n cookies: new _cookies.RequestCookies(this.headers),\n nextUrl,\n url: false ? 0 : nextUrl.toString()\n };\n }\n [Symbol.for('edge-runtime.inspect.custom')]() {\n return {\n cookies: this.cookies,\n nextUrl: this.nextUrl,\n url: this.url,\n // rest of props come from Request\n bodyUsed: this.bodyUsed,\n cache: this.cache,\n credentials: this.credentials,\n destination: this.destination,\n headers: Object.fromEntries(this.headers),\n integrity: this.integrity,\n keepalive: this.keepalive,\n method: this.method,\n mode: this.mode,\n redirect: this.redirect,\n referrer: this.referrer,\n referrerPolicy: this.referrerPolicy,\n signal: this.signal\n };\n }\n get cookies() {\n return this[INTERNALS].cookies;\n }\n get nextUrl() {\n return this[INTERNALS].nextUrl;\n }\n /**\n * @deprecated\n * `page` has been deprecated in favour of `URLPattern`.\n * Read more: https://nextjs.org/docs/messages/middleware-request-page\n */ get page() {\n throw new _error.RemovedPageError();\n }\n /**\n * @deprecated\n * `ua` has been removed in favour of \\`userAgent\\` function.\n * Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent\n */ get ua() {\n throw new _error.RemovedUAError();\n }\n get url() {\n return this[INTERNALS].url;\n }\n}\n\n//# sourceMappingURL=request.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vcmVxdWVzdC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FHTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxpQkFBaUIsbUJBQU8sQ0FBQywwRUFBYTtBQUN0QyxlQUFlLG1CQUFPLENBQUMsb0VBQVU7QUFDakMsZUFBZSxtQkFBTyxDQUFDLG9FQUFVO0FBQ2pDLGlCQUFpQixtQkFBTyxDQUFDLHNGQUFXO0FBQ3BDO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxJQUFtQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE1BQThDLEdBQUcsQ0FBRztBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvd2ViL3NwZWMtZXh0ZW5zaW9uL3JlcXVlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBJTlRFUk5BTFM6IG51bGwsXG4gICAgTmV4dFJlcXVlc3Q6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgSU5URVJOQUxTOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIElOVEVSTkFMUztcbiAgICB9LFxuICAgIE5leHRSZXF1ZXN0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5leHRSZXF1ZXN0O1xuICAgIH1cbn0pO1xuY29uc3QgX25leHR1cmwgPSByZXF1aXJlKFwiLi4vbmV4dC11cmxcIik7XG5jb25zdCBfdXRpbHMgPSByZXF1aXJlKFwiLi4vdXRpbHNcIik7XG5jb25zdCBfZXJyb3IgPSByZXF1aXJlKFwiLi4vZXJyb3JcIik7XG5jb25zdCBfY29va2llcyA9IHJlcXVpcmUoXCIuL2Nvb2tpZXNcIik7XG5jb25zdCBJTlRFUk5BTFMgPSBTeW1ib2woJ2ludGVybmFsIHJlcXVlc3QnKTtcbmNsYXNzIE5leHRSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG4gICAgY29uc3RydWN0b3IoaW5wdXQsIGluaXQgPSB7fSl7XG4gICAgICAgIGNvbnN0IHVybCA9IHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycgJiYgJ3VybCcgaW4gaW5wdXQgPyBpbnB1dC51cmwgOiBTdHJpbmcoaW5wdXQpO1xuICAgICAgICAoMCwgX3V0aWxzLnZhbGlkYXRlVVJMKSh1cmwpO1xuICAgICAgICAvLyBub2RlIFJlcXVlc3QgaW5zdGFuY2UgcmVxdWlyZXMgZHVwbGV4IG9wdGlvbiB3aGVuIGEgYm9keVxuICAgICAgICAvLyBpcyBwcmVzZW50IG9yIGl0IGVycm9ycywgd2UgZG9uJ3QgaGFuZGxlIHRoaXMgZm9yXG4gICAgICAgIC8vIFJlcXVlc3QgYmVpbmcgcGFzc2VkIGluIHNpbmNlIGl0IHdvdWxkIGhhdmUgYWxyZWFkeVxuICAgICAgICAvLyBlcnJvcmVkIGlmIHRoaXMgd2Fzbid0IGNvbmZpZ3VyZWRcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSAhPT0gJ2VkZ2UnKSB7XG4gICAgICAgICAgICBpZiAoaW5pdC5ib2R5ICYmIGluaXQuZHVwbGV4ICE9PSAnaGFsZicpIHtcbiAgICAgICAgICAgICAgICBpbml0LmR1cGxleCA9ICdoYWxmJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBSZXF1ZXN0KSBzdXBlcihpbnB1dCwgaW5pdCk7XG4gICAgICAgIGVsc2Ugc3VwZXIodXJsLCBpbml0KTtcbiAgICAgICAgY29uc3QgbmV4dFVybCA9IG5ldyBfbmV4dHVybC5OZXh0VVJMKHVybCwge1xuICAgICAgICAgICAgaGVhZGVyczogKDAsIF91dGlscy50b05vZGVPdXRnb2luZ0h0dHBIZWFkZXJzKSh0aGlzLmhlYWRlcnMpLFxuICAgICAgICAgICAgbmV4dENvbmZpZzogaW5pdC5uZXh0Q29uZmlnXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzW0lOVEVSTkFMU10gPSB7XG4gICAgICAgICAgICBjb29raWVzOiBuZXcgX2Nvb2tpZXMuUmVxdWVzdENvb2tpZXModGhpcy5oZWFkZXJzKSxcbiAgICAgICAgICAgIG5leHRVcmwsXG4gICAgICAgICAgICB1cmw6IHByb2Nlc3MuZW52Ll9fTkVYVF9OT19NSURETEVXQVJFX1VSTF9OT1JNQUxJWkUgPyB1cmwgOiBuZXh0VXJsLnRvU3RyaW5nKClcbiAgICAgICAgfTtcbiAgICB9XG4gICAgW1N5bWJvbC5mb3IoJ2VkZ2UtcnVudGltZS5pbnNwZWN0LmN1c3RvbScpXSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvb2tpZXM6IHRoaXMuY29va2llcyxcbiAgICAgICAgICAgIG5leHRVcmw6IHRoaXMubmV4dFVybCxcbiAgICAgICAgICAgIHVybDogdGhpcy51cmwsXG4gICAgICAgICAgICAvLyByZXN0IG9mIHByb3BzIGNvbWUgZnJvbSBSZXF1ZXN0XG4gICAgICAgICAgICBib2R5VXNlZDogdGhpcy5ib2R5VXNlZCxcbiAgICAgICAgICAgIGNhY2hlOiB0aGlzLmNhY2hlLFxuICAgICAgICAgICAgY3JlZGVudGlhbHM6IHRoaXMuY3JlZGVudGlhbHMsXG4gICAgICAgICAgICBkZXN0aW5hdGlvbjogdGhpcy5kZXN0aW5hdGlvbixcbiAgICAgICAgICAgIGhlYWRlcnM6IE9iamVjdC5mcm9tRW50cmllcyh0aGlzLmhlYWRlcnMpLFxuICAgICAgICAgICAgaW50ZWdyaXR5OiB0aGlzLmludGVncml0eSxcbiAgICAgICAgICAgIGtlZXBhbGl2ZTogdGhpcy5rZWVwYWxpdmUsXG4gICAgICAgICAgICBtZXRob2Q6IHRoaXMubWV0aG9kLFxuICAgICAgICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgICAgICAgcmVkaXJlY3Q6IHRoaXMucmVkaXJlY3QsXG4gICAgICAgICAgICByZWZlcnJlcjogdGhpcy5yZWZlcnJlcixcbiAgICAgICAgICAgIHJlZmVycmVyUG9saWN5OiB0aGlzLnJlZmVycmVyUG9saWN5LFxuICAgICAgICAgICAgc2lnbmFsOiB0aGlzLnNpZ25hbFxuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXQgY29va2llcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSU5URVJOQUxTXS5jb29raWVzO1xuICAgIH1cbiAgICBnZXQgbmV4dFVybCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSU5URVJOQUxTXS5uZXh0VXJsO1xuICAgIH1cbiAgICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogYHBhZ2VgIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGBVUkxQYXR0ZXJuYC5cbiAgICogUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9taWRkbGV3YXJlLXJlcXVlc3QtcGFnZVxuICAgKi8gZ2V0IHBhZ2UoKSB7XG4gICAgICAgIHRocm93IG5ldyBfZXJyb3IuUmVtb3ZlZFBhZ2VFcnJvcigpO1xuICAgIH1cbiAgICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogYHVhYCBoYXMgYmVlbiByZW1vdmVkIGluIGZhdm91ciBvZiBcXGB1c2VyQWdlbnRcXGAgZnVuY3Rpb24uXG4gICAqIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbWlkZGxld2FyZS1wYXJzZS11c2VyLWFnZW50XG4gICAqLyBnZXQgdWEoKSB7XG4gICAgICAgIHRocm93IG5ldyBfZXJyb3IuUmVtb3ZlZFVBRXJyb3IoKTtcbiAgICB9XG4gICAgZ2V0IHVybCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSU5URVJOQUxTXS51cmw7XG4gICAgfVxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXF1ZXN0LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/web/spec-extension/request.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/server/web/utils.js":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/next/dist/server/web/utils.js ***!
|
||
\****************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n fromNodeOutgoingHttpHeaders: function() {\n return fromNodeOutgoingHttpHeaders;\n },\n normalizeNextQueryParam: function() {\n return normalizeNextQueryParam;\n },\n splitCookiesString: function() {\n return splitCookiesString;\n },\n toNodeOutgoingHttpHeaders: function() {\n return toNodeOutgoingHttpHeaders;\n },\n validateURL: function() {\n return validateURL;\n }\n});\nconst _constants = __webpack_require__(/*! ../../lib/constants */ \"(rsc)/./node_modules/next/dist/lib/constants.js\");\nfunction fromNodeOutgoingHttpHeaders(nodeHeaders) {\n const headers = new Headers();\n for (let [key, value] of Object.entries(nodeHeaders)){\n const values = Array.isArray(value) ? value : [\n value\n ];\n for (let v of values){\n if (typeof v === 'undefined') continue;\n if (typeof v === 'number') {\n v = v.toString();\n }\n headers.append(key, v);\n }\n }\n return headers;\n}\nfunction splitCookiesString(cookiesString) {\n var cookiesStrings = [];\n var pos = 0;\n var start;\n var ch;\n var lastComma;\n var nextStart;\n var cookiesSeparatorFound;\n function skipWhitespace() {\n while(pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))){\n pos += 1;\n }\n return pos < cookiesString.length;\n }\n function notSpecialChar() {\n ch = cookiesString.charAt(pos);\n return ch !== '=' && ch !== ';' && ch !== ',';\n }\n while(pos < cookiesString.length){\n start = pos;\n cookiesSeparatorFound = false;\n while(skipWhitespace()){\n ch = cookiesString.charAt(pos);\n if (ch === ',') {\n // ',' is a cookie separator if we have later first '=', not ';' or ','\n lastComma = pos;\n pos += 1;\n skipWhitespace();\n nextStart = pos;\n while(pos < cookiesString.length && notSpecialChar()){\n pos += 1;\n }\n // currently special character\n if (pos < cookiesString.length && cookiesString.charAt(pos) === '=') {\n // we found cookies separator\n cookiesSeparatorFound = true;\n // pos is inside the next cookie, so back up and return it.\n pos = nextStart;\n cookiesStrings.push(cookiesString.substring(start, lastComma));\n start = pos;\n } else {\n // in param ',' or param separator ';',\n // we continue from that comma\n pos = lastComma + 1;\n }\n } else {\n pos += 1;\n }\n }\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length));\n }\n }\n return cookiesStrings;\n}\nfunction toNodeOutgoingHttpHeaders(headers) {\n const nodeHeaders = {};\n const cookies = [];\n if (headers) {\n for (const [key, value] of headers.entries()){\n if (key.toLowerCase() === 'set-cookie') {\n // We may have gotten a comma joined string of cookies, or multiple\n // set-cookie headers. We need to merge them into one header array\n // to represent all the cookies.\n cookies.push(...splitCookiesString(value));\n nodeHeaders[key] = cookies.length === 1 ? cookies[0] : cookies;\n } else {\n nodeHeaders[key] = value;\n }\n }\n }\n return nodeHeaders;\n}\nfunction validateURL(url) {\n try {\n return String(new URL(String(url)));\n } catch (error) {\n throw Object.defineProperty(new Error(`URL is malformed \"${String(url)}\". Please use only absolute URLs - https://nextjs.org/docs/messages/middleware-relative-urls`, {\n cause: error\n }), \"__NEXT_ERROR_CODE\", {\n value: \"E61\",\n enumerable: false,\n configurable: true\n });\n }\n}\nfunction normalizeNextQueryParam(key) {\n const prefixes = [\n _constants.NEXT_QUERY_PARAM_PREFIX,\n _constants.NEXT_INTERCEPTION_MARKER_PREFIX\n ];\n for (const prefix of prefixes){\n if (key !== prefix && key.startsWith(prefix)) {\n return key.substring(prefix.length);\n }\n }\n return null;\n}\n\n//# sourceMappingURL=utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvdXRpbHMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBTUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsbUJBQW1CLG1CQUFPLENBQUMsNEVBQXFCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrRUFBK0U7QUFDL0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCLHlEQUF5RDtBQUN6RDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ04sbUVBQW1FLFlBQVk7QUFDL0U7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBmcm9tTm9kZU91dGdvaW5nSHR0cEhlYWRlcnM6IG51bGwsXG4gICAgbm9ybWFsaXplTmV4dFF1ZXJ5UGFyYW06IG51bGwsXG4gICAgc3BsaXRDb29raWVzU3RyaW5nOiBudWxsLFxuICAgIHRvTm9kZU91dGdvaW5nSHR0cEhlYWRlcnM6IG51bGwsXG4gICAgdmFsaWRhdGVVUkw6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgZnJvbU5vZGVPdXRnb2luZ0h0dHBIZWFkZXJzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGZyb21Ob2RlT3V0Z29pbmdIdHRwSGVhZGVycztcbiAgICB9LFxuICAgIG5vcm1hbGl6ZU5leHRRdWVyeVBhcmFtOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZU5leHRRdWVyeVBhcmFtO1xuICAgIH0sXG4gICAgc3BsaXRDb29raWVzU3RyaW5nOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHNwbGl0Q29va2llc1N0cmluZztcbiAgICB9LFxuICAgIHRvTm9kZU91dGdvaW5nSHR0cEhlYWRlcnM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdG9Ob2RlT3V0Z29pbmdIdHRwSGVhZGVycztcbiAgICB9LFxuICAgIHZhbGlkYXRlVVJMOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlVVJMO1xuICAgIH1cbn0pO1xuY29uc3QgX2NvbnN0YW50cyA9IHJlcXVpcmUoXCIuLi8uLi9saWIvY29uc3RhbnRzXCIpO1xuZnVuY3Rpb24gZnJvbU5vZGVPdXRnb2luZ0h0dHBIZWFkZXJzKG5vZGVIZWFkZXJzKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKCk7XG4gICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG5vZGVIZWFkZXJzKSl7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbXG4gICAgICAgICAgICB2YWx1ZVxuICAgICAgICBdO1xuICAgICAgICBmb3IgKGxldCB2IG9mIHZhbHVlcyl7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHYgPT09ICd1bmRlZmluZWQnKSBjb250aW51ZTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICB2ID0gdi50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaGVhZGVycy5hcHBlbmQoa2V5LCB2KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaGVhZGVycztcbn1cbmZ1bmN0aW9uIHNwbGl0Q29va2llc1N0cmluZyhjb29raWVzU3RyaW5nKSB7XG4gICAgdmFyIGNvb2tpZXNTdHJpbmdzID0gW107XG4gICAgdmFyIHBvcyA9IDA7XG4gICAgdmFyIHN0YXJ0O1xuICAgIHZhciBjaDtcbiAgICB2YXIgbGFzdENvbW1hO1xuICAgIHZhciBuZXh0U3RhcnQ7XG4gICAgdmFyIGNvb2tpZXNTZXBhcmF0b3JGb3VuZDtcbiAgICBmdW5jdGlvbiBza2lwV2hpdGVzcGFjZSgpIHtcbiAgICAgICAgd2hpbGUocG9zIDwgY29va2llc1N0cmluZy5sZW5ndGggJiYgL1xccy8udGVzdChjb29raWVzU3RyaW5nLmNoYXJBdChwb3MpKSl7XG4gICAgICAgICAgICBwb3MgKz0gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcG9zIDwgY29va2llc1N0cmluZy5sZW5ndGg7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG5vdFNwZWNpYWxDaGFyKCkge1xuICAgICAgICBjaCA9IGNvb2tpZXNTdHJpbmcuY2hhckF0KHBvcyk7XG4gICAgICAgIHJldHVybiBjaCAhPT0gJz0nICYmIGNoICE9PSAnOycgJiYgY2ggIT09ICcsJztcbiAgICB9XG4gICAgd2hpbGUocG9zIDwgY29va2llc1N0cmluZy5sZW5ndGgpe1xuICAgICAgICBzdGFydCA9IHBvcztcbiAgICAgICAgY29va2llc1NlcGFyYXRvckZvdW5kID0gZmFsc2U7XG4gICAgICAgIHdoaWxlKHNraXBXaGl0ZXNwYWNlKCkpe1xuICAgICAgICAgICAgY2ggPSBjb29raWVzU3RyaW5nLmNoYXJBdChwb3MpO1xuICAgICAgICAgICAgaWYgKGNoID09PSAnLCcpIHtcbiAgICAgICAgICAgICAgICAvLyAnLCcgaXMgYSBjb29raWUgc2VwYXJhdG9yIGlmIHdlIGhhdmUgbGF0ZXIgZmlyc3QgJz0nLCBub3QgJzsnIG9yICcsJ1xuICAgICAgICAgICAgICAgIGxhc3RDb21tYSA9IHBvcztcbiAgICAgICAgICAgICAgICBwb3MgKz0gMTtcbiAgICAgICAgICAgICAgICBza2lwV2hpdGVzcGFjZSgpO1xuICAgICAgICAgICAgICAgIG5leHRTdGFydCA9IHBvcztcbiAgICAgICAgICAgICAgICB3aGlsZShwb3MgPCBjb29raWVzU3RyaW5nLmxlbmd0aCAmJiBub3RTcGVjaWFsQ2hhcigpKXtcbiAgICAgICAgICAgICAgICAgICAgcG9zICs9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGN1cnJlbnRseSBzcGVjaWFsIGNoYXJhY3RlclxuICAgICAgICAgICAgICAgIGlmIChwb3MgPCBjb29raWVzU3RyaW5nLmxlbmd0aCAmJiBjb29raWVzU3RyaW5nLmNoYXJBdChwb3MpID09PSAnPScpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gd2UgZm91bmQgY29va2llcyBzZXBhcmF0b3JcbiAgICAgICAgICAgICAgICAgICAgY29va2llc1NlcGFyYXRvckZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgLy8gcG9zIGlzIGluc2lkZSB0aGUgbmV4dCBjb29raWUsIHNvIGJhY2sgdXAgYW5kIHJldHVybiBpdC5cbiAgICAgICAgICAgICAgICAgICAgcG9zID0gbmV4dFN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICBjb29raWVzU3RyaW5ncy5wdXNoKGNvb2tpZXNTdHJpbmcuc3Vic3RyaW5nKHN0YXJ0LCBsYXN0Q29tbWEpKTtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBwb3M7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaW4gcGFyYW0gJywnIG9yIHBhcmFtIHNlcGFyYXRvciAnOycsXG4gICAgICAgICAgICAgICAgICAgIC8vIHdlIGNvbnRpbnVlIGZyb20gdGhhdCBjb21tYVxuICAgICAgICAgICAgICAgICAgICBwb3MgPSBsYXN0Q29tbWEgKyAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcG9zICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjb29raWVzU2VwYXJhdG9yRm91bmQgfHwgcG9zID49IGNvb2tpZXNTdHJpbmcubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb29raWVzU3RyaW5ncy5wdXNoKGNvb2tpZXNTdHJpbmcuc3Vic3RyaW5nKHN0YXJ0LCBjb29raWVzU3RyaW5nLmxlbmd0aCkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb29raWVzU3RyaW5ncztcbn1cbmZ1bmN0aW9uIHRvTm9kZU91dGdvaW5nSHR0cEhlYWRlcnMoaGVhZGVycykge1xuICAgIGNvbnN0IG5vZGVIZWFkZXJzID0ge307XG4gICAgY29uc3QgY29va2llcyA9IFtdO1xuICAgIGlmIChoZWFkZXJzKSB7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGhlYWRlcnMuZW50cmllcygpKXtcbiAgICAgICAgICAgIGlmIChrZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3NldC1jb29raWUnKSB7XG4gICAgICAgICAgICAgICAgLy8gV2UgbWF5IGhhdmUgZ290dGVuIGEgY29tbWEgam9pbmVkIHN0cmluZyBvZiBjb29raWVzLCBvciBtdWx0aXBsZVxuICAgICAgICAgICAgICAgIC8vIHNldC1jb29raWUgaGVhZGVycy4gV2UgbmVlZCB0byBtZXJnZSB0aGVtIGludG8gb25lIGhlYWRlciBhcnJheVxuICAgICAgICAgICAgICAgIC8vIHRvIHJlcHJlc2VudCBhbGwgdGhlIGNvb2tpZXMuXG4gICAgICAgICAgICAgICAgY29va2llcy5wdXNoKC4uLnNwbGl0Q29va2llc1N0cmluZyh2YWx1ZSkpO1xuICAgICAgICAgICAgICAgIG5vZGVIZWFkZXJzW2tleV0gPSBjb29raWVzLmxlbmd0aCA9PT0gMSA/IGNvb2tpZXNbMF0gOiBjb29raWVzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlSGVhZGVyc1trZXldID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5vZGVIZWFkZXJzO1xufVxuZnVuY3Rpb24gdmFsaWRhdGVVUkwodXJsKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyhuZXcgVVJMKFN0cmluZyh1cmwpKSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcihgVVJMIGlzIG1hbGZvcm1lZCBcIiR7U3RyaW5nKHVybCl9XCIuIFBsZWFzZSB1c2Ugb25seSBhYnNvbHV0ZSBVUkxzIC0gaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbWlkZGxld2FyZS1yZWxhdGl2ZS11cmxzYCwge1xuICAgICAgICAgICAgY2F1c2U6IGVycm9yXG4gICAgICAgIH0pLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgIHZhbHVlOiBcIkU2MVwiLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZnVuY3Rpb24gbm9ybWFsaXplTmV4dFF1ZXJ5UGFyYW0oa2V5KSB7XG4gICAgY29uc3QgcHJlZml4ZXMgPSBbXG4gICAgICAgIF9jb25zdGFudHMuTkVYVF9RVUVSWV9QQVJBTV9QUkVGSVgsXG4gICAgICAgIF9jb25zdGFudHMuTkVYVF9JTlRFUkNFUFRJT05fTUFSS0VSX1BSRUZJWFxuICAgIF07XG4gICAgZm9yIChjb25zdCBwcmVmaXggb2YgcHJlZml4ZXMpe1xuICAgICAgICBpZiAoa2V5ICE9PSBwcmVmaXggJiYga2V5LnN0YXJ0c1dpdGgocHJlZml4KSkge1xuICAgICAgICAgICAgcmV0dXJuIGtleS5zdWJzdHJpbmcocHJlZml4Lmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXV0aWxzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/web/utils.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/action-revalidation-kind.js":
|
||
/*!***********************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/action-revalidation-kind.js ***!
|
||
\***********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n ActionDidNotRevalidate: function() {\n return ActionDidNotRevalidate;\n },\n ActionDidRevalidateDynamicOnly: function() {\n return ActionDidRevalidateDynamicOnly;\n },\n ActionDidRevalidateStaticAndDynamic: function() {\n return ActionDidRevalidateStaticAndDynamic;\n }\n});\nconst ActionDidNotRevalidate = 0;\nconst ActionDidRevalidateStaticAndDynamic = 1;\nconst ActionDidRevalidateDynamicOnly = 2; //# sourceMappingURL=action-revalidation-kind.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvYWN0aW9uLXJldmFsaWRhdGlvbi1raW5kLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUVhQSxzQkFBc0I7ZUFBdEJBOztJQUVBQyw4QkFBOEI7ZUFBOUJBOztJQURBQyxtQ0FBbUM7ZUFBbkNBOzs7QUFETixNQUFNRix5QkFBeUI7QUFDL0IsTUFBTUUsc0NBQXNDO0FBQzVDLE1BQU1ELGlDQUFpQyIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9zaGFyZWQvbGliL2FjdGlvbi1yZXZhbGlkYXRpb24ta2luZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBBY3Rpb25SZXZhbGlkYXRpb25LaW5kID0gMCB8IDEgfCAyXG5cbmV4cG9ydCBjb25zdCBBY3Rpb25EaWROb3RSZXZhbGlkYXRlID0gMFxuZXhwb3J0IGNvbnN0IEFjdGlvbkRpZFJldmFsaWRhdGVTdGF0aWNBbmREeW5hbWljID0gMVxuZXhwb3J0IGNvbnN0IEFjdGlvbkRpZFJldmFsaWRhdGVEeW5hbWljT25seSA9IDJcbiJdLCJuYW1lcyI6WyJBY3Rpb25EaWROb3RSZXZhbGlkYXRlIiwiQWN0aW9uRGlkUmV2YWxpZGF0ZUR5bmFtaWNPbmx5IiwiQWN0aW9uRGlkUmV2YWxpZGF0ZVN0YXRpY0FuZER5bmFtaWMiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/action-revalidation-kind.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/app-router-types.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/app-router-types.js ***!
|
||
\***************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * App Router types - Client-safe types for the Next.js App Router\n *\n * This file contains type definitions that can be safely imported\n * by both client-side and server-side code without circular dependencies.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"PrefetchHint\", ({\n enumerable: true,\n get: function() {\n return PrefetchHint;\n }\n}));\nvar PrefetchHint = /*#__PURE__*/ function(PrefetchHint) {\n // This segment has a runtime prefetch enabled (via unstable_instant with\n // prefetch: 'runtime'). Per-segment only, does not propagate to ancestors.\n PrefetchHint[PrefetchHint[\"HasRuntimePrefetch\"] = 1] = \"HasRuntimePrefetch\";\n // This segment or one of its descendants has an instant config defined\n // (any truthy unstable_instant, regardless of prefetch mode). Propagates\n // upward so the root segment reflects the entire subtree.\n PrefetchHint[PrefetchHint[\"SubtreeHasInstant\"] = 2] = \"SubtreeHasInstant\";\n // This segment itself has a loading.tsx boundary.\n PrefetchHint[PrefetchHint[\"SegmentHasLoadingBoundary\"] = 4] = \"SegmentHasLoadingBoundary\";\n // A descendant segment (but not this one) has a loading.tsx boundary.\n // Propagates upward so the root reflects the entire subtree.\n PrefetchHint[PrefetchHint[\"SubtreeHasLoadingBoundary\"] = 8] = \"SubtreeHasLoadingBoundary\";\n // This segment is the root layout of the application.\n PrefetchHint[PrefetchHint[\"IsRootLayout\"] = 16] = \"IsRootLayout\";\n // This segment's response includes its parent's data inlined into it.\n // Set at build time by the segment size measurement pass.\n PrefetchHint[PrefetchHint[\"ParentInlinedIntoSelf\"] = 32] = \"ParentInlinedIntoSelf\";\n // This segment's data is inlined into one of its children — don't fetch\n // it separately. Set at build time by the segment size measurement pass.\n PrefetchHint[PrefetchHint[\"InlinedIntoChild\"] = 64] = \"InlinedIntoChild\";\n // On a __PAGE__: this page's response includes the head (metadata/viewport)\n // at the end of its SegmentPrefetch[] array.\n PrefetchHint[PrefetchHint[\"HeadInlinedIntoSelf\"] = 128] = \"HeadInlinedIntoSelf\";\n // On the root hint node: the head was NOT inlined into any page — fetch\n // it separately. Absence of this bit means the head is bundled into a page.\n PrefetchHint[PrefetchHint[\"HeadOutlined\"] = 256] = \"HeadOutlined\";\n return PrefetchHint;\n}({}); //# sourceMappingURL=app-router-types.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvYXBwLXJvdXRlci10eXBlcy5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Q0FLQzs7OztnREFxS2lCQTs7O2VBQUFBOzs7QUFBWCxJQUFXQSxlQUFBQSxXQUFBQSxHQUFBQSxTQUFBQSxZQUFBQTtJQUNoQix5RUFBeUU7SUFDekUsMkVBQTJFOztJQUUzRSx1RUFBdUU7SUFDdkUseUVBQXlFO0lBQ3pFLDBEQUEwRDs7SUFFMUQsa0RBQWtEOztJQUVsRCxzRUFBc0U7SUFDdEUsNkRBQTZEOztJQUU3RCxzREFBc0Q7O0lBRXRELHNFQUFzRTtJQUN0RSwwREFBMEQ7O0lBRTFELHdFQUF3RTtJQUN4RSx5RUFBeUU7O0lBRXpFLDRFQUE0RTtJQUM1RSw2Q0FBNkM7O0lBRTdDLHdFQUF3RTtJQUN4RSw0RUFBNEU7O1dBekI1REEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9zcmMvc2hhcmVkL2xpYi9hcHAtcm91dGVyLXR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXBwIFJvdXRlciB0eXBlcyAtIENsaWVudC1zYWZlIHR5cGVzIGZvciB0aGUgTmV4dC5qcyBBcHAgUm91dGVyXG4gKlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIHR5cGUgZGVmaW5pdGlvbnMgdGhhdCBjYW4gYmUgc2FmZWx5IGltcG9ydGVkXG4gKiBieSBib3RoIGNsaWVudC1zaWRlIGFuZCBzZXJ2ZXItc2lkZSBjb2RlIHdpdGhvdXQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLlxuICovXG5cbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5leHBvcnQgdHlwZSBMb2FkaW5nTW9kdWxlRGF0YSA9XG4gIHwgW1JlYWN0LkpTWC5FbGVtZW50LCBSZWFjdC5SZWFjdE5vZGUsIFJlYWN0LlJlYWN0Tm9kZV1cbiAgfCBudWxsXG5cbmltcG9ydCB0eXBlIHsgVmFyeVBhcmFtc1RoZW5hYmxlIH0gZnJvbSAnLi9zZWdtZW50LWNhY2hlL3ZhcnktcGFyYW1zLWRlY29kaW5nJ1xuXG4vKiogdmlld3BvcnQgbWV0YWRhdGEgbm9kZSAqL1xuZXhwb3J0IHR5cGUgSGVhZERhdGEgPSBSZWFjdC5SZWFjdE5vZGVcblxuLyoqXG4gKiBDYWNoZSBub2RlIHVzZWQgaW4gYXBwLXJvdXRlciAvIGxheW91dC1yb3V0ZXIuXG4gKi9cblxuZXhwb3J0IHR5cGUgQ2FjaGVOb2RlID0ge1xuICAvKipcbiAgICogV2hlbiByc2MgaXMgbm90IG51bGwsIGl0IHJlcHJlc2VudHMgdGhlIFJTQyBkYXRhIGZvciB0aGVcbiAgICogY29ycmVzcG9uZGluZyBzZWdtZW50LlxuICAgKlxuICAgKiBgbnVsbGAgaXMgYSB2YWxpZCBSZWFjdCBOb2RlIGJ1dCBiZWNhdXNlIHNlZ21lbnQgZGF0YSBpcyBhbHdheXMgYVxuICAgKiA8TGF5b3V0Um91dGVyPiBjb21wb25lbnQsIHdlIGNhbiB1c2UgYG51bGxgIHRvIHJlcHJlc2VudCBlbXB0eS4gV2hlbiBpdCBpc1xuICAgKiBudWxsLCBpdCByZXByZXNlbnRzIG1pc3NpbmcgZGF0YSwgYW5kIHJlbmRlcmluZyBzaG91bGQgc3VzcGVuZC5cbiAgICovXG4gIHJzYzogUmVhY3QuUmVhY3ROb2RlXG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgYSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgc2VnbWVudCB0aGF0IGNhbiBiZSBzaG93biBpbW1lZGlhdGVseSxcbiAgICogYW5kIG1heSBvciBtYXkgbm90IGNvbnRhaW4gZHluYW1pYyBob2xlcy4gSXQncyBwcmVmZXRjaGVkIGJlZm9yZSBhXG4gICAqIG5hdmlnYXRpb24gb2NjdXJzLlxuICAgKlxuICAgKiBEdXJpbmcgcmVuZGVyaW5nLCB3ZSB3aWxsIGNob29zZSB3aGV0aGVyIHRvIHJlbmRlciBgcnNjYCBvciBgcHJlZmV0Y2hSc2NgXG4gICAqIHdpdGggYHVzZURlZmVycmVkVmFsdWVgLiBBcyB3aXRoIHRoZSBgcnNjYCBmaWVsZCwgYSB2YWx1ZSBvZiBgbnVsbGAgbWVhbnNcbiAgICogbm8gdmFsdWUgd2FzIHByb3ZpZGVkLiBJbiB0aGlzIGNhc2UsIHRoZSBMYXlvdXRSb3V0ZXIgd2lsbCBnbyBzdHJhaWdodCB0b1xuICAgKiByZW5kZXJpbmcgdGhlIGByc2NgIHZhbHVlOyBpZiB0aGF0IG9uZSBpcyBhbHNvIG1pc3NpbmcsIGl0IHdpbGwgc3VzcGVuZCBhbmRcbiAgICogdHJpZ2dlciBhIGxhenkgZmV0Y2guXG4gICAqL1xuICBwcmVmZXRjaFJzYzogUmVhY3QuUmVhY3ROb2RlXG5cbiAgcHJlZmV0Y2hIZWFkOiBIZWFkRGF0YSB8IG51bGxcblxuICBoZWFkOiBIZWFkRGF0YVxuXG4gIHNsb3RzOiBSZWNvcmQ8c3RyaW5nLCBDYWNoZU5vZGU+IHwgbnVsbFxuXG4gIC8qKlxuICAgKiBBIHNoYXJlZCBtdXRhYmxlIHJlZiB0aGF0IHRyYWNrcyB3aGV0aGVyIHRoaXMgc2VnbWVudCBzaG91bGQgYmUgc2Nyb2xsZWRcbiAgICogdG8uIEFsbCBuZXcgc2VnbWVudHMgY3JlYXRlZCBkdXJpbmcgYSBzaW5nbGUgbmF2aWdhdGlvbiBzaGFyZSB0aGUgc2FtZVxuICAgKiByZWYuIFdoZW4gYW55IHNlZ21lbnQncyBzY3JvbGwgaGFuZGxlciBmaXJlcywgaXQgc2V0cyBgY3VycmVudGAgdG9cbiAgICogYGZhbHNlYCBzbyBubyBvdGhlciBzZWdtZW50IHNjcm9sbHMgZm9yIHRoZSBzYW1lIG5hdmlnYXRpb24uXG4gICAqXG4gICAqIGBudWxsYCBtZWFucyB0aGlzIHNlZ21lbnQgaXMgbm90IGEgc2Nyb2xsIHRhcmdldCAoZS5nLiwgYSByZXVzZWQgc2hhcmVkXG4gICAqIGxheW91dCBzZWdtZW50KS5cbiAgICovXG4gIHNjcm9sbFJlZjogU2Nyb2xsUmVmIHwgbnVsbFxufVxuXG4vKipcbiAqIEEgbXV0YWJsZSByZWYgc2hhcmVkIGFjcm9zcyBhbGwgbmV3IHNlZ21lbnRzIGNyZWF0ZWQgZHVyaW5nIGEgc2luZ2xlXG4gKiBuYXZpZ2F0aW9uLiBVc2VkIHRvIGVuc3VyZSB0aGF0IG9ubHkgb25lIHNlZ21lbnQgc2Nyb2xscyBwZXIgbmF2aWdhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgU2Nyb2xsUmVmID0geyBjdXJyZW50OiBib29sZWFuIH1cblxuZXhwb3J0IHR5cGUgRHluYW1pY1BhcmFtVHlwZXMgPVxuICB8ICdjYXRjaGFsbCdcbiAgfCAnY2F0Y2hhbGwtaW50ZXJjZXB0ZWQtKC4uKSguLiknXG4gIHwgJ2NhdGNoYWxsLWludGVyY2VwdGVkLSguKSdcbiAgfCAnY2F0Y2hhbGwtaW50ZXJjZXB0ZWQtKC4uKSdcbiAgfCAnY2F0Y2hhbGwtaW50ZXJjZXB0ZWQtKC4uLiknXG4gIHwgJ29wdGlvbmFsLWNhdGNoYWxsJ1xuICB8ICdkeW5hbWljJ1xuICB8ICdkeW5hbWljLWludGVyY2VwdGVkLSguLikoLi4pJ1xuICB8ICdkeW5hbWljLWludGVyY2VwdGVkLSguKSdcbiAgfCAnZHluYW1pYy1pbnRlcmNlcHRlZC0oLi4pJ1xuICB8ICdkeW5hbWljLWludGVyY2VwdGVkLSguLi4pJ1xuXG5leHBvcnQgdHlwZSBEeW5hbWljUGFyYW1UeXBlc1Nob3J0ID1cbiAgfCAnYydcbiAgfCAnY2koLi4pKC4uKSdcbiAgfCAnY2koLiknXG4gIHwgJ2NpKC4uKSdcbiAgfCAnY2koLi4uKSdcbiAgfCAnb2MnXG4gIHwgJ2QnXG4gIHwgJ2RpKC4uKSguLiknXG4gIHwgJ2RpKC4pJ1xuICB8ICdkaSguLiknXG4gIHwgJ2RpKC4uLiknXG5cbi8vIFRoZSB0dXBsZSBmb3JtIG9mIGEgc2VnbWVudCwgdXNlZCBmb3IgZHluYW1pYyByb3V0ZSBwYXJhbXNcbmV4cG9ydCB0eXBlIER5bmFtaWNTZWdtZW50VHVwbGUgPSBbXG4gIC8vIFBhcmFtIG5hbWVcbiAgcGFyYW1OYW1lOiBzdHJpbmcsXG4gIC8vIFBhcmFtIGNhY2hlIGtleSAoYWxtb3N0IHRoZSBzYW1lIGFzIHRoZSB2YWx1ZSwgYnV0IGFycmF5cyBhcmVcbiAgLy8gY29uY2F0ZW5hdGVkIGludG8gc3RyaW5ncylcbiAgLy8gVE9ETzogV2Ugc2hvdWxkIGNoYW5nZSB0aGlzIHRvIGp1c3QgYmUgdGhlIHZhbHVlLiBDdXJyZW50bHkgd2UgY29udmVydFxuICAvLyBpdCBiYWNrIHRvIGEgdmFsdWUgd2hlbiBwYXNzaW5nIHRvIHVzZVBhcmFtcy4gSXQgb25seSBuZWVkcyB0byBiZVxuICAvLyBhIHN0cmluZyB3aGVuIGNvbnZlcnRlZCB0byBhIGEgY2FjaGUga2V5LCBidXQgdGhhdCBkb2Vzbid0IG1lYW4gd2VcbiAgLy8gbmVlZCB0byBzdG9yZSBpdCBhcyB0aGF0IHJlcHJlc2VudGF0aW9uLlxuICBwYXJhbUNhY2hlS2V5OiBzdHJpbmcsXG4gIC8vIER5bmFtaWMgcGFyYW0gdHlwZVxuICBkeW5hbWljUGFyYW1UeXBlOiBEeW5hbWljUGFyYW1UeXBlc1Nob3J0LFxuICAvLyBTdGF0aWMgc2libGluZyBzZWdtZW50cyBhdCB0aGUgc2FtZSBVUkwgbGV2ZWwuIFVzZWQgYnkgdGhlIGNsaWVudFxuICAvLyByb3V0ZXIgdG8gZGV0ZXJtaW5lIGlmIGEgcHJlZmV0Y2ggY2FuIGJlIHJldXNlZCB3aGVuIG5hdmlnYXRpbmcgdG9cbiAgLy8gYSBzdGF0aWMgc2libGluZyBvZiBhIGR5bmFtaWMgcm91dGUuIEZvciBleGFtcGxlLCBpZiB0aGUgcm91dGUgaXNcbiAgLy8gL3Byb2R1Y3RzL1tpZF0gYW5kIHRoZXJlJ3MgYWxzbyAvcHJvZHVjdHMvc2FsZSwgdGhlbiBzdGF0aWNTaWJsaW5nc1xuICAvLyB3b3VsZCBiZSBbJ3NhbGUnXS4gbnVsbCBtZWFucyB0aGUgc2libGluZ3MgYXJlIHVua25vd24gKGUuZy4gaW5cbiAgLy8gd2VicGFjayBkZXYgbW9kZSkuXG4gIHN0YXRpY1NpYmxpbmdzOiByZWFkb25seSBzdHJpbmdbXSB8IG51bGwsXG5dXG5cbmV4cG9ydCB0eXBlIFNlZ21lbnQgPSBzdHJpbmcgfCBEeW5hbWljU2VnbWVudFR1cGxlXG5cbi8qKlxuICogUm91dGVyIHN0YXRlXG4gKi9cbmV4cG9ydCB0eXBlIEZsaWdodFJvdXRlclN0YXRlID0gW1xuICBzZWdtZW50OiBTZWdtZW50LFxuICBwYXJhbGxlbFJvdXRlczogeyBbcGFyYWxsZWxSb3V0ZXJLZXk6IHN0cmluZ106IEZsaWdodFJvdXRlclN0YXRlIH0sXG4gIHJlZnJlc2hTdGF0ZT86IENvbXByZXNzZWRSZWZyZXNoU3RhdGUgfCBudWxsLFxuICAvKipcbiAgICogLSBcInJlZmV0Y2hcIiBpcyB1c2VkIGR1cmluZyBhIHJlcXVlc3QgdG8gaW5mb3JtIHRoZSBzZXJ2ZXIgd2hlcmUgcmVuZGVyaW5nXG4gICAqICAgc2hvdWxkIHN0YXJ0IGZyb20uXG4gICAqXG4gICAqIC0gXCJpbnNpZGUtc2hhcmVkLWxheW91dFwiIGlzIHVzZWQgZHVyaW5nIGEgcHJlZmV0Y2ggcmVxdWVzdCB0byBpbmZvcm0gdGhlXG4gICAqICAgc2VydmVyIHRoYXQgZXZlbiBpZiB0aGUgc2VnbWVudCBtYXRjaGVzLCBpdCBzaG91bGQgYmUgdHJlYXRlZCBhcyBpZiBpdCdzXG4gICAqICAgd2l0aGluIHRoZSBcIm5ld1wiIHBhcnQgb2YgYSBuYXZpZ2F0aW9uIOKAlCBpbnNpZGUgdGhlIHNoYXJlZCBsYXlvdXQuIElmXG4gICAqICAgdGhlIHNlZ21lbnQgZG9lc24ndCBtYXRjaCwgdGhlbiBpdCBoYXMgbm8gZWZmZWN0LCBzaW5jZSBpdCB3b3VsZCBiZVxuICAgKiAgIHRyZWF0ZWQgYXMgbmV3IHJlZ2FyZGxlc3MuIElmIGl0IGRvZXMgbWF0Y2gsIHRob3VnaCwgdGhlIHNlcnZlciBkb2VzIG5vdFxuICAgKiAgIG5lZWQgdG8gcmVuZGVyIGl0LCBiZWNhdXNlIHRoZSBjbGllbnQgYWxyZWFkeSBoYXMgaXQuXG4gICAqXG4gICAqIC0gXCJtZXRhZGF0YS1vbmx5XCIgaW5zdHJ1Y3RzIHRoZSBzZXJ2ZXIgdG8gc2tpcCByZW5kZXJpbmcgdGhlIHNlZ21lbnRzIGFuZFxuICAgKiAgIG9ubHkgc2VuZCB0aGUgaGVhZCBkYXRhLlxuICAgKlxuICAgKiAgIEEgYml0IGNvbmZ1c2luZywgYnV0IHRoYXQncyBiZWNhdXNlIGl0IGhhcyBvbmx5IG9uZSBleHRyZW1lbHkgbmFycm93IHVzZVxuICAgKiAgIGNhc2Ug4oCUIGR1cmluZyBhIG5vbi1QUFIgcHJlZmV0Y2gsIHRoZSBzZXJ2ZXIgdXNlcyBpdCB0byBmaW5kIHRoZSBmaXJzdFxuICAgKiAgIGxvYWRpbmcgYm91bmRhcnkgYmVuZWF0aCBhIHNoYXJlZCBsYXlvdXQuXG4gICAqXG4gICAqICAgVE9ETzogV2Ugc2hvdWxkIHJldGhpbmsgdGhlIHByb3RvY29sIGZvciBkeW5hbWljIHJlcXVlc3RzLiBJdCBtaWdodCBub3RcbiAgICogICBtYWtlIHNlbnNlIGZvciB0aGUgY2xpZW50IHRvIHNlbmQgYSBGbGlnaHRSb3V0ZXJTdGF0ZSwgc2luY2UgdGhpcyB0eXBlIGlzXG4gICAqICAgb3ZlcmxvYWRlZCB3aXRoIGNvbmNlcm5zLlxuICAgKi9cbiAgcmVmcmVzaD86ICdyZWZldGNoJyB8ICdpbnNpZGUtc2hhcmVkLWxheW91dCcgfCAnbWV0YWRhdGEtb25seScgfCBudWxsLFxuICAvKipcbiAgICogQml0bWFzayBvZiBQcmVmZXRjaEhpbnQgZmxhZ3MuIEVuY29kZXMgcm91dGUgc3RydWN0dXJlIG1ldGFkYXRhOlxuICAgKiByb290IGxheW91dCwgbG9hZGluZyBib3VuZGFyaWVzLCBpbnN0YW50IGNvbmZpZ3MsIGFuZCBydW50aW1lIHByZWZldGNoXG4gICAqIGhpbnRzLiBPbmx5IHNldCB3aGVuIG5vbi16ZXJvLlxuICAgKi9cbiAgcHJlZmV0Y2hIaW50cz86IG51bWJlcixcbl1cblxuLyoqXG4gKiBXaGVuIHJlbmRlcmluZyBhIHBhcmFsbGVsIHJvdXRlLCBzb21lIG9mIHRoZSBwYXJhbGxlbCBwYXRocyBtYXkgbm90IG1hdGNoXG4gKiB0aGUgY3VycmVudCBVUkwuIEluIHRoYXQgY2FzZSwgdGhlIE5leHQgY2xpZW50IGhhcyB0byByZW5kZXIgc29tZXRoaW5nLFxuICogc28gaXQgd2lsbCByZW5kZXIgd2hpY2hldmVyIHdhcyB0aGUgbGFzdCByb3V0ZSB0byBtYXRjaCB0aGF0IHNsb3QuIFdlIHVzZVxuICogdGhpcyB0eXBlIHRvIHRyYWNrIHdoZW4gdGhpcyBoYXMgaGFwcGVuZWQuIEl0J3MgYSB0dXBsZSBvZiB0aGUgb3JpZ2luYWxcbiAqIFVSTCB0aGF0IHdhcyB1c2VkIHRvIGZldGNoIHRoZSBzZWdtZW50LCBhbmQgdGhlIChwb3NzaWJseSByZXdyaXR0ZW4pIHNlYXJjaFxuICogcXVlcnkgdGhhdCB3YXMgcmVuZGVyZWQgYnkgdGhlIHNlcnZlci4gVGhlIFVSTCBpcyBuZWVkZWQgd2hlbiBwZXJmb3JtaW5nXG4gKiBhIHJlZnJlc2ggb2YgdGhlIHNlZ21lbnQsIGFuZCB0aGUgc2VhcmNoIHF1ZXJ5IGlzIG5lZWRlZCBmb3IgbG9va2luZyB1cFxuICogbWF0Y2hpbmcgZW50cmllcyBpbiB0aGUgc2VnbWVudCBjYWNoZS5cbiAqL1xuZXhwb3J0IHR5cGUgQ29tcHJlc3NlZFJlZnJlc2hTdGF0ZSA9IFt1cmw6IHN0cmluZywgcmVuZGVyZWRTZWFyY2g6IHN0cmluZ11cblxuZXhwb3J0IGNvbnN0IGVudW0gUHJlZmV0Y2hIaW50IHtcbiAgLy8gVGhpcyBzZWdtZW50IGhhcyBhIHJ1bnRpbWUgcHJlZmV0Y2ggZW5hYmxlZCAodmlhIHVuc3RhYmxlX2luc3RhbnQgd2l0aFxuICAvLyBwcmVmZXRjaDogJ3J1bnRpbWUnKS4gUGVyLXNlZ21lbnQgb25seSwgZG9lcyBub3QgcHJvcGFnYXRlIHRvIGFuY2VzdG9ycy5cbiAgSGFzUnVudGltZVByZWZldGNoID0gMGIwMDAwMSxcbiAgLy8gVGhpcyBzZWdtZW50IG9yIG9uZSBvZiBpdHMgZGVzY2VuZGFudHMgaGFzIGFuIGluc3RhbnQgY29uZmlnIGRlZmluZWRcbiAgLy8gKGFueSB0cnV0aHkgdW5zdGFibGVfaW5zdGFudCwgcmVnYXJkbGVzcyBvZiBwcmVmZXRjaCBtb2RlKS4gUHJvcGFnYXRlc1xuICAvLyB1cHdhcmQgc28gdGhlIHJvb3Qgc2VnbWVudCByZWZsZWN0cyB0aGUgZW50aXJlIHN1YnRyZWUuXG4gIFN1YnRyZWVIYXNJbnN0YW50ID0gMGIwMDAxMCxcbiAgLy8gVGhpcyBzZWdtZW50IGl0c2VsZiBoYXMgYSBsb2FkaW5nLnRzeCBib3VuZGFyeS5cbiAgU2VnbWVudEhhc0xvYWRpbmdCb3VuZGFyeSA9IDBiMDAxMDAsXG4gIC8vIEEgZGVzY2VuZGFudCBzZWdtZW50IChidXQgbm90IHRoaXMgb25lKSBoYXMgYSBsb2FkaW5nLnRzeCBib3VuZGFyeS5cbiAgLy8gUHJvcGFnYXRlcyB1cHdhcmQgc28gdGhlIHJvb3QgcmVmbGVjdHMgdGhlIGVudGlyZSBzdWJ0cmVlLlxuICBTdWJ0cmVlSGFzTG9hZGluZ0JvdW5kYXJ5ID0gMGIwMTAwMCxcbiAgLy8gVGhpcyBzZWdtZW50IGlzIHRoZSByb290IGxheW91dCBvZiB0aGUgYXBwbGljYXRpb24uXG4gIElzUm9vdExheW91dCA9IDBiMTAwMDAsXG4gIC8vIFRoaXMgc2VnbWVudCdzIHJlc3BvbnNlIGluY2x1ZGVzIGl0cyBwYXJlbnQncyBkYXRhIGlubGluZWQgaW50byBpdC5cbiAgLy8gU2V0IGF0IGJ1aWxkIHRpbWUgYnkgdGhlIHNlZ21lbnQgc2l6ZSBtZWFzdXJlbWVudCBwYXNzLlxuICBQYXJlbnRJbmxpbmVkSW50b1NlbGYgPSAwYjEwMDAwMCxcbiAgLy8gVGhpcyBzZWdtZW50J3MgZGF0YSBpcyBpbmxpbmVkIGludG8gb25lIG9mIGl0cyBjaGlsZHJlbiDigJQgZG9uJ3QgZmV0Y2hcbiAgLy8gaXQgc2VwYXJhdGVseS4gU2V0IGF0IGJ1aWxkIHRpbWUgYnkgdGhlIHNlZ21lbnQgc2l6ZSBtZWFzdXJlbWVudCBwYXNzLlxuICBJbmxpbmVkSW50b0NoaWxkID0gMGIxMDAwMDAwLFxuICAvLyBPbiBhIF9fUEFHRV9fOiB0aGlzIHBhZ2UncyByZXNwb25zZSBpbmNsdWRlcyB0aGUgaGVhZCAobWV0YWRhdGEvdmlld3BvcnQpXG4gIC8vIGF0IHRoZSBlbmQgb2YgaXRzIFNlZ21lbnRQcmVmZXRjaFtdIGFycmF5LlxuICBIZWFkSW5saW5lZEludG9TZWxmID0gMGIxMDAwMDAwMCxcbiAgLy8gT24gdGhlIHJvb3QgaGludCBub2RlOiB0aGUgaGVhZCB3YXMgTk9UIGlubGluZWQgaW50byBhbnkgcGFnZSDigJQgZmV0Y2hcbiAgLy8gaXQgc2VwYXJhdGVseS4gQWJzZW5jZSBvZiB0aGlzIGJpdCBtZWFucyB0aGUgaGVhZCBpcyBidW5kbGVkIGludG8gYSBwYWdlLlxuICBIZWFkT3V0bGluZWQgPSAwYjEwMDAwMDAwMCxcbn1cblxuLyoqXG4gKiBJbmRpdmlkdWFsIEZsaWdodCByZXNwb25zZSBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIEZsaWdodFNlZ21lbnRQYXRoID1cbiAgLy8gVXNlcyBgYW55YCBhcyByZXBlYXRpbmcgcGF0dGVybiBjYW4ndCBiZSB0eXBlZC5cbiAgfCBhbnlbXVxuICAvLyBMb29rcyBzb21ld2hhdCBsaWtlIHRoaXNcbiAgfCBbXG4gICAgICBzZWdtZW50OiBTZWdtZW50LFxuICAgICAgcGFyYWxsZWxSb3V0ZXJLZXk6IHN0cmluZyxcbiAgICAgIHNlZ21lbnQ6IFNlZ21lbnQsXG4gICAgICBwYXJhbGxlbFJvdXRlcktleTogc3RyaW5nLFxuICAgICAgc2VnbWVudDogU2VnbWVudCxcbiAgICAgIHBhcmFsbGVsUm91dGVyS2V5OiBzdHJpbmcsXG4gICAgXVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSB0cmVlIG9mIHNlZ21lbnRzIGFuZCB0aGUgRmxpZ2h0IGRhdGEgKGkuZS4gUmVhY3Qgbm9kZXMpIHRoYXRcbiAqIGNvcnJlc3BvbmQgdG8gZWFjaCBvbmUuIFRoZSB0cmVlIGlzIGlzb21vcnBoaWMgdG8gdGhlIEZsaWdodFJvdXRlclN0YXRlO1xuICogaG93ZXZlciBpbiB0aGUgZnV0dXJlIHdlIHdhbnQgdG8gYmUgYWJsZSB0byBmZXRjaCBhcmJpdHJhcnkgcGFydGlhbCBzZWdtZW50c1xuICogd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggYWxsIGl0cyBjaGlsZHJlbi4gU28gdGhpcyByZXNwb25zZSBmb3JtYXQgd2lsbFxuICogbGlrZWx5IGNoYW5nZS5cbiAqL1xuZXhwb3J0IHR5cGUgQ2FjaGVOb2RlU2VlZERhdGEgPSBbXG4gIG5vZGU6IFJlYWN0LlJlYWN0Tm9kZSB8IG51bGwsXG4gIHBhcmFsbGVsUm91dGVzOiB7XG4gICAgW3BhcmFsbGVsUm91dGVyS2V5OiBzdHJpbmddOiBDYWNoZU5vZGVTZWVkRGF0YSB8IG51bGxcbiAgfSxcbiAgLy8gVE9ETzogVGhpcyBmaWVsZCBpcyBubyBsb25nZXIgdXNlZC4gUmVtb3ZlIGl0LlxuICBsb2FkaW5nOiBudWxsLFxuICBpc1BhcnRpYWw6IGJvb2xlYW4sXG4gIC8qKlxuICAgKiBBIHRoZW5hYmxlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHNldCBvZiByb3V0ZSBwYXJhbXMgdGhpcyBzZWdtZW50IGFjY2Vzc2VkXG4gICAqIGR1cmluZyBzZXJ2ZXIgcmVuZGVyaW5nLiBVc2VkIGJ5IHRoZSBjbGllbnQgcm91dGVyIHRvIGRldGVybWluZSBjYWNoZSBrZXlcbiAgICogc3BlY2lmaWNpdHkgLSBzZWdtZW50cyB0aGF0IG9ubHkgYWNjZXNzIGNlcnRhaW4gcGFyYW1zIGNhbiBiZSByZXVzZWQgYWNyb3NzXG4gICAqIG5hdmlnYXRpb25zIHdoZXJlIHVuYWNjZXNzZWQgcGFyYW1zIGNoYW5nZS5cbiAgICpcbiAgICogLSBudWxsIHRoZW5hYmxlOiB0cmFja2luZyB3YXMgbm90IGVuYWJsZWQgZm9yIHRoaXMgcmVuZGVyIChlLmcuLCBub3QgYVxuICAgKiAgIHByZXJlbmRlcikuIFRyZWF0IGNvbnNlcnZhdGl2ZWx5IC0gYXNzdW1lIGFsbCBwYXJhbXMgdmFyeS5cbiAgICogLSBUaGVuYWJsZSByZXNvbHZlcyB0byBlbXB0eSBTZXQ6IHNlZ21lbnQgYWNjZXNzZXMgbm8gcGFyYW1zIChlLmcuLCBjbGllbnRcbiAgICogICBjb21wb25lbnRzLCBvciBzZXJ2ZXIgY29tcG9uZW50cyB0aGF0IGRvbid0IHJlYWQgcGFyYW1zKS4gQ2FuIGJlIHNoYXJlZFxuICAgKiAgIGFjcm9zcyBhbGwgcGFyYW0gdmFsdWVzLlxuICAgKiAtIFRoZW5hYmxlIHJlc29sdmVzIHRvIG5vbi1lbXB0eSBTZXQ6IHNlZ21lbnQgZGVwZW5kcyBvbiB0aG9zZSBwYXJhbXMuXG4gICAqICAgQ2FuIG9ubHkgcmV1c2Ugd2hlbiB0aG9zZSBzcGVjaWZpYyBwYXJhbXMgbWF0Y2guXG4gICAqL1xuICB2YXJ5UGFyYW1zOiBWYXJ5UGFyYW1zVGhlbmFibGUgfCBudWxsLFxuXVxuXG5leHBvcnQgdHlwZSBGbGlnaHREYXRhU2VnbWVudCA9IFtcbiAgLyogc2VnbWVudCBvZiB0aGUgcmVuZGVyZWQgc2xpY2U6ICovIFNlZ21lbnQsXG4gIC8qIHRyZWVQYXRjaCAqLyBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgLyogY2FjaGVOb2RlU2VlZERhdGEgKi8gQ2FjaGVOb2RlU2VlZERhdGEgfCBudWxsLCAvLyBDYW4gYmUgbnVsbCBkdXJpbmcgcHJlZmV0Y2ggaWYgdGhlcmUncyBubyBsb2FkaW5nIGNvbXBvbmVudFxuICAvKiBoZWFkOiB2aWV3cG9ydCAqLyBIZWFkRGF0YSxcbiAgLyogaXNIZWFkUGFydGlhbCAqLyBib29sZWFuLFxuXVxuXG5leHBvcnQgdHlwZSBGbGlnaHREYXRhUGF0aCA9XG4gIC8vIFVzZXMgYGFueWAgYXMgcmVwZWF0aW5nIHBhdHRlcm4gY2FuJ3QgYmUgdHlwZWQuXG4gIHwgYW55W11cbiAgLy8gTG9va3Mgc29tZXdoYXQgbGlrZSB0aGlzXG4gIHwgW1xuICAgICAgLy8gSG9sZHMgZnVsbCBwYXRoIHRvIHRoZSBzZWdtZW50LlxuICAgICAgLi4uRmxpZ2h0U2VnbWVudFBhdGhbXSxcbiAgICAgIC4uLkZsaWdodERhdGFTZWdtZW50LFxuICAgIF1cblxuLyoqXG4gKiBUaGUgRmxpZ2h0IHJlc3BvbnNlIGRhdGFcbiAqL1xuZXhwb3J0IHR5cGUgRmxpZ2h0RGF0YSA9IEFycmF5PEZsaWdodERhdGFQYXRoPiB8IHN0cmluZ1xuXG4vKipcbiAqIFBlci1yb3V0ZSBwcmVmZXRjaCBoaW50cyBjb21wdXRlZCBhdCBidWlsZCB0aW1lLiBNaXJyb3JzIHRoZSBzaGFwZSBvZiB0aGVcbiAqIGxvYWRlciB0cmVlIHNvIGhpbnRzIGNhbiBiZSB0cmF2ZXJzZWQgaW4gcGFyYWxsZWwgZHVyaW5nIHJvdXRlciBzdGF0ZVxuICogY3JlYXRpb24uIEVhY2ggbm9kZSBzdG9yZXMgYSBiaXRtYXNrIG9mIFByZWZldGNoSGludCBmbGFnc1xuICogKFBhcmVudElubGluZWRJbnRvU2VsZiwgSW5saW5lZEludG9DaGlsZCkgY29tcHV0ZWQgYnkgdGhlIHNlZ21lbnQgc2l6ZVxuICogbWVhc3VyZW1lbnQgcGFzcy5cbiAqXG4gKiBQZXJzaXN0ZWQgdG8gcHJlZmV0Y2gtaGludHMuanNvbiBhcyBSZWNvcmQ8c3RyaW5nLCBQcmVmZXRjaEhpbnRzPiAoa2V5ZWRcbiAqIGJ5IHJvdXRlIHBhdHRlcm4pIGFuZCBsb2FkZWQgYXQgc2VydmVyIHN0YXJ0dXAuXG4gKi9cbmV4cG9ydCB0eXBlIFByZWZldGNoSGludHMgPSB7XG4gIC8qKiBCaXRtYXNrIG9mIFByZWZldGNoSGludCBmbGFncyBmb3IgdGhpcyBzZWdtZW50LiAqL1xuICBoaW50czogbnVtYmVyXG4gIC8qKiBDaGlsZCBoaW50IG5vZGVzLCBrZXllZCBieSBwYXJhbGxlbCByb3V0ZSBrZXkuICovXG4gIHNsb3RzOiBSZWNvcmQ8c3RyaW5nLCBQcmVmZXRjaEhpbnRzPiB8IG51bGxcbn1cblxuZXhwb3J0IHR5cGUgQWN0aW9uUmVzdWx0ID0gUHJvbWlzZTxhbnk+XG5cbmV4cG9ydCB0eXBlIEluaXRpYWxSU0NQYXlsb2FkID0ge1xuICAvKiogYnVpbGRJZCwgY2FuIGJlIGVtcHR5IGlmIHRoZSB4LW5leHRqcy1idWlsZC1pZCBoZWFkZXIgaXMgc2V0ICovXG4gIGI/OiBzdHJpbmdcbiAgLyoqIGluaXRpYWxDYW5vbmljYWxVcmxQYXJ0cyAqL1xuICBjOiBzdHJpbmdbXVxuICAvKiogaW5pdGlhbFJlbmRlcmVkU2VhcmNoICovXG4gIHE6IHN0cmluZ1xuICAvKiogY291bGRCZUludGVyY2VwdGVkICovXG4gIGk6IGJvb2xlYW5cbiAgLyoqIGluaXRpYWxGbGlnaHREYXRhICovXG4gIGY6IEZsaWdodERhdGFQYXRoW11cbiAgLyoqIG1pc3NpbmdTbG90cyAqL1xuICBtOiBTZXQ8c3RyaW5nPiB8IHVuZGVmaW5lZFxuICAvKiogR2xvYmFsRXJyb3IgKi9cbiAgRzogW1JlYWN0LkNvbXBvbmVudFR5cGU8YW55PiwgUmVhY3QuUmVhY3ROb2RlIHwgdW5kZWZpbmVkXVxuICAvKiogc3VwcG9ydHNQZXJTZWdtZW50UHJlZmV0Y2hpbmcgKi9cbiAgUzogYm9vbGVhblxuICAvKipcbiAgICogaGVhZFZhcnlQYXJhbXMgLSB2YXJ5IHBhcmFtcyBmb3IgdGhlIGhlYWQgKG1ldGFkYXRhKSBvZiB0aGUgcmVzcG9uc2UuXG4gICAqL1xuICBoOiBWYXJ5UGFyYW1zVGhlbmFibGUgfCBudWxsXG4gIC8qKiBzdGFsZVRpbWUgaW4gc2Vjb25kcyAtIE9ubHkgcHJlc2VudCB3aGVuIENhY2hlIENvbXBvbmVudHMgaXMgZW5hYmxlZC4gKi9cbiAgcz86IEFzeW5jSXRlcmFibGU8bnVtYmVyPlxuICAvKiogc3RhdGljU3RhZ2VCeXRlTGVuZ3RoIC0gUmVzb2x2ZXMgd2hlbiB0aGUgc3RhdGljIHN0YWdlIGVuZHMuICovXG4gIGw/OiBQcm9taXNlPG51bWJlcj5cbiAgLyoqIHJ1bnRpbWVQcmVmZXRjaFN0cmVhbSDigJQgRW1iZWRkZWQgcnVudGltZSBwcmVmZXRjaCBGbGlnaHQgc3RyZWFtLiAqL1xuICBwPzogUmVhZGFibGVTdHJlYW08VWludDhBcnJheT5cbiAgLyoqXG4gICAqIGR5bmFtaWNTdGFsZVRpbWUg4oCUIFBlci1wYWdlIEJGQ2FjaGUgc3RhbGUgdGltZSBpbiBzZWNvbmRzLCBmcm9tXG4gICAqIGB1bnN0YWJsZV9keW5hbWljU3RhbGVUaW1lYC4gT25seSBpbmNsdWRlZCBmb3IgZHluYW1pYyByZW5kZXJzLiBDb250cm9sc1xuICAgKiBob3cgbG9uZyB0aGUgY2xpZW50IHJvdXRlciBjYWNoZSByZXRhaW5zIGR5bmFtaWMgbmF2aWdhdGlvbiBkYXRhLiBUaGlzIGlzXG4gICAqIGRpc3RpbmN0IGZyb20gdGhlIGBzYCBmaWVsZCwgd2hpY2ggY29udHJvbHMgc2VnbWVudCBjYWNoZSAocHJlZmV0Y2gpXG4gICAqIHN0YWxlbmVzcy5cbiAgICovXG4gIGQ/OiBudW1iZXJcbn1cblxuLy8gUmVzcG9uc2UgZnJvbSBgY3JlYXRlRnJvbUZldGNoYCBmb3Igbm9ybWFsIHJlbmRlcmluZ1xuZXhwb3J0IHR5cGUgTmF2aWdhdGlvbkZsaWdodFJlc3BvbnNlID0ge1xuICAvKiogYnVpbGRJZCwgY2FuIGJlIGVtcHR5IGlmIHRoZSB4LW5leHRqcy1idWlsZC1pZCBoZWFkZXIgaXMgc2V0ICovXG4gIGI/OiBzdHJpbmdcbiAgLyoqIGZsaWdodERhdGEgKi9cbiAgZjogRmxpZ2h0RGF0YVxuICAvKiogc3VwcG9ydHNQZXJTZWdtZW50UHJlZmV0Y2hpbmcgKi9cbiAgUzogYm9vbGVhblxuICAvKiogcmVuZGVyZWRTZWFyY2ggKi9cbiAgcTogc3RyaW5nXG4gIC8qKiBjb3VsZEJlSW50ZXJjZXB0ZWQgKi9cbiAgaTogYm9vbGVhblxuICAvKiogc3RhbGVUaW1lIC0gT25seSBwcmVzZW50IGluIGR5bmFtaWMgcnVudGltZSBwcmVmZXRjaCByZXNwb25zZXMuICovXG4gIHM/OiBBc3luY0l0ZXJhYmxlPG51bWJlcj5cbiAgLyoqIHN0YXRpY1N0YWdlQnl0ZUxlbmd0aCAtIFJlc29sdmVzIHdoZW4gdGhlIHN0YXRpYyBzdGFnZSBlbmRzLiAqL1xuICBsPzogUHJvbWlzZTxudW1iZXI+XG4gIC8qKiBoZWFkVmFyeVBhcmFtcyAqL1xuICBoOiBWYXJ5UGFyYW1zVGhlbmFibGUgfCBudWxsXG4gIC8qKiBydW50aW1lUHJlZmV0Y2hTdHJlYW0g4oCUIEVtYmVkZGVkIHJ1bnRpbWUgcHJlZmV0Y2ggRmxpZ2h0IHN0cmVhbS4gKi9cbiAgcD86IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+XG4gIC8qKlxuICAgKiBkeW5hbWljU3RhbGVUaW1lIOKAlCBQZXItcGFnZSBCRkNhY2hlIHN0YWxlIHRpbWUgaW4gc2Vjb25kcywgZnJvbVxuICAgKiBgdW5zdGFibGVfZHluYW1pY1N0YWxlVGltZWAuIE9ubHkgaW5jbHVkZWQgZm9yIGR5bmFtaWMgcmVuZGVycy4gQ29udHJvbHNcbiAgICogaG93IGxvbmcgdGhlIGNsaWVudCByb3V0ZXIgY2FjaGUgcmV0YWlucyBkeW5hbWljIG5hdmlnYXRpb24gZGF0YS4gVGhpcyBpc1xuICAgKiBkaXN0aW5jdCBmcm9tIHRoZSBgc2AgZmllbGQsIHdoaWNoIGNvbnRyb2xzIHNlZ21lbnQgY2FjaGUgKHByZWZldGNoKVxuICAgKiBzdGFsZW5lc3MuXG4gICAqL1xuICBkPzogbnVtYmVyXG59XG5cbi8vIFJlc3BvbnNlIGZyb20gYGNyZWF0ZUZyb21GZXRjaGAgZm9yIHNlcnZlciBhY3Rpb25zLiBBY3Rpb24ncyBmbGlnaHQgZGF0YSBjYW4gYmUgbnVsbFxuZXhwb3J0IHR5cGUgQWN0aW9uRmxpZ2h0UmVzcG9uc2UgPSB7XG4gIC8qKiBhY3Rpb25SZXN1bHQgKi9cbiAgYTogQWN0aW9uUmVzdWx0XG4gIC8qKiBidWlsZElkLCBjYW4gYmUgZW1wdHkgaWYgdGhlIHgtbmV4dGpzLWJ1aWxkLWlkIGhlYWRlciBpcyBzZXQgKi9cbiAgYj86IHN0cmluZ1xuICAvKiogZmxpZ2h0RGF0YSAqL1xuICBmOiBGbGlnaHREYXRhXG4gIC8qKiByZW5kZXJlZFNlYXJjaCAqL1xuICBxOiBzdHJpbmdcbiAgLyoqIGNvdWxkQmVJbnRlcmNlcHRlZCAqL1xuICBpOiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIFJTQ1BheWxvYWQgPVxuICB8IEluaXRpYWxSU0NQYXlsb2FkXG4gIHwgTmF2aWdhdGlvbkZsaWdodFJlc3BvbnNlXG4gIHwgQWN0aW9uRmxpZ2h0UmVzcG9uc2VcbiJdLCJuYW1lcyI6WyJQcmVmZXRjaEhpbnQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/app-router-types.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/deep-freeze.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/deep-freeze.js ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"deepFreeze\", ({\n enumerable: true,\n get: function() {\n return deepFreeze;\n }\n}));\nfunction deepFreeze(obj) {\n // If the object is already frozen, there's no need to freeze it again.\n if (Object.isFrozen(obj)) return obj;\n // An array is an object, but we also want to freeze each element in the array\n // as well.\n if (Array.isArray(obj)) {\n for (const item of obj){\n if (!item || typeof item !== 'object') continue;\n deepFreeze(item);\n }\n return Object.freeze(obj);\n }\n for (const value of Object.values(obj)){\n if (!value || typeof value !== 'object') continue;\n deepFreeze(value);\n }\n return Object.freeze(obj);\n} //# sourceMappingURL=deep-freeze.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvZGVlcC1mcmVlemUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs4Q0FVZ0JBOzs7ZUFBQUE7OztBQUFULFNBQVNBLFdBQTZCQyxHQUFNO0lBQ2pELHVFQUF1RTtJQUN2RSxJQUFJQyxPQUFPQyxRQUFRLENBQUNGLE1BQU0sT0FBT0E7SUFFakMsOEVBQThFO0lBQzlFLFdBQVc7SUFDWCxJQUFJRyxNQUFNQyxPQUFPLENBQUNKLE1BQU07UUFDdEIsS0FBSyxNQUFNSyxRQUFRTCxJQUFLO1lBQ3RCLElBQUksQ0FBQ0ssUUFBUSxPQUFPQSxTQUFTLFVBQVU7WUFDdkNOLFdBQVdNO1FBQ2I7UUFFQSxPQUFPSixPQUFPSyxNQUFNLENBQUNOO0lBQ3ZCO0lBRUEsS0FBSyxNQUFNTyxTQUFTTixPQUFPTyxNQUFNLENBQUNSLEtBQU07UUFDdEMsSUFBSSxDQUFDTyxTQUFTLE9BQU9BLFVBQVUsVUFBVTtRQUN6Q1IsV0FBV1E7SUFDYjtJQUVBLE9BQU9OLE9BQU9LLE1BQU0sQ0FBQ047QUFDdkIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9zcmMvc2hhcmVkL2xpYi9kZWVwLWZyZWV6ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERlZXBSZWFkb25seSB9IGZyb20gJy4vZGVlcC1yZWFkb25seSdcblxuLyoqXG4gKiBSZWN1cnNpdmVseSBmcmVlemVzIGFuIG9iamVjdCBhbmQgYWxsIG9mIGl0cyBwcm9wZXJ0aWVzLiBUaGlzIHByZXZlbnRzIHRoZVxuICogb2JqZWN0IGZyb20gYmVpbmcgbW9kaWZpZWQgYXQgcnVudGltZS4gV2hlbiB0aGUgSlMgcnVudGltZSBpcyBydW5uaW5nIGluXG4gKiBzdHJpY3QgbW9kZSwgYW55IGF0dGVtcHRzIHRvIG1vZGlmeSBhIGZyb3plbiBvYmplY3Qgd2lsbCB0aHJvdyBhbiBlcnJvci5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL09iamVjdC9mcmVlemVcbiAqIEBwYXJhbSBvYmogVGhlIG9iamVjdCB0byBmcmVlemUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWVwRnJlZXplPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCk6IERlZXBSZWFkb25seTxUPiB7XG4gIC8vIElmIHRoZSBvYmplY3QgaXMgYWxyZWFkeSBmcm96ZW4sIHRoZXJlJ3Mgbm8gbmVlZCB0byBmcmVlemUgaXQgYWdhaW4uXG4gIGlmIChPYmplY3QuaXNGcm96ZW4ob2JqKSkgcmV0dXJuIG9iaiBhcyBEZWVwUmVhZG9ubHk8VD5cblxuICAvLyBBbiBhcnJheSBpcyBhbiBvYmplY3QsIGJ1dCB3ZSBhbHNvIHdhbnQgdG8gZnJlZXplIGVhY2ggZWxlbWVudCBpbiB0aGUgYXJyYXlcbiAgLy8gYXMgd2VsbC5cbiAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBvYmopIHtcbiAgICAgIGlmICghaXRlbSB8fCB0eXBlb2YgaXRlbSAhPT0gJ29iamVjdCcpIGNvbnRpbnVlXG4gICAgICBkZWVwRnJlZXplKGl0ZW0pXG4gICAgfVxuXG4gICAgcmV0dXJuIE9iamVjdC5mcmVlemUob2JqKSBhcyBEZWVwUmVhZG9ubHk8VD5cbiAgfVxuXG4gIGZvciAoY29uc3QgdmFsdWUgb2YgT2JqZWN0LnZhbHVlcyhvYmopKSB7XG4gICAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSBjb250aW51ZVxuICAgIGRlZXBGcmVlemUodmFsdWUpXG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmZyZWV6ZShvYmopIGFzIERlZXBSZWFkb25seTxUPlxufVxuIl0sIm5hbWVzIjpbImRlZXBGcmVlemUiLCJvYmoiLCJPYmplY3QiLCJpc0Zyb3plbiIsIkFycmF5IiwiaXNBcnJheSIsIml0ZW0iLCJmcmVlemUiLCJ2YWx1ZSIsInZhbHVlcyJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/deep-freeze.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/errors/constants.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/errors/constants.js ***!
|
||
\***************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"MISSING_ROOT_TAGS_ERROR\", ({\n enumerable: true,\n get: function() {\n return MISSING_ROOT_TAGS_ERROR;\n }\n}));\nconst MISSING_ROOT_TAGS_ERROR = 'NEXT_MISSING_ROOT_TAGS';\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=constants.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvZXJyb3JzL2NvbnN0YW50cy5qcyIsIm1hcHBpbmdzIjoiOzs7OzJEQUFhQTs7O2VBQUFBOzs7QUFBTixNQUFNQSwwQkFBMEIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvc2hhcmVkL2xpYi9lcnJvcnMvY29uc3RhbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBNSVNTSU5HX1JPT1RfVEFHU19FUlJPUiA9ICdORVhUX01JU1NJTkdfUk9PVF9UQUdTJ1xuIl0sIm5hbWVzIjpbIk1JU1NJTkdfUk9PVF9UQUdTX0VSUk9SIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/errors/constants.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/get-hostname.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/get-hostname.js ***!
|
||
\***********************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getHostname\", ({\n enumerable: true,\n get: function() {\n return getHostname;\n }\n}));\nfunction getHostname(parsed, headers) {\n // Get the hostname from the headers if it exists, otherwise use the parsed\n // hostname.\n let hostname;\n if (headers?.host && !Array.isArray(headers.host)) {\n hostname = headers.host.toString().split(':', 1)[0];\n } else if (parsed.hostname) {\n hostname = parsed.hostname;\n } else return;\n return hostname.toLowerCase();\n} //# sourceMappingURL=get-hostname.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvZ2V0LWhvc3RuYW1lLmpzIiwibWFwcGluZ3MiOiI7Ozs7K0NBUWdCQTs7O2VBQUFBOzs7QUFBVCxTQUFTQSxZQUNkQyxNQUFvQyxFQUNwQ0MsT0FBNkI7SUFFN0IsMkVBQTJFO0lBQzNFLFlBQVk7SUFDWixJQUFJQztJQUNKLElBQUlELFNBQVNFLFFBQVEsQ0FBQ0MsTUFBTUMsT0FBTyxDQUFDSixRQUFRRSxJQUFJLEdBQUc7UUFDakRELFdBQVdELFFBQVFFLElBQUksQ0FBQ0csUUFBUSxHQUFHQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRTtJQUNyRCxPQUFPLElBQUlQLE9BQU9FLFFBQVEsRUFBRTtRQUMxQkEsV0FBV0YsT0FBT0UsUUFBUTtJQUM1QixPQUFPO0lBRVAsT0FBT0EsU0FBU00sV0FBVztBQUM3QiIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9zaGFyZWQvbGliL2dldC1ob3N0bmFtZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE91dGdvaW5nSHR0cEhlYWRlcnMgfSBmcm9tICdodHRwJ1xuXG4vKipcbiAqIFRha2VzIGFuIG9iamVjdCB3aXRoIGEgaG9zdG5hbWUgcHJvcGVydHkgKGxpa2UgYSBwYXJzZWQgVVJMKSBhbmQgc29tZVxuICogaGVhZGVycyB0aGF0IG1heSBjb250YWluIEhvc3QgYW5kIHJldHVybnMgdGhlIHByZWZlcnJlZCBob3N0bmFtZS5cbiAqIEBwYXJhbSBwYXJzZWQgQW4gb2JqZWN0IGNvbnRhaW5pbmcgYSBob3N0bmFtZSBwcm9wZXJ0eS5cbiAqIEBwYXJhbSBoZWFkZXJzIEEgZGljdGlvbmFyeSB3aXRoIGhlYWRlcnMgY29udGFpbmluZyBhIGBob3N0YC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEhvc3RuYW1lKFxuICBwYXJzZWQ6IHsgaG9zdG5hbWU/OiBzdHJpbmcgfCBudWxsIH0sXG4gIGhlYWRlcnM/OiBPdXRnb2luZ0h0dHBIZWFkZXJzXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAvLyBHZXQgdGhlIGhvc3RuYW1lIGZyb20gdGhlIGhlYWRlcnMgaWYgaXQgZXhpc3RzLCBvdGhlcndpc2UgdXNlIHRoZSBwYXJzZWRcbiAgLy8gaG9zdG5hbWUuXG4gIGxldCBob3N0bmFtZTogc3RyaW5nXG4gIGlmIChoZWFkZXJzPy5ob3N0ICYmICFBcnJheS5pc0FycmF5KGhlYWRlcnMuaG9zdCkpIHtcbiAgICBob3N0bmFtZSA9IGhlYWRlcnMuaG9zdC50b1N0cmluZygpLnNwbGl0KCc6JywgMSlbMF1cbiAgfSBlbHNlIGlmIChwYXJzZWQuaG9zdG5hbWUpIHtcbiAgICBob3N0bmFtZSA9IHBhcnNlZC5ob3N0bmFtZVxuICB9IGVsc2UgcmV0dXJuXG5cbiAgcmV0dXJuIGhvc3RuYW1lLnRvTG93ZXJDYXNlKClcbn1cbiJdLCJuYW1lcyI6WyJnZXRIb3N0bmFtZSIsInBhcnNlZCIsImhlYWRlcnMiLCJob3N0bmFtZSIsImhvc3QiLCJBcnJheSIsImlzQXJyYXkiLCJ0b1N0cmluZyIsInNwbGl0IiwidG9Mb3dlckNhc2UiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/get-hostname.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/hash.js":
|
||
/*!***************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/hash.js ***!
|
||
\***************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("// http://www.cse.yorku.ca/~oz/hash.html\n// More specifically, 32-bit hash via djbxor\n// (ref: https://gist.github.com/eplawless/52813b1d8ad9af510d85?permalink_comment_id=3367765#gistcomment-3367765)\n// This is due to number type differences between rust for turbopack to js number types,\n// where rust does not have easy way to repreesnt js's 53-bit float number type for the matching\n// overflow behavior. This is more `correct` in terms of having canonical hash across different runtime / implementation\n// as can gaurantee determinstic output from 32bit hash.\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n djb2Hash: function() {\n return djb2Hash;\n },\n hexHash: function() {\n return hexHash;\n }\n});\nfunction djb2Hash(str) {\n let hash = 5381;\n for(let i = 0; i < str.length; i++){\n const char = str.charCodeAt(i);\n hash = (hash << 5) + hash + char & 0xffffffff;\n }\n return hash >>> 0;\n}\nfunction hexHash(str) {\n return djb2Hash(str).toString(36).slice(0, 5);\n} //# sourceMappingURL=hash.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvaGFzaC5qcyIsIm1hcHBpbmdzIjoiQUFBQSx3Q0FBd0M7QUFDeEMsNENBQTRDO0FBQzVDLGlIQUFpSDtBQUNqSCx3RkFBd0Y7QUFDeEYsZ0dBQWdHO0FBQ2hHLHdIQUF3SDtBQUN4SCx3REFBd0Q7Ozs7Ozs7Ozs7Ozs7SUFDeENBLFFBQVE7ZUFBUkE7O0lBU0FDLE9BQU87ZUFBUEE7OztBQVRULFNBQVNELFNBQVNFLEdBQVc7SUFDbEMsSUFBSUMsT0FBTztJQUNYLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJRixJQUFJRyxNQUFNLEVBQUVELElBQUs7UUFDbkMsTUFBTUUsT0FBT0osSUFBSUssVUFBVSxDQUFDSDtRQUM1QkQsT0FBU0EsQ0FBQUEsU0FBUSxJQUFLQSxPQUFPRyxPQUFRO0lBQ3ZDO0lBQ0EsT0FBT0gsU0FBUztBQUNsQjtBQUVPLFNBQVNGLFFBQVFDLEdBQVc7SUFDakMsT0FBT0YsU0FBU0UsS0FBS00sUUFBUSxDQUFDLElBQUlDLEtBQUssQ0FBQyxHQUFHO0FBQzdDIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL3NoYXJlZC9saWIvaGFzaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwOi8vd3d3LmNzZS55b3JrdS5jYS9+b3ovaGFzaC5odG1sXG4vLyBNb3JlIHNwZWNpZmljYWxseSwgMzItYml0IGhhc2ggdmlhIGRqYnhvclxuLy8gKHJlZjogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vZXBsYXdsZXNzLzUyODEzYjFkOGFkOWFmNTEwZDg1P3Blcm1hbGlua19jb21tZW50X2lkPTMzNjc3NjUjZ2lzdGNvbW1lbnQtMzM2Nzc2NSlcbi8vIFRoaXMgaXMgZHVlIHRvIG51bWJlciB0eXBlIGRpZmZlcmVuY2VzIGJldHdlZW4gcnVzdCBmb3IgdHVyYm9wYWNrIHRvIGpzIG51bWJlciB0eXBlcyxcbi8vIHdoZXJlIHJ1c3QgZG9lcyBub3QgaGF2ZSBlYXN5IHdheSB0byByZXByZWVzbnQganMncyA1My1iaXQgZmxvYXQgbnVtYmVyIHR5cGUgZm9yIHRoZSBtYXRjaGluZ1xuLy8gb3ZlcmZsb3cgYmVoYXZpb3IuIFRoaXMgaXMgbW9yZSBgY29ycmVjdGAgaW4gdGVybXMgb2YgaGF2aW5nIGNhbm9uaWNhbCBoYXNoIGFjcm9zcyBkaWZmZXJlbnQgcnVudGltZSAvIGltcGxlbWVudGF0aW9uXG4vLyBhcyBjYW4gZ2F1cmFudGVlIGRldGVybWluc3RpYyBvdXRwdXQgZnJvbSAzMmJpdCBoYXNoLlxuZXhwb3J0IGZ1bmN0aW9uIGRqYjJIYXNoKHN0cjogc3RyaW5nKSB7XG4gIGxldCBoYXNoID0gNTM4MVxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNoYXIgPSBzdHIuY2hhckNvZGVBdChpKVxuICAgIGhhc2ggPSAoKGhhc2ggPDwgNSkgKyBoYXNoICsgY2hhcikgJiAweGZmZmZmZmZmXG4gIH1cbiAgcmV0dXJuIGhhc2ggPj4+IDBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhleEhhc2goc3RyOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGRqYjJIYXNoKHN0cikudG9TdHJpbmcoMzYpLnNsaWNlKDAsIDUpXG59XG4iXSwibmFtZXMiOlsiZGpiMkhhc2giLCJoZXhIYXNoIiwic3RyIiwiaGFzaCIsImkiLCJsZW5ndGgiLCJjaGFyIiwiY2hhckNvZGVBdCIsInRvU3RyaW5nIiwic2xpY2UiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/hash.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/i18n/detect-domain-locale.js":
|
||
/*!************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/i18n/detect-domain-locale.js ***!
|
||
\************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"detectDomainLocale\", ({\n enumerable: true,\n get: function() {\n return detectDomainLocale;\n }\n}));\nfunction detectDomainLocale(domainItems, hostname, detectedLocale) {\n if (!domainItems) return;\n if (detectedLocale) {\n detectedLocale = detectedLocale.toLowerCase();\n }\n for (const item of domainItems){\n // remove port if present\n const domainHostname = item.domain?.split(':', 1)[0].toLowerCase();\n if (hostname === domainHostname || detectedLocale === item.defaultLocale.toLowerCase() || item.locales?.some((locale)=>locale.toLowerCase() === detectedLocale)) {\n return item;\n }\n }\n} //# sourceMappingURL=detect-domain-locale.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvaTE4bi9kZXRlY3QtZG9tYWluLWxvY2FsZS5qcyIsIm1hcHBpbmdzIjoiOzs7O3NEQUVnQkE7OztlQUFBQTs7O0FBQVQsU0FBU0EsbUJBQ2RDLFdBQXFDLEVBQ3JDQyxRQUFpQixFQUNqQkMsY0FBdUI7SUFFdkIsSUFBSSxDQUFDRixhQUFhO0lBRWxCLElBQUlFLGdCQUFnQjtRQUNsQkEsaUJBQWlCQSxlQUFlQyxXQUFXO0lBQzdDO0lBRUEsS0FBSyxNQUFNQyxRQUFRSixZQUFhO1FBQzlCLHlCQUF5QjtRQUN6QixNQUFNSyxpQkFBaUJELEtBQUtFLE1BQU0sRUFBRUMsTUFBTSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUNKO1FBQ3JELElBQ0VGLGFBQWFJLGtCQUNiSCxtQkFBbUJFLEtBQUtJLGFBQWEsQ0FBQ0wsV0FBVyxNQUNqREMsS0FBS0ssT0FBTyxFQUFFQyxLQUFLLENBQUNDLFNBQVdBLE9BQU9SLFdBQVcsT0FBT0QsaUJBQ3hEO1lBQ0EsT0FBT0U7UUFDVDtJQUNGO0FBQ0YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvc2hhcmVkL2xpYi9pMThuL2RldGVjdC1kb21haW4tbG9jYWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRG9tYWluTG9jYWxlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmVyL2NvbmZpZy1zaGFyZWQnXG5cbmV4cG9ydCBmdW5jdGlvbiBkZXRlY3REb21haW5Mb2NhbGUoXG4gIGRvbWFpbkl0ZW1zPzogcmVhZG9ubHkgRG9tYWluTG9jYWxlW10sXG4gIGhvc3RuYW1lPzogc3RyaW5nLFxuICBkZXRlY3RlZExvY2FsZT86IHN0cmluZ1xuKSB7XG4gIGlmICghZG9tYWluSXRlbXMpIHJldHVyblxuXG4gIGlmIChkZXRlY3RlZExvY2FsZSkge1xuICAgIGRldGVjdGVkTG9jYWxlID0gZGV0ZWN0ZWRMb2NhbGUudG9Mb3dlckNhc2UoKVxuICB9XG5cbiAgZm9yIChjb25zdCBpdGVtIG9mIGRvbWFpbkl0ZW1zKSB7XG4gICAgLy8gcmVtb3ZlIHBvcnQgaWYgcHJlc2VudFxuICAgIGNvbnN0IGRvbWFpbkhvc3RuYW1lID0gaXRlbS5kb21haW4/LnNwbGl0KCc6JywgMSlbMF0udG9Mb3dlckNhc2UoKVxuICAgIGlmIChcbiAgICAgIGhvc3RuYW1lID09PSBkb21haW5Ib3N0bmFtZSB8fFxuICAgICAgZGV0ZWN0ZWRMb2NhbGUgPT09IGl0ZW0uZGVmYXVsdExvY2FsZS50b0xvd2VyQ2FzZSgpIHx8XG4gICAgICBpdGVtLmxvY2FsZXM/LnNvbWUoKGxvY2FsZSkgPT4gbG9jYWxlLnRvTG93ZXJDYXNlKCkgPT09IGRldGVjdGVkTG9jYWxlKVxuICAgICkge1xuICAgICAgcmV0dXJuIGl0ZW1cbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJkZXRlY3REb21haW5Mb2NhbGUiLCJkb21haW5JdGVtcyIsImhvc3RuYW1lIiwiZGV0ZWN0ZWRMb2NhbGUiLCJ0b0xvd2VyQ2FzZSIsIml0ZW0iLCJkb21haW5Ib3N0bmFtZSIsImRvbWFpbiIsInNwbGl0IiwiZGVmYXVsdExvY2FsZSIsImxvY2FsZXMiLCJzb21lIiwibG9jYWxlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/i18n/detect-domain-locale.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js":
|
||
/*!*************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js ***!
|
||
\*************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"normalizeLocalePath\", ({\n enumerable: true,\n get: function() {\n return normalizeLocalePath;\n }\n}));\n/**\n * A cache of lowercased locales for each list of locales. This is stored as a\n * WeakMap so if the locales are garbage collected, the cache entry will be\n * removed as well.\n */ const cache = new WeakMap();\nfunction normalizeLocalePath(pathname, locales) {\n // If locales is undefined, return the pathname as is.\n if (!locales) return {\n pathname\n };\n // Get the cached lowercased locales or create a new cache entry.\n let lowercasedLocales = cache.get(locales);\n if (!lowercasedLocales) {\n lowercasedLocales = locales.map((locale)=>locale.toLowerCase());\n cache.set(locales, lowercasedLocales);\n }\n let detectedLocale;\n // The first segment will be empty, because it has a leading `/`. If\n // there is no further segment, there is no locale (or it's the default).\n const segments = pathname.split('/', 2);\n // If there's no second segment (ie, the pathname is just `/`), there's no\n // locale.\n if (!segments[1]) return {\n pathname\n };\n // The second segment will contain the locale part if any.\n const segment = segments[1].toLowerCase();\n // See if the segment matches one of the locales. If it doesn't, there is\n // no locale (or it's the default).\n const index = lowercasedLocales.indexOf(segment);\n if (index < 0) return {\n pathname\n };\n // Return the case-sensitive locale.\n detectedLocale = locales[index];\n // Remove the `/${locale}` part of the pathname.\n pathname = pathname.slice(detectedLocale.length + 1) || '/';\n return {\n pathname,\n detectedLocale\n };\n} //# sourceMappingURL=normalize-locale-path.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvaTE4bi9ub3JtYWxpemUtbG9jYWxlLXBhdGguanMiLCJtYXBwaW5ncyI6Ijs7Ozt1REFxQmdCQTs7O2VBQUFBOzs7QUFoQmhCOzs7O0NBSUMsR0FDRCxNQUFNQyxRQUFRLElBQUlDO0FBV1gsU0FBU0Ysb0JBQ2RHLFFBQWdCLEVBQ2hCQyxPQUEyQjtJQUUzQixzREFBc0Q7SUFDdEQsSUFBSSxDQUFDQSxTQUFTLE9BQU87UUFBRUQ7SUFBUztJQUVoQyxpRUFBaUU7SUFDakUsSUFBSUUsb0JBQW9CSixNQUFNSyxHQUFHLENBQUNGO0lBQ2xDLElBQUksQ0FBQ0MsbUJBQW1CO1FBQ3RCQSxvQkFBb0JELFFBQVFHLEdBQUcsQ0FBQyxDQUFDQyxTQUFXQSxPQUFPQyxXQUFXO1FBQzlEUixNQUFNUyxHQUFHLENBQUNOLFNBQVNDO0lBQ3JCO0lBRUEsSUFBSU07SUFFSixvRUFBb0U7SUFDcEUseUVBQXlFO0lBQ3pFLE1BQU1DLFdBQVdULFNBQVNVLEtBQUssQ0FBQyxLQUFLO0lBRXJDLDBFQUEwRTtJQUMxRSxVQUFVO0lBQ1YsSUFBSSxDQUFDRCxRQUFRLENBQUMsRUFBRSxFQUFFLE9BQU87UUFBRVQ7SUFBUztJQUVwQywwREFBMEQ7SUFDMUQsTUFBTVcsVUFBVUYsUUFBUSxDQUFDLEVBQUUsQ0FBQ0gsV0FBVztJQUV2Qyx5RUFBeUU7SUFDekUsbUNBQW1DO0lBQ25DLE1BQU1NLFFBQVFWLGtCQUFrQlcsT0FBTyxDQUFDRjtJQUN4QyxJQUFJQyxRQUFRLEdBQUcsT0FBTztRQUFFWjtJQUFTO0lBRWpDLG9DQUFvQztJQUNwQ1EsaUJBQWlCUCxPQUFPLENBQUNXLE1BQU07SUFFL0IsZ0RBQWdEO0lBQ2hEWixXQUFXQSxTQUFTYyxLQUFLLENBQUNOLGVBQWVPLE1BQU0sR0FBRyxNQUFNO0lBRXhELE9BQU87UUFBRWY7UUFBVVE7SUFBZTtBQUNwQyIsInNvdXJjZXMiOlsiL1VzZXJzL3NyYy9zaGFyZWQvbGliL2kxOG4vbm9ybWFsaXplLWxvY2FsZS1wYXRoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUGF0aExvY2FsZSB7XG4gIGRldGVjdGVkTG9jYWxlPzogc3RyaW5nXG4gIHBhdGhuYW1lOiBzdHJpbmdcbn1cblxuLyoqXG4gKiBBIGNhY2hlIG9mIGxvd2VyY2FzZWQgbG9jYWxlcyBmb3IgZWFjaCBsaXN0IG9mIGxvY2FsZXMuIFRoaXMgaXMgc3RvcmVkIGFzIGFcbiAqIFdlYWtNYXAgc28gaWYgdGhlIGxvY2FsZXMgYXJlIGdhcmJhZ2UgY29sbGVjdGVkLCB0aGUgY2FjaGUgZW50cnkgd2lsbCBiZVxuICogcmVtb3ZlZCBhcyB3ZWxsLlxuICovXG5jb25zdCBjYWNoZSA9IG5ldyBXZWFrTWFwPHJlYWRvbmx5IHN0cmluZ1tdLCByZWFkb25seSBzdHJpbmdbXT4oKVxuXG4vKipcbiAqIEZvciBhIHBhdGhuYW1lIHRoYXQgbWF5IGluY2x1ZGUgYSBsb2NhbGUgZnJvbSBhIGxpc3Qgb2YgbG9jYWxlcywgaXRcbiAqIHJlbW92ZXMgdGhlIGxvY2FsZSBmcm9tIHRoZSBwYXRobmFtZSByZXR1cm5pbmcgaXQgYWxvbmdzaWRlIHdpdGggdGhlXG4gKiBkZXRlY3RlZCBsb2NhbGUuXG4gKlxuICogQHBhcmFtIHBhdGhuYW1lIEEgcGF0aG5hbWUgdGhhdCBtYXkgaW5jbHVkZSBhIGxvY2FsZS5cbiAqIEBwYXJhbSBsb2NhbGVzIEEgbGlzdCBvZiBsb2NhbGVzLlxuICogQHJldHVybnMgVGhlIGRldGVjdGVkIGxvY2FsZSBhbmQgcGF0aG5hbWUgd2l0aG91dCBsb2NhbGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUxvY2FsZVBhdGgoXG4gIHBhdGhuYW1lOiBzdHJpbmcsXG4gIGxvY2FsZXM/OiByZWFkb25seSBzdHJpbmdbXVxuKTogUGF0aExvY2FsZSB7XG4gIC8vIElmIGxvY2FsZXMgaXMgdW5kZWZpbmVkLCByZXR1cm4gdGhlIHBhdGhuYW1lIGFzIGlzLlxuICBpZiAoIWxvY2FsZXMpIHJldHVybiB7IHBhdGhuYW1lIH1cblxuICAvLyBHZXQgdGhlIGNhY2hlZCBsb3dlcmNhc2VkIGxvY2FsZXMgb3IgY3JlYXRlIGEgbmV3IGNhY2hlIGVudHJ5LlxuICBsZXQgbG93ZXJjYXNlZExvY2FsZXMgPSBjYWNoZS5nZXQobG9jYWxlcylcbiAgaWYgKCFsb3dlcmNhc2VkTG9jYWxlcykge1xuICAgIGxvd2VyY2FzZWRMb2NhbGVzID0gbG9jYWxlcy5tYXAoKGxvY2FsZSkgPT4gbG9jYWxlLnRvTG93ZXJDYXNlKCkpXG4gICAgY2FjaGUuc2V0KGxvY2FsZXMsIGxvd2VyY2FzZWRMb2NhbGVzKVxuICB9XG5cbiAgbGV0IGRldGVjdGVkTG9jYWxlOiBzdHJpbmcgfCB1bmRlZmluZWRcblxuICAvLyBUaGUgZmlyc3Qgc2VnbWVudCB3aWxsIGJlIGVtcHR5LCBiZWNhdXNlIGl0IGhhcyBhIGxlYWRpbmcgYC9gLiBJZlxuICAvLyB0aGVyZSBpcyBubyBmdXJ0aGVyIHNlZ21lbnQsIHRoZXJlIGlzIG5vIGxvY2FsZSAob3IgaXQncyB0aGUgZGVmYXVsdCkuXG4gIGNvbnN0IHNlZ21lbnRzID0gcGF0aG5hbWUuc3BsaXQoJy8nLCAyKVxuXG4gIC8vIElmIHRoZXJlJ3Mgbm8gc2Vjb25kIHNlZ21lbnQgKGllLCB0aGUgcGF0aG5hbWUgaXMganVzdCBgL2ApLCB0aGVyZSdzIG5vXG4gIC8vIGxvY2FsZS5cbiAgaWYgKCFzZWdtZW50c1sxXSkgcmV0dXJuIHsgcGF0aG5hbWUgfVxuXG4gIC8vIFRoZSBzZWNvbmQgc2VnbWVudCB3aWxsIGNvbnRhaW4gdGhlIGxvY2FsZSBwYXJ0IGlmIGFueS5cbiAgY29uc3Qgc2VnbWVudCA9IHNlZ21lbnRzWzFdLnRvTG93ZXJDYXNlKClcblxuICAvLyBTZWUgaWYgdGhlIHNlZ21lbnQgbWF0Y2hlcyBvbmUgb2YgdGhlIGxvY2FsZXMuIElmIGl0IGRvZXNuJ3QsIHRoZXJlIGlzXG4gIC8vIG5vIGxvY2FsZSAob3IgaXQncyB0aGUgZGVmYXVsdCkuXG4gIGNvbnN0IGluZGV4ID0gbG93ZXJjYXNlZExvY2FsZXMuaW5kZXhPZihzZWdtZW50KVxuICBpZiAoaW5kZXggPCAwKSByZXR1cm4geyBwYXRobmFtZSB9XG5cbiAgLy8gUmV0dXJuIHRoZSBjYXNlLXNlbnNpdGl2ZSBsb2NhbGUuXG4gIGRldGVjdGVkTG9jYWxlID0gbG9jYWxlc1tpbmRleF1cblxuICAvLyBSZW1vdmUgdGhlIGAvJHtsb2NhbGV9YCBwYXJ0IG9mIHRoZSBwYXRobmFtZS5cbiAgcGF0aG5hbWUgPSBwYXRobmFtZS5zbGljZShkZXRlY3RlZExvY2FsZS5sZW5ndGggKyAxKSB8fCAnLydcblxuICByZXR1cm4geyBwYXRobmFtZSwgZGV0ZWN0ZWRMb2NhbGUgfVxufVxuIl0sIm5hbWVzIjpbIm5vcm1hbGl6ZUxvY2FsZVBhdGgiLCJjYWNoZSIsIldlYWtNYXAiLCJwYXRobmFtZSIsImxvY2FsZXMiLCJsb3dlcmNhc2VkTG9jYWxlcyIsImdldCIsIm1hcCIsImxvY2FsZSIsInRvTG93ZXJDYXNlIiwic2V0IiwiZGV0ZWN0ZWRMb2NhbGUiLCJzZWdtZW50cyIsInNwbGl0Iiwic2VnbWVudCIsImluZGV4IiwiaW5kZXhPZiIsInNsaWNlIiwibGVuZ3RoIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/invariant-error.js":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/invariant-error.js ***!
|
||
\**************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"InvariantError\", ({\n enumerable: true,\n get: function() {\n return InvariantError;\n }\n}));\nclass InvariantError extends Error {\n constructor(message, options){\n super(`Invariant: ${message.endsWith('.') ? message : message + '.'} This is a bug in Next.js.`, options);\n this.name = 'InvariantError';\n }\n} //# sourceMappingURL=invariant-error.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvaW52YXJpYW50LWVycm9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7a0RBQWFBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLHVCQUF1QkM7SUFDbENDLFlBQVlDLE9BQWUsRUFBRUMsT0FBc0IsQ0FBRTtRQUNuRCxLQUFLLENBQ0gsQ0FBQyxXQUFXLEVBQUVELFFBQVFFLFFBQVEsQ0FBQyxPQUFPRixVQUFVQSxVQUFVLElBQUksMEJBQTBCLENBQUMsRUFDekZDO1FBRUYsSUFBSSxDQUFDRSxJQUFJLEdBQUc7SUFDZDtBQUNGIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL3NoYXJlZC9saWIvaW52YXJpYW50LWVycm9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBJbnZhcmlhbnRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBvcHRpb25zPzogRXJyb3JPcHRpb25zKSB7XG4gICAgc3VwZXIoXG4gICAgICBgSW52YXJpYW50OiAke21lc3NhZ2UuZW5kc1dpdGgoJy4nKSA/IG1lc3NhZ2UgOiBtZXNzYWdlICsgJy4nfSBUaGlzIGlzIGEgYnVnIGluIE5leHQuanMuYCxcbiAgICAgIG9wdGlvbnNcbiAgICApXG4gICAgdGhpcy5uYW1lID0gJ0ludmFyaWFudEVycm9yJ1xuICB9XG59XG4iXSwibmFtZXMiOlsiSW52YXJpYW50RXJyb3IiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwibWVzc2FnZSIsIm9wdGlvbnMiLCJlbmRzV2l0aCIsIm5hbWUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/invariant-error.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/is-plain-object.js":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/is-plain-object.js ***!
|
||
\**************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getObjectClassLabel: function() {\n return getObjectClassLabel;\n },\n isPlainObject: function() {\n return isPlainObject;\n }\n});\nfunction getObjectClassLabel(value) {\n return Object.prototype.toString.call(value);\n}\nfunction isPlainObject(value) {\n if (getObjectClassLabel(value) !== '[object Object]') {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n /**\n * this used to be previously:\n *\n * `return prototype === null || prototype === Object.prototype`\n *\n * but Edge Runtime expose Object from vm, being that kind of type-checking wrongly fail.\n *\n * It was changed to the current implementation since it's resilient to serialization.\n */ return prototype === null || prototype.hasOwnProperty('isPrototypeOf');\n} //# sourceMappingURL=is-plain-object.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvaXMtcGxhaW4tb2JqZWN0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUFnQkEsbUJBQW1CO2VBQW5CQTs7SUFJQUMsYUFBYTtlQUFiQTs7O0FBSlQsU0FBU0Qsb0JBQW9CRSxLQUFVO0lBQzVDLE9BQU9DLE9BQU9DLFNBQVMsQ0FBQ0MsUUFBUSxDQUFDQyxJQUFJLENBQUNKO0FBQ3hDO0FBRU8sU0FBU0QsY0FBY0MsS0FBVTtJQUN0QyxJQUFJRixvQkFBb0JFLFdBQVcsbUJBQW1CO1FBQ3BELE9BQU87SUFDVDtJQUVBLE1BQU1FLFlBQVlELE9BQU9JLGNBQWMsQ0FBQ0w7SUFFeEM7Ozs7Ozs7O0dBUUMsR0FDRCxPQUFPRSxjQUFjLFFBQVFBLFVBQVVJLGNBQWMsQ0FBQztBQUN4RCIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9zaGFyZWQvbGliL2lzLXBsYWluLW9iamVjdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2V0T2JqZWN0Q2xhc3NMYWJlbCh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICBpZiAoZ2V0T2JqZWN0Q2xhc3NMYWJlbCh2YWx1ZSkgIT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBjb25zdCBwcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpXG5cbiAgLyoqXG4gICAqIHRoaXMgdXNlZCB0byBiZSBwcmV2aW91c2x5OlxuICAgKlxuICAgKiBgcmV0dXJuIHByb3RvdHlwZSA9PT0gbnVsbCB8fCBwcm90b3R5cGUgPT09IE9iamVjdC5wcm90b3R5cGVgXG4gICAqXG4gICAqIGJ1dCBFZGdlIFJ1bnRpbWUgZXhwb3NlIE9iamVjdCBmcm9tIHZtLCBiZWluZyB0aGF0IGtpbmQgb2YgdHlwZS1jaGVja2luZyB3cm9uZ2x5IGZhaWwuXG4gICAqXG4gICAqIEl0IHdhcyBjaGFuZ2VkIHRvIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHNpbmNlIGl0J3MgcmVzaWxpZW50IHRvIHNlcmlhbGl6YXRpb24uXG4gICAqL1xuICByZXR1cm4gcHJvdG90eXBlID09PSBudWxsIHx8IHByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgnaXNQcm90b3R5cGVPZicpXG59XG4iXSwibmFtZXMiOlsiZ2V0T2JqZWN0Q2xhc3NMYWJlbCIsImlzUGxhaW5PYmplY3QiLCJ2YWx1ZSIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwiY2FsbCIsImdldFByb3RvdHlwZU9mIiwiaGFzT3duUHJvcGVydHkiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/is-plain-object.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/is-thenable.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/is-thenable.js ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * Check to see if a value is Thenable.\n *\n * @param promise the maybe-thenable value\n * @returns true if the value is thenable\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"isThenable\", ({\n enumerable: true,\n get: function() {\n return isThenable;\n }\n}));\nfunction isThenable(promise) {\n return promise !== null && typeof promise === 'object' && 'then' in promise && typeof promise.then === 'function';\n} //# sourceMappingURL=is-thenable.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvaXMtdGhlbmFibGUuanMiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0NBS0M7Ozs7OENBQ2VBOzs7ZUFBQUE7OztBQUFULFNBQVNBLFdBQ2RDLE9BQXVCO0lBRXZCLE9BQ0VBLFlBQVksUUFDWixPQUFPQSxZQUFZLFlBQ25CLFVBQVVBLFdBQ1YsT0FBT0EsUUFBUUMsSUFBSSxLQUFLO0FBRTVCIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL3NoYXJlZC9saWIvaXMtdGhlbmFibGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDaGVjayB0byBzZWUgaWYgYSB2YWx1ZSBpcyBUaGVuYWJsZS5cbiAqXG4gKiBAcGFyYW0gcHJvbWlzZSB0aGUgbWF5YmUtdGhlbmFibGUgdmFsdWVcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIHZhbHVlIGlzIHRoZW5hYmxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1RoZW5hYmxlPFQgPSB1bmtub3duPihcbiAgcHJvbWlzZTogUHJvbWlzZTxUPiB8IFRcbik6IHByb21pc2UgaXMgUHJvbWlzZTxUPiB7XG4gIHJldHVybiAoXG4gICAgcHJvbWlzZSAhPT0gbnVsbCAmJlxuICAgIHR5cGVvZiBwcm9taXNlID09PSAnb2JqZWN0JyAmJlxuICAgICd0aGVuJyBpbiBwcm9taXNlICYmXG4gICAgdHlwZW9mIHByb21pc2UudGhlbiA9PT0gJ2Z1bmN0aW9uJ1xuICApXG59XG4iXSwibmFtZXMiOlsiaXNUaGVuYWJsZSIsInByb21pc2UiLCJ0aGVuIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/is-thenable.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/isomorphic/path.js":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/isomorphic/path.js ***!
|
||
\**************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * This module is for next.js server internal usage of path module.\n * It will use native path module for nodejs runtime.\n * It will use path-browserify polyfill for edge runtime.\n */ \nlet path;\nif (false) {} else {\n path = __webpack_require__(/*! path */ \"path\");\n}\nmodule.exports = path; //# sourceMappingURL=path.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvaXNvbW9ycGhpYy9wYXRoLmpzIiwibWFwcGluZ3MiOiJBQUFBOzs7O0NBSUM7QUFDRCxJQUFJQTtBQUVKLElBQUlDLEtBQW1DLEVBQUUsRUFFeEMsTUFBTTtJQUNMRCxPQUFPSSxtQkFBT0EsQ0FBQyxrQkFBTTtBQUN2QjtBQUVBQyxPQUFPQyxPQUFPLEdBQUdOIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL3NoYXJlZC9saWIvaXNvbW9ycGhpYy9wYXRoLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBtb2R1bGUgaXMgZm9yIG5leHQuanMgc2VydmVyIGludGVybmFsIHVzYWdlIG9mIHBhdGggbW9kdWxlLlxuICogSXQgd2lsbCB1c2UgbmF0aXZlIHBhdGggbW9kdWxlIGZvciBub2RlanMgcnVudGltZS5cbiAqIEl0IHdpbGwgdXNlIHBhdGgtYnJvd3NlcmlmeSBwb2x5ZmlsbCBmb3IgZWRnZSBydW50aW1lLlxuICovXG5sZXQgcGF0aFxuXG5pZiAocHJvY2Vzcy5lbnYuTkVYVF9SVU5USU1FID09PSAnZWRnZScpIHtcbiAgcGF0aCA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9wYXRoLWJyb3dzZXJpZnknKVxufSBlbHNlIHtcbiAgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGhcbiJdLCJuYW1lcyI6WyJwYXRoIiwicHJvY2VzcyIsImVudiIsIk5FWFRfUlVOVElNRSIsInJlcXVpcmUiLCJtb2R1bGUiLCJleHBvcnRzIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/isomorphic/path.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js ***!
|
||
\**************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("// This has to be a shared module which is shared between client component error boundary and dynamic component\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n BailoutToCSRError: function() {\n return BailoutToCSRError;\n },\n isBailoutToCSRError: function() {\n return isBailoutToCSRError;\n }\n});\nconst BAILOUT_TO_CSR = 'BAILOUT_TO_CLIENT_SIDE_RENDERING';\nclass BailoutToCSRError extends Error {\n constructor(reason){\n super(`Bail out to client-side rendering: ${reason}`), this.reason = reason, this.digest = BAILOUT_TO_CSR;\n }\n}\nfunction isBailoutToCSRError(err) {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false;\n }\n return err.digest === BAILOUT_TO_CSR;\n} //# sourceMappingURL=bailout-to-csr.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvbGF6eS1keW5hbWljL2JhaWxvdXQtdG8tY3NyLmpzIiwibWFwcGluZ3MiOiJBQUFBLCtHQUErRzs7Ozs7Ozs7Ozs7OztJQUlsR0EsaUJBQWlCO2VBQWpCQTs7SUFTR0MsbUJBQW1CO2VBQW5CQTs7O0FBWmhCLE1BQU1DLGlCQUFpQjtBQUdoQixNQUFNRiwwQkFBMEJHO0lBR3JDQyxZQUE0QkMsTUFBYyxDQUFFO1FBQzFDLEtBQUssQ0FBQyxDQUFDLG1DQUFtQyxFQUFFQSxRQUFRLFFBRDFCQSxNQUFBQSxHQUFBQSxRQUFBQSxJQUFBQSxDQUZaQyxNQUFBQSxHQUFTSjtJQUl6QjtBQUNGO0FBR08sU0FBU0Qsb0JBQW9CTSxHQUFZO0lBQzlDLElBQUksT0FBT0EsUUFBUSxZQUFZQSxRQUFRLFFBQVEsQ0FBRSxhQUFZQSxHQUFBQSxDQUFFLEVBQUk7UUFDakUsT0FBTztJQUNUO0lBRUEsT0FBT0EsSUFBSUQsTUFBTSxLQUFLSjtBQUN4QiIsInNvdXJjZXMiOlsiL1VzZXJzL3NyYy9zaGFyZWQvbGliL2xhenktZHluYW1pYy9iYWlsb3V0LXRvLWNzci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGhhcyB0byBiZSBhIHNoYXJlZCBtb2R1bGUgd2hpY2ggaXMgc2hhcmVkIGJldHdlZW4gY2xpZW50IGNvbXBvbmVudCBlcnJvciBib3VuZGFyeSBhbmQgZHluYW1pYyBjb21wb25lbnRcbmNvbnN0IEJBSUxPVVRfVE9fQ1NSID0gJ0JBSUxPVVRfVE9fQ0xJRU5UX1NJREVfUkVOREVSSU5HJ1xuXG4vKiogQW4gZXJyb3IgdGhhdCBzaG91bGQgYmUgdGhyb3duIHdoZW4gd2Ugd2FudCB0byBiYWlsIG91dCB0byBjbGllbnQtc2lkZSByZW5kZXJpbmcuICovXG5leHBvcnQgY2xhc3MgQmFpbG91dFRvQ1NSRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHB1YmxpYyByZWFkb25seSBkaWdlc3QgPSBCQUlMT1VUX1RPX0NTUlxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSByZWFzb246IHN0cmluZykge1xuICAgIHN1cGVyKGBCYWlsIG91dCB0byBjbGllbnQtc2lkZSByZW5kZXJpbmc6ICR7cmVhc29ufWApXG4gIH1cbn1cblxuLyoqIENoZWNrcyBpZiBhIHBhc3NlZCBhcmd1bWVudCBpcyBhbiBlcnJvciB0aGF0IGlzIHRocm93biBpZiB3ZSB3YW50IHRvIGJhaWwgb3V0IHRvIGNsaWVudC1zaWRlIHJlbmRlcmluZy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0JhaWxvdXRUb0NTUkVycm9yKGVycjogdW5rbm93bik6IGVyciBpcyBCYWlsb3V0VG9DU1JFcnJvciB7XG4gIGlmICh0eXBlb2YgZXJyICE9PSAnb2JqZWN0JyB8fCBlcnIgPT09IG51bGwgfHwgISgnZGlnZXN0JyBpbiBlcnIpKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gZXJyLmRpZ2VzdCA9PT0gQkFJTE9VVF9UT19DU1Jcbn1cbiJdLCJuYW1lcyI6WyJCYWlsb3V0VG9DU1JFcnJvciIsImlzQmFpbG91dFRvQ1NSRXJyb3IiLCJCQUlMT1VUX1RPX0NTUiIsIkVycm9yIiwiY29uc3RydWN0b3IiLCJyZWFzb24iLCJkaWdlc3QiLCJlcnIiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js":
|
||
/*!*****************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js ***!
|
||
\*****************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * For a given page path, this function ensures that there is a leading slash.\n * If there is not a leading slash, one is added, otherwise it is noop.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"ensureLeadingSlash\", ({\n enumerable: true,\n get: function() {\n return ensureLeadingSlash;\n }\n}));\nfunction ensureLeadingSlash(path) {\n return path.startsWith('/') ? path : `/${path}`;\n} //# sourceMappingURL=ensure-leading-slash.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcGFnZS1wYXRoL2Vuc3VyZS1sZWFkaW5nLXNsYXNoLmpzIiwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQzs7OztzREFDZUE7OztlQUFBQTs7O0FBQVQsU0FBU0EsbUJBQW1CQyxJQUFZO0lBQzdDLE9BQU9BLEtBQUtDLFVBQVUsQ0FBQyxPQUFPRCxPQUFPLENBQUMsQ0FBQyxFQUFFQSxNQUFNO0FBQ2pEIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL3NoYXJlZC9saWIvcGFnZS1wYXRoL2Vuc3VyZS1sZWFkaW5nLXNsYXNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRm9yIGEgZ2l2ZW4gcGFnZSBwYXRoLCB0aGlzIGZ1bmN0aW9uIGVuc3VyZXMgdGhhdCB0aGVyZSBpcyBhIGxlYWRpbmcgc2xhc2guXG4gKiBJZiB0aGVyZSBpcyBub3QgYSBsZWFkaW5nIHNsYXNoLCBvbmUgaXMgYWRkZWQsIG90aGVyd2lzZSBpdCBpcyBub29wLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlTGVhZGluZ1NsYXNoKHBhdGg6IHN0cmluZykge1xuICByZXR1cm4gcGF0aC5zdGFydHNXaXRoKCcvJykgPyBwYXRoIDogYC8ke3BhdGh9YFxufVxuIl0sIm5hbWVzIjpbImVuc3VyZUxlYWRpbmdTbGFzaCIsInBhdGgiLCJzdGFydHNXaXRoIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/promise-with-resolvers.js":
|
||
/*!*********************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/promise-with-resolvers.js ***!
|
||
\*********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createPromiseWithResolvers\", ({\n enumerable: true,\n get: function() {\n return createPromiseWithResolvers;\n }\n}));\nfunction createPromiseWithResolvers() {\n // Shim of Stage 4 Promise.withResolvers proposal\n let resolve;\n let reject;\n const promise = new Promise((res, rej)=>{\n resolve = res;\n reject = rej;\n });\n return {\n resolve: resolve,\n reject: reject,\n promise\n };\n} //# sourceMappingURL=promise-with-resolvers.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcHJvbWlzZS13aXRoLXJlc29sdmVycy5qcyIsIm1hcHBpbmdzIjoiOzs7OzhEQUFnQkE7OztlQUFBQTs7O0FBQVQsU0FBU0E7SUFDZCxpREFBaUQ7SUFDakQsSUFBSUM7SUFDSixJQUFJQztJQUNKLE1BQU1DLFVBQVUsSUFBSUMsUUFBVyxDQUFDQyxLQUFLQztRQUNuQ0wsVUFBVUk7UUFDVkgsU0FBU0k7SUFDWDtJQUNBLE9BQU87UUFBRUwsU0FBU0E7UUFBVUMsUUFBUUE7UUFBU0M7SUFBUTtBQUN2RCIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9zaGFyZWQvbGliL3Byb21pc2Utd2l0aC1yZXNvbHZlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+KCk6IFByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+IHtcbiAgLy8gU2hpbSBvZiBTdGFnZSA0IFByb21pc2Uud2l0aFJlc29sdmVycyBwcm9wb3NhbFxuICBsZXQgcmVzb2x2ZTogKHZhbHVlOiBUIHwgUHJvbWlzZUxpa2U8VD4pID0+IHZvaWRcbiAgbGV0IHJlamVjdDogKHJlYXNvbjogYW55KSA9PiB2b2lkXG4gIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZTxUPigocmVzLCByZWopID0+IHtcbiAgICByZXNvbHZlID0gcmVzXG4gICAgcmVqZWN0ID0gcmVqXG4gIH0pXG4gIHJldHVybiB7IHJlc29sdmU6IHJlc29sdmUhLCByZWplY3Q6IHJlamVjdCEsIHByb21pc2UgfVxufVxuIl0sIm5hbWVzIjpbImNyZWF0ZVByb21pc2VXaXRoUmVzb2x2ZXJzIiwicmVzb2x2ZSIsInJlamVjdCIsInByb21pc2UiLCJQcm9taXNlIiwicmVzIiwicmVqIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/promise-with-resolvers.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/router/routes/app.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/routes/app.js ***!
|
||
\****************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n isInterceptionAppRoute: function() {\n return isInterceptionAppRoute;\n },\n isNormalizedAppRoute: function() {\n return isNormalizedAppRoute;\n },\n parseAppRoute: function() {\n return parseAppRoute;\n },\n parseAppRouteSegment: function() {\n return parseAppRouteSegment;\n }\n});\nconst _invarianterror = __webpack_require__(/*! ../../invariant-error */ \"(rsc)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nconst _getsegmentparam = __webpack_require__(/*! ../utils/get-segment-param */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/get-segment-param.js\");\nconst _interceptionroutes = __webpack_require__(/*! ../utils/interception-routes */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/interception-routes.js\");\nfunction parseAppRouteSegment(segment) {\n if (segment === '') {\n return null;\n }\n // Check if the segment starts with an interception marker\n const interceptionMarker = _interceptionroutes.INTERCEPTION_ROUTE_MARKERS.find((m)=>segment.startsWith(m));\n const param = (0, _getsegmentparam.getSegmentParam)(segment);\n if (param) {\n return {\n type: 'dynamic',\n name: segment,\n param,\n interceptionMarker\n };\n } else if (segment.startsWith('(') && segment.endsWith(')')) {\n return {\n type: 'route-group',\n name: segment,\n interceptionMarker\n };\n } else if (segment.startsWith('@')) {\n return {\n type: 'parallel-route',\n name: segment,\n interceptionMarker\n };\n } else {\n return {\n type: 'static',\n name: segment,\n interceptionMarker\n };\n }\n}\nfunction isNormalizedAppRoute(route) {\n return route.normalized;\n}\nfunction isInterceptionAppRoute(route) {\n return route.interceptionMarker !== undefined && route.interceptingRoute !== undefined && route.interceptedRoute !== undefined;\n}\nfunction parseAppRoute(pathname, normalized) {\n const pathnameSegments = pathname.split('/').filter(Boolean);\n // Build segments array with static and dynamic segments\n const segments = [];\n // Parse if this is an interception route.\n let interceptionMarker;\n let interceptingRoute;\n let interceptedRoute;\n for (const segment of pathnameSegments){\n // Parse the segment into an AppSegment.\n const appSegment = parseAppRouteSegment(segment);\n if (!appSegment) {\n continue;\n }\n if (normalized && (appSegment.type === 'route-group' || appSegment.type === 'parallel-route')) {\n throw Object.defineProperty(new _invarianterror.InvariantError(`${pathname} is being parsed as a normalized route, but it has a route group or parallel route segment.`), \"__NEXT_ERROR_CODE\", {\n value: \"E923\",\n enumerable: false,\n configurable: true\n });\n }\n segments.push(appSegment);\n if (appSegment.interceptionMarker) {\n const parts = pathname.split(appSegment.interceptionMarker);\n if (parts.length !== 2) {\n throw Object.defineProperty(new Error(`Invalid interception route: ${pathname}`), \"__NEXT_ERROR_CODE\", {\n value: \"E924\",\n enumerable: false,\n configurable: true\n });\n }\n interceptingRoute = normalized ? parseAppRoute(parts[0], true) : parseAppRoute(parts[0], false);\n interceptedRoute = normalized ? parseAppRoute(parts[1], true) : parseAppRoute(parts[1], false);\n interceptionMarker = appSegment.interceptionMarker;\n }\n }\n const dynamicSegments = segments.filter((segment)=>segment.type === 'dynamic');\n return {\n normalized,\n pathname,\n segments,\n dynamicSegments,\n interceptionMarker,\n interceptingRoute,\n interceptedRoute\n };\n} //# sourceMappingURL=app.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3JvdXRlcy9hcHAuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBd0pnQkEsc0JBQXNCO2VBQXRCQTs7SUFqQ0FDLG9CQUFvQjtlQUFwQkE7O0lBZ0RBQyxhQUFhO2VBQWJBOztJQXpHQUMsb0JBQW9CO2VBQXBCQTs7OzRDQTlEZTs2Q0FDb0I7Z0RBSTVDO0FBeURBLFNBQVNBLHFCQUFxQkMsT0FBZTtJQUNsRCxJQUFJQSxZQUFZLElBQUk7UUFDbEIsT0FBTztJQUNUO0lBRUEsMERBQTBEO0lBQzFELE1BQU1DLHFCQUFxQkMsb0JBQUFBLDBCQUEwQixDQUFDQyxJQUFJLENBQUMsQ0FBQ0MsSUFDMURKLFFBQVFLLFVBQVUsQ0FBQ0Q7SUFHckIsTUFBTUUsUUFBUUMsQ0FBQUEsR0FBQUEsaUJBQUFBLGVBQUFBLEVBQWdCUDtJQUM5QixJQUFJTSxPQUFPO1FBQ1QsT0FBTztZQUNMRSxNQUFNO1lBQ05DLE1BQU1UO1lBQ05NO1lBQ0FMO1FBQ0Y7SUFDRixPQUFPLElBQUlELFFBQVFLLFVBQVUsQ0FBQyxRQUFRTCxRQUFRVSxRQUFRLENBQUMsTUFBTTtRQUMzRCxPQUFPO1lBQ0xGLE1BQU07WUFDTkMsTUFBTVQ7WUFDTkM7UUFDRjtJQUNGLE9BQU8sSUFBSUQsUUFBUUssVUFBVSxDQUFDLE1BQU07UUFDbEMsT0FBTztZQUNMRyxNQUFNO1lBQ05DLE1BQU1UO1lBQ05DO1FBQ0Y7SUFDRixPQUFPO1FBQ0wsT0FBTztZQUNMTyxNQUFNO1lBQ05DLE1BQU1UO1lBQ05DO1FBQ0Y7SUFDRjtBQUNGO0FBb0JPLFNBQVNKLHFCQUNkYyxLQUFzQztJQUV0QyxPQUFPQSxNQUFNQyxVQUFVO0FBQ3pCO0FBNkJPLFNBQVNoQix1QkFDZGUsS0FBZTtJQUVmLE9BQ0VBLE1BQU1WLGtCQUFrQixLQUFLWSxhQUM3QkYsTUFBTUcsaUJBQWlCLEtBQUtELGFBQzVCRixNQUFNSSxnQkFBZ0IsS0FBS0Y7QUFFL0I7QUFPTyxTQUFTZixjQUNka0IsUUFBZ0IsRUFDaEJKLFVBQW1CO0lBRW5CLE1BQU1LLG1CQUFtQkQsU0FBU0UsS0FBSyxDQUFDLEtBQUtDLE1BQU0sQ0FBQ0M7SUFFcEQsd0RBQXdEO0lBQ3hELE1BQU1DLFdBQThCLEVBQUU7SUFFdEMsMENBQTBDO0lBQzFDLElBQUlwQjtJQUNKLElBQUlhO0lBQ0osSUFBSUM7SUFFSixLQUFLLE1BQU1mLFdBQVdpQixpQkFBa0I7UUFDdEMsd0NBQXdDO1FBQ3hDLE1BQU1LLGFBQWF2QixxQkFBcUJDO1FBQ3hDLElBQUksQ0FBQ3NCLFlBQVk7WUFDZjtRQUNGO1FBRUEsSUFDRVYsY0FDQ1UsQ0FBQUEsV0FBV2QsSUFBSSxLQUFLLGlCQUNuQmMsV0FBV2QsSUFBSSxLQUFLLGlCQUFlLEVBQ3JDO1lBQ0EsTUFBTSxxQkFFTCxDQUZLLElBQUllLGdCQUFBQSxjQUFjLENBQ3RCLEdBQUdQLFNBQVMsMkZBQTJGLENBQUMsR0FEcEc7dUJBQUE7NEJBQUE7OEJBQUE7WUFFTjtRQUNGO1FBRUFLLFNBQVNHLElBQUksQ0FBQ0Y7UUFFZCxJQUFJQSxXQUFXckIsa0JBQWtCLEVBQUU7WUFDakMsTUFBTXdCLFFBQVFULFNBQVNFLEtBQUssQ0FBQ0ksV0FBV3JCLGtCQUFrQjtZQUMxRCxJQUFJd0IsTUFBTUMsTUFBTSxLQUFLLEdBQUc7Z0JBQ3RCLE1BQU0scUJBQW9ELENBQXBELElBQUlDLE1BQU0sQ0FBQyw0QkFBNEIsRUFBRVgsVUFBVSxHQUFuRDsyQkFBQTtnQ0FBQTtrQ0FBQTtnQkFBbUQ7WUFDM0Q7WUFFQUYsb0JBQW9CRixhQUNoQmQsY0FBYzJCLEtBQUssQ0FBQyxFQUFFLEVBQUUsUUFDeEIzQixjQUFjMkIsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUM1QlYsbUJBQW1CSCxhQUNmZCxjQUFjMkIsS0FBSyxDQUFDLEVBQUUsRUFBRSxRQUN4QjNCLGNBQWMyQixLQUFLLENBQUMsRUFBRSxFQUFFO1lBQzVCeEIscUJBQXFCcUIsV0FBV3JCLGtCQUFrQjtRQUNwRDtJQUNGO0lBRUEsTUFBTTJCLGtCQUFrQlAsU0FBU0YsTUFBTSxDQUNyQyxDQUFDbkIsVUFBWUEsUUFBUVEsSUFBSSxLQUFLO0lBR2hDLE9BQU87UUFDTEk7UUFDQUk7UUFDQUs7UUFDQU87UUFDQTNCO1FBQ0FhO1FBQ0FDO0lBQ0Y7QUFDRiIsInNvdXJjZXMiOlsiL3NyYy9zaGFyZWQvbGliL3JvdXRlci9yb3V0ZXMvYXBwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludmFyaWFudEVycm9yIH0gZnJvbSAnLi4vLi4vaW52YXJpYW50LWVycm9yJ1xuaW1wb3J0IHsgZ2V0U2VnbWVudFBhcmFtLCB0eXBlIFNlZ21lbnRQYXJhbSB9IGZyb20gJy4uL3V0aWxzL2dldC1zZWdtZW50LXBhcmFtJ1xuaW1wb3J0IHtcbiAgSU5URVJDRVBUSU9OX1JPVVRFX01BUktFUlMsXG4gIHR5cGUgSW50ZXJjZXB0aW9uTWFya2VyLFxufSBmcm9tICcuLi91dGlscy9pbnRlcmNlcHRpb24tcm91dGVzJ1xuXG5leHBvcnQgdHlwZSBSb3V0ZUdyb3VwQXBwUm91dGVTZWdtZW50ID0ge1xuICB0eXBlOiAncm91dGUtZ3JvdXAnXG4gIG5hbWU6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBJZiBwcmVzZW50LCB0aGlzIHNlZ21lbnQgaGFzIGFuIGludGVyY2VwdGlvbiBtYXJrZXIgcHJlZml4aW5nIGl0LlxuICAgKi9cbiAgaW50ZXJjZXB0aW9uTWFya2VyPzogSW50ZXJjZXB0aW9uTWFya2VyXG59XG5cbmV4cG9ydCB0eXBlIFBhcmFsbGVsUm91dGVBcHBSb3V0ZVNlZ21lbnQgPSB7XG4gIHR5cGU6ICdwYXJhbGxlbC1yb3V0ZSdcbiAgbmFtZTogc3RyaW5nXG5cbiAgLyoqXG4gICAqIElmIHByZXNlbnQsIHRoaXMgc2VnbWVudCBoYXMgYW4gaW50ZXJjZXB0aW9uIG1hcmtlciBwcmVmaXhpbmcgaXQuXG4gICAqL1xuICBpbnRlcmNlcHRpb25NYXJrZXI/OiBJbnRlcmNlcHRpb25NYXJrZXJcbn1cblxuZXhwb3J0IHR5cGUgU3RhdGljQXBwUm91dGVTZWdtZW50ID0ge1xuICB0eXBlOiAnc3RhdGljJ1xuICBuYW1lOiBzdHJpbmdcblxuICAvKipcbiAgICogSWYgcHJlc2VudCwgdGhpcyBzZWdtZW50IGhhcyBhbiBpbnRlcmNlcHRpb24gbWFya2VyIHByZWZpeGluZyBpdC5cbiAgICovXG4gIGludGVyY2VwdGlvbk1hcmtlcj86IEludGVyY2VwdGlvbk1hcmtlclxufVxuXG5leHBvcnQgdHlwZSBEeW5hbWljQXBwUm91dGVTZWdtZW50ID0ge1xuICB0eXBlOiAnZHluYW1pYydcbiAgbmFtZTogc3RyaW5nXG4gIHBhcmFtOiBTZWdtZW50UGFyYW1cblxuICAvKipcbiAgICogSWYgcHJlc2VudCwgdGhpcyBzZWdtZW50IGhhcyBhbiBpbnRlcmNlcHRpb24gbWFya2VyIHByZWZpeGluZyBpdC5cbiAgICovXG4gIGludGVyY2VwdGlvbk1hcmtlcj86IEludGVyY2VwdGlvbk1hcmtlclxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBzaW5nbGUgc2VnbWVudCBpbiBhIHJvdXRlIHBhdGguXG4gKiBDYW4gYmUgZWl0aGVyIHN0YXRpYyAoZS5nLiwgXCJibG9nXCIpIG9yIGR5bmFtaWMgKGUuZy4sIFwiW3NsdWddXCIpLlxuICovXG5leHBvcnQgdHlwZSBBcHBSb3V0ZVNlZ21lbnQgPVxuICB8IFN0YXRpY0FwcFJvdXRlU2VnbWVudFxuICB8IER5bmFtaWNBcHBSb3V0ZVNlZ21lbnRcbiAgfCBSb3V0ZUdyb3VwQXBwUm91dGVTZWdtZW50XG4gIHwgUGFyYWxsZWxSb3V0ZUFwcFJvdXRlU2VnbWVudFxuXG5leHBvcnQgdHlwZSBOb3JtYWxpemVkQXBwUm91dGVTZWdtZW50ID1cbiAgfCBTdGF0aWNBcHBSb3V0ZVNlZ21lbnRcbiAgfCBEeW5hbWljQXBwUm91dGVTZWdtZW50XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFwcFJvdXRlU2VnbWVudChzZWdtZW50OiBzdHJpbmcpOiBBcHBSb3V0ZVNlZ21lbnQgfCBudWxsIHtcbiAgaWYgKHNlZ21lbnQgPT09ICcnKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBzZWdtZW50IHN0YXJ0cyB3aXRoIGFuIGludGVyY2VwdGlvbiBtYXJrZXJcbiAgY29uc3QgaW50ZXJjZXB0aW9uTWFya2VyID0gSU5URVJDRVBUSU9OX1JPVVRFX01BUktFUlMuZmluZCgobSkgPT5cbiAgICBzZWdtZW50LnN0YXJ0c1dpdGgobSlcbiAgKVxuXG4gIGNvbnN0IHBhcmFtID0gZ2V0U2VnbWVudFBhcmFtKHNlZ21lbnQpXG4gIGlmIChwYXJhbSkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnZHluYW1pYycsXG4gICAgICBuYW1lOiBzZWdtZW50LFxuICAgICAgcGFyYW0sXG4gICAgICBpbnRlcmNlcHRpb25NYXJrZXIsXG4gICAgfVxuICB9IGVsc2UgaWYgKHNlZ21lbnQuc3RhcnRzV2l0aCgnKCcpICYmIHNlZ21lbnQuZW5kc1dpdGgoJyknKSkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAncm91dGUtZ3JvdXAnLFxuICAgICAgbmFtZTogc2VnbWVudCxcbiAgICAgIGludGVyY2VwdGlvbk1hcmtlcixcbiAgICB9XG4gIH0gZWxzZSBpZiAoc2VnbWVudC5zdGFydHNXaXRoKCdAJykpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ3BhcmFsbGVsLXJvdXRlJyxcbiAgICAgIG5hbWU6IHNlZ21lbnQsXG4gICAgICBpbnRlcmNlcHRpb25NYXJrZXIsXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnc3RhdGljJyxcbiAgICAgIG5hbWU6IHNlZ21lbnQsXG4gICAgICBpbnRlcmNlcHRpb25NYXJrZXIsXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB0eXBlIEFwcFJvdXRlID0ge1xuICBub3JtYWxpemVkOiBib29sZWFuXG4gIHBhdGhuYW1lOiBzdHJpbmdcbiAgc2VnbWVudHM6IEFwcFJvdXRlU2VnbWVudFtdXG4gIGR5bmFtaWNTZWdtZW50czogRHluYW1pY0FwcFJvdXRlU2VnbWVudFtdXG4gIGludGVyY2VwdGlvbk1hcmtlcjogSW50ZXJjZXB0aW9uTWFya2VyIHwgdW5kZWZpbmVkXG4gIGludGVyY2VwdGluZ1JvdXRlOiBBcHBSb3V0ZSB8IHVuZGVmaW5lZFxuICBpbnRlcmNlcHRlZFJvdXRlOiBBcHBSb3V0ZSB8IHVuZGVmaW5lZFxufVxuXG5leHBvcnQgdHlwZSBOb3JtYWxpemVkQXBwUm91dGUgPSBPbWl0PEFwcFJvdXRlLCAnbm9ybWFsaXplZCcgfCAnc2VnbWVudHMnPiAmIHtcbiAgbm9ybWFsaXplZDogdHJ1ZVxuICBzZWdtZW50czogTm9ybWFsaXplZEFwcFJvdXRlU2VnbWVudFtdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vcm1hbGl6ZWRBcHBSb3V0ZShcbiAgcm91dGU6IEludGVyY2VwdGlvbkFwcFJvdXRlXG4pOiByb3V0ZSBpcyBOb3JtYWxpemVkSW50ZXJjZXB0aW9uQXBwUm91dGVcbmV4cG9ydCBmdW5jdGlvbiBpc05vcm1hbGl6ZWRBcHBSb3V0ZShcbiAgcm91dGU6IEFwcFJvdXRlIHwgSW50ZXJjZXB0aW9uQXBwUm91dGVcbik6IHJvdXRlIGlzIE5vcm1hbGl6ZWRBcHBSb3V0ZSB7XG4gIHJldHVybiByb3V0ZS5ub3JtYWxpemVkXG59XG5cbmV4cG9ydCB0eXBlIEludGVyY2VwdGlvbkFwcFJvdXRlID0gT21pdDxcbiAgQXBwUm91dGUsXG4gICdpbnRlcmNlcHRpb25NYXJrZXInIHwgJ2ludGVyY2VwdGluZ1JvdXRlJyB8ICdpbnRlcmNlcHRlZFJvdXRlJ1xuPiAmIHtcbiAgaW50ZXJjZXB0aW9uTWFya2VyOiBJbnRlcmNlcHRpb25NYXJrZXJcbiAgaW50ZXJjZXB0aW5nUm91dGU6IEFwcFJvdXRlXG4gIGludGVyY2VwdGVkUm91dGU6IEFwcFJvdXRlXG59XG5cbmV4cG9ydCB0eXBlIE5vcm1hbGl6ZWRJbnRlcmNlcHRpb25BcHBSb3V0ZSA9IE9taXQ8XG4gIEludGVyY2VwdGlvbkFwcFJvdXRlLFxuICB8ICdub3JtYWxpemVkJ1xuICB8ICdzZWdtZW50cydcbiAgfCAnaW50ZXJjZXB0aW9uTWFya2VyJ1xuICB8ICdpbnRlcmNlcHRpbmdSb3V0ZSdcbiAgfCAnaW50ZXJjZXB0ZWRSb3V0ZSdcbj4gJiB7XG4gIG5vcm1hbGl6ZWQ6IHRydWVcbiAgc2VnbWVudHM6IE5vcm1hbGl6ZWRBcHBSb3V0ZVNlZ21lbnRbXVxuICBpbnRlcmNlcHRpb25NYXJrZXI6IEludGVyY2VwdGlvbk1hcmtlclxuICBpbnRlcmNlcHRpbmdSb3V0ZTogTm9ybWFsaXplZEFwcFJvdXRlXG4gIGludGVyY2VwdGVkUm91dGU6IE5vcm1hbGl6ZWRBcHBSb3V0ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNJbnRlcmNlcHRpb25BcHBSb3V0ZShcbiAgcm91dGU6IE5vcm1hbGl6ZWRBcHBSb3V0ZVxuKTogcm91dGUgaXMgTm9ybWFsaXplZEludGVyY2VwdGlvbkFwcFJvdXRlXG5leHBvcnQgZnVuY3Rpb24gaXNJbnRlcmNlcHRpb25BcHBSb3V0ZShcbiAgcm91dGU6IEFwcFJvdXRlXG4pOiByb3V0ZSBpcyBJbnRlcmNlcHRpb25BcHBSb3V0ZSB7XG4gIHJldHVybiAoXG4gICAgcm91dGUuaW50ZXJjZXB0aW9uTWFya2VyICE9PSB1bmRlZmluZWQgJiZcbiAgICByb3V0ZS5pbnRlcmNlcHRpbmdSb3V0ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgcm91dGUuaW50ZXJjZXB0ZWRSb3V0ZSAhPT0gdW5kZWZpbmVkXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQXBwUm91dGUoXG4gIHBhdGhuYW1lOiBzdHJpbmcsXG4gIG5vcm1hbGl6ZWQ6IHRydWVcbik6IE5vcm1hbGl6ZWRBcHBSb3V0ZVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQXBwUm91dGUocGF0aG5hbWU6IHN0cmluZywgbm9ybWFsaXplZDogZmFsc2UpOiBBcHBSb3V0ZVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQXBwUm91dGUoXG4gIHBhdGhuYW1lOiBzdHJpbmcsXG4gIG5vcm1hbGl6ZWQ6IGJvb2xlYW5cbik6IEFwcFJvdXRlIHwgTm9ybWFsaXplZEFwcFJvdXRlIHtcbiAgY29uc3QgcGF0aG5hbWVTZWdtZW50cyA9IHBhdGhuYW1lLnNwbGl0KCcvJykuZmlsdGVyKEJvb2xlYW4pXG5cbiAgLy8gQnVpbGQgc2VnbWVudHMgYXJyYXkgd2l0aCBzdGF0aWMgYW5kIGR5bmFtaWMgc2VnbWVudHNcbiAgY29uc3Qgc2VnbWVudHM6IEFwcFJvdXRlU2VnbWVudFtdID0gW11cblxuICAvLyBQYXJzZSBpZiB0aGlzIGlzIGFuIGludGVyY2VwdGlvbiByb3V0ZS5cbiAgbGV0IGludGVyY2VwdGlvbk1hcmtlcjogSW50ZXJjZXB0aW9uTWFya2VyIHwgdW5kZWZpbmVkXG4gIGxldCBpbnRlcmNlcHRpbmdSb3V0ZTogQXBwUm91dGUgfCBOb3JtYWxpemVkQXBwUm91dGUgfCB1bmRlZmluZWRcbiAgbGV0IGludGVyY2VwdGVkUm91dGU6IEFwcFJvdXRlIHwgTm9ybWFsaXplZEFwcFJvdXRlIHwgdW5kZWZpbmVkXG5cbiAgZm9yIChjb25zdCBzZWdtZW50IG9mIHBhdGhuYW1lU2VnbWVudHMpIHtcbiAgICAvLyBQYXJzZSB0aGUgc2VnbWVudCBpbnRvIGFuIEFwcFNlZ21lbnQuXG4gICAgY29uc3QgYXBwU2VnbWVudCA9IHBhcnNlQXBwUm91dGVTZWdtZW50KHNlZ21lbnQpXG4gICAgaWYgKCFhcHBTZWdtZW50KSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIG5vcm1hbGl6ZWQgJiZcbiAgICAgIChhcHBTZWdtZW50LnR5cGUgPT09ICdyb3V0ZS1ncm91cCcgfHxcbiAgICAgICAgYXBwU2VnbWVudC50eXBlID09PSAncGFyYWxsZWwtcm91dGUnKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEludmFyaWFudEVycm9yKFxuICAgICAgICBgJHtwYXRobmFtZX0gaXMgYmVpbmcgcGFyc2VkIGFzIGEgbm9ybWFsaXplZCByb3V0ZSwgYnV0IGl0IGhhcyBhIHJvdXRlIGdyb3VwIG9yIHBhcmFsbGVsIHJvdXRlIHNlZ21lbnQuYFxuICAgICAgKVxuICAgIH1cblxuICAgIHNlZ21lbnRzLnB1c2goYXBwU2VnbWVudClcblxuICAgIGlmIChhcHBTZWdtZW50LmludGVyY2VwdGlvbk1hcmtlcikge1xuICAgICAgY29uc3QgcGFydHMgPSBwYXRobmFtZS5zcGxpdChhcHBTZWdtZW50LmludGVyY2VwdGlvbk1hcmtlcilcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGludGVyY2VwdGlvbiByb3V0ZTogJHtwYXRobmFtZX1gKVxuICAgICAgfVxuXG4gICAgICBpbnRlcmNlcHRpbmdSb3V0ZSA9IG5vcm1hbGl6ZWRcbiAgICAgICAgPyBwYXJzZUFwcFJvdXRlKHBhcnRzWzBdLCB0cnVlKVxuICAgICAgICA6IHBhcnNlQXBwUm91dGUocGFydHNbMF0sIGZhbHNlKVxuICAgICAgaW50ZXJjZXB0ZWRSb3V0ZSA9IG5vcm1hbGl6ZWRcbiAgICAgICAgPyBwYXJzZUFwcFJvdXRlKHBhcnRzWzFdLCB0cnVlKVxuICAgICAgICA6IHBhcnNlQXBwUm91dGUocGFydHNbMV0sIGZhbHNlKVxuICAgICAgaW50ZXJjZXB0aW9uTWFya2VyID0gYXBwU2VnbWVudC5pbnRlcmNlcHRpb25NYXJrZXJcbiAgICB9XG4gIH1cblxuICBjb25zdCBkeW5hbWljU2VnbWVudHMgPSBzZWdtZW50cy5maWx0ZXIoXG4gICAgKHNlZ21lbnQpID0+IHNlZ21lbnQudHlwZSA9PT0gJ2R5bmFtaWMnXG4gIClcblxuICByZXR1cm4ge1xuICAgIG5vcm1hbGl6ZWQsXG4gICAgcGF0aG5hbWUsXG4gICAgc2VnbWVudHMsXG4gICAgZHluYW1pY1NlZ21lbnRzLFxuICAgIGludGVyY2VwdGlvbk1hcmtlcixcbiAgICBpbnRlcmNlcHRpbmdSb3V0ZSxcbiAgICBpbnRlcmNlcHRlZFJvdXRlLFxuICB9XG59XG4iXSwibmFtZXMiOlsiaXNJbnRlcmNlcHRpb25BcHBSb3V0ZSIsImlzTm9ybWFsaXplZEFwcFJvdXRlIiwicGFyc2VBcHBSb3V0ZSIsInBhcnNlQXBwUm91dGVTZWdtZW50Iiwic2VnbWVudCIsImludGVyY2VwdGlvbk1hcmtlciIsIklOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTIiwiZmluZCIsIm0iLCJzdGFydHNXaXRoIiwicGFyYW0iLCJnZXRTZWdtZW50UGFyYW0iLCJ0eXBlIiwibmFtZSIsImVuZHNXaXRoIiwicm91dGUiLCJub3JtYWxpemVkIiwidW5kZWZpbmVkIiwiaW50ZXJjZXB0aW5nUm91dGUiLCJpbnRlcmNlcHRlZFJvdXRlIiwicGF0aG5hbWUiLCJwYXRobmFtZVNlZ21lbnRzIiwic3BsaXQiLCJmaWx0ZXIiLCJCb29sZWFuIiwic2VnbWVudHMiLCJhcHBTZWdtZW50IiwiSW52YXJpYW50RXJyb3IiLCJwdXNoIiwicGFydHMiLCJsZW5ndGgiLCJFcnJvciIsImR5bmFtaWNTZWdtZW50cyJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/routes/app.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/add-locale.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/add-locale.js ***!
|
||
\**********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"addLocale\", ({\n enumerable: true,\n get: function() {\n return addLocale;\n }\n}));\nconst _addpathprefix = __webpack_require__(/*! ./add-path-prefix */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js\");\nconst _pathhasprefix = __webpack_require__(/*! ./path-has-prefix */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js\");\nfunction addLocale(path, locale, defaultLocale, ignorePrefix) {\n // If no locale was given or the locale is the default locale, we don't need\n // to prefix the path.\n if (!locale || locale === defaultLocale) return path;\n const lower = path.toLowerCase();\n // If the path is an API path or the path already has the locale prefix, we\n // don't need to prefix the path.\n if (!ignorePrefix) {\n if ((0, _pathhasprefix.pathHasPrefix)(lower, '/api')) return path;\n if ((0, _pathhasprefix.pathHasPrefix)(lower, `/${locale.toLowerCase()}`)) return path;\n }\n // Add the locale prefix to the path.\n return (0, _addpathprefix.addPathPrefix)(path, `/${locale}`);\n} //# sourceMappingURL=add-locale.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2FkZC1sb2NhbGUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs2Q0FRZ0JBOzs7ZUFBQUE7OzsyQ0FSYzsyQ0FDQTtBQU92QixTQUFTQSxVQUNkQyxJQUFZLEVBQ1pDLE1BQXVCLEVBQ3ZCQyxhQUFzQixFQUN0QkMsWUFBc0I7SUFFdEIsNEVBQTRFO0lBQzVFLHNCQUFzQjtJQUN0QixJQUFJLENBQUNGLFVBQVVBLFdBQVdDLGVBQWUsT0FBT0Y7SUFFaEQsTUFBTUksUUFBUUosS0FBS0ssV0FBVztJQUU5QiwyRUFBMkU7SUFDM0UsaUNBQWlDO0lBQ2pDLElBQUksQ0FBQ0YsY0FBYztRQUNqQixJQUFJRyxDQUFBQSxHQUFBQSxlQUFBQSxhQUFBQSxFQUFjRixPQUFPLFNBQVMsT0FBT0o7UUFDekMsSUFBSU0sQ0FBQUEsR0FBQUEsZUFBQUEsYUFBQUEsRUFBY0YsT0FBTyxDQUFDLENBQUMsRUFBRUgsT0FBT0ksV0FBVyxJQUFJLEdBQUcsT0FBT0w7SUFDL0Q7SUFFQSxxQ0FBcUM7SUFDckMsT0FBT08sQ0FBQUEsR0FBQUEsZUFBQUEsYUFBQUEsRUFBY1AsTUFBTSxDQUFDLENBQUMsRUFBRUMsUUFBUTtBQUN6QyIsInNvdXJjZXMiOlsiL3NyYy9zaGFyZWQvbGliL3JvdXRlci91dGlscy9hZGQtbG9jYWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFkZFBhdGhQcmVmaXggfSBmcm9tICcuL2FkZC1wYXRoLXByZWZpeCdcbmltcG9ydCB7IHBhdGhIYXNQcmVmaXggfSBmcm9tICcuL3BhdGgtaGFzLXByZWZpeCdcblxuLyoqXG4gKiBGb3IgYSBnaXZlbiBwYXRoIGFuZCBhIGxvY2FsZSwgaWYgdGhlIGxvY2FsZSBpcyBnaXZlbiwgaXQgd2lsbCBwcmVmaXggdGhlXG4gKiBsb2NhbGUuIFRoZSBwYXRoIHNob3VsZG4ndCBiZSBhbiBBUEkgcGF0aC4gSWYgYSBkZWZhdWx0IGxvY2FsZSBpcyBnaXZlbiB0aGVcbiAqIHByZWZpeCB3aWxsIGJlIG9taXR0ZWQgaWYgdGhlIGxvY2FsZSBpcyBhbHJlYWR5IHRoZSBkZWZhdWx0IGxvY2FsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZExvY2FsZShcbiAgcGF0aDogc3RyaW5nLFxuICBsb2NhbGU/OiBzdHJpbmcgfCBmYWxzZSxcbiAgZGVmYXVsdExvY2FsZT86IHN0cmluZyxcbiAgaWdub3JlUHJlZml4PzogYm9vbGVhblxuKSB7XG4gIC8vIElmIG5vIGxvY2FsZSB3YXMgZ2l2ZW4gb3IgdGhlIGxvY2FsZSBpcyB0aGUgZGVmYXVsdCBsb2NhbGUsIHdlIGRvbid0IG5lZWRcbiAgLy8gdG8gcHJlZml4IHRoZSBwYXRoLlxuICBpZiAoIWxvY2FsZSB8fCBsb2NhbGUgPT09IGRlZmF1bHRMb2NhbGUpIHJldHVybiBwYXRoXG5cbiAgY29uc3QgbG93ZXIgPSBwYXRoLnRvTG93ZXJDYXNlKClcblxuICAvLyBJZiB0aGUgcGF0aCBpcyBhbiBBUEkgcGF0aCBvciB0aGUgcGF0aCBhbHJlYWR5IGhhcyB0aGUgbG9jYWxlIHByZWZpeCwgd2VcbiAgLy8gZG9uJ3QgbmVlZCB0byBwcmVmaXggdGhlIHBhdGguXG4gIGlmICghaWdub3JlUHJlZml4KSB7XG4gICAgaWYgKHBhdGhIYXNQcmVmaXgobG93ZXIsICcvYXBpJykpIHJldHVybiBwYXRoXG4gICAgaWYgKHBhdGhIYXNQcmVmaXgobG93ZXIsIGAvJHtsb2NhbGUudG9Mb3dlckNhc2UoKX1gKSkgcmV0dXJuIHBhdGhcbiAgfVxuXG4gIC8vIEFkZCB0aGUgbG9jYWxlIHByZWZpeCB0byB0aGUgcGF0aC5cbiAgcmV0dXJuIGFkZFBhdGhQcmVmaXgocGF0aCwgYC8ke2xvY2FsZX1gKVxufVxuIl0sIm5hbWVzIjpbImFkZExvY2FsZSIsInBhdGgiLCJsb2NhbGUiLCJkZWZhdWx0TG9jYWxlIiwiaWdub3JlUHJlZml4IiwibG93ZXIiLCJ0b0xvd2VyQ2FzZSIsInBhdGhIYXNQcmVmaXgiLCJhZGRQYXRoUHJlZml4Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/add-locale.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js":
|
||
/*!***************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js ***!
|
||
\***************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"addPathPrefix\", ({\n enumerable: true,\n get: function() {\n return addPathPrefix;\n }\n}));\nconst _parsepath = __webpack_require__(/*! ./parse-path */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/parse-path.js\");\nfunction addPathPrefix(path, prefix) {\n if (!path.startsWith('/') || !prefix) {\n return path;\n }\n const { pathname, query, hash } = (0, _parsepath.parsePath)(path);\n return `${prefix}${pathname}${query}${hash}`;\n} //# sourceMappingURL=add-path-prefix.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2FkZC1wYXRoLXByZWZpeC5qcyIsIm1hcHBpbmdzIjoiOzs7O2lEQU1nQkE7OztlQUFBQTs7O3VDQU5VO0FBTW5CLFNBQVNBLGNBQWNDLElBQVksRUFBRUMsTUFBZTtJQUN6RCxJQUFJLENBQUNELEtBQUtFLFVBQVUsQ0FBQyxRQUFRLENBQUNELFFBQVE7UUFDcEMsT0FBT0Q7SUFDVDtJQUVBLE1BQU0sRUFBRUcsUUFBUSxFQUFFQyxLQUFLLEVBQUVDLElBQUksRUFBRSxHQUFHQyxDQUFBQSxHQUFBQSxXQUFBQSxTQUFBQSxFQUFVTjtJQUM1QyxPQUFPLEdBQUdDLFNBQVNFLFdBQVdDLFFBQVFDLE1BQU07QUFDOUMiLCJzb3VyY2VzIjpbIi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvYWRkLXBhdGgtcHJlZml4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhcnNlUGF0aCB9IGZyb20gJy4vcGFyc2UtcGF0aCdcblxuLyoqXG4gKiBBZGRzIHRoZSBwcm92aWRlZCBwcmVmaXggdG8gdGhlIGdpdmVuIHBhdGguIEl0IGZpcnN0IGVuc3VyZXMgdGhhdCB0aGUgcGF0aFxuICogaXMgaW5kZWVkIHN0YXJ0aW5nIHdpdGggYSBzbGFzaC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFBhdGhQcmVmaXgocGF0aDogc3RyaW5nLCBwcmVmaXg/OiBzdHJpbmcpIHtcbiAgaWYgKCFwYXRoLnN0YXJ0c1dpdGgoJy8nKSB8fCAhcHJlZml4KSB7XG4gICAgcmV0dXJuIHBhdGhcbiAgfVxuXG4gIGNvbnN0IHsgcGF0aG5hbWUsIHF1ZXJ5LCBoYXNoIH0gPSBwYXJzZVBhdGgocGF0aClcbiAgcmV0dXJuIGAke3ByZWZpeH0ke3BhdGhuYW1lfSR7cXVlcnl9JHtoYXNofWBcbn1cbiJdLCJuYW1lcyI6WyJhZGRQYXRoUHJlZml4IiwicGF0aCIsInByZWZpeCIsInN0YXJ0c1dpdGgiLCJwYXRobmFtZSIsInF1ZXJ5IiwiaGFzaCIsInBhcnNlUGF0aCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/add-path-suffix.js":
|
||
/*!***************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/add-path-suffix.js ***!
|
||
\***************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"addPathSuffix\", ({\n enumerable: true,\n get: function() {\n return addPathSuffix;\n }\n}));\nconst _parsepath = __webpack_require__(/*! ./parse-path */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/parse-path.js\");\nfunction addPathSuffix(path, suffix) {\n if (!path.startsWith('/') || !suffix) {\n return path;\n }\n const { pathname, query, hash } = (0, _parsepath.parsePath)(path);\n return `${pathname}${suffix}${query}${hash}`;\n} //# sourceMappingURL=add-path-suffix.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2FkZC1wYXRoLXN1ZmZpeC5qcyIsIm1hcHBpbmdzIjoiOzs7O2lEQU9nQkE7OztlQUFBQTs7O3VDQVBVO0FBT25CLFNBQVNBLGNBQWNDLElBQVksRUFBRUMsTUFBZTtJQUN6RCxJQUFJLENBQUNELEtBQUtFLFVBQVUsQ0FBQyxRQUFRLENBQUNELFFBQVE7UUFDcEMsT0FBT0Q7SUFDVDtJQUVBLE1BQU0sRUFBRUcsUUFBUSxFQUFFQyxLQUFLLEVBQUVDLElBQUksRUFBRSxHQUFHQyxDQUFBQSxHQUFBQSxXQUFBQSxTQUFBQSxFQUFVTjtJQUM1QyxPQUFPLEdBQUdHLFdBQVdGLFNBQVNHLFFBQVFDLE1BQU07QUFDOUMiLCJzb3VyY2VzIjpbIi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvYWRkLXBhdGgtc3VmZml4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhcnNlUGF0aCB9IGZyb20gJy4vcGFyc2UtcGF0aCdcblxuLyoqXG4gKiBTaW1pbGFybHkgdG8gYGFkZFBhdGhQcmVmaXhgLCB0aGlzIGZ1bmN0aW9uIGFkZHMgYSBzdWZmaXggYXQgdGhlIGVuZCBvbiB0aGVcbiAqIHByb3ZpZGVkIHBhdGguIEl0IGFsc28gd29ya3Mgb25seSBmb3IgcGF0aHMgZW5zdXJpbmcgdGhlIGFyZ3VtZW50IHN0YXJ0c1xuICogd2l0aCBhIHNsYXNoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkUGF0aFN1ZmZpeChwYXRoOiBzdHJpbmcsIHN1ZmZpeD86IHN0cmluZykge1xuICBpZiAoIXBhdGguc3RhcnRzV2l0aCgnLycpIHx8ICFzdWZmaXgpIHtcbiAgICByZXR1cm4gcGF0aFxuICB9XG5cbiAgY29uc3QgeyBwYXRobmFtZSwgcXVlcnksIGhhc2ggfSA9IHBhcnNlUGF0aChwYXRoKVxuICByZXR1cm4gYCR7cGF0aG5hbWV9JHtzdWZmaXh9JHtxdWVyeX0ke2hhc2h9YFxufVxuIl0sIm5hbWVzIjpbImFkZFBhdGhTdWZmaXgiLCJwYXRoIiwic3VmZml4Iiwic3RhcnRzV2l0aCIsInBhdGhuYW1lIiwicXVlcnkiLCJoYXNoIiwicGFyc2VQYXRoIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/add-path-suffix.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/app-paths.js":
|
||
/*!*********************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/app-paths.js ***!
|
||
\*********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n compareAppPaths: function() {\n return compareAppPaths;\n },\n normalizeAppPath: function() {\n return normalizeAppPath;\n },\n normalizeRscURL: function() {\n return normalizeRscURL;\n }\n});\nconst _ensureleadingslash = __webpack_require__(/*! ../../page-path/ensure-leading-slash */ \"(rsc)/./node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js\");\nconst _segment = __webpack_require__(/*! ../../segment */ \"(rsc)/./node_modules/next/dist/shared/lib/segment.js\");\nfunction normalizeAppPath(route) {\n return (0, _ensureleadingslash.ensureLeadingSlash)(route.split('/').reduce((pathname, segment, index, segments)=>{\n // Empty segments are ignored.\n if (!segment) {\n return pathname;\n }\n // Groups are ignored.\n if ((0, _segment.isGroupSegment)(segment)) {\n return pathname;\n }\n // Parallel segments are ignored.\n if (segment[0] === '@') {\n return pathname;\n }\n // The last segment (if it's a leaf) should be ignored.\n if ((segment === 'page' || segment === 'route') && index === segments.length - 1) {\n return pathname;\n }\n return `${pathname}/${segment}`;\n }, ''));\n}\nfunction compareAppPaths(a, b) {\n const aHasSlot = a.includes('/@');\n const bHasSlot = b.includes('/@');\n if (aHasSlot && !bHasSlot) return -1;\n if (!aHasSlot && bHasSlot) return 1;\n return a.localeCompare(b);\n}\nfunction normalizeRscURL(url) {\n return url.replace(/\\.rsc($|\\?)/, '$1');\n} //# sourceMappingURL=app-paths.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2FwcC1wYXRocy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUErRGdCQSxlQUFlO2VBQWZBOztJQXpDQUMsZ0JBQWdCO2VBQWhCQTs7SUFxREFDLGVBQWU7ZUFBZkE7OztnREEzRW1CO3FDQUNKO0FBcUJ4QixTQUFTRCxpQkFBaUJFLEtBQWE7SUFDNUMsT0FBT0MsQ0FBQUEsR0FBQUEsb0JBQUFBLGtCQUFrQixFQUN2QkQsTUFBTUUsS0FBSyxDQUFDLEtBQUtDLE1BQU0sQ0FBQyxDQUFDQyxVQUFVQyxTQUFTQyxPQUFPQztRQUNqRCw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDRixTQUFTO1lBQ1osT0FBT0Q7UUFDVDtRQUVBLHNCQUFzQjtRQUN0QixJQUFJSSxDQUFBQSxHQUFBQSxTQUFBQSxjQUFBQSxFQUFlSCxVQUFVO1lBQzNCLE9BQU9EO1FBQ1Q7UUFFQSxpQ0FBaUM7UUFDakMsSUFBSUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxLQUFLO1lBQ3RCLE9BQU9EO1FBQ1Q7UUFFQSx1REFBdUQ7UUFDdkQsSUFDR0MsQ0FBQUEsWUFBWSxVQUFVQSxZQUFZLFFBQU0sSUFDekNDLFVBQVVDLFNBQVNFLE1BQU0sR0FBRyxHQUM1QjtZQUNBLE9BQU9MO1FBQ1Q7UUFFQSxPQUFPLEdBQUdBLFNBQVMsQ0FBQyxFQUFFQyxTQUFTO0lBQ2pDLEdBQUc7QUFFUDtBQVlPLFNBQVNSLGdCQUFnQmEsQ0FBUyxFQUFFQyxDQUFTO0lBQ2xELE1BQU1DLFdBQVdGLEVBQUVHLFFBQVEsQ0FBQztJQUM1QixNQUFNQyxXQUFXSCxFQUFFRSxRQUFRLENBQUM7SUFDNUIsSUFBSUQsWUFBWSxDQUFDRSxVQUFVLE9BQU8sQ0FBQztJQUNuQyxJQUFJLENBQUNGLFlBQVlFLFVBQVUsT0FBTztJQUNsQyxPQUFPSixFQUFFSyxhQUFhLENBQUNKO0FBQ3pCO0FBTU8sU0FBU1osZ0JBQWdCaUIsR0FBVztJQUN6QyxPQUFPQSxJQUFJQyxPQUFPLENBQ2hCLGVBQ0E7QUFHSiIsInNvdXJjZXMiOlsiL3NyYy9zaGFyZWQvbGliL3JvdXRlci91dGlscy9hcHAtcGF0aHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZW5zdXJlTGVhZGluZ1NsYXNoIH0gZnJvbSAnLi4vLi4vcGFnZS1wYXRoL2Vuc3VyZS1sZWFkaW5nLXNsYXNoJ1xuaW1wb3J0IHsgaXNHcm91cFNlZ21lbnQgfSBmcm9tICcuLi8uLi9zZWdtZW50J1xuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYW4gYXBwIHJvdXRlIHNvIGl0IHJlcHJlc2VudHMgdGhlIGFjdHVhbCByZXF1ZXN0IHBhdGguIEVzc2VudGlhbGx5XG4gKiBwZXJmb3JtaW5nIHRoZSBmb2xsb3dpbmcgdHJhbnNmb3JtYXRpb25zOlxuICpcbiAqIC0gYC8oZGFzaGJvYXJkKS91c2VyL1tpZF0vcGFnZWAgdG8gYC91c2VyL1tpZF1gXG4gKiAtIGAvKGRhc2hib2FyZCkvYWNjb3VudC9wYWdlYCB0byBgL2FjY291bnRgXG4gKiAtIGAvdXNlci9baWRdL3BhZ2VgIHRvIGAvdXNlci9baWRdYFxuICogLSBgL2FjY291bnQvcGFnZWAgdG8gYC9hY2NvdW50YFxuICogLSBgL3BhZ2VgIHRvIGAvYFxuICogLSBgLyhkYXNoYm9hcmQpL3VzZXIvW2lkXS9yb3V0ZWAgdG8gYC91c2VyL1tpZF1gXG4gKiAtIGAvKGRhc2hib2FyZCkvYWNjb3VudC9yb3V0ZWAgdG8gYC9hY2NvdW50YFxuICogLSBgL3VzZXIvW2lkXS9yb3V0ZWAgdG8gYC91c2VyL1tpZF1gXG4gKiAtIGAvYWNjb3VudC9yb3V0ZWAgdG8gYC9hY2NvdW50YFxuICogLSBgL3JvdXRlYCB0byBgL2BcbiAqIC0gYC9gIHRvIGAvYFxuICpcbiAqIEBwYXJhbSByb3V0ZSB0aGUgYXBwIHJvdXRlIHRvIG5vcm1hbGl6ZVxuICogQHJldHVybnMgdGhlIG5vcm1hbGl6ZWQgcGF0aG5hbWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUFwcFBhdGgocm91dGU6IHN0cmluZykge1xuICByZXR1cm4gZW5zdXJlTGVhZGluZ1NsYXNoKFxuICAgIHJvdXRlLnNwbGl0KCcvJykucmVkdWNlKChwYXRobmFtZSwgc2VnbWVudCwgaW5kZXgsIHNlZ21lbnRzKSA9PiB7XG4gICAgICAvLyBFbXB0eSBzZWdtZW50cyBhcmUgaWdub3JlZC5cbiAgICAgIGlmICghc2VnbWVudCkge1xuICAgICAgICByZXR1cm4gcGF0aG5hbWVcbiAgICAgIH1cblxuICAgICAgLy8gR3JvdXBzIGFyZSBpZ25vcmVkLlxuICAgICAgaWYgKGlzR3JvdXBTZWdtZW50KHNlZ21lbnQpKSB7XG4gICAgICAgIHJldHVybiBwYXRobmFtZVxuICAgICAgfVxuXG4gICAgICAvLyBQYXJhbGxlbCBzZWdtZW50cyBhcmUgaWdub3JlZC5cbiAgICAgIGlmIChzZWdtZW50WzBdID09PSAnQCcpIHtcbiAgICAgICAgcmV0dXJuIHBhdGhuYW1lXG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBsYXN0IHNlZ21lbnQgKGlmIGl0J3MgYSBsZWFmKSBzaG91bGQgYmUgaWdub3JlZC5cbiAgICAgIGlmIChcbiAgICAgICAgKHNlZ21lbnQgPT09ICdwYWdlJyB8fCBzZWdtZW50ID09PSAncm91dGUnKSAmJlxuICAgICAgICBpbmRleCA9PT0gc2VnbWVudHMubGVuZ3RoIC0gMVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBwYXRobmFtZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gYCR7cGF0aG5hbWV9LyR7c2VnbWVudH1gXG4gICAgfSwgJycpXG4gIClcbn1cblxuLyoqXG4gKiBDb21wYXJhdG9yIGZvciBzb3J0aW5nIGFwcCBwYXRocyBzbyB0aGF0IHBhcmFsbGVsIHNsb3QgcGF0aHMgKGNvbnRhaW5pbmdcbiAqIGAvQGApIGNvbWUgYmVmb3JlIHRoZSBjaGlsZHJlbi9yb290IHBhZ2UgcGF0aC4gVGhpcyBlbnN1cmVzIHRoZSBsYXN0IGl0ZW1cbiAqIGlzIGFsd2F5cyB0aGUgY2hpbGRyZW4gcGFnZSwgd2hpY2ggaXMgd2hhdCBgcmVuZGVyUGFnZUNvbXBvbmVudGAgcmVhZHMgdmlhXG4gKiBgYXBwUGF0aHNbYXBwUGF0aHMubGVuZ3RoIC0gMV1gLlxuICpcbiAqIFdpdGhvdXQgdGhpcywgcm91dGUgZ3JvdXAgcHJlZml4ZXMgbGlrZSBgKGdyb3VwKWAgKGNoYXIgY29kZSAweDI4KSBzb3J0XG4gKiBiZWZvcmUgYEBgICgweDQwKSwgY2F1c2luZyB0aGUgY2hpbGRyZW4gcGFnZSB0byBzb3J0IGZpcnN0IGluc3RlYWQgb2YgbGFzdFxuICogYW5kIGxlYWRpbmcgdG8gYSBtYW5pZmVzdCBtaXNtYXRjaCAvIDQwNCBpbiB3ZWJwYWNrIGRldiBtb2RlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZUFwcFBhdGhzKGE6IHN0cmluZywgYjogc3RyaW5nKTogbnVtYmVyIHtcbiAgY29uc3QgYUhhc1Nsb3QgPSBhLmluY2x1ZGVzKCcvQCcpXG4gIGNvbnN0IGJIYXNTbG90ID0gYi5pbmNsdWRlcygnL0AnKVxuICBpZiAoYUhhc1Nsb3QgJiYgIWJIYXNTbG90KSByZXR1cm4gLTFcbiAgaWYgKCFhSGFzU2xvdCAmJiBiSGFzU2xvdCkgcmV0dXJuIDFcbiAgcmV0dXJuIGEubG9jYWxlQ29tcGFyZShiKVxufVxuXG4vKipcbiAqIFN0cmlwcyB0aGUgYC5yc2NgIGV4dGVuc2lvbiBpZiBpdCdzIGluIHRoZSBwYXRobmFtZS5cbiAqIFNpbmNlIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBvbiBmdWxsIHVybHMgaXQgY2hlY2tzIGA/YCBmb3Igc2VhcmNoUGFyYW1zIGhhbmRsaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplUnNjVVJMKHVybDogc3RyaW5nKSB7XG4gIHJldHVybiB1cmwucmVwbGFjZShcbiAgICAvXFwucnNjKCR8XFw/KS8sXG4gICAgLy8gJDEgZW5zdXJlcyBgP2AgaXMgcHJlc2VydmVkXG4gICAgJyQxJ1xuICApXG59XG4iXSwibmFtZXMiOlsiY29tcGFyZUFwcFBhdGhzIiwibm9ybWFsaXplQXBwUGF0aCIsIm5vcm1hbGl6ZVJzY1VSTCIsInJvdXRlIiwiZW5zdXJlTGVhZGluZ1NsYXNoIiwic3BsaXQiLCJyZWR1Y2UiLCJwYXRobmFtZSIsInNlZ21lbnQiLCJpbmRleCIsInNlZ21lbnRzIiwiaXNHcm91cFNlZ21lbnQiLCJsZW5ndGgiLCJhIiwiYiIsImFIYXNTbG90IiwiaW5jbHVkZXMiLCJiSGFzU2xvdCIsImxvY2FsZUNvbXBhcmUiLCJ1cmwiLCJyZXBsYWNlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/app-paths.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/cache-busting-search-param.js":
|
||
/*!**************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/cache-busting-search-param.js ***!
|
||
\**************************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"computeCacheBustingSearchParam\", ({\n enumerable: true,\n get: function() {\n return computeCacheBustingSearchParam;\n }\n}));\nconst _hash = __webpack_require__(/*! ../../hash */ \"(rsc)/./node_modules/next/dist/shared/lib/hash.js\");\nfunction computeCacheBustingSearchParam(prefetchHeader, segmentPrefetchHeader, stateTreeHeader, nextUrlHeader) {\n if ((prefetchHeader === undefined || prefetchHeader === '0') && segmentPrefetchHeader === undefined && stateTreeHeader === undefined && nextUrlHeader === undefined) {\n return '';\n }\n return (0, _hash.hexHash)([\n prefetchHeader || '0',\n segmentPrefetchHeader || '0',\n stateTreeHeader || '0',\n nextUrlHeader || '0'\n ].join(','));\n} //# sourceMappingURL=cache-busting-search-param.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2NhY2hlLWJ1c3Rpbmctc2VhcmNoLXBhcmFtLmpzIiwibWFwcGluZ3MiOiI7Ozs7a0VBRWdCQTs7O2VBQUFBOzs7a0NBRlE7QUFFakIsU0FBU0EsK0JBQ2RDLGNBQTJDLEVBQzNDQyxxQkFBb0QsRUFDcERDLGVBQThDLEVBQzlDQyxhQUE0QztJQUU1QyxJQUNHSCxDQUFBQSxtQkFBbUJJLGFBQWFKLG1CQUFtQixJQUFFLElBQ3REQywwQkFBMEJHLGFBQzFCRixvQkFBb0JFLGFBQ3BCRCxrQkFBa0JDLFdBQ2xCO1FBQ0EsT0FBTztJQUNUO0lBQ0EsT0FBT0MsQ0FBQUEsR0FBQUEsTUFBQUEsT0FBQUEsRUFDTDtRQUNFTCxrQkFBa0I7UUFDbEJDLHlCQUF5QjtRQUN6QkMsbUJBQW1CO1FBQ25CQyxpQkFBaUI7S0FDbEIsQ0FBQ0csSUFBSSxDQUFDO0FBRVgiLCJzb3VyY2VzIjpbIi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvY2FjaGUtYnVzdGluZy1zZWFyY2gtcGFyYW0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaGV4SGFzaCB9IGZyb20gJy4uLy4uL2hhc2gnXG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlQ2FjaGVCdXN0aW5nU2VhcmNoUGFyYW0oXG4gIHByZWZldGNoSGVhZGVyOiAnMScgfCAnMicgfCAnMCcgfCB1bmRlZmluZWQsXG4gIHNlZ21lbnRQcmVmZXRjaEhlYWRlcjogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQsXG4gIHN0YXRlVHJlZUhlYWRlcjogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQsXG4gIG5leHRVcmxIZWFkZXI6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkXG4pOiBzdHJpbmcge1xuICBpZiAoXG4gICAgKHByZWZldGNoSGVhZGVyID09PSB1bmRlZmluZWQgfHwgcHJlZmV0Y2hIZWFkZXIgPT09ICcwJykgJiZcbiAgICBzZWdtZW50UHJlZmV0Y2hIZWFkZXIgPT09IHVuZGVmaW5lZCAmJlxuICAgIHN0YXRlVHJlZUhlYWRlciA9PT0gdW5kZWZpbmVkICYmXG4gICAgbmV4dFVybEhlYWRlciA9PT0gdW5kZWZpbmVkXG4gICkge1xuICAgIHJldHVybiAnJ1xuICB9XG4gIHJldHVybiBoZXhIYXNoKFxuICAgIFtcbiAgICAgIHByZWZldGNoSGVhZGVyIHx8ICcwJyxcbiAgICAgIHNlZ21lbnRQcmVmZXRjaEhlYWRlciB8fCAnMCcsXG4gICAgICBzdGF0ZVRyZWVIZWFkZXIgfHwgJzAnLFxuICAgICAgbmV4dFVybEhlYWRlciB8fCAnMCcsXG4gICAgXS5qb2luKCcsJylcbiAgKVxufVxuIl0sIm5hbWVzIjpbImNvbXB1dGVDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbSIsInByZWZldGNoSGVhZGVyIiwic2VnbWVudFByZWZldGNoSGVhZGVyIiwic3RhdGVUcmVlSGVhZGVyIiwibmV4dFVybEhlYWRlciIsInVuZGVmaW5lZCIsImhleEhhc2giLCJqb2luIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/cache-busting-search-param.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js":
|
||
/*!*************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js ***!
|
||
\*************************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"formatNextPathnameInfo\", ({\n enumerable: true,\n get: function() {\n return formatNextPathnameInfo;\n }\n}));\nconst _removetrailingslash = __webpack_require__(/*! ./remove-trailing-slash */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js\");\nconst _addpathprefix = __webpack_require__(/*! ./add-path-prefix */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js\");\nconst _addpathsuffix = __webpack_require__(/*! ./add-path-suffix */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/add-path-suffix.js\");\nconst _addlocale = __webpack_require__(/*! ./add-locale */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/add-locale.js\");\nfunction formatNextPathnameInfo(info) {\n let pathname = (0, _addlocale.addLocale)(info.pathname, info.locale, info.buildId ? undefined : info.defaultLocale, info.ignorePrefix);\n if (info.buildId || !info.trailingSlash) {\n pathname = (0, _removetrailingslash.removeTrailingSlash)(pathname);\n }\n if (info.buildId) {\n pathname = (0, _addpathsuffix.addPathSuffix)((0, _addpathprefix.addPathPrefix)(pathname, `/_next/data/${info.buildId}`), info.pathname === '/' ? 'index.json' : '.json');\n }\n pathname = (0, _addpathprefix.addPathPrefix)(pathname, info.basePath);\n return !info.buildId && info.trailingSlash ? !pathname.endsWith('/') ? (0, _addpathsuffix.addPathSuffix)(pathname, '/') : pathname : (0, _removetrailingslash.removeTrailingSlash)(pathname);\n} //# sourceMappingURL=format-next-pathname-info.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2Zvcm1hdC1uZXh0LXBhdGhuYW1lLWluZm8uanMiLCJtYXBwaW5ncyI6Ijs7OzswREFXZ0JBOzs7ZUFBQUE7OztpREFWb0I7MkNBQ047MkNBQ0E7dUNBQ0o7QUFPbkIsU0FBU0EsdUJBQXVCQyxJQUFrQjtJQUN2RCxJQUFJQyxXQUFXQyxDQUFBQSxHQUFBQSxXQUFBQSxTQUFBQSxFQUNiRixLQUFLQyxRQUFRLEVBQ2JELEtBQUtHLE1BQU0sRUFDWEgsS0FBS0ksT0FBTyxHQUFHQyxZQUFZTCxLQUFLTSxhQUFhLEVBQzdDTixLQUFLTyxZQUFZO0lBR25CLElBQUlQLEtBQUtJLE9BQU8sSUFBSSxDQUFDSixLQUFLUSxhQUFhLEVBQUU7UUFDdkNQLFdBQVdRLENBQUFBLEdBQUFBLHFCQUFBQSxtQkFBQUEsRUFBb0JSO0lBQ2pDO0lBRUEsSUFBSUQsS0FBS0ksT0FBTyxFQUFFO1FBQ2hCSCxXQUFXUyxDQUFBQSxHQUFBQSxlQUFBQSxhQUFBQSxFQUNUQyxDQUFBQSxHQUFBQSxlQUFBQSxhQUFhLEVBQUNWLFVBQVUsQ0FBQyxZQUFZLEVBQUVELEtBQUtJLE9BQU8sRUFBRSxHQUNyREosS0FBS0MsUUFBUSxLQUFLLE1BQU0sZUFBZTtJQUUzQztJQUVBQSxXQUFXVSxDQUFBQSxHQUFBQSxlQUFBQSxhQUFBQSxFQUFjVixVQUFVRCxLQUFLWSxRQUFRO0lBQ2hELE9BQU8sQ0FBQ1osS0FBS0ksT0FBTyxJQUFJSixLQUFLUSxhQUFhLEdBQ3RDLENBQUNQLFNBQVNZLFFBQVEsQ0FBQyxPQUNqQkgsQ0FBQUEsR0FBQUEsZUFBQUEsYUFBQUEsRUFBY1QsVUFBVSxPQUN4QkEsV0FDRlEsQ0FBQUEsR0FBQUEscUJBQUFBLG1CQUFBQSxFQUFvQlI7QUFDMUIiLCJzb3VyY2VzIjpbIi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZm9ybWF0LW5leHQtcGF0aG5hbWUtaW5mby50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE5leHRQYXRobmFtZUluZm8gfSBmcm9tICcuL2dldC1uZXh0LXBhdGhuYW1lLWluZm8nXG5pbXBvcnQgeyByZW1vdmVUcmFpbGluZ1NsYXNoIH0gZnJvbSAnLi9yZW1vdmUtdHJhaWxpbmctc2xhc2gnXG5pbXBvcnQgeyBhZGRQYXRoUHJlZml4IH0gZnJvbSAnLi9hZGQtcGF0aC1wcmVmaXgnXG5pbXBvcnQgeyBhZGRQYXRoU3VmZml4IH0gZnJvbSAnLi9hZGQtcGF0aC1zdWZmaXgnXG5pbXBvcnQgeyBhZGRMb2NhbGUgfSBmcm9tICcuL2FkZC1sb2NhbGUnXG5cbmludGVyZmFjZSBFeHRlbmRlZEluZm8gZXh0ZW5kcyBOZXh0UGF0aG5hbWVJbmZvIHtcbiAgZGVmYXVsdExvY2FsZT86IHN0cmluZ1xuICBpZ25vcmVQcmVmaXg/OiBib29sZWFuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXROZXh0UGF0aG5hbWVJbmZvKGluZm86IEV4dGVuZGVkSW5mbykge1xuICBsZXQgcGF0aG5hbWUgPSBhZGRMb2NhbGUoXG4gICAgaW5mby5wYXRobmFtZSxcbiAgICBpbmZvLmxvY2FsZSxcbiAgICBpbmZvLmJ1aWxkSWQgPyB1bmRlZmluZWQgOiBpbmZvLmRlZmF1bHRMb2NhbGUsXG4gICAgaW5mby5pZ25vcmVQcmVmaXhcbiAgKVxuXG4gIGlmIChpbmZvLmJ1aWxkSWQgfHwgIWluZm8udHJhaWxpbmdTbGFzaCkge1xuICAgIHBhdGhuYW1lID0gcmVtb3ZlVHJhaWxpbmdTbGFzaChwYXRobmFtZSlcbiAgfVxuXG4gIGlmIChpbmZvLmJ1aWxkSWQpIHtcbiAgICBwYXRobmFtZSA9IGFkZFBhdGhTdWZmaXgoXG4gICAgICBhZGRQYXRoUHJlZml4KHBhdGhuYW1lLCBgL19uZXh0L2RhdGEvJHtpbmZvLmJ1aWxkSWR9YCksXG4gICAgICBpbmZvLnBhdGhuYW1lID09PSAnLycgPyAnaW5kZXguanNvbicgOiAnLmpzb24nXG4gICAgKVxuICB9XG5cbiAgcGF0aG5hbWUgPSBhZGRQYXRoUHJlZml4KHBhdGhuYW1lLCBpbmZvLmJhc2VQYXRoKVxuICByZXR1cm4gIWluZm8uYnVpbGRJZCAmJiBpbmZvLnRyYWlsaW5nU2xhc2hcbiAgICA/ICFwYXRobmFtZS5lbmRzV2l0aCgnLycpXG4gICAgICA/IGFkZFBhdGhTdWZmaXgocGF0aG5hbWUsICcvJylcbiAgICAgIDogcGF0aG5hbWVcbiAgICA6IHJlbW92ZVRyYWlsaW5nU2xhc2gocGF0aG5hbWUpXG59XG4iXSwibmFtZXMiOlsiZm9ybWF0TmV4dFBhdGhuYW1lSW5mbyIsImluZm8iLCJwYXRobmFtZSIsImFkZExvY2FsZSIsImxvY2FsZSIsImJ1aWxkSWQiLCJ1bmRlZmluZWQiLCJkZWZhdWx0TG9jYWxlIiwiaWdub3JlUHJlZml4IiwidHJhaWxpbmdTbGFzaCIsInJlbW92ZVRyYWlsaW5nU2xhc2giLCJhZGRQYXRoU3VmZml4IiwiYWRkUGF0aFByZWZpeCIsImJhc2VQYXRoIiwiZW5kc1dpdGgiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js":
|
||
/*!**********************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js ***!
|
||
\**********************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getNextPathnameInfo\", ({\n enumerable: true,\n get: function() {\n return getNextPathnameInfo;\n }\n}));\nconst _normalizelocalepath = __webpack_require__(/*! ../../i18n/normalize-locale-path */ \"(rsc)/./node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js\");\nconst _removepathprefix = __webpack_require__(/*! ./remove-path-prefix */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/remove-path-prefix.js\");\nconst _pathhasprefix = __webpack_require__(/*! ./path-has-prefix */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js\");\nfunction getNextPathnameInfo(pathname, options) {\n const { basePath, i18n, trailingSlash } = options.nextConfig ?? {};\n const info = {\n pathname,\n trailingSlash: pathname !== '/' ? pathname.endsWith('/') : trailingSlash\n };\n if (basePath && (0, _pathhasprefix.pathHasPrefix)(info.pathname, basePath)) {\n info.pathname = (0, _removepathprefix.removePathPrefix)(info.pathname, basePath);\n info.basePath = basePath;\n }\n let pathnameNoDataPrefix = info.pathname;\n if (info.pathname.startsWith('/_next/data/') && info.pathname.endsWith('.json')) {\n const paths = info.pathname.replace(/^\\/_next\\/data\\//, '').replace(/\\.json$/, '').split('/');\n const buildId = paths[0];\n info.buildId = buildId;\n pathnameNoDataPrefix = paths[1] !== 'index' ? `/${paths.slice(1).join('/')}` : '/';\n // update pathname with normalized if enabled although\n // we use normalized to populate locale info still\n if (options.parseData === true) {\n info.pathname = pathnameNoDataPrefix;\n }\n }\n // If provided, use the locale route normalizer to detect the locale instead\n // of the function below.\n if (i18n) {\n let result = options.i18nProvider ? options.i18nProvider.analyze(info.pathname) : (0, _normalizelocalepath.normalizeLocalePath)(info.pathname, i18n.locales);\n info.locale = result.detectedLocale;\n info.pathname = result.pathname ?? info.pathname;\n if (!result.detectedLocale && info.buildId) {\n result = options.i18nProvider ? options.i18nProvider.analyze(pathnameNoDataPrefix) : (0, _normalizelocalepath.normalizeLocalePath)(pathnameNoDataPrefix, i18n.locales);\n if (result.detectedLocale) {\n info.locale = result.detectedLocale;\n }\n }\n }\n return info;\n} //# sourceMappingURL=get-next-pathname-info.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2dldC1uZXh0LXBhdGhuYW1lLWluZm8uanMiLCJtYXBwaW5ncyI6Ijs7Ozt1REFvRGdCQTs7O2VBQUFBOzs7aURBcERvQjs4Q0FDSDsyQ0FDSDtBQWtEdkIsU0FBU0Esb0JBQ2RDLFFBQWdCLEVBQ2hCQyxPQUFnQjtJQUVoQixNQUFNLEVBQUVDLFFBQVEsRUFBRUMsSUFBSSxFQUFFQyxhQUFhLEVBQUUsR0FBR0gsUUFBUUksVUFBVSxJQUFJLENBQUM7SUFDakUsTUFBTUMsT0FBeUI7UUFDN0JOO1FBQ0FJLGVBQWVKLGFBQWEsTUFBTUEsU0FBU08sUUFBUSxDQUFDLE9BQU9IO0lBQzdEO0lBRUEsSUFBSUYsWUFBWU0sQ0FBQUEsR0FBQUEsZUFBQUEsYUFBQUEsRUFBY0YsS0FBS04sUUFBUSxFQUFFRSxXQUFXO1FBQ3RESSxLQUFLTixRQUFRLEdBQUdTLENBQUFBLEdBQUFBLGtCQUFBQSxnQkFBQUEsRUFBaUJILEtBQUtOLFFBQVEsRUFBRUU7UUFDaERJLEtBQUtKLFFBQVEsR0FBR0E7SUFDbEI7SUFDQSxJQUFJUSx1QkFBdUJKLEtBQUtOLFFBQVE7SUFFeEMsSUFDRU0sS0FBS04sUUFBUSxDQUFDVyxVQUFVLENBQUMsbUJBQ3pCTCxLQUFLTixRQUFRLENBQUNPLFFBQVEsQ0FBQyxVQUN2QjtRQUNBLE1BQU1LLFFBQVFOLEtBQUtOLFFBQVEsQ0FDeEJhLE9BQU8sQ0FBQyxvQkFBb0IsSUFDNUJBLE9BQU8sQ0FBQyxXQUFXLElBQ25CQyxLQUFLLENBQUM7UUFFVCxNQUFNQyxVQUFVSCxLQUFLLENBQUMsRUFBRTtRQUN4Qk4sS0FBS1MsT0FBTyxHQUFHQTtRQUNmTCx1QkFDRUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxVQUFVLENBQUMsQ0FBQyxFQUFFQSxNQUFNSSxLQUFLLENBQUMsR0FBR0MsSUFBSSxDQUFDLE1BQU0sR0FBRztRQUUxRCxzREFBc0Q7UUFDdEQsa0RBQWtEO1FBQ2xELElBQUloQixRQUFRaUIsU0FBUyxLQUFLLE1BQU07WUFDOUJaLEtBQUtOLFFBQVEsR0FBR1U7UUFDbEI7SUFDRjtJQUVBLDRFQUE0RTtJQUM1RSx5QkFBeUI7SUFDekIsSUFBSVAsTUFBTTtRQUNSLElBQUlnQixTQUFTbEIsUUFBUW1CLFlBQVksR0FDN0JuQixRQUFRbUIsWUFBWSxDQUFDQyxPQUFPLENBQUNmLEtBQUtOLFFBQVEsSUFDMUNzQixDQUFBQSxHQUFBQSxxQkFBQUEsbUJBQUFBLEVBQW9CaEIsS0FBS04sUUFBUSxFQUFFRyxLQUFLb0IsT0FBTztRQUVuRGpCLEtBQUtrQixNQUFNLEdBQUdMLE9BQU9NLGNBQWM7UUFDbkNuQixLQUFLTixRQUFRLEdBQUdtQixPQUFPbkIsUUFBUSxJQUFJTSxLQUFLTixRQUFRO1FBRWhELElBQUksQ0FBQ21CLE9BQU9NLGNBQWMsSUFBSW5CLEtBQUtTLE9BQU8sRUFBRTtZQUMxQ0ksU0FBU2xCLFFBQVFtQixZQUFZLEdBQ3pCbkIsUUFBUW1CLFlBQVksQ0FBQ0MsT0FBTyxDQUFDWCx3QkFDN0JZLENBQUFBLEdBQUFBLHFCQUFBQSxtQkFBQUEsRUFBb0JaLHNCQUFzQlAsS0FBS29CLE9BQU87WUFFMUQsSUFBSUosT0FBT00sY0FBYyxFQUFFO2dCQUN6Qm5CLEtBQUtrQixNQUFNLEdBQUdMLE9BQU9NLGNBQWM7WUFDckM7UUFDRjtJQUNGO0lBQ0EsT0FBT25CO0FBQ1QiLCJzb3VyY2VzIjpbIi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZ2V0LW5leHQtcGF0aG5hbWUtaW5mby50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBub3JtYWxpemVMb2NhbGVQYXRoIH0gZnJvbSAnLi4vLi4vaTE4bi9ub3JtYWxpemUtbG9jYWxlLXBhdGgnXG5pbXBvcnQgeyByZW1vdmVQYXRoUHJlZml4IH0gZnJvbSAnLi9yZW1vdmUtcGF0aC1wcmVmaXgnXG5pbXBvcnQgeyBwYXRoSGFzUHJlZml4IH0gZnJvbSAnLi9wYXRoLWhhcy1wcmVmaXgnXG5pbXBvcnQgdHlwZSB7IEkxOE5Qcm92aWRlciB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZlci9saWIvaTE4bi1wcm92aWRlcidcblxuZXhwb3J0IGludGVyZmFjZSBOZXh0UGF0aG5hbWVJbmZvIHtcbiAgLyoqXG4gICAqIFRoZSBiYXNlIHBhdGggaW4gY2FzZSB0aGUgcGF0aG5hbWUgaW5jbHVkZWQgaXQuXG4gICAqL1xuICBiYXNlUGF0aD86IHN0cmluZ1xuICAvKipcbiAgICogVGhlIGJ1aWxkSWQgZm9yIHdoZW4gdGhlIHBhcnNlZCBVUkwgaXMgYSBkYXRhIFVSTC4gUGFyc2luZyBpdCBjYW4gYmVcbiAgICogZGlzYWJsZWQgd2l0aCB0aGUgYHBhcnNlRGF0YWAgb3B0aW9uLlxuICAgKi9cbiAgYnVpbGRJZD86IHN0cmluZ1xuICAvKipcbiAgICogSWYgdGhlcmUgd2FzIGEgbG9jYWxlIGluIHRoZSBwYXRobmFtZSwgdGhpcyB3aWxsIGhvbGQgaXRzIHZhbHVlLlxuICAgKi9cbiAgbG9jYWxlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgcHJvY2Vzc2VkIHBhdGhuYW1lIHdpdGhvdXQgYSBiYXNlIHBhdGgsIGxvY2FsZSwgb3IgZGF0YSBVUkwgZWxlbWVudHNcbiAgICogd2hlbiBwYXJzaW5nIGl0IGlzIGVuYWJsZWQuXG4gICAqL1xuICBwYXRobmFtZTogc3RyaW5nXG4gIC8qKlxuICAgKiBBIGJvb2xlYW4gdGVsbGluZyBpZiB0aGUgcGF0aG5hbWUgaGFkIGEgdHJhaWxpbmdTbGFzaC4gVGhpcyBjYW4gYmUgb25seVxuICAgKiB0cnVlIGlmIHRyYWlsaW5nU2xhc2ggaXMgZW5hYmxlZC5cbiAgICovXG4gIHRyYWlsaW5nU2xhc2g/OiBib29sZWFuXG59XG5cbmludGVyZmFjZSBPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZW4gcGFzc2VkIHRvIHRydWUsIHRoaXMgZnVuY3Rpb24gd2lsbCBhbHNvIHBhcnNlIE5leHRqcyBkYXRhIFVSTHMuXG4gICAqL1xuICBwYXJzZURhdGE/OiBib29sZWFuXG4gIC8qKlxuICAgKiBBIHBhcnRpYWwgb2YgdGhlIE5leHQuanMgY29uZmlndXJhdGlvbiB0byBwYXJzZSB0aGUgVVJMLlxuICAgKi9cbiAgbmV4dENvbmZpZz86IHtcbiAgICBiYXNlUGF0aD86IHN0cmluZ1xuICAgIGkxOG4/OiB7IGxvY2FsZXM/OiByZWFkb25seSBzdHJpbmdbXSB9IHwgbnVsbFxuICAgIHRyYWlsaW5nU2xhc2g/OiBib29sZWFuXG4gIH1cblxuICAvKipcbiAgICogSWYgcHJvdmlkZWQsIHRoaXMgbm9ybWFsaXplciB3aWxsIGJlIHVzZWQgdG8gZGV0ZWN0IHRoZSBsb2NhbGUgaW5zdGVhZCBvZlxuICAgKiB0aGUgZGVmYXVsdCBsb2NhbGUgZGV0ZWN0aW9uLlxuICAgKi9cbiAgaTE4blByb3ZpZGVyPzogSTE4TlByb3ZpZGVyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXh0UGF0aG5hbWVJbmZvKFxuICBwYXRobmFtZTogc3RyaW5nLFxuICBvcHRpb25zOiBPcHRpb25zXG4pOiBOZXh0UGF0aG5hbWVJbmZvIHtcbiAgY29uc3QgeyBiYXNlUGF0aCwgaTE4biwgdHJhaWxpbmdTbGFzaCB9ID0gb3B0aW9ucy5uZXh0Q29uZmlnID8/IHt9XG4gIGNvbnN0IGluZm86IE5leHRQYXRobmFtZUluZm8gPSB7XG4gICAgcGF0aG5hbWUsXG4gICAgdHJhaWxpbmdTbGFzaDogcGF0aG5hbWUgIT09ICcvJyA/IHBhdGhuYW1lLmVuZHNXaXRoKCcvJykgOiB0cmFpbGluZ1NsYXNoLFxuICB9XG5cbiAgaWYgKGJhc2VQYXRoICYmIHBhdGhIYXNQcmVmaXgoaW5mby5wYXRobmFtZSwgYmFzZVBhdGgpKSB7XG4gICAgaW5mby5wYXRobmFtZSA9IHJlbW92ZVBhdGhQcmVmaXgoaW5mby5wYXRobmFtZSwgYmFzZVBhdGgpXG4gICAgaW5mby5iYXNlUGF0aCA9IGJhc2VQYXRoXG4gIH1cbiAgbGV0IHBhdGhuYW1lTm9EYXRhUHJlZml4ID0gaW5mby5wYXRobmFtZVxuXG4gIGlmIChcbiAgICBpbmZvLnBhdGhuYW1lLnN0YXJ0c1dpdGgoJy9fbmV4dC9kYXRhLycpICYmXG4gICAgaW5mby5wYXRobmFtZS5lbmRzV2l0aCgnLmpzb24nKVxuICApIHtcbiAgICBjb25zdCBwYXRocyA9IGluZm8ucGF0aG5hbWVcbiAgICAgIC5yZXBsYWNlKC9eXFwvX25leHRcXC9kYXRhXFwvLywgJycpXG4gICAgICAucmVwbGFjZSgvXFwuanNvbiQvLCAnJylcbiAgICAgIC5zcGxpdCgnLycpXG5cbiAgICBjb25zdCBidWlsZElkID0gcGF0aHNbMF1cbiAgICBpbmZvLmJ1aWxkSWQgPSBidWlsZElkXG4gICAgcGF0aG5hbWVOb0RhdGFQcmVmaXggPVxuICAgICAgcGF0aHNbMV0gIT09ICdpbmRleCcgPyBgLyR7cGF0aHMuc2xpY2UoMSkuam9pbignLycpfWAgOiAnLydcblxuICAgIC8vIHVwZGF0ZSBwYXRobmFtZSB3aXRoIG5vcm1hbGl6ZWQgaWYgZW5hYmxlZCBhbHRob3VnaFxuICAgIC8vIHdlIHVzZSBub3JtYWxpemVkIHRvIHBvcHVsYXRlIGxvY2FsZSBpbmZvIHN0aWxsXG4gICAgaWYgKG9wdGlvbnMucGFyc2VEYXRhID09PSB0cnVlKSB7XG4gICAgICBpbmZvLnBhdGhuYW1lID0gcGF0aG5hbWVOb0RhdGFQcmVmaXhcbiAgICB9XG4gIH1cblxuICAvLyBJZiBwcm92aWRlZCwgdXNlIHRoZSBsb2NhbGUgcm91dGUgbm9ybWFsaXplciB0byBkZXRlY3QgdGhlIGxvY2FsZSBpbnN0ZWFkXG4gIC8vIG9mIHRoZSBmdW5jdGlvbiBiZWxvdy5cbiAgaWYgKGkxOG4pIHtcbiAgICBsZXQgcmVzdWx0ID0gb3B0aW9ucy5pMThuUHJvdmlkZXJcbiAgICAgID8gb3B0aW9ucy5pMThuUHJvdmlkZXIuYW5hbHl6ZShpbmZvLnBhdGhuYW1lKVxuICAgICAgOiBub3JtYWxpemVMb2NhbGVQYXRoKGluZm8ucGF0aG5hbWUsIGkxOG4ubG9jYWxlcylcblxuICAgIGluZm8ubG9jYWxlID0gcmVzdWx0LmRldGVjdGVkTG9jYWxlXG4gICAgaW5mby5wYXRobmFtZSA9IHJlc3VsdC5wYXRobmFtZSA/PyBpbmZvLnBhdGhuYW1lXG5cbiAgICBpZiAoIXJlc3VsdC5kZXRlY3RlZExvY2FsZSAmJiBpbmZvLmJ1aWxkSWQpIHtcbiAgICAgIHJlc3VsdCA9IG9wdGlvbnMuaTE4blByb3ZpZGVyXG4gICAgICAgID8gb3B0aW9ucy5pMThuUHJvdmlkZXIuYW5hbHl6ZShwYXRobmFtZU5vRGF0YVByZWZpeClcbiAgICAgICAgOiBub3JtYWxpemVMb2NhbGVQYXRoKHBhdGhuYW1lTm9EYXRhUHJlZml4LCBpMThuLmxvY2FsZXMpXG5cbiAgICAgIGlmIChyZXN1bHQuZGV0ZWN0ZWRMb2NhbGUpIHtcbiAgICAgICAgaW5mby5sb2NhbGUgPSByZXN1bHQuZGV0ZWN0ZWRMb2NhbGVcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGluZm9cbn1cbiJdLCJuYW1lcyI6WyJnZXROZXh0UGF0aG5hbWVJbmZvIiwicGF0aG5hbWUiLCJvcHRpb25zIiwiYmFzZVBhdGgiLCJpMThuIiwidHJhaWxpbmdTbGFzaCIsIm5leHRDb25maWciLCJpbmZvIiwiZW5kc1dpdGgiLCJwYXRoSGFzUHJlZml4IiwicmVtb3ZlUGF0aFByZWZpeCIsInBhdGhuYW1lTm9EYXRhUHJlZml4Iiwic3RhcnRzV2l0aCIsInBhdGhzIiwicmVwbGFjZSIsInNwbGl0IiwiYnVpbGRJZCIsInNsaWNlIiwiam9pbiIsInBhcnNlRGF0YSIsInJlc3VsdCIsImkxOG5Qcm92aWRlciIsImFuYWx5emUiLCJub3JtYWxpemVMb2NhbGVQYXRoIiwibG9jYWxlcyIsImxvY2FsZSIsImRldGVjdGVkTG9jYWxlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/get-segment-param.js":
|
||
/*!*****************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/get-segment-param.js ***!
|
||
\*****************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getParamProperties: function() {\n return getParamProperties;\n },\n getSegmentParam: function() {\n return getSegmentParam;\n },\n isCatchAll: function() {\n return isCatchAll;\n }\n});\nconst _interceptionroutes = __webpack_require__(/*! ./interception-routes */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/interception-routes.js\");\nfunction getSegmentParam(segment) {\n const interceptionMarker = _interceptionroutes.INTERCEPTION_ROUTE_MARKERS.find((marker)=>segment.startsWith(marker));\n // if an interception marker is part of the path segment, we need to jump ahead\n // to the relevant portion for param parsing\n if (interceptionMarker) {\n segment = segment.slice(interceptionMarker.length);\n }\n if (segment.startsWith('[[...') && segment.endsWith(']]')) {\n return {\n // TODO-APP: Optional catchall does not currently work with parallel routes,\n // so for now aren't handling a potential interception marker.\n paramType: 'optional-catchall',\n paramName: segment.slice(5, -2)\n };\n }\n if (segment.startsWith('[...') && segment.endsWith(']')) {\n return {\n paramType: interceptionMarker ? `catchall-intercepted-${interceptionMarker}` : 'catchall',\n paramName: segment.slice(4, -1)\n };\n }\n if (segment.startsWith('[') && segment.endsWith(']')) {\n return {\n paramType: interceptionMarker ? `dynamic-intercepted-${interceptionMarker}` : 'dynamic',\n paramName: segment.slice(1, -1)\n };\n }\n return null;\n}\nfunction isCatchAll(type) {\n return type === 'catchall' || type === 'catchall-intercepted-(..)(..)' || type === 'catchall-intercepted-(.)' || type === 'catchall-intercepted-(..)' || type === 'catchall-intercepted-(...)' || type === 'optional-catchall';\n}\nfunction getParamProperties(paramType) {\n let repeat = false;\n let optional = false;\n switch(paramType){\n case 'catchall':\n case 'catchall-intercepted-(..)(..)':\n case 'catchall-intercepted-(.)':\n case 'catchall-intercepted-(..)':\n case 'catchall-intercepted-(...)':\n repeat = true;\n break;\n case 'optional-catchall':\n repeat = true;\n optional = true;\n break;\n case 'dynamic':\n case 'dynamic-intercepted-(..)(..)':\n case 'dynamic-intercepted-(.)':\n case 'dynamic-intercepted-(..)':\n case 'dynamic-intercepted-(...)':\n break;\n default:\n paramType;\n }\n return {\n repeat,\n optional\n };\n} //# sourceMappingURL=get-segment-param.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2dldC1zZWdtZW50LXBhcmFtLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQXVFZ0JBLGtCQUFrQjtlQUFsQkE7O0lBNURBQyxlQUFlO2VBQWZBOztJQXlDQUMsVUFBVTtlQUFWQTs7O2dEQXBEMkI7QUFXcEMsU0FBU0QsZ0JBQWdCRSxPQUFlO0lBQzdDLE1BQU1DLHFCQUFxQkMsb0JBQUFBLDBCQUEwQixDQUFDQyxJQUFJLENBQUMsQ0FBQ0MsU0FDMURKLFFBQVFLLFVBQVUsQ0FBQ0Q7SUFHckIsK0VBQStFO0lBQy9FLDRDQUE0QztJQUM1QyxJQUFJSCxvQkFBb0I7UUFDdEJELFVBQVVBLFFBQVFNLEtBQUssQ0FBQ0wsbUJBQW1CTSxNQUFNO0lBQ25EO0lBRUEsSUFBSVAsUUFBUUssVUFBVSxDQUFDLFlBQVlMLFFBQVFRLFFBQVEsQ0FBQyxPQUFPO1FBQ3pELE9BQU87WUFDTCw0RUFBNEU7WUFDNUUsOERBQThEO1lBQzlEQyxXQUFXO1lBQ1hDLFdBQVdWLFFBQVFNLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDL0I7SUFDRjtJQUVBLElBQUlOLFFBQVFLLFVBQVUsQ0FBQyxXQUFXTCxRQUFRUSxRQUFRLENBQUMsTUFBTTtRQUN2RCxPQUFPO1lBQ0xDLFdBQVdSLHFCQUNQLENBQUMscUJBQXFCLEVBQUVBLG9CQUFvQixHQUM1QztZQUNKUyxXQUFXVixRQUFRTSxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQy9CO0lBQ0Y7SUFFQSxJQUFJTixRQUFRSyxVQUFVLENBQUMsUUFBUUwsUUFBUVEsUUFBUSxDQUFDLE1BQU07UUFDcEQsT0FBTztZQUNMQyxXQUFXUixxQkFDUCxDQUFDLG9CQUFvQixFQUFFQSxvQkFBb0IsR0FDM0M7WUFDSlMsV0FBV1YsUUFBUU0sS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUMvQjtJQUNGO0lBRUEsT0FBTztBQUNUO0FBRU8sU0FBU1AsV0FDZFksSUFBdUI7SUFRdkIsT0FDRUEsU0FBUyxjQUNUQSxTQUFTLG1DQUNUQSxTQUFTLDhCQUNUQSxTQUFTLCtCQUNUQSxTQUFTLGdDQUNUQSxTQUFTO0FBRWI7QUFFTyxTQUFTZCxtQkFBbUJZLFNBQTRCO0lBSTdELElBQUlHLFNBQVM7SUFDYixJQUFJQyxXQUFXO0lBRWYsT0FBUUo7UUFDTixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztZQUNIRyxTQUFTO1lBQ1Q7UUFDRixLQUFLO1lBQ0hBLFNBQVM7WUFDVEMsV0FBVztZQUNYO1FBQ0YsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7WUFDSDtRQUNGO1lBQ0VKO0lBQ0o7SUFFQSxPQUFPO1FBQUVHO1FBQVFDO0lBQVM7QUFDNUIiLCJzb3VyY2VzIjpbIi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZ2V0LXNlZ21lbnQtcGFyYW0udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTIH0gZnJvbSAnLi9pbnRlcmNlcHRpb24tcm91dGVzJ1xuaW1wb3J0IHR5cGUgeyBEeW5hbWljUGFyYW1UeXBlcyB9IGZyb20gJy4uLy4uL2FwcC1yb3V0ZXItdHlwZXMnXG5cbmV4cG9ydCB0eXBlIFNlZ21lbnRQYXJhbSA9IHtcbiAgcGFyYW1OYW1lOiBzdHJpbmdcbiAgcGFyYW1UeXBlOiBEeW5hbWljUGFyYW1UeXBlc1xufVxuXG4vKipcbiAqIFBhcnNlIGR5bmFtaWMgcm91dGUgc2VnbWVudCB0byB0eXBlIG9mIHBhcmFtZXRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VnbWVudFBhcmFtKHNlZ21lbnQ6IHN0cmluZyk6IFNlZ21lbnRQYXJhbSB8IG51bGwge1xuICBjb25zdCBpbnRlcmNlcHRpb25NYXJrZXIgPSBJTlRFUkNFUFRJT05fUk9VVEVfTUFSS0VSUy5maW5kKChtYXJrZXIpID0+XG4gICAgc2VnbWVudC5zdGFydHNXaXRoKG1hcmtlcilcbiAgKVxuXG4gIC8vIGlmIGFuIGludGVyY2VwdGlvbiBtYXJrZXIgaXMgcGFydCBvZiB0aGUgcGF0aCBzZWdtZW50LCB3ZSBuZWVkIHRvIGp1bXAgYWhlYWRcbiAgLy8gdG8gdGhlIHJlbGV2YW50IHBvcnRpb24gZm9yIHBhcmFtIHBhcnNpbmdcbiAgaWYgKGludGVyY2VwdGlvbk1hcmtlcikge1xuICAgIHNlZ21lbnQgPSBzZWdtZW50LnNsaWNlKGludGVyY2VwdGlvbk1hcmtlci5sZW5ndGgpXG4gIH1cblxuICBpZiAoc2VnbWVudC5zdGFydHNXaXRoKCdbWy4uLicpICYmIHNlZ21lbnQuZW5kc1dpdGgoJ11dJykpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gVE9ETy1BUFA6IE9wdGlvbmFsIGNhdGNoYWxsIGRvZXMgbm90IGN1cnJlbnRseSB3b3JrIHdpdGggcGFyYWxsZWwgcm91dGVzLFxuICAgICAgLy8gc28gZm9yIG5vdyBhcmVuJ3QgaGFuZGxpbmcgYSBwb3RlbnRpYWwgaW50ZXJjZXB0aW9uIG1hcmtlci5cbiAgICAgIHBhcmFtVHlwZTogJ29wdGlvbmFsLWNhdGNoYWxsJyxcbiAgICAgIHBhcmFtTmFtZTogc2VnbWVudC5zbGljZSg1LCAtMiksXG4gICAgfVxuICB9XG5cbiAgaWYgKHNlZ21lbnQuc3RhcnRzV2l0aCgnWy4uLicpICYmIHNlZ21lbnQuZW5kc1dpdGgoJ10nKSkge1xuICAgIHJldHVybiB7XG4gICAgICBwYXJhbVR5cGU6IGludGVyY2VwdGlvbk1hcmtlclxuICAgICAgICA/IGBjYXRjaGFsbC1pbnRlcmNlcHRlZC0ke2ludGVyY2VwdGlvbk1hcmtlcn1gXG4gICAgICAgIDogJ2NhdGNoYWxsJyxcbiAgICAgIHBhcmFtTmFtZTogc2VnbWVudC5zbGljZSg0LCAtMSksXG4gICAgfVxuICB9XG5cbiAgaWYgKHNlZ21lbnQuc3RhcnRzV2l0aCgnWycpICYmIHNlZ21lbnQuZW5kc1dpdGgoJ10nKSkge1xuICAgIHJldHVybiB7XG4gICAgICBwYXJhbVR5cGU6IGludGVyY2VwdGlvbk1hcmtlclxuICAgICAgICA/IGBkeW5hbWljLWludGVyY2VwdGVkLSR7aW50ZXJjZXB0aW9uTWFya2VyfWBcbiAgICAgICAgOiAnZHluYW1pYycsXG4gICAgICBwYXJhbU5hbWU6IHNlZ21lbnQuc2xpY2UoMSwgLTEpLFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NhdGNoQWxsKFxuICB0eXBlOiBEeW5hbWljUGFyYW1UeXBlc1xuKTogdHlwZSBpc1xuICB8ICdjYXRjaGFsbCdcbiAgfCAnY2F0Y2hhbGwtaW50ZXJjZXB0ZWQtKC4uKSguLiknXG4gIHwgJ2NhdGNoYWxsLWludGVyY2VwdGVkLSguKSdcbiAgfCAnY2F0Y2hhbGwtaW50ZXJjZXB0ZWQtKC4uKSdcbiAgfCAnY2F0Y2hhbGwtaW50ZXJjZXB0ZWQtKC4uLiknXG4gIHwgJ29wdGlvbmFsLWNhdGNoYWxsJyB7XG4gIHJldHVybiAoXG4gICAgdHlwZSA9PT0gJ2NhdGNoYWxsJyB8fFxuICAgIHR5cGUgPT09ICdjYXRjaGFsbC1pbnRlcmNlcHRlZC0oLi4pKC4uKScgfHxcbiAgICB0eXBlID09PSAnY2F0Y2hhbGwtaW50ZXJjZXB0ZWQtKC4pJyB8fFxuICAgIHR5cGUgPT09ICdjYXRjaGFsbC1pbnRlcmNlcHRlZC0oLi4pJyB8fFxuICAgIHR5cGUgPT09ICdjYXRjaGFsbC1pbnRlcmNlcHRlZC0oLi4uKScgfHxcbiAgICB0eXBlID09PSAnb3B0aW9uYWwtY2F0Y2hhbGwnXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBhcmFtUHJvcGVydGllcyhwYXJhbVR5cGU6IER5bmFtaWNQYXJhbVR5cGVzKToge1xuICByZXBlYXQ6IGJvb2xlYW5cbiAgb3B0aW9uYWw6IGJvb2xlYW5cbn0ge1xuICBsZXQgcmVwZWF0ID0gZmFsc2VcbiAgbGV0IG9wdGlvbmFsID0gZmFsc2VcblxuICBzd2l0Y2ggKHBhcmFtVHlwZSkge1xuICAgIGNhc2UgJ2NhdGNoYWxsJzpcbiAgICBjYXNlICdjYXRjaGFsbC1pbnRlcmNlcHRlZC0oLi4pKC4uKSc6XG4gICAgY2FzZSAnY2F0Y2hhbGwtaW50ZXJjZXB0ZWQtKC4pJzpcbiAgICBjYXNlICdjYXRjaGFsbC1pbnRlcmNlcHRlZC0oLi4pJzpcbiAgICBjYXNlICdjYXRjaGFsbC1pbnRlcmNlcHRlZC0oLi4uKSc6XG4gICAgICByZXBlYXQgPSB0cnVlXG4gICAgICBicmVha1xuICAgIGNhc2UgJ29wdGlvbmFsLWNhdGNoYWxsJzpcbiAgICAgIHJlcGVhdCA9IHRydWVcbiAgICAgIG9wdGlvbmFsID0gdHJ1ZVxuICAgICAgYnJlYWtcbiAgICBjYXNlICdkeW5hbWljJzpcbiAgICBjYXNlICdkeW5hbWljLWludGVyY2VwdGVkLSguLikoLi4pJzpcbiAgICBjYXNlICdkeW5hbWljLWludGVyY2VwdGVkLSguKSc6XG4gICAgY2FzZSAnZHluYW1pYy1pbnRlcmNlcHRlZC0oLi4pJzpcbiAgICBjYXNlICdkeW5hbWljLWludGVyY2VwdGVkLSguLi4pJzpcbiAgICAgIGJyZWFrXG4gICAgZGVmYXVsdDpcbiAgICAgIHBhcmFtVHlwZSBzYXRpc2ZpZXMgbmV2ZXJcbiAgfVxuXG4gIHJldHVybiB7IHJlcGVhdCwgb3B0aW9uYWwgfVxufVxuIl0sIm5hbWVzIjpbImdldFBhcmFtUHJvcGVydGllcyIsImdldFNlZ21lbnRQYXJhbSIsImlzQ2F0Y2hBbGwiLCJzZWdtZW50IiwiaW50ZXJjZXB0aW9uTWFya2VyIiwiSU5URVJDRVBUSU9OX1JPVVRFX01BUktFUlMiLCJmaW5kIiwibWFya2VyIiwic3RhcnRzV2l0aCIsInNsaWNlIiwibGVuZ3RoIiwiZW5kc1dpdGgiLCJwYXJhbVR5cGUiLCJwYXJhbU5hbWUiLCJ0eXBlIiwicmVwZWF0Iiwib3B0aW9uYWwiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/get-segment-param.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/html-bots.js":
|
||
/*!*********************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/html-bots.js ***!
|
||
\*********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("// This regex contains the bots that we need to do a blocking render for and can't safely stream the response\n// due to how they parse the DOM. For example, they might explicitly check for metadata in the `head` tag, so we can't stream metadata tags after the `head` was sent.\n// Note: The pattern [\\w-]+-Google captures all Google crawlers with \"-Google\" suffix (e.g., Mediapartners-Google, AdsBot-Google, Storebot-Google)\n// as well as crawlers starting with \"Google-\" (e.g., Google-PageRenderer, Google-InspectionTool)\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"HTML_LIMITED_BOT_UA_RE\", ({\n enumerable: true,\n get: function() {\n return HTML_LIMITED_BOT_UA_RE;\n }\n}));\nconst HTML_LIMITED_BOT_UA_RE = /[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight/i; //# sourceMappingURL=html-bots.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2h0bWwtYm90cy5qcyIsIm1hcHBpbmdzIjoiQUFBQSw2R0FBNkc7QUFDN0csc0tBQXNLO0FBQ3RLLGtKQUFrSjtBQUNsSixpR0FBaUc7Ozs7OzBEQUNwRkE7OztlQUFBQTs7O0FBQU4sTUFBTUEseUJBQ1giLCJzb3VyY2VzIjpbIi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaHRtbC1ib3RzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgcmVnZXggY29udGFpbnMgdGhlIGJvdHMgdGhhdCB3ZSBuZWVkIHRvIGRvIGEgYmxvY2tpbmcgcmVuZGVyIGZvciBhbmQgY2FuJ3Qgc2FmZWx5IHN0cmVhbSB0aGUgcmVzcG9uc2Vcbi8vIGR1ZSB0byBob3cgdGhleSBwYXJzZSB0aGUgRE9NLiBGb3IgZXhhbXBsZSwgdGhleSBtaWdodCBleHBsaWNpdGx5IGNoZWNrIGZvciBtZXRhZGF0YSBpbiB0aGUgYGhlYWRgIHRhZywgc28gd2UgY2FuJ3Qgc3RyZWFtIG1ldGFkYXRhIHRhZ3MgYWZ0ZXIgdGhlIGBoZWFkYCB3YXMgc2VudC5cbi8vIE5vdGU6IFRoZSBwYXR0ZXJuIFtcXHctXSstR29vZ2xlIGNhcHR1cmVzIGFsbCBHb29nbGUgY3Jhd2xlcnMgd2l0aCBcIi1Hb29nbGVcIiBzdWZmaXggKGUuZy4sIE1lZGlhcGFydG5lcnMtR29vZ2xlLCBBZHNCb3QtR29vZ2xlLCBTdG9yZWJvdC1Hb29nbGUpXG4vLyBhcyB3ZWxsIGFzIGNyYXdsZXJzIHN0YXJ0aW5nIHdpdGggXCJHb29nbGUtXCIgKGUuZy4sIEdvb2dsZS1QYWdlUmVuZGVyZXIsIEdvb2dsZS1JbnNwZWN0aW9uVG9vbClcbmV4cG9ydCBjb25zdCBIVE1MX0xJTUlURURfQk9UX1VBX1JFID1cbiAgL1tcXHctXSstR29vZ2xlfEdvb2dsZS1bXFx3LV0rfENocm9tZS1MaWdodGhvdXNlfFNsdXJwfER1Y2tEdWNrQm90fGJhaWR1c3BpZGVyfHlhbmRleHxzb2dvdXxiaXRseWJvdHx0dW1ibHJ8dmtTaGFyZXxxdW9yYSBsaW5rIHByZXZpZXd8cmVkZGl0Ym90fGlhX2FyY2hpdmVyfEJpbmdib3R8QmluZ1ByZXZpZXd8YXBwbGVib3R8ZmFjZWJvb2tleHRlcm5hbGhpdHxmYWNlYm9va2NhdGFsb2d8VHdpdHRlcmJvdHxMaW5rZWRJbkJvdHxTbGFja2JvdHxEaXNjb3JkYm90fFdoYXRzQXBwfFNreXBlVXJpUHJldmlld3xZZXRpfGdvb2dsZXdlYmxpZ2h0L2lcbiJdLCJuYW1lcyI6WyJIVE1MX0xJTUlURURfQk9UX1VBX1JFIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/html-bots.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/interception-prefix-from-param-type.js":
|
||
/*!***********************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/interception-prefix-from-param-type.js ***!
|
||
\***********************************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"interceptionPrefixFromParamType\", ({\n enumerable: true,\n get: function() {\n return interceptionPrefixFromParamType;\n }\n}));\nfunction interceptionPrefixFromParamType(paramType) {\n switch(paramType){\n case 'catchall-intercepted-(..)(..)':\n case 'dynamic-intercepted-(..)(..)':\n return '(..)(..)';\n case 'catchall-intercepted-(.)':\n case 'dynamic-intercepted-(.)':\n return '(.)';\n case 'catchall-intercepted-(..)':\n case 'dynamic-intercepted-(..)':\n return '(..)';\n case 'catchall-intercepted-(...)':\n case 'dynamic-intercepted-(...)':\n return '(...)';\n case 'catchall':\n case 'dynamic':\n case 'optional-catchall':\n default:\n return null;\n }\n} //# sourceMappingURL=interception-prefix-from-param-type.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2ludGVyY2VwdGlvbi1wcmVmaXgtZnJvbS1wYXJhbS10eXBlLmpzIiwibWFwcGluZ3MiOiI7Ozs7bUVBRWdCQTs7O2VBQUFBOzs7QUFBVCxTQUFTQSxnQ0FDZEMsU0FBNEI7SUFFNUIsT0FBUUE7UUFDTixLQUFLO1FBQ0wsS0FBSztZQUNILE9BQU87UUFDVCxLQUFLO1FBQ0wsS0FBSztZQUNILE9BQU87UUFDVCxLQUFLO1FBQ0wsS0FBSztZQUNILE9BQU87UUFDVCxLQUFLO1FBQ0wsS0FBSztZQUNILE9BQU87UUFDVCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTDtZQUNFLE9BQU87SUFDWDtBQUNGIiwic291cmNlcyI6WyIvc3JjL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2ludGVyY2VwdGlvbi1wcmVmaXgtZnJvbS1wYXJhbS10eXBlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRHluYW1pY1BhcmFtVHlwZXMgfSBmcm9tICcuLi8uLi9hcHAtcm91dGVyLXR5cGVzJ1xuXG5leHBvcnQgZnVuY3Rpb24gaW50ZXJjZXB0aW9uUHJlZml4RnJvbVBhcmFtVHlwZShcbiAgcGFyYW1UeXBlOiBEeW5hbWljUGFyYW1UeXBlc1xuKTogc3RyaW5nIHwgbnVsbCB7XG4gIHN3aXRjaCAocGFyYW1UeXBlKSB7XG4gICAgY2FzZSAnY2F0Y2hhbGwtaW50ZXJjZXB0ZWQtKC4uKSguLiknOlxuICAgIGNhc2UgJ2R5bmFtaWMtaW50ZXJjZXB0ZWQtKC4uKSguLiknOlxuICAgICAgcmV0dXJuICcoLi4pKC4uKSdcbiAgICBjYXNlICdjYXRjaGFsbC1pbnRlcmNlcHRlZC0oLiknOlxuICAgIGNhc2UgJ2R5bmFtaWMtaW50ZXJjZXB0ZWQtKC4pJzpcbiAgICAgIHJldHVybiAnKC4pJ1xuICAgIGNhc2UgJ2NhdGNoYWxsLWludGVyY2VwdGVkLSguLiknOlxuICAgIGNhc2UgJ2R5bmFtaWMtaW50ZXJjZXB0ZWQtKC4uKSc6XG4gICAgICByZXR1cm4gJyguLiknXG4gICAgY2FzZSAnY2F0Y2hhbGwtaW50ZXJjZXB0ZWQtKC4uLiknOlxuICAgIGNhc2UgJ2R5bmFtaWMtaW50ZXJjZXB0ZWQtKC4uLiknOlxuICAgICAgcmV0dXJuICcoLi4uKSdcbiAgICBjYXNlICdjYXRjaGFsbCc6XG4gICAgY2FzZSAnZHluYW1pYyc6XG4gICAgY2FzZSAnb3B0aW9uYWwtY2F0Y2hhbGwnOlxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbFxuICB9XG59XG4iXSwibmFtZXMiOlsiaW50ZXJjZXB0aW9uUHJlZml4RnJvbVBhcmFtVHlwZSIsInBhcmFtVHlwZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/interception-prefix-from-param-type.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/interception-routes.js":
|
||
/*!*******************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/interception-routes.js ***!
|
||
\*******************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n INTERCEPTION_ROUTE_MARKERS: function() {\n return INTERCEPTION_ROUTE_MARKERS;\n },\n extractInterceptionRouteInformation: function() {\n return extractInterceptionRouteInformation;\n },\n isInterceptionRouteAppPath: function() {\n return isInterceptionRouteAppPath;\n }\n});\nconst _apppaths = __webpack_require__(/*! ./app-paths */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/app-paths.js\");\nconst INTERCEPTION_ROUTE_MARKERS = [\n '(..)(..)',\n '(.)',\n '(..)',\n '(...)'\n];\nfunction isInterceptionRouteAppPath(path) {\n // TODO-APP: add more serious validation\n return path.split('/').find((segment)=>INTERCEPTION_ROUTE_MARKERS.find((m)=>segment.startsWith(m))) !== undefined;\n}\nfunction extractInterceptionRouteInformation(path) {\n let interceptingRoute;\n let marker;\n let interceptedRoute;\n for (const segment of path.split('/')){\n marker = INTERCEPTION_ROUTE_MARKERS.find((m)=>segment.startsWith(m));\n if (marker) {\n ;\n [interceptingRoute, interceptedRoute] = path.split(marker, 2);\n break;\n }\n }\n if (!interceptingRoute || !marker || !interceptedRoute) {\n throw Object.defineProperty(new Error(`Invalid interception route: ${path}. Must be in the format /<intercepting route>/(..|...|..)(..)/<intercepted route>`), \"__NEXT_ERROR_CODE\", {\n value: \"E269\",\n enumerable: false,\n configurable: true\n });\n }\n interceptingRoute = (0, _apppaths.normalizeAppPath)(interceptingRoute) // normalize the path, e.g. /(blog)/feed -> /feed\n ;\n switch(marker){\n case '(.)':\n // (.) indicates that we should match with sibling routes, so we just need to append the intercepted route to the intercepting route\n if (interceptingRoute === '/') {\n interceptedRoute = `/${interceptedRoute}`;\n } else {\n interceptedRoute = interceptingRoute + '/' + interceptedRoute;\n }\n break;\n case '(..)':\n // (..) indicates that we should match at one level up, so we need to remove the last segment of the intercepting route\n if (interceptingRoute === '/') {\n throw Object.defineProperty(new Error(`Invalid interception route: ${path}. Cannot use (..) marker at the root level, use (.) instead.`), \"__NEXT_ERROR_CODE\", {\n value: \"E207\",\n enumerable: false,\n configurable: true\n });\n }\n interceptedRoute = interceptingRoute.split('/').slice(0, -1).concat(interceptedRoute).join('/');\n break;\n case '(...)':\n // (...) will match the route segment in the root directory, so we need to use the root directory to prepend the intercepted route\n interceptedRoute = '/' + interceptedRoute;\n break;\n case '(..)(..)':\n // (..)(..) indicates that we should match at two levels up, so we need to remove the last two segments of the intercepting route\n const splitInterceptingRoute = interceptingRoute.split('/');\n if (splitInterceptingRoute.length <= 2) {\n throw Object.defineProperty(new Error(`Invalid interception route: ${path}. Cannot use (..)(..) marker at the root level or one level up.`), \"__NEXT_ERROR_CODE\", {\n value: \"E486\",\n enumerable: false,\n configurable: true\n });\n }\n interceptedRoute = splitInterceptingRoute.slice(0, -2).concat(interceptedRoute).join('/');\n break;\n default:\n throw Object.defineProperty(new Error('Invariant: unexpected marker'), \"__NEXT_ERROR_CODE\", {\n value: \"E112\",\n enumerable: false,\n configurable: true\n });\n }\n return {\n interceptingRoute,\n interceptedRoute\n };\n} //# sourceMappingURL=interception-routes.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2ludGVyY2VwdGlvbi1yb3V0ZXMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBR2FBLDBCQUEwQjtlQUExQkE7O0lBbUNHQyxtQ0FBbUM7ZUFBbkNBOztJQTFCQUMsMEJBQTBCO2VBQTFCQTs7O3NDQVppQjtBQUcxQixNQUFNRiw2QkFBNkI7SUFDeEM7SUFDQTtJQUNBO0lBQ0E7Q0FDRDtBQUlNLFNBQVNFLDJCQUEyQkMsSUFBWTtJQUNyRCx3Q0FBd0M7SUFDeEMsT0FDRUEsS0FDR0MsS0FBSyxDQUFDLEtBQ05DLElBQUksQ0FBQyxDQUFDQyxVQUNMTiwyQkFBMkJLLElBQUksQ0FBQyxDQUFDRSxJQUFNRCxRQUFRRSxVQUFVLENBQUNELFNBQ3RERTtBQUVaO0FBaUJPLFNBQVNSLG9DQUNkRSxJQUFZO0lBRVosSUFBSU87SUFDSixJQUFJQztJQUNKLElBQUlDO0lBRUosS0FBSyxNQUFNTixXQUFXSCxLQUFLQyxLQUFLLENBQUMsS0FBTTtRQUNyQ08sU0FBU1gsMkJBQTJCSyxJQUFJLENBQUMsQ0FBQ0UsSUFBTUQsUUFBUUUsVUFBVSxDQUFDRDtRQUNuRSxJQUFJSSxRQUFROztZQUNULENBQUNELG1CQUFtQkUsaUJBQWlCLEdBQUdULEtBQUtDLEtBQUssQ0FBQ08sUUFBUTtZQUM1RDtRQUNGO0lBQ0Y7SUFFQSxJQUFJLENBQUNELHFCQUFxQixDQUFDQyxVQUFVLENBQUNDLGtCQUFrQjtRQUN0RCxNQUFNLHFCQUVMLENBRkssSUFBSUMsTUFDUixDQUFDLDRCQUE0QixFQUFFVixLQUFLLGlGQUFpRixDQUFDLEdBRGxIO21CQUFBO3dCQUFBOzBCQUFBO1FBRU47SUFDRjtJQUVBTyxvQkFBb0JJLENBQUFBLEdBQUFBLFVBQUFBLGdCQUFBQSxFQUFpQkosbUJBQW1CLGlEQUFpRDs7SUFFekcsT0FBUUM7UUFDTixLQUFLO1lBQ0gsb0lBQW9JO1lBQ3BJLElBQUlELHNCQUFzQixLQUFLO2dCQUM3QkUsbUJBQW1CLENBQUMsQ0FBQyxFQUFFQSxrQkFBa0I7WUFDM0MsT0FBTztnQkFDTEEsbUJBQW1CRixvQkFBb0IsTUFBTUU7WUFDL0M7WUFDQTtRQUNGLEtBQUs7WUFDSCx1SEFBdUg7WUFDdkgsSUFBSUYsc0JBQXNCLEtBQUs7Z0JBQzdCLE1BQU0scUJBRUwsQ0FGSyxJQUFJRyxNQUNSLENBQUMsNEJBQTRCLEVBQUVWLEtBQUssNERBQTRELENBQUMsR0FEN0Y7MkJBQUE7Z0NBQUE7a0NBQUE7Z0JBRU47WUFDRjtZQUNBUyxtQkFBbUJGLGtCQUNoQk4sS0FBSyxDQUFDLEtBQ05XLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FDVkMsTUFBTSxDQUFDSixrQkFDUEssSUFBSSxDQUFDO1lBQ1I7UUFDRixLQUFLO1lBQ0gsa0lBQWtJO1lBQ2xJTCxtQkFBbUIsTUFBTUE7WUFDekI7UUFDRixLQUFLO1lBQ0gsaUlBQWlJO1lBRWpJLE1BQU1NLHlCQUF5QlIsa0JBQWtCTixLQUFLLENBQUM7WUFDdkQsSUFBSWMsdUJBQXVCQyxNQUFNLElBQUksR0FBRztnQkFDdEMsTUFBTSxxQkFFTCxDQUZLLElBQUlOLE1BQ1IsQ0FBQyw0QkFBNEIsRUFBRVYsS0FBSywrREFBK0QsQ0FBQyxHQURoRzsyQkFBQTtnQ0FBQTtrQ0FBQTtnQkFFTjtZQUNGO1lBRUFTLG1CQUFtQk0sdUJBQ2hCSCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQ1ZDLE1BQU0sQ0FBQ0osa0JBQ1BLLElBQUksQ0FBQztZQUNSO1FBQ0Y7WUFDRSxNQUFNLHFCQUF5QyxDQUF6QyxJQUFJSixNQUFNLGlDQUFWO3VCQUFBOzRCQUFBOzhCQUFBO1lBQXdDO0lBQ2xEO0lBRUEsT0FBTztRQUFFSDtRQUFtQkU7SUFBaUI7QUFDL0MiLCJzb3VyY2VzIjpbIi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaW50ZXJjZXB0aW9uLXJvdXRlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBub3JtYWxpemVBcHBQYXRoIH0gZnJvbSAnLi9hcHAtcGF0aHMnXG5cbi8vIG9yZGVyIG1hdHRlcnMgaGVyZSwgdGhlIGZpcnN0IG1hdGNoIHdpbGwgYmUgdXNlZFxuZXhwb3J0IGNvbnN0IElOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTID0gW1xuICAnKC4uKSguLiknLFxuICAnKC4pJyxcbiAgJyguLiknLFxuICAnKC4uLiknLFxuXSBhcyBjb25zdFxuXG5leHBvcnQgdHlwZSBJbnRlcmNlcHRpb25NYXJrZXIgPSAodHlwZW9mIElOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTKVtudW1iZXJdXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ludGVyY2VwdGlvblJvdXRlQXBwUGF0aChwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgLy8gVE9ETy1BUFA6IGFkZCBtb3JlIHNlcmlvdXMgdmFsaWRhdGlvblxuICByZXR1cm4gKFxuICAgIHBhdGhcbiAgICAgIC5zcGxpdCgnLycpXG4gICAgICAuZmluZCgoc2VnbWVudCkgPT5cbiAgICAgICAgSU5URVJDRVBUSU9OX1JPVVRFX01BUktFUlMuZmluZCgobSkgPT4gc2VnbWVudC5zdGFydHNXaXRoKG0pKVxuICAgICAgKSAhPT0gdW5kZWZpbmVkXG4gIClcbn1cblxudHlwZSBJbnRlcmNlcHRpb25Sb3V0ZUluZm9ybWF0aW9uID0ge1xuICAvKipcbiAgICogVGhlIGludGVyY2VwdGluZyByb3V0ZS4gVGhpcyBpcyB0aGUgcm91dGUgdGhhdCBpcyBiZWluZyBpbnRlcmNlcHRlZCBvciB0aGVcbiAgICogcm91dGUgdGhhdCB0aGUgdXNlciB3YXMgY29taW5nIGZyb20uIFRoaXMgaXMgbWF0Y2hlZCBieSB0aGUgTmV4dC1VcmxcbiAgICogaGVhZGVyLlxuICAgKi9cbiAgaW50ZXJjZXB0aW5nUm91dGU6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBUaGUgaW50ZXJjZXB0ZWQgcm91dGUuIFRoaXMgaXMgdGhlIHJvdXRlIHRoYXQgaXMgYmVpbmcgaW50ZXJjZXB0ZWQgb3IgdGhlXG4gICAqIHJvdXRlIHRoYXQgdGhlIHVzZXIgaXMgZ29pbmcgdG8uIFRoaXMgaXMgbWF0Y2hlZCBieSB0aGUgcmVxdWVzdCBwYXRobmFtZS5cbiAgICovXG4gIGludGVyY2VwdGVkUm91dGU6IHN0cmluZ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEludGVyY2VwdGlvblJvdXRlSW5mb3JtYXRpb24oXG4gIHBhdGg6IHN0cmluZ1xuKTogSW50ZXJjZXB0aW9uUm91dGVJbmZvcm1hdGlvbiB7XG4gIGxldCBpbnRlcmNlcHRpbmdSb3V0ZTogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIGxldCBtYXJrZXI6ICh0eXBlb2YgSU5URVJDRVBUSU9OX1JPVVRFX01BUktFUlMpW251bWJlcl0gfCB1bmRlZmluZWRcbiAgbGV0IGludGVyY2VwdGVkUm91dGU6IHN0cmluZyB8IHVuZGVmaW5lZFxuXG4gIGZvciAoY29uc3Qgc2VnbWVudCBvZiBwYXRoLnNwbGl0KCcvJykpIHtcbiAgICBtYXJrZXIgPSBJTlRFUkNFUFRJT05fUk9VVEVfTUFSS0VSUy5maW5kKChtKSA9PiBzZWdtZW50LnN0YXJ0c1dpdGgobSkpXG4gICAgaWYgKG1hcmtlcikge1xuICAgICAgO1tpbnRlcmNlcHRpbmdSb3V0ZSwgaW50ZXJjZXB0ZWRSb3V0ZV0gPSBwYXRoLnNwbGl0KG1hcmtlciwgMilcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKCFpbnRlcmNlcHRpbmdSb3V0ZSB8fCAhbWFya2VyIHx8ICFpbnRlcmNlcHRlZFJvdXRlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEludmFsaWQgaW50ZXJjZXB0aW9uIHJvdXRlOiAke3BhdGh9LiBNdXN0IGJlIGluIHRoZSBmb3JtYXQgLzxpbnRlcmNlcHRpbmcgcm91dGU+LyguLnwuLi58Li4pKC4uKS88aW50ZXJjZXB0ZWQgcm91dGU+YFxuICAgIClcbiAgfVxuXG4gIGludGVyY2VwdGluZ1JvdXRlID0gbm9ybWFsaXplQXBwUGF0aChpbnRlcmNlcHRpbmdSb3V0ZSkgLy8gbm9ybWFsaXplIHRoZSBwYXRoLCBlLmcuIC8oYmxvZykvZmVlZCAtPiAvZmVlZFxuXG4gIHN3aXRjaCAobWFya2VyKSB7XG4gICAgY2FzZSAnKC4pJzpcbiAgICAgIC8vICguKSBpbmRpY2F0ZXMgdGhhdCB3ZSBzaG91bGQgbWF0Y2ggd2l0aCBzaWJsaW5nIHJvdXRlcywgc28gd2UganVzdCBuZWVkIHRvIGFwcGVuZCB0aGUgaW50ZXJjZXB0ZWQgcm91dGUgdG8gdGhlIGludGVyY2VwdGluZyByb3V0ZVxuICAgICAgaWYgKGludGVyY2VwdGluZ1JvdXRlID09PSAnLycpIHtcbiAgICAgICAgaW50ZXJjZXB0ZWRSb3V0ZSA9IGAvJHtpbnRlcmNlcHRlZFJvdXRlfWBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGludGVyY2VwdGVkUm91dGUgPSBpbnRlcmNlcHRpbmdSb3V0ZSArICcvJyArIGludGVyY2VwdGVkUm91dGVcbiAgICAgIH1cbiAgICAgIGJyZWFrXG4gICAgY2FzZSAnKC4uKSc6XG4gICAgICAvLyAoLi4pIGluZGljYXRlcyB0aGF0IHdlIHNob3VsZCBtYXRjaCBhdCBvbmUgbGV2ZWwgdXAsIHNvIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBsYXN0IHNlZ21lbnQgb2YgdGhlIGludGVyY2VwdGluZyByb3V0ZVxuICAgICAgaWYgKGludGVyY2VwdGluZ1JvdXRlID09PSAnLycpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBJbnZhbGlkIGludGVyY2VwdGlvbiByb3V0ZTogJHtwYXRofS4gQ2Fubm90IHVzZSAoLi4pIG1hcmtlciBhdCB0aGUgcm9vdCBsZXZlbCwgdXNlICguKSBpbnN0ZWFkLmBcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaW50ZXJjZXB0ZWRSb3V0ZSA9IGludGVyY2VwdGluZ1JvdXRlXG4gICAgICAgIC5zcGxpdCgnLycpXG4gICAgICAgIC5zbGljZSgwLCAtMSlcbiAgICAgICAgLmNvbmNhdChpbnRlcmNlcHRlZFJvdXRlKVxuICAgICAgICAuam9pbignLycpXG4gICAgICBicmVha1xuICAgIGNhc2UgJyguLi4pJzpcbiAgICAgIC8vICguLi4pIHdpbGwgbWF0Y2ggdGhlIHJvdXRlIHNlZ21lbnQgaW4gdGhlIHJvb3QgZGlyZWN0b3J5LCBzbyB3ZSBuZWVkIHRvIHVzZSB0aGUgcm9vdCBkaXJlY3RvcnkgdG8gcHJlcGVuZCB0aGUgaW50ZXJjZXB0ZWQgcm91dGVcbiAgICAgIGludGVyY2VwdGVkUm91dGUgPSAnLycgKyBpbnRlcmNlcHRlZFJvdXRlXG4gICAgICBicmVha1xuICAgIGNhc2UgJyguLikoLi4pJzpcbiAgICAgIC8vICguLikoLi4pIGluZGljYXRlcyB0aGF0IHdlIHNob3VsZCBtYXRjaCBhdCB0d28gbGV2ZWxzIHVwLCBzbyB3ZSBuZWVkIHRvIHJlbW92ZSB0aGUgbGFzdCB0d28gc2VnbWVudHMgb2YgdGhlIGludGVyY2VwdGluZyByb3V0ZVxuXG4gICAgICBjb25zdCBzcGxpdEludGVyY2VwdGluZ1JvdXRlID0gaW50ZXJjZXB0aW5nUm91dGUuc3BsaXQoJy8nKVxuICAgICAgaWYgKHNwbGl0SW50ZXJjZXB0aW5nUm91dGUubGVuZ3RoIDw9IDIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBJbnZhbGlkIGludGVyY2VwdGlvbiByb3V0ZTogJHtwYXRofS4gQ2Fubm90IHVzZSAoLi4pKC4uKSBtYXJrZXIgYXQgdGhlIHJvb3QgbGV2ZWwgb3Igb25lIGxldmVsIHVwLmBcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBpbnRlcmNlcHRlZFJvdXRlID0gc3BsaXRJbnRlcmNlcHRpbmdSb3V0ZVxuICAgICAgICAuc2xpY2UoMCwgLTIpXG4gICAgICAgIC5jb25jYXQoaW50ZXJjZXB0ZWRSb3V0ZSlcbiAgICAgICAgLmpvaW4oJy8nKVxuICAgICAgYnJlYWtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhcmlhbnQ6IHVuZXhwZWN0ZWQgbWFya2VyJylcbiAgfVxuXG4gIHJldHVybiB7IGludGVyY2VwdGluZ1JvdXRlLCBpbnRlcmNlcHRlZFJvdXRlIH1cbn1cbiJdLCJuYW1lcyI6WyJJTlRFUkNFUFRJT05fUk9VVEVfTUFSS0VSUyIsImV4dHJhY3RJbnRlcmNlcHRpb25Sb3V0ZUluZm9ybWF0aW9uIiwiaXNJbnRlcmNlcHRpb25Sb3V0ZUFwcFBhdGgiLCJwYXRoIiwic3BsaXQiLCJmaW5kIiwic2VnbWVudCIsIm0iLCJzdGFydHNXaXRoIiwidW5kZWZpbmVkIiwiaW50ZXJjZXB0aW5nUm91dGUiLCJtYXJrZXIiLCJpbnRlcmNlcHRlZFJvdXRlIiwiRXJyb3IiLCJub3JtYWxpemVBcHBQYXRoIiwic2xpY2UiLCJjb25jYXQiLCJqb2luIiwic3BsaXRJbnRlcmNlcHRpbmdSb3V0ZSIsImxlbmd0aCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/interception-routes.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/is-bot.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/is-bot.js ***!
|
||
\******************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n HTML_LIMITED_BOT_UA_RE: function() {\n return _htmlbots.HTML_LIMITED_BOT_UA_RE;\n },\n HTML_LIMITED_BOT_UA_RE_STRING: function() {\n return HTML_LIMITED_BOT_UA_RE_STRING;\n },\n getBotType: function() {\n return getBotType;\n },\n isBot: function() {\n return isBot;\n }\n});\nconst _htmlbots = __webpack_require__(/*! ./html-bots */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/html-bots.js\");\n// Bot crawler that will spin up a headless browser and execute JS.\n// Only the main Googlebot search crawler executes JavaScript, not other Google crawlers.\n// x-ref: https://developers.google.com/search/docs/crawling-indexing/google-common-crawlers\n// This regex specifically matches \"Googlebot\" but NOT \"Mediapartners-Google\", \"AdsBot-Google\", etc.\nconst HEADLESS_BROWSER_BOT_UA_RE = /Googlebot(?!-)|Googlebot$/i;\nconst HTML_LIMITED_BOT_UA_RE_STRING = _htmlbots.HTML_LIMITED_BOT_UA_RE.source;\nfunction isDomBotUA(userAgent) {\n return HEADLESS_BROWSER_BOT_UA_RE.test(userAgent);\n}\nfunction isHtmlLimitedBotUA(userAgent) {\n return _htmlbots.HTML_LIMITED_BOT_UA_RE.test(userAgent);\n}\nfunction isBot(userAgent) {\n return isDomBotUA(userAgent) || isHtmlLimitedBotUA(userAgent);\n}\nfunction getBotType(userAgent) {\n if (isDomBotUA(userAgent)) {\n return 'dom';\n }\n if (isHtmlLimitedBotUA(userAgent)) {\n return 'html';\n }\n return undefined;\n} //# sourceMappingURL=is-bot.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2lzLWJvdC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFVU0Esc0JBQXNCO2VBQXRCQSxVQUFBQSxzQkFBc0I7O0lBRmxCQyw2QkFBNkI7ZUFBN0JBOztJQWdCR0MsVUFBVTtlQUFWQTs7SUFKQUMsS0FBSztlQUFMQTs7O3NDQXBCdUI7QUFFdkMsbUVBQW1FO0FBQ25FLHlGQUF5RjtBQUN6Riw0RkFBNEY7QUFDNUYsb0dBQW9HO0FBQ3BHLE1BQU1DLDZCQUE2QjtBQUU1QixNQUFNSCxnQ0FBZ0NELFVBQUFBLHNCQUFzQixDQUFDSyxNQUFNO0FBSTFFLFNBQVNDLFdBQVdDLFNBQWlCO0lBQ25DLE9BQU9ILDJCQUEyQkksSUFBSSxDQUFDRDtBQUN6QztBQUVBLFNBQVNFLG1CQUFtQkYsU0FBaUI7SUFDM0MsT0FBT1AsVUFBQUEsc0JBQXNCLENBQUNRLElBQUksQ0FBQ0Q7QUFDckM7QUFFTyxTQUFTSixNQUFNSSxTQUFpQjtJQUNyQyxPQUFPRCxXQUFXQyxjQUFjRSxtQkFBbUJGO0FBQ3JEO0FBRU8sU0FBU0wsV0FBV0ssU0FBaUI7SUFDMUMsSUFBSUQsV0FBV0MsWUFBWTtRQUN6QixPQUFPO0lBQ1Q7SUFDQSxJQUFJRSxtQkFBbUJGLFlBQVk7UUFDakMsT0FBTztJQUNUO0lBQ0EsT0FBT0c7QUFDVCIsInNvdXJjZXMiOlsiL3NyYy9zaGFyZWQvbGliL3JvdXRlci91dGlscy9pcy1ib3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSFRNTF9MSU1JVEVEX0JPVF9VQV9SRSB9IGZyb20gJy4vaHRtbC1ib3RzJ1xuXG4vLyBCb3QgY3Jhd2xlciB0aGF0IHdpbGwgc3BpbiB1cCBhIGhlYWRsZXNzIGJyb3dzZXIgYW5kIGV4ZWN1dGUgSlMuXG4vLyBPbmx5IHRoZSBtYWluIEdvb2dsZWJvdCBzZWFyY2ggY3Jhd2xlciBleGVjdXRlcyBKYXZhU2NyaXB0LCBub3Qgb3RoZXIgR29vZ2xlIGNyYXdsZXJzLlxuLy8geC1yZWY6IGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3NlYXJjaC9kb2NzL2NyYXdsaW5nLWluZGV4aW5nL2dvb2dsZS1jb21tb24tY3Jhd2xlcnNcbi8vIFRoaXMgcmVnZXggc3BlY2lmaWNhbGx5IG1hdGNoZXMgXCJHb29nbGVib3RcIiBidXQgTk9UIFwiTWVkaWFwYXJ0bmVycy1Hb29nbGVcIiwgXCJBZHNCb3QtR29vZ2xlXCIsIGV0Yy5cbmNvbnN0IEhFQURMRVNTX0JST1dTRVJfQk9UX1VBX1JFID0gL0dvb2dsZWJvdCg/IS0pfEdvb2dsZWJvdCQvaVxuXG5leHBvcnQgY29uc3QgSFRNTF9MSU1JVEVEX0JPVF9VQV9SRV9TVFJJTkcgPSBIVE1MX0xJTUlURURfQk9UX1VBX1JFLnNvdXJjZVxuXG5leHBvcnQgeyBIVE1MX0xJTUlURURfQk9UX1VBX1JFIH1cblxuZnVuY3Rpb24gaXNEb21Cb3RVQSh1c2VyQWdlbnQ6IHN0cmluZykge1xuICByZXR1cm4gSEVBRExFU1NfQlJPV1NFUl9CT1RfVUFfUkUudGVzdCh1c2VyQWdlbnQpXG59XG5cbmZ1bmN0aW9uIGlzSHRtbExpbWl0ZWRCb3RVQSh1c2VyQWdlbnQ6IHN0cmluZykge1xuICByZXR1cm4gSFRNTF9MSU1JVEVEX0JPVF9VQV9SRS50ZXN0KHVzZXJBZ2VudClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQm90KHVzZXJBZ2VudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc0RvbUJvdFVBKHVzZXJBZ2VudCkgfHwgaXNIdG1sTGltaXRlZEJvdFVBKHVzZXJBZ2VudClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJvdFR5cGUodXNlckFnZW50OiBzdHJpbmcpOiAnZG9tJyB8ICdodG1sJyB8IHVuZGVmaW5lZCB7XG4gIGlmIChpc0RvbUJvdFVBKHVzZXJBZ2VudCkpIHtcbiAgICByZXR1cm4gJ2RvbSdcbiAgfVxuICBpZiAoaXNIdG1sTGltaXRlZEJvdFVBKHVzZXJBZ2VudCkpIHtcbiAgICByZXR1cm4gJ2h0bWwnXG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZFxufVxuIl0sIm5hbWVzIjpbIkhUTUxfTElNSVRFRF9CT1RfVUFfUkUiLCJIVE1MX0xJTUlURURfQk9UX1VBX1JFX1NUUklORyIsImdldEJvdFR5cGUiLCJpc0JvdCIsIkhFQURMRVNTX0JST1dTRVJfQk9UX1VBX1JFIiwic291cmNlIiwiaXNEb21Cb3RVQSIsInVzZXJBZ2VudCIsInRlc3QiLCJpc0h0bWxMaW1pdGVkQm90VUEiLCJ1bmRlZmluZWQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/is-bot.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/parse-loader-tree.js":
|
||
/*!*****************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/parse-loader-tree.js ***!
|
||
\*****************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"parseLoaderTree\", ({\n enumerable: true,\n get: function() {\n return parseLoaderTree;\n }\n}));\nconst _segment = __webpack_require__(/*! ../../segment */ \"(rsc)/./node_modules/next/dist/shared/lib/segment.js\");\nfunction parseLoaderTree(tree) {\n const [segment, parallelRoutes, modules, staticSiblings] = tree;\n const { layout, template } = modules;\n let { page } = modules;\n // a __DEFAULT__ segment means that this route didn't match any of the\n // segments in the route, so we should use the default page\n page = segment === _segment.DEFAULT_SEGMENT_KEY ? modules.defaultPage : page;\n const conventionPath = layout?.[1] || template?.[1] || page?.[1];\n return {\n page,\n segment,\n modules,\n /* it can be either layout / template / page */ conventionPath,\n parallelRoutes,\n staticSiblings\n };\n} //# sourceMappingURL=parse-loader-tree.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhcnNlLWxvYWRlci10cmVlLmpzIiwibWFwcGluZ3MiOiI7Ozs7bURBR2dCQTs7O2VBQUFBOzs7cUNBSG9CO0FBRzdCLFNBQVNBLGdCQUFnQkMsSUFBZ0I7SUFDOUMsTUFBTSxDQUFDQyxTQUFTQyxnQkFBZ0JDLFNBQVNDLGVBQWUsR0FBR0o7SUFDM0QsTUFBTSxFQUFFSyxNQUFNLEVBQUVDLFFBQVEsRUFBRSxHQUFHSDtJQUM3QixJQUFJLEVBQUVJLElBQUksRUFBRSxHQUFHSjtJQUNmLHNFQUFzRTtJQUN0RSwyREFBMkQ7SUFDM0RJLE9BQU9OLFlBQVlPLFNBQUFBLG1CQUFtQixHQUFHTCxRQUFRTSxXQUFXLEdBQUdGO0lBRS9ELE1BQU1HLGlCQUFpQkwsUUFBUSxDQUFDLEVBQUUsSUFBSUMsVUFBVSxDQUFDLEVBQUUsSUFBSUMsTUFBTSxDQUFDLEVBQUU7SUFFaEUsT0FBTztRQUNMQTtRQUNBTjtRQUNBRTtRQUNBLDZDQUE2QyxHQUM3Q087UUFDQVI7UUFDQUU7SUFDRjtBQUNGIiwic291cmNlcyI6WyIvc3JjL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhcnNlLWxvYWRlci10cmVlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERFRkFVTFRfU0VHTUVOVF9LRVkgfSBmcm9tICcuLi8uLi9zZWdtZW50J1xuaW1wb3J0IHR5cGUgeyBMb2FkZXJUcmVlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmVyL2xpYi9hcHAtZGlyLW1vZHVsZSdcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTG9hZGVyVHJlZSh0cmVlOiBMb2FkZXJUcmVlKSB7XG4gIGNvbnN0IFtzZWdtZW50LCBwYXJhbGxlbFJvdXRlcywgbW9kdWxlcywgc3RhdGljU2libGluZ3NdID0gdHJlZVxuICBjb25zdCB7IGxheW91dCwgdGVtcGxhdGUgfSA9IG1vZHVsZXNcbiAgbGV0IHsgcGFnZSB9ID0gbW9kdWxlc1xuICAvLyBhIF9fREVGQVVMVF9fIHNlZ21lbnQgbWVhbnMgdGhhdCB0aGlzIHJvdXRlIGRpZG4ndCBtYXRjaCBhbnkgb2YgdGhlXG4gIC8vIHNlZ21lbnRzIGluIHRoZSByb3V0ZSwgc28gd2Ugc2hvdWxkIHVzZSB0aGUgZGVmYXVsdCBwYWdlXG4gIHBhZ2UgPSBzZWdtZW50ID09PSBERUZBVUxUX1NFR01FTlRfS0VZID8gbW9kdWxlcy5kZWZhdWx0UGFnZSA6IHBhZ2VcblxuICBjb25zdCBjb252ZW50aW9uUGF0aCA9IGxheW91dD8uWzFdIHx8IHRlbXBsYXRlPy5bMV0gfHwgcGFnZT8uWzFdXG5cbiAgcmV0dXJuIHtcbiAgICBwYWdlLFxuICAgIHNlZ21lbnQsXG4gICAgbW9kdWxlcyxcbiAgICAvKiBpdCBjYW4gYmUgZWl0aGVyIGxheW91dCAvIHRlbXBsYXRlIC8gcGFnZSAqL1xuICAgIGNvbnZlbnRpb25QYXRoLFxuICAgIHBhcmFsbGVsUm91dGVzLFxuICAgIHN0YXRpY1NpYmxpbmdzLFxuICB9XG59XG4iXSwibmFtZXMiOlsicGFyc2VMb2FkZXJUcmVlIiwidHJlZSIsInNlZ21lbnQiLCJwYXJhbGxlbFJvdXRlcyIsIm1vZHVsZXMiLCJzdGF0aWNTaWJsaW5ncyIsImxheW91dCIsInRlbXBsYXRlIiwicGFnZSIsIkRFRkFVTFRfU0VHTUVOVF9LRVkiLCJkZWZhdWx0UGFnZSIsImNvbnZlbnRpb25QYXRoIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/parse-loader-tree.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/parse-path.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/parse-path.js ***!
|
||
\**********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * Given a path this function will find the pathname, query and hash and return\n * them. This is useful to parse full paths on the client side.\n * @param path A path to parse e.g. /foo/bar?id=1#hash\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"parsePath\", ({\n enumerable: true,\n get: function() {\n return parsePath;\n }\n}));\nfunction parsePath(path) {\n const hashIndex = path.indexOf('#');\n const queryIndex = path.indexOf('?');\n const hasQuery = queryIndex > -1 && (hashIndex < 0 || queryIndex < hashIndex);\n if (hasQuery || hashIndex > -1) {\n return {\n pathname: path.substring(0, hasQuery ? queryIndex : hashIndex),\n query: hasQuery ? path.substring(queryIndex, hashIndex > -1 ? hashIndex : undefined) : '',\n hash: hashIndex > -1 ? path.slice(hashIndex) : ''\n };\n }\n return {\n pathname: path,\n query: '',\n hash: ''\n };\n} //# sourceMappingURL=parse-path.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhcnNlLXBhdGguanMiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Q0FJQzs7Ozs2Q0FDZUE7OztlQUFBQTs7O0FBQVQsU0FBU0EsVUFBVUMsSUFBWTtJQUNwQyxNQUFNQyxZQUFZRCxLQUFLRSxPQUFPLENBQUM7SUFDL0IsTUFBTUMsYUFBYUgsS0FBS0UsT0FBTyxDQUFDO0lBQ2hDLE1BQU1FLFdBQVdELGFBQWEsQ0FBQyxLQUFNRixDQUFBQSxZQUFZLEtBQUtFLGFBQWFGLFNBQUFBLENBQVE7SUFFM0UsSUFBSUcsWUFBWUgsWUFBWSxDQUFDLEdBQUc7UUFDOUIsT0FBTztZQUNMSSxVQUFVTCxLQUFLTSxTQUFTLENBQUMsR0FBR0YsV0FBV0QsYUFBYUY7WUFDcERNLE9BQU9ILFdBQ0hKLEtBQUtNLFNBQVMsQ0FBQ0gsWUFBWUYsWUFBWSxDQUFDLElBQUlBLFlBQVlPLGFBQ3hEO1lBQ0pDLE1BQU1SLFlBQVksQ0FBQyxJQUFJRCxLQUFLVSxLQUFLLENBQUNULGFBQWE7UUFDakQ7SUFDRjtJQUVBLE9BQU87UUFBRUksVUFBVUw7UUFBTU8sT0FBTztRQUFJRSxNQUFNO0lBQUc7QUFDL0MiLCJzb3VyY2VzIjpbIi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcGFyc2UtcGF0aC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdpdmVuIGEgcGF0aCB0aGlzIGZ1bmN0aW9uIHdpbGwgZmluZCB0aGUgcGF0aG5hbWUsIHF1ZXJ5IGFuZCBoYXNoIGFuZCByZXR1cm5cbiAqIHRoZW0uIFRoaXMgaXMgdXNlZnVsIHRvIHBhcnNlIGZ1bGwgcGF0aHMgb24gdGhlIGNsaWVudCBzaWRlLlxuICogQHBhcmFtIHBhdGggQSBwYXRoIHRvIHBhcnNlIGUuZy4gL2Zvby9iYXI/aWQ9MSNoYXNoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVBhdGgocGF0aDogc3RyaW5nKSB7XG4gIGNvbnN0IGhhc2hJbmRleCA9IHBhdGguaW5kZXhPZignIycpXG4gIGNvbnN0IHF1ZXJ5SW5kZXggPSBwYXRoLmluZGV4T2YoJz8nKVxuICBjb25zdCBoYXNRdWVyeSA9IHF1ZXJ5SW5kZXggPiAtMSAmJiAoaGFzaEluZGV4IDwgMCB8fCBxdWVyeUluZGV4IDwgaGFzaEluZGV4KVxuXG4gIGlmIChoYXNRdWVyeSB8fCBoYXNoSW5kZXggPiAtMSkge1xuICAgIHJldHVybiB7XG4gICAgICBwYXRobmFtZTogcGF0aC5zdWJzdHJpbmcoMCwgaGFzUXVlcnkgPyBxdWVyeUluZGV4IDogaGFzaEluZGV4KSxcbiAgICAgIHF1ZXJ5OiBoYXNRdWVyeVxuICAgICAgICA/IHBhdGguc3Vic3RyaW5nKHF1ZXJ5SW5kZXgsIGhhc2hJbmRleCA+IC0xID8gaGFzaEluZGV4IDogdW5kZWZpbmVkKVxuICAgICAgICA6ICcnLFxuICAgICAgaGFzaDogaGFzaEluZGV4ID4gLTEgPyBwYXRoLnNsaWNlKGhhc2hJbmRleCkgOiAnJyxcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBwYXRobmFtZTogcGF0aCwgcXVlcnk6ICcnLCBoYXNoOiAnJyB9XG59XG4iXSwibmFtZXMiOlsicGFyc2VQYXRoIiwicGF0aCIsImhhc2hJbmRleCIsImluZGV4T2YiLCJxdWVyeUluZGV4IiwiaGFzUXVlcnkiLCJwYXRobmFtZSIsInN1YnN0cmluZyIsInF1ZXJ5IiwidW5kZWZpbmVkIiwiaGFzaCIsInNsaWNlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/parse-path.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js":
|
||
/*!******************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js ***!
|
||
\******************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"parseRelativeUrl\", ({\n enumerable: true,\n get: function() {\n return parseRelativeUrl;\n }\n}));\nconst _utils = __webpack_require__(/*! ../../utils */ \"(rsc)/./node_modules/next/dist/shared/lib/utils.js\");\nconst _querystring = __webpack_require__(/*! ./querystring */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/querystring.js\");\nfunction parseRelativeUrl(url, base, parseQuery = true) {\n const globalBase = new URL( true ? 'http://n' : 0);\n const resolvedBase = base ? new URL(base, globalBase) : url.startsWith('.') ? new URL( true ? 'http://n' : 0) : globalBase;\n const { pathname, searchParams, search, hash, href, origin } = url.startsWith('/') ? // Not using `origin` to support other protocols\n new URL(`${resolvedBase.protocol}//${resolvedBase.host}${url}`) : new URL(url, resolvedBase);\n if (origin !== globalBase.origin) {\n throw Object.defineProperty(new Error(`invariant: invalid relative URL, router received ${url}`), \"__NEXT_ERROR_CODE\", {\n value: \"E159\",\n enumerable: false,\n configurable: true\n });\n }\n return {\n auth: null,\n host: null,\n hostname: null,\n pathname,\n port: null,\n protocol: null,\n query: parseQuery ? (0, _querystring.searchParamsToUrlQuery)(searchParams) : undefined,\n search,\n hash,\n href: href.slice(origin.length),\n // We don't know for relative URLs at this point since we set a custom, internal\n // base that isn't surfaced to users.\n slashes: null\n };\n} //# sourceMappingURL=parse-relative-url.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhcnNlLXJlbGF0aXZlLXVybC5qcyIsIm1hcHBpbmdzIjoiOzs7O29EQWtDZ0JBOzs7ZUFBQUE7OzttQ0FqQ2tCO3lDQUNLO0FBZ0NoQyxTQUFTQSxpQkFDZEMsR0FBVyxFQUNYQyxJQUFhLEVBQ2JDLGFBQWEsSUFBSTtJQUVqQixNQUFNQyxhQUFhLElBQUlDLElBQ3JCLEtBQTZCLEdBQUcsYUFBYUUsQ0FBQUE7SUFHL0MsTUFBTUMsZUFBZU4sT0FDakIsSUFBSUcsSUFBSUgsTUFBTUUsY0FDZEgsSUFBSVEsVUFBVSxDQUFDLE9BQ2IsSUFBSUosSUFDRixLQUE2QixHQUFHLGFBQWFDLENBQW9CLElBRW5FRjtJQUVOLE1BQU0sRUFBRVEsUUFBUSxFQUFFQyxZQUFZLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFSixJQUFJLEVBQUVLLE1BQU0sRUFBRSxHQUFHZixJQUFJUSxVQUFVLENBQzNFLE9BR0UsZ0RBQ2dEO0lBQ2hELElBQUlKLElBQUksR0FBR0csYUFBYVMsUUFBUSxDQUFDLEVBQUUsRUFBRVQsYUFBYVUsSUFBSSxHQUFHakIsS0FBSyxJQUM5RCxJQUFJSSxJQUFJSixLQUFLTztJQUVqQixJQUFJUSxXQUFXWixXQUFXWSxNQUFNLEVBQUU7UUFDaEMsTUFBTSxxQkFBb0UsQ0FBcEUsSUFBSUcsTUFBTSxDQUFDLGlEQUFpRCxFQUFFbEIsS0FBSyxHQUFuRTttQkFBQTt3QkFBQTswQkFBQTtRQUFtRTtJQUMzRTtJQUVBLE9BQU87UUFDTG1CLE1BQU07UUFDTkYsTUFBTTtRQUNORyxVQUFVO1FBQ1ZUO1FBQ0FVLE1BQU07UUFDTkwsVUFBVTtRQUNWTSxPQUFPcEIsYUFBYXFCLENBQUFBLEdBQUFBLGFBQUFBLHNCQUFBQSxFQUF1QlgsZ0JBQWdCWTtRQUMzRFg7UUFDQUM7UUFDQUosTUFBTUEsS0FBS2UsS0FBSyxDQUFDVixPQUFPVyxNQUFNO1FBQzlCLGdGQUFnRjtRQUNoRixxQ0FBcUM7UUFDckNDLFNBQVM7SUFDWDtBQUNGIiwic291cmNlcyI6WyIvc3JjL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhcnNlLXJlbGF0aXZlLXVybC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBhcnNlZFVybFF1ZXJ5IH0gZnJvbSAncXVlcnlzdHJpbmcnXG5pbXBvcnQgeyBnZXRMb2NhdGlvbk9yaWdpbiB9IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgc2VhcmNoUGFyYW1zVG9VcmxRdWVyeSB9IGZyb20gJy4vcXVlcnlzdHJpbmcnXG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkUmVsYXRpdmVVcmwge1xuICBhdXRoOiBzdHJpbmcgfCBudWxsXG4gIGhhc2g6IHN0cmluZ1xuICBob3N0OiBzdHJpbmcgfCBudWxsXG4gIGhvc3RuYW1lOiBzdHJpbmcgfCBudWxsXG4gIGhyZWY6IHN0cmluZ1xuICBwYXRobmFtZTogc3RyaW5nXG4gIHBvcnQ6IHN0cmluZyB8IG51bGxcbiAgcHJvdG9jb2w6IHN0cmluZyB8IG51bGxcbiAgcXVlcnk6IFBhcnNlZFVybFF1ZXJ5XG4gIHNlYXJjaDogc3RyaW5nXG4gIHNsYXNoZXM6IG51bGxcbn1cblxuLyoqXG4gKiBQYXJzZXMgcGF0aC1yZWxhdGl2ZSB1cmxzIChlLmcuIGAvaGVsbG8vd29ybGQ/Zm9vPWJhcmApLiBJZiB1cmwgaXNuJ3QgcGF0aC1yZWxhdGl2ZVxuICogKGUuZy4gYC4vaGVsbG9gKSB0aGVuIGF0IGxlYXN0IGJhc2UgbXVzdCBiZS5cbiAqIEFic29sdXRlIHVybHMgYXJlIHJlamVjdGVkIHdpdGggb25lIGV4Y2VwdGlvbiwgaW4gdGhlIGJyb3dzZXIsIGFic29sdXRlIHVybHMgdGhhdCBhcmUgb25cbiAqIHRoZSBjdXJyZW50IG9yaWdpbiB3aWxsIGJlIHBhcnNlZCBhcyByZWxhdGl2ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSZWxhdGl2ZVVybChcbiAgdXJsOiBzdHJpbmcsXG4gIGJhc2U/OiBzdHJpbmcsXG4gIHBhcnNlUXVlcnk/OiB0cnVlXG4pOiBQYXJzZWRSZWxhdGl2ZVVybFxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmVsYXRpdmVVcmwoXG4gIHVybDogc3RyaW5nLFxuICBiYXNlOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHBhcnNlUXVlcnk6IGZhbHNlXG4pOiBPbWl0PFBhcnNlZFJlbGF0aXZlVXJsLCAncXVlcnknPlxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmVsYXRpdmVVcmwoXG4gIHVybDogc3RyaW5nLFxuICBiYXNlPzogc3RyaW5nLFxuICBwYXJzZVF1ZXJ5ID0gdHJ1ZVxuKTogUGFyc2VkUmVsYXRpdmVVcmwgfCBPbWl0PFBhcnNlZFJlbGF0aXZlVXJsLCAncXVlcnknPiB7XG4gIGNvbnN0IGdsb2JhbEJhc2UgPSBuZXcgVVJMKFxuICAgIHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnID8gJ2h0dHA6Ly9uJyA6IGdldExvY2F0aW9uT3JpZ2luKClcbiAgKVxuXG4gIGNvbnN0IHJlc29sdmVkQmFzZSA9IGJhc2VcbiAgICA/IG5ldyBVUkwoYmFzZSwgZ2xvYmFsQmFzZSlcbiAgICA6IHVybC5zdGFydHNXaXRoKCcuJylcbiAgICAgID8gbmV3IFVSTChcbiAgICAgICAgICB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyA/ICdodHRwOi8vbicgOiB3aW5kb3cubG9jYXRpb24uaHJlZlxuICAgICAgICApXG4gICAgICA6IGdsb2JhbEJhc2VcblxuICBjb25zdCB7IHBhdGhuYW1lLCBzZWFyY2hQYXJhbXMsIHNlYXJjaCwgaGFzaCwgaHJlZiwgb3JpZ2luIH0gPSB1cmwuc3RhcnRzV2l0aChcbiAgICAnLydcbiAgKVxuICAgID8gLy8gJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC8vLycgd291bGQgYmUgcmVjZWl2ZWQgYXMgJy8vLycgaW4gTm9kZS5qcycgSW5jb21pbmdNZXNzYWdlXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9odHRwLmh0bWwjbWVzc2FnZXVybFxuICAgICAgLy8gTm90IHVzaW5nIGBvcmlnaW5gIHRvIHN1cHBvcnQgb3RoZXIgcHJvdG9jb2xzXG4gICAgICBuZXcgVVJMKGAke3Jlc29sdmVkQmFzZS5wcm90b2NvbH0vLyR7cmVzb2x2ZWRCYXNlLmhvc3R9JHt1cmx9YClcbiAgICA6IG5ldyBVUkwodXJsLCByZXNvbHZlZEJhc2UpXG5cbiAgaWYgKG9yaWdpbiAhPT0gZ2xvYmFsQmFzZS5vcmlnaW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFyaWFudDogaW52YWxpZCByZWxhdGl2ZSBVUkwsIHJvdXRlciByZWNlaXZlZCAke3VybH1gKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhdXRoOiBudWxsLFxuICAgIGhvc3Q6IG51bGwsXG4gICAgaG9zdG5hbWU6IG51bGwsXG4gICAgcGF0aG5hbWUsXG4gICAgcG9ydDogbnVsbCxcbiAgICBwcm90b2NvbDogbnVsbCxcbiAgICBxdWVyeTogcGFyc2VRdWVyeSA/IHNlYXJjaFBhcmFtc1RvVXJsUXVlcnkoc2VhcmNoUGFyYW1zKSA6IHVuZGVmaW5lZCxcbiAgICBzZWFyY2gsXG4gICAgaGFzaCxcbiAgICBocmVmOiBocmVmLnNsaWNlKG9yaWdpbi5sZW5ndGgpLFxuICAgIC8vIFdlIGRvbid0IGtub3cgZm9yIHJlbGF0aXZlIFVSTHMgYXQgdGhpcyBwb2ludCBzaW5jZSB3ZSBzZXQgYSBjdXN0b20sIGludGVybmFsXG4gICAgLy8gYmFzZSB0aGF0IGlzbid0IHN1cmZhY2VkIHRvIHVzZXJzLlxuICAgIHNsYXNoZXM6IG51bGwsXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJwYXJzZVJlbGF0aXZlVXJsIiwidXJsIiwiYmFzZSIsInBhcnNlUXVlcnkiLCJnbG9iYWxCYXNlIiwiVVJMIiwid2luZG93IiwiZ2V0TG9jYXRpb25PcmlnaW4iLCJyZXNvbHZlZEJhc2UiLCJzdGFydHNXaXRoIiwibG9jYXRpb24iLCJocmVmIiwicGF0aG5hbWUiLCJzZWFyY2hQYXJhbXMiLCJzZWFyY2giLCJoYXNoIiwib3JpZ2luIiwicHJvdG9jb2wiLCJob3N0IiwiRXJyb3IiLCJhdXRoIiwiaG9zdG5hbWUiLCJwb3J0IiwicXVlcnkiLCJzZWFyY2hQYXJhbXNUb1VybFF1ZXJ5IiwidW5kZWZpbmVkIiwic2xpY2UiLCJsZW5ndGgiLCJzbGFzaGVzIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js":
|
||
/*!***************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js ***!
|
||
\***************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"pathHasPrefix\", ({\n enumerable: true,\n get: function() {\n return pathHasPrefix;\n }\n}));\nconst _parsepath = __webpack_require__(/*! ./parse-path */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/parse-path.js\");\nfunction pathHasPrefix(path, prefix) {\n if (typeof path !== 'string') {\n return false;\n }\n const { pathname } = (0, _parsepath.parsePath)(path);\n return pathname === prefix || pathname.startsWith(prefix + '/');\n} //# sourceMappingURL=path-has-prefix.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhdGgtaGFzLXByZWZpeC5qcyIsIm1hcHBpbmdzIjoiOzs7O2lEQVNnQkE7OztlQUFBQTs7O3VDQVRVO0FBU25CLFNBQVNBLGNBQWNDLElBQVksRUFBRUMsTUFBYztJQUN4RCxJQUFJLE9BQU9ELFNBQVMsVUFBVTtRQUM1QixPQUFPO0lBQ1Q7SUFFQSxNQUFNLEVBQUVFLFFBQVEsRUFBRSxHQUFHQyxDQUFBQSxHQUFBQSxXQUFBQSxTQUFBQSxFQUFVSDtJQUMvQixPQUFPRSxhQUFhRCxVQUFVQyxTQUFTRSxVQUFVLENBQUNILFNBQVM7QUFDN0QiLCJzb3VyY2VzIjpbIi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcGF0aC1oYXMtcHJlZml4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhcnNlUGF0aCB9IGZyb20gJy4vcGFyc2UtcGF0aCdcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBnaXZlbiBwYXRoIHN0YXJ0cyB3aXRoIGEgZ2l2ZW4gcHJlZml4LiBJdCBlbnN1cmVzIGl0IG1hdGNoZXNcbiAqIGV4YWN0bHkgd2l0aG91dCBjb250YWluaW5nIGV4dHJhIGNoYXJzLiBlLmcuIHByZWZpeCAvZG9jcyBzaG91bGQgcmVwbGFjZVxuICogZm9yIC9kb2NzLCAvZG9jcy8sIC9kb2NzL2EgYnV0IG5vdCAvZG9jc3NzXG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAqIEBwYXJhbSBwcmVmaXggVGhlIHByZWZpeCB0byBjaGVjayBhZ2FpbnN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGF0aEhhc1ByZWZpeChwYXRoOiBzdHJpbmcsIHByZWZpeDogc3RyaW5nKSB7XG4gIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGNvbnN0IHsgcGF0aG5hbWUgfSA9IHBhcnNlUGF0aChwYXRoKVxuICByZXR1cm4gcGF0aG5hbWUgPT09IHByZWZpeCB8fCBwYXRobmFtZS5zdGFydHNXaXRoKHByZWZpeCArICcvJylcbn1cbiJdLCJuYW1lcyI6WyJwYXRoSGFzUHJlZml4IiwicGF0aCIsInByZWZpeCIsInBhdGhuYW1lIiwicGFyc2VQYXRoIiwic3RhcnRzV2l0aCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/querystring.js":
|
||
/*!***********************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/querystring.js ***!
|
||
\***********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n assign: function() {\n return assign;\n },\n searchParamsToUrlQuery: function() {\n return searchParamsToUrlQuery;\n },\n urlQueryToSearchParams: function() {\n return urlQueryToSearchParams;\n }\n});\nfunction searchParamsToUrlQuery(searchParams) {\n const query = {};\n for (const [key, value] of searchParams.entries()){\n const existing = query[key];\n if (typeof existing === 'undefined') {\n query[key] = value;\n } else if (Array.isArray(existing)) {\n existing.push(value);\n } else {\n query[key] = [\n existing,\n value\n ];\n }\n }\n return query;\n}\nfunction stringifyUrlQueryParam(param) {\n if (typeof param === 'string') {\n return param;\n }\n if (typeof param === 'number' && !isNaN(param) || typeof param === 'boolean') {\n return String(param);\n } else {\n return '';\n }\n}\nfunction urlQueryToSearchParams(query) {\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(query)){\n if (Array.isArray(value)) {\n for (const item of value){\n searchParams.append(key, stringifyUrlQueryParam(item));\n }\n } else {\n searchParams.set(key, stringifyUrlQueryParam(value));\n }\n }\n return searchParams;\n}\nfunction assign(target, ...searchParamsList) {\n for (const searchParams of searchParamsList){\n for (const key of searchParams.keys()){\n target.delete(key);\n }\n for (const [key, value] of searchParams.entries()){\n target.append(key, value);\n }\n }\n return target;\n} //# sourceMappingURL=querystring.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3F1ZXJ5c3RyaW5nLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQWdEZ0JBLE1BQU07ZUFBTkE7O0lBOUNBQyxzQkFBc0I7ZUFBdEJBOztJQWdDQUMsc0JBQXNCO2VBQXRCQTs7O0FBaENULFNBQVNELHVCQUNkRSxZQUE2QjtJQUU3QixNQUFNQyxRQUF3QixDQUFDO0lBQy9CLEtBQUssTUFBTSxDQUFDQyxLQUFLQyxNQUFNLElBQUlILGFBQWFJLE9BQU8sR0FBSTtRQUNqRCxNQUFNQyxXQUFXSixLQUFLLENBQUNDLElBQUk7UUFDM0IsSUFBSSxPQUFPRyxhQUFhLGFBQWE7WUFDbkNKLEtBQUssQ0FBQ0MsSUFBSSxHQUFHQztRQUNmLE9BQU8sSUFBSUcsTUFBTUMsT0FBTyxDQUFDRixXQUFXO1lBQ2xDQSxTQUFTRyxJQUFJLENBQUNMO1FBQ2hCLE9BQU87WUFDTEYsS0FBSyxDQUFDQyxJQUFJLEdBQUc7Z0JBQUNHO2dCQUFVRjthQUFNO1FBQ2hDO0lBQ0Y7SUFDQSxPQUFPRjtBQUNUO0FBRUEsU0FBU1EsdUJBQXVCQyxLQUFjO0lBQzVDLElBQUksT0FBT0EsVUFBVSxVQUFVO1FBQzdCLE9BQU9BO0lBQ1Q7SUFFQSxJQUNHLE9BQU9BLFVBQVUsWUFBWSxDQUFDQyxNQUFNRCxVQUNyQyxPQUFPQSxVQUFVLFdBQ2pCO1FBQ0EsT0FBT0UsT0FBT0Y7SUFDaEIsT0FBTztRQUNMLE9BQU87SUFDVDtBQUNGO0FBRU8sU0FBU1gsdUJBQXVCRSxLQUFxQjtJQUMxRCxNQUFNRCxlQUFlLElBQUlhO0lBQ3pCLEtBQUssTUFBTSxDQUFDWCxLQUFLQyxNQUFNLElBQUlXLE9BQU9WLE9BQU8sQ0FBQ0gsT0FBUTtRQUNoRCxJQUFJSyxNQUFNQyxPQUFPLENBQUNKLFFBQVE7WUFDeEIsS0FBSyxNQUFNWSxRQUFRWixNQUFPO2dCQUN4QkgsYUFBYWdCLE1BQU0sQ0FBQ2QsS0FBS08sdUJBQXVCTTtZQUNsRDtRQUNGLE9BQU87WUFDTGYsYUFBYWlCLEdBQUcsQ0FBQ2YsS0FBS08sdUJBQXVCTjtRQUMvQztJQUNGO0lBQ0EsT0FBT0g7QUFDVDtBQUVPLFNBQVNILE9BQ2RxQixNQUF1QixFQUN2QixHQUFHQyxnQkFBbUM7SUFFdEMsS0FBSyxNQUFNbkIsZ0JBQWdCbUIsaUJBQWtCO1FBQzNDLEtBQUssTUFBTWpCLE9BQU9GLGFBQWFvQixJQUFJLEdBQUk7WUFDckNGLE9BQU9HLE1BQU0sQ0FBQ25CO1FBQ2hCO1FBRUEsS0FBSyxNQUFNLENBQUNBLEtBQUtDLE1BQU0sSUFBSUgsYUFBYUksT0FBTyxHQUFJO1lBQ2pEYyxPQUFPRixNQUFNLENBQUNkLEtBQUtDO1FBQ3JCO0lBQ0Y7SUFFQSxPQUFPZTtBQUNUIiwic291cmNlcyI6WyIvc3JjL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3F1ZXJ5c3RyaW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGFyc2VkVXJsUXVlcnkgfSBmcm9tICdxdWVyeXN0cmluZydcblxuZXhwb3J0IGZ1bmN0aW9uIHNlYXJjaFBhcmFtc1RvVXJsUXVlcnkoXG4gIHNlYXJjaFBhcmFtczogVVJMU2VhcmNoUGFyYW1zXG4pOiBQYXJzZWRVcmxRdWVyeSB7XG4gIGNvbnN0IHF1ZXJ5OiBQYXJzZWRVcmxRdWVyeSA9IHt9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIHNlYXJjaFBhcmFtcy5lbnRyaWVzKCkpIHtcbiAgICBjb25zdCBleGlzdGluZyA9IHF1ZXJ5W2tleV1cbiAgICBpZiAodHlwZW9mIGV4aXN0aW5nID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcXVlcnlba2V5XSA9IHZhbHVlXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGV4aXN0aW5nKSkge1xuICAgICAgZXhpc3RpbmcucHVzaCh2YWx1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgcXVlcnlba2V5XSA9IFtleGlzdGluZywgdmFsdWVdXG4gICAgfVxuICB9XG4gIHJldHVybiBxdWVyeVxufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlVcmxRdWVyeVBhcmFtKHBhcmFtOiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcGFyYW1cbiAgfVxuXG4gIGlmIChcbiAgICAodHlwZW9mIHBhcmFtID09PSAnbnVtYmVyJyAmJiAhaXNOYU4ocGFyYW0pKSB8fFxuICAgIHR5cGVvZiBwYXJhbSA9PT0gJ2Jvb2xlYW4nXG4gICkge1xuICAgIHJldHVybiBTdHJpbmcocGFyYW0pXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICcnXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVybFF1ZXJ5VG9TZWFyY2hQYXJhbXMocXVlcnk6IFBhcnNlZFVybFF1ZXJ5KTogVVJMU2VhcmNoUGFyYW1zIHtcbiAgY29uc3Qgc2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHF1ZXJ5KSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHZhbHVlKSB7XG4gICAgICAgIHNlYXJjaFBhcmFtcy5hcHBlbmQoa2V5LCBzdHJpbmdpZnlVcmxRdWVyeVBhcmFtKGl0ZW0pKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZWFyY2hQYXJhbXMuc2V0KGtleSwgc3RyaW5naWZ5VXJsUXVlcnlQYXJhbSh2YWx1ZSkpXG4gICAgfVxuICB9XG4gIHJldHVybiBzZWFyY2hQYXJhbXNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbihcbiAgdGFyZ2V0OiBVUkxTZWFyY2hQYXJhbXMsXG4gIC4uLnNlYXJjaFBhcmFtc0xpc3Q6IFVSTFNlYXJjaFBhcmFtc1tdXG4pOiBVUkxTZWFyY2hQYXJhbXMge1xuICBmb3IgKGNvbnN0IHNlYXJjaFBhcmFtcyBvZiBzZWFyY2hQYXJhbXNMaXN0KSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2Ygc2VhcmNoUGFyYW1zLmtleXMoKSkge1xuICAgICAgdGFyZ2V0LmRlbGV0ZShrZXkpXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2Ygc2VhcmNoUGFyYW1zLmVudHJpZXMoKSkge1xuICAgICAgdGFyZ2V0LmFwcGVuZChrZXksIHZhbHVlKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXRcbn1cbiJdLCJuYW1lcyI6WyJhc3NpZ24iLCJzZWFyY2hQYXJhbXNUb1VybFF1ZXJ5IiwidXJsUXVlcnlUb1NlYXJjaFBhcmFtcyIsInNlYXJjaFBhcmFtcyIsInF1ZXJ5Iiwia2V5IiwidmFsdWUiLCJlbnRyaWVzIiwiZXhpc3RpbmciLCJBcnJheSIsImlzQXJyYXkiLCJwdXNoIiwic3RyaW5naWZ5VXJsUXVlcnlQYXJhbSIsInBhcmFtIiwiaXNOYU4iLCJTdHJpbmciLCJVUkxTZWFyY2hQYXJhbXMiLCJPYmplY3QiLCJpdGVtIiwiYXBwZW5kIiwic2V0IiwidGFyZ2V0Iiwic2VhcmNoUGFyYW1zTGlzdCIsImtleXMiLCJkZWxldGUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/querystring.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/remove-path-prefix.js":
|
||
/*!******************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/remove-path-prefix.js ***!
|
||
\******************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"removePathPrefix\", ({\n enumerable: true,\n get: function() {\n return removePathPrefix;\n }\n}));\nconst _pathhasprefix = __webpack_require__(/*! ./path-has-prefix */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js\");\nfunction removePathPrefix(path, prefix) {\n // If the path doesn't start with the prefix we can return it as is. This\n // protects us from situations where the prefix is a substring of the path\n // prefix such as:\n //\n // For prefix: /blog\n //\n // /blog -> true\n // /blog/ -> true\n // /blog/1 -> true\n // /blogging -> false\n // /blogging/ -> false\n // /blogging/1 -> false\n if (!(0, _pathhasprefix.pathHasPrefix)(path, prefix)) {\n return path;\n }\n // Remove the prefix from the path via slicing.\n const withoutPrefix = path.slice(prefix.length);\n // If the path without the prefix starts with a `/` we can return it as is.\n if (withoutPrefix.startsWith('/')) {\n return withoutPrefix;\n }\n // If the path without the prefix doesn't start with a `/` we need to add it\n // back to the path to make sure it's a valid path.\n return `/${withoutPrefix}`;\n} //# sourceMappingURL=remove-path-prefix.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JlbW92ZS1wYXRoLXByZWZpeC5qcyIsIm1hcHBpbmdzIjoiOzs7O29EQVVnQkE7OztlQUFBQTs7OzJDQVZjO0FBVXZCLFNBQVNBLGlCQUFpQkMsSUFBWSxFQUFFQyxNQUFjO0lBQzNELHlFQUF5RTtJQUN6RSwwRUFBMEU7SUFDMUUsa0JBQWtCO0lBQ2xCLEVBQUU7SUFDRixvQkFBb0I7SUFDcEIsRUFBRTtJQUNGLGtCQUFrQjtJQUNsQixtQkFBbUI7SUFDbkIsb0JBQW9CO0lBQ3BCLHVCQUF1QjtJQUN2Qix3QkFBd0I7SUFDeEIseUJBQXlCO0lBQ3pCLElBQUksQ0FBQ0MsQ0FBQUEsR0FBQUEsZUFBQUEsYUFBQUEsRUFBY0YsTUFBTUMsU0FBUztRQUNoQyxPQUFPRDtJQUNUO0lBRUEsK0NBQStDO0lBQy9DLE1BQU1HLGdCQUFnQkgsS0FBS0ksS0FBSyxDQUFDSCxPQUFPSSxNQUFNO0lBRTlDLDJFQUEyRTtJQUMzRSxJQUFJRixjQUFjRyxVQUFVLENBQUMsTUFBTTtRQUNqQyxPQUFPSDtJQUNUO0lBRUEsNEVBQTRFO0lBQzVFLG1EQUFtRDtJQUNuRCxPQUFPLENBQUMsQ0FBQyxFQUFFQSxlQUFlO0FBQzVCIiwic291cmNlcyI6WyIvc3JjL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JlbW92ZS1wYXRoLXByZWZpeC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwYXRoSGFzUHJlZml4IH0gZnJvbSAnLi9wYXRoLWhhcy1wcmVmaXgnXG5cbi8qKlxuICogR2l2ZW4gYSBwYXRoIGFuZCBhIHByZWZpeCBpdCB3aWxsIHJlbW92ZSB0aGUgcHJlZml4IHdoZW4gaXQgZXhpc3RzIGluIHRoZVxuICogZ2l2ZW4gcGF0aC4gSXQgZW5zdXJlcyBpdCBtYXRjaGVzIGV4YWN0bHkgd2l0aG91dCBjb250YWluaW5nIGV4dHJhIGNoYXJzXG4gKiBhbmQgaWYgdGhlIHByZWZpeCBpcyBub3QgdGhlcmUgaXQgd2lsbCBiZSBub29wLlxuICpcbiAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHJlbW92ZSB0aGUgcHJlZml4IGZyb20uXG4gKiBAcGFyYW0gcHJlZml4IFRoZSBwcmVmaXggdG8gYmUgcmVtb3ZlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVBhdGhQcmVmaXgocGF0aDogc3RyaW5nLCBwcmVmaXg6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIElmIHRoZSBwYXRoIGRvZXNuJ3Qgc3RhcnQgd2l0aCB0aGUgcHJlZml4IHdlIGNhbiByZXR1cm4gaXQgYXMgaXMuIFRoaXNcbiAgLy8gcHJvdGVjdHMgdXMgZnJvbSBzaXR1YXRpb25zIHdoZXJlIHRoZSBwcmVmaXggaXMgYSBzdWJzdHJpbmcgb2YgdGhlIHBhdGhcbiAgLy8gcHJlZml4IHN1Y2ggYXM6XG4gIC8vXG4gIC8vIEZvciBwcmVmaXg6IC9ibG9nXG4gIC8vXG4gIC8vICAgL2Jsb2cgLT4gdHJ1ZVxuICAvLyAgIC9ibG9nLyAtPiB0cnVlXG4gIC8vICAgL2Jsb2cvMSAtPiB0cnVlXG4gIC8vICAgL2Jsb2dnaW5nIC0+IGZhbHNlXG4gIC8vICAgL2Jsb2dnaW5nLyAtPiBmYWxzZVxuICAvLyAgIC9ibG9nZ2luZy8xIC0+IGZhbHNlXG4gIGlmICghcGF0aEhhc1ByZWZpeChwYXRoLCBwcmVmaXgpKSB7XG4gICAgcmV0dXJuIHBhdGhcbiAgfVxuXG4gIC8vIFJlbW92ZSB0aGUgcHJlZml4IGZyb20gdGhlIHBhdGggdmlhIHNsaWNpbmcuXG4gIGNvbnN0IHdpdGhvdXRQcmVmaXggPSBwYXRoLnNsaWNlKHByZWZpeC5sZW5ndGgpXG5cbiAgLy8gSWYgdGhlIHBhdGggd2l0aG91dCB0aGUgcHJlZml4IHN0YXJ0cyB3aXRoIGEgYC9gIHdlIGNhbiByZXR1cm4gaXQgYXMgaXMuXG4gIGlmICh3aXRob3V0UHJlZml4LnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgIHJldHVybiB3aXRob3V0UHJlZml4XG4gIH1cblxuICAvLyBJZiB0aGUgcGF0aCB3aXRob3V0IHRoZSBwcmVmaXggZG9lc24ndCBzdGFydCB3aXRoIGEgYC9gIHdlIG5lZWQgdG8gYWRkIGl0XG4gIC8vIGJhY2sgdG8gdGhlIHBhdGggdG8gbWFrZSBzdXJlIGl0J3MgYSB2YWxpZCBwYXRoLlxuICByZXR1cm4gYC8ke3dpdGhvdXRQcmVmaXh9YFxufVxuIl0sIm5hbWVzIjpbInJlbW92ZVBhdGhQcmVmaXgiLCJwYXRoIiwicHJlZml4IiwicGF0aEhhc1ByZWZpeCIsIndpdGhvdXRQcmVmaXgiLCJzbGljZSIsImxlbmd0aCIsInN0YXJ0c1dpdGgiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/remove-path-prefix.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js":
|
||
/*!*********************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js ***!
|
||
\*********************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * Removes the trailing slash for a given route or page path. Preserves the\n * root page. Examples:\n * - `/foo/bar/` -> `/foo/bar`\n * - `/foo/bar` -> `/foo/bar`\n * - `/` -> `/`\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"removeTrailingSlash\", ({\n enumerable: true,\n get: function() {\n return removeTrailingSlash;\n }\n}));\nfunction removeTrailingSlash(route) {\n return route.replace(/\\/$/, '') || '/';\n} //# sourceMappingURL=remove-trailing-slash.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JlbW92ZS10cmFpbGluZy1zbGFzaC5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0NBTUM7Ozs7dURBQ2VBOzs7ZUFBQUE7OztBQUFULFNBQVNBLG9CQUFvQkMsS0FBYTtJQUMvQyxPQUFPQSxNQUFNQyxPQUFPLENBQUMsT0FBTyxPQUFPO0FBQ3JDIiwic291cmNlcyI6WyIvc3JjL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JlbW92ZS10cmFpbGluZy1zbGFzaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlbW92ZXMgdGhlIHRyYWlsaW5nIHNsYXNoIGZvciBhIGdpdmVuIHJvdXRlIG9yIHBhZ2UgcGF0aC4gUHJlc2VydmVzIHRoZVxuICogcm9vdCBwYWdlLiBFeGFtcGxlczpcbiAqICAgLSBgL2Zvby9iYXIvYCAtPiBgL2Zvby9iYXJgXG4gKiAgIC0gYC9mb28vYmFyYCAtPiBgL2Zvby9iYXJgXG4gKiAgIC0gYC9gIC0+IGAvYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVHJhaWxpbmdTbGFzaChyb3V0ZTogc3RyaW5nKSB7XG4gIHJldHVybiByb3V0ZS5yZXBsYWNlKC9cXC8kLywgJycpIHx8ICcvJ1xufVxuIl0sIm5hbWVzIjpbInJlbW92ZVRyYWlsaW5nU2xhc2giLCJyb3V0ZSIsInJlcGxhY2UiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/resolve-param-value.js":
|
||
/*!*******************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/resolve-param-value.js ***!
|
||
\*******************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"resolveParamValue\", ({\n enumerable: true,\n get: function() {\n return resolveParamValue;\n }\n}));\nconst _invarianterror = __webpack_require__(/*! ../../invariant-error */ \"(rsc)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nconst _interceptionprefixfromparamtype = __webpack_require__(/*! ./interception-prefix-from-param-type */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/interception-prefix-from-param-type.js\");\n/**\n * Extracts the param value from a path segment, handling interception markers\n * based on the expected param type.\n *\n * @param pathSegment - The path segment to extract the value from\n * @param params - The current params object for resolving dynamic param references\n * @param paramType - The expected param type which may include interception marker info\n * @returns The extracted param value\n */ function getParamValueFromSegment(pathSegment, params, paramType) {\n // If the segment is dynamic, resolve it from the params object\n if (pathSegment.type === 'dynamic') {\n return params[pathSegment.param.paramName];\n }\n // If the paramType indicates this is an intercepted param, strip the marker\n // that matches the interception marker in the param type\n const interceptionPrefix = (0, _interceptionprefixfromparamtype.interceptionPrefixFromParamType)(paramType);\n if (interceptionPrefix === pathSegment.interceptionMarker) {\n return pathSegment.name.replace(pathSegment.interceptionMarker, '');\n }\n // For static segments, use the name\n return pathSegment.name;\n}\nfunction resolveParamValue(paramName, paramType, depth, route, params) {\n switch(paramType){\n case 'catchall':\n case 'optional-catchall':\n case 'catchall-intercepted-(..)(..)':\n case 'catchall-intercepted-(.)':\n case 'catchall-intercepted-(..)':\n case 'catchall-intercepted-(...)':\n // For catchall routes, derive from pathname using depth to determine\n // which segments to use\n const processedSegments = [];\n // Process segments to handle any embedded dynamic params\n for(let index = depth; index < route.segments.length; index++){\n const pathSegment = route.segments[index];\n if (pathSegment.type === 'static') {\n let value = pathSegment.name;\n // For intercepted catch-all params, strip the marker from the first segment\n const interceptionPrefix = (0, _interceptionprefixfromparamtype.interceptionPrefixFromParamType)(paramType);\n if (interceptionPrefix && index === depth && interceptionPrefix === pathSegment.interceptionMarker) {\n // Strip the interception marker from the value\n value = value.replace(pathSegment.interceptionMarker, '');\n }\n processedSegments.push(value);\n } else {\n // If the segment is a param placeholder, check if we have its value\n if (!params.hasOwnProperty(pathSegment.param.paramName)) {\n // If the segment is an optional catchall, we can break out of the\n // loop because it's optional!\n if (pathSegment.param.paramType === 'optional-catchall') {\n break;\n }\n // Unknown param placeholder in pathname - can't derive full value\n return undefined;\n }\n // If the segment matches a param, use the param value\n // We don't encode values here as that's handled during retrieval.\n const paramValue = params[pathSegment.param.paramName];\n if (Array.isArray(paramValue)) {\n processedSegments.push(...paramValue);\n } else {\n processedSegments.push(paramValue);\n }\n }\n }\n if (processedSegments.length > 0) {\n return processedSegments;\n } else if (paramType === 'optional-catchall') {\n return undefined;\n } else {\n // We shouldn't be able to match a catchall segment without any path\n // segments if it's not an optional catchall\n throw Object.defineProperty(new _invarianterror.InvariantError(`Unexpected empty path segments match for a route \"${route.pathname}\" with param \"${paramName}\" of type \"${paramType}\"`), \"__NEXT_ERROR_CODE\", {\n value: \"E931\",\n enumerable: false,\n configurable: true\n });\n }\n case 'dynamic':\n case 'dynamic-intercepted-(..)(..)':\n case 'dynamic-intercepted-(.)':\n case 'dynamic-intercepted-(..)':\n case 'dynamic-intercepted-(...)':\n // For regular dynamic parameters, take the segment at this depth\n if (depth < route.segments.length) {\n const pathSegment = route.segments[depth];\n // Check if the segment at this depth is a placeholder for an unknown param\n if (pathSegment.type === 'dynamic' && !params.hasOwnProperty(pathSegment.param.paramName)) {\n // The segment is a placeholder like [category] and we don't have the value\n return undefined;\n }\n // If the segment matches a param, use the param value from params object\n // Otherwise it's a static segment, just use it directly\n // We don't encode values here as that's handled during retrieval\n return getParamValueFromSegment(pathSegment, params, paramType);\n }\n return undefined;\n default:\n paramType;\n }\n} //# sourceMappingURL=resolve-param-value.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3Jlc29sdmUtcGFyYW0tdmFsdWUuanMiLCJtYXBwaW5ncyI6Ijs7OztxREFvRGdCQTs7O2VBQUFBOzs7NENBbERlOzZEQUtpQjtBQUVoRDs7Ozs7Ozs7Q0FRQyxHQUNELFNBQVNDLHlCQUNQQyxXQUFzQyxFQUN0Q0MsTUFBYyxFQUNkQyxTQUE0QjtJQUU1QiwrREFBK0Q7SUFDL0QsSUFBSUYsWUFBWUcsSUFBSSxLQUFLLFdBQVc7UUFDbEMsT0FBT0YsTUFBTSxDQUFDRCxZQUFZSSxLQUFLLENBQUNDLFNBQVMsQ0FBQztJQUM1QztJQUVBLDRFQUE0RTtJQUM1RSx5REFBeUQ7SUFDekQsTUFBTUMscUJBQXFCQyxDQUFBQSxHQUFBQSxpQ0FBQUEsK0JBQUFBLEVBQWdDTDtJQUMzRCxJQUFJSSx1QkFBdUJOLFlBQVlRLGtCQUFrQixFQUFFO1FBQ3pELE9BQU9SLFlBQVlTLElBQUksQ0FBQ0MsT0FBTyxDQUFDVixZQUFZUSxrQkFBa0IsRUFBRTtJQUNsRTtJQUVBLG9DQUFvQztJQUNwQyxPQUFPUixZQUFZUyxJQUFJO0FBQ3pCO0FBZU8sU0FBU1gsa0JBQ2RPLFNBQWlCLEVBQ2pCSCxTQUE0QixFQUM1QlMsS0FBYSxFQUNiQyxLQUF5QixFQUN6QlgsTUFBYztJQUVkLE9BQVFDO1FBQ04sS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1lBQ0gscUVBQXFFO1lBQ3JFLHdCQUF3QjtZQUN4QixNQUFNVyxvQkFBOEIsRUFBRTtZQUV0Qyx5REFBeUQ7WUFDekQsSUFBSyxJQUFJQyxRQUFRSCxPQUFPRyxRQUFRRixNQUFNRyxRQUFRLENBQUNDLE1BQU0sRUFBRUYsUUFBUztnQkFDOUQsTUFBTWQsY0FBY1ksTUFBTUcsUUFBUSxDQUFDRCxNQUFNO2dCQUV6QyxJQUFJZCxZQUFZRyxJQUFJLEtBQUssVUFBVTtvQkFDakMsSUFBSWMsUUFBUWpCLFlBQVlTLElBQUk7b0JBRTVCLDRFQUE0RTtvQkFDNUUsTUFBTUgscUJBQXFCQyxDQUFBQSxHQUFBQSxpQ0FBQUEsK0JBQUFBLEVBQWdDTDtvQkFDM0QsSUFDRUksc0JBQ0FRLFVBQVVILFNBQ1ZMLHVCQUF1Qk4sWUFBWVEsa0JBQWtCLEVBQ3JEO3dCQUNBLCtDQUErQzt3QkFDL0NTLFFBQVFBLE1BQU1QLE9BQU8sQ0FBQ1YsWUFBWVEsa0JBQWtCLEVBQUU7b0JBQ3hEO29CQUVBSyxrQkFBa0JLLElBQUksQ0FBQ0Q7Z0JBQ3pCLE9BQU87b0JBQ0wsb0VBQW9FO29CQUNwRSxJQUFJLENBQUNoQixPQUFPa0IsY0FBYyxDQUFDbkIsWUFBWUksS0FBSyxDQUFDQyxTQUFTLEdBQUc7d0JBQ3ZELGtFQUFrRTt3QkFDbEUsOEJBQThCO3dCQUM5QixJQUFJTCxZQUFZSSxLQUFLLENBQUNGLFNBQVMsS0FBSyxxQkFBcUI7NEJBQ3ZEO3dCQUNGO3dCQUVBLGtFQUFrRTt3QkFDbEUsT0FBT2tCO29CQUNUO29CQUVBLHNEQUFzRDtvQkFDdEQsa0VBQWtFO29CQUNsRSxNQUFNQyxhQUFhcEIsTUFBTSxDQUFDRCxZQUFZSSxLQUFLLENBQUNDLFNBQVMsQ0FBQztvQkFDdEQsSUFBSWlCLE1BQU1DLE9BQU8sQ0FBQ0YsYUFBYTt3QkFDN0JSLGtCQUFrQkssSUFBSSxJQUFJRztvQkFDNUIsT0FBTzt3QkFDTFIsa0JBQWtCSyxJQUFJLENBQUNHO29CQUN6QjtnQkFDRjtZQUNGO1lBRUEsSUFBSVIsa0JBQWtCRyxNQUFNLEdBQUcsR0FBRztnQkFDaEMsT0FBT0g7WUFDVCxPQUFPLElBQUlYLGNBQWMscUJBQXFCO2dCQUM1QyxPQUFPa0I7WUFDVCxPQUFPO2dCQUNMLG9FQUFvRTtnQkFDcEUsNENBQTRDO2dCQUM1QyxNQUFNLHFCQUVMLENBRkssSUFBSUksZ0JBQUFBLGNBQWMsQ0FDdEIsQ0FBQyxrREFBa0QsRUFBRVosTUFBTWEsUUFBUSxDQUFDLGNBQWMsRUFBRXBCLFVBQVUsV0FBVyxFQUFFSCxVQUFVLENBQUMsQ0FBQyxHQURuSDsyQkFBQTtnQ0FBQTtrQ0FBQTtnQkFFTjtZQUNGO1FBQ0YsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7WUFDSCxpRUFBaUU7WUFDakUsSUFBSVMsUUFBUUMsTUFBTUcsUUFBUSxDQUFDQyxNQUFNLEVBQUU7Z0JBQ2pDLE1BQU1oQixjQUFjWSxNQUFNRyxRQUFRLENBQUNKLE1BQU07Z0JBRXpDLDJFQUEyRTtnQkFDM0UsSUFDRVgsWUFBWUcsSUFBSSxLQUFLLGFBQ3JCLENBQUNGLE9BQU9rQixjQUFjLENBQUNuQixZQUFZSSxLQUFLLENBQUNDLFNBQVMsR0FDbEQ7b0JBQ0EsMkVBQTJFO29CQUMzRSxPQUFPZTtnQkFDVDtnQkFFQSx5RUFBeUU7Z0JBQ3pFLHdEQUF3RDtnQkFDeEQsaUVBQWlFO2dCQUNqRSxPQUFPckIseUJBQXlCQyxhQUFhQyxRQUFRQztZQUN2RDtZQUVBLE9BQU9rQjtRQUVUO1lBQ0VsQjtJQUNKO0FBQ0YiLCJzb3VyY2VzIjpbIi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcmVzb2x2ZS1wYXJhbS12YWx1ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBhcmFtcyB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZlci9yZXF1ZXN0L3BhcmFtcydcbmltcG9ydCB0eXBlIHsgRHluYW1pY1BhcmFtVHlwZXMgfSBmcm9tICcuLi8uLi9hcHAtcm91dGVyLXR5cGVzJ1xuaW1wb3J0IHsgSW52YXJpYW50RXJyb3IgfSBmcm9tICcuLi8uLi9pbnZhcmlhbnQtZXJyb3InXG5pbXBvcnQgdHlwZSB7XG4gIE5vcm1hbGl6ZWRBcHBSb3V0ZSxcbiAgTm9ybWFsaXplZEFwcFJvdXRlU2VnbWVudCxcbn0gZnJvbSAnLi4vcm91dGVzL2FwcCdcbmltcG9ydCB7IGludGVyY2VwdGlvblByZWZpeEZyb21QYXJhbVR5cGUgfSBmcm9tICcuL2ludGVyY2VwdGlvbi1wcmVmaXgtZnJvbS1wYXJhbS10eXBlJ1xuXG4vKipcbiAqIEV4dHJhY3RzIHRoZSBwYXJhbSB2YWx1ZSBmcm9tIGEgcGF0aCBzZWdtZW50LCBoYW5kbGluZyBpbnRlcmNlcHRpb24gbWFya2Vyc1xuICogYmFzZWQgb24gdGhlIGV4cGVjdGVkIHBhcmFtIHR5cGUuXG4gKlxuICogQHBhcmFtIHBhdGhTZWdtZW50IC0gVGhlIHBhdGggc2VnbWVudCB0byBleHRyYWN0IHRoZSB2YWx1ZSBmcm9tXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGN1cnJlbnQgcGFyYW1zIG9iamVjdCBmb3IgcmVzb2x2aW5nIGR5bmFtaWMgcGFyYW0gcmVmZXJlbmNlc1xuICogQHBhcmFtIHBhcmFtVHlwZSAtIFRoZSBleHBlY3RlZCBwYXJhbSB0eXBlIHdoaWNoIG1heSBpbmNsdWRlIGludGVyY2VwdGlvbiBtYXJrZXIgaW5mb1xuICogQHJldHVybnMgVGhlIGV4dHJhY3RlZCBwYXJhbSB2YWx1ZVxuICovXG5mdW5jdGlvbiBnZXRQYXJhbVZhbHVlRnJvbVNlZ21lbnQoXG4gIHBhdGhTZWdtZW50OiBOb3JtYWxpemVkQXBwUm91dGVTZWdtZW50LFxuICBwYXJhbXM6IFBhcmFtcyxcbiAgcGFyYW1UeXBlOiBEeW5hbWljUGFyYW1UeXBlc1xuKTogc3RyaW5nIHtcbiAgLy8gSWYgdGhlIHNlZ21lbnQgaXMgZHluYW1pYywgcmVzb2x2ZSBpdCBmcm9tIHRoZSBwYXJhbXMgb2JqZWN0XG4gIGlmIChwYXRoU2VnbWVudC50eXBlID09PSAnZHluYW1pYycpIHtcbiAgICByZXR1cm4gcGFyYW1zW3BhdGhTZWdtZW50LnBhcmFtLnBhcmFtTmFtZV0gYXMgc3RyaW5nXG4gIH1cblxuICAvLyBJZiB0aGUgcGFyYW1UeXBlIGluZGljYXRlcyB0aGlzIGlzIGFuIGludGVyY2VwdGVkIHBhcmFtLCBzdHJpcCB0aGUgbWFya2VyXG4gIC8vIHRoYXQgbWF0Y2hlcyB0aGUgaW50ZXJjZXB0aW9uIG1hcmtlciBpbiB0aGUgcGFyYW0gdHlwZVxuICBjb25zdCBpbnRlcmNlcHRpb25QcmVmaXggPSBpbnRlcmNlcHRpb25QcmVmaXhGcm9tUGFyYW1UeXBlKHBhcmFtVHlwZSlcbiAgaWYgKGludGVyY2VwdGlvblByZWZpeCA9PT0gcGF0aFNlZ21lbnQuaW50ZXJjZXB0aW9uTWFya2VyKSB7XG4gICAgcmV0dXJuIHBhdGhTZWdtZW50Lm5hbWUucmVwbGFjZShwYXRoU2VnbWVudC5pbnRlcmNlcHRpb25NYXJrZXIsICcnKVxuICB9XG5cbiAgLy8gRm9yIHN0YXRpYyBzZWdtZW50cywgdXNlIHRoZSBuYW1lXG4gIHJldHVybiBwYXRoU2VnbWVudC5uYW1lXG59XG5cbi8qKlxuICogUmVzb2x2ZXMgYSByb3V0ZSBwYXJhbWV0ZXIgdmFsdWUgZnJvbSB0aGUgcm91dGUgc2VnbWVudHMgYXQgdGhlIGdpdmVuIGRlcHRoLlxuICogVGhpcyBzaGFyZWQgbG9naWMgaXMgdXNlZCBieSBib3RoIGV4dHJhY3RQYXRobmFtZVJvdXRlUGFyYW1TZWdtZW50c0Zyb21Mb2FkZXJUcmVlXG4gKiBhbmQgcmVzb2x2ZVJvdXRlUGFyYW1zRnJvbVRyZWUuXG4gKlxuICogQHBhcmFtIHBhcmFtTmFtZSAtIFRoZSBwYXJhbWV0ZXIgbmFtZSB0byByZXNvbHZlXG4gKiBAcGFyYW0gcGFyYW1UeXBlIC0gVGhlIHBhcmFtZXRlciB0eXBlIChkeW5hbWljLCBjYXRjaGFsbCwgZXRjLilcbiAqIEBwYXJhbSBkZXB0aCAtIFRoZSBjdXJyZW50IGRlcHRoIGluIHRoZSByb3V0ZSB0cmVlXG4gKiBAcGFyYW0gcm91dGUgLSBUaGUgbm9ybWFsaXplZCByb3V0ZSBjb250YWluaW5nIHNlZ21lbnRzXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGN1cnJlbnQgcGFyYW1zIG9iamVjdCAodXNlZCB0byByZXNvbHZlIGVtYmVkZGVkIHBhcmFtIHJlZmVyZW5jZXMpXG4gKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICogQHJldHVybnMgVGhlIHJlc29sdmVkIHBhcmFtZXRlciB2YWx1ZSwgb3IgdW5kZWZpbmVkIGlmIGl0IGNhbm5vdCBiZSByZXNvbHZlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVBhcmFtVmFsdWUoXG4gIHBhcmFtTmFtZTogc3RyaW5nLFxuICBwYXJhbVR5cGU6IER5bmFtaWNQYXJhbVR5cGVzLFxuICBkZXB0aDogbnVtYmVyLFxuICByb3V0ZTogTm9ybWFsaXplZEFwcFJvdXRlLFxuICBwYXJhbXM6IFBhcmFtc1xuKTogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICBzd2l0Y2ggKHBhcmFtVHlwZSkge1xuICAgIGNhc2UgJ2NhdGNoYWxsJzpcbiAgICBjYXNlICdvcHRpb25hbC1jYXRjaGFsbCc6XG4gICAgY2FzZSAnY2F0Y2hhbGwtaW50ZXJjZXB0ZWQtKC4uKSguLiknOlxuICAgIGNhc2UgJ2NhdGNoYWxsLWludGVyY2VwdGVkLSguKSc6XG4gICAgY2FzZSAnY2F0Y2hhbGwtaW50ZXJjZXB0ZWQtKC4uKSc6XG4gICAgY2FzZSAnY2F0Y2hhbGwtaW50ZXJjZXB0ZWQtKC4uLiknOlxuICAgICAgLy8gRm9yIGNhdGNoYWxsIHJvdXRlcywgZGVyaXZlIGZyb20gcGF0aG5hbWUgdXNpbmcgZGVwdGggdG8gZGV0ZXJtaW5lXG4gICAgICAvLyB3aGljaCBzZWdtZW50cyB0byB1c2VcbiAgICAgIGNvbnN0IHByb2Nlc3NlZFNlZ21lbnRzOiBzdHJpbmdbXSA9IFtdXG5cbiAgICAgIC8vIFByb2Nlc3Mgc2VnbWVudHMgdG8gaGFuZGxlIGFueSBlbWJlZGRlZCBkeW5hbWljIHBhcmFtc1xuICAgICAgZm9yIChsZXQgaW5kZXggPSBkZXB0aDsgaW5kZXggPCByb3V0ZS5zZWdtZW50cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgY29uc3QgcGF0aFNlZ21lbnQgPSByb3V0ZS5zZWdtZW50c1tpbmRleF1cblxuICAgICAgICBpZiAocGF0aFNlZ21lbnQudHlwZSA9PT0gJ3N0YXRpYycpIHtcbiAgICAgICAgICBsZXQgdmFsdWUgPSBwYXRoU2VnbWVudC5uYW1lXG5cbiAgICAgICAgICAvLyBGb3IgaW50ZXJjZXB0ZWQgY2F0Y2gtYWxsIHBhcmFtcywgc3RyaXAgdGhlIG1hcmtlciBmcm9tIHRoZSBmaXJzdCBzZWdtZW50XG4gICAgICAgICAgY29uc3QgaW50ZXJjZXB0aW9uUHJlZml4ID0gaW50ZXJjZXB0aW9uUHJlZml4RnJvbVBhcmFtVHlwZShwYXJhbVR5cGUpXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgaW50ZXJjZXB0aW9uUHJlZml4ICYmXG4gICAgICAgICAgICBpbmRleCA9PT0gZGVwdGggJiZcbiAgICAgICAgICAgIGludGVyY2VwdGlvblByZWZpeCA9PT0gcGF0aFNlZ21lbnQuaW50ZXJjZXB0aW9uTWFya2VyXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBTdHJpcCB0aGUgaW50ZXJjZXB0aW9uIG1hcmtlciBmcm9tIHRoZSB2YWx1ZVxuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHBhdGhTZWdtZW50LmludGVyY2VwdGlvbk1hcmtlciwgJycpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcHJvY2Vzc2VkU2VnbWVudHMucHVzaCh2YWx1ZSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBJZiB0aGUgc2VnbWVudCBpcyBhIHBhcmFtIHBsYWNlaG9sZGVyLCBjaGVjayBpZiB3ZSBoYXZlIGl0cyB2YWx1ZVxuICAgICAgICAgIGlmICghcGFyYW1zLmhhc093blByb3BlcnR5KHBhdGhTZWdtZW50LnBhcmFtLnBhcmFtTmFtZSkpIHtcbiAgICAgICAgICAgIC8vIElmIHRoZSBzZWdtZW50IGlzIGFuIG9wdGlvbmFsIGNhdGNoYWxsLCB3ZSBjYW4gYnJlYWsgb3V0IG9mIHRoZVxuICAgICAgICAgICAgLy8gbG9vcCBiZWNhdXNlIGl0J3Mgb3B0aW9uYWwhXG4gICAgICAgICAgICBpZiAocGF0aFNlZ21lbnQucGFyYW0ucGFyYW1UeXBlID09PSAnb3B0aW9uYWwtY2F0Y2hhbGwnKSB7XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFVua25vd24gcGFyYW0gcGxhY2Vob2xkZXIgaW4gcGF0aG5hbWUgLSBjYW4ndCBkZXJpdmUgZnVsbCB2YWx1ZVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIElmIHRoZSBzZWdtZW50IG1hdGNoZXMgYSBwYXJhbSwgdXNlIHRoZSBwYXJhbSB2YWx1ZVxuICAgICAgICAgIC8vIFdlIGRvbid0IGVuY29kZSB2YWx1ZXMgaGVyZSBhcyB0aGF0J3MgaGFuZGxlZCBkdXJpbmcgcmV0cmlldmFsLlxuICAgICAgICAgIGNvbnN0IHBhcmFtVmFsdWUgPSBwYXJhbXNbcGF0aFNlZ21lbnQucGFyYW0ucGFyYW1OYW1lXVxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHBhcmFtVmFsdWUpKSB7XG4gICAgICAgICAgICBwcm9jZXNzZWRTZWdtZW50cy5wdXNoKC4uLnBhcmFtVmFsdWUpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb2Nlc3NlZFNlZ21lbnRzLnB1c2gocGFyYW1WYWx1ZSBhcyBzdHJpbmcpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9jZXNzZWRTZWdtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzZWRTZWdtZW50c1xuICAgICAgfSBlbHNlIGlmIChwYXJhbVR5cGUgPT09ICdvcHRpb25hbC1jYXRjaGFsbCcpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gV2Ugc2hvdWxkbid0IGJlIGFibGUgdG8gbWF0Y2ggYSBjYXRjaGFsbCBzZWdtZW50IHdpdGhvdXQgYW55IHBhdGhcbiAgICAgICAgLy8gc2VnbWVudHMgaWYgaXQncyBub3QgYW4gb3B0aW9uYWwgY2F0Y2hhbGxcbiAgICAgICAgdGhyb3cgbmV3IEludmFyaWFudEVycm9yKFxuICAgICAgICAgIGBVbmV4cGVjdGVkIGVtcHR5IHBhdGggc2VnbWVudHMgbWF0Y2ggZm9yIGEgcm91dGUgXCIke3JvdXRlLnBhdGhuYW1lfVwiIHdpdGggcGFyYW0gXCIke3BhcmFtTmFtZX1cIiBvZiB0eXBlIFwiJHtwYXJhbVR5cGV9XCJgXG4gICAgICAgIClcbiAgICAgIH1cbiAgICBjYXNlICdkeW5hbWljJzpcbiAgICBjYXNlICdkeW5hbWljLWludGVyY2VwdGVkLSguLikoLi4pJzpcbiAgICBjYXNlICdkeW5hbWljLWludGVyY2VwdGVkLSguKSc6XG4gICAgY2FzZSAnZHluYW1pYy1pbnRlcmNlcHRlZC0oLi4pJzpcbiAgICBjYXNlICdkeW5hbWljLWludGVyY2VwdGVkLSguLi4pJzpcbiAgICAgIC8vIEZvciByZWd1bGFyIGR5bmFtaWMgcGFyYW1ldGVycywgdGFrZSB0aGUgc2VnbWVudCBhdCB0aGlzIGRlcHRoXG4gICAgICBpZiAoZGVwdGggPCByb3V0ZS5zZWdtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgcGF0aFNlZ21lbnQgPSByb3V0ZS5zZWdtZW50c1tkZXB0aF1cblxuICAgICAgICAvLyBDaGVjayBpZiB0aGUgc2VnbWVudCBhdCB0aGlzIGRlcHRoIGlzIGEgcGxhY2Vob2xkZXIgZm9yIGFuIHVua25vd24gcGFyYW1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBhdGhTZWdtZW50LnR5cGUgPT09ICdkeW5hbWljJyAmJlxuICAgICAgICAgICFwYXJhbXMuaGFzT3duUHJvcGVydHkocGF0aFNlZ21lbnQucGFyYW0ucGFyYW1OYW1lKVxuICAgICAgICApIHtcbiAgICAgICAgICAvLyBUaGUgc2VnbWVudCBpcyBhIHBsYWNlaG9sZGVyIGxpa2UgW2NhdGVnb3J5XSBhbmQgd2UgZG9uJ3QgaGF2ZSB0aGUgdmFsdWVcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiB0aGUgc2VnbWVudCBtYXRjaGVzIGEgcGFyYW0sIHVzZSB0aGUgcGFyYW0gdmFsdWUgZnJvbSBwYXJhbXMgb2JqZWN0XG4gICAgICAgIC8vIE90aGVyd2lzZSBpdCdzIGEgc3RhdGljIHNlZ21lbnQsIGp1c3QgdXNlIGl0IGRpcmVjdGx5XG4gICAgICAgIC8vIFdlIGRvbid0IGVuY29kZSB2YWx1ZXMgaGVyZSBhcyB0aGF0J3MgaGFuZGxlZCBkdXJpbmcgcmV0cmlldmFsXG4gICAgICAgIHJldHVybiBnZXRQYXJhbVZhbHVlRnJvbVNlZ21lbnQocGF0aFNlZ21lbnQsIHBhcmFtcywgcGFyYW1UeXBlKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBkZWZhdWx0OlxuICAgICAgcGFyYW1UeXBlIHNhdGlzZmllcyBuZXZlclxuICB9XG59XG4iXSwibmFtZXMiOlsicmVzb2x2ZVBhcmFtVmFsdWUiLCJnZXRQYXJhbVZhbHVlRnJvbVNlZ21lbnQiLCJwYXRoU2VnbWVudCIsInBhcmFtcyIsInBhcmFtVHlwZSIsInR5cGUiLCJwYXJhbSIsInBhcmFtTmFtZSIsImludGVyY2VwdGlvblByZWZpeCIsImludGVyY2VwdGlvblByZWZpeEZyb21QYXJhbVR5cGUiLCJpbnRlcmNlcHRpb25NYXJrZXIiLCJuYW1lIiwicmVwbGFjZSIsImRlcHRoIiwicm91dGUiLCJwcm9jZXNzZWRTZWdtZW50cyIsImluZGV4Iiwic2VnbWVudHMiLCJsZW5ndGgiLCJ2YWx1ZSIsInB1c2giLCJoYXNPd25Qcm9wZXJ0eSIsInVuZGVmaW5lZCIsInBhcmFtVmFsdWUiLCJBcnJheSIsImlzQXJyYXkiLCJJbnZhcmlhbnRFcnJvciIsInBhdGhuYW1lIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/resolve-param-value.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js":
|
||
/*!***********************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js ***!
|
||
\***********************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n HEAD_REQUEST_KEY: function() {\n return HEAD_REQUEST_KEY;\n },\n ROOT_SEGMENT_REQUEST_KEY: function() {\n return ROOT_SEGMENT_REQUEST_KEY;\n },\n appendSegmentRequestKeyPart: function() {\n return appendSegmentRequestKeyPart;\n },\n convertSegmentPathToStaticExportFilename: function() {\n return convertSegmentPathToStaticExportFilename;\n },\n createSegmentRequestKeyPart: function() {\n return createSegmentRequestKeyPart;\n }\n});\nconst _segment = __webpack_require__(/*! ../segment */ \"(rsc)/./node_modules/next/dist/shared/lib/segment.js\");\nconst ROOT_SEGMENT_REQUEST_KEY = '';\nconst HEAD_REQUEST_KEY = '/_head';\nfunction createSegmentRequestKeyPart(segment) {\n if (typeof segment === 'string') {\n if (segment.startsWith(_segment.PAGE_SEGMENT_KEY)) {\n // The Flight Router State type sometimes includes the search params in\n // the page segment. However, the Segment Cache tracks this as a separate\n // key. So, we strip the search params here, and then add them back when\n // the cache entry is turned back into a FlightRouterState. This is an\n // unfortunate consequence of the FlightRouteState being used both as a\n // transport type and as a cache key; we'll address this once more of the\n // Segment Cache implementation has settled.\n // TODO: We should hoist the search params out of the FlightRouterState\n // type entirely, This is our plan for dynamic route params, too.\n return _segment.PAGE_SEGMENT_KEY;\n }\n const safeName = // But params typically don't include the leading slash. We should use\n // a different encoding to avoid this special case.\n segment === '/_not-found' ? '_not-found' : encodeToFilesystemAndURLSafeString(segment);\n // Since this is not a dynamic segment, it's fully encoded. It does not\n // need to be \"hydrated\" with a param value.\n return safeName;\n }\n const name = segment[0];\n const paramType = segment[2];\n const safeName = encodeToFilesystemAndURLSafeString(name);\n const encodedName = '$' + paramType + '$' + safeName;\n return encodedName;\n}\nfunction appendSegmentRequestKeyPart(parentRequestKey, parallelRouteKey, childRequestKeyPart) {\n // Aside from being filesystem safe, segment keys are also designed so that\n // each segment and parallel route creates its own subdirectory. Roughly in\n // the same shape as the source app directory. This is mostly just for easier\n // debugging (you can open up the build folder and navigate the output); if\n // we wanted to do we could just use a flat structure.\n // Omit the parallel route key for children, since this is the most\n // common case. Saves some bytes (and it's what the app directory does).\n const slotKey = parallelRouteKey === 'children' ? childRequestKeyPart : `@${encodeToFilesystemAndURLSafeString(parallelRouteKey)}/${childRequestKeyPart}`;\n return parentRequestKey + '/' + slotKey;\n}\n// Define a regex pattern to match the most common characters found in a route\n// param. It excludes anything that might not be cross-platform filesystem\n// compatible, like |. It does not need to be precise because the fallback is to\n// just base64url-encode the whole parameter, which is fine; we just don't do it\n// by default for compactness, and for easier debugging.\nconst simpleParamValueRegex = /^[a-zA-Z0-9\\-_@]+$/;\nfunction encodeToFilesystemAndURLSafeString(value) {\n if (simpleParamValueRegex.test(value)) {\n return value;\n }\n // If there are any unsafe characters, base64url-encode the entire value.\n // We also add a ! prefix so it doesn't collide with the simple case.\n const base64url = btoa(value).replace(/\\+/g, '-') // Replace '+' with '-'\n .replace(/\\//g, '_') // Replace '/' with '_'\n .replace(/=+$/, '') // Remove trailing '='\n ;\n return '!' + base64url;\n}\nfunction convertSegmentPathToStaticExportFilename(segmentPath) {\n return `__next${segmentPath.replace(/\\//g, '.')}.txt`;\n} //# sourceMappingURL=segment-value-encoding.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvc2VnbWVudC1jYWNoZS9zZWdtZW50LXZhbHVlLWVuY29kaW5nLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQVdhQSxnQkFBZ0I7ZUFBaEJBOztJQUZBQyx3QkFBd0I7ZUFBeEJBOztJQXdDR0MsMkJBQTJCO2VBQTNCQTs7SUF3Q0FDLHdDQUF3QztlQUF4Q0E7O0lBNUVBQywyQkFBMkI7ZUFBM0JBOzs7cUNBYmlCO0FBUzFCLE1BQU1ILDJCQUEyQjtBQUVqQyxNQUFNRCxtQkFBbUI7QUFFekIsU0FBU0ksNEJBQ2RDLE9BQWlDO0lBRWpDLElBQUksT0FBT0EsWUFBWSxVQUFVO1FBQy9CLElBQUlBLFFBQVFDLFVBQVUsQ0FBQ0MsU0FBQUEsZ0JBQWdCLEdBQUc7WUFDeEMsdUVBQXVFO1lBQ3ZFLHlFQUF5RTtZQUN6RSx3RUFBd0U7WUFDeEUsc0VBQXNFO1lBQ3RFLHVFQUF1RTtZQUN2RSx5RUFBeUU7WUFDekUsNENBQTRDO1lBQzVDLHVFQUF1RTtZQUN2RSxpRUFBaUU7WUFDakUsT0FBT0EsU0FBQUEsZ0JBQWdCO1FBQ3pCO1FBQ0EsTUFBTUMsV0FDSixxRUFBcUUsQ0FDQztRQUN0RSxtREFBbUQ7UUFDbkRILFlBQVksZ0JBQ1IsZUFDQUksbUNBQW1DSjtRQUN6Qyx1RUFBdUU7UUFDdkUsNENBQTRDO1FBQzVDLE9BQU9HO0lBQ1Q7SUFFQSxNQUFNRSxPQUFPTCxPQUFPLENBQUMsRUFBRTtJQUN2QixNQUFNTSxZQUFZTixPQUFPLENBQUMsRUFBRTtJQUM1QixNQUFNRyxXQUFXQyxtQ0FBbUNDO0lBRXBELE1BQU1FLGNBQWMsTUFBTUQsWUFBWSxNQUFNSDtJQUM1QyxPQUFPSTtBQUNUO0FBRU8sU0FBU1YsNEJBQ2RXLGdCQUFtQyxFQUNuQ0MsZ0JBQXdCLEVBQ3hCQyxtQkFBMEM7SUFFMUMsMkVBQTJFO0lBQzNFLDJFQUEyRTtJQUMzRSw2RUFBNkU7SUFDN0UsMkVBQTJFO0lBQzNFLHNEQUFzRDtJQUV0RCxtRUFBbUU7SUFDbkUsd0VBQXdFO0lBQ3hFLE1BQU1DLFVBQ0pGLHFCQUFxQixhQUNqQkMsc0JBQ0EsQ0FBQyxDQUFDLEVBQUVOLG1DQUFtQ0ssa0JBQWtCLENBQUMsRUFBRUMscUJBQXFCO0lBQ3ZGLE9BQVFGLG1CQUFtQixNQUFNRztBQUNuQztBQUVBLDhFQUE4RTtBQUM5RSwwRUFBMEU7QUFDMUUsZ0ZBQWdGO0FBQ2hGLGdGQUFnRjtBQUNoRix3REFBd0Q7QUFDeEQsTUFBTUMsd0JBQXdCO0FBRTlCLFNBQVNSLG1DQUFtQ1MsS0FBYTtJQUN2RCxJQUFJRCxzQkFBc0JFLElBQUksQ0FBQ0QsUUFBUTtRQUNyQyxPQUFPQTtJQUNUO0lBQ0EseUVBQXlFO0lBQ3pFLHFFQUFxRTtJQUNyRSxNQUFNRSxZQUFZQyxLQUFLSCxPQUNwQkksT0FBTyxDQUFDLE9BQU8sS0FBSyx1QkFBdUI7S0FDM0NBLE9BQU8sQ0FBQyxPQUFPLEtBQUssdUJBQXVCO0tBQzNDQSxPQUFPLENBQUMsT0FBTyxJQUFJLHNCQUFzQjs7SUFDNUMsT0FBTyxNQUFNRjtBQUNmO0FBRU8sU0FBU2pCLHlDQUNkb0IsV0FBbUI7SUFFbkIsT0FBTyxDQUFDLE1BQU0sRUFBRUEsWUFBWUQsT0FBTyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUM7QUFDdkQiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvc2hhcmVkL2xpYi9zZWdtZW50LWNhY2hlL3NlZ21lbnQtdmFsdWUtZW5jb2RpbmcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUEFHRV9TRUdNRU5UX0tFWSB9IGZyb20gJy4uL3NlZ21lbnQnXG5pbXBvcnQgdHlwZSB7IFNlZ21lbnQgYXMgRmxpZ2h0Um91dGVyU3RhdGVTZWdtZW50IH0gZnJvbSAnLi4vYXBwLXJvdXRlci10eXBlcydcblxuLy8gVHlwZVNjcmlwdCB0cmljayB0byBzaW11bGF0ZSBvcGFxdWUgdHlwZXMsIGxpa2UgaW4gRmxvdy5cbnR5cGUgT3BhcXVlPEssIFQ+ID0gVCAmIHsgX19icmFuZDogSyB9XG5cbmV4cG9ydCB0eXBlIFNlZ21lbnRSZXF1ZXN0S2V5UGFydCA9IE9wYXF1ZTwnU2VnbWVudFJlcXVlc3RLZXlQYXJ0Jywgc3RyaW5nPlxuZXhwb3J0IHR5cGUgU2VnbWVudFJlcXVlc3RLZXkgPSBPcGFxdWU8J1NlZ21lbnRSZXF1ZXN0S2V5Jywgc3RyaW5nPlxuXG5leHBvcnQgY29uc3QgUk9PVF9TRUdNRU5UX1JFUVVFU1RfS0VZID0gJycgYXMgU2VnbWVudFJlcXVlc3RLZXlcblxuZXhwb3J0IGNvbnN0IEhFQURfUkVRVUVTVF9LRVkgPSAnL19oZWFkJyBhcyBTZWdtZW50UmVxdWVzdEtleVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VnbWVudFJlcXVlc3RLZXlQYXJ0KFxuICBzZWdtZW50OiBGbGlnaHRSb3V0ZXJTdGF0ZVNlZ21lbnRcbik6IFNlZ21lbnRSZXF1ZXN0S2V5UGFydCB7XG4gIGlmICh0eXBlb2Ygc2VnbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoc2VnbWVudC5zdGFydHNXaXRoKFBBR0VfU0VHTUVOVF9LRVkpKSB7XG4gICAgICAvLyBUaGUgRmxpZ2h0IFJvdXRlciBTdGF0ZSB0eXBlIHNvbWV0aW1lcyBpbmNsdWRlcyB0aGUgc2VhcmNoIHBhcmFtcyBpblxuICAgICAgLy8gdGhlIHBhZ2Ugc2VnbWVudC4gSG93ZXZlciwgdGhlIFNlZ21lbnQgQ2FjaGUgdHJhY2tzIHRoaXMgYXMgYSBzZXBhcmF0ZVxuICAgICAgLy8ga2V5LiBTbywgd2Ugc3RyaXAgdGhlIHNlYXJjaCBwYXJhbXMgaGVyZSwgYW5kIHRoZW4gYWRkIHRoZW0gYmFjayB3aGVuXG4gICAgICAvLyB0aGUgY2FjaGUgZW50cnkgaXMgdHVybmVkIGJhY2sgaW50byBhIEZsaWdodFJvdXRlclN0YXRlLiBUaGlzIGlzIGFuXG4gICAgICAvLyB1bmZvcnR1bmF0ZSBjb25zZXF1ZW5jZSBvZiB0aGUgRmxpZ2h0Um91dGVTdGF0ZSBiZWluZyB1c2VkIGJvdGggYXMgYVxuICAgICAgLy8gdHJhbnNwb3J0IHR5cGUgYW5kIGFzIGEgY2FjaGUga2V5OyB3ZSdsbCBhZGRyZXNzIHRoaXMgb25jZSBtb3JlIG9mIHRoZVxuICAgICAgLy8gU2VnbWVudCBDYWNoZSBpbXBsZW1lbnRhdGlvbiBoYXMgc2V0dGxlZC5cbiAgICAgIC8vIFRPRE86IFdlIHNob3VsZCBob2lzdCB0aGUgc2VhcmNoIHBhcmFtcyBvdXQgb2YgdGhlIEZsaWdodFJvdXRlclN0YXRlXG4gICAgICAvLyB0eXBlIGVudGlyZWx5LCBUaGlzIGlzIG91ciBwbGFuIGZvciBkeW5hbWljIHJvdXRlIHBhcmFtcywgdG9vLlxuICAgICAgcmV0dXJuIFBBR0VfU0VHTUVOVF9LRVkgYXMgU2VnbWVudFJlcXVlc3RLZXlQYXJ0XG4gICAgfVxuICAgIGNvbnN0IHNhZmVOYW1lID1cbiAgICAgIC8vIFRPRE86IEZsaWdodFJvdXRlclN0YXRlIGVuY29kZXMgTm90IEZvdW5kIHJvdXRlcyBhcyBcIi9fbm90LWZvdW5kXCIuXG4gICAgICAvLyBCdXQgcGFyYW1zIHR5cGljYWxseSBkb24ndCBpbmNsdWRlIHRoZSBsZWFkaW5nIHNsYXNoLiBXZSBzaG91bGQgdXNlXG4gICAgICAvLyBhIGRpZmZlcmVudCBlbmNvZGluZyB0byBhdm9pZCB0aGlzIHNwZWNpYWwgY2FzZS5cbiAgICAgIHNlZ21lbnQgPT09ICcvX25vdC1mb3VuZCdcbiAgICAgICAgPyAnX25vdC1mb3VuZCdcbiAgICAgICAgOiBlbmNvZGVUb0ZpbGVzeXN0ZW1BbmRVUkxTYWZlU3RyaW5nKHNlZ21lbnQpXG4gICAgLy8gU2luY2UgdGhpcyBpcyBub3QgYSBkeW5hbWljIHNlZ21lbnQsIGl0J3MgZnVsbHkgZW5jb2RlZC4gSXQgZG9lcyBub3RcbiAgICAvLyBuZWVkIHRvIGJlIFwiaHlkcmF0ZWRcIiB3aXRoIGEgcGFyYW0gdmFsdWUuXG4gICAgcmV0dXJuIHNhZmVOYW1lIGFzIFNlZ21lbnRSZXF1ZXN0S2V5UGFydFxuICB9XG5cbiAgY29uc3QgbmFtZSA9IHNlZ21lbnRbMF1cbiAgY29uc3QgcGFyYW1UeXBlID0gc2VnbWVudFsyXVxuICBjb25zdCBzYWZlTmFtZSA9IGVuY29kZVRvRmlsZXN5c3RlbUFuZFVSTFNhZmVTdHJpbmcobmFtZSlcblxuICBjb25zdCBlbmNvZGVkTmFtZSA9ICckJyArIHBhcmFtVHlwZSArICckJyArIHNhZmVOYW1lXG4gIHJldHVybiBlbmNvZGVkTmFtZSBhcyBTZWdtZW50UmVxdWVzdEtleVBhcnRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZFNlZ21lbnRSZXF1ZXN0S2V5UGFydChcbiAgcGFyZW50UmVxdWVzdEtleTogU2VnbWVudFJlcXVlc3RLZXksXG4gIHBhcmFsbGVsUm91dGVLZXk6IHN0cmluZyxcbiAgY2hpbGRSZXF1ZXN0S2V5UGFydDogU2VnbWVudFJlcXVlc3RLZXlQYXJ0XG4pOiBTZWdtZW50UmVxdWVzdEtleSB7XG4gIC8vIEFzaWRlIGZyb20gYmVpbmcgZmlsZXN5c3RlbSBzYWZlLCBzZWdtZW50IGtleXMgYXJlIGFsc28gZGVzaWduZWQgc28gdGhhdFxuICAvLyBlYWNoIHNlZ21lbnQgYW5kIHBhcmFsbGVsIHJvdXRlIGNyZWF0ZXMgaXRzIG93biBzdWJkaXJlY3RvcnkuIFJvdWdobHkgaW5cbiAgLy8gdGhlIHNhbWUgc2hhcGUgYXMgdGhlIHNvdXJjZSBhcHAgZGlyZWN0b3J5LiBUaGlzIGlzIG1vc3RseSBqdXN0IGZvciBlYXNpZXJcbiAgLy8gZGVidWdnaW5nICh5b3UgY2FuIG9wZW4gdXAgdGhlIGJ1aWxkIGZvbGRlciBhbmQgbmF2aWdhdGUgdGhlIG91dHB1dCk7IGlmXG4gIC8vIHdlIHdhbnRlZCB0byBkbyB3ZSBjb3VsZCBqdXN0IHVzZSBhIGZsYXQgc3RydWN0dXJlLlxuXG4gIC8vIE9taXQgdGhlIHBhcmFsbGVsIHJvdXRlIGtleSBmb3IgY2hpbGRyZW4sIHNpbmNlIHRoaXMgaXMgdGhlIG1vc3RcbiAgLy8gY29tbW9uIGNhc2UuIFNhdmVzIHNvbWUgYnl0ZXMgKGFuZCBpdCdzIHdoYXQgdGhlIGFwcCBkaXJlY3RvcnkgZG9lcykuXG4gIGNvbnN0IHNsb3RLZXkgPVxuICAgIHBhcmFsbGVsUm91dGVLZXkgPT09ICdjaGlsZHJlbidcbiAgICAgID8gY2hpbGRSZXF1ZXN0S2V5UGFydFxuICAgICAgOiBgQCR7ZW5jb2RlVG9GaWxlc3lzdGVtQW5kVVJMU2FmZVN0cmluZyhwYXJhbGxlbFJvdXRlS2V5KX0vJHtjaGlsZFJlcXVlc3RLZXlQYXJ0fWBcbiAgcmV0dXJuIChwYXJlbnRSZXF1ZXN0S2V5ICsgJy8nICsgc2xvdEtleSkgYXMgU2VnbWVudFJlcXVlc3RLZXlcbn1cblxuLy8gRGVmaW5lIGEgcmVnZXggcGF0dGVybiB0byBtYXRjaCB0aGUgbW9zdCBjb21tb24gY2hhcmFjdGVycyBmb3VuZCBpbiBhIHJvdXRlXG4vLyBwYXJhbS4gSXQgZXhjbHVkZXMgYW55dGhpbmcgdGhhdCBtaWdodCBub3QgYmUgY3Jvc3MtcGxhdGZvcm0gZmlsZXN5c3RlbVxuLy8gY29tcGF0aWJsZSwgbGlrZSB8LiBJdCBkb2VzIG5vdCBuZWVkIHRvIGJlIHByZWNpc2UgYmVjYXVzZSB0aGUgZmFsbGJhY2sgaXMgdG9cbi8vIGp1c3QgYmFzZTY0dXJsLWVuY29kZSB0aGUgd2hvbGUgcGFyYW1ldGVyLCB3aGljaCBpcyBmaW5lOyB3ZSBqdXN0IGRvbid0IGRvIGl0XG4vLyBieSBkZWZhdWx0IGZvciBjb21wYWN0bmVzcywgYW5kIGZvciBlYXNpZXIgZGVidWdnaW5nLlxuY29uc3Qgc2ltcGxlUGFyYW1WYWx1ZVJlZ2V4ID0gL15bYS16QS1aMC05XFwtX0BdKyQvXG5cbmZ1bmN0aW9uIGVuY29kZVRvRmlsZXN5c3RlbUFuZFVSTFNhZmVTdHJpbmcodmFsdWU6IHN0cmluZykge1xuICBpZiAoc2ltcGxlUGFyYW1WYWx1ZVJlZ2V4LnRlc3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cbiAgLy8gSWYgdGhlcmUgYXJlIGFueSB1bnNhZmUgY2hhcmFjdGVycywgYmFzZTY0dXJsLWVuY29kZSB0aGUgZW50aXJlIHZhbHVlLlxuICAvLyBXZSBhbHNvIGFkZCBhICEgcHJlZml4IHNvIGl0IGRvZXNuJ3QgY29sbGlkZSB3aXRoIHRoZSBzaW1wbGUgY2FzZS5cbiAgY29uc3QgYmFzZTY0dXJsID0gYnRvYSh2YWx1ZSlcbiAgICAucmVwbGFjZSgvXFwrL2csICctJykgLy8gUmVwbGFjZSAnKycgd2l0aCAnLSdcbiAgICAucmVwbGFjZSgvXFwvL2csICdfJykgLy8gUmVwbGFjZSAnLycgd2l0aCAnXydcbiAgICAucmVwbGFjZSgvPSskLywgJycpIC8vIFJlbW92ZSB0cmFpbGluZyAnPSdcbiAgcmV0dXJuICchJyArIGJhc2U2NHVybFxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFNlZ21lbnRQYXRoVG9TdGF0aWNFeHBvcnRGaWxlbmFtZShcbiAgc2VnbWVudFBhdGg6IHN0cmluZ1xuKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBfX25leHQke3NlZ21lbnRQYXRoLnJlcGxhY2UoL1xcLy9nLCAnLicpfS50eHRgXG59XG4iXSwibmFtZXMiOlsiSEVBRF9SRVFVRVNUX0tFWSIsIlJPT1RfU0VHTUVOVF9SRVFVRVNUX0tFWSIsImFwcGVuZFNlZ21lbnRSZXF1ZXN0S2V5UGFydCIsImNvbnZlcnRTZWdtZW50UGF0aFRvU3RhdGljRXhwb3J0RmlsZW5hbWUiLCJjcmVhdGVTZWdtZW50UmVxdWVzdEtleVBhcnQiLCJzZWdtZW50Iiwic3RhcnRzV2l0aCIsIlBBR0VfU0VHTUVOVF9LRVkiLCJzYWZlTmFtZSIsImVuY29kZVRvRmlsZXN5c3RlbUFuZFVSTFNhZmVTdHJpbmciLCJuYW1lIiwicGFyYW1UeXBlIiwiZW5jb2RlZE5hbWUiLCJwYXJlbnRSZXF1ZXN0S2V5IiwicGFyYWxsZWxSb3V0ZUtleSIsImNoaWxkUmVxdWVzdEtleVBhcnQiLCJzbG90S2V5Iiwic2ltcGxlUGFyYW1WYWx1ZVJlZ2V4IiwidmFsdWUiLCJ0ZXN0IiwiYmFzZTY0dXJsIiwiYnRvYSIsInJlcGxhY2UiLCJzZWdtZW50UGF0aCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/segment-cache/vary-params-decoding.js":
|
||
/*!*********************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/segment-cache/vary-params-decoding.js ***!
|
||
\*********************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * Vary Params Decoding\n *\n * This module is shared between server and client.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"readVaryParams\", ({\n enumerable: true,\n get: function() {\n return readVaryParams;\n }\n}));\nfunction readVaryParams(thenable) {\n // Attach a no-op listener to force Flight to synchronously resolve the\n // thenable. When a thenable arrives from the Flight stream, it may be in an\n // intermediate 'resolved_model' state (data received but not unwrapped).\n // Calling .then() triggers Flight to transition it to 'fulfilled', making\n // the value available synchronously. React uses this same optimization\n // internally to avoid unnecessary microtasks.\n thenable.then(noop);\n // If the thenable is still not 'fulfilled' after calling .then(), the server\n // failed to resolve it before the stream ended. Treat as unknown.\n if (thenable.status !== 'fulfilled') {\n return null;\n }\n return thenable.value;\n}\nconst noop = ()=>{}; //# sourceMappingURL=vary-params-decoding.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvc2VnbWVudC1jYWNoZS92YXJ5LXBhcmFtcy1kZWNvZGluZy5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7OztDQUlDOzs7O2tEQWdDZUE7OztlQUFBQTs7O0FBQVQsU0FBU0EsZUFDZEMsUUFBNEI7SUFFNUIsdUVBQXVFO0lBQ3ZFLDRFQUE0RTtJQUM1RSx5RUFBeUU7SUFDekUsMEVBQTBFO0lBQzFFLHVFQUF1RTtJQUN2RSw4Q0FBOEM7SUFDOUNBLFNBQVNDLElBQUksQ0FBQ0M7SUFDZCw2RUFBNkU7SUFDN0Usa0VBQWtFO0lBQ2xFLElBQUlGLFNBQVNHLE1BQU0sS0FBSyxhQUFhO1FBQ25DLE9BQU87SUFDVDtJQUNBLE9BQU9ILFNBQVNJLEtBQUs7QUFDdkI7QUFFQSxNQUFNRixPQUFPLEtBQU8iLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvc2hhcmVkL2xpYi9zZWdtZW50LWNhY2hlL3ZhcnktcGFyYW1zLWRlY29kaW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVmFyeSBQYXJhbXMgRGVjb2RpbmdcbiAqXG4gKiBUaGlzIG1vZHVsZSBpcyBzaGFyZWQgYmV0d2VlbiBzZXJ2ZXIgYW5kIGNsaWVudC5cbiAqL1xuXG5leHBvcnQgdHlwZSBWYXJ5UGFyYW1zID0gU2V0PHN0cmluZz5cblxudHlwZSBGdWxmaWxsZWRWYXJ5UGFyYW1zVGhlbmFibGUgPSB7XG4gIHN0YXR1czogJ2Z1bGZpbGxlZCdcbiAgdmFsdWU6IFZhcnlQYXJhbXNcbn0gJiBQcm9taXNlTGlrZTxWYXJ5UGFyYW1zPlxuXG50eXBlIFBlbmRpbmdWYXJ5UGFyYW1zVGhlbmFibGUgPSB7XG4gIC8vICdyZXNvbHZlZF9tb2RlbCcgaXMgYW4gaW50ZXJuYWwgUmVhY3QgRmxpZ2h0IHN0YXRlOiB0aGUgdW5kZXJseWluZyBtb2RlbFxuICAvLyBkYXRhIGhhcyBhcnJpdmVkIGJ1dCB0aGUgdGhlbmFibGUgaGFzbid0IGJlZW4gXCJ1bndyYXBwZWRcIiB5ZXQuIENhbGxpbmdcbiAgLy8gLnRoZW4oKSB0cmlnZ2VycyBGbGlnaHQgdG8gc3luY2hyb25vdXNseSB0cmFuc2l0aW9uIHRvICdmdWxmaWxsZWQnLlxuICBzdGF0dXM6ICdwZW5kaW5nJyB8ICdyZXNvbHZlZF9tb2RlbCdcbiAgdmFsdWU6IHVua25vd25cbn0gJiBQcm9taXNlTGlrZTxWYXJ5UGFyYW1zPlxuXG5leHBvcnQgdHlwZSBWYXJ5UGFyYW1zVGhlbmFibGUgPVxuICB8IEZ1bGZpbGxlZFZhcnlQYXJhbXNUaGVuYWJsZVxuICB8IFBlbmRpbmdWYXJ5UGFyYW1zVGhlbmFibGVcblxuLyoqXG4gKiBTeW5jaHJvbm91c2x5IHJlYWRzIHZhcnkgcGFyYW1zIGZyb20gYSB0aGVuYWJsZS5cbiAqXG4gKiBCeSB0aGUgdGltZSB0aGlzIGlzIGNhbGxlZCAoY2xpZW50LXNpZGUgb3IgaW4gY29sbGVjdFNlZ21lbnREYXRhKSwgdGhlXG4gKiB0aGVuYWJsZSBzaG91bGQgYWxyZWFkeSBiZSBmdWxmaWxsZWQgYmVjYXVzZSB0aGUgRmxpZ2h0IHN0cmVhbSBoYXMgYmVlblxuICogZnVsbHkgcmVjZWl2ZWQuIFdlIGNoZWNrIHRoZSBzdGF0dXMgc3luY2hyb25vdXNseSB0byBhdm9pZCB1bm5lY2Vzc2FyeVxuICogbWljcm90YXNrcy5cbiAqXG4gKiBSZXR1cm5zIG51bGwgaWYgdGhlIHRoZW5hYmxlIGlzIHN0aWxsIHBlbmRpbmcgKHdoaWNoIHNob3VsZG4ndCBoYXBwZW4gaW5cbiAqIG5vcm1hbCBvcGVyYXRpb24gLSBpdCBpbmRpY2F0ZXMgdGhlIHNlcnZlciBmYWlsZWQgdG8gdHJhY2sgdmFyeSBwYXJhbXMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZFZhcnlQYXJhbXMoXG4gIHRoZW5hYmxlOiBWYXJ5UGFyYW1zVGhlbmFibGVcbik6IFZhcnlQYXJhbXMgfCBudWxsIHtcbiAgLy8gQXR0YWNoIGEgbm8tb3AgbGlzdGVuZXIgdG8gZm9yY2UgRmxpZ2h0IHRvIHN5bmNocm9ub3VzbHkgcmVzb2x2ZSB0aGVcbiAgLy8gdGhlbmFibGUuIFdoZW4gYSB0aGVuYWJsZSBhcnJpdmVzIGZyb20gdGhlIEZsaWdodCBzdHJlYW0sIGl0IG1heSBiZSBpbiBhblxuICAvLyBpbnRlcm1lZGlhdGUgJ3Jlc29sdmVkX21vZGVsJyBzdGF0ZSAoZGF0YSByZWNlaXZlZCBidXQgbm90IHVud3JhcHBlZCkuXG4gIC8vIENhbGxpbmcgLnRoZW4oKSB0cmlnZ2VycyBGbGlnaHQgdG8gdHJhbnNpdGlvbiBpdCB0byAnZnVsZmlsbGVkJywgbWFraW5nXG4gIC8vIHRoZSB2YWx1ZSBhdmFpbGFibGUgc3luY2hyb25vdXNseS4gUmVhY3QgdXNlcyB0aGlzIHNhbWUgb3B0aW1pemF0aW9uXG4gIC8vIGludGVybmFsbHkgdG8gYXZvaWQgdW5uZWNlc3NhcnkgbWljcm90YXNrcy5cbiAgdGhlbmFibGUudGhlbihub29wKVxuICAvLyBJZiB0aGUgdGhlbmFibGUgaXMgc3RpbGwgbm90ICdmdWxmaWxsZWQnIGFmdGVyIGNhbGxpbmcgLnRoZW4oKSwgdGhlIHNlcnZlclxuICAvLyBmYWlsZWQgdG8gcmVzb2x2ZSBpdCBiZWZvcmUgdGhlIHN0cmVhbSBlbmRlZC4gVHJlYXQgYXMgdW5rbm93bi5cbiAgaWYgKHRoZW5hYmxlLnN0YXR1cyAhPT0gJ2Z1bGZpbGxlZCcpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiB0aGVuYWJsZS52YWx1ZVxufVxuXG5jb25zdCBub29wID0gKCkgPT4ge31cbiJdLCJuYW1lcyI6WyJyZWFkVmFyeVBhcmFtcyIsInRoZW5hYmxlIiwidGhlbiIsIm5vb3AiLCJzdGF0dXMiLCJ2YWx1ZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/segment-cache/vary-params-decoding.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/segment.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/segment.js ***!
|
||
\******************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n DEFAULT_SEGMENT_KEY: function() {\n return DEFAULT_SEGMENT_KEY;\n },\n NOT_FOUND_SEGMENT_KEY: function() {\n return NOT_FOUND_SEGMENT_KEY;\n },\n PAGE_SEGMENT_KEY: function() {\n return PAGE_SEGMENT_KEY;\n },\n addSearchParamsIfPageSegment: function() {\n return addSearchParamsIfPageSegment;\n },\n computeSelectedLayoutSegment: function() {\n return computeSelectedLayoutSegment;\n },\n getSegmentValue: function() {\n return getSegmentValue;\n },\n getSelectedLayoutSegmentPath: function() {\n return getSelectedLayoutSegmentPath;\n },\n isGroupSegment: function() {\n return isGroupSegment;\n },\n isParallelRouteSegment: function() {\n return isParallelRouteSegment;\n }\n});\nfunction getSegmentValue(segment) {\n return Array.isArray(segment) ? segment[1] : segment;\n}\nfunction isGroupSegment(segment) {\n // Use array[0] for performant purpose\n return segment[0] === '(' && segment.endsWith(')');\n}\nfunction isParallelRouteSegment(segment) {\n return segment.startsWith('@') && segment !== '@children';\n}\nfunction addSearchParamsIfPageSegment(segment, searchParams) {\n const isPageSegment = segment.includes(PAGE_SEGMENT_KEY);\n if (isPageSegment) {\n const stringifiedQuery = JSON.stringify(searchParams);\n return stringifiedQuery !== '{}' ? PAGE_SEGMENT_KEY + '?' + stringifiedQuery : PAGE_SEGMENT_KEY;\n }\n return segment;\n}\nfunction computeSelectedLayoutSegment(segments, parallelRouteKey) {\n if (!segments || segments.length === 0) {\n return null;\n }\n // For 'children', use first segment; for other parallel routes, use last segment\n const rawSegment = parallelRouteKey === 'children' ? segments[0] : segments[segments.length - 1];\n // If the default slot is showing, return null since it's not technically \"selected\" (it's a fallback)\n // Returning an internal value like `__DEFAULT__` would be confusing\n return rawSegment === DEFAULT_SEGMENT_KEY ? null : rawSegment;\n}\nfunction getSelectedLayoutSegmentPath(tree, parallelRouteKey, first = true, segmentPath = []) {\n let node;\n if (first) {\n // Use the provided parallel route key on the first parallel route\n node = tree[1][parallelRouteKey];\n } else {\n // After first parallel route prefer children, if there's no children pick the first parallel route.\n const parallelRoutes = tree[1];\n node = parallelRoutes.children ?? Object.values(parallelRoutes)[0];\n }\n if (!node) return segmentPath;\n const segment = node[0];\n let segmentValue = getSegmentValue(segment);\n if (!segmentValue || segmentValue.startsWith(PAGE_SEGMENT_KEY)) {\n return segmentPath;\n }\n segmentPath.push(segmentValue);\n return getSelectedLayoutSegmentPath(node, parallelRouteKey, false, segmentPath);\n}\nconst PAGE_SEGMENT_KEY = '__PAGE__';\nconst DEFAULT_SEGMENT_KEY = '__DEFAULT__';\nconst NOT_FOUND_SEGMENT_KEY = '/_not-found'; //# sourceMappingURL=segment.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvc2VnbWVudC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUF1RmFBLG1CQUFtQjtlQUFuQkE7O0lBQ0FDLHFCQUFxQjtlQUFyQkE7O0lBRkFDLGdCQUFnQjtlQUFoQkE7O0lBdkVHQyw0QkFBNEI7ZUFBNUJBOztJQWdCQUMsNEJBQTRCO2VBQTVCQTs7SUE3QkFDLGVBQWU7ZUFBZkE7O0lBaURBQyw0QkFBNEI7ZUFBNUJBOztJQTdDQUMsY0FBYztlQUFkQTs7SUFLQUMsc0JBQXNCO2VBQXRCQTs7O0FBVFQsU0FBU0gsZ0JBQWdCSSxPQUFnQjtJQUM5QyxPQUFPQyxNQUFNQyxPQUFPLENBQUNGLFdBQVdBLE9BQU8sQ0FBQyxFQUFFLEdBQUdBO0FBQy9DO0FBRU8sU0FBU0YsZUFBZUUsT0FBZTtJQUM1QyxzQ0FBc0M7SUFDdEMsT0FBT0EsT0FBTyxDQUFDLEVBQUUsS0FBSyxPQUFPQSxRQUFRRyxRQUFRLENBQUM7QUFDaEQ7QUFFTyxTQUFTSix1QkFBdUJDLE9BQWU7SUFDcEQsT0FBT0EsUUFBUUksVUFBVSxDQUFDLFFBQVFKLFlBQVk7QUFDaEQ7QUFFTyxTQUFTTiw2QkFDZE0sT0FBZ0IsRUFDaEJLLFlBQTJEO0lBRTNELE1BQU1DLGdCQUFnQk4sUUFBUU8sUUFBUSxDQUFDZDtJQUV2QyxJQUFJYSxlQUFlO1FBQ2pCLE1BQU1FLG1CQUFtQkMsS0FBS0MsU0FBUyxDQUFDTDtRQUN4QyxPQUFPRyxxQkFBcUIsT0FDeEJmLG1CQUFtQixNQUFNZSxtQkFDekJmO0lBQ047SUFFQSxPQUFPTztBQUNUO0FBRU8sU0FBU0wsNkJBQ2RnQixRQUF5QixFQUN6QkMsZ0JBQXdCO0lBRXhCLElBQUksQ0FBQ0QsWUFBWUEsU0FBU0UsTUFBTSxLQUFLLEdBQUc7UUFDdEMsT0FBTztJQUNUO0lBRUEsaUZBQWlGO0lBQ2pGLE1BQU1DLGFBQ0pGLHFCQUFxQixhQUNqQkQsUUFBUSxDQUFDLEVBQUUsR0FDWEEsUUFBUSxDQUFDQSxTQUFTRSxNQUFNLEdBQUcsRUFBRTtJQUVuQyxzR0FBc0c7SUFDdEcsb0VBQW9FO0lBQ3BFLE9BQU9DLGVBQWV2QixzQkFBc0IsT0FBT3VCO0FBQ3JEO0FBR08sU0FBU2pCLDZCQUNka0IsSUFBdUIsRUFDdkJILGdCQUF3QixFQUN4QkksUUFBUSxJQUFJLEVBQ1pDLGNBQXdCLEVBQUU7SUFFMUIsSUFBSUM7SUFDSixJQUFJRixPQUFPO1FBQ1Qsa0VBQWtFO1FBQ2xFRSxPQUFPSCxJQUFJLENBQUMsRUFBRSxDQUFDSCxpQkFBaUI7SUFDbEMsT0FBTztRQUNMLG9HQUFvRztRQUNwRyxNQUFNTyxpQkFBaUJKLElBQUksQ0FBQyxFQUFFO1FBQzlCRyxPQUFPQyxlQUFlQyxRQUFRLElBQUlDLE9BQU9DLE1BQU0sQ0FBQ0gsZUFBZSxDQUFDLEVBQUU7SUFDcEU7SUFFQSxJQUFJLENBQUNELE1BQU0sT0FBT0Q7SUFDbEIsTUFBTWpCLFVBQVVrQixJQUFJLENBQUMsRUFBRTtJQUV2QixJQUFJSyxlQUFlM0IsZ0JBQWdCSTtJQUVuQyxJQUFJLENBQUN1QixnQkFBZ0JBLGFBQWFuQixVQUFVLENBQUNYLG1CQUFtQjtRQUM5RCxPQUFPd0I7SUFDVDtJQUVBQSxZQUFZTyxJQUFJLENBQUNEO0lBRWpCLE9BQU8xQiw2QkFDTHFCLE1BQ0FOLGtCQUNBLE9BQ0FLO0FBRUo7QUFFTyxNQUFNeEIsbUJBQW1CO0FBQ3pCLE1BQU1GLHNCQUFzQjtBQUM1QixNQUFNQyx3QkFBd0IiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9zcmMvc2hhcmVkL2xpYi9zZWdtZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmxpZ2h0Um91dGVyU3RhdGUsIFNlZ21lbnQgfSBmcm9tICcuL2FwcC1yb3V0ZXItdHlwZXMnXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWdtZW50VmFsdWUoc2VnbWVudDogU2VnbWVudCkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShzZWdtZW50KSA/IHNlZ21lbnRbMV0gOiBzZWdtZW50XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0dyb3VwU2VnbWVudChzZWdtZW50OiBzdHJpbmcpIHtcbiAgLy8gVXNlIGFycmF5WzBdIGZvciBwZXJmb3JtYW50IHB1cnBvc2VcbiAgcmV0dXJuIHNlZ21lbnRbMF0gPT09ICcoJyAmJiBzZWdtZW50LmVuZHNXaXRoKCcpJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUGFyYWxsZWxSb3V0ZVNlZ21lbnQoc2VnbWVudDogc3RyaW5nKSB7XG4gIHJldHVybiBzZWdtZW50LnN0YXJ0c1dpdGgoJ0AnKSAmJiBzZWdtZW50ICE9PSAnQGNoaWxkcmVuJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkU2VhcmNoUGFyYW1zSWZQYWdlU2VnbWVudChcbiAgc2VnbWVudDogU2VnbWVudCxcbiAgc2VhcmNoUGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZD5cbikge1xuICBjb25zdCBpc1BhZ2VTZWdtZW50ID0gc2VnbWVudC5pbmNsdWRlcyhQQUdFX1NFR01FTlRfS0VZKVxuXG4gIGlmIChpc1BhZ2VTZWdtZW50KSB7XG4gICAgY29uc3Qgc3RyaW5naWZpZWRRdWVyeSA9IEpTT04uc3RyaW5naWZ5KHNlYXJjaFBhcmFtcylcbiAgICByZXR1cm4gc3RyaW5naWZpZWRRdWVyeSAhPT0gJ3t9J1xuICAgICAgPyBQQUdFX1NFR01FTlRfS0VZICsgJz8nICsgc3RyaW5naWZpZWRRdWVyeVxuICAgICAgOiBQQUdFX1NFR01FTlRfS0VZXG4gIH1cblxuICByZXR1cm4gc2VnbWVudFxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVNlbGVjdGVkTGF5b3V0U2VnbWVudChcbiAgc2VnbWVudHM6IHN0cmluZ1tdIHwgbnVsbCxcbiAgcGFyYWxsZWxSb3V0ZUtleTogc3RyaW5nXG4pOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKCFzZWdtZW50cyB8fCBzZWdtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLy8gRm9yICdjaGlsZHJlbicsIHVzZSBmaXJzdCBzZWdtZW50OyBmb3Igb3RoZXIgcGFyYWxsZWwgcm91dGVzLCB1c2UgbGFzdCBzZWdtZW50XG4gIGNvbnN0IHJhd1NlZ21lbnQgPVxuICAgIHBhcmFsbGVsUm91dGVLZXkgPT09ICdjaGlsZHJlbidcbiAgICAgID8gc2VnbWVudHNbMF1cbiAgICAgIDogc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMV1cblxuICAvLyBJZiB0aGUgZGVmYXVsdCBzbG90IGlzIHNob3dpbmcsIHJldHVybiBudWxsIHNpbmNlIGl0J3Mgbm90IHRlY2huaWNhbGx5IFwic2VsZWN0ZWRcIiAoaXQncyBhIGZhbGxiYWNrKVxuICAvLyBSZXR1cm5pbmcgYW4gaW50ZXJuYWwgdmFsdWUgbGlrZSBgX19ERUZBVUxUX19gIHdvdWxkIGJlIGNvbmZ1c2luZ1xuICByZXR1cm4gcmF3U2VnbWVudCA9PT0gREVGQVVMVF9TRUdNRU5UX0tFWSA/IG51bGwgOiByYXdTZWdtZW50XG59XG5cbi8qKiBHZXQgdGhlIGNhbm9uaWNhbCBwYXJhbWV0ZXJzIGZyb20gdGhlIGN1cnJlbnQgbGV2ZWwgdG8gdGhlIGxlYWYgbm9kZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWxlY3RlZExheW91dFNlZ21lbnRQYXRoKFxuICB0cmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgcGFyYWxsZWxSb3V0ZUtleTogc3RyaW5nLFxuICBmaXJzdCA9IHRydWUsXG4gIHNlZ21lbnRQYXRoOiBzdHJpbmdbXSA9IFtdXG4pOiBzdHJpbmdbXSB7XG4gIGxldCBub2RlOiBGbGlnaHRSb3V0ZXJTdGF0ZVxuICBpZiAoZmlyc3QpIHtcbiAgICAvLyBVc2UgdGhlIHByb3ZpZGVkIHBhcmFsbGVsIHJvdXRlIGtleSBvbiB0aGUgZmlyc3QgcGFyYWxsZWwgcm91dGVcbiAgICBub2RlID0gdHJlZVsxXVtwYXJhbGxlbFJvdXRlS2V5XVxuICB9IGVsc2Uge1xuICAgIC8vIEFmdGVyIGZpcnN0IHBhcmFsbGVsIHJvdXRlIHByZWZlciBjaGlsZHJlbiwgaWYgdGhlcmUncyBubyBjaGlsZHJlbiBwaWNrIHRoZSBmaXJzdCBwYXJhbGxlbCByb3V0ZS5cbiAgICBjb25zdCBwYXJhbGxlbFJvdXRlcyA9IHRyZWVbMV1cbiAgICBub2RlID0gcGFyYWxsZWxSb3V0ZXMuY2hpbGRyZW4gPz8gT2JqZWN0LnZhbHVlcyhwYXJhbGxlbFJvdXRlcylbMF1cbiAgfVxuXG4gIGlmICghbm9kZSkgcmV0dXJuIHNlZ21lbnRQYXRoXG4gIGNvbnN0IHNlZ21lbnQgPSBub2RlWzBdXG5cbiAgbGV0IHNlZ21lbnRWYWx1ZSA9IGdldFNlZ21lbnRWYWx1ZShzZWdtZW50KVxuXG4gIGlmICghc2VnbWVudFZhbHVlIHx8IHNlZ21lbnRWYWx1ZS5zdGFydHNXaXRoKFBBR0VfU0VHTUVOVF9LRVkpKSB7XG4gICAgcmV0dXJuIHNlZ21lbnRQYXRoXG4gIH1cblxuICBzZWdtZW50UGF0aC5wdXNoKHNlZ21lbnRWYWx1ZSlcblxuICByZXR1cm4gZ2V0U2VsZWN0ZWRMYXlvdXRTZWdtZW50UGF0aChcbiAgICBub2RlLFxuICAgIHBhcmFsbGVsUm91dGVLZXksXG4gICAgZmFsc2UsXG4gICAgc2VnbWVudFBhdGhcbiAgKVxufVxuXG5leHBvcnQgY29uc3QgUEFHRV9TRUdNRU5UX0tFWSA9ICdfX1BBR0VfXydcbmV4cG9ydCBjb25zdCBERUZBVUxUX1NFR01FTlRfS0VZID0gJ19fREVGQVVMVF9fJ1xuZXhwb3J0IGNvbnN0IE5PVF9GT1VORF9TRUdNRU5UX0tFWSA9ICcvX25vdC1mb3VuZCdcbiJdLCJuYW1lcyI6WyJERUZBVUxUX1NFR01FTlRfS0VZIiwiTk9UX0ZPVU5EX1NFR01FTlRfS0VZIiwiUEFHRV9TRUdNRU5UX0tFWSIsImFkZFNlYXJjaFBhcmFtc0lmUGFnZVNlZ21lbnQiLCJjb21wdXRlU2VsZWN0ZWRMYXlvdXRTZWdtZW50IiwiZ2V0U2VnbWVudFZhbHVlIiwiZ2V0U2VsZWN0ZWRMYXlvdXRTZWdtZW50UGF0aCIsImlzR3JvdXBTZWdtZW50IiwiaXNQYXJhbGxlbFJvdXRlU2VnbWVudCIsInNlZ21lbnQiLCJBcnJheSIsImlzQXJyYXkiLCJlbmRzV2l0aCIsInN0YXJ0c1dpdGgiLCJzZWFyY2hQYXJhbXMiLCJpc1BhZ2VTZWdtZW50IiwiaW5jbHVkZXMiLCJzdHJpbmdpZmllZFF1ZXJ5IiwiSlNPTiIsInN0cmluZ2lmeSIsInNlZ21lbnRzIiwicGFyYWxsZWxSb3V0ZUtleSIsImxlbmd0aCIsInJhd1NlZ21lbnQiLCJ0cmVlIiwiZmlyc3QiLCJzZWdtZW50UGF0aCIsIm5vZGUiLCJwYXJhbGxlbFJvdXRlcyIsImNoaWxkcmVuIiwiT2JqZWN0IiwidmFsdWVzIiwic2VnbWVudFZhbHVlIiwicHVzaCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/segment.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/server-reference-info.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/server-reference-info.js ***!
|
||
\********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n extractInfoFromServerReferenceId: function() {\n return extractInfoFromServerReferenceId;\n },\n omitUnusedArgs: function() {\n return omitUnusedArgs;\n }\n});\nfunction extractInfoFromServerReferenceId(id) {\n const infoByte = parseInt(id.slice(0, 2), 16);\n const typeBit = infoByte >> 7 & 0x1;\n const argMask = infoByte >> 1 & 0x3f;\n const restArgs = infoByte & 0x1;\n const usedArgs = Array(6);\n for(let index = 0; index < 6; index++){\n const bitPosition = 5 - index;\n const bit = argMask >> bitPosition & 0x1;\n usedArgs[index] = bit === 1;\n }\n return {\n type: typeBit === 1 ? 'use-cache' : 'server-action',\n usedArgs: usedArgs,\n hasRestArgs: restArgs === 1\n };\n}\nfunction omitUnusedArgs(args, info) {\n const filteredArgs = new Array(args.length);\n let length = 0;\n for(let index = 0; index < args.length; index++){\n if (index < 6 && info.usedArgs[index] || // This assumes that the server reference info byte has the restArgs bit\n // set to 1 if there are more than 6 args.\n index >= 6 && info.hasRestArgs) {\n filteredArgs[index] = args[index];\n length = index + 1;\n }\n }\n // Trim trailing unused args from the array.\n filteredArgs.length = length;\n return filteredArgs;\n} //# sourceMappingURL=server-reference-info.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvc2VydmVyLXJlZmVyZW5jZS1pbmZvLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQTBCZ0JBLGdDQUFnQztlQUFoQ0E7O0lBaUNBQyxjQUFjO2VBQWRBOzs7QUFqQ1QsU0FBU0QsaUNBQ2RFLEVBQVU7SUFFVixNQUFNQyxXQUFXQyxTQUFTRixHQUFHRyxLQUFLLENBQUMsR0FBRyxJQUFJO0lBQzFDLE1BQU1DLFVBQVdILFlBQVksSUFBSztJQUNsQyxNQUFNSSxVQUFXSixZQUFZLElBQUs7SUFDbEMsTUFBTUssV0FBV0wsV0FBVztJQUM1QixNQUFNTSxXQUFXQyxNQUFNO0lBRXZCLElBQUssSUFBSUMsUUFBUSxHQUFHQSxRQUFRLEdBQUdBLFFBQVM7UUFDdEMsTUFBTUMsY0FBYyxJQUFJRDtRQUN4QixNQUFNRSxNQUFPTixXQUFXSyxjQUFlO1FBQ3ZDSCxRQUFRLENBQUNFLE1BQU0sR0FBR0UsUUFBUTtJQUM1QjtJQUVBLE9BQU87UUFDTEMsTUFBTVIsWUFBWSxJQUFJLGNBQWM7UUFDcENHLFVBQVVBO1FBUVZNLGFBQWFQLGFBQWE7SUFDNUI7QUFDRjtBQU1PLFNBQVNQLGVBQ2RlLElBQWUsRUFDZkMsSUFBeUI7SUFFekIsTUFBTUMsZUFBZSxJQUFJUixNQUFNTSxLQUFLRyxNQUFNO0lBQzFDLElBQUlBLFNBQVM7SUFFYixJQUFLLElBQUlSLFFBQVEsR0FBR0EsUUFBUUssS0FBS0csTUFBTSxFQUFFUixRQUFTO1FBQ2hELElBQ0dBLFFBQVEsS0FBS00sS0FBS1IsUUFBUSxDQUFDRSxNQUFNLElBQ2xDLHdFQUF3RTtRQUN4RSwwQ0FBMEM7UUFDekNBLFNBQVMsS0FBS00sS0FBS0YsV0FBVyxFQUMvQjtZQUNBRyxZQUFZLENBQUNQLE1BQU0sR0FBR0ssSUFBSSxDQUFDTCxNQUFNO1lBQ2pDUSxTQUFTUixRQUFRO1FBQ25CO0lBQ0Y7SUFFQSw0Q0FBNEM7SUFDNUNPLGFBQWFDLE1BQU0sR0FBR0E7SUFFdEIsT0FBT0Q7QUFDVCIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9zaGFyZWQvbGliL3NlcnZlci1yZWZlcmVuY2UtaW5mby50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFNlcnZlclJlZmVyZW5jZUluZm8ge1xuICB0eXBlOiAnc2VydmVyLWFjdGlvbicgfCAndXNlLWNhY2hlJ1xuICB1c2VkQXJnczogW2Jvb2xlYW4sIGJvb2xlYW4sIGJvb2xlYW4sIGJvb2xlYW4sIGJvb2xlYW4sIGJvb2xlYW5dXG4gIGhhc1Jlc3RBcmdzOiBib29sZWFuXG59XG5cbi8qKlxuICogRXh0cmFjdHMgaW5mbyBhYm91dCB0aGUgc2VydmVyIHJlZmVyZW5jZSBmb3IgdGhlIGdpdmVuIHNlcnZlciByZWZlcmVuY2UgSUQgYnlcbiAqIHBhcnNpbmcgdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIGhleC1lbmNvZGVkIElELlxuICpcbiAqIGBgYFxuICogQml0IHBvc2l0aW9uczogWzddICAgICAgWzZdIFs1XSBbNF0gWzNdIFsyXSBbMV0gIFswXVxuICogQml0czogICAgICAgICAgdHlwZUJpdCAgYXJnTWFzayAgICAgICAgICAgICAgICAgIHJlc3RBcmdzXG4gKiBgYGBcbiAqXG4gKiBJZiB0aGUgYHR5cGVCaXRgIGlzIGAxYCB0aGUgc2VydmVyIHJlZmVyZW5jZSByZXByZXNlbnRzIGEgYFwidXNlIGNhY2hlXCJgXG4gKiBmdW5jdGlvbiwgb3RoZXJ3aXNlIGEgc2VydmVyIGFjdGlvbi5cbiAqXG4gKiBUaGUgYGFyZ01hc2tgIGVuY29kZXMgd2hldGhlciB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgYXJndW1lbnQgYXQgdGhlXG4gKiByZXNwZWN0aXZlIHBvc2l0aW9uLlxuICpcbiAqIFRoZSBgcmVzdEFyZ3NgIGJpdCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgZnVuY3Rpb24gdXNlcyBhIHJlc3QgcGFyYW1ldGVyLiBJdCdzXG4gKiBhbHNvIHNldCB0byAxIGlmIHRoZSBmdW5jdGlvbiBoYXMgbW9yZSB0aGFuIDYgYXJncy5cbiAqXG4gKiBAcGFyYW0gaWQgaGV4LWVuY29kZWQgc2VydmVyIHJlZmVyZW5jZSBJRFxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEluZm9Gcm9tU2VydmVyUmVmZXJlbmNlSWQoXG4gIGlkOiBzdHJpbmdcbik6IFNlcnZlclJlZmVyZW5jZUluZm8ge1xuICBjb25zdCBpbmZvQnl0ZSA9IHBhcnNlSW50KGlkLnNsaWNlKDAsIDIpLCAxNilcbiAgY29uc3QgdHlwZUJpdCA9IChpbmZvQnl0ZSA+PiA3KSAmIDB4MVxuICBjb25zdCBhcmdNYXNrID0gKGluZm9CeXRlID4+IDEpICYgMHgzZlxuICBjb25zdCByZXN0QXJncyA9IGluZm9CeXRlICYgMHgxXG4gIGNvbnN0IHVzZWRBcmdzID0gQXJyYXkoNilcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgNjsgaW5kZXgrKykge1xuICAgIGNvbnN0IGJpdFBvc2l0aW9uID0gNSAtIGluZGV4XG4gICAgY29uc3QgYml0ID0gKGFyZ01hc2sgPj4gYml0UG9zaXRpb24pICYgMHgxXG4gICAgdXNlZEFyZ3NbaW5kZXhdID0gYml0ID09PSAxXG4gIH1cblxuICByZXR1cm4ge1xuICAgIHR5cGU6IHR5cGVCaXQgPT09IDEgPyAndXNlLWNhY2hlJyA6ICdzZXJ2ZXItYWN0aW9uJyxcbiAgICB1c2VkQXJnczogdXNlZEFyZ3MgYXMgW1xuICAgICAgYm9vbGVhbixcbiAgICAgIGJvb2xlYW4sXG4gICAgICBib29sZWFuLFxuICAgICAgYm9vbGVhbixcbiAgICAgIGJvb2xlYW4sXG4gICAgICBib29sZWFuLFxuICAgIF0sXG4gICAgaGFzUmVzdEFyZ3M6IHJlc3RBcmdzID09PSAxLFxuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNwYXJzZSBhcnJheSBjb250YWluaW5nIG9ubHkgdGhlIHVzZWQgYXJndW1lbnRzIGJhc2VkIG9uIHRoZVxuICogcHJvdmlkZWQgYWN0aW9uIGluZm8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbWl0VW51c2VkQXJncyhcbiAgYXJnczogdW5rbm93bltdLFxuICBpbmZvOiBTZXJ2ZXJSZWZlcmVuY2VJbmZvXG4pOiB1bmtub3duW10ge1xuICBjb25zdCBmaWx0ZXJlZEFyZ3MgPSBuZXcgQXJyYXkoYXJncy5sZW5ndGgpXG4gIGxldCBsZW5ndGggPSAwXG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFyZ3MubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgaWYgKFxuICAgICAgKGluZGV4IDwgNiAmJiBpbmZvLnVzZWRBcmdzW2luZGV4XSkgfHxcbiAgICAgIC8vIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSBzZXJ2ZXIgcmVmZXJlbmNlIGluZm8gYnl0ZSBoYXMgdGhlIHJlc3RBcmdzIGJpdFxuICAgICAgLy8gc2V0IHRvIDEgaWYgdGhlcmUgYXJlIG1vcmUgdGhhbiA2IGFyZ3MuXG4gICAgICAoaW5kZXggPj0gNiAmJiBpbmZvLmhhc1Jlc3RBcmdzKVxuICAgICkge1xuICAgICAgZmlsdGVyZWRBcmdzW2luZGV4XSA9IGFyZ3NbaW5kZXhdXG4gICAgICBsZW5ndGggPSBpbmRleCArIDFcbiAgICB9XG4gIH1cblxuICAvLyBUcmltIHRyYWlsaW5nIHVudXNlZCBhcmdzIGZyb20gdGhlIGFycmF5LlxuICBmaWx0ZXJlZEFyZ3MubGVuZ3RoID0gbGVuZ3RoXG5cbiAgcmV0dXJuIGZpbHRlcmVkQXJnc1xufVxuIl0sIm5hbWVzIjpbImV4dHJhY3RJbmZvRnJvbVNlcnZlclJlZmVyZW5jZUlkIiwib21pdFVudXNlZEFyZ3MiLCJpZCIsImluZm9CeXRlIiwicGFyc2VJbnQiLCJzbGljZSIsInR5cGVCaXQiLCJhcmdNYXNrIiwicmVzdEFyZ3MiLCJ1c2VkQXJncyIsIkFycmF5IiwiaW5kZXgiLCJiaXRQb3NpdGlvbiIsImJpdCIsInR5cGUiLCJoYXNSZXN0QXJncyIsImFyZ3MiLCJpbmZvIiwiZmlsdGVyZWRBcmdzIiwibGVuZ3RoIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/server-reference-info.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/size-limit.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/size-limit.js ***!
|
||
\*********************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n DEFAULT_MAX_POSTPONED_STATE_SIZE: function() {\n return DEFAULT_MAX_POSTPONED_STATE_SIZE;\n },\n parseMaxPostponedStateSize: function() {\n return parseMaxPostponedStateSize;\n }\n});\nconst DEFAULT_MAX_POSTPONED_STATE_SIZE = '100 MB';\n// 100MB in bytes. Not using the parseSizeLimit for performance as parseMaxPostponedStateSize is in the hot path for rendering.\nconst DEFAULT_MAX_POSTPONED_STATE_SIZE_BYTES = 104857600;\nfunction parseSizeLimit(size) {\n const bytes = (__webpack_require__(/*! next/dist/compiled/bytes */ \"(rsc)/./node_modules/next/dist/compiled/bytes/index.js\").parse)(size);\n if (bytes === null || isNaN(bytes) || bytes < 1) {\n return undefined;\n }\n return bytes;\n}\nfunction parseMaxPostponedStateSize(size) {\n if (!size) {\n return DEFAULT_MAX_POSTPONED_STATE_SIZE_BYTES;\n }\n return parseSizeLimit(size);\n} //# sourceMappingURL=size-limit.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvc2l6ZS1saW1pdC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFFYUEsZ0NBQWdDO2VBQWhDQTs7SUFrQkdDLDBCQUEwQjtlQUExQkE7OztBQWxCVCxNQUFNRCxtQ0FBOEM7QUFFM0QsK0hBQStIO0FBQy9ILE1BQU1FLHlDQUF5QztBQUUvQyxTQUFTQyxlQUFlQyxJQUFlO0lBQ3JDLE1BQU1DLFFBQ0pDLHFIQUNLLENBQUNGO0lBQ1IsSUFBSUMsVUFBVSxRQUFRRyxNQUFNSCxVQUFVQSxRQUFRLEdBQUc7UUFDL0MsT0FBT0k7SUFDVDtJQUNBLE9BQU9KO0FBQ1Q7QUFLTyxTQUFTSiwyQkFDZEcsSUFBMkI7SUFFM0IsSUFBSSxDQUFDQSxNQUFNO1FBQ1QsT0FBT0Y7SUFDVDtJQUNBLE9BQU9DLGVBQWVDO0FBQ3hCIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL3NoYXJlZC9saWIvc2l6ZS1saW1pdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNpemVMaW1pdCB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVhfUE9TVFBPTkVEX1NUQVRFX1NJWkU6IFNpemVMaW1pdCA9ICcxMDAgTUInXG5cbi8vIDEwME1CIGluIGJ5dGVzLiBOb3QgdXNpbmcgdGhlIHBhcnNlU2l6ZUxpbWl0IGZvciBwZXJmb3JtYW5jZSBhcyBwYXJzZU1heFBvc3Rwb25lZFN0YXRlU2l6ZSBpcyBpbiB0aGUgaG90IHBhdGggZm9yIHJlbmRlcmluZy5cbmNvbnN0IERFRkFVTFRfTUFYX1BPU1RQT05FRF9TVEFURV9TSVpFX0JZVEVTID0gMTA0Xzg1N182MDBcblxuZnVuY3Rpb24gcGFyc2VTaXplTGltaXQoc2l6ZTogU2l6ZUxpbWl0KTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgYnl0ZXMgPSAoXG4gICAgcmVxdWlyZSgnbmV4dC9kaXN0L2NvbXBpbGVkL2J5dGVzJykgYXMgdHlwZW9mIGltcG9ydCgnbmV4dC9kaXN0L2NvbXBpbGVkL2J5dGVzJylcbiAgKS5wYXJzZShzaXplKVxuICBpZiAoYnl0ZXMgPT09IG51bGwgfHwgaXNOYU4oYnl0ZXMpIHx8IGJ5dGVzIDwgMSkge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuICByZXR1cm4gYnl0ZXNcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIG1heFBvc3Rwb25lZFN0YXRlU2l6ZSBjb25maWcgdmFsdWUsIHVzaW5nIHRoZSBkZWZhdWx0IGlmIG5vdCBwcm92aWRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTWF4UG9zdHBvbmVkU3RhdGVTaXplKFxuICBzaXplOiBTaXplTGltaXQgfCB1bmRlZmluZWRcbik6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGlmICghc2l6ZSkge1xuICAgIHJldHVybiBERUZBVUxUX01BWF9QT1NUUE9ORURfU1RBVEVfU0laRV9CWVRFU1xuICB9XG4gIHJldHVybiBwYXJzZVNpemVMaW1pdChzaXplKVxufVxuIl0sIm5hbWVzIjpbIkRFRkFVTFRfTUFYX1BPU1RQT05FRF9TVEFURV9TSVpFIiwicGFyc2VNYXhQb3N0cG9uZWRTdGF0ZVNpemUiLCJERUZBVUxUX01BWF9QT1NUUE9ORURfU1RBVEVfU0laRV9CWVRFUyIsInBhcnNlU2l6ZUxpbWl0Iiwic2l6ZSIsImJ5dGVzIiwicmVxdWlyZSIsInBhcnNlIiwiaXNOYU4iLCJ1bmRlZmluZWQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/size-limit.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/utils.js":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/utils.js ***!
|
||
\****************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n DecodeError: function() {\n return DecodeError;\n },\n MiddlewareNotFoundError: function() {\n return MiddlewareNotFoundError;\n },\n MissingStaticPage: function() {\n return MissingStaticPage;\n },\n NormalizeError: function() {\n return NormalizeError;\n },\n PageNotFoundError: function() {\n return PageNotFoundError;\n },\n SP: function() {\n return SP;\n },\n ST: function() {\n return ST;\n },\n WEB_VITALS: function() {\n return WEB_VITALS;\n },\n execOnce: function() {\n return execOnce;\n },\n getDisplayName: function() {\n return getDisplayName;\n },\n getLocationOrigin: function() {\n return getLocationOrigin;\n },\n getURL: function() {\n return getURL;\n },\n isAbsoluteUrl: function() {\n return isAbsoluteUrl;\n },\n isResSent: function() {\n return isResSent;\n },\n loadGetInitialProps: function() {\n return loadGetInitialProps;\n },\n normalizeRepeatedSlashes: function() {\n return normalizeRepeatedSlashes;\n },\n stringifyError: function() {\n return stringifyError;\n }\n});\nconst WEB_VITALS = [\n 'CLS',\n 'FCP',\n 'FID',\n 'INP',\n 'LCP',\n 'TTFB'\n];\nfunction execOnce(fn) {\n let used = false;\n let result;\n return (...args)=>{\n if (!used) {\n used = true;\n result = fn(...args);\n }\n return result;\n };\n}\n// Scheme: https://tools.ietf.org/html/rfc3986#section-3.1\n// Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\nconst ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/;\nconst isAbsoluteUrl = (url)=>ABSOLUTE_URL_REGEX.test(url);\nfunction getLocationOrigin() {\n const { protocol, hostname, port } = window.location;\n return `${protocol}//${hostname}${port ? ':' + port : ''}`;\n}\nfunction getURL() {\n const { href } = window.location;\n const origin = getLocationOrigin();\n return href.substring(origin.length);\n}\nfunction getDisplayName(Component) {\n return typeof Component === 'string' ? Component : Component.displayName || Component.name || 'Unknown';\n}\nfunction isResSent(res) {\n return res.finished || res.headersSent;\n}\nfunction normalizeRepeatedSlashes(url) {\n const urlParts = url.split('?');\n const urlNoQuery = urlParts[0];\n return urlNoQuery // first we replace any non-encoded backslashes with forward\n // then normalize repeated forward slashes\n .replace(/\\\\/g, '/').replace(/\\/\\/+/g, '/') + (urlParts[1] ? `?${urlParts.slice(1).join('?')}` : '');\n}\nasync function loadGetInitialProps(App, ctx) {\n if (true) {\n if (App.prototype?.getInitialProps) {\n const message = `\"${getDisplayName(App)}.getInitialProps()\" is defined as an instance method - visit https://nextjs.org/docs/messages/get-initial-props-as-an-instance-method for more information.`;\n throw Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1035\",\n enumerable: false,\n configurable: true\n });\n }\n }\n // when called from _app `ctx` is nested in `ctx`\n const res = ctx.res || ctx.ctx && ctx.ctx.res;\n if (!App.getInitialProps) {\n if (ctx.ctx && ctx.Component) {\n // @ts-ignore pageProps default\n return {\n pageProps: await loadGetInitialProps(ctx.Component, ctx.ctx)\n };\n }\n return {};\n }\n const props = await App.getInitialProps(ctx);\n if (res && isResSent(res)) {\n return props;\n }\n if (!props) {\n const message = `\"${getDisplayName(App)}.getInitialProps()\" should resolve to an object. But found \"${props}\" instead.`;\n throw Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1025\",\n enumerable: false,\n configurable: true\n });\n }\n if (true) {\n if (Object.keys(props).length === 0 && !ctx.ctx) {\n console.warn(`${getDisplayName(App)} returned an empty object from \\`getInitialProps\\`. This de-optimizes and prevents automatic static optimization. https://nextjs.org/docs/messages/empty-object-getInitialProps`);\n }\n }\n return props;\n}\nconst SP = typeof performance !== 'undefined';\nconst ST = SP && [\n 'mark',\n 'measure',\n 'getEntriesByName'\n].every((method)=>typeof performance[method] === 'function');\nclass DecodeError extends Error {\n}\nclass NormalizeError extends Error {\n}\nclass PageNotFoundError extends Error {\n constructor(page){\n super();\n this.code = 'ENOENT';\n this.name = 'PageNotFoundError';\n this.message = `Cannot find module for page: ${page}`;\n }\n}\nclass MissingStaticPage extends Error {\n constructor(page, message){\n super();\n this.message = `Failed to load static file for page: ${page} ${message}`;\n }\n}\nclass MiddlewareNotFoundError extends Error {\n constructor(){\n super();\n this.code = 'ENOENT';\n this.message = `Cannot find the middleware module`;\n }\n}\nfunction stringifyError(error) {\n return JSON.stringify({\n message: error.message,\n stack: error.stack\n });\n} //# sourceMappingURL=utils.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvdXRpbHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBbWFhQSxXQUFXO2VBQVhBOztJQW9CQUMsdUJBQXVCO2VBQXZCQTs7SUFQQUMsaUJBQWlCO2VBQWpCQTs7SUFaQUMsY0FBYztlQUFkQTs7SUFDQUMsaUJBQWlCO2VBQWpCQTs7SUFUQUMsRUFBRTtlQUFGQTs7SUFDQUMsRUFBRTtlQUFGQTs7SUFqWEFDLFVBQVU7ZUFBVkE7O0lBcVFHQyxRQUFRO2VBQVJBOztJQStCQUMsY0FBYztlQUFkQTs7SUFYQUMsaUJBQWlCO2VBQWpCQTs7SUFLQUMsTUFBTTtlQUFOQTs7SUFQSEMsYUFBYTtlQUFiQTs7SUFtQkdDLFNBQVM7ZUFBVEE7O0lBa0JNQyxtQkFBbUI7ZUFBbkJBOztJQWROQyx3QkFBd0I7ZUFBeEJBOztJQStHQUMsY0FBYztlQUFkQTs7O0FBN1pULE1BQU1ULGFBQWE7SUFBQztJQUFPO0lBQU87SUFBTztJQUFPO0lBQU87Q0FBTztBQXFROUQsU0FBU0MsU0FDZFMsRUFBSztJQUVMLElBQUlDLE9BQU87SUFDWCxJQUFJQztJQUVKLE9BQVEsQ0FBQyxHQUFHQztRQUNWLElBQUksQ0FBQ0YsTUFBTTtZQUNUQSxPQUFPO1lBQ1BDLFNBQVNGLE1BQU1HO1FBQ2pCO1FBQ0EsT0FBT0Q7SUFDVDtBQUNGO0FBRUEsMERBQTBEO0FBQzFELGdFQUFnRTtBQUNoRSxNQUFNRSxxQkFBcUI7QUFDcEIsTUFBTVQsZ0JBQWdCLENBQUNVLE1BQWdCRCxtQkFBbUJFLElBQUksQ0FBQ0Q7QUFFL0QsU0FBU1o7SUFDZCxNQUFNLEVBQUVjLFFBQVEsRUFBRUMsUUFBUSxFQUFFQyxJQUFJLEVBQUUsR0FBR0MsT0FBT0MsUUFBUTtJQUNwRCxPQUFPLEdBQUdKLFNBQVMsRUFBRSxFQUFFQyxXQUFXQyxPQUFPLE1BQU1BLE9BQU8sSUFBSTtBQUM1RDtBQUVPLFNBQVNmO0lBQ2QsTUFBTSxFQUFFa0IsSUFB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Q0FBQyw2QkFBNkIsRUFBRVksTUFBTTtJQUN2RDtBQUNGO0FBRU8sTUFBTTlELDBCQUEwQm1EO0lBQ3JDVSxZQUFZQyxJQUFZLEVBQUVaLE9BQWUsQ0FBRTtRQUN6QyxLQUFLO1FBQ0wsSUFBSSxDQUFDQSxPQUFPLEdBQUcsQ0FBQyxxQ0FBcUMsRUFBRVksS0FBSyxDQUFDLEVBQUVaLFNBQVM7SUFDMUU7QUFDRjtBQUVPLE1BQU1uRCxnQ0FBZ0NvRDtJQUUzQ1UsYUFBYztRQUNaLEtBQUs7UUFDTCxJQUFJLENBQUNFLElBQUksR0FBRztRQUNaLElBQUksQ0FBQ2IsT0FBTyxHQUFHLENBQUMsaUNBQWlDLENBQUM7SUFDcEQ7QUFDRjtBQVdPLFNBQVNwQyxlQUFla0QsS0FBWTtJQUN6QyxPQUFPQyxLQUFLQyxTQUFTLENBQUM7UUFBRWhCLFNBQVNjLE1BQU1kLE9BQU87UUFBRWlCLE9BQU9ILE1BQU1HLEtBQUs7SUFBQztBQUNyRSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9zaGFyZWQvbGliL3V0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSHRtbFByb3BzIH0gZnJvbSAnLi9odG1sLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudFR5cGUsIEpTWCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHR5cGUgeyBEb21haW5Mb2NhbGUgfSBmcm9tICcuLi8uLi9zZXJ2ZXIvY29uZmlnJ1xuaW1wb3J0IHR5cGUgeyBFbnYgfSBmcm9tICdAbmV4dC9lbnYnXG5pbXBvcnQgdHlwZSB7IEluY29taW5nTWVzc2FnZSwgU2VydmVyUmVzcG9uc2UgfSBmcm9tICdodHRwJ1xuaW1wb3J0IHR5cGUgeyBOZXh0Um91dGVyIH0gZnJvbSAnLi9yb3V0ZXIvcm91dGVyJ1xuaW1wb3J0IHR5cGUgeyBQYXJzZWRVcmxRdWVyeSB9IGZyb20gJ3F1ZXJ5c3RyaW5nJ1xuaW1wb3J0IHR5cGUgeyBQcmV2aWV3RGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBDT01QSUxFUl9OQU1FUyB9IGZyb20gJy4vY29uc3RhbnRzJ1xuaW1wb3J0IHR5cGUgZnMgZnJvbSAnZnMnXG5cbmV4cG9ydCB0eXBlIE5leHRDb21wb25lbnRUeXBlPFxuICBDb250ZXh0IGV4dGVuZHMgQmFzZUNvbnRleHQgPSBOZXh0UGFnZUNvbnRleHQsXG4gIEluaXRpYWxQcm9wcyA9IHt9LFxuICBQcm9wcyA9IHt9LFxuPiA9IENvbXBvbmVudFR5cGU8UHJvcHM+ICYge1xuICAvKipcbiAgICogVXNlZCBmb3IgaW5pdGlhbCBwYWdlIGxvYWQgZGF0YSBwb3B1bGF0aW9uLiBEYXRhIHJldHVybmVkIGZyb20gYGdldEluaXRpYWxQcm9wc2AgaXMgc2VyaWFsaXplZCB3aGVuIHNlcnZlciByZW5kZXJlZC5cbiAgICogTWFrZSBzdXJlIHRvIHJldHVybiBwbGFpbiBgT2JqZWN0YCB3aXRob3V0IHVzaW5nIGBEYXRlYCwgYE1hcGAsIGBTZXRgLlxuICAgKiBAcGFyYW0gY29udGV4dCBDb250ZXh0IG9mIGBwYWdlYFxuICAgKi9cbiAgZ2V0SW5pdGlhbFByb3BzPyhjb250ZXh0OiBDb250ZXh0KTogSW5pdGlhbFByb3BzIHwgUHJvbWlzZTxJbml0aWFsUHJvcHM+XG59XG5cbmV4cG9ydCB0eXBlIERvY3VtZW50VHlwZSA9IE5leHRDb21wb25lbnRUeXBlPFxuICBEb2N1bWVudENvbnRleHQsXG4gIERvY3VtZW50SW5pdGlhbFByb3BzLFxuICBEb2N1bWVudFByb3BzXG4+XG5cbmV4cG9ydCB0eXBlIEFwcFR5cGU8UCA9IHt9PiA9IE5leHRDb21wb25lbnRUeXBlPFxuICBBcHBDb250ZXh0VHlwZSxcbiAgUCxcbiAgQXBwUHJvcHNUeXBlPGFueSwgUD5cbj5cblxuZXhwb3J0IHR5cGUgQXBwVHJlZVR5cGUgPSBDb21wb25lbnRUeXBlPFxuICBBcHBJbml0aWFsUHJvcHMgJiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfVxuPlxuXG4vKipcbiAqIFdlYiB2aXRhbHMgcHJvdmlkZWQgdG8gX2FwcC5yZXBvcnRXZWJWaXRhbHMgYnkgQ29yZSBXZWIgVml0YWxzIHBsdWdpbiBkZXZlbG9wZWQgYnkgR29vZ2xlIENocm9tZSB0ZWFtLlxuICogaHR0cHM6Ly9uZXh0anMub3JnL2Jsb2cvbmV4dC05LTQjaW50ZWdyYXRlZC13ZWItdml0YWxzLXJlcG9ydGluZ1xuICovXG5leHBvcnQgY29uc3QgV0VCX1ZJVEFMUyA9IFsnQ0xTJywgJ0ZDUCcsICdGSUQnLCAnSU5QJywgJ0xDUCcsICdUVEZCJ10gYXMgY29uc3RcbmV4cG9ydCB0eXBlIE5leHRXZWJWaXRhbHNNZXRyaWMgPSB7XG4gIGlkOiBzdHJpbmdcbiAgc3RhcnRUaW1lOiBudW1iZXJcbiAgdmFsdWU6IG51bWJlclxuICBhdHRyaWJ1dGlvbj86IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9XG59ICYgKFxuICB8IHtcbiAgICAgIGxhYmVsOiAnd2ViLXZpdGFsJ1xuICAgICAgbmFtZTogKHR5cGVvZiBXRUJfVklUQUxTKVtudW1iZXJdXG4gICAgfVxuICB8IHtcbiAgICAgIGxhYmVsOiAnY3VzdG9tJ1xuICAgICAgbmFtZTpcbiAgICAgICAgfCAnTmV4dC5qcy1oeWRyYXRpb24nXG4gICAgICAgIHwgJ05leHQuanMtcm91dGUtY2hhbmdlLXRvLXJlbmRlcidcbiAgICAgICAgfCAnTmV4dC5qcy1yZW5kZXInXG4gICAgfVxuKVxuXG5leHBvcnQgdHlwZSBFbmhhbmNlcjxDPiA9IChDb21wb25lbnQ6IEMpID0+IENcblxuZXhwb3J0IHR5cGUgQ29tcG9uZW50c0VuaGFuY2VyID1cbiAgfCB7XG4gICAgICBlbmhhbmNlQXBwPzogRW5oYW5jZXI8QXBwVHlwZT5cbiAgICAgIGVuaGFuY2VDb21wb25lbnQ/OiBFbmhhbmNlcjxOZXh0Q29tcG9uZW50VHlwZT5cbiAgICB9XG4gIHwgRW5oYW5jZXI8TmV4dENvbXBvbmVudFR5cGU+XG5cbmV4cG9ydCB0eXBlIFJlbmRlclBhZ2VSZXN1bHQgPSB7XG4gIGh0bWw6IHN0cmluZ1xuICBoZWFkPzogQXJyYXk8SlNYLkVsZW1lbnQgfCBudWxsPlxufVxuXG5leHBvcnQgdHlwZSBSZW5kZXJQYWdlID0gKFxuICBvcHRpb25zPzogQ29tcG9uZW50c0VuaGFuY2VyXG4pID0+IERvY3VtZW50SW5pdGlhbFByb3BzIHwgUHJvbWlzZTxEb2N1bWVudEluaXRpYWxQcm9wcz5cblxuZXhwb3J0IHR5cGUgQmFzZUNvbnRleHQgPSB7XG4gIHJlcz86IFNlcnZlclJlc3BvbnNlXG4gIFtrOiBzdHJpbmddOiBhbnlcbn1cblxuZXhwb3J0IHR5cGUgTkVYVF9EQVRBID0ge1xuICBwcm9wczogUmVjb3JkPHN0cmluZywgYW55PlxuICBwYWdlOiBzdHJpbmdcbiAgcXVlcnk6IFBhcnNlZFVybFF1ZXJ5XG4gIGJ1aWxkSWQ6IHN0cmluZ1xuICBhc3NldFByZWZpeD86IHN0cmluZ1xuICBuZXh0RXhwb3J0PzogYm9vbGVhblxuICBhdXRvRXhwb3J0PzogYm9vbGVhblxuICBpc0ZhbGxiYWNrPzogYm9vbGVhblxuICBpc0V4cGVyaW1lbnRhbENvbXBpbGU/OiBib29sZWFuXG4gIGR5bmFtaWNJZHM/OiAoc3RyaW5nIHwgbnVtYmVyKVtdXG4gIGVycj86IEVycm9yICYge1xuICAgIHN0YXR1c0NvZGU/OiBudW1iZXJcbiAgICBzb3VyY2U/OiB0eXBlb2YgQ09NUElMRVJfTkFNRVMuc2VydmVyIHwgdHlwZW9mIENPTVBJTEVSX05BTUVTLmVkZ2VTZXJ2ZXJcbiAgfVxuICBnc3A/OiBib29sZWFuXG4gIGdzc3A/OiBib29sZWFuXG4gIGN1c3RvbVNlcnZlcj86IGJvb2xlYW5cbiAgZ2lwPzogYm9vbGVhblxuICBhcHBHaXA/OiBib29sZWFuXG4gIGxvY2FsZT86IHN0cmluZ1xuICBsb2NhbGVzPzogcmVhZG9ubHkgc3RyaW5nW11cbiAgZGVmYXVsdExvY2FsZT86IHN0cmluZ1xuICBkb21haW5Mb2NhbGVzPzogcmVhZG9ubHkgRG9tYWluTG9jYWxlW11cbiAgc2NyaXB0TG9hZGVyPzogYW55W11cbiAgaXNQcmV2aWV3PzogYm9vbGVhblxuICBub3RGb3VuZFNyY1BhZ2U/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiBgTmV4dGAgY29udGV4dFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5leHRQYWdlQ29udGV4dCB7XG4gIC8qKlxuICAgKiBFcnJvciBvYmplY3QgaWYgZW5jb3VudGVyZWQgZHVyaW5nIHJlbmRlcmluZ1xuICAgKi9cbiAgZXJyPzogKEVycm9yICYgeyBzdGF0dXNDb2RlPzogbnVtYmVyIH0pIHwgbnVsbFxuICAvKipcbiAgICogYEhUVFBgIHJlcXVlc3Qgb2JqZWN0LlxuICAgKi9cbiAgcmVxPzogSW5jb21pbmdNZXNzYWdlXG4gIC8qKlxuICAgKiBgSFRUUGAgcmVzcG9uc2Ugb2JqZWN0LlxuICAgKi9cbiAgcmVzPzogU2VydmVyUmVzcG9uc2VcbiAgLyoqXG4gICAqIFBhdGggc2VjdGlvbiBvZiBgVVJMYC5cbiAgICovXG4gIHBhdGhuYW1lOiBzdHJpbmdcbiAgLyoqXG4gICAqIFF1ZXJ5IHN0cmluZyBzZWN0aW9uIG9mIGBVUkxgIHBhcnNlZCBhcyBhbiBvYmplY3QuXG4gICAqL1xuICBxdWVyeTogUGFyc2VkVXJsUXVlcnlcbiAgLyoqXG4gICAqIGBTdHJpbmdgIG9mIHRoZSBhY3R1YWwgcGF0aCBpbmNsdWRpbmcgcXVlcnkuXG4gICAqL1xuICBhc1BhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50bHkgYWN0aXZlIGxvY2FsZVxuICAgKi9cbiAgbG9jYWxlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBBbGwgY29uZmlndXJlZCBsb2NhbGVzXG4gICAqL1xuICBsb2NhbGVzPzogcmVhZG9ubHkgc3RyaW5nW11cbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmVkIGRlZmF1bHQgbG9jYWxlXG4gICAqL1xuICBkZWZhdWx0TG9jYWxlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBgQ29tcG9uZW50YCB0aGUgdHJlZSBvZiB0aGUgQXBwIHRvIHVzZSBpZiBuZWVkaW5nIHRvIHJlbmRlciBzZXBhcmF0ZWx5XG4gICAqL1xuICBBcHBUcmVlOiBBcHBUcmVlVHlwZVxufVxuXG5leHBvcnQgdHlwZSBBcHBDb250ZXh0VHlwZTxSb3V0ZXIgZXh0ZW5kcyBOZXh0Um91dGVyID0gTmV4dFJvdXRlcj4gPSB7XG4gIENvbXBvbmVudDogTmV4dENvbXBvbmVudFR5cGU8TmV4dFBhZ2VDb250ZXh0PlxuICBBcHBUcmVlOiBBcHBUcmVlVHlwZVxuICBjdHg6IE5leHRQYWdlQ29udGV4dFxuICByb3V0ZXI6IFJvdXRlclxufVxuXG5leHBvcnQgdHlwZSBBcHBJbml0aWFsUHJvcHM8UGFnZVByb3BzID0gYW55PiA9IHtcbiAgcGFnZVByb3BzOiBQYWdlUHJvcHNcbn1cblxuZXhwb3J0IHR5cGUgQXBwUHJvcHNUeXBlPFxuICBSb3V0ZXIgZXh0ZW5kcyBOZXh0Um91dGVyID0gTmV4dFJvdXRlcixcbiAgUGFnZVByb3BzID0ge30sXG4+ID0gQXBwSW5pdGlhbFByb3BzPFBhZ2VQcm9wcz4gJiB7XG4gIENvbXBvbmVudDogTmV4dENvbXBvbmVudFR5cGU8TmV4dFBhZ2VDb250ZXh0LCBhbnksIGFueT5cbiAgcm91dGVyOiBSb3V0ZXJcbiAgX19OX1NTRz86IGJvb2xlYW5cbiAgX19OX1NTUD86IGJvb2xlYW5cbn1cblxuZXhwb3J0IHR5cGUgRG9jdW1lbnRDb250ZXh0ID0gTmV4dFBhZ2VDb250ZXh0ICYge1xuICByZW5kZXJQYWdlOiBSZW5kZXJQYWdlXG4gIGRlZmF1bHRHZXRJbml0aWFsUHJvcHMoXG4gICAgY3R4OiBEb2N1bWVudENvbnRleHQsXG4gICAgb3B0aW9ucz86IHsgbm9uY2U/OiBzdHJpbmcgfVxuICApOiBQcm9taXNlPERvY3VtZW50SW5pdGlhbFByb3BzPlxufVxuXG5leHBvcnQgdHlwZSBEb2N1bWVudEluaXRpYWxQcm9wcyA9IFJlbmRlclBhZ2VSZXN1bHQgJiB7XG4gIHN0eWxlcz86IFJlYWN0LlJlYWN0RWxlbWVudFtdIHwgSXRlcmFibGU8UmVhY3QuUmVhY3ROb2RlPiB8IEpTWC5FbGVtZW50XG59XG5cbmV4cG9ydCB0eXBlIERvY3VtZW50UHJvcHMgPSBEb2N1bWVudEluaXRpYWxQcm9wcyAmIEh0bWxQcm9wc1xuXG4vKipcbiAqIE5leHQgYEFQSWAgcm91dGUgcmVxdWVzdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5leHRBcGlSZXF1ZXN0IGV4dGVuZHMgSW5jb21pbmdNZXNzYWdlIHtcbiAgLyoqXG4gICAqIE9iamVjdCBvZiBgcXVlcnlgIHZhbHVlcyBmcm9tIHVybFxuICAgKi9cbiAgcXVlcnk6IFBhcnRpYWw8e1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdXG4gIH0+XG4gIC8qKlxuICAgKiBPYmplY3Qgb2YgYGNvb2tpZXNgIGZyb20gaGVhZGVyXG4gICAqL1xuICBjb29raWVzOiBQYXJ0aWFsPHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmdcbiAgfT5cblxuICBib2R5OiBhbnlcblxuICBlbnY6IEVudlxuXG4gIGRyYWZ0TW9kZT86IGJvb2xlYW5cblxuICBwcmV2aWV3PzogYm9vbGVhblxuICAvKipcbiAgICogUHJldmlldyBkYXRhIHNldCBvbiB0aGUgcmVxdWVzdCwgaWYgYW55XG4gICAqICovXG4gIHByZXZpZXdEYXRhPzogUHJldmlld0RhdGFcbn1cblxuLyoqXG4gKiBTZW5kIGJvZHkgb2YgcmVzcG9uc2VcbiAqL1xudHlwZSBTZW5kPFQ+ID0gKGJvZHk6IFQpID0+IHZvaWRcblxuLyoqXG4gKiBOZXh0IGBBUElgIHJvdXRlIHJlc3BvbnNlXG4gKi9cbmV4cG9ydCB0eXBlIE5leHRBcGlSZXNwb25zZTxEYXRhID0gYW55PiA9IFNlcnZlclJlc3BvbnNlICYge1xuICAvKipcbiAgICogU2VuZCBkYXRhIGBhbnlgIGRhdGEgaW4gcmVzcG9uc2VcbiAgICovXG4gIHNlbmQ6IFNlbmQ8RGF0YT5cbiAgLyoqXG4gICAqIFNlbmQgZGF0YSBganNvbmAgZGF0YSBpbiByZXNwb25zZVxuICAgKi9cbiAganNvbjogU2VuZDxEYXRhPlxuICBzdGF0dXM6IChzdGF0dXNDb2RlOiBudW1iZXIpID0+IE5leHRBcGlSZXNwb25zZTxEYXRhPlxuICByZWRpcmVjdCh1cmw6IHN0cmluZyk6IE5leHRBcGlSZXNwb25zZTxEYXRhPlxuICByZWRpcmVjdChzdGF0dXM6IG51bWJlciwgdXJsOiBzdHJpbmcpOiBOZXh0QXBpUmVzcG9uc2U8RGF0YT5cblxuICAvKipcbiAgICogU2V0IGRyYWZ0IG1vZGVcbiAgICovXG4gIHNldERyYWZ0TW9kZTogKG9wdGlvbnM6IHsgZW5hYmxlOiBib29sZWFuIH0pID0+IE5leHRBcGlSZXNwb25zZTxEYXRhPlxuXG4gIC8qKlxuICAgKiBTZXQgcHJldmlldyBkYXRhIGZvciBOZXh0LmpzJyBwcmVyZW5kZXIgbW9kZVxuICAgKi9cbiAgc2V0UHJldmlld0RhdGE6IChcbiAgICBkYXRhOiBvYmplY3QgfCBzdHJpbmcsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIC8qKlxuICAgICAgICogU3BlY2lmaWVzIHRoZSBudW1iZXIgKGluIHNlY29uZHMpIGZvciB0aGUgcHJldmlldyBzZXNzaW9uIHRvIGxhc3QgZm9yLlxuICAgICAgICogVGhlIGdpdmVuIG51bWJlciB3aWxsIGJlIGNvbnZlcnRlZCB0byBhbiBpbnRlZ2VyIGJ5IHJvdW5kaW5nIGRvd24uXG4gICAgICAgKiBCeSBkZWZhdWx0LCBubyBtYXhpbXVtIGFnZSBpcyBzZXQgYW5kIHRoZSBwcmV2aWV3IHNlc3Npb24gZmluaXNoZXNcbiAgICAgICAqIHdoZW4gdGhlIGNsaWVudCBzaHV0cyBkb3duIChicm93c2VyIGlzIGNsb3NlZCkuXG4gICAgICAgKi9cbiAgICAgIG1heEFnZT86IG51bWJlclxuICAgICAgLyoqXG4gICAgICAgKiBTcGVjaWZpZXMgdGhlIHBhdGggZm9yIHRoZSBwcmV2aWV3IHNlc3Npb24gdG8gd29yayB1bmRlci4gQnkgZGVmYXVsdCxcbiAgICAgICAqIHRoZSBwYXRoIGlzIGNvbnNpZGVyZWQgdGhlIFwiZGVmYXVsdCBwYXRoXCIsIGkuZS4sIGFueSBwYWdlcyB1bmRlciBcIi9cIi5cbiAgICAgICAqL1xuICAgICAgcGF0aD86IHN0cmluZ1xuICAgIH1cbiAgKSA9PiBOZXh0QXBpUmVzcG9uc2U8RGF0YT5cblxuICAvKipcbiAgICogQ2xlYXIgcHJldmlldyBkYXRhIGZvciBOZXh0LmpzJyBwcmVyZW5kZXIgbW9kZVxuICAgKi9cbiAgY2xlYXJQcmV2aWV3RGF0YTogKG9wdGlvbnM/OiB7IHBhdGg/OiBzdHJpbmcgfSkgPT4gTmV4dEFwaVJlc3BvbnNlPERhdGE+XG5cbiAgLyoqXG4gICAqIFJldmFsaWRhdGUgYSBzcGVjaWZpYyBwYWdlIGFuZCByZWdlbmVyYXRlIGl0IHVzaW5nIE9uLURlbWFuZCBJbmNyZW1lbnRhbFxuICAgKiBTdGF0aWMgUmVnZW5lcmF0aW9uLlxuICAgKiBUaGUgcGF0aCBzaG91bGQgYmUgYW4gYWN0dWFsIHBhdGgsIG5vdCBhIHJld3JpdHRlbiBwYXRoLiBFLmcuIGZvclxuICAgKiBcIi9ibG9nL1tzbHVnXVwiIHRoaXMgc2hvdWxkIGJlIFwiL2Jsb2cvcG9zdC0xXCIuXG4gICAqIEBsaW5rIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL2RhdGEtZmV0Y2hpbmcvaW5jcmVtZW50YWwtc3RhdGljLXJlZ2VuZXJhdGlvbiNvbi1kZW1hbmQtcmV2YWxpZGF0aW9uLXdpdGgtcmV2YWxpZGF0ZXBhdGhcbiAgICovXG4gIHJldmFsaWRhdGU6IChcbiAgICB1cmxQYXRoOiBzdHJpbmcsXG4gICAgb3B0cz86IHtcbiAgICAgIHVuc3RhYmxlX29ubHlHZW5lcmF0ZWQ/OiBib29sZWFuXG4gICAgfVxuICApID0+IFByb21pc2U8dm9pZD5cbn1cblxuLyoqXG4gKiBOZXh0IGBBUElgIHJvdXRlIGhhbmRsZXJcbiAqL1xuZXhwb3J0IHR5cGUgTmV4dEFwaUhhbmRsZXI8VCA9IGFueT4gPSAoXG4gIHJlcTogTmV4dEFwaVJlcXVlc3QsXG4gIHJlczogTmV4dEFwaVJlc3BvbnNlPFQ+XG4pID0+IHVua25vd24gfCBQcm9taXNlPHVua25vd24+XG5cbi8qKlxuICogVXRpbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4ZWNPbmNlPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IFJldHVyblR5cGU8VD4+KFxuICBmbjogVFxuKTogVCB7XG4gIGxldCB1c2VkID0gZmFsc2VcbiAgbGV0IHJlc3VsdDogUmV0dXJuVHlwZTxUPlxuXG4gIHJldHVybiAoKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgaWYgKCF1c2VkKSB7XG4gICAgICB1c2VkID0gdHJ1ZVxuICAgICAgcmVzdWx0ID0gZm4oLi4uYXJncylcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9KSBhcyBUXG59XG5cbi8vIFNjaGVtZTogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0zLjFcbi8vIEFic29sdXRlIFVSTDogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi00LjNcbmNvbnN0IEFCU09MVVRFX1VSTF9SRUdFWCA9IC9eW2EtekEtWl1bYS16QS1aXFxkK1xcLS5dKj86L1xuZXhwb3J0IGNvbnN0IGlzQWJzb2x1dGVVcmwgPSAodXJsOiBzdHJpbmcpID0+IEFCU09MVVRFX1VSTF9SRUdFWC50ZXN0KHVybClcblxuZXhwb3J0IGZ1bmN0aW9uIGdldExvY2F0aW9uT3JpZ2luKCkge1xuICBjb25zdCB7IHByb3RvY29sLCBob3N0bmFtZSwgcG9ydCB9ID0gd2luZG93LmxvY2F0aW9uXG4gIHJldHVybiBgJHtwcm90b2NvbH0vLyR7aG9zdG5hbWV9JHtwb3J0ID8gJzonICsgcG9ydCA6ICcnfWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFVSTCgpIHtcbiAgY29uc3QgeyBocmVmIH0gPSB3aW5kb3cubG9jYXRpb25cbiAgY29uc3Qgb3JpZ2luID0gZ2V0TG9jYXRpb25PcmlnaW4oKVxuICByZXR1cm4gaHJlZi5zdWJzdHJpbmcob3JpZ2luLmxlbmd0aClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpc3BsYXlOYW1lPFA+KENvbXBvbmVudDogQ29tcG9uZW50VHlwZTxQPikge1xuICByZXR1cm4gdHlwZW9mIENvbXBvbmVudCA9PT0gJ3N0cmluZydcbiAgICA/IENvbXBvbmVudFxuICAgIDogQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdVbmtub3duJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZXNTZW50KHJlczogU2VydmVyUmVzcG9uc2UpIHtcbiAgcmV0dXJuIHJlcy5maW5pc2hlZCB8fCByZXMuaGVhZGVyc1NlbnRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVJlcGVhdGVkU2xhc2hlcyh1cmw6IHN0cmluZykge1xuICBjb25zdCB1cmxQYXJ0cyA9IHVybC5zcGxpdCgnPycpXG4gIGNvbnN0IHVybE5vUXVlcnkgPSB1cmxQYXJ0c1swXVxuXG4gIHJldHVybiAoXG4gICAgdXJsTm9RdWVyeVxuICAgICAgLy8gZmlyc3Qgd2UgcmVwbGFjZSBhbnkgbm9uLWVuY29kZWQgYmFja3NsYXNoZXMgd2l0aCBmb3J3YXJkXG4gICAgICAvLyB0aGVuIG5vcm1hbGl6ZSByZXBlYXRlZCBmb3J3YXJkIHNsYXNoZXNcbiAgICAgIC5yZXBsYWNlKC9cXFxcL2csICcvJylcbiAgICAgIC5yZXBsYWNlKC9cXC9cXC8rL2csICcvJykgK1xuICAgICh1cmxQYXJ0c1sxXSA/IGA/JHt1cmxQYXJ0cy5zbGljZSgxKS5qb2luKCc/Jyl9YCA6ICcnKVxuICApXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkR2V0SW5pdGlhbFByb3BzPFxuICBDIGV4dGVuZHMgQmFzZUNvbnRleHQsXG4gIElQID0ge30sXG4gIFAgPSB7fSxcbj4oQXBwOiBOZXh0Q29tcG9uZW50VHlwZTxDLCBJUCwgUD4sIGN0eDogQyk6IFByb21pc2U8SVA+IHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAoQXBwLnByb3RvdHlwZT8uZ2V0SW5pdGlhbFByb3BzKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYFwiJHtnZXREaXNwbGF5TmFtZShcbiAgICAgICAgQXBwXG4gICAgICApfS5nZXRJbml0aWFsUHJvcHMoKVwiIGlzIGRlZmluZWQgYXMgYW4gaW5zdGFuY2UgbWV0aG9kIC0gdmlzaXQgaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZ2V0LWluaXRpYWwtcHJvcHMtYXMtYW4taW5zdGFuY2UtbWV0aG9kIGZvciBtb3JlIGluZm9ybWF0aW9uLmBcbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKVxuICAgIH1cbiAgfVxuICAvLyB3aGVuIGNhbGxlZCBmcm9tIF9hcHAgYGN0eGAgaXMgbmVzdGVkIGluIGBjdHhgXG4gIGNvbnN0IHJlcyA9IGN0eC5yZXMgfHwgKGN0eC5jdHggJiYgY3R4LmN0eC5yZXMpXG5cbiAgaWYgKCFBcHAuZ2V0SW5pdGlhbFByb3BzKSB7XG4gICAgaWYgKGN0eC5jdHggJiYgY3R4LkNvbXBvbmVudCkge1xuICAgICAgLy8gQHRzLWlnbm9yZSBwYWdlUHJvcHMgZGVmYXVsdFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGFnZVByb3BzOiBhd2FpdCBsb2FkR2V0SW5pdGlhbFByb3BzKGN0eC5Db21wb25lbnQsIGN0eC5jdHgpLFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge30gYXMgSVBcbiAgfVxuXG4gIGNvbnN0IHByb3BzID0gYXdhaXQgQXBwLmdldEluaXRpYWxQcm9wcyhjdHgpXG5cbiAgaWYgKHJlcyAmJiBpc1Jlc1NlbnQocmVzKSkge1xuICAgIHJldHVybiBwcm9wc1xuICB9XG5cbiAgaWYgKCFwcm9wcykge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBgXCIke2dldERpc3BsYXlOYW1lKFxuICAgICAgQXBwXG4gICAgKX0uZ2V0SW5pdGlhbFByb3BzKClcIiBzaG91bGQgcmVzb2x2ZSB0byBhbiBvYmplY3QuIEJ1dCBmb3VuZCBcIiR7cHJvcHN9XCIgaW5zdGVhZC5gXG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpXG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmIChPYmplY3Qua2V5cyhwcm9wcykubGVuZ3RoID09PSAwICYmICFjdHguY3R4KSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGAke2dldERpc3BsYXlOYW1lKFxuICAgICAgICAgIEFwcFxuICAgICAgICApfSByZXR1cm5lZCBhbiBlbXB0eSBvYmplY3QgZnJvbSBcXGBnZXRJbml0aWFsUHJvcHNcXGAuIFRoaXMgZGUtb3B0aW1pemVzIGFuZCBwcmV2ZW50cyBhdXRvbWF0aWMgc3RhdGljIG9wdGltaXphdGlvbi4gaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZW1wdHktb2JqZWN0LWdldEluaXRpYWxQcm9wc2BcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJvcHNcbn1cblxuZXhwb3J0IGNvbnN0IFNQID0gdHlwZW9mIHBlcmZvcm1hbmNlICE9PSAndW5kZWZpbmVkJ1xuZXhwb3J0IGNvbnN0IFNUID1cbiAgU1AgJiZcbiAgKFsnbWFyaycsICdtZWFzdXJlJywgJ2dldEVudHJpZXNCeU5hbWUnXSBhcyBjb25zdCkuZXZlcnkoXG4gICAgKG1ldGhvZCkgPT4gdHlwZW9mIHBlcmZvcm1hbmNlW21ldGhvZF0gPT09ICdmdW5jdGlvbidcbiAgKVxuXG5leHBvcnQgY2xhc3MgRGVjb2RlRXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuZXhwb3J0IGNsYXNzIE5vcm1hbGl6ZUVycm9yIGV4dGVuZHMgRXJyb3Ige31cbmV4cG9ydCBjbGFzcyBQYWdlTm90Rm91bmRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29kZTogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IocGFnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKVxuICAgIHRoaXMuY29kZSA9ICdFTk9FTlQnXG4gICAgdGhpcy5uYW1lID0gJ1BhZ2VOb3RGb3VuZEVycm9yJ1xuICAgIHRoaXMubWVzc2FnZSA9IGBDYW5ub3QgZmluZCBtb2R1bGUgZm9yIHBhZ2U6ICR7cGFnZX1gXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1pc3NpbmdTdGF0aWNQYWdlIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihwYWdlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKClcbiAgICB0aGlzLm1lc3NhZ2UgPSBgRmFpbGVkIHRvIGxvYWQgc3RhdGljIGZpbGUgZm9yIHBhZ2U6ICR7cGFnZX0gJHttZXNzYWdlfWBcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTWlkZGxld2FyZU5vdEZvdW5kRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvZGU6IHN0cmluZ1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpXG4gICAgdGhpcy5jb2RlID0gJ0VOT0VOVCdcbiAgICB0aGlzLm1lc3NhZ2UgPSBgQ2Fubm90IGZpbmQgdGhlIG1pZGRsZXdhcmUgbW9kdWxlYFxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FjaGVGcyB7XG4gIGV4aXN0c1N5bmM6IHR5cGVvZiBmcy5leGlzdHNTeW5jXG4gIHJlYWRGaWxlOiB0eXBlb2YgZnMucHJvbWlzZXMucmVhZEZpbGVcbiAgcmVhZEZpbGVTeW5jOiB0eXBlb2YgZnMucmVhZEZpbGVTeW5jXG4gIHdyaXRlRmlsZShmOiBzdHJpbmcsIGQ6IGFueSk6IFByb21pc2U8dm9pZD5cbiAgbWtkaXIoZGlyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQgfCBzdHJpbmc+XG4gIHN0YXQoZjogc3RyaW5nKTogUHJvbWlzZTx7IG10aW1lOiBEYXRlIH0+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnlFcnJvcihlcnJvcjogRXJyb3IpIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHsgbWVzc2FnZTogZXJyb3IubWVzc2FnZSwgc3RhY2s6IGVycm9yLnN0YWNrIH0pXG59XG4iXSwibmFtZXMiOlsiRGVjb2RlRXJyb3IiLCJNaWRkbGV3YXJlTm90Rm91bmRFcnJvciIsIk1pc3NpbmdTdGF0aWNQYWdlIiwiTm9ybWFsaXplRXJyb3IiLCJQYWdlTm90Rm91bmRFcnJvciIsIlNQIiwiU1QiLCJXRUJfVklUQUxTIiwiZXhlY09uY2UiLCJnZXREaXNwbGF5TmFtZSIsImdldExvY2F0aW9uT3JpZ2luIiwiZ2V0VVJMIiwiaXNBYnNvbHV0ZVVybCIsImlzUmVzU2VudCIsImxvYWRHZXRJbml0aWFsUHJvcHMiLCJub3JtYWxpemVSZXBlYXRlZFNsYXNoZXMiLCJzdHJpbmdpZnlFcnJvciIsImZuIiwidXNlZCIsInJlc3VsdCIsImFyZ3MiLCJBQlNPTFVURV9VUkxfUkVHRVgiLCJ1cmwiLCJ0ZXN0IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsInBvcnQiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJvcmlnaW4iLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJDb21wb25lbnQiLCJkaXNwbGF5TmFtZSIsIm5hbWUiLCJyZXMiLCJmaW5pc2hlZCIsImhlYWRlcnNTZW50IiwidXJsUGFydHMiLCJzcGxpdCIsInVybE5vUXVlcnkiLCJyZXBsYWNlIiwic2xpY2UiLCJqb2luIiwiQXBwIiwiY3R4IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwicHJvdG90eXBlIiwiZ2V0SW5pdGlhbFByb3BzIiwibWVzc2FnZSIsIkVycm9yIiwicGFnZVByb3BzIiwicHJvcHMiLCJPYmplY3QiLCJrZXlzIiwiY29uc29sZSIsIndhcm4iLCJwZXJmb3JtYW5jZSIsImV2ZXJ5IiwibWV0aG9kIiwiY29uc3RydWN0b3IiLCJwYWdlIiwiY29kZSIsImVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YWNrIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/utils.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/dist/shared/lib/utils/reflect-utils.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/utils/reflect-utils.js ***!
|
||
\******************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("// This regex will have fast negatives meaning valid identifiers may not pass\n// this test. However this is only used during static generation to provide hints\n// about why a page bailed out of some or all prerendering and we can use bracket notation\n// for example while `ಠ_ಠ` is a valid identifier it's ok to print `searchParams['ಠ_ಠ']`\n// even if this would have been fine too `searchParams.ಠ_ಠ`\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n describeHasCheckingStringProperty: function() {\n return describeHasCheckingStringProperty;\n },\n describeStringPropertyAccess: function() {\n return describeStringPropertyAccess;\n },\n wellKnownProperties: function() {\n return wellKnownProperties;\n }\n});\nconst isDefinitelyAValidIdentifier = /^[A-Za-z_$][A-Za-z0-9_$]*$/;\nfunction describeStringPropertyAccess(target, prop) {\n if (isDefinitelyAValidIdentifier.test(prop)) {\n return `\\`${target}.${prop}\\``;\n }\n return `\\`${target}[${JSON.stringify(prop)}]\\``;\n}\nfunction describeHasCheckingStringProperty(target, prop) {\n const stringifiedProp = JSON.stringify(prop);\n return `\\`Reflect.has(${target}, ${stringifiedProp})\\`, \\`${stringifiedProp} in ${target}\\`, or similar`;\n}\nconst wellKnownProperties = new Set([\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toString',\n 'valueOf',\n 'toLocaleString',\n // Promise prototype\n 'then',\n 'catch',\n 'finally',\n // React Promise extension\n 'status',\n // 'value',\n // 'error',\n // React introspection\n 'displayName',\n '_debugInfo',\n // Common tested properties\n 'toJSON',\n '$$typeof',\n '__esModule',\n // Tested by flight when checking for iterables\n '@@iterator'\n]); //# sourceMappingURL=reflect-utils.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvdXRpbHMvcmVmbGVjdC11dGlscy5qcyIsIm1hcHBpbmdzIjoiQUFBQSw2RUFBNkU7QUFDN0UsaUZBQWlGO0FBQ2pGLDBGQUEwRjtBQUMxRix1RkFBdUY7QUFDdkYsMkRBQTJEOzs7Ozs7Ozs7Ozs7O0lBVTNDQSxpQ0FBaUM7ZUFBakNBOztJQVBBQyw0QkFBNEI7ZUFBNUJBOztJQWVIQyxtQkFBbUI7ZUFBbkJBOzs7QUFqQmIsTUFBTUMsK0JBQStCO0FBRTlCLFNBQVNGLDZCQUE2QkcsTUFBYyxFQUFFQyxJQUFZO0lBQ3ZFLElBQUlGLDZCQUE2QkcsSUFBSSxDQUFDRCxPQUFPO1FBQzNDLE9BQU8sQ0FBQyxFQUFFLEVBQUVELE9BQU8sQ0FBQyxFQUFFQyxLQUFLLEVBQUUsQ0FBQztJQUNoQztJQUNBLE9BQU8sQ0FBQyxFQUFFLEVBQUVELE9BQU8sQ0FBQyxFQUFFRyxLQUFLQyxTQUFTLENBQUNILE1BQU0sR0FBRyxDQUFDO0FBQ2pEO0FBRU8sU0FBU0wsa0NBQ2RJLE1BQWMsRUFDZEMsSUFBWTtJQUVaLE1BQU1JLGtCQUFrQkYsS0FBS0MsU0FBUyxDQUFDSDtJQUN2QyxPQUFPLENBQUMsY0FBYyxFQUFFRCxPQUFPLEVBQUUsRUFBRUssZ0JBQWdCLE9BQU8sRUFBRUEsZ0JBQWdCLElBQUksRUFBRUwsT0FBTyxjQUFjLENBQUM7QUFDMUc7QUFFTyxNQUFNRixzQkFBc0IsSUFBSVEsSUFBSTtJQUN6QztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFFQSxvQkFBb0I7SUFDcEI7SUFDQTtJQUNBO0lBRUEsMEJBQTBCO0lBQzFCO0lBQ0EsV0FBVztJQUNYLFdBQVc7SUFFWCxzQkFBc0I7SUFDdEI7SUFDQTtJQUVBLDJCQUEyQjtJQUMzQjtJQUNBO0lBQ0E7SUFFQSwrQ0FBK0M7SUFDL0M7Q0FDRCIsInNvdXJjZXMiOlsiL1VzZXJzL3NyYy9zaGFyZWQvbGliL3V0aWxzL3JlZmxlY3QtdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyByZWdleCB3aWxsIGhhdmUgZmFzdCBuZWdhdGl2ZXMgbWVhbmluZyB2YWxpZCBpZGVudGlmaWVycyBtYXkgbm90IHBhc3Ncbi8vIHRoaXMgdGVzdC4gSG93ZXZlciB0aGlzIGlzIG9ubHkgdXNlZCBkdXJpbmcgc3RhdGljIGdlbmVyYXRpb24gdG8gcHJvdmlkZSBoaW50c1xuLy8gYWJvdXQgd2h5IGEgcGFnZSBiYWlsZWQgb3V0IG9mIHNvbWUgb3IgYWxsIHByZXJlbmRlcmluZyBhbmQgd2UgY2FuIHVzZSBicmFja2V0IG5vdGF0aW9uXG4vLyBmb3IgZXhhbXBsZSB3aGlsZSBg4LKgX+CyoGAgaXMgYSB2YWxpZCBpZGVudGlmaWVyIGl0J3Mgb2sgdG8gcHJpbnQgYHNlYXJjaFBhcmFtc1sn4LKgX+CyoCddYFxuLy8gZXZlbiBpZiB0aGlzIHdvdWxkIGhhdmUgYmVlbiBmaW5lIHRvbyBgc2VhcmNoUGFyYW1zLuCyoF/gsqBgXG5jb25zdCBpc0RlZmluaXRlbHlBVmFsaWRJZGVudGlmaWVyID0gL15bQS1aYS16XyRdW0EtWmEtejAtOV8kXSokL1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzY3JpYmVTdHJpbmdQcm9wZXJ0eUFjY2Vzcyh0YXJnZXQ6IHN0cmluZywgcHJvcDogc3RyaW5nKSB7XG4gIGlmIChpc0RlZmluaXRlbHlBVmFsaWRJZGVudGlmaWVyLnRlc3QocHJvcCkpIHtcbiAgICByZXR1cm4gYFxcYCR7dGFyZ2V0fS4ke3Byb3B9XFxgYFxuICB9XG4gIHJldHVybiBgXFxgJHt0YXJnZXR9WyR7SlNPTi5zdHJpbmdpZnkocHJvcCl9XVxcYGBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2NyaWJlSGFzQ2hlY2tpbmdTdHJpbmdQcm9wZXJ0eShcbiAgdGFyZ2V0OiBzdHJpbmcsXG4gIHByb3A6IHN0cmluZ1xuKSB7XG4gIGNvbnN0IHN0cmluZ2lmaWVkUHJvcCA9IEpTT04uc3RyaW5naWZ5KHByb3ApXG4gIHJldHVybiBgXFxgUmVmbGVjdC5oYXMoJHt0YXJnZXR9LCAke3N0cmluZ2lmaWVkUHJvcH0pXFxgLCBcXGAke3N0cmluZ2lmaWVkUHJvcH0gaW4gJHt0YXJnZXR9XFxgLCBvciBzaW1pbGFyYFxufVxuXG5leHBvcnQgY29uc3Qgd2VsbEtub3duUHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnaGFzT3duUHJvcGVydHknLFxuICAnaXNQcm90b3R5cGVPZicsXG4gICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsXG4gICd0b1N0cmluZycsXG4gICd2YWx1ZU9mJyxcbiAgJ3RvTG9jYWxlU3RyaW5nJyxcblxuICAvLyBQcm9taXNlIHByb3RvdHlwZVxuICAndGhlbicsXG4gICdjYXRjaCcsXG4gICdmaW5hbGx5JyxcblxuICAvLyBSZWFjdCBQcm9taXNlIGV4dGVuc2lvblxuICAnc3RhdHVzJyxcbiAgLy8gJ3ZhbHVlJyxcbiAgLy8gJ2Vycm9yJyxcblxuICAvLyBSZWFjdCBpbnRyb3NwZWN0aW9uXG4gICdkaXNwbGF5TmFtZScsXG4gICdfZGVidWdJbmZvJyxcblxuICAvLyBDb21tb24gdGVzdGVkIHByb3BlcnRpZXNcbiAgJ3RvSlNPTicsXG4gICckJHR5cGVvZicsXG4gICdfX2VzTW9kdWxlJyxcblxuICAvLyBUZXN0ZWQgYnkgZmxpZ2h0IHdoZW4gY2hlY2tpbmcgZm9yIGl0ZXJhYmxlc1xuICAnQEBpdGVyYXRvcicsXG5dKVxuIl0sIm5hbWVzIjpbImRlc2NyaWJlSGFzQ2hlY2tpbmdTdHJpbmdQcm9wZXJ0eSIsImRlc2NyaWJlU3RyaW5nUHJvcGVydHlBY2Nlc3MiLCJ3ZWxsS25vd25Qcm9wZXJ0aWVzIiwiaXNEZWZpbml0ZWx5QVZhbGlkSWRlbnRpZmllciIsInRhcmdldCIsInByb3AiLCJ0ZXN0IiwiSlNPTiIsInN0cmluZ2lmeSIsInN0cmluZ2lmaWVkUHJvcCIsIlNldCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/utils/reflect-utils.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Geist\",\"arguments\":[{\"variable\":\"--font-geist-sans\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistSans\"}":
|
||
/*!***********************************************************************************************************************************************************************************************!*\
|
||
!*** ./node_modules/next/font/google/target.css?{"path":"src/app/layout.tsx","import":"Geist","arguments":[{"variable":"--font-geist-sans","subsets":["latin"]}],"variableName":"geistSans"} ***!
|
||
\***********************************************************************************************************************************************************************************************/
|
||
/***/ ((module) => {
|
||
|
||
eval("// Exports\nmodule.exports = {\n\t\"style\": {\"fontFamily\":\"'Geist Fallback', 'Geist Fallback Fallback'\",\"fontStyle\":\"normal\"},\n\t\"className\": \"__className_f27602\",\n\t\"variable\": \"__variable_f27602\"\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9mb250L2dvb2dsZS90YXJnZXQuY3NzP3tcInBhdGhcIjpcInNyYy9hcHAvbGF5b3V0LnRzeFwiLFwiaW1wb3J0XCI6XCJHZWlzdFwiLFwiYXJndW1lbnRzXCI6W3tcInZhcmlhYmxlXCI6XCItLWZvbnQtZ2Vpc3Qtc2Fuc1wiLFwic3Vic2V0c1wiOltcImxhdGluXCJdfV0sXCJ2YXJpYWJsZU5hbWVcIjpcImdlaXN0U2Fuc1wifSIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0EsV0FBVyxnRkFBZ0Y7QUFDM0Y7QUFDQTtBQUNBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZm9udC9nb29nbGUvdGFyZ2V0LmNzcz97XCJwYXRoXCI6XCJzcmMvYXBwL2xheW91dC50c3hcIixcImltcG9ydFwiOlwiR2Vpc3RcIixcImFyZ3VtZW50c1wiOlt7XCJ2YXJpYWJsZVwiOlwiLS1mb250LWdlaXN0LXNhbnNcIixcInN1YnNldHNcIjpbXCJsYXRpblwiXX1dLFwidmFyaWFibGVOYW1lXCI6XCJnZWlzdFNhbnNcIn0iXSwic291cmNlc0NvbnRlbnQiOlsiLy8gRXhwb3J0c1xubW9kdWxlLmV4cG9ydHMgPSB7XG5cdFwic3R5bGVcIjoge1wiZm9udEZhbWlseVwiOlwiJ0dlaXN0IEZhbGxiYWNrJywgJ0dlaXN0IEZhbGxiYWNrIEZhbGxiYWNrJ1wiLFwiZm9udFN0eWxlXCI6XCJub3JtYWxcIn0sXG5cdFwiY2xhc3NOYW1lXCI6IFwiX19jbGFzc05hbWVfZjI3NjAyXCIsXG5cdFwidmFyaWFibGVcIjogXCJfX3ZhcmlhYmxlX2YyNzYwMlwiXG59O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Geist\",\"arguments\":[{\"variable\":\"--font-geist-sans\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistSans\"}\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Geist_Mono\",\"arguments\":[{\"variable\":\"--font-geist-mono\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistMono\"}":
|
||
/*!****************************************************************************************************************************************************************************************************!*\
|
||
!*** ./node_modules/next/font/google/target.css?{"path":"src/app/layout.tsx","import":"Geist_Mono","arguments":[{"variable":"--font-geist-mono","subsets":["latin"]}],"variableName":"geistMono"} ***!
|
||
\****************************************************************************************************************************************************************************************************/
|
||
/***/ ((module) => {
|
||
|
||
eval("// Exports\nmodule.exports = {\n\t\"style\": {\"fontFamily\":\"'Geist Mono Fallback', 'Geist Mono Fallback Fallback'\",\"fontStyle\":\"normal\"},\n\t\"className\": \"__className_22812c\",\n\t\"variable\": \"__variable_22812c\"\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9mb250L2dvb2dsZS90YXJnZXQuY3NzP3tcInBhdGhcIjpcInNyYy9hcHAvbGF5b3V0LnRzeFwiLFwiaW1wb3J0XCI6XCJHZWlzdF9Nb25vXCIsXCJhcmd1bWVudHNcIjpbe1widmFyaWFibGVcIjpcIi0tZm9udC1nZWlzdC1tb25vXCIsXCJzdWJzZXRzXCI6W1wibGF0aW5cIl19XSxcInZhcmlhYmxlTmFtZVwiOlwiZ2Vpc3RNb25vXCJ9IiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQSxXQUFXLDBGQUEwRjtBQUNyRztBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9mb250L2dvb2dsZS90YXJnZXQuY3NzP3tcInBhdGhcIjpcInNyYy9hcHAvbGF5b3V0LnRzeFwiLFwiaW1wb3J0XCI6XCJHZWlzdF9Nb25vXCIsXCJhcmd1bWVudHNcIjpbe1widmFyaWFibGVcIjpcIi0tZm9udC1nZWlzdC1tb25vXCIsXCJzdWJzZXRzXCI6W1wibGF0aW5cIl19XSxcInZhcmlhYmxlTmFtZVwiOlwiZ2Vpc3RNb25vXCJ9Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEV4cG9ydHNcbm1vZHVsZS5leHBvcnRzID0ge1xuXHRcInN0eWxlXCI6IHtcImZvbnRGYW1pbHlcIjpcIidHZWlzdCBNb25vIEZhbGxiYWNrJywgJ0dlaXN0IE1vbm8gRmFsbGJhY2sgRmFsbGJhY2snXCIsXCJmb250U3R5bGVcIjpcIm5vcm1hbFwifSxcblx0XCJjbGFzc05hbWVcIjogXCJfX2NsYXNzTmFtZV8yMjgxMmNcIixcblx0XCJ2YXJpYWJsZVwiOiBcIl9fdmFyaWFibGVfMjI4MTJjXCJcbn07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Geist_Mono\",\"arguments\":[{\"variable\":\"--font-geist-mono\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistMono\"}\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/add-base-path.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/next/dist/client/add-base-path.js ***!
|
||
\********************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"addBasePath\", ({\n enumerable: true,\n get: function() {\n return addBasePath;\n }\n}));\nconst _addpathprefix = __webpack_require__(/*! ../shared/lib/router/utils/add-path-prefix */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js\");\nconst _normalizetrailingslash = __webpack_require__(/*! ./normalize-trailing-slash */ \"(ssr)/./node_modules/next/dist/client/normalize-trailing-slash.js\");\nconst basePath = false || '';\nfunction addBasePath(path, required) {\n return (0, _normalizetrailingslash.normalizePathTrailingSlash)( false ? 0 : (0, _addpathprefix.addPathPrefix)(path, basePath));\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=add-base-path.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9hZGQtYmFzZS1wYXRoLmpzIiwibWFwcGluZ3MiOiI7Ozs7K0NBS2dCQTs7O2VBQUFBOzs7MkNBTGM7b0RBQ2E7QUFFM0MsTUFBTUMsV0FBWUMsTUFBa0MsSUFBZTtBQUU1RCxTQUFTRixZQUFZSyxJQUFZLEVBQUVDLFFBQWtCO0lBQzFELE9BQU9DLENBQUFBLEdBQUFBLHdCQUFBQSwwQkFBQUEsRUFDTEwsTUFBdURJLEdBQ25ERCxDQUFJQSxHQUNKSSxDQUFBQSxHQUFBQSxlQUFBQSxhQUFBQSxFQUFjSixNQUFNSjtBQUU1QiIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3Avc3JjL2NsaWVudC9hZGQtYmFzZS1wYXRoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFkZFBhdGhQcmVmaXggfSBmcm9tICcuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9hZGQtcGF0aC1wcmVmaXgnXG5pbXBvcnQgeyBub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaCB9IGZyb20gJy4vbm9ybWFsaXplLXRyYWlsaW5nLXNsYXNoJ1xuXG5jb25zdCBiYXNlUGF0aCA9IChwcm9jZXNzLmVudi5fX05FWFRfUk9VVEVSX0JBU0VQQVRIIGFzIHN0cmluZykgfHwgJydcblxuZXhwb3J0IGZ1bmN0aW9uIGFkZEJhc2VQYXRoKHBhdGg6IHN0cmluZywgcmVxdWlyZWQ/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgcmV0dXJuIG5vcm1hbGl6ZVBhdGhUcmFpbGluZ1NsYXNoKFxuICAgIHByb2Nlc3MuZW52Ll9fTkVYVF9NQU5VQUxfQ0xJRU5UX0JBU0VfUEFUSCAmJiAhcmVxdWlyZWRcbiAgICAgID8gcGF0aFxuICAgICAgOiBhZGRQYXRoUHJlZml4KHBhdGgsIGJhc2VQYXRoKVxuICApXG59XG4iXSwibmFtZXMiOlsiYWRkQmFzZVBhdGgiLCJiYXNlUGF0aCIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfUk9VVEVSX0JBU0VQQVRIIiwicGF0aCIsInJlcXVpcmVkIiwibm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2giLCJfX05FWFRfTUFOVUFMX0NMSUVOVF9CQVNFX1BBVEgiLCJhZGRQYXRoUHJlZml4Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/add-base-path.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/app-call-server.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/next/dist/client/app-call-server.js ***!
|
||
\**********************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"callServer\", ({\n enumerable: true,\n get: function() {\n return callServer;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nconst _routerreducertypes = __webpack_require__(/*! ./components/router-reducer/router-reducer-types */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _useactionqueue = __webpack_require__(/*! ./components/use-action-queue */ \"(ssr)/./node_modules/next/dist/client/components/use-action-queue.js\");\nasync function callServer(actionId, actionArgs) {\n return new Promise((resolve, reject)=>{\n (0, _react.startTransition)(()=>{\n (0, _useactionqueue.dispatchAppRouterAction)({\n type: _routerreducertypes.ACTION_SERVER_ACTION,\n actionId,\n actionArgs,\n resolve,\n reject\n });\n });\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=app-call-server.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9hcHAtY2FsbC1zZXJ2ZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs4Q0FJc0JBOzs7ZUFBQUE7OzttQ0FKVTtnREFDSzs0Q0FDRztBQUVqQyxlQUFlQSxXQUFXQyxRQUFnQixFQUFFQyxVQUFpQjtJQUNsRSxPQUFPLElBQUlDLFFBQVEsQ0FBQ0MsU0FBU0M7UUFDM0JDLENBQUFBLEdBQUFBLE9BQUFBLGVBQUFBLEVBQWdCO1lBQ2RDLENBQUFBLEdBQUFBLGdCQUFBQSx1QkFBQUEsRUFBd0I7Z0JBQ3RCQyxNQUFNQyxvQkFBQUEsb0JBQW9CO2dCQUMxQlI7Z0JBQ0FDO2dCQUNBRTtnQkFDQUM7WUFDRjtRQUNGO0lBQ0Y7QUFDRiIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3Avc3JjL2NsaWVudC9hcHAtY2FsbC1zZXJ2ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3RhcnRUcmFuc2l0aW9uIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBBQ1RJT05fU0VSVkVSX0FDVElPTiB9IGZyb20gJy4vY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9yb3V0ZXItcmVkdWNlci10eXBlcydcbmltcG9ydCB7IGRpc3BhdGNoQXBwUm91dGVyQWN0aW9uIH0gZnJvbSAnLi9jb21wb25lbnRzL3VzZS1hY3Rpb24tcXVldWUnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjYWxsU2VydmVyKGFjdGlvbklkOiBzdHJpbmcsIGFjdGlvbkFyZ3M6IGFueVtdKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgc3RhcnRUcmFuc2l0aW9uKCgpID0+IHtcbiAgICAgIGRpc3BhdGNoQXBwUm91dGVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogQUNUSU9OX1NFUlZFUl9BQ1RJT04sXG4gICAgICAgIGFjdGlvbklkLFxuICAgICAgICBhY3Rpb25BcmdzLFxuICAgICAgICByZXNvbHZlLFxuICAgICAgICByZWplY3QsXG4gICAgICB9KVxuICAgIH0pXG4gIH0pXG59XG4iXSwibmFtZXMiOlsiY2FsbFNlcnZlciIsImFjdGlvbklkIiwiYWN0aW9uQXJncyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwic3RhcnRUcmFuc2l0aW9uIiwiZGlzcGF0Y2hBcHBSb3V0ZXJBY3Rpb24iLCJ0eXBlIiwiQUNUSU9OX1NFUlZFUl9BQ1RJT04iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/app-call-server.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/app-dir/link.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/next/dist/client/app-dir/link.js ***!
|
||
\*******************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n /**\n * A React component that extends the HTML `<a>` element to provide\n * [prefetching](https://nextjs.org/docs/app/building-your-application/routing/linking-and-navigating#2-prefetching)\n * and client-side navigation. This is the primary way to navigate between routes in Next.js.\n *\n * @remarks\n * - Prefetching is only enabled in production.\n *\n * @see https://nextjs.org/docs/app/api-reference/components/link\n */ default: function() {\n return LinkComponent;\n },\n useLinkStatus: function() {\n return useLinkStatus;\n }\n});\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\"));\nconst _formaturl = __webpack_require__(/*! ../../shared/lib/router/utils/format-url */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/format-url.js\");\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../shared/lib/app-router-context.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js\");\nconst _usemergedref = __webpack_require__(/*! ../use-merged-ref */ \"(ssr)/./node_modules/next/dist/client/use-merged-ref.js\");\nconst _utils = __webpack_require__(/*! ../../shared/lib/utils */ \"(ssr)/./node_modules/next/dist/shared/lib/utils.js\");\nconst _addbasepath = __webpack_require__(/*! ../add-base-path */ \"(ssr)/./node_modules/next/dist/client/add-base-path.js\");\nconst _warnonce = __webpack_require__(/*! ../../shared/lib/utils/warn-once */ \"(ssr)/./node_modules/next/dist/shared/lib/utils/warn-once.js\");\nconst _routerreducertypes = __webpack_require__(/*! ../components/router-reducer/router-reducer-types */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _links = __webpack_require__(/*! ../components/links */ \"(ssr)/./node_modules/next/dist/client/components/links.js\");\nconst _islocalurl = __webpack_require__(/*! ../../shared/lib/router/utils/is-local-url */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/is-local-url.js\");\nconst _types = __webpack_require__(/*! ../components/segment-cache/types */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/types.js\");\nconst _erroronce = __webpack_require__(/*! ../../shared/lib/utils/error-once */ \"(ssr)/./node_modules/next/dist/shared/lib/utils/error-once.js\");\nfunction isModifiedEvent(event) {\n const eventTarget = event.currentTarget;\n const target = eventTarget.getAttribute('target');\n return target && target !== '_self' || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || // triggers resource download\n event.nativeEvent && event.nativeEvent.which === 2;\n}\nfunction linkClicked(e, href, linkInstanceRef, replace, scroll, onNavigate, transitionTypes) {\n if (false) {}\n}\nfunction formatStringOrUrl(urlObjOrString) {\n if (typeof urlObjOrString === 'string') {\n return urlObjOrString;\n }\n return (0, _formaturl.formatUrl)(urlObjOrString);\n}\nfunction LinkComponent(props) {\n const [linkStatus, setOptimisticLinkStatus] = (0, _react.useOptimistic)(_links.IDLE_LINK_STATUS);\n let children;\n const linkInstanceRef = (0, _react.useRef)(null);\n const { href: hrefProp, as: asProp, children: childrenProp, prefetch: prefetchProp = null, passHref, replace, shallow, scroll, onClick, onMouseEnter: onMouseEnterProp, onTouchStart: onTouchStartProp, legacyBehavior = false, onNavigate, transitionTypes, ref: forwardedRef, unstable_dynamicOnHover, ...restProps } = props;\n children = childrenProp;\n if (legacyBehavior && (typeof children === 'string' || typeof children === 'number')) {\n children = /*#__PURE__*/ (0, _jsxruntime.jsx)(\"a\", {\n children: children\n });\n }\n const router = _react.default.useContext(_approutercontextsharedruntime.AppRouterContext);\n const prefetchEnabled = prefetchProp !== false;\n const fetchStrategy = prefetchProp !== false ? getFetchStrategyFromPrefetchProp(prefetchProp) : _types.FetchStrategy.PPR;\n if (true) {\n function createPropError(args) {\n return Object.defineProperty(new Error(`Failed prop type: The prop \\`${args.key}\\` expects a ${args.expected} in \\`<Link>\\`, but got \\`${args.actual}\\` instead.` + ( false ? 0 : '')), \"__NEXT_ERROR_CODE\", {\n value: \"E319\",\n enumerable: false,\n configurable: true\n });\n }\n // TypeScript trick for type-guarding:\n const requiredPropsGuard = {\n href: true\n };\n const requiredProps = Object.keys(requiredPropsGuard);\n requiredProps.forEach((key)=>{\n if (key === 'href') {\n if (props[key] == null || typeof props[key] !== 'string' && typeof props[key] !== 'object') {\n throw createPropError({\n key,\n expected: '`string` or `object`',\n actual: props[key] === null ? 'null' : typeof props[key]\n });\n }\n } else {\n // TypeScript trick for type-guarding:\n const _ = key;\n }\n });\n // TypeScript trick for type-guarding:\n const optionalPropsGuard = {\n as: true,\n replace: true,\n scroll: true,\n shallow: true,\n passHref: true,\n prefetch: true,\n unstable_dynamicOnHover: true,\n onClick: true,\n onMouseEnter: true,\n onTouchStart: true,\n legacyBehavior: true,\n onNavigate: true,\n transitionTypes: true\n };\n const optionalProps = Object.keys(optionalPropsGuard);\n optionalProps.forEach((key)=>{\n const valType = typeof props[key];\n if (key === 'as') {\n if (props[key] && valType !== 'string' && valType !== 'object') {\n throw createPropError({\n key,\n expected: '`string` or `object`',\n actual: valType\n });\n }\n } else if (key === 'onClick' || key === 'onMouseEnter' || key === 'onTouchStart' || key === 'onNavigate') {\n if (props[key] && valType !== 'function') {\n throw createPropError({\n key,\n expected: '`function`',\n actual: valType\n });\n }\n } else if (key === 'replace' || key === 'scroll' || key === 'shallow' || key === 'passHref' || key === 'legacyBehavior' || key === 'unstable_dynamicOnHover') {\n if (props[key] != null && valType !== 'boolean') {\n throw createPropError({\n key,\n expected: '`boolean`',\n actual: valType\n });\n }\n } else if (key === 'prefetch') {\n if (props[key] != null && valType !== 'boolean' && props[key] !== 'auto') {\n throw createPropError({\n key,\n expected: '`boolean | \"auto\"`',\n actual: valType\n });\n }\n } else if (key === 'transitionTypes') {\n if (props[key] != null && !Array.isArray(props[key])) {\n throw createPropError({\n key,\n expected: '`string[]`',\n actual: valType\n });\n }\n } else {\n // TypeScript trick for type-guarding:\n const _ = key;\n }\n });\n }\n const resolvedHref = asProp || hrefProp;\n const formattedHref = formatStringOrUrl(resolvedHref);\n if (true) {\n if (props.locale) {\n (0, _warnonce.warnOnce)('The `locale` prop is not supported in `next/link` while using the `app` router. Read more about app router internalization: https://nextjs.org/docs/app/building-your-application/routing/internationalization');\n }\n if (!asProp) {\n let href;\n if (typeof resolvedHref === 'string') {\n href = resolvedHref;\n } else if (typeof resolvedHref === 'object' && typeof resolvedHref.pathname === 'string') {\n href = resolvedHref.pathname;\n }\n if (href) {\n const hasDynamicSegment = href.split('/').some((segment)=>segment.startsWith('[') && segment.endsWith(']'));\n if (hasDynamicSegment) {\n throw Object.defineProperty(new Error(`Dynamic href \\`${href}\\` found in <Link> while using the \\`/app\\` router, this is not supported. Read more: https://nextjs.org/docs/messages/app-dir-dynamic-href`), \"__NEXT_ERROR_CODE\", {\n value: \"E267\",\n enumerable: false,\n configurable: true\n });\n }\n }\n }\n }\n // This will return the first child, if multiple are provided it will throw an error\n let child;\n if (legacyBehavior) {\n if (children?.$$typeof === Symbol.for('react.lazy')) {\n throw Object.defineProperty(new Error(`\\`<Link legacyBehavior>\\` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's \\`<a>\\` tag.`), \"__NEXT_ERROR_CODE\", {\n value: \"E863\",\n enumerable: false,\n configurable: true\n });\n }\n if (true) {\n if (onClick) {\n console.warn(`\"onClick\" was passed to <Link> with \\`href\\` of \\`${formattedHref}\\` but \"legacyBehavior\" was set. The legacy behavior requires onClick be set on the child of next/link`);\n }\n if (onMouseEnterProp) {\n console.warn(`\"onMouseEnter\" was passed to <Link> with \\`href\\` of \\`${formattedHref}\\` but \"legacyBehavior\" was set. The legacy behavior requires onMouseEnter be set on the child of next/link`);\n }\n try {\n child = _react.default.Children.only(children);\n } catch (err) {\n if (!children) {\n throw Object.defineProperty(new Error(`No children were passed to <Link> with \\`href\\` of \\`${formattedHref}\\` but one child is required https://nextjs.org/docs/messages/link-no-children`), \"__NEXT_ERROR_CODE\", {\n value: \"E320\",\n enumerable: false,\n configurable: true\n });\n }\n throw Object.defineProperty(new Error(`Multiple children were passed to <Link> with \\`href\\` of \\`${formattedHref}\\` but only one child is supported https://nextjs.org/docs/messages/link-multiple-children` + ( false ? 0 : '')), \"__NEXT_ERROR_CODE\", {\n value: \"E266\",\n enumerable: false,\n configurable: true\n });\n }\n } else {}\n } else {\n if (true) {\n if (children?.type === 'a') {\n throw Object.defineProperty(new Error('Invalid <Link> with <a> child. Please remove <a> or use <Link legacyBehavior>.\\nLearn more: https://nextjs.org/docs/messages/invalid-new-link-with-extra-anchor'), \"__NEXT_ERROR_CODE\", {\n value: \"E209\",\n enumerable: false,\n configurable: true\n });\n }\n }\n }\n const childRef = legacyBehavior ? child && typeof child === 'object' && child.ref : forwardedRef;\n // Use a callback ref to attach an IntersectionObserver to the anchor tag on\n // mount. In the future we will also use this to keep track of all the\n // currently mounted <Link> instances, e.g. so we can re-prefetch them after\n // a revalidation or refresh.\n const observeLinkVisibilityOnMount = _react.default.useCallback({\n \"LinkComponent.useCallback[observeLinkVisibilityOnMount]\": (element)=>{\n if (router !== null) {\n linkInstanceRef.current = (0, _links.mountLinkInstance)(element, formattedHref, router, fetchStrategy, prefetchEnabled, setOptimisticLinkStatus);\n }\n return ({\n \"LinkComponent.useCallback[observeLinkVisibilityOnMount]\": ()=>{\n if (linkInstanceRef.current) {\n (0, _links.unmountLinkForCurrentNavigation)(linkInstanceRef.current);\n linkInstanceRef.current = null;\n }\n (0, _links.unmountPrefetchableInstance)(element);\n }\n })[\"LinkComponent.useCallback[observeLinkVisibilityOnMount]\"];\n }\n }[\"LinkComponent.useCallback[observeLinkVisibilityOnMount]\"], [\n prefetchEnabled,\n formattedHref,\n router,\n fetchStrategy,\n setOptimisticLinkStatus\n ]);\n const mergedRef = (0, _usemergedref.useMergedRef)(observeLinkVisibilityOnMount, childRef);\n const childProps = {\n ref: mergedRef,\n onClick (e) {\n if (true) {\n if (!e) {\n throw Object.defineProperty(new Error(`Component rendered inside next/link has to pass click event to \"onClick\" prop.`), \"__NEXT_ERROR_CODE\", {\n value: \"E312\",\n enumerable: false,\n configurable: true\n });\n }\n }\n if (!legacyBehavior && typeof onClick === 'function') {\n onClick(e);\n }\n if (legacyBehavior && child.props && typeof child.props.onClick === 'function') {\n child.props.onClick(e);\n }\n if (!router) {\n return;\n }\n if (e.defaultPrevented) {\n return;\n }\n linkClicked(e, formattedHref, linkInstanceRef, replace, scroll, onNavigate, transitionTypes);\n },\n onMouseEnter (e) {\n if (!legacyBehavior && typeof onMouseEnterProp === 'function') {\n onMouseEnterProp(e);\n }\n if (legacyBehavior && child.props && typeof child.props.onMouseEnter === 'function') {\n child.props.onMouseEnter(e);\n }\n if (!router) {\n return;\n }\n if (!prefetchEnabled || \"development\" === 'development') {\n return;\n }\n const upgradeToDynamicPrefetch = unstable_dynamicOnHover === true;\n (0, _links.onNavigationIntent)(e.currentTarget, upgradeToDynamicPrefetch);\n },\n onTouchStart: false ? 0 : function onTouchStart(e) {\n if (!legacyBehavior && typeof onTouchStartProp === 'function') {\n onTouchStartProp(e);\n }\n if (legacyBehavior && child.props && typeof child.props.onTouchStart === 'function') {\n child.props.onTouchStart(e);\n }\n if (!router) {\n return;\n }\n if (!prefetchEnabled) {\n return;\n }\n const upgradeToDynamicPrefetch = unstable_dynamicOnHover === true;\n (0, _links.onNavigationIntent)(e.currentTarget, upgradeToDynamicPrefetch);\n }\n };\n // If the url is absolute, we can bypass the logic to prepend the basePath.\n if ((0, _utils.isAbsoluteUrl)(formattedHref)) {\n childProps.href = formattedHref;\n } else if (!legacyBehavior || passHref || child.type === 'a' && !('href' in child.props)) {\n childProps.href = (0, _addbasepath.addBasePath)(formattedHref);\n }\n let link;\n if (legacyBehavior) {\n if (true) {\n (0, _erroronce.errorOnce)('`legacyBehavior` is deprecated and will be removed in a future ' + 'release. A codemod is available to upgrade your components:\\n\\n' + 'npx @next/codemod@latest new-link .\\n\\n' + 'Learn more: https://nextjs.org/docs/app/building-your-application/upgrading/codemods#remove-a-tags-from-link-components');\n }\n link = /*#__PURE__*/ _react.default.cloneElement(child, childProps);\n } else {\n link = /*#__PURE__*/ (0, _jsxruntime.jsx)(\"a\", {\n ...restProps,\n ...childProps,\n children: children\n });\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(LinkStatusContext.Provider, {\n value: linkStatus,\n children: link\n });\n}\nconst LinkStatusContext = /*#__PURE__*/ (0, _react.createContext)(_links.IDLE_LINK_STATUS);\nconst useLinkStatus = ()=>{\n return (0, _react.useContext)(LinkStatusContext);\n};\nfunction getFetchStrategyFromPrefetchProp(prefetchProp) {\n if (false) {} else {\n return prefetchProp === null || prefetchProp === 'auto' ? _types.FetchStrategy.PPR : // (although invalid values should've been filtered out by prop validation in dev)\n _types.FetchStrategy.Full;\n }\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=link.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9hcHAtZGlyL2xpbmsuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBc1VBOzs7Ozs7Ozs7Q0FTQyxHQUNELE9Ba2JDO2VBbGJ1QkE7O0lBd2JYQyxhQUFhO2VBQWJBOzs7Ozs2RUF0d0IyRDt1Q0FFOUM7MkRBQ087MENBQ0o7bUNBQ0M7eUNBQ0Y7c0NBQ0g7Z0RBQ007bUNBU3hCO3dDQUNvQjttQ0FJcEI7dUNBQ21CO0FBdU4xQixTQUFTQyxnQkFBZ0JDLEtBQXVCO0lBQzlDLE1BQU1DLGNBQWNELE1BQU1FLGFBQWE7SUFDdkMsTUFBTUMsU0FBU0YsWUFBWUcsWUFBWSxDQUFDO0lBQ3hDLE9BQ0dELFVBQVVBLFdBQVcsV0FDdEJILE1BQU1LLE9BQU8sSUFDYkwsTUFBTU0sT0FBTyxJQUNiTixNQUFNTyxRQUFRLElBQ2RQLE1BQU1RLE1BQU0sSUFBSSw2QkFBNkI7SUFDNUNSLE1BQU1TLFdBQVcsSUFBSVQsTUFBTVMsV0FBVyxDQUFDQyxLQUFLLEtBQUs7QUFFdEQ7QUFFQSxTQUFTQyxZQUNQQyxDQUFtQixFQUNuQkMsSUFBWSxFQUNaQyxlQUFxRCxFQUNyREMsT0FBaUIsRUFDakJDLE1BQWdCLEVBQ2hCQyxVQUFtQyxFQUNuQ0MsZUFBMEI7SUFFMUIsSUFBSSxLQUE2QixFQUFFLEVBcURsQztBQUNIO0FBRUEsU0FBU2tCLGtCQUFrQkMsY0FBa0M7SUFDM0QsSUFBSSxPQUFPQSxtQkFBbUIsVUFBVTtRQUN0QyxPQUFPQTtJQUNUO0lBRUEsT0FBT0MsQ0FBQUEsR0FBQUEsV0FBQUEsU0FBQUEsRUFBVUQ7QUFDbkI7QUFZZSxTQUFTeEMsY0FDdEIwQyxLQUdDO0lBRUQsTUFBTSxDQUFDQyxZQUFZQyx3QkFBd0IsR0FBR0MsQ0FBQUEsR0FBQUEsT0FBQUEsYUFBQUEsRUFBY0MsT0FBQUEsZ0JBQWdCO0lBRTVFLElBQUlDO0lBRUosTUFBTTlCLGtCQUFrQitCLENBQUFBLEdBQUFBLE9BQUFBLE1B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RSxxQkFBQ25FLEtBQUFBO1lBQUcsR0FBR0QsU0FBUztZQUFHLEdBQUc0RCxVQUFVO3NCQUM3Qi9FOztJQUdQO0lBRUEscUJBQ0UscUJBQUMwRixrQkFBa0JDLFFBQVE7UUFBQ0MsT0FBT2hHO2tCQUNoQzJGOztBQUdQO0FBRUEsTUFBTUcsb0JBQUFBLFdBQUFBLEdBQW9CRyxDQUFBQSxHQUFBQSxPQUFBQSxhQUFBQSxFQUV4QjlGLE9BQUFBLGdCQUFnQjtBQUVYLE1BQU03QyxnQkFBZ0I7SUFDM0IsT0FBT29FLENBQUFBLEdBQUFBLE9BQUFBLFVBQUFBLEVBQVdvRTtBQUNwQjtBQUVBLFNBQVNoRSxpQ0FDUG5CLFlBQStEO0lBRS9ELElBQUlzQixLQUFtQyxFQUFFLEVBVXhDLE1BQU07UUFDTCxPQUFPdEIsaUJBQWlCLFFBQVFBLGlCQUFpQixTQUU3Q29CLE9BQUFBLGFBQWEsQ0FBQ0MsR0FBRyxHQUVqQixrRkFDa0Y7UUFDbEZELE9BQUFBLGFBQWEsQ0FBQ29FLElBQUk7SUFDeEI7QUFDRiIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9jbGllbnQvYXBwLWRpci9saW5rLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuaW1wb3J0IFJlYWN0LCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIHVzZU9wdGltaXN0aWMsIHVzZVJlZiB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHR5cGUgeyBVcmxPYmplY3QgfSBmcm9tICd1cmwnXG5pbXBvcnQgeyBmb3JtYXRVcmwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9mb3JtYXQtdXJsJ1xuaW1wb3J0IHsgQXBwUm91dGVyQ29udGV4dCB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHsgdXNlTWVyZ2VkUmVmIH0gZnJvbSAnLi4vdXNlLW1lcmdlZC1yZWYnXG5pbXBvcnQgeyBpc0Fic29sdXRlVXJsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi91dGlscydcbmltcG9ydCB7IGFkZEJhc2VQYXRoIH0gZnJvbSAnLi4vYWRkLWJhc2UtcGF0aCdcbmltcG9ydCB7IHdhcm5PbmNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi91dGlscy93YXJuLW9uY2UnXG5pbXBvcnQgeyBTY3JvbGxCZWhhdmlvciB9IGZyb20gJy4uL2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcm91dGVyLXJlZHVjZXItdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBFTkRJTkdfTElOS19TVEFUVVMgfSBmcm9tICcuLi9jb21wb25lbnRzL2xpbmtzJ1xuaW1wb3J0IHtcbiAgSURMRV9MSU5LX1NUQVRVUyxcbiAgbW91bnRMaW5rSW5zdGFuY2UsXG4gIG9uTmF2aWdhdGlvbkludGVudCxcbiAgdW5tb3VudExpbmtGb3JDdXJyZW50TmF2aWdhdGlvbixcbiAgdW5tb3VudFByZWZldGNoYWJsZUluc3RhbmNlLFxuICB0eXBlIExpbmtJbnN0YW5jZSxcbn0gZnJvbSAnLi4vY29tcG9uZW50cy9saW5rcydcbmltcG9ydCB7IGlzTG9jYWxVUkwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9pcy1sb2NhbC11cmwnXG5pbXBvcnQge1xuICBGZXRjaFN0cmF0ZWd5LFxuICB0eXBlIFByZWZldGNoVGFza0ZldGNoU3RyYXRlZ3ksXG59IGZyb20gJy4uL2NvbXBvbmVudHMvc2VnbWVudC1jYWNoZS90eXBlcydcbmltcG9ydCB7IGVycm9yT25jZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvdXRpbHMvZXJyb3Itb25jZSdcblxudHlwZSBVcmwgPSBzdHJpbmcgfCBVcmxPYmplY3RcbnR5cGUgUmVxdWlyZWRLZXlzPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUXS0/OiB7fSBleHRlbmRzIFBpY2s8VCwgSz4gPyBuZXZlciA6IEtcbn1ba2V5b2YgVF1cbnR5cGUgT3B0aW9uYWxLZXlzPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUXS0/OiB7fSBleHRlbmRzIFBpY2s8VCwgSz4gPyBLIDogbmV2ZXJcbn1ba2V5b2YgVF1cblxudHlwZSBPbk5hdmlnYXRlRXZlbnRIYW5kbGVyID0gKGV2ZW50OiB7IHByZXZlbnREZWZhdWx0OiAoKSA9PiB2b2lkIH0pID0+IHZvaWRcblxudHlwZSBJbnRlcm5hbExpbmtQcm9wcyA9IHtcbiAgLyoqXG4gICAqICoqUmVxdWlyZWQqKi4gVGhlIHBhdGggb3IgVVJMIHRvIG5hdmlnYXRlIHRvLiBJdCBjYW4gYWxzbyBiZSBhbiBvYmplY3QgKHNpbWlsYXIgdG8gYFVSTGApLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c3hcbiAgICogLy8gTmF2aWdhdGUgdG8gL2Rhc2hib2FyZDpcbiAgICogPExpbmsgaHJlZj1cIi9kYXNoYm9hcmRcIj5EYXNoYm9hcmQ8L0xpbms+XG4gICAqXG4gICAqIC8vIE5hdmlnYXRlIHRvIC9hYm91dD9uYW1lPXRlc3Q6XG4gICAqIDxMaW5rIGhyZWY9e3sgcGF0aG5hbWU6ICcvYWJvdXQnLCBxdWVyeTogeyBuYW1lOiAndGVzdCcgfSB9fT5cbiAgICogICBBYm91dFxuICAgKiA8L0xpbms+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiAtIEZvciBleHRlcm5hbCBVUkxzLCB1c2UgYSBmdWxseSBxdWFsaWZpZWQgVVJMIHN1Y2ggYXMgYGh0dHBzOi8vLi4uYC5cbiAgICogLSBJbiB0aGUgQXBwIFJvdXRlciwgZHluYW1pYyByb3V0ZXMgbXVzdCBub3QgaW5jbHVkZSBicmFja2V0ZWQgc2VnbWVudHMgaW4gYGhyZWZgLlxuICAgKi9cbiAgaHJlZjogVXJsXG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHYxMC4wLjA6IGBocmVmYCBwcm9wcyBwb2ludGluZyB0byBhIGR5bmFtaWMgcm91dGUgYXJlXG4gICAqIGF1dG9tYXRpY2FsbHkgcmVzb2x2ZWQgYW5kIG5vIGxvbmdlciByZXF1aXJlIHRoZSBgYXNgIHByb3AuXG4gICAqL1xuICBhcz86IFVybFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlIHRoZSBjdXJyZW50IGBoaXN0b3J5YCBzdGF0ZSBpbnN0ZWFkIG9mIGFkZGluZyBhIG5ldyBVUkwgaW50byB0aGUgc3RhY2suXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgYGZhbHNlYFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c3hcbiAgICogPExpbmsgaHJlZj1cIi9hYm91dFwiIHJlcGxhY2U+XG4gICAqICAgQWJvdXQgKHJlcGxhY2VzIHRoZSBoaXN0b3J5IHN0YXRlKVxuICAgKiA8L0xpbms+XG4gICAqIGBgYFxuICAgKi9cbiAgcmVwbGFjZT86IGJvb2xlYW5cblxuICAvKipcbiAgICogV2hldGhlciB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBzY3JvbGwgYmVoYXZpb3IuIElmIGB0cnVlYCwgTmV4dC5qcyBhdHRlbXB0cyB0byBtYWludGFpblxuICAgKiB0aGUgc2Nyb2xsIHBvc2l0aW9uIGlmIHRoZSBuZXdseSBuYXZpZ2F0ZWQgcGFnZSBpcyBzdGlsbCB2aXNpYmxlLiBJZiBub3QsIGl0IHNjcm9sbHMgdG8gdGhlIHRvcC5cbiAgICpcbiAgICogSWYgYGZhbHNlYCwgTmV4dC5qcyB3aWxsIG5vdCBtb2RpZnkgdGhlIHNjcm9sbCBiZWhhdmlvciBhdCBhbGwuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgYHRydWVgXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzeFxuICAgKiA8TGluayBocmVmPVwiL2Rhc2hib2FyZFwiIHNjcm9sbD17ZmFsc2V9PlxuICAgKiAgIE5vIGF1dG8gc2Nyb2xsXG4gICAqIDwvTGluaz5cbiAgICogYGBgXG4gICAqL1xuICBzY3JvbGw/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgcGF0aCBvZiB0aGUgY3VycmVudCBwYWdlIHdpdGhvdXQgcmVydW5uaW5nIGRhdGEgZmV0Y2hpbmcgbWV0aG9kc1xuICAgKiBsaWtlIGBnZXRTdGF0aWNQcm9wc2AsIGBnZXRTZXJ2ZXJTaWRlUHJvcHNgLCBvciBgZ2V0SW5pdGlhbFByb3BzYC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogYHNoYWxsb3dgIG9ubHkgYXBwbGllcyB0byB0aGUgUGFnZXMgUm91dGVyLiBGb3IgdGhlIEFwcCBSb3V0ZXIsIHNlZSB0aGVcbiAgICogW2ZvbGxvd2luZyBkb2N1bWVudGF0aW9uXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yb3V0aW5nL2xpbmtpbmctYW5kLW5hdmlnYXRpbmcjdXNpbmctdGhlLW5hdGl2ZS1oaXN0b3J5LWFwaSkuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgYGZhbHNlYFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c3hcbiAgICogPExpbmsgaHJlZj1cIi9ibG9nXCIgc2hhbGxvdz5cbiAgICogICBTaGFsbG93IG5hdmlnYXRpb25cbiAgICogPC9MaW5rPlxuICAgKiBgYGBcbiAgICovXG4gIHNoYWxsb3c/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIEZvcmNlcyBgTGlua2AgdG8gcGFzcyBpdHMgYGhyZWZgIHRvIHRoZSBjaGlsZCBjb21wb25lbnQuIFVzZWZ1bCBpZiB0aGUgY2hpbGQgaXMgYSBjdXN0b21cbiAgICogY29tcG9uZW50IHRoYXQgd3JhcHMgYW4gYDxhPmAgdGFnLCBvciBpZiB5b3UncmUgdXNpbmcgY2VydGFpbiBzdHlsaW5nIGxpYnJhcmllcy5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBgZmFsc2VgXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzeFxuICAgKiA8TGluayBocmVmPVwiL2Rhc2hib2FyZFwiIHBhc3NIcmVmIGxlZ2FjeUJlaGF2aW9yPlxuICAgKiAgIDxNeVN0eWxlZEFuY2hvcj5EYXNoYm9hcmQ8L015U3R5bGVkQW5jaG9yPlxuICAgKiA8L0xpbms+XG4gICAqIGBgYFxuICAgKi9cbiAgcGFzc0hyZWY/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIFByZWZldGNoIHRoZSBwYWdlIGluIHRoZSBiYWNrZ3JvdW5kLlxuICAgKiBBbnkgYDxMaW5rIC8+YCB0aGF0IGlzIGluIHRoZSB2aWV3cG9ydCAoaW5pdGlhbGx5IG9yIHRocm91Z2ggc2Nyb2xsKSB3aWxsIGJlIHByZWZldGNoZWQuXG4gICAqIFByZWZldGNoIGNhbiBiZSBkaXNhYmxlZCBieSBwYXNzaW5nIGBwcmVmZXRjaD17ZmFsc2V9YC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUHJlZmV0Y2hpbmcgaXMgb25seSBlbmFibGVkIGluIHByb2R1Y3Rpb24uXG4gICAqXG4gICAqIC0gSW4gdGhlICoqQXBwIFJvdXRlcioqOlxuICAgKiAgIC0gYFwiYXV0b1wiYCwgYG51bGxgLCBgdW5kZWZpbmVkYCAoZGVmYXVsdCk6IFByZWZldGNoIGJlaGF2aW9yIGRlcGVuZHMgb24gc3RhdGljIHZzIGR5bmFtaWMgcm91dGVzOlxuICAgKiAgICAgLSBTdGF0aWMgcm91dGVzOiBmdWxseSBwcmVmZXRjaGVkXG4gICAqICAgICAtIER5bmFtaWMgcm91dGVzOiBwYXJ0aWFsIHByZWZldGNoIHRvIHRoZSBuZWFyZXN0IHNlZ21lbnQgd2l0aCBhIGBsb2FkaW5nLmpzYFxuICAgKiAgIC0gYHRydWVgOiBBbHdheXMgcHJlZmV0Y2ggdGhlIGZ1bGwgcm91dGUgYW5kIGRhdGEuXG4gICAqICAgLSBgZmFsc2VgOiBEaXNhYmxlIHByZWZldGNoaW5nIG9uIGJvdGggdmlld3BvcnQgYW5kIGhvdmVyLlxuICAgKiAtIEluIHRoZSAqKlBhZ2VzIFJvdXRlcioqOlxuICAgKiAgIC0gYHRydWVgIChkZWZhdWx0KTogUHJlZmV0Y2hlcyB0aGUgcm91dGUgYW5kIGRhdGEgaW4gdGhlIGJhY2tncm91bmQgb24gdmlld3BvcnQgb3IgaG92ZXIuXG4gICAqICAgLSBgZmFsc2VgOiBQcmVmZXRjaCBvbmx5IG9uIGhvdmVyLCBub3Qgb24gdmlld3BvcnQuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgYHRydWVgIChQYWdlcyBSb3V0ZXIpIG9yIGBudWxsYCAoQXBwIFJvdXRlcilcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHN4XG4gICAqIDxMaW5rIGhyZWY9XCIvZGFzaGJvYXJkXCIgcHJlZmV0Y2g9e2ZhbHNlfT5cbiAgICogICBEYXNoYm9hcmRcbiAgICogPC9MaW5rPlxuICAgKiBgYGBcbiAgICovXG4gIHByZWZldGNoPzogYm9vbGVhbiB8ICdhdXRvJyB8IG51bGxcblxuICAvKipcbiAgICogKHVuc3RhYmxlKSBTd2l0Y2ggdG8gYSBmdWxsIHByZWZldGNoIG9uIGhvdmVyLiBFZmZlY3RpdmVseSB0aGUgc2FtZSBhc1xuICAgKiB1cGRhdGluZyB0aGUgcHJlZmV0Y2ggcHJvcCB0byBgdHJ1ZWAgaW4gYSBtb3VzZSBldmVudC5cbiAgICovXG4gIHVuc3RhYmxlX2R5bmFtaWNPbkhvdmVyPzogYm9vbGVhblxuXG4gIC8qKlxuICAgKiBUaGUgYWN0aXZlIGxvY2FsZSBpcyBhdXRvbWF0aWNhbGx5IHByZXBlbmRlZCBpbiB0aGUgUGFnZXMgUm91dGVyLiBgbG9jYWxlYCBhbGxvd3MgZm9yIHByb3ZpZGluZ1xuICAgKiBhIGRpZmZlcmVudCBsb2NhbGUsIG9yIGNhbiBiZSBzZXQgdG8gYGZhbHNlYCB0byBvcHQgb3V0IG9mIGF1dG9tYXRpYyBsb2NhbGUgYmVoYXZpb3IuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIE5vdGU6IGxvY2FsZSBvbmx5IGFwcGxpZXMgaW4gdGhlIFBhZ2VzIFJvdXRlciBhbmQgaXMgaWdub3JlZCBpbiB0aGUgQXBwIFJvdXRlci5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHN4XG4gICAqIC8vIFVzZSB0aGUgJ2ZyJyBsb2NhbGU6XG4gICAqIDxMaW5rIGhyZWY9XCIvYWJvdXRcIiBsb2NhbGU9XCJmclwiPlxuICAgKiAgIEFib3V0IChGcmVuY2gpXG4gICAqIDwvTGluaz5cbiAgICpcbiAgICogLy8gRGlzYWJsZSBsb2NhbGUgcHJlZml4OlxuICAgKiA8TGluayBocmVmPVwiL2Fib3V0XCIgbG9jYWxlPXtmYWxzZX0+XG4gICAqICAgQWJvdXQgKG5vIGxvY2FsZSBwcmVmaXgpXG4gICAqIDwvTGluaz5cbiAgICogYGBgXG4gICAqL1xuICBsb2NhbGU/OiBzdHJpbmcgfCBmYWxzZVxuXG4gIC8qKlxuICAgKiBFbmFibGUgbGVnYWN5IGxpbmsgYmVoYXZpb3IuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb25cbiAgICogQGRlZmF1bHRWYWx1ZSBgZmFsc2VgXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3ZlcmNlbC9uZXh0LmpzL2NvbW1pdC80ODllNjVlZDk4NTQ0ZTY5YjBhZmQ3ZTBjZmMzZjlmNmMyYjgwM2I3XG4gICAqL1xuICBsZWdhY3lCZWhhdmlvcj86IGJvb2xlYW5cblxuICAvKipcbiAgICogT3B0aW9uYWwgZXZlbnQgaGFuZGxlciBmb3Igd2hlbiB0aGUgbW91c2UgcG9pbnRlciBpcyBtb3ZlZCBvbnRvIHRoZSBgPExpbms+YC5cbiAgICovXG4gIG9uTW91c2VFbnRlcj86IFJlYWN0Lk1vdXNlRXZlbnRIYW5kbGVyPEhUTUxBbmNob3JFbGVtZW50PlxuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBldmVudCBoYW5kbGVyIGZvciB3aGVuIHRoZSBgPExpbms+YCBpcyB0b3VjaGVkLlxuICAgKi9cbiAgb25Ub3VjaFN0YXJ0PzogUmVhY3QuVG91Y2hFdmVudEhhbmRsZXI8SFRNTEFuY2hvckVsZW1lbnQ+XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGV2ZW50IGhhbmRsZXIgZm9yIHdoZW4gdGhlIGA8TGluaz5gIGlzIGNsaWNrZWQuXG4gICAqL1xuICBvbkNsaWNrPzogUmVhY3QuTW91c2VFdmVudEhhbmRsZXI8SFRNTEFuY2hvckVsZW1lbnQ+XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGV2ZW50IGhhbmRsZXIgZm9yIHdoZW4gdGhlIGA8TGluaz5gIGlzIG5hdmlnYXRlZC5cbiAgICovXG4gIG9uTmF2aWdhdGU/OiBPbk5hdmlnYXRlRXZlbnRIYW5kbGVyXG5cbiAgLyoqXG4gICAqIFRyYW5zaXRpb24gdHlwZXMgdG8gYXBwbHkgd2hlbiBuYXZpZ2F0aW5nLiBUaGVzZSB0eXBlcyBhcmUgcGFzc2VkIHRvXG4gICAqIFtgUmVhY3QuYWRkVHJhbnNpdGlvblR5cGVgXShodHRwczovL3JlYWN0LmRldi9yZWZlcmVuY2UvcmVhY3QvYWRkVHJhbnNpdGlvblR5cGUpXG4gICAqIGluc2lkZSB0aGUgbmF2aWdhdGlvbiB0cmFuc2l0aW9uLCBlbmFibGluZ1xuICAgKiBbYDxWaWV3VHJhbnNpdGlvbj5gXShodHRwczovL3JlYWN0LmRldi9yZWZlcmVuY2UvcmVhY3QvVmlld1RyYW5zaXRpb24pIGNvbXBvbmVudHNcbiAgICogdG8gYXBwbHkgZGlmZmVyZW50IGFuaW1hdGlvbnMgYmFzZWQgb24gdGhlIHR5cGUgb2YgbmF2aWdhdGlvbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHN4XG4gICAqIDxMaW5rIGhyZWY9XCIvYWJvdXRcIiB0cmFuc2l0aW9uVHlwZXM9e1snc2xpZGUtaW4nXX0+QWJvdXQ8L0xpbms+XG4gICAqIGBgYFxuICAgKi9cbiAgdHJhbnNpdGlvblR5cGVzPzogc3RyaW5nW11cbn1cblxuLy8gVE9ETy1BUFA6IEluY2x1ZGUgdGhlIGZ1bGwgc2V0IG9mIEFuY2hvciBwcm9wc1xuLy8gYWRkaW5nIHRoaXMgdG8gdGhlIHB1YmxpY2x5IGV4cG9ydGVkIHR5cGUgY3VycmVudGx5IGJyZWFrcyBleGlzdGluZyBhcHBzXG5cbi8vIGBSb3V0ZUluZmVyVHlwZWAgaXMgYSBzdHViIGhlcmUgdG8gYXZvaWQgYnJlYWtpbmcgYHR5cGVkUm91dGVzYCB3aGVuIHRoZSB0eXBlXG4vLyBpc24ndCBnZW5lcmF0ZWQgeWV0LiBJdCB3aWxsIGJlIHJlcGxhY2VkIHdoZW4gdHlwZSBnZW5lcmF0aW9uIHJ1bnMuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5leHBvcnQgdHlwZSBMaW5rUHJvcHM8Um91dGVJbmZlclR5cGUgPSBhbnk+ID0gSW50ZXJuYWxMaW5rUHJvcHNcbnR5cGUgTGlua1Byb3BzUmVxdWlyZWQgPSBSZXF1aXJlZEtleXM8TGlua1Byb3BzPlxudHlwZSBMaW5rUHJvcHNPcHRpb25hbCA9IE9wdGlvbmFsS2V5czxPbWl0PEludGVybmFsTGlua1Byb3BzLCAnbG9jYWxlJz4+XG5cbmZ1bmN0aW9uIGlzTW9kaWZpZWRFdmVudChldmVudDogUmVhY3QuTW91c2VFdmVudCk6IGJvb2xlYW4ge1xuICBjb25zdCBldmVudFRhcmdldCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEFuY2hvckVsZW1lbnQgfCBTVkdBRWxlbWVudFxuICBjb25zdCB0YXJnZXQgPSBldmVudFRhcmdldC5nZXRBdHRyaWJ1dGUoJ3RhcmdldCcpXG4gIHJldHVybiAoXG4gICAgKHRhcmdldCAmJiB0YXJnZXQgIT09ICdfc2VsZicpIHx8XG4gICAgZXZlbnQubWV0YUtleSB8fFxuICAgIGV2ZW50LmN0cmxLZXkgfHxcbiAgICBldmVudC5zaGlmdEtleSB8fFxuICAgIGV2ZW50LmFsdEtleSB8fCAvLyB0cmlnZ2VycyByZXNvdXJjZSBkb3dubG9hZFxuICAgIChldmVudC5uYXRpdmVFdmVudCAmJiBldmVudC5uYXRpdmVFdmVudC53aGljaCA9PT0gMilcbiAgKVxufVxuXG5mdW5jdGlvbiBsaW5rQ2xpY2tlZChcbiAgZTogUmVhY3QuTW91c2VFdmVudCxcbiAgaHJlZjogc3RyaW5nLFxuICBsaW5rSW5zdGFuY2VSZWY6IFJlYWN0LlJlZk9iamVjdDxMaW5rSW5zdGFuY2UgfCBudWxsPixcbiAgcmVwbGFjZT86IGJvb2xlYW4sXG4gIHNjcm9sbD86IGJvb2xlYW4sXG4gIG9uTmF2aWdhdGU/OiBPbk5hdmlnYXRlRXZlbnRIYW5kbGVyLFxuICB0cmFuc2l0aW9uVHlwZXM/OiBzdHJpbmdbXVxuKTogdm9pZCB7XG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgIGNvbnN0IHsgbm9kZU5hbWUgfSA9IGUuY3VycmVudFRhcmdldFxuXG4gICAgLy8gYW5jaG9ycyBpbnNpZGUgYW4gc3ZnIGhhdmUgYSBsb3dlcmNhc2Ugbm9kZU5hbWVcbiAgICBjb25zdCBpc0FuY2hvck5vZGVOYW1lID0gbm9kZU5hbWUudG9VcHBlckNhc2UoKSA9PT0gJ0EnXG4gICAgaWYgKFxuICAgICAgKGlzQW5jaG9yTm9kZU5hbWUgJiYgaXNNb2RpZmllZEV2ZW50KGUpKSB8fFxuICAgICAgZS5jdXJyZW50VGFyZ2V0Lmhhc0F0dHJpYnV0ZSgnZG93bmxvYWQnKVxuICAgICkge1xuICAgICAgLy8gaWdub3JlIGNsaWNrIGZvciBicm93c2Vy4oCZcyBkZWZhdWx0IGJlaGF2aW9yXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIWlzTG9jYWxVUkwoaHJlZikpIHtcbiAgICAgIGlmIChyZXBsYWNlKSB7XG4gICAgICAgIC8vIGJyb3dzZXIgZGVmYXVsdCBiZWhhdmlvciBkb2VzIG5vdCByZXBsYWNlIHRoZSBoaXN0b3J5IHN0YXRlXG4gICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gZG8gaXQgbWFudWFsbHlcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIGxvY2F0aW9uLnJlcGxhY2UoaHJlZilcbiAgICAgIH1cblxuICAgICAgLy8gaWdub3JlIGNsaWNrIGZvciBicm93c2Vy4oCZcyBkZWZhdWx0IGJlaGF2aW9yXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcblxuICAgIGlmIChvbk5hdmlnYXRlKSB7XG4gICAgICBsZXQgaXNEZWZhdWx0UHJldmVudGVkID0gZmFsc2VcblxuICAgICAgb25OYXZpZ2F0ZSh7XG4gICAgICAgIHByZXZlbnREZWZhdWx0OiAoKSA9PiB7XG4gICAgICAgICAgaXNEZWZhdWx0UHJldmVudGVkID0gdHJ1ZVxuICAgICAgICB9LFxuICAgICAgfSlcblxuICAgICAgaWYgKGlzRGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB7IGRpc3BhdGNoTmF2aWdhdGVBY3Rpb24gfSA9XG4gICAgICByZXF1aXJlKCcuLi9jb21wb25lbnRzL2FwcC1yb3V0ZXItaW5zdGFuY2UnKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi9jb21wb25lbnRzL2FwcC1yb3V0ZXItaW5zdGFuY2UnKVxuXG4gICAgUmVhY3Quc3RhcnRUcmFuc2l0aW9uKCgpID0+IHtcbiAgICAgIGRpc3BhdGNoTmF2aWdhdGVBY3Rpb24oXG4gICAgICAgIGhyZWYsXG4gICAgICAgIHJlcGxhY2UgPyAncmVwbGFjZScgOiAncHVzaCcsXG4gICAgICAgIHNjcm9sbCA9PT0gZmFsc2UgPyBTY3JvbGxCZWhhdmlvci5Ob1Njcm9sbCA6IFNjcm9sbEJlaGF2aW9yLkRlZmF1bHQsXG4gICAgICAgIGxpbmtJbnN0YW5jZVJlZi5jdXJyZW50LFxuICAgICAgICB0cmFuc2l0aW9uVHlwZXNcbiAgICAgIClcbiAgICB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFN0cmluZ09yVXJsKHVybE9iak9yU3RyaW5nOiBVcmxPYmplY3QgfCBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIHVybE9iak9yU3RyaW5nID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB1cmxPYmpPclN0cmluZ1xuICB9XG5cbiAgcmV0dXJuIGZvcm1hdFVybCh1cmxPYmpPclN0cmluZylcbn1cblxuLyoqXG4gKiBBIFJlYWN0IGNvbXBvbmVudCB0aGF0IGV4dGVuZHMgdGhlIEhUTUwgYDxhPmAgZWxlbWVudCB0byBwcm92aWRlXG4gKiBbcHJlZmV0Y2hpbmddKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JvdXRpbmcvbGlua2luZy1hbmQtbmF2aWdhdGluZyMyLXByZWZldGNoaW5nKVxuICogYW5kIGNsaWVudC1zaWRlIG5hdmlnYXRpb24uIFRoaXMgaXMgdGhlIHByaW1hcnkgd2F5IHRvIG5hdmlnYXRlIGJldHdlZW4gcm91dGVzIGluIE5leHQuanMuXG4gKlxuICogQHJlbWFya3NcbiAqIC0gUHJlZmV0Y2hpbmcgaXMgb25seSBlbmFibGVkIGluIHByb2R1Y3Rpb24uXG4gKlxuICogQHNlZSBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9jb21wb25lbnRzL2xpbmtcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTGlua0NvbXBvbmVudChcbiAgcHJvcHM6IExpbmtQcm9wcyAmIHtcbiAgICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlXG4gICAgcmVmOiBSZWFjdC5SZWY8SFRNTEFuY2hvckVsZW1lbnQ+XG4gIH1cbikge1xuICBjb25zdCBbbGlua1N0YXR1cywgc2V0T3B0aW1pc3RpY0xpbmtTdGF0dXNdID0gdXNlT3B0aW1pc3RpYyhJRExFX0xJTktfU1RBVFVTKVxuXG4gIGxldCBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlXG5cbiAgY29uc3QgbGlua0luc3RhbmNlUmVmID0gdXNlUmVmPExpbmtJbnN0YW5jZSB8IG51bGw+KG51bGwpXG5cbiAgY29uc3Qge1xuICAgIGhyZWY6IGhyZWZQcm9wLFxuICAgIGFzOiBhc1Byb3AsXG4gICAgY2hpbGRyZW46IGNoaWxkcmVuUHJvcCxcbiAgICBwcmVmZXRjaDogcHJlZmV0Y2hQcm9wID0gbnVsbCxcbiAgICBwYXNzSHJlZixcbiAgICByZXBsYWNlLFxuICAgIHNoYWxsb3csXG4gICAgc2Nyb2xsLFxuICAgIG9uQ2xpY2ssXG4gICAgb25Nb3VzZUVudGVyOiBvbk1vdXNlRW50ZXJQcm9wLFxuICAgIG9uVG91Y2hTdGFydDogb25Ub3VjaFN0YXJ0UHJvcCxcbiAgICBsZWdhY3lCZWhhdmlvciA9IGZhbHNlLFxuICAgIG9uTmF2aWdhdGUsXG4gICAgdHJhbnNpdGlvblR5cGVzLFxuICAgIHJlZjogZm9yd2FyZGVkUmVmLFxuICAgIHVuc3RhYmxlX2R5bmFtaWNPbkhvdmVyLFxuICAgIC4uLnJlc3RQcm9wc1xuICB9ID0gcHJvcHNcblxuICBjaGlsZHJlbiA9IGNoaWxkcmVuUHJvcFxuXG4gIGlmIChcbiAgICBsZWdhY3lCZWhhdmlvciAmJlxuICAgICh0eXBlb2YgY2hpbGRyZW4gPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBjaGlsZHJlbiA9PT0gJ251bWJlcicpXG4gICkge1xuICAgIGNoaWxkcmVuID0gPGE+e2NoaWxkcmVufTwvYT5cbiAgfVxuXG4gIGNvbnN0IHJvdXRlciA9IFJlYWN0LnVzZUNvbnRleHQoQXBwUm91dGVyQ29udGV4dClcblxuICBjb25zdCBwcmVmZXRjaEVuYWJsZWQgPSBwcmVmZXRjaFByb3AgIT09IGZhbHNlXG5cbiAgY29uc3QgZmV0Y2hTdHJhdGVneSA9XG4gICAgcHJlZmV0Y2hQcm9wICE9PSBmYWxzZVxuICAgICAgPyBnZXRGZXRjaFN0cmF0ZWd5RnJvbVByZWZldGNoUHJvcChwcmVmZXRjaFByb3ApXG4gICAgICA6IC8vIFRPRE86IGl0IG1ha2VzIG5vIHNlbnNlIHRvIGFzc2lnbiBhIGZldGNoU3RyYXRlZ3kgd2hlbiBwcmVmZXRjaGluZyBpcyBkaXNhYmxlZC5cbiAgICAgICAgRmV0Y2hTdHJhdGVneS5QUFJcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVByb3BFcnJvcihhcmdzOiB7XG4gICAgICBrZXk6IHN0cmluZ1xuICAgICAgZXhwZWN0ZWQ6IHN0cmluZ1xuICAgICAgYWN0dWFsOiBzdHJpbmdcbiAgICB9KSB7XG4gICAgICByZXR1cm4gbmV3IEVycm9yKFxuICAgICAgICBgRmFpbGVkIHByb3AgdHlwZTogVGhlIHByb3AgXFxgJHthcmdzLmtleX1cXGAgZXhwZWN0cyBhICR7YXJncy5leHBlY3RlZH0gaW4gXFxgPExpbms+XFxgLCBidXQgZ290IFxcYCR7YXJncy5hY3R1YWx9XFxgIGluc3RlYWQuYCArXG4gICAgICAgICAgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnXG4gICAgICAgICAgICA/IFwiXFxuT3BlbiB5b3VyIGJyb3dzZXIncyBjb25zb2xlIHRvIHZpZXcgdGhlIENvbXBvbmVudCBzdGFjayB0cmFjZS5cIlxuICAgICAgICAgICAgOiAnJylcbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyBUeXBlU2NyaXB0IHRyaWNrIGZvciB0eXBlLWd1YXJkaW5nOlxuICAgIGNvbnN0IHJlcXVpcmVkUHJvcHNHdWFyZDogUmVjb3JkPExpbmtQcm9wc1JlcXVpcmVkLCB0cnVlPiA9IHtcbiAgICAgIGhyZWY6IHRydWUsXG4gICAgfSBhcyBjb25zdFxuICAgIGNvbnN0IHJlcXVpcmVkUHJvcHM6IExpbmtQcm9wc1JlcXVpcmVkW10gPSBPYmplY3Qua2V5cyhcbiAgICAgIHJlcXVpcmVkUHJvcHNHdWFyZFxuICAgICkgYXMgTGlua1Byb3BzUmVxdWlyZWRbXVxuICAgIHJlcXVpcmVkUHJvcHMuZm9yRWFjaCgoa2V5OiBMaW5rUHJvcHNSZXF1aXJlZCkgPT4ge1xuICAgICAgaWYgKGtleSA9PT0gJ2hyZWYnKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBwcm9wc1trZXldID09IG51bGwgfHxcbiAgICAgICAgICAodHlwZW9mIHByb3BzW2tleV0gIT09ICdzdHJpbmcnICYmIHR5cGVvZiBwcm9wc1trZXldICE9PSAnb2JqZWN0JylcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhyb3cgY3JlYXRlUHJvcEVycm9yKHtcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIGV4cGVjdGVkOiAnYHN0cmluZ2Agb3IgYG9iamVjdGAnLFxuICAgICAgICAgICAgYWN0dWFsOiBwcm9wc1trZXldID09PSBudWxsID8gJ251bGwnIDogdHlwZW9mIHByb3BzW2tleV0sXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVHlwZVNjcmlwdCB0cmljayBmb3IgdHlwZS1ndWFyZGluZzpcbiAgICAgICAgY29uc3QgXzogbmV2ZXIgPSBrZXlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgLy8gVHlwZVNjcmlwdCB0cmljayBmb3IgdHlwZS1ndWFyZGluZzpcbiAgICBjb25zdCBvcHRpb25hbFByb3BzR3VhcmQ6IFJlY29yZDxMaW5rUHJvcHNPcHRpb25hbCwgdHJ1ZT4gPSB7XG4gICAgICBhczogdHJ1ZSxcbiAgICAgIHJlcGxhY2U6IHRydWUsXG4gICAgICBzY3JvbGw6IHRydWUsXG4gICAgICBzaGFsbG93OiB0cnVlLFxuICAgICAgcGFzc0hyZWY6IHRydWUsXG4gICAgICBwcmVmZXRjaDogdHJ1ZSxcbiAgICAgIHVuc3RhYmxlX2R5bmFtaWNPbkhvdmVyOiB0cnVlLFxuICAgICAgb25DbGljazogdHJ1ZSxcbiAgICAgIG9uTW91c2VFbnRlcjogdHJ1ZSxcbiAgICAgIG9uVG91Y2hTdGFydDogdHJ1ZSxcbiAgICAgIGxlZ2FjeUJlaGF2aW9yOiB0cnVlLFxuICAgICAgb25OYXZpZ2F0ZTogdHJ1ZSxcbiAgICAgIHRyYW5zaXRpb25UeXBlczogdHJ1ZSxcbiAgICB9IGFzIGNvbnN0XG4gICAgY29uc3Qgb3B0aW9uYWxQcm9wczogTGlua1Byb3BzT3B0aW9uYWxbXSA9IE9iamVjdC5rZXlzKFxuICAgICAgb3B0aW9uYWxQcm9wc0d1YXJkXG4gICAgKSBhcyBMaW5rUHJvcHNPcHRpb25hbFtdXG4gICAgb3B0aW9uYWxQcm9wcy5mb3JFYWNoKChrZXk6IExpbmtQcm9wc09wdGlvbmFsKSA9PiB7XG4gICAgICBjb25zdCB2YWxUeXBlID0gdHlwZW9mIHByb3BzW2tleV1cblxuICAgICAgaWYgKGtleSA9PT0gJ2FzJykge1xuICAgICAgICBpZiAocHJvcHNba2V5XSAmJiB2YWxUeXBlICE9PSAnc3RyaW5nJyAmJiB2YWxUeXBlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgIHRocm93IGNyZWF0ZVByb3BFcnJvcih7XG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICBleHBlY3RlZDogJ2BzdHJpbmdgIG9yIGBvYmplY3RgJyxcbiAgICAgICAgICAgIGFjdHVhbDogdmFsVHlwZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBrZXkgPT09ICdvbkNsaWNrJyB8fFxuICAgICAgICBrZXkgPT09ICdvbk1vdXNlRW50ZXInIHx8XG4gICAgICAgIGtleSA9PT0gJ29uVG91Y2hTdGFydCcgfHxcbiAgICAgICAga2V5ID09PSAnb25OYXZpZ2F0ZSdcbiAgICAgICkge1xuICAgICAgICBpZiAocHJvcHNba2V5XSAmJiB2YWxUeXBlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdGhyb3cgY3JlYXRlUHJvcEVycm9yKHtcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIGV4cGVjdGVkOiAnYGZ1bmN0aW9uYCcsXG4gICAgICAgICAgICBhY3R1YWw6IHZhbFR5cGUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAga2V5ID09PSAncmVwbGFjZScgfHxcbiAgICAgICAga2V5ID09PSAnc2Nyb2xsJyB8fFxuICAgICAgICBrZXkgPT09ICdzaGFsbG93JyB8fFxuICAgICAgICBrZXkgPT09ICdwYXNzSHJlZicgfHxcbiAgICAgICAga2V5ID09PSAnbGVnYWN5QmVoYXZpb3InIHx8XG4gICAgICAgIGtleSA9PT0gJ3Vuc3RhYmxlX2R5bmFtaWNPbkhvdmVyJ1xuICAgICAgKSB7XG4gICAgICAgIGlmIChwcm9wc1trZXldICE9IG51bGwgJiYgdmFsVHlwZSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgdGhyb3cgY3JlYXRlUHJvcEVycm9yKHtcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIGV4cGVjdGVkOiAnYGJvb2xlYW5gJyxcbiAgICAgICAgICAgIGFjdHVhbDogdmFsVHlwZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ3ByZWZldGNoJykge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcHJvcHNba2V5XSAhPSBudWxsICYmXG4gICAgICAgICAgdmFsVHlwZSAhPT0gJ2Jvb2xlYW4nICYmXG4gICAgICAgICAgcHJvcHNba2V5XSAhPT0gJ2F1dG8nXG4gICAgICAgICkge1xuICAgICAgICAgIHRocm93IGNyZWF0ZVByb3BFcnJvcih7XG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICBleHBlY3RlZDogJ2Bib29sZWFuIHwgXCJhdXRvXCJgJyxcbiAgICAgICAgICAgIGFjdHVhbDogdmFsVHlwZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ3RyYW5zaXRpb25UeXBlcycpIHtcbiAgICAgICAgaWYgKHByb3BzW2tleV0gIT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShwcm9wc1trZXldKSkge1xuICAgICAgICAgIHRocm93IGNyZWF0ZVByb3BFcnJvcih7XG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICBleHBlY3RlZDogJ2BzdHJpbmdbXWAnLFxuICAgICAgICAgICAgYWN0dWFsOiB2YWxUeXBlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFR5cGVTY3JpcHQgdHJpY2sgZm9yIHR5cGUtZ3VhcmRpbmc6XG4gICAgICAgIGNvbnN0IF86IG5ldmVyID0ga2V5XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHJlc29sdmVkSHJlZiA9IGFzUHJvcCB8fCBocmVmUHJvcFxuICBjb25zdCBmb3JtYXR0ZWRIcmVmID0gZm9ybWF0U3RyaW5nT3JVcmwocmVzb2x2ZWRIcmVmKVxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKHByb3BzLmxvY2FsZSkge1xuICAgICAgd2Fybk9uY2UoXG4gICAgICAgICdUaGUgYGxvY2FsZWAgcHJvcCBpcyBub3Qgc3VwcG9ydGVkIGluIGBuZXh0L2xpbmtgIHdoaWxlIHVzaW5nIHRoZSBgYXBwYCByb3V0ZXIuIFJlYWQgbW9yZSBhYm91dCBhcHAgcm91dGVyIGludGVybmFsaXphdGlvbjogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcm91dGluZy9pbnRlcm5hdGlvbmFsaXphdGlvbidcbiAgICAgIClcbiAgICB9XG4gICAgaWYgKCFhc1Byb3ApIHtcbiAgICAgIGxldCBocmVmOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICAgIGlmICh0eXBlb2YgcmVzb2x2ZWRIcmVmID09PSAnc3RyaW5nJykge1xuICAgICAgICBocmVmID0gcmVzb2x2ZWRIcmVmXG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0eXBlb2YgcmVzb2x2ZWRIcmVmID09PSAnb2JqZWN0JyAmJlxuICAgICAgICB0eXBlb2YgcmVzb2x2ZWRIcmVmLnBhdGhuYW1lID09PSAnc3RyaW5nJ1xuICAgICAgKSB7XG4gICAgICAgIGhyZWYgPSByZXNvbHZlZEhyZWYucGF0aG5hbWVcbiAgICAgIH1cblxuICAgICAgaWYgKGhyZWYpIHtcbiAgICAgICAgY29uc3QgaGFzRHluYW1pY1NlZ21lbnQgPSBocmVmXG4gICAgICAgICAgLnNwbGl0KCcvJylcbiAgICAgICAgICAuc29tZSgoc2VnbWVudCkgPT4gc2VnbWVudC5zdGFydHNXaXRoKCdbJykgJiYgc2VnbWVudC5lbmRzV2l0aCgnXScpKVxuXG4gICAgICAgIGlmIChoYXNEeW5hbWljU2VnbWVudCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBEeW5hbWljIGhyZWYgXFxgJHtocmVmfVxcYCBmb3VuZCBpbiA8TGluaz4gd2hpbGUgdXNpbmcgdGhlIFxcYC9hcHBcXGAgcm91dGVyLCB0aGlzIGlzIG5vdCBzdXBwb3J0ZWQuIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvYXBwLWRpci1keW5hbWljLWhyZWZgXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gVGhpcyB3aWxsIHJldHVybiB0aGUgZmlyc3QgY2hpbGQsIGlmIG11bHRpcGxlIGFyZSBwcm92aWRlZCBpdCB3aWxsIHRocm93IGFuIGVycm9yXG4gIGxldCBjaGlsZDogYW55XG4gIGlmIChsZWdhY3lCZWhhdmlvcikge1xuICAgIGlmICgoY2hpbGRyZW4gYXMgYW55KT8uJCR0eXBlb2YgPT09IFN5bWJvbC5mb3IoJ3JlYWN0LmxhenknKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgXFxgPExpbmsgbGVnYWN5QmVoYXZpb3I+XFxgIHJlY2VpdmVkIGEgZGlyZWN0IGNoaWxkIHRoYXQgaXMgZWl0aGVyIGEgU2VydmVyIENvbXBvbmVudCwgb3IgSlNYIHRoYXQgd2FzIGxvYWRlZCB3aXRoIFJlYWN0LmxhenkoKS4gVGhpcyBpcyBub3Qgc3VwcG9ydGVkLiBFaXRoZXIgcmVtb3ZlIGxlZ2FjeUJlaGF2aW9yLCBvciBtYWtlIHRoZSBkaXJlY3QgY2hpbGQgYSBDbGllbnQgQ29tcG9uZW50IHRoYXQgcmVuZGVycyB0aGUgTGluaydzIFxcYDxhPlxcYCB0YWcuYFxuICAgICAgKVxuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgaWYgKG9uQ2xpY2spIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBcIm9uQ2xpY2tcIiB3YXMgcGFzc2VkIHRvIDxMaW5rPiB3aXRoIFxcYGhyZWZcXGAgb2YgXFxgJHtmb3JtYXR0ZWRIcmVmfVxcYCBidXQgXCJsZWdhY3lCZWhhdmlvclwiIHdhcyBzZXQuIFRoZSBsZWdhY3kgYmVoYXZpb3IgcmVxdWlyZXMgb25DbGljayBiZSBzZXQgb24gdGhlIGNoaWxkIG9mIG5leHQvbGlua2BcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaWYgKG9uTW91c2VFbnRlclByb3ApIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBcIm9uTW91c2VFbnRlclwiIHdhcyBwYXNzZWQgdG8gPExpbms+IHdpdGggXFxgaHJlZlxcYCBvZiBcXGAke2Zvcm1hdHRlZEhyZWZ9XFxgIGJ1dCBcImxlZ2FjeUJlaGF2aW9yXCIgd2FzIHNldC4gVGhlIGxlZ2FjeSBiZWhhdmlvciByZXF1aXJlcyBvbk1vdXNlRW50ZXIgYmUgc2V0IG9uIHRoZSBjaGlsZCBvZiBuZXh0L2xpbmtgXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGNoaWxkID0gUmVhY3QuQ2hpbGRyZW4ub25seShjaGlsZHJlbilcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoIWNoaWxkcmVuKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYE5vIGNoaWxkcmVuIHdlcmUgcGFzc2VkIHRvIDxMaW5rPiB3aXRoIFxcYGhyZWZcXGAgb2YgXFxgJHtmb3JtYXR0ZWRIcmVmfVxcYCBidXQgb25lIGNoaWxkIGlzIHJlcXVpcmVkIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2xpbmstbm8tY2hpbGRyZW5gXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgTXVsdGlwbGUgY2hpbGRyZW4gd2VyZSBwYXNzZWQgdG8gPExpbms+IHdpdGggXFxgaHJlZlxcYCBvZiBcXGAke2Zvcm1hdHRlZEhyZWZ9XFxgIGJ1dCBvbmx5IG9uZSBjaGlsZCBpcyBzdXBwb3J0ZWQgaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbGluay1tdWx0aXBsZS1jaGlsZHJlbmAgK1xuICAgICAgICAgICAgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnXG4gICAgICAgICAgICAgID8gXCIgXFxuT3BlbiB5b3VyIGJyb3dzZXIncyBjb25zb2xlIHRvIHZpZXcgdGhlIENvbXBvbmVudCBzdGFjayB0cmFjZS5cIlxuICAgICAgICAgICAgICA6ICcnKVxuICAgICAgICApXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNoaWxkID0gUmVhY3QuQ2hpbGRyZW4ub25seShjaGlsZHJlbilcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICBpZiAoKGNoaWxkcmVuIGFzIGFueSk/LnR5cGUgPT09ICdhJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ0ludmFsaWQgPExpbms+IHdpdGggPGE+IGNoaWxkLiBQbGVhc2UgcmVtb3ZlIDxhPiBvciB1c2UgPExpbmsgbGVnYWN5QmVoYXZpb3I+LlxcbkxlYXJuIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2ludmFsaWQtbmV3LWxpbmstd2l0aC1leHRyYS1hbmNob3InXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBjaGlsZFJlZjogYW55ID0gbGVnYWN5QmVoYXZpb3JcbiAgICA/IGNoaWxkICYmIHR5cGVvZiBjaGlsZCA9PT0gJ29iamVjdCcgJiYgY2hpbGQucmVmXG4gICAgOiBmb3J3YXJkZWRSZWZcblxuICAvLyBVc2UgYSBjYWxsYmFjayByZWYgdG8gYXR0YWNoIGFuIEludGVyc2VjdGlvbk9ic2VydmVyIHRvIHRoZSBhbmNob3IgdGFnIG9uXG4gIC8vIG1vdW50LiBJbiB0aGUgZnV0dXJlIHdlIHdpbGwgYWxzbyB1c2UgdGhpcyB0byBrZWVwIHRyYWNrIG9mIGFsbCB0aGVcbiAgLy8gY3VycmVudGx5IG1vdW50ZWQgPExpbms+IGluc3RhbmNlcywgZS5nLiBzbyB3ZSBjYW4gcmUtcHJlZmV0Y2ggdGhlbSBhZnRlclxuICAvLyBhIHJldmFsaWRhdGlvbiBvciByZWZyZXNoLlxuICBjb25zdCBvYnNlcnZlTGlua1Zpc2liaWxpdHlPbk1vdW50ID0gUmVhY3QudXNlQ2FsbGJhY2soXG4gICAgKGVsZW1lbnQ6IEhUTUxBbmNob3JFbGVtZW50IHwgU1ZHQUVsZW1lbnQpID0+IHtcbiAgICAgIGlmIChyb3V0ZXIgIT09IG51bGwpIHtcbiAgICAgICAgbGlua0luc3RhbmNlUmVmLmN1cnJlbnQgPSBtb3VudExpbmtJbnN0YW5jZShcbiAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgIGZvcm1hdHRlZEhyZWYsXG4gICAgICAgICAgcm91dGVyLFxuICAgICAgICAgIGZldGNoU3RyYXRlZ3ksXG4gICAgICAgICAgcHJlZmV0Y2hFbmFibGVkLFxuICAgICAgICAgIHNldE9wdGltaXN0aWNMaW5rU3RhdHVzXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgaWYgKGxpbmtJbnN0YW5jZVJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgdW5tb3VudExpbmtGb3JDdXJyZW50TmF2aWdhdGlvbihsaW5rSW5zdGFuY2VSZWYuY3VycmVudClcbiAgICAgICAgICBsaW5rSW5zdGFuY2VSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgfVxuICAgICAgICB1bm1vdW50UHJlZmV0Y2hhYmxlSW5zdGFuY2UoZWxlbWVudClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIHByZWZldGNoRW5hYmxlZCxcbiAgICAgIGZvcm1hdHRlZEhyZWYsXG4gICAgICByb3V0ZXIsXG4gICAgICBmZXRjaFN0cmF0ZWd5LFxuICAgICAgc2V0T3B0aW1pc3RpY0xpbmtTdGF0dXMsXG4gICAgXVxuICApXG5cbiAgY29uc3QgbWVyZ2VkUmVmID0gdXNlTWVyZ2VkUmVmKG9ic2VydmVMaW5rVmlzaWJpbGl0eU9uTW91bnQsIGNoaWxkUmVmKVxuXG4gIGNvbnN0IGNoaWxkUHJvcHM6IHtcbiAgICBvblRvdWNoU3RhcnQ/OiBSZWFjdC5Ub3VjaEV2ZW50SGFuZGxlcjxIVE1MQW5jaG9yRWxlbWVudD5cbiAgICBvbk1vdXNlRW50ZXI6IFJlYWN0Lk1vdXNlRXZlbnRIYW5kbGVyPEhUTUxBbmNob3JFbGVtZW50PlxuICAgIG9uQ2xpY2s6IFJlYWN0Lk1vdXNlRXZlbnRIYW5kbGVyPEhUTUxBbmNob3JFbGVtZW50PlxuICAgIGhyZWY/OiBzdHJpbmdcbiAgICByZWY/OiBhbnlcbiAgfSA9IHtcbiAgICByZWY6IG1lcmdlZFJlZixcbiAgICBvbkNsaWNrKGUpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmICghZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBDb21wb25lbnQgcmVuZGVyZWQgaW5zaWRlIG5leHQvbGluayBoYXMgdG8gcGFzcyBjbGljayBldmVudCB0byBcIm9uQ2xpY2tcIiBwcm9wLmBcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFsZWdhY3lCZWhhdmlvciAmJiB0eXBlb2Ygb25DbGljayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvbkNsaWNrKGUpXG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgbGVnYWN5QmVoYXZpb3IgJiZcbiAgICAgICAgY2hpbGQucHJvcHMgJiZcbiAgICAgICAgdHlwZW9mIGNoaWxkLnByb3BzLm9uQ2xpY2sgPT09ICdmdW5jdGlvbidcbiAgICAgICkge1xuICAgICAgICBjaGlsZC5wcm9wcy5vbkNsaWNrKGUpXG4gICAgICB9XG5cbiAgICAgIGlmICghcm91dGVyKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKGUuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGxpbmtDbGlja2VkKFxuICAgICAgICBlLFxuICAgICAgICBmb3JtYXR0ZWRIcmVmLFxuICAgICAgICBsaW5rSW5zdGFuY2VSZWYsXG4gICAgICAgIHJlcGxhY2UsXG4gICAgICAgIHNjcm9sbCxcbiAgICAgICAgb25OYXZpZ2F0ZSxcbiAgICAgICAgdHJhbnNpdGlvblR5cGVzXG4gICAgICApXG4gICAgfSxcbiAgICBvbk1vdXNlRW50ZXIoZSkge1xuICAgICAgaWYgKCFsZWdhY3lCZWhhdmlvciAmJiB0eXBlb2Ygb25Nb3VzZUVudGVyUHJvcCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvbk1vdXNlRW50ZXJQcm9wKGUpXG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgbGVnYWN5QmVoYXZpb3IgJiZcbiAgICAgICAgY2hpbGQucHJvcHMgJiZcbiAgICAgICAgdHlwZW9mIGNoaWxkLnByb3BzLm9uTW91c2VFbnRlciA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgKSB7XG4gICAgICAgIGNoaWxkLnByb3BzLm9uTW91c2VFbnRlcihlKVxuICAgICAgfVxuXG4gICAgICBpZiAoIXJvdXRlcikge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmICghcHJlZmV0Y2hFbmFibGVkIHx8IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB1cGdyYWRlVG9EeW5hbWljUHJlZmV0Y2ggPSB1bnN0YWJsZV9keW5hbWljT25Ib3ZlciA9PT0gdHJ1ZVxuICAgICAgb25OYXZpZ2F0aW9uSW50ZW50KFxuICAgICAgICBlLmN1cnJlbnRUYXJnZXQgYXMgSFRNTEFuY2hvckVsZW1lbnQgfCBTVkdBRWxlbWVudCxcbiAgICAgICAgdXBncmFkZVRvRHluYW1pY1ByZWZldGNoXG4gICAgICApXG4gICAgfSxcbiAgICBvblRvdWNoU3RhcnQ6IHByb2Nlc3MuZW52Ll9fTkVYVF9MSU5LX05PX1RPVUNIX1NUQVJUXG4gICAgICA/IHVuZGVmaW5lZFxuICAgICAgOiBmdW5jdGlvbiBvblRvdWNoU3RhcnQoZSkge1xuICAgICAgICAgIGlmICghbGVnYWN5QmVoYXZpb3IgJiYgdHlwZW9mIG9uVG91Y2hTdGFydFByb3AgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIG9uVG91Y2hTdGFydFByb3AoZSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBsZWdhY3lCZWhhdmlvciAmJlxuICAgICAgICAgICAgY2hpbGQucHJvcHMgJiZcbiAgICAgICAgICAgIHR5cGVvZiBjaGlsZC5wcm9wcy5vblRvdWNoU3RhcnQgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNoaWxkLnByb3BzLm9uVG91Y2hTdGFydChlKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghcm91dGVyKSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFwcmVmZXRjaEVuYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHVwZ3JhZGVUb0R5bmFtaWNQcmVmZXRjaCA9IHVuc3RhYmxlX2R5bmFtaWNPbkhvdmVyID09PSB0cnVlXG4gICAgICAgICAgb25OYXZpZ2F0aW9uSW50ZW50KFxuICAgICAgICAgICAgZS5jdXJyZW50VGFyZ2V0IGFzIEhUTUxBbmNob3JFbGVtZW50IHwgU1ZHQUVsZW1lbnQsXG4gICAgICAgICAgICB1cGdyYWRlVG9EeW5hbWljUHJlZmV0Y2hcbiAgICAgICAgICApXG4gICAgICAgIH0sXG4gIH1cblxuICAvLyBJZiB0aGUgdXJsIGlzIGFic29sdXRlLCB3ZSBjYW4gYnlwYXNzIHRoZSBsb2dpYyB0byBwcmVwZW5kIHRoZSBiYXNlUGF0aC5cbiAgaWYgKGlzQWJzb2x1dGVVcmwoZm9ybWF0dGVkSHJlZikpIHtcbiAgICBjaGlsZFByb3BzLmhyZWYgPSBmb3JtYXR0ZWRIcmVmXG4gIH0gZWxzZSBpZiAoXG4gICAgIWxlZ2FjeUJlaGF2aW9yIHx8XG4gICAgcGFzc0hyZWYgfHxcbiAgICAoY2hpbGQudHlwZSA9PT0gJ2EnICYmICEoJ2hyZWYnIGluIGNoaWxkLnByb3BzKSlcbiAgKSB7XG4gICAgY2hpbGRQcm9wcy5ocmVmID0gYWRkQmFzZVBhdGgoZm9ybWF0dGVkSHJlZilcbiAgfVxuXG4gIGxldCBsaW5rOiBSZWFjdC5SZWFjdE5vZGVcblxuICBpZiAobGVnYWN5QmVoYXZpb3IpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgIGVycm9yT25jZShcbiAgICAgICAgJ2BsZWdhY3lCZWhhdmlvcmAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlICcgK1xuICAgICAgICAgICdyZWxlYXNlLiBBIGNvZGVtb2QgaXMgYXZhaWxhYmxlIHRvIHVwZ3JhZGUgeW91ciBjb21wb25lbnRzOlxcblxcbicgK1xuICAgICAgICAgICducHggQG5leHQvY29kZW1vZEBsYXRlc3QgbmV3LWxpbmsgLlxcblxcbicgK1xuICAgICAgICAgICdMZWFybiBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi91cGdyYWRpbmcvY29kZW1vZHMjcmVtb3ZlLWEtdGFncy1mcm9tLWxpbmstY29tcG9uZW50cydcbiAgICAgIClcbiAgICB9XG4gICAgbGluayA9IFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwgY2hpbGRQcm9wcylcbiAgfSBlbHNlIHtcbiAgICBsaW5rID0gKFxuICAgICAgPGEgey4uLnJlc3RQcm9wc30gey4uLmNoaWxkUHJvcHN9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L2E+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8TGlua1N0YXR1c0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2xpbmtTdGF0dXN9PlxuICAgICAge2xpbmt9XG4gICAgPC9MaW5rU3RhdHVzQ29udGV4dC5Qcm92aWRlcj5cbiAgKVxufVxuXG5jb25zdCBMaW5rU3RhdHVzQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8XG4gIHR5cGVvZiBQRU5ESU5HX0xJTktfU1RBVFVTIHwgdHlwZW9mIElETEVfTElOS19TVEFUVVNcbj4oSURMRV9MSU5LX1NUQVRVUylcblxuZXhwb3J0IGNvbnN0IHVzZUxpbmtTdGF0dXMgPSAoKSA9PiB7XG4gIHJldHVybiB1c2VDb250ZXh0KExpbmtTdGF0dXNDb250ZXh0KVxufVxuXG5mdW5jdGlvbiBnZXRGZXRjaFN0cmF0ZWd5RnJvbVByZWZldGNoUHJvcChcbiAgcHJlZmV0Y2hQcm9wOiBFeGNsdWRlPExpbmtQcm9wc1sncHJlZmV0Y2gnXSwgdW5kZWZpbmVkIHwgZmFsc2U+XG4pOiBQcmVmZXRjaFRhc2tGZXRjaFN0cmF0ZWd5IHtcbiAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9DQUNIRV9DT01QT05FTlRTKSB7XG4gICAgaWYgKHByZWZldGNoUHJvcCA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuIEZldGNoU3RyYXRlZ3kuRnVsbFxuICAgIH1cblxuICAgIC8vIGBudWxsYCBvciBgXCJhdXRvXCJgOiB0aGlzIGlzIHRoZSBkZWZhdWx0IFwiYXV0b1wiIG1vZGUsIHdoZXJlIHdlIHdpbGwgcHJlZmV0Y2ggcGFydGlhbGx5IGlmIHRoZSBsaW5rIGlzIGluIHRoZSB2aWV3cG9ydC5cbiAgICAvLyBUaGlzIHdpbGwgYWxzbyBpbmNsdWRlIGludmFsaWQgcHJvcCB2YWx1ZXMgdGhhdCBkb24ndCBtYXRjaCB0aGUgdHlwZXMgc3BlY2lmaWVkIGhlcmUuXG4gICAgLy8gKGFsdGhvdWdoIHRob3NlIHNob3VsZCd2ZSBiZWVuIGZpbHRlcmVkIG91dCBieSBwcm9wIHZhbGlkYXRpb24gaW4gZGV2KVxuICAgIHByZWZldGNoUHJvcCBzYXRpc2ZpZXMgbnVsbCB8ICdhdXRvJ1xuICAgIHJldHVybiBGZXRjaFN0cmF0ZWd5LlBQUlxuICB9IGVsc2Uge1xuICAgIHJldHVybiBwcmVmZXRjaFByb3AgPT09IG51bGwgfHwgcHJlZmV0Y2hQcm9wID09PSAnYXV0bydcbiAgICAgID8gLy8gV2UgZGVmYXVsdCB0byBQUFIsIGFuZCB3ZSdsbCBkaXNjb3ZlciB3aGV0aGVyIG9yIG5vdCB0aGUgcm91dGUgc3VwcG9ydHMgaXQgd2l0aCB0aGUgaW5pdGlhbCBwcmVmZXRjaC5cbiAgICAgICAgRmV0Y2hTdHJhdGVneS5QUFJcbiAgICAgIDogLy8gSW4gdGhlIG9sZCBpbXBsZW1lbnRhdGlvbiB3aXRob3V0IHJ1bnRpbWUgcHJlZmV0Y2hlcywgYHByZWZldGNoPXt0cnVlfWAgZm9yY2VzIGFsbCBkeW5hbWljIGRhdGEgdG8gYmUgcHJlZmV0Y2hlZC5cbiAgICAgICAgLy8gVG8gcHJlc2VydmUgYmFja3dhcmRzLWNvbXBhdGliaWxpdHksIGFueXRoaW5nIG90aGVyIHRoYW4gYGZhbHNlYCwgYG51bGxgLCBvciBgXCJhdXRvXCJgIHJlc3VsdHMgaW4gYSBmdWxsIHByZWZldGNoLlxuICAgICAgICAvLyAoYWx0aG91Z2ggaW52YWxpZCB2YWx1ZXMgc2hvdWxkJ3ZlIGJlZW4gZmlsdGVyZWQgb3V0IGJ5IHByb3AgdmFsaWRhdGlvbiBpbiBkZXYpXG4gICAgICAgIEZldGNoU3RyYXRlZ3kuRnVsbFxuICB9XG59XG4iXSwibmFtZXMiOlsiTGlua0NvbXBvbmVudCIsInVzZUxpbmtTdGF0dXMiLCJpc01vZGlmaWVkRXZlbnQiLCJldmVudCIsImV2ZW50VGFyZ2V0IiwiY3VycmVudFRhcmdldCIsInRhcmdldCIsImdldEF0dHJpYnV0ZSIsIm1ldGFLZXkiLCJjdHJsS2V5Iiwic2hpZnRLZXkiLCJhbHRLZXkiLCJuYXRpdmVFdmVudCIsIndoaWNoIiwibGlua0NsaWNrZWQiLCJlIiwiaHJlZiIsImxpbmtJbnN0YW5jZVJlZiIsInJlcGxhY2UiLCJzY3JvbGwiLCJvbk5hdmlnYXRlIiwidHJhbnNpdGlvblR5cGVzIiwid2luZG93Iiwibm9kZU5hbWUiLCJpc0FuY2hvck5vZGVOYW1lIiwidG9VcHBlckNhc2UiLCJoYXNBdHRyaWJ1dGUiLCJpc0xvY2FsVVJMIiwicHJldmVudERlZmF1bHQiLCJsb2NhdGlvbiIsImlzRGVmYXVsdFByZXZlbnRlZCIsImRpc3BhdGNoTmF2aWdhdGVBY3Rpb24iLCJyZXF1aXJlIiwiUmVhY3QiLCJzdGFydFRyYW5zaXRpb24iLCJTY3JvbGxCZWhhdmlvciIsIk5vU2Nyb2xsIiwiRGVmYXVsdCIsImN1cnJlbnQiLCJmb3JtYXRTdHJpbmdPclVybCIsInVybE9iak9yU3RyaW5nIiwiZm9ybWF0VXJsIiwicHJvcHMiLCJsaW5rU3RhdHVzIiwic2V0T3B0aW1pc3RpY0xpbmtTdGF0dXMiLCJ1c2VPcHRpbWlzdGljIiwiSURMRV9MSU5LX1NUQVRVUyIsImNoaWxkcmVuIiwidXNlUmVmIiwiaHJlZlByb3AiLCJhcyIsImFzUHJvcCIsImNoaWxkcmVuUHJvcCIsInByZWZldGNoIiwicHJlZmV0Y2hQcm9wIiwicGFzc0hyZWYiLCJzaGFsbG93Iiwib25DbGljayIsIm9uTW91c2VFbnRlciIsIm9uTW91c2VFbnRlclByb3AiLCJvblRvdWNoU3RhcnQiLCJvblRvdWNoU3RhcnRQcm9wIiwibGVnYWN5QmVoYXZpb3IiLCJyZWYiLCJmb3J3YXJkZWRSZWYiLCJ1bnN0YWJsZV9keW5hbWljT25Ib3ZlciIsInJlc3RQcm9wcyIsImEiLCJyb3V0ZXIiLCJ1c2VDb250ZXh0IiwiQXBwUm91dGVyQ29udGV4dCIsInByZWZldGNoRW5hYmxlZCIsImZldGNoU3RyYXRlZ3kiLCJnZXRGZXRjaFN0cmF0ZWd5RnJvbVByZWZldGNoUHJvcCIsIkZldGNoU3RyYXRlZ3kiLCJQUFIiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJjcmVhdGVQcm9wRXJyb3IiLCJhcmdzIiwiRXJyb3IiLCJrZXkiLCJleHBlY3RlZCIsImFjdHVhbCIsInJlcXVpcmVkUHJvcHNHdWFyZCIsInJlcXVpcmVkUHJvcHMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsIl8iLCJvcHRpb25hbFByb3BzR3VhcmQiLCJvcHRpb25hbFByb3BzIiwidmFsVHlwZSIsIkFycmF5IiwiaXNBcnJheSIsInJlc29sdmVkSHJlZiIsImZvcm1hdHRlZEhyZWYiLCJsb2NhbGUiLCJ3YXJuT25jZSIsInBhdGhuYW1lIiwiaGFzRHluYW1pY1NlZ21lbnQiLCJzcGxpdCIsInNvbWUiLCJzZWdtZW50Iiwic3RhcnRzV2l0aCIsImVuZHNXaXRoIiwiY2hpbGQiLCIkJHR5cGVvZiIsIlN5bWJvbCIsImZvciIsImNvbnNvbGUiLCJ3YXJuIiwiQ2hpbGRyZW4iLCJvbmx5IiwiZXJyIiwidHlwZSIsImNoaWxkUmVmIiwib2JzZXJ2ZUxpbmtWaXNpYmlsaXR5T25Nb3VudCIsInVzZUNhbGxiYWNrIiwiZWxlbWVudCIsIm1vdW50TGlua0luc3RhbmNlIiwidW5tb3VudExpbmtGb3JDdXJyZW50TmF2aWdhdGlvbiIsInVubW91bnRQcmVmZXRjaGFibGVJbnN0YW5jZSIsIm1lcmdlZFJlZiIsInVzZU1lcmdlZFJlZiIsImNoaWxkUHJvcHMiLCJkZWZhdWx0UHJldmVudGVkIiwidXBncmFkZVRvRHluYW1pY1ByZWZldGNoIiwib25OYXZpZ2F0aW9uSW50ZW50IiwiX19ORVhUX0xJTktfTk9fVE9VQ0hfU1RBUlQiLCJ1bmRlZmluZWQiLCJpc0Fic29sdXRlVXJsIiwiYWRkQmFzZVBhdGgiLCJsaW5rIiwiZXJyb3JPbmNlIiwiY2xvbmVFbGVtZW50IiwiTGlua1N0YXR1c0NvbnRleHQiLCJQcm92aWRlciIsInZhbHVlIiwiY3JlYXRlQ29udGV4dCIsIl9fTkVYVF9DQUNIRV9DT01QT05FTlRTIiwiRnVsbCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/app-dir/link.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/app-find-source-map-url.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/app-find-source-map-url.js ***!
|
||
\******************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"findSourceMapURL\", ({\n enumerable: true,\n get: function() {\n return findSourceMapURL;\n }\n}));\nconst basePath = false || '';\nconst pathname = `${basePath}/__nextjs_source-map`;\nconst findSourceMapURL = true ? function findSourceMapURL(filename) {\n if (filename === '') {\n return null;\n }\n if (filename.startsWith(document.location.origin) && filename.includes('/_next/static')) {\n // This is a request for a client chunk. This can only happen when\n // using Turbopack. In this case, since we control how those source\n // maps are generated, we can safely assume that the sourceMappingURL\n // is relative to the filename, with an added `.map` extension. The\n // browser can just request this file, and it gets served through the\n // normal dev server, without the need to route this through\n // the `/__nextjs_source-map` dev middleware.\n return `${filename}.map`;\n }\n const url = new URL(pathname, document.location.origin);\n url.searchParams.set('filename', filename);\n return url.href;\n} : 0;\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=app-find-source-map-url.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9hcHAtZmluZC1zb3VyY2UtbWFwLXVybC5qcyIsIm1hcHBpbmdzIjoiOzs7O29EQUdhQTs7O2VBQUFBOzs7QUFIYixNQUFNQyxXQUFXQyxNQUFrQyxJQUFJO0FBQ3ZELE1BQU1HLFdBQVcsR0FBR0osU0FBUyxvQkFBb0IsQ0FBQztBQUUzQyxNQUFNRCxtQkFDWCxLQUM2QixHQUN6QixTQUFTQSxRQUZvQyxTQUVuQk8sUUFBZ0I7SUFDeEMsSUFBSUEsYUFBYSxJQUFJO1FBQ25CLE9BQU87SUFDVDtJQUVBLElBQ0VBLFNBQVNDLFVBQVUsQ0FBQ0MsU0FBU0MsUUFBUSxDQUFDQyxNQUFNLEtBQzVDSixTQUFTSyxRQUFRLENBQUMsa0JBQ2xCO1FBQ0Esa0VBQWtFO1FBQ2xFLG1FQUFtRTtRQUNuRSxxRUFBcUU7UUFDckUsbUVBQW1FO1FBQ25FLHFFQUFxRTtRQUNyRSw0REFBNEQ7UUFDNUQsNkNBQTZDO1FBQzdDLE9BQU8sR0FBR0wsU0FBUyxJQUFJLENBQUM7SUFDMUI7SUFFQSxNQUFNTSxNQUFNLElBQUlDLElBQUlULFVBQVVJLFNBQVNDLFFBQVEsQ0FBQ0MsTUFBTTtJQUN0REUsSUFBSUUsWUFBWSxDQUFDQyxHQUFHLENBQUMsWUFBWVQ7SUFFakMsT0FBT00sSUFBSUksSUFBSTtBQUNqQixJQUNBQyxDQUFTQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3Avc3JjL2NsaWVudC9hcHAtZmluZC1zb3VyY2UtbWFwLXVybC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBiYXNlUGF0aCA9IHByb2Nlc3MuZW52Ll9fTkVYVF9ST1VURVJfQkFTRVBBVEggfHwgJydcbmNvbnN0IHBhdGhuYW1lID0gYCR7YmFzZVBhdGh9L19fbmV4dGpzX3NvdXJjZS1tYXBgXG5cbmV4cG9ydCBjb25zdCBmaW5kU291cmNlTWFwVVJMID1cbiAgLy8gU291cmNlIG1hcHMgYXJlIG9ubHkgc2VydmVkIGJ5IHRoZSBkZXYgc2VydmVyLlxuICBwcm9jZXNzLmVudi5fX05FWFRfREVWX1NFUlZFUlxuICAgID8gZnVuY3Rpb24gZmluZFNvdXJjZU1hcFVSTChmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmIChmaWxlbmFtZSA9PT0gJycpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGZpbGVuYW1lLnN0YXJ0c1dpdGgoZG9jdW1lbnQubG9jYXRpb24ub3JpZ2luKSAmJlxuICAgICAgICAgIGZpbGVuYW1lLmluY2x1ZGVzKCcvX25leHQvc3RhdGljJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gVGhpcyBpcyBhIHJlcXVlc3QgZm9yIGEgY2xpZW50IGNodW5rLiBUaGlzIGNhbiBvbmx5IGhhcHBlbiB3aGVuXG4gICAgICAgICAgLy8gdXNpbmcgVHVyYm9wYWNrLiBJbiB0aGlzIGNhc2UsIHNpbmNlIHdlIGNvbnRyb2wgaG93IHRob3NlIHNvdXJjZVxuICAgICAgICAgIC8vIG1hcHMgYXJlIGdlbmVyYXRlZCwgd2UgY2FuIHNhZmVseSBhc3N1bWUgdGhhdCB0aGUgc291cmNlTWFwcGluZ1VSTFxuICAgICAgICAgIC8vIGlzIHJlbGF0aXZlIHRvIHRoZSBmaWxlbmFtZSwgd2l0aCBhbiBhZGRlZCBgLm1hcGAgZXh0ZW5zaW9uLiBUaGVcbiAgICAgICAgICAvLyBicm93c2VyIGNhbiBqdXN0IHJlcXVlc3QgdGhpcyBmaWxlLCBhbmQgaXQgZ2V0cyBzZXJ2ZWQgdGhyb3VnaCB0aGVcbiAgICAgICAgICAvLyBub3JtYWwgZGV2IHNlcnZlciwgd2l0aG91dCB0aGUgbmVlZCB0byByb3V0ZSB0aGlzIHRocm91Z2hcbiAgICAgICAgICAvLyB0aGUgYC9fX25leHRqc19zb3VyY2UtbWFwYCBkZXYgbWlkZGxld2FyZS5cbiAgICAgICAgICByZXR1cm4gYCR7ZmlsZW5hbWV9Lm1hcGBcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwocGF0aG5hbWUsIGRvY3VtZW50LmxvY2F0aW9uLm9yaWdpbilcbiAgICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2ZpbGVuYW1lJywgZmlsZW5hbWUpXG5cbiAgICAgICAgcmV0dXJuIHVybC5ocmVmXG4gICAgICB9XG4gICAgOiB1bmRlZmluZWRcbiJdLCJuYW1lcyI6WyJmaW5kU291cmNlTWFwVVJMIiwiYmFzZVBhdGgiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1JPVVRFUl9CQVNFUEFUSCIsInBhdGhuYW1lIiwiX19ORVhUX0RFVl9TRVJWRVIiLCJmaWxlbmFtZSIsInN0YXJ0c1dpdGgiLCJkb2N1bWVudCIsImxvY2F0aW9uIiwib3JpZ2luIiwiaW5jbHVkZXMiLCJ1cmwiLCJVUkwiLCJzZWFyY2hQYXJhbXMiLCJzZXQiLCJocmVmIiwidW5kZWZpbmVkIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/app-find-source-map-url.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/assign-location.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/next/dist/client/assign-location.js ***!
|
||
\**********************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"assignLocation\", ({\n enumerable: true,\n get: function() {\n return assignLocation;\n }\n}));\nconst _addbasepath = __webpack_require__(/*! ./add-base-path */ \"(ssr)/./node_modules/next/dist/client/add-base-path.js\");\nfunction assignLocation(location, url) {\n if (location.startsWith('.')) {\n const urlBase = url.origin + url.pathname;\n return new URL(// new URL('./relative', 'https://example.com/subdir').href -> 'https://example.com/relative'\n // new URL('./relative', 'https://example.com/subdir/').href -> 'https://example.com/subdir/relative'\n (urlBase.endsWith('/') ? urlBase : urlBase + '/') + location);\n }\n return new URL((0, _addbasepath.addBasePath)(location), url.href);\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=assign-location.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9hc3NpZ24tbG9jYXRpb24uanMiLCJtYXBwaW5ncyI6Ijs7OztrREFTZ0JBOzs7ZUFBQUE7Ozt5Q0FUWTtBQVNyQixTQUFTQSxlQUFlQyxRQUFnQixFQUFFQyxHQUFRO0lBQ3ZELElBQUlELFNBQVNFLFVBQVUsQ0FBQyxNQUFNO1FBQzVCLE1BQU1DLFVBQVVGLElBQUlHLE1BQU0sR0FBR0gsSUFBSUksUUFBUTtRQUN6QyxPQUFPLElBQUlDLElBQ1QsNkZBQzZGO1FBQzdGLHFHQUFxRztTQUNwR0gsUUFBUUksUUFBUSxDQUFDLE9BQU9KLFVBQVVBLFVBQVUsSUFBRSxHQUFLSDtJQUV4RDtJQUVBLE9BQU8sSUFBSU0sSUFBSUUsQ0FBQUEsR0FBQUEsYUFBQUEsV0FBQUEsRUFBWVIsV0FBV0MsSUFBSVEsSUFBSTtBQUNoRCIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3Avc3JjL2NsaWVudC9hc3NpZ24tbG9jYXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWRkQmFzZVBhdGggfSBmcm9tICcuL2FkZC1iYXNlLXBhdGgnXG5cbi8qKlxuICogRnVuY3Rpb24gdG8gY29ycmVjdGx5IGFzc2lnbiBsb2NhdGlvbiB0byBVUkxcbiAqXG4gKiBUaGUgbWV0aG9kIHdpbGwgYWRkIGJhc2VQYXRoLCBhbmQgd2lsbCBhbHNvIGNvcnJlY3RseSBhZGQgbG9jYXRpb24gKGluY2x1ZGluZyBpZiBpdCBpcyBhIHJlbGF0aXZlIHBhdGgpXG4gKiBAcGFyYW0gbG9jYXRpb24gTG9jYXRpb24gdGhhdCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIHVybFxuICogQHBhcmFtIHVybCBCYXNlIFVSTCB0byB3aGljaCB0aGUgbG9jYXRpb24gc2hvdWxkIGJlIGFzc2lnbmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25Mb2NhdGlvbihsb2NhdGlvbjogc3RyaW5nLCB1cmw6IFVSTCk6IFVSTCB7XG4gIGlmIChsb2NhdGlvbi5zdGFydHNXaXRoKCcuJykpIHtcbiAgICBjb25zdCB1cmxCYXNlID0gdXJsLm9yaWdpbiArIHVybC5wYXRobmFtZVxuICAgIHJldHVybiBuZXcgVVJMKFxuICAgICAgLy8gSW4gb3JkZXIgZm9yIGEgcmVsYXRpdmUgcGF0aCB0byBiZSBhZGRlZCB0byB0aGUgY3VycmVudCB1cmwgY29ycmVjdGx5LCB0aGUgY3VycmVudCB1cmwgbXVzdCBlbmQgd2l0aCBhIHNsYXNoXG4gICAgICAvLyBuZXcgVVJMKCcuL3JlbGF0aXZlJywgJ2h0dHBzOi8vZXhhbXBsZS5jb20vc3ViZGlyJykuaHJlZiAtPiAnaHR0cHM6Ly9leGFtcGxlLmNvbS9yZWxhdGl2ZSdcbiAgICAgIC8vIG5ldyBVUkwoJy4vcmVsYXRpdmUnLCAnaHR0cHM6Ly9leGFtcGxlLmNvbS9zdWJkaXIvJykuaHJlZiAtPiAnaHR0cHM6Ly9leGFtcGxlLmNvbS9zdWJkaXIvcmVsYXRpdmUnXG4gICAgICAodXJsQmFzZS5lbmRzV2l0aCgnLycpID8gdXJsQmFzZSA6IHVybEJhc2UgKyAnLycpICsgbG9jYXRpb25cbiAgICApXG4gIH1cblxuICByZXR1cm4gbmV3IFVSTChhZGRCYXNlUGF0aChsb2NhdGlvbiksIHVybC5ocmVmKVxufVxuIl0sIm5hbWVzIjpbImFzc2lnbkxvY2F0aW9uIiwibG9jYXRpb24iLCJ1cmwiLCJzdGFydHNXaXRoIiwidXJsQmFzZSIsIm9yaWdpbiIsInBhdGhuYW1lIiwiVVJMIiwiZW5kc1dpdGgiLCJhZGRCYXNlUGF0aCIsImhyZWYiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/assign-location.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/app-router-headers.js":
|
||
/*!************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/app-router-headers.js ***!
|
||
\************************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n ACTION_HEADER: function() {\n return ACTION_HEADER;\n },\n FLIGHT_HEADERS: function() {\n return FLIGHT_HEADERS;\n },\n NEXT_ACTION_NOT_FOUND_HEADER: function() {\n return NEXT_ACTION_NOT_FOUND_HEADER;\n },\n NEXT_ACTION_REVALIDATED_HEADER: function() {\n return NEXT_ACTION_REVALIDATED_HEADER;\n },\n NEXT_DID_POSTPONE_HEADER: function() {\n return NEXT_DID_POSTPONE_HEADER;\n },\n NEXT_HMR_REFRESH_HASH_COOKIE: function() {\n return NEXT_HMR_REFRESH_HASH_COOKIE;\n },\n NEXT_HMR_REFRESH_HEADER: function() {\n return NEXT_HMR_REFRESH_HEADER;\n },\n NEXT_HTML_REQUEST_ID_HEADER: function() {\n return NEXT_HTML_REQUEST_ID_HEADER;\n },\n NEXT_INSTANT_PREFETCH_HEADER: function() {\n return NEXT_INSTANT_PREFETCH_HEADER;\n },\n NEXT_INSTANT_TEST_COOKIE: function() {\n return NEXT_INSTANT_TEST_COOKIE;\n },\n NEXT_IS_PRERENDER_HEADER: function() {\n return NEXT_IS_PRERENDER_HEADER;\n },\n NEXT_REQUEST_ID_HEADER: function() {\n return NEXT_REQUEST_ID_HEADER;\n },\n NEXT_REWRITTEN_PATH_HEADER: function() {\n return NEXT_REWRITTEN_PATH_HEADER;\n },\n NEXT_REWRITTEN_QUERY_HEADER: function() {\n return NEXT_REWRITTEN_QUERY_HEADER;\n },\n NEXT_ROUTER_PREFETCH_HEADER: function() {\n return NEXT_ROUTER_PREFETCH_HEADER;\n },\n NEXT_ROUTER_SEGMENT_PREFETCH_HEADER: function() {\n return NEXT_ROUTER_SEGMENT_PREFETCH_HEADER;\n },\n NEXT_ROUTER_STALE_TIME_HEADER: function() {\n return NEXT_ROUTER_STALE_TIME_HEADER;\n },\n NEXT_ROUTER_STATE_TREE_HEADER: function() {\n return NEXT_ROUTER_STATE_TREE_HEADER;\n },\n NEXT_RSC_UNION_QUERY: function() {\n return NEXT_RSC_UNION_QUERY;\n },\n NEXT_URL: function() {\n return NEXT_URL;\n },\n RSC_CONTENT_TYPE_HEADER: function() {\n return RSC_CONTENT_TYPE_HEADER;\n },\n RSC_HEADER: function() {\n return RSC_HEADER;\n }\n});\nconst RSC_HEADER = 'rsc';\nconst ACTION_HEADER = 'next-action';\nconst NEXT_ROUTER_STATE_TREE_HEADER = 'next-router-state-tree';\nconst NEXT_ROUTER_PREFETCH_HEADER = 'next-router-prefetch';\nconst NEXT_ROUTER_SEGMENT_PREFETCH_HEADER = 'next-router-segment-prefetch';\nconst NEXT_HMR_REFRESH_HEADER = 'next-hmr-refresh';\nconst NEXT_HMR_REFRESH_HASH_COOKIE = '__next_hmr_refresh_hash__';\nconst NEXT_URL = 'next-url';\nconst RSC_CONTENT_TYPE_HEADER = 'text/x-component';\nconst NEXT_INSTANT_PREFETCH_HEADER = 'next-instant-navigation-testing-prefetch';\nconst NEXT_INSTANT_TEST_COOKIE = 'next-instant-navigation-testing';\nconst FLIGHT_HEADERS = [\n RSC_HEADER,\n NEXT_ROUTER_STATE_TREE_HEADER,\n NEXT_ROUTER_PREFETCH_HEADER,\n NEXT_HMR_REFRESH_HEADER,\n NEXT_ROUTER_SEGMENT_PREFETCH_HEADER\n];\nconst NEXT_RSC_UNION_QUERY = '_rsc';\nconst NEXT_ROUTER_STALE_TIME_HEADER = 'x-nextjs-stale-time';\nconst NEXT_DID_POSTPONE_HEADER = 'x-nextjs-postponed';\nconst NEXT_REWRITTEN_PATH_HEADER = 'x-nextjs-rewritten-path';\nconst NEXT_REWRITTEN_QUERY_HEADER = 'x-nextjs-rewritten-query';\nconst NEXT_IS_PRERENDER_HEADER = 'x-nextjs-prerender';\nconst NEXT_ACTION_NOT_FOUND_HEADER = 'x-nextjs-action-not-found';\nconst NEXT_REQUEST_ID_HEADER = 'x-nextjs-request-id';\nconst NEXT_HTML_REQUEST_ID_HEADER = 'x-nextjs-html-request-id';\nconst NEXT_ACTION_REVALIDATED_HEADER = 'x-action-revalidated';\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=app-router-headers.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2FwcC1yb3V0ZXItaGVhZGVycy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFDYUEsYUFBYTtlQUFiQTs7SUErQkFDLGNBQWM7ZUFBZEE7O0lBZUFDLDRCQUE0QjtlQUE1QkE7O0lBS0FDLDhCQUE4QjtlQUE5QkE7O0lBVEFDLHdCQUF3QjtlQUF4QkE7O0lBN0JBQyw0QkFBNEI7ZUFBNUJBOztJQURBQyx1QkFBdUI7ZUFBdkJBOztJQW9DQUMsMkJBQTJCO2VBQTNCQTs7SUEzQkFDLDRCQUE0QjtlQUE1QkE7O0lBT0FDLHdCQUF3QjtlQUF4QkE7O0lBaUJBQyx3QkFBd0I7ZUFBeEJBOztJQUVBQyxzQkFBc0I7ZUFBdEJBOztJQUpBQywwQkFBMEI7ZUFBMUJBOztJQUNBQywyQkFBMkI7ZUFBM0JBOztJQXZDQUMsMkJBQTJCO2VBQTNCQTs7SUFLQUMsbUNBQW1DO2VBQW5DQTs7SUErQkFDLDZCQUE2QjtlQUE3QkE7O0lBckNBQyw2QkFBNkI7ZUFBN0JBOztJQW1DQUMsb0JBQW9CO2VBQXBCQTs7SUF6QkFDLFFBQVE7ZUFBUkE7O0lBQ0FDLHVCQUF1QjtlQUF2QkE7O0lBaEJBQyxVQUFVO2VBQVZBOzs7QUFBTixNQUFNQSxhQUFhO0FBQ25CLE1BQU1yQixnQkFBZ0I7QUFJdEIsTUFBTWlCLGdDQUFnQztBQUN0QyxNQUFNSCw4QkFBOEI7QUFLcEMsTUFBTUMsc0NBQ1g7QUFDSyxNQUFNVCwwQkFBMEI7QUFDaEMsTUFBTUQsK0JBQStCO0FBQ3JDLE1BQU1jLFdBQVc7QUFDakIsTUFBTUMsMEJBQTBCO0FBTWhDLE1BQU1aLCtCQUNYO0FBTUssTUFBTUMsMkJBQ1g7QUFFSyxNQUFNUixpQkFBaUI7SUFDNUJvQjtJQUNBSjtJQUNBSDtJQUNBUjtJQUNBUztDQUNEO0FBRU0sTUFBTUcsdUJBQXVCO0FBRTdCLE1BQU1GLGdDQUFnQztBQUN0QyxNQUFNWiwyQkFBMkI7QUFDakMsTUFBTVEsNkJBQTZCO0FBQ25DLE1BQU1DLDhCQUE4QjtBQUNwQyxNQUFNSCwyQkFBMkI7QUFDakMsTUFBTVIsK0JBQStCO0FBQ3JDLE1BQU1TLHlCQUF5QjtBQUMvQixNQUFNSiw4QkFBOEI7QUFHcEMsTUFBTUosaUNBQWlDIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL2NsaWVudC9jb21wb25lbnRzL2FwcC1yb3V0ZXItaGVhZGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUlNDX0hFQURFUiA9ICdyc2MnIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgQUNUSU9OX0hFQURFUiA9ICduZXh0LWFjdGlvbicgYXMgY29uc3Rcbi8vIFRPRE86IEluc3RlYWQgb2Ygc2VuZGluZyB0aGUgZnVsbCByb3V0ZXIgc3RhdGUsIHdlIG9ubHkgbmVlZCB0byBzZW5kIHRoZVxuLy8gc2VnbWVudCBwYXRoLiBTYXZlcyBieXRlcy4gVGhlbiB3ZSBjb3VsZCBhbHNvIHVzZSB0aGlzIGZpZWxkIGZvciBzZWdtZW50XG4vLyBwcmVmZXRjaGVzLCB3aGljaCBhbHNvIG5lZWQgdG8gc3BlY2lmeSBhIHBhcnRpY3VsYXIgc2VnbWVudC5cbmV4cG9ydCBjb25zdCBORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUiA9ICduZXh0LXJvdXRlci1zdGF0ZS10cmVlJyBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IE5FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUiA9ICduZXh0LXJvdXRlci1wcmVmZXRjaCcgYXMgY29uc3Rcbi8vIFRoaXMgY29udGFpbnMgdGhlIHBhdGggdG8gdGhlIHNlZ21lbnQgYmVpbmcgcHJlZmV0Y2hlZC5cbi8vIFRPRE86IElmIHdlIGNoYW5nZSBuZXh0LXJvdXRlci1zdGF0ZS10cmVlIHRvIGJlIGEgc2VnbWVudCBwYXRoLCB3ZSBjYW4gdXNlXG4vLyB0aGF0IGluc3RlYWQuIFRoZW4gbmV4dC1yb3V0ZXItcHJlZmV0Y2ggYW5kIG5leHQtcm91dGVyLXNlZ21lbnQtcHJlZmV0Y2ggY2FuXG4vLyBiZSBtZXJnZWQgaW50byBhIHNpbmdsZSBlbnVtLlxuZXhwb3J0IGNvbnN0IE5FWFRfUk9VVEVSX1NFR01FTlRfUFJFRkVUQ0hfSEVBREVSID1cbiAgJ25leHQtcm91dGVyLXNlZ21lbnQtcHJlZmV0Y2gnIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgTkVYVF9ITVJfUkVGUkVTSF9IRUFERVIgPSAnbmV4dC1obXItcmVmcmVzaCcgYXMgY29uc3RcbmV4cG9ydCBjb25zdCBORVhUX0hNUl9SRUZSRVNIX0hBU0hfQ09PS0lFID0gJ19fbmV4dF9obXJfcmVmcmVzaF9oYXNoX18nIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgTkVYVF9VUkwgPSAnbmV4dC11cmwnIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgUlNDX0NPTlRFTlRfVFlQRV9IRUFERVIgPSAndGV4dC94LWNvbXBvbmVudCcgYXMgY29uc3RcblxuLy8gSGVhZGVyIGZvciB0aGUgSW5zdGFudCBOYXZpZ2F0aW9uIFRlc3RpbmcgQVBJLiBJbiBkZXZlbG9wbWVudCBhbmQgdGVzdGluZ1xuLy8gYnVpbGRzLCBzdGF0aWMgcHJlLXJlbmRlcnMgbm9ybWFsbHkgZG9uJ3QgaGFwcGVuLiBUaGlzIGhlYWRlciB0ZWxscyB0aGVcbi8vIHNlcnZlciB0byBwZXJmb3JtIGEgc3RhdGljIHByZS1yZW5kZXIgYW55d2F5LCBhbGxvd2luZyB0ZXN0cyB0byBhc3NlcnQgb25cbi8vIHRoZSBwcmVmZXRjaGVkIFVJLiBOb3QgZXhwb3NlZCBpbiBwcm9kdWN0aW9uIGJ1aWxkcyBieSBkZWZhdWx0LlxuZXhwb3J0IGNvbnN0IE5FWFRfSU5TVEFOVF9QUkVGRVRDSF9IRUFERVIgPVxuICAnbmV4dC1pbnN0YW50LW5hdmlnYXRpb24tdGVzdGluZy1wcmVmZXRjaCcgYXMgY29uc3RcblxuLy8gQ29va2llIGZvciB0aGUgSW5zdGFudCBOYXZpZ2F0aW9uIFRlc3RpbmcgQVBJLiBVc2VkIGZvciBNUEEgbmF2aWdhdGlvbnNcbi8vIChwYWdlIHJlbG9hZCwgZnVsbCBwYWdlIGxvYWQpIHdoZXJlIHdlIGNhbid0IHNldCByZXF1ZXN0IGhlYWRlcnMuIFdoZW4gc2V0LFxuLy8gdGhlIHNlcnZlciByZW5kZXJzIG9ubHkgdGhlIHN0YXRpYyBzaGVsbC4gTm90IGV4cG9zZWQgaW4gcHJvZHVjdGlvbiBidWlsZHNcbi8vIGJ5IGRlZmF1bHQuXG5leHBvcnQgY29uc3QgTkVYVF9JTlNUQU5UX1RFU1RfQ09PS0lFID1cbiAgJ25leHQtaW5zdGFudC1uYXZpZ2F0aW9uLXRlc3RpbmcnIGFzIGNvbnN0XG5cbmV4cG9ydCBjb25zdCBGTElHSFRfSEVBREVSUyA9IFtcbiAgUlNDX0hFQURFUixcbiAgTkVYVF9ST1VURVJfU1RBVEVfVFJFRV9IRUFERVIsXG4gIE5FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUixcbiAgTkVYVF9ITVJfUkVGUkVTSF9IRUFERVIsXG4gIE5FWFRfUk9VVEVSX1NFR01FTlRfUFJFRkVUQ0hfSEVBREVSLFxuXSBhcyBjb25zdFxuXG5leHBvcnQgY29uc3QgTkVYVF9SU0NfVU5JT05fUVVFUlkgPSAnX3JzYycgYXMgY29uc3RcblxuZXhwb3J0IGNvbnN0IE5FWFRfUk9VVEVSX1NUQUxFX1RJTUVfSEVBREVSID0gJ3gtbmV4dGpzLXN0YWxlLXRpbWUnIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgTkVYVF9ESURfUE9TVFBPTkVfSEVBREVSID0gJ3gtbmV4dGpzLXBvc3Rwb25lZCcgYXMgY29uc3RcbmV4cG9ydCBjb25zdCBORVhUX1JFV1JJVFRFTl9QQVRIX0hFQURFUiA9ICd4LW5leHRqcy1yZXdyaXR0ZW4tcGF0aCcgYXMgY29uc3RcbmV4cG9ydCBjb25zdCBORVhUX1JFV1JJVFRFTl9RVUVSWV9IRUFERVIgPSAneC1uZXh0anMtcmV3cml0dGVuLXF1ZXJ5JyBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IE5FWFRfSVNfUFJFUkVOREVSX0hFQURFUiA9ICd4LW5leHRqcy1wcmVyZW5kZXInIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgTkVYVF9BQ1RJT05fTk9UX0ZPVU5EX0hFQURFUiA9ICd4LW5leHRqcy1hY3Rpb24tbm90LWZvdW5kJyBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IE5FWFRfUkVRVUVTVF9JRF9IRUFERVIgPSAneC1uZXh0anMtcmVxdWVzdC1pZCcgYXMgY29uc3RcbmV4cG9ydCBjb25zdCBORVhUX0hUTUxfUkVRVUVTVF9JRF9IRUFERVIgPSAneC1uZXh0anMtaHRtbC1yZXF1ZXN0LWlkJyBhcyBjb25zdFxuXG4vLyBUT0RPOiBTaG91bGQgdGhpcyBpbmNsdWRlIG5leHRqcyBpbiB0aGUgbmFtZSwgbGlrZSB0aGUgb3RoZXJzP1xuZXhwb3J0IGNvbnN0IE5FWFRfQUNUSU9OX1JFVkFMSURBVEVEX0hFQURFUiA9ICd4LWFjdGlvbi1yZXZhbGlkYXRlZCcgYXMgY29uc3RcbiJdLCJuYW1lcyI6WyJBQ1RJT05fSEVBREVSIiwiRkxJR0hUX0hFQURFUlMiLCJORVhUX0FDVElPTl9OT1RfRk9VTkRfSEVBREVSIiwiTkVYVF9BQ1RJT05fUkVWQUxJREFURURfSEVBREVSIiwiTkVYVF9ESURfUE9TVFBPTkVfSEVBREVSIiwiTkVYVF9ITVJfUkVGUkVTSF9IQVNIX0NPT0tJRSIsIk5FWFRfSE1SX1JFRlJFU0hfSEVBREVSIiwiTkVYVF9IVE1MX1JFUVVFU1RfSURfSEVBREVSIiwiTkVYVF9JTlNUQU5UX1BSRUZFVENIX0hFQURFUiIsIk5FWFRfSU5TVEFOVF9URVNUX0NPT0tJRSIsIk5FWFRfSVNfUFJFUkVOREVSX0hFQURFUiIsIk5FWFRfUkVRVUVTVF9JRF9IRUFERVIiLCJORVhUX1JFV1JJVFRFTl9QQVRIX0hFQURFUiIsIk5FWFRfUkVXUklUVEVOX1FVRVJZX0hFQURFUiIsIk5FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUiIsIk5FWFRfUk9VVEVSX1NFR01FTlRfUFJFRkVUQ0hfSEVBREVSIiwiTkVYVF9ST1VURVJfU1RBTEVfVElNRV9IRUFERVIiLCJORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUiIsIk5FWFRfUlNDX1VOSU9OX1FVRVJZIiwiTkVYVF9VUkwiLCJSU0NfQ09OVEVOVF9UWVBFX0hFQURFUiIsIlJTQ19IRUFERVIiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/app-router-headers.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/app-router-instance.js":
|
||
/*!*************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/app-router-instance.js ***!
|
||
\*************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createMutableActionQueue: function() {\n return createMutableActionQueue;\n },\n dispatchNavigateAction: function() {\n return dispatchNavigateAction;\n },\n dispatchTraverseAction: function() {\n return dispatchTraverseAction;\n },\n getCurrentAppRouterState: function() {\n return getCurrentAppRouterState;\n },\n publicAppRouterInstance: function() {\n return publicAppRouterInstance;\n }\n});\nconst _routerreducertypes = __webpack_require__(/*! ./router-reducer/router-reducer-types */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _routerreducer = __webpack_require__(/*! ./router-reducer/router-reducer */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/router-reducer.js\");\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nconst _isthenable = __webpack_require__(/*! ../../shared/lib/is-thenable */ \"(ssr)/./node_modules/next/dist/shared/lib/is-thenable.js\");\nconst _types = __webpack_require__(/*! ./segment-cache/types */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/types.js\");\nconst _prefetch = __webpack_require__(/*! ./segment-cache/prefetch */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/prefetch.js\");\nconst _navigation = __webpack_require__(/*! ./segment-cache/navigation */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/navigation.js\");\nconst _useactionqueue = __webpack_require__(/*! ./use-action-queue */ \"(ssr)/./node_modules/next/dist/client/components/use-action-queue.js\");\nconst _optimisticroutes = __webpack_require__(/*! ./segment-cache/optimistic-routes */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/optimistic-routes.js\");\nconst _pprnavigations = __webpack_require__(/*! ./router-reducer/ppr-navigations */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/ppr-navigations.js\");\nconst _addbasepath = __webpack_require__(/*! ../add-base-path */ \"(ssr)/./node_modules/next/dist/client/add-base-path.js\");\nconst _approuterutils = __webpack_require__(/*! ./app-router-utils */ \"(ssr)/./node_modules/next/dist/client/components/app-router-utils.js\");\nconst _links = __webpack_require__(/*! ./links */ \"(ssr)/./node_modules/next/dist/client/components/links.js\");\nconst _javascripturl = __webpack_require__(/*! ../lib/javascript-url */ \"(ssr)/./node_modules/next/dist/client/lib/javascript-url.js\");\nfunction runRemainingActions(actionQueue, setState) {\n if (actionQueue.pending !== null) {\n actionQueue.pending = actionQueue.pending.next;\n if (actionQueue.pending !== null) {\n runAction({\n actionQueue,\n action: actionQueue.pending,\n setState\n });\n }\n } else {\n // Check for refresh when pending is already null\n // This handles the case where a discarded server action completes\n // after the navigation has already finished and the queue is empty\n if (actionQueue.needsRefresh) {\n actionQueue.needsRefresh = false;\n actionQueue.dispatch({\n type: _routerreducertypes.ACTION_REFRESH\n }, setState);\n }\n }\n}\nasync function runAction({ actionQueue, action, setState }) {\n const prevState = actionQueue.state;\n actionQueue.pending = action;\n const payload = action.payload;\n const actionResult = actionQueue.action(prevState, payload);\n function handleResult(nextState) {\n // if we discarded this action, the state should also be discarded\n if (action.discarded) {\n // Check if the discarded server action revalidated data\n if (action.payload.type === _routerreducertypes.ACTION_SERVER_ACTION && action.payload.didRevalidate) {\n // The server action was discarded but it revalidated data,\n // mark that we need to refresh after all actions complete\n actionQueue.needsRefresh = true;\n }\n // Still need to run remaining actions even for discarded actions\n // to potentially trigger the refresh\n runRemainingActions(actionQueue, setState);\n return;\n }\n actionQueue.state = nextState;\n runRemainingActions(actionQueue, setState);\n action.resolve(nextState);\n }\n // if the action is a promise, set up a callback to resolve it\n if ((0, _isthenable.isThenable)(actionResult)) {\n actionResult.then(handleResult, (err)=>{\n runRemainingActions(actionQueue, setState);\n action.reject(err);\n });\n } else {\n handleResult(actionResult);\n }\n}\nfunction dispatchAction(actionQueue, payload, setState) {\n let resolvers = {\n resolve: setState,\n reject: ()=>{}\n };\n // most of the action types are async with the exception of restore\n // it's important that restore is handled quickly since it's fired on the popstate event\n // and we don't want to add any delay on a back/forward nav\n // this only creates a promise for the async actions\n if (payload.type !== _routerreducertypes.ACTION_RESTORE) {\n // Create the promise and assign the resolvers to the object.\n const deferredPromise = new Promise((resolve, reject)=>{\n resolvers = {\n resolve,\n reject\n };\n });\n (0, _react.startTransition)(()=>{\n // we immediately notify React of the pending promise -- the resolver is attached to the action node\n // and will be called when the associated action promise resolves\n setState(deferredPromise);\n });\n }\n const newAction = {\n payload,\n next: null,\n resolve: resolvers.resolve,\n reject: resolvers.reject\n };\n // Check if the queue is empty\n if (actionQueue.pending === null) {\n // The queue is empty, so add the action and start it immediately\n // Mark this action as the last in the queue\n actionQueue.last = newAction;\n runAction({\n actionQueue,\n action: newAction,\n setState\n });\n } else if (payload.type === _routerreducertypes.ACTION_NAVIGATE || payload.type === _routerreducertypes.ACTION_RESTORE) {\n // Navigations (including back/forward) take priority over any pending actions.\n // Mark the pending action as discarded (so the state is never applied) and start the navigation action immediately.\n actionQueue.pending.discarded = true;\n // The rest of the current queue should still execute after this navigation.\n // (Note that it can't contain any earlier navigations, because we always put those into `actionQueue.pending` by calling `runAction`)\n newAction.next = actionQueue.pending.next;\n runAction({\n actionQueue,\n action: newAction,\n setState\n });\n } else {\n // The queue is not empty, so add the action to the end of the queue\n // It will be started by runRemainingActions after the previous action finishes\n if (actionQueue.last !== null) {\n actionQueue.last.next = newAction;\n }\n actionQueue.last = newAction;\n }\n}\nlet globalActionQueue = null;\nfunction createMutableActionQueue(initialState, instrumentationHooks) {\n const actionQueue = {\n state: initialState,\n dispatch: (payload, setState)=>dispatchAction(actionQueue, payload, setState),\n action: async (state, action)=>{\n const result = (0, _routerreducer.reducer)(state, action);\n return result;\n },\n pending: null,\n last: null,\n onRouterTransitionStart: instrumentationHooks !== null && typeof instrumentationHooks.onRouterTransitionStart === 'function' ? instrumentationHooks.onRouterTransitionStart : null\n };\n if (false) {}\n return actionQueue;\n}\nfunction getCurrentAppRouterState() {\n return globalActionQueue !== null ? globalActionQueue.state : null;\n}\nfunction getAppRouterActionQueue() {\n if (globalActionQueue === null) {\n throw Object.defineProperty(new Error('Internal Next.js error: Router action dispatched before initialization.'), \"__NEXT_ERROR_CODE\", {\n value: \"E668\",\n enumerable: false,\n configurable: true\n });\n }\n return globalActionQueue;\n}\nfunction getProfilingHookForOnNavigationStart() {\n if (globalActionQueue !== null) {\n return globalActionQueue.onRouterTransitionStart;\n }\n return null;\n}\nfunction dispatchNavigateAction(href, navigateType, scrollBehavior, linkInstanceRef, transitionTypes) {\n // TODO: This stuff could just go into the reducer. Leaving as-is for now\n // since we're about to rewrite all the router reducer stuff anyway.\n if (transitionTypes) {\n for (const type of transitionTypes){\n (0, _react.addTransitionType)(type);\n }\n }\n const url = new URL((0, _addbasepath.addBasePath)(href), location.href);\n if (false) {}\n (0, _links.setLinkForCurrentNavigation)(linkInstanceRef);\n const onRouterTransitionStart = getProfilingHookForOnNavigationStart();\n if (onRouterTransitionStart !== null) {\n onRouterTransitionStart(href, navigateType);\n }\n (0, _useactionqueue.dispatchAppRouterAction)({\n type: _routerreducertypes.ACTION_NAVIGATE,\n url,\n isExternalUrl: (0, _approuterutils.isExternalURL)(url),\n locationSearch: location.search,\n scrollBehavior,\n navigateType\n });\n}\nfunction dispatchTraverseAction(href, historyState) {\n const onRouterTransitionStart = getProfilingHookForOnNavigationStart();\n if (onRouterTransitionStart !== null) {\n onRouterTransitionStart(href, 'traverse');\n }\n (0, _useactionqueue.dispatchAppRouterAction)({\n type: _routerreducertypes.ACTION_RESTORE,\n url: new URL(href),\n historyState\n });\n}\n/**\n * (Experimental) Perform a gesture navigation. This dispatches through React's\n * useOptimistic instead of the main action queue, allowing the state to be\n * shown during a gesture transition and discarded when the canonical navigation\n * completes.\n *\n * Only available when experimental.gestureTransition is enabled.\n */ function gesturePush(href, options) {\n if (false) {}\n}\nconst publicAppRouterInstance = {\n back: ()=>window.history.back(),\n forward: ()=>window.history.forward(),\n prefetch: // data in the router reducer state; it writes into a global mutable\n // cache. So we don't need to dispatch an action.\n (href, options)=>{\n if ((0, _javascripturl.isJavaScriptURLString)(href)) {\n throw Object.defineProperty(new Error('Next.js has blocked a javascript: URL as a security precaution.'), \"__NEXT_ERROR_CODE\", {\n value: \"E978\",\n enumerable: false,\n configurable: true\n });\n }\n const actionQueue = getAppRouterActionQueue();\n const prefetchKind = options?.kind ?? _routerreducertypes.PrefetchKind.AUTO;\n // We don't currently offer a way to issue a runtime prefetch via `router.prefetch()`.\n // This will be possible when we update its API to not take a PrefetchKind.\n let fetchStrategy;\n switch(prefetchKind){\n case _routerreducertypes.PrefetchKind.AUTO:\n {\n // We default to PPR. We'll discover whether or not the route supports it with the initial prefetch.\n fetchStrategy = _types.FetchStrategy.PPR;\n break;\n }\n case _routerreducertypes.PrefetchKind.FULL:\n {\n fetchStrategy = _types.FetchStrategy.Full;\n break;\n }\n default:\n {\n prefetchKind;\n // Despite typescript thinking that this can't happen,\n // we might get an unexpected value from user code.\n // We don't know what they want, but we know they want a prefetch,\n // so use the default.\n fetchStrategy = _types.FetchStrategy.PPR;\n }\n }\n (0, _prefetch.prefetch)(href, actionQueue.state.nextUrl, actionQueue.state.tree, fetchStrategy, options?.onInvalidate ?? null);\n },\n replace: (href, options)=>{\n if ((0, _javascripturl.isJavaScriptURLString)(href)) {\n throw Object.defineProperty(new Error('Next.js has blocked a javascript: URL as a security precaution.'), \"__NEXT_ERROR_CODE\", {\n value: \"E978\",\n enumerable: false,\n configurable: true\n });\n }\n (0, _react.startTransition)(()=>{\n dispatchNavigateAction(href, 'replace', options?.scroll === false ? _routerreducertypes.ScrollBehavior.NoScroll : _routerreducertypes.ScrollBehavior.Default, null, options?.transitionTypes);\n });\n },\n push: (href, options)=>{\n if ((0, _javascripturl.isJavaScriptURLString)(href)) {\n throw Object.defineProperty(new Error('Next.js has blocked a javascript: URL as a security precaution.'), \"__NEXT_ERROR_CODE\", {\n value: \"E978\",\n enumerable: false,\n configurable: true\n });\n }\n (0, _react.startTransition)(()=>{\n dispatchNavigateAction(href, 'push', options?.scroll === false ? _routerreducertypes.ScrollBehavior.NoScroll : _routerreducertypes.ScrollBehavior.Default, null, options?.transitionTypes);\n });\n },\n refresh: ()=>{\n (0, _react.startTransition)(()=>{\n (0, _useactionqueue.dispatchAppRouterAction)({\n type: _routerreducertypes.ACTION_REFRESH\n });\n });\n },\n hmrRefresh: ()=>{\n if (false) {} else {\n // Reset the known routes table so that route predictions are cleared\n // when routes change during development.\n (0, _optimisticroutes.resetKnownRoutes)();\n (0, _react.startTransition)(()=>{\n (0, _useactionqueue.dispatchAppRouterAction)({\n type: _routerreducertypes.ACTION_HMR_REFRESH\n });\n });\n }\n }\n};\n// Conditionally add experimental_gesturePush when gestureTransition is enabled\nif (false) {}\n// Exists for debugging purposes. Don't use in application code.\nif (false) {}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=app-router-instance.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2FwcC1yb3V0ZXItaW5zdGFuY2UuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBMk5nQkEsd0JBQXdCO2VBQXhCQTs7SUEwREFDLHNCQUFzQjtlQUF0QkE7O0lBc0NBQyxzQkFBc0I7ZUFBdEJBOztJQTFEQUMsd0JBQXdCO2VBQXhCQTs7SUFzSUhDLHVCQUF1QjtlQUF2QkE7OztnREExWE47MkNBQ2lCO21DQUMyQjt3Q0FDeEI7bUNBSXBCO3NDQUM4Qzt3Q0FDNUI7NENBSWxCOzhDQUMwQjs0Q0FDRDt5Q0FDSjs0Q0FDRTttQ0FNaUM7MkNBR3pCO0FBK0J0QyxTQUFTQyxvQkFDUEMsV0FBaUMsRUFDakNDLFFBQThCO0lBRTlCLElBQUlELFlBQVlFLE9BQU8sS0FBSyxNQUFNO1FBQ2hDRixZQUFZRSxPQUFPLEdBQUdGLFlBQVlFLE9BQU8sQ0FBQ0MsSUFBSTtRQUM5QyxJQUFJSCxZQUFZRSxPQUFPLEtBQUssTUFBTTtZQUNoQ0UsVUFBVTtnQkFDUko7Z0JBQ0FLLFFBQVFMLFlBQVlFLE9BQU87Z0JBQzNCRDtZQUNGO1FBQ0Y7SUFDRixPQUFPO1FBQ0wsaURBQWlEO1FBQ2pELGtFQUFrRTtRQUNsRSxtRUFBbUU7UUFDbkUsSUFBSUQsWUFBWU0sWUFBWSxFQUFFO1lBQzVCTixZQUFZTSxZQUFZLEdBQUc7WUFDM0JOLFlBQVlPLFFBQVEsQ0FBQztnQkFBRUMsTUFBTUMsb0JBQUFBLGNBQWM7WUFBQyxHQUFHUjtRQUNqRDtJQUNGO0FBQ0Y7QUFFQSxlQUFlRyxVQUFVLEVBQ3ZCSixXQUFXLEVBQ1hLLE1BQU0sRUFDTkosUUFBUSxFQUtUO0lBQ0MsTUFBTVMsWUFBWVYsWUFBWVcsS0FBSztJQUVuQ1gsWUFBWUUsT0FBTyxHQUFHRztJQUV0QixNQUFNTyxVQUFVUCxPQUFPTyxPQUFPO0lBQzlCLE1BQU1DLGVBQWViLFlBQVlLLE1BQU0sQ0FBQ0ssV0FBV0U7SUFFbkQsU0FBU0Us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QkFBQUEsY0FBYyxDQUFDRSxPQUFPLEVBQzFCLE1BQ0FSLFNBQVNsQjtRQUViO0lBQ0Y7SUFDQXNELFNBQVM7UUFDUHhFLENBQUFBLEdBQUFBLE9BQUFBLGVBQUFBLEVBQWdCO1lBQ2Q2QixDQUFBQSxHQUFBQSxnQkFBQUEsdUJBQUFBLEVBQXdCO2dCQUN0QmxELE1BQU1DLG9CQUFBQSxjQUFjO1lBQ3RCO1FBQ0Y7SUFDRjtJQUNBNkYsWUFBWTtRQUNWLElBQUlqRCxLQUFvQixFQUFvQixFQUkzQyxNQUFNO1lBQ0wscUVBQXFFO1lBQ3JFLHlDQUF5QztZQUN6Q21ELENBQUFBLEdBQUFBLGtCQUFBQSxnQkFBQUE7WUFDQTNFLENBQUFBLEdBQUFBLE9BQUFBLGVBQWUsRUFBQztnQkFDZDZCLENBQUFBLEdBQUFBLGdCQUFBQSx1QkFBQUEsRUFBd0I7b0JBQ3RCbEQsTUFBTWlHLG9CQUFBQSxrQkFBa0I7Z0JBQzFCO1lBQ0Y7UUFDRjtJQUNGO0FBQ0Y7QUFFQSwrRUFBK0U7QUFDL0UsSUFBSXBELEtBQXFDLEVBQUUsRUFFMUM7QUFFRCxnRUFBZ0U7QUFDaEUsSUFBSSxLQUE0QyxFQUFFLEVBRWpEIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL2NsaWVudC9jb21wb25lbnRzL2FwcC1yb3V0ZXItaW5zdGFuY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdHlwZSBBcHBSb3V0ZXJTdGF0ZSxcbiAgdHlwZSBSZWR1Y2VyQWN0aW9ucyxcbiAgdHlwZSBSZWR1Y2VyU3RhdGUsXG4gIEFDVElPTl9SRUZSRVNILFxuICBBQ1RJT05fU0VSVkVSX0FDVElPTixcbiAgQUNUSU9OX05BVklHQVRFLFxuICBBQ1RJT05fUkVTVE9SRSxcbiAgdHlwZSBOYXZpZ2F0ZUFjdGlvbixcbiAgQUNUSU9OX0hNUl9SRUZSRVNILFxuICBQcmVmZXRjaEtpbmQsXG4gIFNjcm9sbEJlaGF2aW9yLFxuICB0eXBlIEFwcEhpc3RvcnlTdGF0ZSxcbn0gZnJvbSAnLi9yb3V0ZXItcmVkdWNlci9yb3V0ZXItcmVkdWNlci10eXBlcydcbmltcG9ydCB7IHJlZHVjZXIgfSBmcm9tICcuL3JvdXRlci1yZWR1Y2VyL3JvdXRlci1yZWR1Y2VyJ1xuaW1wb3J0IHsgYWRkVHJhbnNpdGlvblR5cGUsIHN0YXJ0VHJhbnNpdGlvbiB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgaXNUaGVuYWJsZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvaXMtdGhlbmFibGUnXG5pbXBvcnQge1xuICBGZXRjaFN0cmF0ZWd5LFxuICB0eXBlIFByZWZldGNoVGFza0ZldGNoU3RyYXRlZ3ksXG59IGZyb20gJy4vc2VnbWVudC1jYWNoZS90eXBlcydcbmltcG9ydCB7IHByZWZldGNoIGFzIHByZWZldGNoV2l0aFNlZ21lbnRDYWNoZSB9IGZyb20gJy4vc2VnbWVudC1jYWNoZS9wcmVmZXRjaCdcbmltcG9ydCB7IG5hdmlnYXRlIH0gZnJvbSAnLi9zZWdtZW50LWNhY2hlL25hdmlnYXRpb24nXG5pbXBvcnQge1xuICBkaXNwYXRjaEFwcFJvdXRlckFjdGlvbixcbiAgZGlzcGF0Y2hHZXN0dXJlU3RhdGUsXG59IGZyb20gJy4vdXNlLWFjdGlvbi1xdWV1ZSdcbmltcG9ydCB7IHJlc2V0S25vd25Sb3V0ZXMgfSBmcm9tICcuL3NlZ21lbnQtY2FjaGUvb3B0aW1pc3RpYy1yb3V0ZXMnXG5pbXBvcnQgeyBGcmVzaG5lc3NQb2xpY3kgfSBmcm9tICcuL3JvdXRlci1yZWR1Y2VyL3Bwci1uYXZpZ2F0aW9ucydcbmltcG9ydCB7IGFkZEJhc2VQYXRoIH0gZnJvbSAnLi4vYWRkLWJhc2UtcGF0aCdcbmltcG9ydCB7IGlzRXh0ZXJuYWxVUkwgfSBmcm9tICcuL2FwcC1yb3V0ZXItdXRpbHMnXG5pbXBvcnQgdHlwZSB7XG4gIEFwcFJvdXRlckluc3RhbmNlLFxuICBOYXZpZ2F0ZU9wdGlvbnMsXG4gIFByZWZldGNoT3B0aW9ucyxcbn0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgeyBzZXRMaW5rRm9yQ3VycmVudE5hdmlnYXRpb24sIHR5cGUgTGlua0luc3RhbmNlIH0gZnJvbSAnLi9saW5rcydcbmltcG9ydCB0eXBlIHsgQ2xpZW50SW5zdHJ1bWVudGF0aW9uSG9va3MgfSBmcm9tICcuLi9hcHAtaW5kZXgnXG5pbXBvcnQgdHlwZSB7IEdsb2JhbEVycm9yQ29tcG9uZW50IH0gZnJvbSAnLi9idWlsdGluL2dsb2JhbC1lcnJvcidcbmltcG9ydCB7IGlzSmF2YVNjcmlwdFVSTFN0cmluZyB9IGZyb20gJy4uL2xpYi9qYXZhc2NyaXB0LXVybCdcblxuZXhwb3J0IHR5cGUgRGlzcGF0Y2hTdGF0ZVByb21pc2UgPSBSZWFjdC5EaXNwYXRjaDxSZWR1Y2VyU3RhdGU+XG5cbmV4cG9ydCB0eXBlIEFwcFJvdXRlckFjdGlvblF1ZXVlID0ge1xuICBzdGF0ZTogQXBwUm91dGVyU3RhdGVcbiAgZGlzcGF0Y2g6IChwYXlsb2FkOiBSZWR1Y2VyQWN0aW9ucywgc2V0U3RhdGU6IERpc3BhdGNoU3RhdGVQcm9taXNlKSA9PiB2b2lkXG4gIGFjdGlvbjogKHN0YXRlOiBBcHBSb3V0ZXJTdGF0ZSwgYWN0aW9uOiBSZWR1Y2VyQWN0aW9ucykgPT4gUmVkdWNlclN0YXRlXG5cbiAgb25Sb3V0ZXJUcmFuc2l0aW9uU3RhcnQ6XG4gICAgfCAoKHVybDogc3RyaW5nLCB0eXBlOiAncHVzaCcgfCAncmVwbGFjZScgfCAndHJhdmVyc2UnKSA9PiB2b2lkKVxuICAgIHwgbnVsbFxuXG4gIHBlbmRpbmc6IEFjdGlvblF1ZXVlTm9kZSB8IG51bGxcbiAgbmVlZHNSZWZyZXNoPzogYm9vbGVhblxuICBsYXN0OiBBY3Rpb25RdWV1ZU5vZGUgfCBudWxsXG59XG5cbmV4cG9ydCB0eXBlIEdsb2JhbEVycm9yU3RhdGUgPSBbXG4gIEdsb2JhbEVycm9yOiBHbG9iYWxFcnJvckNvbXBvbmVudCxcbiAgc3R5bGVzOiBSZWFjdC5SZWFjdE5vZGUsXG5dXG5cbmV4cG9ydCB0eXBlIEFjdGlvblF1ZXVlTm9kZSA9IHtcbiAgcGF5bG9hZDogUmVkdWNlckFjdGlvbnNcbiAgbmV4dDogQWN0aW9uUXVldWVOb2RlIHwgbnVsbFxuICByZXNvbHZlOiAodmFsdWU6IFJlZHVjZXJTdGF0ZSkgPT4gdm9pZFxuICByZWplY3Q6IChlcnI6IEVycm9yKSA9PiB2b2lkXG4gIGRpc2NhcmRlZD86IGJvb2xlYW5cbn1cblxuZnVuY3Rpb24gcnVuUmVtYWluaW5nQWN0aW9ucyhcbiAgYWN0aW9uUXVldWU6IEFwcFJvdXRlckFjdGlvblF1ZXVlLFxuICBzZXRTdGF0ZTogRGlzcGF0Y2hTdGF0ZVByb21pc2Vcbikge1xuICBpZiAoYWN0aW9uUXVldWUucGVuZGluZyAhPT0gbnVsbCkge1xuICAgIGFjdGlvblF1ZXVlLnBlbmRpbmcgPSBhY3Rpb25RdWV1ZS5wZW5kaW5nLm5leHRcbiAgICBpZiAoYWN0aW9uUXVldWUucGVuZGluZyAhPT0gbnVsbCkge1xuICAgICAgcnVuQWN0aW9uKHtcbiAgICAgICAgYWN0aW9uUXVldWUsXG4gICAgICAgIGFjdGlvbjogYWN0aW9uUXVldWUucGVuZGluZyxcbiAgICAgICAgc2V0U3RhdGUsXG4gICAgICB9KVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBDaGVjayBmb3IgcmVmcmVzaCB3aGVuIHBlbmRpbmcgaXMgYWxyZWFkeSBudWxsXG4gICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIGEgZGlzY2FyZGVkIHNlcnZlciBhY3Rpb24gY29tcGxldGVzXG4gICAgLy8gYWZ0ZXIgdGhlIG5hdmlnYXRpb24gaGFzIGFscmVhZHkgZmluaXNoZWQgYW5kIHRoZSBxdWV1ZSBpcyBlbXB0eVxuICAgIGlmIChhY3Rpb25RdWV1ZS5uZWVkc1JlZnJlc2gpIHtcbiAgICAgIGFjdGlvblF1ZXVlLm5lZWRzUmVmcmVzaCA9IGZhbHNlXG4gICAgICBhY3Rpb25RdWV1ZS5kaXNwYXRjaCh7IHR5cGU6IEFDVElPTl9SRUZSRVNIIH0sIHNldFN0YXRlKVxuICAgIH1cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBydW5BY3Rpb24oe1xuICBhY3Rpb25RdWV1ZSxcbiAgYWN0aW9uLFxuICBzZXRTdGF0ZSxcbn06IHtcbiAgYWN0aW9uUXVldWU6IEFwcFJvdXRlckFjdGlvblF1ZXVlXG4gIGFjdGlvbjogQWN0aW9uUXVldWVOb2RlXG4gIHNldFN0YXRlOiBEaXNwYXRjaFN0YXRlUHJvbWlzZVxufSkge1xuICBjb25zdCBwcmV2U3RhdGUgPSBhY3Rpb25RdWV1ZS5zdGF0ZVxuXG4gIGFjdGlvblF1ZXVlLnBlbmRpbmcgPSBhY3Rpb25cblxuICBjb25zdCBwYXlsb2FkID0gYWN0aW9uLnBheWxvYWRcbiAgY29uc3QgYWN0aW9uUmVzdWx0ID0gYWN0aW9uUXVldWUuYWN0aW9uKHByZXZTdGF0ZSwgcGF5bG9hZClcblxuICBmdW5jdGlvbiBoYW5kbGVSZXN1bHQobmV4dFN0YXRlOiBBcHBSb3V0ZXJTdGF0ZSkge1xuICAgIC8vIGlmIHdlIGRpc2NhcmRlZCB0aGlzIGFjdGlvbiwgdGhlIHN0YXRlIHNob3VsZCBhbHNvIGJlIGRpc2NhcmRlZFxuICAgIGlmIChhY3Rpb24uZGlzY2FyZGVkKSB7XG4gICAgICAvLyBDaGVjayBpZiB0aGUgZGlzY2FyZGVkIHNlcnZlciBhY3Rpb24gcmV2YWxpZGF0ZWQgZGF0YVxuICAgICAgaWYgKFxuICAgICAgICBhY3Rpb24ucGF5bG9hZC50eXBlID09PSBBQ1RJT05fU0VSVkVSX0FDVElPTiAmJlxuICAgICAgICBhY3Rpb24ucGF5bG9hZC5kaWRSZXZhbGlkYXRlXG4gICAgICApIHtcbiAgICAgICAgLy8gVGhlIHNlcnZlciBhY3Rpb24gd2FzIGRpc2NhcmRlZCBidXQgaXQgcmV2YWxpZGF0ZWQgZGF0YSxcbiAgICAgICAgLy8gbWFyayB0aGF0IHdlIG5lZWQgdG8gcmVmcmVzaCBhZnRlciBhbGwgYWN0aW9ucyBjb21wbGV0ZVxuICAgICAgICBhY3Rpb25RdWV1ZS5uZWVkc1JlZnJlc2ggPSB0cnVlXG4gICAgICB9XG4gICAgICAvLyBTdGlsbCBuZWVkIHRvIHJ1biByZW1haW5pbmcgYWN0aW9ucyBldmVuIGZvciBkaXNjYXJkZWQgYWN0aW9uc1xuICAgICAgLy8gdG8gcG90ZW50aWFsbHkgdHJpZ2dlciB0aGUgcmVmcmVzaFxuICAgICAgcnVuUmVtYWluaW5nQWN0aW9ucyhhY3Rpb25RdWV1ZSwgc2V0U3RhdGUpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBhY3Rpb25RdWV1ZS5zdGF0ZSA9IG5leHRTdGF0ZVxuXG4gICAgcnVuUmVtYWluaW5nQWN0aW9ucyhhY3Rpb25RdWV1ZSwgc2V0U3RhdGUpXG4gICAgYWN0aW9uLnJlc29sdmUobmV4dFN0YXRlKVxuICB9XG5cbiAgLy8gaWYgdGhlIGFjdGlvbiBpcyBhIHByb21pc2UsIHNldCB1cCBhIGNhbGxiYWNrIHRvIHJlc29sdmUgaXRcbiAgaWYgKGlzVGhlbmFibGUoYWN0aW9uUmVzdWx0KSkge1xuICAgIGFjdGlvblJlc3VsdC50aGVuKGhhbmRsZVJlc3VsdCwgKGVycikgPT4ge1xuICAgICAgcnVuUmVtYWluaW5nQWN0aW9ucyhhY3Rpb25RdWV1ZSwgc2V0U3RhdGUpXG4gICAgICBhY3Rpb24ucmVqZWN0KGVycilcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIGhhbmRsZVJlc3VsdChhY3Rpb25SZXN1bHQpXG4gIH1cbn1cblxuZnVuY3Rpb24gZGlzcGF0Y2hBY3Rpb24oXG4gIGFjdGlvblF1ZXVlOiBBcHBSb3V0ZXJBY3Rpb25RdWV1ZSxcbiAgcGF5bG9hZDogUmVkdWNlckFjdGlvbnMsXG4gIHNldFN0YXRlOiBEaXNwYXRjaFN0YXRlUHJvbWlzZVxuKSB7XG4gIGxldCByZXNvbHZlcnM6IHtcbiAgICByZXNvbHZlOiAodmFsdWU6IFJlZHVjZXJTdGF0ZSkgPT4gdm9pZFxuICAgIHJlamVjdDogKHJlYXNvbjogYW55KSA9PiB2b2lkXG4gIH0gPSB7IHJlc29sdmU6IHNldFN0YXRlLCByZWplY3Q6ICgpID0+IHt9IH1cblxuICAvLyBtb3N0IG9mIHRoZSBhY3Rpb24gdHlwZXMgYXJlIGFzeW5jIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiByZXN0b3JlXG4gIC8vIGl0J3MgaW1wb3J0YW50IHRoYXQgcmVzdG9yZSBpcyBoYW5kbGVkIHF1aWNrbHkgc2luY2UgaXQncyBmaXJlZCBvbiB0aGUgcG9wc3RhdGUgZXZlbnRcbiAgLy8gYW5kIHdlIGRvbid0IHdhbnQgdG8gYWRkIGFueSBkZWxheSBvbiBhIGJhY2svZm9yd2FyZCBuYXZcbiAgLy8gdGhpcyBvbmx5IGNyZWF0ZXMgYSBwcm9taXNlIGZvciB0aGUgYXN5bmMgYWN0aW9uc1xuICBpZiAocGF5bG9hZC50eXBlICE9PSBBQ1RJT05fUkVTVE9SRSkge1xuICAgIC8vIENyZWF0ZSB0aGUgcHJvbWlzZSBhbmQgYXNzaWduIHRoZSByZXNvbHZlcnMgdG8gdGhlIG9iamVjdC5cbiAgICBjb25zdCBkZWZlcnJlZFByb21pc2UgPSBuZXcgUHJvbWlzZTxBcHBSb3V0ZXJTdGF0ZT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgcmVzb2x2ZXJzID0geyByZXNvbHZlLCByZWplY3QgfVxuICAgIH0pXG5cbiAgICBzdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgLy8gd2UgaW1tZWRpYXRlbHkgbm90aWZ5IFJlYWN0IG9mIHRoZSBwZW5kaW5nIHByb21pc2UgLS0gdGhlIHJlc29sdmVyIGlzIGF0dGFjaGVkIHRvIHRoZSBhY3Rpb24gbm9kZVxuICAgICAgLy8gYW5kIHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgYWN0aW9uIHByb21pc2UgcmVzb2x2ZXNcbiAgICAgIHNldFN0YXRlKGRlZmVycmVkUHJvbWlzZSlcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgbmV3QWN0aW9uOiBBY3Rpb25RdWV1ZU5vZGUgPSB7XG4gICAgcGF5bG9hZCxcbiAgICBuZXh0OiBudWxsLFxuICAgIHJlc29sdmU6IHJlc29sdmVycy5yZXNvbHZlLFxuICAgIHJlamVjdDogcmVzb2x2ZXJzLnJlamVjdCxcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eVxuICBpZiAoYWN0aW9uUXVldWUucGVuZGluZyA9PT0gbnVsbCkge1xuICAgIC8vIFRoZSBxdWV1ZSBpcyBlbXB0eSwgc28gYWRkIHRoZSBhY3Rpb24gYW5kIHN0YXJ0IGl0IGltbWVkaWF0ZWx5XG4gICAgLy8gTWFyayB0aGlzIGFjdGlvbiBhcyB0aGUgbGFzdCBpbiB0aGUgcXVldWVcbiAgICBhY3Rpb25RdWV1ZS5sYXN0ID0gbmV3QWN0aW9uXG5cbiAgICBydW5BY3Rpb24oe1xuICAgICAgYWN0aW9uUXVldWUsXG4gICAgICBhY3Rpb246IG5ld0FjdGlvbixcbiAgICAgIHNldFN0YXRlLFxuICAgIH0pXG4gIH0gZWxzZSBpZiAoXG4gICAgcGF5bG9hZC50eXBlID09PSBBQ1RJT05fTkFWSUdBVEUgfHxcbiAgICBwYXlsb2FkLnR5cGUgPT09IEFDVElPTl9SRVNUT1JFXG4gICkge1xuICAgIC8vIE5hdmlnYXRpb25zIChpbmNsdWRpbmcgYmFjay9mb3J3YXJkKSB0YWtlIHByaW9yaXR5IG92ZXIgYW55IHBlbmRpbmcgYWN0aW9ucy5cbiAgICAvLyBNYXJrIHRoZSBwZW5kaW5nIGFjdGlvbiBhcyBkaXNjYXJkZWQgKHNvIHRoZSBzdGF0ZSBpcyBuZXZlciBhcHBsaWVkKSBhbmQgc3RhcnQgdGhlIG5hdmlnYXRpb24gYWN0aW9uIGltbWVkaWF0ZWx5LlxuICAgIGFjdGlvblF1ZXVlLnBlbmRpbmcuZGlzY2FyZGVkID0gdHJ1ZVxuXG4gICAgLy8gVGhlIHJlc3Qgb2YgdGhlIGN1cnJlbnQgcXVldWUgc2hvdWxkIHN0aWxsIGV4ZWN1dGUgYWZ0ZXIgdGhpcyBuYXZpZ2F0aW9uLlxuICAgIC8vIChOb3RlIHRoYXQgaXQgY2FuJ3QgY29udGFpbiBhbnkgZWFybGllciBuYXZpZ2F0aW9ucywgYmVjYXVzZSB3ZSBhbHdheXMgcHV0IHRob3NlIGludG8gYGFjdGlvblF1ZXVlLnBlbmRpbmdgIGJ5IGNhbGxpbmcgYHJ1bkFjdGlvbmApXG4gICAgbmV3QWN0aW9uLm5leHQgPSBhY3Rpb25RdWV1ZS5wZW5kaW5nLm5leHRcblxuICAgIHJ1bkFjdGlvbih7XG4gICAgICBhY3Rpb25RdWV1ZSxcbiAgICAgIGFjdGlvbjogbmV3QWN0aW9uLFxuICAgICAgc2V0U3RhdGUsXG4gICAgfSlcbiAgfSBlbHNlIHtcbiAgICAvLyBUaGUgcXVldWUgaXMgbm90IGVtcHR5LCBzbyBhZGQgdGhlIGFjdGlvbiB0byB0aGUgZW5kIG9mIHRoZSBxdWV1ZVxuICAgIC8vIEl0IHdpbGwgYmUgc3RhcnRlZCBieSBydW5SZW1haW5pbmdBY3Rpb25zIGFmdGVyIHRoZSBwcmV2aW91cyBhY3Rpb24gZmluaXNoZXNcbiAgICBpZiAoYWN0aW9uUXVldWUubGFzdCAhPT0gbnVsbCkge1xuICAgICAgYWN0aW9uUXVldWUubGFzdC5uZXh0ID0gbmV3QWN0aW9uXG4gICAgfVxuICAgIGFjdGlvblF1ZXVlLmxhc3QgPSBuZXdBY3Rpb25cbiAgfVxufVxuXG5sZXQgZ2xvYmFsQWN0aW9uUXVldWU6IEFwcFJvdXRlckFjdGlvblF1ZXVlIHwgbnVsbCA9IG51bGxcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU11dGFibGVBY3Rpb25RdWV1ZShcbiAgaW5pdGlhbFN0YXRlOiBBcHBSb3V0ZXJTdGF0ZSxcbiAgaW5zdHJ1bWVudGF0aW9uSG9va3M6IENsaWVudEluc3RydW1lbnRhdGlvbkhvb2tzIHwgbnVsbFxuKTogQXBwUm91dGVyQWN0aW9uUXVldWUge1xuICBjb25zdCBhY3Rpb25RdWV1ZTogQXBwUm91dGVyQWN0aW9uUXVldWUgPSB7XG4gICAgc3RhdGU6IGluaXRpYWxTdGF0ZSxcbiAgICBkaXNwYXRjaDogKHBheWxvYWQ6IFJlZHVjZXJBY3Rpb25zLCBzZXRTdGF0ZTogRGlzcGF0Y2hTdGF0ZVByb21pc2UpID0+XG4gICAgICBkaXNwYXRjaEFjdGlvbihhY3Rpb25RdWV1ZSwgcGF5bG9hZCwgc2V0U3RhdGUpLFxuICAgIGFjdGlvbjogYXN5bmMgKHN0YXRlOiBBcHBSb3V0ZXJTdGF0ZSwgYWN0aW9uOiBSZWR1Y2VyQWN0aW9ucykgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVkdWNlcihzdGF0ZSwgYWN0aW9uKVxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH0sXG4gICAgcGVuZGluZzogbnVsbCxcbiAgICBsYXN0OiBudWxsLFxuICAgIG9uUm91dGVyVHJhbnNpdGlvblN0YXJ0OlxuICAgICAgaW5zdHJ1bWVudGF0aW9uSG9va3MgIT09IG51bGwgJiZcbiAgICAgIHR5cGVvZiBpbnN0cnVtZW50YXRpb25Ib29rcy5vblJvdXRlclRyYW5zaXRpb25TdGFydCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IC8vIFRoaXMgcHJvZmlsaW5nIGhvb2sgd2lsbCBiZSBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGV2ZXJ5IG5hdmlnYXRpb24uXG4gICAgICAgICAgaW5zdHJ1bWVudGF0aW9uSG9va3Mub25Sb3V0ZXJUcmFuc2l0aW9uU3RhcnRcbiAgICAgICAgOiBudWxsLFxuICB9XG5cbiAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgLy8gVGhlIGFjdGlvbiBxdWV1ZSBpcyBsYXppbHkgY3JlYXRlZCBvbiBoeWRyYXRpb24sIGJ1dCBhZnRlciB0aGF0IHBvaW50XG4gICAgLy8gaXQgZG9lc24ndCBjaGFuZ2UuIFNvIHdlIGNhbiBzdG9yZSBpdCBpbiBhIGdsb2JhbCByYXRoZXIgdGhhbiBwYXNzXG4gICAgLy8gaXQgYXJvdW5kIGV2ZXJ5d2hlcmUgdmlhIHByb3BzL2NvbnRleHQuXG4gICAgaWYgKGdsb2JhbEFjdGlvblF1ZXVlICE9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdJbnRlcm5hbCBOZXh0LmpzIEVycm9yOiBjcmVhdGVNdXRhYmxlQWN0aW9uUXVldWUgd2FzIGNhbGxlZCBtb3JlICcgK1xuICAgICAgICAgICd0aGFuIG9uY2UnXG4gICAgICApXG4gICAgfVxuICAgIGdsb2JhbEFjdGlvblF1ZXVlID0gYWN0aW9uUXVldWVcbiAgfVxuXG4gIHJldHVybiBhY3Rpb25RdWV1ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3VycmVudEFwcFJvdXRlclN0YXRlKCk6IEFwcFJvdXRlclN0YXRlIHwgbnVsbCB7XG4gIHJldHVybiBnbG9iYWxBY3Rpb25RdWV1ZSAhPT0gbnVsbCA/IGdsb2JhbEFjdGlvblF1ZXVlLnN0YXRlIDogbnVsbFxufVxuXG5mdW5jdGlvbiBnZXRBcHBSb3V0ZXJBY3Rpb25RdWV1ZSgpOiBBcHBSb3V0ZXJBY3Rpb25RdWV1ZSB7XG4gIGlmIChnbG9iYWxBY3Rpb25RdWV1ZSA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdJbnRlcm5hbCBOZXh0LmpzIGVycm9yOiBSb3V0ZXIgYWN0aW9uIGRpc3BhdGNoZWQgYmVmb3JlIGluaXRpYWxpemF0aW9uLidcbiAgICApXG4gIH1cbiAgcmV0dXJuIGdsb2JhbEFjdGlvblF1ZXVlXG59XG5cbmZ1bmN0aW9uIGdldFByb2ZpbGluZ0hvb2tGb3JPbk5hdmlnYXRpb25TdGFydCgpIHtcbiAgaWYgKGdsb2JhbEFjdGlvblF1ZXVlICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIGdsb2JhbEFjdGlvblF1ZXVlLm9uUm91dGVyVHJhbnNpdGlvblN0YXJ0XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BhdGNoTmF2aWdhdGVBY3Rpb24oXG4gIGhyZWY6IHN0cmluZyxcbiAgbmF2aWdhdGVUeXBlOiBOYXZpZ2F0ZUFjdGlvblsnbmF2aWdhdGVUeXBlJ10sXG4gIHNjcm9sbEJlaGF2aW9yOiBTY3JvbGxCZWhhdmlvcixcbiAgbGlua0luc3RhbmNlUmVmOiBMaW5rSW5zdGFuY2UgfCBudWxsLFxuICB0cmFuc2l0aW9uVHlwZXM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkXG4pOiB2b2lkIHtcbiAgLy8gVE9ETzogVGhpcyBzdHVmZiBjb3VsZCBqdXN0IGdvIGludG8gdGhlIHJlZHVjZXIuIExlYXZpbmcgYXMtaXMgZm9yIG5vd1xuICAvLyBzaW5jZSB3ZSdyZSBhYm91dCB0byByZXdyaXRlIGFsbCB0aGUgcm91dGVyIHJlZHVjZXIgc3R1ZmYgYW55d2F5LlxuXG4gIGlmICh0cmFuc2l0aW9uVHlwZXMpIHtcbiAgICBmb3IgKGNvbnN0IHR5cGUgb2YgdHJhbnNpdGlvblR5cGVzKSB7XG4gICAgICBhZGRUcmFuc2l0aW9uVHlwZSh0eXBlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoYWRkQmFzZVBhdGgoaHJlZiksIGxvY2F0aW9uLmhyZWYpXG4gIGlmIChwcm9jZXNzLmVudi5fX05FWFRfQVBQX05BVl9GQUlMX0hBTkRMSU5HKSB7XG4gICAgd2luZG93Lm5leHQuX19wZW5kaW5nVXJsID0gdXJsXG4gIH1cblxuICBzZXRMaW5rRm9yQ3VycmVudE5hdmlnYXRpb24obGlua0luc3RhbmNlUmVmKVxuXG4gIGNvbnN0IG9uUm91dGVyVHJhbnNpdGlvblN0YXJ0ID0gZ2V0UHJvZmlsaW5nSG9va0Zvck9uTmF2aWdhdGlvblN0YXJ0KClcbiAgaWYgKG9uUm91dGVyVHJhbnNpdGlvblN0YXJ0ICE9PSBudWxsKSB7XG4gICAgb25Sb3V0ZXJUcmFuc2l0aW9uU3RhcnQoaHJlZiwgbmF2aWdhdGVUeXBlKVxuICB9XG5cbiAgZGlzcGF0Y2hBcHBSb3V0ZXJBY3Rpb24oe1xuICAgIHR5cGU6IEFDVElPTl9OQVZJR0FURSxcbiAgICB1cmwsXG4gICAgaXNFeHRlcm5hbFVybDogaXNFeHRlcm5hbFVSTCh1cmwpLFxuICAgIGxvY2F0aW9uU2VhcmNoOiBsb2NhdGlvbi5zZWFyY2gsXG4gICAgc2Nyb2xsQmVoYXZpb3IsXG4gICAgbmF2aWdhdGVUeXBlLFxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGF0Y2hUcmF2ZXJzZUFjdGlvbihcbiAgaHJlZjogc3RyaW5nLFxuICBoaXN0b3J5U3RhdGU6IEFwcEhpc3RvcnlTdGF0ZSB8IHVuZGVmaW5lZFxuKSB7XG4gIGNvbnN0IG9uUm91dGVyVHJhbnNpdGlvblN0YXJ0ID0gZ2V0UHJvZmlsaW5nSG9va0Zvck9uTmF2aWdhdGlvblN0YXJ0KClcbiAgaWYgKG9uUm91dGVyVHJhbnNpdGlvblN0YXJ0ICE9PSBudWxsKSB7XG4gICAgb25Sb3V0ZXJUcmFuc2l0aW9uU3RhcnQoaHJlZiwgJ3RyYXZlcnNlJylcbiAgfVxuICBkaXNwYXRjaEFwcFJvdXRlckFjdGlvbih7XG4gICAgdHlwZTogQUNUSU9OX1JFU1RPUkUsXG4gICAgdXJsOiBuZXcgVVJMKGhyZWYpLFxuICAgIGhpc3RvcnlTdGF0ZSxcbiAgfSlcbn1cblxuLyoqXG4gKiAoRXhwZXJpbWVudGFsKSBQZXJmb3JtIGEgZ2VzdHVyZSBuYXZpZ2F0aW9uLiBUaGlzIGRpc3BhdGNoZXMgdGhyb3VnaCBSZWFjdCdzXG4gKiB1c2VPcHRpbWlzdGljIGluc3RlYWQgb2YgdGhlIG1haW4gYWN0aW9uIHF1ZXVlLCBhbGxvd2luZyB0aGUgc3RhdGUgdG8gYmVcbiAqIHNob3duIGR1cmluZyBhIGdlc3R1cmUgdHJhbnNpdGlvbiBhbmQgZGlzY2FyZGVkIHdoZW4gdGhlIGNhbm9uaWNhbCBuYXZpZ2F0aW9uXG4gKiBjb21wbGV0ZXMuXG4gKlxuICogT25seSBhdmFpbGFibGUgd2hlbiBleHBlcmltZW50YWwuZ2VzdHVyZVRyYW5zaXRpb24gaXMgZW5hYmxlZC5cbiAqL1xuZnVuY3Rpb24gZ2VzdHVyZVB1c2goaHJlZjogc3RyaW5nLCBvcHRpb25zPzogTmF2aWdhdGVPcHRpb25zKTogdm9pZCB7XG4gIGlmIChwcm9jZXNzLmVudi5fX05FWFRfR0VTVFVSRV9UUkFOU0lUSU9OKSB7XG4gICAgLy8gVE9ETzogVHJpZ2dlciBhIHByZWZldGNoIHNvIHRoZSBjYWNoZSBzdGFydHMgcG9wdWxhdGluZyBpZiB0aGVyZSBpc24ndFxuICAgIC8vIGFscmVhZHkgYSBwcmVmZXRjaCBmb3IgdGhpcyByb3V0ZS5cbiAgICBpZiAoaXNKYXZhU2NyaXB0VVJMU3RyaW5nKGhyZWYpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdOZXh0LmpzIGhhcyBibG9ja2VkIGEgamF2YXNjcmlwdDogVVJMIGFzIGEgc2VjdXJpdHkgcHJlY2F1dGlvbi4nXG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdGUgPSBnZXRDdXJyZW50QXBwUm91dGVyU3RhdGUoKVxuICAgIGlmIChzdGF0ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwoYWRkQmFzZVBhdGgoaHJlZiksIGxvY2F0aW9uLmhyZWYpXG4gICAgaWYgKGlzRXh0ZXJuYWxVUkwodXJsKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gRm9yayB0aGUgcm91dGVyIHN0YXRlIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGdlc3R1cmUgdHJhbnNpdGlvbi5cbiAgICBjb25zdCBjdXJyZW50VXJsID0gbmV3IFVSTChzdGF0ZS5jYW5vbmljYWxVcmwsIGxvY2F0aW9uLmhyZWYpXG4gICAgY29uc3Qgc2Nyb2xsQmVoYXZpb3IgPVxuICAgICAgb3B0aW9ucz8uc2Nyb2xsID09PSBmYWxzZVxuICAgICAgICA/IFNjcm9sbEJlaGF2aW9yLk5vU2Nyb2xsXG4gICAgICAgIDogU2Nyb2xsQmVoYXZpb3IuRGVmYXVsdFxuICAgIC8vIFRoaXMgaXMgYSBzcGVjaWFsIGZyZXNobmVzcyBwb2xpY3kgdGhhdCBwcmV2ZW50cyBkeW5hbWljIHJlcXVlc3RzIGZyb21cbiAgICAvLyBiZWluZyBzcGF3bmVkLiBEdXJpbmcgdGhlIGdlc3R1cmUsIHdlIHNob3VsZCBvbmx5IHNob3cgdGhlIGNhY2hlZFxuICAgIC8vIHByZWZldGNoZWQgVUksIG5vdCBkeW5hbWljIGRhdGEuXG4gICAgLy8gVE9ETzogSW4gdGhlIGNhc2Ugb2YgbmF2aWdhdGlvbnMgdG8gYW4gdW5rbm93biByb3V0ZSwgdGhpcyB3aWxsIHN0aWxsXG4gICAgLy8gZW5kIHVwIHBlcmZvcm1pbmcgYSBkeW5hbWljIHJlcXVlc3QuIFRoZSBwbGFuIGlzIHRvIGRvIHByZWZldGNoIGluc3RlYWQuXG4gICAgLy8gVGhlcmUncyBhIHNlcGFyYXRlIFRPRE8gZm9yIHRoaXMuXG4gICAgY29uc3QgZnJlc2huZXNzUG9saWN5ID0gRnJlc2huZXNzUG9saWN5Lkdlc3R1cmVcbiAgICBjb25zdCBmb3JrZWRHZXN0dXJlU3RhdGUgPSBuYXZpZ2F0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgdXJsLFxuICAgICAgY3VycmVudFVybCxcbiAgICAgIHN0YXRlLnJlbmRlcmVkU2VhcmNoLFxuICAgICAgc3RhdGUuY2FjaGUsXG4gICAgICBzdGF0ZS50cmVlLFxuICAgICAgc3RhdGUubmV4dFVybCxcbiAgICAgIGZyZXNobmVzc1BvbGljeSxcbiAgICAgIHNjcm9sbEJlaGF2aW9yLFxuICAgICAgJ3B1c2gnXG4gICAgKVxuICAgIGRpc3BhdGNoR2VzdHVyZVN0YXRlKGZvcmtlZEdlc3R1cmVTdGF0ZSlcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBhcHAgcm91dGVyIHRoYXQgaXMgZXhwb3NlZCB0aHJvdWdoIGB1c2VSb3V0ZXJgLiBUaGVzZSBhcmUgcHVibGljIEFQSVxuICogbWV0aG9kcy4gSW50ZXJuYWwgTmV4dC5qcyBjb2RlIHNob3VsZCBjYWxsIHRoZSBsb3dlciBsZXZlbCBtZXRob2RzIGRpcmVjdGx5XG4gKiAoYWx0aG91Z2ggdGhlcmUncyBsb3RzIG9mIGV4aXN0aW5nIGNvZGUgdGhhdCBkb2Vzbid0IGRvIHRoYXQpLlxuICovXG5leHBvcnQgY29uc3QgcHVibGljQXBwUm91dGVySW5zdGFuY2U6IEFwcFJvdXRlckluc3RhbmNlID0ge1xuICBiYWNrOiAoKSA9PiB3aW5kb3cuaGlzdG9yeS5iYWNrKCksXG4gIGZvcndhcmQ6ICgpID0+IHdpbmRvdy5oaXN0b3J5LmZvcndhcmQoKSxcbiAgcHJlZmV0Y2g6XG4gICAgLy8gVW5saWtlIHRoZSBvbGQgaW1wbGVtZW50YXRpb24sIHRoZSBTZWdtZW50IENhY2hlIGRvZXNuJ3Qgc3RvcmUgaXRzXG4gICAgLy8gZGF0YSBpbiB0aGUgcm91dGVyIHJlZHVjZXIgc3RhdGU7IGl0IHdyaXRlcyBpbnRvIGEgZ2xvYmFsIG11dGFibGVcbiAgICAvLyBjYWNoZS4gU28gd2UgZG9uJ3QgbmVlZCB0byBkaXNwYXRjaCBhbiBhY3Rpb24uXG4gICAgKGhyZWY6IHN0cmluZywgb3B0aW9ucz86IFByZWZldGNoT3B0aW9ucykgPT4ge1xuICAgICAgaWYgKGlzSmF2YVNjcmlwdFVSTFN0cmluZyhocmVmKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ05leHQuanMgaGFzIGJsb2NrZWQgYSBqYXZhc2NyaXB0OiBVUkwgYXMgYSBzZWN1cml0eSBwcmVjYXV0aW9uLidcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgY29uc3QgYWN0aW9uUXVldWUgPSBnZXRBcHBSb3V0ZXJBY3Rpb25RdWV1ZSgpXG4gICAgICBjb25zdCBwcmVmZXRjaEtpbmQgPSBvcHRpb25zPy5raW5kID8/IFByZWZldGNoS2luZC5BVVRPXG5cbiAgICAgIC8vIFdlIGRvbid0IGN1cnJlbnRseSBvZmZlciBhIHdheSB0byBpc3N1ZSBhIHJ1bnRpbWUgcHJlZmV0Y2ggdmlhIGByb3V0ZXIucHJlZmV0Y2goKWAuXG4gICAgICAvLyBUaGlzIHdpbGwgYmUgcG9zc2libGUgd2hlbiB3ZSB1cGRhdGUgaXRzIEFQSSB0byBub3QgdGFrZSBhIFByZWZldGNoS2luZC5cbiAgICAgIGxldCBmZXRjaFN0cmF0ZWd5OiBQcmVmZXRjaFRhc2tGZXRjaFN0cmF0ZWd5XG4gICAgICBzd2l0Y2ggKHByZWZldGNoS2luZCkge1xuICAgICAgICBjYXNlIFByZWZldGNoS2luZC5BVVRPOiB7XG4gICAgICAgICAgLy8gV2UgZGVmYXVsdCB0byBQUFIuIFdlJ2xsIGRpc2NvdmVyIHdoZXRoZXIgb3Igbm90IHRoZSByb3V0ZSBzdXBwb3J0cyBpdCB3aXRoIHRoZSBpbml0aWFsIHByZWZldGNoLlxuICAgICAgICAgIGZldGNoU3RyYXRlZ3kgPSBGZXRjaFN0cmF0ZWd5LlBQUlxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBQcmVmZXRjaEtpbmQuRlVMTDoge1xuICAgICAgICAgIGZldGNoU3RyYXRlZ3kgPSBGZXRjaFN0cmF0ZWd5LkZ1bGxcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICBwcmVmZXRjaEtpbmQgc2F0aXNmaWVzIG5ldmVyXG4gICAgICAgICAgLy8gRGVzcGl0ZSB0eXBlc2NyaXB0IHRoaW5raW5nIHRoYXQgdGhpcyBjYW4ndCBoYXBwZW4sXG4gICAgICAgICAgLy8gd2UgbWlnaHQgZ2V0IGFuIHVuZXhwZWN0ZWQgdmFsdWUgZnJvbSB1c2VyIGNvZGUuXG4gICAgICAgICAgLy8gV2UgZG9uJ3Qga25vdyB3aGF0IHRoZXkgd2FudCwgYnV0IHdlIGtub3cgdGhleSB3YW50IGEgcHJlZmV0Y2gsXG4gICAgICAgICAgLy8gc28gdXNlIHRoZSBkZWZhdWx0LlxuICAgICAgICAgIGZldGNoU3RyYXRlZ3kgPSBGZXRjaFN0cmF0ZWd5LlBQUlxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHByZWZldGNoV2l0aFNlZ21lbnRDYWNoZShcbiAgICAgICAgaHJlZixcbiAgICAgICAgYWN0aW9uUXVldWUuc3RhdGUubmV4dFVybCxcbiAgICAgICAgYWN0aW9uUXVldWUuc3RhdGUudHJlZSxcbiAgICAgICAgZmV0Y2hTdHJhdGVneSxcbiAgICAgICAgb3B0aW9ucz8ub25JbnZhbGlkYXRlID8/IG51bGxcbiAgICAgIClcbiAgICB9LFxuICByZXBsYWNlOiAoaHJlZjogc3RyaW5nLCBvcHRpb25zPzogTmF2aWdhdGVPcHRpb25zKSA9PiB7XG4gICAgaWYgKGlzSmF2YVNjcmlwdFVSTFN0cmluZyhocmVmKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnTmV4dC5qcyBoYXMgYmxvY2tlZCBhIGphdmFzY3JpcHQ6IFVSTCBhcyBhIHNlY3VyaXR5IHByZWNhdXRpb24uJ1xuICAgICAgKVxuICAgIH1cbiAgICBzdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgZGlzcGF0Y2hOYXZpZ2F0ZUFjdGlvbihcbiAgICAgICAgaHJlZixcbiAgICAgICAgJ3JlcGxhY2UnLFxuICAgICAgICBvcHRpb25zPy5zY3JvbGwgPT09IGZhbHNlXG4gICAgICAgICAgPyBTY3JvbGxCZWhhdmlvci5Ob1Njcm9sbFxuICAgICAgICAgIDogU2Nyb2xsQmVoYXZpb3IuRGVmYXVsdCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgb3B0aW9ucz8udHJhbnNpdGlvblR5cGVzXG4gICAgICApXG4gICAgfSlcbiAgfSxcbiAgcHVzaDogKGhyZWY6IHN0cmluZywgb3B0aW9ucz86IE5hdmlnYXRlT3B0aW9ucykgPT4ge1xuICAgIGlmIChpc0phdmFTY3JpcHRVUkxTdHJpbmcoaHJlZikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ05leHQuanMgaGFzIGJsb2NrZWQgYSBqYXZhc2NyaXB0OiBVUkwgYXMgYSBzZWN1cml0eSBwcmVjYXV0aW9uLidcbiAgICAgIClcbiAgICB9XG4gICAgc3RhcnRUcmFuc2l0aW9uKCgpID0+IHtcbiAgICAgIGRpc3BhdGNoTmF2aWdhdGVBY3Rpb24oXG4gICAgICAgIGhyZWYsXG4gICAgICAgICdwdXNoJyxcbiAgICAgICAgb3B0aW9ucz8uc2Nyb2xsID09PSBmYWxzZVxuICAgICAgICAgID8gU2Nyb2xsQmVoYXZpb3IuTm9TY3JvbGxcbiAgICAgICAgICA6IFNjcm9sbEJlaGF2aW9yLkRlZmF1bHQsXG4gICAgICAgIG51bGwsXG4gICAgICAgIG9wdGlvbnM/LnRyYW5zaXRpb25UeXBlc1xuICAgICAgKVxuICAgIH0pXG4gIH0sXG4gIHJlZnJlc2g6ICgpID0+IHtcbiAgICBzdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgZGlzcGF0Y2hBcHBSb3V0ZXJBY3Rpb24oe1xuICAgICAgICB0eXBlOiBBQ1RJT05fUkVGUkVTSCxcbiAgICAgIH0pXG4gICAgfSlcbiAgfSxcbiAgaG1yUmVmcmVzaDogKCkgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnaG1yUmVmcmVzaCBjYW4gb25seSBiZSB1c2VkIGluIGRldmVsb3BtZW50IG1vZGUuIFBsZWFzZSB1c2UgcmVmcmVzaCBpbnN0ZWFkLidcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVzZXQgdGhlIGtub3duIHJvdXRlcyB0YWJsZSBzbyB0aGF0IHJvdXRlIHByZWRpY3Rpb25zIGFyZSBjbGVhcmVkXG4gICAgICAvLyB3aGVuIHJvdXRlcyBjaGFuZ2UgZHVyaW5nIGRldmVsb3BtZW50LlxuICAgICAgcmVzZXRLbm93blJvdXRlcygpXG4gICAgICBzdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaEFwcFJvdXRlckFjdGlvbih7XG4gICAgICAgICAgdHlwZTogQUNUSU9OX0hNUl9SRUZSRVNILFxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9XG4gIH0sXG59XG5cbi8vIENvbmRpdGlvbmFsbHkgYWRkIGV4cGVyaW1lbnRhbF9nZXN0dXJlUHVzaCB3aGVuIGdlc3R1cmVUcmFuc2l0aW9uIGlzIGVuYWJsZWRcbmlmIChwcm9jZXNzLmVudi5fX05FWFRfR0VTVFVSRV9UUkFOU0lUSU9OKSB7XG4gIDsocHVibGljQXBwUm91dGVySW5zdGFuY2UgYXMgYW55KS5leHBlcmltZW50YWxfZ2VzdHVyZVB1c2ggPSBnZXN0dXJlUHVzaFxufVxuXG4vLyBFeGlzdHMgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4gRG9uJ3QgdXNlIGluIGFwcGxpY2F0aW9uIGNvZGUuXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lm5leHQpIHtcbiAgd2luZG93Lm5leHQucm91dGVyID0gcHVibGljQXBwUm91dGVySW5zdGFuY2Vcbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVNdXRhYmxlQWN0aW9uUXVldWUiLCJkaXNwYXRjaE5hdmlnYXRlQWN0aW9uIiwiZGlzcGF0Y2hUcmF2ZXJzZUFjdGlvbiIsImdldEN1cnJlbnRBcHBSb3V0ZXJTdGF0ZSIsInB1YmxpY0FwcFJvdXRlckluc3RhbmNlIiwicnVuUmVtYWluaW5nQWN0aW9ucyIsImFjdGlvblF1ZXVlIiwic2V0U3RhdGUiLCJwZW5kaW5nIiwibmV4dCIsInJ1bkFjdGlvbiIsImFjdGlvbiIsIm5lZWRzUmVmcmVzaCIsImRpc3BhdGNoIiwidHlwZSIsIkFDVElPTl9SRUZSRVNIIiwicHJldlN0YXRlIiwic3RhdGUiLCJwYXlsb2FkIiwiYWN0aW9uUmVzdWx0IiwiaGFuZGxlUmVzdWx0IiwibmV4dFN0YXRlIiwiZGlzY2FyZGVkIiwiQUNUSU9OX1NFUlZFUl9BQ1RJT04iLCJkaWRSZXZhbGlkYXRlIiwicmVzb2x2ZSIsImlzVGhlbmFibGUiLCJ0aGVuIiwiZXJyIiwicmVqZWN0IiwiZGlzcGF0Y2hBY3Rpb24iLCJyZXNvbHZlcnMiLCJBQ1RJT05fUkVTVE9SRSIsImRlZmVycmVkUHJvbWlzZSIsIlByb21pc2UiLCJzdGFydFRyYW5zaXRpb24iLCJuZXdBY3Rpb24iLCJsYXN0IiwiQUNUSU9OX05BVklHQVRFIiwiZ2xvYmFsQWN0aW9uUXVldWUiLCJpbml0aWFsU3RhdGUiLCJpbnN0cnVtZW50YXRpb25Ib29rcyIsInJlc3VsdCIsInJlZHVjZXIiLCJvblJvdXRlclRyYW5zaXRpb25TdGFydCIsIndpbmRvdyIsIkVycm9yIiwiZ2V0QXBwUm91dGVyQWN0aW9uUXVldWUiLCJnZXRQcm9maWxpbmdIb29rRm9yT25OYXZpZ2F0aW9uU3RhcnQiLCJocmVmIiwibmF2aWdhdGVUeXBlIiwic2Nyb2xsQmVoYXZpb3IiLCJsaW5rSW5zdGFuY2VSZWYiLCJ0cmFuc2l0aW9uVHlwZXMiLCJhZGRUcmFuc2l0aW9uVHlwZSIsInVybCIsIlVSTCIsImFkZEJhc2VQYXRoIiwibG9jYXRpb24iLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX0FQUF9OQVZfRkFJTF9IQU5ETElORyIsIl9fcGVuZGluZ1VybCIsInNldExpbmtGb3JDdXJyZW50TmF2aWdhdGlvbiIsImRpc3BhdGNoQXBwUm91dGVyQWN0aW9uIiwiaXNFeHRlcm5hbFVybCIsImlzRXh0ZXJuYWxVUkwiLCJsb2NhdGlvblNlYXJjaCIsInNlYXJjaCIsImhpc3RvcnlTdGF0ZSIsImdlc3R1cmVQdXNoIiwib3B0aW9ucyIsIl9fTkVYVF9HRVNUVVJFX1RSQU5TSVRJT04iLCJpc0phdmFTY3JpcHRVUkxTdHJpbmciLCJjdXJyZW50VXJsIiwiY2Fub25pY2FsVXJsIiwic2Nyb2xsIiwiU2Nyb2xsQmVoYXZpb3IiLCJOb1Njcm9sbCIsIkRlZmF1bHQiLCJmcmVzaG5lc3NQb2xpY3kiLCJGcmVzaG5lc3NQb2xpY3kiLCJHZXN0dXJlIiwiZm9ya2VkR2VzdHVyZVN0YXRlIiwibmF2aWdhdGUiLCJyZW5kZXJlZFNlYXJjaCIsImNhY2hlIiwidHJlZSIsIm5leHRVcmwiLCJkaXNwYXRjaEdlc3R1cmVTdGF0ZSIsImJhY2siLCJoaXN0b3J5IiwiZm9yd2FyZCIsInByZWZldGNoIiwicHJlZmV0Y2hLaW5kIiwia2luZCIsIlByZWZldGNoS2luZCIsIkFVVE8iLCJmZXRjaFN0cmF0ZWd5IiwiRmV0Y2hTdHJhdGVneSIsIlBQUiIsIkZVTEwiLCJGdWxsIiwicHJlZmV0Y2hXaXRoU2VnbWVudENhY2hlIiwib25JbnZhbGlkYXRlIiwicmVwbGFjZSIsInB1c2giLCJyZWZyZXNoIiwiaG1yUmVmcmVzaCIsIk5PREVfRU5WIiwicmVzZXRLbm93blJvdXRlcyIsIkFDVElPTl9ITVJfUkVGUkVTSCIsImV4cGVyaW1lbnRhbF9nZXN0dXJlUHVzaCIsInJvdXRlciJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/app-router-instance.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/app-router-utils.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/app-router-utils.js ***!
|
||
\**********************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createPrefetchURL: function() {\n return createPrefetchURL;\n },\n isExternalURL: function() {\n return isExternalURL;\n }\n});\nconst _isbot = __webpack_require__(/*! ../../shared/lib/router/utils/is-bot */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/is-bot.js\");\nconst _addbasepath = __webpack_require__(/*! ../add-base-path */ \"(ssr)/./node_modules/next/dist/client/add-base-path.js\");\nfunction isExternalURL(url) {\n return url.origin !== window.location.origin;\n}\nfunction createPrefetchURL(href) {\n // Don't prefetch for bots as they don't navigate.\n if ((0, _isbot.isBot)(window.navigator.userAgent)) {\n return null;\n }\n let url;\n try {\n url = new URL((0, _addbasepath.addBasePath)(href), window.location.href);\n } catch (_) {\n // TODO: Does this need to throw or can we just console.error instead? Does\n // anyone rely on this throwing? (Seems unlikely.)\n throw Object.defineProperty(new Error(`Cannot prefetch '${href}' because it cannot be converted to a URL.`), \"__NEXT_ERROR_CODE\", {\n value: \"E234\",\n enumerable: false,\n configurable: true\n });\n }\n // Don't prefetch during development (improves compilation performance)\n if (true) {\n return null;\n }\n // External urls can't be prefetched in the same way.\n if (isExternalURL(url)) {\n return null;\n }\n return url;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=app-router-utils.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2FwcC1yb3V0ZXItdXRpbHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBY2dCQSxpQkFBaUI7ZUFBakJBOztJQVhBQyxhQUFhO2VBQWJBOzs7bUNBSE07eUNBQ007QUFFckIsU0FBU0EsY0FBY0MsR0FBUTtJQUNwQyxPQUFPQSxJQUFJQyxNQUFNLEtBQUtDLE9BQU9DLFFBQVEsQ0FBQ0YsTUFBTTtBQUM5QztBQVNPLFNBQVNILGtCQUFrQk0sSUFBWTtJQUM1QyxrREFBa0Q7SUFDbEQsSUFBSUMsQ0FBQUEsR0FBQUEsT0FBQUEsS0FBSyxFQUFDSCxPQUFPSSxTQUFTLENBQUNDLFNBQVMsR0FBRztRQUNyQyxPQUFPO0lBQ1Q7SUFFQSxJQUFJUDtJQUNKLElBQUk7UUFDRkEsTUFBTSxJQUFJUSxJQUFJQyxDQUFBQSxHQUFBQSxhQUFBQSxXQUFBQSxFQUFZTCxPQUFPRixPQUFPQyxRQUFRLENBQUNDLElBQUk7SUFDdkQsRUFBRSxPQUFPTSxHQUFHO1FBQ1YsMkVBQTJFO1FBQzNFLGtEQUFrRDtRQUNsRCxNQUFNLHFCQUVMLENBRkssSUFBSUMsTUFDUixDQUFDLGlCQUFpQixFQUFFUCxLQUFLLDBDQUEwQyxDQUFDLEdBRGhFO21CQUFBO3dCQUFBOzBCQUFBO1FBRU47SUFDRjtJQUVBLHVFQUF1RTtJQUN2RSxJQUFJUSxJQUFvQixFQUFvQjtRQUMxQyxPQUFPO0lBQ1Q7SUFFQSxxREFBcUQ7SUFDckQsSUFBSWIsY0FBY0MsTUFBTTtRQUN0QixPQUFPO0lBQ1Q7SUFFQSxPQUFPQTtBQUNUIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL2NsaWVudC9jb21wb25lbnRzL2FwcC1yb3V0ZXItdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNCb3QgfSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9pcy1ib3QnXG5pbXBvcnQgeyBhZGRCYXNlUGF0aCB9IGZyb20gJy4uL2FkZC1iYXNlLXBhdGgnXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0V4dGVybmFsVVJMKHVybDogVVJMKSB7XG4gIHJldHVybiB1cmwub3JpZ2luICE9PSB3aW5kb3cubG9jYXRpb24ub3JpZ2luXG59XG5cbi8qKlxuICogR2l2ZW4gYSBsaW5rIGhyZWYsIGNvbnN0cnVjdHMgdGhlIFVSTCB0aGF0IHNob3VsZCBiZSBwcmVmZXRjaGVkLiBSZXR1cm5zIG51bGxcbiAqIGluIGNhc2VzIHdoZXJlIHByZWZldGNoaW5nIHNob3VsZCBiZSBkaXNhYmxlZCwgbGlrZSBleHRlcm5hbCBVUkxzLCBvclxuICogZHVyaW5nIGRldmVsb3BtZW50LlxuICogQHBhcmFtIGhyZWYgVGhlIGhyZWYgcGFzc2VkIHRvIDxMaW5rPiwgcm91dGVyLnByZWZldGNoKCksIG9yIHNpbWlsYXJcbiAqIEByZXR1cm5zIEEgVVJMIG9iamVjdCB0byBwcmVmZXRjaCwgb3IgbnVsbCBpZiBwcmVmZXRjaGluZyBzaG91bGQgYmUgZGlzYWJsZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVByZWZldGNoVVJMKGhyZWY6IHN0cmluZyk6IFVSTCB8IG51bGwge1xuICAvLyBEb24ndCBwcmVmZXRjaCBmb3IgYm90cyBhcyB0aGV5IGRvbid0IG5hdmlnYXRlLlxuICBpZiAoaXNCb3Qod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGxldCB1cmw6IFVSTFxuICB0cnkge1xuICAgIHVybCA9IG5ldyBVUkwoYWRkQmFzZVBhdGgoaHJlZiksIHdpbmRvdy5sb2NhdGlvbi5ocmVmKVxuICB9IGNhdGNoIChfKSB7XG4gICAgLy8gVE9ETzogRG9lcyB0aGlzIG5lZWQgdG8gdGhyb3cgb3IgY2FuIHdlIGp1c3QgY29uc29sZS5lcnJvciBpbnN0ZWFkPyBEb2VzXG4gICAgLy8gYW55b25lIHJlbHkgb24gdGhpcyB0aHJvd2luZz8gKFNlZW1zIHVubGlrZWx5LilcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQ2Fubm90IHByZWZldGNoICcke2hyZWZ9JyBiZWNhdXNlIGl0IGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBVUkwuYFxuICAgIClcbiAgfVxuXG4gIC8vIERvbid0IHByZWZldGNoIGR1cmluZyBkZXZlbG9wbWVudCAoaW1wcm92ZXMgY29tcGlsYXRpb24gcGVyZm9ybWFuY2UpXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvLyBFeHRlcm5hbCB1cmxzIGNhbid0IGJlIHByZWZldGNoZWQgaW4gdGhlIHNhbWUgd2F5LlxuICBpZiAoaXNFeHRlcm5hbFVSTCh1cmwpKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiB1cmxcbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVQcmVmZXRjaFVSTCIsImlzRXh0ZXJuYWxVUkwiLCJ1cmwiLCJvcmlnaW4iLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJpc0JvdCIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsIlVSTCIsImFkZEJhc2VQYXRoIiwiXyIsIkVycm9yIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/app-router-utils.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/bfcache-state-manager.js":
|
||
/*!***************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/bfcache-state-manager.js ***!
|
||
\***************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"useRouterBFCache\", ({\n enumerable: true,\n get: function() {\n return useRouterBFCache;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n// When the flag is disabled, only track the currently active tree\nconst MAX_BF_CACHE_ENTRIES = false ? 0 : 1;\nfunction useRouterBFCache(activeTree, activeCacheNode, activeStateKey) {\n // The currently active entry. The entries form a linked list, sorted in\n // order of most recently active. This allows us to reuse parts of the list\n // without cloning, unless there's a reordering or removal.\n // TODO: Once we start tracking back/forward history at each route level,\n // we should use the history order instead. In other words, when traversing\n // to an existing entry as a result of a popstate event, we should maintain\n // the existing order instead of moving it to the front of the list. I think\n // an initial implementation of this could be to pass an incrementing id\n // to history.pushState/replaceState, then use that here for ordering.\n const [prevActiveEntry, setPrevActiveEntry] = (0, _react.useState)(()=>{\n const initialEntry = {\n tree: activeTree,\n cacheNode: activeCacheNode,\n stateKey: activeStateKey,\n next: null\n };\n return initialEntry;\n });\n if (prevActiveEntry.tree === activeTree) {\n // Fast path. The active tree hasn't changed, so we can reuse the\n // existing state.\n return prevActiveEntry;\n }\n // The route tree changed. Note that this doesn't mean that the tree changed\n // *at this level* — the change may be due to a child route. Either way, we\n // need to either add or update the router tree in the bfcache.\n //\n // The rest of the code looks more complicated than it actually is because we\n // can't mutate the state in place; we have to copy-on-write.\n // Create a new entry for the active cache key. This is the head of the new\n // linked list.\n const newActiveEntry = {\n tree: activeTree,\n cacheNode: activeCacheNode,\n stateKey: activeStateKey,\n next: null\n };\n // We need to append the old list onto the new list. If the head of the new\n // list was already present in the cache, then we'll need to clone everything\n // that came before it. Then we can reuse the rest.\n let n = 1;\n let oldEntry = prevActiveEntry;\n let clonedEntry = newActiveEntry;\n while(oldEntry !== null && n < MAX_BF_CACHE_ENTRIES){\n if (oldEntry.stateKey === activeStateKey) {\n // Fast path. This entry in the old list that corresponds to the key that\n // is now active. We've already placed a clone of this entry at the front\n // of the new list. We can reuse the rest of the old list without cloning.\n // NOTE: We don't need to worry about eviction in this case because we\n // haven't increased the size of the cache, and we assume the max size\n // is constant across renders. If we were to change it to a dynamic limit,\n // then the implementation would need to account for that.\n clonedEntry.next = oldEntry.next;\n break;\n } else {\n // Clone the entry and append it to the list.\n n++;\n const entry = {\n tree: oldEntry.tree,\n cacheNode: oldEntry.cacheNode,\n stateKey: oldEntry.stateKey,\n next: null\n };\n clonedEntry.next = entry;\n clonedEntry = entry;\n }\n oldEntry = oldEntry.next;\n }\n setPrevActiveEntry(newActiveEntry);\n return newActiveEntry;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=bfcache-state-manager.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2JmY2FjaGUtc3RhdGUtbWFuYWdlci5qcyIsIm1hcHBpbmdzIjoiOzs7O29EQXFDZ0JBOzs7ZUFBQUE7OzttQ0FqQ1M7QUFFekIsa0VBQWtFO0FBQ2xFLE1BQU1DLHVCQUF1QkMsTUFBbUMsR0FBRyxDQUFDLEdBQUc7QUE4QmhFLFNBQVNGLGlCQUNkSyxVQUE2QixFQUM3QkMsZUFBMEIsRUFDMUJDLGNBQXNCO0lBRXRCLHdFQUF3RTtJQUN4RSwyRUFBMkU7SUFDM0UsMkRBQTJEO0lBQzNELHlFQUF5RTtJQUN6RSwyRUFBMkU7SUFDM0UsMkVBQTJFO0lBQzNFLDRFQUE0RTtJQUM1RSx3RUFBd0U7SUFDeEUsc0VBQXNFO0lBQ3RFLE1BQU0sQ0FBQ0MsaUJBQWlCQyxtQkFBbUIsR0FBR0MsQ0FBQUEsR0FBQUEsT0FBQUEsUUFBQUEsRUFDNUM7UUFDRSxNQUFNQyxlQUFtQztZQUN2Q0MsTUFBTVA7WUFDTlEsV0FBV1A7WUFDWFEsVUFBVVA7WUFDVlEsTUFBTTtRQUNSO1FBQ0EsT0FBT0o7SUFDVDtJQUdGLElBQUlILGdCQUFnQkksSUFBSSxLQUFLUCxZQUFZO1FBQ3ZDLGlFQUFpRTtRQUNqRSxrQkFBa0I7UUFDbEIsT0FBT0c7SUFDVDtJQUVBLDRFQUE0RTtJQUM1RSwyRUFBMkU7SUFDM0UsK0RBQStEO0lBQy9ELEVBQUU7SUFDRiw2RUFBNkU7SUFDN0UsNkRBQTZEO0lBRTdELDJFQUEyRTtJQUMzRSxlQUFlO0lBQ2YsTUFBTVEsaUJBQXFDO1FBQ3pDSixNQUFNUDtRQUNOUSxXQUFXUDtRQUNYUSxVQUFVUDtRQUNWUSxNQUFNO0lBQ1I7SUFFQSwyRUFBMkU7SUFDM0UsNkVBQTZFO0lBQzdFLG1EQUFtRDtJQUNuRCxJQUFJRSxJQUFJO0lBQ1IsSUFBSUMsV0FBc0NWO0lBQzFDLElBQUlXLGNBQWtDSDtJQUN0QyxNQUFPRSxhQUFhLFFBQVFELElBQUloQixxQkFBc0I7UUFDcEQsSUFBSWlCLFNBQVNKLFFBQVEsS0FBS1AsZ0JBQWdCO1lBQ3hDLHlFQUF5RTtZQUN6RSx5RUFBeUU7WUFDekUsMEVBQTBFO1lBQzFFLHNFQUFzRTtZQUN0RSxzRUFBc0U7WUFDdEUsMEVBQTBFO1lBQzFFLDBEQUEwRDtZQUMxRFksWUFBWUosSUFBSSxHQUFHRyxTQUFTSCxJQUFJO1lBQ2hDO1FBQ0YsT0FBTztZQUNMLDZDQUE2QztZQUM3Q0U7WUFDQSxNQUFNRyxRQUE0QjtnQkFDaENSLE1BQU1NLFNBQVNOLElBQUk7Z0JBQ25CQyxXQUFXSyxTQUFTTCxTQUFTO2dCQUM3QkMsVUFBVUksU0FBU0osUUFBUTtnQkFDM0JDLE1BQU07WUFDUjtZQUNBSSxZQUFZSixJQUFJLEdBQUdLO1lBQ25CRCxjQUFjQztRQUNoQjtRQUNBRixXQUFXQSxTQUFTSCxJQUFJO0lBQzFCO0lBRUFOLG1CQUFtQk87SUFDbkIsT0FBT0E7QUFDVCIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9jbGllbnQvY29tcG9uZW50cy9iZmNhY2hlLXN0YXRlLW1hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBDYWNoZU5vZGUsXG4gIEZsaWdodFJvdXRlclN0YXRlLFxufSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItdHlwZXMnXG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuXG4vLyBXaGVuIHRoZSBmbGFnIGlzIGRpc2FibGVkLCBvbmx5IHRyYWNrIHRoZSBjdXJyZW50bHkgYWN0aXZlIHRyZWVcbmNvbnN0IE1BWF9CRl9DQUNIRV9FTlRSSUVTID0gcHJvY2Vzcy5lbnYuX19ORVhUX0NBQ0hFX0NPTVBPTkVOVFMgPyAzIDogMVxuXG5leHBvcnQgdHlwZSBSb3V0ZXJCRkNhY2hlRW50cnkgPSB7XG4gIHRyZWU6IEZsaWdodFJvdXRlclN0YXRlXG4gIGNhY2hlTm9kZTogQ2FjaGVOb2RlXG4gIHN0YXRlS2V5OiBzdHJpbmdcbiAgLy8gVGhlIGVudHJpZXMgZm9ybSBhIGxpbmtlZCBsaXN0LCBzb3J0ZWQgaW4gb3JkZXIgb2YgbW9zdCByZWNlbnRseSBhY3RpdmUuXG4gIG5leHQ6IFJvdXRlckJGQ2FjaGVFbnRyeSB8IG51bGxcbn1cblxuLyoqXG4gKiBLZWVwcyB0cmFjayBvZiB0aGUgbW9zdCByZWNlbnQgTiB0cmVlcyAoRmxpZ2h0Um91dGVyU3RhdGVzKSB0aGF0IHdlcmUgYWN0aXZlXG4gKiBhdCBhIGNlcnRhaW4gc2VnbWVudCBsZXZlbC4gRS5nLiBmb3IgYSBzZWdtZW50IFwiL2EvYi9bcGFyYW1dXCIsIHRoaXMgaG9va1xuICogdHJhY2tzIHRoZSBsYXN0IE4gcGFyYW0gdmFsdWVzIHRoYXQgdGhlIHJvdXRlciByZW5kZXJlZCBmb3IgTi5cbiAqXG4gKiBUaGUgcmVzdWx0IG9mIHRoaXMgaG9vayBwcmVjaXNlbHkgZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIGFuZCBvcmRlciBvZlxuICogdHJlZXMgdGhhdCBhcmUgcmVuZGVyZWQgaW4gcGFyYWxsZWwgYXQgdGhlaXIgc2VnbWVudCBsZXZlbC5cbiAqXG4gKiBUaGUgcHVycG9zZSBvZiB0aGlzIGNhY2hlIGlzIHRvIHdlIGNhbiBwcmVzZXJ2ZSB0aGUgUmVhY3QgYW5kIERPTSBzdGF0ZSBvZlxuICogc29tZSBudW1iZXIgb2YgaW5hY3RpdmUgdHJlZXMsIGJ5IHJlbmRlcmluZyB0aGVtIGluIGFuIDxBY3Rpdml0eT4gYm91bmRhcnkuXG4gKiBUaGF0IG1lYW5zIGl0IHdvdWxkIG5vdCBtYWtlIHNlbnNlIGZvciB0aGUgdGhlIGxpZmV0aW1lIG9mIHRoZSBjYWNoZSB0byBiZVxuICogYW55IGxvbmdlciB0aGFuIHRoZSBsaWZldGltZSBvZiB0aGUgUmVhY3QgdHJlZTsgZS5nLiBpZiB0aGUgaG9vayB3ZXJlXG4gKiB1bm1vdW50ZWQsIHRoZW4gdGhlIFJlYWN0IHRyZWUgd291bGQgYmUsIHRvby4gU28sIHdlIHVzZSBSZWFjdCBzdGF0ZSB0b1xuICogbWFuYWdlIGl0LlxuICpcbiAqIE5vdGUgdGhhdCB3ZSBkb24ndCBzdG9yZSB0aGUgUlNDIGRhdGEgZm9yIHRoZSBjYWNoZSBlbnRyaWVzIGluIHRoaXMgaG9vayDigJRcbiAqIHRoZSBkYXRhIGZvciBpbmFjdGl2ZSBzZWdtZW50cyBpcyBzdG9yZWQgaW4gdGhlIHBhcmVudCBDYWNoZU5vZGUsIHdoaWNoXG4gKiAqZG9lcyogaGF2ZSBhIGxvbmdlciBsaWZldGltZSB0aGFuIHRoZSBSZWFjdCB0cmVlLiBUaGlzIGhvb2sgb25seSBkZXRlcm1pbmVzXG4gKiB3aGljaCBvZiB0aG9zZSB0cmVlcyBzaG91bGQgaGF2ZSB0aGVpciAqc3RhdGUqIHByZXNlcnZlZCwgYnkgPEFjdGl2aXR5Pi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVJvdXRlckJGQ2FjaGUoXG4gIGFjdGl2ZVRyZWU6IEZsaWdodFJvdXRlclN0YXRlLFxuICBhY3RpdmVDYWNoZU5vZGU6IENhY2hlTm9kZSxcbiAgYWN0aXZlU3RhdGVLZXk6IHN0cmluZ1xuKTogUm91dGVyQkZDYWNoZUVudHJ5IHtcbiAgLy8gVGhlIGN1cnJlbnRseSBhY3RpdmUgZW50cnkuIFRoZSBlbnRyaWVzIGZvcm0gYSBsaW5rZWQgbGlzdCwgc29ydGVkIGluXG4gIC8vIG9yZGVyIG9mIG1vc3QgcmVjZW50bHkgYWN0aXZlLiBUaGlzIGFsbG93cyB1cyB0byByZXVzZSBwYXJ0cyBvZiB0aGUgbGlzdFxuICAvLyB3aXRob3V0IGNsb25pbmcsIHVubGVzcyB0aGVyZSdzIGEgcmVvcmRlcmluZyBvciByZW1vdmFsLlxuICAvLyBUT0RPOiBPbmNlIHdlIHN0YXJ0IHRyYWNraW5nIGJhY2svZm9yd2FyZCBoaXN0b3J5IGF0IGVhY2ggcm91dGUgbGV2ZWwsXG4gIC8vIHdlIHNob3VsZCB1c2UgdGhlIGhpc3Rvcnkgb3JkZXIgaW5zdGVhZC4gSW4gb3RoZXIgd29yZHMsIHdoZW4gdHJhdmVyc2luZ1xuICAvLyB0byBhbiBleGlzdGluZyBlbnRyeSBhcyBhIHJlc3VsdCBvZiBhIHBvcHN0YXRlIGV2ZW50LCB3ZSBzaG91bGQgbWFpbnRhaW5cbiAgLy8gdGhlIGV4aXN0aW5nIG9yZGVyIGluc3RlYWQgb2YgbW92aW5nIGl0IHRvIHRoZSBmcm9udCBvZiB0aGUgbGlzdC4gSSB0aGlua1xuICAvLyBhbiBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgY291bGQgYmUgdG8gcGFzcyBhbiBpbmNyZW1lbnRpbmcgaWRcbiAgLy8gdG8gaGlzdG9yeS5wdXNoU3RhdGUvcmVwbGFjZVN0YXRlLCB0aGVuIHVzZSB0aGF0IGhlcmUgZm9yIG9yZGVyaW5nLlxuICBjb25zdCBbcHJldkFjdGl2ZUVudHJ5LCBzZXRQcmV2QWN0aXZlRW50cnldID0gdXNlU3RhdGU8Um91dGVyQkZDYWNoZUVudHJ5PihcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdCBpbml0aWFsRW50cnk6IFJvdXRlckJGQ2FjaGVFbnRyeSA9IHtcbiAgICAgICAgdHJlZTogYWN0aXZlVHJlZSxcbiAgICAgICAgY2FjaGVOb2RlOiBhY3RpdmVDYWNoZU5vZGUsXG4gICAgICAgIHN0YXRlS2V5OiBhY3RpdmVTdGF0ZUtleSxcbiAgICAgICAgbmV4dDogbnVsbCxcbiAgICAgIH1cbiAgICAgIHJldHVybiBpbml0aWFsRW50cnlcbiAgICB9XG4gIClcblxuICBpZiAocHJldkFjdGl2ZUVudHJ5LnRyZWUgPT09IGFjdGl2ZVRyZWUpIHtcbiAgICAvLyBGYXN0IHBhdGguIFRoZSBhY3RpdmUgdHJlZSBoYXNuJ3QgY2hhbmdlZCwgc28gd2UgY2FuIHJldXNlIHRoZVxuICAgIC8vIGV4aXN0aW5nIHN0YXRlLlxuICAgIHJldHVybiBwcmV2QWN0aXZlRW50cnlcbiAgfVxuXG4gIC8vIFRoZSByb3V0ZSB0cmVlIGNoYW5nZWQuIE5vdGUgdGhhdCB0aGlzIGRvZXNuJ3QgbWVhbiB0aGF0IHRoZSB0cmVlIGNoYW5nZWRcbiAgLy8gKmF0IHRoaXMgbGV2ZWwqIOKAlCB0aGUgY2hhbmdlIG1heSBiZSBkdWUgdG8gYSBjaGlsZCByb3V0ZS4gRWl0aGVyIHdheSwgd2VcbiAgLy8gbmVlZCB0byBlaXRoZXIgYWRkIG9yIHVwZGF0ZSB0aGUgcm91dGVyIHRyZWUgaW4gdGhlIGJmY2FjaGUuXG4gIC8vXG4gIC8vIFRoZSByZXN0IG9mIHRoZSBjb2RlIGxvb2tzIG1vcmUgY29tcGxpY2F0ZWQgdGhhbiBpdCBhY3R1YWxseSBpcyBiZWNhdXNlIHdlXG4gIC8vIGNhbid0IG11dGF0ZSB0aGUgc3RhdGUgaW4gcGxhY2U7IHdlIGhhdmUgdG8gY29weS1vbi13cml0ZS5cblxuICAvLyBDcmVhdGUgYSBuZXcgZW50cnkgZm9yIHRoZSBhY3RpdmUgY2FjaGUga2V5LiBUaGlzIGlzIHRoZSBoZWFkIG9mIHRoZSBuZXdcbiAgLy8gbGlua2VkIGxpc3QuXG4gIGNvbnN0IG5ld0FjdGl2ZUVudHJ5OiBSb3V0ZXJCRkNhY2hlRW50cnkgPSB7XG4gICAgdHJlZTogYWN0aXZlVHJlZSxcbiAgICBjYWNoZU5vZGU6IGFjdGl2ZUNhY2hlTm9kZSxcbiAgICBzdGF0ZUtleTogYWN0aXZlU3RhdGVLZXksXG4gICAgbmV4dDogbnVsbCxcbiAgfVxuXG4gIC8vIFdlIG5lZWQgdG8gYXBwZW5kIHRoZSBvbGQgbGlzdCBvbnRvIHRoZSBuZXcgbGlzdC4gSWYgdGhlIGhlYWQgb2YgdGhlIG5ld1xuICAvLyBsaXN0IHdhcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIGNhY2hlLCB0aGVuIHdlJ2xsIG5lZWQgdG8gY2xvbmUgZXZlcnl0aGluZ1xuICAvLyB0aGF0IGNhbWUgYmVmb3JlIGl0LiBUaGVuIHdlIGNhbiByZXVzZSB0aGUgcmVzdC5cbiAgbGV0IG4gPSAxXG4gIGxldCBvbGRFbnRyeTogUm91dGVyQkZDYWNoZUVudHJ5IHwgbnVsbCA9IHByZXZBY3RpdmVFbnRyeVxuICBsZXQgY2xvbmVkRW50cnk6IFJvdXRlckJGQ2FjaGVFbnRyeSA9IG5ld0FjdGl2ZUVudHJ5XG4gIHdoaWxlIChvbGRFbnRyeSAhPT0gbnVsbCAmJiBuIDwgTUFYX0JGX0NBQ0hFX0VOVFJJRVMpIHtcbiAgICBpZiAob2xkRW50cnkuc3RhdGVLZXkgPT09IGFjdGl2ZVN0YXRlS2V5KSB7XG4gICAgICAvLyBGYXN0IHBhdGguIFRoaXMgZW50cnkgaW4gdGhlIG9sZCBsaXN0IHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGtleSB0aGF0XG4gICAgICAvLyBpcyBub3cgYWN0aXZlLiBXZSd2ZSBhbHJlYWR5IHBsYWNlZCBhIGNsb25lIG9mIHRoaXMgZW50cnkgYXQgdGhlIGZyb250XG4gICAgICAvLyBvZiB0aGUgbmV3IGxpc3QuIFdlIGNhbiByZXVzZSB0aGUgcmVzdCBvZiB0aGUgb2xkIGxpc3Qgd2l0aG91dCBjbG9uaW5nLlxuICAgICAgLy8gTk9URTogV2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBldmljdGlvbiBpbiB0aGlzIGNhc2UgYmVjYXVzZSB3ZVxuICAgICAgLy8gaGF2ZW4ndCBpbmNyZWFzZWQgdGhlIHNpemUgb2YgdGhlIGNhY2hlLCBhbmQgd2UgYXNzdW1lIHRoZSBtYXggc2l6ZVxuICAgICAgLy8gaXMgY29uc3RhbnQgYWNyb3NzIHJlbmRlcnMuIElmIHdlIHdlcmUgdG8gY2hhbmdlIGl0IHRvIGEgZHluYW1pYyBsaW1pdCxcbiAgICAgIC8vIHRoZW4gdGhlIGltcGxlbWVudGF0aW9uIHdvdWxkIG5lZWQgdG8gYWNjb3VudCBmb3IgdGhhdC5cbiAgICAgIGNsb25lZEVudHJ5Lm5leHQgPSBvbGRFbnRyeS5uZXh0XG4gICAgICBicmVha1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDbG9uZSB0aGUgZW50cnkgYW5kIGFwcGVuZCBpdCB0byB0aGUgbGlzdC5cbiAgICAgIG4rK1xuICAgICAgY29uc3QgZW50cnk6IFJvdXRlckJGQ2FjaGVFbnRyeSA9IHtcbiAgICAgICAgdHJlZTogb2xkRW50cnkudHJlZSxcbiAgICAgICAgY2FjaGVOb2RlOiBvbGRFbnRyeS5jYWNoZU5vZGUsXG4gICAgICAgIHN0YXRlS2V5OiBvbGRFbnRyeS5zdGF0ZUtleSxcbiAgICAgICAgbmV4dDogbnVsbCxcbiAgICAgIH1cbiAgICAgIGNsb25lZEVudHJ5Lm5leHQgPSBlbnRyeVxuICAgICAgY2xvbmVkRW50cnkgPSBlbnRyeVxuICAgIH1cbiAgICBvbGRFbnRyeSA9IG9sZEVudHJ5Lm5leHRcbiAgfVxuXG4gIHNldFByZXZBY3RpdmVFbnRyeShuZXdBY3RpdmVFbnRyeSlcbiAgcmV0dXJuIG5ld0FjdGl2ZUVudHJ5XG59XG4iXSwibmFtZXMiOlsidXNlUm91dGVyQkZDYWNoZSIsIk1BWF9CRl9DQUNIRV9FTlRSSUVTIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9DQUNIRV9DT01QT05FTlRTIiwiYWN0aXZlVHJlZSIsImFjdGl2ZUNhY2hlTm9kZSIsImFjdGl2ZVN0YXRlS2V5IiwicHJldkFjdGl2ZUVudHJ5Iiwic2V0UHJldkFjdGl2ZUVudHJ5IiwidXNlU3RhdGUiLCJpbml0aWFsRW50cnkiLCJ0cmVlIiwiY2FjaGVOb2RlIiwic3RhdGVLZXkiLCJuZXh0IiwibmV3QWN0aXZlRW50cnkiLCJuIiwib2xkRW50cnkiLCJjbG9uZWRFbnRyeSIsImVudHJ5Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/bfcache-state-manager.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/builtin/error-styles.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/builtin/error-styles.js ***!
|
||
\**************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n WarningIcon: function() {\n return WarningIcon;\n },\n errorStyles: function() {\n return errorStyles;\n },\n errorThemeCss: function() {\n return errorThemeCss;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\"));\nconst errorStyles = {\n container: {\n fontFamily: 'system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"',\n height: '100vh',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n },\n card: {\n marginTop: '-32px',\n maxWidth: '325px',\n padding: '32px 28px',\n textAlign: 'left'\n },\n icon: {\n marginBottom: '24px'\n },\n title: {\n fontSize: '24px',\n fontWeight: 500,\n letterSpacing: '-0.02em',\n lineHeight: '32px',\n margin: '0 0 12px 0',\n color: 'var(--next-error-title)'\n },\n message: {\n fontSize: '14px',\n fontWeight: 400,\n lineHeight: '21px',\n margin: '0 0 20px 0',\n color: 'var(--next-error-message)'\n },\n form: {\n margin: 0\n },\n buttonGroup: {\n display: 'flex',\n gap: '8px',\n alignItems: 'center'\n },\n button: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: '32px',\n padding: '0 12px',\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '20px',\n borderRadius: '6px',\n cursor: 'pointer',\n color: 'var(--next-error-btn-text)',\n background: 'var(--next-error-btn-bg)',\n border: 'var(--next-error-btn-border)'\n },\n buttonSecondary: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: '32px',\n padding: '0 12px',\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '20px',\n borderRadius: '6px',\n cursor: 'pointer',\n color: 'var(--next-error-btn-secondary-text)',\n background: 'var(--next-error-btn-secondary-bg)',\n border: 'var(--next-error-btn-secondary-border)'\n },\n digestFooter: {\n position: 'fixed',\n bottom: '32px',\n left: '0',\n right: '0',\n textAlign: 'center',\n fontFamily: 'ui-monospace,SFMono-Regular,\"SF Mono\",Menlo,Consolas,monospace',\n fontSize: '12px',\n lineHeight: '18px',\n fontWeight: 400,\n margin: '0',\n color: 'var(--next-error-digest)'\n }\n};\nconst errorThemeCss = `\n:root {\n --next-error-bg: #fff;\n --next-error-text: #171717;\n --next-error-title: #171717;\n --next-error-message: #171717;\n --next-error-digest: #666666;\n --next-error-btn-text: #fff;\n --next-error-btn-bg: #171717;\n --next-error-btn-border: none;\n --next-error-btn-secondary-text: #171717;\n --next-error-btn-secondary-bg: transparent;\n --next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);\n}\n@media (prefers-color-scheme: dark) {\n :root {\n --next-error-bg: #0a0a0a;\n --next-error-text: #ededed;\n --next-error-title: #ededed;\n --next-error-message: #ededed;\n --next-error-digest: #a0a0a0;\n --next-error-btn-text: #0a0a0a;\n --next-error-btn-bg: #ededed;\n --next-error-btn-border: none;\n --next-error-btn-secondary-text: #ededed;\n --next-error-btn-secondary-bg: transparent;\n --next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);\n }\n}\nbody { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\n`.replace(/\\n\\s*/g, '');\nfunction WarningIcon() {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"svg\", {\n width: \"32\",\n height: \"32\",\n viewBox: \"-0.2 -1.5 32 32\",\n fill: \"none\",\n style: errorStyles.icon,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(\"path\", {\n d: \"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\n fill: \"var(--next-error-title)\"\n })\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=error-styles.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2J1aWx0aW4vZXJyb3Itc3R5bGVzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQXlIZ0JBLFdBQVc7ZUFBWEE7O0lBdkhIQyxXQUFXO2VBQVhBOztJQXVGQUMsYUFBYTtlQUFiQTs7Ozs7NEVBekZLO0FBRVgsTUFBTUQsY0FBYztJQUN6QkUsV0FBVztRQUNUQyxZQUNFO1FBQ0ZDLFFBQVE7UUFDUkMsU0FBUztRQUNUQyxZQUFZO1FBQ1pDLGdCQUFnQjtJQUNsQjtJQUNBQyxNQUFNO1FBQ0pDLFdBQVc7UUFDWEMsVUFBVTtRQUNWQyxTQUFTO1FBQ1RDLFdBQVc7SUFDYjtJQUNBQyxNQUFNO1FBQ0pDLGNBQWM7SUFDaEI7SUFDQUMsT0FBTztRQUNMQyxVQUFVO1FBQ1ZDLFlBQVk7UUFDWkMsZUFBZTtRQUNmQyxZQUFZO1FBQ1pDLFFBQVE7UUFDUkMsT0FBTztJQUNUO0lBQ0FDLFNBQVM7UUFDUE4sVUFBVTtRQUNWQyxZQUFZO1FBQ1pFLFlBQVk7UUFDWkMsUUFBUTtRQUNSQyxPQUFPO0lBQ1Q7SUFDQUUsTUFBTTtRQUNKSCxRQUFRO0lBQ1Y7SUFDQUksYUFBYTtRQUNYbkIsU0FBUztRQUNUb0IsS0FBSztRQUNMbkIsWUFBWTtJQUNkO0lBQ0FvQixRQUFRO1FBQ05yQixTQUFTO1FBQ1RDLFlBQVk7UUFDWkMsZ0JBQWdCO1FBQ2hCSCxRQUFRO1FBQ1JPLFNBQVM7UUFDVEssVUFBVTtRQUNWQyxZQUFZO1FBQ1pFLFlBQVk7UUFDWlEsY0FBYztRQUNkQyxRQUFRO1FBQ1JQLE9BQU87UUFDUFEsWUFBWTtRQUNaQyxRQUFRO0lBQ1Y7SUFDQUMsaUJBQWlCO1FBQ2YxQixTQUFTO1FBQ1RDLFlBQVk7UUFDWkMsZ0JBQWdCO1FBQ2hCSCxRQUFRO1FBQ1JPLFNBQVM7UUFDVEssVUFBVTtRQUNWQyxZQUFZO1FBQ1pFLFlBQVk7UUFDWlEsY0FBYztRQUNkQyxRQUFRO1FBQ1JQLE9BQU87UUFDUFEsWUFBWTtRQUNaQyxRQUFRO0lBQ1Y7SUFDQUUsY0FBYztRQUNaQyxVQUFVO1FBQ1ZDLFFBQVE7UUFDUkMsTUFBTTtRQUNOQyxPQUFPO1FBQ1B4QixXQUFXO1FBQ1hULFlBQ0U7UUFDRmEsVUFBVTtRQUNWRyxZQUFZO1FBQ1pGLFlBQVk7UUFDWkcsUUFBUTtRQUNSQyxPQUFPO0lBQ1Q7QUFDRjtBQUVPLE1BQU1wQixnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBOEI5QixDQUFDLENBQUNvQyxPQUFPLENBQUMsVUFBVTtBQUViLFNBQVN0QztJQUNkLHFCQUNFLHFCQUFDdUMsT0FBQUE7UUFDQ0MsT0FBTTtRQUNObkMsUUFBTztRQUNQb0MsU0FBUTtRQUNSQyxNQUFLO1FBQ0xDLE9BQU8xQyxZQUFZYSxJQUFJO2tCQUV2QixtQ0FBQzhCLFFBQUFBO1lBQ0NDLEdBQUU7WUFDRkgsTUFBSzs7O0FBSWIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvY2xpZW50L2NvbXBvbmVudHMvYnVpbHRpbi9lcnJvci1zdHlsZXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGNvbnN0IGVycm9yU3R5bGVzID0ge1xuICBjb250YWluZXI6IHtcbiAgICBmb250RmFtaWx5OlxuICAgICAgJ3N5c3RlbS11aSxcIlNlZ29lIFVJXCIsUm9ib3RvLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmLFwiQXBwbGUgQ29sb3IgRW1vamlcIixcIlNlZ29lIFVJIEVtb2ppXCInLFxuICAgIGhlaWdodDogJzEwMHZoJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICB9LFxuICBjYXJkOiB7XG4gICAgbWFyZ2luVG9wOiAnLTMycHgnLFxuICAgIG1heFdpZHRoOiAnMzI1cHgnLFxuICAgIHBhZGRpbmc6ICczMnB4IDI4cHgnLFxuICAgIHRleHRBbGlnbjogJ2xlZnQnIGFzIGNvbnN0LFxuICB9LFxuICBpY29uOiB7XG4gICAgbWFyZ2luQm90dG9tOiAnMjRweCcsXG4gIH0sXG4gIHRpdGxlOiB7XG4gICAgZm9udFNpemU6ICcyNHB4JyxcbiAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgbGV0dGVyU3BhY2luZzogJy0wLjAyZW0nLFxuICAgIGxpbmVIZWlnaHQ6ICczMnB4JyxcbiAgICBtYXJnaW46ICcwIDAgMTJweCAwJyxcbiAgICBjb2xvcjogJ3ZhcigtLW5leHQtZXJyb3ItdGl0bGUpJyxcbiAgfSxcbiAgbWVzc2FnZToge1xuICAgIGZvbnRTaXplOiAnMTRweCcsXG4gICAgZm9udFdlaWdodDogNDAwLFxuICAgIGxpbmVIZWlnaHQ6ICcyMXB4JyxcbiAgICBtYXJnaW46ICcwIDAgMjBweCAwJyxcbiAgICBjb2xvcjogJ3ZhcigtLW5leHQtZXJyb3ItbWVzc2FnZSknLFxuICB9LFxuICBmb3JtOiB7XG4gICAgbWFyZ2luOiAwLFxuICB9LFxuICBidXR0b25Hcm91cDoge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBnYXA6ICc4cHgnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9LFxuICBidXR0b246IHtcbiAgICBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICBoZWlnaHQ6ICczMnB4JyxcbiAgICBwYWRkaW5nOiAnMCAxMnB4JyxcbiAgICBmb250U2l6ZTogJzE0cHgnLFxuICAgIGZvbnRXZWlnaHQ6IDUwMCxcbiAgICBsaW5lSGVpZ2h0OiAnMjBweCcsXG4gICAgYm9yZGVyUmFkaXVzOiAnNnB4JyxcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICBjb2xvcjogJ3ZhcigtLW5leHQtZXJyb3ItYnRuLXRleHQpJyxcbiAgICBiYWNrZ3JvdW5kOiAndmFyKC0tbmV4dC1lcnJvci1idG4tYmcpJyxcbiAgICBib3JkZXI6ICd2YXIoLS1uZXh0LWVycm9yLWJ0bi1ib3JkZXIpJyxcbiAgfSxcbiAgYnV0dG9uU2Vjb25kYXJ5OiB7XG4gICAgZGlzcGxheTogJ2lubGluZS1mbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgaGVpZ2h0OiAnMzJweCcsXG4gICAgcGFkZGluZzogJzAgMTJweCcsXG4gICAgZm9udFNpemU6ICcxNHB4JyxcbiAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgbGluZUhlaWdodDogJzIwcHgnLFxuICAgIGJvcmRlclJhZGl1czogJzZweCcsXG4gICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgY29sb3I6ICd2YXIoLS1uZXh0LWVycm9yLWJ0bi1zZWNvbmRhcnktdGV4dCknLFxuICAgIGJhY2tncm91bmQ6ICd2YXIoLS1uZXh0LWVycm9yLWJ0bi1zZWNvbmRhcnktYmcpJyxcbiAgICBib3JkZXI6ICd2YXIoLS1uZXh0LWVycm9yLWJ0bi1zZWNvbmRhcnktYm9yZGVyKScsXG4gIH0sXG4gIGRpZ2VzdEZvb3Rlcjoge1xuICAgIHBvc2l0aW9uOiAnZml4ZWQnIGFzIGNvbnN0LFxuICAgIGJvdHRvbTogJzMycHgnLFxuICAgIGxlZnQ6ICcwJyxcbiAgICByaWdodDogJzAnLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcicgYXMgY29uc3QsXG4gICAgZm9udEZhbWlseTpcbiAgICAgICd1aS1tb25vc3BhY2UsU0ZNb25vLVJlZ3VsYXIsXCJTRiBNb25vXCIsTWVubG8sQ29uc29sYXMsbW9ub3NwYWNlJyxcbiAgICBmb250U2l6ZTogJzEycHgnLFxuICAgIGxpbmVIZWlnaHQ6ICcxOHB4JyxcbiAgICBmb250V2VpZ2h0OiA0MDAsXG4gICAgbWFyZ2luOiAnMCcsXG4gICAgY29sb3I6ICd2YXIoLS1uZXh0LWVycm9yLWRpZ2VzdCknLFxuICB9LFxufSBhcyBjb25zdFxuXG5leHBvcnQgY29uc3QgZXJyb3JUaGVtZUNzcyA9IGBcbjpyb290IHtcbiAgLS1uZXh0LWVycm9yLWJnOiAjZmZmO1xuICAtLW5leHQtZXJyb3ItdGV4dDogIzE3MTcxNztcbiAgLS1uZXh0LWVycm9yLXRpdGxlOiAjMTcxNzE3O1xuICAtLW5leHQtZXJyb3ItbWVzc2FnZTogIzE3MTcxNztcbiAgLS1uZXh0LWVycm9yLWRpZ2VzdDogIzY2NjY2NjtcbiAgLS1uZXh0LWVycm9yLWJ0bi10ZXh0OiAjZmZmO1xuICAtLW5leHQtZXJyb3ItYnRuLWJnOiAjMTcxNzE3O1xuICAtLW5leHQtZXJyb3ItYnRuLWJvcmRlcjogbm9uZTtcbiAgLS1uZXh0LWVycm9yLWJ0bi1zZWNvbmRhcnktdGV4dDogIzE3MTcxNztcbiAgLS1uZXh0LWVycm9yLWJ0bi1zZWNvbmRhcnktYmc6IHRyYW5zcGFyZW50O1xuICAtLW5leHQtZXJyb3ItYnRuLXNlY29uZGFyeS1ib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMDgpO1xufVxuQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuICA6cm9vdCB7XG4gICAgLS1uZXh0LWVycm9yLWJnOiAjMGEwYTBhO1xuICAgIC0tbmV4dC1lcnJvci10ZXh0OiAjZWRlZGVkO1xuICAgIC0tbmV4dC1lcnJvci10aXRsZTogI2VkZWRlZDtcbiAgICAtLW5leHQtZXJyb3ItbWVzc2FnZTogI2VkZWRlZDtcbiAgICAtLW5leHQtZXJyb3ItZGlnZXN0OiAjYTBhMGEwO1xuICAgIC0tbmV4dC1lcnJvci1idG4tdGV4dDogIzBhMGEwYTtcbiAgICAtLW5leHQtZXJyb3ItYnRuLWJnOiAjZWRlZGVkO1xuICAgIC0tbmV4dC1lcnJvci1idG4tYm9yZGVyOiBub25lO1xuICAgIC0tbmV4dC1lcnJvci1idG4tc2Vjb25kYXJ5LXRleHQ6ICNlZGVkZWQ7XG4gICAgLS1uZXh0LWVycm9yLWJ0bi1zZWNvbmRhcnktYmc6IHRyYW5zcGFyZW50O1xuICAgIC0tbmV4dC1lcnJvci1idG4tc2Vjb25kYXJ5LWJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xNCk7XG4gIH1cbn1cbmJvZHkgeyBtYXJnaW46IDA7IGNvbG9yOiB2YXIoLS1uZXh0LWVycm9yLXRleHQpOyBiYWNrZ3JvdW5kOiB2YXIoLS1uZXh0LWVycm9yLWJnKTsgfVxuYC5yZXBsYWNlKC9cXG5cXHMqL2csICcnKVxuXG5leHBvcnQgZnVuY3Rpb24gV2FybmluZ0ljb24oKSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9XCIzMlwiXG4gICAgICBoZWlnaHQ9XCIzMlwiXG4gICAgICB2aWV3Qm94PVwiLTAuMiAtMS41IDMyIDMyXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0eWxlPXtlcnJvclN0eWxlcy5pY29ufVxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTYuOTMyOCAwQzE4LjA4MzkgMC4wMDAxMTY3NzEgMTkuMTMzNCAwLjY1ODgzMiAxOS42MzQgMS42OTUzMUwzMS40Mjk5IDI2LjEzMDlDMzIuMDcwOCAyNy40NTg4IDMxLjEwMzYgMjguOTk5OSAyOS42MjkxIDI5SDIuMDAyMTVDMC41Mjc1NDEgMjkgLTAuNDM5NjI4IDI3LjQ1ODggMC4yMDEzNzEgMjYuMTMwOUwxMS45OTczIDEuNjk1MzFDMTIuNDk3OSAwLjY1ODgyMyAxMy41NDc0IDcuNzUwNjZlLTA1IDE0LjY5ODQgMEgxNi45MzI4Wk0zLjU5NDkzIDI2SDI4LjAzNjNMMTYuOTMyOCAzSDE0LjY5ODRMMy41OTQ5MyAyNlpNMTUuODE1NiAxOUMxNi45MjAyIDE5LjAwMDEgMTcuODE1NiAxOS44OTU1IDE3LjgxNTYgMjFDMTcuODE1NiAyMi4xMDQ1IDE2LjkyMDIgMjIuOTk5OSAxNS44MTU2IDIzQzE0LjcxMTEgMjMgMTMuODE1NiAyMi4xMDQ2IDEzLjgxNTYgMjFDMTMuODE1NiAxOS44OTU0IDE0LjcxMTEgMTkgMTUuODE1NiAxOVpNMTcuMzE1NiAxNi41SDE0LjMxNTZWOC41SDE3LjMxNTZWMTYuNVpcIlxuICAgICAgICBmaWxsPVwidmFyKC0tbmV4dC1lcnJvci10aXRsZSlcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKVxufVxuIl0sIm5hbWVzIjpbIldhcm5pbmdJY29uIiwiZXJyb3JTdHlsZXMiLCJlcnJvclRoZW1lQ3NzIiwiY29udGFpbmVyIiwiZm9udEZhbWlseSIsImhlaWdodCIsImRpc3BsYXkiLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJjYXJkIiwibWFyZ2luVG9wIiwibWF4V2lkdGgiLCJwYWRkaW5nIiwidGV4dEFsaWduIiwiaWNvbiIsIm1hcmdpbkJvdHRvbSIsInRpdGxlIiwiZm9udFNpemUiLCJmb250V2VpZ2h0IiwibGV0dGVyU3BhY2luZyIsImxpbmVIZWlnaHQiLCJtYXJnaW4iLCJjb2xvciIsIm1lc3NhZ2UiLCJmb3JtIiwiYnV0dG9uR3JvdXAiLCJnYXAiLCJidXR0b24iLCJib3JkZXJSYWRpdXMiLCJjdXJzb3IiLCJiYWNrZ3JvdW5kIiwiYm9yZGVyIiwiYnV0dG9uU2Vjb25kYXJ5IiwiZGlnZXN0Rm9vdGVyIiwicG9zaXRpb24iLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJyZXBsYWNlIiwic3ZnIiwid2lkdGgiLCJ2aWV3Qm94IiwiZmlsbCIsInN0eWxlIiwicGF0aCIsImQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/builtin/error-styles.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/builtin/global-error.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/builtin/global-error.js ***!
|
||
\**************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return _default;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\"));\nconst _handleisrerror = __webpack_require__(/*! ../handle-isr-error */ \"(ssr)/./node_modules/next/dist/client/components/handle-isr-error.js\");\nconst _errorstyles = __webpack_require__(/*! ./error-styles */ \"(ssr)/./node_modules/next/dist/client/components/builtin/error-styles.js\");\nfunction DefaultGlobalError({ error }) {\n const digest = error?.digest;\n const isServerError = !!digest;\n const message = isServerError ? 'A server error occurred. Reload to try again.' : 'Reload to try again, or go back.';\n (0, _handleisrerror.handleISRError)({\n error\n });\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(\"html\", {\n id: \"__next_error__\",\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"head\", {\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(\"style\", {\n dangerouslySetInnerHTML: {\n __html: _errorstyles.errorThemeCss\n }\n })\n }),\n /*#__PURE__*/ (0, _jsxruntime.jsxs)(\"body\", {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"div\", {\n style: _errorstyles.errorStyles.container,\n children: /*#__PURE__*/ (0, _jsxruntime.jsxs)(\"div\", {\n style: _errorstyles.errorStyles.card,\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(_errorstyles.WarningIcon, {}),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"h1\", {\n style: _errorstyles.errorStyles.title,\n children: \"This page couldn’t load\"\n }),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"p\", {\n style: _errorstyles.errorStyles.message,\n children: message\n }),\n /*#__PURE__*/ (0, _jsxruntime.jsxs)(\"div\", {\n style: _errorstyles.errorStyles.buttonGroup,\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"form\", {\n style: _errorstyles.errorStyles.form,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(\"button\", {\n type: \"submit\",\n style: _errorstyles.errorStyles.button,\n children: \"Reload\"\n })\n }),\n !isServerError && /*#__PURE__*/ (0, _jsxruntime.jsx)(\"button\", {\n type: \"button\",\n style: _errorstyles.errorStyles.buttonSecondary,\n onClick: ()=>{\n if (window.history.length > 1) {\n window.history.back();\n } else {\n window.location.href = '/';\n }\n },\n children: \"Back\"\n })\n ]\n })\n ]\n })\n }),\n digest && /*#__PURE__*/ (0, _jsxruntime.jsxs)(\"p\", {\n style: _errorstyles.errorStyles.digestFooter,\n children: [\n \"ERROR \",\n digest\n ]\n })\n ]\n })\n ]\n });\n}\nconst _default = DefaultGlobalError;\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=global-error.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2J1aWx0aW4vZ2xvYmFsLWVycm9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7MkNBaUVBOzs7ZUFBQTs7Ozs7NEVBL0RrQjs0Q0FDYTt5Q0FDeUI7QUFReEQsU0FBU0EsbUJBQW1CLEVBQUVDLEtBQUssRUFBa0I7SUFDbkQsTUFBTUMsU0FBNkJELE9BQU9DO0lBQzFDLE1BQU1DLGdCQUFnQixDQUFDLENBQUNEO0lBRXhCLE1BQU1FLFVBQVVELGdCQUNaLGtEQUNBO0lBRUpFLENBQUFBLEdBQUFBLGdCQUFBQSxjQUFBQSxFQUFlO1FBQUVKO0lBQU07SUFFdkIscUJBQ0Usc0JBQUNLLFFBQUFBO1FBQUtDLElBQUc7OzBCQUNQLHFCQUFDQyxRQUFBQTswQkFDQyxtQ0FBQ0MsU0FBQUE7b0JBQU1DLHlCQUF5Qjt3QkFBRUMsUUFBUUMsYUFBQUEsYUFBYTtvQkFBQzs7OzBCQUUxRCxzQkFBQ0MsUUFBQUE7O2tDQUNDLHFCQUFDQyxPQUFBQTt3QkFBSUwsT0FBT00sYUFBQUEsV0FBVyxDQUFDQyxTQUFTO2tDQUMvQixvQ0FBQ0YsT0FBQUE7NEJBQUlMLE9BQU9NLGFBQUFBLFdBQVcsQ0FBQ0UsSUFBSTs7OENBQzFCLHFCQUFDQyxhQUFBQSxXQUFXOzhDQUNaLHFCQUFDQyxNQUFBQTtvQ0FBR1YsT0FBT00sYUFBQUEsV0FBVyxDQUFDSyxLQUFLOzhDQUFFOzs4Q0FDOUIscUJBQUNDLEtBQUFBO29DQUFFWixPQUFPTSxhQUFBQSxXQUFXLENBQUNYLE9BQU87OENBQUdBOzs4Q0FDaEMsc0JBQUNVLE9BQUFBO29DQUFJTCxPQUFPTSxhQUFBQSxXQUFXLENBQUNPLFdBQVc7O3NEQUNqQyxxQkFBQ0MsUUFBQUE7NENBQUtkLE9BQU9NLGFBQUFBLFdBQVcsQ0FBQ1EsSUFBSTtzREFDM0IsbUNBQUNDLFVBQUFBO2dEQUFPQyxNQUFLO2dEQUFTaEIsT0FBT00sYUFBQUEsV0FBVyxDQUFDUyxNQUFNOzBEQUFFOzs7d0NBSWxELENBQUNyQixpQkFBQUEsV0FBQUEsR0FDQSxxQkFBQ3FCLFVBQUFBOzRDQUNDQyxNQUFLOzRDQUNMaEIsT0FBT00sYUFBQUEsV0FBVyxDQUFDVyxlQUFlOzRDQUNsQ0MsU0FBUztnREFDUCxJQUFJQyxPQUFPQyxPQUFPLENBQUNDLE1BQU0sR0FBRyxHQUFHO29EQUM3QkYsT0FBT0MsT0FBTyxDQUFDRSxJQUFJO2dEQUNyQixPQUFPO29EQUNMSCxPQUFPSSxRQUFRLENBQUNDLElBQUksR0FBRztnREFDekI7NENBQ0Y7c0RBQ0Q7Ozs7Ozs7b0JBT1IvQixVQUFBQSxXQUFBQSxHQUFVLHNCQUFDbUIsS0FBQUE7d0JBQUVaLE9BQU9NLGFBQUFBLFdBQVcsQ0FBQ21CLFlBQVk7OzRCQUFFOzRCQUFPaEM7Ozs7Ozs7QUFJOUQ7TUFJQSxXQUFlRiIsInNvdXJjZXMiOlsiL1VzZXJzL3NyYy9jbGllbnQvY29tcG9uZW50cy9idWlsdGluL2dsb2JhbC1lcnJvci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGhhbmRsZUlTUkVycm9yIH0gZnJvbSAnLi4vaGFuZGxlLWlzci1lcnJvcidcbmltcG9ydCB7IGVycm9yU3R5bGVzLCBlcnJvclRoZW1lQ3NzLCBXYXJuaW5nSWNvbiB9IGZyb20gJy4vZXJyb3Itc3R5bGVzJ1xuXG5leHBvcnQgdHlwZSBHbG9iYWxFcnJvckNvbXBvbmVudCA9IFJlYWN0LkNvbXBvbmVudFR5cGU8e1xuICBlcnJvcjogYW55XG4gIHJlc2V0OiAoKSA9PiB2b2lkXG4gIHVuc3RhYmxlX3JldHJ5OiAoKSA9PiB2b2lkXG59PlxuXG5mdW5jdGlvbiBEZWZhdWx0R2xvYmFsRXJyb3IoeyBlcnJvciB9OiB7IGVycm9yOiBhbnkgfSkge1xuICBjb25zdCBkaWdlc3Q6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGVycm9yPy5kaWdlc3RcbiAgY29uc3QgaXNTZXJ2ZXJFcnJvciA9ICEhZGlnZXN0XG5cbiAgY29uc3QgbWVzc2FnZSA9IGlzU2VydmVyRXJyb3JcbiAgICA/ICdBIHNlcnZlciBlcnJvciBvY2N1cnJlZC4gUmVsb2FkIHRvIHRyeSBhZ2Fpbi4nXG4gICAgOiAnUmVsb2FkIHRvIHRyeSBhZ2Fpbiwgb3IgZ28gYmFjay4nXG5cbiAgaGFuZGxlSVNSRXJyb3IoeyBlcnJvciB9KVxuXG4gIHJldHVybiAoXG4gICAgPGh0bWwgaWQ9XCJfX25leHRfZXJyb3JfX1wiPlxuICAgICAgPGhlYWQ+XG4gICAgICAgIDxzdHlsZSBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IGVycm9yVGhlbWVDc3MgfX0gLz5cbiAgICAgIDwvaGVhZD5cbiAgICAgIDxib2R5PlxuICAgICAgICA8ZGl2IHN0eWxlPXtlcnJvclN0eWxlcy5jb250YWluZXJ9PlxuICAgICAgICAgIDxkaXYgc3R5bGU9e2Vycm9yU3R5bGVzLmNhcmR9PlxuICAgICAgICAgICAgPFdhcm5pbmdJY29uIC8+XG4gICAgICAgICAgICA8aDEgc3R5bGU9e2Vycm9yU3R5bGVzLnRpdGxlfT5UaGlzIHBhZ2UgY291bGRuJiN4MjAxOTt0IGxvYWQ8L2gxPlxuICAgICAgICAgICAgPHAgc3R5bGU9e2Vycm9yU3R5bGVzLm1lc3NhZ2V9PnttZXNzYWdlfTwvcD5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e2Vycm9yU3R5bGVzLmJ1dHRvbkdyb3VwfT5cbiAgICAgICAgICAgICAgPGZvcm0gc3R5bGU9e2Vycm9yU3R5bGVzLmZvcm19PlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIHN0eWxlPXtlcnJvclN0eWxlcy5idXR0b259PlxuICAgICAgICAgICAgICAgICAgUmVsb2FkXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgeyFpc1NlcnZlckVycm9yICYmIChcbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXtlcnJvclN0eWxlcy5idXR0b25TZWNvbmRhcnl9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaGlzdG9yeS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgd2luZG93Lmhpc3RvcnkuYmFjaygpXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnLydcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBCYWNrXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHtkaWdlc3QgJiYgPHAgc3R5bGU9e2Vycm9yU3R5bGVzLmRpZ2VzdEZvb3Rlcn0+RVJST1Ige2RpZ2VzdH08L3A+fVxuICAgICAgPC9ib2R5PlxuICAgIDwvaHRtbD5cbiAgKVxufVxuXG4vLyBFeHBvcnRlZCBzbyB0aGF0IHRoZSBpbXBvcnQgc2lnbmF0dXJlIGluIHRoZSBsb2FkZXJzIGNhbiBiZSBpZGVudGljYWwgdG8gdXNlclxuLy8gc3VwcGxpZWQgY3VzdG9tIGdsb2JhbCBlcnJvciBzaWduYXR1cmVzLlxuZXhwb3J0IGRlZmF1bHQgRGVmYXVsdEdsb2JhbEVycm9yXG4iXSwibmFtZXMiOlsiRGVmYXVsdEdsb2JhbEVycm9yIiwiZXJyb3IiLCJkaWdlc3QiLCJpc1NlcnZlckVycm9yIiwibWVzc2FnZSIsImhhbmRsZUlTUkVycm9yIiwiaHRtbCIsImlkIiwiaGVhZCIsInN0eWxlIiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJfX2h0bWwiLCJlcnJvclRoZW1lQ3NzIiwiYm9keSIsImRpdiIsImVycm9yU3R5bGVzIiwiY29udGFpbmVyIiwiY2FyZCIsIldhcm5pbmdJY29uIiwiaDEiLCJ0aXRsZSIsInAiLCJidXR0b25Hcm91cCIsImZvcm0iLCJidXR0b24iLCJ0eXBlIiwiYnV0dG9uU2Vjb25kYXJ5Iiwib25DbGljayIsIndpbmRvdyIsImhpc3RvcnkiLCJsZW5ndGgiLCJiYWNrIiwibG9jYXRpb24iLCJocmVmIiwiZGlnZXN0Rm9vdGVyIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/builtin/global-error.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/client-page.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/client-page.js ***!
|
||
\*****************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"ClientPageRoot\", ({\n enumerable: true,\n get: function() {\n return ClientPageRoot;\n }\n}));\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../shared/lib/app-router-context.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js\");\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nconst _routeparams = __webpack_require__(/*! ../route-params */ \"(ssr)/./node_modules/next/dist/client/route-params.js\");\nconst _hooksclientcontextsharedruntime = __webpack_require__(/*! ../../shared/lib/hooks-client-context.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/hooks-client-context.js\");\nfunction ClientPageRoot({ Component, serverProvidedParams }) {\n let searchParams;\n let params;\n if (serverProvidedParams !== null) {\n searchParams = serverProvidedParams.searchParams;\n params = serverProvidedParams.params;\n } else {\n // When Cache Components is enabled, the server does not pass the params as\n // props; they are parsed on the client and passed via context.\n const layoutRouterContext = (0, _react.use)(_approutercontextsharedruntime.LayoutRouterContext);\n params = layoutRouterContext !== null ? layoutRouterContext.parentParams : {};\n // This is an intentional behavior change: when Cache Components is enabled,\n // client segments receive the \"canonical\" search params, not the\n // rewritten ones. Users should either call useSearchParams directly or pass\n // the rewritten ones in from a Server Component.\n // TODO: Log a deprecation error when this object is accessed\n searchParams = (0, _routeparams.urlSearchParamsToParsedUrlQuery)((0, _react.use)(_hooksclientcontextsharedruntime.SearchParamsContext));\n }\n if (true) {\n let clientSearchParams;\n let clientParams;\n const { createSearchParamsFromClient } = __webpack_require__(/*! ../../server/request/search-params */ \"(ssr)/./node_modules/next/dist/server/request/search-params.js\");\n clientSearchParams = createSearchParamsFromClient(searchParams);\n const { createParamsFromClient } = __webpack_require__(/*! ../../server/request/params */ \"(ssr)/./node_modules/next/dist/server/request/params.js\");\n clientParams = createParamsFromClient(params);\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(Component, {\n params: clientParams,\n searchParams: clientSearchParams\n });\n } else {}\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=client-page.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2NsaWVudC1wYWdlLmpzIiwibWFwcGluZ3MiOiI7Ozs7a0RBaUJnQkE7OztlQUFBQTs7OzsyREFib0I7bUNBQ2hCO3lDQUM0Qjs2REFDWjtBQVU3QixTQUFTQSxlQUFlLEVBQzdCQyxTQUFTLEVBQ1RDLG9CQUFvQixFQVFyQjtJQUNDLElBQUlDO0lBQ0osSUFBSUM7SUFDSixJQUFJRix5QkFBeUIsTUFBTTtRQUNqQ0MsZUFBZUQscUJBQXFCQyxZQUFZO1FBQ2hEQyxTQUFTRixxQkFBcUJFLE1BQU07SUFDdEMsT0FBTztRQUNMLDJFQUEyRTtRQUMzRSwrREFBK0Q7UUFDL0QsTUFBTUMsc0JBQXNCQyxDQUFBQSxHQUFBQSxPQUFBQSxHQUFBQSxFQUFJQywrQkFBQUEsbUJBQW1CO1FBQ25ESCxTQUNFQyx3QkFBd0IsT0FBT0Esb0JBQW9CRyxZQUFZLEdBQUcsQ0FBQztRQUVyRSw0RUFBNEU7UUFDNUUsaUVBQWlFO1FBQ2pFLDRFQUE0RTtRQUM1RSxpREFBaUQ7UUFDakQsNkRBQTZEO1FBQzdETCxlQUFlTSxDQUFBQSxHQUFBQSxhQUFBQSwrQkFBQUEsRUFBZ0NILENBQUFBLEdBQUFBLE9BQUFBLEdBQUFBLEVBQUlJLGlDQUFBQSxtQkFBbUI7SUFDeEU7SUFFQSxJQUFJLElBQTZCLEVBQUU7UUFDakMsSUFBSUU7UUFDSixJQUFJQztRQUVKLE1BQU0sRUFBRUMsNEJBQTRCLEVBQUUsR0FDcENDLG1CQUFPQSxDQUFDLDBHQUFvQztRQUM5Q0gscUJBQXFCRSw2QkFBNkJYO1FBRWxELE1BQU0sRUFBRWEsc0JBQXNCLEVBQUUsR0FDOUJELG1CQUFPQSxDQUFDLDRGQUE2QjtRQUN2Q0YsZUFBZUcsdUJBQXVCWjtRQUV0QyxxQkFBTyxxQkFBQ0gsV0FBQUE7WUFBVUcsUUFBUVM7WUFBY1YsY0FBY1M7O0lBQ3hELE9BQU8sRUFTTjtBQUNIIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL2NsaWVudC9jb21wb25lbnRzL2NsaWVudC1wYWdlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuaW1wb3J0IHR5cGUgeyBQYXJzZWRVcmxRdWVyeSB9IGZyb20gJ3F1ZXJ5c3RyaW5nJ1xuaW1wb3J0IHR5cGUgeyBQYXJhbXMgfSBmcm9tICcuLi8uLi9zZXJ2ZXIvcmVxdWVzdC9wYXJhbXMnXG5pbXBvcnQgeyBMYXlvdXRSb3V0ZXJDb250ZXh0IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgeyB1c2UgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVybFNlYXJjaFBhcmFtc1RvUGFyc2VkVXJsUXVlcnkgfSBmcm9tICcuLi9yb3V0ZS1wYXJhbXMnXG5pbXBvcnQgeyBTZWFyY2hQYXJhbXNDb250ZXh0IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9ob29rcy1jbGllbnQtY29udGV4dC5zaGFyZWQtcnVudGltZSdcblxuLyoqXG4gKiBXaGVuIHRoZSBQYWdlIGlzIGEgY2xpZW50IGNvbXBvbmVudCB3ZSBzZW5kIHRoZSBwYXJhbXMgYW5kIHNlYXJjaFBhcmFtcyB0byB0aGlzIGNsaWVudCB3cmFwcGVyXG4gKiB3aGVyZSB0aGV5IGFyZSB0dXJuZWQgaW50byBkeW5hbWljYWxseSB0cmFja2VkIHZhbHVlcyBiZWZvcmUgYmVpbmcgcGFzc2VkIHRvIHRoZSBhY3R1YWwgUGFnZSBjb21wb25lbnQuXG4gKlxuICogYWRkaXRpb25hbGx5IHdlIG1heSBzZW5kIHByb21pc2VzIHJlcHJlc2VudGluZyB0aGUgcGFyYW1zIGFuZCBzZWFyY2hQYXJhbXMuIFdlIGRvbid0IGV2ZXIgdXNlIHRoZXNlIHBhc3NlZFxuICogdmFsdWVzIGJ1dCBpdCBjYW4gYmUgbmVjZXNzYXJ5IGZvciB0aGUgc2VuZGVyIHRvIHNlbmQgYSBQcm9taXNlIHRoYXQgZG9lc24ndCByZXNvbHZlIGluIGNlcnRhaW4gc2l0dWF0aW9ucy5cbiAqIEl0IGlzIHVwIHRvIHRoZSBjYWxsZXIgdG8gZGVjaWRlIGlmIHRoZSBwcm9taXNlcyBhcmUgbmVlZGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQ2xpZW50UGFnZVJvb3Qoe1xuICBDb21wb25lbnQsXG4gIHNlcnZlclByb3ZpZGVkUGFyYW1zLFxufToge1xuICBDb21wb25lbnQ6IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PlxuICBzZXJ2ZXJQcm92aWRlZFBhcmFtczogbnVsbCB8IHtcbiAgICBzZWFyY2hQYXJhbXM6IFBhcnNlZFVybFF1ZXJ5XG4gICAgcGFyYW1zOiBQYXJhbXNcbiAgICBwcm9taXNlczogQXJyYXk8UHJvbWlzZTxhbnk+PiB8IG51bGxcbiAgfVxufSkge1xuICBsZXQgc2VhcmNoUGFyYW1zOiBQYXJzZWRVcmxRdWVyeVxuICBsZXQgcGFyYW1zOiBQYXJhbXNcbiAgaWYgKHNlcnZlclByb3ZpZGVkUGFyYW1zICE9PSBudWxsKSB7XG4gICAgc2VhcmNoUGFyYW1zID0gc2VydmVyUHJvdmlkZWRQYXJhbXMuc2VhcmNoUGFyYW1zXG4gICAgcGFyYW1zID0gc2VydmVyUHJvdmlkZWRQYXJhbXMucGFyYW1zXG4gIH0gZWxzZSB7XG4gICAgLy8gV2hlbiBDYWNoZSBDb21wb25lbnRzIGlzIGVuYWJsZWQsIHRoZSBzZXJ2ZXIgZG9lcyBub3QgcGFzcyB0aGUgcGFyYW1zIGFzXG4gICAgLy8gcHJvcHM7IHRoZXkgYXJlIHBhcnNlZCBvbiB0aGUgY2xpZW50IGFuZCBwYXNzZWQgdmlhIGNvbnRleHQuXG4gICAgY29uc3QgbGF5b3V0Um91dGVyQ29udGV4dCA9IHVzZShMYXlvdXRSb3V0ZXJDb250ZXh0KVxuICAgIHBhcmFtcyA9XG4gICAgICBsYXlvdXRSb3V0ZXJDb250ZXh0ICE9PSBudWxsID8gbGF5b3V0Um91dGVyQ29udGV4dC5wYXJlbnRQYXJhbXMgOiB7fVxuXG4gICAgLy8gVGhpcyBpcyBhbiBpbnRlbnRpb25hbCBiZWhhdmlvciBjaGFuZ2U6IHdoZW4gQ2FjaGUgQ29tcG9uZW50cyBpcyBlbmFibGVkLFxuICAgIC8vIGNsaWVudCBzZWdtZW50cyByZWNlaXZlIHRoZSBcImNhbm9uaWNhbFwiIHNlYXJjaCBwYXJhbXMsIG5vdCB0aGVcbiAgICAvLyByZXdyaXR0ZW4gb25lcy4gVXNlcnMgc2hvdWxkIGVpdGhlciBjYWxsIHVzZVNlYXJjaFBhcmFtcyBkaXJlY3RseSBvciBwYXNzXG4gICAgLy8gdGhlIHJld3JpdHRlbiBvbmVzIGluIGZyb20gYSBTZXJ2ZXIgQ29tcG9uZW50LlxuICAgIC8vIFRPRE86IExvZyBhIGRlcHJlY2F0aW9uIGVycm9yIHdoZW4gdGhpcyBvYmplY3QgaXMgYWNjZXNzZWRcbiAgICBzZWFyY2hQYXJhbXMgPSB1cmxTZWFyY2hQYXJhbXNUb1BhcnNlZFVybFF1ZXJ5KHVzZShTZWFyY2hQYXJhbXNDb250ZXh0KSEpXG4gIH1cblxuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBsZXQgY2xpZW50U2VhcmNoUGFyYW1zOiBQcm9taXNlPFBhcnNlZFVybFF1ZXJ5PlxuICAgIGxldCBjbGllbnRQYXJhbXM6IFByb21pc2U8UGFyYW1zPlxuXG4gICAgY29uc3QgeyBjcmVhdGVTZWFyY2hQYXJhbXNGcm9tQ2xpZW50IH0gPVxuICAgICAgcmVxdWlyZSgnLi4vLi4vc2VydmVyL3JlcXVlc3Qvc2VhcmNoLXBhcmFtcycpIGFzIHR5cGVvZiBpbXBvcnQoJy4uLy4uL3NlcnZlci9yZXF1ZXN0L3NlYXJjaC1wYXJhbXMnKVxuICAgIGNsaWVudFNlYXJjaFBhcmFtcyA9IGNyZWF0ZVNlYXJjaFBhcmFtc0Zyb21DbGllbnQoc2VhcmNoUGFyYW1zKVxuXG4gICAgY29uc3QgeyBjcmVhdGVQYXJhbXNGcm9tQ2xpZW50IH0gPVxuICAgICAgcmVxdWlyZSgnLi4vLi4vc2VydmVyL3JlcXVlc3QvcGFyYW1zJykgYXMgdHlwZW9mIGltcG9ydCgnLi4vLi4vc2VydmVyL3JlcXVlc3QvcGFyYW1zJylcbiAgICBjbGllbnRQYXJhbXMgPSBjcmVhdGVQYXJhbXNGcm9tQ2xpZW50KHBhcmFtcylcblxuICAgIHJldHVybiA8Q29tcG9uZW50IHBhcmFtcz17Y2xpZW50UGFyYW1zfSBzZWFyY2hQYXJhbXM9e2NsaWVudFNlYXJjaFBhcmFtc30gLz5cbiAgfSBlbHNlIHtcbiAgICBjb25zdCB7IGNyZWF0ZVJlbmRlclNlYXJjaFBhcmFtc0Zyb21DbGllbnQgfSA9XG4gICAgICByZXF1aXJlKCcuLi9yZXF1ZXN0L3NlYXJjaC1wYXJhbXMuYnJvd3NlcicpIGFzIHR5cGVvZiBpbXBvcnQoJy4uL3JlcXVlc3Qvc2VhcmNoLXBhcmFtcy5icm93c2VyJylcbiAgICBjb25zdCBjbGllbnRTZWFyY2hQYXJhbXMgPSBjcmVhdGVSZW5kZXJTZWFyY2hQYXJhbXNGcm9tQ2xpZW50KHNlYXJjaFBhcmFtcylcbiAgICBjb25zdCB7IGNyZWF0ZVJlbmRlclBhcmFtc0Zyb21DbGllbnQgfSA9XG4gICAgICByZXF1aXJlKCcuLi9yZXF1ZXN0L3BhcmFtcy5icm93c2VyJykgYXMgdHlwZW9mIGltcG9ydCgnLi4vcmVxdWVzdC9wYXJhbXMuYnJvd3NlcicpXG4gICAgY29uc3QgY2xpZW50UGFyYW1zID0gY3JlYXRlUmVuZGVyUGFyYW1zRnJvbUNsaWVudChwYXJhbXMpXG5cbiAgICByZXR1cm4gPENvbXBvbmVudCBwYXJhbXM9e2NsaWVudFBhcmFtc30gc2VhcmNoUGFyYW1zPXtjbGllbnRTZWFyY2hQYXJhbXN9IC8+XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJDbGllbnRQYWdlUm9vdCIsIkNvbXBvbmVudCIsInNlcnZlclByb3ZpZGVkUGFyYW1zIiwic2VhcmNoUGFyYW1zIiwicGFyYW1zIiwibGF5b3V0Um91dGVyQ29udGV4dCIsInVzZSIsIkxheW91dFJvdXRlckNvbnRleHQiLCJwYXJlbnRQYXJhbXMiLCJ1cmxTZWFyY2hQYXJhbXNUb1BhcnNlZFVybFF1ZXJ5IiwiU2VhcmNoUGFyYW1zQ29udGV4dCIsIndpbmRvdyIsImNsaWVudFNlYXJjaFBhcmFtcyIsImNsaWVudFBhcmFtcyIsImNyZWF0ZVNlYXJjaFBhcmFtc0Zyb21DbGllbnQiLCJyZXF1aXJlIiwiY3JlYXRlUGFyYW1zRnJvbUNsaWVudCIsImNyZWF0ZVJlbmRlclNlYXJjaFBhcmFtc0Zyb21DbGllbnQiLCJjcmVhdGVSZW5kZXJQYXJhbXNGcm9tQ2xpZW50Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/client-page.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/client-segment.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/client-segment.js ***!
|
||
\********************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"ClientSegmentRoot\", ({\n enumerable: true,\n get: function() {\n return ClientSegmentRoot;\n }\n}));\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../shared/lib/app-router-context.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js\");\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nfunction ClientSegmentRoot({ Component, slots, serverProvidedParams }) {\n let params;\n if (serverProvidedParams !== null) {\n params = serverProvidedParams.params;\n } else {\n // When Cache Components is enabled, the server does not pass the params\n // as props; they are parsed on the client and passed via context.\n const layoutRouterContext = (0, _react.use)(_approutercontextsharedruntime.LayoutRouterContext);\n params = layoutRouterContext !== null ? layoutRouterContext.parentParams : {};\n }\n if (true) {\n const { createParamsFromClient } = __webpack_require__(/*! ../../server/request/params */ \"(ssr)/./node_modules/next/dist/server/request/params.js\");\n const clientParams = createParamsFromClient(params);\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(Component, {\n ...slots,\n params: clientParams\n });\n } else {}\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=client-segment.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2NsaWVudC1zZWdtZW50LmpzIiwibWFwcGluZ3MiOiI7Ozs7cURBY2dCQTs7O2VBQUFBOzs7OzJEQVhvQjttQ0FDaEI7QUFVYixTQUFTQSxrQkFBa0IsRUFDaENDLFNBQVMsRUFDVEMsS0FBSyxFQUNMQyxvQkFBb0IsRUFRckI7SUFDQyxJQUFJQztJQUNKLElBQUlELHlCQUF5QixNQUFNO1FBQ2pDQyxTQUFTRCxxQkFBcUJDLE1BQU07SUFDdEMsT0FBTztRQUNMLHdFQUF3RTtRQUN4RSxrRUFBa0U7UUFDbEUsTUFBTUMsc0JBQXNCQyxDQUFBQSxHQUFBQSxPQUFBQSxHQUFBQSxFQUFJQywrQkFBQUEsbUJBQW1CO1FBQ25ESCxTQUNFQyx3QkFBd0IsT0FBT0Esb0JBQW9CRyxZQUFZLEdBQUcsQ0FBQztJQUN2RTtJQUVBLElBQUksSUFBNkIsRUFBRTtRQUNqQyxNQUFNLEVBQUVFLHNCQUFzQixFQUFFLEdBQzlCQyxtQkFBT0EsQ0FBQyw0RkFBNkI7UUFDdkMsTUFBTUMsZUFBZ0NGLHVCQUF1Qk47UUFFN0QscUJBQU8scUJBQUNILFdBQUFBO1lBQVcsR0FBR0MsS0FBSztZQUFFRSxRQUFRUTs7SUFDdkMsT0FBTyxFQUtOO0FBQ0giLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9zcmMvY2xpZW50L2NvbXBvbmVudHMvY2xpZW50LXNlZ21lbnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgdHlwZSB7IFBhcmFtcyB9IGZyb20gJy4uLy4uL3NlcnZlci9yZXF1ZXN0L3BhcmFtcydcbmltcG9ydCB7IExheW91dFJvdXRlckNvbnRleHQgfSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB7IHVzZSB9IGZyb20gJ3JlYWN0J1xuXG4vKipcbiAqIFdoZW4gdGhlIFBhZ2UgaXMgYSBjbGllbnQgY29tcG9uZW50IHdlIHNlbmQgdGhlIHBhcmFtcyB0byB0aGlzIGNsaWVudCB3cmFwcGVyXG4gKiB3aGVyZSB0aGV5IGFyZSB0dXJuZWQgaW50byBkeW5hbWljYWxseSB0cmFja2VkIHZhbHVlcyBiZWZvcmUgYmVpbmcgcGFzc2VkIHRvIHRoZSBhY3R1YWwgU2VnbWVudCBjb21wb25lbnQuXG4gKlxuICogYWRkaXRpb25hbGx5IHdlIG1heSBzZW5kIGEgcHJvbWlzZSByZXByZXNlbnRpbmcgcGFyYW1zLiBXZSBkb24ndCBldmVyIHVzZSB0aGlzIHBhc3NlZFxuICogdmFsdWUgYnV0IGl0IGNhbiBiZSBuZWNlc3NhcnkgZm9yIHRoZSBzZW5kZXIgdG8gc2VuZCBhIFByb21pc2UgdGhhdCBkb2Vzbid0IHJlc29sdmUgaW4gY2VydGFpbiBzaXR1YXRpb25zXG4gKiBzdWNoIGFzIHdoZW4gY2FjaGVDb21wb25lbnRzIGlzIGVuYWJsZWQuIEl0IGlzIHVwIHRvIHRoZSBjYWxsZXIgdG8gZGVjaWRlIGlmIHRoZSBwcm9taXNlcyBhcmUgbmVlZGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQ2xpZW50U2VnbWVudFJvb3Qoe1xuICBDb21wb25lbnQsXG4gIHNsb3RzLFxuICBzZXJ2ZXJQcm92aWRlZFBhcmFtcyxcbn06IHtcbiAgQ29tcG9uZW50OiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT5cbiAgc2xvdHM6IHsgW2tleTogc3RyaW5nXTogUmVhY3QuUmVhY3ROb2RlIH1cbiAgc2VydmVyUHJvdmlkZWRQYXJhbXM6IG51bGwgfCB7XG4gICAgcGFyYW1zOiBQYXJhbXNcbiAgICBwcm9taXNlczogQXJyYXk8UHJvbWlzZTxhbnk+PiB8IG51bGxcbiAgfVxufSkge1xuICBsZXQgcGFyYW1zOiBQYXJhbXNcbiAgaWYgKHNlcnZlclByb3ZpZGVkUGFyYW1zICE9PSBudWxsKSB7XG4gICAgcGFyYW1zID0gc2VydmVyUHJvdmlkZWRQYXJhbXMucGFyYW1zXG4gIH0gZWxzZSB7XG4gICAgLy8gV2hlbiBDYWNoZSBDb21wb25lbnRzIGlzIGVuYWJsZWQsIHRoZSBzZXJ2ZXIgZG9lcyBub3QgcGFzcyB0aGUgcGFyYW1zXG4gICAgLy8gYXMgcHJvcHM7IHRoZXkgYXJlIHBhcnNlZCBvbiB0aGUgY2xpZW50IGFuZCBwYXNzZWQgdmlhIGNvbnRleHQuXG4gICAgY29uc3QgbGF5b3V0Um91dGVyQ29udGV4dCA9IHVzZShMYXlvdXRSb3V0ZXJDb250ZXh0KVxuICAgIHBhcmFtcyA9XG4gICAgICBsYXlvdXRSb3V0ZXJDb250ZXh0ICE9PSBudWxsID8gbGF5b3V0Um91dGVyQ29udGV4dC5wYXJlbnRQYXJhbXMgOiB7fVxuICB9XG5cbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgY29uc3QgeyBjcmVhdGVQYXJhbXNGcm9tQ2xpZW50IH0gPVxuICAgICAgcmVxdWlyZSgnLi4vLi4vc2VydmVyL3JlcXVlc3QvcGFyYW1zJykgYXMgdHlwZW9mIGltcG9ydCgnLi4vLi4vc2VydmVyL3JlcXVlc3QvcGFyYW1zJylcbiAgICBjb25zdCBjbGllbnRQYXJhbXM6IFByb21pc2U8UGFyYW1zPiA9IGNyZWF0ZVBhcmFtc0Zyb21DbGllbnQocGFyYW1zKVxuXG4gICAgcmV0dXJuIDxDb21wb25lbnQgey4uLnNsb3RzfSBwYXJhbXM9e2NsaWVudFBhcmFtc30gLz5cbiAgfSBlbHNlIHtcbiAgICBjb25zdCB7IGNyZWF0ZVJlbmRlclBhcmFtc0Zyb21DbGllbnQgfSA9XG4gICAgICByZXF1aXJlKCcuLi9yZXF1ZXN0L3BhcmFtcy5icm93c2VyJykgYXMgdHlwZW9mIGltcG9ydCgnLi4vcmVxdWVzdC9wYXJhbXMuYnJvd3NlcicpXG4gICAgY29uc3QgY2xpZW50UGFyYW1zID0gY3JlYXRlUmVuZGVyUGFyYW1zRnJvbUNsaWVudChwYXJhbXMpXG4gICAgcmV0dXJuIDxDb21wb25lbnQgey4uLnNsb3RzfSBwYXJhbXM9e2NsaWVudFBhcmFtc30gLz5cbiAgfVxufVxuIl0sIm5hbWVzIjpbIkNsaWVudFNlZ21lbnRSb290IiwiQ29tcG9uZW50Iiwic2xvdHMiLCJzZXJ2ZXJQcm92aWRlZFBhcmFtcyIsInBhcmFtcyIsImxheW91dFJvdXRlckNvbnRleHQiLCJ1c2UiLCJMYXlvdXRSb3V0ZXJDb250ZXh0IiwicGFyZW50UGFyYW1zIiwid2luZG93IiwiY3JlYXRlUGFyYW1zRnJvbUNsaWVudCIsInJlcXVpcmUiLCJjbGllbnRQYXJhbXMiLCJjcmVhdGVSZW5kZXJQYXJhbXNGcm9tQ2xpZW50Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/client-segment.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/error-boundary.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/error-boundary.js ***!
|
||
\********************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n ErrorBoundary: function() {\n return ErrorBoundary;\n },\n ErrorBoundaryHandler: function() {\n return ErrorBoundaryHandler;\n }\n});\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\"));\nconst _navigationuntracked = __webpack_require__(/*! ./navigation-untracked */ \"(ssr)/./node_modules/next/dist/client/components/navigation-untracked.js\");\nconst _isnextroutererror = __webpack_require__(/*! ./is-next-router-error */ \"(ssr)/./node_modules/next/dist/client/components/is-next-router-error.js\");\nconst _navfailurehandler = __webpack_require__(/*! ./nav-failure-handler */ \"(ssr)/./node_modules/next/dist/client/components/nav-failure-handler.js\");\nconst _handleisrerror = __webpack_require__(/*! ./handle-isr-error */ \"(ssr)/./node_modules/next/dist/client/components/handle-isr-error.js\");\nconst _isbot = __webpack_require__(/*! ../../shared/lib/router/utils/is-bot */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/is-bot.js\");\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../shared/lib/app-router-context.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js\");\nconst isBotUserAgent = false && 0;\nclass ErrorBoundaryHandler extends _react.default.Component {\n static{\n this.contextType = _approutercontextsharedruntime.AppRouterContext;\n }\n constructor(props){\n super(props), this.reset = ()=>{\n this.setState({\n error: null\n });\n }, this.unstable_retry = ()=>{\n (0, _react.startTransition)(()=>{\n this.context?.refresh();\n this.reset();\n });\n };\n this.state = {\n error: null,\n previousPathname: this.props.pathname\n };\n }\n static getDerivedStateFromError(error) {\n if ((0, _isnextroutererror.isNextRouterError)(error)) {\n // Re-throw if an expected internal Next.js router error occurs\n // this means it should be handled by a different boundary (such as a NotFound boundary in a parent segment)\n throw error;\n }\n return {\n error\n };\n }\n static getDerivedStateFromProps(props, state) {\n const { error } = state;\n // if we encounter an error while\n // a navigation is pending we shouldn't render\n // the error boundary and instead should fallback\n // to a hard navigation to attempt recovering\n if (false) {}\n /**\n * Handles reset of the error boundary when a navigation happens.\n * Ensures the error boundary does not stay enabled when navigating to a new page.\n * Approach of setState in render is safe as it checks the previous pathname and then overrides\n * it as outlined in https://react.dev/reference/react/useState#storing-information-from-previous-renders\n */ if (props.pathname !== state.previousPathname && state.error) {\n return {\n error: null,\n previousPathname: props.pathname\n };\n }\n return {\n error: state.error,\n previousPathname: props.pathname\n };\n }\n // Explicit type is needed to avoid the generated `.d.ts` having a wide return type that could be specific to the `@types/react` version.\n render() {\n //When it's bot request, segment level error boundary will keep rendering the children,\n // the final error will be caught by the root error boundary and determine wether need to apply graceful degrade.\n if (this.state.error && !isBotUserAgent) {\n (0, _handleisrerror.handleISRError)({\n error: this.state.error\n });\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\n children: [\n this.props.errorStyles,\n this.props.errorScripts,\n /*#__PURE__*/ (0, _jsxruntime.jsx)(this.props.errorComponent, {\n error: this.state.error,\n reset: this.reset,\n unstable_retry: this.unstable_retry\n })\n ]\n });\n }\n return this.props.children;\n }\n}\nfunction ErrorBoundary({ errorComponent, errorStyles, errorScripts, children }) {\n // When we're rendering the missing params shell, this will return null. This\n // is because we won't be rendering any not found boundaries or error\n // boundaries for the missing params shell. When this runs on the client\n // (where these errors can occur), we will get the correct pathname.\n const pathname = (0, _navigationuntracked.useUntrackedPathname)();\n if (errorComponent) {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(ErrorBoundaryHandler, {\n pathname: pathname,\n errorComponent: errorComponent,\n errorStyles: errorStyles,\n errorScripts: errorScripts,\n children: children\n });\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_jsxruntime.Fragment, {\n children: children\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=error-boundary.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2Vycm9yLWJvdW5kYXJ5LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQW9KZ0JBLGFBQWE7ZUFBYkE7O0lBM0dIQyxvQkFBb0I7ZUFBcEJBOzs7Ozs2RUF2Q29DO2lEQUNaOytDQUNIOytDQUNDOzRDQUNKO21DQUNUOzJEQUlmO0FBRVAsTUFBTUMsaUJBQ0osTUFBNkIsSUFBSUUsQ0FBaUM7QUEyQjdELE1BQU1ILDZCQUE2Qk0sT0FBQUEsT0FBSyxDQUFDQyxTQUFTOzthQUloREMsV0FBQUEsR0FBY0MsK0JBQUFBLGdCQUFnQjs7SUFHckNDLFlBQVlDLEtBQWdDLENBQUU7UUFDNUMsS0FBSyxDQUFDQSxRQUFBQSxJQUFBQSxDQXVEUkMsS0FBQUEsR0FBUTtZQUNOLElBQUksQ0FBQ0MsUUFBUSxDQUFDO2dCQUFFQyxPQUFPO1lBQUs7UUFDOUIsUUFFQUMsY0FBQUEsR0FBaUI7WUFDZkMsQ0FBQUEsR0FBQUEsT0FBQUEsZUFBQUEsRUFBZ0I7Z0JBQ2QsSUFBSSxDQUFDQyxPQUFPLEVBQUVDO2dCQUNkLElBQUksQ0FBQ04sS0FBSztZQUNaO1FBQ0Y7UUEvREUsSUFBSSxDQUFDTyxLQUFLLEdBQUc7WUFDWEwsT0FBTztZQUNQTSxrQkFBa0IsSUFBSSxDQUFDVCxLQUFLLENBQUNVLFFBQVE7UUFDdkM7SUFDRjtJQUVBLE9BQU9DLHlCQUF5QlIsS0FBWSxFQUFFO1FBQzVDLElBQUlTLENBQUFBLEdBQUFBLG1CQUFBQSxpQkFBQUEsRUFBa0JULFFBQVE7WUFDNUIsK0RBQStEO1lBQy9ELDRHQUE0RztZQUM1RyxNQUFNQTtRQUNSO1FBRUEsT0FBTztZQUFFQTtRQUFNO0lBQ2pCO0lBRUEsT0FBT1UseUJBQ0xiLEtBQWdDLEVBQ2hDUSxLQUFnQyxFQUNFO1FBQ2xDLE1BQU0sRUFBRUwsS0FBSyxFQUFFLEdBQUdLO1FBRWxCLGlDQUFpQztRQUNqQyw4Q0FBOEM7UUFDOUMsaURBQWlEO1FBQ2pELDZDQUE2QztRQUM3QyxJQUFJTSxLQUF3QyxFQUFFLEVBUTdDO1FBRUQ7Ozs7O0tBS0MsR0FDRCxJQUFJZCxNQUFNVSxRQUFRLEtBQUtGLE1BQU1DLGdCQUFnQixJQUFJRCxNQUFNTCxLQUFLLEVBQUU7WUFDNUQsT0FBTztnQkFDTEEsT0FBTztnQkFDUE0sa0JBQWtCVCxNQUFNVSxRQUFRO1lBQ2xDO1FBQ0Y7UUFDQSxPQUFPO1lBQ0xQLE9BQU9LLE1BQU1MLEtBQUs7WUFDbEJNLGtCQUFrQlQsTUFBTVUsUUFBUTtRQUNsQztJQUNGO0lBYUEseUlBQXlJO0lBQ3pJUSxTQUEwQjtRQUN4Qix1RkFBdUY7UUFDdkYsaUhBQWlIO1FBQ2pILElBQUksSUFBSSxDQUFDVixLQUFLLENBQUNMLEtBQUssSUFBSSxDQUFDYixnQkFBZ0I7WUFDdkM2QixDQUFBQSxHQUFBQSxnQkFBQUEsY0FBQUEsRUFBZTtnQkFBRWhCLE9BQU8sSUFBSSxDQUFDSyxLQUFLLENBQUNMLEtBQUs7WUFBQztZQUV6QyxxQkFDRTs7b0JBQ0csSUFBSSxDQUFDSCxLQUFLLENBQUNvQixXQUFXO29CQUN0QixJQUFJLENBQUNwQixLQUFLLENBQUNxQixZQUFZO2tDQUN4QixxQkFBQ0MsSUFBSSxDQUFDdEIsS0FBSyxDQUFDdUIsY0FBYzt3QkFDeEJwQixPQUFPLElBQUksQ0FBQ0ssS0FBSyxDQUFDTCxLQUFLO3dCQUN2QkYsT0FBTyxJQUFJLENBQUNBLEtBQUs7d0JBQ2pCRyxnQkFBZ0IsSUFBSSxDQUFDQSxjQUFjOzs7O1FBSTNDO1FBRUEsT0FBTyxJQUFJLENBQUNKLEtBQUssQ0FBQ3dCLFFBQVE7SUFDNUI7QUFDRjtBQVdPLFNBQVNwQyxjQUFjLEVBQzVCbUMsY0FBYyxFQUNkSCxXQUFXLEVBQ1hDLFlBQVksRUFDWkcsUUFBUSxFQUdUO0lBQ0MsNkVBQTZFO0lBQzdFLHFFQUFxRTtJQUNyRSx3RUFBd0U7SUFDeEUsb0VBQW9FO0lBQ3BFLE1BQU1kLFdBQVdlLENBQUFBLEdBQUFBLHFCQUFBQSxvQkFBQUE7SUFFakIsSUFBSUYsZ0JBQWdCO1FBQ2xCLE9BQ0UsV0FERixHQUNFLHFCQUFDbEMsc0JBQUFBO1lBQ0NxQixVQUFVQTtZQUNWYSxnQkFBZ0JBO1lBQ2hCSCxhQUFhQTtZQUNiQyxjQUFjQTtzQkFFYkc7O0lBR1A7SUFFQSxxQkFBTztrQkFBR0E7O0FBQ1oiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9zcmMvY2xpZW50L2NvbXBvbmVudHMvZXJyb3ItYm91bmRhcnkudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgUmVhY3QsIHsgc3RhcnRUcmFuc2l0aW9uLCB0eXBlIEpTWCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVW50cmFja2VkUGF0aG5hbWUgfSBmcm9tICcuL25hdmlnYXRpb24tdW50cmFja2VkJ1xuaW1wb3J0IHsgaXNOZXh0Um91dGVyRXJyb3IgfSBmcm9tICcuL2lzLW5leHQtcm91dGVyLWVycm9yJ1xuaW1wb3J0IHsgaGFuZGxlSGFyZE5hdkVycm9yIH0gZnJvbSAnLi9uYXYtZmFpbHVyZS1oYW5kbGVyJ1xuaW1wb3J0IHsgaGFuZGxlSVNSRXJyb3IgfSBmcm9tICcuL2hhbmRsZS1pc3ItZXJyb3InXG5pbXBvcnQgeyBpc0JvdCB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2lzLWJvdCdcbmltcG9ydCB7XG4gIEFwcFJvdXRlckNvbnRleHQsXG4gIHR5cGUgQXBwUm91dGVySW5zdGFuY2UsXG59IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuXG5jb25zdCBpc0JvdFVzZXJBZ2VudCA9XG4gIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIGlzQm90KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KVxuXG5leHBvcnQgdHlwZSBFcnJvckluZm8gPSB7XG4gIGVycm9yOiBFcnJvclxuICByZXNldDogKCkgPT4gdm9pZFxuICB1bnN0YWJsZV9yZXRyeTogKCkgPT4gdm9pZFxufVxuXG5leHBvcnQgdHlwZSBFcnJvckNvbXBvbmVudCA9IFJlYWN0LkNvbXBvbmVudFR5cGU8RXJyb3JJbmZvPlxuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yQm91bmRhcnlQcm9wcyB7XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlXG4gIGVycm9yQ29tcG9uZW50OiBFcnJvckNvbXBvbmVudCB8IHVuZGVmaW5lZFxuICBlcnJvclN0eWxlcz86IFJlYWN0LlJlYWN0Tm9kZSB8IHVuZGVmaW5lZFxuICBlcnJvclNjcmlwdHM/OiBSZWFjdC5SZWFjdE5vZGUgfCB1bmRlZmluZWRcbn1cblxuaW50ZXJmYWNlIEVycm9yQm91bmRhcnlIYW5kbGVyUHJvcHMgZXh0ZW5kcyBFcnJvckJvdW5kYXJ5UHJvcHMge1xuICBwYXRobmFtZTogc3RyaW5nIHwgbnVsbFxuICBlcnJvckNvbXBvbmVudDogRXJyb3JDb21wb25lbnRcbn1cblxuaW50ZXJmYWNlIEVycm9yQm91bmRhcnlIYW5kbGVyU3RhdGUge1xuICBlcnJvcjogRXJyb3IgfCBudWxsXG4gIHByZXZpb3VzUGF0aG5hbWU6IHN0cmluZyB8IG51bGxcbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yQm91bmRhcnlIYW5kbGVyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFxuICBFcnJvckJvdW5kYXJ5SGFuZGxlclByb3BzLFxuICBFcnJvckJvdW5kYXJ5SGFuZGxlclN0YXRlXG4+IHtcbiAgc3RhdGljIGNvbnRleHRUeXBlID0gQXBwUm91dGVyQ29udGV4dFxuICBkZWNsYXJlIGNvbnRleHQ6IEFwcFJvdXRlckluc3RhbmNlIHwgbnVsbFxuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBFcnJvckJvdW5kYXJ5SGFuZGxlclByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgcHJldmlvdXNQYXRobmFtZTogdGhpcy5wcm9wcy5wYXRobmFtZSxcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKGVycm9yOiBFcnJvcikge1xuICAgIGlmIChpc05leHRSb3V0ZXJFcnJvcihlcnJvcikpIHtcbiAgICAgIC8vIFJlLXRocm93IGlmIGFuIGV4cGVjdGVkIGludGVybmFsIE5leHQuanMgcm91dGVyIGVycm9yIG9jY3Vyc1xuICAgICAgLy8gdGhpcyBtZWFucyBpdCBzaG91bGQgYmUgaGFuZGxlZCBieSBhIGRpZmZlcmVudCBib3VuZGFyeSAoc3VjaCBhcyBhIE5vdEZvdW5kIGJvdW5kYXJ5IGluIGEgcGFyZW50IHNlZ21lbnQpXG4gICAgICB0aHJvdyBlcnJvclxuICAgIH1cblxuICAgIHJldHVybiB7IGVycm9yIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoXG4gICAgcHJvcHM6IEVycm9yQm91bmRhcnlIYW5kbGVyUHJvcHMsXG4gICAgc3RhdGU6IEVycm9yQm91bmRhcnlIYW5kbGVyU3RhdGVcbiAgKTogRXJyb3JCb3VuZGFyeUhhbmRsZXJTdGF0ZSB8IG51bGwge1xuICAgIGNvbnN0IHsgZXJyb3IgfSA9IHN0YXRlXG5cbiAgICAvLyBpZiB3ZSBlbmNvdW50ZXIgYW4gZXJyb3Igd2hpbGVcbiAgICAvLyBhIG5hdmlnYXRpb24gaXMgcGVuZGluZyB3ZSBzaG91bGRuJ3QgcmVuZGVyXG4gICAgLy8gdGhlIGVycm9yIGJvdW5kYXJ5IGFuZCBpbnN0ZWFkIHNob3VsZCBmYWxsYmFja1xuICAgIC8vIHRvIGEgaGFyZCBuYXZpZ2F0aW9uIHRvIGF0dGVtcHQgcmVjb3ZlcmluZ1xuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfQVBQX05BVl9GQUlMX0hBTkRMSU5HKSB7XG4gICAgICBpZiAoZXJyb3IgJiYgaGFuZGxlSGFyZE5hdkVycm9yKGVycm9yKSkge1xuICAgICAgICAvLyBjbGVhciBlcnJvciBzbyB3ZSBkb24ndCByZW5kZXIgYW55dGhpbmdcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgICBwcmV2aW91c1BhdGhuYW1lOiBwcm9wcy5wYXRobmFtZSxcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgcmVzZXQgb2YgdGhlIGVycm9yIGJvdW5kYXJ5IHdoZW4gYSBuYXZpZ2F0aW9uIGhhcHBlbnMuXG4gICAgICogRW5zdXJlcyB0aGUgZXJyb3IgYm91bmRhcnkgZG9lcyBub3Qgc3RheSBlbmFibGVkIHdoZW4gbmF2aWdhdGluZyB0byBhIG5ldyBwYWdlLlxuICAgICAqIEFwcHJvYWNoIG9mIHNldFN0YXRlIGluIHJlbmRlciBpcyBzYWZlIGFzIGl0IGNoZWNrcyB0aGUgcHJldmlvdXMgcGF0aG5hbWUgYW5kIHRoZW4gb3ZlcnJpZGVzXG4gICAgICogaXQgYXMgb3V0bGluZWQgaW4gaHR0cHM6Ly9yZWFjdC5kZXYvcmVmZXJlbmNlL3JlYWN0L3VzZVN0YXRlI3N0b3JpbmctaW5mb3JtYXRpb24tZnJvbS1wcmV2aW91cy1yZW5kZXJzXG4gICAgICovXG4gICAgaWYgKHByb3BzLnBhdGhuYW1lICE9PSBzdGF0ZS5wcmV2aW91c1BhdGhuYW1lICYmIHN0YXRlLmVycm9yKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgcHJldmlvdXNQYXRobmFtZTogcHJvcHMucGF0aG5hbWUsXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBlcnJvcjogc3RhdGUuZXJyb3IsXG4gICAgICBwcmV2aW91c1BhdGhuYW1lOiBwcm9wcy5wYXRobmFtZSxcbiAgICB9XG4gIH1cblxuICByZXNldCA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHsgZXJyb3I6IG51bGwgfSlcbiAgfVxuXG4gIHVuc3RhYmxlX3JldHJ5ID0gKCkgPT4ge1xuICAgIHN0YXJ0VHJhbnNpdGlvbigoKSA9PiB7XG4gICAgICB0aGlzLmNvbnRleHQ/LnJlZnJlc2goKVxuICAgICAgdGhpcy5yZXNldCgpXG4gICAgfSlcbiAgfVxuXG4gIC8vIEV4cGxpY2l0IHR5cGUgaXMgbmVlZGVkIHRvIGF2b2lkIHRoZSBnZW5lcmF0ZWQgYC5kLnRzYCBoYXZpbmcgYSB3aWRlIHJldHVybiB0eXBlIHRoYXQgY291bGQgYmUgc3BlY2lmaWMgdG8gdGhlIGBAdHlwZXMvcmVhY3RgIHZlcnNpb24uXG4gIHJlbmRlcigpOiBSZWFjdC5SZWFjdE5vZGUge1xuICAgIC8vV2hlbiBpdCdzIGJvdCByZXF1ZXN0LCBzZWdtZW50IGxldmVsIGVycm9yIGJvdW5kYXJ5IHdpbGwga2VlcCByZW5kZXJpbmcgdGhlIGNoaWxkcmVuLFxuICAgIC8vIHRoZSBmaW5hbCBlcnJvciB3aWxsIGJlIGNhdWdodCBieSB0aGUgcm9vdCBlcnJvciBib3VuZGFyeSBhbmQgZGV0ZXJtaW5lIHdldGhlciBuZWVkIHRvIGFwcGx5IGdyYWNlZnVsIGRlZ3JhZGUuXG4gICAgaWYgKHRoaXMuc3RhdGUuZXJyb3IgJiYgIWlzQm90VXNlckFnZW50KSB7XG4gICAgICBoYW5kbGVJU1JFcnJvcih7IGVycm9yOiB0aGlzLnN0YXRlLmVycm9yIH0pXG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3RoaXMucHJvcHMuZXJyb3JTdHlsZXN9XG4gICAgICAgICAge3RoaXMucHJvcHMuZXJyb3JTY3JpcHRzfVxuICAgICAgICAgIDx0aGlzLnByb3BzLmVycm9yQ29tcG9uZW50XG4gICAgICAgICAgICBlcnJvcj17dGhpcy5zdGF0ZS5lcnJvcn1cbiAgICAgICAgICAgIHJlc2V0PXt0aGlzLnJlc2V0fVxuICAgICAgICAgICAgdW5zdGFibGVfcmV0cnk9e3RoaXMudW5zdGFibGVfcmV0cnl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC8+XG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW5cbiAgfVxufVxuXG4vKipcbiAqIEhhbmRsZXMgZXJyb3JzIHRocm91Z2ggYGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcmAuXG4gKiBSZW5kZXJzIHRoZSBwcm92aWRlZCBlcnJvciBjb21wb25lbnQgYW5kIHByb3ZpZGVzIGEgd2F5IHRvIGByZXNldGAgdGhlIGVycm9yIGJvdW5kYXJ5IHN0YXRlLlxuICovXG5cbi8qKlxuICogUmVuZGVycyBlcnJvciBib3VuZGFyeSB3aXRoIHRoZSBwcm92aWRlZCBcImVycm9yQ29tcG9uZW50XCIgcHJvcGVydHkgYXMgdGhlIGZhbGxiYWNrLlxuICogSWYgbm8gXCJlcnJvckNvbXBvbmVudFwiIHByb3BlcnR5IGlzIHByb3ZpZGVkIGl0IHJlbmRlcnMgdGhlIGNoaWxkcmVuIHdpdGhvdXQgYW4gZXJyb3IgYm91bmRhcnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFcnJvckJvdW5kYXJ5KHtcbiAgZXJyb3JDb21wb25lbnQsXG4gIGVycm9yU3R5bGVzLFxuICBlcnJvclNjcmlwdHMsXG4gIGNoaWxkcmVuLFxufTogRXJyb3JCb3VuZGFyeVByb3BzICYge1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlXG59KTogSlNYLkVsZW1lbnQge1xuICAvLyBXaGVuIHdlJ3JlIHJlbmRlcmluZyB0aGUgbWlzc2luZyBwYXJhbXMgc2hlbGwsIHRoaXMgd2lsbCByZXR1cm4gbnVsbC4gVGhpc1xuICAvLyBpcyBiZWNhdXNlIHdlIHdvbid0IGJlIHJlbmRlcmluZyBhbnkgbm90IGZvdW5kIGJvdW5kYXJpZXMgb3IgZXJyb3JcbiAgLy8gYm91bmRhcmllcyBmb3IgdGhlIG1pc3NpbmcgcGFyYW1zIHNoZWxsLiBXaGVuIHRoaXMgcnVucyBvbiB0aGUgY2xpZW50XG4gIC8vICh3aGVyZSB0aGVzZSBlcnJvcnMgY2FuIG9jY3VyKSwgd2Ugd2lsbCBnZXQgdGhlIGNvcnJlY3QgcGF0aG5hbWUuXG4gIGNvbnN0IHBhdGhuYW1lID0gdXNlVW50cmFja2VkUGF0aG5hbWUoKVxuXG4gIGlmIChlcnJvckNvbXBvbmVudCkge1xuICAgIHJldHVybiAoXG4gICAgICA8RXJyb3JCb3VuZGFyeUhhbmRsZXJcbiAgICAgICAgcGF0aG5hbWU9e3BhdGhuYW1lfVxuICAgICAgICBlcnJvckNvbXBvbmVudD17ZXJyb3JDb21wb25lbnR9XG4gICAgICAgIGVycm9yU3R5bGVzPXtlcnJvclN0eWxlc31cbiAgICAgICAgZXJyb3JTY3JpcHRzPXtlcnJvclNjcmlwdHN9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRXJyb3JCb3VuZGFyeUhhbmRsZXI+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIDw+e2NoaWxkcmVufTwvPlxufVxuIl0sIm5hbWVzIjpbIkVycm9yQm91bmRhcnkiLCJFcnJvckJvdW5kYXJ5SGFuZGxlciIsImlzQm90VXNlckFnZW50Iiwid2luZG93IiwiaXNCb3QiLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnRleHRUeXBlIiwiQXBwUm91dGVyQ29udGV4dCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJyZXNldCIsInNldFN0YXRlIiwiZXJyb3IiLCJ1bnN0YWJsZV9yZXRyeSIsInN0YXJ0VHJhbnNpdGlvbiIsImNvbnRleHQiLCJyZWZyZXNoIiwic3RhdGUiLCJwcmV2aW91c1BhdGhuYW1lIiwicGF0aG5hbWUiLCJnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IiLCJpc05leHRSb3V0ZXJFcnJvciIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfQVBQX05BVl9GQUlMX0hBTkRMSU5HIiwiaGFuZGxlSGFyZE5hdkVycm9yIiwicmVuZGVyIiwiaGFuZGxlSVNSRXJyb3IiLCJlcnJvclN0eWxlcyIsImVycm9yU2NyaXB0cyIsInRoaXMiLCJlcnJvckNvbXBvbmVudCIsImNoaWxkcmVuIiwidXNlVW50cmFja2VkUGF0aG5hbWUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/error-boundary.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/forbidden.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/forbidden.js ***!
|
||
\***************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"forbidden\", ({\n enumerable: true,\n get: function() {\n return forbidden;\n }\n}));\nconst _httpaccessfallback = __webpack_require__(/*! ./http-access-fallback/http-access-fallback */ \"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\");\n// TODO: Add `forbidden` docs\n/**\n * @experimental\n * This function allows you to render the [forbidden.js file](https://nextjs.org/docs/app/api-reference/file-conventions/forbidden)\n * within a route segment as well as inject a tag.\n *\n * `forbidden()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * Read more: [Next.js Docs: `forbidden`](https://nextjs.org/docs/app/api-reference/functions/forbidden)\n */ const DIGEST = `${_httpaccessfallback.HTTP_ERROR_FALLBACK_ERROR_CODE};403`;\nfunction forbidden() {\n if (true) {\n throw Object.defineProperty(new Error(`\\`forbidden()\\` is experimental and only allowed to be enabled when \\`experimental.authInterrupts\\` is enabled.`), \"__NEXT_ERROR_CODE\", {\n value: \"E488\",\n enumerable: false,\n configurable: true\n });\n }\n const error = Object.defineProperty(new Error(DIGEST), \"__NEXT_ERROR_CODE\", {\n value: \"E1019\",\n enumerable: false,\n configurable: true\n });\n error.digest = DIGEST;\n throw error;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=forbidden.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2ZvcmJpZGRlbi5qcyIsIm1hcHBpbmdzIjoiOzs7OzZDQXFCZ0JBOzs7ZUFBQUE7OztnREFsQlQ7QUFFUCw2QkFBNkI7QUFDN0I7Ozs7Ozs7Ozs7O0NBV0MsR0FFRCxNQUFNQyxTQUFTLEdBQUdDLG9CQUFBQSw4QkFBOEIsQ0FBQyxJQUFJLENBQUM7QUFFL0MsU0FBU0Y7SUFDZCxJQUFJLElBQWdELEVBQUU7UUFDcEQsTUFBTSxxQkFFTCxDQUZLLElBQUlNLE1BQ1IsQ0FBQywrR0FBK0csQ0FBQyxHQUQ3RzttQkFBQTt3QkFBQTswQkFBQTtRQUVOO0lBQ0Y7SUFFQSxNQUFNQyxRQUFRLHFCQUFpQixDQUFqQixJQUFJRCxNQUFNTCxTQUFWO2VBQUE7b0JBQUE7c0JBQUE7SUFBZ0I7SUFDNUJNLE1BQWtDQyxNQUFNLEdBQUdQO0lBQzdDLE1BQU1NO0FBQ1IiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9zcmMvY2xpZW50L2NvbXBvbmVudHMvZm9yYmlkZGVuLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEhUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERSxcbiAgdHlwZSBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvcixcbn0gZnJvbSAnLi9odHRwLWFjY2Vzcy1mYWxsYmFjay9odHRwLWFjY2Vzcy1mYWxsYmFjaydcblxuLy8gVE9ETzogQWRkIGBmb3JiaWRkZW5gIGRvY3Ncbi8qKlxuICogQGV4cGVyaW1lbnRhbFxuICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIHJlbmRlciB0aGUgW2ZvcmJpZGRlbi5qcyBmaWxlXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9maWxlLWNvbnZlbnRpb25zL2ZvcmJpZGRlbilcbiAqIHdpdGhpbiBhIHJvdXRlIHNlZ21lbnQgYXMgd2VsbCBhcyBpbmplY3QgYSB0YWcuXG4gKlxuICogYGZvcmJpZGRlbigpYCBjYW4gYmUgdXNlZCBpblxuICogW1NlcnZlciBDb21wb25lbnRzXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvc2VydmVyLWNvbXBvbmVudHMpLFxuICogW1JvdXRlIEhhbmRsZXJzXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yb3V0aW5nL3JvdXRlLWhhbmRsZXJzKSwgYW5kXG4gKiBbU2VydmVyIEFjdGlvbnNdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL2RhdGEtZmV0Y2hpbmcvc2VydmVyLWFjdGlvbnMtYW5kLW11dGF0aW9ucykuXG4gKlxuICogUmVhZCBtb3JlOiBbTmV4dC5qcyBEb2NzOiBgZm9yYmlkZGVuYF0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL2ZvcmJpZGRlbilcbiAqL1xuXG5jb25zdCBESUdFU1QgPSBgJHtIVFRQX0VSUk9SX0ZBTExCQUNLX0VSUk9SX0NPREV9OzQwM2BcblxuZXhwb3J0IGZ1bmN0aW9uIGZvcmJpZGRlbigpOiBuZXZlciB7XG4gIGlmICghcHJvY2Vzcy5lbnYuX19ORVhUX0VYUEVSSU1FTlRBTF9BVVRIX0lOVEVSUlVQVFMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgXFxgZm9yYmlkZGVuKClcXGAgaXMgZXhwZXJpbWVudGFsIGFuZCBvbmx5IGFsbG93ZWQgdG8gYmUgZW5hYmxlZCB3aGVuIFxcYGV4cGVyaW1lbnRhbC5hdXRoSW50ZXJydXB0c1xcYCBpcyBlbmFibGVkLmBcbiAgICApXG4gIH1cblxuICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihESUdFU1QpIGFzIEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yXG4gIDsoZXJyb3IgYXMgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3IpLmRpZ2VzdCA9IERJR0VTVFxuICB0aHJvdyBlcnJvclxufVxuIl0sIm5hbWVzIjpbImZvcmJpZGRlbiIsIkRJR0VTVCIsIkhUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERSIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfRVhQRVJJTUVOVEFMX0FVVEhfSU5URVJSVVBUUyIsIkVycm9yIiwiZXJyb3IiLCJkaWdlc3QiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/forbidden.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/handle-isr-error.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/handle-isr-error.js ***!
|
||
\**********************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"handleISRError\", ({\n enumerable: true,\n get: function() {\n return handleISRError;\n }\n}));\nconst workAsyncStorage = true ? (__webpack_require__(/*! ../../server/app-render/work-async-storage.external */ \"../app-render/work-async-storage.external\").workAsyncStorage) : 0;\nfunction handleISRError({ error }) {\n if (workAsyncStorage) {\n const store = workAsyncStorage.getStore();\n if (store?.isStaticGeneration) {\n if (error) {\n console.error(error);\n }\n throw error;\n }\n }\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=handle-isr-error.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2hhbmRsZS1pc3ItZXJyb3IuanMiLCJtYXBwaW5ncyI6Ijs7OztrREFVZ0JBOzs7ZUFBQUE7OztBQVZoQixNQUFNQyxtQkFDSixLQUE2QixHQUV2QkUsOElBQ2dCLEdBQ2xCQyxDQUFTQTtBQUtSLFNBQVNKLGVBQWUsRUFBRUssS0FBSyxFQUFrQjtJQUN0RCxJQUFJSixrQkFBa0I7UUFDcEIsTUFBTUssUUFBUUwsaUJBQWlCTSxRQUFRO1FBQ3ZDLElBQUlELE9BQU9FLG9CQUFvQjtZQUM3QixJQUFJSCxPQUFPO2dCQUNUSSxRQUFRSixLQUFLLENBQUNBO1lBQ2hCO1lBQ0EsTUFBTUE7UUFDUjtJQUNGO0FBQ0YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9zcmMvY2xpZW50L2NvbXBvbmVudHMvaGFuZGxlLWlzci1lcnJvci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgd29ya0FzeW5jU3RvcmFnZSA9XG4gIHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnXG4gICAgPyAoXG4gICAgICAgIHJlcXVpcmUoJy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3dvcmstYXN5bmMtc3RvcmFnZS5leHRlcm5hbCcpIGFzIHR5cGVvZiBpbXBvcnQoJy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3dvcmstYXN5bmMtc3RvcmFnZS5leHRlcm5hbCcpXG4gICAgICApLndvcmtBc3luY1N0b3JhZ2VcbiAgICA6IHVuZGVmaW5lZFxuXG4vLyBpZiB3ZSBhcmUgcmV2YWxpZGF0aW5nIHdlIHdhbnQgdG8gcmUtdGhyb3cgdGhlIGVycm9yIHNvIHRoZVxuLy8gZnVuY3Rpb24gY3Jhc2hlcyBzbyB3ZSBjYW4gbWFpbnRhaW4gb3VyIHByZXZpb3VzIGNhY2hlXG4vLyBpbnN0ZWFkIG9mIGNhY2hpbmcgdGhlIGVycm9yIHBhZ2VcbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVJU1JFcnJvcih7IGVycm9yIH06IHsgZXJyb3I6IGFueSB9KSB7XG4gIGlmICh3b3JrQXN5bmNTdG9yYWdlKSB7XG4gICAgY29uc3Qgc3RvcmUgPSB3b3JrQXN5bmNTdG9yYWdlLmdldFN0b3JlKClcbiAgICBpZiAoc3RvcmU/LmlzU3RhdGljR2VuZXJhdGlvbikge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJvclxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbImhhbmRsZUlTUkVycm9yIiwid29ya0FzeW5jU3RvcmFnZSIsIndpbmRvdyIsInJlcXVpcmUiLCJ1bmRlZmluZWQiLCJlcnJvciIsInN0b3JlIiwiZ2V0U3RvcmUiLCJpc1N0YXRpY0dlbmVyYXRpb24iLCJjb25zb2xlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/handle-isr-error.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/hooks-server-context.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/hooks-server-context.js ***!
|
||
\**************************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n DynamicServerError: function() {\n return DynamicServerError;\n },\n isDynamicServerError: function() {\n return isDynamicServerError;\n }\n});\nconst DYNAMIC_ERROR_CODE = 'DYNAMIC_SERVER_USAGE';\nclass DynamicServerError extends Error {\n constructor(description){\n super(`Dynamic server usage: ${description}`), this.description = description, this.digest = DYNAMIC_ERROR_CODE;\n }\n}\nfunction isDynamicServerError(err) {\n if (typeof err !== 'object' || err === null || !('digest' in err) || typeof err.digest !== 'string') {\n return false;\n }\n return err.digest === DYNAMIC_ERROR_CODE;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=hooks-server-context.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2hvb2tzLXNlcnZlci1jb250ZXh0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUVhQSxrQkFBa0I7ZUFBbEJBOztJQVFHQyxvQkFBb0I7ZUFBcEJBOzs7QUFWaEIsTUFBTUMscUJBQXFCO0FBRXBCLE1BQU1GLDJCQUEyQkc7SUFHdENDLFlBQTRCQyxXQUFtQixDQUFFO1FBQy9DLEtBQUssQ0FBQyxDQUFDLHNCQUFzQixFQUFFQSxhQUFhLFFBRGxCQSxXQUFBQSxHQUFBQSxhQUFBQSxJQUFBQSxDQUY1QkMsTUFBQUEsR0FBb0NKO0lBSXBDO0FBQ0Y7QUFFTyxTQUFTRCxxQkFBcUJNLEdBQVk7SUFDL0MsSUFDRSxPQUFPQSxRQUFRLFlBQ2ZBLFFBQVEsUUFDUixDQUFFLGFBQVlBLEdBQUFBLENBQUUsSUFDaEIsT0FBT0EsSUFBSUQsTUFBTSxLQUFLLFVBQ3RCO1FBQ0EsT0FBTztJQUNUO0lBRUEsT0FBT0MsSUFBSUQsTUFBTSxLQUFLSjtBQUN4QiIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9jbGllbnQvY29tcG9uZW50cy9ob29rcy1zZXJ2ZXItY29udGV4dC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBEWU5BTUlDX0VSUk9SX0NPREUgPSAnRFlOQU1JQ19TRVJWRVJfVVNBR0UnXG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljU2VydmVyRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGRpZ2VzdDogdHlwZW9mIERZTkFNSUNfRVJST1JfQ09ERSA9IERZTkFNSUNfRVJST1JfQ09ERVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gICAgc3VwZXIoYER5bmFtaWMgc2VydmVyIHVzYWdlOiAke2Rlc2NyaXB0aW9ufWApXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRHluYW1pY1NlcnZlckVycm9yKGVycjogdW5rbm93bik6IGVyciBpcyBEeW5hbWljU2VydmVyRXJyb3Ige1xuICBpZiAoXG4gICAgdHlwZW9mIGVyciAhPT0gJ29iamVjdCcgfHxcbiAgICBlcnIgPT09IG51bGwgfHxcbiAgICAhKCdkaWdlc3QnIGluIGVycikgfHxcbiAgICB0eXBlb2YgZXJyLmRpZ2VzdCAhPT0gJ3N0cmluZydcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gZXJyLmRpZ2VzdCA9PT0gRFlOQU1JQ19FUlJPUl9DT0RFXG59XG4iXSwibmFtZXMiOlsiRHluYW1pY1NlcnZlckVycm9yIiwiaXNEeW5hbWljU2VydmVyRXJyb3IiLCJEWU5BTUlDX0VSUk9SX0NPREUiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwiZGVzY3JpcHRpb24iLCJkaWdlc3QiLCJlcnIiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/hooks-server-context.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":
|
||
/*!*****************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js ***!
|
||
\*****************************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"HTTPAccessFallbackBoundary\", ({\n enumerable: true,\n get: function() {\n return HTTPAccessFallbackBoundary;\n }\n}));\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\"));\nconst _navigationuntracked = __webpack_require__(/*! ../navigation-untracked */ \"(ssr)/./node_modules/next/dist/client/components/navigation-untracked.js\");\nconst _httpaccessfallback = __webpack_require__(/*! ./http-access-fallback */ \"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\");\nconst _warnonce = __webpack_require__(/*! ../../../shared/lib/utils/warn-once */ \"(ssr)/./node_modules/next/dist/shared/lib/utils/warn-once.js\");\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../../shared/lib/app-router-context.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js\");\nclass HTTPAccessFallbackErrorBoundary extends _react.default.Component {\n constructor(props){\n super(props);\n this.state = {\n triggeredStatus: undefined,\n previousPathname: props.pathname\n };\n }\n componentDidCatch() {\n if ( true && this.props.missingSlots && this.props.missingSlots.size > 0 && // A missing children slot is the typical not-found case, so no need to warn\n !this.props.missingSlots.has('children')) {\n let warningMessage = 'No default component was found for a parallel route rendered on this page. Falling back to nearest NotFound boundary.\\n' + 'Learn more: https://nextjs.org/docs/app/building-your-application/routing/parallel-routes#defaultjs\\n\\n';\n const formattedSlots = Array.from(this.props.missingSlots).sort((a, b)=>a.localeCompare(b)).map((slot)=>`@${slot}`).join(', ');\n warningMessage += 'Missing slots: ' + formattedSlots;\n (0, _warnonce.warnOnce)(warningMessage);\n }\n }\n static getDerivedStateFromError(error) {\n if ((0, _httpaccessfallback.isHTTPAccessFallbackError)(error)) {\n const httpStatus = (0, _httpaccessfallback.getAccessFallbackHTTPStatus)(error);\n return {\n triggeredStatus: httpStatus\n };\n }\n // Re-throw if error is not for 404\n throw error;\n }\n static getDerivedStateFromProps(props, state) {\n /**\n * Handles reset of the error boundary when a navigation happens.\n * Ensures the error boundary does not stay enabled when navigating to a new page.\n * Approach of setState in render is safe as it checks the previous pathname and then overrides\n * it as outlined in https://react.dev/reference/react/useState#storing-information-from-previous-renders\n */ if (props.pathname !== state.previousPathname && state.triggeredStatus) {\n return {\n triggeredStatus: undefined,\n previousPathname: props.pathname\n };\n }\n return {\n triggeredStatus: state.triggeredStatus,\n previousPathname: props.pathname\n };\n }\n render() {\n const { notFound, forbidden, unauthorized, children } = this.props;\n const { triggeredStatus } = this.state;\n const errorComponents = {\n [_httpaccessfallback.HTTPAccessErrorStatus.NOT_FOUND]: notFound,\n [_httpaccessfallback.HTTPAccessErrorStatus.FORBIDDEN]: forbidden,\n [_httpaccessfallback.HTTPAccessErrorStatus.UNAUTHORIZED]: unauthorized\n };\n if (triggeredStatus) {\n const isNotFound = triggeredStatus === _httpaccessfallback.HTTPAccessErrorStatus.NOT_FOUND && notFound;\n const isForbidden = triggeredStatus === _httpaccessfallback.HTTPAccessErrorStatus.FORBIDDEN && forbidden;\n const isUnauthorized = triggeredStatus === _httpaccessfallback.HTTPAccessErrorStatus.UNAUTHORIZED && unauthorized;\n // If there's no matched boundary in this layer, keep throwing the error by rendering the children\n if (!(isNotFound || isForbidden || isUnauthorized)) {\n return children;\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"robots\",\n content: \"noindex\"\n }),\n true && /*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"boundary-next-error\",\n content: (0, _httpaccessfallback.getAccessFallbackErrorTypeByStatus)(triggeredStatus)\n }),\n errorComponents[triggeredStatus]\n ]\n });\n }\n return children;\n }\n}\nfunction HTTPAccessFallbackBoundary({ notFound, forbidden, unauthorized, children }) {\n // When we're rendering the missing params shell, this will return null. This\n // is because we won't be rendering any not found boundaries or error\n // boundaries for the missing params shell. When this runs on the client\n // (where these error can occur), we will get the correct pathname.\n const pathname = (0, _navigationuntracked.useUntrackedPathname)();\n const missingSlots = (0, _react.useContext)(_approutercontextsharedruntime.MissingSlotContext);\n const hasErrorFallback = !!(notFound || forbidden || unauthorized);\n if (hasErrorFallback) {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(HTTPAccessFallbackErrorBoundary, {\n pathname: pathname,\n notFound: notFound,\n forbidden: forbidden,\n unauthorized: unauthorized,\n missingSlots: missingSlots,\n children: children\n });\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_jsxruntime.Fragment, {\n children: children\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=error-boundary.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2Vycm9yLWJvdW5kYXJ5LmpzIiwibWFwcGluZ3MiOiI7Ozs7OERBd0pnQkE7OztlQUFBQTs7Ozs7NkVBM0lrQjtpREFDRztnREFNOUI7c0NBQ2tCOzJEQUNVO0FBc0JuQyxNQUFNQyx3Q0FBd0NDLE9BQUFBLE9BQUssQ0FBQ0MsU0FBUztJQUkzREMsWUFBWUMsS0FBMkMsQ0FBRTtRQUN2RCxLQUFLLENBQUNBO1FBQ04sSUFBSSxDQUFDQyxLQUFLLEdBQUc7WUFDWEMsaUJBQWlCQztZQUNqQkMsa0JBQWtCSixNQUFNSyxRQUFRO1FBQ2xDO0lBQ0Y7SUFFQUMsb0JBQTBCO1FBQ3hCLElBQ0VDLEtBQW9CLElBQ3BCLElBQUksQ0FBQ1AsS0FBSyxDQUFDVSxZQUFZLElBQ3ZCLElBQUksQ0FBQ1YsS0FBSyxDQUFDVSxZQUFZLENBQUNDLElBQUksR0FBRyxLQUMvQiw0RUFBNEU7UUFDNUUsQ0FBQyxJQUFJLENBQUNYLEtBQUssQ0FBQ1UsWUFBWSxDQUFDRSxHQUFHLENBQUMsYUFDN0I7WUFDQSxJQUFJQyxpQkFDRiw0SEFDQTtZQUVGLE1BQU1DLGlCQUFpQkMsTUFBTUMsSUFBSSxDQUFDLElBQUksQ0FBQ2hCLEtBQUssQ0FBQ1UsWUFBWSxFQUN0RE8sSUFBSSxDQUFDLENBQUNDLEdBQUdDLElBQU1ELEVBQUVFLGFBQWEsQ0FBQ0QsSUFDL0JFLEdBQUcsQ0FBQyxDQUFDQyxPQUFTLENBQUMsQ0FBQyxFQUFFQSxNQUFNLEVBQ3hCQyxJQUFJLENBQUM7WUFFUlYsa0JBQWtCLG9CQUFvQkM7WUFFdENVLENBQUFBLEdBQUFBLFVBQUFBLFFBQUFBLEVBQVNYO1FBQ1g7SUFDRjtJQUVBLE9BQU9ZLHlCQUF5QkMsS0FBVSxFQUFFO1FBQzFDLElBQUlDLENBQUFBLEdBQUFBLG9CQUFBQSx5QkFBQUEsRUFBMEJELFFBQVE7WUFDcEMsTUFBTUUsYUFBYUMsQ0FBQUEsR0FBQUEsb0JBQUFBLDJCQUFBQSxFQUE0Qkg7WUFDL0MsT0FBTztnQkFDTHhCLGlCQUFpQjBCO1lBQ25CO1FBQ0Y7UUFDQSxtQ0FBbUM7UUFDbkMsTUFBTUY7SUFDUjtJQUVBLE9BQU9JLHlCQUNMOUIsS0FBMkMsRUFDM0NDLEtBQThCLEVBQ0U7UUFDaEM7Ozs7O0tBS0MsR0FDRCxJQUFJRCxNQUFNSyxRQUFRLEtBQUtKLE1BQU1HLGdCQUFnQixJQUFJSCxNQUFNQyxlQUFlLEVBQUU7WUFDdEUsT0FBTztnQkFDTEEsaUJBQWlCQztnQkFDakJDLGtCQUFrQkosTUFBTUssUUFBUTtZQUNsQztRQUNGO1FBQ0EsT0FBTztZQUNMSCxpQkFBaUJELE1BQU1DLGVBQWU7WUFDdENFLGtCQUFrQkosTUFBTUssUUFBUTtRQUNsQztJQUNGO0lBRUEwQixTQUFTO1FBQ1AsTUFBTSxFQUFFQyxRQUFRLEVBQUVDLFNBQVMsRUFBRUMsWUFBWSxFQUFFQyxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUNuQyxLQUFLO1FBQ2xFLE1BQU0sRUFBRUUsZUFBZSxFQUFFLEdBQUcsSUFBSSxDQUFDRCxLQUFLO1FBQ3RDLE1BQU1tQyxrQkFBa0I7WUFDdEIsQ0FBQ0Msb0JBQUFBLHFCQUFxQixDQUFDQyxTQUFTLENBQUMsRUFBRU47WUFDbkMsQ0FBQ0ssb0JBQUFBLHFCQUFxQixDQUFDRSxTQUFTLENBQUMsRUFBRU47WUFDbkMsQ0FBQ0ksb0JBQUFBLHFCQUFxQixDQUFDRyxZQUFZLENBQUMsRUFBRU47UUFDeEM7UUFFQSxJQUFJaEMsaUJBQWlCO1lBQ25CLE1BQU11QyxhQUNKdkMsb0JBQW9CbUMsb0JBQUFBLHFCQUFxQixDQUFDQyxTQUFTLElBQUlOO1lBQ3pELE1BQU1VLGNBQ0p4QyxvQkFBb0JtQyxvQkFBQUEscUJBQXFCLENBQUNFLFNBQVMsSUFBSU47WUFDekQsTUFBTVUsaUJBQ0p6QyxvQkFBb0JtQyxvQkFBQUEscUJBQXFCLENBQUNHLFlBQVksSUFBSU47WUFFNUQsa0dBQWtHO1lBQ2xHLElBQUksQ0FBRU8sQ0FBQUEsY0FBY0MsZUFBZUMsY0FBQUEsQ0FBYSxFQUFJO2dCQUNsRCxPQUFPUjtZQUNUO1lBRUEscUJBQ0U7O2tDQUNFLHFCQUFDUyxRQUFBQTt3QkFBS0MsTUFBSzt3QkFBU0MsU0FBUTs7eUJBQ1csSUFBYixjQUN4QixxQkFBQ0YsUUFBQUE7d0JBQ0NDLE1BQUs7d0JBQ0xDLFNBQVNDLENBQUFBLEdBQUFBLG9CQUFBQSxrQ0FBQUEsRUFBbUM3Qzs7b0JBRy9Da0MsZUFBZSxDQUFDbEMsZ0JBQWdCOzs7UUFHdkM7UUFFQSxPQUFPaUM7SUFDVDtBQUNGO0FBRU8sU0FBU3hDLDJCQUEyQixFQUN6Q3FDLFFBQVEsRUFDUkMsU0FBUyxFQUNUQyxZQUFZLEVBQ1pDLFFBQVEsRUFDd0I7SUFDaEMsNkVBQTZFO0lBQzdFLHFFQUFxRTtJQUNyRSx3RUFBd0U7SUFDeEUsbUVBQW1FO0lBQ25FLE1BQU05QixXQUFXMkMsQ0FBQUEsR0FBQUEscUJBQUFBLG9CQUFvQjtJQUNyQyxNQUFNdEMsZUFBZXVDLENBQUFBLEdBQUFBLE9BQUFBLFVBQUFBLEVBQVdDLCtCQUFBQSxrQkFBa0I7SUFDbEQsTUFBTUMsbUJBQW1CLENBQUMsQ0FBRW5CLENBQUFBLFlBQVlDLGFBQWFDLFlBQUFBLENBQVc7SUFFaEUsSUFBSWlCLGtCQUFrQjtRQUNwQixxQkFDRSxxQkFBQ3ZELGlDQUFBQTtZQUNDUyxVQUFVQTtZQUNWMkIsVUFBVUE7WUFDVkMsV0FBV0E7WUFDWEMsY0FBY0E7WUFDZHhCLGNBQWNBO3NCQUVieUI7O0lBR1A7SUFFQSxxQkFBTztrQkFBR0E7O0FBQ1oiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvY2xpZW50L2NvbXBvbmVudHMvaHR0cC1hY2Nlc3MtZmFsbGJhY2svZXJyb3ItYm91bmRhcnkudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG4vKipcbiAqIEhUVFBBY2Nlc3NGYWxsYmFja0JvdW5kYXJ5IGlzIGEgYm91bmRhcnkgdGhhdCBjYXRjaGVzIGVycm9ycyBhbmQgcmVuZGVycyBhXG4gKiBmYWxsYmFjayBjb21wb25lbnQgZm9yIEhUVFAgZXJyb3JzLlxuICpcbiAqIEl0IHJlY2VpdmVzIHRoZSBzdGF0dXMgY29kZSwgYW5kIGRldGVybWluZSBpZiBpdCBzaG91bGQgcmVuZGVyIGZhbGxiYWNrcyBmb3IgZmV3IEhUVFAgNHh4IGVycm9ycy5cbiAqXG4gKiBlLmcuIDQwNFxuICogNDA0IHJlcHJlc2VudHMgbm90IGZvdW5kLCBhbmQgdGhlIGZhbGxiYWNrIGNvbXBvbmVudCBwYWlyIGNvbnRhaW5zIHRoZSBjb21wb25lbnQgYW5kIGl0cyBzdHlsZXMuXG4gKlxuICovXG5cbmltcG9ydCBSZWFjdCwgeyB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VVbnRyYWNrZWRQYXRobmFtZSB9IGZyb20gJy4uL25hdmlnYXRpb24tdW50cmFja2VkJ1xuaW1wb3J0IHtcbiAgSFRUUEFjY2Vzc0Vycm9yU3RhdHVzLFxuICBnZXRBY2Nlc3NGYWxsYmFja0hUVFBTdGF0dXMsXG4gIGdldEFjY2Vzc0ZhbGxiYWNrRXJyb3JUeXBlQnlTdGF0dXMsXG4gIGlzSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3IsXG59IGZyb20gJy4vaHR0cC1hY2Nlc3MtZmFsbGJhY2snXG5pbXBvcnQgeyB3YXJuT25jZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvdXRpbHMvd2Fybi1vbmNlJ1xuaW1wb3J0IHsgTWlzc2luZ1Nsb3RDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5cbmludGVyZmFjZSBIVFRQQWNjZXNzRmFsbGJhY2tCb3VuZGFyeVByb3BzIHtcbiAgbm90Rm91bmQ/OiBSZWFjdC5SZWFjdE5vZGVcbiAgZm9yYmlkZGVuPzogUmVhY3QuUmVhY3ROb2RlXG4gIHVuYXV0aG9yaXplZD86IFJlYWN0LlJlYWN0Tm9kZVxuICAvLyBUT0RPOiBNYWtlIHRoaXMgcmVxdWlyZWQgb25jZSBgUmVhY3QuY3JlYXRlRWxlbWVudGAgdW5kZXJzdGFuZHMgdGhhdCBwb3NpdGlvbmFsIGFyZ3MgZ28gaW50byBjaGlsZHJlblxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZVxuICBtaXNzaW5nU2xvdHM/OiBTZXQ8c3RyaW5nPlxufVxuXG5pbnRlcmZhY2UgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3JCb3VuZGFyeVByb3BzXG4gIGV4dGVuZHMgSFRUUEFjY2Vzc0ZhbGxiYWNrQm91bmRhcnlQcm9wcyB7XG4gIHBhdGhuYW1lOiBzdHJpbmcgfCBudWxsXG4gIG1pc3NpbmdTbG90cz86IFNldDxzdHJpbmc+XG59XG5cbmludGVyZmFjZSBIVFRQQWNjZXNzQm91bmRhcnlTdGF0ZSB7XG4gIHRyaWdnZXJlZFN0YXR1czogbnVtYmVyIHwgdW5kZWZpbmVkXG4gIHByZXZpb3VzUGF0aG5hbWU6IHN0cmluZyB8IG51bGxcbn1cblxuY2xhc3MgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3JCb3VuZGFyeSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxcbiAgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3JCb3VuZGFyeVByb3BzLFxuICBIVFRQQWNjZXNzQm91bmRhcnlTdGF0ZVxuPiB7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvckJvdW5kYXJ5UHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcylcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgdHJpZ2dlcmVkU3RhdHVzOiB1bmRlZmluZWQsXG4gICAgICBwcmV2aW91c1BhdGhuYW1lOiBwcm9wcy5wYXRobmFtZSxcbiAgICB9XG4gIH1cblxuICBjb21wb25lbnREaWRDYXRjaCgpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50JyAmJlxuICAgICAgdGhpcy5wcm9wcy5taXNzaW5nU2xvdHMgJiZcbiAgICAgIHRoaXMucHJvcHMubWlzc2luZ1Nsb3RzLnNpemUgPiAwICYmXG4gICAgICAvLyBBIG1pc3NpbmcgY2hpbGRyZW4gc2xvdCBpcyB0aGUgdHlwaWNhbCBub3QtZm91bmQgY2FzZSwgc28gbm8gbmVlZCB0byB3YXJuXG4gICAgICAhdGhpcy5wcm9wcy5taXNzaW5nU2xvdHMuaGFzKCdjaGlsZHJlbicpXG4gICAgKSB7XG4gICAgICBsZXQgd2FybmluZ01lc3NhZ2UgPVxuICAgICAgICAnTm8gZGVmYXVsdCBjb21wb25lbnQgd2FzIGZvdW5kIGZvciBhIHBhcmFsbGVsIHJvdXRlIHJlbmRlcmVkIG9uIHRoaXMgcGFnZS4gRmFsbGluZyBiYWNrIHRvIG5lYXJlc3QgTm90Rm91bmQgYm91bmRhcnkuXFxuJyArXG4gICAgICAgICdMZWFybiBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yb3V0aW5nL3BhcmFsbGVsLXJvdXRlcyNkZWZhdWx0anNcXG5cXG4nXG5cbiAgICAgIGNvbnN0IGZvcm1hdHRlZFNsb3RzID0gQXJyYXkuZnJvbSh0aGlzLnByb3BzLm1pc3NpbmdTbG90cylcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSlcbiAgICAgICAgLm1hcCgoc2xvdCkgPT4gYEAke3Nsb3R9YClcbiAgICAgICAgLmpvaW4oJywgJylcblxuICAgICAgd2FybmluZ01lc3NhZ2UgKz0gJ01pc3Npbmcgc2xvdHM6ICcgKyBmb3JtYXR0ZWRTbG90c1xuXG4gICAgICB3YXJuT25jZSh3YXJuaW5nTWVzc2FnZSlcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKGVycm9yOiBhbnkpIHtcbiAgICBpZiAoaXNIVFRQQWNjZXNzRmFsbGJhY2tFcnJvcihlcnJvcikpIHtcbiAgICAgIGNvbnN0IGh0dHBTdGF0dXMgPSBnZXRBY2Nlc3NGYWxsYmFja0hUVFBTdGF0dXMoZXJyb3IpXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cmlnZ2VyZWRTdGF0dXM6IGh0dHBTdGF0dXMsXG4gICAgICB9XG4gICAgfVxuICAgIC8vIFJlLXRocm93IGlmIGVycm9yIGlzIG5vdCBmb3IgNDA0XG4gICAgdGhyb3cgZXJyb3JcbiAgfVxuXG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoXG4gICAgcHJvcHM6IEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yQm91bmRhcnlQcm9wcyxcbiAgICBzdGF0ZTogSFRUUEFjY2Vzc0JvdW5kYXJ5U3RhdGVcbiAgKTogSFRUUEFjY2Vzc0JvdW5kYXJ5U3RhdGUgfCBudWxsIHtcbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIHJlc2V0IG9mIHRoZSBlcnJvciBib3VuZGFyeSB3aGVuIGEgbmF2aWdhdGlvbiBoYXBwZW5zLlxuICAgICAqIEVuc3VyZXMgdGhlIGVycm9yIGJvdW5kYXJ5IGRvZXMgbm90IHN0YXkgZW5hYmxlZCB3aGVuIG5hdmlnYXRpbmcgdG8gYSBuZXcgcGFnZS5cbiAgICAgKiBBcHByb2FjaCBvZiBzZXRTdGF0ZSBpbiByZW5kZXIgaXMgc2FmZSBhcyBpdCBjaGVja3MgdGhlIHByZXZpb3VzIHBhdGhuYW1lIGFuZCB0aGVuIG92ZXJyaWRlc1xuICAgICAqIGl0IGFzIG91dGxpbmVkIGluIGh0dHBzOi8vcmVhY3QuZGV2L3JlZmVyZW5jZS9yZWFjdC91c2VTdGF0ZSNzdG9yaW5nLWluZm9ybWF0aW9uLWZyb20tcHJldmlvdXMtcmVuZGVyc1xuICAgICAqL1xuICAgIGlmIChwcm9wcy5wYXRobmFtZSAhPT0gc3RhdGUucHJldmlvdXNQYXRobmFtZSAmJiBzdGF0ZS50cmlnZ2VyZWRTdGF0dXMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRyaWdnZXJlZFN0YXR1czogdW5kZWZpbmVkLFxuICAgICAgICBwcmV2aW91c1BhdGhuYW1lOiBwcm9wcy5wYXRobmFtZSxcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHRyaWdnZXJlZFN0YXR1czogc3RhdGUudHJpZ2dlcmVkU3RhdHVzLFxuICAgICAgcHJldmlvdXNQYXRobmFtZTogcHJvcHMucGF0aG5hbWUsXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgbm90Rm91bmQsIGZvcmJpZGRlbiwgdW5hdXRob3JpemVkLCBjaGlsZHJlbiB9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHsgdHJpZ2dlcmVkU3RhdHVzIH0gPSB0aGlzLnN0YXRlXG4gICAgY29uc3QgZXJyb3JDb21wb25lbnRzID0ge1xuICAgICAgW0hUVFBBY2Nlc3NFcnJvclN0YXR1cy5OT1RfRk9VTkRdOiBub3RGb3VuZCxcbiAgICAgIFtIVFRQQWNjZXNzRXJyb3JTdGF0dXMuRk9SQklEREVOXTogZm9yYmlkZGVuLFxuICAgICAgW0hUVFBBY2Nlc3NFcnJvclN0YXR1cy5VTkFVVEhPUklaRURdOiB1bmF1dGhvcml6ZWQsXG4gICAgfVxuXG4gICAgaWYgKHRyaWdnZXJlZFN0YXR1cykge1xuICAgICAgY29uc3QgaXNOb3RGb3VuZCA9XG4gICAgICAgIHRyaWdnZXJlZFN0YXR1cyA9PT0gSFRUUEFjY2Vzc0Vycm9yU3RhdHVzLk5PVF9GT1VORCAmJiBub3RGb3VuZFxuICAgICAgY29uc3QgaXNGb3JiaWRkZW4gPVxuICAgICAgICB0cmlnZ2VyZWRTdGF0dXMgPT09IEhUVFBBY2Nlc3NFcnJvclN0YXR1cy5GT1JCSURERU4gJiYgZm9yYmlkZGVuXG4gICAgICBjb25zdCBpc1VuYXV0aG9yaXplZCA9XG4gICAgICAgIHRyaWdnZXJlZFN0YXR1cyA9PT0gSFRUUEFjY2Vzc0Vycm9yU3RhdHVzLlVOQVVUSE9SSVpFRCAmJiB1bmF1dGhvcml6ZWRcblxuICAgICAgLy8gSWYgdGhlcmUncyBubyBtYXRjaGVkIGJvdW5kYXJ5IGluIHRoaXMgbGF5ZXIsIGtlZXAgdGhyb3dpbmcgdGhlIGVycm9yIGJ5IHJlbmRlcmluZyB0aGUgY2hpbGRyZW5cbiAgICAgIGlmICghKGlzTm90Rm91bmQgfHwgaXNGb3JiaWRkZW4gfHwgaXNVbmF1dGhvcml6ZWQpKSB7XG4gICAgICAgIHJldHVybiBjaGlsZHJlblxuICAgICAgfVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxtZXRhIG5hbWU9XCJyb2JvdHNcIiBjb250ZW50PVwibm9pbmRleFwiIC8+XG4gICAgICAgICAge3Byb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnICYmIChcbiAgICAgICAgICAgIDxtZXRhXG4gICAgICAgICAgICAgIG5hbWU9XCJib3VuZGFyeS1uZXh0LWVycm9yXCJcbiAgICAgICAgICAgICAgY29udGVudD17Z2V0QWNjZXNzRmFsbGJhY2tFcnJvclR5cGVCeVN0YXR1cyh0cmlnZ2VyZWRTdGF0dXMpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtlcnJvckNvbXBvbmVudHNbdHJpZ2dlcmVkU3RhdHVzXX1cbiAgICAgICAgPC8+XG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIGNoaWxkcmVuXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEhUVFBBY2Nlc3NGYWxsYmFja0JvdW5kYXJ5KHtcbiAgbm90Rm91bmQsXG4gIGZvcmJpZGRlbixcbiAgdW5hdXRob3JpemVkLFxuICBjaGlsZHJlbixcbn06IEhUVFBBY2Nlc3NGYWxsYmFja0JvdW5kYXJ5UHJvcHMpIHtcbiAgLy8gV2hlbiB3ZSdyZSByZW5kZXJpbmcgdGhlIG1pc3NpbmcgcGFyYW1zIHNoZWxsLCB0aGlzIHdpbGwgcmV0dXJuIG51bGwuIFRoaXNcbiAgLy8gaXMgYmVjYXVzZSB3ZSB3b24ndCBiZSByZW5kZXJpbmcgYW55IG5vdCBmb3VuZCBib3VuZGFyaWVzIG9yIGVycm9yXG4gIC8vIGJvdW5kYXJpZXMgZm9yIHRoZSBtaXNzaW5nIHBhcmFtcyBzaGVsbC4gV2hlbiB0aGlzIHJ1bnMgb24gdGhlIGNsaWVudFxuICAvLyAod2hlcmUgdGhlc2UgZXJyb3IgY2FuIG9jY3VyKSwgd2Ugd2lsbCBnZXQgdGhlIGNvcnJlY3QgcGF0aG5hbWUuXG4gIGNvbnN0IHBhdGhuYW1lID0gdXNlVW50cmFja2VkUGF0aG5hbWUoKVxuICBjb25zdCBtaXNzaW5nU2xvdHMgPSB1c2VDb250ZXh0KE1pc3NpbmdTbG90Q29udGV4dClcbiAgY29uc3QgaGFzRXJyb3JGYWxsYmFjayA9ICEhKG5vdEZvdW5kIHx8IGZvcmJpZGRlbiB8fCB1bmF1dGhvcml6ZWQpXG5cbiAgaWYgKGhhc0Vycm9yRmFsbGJhY2spIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yQm91bmRhcnlcbiAgICAgICAgcGF0aG5hbWU9e3BhdGhuYW1lfVxuICAgICAgICBub3RGb3VuZD17bm90Rm91bmR9XG4gICAgICAgIGZvcmJpZGRlbj17Zm9yYmlkZGVufVxuICAgICAgICB1bmF1dGhvcml6ZWQ9e3VuYXV0aG9yaXplZH1cbiAgICAgICAgbWlzc2luZ1Nsb3RzPXttaXNzaW5nU2xvdHN9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3JCb3VuZGFyeT5cbiAgICApXG4gIH1cblxuICByZXR1cm4gPD57Y2hpbGRyZW59PC8+XG59XG4iXSwibmFtZXMiOlsiSFRUUEFjY2Vzc0ZhbGxiYWNrQm91bmRhcnkiLCJIVFRQQWNjZXNzRmFsbGJhY2tFcnJvckJvdW5kYXJ5IiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJ0cmlnZ2VyZWRTdGF0dXMiLCJ1bmRlZmluZWQiLCJwcmV2aW91c1BhdGhuYW1lIiwicGF0aG5hbWUiLCJjb21wb25lbnREaWRDYXRjaCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm1pc3NpbmdTbG90cyIsInNpemUiLCJoYXMiLCJ3YXJuaW5nTWVzc2FnZSIsImZvcm1hdHRlZFNsb3RzIiwiQXJyYXkiLCJmcm9tIiwic29ydCIsImEiLCJiIiwibG9jYWxlQ29tcGFyZSIsIm1hcCIsInNsb3QiLCJqb2luIiwid2Fybk9uY2UiLCJnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IiLCJlcnJvciIsImlzSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3IiLCJodHRwU3RhdHVzIiwiZ2V0QWNjZXNzRmFsbGJhY2tIVFRQU3RhdHVzIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwicmVuZGVyIiwibm90Rm91bmQiLCJmb3JiaWRkZW4iLCJ1bmF1dGhvcml6ZWQiLCJjaGlsZHJlbiIsImVycm9yQ29tcG9uZW50cyIsIkhUVFBBY2Nlc3NFcnJvclN0YXR1cyIsIk5PVF9GT1VORCIsIkZPUkJJRERFTiIsIlVOQVVUSE9SSVpFRCIsImlzTm90Rm91bmQiLCJpc0ZvcmJpZGRlbiIsImlzVW5hdXRob3JpemVkIiwibWV0YSIsIm5hbWUiLCJjb250ZW50IiwiZ2V0QWNjZXNzRmFsbGJhY2tFcnJvclR5cGVCeVN0YXR1cyIsInVzZVVudHJhY2tlZFBhdGhuYW1lIiwidXNlQ29udGV4dCIsIk1pc3NpbmdTbG90Q29udGV4dCIsImhhc0Vycm9yRmFsbGJhY2siXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js":
|
||
/*!***********************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js ***!
|
||
\***********************************************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n HTTPAccessErrorStatus: function() {\n return HTTPAccessErrorStatus;\n },\n HTTP_ERROR_FALLBACK_ERROR_CODE: function() {\n return HTTP_ERROR_FALLBACK_ERROR_CODE;\n },\n getAccessFallbackErrorTypeByStatus: function() {\n return getAccessFallbackErrorTypeByStatus;\n },\n getAccessFallbackHTTPStatus: function() {\n return getAccessFallbackHTTPStatus;\n },\n isHTTPAccessFallbackError: function() {\n return isHTTPAccessFallbackError;\n }\n});\nconst HTTPAccessErrorStatus = {\n NOT_FOUND: 404,\n FORBIDDEN: 403,\n UNAUTHORIZED: 401\n};\nconst ALLOWED_CODES = new Set(Object.values(HTTPAccessErrorStatus));\nconst HTTP_ERROR_FALLBACK_ERROR_CODE = 'NEXT_HTTP_ERROR_FALLBACK';\nfunction isHTTPAccessFallbackError(error) {\n if (typeof error !== 'object' || error === null || !('digest' in error) || typeof error.digest !== 'string') {\n return false;\n }\n const [prefix, httpStatus] = error.digest.split(';');\n return prefix === HTTP_ERROR_FALLBACK_ERROR_CODE && ALLOWED_CODES.has(Number(httpStatus));\n}\nfunction getAccessFallbackHTTPStatus(error) {\n const httpStatus = error.digest.split(';')[1];\n return Number(httpStatus);\n}\nfunction getAccessFallbackErrorTypeByStatus(status) {\n switch(status){\n case 401:\n return 'unauthorized';\n case 403:\n return 'forbidden';\n case 404:\n return 'not-found';\n default:\n return;\n }\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=http-access-fallback.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2h0dHAtYWNjZXNzLWZhbGxiYWNrLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUFhQSxxQkFBcUI7ZUFBckJBOztJQVFBQyw4QkFBOEI7ZUFBOUJBOztJQXVDR0Msa0NBQWtDO2VBQWxDQTs7SUFQQUMsMkJBQTJCO2VBQTNCQTs7SUFuQkFDLHlCQUF5QjtlQUF6QkE7OztBQXJCVCxNQUFNSix3QkFBd0I7SUFDbkNLLFdBQVc7SUFDWEMsV0FBVztJQUNYQyxjQUFjO0FBQ2hCO0FBRUEsTUFBTUMsZ0JBQWdCLElBQUlDLElBQUlDLE9BQU9DLE1BQU0sQ0FBQ1g7QUFFckMsTUFBTUMsaUNBQWlDO0FBYXZDLFNBQVNHLDBCQUNkUSxLQUFjO0lBRWQsSUFDRSxPQUFPQSxVQUFVLFlBQ2pCQSxVQUFVLFFBQ1YsQ0FBRSxhQUFZQSxLQUFBQSxDQUFJLElBQ2xCLE9BQU9BLE1BQU1DLE1BQU0sS0FBSyxVQUN4QjtRQUNBLE9BQU87SUFDVDtJQUNBLE1BQU0sQ0FBQ0MsUUFBUUMsV0FBVyxHQUFHSCxNQUFNQyxNQUFNLENBQUNHLEtBQUssQ0FBQztJQUVoRCxPQUNFRixXQUFXYixrQ0FDWE8sY0FBY1MsR0FBRyxDQUFDQyxPQUFPSDtBQUU3QjtBQUVPLFNBQVNaLDRCQUNkUyxLQUE4QjtJQUU5QixNQUFNRyxhQUFhSCxNQUFNQyxNQUFNLENBQUNHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUM3QyxPQUFPRSxPQUFPSDtBQUNoQjtBQUVPLFNBQVNiLG1DQUNkaUIsTUFBYztJQUVkLE9BQVFBO1FBQ04sS0FBSztZQUNILE9BQU87UUFDVCxLQUFLO1lBQ0gsT0FBTztRQUNULEtBQUs7WUFDSCxPQUFPO1FBQ1Q7WUFDRTtJQUNKO0FBQ0YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvY2xpZW50L2NvbXBvbmVudHMvaHR0cC1hY2Nlc3MtZmFsbGJhY2svaHR0cC1hY2Nlc3MtZmFsbGJhY2sudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEhUVFBBY2Nlc3NFcnJvclN0YXR1cyA9IHtcbiAgTk9UX0ZPVU5EOiA0MDQsXG4gIEZPUkJJRERFTjogNDAzLFxuICBVTkFVVEhPUklaRUQ6IDQwMSxcbn1cblxuY29uc3QgQUxMT1dFRF9DT0RFUyA9IG5ldyBTZXQoT2JqZWN0LnZhbHVlcyhIVFRQQWNjZXNzRXJyb3JTdGF0dXMpKVxuXG5leHBvcnQgY29uc3QgSFRUUF9FUlJPUl9GQUxMQkFDS19FUlJPUl9DT0RFID0gJ05FWFRfSFRUUF9FUlJPUl9GQUxMQkFDSydcblxuZXhwb3J0IHR5cGUgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3IgPSBFcnJvciAmIHtcbiAgZGlnZXN0OiBgJHt0eXBlb2YgSFRUUF9FUlJPUl9GQUxMQkFDS19FUlJPUl9DT0RFfTske3N0cmluZ31gXG59XG5cbi8qKlxuICogQ2hlY2tzIGFuIGVycm9yIHRvIGRldGVybWluZSBpZiBpdCdzIGFuIGVycm9yIGdlbmVyYXRlZCBieVxuICogdGhlIEhUVFAgbmF2aWdhdGlvbiBBUElzIGBub3RGb3VuZCgpYCwgYGZvcmJpZGRlbigpYCBvciBgdW5hdXRob3JpemVkKClgLlxuICpcbiAqIEBwYXJhbSBlcnJvciB0aGUgZXJyb3IgdGhhdCBtYXkgcmVmZXJlbmNlIGEgSFRUUCBhY2Nlc3MgZXJyb3JcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGVycm9yIGlzIGEgSFRUUCBhY2Nlc3MgZXJyb3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3IoXG4gIGVycm9yOiB1bmtub3duXG4pOiBlcnJvciBpcyBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvciB7XG4gIGlmIChcbiAgICB0eXBlb2YgZXJyb3IgIT09ICdvYmplY3QnIHx8XG4gICAgZXJyb3IgPT09IG51bGwgfHxcbiAgICAhKCdkaWdlc3QnIGluIGVycm9yKSB8fFxuICAgIHR5cGVvZiBlcnJvci5kaWdlc3QgIT09ICdzdHJpbmcnXG4gICkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGNvbnN0IFtwcmVmaXgsIGh0dHBTdGF0dXNdID0gZXJyb3IuZGlnZXN0LnNwbGl0KCc7JylcblxuICByZXR1cm4gKFxuICAgIHByZWZpeCA9PT0gSFRUUF9FUlJPUl9GQUxMQkFDS19FUlJPUl9DT0RFICYmXG4gICAgQUxMT1dFRF9DT0RFUy5oYXMoTnVtYmVyKGh0dHBTdGF0dXMpKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBY2Nlc3NGYWxsYmFja0hUVFBTdGF0dXMoXG4gIGVycm9yOiBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvclxuKTogbnVtYmVyIHtcbiAgY29uc3QgaHR0cFN0YXR1cyA9IGVycm9yLmRpZ2VzdC5zcGxpdCgnOycpWzFdXG4gIHJldHVybiBOdW1iZXIoaHR0cFN0YXR1cylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFjY2Vzc0ZhbGxiYWNrRXJyb3JUeXBlQnlTdGF0dXMoXG4gIHN0YXR1czogbnVtYmVyXG4pOiAnbm90LWZvdW5kJyB8ICdmb3JiaWRkZW4nIHwgJ3VuYXV0aG9yaXplZCcgfCB1bmRlZmluZWQge1xuICBzd2l0Y2ggKHN0YXR1cykge1xuICAgIGNhc2UgNDAxOlxuICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnXG4gICAgY2FzZSA0MDM6XG4gICAgICByZXR1cm4gJ2ZvcmJpZGRlbidcbiAgICBjYXNlIDQwNDpcbiAgICAgIHJldHVybiAnbm90LWZvdW5kJ1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm5cbiAgfVxufVxuIl0sIm5hbWVzIjpbIkhUVFBBY2Nlc3NFcnJvclN0YXR1cyIsIkhUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERSIsImdldEFjY2Vzc0ZhbGxiYWNrRXJyb3JUeXBlQnlTdGF0dXMiLCJnZXRBY2Nlc3NGYWxsYmFja0hUVFBTdGF0dXMiLCJpc0hUVFBBY2Nlc3NGYWxsYmFja0Vycm9yIiwiTk9UX0ZPVU5EIiwiRk9SQklEREVOIiwiVU5BVVRIT1JJWkVEIiwiQUxMT1dFRF9DT0RFUyIsIlNldCIsIk9iamVjdCIsInZhbHVlcyIsImVycm9yIiwiZGlnZXN0IiwicHJlZml4IiwiaHR0cFN0YXR1cyIsInNwbGl0IiwiaGFzIiwiTnVtYmVyIiwic3RhdHVzIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/is-next-router-error.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/is-next-router-error.js ***!
|
||
\**************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"isNextRouterError\", ({\n enumerable: true,\n get: function() {\n return isNextRouterError;\n }\n}));\nconst _httpaccessfallback = __webpack_require__(/*! ./http-access-fallback/http-access-fallback */ \"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\");\nconst _redirecterror = __webpack_require__(/*! ./redirect-error */ \"(ssr)/./node_modules/next/dist/client/components/redirect-error.js\");\nfunction isNextRouterError(error) {\n return (0, _redirecterror.isRedirectError)(error) || (0, _httpaccessfallback.isHTTPAccessFallbackError)(error);\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=is-next-router-error.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2lzLW5leHQtcm91dGVyLWVycm9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7cURBV2dCQTs7O2VBQUFBOzs7Z0RBUlQ7MkNBQzZDO0FBTzdDLFNBQVNBLGtCQUNkQyxLQUFjO0lBRWQsT0FBT0MsQ0FBQUEsR0FBQUEsZUFBQUEsZUFBQUEsRUFBZ0JELFVBQVVFLENBQUFBLEdBQUFBLG9CQUFBQSx5QkFBQUEsRUFBMEJGO0FBQzdEIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL2NsaWVudC9jb21wb25lbnRzL2lzLW5leHQtcm91dGVyLWVycm9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGlzSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3IsXG4gIHR5cGUgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3IsXG59IGZyb20gJy4vaHR0cC1hY2Nlc3MtZmFsbGJhY2svaHR0cC1hY2Nlc3MtZmFsbGJhY2snXG5pbXBvcnQgeyBpc1JlZGlyZWN0RXJyb3IsIHR5cGUgUmVkaXJlY3RFcnJvciB9IGZyb20gJy4vcmVkaXJlY3QtZXJyb3InXG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBlcnJvciBpcyBhIG5hdmlnYXRpb24gc2lnbmFsIGVycm9yLiBUaGVzZSBlcnJvcnMgYXJlXG4gKiB0aHJvd24gYnkgdXNlciBjb2RlIHRvIHBlcmZvcm0gbmF2aWdhdGlvbiBvcGVyYXRpb25zIGFuZCBpbnRlcnJ1cHQgdGhlIFJlYWN0XG4gKiByZW5kZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05leHRSb3V0ZXJFcnJvcihcbiAgZXJyb3I6IHVua25vd25cbik6IGVycm9yIGlzIFJlZGlyZWN0RXJyb3IgfCBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvciB7XG4gIHJldHVybiBpc1JlZGlyZWN0RXJyb3IoZXJyb3IpIHx8IGlzSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3IoZXJyb3IpXG59XG4iXSwibmFtZXMiOlsiaXNOZXh0Um91dGVyRXJyb3IiLCJlcnJvciIsImlzUmVkaXJlY3RFcnJvciIsImlzSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3IiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/is-next-router-error.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/layout-router.js":
|
||
/*!*******************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/layout-router.js ***!
|
||
\*******************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n LoadingBoundaryProvider: function() {\n return LoadingBoundaryProvider;\n },\n /**\n * OuterLayoutRouter handles the current segment as well as <Offscreen> rendering of other segments.\n * It can be rendered next to each other with a different `parallelRouterKey`, allowing for Parallel routes.\n */ default: function() {\n return OuterLayoutRouter;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\"));\nconst _reactdom = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react-dom */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-dom.js\"));\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../shared/lib/app-router-context.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js\");\nconst _unresolvedthenable = __webpack_require__(/*! ./unresolved-thenable */ \"(ssr)/./node_modules/next/dist/client/components/unresolved-thenable.js\");\nconst _errorboundary = __webpack_require__(/*! ./error-boundary */ \"(ssr)/./node_modules/next/dist/client/components/error-boundary.js\");\nconst _disablesmoothscroll = __webpack_require__(/*! ../../shared/lib/router/utils/disable-smooth-scroll */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/disable-smooth-scroll.js\");\nconst _redirectboundary = __webpack_require__(/*! ./redirect-boundary */ \"(ssr)/./node_modules/next/dist/client/components/redirect-boundary.js\");\nconst _errorboundary1 = __webpack_require__(/*! ./http-access-fallback/error-boundary */ \"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js\");\nconst _createroutercachekey = __webpack_require__(/*! ./router-reducer/create-router-cache-key */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js\");\nconst _bfcachestatemanager = __webpack_require__(/*! ./bfcache-state-manager */ \"(ssr)/./node_modules/next/dist/client/components/bfcache-state-manager.js\");\nconst _apppaths = __webpack_require__(/*! ../../shared/lib/router/utils/app-paths */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/app-paths.js\");\nconst _hooksclientcontextsharedruntime = __webpack_require__(/*! ../../shared/lib/hooks-client-context.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/hooks-client-context.js\");\nconst _routeparams = __webpack_require__(/*! ../route-params */ \"(ssr)/./node_modules/next/dist/client/route-params.js\");\nconst _pprnavigations = __webpack_require__(/*! ./router-reducer/ppr-navigations */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/ppr-navigations.js\");\nconst enableNewScrollHandler = false;\nconst __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = _reactdom.default.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n// TODO-APP: Replace with new React API for finding dom nodes without a `ref` when available\n/**\n * Wraps ReactDOM.findDOMNode with additional logic to hide React Strict Mode warning\n */ function findDOMNode(instance) {\n // Tree-shake for server bundle\n if (true) return null;\n // __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode is null during module init.\n // We need to lazily reference it.\n const internal_reactDOMfindDOMNode = __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode;\n return internal_reactDOMfindDOMNode(instance);\n}\nconst rectProperties = [\n 'bottom',\n 'height',\n 'left',\n 'right',\n 'top',\n 'width',\n 'x',\n 'y'\n];\n/**\n * Check if a HTMLElement is hidden or fixed/sticky position\n */ function shouldSkipElement(element) {\n // we ignore fixed or sticky positioned elements since they'll likely pass the \"in-viewport\" check\n // and will result in a situation we bail on scroll because of something like a fixed nav,\n // even though the actual page content is offscreen\n if ([\n 'sticky',\n 'fixed'\n ].includes(getComputedStyle(element).position)) {\n return true;\n }\n // Uses `getBoundingClientRect` to check if the element is hidden instead of `offsetParent`\n // because `offsetParent` doesn't consider document/body\n const rect = element.getBoundingClientRect();\n return rectProperties.every((item)=>rect[item] === 0);\n}\n/**\n * Check if the top corner of the HTMLElement is in the viewport.\n */ function topOfElementInViewport(instance, viewportHeight) {\n const rects = instance.getClientRects();\n if (rects.length === 0) {\n // Just to be explicit.\n return false;\n }\n let elementTop = Number.POSITIVE_INFINITY;\n for(let i = 0; i < rects.length; i++){\n const rect = rects[i];\n if (rect.top < elementTop) {\n elementTop = rect.top;\n }\n }\n return elementTop >= 0 && elementTop <= viewportHeight;\n}\n/**\n * Find the DOM node for a hash fragment.\n * If `top` the page has to scroll to the top of the page. This mirrors the browser's behavior.\n * If the hash fragment is an id, the page has to scroll to the element with that id.\n * If the hash fragment is a name, the page has to scroll to the first element with that name.\n */ function getHashFragmentDomNode(hashFragment) {\n // If the hash fragment is `top` the page has to scroll to the top of the page.\n if (hashFragment === 'top') {\n return document.body;\n }\n // If the hash fragment is an id, the page has to scroll to the element with that id.\n return document.getElementById(hashFragment) ?? // If the hash fragment is a name, the page has to scroll to the first element with that name.\n document.getElementsByName(hashFragment)[0];\n}\nclass InnerScrollAndFocusHandlerOld extends _react.default.Component {\n componentDidMount() {\n this.handlePotentialScroll();\n }\n componentDidUpdate() {\n this.handlePotentialScroll();\n }\n render() {\n return this.props.children;\n }\n constructor(...args){\n super(...args), this.handlePotentialScroll = ()=>{\n // Handle scroll and focus, it's only applied once.\n const { focusAndScrollRef, cacheNode } = this.props;\n const scrollRef = focusAndScrollRef.forceScroll ? focusAndScrollRef.scrollRef : cacheNode.scrollRef;\n if (scrollRef === null || !scrollRef.current) return;\n let domNode = null;\n const hashFragment = focusAndScrollRef.hashFragment;\n if (hashFragment) {\n domNode = getHashFragmentDomNode(hashFragment);\n }\n // `findDOMNode` is tricky because it returns just the first child if the component is a fragment.\n // This already caused a bug where the first child was a <link/> in head.\n if (!domNode) {\n domNode = findDOMNode(this);\n }\n // If there is no DOM node this layout-router level is skipped. It'll be handled higher-up in the tree.\n if (!(domNode instanceof Element)) {\n return;\n }\n // Verify if the element is a HTMLElement and if we want to consider it for scroll behavior.\n // If the element is skipped, try to select the next sibling and try again.\n while(!(domNode instanceof HTMLElement) || shouldSkipElement(domNode)){\n if (true) {\n if (domNode.parentElement?.localName === 'head') {\n // We enter this state when metadata was rendered as part of the page or via Next.js.\n // This is always a bug in Next.js and caused by React hoisting metadata.\n // Fixed with `experimental.appNewScrollHandler`\n }\n }\n // No siblings found that match the criteria are found, so handle scroll higher up in the tree instead.\n if (domNode.nextElementSibling === null) {\n return;\n }\n domNode = domNode.nextElementSibling;\n }\n // Mark as scrolled so no other segment scrolls for this navigation.\n scrollRef.current = false;\n (0, _disablesmoothscroll.disableSmoothScrollDuringRouteTransition)(()=>{\n // In case of hash scroll, we only need to scroll the element into view\n if (hashFragment) {\n domNode.scrollIntoView();\n return;\n }\n // Store the current viewport height because reading `clientHeight` causes a reflow,\n // and it won't change during this function.\n const htmlElement = document.documentElement;\n const viewportHeight = htmlElement.clientHeight;\n // If the element's top edge is already in the viewport, exit early.\n if (topOfElementInViewport(domNode, viewportHeight)) {\n return;\n }\n // Otherwise, try scrolling go the top of the document to be backward compatible with pages\n // scrollIntoView() called on `<html/>` element scrolls horizontally on chrome and firefox (that shouldn't happen)\n // We could use it to scroll horizontally following RTL but that also seems to be broken - it will always scroll left\n // scrollLeft = 0 also seems to ignore RTL and manually checking for RTL is too much hassle so we will scroll just vertically\n htmlElement.scrollTop = 0;\n // Scroll to domNode if domNode is not in viewport when scrolled to top of document\n if (!topOfElementInViewport(domNode, viewportHeight)) {\n // Scroll into view doesn't scroll horizontally by default when not needed\n domNode.scrollIntoView();\n }\n }, {\n // We will force layout by querying domNode position\n dontForceLayout: true,\n onlyHashChange: focusAndScrollRef.onlyHashChange\n });\n // Mutate after scrolling so that it can be read by `disableSmoothScrollDuringRouteTransition`\n focusAndScrollRef.onlyHashChange = false;\n focusAndScrollRef.hashFragment = null;\n // Set focus on the element\n domNode.focus();\n };\n }\n}\n/**\n * Fork of InnerScrollAndFocusHandlerOld using Fragment refs for scrolling.\n * No longer focuses the first host descendant.\n */ function InnerScrollHandlerNew(props) {\n const childrenRef = _react.default.useRef(null);\n (0, _react.useLayoutEffect)(()=>{\n const { focusAndScrollRef, cacheNode } = props;\n const scrollRef = focusAndScrollRef.forceScroll ? focusAndScrollRef.scrollRef : cacheNode.scrollRef;\n if (scrollRef === null || !scrollRef.current) return;\n let instance = null;\n const hashFragment = focusAndScrollRef.hashFragment;\n if (hashFragment) {\n instance = getHashFragmentDomNode(hashFragment);\n }\n if (!instance) {\n instance = childrenRef.current;\n }\n // If there is no DOM node this layout-router level is skipped. It'll be handled higher-up in the tree.\n if (instance === null) {\n return;\n }\n // Mark as scrolled so no other segment scrolls for this navigation.\n scrollRef.current = false;\n const activeElement = document.activeElement;\n if (activeElement !== null && 'blur' in activeElement && typeof activeElement.blur === 'function') {\n // Trying to match hard navigations.\n // Ideally we'd move the internal focus cursor either to the top\n // or at least before the segment. But there's no DOM API to do that,\n // so we just blur.\n // We could workaround this by moving focus to a temporary element in\n // the body. But adding elements might trigger layout or other effects\n // so it should be well motivated.\n activeElement.blur();\n }\n (0, _disablesmoothscroll.disableSmoothScrollDuringRouteTransition)(()=>{\n // In case of hash scroll, we only need to scroll the element into view\n if (hashFragment) {\n instance.scrollIntoView();\n return;\n }\n // Store the current viewport height because reading `clientHeight` causes a reflow,\n // and it won't change during this function.\n const htmlElement = document.documentElement;\n const viewportHeight = htmlElement.clientHeight;\n // If the element's top edge is already in the viewport, exit early.\n if (topOfElementInViewport(instance, viewportHeight)) {\n return;\n }\n // Otherwise, try scrolling go the top of the document to be backward compatible with pages\n // scrollIntoView() called on `<html/>` element scrolls horizontally on chrome and firefox (that shouldn't happen)\n // We could use it to scroll horizontally following RTL but that also seems to be broken - it will always scroll left\n // scrollLeft = 0 also seems to ignore RTL and manually checking for RTL is too much hassle so we will scroll just vertically\n htmlElement.scrollTop = 0;\n // Scroll to domNode if domNode is not in viewport when scrolled to top of document\n if (!topOfElementInViewport(instance, viewportHeight)) {\n // Scroll into view doesn't scroll horizontally by default when not needed\n instance.scrollIntoView();\n }\n }, {\n // We will force layout by querying domNode position\n dontForceLayout: true,\n onlyHashChange: focusAndScrollRef.onlyHashChange\n });\n // Mutate after scrolling so that it can be read by `disableSmoothScrollDuringRouteTransition`\n focusAndScrollRef.onlyHashChange = false;\n focusAndScrollRef.hashFragment = null;\n }, // but be prepared for lots of manual testing.\n undefined);\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_react.Fragment, {\n ref: childrenRef,\n children: props.children\n });\n}\nconst InnerScrollAndMaybeFocusHandler = enableNewScrollHandler ? InnerScrollHandlerNew : InnerScrollAndFocusHandlerOld;\nfunction ScrollAndMaybeFocusHandler({ children, cacheNode }) {\n const context = (0, _react.useContext)(_approutercontextsharedruntime.GlobalLayoutRouterContext);\n if (!context) {\n throw Object.defineProperty(new Error('invariant global layout router not mounted'), \"__NEXT_ERROR_CODE\", {\n value: \"E473\",\n enumerable: false,\n configurable: true\n });\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(InnerScrollAndMaybeFocusHandler, {\n focusAndScrollRef: context.focusAndScrollRef,\n cacheNode: cacheNode,\n children: children\n });\n}\n/**\n * InnerLayoutRouter handles rendering the provided segment based on the cache.\n */ function InnerLayoutRouter({ tree, segmentPath, debugNameContext, cacheNode: maybeCacheNode, params, url, isActive }) {\n const context = (0, _react.useContext)(_approutercontextsharedruntime.GlobalLayoutRouterContext);\n const parentNavPromises = (0, _react.useContext)(_hooksclientcontextsharedruntime.NavigationPromisesContext);\n if (!context) {\n throw Object.defineProperty(new Error('invariant global layout router not mounted'), \"__NEXT_ERROR_CODE\", {\n value: \"E473\",\n enumerable: false,\n configurable: true\n });\n }\n const cacheNode = maybeCacheNode !== null ? maybeCacheNode : // This should only be reachable for inactive/hidden segments, during\n // prerendering The active segment should always be consistent with the\n // CacheNode tree. Regardless, if we don't have a matching CacheNode, we\n // must suspend rather than render nothing, to prevent showing an\n // inconsistent route.\n (0, _react.use)(_unresolvedthenable.unresolvedThenable);\n // `rsc` represents the renderable node for this segment.\n // If this segment has a `prefetchRsc`, it's the statically prefetched data.\n // We should use that on initial render instead of `rsc`. Then we'll switch\n // to `rsc` when the dynamic response streams in.\n //\n // If no prefetch data is available, then we go straight to rendering `rsc`.\n const resolvedPrefetchRsc = cacheNode.prefetchRsc !== null ? cacheNode.prefetchRsc : cacheNode.rsc;\n // We use `useDeferredValue` to handle switching between the prefetched and\n // final values. The second argument is returned on initial render, then it\n // re-renders with the first argument.\n const rsc = (0, _react.useDeferredValue)(cacheNode.rsc, resolvedPrefetchRsc);\n // `rsc` is either a React node or a promise for a React node, except we\n // special case `null` to represent that this segment's data is missing. If\n // it's a promise, we need to unwrap it so we can determine whether or not the\n // data is missing.\n let resolvedRsc;\n if ((0, _pprnavigations.isDeferredRsc)(rsc)) {\n const unwrappedRsc = (0, _react.use)(rsc);\n if (unwrappedRsc === null) {\n // If the promise was resolved to `null`, it means the data for this\n // segment was not returned by the server. Suspend indefinitely. When this\n // happens, the router is responsible for triggering a new state update to\n // un-suspend this segment.\n (0, _react.use)(_unresolvedthenable.unresolvedThenable);\n }\n resolvedRsc = unwrappedRsc;\n } else {\n // This is not a deferred RSC promise. Don't need to unwrap it.\n if (rsc === null) {\n (0, _react.use)(_unresolvedthenable.unresolvedThenable);\n }\n resolvedRsc = rsc;\n }\n // In dev, we create a NavigationPromisesContext containing the instrumented promises that provide\n // `useSelectedLayoutSegment` and `useSelectedLayoutSegments`.\n // Promises are cached outside of render to survive suspense retries.\n let navigationPromises = null;\n if (true) {\n const { createNestedLayoutNavigationPromises } = __webpack_require__(/*! ./navigation-devtools */ \"(ssr)/./node_modules/next/dist/client/components/navigation-devtools.js\");\n navigationPromises = createNestedLayoutNavigationPromises(tree, parentNavPromises);\n }\n let children = resolvedRsc;\n if (navigationPromises) {\n children = /*#__PURE__*/ (0, _jsxruntime.jsx)(_hooksclientcontextsharedruntime.NavigationPromisesContext.Provider, {\n value: navigationPromises,\n children: resolvedRsc\n });\n }\n children = /*#__PURE__*/ (0, _jsxruntime.jsx)(_approutercontextsharedruntime.LayoutRouterContext.Provider, {\n value: {\n parentTree: tree,\n parentCacheNode: cacheNode,\n parentSegmentPath: segmentPath,\n parentParams: params,\n // This is always set to null as we enter a child segment. It's\n // populated by LoadingBoundaryProvider the next time we reach a\n // loading boundary.\n parentLoadingData: null,\n debugNameContext: debugNameContext,\n // TODO-APP: overriding of url for parallel routes\n url: url,\n isActive: isActive\n },\n children: children\n });\n return children;\n}\nfunction LoadingBoundaryProvider({ loading, children }) {\n // Provides the data needed to render a loading.tsx boundary, via context.\n //\n // loading.tsx creates a Suspense boundary around each of a layout's child\n // slots. (Might be bit confusing to think about the data flow, but: if\n // loading.tsx and layout.tsx are in the same directory, they are assigned\n // to the same CacheNode.)\n //\n // This provider component does not render the Suspense boundary directly;\n // that's handled by LoadingBoundary.\n //\n // TODO: For simplicity, we should combine this provider with LoadingBoundary\n // and render the Suspense boundary directly. The only real benefit of doing\n // it separately is so that when there are multiple parallel routes, we only\n // send the boundary data once, rather than once per child. But that's a\n // negligible benefit and can be achieved via caching instead.\n const parentContext = (0, _react.use)(_approutercontextsharedruntime.LayoutRouterContext);\n if (parentContext === null) {\n return children;\n }\n // All values except for parentLoadingData are the same as the parent context.\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_approutercontextsharedruntime.LayoutRouterContext.Provider, {\n value: {\n parentTree: parentContext.parentTree,\n parentCacheNode: parentContext.parentCacheNode,\n parentSegmentPath: parentContext.parentSegmentPath,\n parentParams: parentContext.parentParams,\n parentLoadingData: loading,\n debugNameContext: parentContext.debugNameContext,\n url: parentContext.url,\n isActive: parentContext.isActive\n },\n children: children\n });\n}\n/**\n * Renders suspense boundary with the provided \"loading\" property as the fallback.\n * If no loading property is provided it renders the children without a suspense boundary.\n */ function LoadingBoundary({ name, loading, children }) {\n // TODO: For LoadingBoundary, and the other built-in boundary types, don't\n // wrap in an extra function component if no user-defined boundary is\n // provided. In other words, inline this conditional wrapping logic into\n // the parent component. More efficient and keeps unnecessary junk out of\n // the component stack.\n if (loading !== null) {\n const loadingRsc = loading[0];\n const loadingStyles = loading[1];\n const loadingScripts = loading[2];\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_react.Suspense, {\n name: name,\n fallback: /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\n children: [\n loadingStyles,\n loadingScripts,\n loadingRsc\n ]\n }),\n children: children\n });\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_jsxruntime.Fragment, {\n children: children\n });\n}\nfunction OuterLayoutRouter({ parallelRouterKey, error, errorStyles, errorScripts, templateStyles, templateScripts, template, notFound, forbidden, unauthorized, segmentViewBoundaries }) {\n const context = (0, _react.useContext)(_approutercontextsharedruntime.LayoutRouterContext);\n if (!context) {\n throw Object.defineProperty(new Error('invariant expected layout router to be mounted'), \"__NEXT_ERROR_CODE\", {\n value: \"E56\",\n enumerable: false,\n configurable: true\n });\n }\n const { parentTree, parentCacheNode, parentSegmentPath, parentParams, parentLoadingData, url, isActive, debugNameContext } = context;\n // Get the CacheNode for this segment by reading it from the parent segment's\n // child map.\n const parentTreeSegment = parentTree[0];\n const segmentPath = parentSegmentPath === null ? // the code. We should clean this up.\n [\n parallelRouterKey\n ] : parentSegmentPath.concat([\n parentTreeSegment,\n parallelRouterKey\n ]);\n // The \"state\" key of a segment is the one passed to React — it represents the\n // identity of the UI tree. Whenever the state key changes, the tree is\n // recreated and the state is reset. In the App Router model, search params do\n // not cause state to be lost, so two segments with the same segment path but\n // different search params should have the same state key.\n //\n // The \"cache\" key of a segment, however, *does* include the search params, if\n // it's possible that the segment accessed the search params on the server.\n // (This only applies to page segments; layout segments cannot access search\n // params on the server.)\n const activeTree = parentTree[1][parallelRouterKey];\n const maybeParentSlots = parentCacheNode.slots;\n if (activeTree === undefined || maybeParentSlots === null) {\n // Could not find a matching segment. The client tree is inconsistent with\n // the server tree. Suspend indefinitely; the router will have already\n // detected the inconsistency when handling the server response, and\n // triggered a refresh of the page to recover.\n (0, _react.use)(_unresolvedthenable.unresolvedThenable);\n }\n let maybeValidationBoundaryId = null;\n if (false) {}\n const activeSegment = activeTree[0];\n const activeCacheNode = maybeParentSlots[parallelRouterKey] ?? null;\n const activeStateKey = (0, _createroutercachekey.createRouterCacheKey)(activeSegment, true) // no search params\n ;\n // At each level of the route tree, not only do we render the currently\n // active segment — we also render the last N segments that were active at\n // this level inside a hidden <Activity> boundary, to preserve their state\n // if or when the user navigates to them again.\n //\n // bfcacheEntry is a linked list of FlightRouterStates.\n let bfcacheEntry = (0, _bfcachestatemanager.useRouterBFCache)(activeTree, activeCacheNode, activeStateKey);\n let children = [];\n do {\n const tree = bfcacheEntry.tree;\n const cacheNode = bfcacheEntry.cacheNode;\n const stateKey = bfcacheEntry.stateKey;\n const segment = tree[0];\n /*\n - Error boundary\n - Only renders error boundary if error component is provided.\n - Rendered for each segment to ensure they have their own error state.\n - When gracefully degrade for bots, skip rendering error boundary.\n - Loading boundary\n - Only renders suspense boundary if loading components is provided.\n - Rendered for each segment to ensure they have their own loading state.\n - Passed to the router during rendering to ensure it can be immediately rendered when suspending on a Flight fetch.\n */ let segmentBoundaryTriggerNode = null;\n let segmentViewStateNode = null;\n if (true) {\n const { SegmentBoundaryTriggerNode, SegmentViewStateNode } = __webpack_require__(/*! ../../next-devtools/userspace/app/segment-explorer-node */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js\");\n const pagePrefix = (0, _apppaths.normalizeAppPath)(url);\n segmentViewStateNode = /*#__PURE__*/ (0, _jsxruntime.jsx)(SegmentViewStateNode, {\n page: pagePrefix\n }, pagePrefix);\n segmentBoundaryTriggerNode = /*#__PURE__*/ (0, _jsxruntime.jsx)(_jsxruntime.Fragment, {\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(SegmentBoundaryTriggerNode, {})\n });\n }\n let params = parentParams;\n if (Array.isArray(segment)) {\n // This segment contains a route param. Accumulate these as we traverse\n // down the router tree. The result represents the set of params that\n // the layout/page components are permitted to access below this point.\n const paramName = segment[0];\n const paramCacheKey = segment[1];\n const paramType = segment[2];\n const paramValue = (0, _routeparams.getParamValueFromCacheKey)(paramCacheKey, paramType);\n if (paramValue !== null) {\n params = {\n ...parentParams,\n [paramName]: paramValue\n };\n }\n }\n const debugName = getBoundaryDebugNameFromSegment(segment);\n // `debugNameContext` represents the nearest non-\"virtual\" parent segment.\n // `getBoundaryDebugNameFromSegment` returns undefined for virtual segments.\n // So if `debugName` is undefined, the context is passed through unchanged.\n const childDebugNameContext = debugName ?? debugNameContext;\n // In practical terms, clicking this name in the Suspense DevTools\n // should select the child slots of that layout.\n //\n // So the name we apply to the Activity boundary is actually based on\n // the nearest parent segments.\n //\n // We skip over \"virtual\" parents, i.e. ones inserted by Next.js that\n // don't correspond to application-defined code.\n const isVirtual = debugName === undefined;\n const debugNameToDisplay = isVirtual ? undefined : debugNameContext;\n let templateValue = /*#__PURE__*/ (0, _jsxruntime.jsxs)(ScrollAndMaybeFocusHandler, {\n cacheNode: cacheNode,\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(_errorboundary.ErrorBoundary, {\n errorComponent: error,\n errorStyles: errorStyles,\n errorScripts: errorScripts,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(LoadingBoundary, {\n name: debugNameToDisplay,\n // TODO: The loading module data for a segment is stored on the\n // parent, then applied to each of that parent segment's\n // parallel route slots. In the simple case where there's only\n // one parallel route (the `children` slot), this is no\n // different from if the loading module data were stored on the\n // child directly. But I'm not sure this actually makes sense\n // when there are multiple parallel routes. It's not a huge\n // issue because you always have the option to define a narrower\n // loading boundary for a particular slot. But this sort of\n // smells like an implementation accident to me.\n loading: parentLoadingData,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_errorboundary1.HTTPAccessFallbackBoundary, {\n notFound: notFound,\n forbidden: forbidden,\n unauthorized: unauthorized,\n children: /*#__PURE__*/ (0, _jsxruntime.jsxs)(_redirectboundary.RedirectBoundary, {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(InnerLayoutRouter, {\n url: url,\n tree: tree,\n params: params,\n cacheNode: cacheNode,\n segmentPath: segmentPath,\n debugNameContext: childDebugNameContext,\n isActive: isActive && stateKey === activeStateKey\n }),\n segmentBoundaryTriggerNode\n ]\n })\n })\n })\n }),\n segmentViewStateNode\n ]\n });\n if (false) {}\n let child = /*#__PURE__*/ (0, _jsxruntime.jsxs)(_approutercontextsharedruntime.TemplateContext.Provider, {\n value: templateValue,\n children: [\n templateStyles,\n templateScripts,\n template\n ]\n }, stateKey);\n if (true) {\n const { SegmentStateProvider } = __webpack_require__(/*! ../../next-devtools/userspace/app/segment-explorer-node */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js\");\n child = /*#__PURE__*/ (0, _jsxruntime.jsxs)(SegmentStateProvider, {\n children: [\n child,\n segmentViewBoundaries\n ]\n }, stateKey);\n }\n if (false) {}\n children.push(child);\n bfcacheEntry = bfcacheEntry.next;\n }while (bfcacheEntry !== null);\n return children;\n}\nfunction getBoundaryDebugNameFromSegment(segment) {\n if (segment === '/') {\n // Reached the root\n return '/';\n }\n if (typeof segment === 'string') {\n if (isVirtualLayout(segment)) {\n return undefined;\n } else {\n return segment + '/';\n }\n }\n const paramCacheKey = segment[1];\n return paramCacheKey + '/';\n}\nfunction isVirtualLayout(segment) {\n return(// (like __PAGE__ and __DEFAULT__) to avoid collisions with\n // user-defined route groups.\n segment === '(__SLOT__)');\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=layout-router.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2xheW91dC1yb3V0ZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBNGZnQkEsdUJBQXVCO2VBQXZCQTs7SUFzRmhCOzs7Q0FHQyxHQUNELE9BcVFDO2VBclF1QkM7Ozs7Ozs2RUEvakJqQjsrRUFDYzsyREFLZDtnREFDNEI7MkNBQ0w7aURBQzJCOzhDQUN4Qjs0Q0FDVTtrREFDTjtpREFJOUI7c0NBQzBCOzZEQUkxQjt5Q0FDbUM7NENBRVo7QUFFOUIsTUFBTUMseUJBQXlCQyxLQUF5QztBQUV4RSxNQUFNRywrREFDSkMsVUFBQUEsT0FBUSxDQUNSRCw0REFBNEQ7QUFFOUQsNEZBQTRGO0FBQzVGOztDQUVDLEdBQ0QsU0FBU0UsWUFDUEMsUUFBZ0Q7SUFFaEQsK0JBQStCO0lBQy9CLElBQUksSUFBNkIsRUFBRSxPQUFPO0lBRTFDLHVHQUF1RztJQUN2RyxrQ0FBa0M7SUFDbEMsTUFBTUUsK0JBQ0pMLDZEQUE2REUsV0FBVztJQUMxRSxPQUFPRyw2QkFBNkJGO0FBQ3RDO0FBRUEsTUFBTUcsaUJBQWlCO0lBQ3JCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7Q0FDRDtBQUNEOztDQUVDLEdBQ0QsU0FBU0Msa0JBQWtCQyxPQUFvQjtJQUM3QyxrR0FBa0c7SUFDbEcsMEZBQTBGO0lBQzFGLG1EQUFtRDtJQUNuRCxJQUFJO1FBQUM7UUFBVTtLQUFRLENBQUNDLFFBQVEsQ0FBQ0MsaUJBQWlCRixTQUFTRyxRQUFRLEdBQUc7UUFDcEUsT0FBTztJQUNUO0lBRUEsMkZBQTJGO0lBQzNGLHdEQUF3RDtJQUN4RCxNQUFNQyxPQUFPSixRQUFRSyxxQkFBcUI7SUFDMUMsT0FBT1AsZUFBZVEsS0FBSyxDQUFDLENBQUNDLE9BQVNILElBQUksQ0FBQ0csS0FBSyxLQUFLO0FBQ3ZEO0FBRUE7O0NBRUMsR0FDRCxTQUFTQyx1QkFDUGIsUUFBd0MsRUFDeENjLGNBQXNC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QUNUO0FBRUEsU0FBU3NILGdDQUFnQ2hCLE9BQWdCO0lBQ3ZELElBQUlBLFlBQVksS0FBSztRQUNuQixtQkFBbUI7UUFDbkIsT0FBTztJQUNUO0lBQ0EsSUFBSSxPQUFPQSxZQUFZLFVBQVU7UUFDL0IsSUFBSWtDLGdCQUFnQmxDLFVBQVU7WUFDNUIsT0FBTzFFO1FBQ1QsT0FBTztZQUNMLE9BQU8wRSxVQUFVO1FBQ25CO0lBQ0Y7SUFDQSxNQUFNVyxnQkFBZ0JYLE9BQU8sQ0FBQyxFQUFFO0lBQ2hDLE9BQU9XLGdCQUFnQjtBQUN6QjtBQUVBLFNBQVN1QixnQkFBZ0JsQyxPQUFlO0lBQ3RDLE9BQ0UsMkRBQzJEO0lBQzNELDZCQUE2QjtJQUM3QkEsWUFBWTtBQUVoQiIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9jbGllbnQvY29tcG9uZW50cy9sYXlvdXQtcm91dGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuaW1wb3J0IHR5cGUgeyBDYWNoZU5vZGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItdHlwZXMnXG5pbXBvcnQgdHlwZSB7IExvYWRpbmdNb2R1bGVEYXRhIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLXR5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgRmxpZ2h0U2VnbWVudFBhdGgsXG4gIFNlZ21lbnQsXG59IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci10eXBlcydcbmltcG9ydCB0eXBlIHsgRXJyb3JDb21wb25lbnQgfSBmcm9tICcuL2Vycm9yLWJvdW5kYXJ5J1xuaW1wb3J0IHR5cGUgeyBGb2N1c0FuZFNjcm9sbFJlZiB9IGZyb20gJy4vcm91dGVyLXJlZHVjZXIvcm91dGVyLXJlZHVjZXItdHlwZXMnXG5cbmltcG9ydCBSZWFjdCwge1xuICBBY3Rpdml0eSxcbiAgRnJhZ21lbnQsXG4gIHVzZUNvbnRleHQsXG4gIHVzZSxcbiAgU3VzcGVuc2UsXG4gIHVzZURlZmVycmVkVmFsdWUsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgdHlwZSBGcmFnbWVudEluc3RhbmNlLFxuICB0eXBlIEpTWCxcbiAgdHlwZSBBY3Rpdml0eVByb3BzLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQge1xuICBMYXlvdXRSb3V0ZXJDb250ZXh0LFxuICBHbG9iYWxMYXlvdXRSb3V0ZXJDb250ZXh0LFxuICBUZW1wbGF0ZUNvbnRleHQsXG59IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHsgdW5yZXNvbHZlZFRoZW5hYmxlIH0gZnJvbSAnLi91bnJlc29sdmVkLXRoZW5hYmxlJ1xuaW1wb3J0IHsgRXJyb3JCb3VuZGFyeSB9IGZyb20gJy4vZXJyb3ItYm91bmRhcnknXG5pbXBvcnQgeyBkaXNhYmxlU21vb3RoU2Nyb2xsRHVyaW5nUm91dGVUcmFuc2l0aW9uIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZGlzYWJsZS1zbW9vdGgtc2Nyb2xsJ1xuaW1wb3J0IHsgUmVkaXJlY3RCb3VuZGFyeSB9IGZyb20gJy4vcmVkaXJlY3QtYm91bmRhcnknXG5pbXBvcnQgeyBIVFRQQWNjZXNzRmFsbGJhY2tCb3VuZGFyeSB9IGZyb20gJy4vaHR0cC1hY2Nlc3MtZmFsbGJhY2svZXJyb3ItYm91bmRhcnknXG5pbXBvcnQgeyBjcmVhdGVSb3V0ZXJDYWNoZUtleSB9IGZyb20gJy4vcm91dGVyLXJlZHVjZXIvY3JlYXRlLXJvdXRlci1jYWNoZS1rZXknXG5pbXBvcnQge1xuICB1c2VSb3V0ZXJCRkNhY2hlLFxuICB0eXBlIFJvdXRlckJGQ2FjaGVFbnRyeSxcbn0gZnJvbSAnLi9iZmNhY2hlLXN0YXRlLW1hbmFnZXInXG5pbXBvcnQgeyBub3JtYWxpemVBcHBQYXRoIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvYXBwLXBhdGhzJ1xuaW1wb3J0IHtcbiAgTmF2aWdhdGlvblByb21pc2VzQ29udGV4dCxcbiAgdHlwZSBOYXZpZ2F0aW9uUHJvbWlzZXMsXG59IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvaG9va3MtY2xpZW50LWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgeyBnZXRQYXJhbVZhbHVlRnJvbUNhY2hlS2V5IH0gZnJvbSAnLi4vcm91dGUtcGFyYW1zJ1xuaW1wb3J0IHR5cGUgeyBQYXJhbXMgfSBmcm9tICcuLi8uLi9zZXJ2ZXIvcmVxdWVzdC9wYXJhbXMnXG5pbXBvcnQgeyBpc0RlZmVycmVkUnNjIH0gZnJvbSAnLi9yb3V0ZXItcmVkdWNlci9wcHItbmF2aWdhdGlvbnMnXG5cbmNvbnN0IGVuYWJsZU5ld1Njcm9sbEhhbmRsZXIgPSBwcm9jZXNzLmVudi5fX05FWFRfQVBQX05FV19TQ1JPTExfSEFORExFUlxuXG5jb25zdCBfX0RPTV9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREUgPSAoXG4gIFJlYWN0RE9NIGFzIGFueVxuKS5fX0RPTV9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREVcblxuLy8gVE9ETy1BUFA6IFJlcGxhY2Ugd2l0aCBuZXcgUmVhY3QgQVBJIGZvciBmaW5kaW5nIGRvbSBub2RlcyB3aXRob3V0IGEgYHJlZmAgd2hlbiBhdmFpbGFibGVcbi8qKlxuICogV3JhcHMgUmVhY3RET00uZmluZERPTU5vZGUgd2l0aCBhZGRpdGlvbmFsIGxvZ2ljIHRvIGhpZGUgUmVhY3QgU3RyaWN0IE1vZGUgd2FybmluZ1xuICovXG5mdW5jdGlvbiBmaW5kRE9NTm9kZShcbiAgaW5zdGFuY2U6IFJlYWN0LlJlYWN0SW5zdGFuY2UgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBFbGVtZW50IHwgVGV4dCB8IG51bGwge1xuICAvLyBUcmVlLXNoYWtlIGZvciBzZXJ2ZXIgYnVuZGxlXG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykgcmV0dXJuIG51bGxcblxuICAvLyBfX0RPTV9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREUuZmluZERPTU5vZGUgaXMgbnVsbCBkdXJpbmcgbW9kdWxlIGluaXQuXG4gIC8vIFdlIG5lZWQgdG8gbGF6aWx5IHJlZmVyZW5jZSBpdC5cbiAgY29uc3QgaW50ZXJuYWxfcmVhY3RET01maW5kRE9NTm9kZSA9XG4gICAgX19ET01fSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfV0FSTl9VU0VSU19USEVZX0NBTk5PVF9VUEdSQURFLmZpbmRET01Ob2RlXG4gIHJldHVybiBpbnRlcm5hbF9yZWFjdERPTWZpbmRET01Ob2RlKGluc3RhbmNlKVxufVxuXG5jb25zdCByZWN0UHJvcGVydGllcyA9IFtcbiAgJ2JvdHRvbScsXG4gICdoZWlnaHQnLFxuICAnbGVmdCcsXG4gICdyaWdodCcsXG4gICd0b3AnLFxuICAnd2lkdGgnLFxuICAneCcsXG4gICd5Jyxcbl0gYXMgY29uc3Rcbi8qKlxuICogQ2hlY2sgaWYgYSBIVE1MRWxlbWVudCBpcyBoaWRkZW4gb3IgZml4ZWQvc3RpY2t5IHBvc2l0aW9uXG4gKi9cbmZ1bmN0aW9uIHNob3VsZFNraXBFbGVtZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gIC8vIHdlIGlnbm9yZSBmaXhlZCBvciBzdGlja3kgcG9zaXRpb25lZCBlbGVtZW50cyBzaW5jZSB0aGV5J2xsIGxpa2VseSBwYXNzIHRoZSBcImluLXZpZXdwb3J0XCIgY2hlY2tcbiAgLy8gYW5kIHdpbGwgcmVzdWx0IGluIGEgc2l0dWF0aW9uIHdlIGJhaWwgb24gc2Nyb2xsIGJlY2F1c2Ugb2Ygc29tZXRoaW5nIGxpa2UgYSBmaXhlZCBuYXYsXG4gIC8vIGV2ZW4gdGhvdWdoIHRoZSBhY3R1YWwgcGFnZSBjb250ZW50IGlzIG9mZnNjcmVlblxuICBpZiAoWydzdGlja3knLCAnZml4ZWQnXS5pbmNsdWRlcyhnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uKSkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvLyBVc2VzIGBnZXRCb3VuZGluZ0NsaWVudFJlY3RgIHRvIGNoZWNrIGlmIHRoZSBlbGVtZW50IGlzIGhpZGRlbiBpbnN0ZWFkIG9mIGBvZmZzZXRQYXJlbnRgXG4gIC8vIGJlY2F1c2UgYG9mZnNldFBhcmVudGAgZG9lc24ndCBjb25zaWRlciBkb2N1bWVudC9ib2R5XG4gIGNvbnN0IHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gIHJldHVybiByZWN0UHJvcGVydGllcy5ldmVyeSgoaXRlbSkgPT4gcmVjdFtpdGVtXSA9PT0gMClcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgdG9wIGNvcm5lciBvZiB0aGUgSFRNTEVsZW1lbnQgaXMgaW4gdGhlIHZpZXdwb3J0LlxuICovXG5mdW5jdGlvbiB0b3BPZkVsZW1lbnRJblZpZXdwb3J0KFxuICBpbnN0YW5jZTogSFRNTEVsZW1lbnQgfCBGcmFnbWVudEluc3RhbmNlLFxuICB2aWV3cG9ydEhlaWdodDogbnVtYmVyXG4pOiBib29sZWFuIHtcbiAgY29uc3QgcmVjdHMgPSBpbnN0YW5jZS5nZXRDbGllbnRSZWN0cygpXG4gIGlmIChyZWN0cy5sZW5ndGggPT09IDApIHtcbiAgICAvLyBKdXN0IHRvIGJlIGV4cGxpY2l0LlxuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGxldCBlbGVtZW50VG9wID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmVjdHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCByZWN0ID0gcmVjdHNbaV1cbiAgICBpZiAocmVjdC50b3AgPCBlbGVtZW50VG9wKSB7XG4gICAgICBlbGVtZW50VG9wID0gcmVjdC50b3BcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGVsZW1lbnRUb3AgPj0gMCAmJiBlbGVtZW50VG9wIDw9IHZpZXdwb3J0SGVpZ2h0XG59XG5cbi8qKlxuICogRmluZCB0aGUgRE9NIG5vZGUgZm9yIGEgaGFzaCBmcmFnbWVudC5cbiAqIElmIGB0b3BgIHRoZSBwYWdlIGhhcyB0byBzY3JvbGwgdG8gdGhlIHRvcCBvZiB0aGUgcGFnZS4gVGhpcyBtaXJyb3JzIHRoZSBicm93c2VyJ3MgYmVoYXZpb3IuXG4gKiBJZiB0aGUgaGFzaCBmcmFnbWVudCBpcyBhbiBpZCwgdGhlIHBhZ2UgaGFzIHRvIHNjcm9sbCB0byB0aGUgZWxlbWVudCB3aXRoIHRoYXQgaWQuXG4gKiBJZiB0aGUgaGFzaCBmcmFnbWVudCBpcyBhIG5hbWUsIHRoZSBwYWdlIGhhcyB0byBzY3JvbGwgdG8gdGhlIGZpcnN0IGVsZW1lbnQgd2l0aCB0aGF0IG5hbWUuXG4gKi9cbmZ1bmN0aW9uIGdldEhhc2hGcmFnbWVudERvbU5vZGUoaGFzaEZyYWdtZW50OiBzdHJpbmcpIHtcbiAgLy8gSWYgdGhlIGhhc2ggZnJhZ21lbnQgaXMgYHRvcGAgdGhlIHBhZ2UgaGFzIHRvIHNjcm9sbCB0byB0aGUgdG9wIG9mIHRoZSBwYWdlLlxuICBpZiAoaGFzaEZyYWdtZW50ID09PSAndG9wJykge1xuICAgIHJldHVybiBkb2N1bWVudC5ib2R5XG4gIH1cblxuICAvLyBJZiB0aGUgaGFzaCBmcmFnbWVudCBpcyBhbiBpZCwgdGhlIHBhZ2UgaGFzIHRvIHNjcm9sbCB0byB0aGUgZWxlbWVudCB3aXRoIHRoYXQgaWQuXG4gIHJldHVybiAoXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaGFzaEZyYWdtZW50KSA/P1xuICAgIC8vIElmIHRoZSBoYXNoIGZyYWdtZW50IGlzIGEgbmFtZSwgdGhlIHBhZ2UgaGFzIHRvIHNjcm9sbCB0byB0aGUgZmlyc3QgZWxlbWVudCB3aXRoIHRoYXQgbmFtZS5cbiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZShoYXNoRnJhZ21lbnQpWzBdXG4gIClcbn1cbmludGVyZmFjZSBTY3JvbGxBbmRNYXliZUZvY3VzSGFuZGxlclByb3BzIHtcbiAgZm9jdXNBbmRTY3JvbGxSZWY6IEZvY3VzQW5kU2Nyb2xsUmVmXG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbiAgY2FjaGVOb2RlOiBDYWNoZU5vZGVcbn1cbmNsYXNzIElubmVyU2Nyb2xsQW5kRm9jdXNIYW5kbGVyT2xkIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFNjcm9sbEFuZE1heWJlRm9jdXNIYW5kbGVyUHJvcHM+IHtcbiAgaGFuZGxlUG90ZW50aWFsU2Nyb2xsID0gKCkgPT4ge1xuICAgIC8vIEhhbmRsZSBzY3JvbGwgYW5kIGZvY3VzLCBpdCdzIG9ubHkgYXBwbGllZCBvbmNlLlxuICAgIGNvbnN0IHsgZm9jdXNBbmRTY3JvbGxSZWYsIGNhY2hlTm9kZSB9ID0gdGhpcy5wcm9wc1xuXG4gICAgY29uc3Qgc2Nyb2xsUmVmID0gZm9jdXNBbmRTY3JvbGxSZWYuZm9yY2VTY3JvbGxcbiAgICAgID8gZm9jdXNBbmRTY3JvbGxSZWYuc2Nyb2xsUmVmXG4gICAgICA6IGNhY2hlTm9kZS5zY3JvbGxSZWZcbiAgICBpZiAoc2Nyb2xsUmVmID09PSBudWxsIHx8ICFzY3JvbGxSZWYuY3VycmVudCkgcmV0dXJuXG5cbiAgICBsZXQgZG9tTm9kZTpcbiAgICAgIHwgUmV0dXJuVHlwZTx0eXBlb2YgZ2V0SGFzaEZyYWdtZW50RG9tTm9kZT5cbiAgICAgIHwgUmV0dXJuVHlwZTx0eXBlb2YgZmluZERPTU5vZGU+ID0gbnVsbFxuICAgIGNvbnN0IGhhc2hGcmFnbWVudCA9IGZvY3VzQW5kU2Nyb2xsUmVmLmhhc2hGcmFnbWVudFxuXG4gICAgaWYgKGhhc2hGcmFnbWVudCkge1xuICAgICAgZG9tTm9kZSA9IGdldEhhc2hGcmFnbWVudERvbU5vZGUoaGFzaEZyYWdtZW50KVxuICAgIH1cblxuICAgIC8vIGBmaW5kRE9NTm9kZWAgaXMgdHJpY2t5IGJlY2F1c2UgaXQgcmV0dXJucyBqdXN0IHRoZSBmaXJzdCBjaGlsZCBpZiB0aGUgY29tcG9uZW50IGlzIGEgZnJhZ21lbnQuXG4gICAgLy8gVGhpcyBhbHJlYWR5IGNhdXNlZCBhIGJ1ZyB3aGVyZSB0aGUgZmlyc3QgY2hpbGQgd2FzIGEgPGxpbmsvPiBpbiBoZWFkLlxuICAgIGlmICghZG9tTm9kZSkge1xuICAgICAgZG9tTm9kZSA9IGZpbmRET01Ob2RlKHRoaXMpXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUgaXMgbm8gRE9NIG5vZGUgdGhpcyBsYXlvdXQtcm91dGVyIGxldmVsIGlzIHNraXBwZWQuIEl0J2xsIGJlIGhhbmRsZWQgaGlnaGVyLXVwIGluIHRoZSB0cmVlLlxuICAgIGlmICghKGRvbU5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gVmVyaWZ5IGlmIHRoZSBlbGVtZW50IGlzIGEgSFRNTEVsZW1lbnQgYW5kIGlmIHdlIHdhbnQgdG8gY29uc2lkZXIgaXQgZm9yIHNjcm9sbCBiZWhhdmlvci5cbiAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBza2lwcGVkLCB0cnkgdG8gc2VsZWN0IHRoZSBuZXh0IHNpYmxpbmcgYW5kIHRyeSBhZ2Fpbi5cbiAgICB3aGlsZSAoIShkb21Ob2RlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHx8IHNob3VsZFNraXBFbGVtZW50KGRvbU5vZGUpKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAoZG9tTm9kZS5wYXJlbnRFbGVtZW50Py5sb2NhbE5hbWUgPT09ICdoZWFkJykge1xuICAgICAgICAgIC8vIFdlIGVudGVyIHRoaXMgc3RhdGUgd2hlbiBtZXRhZGF0YSB3YXMgcmVuZGVyZWQgYXMgcGFydCBvZiB0aGUgcGFnZSBvciB2aWEgTmV4dC5qcy5cbiAgICAgICAgICAvLyBUaGlzIGlzIGFsd2F5cyBhIGJ1ZyBpbiBOZXh0LmpzIGFuZCBjYXVzZWQgYnkgUmVhY3QgaG9pc3RpbmcgbWV0YWRhdGEuXG4gICAgICAgICAgLy8gRml4ZWQgd2l0aCBgZXhwZXJpbWVudGFsLmFwcE5ld1Njcm9sbEhhbmRsZXJgXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gTm8gc2libGluZ3MgZm91bmQgdGhhdCBtYXRjaCB0aGUgY3JpdGVyaWEgYXJlIGZvdW5kLCBzbyBoYW5kbGUgc2Nyb2xsIGhpZ2hlciB1cCBpbiB0aGUgdHJlZSBpbnN0ZWFkLlxuICAgICAgaWYgKGRvbU5vZGUubmV4dEVsZW1lbnRTaWJsaW5nID09PSBudWxsKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgZG9tTm9kZSA9IGRvbU5vZGUubmV4dEVsZW1lbnRTaWJsaW5nXG4gICAgfVxuXG4gICAgLy8gTWFyayBhcyBzY3JvbGxlZCBzbyBubyBvdGhlciBzZWdtZW50IHNjcm9sbHMgZm9yIHRoaXMgbmF2aWdhdGlvbi5cbiAgICBzY3JvbGxSZWYuY3VycmVudCA9IGZhbHNlXG5cbiAgICBkaXNhYmxlU21vb3RoU2Nyb2xsRHVyaW5nUm91dGVUcmFuc2l0aW9uKFxuICAgICAgKCkgPT4ge1xuICAgICAgICAvLyBJbiBjYXNlIG9mIGhhc2ggc2Nyb2xsLCB3ZSBvbmx5IG5lZWQgdG8gc2Nyb2xsIHRoZSBlbGVtZW50IGludG8gdmlld1xuICAgICAgICBpZiAoaGFzaEZyYWdtZW50KSB7XG4gICAgICAgICAgZG9tTm9kZS5zY3JvbGxJbnRvVmlldygpXG5cbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICAvLyBTdG9yZSB0aGUgY3VycmVudCB2aWV3cG9ydCBoZWlnaHQgYmVjYXVzZSByZWFkaW5nIGBjbGllbnRIZWlnaHRgIGNhdXNlcyBhIHJlZmxvdyxcbiAgICAgICAgLy8gYW5kIGl0IHdvbid0IGNoYW5nZSBkdXJpbmcgdGhpcyBmdW5jdGlvbi5cbiAgICAgICAgY29uc3QgaHRtbEVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRcbiAgICAgICAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSBodG1sRWxlbWVudC5jbGllbnRIZWlnaHRcblxuICAgICAgICAvLyBJZiB0aGUgZWxlbWVudCdzIHRvcCBlZGdlIGlzIGFscmVhZHkgaW4gdGhlIHZpZXdwb3J0LCBleGl0IGVhcmx5LlxuICAgICAgICBpZiAodG9wT2ZFbGVtZW50SW5WaWV3cG9ydChkb21Ob2RlLCB2aWV3cG9ydEhlaWdodCkpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE90aGVyd2lzZSwgdHJ5IHNjcm9sbGluZyBnbyB0aGUgdG9wIG9mIHRoZSBkb2N1bWVudCB0byBiZSBiYWNrd2FyZCBjb21wYXRpYmxlIHdpdGggcGFnZXNcbiAgICAgICAgLy8gc2Nyb2xsSW50b1ZpZXcoKSBjYWxsZWQgb24gYDxodG1sLz5gIGVsZW1lbnQgc2Nyb2xscyBob3Jpem9udGFsbHkgb24gY2hyb21lIGFuZCBmaXJlZm94ICh0aGF0IHNob3VsZG4ndCBoYXBwZW4pXG4gICAgICAgIC8vIFdlIGNvdWxkIHVzZSBpdCB0byBzY3JvbGwgaG9yaXpvbnRhbGx5IGZvbGxvd2luZyBSVEwgYnV0IHRoYXQgYWxzbyBzZWVtcyB0byBiZSBicm9rZW4gLSBpdCB3aWxsIGFsd2F5cyBzY3JvbGwgbGVmdFxuICAgICAgICAvLyBzY3JvbGxMZWZ0ID0gMCBhbHNvIHNlZW1zIHRvIGlnbm9yZSBSVEwgYW5kIG1hbnVhbGx5IGNoZWNraW5nIGZvciBSVEwgaXMgdG9vIG11Y2ggaGFzc2xlIHNvIHdlIHdpbGwgc2Nyb2xsIGp1c3QgdmVydGljYWxseVxuICAgICAgICBodG1sRWxlbWVudC5zY3JvbGxUb3AgPSAwXG5cbiAgICAgICAgLy8gU2Nyb2xsIHRvIGRvbU5vZGUgaWYgZG9tTm9kZSBpcyBub3QgaW4gdmlld3BvcnQgd2hlbiBzY3JvbGxlZCB0byB0b3Agb2YgZG9jdW1lbnRcbiAgICAgICAgaWYgKCF0b3BPZkVsZW1lbnRJblZpZXdwb3J0KGRvbU5vZGUsIHZpZXdwb3J0SGVpZ2h0KSkge1xuICAgICAgICAgIC8vIFNjcm9sbCBpbnRvIHZpZXcgZG9lc24ndCBzY3JvbGwgaG9yaXpvbnRhbGx5IGJ5IGRlZmF1bHQgd2hlbiBub3QgbmVlZGVkXG4gICAgICAgICAgZG9tTm9kZS5zY3JvbGxJbnRvVmlldygpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIFdlIHdpbGwgZm9yY2UgbGF5b3V0IGJ5IHF1ZXJ5aW5nIGRvbU5vZGUgcG9zaXRpb25cbiAgICAgICAgZG9udEZvcmNlTGF5b3V0OiB0cnVlLFxuICAgICAgICBvbmx5SGFzaENoYW5nZTogZm9jdXNBbmRTY3JvbGxSZWYub25seUhhc2hDaGFuZ2UsXG4gICAgICB9XG4gICAgKVxuXG4gICAgLy8gTXV0YXRlIGFmdGVyIHNjcm9sbGluZyBzbyB0aGF0IGl0IGNhbiBiZSByZWFkIGJ5IGBkaXNhYmxlU21vb3RoU2Nyb2xsRHVyaW5nUm91dGVUcmFuc2l0aW9uYFxuICAgIGZvY3VzQW5kU2Nyb2xsUmVmLm9ubHlIYXNoQ2hhbmdlID0gZmFsc2VcbiAgICBmb2N1c0FuZFNjcm9sbFJlZi5oYXNoRnJhZ21lbnQgPSBudWxsXG5cbiAgICAvLyBTZXQgZm9jdXMgb24gdGhlIGVsZW1lbnRcbiAgICBkb21Ob2RlLmZvY3VzKClcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRoaXMuaGFuZGxlUG90ZW50aWFsU2Nyb2xsKClcbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICB0aGlzLmhhbmRsZVBvdGVudGlhbFNjcm9sbCgpXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW5cbiAgfVxufVxuXG4vKipcbiAqIEZvcmsgb2YgSW5uZXJTY3JvbGxBbmRGb2N1c0hhbmRsZXJPbGQgdXNpbmcgRnJhZ21lbnQgcmVmcyBmb3Igc2Nyb2xsaW5nLlxuICogTm8gbG9uZ2VyIGZvY3VzZXMgdGhlIGZpcnN0IGhvc3QgZGVzY2VuZGFudC5cbiAqL1xuZnVuY3Rpb24gSW5uZXJTY3JvbGxIYW5kbGVyTmV3KHByb3BzOiBTY3JvbGxBbmRNYXliZUZvY3VzSGFuZGxlclByb3BzKSB7XG4gIGNvbnN0IGNoaWxkcmVuUmVmID0gUmVhY3QudXNlUmVmPEZyYWdtZW50SW5zdGFuY2U+KG51bGwpXG5cbiAgdXNlTGF5b3V0RWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IHsgZm9jdXNBbmRTY3JvbGxSZWYsIGNhY2hlTm9kZSB9ID0gcHJvcHNcblxuICAgICAgY29uc3Qgc2Nyb2xsUmVmID0gZm9jdXNBbmRTY3JvbGxSZWYuZm9yY2VTY3JvbGxcbiAgICAgICAgPyBmb2N1c0FuZFNjcm9sbFJlZi5zY3JvbGxSZWZcbiAgICAgICAgOiBjYWNoZU5vZGUuc2Nyb2xsUmVmXG4gICAgICBpZiAoc2Nyb2xsUmVmID09PSBudWxsIHx8ICFzY3JvbGxSZWYuY3VycmVudCkgcmV0dXJuXG5cbiAgICAgIGxldCBpbnN0YW5jZTogRnJhZ21lbnRJbnN0YW5jZSB8IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGxcbiAgICAgIGNvbnN0IGhhc2hGcmFnbWVudCA9IGZvY3VzQW5kU2Nyb2xsUmVmLmhhc2hGcmFnbWVudFxuXG4gICAgICBpZiAoaGFzaEZyYWdtZW50KSB7XG4gICAgICAgIGluc3RhbmNlID0gZ2V0SGFzaEZyYWdtZW50RG9tTm9kZShoYXNoRnJhZ21lbnQpXG4gICAgICB9XG5cbiAgICAgIGlmICghaW5zdGFuY2UpIHtcbiAgICAgICAgaW5zdGFuY2UgPSBjaGlsZHJlblJlZi5jdXJyZW50XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZXJlIGlzIG5vIERPTSBub2RlIHRoaXMgbGF5b3V0LXJvdXRlciBsZXZlbCBpcyBza2lwcGVkLiBJdCdsbCBiZSBoYW5kbGVkIGhpZ2hlci11cCBpbiB0aGUgdHJlZS5cbiAgICAgIGlmIChpbnN0YW5jZSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gTWFyayBhcyBzY3JvbGxlZCBzbyBubyBvdGhlciBzZWdtZW50IHNjcm9sbHMgZm9yIHRoaXMgbmF2aWdhdGlvbi5cbiAgICAgIHNjcm9sbFJlZi5jdXJyZW50ID0gZmFsc2VcblxuICAgICAgY29uc3QgYWN0aXZlRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcbiAgICAgIGlmIChcbiAgICAgICAgYWN0aXZlRWxlbWVudCAhPT0gbnVsbCAmJlxuICAgICAgICAnYmx1cicgaW4gYWN0aXZlRWxlbWVudCAmJlxuICAgICAgICB0eXBlb2YgYWN0aXZlRWxlbWVudC5ibHVyID09PSAnZnVuY3Rpb24nXG4gICAgICApIHtcbiAgICAgICAgLy8gVHJ5aW5nIHRvIG1hdGNoIGhhcmQgbmF2aWdhdGlvbnMuXG4gICAgICAgIC8vIElkZWFsbHkgd2UnZCBtb3ZlIHRoZSBpbnRlcm5hbCBmb2N1cyBjdXJzb3IgZWl0aGVyIHRvIHRoZSB0b3BcbiAgICAgICAgLy8gb3IgYXQgbGVhc3QgYmVmb3JlIHRoZSBzZWdtZW50LiBCdXQgdGhlcmUncyBubyBET00gQVBJIHRvIGRvIHRoYXQsXG4gICAgICAgIC8vIHNvIHdlIGp1c3QgYmx1ci5cbiAgICAgICAgLy8gV2UgY291bGQgd29ya2Fyb3VuZCB0aGlzIGJ5IG1vdmluZyBmb2N1cyB0byBhIHRlbXBvcmFyeSBlbGVtZW50IGluXG4gICAgICAgIC8vIHRoZSBib2R5LiBCdXQgYWRkaW5nIGVsZW1lbnRzIG1pZ2h0IHRyaWdnZXIgbGF5b3V0IG9yIG90aGVyIGVmZmVjdHNcbiAgICAgICAgLy8gc28gaXQgc2hvdWxkIGJlIHdlbGwgbW90aXZhdGVkLlxuICAgICAgICBhY3RpdmVFbGVtZW50LmJsdXIoKVxuICAgICAgfVxuXG4gICAgICBkaXNhYmxlU21vb3RoU2Nyb2xsRHVyaW5nUm91dGVUcmFuc2l0aW9uKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgLy8gSW4gY2FzZSBvZiBoYXNoIHNjcm9sbCwgd2Ugb25seSBuZWVkIHRvIHNjcm9sbCB0aGUgZWxlbWVudCBpbnRvIHZpZXdcbiAgICAgICAgICBpZiAoaGFzaEZyYWdtZW50KSB7XG4gICAgICAgICAgICBpbnN0YW5jZS5zY3JvbGxJbnRvVmlldygpXG5cbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBTdG9yZSB0aGUgY3VycmVudCB2aWV3cG9ydCBoZWlnaHQgYmVjYXVzZSByZWFkaW5nIGBjbGllbnRIZWlnaHRgIGNhdXNlcyBhIHJlZmxvdyxcbiAgICAgICAgICAvLyBhbmQgaXQgd29uJ3QgY2hhbmdlIGR1cmluZyB0aGlzIGZ1bmN0aW9uLlxuICAgICAgICAgIGNvbnN0IGh0bWxFbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XG4gICAgICAgICAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSBodG1sRWxlbWVudC5jbGllbnRIZWlnaHRcblxuICAgICAgICAgIC8vIElmIHRoZSBlbGVtZW50J3MgdG9wIGVkZ2UgaXMgYWxyZWFkeSBpbiB0aGUgdmlld3BvcnQsIGV4aXQgZWFybHkuXG4gICAgICAgICAgaWYgKHRvcE9mRWxlbWVudEluVmlld3BvcnQoaW5zdGFuY2UsIHZpZXdwb3J0SGVpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gT3RoZXJ3aXNlLCB0cnkgc2Nyb2xsaW5nIGdvIHRoZSB0b3Agb2YgdGhlIGRvY3VtZW50IHRvIGJlIGJhY2t3YXJkIGNvbXBhdGlibGUgd2l0aCBwYWdlc1xuICAgICAgICAgIC8vIHNjcm9sbEludG9WaWV3KCkgY2FsbGVkIG9uIGA8aHRtbC8+YCBlbGVtZW50IHNjcm9sbHMgaG9yaXpvbnRhbGx5IG9uIGNocm9tZSBhbmQgZmlyZWZveCAodGhhdCBzaG91bGRuJ3QgaGFwcGVuKVxuICAgICAgICAgIC8vIFdlIGNvdWxkIHVzZSBpdCB0byBzY3JvbGwgaG9yaXpvbnRhbGx5IGZvbGxvd2luZyBSVEwgYnV0IHRoYXQgYWxzbyBzZWVtcyB0byBiZSBicm9rZW4gLSBpdCB3aWxsIGFsd2F5cyBzY3JvbGwgbGVmdFxuICAgICAgICAgIC8vIHNjcm9sbExlZnQgPSAwIGFsc28gc2VlbXMgdG8gaWdub3JlIFJUTCBhbmQgbWFudWFsbHkgY2hlY2tpbmcgZm9yIFJUTCBpcyB0b28gbXVjaCBoYXNzbGUgc28gd2Ugd2lsbCBzY3JvbGwganVzdCB2ZXJ0aWNhbGx5XG4gICAgICAgICAgaHRtbEVsZW1lbnQuc2Nyb2xsVG9wID0gMFxuXG4gICAgICAgICAgLy8gU2Nyb2xsIHRvIGRvbU5vZGUgaWYgZG9tTm9kZSBpcyBub3QgaW4gdmlld3BvcnQgd2hlbiBzY3JvbGxlZCB0byB0b3Agb2YgZG9jdW1lbnRcbiAgICAgICAgICBpZiAoIXRvcE9mRWxlbWVudEluVmlld3BvcnQoaW5zdGFuY2UsIHZpZXdwb3J0SGVpZ2h0KSkge1xuICAgICAgICAgICAgLy8gU2Nyb2xsIGludG8gdmlldyBkb2Vzbid0IHNjcm9sbCBob3Jpem9udGFsbHkgYnkgZGVmYXVsdCB3aGVuIG5vdCBuZWVkZWRcbiAgICAgICAgICAgIGluc3RhbmNlLnNjcm9sbEludG9WaWV3KClcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAvLyBXZSB3aWxsIGZvcmNlIGxheW91dCBieSBxdWVyeWluZyBkb21Ob2RlIHBvc2l0aW9uXG4gICAgICAgICAgZG9udEZvcmNlTGF5b3V0OiB0cnVlLFxuICAgICAgICAgIG9ubHlIYXNoQ2hhbmdlOiBmb2N1c0FuZFNjcm9sbFJlZi5vbmx5SGFzaENoYW5nZSxcbiAgICAgICAgfVxuICAgICAgKVxuXG4gICAgICAvLyBNdXRhdGUgYWZ0ZXIgc2Nyb2xsaW5nIHNvIHRoYXQgaXQgY2FuIGJlIHJlYWQgYnkgYGRpc2FibGVTbW9vdGhTY3JvbGxEdXJpbmdSb3V0ZVRyYW5zaXRpb25gXG4gICAgICBmb2N1c0FuZFNjcm9sbFJlZi5vbmx5SGFzaENoYW5nZSA9IGZhbHNlXG4gICAgICBmb2N1c0FuZFNjcm9sbFJlZi5oYXNoRnJhZ21lbnQgPSBudWxsXG4gICAgfSxcbiAgICAvLyBVc2VkIHRvIHJ1biBvbiBldmVyeSBjb21taXQuIFdlIG1heSBiZSBhYmxlIHRvIGJlIHNtYXJ0ZXIgYWJvdXQgdGhpc1xuICAgIC8vIGJ1dCBiZSBwcmVwYXJlZCBmb3IgbG90cyBvZiBtYW51YWwgdGVzdGluZy5cbiAgICB1bmRlZmluZWRcbiAgKVxuXG4gIHJldHVybiA8RnJhZ21lbnQgcmVmPXtjaGlsZHJlblJlZn0+e3Byb3BzLmNoaWxkcmVufTwvRnJhZ21lbnQ+XG59XG5cbmNvbnN0IElubmVyU2Nyb2xsQW5kTWF5YmVGb2N1c0hhbmRsZXIgPSBlbmFibGVOZXdTY3JvbGxIYW5kbGVyXG4gID8gSW5uZXJTY3JvbGxIYW5kbGVyTmV3XG4gIDogSW5uZXJTY3JvbGxBbmRGb2N1c0hhbmRsZXJPbGRcblxuZnVuY3Rpb24gU2Nyb2xsQW5kTWF5YmVGb2N1c0hhbmRsZXIoe1xuICBjaGlsZHJlbixcbiAgY2FjaGVOb2RlLFxufToge1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlXG4gIGNhY2hlTm9kZTogQ2FjaGVOb2RlXG59KSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KEdsb2JhbExheW91dFJvdXRlckNvbnRleHQpXG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YXJpYW50IGdsb2JhbCBsYXlvdXQgcm91dGVyIG5vdCBtb3VudGVkJylcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPElubmVyU2Nyb2xsQW5kTWF5YmVGb2N1c0hhbmRsZXJcbiAgICAgIGZvY3VzQW5kU2Nyb2xsUmVmPXtjb250ZXh0LmZvY3VzQW5kU2Nyb2xsUmVmfVxuICAgICAgY2FjaGVOb2RlPXtjYWNoZU5vZGV9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvSW5uZXJTY3JvbGxBbmRNYXliZUZvY3VzSGFuZGxlcj5cbiAgKVxufVxuXG4vKipcbiAqIElubmVyTGF5b3V0Um91dGVyIGhhbmRsZXMgcmVuZGVyaW5nIHRoZSBwcm92aWRlZCBzZWdtZW50IGJhc2VkIG9uIHRoZSBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gSW5uZXJMYXlvdXRSb3V0ZXIoe1xuICB0cmVlLFxuICBzZWdtZW50UGF0aCxcbiAgZGVidWdOYW1lQ29udGV4dCxcbiAgY2FjaGVOb2RlOiBtYXliZUNhY2hlTm9kZSxcbiAgcGFyYW1zLFxuICB1cmwsXG4gIGlzQWN0aXZlLFxufToge1xuICB0cmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZVxuICBzZWdtZW50UGF0aDogRmxpZ2h0U2VnbWVudFBhdGhcbiAgZGVidWdOYW1lQ29udGV4dDogc3RyaW5nXG4gIGNhY2hlTm9kZTogQ2FjaGVOb2RlIHwgbnVsbFxuICBwYXJhbXM6IFBhcmFtc1xuICB1cmw6IHN0cmluZ1xuICBpc0FjdGl2ZTogYm9vbGVhblxufSkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChHbG9iYWxMYXlvdXRSb3V0ZXJDb250ZXh0KVxuICBjb25zdCBwYXJlbnROYXZQcm9taXNlcyA9IHVzZUNvbnRleHQoTmF2aWdhdGlvblByb21pc2VzQ29udGV4dClcblxuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFyaWFudCBnbG9iYWwgbGF5b3V0IHJvdXRlciBub3QgbW91bnRlZCcpXG4gIH1cblxuICBjb25zdCBjYWNoZU5vZGUgPVxuICAgIG1heWJlQ2FjaGVOb2RlICE9PSBudWxsXG4gICAgICA/IG1heWJlQ2FjaGVOb2RlXG4gICAgICA6IC8vIFRoaXMgc2VnbWVudCBpcyBub3QgaW4gdGhlIGNhY2hlLiBTdXNwZW5kIGluZGVmaW5pdGVseS5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gVGhpcyBzaG91bGQgb25seSBiZSByZWFjaGFibGUgZm9yIGluYWN0aXZlL2hpZGRlbiBzZWdtZW50cywgZHVyaW5nXG4gICAgICAgIC8vIHByZXJlbmRlcmluZyBUaGUgYWN0aXZlIHNlZ21lbnQgc2hvdWxkIGFsd2F5cyBiZSBjb25zaXN0ZW50IHdpdGggdGhlXG4gICAgICAgIC8vIENhY2hlTm9kZSB0cmVlLiBSZWdhcmRsZXNzLCBpZiB3ZSBkb24ndCBoYXZlIGEgbWF0Y2hpbmcgQ2FjaGVOb2RlLCB3ZVxuICAgICAgICAvLyBtdXN0IHN1c3BlbmQgcmF0aGVyIHRoYW4gcmVuZGVyIG5vdGhpbmcsIHRvIHByZXZlbnQgc2hvd2luZyBhblxuICAgICAgICAvLyBpbmNvbnNpc3RlbnQgcm91dGUuXG5cbiAgICAgICAgKHVzZSh1bnJlc29sdmVkVGhlbmFibGUpIGFzIG5ldmVyKVxuXG4gIC8vIGByc2NgIHJlcHJlc2VudHMgdGhlIHJlbmRlcmFibGUgbm9kZSBmb3IgdGhpcyBzZWdtZW50LlxuXG4gIC8vIElmIHRoaXMgc2VnbWVudCBoYXMgYSBgcHJlZmV0Y2hSc2NgLCBpdCdzIHRoZSBzdGF0aWNhbGx5IHByZWZldGNoZWQgZGF0YS5cbiAgLy8gV2Ugc2hvdWxkIHVzZSB0aGF0IG9uIGluaXRpYWwgcmVuZGVyIGluc3RlYWQgb2YgYHJzY2AuIFRoZW4gd2UnbGwgc3dpdGNoXG4gIC8vIHRvIGByc2NgIHdoZW4gdGhlIGR5bmFtaWMgcmVzcG9uc2Ugc3RyZWFtcyBpbi5cbiAgLy9cbiAgLy8gSWYgbm8gcHJlZmV0Y2ggZGF0YSBpcyBhdmFpbGFibGUsIHRoZW4gd2UgZ28gc3RyYWlnaHQgdG8gcmVuZGVyaW5nIGByc2NgLlxuICBjb25zdCByZXNvbHZlZFByZWZldGNoUnNjID1cbiAgICBjYWNoZU5vZGUucHJlZmV0Y2hSc2MgIT09IG51bGwgPyBjYWNoZU5vZGUucHJlZmV0Y2hSc2MgOiBjYWNoZU5vZGUucnNjXG5cbiAgLy8gV2UgdXNlIGB1c2VEZWZlcnJlZFZhbHVlYCB0byBoYW5kbGUgc3dpdGNoaW5nIGJldHdlZW4gdGhlIHByZWZldGNoZWQgYW5kXG4gIC8vIGZpbmFsIHZhbHVlcy4gVGhlIHNlY29uZCBhcmd1bWVudCBpcyByZXR1cm5lZCBvbiBpbml0aWFsIHJlbmRlciwgdGhlbiBpdFxuICAvLyByZS1yZW5kZXJzIHdpdGggdGhlIGZpcnN0IGFyZ3VtZW50LlxuICBjb25zdCByc2M6IGFueSA9IHVzZURlZmVycmVkVmFsdWUoY2FjaGVOb2RlLnJzYywgcmVzb2x2ZWRQcmVmZXRjaFJzYylcblxuICAvLyBgcnNjYCBpcyBlaXRoZXIgYSBSZWFjdCBub2RlIG9yIGEgcHJvbWlzZSBmb3IgYSBSZWFjdCBub2RlLCBleGNlcHQgd2VcbiAgLy8gc3BlY2lhbCBjYXNlIGBudWxsYCB0byByZXByZXNlbnQgdGhhdCB0aGlzIHNlZ21lbnQncyBkYXRhIGlzIG1pc3NpbmcuIElmXG4gIC8vIGl0J3MgYSBwcm9taXNlLCB3ZSBuZWVkIHRvIHVud3JhcCBpdCBzbyB3ZSBjYW4gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRoZVxuICAvLyBkYXRhIGlzIG1pc3NpbmcuXG4gIGxldCByZXNvbHZlZFJzYzogUmVhY3QuUmVhY3ROb2RlXG4gIGlmIChpc0RlZmVycmVkUnNjKHJzYykpIHtcbiAgICBjb25zdCB1bndyYXBwZWRSc2MgPSB1c2UocnNjKVxuICAgIGlmICh1bndyYXBwZWRSc2MgPT09IG51bGwpIHtcbiAgICAgIC8vIElmIHRoZSBwcm9taXNlIHdhcyByZXNvbHZlZCB0byBgbnVsbGAsIGl0IG1lYW5zIHRoZSBkYXRhIGZvciB0aGlzXG4gICAgICAvLyBzZWdtZW50IHdhcyBub3QgcmV0dXJuZWQgYnkgdGhlIHNlcnZlci4gU3VzcGVuZCBpbmRlZmluaXRlbHkuIFdoZW4gdGhpc1xuICAgICAgLy8gaGFwcGVucywgdGhlIHJvdXRlciBpcyByZXNwb25zaWJsZSBmb3IgdHJpZ2dlcmluZyBhIG5ldyBzdGF0ZSB1cGRhdGUgdG9cbiAgICAgIC8vIHVuLXN1c3BlbmQgdGhpcyBzZWdtZW50LlxuICAgICAgdXNlKHVucmVzb2x2ZWRUaGVuYWJsZSkgYXMgbmV2ZXJcbiAgICB9XG4gICAgcmVzb2x2ZWRSc2MgPSB1bndyYXBwZWRSc2NcbiAgfSBlbHNlIHtcbiAgICAvLyBUaGlzIGlzIG5vdCBhIGRlZmVycmVkIFJTQyBwcm9taXNlLiBEb24ndCBuZWVkIHRvIHVud3JhcCBpdC5cbiAgICBpZiAocnNjID09PSBudWxsKSB7XG4gICAgICB1c2UodW5yZXNvbHZlZFRoZW5hYmxlKSBhcyBuZXZlclxuICAgIH1cbiAgICByZXNvbHZlZFJzYyA9IHJzY1xuICB9XG5cbiAgLy8gSW4gZGV2LCB3ZSBjcmVhdGUgYSBOYXZpZ2F0aW9uUHJvbWlzZXNDb250ZXh0IGNvbnRhaW5pbmcgdGhlIGluc3RydW1lbnRlZCBwcm9taXNlcyB0aGF0IHByb3ZpZGVcbiAgLy8gYHVzZVNlbGVjdGVkTGF5b3V0U2VnbWVudGAgYW5kIGB1c2VTZWxlY3RlZExheW91dFNlZ21lbnRzYC5cbiAgLy8gUHJvbWlzZXMgYXJlIGNhY2hlZCBvdXRzaWRlIG9mIHJlbmRlciB0byBzdXJ2aXZlIHN1c3BlbnNlIHJldHJpZXMuXG4gIGxldCBuYXZpZ2F0aW9uUHJvbWlzZXM6IE5hdmlnYXRpb25Qcm9taXNlcyB8IG51bGwgPSBudWxsXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY29uc3QgeyBjcmVhdGVOZXN0ZWRMYXlvdXROYXZpZ2F0aW9uUHJvbWlzZXMgfSA9XG4gICAgICByZXF1aXJlKCcuL25hdmlnYXRpb24tZGV2dG9vbHMnKSBhcyB0eXBlb2YgaW1wb3J0KCcuL25hdmlnYXRpb24tZGV2dG9vbHMnKVxuXG4gICAgbmF2aWdhdGlvblByb21pc2VzID0gY3JlYXRlTmVzdGVkTGF5b3V0TmF2aWdhdGlvblByb21pc2VzKFxuICAgICAgdHJlZSxcbiAgICAgIHBhcmVudE5hdlByb21pc2VzXG4gICAgKVxuICB9XG5cbiAgbGV0IGNoaWxkcmVuID0gcmVzb2x2ZWRSc2NcblxuICBpZiAobmF2aWdhdGlvblByb21pc2VzKSB7XG4gICAgY2hpbGRyZW4gPSAoXG4gICAgICA8TmF2aWdhdGlvblByb21pc2VzQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17bmF2aWdhdGlvblByb21pc2VzfT5cbiAgICAgICAge3Jlc29sdmVkUnNjfVxuICAgICAgPC9OYXZpZ2F0aW9uUHJvbWlzZXNDb250ZXh0LlByb3ZpZGVyPlxuICAgIClcbiAgfVxuXG4gIGNoaWxkcmVuID0gKFxuICAgIC8vIFRoZSBsYXlvdXQgcm91dGVyIGNvbnRleHQgbmFycm93cyBkb3duIHRyZWUgYW5kIGNoaWxkTm9kZXMgYXQgZWFjaCBsZXZlbC5cbiAgICA8TGF5b3V0Um91dGVyQ29udGV4dC5Qcm92aWRlclxuICAgICAgdmFsdWU9e3tcbiAgICAgICAgcGFyZW50VHJlZTogdHJlZSxcbiAgICAgICAgcGFyZW50Q2FjaGVOb2RlOiBjYWNoZU5vZGUsXG4gICAgICAgIHBhcmVudFNlZ21lbnRQYXRoOiBzZWdtZW50UGF0aCxcbiAgICAgICAgcGFyZW50UGFyYW1zOiBwYXJhbXMsXG4gICAgICAgIC8vIFRoaXMgaXMgYWx3YXlzIHNldCB0byBudWxsIGFzIHdlIGVudGVyIGEgY2hpbGQgc2VnbWVudC4gSXQnc1xuICAgICAgICAvLyBwb3B1bGF0ZWQgYnkgTG9hZGluZ0JvdW5kYXJ5UHJvdmlkZXIgdGhlIG5leHQgdGltZSB3ZSByZWFjaCBhXG4gICAgICAgIC8vIGxvYWRpbmcgYm91bmRhcnkuXG4gICAgICAgIHBhcmVudExvYWRpbmdEYXRhOiBudWxsLFxuICAgICAgICBkZWJ1Z05hbWVDb250ZXh0OiBkZWJ1Z05hbWVDb250ZXh0LFxuXG4gICAgICAgIC8vIFRPRE8tQVBQOiBvdmVycmlkaW5nIG9mIHVybCBmb3IgcGFyYWxsZWwgcm91dGVzXG4gICAgICAgIHVybDogdXJsLFxuICAgICAgICBpc0FjdGl2ZTogaXNBY3RpdmUsXG4gICAgICB9fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0xheW91dFJvdXRlckNvbnRleHQuUHJvdmlkZXI+XG4gIClcblxuICByZXR1cm4gY2hpbGRyZW5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIExvYWRpbmdCb3VuZGFyeVByb3ZpZGVyKHtcbiAgbG9hZGluZyxcbiAgY2hpbGRyZW4sXG59OiB7XG4gIGxvYWRpbmc6IExvYWRpbmdNb2R1bGVEYXRhXG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbn0pIHtcbiAgLy8gUHJvdmlkZXMgdGhlIGRhdGEgbmVlZGVkIHRvIHJlbmRlciBhIGxvYWRpbmcudHN4IGJvdW5kYXJ5LCB2aWEgY29udGV4dC5cbiAgLy9cbiAgLy8gbG9hZGluZy50c3ggY3JlYXRlcyBhIFN1c3BlbnNlIGJvdW5kYXJ5IGFyb3VuZCBlYWNoIG9mIGEgbGF5b3V0J3MgY2hpbGRcbiAgLy8gc2xvdHMuIChNaWdodCBiZSBiaXQgY29uZnVzaW5nIHRvIHRoaW5rIGFib3V0IHRoZSBkYXRhIGZsb3csIGJ1dDogaWZcbiAgLy8gbG9hZGluZy50c3ggYW5kIGxheW91dC50c3ggYXJlIGluIHRoZSBzYW1lIGRpcmVjdG9yeSwgdGhleSBhcmUgYXNzaWduZWRcbiAgLy8gdG8gdGhlIHNhbWUgQ2FjaGVOb2RlLilcbiAgLy9cbiAgLy8gVGhpcyBwcm92aWRlciBjb21wb25lbnQgZG9lcyBub3QgcmVuZGVyIHRoZSBTdXNwZW5zZSBib3VuZGFyeSBkaXJlY3RseTtcbiAgLy8gdGhhdCdzIGhhbmRsZWQgYnkgTG9hZGluZ0JvdW5kYXJ5LlxuICAvL1xuICAvLyBUT0RPOiBGb3Igc2ltcGxpY2l0eSwgd2Ugc2hvdWxkIGNvbWJpbmUgdGhpcyBwcm92aWRlciB3aXRoIExvYWRpbmdCb3VuZGFyeVxuICAvLyBhbmQgcmVuZGVyIHRoZSBTdXNwZW5zZSBib3VuZGFyeSBkaXJlY3RseS4gVGhlIG9ubHkgcmVhbCBiZW5lZml0IG9mIGRvaW5nXG4gIC8vIGl0IHNlcGFyYXRlbHkgaXMgc28gdGhhdCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBwYXJhbGxlbCByb3V0ZXMsIHdlIG9ubHlcbiAgLy8gc2VuZCB0aGUgYm91bmRhcnkgZGF0YSBvbmNlLCByYXRoZXIgdGhhbiBvbmNlIHBlciBjaGlsZC4gQnV0IHRoYXQncyBhXG4gIC8vIG5lZ2xpZ2libGUgYmVuZWZpdCBhbmQgY2FuIGJlIGFjaGlldmVkIHZpYSBjYWNoaW5nIGluc3RlYWQuXG4gIGNvbnN0IHBhcmVudENvbnRleHQgPSB1c2UoTGF5b3V0Um91dGVyQ29udGV4dClcbiAgaWYgKHBhcmVudENvbnRleHQgPT09IG51bGwpIHtcbiAgICByZXR1cm4gY2hpbGRyZW5cbiAgfVxuICAvLyBBbGwgdmFsdWVzIGV4Y2VwdCBmb3IgcGFyZW50TG9hZGluZ0RhdGEgYXJlIHRoZSBzYW1lIGFzIHRoZSBwYXJlbnQgY29udGV4dC5cbiAgcmV0dXJuIChcbiAgICA8TGF5b3V0Um91dGVyQ29udGV4dC5Qcm92aWRlclxuICAgICAgdmFsdWU9e3tcbiAgICAgICAgcGFyZW50VHJlZTogcGFyZW50Q29udGV4dC5wYXJlbnRUcmVlLFxuICAgICAgICBwYXJlbnRDYWNoZU5vZGU6IHBhcmVudENvbnRleHQucGFyZW50Q2FjaGVOb2RlLFxuICAgICAgICBwYXJlbnRTZWdtZW50UGF0aDogcGFyZW50Q29udGV4dC5wYXJlbnRTZWdtZW50UGF0aCxcbiAgICAgICAgcGFyZW50UGFyYW1zOiBwYXJlbnRDb250ZXh0LnBhcmVudFBhcmFtcyxcbiAgICAgICAgcGFyZW50TG9hZGluZ0RhdGE6IGxvYWRpbmcsXG4gICAgICAgIGRlYnVnTmFtZUNvbnRleHQ6IHBhcmVudENvbnRleHQuZGVidWdOYW1lQ29udGV4dCxcbiAgICAgICAgdXJsOiBwYXJlbnRDb250ZXh0LnVybCxcbiAgICAgICAgaXNBY3RpdmU6IHBhcmVudENvbnRleHQuaXNBY3RpdmUsXG4gICAgICB9fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0xheW91dFJvdXRlckNvbnRleHQuUHJvdmlkZXI+XG4gIClcbn1cblxuLyoqXG4gKiBSZW5kZXJzIHN1c3BlbnNlIGJvdW5kYXJ5IHdpdGggdGhlIHByb3ZpZGVkIFwibG9hZGluZ1wiIHByb3BlcnR5IGFzIHRoZSBmYWxsYmFjay5cbiAqIElmIG5vIGxvYWRpbmcgcHJvcGVydHkgaXMgcHJvdmlkZWQgaXQgcmVuZGVycyB0aGUgY2hpbGRyZW4gd2l0aG91dCBhIHN1c3BlbnNlIGJvdW5kYXJ5LlxuICovXG5mdW5jdGlvbiBMb2FkaW5nQm91bmRhcnkoe1xuICBuYW1lLFxuICBsb2FkaW5nLFxuICBjaGlsZHJlbixcbn06IHtcbiAgbmFtZTogQWN0aXZpdHlQcm9wc1snbmFtZSddXG4gIGxvYWRpbmc6IExvYWRpbmdNb2R1bGVEYXRhIHwgbnVsbFxuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlXG59KTogSlNYLkVsZW1lbnQge1xuICAvLyBUT0RPOiBGb3IgTG9hZGluZ0JvdW5kYXJ5LCBhbmQgdGhlIG90aGVyIGJ1aWx0LWluIGJvdW5kYXJ5IHR5cGVzLCBkb24ndFxuICAvLyB3cmFwIGluIGFuIGV4dHJhIGZ1bmN0aW9uIGNvbXBvbmVudCBpZiBubyB1c2VyLWRlZmluZWQgYm91bmRhcnkgaXNcbiAgLy8gcHJvdmlkZWQuIEluIG90aGVyIHdvcmRzLCBpbmxpbmUgdGhpcyBjb25kaXRpb25hbCB3cmFwcGluZyBsb2dpYyBpbnRvXG4gIC8vIHRoZSBwYXJlbnQgY29tcG9uZW50LiBNb3JlIGVmZmljaWVudCBhbmQga2VlcHMgdW5uZWNlc3NhcnkganVuayBvdXQgb2ZcbiAgLy8gdGhlIGNvbXBvbmVudCBzdGFjay5cbiAgaWYgKGxvYWRpbmcgIT09IG51bGwpIHtcbiAgICBjb25zdCBsb2FkaW5nUnNjID0gbG9hZGluZ1swXVxuICAgIGNvbnN0IGxvYWRpbmdTdHlsZXMgPSBsb2FkaW5nWzFdXG4gICAgY29uc3QgbG9hZGluZ1NjcmlwdHMgPSBsb2FkaW5nWzJdXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdXNwZW5zZVxuICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICBmYWxsYmFjaz17XG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHtsb2FkaW5nU3R5bGVzfVxuICAgICAgICAgICAge2xvYWRpbmdTY3JpcHRzfVxuICAgICAgICAgICAge2xvYWRpbmdSc2N9XG4gICAgICAgICAgPC8+XG4gICAgICAgIH1cbiAgICAgID5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9TdXNwZW5zZT5cbiAgICApXG4gIH1cblxuICByZXR1cm4gPD57Y2hpbGRyZW59PC8+XG59XG5cbi8qKlxuICogT3V0ZXJMYXlvdXRSb3V0ZXIgaGFuZGxlcyB0aGUgY3VycmVudCBzZWdtZW50IGFzIHdlbGwgYXMgPE9mZnNjcmVlbj4gcmVuZGVyaW5nIG9mIG90aGVyIHNlZ21lbnRzLlxuICogSXQgY2FuIGJlIHJlbmRlcmVkIG5leHQgdG8gZWFjaCBvdGhlciB3aXRoIGEgZGlmZmVyZW50IGBwYXJhbGxlbFJvdXRlcktleWAsIGFsbG93aW5nIGZvciBQYXJhbGxlbCByb3V0ZXMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE91dGVyTGF5b3V0Um91dGVyKHtcbiAgcGFyYWxsZWxSb3V0ZXJLZXksXG4gIGVycm9yLFxuICBlcnJvclN0eWxlcyxcbiAgZXJyb3JTY3JpcHRzLFxuICB0ZW1wbGF0ZVN0eWxlcyxcbiAgdGVtcGxhdGVTY3JpcHRzLFxuICB0ZW1wbGF0ZSxcbiAgbm90Rm91bmQsXG4gIGZvcmJpZGRlbixcbiAgdW5hdXRob3JpemVkLFxuICBzZWdtZW50Vmlld0JvdW5kYXJpZXMsXG59OiB7XG4gIHBhcmFsbGVsUm91dGVyS2V5OiBzdHJpbmdcbiAgZXJyb3I6IEVycm9yQ29tcG9uZW50IHwgdW5kZWZpbmVkXG4gIGVycm9yU3R5bGVzOiBSZWFjdC5SZWFjdE5vZGUgfCB1bmRlZmluZWRcbiAgZXJyb3JTY3JpcHRzOiBSZWFjdC5SZWFjdE5vZGUgfCB1bmRlZmluZWRcbiAgdGVtcGxhdGVTdHlsZXM6IFJlYWN0LlJlYWN0Tm9kZSB8IHVuZGVmaW5lZFxuICB0ZW1wbGF0ZVNjcmlwdHM6IFJlYWN0LlJlYWN0Tm9kZSB8IHVuZGVmaW5lZFxuICB0ZW1wbGF0ZTogUmVhY3QuUmVhY3ROb2RlXG4gIG5vdEZvdW5kOiBSZWFjdC5SZWFjdE5vZGUgfCB1bmRlZmluZWRcbiAgZm9yYmlkZGVuOiBSZWFjdC5SZWFjdE5vZGUgfCB1bmRlZmluZWRcbiAgdW5hdXRob3JpemVkOiBSZWFjdC5SZWFjdE5vZGUgfCB1bmRlZmluZWRcbiAgc2VnbWVudFZpZXdCb3VuZGFyaWVzPzogUmVhY3QuUmVhY3ROb2RlXG59KSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KExheW91dFJvdXRlckNvbnRleHQpXG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YXJpYW50IGV4cGVjdGVkIGxheW91dCByb3V0ZXIgdG8gYmUgbW91bnRlZCcpXG4gIH1cblxuICBjb25zdCB7XG4gICAgcGFyZW50VHJlZSxcbiAgICBwYXJlbnRDYWNoZU5vZGUsXG4gICAgcGFyZW50U2VnbWVudFBhdGgsXG4gICAgcGFyZW50UGFyYW1zLFxuICAgIHBhcmVudExvYWRpbmdEYXRhLFxuICAgIHVybCxcbiAgICBpc0FjdGl2ZSxcbiAgICBkZWJ1Z05hbWVDb250ZXh0LFxuICB9ID0gY29udGV4dFxuXG4gIC8vIEdldCB0aGUgQ2FjaGVOb2RlIGZvciB0aGlzIHNlZ21lbnQgYnkgcmVhZGluZyBpdCBmcm9tIHRoZSBwYXJlbnQgc2VnbWVudCdzXG4gIC8vIGNoaWxkIG1hcC5cbiAgY29uc3QgcGFyZW50VHJlZVNlZ21lbnQgPSBwYXJlbnRUcmVlWzBdXG4gIGNvbnN0IHNlZ21lbnRQYXRoID1cbiAgICBwYXJlbnRTZWdtZW50UGF0aCA9PT0gbnVsbFxuICAgICAgPyAvLyBUT0RPOiBUaGUgcm9vdCBzZWdtZW50IHZhbHVlIGlzIGN1cnJlbnRseSBvbWl0dGVkIGZyb20gdGhlIHNlZ21lbnRcbiAgICAgICAgLy8gcGF0aC4gVGhpcyBoYXMgbGVkIHRvIGEgYnVuY2ggb2Ygc3BlY2lhbCBjYXNlcyBzY2F0dGVyZWQgdGhyb3VnaG91dFxuICAgICAgICAvLyB0aGUgY29kZS4gV2Ugc2hvdWxkIGNsZWFuIHRoaXMgdXAuXG4gICAgICAgIFtwYXJhbGxlbFJvdXRlcktleV1cbiAgICAgIDogcGFyZW50U2VnbWVudFBhdGguY29uY2F0KFtwYXJlbnRUcmVlU2VnbWVudCwgcGFyYWxsZWxSb3V0ZXJLZXldKVxuXG4gIC8vIFRoZSBcInN0YXRlXCIga2V5IG9mIGEgc2VnbWVudCBpcyB0aGUgb25lIHBhc3NlZCB0byBSZWFjdCDigJQgaXQgcmVwcmVzZW50cyB0aGVcbiAgLy8gaWRlbnRpdHkgb2YgdGhlIFVJIHRyZWUuIFdoZW5ldmVyIHRoZSBzdGF0ZSBrZXkgY2hhbmdlcywgdGhlIHRyZWUgaXNcbiAgLy8gcmVjcmVhdGVkIGFuZCB0aGUgc3RhdGUgaXMgcmVzZXQuIEluIHRoZSBBcHAgUm91dGVyIG1vZGVsLCBzZWFyY2ggcGFyYW1zIGRvXG4gIC8vIG5vdCBjYXVzZSBzdGF0ZSB0byBiZSBsb3N0LCBzbyB0d28gc2VnbWVudHMgd2l0aCB0aGUgc2FtZSBzZWdtZW50IHBhdGggYnV0XG4gIC8vIGRpZmZlcmVudCBzZWFyY2ggcGFyYW1zIHNob3VsZCBoYXZlIHRoZSBzYW1lIHN0YXRlIGtleS5cbiAgLy9cbiAgLy8gVGhlIFwiY2FjaGVcIiBrZXkgb2YgYSBzZWdtZW50LCBob3dldmVyLCAqZG9lcyogaW5jbHVkZSB0aGUgc2VhcmNoIHBhcmFtcywgaWZcbiAgLy8gaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBzZWdtZW50IGFjY2Vzc2VkIHRoZSBzZWFyY2ggcGFyYW1zIG9uIHRoZSBzZXJ2ZXIuXG4gIC8vIChUaGlzIG9ubHkgYXBwbGllcyB0byBwYWdlIHNlZ21lbnRzOyBsYXlvdXQgc2VnbWVudHMgY2Fubm90IGFjY2VzcyBzZWFyY2hcbiAgLy8gcGFyYW1zIG9uIHRoZSBzZXJ2ZXIuKVxuICBjb25zdCBhY3RpdmVUcmVlID0gcGFyZW50VHJlZVsxXVtwYXJhbGxlbFJvdXRlcktleV1cbiAgY29uc3QgbWF5YmVQYXJlbnRTbG90cyA9IHBhcmVudENhY2hlTm9kZS5zbG90c1xuICBpZiAoYWN0aXZlVHJlZSA9PT0gdW5kZWZpbmVkIHx8IG1heWJlUGFyZW50U2xvdHMgPT09IG51bGwpIHtcbiAgICAvLyBDb3VsZCBub3QgZmluZCBhIG1hdGNoaW5nIHNlZ21lbnQuIFRoZSBjbGllbnQgdHJlZSBpcyBpbmNvbnNpc3RlbnQgd2l0aFxuICAgIC8vIHRoZSBzZXJ2ZXIgdHJlZS4gU3VzcGVuZCBpbmRlZmluaXRlbHk7IHRoZSByb3V0ZXIgd2lsbCBoYXZlIGFscmVhZHlcbiAgICAvLyBkZXRlY3RlZCB0aGUgaW5jb25zaXN0ZW5jeSB3aGVuIGhhbmRsaW5nIHRoZSBzZXJ2ZXIgcmVzcG9uc2UsIGFuZFxuICAgIC8vIHRyaWdnZXJlZCBhIHJlZnJlc2ggb2YgdGhlIHBhZ2UgdG8gcmVjb3Zlci5cbiAgICB1c2UodW5yZXNvbHZlZFRoZW5hYmxlKSBhcyBuZXZlclxuICB9XG5cbiAgbGV0IG1heWJlVmFsaWRhdGlvbkJvdW5kYXJ5SWQ6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLmVudi5fX05FWFRfQ0FDSEVfQ09NUE9ORU5UUykge1xuICAgIGNvbnN0IHsgSW5zdGFudFZhbGlkYXRpb25Cb3VuZGFyeUNvbnRleHQgfSA9XG4gICAgICByZXF1aXJlKCcuL2luc3RhbnQtdmFsaWRhdGlvbi9ib3VuZGFyeScpIGFzIHR5cGVvZiBpbXBvcnQoJy4vaW5zdGFudC12YWxpZGF0aW9uL2JvdW5kYXJ5JylcbiAgICBtYXliZVZhbGlkYXRpb25Cb3VuZGFyeUlkID0gdXNlKEluc3RhbnRWYWxpZGF0aW9uQm91bmRhcnlDb250ZXh0KVxuICB9XG5cbiAgY29uc3QgYWN0aXZlU2VnbWVudCA9IGFjdGl2ZVRyZWVbMF1cbiAgY29uc3QgYWN0aXZlQ2FjaGVOb2RlID0gbWF5YmVQYXJlbnRTbG90cyFbcGFyYWxsZWxSb3V0ZXJLZXldID8/IG51bGxcbiAgY29uc3QgYWN0aXZlU3RhdGVLZXkgPSBjcmVhdGVSb3V0ZXJDYWNoZUtleShhY3RpdmVTZWdtZW50LCB0cnVlKSAvLyBubyBzZWFyY2ggcGFyYW1zXG5cbiAgLy8gQXQgZWFjaCBsZXZlbCBvZiB0aGUgcm91dGUgdHJlZSwgbm90IG9ubHkgZG8gd2UgcmVuZGVyIHRoZSBjdXJyZW50bHlcbiAgLy8gYWN0aXZlIHNlZ21lbnQg4oCUIHdlIGFsc28gcmVuZGVyIHRoZSBsYXN0IE4gc2VnbWVudHMgdGhhdCB3ZXJlIGFjdGl2ZSBhdFxuICAvLyB0aGlzIGxldmVsIGluc2lkZSBhIGhpZGRlbiA8QWN0aXZpdHk+IGJvdW5kYXJ5LCB0byBwcmVzZXJ2ZSB0aGVpciBzdGF0ZVxuICAvLyBpZiBvciB3aGVuIHRoZSB1c2VyIG5hdmlnYXRlcyB0byB0aGVtIGFnYWluLlxuICAvL1xuICAvLyBiZmNhY2hlRW50cnkgaXMgYSBsaW5rZWQgbGlzdCBvZiBGbGlnaHRSb3V0ZXJTdGF0ZXMuXG4gIGxldCBiZmNhY2hlRW50cnk6IFJvdXRlckJGQ2FjaGVFbnRyeSB8IG51bGwgPSB1c2VSb3V0ZXJCRkNhY2hlKFxuICAgIGFjdGl2ZVRyZWUsXG4gICAgYWN0aXZlQ2FjaGVOb2RlLFxuICAgIGFjdGl2ZVN0YXRlS2V5XG4gIClcbiAgbGV0IGNoaWxkcmVuOiBBcnJheTxSZWFjdC5SZWFjdE5vZGU+ID0gW11cbiAgZG8ge1xuICAgIGNvbnN0IHRyZWUgPSBiZmNhY2hlRW50cnkudHJlZVxuICAgIGNvbnN0IGNhY2hlTm9kZSA9IGJmY2FjaGVFbnRyeS5jYWNoZU5vZGVcbiAgICBjb25zdCBzdGF0ZUtleSA9IGJmY2FjaGVFbnRyeS5zdGF0ZUtleVxuICAgIGNvbnN0IHNlZ21lbnQgPSB0cmVlWzBdXG5cbiAgICAvKlxuICAgIC0gRXJyb3IgYm91bmRhcnlcbiAgICAgIC0gT25seSByZW5kZXJzIGVycm9yIGJvdW5kYXJ5IGlmIGVycm9yIGNvbXBvbmVudCBpcyBwcm92aWRlZC5cbiAgICAgIC0gUmVuZGVyZWQgZm9yIGVhY2ggc2VnbWVudCB0byBlbnN1cmUgdGhleSBoYXZlIHRoZWlyIG93biBlcnJvciBzdGF0ZS5cbiAgICAgIC0gV2hlbiBncmFjZWZ1bGx5IGRlZ3JhZGUgZm9yIGJvdHMsIHNraXAgcmVuZGVyaW5nIGVycm9yIGJvdW5kYXJ5LlxuICAgIC0gTG9hZGluZyBib3VuZGFyeVxuICAgICAgLSBPbmx5IHJlbmRlcnMgc3VzcGVuc2UgYm91bmRhcnkgaWYgbG9hZGluZyBjb21wb25lbnRzIGlzIHByb3ZpZGVkLlxuICAgICAgLSBSZW5kZXJlZCBmb3IgZWFjaCBzZWdtZW50IHRvIGVuc3VyZSB0aGV5IGhhdmUgdGhlaXIgb3duIGxvYWRpbmcgc3RhdGUuXG4gICAgICAtIFBhc3NlZCB0byB0aGUgcm91dGVyIGR1cmluZyByZW5kZXJpbmcgdG8gZW5zdXJlIGl0IGNhbiBiZSBpbW1lZGlhdGVseSByZW5kZXJlZCB3aGVuIHN1c3BlbmRpbmcgb24gYSBGbGlnaHQgZmV0Y2guXG4gICovXG5cbiAgICBsZXQgc2VnbWVudEJvdW5kYXJ5VHJpZ2dlck5vZGU6IFJlYWN0LlJlYWN0Tm9kZSA9IG51bGxcbiAgICBsZXQgc2VnbWVudFZpZXdTdGF0ZU5vZGU6IFJlYWN0LlJlYWN0Tm9kZSA9IG51bGxcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgY29uc3QgeyBTZWdtZW50Qm91bmRhcnlUcmlnZ2VyTm9kZSwgU2VnbWVudFZpZXdTdGF0ZU5vZGUgfSA9XG4gICAgICAgIHJlcXVpcmUoJy4uLy4uL25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9zZWdtZW50LWV4cGxvcmVyLW5vZGUnKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi8uLi9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS9hcHAvc2VnbWVudC1leHBsb3Jlci1ub2RlJylcblxuICAgICAgY29uc3QgcGFnZVByZWZpeCA9IG5vcm1hbGl6ZUFwcFBhdGgodXJsKVxuICAgICAgc2VnbWVudFZpZXdTdGF0ZU5vZGUgPSAoXG4gICAgICAgIDxTZWdtZW50Vmlld1N0YXRlTm9kZSBrZXk9e3BhZ2VQcmVmaXh9IHBhZ2U9e3BhZ2VQcmVmaXh9IC8+XG4gICAgICApXG5cbiAgICAgIHNlZ21lbnRCb3VuZGFyeVRyaWdnZXJOb2RlID0gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxTZWdtZW50Qm91bmRhcnlUcmlnZ2VyTm9kZSAvPlxuICAgICAgICA8Lz5cbiAgICAgIClcbiAgICB9XG5cbiAgICBsZXQgcGFyYW1zID0gcGFyZW50UGFyYW1zXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2VnbWVudCkpIHtcbiAgICAgIC8vIFRoaXMgc2VnbWVudCBjb250YWlucyBhIHJvdXRlIHBhcmFtLiBBY2N1bXVsYXRlIHRoZXNlIGFzIHdlIHRyYXZlcnNlXG4gICAgICAvLyBkb3duIHRoZSByb3V0ZXIgdHJlZS4gVGhlIHJlc3VsdCByZXByZXNlbnRzIHRoZSBzZXQgb2YgcGFyYW1zIHRoYXRcbiAgICAgIC8vIHRoZSBsYXlvdXQvcGFnZSBjb21wb25lbnRzIGFyZSBwZXJtaXR0ZWQgdG8gYWNjZXNzIGJlbG93IHRoaXMgcG9pbnQuXG4gICAgICBjb25zdCBwYXJhbU5hbWUgPSBzZWdtZW50WzBdXG4gICAgICBjb25zdCBwYXJhbUNhY2hlS2V5ID0gc2VnbWVudFsxXVxuICAgICAgY29uc3QgcGFyYW1UeXBlID0gc2VnbWVudFsyXVxuICAgICAgY29uc3QgcGFyYW1WYWx1ZSA9IGdldFBhcmFtVmFsdWVGcm9tQ2FjaGVLZXkocGFyYW1DYWNoZUtleSwgcGFyYW1UeXBlKVxuICAgICAgaWYgKHBhcmFtVmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgcGFyYW1zID0ge1xuICAgICAgICAgIC4uLnBhcmVudFBhcmFtcyxcbiAgICAgICAgICBbcGFyYW1OYW1lXTogcGFyYW1WYWx1ZSxcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGRlYnVnTmFtZSA9IGdldEJvdW5kYXJ5RGVidWdOYW1lRnJvbVNlZ21lbnQoc2VnbWVudClcbiAgICAvLyBgZGVidWdOYW1lQ29udGV4dGAgcmVwcmVzZW50cyB0aGUgbmVhcmVzdCBub24tXCJ2aXJ0dWFsXCIgcGFyZW50IHNlZ21lbnQuXG4gICAgLy8gYGdldEJvdW5kYXJ5RGVidWdOYW1lRnJvbVNlZ21lbnRgIHJldHVybnMgdW5kZWZpbmVkIGZvciB2aXJ0dWFsIHNlZ21lbnRzLlxuICAgIC8vIFNvIGlmIGBkZWJ1Z05hbWVgIGlzIHVuZGVmaW5lZCwgdGhlIGNvbnRleHQgaXMgcGFzc2VkIHRocm91Z2ggdW5jaGFuZ2VkLlxuICAgIGNvbnN0IGNoaWxkRGVidWdOYW1lQ29udGV4dCA9IGRlYnVnTmFtZSA/PyBkZWJ1Z05hbWVDb250ZXh0XG5cbiAgICAvLyBJbiBwcmFjdGljYWwgdGVybXMsIGNsaWNraW5nIHRoaXMgbmFtZSBpbiB0aGUgU3VzcGVuc2UgRGV2VG9vbHNcbiAgICAvLyBzaG91bGQgc2VsZWN0IHRoZSBjaGlsZCBzbG90cyBvZiB0aGF0IGxheW91dC5cbiAgICAvL1xuICAgIC8vIFNvIHRoZSBuYW1lIHdlIGFwcGx5IHRvIHRoZSBBY3Rpdml0eSBib3VuZGFyeSBpcyBhY3R1YWxseSBiYXNlZCBvblxuICAgIC8vIHRoZSBuZWFyZXN0IHBhcmVudCBzZWdtZW50cy5cbiAgICAvL1xuICAgIC8vIFdlIHNraXAgb3ZlciBcInZpcnR1YWxcIiBwYXJlbnRzLCBpLmUuIG9uZXMgaW5zZXJ0ZWQgYnkgTmV4dC5qcyB0aGF0XG4gICAgLy8gZG9uJ3QgY29ycmVzcG9uZCB0byBhcHBsaWNhdGlvbi1kZWZpbmVkIGNvZGUuXG4gICAgY29uc3QgaXNWaXJ0dWFsID0gZGVidWdOYW1lID09PSB1bmRlZmluZWRcbiAgICBjb25zdCBkZWJ1Z05hbWVUb0Rpc3BsYXkgPSBpc1ZpcnR1YWwgPyB1bmRlZmluZWQgOiBkZWJ1Z05hbWVDb250ZXh0XG5cbiAgICBsZXQgdGVtcGxhdGVWYWx1ZSA9IChcbiAgICAgIDxTY3JvbGxBbmRNYXliZUZvY3VzSGFuZGxlciBjYWNoZU5vZGU9e2NhY2hlTm9kZX0+XG4gICAgICAgIDxFcnJvckJvdW5kYXJ5XG4gICAgICAgICAgZXJyb3JDb21wb25lbnQ9e2Vycm9yfVxuICAgICAgICAgIGVycm9yU3R5bGVzPXtlcnJvclN0eWxlc31cbiAgICAgICAgICBlcnJvclNjcmlwdHM9e2Vycm9yU2NyaXB0c31cbiAgICAgICAgPlxuICAgICAgICAgIDxMb2FkaW5nQm91bmRhcnlcbiAgICAgICAgICAgIG5hbWU9e2RlYnVnTmFtZVRvRGlzcGxheX1cbiAgICAgICAgICAgIC8vIFRPRE86IFRoZSBsb2FkaW5nIG1vZHVsZSBkYXRhIGZvciBhIHNlZ21lbnQgaXMgc3RvcmVkIG9uIHRoZVxuICAgICAgICAgICAgLy8gcGFyZW50LCB0aGVuIGFwcGxpZWQgdG8gZWFjaCBvZiB0aGF0IHBhcmVudCBzZWdtZW50J3NcbiAgICAgICAgICAgIC8vIHBhcmFsbGVsIHJvdXRlIHNsb3RzLiBJbiB0aGUgc2ltcGxlIGNhc2Ugd2hlcmUgdGhlcmUncyBvbmx5XG4gICAgICAgICAgICAvLyBvbmUgcGFyYWxsZWwgcm91dGUgKHRoZSBgY2hpbGRyZW5gIHNsb3QpLCB0aGlzIGlzIG5vXG4gICAgICAgICAgICAvLyBkaWZmZXJlbnQgZnJvbSBpZiB0aGUgbG9hZGluZyBtb2R1bGUgZGF0YSB3ZXJlIHN0b3JlZCBvbiB0aGVcbiAgICAgICAgICAgIC8vIGNoaWxkIGRpcmVjdGx5LiBCdXQgSSdtIG5vdCBzdXJlIHRoaXMgYWN0dWFsbHkgbWFrZXMgc2Vuc2VcbiAgICAgICAgICAgIC8vIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIHBhcmFsbGVsIHJvdXRlcy4gSXQncyBub3QgYSBodWdlXG4gICAgICAgICAgICAvLyBpc3N1ZSBiZWNhdXNlIHlvdSBhbHdheXMgaGF2ZSB0aGUgb3B0aW9uIHRvIGRlZmluZSBhIG5hcnJvd2VyXG4gICAgICAgICAgICAvLyBsb2FkaW5nIGJvdW5kYXJ5IGZvciBhIHBhcnRpY3VsYXIgc2xvdC4gQnV0IHRoaXMgc29ydCBvZlxuICAgICAgICAgICAgLy8gc21lbGxzIGxpa2UgYW4gaW1wbGVtZW50YXRpb24gYWNjaWRlbnQgdG8gbWUuXG4gICAgICAgICAgICBsb2FkaW5nPXtwYXJlbnRMb2FkaW5nRGF0YX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8SFRUUEFjY2Vzc0ZhbGxiYWNrQm91bmRhcnlcbiAgICAgICAgICAgICAgbm90Rm91bmQ9e25vdEZvdW5kfVxuICAgICAgICAgICAgICBmb3JiaWRkZW49e2ZvcmJpZGRlbn1cbiAgICAgICAgICAgICAgdW5hdXRob3JpemVkPXt1bmF1dGhvcml6ZWR9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxSZWRpcmVjdEJvdW5kYXJ5PlxuICAgICAgICAgICAgICAgIDxJbm5lckxheW91dFJvdXRlclxuICAgICAgICAgICAgICAgICAgdXJsPXt1cmx9XG4gICAgICAgICAgICAgICAgICB0cmVlPXt0cmVlfVxuICAgICAgICAgICAgICAgICAgcGFyYW1zPXtwYXJhbXN9XG4gICAgICAgICAgICAgICAgICBjYWNoZU5vZGU9e2NhY2hlTm9kZX1cbiAgICAgICAgICAgICAgICAgIHNlZ21lbnRQYXRoPXtzZWdtZW50UGF0aH1cbiAgICAgICAgICAgICAgICAgIGRlYnVnTmFtZUNvbnRleHQ9e2NoaWxkRGVidWdOYW1lQ29udGV4dH1cbiAgICAgICAgICAgICAgICAgIGlzQWN0aXZlPXtpc0FjdGl2ZSAmJiBzdGF0ZUtleSA9PT0gYWN0aXZlU3RhdGVLZXl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB7c2VnbWVudEJvdW5kYXJ5VHJpZ2dlck5vZGV9XG4gICAgICAgICAgICAgIDwvUmVkaXJlY3RCb3VuZGFyeT5cbiAgICAgICAgICAgIDwvSFRUUEFjY2Vzc0ZhbGxiYWNrQm91bmRhcnk+XG4gICAgICAgICAgPC9Mb2FkaW5nQm91bmRhcnk+XG4gICAgICAgIDwvRXJyb3JCb3VuZGFyeT5cbiAgICAgICAge3NlZ21lbnRWaWV3U3RhdGVOb2RlfVxuICAgICAgPC9TY3JvbGxBbmRNYXliZUZvY3VzSGFuZGxlcj5cbiAgICApXG5cbiAgICBpZiAoXG4gICAgICB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyAmJlxuICAgICAgcHJvY2Vzcy5lbnYuX19ORVhUX0NBQ0hFX0NPTVBPTkVOVFMgJiZcbiAgICAgIHR5cGVvZiBtYXliZVZhbGlkYXRpb25Cb3VuZGFyeUlkID09PSAnc3RyaW5nJ1xuICAgICkge1xuICAgICAgY29uc3QgeyBSZW5kZXJWYWxpZGF0aW9uQm91bmRhcnlBdFRoaXNMZXZlbCB9ID1cbiAgICAgICAgcmVxdWlyZSgnLi9pbnN0YW50LXZhbGlkYXRpb24vYm91bmRhcnknKSBhcyB0eXBlb2YgaW1wb3J0KCcuL2luc3RhbnQtdmFsaWRhdGlvbi9ib3VuZGFyeScpXG4gICAgICB0ZW1wbGF0ZVZhbHVlID0gKFxuICAgICAgICA8UmVuZGVyVmFsaWRhdGlvbkJvdW5kYXJ5QXRUaGlzTGV2ZWwgaWQ9e21heWJlVmFsaWRhdGlvbkJvdW5kYXJ5SWR9PlxuICAgICAgICAgIHt0ZW1wbGF0ZVZhbHVlfVxuICAgICAgICA8L1JlbmRlclZhbGlkYXRpb25Cb3VuZGFyeUF0VGhpc0xldmVsPlxuICAgICAgKVxuICAgIH1cblxuICAgIGxldCBjaGlsZCA9IChcbiAgICAgIDxUZW1wbGF0ZUNvbnRleHQuUHJvdmlkZXIga2V5PXtzdGF0ZUtleX0gdmFsdWU9e3RlbXBsYXRlVmFsdWV9PlxuICAgICAgICB7dGVtcGxhdGVTdHlsZXN9XG4gICAgICAgIHt0ZW1wbGF0ZVNjcmlwdHN9XG4gICAgICAgIHt0ZW1wbGF0ZX1cbiAgICAgIDwvVGVtcGxhdGVDb250ZXh0LlByb3ZpZGVyPlxuICAgIClcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjb25zdCB7IFNlZ21lbnRTdGF0ZVByb3ZpZGVyIH0gPVxuICAgICAgICByZXF1aXJlKCcuLi8uLi9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS9hcHAvc2VnbWVudC1leHBsb3Jlci1ub2RlJykgYXMgdHlwZW9mIGltcG9ydCgnLi4vLi4vbmV4dC1kZXZ0b29scy91c2Vyc3BhY2UvYXBwL3NlZ21lbnQtZXhwbG9yZXItbm9kZScpXG5cbiAgICAgIGNoaWxkID0gKFxuICAgICAgICA8U2VnbWVudFN0YXRlUHJvdmlkZXIga2V5PXtzdGF0ZUtleX0+XG4gICAgICAgICAge2NoaWxkfVxuICAgICAgICAgIHtzZWdtZW50Vmlld0JvdW5kYXJpZXN9XG4gICAgICAgIDwvU2VnbWVudFN0YXRlUHJvdmlkZXI+XG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9DQUNIRV9DT01QT05FTlRTKSB7XG4gICAgICBjaGlsZCA9IChcbiAgICAgICAgPEFjdGl2aXR5XG4gICAgICAgICAgbmFtZT17ZGVidWdOYW1lVG9EaXNwbGF5fVxuICAgICAgICAgIGtleT17c3RhdGVLZXl9XG4gICAgICAgICAgbW9kZT17c3RhdGVLZXkgPT09IGFjdGl2ZVN0YXRlS2V5ID8gJ3Zpc2libGUnIDogJ2hpZGRlbid9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGR9XG4gICAgICAgIDwvQWN0aXZpdHk+XG4gICAgICApXG4gICAgfVxuXG4gICAgY2hpbGRyZW4ucHVzaChjaGlsZClcblxuICAgIGJmY2FjaGVFbnRyeSA9IGJmY2FjaGVFbnRyeS5uZXh0XG4gIH0gd2hpbGUgKGJmY2FjaGVFbnRyeSAhPT0gbnVsbClcblxuICByZXR1cm4gY2hpbGRyZW5cbn1cblxuZnVuY3Rpb24gZ2V0Qm91bmRhcnlEZWJ1Z05hbWVGcm9tU2VnbWVudChzZWdtZW50OiBTZWdtZW50KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHNlZ21lbnQgPT09ICcvJykge1xuICAgIC8vIFJlYWNoZWQgdGhlIHJvb3RcbiAgICByZXR1cm4gJy8nXG4gIH1cbiAgaWYgKHR5cGVvZiBzZWdtZW50ID09PSAnc3RyaW5nJykge1xuICAgIGlmIChpc1ZpcnR1YWxMYXlvdXQoc2VnbWVudCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHNlZ21lbnQgKyAnLydcbiAgICB9XG4gIH1cbiAgY29uc3QgcGFyYW1DYWNoZUtleSA9IHNlZ21lbnRbMV1cbiAgcmV0dXJuIHBhcmFtQ2FjaGVLZXkgKyAnLydcbn1cblxuZnVuY3Rpb24gaXNWaXJ0dWFsTGF5b3V0KHNlZ21lbnQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIC8vIFRoaXMgaXMgaW5zZXJ0ZWQgYnkgdGhlIGxvYWRlci4gVXNlcyBkb3VibGUtdW5kZXJzY29yZSBjb252ZW50aW9uXG4gICAgLy8gKGxpa2UgX19QQUdFX18gYW5kIF9fREVGQVVMVF9fKSB0byBhdm9pZCBjb2xsaXNpb25zIHdpdGhcbiAgICAvLyB1c2VyLWRlZmluZWQgcm91dGUgZ3JvdXBzLlxuICAgIHNlZ21lbnQgPT09ICcoX19TTE9UX18pJ1xuICApXG59XG4iXSwibmFtZXMiOlsiTG9hZGluZ0JvdW5kYXJ5UHJvdmlkZXIiLCJPdXRlckxheW91dFJvdXRlciIsImVuYWJsZU5ld1Njcm9sbEhhbmRsZXIiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX0FQUF9ORVdfU0NST0xMX0hBTkRMRVIiLCJfX0RPTV9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREUiLCJSZWFjdERPTSIsImZpbmRET01Ob2RlIiwiaW5zdGFuY2UiLCJ3aW5kb3ciLCJpbnRlcm5hbF9yZWFjdERPTWZpbmRET01Ob2RlIiwicmVjdFByb3BlcnRpZXMiLCJzaG91bGRTa2lwRWxlbWVudCIsImVsZW1lbnQiLCJpbmNsdWRlcyIsImdldENvbXB1dGVkU3R5bGUiLCJwb3NpdGlvbiIsInJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJldmVyeSIsIml0ZW0iLCJ0b3BPZkVsZW1lbnRJblZpZXdwb3J0Iiwidmlld3BvcnRIZWlnaHQiLCJyZWN0cyIsImdldENsaWVudFJlY3RzIiwibGVuZ3RoIiwiZWxlbWVudFRvcCIsIk51bWJlciIsIlBPU0lUSVZFX0lORklOSVRZIiwiaSIsInRvcCIsImdldEhhc2hGcmFnbWVudERvbU5vZGUiLCJoYXNoRnJhZ21lbnQiLCJkb2N1bWVudCIsImJvZHkiLCJnZXRFbGVtZW50QnlJZCIsImdldEVsZW1lbnRzQnlOYW1lIiwiSW5uZXJTY3JvbGxBbmRGb2N1c0hhbmRsZXJPbGQiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbXBvbmVudERpZE1vdW50IiwiaGFuZGxlUG90ZW50aWFsU2Nyb2xsIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicmVuZGVyIiwicHJvcHMiLCJjaGlsZHJlbiIsImZvY3VzQW5kU2Nyb2xsUmVmIiwiY2FjaGVOb2RlIiwic2Nyb2xsUmVmIiwiZm9yY2VTY3JvbGwiLCJjdXJyZW50IiwiZG9tTm9kZSIsIkVsZW1lbnQiLCJIVE1MRWxlbWVudCIsIk5PREVfRU5WIiwicGFyZW50RWxlbWVudCIsImxvY2FsTmFtZSIsIm5leHRFbGVtZW50U2libGluZyIsImRpc2FibGVTbW9vdGhTY3JvbGxEdXJpbmdSb3V0ZVRyYW5zaXRpb24iLCJzY3JvbGxJbnRvVmlldyIsImh0bWxFbGVtZW50IiwiZG9jdW1lbnRFbGVtZW50IiwiY2xpZW50SGVpZ2h0Iiwic2Nyb2xsVG9wIiwiZG9udEZvcmNlTGF5b3V0Iiwib25seUhhc2hDaGFuZ2UiLCJmb2N1cyIsIklubmVyU2Nyb2xsSGFuZGxlck5ldyIsImNoaWxkcmVuUmVmIiwidXNlUmVmIiwidXNlTGF5b3V0RWZmZWN0IiwiYWN0aXZlRWxlbWVudCIsImJsdXIiLCJ1bmRlZmluZWQiLCJGcmFnbWVudCIsInJlZiIsIklubmVyU2Nyb2xsQW5kTWF5YmVGb2N1c0hhbmRsZXIiLCJTY3JvbGxBbmRNYXliZUZvY3VzSGFuZGxlciIsImNvbnRleHQiLCJ1c2VDb250ZXh0IiwiR2xvYmFsTGF5b3V0Um91dGVyQ29udGV4dCIsIkVycm9yIiwiSW5uZXJMYXlvdXRSb3V0ZXIiLCJ0cmVlIiwic2VnbWVudFBhdGgiLCJkZWJ1Z05hbWVDb250ZXh0IiwibWF5YmVDYWNoZU5vZGUiLCJwYXJhbXMiLCJ1cmwiLCJpc0FjdGl2ZSIsInBhcmVudE5hdlByb21pc2VzIiwiTmF2aWdhdGlvblByb21pc2VzQ29udGV4dCIsInVzZSIsInVucmVzb2x2ZWRUaGVuYWJsZSIsInJlc29sdmVkUHJlZmV0Y2hSc2MiLCJwcmVmZXRjaFJzYyIsInJzYyIsInVzZURlZmVycmVkVmFsdWUiLCJyZXNvbHZlZFJzYyIsImlzRGVmZXJyZWRSc2MiLCJ1bndyYXBwZWRSc2MiLCJuYXZpZ2F0aW9uUHJvbWlzZXMiLCJjcmVhdGVOZXN0ZWRMYXlvdXROYXZpZ2F0aW9uUHJvbWlzZXMiLCJyZXF1aXJlIiwiUHJvdmlkZXIiLCJ2YWx1ZSIsIkxheW91dFJvdXRlckNvbnRleHQiLCJwYXJlbnRUcmVlIiwicGFyZW50Q2FjaGVOb2RlIiwicGFyZW50U2VnbWVudFBhdGgiLCJwYXJlbnRQYXJhbXMiLCJwYXJlbnRMb2FkaW5nRGF0YSIsImxvYWRpbmciLCJwYXJlbnRDb250ZXh0IiwiTG9hZGluZ0JvdW5kYXJ5IiwibmFtZSIsImxvYWRpbmdSc2MiLCJsb2FkaW5nU3R5bGVzIiwibG9hZGluZ1NjcmlwdHMiLCJTdXNwZW5zZSIsImZhbGxiYWNrIiwicGFyYWxsZWxSb3V0ZXJLZXkiLCJlcnJvciIsImVycm9yU3R5bGVzIiwiZXJyb3JTY3JpcHRzIiwidGVtcGxhdGVTdHlsZXMiLCJ0ZW1wbGF0ZVNjcmlwdHMiLCJ0ZW1wbGF0ZSIsIm5vdEZvdW5kIiwiZm9yYmlkZGVuIiwidW5hdXRob3JpemVkIiwic2VnbWVudFZpZXdCb3VuZGFyaWVzIiwicGFyZW50VHJlZVNlZ21lbnQiLCJjb25jYXQiLCJhY3RpdmVUcmVlIiwibWF5YmVQYXJlbnRTbG90cyIsInNsb3RzIiwibWF5YmVWYWxpZGF0aW9uQm91bmRhcnlJZCIsIl9fTkVYVF9DQUNIRV9DT01QT05FTlRTIiwiSW5zdGFudFZhbGlkYXRpb25Cb3VuZGFyeUNvbnRleHQiLCJhY3RpdmVTZWdtZW50IiwiYWN0aXZlQ2FjaGVOb2RlIiwiYWN0aXZlU3RhdGVLZXkiLCJjcmVhdGVSb3V0ZXJDYWNoZUtleSIsImJmY2FjaGVFbnRyeSIsInVzZVJvdXRlckJGQ2FjaGUiLCJzdGF0ZUtleSIsInNlZ21lbnQiLCJzZWdtZW50Qm91bmRhcnlUcmlnZ2VyTm9kZSIsInNlZ21lbnRWaWV3U3RhdGVOb2RlIiwiU2VnbWVudEJvdW5kYXJ5VHJpZ2dlck5vZGUiLCJTZWdtZW50Vmlld1N0YXRlTm9kZSIsInBhZ2VQcmVmaXgiLCJub3JtYWxpemVBcHBQYXRoIiwicGFnZSIsIkFycmF5IiwiaXNBcnJheSIsInBhcmFtTmFtZSIsInBhcmFtQ2FjaGVLZXkiLCJwYXJhbVR5cGUiLCJwYXJhbVZhbHVlIiwiZ2V0UGFyYW1WYWx1ZUZyb21DYWNoZUtleSIsImRlYnVnTmFtZSIsImdldEJvdW5kYXJ5RGVidWdOYW1lRnJvbVNlZ21lbnQiLCJjaGlsZERlYnVnTmFtZUNvbnRleHQiLCJpc1ZpcnR1YWwiLCJkZWJ1Z05hbWVUb0Rpc3BsYXkiLCJ0ZW1wbGF0ZVZhbHVlIiwiRXJyb3JCb3VuZGFyeSIsImVycm9yQ29tcG9uZW50IiwiSFRUUEFjY2Vzc0ZhbGxiYWNrQm91bmRhcnkiLCJSZWRpcmVjdEJvdW5kYXJ5IiwiUmVuZGVyVmFsaWRhdGlvbkJvdW5kYXJ5QXRUaGlzTGV2ZWwiLCJpZCIsImNoaWxkIiwiVGVtcGxhdGVDb250ZXh0IiwiU2VnbWVudFN0YXRlUHJvdmlkZXIiLCJBY3Rpdml0eSIsIm1vZGUiLCJwdXNoIiwibmV4dCIsImlzVmlydHVhbExheW91dCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/layout-router.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/links.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/links.js ***!
|
||
\***********************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n IDLE_LINK_STATUS: function() {\n return IDLE_LINK_STATUS;\n },\n PENDING_LINK_STATUS: function() {\n return PENDING_LINK_STATUS;\n },\n getLinkForCurrentNavigation: function() {\n return getLinkForCurrentNavigation;\n },\n mountFormInstance: function() {\n return mountFormInstance;\n },\n mountLinkInstance: function() {\n return mountLinkInstance;\n },\n onLinkVisibilityChanged: function() {\n return onLinkVisibilityChanged;\n },\n onNavigationIntent: function() {\n return onNavigationIntent;\n },\n pingVisibleLinks: function() {\n return pingVisibleLinks;\n },\n setLinkForCurrentNavigation: function() {\n return setLinkForCurrentNavigation;\n },\n unmountLinkForCurrentNavigation: function() {\n return unmountLinkForCurrentNavigation;\n },\n unmountPrefetchableInstance: function() {\n return unmountPrefetchableInstance;\n }\n});\nconst _types = __webpack_require__(/*! ./segment-cache/types */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/types.js\");\nconst _cachekey = __webpack_require__(/*! ./segment-cache/cache-key */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/cache-key.js\");\nconst _scheduler = __webpack_require__(/*! ./segment-cache/scheduler */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/scheduler.js\");\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n// Tracks the most recently navigated link instance. When null, indicates\n// the current navigation was not initiated by a link click.\nlet linkForMostRecentNavigation = null;\nconst PENDING_LINK_STATUS = {\n pending: true\n};\nconst IDLE_LINK_STATUS = {\n pending: false\n};\nfunction setLinkForCurrentNavigation(link) {\n (0, _react.startTransition)(()=>{\n linkForMostRecentNavigation?.setOptimisticLinkStatus(IDLE_LINK_STATUS);\n link?.setOptimisticLinkStatus(PENDING_LINK_STATUS);\n linkForMostRecentNavigation = link;\n });\n}\nfunction unmountLinkForCurrentNavigation(link) {\n if (linkForMostRecentNavigation === link) {\n linkForMostRecentNavigation = null;\n }\n}\nfunction getLinkForCurrentNavigation() {\n return linkForMostRecentNavigation;\n}\n// Use a WeakMap to associate a Link instance with its DOM element. This is\n// used by the IntersectionObserver to track the link's visibility.\nconst prefetchable = typeof WeakMap === 'function' ? new WeakMap() : new Map();\n// A Set of the currently visible links. We re-prefetch visible links after a\n// cache invalidation, or when the current URL changes. It's a separate data\n// structure from the WeakMap above because only the visible links need to\n// be enumerated.\nconst prefetchableAndVisible = new Set();\n// A single IntersectionObserver instance shared by all <Link> components.\nconst observer = typeof IntersectionObserver === 'function' ? new IntersectionObserver(handleIntersect, {\n rootMargin: '200px'\n}) : null;\nfunction observeVisibility(element, instance) {\n const existingInstance = prefetchable.get(element);\n if (existingInstance !== undefined) {\n // This shouldn't happen because each <Link> component should have its own\n // anchor tag instance, but it's defensive coding to avoid a memory leak in\n // case there's a logical error somewhere else.\n unmountPrefetchableInstance(element);\n }\n // Only track prefetchable links that have a valid prefetch URL\n prefetchable.set(element, instance);\n if (observer !== null) {\n observer.observe(element);\n }\n}\nfunction coercePrefetchableUrl(href) {\n if (false) {} else {\n return null;\n }\n}\nfunction mountLinkInstance(element, href, router, fetchStrategy, prefetchEnabled, setOptimisticLinkStatus) {\n if (prefetchEnabled) {\n const prefetchURL = coercePrefetchableUrl(href);\n if (prefetchURL !== null) {\n const instance = {\n router,\n fetchStrategy,\n isVisible: false,\n prefetchTask: null,\n prefetchHref: prefetchURL.href,\n setOptimisticLinkStatus\n };\n // We only observe the link's visibility if it's prefetchable. For\n // example, this excludes links to external URLs.\n observeVisibility(element, instance);\n return instance;\n }\n }\n // If the link is not prefetchable, we still create an instance so we can\n // track its optimistic state (i.e. useLinkStatus).\n const instance = {\n router,\n fetchStrategy,\n isVisible: false,\n prefetchTask: null,\n prefetchHref: null,\n setOptimisticLinkStatus\n };\n return instance;\n}\nfunction mountFormInstance(element, href, router, fetchStrategy) {\n const prefetchURL = coercePrefetchableUrl(href);\n if (prefetchURL === null) {\n // This href is not prefetchable, so we don't track it.\n // TODO: We currently observe/unobserve a form every time its href changes.\n // For Links, this isn't a big deal because the href doesn't usually change,\n // but for forms it's extremely common. We should optimize this.\n return;\n }\n const instance = {\n router,\n fetchStrategy,\n isVisible: false,\n prefetchTask: null,\n prefetchHref: prefetchURL.href,\n setOptimisticLinkStatus: null\n };\n observeVisibility(element, instance);\n}\nfunction unmountPrefetchableInstance(element) {\n const instance = prefetchable.get(element);\n if (instance !== undefined) {\n prefetchable.delete(element);\n prefetchableAndVisible.delete(instance);\n const prefetchTask = instance.prefetchTask;\n if (prefetchTask !== null) {\n (0, _scheduler.cancelPrefetchTask)(prefetchTask);\n }\n }\n if (observer !== null) {\n observer.unobserve(element);\n }\n}\nfunction handleIntersect(entries) {\n for (const entry of entries){\n // Some extremely old browsers or polyfills don't reliably support\n // isIntersecting so we check intersectionRatio instead. (Do we care? Not\n // really. But whatever this is fine.)\n const isVisible = entry.intersectionRatio > 0;\n onLinkVisibilityChanged(entry.target, isVisible);\n }\n}\nfunction onLinkVisibilityChanged(element, isVisible) {\n if (true) {\n // Prefetching on viewport is disabled in development for performance\n // reasons, because it requires compiling the target page.\n // TODO: Investigate re-enabling this.\n return;\n }\n const instance = prefetchable.get(element);\n if (instance === undefined) {\n return;\n }\n instance.isVisible = isVisible;\n if (isVisible) {\n prefetchableAndVisible.add(instance);\n } else {\n prefetchableAndVisible.delete(instance);\n }\n rescheduleLinkPrefetch(instance, _types.PrefetchPriority.Default);\n}\nfunction onNavigationIntent(element, unstable_upgradeToDynamicPrefetch) {\n const instance = prefetchable.get(element);\n if (instance === undefined) {\n return;\n }\n // Prefetch the link on hover/touchstart.\n if (instance !== undefined) {\n if (false) {}\n rescheduleLinkPrefetch(instance, _types.PrefetchPriority.Intent);\n }\n}\nfunction rescheduleLinkPrefetch(instance, priority) {\n // Ensures that app-router-instance is not compiled in the server bundle\n if (false) {}\n}\nfunction pingVisibleLinks(nextUrl, tree) {\n // For each currently visible link, cancel the existing prefetch task (if it\n // exists) and schedule a new one. This is effectively the same as if all the\n // visible links left and then re-entered the viewport.\n //\n // This is called when the Next-Url or the base tree changes, since those\n // may affect the result of a prefetch task. It's also called after a\n // cache invalidation.\n for (const instance of prefetchableAndVisible){\n const task = instance.prefetchTask;\n if (task !== null && !(0, _scheduler.isPrefetchTaskDirty)(task, nextUrl, tree)) {\n continue;\n }\n // Something changed. Cancel the existing prefetch task and schedule a\n // new one.\n if (task !== null) {\n (0, _scheduler.cancelPrefetchTask)(task);\n }\n const cacheKey = (0, _cachekey.createCacheKey)(instance.prefetchHref, nextUrl);\n instance.prefetchTask = (0, _scheduler.schedulePrefetchTask)(cacheKey, tree, instance.fetchStrategy, _types.PrefetchPriority.Default, null);\n }\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=links.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2xpbmtzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQWdFYUEsZ0JBQWdCO2VBQWhCQTs7SUFIQUMsbUJBQW1CO2VBQW5CQTs7SUErQkdDLDJCQUEyQjtlQUEzQkE7O0lBdUdBQyxpQkFBaUI7ZUFBakJBOztJQXRDQUMsaUJBQWlCO2VBQWpCQTs7SUF3RkFDLHVCQUF1QjtlQUF2QkE7O0lBc0JBQyxrQkFBa0I7ZUFBbEJBOztJQXlFQUMsZ0JBQWdCO2VBQWhCQTs7SUE5UUFDLDJCQUEyQjtlQUEzQkE7O0lBU0FDLCtCQUErQjtlQUEvQkE7O0lBNklBQywyQkFBMkI7ZUFBM0JBOzs7bUNBdE5UO3NDQUN3Qjt1Q0FPeEI7bUNBQ3lCO0FBeUNoQyx5RUFBeUU7QUFDekUsNERBQTREO0FBQzVELElBQUlDLDhCQUFtRDtBQUdoRCxNQUFNVixzQkFBc0I7SUFBRVcsU0FBUztBQUFLO0FBRzVDLE1BQU1aLG1CQUFtQjtJQUFFWSxTQUFTO0FBQU07QUFNMUMsU0FBU0osNEJBQTRCSyxJQUF5QjtJQUNuRUMsQ0FBQUEsR0FBQUEsT0FBQUEsZUFBQUEsRUFBZ0I7UUFDZEgsNkJBQTZCSSx3QkFBd0JmO1FBQ3JEYSxNQUFNRSx3QkFBd0JkO1FBQzlCVSw4QkFBOEJFO0lBQ2hDO0FBQ0Y7QUFHTyxTQUFTSixnQ0FBZ0NJLElBQWtCO0lBQ2hFLElBQUlGLGdDQUFnQ0UsTUFBTTtRQUN4Q0YsOEJBQThCO0lBQ2hDO0FBQ0Y7QUFTTyxTQUFTVDtJQUNkLE9BQU9TO0FBQ1Q7QUFFQSwyRUFBMkU7QUFDM0UsbUVBQW1FO0FBQ25FLE1BQU1LLGVBR0osT0FBT0MsWUFBWSxhQUFhLElBQUlBLFlBQVksSUFBSUM7QUFFdEQsNkVBQTZFO0FBQzdFLDRFQUE0RTtBQUM1RSwwRUFBMEU7QUFDMUUsaUJBQWlCO0FBQ2pCLE1BQU1DLHlCQUFvRCxJQUFJQztBQUU5RCwwRUFBMEU7QUFDMUUsTUFBTUMsV0FDSixPQUFPQyx5QkFBeUIsYUFDNUIsSUFBSUEscUJBQXFCQyxpQkFBaUI7SUFDeENDLFlBQVk7QUFDZCxLQUNBO0FBRU4sU0FBU0Msa0JBQWtCQyxPQUFnQixFQUFFQyxRQUE4QjtJQUN6RSxNQUFNQyxtQkFBbUJaLGFBQWFhLEdBQUcsQ0FBQ0g7SUFDMUMsSUFBSUUscUJBQXFCRSxXQUFXO1FBQ2xDLDBFQUEwRTtRQUMxRSwyRUFBMkU7UUFDM0UsK0NBQStDO1FBQy9DcEIsNEJBQTRCZ0I7SUFDOUI7SUFDQSwrREFBK0Q7SUFDL0RWLGFBQWFlLEdBQUcsQ0FBQ0wsU0FBU0M7SUFDMUIsSUFBSU4sYUFBYSxNQUFNO1FBQ3JCQSxTQUFTVyxPQUFPLENBQUNOO0lBQ25CO0FBQ0Y7QUFFQSxTQUFTTyxzQkFBc0JDLElBQVk7SUFDekMsSUFBSSxLQUE2QixFQUFFLEVBbUJsQyxNQUFNO1FBQ0wsT0FBTztJQUNUO0FBQ0Y7QUFFTyxTQUFTOUIsa0JBQ2RzQixPQUFvQixFQUNwQlEsSUFBWSxFQUNaUSxNQUF5QixFQUN6QkMsYUFBd0MsRUFDeENDLGVBQXdCLEVBQ3hCN0IsdUJBQStEO0lBRS9ELElBQUk2QixpQkFBaUI7UUFDbkIsTUFBTUMsY0FBY1osc0JBQXNCQztRQUMxQyxJQUFJVyxnQkFBZ0IsTUFBTTtZQUN4QixNQUFNbEIsV0FBcUM7Z0JBQ3pDZTtnQkFDQUM7Z0JBQ0FHLFdBQVc7Z0JBQ1hDLGNBQWM7Z0JBQ2RDLGNBQWNILFlBQVlYLElBQUk7Z0JBQzlCbkI7WUFDRjtZQUNBLGtFQUFrRTtZQUNsRSxpREFBaUQ7WUFDakRVLGtCQUFrQkMsU0FBU0M7WUFDM0IsT0FBT0E7UUFDVDtJQUNGO0lBQ0EseUVBQXlFO0lBQ3pFLG1EQUFtRDtJQUNuRCxNQUFNQSxXQUF3QztRQUM1Q2U7UUFDQUM7UUFDQUcsV0FBVztRQUNYQyxjQUFjO1FBQ2RDLGNBQWM7UUFDZGpDO0lBQ0Y7SUFDQSxPQUFPWTtBQUNUO0FBRU8sU0FBU3hCLGtCQUNkdUIsT0FBd0IsRUFDeEJRLElBQVksRUFDWlEsTUFBeUIsRUFDekJDLGFBQXdDO0lBRXhDLE1BQU1FLGNBQWNaLHNCQUFzQkM7SUFDMUMsSUFBSVcsZ0JBQWdCLE1BQU07UUFDeEIsdURBQXVEO1FBQ3ZELDJFQUEyRTtRQUMzRSw0RUFBNEU7UUFDNUUsZ0VBQWdFO1FBQ2hFO0lBQ0Y7SUFDQSxNQUFNbEIsV0FBeUI7UUFDN0JlO1FBQ0FDO1FBQ0FHLFdBQVc7UUFDWEMsY0FBYztRQUNkQyxjQUFjSCxZQUFZWCxJQUFJO1FBQzlCbkIseUJBQXlCO0lBQzNCO0lBQ0FVLGtCQUFrQkMsU0FBU0M7QUFDN0I7QUFFTyxTQUFTakIsNEJBQTRCZ0IsT0FBZ0I7SUFDMUQsTUFBTUMsV0FBV1gsYUFBYWEsR0FBRyxDQUFDSDtJQUNsQyxJQUFJQyxhQUFhRyxXQUFXO1FBQzFCZCxhQUFhaUMsTUFBTSxDQUFDdkI7UUFDcEJQLHVCQUF1QjhCLE1BQU0sQ0FBQ3RCO1FBQzlCLE1BQU1vQixlQUFlcEIsU0FBU29CLFlBQVk7UUFDMUMsSUFBSUEsaUJBQWlCLE1BQU07WUFDekJHLENBQUFBLEdBQUFBLFdBQUFBLGtCQUFBQSxFQUFtQkg7UUFDckI7SUFDRjtJQUNBLElBQUkxQixhQUFhLE1BQU07UUFDckJBLFNBQVM4QixTQUFTLENBQUN6QjtJQUNyQjtBQUNGO0FBRUEsU0FBU0gsZ0JBQWdCNkIsT0FBeUM7SUFDaEUsS0FBSyxNQUFNQyxTQUFTRCxRQUFTO1FBQzNCLGtFQUFrRTtRQUNsRSx5RUFBeUU7UUFDekUsc0NBQXNDO1FBQ3RDLE1BQU1OLFlBQVlPLE1BQU1DLGlCQUFpQixHQUFHO1FBQzVDakQsd0JBQXdCZ0QsTUFBTUUsTUFBTSxFQUF1QlQ7SUFDN0Q7QUFDRjtBQUVPLFNBQVN6Qyx3QkFBd0JxQixPQUFnQixFQUFFb0IsU0FBa0I7SUFDMUUsSUFBSVUsSUFBb0IsRUFBbUI7UUFDekMscUVBQXFFO1FBQ3JFLDBEQUEwRDtRQUMxRCxzQ0FBc0M7UUFDdEM7SUFDRjtJQUVBLE1BQU03QixXQUFXWCxhQUFhYSxHQUFHLENBQUNIO0lBQ2xDLElBQUlDLGFBQWFHLFdBQVc7UUFDMUI7SUFDRjtJQUVBSCxTQUFTbUIsU0FBUyxHQUFHQTtJQUNyQixJQUFJQSxXQUFXO1FBQ2IzQix1QkFBdUJ3QyxHQUFHLENBQUNoQztJQUM3QixPQUFPO1FBQ0xSLHVCQUF1QjhCLE1BQU0sQ0FBQ3RCO0lBQ2hDO0lBQ0FpQyx1QkFBdUJqQyxVQUFVa0MsT0FBQUEsZ0JBQWdCLENBQUNDLE9BQU87QUFDM0Q7QUFFTyxTQUFTeEQsbUJBQ2RvQixPQUF3QyxFQUN4Q3FDLGlDQUEwQztJQUUxQyxNQUFNcEMsV0FBV1gsYUFBYWEsR0FBRyxDQUFDSDtJQUNsQyxJQUFJQyxhQUFhRyxXQUFXO1FBQzFCO0lBQ0Y7SUFDQSx5Q0FBeUM7SUFDekMsSUFBSUgsYUFBYUcsV0FBVztRQUMxQixJQUNFMEIsS0FDaUNPLEVBQ2pDLEVBR0Q7UUFDREgsdUJBQXVCakMsVUFBVWtDLE9BQUFBLGdCQUFnQixDQUFDTSxNQUFNO0lBQzFEO0FBQ0Y7QUFFQSxTQUFTUCx1QkFDUGpDLFFBQThCLEVBQzlCeUMsUUFBNEQ7SUFFNUQsd0VBQXdFO0lBQ3hFLElBQUksS0FBNkIsRUFBRSxFQTRDbEM7QUFDSDtBQUVPLFNBQVM3RCxpQkFDZG1FLE9BQXNCLEVBQ3RCRCxJQUF1QjtJQUV2Qiw0RUFBNEU7SUFDNUUsNkVBQTZFO0lBQzdFLHVEQUF1RDtJQUN2RCxFQUFFO0lBQ0YseUVBQXlFO0lBQ3pFLHFFQUFxRTtJQUNyRSxzQkFBc0I7SUFDdEIsS0FBSyxNQUFNOUMsWUFBWVIsdUJBQXdCO1FBQzdDLE1BQU00RCxPQUFPcEQsU0FBU29CLFlBQVk7UUFDbEMsSUFBSWdDLFNBQVMsUUFBUSxDQUFDQyxDQUFBQSxHQUFBQSxXQUFBQSxtQkFBQUEsRUFBb0JELE1BQU1MLFNBQVNELE9BQU87WUFHOUQ7UUFDRjtRQUNBLHNFQUFzRTtRQUN0RSxXQUFXO1FBQ1gsSUFBSU0sU0FBUyxNQUFNO1lBQ2pCN0IsQ0FBQUEsR0FBQUEsV0FBQUEsa0JBQUFBLEVBQW1CNkI7UUFDckI7UUFDQSxNQUFNSixXQUFXQyxDQUFBQSxHQUFBQSxVQUFBQSxjQUFBQSxFQUFlakQsU0FBU3FCLFlBQVksRUFBRTBCO1FBQ3ZEL0MsU0FBU29CLFlBQVksR0FBRzhCLENBQUFBLEdBQUFBLFdBQUFBLG9CQUFBQSxFQUN0QkYsVUFDQUYsTUFDQTlDLFNBQVNnQixhQUFhLEVBQ3RCa0IsT0FBQUEsZ0JBQWdCLENBQUNDLE9BQU8sRUFDeEI7SUFFSjtBQUNGIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL2NsaWVudC9jb21wb25lbnRzL2xpbmtzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmxpZ2h0Um91dGVyU3RhdGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEFwcFJvdXRlckluc3RhbmNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQge1xuICBGZXRjaFN0cmF0ZWd5LFxuICB0eXBlIFByZWZldGNoVGFza0ZldGNoU3RyYXRlZ3ksXG4gIFByZWZldGNoUHJpb3JpdHksXG59IGZyb20gJy4vc2VnbWVudC1jYWNoZS90eXBlcydcbmltcG9ydCB7IGNyZWF0ZUNhY2hlS2V5IH0gZnJvbSAnLi9zZWdtZW50LWNhY2hlL2NhY2hlLWtleSdcbmltcG9ydCB7XG4gIHR5cGUgUHJlZmV0Y2hUYXNrLFxuICBzY2hlZHVsZVByZWZldGNoVGFzayBhcyBzY2hlZHVsZVNlZ21lbnRQcmVmZXRjaFRhc2ssXG4gIGNhbmNlbFByZWZldGNoVGFzayxcbiAgcmVzY2hlZHVsZVByZWZldGNoVGFzayxcbiAgaXNQcmVmZXRjaFRhc2tEaXJ0eSxcbn0gZnJvbSAnLi9zZWdtZW50LWNhY2hlL3NjaGVkdWxlcidcbmltcG9ydCB7IHN0YXJ0VHJhbnNpdGlvbiB9IGZyb20gJ3JlYWN0J1xuXG50eXBlIExpbmtFbGVtZW50ID0gSFRNTEFuY2hvckVsZW1lbnQgfCBTVkdBRWxlbWVudFxuXG50eXBlIEVsZW1lbnQgPSBMaW5rRWxlbWVudCB8IEhUTUxGb3JtRWxlbWVudFxuXG4vLyBQcm9wZXJ0aWVzIHRoYXQgYXJlIHNoYXJlZCBiZXR3ZWVuIExpbmsgYW5kIEZvcm0gaW5zdGFuY2VzLiBXZSB1c2UgdGhlIHNhbWVcbi8vIHNoYXBlIGZvciBib3RoIHRvIHByZXZlbnQgYSBwb2x5bW9ycGhpYyBkZS1vcHQgaW4gdGhlIFZNLlxudHlwZSBMaW5rT3JGb3JtSW5zdGFuY2VTaGFyZWQgPSB7XG4gIHJvdXRlcjogQXBwUm91dGVySW5zdGFuY2VcbiAgZmV0Y2hTdHJhdGVneTogUHJlZmV0Y2hUYXNrRmV0Y2hTdHJhdGVneVxuXG4gIGlzVmlzaWJsZTogYm9vbGVhblxuXG4gIC8vIFRoZSBtb3N0IHJlY2VudGx5IGluaXRpYXRlZCBwcmVmZXRjaCB0YXNrLiBJdCBtYXkgb3IgbWF5IG5vdCBoYXZlXG4gIC8vIGFscmVhZHkgY29tcGxldGVkLiBUaGUgc2FtZSBwcmVmZXRjaCB0YXNrIG9iamVjdCBjYW4gYmUgcmV1c2VkIGFjcm9zc1xuICAvLyBtdWx0aXBsZSBwcmVmZXRjaGVzIG9mIHRoZSBzYW1lIGxpbmsuXG4gIHByZWZldGNoVGFzazogUHJlZmV0Y2hUYXNrIHwgbnVsbFxufVxuXG5leHBvcnQgdHlwZSBGb3JtSW5zdGFuY2UgPSBMaW5rT3JGb3JtSW5zdGFuY2VTaGFyZWQgJiB7XG4gIHByZWZldGNoSHJlZjogc3RyaW5nXG4gIHNldE9wdGltaXN0aWNMaW5rU3RhdHVzOiBudWxsXG59XG5cbnR5cGUgUHJlZmV0Y2hhYmxlTGlua0luc3RhbmNlID0gTGlua09yRm9ybUluc3RhbmNlU2hhcmVkICYge1xuICBwcmVmZXRjaEhyZWY6IHN0cmluZ1xuICBzZXRPcHRpbWlzdGljTGlua1N0YXR1czogKHN0YXR1czogeyBwZW5kaW5nOiBib29sZWFuIH0pID0+IHZvaWRcbn1cblxudHlwZSBOb25QcmVmZXRjaGFibGVMaW5rSW5zdGFuY2UgPSBMaW5rT3JGb3JtSW5zdGFuY2VTaGFyZWQgJiB7XG4gIHByZWZldGNoSHJlZjogbnVsbFxuICBzZXRPcHRpbWlzdGljTGlua1N0YXR1czogKHN0YXR1czogeyBwZW5kaW5nOiBib29sZWFuIH0pID0+IHZvaWRcbn1cblxudHlwZSBQcmVmZXRjaGFibGVJbnN0YW5jZSA9IFByZWZldGNoYWJsZUxpbmtJbnN0YW5jZSB8IEZvcm1JbnN0YW5jZVxuXG5leHBvcnQgdHlwZSBMaW5rSW5zdGFuY2UgPVxuICB8IFByZWZldGNoYWJsZUxpbmtJbnN0YW5jZVxuICB8IE5vblByZWZldGNoYWJsZUxpbmtJbnN0YW5jZVxuXG4vLyBUcmFja3MgdGhlIG1vc3QgcmVjZW50bHkgbmF2aWdhdGVkIGxpbmsgaW5zdGFuY2UuIFdoZW4gbnVsbCwgaW5kaWNhdGVzXG4vLyB0aGUgY3VycmVudCBuYXZpZ2F0aW9uIHdhcyBub3QgaW5pdGlhdGVkIGJ5IGEgbGluayBjbGljay5cbmxldCBsaW5rRm9yTW9zdFJlY2VudE5hdmlnYXRpb246IExpbmtJbnN0YW5jZSB8IG51bGwgPSBudWxsXG5cbi8vIFN0YXR1cyBvYmplY3QgaW5kaWNhdGluZyBsaW5rIGlzIHBlbmRpbmdcbmV4cG9ydCBjb25zdCBQRU5ESU5HX0xJTktfU1RBVFVTID0geyBwZW5kaW5nOiB0cnVlIH1cblxuLy8gU3RhdHVzIG9iamVjdCBpbmRpY2F0aW5nIGxpbmsgaXMgaWRsZVxuZXhwb3J0IGNvbnN0IElETEVfTElOS19TVEFUVVMgPSB7IHBlbmRpbmc6IGZhbHNlIH1cblxuLy8gVXBkYXRlcyB0aGUgbG9hZGluZyBzdGF0ZSB3aGVuIG5hdmlnYXRpbmcgYmV0d2VlbiBsaW5rc1xuLy8gLSBSZXNldHMgdGhlIHByZXZpb3VzIGxpbmsncyBsb2FkaW5nIHN0YXRlXG4vLyAtIFNldHMgdGhlIG5ldyBsaW5rJ3MgbG9hZGluZyBzdGF0ZVxuLy8gLSBVcGRhdGVzIHRyYWNraW5nIG9mIGN1cnJlbnQgbmF2aWdhdGlvblxuZXhwb3J0IGZ1bmN0aW9uIHNldExpbmtGb3JDdXJyZW50TmF2aWdhdGlvbihsaW5rOiBMaW5rSW5zdGFuY2UgfCBudWxsKSB7XG4gIHN0YXJ0VHJhbnNpdGlvbigoKSA9PiB7XG4gICAgbGlua0Zvck1vc3RSZWNlbnROYXZpZ2F0aW9uPy5zZXRPcHRpbWlzdGljTGlua1N0YXR1cyhJRExFX0xJTktfU1RBVFVTKVxuICAgIGxpbms/LnNldE9wdGltaXN0aWNMaW5rU3RhdHVzKFBFTkRJTkdfTElOS19TVEFUVVMpXG4gICAgbGlua0Zvck1vc3RSZWNlbnROYXZpZ2F0aW9uID0gbGlua1xuICB9KVxufVxuXG4vLyBVbm1vdW50cyB0aGUgY3VycmVudCBsaW5rIGluc3RhbmNlIGZyb20gbmF2aWdhdGlvbiB0cmFja2luZ1xuZXhwb3J0IGZ1bmN0aW9uIHVubW91bnRMaW5rRm9yQ3VycmVudE5hdmlnYXRpb24obGluazogTGlua0luc3RhbmNlKSB7XG4gIGlmIChsaW5rRm9yTW9zdFJlY2VudE5hdmlnYXRpb24gPT09IGxpbmspIHtcbiAgICBsaW5rRm9yTW9zdFJlY2VudE5hdmlnYXRpb24gPSBudWxsXG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBsaW5rIGluc3RhbmNlIHRoYXQgaW5pdGlhdGVkIHRoZSBtb3N0IHJlY2VudCBuYXZpZ2F0aW9uLlxuICogUmV0dXJucyBudWxsIGlmIHRoZSBuYXZpZ2F0aW9uIHdhcyBub3QgaW5pdGlhdGVkIGJ5IGEgbGluayBjbGljay5cbiAqXG4gKiBVc2VkIGJ5IHRoZSBJbnN0YW50IE5hdmlnYXRpb24gVGVzdGluZyBBUEkgaW4gZGV2IG1vZGUgdG8gbWF0Y2ggdGhlXG4gKiBmZXRjaCBzdHJhdGVneSBvZiB0aGUgbGluayBkdXJpbmcgY2FjaGUtbWlzcyBuYXZpZ2F0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpbmtGb3JDdXJyZW50TmF2aWdhdGlvbigpOiBMaW5rSW5zdGFuY2UgfCBudWxsIHtcbiAgcmV0dXJuIGxpbmtGb3JNb3N0UmVjZW50TmF2aWdhdGlvblxufVxuXG4vLyBVc2UgYSBXZWFrTWFwIHRvIGFzc29jaWF0ZSBhIExpbmsgaW5zdGFuY2Ugd2l0aCBpdHMgRE9NIGVsZW1lbnQuIFRoaXMgaXNcbi8vIHVzZWQgYnkgdGhlIEludGVyc2VjdGlvbk9ic2VydmVyIHRvIHRyYWNrIHRoZSBsaW5rJ3MgdmlzaWJpbGl0eS5cbmNvbnN0IHByZWZldGNoYWJsZTpcbiAgfCBXZWFrTWFwPEVsZW1lbnQsIFByZWZldGNoYWJsZUluc3RhbmNlPlxuICB8IE1hcDxFbGVtZW50LCBQcmVmZXRjaGFibGVJbnN0YW5jZT4gPVxuICB0eXBlb2YgV2Vha01hcCA9PT0gJ2Z1bmN0aW9uJyA/IG5ldyBXZWFrTWFwKCkgOiBuZXcgTWFwKClcblxuLy8gQSBTZXQgb2YgdGhlIGN1cnJlbnRseSB2aXNpYmxlIGxpbmtzLiBXZSByZS1wcmVmZXRjaCB2aXNpYmxlIGxpbmtzIGFmdGVyIGFcbi8vIGNhY2hlIGludmFsaWRhdGlvbiwgb3Igd2hlbiB0aGUgY3VycmVudCBVUkwgY2hhbmdlcy4gSXQncyBhIHNlcGFyYXRlIGRhdGFcbi8vIHN0cnVjdHVyZSBmcm9tIHRoZSBXZWFrTWFwIGFib3ZlIGJlY2F1c2Ugb25seSB0aGUgdmlzaWJsZSBsaW5rcyBuZWVkIHRvXG4vLyBiZSBlbnVtZXJhdGVkLlxuY29uc3QgcHJlZmV0Y2hhYmxlQW5kVmlzaWJsZTogU2V0PFByZWZldGNoYWJsZUluc3RhbmNlPiA9IG5ldyBTZXQoKVxuXG4vLyBBIHNpbmdsZSBJbnRlcnNlY3Rpb25PYnNlcnZlciBpbnN0YW5jZSBzaGFyZWQgYnkgYWxsIDxMaW5rPiBjb21wb25lbnRzLlxuY29uc3Qgb2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyIHwgbnVsbCA9XG4gIHR5cGVvZiBJbnRlcnNlY3Rpb25PYnNlcnZlciA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGhhbmRsZUludGVyc2VjdCwge1xuICAgICAgICByb290TWFyZ2luOiAnMjAwcHgnLFxuICAgICAgfSlcbiAgICA6IG51bGxcblxuZnVuY3Rpb24gb2JzZXJ2ZVZpc2liaWxpdHkoZWxlbWVudDogRWxlbWVudCwgaW5zdGFuY2U6IFByZWZldGNoYWJsZUluc3RhbmNlKSB7XG4gIGNvbnN0IGV4aXN0aW5nSW5zdGFuY2UgPSBwcmVmZXRjaGFibGUuZ2V0KGVsZW1lbnQpXG4gIGlmIChleGlzdGluZ0luc3RhbmNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAvLyBUaGlzIHNob3VsZG4ndCBoYXBwZW4gYmVjYXVzZSBlYWNoIDxMaW5rPiBjb21wb25lbnQgc2hvdWxkIGhhdmUgaXRzIG93blxuICAgIC8vIGFuY2hvciB0YWcgaW5zdGFuY2UsIGJ1dCBpdCdzIGRlZmVuc2l2ZSBjb2RpbmcgdG8gYXZvaWQgYSBtZW1vcnkgbGVhayBpblxuICAgIC8vIGNhc2UgdGhlcmUncyBhIGxvZ2ljYWwgZXJyb3Igc29tZXdoZXJlIGVsc2UuXG4gICAgdW5tb3VudFByZWZldGNoYWJsZUluc3RhbmNlKGVsZW1lbnQpXG4gIH1cbiAgLy8gT25seSB0cmFjayBwcmVmZXRjaGFibGUgbGlua3MgdGhhdCBoYXZlIGEgdmFsaWQgcHJlZmV0Y2ggVVJMXG4gIHByZWZldGNoYWJsZS5zZXQoZWxlbWVudCwgaW5zdGFuY2UpXG4gIGlmIChvYnNlcnZlciAhPT0gbnVsbCkge1xuICAgIG9ic2VydmVyLm9ic2VydmUoZWxlbWVudClcbiAgfVxufVxuXG5mdW5jdGlvbiBjb2VyY2VQcmVmZXRjaGFibGVVcmwoaHJlZjogc3RyaW5nKTogVVJMIHwgbnVsbCB7XG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgIGNvbnN0IHsgY3JlYXRlUHJlZmV0Y2hVUkwgfSA9XG4gICAgICByZXF1aXJlKCcuL2FwcC1yb3V0ZXItdXRpbHMnKSBhcyB0eXBlb2YgaW1wb3J0KCcuL2FwcC1yb3V0ZXItdXRpbHMnKVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBjcmVhdGVQcmVmZXRjaFVSTChocmVmKVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gY3JlYXRlUHJlZmV0Y2hVUkwgc29tZXRpbWVzIHRocm93cyBhbiBlcnJvciBpZiBhbiBpbnZhbGlkIFVSTCBpc1xuICAgICAgLy8gcHJvdmlkZWQsIHRob3VnaCBJJ20gbm90IHN1cmUgaWYgaXQncyBhY3R1YWxseSBuZWNlc3NhcnkuXG4gICAgICAvLyBUT0RPOiBDb25zaWRlciByZW1vdmluZyB0aGUgdGhyb3cgZnJvbSB0aGUgaW5uZXIgZnVuY3Rpb24sIG9yIGNoYW5nZSBpdFxuICAgICAgLy8gdG8gcmVwb3J0RXJyb3IuIE9yIG1heWJlIHRoZSBlcnJvciBpc24ndCBldmVuIG5lY2Vzc2FyeSBmb3IgYXV0b21hdGljXG4gICAgICAvLyBwcmVmZXRjaGVzLCBqdXN0IG5hdmlnYXRpb25zLlxuICAgICAgY29uc3QgcmVwb3J0RXJyb3JGbiA9XG4gICAgICAgIHR5cGVvZiByZXBvcnRFcnJvciA9PT0gJ2Z1bmN0aW9uJyA/IHJlcG9ydEVycm9yIDogY29uc29sZS5lcnJvclxuICAgICAgcmVwb3J0RXJyb3JGbihcbiAgICAgICAgYENhbm5vdCBwcmVmZXRjaCAnJHtocmVmfScgYmVjYXVzZSBpdCBjYW5ub3QgYmUgY29udmVydGVkIHRvIGEgVVJMLmBcbiAgICAgIClcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vdW50TGlua0luc3RhbmNlKFxuICBlbGVtZW50OiBMaW5rRWxlbWVudCxcbiAgaHJlZjogc3RyaW5nLFxuICByb3V0ZXI6IEFwcFJvdXRlckluc3RhbmNlLFxuICBmZXRjaFN0cmF0ZWd5OiBQcmVmZXRjaFRhc2tGZXRjaFN0cmF0ZWd5LFxuICBwcmVmZXRjaEVuYWJsZWQ6IGJvb2xlYW4sXG4gIHNldE9wdGltaXN0aWNMaW5rU3RhdHVzOiAoc3RhdHVzOiB7IHBlbmRpbmc6IGJvb2xlYW4gfSkgPT4gdm9pZFxuKTogTGlua0luc3RhbmNlIHtcbiAgaWYgKHByZWZldGNoRW5hYmxlZCkge1xuICAgIGNvbnN0IHByZWZldGNoVVJMID0gY29lcmNlUHJlZmV0Y2hhYmxlVXJsKGhyZWYpXG4gICAgaWYgKHByZWZldGNoVVJMICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBpbnN0YW5jZTogUHJlZmV0Y2hhYmxlTGlua0luc3RhbmNlID0ge1xuICAgICAgICByb3V0ZXIsXG4gICAgICAgIGZldGNoU3RyYXRlZ3ksXG4gICAgICAgIGlzVmlzaWJsZTogZmFsc2UsXG4gICAgICAgIHByZWZldGNoVGFzazogbnVsbCxcbiAgICAgICAgcHJlZmV0Y2hIcmVmOiBwcmVmZXRjaFVSTC5ocmVmLFxuICAgICAgICBzZXRPcHRpbWlzdGljTGlua1N0YXR1cyxcbiAgICAgIH1cbiAgICAgIC8vIFdlIG9ubHkgb2JzZXJ2ZSB0aGUgbGluaydzIHZpc2liaWxpdHkgaWYgaXQncyBwcmVmZXRjaGFibGUuIEZvclxuICAgICAgLy8gZXhhbXBsZSwgdGhpcyBleGNsdWRlcyBsaW5rcyB0byBleHRlcm5hbCBVUkxzLlxuICAgICAgb2JzZXJ2ZVZpc2liaWxpdHkoZWxlbWVudCwgaW5zdGFuY2UpXG4gICAgICByZXR1cm4gaW5zdGFuY2VcbiAgICB9XG4gIH1cbiAgLy8gSWYgdGhlIGxpbmsgaXMgbm90IHByZWZldGNoYWJsZSwgd2Ugc3RpbGwgY3JlYXRlIGFuIGluc3RhbmNlIHNvIHdlIGNhblxuICAvLyB0cmFjayBpdHMgb3B0aW1pc3RpYyBzdGF0ZSAoaS5lLiB1c2VMaW5rU3RhdHVzKS5cbiAgY29uc3QgaW5zdGFuY2U6IE5vblByZWZldGNoYWJsZUxpbmtJbnN0YW5jZSA9IHtcbiAgICByb3V0ZXIsXG4gICAgZmV0Y2hTdHJhdGVneSxcbiAgICBpc1Zpc2libGU6IGZhbHNlLFxuICAgIHByZWZldGNoVGFzazogbnVsbCxcbiAgICBwcmVmZXRjaEhyZWY6IG51bGwsXG4gICAgc2V0T3B0aW1pc3RpY0xpbmtTdGF0dXMsXG4gIH1cbiAgcmV0dXJuIGluc3RhbmNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3VudEZvcm1JbnN0YW5jZShcbiAgZWxlbWVudDogSFRNTEZvcm1FbGVtZW50LFxuICBocmVmOiBzdHJpbmcsXG4gIHJvdXRlcjogQXBwUm91dGVySW5zdGFuY2UsXG4gIGZldGNoU3RyYXRlZ3k6IFByZWZldGNoVGFza0ZldGNoU3RyYXRlZ3lcbik6IHZvaWQge1xuICBjb25zdCBwcmVmZXRjaFVSTCA9IGNvZXJjZVByZWZldGNoYWJsZVVybChocmVmKVxuICBpZiAocHJlZmV0Y2hVUkwgPT09IG51bGwpIHtcbiAgICAvLyBUaGlzIGhyZWYgaXMgbm90IHByZWZldGNoYWJsZSwgc28gd2UgZG9uJ3QgdHJhY2sgaXQuXG4gICAgLy8gVE9ETzogV2UgY3VycmVudGx5IG9ic2VydmUvdW5vYnNlcnZlIGEgZm9ybSBldmVyeSB0aW1lIGl0cyBocmVmIGNoYW5nZXMuXG4gICAgLy8gRm9yIExpbmtzLCB0aGlzIGlzbid0IGEgYmlnIGRlYWwgYmVjYXVzZSB0aGUgaHJlZiBkb2Vzbid0IHVzdWFsbHkgY2hhbmdlLFxuICAgIC8vIGJ1dCBmb3IgZm9ybXMgaXQncyBleHRyZW1lbHkgY29tbW9uLiBXZSBzaG91bGQgb3B0aW1pemUgdGhpcy5cbiAgICByZXR1cm5cbiAgfVxuICBjb25zdCBpbnN0YW5jZTogRm9ybUluc3RhbmNlID0ge1xuICAgIHJvdXRlcixcbiAgICBmZXRjaFN0cmF0ZWd5LFxuICAgIGlzVmlzaWJsZTogZmFsc2UsXG4gICAgcHJlZmV0Y2hUYXNrOiBudWxsLFxuICAgIHByZWZldGNoSHJlZjogcHJlZmV0Y2hVUkwuaHJlZixcbiAgICBzZXRPcHRpbWlzdGljTGlua1N0YXR1czogbnVsbCxcbiAgfVxuICBvYnNlcnZlVmlzaWJpbGl0eShlbGVtZW50LCBpbnN0YW5jZSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVubW91bnRQcmVmZXRjaGFibGVJbnN0YW5jZShlbGVtZW50OiBFbGVtZW50KSB7XG4gIGNvbnN0IGluc3RhbmNlID0gcHJlZmV0Y2hhYmxlLmdldChlbGVtZW50KVxuICBpZiAoaW5zdGFuY2UgIT09IHVuZGVmaW5lZCkge1xuICAgIHByZWZldGNoYWJsZS5kZWxldGUoZWxlbWVudClcbiAgICBwcmVmZXRjaGFibGVBbmRWaXNpYmxlLmRlbGV0ZShpbnN0YW5jZSlcbiAgICBjb25zdCBwcmVmZXRjaFRhc2sgPSBpbnN0YW5jZS5wcmVmZXRjaFRhc2tcbiAgICBpZiAocHJlZmV0Y2hUYXNrICE9PSBudWxsKSB7XG4gICAgICBjYW5jZWxQcmVmZXRjaFRhc2socHJlZmV0Y2hUYXNrKVxuICAgIH1cbiAgfVxuICBpZiAob2JzZXJ2ZXIgIT09IG51bGwpIHtcbiAgICBvYnNlcnZlci51bm9ic2VydmUoZWxlbWVudClcbiAgfVxufVxuXG5mdW5jdGlvbiBoYW5kbGVJbnRlcnNlY3QoZW50cmllczogQXJyYXk8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeT4pIHtcbiAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgLy8gU29tZSBleHRyZW1lbHkgb2xkIGJyb3dzZXJzIG9yIHBvbHlmaWxscyBkb24ndCByZWxpYWJseSBzdXBwb3J0XG4gICAgLy8gaXNJbnRlcnNlY3Rpbmcgc28gd2UgY2hlY2sgaW50ZXJzZWN0aW9uUmF0aW8gaW5zdGVhZC4gKERvIHdlIGNhcmU/IE5vdFxuICAgIC8vIHJlYWxseS4gQnV0IHdoYXRldmVyIHRoaXMgaXMgZmluZS4pXG4gICAgY29uc3QgaXNWaXNpYmxlID0gZW50cnkuaW50ZXJzZWN0aW9uUmF0aW8gPiAwXG4gICAgb25MaW5rVmlzaWJpbGl0eUNoYW5nZWQoZW50cnkudGFyZ2V0IGFzIEhUTUxBbmNob3JFbGVtZW50LCBpc1Zpc2libGUpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9uTGlua1Zpc2liaWxpdHlDaGFuZ2VkKGVsZW1lbnQ6IEVsZW1lbnQsIGlzVmlzaWJsZTogYm9vbGVhbikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIFByZWZldGNoaW5nIG9uIHZpZXdwb3J0IGlzIGRpc2FibGVkIGluIGRldmVsb3BtZW50IGZvciBwZXJmb3JtYW5jZVxuICAgIC8vIHJlYXNvbnMsIGJlY2F1c2UgaXQgcmVxdWlyZXMgY29tcGlsaW5nIHRoZSB0YXJnZXQgcGFnZS5cbiAgICAvLyBUT0RPOiBJbnZlc3RpZ2F0ZSByZS1lbmFibGluZyB0aGlzLlxuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgaW5zdGFuY2UgPSBwcmVmZXRjaGFibGUuZ2V0KGVsZW1lbnQpXG4gIGlmIChpbnN0YW5jZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpbnN0YW5jZS5pc1Zpc2libGUgPSBpc1Zpc2libGVcbiAgaWYgKGlzVmlzaWJsZSkge1xuICAgIHByZWZldGNoYWJsZUFuZFZpc2libGUuYWRkKGluc3RhbmNlKVxuICB9IGVsc2Uge1xuICAgIHByZWZldGNoYWJsZUFuZFZpc2libGUuZGVsZXRlKGluc3RhbmNlKVxuICB9XG4gIHJlc2NoZWR1bGVMaW5rUHJlZmV0Y2goaW5zdGFuY2UsIFByZWZldGNoUHJpb3JpdHkuRGVmYXVsdClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9uTmF2aWdhdGlvbkludGVudChcbiAgZWxlbWVudDogSFRNTEFuY2hvckVsZW1lbnQgfCBTVkdBRWxlbWVudCxcbiAgdW5zdGFibGVfdXBncmFkZVRvRHluYW1pY1ByZWZldGNoOiBib29sZWFuXG4pIHtcbiAgY29uc3QgaW5zdGFuY2UgPSBwcmVmZXRjaGFibGUuZ2V0KGVsZW1lbnQpXG4gIGlmIChpbnN0YW5jZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgLy8gUHJlZmV0Y2ggdGhlIGxpbmsgb24gaG92ZXIvdG91Y2hzdGFydC5cbiAgaWYgKGluc3RhbmNlICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoXG4gICAgICBwcm9jZXNzLmVudi5fX05FWFRfRFlOQU1JQ19PTl9IT1ZFUiAmJlxuICAgICAgdW5zdGFibGVfdXBncmFkZVRvRHluYW1pY1ByZWZldGNoXG4gICAgKSB7XG4gICAgICAvLyBTd2l0Y2ggdG8gYSBmdWxsIHByZWZldGNoXG4gICAgICBpbnN0YW5jZS5mZXRjaFN0cmF0ZWd5ID0gRmV0Y2hTdHJhdGVneS5GdWxsXG4gICAgfVxuICAgIHJlc2NoZWR1bGVMaW5rUHJlZmV0Y2goaW5zdGFuY2UsIFByZWZldGNoUHJpb3JpdHkuSW50ZW50KVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlc2NoZWR1bGVMaW5rUHJlZmV0Y2goXG4gIGluc3RhbmNlOiBQcmVmZXRjaGFibGVJbnN0YW5jZSxcbiAgcHJpb3JpdHk6IFByZWZldGNoUHJpb3JpdHkuRGVmYXVsdCB8IFByZWZldGNoUHJpb3JpdHkuSW50ZW50XG4pIHtcbiAgLy8gRW5zdXJlcyB0aGF0IGFwcC1yb3V0ZXItaW5zdGFuY2UgaXMgbm90IGNvbXBpbGVkIGluIHRoZSBzZXJ2ZXIgYnVuZGxlXG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgIGNvbnN0IGV4aXN0aW5nUHJlZmV0Y2hUYXNrID0gaW5zdGFuY2UucHJlZmV0Y2hUYXNrXG5cbiAgICBpZiAoIWluc3RhbmNlLmlzVmlzaWJsZSkge1xuICAgICAgLy8gQ2FuY2VsIGFueSBpbi1wcm9ncmVzcyBwcmVmZXRjaCB0YXNrLiAoSWYgaXQgYWxyZWFkeSBmaW5pc2hlZCB0aGVuIHRoaXNcbiAgICAgIC8vIGlzIGEgbm8tb3AuKVxuICAgICAgaWYgKGV4aXN0aW5nUHJlZmV0Y2hUYXNrICE9PSBudWxsKSB7XG4gICAgICAgIGNhbmNlbFByZWZldGNoVGFzayhleGlzdGluZ1ByZWZldGNoVGFzaylcbiAgICAgIH1cbiAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gcmVzZXQgdGhlIHByZWZldGNoVGFzayB0byBudWxsIHVwb24gY2FuY2VsbGF0aW9uOyBhblxuICAgICAgLy8gb2xkIHRhc2sgb2JqZWN0IGNhbiBiZSByZXNjaGVkdWxlZCB3aXRoIHJlc2NoZWR1bGVQcmVmZXRjaFRhc2suIFRoaXMgaXMgYVxuICAgICAgLy8gbWljcm8tb3B0aW1pemF0aW9uIGJ1dCBhbHNvIG1ha2VzIHRoZSBjb2RlIHNpbXBsZXIgKGRvbid0IG5lZWQgdG9cbiAgICAgIC8vIHdvcnJ5IGFib3V0IHdoZXRoZXIgYW4gb2xkIHRhc2sgb2JqZWN0IGlzIHN0YWxlKS5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHsgZ2V0Q3VycmVudEFwcFJvdXRlclN0YXRlIH0gPVxuICAgICAgcmVxdWlyZSgnLi9hcHAtcm91dGVyLWluc3RhbmNlJykgYXMgdHlwZW9mIGltcG9ydCgnLi9hcHAtcm91dGVyLWluc3RhbmNlJylcblxuICAgIGNvbnN0IGFwcFJvdXRlclN0YXRlID0gZ2V0Q3VycmVudEFwcFJvdXRlclN0YXRlKClcbiAgICBpZiAoYXBwUm91dGVyU3RhdGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHRyZWVBdFRpbWVPZlByZWZldGNoID0gYXBwUm91dGVyU3RhdGUudHJlZVxuICAgICAgaWYgKGV4aXN0aW5nUHJlZmV0Y2hUYXNrID09PSBudWxsKSB7XG4gICAgICAgIC8vIEluaXRpYXRlIGEgcHJlZmV0Y2ggdGFzay5cbiAgICAgICAgY29uc3QgbmV4dFVybCA9IGFwcFJvdXRlclN0YXRlLm5leHRVcmxcbiAgICAgICAgY29uc3QgY2FjaGVLZXkgPSBjcmVhdGVDYWNoZUtleShpbnN0YW5jZS5wcmVmZXRjaEhyZWYsIG5leHRVcmwpXG4gICAgICAgIGluc3RhbmNlLnByZWZldGNoVGFzayA9IHNjaGVkdWxlU2VnbWVudFByZWZldGNoVGFzayhcbiAgICAgICAgICBjYWNoZUtleSxcbiAgICAgICAgICB0cmVlQXRUaW1lT2ZQcmVmZXRjaCxcbiAgICAgICAgICBpbnN0YW5jZS5mZXRjaFN0cmF0ZWd5LFxuICAgICAgICAgIHByaW9yaXR5LFxuICAgICAgICAgIG51bGxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gV2UgYWxyZWFkeSBoYXZlIGFuIG9sZCB0YXNrIG9iamVjdCB0aGF0IHdlIGNhbiByZXNjaGVkdWxlLiBUaGlzIGlzXG4gICAgICAgIC8vIGVmZmVjdGl2ZWx5IHRoZSBzYW1lIGFzIGNhbmNlbGluZyB0aGUgb2xkIHRhc2sgYW5kIGNyZWF0aW5nIGEgbmV3IG9uZS5cbiAgICAgICAgcmVzY2hlZHVsZVByZWZldGNoVGFzayhcbiAgICAgICAgICBleGlzdGluZ1ByZWZldGNoVGFzayxcbiAgICAgICAgICB0cmVlQXRUaW1lT2ZQcmVmZXRjaCxcbiAgICAgICAgICBpbnN0YW5jZS5mZXRjaFN0cmF0ZWd5LFxuICAgICAgICAgIHByaW9yaXR5XG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBpbmdWaXNpYmxlTGlua3MoXG4gIG5leHRVcmw6IHN0cmluZyB8IG51bGwsXG4gIHRyZWU6IEZsaWdodFJvdXRlclN0YXRlXG4pIHtcbiAgLy8gRm9yIGVhY2ggY3VycmVudGx5IHZpc2libGUgbGluaywgY2FuY2VsIHRoZSBleGlzdGluZyBwcmVmZXRjaCB0YXNrIChpZiBpdFxuICAvLyBleGlzdHMpIGFuZCBzY2hlZHVsZSBhIG5ldyBvbmUuIFRoaXMgaXMgZWZmZWN0aXZlbHkgdGhlIHNhbWUgYXMgaWYgYWxsIHRoZVxuICAvLyB2aXNpYmxlIGxpbmtzIGxlZnQgYW5kIHRoZW4gcmUtZW50ZXJlZCB0aGUgdmlld3BvcnQuXG4gIC8vXG4gIC8vIFRoaXMgaXMgY2FsbGVkIHdoZW4gdGhlIE5leHQtVXJsIG9yIHRoZSBiYXNlIHRyZWUgY2hhbmdlcywgc2luY2UgdGhvc2VcbiAgLy8gbWF5IGFmZmVjdCB0aGUgcmVzdWx0IG9mIGEgcHJlZmV0Y2ggdGFzay4gSXQncyBhbHNvIGNhbGxlZCBhZnRlciBhXG4gIC8vIGNhY2hlIGludmFsaWRhdGlvbi5cbiAgZm9yIChjb25zdCBpbnN0YW5jZSBvZiBwcmVmZXRjaGFibGVBbmRWaXNpYmxlKSB7XG4gICAgY29uc3QgdGFzayA9IGluc3RhbmNlLnByZWZldGNoVGFza1xuICAgIGlmICh0YXNrICE9PSBudWxsICYmICFpc1ByZWZldGNoVGFza0RpcnR5KHRhc2ssIG5leHRVcmwsIHRyZWUpKSB7XG4gICAgICAvLyBUaGUgY2FjaGUgaGFzIG5vdCBiZWVuIGludmFsaWRhdGVkLCBhbmQgbm9uZSBvZiB0aGUgaW5wdXRzIGhhdmVcbiAgICAgIC8vIGNoYW5nZWQuIEJhaWwgb3V0LlxuICAgICAgY29udGludWVcbiAgICB9XG4gICAgLy8gU29tZXRoaW5nIGNoYW5nZWQuIENhbmNlbCB0aGUgZXhpc3RpbmcgcHJlZmV0Y2ggdGFzayBhbmQgc2NoZWR1bGUgYVxuICAgIC8vIG5ldyBvbmUuXG4gICAgaWYgKHRhc2sgIT09IG51bGwpIHtcbiAgICAgIGNhbmNlbFByZWZldGNoVGFzayh0YXNrKVxuICAgIH1cbiAgICBjb25zdCBjYWNoZUtleSA9IGNyZWF0ZUNhY2hlS2V5KGluc3RhbmNlLnByZWZldGNoSHJlZiwgbmV4dFVybClcbiAgICBpbnN0YW5jZS5wcmVmZXRjaFRhc2sgPSBzY2hlZHVsZVNlZ21lbnRQcmVmZXRjaFRhc2soXG4gICAgICBjYWNoZUtleSxcbiAgICAgIHRyZWUsXG4gICAgICBpbnN0YW5jZS5mZXRjaFN0cmF0ZWd5LFxuICAgICAgUHJlZmV0Y2hQcmlvcml0eS5EZWZhdWx0LFxuICAgICAgbnVsbFxuICAgIClcbiAgfVxufVxuIl0sIm5hbWVzIjpbIklETEVfTElOS19TVEFUVVMiLCJQRU5ESU5HX0xJTktfU1RBVFVTIiwiZ2V0TGlua0ZvckN1cnJlbnROYXZpZ2F0aW9uIiwibW91bnRGb3JtSW5zdGFuY2UiLCJtb3VudExpbmtJbnN0YW5jZSIsIm9uTGlua1Zpc2liaWxpdHlDaGFuZ2VkIiwib25OYXZpZ2F0aW9uSW50ZW50IiwicGluZ1Zpc2libGVMaW5rcyIsInNldExpbmtGb3JDdXJyZW50TmF2aWdhdGlvbiIsInVubW91bnRMaW5rRm9yQ3VycmVudE5hdmlnYXRpb24iLCJ1bm1vdW50UHJlZmV0Y2hhYmxlSW5zdGFuY2UiLCJsaW5rRm9yTW9zdFJlY2VudE5hdmlnYXRpb24iLCJwZW5kaW5nIiwibGluayIsInN0YXJ0VHJhbnNpdGlvbiIsInNldE9wdGltaXN0aWNMaW5rU3RhdHVzIiwicHJlZmV0Y2hhYmxlIiwiV2Vha01hcCIsIk1hcCIsInByZWZldGNoYWJsZUFuZFZpc2libGUiLCJTZXQiLCJvYnNlcnZlciIsIkludGVyc2VjdGlvbk9ic2VydmVyIiwiaGFuZGxlSW50ZXJzZWN0Iiwicm9vdE1hcmdpbiIsIm9ic2VydmVWaXNpYmlsaXR5IiwiZWxlbWVudCIsImluc3RhbmNlIiwiZXhpc3RpbmdJbnN0YW5jZSIsImdldCIsInVuZGVmaW5lZCIsInNldCIsIm9ic2VydmUiLCJjb2VyY2VQcmVmZXRjaGFibGVVcmwiLCJocmVmIiwid2luZG93IiwiY3JlYXRlUHJlZmV0Y2hVUkwiLCJyZXF1aXJlIiwicmVwb3J0RXJyb3JGbiIsInJlcG9ydEVycm9yIiwiY29uc29sZSIsImVycm9yIiwicm91dGVyIiwiZmV0Y2hTdHJhdGVneSIsInByZWZldGNoRW5hYmxlZCIsInByZWZldGNoVVJMIiwiaXNWaXNpYmxlIiwicHJlZmV0Y2hUYXNrIiwicHJlZmV0Y2hIcmVmIiwiZGVsZXRlIiwiY2FuY2VsUHJlZmV0Y2hUYXNrIiwidW5vYnNlcnZlIiwiZW50cmllcyIsImVudHJ5IiwiaW50ZXJzZWN0aW9uUmF0aW8iLCJ0YXJnZXQiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJhZGQiLCJyZXNjaGVkdWxlTGlua1ByZWZldGNoIiwiUHJlZmV0Y2hQcmlvcml0eSIsIkRlZmF1bHQiLCJ1bnN0YWJsZV91cGdyYWRlVG9EeW5hbWljUHJlZmV0Y2giLCJfX05FWFRfRFlOQU1JQ19PTl9IT1ZFUiIsIkZldGNoU3RyYXRlZ3kiLCJGdWxsIiwiSW50ZW50IiwicHJpb3JpdHkiLCJleGlzdGluZ1ByZWZldGNoVGFzayIsImdldEN1cnJlbnRBcHBSb3V0ZXJTdGF0ZSIsImFwcFJvdXRlclN0YXRlIiwidHJlZUF0VGltZU9mUHJlZmV0Y2giLCJ0cmVlIiwibmV4dFVybCIsImNhY2hlS2V5IiwiY3JlYXRlQ2FjaGVLZXkiLCJzY2hlZHVsZVNlZ21lbnRQcmVmZXRjaFRhc2siLCJyZXNjaGVkdWxlUHJlZmV0Y2hUYXNrIiwidGFzayIsImlzUHJlZmV0Y2hUYXNrRGlydHkiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/links.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/match-segments.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/match-segments.js ***!
|
||
\********************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"matchSegment\", ({\n enumerable: true,\n get: function() {\n return matchSegment;\n }\n}));\nconst matchSegment = (existingSegment, segment)=>{\n // segment is either Array or string\n if (typeof existingSegment === 'string') {\n if (typeof segment === 'string') {\n // Common case: segment is just a string\n return existingSegment === segment;\n }\n return false;\n }\n if (typeof segment === 'string') {\n return false;\n }\n return existingSegment[0] === segment[0] && existingSegment[1] === segment[1];\n};\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=match-segments.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL21hdGNoLXNlZ21lbnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Z0RBRWFBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLGVBQWUsQ0FDMUJDLGlCQUNBQztJQUVBLG9DQUFvQztJQUNwQyxJQUFJLE9BQU9ELG9CQUFvQixVQUFVO1FBQ3ZDLElBQUksT0FBT0MsWUFBWSxVQUFVO1lBQy9CLHdDQUF3QztZQUN4QyxPQUFPRCxvQkFBb0JDO1FBQzdCO1FBQ0EsT0FBTztJQUNUO0lBRUEsSUFBSSxPQUFPQSxZQUFZLFVBQVU7UUFDL0IsT0FBTztJQUNUO0lBQ0EsT0FBT0QsZUFBZSxDQUFDLEVBQUUsS0FBS0MsT0FBTyxDQUFDLEVBQUUsSUFBSUQsZUFBZSxDQUFDLEVBQUUsS0FBS0MsT0FBTyxDQUFDLEVBQUU7QUFDL0UiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9zcmMvY2xpZW50L2NvbXBvbmVudHMvbWF0Y2gtc2VnbWVudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTZWdtZW50IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLXR5cGVzJ1xuXG5leHBvcnQgY29uc3QgbWF0Y2hTZWdtZW50ID0gKFxuICBleGlzdGluZ1NlZ21lbnQ6IFNlZ21lbnQsXG4gIHNlZ21lbnQ6IFNlZ21lbnRcbik6IGJvb2xlYW4gPT4ge1xuICAvLyBzZWdtZW50IGlzIGVpdGhlciBBcnJheSBvciBzdHJpbmdcbiAgaWYgKHR5cGVvZiBleGlzdGluZ1NlZ21lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKHR5cGVvZiBzZWdtZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgLy8gQ29tbW9uIGNhc2U6IHNlZ21lbnQgaXMganVzdCBhIHN0cmluZ1xuICAgICAgcmV0dXJuIGV4aXN0aW5nU2VnbWVudCA9PT0gc2VnbWVudFxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmICh0eXBlb2Ygc2VnbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICByZXR1cm4gZXhpc3RpbmdTZWdtZW50WzBdID09PSBzZWdtZW50WzBdICYmIGV4aXN0aW5nU2VnbWVudFsxXSA9PT0gc2VnbWVudFsxXVxufVxuIl0sIm5hbWVzIjpbIm1hdGNoU2VnbWVudCIsImV4aXN0aW5nU2VnbWVudCIsInNlZ21lbnQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/match-segments.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/nav-failure-handler.js":
|
||
/*!*************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/nav-failure-handler.js ***!
|
||
\*************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n handleHardNavError: function() {\n return handleHardNavError;\n },\n useNavFailureHandler: function() {\n return useNavFailureHandler;\n }\n});\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nconst _createhreffromurl = __webpack_require__(/*! ./router-reducer/create-href-from-url */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nfunction handleHardNavError(error) {\n if (error && \"undefined\" !== 'undefined' && 0 && 0) {}\n return false;\n}\nfunction useNavFailureHandler() {\n if (false) {}\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=nav-failure-handler.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25hdi1mYWlsdXJlLWhhbmRsZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBR2dCQSxrQkFBa0I7ZUFBbEJBOztJQWtCQUMsb0JBQW9CO2VBQXBCQTs7O21DQXJCVTsrQ0FDUTtBQUUzQixTQUFTRCxtQkFBbUJFLEtBQWM7SUFDL0MsSUFDRUEsU0FDQSxPQUFPQyxTQUFXLGVBQ2xCQSxDQUF3QixJQUN4QkcsQ0FDNkMsRUFDN0MsRUFPRDtJQUNELE9BQU87QUFDVDtBQUVPLFNBQVNMO0lBQ2QsSUFBSVcsS0FBd0MsRUFBRSxFQXVCN0M7QUFDSCIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9jbGllbnQvY29tcG9uZW50cy9uYXYtZmFpbHVyZS1oYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlSHJlZkZyb21VcmwgfSBmcm9tICcuL3JvdXRlci1yZWR1Y2VyL2NyZWF0ZS1ocmVmLWZyb20tdXJsJ1xuXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlSGFyZE5hdkVycm9yKGVycm9yOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGlmIChcbiAgICBlcnJvciAmJlxuICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmXG4gICAgd2luZG93Lm5leHQuX19wZW5kaW5nVXJsICYmXG4gICAgY3JlYXRlSHJlZkZyb21VcmwobmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZikpICE9PVxuICAgICAgY3JlYXRlSHJlZkZyb21Vcmwod2luZG93Lm5leHQuX19wZW5kaW5nVXJsKVxuICApIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgYEVycm9yIG9jY3VycmVkIGR1cmluZyBuYXZpZ2F0aW9uLCBmYWxsaW5nIGJhY2sgdG8gaGFyZCBuYXZpZ2F0aW9uYCxcbiAgICAgIGVycm9yXG4gICAgKVxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gd2luZG93Lm5leHQuX19wZW5kaW5nVXJsLnRvU3RyaW5nKClcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlTmF2RmFpbHVyZUhhbmRsZXIoKSB7XG4gIGlmIChwcm9jZXNzLmVudi5fX05FWFRfQVBQX05BVl9GQUlMX0hBTkRMSU5HKSB7XG4gICAgLy8gdGhpcyBpZiBpcyBvbmx5IGZvciBEQ0Ugb2YgdGhlIGZlYXR1cmUgZmxhZyBub3QgY29uZGl0aW9uYWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgdW5jYXVnaHRFeGNlcHRpb25IYW5kbGVyID0gKFxuICAgICAgICBldnQ6IEVycm9yRXZlbnQgfCBQcm9taXNlUmVqZWN0aW9uRXZlbnRcbiAgICAgICkgPT4ge1xuICAgICAgICBjb25zdCBlcnJvciA9ICdyZWFzb24nIGluIGV2dCA/IGV2dC5yZWFzb24gOiBldnQuZXJyb3JcbiAgICAgICAgLy8gaWYgd2UgaGF2ZSBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uL3JlamVjdGlvbiBkdXJpbmdcbiAgICAgICAgLy8gYSBuYXZpZ2F0aW9uIHdlIGZhbGwgYmFjayB0byBhIGhhcmQgbmF2aWdhdGlvbiB0b1xuICAgICAgICAvLyBhdHRlbXB0IHJlY292ZXJpbmcgdG8gYSBnb29kIHN0YXRlXG4gICAgICAgIGhhbmRsZUhhcmROYXZFcnJvcihlcnJvcilcbiAgICAgIH1cbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd1bmhhbmRsZWRyZWplY3Rpb24nLCB1bmNhdWdodEV4Y2VwdGlvbkhhbmRsZXIpXG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmNhdWdodEV4Y2VwdGlvbkhhbmRsZXIpXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmNhdWdodEV4Y2VwdGlvbkhhbmRsZXIpXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAgICd1bmhhbmRsZWRyZWplY3Rpb24nLFxuICAgICAgICAgIHVuY2F1Z2h0RXhjZXB0aW9uSGFuZGxlclxuICAgICAgICApXG4gICAgICB9XG4gICAgfSwgW10pXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJoYW5kbGVIYXJkTmF2RXJyb3IiLCJ1c2VOYXZGYWlsdXJlSGFuZGxlciIsImVycm9yIiwid2luZG93IiwibmV4dCIsIl9fcGVuZGluZ1VybCIsImNyZWF0ZUhyZWZGcm9tVXJsIiwiVVJMIiwibG9jYXRpb24iLCJocmVmIiwiY29uc29sZSIsInRvU3RyaW5nIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9BUFBfTkFWX0ZBSUxfSEFORExJTkciLCJ1c2VFZmZlY3QiLCJ1bmNhdWdodEV4Y2VwdGlvbkhhbmRsZXIiLCJldnQiLCJyZWFzb24iLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/nav-failure-handler.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/navigation-devtools.js":
|
||
/*!*************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/navigation-devtools.js ***!
|
||
\*************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createNestedLayoutNavigationPromises: function() {\n return createNestedLayoutNavigationPromises;\n },\n createRootNavigationPromises: function() {\n return createRootNavigationPromises;\n }\n});\nconst _hooksclientcontextsharedruntime = __webpack_require__(/*! ../../shared/lib/hooks-client-context.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/hooks-client-context.js\");\nconst _segment = __webpack_require__(/*! ../../shared/lib/segment */ \"(ssr)/./node_modules/next/dist/shared/lib/segment.js\");\nconst layoutSegmentPromisesCache = new WeakMap();\n/**\n * Creates instrumented promises for layout segment hooks at a given tree level.\n * This is dev-only code for React Suspense DevTools instrumentation.\n */ function createLayoutSegmentPromises(tree) {\n if (false) {}\n // Check if we already have cached promises for this tree\n const cached = layoutSegmentPromisesCache.get(tree);\n if (cached) {\n return cached;\n }\n // Create new promises and cache them\n const segmentPromises = new Map();\n const segmentsPromises = new Map();\n const parallelRoutes = tree[1];\n for (const parallelRouteKey of Object.keys(parallelRoutes)){\n const segments = (0, _segment.getSelectedLayoutSegmentPath)(tree, parallelRouteKey);\n // Use the shared logic to compute the segment value\n const segment = (0, _segment.computeSelectedLayoutSegment)(segments, parallelRouteKey);\n segmentPromises.set(parallelRouteKey, (0, _hooksclientcontextsharedruntime.createDevToolsInstrumentedPromise)('useSelectedLayoutSegment', segment));\n segmentsPromises.set(parallelRouteKey, (0, _hooksclientcontextsharedruntime.createDevToolsInstrumentedPromise)('useSelectedLayoutSegments', segments));\n }\n const result = {\n selectedLayoutSegmentPromises: segmentPromises,\n selectedLayoutSegmentsPromises: segmentsPromises\n };\n // Cache the result for future renders\n layoutSegmentPromisesCache.set(tree, result);\n return result;\n}\nconst rootNavigationPromisesCache = new WeakMap();\nfunction createRootNavigationPromises(tree, pathname, searchParams, pathParams) {\n if (false) {}\n // Create stable cache keys from the values\n const searchParamsString = searchParams.toString();\n const pathParamsString = JSON.stringify(pathParams);\n const cacheKey = `${pathname}:${searchParamsString}:${pathParamsString}`;\n // Get or create the cache for this tree\n let treeCache = rootNavigationPromisesCache.get(tree);\n if (!treeCache) {\n treeCache = new Map();\n rootNavigationPromisesCache.set(tree, treeCache);\n }\n // Check if we have cached promises for this combination\n const cached = treeCache.get(cacheKey);\n if (cached) {\n return cached;\n }\n const readonlySearchParams = new _hooksclientcontextsharedruntime.ReadonlyURLSearchParams(searchParams);\n const layoutSegmentPromises = createLayoutSegmentPromises(tree);\n const promises = {\n pathname: (0, _hooksclientcontextsharedruntime.createDevToolsInstrumentedPromise)('usePathname', pathname),\n searchParams: (0, _hooksclientcontextsharedruntime.createDevToolsInstrumentedPromise)('useSearchParams', readonlySearchParams),\n params: (0, _hooksclientcontextsharedruntime.createDevToolsInstrumentedPromise)('useParams', pathParams),\n ...layoutSegmentPromises\n };\n treeCache.set(cacheKey, promises);\n return promises;\n}\nconst nestedLayoutPromisesCache = new WeakMap();\nfunction createNestedLayoutNavigationPromises(tree, parentNavPromises) {\n if (false) {}\n const parallelRoutes = tree[1];\n const parallelRouteKeys = Object.keys(parallelRoutes);\n // Only create promises if there are parallel routes at this level\n if (parallelRouteKeys.length === 0) {\n return null;\n }\n // Get or create the cache for this tree\n let treeCache = nestedLayoutPromisesCache.get(tree);\n if (!treeCache) {\n treeCache = new Map();\n nestedLayoutPromisesCache.set(tree, treeCache);\n }\n // Check if we have cached promises for this parent combination\n const cached = treeCache.get(parentNavPromises);\n if (cached) {\n return cached;\n }\n // Create merged promises\n const layoutSegmentPromises = createLayoutSegmentPromises(tree);\n const promises = {\n ...parentNavPromises,\n ...layoutSegmentPromises\n };\n treeCache.set(parentNavPromises, promises);\n return promises;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=navigation-devtools.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25hdmlnYXRpb24tZGV2dG9vbHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBMklnQkEsb0NBQW9DO2VBQXBDQTs7SUF4REFDLDRCQUE0QjtlQUE1QkE7Ozs2REE1RVQ7cUNBSUE7QUFVUCxNQUFNQyw2QkFBNkIsSUFBSUM7QUFLdkM7OztDQUdDLEdBQ0QsU0FBU0MsNEJBQ1BDLElBQXVCO0lBRXZCLElBQUlDLEtBQW9CLEVBQW1CLEVBRTFDO0lBRUQseURBQXlEO0lBQ3pELE1BQU1HLFNBQVNQLDJCQUEyQlEsR0FBRyxDQUFDTDtJQUM5QyxJQUFJSSxRQUFRO1FBQ1YsT0FBT0E7SUFDVDtJQUVBLHFDQUFxQztJQUNyQyxNQUFNRSxrQkFBa0IsSUFBSUM7SUFDNUIsTUFBTUMsbUJBQW1CLElBQUlEO0lBRTdCLE1BQU1FLGlCQUFpQlQsSUFBSSxDQUFDLEVBQUU7SUFDOUIsS0FBSyxNQUFNVSxvQkFBb0JDLE9BQU9DLElBQUksQ0FBQ0gsZ0JBQWlCO1FBQzFELE1BQU1JLFdBQVdDLENBQUFBLEdBQUFBLFNBQUFBLDRCQUFBQSxFQUE2QmQsTUFBTVU7UUFFcEQsb0RBQW9EO1FBQ3BELE1BQU1LLFVBQVVDLENBQUFBLEdBQUFBLFNBQUFBLDRCQUFBQSxFQUE2QkgsVUFBVUg7UUFFdkRKLGdCQUFnQlcsR0FBRyxDQUNqQlAsa0JBQ0FRLENBQUFBLEdBQUFBLGlDQUFBQSxpQ0FBQUEsRUFBa0MsNEJBQTRCSDtRQUVoRVAsaUJBQWlCUyxHQUFHLENBQ2xCUCxrQkFDQVEsQ0FBQUEsR0FBQUEsaUNBQUFBLGlDQUFBQSxFQUFrQyw2QkFBNkJMO0lBRW5FO0lBRUEsTUFBTU0sU0FBcUM7UUFDekNDLCtCQUErQmQ7UUFDL0JlLGdDQUFnQ2I7SUFDbEM7SUFFQSxzQ0FBc0M7SUFDdENYLDJCQUEyQm9CLEdBQUcsQ0FBQ2pCLE1BQU1tQjtJQUVyQyxPQUFPQTtBQUNUO0FBRUEsTUFBTUcsOEJBQThCLElBQUl4QjtBQVFqQyxTQUFTRiw2QkFDZEksSUFBdUIsRUFDdkJ1QixRQUFnQixFQUNoQkMsWUFBNkIsRUFDN0JDLFVBQWtCO0lBRWxCLElBQUl4QixLQUFvQixFQUFtQixFQUUxQztJQUVELDJDQUEyQztJQUMzQyxNQUFNeUIscUJBQXFCRixhQUFhRyxRQUFRO0lBQ2hELE1BQU1DLG1CQUFtQkMsS0FBS0MsU0FBUyxDQUFDTDtJQUN4QyxNQUFNTSxXQUFXLEdBQUdSLFNBQVMsQ0FBQyxFQUFFRyxtQkFBbUIsQ0FBQyxFQUFFRSxrQkFBa0I7SUFFeEUsd0NBQXdDO0lBQ3hDLElBQUlJLFlBQVlWLDRCQUE0QmpCLEdBQUcsQ0FBQ0w7SUFDaEQsSUFBSSxDQUFDZ0MsV0FBVztRQUNkQSxZQUFZLElBQUl6QjtRQUNoQmUsNEJBQTRCTCxHQUFHLENBQUNqQixNQUFNZ0M7SUFDeEM7SUFFQSx3REFBd0Q7SUFDeEQsTUFBTTVCLFNBQVM0QixVQUFVM0IsR0FBRyxDQUFDMEI7SUFDN0IsSUFBSTNCLFFBQVE7UUFDVixPQUFPQTtJQUNUO0lBRUEsTUFBTTZCLHVCQUF1QixJQUFJQyxpQ0FBQUEsdUJBQXVCLENBQUNWO0lBRXpELE1BQU1XLHdCQUF3QnBDLDRCQUE0QkM7SUFFMUQsTUFBTW9DLFdBQStCO1FBQ25DYixVQUFVTCxDQUFBQSxHQUFBQSxpQ0FBQUEsaUNBQUFBLEVBQWtDLGVBQWVLO1FBQzNEQyxjQUFjTixDQUFBQSxHQUFBQSxpQ0FBQUEsaUNBQUFBLEVBQ1osbUJBQ0FlO1FBRUZJLFFBQVFuQixDQUFBQSxHQUFBQSxpQ0FBQUEsaUNBQUFBLEVBQWtDLGFBQWFPO1FBQ3ZELEdBQUdVLHFCQUFxQjtJQUMxQjtJQUVBSCxVQUFVZixHQUFHLENBQUNjLFVBQVVLO0lBRXhCLE9BQU9BO0FBQ1Q7QUFFQSxNQUFNRSw0QkFBNEIsSUFBSXhDO0FBUy9CLFNBQVNILHFDQUNkSyxJQUF1QixFQUN2QnVDLGlCQUE0QztJQUU1QyxJQUFJdEMsS0FBb0IsRUFBbUIsRUFFMUM7SUFFRCxNQUFNUSxpQkFBaUJULElBQUksQ0FBQyxFQUFFO0lBQzlCLE1BQU13QyxvQkFBb0I3QixPQUFPQyxJQUFJLENBQUNIO0lBRXRDLGtFQUFrRTtJQUNsRSxJQUFJK0Isa0JBQWtCQyxNQUFNLEtBQUssR0FBRztRQUNsQyxPQUFPO0lBQ1Q7SUFFQSx3Q0FBd0M7SUFDeEMsSUFBSVQsWUFBWU0sMEJBQTBCakMsR0FBRyxDQUFDTDtJQUM5QyxJQUFJLENBQUNnQyxXQUFXO1FBQ2RBLFlBQVksSUFBSXpCO1FBQ2hCK0IsMEJBQTBCckIsR0FBRyxDQUFDakIsTUFBTWdDO0lBQ3RDO0lBRUEsK0RBQStEO0lBQy9ELE1BQU01QixTQUFTNEIsVUFBVTNCLEdBQUcsQ0FBQ2tDO0lBQzdCLElBQUluQyxRQUFRO1FBQ1YsT0FBT0E7SUFDVDtJQUVBLHlCQUF5QjtJQUN6QixNQUFNK0Isd0JBQXdCcEMsNEJBQTRCQztJQUMxRCxNQUFNb0MsV0FBK0I7UUFDbkMsR0FBR0csaUJBQWlCO1FBQ3BCLEdBQUdKLHFCQUFxQjtJQUMxQjtJQUVBSCxVQUFVZixHQUFHLENBQUNzQixtQkFBbUJIO0lBRWpDLE9BQU9BO0FBQ1QiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9zcmMvY2xpZW50L2NvbXBvbmVudHMvbmF2aWdhdGlvbi1kZXZ0b29scy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZsaWdodFJvdXRlclN0YXRlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLXR5cGVzJ1xuaW1wb3J0IHR5cGUgeyBQYXJhbXMgfSBmcm9tICcuLi8uLi9zZXJ2ZXIvcmVxdWVzdC9wYXJhbXMnXG5pbXBvcnQge1xuICBjcmVhdGVEZXZUb29sc0luc3RydW1lbnRlZFByb21pc2UsXG4gIFJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zLFxuICB0eXBlIEluc3RydW1lbnRlZFByb21pc2UsXG4gIHR5cGUgTmF2aWdhdGlvblByb21pc2VzLFxufSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL2hvb2tzLWNsaWVudC1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHtcbiAgY29tcHV0ZVNlbGVjdGVkTGF5b3V0U2VnbWVudCxcbiAgZ2V0U2VsZWN0ZWRMYXlvdXRTZWdtZW50UGF0aCxcbn0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9zZWdtZW50J1xuXG4vKipcbiAqIFByb21pc2VzIGFyZSBjYWNoZWQgYnkgdHJlZSB0byBlbnN1cmUgc3RhYmlsaXR5IGFjcm9zcyBzdXNwZW5zZSByZXRyaWVzLlxuICovXG50eXBlIExheW91dFNlZ21lbnRQcm9taXNlc0NhY2hlID0ge1xuICBzZWxlY3RlZExheW91dFNlZ21lbnRQcm9taXNlczogTWFwPHN0cmluZywgSW5zdHJ1bWVudGVkUHJvbWlzZTxzdHJpbmcgfCBudWxsPj5cbiAgc2VsZWN0ZWRMYXlvdXRTZWdtZW50c1Byb21pc2VzOiBNYXA8c3RyaW5nLCBJbnN0cnVtZW50ZWRQcm9taXNlPHN0cmluZ1tdPj5cbn1cblxuY29uc3QgbGF5b3V0U2VnbWVudFByb21pc2VzQ2FjaGUgPSBuZXcgV2Vha01hcDxcbiAgRmxpZ2h0Um91dGVyU3RhdGUsXG4gIExheW91dFNlZ21lbnRQcm9taXNlc0NhY2hlXG4+KClcblxuLyoqXG4gKiBDcmVhdGVzIGluc3RydW1lbnRlZCBwcm9taXNlcyBmb3IgbGF5b3V0IHNlZ21lbnQgaG9va3MgYXQgYSBnaXZlbiB0cmVlIGxldmVsLlxuICogVGhpcyBpcyBkZXYtb25seSBjb2RlIGZvciBSZWFjdCBTdXNwZW5zZSBEZXZUb29scyBpbnN0cnVtZW50YXRpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUxheW91dFNlZ21lbnRQcm9taXNlcyhcbiAgdHJlZTogRmxpZ2h0Um91dGVyU3RhdGVcbik6IExheW91dFNlZ21lbnRQcm9taXNlc0NhY2hlIHwgbnVsbCB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHdlIGFscmVhZHkgaGF2ZSBjYWNoZWQgcHJvbWlzZXMgZm9yIHRoaXMgdHJlZVxuICBjb25zdCBjYWNoZWQgPSBsYXlvdXRTZWdtZW50UHJvbWlzZXNDYWNoZS5nZXQodHJlZSlcbiAgaWYgKGNhY2hlZCkge1xuICAgIHJldHVybiBjYWNoZWRcbiAgfVxuXG4gIC8vIENyZWF0ZSBuZXcgcHJvbWlzZXMgYW5kIGNhY2hlIHRoZW1cbiAgY29uc3Qgc2VnbWVudFByb21pc2VzID0gbmV3IE1hcDxzdHJpbmcsIEluc3RydW1lbnRlZFByb21pc2U8c3RyaW5nIHwgbnVsbD4+KClcbiAgY29uc3Qgc2VnbWVudHNQcm9taXNlcyA9IG5ldyBNYXA8c3RyaW5nLCBJbnN0cnVtZW50ZWRQcm9taXNlPHN0cmluZ1tdPj4oKVxuXG4gIGNvbnN0IHBhcmFsbGVsUm91dGVzID0gdHJlZVsxXVxuICBmb3IgKGNvbnN0IHBhcmFsbGVsUm91dGVLZXkgb2YgT2JqZWN0LmtleXMocGFyYWxsZWxSb3V0ZXMpKSB7XG4gICAgY29uc3Qgc2VnbWVudHMgPSBnZXRTZWxlY3RlZExheW91dFNlZ21lbnRQYXRoKHRyZWUsIHBhcmFsbGVsUm91dGVLZXkpXG5cbiAgICAvLyBVc2UgdGhlIHNoYXJlZCBsb2dpYyB0byBjb21wdXRlIHRoZSBzZWdtZW50IHZhbHVlXG4gICAgY29uc3Qgc2VnbWVudCA9IGNvbXB1dGVTZWxlY3RlZExheW91dFNlZ21lbnQoc2VnbWVudHMsIHBhcmFsbGVsUm91dGVLZXkpXG5cbiAgICBzZWdtZW50UHJvbWlzZXMuc2V0KFxuICAgICAgcGFyYWxsZWxSb3V0ZUtleSxcbiAgICAgIGNyZWF0ZURldlRvb2xzSW5zdHJ1bWVudGVkUHJvbWlzZSgndXNlU2VsZWN0ZWRMYXlvdXRTZWdtZW50Jywgc2VnbWVudClcbiAgICApXG4gICAgc2VnbWVudHNQcm9taXNlcy5zZXQoXG4gICAgICBwYXJhbGxlbFJvdXRlS2V5LFxuICAgICAgY3JlYXRlRGV2VG9vbHNJbnN0cnVtZW50ZWRQcm9taXNlKCd1c2VTZWxlY3RlZExheW91dFNlZ21lbnRzJywgc2VnbWVudHMpXG4gICAgKVxuICB9XG5cbiAgY29uc3QgcmVzdWx0OiBMYXlvdXRTZWdtZW50UHJvbWlzZXNDYWNoZSA9IHtcbiAgICBzZWxlY3RlZExheW91dFNlZ21lbnRQcm9taXNlczogc2VnbWVudFByb21pc2VzLFxuICAgIHNlbGVjdGVkTGF5b3V0U2VnbWVudHNQcm9taXNlczogc2VnbWVudHNQcm9taXNlcyxcbiAgfVxuXG4gIC8vIENhY2hlIHRoZSByZXN1bHQgZm9yIGZ1dHVyZSByZW5kZXJzXG4gIGxheW91dFNlZ21lbnRQcm9taXNlc0NhY2hlLnNldCh0cmVlLCByZXN1bHQpXG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5jb25zdCByb290TmF2aWdhdGlvblByb21pc2VzQ2FjaGUgPSBuZXcgV2Vha01hcDxcbiAgRmxpZ2h0Um91dGVyU3RhdGUsXG4gIE1hcDxzdHJpbmcsIE5hdmlnYXRpb25Qcm9taXNlcz5cbj4oKVxuXG4vKipcbiAqIENyZWF0ZXMgaW5zdHJ1bWVudGVkIG5hdmlnYXRpb24gcHJvbWlzZXMgZm9yIHRoZSByb290IGFwcC1yb3V0ZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSb290TmF2aWdhdGlvblByb21pc2VzKFxuICB0cmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgcGF0aG5hbWU6IHN0cmluZyxcbiAgc2VhcmNoUGFyYW1zOiBVUkxTZWFyY2hQYXJhbXMsXG4gIHBhdGhQYXJhbXM6IFBhcmFtc1xuKTogTmF2aWdhdGlvblByb21pc2VzIHwgbnVsbCB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8vIENyZWF0ZSBzdGFibGUgY2FjaGUga2V5cyBmcm9tIHRoZSB2YWx1ZXNcbiAgY29uc3Qgc2VhcmNoUGFyYW1zU3RyaW5nID0gc2VhcmNoUGFyYW1zLnRvU3RyaW5nKClcbiAgY29uc3QgcGF0aFBhcmFtc1N0cmluZyA9IEpTT04uc3RyaW5naWZ5KHBhdGhQYXJhbXMpXG4gIGNvbnN0IGNhY2hlS2V5ID0gYCR7cGF0aG5hbWV9OiR7c2VhcmNoUGFyYW1zU3RyaW5nfToke3BhdGhQYXJhbXNTdHJpbmd9YFxuXG4gIC8vIEdldCBvciBjcmVhdGUgdGhlIGNhY2hlIGZvciB0aGlzIHRyZWVcbiAgbGV0IHRyZWVDYWNoZSA9IHJvb3ROYXZpZ2F0aW9uUHJvbWlzZXNDYWNoZS5nZXQodHJlZSlcbiAgaWYgKCF0cmVlQ2FjaGUpIHtcbiAgICB0cmVlQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgTmF2aWdhdGlvblByb21pc2VzPigpXG4gICAgcm9vdE5hdmlnYXRpb25Qcm9taXNlc0NhY2hlLnNldCh0cmVlLCB0cmVlQ2FjaGUpXG4gIH1cblxuICAvLyBDaGVjayBpZiB3ZSBoYXZlIGNhY2hlZCBwcm9taXNlcyBmb3IgdGhpcyBjb21iaW5hdGlvblxuICBjb25zdCBjYWNoZWQgPSB0cmVlQ2FjaGUuZ2V0KGNhY2hlS2V5KVxuICBpZiAoY2FjaGVkKSB7XG4gICAgcmV0dXJuIGNhY2hlZFxuICB9XG5cbiAgY29uc3QgcmVhZG9ubHlTZWFyY2hQYXJhbXMgPSBuZXcgUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXMoc2VhcmNoUGFyYW1zKVxuXG4gIGNvbnN0IGxheW91dFNlZ21lbnRQcm9taXNlcyA9IGNyZWF0ZUxheW91dFNlZ21lbnRQcm9taXNlcyh0cmVlKVxuXG4gIGNvbnN0IHByb21pc2VzOiBOYXZpZ2F0aW9uUHJvbWlzZXMgPSB7XG4gICAgcGF0aG5hbWU6IGNyZWF0ZURldlRvb2xzSW5zdHJ1bWVudGVkUHJvbWlzZSgndXNlUGF0aG5hbWUnLCBwYXRobmFtZSksXG4gICAgc2VhcmNoUGFyYW1zOiBjcmVhdGVEZXZUb29sc0luc3RydW1lbnRlZFByb21pc2UoXG4gICAgICAndXNlU2VhcmNoUGFyYW1zJyxcbiAgICAgIHJlYWRvbmx5U2VhcmNoUGFyYW1zXG4gICAgKSxcbiAgICBwYXJhbXM6IGNyZWF0ZURldlRvb2xzSW5zdHJ1bWVudGVkUHJvbWlzZSgndXNlUGFyYW1zJywgcGF0aFBhcmFtcyksXG4gICAgLi4ubGF5b3V0U2VnbWVudFByb21pc2VzLFxuICB9XG5cbiAgdHJlZUNhY2hlLnNldChjYWNoZUtleSwgcHJvbWlzZXMpXG5cbiAgcmV0dXJuIHByb21pc2VzXG59XG5cbmNvbnN0IG5lc3RlZExheW91dFByb21pc2VzQ2FjaGUgPSBuZXcgV2Vha01hcDxcbiAgRmxpZ2h0Um91dGVyU3RhdGUsXG4gIE1hcDxOYXZpZ2F0aW9uUHJvbWlzZXMgfCBudWxsLCBOYXZpZ2F0aW9uUHJvbWlzZXM+XG4+KClcblxuLyoqXG4gKiBDcmVhdGVzIG1lcmdlZCBuYXZpZ2F0aW9uIHByb21pc2VzIGZvciBuZXN0ZWQgbGF5b3V0cy5cbiAqIE1lcmdlcyBwYXJlbnQgcHJvbWlzZXMgd2l0aCBsYXlvdXQtc3BlY2lmaWMgc2VnbWVudCBwcm9taXNlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5lc3RlZExheW91dE5hdmlnYXRpb25Qcm9taXNlcyhcbiAgdHJlZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIHBhcmVudE5hdlByb21pc2VzOiBOYXZpZ2F0aW9uUHJvbWlzZXMgfCBudWxsXG4pOiBOYXZpZ2F0aW9uUHJvbWlzZXMgfCBudWxsIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgY29uc3QgcGFyYWxsZWxSb3V0ZXMgPSB0cmVlWzFdXG4gIGNvbnN0IHBhcmFsbGVsUm91dGVLZXlzID0gT2JqZWN0LmtleXMocGFyYWxsZWxSb3V0ZXMpXG5cbiAgLy8gT25seSBjcmVhdGUgcHJvbWlzZXMgaWYgdGhlcmUgYXJlIHBhcmFsbGVsIHJvdXRlcyBhdCB0aGlzIGxldmVsXG4gIGlmIChwYXJhbGxlbFJvdXRlS2V5cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLy8gR2V0IG9yIGNyZWF0ZSB0aGUgY2FjaGUgZm9yIHRoaXMgdHJlZVxuICBsZXQgdHJlZUNhY2hlID0gbmVzdGVkTGF5b3V0UHJvbWlzZXNDYWNoZS5nZXQodHJlZSlcbiAgaWYgKCF0cmVlQ2FjaGUpIHtcbiAgICB0cmVlQ2FjaGUgPSBuZXcgTWFwPE5hdmlnYXRpb25Qcm9taXNlcyB8IG51bGwsIE5hdmlnYXRpb25Qcm9taXNlcz4oKVxuICAgIG5lc3RlZExheW91dFByb21pc2VzQ2FjaGUuc2V0KHRyZWUsIHRyZWVDYWNoZSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHdlIGhhdmUgY2FjaGVkIHByb21pc2VzIGZvciB0aGlzIHBhcmVudCBjb21iaW5hdGlvblxuICBjb25zdCBjYWNoZWQgPSB0cmVlQ2FjaGUuZ2V0KHBhcmVudE5hdlByb21pc2VzKVxuICBpZiAoY2FjaGVkKSB7XG4gICAgcmV0dXJuIGNhY2hlZFxuICB9XG5cbiAgLy8gQ3JlYXRlIG1lcmdlZCBwcm9taXNlc1xuICBjb25zdCBsYXlvdXRTZWdtZW50UHJvbWlzZXMgPSBjcmVhdGVMYXlvdXRTZWdtZW50UHJvbWlzZXModHJlZSlcbiAgY29uc3QgcHJvbWlzZXM6IE5hdmlnYXRpb25Qcm9taXNlcyA9IHtcbiAgICAuLi5wYXJlbnROYXZQcm9taXNlcyEsXG4gICAgLi4ubGF5b3V0U2VnbWVudFByb21pc2VzLFxuICB9XG5cbiAgdHJlZUNhY2hlLnNldChwYXJlbnROYXZQcm9taXNlcywgcHJvbWlzZXMpXG5cbiAgcmV0dXJuIHByb21pc2VzXG59XG4iXSwibmFtZXMiOlsiY3JlYXRlTmVzdGVkTGF5b3V0TmF2aWdhdGlvblByb21pc2VzIiwiY3JlYXRlUm9vdE5hdmlnYXRpb25Qcm9taXNlcyIsImxheW91dFNlZ21lbnRQcm9taXNlc0NhY2hlIiwiV2Vha01hcCIsImNyZWF0ZUxheW91dFNlZ21lbnRQcm9taXNlcyIsInRyZWUiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJjYWNoZWQiLCJnZXQiLCJzZWdtZW50UHJvbWlzZXMiLCJNYXAiLCJzZWdtZW50c1Byb21pc2VzIiwicGFyYWxsZWxSb3V0ZXMiLCJwYXJhbGxlbFJvdXRlS2V5IiwiT2JqZWN0Iiwia2V5cyIsInNlZ21lbnRzIiwiZ2V0U2VsZWN0ZWRMYXlvdXRTZWdtZW50UGF0aCIsInNlZ21lbnQiLCJjb21wdXRlU2VsZWN0ZWRMYXlvdXRTZWdtZW50Iiwic2V0IiwiY3JlYXRlRGV2VG9vbHNJbnN0cnVtZW50ZWRQcm9taXNlIiwicmVzdWx0Iiwic2VsZWN0ZWRMYXlvdXRTZWdtZW50UHJvbWlzZXMiLCJzZWxlY3RlZExheW91dFNlZ21lbnRzUHJvbWlzZXMiLCJyb290TmF2aWdhdGlvblByb21pc2VzQ2FjaGUiLCJwYXRobmFtZSIsInNlYXJjaFBhcmFtcyIsInBhdGhQYXJhbXMiLCJzZWFyY2hQYXJhbXNTdHJpbmciLCJ0b1N0cmluZyIsInBhdGhQYXJhbXNTdHJpbmciLCJKU09OIiwic3RyaW5naWZ5IiwiY2FjaGVLZXkiLCJ0cmVlQ2FjaGUiLCJyZWFkb25seVNlYXJjaFBhcmFtcyIsIlJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zIiwibGF5b3V0U2VnbWVudFByb21pc2VzIiwicHJvbWlzZXMiLCJwYXJhbXMiLCJuZXN0ZWRMYXlvdXRQcm9taXNlc0NhY2hlIiwicGFyZW50TmF2UHJvbWlzZXMiLCJwYXJhbGxlbFJvdXRlS2V5cyIsImxlbmd0aCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/navigation-devtools.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/navigation-untracked.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/navigation-untracked.js ***!
|
||
\**************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"useUntrackedPathname\", ({\n enumerable: true,\n get: function() {\n return useUntrackedPathname;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nconst _hooksclientcontextsharedruntime = __webpack_require__(/*! ../../shared/lib/hooks-client-context.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/hooks-client-context.js\");\n/**\n * This checks to see if the current render has any unknown route parameters that\n * would cause the pathname to be dynamic. It's used to trigger a different\n * render path in the error boundary.\n *\n * @returns true if there are any unknown route parameters, false otherwise\n */ function hasFallbackRouteParams() {\n if (true) {\n // AsyncLocalStorage should not be included in the client bundle.\n const { workUnitAsyncStorage } = __webpack_require__(/*! ../../server/app-render/work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\n const workUnitStore = workUnitAsyncStorage.getStore();\n if (!workUnitStore) return false;\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'validation-client':\n const fallbackParams = workUnitStore.fallbackRouteParams;\n return fallbackParams ? fallbackParams.size > 0 : false;\n case 'prerender-legacy':\n case 'request':\n case 'prerender-runtime':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'generate-static-params':\n break;\n default:\n workUnitStore;\n }\n return false;\n }\n return false;\n}\nfunction useUntrackedPathname() {\n // If there are any unknown route parameters we would typically throw\n // an error, but this internal method allows us to return a null value instead\n // for components that do not propagate the pathname to the static shell (like\n // the error boundary).\n if (hasFallbackRouteParams()) {\n return null;\n }\n // This shouldn't cause any issues related to conditional rendering because\n // the environment will be consistent for the render.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return (0, _react.useContext)(_hooksclientcontextsharedruntime.PathnameContext);\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=navigation-untracked.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25hdmlnYXRpb24tdW50cmFja2VkLmpzIiwibWFwcGluZ3MiOiI7Ozs7d0RBdURnQkE7OztlQUFBQTs7O21DQXZEVzs2REFDSztBQUVoQzs7Ozs7O0NBTUMsR0FDRCxTQUFTQztJQUNQLElBQUksSUFBNkIsRUFBRTtRQUNqQyxpRUFBaUU7UUFDakUsTUFBTSxFQUFFRSxvQkFBb0IsRUFBRSxHQUM1QkMsbUJBQU9BLENBQUMsb0dBQTBEO1FBRXBFLE1BQU1DLGdCQUFnQkYscUJBQXFCRyxRQUFRO1FBQ25ELElBQUksQ0FBQ0QsZUFBZSxPQUFPO1FBRTNCLE9BQVFBLGNBQWNFLElBQUk7WUFDeEIsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztnQkFDSCxNQUFNQyxpQkFBaUJILGNBQWNJLG1CQUFtQjtnQkFDeEQsT0FBT0QsaUJBQWlCQSxlQUFlRSxJQUFJLEdBQUcsSUFBSTtZQUNwRCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO2dCQUNIO1lBQ0Y7Z0JBQ0VMO1FBQ0o7UUFFQSxPQUFPO0lBQ1Q7SUFFQSxPQUFPO0FBQ1Q7QUFhTyxTQUFTTDtJQUNkLHFFQUFxRTtJQUNyRSw4RUFBOEU7SUFDOUUsOEVBQThFO0lBQzlFLHVCQUF1QjtJQUN2QixJQUFJQywwQkFBMEI7UUFDNUIsT0FBTztJQUNUO0lBRUEsMkVBQTJFO0lBQzNFLHFEQUFxRDtJQUNyRCxzREFBc0Q7SUFDdEQsT0FBT1UsQ0FBQUEsR0FBQUEsT0FBQUEsVUFBQUEsRUFBV0MsaUNBQUFBLGVBQWU7QUFDbkMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9zcmMvY2xpZW50L2NvbXBvbmVudHMvbmF2aWdhdGlvbi11bnRyYWNrZWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgUGF0aG5hbWVDb250ZXh0IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9ob29rcy1jbGllbnQtY29udGV4dC5zaGFyZWQtcnVudGltZSdcblxuLyoqXG4gKiBUaGlzIGNoZWNrcyB0byBzZWUgaWYgdGhlIGN1cnJlbnQgcmVuZGVyIGhhcyBhbnkgdW5rbm93biByb3V0ZSBwYXJhbWV0ZXJzIHRoYXRcbiAqIHdvdWxkIGNhdXNlIHRoZSBwYXRobmFtZSB0byBiZSBkeW5hbWljLiBJdCdzIHVzZWQgdG8gdHJpZ2dlciBhIGRpZmZlcmVudFxuICogcmVuZGVyIHBhdGggaW4gdGhlIGVycm9yIGJvdW5kYXJ5LlxuICpcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlcmUgYXJlIGFueSB1bmtub3duIHJvdXRlIHBhcmFtZXRlcnMsIGZhbHNlIG90aGVyd2lzZVxuICovXG5mdW5jdGlvbiBoYXNGYWxsYmFja1JvdXRlUGFyYW1zKCk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAvLyBBc3luY0xvY2FsU3RvcmFnZSBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIHRoZSBjbGllbnQgYnVuZGxlLlxuICAgIGNvbnN0IHsgd29ya1VuaXRBc3luY1N0b3JhZ2UgfSA9XG4gICAgICByZXF1aXJlKCcuLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci93b3JrLXVuaXQtYXN5bmMtc3RvcmFnZS5leHRlcm5hbCcpIGFzIHR5cGVvZiBpbXBvcnQoJy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3dvcmstdW5pdC1hc3luYy1zdG9yYWdlLmV4dGVybmFsJylcblxuICAgIGNvbnN0IHdvcmtVbml0U3RvcmUgPSB3b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpXG4gICAgaWYgKCF3b3JrVW5pdFN0b3JlKSByZXR1cm4gZmFsc2VcblxuICAgIHN3aXRjaCAod29ya1VuaXRTdG9yZS50eXBlKSB7XG4gICAgICBjYXNlICdwcmVyZW5kZXInOlxuICAgICAgY2FzZSAncHJlcmVuZGVyLWNsaWVudCc6XG4gICAgICBjYXNlICdwcmVyZW5kZXItcHByJzpcbiAgICAgIGNhc2UgJ3ZhbGlkYXRpb24tY2xpZW50JzpcbiAgICAgICAgY29uc3QgZmFsbGJhY2tQYXJhbXMgPSB3b3JrVW5pdFN0b3JlLmZhbGxiYWNrUm91dGVQYXJhbXNcbiAgICAgICAgcmV0dXJuIGZhbGxiYWNrUGFyYW1zID8gZmFsbGJhY2tQYXJhbXMuc2l6ZSA+IDAgOiBmYWxzZVxuICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgIGNhc2UgJ2NhY2hlJzpcbiAgICAgIGNhc2UgJ3ByaXZhdGUtY2FjaGUnOlxuICAgICAgY2FzZSAndW5zdGFibGUtY2FjaGUnOlxuICAgICAgY2FzZSAnZ2VuZXJhdGUtc3RhdGljLXBhcmFtcyc6XG4gICAgICAgIGJyZWFrXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB3b3JrVW5pdFN0b3JlIHNhdGlzZmllcyBuZXZlclxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qKlxuICogVGhpcyByZXR1cm5zIGEgYG51bGxgIHZhbHVlIGlmIHRoZXJlIGFyZSBhbnkgdW5rbm93biByb3V0ZSBwYXJhbWV0ZXJzLCBhbmRcbiAqIG90aGVyd2lzZSByZXR1cm5zIHRoZSBwYXRobmFtZSBmcm9tIHRoZSBjb250ZXh0LiBUaGlzIGlzIGFuIGFsdGVybmF0aXZlIHRvXG4gKiBgdXNlUGF0aG5hbWVgIHRoYXQgaXMgdXNlZCBpbiB0aGUgZXJyb3IgYm91bmRhcnkgdG8gYXZvaWQgcmVuZGVyaW5nIHRoZVxuICogZXJyb3IgYm91bmRhcnkgd2hlbiB0aGVyZSBhcmUgdW5rbm93biByb3V0ZSBwYXJhbWV0ZXJzLiBUaGlzIGRvZXNuJ3QgdGhyb3dcbiAqIHdoZW4gYWNjZXNzZWQgd2l0aCB1bmtub3duIHJvdXRlIHBhcmFtZXRlcnMuXG4gKlxuICogQHJldHVybnNcbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVVudHJhY2tlZFBhdGhuYW1lKCk6IHN0cmluZyB8IG51bGwge1xuICAvLyBJZiB0aGVyZSBhcmUgYW55IHVua25vd24gcm91dGUgcGFyYW1ldGVycyB3ZSB3b3VsZCB0eXBpY2FsbHkgdGhyb3dcbiAgLy8gYW4gZXJyb3IsIGJ1dCB0aGlzIGludGVybmFsIG1ldGhvZCBhbGxvd3MgdXMgdG8gcmV0dXJuIGEgbnVsbCB2YWx1ZSBpbnN0ZWFkXG4gIC8vIGZvciBjb21wb25lbnRzIHRoYXQgZG8gbm90IHByb3BhZ2F0ZSB0aGUgcGF0aG5hbWUgdG8gdGhlIHN0YXRpYyBzaGVsbCAobGlrZVxuICAvLyB0aGUgZXJyb3IgYm91bmRhcnkpLlxuICBpZiAoaGFzRmFsbGJhY2tSb3V0ZVBhcmFtcygpKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8vIFRoaXMgc2hvdWxkbid0IGNhdXNlIGFueSBpc3N1ZXMgcmVsYXRlZCB0byBjb25kaXRpb25hbCByZW5kZXJpbmcgYmVjYXVzZVxuICAvLyB0aGUgZW52aXJvbm1lbnQgd2lsbCBiZSBjb25zaXN0ZW50IGZvciB0aGUgcmVuZGVyLlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgcmV0dXJuIHVzZUNvbnRleHQoUGF0aG5hbWVDb250ZXh0KVxufVxuIl0sIm5hbWVzIjpbInVzZVVudHJhY2tlZFBhdGhuYW1lIiwiaGFzRmFsbGJhY2tSb3V0ZVBhcmFtcyIsIndpbmRvdyIsIndvcmtVbml0QXN5bmNTdG9yYWdlIiwicmVxdWlyZSIsIndvcmtVbml0U3RvcmUiLCJnZXRTdG9yZSIsInR5cGUiLCJmYWxsYmFja1BhcmFtcyIsImZhbGxiYWNrUm91dGVQYXJhbXMiLCJzaXplIiwidXNlQ29udGV4dCIsIlBhdGhuYW1lQ29udGV4dCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/navigation-untracked.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/navigation.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/navigation.js ***!
|
||
\****************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n // We need the same class that was used to instantiate the context value\n // Otherwise instanceof checks will fail in usercode\n ReadonlyURLSearchParams: function() {\n return _hooksclientcontextsharedruntime.ReadonlyURLSearchParams;\n },\n RedirectType: function() {\n return _navigationreactserver.RedirectType;\n },\n ServerInsertedHTMLContext: function() {\n return _serverinsertedhtmlsharedruntime.ServerInsertedHTMLContext;\n },\n forbidden: function() {\n return _navigationreactserver.forbidden;\n },\n notFound: function() {\n return _navigationreactserver.notFound;\n },\n permanentRedirect: function() {\n return _navigationreactserver.permanentRedirect;\n },\n redirect: function() {\n return _navigationreactserver.redirect;\n },\n unauthorized: function() {\n return _navigationreactserver.unauthorized;\n },\n unstable_isUnrecognizedActionError: function() {\n return _unrecognizedactionerror.unstable_isUnrecognizedActionError;\n },\n unstable_rethrow: function() {\n return _navigationreactserver.unstable_rethrow;\n },\n useParams: function() {\n return useParams;\n },\n usePathname: function() {\n return usePathname;\n },\n useRouter: function() {\n return useRouter;\n },\n useSearchParams: function() {\n return useSearchParams;\n },\n useSelectedLayoutSegment: function() {\n return useSelectedLayoutSegment;\n },\n useSelectedLayoutSegments: function() {\n return useSelectedLayoutSegments;\n },\n useServerInsertedHTML: function() {\n return _serverinsertedhtmlsharedruntime.useServerInsertedHTML;\n }\n});\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\"));\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../shared/lib/app-router-context.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js\");\nconst _hooksclientcontextsharedruntime = __webpack_require__(/*! ../../shared/lib/hooks-client-context.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/hooks-client-context.js\");\nconst _segment = __webpack_require__(/*! ../../shared/lib/segment */ \"(ssr)/./node_modules/next/dist/shared/lib/segment.js\");\nconst _serverinsertedhtmlsharedruntime = __webpack_require__(/*! ../../shared/lib/server-inserted-html.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/server-inserted-html.js\");\nconst _unrecognizedactionerror = __webpack_require__(/*! ./unrecognized-action-error */ \"(ssr)/./node_modules/next/dist/client/components/unrecognized-action-error.js\");\nconst _navigationreactserver = __webpack_require__(/*! ./navigation.react-server */ \"(ssr)/./node_modules/next/dist/client/components/navigation.react-server.js\");\nconst useDynamicRouteParams = true ? (__webpack_require__(/*! ../../server/app-render/dynamic-rendering */ \"(ssr)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\").useDynamicRouteParams) : 0;\nconst useDynamicSearchParams = true ? (__webpack_require__(/*! ../../server/app-render/dynamic-rendering */ \"(ssr)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\").useDynamicSearchParams) : 0;\nconst { instrumentParamsForClientValidation, instrumentSearchParamsForClientValidation, expectCompleteParamsInClientValidation } = false ? 0 : {};\nfunction useSearchParams() {\n useDynamicSearchParams?.('useSearchParams()');\n const searchParams = (0, _react.useContext)(_hooksclientcontextsharedruntime.SearchParamsContext);\n // In the case where this is `null`, the compat types added in\n // `next-env.d.ts` will add a new overload that changes the return type to\n // include `null`.\n const readonlySearchParams = (0, _react.useMemo)(()=>{\n if (!searchParams) {\n // When the router is not ready in pages, we won't have the search params\n // available.\n return null;\n }\n return new _hooksclientcontextsharedruntime.ReadonlyURLSearchParams(searchParams);\n }, [\n searchParams\n ]);\n // During build-time instant validation, wrap with an proxy\n // so that accessing undeclared search params throws an error.\n if (false) {}\n // Instrument with Suspense DevTools (dev-only)\n if ( true && 'use' in _react.default) {\n const navigationPromises = (0, _react.use)(_hooksclientcontextsharedruntime.NavigationPromisesContext);\n if (navigationPromises) {\n return (0, _react.use)(navigationPromises.searchParams);\n }\n }\n return readonlySearchParams;\n}\nfunction usePathname() {\n useDynamicRouteParams?.('usePathname()');\n // In the case where this is `null`, the compat types added in `next-env.d.ts`\n // will add a new overload that changes the return type to include `null`.\n const pathname = (0, _react.useContext)(_hooksclientcontextsharedruntime.PathnameContext);\n // During build-time instant validation, error if fallback params exist\n // because usePathname() can't return a sensible value without all params.\n if (false) {}\n // Instrument with Suspense DevTools (dev-only)\n if ( true && 'use' in _react.default) {\n const navigationPromises = (0, _react.use)(_hooksclientcontextsharedruntime.NavigationPromisesContext);\n if (navigationPromises) {\n return (0, _react.use)(navigationPromises.pathname);\n }\n }\n return pathname;\n}\nfunction useRouter() {\n const router = (0, _react.useContext)(_approutercontextsharedruntime.AppRouterContext);\n if (router === null) {\n throw Object.defineProperty(new Error('invariant expected app router to be mounted'), \"__NEXT_ERROR_CODE\", {\n value: \"E238\",\n enumerable: false,\n configurable: true\n });\n }\n return router;\n}\nfunction useParams() {\n useDynamicRouteParams?.('useParams()');\n const params = (0, _react.useContext)(_hooksclientcontextsharedruntime.PathParamsContext);\n // During build-time instant validation, wrap with a proxy\n // so that accessing undeclared params throws an error.\n if (false) {}\n // Instrument with Suspense DevTools (dev-only)\n if ( true && 'use' in _react.default) {\n const navigationPromises = (0, _react.use)(_hooksclientcontextsharedruntime.NavigationPromisesContext);\n if (navigationPromises) {\n return (0, _react.use)(navigationPromises.params);\n }\n }\n return params;\n}\nfunction useSelectedLayoutSegments(parallelRouteKey = 'children') {\n useDynamicRouteParams?.('useSelectedLayoutSegments()');\n const context = (0, _react.useContext)(_approutercontextsharedruntime.LayoutRouterContext);\n // @ts-expect-error This only happens in `pages`. Type is overwritten in navigation.d.ts\n if (!context) return null;\n // During build-time instant validation, error if fallback params exist\n // because useSelectedLayoutSegments() can't return a sensible value without all params.\n if (false) {}\n // Instrument with Suspense DevTools (dev-only)\n if ( true && 'use' in _react.default) {\n const navigationPromises = (0, _react.use)(_hooksclientcontextsharedruntime.NavigationPromisesContext);\n if (navigationPromises) {\n const promise = navigationPromises.selectedLayoutSegmentsPromises?.get(parallelRouteKey);\n if (promise) {\n // We should always have a promise here, but if we don't, it's not worth erroring over.\n // We just won't be able to instrument it, but can still provide the value.\n return (0, _react.use)(promise);\n }\n }\n }\n return (0, _segment.getSelectedLayoutSegmentPath)(context.parentTree, parallelRouteKey);\n}\nfunction useSelectedLayoutSegment(parallelRouteKey = 'children') {\n useDynamicRouteParams?.('useSelectedLayoutSegment()');\n const navigationPromises = (0, _react.useContext)(_hooksclientcontextsharedruntime.NavigationPromisesContext);\n const selectedLayoutSegments = useSelectedLayoutSegments(parallelRouteKey);\n // During build-time instant validation, error if fallback params exist\n // because useSelectedLayoutSegment() can't return a sensible value without all params.\n if (false) {}\n // Instrument with Suspense DevTools (dev-only)\n if ( true && navigationPromises && 'use' in _react.default) {\n const promise = navigationPromises.selectedLayoutSegmentPromises?.get(parallelRouteKey);\n if (promise) {\n // We should always have a promise here, but if we don't, it's not worth erroring over.\n // We just won't be able to instrument it, but can still provide the value.\n return (0, _react.use)(promise);\n }\n }\n return (0, _segment.computeSelectedLayoutSegment)(selectedLayoutSegments, parallelRouteKey);\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=navigation.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25hdmlnYXRpb24uanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBd1ZFLHdFQUF3RTtJQUN4RSxvREFBb0Q7SUFDcERBLHVCQUF1QjtlQUF2QkEsaUNBQUFBLHVCQUF1Qjs7SUFRdkJDLFlBQVk7ZUFBWkEsdUJBQUFBLFlBQVk7O0lBMU1aQyx5QkFBeUI7ZUFBekJBLGlDQUFBQSx5QkFBeUI7O0lBc016QkMsU0FBUztlQUFUQSx1QkFBQUEsU0FBUzs7SUFEVEMsUUFBUTtlQUFSQSx1QkFBQUEsUUFBUTs7SUFJUkMsaUJBQWlCO2VBQWpCQSx1QkFBQUEsaUJBQWlCOztJQURqQkMsUUFBUTtlQUFSQSx1QkFBQUEsUUFBUTs7SUFEUkMsWUFBWTtlQUFaQSx1QkFBQUEsWUFBWTs7SUFYTEMsa0NBQWtDO2VBQWxDQSx5QkFBQUEsa0NBQWtDOztJQWV6Q0MsZ0JBQWdCO2VBQWhCQSx1QkFBQUEsZ0JBQWdCOztJQXpKRkMsU0FBUztlQUFUQTs7SUFqRkFDLFdBQVc7ZUFBWEE7O0lBc0RBQyxTQUFTO2VBQVRBOztJQS9HQUMsZUFBZTtlQUFmQTs7SUFxUEFDLHdCQUF3QjtlQUF4QkE7O0lBdkRBQyx5QkFBeUI7ZUFBekJBOztJQXJHZEMscUJBQXFCO2VBQXJCQSxpQ0FBQUEscUJBQXFCOzs7OzZFQXZKeUI7MkRBS3pDOzZEQU9BO3FDQUlBOzZEQXdJQTtxREEwTDRDO21EQWdCNUM7QUFoVlAsTUFBTUMsd0JBQ0osS0FBNkIsR0FFdkJFLHFLQUNxQixHQUN2QkMsQ0FBU0E7QUFFZixNQUFNQyx5QkFDSixLQUE2QixHQUV2QkYsc0tBQ3NCLEdBQ3hCQyxDQUFTQTtBQUVmLE1BQU0sRUFDSkUsbUNBQW1DLEVBQ25DQyx5Q0FBeUMsRUFDekNDLHNDQUFzQyxFQUN2QyxHQUNDLE1BQW9FLEdBQy9ETCxDQUE0RSxHQUM3RSxDQUFDO0FBdUJBLFNBQVNOO0lBQ2RRLHlCQUF5QjtJQUV6QixN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LHlCQUF5QjtRQUN4RCxJQUFJRixvQkFBb0I7WUFDdEIsTUFBTWEsVUFDSmIsbUJBQW1CYyw4QkFBOEIsRUFBRUMsSUFBSUw7WUFDekQsSUFBSUcsU0FBUztnQkFDWCx1RkFBdUY7Z0JBQ3ZGLDJFQUEyRTtnQkFDM0UsT0FBT1osQ0FBQUEsR0FBQUEsT0FBQUEsR0FBQUEsRUFBSVk7WUFDYjtRQUNGO0lBQ0Y7SUFFQSxPQUFPRyxDQUFBQSxHQUFBQSxTQUFBQSw0QkFBQUEsRUFBNkJMLFFBQVFNLFVBQVUsRUFBRVA7QUFDMUQ7QUFxQk8sU0FBUy9CLHlCQUNkK0IsbUJBQTJCLFVBQVU7SUFFckM1Qix3QkFBd0I7SUFDeEIsTUFBTWtCLHFCQUFxQk4sQ0FBQUEsR0FBQUEsT0FBQUEsVUFBQUEsRUFBV1EsaUNBQUFBLHlCQUF5QjtJQUMvRCxNQUFNZ0IseUJBQXlCdEMsMEJBQTBCOEI7SUFFekQsdUVBQXVFO0lBQ3ZFLHVGQUF1RjtJQUN2RixJQUFJLEtBQW9FLEVBQUUsRUFFekU7SUFFRCwrQ0FBK0M7SUFDL0MsSUFDRXBCLEtBQW9CLElBQ3BCVSxzQkFDQSxTQUFTRCxPQUFBQSxPQUFLLEVBQ2Q7UUFDQSxNQUFNYyxVQUNKYixtQkFBbUJtQiw2QkFBNkIsRUFBRUosSUFBSUw7UUFDeEQsSUFBSUcsU0FBUztZQUNYLHVGQUF1RjtZQUN2RiwyRUFBMkU7WUFDM0UsT0FBT1osQ0FBQUEsR0FBQUEsT0FBQUEsR0FBQUEsRUFBSVk7UUFDYjtJQUNGO0lBRUEsT0FBT08sQ0FBQUEsR0FBQUEsU0FBQUEsNEJBQUFBLEVBQTZCRix3QkFBd0JSO0FBQzlEIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL2NsaWVudC9jb21wb25lbnRzL25hdmlnYXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQYXJhbXMgfSBmcm9tICcuLi8uLi9zZXJ2ZXIvcmVxdWVzdC9wYXJhbXMnXG5cbmltcG9ydCBSZWFjdCwgeyB1c2VDb250ZXh0LCB1c2VNZW1vLCB1c2UgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIEFwcFJvdXRlckNvbnRleHQsXG4gIExheW91dFJvdXRlckNvbnRleHQsXG4gIHR5cGUgQXBwUm91dGVySW5zdGFuY2UsXG59IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHtcbiAgU2VhcmNoUGFyYW1zQ29udGV4dCxcbiAgUGF0aG5hbWVDb250ZXh0LFxuICBQYXRoUGFyYW1zQ29udGV4dCxcbiAgTmF2aWdhdGlvblByb21pc2VzQ29udGV4dCxcbiAgUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXMsXG59IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvaG9va3MtY2xpZW50LWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQge1xuICBjb21wdXRlU2VsZWN0ZWRMYXlvdXRTZWdtZW50LFxuICBnZXRTZWxlY3RlZExheW91dFNlZ21lbnRQYXRoLFxufSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL3NlZ21lbnQnXG5cbmNvbnN0IHVzZUR5bmFtaWNSb3V0ZVBhcmFtcyA9XG4gIHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnXG4gICAgPyAoXG4gICAgICAgIHJlcXVpcmUoJy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL2R5bmFtaWMtcmVuZGVyaW5nJykgYXMgdHlwZW9mIGltcG9ydCgnLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvZHluYW1pYy1yZW5kZXJpbmcnKVxuICAgICAgKS51c2VEeW5hbWljUm91dGVQYXJhbXNcbiAgICA6IHVuZGVmaW5lZFxuXG5jb25zdCB1c2VEeW5hbWljU2VhcmNoUGFyYW1zID1cbiAgdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCdcbiAgICA/IChcbiAgICAgICAgcmVxdWlyZSgnLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvZHluYW1pYy1yZW5kZXJpbmcnKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci9keW5hbWljLXJlbmRlcmluZycpXG4gICAgICApLnVzZUR5bmFtaWNTZWFyY2hQYXJhbXNcbiAgICA6IHVuZGVmaW5lZFxuXG5jb25zdCB7XG4gIGluc3RydW1lbnRQYXJhbXNGb3JDbGllbnRWYWxpZGF0aW9uLFxuICBpbnN0cnVtZW50U2VhcmNoUGFyYW1zRm9yQ2xpZW50VmFsaWRhdGlvbixcbiAgZXhwZWN0Q29tcGxldGVQYXJhbXNJbkNsaWVudFZhbGlkYXRpb24sXG59ID1cbiAgdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5lbnYuX19ORVhUX0NBQ0hFX0NPTVBPTkVOVFNcbiAgICA/IChyZXF1aXJlKCcuLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci9pbnN0YW50LXZhbGlkYXRpb24vaW5zdGFudC1zYW1wbGVzLWNsaWVudCcpIGFzIHR5cGVvZiBpbXBvcnQoJy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL2luc3RhbnQtdmFsaWRhdGlvbi9pbnN0YW50LXNhbXBsZXMtY2xpZW50JykpXG4gICAgOiB7fVxuXG4vKipcbiAqIEEgW0NsaWVudCBDb21wb25lbnRdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JlbmRlcmluZy9jbGllbnQtY29tcG9uZW50cykgaG9va1xuICogdGhhdCBsZXRzIHlvdSAqcmVhZCogdGhlIGN1cnJlbnQgVVJMJ3Mgc2VhcmNoIHBhcmFtZXRlcnMuXG4gKlxuICogTGVhcm4gbW9yZSBhYm91dCBbYFVSTFNlYXJjaFBhcmFtc2Agb24gTUROXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9BUEkvVVJMU2VhcmNoUGFyYW1zKVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogXCJ1c2UgY2xpZW50XCJcbiAqIGltcG9ydCB7IHVzZVNlYXJjaFBhcmFtcyB9IGZyb20gJ25leHQvbmF2aWdhdGlvbidcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQYWdlKCkge1xuICogICBjb25zdCBzZWFyY2hQYXJhbXMgPSB1c2VTZWFyY2hQYXJhbXMoKVxuICogICBzZWFyY2hQYXJhbXMuZ2V0KCdmb28nKSAvLyByZXR1cm5zICdiYXInIHdoZW4gP2Zvbz1iYXJcbiAqICAgLy8gLi4uXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBSZWFkIG1vcmU6IFtOZXh0LmpzIERvY3M6IGB1c2VTZWFyY2hQYXJhbXNgXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvdXNlLXNlYXJjaC1wYXJhbXMpXG4gKi9cbi8vIENsaWVudCBjb21wb25lbnRzIEFQSVxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNlYXJjaFBhcmFtcygpOiBSZWFkb25seVVSTFNlYXJjaFBhcmFtcyB7XG4gIHVzZUR5bmFtaWNTZWFyY2hQYXJhbXM/LigndXNlU2VhcmNoUGFyYW1zKCknKVxuXG4gIGNvbnN0IHNlYXJjaFBhcmFtcyA9IHVzZUNvbnRleHQoU2VhcmNoUGFyYW1zQ29udGV4dClcblxuICAvLyBJbiB0aGUgY2FzZSB3aGVyZSB0aGlzIGlzIGBudWxsYCwgdGhlIGNvbXBhdCB0eXBlcyBhZGRlZCBpblxuICAvLyBgbmV4dC1lbnYuZC50c2Agd2lsbCBhZGQgYSBuZXcgb3ZlcmxvYWQgdGhhdCBjaGFuZ2VzIHRoZSByZXR1cm4gdHlwZSB0b1xuICAvLyBpbmNsdWRlIGBudWxsYC5cbiAgY29uc3QgcmVhZG9ubHlTZWFyY2hQYXJhbXMgPSB1c2VNZW1vKCgpOiBSZWFkb25seVVSTFNlYXJjaFBhcmFtcyA9PiB7XG4gICAgaWYgKCFzZWFyY2hQYXJhbXMpIHtcbiAgICAgIC8vIFdoZW4gdGhlIHJvdXRlciBpcyBub3QgcmVhZHkgaW4gcGFnZXMsIHdlIHdvbid0IGhhdmUgdGhlIHNlYXJjaCBwYXJhbXNcbiAgICAgIC8vIGF2YWlsYWJsZS5cbiAgICAgIHJldHVybiBudWxsIVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXMoc2VhcmNoUGFyYW1zKVxuICB9LCBbc2VhcmNoUGFyYW1zXSlcblxuICAvLyBEdXJpbmcgYnVpbGQtdGltZSBpbnN0YW50IHZhbGlkYXRpb24sIHdyYXAgd2l0aCBhbiBwcm94eVxuICAvLyBzbyB0aGF0IGFjY2Vzc2luZyB1bmRlY2xhcmVkIHNlYXJjaCBwYXJhbXMgdGhyb3dzIGFuIGVycm9yLlxuICBpZiAoXG4gICAgdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgJiZcbiAgICBwcm9jZXNzLmVudi5fX05FWFRfQ0FDSEVfQ09NUE9ORU5UUyAmJlxuICAgIHJlYWRvbmx5U2VhcmNoUGFyYW1zXG4gICkge1xuICAgIHJldHVybiBpbnN0cnVtZW50U2VhcmNoUGFyYW1zRm9yQ2xpZW50VmFsaWRhdGlvbiEocmVhZG9ubHlTZWFyY2hQYXJhbXMpXG4gIH1cblxuICAvLyBJbnN0cnVtZW50IHdpdGggU3VzcGVuc2UgRGV2VG9vbHMgKGRldi1vbmx5KVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAndXNlJyBpbiBSZWFjdCkge1xuICAgIGNvbnN0IG5hdmlnYXRpb25Qcm9taXNlcyA9IHVzZShOYXZpZ2F0aW9uUHJvbWlzZXNDb250ZXh0KVxuICAgIGlmIChuYXZpZ2F0aW9uUHJvbWlzZXMpIHtcbiAgICAgIHJldHVybiB1c2UobmF2aWdhdGlvblByb21pc2VzLnNlYXJjaFBhcmFtcylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVhZG9ubHlTZWFyY2hQYXJhbXNcbn1cblxuLyoqXG4gKiBBIFtDbGllbnQgQ29tcG9uZW50XShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvY2xpZW50LWNvbXBvbmVudHMpIGhvb2tcbiAqIHRoYXQgbGV0cyB5b3UgcmVhZCB0aGUgY3VycmVudCBVUkwncyBwYXRobmFtZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIFwidXNlIGNsaWVudFwiXG4gKiBpbXBvcnQgeyB1c2VQYXRobmFtZSB9IGZyb20gJ25leHQvbmF2aWdhdGlvbidcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQYWdlKCkge1xuICogIGNvbnN0IHBhdGhuYW1lID0gdXNlUGF0aG5hbWUoKSAvLyByZXR1cm5zIFwiL2Rhc2hib2FyZFwiIG9uIC9kYXNoYm9hcmQ/Zm9vPWJhclxuICogIC8vIC4uLlxuICogfVxuICogYGBgXG4gKlxuICogUmVhZCBtb3JlOiBbTmV4dC5qcyBEb2NzOiBgdXNlUGF0aG5hbWVgXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvdXNlLXBhdGhuYW1lKVxuICovXG4vLyBDbGllbnQgY29tcG9uZW50cyBBUElcbmV4cG9ydCBmdW5jdGlvbiB1c2VQYXRobmFtZSgpOiBzdHJpbmcge1xuICB1c2VEeW5hbWljUm91dGVQYXJhbXM/LigndXNlUGF0aG5hbWUoKScpXG5cbiAgLy8gSW4gdGhlIGNhc2Ugd2hlcmUgdGhpcyBpcyBgbnVsbGAsIHRoZSBjb21wYXQgdHlwZXMgYWRkZWQgaW4gYG5leHQtZW52LmQudHNgXG4gIC8vIHdpbGwgYWRkIGEgbmV3IG92ZXJsb2FkIHRoYXQgY2hhbmdlcyB0aGUgcmV0dXJuIHR5cGUgdG8gaW5jbHVkZSBgbnVsbGAuXG4gIGNvbnN0IHBhdGhuYW1lID0gdXNlQ29udGV4dChQYXRobmFtZUNvbnRleHQpIGFzIHN0cmluZ1xuXG4gIC8vIER1cmluZyBidWlsZC10aW1lIGluc3RhbnQgdmFsaWRhdGlvbiwgZXJyb3IgaWYgZmFsbGJhY2sgcGFyYW1zIGV4aXN0XG4gIC8vIGJlY2F1c2UgdXNlUGF0aG5hbWUoKSBjYW4ndCByZXR1cm4gYSBzZW5zaWJsZSB2YWx1ZSB3aXRob3V0IGFsbCBwYXJhbXMuXG4gIGlmIChcbiAgICB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyAmJlxuICAgIHByb2Nlc3MuZW52Ll9fTkVYVF9DQUNIRV9DT01QT05FTlRTICYmXG4gICAgcGF0aG5hbWVcbiAgKSB7XG4gICAgZXhwZWN0Q29tcGxldGVQYXJhbXNJbkNsaWVudFZhbGlkYXRpb24hKCd1c2VQYXRobmFtZSgpJylcbiAgICByZXR1cm4gcGF0aG5hbWVcbiAgfVxuXG4gIC8vIEluc3RydW1lbnQgd2l0aCBTdXNwZW5zZSBEZXZUb29scyAoZGV2LW9ubHkpXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICd1c2UnIGluIFJlYWN0KSB7XG4gICAgY29uc3QgbmF2aWdhdGlvblByb21pc2VzID0gdXNlKE5hdmlnYXRpb25Qcm9taXNlc0NvbnRleHQpXG4gICAgaWYgKG5hdmlnYXRpb25Qcm9taXNlcykge1xuICAgICAgcmV0dXJuIHVzZShuYXZpZ2F0aW9uUHJvbWlzZXMucGF0aG5hbWUpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhdGhuYW1lXG59XG5cbi8vIENsaWVudCBjb21wb25lbnRzIEFQSVxuZXhwb3J0IHtcbiAgU2VydmVySW5zZXJ0ZWRIVE1MQ29udGV4dCxcbiAgdXNlU2VydmVySW5zZXJ0ZWRIVE1MLFxufSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL3NlcnZlci1pbnNlcnRlZC1odG1sLnNoYXJlZC1ydW50aW1lJ1xuXG4vKipcbiAqXG4gKiBUaGlzIGhvb2sgYWxsb3dzIHlvdSB0byBwcm9ncmFtbWF0aWNhbGx5IGNoYW5nZSByb3V0ZXMgaW5zaWRlIFtDbGllbnQgQ29tcG9uZW50XShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvY2xpZW50LWNvbXBvbmVudHMpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogXCJ1c2UgY2xpZW50XCJcbiAqIGltcG9ydCB7IHVzZVJvdXRlciB9IGZyb20gJ25leHQvbmF2aWdhdGlvbidcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQYWdlKCkge1xuICogIGNvbnN0IHJvdXRlciA9IHVzZVJvdXRlcigpXG4gKiAgLy8gLi4uXG4gKiAgcm91dGVyLnB1c2goJy9kYXNoYm9hcmQnKSAvLyBOYXZpZ2F0ZSB0byAvZGFzaGJvYXJkXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBSZWFkIG1vcmU6IFtOZXh0LmpzIERvY3M6IGB1c2VSb3V0ZXJgXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvdXNlLXJvdXRlcilcbiAqL1xuLy8gQ2xpZW50IGNvbXBvbmVudHMgQVBJXG5leHBvcnQgZnVuY3Rpb24gdXNlUm91dGVyKCk6IEFwcFJvdXRlckluc3RhbmNlIHtcbiAgY29uc3Qgcm91dGVyID0gdXNlQ29udGV4dChBcHBSb3V0ZXJDb250ZXh0KVxuICBpZiAocm91dGVyID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhcmlhbnQgZXhwZWN0ZWQgYXBwIHJvdXRlciB0byBiZSBtb3VudGVkJylcbiAgfVxuXG4gIHJldHVybiByb3V0ZXJcbn1cblxuLyoqXG4gKiBBIFtDbGllbnQgQ29tcG9uZW50XShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvY2xpZW50LWNvbXBvbmVudHMpIGhvb2tcbiAqIHRoYXQgbGV0cyB5b3UgcmVhZCBhIHJvdXRlJ3MgZHluYW1pYyBwYXJhbXMgZmlsbGVkIGluIGJ5IHRoZSBjdXJyZW50IFVSTC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIFwidXNlIGNsaWVudFwiXG4gKiBpbXBvcnQgeyB1c2VQYXJhbXMgfSBmcm9tICduZXh0L25hdmlnYXRpb24nXG4gKlxuICogZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGFnZSgpIHtcbiAqICAgLy8gb24gL2Rhc2hib2FyZC9bdGVhbV0gd2hlcmUgcGF0aG5hbWUgaXMgL2Rhc2hib2FyZC9uZXh0anNcbiAqICAgY29uc3QgeyB0ZWFtIH0gPSB1c2VQYXJhbXMoKSAvLyB0ZWFtID09PSBcIm5leHRqc1wiXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBSZWFkIG1vcmU6IFtOZXh0LmpzIERvY3M6IGB1c2VQYXJhbXNgXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvdXNlLXBhcmFtcylcbiAqL1xuLy8gQ2xpZW50IGNvbXBvbmVudHMgQVBJXG5leHBvcnQgZnVuY3Rpb24gdXNlUGFyYW1zPFQgZXh0ZW5kcyBQYXJhbXMgPSBQYXJhbXM+KCk6IFQge1xuICB1c2VEeW5hbWljUm91dGVQYXJhbXM/LigndXNlUGFyYW1zKCknKVxuXG4gIGNvbnN0IHBhcmFtcyA9IHVzZUNvbnRleHQoUGF0aFBhcmFtc0NvbnRleHQpIGFzIFRcblxuICAvLyBEdXJpbmcgYnVpbGQtdGltZSBpbnN0YW50IHZhbGlkYXRpb24sIHdyYXAgd2l0aCBhIHByb3h5XG4gIC8vIHNvIHRoYXQgYWNjZXNzaW5nIHVuZGVjbGFyZWQgcGFyYW1zIHRocm93cyBhbiBlcnJvci5cbiAgaWYgKFxuICAgIHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnICYmXG4gICAgcHJvY2Vzcy5lbnYuX19ORVhUX0NBQ0hFX0NPTVBPTkVOVFMgJiZcbiAgICBwYXJhbXNcbiAgKSB7XG4gICAgcmV0dXJuIGluc3RydW1lbnRQYXJhbXNGb3JDbGllbnRWYWxpZGF0aW9uIShwYXJhbXMpXG4gIH1cblxuICAvLyBJbnN0cnVtZW50IHdpdGggU3VzcGVuc2UgRGV2VG9vbHMgKGRldi1vbmx5KVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAndXNlJyBpbiBSZWFjdCkge1xuICAgIGNvbnN0IG5hdmlnYXRpb25Qcm9taXNlcyA9IHVzZShOYXZpZ2F0aW9uUHJvbWlzZXNDb250ZXh0KVxuICAgIGlmIChuYXZpZ2F0aW9uUHJvbWlzZXMpIHtcbiAgICAgIHJldHVybiB1c2UobmF2aWdhdGlvblByb21pc2VzLnBhcmFtcykgYXMgVFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXJhbXNcbn1cblxuLyoqXG4gKiBBIFtDbGllbnQgQ29tcG9uZW50XShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvY2xpZW50LWNvbXBvbmVudHMpIGhvb2tcbiAqIHRoYXQgbGV0cyB5b3UgcmVhZCB0aGUgYWN0aXZlIHJvdXRlIHNlZ21lbnRzICoqYmVsb3cqKiB0aGUgTGF5b3V0IGl0IGlzIGNhbGxlZCBmcm9tLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogJ3VzZSBjbGllbnQnXG4gKlxuICogaW1wb3J0IHsgdXNlU2VsZWN0ZWRMYXlvdXRTZWdtZW50cyB9IGZyb20gJ25leHQvbmF2aWdhdGlvbidcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBFeGFtcGxlQ2xpZW50Q29tcG9uZW50KCkge1xuICogICBjb25zdCBzZWdtZW50cyA9IHVzZVNlbGVjdGVkTGF5b3V0U2VnbWVudHMoKVxuICpcbiAqICAgcmV0dXJuIChcbiAqICAgICA8dWw+XG4gKiAgICAgICB7c2VnbWVudHMubWFwKChzZWdtZW50LCBpbmRleCkgPT4gKFxuICogICAgICAgICA8bGkga2V5PXtpbmRleH0+e3NlZ21lbnR9PC9saT5cbiAqICAgICAgICkpfVxuICogICAgIDwvdWw+XG4gKiAgIClcbiAqIH1cbiAqIGBgYFxuICpcbiAqIFJlYWQgbW9yZTogW05leHQuanMgRG9jczogYHVzZVNlbGVjdGVkTGF5b3V0U2VnbWVudHNgXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvdXNlLXNlbGVjdGVkLWxheW91dC1zZWdtZW50cylcbiAqL1xuLy8gQ2xpZW50IGNvbXBvbmVudHMgQVBJXG5leHBvcnQgZnVuY3Rpb24gdXNlU2VsZWN0ZWRMYXlvdXRTZWdtZW50cyhcbiAgcGFyYWxsZWxSb3V0ZUtleTogc3RyaW5nID0gJ2NoaWxkcmVuJ1xuKTogc3RyaW5nW10ge1xuICB1c2VEeW5hbWljUm91dGVQYXJhbXM/LigndXNlU2VsZWN0ZWRMYXlvdXRTZWdtZW50cygpJylcblxuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChMYXlvdXRSb3V0ZXJDb250ZXh0KVxuICAvLyBAdHMtZXhwZWN0LWVycm9yIFRoaXMgb25seSBoYXBwZW5zIGluIGBwYWdlc2AuIFR5cGUgaXMgb3ZlcndyaXR0ZW4gaW4gbmF2aWdhdGlvbi5kLnRzXG4gIGlmICghY29udGV4dCkgcmV0dXJuIG51bGxcblxuICAvLyBEdXJpbmcgYnVpbGQtdGltZSBpbnN0YW50IHZhbGlkYXRpb24sIGVycm9yIGlmIGZhbGxiYWNrIHBhcmFtcyBleGlzdFxuICAvLyBiZWNhdXNlIHVzZVNlbGVjdGVkTGF5b3V0U2VnbWVudHMoKSBjYW4ndCByZXR1cm4gYSBzZW5zaWJsZSB2YWx1ZSB3aXRob3V0IGFsbCBwYXJhbXMuXG4gIGlmIChcbiAgICB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyAmJlxuICAgIHByb2Nlc3MuZW52Ll9fTkVYVF9DQUNIRV9DT01QT05FTlRTICYmXG4gICAgY29udGV4dFxuICApIHtcbiAgICBleHBlY3RDb21wbGV0ZVBhcmFtc0luQ2xpZW50VmFsaWRhdGlvbiEoJ3VzZVNlbGVjdGVkTGF5b3V0U2VnbWVudHMoKScpXG4gIH1cblxuICAvLyBJbnN0cnVtZW50IHdpdGggU3VzcGVuc2UgRGV2VG9vbHMgKGRldi1vbmx5KVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAndXNlJyBpbiBSZWFjdCkge1xuICAgIGNvbnN0IG5hdmlnYXRpb25Qcm9taXNlcyA9IHVzZShOYXZpZ2F0aW9uUHJvbWlzZXNDb250ZXh0KVxuICAgIGlmIChuYXZpZ2F0aW9uUHJvbWlzZXMpIHtcbiAgICAgIGNvbnN0IHByb21pc2UgPVxuICAgICAgICBuYXZpZ2F0aW9uUHJvbWlzZXMuc2VsZWN0ZWRMYXlvdXRTZWdtZW50c1Byb21pc2VzPy5nZXQocGFyYWxsZWxSb3V0ZUtleSlcbiAgICAgIGlmIChwcm9taXNlKSB7XG4gICAgICAgIC8vIFdlIHNob3VsZCBhbHdheXMgaGF2ZSBhIHByb21pc2UgaGVyZSwgYnV0IGlmIHdlIGRvbid0LCBpdCdzIG5vdCB3b3J0aCBlcnJvcmluZyBvdmVyLlxuICAgICAgICAvLyBXZSBqdXN0IHdvbid0IGJlIGFibGUgdG8gaW5zdHJ1bWVudCBpdCwgYnV0IGNhbiBzdGlsbCBwcm92aWRlIHRoZSB2YWx1ZS5cbiAgICAgICAgcmV0dXJuIHVzZShwcm9taXNlKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBnZXRTZWxlY3RlZExheW91dFNlZ21lbnRQYXRoKGNvbnRleHQucGFyZW50VHJlZSwgcGFyYWxsZWxSb3V0ZUtleSlcbn1cblxuLyoqXG4gKiBBIFtDbGllbnQgQ29tcG9uZW50XShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvY2xpZW50LWNvbXBvbmVudHMpIGhvb2tcbiAqIHRoYXQgbGV0cyB5b3UgcmVhZCB0aGUgYWN0aXZlIHJvdXRlIHNlZ21lbnQgKipvbmUgbGV2ZWwgYmVsb3cqKiB0aGUgTGF5b3V0IGl0IGlzIGNhbGxlZCBmcm9tLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogJ3VzZSBjbGllbnQnXG4gKiBpbXBvcnQgeyB1c2VTZWxlY3RlZExheW91dFNlZ21lbnQgfSBmcm9tICduZXh0L25hdmlnYXRpb24nXG4gKlxuICogZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRXhhbXBsZUNsaWVudENvbXBvbmVudCgpIHtcbiAqICAgY29uc3Qgc2VnbWVudCA9IHVzZVNlbGVjdGVkTGF5b3V0U2VnbWVudCgpXG4gKlxuICogICByZXR1cm4gPHA+QWN0aXZlIHNlZ21lbnQ6IHtzZWdtZW50fTwvcD5cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFJlYWQgbW9yZTogW05leHQuanMgRG9jczogYHVzZVNlbGVjdGVkTGF5b3V0U2VnbWVudGBdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy91c2Utc2VsZWN0ZWQtbGF5b3V0LXNlZ21lbnQpXG4gKi9cbi8vIENsaWVudCBjb21wb25lbnRzIEFQSVxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNlbGVjdGVkTGF5b3V0U2VnbWVudChcbiAgcGFyYWxsZWxSb3V0ZUtleTogc3RyaW5nID0gJ2NoaWxkcmVuJ1xuKTogc3RyaW5nIHwgbnVsbCB7XG4gIHVzZUR5bmFtaWNSb3V0ZVBhcmFtcz8uKCd1c2VTZWxlY3RlZExheW91dFNlZ21lbnQoKScpXG4gIGNvbnN0IG5hdmlnYXRpb25Qcm9taXNlcyA9IHVzZUNvbnRleHQoTmF2aWdhdGlvblByb21pc2VzQ29udGV4dClcbiAgY29uc3Qgc2VsZWN0ZWRMYXlvdXRTZWdtZW50cyA9IHVzZVNlbGVjdGVkTGF5b3V0U2VnbWVudHMocGFyYWxsZWxSb3V0ZUtleSlcblxuICAvLyBEdXJpbmcgYnVpbGQtdGltZSBpbnN0YW50IHZhbGlkYXRpb24sIGVycm9yIGlmIGZhbGxiYWNrIHBhcmFtcyBleGlzdFxuICAvLyBiZWNhdXNlIHVzZVNlbGVjdGVkTGF5b3V0U2VnbWVudCgpIGNhbid0IHJldHVybiBhIHNlbnNpYmxlIHZhbHVlIHdpdGhvdXQgYWxsIHBhcmFtcy5cbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MuZW52Ll9fTkVYVF9DQUNIRV9DT01QT05FTlRTKSB7XG4gICAgZXhwZWN0Q29tcGxldGVQYXJhbXNJbkNsaWVudFZhbGlkYXRpb24hKCd1c2VTZWxlY3RlZExheW91dFNlZ21lbnQoKScpXG4gIH1cblxuICAvLyBJbnN0cnVtZW50IHdpdGggU3VzcGVuc2UgRGV2VG9vbHMgKGRldi1vbmx5KVxuICBpZiAoXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgIG5hdmlnYXRpb25Qcm9taXNlcyAmJlxuICAgICd1c2UnIGluIFJlYWN0XG4gICkge1xuICAgIGNvbnN0IHByb21pc2UgPVxuICAgICAgbmF2aWdhdGlvblByb21pc2VzLnNlbGVjdGVkTGF5b3V0U2VnbWVudFByb21pc2VzPy5nZXQocGFyYWxsZWxSb3V0ZUtleSlcbiAgICBpZiAocHJvbWlzZSkge1xuICAgICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBoYXZlIGEgcHJvbWlzZSBoZXJlLCBidXQgaWYgd2UgZG9uJ3QsIGl0J3Mgbm90IHdvcnRoIGVycm9yaW5nIG92ZXIuXG4gICAgICAvLyBXZSBqdXN0IHdvbid0IGJlIGFibGUgdG8gaW5zdHJ1bWVudCBpdCwgYnV0IGNhbiBzdGlsbCBwcm92aWRlIHRoZSB2YWx1ZS5cbiAgICAgIHJldHVybiB1c2UocHJvbWlzZSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29tcHV0ZVNlbGVjdGVkTGF5b3V0U2VnbWVudChzZWxlY3RlZExheW91dFNlZ21lbnRzLCBwYXJhbGxlbFJvdXRlS2V5KVxufVxuXG5leHBvcnQgeyB1bnN0YWJsZV9pc1VucmVjb2duaXplZEFjdGlvbkVycm9yIH0gZnJvbSAnLi91bnJlY29nbml6ZWQtYWN0aW9uLWVycm9yJ1xuXG4vLyBTaGFyZWQgY29tcG9uZW50cyBBUElzXG5leHBvcnQge1xuICAvLyBXZSBuZWVkIHRoZSBzYW1lIGNsYXNzIHRoYXQgd2FzIHVzZWQgdG8gaW5zdGFudGlhdGUgdGhlIGNvbnRleHQgdmFsdWVcbiAgLy8gT3RoZXJ3aXNlIGluc3RhbmNlb2YgY2hlY2tzIHdpbGwgZmFpbCBpbiB1c2VyY29kZVxuICBSZWFkb25seVVSTFNlYXJjaFBhcmFtcyxcbn1cbmV4cG9ydCB7XG4gIG5vdEZvdW5kLFxuICBmb3JiaWRkZW4sXG4gIHVuYXV0aG9yaXplZCxcbiAgcmVkaXJlY3QsXG4gIHBlcm1hbmVudFJlZGlyZWN0LFxuICBSZWRpcmVjdFR5cGUsXG4gIHVuc3RhYmxlX3JldGhyb3csXG59IGZyb20gJy4vbmF2aWdhdGlvbi5yZWFjdC1zZXJ2ZXInXG4iXSwibmFtZXMiOlsiUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXMiLCJSZWRpcmVjdFR5cGUiLCJTZXJ2ZXJJbnNlcnRlZEhUTUxDb250ZXh0IiwiZm9yYmlkZGVuIiwibm90Rm91bmQiLCJwZXJtYW5lbnRSZWRpcmVjdCIsInJlZGlyZWN0IiwidW5hdXRob3JpemVkIiwidW5zdGFibGVfaXNVbnJlY29nbml6ZWRBY3Rpb25FcnJvciIsInVuc3RhYmxlX3JldGhyb3ciLCJ1c2VQYXJhbXMiLCJ1c2VQYXRobmFtZSIsInVzZVJvdXRlciIsInVzZVNlYXJjaFBhcmFtcyIsInVzZVNlbGVjdGVkTGF5b3V0U2VnbWVudCIsInVzZVNlbGVjdGVkTGF5b3V0U2VnbWVudHMiLCJ1c2VTZXJ2ZXJJbnNlcnRlZEhUTUwiLCJ1c2VEeW5hbWljUm91dGVQYXJhbXMiLCJ3aW5kb3ciLCJyZXF1aXJlIiwidW5kZWZpbmVkIiwidXNlRHluYW1pY1NlYXJjaFBhcmFtcyIsImluc3RydW1lbnRQYXJhbXNGb3JDbGllbnRWYWxpZGF0aW9uIiwiaW5zdHJ1bWVudFNlYXJjaFBhcmFtc0ZvckNsaWVudFZhbGlkYXRpb24iLCJleHBlY3RDb21wbGV0ZVBhcmFtc0luQ2xpZW50VmFsaWRhdGlvbiIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfQ0FDSEVfQ09NUE9ORU5UUyIsInNlYXJjaFBhcmFtcyIsInVzZUNvbnRleHQiLCJTZWFyY2hQYXJhbXNDb250ZXh0IiwicmVhZG9ubHlTZWFyY2hQYXJhbXMiLCJ1c2VNZW1vIiwiTk9ERV9FTlYiLCJSZWFjdCIsIm5hdmlnYXRpb25Qcm9taXNlcyIsInVzZSIsIk5hdmlnYXRpb25Qcm9taXNlc0NvbnRleHQiLCJwYXRobmFtZSIsIlBhdGhuYW1lQ29udGV4dCIsInJvdXRlciIsIkFwcFJvdXRlckNvbnRleHQiLCJFcnJvciIsInBhcmFtcyIsIlBhdGhQYXJhbXNDb250ZXh0IiwicGFyYWxsZWxSb3V0ZUtleSIsImNvbnRleHQiLCJMYXlvdXRSb3V0ZXJDb250ZXh0IiwicHJvbWlzZSIsInNlbGVjdGVkTGF5b3V0U2VnbWVudHNQcm9taXNlcyIsImdldCIsImdldFNlbGVjdGVkTGF5b3V0U2VnbWVudFBhdGgiLCJwYXJlbnRUcmVlIiwic2VsZWN0ZWRMYXlvdXRTZWdtZW50cyIsInNlbGVjdGVkTGF5b3V0U2VnbWVudFByb21pc2VzIiwiY29tcHV0ZVNlbGVjdGVkTGF5b3V0U2VnbWVudCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/navigation.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/navigation.react-server.js":
|
||
/*!*****************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/navigation.react-server.js ***!
|
||
\*****************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n ReadonlyURLSearchParams: function() {\n return _readonlyurlsearchparams.ReadonlyURLSearchParams;\n },\n RedirectType: function() {\n return RedirectType;\n },\n forbidden: function() {\n return _forbidden.forbidden;\n },\n notFound: function() {\n return _notfound.notFound;\n },\n permanentRedirect: function() {\n return _redirect.permanentRedirect;\n },\n redirect: function() {\n return _redirect.redirect;\n },\n unauthorized: function() {\n return _unauthorized.unauthorized;\n },\n unstable_isUnrecognizedActionError: function() {\n return unstable_isUnrecognizedActionError;\n },\n unstable_rethrow: function() {\n return _unstablerethrow.unstable_rethrow;\n }\n});\nconst _readonlyurlsearchparams = __webpack_require__(/*! ./readonly-url-search-params */ \"(ssr)/./node_modules/next/dist/client/components/readonly-url-search-params.js\");\nconst _redirect = __webpack_require__(/*! ./redirect */ \"(ssr)/./node_modules/next/dist/client/components/redirect.js\");\nconst _notfound = __webpack_require__(/*! ./not-found */ \"(ssr)/./node_modules/next/dist/client/components/not-found.js\");\nconst _forbidden = __webpack_require__(/*! ./forbidden */ \"(ssr)/./node_modules/next/dist/client/components/forbidden.js\");\nconst _unauthorized = __webpack_require__(/*! ./unauthorized */ \"(ssr)/./node_modules/next/dist/client/components/unauthorized.js\");\nconst _unstablerethrow = __webpack_require__(/*! ./unstable-rethrow */ \"(ssr)/./node_modules/next/dist/client/components/unstable-rethrow.js\");\nfunction unstable_isUnrecognizedActionError() {\n throw Object.defineProperty(new Error('`unstable_isUnrecognizedActionError` can only be used on the client.'), \"__NEXT_ERROR_CODE\", {\n value: \"E776\",\n enumerable: false,\n configurable: true\n });\n}\nconst RedirectType = {\n push: 'push',\n replace: 'replace'\n};\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=navigation.react-server.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25hdmlnYXRpb24ucmVhY3Qtc2VydmVyLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQWFTQSx1QkFBdUI7ZUFBdkJBLHlCQUFBQSx1QkFBdUI7O0lBRW5CQyxZQUFZO2VBQVpBOztJQUxKQyxTQUFTO2VBQVRBLFdBQUFBLFNBQVM7O0lBRFRDLFFBQVE7ZUFBUkEsVUFBQUEsUUFBUTs7SUFERUMsaUJBQWlCO2VBQWpCQSxVQUFBQSxpQkFBaUI7O0lBQTNCQyxRQUFRO2VBQVJBLFVBQUFBLFFBQVE7O0lBR1JDLFlBQVk7ZUFBWkEsY0FBQUEsWUFBWTs7SUFUTEMsa0NBQWtDO2VBQWxDQTs7SUFVUEMsZ0JBQWdCO2VBQWhCQSxpQkFBQUEsZ0JBQWdCOzs7cURBWmU7c0NBUUk7c0NBQ25CO3VDQUNDOzBDQUNHOzZDQUNJO0FBVjFCLFNBQVNEO0lBQ2QsTUFBTSxxQkFFTCxDQUZLLElBQUlFLE1BQ1IseUVBREk7ZUFBQTtvQkFBQTtzQkFBQTtJQUVOO0FBQ0Y7QUFTTyxNQUFNUixlQUFlO0lBQzFCUyxNQUFNO0lBQ05DLFNBQVM7QUFDWCIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9jbGllbnQvY29tcG9uZW50cy9uYXZpZ2F0aW9uLnJlYWN0LXNlcnZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWFkb25seVVSTFNlYXJjaFBhcmFtcyB9IGZyb20gJy4vcmVhZG9ubHktdXJsLXNlYXJjaC1wYXJhbXMnXG5cbmV4cG9ydCBmdW5jdGlvbiB1bnN0YWJsZV9pc1VucmVjb2duaXplZEFjdGlvbkVycm9yKCk6IGJvb2xlYW4ge1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgJ2B1bnN0YWJsZV9pc1VucmVjb2duaXplZEFjdGlvbkVycm9yYCBjYW4gb25seSBiZSB1c2VkIG9uIHRoZSBjbGllbnQuJ1xuICApXG59XG5cbmV4cG9ydCB7IHJlZGlyZWN0LCBwZXJtYW5lbnRSZWRpcmVjdCB9IGZyb20gJy4vcmVkaXJlY3QnXG5leHBvcnQgeyBub3RGb3VuZCB9IGZyb20gJy4vbm90LWZvdW5kJ1xuZXhwb3J0IHsgZm9yYmlkZGVuIH0gZnJvbSAnLi9mb3JiaWRkZW4nXG5leHBvcnQgeyB1bmF1dGhvcml6ZWQgfSBmcm9tICcuL3VuYXV0aG9yaXplZCdcbmV4cG9ydCB7IHVuc3RhYmxlX3JldGhyb3cgfSBmcm9tICcuL3Vuc3RhYmxlLXJldGhyb3cnXG5leHBvcnQgeyBSZWFkb25seVVSTFNlYXJjaFBhcmFtcyB9XG5cbmV4cG9ydCBjb25zdCBSZWRpcmVjdFR5cGUgPSB7XG4gIHB1c2g6ICdwdXNoJyxcbiAgcmVwbGFjZTogJ3JlcGxhY2UnLFxufSBhcyBjb25zdFxuIl0sIm5hbWVzIjpbIlJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zIiwiUmVkaXJlY3RUeXBlIiwiZm9yYmlkZGVuIiwibm90Rm91bmQiLCJwZXJtYW5lbnRSZWRpcmVjdCIsInJlZGlyZWN0IiwidW5hdXRob3JpemVkIiwidW5zdGFibGVfaXNVbnJlY29nbml6ZWRBY3Rpb25FcnJvciIsInVuc3RhYmxlX3JldGhyb3ciLCJFcnJvciIsInB1c2giLCJyZXBsYWNlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/navigation.react-server.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/not-found.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/not-found.js ***!
|
||
\***************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"notFound\", ({\n enumerable: true,\n get: function() {\n return notFound;\n }\n}));\nconst _httpaccessfallback = __webpack_require__(/*! ./http-access-fallback/http-access-fallback */ \"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\");\n/**\n * This function allows you to render the [not-found.js file](https://nextjs.org/docs/app/api-reference/file-conventions/not-found)\n * within a route segment as well as inject a tag.\n *\n * `notFound()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * - In a Server Component, this will insert a `<meta name=\"robots\" content=\"noindex\" />` meta tag and set the status code to 404.\n * - In a Route Handler or Server Action, it will serve a 404 to the caller.\n *\n * Read more: [Next.js Docs: `notFound`](https://nextjs.org/docs/app/api-reference/functions/not-found)\n */ const DIGEST = `${_httpaccessfallback.HTTP_ERROR_FALLBACK_ERROR_CODE};404`;\nfunction notFound() {\n const error = Object.defineProperty(new Error(DIGEST), \"__NEXT_ERROR_CODE\", {\n value: \"E1041\",\n enumerable: false,\n configurable: true\n });\n error.digest = DIGEST;\n throw error;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=not-found.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC5qcyIsIm1hcHBpbmdzIjoiOzs7OzRDQXNCZ0JBOzs7ZUFBQUE7OztnREFuQlQ7QUFFUDs7Ozs7Ozs7Ozs7OztDQWFDLEdBRUQsTUFBTUMsU0FBUyxHQUFHQyxvQkFBQUEsOEJBQThCLENBQUMsSUFBSSxDQUFDO0FBRS9DLFNBQVNGO0lBQ2QsTUFBTUcsUUFBUSxxQkFBaUIsQ0FBakIsSUFBSUMsTUFBTUgsU0FBVjtlQUFBO29CQUFBO3NCQUFBO0lBQWdCO0lBQzVCRSxNQUFrQ0UsTUFBTSxHQUFHSjtJQUU3QyxNQUFNRTtBQUNSIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBIVFRQX0VSUk9SX0ZBTExCQUNLX0VSUk9SX0NPREUsXG4gIHR5cGUgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3IsXG59IGZyb20gJy4vaHR0cC1hY2Nlc3MtZmFsbGJhY2svaHR0cC1hY2Nlc3MtZmFsbGJhY2snXG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIHJlbmRlciB0aGUgW25vdC1mb3VuZC5qcyBmaWxlXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9maWxlLWNvbnZlbnRpb25zL25vdC1mb3VuZClcbiAqIHdpdGhpbiBhIHJvdXRlIHNlZ21lbnQgYXMgd2VsbCBhcyBpbmplY3QgYSB0YWcuXG4gKlxuICogYG5vdEZvdW5kKClgIGNhbiBiZSB1c2VkIGluXG4gKiBbU2VydmVyIENvbXBvbmVudHNdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JlbmRlcmluZy9zZXJ2ZXItY29tcG9uZW50cyksXG4gKiBbUm91dGUgSGFuZGxlcnNdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JvdXRpbmcvcm91dGUtaGFuZGxlcnMpLCBhbmRcbiAqIFtTZXJ2ZXIgQWN0aW9uc10oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vZGF0YS1mZXRjaGluZy9zZXJ2ZXItYWN0aW9ucy1hbmQtbXV0YXRpb25zKS5cbiAqXG4gKiAtIEluIGEgU2VydmVyIENvbXBvbmVudCwgdGhpcyB3aWxsIGluc2VydCBhIGA8bWV0YSBuYW1lPVwicm9ib3RzXCIgY29udGVudD1cIm5vaW5kZXhcIiAvPmAgbWV0YSB0YWcgYW5kIHNldCB0aGUgc3RhdHVzIGNvZGUgdG8gNDA0LlxuICogLSBJbiBhIFJvdXRlIEhhbmRsZXIgb3IgU2VydmVyIEFjdGlvbiwgaXQgd2lsbCBzZXJ2ZSBhIDQwNCB0byB0aGUgY2FsbGVyLlxuICpcbiAqIFJlYWQgbW9yZTogW05leHQuanMgRG9jczogYG5vdEZvdW5kYF0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL25vdC1mb3VuZClcbiAqL1xuXG5jb25zdCBESUdFU1QgPSBgJHtIVFRQX0VSUk9SX0ZBTExCQUNLX0VSUk9SX0NPREV9OzQwNGBcblxuZXhwb3J0IGZ1bmN0aW9uIG5vdEZvdW5kKCk6IG5ldmVyIHtcbiAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoRElHRVNUKSBhcyBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvclxuICA7KGVycm9yIGFzIEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yKS5kaWdlc3QgPSBESUdFU1RcblxuICB0aHJvdyBlcnJvclxufVxuIl0sIm5hbWVzIjpbIm5vdEZvdW5kIiwiRElHRVNUIiwiSFRUUF9FUlJPUl9GQUxMQkFDS19FUlJPUl9DT0RFIiwiZXJyb3IiLCJFcnJvciIsImRpZ2VzdCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/not-found.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/readonly-url-search-params.js":
|
||
/*!********************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/readonly-url-search-params.js ***!
|
||
\********************************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * ReadonlyURLSearchParams implementation shared between client and server.\n * This file is intentionally not marked as 'use client' or 'use server'\n * so it can be imported by both environments.\n */ /** @internal */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"ReadonlyURLSearchParams\", ({\n enumerable: true,\n get: function() {\n return ReadonlyURLSearchParams;\n }\n}));\nclass ReadonlyURLSearchParamsError extends Error {\n constructor(){\n super('Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams');\n }\n}\nclass ReadonlyURLSearchParams extends URLSearchParams {\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */ append() {\n throw new ReadonlyURLSearchParamsError();\n }\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */ delete() {\n throw new ReadonlyURLSearchParamsError();\n }\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */ set() {\n throw new ReadonlyURLSearchParamsError();\n }\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */ sort() {\n throw new ReadonlyURLSearchParamsError();\n }\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=readonly-url-search-params.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JlYWRvbmx5LXVybC1zZWFyY2gtcGFyYW1zLmpzIiwibWFwcGluZ3MiOiJBQUFBOzs7O0NBSUMsR0FFRCxjQUFjOzs7OzJEQWFEQTs7O2VBQUFBOzs7QUFaYixNQUFNQyxxQ0FBcUNDO0lBQ3pDQyxhQUFjO1FBQ1osS0FBSyxDQUNIO0lBRUo7QUFDRjtBQU1PLE1BQU1ILGdDQUFnQ0k7SUFDM0Msd0tBQXdLLEdBQ3hLQyxTQUFTO1FBQ1AsTUFBTSxJQUFJSjtJQUNaO0lBQ0Esd0tBQXdLLEdBQ3hLSyxTQUFTO1FBQ1AsTUFBTSxJQUFJTDtJQUNaO0lBQ0Esd0tBQXdLLEdBQ3hLTSxNQUFNO1FBQ0osTUFBTSxJQUFJTjtJQUNaO0lBQ0Esd0tBQXdLLEdBQ3hLTyxPQUFPO1FBQ0wsTUFBTSxJQUFJUDtJQUNaO0FBQ0YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9zcmMvY2xpZW50L2NvbXBvbmVudHMvcmVhZG9ubHktdXJsLXNlYXJjaC1wYXJhbXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZWFkb25seVVSTFNlYXJjaFBhcmFtcyBpbXBsZW1lbnRhdGlvbiBzaGFyZWQgYmV0d2VlbiBjbGllbnQgYW5kIHNlcnZlci5cbiAqIFRoaXMgZmlsZSBpcyBpbnRlbnRpb25hbGx5IG5vdCBtYXJrZWQgYXMgJ3VzZSBjbGllbnQnIG9yICd1c2Ugc2VydmVyJ1xuICogc28gaXQgY2FuIGJlIGltcG9ydGVkIGJ5IGJvdGggZW52aXJvbm1lbnRzLlxuICovXG5cbi8qKiBAaW50ZXJuYWwgKi9cbmNsYXNzIFJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFxuICAgICAgJ01ldGhvZCB1bmF2YWlsYWJsZSBvbiBgUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXNgLiBSZWFkIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy91c2Utc2VhcmNoLXBhcmFtcyN1cGRhdGluZy1zZWFyY2hwYXJhbXMnXG4gICAgKVxuICB9XG59XG5cbi8qKlxuICogQSByZWFkLW9ubHkgdmVyc2lvbiBvZiBVUkxTZWFyY2hQYXJhbXMgdGhhdCB0aHJvd3MgZXJyb3JzIHdoZW4gbXV0YXRpb24gbWV0aG9kcyBhcmUgY2FsbGVkLlxuICogVGhpcyBlbnN1cmVzIHRoYXQgdGhlIFVSTFNlYXJjaFBhcmFtcyByZXR1cm5lZCBieSB1c2VTZWFyY2hQYXJhbXMoKSBjYW5ub3QgYmUgbXV0YXRlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zIGV4dGVuZHMgVVJMU2VhcmNoUGFyYW1zIHtcbiAgLyoqIEBkZXByZWNhdGVkIE1ldGhvZCB1bmF2YWlsYWJsZSBvbiBgUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXNgLiBSZWFkIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy91c2Utc2VhcmNoLXBhcmFtcyN1cGRhdGluZy1zZWFyY2hwYXJhbXMgKi9cbiAgYXBwZW5kKCkge1xuICAgIHRocm93IG5ldyBSZWFkb25seVVSTFNlYXJjaFBhcmFtc0Vycm9yKClcbiAgfVxuICAvKiogQGRlcHJlY2F0ZWQgTWV0aG9kIHVuYXZhaWxhYmxlIG9uIGBSZWFkb25seVVSTFNlYXJjaFBhcmFtc2AuIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL3VzZS1zZWFyY2gtcGFyYW1zI3VwZGF0aW5nLXNlYXJjaHBhcmFtcyAqL1xuICBkZWxldGUoKSB7XG4gICAgdGhyb3cgbmV3IFJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zRXJyb3IoKVxuICB9XG4gIC8qKiBAZGVwcmVjYXRlZCBNZXRob2QgdW5hdmFpbGFibGUgb24gYFJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zYC4gUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvdXNlLXNlYXJjaC1wYXJhbXMjdXBkYXRpbmctc2VhcmNocGFyYW1zICovXG4gIHNldCgpIHtcbiAgICB0aHJvdyBuZXcgUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXNFcnJvcigpXG4gIH1cbiAgLyoqIEBkZXByZWNhdGVkIE1ldGhvZCB1bmF2YWlsYWJsZSBvbiBgUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXNgLiBSZWFkIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy91c2Utc2VhcmNoLXBhcmFtcyN1cGRhdGluZy1zZWFyY2hwYXJhbXMgKi9cbiAgc29ydCgpIHtcbiAgICB0aHJvdyBuZXcgUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXNFcnJvcigpXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJSZWFkb25seVVSTFNlYXJjaFBhcmFtcyIsIlJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zRXJyb3IiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwiVVJMU2VhcmNoUGFyYW1zIiwiYXBwZW5kIiwiZGVsZXRlIiwic2V0Iiwic29ydCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/readonly-url-search-params.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/redirect-boundary.js":
|
||
/*!***********************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/redirect-boundary.js ***!
|
||
\***********************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n RedirectBoundary: function() {\n return RedirectBoundary;\n },\n RedirectErrorBoundary: function() {\n return RedirectErrorBoundary;\n }\n});\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\"));\nconst _navigation = __webpack_require__(/*! ./navigation */ \"(ssr)/./node_modules/next/dist/client/components/navigation.js\");\nconst _redirect = __webpack_require__(/*! ./redirect */ \"(ssr)/./node_modules/next/dist/client/components/redirect.js\");\nconst _redirecterror = __webpack_require__(/*! ./redirect-error */ \"(ssr)/./node_modules/next/dist/client/components/redirect-error.js\");\nfunction HandleRedirect({ redirect, reset, redirectType }) {\n const router = (0, _navigation.useRouter)();\n (0, _react.useEffect)(()=>{\n _react.default.startTransition(()=>{\n if (redirectType === 'push') {\n router.push(redirect, {});\n } else {\n router.replace(redirect, {});\n }\n reset();\n });\n }, [\n redirect,\n redirectType,\n reset,\n router\n ]);\n return null;\n}\nclass RedirectErrorBoundary extends _react.default.Component {\n constructor(props){\n super(props);\n this.state = {\n redirect: null,\n redirectType: null\n };\n }\n static getDerivedStateFromError(error) {\n if ((0, _redirecterror.isRedirectError)(error)) {\n const url = (0, _redirect.getURLFromRedirectError)(error);\n const redirectType = (0, _redirect.getRedirectTypeFromError)(error);\n if ('handled' in error) {\n // The redirect was already handled. We'll still catch the redirect error\n // so that we can remount the subtree, but we don't actually need to trigger the\n // router.push.\n return {\n redirect: null,\n redirectType: null\n };\n }\n return {\n redirect: url,\n redirectType\n };\n }\n // Re-throw if error is not for redirect\n throw error;\n }\n // Explicit type is needed to avoid the generated `.d.ts` having a wide return type that could be specific to the `@types/react` version.\n render() {\n const { redirect, redirectType } = this.state;\n if (redirect !== null && redirectType !== null) {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(HandleRedirect, {\n redirect: redirect,\n redirectType: redirectType,\n reset: ()=>this.setState({\n redirect: null\n })\n });\n }\n return this.props.children;\n }\n}\nfunction RedirectBoundary({ children }) {\n const router = (0, _navigation.useRouter)();\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(RedirectErrorBoundary, {\n router: router,\n children: children\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=redirect-boundary.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JlZGlyZWN0LWJvdW5kYXJ5LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQWdGZ0JBLGdCQUFnQjtlQUFoQkE7O0lBM0NIQyxxQkFBcUI7ZUFBckJBOzs7Ozs2RUFwQ29CO3dDQUVQO3NDQUN3QzsyQ0FDZjtBQU9uRCxTQUFTQyxlQUFlLEVBQ3RCQyxRQUFRLEVBQ1JDLEtBQUssRUFDTEMsWUFBWSxFQUtiO0lBQ0MsTUFBTUMsU0FBU0MsQ0FBQUEsR0FBQUEsWUFBQUEsU0FBQUE7SUFFZkMsQ0FBQUEsR0FBQUEsT0FBQUEsU0FBQUEsRUFBVTtRQUNSQyxPQUFBQSxPQUFLLENBQUNDLGVBQWUsQ0FBQztZQUNwQixJQUFJTCxpQkFBaUIsUUFBUTtnQkFDM0JDLE9BQU9LLElBQUksQ0FBQ1IsVUFBVSxDQUFDO1lBQ3pCLE9BQU87Z0JBQ0xHLE9BQU9NLE9BQU8sQ0FBQ1QsVUFBVSxDQUFDO1lBQzVCO1lBQ0FDO1FBQ0Y7SUFDRixHQUFHO1FBQUNEO1FBQVVFO1FBQWNEO1FBQU9FO0tBQU87SUFFMUMsT0FBTztBQUNUO0FBRU8sTUFBTUwsOEJBQThCUSxPQUFBQSxPQUFLLENBQUNJLFNBQVM7SUFJeERDLFlBQVlDLEtBQTRCLENBQUU7UUFDeEMsS0FBSyxDQUFDQTtRQUNOLElBQUksQ0FBQ0MsS0FBSyxHQUFHO1lBQUViLFVBQVU7WUFBTUUsY0FBYztRQUFLO0lBQ3BEO0lBRUEsT0FBT1kseUJBQXlCQyxLQUFVLEVBQUU7UUFDMUMsSUFBSUMsQ0FBQUEsR0FBQUEsZUFBQUEsZUFBQUEsRUFBZ0JELFFBQVE7WUFDMUIsTUFBTUUsTUFBTUMsQ0FBQUEsR0FBQUEsVUFBQUEsdUJBQUFBLEVBQXdCSDtZQUNwQyxNQUFNYixlQUFlaUIsQ0FBQUEsR0FBQUEsVUFBQUEsd0JBQUFBLEVBQXlCSjtZQUM5QyxJQUFJLGFBQWFBLE9BQU87Z0JBQ3RCLHlFQUF5RTtnQkFDekUsZ0ZBQWdGO2dCQUNoRixlQUFlO2dCQUNmLE9BQU87b0JBQUVmLFVBQVU7b0JBQU1FLGNBQWM7Z0JBQUs7WUFDOUM7WUFFQSxPQUFPO2dCQUFFRixVQUFVaUI7Z0JBQUtmO1lBQWE7UUFDdkM7UUFDQSx3Q0FBd0M7UUFDeEMsTUFBTWE7SUFDUjtJQUVBLHlJQUF5STtJQUN6SUssU0FBMEI7UUFDeEIsTUFBTSxFQUFFcEIsUUFBUSxFQUFFRSxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUNXLEtBQUs7UUFDN0MsSUFBSWIsYUFBYSxRQUFRRSxpQkFBaUIsTUFBTTtZQUM5QyxxQkFDRSxxQkFBQ0gsZ0JBQUFBO2dCQUNDQyxVQUFVQTtnQkFDVkUsY0FBY0E7Z0JBQ2RELE9BQU8sSUFBTSxJQUFJLENBQUNvQixRQUFRLENBQUM7d0JBQUVyQixVQUFVO29CQUFLOztRQUdsRDtRQUVBLE9BQU8sSUFBSSxDQUFDWSxLQUFLLENBQUNVLFFBQVE7SUFDNUI7QUFDRjtBQUVPLFNBQVN6QixpQkFBaUIsRUFBRXlCLFFBQVEsRUFBaUM7SUFDMUUsTUFBTW5CLFNBQVNDLENBQUFBLEdBQUFBLFlBQUFBLFNBQUFBO0lBQ2YscUJBQ0UscUJBQUNOLHVCQUFBQTtRQUFzQkssUUFBUUE7a0JBQVNtQjs7QUFFNUMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9zcmMvY2xpZW50L2NvbXBvbmVudHMvcmVkaXJlY3QtYm91bmRhcnkudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHR5cGUgeyBBcHBSb3V0ZXJJbnN0YW5jZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHsgdXNlUm91dGVyIH0gZnJvbSAnLi9uYXZpZ2F0aW9uJ1xuaW1wb3J0IHsgZ2V0UmVkaXJlY3RUeXBlRnJvbUVycm9yLCBnZXRVUkxGcm9tUmVkaXJlY3RFcnJvciB9IGZyb20gJy4vcmVkaXJlY3QnXG5pbXBvcnQgeyB0eXBlIFJlZGlyZWN0VHlwZSwgaXNSZWRpcmVjdEVycm9yIH0gZnJvbSAnLi9yZWRpcmVjdC1lcnJvcidcblxuaW50ZXJmYWNlIFJlZGlyZWN0Qm91bmRhcnlQcm9wcyB7XG4gIHJvdXRlcjogQXBwUm91dGVySW5zdGFuY2VcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZVxufVxuXG5mdW5jdGlvbiBIYW5kbGVSZWRpcmVjdCh7XG4gIHJlZGlyZWN0LFxuICByZXNldCxcbiAgcmVkaXJlY3RUeXBlLFxufToge1xuICByZWRpcmVjdDogc3RyaW5nXG4gIHJlZGlyZWN0VHlwZTogUmVkaXJlY3RUeXBlXG4gIHJlc2V0OiAoKSA9PiB2b2lkXG59KSB7XG4gIGNvbnN0IHJvdXRlciA9IHVzZVJvdXRlcigpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBSZWFjdC5zdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgaWYgKHJlZGlyZWN0VHlwZSA9PT0gJ3B1c2gnKSB7XG4gICAgICAgIHJvdXRlci5wdXNoKHJlZGlyZWN0LCB7fSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJvdXRlci5yZXBsYWNlKHJlZGlyZWN0LCB7fSlcbiAgICAgIH1cbiAgICAgIHJlc2V0KClcbiAgICB9KVxuICB9LCBbcmVkaXJlY3QsIHJlZGlyZWN0VHlwZSwgcmVzZXQsIHJvdXRlcl0pXG5cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGNsYXNzIFJlZGlyZWN0RXJyb3JCb3VuZGFyeSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxcbiAgUmVkaXJlY3RCb3VuZGFyeVByb3BzLFxuICB7IHJlZGlyZWN0OiBzdHJpbmcgfCBudWxsOyByZWRpcmVjdFR5cGU6IFJlZGlyZWN0VHlwZSB8IG51bGwgfVxuPiB7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBSZWRpcmVjdEJvdW5kYXJ5UHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcylcbiAgICB0aGlzLnN0YXRlID0geyByZWRpcmVjdDogbnVsbCwgcmVkaXJlY3RUeXBlOiBudWxsIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IoZXJyb3I6IGFueSkge1xuICAgIGlmIChpc1JlZGlyZWN0RXJyb3IoZXJyb3IpKSB7XG4gICAgICBjb25zdCB1cmwgPSBnZXRVUkxGcm9tUmVkaXJlY3RFcnJvcihlcnJvcilcbiAgICAgIGNvbnN0IHJlZGlyZWN0VHlwZSA9IGdldFJlZGlyZWN0VHlwZUZyb21FcnJvcihlcnJvcilcbiAgICAgIGlmICgnaGFuZGxlZCcgaW4gZXJyb3IpIHtcbiAgICAgICAgLy8gVGhlIHJlZGlyZWN0IHdhcyBhbHJlYWR5IGhhbmRsZWQuIFdlJ2xsIHN0aWxsIGNhdGNoIHRoZSByZWRpcmVjdCBlcnJvclxuICAgICAgICAvLyBzbyB0aGF0IHdlIGNhbiByZW1vdW50IHRoZSBzdWJ0cmVlLCBidXQgd2UgZG9uJ3QgYWN0dWFsbHkgbmVlZCB0byB0cmlnZ2VyIHRoZVxuICAgICAgICAvLyByb3V0ZXIucHVzaC5cbiAgICAgICAgcmV0dXJuIHsgcmVkaXJlY3Q6IG51bGwsIHJlZGlyZWN0VHlwZTogbnVsbCB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IHJlZGlyZWN0OiB1cmwsIHJlZGlyZWN0VHlwZSB9XG4gICAgfVxuICAgIC8vIFJlLXRocm93IGlmIGVycm9yIGlzIG5vdCBmb3IgcmVkaXJlY3RcbiAgICB0aHJvdyBlcnJvclxuICB9XG5cbiAgLy8gRXhwbGljaXQgdHlwZSBpcyBuZWVkZWQgdG8gYXZvaWQgdGhlIGdlbmVyYXRlZCBgLmQudHNgIGhhdmluZyBhIHdpZGUgcmV0dXJuIHR5cGUgdGhhdCBjb3VsZCBiZSBzcGVjaWZpYyB0byB0aGUgYEB0eXBlcy9yZWFjdGAgdmVyc2lvbi5cbiAgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gICAgY29uc3QgeyByZWRpcmVjdCwgcmVkaXJlY3RUeXBlIH0gPSB0aGlzLnN0YXRlXG4gICAgaWYgKHJlZGlyZWN0ICE9PSBudWxsICYmIHJlZGlyZWN0VHlwZSAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEhhbmRsZVJlZGlyZWN0XG4gICAgICAgICAgcmVkaXJlY3Q9e3JlZGlyZWN0fVxuICAgICAgICAgIHJlZGlyZWN0VHlwZT17cmVkaXJlY3RUeXBlfVxuICAgICAgICAgIHJlc2V0PXsoKSA9PiB0aGlzLnNldFN0YXRlKHsgcmVkaXJlY3Q6IG51bGwgfSl9XG4gICAgICAgIC8+XG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW5cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVkaXJlY3RCb3VuZGFyeSh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9KSB7XG4gIGNvbnN0IHJvdXRlciA9IHVzZVJvdXRlcigpXG4gIHJldHVybiAoXG4gICAgPFJlZGlyZWN0RXJyb3JCb3VuZGFyeSByb3V0ZXI9e3JvdXRlcn0+e2NoaWxkcmVufTwvUmVkaXJlY3RFcnJvckJvdW5kYXJ5PlxuICApXG59XG4iXSwibmFtZXMiOlsiUmVkaXJlY3RCb3VuZGFyeSIsIlJlZGlyZWN0RXJyb3JCb3VuZGFyeSIsIkhhbmRsZVJlZGlyZWN0IiwicmVkaXJlY3QiLCJyZXNldCIsInJlZGlyZWN0VHlwZSIsInJvdXRlciIsInVzZVJvdXRlciIsInVzZUVmZmVjdCIsIlJlYWN0Iiwic3RhcnRUcmFuc2l0aW9uIiwicHVzaCIsInJlcGxhY2UiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IiLCJlcnJvciIsImlzUmVkaXJlY3RFcnJvciIsInVybCIsImdldFVSTEZyb21SZWRpcmVjdEVycm9yIiwiZ2V0UmVkaXJlY3RUeXBlRnJvbUVycm9yIiwicmVuZGVyIiwic2V0U3RhdGUiLCJjaGlsZHJlbiJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/redirect-boundary.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/redirect-error.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/redirect-error.js ***!
|
||
\********************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n REDIRECT_ERROR_CODE: function() {\n return REDIRECT_ERROR_CODE;\n },\n isRedirectError: function() {\n return isRedirectError;\n }\n});\nconst _redirectstatuscode = __webpack_require__(/*! ./redirect-status-code */ \"(ssr)/./node_modules/next/dist/client/components/redirect-status-code.js\");\nconst REDIRECT_ERROR_CODE = 'NEXT_REDIRECT';\nfunction isRedirectError(error) {\n if (typeof error !== 'object' || error === null || !('digest' in error) || typeof error.digest !== 'string') {\n return false;\n }\n const digest = error.digest.split(';');\n const [errorCode, type] = digest;\n const destination = digest.slice(2, -2).join(';');\n const status = digest.at(-2);\n const statusCode = Number(status);\n return errorCode === REDIRECT_ERROR_CODE && (type === 'replace' || type === 'push') && typeof destination === 'string' && !isNaN(statusCode) && statusCode in _redirectstatuscode.RedirectStatusCode;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=redirect-error.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JlZGlyZWN0LWVycm9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUVhQSxtQkFBbUI7ZUFBbkJBOztJQWVHQyxlQUFlO2VBQWZBOzs7Z0RBakJtQjtBQUU1QixNQUFNRCxzQkFBc0I7QUFlNUIsU0FBU0MsZ0JBQWdCQyxLQUFjO0lBQzVDLElBQ0UsT0FBT0EsVUFBVSxZQUNqQkEsVUFBVSxRQUNWLENBQUUsYUFBWUEsS0FBQUEsQ0FBSSxJQUNsQixPQUFPQSxNQUFNQyxNQUFNLEtBQUssVUFDeEI7UUFDQSxPQUFPO0lBQ1Q7SUFFQSxNQUFNQSxTQUFTRCxNQUFNQyxNQUFNLENBQUNDLEtBQUssQ0FBQztJQUNsQyxNQUFNLENBQUNDLFdBQVdDLEtBQUssR0FBR0g7SUFDMUIsTUFBTUksY0FBY0osT0FBT0ssS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHQyxJQUFJLENBQUM7SUFDN0MsTUFBTUMsU0FBU1AsT0FBT1EsRUFBRSxDQUFDLENBQUM7SUFFMUIsTUFBTUMsYUFBYUMsT0FBT0g7SUFFMUIsT0FDRUwsY0FBY0wsdUJBQ2JNLENBQUFBLFNBQVMsYUFBYUEsU0FBUyxPQUFLLElBQ3JDLE9BQU9DLGdCQUFnQixZQUN2QixDQUFDTyxNQUFNRixlQUNQQSxjQUFjRyxvQkFBQUEsa0JBQWtCO0FBRXBDIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL2NsaWVudC9jb21wb25lbnRzL3JlZGlyZWN0LWVycm9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlZGlyZWN0U3RhdHVzQ29kZSB9IGZyb20gJy4vcmVkaXJlY3Qtc3RhdHVzLWNvZGUnXG5cbmV4cG9ydCBjb25zdCBSRURJUkVDVF9FUlJPUl9DT0RFID0gJ05FWFRfUkVESVJFQ1QnXG5cbmV4cG9ydCB0eXBlIFJlZGlyZWN0VHlwZSA9ICdwdXNoJyB8ICdyZXBsYWNlJ1xuXG5leHBvcnQgdHlwZSBSZWRpcmVjdEVycm9yID0gRXJyb3IgJiB7XG4gIGRpZ2VzdDogYCR7dHlwZW9mIFJFRElSRUNUX0VSUk9SX0NPREV9OyR7UmVkaXJlY3RUeXBlfTske3N0cmluZ307JHtSZWRpcmVjdFN0YXR1c0NvZGV9O2Bcbn1cblxuLyoqXG4gKiBDaGVja3MgYW4gZXJyb3IgdG8gZGV0ZXJtaW5lIGlmIGl0J3MgYW4gZXJyb3IgZ2VuZXJhdGVkIGJ5IHRoZVxuICogYHJlZGlyZWN0KHVybClgIGhlbHBlci5cbiAqXG4gKiBAcGFyYW0gZXJyb3IgdGhlIGVycm9yIHRoYXQgbWF5IHJlZmVyZW5jZSBhIHJlZGlyZWN0IGVycm9yXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBlcnJvciBpcyBhIHJlZGlyZWN0IGVycm9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1JlZGlyZWN0RXJyb3IoZXJyb3I6IHVua25vd24pOiBlcnJvciBpcyBSZWRpcmVjdEVycm9yIHtcbiAgaWYgKFxuICAgIHR5cGVvZiBlcnJvciAhPT0gJ29iamVjdCcgfHxcbiAgICBlcnJvciA9PT0gbnVsbCB8fFxuICAgICEoJ2RpZ2VzdCcgaW4gZXJyb3IpIHx8XG4gICAgdHlwZW9mIGVycm9yLmRpZ2VzdCAhPT0gJ3N0cmluZydcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBjb25zdCBkaWdlc3QgPSBlcnJvci5kaWdlc3Quc3BsaXQoJzsnKVxuICBjb25zdCBbZXJyb3JDb2RlLCB0eXBlXSA9IGRpZ2VzdFxuICBjb25zdCBkZXN0aW5hdGlvbiA9IGRpZ2VzdC5zbGljZSgyLCAtMikuam9pbignOycpXG4gIGNvbnN0IHN0YXR1cyA9IGRpZ2VzdC5hdCgtMilcblxuICBjb25zdCBzdGF0dXNDb2RlID0gTnVtYmVyKHN0YXR1cylcblxuICByZXR1cm4gKFxuICAgIGVycm9yQ29kZSA9PT0gUkVESVJFQ1RfRVJST1JfQ09ERSAmJlxuICAgICh0eXBlID09PSAncmVwbGFjZScgfHwgdHlwZSA9PT0gJ3B1c2gnKSAmJlxuICAgIHR5cGVvZiBkZXN0aW5hdGlvbiA9PT0gJ3N0cmluZycgJiZcbiAgICAhaXNOYU4oc3RhdHVzQ29kZSkgJiZcbiAgICBzdGF0dXNDb2RlIGluIFJlZGlyZWN0U3RhdHVzQ29kZVxuICApXG59XG4iXSwibmFtZXMiOlsiUkVESVJFQ1RfRVJST1JfQ09ERSIsImlzUmVkaXJlY3RFcnJvciIsImVycm9yIiwiZGlnZXN0Iiwic3BsaXQiLCJlcnJvckNvZGUiLCJ0eXBlIiwiZGVzdGluYXRpb24iLCJzbGljZSIsImpvaW4iLCJzdGF0dXMiLCJhdCIsInN0YXR1c0NvZGUiLCJOdW1iZXIiLCJpc05hTiIsIlJlZGlyZWN0U3RhdHVzQ29kZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/redirect-error.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/redirect-status-code.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/redirect-status-code.js ***!
|
||
\**************************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"RedirectStatusCode\", ({\n enumerable: true,\n get: function() {\n return RedirectStatusCode;\n }\n}));\nvar RedirectStatusCode = /*#__PURE__*/ function(RedirectStatusCode) {\n RedirectStatusCode[RedirectStatusCode[\"SeeOther\"] = 303] = \"SeeOther\";\n RedirectStatusCode[RedirectStatusCode[\"TemporaryRedirect\"] = 307] = \"TemporaryRedirect\";\n RedirectStatusCode[RedirectStatusCode[\"PermanentRedirect\"] = 308] = \"PermanentRedirect\";\n return RedirectStatusCode;\n}({});\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=redirect-status-code.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JlZGlyZWN0LXN0YXR1cy1jb2RlLmpzIiwibWFwcGluZ3MiOiI7Ozs7c0RBQVlBOzs7ZUFBQUE7OztBQUFMLElBQUtBLHFCQUFBQSxXQUFBQSxHQUFBQSxTQUFBQSxrQkFBQUE7Ozs7V0FBQUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9zcmMvY2xpZW50L2NvbXBvbmVudHMvcmVkaXJlY3Qtc3RhdHVzLWNvZGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gUmVkaXJlY3RTdGF0dXNDb2RlIHtcbiAgU2VlT3RoZXIgPSAzMDMsXG4gIFRlbXBvcmFyeVJlZGlyZWN0ID0gMzA3LFxuICBQZXJtYW5lbnRSZWRpcmVjdCA9IDMwOCxcbn1cbiJdLCJuYW1lcyI6WyJSZWRpcmVjdFN0YXR1c0NvZGUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/redirect-status-code.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/redirect.js":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/redirect.js ***!
|
||
\**************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getRedirectError: function() {\n return getRedirectError;\n },\n getRedirectStatusCodeFromError: function() {\n return getRedirectStatusCodeFromError;\n },\n getRedirectTypeFromError: function() {\n return getRedirectTypeFromError;\n },\n getURLFromRedirectError: function() {\n return getURLFromRedirectError;\n },\n permanentRedirect: function() {\n return permanentRedirect;\n },\n redirect: function() {\n return redirect;\n }\n});\nconst _redirectstatuscode = __webpack_require__(/*! ./redirect-status-code */ \"(ssr)/./node_modules/next/dist/client/components/redirect-status-code.js\");\nconst _redirecterror = __webpack_require__(/*! ./redirect-error */ \"(ssr)/./node_modules/next/dist/client/components/redirect-error.js\");\nconst actionAsyncStorage = true ? (__webpack_require__(/*! ../../server/app-render/action-async-storage.external */ \"../app-render/action-async-storage.external\").actionAsyncStorage) : 0;\nfunction getRedirectError(url, type, statusCode = _redirectstatuscode.RedirectStatusCode.TemporaryRedirect) {\n const error = Object.defineProperty(new Error(_redirecterror.REDIRECT_ERROR_CODE), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n error.digest = `${_redirecterror.REDIRECT_ERROR_CODE};${type};${url};${statusCode};`;\n return error;\n}\nfunction redirect(/** The URL to redirect to */ url, type) {\n type ??= actionAsyncStorage?.getStore()?.isAction ? 'push' : 'replace';\n throw getRedirectError(url, type, _redirectstatuscode.RedirectStatusCode.TemporaryRedirect);\n}\nfunction permanentRedirect(/** The URL to redirect to */ url, type = 'replace') {\n throw getRedirectError(url, type, _redirectstatuscode.RedirectStatusCode.PermanentRedirect);\n}\nfunction getURLFromRedirectError(error) {\n if (!(0, _redirecterror.isRedirectError)(error)) return null;\n // Slices off the beginning of the digest that contains the code and the\n // separating ';'.\n return error.digest.split(';').slice(2, -2).join(';');\n}\nfunction getRedirectTypeFromError(error) {\n if (!(0, _redirecterror.isRedirectError)(error)) {\n throw Object.defineProperty(new Error('Not a redirect error'), \"__NEXT_ERROR_CODE\", {\n value: \"E260\",\n enumerable: false,\n configurable: true\n });\n }\n return error.digest.split(';', 2)[1];\n}\nfunction getRedirectStatusCodeFromError(error) {\n if (!(0, _redirecterror.isRedirectError)(error)) {\n throw Object.defineProperty(new Error('Not a redirect error'), \"__NEXT_ERROR_CODE\", {\n value: \"E260\",\n enumerable: false,\n configurable: true\n });\n }\n return Number(error.digest.split(';').at(-2));\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=redirect.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JlZGlyZWN0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQWVnQkEsZ0JBQWdCO2VBQWhCQTs7SUEyRUFDLDhCQUE4QjtlQUE5QkE7O0lBUkFDLHdCQUF3QjtlQUF4QkE7O0lBUkFDLHVCQUF1QjtlQUF2QkE7O0lBaEJBQyxpQkFBaUI7ZUFBakJBOztJQXJCQUMsUUFBUTtlQUFSQTs7O2dEQXJDbUI7MkNBTTVCO0FBRVAsTUFBTUMscUJBQ0osS0FBNkIsR0FFdkJFLG9KQUNrQixHQUNwQkMsQ0FBU0E7QUFFUixTQUFTVCxpQkFDZFUsR0FBVyxFQUNYQyxJQUFrQixFQUNsQkMsYUFBaUNDLG9CQUFBQSxrQkFBa0IsQ0FBQ0MsaUJBQWlCO0lBRXJFLE1BQU1DLFFBQVEscUJBQThCLENBQTlCLElBQUlDLE1BQU1DLGVBQUFBLG1CQUFtQixHQUE3QjtlQUFBO29CQUFBO3NCQUFBO0lBQTZCO0lBQzNDRixNQUFNRyxNQUFNLEdBQUcsR0FBR0QsZUFBQUEsbUJBQW1CLENBQUMsQ0FBQyxFQUFFTixLQUFLLENBQUMsRUFBRUQsSUFBSSxDQUFDLEVBQUVFLFdBQVcsQ0FBQyxDQUFDO0lBQ3JFLE9BQU9HO0FBQ1Q7QUFjTyxTQUFTVixTQUNkLDJCQUEyQixHQUMzQkssR0FBVyxFQUNYQyxJQUFtQjtJQUVuQkEsU0FBU0wsb0JBQW9CYSxZQUFZQyxXQUFXLFNBQVM7SUFFN0QsTUFBTXBCLGlCQUFpQlUsS0FBS0MsTUFBTUUsb0JBQUFBLGtCQUFrQixDQUFDQyxpQkFBaUI7QUFDeEU7QUFhTyxTQUFTVixrQkFDZCwyQkFBMkIsR0FDM0JNLEdBQVcsRUFDWEMsT0FBcUIsU0FBUztJQUU5QixNQUFNWCxpQkFBaUJVLEtBQUtDLE1BQU1FLG9CQUFBQSxrQkFBa0IsQ0FBQ1EsaUJBQWlCO0FBQ3hFO0FBVU8sU0FBU2xCLHdCQUF3QlksS0FBYztJQUNwRCxJQUFJLENBQUNPLENBQUFBLEdBQUFBLGVBQUFBLGVBQUFBLEVBQWdCUCxRQUFRLE9BQU87SUFFcEMsd0VBQXdFO0lBQ3hFLGtCQUFrQjtJQUNsQixPQUFPQSxNQUFNRyxNQUFNLENBQUNLLEtBQUssQ0FBQyxLQUFLQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUdDLElBQUksQ0FBQztBQUNuRDtBQUVPLFNBQVN2Qix5QkFBeUJhLEtBQW9CO0lBQzNELElBQUksQ0FBQ08sQ0FBQUEsR0FBQUEsZUFBQUEsZUFBQUEsRUFBZ0JQLFFBQVE7UUFDM0IsTUFBTSxxQkFBaUMsQ0FBakMsSUFBSUMsTUFBTSx5QkFBVjttQkFBQTt3QkFBQTswQkFBQTtRQUFnQztJQUN4QztJQUVBLE9BQU9ELE1BQU1HLE1BQU0sQ0FBQ0ssS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUU7QUFDdEM7QUFFTyxTQUFTdEIsK0JBQStCYyxLQUFvQjtJQUNqRSxJQUFJLENBQUNPLENBQUFBLEdBQUFBLGVBQUFBLGVBQUFBLEVBQWdCUCxRQUFRO1FBQzNCLE1BQU0scUJBQWlDLENBQWpDLElBQUlDLE1BQU0seUJBQVY7bUJBQUE7d0JBQUE7MEJBQUE7UUFBZ0M7SUFDeEM7SUFFQSxPQUFPVSxPQUFPWCxNQUFNRyxNQUFNLENBQUNLLEtBQUssQ0FBQyxLQUFLSSxFQUFFLENBQUMsQ0FBQztBQUM1QyIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9jbGllbnQvY29tcG9uZW50cy9yZWRpcmVjdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWRpcmVjdFN0YXR1c0NvZGUgfSBmcm9tICcuL3JlZGlyZWN0LXN0YXR1cy1jb2RlJ1xuaW1wb3J0IHtcbiAgdHlwZSBSZWRpcmVjdFR5cGUsXG4gIHR5cGUgUmVkaXJlY3RFcnJvcixcbiAgaXNSZWRpcmVjdEVycm9yLFxuICBSRURJUkVDVF9FUlJPUl9DT0RFLFxufSBmcm9tICcuL3JlZGlyZWN0LWVycm9yJ1xuXG5jb25zdCBhY3Rpb25Bc3luY1N0b3JhZ2UgPVxuICB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJ1xuICAgID8gKFxuICAgICAgICByZXF1aXJlKCcuLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci9hY3Rpb24tYXN5bmMtc3RvcmFnZS5leHRlcm5hbCcpIGFzIHR5cGVvZiBpbXBvcnQoJy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL2FjdGlvbi1hc3luYy1zdG9yYWdlLmV4dGVybmFsJylcbiAgICAgICkuYWN0aW9uQXN5bmNTdG9yYWdlXG4gICAgOiB1bmRlZmluZWRcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlZGlyZWN0RXJyb3IoXG4gIHVybDogc3RyaW5nLFxuICB0eXBlOiBSZWRpcmVjdFR5cGUsXG4gIHN0YXR1c0NvZGU6IFJlZGlyZWN0U3RhdHVzQ29kZSA9IFJlZGlyZWN0U3RhdHVzQ29kZS5UZW1wb3JhcnlSZWRpcmVjdFxuKTogUmVkaXJlY3RFcnJvciB7XG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFJFRElSRUNUX0VSUk9SX0NPREUpIGFzIFJlZGlyZWN0RXJyb3JcbiAgZXJyb3IuZGlnZXN0ID0gYCR7UkVESVJFQ1RfRVJST1JfQ09ERX07JHt0eXBlfTske3VybH07JHtzdGF0dXNDb2RlfTtgXG4gIHJldHVybiBlcnJvclxufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byByZWRpcmVjdCB0aGUgdXNlciB0byBhbm90aGVyIFVSTC4gSXQgY2FuIGJlIHVzZWQgaW5cbiAqIFtTZXJ2ZXIgQ29tcG9uZW50c10oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcmVuZGVyaW5nL3NlcnZlci1jb21wb25lbnRzKSxcbiAqIFtSb3V0ZSBIYW5kbGVyc10oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcm91dGluZy9yb3V0ZS1oYW5kbGVycyksIGFuZFxuICogW1NlcnZlciBBY3Rpb25zXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9kYXRhLWZldGNoaW5nL3NlcnZlci1hY3Rpb25zLWFuZC1tdXRhdGlvbnMpLlxuICpcbiAqIC0gSW4gYSBTZXJ2ZXIgQ29tcG9uZW50LCB0aGlzIHdpbGwgaW5zZXJ0IGEgbWV0YSB0YWcgdG8gcmVkaXJlY3QgdGhlIHVzZXIgdG8gdGhlIHRhcmdldCBwYWdlLlxuICogLSBJbiBhIFJvdXRlIEhhbmRsZXIgb3IgU2VydmVyIEFjdGlvbiwgaXQgd2lsbCBzZXJ2ZSBhIDMwNy8zMDMgdG8gdGhlIGNhbGxlci5cbiAqIC0gSW4gYSBTZXJ2ZXIgQWN0aW9uLCB0eXBlIGRlZmF1bHRzIHRvICdwdXNoJyBhbmQgJ3JlcGxhY2UnIGVsc2V3aGVyZS5cbiAqXG4gKiBSZWFkIG1vcmU6IFtOZXh0LmpzIERvY3M6IGByZWRpcmVjdGBdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy9yZWRpcmVjdClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZGlyZWN0KFxuICAvKiogVGhlIFVSTCB0byByZWRpcmVjdCB0byAqL1xuICB1cmw6IHN0cmluZyxcbiAgdHlwZT86IFJlZGlyZWN0VHlwZVxuKTogbmV2ZXIge1xuICB0eXBlID8/PSBhY3Rpb25Bc3luY1N0b3JhZ2U/LmdldFN0b3JlKCk/LmlzQWN0aW9uID8gJ3B1c2gnIDogJ3JlcGxhY2UnXG5cbiAgdGhyb3cgZ2V0UmVkaXJlY3RFcnJvcih1cmwsIHR5cGUsIFJlZGlyZWN0U3RhdHVzQ29kZS5UZW1wb3JhcnlSZWRpcmVjdClcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB5b3UgdG8gcmVkaXJlY3QgdGhlIHVzZXIgdG8gYW5vdGhlciBVUkwuIEl0IGNhbiBiZSB1c2VkIGluXG4gKiBbU2VydmVyIENvbXBvbmVudHNdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JlbmRlcmluZy9zZXJ2ZXItY29tcG9uZW50cyksXG4gKiBbUm91dGUgSGFuZGxlcnNdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JvdXRpbmcvcm91dGUtaGFuZGxlcnMpLCBhbmRcbiAqIFtTZXJ2ZXIgQWN0aW9uc10oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vZGF0YS1mZXRjaGluZy9zZXJ2ZXItYWN0aW9ucy1hbmQtbXV0YXRpb25zKS5cbiAqXG4gKiAtIEluIGEgU2VydmVyIENvbXBvbmVudCwgdGhpcyB3aWxsIGluc2VydCBhIG1ldGEgdGFnIHRvIHJlZGlyZWN0IHRoZSB1c2VyIHRvIHRoZSB0YXJnZXQgcGFnZS5cbiAqIC0gSW4gYSBSb3V0ZSBIYW5kbGVyIG9yIFNlcnZlciBBY3Rpb24sIGl0IHdpbGwgc2VydmUgYSAzMDgvMzAzIHRvIHRoZSBjYWxsZXIuXG4gKlxuICogUmVhZCBtb3JlOiBbTmV4dC5qcyBEb2NzOiBgcmVkaXJlY3RgXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvcmVkaXJlY3QpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwZXJtYW5lbnRSZWRpcmVjdChcbiAgLyoqIFRoZSBVUkwgdG8gcmVkaXJlY3QgdG8gKi9cbiAgdXJsOiBzdHJpbmcsXG4gIHR5cGU6IFJlZGlyZWN0VHlwZSA9ICdyZXBsYWNlJ1xuKTogbmV2ZXIge1xuICB0aHJvdyBnZXRSZWRpcmVjdEVycm9yKHVybCwgdHlwZSwgUmVkaXJlY3RTdGF0dXNDb2RlLlBlcm1hbmVudFJlZGlyZWN0KVxufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGVuY29kZWQgVVJMIGZyb20gdGhlIGVycm9yIGlmIGl0J3MgYSBSZWRpcmVjdEVycm9yLCBudWxsXG4gKiBvdGhlcndpc2UuIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IHZhbGlkYXRlIHRoZSBVUkwgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIGVycm9yIHRoZSBlcnJvciB0aGF0IG1heSBiZSBhIHJlZGlyZWN0IGVycm9yXG4gKiBAcmV0dXJuIHRoZSB1cmwgaWYgdGhlIGVycm9yIHdhcyBhIHJlZGlyZWN0IGVycm9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRVUkxGcm9tUmVkaXJlY3RFcnJvcihlcnJvcjogUmVkaXJlY3RFcnJvcik6IHN0cmluZ1xuZXhwb3J0IGZ1bmN0aW9uIGdldFVSTEZyb21SZWRpcmVjdEVycm9yKGVycm9yOiB1bmtub3duKTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmICghaXNSZWRpcmVjdEVycm9yKGVycm9yKSkgcmV0dXJuIG51bGxcblxuICAvLyBTbGljZXMgb2ZmIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRpZ2VzdCB0aGF0IGNvbnRhaW5zIHRoZSBjb2RlIGFuZCB0aGVcbiAgLy8gc2VwYXJhdGluZyAnOycuXG4gIHJldHVybiBlcnJvci5kaWdlc3Quc3BsaXQoJzsnKS5zbGljZSgyLCAtMikuam9pbignOycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWRpcmVjdFR5cGVGcm9tRXJyb3IoZXJyb3I6IFJlZGlyZWN0RXJyb3IpOiBSZWRpcmVjdFR5cGUge1xuICBpZiAoIWlzUmVkaXJlY3RFcnJvcihlcnJvcikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBhIHJlZGlyZWN0IGVycm9yJylcbiAgfVxuXG4gIHJldHVybiBlcnJvci5kaWdlc3Quc3BsaXQoJzsnLCAyKVsxXSBhcyBSZWRpcmVjdFR5cGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlZGlyZWN0U3RhdHVzQ29kZUZyb21FcnJvcihlcnJvcjogUmVkaXJlY3RFcnJvcik6IG51bWJlciB7XG4gIGlmICghaXNSZWRpcmVjdEVycm9yKGVycm9yKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignTm90IGEgcmVkaXJlY3QgZXJyb3InKVxuICB9XG5cbiAgcmV0dXJuIE51bWJlcihlcnJvci5kaWdlc3Quc3BsaXQoJzsnKS5hdCgtMikpXG59XG4iXSwibmFtZXMiOlsiZ2V0UmVkaXJlY3RFcnJvciIsImdldFJlZGlyZWN0U3RhdHVzQ29kZUZyb21FcnJvciIsImdldFJlZGlyZWN0VHlwZUZyb21FcnJvciIsImdldFVSTEZyb21SZWRpcmVjdEVycm9yIiwicGVybWFuZW50UmVkaXJlY3QiLCJyZWRpcmVjdCIsImFjdGlvbkFzeW5jU3RvcmFnZSIsIndpbmRvdyIsInJlcXVpcmUiLCJ1bmRlZmluZWQiLCJ1cmwiLCJ0eXBlIiwic3RhdHVzQ29kZSIsIlJlZGlyZWN0U3RhdHVzQ29kZSIsIlRlbXBvcmFyeVJlZGlyZWN0IiwiZXJyb3IiLCJFcnJvciIsIlJFRElSRUNUX0VSUk9SX0NPREUiLCJkaWdlc3QiLCJnZXRTdG9yZSIsImlzQWN0aW9uIiwiUGVybWFuZW50UmVkaXJlY3QiLCJpc1JlZGlyZWN0RXJyb3IiLCJzcGxpdCIsInNsaWNlIiwiam9pbiIsIk51bWJlciIsImF0Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/redirect.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js":
|
||
/*!**********************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/render-from-template-context.js ***!
|
||
\**********************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return RenderFromTemplateContext;\n }\n}));\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\"));\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../shared/lib/app-router-context.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js\");\nfunction RenderFromTemplateContext() {\n const children = (0, _react.useContext)(_approutercontextsharedruntime.TemplateContext);\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_jsxruntime.Fragment, {\n children: children\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=render-from-template-context.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JlbmRlci1mcm9tLXRlbXBsYXRlLWNvbnRleHQuanMiLCJtYXBwaW5ncyI6Ijs7OzsyQ0FLQTs7O2VBQXdCQTs7Ozs7NkVBSG9COzJEQUNaO0FBRWpCLFNBQVNBO0lBQ3RCLE1BQU1DLFdBQVdDLENBQUFBLEdBQUFBLE9BQUFBLFVBQUFBLEVBQVdDLCtCQUFBQSxlQUFlO0lBQzNDLHFCQUFPO2tCQUFHRjs7QUFDWiIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9jbGllbnQvY29tcG9uZW50cy9yZW5kZXItZnJvbS10ZW1wbGF0ZS1jb250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuaW1wb3J0IFJlYWN0LCB7IHVzZUNvbnRleHQsIHR5cGUgSlNYIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBUZW1wbGF0ZUNvbnRleHQgfSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUmVuZGVyRnJvbVRlbXBsYXRlQ29udGV4dCgpOiBKU1guRWxlbWVudCB7XG4gIGNvbnN0IGNoaWxkcmVuID0gdXNlQ29udGV4dChUZW1wbGF0ZUNvbnRleHQpXG4gIHJldHVybiA8PntjaGlsZHJlbn08Lz5cbn1cbiJdLCJuYW1lcyI6WyJSZW5kZXJGcm9tVGVtcGxhdGVDb250ZXh0IiwiY2hpbGRyZW4iLCJ1c2VDb250ZXh0IiwiVGVtcGxhdGVDb250ZXh0Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/router-reducer/compute-changed-path.js":
|
||
/*!*****************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/router-reducer/compute-changed-path.js ***!
|
||
\*****************************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n computeChangedPath: function() {\n return computeChangedPath;\n },\n extractPathFromFlightRouterState: function() {\n return extractPathFromFlightRouterState;\n },\n extractSourcePageFromFlightRouterState: function() {\n return extractSourcePageFromFlightRouterState;\n },\n getSelectedParams: function() {\n return getSelectedParams;\n }\n});\nconst _interceptionroutes = __webpack_require__(/*! ../../../shared/lib/router/utils/interception-routes */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/interception-routes.js\");\nconst _segment = __webpack_require__(/*! ../../../shared/lib/segment */ \"(ssr)/./node_modules/next/dist/shared/lib/segment.js\");\nconst _matchsegments = __webpack_require__(/*! ../match-segments */ \"(ssr)/./node_modules/next/dist/client/components/match-segments.js\");\nconst removeLeadingSlash = (segment)=>{\n return segment[0] === '/' ? segment.slice(1) : segment;\n};\nconst segmentToPathname = (segment)=>{\n if (typeof segment === 'string') {\n // 'children' is not a valid path -- it's technically a parallel route that corresponds with the current segment's page\n // if we don't skip it, then the computed pathname might be something like `/children` which doesn't make sense.\n if (segment === 'children') return '';\n return segment;\n }\n return segment[1];\n};\nconst segmentToSourcePagePathname = (segment)=>{\n if (typeof segment === 'string') {\n if (segment === 'children') return '';\n if (segment.startsWith(_segment.PAGE_SEGMENT_KEY)) return 'page';\n return segment;\n }\n const [paramName, , dynamicParamType] = segment;\n switch(dynamicParamType){\n case 'c':\n return `[...${paramName}]`;\n case 'ci(..)(..)':\n return `(..)(..)[...${paramName}]`;\n case 'ci(.)':\n return `(.)[...${paramName}]`;\n case 'ci(..)':\n return `(..)[...${paramName}]`;\n case 'ci(...)':\n return `(...)[...${paramName}]`;\n case 'oc':\n return `[[...${paramName}]]`;\n case 'd':\n return `[${paramName}]`;\n case 'di(..)(..)':\n return `(..)(..)[${paramName}]`;\n case 'di(.)':\n return `(.)[${paramName}]`;\n case 'di(..)':\n return `(..)[${paramName}]`;\n case 'di(...)':\n return `(...)[${paramName}]`;\n default:\n dynamicParamType;\n return `[${paramName}]`;\n }\n};\nfunction normalizeSegments(segments) {\n return segments.reduce((acc, segment)=>{\n segment = removeLeadingSlash(segment);\n if (segment === '' || (0, _segment.isGroupSegment)(segment)) {\n return acc;\n }\n return `${acc}/${segment}`;\n }, '') || '/';\n}\nfunction extractPathFromFlightRouterState(flightRouterState) {\n const segment = Array.isArray(flightRouterState[0]) ? flightRouterState[0][1] : flightRouterState[0];\n if (segment === _segment.DEFAULT_SEGMENT_KEY || _interceptionroutes.INTERCEPTION_ROUTE_MARKERS.some((m)=>segment.startsWith(m))) return undefined;\n if (segment.startsWith(_segment.PAGE_SEGMENT_KEY)) return '';\n const segments = [\n segmentToPathname(segment)\n ];\n const parallelRoutes = flightRouterState[1] ?? {};\n const childrenPath = parallelRoutes.children ? extractPathFromFlightRouterState(parallelRoutes.children) : undefined;\n if (childrenPath !== undefined) {\n segments.push(childrenPath);\n } else {\n for (const [key, value] of Object.entries(parallelRoutes)){\n if (key === 'children') continue;\n const childPath = extractPathFromFlightRouterState(value);\n if (childPath !== undefined) {\n segments.push(childPath);\n }\n }\n }\n return normalizeSegments(segments);\n}\nfunction extractSourcePageSegmentsFromFlightRouterState(flightRouterState) {\n const segment = segmentToSourcePagePathname(flightRouterState[0]);\n if (segment === _segment.DEFAULT_SEGMENT_KEY) {\n return undefined;\n }\n if (segment === 'page') {\n return [\n segment\n ];\n }\n const parallelRoutes = flightRouterState[1] ?? {};\n const childrenPath = parallelRoutes.children ? extractSourcePageSegmentsFromFlightRouterState(parallelRoutes.children) : undefined;\n if (childrenPath !== undefined) {\n return segment === '' ? childrenPath : [\n removeLeadingSlash(segment),\n ...childrenPath\n ];\n }\n for (const [key, value] of Object.entries(parallelRoutes)){\n if (key === 'children') continue;\n const childPath = extractSourcePageSegmentsFromFlightRouterState(value);\n if (childPath !== undefined) {\n return segment === '' ? childPath : [\n removeLeadingSlash(segment),\n ...childPath\n ];\n }\n }\n return undefined;\n}\nfunction extractSourcePageFromFlightRouterState(flightRouterState) {\n const sourcePageSegments = extractSourcePageSegmentsFromFlightRouterState(flightRouterState);\n return sourcePageSegments ? `/${sourcePageSegments.join('/')}` : undefined;\n}\nfunction computeChangedPathImpl(treeA, treeB) {\n const [segmentA, parallelRoutesA] = treeA;\n const [segmentB, parallelRoutesB] = treeB;\n const normalizedSegmentA = segmentToPathname(segmentA);\n const normalizedSegmentB = segmentToPathname(segmentB);\n if (_interceptionroutes.INTERCEPTION_ROUTE_MARKERS.some((m)=>normalizedSegmentA.startsWith(m) || normalizedSegmentB.startsWith(m))) {\n return '';\n }\n if (!(0, _matchsegments.matchSegment)(segmentA, segmentB)) {\n // once we find where the tree changed, we compute the rest of the path by traversing the tree\n return extractPathFromFlightRouterState(treeB) ?? '';\n }\n for(const parallelRouterKey in parallelRoutesA){\n if (parallelRoutesB[parallelRouterKey]) {\n const changedPath = computeChangedPathImpl(parallelRoutesA[parallelRouterKey], parallelRoutesB[parallelRouterKey]);\n if (changedPath !== null) {\n return `${segmentToPathname(segmentB)}/${changedPath}`;\n }\n }\n }\n return null;\n}\nfunction computeChangedPath(treeA, treeB) {\n const changedPath = computeChangedPathImpl(treeA, treeB);\n if (changedPath == null || changedPath === '/') {\n return changedPath;\n }\n // lightweight normalization to remove route groups\n return normalizeSegments(changedPath.split('/'));\n}\nfunction getSelectedParams(currentTree, params = {}) {\n const parallelRoutes = currentTree[1];\n for (const parallelRoute of Object.values(parallelRoutes)){\n const segment = parallelRoute[0];\n const isDynamicParameter = Array.isArray(segment);\n const segmentValue = isDynamicParameter ? segment[1] : segment;\n if (!segmentValue || segmentValue.startsWith(_segment.PAGE_SEGMENT_KEY)) continue;\n // Ensure catchAll and optional catchall are turned into an array\n const isCatchAll = isDynamicParameter && (segment[2] === 'c' || segment[2] === 'oc');\n if (isCatchAll) {\n params[segment[0]] = segment[1].split('/');\n } else if (isDynamicParameter) {\n params[segment[0]] = segment[1];\n }\n params = getSelectedParams(parallelRoute, params);\n }\n return params;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=compute-changed-path.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2NvbXB1dGUtY2hhbmdlZC1wYXRoLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQStNZ0JBLGtCQUFrQjtlQUFsQkE7O0lBL0hBQyxnQ0FBZ0M7ZUFBaENBOztJQStFQUMsc0NBQXNDO2VBQXRDQTs7SUFpRUFDLGlCQUFpQjtlQUFqQkE7OztnREE1TjJCO3FDQU1wQzsyQ0FDc0I7QUFFN0IsTUFBTUMscUJBQXFCLENBQUNDO0lBQzFCLE9BQU9BLE9BQU8sQ0FBQyxFQUFFLEtBQUssTUFBTUEsUUFBUUMsS0FBSyxDQUFDLEtBQUtEO0FBQ2pEO0FBRUEsTUFBTUUsb0JBQW9CLENBQUNGO0lBQ3pCLElBQUksT0FBT0EsWUFBWSxVQUFVO1FBQy9CLHVIQUF1SDtRQUN2SCxnSEFBZ0g7UUFDaEgsSUFBSUEsWUFBWSxZQUFZLE9BQU87UUFFbkMsT0FBT0E7SUFDVDtJQUVBLE9BQU9BLE9BQU8sQ0FBQyxFQUFFO0FBQ25CO0FBRUEsTUFBTUcsOEJBQThCLENBQUNIO0lBQ25DLElBQUksT0FBT0EsWUFBWSxVQUFVO1FBQy9CLElBQUlBLFlBQVksWUFBWSxPQUFPO1FBQ25DLElBQUlBLFFBQVFJLFVBQVUsQ0FBQ0MsU0FBQUEsZ0JBQWdCLEdBQUcsT0FBTztRQUNqRCxPQUFPTDtJQUNUO0lBRUEsTUFBTSxDQUFDTSxhQUFhQyxpQkFBaUIsR0FBR1A7SUFFeEMsT0FBUU87UUFDTixLQUFLO1lBQ0gsT0FBTyxDQUFDLElBQUksRUFBRUQsVUFBVSxDQUFDLENBQUM7UUFDNUIsS0FBSztZQUNILE9BQU8sQ0FBQyxZQUFZLEVBQUVBLFVBQVUsQ0FBQyxDQUFDO1FBQ3BDLEtBQUs7WUFDSCxPQUFPLENBQUMsT0FBTyxFQUFFQSxVQUFVLENBQUMsQ0FBQztRQUMvQixLQUFLO1lBQ0gsT0FBTyxDQUFDLFFBQVEsRUFBRUEsVUFBVSxDQUFDLENBQUM7UUFDaEMsS0FB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YW5nZWQtcGF0aC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIEZsaWdodFJvdXRlclN0YXRlLFxuICBTZWdtZW50LFxufSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItdHlwZXMnXG5pbXBvcnQgeyBJTlRFUkNFUFRJT05fUk9VVEVfTUFSS0VSUyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2ludGVyY2VwdGlvbi1yb3V0ZXMnXG5pbXBvcnQgdHlwZSB7IFBhcmFtcyB9IGZyb20gJy4uLy4uLy4uL3NlcnZlci9yZXF1ZXN0L3BhcmFtcydcbmltcG9ydCB7XG4gIGlzR3JvdXBTZWdtZW50LFxuICBERUZBVUxUX1NFR01FTlRfS0VZLFxuICBQQUdFX1NFR01FTlRfS0VZLFxufSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL3NlZ21lbnQnXG5pbXBvcnQgeyBtYXRjaFNlZ21lbnQgfSBmcm9tICcuLi9tYXRjaC1zZWdtZW50cydcblxuY29uc3QgcmVtb3ZlTGVhZGluZ1NsYXNoID0gKHNlZ21lbnQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBzZWdtZW50WzBdID09PSAnLycgPyBzZWdtZW50LnNsaWNlKDEpIDogc2VnbWVudFxufVxuXG5jb25zdCBzZWdtZW50VG9QYXRobmFtZSA9IChzZWdtZW50OiBTZWdtZW50KTogc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiBzZWdtZW50ID09PSAnc3RyaW5nJykge1xuICAgIC8vICdjaGlsZHJlbicgaXMgbm90IGEgdmFsaWQgcGF0aCAtLSBpdCdzIHRlY2huaWNhbGx5IGEgcGFyYWxsZWwgcm91dGUgdGhhdCBjb3JyZXNwb25kcyB3aXRoIHRoZSBjdXJyZW50IHNlZ21lbnQncyBwYWdlXG4gICAgLy8gaWYgd2UgZG9uJ3Qgc2tpcCBpdCwgdGhlbiB0aGUgY29tcHV0ZWQgcGF0aG5hbWUgbWlnaHQgYmUgc29tZXRoaW5nIGxpa2UgYC9jaGlsZHJlbmAgd2hpY2ggZG9lc24ndCBtYWtlIHNlbnNlLlxuICAgIGlmIChzZWdtZW50ID09PSAnY2hpbGRyZW4nKSByZXR1cm4gJydcblxuICAgIHJldHVybiBzZWdtZW50XG4gIH1cblxuICByZXR1cm4gc2VnbWVudFsxXVxufVxuXG5jb25zdCBzZWdtZW50VG9Tb3VyY2VQYWdlUGF0aG5hbWUgPSAoc2VnbWVudDogU2VnbWVudCk6IHN0cmluZyA9PiB7XG4gIGlmICh0eXBlb2Ygc2VnbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoc2VnbWVudCA9PT0gJ2NoaWxkcmVuJykgcmV0dXJuICcnXG4gICAgaWYgKHNlZ21lbnQuc3RhcnRzV2l0aChQQUdFX1NFR01FTlRfS0VZKSkgcmV0dXJuICdwYWdlJ1xuICAgIHJldHVybiBzZWdtZW50XG4gIH1cblxuICBjb25zdCBbcGFyYW1OYW1lLCAsIGR5bmFtaWNQYXJhbVR5cGVdID0gc2VnbWVudFxuXG4gIHN3aXRjaCAoZHluYW1pY1BhcmFtVHlwZSkge1xuICAgIGNhc2UgJ2MnOlxuICAgICAgcmV0dXJuIGBbLi4uJHtwYXJhbU5hbWV9XWBcbiAgICBjYXNlICdjaSguLikoLi4pJzpcbiAgICAgIHJldHVybiBgKC4uKSguLilbLi4uJHtwYXJhbU5hbWV9XWBcbiAgICBjYXNlICdjaSguKSc6XG4gICAgICByZXR1cm4gYCguKVsuLi4ke3BhcmFtTmFtZX1dYFxuICAgIGNhc2UgJ2NpKC4uKSc6XG4gICAgICByZXR1cm4gYCguLilbLi4uJHtwYXJhbU5hbWV9XWBcbiAgICBjYXNlICdjaSguLi4pJzpcbiAgICAgIHJldHVybiBgKC4uLilbLi4uJHtwYXJhbU5hbWV9XWBcbiAgICBjYXNlICdvYyc6XG4gICAgICByZXR1cm4gYFtbLi4uJHtwYXJhbU5hbWV9XV1gXG4gICAgY2FzZSAnZCc6XG4gICAgICByZXR1cm4gYFske3BhcmFtTmFtZX1dYFxuICAgIGNhc2UgJ2RpKC4uKSguLiknOlxuICAgICAgcmV0dXJuIGAoLi4pKC4uKVske3BhcmFtTmFtZX1dYFxuICAgIGNhc2UgJ2RpKC4pJzpcbiAgICAgIHJldHVybiBgKC4pWyR7cGFyYW1OYW1lfV1gXG4gICAgY2FzZSAnZGkoLi4pJzpcbiAgICAgIHJldHVybiBgKC4uKVske3BhcmFtTmFtZX1dYFxuICAgIGNhc2UgJ2RpKC4uLiknOlxuICAgICAgcmV0dXJuIGAoLi4uKVske3BhcmFtTmFtZX1dYFxuICAgIGRlZmF1bHQ6XG4gICAgICBkeW5hbWljUGFyYW1UeXBlIHNhdGlzZmllcyBuZXZlclxuICAgICAgcmV0dXJuIGBbJHtwYXJhbU5hbWV9XWBcbiAgfVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVTZWdtZW50cyhzZWdtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xuICByZXR1cm4gKFxuICAgIHNlZ21lbnRzLnJlZHVjZSgoYWNjLCBzZWdtZW50KSA9PiB7XG4gICAgICBzZWdtZW50ID0gcmVtb3ZlTGVhZGluZ1NsYXNoKHNlZ21lbnQpXG4gICAgICBpZiAoc2VnbWVudCA9PT0gJycgfHwgaXNHcm91cFNlZ21lbnQoc2VnbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIGFjY1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYCR7YWNjfS8ke3NlZ21lbnR9YFxuICAgIH0sICcnKSB8fCAnLydcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFBhdGhGcm9tRmxpZ2h0Um91dGVyU3RhdGUoXG4gIGZsaWdodFJvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZVxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgc2VnbWVudCA9IEFycmF5LmlzQXJyYXkoZmxpZ2h0Um91dGVyU3RhdGVbMF0pXG4gICAgPyBmbGlnaHRSb3V0ZXJTdGF0ZVswXVsxXVxuICAgIDogZmxpZ2h0Um91dGVyU3RhdGVbMF1cblxuICBpZiAoXG4gICAgc2VnbWVudCA9PT0gREVGQVVMVF9TRUdNRU5UX0tFWSB8fFxuICAgIElOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTLnNvbWUoKG0pID0+IHNlZ21lbnQuc3RhcnRzV2l0aChtKSlcbiAgKVxuICAgIHJldHVybiB1bmRlZmluZWRcblxuICBpZiAoc2VnbWVudC5zdGFydHNXaXRoKFBBR0VfU0VHTUVOVF9LRVkpKSByZXR1cm4gJydcblxuICBjb25zdCBzZWdtZW50cyA9IFtzZWdtZW50VG9QYXRobmFtZShzZWdtZW50KV1cbiAgY29uc3QgcGFyYWxsZWxSb3V0ZXMgPSBmbGlnaHRSb3V0ZXJTdGF0ZVsxXSA/PyB7fVxuXG4gIGNvbnN0IGNoaWxkcmVuUGF0aCA9IHBhcmFsbGVsUm91dGVzLmNoaWxkcmVuXG4gICAgPyBleHRyYWN0UGF0aEZyb21GbGlnaHRSb3V0ZXJTdGF0ZShwYXJhbGxlbFJvdXRlcy5jaGlsZHJlbilcbiAgICA6IHVuZGVmaW5lZFxuXG4gIGlmIChjaGlsZHJlblBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgIHNlZ21lbnRzLnB1c2goY2hpbGRyZW5QYXRoKVxuICB9IGVsc2Uge1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFsbGVsUm91dGVzKSkge1xuICAgICAgaWYgKGtleSA9PT0gJ2NoaWxkcmVuJykgY29udGludWVcblxuICAgICAgY29uc3QgY2hpbGRQYXRoID0gZXh0cmFjdFBhdGhGcm9tRmxpZ2h0Um91dGVyU3RhdGUodmFsdWUpXG5cbiAgICAgIGlmIChjaGlsZFBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzZWdtZW50cy5wdXNoKGNoaWxkUGF0aClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplU2VnbWVudHMoc2VnbWVudHMpXG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RTb3VyY2VQYWdlU2VnbWVudHNGcm9tRmxpZ2h0Um91dGVyU3RhdGUoXG4gIGZsaWdodFJvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZVxuKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICBjb25zdCBzZWdtZW50ID0gc2VnbWVudFRvU291cmNlUGFnZVBhdGhuYW1lKGZsaWdodFJvdXRlclN0YXRlWzBdKVxuXG4gIGlmIChzZWdtZW50ID09PSBERUZBVUxUX1NFR01FTlRfS0VZKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgaWYgKHNlZ21lbnQgPT09ICdwYWdlJykge1xuICAgIHJldHVybiBbc2VnbWVudF1cbiAgfVxuXG4gIGNvbnN0IHBhcmFsbGVsUm91dGVzID0gZmxpZ2h0Um91dGVyU3RhdGVbMV0gPz8ge31cblxuICBjb25zdCBjaGlsZHJlblBhdGggPSBwYXJhbGxlbFJvdXRlcy5jaGlsZHJlblxuICAgID8gZXh0cmFjdFNvdXJjZVBhZ2VTZWdtZW50c0Zyb21GbGlnaHRSb3V0ZXJTdGF0ZShwYXJhbGxlbFJvdXRlcy5jaGlsZHJlbilcbiAgICA6IHVuZGVmaW5lZFxuXG4gIGlmIChjaGlsZHJlblBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBzZWdtZW50ID09PSAnJ1xuICAgICAgPyBjaGlsZHJlblBhdGhcbiAgICAgIDogW3JlbW92ZUxlYWRpbmdTbGFzaChzZWdtZW50KSwgLi4uY2hpbGRyZW5QYXRoXVxuICB9XG5cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocGFyYWxsZWxSb3V0ZXMpKSB7XG4gICAgaWYgKGtleSA9PT0gJ2NoaWxkcmVuJykgY29udGludWVcblxuICAgIGNvbnN0IGNoaWxkUGF0aCA9IGV4dHJhY3RTb3VyY2VQYWdlU2VnbWVudHNGcm9tRmxpZ2h0Um91dGVyU3RhdGUodmFsdWUpXG5cbiAgICBpZiAoY2hpbGRQYXRoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBzZWdtZW50ID09PSAnJ1xuICAgICAgICA/IGNoaWxkUGF0aFxuICAgICAgICA6IFtyZW1vdmVMZWFkaW5nU2xhc2goc2VnbWVudCksIC4uLmNoaWxkUGF0aF1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0U291cmNlUGFnZUZyb21GbGlnaHRSb3V0ZXJTdGF0ZShcbiAgZmxpZ2h0Um91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBzb3VyY2VQYWdlU2VnbWVudHMgPVxuICAgIGV4dHJhY3RTb3VyY2VQYWdlU2VnbWVudHNGcm9tRmxpZ2h0Um91dGVyU3RhdGUoZmxpZ2h0Um91dGVyU3RhdGUpXG5cbiAgcmV0dXJuIHNvdXJjZVBhZ2VTZWdtZW50cyA/IGAvJHtzb3VyY2VQYWdlU2VnbWVudHMuam9pbignLycpfWAgOiB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gY29tcHV0ZUNoYW5nZWRQYXRoSW1wbChcbiAgdHJlZUE6IEZsaWdodFJvdXRlclN0YXRlLFxuICB0cmVlQjogRmxpZ2h0Um91dGVyU3RhdGVcbik6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBbc2VnbWVudEEsIHBhcmFsbGVsUm91dGVzQV0gPSB0cmVlQVxuICBjb25zdCBbc2VnbWVudEIsIHBhcmFsbGVsUm91dGVzQl0gPSB0cmVlQlxuXG4gIGNvbnN0IG5vcm1hbGl6ZWRTZWdtZW50QSA9IHNlZ21lbnRUb1BhdGhuYW1lKHNlZ21lbnRBKVxuICBjb25zdCBub3JtYWxpemVkU2VnbWVudEIgPSBzZWdtZW50VG9QYXRobmFtZShzZWdtZW50QilcblxuICBpZiAoXG4gICAgSU5URVJDRVBUSU9OX1JPVVRFX01BUktFUlMuc29tZShcbiAgICAgIChtKSA9PlxuICAgICAgICBub3JtYWxpemVkU2VnbWVudEEuc3RhcnRzV2l0aChtKSB8fCBub3JtYWxpemVkU2VnbWVudEIuc3RhcnRzV2l0aChtKVxuICAgIClcbiAgKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBpZiAoIW1hdGNoU2VnbWVudChzZWdtZW50QSwgc2VnbWVudEIpKSB7XG4gICAgLy8gb25jZSB3ZSBmaW5kIHdoZXJlIHRoZSB0cmVlIGNoYW5nZWQsIHdlIGNvbXB1dGUgdGhlIHJlc3Qgb2YgdGhlIHBhdGggYnkgdHJhdmVyc2luZyB0aGUgdHJlZVxuICAgIHJldHVybiBleHRyYWN0UGF0aEZyb21GbGlnaHRSb3V0ZXJTdGF0ZSh0cmVlQikgPz8gJydcbiAgfVxuXG4gIGZvciAoY29uc3QgcGFyYWxsZWxSb3V0ZXJLZXkgaW4gcGFyYWxsZWxSb3V0ZXNBKSB7XG4gICAgaWYgKHBhcmFsbGVsUm91dGVzQltwYXJhbGxlbFJvdXRlcktleV0pIHtcbiAgICAgIGNvbnN0IGNoYW5nZWRQYXRoID0gY29tcHV0ZUNoYW5nZWRQYXRoSW1wbChcbiAgICAgICAgcGFyYWxsZWxSb3V0ZXNBW3BhcmFsbGVsUm91dGVyS2V5XSxcbiAgICAgICAgcGFyYWxsZWxSb3V0ZXNCW3BhcmFsbGVsUm91dGVyS2V5XVxuICAgICAgKVxuICAgICAgaWYgKGNoYW5nZWRQYXRoICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBgJHtzZWdtZW50VG9QYXRobmFtZShzZWdtZW50Qil9LyR7Y2hhbmdlZFBhdGh9YFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlQ2hhbmdlZFBhdGgoXG4gIHRyZWVBOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgdHJlZUI6IEZsaWdodFJvdXRlclN0YXRlXG4pOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgY2hhbmdlZFBhdGggPSBjb21wdXRlQ2hhbmdlZFBhdGhJbXBsKHRyZWVBLCB0cmVlQilcblxuICBpZiAoY2hhbmdlZFBhdGggPT0gbnVsbCB8fCBjaGFuZ2VkUGF0aCA9PT0gJy8nKSB7XG4gICAgcmV0dXJuIGNoYW5nZWRQYXRoXG4gIH1cblxuICAvLyBsaWdodHdlaWdodCBub3JtYWxpemF0aW9uIHRvIHJlbW92ZSByb3V0ZSBncm91cHNcbiAgcmV0dXJuIG5vcm1hbGl6ZVNlZ21lbnRzKGNoYW5nZWRQYXRoLnNwbGl0KCcvJykpXG59XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgZXh0cmFjdHMgZHluYW1pYyBwYXJhbWV0ZXJzIGZyb20gRmxpZ2h0Um91dGVyU3RhdGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWxlY3RlZFBhcmFtcyhcbiAgY3VycmVudFRyZWU6IEZsaWdodFJvdXRlclN0YXRlLFxuICBwYXJhbXM6IFBhcmFtcyA9IHt9XG4pOiBQYXJhbXMge1xuICBjb25zdCBwYXJhbGxlbFJvdXRlcyA9IGN1cnJlbnRUcmVlWzFdXG5cbiAgZm9yIChjb25zdCBwYXJhbGxlbFJvdXRlIG9mIE9iamVjdC52YWx1ZXMocGFyYWxsZWxSb3V0ZXMpKSB7XG4gICAgY29uc3Qgc2VnbWVudCA9IHBhcmFsbGVsUm91dGVbMF1cbiAgICBjb25zdCBpc0R5bmFtaWNQYXJhbWV0ZXIgPSBBcnJheS5pc0FycmF5KHNlZ21lbnQpXG4gICAgY29uc3Qgc2VnbWVudFZhbHVlID0gaXNEeW5hbWljUGFyYW1ldGVyID8gc2VnbWVudFsxXSA6IHNlZ21lbnRcbiAgICBpZiAoIXNlZ21lbnRWYWx1ZSB8fCBzZWdtZW50VmFsdWUuc3RhcnRzV2l0aChQQUdFX1NFR01FTlRfS0VZKSkgY29udGludWVcblxuICAgIC8vIEVuc3VyZSBjYXRjaEFsbCBhbmQgb3B0aW9uYWwgY2F0Y2hhbGwgYXJlIHR1cm5lZCBpbnRvIGFuIGFycmF5XG4gICAgY29uc3QgaXNDYXRjaEFsbCA9XG4gICAgICBpc0R5bmFtaWNQYXJhbWV0ZXIgJiYgKHNlZ21lbnRbMl0gPT09ICdjJyB8fCBzZWdtZW50WzJdID09PSAnb2MnKVxuXG4gICAgaWYgKGlzQ2F0Y2hBbGwpIHtcbiAgICAgIHBhcmFtc1tzZWdtZW50WzBdXSA9IHNlZ21lbnRbMV0uc3BsaXQoJy8nKVxuICAgIH0gZWxzZSBpZiAoaXNEeW5hbWljUGFyYW1ldGVyKSB7XG4gICAgICBwYXJhbXNbc2VnbWVudFswXV0gPSBzZWdtZW50WzFdXG4gICAgfVxuXG4gICAgcGFyYW1zID0gZ2V0U2VsZWN0ZWRQYXJhbXMocGFyYWxsZWxSb3V0ZSwgcGFyYW1zKVxuICB9XG5cbiAgcmV0dXJuIHBhcmFtc1xufVxuIl0sIm5hbWVzIjpbImNvbXB1dGVDaGFuZ2VkUGF0aCIsImV4dHJhY3RQYXRoRnJvbUZsaWdodFJvdXRlclN0YXRlIiwiZXh0cmFjdFNvdXJjZVBhZ2VGcm9tRmxpZ2h0Um91dGVyU3RhdGUiLCJnZXRTZWxlY3RlZFBhcmFtcyIsInJlbW92ZUxlYWRpbmdTbGFzaCIsInNlZ21lbnQiLCJzbGljZSIsInNlZ21lbnRUb1BhdGhuYW1lIiwic2VnbWVudFRvU291cmNlUGFnZVBhdGhuYW1lIiwic3RhcnRzV2l0aCIsIlBBR0VfU0VHTUVOVF9LRVkiLCJwYXJhbU5hbWUiLCJkeW5hbWljUGFyYW1UeXBlIiwibm9ybWFsaXplU2VnbWVudHMiLCJzZWdtZW50cyIsInJlZHVjZSIsImFjYyIsImlzR3JvdXBTZWdtZW50IiwiZmxpZ2h0Um91dGVyU3RhdGUiLCJBcnJheSIsImlzQXJyYXkiLCJERUZBVUxUX1NFR01FTlRfS0VZIiwiSU5URVJDRVBUSU9OX1JPVVRFX01BUktFUlMiLCJzb21lIiwibSIsInVuZGVmaW5lZCIsInBhcmFsbGVsUm91dGVzIiwiY2hpbGRyZW5QYXRoIiwiY2hpbGRyZW4iLCJwdXNoIiwia2V5IiwidmFsdWUiLCJPYmplY3QiLCJlbnRyaWVzIiwiY2hpbGRQYXRoIiwiZXh0cmFjdFNvdXJjZVBhZ2VTZWdtZW50c0Zyb21GbGlnaHRSb3V0ZXJTdGF0ZSIsInNvdXJjZVBhZ2VTZWdtZW50cyIsImpvaW4iLCJjb21wdXRlQ2hhbmdlZFBhdGhJbXBsIiwidHJlZUEiLCJ0cmVlQiIsInNlZ21lbnRBIiwicGFyYWxsZWxSb3V0ZXNBIiwic2VnbWVudEIiLCJwYXJhbGxlbFJvdXRlc0IiLCJub3JtYWxpemVkU2VnbWVudEEiLCJub3JtYWxpemVkU2VnbWVudEIiLCJtYXRjaFNlZ21lbnQiLCJwYXJhbGxlbFJvdXRlcktleSIsImNoYW5nZWRQYXRoIiwic3BsaXQiLCJjdXJyZW50VHJlZSIsInBhcmFtcyIsInBhcmFsbGVsUm91dGUiLCJ2YWx1ZXMiLCJpc0R5bmFtaWNQYXJhbWV0ZXIiLCJzZWdtZW50VmFsdWUiLCJpc0NhdGNoQWxsIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/router-reducer/compute-changed-path.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js":
|
||
/*!*****************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js ***!
|
||
\*****************************************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createHrefFromUrl\", ({\n enumerable: true,\n get: function() {\n return createHrefFromUrl;\n }\n}));\nfunction createHrefFromUrl(url, includeHash = true) {\n return url.pathname + url.search + (includeHash ? url.hash : '');\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=create-href-from-url.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2NyZWF0ZS1ocmVmLWZyb20tdXJsLmpzIiwibWFwcGluZ3MiOiI7Ozs7cURBQWdCQTs7O2VBQUFBOzs7QUFBVCxTQUFTQSxrQkFDZEMsR0FBOEMsRUFDOUNDLGNBQXVCLElBQUk7SUFFM0IsT0FBT0QsSUFBSUUsUUFBUSxHQUFHRixJQUFJRyxNQUFNLEdBQUlGLENBQUFBLGNBQWNELElBQUlJLElBQUksR0FBRyxHQUFDO0FBQ2hFIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2NyZWF0ZS1ocmVmLWZyb20tdXJsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBjcmVhdGVIcmVmRnJvbVVybChcbiAgdXJsOiBQaWNrPFVSTCwgJ3BhdGhuYW1lJyB8ICdzZWFyY2gnIHwgJ2hhc2gnPixcbiAgaW5jbHVkZUhhc2g6IGJvb2xlYW4gPSB0cnVlXG4pOiBzdHJpbmcge1xuICByZXR1cm4gdXJsLnBhdGhuYW1lICsgdXJsLnNlYXJjaCArIChpbmNsdWRlSGFzaCA/IHVybC5oYXNoIDogJycpXG59XG4iXSwibmFtZXMiOlsiY3JlYXRlSHJlZkZyb21VcmwiLCJ1cmwiLCJpbmNsdWRlSGFzaCIsInBhdGhuYW1lIiwic2VhcmNoIiwiaGFzaCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js":
|
||
/*!********************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js ***!
|
||
\********************************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createRouterCacheKey\", ({\n enumerable: true,\n get: function() {\n return createRouterCacheKey;\n }\n}));\nconst _segment = __webpack_require__(/*! ../../../shared/lib/segment */ \"(ssr)/./node_modules/next/dist/shared/lib/segment.js\");\nfunction createRouterCacheKey(segment, withoutSearchParameters = false) {\n // if the segment is an array, it means it's a dynamic segment\n // for example, ['lang', 'en', 'd']. We need to convert it to a string to store it as a cache node key.\n if (Array.isArray(segment)) {\n return `${segment[0]}|${segment[1]}|${segment[2]}`;\n }\n // Page segments might have search parameters, ie __PAGE__?foo=bar\n // When `withoutSearchParameters` is true, we only want to return the page segment\n if (withoutSearchParameters && segment.startsWith(_segment.PAGE_SEGMENT_KEY)) {\n return _segment.PAGE_SEGMENT_KEY;\n }\n return segment;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=create-router-cache-key.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2NyZWF0ZS1yb3V0ZXItY2FjaGUta2V5LmpzIiwibWFwcGluZ3MiOiI7Ozs7d0RBR2dCQTs7O2VBQUFBOzs7cUNBRmlCO0FBRTFCLFNBQVNBLHFCQUNkQyxPQUFnQixFQUNoQkMsMEJBQW1DLEtBQUs7SUFFeEMsOERBQThEO0lBQzlELHVHQUF1RztJQUN2RyxJQUFJQyxNQUFNQyxPQUFPLENBQUNILFVBQVU7UUFDMUIsT0FBTyxHQUFHQSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRUEsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUVBLE9BQU8sQ0FBQyxFQUFFLEVBQUU7SUFDcEQ7SUFFQSxrRUFBa0U7SUFDbEUsa0ZBQWtGO0lBQ2xGLElBQUlDLDJCQUEyQkQsUUFBUUksVUFBVSxDQUFDQyxTQUFBQSxnQkFBZ0IsR0FBRztRQUNuRSxPQUFPQSxTQUFBQSxnQkFBZ0I7SUFDekI7SUFFQSxPQUFPTDtBQUNUIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2NyZWF0ZS1yb3V0ZXItY2FjaGUta2V5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2VnbWVudCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci10eXBlcydcbmltcG9ydCB7IFBBR0VfU0VHTUVOVF9LRVkgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL3NlZ21lbnQnXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSb3V0ZXJDYWNoZUtleShcbiAgc2VnbWVudDogU2VnbWVudCxcbiAgd2l0aG91dFNlYXJjaFBhcmFtZXRlcnM6IGJvb2xlYW4gPSBmYWxzZVxuKSB7XG4gIC8vIGlmIHRoZSBzZWdtZW50IGlzIGFuIGFycmF5LCBpdCBtZWFucyBpdCdzIGEgZHluYW1pYyBzZWdtZW50XG4gIC8vIGZvciBleGFtcGxlLCBbJ2xhbmcnLCAnZW4nLCAnZCddLiBXZSBuZWVkIHRvIGNvbnZlcnQgaXQgdG8gYSBzdHJpbmcgdG8gc3RvcmUgaXQgYXMgYSBjYWNoZSBub2RlIGtleS5cbiAgaWYgKEFycmF5LmlzQXJyYXkoc2VnbWVudCkpIHtcbiAgICByZXR1cm4gYCR7c2VnbWVudFswXX18JHtzZWdtZW50WzFdfXwke3NlZ21lbnRbMl19YFxuICB9XG5cbiAgLy8gUGFnZSBzZWdtZW50cyBtaWdodCBoYXZlIHNlYXJjaCBwYXJhbWV0ZXJzLCBpZSBfX1BBR0VfXz9mb289YmFyXG4gIC8vIFdoZW4gYHdpdGhvdXRTZWFyY2hQYXJhbWV0ZXJzYCBpcyB0cnVlLCB3ZSBvbmx5IHdhbnQgdG8gcmV0dXJuIHRoZSBwYWdlIHNlZ21lbnRcbiAgaWYgKHdpdGhvdXRTZWFyY2hQYXJhbWV0ZXJzICYmIHNlZ21lbnQuc3RhcnRzV2l0aChQQUdFX1NFR01FTlRfS0VZKSkge1xuICAgIHJldHVybiBQQUdFX1NFR01FTlRfS0VZXG4gIH1cblxuICByZXR1cm4gc2VnbWVudFxufVxuIl0sIm5hbWVzIjpbImNyZWF0ZVJvdXRlckNhY2hlS2V5Iiwic2VnbWVudCIsIndpdGhvdXRTZWFyY2hQYXJhbWV0ZXJzIiwiQXJyYXkiLCJpc0FycmF5Iiwic3RhcnRzV2l0aCIsIlBBR0VfU0VHTUVOVF9LRVkiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/router-reducer/fetch-server-response.js":
|
||
/*!******************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/router-reducer/fetch-server-response.js ***!
|
||
\******************************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createFetch: function() {\n return createFetch;\n },\n createFromNextReadableStream: function() {\n return createFromNextReadableStream;\n },\n decodeStaticStage: function() {\n return decodeStaticStage;\n },\n fetchServerResponse: function() {\n return fetchServerResponse;\n },\n processFetch: function() {\n return processFetch;\n },\n resolveStaticStageData: function() {\n return resolveStaticStageData;\n }\n});\nconst _client = __webpack_require__(/*! react-server-dom-webpack/client */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-webpack-client.js\");\nconst _invarianterror = __webpack_require__(/*! ../../../shared/lib/invariant-error */ \"(ssr)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nconst _approuterheaders = __webpack_require__(/*! ../app-router-headers */ \"(ssr)/./node_modules/next/dist/client/components/app-router-headers.js\");\nconst _appcallserver = __webpack_require__(/*! ../../app-call-server */ \"(ssr)/./node_modules/next/dist/client/app-call-server.js\");\nconst _appfindsourcemapurl = __webpack_require__(/*! ../../app-find-source-map-url */ \"(ssr)/./node_modules/next/dist/client/app-find-source-map-url.js\");\nconst _flightdatahelpers = __webpack_require__(/*! ../../flight-data-helpers */ \"(ssr)/./node_modules/next/dist/client/flight-data-helpers.js\");\nconst _setcachebustingsearchparam = __webpack_require__(/*! ./set-cache-busting-search-param */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/set-cache-busting-search-param.js\");\nconst _routeparams = __webpack_require__(/*! ../../route-params */ \"(ssr)/./node_modules/next/dist/client/route-params.js\");\nconst _deploymentid = __webpack_require__(/*! ../../../shared/lib/deployment-id */ \"(ssr)/./node_modules/next/dist/shared/lib/deployment-id.js\");\nconst _navigationbuildid = __webpack_require__(/*! ../../navigation-build-id */ \"(ssr)/./node_modules/next/dist/client/navigation-build-id.js\");\nconst _constants = __webpack_require__(/*! ../../../lib/constants */ \"(ssr)/./node_modules/next/dist/lib/constants.js\");\nconst _cache = __webpack_require__(/*! ../segment-cache/cache */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/cache.js\");\nconst _bfcache = __webpack_require__(/*! ../segment-cache/bfcache */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/bfcache.js\");\nconst createFromReadableStream = _client.createFromReadableStream;\nconst createFromFetch = _client.createFromFetch;\nlet createDebugChannel;\nif (true) {\n createDebugChannel = (__webpack_require__(/*! ../../dev/debug-channel */ \"(ssr)/./node_modules/next/dist/client/dev/debug-channel.js\").createDebugChannel);\n}\nfunction doMpaNavigation(url) {\n return (0, _routeparams.urlToUrlWithoutFlightMarker)(new URL(url, location.origin)).toString();\n}\nlet isPageUnloading = false;\nif (false) {}\nasync function fetchServerResponse(url, options) {\n const { flightRouterState, nextUrl } = options;\n const headers = {\n // Enable flight response\n [_approuterheaders.RSC_HEADER]: '1',\n // Provide the current router state\n [_approuterheaders.NEXT_ROUTER_STATE_TREE_HEADER]: (0, _flightdatahelpers.prepareFlightRouterStateForRequest)(flightRouterState, options.isHmrRefresh)\n };\n if ( true && options.isHmrRefresh) {\n headers[_approuterheaders.NEXT_HMR_REFRESH_HEADER] = '1';\n }\n if (nextUrl) {\n headers[_approuterheaders.NEXT_URL] = nextUrl;\n }\n // In static export mode, we need to modify the URL to request the .txt file,\n // but we should preserve the original URL for the canonical URL and error handling.\n const originalUrl = url;\n try {\n if (false) {}\n // Typically, during a navigation, we decode the response using Flight's\n // `createFromFetch` API, which accepts a `fetch` promise.\n // TODO: Remove this check once the old PPR flag is removed\n const isLegacyPPR = false && 0;\n const shouldImmediatelyDecode = !isLegacyPPR;\n const res = await createFetch(url, headers, 'auto', shouldImmediatelyDecode);\n const responseUrl = (0, _routeparams.urlToUrlWithoutFlightMarker)(new URL(res.url));\n const canonicalUrl = res.redirected ? responseUrl : originalUrl;\n const contentType = res.headers.get('content-type') || '';\n const interception = !!res.headers.get('vary')?.includes(_approuterheaders.NEXT_URL);\n const postponed = !!res.headers.get(_approuterheaders.NEXT_DID_POSTPONE_HEADER);\n let isFlightResponse = contentType.startsWith(_approuterheaders.RSC_CONTENT_TYPE_HEADER);\n if (false) {}\n // If fetch returns something different than flight response handle it like a mpa navigation\n // If the fetch was not 200, we also handle it like a mpa navigation\n if (!isFlightResponse || !res.ok || !res.body) {\n // in case the original URL came with a hash, preserve it before redirecting to the new URL\n if (url.hash) {\n responseUrl.hash = url.hash;\n }\n return doMpaNavigation(responseUrl.toString());\n }\n // We may navigate to a page that requires a different Webpack runtime.\n // In prod, every page will have the same Webpack runtime.\n // In dev, the Webpack runtime is minimal for each page.\n // We need to ensure the Webpack runtime is updated before executing client-side JS of the new page.\n // TODO: This needs to happen in the Flight Client.\n // Or Webpack needs to include the runtime update in the Flight response as\n // a blocking script.\n if (true) {\n await (__webpack_require__(/*! ../../dev/hot-reloader/app/hot-reloader-app */ \"(ssr)/./node_modules/next/dist/client/dev/hot-reloader/app/hot-reloader-app.js\").waitForWebpackRuntimeHotUpdate)();\n }\n let flightResponsePromise = res.flightResponsePromise;\n if (flightResponsePromise === null) {\n // Typically, `createFetch` would have already started decoding the\n // Flight response. If it hasn't, though, we need to decode it now.\n // TODO: This should only be reachable if legacy PPR is enabled (i.e. PPR\n // without Cache Components). Remove this branch once legacy PPR\n // is deleted.\n flightResponsePromise = createFromNextReadableStream(res.body, headers, {\n allowPartialStream: postponed\n });\n }\n const [flightResponse, cacheData] = await Promise.all([\n flightResponsePromise,\n res.cacheData\n ]);\n if ((res.headers.get(_constants.NEXT_NAV_DEPLOYMENT_ID_HEADER) ?? flightResponse.b) !== (0, _navigationbuildid.getNavigationBuildId)()) {\n // The server build does not match the client build.\n return doMpaNavigation(res.url);\n }\n const normalizedFlightData = (0, _flightdatahelpers.normalizeFlightData)(flightResponse.f);\n if (typeof normalizedFlightData === 'string') {\n return doMpaNavigation(normalizedFlightData);\n }\n const staticStageData = cacheData !== null ? await resolveStaticStageData(cacheData, flightResponse, headers) : null;\n return {\n flightData: normalizedFlightData,\n canonicalUrl: canonicalUrl,\n // TODO: We should be able to read this from the rewrite header, not the\n // Flight response. Theoretically they should always agree, but there are\n // currently some cases where it's incorrect for interception routes. We\n // can always trust the value in the response body. However, per-segment\n // prefetch responses don't embed the value in the body; they rely on the\n // header alone. So we need to investigate why the header is sometimes\n // wrong for interception routes.\n renderedSearch: flightResponse.q,\n couldBeIntercepted: interception,\n supportsPerSegmentPrefetching: flightResponse.S,\n postponed,\n // The dynamicStaleTime is only present in the response body when\n // a page exports unstable_dynamicStaleTime and this is a dynamic render.\n // When absent (UnknownDynamicStaleTime), the client falls back to the\n // global DYNAMIC_STALETIME_MS. The value is in seconds.\n dynamicStaleTime: flightResponse.d ?? _bfcache.UnknownDynamicStaleTime,\n staticStageData,\n runtimePrefetchStream: flightResponse.p ?? null,\n responseHeaders: res.headers,\n debugInfo: flightResponsePromise._debugInfo ?? null\n };\n } catch (err) {\n if (!isPageUnloading) {\n console.error(`Failed to fetch RSC payload for ${originalUrl}. Falling back to browser navigation.`, err);\n }\n // If fetch fails handle it like a mpa navigation\n // TODO-APP: Add a test for the case where a CORS request fails, e.g. external url redirect coming from the response.\n // See https://github.com/vercel/next.js/issues/43605#issuecomment-1451617521 for a reproduction.\n return originalUrl.toString();\n }\n}\nasync function processFetch(response) {\n if (false) {}\n return {\n response,\n cacheData: null\n };\n}\nasync function resolveStaticStageData(cacheData, flightResponse, headers) {\n const { isResponsePartial, responseBodyClone } = cacheData;\n if (responseBodyClone) {\n if (!isResponsePartial) {\n // Fully static — cache the entire decoded response as-is.\n responseBodyClone.cancel();\n return {\n response: flightResponse,\n isResponsePartial: false\n };\n }\n if (flightResponse.l !== undefined) {\n // Partially static — truncate the body clone at the byte boundary and\n // decode it.\n const response = await decodeStaticStage(responseBodyClone, flightResponse.l, headers);\n return {\n response,\n isResponsePartial: true\n };\n }\n // No caching — cancel the unused clone.\n responseBodyClone.cancel();\n }\n return null;\n}\nasync function decodeStaticStage(responseBodyClone, staticStageByteLengthPromise, headers) {\n const staticStageByteLength = await staticStageByteLengthPromise;\n const truncatedStream = truncateStream(responseBodyClone, staticStageByteLength);\n return createFromNextReadableStream(truncatedStream, headers, {\n allowPartialStream: true\n });\n}\nasync function createFetch(url, headers, fetchPriority, shouldImmediatelyDecode, signal) {\n // TODO: In output: \"export\" mode, the headers do nothing. Omit them (and the\n // cache busting search param) from the request so they're\n // maximally cacheable.\n if (false) {}\n const deploymentId = (0, _deploymentid.getDeploymentId)();\n if (deploymentId) {\n headers['x-deployment-id'] = deploymentId;\n }\n if (true) {\n if (self.__next_r) {\n headers[_approuterheaders.NEXT_HTML_REQUEST_ID_HEADER] = self.__next_r;\n }\n // Create a new request ID for the server action request. The server uses\n // this to tag debug information sent via WebSocket to the client, which\n // then routes those chunks to the debug channel associated with this ID.\n headers[_approuterheaders.NEXT_REQUEST_ID_HEADER] = crypto.getRandomValues(new Uint32Array(1))[0].toString(16);\n }\n const fetchOptions = {\n // Backwards compat for older browsers. `same-origin` is the default in modern browsers.\n credentials: 'same-origin',\n headers,\n priority: fetchPriority || undefined,\n signal\n };\n // `fetchUrl` is slightly different from `url` because we add a cache-busting\n // search param to it. This should not leak outside of this function, so we\n // track them separately.\n let fetchUrl = new URL(url);\n (0, _setcachebustingsearchparam.setCacheBustingSearchParam)(fetchUrl, headers);\n let processed = fetch(fetchUrl, fetchOptions).then(processFetch);\n let fetchPromise = processed.then(({ response })=>response);\n // Immediately pass the fetch promise to the Flight client so that the debug\n // info includes the latency from the client to the server. The internal timer\n // in React starts as soon as `createFromFetch` is called.\n //\n // The only case where we don't do this is during a prefetch, because a\n // top-level prefetch response never blocks a navigation; if it hasn't already\n // been written into the cache by the time the navigation happens, the router\n // will go straight to a dynamic request.\n let flightResponsePromise = shouldImmediatelyDecode ? createFromNextFetch(fetchPromise, headers) : null;\n let browserResponse = await fetchPromise;\n // If the server responds with a redirect (e.g. 307), and the redirected\n // location does not contain the cache busting search param set in the\n // original request, the response is likely invalid — when following the\n // redirect, the browser forwards the request headers, but since the cache\n // busting search param is missing, the server will reject the request due to\n // a mismatch.\n //\n // Ideally, we would be able to intercept the redirect response and perform it\n // manually, instead of letting the browser automatically follow it, but this\n // is not allowed by the fetch API.\n //\n // So instead, we must \"replay\" the redirect by fetching the new location\n // again, but this time we'll append the cache busting search param to prevent\n // a mismatch.\n //\n // TODO: We can optimize Next.js's built-in middleware APIs by returning a\n // custom status code, to prevent the browser from automatically following it.\n //\n // This does not affect Server Action-based redirects; those are encoded\n // differently, as part of the Flight body. It only affects redirects that\n // occur in a middleware or a third-party proxy.\n let redirected = browserResponse.redirected;\n if (false) {}\n // Remove the cache busting search param from the response URL, to prevent it\n // from leaking outside of this function.\n const responseUrl = new URL(browserResponse.url, fetchUrl);\n responseUrl.searchParams.delete(_approuterheaders.NEXT_RSC_UNION_QUERY);\n const rscResponse = {\n url: responseUrl.href,\n // This is true if any redirects occurred, either automatically by the\n // browser, or manually by us. So it's different from\n // `browserResponse.redirected`, which only tells us whether the browser\n // followed a redirect, and only for the last response in the chain.\n redirected,\n // These can be copied from the last browser response we received. We\n // intentionally only expose the subset of fields that are actually used\n // elsewhere in the codebase.\n ok: browserResponse.ok,\n headers: browserResponse.headers,\n body: browserResponse.body,\n status: browserResponse.status,\n // This is the exact promise returned by `createFromFetch`. It contains\n // debug information that we need to transfer to any derived promises that\n // are later rendered by React.\n flightResponsePromise: flightResponsePromise,\n cacheData: processed.then(({ cacheData })=>cacheData)\n };\n return rscResponse;\n}\nfunction createFromNextReadableStream(flightStream, requestHeaders, options) {\n return createFromReadableStream(flightStream, {\n callServer: _appcallserver.callServer,\n findSourceMapURL: _appfindsourcemapurl.findSourceMapURL,\n debugChannel: createDebugChannel && createDebugChannel(requestHeaders),\n unstable_allowPartialStream: options?.allowPartialStream\n });\n}\nfunction createFromNextFetch(promiseForResponse, requestHeaders) {\n return createFromFetch(promiseForResponse, {\n callServer: _appcallserver.callServer,\n findSourceMapURL: _appfindsourcemapurl.findSourceMapURL,\n debugChannel: createDebugChannel && createDebugChannel(requestHeaders)\n });\n}\nfunction truncateStream(stream, byteLength) {\n const reader = stream.getReader();\n let remaining = byteLength;\n return new ReadableStream({\n async pull (controller) {\n if (remaining <= 0) {\n reader.cancel();\n controller.close();\n return;\n }\n const { done, value } = await reader.read();\n if (done) {\n controller.close();\n return;\n }\n if (value.byteLength <= remaining) {\n controller.enqueue(value);\n remaining -= value.byteLength;\n } else {\n controller.enqueue(value.subarray(0, remaining));\n remaining = 0;\n reader.cancel();\n controller.close();\n }\n },\n cancel () {\n reader.cancel();\n }\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=fetch-server-response.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2ZldGNoLXNlcnZlci1yZXNwb25zZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFzY3NCQSxXQUFXO2VBQVhBOztJQStKTkMsNEJBQTRCO2VBQTVCQTs7SUFoTE1DLGlCQUFpQjtlQUFqQkE7O0lBN1NBQyxtQkFBbUI7ZUFBbkJBOztJQThNQUMsWUFBWTtlQUFaQTs7SUFzREFDLHNCQUFzQjtlQUF0QkE7OztvQ0FyWWY7NENBRXdCOzhDQW9CeEI7MkNBQ29CO2lEQUNNOytDQUsxQjt3REFDb0M7eUNBQ0M7MENBRVo7K0NBQ0s7dUNBQ1M7bUNBQ1g7cUNBQ0s7QUFFeEMsTUFBTUMsMkJBQ0pDLFFBQUFBLHdCQUErQjtBQUNqQyxNQUFNQyxrQkFDSkMsUUFBQUEsZUFBc0I7QUFFeEIsSUFBSUM7QUFJSixJQUFJQyxJQUF1RSxFQUFFO0lBQzNFRCxxQkFDRUsscUlBQ2tCO0FBQ3RCO0FBb0RBLFNBQVNDLGdCQUFnQkMsR0FBVztJQUNsQyxPQUFPQyxDQUFBQSxHQUFBQSxhQUFBQSwyQkFBQUEsRUFBNEIsSUFBSUMsSUFBSUYsS0FBS0csU0FBU0MsTUFBTSxHQUFHQyxRQUFRO0FBQzVFO0FBRUEsSUFBSUMsa0JBQWtCO0FBRXRCLElBQUksS0FBNkIsRUFBRSxFQWFsQztBQU1NLGVBQWVwQixvQkFDcEJjLEdBQVEsRUFDUlMsT0FBbUM7SUFFbkMsTUFBTSxFQUFFQyxpQkFBaUIsRUFBRUMsT0FBTyxFQUFFLEdBQUdGO0lBRXZDLE1BQU1HLFVBQTBCO1FBQzlCLHlCQUF5QjtRQUN6QixDQUFDQyxrQkFBQUEsVUFBVSxDQUFDLEVBQUU7UUFDZCxtQ0FBbUM7UUFDbkMsQ0FBQ0Msa0JBQUFBLDZCQUE2QixDQUFDLEVBQUVDLENBQUFBLEdBQUFBLG1CQUFBQSxrQ0FBQUEsRUFDL0JMLG1CQUNBRCxRQUFRTyxZQUFZO0lBRXhCO0lBRUEsSUFBSXRCLEtB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ZTtRQUN4QixNQUFNQyxNQUFLQyxVQUFVO1lBQ25CLElBQUlILGFBQWEsR0FBRztnQkFDbEJGLE9BQU85QyxNQUFNO2dCQUNibUQsV0FBV0MsS0FBSztnQkFDaEI7WUFDRjtZQUVBLE1BQU0sRUFBRUMsSUFBSSxFQUFFdEQsS0FBSyxFQUFFLEdBQUcsTUFBTStDLE9BQU9RLElBQUk7WUFFekMsSUFBSUQsTUFBTTtnQkFDUkYsV0FBV0MsS0FBSztnQkFDaEI7WUFDRjtZQUVBLElBQUlyRCxNQUFNOEMsVUFBVSxJQUFJRyxXQUFXO2dCQUNqQ0csV0FBV0ksT0FBTyxDQUFDeEQ7Z0JBQ25CaUQsYUFBYWpELE1BQU04QyxVQUFVO1lBQy9CLE9BQU87Z0JBQ0xNLFdBQVdJLE9BQU8sQ0FBQ3hELE1BQU15RCxRQUFRLENBQUMsR0FBR1I7Z0JBQ3JDQSxZQUFZO2dCQUNaRixPQUFPOUMsTUFBTTtnQkFDYm1ELFdBQVdDLEtBQUs7WUFDbEI7UUFDRjtRQUNBcEQ7WUFDRThDLE9BQU85QyxNQUFNO1FBQ2Y7SUFDRjtBQUNGIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2ZldGNoLXNlcnZlci1yZXNwb25zZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuLy8gVE9ETzogRXhwbGljaXRseSBpbXBvcnQgZnJvbSBjbGllbnQuYnJvd3NlclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IHtcbiAgY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtIGFzIGNyZWF0ZUZyb21SZWFkYWJsZVN0cmVhbUJyb3dzZXIsXG4gIGNyZWF0ZUZyb21GZXRjaCBhcyBjcmVhdGVGcm9tRmV0Y2hCcm93c2VyLFxufSBmcm9tICdyZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2svY2xpZW50J1xuXG5pbXBvcnQgeyBJbnZhcmlhbnRFcnJvciB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvaW52YXJpYW50LWVycm9yJ1xuaW1wb3J0IHR5cGUge1xuICBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgSW5pdGlhbFJTQ1BheWxvYWQsXG4gIE5hdmlnYXRpb25GbGlnaHRSZXNwb25zZSxcbn0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLXR5cGVzJ1xuXG5pbXBvcnQge1xuICB0eXBlIE5FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUixcbiAgdHlwZSBORVhUX1JPVVRFUl9TRUdNRU5UX1BSRUZFVENIX0hFQURFUixcbiAgdHlwZSBORVhUX0lOU1RBTlRfUFJFRkVUQ0hfSEVBREVSLFxuICBORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUixcbiAgTkVYVF9SU0NfVU5JT05fUVVFUlksXG4gIE5FWFRfVVJMLFxuICBSU0NfSEVBREVSLFxuICBSU0NfQ09OVEVOVF9UWVBFX0hFQURFUixcbiAgTkVYVF9ITVJfUkVGUkVTSF9IRUFERVIsXG4gIE5FWFRfRElEX1BPU1RQT05FX0hFQURFUixcbiAgTkVYVF9IVE1MX1JFUVVFU1RfSURfSEVBREVSLFxuICBORVhUX1JFUVVFU1RfSURfSEVBREVSLFxufSBmcm9tICcuLi9hcHAtcm91dGVyLWhlYWRlcnMnXG5pbXBvcnQgeyBjYWxsU2VydmVyIH0gZnJvbSAnLi4vLi4vYXBwLWNhbGwtc2VydmVyJ1xuaW1wb3J0IHsgZmluZFNvdXJjZU1hcFVSTCB9IGZyb20gJy4uLy4uL2FwcC1maW5kLXNvdXJjZS1tYXAtdXJsJ1xuaW1wb3J0IHtcbiAgbm9ybWFsaXplRmxpZ2h0RGF0YSxcbiAgcHJlcGFyZUZsaWdodFJvdXRlclN0YXRlRm9yUmVxdWVzdCxcbiAgdHlwZSBOb3JtYWxpemVkRmxpZ2h0RGF0YSxcbn0gZnJvbSAnLi4vLi4vZmxpZ2h0LWRhdGEtaGVscGVycydcbmltcG9ydCB7IHNldENhY2hlQnVzdGluZ1NlYXJjaFBhcmFtIH0gZnJvbSAnLi9zZXQtY2FjaGUtYnVzdGluZy1zZWFyY2gtcGFyYW0nXG5pbXBvcnQgeyB1cmxUb1VybFdpdGhvdXRGbGlnaHRNYXJrZXIgfSBmcm9tICcuLi8uLi9yb3V0ZS1wYXJhbXMnXG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRTZWFyY2ggfSBmcm9tICcuLi9zZWdtZW50LWNhY2hlL2NhY2hlLWtleSdcbmltcG9ydCB7IGdldERlcGxveW1lbnRJZCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvZGVwbG95bWVudC1pZCdcbmltcG9ydCB7IGdldE5hdmlnYXRpb25CdWlsZElkIH0gZnJvbSAnLi4vLi4vbmF2aWdhdGlvbi1idWlsZC1pZCdcbmltcG9ydCB7IE5FWFRfTkFWX0RFUExPWU1FTlRfSURfSEVBREVSIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cydcbmltcG9ydCB7IHN0cmlwSXNQYXJ0aWFsQnl0ZSB9IGZyb20gJy4uL3NlZ21lbnQtY2FjaGUvY2FjaGUnXG5pbXBvcnQgeyBVbmtub3duRHluYW1pY1N0YWxlVGltZSB9IGZyb20gJy4uL3NlZ21lbnQtY2FjaGUvYmZjYWNoZSdcblxuY29uc3QgY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtID1cbiAgY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtQnJvd3NlciBhcyAodHlwZW9mIGltcG9ydCgncmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrL2NsaWVudC5icm93c2VyJykpWydjcmVhdGVGcm9tUmVhZGFibGVTdHJlYW0nXVxuY29uc3QgY3JlYXRlRnJvbUZldGNoID1cbiAgY3JlYXRlRnJvbUZldGNoQnJvd3NlciBhcyAodHlwZW9mIGltcG9ydCgncmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrL2NsaWVudC5icm93c2VyJykpWydjcmVhdGVGcm9tRmV0Y2gnXVxuXG5sZXQgY3JlYXRlRGVidWdDaGFubmVsOlxuICB8IHR5cGVvZiBpbXBvcnQoJy4uLy4uL2Rldi9kZWJ1Zy1jaGFubmVsJykuY3JlYXRlRGVidWdDaGFubmVsXG4gIHwgdW5kZWZpbmVkXG5cbmlmIChwcm9jZXNzLmVudi5fX05FWFRfREVWX1NFUlZFUiAmJiBwcm9jZXNzLmVudi5fX05FWFRfUkVBQ1RfREVCVUdfQ0hBTk5FTCkge1xuICBjcmVhdGVEZWJ1Z0NoYW5uZWwgPSAoXG4gICAgcmVxdWlyZSgnLi4vLi4vZGV2L2RlYnVnLWNoYW5uZWwnKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi8uLi9kZXYvZGVidWctY2hhbm5lbCcpXG4gICkuY3JlYXRlRGVidWdDaGFubmVsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmV0Y2hTZXJ2ZXJSZXNwb25zZU9wdGlvbnMge1xuICByZWFkb25seSBmbGlnaHRSb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGVcbiAgcmVhZG9ubHkgbmV4dFVybDogc3RyaW5nIHwgbnVsbFxuICByZWFkb25seSBpc0htclJlZnJlc2g/OiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIFN0YXRpY1N0YWdlRGF0YTxcbiAgVCBleHRlbmRzXG4gICAgfCBOYXZpZ2F0aW9uRmxpZ2h0UmVzcG9uc2VcbiAgICB8IEluaXRpYWxSU0NQYXlsb2FkID0gTmF2aWdhdGlvbkZsaWdodFJlc3BvbnNlLFxuPiA9IHtcbiAgcmVhZG9ubHkgcmVzcG9uc2U6IFRcbiAgcmVhZG9ubHkgaXNSZXNwb25zZVBhcnRpYWw6IGJvb2xlYW5cbn1cblxudHlwZSBTcGFGZXRjaFNlcnZlclJlc3BvbnNlUmVzdWx0ID0ge1xuICBmbGlnaHREYXRhOiBOb3JtYWxpemVkRmxpZ2h0RGF0YVtdXG4gIGNhbm9uaWNhbFVybDogVVJMXG4gIHJlbmRlcmVkU2VhcmNoOiBOb3JtYWxpemVkU2VhcmNoXG4gIGNvdWxkQmVJbnRlcmNlcHRlZDogYm9vbGVhblxuICBzdXBwb3J0c1BlclNlZ21lbnRQcmVmZXRjaGluZzogYm9vbGVhblxuICBwb3N0cG9uZWQ6IGJvb2xlYW5cbiAgZHluYW1pY1N0YWxlVGltZTogbnVtYmVyXG4gIHN0YXRpY1N0YWdlRGF0YTogU3RhdGljU3RhZ2VEYXRhIHwgbnVsbFxuICBydW50aW1lUHJlZmV0Y2hTdHJlYW06IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+IHwgbnVsbFxuICByZXNwb25zZUhlYWRlcnM6IEhlYWRlcnNcbiAgZGVidWdJbmZvOiBBcnJheTxhbnk+IHwgbnVsbFxufVxuXG50eXBlIE1wYUZldGNoU2VydmVyUmVzcG9uc2VSZXN1bHQgPSBzdHJpbmdcblxuZXhwb3J0IHR5cGUgRmV0Y2hTZXJ2ZXJSZXNwb25zZVJlc3VsdCA9XG4gIHwgTXBhRmV0Y2hTZXJ2ZXJSZXNwb25zZVJlc3VsdFxuICB8IFNwYUZldGNoU2VydmVyUmVzcG9uc2VSZXN1bHRcblxuZXhwb3J0IHR5cGUgUmVxdWVzdEhlYWRlcnMgPSB7XG4gIFtSU0NfSEVBREVSXT86ICcxJ1xuICBbTkVYVF9ST1VURVJfU1RBVEVfVFJFRV9IRUFERVJdPzogc3RyaW5nXG4gIFtORVhUX1VSTF0/OiBzdHJpbmdcbiAgW05FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUl0/OiAnMScgfCAnMidcbiAgW05FWFRfUk9VVEVSX1NFR01FTlRfUFJFRkVUQ0hfSEVBREVSXT86IHN0cmluZ1xuICAneC1kZXBsb3ltZW50LWlkJz86IHN0cmluZ1xuICBbTkVYVF9ITVJfUkVGUkVTSF9IRUFERVJdPzogJzEnXG4gIC8vIEEgaGVhZGVyIHRoYXQgaXMgb25seSBhZGRlZCBpbiB0ZXN0IG1vZGUgdG8gYXNzZXJ0IG9uIGZldGNoIHByaW9yaXR5XG4gICdOZXh0LVRlc3QtRmV0Y2gtUHJpb3JpdHknPzogUmVxdWVzdEluaXRbJ3ByaW9yaXR5J11cbiAgW05FWFRfSFRNTF9SRVFVRVNUX0lEX0hFQURFUl0/OiBzdHJpbmcgLy8gZGV2LW9ubHlcbiAgW05FWFRfUkVRVUVTVF9JRF9IRUFERVJdPzogc3RyaW5nIC8vIGRldi1vbmx5XG4gIFtORVhUX0lOU1RBTlRfUFJFRkVUQ0hfSEVBREVSXT86ICcxJyAvLyB0ZXN0aW5nIEFQSSBvbmx5XG59XG5cbmZ1bmN0aW9uIGRvTXBhTmF2aWdhdGlvbih1cmw6IHN0cmluZyk6IEZldGNoU2VydmVyUmVzcG9uc2VSZXN1bHQge1xuICByZXR1cm4gdXJsVG9VcmxXaXRob3V0RmxpZ2h0TWFya2VyKG5ldyBVUkwodXJsLCBsb2NhdGlvbi5vcmlnaW4pKS50b1N0cmluZygpXG59XG5cbmxldCBpc1BhZ2VVbmxvYWRpbmcgPSBmYWxzZVxuXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgLy8gVHJhY2sgd2hlbiB0aGUgcGFnZSBpcyB1bmxvYWRpbmcsIGUuZy4gZHVlIHRvIHJlbG9hZGluZyB0aGUgcGFnZSBvclxuICAvLyBwZXJmb3JtaW5nIGhhcmQgbmF2aWdhdGlvbnMuIFRoaXMgYWxsb3dzIHVzIHRvIHN1cHByZXNzIGVycm9yIGxvZ2dpbmcgd2hlblxuICAvLyB0aGUgYnJvd3NlciBjYW5jZWxzIGluLWZsaWdodCByZXF1ZXN0cyBkdXJpbmcgcGFnZSB1bmxvYWQuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwYWdlaGlkZScsICgpID0+IHtcbiAgICBpc1BhZ2VVbmxvYWRpbmcgPSB0cnVlXG4gIH0pXG5cbiAgLy8gUmVzZXQgdGhlIGZsYWcgb24gcGFnZXNob3csIGUuZy4gd2hlbiBuYXZpZ2F0aW5nIGJhY2sgYW5kIHRoZSBKYXZhU2NyaXB0XG4gIC8vIGV4ZWN1dGlvbiBjb250ZXh0IGlzIHJlc3RvcmVkIGJ5IHRoZSBicm93c2VyLlxuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncGFnZXNob3cnLCAoKSA9PiB7XG4gICAgaXNQYWdlVW5sb2FkaW5nID0gZmFsc2VcbiAgfSlcbn1cblxuLyoqXG4gKiBGZXRjaCB0aGUgZmxpZ2h0IGRhdGEgZm9yIHRoZSBwcm92aWRlZCB1cmwuIFRha2VzIGluIHRoZSBjdXJyZW50IHJvdXRlciBzdGF0ZVxuICogdG8gZGVjaWRlIHdoYXQgdG8gcmVuZGVyIHNlcnZlci1zaWRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hTZXJ2ZXJSZXNwb25zZShcbiAgdXJsOiBVUkwsXG4gIG9wdGlvbnM6IEZldGNoU2VydmVyUmVzcG9uc2VPcHRpb25zXG4pOiBQcm9taXNlPEZldGNoU2VydmVyUmVzcG9uc2VSZXN1bHQ+IHtcbiAgY29uc3QgeyBmbGlnaHRSb3V0ZXJTdGF0ZSwgbmV4dFVybCB9ID0gb3B0aW9uc1xuXG4gIGNvbnN0IGhlYWRlcnM6IFJlcXVlc3RIZWFkZXJzID0ge1xuICAgIC8vIEVuYWJsZSBmbGlnaHQgcmVzcG9uc2VcbiAgICBbUlNDX0hFQURFUl06ICcxJyxcbiAgICAvLyBQcm92aWRlIHRoZSBjdXJyZW50IHJvdXRlciBzdGF0ZVxuICAgIFtORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUl06IHByZXBhcmVGbGlnaHRSb3V0ZXJTdGF0ZUZvclJlcXVlc3QoXG4gICAgICBmbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgICAgIG9wdGlvbnMuaXNIbXJSZWZyZXNoXG4gICAgKSxcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50JyAmJiBvcHRpb25zLmlzSG1yUmVmcmVzaCkge1xuICAgIGhlYWRlcnNbTkVYVF9ITVJfUkVGUkVTSF9IRUFERVJdID0gJzEnXG4gIH1cblxuICBpZiAobmV4dFVybCkge1xuICAgIGhlYWRlcnNbTkVYVF9VUkxdID0gbmV4dFVybFxuICB9XG5cbiAgLy8gSW4gc3RhdGljIGV4cG9ydCBtb2RlLCB3ZSBuZWVkIHRvIG1vZGlmeSB0aGUgVVJMIHRvIHJlcXVlc3QgdGhlIC50eHQgZmlsZSxcbiAgLy8gYnV0IHdlIHNob3VsZCBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgVVJMIGZvciB0aGUgY2Fub25pY2FsIFVSTCBhbmQgZXJyb3IgaGFuZGxpbmcuXG4gIGNvbnN0IG9yaWdpbmFsVXJsID0gdXJsXG5cbiAgdHJ5IHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9DT05GSUdfT1VUUFVUID09PSAnZXhwb3J0Jykge1xuICAgICAgICAvLyBJbiBcIm91dHB1dDogZXhwb3J0XCIgbW9kZSwgd2UgY2FuJ3QgcmVseSBvbiBoZWFkZXJzIHRvIGRpc3Rpbmd1aXNoXG4gICAgICAgIC8vIGJldHdlZW4gSFRNTCBhbmQgUlNDIHJlcXVlc3RzLiBJbnN0ZWFkLCB3ZSBhcHBlbmQgYW4gZXh0cmEgcHJlZml4XG4gICAgICAgIC8vIHRvIHRoZSByZXF1ZXN0LlxuICAgICAgICB1cmwgPSBuZXcgVVJMKHVybClcbiAgICAgICAgaWYgKHVybC5wYXRobmFtZS5lbmRzV2l0aCgnLycpKSB7XG4gICAgICAgICAgdXJsLnBhdGhuYW1lICs9ICdpbmRleC50eHQnXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdXJsLnBhdGhuYW1lICs9ICcudHh0J1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVHlwaWNhbGx5LCBkdXJpbmcgYSBuYXZpZ2F0aW9uLCB3ZSBkZWNvZGUgdGhlIHJlc3BvbnNlIHVzaW5nIEZsaWdodCdzXG4gICAgLy8gYGNyZWF0ZUZyb21GZXRjaGAgQVBJLCB3aGljaCBhY2NlcHRzIGEgYGZldGNoYCBwcm9taXNlLlxuICAgIC8vIFRPRE86IFJlbW92ZSB0aGlzIGNoZWNrIG9uY2UgdGhlIG9sZCBQUFIgZmxhZyBpcyByZW1vdmVkXG4gICAgY29uc3QgaXNMZWdhY3lQUFIgPVxuICAgICAgcHJvY2Vzcy5lbnYuX19ORVhUX1BQUiAmJiAhcHJvY2Vzcy5lbnYuX19ORVhUX0NBQ0hFX0NPTVBPTkVOVFNcbiAgICBjb25zdCBzaG91bGRJbW1lZGlhdGVseURlY29kZSA9ICFpc0xlZ2FjeVBQUlxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGNyZWF0ZUZldGNoPE5hdmlnYXRpb25GbGlnaHRSZXNwb25zZT4oXG4gICAgICB1cmwsXG4gICAgICBoZWFkZXJzLFxuICAgICAgJ2F1dG8nLFxuICAgICAgc2hvdWxkSW1tZWRpYXRlbHlEZWNvZGVcbiAgICApXG5cbiAgICBjb25zdCByZXNwb25zZVVybCA9IHVybFRvVXJsV2l0aG91dEZsaWdodE1hcmtlcihuZXcgVVJMKHJlcy51cmwpKVxuICAgIGNvbnN0IGNhbm9uaWNhbFVybCA9IHJlcy5yZWRpcmVjdGVkID8gcmVzcG9uc2VVcmwgOiBvcmlnaW5hbFVybFxuXG4gICAgY29uc3QgY29udGVudFR5cGUgPSByZXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpIHx8ICcnXG4gICAgY29uc3QgaW50ZXJjZXB0aW9uID0gISFyZXMuaGVhZGVycy5nZXQoJ3ZhcnknKT8uaW5jbHVkZXMoTkVYVF9VUkwpXG4gICAgY29uc3QgcG9zdHBvbmVkID0gISFyZXMuaGVhZGVycy5nZXQoTkVYVF9ESURfUE9TVFBPTkVfSEVBREVSKVxuICAgIGxldCBpc0ZsaWdodFJlc3BvbnNlID0gY29udGVudFR5cGUuc3RhcnRzV2l0aChSU0NfQ09OVEVOVF9UWVBFX0hFQURFUilcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0NPTkZJR19PVVRQVVQgPT09ICdleHBvcnQnKSB7XG4gICAgICAgIGlmICghaXNGbGlnaHRSZXNwb25zZSkge1xuICAgICAgICAgIGlzRmxpZ2h0UmVzcG9uc2UgPSBjb250ZW50VHlwZS5zdGFydHNXaXRoKCd0ZXh0L3BsYWluJylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIGZldGNoIHJldHVybnMgc29tZXRoaW5nIGRpZmZlcmVudCB0aGFuIGZsaWdodCByZXNwb25zZSBoYW5kbGUgaXQgbGlrZSBhIG1wYSBuYXZpZ2F0aW9uXG4gICAgLy8gSWYgdGhlIGZldGNoIHdhcyBub3QgMjAwLCB3ZSBhbHNvIGhhbmRsZSBpdCBsaWtlIGEgbXBhIG5hdmlnYXRpb25cbiAgICBpZiAoIWlzRmxpZ2h0UmVzcG9uc2UgfHwgIXJlcy5vayB8fCAhcmVzLmJvZHkpIHtcbiAgICAgIC8vIGluIGNhc2UgdGhlIG9yaWdpbmFsIFVSTCBjYW1lIHdpdGggYSBoYXNoLCBwcmVzZXJ2ZSBpdCBiZWZvcmUgcmVkaXJlY3RpbmcgdG8gdGhlIG5ldyBVUkxcbiAgICAgIGlmICh1cmwuaGFzaCkge1xuICAgICAgICByZXNwb25zZVVybC5oYXNoID0gdXJsLmhhc2hcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRvTXBhTmF2aWdhdGlvbihyZXNwb25zZVVybC50b1N0cmluZygpKVxuICAgIH1cblxuICAgIC8vIFdlIG1heSBuYXZpZ2F0ZSB0byBhIHBhZ2UgdGhhdCByZXF1aXJlcyBhIGRpZmZlcmVudCBXZWJwYWNrIHJ1bnRpbWUuXG4gICAgLy8gSW4gcHJvZCwgZXZlcnkgcGFnZSB3aWxsIGhhdmUgdGhlIHNhbWUgV2VicGFjayBydW50aW1lLlxuICAgIC8vIEluIGRldiwgdGhlIFdlYnBhY2sgcnVudGltZSBpcyBtaW5pbWFsIGZvciBlYWNoIHBhZ2UuXG4gICAgLy8gV2UgbmVlZCB0byBlbnN1cmUgdGhlIFdlYnBhY2sgcnVudGltZSBpcyB1cGRhdGVkIGJlZm9yZSBleGVjdXRpbmcgY2xpZW50LXNpZGUgSlMgb2YgdGhlIG5ldyBwYWdlLlxuICAgIC8vIFRPRE86IFRoaXMgbmVlZHMgdG8gaGFwcGVuIGluIHRoZSBGbGlnaHQgQ2xpZW50LlxuICAgIC8vIE9yIFdlYnBhY2sgbmVlZHMgdG8gaW5jbHVkZSB0aGUgcnVudGltZSB1cGRhdGUgaW4gdGhlIEZsaWdodCByZXNwb25zZSBhc1xuICAgIC8vIGEgYmxvY2tpbmcgc2NyaXB0LlxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICFwcm9jZXNzLmVudi5UVVJCT1BBQ0spIHtcbiAgICAgIGF3YWl0IChcbiAgICAgICAgcmVxdWlyZSgnLi4vLi4vZGV2L2hvdC1yZWxvYWRlci9hcHAvaG90LXJlbG9hZGVyLWFwcCcpIGFzIHR5cGVvZiBpbXBvcnQoJy4uLy4uL2Rldi9ob3QtcmVsb2FkZXIvYXBwL2hvdC1yZWxvYWRlci1hcHAnKVxuICAgICAgKS53YWl0Rm9yV2VicGFja1J1bnRpbWVIb3RVcGRhdGUoKVxuICAgIH1cblxuICAgIGxldCBmbGlnaHRSZXNwb25zZVByb21pc2UgPSByZXMuZmxpZ2h0UmVzcG9uc2VQcm9taXNlXG4gICAgaWYgKGZsaWdodFJlc3BvbnNlUHJvbWlzZSA9PT0gbnVsbCkge1xuICAgICAgLy8gVHlwaWNhbGx5LCBgY3JlYXRlRmV0Y2hgIHdvdWxkIGhhdmUgYWxyZWFkeSBzdGFydGVkIGRlY29kaW5nIHRoZVxuICAgICAgLy8gRmxpZ2h0IHJlc3BvbnNlLiBJZiBpdCBoYXNuJ3QsIHRob3VnaCwgd2UgbmVlZCB0byBkZWNvZGUgaXQgbm93LlxuICAgICAgLy8gVE9ETzogVGhpcyBzaG91bGQgb25seSBiZSByZWFjaGFibGUgaWYgbGVnYWN5IFBQUiBpcyBlbmFibGVkIChpLmUuIFBQUlxuICAgICAgLy8gd2l0aG91dCBDYWNoZSBDb21wb25lbnRzKS4gUmVtb3ZlIHRoaXMgYnJhbmNoIG9uY2UgbGVnYWN5IFBQUlxuICAgICAgLy8gaXMgZGVsZXRlZC5cbiAgICAgIGZsaWdodFJlc3BvbnNlUHJvbWlzZSA9XG4gICAgICAgIGNyZWF0ZUZyb21OZXh0UmVhZGFibGVTdHJlYW08TmF2aWdhdGlvbkZsaWdodFJlc3BvbnNlPihcbiAgICAgICAgICByZXMuYm9keSxcbiAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgIHsgYWxsb3dQYXJ0aWFsU3RyZWFtOiBwb3N0cG9uZWQgfVxuICAgICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgW2ZsaWdodFJlc3BvbnNlLCBjYWNoZURhdGFdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgZmxpZ2h0UmVzcG9uc2VQcm9taXNlLFxuICAgICAgcmVzLmNhY2hlRGF0YSxcbiAgICBdKVxuXG4gICAgaWYgKFxuICAgICAgKHJlcy5oZWFkZXJzLmdldChORVhUX05BVl9ERVBMT1lNRU5UX0lEX0hFQURFUikgPz8gZmxpZ2h0UmVzcG9uc2UuYikgIT09XG4gICAgICBnZXROYXZpZ2F0aW9uQnVpbGRJZCgpXG4gICAgKSB7XG4gICAgICAvLyBUaGUgc2VydmVyIGJ1aWxkIGRvZXMgbm90IG1hdGNoIHRoZSBjbGllbnQgYnVpbGQuXG4gICAgICByZXR1cm4gZG9NcGFOYXZpZ2F0aW9uKHJlcy51cmwpXG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZEZsaWdodERhdGEgPSBub3JtYWxpemVGbGlnaHREYXRhKGZsaWdodFJlc3BvbnNlLmYpXG4gICAgaWYgKHR5cGVvZiBub3JtYWxpemVkRmxpZ2h0RGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBkb01wYU5hdmlnYXRpb24obm9ybWFsaXplZEZsaWdodERhdGEpXG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdGljU3RhZ2VEYXRhID1cbiAgICAgIGNhY2hlRGF0YSAhPT0gbnVsbFxuICAgICAgICA/IGF3YWl0IHJlc29sdmVTdGF0aWNTdGFnZURhdGEoY2FjaGVEYXRhLCBmbGlnaHRSZXNwb25zZSwgaGVhZGVycylcbiAgICAgICAgOiBudWxsXG5cbiAgICByZXR1cm4ge1xuICAgICAgZmxpZ2h0RGF0YTogbm9ybWFsaXplZEZsaWdodERhdGEsXG4gICAgICBjYW5vbmljYWxVcmw6IGNhbm9uaWNhbFVybCxcbiAgICAgIC8vIFRPRE86IFdlIHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgdGhpcyBmcm9tIHRoZSByZXdyaXRlIGhlYWRlciwgbm90IHRoZVxuICAgICAgLy8gRmxpZ2h0IHJlc3BvbnNlLiBUaGVvcmV0aWNhbGx5IHRoZXkgc2hvdWxkIGFsd2F5cyBhZ3JlZSwgYnV0IHRoZXJlIGFyZVxuICAgICAgLy8gY3VycmVudGx5IHNvbWUgY2FzZXMgd2hlcmUgaXQncyBpbmNvcnJlY3QgZm9yIGludGVyY2VwdGlvbiByb3V0ZXMuIFdlXG4gICAgICAvLyBjYW4gYWx3YXlzIHRydXN0IHRoZSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2UgYm9keS4gSG93ZXZlciwgcGVyLXNlZ21lbnRcbiAgICAgIC8vIHByZWZldGNoIHJlc3BvbnNlcyBkb24ndCBlbWJlZCB0aGUgdmFsdWUgaW4gdGhlIGJvZHk7IHRoZXkgcmVseSBvbiB0aGVcbiAgICAgIC8vIGhlYWRlciBhbG9uZS4gU28gd2UgbmVlZCB0byBpbnZlc3RpZ2F0ZSB3aHkgdGhlIGhlYWRlciBpcyBzb21ldGltZXNcbiAgICAgIC8vIHdyb25nIGZvciBpbnRlcmNlcHRpb24gcm91dGVzLlxuICAgICAgcmVuZGVyZWRTZWFyY2g6IGZsaWdodFJlc3BvbnNlLnEgYXMgTm9ybWFsaXplZFNlYXJjaCxcbiAgICAgIGNvdWxkQmVJbnRlcmNlcHRlZDogaW50ZXJjZXB0aW9uLFxuICAgICAgc3VwcG9ydHNQZXJTZWdtZW50UHJlZmV0Y2hpbmc6IGZsaWdodFJlc3BvbnNlLlMsXG4gICAgICBwb3N0cG9uZWQsXG4gICAgICAvLyBUaGUgZHluYW1pY1N0YWxlVGltZSBpcyBvbmx5IHByZXNlbnQgaW4gdGhlIHJlc3BvbnNlIGJvZHkgd2hlblxuICAgICAgLy8gYSBwYWdlIGV4cG9ydHMgdW5zdGFibGVfZHluYW1pY1N0YWxlVGltZSBhbmQgdGhpcyBpcyBhIGR5bmFtaWMgcmVuZGVyLlxuICAgICAgLy8gV2hlbiBhYnNlbnQgKFVua25vd25EeW5hbWljU3RhbGVUaW1lKSwgdGhlIGNsaWVudCBmYWxscyBiYWNrIHRvIHRoZVxuICAgICAgLy8gZ2xvYmFsIERZTkFNSUNfU1RBTEVUSU1FX01TLiBUaGUgdmFsdWUgaXMgaW4gc2Vjb25kcy5cbiAgICAgIGR5bmFtaWNTdGFsZVRpbWU6IGZsaWdodFJlc3BvbnNlLmQgPz8gVW5rbm93bkR5bmFtaWNTdGFsZVRpbWUsXG4gICAgICBzdGF0aWNTdGFnZURhdGEsXG4gICAgICBydW50aW1lUHJlZmV0Y2hTdHJlYW06IGZsaWdodFJlc3BvbnNlLnAgPz8gbnVsbCxcbiAgICAgIHJlc3BvbnNlSGVhZGVyczogcmVzLmhlYWRlcnMsXG4gICAgICBkZWJ1Z0luZm86IGZsaWdodFJlc3BvbnNlUHJvbWlzZS5fZGVidWdJbmZvID8/IG51bGwsXG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoIWlzUGFnZVVubG9hZGluZykge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byBmZXRjaCBSU0MgcGF5bG9hZCBmb3IgJHtvcmlnaW5hbFVybH0uIEZhbGxpbmcgYmFjayB0byBicm93c2VyIG5hdmlnYXRpb24uYCxcbiAgICAgICAgZXJyXG4gICAgICApXG4gICAgfVxuXG4gICAgLy8gSWYgZmV0Y2ggZmFpbHMgaGFuZGxlIGl0IGxpa2UgYSBtcGEgbmF2aWdhdGlvblxuICAgIC8vIFRPRE8tQVBQOiBBZGQgYSB0ZXN0IGZvciB0aGUgY2FzZSB3aGVyZSBhIENPUlMgcmVxdWVzdCBmYWlscywgZS5nLiBleHRlcm5hbCB1cmwgcmVkaXJlY3QgY29taW5nIGZyb20gdGhlIHJlc3BvbnNlLlxuICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdmVyY2VsL25leHQuanMvaXNzdWVzLzQzNjA1I2lzc3VlY29tbWVudC0xNDUxNjE3NTIxIGZvciBhIHJlcHJvZHVjdGlvbi5cbiAgICByZXR1cm4gb3JpZ2luYWxVcmwudG9TdHJpbmcoKVxuICB9XG59XG5cbi8vIFRoaXMgaXMgYSBzdWJzZXQgb2YgdGhlIHN0YW5kYXJkIFJlc3BvbnNlIHR5cGUuIFdlIHVzZSBhIGN1c3RvbSB0eXBlIGZvclxuLy8gdGhpcyBzbyB3ZSBjYW4gbGltaXQgd2hpY2ggZGV0YWlscyBhYm91dCB0aGUgcmVzcG9uc2UgbGVhayBpbnRvIHRoZSByZXN0IG9mXG4vLyB0aGUgY29kZWJhc2UuIEZvciBleGFtcGxlLCB0aGVyZSdzIHNvbWUgY3VzdG9tIGxvZ2ljIGZvciBtYW51YWxseSBmb2xsb3dpbmdcbi8vIHJlZGlyZWN0cywgc28gXCJyZWRpcmVjdGVkXCIgaW4gdGhpcyB0eXBlIGNvdWxkIGJlIGEgY29tcG9zaXRlIG9mIG11bHRpcGxlXG4vLyBicm93c2VyIGZldGNoIGNhbGxzOyBob3dldmVyLCB0aGlzIGZhY3Qgc2hvdWxkIG5vdCBsZWFrIHRvIHRoZSBjYWxsZXIuXG5leHBvcnQgdHlwZSBSU0NSZXNwb25zZTxUPiA9IHtcbiAgb2s6IGJvb2xlYW5cbiAgcmVkaXJlY3RlZDogYm9vbGVhblxuICBoZWFkZXJzOiBIZWFkZXJzXG4gIGJvZHk6IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+IHwgbnVsbFxuICBzdGF0dXM6IG51bWJlclxuICB1cmw6IHN0cmluZ1xuICBmbGlnaHRSZXNwb25zZVByb21pc2U6IChQcm9taXNlPFQ+ICYgeyBfZGVidWdJbmZvPzogQXJyYXk8YW55PiB9KSB8IG51bGxcbiAgY2FjaGVEYXRhOiBQcm9taXNlPEZldGNoUmVzcG9uc2VDYWNoZURhdGEgfCBudWxsPlxufVxuXG50eXBlIEZldGNoUmVzcG9uc2VDYWNoZURhdGEgPSB7XG4gIGlzUmVzcG9uc2VQYXJ0aWFsOiBib29sZWFuXG4gIHJlc3BvbnNlQm9keUNsb25lPzogUmVhZGFibGVTdHJlYW08VWludDhBcnJheT5cbn1cblxuLyoqXG4gKiBTdHJpcHMgdGhlIGxlYWRpbmcgaXNQYXJ0aWFsIGJ5dGUgZnJvbSBhbiBSU0MgbmF2aWdhdGlvbiByZXNwb25zZSBhbmRcbiAqIGNsb25lcyB0aGUgYm9keSBmb3Igc2VnbWVudCBjYWNoZSBleHRyYWN0aW9uLlxuICpcbiAqIFdoZW4gY2FjaGUgY29tcG9uZW50cyBpcyBlbmFibGVkLCB0aGUgc2VydmVyIHByZXBlbmRzIGEgc2luZ2xlIGJ5dGU6XG4gKiAnficgKDB4N2UpIGZvciBwYXJ0aWFsLCAnIycgKDB4MjMpIGZvciBjb21wbGV0ZS4gVGhpcyBtdXN0IGJlIHN0cmlwcGVkXG4gKiBiZWZvcmUgRmxpZ2h0IGRlY29kaW5nIGJlY2F1c2UgaXQncyBub3QgdmFsaWQgUlNDIGRhdGEuIFRoZSBib2R5IGlzXG4gKiBjbG9uZWQgYmVmb3JlIEZsaWdodCBjYW4gY29uc3VtZSBpdCBzbyB0aGUgY2xvbmUgaXMgYXZhaWxhYmxlIGZvciBsYXRlciB1c2UuXG4gKlxuICogV2hlbiBjYWNoZSBjb21wb25lbnRzIGlzIGRpc2FibGVkLCByZXR1cm5zIHRoZSBvcmlnaW5hbCByZXNwb25zZSB3aXRoXG4gKiBjYWNoZURhdGE6IG51bGwuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzRmV0Y2gocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTx7XG4gIHJlc3BvbnNlOiBSZXNwb25zZVxuICBjYWNoZURhdGE6IEZldGNoUmVzcG9uc2VDYWNoZURhdGEgfCBudWxsXG59PiB7XG4gIGlmIChwcm9jZXNzLmVudi5fX05FWFRfQ0FDSEVfQ09NUE9ORU5UUykge1xuICAgIGlmICghcmVzcG9uc2UuYm9keSkge1xuICAgICAgdGhyb3cgbmV3IEludmFyaWFudEVycm9yKFxuICAgICAgICAnRXhwZWN0ZWQgUlNDIG5hdmlnYXRpb24gcmVzcG9uc2UgdG8gaGF2ZSBhIGJvZHknXG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgeyBzdHJlYW0sIGlzUGFydGlhbCB9ID0gYXdhaXQgc3RyaXBJc1BhcnRpYWxCeXRlKHJlc3BvbnNlLmJvZHkpXG5cbiAgICBsZXQgcmVzcG9uc2VTdHJlYW06IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+XG4gICAgbGV0IGNhY2hlRGF0YTogRmV0Y2hSZXNwb25zZUNhY2hlRGF0YVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9FWFBFUklNRU5UQUxfQ0FDSEVEX05BVklHQVRJT05TKSB7XG4gICAgICBjb25zdCBbc3RyZWFtMSwgc3RyZWFtMl0gPSBzdHJlYW0udGVlKClcbiAgICAgIHJlc3BvbnNlU3RyZWFtID0gc3RyZWFtMVxuICAgICAgY2FjaGVEYXRhID0geyBpc1Jlc3BvbnNlUGFydGlhbDogaXNQYXJ0aWFsLCByZXNwb25zZUJvZHlDbG9uZTogc3RyZWFtMiB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3BvbnNlU3RyZWFtID0gc3RyZWFtXG4gICAgICBjYWNoZURhdGEgPSB7IGlzUmVzcG9uc2VQYXJ0aWFsOiBpc1BhcnRpYWwgfVxuICAgIH1cblxuICAgIGNvbnN0IHN0cmlwcGVkUmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UocmVzcG9uc2VTdHJlYW0sIHtcbiAgICAgIGhlYWRlcnM6IHJlc3BvbnNlLmhlYWRlcnMsXG4gICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlLnN0YXR1c1RleHQsXG4gICAgfSlcblxuICAgIC8vIFRoZSBSZXNwb25zZSBjb25zdHJ1Y3RvciBkb2Vzbid0IHByZXNlcnZlIGB1cmxgIG9yIGByZWRpcmVjdGVkYCBmcm9tXG4gICAgLy8gdGhlIG9yaWdpbmFsLiBXZSBuZWVkIGJvdGg6IGB1cmxgIGZvciBSZWFjdCBEZXZUb29scyBhbmQgYHJlZGlyZWN0ZWRgXG4gICAgLy8gZm9yIHRoZSByZWRpcmVjdCByZXBsYXkgbG9naWMgYmVsb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN0cmlwcGVkUmVzcG9uc2UsICd1cmwnLCB7IHZhbHVlOiByZXNwb25zZS51cmwgfSlcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3RyaXBwZWRSZXNwb25zZSwgJ3JlZGlyZWN0ZWQnLCB7XG4gICAgICB2YWx1ZTogcmVzcG9uc2UucmVkaXJlY3RlZCxcbiAgICB9KVxuXG4gICAgcmV0dXJuIHsgcmVzcG9uc2U6IHN0cmlwcGVkUmVzcG9uc2UsIGNhY2hlRGF0YSB9XG4gIH1cblxuICByZXR1cm4geyByZXNwb25zZSwgY2FjaGVEYXRhOiBudWxsIH1cbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgc3RhdGljIHN0YWdlIHJlc3BvbnNlIGZyb20gdGhlIHJhdyBgcHJvY2Vzc0ZldGNoYCBvdXRwdXRzIGFuZFxuICogdGhlIGRlY29kZWQgZmxpZ2h0IHJlc3BvbnNlLCBmb3Igd3JpdGluZyBpbnRvIHRoZSBzZWdtZW50IGNhY2hlLlxuICpcbiAqIC0gRnVsbHkgc3RhdGljOiB1c2UgdGhlIGRlY29kZWQgZmxpZ2h0IHJlc3BvbnNlIGFzLWlzLCBubyB0cnVuY2F0aW9uIG5lZWRlZC5cbiAqIC0gTm90IGZ1bGx5IHN0YXRpYyArIGBsYCBmaWVsZDogdHJ1bmNhdGUgdGhlIGJvZHkgY2xvbmUgYXQgdGhlIHN0YXRpYyBzdGFnZVxuICogICBieXRlIGJvdW5kYXJ5IGFuZCBkZWNvZGUuXG4gKiAtIE90aGVyd2lzZTogbm8gY2FjaGUtd29ydGh5IGRhdGEuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlU3RhdGljU3RhZ2VEYXRhPFxuICBUIGV4dGVuZHMgTmF2aWdhdGlvbkZsaWdodFJlc3BvbnNlIHwgSW5pdGlhbFJTQ1BheWxvYWQsXG4+KFxuICBjYWNoZURhdGE6IEZldGNoUmVzcG9uc2VDYWNoZURhdGEsXG4gIGZsaWdodFJlc3BvbnNlOiBULFxuICBoZWFkZXJzOiBSZXF1ZXN0SGVhZGVycyB8IHVuZGVmaW5lZFxuKTogUHJvbWlzZTxTdGF0aWNTdGFnZURhdGE8VD4gfCBudWxsPiB7XG4gIGNvbnN0IHsgaXNSZXNwb25zZVBhcnRpYWwsIHJlc3BvbnNlQm9keUNsb25lIH0gPSBjYWNoZURhdGFcblxuICBpZiAocmVzcG9uc2VCb2R5Q2xvbmUpIHtcbiAgICBpZiAoIWlzUmVzcG9uc2VQYXJ0aWFsKSB7XG4gICAgICAvLyBGdWxseSBzdGF0aWMg4oCUIGNhY2hlIHRoZSBlbnRpcmUgZGVjb2RlZCByZXNwb25zZSBhcy1pcy5cbiAgICAgIHJlc3BvbnNlQm9keUNsb25lLmNhbmNlbCgpXG5cbiAgICAgIHJldHVybiB7IHJlc3BvbnNlOiBmbGlnaHRSZXNwb25zZSwgaXNSZXNwb25zZVBhcnRpYWw6IGZhbHNlIH1cbiAgICB9XG5cbiAgICBpZiAoZmxpZ2h0UmVzcG9uc2UubCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBQYXJ0aWFsbHkgc3RhdGljIOKAlCB0cnVuY2F0ZSB0aGUgYm9keSBjbG9uZSBhdCB0aGUgYnl0ZSBib3VuZGFyeSBhbmRcbiAgICAgIC8vIGRlY29kZSBpdC5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZGVjb2RlU3RhdGljU3RhZ2U8VD4oXG4gICAgICAgIHJlc3BvbnNlQm9keUNsb25lLFxuICAgICAgICBmbGlnaHRSZXNwb25zZS5sLFxuICAgICAgICBoZWFkZXJzXG4gICAgICApXG5cbiAgICAgIHJldHVybiB7IHJlc3BvbnNlLCBpc1Jlc3BvbnNlUGFydGlhbDogdHJ1ZSB9XG4gICAgfVxuXG4gICAgLy8gTm8gY2FjaGluZyDigJQgY2FuY2VsIHRoZSB1bnVzZWQgY2xvbmUuXG4gICAgcmVzcG9uc2VCb2R5Q2xvbmUuY2FuY2VsKClcbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbi8qKlxuICogVHJ1bmNhdGVzIGEgRmxpZ2h0IHN0cmVhbSBjbG9uZSBhdCB0aGUgZ2l2ZW4gYnl0ZSBib3VuZGFyeSBhbmQgZGVjb2RlcyB0aGVcbiAqIHN0YXRpYyBzdGFnZSBwcmVmaXguIFVzZWQgYnkgYm90aCB0aGUgbmF2aWdhdGlvbiBwYXRoIGFuZCB0aGUgaW5pdGlhbCBIVE1MXG4gKiBoeWRyYXRpb24gcGF0aC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlY29kZVN0YXRpY1N0YWdlPFQ+KFxuICByZXNwb25zZUJvZHlDbG9uZTogUmVhZGFibGVTdHJlYW08VWludDhBcnJheT4sXG4gIHN0YXRpY1N0YWdlQnl0ZUxlbmd0aFByb21pc2U6IFByb21pc2U8bnVtYmVyPixcbiAgaGVhZGVyczogUmVxdWVzdEhlYWRlcnMgfCB1bmRlZmluZWRcbik6IFByb21pc2U8VD4ge1xuICBjb25zdCBzdGF0aWNTdGFnZUJ5dGVMZW5ndGggPSBhd2FpdCBzdGF0aWNTdGFnZUJ5dGVMZW5ndGhQcm9taXNlXG5cbiAgY29uc3QgdHJ1bmNhdGVkU3RyZWFtID0gdHJ1bmNhdGVTdHJlYW0oXG4gICAgcmVzcG9uc2VCb2R5Q2xvbmUsXG4gICAgc3RhdGljU3RhZ2VCeXRlTGVuZ3RoXG4gIClcblxuICByZXR1cm4gY3JlYXRlRnJvbU5leHRSZWFkYWJsZVN0cmVhbTxUPih0cnVuY2F0ZWRTdHJlYW0sIGhlYWRlcnMsIHtcbiAgICBhbGxvd1BhcnRpYWxTdHJlYW06IHRydWUsXG4gIH0pXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVGZXRjaDxUPihcbiAgdXJsOiBVUkwsXG4gIGhlYWRlcnM6IFJlcXVlc3RIZWFkZXJzLFxuICBmZXRjaFByaW9yaXR5OiAnYXV0bycgfCAnaGlnaCcgfCAnbG93JyB8IG51bGwsXG4gIHNob3VsZEltbWVkaWF0ZWx5RGVjb2RlOiBib29sZWFuLFxuICBzaWduYWw/OiBBYm9ydFNpZ25hbFxuKTogUHJvbWlzZTxSU0NSZXNwb25zZTxUPj4ge1xuICAvLyBUT0RPOiBJbiBvdXRwdXQ6IFwiZXhwb3J0XCIgbW9kZSwgdGhlIGhlYWRlcnMgZG8gbm90aGluZy4gT21pdCB0aGVtIChhbmQgdGhlXG4gIC8vIGNhY2hlIGJ1c3Rpbmcgc2VhcmNoIHBhcmFtKSBmcm9tIHRoZSByZXF1ZXN0IHNvIHRoZXkncmVcbiAgLy8gbWF4aW1hbGx5IGNhY2hlYWJsZS5cblxuICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1RFU1RfTU9ERSAmJiBmZXRjaFByaW9yaXR5ICE9PSBudWxsKSB7XG4gICAgaGVhZGVyc1snTmV4dC1UZXN0LUZldGNoLVByaW9yaXR5J10gPSBmZXRjaFByaW9yaXR5XG4gIH1cblxuICBjb25zdCBkZXBsb3ltZW50SWQgPSBnZXREZXBsb3ltZW50SWQoKVxuICBpZiAoZGVwbG95bWVudElkKSB7XG4gICAgaGVhZGVyc1sneC1kZXBsb3ltZW50LWlkJ10gPSBkZXBsb3ltZW50SWRcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5fX05FWFRfREVWX1NFUlZFUikge1xuICAgIGlmIChzZWxmLl9fbmV4dF9yKSB7XG4gICAgICBoZWFkZXJzW05FWFRfSFRNTF9SRVFVRVNUX0lEX0hFQURFUl0gPSBzZWxmLl9fbmV4dF9yXG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIGEgbmV3IHJlcXVlc3QgSUQgZm9yIHRoZSBzZXJ2ZXIgYWN0aW9uIHJlcXVlc3QuIFRoZSBzZXJ2ZXIgdXNlc1xuICAgIC8vIHRoaXMgdG8gdGFnIGRlYnVnIGluZm9ybWF0aW9uIHNlbnQgdmlhIFdlYlNvY2tldCB0byB0aGUgY2xpZW50LCB3aGljaFxuICAgIC8vIHRoZW4gcm91dGVzIHRob3NlIGNodW5rcyB0byB0aGUgZGVidWcgY2hhbm5lbCBhc3NvY2lhdGVkIHdpdGggdGhpcyBJRC5cbiAgICBoZWFkZXJzW05FWFRfUkVRVUVTVF9JRF9IRUFERVJdID0gY3J5cHRvXG4gICAgICAuZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheSgxKSlbMF1cbiAgICAgIC50b1N0cmluZygxNilcbiAgfVxuXG4gIGNvbnN0IGZldGNoT3B0aW9uczogUmVxdWVzdEluaXQgPSB7XG4gICAgLy8gQmFja3dhcmRzIGNvbXBhdCBmb3Igb2xkZXIgYnJvd3NlcnMuIGBzYW1lLW9yaWdpbmAgaXMgdGhlIGRlZmF1bHQgaW4gbW9kZXJuIGJyb3dzZXJzLlxuICAgIGNyZWRlbnRpYWxzOiAnc2FtZS1vcmlnaW4nLFxuICAgIGhlYWRlcnMsXG4gICAgcHJpb3JpdHk6IGZldGNoUHJpb3JpdHkgfHwgdW5kZWZpbmVkLFxuICAgIHNpZ25hbCxcbiAgfVxuICAvLyBgZmV0Y2hVcmxgIGlzIHNsaWdodGx5IGRpZmZlcmVudCBmcm9tIGB1cmxgIGJlY2F1c2Ugd2UgYWRkIGEgY2FjaGUtYnVzdGluZ1xuICAvLyBzZWFyY2ggcGFyYW0gdG8gaXQuIFRoaXMgc2hvdWxkIG5vdCBsZWFrIG91dHNpZGUgb2YgdGhpcyBmdW5jdGlvbiwgc28gd2VcbiAgLy8gdHJhY2sgdGhlbSBzZXBhcmF0ZWx5LlxuICBsZXQgZmV0Y2hVcmwgPSBuZXcgVVJMKHVybClcbiAgc2V0Q2FjaGVCdXN0aW5nU2VhcmNoUGFyYW0oZmV0Y2hVcmwsIGhlYWRlcnMpXG4gIGxldCBwcm9jZXNzZWQgPSBmZXRjaChmZXRjaFVybCwgZmV0Y2hPcHRpb25zKS50aGVuKHByb2Nlc3NGZXRjaClcbiAgbGV0IGZldGNoUHJvbWlzZSA9IHByb2Nlc3NlZC50aGVuKCh7IHJlc3BvbnNlIH0pID0+IHJlc3BvbnNlKVxuXG4gIC8vIEltbWVkaWF0ZWx5IHBhc3MgdGhlIGZldGNoIHByb21pc2UgdG8gdGhlIEZsaWdodCBjbGllbnQgc28gdGhhdCB0aGUgZGVidWdcbiAgLy8gaW5mbyBpbmNsdWRlcyB0aGUgbGF0ZW5jeSBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIHNlcnZlci4gVGhlIGludGVybmFsIHRpbWVyXG4gIC8vIGluIFJlYWN0IHN0YXJ0cyBhcyBzb29uIGFzIGBjcmVhdGVGcm9tRmV0Y2hgIGlzIGNhbGxlZC5cbiAgLy9cbiAgLy8gVGhlIG9ubHkgY2FzZSB3aGVyZSB3ZSBkb24ndCBkbyB0aGlzIGlzIGR1cmluZyBhIHByZWZldGNoLCBiZWNhdXNlIGFcbiAgLy8gdG9wLWxldmVsIHByZWZldGNoIHJlc3BvbnNlIG5ldmVyIGJsb2NrcyBhIG5hdmlnYXRpb247IGlmIGl0IGhhc24ndCBhbHJlYWR5XG4gIC8vIGJlZW4gd3JpdHRlbiBpbnRvIHRoZSBjYWNoZSBieSB0aGUgdGltZSB0aGUgbmF2aWdhdGlvbiBoYXBwZW5zLCB0aGUgcm91dGVyXG4gIC8vIHdpbGwgZ28gc3RyYWlnaHQgdG8gYSBkeW5hbWljIHJlcXVlc3QuXG4gIGxldCBmbGlnaHRSZXNwb25zZVByb21pc2UgPSBzaG91bGRJbW1lZGlhdGVseURlY29kZVxuICAgID8gY3JlYXRlRnJvbU5leHRGZXRjaDxUPihmZXRjaFByb21pc2UsIGhlYWRlcnMpXG4gICAgOiBudWxsXG4gIGxldCBicm93c2VyUmVzcG9uc2UgPSBhd2FpdCBmZXRjaFByb21pc2VcblxuICAvLyBJZiB0aGUgc2VydmVyIHJlc3BvbmRzIHdpdGggYSByZWRpcmVjdCAoZS5nLiAzMDcpLCBhbmQgdGhlIHJlZGlyZWN0ZWRcbiAgLy8gbG9jYXRpb24gZG9lcyBub3QgY29udGFpbiB0aGUgY2FjaGUgYnVzdGluZyBzZWFyY2ggcGFyYW0gc2V0IGluIHRoZVxuICAvLyBvcmlnaW5hbCByZXF1ZXN0LCB0aGUgcmVzcG9uc2UgaXMgbGlrZWx5IGludmFsaWQg4oCUIHdoZW4gZm9sbG93aW5nIHRoZVxuICAvLyByZWRpcmVjdCwgdGhlIGJyb3dzZXIgZm9yd2FyZHMgdGhlIHJlcXVlc3QgaGVhZGVycywgYnV0IHNpbmNlIHRoZSBjYWNoZVxuICAvLyBidXN0aW5nIHNlYXJjaCBwYXJhbSBpcyBtaXNzaW5nLCB0aGUgc2VydmVyIHdpbGwgcmVqZWN0IHRoZSByZXF1ZXN0IGR1ZSB0b1xuICAvLyBhIG1pc21hdGNoLlxuICAvL1xuICAvLyBJZGVhbGx5LCB3ZSB3b3VsZCBiZSBhYmxlIHRvIGludGVyY2VwdCB0aGUgcmVkaXJlY3QgcmVzcG9uc2UgYW5kIHBlcmZvcm0gaXRcbiAgLy8gbWFudWFsbHksIGluc3RlYWQgb2YgbGV0dGluZyB0aGUgYnJvd3NlciBhdXRvbWF0aWNhbGx5IGZvbGxvdyBpdCwgYnV0IHRoaXNcbiAgLy8gaXMgbm90IGFsbG93ZWQgYnkgdGhlIGZldGNoIEFQSS5cbiAgLy9cbiAgLy8gU28gaW5zdGVhZCwgd2UgbXVzdCBcInJlcGxheVwiIHRoZSByZWRpcmVjdCBieSBmZXRjaGluZyB0aGUgbmV3IGxvY2F0aW9uXG4gIC8vIGFnYWluLCBidXQgdGhpcyB0aW1lIHdlJ2xsIGFwcGVuZCB0aGUgY2FjaGUgYnVzdGluZyBzZWFyY2ggcGFyYW0gdG8gcHJldmVudFxuICAvLyBhIG1pc21hdGNoLlxuICAvL1xuICAvLyBUT0RPOiBXZSBjYW4gb3B0aW1pemUgTmV4dC5qcydzIGJ1aWx0LWluIG1pZGRsZXdhcmUgQVBJcyBieSByZXR1cm5pbmcgYVxuICAvLyBjdXN0b20gc3RhdHVzIGNvZGUsIHRvIHByZXZlbnQgdGhlIGJyb3dzZXIgZnJvbSBhdXRvbWF0aWNhbGx5IGZvbGxvd2luZyBpdC5cbiAgLy9cbiAgLy8gVGhpcyBkb2VzIG5vdCBhZmZlY3QgU2VydmVyIEFjdGlvbi1iYXNlZCByZWRpcmVjdHM7IHRob3NlIGFyZSBlbmNvZGVkXG4gIC8vIGRpZmZlcmVudGx5LCBhcyBwYXJ0IG9mIHRoZSBGbGlnaHQgYm9keS4gSXQgb25seSBhZmZlY3RzIHJlZGlyZWN0cyB0aGF0XG4gIC8vIG9jY3VyIGluIGEgbWlkZGxld2FyZSBvciBhIHRoaXJkLXBhcnR5IHByb3h5LlxuXG4gIGxldCByZWRpcmVjdGVkID0gYnJvd3NlclJlc3BvbnNlLnJlZGlyZWN0ZWRcbiAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9DTElFTlRfVkFMSURBVEVfUlNDX1JFUVVFU1RfSEVBREVSUykge1xuICAgIC8vIFRoaXMgaXMgdG8gcHJldmVudCBhIHJlZGlyZWN0IGxvb3AuIFNhbWUgbGltaXQgdXNlZCBieSBDaHJvbWUuXG4gICAgY29uc3QgTUFYX1JFRElSRUNUUyA9IDIwXG4gICAgZm9yIChsZXQgbiA9IDA7IG4gPCBNQVhfUkVESVJFQ1RTOyBuKyspIHtcbiAgICAgIGlmICghYnJvd3NlclJlc3BvbnNlLnJlZGlyZWN0ZWQpIHtcbiAgICAgICAgLy8gVGhlIHNlcnZlciBkaWQgbm90IHBlcmZvcm0gYSByZWRpcmVjdC5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc3BvbnNlVXJsID0gbmV3IFVSTChicm93c2VyUmVzcG9uc2UudXJsLCBmZXRjaFVybClcbiAgICAgIGlmIChyZXNwb25zZVVybC5vcmlnaW4gIT09IGZldGNoVXJsLm9yaWdpbikge1xuICAgICAgICAvLyBUaGUgc2VydmVyIHJlZGlyZWN0ZWQgdG8gYW4gZXh0ZXJuYWwgVVJMLiBUaGUgcmVzdCBvZiB0aGUgbG9naWMgYmVsb3dcbiAgICAgICAgLy8gaXMgbm90IHJlbGV2YW50LCBiZWNhdXNlIGl0IG9ubHkgYXBwbGllcyB0byBpbnRlcm5hbCByZWRpcmVjdHMuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIHJlc3BvbnNlVXJsLnNlYXJjaFBhcmFtcy5nZXQoTkVYVF9SU0NfVU5JT05fUVVFUlkpID09PVxuICAgICAgICBmZXRjaFVybC5zZWFyY2hQYXJhbXMuZ2V0KE5FWFRfUlNDX1VOSU9OX1FVRVJZKVxuICAgICAgKSB7XG4gICAgICAgIC8vIFRoZSByZWRpcmVjdGVkIFVSTCBhbHJlYWR5IGluY2x1ZGVzIHRoZSBjYWNoZSBidXN0aW5nIHNlYXJjaCBwYXJhbS5cbiAgICAgICAgLy8gVGhpcyB3YXMgcHJvYmFibHkgaW50ZW50aW9uYWwuIFJlZ2FyZGxlc3MsIHRoZXJlJ3Mgbm8gcmVhc29uIHRvXG4gICAgICAgIC8vIGlzc3VlIGFub3RoZXIgcmVxdWVzdCB0byB0aGlzIFVSTCBiZWNhdXNlIGl0IGFscmVhZHkgaGFzIHRoZSBwYXJhbVxuICAgICAgICAvLyB2YWx1ZSB0aGF0IHdlIHdvdWxkIGhhdmUgYWRkZWQgYmVsb3cuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICAvLyBUaGUgUlNDIHJlcXVlc3Qgd2FzIHJlZGlyZWN0ZWQuIEFzc3VtZSB0aGUgcmVzcG9uc2UgaXMgaW52YWxpZC5cbiAgICAgIC8vXG4gICAgICAvLyBBcHBlbmQgdGhlIGNhY2hlIGJ1c3Rpbmcgc2VhcmNoIHBhcmFtIHRvIHRoZSByZWRpcmVjdGVkIFVSTCBhbmRcbiAgICAgIC8vIGZldGNoIGFnYWluLlxuICAgICAgLy8gVE9ETzogV2Ugc2hvdWxkIGFib3J0IHRoZSBwcmV2aW91cyByZXF1ZXN0LlxuICAgICAgZmV0Y2hVcmwgPSBuZXcgVVJMKHJlc3BvbnNlVXJsKVxuICAgICAgc2V0Q2FjaGVCdXN0aW5nU2VhcmNoUGFyYW0oZmV0Y2hVcmwsIGhlYWRlcnMpXG4gICAgICBwcm9jZXNzZWQgPSBmZXRjaChmZXRjaFVybCwgZmV0Y2hPcHRpb25zKS50aGVuKHByb2Nlc3NGZXRjaClcbiAgICAgIGZldGNoUHJvbWlzZSA9IHByb2Nlc3NlZC50aGVuKCh7IHJlc3BvbnNlIH0pID0+IHJlc3BvbnNlKVxuICAgICAgZmxpZ2h0UmVzcG9uc2VQcm9taXNlID0gc2hvdWxkSW1tZWRpYXRlbHlEZWNvZGVcbiAgICAgICAgPyBjcmVhdGVGcm9tTmV4dEZldGNoPFQ+KGZldGNoUHJvbWlzZSwgaGVhZGVycylcbiAgICAgICAgOiBudWxsXG4gICAgICBicm93c2VyUmVzcG9uc2UgPSBhd2FpdCBmZXRjaFByb21pc2VcbiAgICAgIC8vIFdlIGp1c3QgcGVyZm9ybWVkIGEgbWFudWFsIHJlZGlyZWN0LCBzbyB0aGlzIGlzIG5vdyB0cnVlLlxuICAgICAgcmVkaXJlY3RlZCA9IHRydWVcbiAgICB9XG4gIH1cblxuICAvLyBSZW1vdmUgdGhlIGNhY2hlIGJ1c3Rpbmcgc2VhcmNoIHBhcmFtIGZyb20gdGhlIHJlc3BvbnNlIFVSTCwgdG8gcHJldmVudCBpdFxuICAvLyBmcm9tIGxlYWtpbmcgb3V0c2lkZSBvZiB0aGlzIGZ1bmN0aW9uLlxuICBjb25zdCByZXNwb25zZVVybCA9IG5ldyBVUkwoYnJvd3NlclJlc3BvbnNlLnVybCwgZmV0Y2hVcmwpXG4gIHJlc3BvbnNlVXJsLnNlYXJjaFBhcmFtcy5kZWxldGUoTkVYVF9SU0NfVU5JT05fUVVFUlkpXG5cbiAgY29uc3QgcnNjUmVzcG9uc2U6IFJTQ1Jlc3BvbnNlPFQ+ID0ge1xuICAgIHVybDogcmVzcG9uc2VVcmwuaHJlZixcblxuICAgIC8vIFRoaXMgaXMgdHJ1ZSBpZiBhbnkgcmVkaXJlY3RzIG9jY3VycmVkLCBlaXRoZXIgYXV0b21hdGljYWxseSBieSB0aGVcbiAgICAvLyBicm93c2VyLCBvciBtYW51YWxseSBieSB1cy4gU28gaXQncyBkaWZmZXJlbnQgZnJvbVxuICAgIC8vIGBicm93c2VyUmVzcG9uc2UucmVkaXJlY3RlZGAsIHdoaWNoIG9ubHkgdGVsbHMgdXMgd2hldGhlciB0aGUgYnJvd3NlclxuICAgIC8vIGZvbGxvd2VkIGEgcmVkaXJlY3QsIGFuZCBvbmx5IGZvciB0aGUgbGFzdCByZXNwb25zZSBpbiB0aGUgY2hhaW4uXG4gICAgcmVkaXJlY3RlZCxcblxuICAgIC8vIFRoZXNlIGNhbiBiZSBjb3BpZWQgZnJvbSB0aGUgbGFzdCBicm93c2VyIHJlc3BvbnNlIHdlIHJlY2VpdmVkLiBXZVxuICAgIC8vIGludGVudGlvbmFsbHkgb25seSBleHBvc2UgdGhlIHN1YnNldCBvZiBmaWVsZHMgdGhhdCBhcmUgYWN0dWFsbHkgdXNlZFxuICAgIC8vIGVsc2V3aGVyZSBpbiB0aGUgY29kZWJhc2UuXG4gICAgb2s6IGJyb3dzZXJSZXNwb25zZS5vayxcbiAgICBoZWFkZXJzOiBicm93c2VyUmVzcG9uc2UuaGVhZGVycyxcbiAgICBib2R5OiBicm93c2VyUmVzcG9uc2UuYm9keSxcbiAgICBzdGF0dXM6IGJyb3dzZXJSZXNwb25zZS5zdGF0dXMsXG5cbiAgICAvLyBUaGlzIGlzIHRoZSBleGFjdCBwcm9taXNlIHJldHVybmVkIGJ5IGBjcmVhdGVGcm9tRmV0Y2hgLiBJdCBjb250YWluc1xuICAgIC8vIGRlYnVnIGluZm9ybWF0aW9uIHRoYXQgd2UgbmVlZCB0byB0cmFuc2ZlciB0byBhbnkgZGVyaXZlZCBwcm9taXNlcyB0aGF0XG4gICAgLy8gYXJlIGxhdGVyIHJlbmRlcmVkIGJ5IFJlYWN0LlxuICAgIGZsaWdodFJlc3BvbnNlUHJvbWlzZTogZmxpZ2h0UmVzcG9uc2VQcm9taXNlLFxuXG4gICAgY2FjaGVEYXRhOiBwcm9jZXNzZWQudGhlbigoeyBjYWNoZURhdGEgfSkgPT4gY2FjaGVEYXRhKSxcbiAgfVxuXG4gIHJldHVybiByc2NSZXNwb25zZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRnJvbU5leHRSZWFkYWJsZVN0cmVhbTxUPihcbiAgZmxpZ2h0U3RyZWFtOiBSZWFkYWJsZVN0cmVhbTxVaW50OEFycmF5PixcbiAgcmVxdWVzdEhlYWRlcnM6IFJlcXVlc3RIZWFkZXJzIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zPzogeyBhbGxvd1BhcnRpYWxTdHJlYW0/OiBib29sZWFuIH1cbik6IFByb21pc2U8VD4ge1xuICByZXR1cm4gY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtKGZsaWdodFN0cmVhbSwge1xuICAgIGNhbGxTZXJ2ZXIsXG4gICAgZmluZFNvdXJjZU1hcFVSTCxcbiAgICBkZWJ1Z0NoYW5uZWw6IGNyZWF0ZURlYnVnQ2hhbm5lbCAmJiBjcmVhdGVEZWJ1Z0NoYW5uZWwocmVxdWVzdEhlYWRlcnMpLFxuICAgIHVuc3RhYmxlX2FsbG93UGFydGlhbFN0cmVhbTogb3B0aW9ucz8uYWxsb3dQYXJ0aWFsU3RyZWFtLFxuICB9KVxufVxuXG5mdW5jdGlvbiBjcmVhdGVGcm9tTmV4dEZldGNoPFQ+KFxuICBwcm9taXNlRm9yUmVzcG9uc2U6IFByb21pc2U8UmVzcG9uc2U+LFxuICByZXF1ZXN0SGVhZGVyczogUmVxdWVzdEhlYWRlcnNcbik6IFByb21pc2U8VD4gJiB7IF9kZWJ1Z0luZm8/OiBBcnJheTxhbnk+IH0ge1xuICByZXR1cm4gY3JlYXRlRnJvbUZldGNoKHByb21pc2VGb3JSZXNwb25zZSwge1xuICAgIGNhbGxTZXJ2ZXIsXG4gICAgZmluZFNvdXJjZU1hcFVSTCxcbiAgICBkZWJ1Z0NoYW5uZWw6IGNyZWF0ZURlYnVnQ2hhbm5lbCAmJiBjcmVhdGVEZWJ1Z0NoYW5uZWwocmVxdWVzdEhlYWRlcnMpLFxuICB9KVxufVxuXG5mdW5jdGlvbiB0cnVuY2F0ZVN0cmVhbShcbiAgc3RyZWFtOiBSZWFkYWJsZVN0cmVhbTxVaW50OEFycmF5PixcbiAgYnl0ZUxlbmd0aDogbnVtYmVyXG4pOiBSZWFkYWJsZVN0cmVhbTxVaW50OEFycmF5PiB7XG4gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKVxuICBsZXQgcmVtYWluaW5nID0gYnl0ZUxlbmd0aFxuXG4gIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe1xuICAgIGFzeW5jIHB1bGwoY29udHJvbGxlcikge1xuICAgICAgaWYgKHJlbWFpbmluZyA8PSAwKSB7XG4gICAgICAgIHJlYWRlci5jYW5jZWwoKVxuICAgICAgICBjb250cm9sbGVyLmNsb3NlKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKClcblxuICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgY29udHJvbGxlci5jbG9zZSgpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUuYnl0ZUxlbmd0aCA8PSByZW1haW5pbmcpIHtcbiAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKHZhbHVlKVxuICAgICAgICByZW1haW5pbmcgLT0gdmFsdWUuYnl0ZUxlbmd0aFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKHZhbHVlLnN1YmFycmF5KDAsIHJlbWFpbmluZykpXG4gICAgICAgIHJlbWFpbmluZyA9IDBcbiAgICAgICAgcmVhZGVyLmNhbmNlbCgpXG4gICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKVxuICAgICAgfVxuICAgIH0sXG4gICAgY2FuY2VsKCkge1xuICAgICAgcmVhZGVyLmNhbmNlbCgpXG4gICAgfSxcbiAgfSlcbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVGZXRjaCIsImNyZWF0ZUZyb21OZXh0UmVhZGFibGVTdHJlYW0iLCJkZWNvZGVTdGF0aWNTdGFnZSIsImZldGNoU2VydmVyUmVzcG9uc2UiLCJwcm9jZXNzRmV0Y2giLCJyZXNvbHZlU3RhdGljU3RhZ2VEYXRhIiwiY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtIiwiY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtQnJvd3NlciIsImNyZWF0ZUZyb21GZXRjaCIsImNyZWF0ZUZyb21GZXRjaEJyb3dzZXIiLCJjcmVhdGVEZWJ1Z0NoYW5uZWwiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX0RFVl9TRVJWRVIiLCJfX05FWFRfUkVBQ1RfREVCVUdfQ0hBTk5FTCIsInJlcXVpcmUiLCJkb01wYU5hdmlnYXRpb24iLCJ1cmwiLCJ1cmxUb1VybFdpdGhvdXRGbGlnaHRNYXJrZXIiLCJVUkwiLCJsb2NhdGlvbiIsIm9yaWdpbiIsInRvU3RyaW5nIiwiaXNQYWdlVW5sb2FkaW5nIiwid2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsIm9wdGlvbnMiLCJmbGlnaHRSb3V0ZXJTdGF0ZSIsIm5leHRVcmwiLCJoZWFkZXJzIiwiUlNDX0hFQURFUiIsIk5FWFRfUk9VVEVSX1NUQVRFX1RSRUVfSEVBREVSIiwicHJlcGFyZUZsaWdodFJvdXRlclN0YXRlRm9yUmVxdWVzdCIsImlzSG1yUmVmcmVzaCIsIk5PREVfRU5WIiwiTkVYVF9ITVJfUkVGUkVTSF9IRUFERVIiLCJORVhUX1VSTCIsIm9yaWdpbmFsVXJsIiwiX19ORVhUX0NPTkZJR19PVVRQVVQiLCJwYXRobmFtZSIsImVuZHNXaXRoIiwiaXNMZWdhY3lQUFIiLCJfX05FWFRfUFBSIiwiX19ORVhUX0NBQ0hFX0NPTVBPTkVOVFMiLCJzaG91bGRJbW1lZGlhdGVseURlY29kZSIsInJlcyIsInJlc3BvbnNlVXJsIiwiY2Fub25pY2FsVXJsIiwicmVkaXJlY3RlZCIsImNvbnRlbnRUeXBlIiwiZ2V0IiwiaW50ZXJjZXB0aW9uIiwiaW5jbHVkZXMiLCJwb3N0cG9uZWQiLCJORVhUX0RJRF9QT1NUUE9ORV9IRUFERVIiLCJpc0ZsaWdodFJlc3BvbnNlIiwic3RhcnRzV2l0aCIsIlJTQ19DT05URU5UX1RZUEVfSEVBREVSIiwib2siLCJib2R5IiwiaGFzaCIsIlRVUkJPUEFDSyIsIndhaXRGb3JXZWJwYWNrUnVudGltZUhvdFVwZGF0ZSIsImZsaWdodFJlc3BvbnNlUHJvbWlzZSIsImFsbG93UGFydGlhbFN0cmVhbSIsImZsaWdodFJlc3BvbnNlIiwiY2FjaGVEYXRhIiwiUHJvbWlzZSIsImFsbCIsIk5FWFRfTkFWX0RFUExPWU1FTlRfSURfSEVBREVSIiwiYiIsImdldE5hdmlnYXRpb25CdWlsZElkIiwibm9ybWFsaXplZEZsaWdodERhdGEiLCJub3JtYWxpemVGbGlnaHREYXRhIiwiZiIsInN0YXRpY1N0YWdlRGF0YSIsImZsaWdodERhdGEiLCJyZW5kZXJlZFNlYXJjaCIsInEiLCJjb3VsZEJlSW50ZXJjZXB0ZWQiLCJzdXBwb3J0c1BlclNlZ21lbnRQcmVmZXRjaGluZyIsIlMiLCJkeW5hbWljU3RhbGVUaW1lIiwiZCIsIlVua25vd25EeW5hbWljU3RhbGVUaW1lIiwicnVudGltZVByZWZldGNoU3RyZWFtIiwicCIsInJlc3BvbnNlSGVhZGVycyIsImRlYnVnSW5mbyIsIl9kZWJ1Z0luZm8iLCJlcnIiLCJjb25zb2xlIiwiZXJyb3IiLCJyZXNwb25zZSIsIkludmFyaWFudEVycm9yIiwic3RyZWFtIiwiaXNQYXJ0aWFsIiwic3RyaXBJc1BhcnRpYWxCeXRlIiwicmVzcG9uc2VTdHJlYW0iLCJfX05FWFRfRVhQRVJJTUVOVEFMX0NBQ0hFRF9OQVZJR0FUSU9OUyIsInN0cmVhbTEiLCJzdHJlYW0yIiwidGVlIiwiaXNSZXNwb25zZVBhcnRpYWwiLCJyZXNwb25zZUJvZHlDbG9uZSIsInN0cmlwcGVkUmVzcG9uc2UiLCJSZXNwb25zZSIsInN0YXR1cyIsInN0YXR1c1RleHQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiY2FuY2VsIiwibCIsInVuZGVmaW5lZCIsInN0YXRpY1N0YWdlQnl0ZUxlbmd0aFByb21pc2UiLCJzdGF0aWNTdGFnZUJ5dGVMZW5ndGgiLCJ0cnVuY2F0ZWRTdHJlYW0iLCJ0cnVuY2F0ZVN0cmVhbSIsImZldGNoUHJpb3JpdHkiLCJzaWduYWwiLCJfX05FWFRfVEVTVF9NT0RFIiwiZGVwbG95bWVudElkIiwiZ2V0RGVwbG95bWVudElkIiwic2VsZiIsIl9fbmV4dF9yIiwiTkVYVF9IVE1MX1JFUVVFU1RfSURfSEVBREVSIiwiTkVYVF9SRVFVRVNUX0lEX0hFQURFUiIsImNyeXB0byIsImdldFJhbmRvbVZhbHVlcyIsIlVpbnQzMkFycmF5IiwiZmV0Y2hPcHRpb25zIiwiY3JlZGVudGlhbHMiLCJwcmlvcml0eSIsImZldGNoVXJsIiwic2V0Q2FjaGVCdXN0aW5nU2VhcmNoUGFyYW0iLCJwcm9jZXNzZWQiLCJmZXRjaCIsInRoZW4iLCJmZXRjaFByb21pc2UiLCJjcmVhdGVGcm9tTmV4dEZldGNoIiwiYnJvd3NlclJlc3BvbnNlIiwiX19ORVhUX0NMSUVOVF9WQUxJREFURV9SU0NfUkVRVUVTVF9IRUFERVJTIiwiTUFYX1JFRElSRUNUUyIsIm4iLCJzZWFyY2hQYXJhbXMiLCJORVhUX1JTQ19VTklPTl9RVUVSWSIsImRlbGV0ZSIsInJzY1Jlc3BvbnNlIiwiaHJlZiIsImZsaWdodFN0cmVhbSIsInJlcXVlc3RIZWFkZXJzIiwiY2FsbFNlcnZlciIsImZpbmRTb3VyY2VNYXBVUkwiLCJkZWJ1Z0NoYW5uZWwiLCJ1bnN0YWJsZV9hbGxvd1BhcnRpYWxTdHJlYW0iLCJwcm9taXNlRm9yUmVzcG9uc2UiLCJieXRlTGVuZ3RoIiwicmVhZGVyIiwiZ2V0UmVhZGVyIiwicmVtYWluaW5nIiwiUmVhZGFibGVTdHJlYW0iLCJwdWxsIiwiY29udHJvbGxlciIsImNsb3NlIiwiZG9uZSIsInJlYWQiLCJlbnF1ZXVlIiwic3ViYXJyYXkiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/router-reducer/fetch-server-response.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js":
|
||
/*!*****************************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js ***!
|
||
\*****************************************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"isNavigatingToNewRootLayout\", ({\n enumerable: true,\n get: function() {\n return isNavigatingToNewRootLayout;\n }\n}));\nconst _approutertypes = __webpack_require__(/*! ../../../shared/lib/app-router-types */ \"(ssr)/./node_modules/next/dist/shared/lib/app-router-types.js\");\nfunction isNavigatingToNewRootLayout(currentTree, nextTree) {\n // Compare segments\n const currentTreeSegment = currentTree[0];\n const nextTreeSegment = nextTree.segment;\n // If any segment is different before we find the root layout, the root layout has changed.\n // E.g. /same/(group1)/layout.js -> /same/(group2)/layout.js\n // First segment is 'same' for both, keep looking. (group1) changed to (group2) before the root layout was found, it must have changed.\n if (Array.isArray(currentTreeSegment) && Array.isArray(nextTreeSegment)) {\n // Compare dynamic param name and type but ignore the value, different values would not affect the current root layout\n // /[name] - /slug1 and /slug2, both values (slug1 & slug2) still has the same layout /[name]/layout.js\n if (currentTreeSegment[0] !== nextTreeSegment[0] || currentTreeSegment[2] !== nextTreeSegment[2]) {\n return true;\n }\n } else if (currentTreeSegment !== nextTreeSegment) {\n return true;\n }\n // Current tree root layout found\n const currentIsRootLayout = ((currentTree[4] ?? 0) & _approutertypes.PrefetchHint.IsRootLayout) !== 0;\n const nextIsRootLayout = (nextTree.prefetchHints & _approutertypes.PrefetchHint.IsRootLayout) !== 0;\n if (currentIsRootLayout) {\n // If the next tree doesn't have the root layout flag, it must have changed.\n return !nextIsRootLayout;\n }\n // Current tree didn't have its root layout here, must have changed.\n if (nextIsRootLayout) {\n return true;\n }\n const slots = nextTree.slots;\n const currentTreeChildren = currentTree[1];\n if (slots !== null) {\n for(const slot in slots){\n const nextTreeChild = slots[slot];\n const currentTreeChild = currentTreeChildren[slot];\n if (currentTreeChild === undefined || isNavigatingToNewRootLayout(currentTreeChild, nextTreeChild)) {\n return true;\n }\n }\n }\n return false;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=is-navigating-to-new-root-layout.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2lzLW5hdmlnYXRpbmctdG8tbmV3LXJvb3QtbGF5b3V0LmpzIiwibWFwcGluZ3MiOiI7Ozs7K0RBSWdCQTs7O2VBQUFBOzs7NENBSGE7QUFHdEIsU0FBU0EsNEJBQ2RDLFdBQThCLEVBQzlCQyxRQUFtQjtJQUVuQixtQkFBbUI7SUFDbkIsTUFBTUMscUJBQXFCRixXQUFXLENBQUMsRUFBRTtJQUN6QyxNQUFNRyxrQkFBa0JGLFNBQVNHLE9BQU87SUFFeEMsMkZBQTJGO0lBQzNGLDREQUE0RDtJQUM1RCx1SUFBdUk7SUFDdkksSUFBSUMsTUFBTUMsT0FBTyxDQUFDSix1QkFBdUJHLE1BQU1DLE9BQU8sQ0FBQ0gsa0JBQWtCO1FBQ3ZFLHNIQUFzSDtRQUN0SCx1R0FBdUc7UUFDdkcsSUFDRUQsa0JBQWtCLENBQUMsRUFBRSxLQUFLQyxlQUFlLENBQUMsRUFBRSxJQUM1Q0Qsa0JBQWtCLENBQUMsRUFBRSxLQUFLQyxlQUFlLENBQUMsRUFBRSxFQUM1QztZQUNBLE9BQU87UUFDVDtJQUNGLE9BQU8sSUFBSUQsdUJBQXVCQyxpQkFBaUI7UUFDakQsT0FBTztJQUNUO0lBRUEsaUNBQWlDO0lBQ2pDLE1BQU1JLHNCQUNILENBQUNQLENBQUFBLFdBQVcsQ0FBQyxFQUFFLElBQUksS0FBS1EsZ0JBQUFBLFlBQVksQ0FBQ0MsWUFBQUEsTUFBa0I7SUFDMUQsTUFBTUMsbUJBQ0hULENBQUFBLFNBQVNVLGFBQWEsR0FBR0gsZ0JBQUFBLFlBQVksQ0FBQ0MsWUFBQUEsTUFBa0I7SUFDM0QsSUFBSUYscUJBQXFCO1FBQ3ZCLDRFQUE0RTtRQUM1RSxPQUFPLENBQUNHO0lBQ1Y7SUFDQSxvRUFBb0U7SUFDcEUsSUFBSUEsa0JBQWtCO1FBQ3BCLE9BQU87SUFDVDtJQUVBLE1BQU1FLFFBQVFYLFNBQVNXLEtBQUs7SUFDNUIsTUFBTUMsc0JBQXNCYixXQUFXLENBQUMsRUFBRTtJQUMxQyxJQUFJWSxVQUFVLE1BQU07UUFDbEIsSUFBSyxNQUFNRSxRQUFRRixNQUFPO1lBQ3hCLE1BQU1HLGdCQUFnQkgsS0FBSyxDQUFDRSxLQUFLO1lBQ2pDLE1BQU1FLG1CQUFtQkgsbUJBQW1CLENBQUNDLEtBQUs7WUFDbEQsSUFDRUUscUJBQXFCQyxhQUNyQmxCLDRCQUE0QmlCLGtCQUFrQkQsZ0JBQzlDO2dCQUNBLE9BQU87WUFDVDtRQUNGO0lBQ0Y7SUFDQSxPQUFPO0FBQ1QiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvaXMtbmF2aWdhdGluZy10by1uZXctcm9vdC1sYXlvdXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBGbGlnaHRSb3V0ZXJTdGF0ZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci10eXBlcydcbmltcG9ydCB7IFByZWZldGNoSGludCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci10eXBlcydcbmltcG9ydCB0eXBlIHsgUm91dGVUcmVlIH0gZnJvbSAnLi4vc2VnbWVudC1jYWNoZS9jYWNoZSdcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTmF2aWdhdGluZ1RvTmV3Um9vdExheW91dChcbiAgY3VycmVudFRyZWU6IEZsaWdodFJvdXRlclN0YXRlLFxuICBuZXh0VHJlZTogUm91dGVUcmVlXG4pOiBib29sZWFuIHtcbiAgLy8gQ29tcGFyZSBzZWdtZW50c1xuICBjb25zdCBjdXJyZW50VHJlZVNlZ21lbnQgPSBjdXJyZW50VHJlZVswXVxuICBjb25zdCBuZXh0VHJlZVNlZ21lbnQgPSBuZXh0VHJlZS5zZWdtZW50XG5cbiAgLy8gSWYgYW55IHNlZ21lbnQgaXMgZGlmZmVyZW50IGJlZm9yZSB3ZSBmaW5kIHRoZSByb290IGxheW91dCwgdGhlIHJvb3QgbGF5b3V0IGhhcyBjaGFuZ2VkLlxuICAvLyBFLmcuIC9zYW1lLyhncm91cDEpL2xheW91dC5qcyAtPiAvc2FtZS8oZ3JvdXAyKS9sYXlvdXQuanNcbiAgLy8gRmlyc3Qgc2VnbWVudCBpcyAnc2FtZScgZm9yIGJvdGgsIGtlZXAgbG9va2luZy4gKGdyb3VwMSkgY2hhbmdlZCB0byAoZ3JvdXAyKSBiZWZvcmUgdGhlIHJvb3QgbGF5b3V0IHdhcyBmb3VuZCwgaXQgbXVzdCBoYXZlIGNoYW5nZWQuXG4gIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnRUcmVlU2VnbWVudCkgJiYgQXJyYXkuaXNBcnJheShuZXh0VHJlZVNlZ21lbnQpKSB7XG4gICAgLy8gQ29tcGFyZSBkeW5hbWljIHBhcmFtIG5hbWUgYW5kIHR5cGUgYnV0IGlnbm9yZSB0aGUgdmFsdWUsIGRpZmZlcmVudCB2YWx1ZXMgd291bGQgbm90IGFmZmVjdCB0aGUgY3VycmVudCByb290IGxheW91dFxuICAgIC8vIC9bbmFtZV0gLSAvc2x1ZzEgYW5kIC9zbHVnMiwgYm90aCB2YWx1ZXMgKHNsdWcxICYgc2x1ZzIpIHN0aWxsIGhhcyB0aGUgc2FtZSBsYXlvdXQgL1tuYW1lXS9sYXlvdXQuanNcbiAgICBpZiAoXG4gICAgICBjdXJyZW50VHJlZVNlZ21lbnRbMF0gIT09IG5leHRUcmVlU2VnbWVudFswXSB8fFxuICAgICAgY3VycmVudFRyZWVTZWdtZW50WzJdICE9PSBuZXh0VHJlZVNlZ21lbnRbMl1cbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9IGVsc2UgaWYgKGN1cnJlbnRUcmVlU2VnbWVudCAhPT0gbmV4dFRyZWVTZWdtZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8vIEN1cnJlbnQgdHJlZSByb290IGxheW91dCBmb3VuZFxuICBjb25zdCBjdXJyZW50SXNSb290TGF5b3V0ID1cbiAgICAoKGN1cnJlbnRUcmVlWzRdID8/IDApICYgUHJlZmV0Y2hIaW50LklzUm9vdExheW91dCkgIT09IDBcbiAgY29uc3QgbmV4dElzUm9vdExheW91dCA9XG4gICAgKG5leHRUcmVlLnByZWZldGNoSGludHMgJiBQcmVmZXRjaEhpbnQuSXNSb290TGF5b3V0KSAhPT0gMFxuICBpZiAoY3VycmVudElzUm9vdExheW91dCkge1xuICAgIC8vIElmIHRoZSBuZXh0IHRyZWUgZG9lc24ndCBoYXZlIHRoZSByb290IGxheW91dCBmbGFnLCBpdCBtdXN0IGhhdmUgY2hhbmdlZC5cbiAgICByZXR1cm4gIW5leHRJc1Jvb3RMYXlvdXRcbiAgfVxuICAvLyBDdXJyZW50IHRyZWUgZGlkbid0IGhhdmUgaXRzIHJvb3QgbGF5b3V0IGhlcmUsIG11c3QgaGF2ZSBjaGFuZ2VkLlxuICBpZiAobmV4dElzUm9vdExheW91dCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBjb25zdCBzbG90cyA9IG5leHRUcmVlLnNsb3RzXG4gIGNvbnN0IGN1cnJlbnRUcmVlQ2hpbGRyZW4gPSBjdXJyZW50VHJlZVsxXVxuICBpZiAoc2xvdHMgIT09IG51bGwpIHtcbiAgICBmb3IgKGNvbnN0IHNsb3QgaW4gc2xvdHMpIHtcbiAgICAgIGNvbnN0IG5leHRUcmVlQ2hpbGQgPSBzbG90c1tzbG90XVxuICAgICAgY29uc3QgY3VycmVudFRyZWVDaGlsZCA9IGN1cnJlbnRUcmVlQ2hpbGRyZW5bc2xvdF1cbiAgICAgIGlmIChcbiAgICAgICAgY3VycmVudFRyZWVDaGlsZCA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgIGlzTmF2aWdhdGluZ1RvTmV3Um9vdExheW91dChjdXJyZW50VHJlZUNoaWxkLCBuZXh0VHJlZUNoaWxkKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuIl0sIm5hbWVzIjpbImlzTmF2aWdhdGluZ1RvTmV3Um9vdExheW91dCIsImN1cnJlbnRUcmVlIiwibmV4dFRyZWUiLCJjdXJyZW50VHJlZVNlZ21lbnQiLCJuZXh0VHJlZVNlZ21lbnQiLCJzZWdtZW50IiwiQXJyYXkiLCJpc0FycmF5IiwiY3VycmVudElzUm9vdExheW91dCIsIlByZWZldGNoSGludCIsIklzUm9vdExheW91dCIsIm5leHRJc1Jvb3RMYXlvdXQiLCJwcmVmZXRjaEhpbnRzIiwic2xvdHMiLCJjdXJyZW50VHJlZUNoaWxkcmVuIiwic2xvdCIsIm5leHRUcmVlQ2hpbGQiLCJjdXJyZW50VHJlZUNoaWxkIiwidW5kZWZpbmVkIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/router-reducer/ppr-navigations.js":
|
||
/*!************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/router-reducer/ppr-navigations.js ***!
|
||
\************************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n FreshnessPolicy: function() {\n return FreshnessPolicy;\n },\n createInitialCacheNodeForHydration: function() {\n return createInitialCacheNodeForHydration;\n },\n isDeferredRsc: function() {\n return isDeferredRsc;\n },\n spawnDynamicRequests: function() {\n return spawnDynamicRequests;\n },\n startPPRNavigation: function() {\n return startPPRNavigation;\n }\n});\nconst _approutertypes = __webpack_require__(/*! ../../../shared/lib/app-router-types */ \"(ssr)/./node_modules/next/dist/shared/lib/app-router-types.js\");\nconst _segment = __webpack_require__(/*! ../../../shared/lib/segment */ \"(ssr)/./node_modules/next/dist/shared/lib/segment.js\");\nconst _matchsegments = __webpack_require__(/*! ../match-segments */ \"(ssr)/./node_modules/next/dist/client/components/match-segments.js\");\nconst _createhreffromurl = __webpack_require__(/*! ./create-href-from-url */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nconst _fetchserverresponse = __webpack_require__(/*! ./fetch-server-response */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/fetch-server-response.js\");\nconst _useactionqueue = __webpack_require__(/*! ../use-action-queue */ \"(ssr)/./node_modules/next/dist/client/components/use-action-queue.js\");\nconst _routerreducertypes = __webpack_require__(/*! ./router-reducer-types */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _isnavigatingtonewrootlayout = __webpack_require__(/*! ./is-navigating-to-new-root-layout */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js\");\nconst _committedstate = __webpack_require__(/*! ./reducers/committed-state */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/committed-state.js\");\nconst _navigation = __webpack_require__(/*! ../segment-cache/navigation */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/navigation.js\");\nconst _cache = __webpack_require__(/*! ../segment-cache/cache */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/cache.js\");\nconst _types = __webpack_require__(/*! ../segment-cache/types */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/types.js\");\nconst _optimisticroutes = __webpack_require__(/*! ../segment-cache/optimistic-routes */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/optimistic-routes.js\");\nconst _constants = __webpack_require__(/*! ../../../lib/constants */ \"(ssr)/./node_modules/next/dist/lib/constants.js\");\nconst _varypath = __webpack_require__(/*! ../segment-cache/vary-path */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/vary-path.js\");\nconst _bfcache = __webpack_require__(/*! ../segment-cache/bfcache */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/bfcache.js\");\nvar FreshnessPolicy = /*#__PURE__*/ function(FreshnessPolicy) {\n FreshnessPolicy[FreshnessPolicy[\"Default\"] = 0] = \"Default\";\n FreshnessPolicy[FreshnessPolicy[\"Hydration\"] = 1] = \"Hydration\";\n FreshnessPolicy[FreshnessPolicy[\"HistoryTraversal\"] = 2] = \"HistoryTraversal\";\n FreshnessPolicy[FreshnessPolicy[\"RefreshAll\"] = 3] = \"RefreshAll\";\n FreshnessPolicy[FreshnessPolicy[\"HMRRefresh\"] = 4] = \"HMRRefresh\";\n FreshnessPolicy[FreshnessPolicy[\"Gesture\"] = 5] = \"Gesture\";\n return FreshnessPolicy;\n}({});\nconst noop = ()=>{};\nfunction createInitialCacheNodeForHydration(navigatedAt, initialTree, seedData, seedHead, seedDynamicStaleAt) {\n // Create the initial cache node tree, using the data embedded into the\n // HTML document.\n const accumulation = {\n separateRefreshUrls: null,\n scrollRef: null\n };\n const task = createCacheNodeOnNavigation(navigatedAt, initialTree, null, 1, seedData, seedHead, seedDynamicStaleAt, false, accumulation);\n return task;\n}\nfunction startPPRNavigation(navigatedAt, oldUrl, oldRenderedSearch, oldCacheNode, oldRouterState, newRouteTree, newMetadataVaryPath, freshness, seedData, seedHead, seedDynamicStaleAt, isSamePageNavigation, accumulation) {\n const didFindRootLayout = false;\n const parentNeedsDynamicRequest = false;\n const parentRefreshState = null;\n const oldRootRefreshState = {\n canonicalUrl: (0, _createhreffromurl.createHrefFromUrl)(oldUrl),\n renderedSearch: oldRenderedSearch\n };\n return updateCacheNodeOnNavigation(navigatedAt, oldUrl, oldCacheNode !== null ? oldCacheNode : undefined, oldRouterState, newRouteTree, newMetadataVaryPath, freshness, didFindRootLayout, seedData, seedHead, seedDynamicStaleAt, isSamePageNavigation, parentNeedsDynamicRequest, oldRootRefreshState, parentRefreshState, accumulation);\n}\nfunction updateCacheNodeOnNavigation(navigatedAt, oldUrl, oldCacheNode, oldRouterState, newRouteTree, newMetadataVaryPath, freshness, didFindRootLayout, seedData, seedHead, seedDynamicStaleAt, isSamePageNavigation, parentNeedsDynamicRequest, oldRootRefreshState, parentRefreshState, accumulation) {\n // Check if this segment matches the one in the previous route.\n const oldSegment = oldRouterState[0];\n const newSegment = createSegmentFromRouteTree(newRouteTree);\n if (!(0, _matchsegments.matchSegment)(newSegment, oldSegment)) {\n // This segment does not match the previous route. We're now entering the\n // new part of the target route. Switch to the \"create\" path.\n if (// highest-level layout in a route tree is referred to as the \"root\"\n // layout.) This could mean that we're navigating between two different\n // root layouts. When this happens, we perform a full-page (MPA-style)\n // navigation.\n //\n // However, the algorithm for deciding where to start rendering a route\n // (i.e. the one performed in order to reach this function) is stricter\n // than the one used to detect a change in the root layout. So just\n // because we're re-rendering a segment outside of the root layout does\n // not mean we should trigger a full-page navigation.\n //\n // Specifically, we handle dynamic parameters differently: two segments\n // are considered the same even if their parameter values are different.\n //\n // Refer to isNavigatingToNewRootLayout for details.\n //\n // Note that we only have to perform this extra traversal if we didn't\n // already discover a root layout in the part of the tree that is\n // unchanged. We also only need to compare the subtree that is not\n // shared. In the common case, this branch is skipped completely.\n !didFindRootLayout && (0, _isnavigatingtonewrootlayout.isNavigatingToNewRootLayout)(oldRouterState, newRouteTree) || // The global Not Found route (app/global-not-found.tsx) is a special\n // case, because it acts like a root layout, but in the router tree, it\n // is rendered in the same position as app/layout.tsx.\n //\n // Any navigation to the global Not Found route should trigger a\n // full-page navigation.\n //\n // TODO: We should probably model this by changing the key of the root\n // segment when this happens. Then the root layout check would work\n // as expected, without a special case.\n newSegment === _segment.NOT_FOUND_SEGMENT_KEY) {\n return null;\n }\n return createCacheNodeOnNavigation(navigatedAt, newRouteTree, newMetadataVaryPath, freshness, seedData, seedHead, seedDynamicStaleAt, parentNeedsDynamicRequest, accumulation);\n }\n const newSlots = newRouteTree.slots;\n const oldRouterStateChildren = oldRouterState[1];\n const seedDataChildren = seedData !== null ? seedData[1] : null;\n // We're currently traversing the part of the tree that was also part of\n // the previous route. If we discover a root layout, then we don't need to\n // trigger an MPA navigation.\n const childDidFindRootLayout = didFindRootLayout || (newRouteTree.prefetchHints & _approutertypes.PrefetchHint.IsRootLayout) !== 0;\n let shouldRefreshDynamicData = false;\n switch(freshness){\n case 0:\n case 2:\n case 1:\n case 5:\n shouldRefreshDynamicData = false;\n break;\n case 3:\n case 4:\n shouldRefreshDynamicData = true;\n break;\n default:\n freshness;\n break;\n }\n // TODO: We're not consistent about how we do this check. Some places\n // check if the segment starts with PAGE_SEGMENT_KEY, but most seem to\n // check if there any any children, which is why I'm doing it here. We\n // should probably encode an empty children set as `null` though. Either\n // way, we should update all the checks to be consistent.\n const isLeafSegment = newSlots === null;\n // Get the data for this segment. Since it was part of the previous route,\n // usually we just clone the data from the old CacheNode. However, during a\n // refresh or a revalidation, there won't be any existing CacheNode. So we\n // may need to consult the prefetch cache, like we would for a new segment.\n let newCacheNode;\n let needsDynamicRequest;\n if (oldCacheNode !== undefined && !shouldRefreshDynamicData && // During a same-page navigation, we always refetch the page segments\n !(isLeafSegment && isSamePageNavigation)) {\n // Reuse the existing CacheNode\n const dropPrefetchRsc = false;\n newCacheNode = reuseSharedCacheNode(dropPrefetchRsc, oldCacheNode);\n needsDynamicRequest = false;\n } else {\n // If this is part of a refresh, ignore the existing CacheNode and create a\n // new one.\n const seedRsc = seedData !== null ? seedData[0] : null;\n const result = createCacheNodeForSegment(navigatedAt, newRouteTree, seedRsc, newMetadataVaryPath, seedHead, freshness, seedDynamicStaleAt);\n newCacheNode = result.cacheNode;\n needsDynamicRequest = result.needsDynamicRequest;\n // Carry forward the old node's scrollRef. This preserves scroll\n // intent when a prior navigation's cache node is replaced by a\n // refresh before the scroll handler has had a chance to fire —\n // e.g. when router.push() and router.refresh() are called in the\n // same startTransition batch.\n if (oldCacheNode !== undefined) {\n newCacheNode.scrollRef = oldCacheNode.scrollRef;\n }\n }\n // During a refresh navigation, there's a special case that happens when\n // entering a \"default\" slot. The default slot may not be part of the\n // current route; it may have been reused from an older route. If so,\n // we need to fetch its data from the old route's URL rather than current\n // route's URL. Keep track of this as we traverse the tree.\n const maybeRefreshState = newRouteTree.refreshState;\n const refreshState = maybeRefreshState !== undefined && maybeRefreshState !== null ? maybeRefreshState : parentRefreshState;\n // If this segment itself needs to fetch new data from the server, then by\n // definition it is being refreshed. Track its refresh URL so we know which\n // URL to request the data from.\n if (needsDynamicRequest && refreshState !== null) {\n accumulateRefreshUrl(accumulation, refreshState);\n }\n // As we diff the trees, we may sometimes modify (copy-on-write, not mutate)\n // the Route Tree that was returned by the server — for example, in the case\n // of default parallel routes, we preserve the currently active segment. To\n // avoid mutating the original tree, we clone the router state children along\n // the return path.\n let patchedRouterStateChildren = {};\n let taskChildren = null;\n // Most navigations require a request to fetch additional data from the\n // server, either because the data was not already prefetched, or because the\n // target route contains dynamic data that cannot be prefetched.\n //\n // However, if the target route is fully static, and it's already completely\n // loaded into the segment cache, then we can skip the server request.\n //\n // This starts off as `false`, and is set to `true` if any of the child\n // routes requires a dynamic request.\n let childNeedsDynamicRequest = false;\n // As we traverse the children, we'll construct a FlightRouterState that can\n // be sent to the server to request the dynamic data. If it turns out that\n // nothing in the subtree is dynamic (i.e. childNeedsDynamicRequest is false\n // at the end), then this will be discarded.\n // TODO: We can probably optimize the format of this data structure to only\n // include paths that are dynamic. Instead of reusing the\n // FlightRouterState type.\n let dynamicRequestTreeChildren = {};\n let newCacheNodeSlots = null;\n if (newSlots !== null) {\n const oldCacheNodeSlots = oldCacheNode !== undefined ? oldCacheNode.slots : null;\n newCacheNode.slots = newCacheNodeSlots = {};\n taskChildren = new Map();\n for(let parallelRouteKey in newSlots){\n let newRouteTreeChild = newSlots[parallelRouteKey];\n const oldRouterStateChild = oldRouterStateChildren[parallelRouteKey];\n if (oldRouterStateChild === undefined) {\n // This should never happen, but if it does, it suggests a malformed\n // server response. Trigger a full-page navigation.\n return null;\n }\n let seedDataChild = seedDataChildren !== null ? seedDataChildren[parallelRouteKey] : null;\n const oldSegmentChild = oldRouterStateChild[0];\n let newSegmentChild = createSegmentFromRouteTree(newRouteTreeChild);\n let seedHeadChild = seedHead;\n if (// was stashed in the history entry as-is.\n freshness !== 2 && newSegmentChild === _segment.DEFAULT_SEGMENT_KEY && oldSegmentChild !== _segment.DEFAULT_SEGMENT_KEY) {\n // This is a \"default\" segment. These are never sent by the server during\n // a soft navigation; instead, the client reuses whatever segment was\n // already active in that slot on the previous route.\n newRouteTreeChild = reuseActiveSegmentInDefaultSlot(newRouteTree, parallelRouteKey, oldRootRefreshState, oldRouterStateChild);\n newSegmentChild = createSegmentFromRouteTree(newRouteTreeChild);\n // Since we're switching to a different route tree, these are no\n // longer valid, because they correspond to the outer tree.\n seedDataChild = null;\n seedHeadChild = null;\n }\n const oldCacheNodeChild = oldCacheNodeSlots !== null ? oldCacheNodeSlots[parallelRouteKey] : undefined;\n const taskChild = updateCacheNodeOnNavigation(navigatedAt, oldUrl, oldCacheNodeChild, oldRouterStateChild, newRouteTreeChild, newMetadataVaryPath, freshness, childDidFindRootLayout, seedDataChild ?? null, seedHeadChild, seedDynamicStaleAt, isSamePageNavigation, parentNeedsDynamicRequest || needsDynamicRequest, oldRootRefreshState, refreshState, accumulation);\n if (taskChild === null) {\n // One of the child tasks discovered a change to the root layout.\n // Immediately unwind from this recursive traversal. This will trigger a\n // full-page navigation.\n return null;\n }\n // Recursively propagate up the child tasks.\n taskChildren.set(parallelRouteKey, taskChild);\n newCacheNodeSlots[parallelRouteKey] = taskChild.node;\n // The child tree's route state may be different from the prefetched\n // route sent by the server. We need to clone it as we traverse back up\n // the tree.\n const taskChildRoute = taskChild.route;\n patchedRouterStateChildren[parallelRouteKey] = taskChildRoute;\n const dynamicRequestTreeChild = taskChild.dynamicRequestTree;\n if (dynamicRequestTreeChild !== null) {\n // Something in the child tree is dynamic.\n childNeedsDynamicRequest = true;\n dynamicRequestTreeChildren[parallelRouteKey] = dynamicRequestTreeChild;\n } else {\n dynamicRequestTreeChildren[parallelRouteKey] = taskChildRoute;\n }\n }\n }\n const newFlightRouterState = [\n createSegmentFromRouteTree(newRouteTree),\n patchedRouterStateChildren,\n refreshState !== null ? [\n refreshState.canonicalUrl,\n refreshState.renderedSearch\n ] : null,\n null,\n newRouteTree.prefetchHints\n ];\n return {\n status: needsDynamicRequest ? 0 : 1,\n route: newFlightRouterState,\n node: newCacheNode,\n dynamicRequestTree: createDynamicRequestTree(newFlightRouterState, dynamicRequestTreeChildren, needsDynamicRequest, childNeedsDynamicRequest, parentNeedsDynamicRequest),\n refreshState,\n children: taskChildren\n };\n}\n/**\n * Assigns a ScrollRef to a new leaf CacheNode so the scroll handler\n * knows to scroll to it after navigation. All leaves in the same\n * navigation share the same ScrollRef — the first segment to scroll\n * consumes it, preventing others from also scrolling.\n *\n * This is only called inside `createCacheNodeOnNavigation`, which only\n * runs when segments diverge from the previous route. So for a refresh\n * where the route structure stays the same, segments match, the update\n * path is taken, and this function is never called — no scroll ref is\n * assigned. A scroll ref is only assigned when the route actually\n * changed (e.g. a redirect, or a dynamic condition on the server that\n * produces a different route).\n *\n * Skipped during hydration (initial render should not scroll) and\n * history traversal (scroll restoration is handled separately).\n */ function accumulateScrollRef(freshness, cacheNode, accumulation) {\n switch(freshness){\n case 0:\n case 5:\n case 3:\n case 4:\n if (accumulation.scrollRef === null) {\n accumulation.scrollRef = {\n current: true\n };\n }\n cacheNode.scrollRef = accumulation.scrollRef;\n break;\n case 1:\n break;\n case 2:\n break;\n default:\n freshness;\n break;\n }\n}\nfunction createCacheNodeOnNavigation(navigatedAt, newRouteTree, newMetadataVaryPath, freshness, seedData, seedHead, seedDynamicStaleAt, parentNeedsDynamicRequest, accumulation) {\n // Same traversal as updateCacheNodeNavigation, but simpler. We switch to this\n // path once we reach the part of the tree that was not in the previous route.\n // We don't need to diff against the old tree, we just need to create a new\n // one. We also don't need to worry about any refresh-related logic.\n //\n // For the most part, this is a subset of updateCacheNodeOnNavigation, so any\n // change that happens in this function likely needs to be applied to that\n // one, too. However there are some places where the behavior intentionally\n // diverges, which is why we keep them separate.\n const newSegment = createSegmentFromRouteTree(newRouteTree);\n const newSlots = newRouteTree.slots;\n const seedDataChildren = seedData !== null ? seedData[1] : null;\n const seedRsc = seedData !== null ? seedData[0] : null;\n const result = createCacheNodeForSegment(navigatedAt, newRouteTree, seedRsc, newMetadataVaryPath, seedHead, freshness, seedDynamicStaleAt);\n const newCacheNode = result.cacheNode;\n const needsDynamicRequest = result.needsDynamicRequest;\n const isLeafSegment = newSlots === null;\n if (isLeafSegment) {\n accumulateScrollRef(freshness, newCacheNode, accumulation);\n }\n let patchedRouterStateChildren = {};\n let taskChildren = null;\n let childNeedsDynamicRequest = false;\n let dynamicRequestTreeChildren = {};\n let newCacheNodeSlots = null;\n if (newSlots !== null) {\n newCacheNode.slots = newCacheNodeSlots = {};\n taskChildren = new Map();\n for(let parallelRouteKey in newSlots){\n const newRouteTreeChild = newSlots[parallelRouteKey];\n const seedDataChild = seedDataChildren !== null ? seedDataChildren[parallelRouteKey] : null;\n const taskChild = createCacheNodeOnNavigation(navigatedAt, newRouteTreeChild, newMetadataVaryPath, freshness, seedDataChild ?? null, seedHead, seedDynamicStaleAt, parentNeedsDynamicRequest || needsDynamicRequest, accumulation);\n taskChildren.set(parallelRouteKey, taskChild);\n newCacheNodeSlots[parallelRouteKey] = taskChild.node;\n const taskChildRoute = taskChild.route;\n patchedRouterStateChildren[parallelRouteKey] = taskChildRoute;\n const dynamicRequestTreeChild = taskChild.dynamicRequestTree;\n if (dynamicRequestTreeChild !== null) {\n childNeedsDynamicRequest = true;\n dynamicRequestTreeChildren[parallelRouteKey] = dynamicRequestTreeChild;\n } else {\n dynamicRequestTreeChildren[parallelRouteKey] = taskChildRoute;\n }\n }\n }\n const newFlightRouterState = [\n newSegment,\n patchedRouterStateChildren,\n null,\n null,\n newRouteTree.prefetchHints\n ];\n return {\n status: needsDynamicRequest ? 0 : 1,\n route: newFlightRouterState,\n node: newCacheNode,\n dynamicRequestTree: createDynamicRequestTree(newFlightRouterState, dynamicRequestTreeChildren, needsDynamicRequest, childNeedsDynamicRequest, parentNeedsDynamicRequest),\n // This route is not part of the current tree, so there's no reason to\n // track the refresh URL.\n refreshState: null,\n children: taskChildren\n };\n}\nfunction createSegmentFromRouteTree(newRouteTree) {\n if (newRouteTree.isPage) {\n // In a dynamic server response, the server embeds the search params into\n // the segment key, but in a static one it's omitted. The client handles\n // this inconsistency by adding the search params back right at the end.\n //\n // TODO: The only thing this is used for is to create a cache key for\n // ChildSegmentMap. But we already track the `renderedSearch` everywhere as\n // part of the varyPath. The plan is get rid of ChildSegmentMap and\n // store the page data in a CacheMap using the varyPath, like we do\n // for prefetches. Then we can remove it from the segment key.\n //\n // As an incremental step, we can grab the search params from the varyPath.\n const renderedSearch = (0, _varypath.getRenderedSearchFromVaryPath)(newRouteTree.varyPath);\n if (renderedSearch === null) {\n return _segment.PAGE_SEGMENT_KEY;\n }\n // This is based on equivalent logic in addSearchParamsIfPageSegment, used\n // on the server.\n const stringifiedQuery = JSON.stringify(Object.fromEntries(new URLSearchParams(renderedSearch)));\n return stringifiedQuery !== '{}' ? _segment.PAGE_SEGMENT_KEY + '?' + stringifiedQuery : _segment.PAGE_SEGMENT_KEY;\n }\n return newRouteTree.segment;\n}\nfunction patchRouterStateWithNewChildren(baseRouterState, newChildren) {\n const clone = [\n baseRouterState[0],\n newChildren\n ];\n // Based on equivalent logic in apply-router-state-patch-to-tree, but should\n // confirm whether we need to copy all of these fields. Not sure the server\n // ever sends, e.g. the refetch marker.\n if (2 in baseRouterState) {\n clone[2] = baseRouterState[2];\n }\n if (3 in baseRouterState) {\n clone[3] = baseRouterState[3];\n }\n if (4 in baseRouterState) {\n clone[4] = baseRouterState[4];\n }\n return clone;\n}\nfunction createDynamicRequestTree(newRouterState, dynamicRequestTreeChildren, needsDynamicRequest, childNeedsDynamicRequest, parentNeedsDynamicRequest) {\n // Create a FlightRouterState that instructs the server how to render the\n // requested segment.\n //\n // Or, if neither this segment nor any of the children require a new data,\n // then we return `null` to skip the request.\n let dynamicRequestTree = null;\n if (needsDynamicRequest) {\n dynamicRequestTree = patchRouterStateWithNewChildren(newRouterState, dynamicRequestTreeChildren);\n // The \"refetch\" marker is set on the top-most segment that requires new\n // data. We can omit it if a parent was already marked.\n if (!parentNeedsDynamicRequest) {\n dynamicRequestTree[3] = 'refetch';\n }\n } else if (childNeedsDynamicRequest) {\n // This segment does not request new data, but at least one of its\n // children does.\n dynamicRequestTree = patchRouterStateWithNewChildren(newRouterState, dynamicRequestTreeChildren);\n } else {\n dynamicRequestTree = null;\n }\n return dynamicRequestTree;\n}\nfunction accumulateRefreshUrl(accumulation, refreshState) {\n // This is a refresh navigation, and we're inside a \"default\" slot that's\n // not part of the current route; it was reused from an older route. In\n // order to get fresh data for this reused route, we need to issue a\n // separate request using the old route's URL.\n //\n // Track these extra URLs in the accumulated result. Later, we'll construct\n // an appropriate request for each unique URL in the final set. The reason\n // we don't do it immediately here is so we can deduplicate multiple\n // instances of the same URL into a single request. See\n // listenForDynamicRequest for more details.\n const refreshUrl = refreshState.canonicalUrl;\n const separateRefreshUrls = accumulation.separateRefreshUrls;\n if (separateRefreshUrls === null) {\n accumulation.separateRefreshUrls = new Set([\n refreshUrl\n ]);\n } else {\n separateRefreshUrls.add(refreshUrl);\n }\n}\nfunction reuseActiveSegmentInDefaultSlot(parentRouteTree, parallelRouteKey, oldRootRefreshState, oldRouterState) {\n // This is a \"default\" segment. These are never sent by the server during a\n // soft navigation; instead, the client reuses whatever segment was already\n // active in that slot on the previous route. This means if we later need to\n // refresh the segment, it will have to be refetched from the previous route's\n // URL. We store it in the Flight Router State.\n let reusedUrl;\n let reusedRenderedSearch;\n const oldRefreshState = oldRouterState[2];\n if (oldRefreshState !== undefined && oldRefreshState !== null) {\n // This segment was already reused from an even older route. Keep its\n // existing URL and refresh state.\n reusedUrl = oldRefreshState[0];\n reusedRenderedSearch = oldRefreshState[1];\n } else {\n // Since this route didn't already have a refresh state, it must have been\n // reachable from the root of the old route. So we use the refresh state\n // that represents the old route.\n reusedUrl = oldRootRefreshState.canonicalUrl;\n reusedRenderedSearch = oldRootRefreshState.renderedSearch;\n }\n const acc = {\n metadataVaryPath: null\n };\n const reusedRouteTree = (0, _cache.convertReusedFlightRouterStateToRouteTree)(parentRouteTree, parallelRouteKey, oldRouterState, reusedRenderedSearch, acc);\n reusedRouteTree.refreshState = {\n canonicalUrl: reusedUrl,\n renderedSearch: reusedRenderedSearch\n };\n return reusedRouteTree;\n}\nfunction reuseSharedCacheNode(dropPrefetchRsc, existingCacheNode) {\n // Clone the CacheNode that was already present in the previous tree.\n // Carry forward the scrollRef so scroll intent from a prior navigation\n // survives tree rebuilds (e.g. push + refresh in the same batch).\n return createCacheNode(existingCacheNode.rsc, dropPrefetchRsc ? null : existingCacheNode.prefetchRsc, existingCacheNode.head, dropPrefetchRsc ? null : existingCacheNode.prefetchHead, existingCacheNode.scrollRef);\n}\nfunction createCacheNodeForSegment(now, tree, seedRsc, metadataVaryPath, seedHead, freshness, dynamicStaleAt) {\n // Construct a new CacheNode using data from the BFCache, the client's\n // Segment Cache, or seeded from a server response.\n //\n // If there's a cache miss, or if we only have a partial hit, we'll render\n // the partial state immediately, and spawn a request to the server to fill\n // in the missing data.\n //\n // If the segment is fully cached on the client already, we can omit this\n // segment from the server request.\n //\n // If we already have a dynamic data response associated with this navigation,\n // as in the case of a Server Action-initiated redirect or refresh, we may\n // also be able to use that data without spawning a new request. (This is\n // referred to as the \"seed\" data.)\n const isPage = tree.isPage;\n // During certain kinds of navigations, we may be able to render from\n // the BFCache.\n switch(freshness){\n case 0:\n {\n // Check BFCache during regular navigations. The entry's staleAt\n // determines whether it's still fresh. This is used when\n // staleTimes.dynamic is configured globally or when a page exports\n // unstable_dynamicStaleTime for per-page control.\n const bfcacheEntry = (0, _bfcache.readFromBFCacheDuringRegularNavigation)(now, tree.varyPath);\n if (bfcacheEntry !== null) {\n return {\n cacheNode: createCacheNode(bfcacheEntry.rsc, bfcacheEntry.prefetchRsc, bfcacheEntry.head, bfcacheEntry.prefetchHead),\n needsDynamicRequest: false\n };\n }\n break;\n }\n case 1:\n {\n // This is not related to the BFCache but it is a special case.\n //\n // We should never spawn network requests during hydration. We must treat\n // the initial payload as authoritative, because the initial page load is\n // used as a last-ditch mechanism for recovering the app.\n //\n // This is also an important safety check because if this leaks into the\n // server rendering path (which theoretically it never should because the\n // server payload should be consistent), the server would hang because these\n // promises would never resolve.\n //\n // TODO: There is an existing case where the global \"not found\" boundary\n // triggers this path. But it does render correctly despite that. That's an\n // unusual render path so it's not surprising, but we should look into\n // modeling it in a more consistent way. See also the /_notFound special\n // case in updateCacheNodeOnNavigation.\n const rsc = seedRsc;\n const prefetchRsc = null;\n const head = isPage ? seedHead : null;\n const prefetchHead = null;\n (0, _bfcache.writeToBFCache)(now, tree.varyPath, rsc, prefetchRsc, head, prefetchHead, dynamicStaleAt);\n if (isPage && metadataVaryPath !== null) {\n (0, _bfcache.writeHeadToBFCache)(now, metadataVaryPath, head, prefetchHead, dynamicStaleAt);\n }\n return {\n cacheNode: createCacheNode(rsc, prefetchRsc, head, prefetchHead),\n needsDynamicRequest: false\n };\n }\n case 2:\n const bfcacheEntry = (0, _bfcache.readFromBFCache)(tree.varyPath);\n if (bfcacheEntry !== null) {\n // Only show prefetched data if the dynamic data is still pending. This\n // avoids a flash back to the prefetch state in a case where it's highly\n // likely to have already streamed in.\n //\n // Tehnically, what we're actually checking is whether the dynamic\n // network response was received. But since it's a streaming response,\n // this does not mean that all the dynamic data has fully streamed in.\n // It just means that _some_ of the dynamic data was received. But as a\n // heuristic, we assume that the rest dynamic data will stream in\n // quickly, so it's still better to skip the prefetch state.\n const oldRsc = bfcacheEntry.rsc;\n const oldRscDidResolve = !isDeferredRsc(oldRsc) || oldRsc.status !== 'pending';\n const dropPrefetchRsc = oldRscDidResolve;\n return {\n cacheNode: createCacheNode(bfcacheEntry.rsc, dropPrefetchRsc ? null : bfcacheEntry.prefetchRsc, bfcacheEntry.head, dropPrefetchRsc ? null : bfcacheEntry.prefetchHead),\n needsDynamicRequest: false\n };\n }\n break;\n case 3:\n case 4:\n case 5:\n break;\n default:\n freshness;\n break;\n }\n let cachedRsc = null;\n let isCachedRscPartial = true;\n const segmentEntry = (0, _cache.readSegmentCacheEntry)(now, tree.varyPath);\n if (segmentEntry !== null) {\n switch(segmentEntry.status){\n case _cache.EntryStatus.Fulfilled:\n {\n // Happy path: a cache hit\n cachedRsc = segmentEntry.rsc;\n isCachedRscPartial = segmentEntry.isPartial;\n break;\n }\n case _cache.EntryStatus.Pending:\n {\n // We haven't received data for this segment yet, but there's already\n // an in-progress request. Since it's extremely likely to arrive\n // before the dynamic data response, we might as well use it.\n const promiseForFulfilledEntry = (0, _cache.waitForSegmentCacheEntry)(segmentEntry);\n cachedRsc = promiseForFulfilledEntry.then((entry)=>entry !== null ? entry.rsc : null);\n // Because the request is still pending, we typically don't know yet\n // whether the response will be partial. We shouldn't skip this segment\n // during the dynamic navigation request. Otherwise, we might need to\n // do yet another request to fill in the remaining data, creating\n // a waterfall.\n //\n // The one exception is if this segment is being fetched with via\n // prefetch={true} (i.e. the \"force stale\" or \"full\" strategy). If so,\n // we can assume the response will be full. This field is set to `false`\n // for such segments.\n isCachedRscPartial = segmentEntry.isPartial;\n break;\n }\n case _cache.EntryStatus.Empty:\n case _cache.EntryStatus.Rejected:\n {\n break;\n }\n default:\n {\n segmentEntry;\n break;\n }\n }\n }\n // Now combine the cached data with the seed data to determine what we can\n // render immediately, versus what needs to stream in later.\n // A partial state to show immediately while we wait for the final data to\n // arrive. If `rsc` is already a complete value (not partial), or if we\n // don't have any useful partial state, this will be `null`.\n let prefetchRsc;\n // The final, resolved segment data. If the data is missing, this will be a\n // promise that resolves to the eventual data. A resolved value of `null`\n // means the data failed to load; the LayoutRouter will suspend indefinitely\n // until the router updates again (refer to finishNavigationTask).\n let rsc;\n let doesSegmentNeedDynamicRequest;\n if (seedRsc !== null) {\n // We already have a dynamic server response for this segment.\n if (isCachedRscPartial) {\n // The seed data may still be streaming in, so it's worth showing the\n // partial cached state in the meantime.\n prefetchRsc = cachedRsc;\n rsc = seedRsc;\n } else {\n // We already have a completely cached segment. Ignore the seed data,\n // which may still be streaming in. This shouldn't happen in the normal\n // case because the client will inform the server which segments are\n // already fully cached, and the server will skip rendering them.\n prefetchRsc = null;\n rsc = cachedRsc;\n }\n doesSegmentNeedDynamicRequest = false;\n } else {\n if (isCachedRscPartial) {\n // The cached data contains dynamic holes, or it's missing entirely. We'll\n // show the partial state immediately (if available), and stream in the\n // final data.\n //\n // Create a pending promise that we can later write to when the\n // data arrives from the server.\n prefetchRsc = cachedRsc;\n rsc = createDeferredRsc();\n } else {\n // The data is fully cached.\n prefetchRsc = null;\n rsc = cachedRsc;\n }\n doesSegmentNeedDynamicRequest = isCachedRscPartial;\n }\n // If this is a page segment, we need to do the same for the head. This\n // follows analogous logic to the segment data above.\n // TODO: We don't need to store the head on the page segment's CacheNode; we\n // can lift it to the main state object. Then we can also delete\n // findHeadCache.\n let prefetchHead = null;\n let head = null;\n let doesHeadNeedDynamicRequest = isPage;\n if (isPage) {\n let cachedHead = null;\n let isCachedHeadPartial = true;\n if (metadataVaryPath !== null) {\n const metadataEntry = (0, _cache.readSegmentCacheEntry)(now, metadataVaryPath);\n if (metadataEntry !== null) {\n switch(metadataEntry.status){\n case _cache.EntryStatus.Fulfilled:\n {\n cachedHead = metadataEntry.rsc;\n isCachedHeadPartial = metadataEntry.isPartial;\n break;\n }\n case _cache.EntryStatus.Pending:\n {\n cachedHead = (0, _cache.waitForSegmentCacheEntry)(metadataEntry).then((entry)=>entry !== null ? entry.rsc : null);\n isCachedHeadPartial = metadataEntry.isPartial;\n break;\n }\n case _cache.EntryStatus.Empty:\n case _cache.EntryStatus.Rejected:\n {\n break;\n }\n default:\n {\n metadataEntry;\n break;\n }\n }\n }\n }\n if (false) {}\n if (seedHead !== null) {\n if (isCachedHeadPartial) {\n prefetchHead = cachedHead;\n head = seedHead;\n } else {\n prefetchHead = null;\n head = cachedHead;\n }\n doesHeadNeedDynamicRequest = false;\n } else {\n if (isCachedHeadPartial) {\n prefetchHead = cachedHead;\n head = createDeferredRsc();\n } else {\n prefetchHead = null;\n head = cachedHead;\n }\n doesHeadNeedDynamicRequest = isCachedHeadPartial;\n }\n }\n // Now that we're creating a new segment, write its data to the BFCache. A\n // subsequent back/forward navigation will reuse this same data, until or\n // unless it's cleared by a refresh/revalidation.\n //\n // Skip BFCache writes for optimistic navigations since they are transient\n // and will be replaced by the canonical navigation.\n if (freshness !== 5) {\n (0, _bfcache.writeToBFCache)(now, tree.varyPath, rsc, prefetchRsc, head, prefetchHead, dynamicStaleAt);\n if (isPage && metadataVaryPath !== null) {\n (0, _bfcache.writeHeadToBFCache)(now, metadataVaryPath, head, prefetchHead, dynamicStaleAt);\n }\n }\n return {\n cacheNode: createCacheNode(rsc, prefetchRsc, head, prefetchHead),\n // TODO: We should store this field on the CacheNode itself. I think we can\n // probably unify NavigationTask, CacheNode, and DeferredRsc into a\n // single type. Or at least CacheNode and DeferredRsc.\n needsDynamicRequest: doesSegmentNeedDynamicRequest || doesHeadNeedDynamicRequest\n };\n}\nfunction createCacheNode(rsc, prefetchRsc, head, prefetchHead, scrollRef = null) {\n return {\n rsc,\n prefetchRsc,\n head,\n prefetchHead,\n slots: null,\n scrollRef\n };\n}\n// Represents whether the previuos navigation resulted in a route tree mismatch.\n// A mismatch results in a refresh of the page. If there are two successive\n// mismatches, we will fall back to an MPA navigation, to prevent a retry loop.\nlet previousNavigationDidMismatch = false;\nfunction spawnDynamicRequests(task, primaryUrl, nextUrl, freshnessPolicy, accumulation, // prediction. Passed through so it can be marked as having a dynamic rewrite\n// if the server returns a different pathname than expected (indicating\n// dynamic rewrite behavior that varies by param value).\nrouteCacheEntry, // server-patch retry logic so it can inherit the intent if the original\n// transition hasn't committed yet.\nnavigateType) {\n const dynamicRequestTree = task.dynamicRequestTree;\n if (dynamicRequestTree === null) {\n // This navigation was fully cached. There are no dynamic requests to spawn.\n previousNavigationDidMismatch = false;\n return;\n }\n // This is intentionally not an async function to discourage the caller from\n // awaiting the result. Any subsequent async operations spawned by this\n // function should result in a separate navigation task, rather than\n // block the original one.\n //\n // In this function we spawn (but do not await) all the network requests that\n // block the navigation, and collect the promises. The next function,\n // `finishNavigationTask`, can await the promises in any order without\n // accidentally introducing a network waterfall.\n const primaryRequestPromise = fetchMissingDynamicData(task, dynamicRequestTree, primaryUrl, nextUrl, freshnessPolicy, routeCacheEntry);\n const separateRefreshUrls = accumulation.separateRefreshUrls;\n let refreshRequestPromises = null;\n if (separateRefreshUrls !== null) {\n // There are multiple URLs that we need to request the data from. This\n // happens when a \"default\" parallel route slot is present in the tree, and\n // its data cannot be fetched from the current route. We need to split the\n // combined dynamic request tree into separate requests per URL.\n // TODO: Create a scoped dynamic request tree that omits anything that\n // is not relevant to the given URL. Without doing this, the server may\n // sometimes render more data than necessary; this is not a regression\n // compared to the pre-Segment Cache implementation, though, just an\n // optimization we can make in the future.\n // Construct a request tree for each additional refresh URL. This will\n // prune away everything except the parts of the tree that match the\n // given refresh URL.\n refreshRequestPromises = [];\n const canonicalUrl = (0, _createhreffromurl.createHrefFromUrl)(primaryUrl);\n for (const refreshUrl of separateRefreshUrls){\n if (refreshUrl === canonicalUrl) {\n continue;\n }\n // TODO: Create a scoped dynamic request tree that omits anything that\n // is not relevant to the given URL. Without doing this, the server may\n // sometimes render more data than necessary; this is not a regression\n // compared to the pre-Segment Cache implementation, though, just an\n // optimization we can make in the future.\n // const scopedDynamicRequestTree = splitTaskByURL(task, refreshUrl)\n const scopedDynamicRequestTree = dynamicRequestTree;\n if (scopedDynamicRequestTree !== null) {\n refreshRequestPromises.push(fetchMissingDynamicData(task, scopedDynamicRequestTree, new URL(refreshUrl, location.origin), // time the refresh URL was set, not the current Next-Url. Need to\n // start tracking this alongside the refresh URL. In the meantime,\n // if a refresh fails due to a mismatch, it will trigger a\n // hard refresh.\n nextUrl, freshnessPolicy, routeCacheEntry));\n }\n }\n }\n // Further async operations are moved into this separate function to\n // discourage sequential network requests.\n const voidPromise = finishNavigationTask(task, nextUrl, primaryRequestPromise, refreshRequestPromises, routeCacheEntry, navigateType);\n // `finishNavigationTask` is responsible for error handling, so we can attach\n // noop callbacks to this promise.\n voidPromise.then(noop, noop);\n}\nasync function finishNavigationTask(task, nextUrl, primaryRequestPromise, refreshRequestPromises, routeCacheEntry, navigateType) {\n // Wait for all the requests to finish, or for the first one to fail.\n let exitStatus = await waitForRequestsToFinish(primaryRequestPromise, refreshRequestPromises);\n // Once the all the requests have finished, check the tree for any remaining\n // pending tasks. If anything is still pending, it means the server response\n // does not match the client, and we must refresh to get back to a consistent\n // state. We can skip this step if we already detected a mismatch during the\n // first phase; it doesn't matter in that case because we're going to refresh\n // the whole tree regardless.\n if (exitStatus === 0) {\n exitStatus = abortRemainingPendingTasks(task, null, null);\n }\n switch(exitStatus){\n case 0:\n {\n // The task has completely finished. There's no missing data. Exit.\n previousNavigationDidMismatch = false;\n return;\n }\n case 1:\n {\n // Some data failed to finish loading. Trigger a soft retry.\n // TODO: As an extra precaution against soft retry loops, consider\n // tracking whether a navigation was itself triggered by a retry. If two\n // happen in a row, fall back to a hard retry.\n const isHardRetry = false;\n const primaryRequestResult = await primaryRequestPromise;\n dispatchRetryDueToTreeMismatch(isHardRetry, primaryRequestResult.url, nextUrl, primaryRequestResult.seed, task.route, routeCacheEntry, navigateType);\n return;\n }\n case 2:\n {\n // Some data failed to finish loading in a non-recoverable way, such as a\n // network error. Trigger an MPA navigation.\n //\n // Hard navigating/refreshing is how we prevent an infinite retry loop\n // caused by a network error — when the network fails, we fall back to the\n // browser behavior for offline navigations. In the future, Next.js may\n // introduce its own custom handling of offline navigations, but that\n // doesn't exist yet.\n const isHardRetry = true;\n const primaryRequestResult = await primaryRequestPromise;\n dispatchRetryDueToTreeMismatch(isHardRetry, primaryRequestResult.url, nextUrl, primaryRequestResult.seed, task.route, routeCacheEntry, navigateType);\n return;\n }\n default:\n {\n return exitStatus;\n }\n }\n}\nfunction waitForRequestsToFinish(primaryRequestPromise, refreshRequestPromises) {\n // Custom async combinator logic. This could be replaced by Promise.any but\n // we don't assume that's available.\n //\n // Each promise resolves once the server responsds and the data is written\n // into the CacheNode tree. Resolve the combined promise once all the\n // requests finish.\n //\n // Or, resolve as soon as one of the requests fails, without waiting for the\n // others to finish.\n return new Promise((resolve)=>{\n const onFulfill = (result)=>{\n if (result.exitStatus === 0) {\n remainingCount--;\n if (remainingCount === 0) {\n // All the requests finished successfully.\n resolve(0);\n }\n } else {\n // One of the requests failed. Exit with a failing status.\n // NOTE: It's possible for one of the requests to fail with SoftRetry\n // and a later one to fail with HardRetry. In this case, we choose to\n // retry immediately, rather than delay the retry until all the requests\n // finish. If it fails again, we will hard retry on the next\n // attempt, anyway.\n resolve(result.exitStatus);\n }\n };\n // onReject shouldn't ever be called because fetchMissingDynamicData's\n // entire body is wrapped in a try/catch. This is just defensive.\n const onReject = ()=>resolve(2);\n // Attach the listeners to the promises.\n let remainingCount = 1;\n primaryRequestPromise.then(onFulfill, onReject);\n if (refreshRequestPromises !== null) {\n remainingCount += refreshRequestPromises.length;\n refreshRequestPromises.forEach((refreshRequestPromise)=>refreshRequestPromise.then(onFulfill, onReject));\n }\n });\n}\nfunction dispatchRetryDueToTreeMismatch(isHardRetry, retryUrl, retryNextUrl, seed, baseTree, // prediction. If the navigation results in a mismatch, we mark it as having\n// a dynamic rewrite so future predictions bail out.\nrouteCacheEntry, originalNavigateType) {\n // If the navigation used a route prediction, mark it as having a dynamic\n // rewrite since it resulted in a mismatch.\n if (routeCacheEntry !== null) {\n (0, _cache.markRouteEntryAsDynamicRewrite)(routeCacheEntry);\n } else if (seed !== null) {\n // Even without a direct reference to the route cache entry, we can still\n // mark the route as having a dynamic rewrite by traversing the known route\n // tree. This handles cases where the navigation didn't originate from a\n // route prediction, but still needs to mark the pattern.\n const metadataVaryPath = seed.metadataVaryPath;\n if (metadataVaryPath !== null) {\n const now = Date.now();\n (0, _optimisticroutes.discoverKnownRoute)(now, retryUrl.pathname, retryNextUrl, null, seed.routeTree, metadataVaryPath, false, (0, _createhreffromurl.createHrefFromUrl)(retryUrl), false, true // hasDynamicRewrite\n );\n }\n }\n // Invalidate all route cache entries. Other entries may have been derived\n // from the template before we knew it had a dynamic rewrite. This also\n // triggers re-prefetching of visible links.\n (0, _cache.invalidateRouteCacheEntries)(retryNextUrl, baseTree);\n // If this is the second time in a row that a navigation resulted in a\n // mismatch, fall back to a hard (MPA) refresh.\n isHardRetry = isHardRetry || previousNavigationDidMismatch;\n previousNavigationDidMismatch = true;\n // If the original navigation hasn't committed to the browser history yet\n // (the transition suspended before React committed), inherit its push/replace\n // intent. Otherwise, the pushState already ran, so use 'replace' to avoid\n // creating a duplicate history entry.\n //\n // This works because React entangles the retry's state update with the\n // original pending transition — they commit together as a single batch,\n // so the navigate type from the retry is what HistoryUpdater ultimately sees.\n //\n // TODO: Ideally this check would happen right before we schedule the React\n // update (i.e., closer to where the action is dispatched into the queue),\n // not here where the action is constructed. But the current action queue\n // doesn't provide a natural place for that. Revisit when we refactor the\n // action queue into a more reactive navigation model.\n const lastCommitted = (0, _committedstate.getLastCommittedTree)();\n const retryNavigateType = lastCommitted !== null && baseTree !== lastCommitted ? originalNavigateType : 'replace';\n const retryAction = {\n type: _routerreducertypes.ACTION_SERVER_PATCH,\n previousTree: baseTree,\n url: retryUrl,\n nextUrl: retryNextUrl,\n seed,\n mpa: isHardRetry,\n navigateType: retryNavigateType\n };\n (0, _useactionqueue.dispatchAppRouterAction)(retryAction);\n}\nasync function fetchMissingDynamicData(task, dynamicRequestTree, url, nextUrl, freshnessPolicy, routeCacheEntry) {\n try {\n const result = await (0, _fetchserverresponse.fetchServerResponse)(url, {\n flightRouterState: dynamicRequestTree,\n nextUrl,\n isHmrRefresh: freshnessPolicy === 4\n });\n if (typeof result === 'string') {\n // fetchServerResponse will return an href to indicate that the SPA\n // navigation failed. For example, if the server triggered a hard\n // redirect, or the fetch request errored. Initiate an MPA navigation\n // to the given href.\n return {\n exitStatus: 2,\n url: new URL(result, location.origin),\n seed: null\n };\n }\n const now = Date.now();\n const seed = (0, _navigation.convertServerPatchToFullTree)(now, task.route, result.flightData, result.renderedSearch, result.dynamicStaleTime);\n // If the navigation lock is active, wait for it to be released before\n // writing the dynamic data. This allows tests to assert on the prefetched\n // UI state.\n if (true) {\n await waitForNavigationLock();\n }\n if (routeCacheEntry !== null && result.staticStageData !== null) {\n const { response: staticStageResponse, isResponsePartial } = result.staticStageData;\n (0, _cache.getStaleAt)(now, staticStageResponse.s).then((staleAt)=>{\n const buildId = result.responseHeaders.get(_constants.NEXT_NAV_DEPLOYMENT_ID_HEADER) ?? staticStageResponse.b;\n (0, _cache.writeStaticStageResponseIntoCache)(now, staticStageResponse.f, buildId, staticStageResponse.h, staleAt, dynamicRequestTree, result.renderedSearch, isResponsePartial);\n }).catch(()=>{\n // The static stage processing failed. Not fatal — the navigation\n // completed normally, we just won't write into the cache.\n });\n }\n if (routeCacheEntry !== null && result.runtimePrefetchStream !== null) {\n (0, _cache.processRuntimePrefetchStream)(now, result.runtimePrefetchStream, dynamicRequestTree, result.renderedSearch).then((processed)=>{\n if (processed !== null) {\n (0, _cache.writeDynamicRenderResponseIntoCache)(now, _types.FetchStrategy.PPRRuntime, processed.flightDatas, processed.buildId, processed.isResponsePartial, processed.headVaryParams, processed.staleAt, processed.navigationSeed, null);\n }\n }).catch(()=>{\n // The runtime prefetch cache write failed. Not fatal — the\n // navigation completed normally, we just won't cache runtime data.\n });\n }\n // result.dynamicStaleTime is in seconds (from the server's `d` field).\n // Convert to an absolute timestamp using the centralized helper.\n const dynamicStaleAt = (0, _bfcache.computeDynamicStaleAt)(now, result.dynamicStaleTime);\n const didReceiveUnknownParallelRoute = writeDynamicDataIntoNavigationTask(task, seed.routeTree, seed.data, seed.head, dynamicStaleAt, result.debugInfo);\n return {\n exitStatus: didReceiveUnknownParallelRoute ? 1 : 0,\n url: new URL(result.canonicalUrl, location.origin),\n seed\n };\n } catch {\n // This shouldn't happen because fetchServerResponse's entire body is\n // wrapped in a try/catch. If it does, though, it implies the server failed\n // to respond with any tree at all. So we must fall back to a hard retry.\n return {\n exitStatus: 2,\n url: url,\n seed: null\n };\n }\n}\nfunction writeDynamicDataIntoNavigationTask(task, serverRouteTree, dynamicData, dynamicHead, dynamicStaleAt, debugInfo) {\n if (task.status === 0 && dynamicData !== null) {\n task.status = 1;\n finishPendingCacheNode(task.node, dynamicData, dynamicHead, debugInfo);\n // Update the BFCache entry's staleAt for this segment with the value\n // from the dynamic response. This applies the per-page\n // unstable_dynamicStaleTime if set, or the default DYNAMIC_STALETIME_MS.\n // We only update segments that received dynamic data — static segments\n // are unaffected.\n (0, _bfcache.updateBFCacheEntryStaleAt)(serverRouteTree.varyPath, dynamicStaleAt);\n }\n const taskChildren = task.children;\n const serverChildren = serverRouteTree.slots;\n const dynamicDataChildren = dynamicData !== null ? dynamicData[1] : null;\n // Detect whether the server sends a parallel route slot that the client\n // doesn't know about.\n let didReceiveUnknownParallelRoute = false;\n if (taskChildren !== null) {\n if (serverChildren !== null) {\n for(const parallelRouteKey in serverChildren){\n const serverRouteTreeChild = serverChildren[parallelRouteKey];\n const dynamicDataChild = dynamicDataChildren !== null ? dynamicDataChildren[parallelRouteKey] : null;\n const taskChild = taskChildren.get(parallelRouteKey);\n if (taskChild === undefined) {\n // The server sent a child segment that the client doesn't know about.\n //\n // When we receive an unknown parallel route, we must consider it a\n // mismatch. This is unlike the case where the segment itself\n // mismatches, because multiple routes can be active simultaneously.\n // But a given layout should never have a mismatching set of\n // child slots.\n //\n // Theoretically, this should only happen in development during an HMR\n // refresh, because the set of parallel routes for a layout does not\n // change over the lifetime of a build/deployment. In production, we\n // should have already mismatched on either the build id or the segment\n // path. But as an extra precaution, we validate in prod, too.\n didReceiveUnknownParallelRoute = true;\n } else {\n const taskSegment = taskChild.route[0];\n const serverSegment = createSegmentFromRouteTree(serverRouteTreeChild);\n if ((0, _matchsegments.matchSegment)(serverSegment, taskSegment) && dynamicDataChild !== null && dynamicDataChild !== undefined) {\n // Found a match for this task. Keep traversing down the task tree.\n const childDidReceiveUnknownParallelRoute = writeDynamicDataIntoNavigationTask(taskChild, serverRouteTreeChild, dynamicDataChild, dynamicHead, dynamicStaleAt, debugInfo);\n if (childDidReceiveUnknownParallelRoute) {\n didReceiveUnknownParallelRoute = true;\n }\n }\n }\n }\n } else {\n if (serverChildren !== null) {\n // The server sent a child segment that the client doesn't know about.\n didReceiveUnknownParallelRoute = true;\n }\n }\n }\n return didReceiveUnknownParallelRoute;\n}\nfunction finishPendingCacheNode(cacheNode, dynamicData, dynamicHead, debugInfo) {\n // Writes a dynamic response into an existing Cache Node tree. This does _not_\n // create a new tree, it updates the existing tree in-place. So it must follow\n // the Suspense rules of cache safety — it can resolve pending promises, but\n // it cannot overwrite existing data. It can add segments to the tree (because\n // a missing segment will cause the layout router to suspend).\n // but it cannot delete them.\n //\n // We must resolve every promise in the tree, or else it will suspend\n // indefinitely. If we did not receive data for a segment, we will resolve its\n // data promise to `null` to trigger a lazy fetch during render.\n // Use the dynamic data from the server to fulfill the deferred RSC promise\n // on the Cache Node.\n const rsc = cacheNode.rsc;\n const dynamicSegmentData = dynamicData[0];\n if (dynamicSegmentData === null) {\n // This is an empty CacheNode; this particular server request did not\n // render this segment. There may be a separate pending request that will,\n // though, so we won't abort the task until all pending requests finish.\n return;\n }\n if (rsc === null) {\n // This is a lazy cache node. We can overwrite it. This is only safe\n // because we know that the LayoutRouter suspends if `rsc` is `null`.\n cacheNode.rsc = dynamicSegmentData;\n } else if (isDeferredRsc(rsc)) {\n // This is a deferred RSC promise. We can fulfill it with the data we just\n // received from the server. If it was already resolved by a different\n // navigation, then this does nothing because we can't overwrite data.\n rsc.resolve(dynamicSegmentData, debugInfo);\n } else {\n // This is not a deferred RSC promise, nor is it empty, so it must have\n // been populated by a different navigation. We must not overwrite it.\n }\n // Check if this is a leaf segment. If so, it will have a `head` property with\n // a pending promise that needs to be resolved with the dynamic head from\n // the server.\n const head = cacheNode.head;\n if (isDeferredRsc(head)) {\n head.resolve(dynamicHead, debugInfo);\n }\n}\nfunction abortRemainingPendingTasks(task, error, debugInfo) {\n let exitStatus;\n if (task.status === 0) {\n // The data for this segment is still missing.\n task.status = 2;\n abortPendingCacheNode(task.node, error, debugInfo);\n // If the server failed to fulfill the data for this segment, it implies\n // that the route tree received from the server mismatched the tree that\n // was previously prefetched.\n //\n // In an app with fully static routes and no proxy-driven redirects or\n // rewrites, this should never happen, because the route for a URL would\n // always be the same across multiple requests. So, this implies that some\n // runtime routing condition changed, likely in a proxy, without being\n // pushed to the client.\n //\n // When this happens, we treat this the same as a refresh(). The entire\n // tree will be re-rendered from the root.\n if (task.refreshState === null) {\n // Trigger a \"soft\" refresh. Essentially the same as calling `refresh()`\n // in a Server Action.\n exitStatus = 1;\n } else {\n // The mismatch was discovered inside an inactive parallel route. This\n // implies the inactive parallel route is no longer reachable at the URL\n // that originally rendered it. Fall back to an MPA refresh.\n // TODO: An alternative could be to trigger a soft refresh but to _not_\n // re-use the inactive parallel routes this time. Similar to what would\n // happen if were to do a hard refrehs, but without the HTML page.\n exitStatus = 2;\n }\n } else {\n // This segment finished. (An error here is treated as Done because they are\n // surfaced to the application during render.)\n exitStatus = 0;\n }\n const taskChildren = task.children;\n if (taskChildren !== null) {\n for (const [, taskChild] of taskChildren){\n const childExitStatus = abortRemainingPendingTasks(taskChild, error, debugInfo);\n // Propagate the exit status up the tree. The statuses are ordered by\n // their precedence.\n if (childExitStatus > exitStatus) {\n exitStatus = childExitStatus;\n }\n }\n }\n return exitStatus;\n}\nfunction abortPendingCacheNode(cacheNode, error, debugInfo) {\n const rsc = cacheNode.rsc;\n if (isDeferredRsc(rsc)) {\n if (error === null) {\n // This will trigger a lazy fetch during render.\n rsc.resolve(null, debugInfo);\n } else {\n // This will trigger an error during rendering.\n rsc.reject(error, debugInfo);\n }\n }\n // Check if this is a leaf segment. If so, it will have a `head` property with\n // a pending promise that needs to be resolved. If an error was provided, we\n // will not resolve it with an error, since this is rendered at the root of\n // the app. We want the segment to error, not the entire app.\n const head = cacheNode.head;\n if (isDeferredRsc(head)) {\n head.resolve(null, debugInfo);\n }\n}\nconst DEFERRED = Symbol();\nfunction isDeferredRsc(value) {\n return value && typeof value === 'object' && value.tag === DEFERRED;\n}\nfunction createDeferredRsc() {\n // Create an unresolved promise that represents data derived from a Flight\n // response. The promise will be resolved later as soon as we start receiving\n // data from the server, i.e. as soon as the Flight client decodes and returns\n // the top-level response object.\n // The `_debugInfo` field contains profiling information. Promises that are\n // created by Flight already have this info added by React; for any derived\n // promise created by the router, we need to transfer the Flight debug info\n // onto the derived promise.\n //\n // The debug info represents the latency between the start of the navigation\n // and the start of rendering. (It does not represent the time it takes for\n // whole stream to finish.)\n const debugInfo = [];\n let resolve;\n let reject;\n const pendingRsc = new Promise((res, rej)=>{\n resolve = res;\n reject = rej;\n });\n pendingRsc.status = 'pending';\n pendingRsc.resolve = (value, responseDebugInfo)=>{\n if (pendingRsc.status === 'pending') {\n const fulfilledRsc = pendingRsc;\n fulfilledRsc.status = 'fulfilled';\n fulfilledRsc.value = value;\n if (responseDebugInfo !== null) {\n // Transfer the debug info to the derived promise.\n debugInfo.push.apply(debugInfo, responseDebugInfo);\n }\n resolve(value);\n }\n };\n pendingRsc.reject = (error, responseDebugInfo)=>{\n if (pendingRsc.status === 'pending') {\n const rejectedRsc = pendingRsc;\n rejectedRsc.status = 'rejected';\n rejectedRsc.reason = error;\n if (responseDebugInfo !== null) {\n // Transfer the debug info to the derived promise.\n debugInfo.push.apply(debugInfo, responseDebugInfo);\n }\n reject(error);\n }\n };\n pendingRsc.tag = DEFERRED;\n pendingRsc._debugInfo = debugInfo;\n return pendingRsc;\n}\n/**\n * Helper for the Instant Navigation Testing API. Waits for the navigation lock\n * to be released before returning. The network request has already completed by\n * the time this is called, so this only delays writing the dynamic data.\n *\n * Not exposed in production builds by default.\n */ async function waitForNavigationLock() {\n if (true) {\n const { waitForNavigationLockIfActive } = __webpack_require__(/*! ../segment-cache/navigation-testing-lock */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/navigation-testing-lock.js\");\n await waitForNavigationLockIfActive();\n }\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=ppr-navigations.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3Bwci1uYXZpZ2F0aW9ucy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFtRmtCQSxlQUFlO2VBQWZBOztJQWdERkMsa0NBQWtDO2VBQWxDQTs7SUFpMERBQyxhQUFhO2VBQWJBOztJQTlzQkFDLG9CQUFvQjtlQUFwQkE7O0lBM2pDQUMsa0JBQWtCO2VBQWxCQTs7OzRDQXBMYTtxQ0FLdEI7MkNBQ3NCOytDQUNLO2lEQUNFOzRDQUNJO2dEQUlqQzt5REFDcUM7NENBQ1A7d0NBSTlCO21DQWVBO21DQUN1Qjs4Q0FDSzt1Q0FDVztzQ0FLdkM7cUNBUUE7QUEwQkEsSUFBV0osa0JBQUFBLFdBQUFBLEdBQUFBLFNBQUFBLGVBQUFBOzs7Ozs7O1dBQUFBOztBQThDbEIsTUFBTUssT0FBTyxLQUFPO0FBRWIsU0FBU0osbUNBQ2RLLFdBQW1CLEVBQ25CQyxXQUFzQixFQUN0QkMsUUFBa0MsRUFDbENDLFFBQWtCLEVBQ2xCQyxrQkFBMEI7SUFFMUIsdUVBQXVFO0lBQ3ZFLGlCQUFpQjtJQUNqQixNQUFNQyxlQUE4QztRQUNsREMscUJBQXFCO1FBQ3JCQyxXQUFXO0lBQ2I7SUFDQSxNQUFNQyxPQUFPQyw0QkFDWFQsYUFDQUMsYUFDQSxTQUVBQyxVQUNBQyxVQUNBQyxvQkFDQSxPQUNBQztJQUVGLE9BQU9HO0FBQ1Q7QUErQk8sU0FBU1YsbUJBQ2RFLFdBQW1CLEVBQ25CVSxNQUFXLEVBQ1hDLGlCQUF5QixFQUN6QkMsWUFBOEIsRUFDOUJDLGNBQWlDLEVBQ2pDQyxZQUF1QixFQUN2QkMsbUJBQXdDLEVBQ3hDQyxTQUEwQixFQUMxQmQsUUFBa0MsRUFDbENDLFFBQXlCLEVBQ3pCQyxrQkFBMEIsRUFDMUJhLG9CQUE2QixFQUM3QlosWUFBMkM7SUFFM0MsTUFBTWEsb0JBQW9CO0lBQzFCLE1BQU1DLDRCQUE0QjtJQUNsQyxNQUFNQyxxQkFBcUI7SUFDM0Is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SyxzQkFBc0IsTUFBTTtnQkFDOUIsa0RBQWtEO2dCQUNsRHpCLFVBQVU5RSxJQUFJLENBQUN5RyxLQUFLLENBQUMzQixXQUFXeUI7WUFDbEM7WUFDQXhGLFFBQVFtRjtRQUNWO0lBQ0Y7SUFDQUUsV0FBV0wsTUFBTSxHQUFHLENBQUNILE9BQVlXO1FBQy9CLElBQUlILFdBQVdyTCxNQUFNLEtBQUssV0FBVztZQUNuQyxNQUFNMkwsY0FBc0NOO1lBQzVDTSxZQUFZM0wsTUFBTSxHQUFHO1lBQ3JCMkwsWUFBWUMsTUFBTSxHQUFHZjtZQUNyQixJQUFJVyxzQkFBc0IsTUFBTTtnQkFDOUIsa0RBQWtEO2dCQUNsRHpCLFVBQVU5RSxJQUFJLENBQUN5RyxLQUFLLENBQUMzQixXQUFXeUI7WUFDbEM7WUFDQVIsT0FBT0g7UUFDVDtJQUNGO0lBQ0FRLFdBQVdELEdBQUcsR0FBR0g7SUFDakJJLFdBQVdRLFVBQVUsR0FBRzlCO0lBRXhCLE9BQU9zQjtBQUNUO0FBRUE7Ozs7OztDQU1DLEdBQ0QsZUFBZXBEO0lBQ2IsSUFBSTdELElBQXFDLEVBQUU7UUFDekMsTUFBTSxFQUFFMEgsNkJBQTZCLEVBQUUsR0FDckNDLG1CQUFPQSxDQUFDLDJJQUEwQztRQUNwRCxNQUFNRDtJQUNSO0FBQ0YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcHByLW5hdmlnYXRpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgQ2FjaGVOb2RlU2VlZERhdGEsXG4gIEZsaWdodFJvdXRlclN0YXRlLFxuICBTZWdtZW50LFxufSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItdHlwZXMnXG5pbXBvcnQgdHlwZSB7IENhY2hlTm9kZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci10eXBlcydcbmltcG9ydCB0eXBlIHsgSGVhZERhdGEsIFNjcm9sbFJlZiB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci10eXBlcydcbmltcG9ydCB7IFByZWZldGNoSGludCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci10eXBlcydcbmltcG9ydCB7XG4gIFBBR0VfU0VHTUVOVF9LRVksXG4gIERFRkFVTFRfU0VHTUVOVF9LRVksXG4gIE5PVF9GT1VORF9TRUdNRU5UX0tFWSxcbn0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9zZWdtZW50J1xuaW1wb3J0IHsgbWF0Y2hTZWdtZW50IH0gZnJvbSAnLi4vbWF0Y2gtc2VnbWVudHMnXG5pbXBvcnQgeyBjcmVhdGVIcmVmRnJvbVVybCB9IGZyb20gJy4vY3JlYXRlLWhyZWYtZnJvbS11cmwnXG5pbXBvcnQgeyBmZXRjaFNlcnZlclJlc3BvbnNlIH0gZnJvbSAnLi9mZXRjaC1zZXJ2ZXItcmVzcG9uc2UnXG5pbXBvcnQgeyBkaXNwYXRjaEFwcFJvdXRlckFjdGlvbiB9IGZyb20gJy4uL3VzZS1hY3Rpb24tcXVldWUnXG5pbXBvcnQge1xuICBBQ1RJT05fU0VSVkVSX1BBVENILFxuICB0eXBlIFNlcnZlclBhdGNoQWN0aW9uLFxufSBmcm9tICcuL3JvdXRlci1yZWR1Y2VyLXR5cGVzJ1xuaW1wb3J0IHsgaXNOYXZpZ2F0aW5nVG9OZXdSb290TGF5b3V0IH0gZnJvbSAnLi9pcy1uYXZpZ2F0aW5nLXRvLW5ldy1yb290LWxheW91dCdcbmltcG9ydCB7IGdldExhc3RDb21taXR0ZWRUcmVlIH0gZnJvbSAnLi9yZWR1Y2Vycy9jb21taXR0ZWQtc3RhdGUnXG5pbXBvcnQge1xuICBjb252ZXJ0U2VydmVyUGF0Y2hUb0Z1bGxUcmVlLFxuICB0eXBlIE5hdmlnYXRpb25TZWVkLFxufSBmcm9tICcuLi9zZWdtZW50LWNhY2hlL25hdmlnYXRpb24nXG5pbXBvcnQge1xuICB0eXBlIFJvdXRlVHJlZSxcbiAgdHlwZSBSZWZyZXNoU3RhdGUsXG4gIHR5cGUgRnVsZmlsbGVkUm91dGVDYWNoZUVudHJ5LFxuICBjb252ZXJ0UmV1c2VkRmxpZ2h0Um91dGVyU3RhdGVUb1JvdXRlVHJlZSxcbiAgcmVhZFNlZ21lbnRDYWNoZUVudHJ5LFxuICB3YWl0Rm9yU2VnbWVudENhY2hlRW50cnksXG4gIG1hcmtSb3V0ZUVudHJ5QXNEeW5hbWljUmV3cml0ZSxcbiAgaW52YWxpZGF0ZVJvdXRlQ2FjaGVFbnRyaWVzLFxuICBnZXRTdGFsZUF0LFxuICB3cml0ZVN0YXRpY1N0YWdlUmVzcG9uc2VJbnRvQ2FjaGUsXG4gIHByb2Nlc3NSdW50aW1lUHJlZmV0Y2hTdHJlYW0sXG4gIHdyaXRlRHluYW1pY1JlbmRlclJlc3BvbnNlSW50b0NhY2hlLFxuICBFbnRyeVN0YXR1cyxcbn0gZnJvbSAnLi4vc2VnbWVudC1jYWNoZS9jYWNoZSdcbmltcG9ydCB7IEZldGNoU3RyYXRlZ3kgfSBmcm9tICcuLi9zZWdtZW50LWNhY2hlL3R5cGVzJ1xuaW1wb3J0IHsgZGlzY292ZXJLbm93blJvdXRlIH0gZnJvbSAnLi4vc2VnbWVudC1jYWNoZS9vcHRpbWlzdGljLXJvdXRlcydcbmltcG9ydCB7IE5FWFRfTkFWX0RFUExPWU1FTlRfSURfSEVBREVSIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cydcbmltcG9ydCB0eXBlIHsgTm9ybWFsaXplZFNlYXJjaCB9IGZyb20gJy4uL3NlZ21lbnQtY2FjaGUvY2FjaGUta2V5J1xuaW1wb3J0IHtcbiAgZ2V0UmVuZGVyZWRTZWFyY2hGcm9tVmFyeVBhdGgsXG4gIHR5cGUgUGFnZVZhcnlQYXRoLFxufSBmcm9tICcuLi9zZWdtZW50LWNhY2hlL3ZhcnktcGF0aCdcbmltcG9ydCB7XG4gIHJlYWRGcm9tQkZDYWNoZSxcbiAgcmVhZEZyb21CRkNhY2hlRHVyaW5nUmVndWxhck5hdmlnYXRpb24sXG4gIHdyaXRlVG9CRkNhY2hlLFxuICB3cml0ZUhlYWRUb0JGQ2FjaGUsXG4gIHVwZGF0ZUJGQ2FjaGVFbnRyeVN0YWxlQXQsXG4gIGNvbXB1dGVEeW5hbWljU3RhbGVBdCxcbn0gZnJvbSAnLi4vc2VnbWVudC1jYWNoZS9iZmNhY2hlJ1xuXG4vLyBUaGlzIGlzIHlldCBhbm90aGVyIHRyZWUgdHlwZSB0aGF0IGlzIHVzZWQgdG8gdHJhY2sgcGVuZGluZyBwcm9taXNlcyB0aGF0XG4vLyBuZWVkIHRvIGJlIGZ1bGZpbGxlZCBvbmNlIHRoZSBkeW5hbWljIGRhdGEgaXMgcmVjZWl2ZWQuIFRoZSB0ZXJtaW5hbCBub2RlcyBvZlxuLy8gdGhpcyB0cmVlIHJlcHJlc2VudCB0aGUgbmV3IENhY2hlIE5vZGUgdHJlZXMgdGhhdCB3ZXJlIGNyZWF0ZWQgZHVyaW5nIHRoaXNcbi8vIHJlcXVlc3QuIFdlIGNhbid0IHVzZSB0aGUgQ2FjaGUgTm9kZSB0cmVlIG9yIFJvdXRlIFN0YXRlIHRyZWUgZGlyZWN0bHlcbi8vIGJlY2F1c2UgdGhvc2UgaW5jbHVkZSByZXVzZWQgbm9kZXMsIHRvby4gVGhpcyB0cmVlIGlzIGRpc2NhcmRlZCBhcyBzb29uIGFzXG4vLyB0aGUgbmF2aWdhdGlvbiByZXNwb25zZSBpcyByZWNlaXZlZC5cbmV4cG9ydCB0eXBlIE5hdmlnYXRpb25UYXNrID0ge1xuICBzdGF0dXM6IE5hdmlnYXRpb25UYXNrU3RhdHVzXG4gIC8vIFRoZSByb3V0ZXIgc3RhdGUgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgdHJlZSB0aGF0IHRoaXMgVGFzayByZXByZXNlbnRzLlxuICByb3V0ZTogRmxpZ2h0Um91dGVyU3RhdGVcbiAgLy8gVGhlIENhY2hlTm9kZSB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSB0cmVlIHRoYXQgdGhpcyBUYXNrIHJlcHJlc2VudHMuXG4gIG5vZGU6IENhY2hlTm9kZVxuICAvLyBUaGUgdHJlZSBzZW50IHRvIHRoZSBzZXJ2ZXIgZHVyaW5nIHRoZSBkeW5hbWljIHJlcXVlc3QuIElmIGFsbCB0aGUgc2VnbWVudHNcbiAgLy8gYXJlIHN0YXRpYywgdGhlbiB0aGlzIHdpbGwgYmUgbnVsbCwgYW5kIG5vIHNlcnZlciByZXF1ZXN0IGlzIHJlcXVpcmVkLlxuICAvLyBPdGhlcndpc2UsIHRoaXMgaXMgdGhlIHNhbWUgYXMgYHJvdXRlYCwgZXhjZXB0IHdpdGggdGhlIGByZWZldGNoYCBtYXJrZXJcbiAgLy8gc2V0IG9uIHRoZSB0b3AtbW9zdCBzZWdtZW50IHRoYXQgbmVlZHMgdG8gYmUgZmV0Y2hlZC5cbiAgZHluYW1pY1JlcXVlc3RUcmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZSB8IG51bGxcbiAgLy8gVGhlIFVSTCB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIGZldGNoIHRoZSBkeW5hbWljIGRhdGEuIFRoaXMgaXMgb25seSBzZXRcbiAgLy8gd2hlbiB0aGUgc2VnbWVudCBjYW5ub3QgYmUgcmVmZXRjaGVkIGZyb20gdGhlIGN1cnJlbnQgcm91dGUsIGJlY2F1c2UgaXQnc1xuICAvLyBwYXJ0IG9mIGEgXCJkZWZhdWx0XCIgcGFyYWxsZWwgc2xvdCB0aGF0IHdhcyByZXVzZWQgZHVyaW5nIGEgbmF2aWdhdGlvbi5cbiAgcmVmcmVzaFN0YXRlOiBSZWZyZXNoU3RhdGUgfCBudWxsXG4gIGNoaWxkcmVuOiBNYXA8c3RyaW5nLCBOYXZpZ2F0aW9uVGFzaz4gfCBudWxsXG59XG5cbmV4cG9ydCBjb25zdCBlbnVtIEZyZXNobmVzc1BvbGljeSB7XG4gIERlZmF1bHQsXG4gIEh5ZHJhdGlvbixcbiAgSGlzdG9yeVRyYXZlcnNhbCxcbiAgUmVmcmVzaEFsbCxcbiAgSE1SUmVmcmVzaCxcbiAgR2VzdHVyZSxcbn1cblxuY29uc3QgZW51bSBOYXZpZ2F0aW9uVGFza1N0YXR1cyB7XG4gIFBlbmRpbmcsXG4gIEZ1bGZpbGxlZCxcbiAgUmVqZWN0ZWQsXG59XG5cbi8qKlxuICogV2hlbiBhIE5hdmlnYXRpb25UYXNrIGZpbmlzaGVzLCB0aGVyZSBtYXkgb3IgbWF5IG5vdCBiZSBkYXRhIHN0aWxsIG1pc3NpbmcsXG4gKiBuZWNlc3NpdGF0aW5nIGEgcmV0cnkuXG4gKi9cbmNvbnN0IGVudW0gTmF2aWdhdGlvblRhc2tFeGl0U3RhdHVzIHtcbiAgLyoqXG4gICAqIE5vIGFkZGl0aW9uYWwgbmF2aWdhdGlvbiBpcyByZXF1aXJlZC5cbiAgICovXG4gIERvbmUgPSAwLFxuICAvKipcbiAgICogU29tZSBkYXRhIGZhaWxlZCB0byBsb2FkLCBwcmVzdW1hYmx5IGR1ZSB0byBhIHJvdXRlIHRyZWUgbWlzbWF0Y2guIFBlcmZvcm1cbiAgICogYSBzb2Z0IHJldHJ5IHRvIHJlbG9hZCB0aGUgZW50aXJlIHRyZWUuXG4gICAqL1xuICBTb2Z0UmV0cnkgPSAxLFxuICAvKipcbiAgICogU29tZSBkYXRhIGZhaWxlZCB0byBsb2FkIGluIGFuIHVucmVjb3ZlcmFibGUgd2F5LCBlLmcuIGluIGFuIGluYWN0aXZlXG4gICAqIHBhcmFsbGVsIHJvdXRlLiBGYWxsIGJhY2sgdG8gYSBoYXJkIChNUEEtc3R5bGUpIHJldHJ5LlxuICAgKi9cbiAgSGFyZFJldHJ5ID0gMixcbn1cblxuZXhwb3J0IHR5cGUgTmF2aWdhdGlvblJlcXVlc3RBY2N1bXVsYXRpb24gPSB7XG4gIHNlcGFyYXRlUmVmcmVzaFVybHM6IFNldDxzdHJpbmc+IHwgbnVsbFxuICAvKipcbiAgICogU2V0IHdoZW4gYSBuYXZpZ2F0aW9uIGNyZWF0ZXMgbmV3IGxlYWYgc2VnbWVudHMgdGhhdCBzaG91bGQgYmVcbiAgICogc2Nyb2xsZWQgdG8uIFN0YXlzIG51bGwgd2hlbiBubyBuZXcgc2VnbWVudHMgYXJlIGNyZWF0ZWQgKGUuZy5cbiAgICogZHVyaW5nIGEgcmVmcmVzaCB3aGVyZSB0aGUgcm91dGUgc3RydWN0dXJlIGRpZG4ndCBjaGFuZ2UpLlxuICAgKi9cbiAgc2Nyb2xsUmVmOiBTY3JvbGxSZWYgfCBudWxsXG59XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSW5pdGlhbENhY2hlTm9kZUZvckh5ZHJhdGlvbihcbiAgbmF2aWdhdGVkQXQ6IG51bWJlcixcbiAgaW5pdGlhbFRyZWU6IFJvdXRlVHJlZSxcbiAgc2VlZERhdGE6IENhY2hlTm9kZVNlZWREYXRhIHwgbnVsbCxcbiAgc2VlZEhlYWQ6IEhlYWREYXRhLFxuICBzZWVkRHluYW1pY1N0YWxlQXQ6IG51bWJlclxuKTogTmF2aWdhdGlvblRhc2sge1xuICAvLyBDcmVhdGUgdGhlIGluaXRpYWwgY2FjaGUgbm9kZSB0cmVlLCB1c2luZyB0aGUgZGF0YSBlbWJlZGRlZCBpbnRvIHRoZVxuICAvLyBIVE1MIGRvY3VtZW50LlxuICBjb25zdCBhY2N1bXVsYXRpb246IE5hdmlnYXRpb25SZXF1ZXN0QWNjdW11bGF0aW9uID0ge1xuICAgIHNlcGFyYXRlUmVmcmVzaFVybHM6IG51bGwsXG4gICAgc2Nyb2xsUmVmOiBudWxsLFxuICB9XG4gIGNvbnN0IHRhc2sgPSBjcmVhdGVDYWNoZU5vZGVPbk5hdmlnYXRpb24oXG4gICAgbmF2aWdhdGVkQXQsXG4gICAgaW5pdGlhbFRyZWUsXG4gICAgbnVsbCxcbiAgICBGcmVzaG5lc3NQb2xpY3kuSHlkcmF0aW9uLFxuICAgIHNlZWREYXRhLFxuICAgIHNlZWRIZWFkLFxuICAgIHNlZWREeW5hbWljU3RhbGVBdCxcbiAgICBmYWxzZSxcbiAgICBhY2N1bXVsYXRpb25cbiAgKVxuICByZXR1cm4gdGFza1xufVxuXG4vLyBDcmVhdGVzIGEgbmV3IENhY2hlIE5vZGUgdHJlZSAoaS5lLiBjb3B5LW9uLXdyaXRlKSB0aGF0IHJlcHJlc2VudHMgdGhlXG4vLyBvcHRpbWlzdGljIHJlc3VsdCBvZiBhIG5hdmlnYXRpb24sIHVzaW5nIGJvdGggdGhlIGN1cnJlbnQgQ2FjaGUgTm9kZSB0cmVlIGFuZFxuLy8gZGF0YSB0aGF0IHdhcyBwcmVmZXRjaGVkIHByaW9yIHRvIG5hdmlnYXRpb24uXG4vL1xuLy8gQXQgdGhlIG1vbWVudCB3ZSBjYWxsIHRoaXMgZnVuY3Rpb24sIHdlIGhhdmVuJ3QgeWV0IHJlY2VpdmVkIHRoZSBuYXZpZ2F0aW9uXG4vLyByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuIEl0IGNvdWxkIHNlbmQgYmFjayBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnRcbi8vIGZyb20gdGhlIHRyZWUgdGhhdCB3YXMgcHJlZmV0Y2hlZCDigJQgZHVlIHRvIHJld3JpdGVzLCBkZWZhdWx0IHJvdXRlcywgcGFyYWxsZWxcbi8vIHJvdXRlcywgZXRjLlxuLy9cbi8vIEJ1dCBpbiBtb3N0IGNhc2VzLCBpdCB3aWxsIHJldHVybiB0aGUgc2FtZSB0cmVlIHRoYXQgd2UgcHJlZmV0Y2hlZCwganVzdCB3aXRoXG4vLyB0aGUgZHluYW1pYyBob2xlcyBmaWxsZWQgaW4uIFNvIHdlIG9wdGltaXN0aWNhbGx5IGFzc3VtZSB0aGlzIHdpbGwgaGFwcGVuLFxuLy8gYW5kIGFjY2VwdCB0aGF0IHRoZSByZWFsIHJlc3VsdCBjb3VsZCBiZSBhcmJpdHJhcmlseSBkaWZmZXJlbnQuXG4vL1xuLy8gV2UnbGwgcmV1c2UgYW55dGhpbmcgdGhhdCB3YXMgYWxyZWFkeSBpbiB0aGUgcHJldmlvdXMgdHJlZSwgc2luY2UgdGhhdCdzIHdoYXRcbi8vIHRoZSBzZXJ2ZXIgZG9lcy5cbi8vXG4vLyBOZXcgc2VnbWVudHMgKG9uZXMgdGhhdCBkb24ndCBhcHBlYXIgaW4gdGhlIG9sZCB0cmVlKSBhcmUgYXNzaWduZWQgYW5cbi8vIHVucmVzb2x2ZWQgcHJvbWlzZS4gVGhlIGRhdGEgZm9yIHRoZXNlIHByb21pc2VzIHdpbGwgYmUgZnVsZmlsbGVkIGxhdGVyLCB3aGVuXG4vLyB0aGUgbmF2aWdhdGlvbiByZXNwb25zZSBpcyByZWNlaXZlZC5cbi8vXG4vLyBUaGUgdHJlZSBjYW4gYmUgcmVuZGVyZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgaXQgaXMgY3JlYXRlZCAodGhhdCdzIHdoeSB0aGlzIGlzXG4vLyBhIHN5bmNocm9ub3VzIGZ1bmN0aW9uKS4gQW55IG5ldyB0cmVlcyB0aGF0IGRvIG5vdCBoYXZlIHByZWZldGNoIGRhdGEgd2lsbFxuLy8gc3VzcGVuZCBkdXJpbmcgcmVuZGVyaW5nLCB1bnRpbCB0aGUgZHluYW1pYyBkYXRhIHN0cmVhbXMgaW4uXG4vL1xuLy8gUmV0dXJucyBhIFRhc2sgb2JqZWN0LCB3aGljaCBjb250YWlucyBib3RoIHRoZSB1cGRhdGVkIENhY2hlIE5vZGUgYW5kIGEgcGF0aFxuLy8gdG8gdGhlIHBlbmRpbmcgc3VidHJlZXMgdGhhdCBuZWVkIHRvIGJlIHJlc29sdmVkIGJ5IHRoZSBuYXZpZ2F0aW9uIHJlc3BvbnNlLlxuLy9cbi8vIEEgcmV0dXJuIHZhbHVlIG9mIGBudWxsYCBtZWFucyB0aGVyZSB3ZXJlIG5vIGNoYW5nZXMsIGFuZCB0aGUgcHJldmlvdXMgdHJlZVxuLy8gY2FuIGJlIHJldXNlZCB3aXRob3V0IGluaXRpYXRpbmcgYSBzZXJ2ZXIgcmVxdWVzdC5cbmV4cG9ydCBmdW5jdGlvbiBzdGFydFBQUk5hdmlnYXRpb24oXG4gIG5hdmlnYXRlZEF0OiBudW1iZXIsXG4gIG9sZFVybDogVVJMLFxuICBvbGRSZW5kZXJlZFNlYXJjaDogc3RyaW5nLFxuICBvbGRDYWNoZU5vZGU6IENhY2hlTm9kZSB8IG51bGwsXG4gIG9sZFJvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgbmV3Um91dGVUcmVlOiBSb3V0ZVRyZWUsXG4gIG5ld01ldGFkYXRhVmFyeVBhdGg6IFBhZ2VWYXJ5UGF0aCB8IG51bGwsXG4gIGZyZXNobmVzczogRnJlc2huZXNzUG9saWN5LFxuICBzZWVkRGF0YTogQ2FjaGVOb2RlU2VlZERhdGEgfCBudWxsLFxuICBzZWVkSGVhZDogSGVhZERhdGEgfCBudWxsLFxuICBzZWVkRHluYW1pY1N0YWxlQXQ6IG51bWJlcixcbiAgaXNTYW1lUGFnZU5hdmlnYXRpb246IGJvb2xlYW4sXG4gIGFjY3VtdWxhdGlvbjogTmF2aWdhdGlvblJlcXVlc3RBY2N1bXVsYXRpb25cbik6IE5hdmlnYXRpb25UYXNrIHwgbnVsbCB7XG4gIGNvbnN0IGRpZEZpbmRSb290TGF5b3V0ID0gZmFsc2VcbiAgY29uc3QgcGFyZW50TmVlZHNEeW5hbWljUmVxdWVzdCA9IGZhbHNlXG4gIGNvbnN0IHBhcmVudFJlZnJlc2hTdGF0ZSA9IG51bGxcbiAgY29uc3Qgb2xkUm9vdFJlZnJlc2hTdGF0ZTogUmVmcmVzaFN0YXRlID0ge1xuICAgIGNhbm9uaWNhbFVybDogY3JlYXRlSHJlZkZyb21Vcmwob2xkVXJsKSxcbiAgICByZW5kZXJlZFNlYXJjaDogb2xkUmVuZGVyZWRTZWFyY2ggYXMgTm9ybWFsaXplZFNlYXJjaCxcbiAgfVxuICByZXR1cm4gdXBkYXRlQ2FjaGVOb2RlT25OYXZpZ2F0aW9uKFxuICAgIG5hdmlnYXRlZEF0LFxuICAgIG9sZFVybCxcbiAgICBvbGRDYWNoZU5vZGUgIT09IG51bGwgPyBvbGRDYWNoZU5vZGUgOiB1bmRlZmluZWQsXG4gICAgb2xkUm91dGVyU3RhdGUsXG4gICAgbmV3Um91dGVUcmVlLFxuICAgIG5ld01ldGFkYXRhVmFyeVBhdGgsXG4gICAgZnJlc2huZXNzLFxuICAgIGRpZEZpbmRSb290TGF5b3V0LFxuICAgIHNlZWREYXRhLFxuICAgIHNlZWRIZWFkLFxuICAgIHNlZWREeW5hbWljU3RhbGVBdCxcbiAgICBpc1NhbWVQYWdlTmF2aWdhdGlvbixcbiAgICBwYXJlbnROZWVkc0R5bmFtaWNSZXF1ZXN0LFxuICAgIG9sZFJvb3RSZWZyZXNoU3RhdGUsXG4gICAgcGFyZW50UmVmcmVzaFN0YXRlLFxuICAgIGFjY3VtdWxhdGlvblxuICApXG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUNhY2hlTm9kZU9uTmF2aWdhdGlvbihcbiAgbmF2aWdhdGVkQXQ6IG51bWJlcixcbiAgb2xkVXJsOiBVUkwsXG4gIG9sZENhY2hlTm9kZTogQ2FjaGVOb2RlIHwgdm9pZCxcbiAgb2xkUm91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlLFxuICBuZXdSb3V0ZVRyZWU6IFJvdXRlVHJlZSxcbiAgbmV3TWV0YWRhdGFWYXJ5UGF0aDogUGFnZVZhcnlQYXRoIHwgbnVsbCxcbiAgZnJlc2huZXNzOiBGcmVzaG5lc3NQb2xpY3ksXG4gIGRpZEZpbmRSb290TGF5b3V0OiBib29sZWFuLFxuICBzZWVkRGF0YTogQ2FjaGVOb2RlU2VlZERhdGEgfCBudWxsLFxuICBzZWVkSGVhZDogSGVhZERhdGEgfCBudWxsLFxuICBzZWVkRHluYW1pY1N0YWxlQXQ6IG51bWJlcixcbiAgaXNTYW1lUGFnZU5hdmlnYXRpb246IGJvb2xlYW4sXG4gIHBhcmVudE5lZWRzRHluYW1pY1JlcXVlc3Q6IGJvb2xlYW4sXG4gIG9sZFJvb3RSZWZyZXNoU3RhdGU6IFJlZnJlc2hTdGF0ZSxcbiAgcGFyZW50UmVmcmVzaFN0YXRlOiBSZWZyZXNoU3RhdGUgfCBudWxsLFxuICBhY2N1bXVsYXRpb246IE5hdmlnYXRpb25SZXF1ZXN0QWNjdW11bGF0aW9uXG4pOiBOYXZpZ2F0aW9uVGFzayB8IG51bGwge1xuICAvLyBDaGVjayBpZiB0aGlzIHNlZ21lbnQgbWF0Y2hlcyB0aGUgb25lIGluIHRoZSBwcmV2aW91cyByb3V0ZS5cbiAgY29uc3Qgb2xkU2VnbWVudCA9IG9sZFJvdXRlclN0YXRlWzBdXG4gIGNvbnN0IG5ld1NlZ21lbnQgPSBjcmVhdGVTZWdtZW50RnJvbVJvdXRlVHJlZShuZXdSb3V0ZVRyZWUpXG4gIGlmICghbWF0Y2hTZWdtZW50KG5ld1NlZ21lbnQsIG9sZFNlZ21lbnQpKSB7XG4gICAgLy8gVGhpcyBzZWdtZW50IGRvZXMgbm90IG1hdGNoIHRoZSBwcmV2aW91cyByb3V0ZS4gV2UncmUgbm93IGVudGVyaW5nIHRoZVxuICAgIC8vIG5ldyBwYXJ0IG9mIHRoZSB0YXJnZXQgcm91dGUuIFN3aXRjaCB0byB0aGUgXCJjcmVhdGVcIiBwYXRoLlxuICAgIGlmIChcbiAgICAgIC8vIENoZWNrIGlmIHRoZSByb3V0ZSB0cmVlIGNoYW5nZWQgYmVmb3JlIHdlIHJlYWNoZWQgYSBsYXlvdXQuIChUaGVcbiAgICAgIC8vIGhpZ2hlc3QtbGV2ZWwgbGF5b3V0IGluIGEgcm91dGUgdHJlZSBpcyByZWZlcnJlZCB0byBhcyB0aGUgXCJyb290XCJcbiAgICAgIC8vIGxheW91dC4pIFRoaXMgY291bGQgbWVhbiB0aGF0IHdlJ3JlIG5hdmlnYXRpbmcgYmV0d2VlbiB0d28gZGlmZmVyZW50XG4gICAgICAvLyByb290IGxheW91dHMuIFdoZW4gdGhpcyBoYXBwZW5zLCB3ZSBwZXJmb3JtIGEgZnVsbC1wYWdlIChNUEEtc3R5bGUpXG4gICAgICAvLyBuYXZpZ2F0aW9uLlxuICAgICAgLy9cbiAgICAgIC8vIEhvd2V2ZXIsIHRoZSBhbGdvcml0aG0gZm9yIGRlY2lkaW5nIHdoZXJlIHRvIHN0YXJ0IHJlbmRlcmluZyBhIHJvdXRlXG4gICAgICAvLyAoaS5lLiB0aGUgb25lIHBlcmZvcm1lZCBpbiBvcmRlciB0byByZWFjaCB0aGlzIGZ1bmN0aW9uKSBpcyBzdHJpY3RlclxuICAgICAgLy8gdGhhbiB0aGUgb25lIHVzZWQgdG8gZGV0ZWN0IGEgY2hhbmdlIGluIHRoZSByb290IGxheW91dC4gU28ganVzdFxuICAgICAgLy8gYmVjYXVzZSB3ZSdyZSByZS1yZW5kZXJpbmcgYSBzZWdtZW50IG91dHNpZGUgb2YgdGhlIHJvb3QgbGF5b3V0IGRvZXNcbiAgICAgIC8vIG5vdCBtZWFuIHdlIHNob3VsZCB0cmlnZ2VyIGEgZnVsbC1wYWdlIG5hdmlnYXRpb24uXG4gICAgICAvL1xuICAgICAgLy8gU3BlY2lmaWNhbGx5LCB3ZSBoYW5kbGUgZHluYW1pYyBwYXJhbWV0ZXJzIGRpZmZlcmVudGx5OiB0d28gc2VnbWVudHNcbiAgICAgIC8vIGFyZSBjb25zaWRlcmVkIHRoZSBzYW1lIGV2ZW4gaWYgdGhlaXIgcGFyYW1ldGVyIHZhbHVlcyBhcmUgZGlmZmVyZW50LlxuICAgICAgLy9cbiAgICAgIC8vIFJlZmVyIHRvIGlzTmF2aWdhdGluZ1RvTmV3Um9vdExheW91dCBmb3IgZGV0YWlscy5cbiAgICAgIC8vXG4gICAgICAvLyBOb3RlIHRoYXQgd2Ugb25seSBoYXZlIHRvIHBlcmZvcm0gdGhpcyBleHRyYSB0cmF2ZXJzYWwgaWYgd2UgZGlkbid0XG4gICAgICAvLyBhbHJlYWR5IGRpc2NvdmVyIGEgcm9vdCBsYXlvdXQgaW4gdGhlIHBhcnQgb2YgdGhlIHRyZWUgdGhhdCBpc1xuICAgICAgLy8gdW5jaGFuZ2VkLiBXZSBhbHNvIG9ubHkgbmVlZCB0byBjb21wYXJlIHRoZSBzdWJ0cmVlIHRoYXQgaXMgbm90XG4gICAgICAvLyBzaGFyZWQuIEluIHRoZSBjb21tb24gY2FzZSwgdGhpcyBicmFuY2ggaXMgc2tpcHBlZCBjb21wbGV0ZWx5LlxuICAgICAgKCFkaWRGaW5kUm9vdExheW91dCAmJlxuICAgICAgICBpc05hdmlnYXRpbmdUb05ld1Jvb3RMYXlvdXQob2xkUm91dGVyU3RhdGUsIG5ld1JvdXRlVHJlZSkpIHx8XG4gICAgICAvLyBUaGUgZ2xvYmFsIE5vdCBGb3VuZCByb3V0ZSAoYXBwL2dsb2JhbC1ub3QtZm91bmQudHN4KSBpcyBhIHNwZWNpYWxcbiAgICAgIC8vIGNhc2UsIGJlY2F1c2UgaXQgYWN0cyBsaWtlIGEgcm9vdCBsYXlvdXQsIGJ1dCBpbiB0aGUgcm91dGVyIHRyZWUsIGl0XG4gICAgICAvLyBpcyByZW5kZXJlZCBpbiB0aGUgc2FtZSBwb3NpdGlvbiBhcyBhcHAvbGF5b3V0LnRzeC5cbiAgICAgIC8vXG4gICAgICAvLyBBbnkgbmF2aWdhdGlvbiB0byB0aGUgZ2xvYmFsIE5vdCBGb3VuZCByb3V0ZSBzaG91bGQgdHJpZ2dlciBhXG4gICAgICAvLyBmdWxsLXBhZ2UgbmF2aWdhdGlvbi5cbiAgICAgIC8vXG4gICAgICAvLyBUT0RPOiBXZSBzaG91bGQgcHJvYmFibHkgbW9kZWwgdGhpcyBieSBjaGFuZ2luZyB0aGUga2V5IG9mIHRoZSByb290XG4gICAgICAvLyBzZWdtZW50IHdoZW4gdGhpcyBoYXBwZW5zLiBUaGVuIHRoZSByb290IGxheW91dCBjaGVjayB3b3VsZCB3b3JrXG4gICAgICAvLyBhcyBleHBlY3RlZCwgd2l0aG91dCBhIHNwZWNpYWwgY2FzZS5cbiAgICAgIG5ld1NlZ21lbnQgPT09IE5PVF9GT1VORF9TRUdNRU5UX0tFWVxuICAgICkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNhY2hlTm9kZU9uTmF2aWdhdGlvbihcbiAgICAgIG5hdmlnYXRlZEF0LFxuICAgICAgbmV3Um91dGVUcmVlLFxuICAgICAgbmV3TWV0YWRhdGFWYXJ5UGF0aCxcbiAgICAgIGZyZXNobmVzcyxcbiAgICAgIHNlZWREYXRhLFxuICAgICAgc2VlZEhlYWQsXG4gICAgICBzZWVkRHluYW1pY1N0YWxlQXQsXG4gICAgICBwYXJlbnROZWVkc0R5bmFtaWNSZXF1ZXN0LFxuICAgICAgYWNjdW11bGF0aW9uXG4gICAgKVxuICB9XG5cbiAgY29uc3QgbmV3U2xvdHMgPSBuZXdSb3V0ZVRyZWUuc2xvdHNcbiAgY29uc3Qgb2xkUm91dGVyU3RhdGVDaGlsZHJlbiA9IG9sZFJvdXRlclN0YXRlWzFdXG4gIGNvbnN0IHNlZWREYXRhQ2hpbGRyZW4gPSBzZWVkRGF0YSAhPT0gbnVsbCA/IHNlZWREYXRhWzFdIDogbnVsbFxuXG4gIC8vIFdlJ3JlIGN1cnJlbnRseSB0cmF2ZXJzaW5nIHRoZSBwYXJ0IG9mIHRoZSB0cmVlIHRoYXQgd2FzIGFsc28gcGFydCBvZlxuICAvLyB0aGUgcHJldmlvdXMgcm91dGUuIElmIHdlIGRpc2NvdmVyIGEgcm9vdCBsYXlvdXQsIHRoZW4gd2UgZG9uJ3QgbmVlZCB0b1xuICAvLyB0cmlnZ2VyIGFuIE1QQSBuYXZpZ2F0aW9uLlxuICBjb25zdCBjaGlsZERpZEZpbmRSb290TGF5b3V0ID1cbiAgICBkaWRGaW5kUm9vdExheW91dCB8fFxuICAgIChuZXdSb3V0ZVRyZWUucHJlZmV0Y2hIaW50cyAmIFByZWZldGNoSGludC5Jc1Jvb3RMYXlvdXQpICE9PSAwXG5cbiAgbGV0IHNob3VsZFJlZnJlc2hEeW5hbWljRGF0YTogYm9vbGVhbiA9IGZhbHNlXG4gIHN3aXRjaCAoZnJlc2huZXNzKSB7XG4gICAgY2FzZSBGcmVzaG5lc3NQb2xpY3kuRGVmYXVsdDpcbiAgICBjYXNlIEZyZXNobmVzc1BvbGljeS5IaXN0b3J5VHJhdmVyc2FsOlxuICAgIGNhc2UgRnJlc2huZXNzUG9saWN5Lkh5ZHJhdGlvbjpcbiAgICBjYXNlIEZyZXNobmVzc1BvbGljeS5HZXN0dXJlOlxuICAgICAgc2hvdWxkUmVmcmVzaER5bmFtaWNEYXRhID0gZmFsc2VcbiAgICAgIGJyZWFrXG4gICAgY2FzZSBGcmVzaG5lc3NQb2xpY3kuUmVmcmVzaEFsbDpcbiAgICBjYXNlIEZyZXNobmVzc1BvbGljeS5ITVJSZWZyZXNoOlxuICAgICAgc2hvdWxkUmVmcmVzaER5bmFtaWNEYXRhID0gdHJ1ZVxuICAgICAgYnJlYWtcbiAgICBkZWZhdWx0OlxuICAgICAgZnJlc2huZXNzIHNhdGlzZmllcyBuZXZlclxuICAgICAgYnJlYWtcbiAgfVxuXG4gIC8vIFRPRE86IFdlJ3JlIG5vdCBjb25zaXN0ZW50IGFib3V0IGhvdyB3ZSBkbyB0aGlzIGNoZWNrLiBTb21lIHBsYWNlc1xuICAvLyBjaGVjayBpZiB0aGUgc2VnbWVudCBzdGFydHMgd2l0aCBQQUdFX1NFR01FTlRfS0VZLCBidXQgbW9zdCBzZWVtIHRvXG4gIC8vIGNoZWNrIGlmIHRoZXJlIGFueSBhbnkgY2hpbGRyZW4sIHdoaWNoIGlzIHdoeSBJJ20gZG9pbmcgaXQgaGVyZS4gV2VcbiAgLy8gc2hvdWxkIHByb2JhYmx5IGVuY29kZSBhbiBlbXB0eSBjaGlsZHJlbiBzZXQgYXMgYG51bGxgIHRob3VnaC4gRWl0aGVyXG4gIC8vIHdheSwgd2Ugc2hvdWxkIHVwZGF0ZSBhbGwgdGhlIGNoZWNrcyB0byBiZSBjb25zaXN0ZW50LlxuICBjb25zdCBpc0xlYWZTZWdtZW50ID0gbmV3U2xvdHMgPT09IG51bGxcblxuICAvLyBHZXQgdGhlIGRhdGEgZm9yIHRoaXMgc2VnbWVudC4gU2luY2UgaXQgd2FzIHBhcnQgb2YgdGhlIHByZXZpb3VzIHJvdXRlLFxuICAvLyB1c3VhbGx5IHdlIGp1c3QgY2xvbmUgdGhlIGRhdGEgZnJvbSB0aGUgb2xkIENhY2hlTm9kZS4gSG93ZXZlciwgZHVyaW5nIGFcbiAgLy8gcmVmcmVzaCBvciBhIHJldmFsaWRhdGlvbiwgdGhlcmUgd29uJ3QgYmUgYW55IGV4aXN0aW5nIENhY2hlTm9kZS4gU28gd2VcbiAgLy8gbWF5IG5lZWQgdG8gY29uc3VsdCB0aGUgcHJlZmV0Y2ggY2FjaGUsIGxpa2Ugd2Ugd291bGQgZm9yIGEgbmV3IHNlZ21lbnQuXG4gIGxldCBuZXdDYWNoZU5vZGU6IENhY2hlTm9kZVxuICBsZXQgbmVlZHNEeW5hbWljUmVxdWVzdDogYm9vbGVhblxuICBpZiAoXG4gICAgb2xkQ2FjaGVOb2RlICE9PSB1bmRlZmluZWQgJiZcbiAgICAhc2hvdWxkUmVmcmVzaER5bmFtaWNEYXRhICYmXG4gICAgLy8gRHVyaW5nIGEgc2FtZS1wYWdlIG5hdmlnYXRpb24sIHdlIGFsd2F5cyByZWZldGNoIHRoZSBwYWdlIHNlZ21lbnRzXG4gICAgIShpc0xlYWZTZWdtZW50ICYmIGlzU2FtZVBhZ2VOYXZpZ2F0aW9uKVxuICApIHtcbiAgICAvLyBSZXVzZSB0aGUgZXhpc3RpbmcgQ2FjaGVOb2RlXG4gICAgY29uc3QgZHJvcFByZWZldGNoUnNjID0gZmFsc2VcbiAgICBuZXdDYWNoZU5vZGUgPSByZXVzZVNoYXJlZENhY2hlTm9kZShkcm9wUHJlZmV0Y2hSc2MsIG9sZENhY2hlTm9kZSlcbiAgICBuZWVkc0R5bmFtaWNSZXF1ZXN0ID0gZmFsc2VcbiAgfSBlbHNlIHtcbiAgICAvLyBJZiB0aGlzIGlzIHBhcnQgb2YgYSByZWZyZXNoLCBpZ25vcmUgdGhlIGV4aXN0aW5nIENhY2hlTm9kZSBhbmQgY3JlYXRlIGFcbiAgICAvLyBuZXcgb25lLlxuICAgIGNvbnN0IHNlZWRSc2MgPSBzZWVkRGF0YSAhPT0gbnVsbCA/IHNlZWREYXRhWzBdIDogbnVsbFxuICAgIGNvbnN0IHJlc3VsdCA9IGNyZWF0ZUNhY2hlTm9kZUZvclNlZ21lbnQoXG4gICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgIG5ld1JvdXRlVHJlZSxcbiAgICAgIHNlZWRSc2MsXG4gICAgICBuZXdNZXRhZGF0YVZhcnlQYXRoLFxuICAgICAgc2VlZEhlYWQsXG4gICAgICBmcmVzaG5lc3MsXG4gICAgICBzZWVkRHluYW1pY1N0YWxlQXRcbiAgICApXG4gICAgbmV3Q2FjaGVOb2RlID0gcmVzdWx0LmNhY2hlTm9kZVxuICAgIG5lZWRzRHluYW1pY1JlcXVlc3QgPSByZXN1bHQubmVlZHNEeW5hbWljUmVxdWVzdFxuXG4gICAgLy8gQ2FycnkgZm9yd2FyZCB0aGUgb2xkIG5vZGUncyBzY3JvbGxSZWYuIFRoaXMgcHJlc2VydmVzIHNjcm9sbFxuICAgIC8vIGludGVudCB3aGVuIGEgcHJpb3IgbmF2aWdhdGlvbidzIGNhY2hlIG5vZGUgaXMgcmVwbGFjZWQgYnkgYVxuICAgIC8vIHJlZnJlc2ggYmVmb3JlIHRoZSBzY3JvbGwgaGFuZGxlciBoYXMgaGFkIGEgY2hhbmNlIHRvIGZpcmUg4oCUXG4gICAgLy8gZS5nLiB3aGVuIHJvdXRlci5wdXNoKCkgYW5kIHJvdXRlci5yZWZyZXNoKCkgYXJlIGNhbGxlZCBpbiB0aGVcbiAgICAvLyBzYW1lIHN0YXJ0VHJhbnNpdGlvbiBiYXRjaC5cbiAgICBpZiAob2xkQ2FjaGVOb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG5ld0NhY2hlTm9kZS5zY3JvbGxSZWYgPSBvbGRDYWNoZU5vZGUuc2Nyb2xsUmVmXG4gICAgfVxuICB9XG5cbiAgLy8gRHVyaW5nIGEgcmVmcmVzaCBuYXZpZ2F0aW9uLCB0aGVyZSdzIGEgc3BlY2lhbCBjYXNlIHRoYXQgaGFwcGVucyB3aGVuXG4gIC8vIGVudGVyaW5nIGEgXCJkZWZhdWx0XCIgc2xvdC4gVGhlIGRlZmF1bHQgc2xvdCBtYXkgbm90IGJlIHBhcnQgb2YgdGhlXG4gIC8vIGN1cnJlbnQgcm91dGU7IGl0IG1heSBoYXZlIGJlZW4gcmV1c2VkIGZyb20gYW4gb2xkZXIgcm91dGUuIElmIHNvLFxuICAvLyB3ZSBuZWVkIHRvIGZldGNoIGl0cyBkYXRhIGZyb20gdGhlIG9sZCByb3V0ZSdzIFVSTCByYXRoZXIgdGhhbiBjdXJyZW50XG4gIC8vIHJvdXRlJ3MgVVJMLiBLZWVwIHRyYWNrIG9mIHRoaXMgYXMgd2UgdHJhdmVyc2UgdGhlIHRyZWUuXG4gIGNvbnN0IG1heWJlUmVmcmVzaFN0YXRlID0gbmV3Um91dGVUcmVlLnJlZnJlc2hTdGF0ZVxuICBjb25zdCByZWZyZXNoU3RhdGUgPVxuICAgIG1heWJlUmVmcmVzaFN0YXRlICE9PSB1bmRlZmluZWQgJiYgbWF5YmVSZWZyZXNoU3RhdGUgIT09IG51bGxcbiAgICAgID8gLy8gVGhpcyBzZWdtZW50IGlzIG5vdCBwcmVzZW50IGluIHRoZSBjdXJyZW50IHJvdXRlLiBUcmFjayBpdHNcbiAgICAgICAgLy8gcmVmcmVzaCBVUkwgYXMgd2UgY29udGludWUgdHJhdmVyc2luZyB0aGUgdHJlZS5cbiAgICAgICAgbWF5YmVSZWZyZXNoU3RhdGVcbiAgICAgIDogLy8gSW5oZXJpdCB0aGUgcmVmcmVzaCBVUkwgZnJvbSB0aGUgcGFyZW50LlxuICAgICAgICBwYXJlbnRSZWZyZXNoU3RhdGVcblxuICAvLyBJZiB0aGlzIHNlZ21lbnQgaXRzZWxmIG5lZWRzIHRvIGZldGNoIG5ldyBkYXRhIGZyb20gdGhlIHNlcnZlciwgdGhlbiBieVxuICAvLyBkZWZpbml0aW9uIGl0IGlzIGJlaW5nIHJlZnJlc2hlZC4gVHJhY2sgaXRzIHJlZnJlc2ggVVJMIHNvIHdlIGtub3cgd2hpY2hcbiAgLy8gVVJMIHRvIHJlcXVlc3QgdGhlIGRhdGEgZnJvbS5cbiAgaWYgKG5lZWRzRHluYW1pY1JlcXVlc3QgJiYgcmVmcmVzaFN0YXRlICE9PSBudWxsKSB7XG4gICAgYWNjdW11bGF0ZVJlZnJlc2hVcmwoYWNjdW11bGF0aW9uLCByZWZyZXNoU3RhdGUpXG4gIH1cblxuICAvLyBBcyB3ZSBkaWZmIHRoZSB0cmVlcywgd2UgbWF5IHNvbWV0aW1lcyBtb2RpZnkgKGNvcHktb24td3JpdGUsIG5vdCBtdXRhdGUpXG4gIC8vIHRoZSBSb3V0ZSBUcmVlIHRoYXQgd2FzIHJldHVybmVkIGJ5IHRoZSBzZXJ2ZXIg4oCUIGZvciBleGFtcGxlLCBpbiB0aGUgY2FzZVxuICAvLyBvZiBkZWZhdWx0IHBhcmFsbGVsIHJvdXRlcywgd2UgcHJlc2VydmUgdGhlIGN1cnJlbnRseSBhY3RpdmUgc2VnbWVudC4gVG9cbiAgLy8gYXZvaWQgbXV0YXRpbmcgdGhlIG9yaWdpbmFsIHRyZWUsIHdlIGNsb25lIHRoZSByb3V0ZXIgc3RhdGUgY2hpbGRyZW4gYWxvbmdcbiAgLy8gdGhlIHJldHVybiBwYXRoLlxuICBsZXQgcGF0Y2hlZFJvdXRlclN0YXRlQ2hpbGRyZW46IHtcbiAgICBbcGFyYWxsZWxSb3V0ZUtleTogc3RyaW5nXTogRmxpZ2h0Um91dGVyU3RhdGVcbiAgfSA9IHt9XG4gIGxldCB0YXNrQ2hpbGRyZW4gPSBudWxsXG5cbiAgLy8gTW9zdCBuYXZpZ2F0aW9ucyByZXF1aXJlIGEgcmVxdWVzdCB0byBmZXRjaCBhZGRpdGlvbmFsIGRhdGEgZnJvbSB0aGVcbiAgLy8gc2VydmVyLCBlaXRoZXIgYmVjYXVzZSB0aGUgZGF0YSB3YXMgbm90IGFscmVhZHkgcHJlZmV0Y2hlZCwgb3IgYmVjYXVzZSB0aGVcbiAgLy8gdGFyZ2V0IHJvdXRlIGNvbnRhaW5zIGR5bmFtaWMgZGF0YSB0aGF0IGNhbm5vdCBiZSBwcmVmZXRjaGVkLlxuICAvL1xuICAvLyBIb3dldmVyLCBpZiB0aGUgdGFyZ2V0IHJvdXRlIGlzIGZ1bGx5IHN0YXRpYywgYW5kIGl0J3MgYWxyZWFkeSBjb21wbGV0ZWx5XG4gIC8vIGxvYWRlZCBpbnRvIHRoZSBzZWdtZW50IGNhY2hlLCB0aGVuIHdlIGNhbiBza2lwIHRoZSBzZXJ2ZXIgcmVxdWVzdC5cbiAgLy9cbiAgLy8gVGhpcyBzdGFydHMgb2ZmIGFzIGBmYWxzZWAsIGFuZCBpcyBzZXQgdG8gYHRydWVgIGlmIGFueSBvZiB0aGUgY2hpbGRcbiAgLy8gcm91dGVzIHJlcXVpcmVzIGEgZHluYW1pYyByZXF1ZXN0LlxuICBsZXQgY2hpbGROZWVkc0R5bmFtaWNSZXF1ZXN0ID0gZmFsc2VcbiAgLy8gQXMgd2UgdHJhdmVyc2UgdGhlIGNoaWxkcmVuLCB3ZSdsbCBjb25zdHJ1Y3QgYSBGbGlnaHRSb3V0ZXJTdGF0ZSB0aGF0IGNhblxuICAvLyBiZSBzZW50IHRvIHRoZSBzZXJ2ZXIgdG8gcmVxdWVzdCB0aGUgZHluYW1pYyBkYXRhLiBJZiBpdCB0dXJucyBvdXQgdGhhdFxuICAvLyBub3RoaW5nIGluIHRoZSBzdWJ0cmVlIGlzIGR5bmFtaWMgKGkuZS4gY2hpbGROZWVkc0R5bmFtaWNSZXF1ZXN0IGlzIGZhbHNlXG4gIC8vIGF0IHRoZSBlbmQpLCB0aGVuIHRoaXMgd2lsbCBiZSBkaXNjYXJkZWQuXG4gIC8vIFRPRE86IFdlIGNhbiBwcm9iYWJseSBvcHRpbWl6ZSB0aGUgZm9ybWF0IG9mIHRoaXMgZGF0YSBzdHJ1Y3R1cmUgdG8gb25seVxuICAvLyBpbmNsdWRlIHBhdGhzIHRoYXQgYXJlIGR5bmFtaWMuIEluc3RlYWQgb2YgcmV1c2luZyB0aGVcbiAgLy8gRmxpZ2h0Um91dGVyU3RhdGUgdHlwZS5cbiAgbGV0IGR5bmFtaWNSZXF1ZXN0VHJlZUNoaWxkcmVuOiB7XG4gICAgW3BhcmFsbGVsUm91dGVLZXk6IHN0cmluZ106IEZsaWdodFJvdXRlclN0YXRlXG4gIH0gPSB7fVxuXG4gIGxldCBuZXdDYWNoZU5vZGVTbG90czogUmVjb3JkPHN0cmluZywgQ2FjaGVOb2RlPiB8IG51bGwgPSBudWxsXG4gIGlmIChuZXdTbG90cyAhPT0gbnVsbCkge1xuICAgIGNvbnN0IG9sZENhY2hlTm9kZVNsb3RzID1cbiAgICAgIG9sZENhY2hlTm9kZSAhPT0gdW5kZWZpbmVkID8gb2xkQ2FjaGVOb2RlLnNsb3RzIDogbnVsbFxuXG4gICAgbmV3Q2FjaGVOb2RlLnNsb3RzID0gbmV3Q2FjaGVOb2RlU2xvdHMgPSB7fVxuICAgIHRhc2tDaGlsZHJlbiA9IG5ldyBNYXAoKVxuICAgIGZvciAobGV0IHBhcmFsbGVsUm91dGVLZXkgaW4gbmV3U2xvdHMpIHtcbiAgICAgIGxldCBuZXdSb3V0ZVRyZWVDaGlsZDogUm91dGVUcmVlID0gbmV3U2xvdHNbcGFyYWxsZWxSb3V0ZUtleV1cbiAgICAgIGNvbnN0IG9sZFJvdXRlclN0YXRlQ2hpbGQ6IEZsaWdodFJvdXRlclN0YXRlIHwgdm9pZCA9XG4gICAgICAgIG9sZFJvdXRlclN0YXRlQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV1cbiAgICAgIGlmIChvbGRSb3V0ZXJTdGF0ZUNoaWxkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLCBidXQgaWYgaXQgZG9lcywgaXQgc3VnZ2VzdHMgYSBtYWxmb3JtZWRcbiAgICAgICAgLy8gc2VydmVyIHJlc3BvbnNlLiBUcmlnZ2VyIGEgZnVsbC1wYWdlIG5hdmlnYXRpb24uXG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG5cbiAgICAgIGxldCBzZWVkRGF0YUNoaWxkOiBDYWNoZU5vZGVTZWVkRGF0YSB8IHZvaWQgfCBudWxsID1cbiAgICAgICAgc2VlZERhdGFDaGlsZHJlbiAhPT0gbnVsbCA/IHNlZWREYXRhQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV0gOiBudWxsXG5cbiAgICAgIGNvbnN0IG9sZFNlZ21lbnRDaGlsZCA9IG9sZFJvdXRlclN0YXRlQ2hpbGRbMF1cbiAgICAgIGxldCBuZXdTZWdtZW50Q2hpbGQgPSBjcmVhdGVTZWdtZW50RnJvbVJvdXRlVHJlZShuZXdSb3V0ZVRyZWVDaGlsZClcbiAgICAgIGxldCBzZWVkSGVhZENoaWxkID0gc2VlZEhlYWRcbiAgICAgIGlmIChcbiAgICAgICAgLy8gU2tpcCB0aGlzIGJyYW5jaCBkdXJpbmcgYSBoaXN0b3J5IHRyYXZlcnNhbC4gV2UgcmVzdG9yZSB0aGUgdHJlZSB0aGF0XG4gICAgICAgIC8vIHdhcyBzdGFzaGVkIGluIHRoZSBoaXN0b3J5IGVudHJ5IGFzLWlzLlxuICAgICAgICBmcmVzaG5lc3MgIT09IEZyZXNobmVzc1BvbGljeS5IaXN0b3J5VHJhdmVyc2FsICYmXG4gICAgICAgIG5ld1NlZ21lbnRDaGlsZCA9PT0gREVGQVVMVF9TRUdNRU5UX0tFWSAmJlxuICAgICAgICBvbGRTZWdtZW50Q2hpbGQgIT09IERFRkFVTFRfU0VHTUVOVF9LRVlcbiAgICAgICkge1xuICAgICAgICAvLyBUaGlzIGlzIGEgXCJkZWZhdWx0XCIgc2VnbWVudC4gVGhlc2UgYXJlIG5ldmVyIHNlbnQgYnkgdGhlIHNlcnZlciBkdXJpbmdcbiAgICAgICAgLy8gYSBzb2Z0IG5hdmlnYXRpb247IGluc3RlYWQsIHRoZSBjbGllbnQgcmV1c2VzIHdoYXRldmVyIHNlZ21lbnQgd2FzXG4gICAgICAgIC8vIGFscmVhZHkgYWN0aXZlIGluIHRoYXQgc2xvdCBvbiB0aGUgcHJldmlvdXMgcm91dGUuXG4gICAgICAgIG5ld1JvdXRlVHJlZUNoaWxkID0gcmV1c2VBY3RpdmVTZWdtZW50SW5EZWZhdWx0U2xvdChcbiAgICAgICAgICBuZXdSb3V0ZVRyZWUsXG4gICAgICAgICAgcGFyYWxsZWxSb3V0ZUtleSxcbiAgICAgICAgICBvbGRSb290UmVmcmVzaFN0YXRlLFxuICAgICAgICAgIG9sZFJvdXRlclN0YXRlQ2hpbGRcbiAgICAgICAgKVxuICAgICAgICBuZXdTZWdtZW50Q2hpbGQgPSBjcmVhdGVTZWdtZW50RnJvbVJvdXRlVHJlZShuZXdSb3V0ZVRyZWVDaGlsZClcblxuICAgICAgICAvLyBTaW5jZSB3ZSdyZSBzd2l0Y2hpbmcgdG8gYSBkaWZmZXJlbnQgcm91dGUgdHJlZSwgdGhlc2UgYXJlIG5vXG4gICAgICAgIC8vIGxvbmdlciB2YWxpZCwgYmVjYXVzZSB0aGV5IGNvcnJlc3BvbmQgdG8gdGhlIG91dGVyIHRyZWUuXG4gICAgICAgIHNlZWREYXRhQ2hpbGQgPSBudWxsXG4gICAgICAgIHNlZWRIZWFkQ2hpbGQgPSBudWxsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG9sZENhY2hlTm9kZUNoaWxkID1cbiAgICAgICAgb2xkQ2FjaGVOb2RlU2xvdHMgIT09IG51bGxcbiAgICAgICAgICA/IG9sZENhY2hlTm9kZVNsb3RzW3BhcmFsbGVsUm91dGVLZXldXG4gICAgICAgICAgOiB1bmRlZmluZWRcblxuICAgICAgY29uc3QgdGFza0NoaWxkID0gdXBkYXRlQ2FjaGVOb2RlT25OYXZpZ2F0aW9uKFxuICAgICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgICAgb2xkVXJsLFxuICAgICAgICBvbGRDYWNoZU5vZGVDaGlsZCxcbiAgICAgICAgb2xkUm91dGVyU3RhdGVDaGlsZCxcbiAgICAgICAgbmV3Um91dGVUcmVlQ2hpbGQsXG4gICAgICAgIG5ld01ldGFkYXRhVmFyeVBhdGgsXG4gICAgICAgIGZyZXNobmVzcyxcbiAgICAgICAgY2hpbGREaWRGaW5kUm9vdExheW91dCxcbiAgICAgICAgc2VlZERhdGFDaGlsZCA/PyBudWxsLFxuICAgICAgICBzZWVkSGVhZENoaWxkLFxuICAgICAgICBzZWVkRHluYW1pY1N0YWxlQXQsXG4gICAgICAgIGlzU2FtZVBhZ2VOYXZpZ2F0aW9uLFxuICAgICAgICBwYXJlbnROZWVkc0R5bmFtaWNSZXF1ZXN0IHx8IG5lZWRzRHluYW1pY1JlcXVlc3QsXG4gICAgICAgIG9sZFJvb3RSZWZyZXNoU3RhdGUsXG4gICAgICAgIHJlZnJlc2hTdGF0ZSxcbiAgICAgICAgYWNjdW11bGF0aW9uXG4gICAgICApXG5cbiAgICAgIGlmICh0YXNrQ2hpbGQgPT09IG51bGwpIHtcbiAgICAgICAgLy8gT25lIG9mIHRoZSBjaGlsZCB0YXNrcyBkaXNjb3ZlcmVkIGEgY2hhbmdlIHRvIHRoZSByb290IGxheW91dC5cbiAgICAgICAgLy8gSW1tZWRpYXRlbHkgdW53aW5kIGZyb20gdGhpcyByZWN1cnNpdmUgdHJhdmVyc2FsLiBUaGlzIHdpbGwgdHJpZ2dlciBhXG4gICAgICAgIC8vIGZ1bGwtcGFnZSBuYXZpZ2F0aW9uLlxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuXG4gICAgICAvLyBSZWN1cnNpdmVseSBwcm9wYWdhdGUgdXAgdGhlIGNoaWxkIHRhc2tzLlxuICAgICAgdGFza0NoaWxkcmVuLnNldChwYXJhbGxlbFJvdXRlS2V5LCB0YXNrQ2hpbGQpXG4gICAgICBuZXdDYWNoZU5vZGVTbG90c1twYXJhbGxlbFJvdXRlS2V5XSA9IHRhc2tDaGlsZC5ub2RlXG5cbiAgICAgIC8vIFRoZSBjaGlsZCB0cmVlJ3Mgcm91dGUgc3RhdGUgbWF5IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBwcmVmZXRjaGVkXG4gICAgICAvLyByb3V0ZSBzZW50IGJ5IHRoZSBzZXJ2ZXIuIFdlIG5lZWQgdG8gY2xvbmUgaXQgYXMgd2UgdHJhdmVyc2UgYmFjayB1cFxuICAgICAgLy8gdGhlIHRyZWUuXG4gICAgICBjb25zdCB0YXNrQ2hpbGRSb3V0ZSA9IHRhc2tDaGlsZC5yb3V0ZVxuICAgICAgcGF0Y2hlZFJvdXRlclN0YXRlQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV0gPSB0YXNrQ2hpbGRSb3V0ZVxuXG4gICAgICBjb25zdCBkeW5hbWljUmVxdWVzdFRyZWVDaGlsZCA9IHRhc2tDaGlsZC5keW5hbWljUmVxdWVzdFRyZWVcbiAgICAgIGlmIChkeW5hbWljUmVxdWVzdFRyZWVDaGlsZCAhPT0gbnVsbCkge1xuICAgICAgICAvLyBTb21ldGhpbmcgaW4gdGhlIGNoaWxkIHRyZWUgaXMgZHluYW1pYy5cbiAgICAgICAgY2hpbGROZWVkc0R5bmFtaWNSZXF1ZXN0ID0gdHJ1ZVxuICAgICAgICBkeW5hbWljUmVxdWVzdFRyZWVDaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XSA9IGR5bmFtaWNSZXF1ZXN0VHJlZUNoaWxkXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkeW5hbWljUmVxdWVzdFRyZWVDaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XSA9IHRhc2tDaGlsZFJvdXRlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbmV3RmxpZ2h0Um91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlID0gW1xuICAgIGNyZWF0ZVNlZ21lbnRGcm9tUm91dGVUcmVlKG5ld1JvdXRlVHJlZSksXG4gICAgcGF0Y2hlZFJvdXRlclN0YXRlQ2hpbGRyZW4sXG4gICAgcmVmcmVzaFN0YXRlICE9PSBudWxsXG4gICAgICA/IFtyZWZyZXNoU3RhdGUuY2Fub25pY2FsVXJsLCByZWZyZXNoU3RhdGUucmVuZGVyZWRTZWFyY2hdXG4gICAgICA6IG51bGwsXG4gICAgbnVsbCxcbiAgICBuZXdSb3V0ZVRyZWUucHJlZmV0Y2hIaW50cyxcbiAgXVxuXG4gIHJldHVybiB7XG4gICAgc3RhdHVzOiBuZWVkc0R5bmFtaWNSZXF1ZXN0XG4gICAgICA/IE5hdmlnYXRpb25UYXNrU3RhdHVzLlBlbmRpbmdcbiAgICAgIDogTmF2aWdhdGlvblRhc2tTdGF0dXMuRnVsZmlsbGVkLFxuICAgIHJvdXRlOiBuZXdGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgICBub2RlOiBuZXdDYWNoZU5vZGUsXG4gICAgZHluYW1pY1JlcXVlc3RUcmVlOiBjcmVhdGVEeW5hbWljUmVxdWVzdFRyZWUoXG4gICAgICBuZXdGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgICAgIGR5bmFtaWNSZXF1ZXN0VHJlZUNoaWxkcmVuLFxuICAgICAgbmVlZHNEeW5hbWljUmVxdWVzdCxcbiAgICAgIGNoaWxkTmVlZHNEeW5hbWljUmVxdWVzdCxcbiAgICAgIHBhcmVudE5lZWRzRHluYW1pY1JlcXVlc3RcbiAgICApLFxuICAgIHJlZnJlc2hTdGF0ZSxcbiAgICBjaGlsZHJlbjogdGFza0NoaWxkcmVuLFxuICB9XG59XG5cbi8qKlxuICogQXNzaWducyBhIFNjcm9sbFJlZiB0byBhIG5ldyBsZWFmIENhY2hlTm9kZSBzbyB0aGUgc2Nyb2xsIGhhbmRsZXJcbiAqIGtub3dzIHRvIHNjcm9sbCB0byBpdCBhZnRlciBuYXZpZ2F0aW9uLiBBbGwgbGVhdmVzIGluIHRoZSBzYW1lXG4gKiBuYXZpZ2F0aW9uIHNoYXJlIHRoZSBzYW1lIFNjcm9sbFJlZiDigJQgdGhlIGZpcnN0IHNlZ21lbnQgdG8gc2Nyb2xsXG4gKiBjb25zdW1lcyBpdCwgcHJldmVudGluZyBvdGhlcnMgZnJvbSBhbHNvIHNjcm9sbGluZy5cbiAqXG4gKiBUaGlzIGlzIG9ubHkgY2FsbGVkIGluc2lkZSBgY3JlYXRlQ2FjaGVOb2RlT25OYXZpZ2F0aW9uYCwgd2hpY2ggb25seVxuICogcnVucyB3aGVuIHNlZ21lbnRzIGRpdmVyZ2UgZnJvbSB0aGUgcHJldmlvdXMgcm91dGUuIFNvIGZvciBhIHJlZnJlc2hcbiAqIHdoZXJlIHRoZSByb3V0ZSBzdHJ1Y3R1cmUgc3RheXMgdGhlIHNhbWUsIHNlZ21lbnRzIG1hdGNoLCB0aGUgdXBkYXRlXG4gKiBwYXRoIGlzIHRha2VuLCBhbmQgdGhpcyBmdW5jdGlvbiBpcyBuZXZlciBjYWxsZWQg4oCUIG5vIHNjcm9sbCByZWYgaXNcbiAqIGFzc2lnbmVkLiBBIHNjcm9sbCByZWYgaXMgb25seSBhc3NpZ25lZCB3aGVuIHRoZSByb3V0ZSBhY3R1YWxseVxuICogY2hhbmdlZCAoZS5nLiBhIHJlZGlyZWN0LCBvciBhIGR5bmFtaWMgY29uZGl0aW9uIG9uIHRoZSBzZXJ2ZXIgdGhhdFxuICogcHJvZHVjZXMgYSBkaWZmZXJlbnQgcm91dGUpLlxuICpcbiAqIFNraXBwZWQgZHVyaW5nIGh5ZHJhdGlvbiAoaW5pdGlhbCByZW5kZXIgc2hvdWxkIG5vdCBzY3JvbGwpIGFuZFxuICogaGlzdG9yeSB0cmF2ZXJzYWwgKHNjcm9sbCByZXN0b3JhdGlvbiBpcyBoYW5kbGVkIHNlcGFyYXRlbHkpLlxuICovXG5mdW5jdGlvbiBhY2N1bXVsYXRlU2Nyb2xsUmVmKFxuICBmcmVzaG5lc3M6IEZyZXNobmVzc1BvbGljeSxcbiAgY2FjaGVOb2RlOiBDYWNoZU5vZGUsXG4gIGFjY3VtdWxhdGlvbjogTmF2aWdhdGlvblJlcXVlc3RBY2N1bXVsYXRpb25cbik6IHZvaWQge1xuICBzd2l0Y2ggKGZyZXNobmVzcykge1xuICAgIGNhc2UgRnJlc2huZXNzUG9saWN5LkRlZmF1bHQ6XG4gICAgY2FzZSBGcmVzaG5lc3NQb2xpY3kuR2VzdHVyZTpcbiAgICBjYXNlIEZyZXNobmVzc1BvbGljeS5SZWZyZXNoQWxsOlxuICAgIGNhc2UgRnJlc2huZXNzUG9saWN5LkhNUlJlZnJlc2g6XG4gICAgICBpZiAoYWNjdW11bGF0aW9uLnNjcm9sbFJlZiA9PT0gbnVsbCkge1xuICAgICAgICBhY2N1bXVsYXRpb24uc2Nyb2xsUmVmID0geyBjdXJyZW50OiB0cnVlIH1cbiAgICAgIH1cbiAgICAgIGNhY2hlTm9kZS5zY3JvbGxSZWYgPSBhY2N1bXVsYXRpb24uc2Nyb2xsUmVmXG4gICAgICBicmVha1xuICAgIGNhc2UgRnJlc2huZXNzUG9saWN5Lkh5ZHJhdGlvbjpcbiAgICAgIC8vIEluaXRpYWwgcmVuZGVyIOKAlCBubyBzY3JvbGwuXG4gICAgICBicmVha1xuICAgIGNhc2UgRnJlc2huZXNzUG9saWN5Lkhpc3RvcnlUcmF2ZXJzYWw6XG4gICAgICAvLyBCYWNrL2ZvcndhcmQg4oCUIHNjcm9sbCByZXN0b3JhdGlvbiBpcyBoYW5kbGVkIHNlcGFyYXRlbHkuXG4gICAgICBicmVha1xuICAgIGRlZmF1bHQ6XG4gICAgICBmcmVzaG5lc3Mgc2F0aXNmaWVzIG5ldmVyXG4gICAgICBicmVha1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNhY2hlTm9kZU9uTmF2aWdhdGlvbihcbiAgbmF2aWdhdGVkQXQ6IG51bWJlcixcbiAgbmV3Um91dGVUcmVlOiBSb3V0ZVRyZWUsXG4gIG5ld01ldGFkYXRhVmFyeVBhdGg6IFBhZ2VWYXJ5UGF0aCB8IG51bGwsXG4gIGZyZXNobmVzczogRnJlc2huZXNzUG9saWN5LFxuICBzZWVkRGF0YTogQ2FjaGVOb2RlU2VlZERhdGEgfCBudWxsLFxuICBzZWVkSGVhZDogSGVhZERhdGEgfCBudWxsLFxuICBzZWVkRHluYW1pY1N0YWxlQXQ6IG51bWJlcixcbiAgcGFyZW50TmVlZHNEeW5hbWljUmVxdWVzdDogYm9vbGVhbixcbiAgYWNjdW11bGF0aW9uOiBOYXZpZ2F0aW9uUmVxdWVzdEFjY3VtdWxhdGlvblxuKTogTmF2aWdhdGlvblRhc2sge1xuICAvLyBTYW1lIHRyYXZlcnNhbCBhcyB1cGRhdGVDYWNoZU5vZGVOYXZpZ2F0aW9uLCBidXQgc2ltcGxlci4gV2Ugc3dpdGNoIHRvIHRoaXNcbiAgLy8gcGF0aCBvbmNlIHdlIHJlYWNoIHRoZSBwYXJ0IG9mIHRoZSB0cmVlIHRoYXQgd2FzIG5vdCBpbiB0aGUgcHJldmlvdXMgcm91dGUuXG4gIC8vIFdlIGRvbid0IG5lZWQgdG8gZGlmZiBhZ2FpbnN0IHRoZSBvbGQgdHJlZSwgd2UganVzdCBuZWVkIHRvIGNyZWF0ZSBhIG5ld1xuICAvLyBvbmUuIFdlIGFsc28gZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBhbnkgcmVmcmVzaC1yZWxhdGVkIGxvZ2ljLlxuICAvL1xuICAvLyBGb3IgdGhlIG1vc3QgcGFydCwgdGhpcyBpcyBhIHN1YnNldCBvZiB1cGRhdGVDYWNoZU5vZGVPbk5hdmlnYXRpb24sIHNvIGFueVxuICAvLyBjaGFuZ2UgdGhhdCBoYXBwZW5zIGluIHRoaXMgZnVuY3Rpb24gbGlrZWx5IG5lZWRzIHRvIGJlIGFwcGxpZWQgdG8gdGhhdFxuICAvLyBvbmUsIHRvby4gSG93ZXZlciB0aGVyZSBhcmUgc29tZSBwbGFjZXMgd2hlcmUgdGhlIGJlaGF2aW9yIGludGVudGlvbmFsbHlcbiAgLy8gZGl2ZXJnZXMsIHdoaWNoIGlzIHdoeSB3ZSBrZWVwIHRoZW0gc2VwYXJhdGUuXG5cbiAgY29uc3QgbmV3U2VnbWVudCA9IGNyZWF0ZVNlZ21lbnRGcm9tUm91dGVUcmVlKG5ld1JvdXRlVHJlZSlcblxuICBjb25zdCBuZXdTbG90cyA9IG5ld1JvdXRlVHJlZS5zbG90c1xuICBjb25zdCBzZWVkRGF0YUNoaWxkcmVuID0gc2VlZERhdGEgIT09IG51bGwgPyBzZWVkRGF0YVsxXSA6IG51bGxcblxuICBjb25zdCBzZWVkUnNjID0gc2VlZERhdGEgIT09IG51bGwgPyBzZWVkRGF0YVswXSA6IG51bGxcbiAgY29uc3QgcmVzdWx0ID0gY3JlYXRlQ2FjaGVOb2RlRm9yU2VnbWVudChcbiAgICBuYXZpZ2F0ZWRBdCxcbiAgICBuZXdSb3V0ZVRyZWUsXG4gICAgc2VlZFJzYyxcbiAgICBuZXdNZXRhZGF0YVZhcnlQYXRoLFxuICAgIHNlZWRIZWFkLFxuICAgIGZyZXNobmVzcyxcbiAgICBzZWVkRHluYW1pY1N0YWxlQXRcbiAgKVxuICBjb25zdCBuZXdDYWNoZU5vZGUgPSByZXN1bHQuY2FjaGVOb2RlXG4gIGNvbnN0IG5lZWRzRHluYW1pY1JlcXVlc3QgPSByZXN1bHQubmVlZHNEeW5hbWljUmVxdWVzdFxuXG4gIGNvbnN0IGlzTGVhZlNlZ21lbnQgPSBuZXdTbG90cyA9PT0gbnVsbFxuICBpZiAoaXNMZWFmU2VnbWVudCkge1xuICAgIGFjY3VtdWxhdGVTY3JvbGxSZWYoZnJlc2huZXNzLCBuZXdDYWNoZU5vZGUsIGFjY3VtdWxhdGlvbilcbiAgfVxuXG4gIGxldCBwYXRjaGVkUm91dGVyU3RhdGVDaGlsZHJlbjoge1xuICAgIFtwYXJhbGxlbFJvdXRlS2V5OiBzdHJpbmddOiBGbGlnaHRSb3V0ZXJTdGF0ZVxuICB9ID0ge31cbiAgbGV0IHRhc2tDaGlsZHJlbiA9IG51bGxcblxuICBsZXQgY2hpbGROZWVkc0R5bmFtaWNSZXF1ZXN0ID0gZmFsc2VcbiAgbGV0IGR5bmFtaWNSZXF1ZXN0VHJlZUNoaWxkcmVuOiB7XG4gICAgW3BhcmFsbGVsUm91dGVLZXk6IHN0cmluZ106IEZsaWdodFJvdXRlclN0YXRlXG4gIH0gPSB7fVxuXG4gIGxldCBuZXdDYWNoZU5vZGVTbG90czogUmVjb3JkPHN0cmluZywgQ2FjaGVOb2RlPiB8IG51bGwgPSBudWxsXG4gIGlmIChuZXdTbG90cyAhPT0gbnVsbCkge1xuICAgIG5ld0NhY2hlTm9kZS5zbG90cyA9IG5ld0NhY2hlTm9kZVNsb3RzID0ge31cbiAgICB0YXNrQ2hpbGRyZW4gPSBuZXcgTWFwKClcbiAgICBmb3IgKGxldCBwYXJhbGxlbFJvdXRlS2V5IGluIG5ld1Nsb3RzKSB7XG4gICAgICBjb25zdCBuZXdSb3V0ZVRyZWVDaGlsZDogUm91dGVUcmVlID0gbmV3U2xvdHNbcGFyYWxsZWxSb3V0ZUtleV1cbiAgICAgIGNvbnN0IHNlZWREYXRhQ2hpbGQ6IENhY2hlTm9kZVNlZWREYXRhIHwgdm9pZCB8IG51bGwgPVxuICAgICAgICBzZWVkRGF0YUNoaWxkcmVuICE9PSBudWxsID8gc2VlZERhdGFDaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XSA6IG51bGxcblxuICAgICAgY29uc3QgdGFza0NoaWxkID0gY3JlYXRlQ2FjaGVOb2RlT25OYXZpZ2F0aW9uKFxuICAgICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgICAgbmV3Um91dGVUcmVlQ2hpbGQsXG4gICAgICAgIG5ld01ldGFkYXRhVmFyeVBhdGgsXG4gICAgICAgIGZyZXNobmVzcyxcbiAgICAgICAgc2VlZERhdGFDaGlsZCA/PyBudWxsLFxuICAgICAgICBzZWVkSGVhZCxcbiAgICAgICAgc2VlZER5bmFtaWNTdGFsZUF0LFxuICAgICAgICBwYXJlbnROZWVkc0R5bmFtaWNSZXF1ZXN0IHx8IG5lZWRzRHluYW1pY1JlcXVlc3QsXG4gICAgICAgIGFjY3VtdWxhdGlvblxuICAgICAgKVxuXG4gICAgICB0YXNrQ2hpbGRyZW4uc2V0KHBhcmFsbGVsUm91dGVLZXksIHRhc2tDaGlsZClcbiAgICAgIG5ld0NhY2hlTm9kZVNsb3RzW3BhcmFsbGVsUm91dGVLZXldID0gdGFza0NoaWxkLm5vZGVcblxuICAgICAgY29uc3QgdGFza0NoaWxkUm91dGUgPSB0YXNrQ2hpbGQucm91dGVcbiAgICAgIHBhdGNoZWRSb3V0ZXJTdGF0ZUNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldID0gdGFza0NoaWxkUm91dGVcblxuICAgICAgY29uc3QgZHluYW1pY1JlcXVlc3RUcmVlQ2hpbGQgPSB0YXNrQ2hpbGQuZHluYW1pY1JlcXVlc3RUcmVlXG4gICAgICBpZiAoZHluYW1pY1JlcXVlc3RUcmVlQ2hpbGQgIT09IG51bGwpIHtcbiAgICAgICAgY2hpbGROZWVkc0R5bmFtaWNSZXF1ZXN0ID0gdHJ1ZVxuICAgICAgICBkeW5hbWljUmVxdWVzdFRyZWVDaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XSA9IGR5bmFtaWNSZXF1ZXN0VHJlZUNoaWxkXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkeW5hbWljUmVxdWVzdFRyZWVDaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XSA9IHRhc2tDaGlsZFJvdXRlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbmV3RmxpZ2h0Um91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlID0gW1xuICAgIG5ld1NlZ21lbnQsXG4gICAgcGF0Y2hlZFJvdXRlclN0YXRlQ2hpbGRyZW4sXG4gICAgbnVsbCxcbiAgICBudWxsLFxuICAgIG5ld1JvdXRlVHJlZS5wcmVmZXRjaEhpbnRzLFxuICBdXG5cbiAgcmV0dXJuIHtcbiAgICBzdGF0dXM6IG5lZWRzRHluYW1pY1JlcXVlc3RcbiAgICAgID8gTmF2aWdhdGlvblRhc2tTdGF0dXMuUGVuZGluZ1xuICAgICAgOiBOYXZpZ2F0aW9uVGFza1N0YXR1cy5GdWxmaWxsZWQsXG4gICAgcm91dGU6IG5ld0ZsaWdodFJvdXRlclN0YXRlLFxuICAgIG5vZGU6IG5ld0NhY2hlTm9kZSxcbiAgICBkeW5hbWljUmVxdWVzdFRyZWU6IGNyZWF0ZUR5bmFtaWNSZXF1ZXN0VHJlZShcbiAgICAgIG5ld0ZsaWdodFJvdXRlclN0YXRlLFxuICAgICAgZHluYW1pY1JlcXVlc3RUcmVlQ2hpbGRyZW4sXG4gICAgICBuZWVkc0R5bmFtaWNSZXF1ZXN0LFxuICAgICAgY2hpbGROZWVkc0R5bmFtaWNSZXF1ZXN0LFxuICAgICAgcGFyZW50TmVlZHNEeW5hbWljUmVxdWVzdFxuICAgICksXG4gICAgLy8gVGhpcyByb3V0ZSBpcyBub3QgcGFydCBvZiB0aGUgY3VycmVudCB0cmVlLCBzbyB0aGVyZSdzIG5vIHJlYXNvbiB0b1xuICAgIC8vIHRyYWNrIHRoZSByZWZyZXNoIFVSTC5cbiAgICByZWZyZXNoU3RhdGU6IG51bGwsXG4gICAgY2hpbGRyZW46IHRhc2tDaGlsZHJlbixcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVTZWdtZW50RnJvbVJvdXRlVHJlZShuZXdSb3V0ZVRyZWU6IFJvdXRlVHJlZSk6IFNlZ21lbnQge1xuICBpZiAobmV3Um91dGVUcmVlLmlzUGFnZSkge1xuICAgIC8vIEluIGEgZHluYW1pYyBzZXJ2ZXIgcmVzcG9uc2UsIHRoZSBzZXJ2ZXIgZW1iZWRzIHRoZSBzZWFyY2ggcGFyYW1zIGludG9cbiAgICAvLyB0aGUgc2VnbWVudCBrZXksIGJ1dCBpbiBhIHN0YXRpYyBvbmUgaXQncyBvbWl0dGVkLiBUaGUgY2xpZW50IGhhbmRsZXNcbiAgICAvLyB0aGlzIGluY29uc2lzdGVuY3kgYnkgYWRkaW5nIHRoZSBzZWFyY2ggcGFyYW1zIGJhY2sgcmlnaHQgYXQgdGhlIGVuZC5cbiAgICAvL1xuICAgIC8vIFRPRE86IFRoZSBvbmx5IHRoaW5nIHRoaXMgaXMgdXNlZCBmb3IgaXMgdG8gY3JlYXRlIGEgY2FjaGUga2V5IGZvclxuICAgIC8vIENoaWxkU2VnbWVudE1hcC4gQnV0IHdlIGFscmVhZHkgdHJhY2sgdGhlIGByZW5kZXJlZFNlYXJjaGAgZXZlcnl3aGVyZSBhc1xuICAgIC8vIHBhcnQgb2YgdGhlIHZhcnlQYXRoLiBUaGUgcGxhbiBpcyBnZXQgcmlkIG9mIENoaWxkU2VnbWVudE1hcCBhbmRcbiAgICAvLyBzdG9yZSB0aGUgcGFnZSBkYXRhIGluIGEgQ2FjaGVNYXAgdXNpbmcgdGhlIHZhcnlQYXRoLCBsaWtlIHdlIGRvXG4gICAgLy8gZm9yIHByZWZldGNoZXMuIFRoZW4gd2UgY2FuIHJlbW92ZSBpdCBmcm9tIHRoZSBzZWdtZW50IGtleS5cbiAgICAvL1xuICAgIC8vIEFzIGFuIGluY3JlbWVudGFsIHN0ZXAsIHdlIGNhbiBncmFiIHRoZSBzZWFyY2ggcGFyYW1zIGZyb20gdGhlIHZhcnlQYXRoLlxuICAgIGNvbnN0IHJlbmRlcmVkU2VhcmNoID0gZ2V0UmVuZGVyZWRTZWFyY2hGcm9tVmFyeVBhdGgobmV3Um91dGVUcmVlLnZhcnlQYXRoKVxuICAgIGlmIChyZW5kZXJlZFNlYXJjaCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFBBR0VfU0VHTUVOVF9LRVlcbiAgICB9XG4gICAgLy8gVGhpcyBpcyBiYXNlZCBvbiBlcXVpdmFsZW50IGxvZ2ljIGluIGFkZFNlYXJjaFBhcmFtc0lmUGFnZVNlZ21lbnQsIHVzZWRcbiAgICAvLyBvbiB0aGUgc2VydmVyLlxuICAgIGNvbnN0IHN0cmluZ2lmaWVkUXVlcnkgPSBKU09OLnN0cmluZ2lmeShcbiAgICAgIE9iamVjdC5mcm9tRW50cmllcyhuZXcgVVJMU2VhcmNoUGFyYW1zKHJlbmRlcmVkU2VhcmNoKSlcbiAgICApXG4gICAgcmV0dXJuIHN0cmluZ2lmaWVkUXVlcnkgIT09ICd7fSdcbiAgICAgID8gUEFHRV9TRUdNRU5UX0tFWSArICc/JyArIHN0cmluZ2lmaWVkUXVlcnlcbiAgICAgIDogUEFHRV9TRUdNRU5UX0tFWVxuICB9XG4gIHJldHVybiBuZXdSb3V0ZVRyZWUuc2VnbWVudFxufVxuXG5mdW5jdGlvbiBwYXRjaFJvdXRlclN0YXRlV2l0aE5ld0NoaWxkcmVuKFxuICBiYXNlUm91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlLFxuICBuZXdDaGlsZHJlbjogeyBbcGFyYWxsZWxSb3V0ZUtleTogc3RyaW5nXTogRmxpZ2h0Um91dGVyU3RhdGUgfVxuKTogRmxpZ2h0Um91dGVyU3RhdGUge1xuICBjb25zdCBjbG9uZTogRmxpZ2h0Um91dGVyU3RhdGUgPSBbYmFzZVJvdXRlclN0YXRlWzBdLCBuZXdDaGlsZHJlbl1cbiAgLy8gQmFzZWQgb24gZXF1aXZhbGVudCBsb2dpYyBpbiBhcHBseS1yb3V0ZXItc3RhdGUtcGF0Y2gtdG8tdHJlZSwgYnV0IHNob3VsZFxuICAvLyBjb25maXJtIHdoZXRoZXIgd2UgbmVlZCB0byBjb3B5IGFsbCBvZiB0aGVzZSBmaWVsZHMuIE5vdCBzdXJlIHRoZSBzZXJ2ZXJcbiAgLy8gZXZlciBzZW5kcywgZS5nLiB0aGUgcmVmZXRjaCBtYXJrZXIuXG4gIGlmICgyIGluIGJhc2VSb3V0ZXJTdGF0ZSkge1xuICAgIGNsb25lWzJdID0gYmFzZVJvdXRlclN0YXRlWzJdXG4gIH1cbiAgaWYgKDMgaW4gYmFzZVJvdXRlclN0YXRlKSB7XG4gICAgY2xvbmVbM10gPSBiYXNlUm91dGVyU3RhdGVbM11cbiAgfVxuICBpZiAoNCBpbiBiYXNlUm91dGVyU3RhdGUpIHtcbiAgICBjbG9uZVs0XSA9IGJhc2VSb3V0ZXJTdGF0ZVs0XVxuICB9XG4gIHJldHVybiBjbG9uZVxufVxuXG5mdW5jdGlvbiBjcmVhdGVEeW5hbWljUmVxdWVzdFRyZWUoXG4gIG5ld1JvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgZHluYW1pY1JlcXVlc3RUcmVlQ2hpbGRyZW46IFJlY29yZDxzdHJpbmcsIEZsaWdodFJvdXRlclN0YXRlPixcbiAgbmVlZHNEeW5hbWljUmVxdWVzdDogYm9vbGVhbixcbiAgY2hpbGROZWVkc0R5bmFtaWNSZXF1ZXN0OiBib29sZWFuLFxuICBwYXJlbnROZWVkc0R5bmFtaWNSZXF1ZXN0OiBib29sZWFuXG4pOiBGbGlnaHRSb3V0ZXJTdGF0ZSB8IG51bGwge1xuICAvLyBDcmVhdGUgYSBGbGlnaHRSb3V0ZXJTdGF0ZSB0aGF0IGluc3RydWN0cyB0aGUgc2VydmVyIGhvdyB0byByZW5kZXIgdGhlXG4gIC8vIHJlcXVlc3RlZCBzZWdtZW50LlxuICAvL1xuICAvLyBPciwgaWYgbmVpdGhlciB0aGlzIHNlZ21lbnQgbm9yIGFueSBvZiB0aGUgY2hpbGRyZW4gcmVxdWlyZSBhIG5ldyBkYXRhLFxuICAvLyB0aGVuIHdlIHJldHVybiBgbnVsbGAgdG8gc2tpcCB0aGUgcmVxdWVzdC5cbiAgbGV0IGR5bmFtaWNSZXF1ZXN0VHJlZTogRmxpZ2h0Um91dGVyU3RhdGUgfCBudWxsID0gbnVsbFxuICBpZiAobmVlZHNEeW5hbWljUmVxdWVzdCkge1xuICAgIGR5bmFtaWNSZXF1ZXN0VHJlZSA9IHBhdGNoUm91dGVyU3RhdGVXaXRoTmV3Q2hpbGRyZW4oXG4gICAgICBuZXdSb3V0ZXJTdGF0ZSxcbiAgICAgIGR5bmFtaWNSZXF1ZXN0VHJlZUNoaWxkcmVuXG4gICAgKVxuICAgIC8vIFRoZSBcInJlZmV0Y2hcIiBtYXJrZXIgaXMgc2V0IG9uIHRoZSB0b3AtbW9zdCBzZWdtZW50IHRoYXQgcmVxdWlyZXMgbmV3XG4gICAgLy8gZGF0YS4gV2UgY2FuIG9taXQgaXQgaWYgYSBwYXJlbnQgd2FzIGFscmVhZHkgbWFya2VkLlxuICAgIGlmICghcGFyZW50TmVlZHNEeW5hbWljUmVxdWVzdCkge1xuICAgICAgZHluYW1pY1JlcXVlc3RUcmVlWzNdID0gJ3JlZmV0Y2gnXG4gICAgfVxuICB9IGVsc2UgaWYgKGNoaWxkTmVlZHNEeW5hbWljUmVxdWVzdCkge1xuICAgIC8vIFRoaXMgc2VnbWVudCBkb2VzIG5vdCByZXF1ZXN0IG5ldyBkYXRhLCBidXQgYXQgbGVhc3Qgb25lIG9mIGl0c1xuICAgIC8vIGNoaWxkcmVuIGRvZXMuXG4gICAgZHluYW1pY1JlcXVlc3RUcmVlID0gcGF0Y2hSb3V0ZXJTdGF0ZVdpdGhOZXdDaGlsZHJlbihcbiAgICAgIG5ld1JvdXRlclN0YXRlLFxuICAgICAgZHluYW1pY1JlcXVlc3RUcmVlQ2hpbGRyZW5cbiAgICApXG4gIH0gZWxzZSB7XG4gICAgZHluYW1pY1JlcXVlc3RUcmVlID0gbnVsbFxuICB9XG4gIHJldHVybiBkeW5hbWljUmVxdWVzdFRyZWVcbn1cblxuZnVuY3Rpb24gYWNjdW11bGF0ZVJlZnJlc2hVcmwoXG4gIGFjY3VtdWxhdGlvbjogTmF2aWdhdGlvblJlcXVlc3RBY2N1bXVsYXRpb24sXG4gIHJlZnJlc2hTdGF0ZTogUmVmcmVzaFN0YXRlXG4pIHtcbiAgLy8gVGhpcyBpcyBhIHJlZnJlc2ggbmF2aWdhdGlvbiwgYW5kIHdlJ3JlIGluc2lkZSBhIFwiZGVmYXVsdFwiIHNsb3QgdGhhdCdzXG4gIC8vIG5vdCBwYXJ0IG9mIHRoZSBjdXJyZW50IHJvdXRlOyBpdCB3YXMgcmV1c2VkIGZyb20gYW4gb2xkZXIgcm91dGUuIEluXG4gIC8vIG9yZGVyIHRvIGdldCBmcmVzaCBkYXRhIGZvciB0aGlzIHJldXNlZCByb3V0ZSwgd2UgbmVlZCB0byBpc3N1ZSBhXG4gIC8vIHNlcGFyYXRlIHJlcXVlc3QgdXNpbmcgdGhlIG9sZCByb3V0ZSdzIFVSTC5cbiAgLy9cbiAgLy8gVHJhY2sgdGhlc2UgZXh0cmEgVVJMcyBpbiB0aGUgYWNjdW11bGF0ZWQgcmVzdWx0LiBMYXRlciwgd2UnbGwgY29uc3RydWN0XG4gIC8vIGFuIGFwcHJvcHJpYXRlIHJlcXVlc3QgZm9yIGVhY2ggdW5pcXVlIFVSTCBpbiB0aGUgZmluYWwgc2V0LiBUaGUgcmVhc29uXG4gIC8vIHdlIGRvbid0IGRvIGl0IGltbWVkaWF0ZWx5IGhlcmUgaXMgc28gd2UgY2FuIGRlZHVwbGljYXRlIG11bHRpcGxlXG4gIC8vIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBVUkwgaW50byBhIHNpbmdsZSByZXF1ZXN0LiBTZWVcbiAgLy8gbGlzdGVuRm9yRHluYW1pY1JlcXVlc3QgZm9yIG1vcmUgZGV0YWlscy5cbiAgY29uc3QgcmVmcmVzaFVybCA9IHJlZnJlc2hTdGF0ZS5jYW5vbmljYWxVcmxcbiAgY29uc3Qgc2VwYXJhdGVSZWZyZXNoVXJscyA9IGFjY3VtdWxhdGlvbi5zZXBhcmF0ZVJlZnJlc2hVcmxzXG4gIGlmIChzZXBhcmF0ZVJlZnJlc2hVcmxzID09PSBudWxsKSB7XG4gICAgYWNjdW11bGF0aW9uLnNlcGFyYXRlUmVmcmVzaFVybHMgPSBuZXcgU2V0KFtyZWZyZXNoVXJsXSlcbiAgfSBlbHNlIHtcbiAgICBzZXBhcmF0ZVJlZnJlc2hVcmxzLmFkZChyZWZyZXNoVXJsKVxuICB9XG59XG5cbmZ1bmN0aW9uIHJldXNlQWN0aXZlU2VnbWVudEluRGVmYXVsdFNsb3QoXG4gIHBhcmVudFJvdXRlVHJlZTogUm91dGVUcmVlLFxuICBwYXJhbGxlbFJvdXRlS2V5OiBzdHJpbmcsXG4gIG9sZFJvb3RSZWZyZXNoU3RhdGU6IFJlZnJlc2hTdGF0ZSxcbiAgb2xkUm91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlXG4pOiBSb3V0ZVRyZWUge1xuICAvLyBUaGlzIGlzIGEgXCJkZWZhdWx0XCIgc2VnbWVudC4gVGhlc2UgYXJlIG5ldmVyIHNlbnQgYnkgdGhlIHNlcnZlciBkdXJpbmcgYVxuICAvLyBzb2Z0IG5hdmlnYXRpb247IGluc3RlYWQsIHRoZSBjbGllbnQgcmV1c2VzIHdoYXRldmVyIHNlZ21lbnQgd2FzIGFscmVhZHlcbiAgLy8gYWN0aXZlIGluIHRoYXQgc2xvdCBvbiB0aGUgcHJldmlvdXMgcm91dGUuIFRoaXMgbWVhbnMgaWYgd2UgbGF0ZXIgbmVlZCB0b1xuICAvLyByZWZyZXNoIHRoZSBzZWdtZW50LCBpdCB3aWxsIGhhdmUgdG8gYmUgcmVmZXRjaGVkIGZyb20gdGhlIHByZXZpb3VzIHJvdXRlJ3NcbiAgLy8gVVJMLiBXZSBzdG9yZSBpdCBpbiB0aGUgRmxpZ2h0IFJvdXRlciBTdGF0ZS5cblxuICBsZXQgcmV1c2VkVXJsOiBzdHJpbmdcbiAgbGV0IHJldXNlZFJlbmRlcmVkU2VhcmNoOiBOb3JtYWxpemVkU2VhcmNoXG4gIGNvbnN0IG9sZFJlZnJlc2hTdGF0ZSA9IG9sZFJvdXRlclN0YXRlWzJdXG4gIGlmIChvbGRSZWZyZXNoU3RhdGUgIT09IHVuZGVmaW5lZCAmJiBvbGRSZWZyZXNoU3RhdGUgIT09IG51bGwpIHtcbiAgICAvLyBUaGlzIHNlZ21lbnQgd2FzIGFscmVhZHkgcmV1c2VkIGZyb20gYW4gZXZlbiBvbGRlciByb3V0ZS4gS2VlcCBpdHNcbiAgICAvLyBleGlzdGluZyBVUkwgYW5kIHJlZnJlc2ggc3RhdGUuXG4gICAgcmV1c2VkVXJsID0gb2xkUmVmcmVzaFN0YXRlWzBdXG4gICAgcmV1c2VkUmVuZGVyZWRTZWFyY2ggPSBvbGRSZWZyZXNoU3RhdGVbMV0gYXMgTm9ybWFsaXplZFNlYXJjaFxuICB9IGVsc2Uge1xuICAgIC8vIFNpbmNlIHRoaXMgcm91dGUgZGlkbid0IGFscmVhZHkgaGF2ZSBhIHJlZnJlc2ggc3RhdGUsIGl0IG11c3QgaGF2ZSBiZWVuXG4gICAgLy8gcmVhY2hhYmxlIGZyb20gdGhlIHJvb3Qgb2YgdGhlIG9sZCByb3V0ZS4gU28gd2UgdXNlIHRoZSByZWZyZXNoIHN0YXRlXG4gICAgLy8gdGhhdCByZXByZXNlbnRzIHRoZSBvbGQgcm91dGUuXG4gICAgcmV1c2VkVXJsID0gb2xkUm9vdFJlZnJlc2hTdGF0ZS5jYW5vbmljYWxVcmxcbiAgICByZXVzZWRSZW5kZXJlZFNlYXJjaCA9IG9sZFJvb3RSZWZyZXNoU3RhdGUucmVuZGVyZWRTZWFyY2hcbiAgfVxuXG4gIGNvbnN0IGFjYyA9IHsgbWV0YWRhdGFWYXJ5UGF0aDogbnVsbCB9XG4gIGNvbnN0IHJldXNlZFJvdXRlVHJlZSA9IGNvbnZlcnRSZXVzZWRGbGlnaHRSb3V0ZXJTdGF0ZVRvUm91dGVUcmVlKFxuICAgIHBhcmVudFJvdXRlVHJlZSxcbiAgICBwYXJhbGxlbFJvdXRlS2V5LFxuICAgIG9sZFJvdXRlclN0YXRlLFxuICAgIHJldXNlZFJlbmRlcmVkU2VhcmNoLFxuICAgIGFjY1xuICApXG4gIHJldXNlZFJvdXRlVHJlZS5yZWZyZXNoU3RhdGUgPSB7XG4gICAgY2Fub25pY2FsVXJsOiByZXVzZWRVcmwsXG4gICAgcmVuZGVyZWRTZWFyY2g6IHJldXNlZFJlbmRlcmVkU2VhcmNoLFxuICB9XG4gIHJldHVybiByZXVzZWRSb3V0ZVRyZWVcbn1cblxuZnVuY3Rpb24gcmV1c2VTaGFyZWRDYWNoZU5vZGUoXG4gIGRyb3BQcmVmZXRjaFJzYzogYm9vbGVhbixcbiAgZXhpc3RpbmdDYWNoZU5vZGU6IENhY2hlTm9kZVxuKTogQ2FjaGVOb2RlIHtcbiAgLy8gQ2xvbmUgdGhlIENhY2hlTm9kZSB0aGF0IHdhcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIHByZXZpb3VzIHRyZWUuXG4gIC8vIENhcnJ5IGZvcndhcmQgdGhlIHNjcm9sbFJlZiBzbyBzY3JvbGwgaW50ZW50IGZyb20gYSBwcmlvciBuYXZpZ2F0aW9uXG4gIC8vIHN1cnZpdmVzIHRyZWUgcmVidWlsZHMgKGUuZy4gcHVzaCArIHJlZnJlc2ggaW4gdGhlIHNhbWUgYmF0Y2gpLlxuICByZXR1cm4gY3JlYXRlQ2FjaGVOb2RlKFxuICAgIGV4aXN0aW5nQ2FjaGVOb2RlLnJzYyxcbiAgICBkcm9wUHJlZmV0Y2hSc2MgPyBudWxsIDogZXhpc3RpbmdDYWNoZU5vZGUucHJlZmV0Y2hSc2MsXG4gICAgZXhpc3RpbmdDYWNoZU5vZGUuaGVhZCxcbiAgICBkcm9wUHJlZmV0Y2hSc2MgPyBudWxsIDogZXhpc3RpbmdDYWNoZU5vZGUucHJlZmV0Y2hIZWFkLFxuICAgIGV4aXN0aW5nQ2FjaGVOb2RlLnNjcm9sbFJlZlxuICApXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNhY2hlTm9kZUZvclNlZ21lbnQoXG4gIG5vdzogbnVtYmVyLFxuICB0cmVlOiBSb3V0ZVRyZWUsXG4gIHNlZWRSc2M6IFJlYWN0LlJlYWN0Tm9kZSB8IG51bGwsXG4gIG1ldGFkYXRhVmFyeVBhdGg6IFBhZ2VWYXJ5UGF0aCB8IG51bGwsXG4gIHNlZWRIZWFkOiBIZWFkRGF0YSB8IG51bGwsXG4gIGZyZXNobmVzczogRnJlc2huZXNzUG9saWN5LFxuICBkeW5hbWljU3RhbGVBdDogbnVtYmVyXG4pOiB7IGNhY2hlTm9kZTogQ2FjaGVOb2RlOyBuZWVkc0R5bmFtaWNSZXF1ZXN0OiBib29sZWFuIH0ge1xuICAvLyBDb25zdHJ1Y3QgYSBuZXcgQ2FjaGVOb2RlIHVzaW5nIGRhdGEgZnJvbSB0aGUgQkZDYWNoZSwgdGhlIGNsaWVudCdzXG4gIC8vIFNlZ21lbnQgQ2FjaGUsIG9yIHNlZWRlZCBmcm9tIGEgc2VydmVyIHJlc3BvbnNlLlxuICAvL1xuICAvLyBJZiB0aGVyZSdzIGEgY2FjaGUgbWlzcywgb3IgaWYgd2Ugb25seSBoYXZlIGEgcGFydGlhbCBoaXQsIHdlJ2xsIHJlbmRlclxuICAvLyB0aGUgcGFydGlhbCBzdGF0ZSBpbW1lZGlhdGVseSwgYW5kIHNwYXduIGEgcmVxdWVzdCB0byB0aGUgc2VydmVyIHRvIGZpbGxcbiAgLy8gaW4gdGhlIG1pc3NpbmcgZGF0YS5cbiAgLy9cbiAgLy8gSWYgdGhlIHNlZ21lbnQgaXMgZnVsbHkgY2FjaGVkIG9uIHRoZSBjbGllbnQgYWxyZWFkeSwgd2UgY2FuIG9taXQgdGhpc1xuICAvLyBzZWdtZW50IGZyb20gdGhlIHNlcnZlciByZXF1ZXN0LlxuICAvL1xuICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgYSBkeW5hbWljIGRhdGEgcmVzcG9uc2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbmF2aWdhdGlvbixcbiAgLy8gYXMgaW4gdGhlIGNhc2Ugb2YgYSBTZXJ2ZXIgQWN0aW9uLWluaXRpYXRlZCByZWRpcmVjdCBvciByZWZyZXNoLCB3ZSBtYXlcbiAgLy8gYWxzbyBiZSBhYmxlIHRvIHVzZSB0aGF0IGRhdGEgd2l0aG91dCBzcGF3bmluZyBhIG5ldyByZXF1ZXN0LiAoVGhpcyBpc1xuICAvLyByZWZlcnJlZCB0byBhcyB0aGUgXCJzZWVkXCIgZGF0YS4pXG5cbiAgY29uc3QgaXNQYWdlID0gdHJlZS5pc1BhZ2VcblxuICAvLyBEdXJpbmcgY2VydGFpbiBraW5kcyBvZiBuYXZpZ2F0aW9ucywgd2UgbWF5IGJlIGFibGUgdG8gcmVuZGVyIGZyb21cbiAgLy8gdGhlIEJGQ2FjaGUuXG4gIHN3aXRjaCAoZnJlc2huZXNzKSB7XG4gICAgY2FzZSBGcmVzaG5lc3NQb2xpY3kuRGVmYXVsdDoge1xuICAgICAgLy8gQ2hlY2sgQkZDYWNoZSBkdXJpbmcgcmVndWxhciBuYXZpZ2F0aW9ucy4gVGhlIGVudHJ5J3Mgc3RhbGVBdFxuICAgICAgLy8gZGV0ZXJtaW5lcyB3aGV0aGVyIGl0J3Mgc3RpbGwgZnJlc2guIFRoaXMgaXMgdXNlZCB3aGVuXG4gICAgICAvLyBzdGFsZVRpbWVzLmR5bmFtaWMgaXMgY29uZmlndXJlZCBnbG9iYWxseSBvciB3aGVuIGEgcGFnZSBleHBvcnRzXG4gICAgICAvLyB1bnN0YWJsZV9keW5hbWljU3RhbGVUaW1lIGZvciBwZXItcGFnZSBjb250cm9sLlxuICAgICAgY29uc3QgYmZjYWNoZUVudHJ5ID0gcmVhZEZyb21CRkNhY2hlRHVyaW5nUmVndWxhck5hdmlnYXRpb24oXG4gICAgICAgIG5vdyxcbiAgICAgICAgdHJlZS52YXJ5UGF0aFxuICAgICAgKVxuICAgICAgaWYgKGJmY2FjaGVFbnRyeSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNhY2hlTm9kZTogY3JlYXRlQ2FjaGVOb2RlKFxuICAgICAgICAgICAgYmZjYWNoZUVudHJ5LnJzYyxcbiAgICAgICAgICAgIGJmY2FjaGVFbnRyeS5wcmVmZXRjaFJzYyxcbiAgICAgICAgICAgIGJmY2FjaGVFbnRyeS5oZWFkLFxuICAgICAgICAgICAgYmZjYWNoZUVudHJ5LnByZWZldGNoSGVhZFxuICAgICAgICAgICksXG4gICAgICAgICAgbmVlZHNEeW5hbWljUmVxdWVzdDogZmFsc2UsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIGNhc2UgRnJlc2huZXNzUG9saWN5Lkh5ZHJhdGlvbjoge1xuICAgICAgLy8gVGhpcyBpcyBub3QgcmVsYXRlZCB0byB0aGUgQkZDYWNoZSBidXQgaXQgaXMgYSBzcGVjaWFsIGNhc2UuXG4gICAgICAvL1xuICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIHNwYXduIG5ldHdvcmsgcmVxdWVzdHMgZHVyaW5nIGh5ZHJhdGlvbi4gV2UgbXVzdCB0cmVhdFxuICAgICAgLy8gdGhlIGluaXRpYWwgcGF5bG9hZCBhcyBhdXRob3JpdGF0aXZlLCBiZWNhdXNlIHRoZSBpbml0aWFsIHBhZ2UgbG9hZCBpc1xuICAgICAgLy8gdXNlZCBhcyBhIGxhc3QtZGl0Y2ggbWVjaGFuaXNtIGZvciByZWNvdmVyaW5nIHRoZSBhcHAuXG4gICAgICAvL1xuICAgICAgLy8gVGhpcyBpcyBhbHNvIGFuIGltcG9ydGFudCBzYWZldHkgY2hlY2sgYmVjYXVzZSBpZiB0aGlzIGxlYWtzIGludG8gdGhlXG4gICAgICAvLyBzZXJ2ZXIgcmVuZGVyaW5nIHBhdGggKHdoaWNoIHRoZW9yZXRpY2FsbHkgaXQgbmV2ZXIgc2hvdWxkIGJlY2F1c2UgdGhlXG4gICAgICAvLyBzZXJ2ZXIgcGF5bG9hZCBzaG91bGQgYmUgY29uc2lzdGVudCksIHRoZSBzZXJ2ZXIgd291bGQgaGFuZyBiZWNhdXNlIHRoZXNlXG4gICAgICAvLyBwcm9taXNlcyB3b3VsZCBuZXZlciByZXNvbHZlLlxuICAgICAgLy9cbiAgICAgIC8vIFRPRE86IFRoZXJlIGlzIGFuIGV4aXN0aW5nIGNhc2Ugd2hlcmUgdGhlIGdsb2JhbCBcIm5vdCBmb3VuZFwiIGJvdW5kYXJ5XG4gICAgICAvLyB0cmlnZ2VycyB0aGlzIHBhdGguIEJ1dCBpdCBkb2VzIHJlbmRlciBjb3JyZWN0bHkgZGVzcGl0ZSB0aGF0LiBUaGF0J3MgYW5cbiAgICAgIC8vIHVudXN1YWwgcmVuZGVyIHBhdGggc28gaXQncyBub3Qgc3VycHJpc2luZywgYnV0IHdlIHNob3VsZCBsb29rIGludG9cbiAgICAgIC8vIG1vZGVsaW5nIGl0IGluIGEgbW9yZSBjb25zaXN0ZW50IHdheS4gU2VlIGFsc28gdGhlIC9fbm90Rm91bmQgc3BlY2lhbFxuICAgICAgLy8gY2FzZSBpbiB1cGRhdGVDYWNoZU5vZGVPbk5hdmlnYXRpb24uXG4gICAgICBjb25zdCByc2MgPSBzZWVkUnNjXG4gICAgICBjb25zdCBwcmVmZXRjaFJzYyA9IG51bGxcbiAgICAgIGNvbnN0IGhlYWQgPSBpc1BhZ2UgPyBzZWVkSGVhZCA6IG51bGxcbiAgICAgIGNvbnN0IHByZWZldGNoSGVhZCA9IG51bGxcbiAgICAgIHdyaXRlVG9CRkNhY2hlKFxuICAgICAgICBub3csXG4gICAgICAgIHRyZWUudmFyeVBhdGgsXG4gICAgICAgIHJzYyxcbiAgICAgICAgcHJlZmV0Y2hSc2MsXG4gICAgICAgIGhlYWQsXG4gICAgICAgIHByZWZldGNoSGVhZCxcbiAgICAgICAgZHluYW1pY1N0YWxlQXRcbiAgICAgIClcbiAgICAgIGlmIChpc1BhZ2UgJiYgbWV0YWRhdGFWYXJ5UGF0aCAhPT0gbnVsbCkge1xuICAgICAgICB3cml0ZUhlYWRUb0JGQ2FjaGUoXG4gICAgICAgICAgbm93LFxuICAgICAgICAgIG1ldGFkYXRhVmFyeVBhdGgsXG4gICAgICAgICAgaGVhZCxcbiAgICAgICAgICBwcmVmZXRjaEhlYWQsXG4gICAgICAgICAgZHluYW1pY1N0YWxlQXRcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2FjaGVOb2RlOiBjcmVhdGVDYWNoZU5vZGUocnNjLCBwcmVmZXRjaFJzYywgaGVhZCwgcHJlZmV0Y2hIZWFkKSxcbiAgICAgICAgbmVlZHNEeW5hbWljUmVxdWVzdDogZmFsc2UsXG4gICAgICB9XG4gICAgfVxuICAgIGNhc2UgRnJlc2huZXNzUG9saWN5Lkhpc3RvcnlUcmF2ZXJzYWw6XG4gICAgICBjb25zdCBiZmNhY2hlRW50cnkgPSByZWFkRnJvbUJGQ2FjaGUodHJlZS52YXJ5UGF0aClcbiAgICAgIGlmIChiZmNhY2hlRW50cnkgIT09IG51bGwpIHtcbiAgICAgICAgLy8gT25seSBzaG93IHByZWZldGNoZWQgZGF0YSBpZiB0aGUgZHluYW1pYyBkYXRhIGlzIHN0aWxsIHBlbmRpbmcuIFRoaXNcbiAgICAgICAgLy8gYXZvaWRzIGEgZmxhc2ggYmFjayB0byB0aGUgcHJlZmV0Y2ggc3RhdGUgaW4gYSBjYXNlIHdoZXJlIGl0J3MgaGlnaGx5XG4gICAgICAgIC8vIGxpa2VseSB0byBoYXZlIGFscmVhZHkgc3RyZWFtZWQgaW4uXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFRlaG5pY2FsbHksIHdoYXQgd2UncmUgYWN0dWFsbHkgY2hlY2tpbmcgaXMgd2hldGhlciB0aGUgZHluYW1pY1xuICAgICAgICAvLyBuZXR3b3JrIHJlc3BvbnNlIHdhcyByZWNlaXZlZC4gQnV0IHNpbmNlIGl0J3MgYSBzdHJlYW1pbmcgcmVzcG9uc2UsXG4gICAgICAgIC8vIHRoaXMgZG9lcyBub3QgbWVhbiB0aGF0IGFsbCB0aGUgZHluYW1pYyBkYXRhIGhhcyBmdWxseSBzdHJlYW1lZCBpbi5cbiAgICAgICAgLy8gSXQganVzdCBtZWFucyB0aGF0IF9zb21lXyBvZiB0aGUgZHluYW1pYyBkYXRhIHdhcyByZWNlaXZlZC4gQnV0IGFzIGFcbiAgICAgICAgLy8gaGV1cmlzdGljLCB3ZSBhc3N1bWUgdGhhdCB0aGUgcmVzdCBkeW5hbWljIGRhdGEgd2lsbCBzdHJlYW0gaW5cbiAgICAgICAgLy8gcXVpY2tseSwgc28gaXQncyBzdGlsbCBiZXR0ZXIgdG8gc2tpcCB0aGUgcHJlZmV0Y2ggc3RhdGUuXG4gICAgICAgIGNvbnN0IG9sZFJzYyA9IGJmY2FjaGVFbnRyeS5yc2NcbiAgICAgICAgY29uc3Qgb2xkUnNjRGlkUmVzb2x2ZSA9XG4gICAgICAgICAgIWlzRGVmZXJyZWRSc2Mob2xkUnNjKSB8fCBvbGRSc2Muc3RhdHVzICE9PSAncGVuZGluZydcbiAgICAgICAgY29uc3QgZHJvcFByZWZldGNoUnNjID0gb2xkUnNjRGlkUmVzb2x2ZVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNhY2hlTm9kZTogY3JlYXRlQ2FjaGVOb2RlKFxuICAgICAgICAgICAgYmZjYWNoZUVudHJ5LnJzYyxcbiAgICAgICAgICAgIGRyb3BQcmVmZXRjaFJzYyA/IG51bGwgOiBiZmNhY2hlRW50cnkucHJlZmV0Y2hSc2MsXG4gICAgICAgICAgICBiZmNhY2hlRW50cnkuaGVhZCxcbiAgICAgICAgICAgIGRyb3BQcmVmZXRjaFJzYyA/IG51bGwgOiBiZmNhY2hlRW50cnkucHJlZmV0Y2hIZWFkXG4gICAgICAgICAgKSxcbiAgICAgICAgICBuZWVkc0R5bmFtaWNSZXF1ZXN0OiBmYWxzZSxcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWtcbiAgICBjYXNlIEZyZXNobmVzc1BvbGljeS5SZWZyZXNoQWxsOlxuICAgIGNhc2UgRnJlc2huZXNzUG9saWN5LkhNUlJlZnJlc2g6XG4gICAgY2FzZSBGcmVzaG5lc3NQb2xpY3kuR2VzdHVyZTpcbiAgICAgIC8vIERvbid0IGNvbnN1bHQgdGhlIEJGQ2FjaGUuXG4gICAgICBicmVha1xuICAgIGRlZmF1bHQ6XG4gICAgICBmcmVzaG5lc3Mgc2F0aXNmaWVzIG5ldmVyXG4gICAgICBicmVha1xuICB9XG5cbiAgbGV0IGNhY2hlZFJzYzogUmVhY3QuUmVhY3ROb2RlIHwgbnVsbCA9IG51bGxcbiAgbGV0IGlzQ2FjaGVkUnNjUGFydGlhbDogYm9vbGVhbiA9IHRydWVcblxuICBjb25zdCBzZWdtZW50RW50cnkgPSByZWFkU2VnbWVudENhY2hlRW50cnkobm93LCB0cmVlLnZhcnlQYXRoKVxuICBpZiAoc2VnbWVudEVudHJ5ICE9PSBudWxsKSB7XG4gICAgc3dpdGNoIChzZWdtZW50RW50cnkuc3RhdHVzKSB7XG4gICAgICBjYXNlIEVudHJ5U3RhdHVzLkZ1bGZpbGxlZDoge1xuICAgICAgICAvLyBIYXBweSBwYXRoOiBhIGNhY2hlIGhpdFxuICAgICAgICBjYWNoZWRSc2MgPSBzZWdtZW50RW50cnkucnNjXG4gICAgICAgIGlzQ2FjaGVkUnNjUGFydGlhbCA9IHNlZ21lbnRFbnRyeS5pc1BhcnRpYWxcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgRW50cnlTdGF0dXMuUGVuZGluZzoge1xuICAgICAgICAvLyBXZSBoYXZlbid0IHJlY2VpdmVkIGRhdGEgZm9yIHRoaXMgc2VnbWVudCB5ZXQsIGJ1dCB0aGVyZSdzIGFscmVhZHlcbiAgICAgICAgLy8gYW4gaW4tcHJvZ3Jlc3MgcmVxdWVzdC4gU2luY2UgaXQncyBleHRyZW1lbHkgbGlrZWx5IHRvIGFycml2ZVxuICAgICAgICAvLyBiZWZvcmUgdGhlIGR5bmFtaWMgZGF0YSByZXNwb25zZSwgd2UgbWlnaHQgYXMgd2VsbCB1c2UgaXQuXG4gICAgICAgIGNvbnN0IHByb21pc2VGb3JGdWxmaWxsZWRFbnRyeSA9IHdhaXRGb3JTZWdtZW50Q2FjaGVFbnRyeShzZWdtZW50RW50cnkpXG4gICAgICAgIGNhY2hlZFJzYyA9IHByb21pc2VGb3JGdWxmaWxsZWRFbnRyeS50aGVuKChlbnRyeSkgPT5cbiAgICAgICAgICBlbnRyeSAhPT0gbnVsbCA/IGVudHJ5LnJzYyA6IG51bGxcbiAgICAgICAgKVxuICAgICAgICAvLyBCZWNhdXNlIHRoZSByZXF1ZXN0IGlzIHN0aWxsIHBlbmRpbmcsIHdlIHR5cGljYWxseSBkb24ndCBrbm93IHlldFxuICAgICAgICAvLyB3aGV0aGVyIHRoZSByZXNwb25zZSB3aWxsIGJlIHBhcnRpYWwuIFdlIHNob3VsZG4ndCBza2lwIHRoaXMgc2VnbWVudFxuICAgICAgICAvLyBkdXJpbmcgdGhlIGR5bmFtaWMgbmF2aWdhdGlvbiByZXF1ZXN0LiBPdGhlcndpc2UsIHdlIG1pZ2h0IG5lZWQgdG9cbiAgICAgICAgLy8gZG8geWV0IGFub3RoZXIgcmVxdWVzdCB0byBmaWxsIGluIHRoZSByZW1haW5pbmcgZGF0YSwgY3JlYXRpbmdcbiAgICAgICAgLy8gYSB3YXRlcmZhbGwuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFRoZSBvbmUgZXhjZXB0aW9uIGlzIGlmIHRoaXMgc2VnbWVudCBpcyBiZWluZyBmZXRjaGVkIHdpdGggdmlhXG4gICAgICAgIC8vIHByZWZldGNoPXt0cnVlfSAoaS5lLiB0aGUgXCJmb3JjZSBzdGFsZVwiIG9yIFwiZnVsbFwiIHN0cmF0ZWd5KS4gSWYgc28sXG4gICAgICAgIC8vIHdlIGNhbiBhc3N1bWUgdGhlIHJlc3BvbnNlIHdpbGwgYmUgZnVsbC4gVGhpcyBmaWVsZCBpcyBzZXQgdG8gYGZhbHNlYFxuICAgICAgICAvLyBmb3Igc3VjaCBzZWdtZW50cy5cbiAgICAgICAgaXNDYWNoZWRSc2NQYXJ0aWFsID0gc2VnbWVudEVudHJ5LmlzUGFydGlhbFxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSBFbnRyeVN0YXR1cy5FbXB0eTpcbiAgICAgIGNhc2UgRW50cnlTdGF0dXMuUmVqZWN0ZWQ6IHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgc2VnbWVudEVudHJ5IHNhdGlzZmllcyBuZXZlclxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIE5vdyBjb21iaW5lIHRoZSBjYWNoZWQgZGF0YSB3aXRoIHRoZSBzZWVkIGRhdGEgdG8gZGV0ZXJtaW5lIHdoYXQgd2UgY2FuXG4gIC8vIHJlbmRlciBpbW1lZGlhdGVseSwgdmVyc3VzIHdoYXQgbmVlZHMgdG8gc3RyZWFtIGluIGxhdGVyLlxuXG4gIC8vIEEgcGFydGlhbCBzdGF0ZSB0byBzaG93IGltbWVkaWF0ZWx5IHdoaWxlIHdlIHdhaXQgZm9yIHRoZSBmaW5hbCBkYXRhIHRvXG4gIC8vIGFycml2ZS4gSWYgYHJzY2AgaXMgYWxyZWFkeSBhIGNvbXBsZXRlIHZhbHVlIChub3QgcGFydGlhbCksIG9yIGlmIHdlXG4gIC8vIGRvbid0IGhhdmUgYW55IHVzZWZ1bCBwYXJ0aWFsIHN0YXRlLCB0aGlzIHdpbGwgYmUgYG51bGxgLlxuICBsZXQgcHJlZmV0Y2hSc2M6IFJlYWN0LlJlYWN0Tm9kZSB8IG51bGxcbiAgLy8gVGhlIGZpbmFsLCByZXNvbHZlZCBzZWdtZW50IGRhdGEuIElmIHRoZSBkYXRhIGlzIG1pc3NpbmcsIHRoaXMgd2lsbCBiZSBhXG4gIC8vIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgZXZlbnR1YWwgZGF0YS4gQSByZXNvbHZlZCB2YWx1ZSBvZiBgbnVsbGBcbiAgLy8gbWVhbnMgdGhlIGRhdGEgZmFpbGVkIHRvIGxvYWQ7IHRoZSBMYXlvdXRSb3V0ZXIgd2lsbCBzdXNwZW5kIGluZGVmaW5pdGVseVxuICAvLyB1bnRpbCB0aGUgcm91dGVyIHVwZGF0ZXMgYWdhaW4gKHJlZmVyIHRvIGZpbmlzaE5hdmlnYXRpb25UYXNrKS5cbiAgbGV0IHJzYzogUmVhY3QuUmVhY3ROb2RlIHwgbnVsbFxuICBsZXQgZG9lc1NlZ21lbnROZWVkRHluYW1pY1JlcXVlc3Q6IGJvb2xlYW5cblxuICBpZiAoc2VlZFJzYyAhPT0gbnVsbCkge1xuICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhIGR5bmFtaWMgc2VydmVyIHJlc3BvbnNlIGZvciB0aGlzIHNlZ21lbnQuXG4gICAgaWYgKGlzQ2FjaGVkUnNjUGFydGlhbCkge1xuICAgICAgLy8gVGhlIHNlZWQgZGF0YSBtYXkgc3RpbGwgYmUgc3RyZWFtaW5nIGluLCBzbyBpdCdzIHdvcnRoIHNob3dpbmcgdGhlXG4gICAgICAvLyBwYXJ0aWFsIGNhY2hlZCBzdGF0ZSBpbiB0aGUgbWVhbnRpbWUuXG4gICAgICBwcmVmZXRjaFJzYyA9IGNhY2hlZFJzY1xuICAgICAgcnNjID0gc2VlZFJzY1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBXZSBhbHJlYWR5IGhhdmUgYSBjb21wbGV0ZWx5IGNhY2hlZCBzZWdtZW50LiBJZ25vcmUgdGhlIHNlZWQgZGF0YSxcbiAgICAgIC8vIHdoaWNoIG1heSBzdGlsbCBiZSBzdHJlYW1pbmcgaW4uIFRoaXMgc2hvdWxkbid0IGhhcHBlbiBpbiB0aGUgbm9ybWFsXG4gICAgICAvLyBjYXNlIGJlY2F1c2UgdGhlIGNsaWVudCB3aWxsIGluZm9ybSB0aGUgc2VydmVyIHdoaWNoIHNlZ21lbnRzIGFyZVxuICAgICAgLy8gYWxyZWFkeSBmdWxseSBjYWNoZWQsIGFuZCB0aGUgc2VydmVyIHdpbGwgc2tpcCByZW5kZXJpbmcgdGhlbS5cbiAgICAgIHByZWZldGNoUnNjID0gbnVsbFxuICAgICAgcnNjID0gY2FjaGVkUnNjXG4gICAgfVxuICAgIGRvZXNTZWdtZW50TmVlZER5bmFtaWNSZXF1ZXN0ID0gZmFsc2VcbiAgfSBlbHNlIHtcbiAgICBpZiAoaXNDYWNoZWRSc2NQYXJ0aWFsKSB7XG4gICAgICAvLyBUaGUgY2FjaGVkIGRhdGEgY29udGFpbnMgZHluYW1pYyBob2xlcywgb3IgaXQncyBtaXNzaW5nIGVudGlyZWx5LiBXZSdsbFxuICAgICAgLy8gc2hvdyB0aGUgcGFydGlhbCBzdGF0ZSBpbW1lZGlhdGVseSAoaWYgYXZhaWxhYmxlKSwgYW5kIHN0cmVhbSBpbiB0aGVcbiAgICAgIC8vIGZpbmFsIGRhdGEuXG4gICAgICAvL1xuICAgICAgLy8gQ3JlYXRlIGEgcGVuZGluZyBwcm9taXNlIHRoYXQgd2UgY2FuIGxhdGVyIHdyaXRlIHRvIHdoZW4gdGhlXG4gICAgICAvLyBkYXRhIGFycml2ZXMgZnJvbSB0aGUgc2VydmVyLlxuICAgICAgcHJlZmV0Y2hSc2MgPSBjYWNoZWRSc2NcbiAgICAgIHJzYyA9IGNyZWF0ZURlZmVycmVkUnNjKClcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhlIGRhdGEgaXMgZnVsbHkgY2FjaGVkLlxuICAgICAgcHJlZmV0Y2hSc2MgPSBudWxsXG4gICAgICByc2MgPSBjYWNoZWRSc2NcbiAgICB9XG4gICAgZG9lc1NlZ21lbnROZWVkRHluYW1pY1JlcXVlc3QgPSBpc0NhY2hlZFJzY1BhcnRpYWxcbiAgfVxuXG4gIC8vIElmIHRoaXMgaXMgYSBwYWdlIHNlZ21lbnQsIHdlIG5lZWQgdG8gZG8gdGhlIHNhbWUgZm9yIHRoZSBoZWFkLiBUaGlzXG4gIC8vIGZvbGxvd3MgYW5hbG9nb3VzIGxvZ2ljIHRvIHRoZSBzZWdtZW50IGRhdGEgYWJvdmUuXG4gIC8vIFRPRE86IFdlIGRvbid0IG5lZWQgdG8gc3RvcmUgdGhlIGhlYWQgb24gdGhlIHBhZ2Ugc2VnbWVudCdzIENhY2hlTm9kZTsgd2VcbiAgLy8gY2FuIGxpZnQgaXQgdG8gdGhlIG1haW4gc3RhdGUgb2JqZWN0LiBUaGVuIHdlIGNhbiBhbHNvIGRlbGV0ZVxuICAvLyBmaW5kSGVhZENhY2hlLlxuXG4gIGxldCBwcmVmZXRjaEhlYWQ6IEhlYWREYXRhIHwgbnVsbCA9IG51bGxcbiAgbGV0IGhlYWQ6IFJlYWN0LlJlYWN0Tm9kZSB8IG51bGwgPSBudWxsXG4gIGxldCBkb2VzSGVhZE5lZWREeW5hbWljUmVxdWVzdDogYm9vbGVhbiA9IGlzUGFnZVxuXG4gIGlmIChpc1BhZ2UpIHtcbiAgICBsZXQgY2FjaGVkSGVhZDogSGVhZERhdGEgfCBudWxsID0gbnVsbFxuICAgIGxldCBpc0NhY2hlZEhlYWRQYXJ0aWFsOiBib29sZWFuID0gdHJ1ZVxuICAgIGlmIChtZXRhZGF0YVZhcnlQYXRoICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBtZXRhZGF0YUVudHJ5ID0gcmVhZFNlZ21lbnRDYWNoZUVudHJ5KG5vdywgbWV0YWRhdGFWYXJ5UGF0aClcbiAgICAgIGlmIChtZXRhZGF0YUVudHJ5ICE9PSBudWxsKSB7XG4gICAgICAgIHN3aXRjaCAobWV0YWRhdGFFbnRyeS5zdGF0dXMpIHtcbiAgICAgICAgICBjYXNlIEVudHJ5U3RhdHVzLkZ1bGZpbGxlZDoge1xuICAgICAgICAgICAgY2FjaGVkSGVhZCA9IG1ldGFkYXRhRW50cnkucnNjXG4gICAgICAgICAgICBpc0NhY2hlZEhlYWRQYXJ0aWFsID0gbWV0YWRhdGFFbnRyeS5pc1BhcnRpYWxcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgRW50cnlTdGF0dXMuUGVuZGluZzoge1xuICAgICAgICAgICAgY2FjaGVkSGVhZCA9IHdhaXRGb3JTZWdtZW50Q2FjaGVFbnRyeShtZXRhZGF0YUVudHJ5KS50aGVuKFxuICAgICAgICAgICAgICAoZW50cnkpID0+IChlbnRyeSAhPT0gbnVsbCA/IGVudHJ5LnJzYyA6IG51bGwpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBpc0NhY2hlZEhlYWRQYXJ0aWFsID0gbWV0YWRhdGFFbnRyeS5pc1BhcnRpYWxcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgRW50cnlTdGF0dXMuRW1wdHk6XG4gICAgICAgICAgY2FzZSBFbnRyeVN0YXR1cy5SZWplY3RlZDoge1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgbWV0YWRhdGFFbnRyeSBzYXRpc2ZpZXMgbmV2ZXJcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9PUFRJTUlTVElDX1JPVVRJTkcgJiYgaXNDYWNoZWRIZWFkUGFydGlhbCkge1xuICAgICAgLy8gVE9ETzogV2hlbiBvcHRpbWlzdGljIHJvdXRpbmcgaXMgZW5hYmxlZCwgZG9uJ3QgYmxvY2sgb24gd2FpdGluZyBmb3JcbiAgICAgIC8vIHRoZSB2aWV3cG9ydCB0byByZXNvbHZlLiBUaGlzIGlzIGEgdGVtcG9yYXJ5IHdvcmthcm91bmQgdW50aWwgVmFyeVxuICAgICAgLy8gUGFyYW1zIGFyZSB0cmFja2VkIHdoZW4gcmVuZGVyaW5nIHRoZSBtZXRhZGF0YS4gV2UnbGwgZml4IGl0IGJlZm9yZVxuICAgICAgLy8gdGhpcyBmZWF0dXJlIGlzIHN0YWJsZS4gSG93ZXZlciwgaXQncyBub3QgYSBjcml0aWNhbCBpc3N1ZSBiZWNhdXNlIDEpXG4gICAgICAvLyBpdCB3aWxsIHN0cmVhbSBpbiBldmVudHVhbGx5IGFueXdheSAyKSBtZXRhZGF0YSBpcyB3cmFwcGVkIGluIGFuXG4gICAgICAvLyBpbnRlcm5hbCBTdXNwZW5zZSBib3VuZGFyeSwgc28gaXMgYWx3YXlzIG5vbi1ibG9ja2luZzsgdGhpcyBvbmx5XG4gICAgICAvLyBhZmZlY3RzIHRoZSB2aWV3cG9ydCBub2RlLCB3aGljaCBpcyBtZWFudCB0byBibG9ja2luZywgaG93ZXZlci4uLiAzKVxuICAgICAgLy8gYmVmb3JlIFNlZ21lbnQgQ2FjaGUgbGFuZGVkIHRoaXMgd2Fzbid0IGFsd2F5cyB0aGUgY2FzZSwgYW55d2F5LCBzb1xuICAgICAgLy8gaXQncyB1bmxpa2VseSB0aGF0IG1hbnkgcGVvcGxlIGFyZSByZWx5aW5nIG9uIHRoaXMgYmVoYXZpb3IuIFN0aWxsLFxuICAgICAgLy8gd2lsbCBiZSBmaXhlZCBiZWZvcmUgc3RhYmxlLiBJdCdzIHRoZSB2ZXJ5IG5leHQgc3RlcCBpbiB0aGUgc2VxdWVuY2Ugb2ZcbiAgICAgIC8vIHdvcmsgb24gdGhpcyBwcm9qZWN0LlxuICAgICAgLy9cbiAgICAgIC8vIFRoaXMgbGluZSBvZiBjb2RlIHdvcmtzIGJlY2F1c2UgdGhlIEFwcCBSb3V0ZXIgdHJlYXRzIGBudWxsYCBhc1xuICAgICAgLy8gXCJubyByZW5kZXJhYmxlIGhlYWQgYXZhaWxhYmxlXCIsIHJhdGhlciB0aGFuIGFuIGVtcHR5IGhlYWQuIFJlYWN0IHRyZWF0c1xuICAgICAgLy8gYW4gZW1wdHkgc3RyaW5nIGFzIGVtcHR5LlxuICAgICAgY2FjaGVkSGVhZCA9ICcnXG4gICAgfVxuXG4gICAgaWYgKHNlZWRIZWFkICE9PSBudWxsKSB7XG4gICAgICBpZiAoaXNDYWNoZWRIZWFkUGFydGlhbCkge1xuICAgICAgICBwcmVmZXRjaEhlYWQgPSBjYWNoZWRIZWFkXG4gICAgICAgIGhlYWQgPSBzZWVkSGVhZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJlZmV0Y2hIZWFkID0gbnVsbFxuICAgICAgICBoZWFkID0gY2FjaGVkSGVhZFxuICAgICAgfVxuICAgICAgZG9lc0hlYWROZWVkRHluYW1pY1JlcXVlc3QgPSBmYWxzZVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXNDYWNoZWRIZWFkUGFydGlhbCkge1xuICAgICAgICBwcmVmZXRjaEhlYWQgPSBjYWNoZWRIZWFkXG4gICAgICAgIGhlYWQgPSBjcmVhdGVEZWZlcnJlZFJzYygpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcmVmZXRjaEhlYWQgPSBudWxsXG4gICAgICAgIGhlYWQgPSBjYWNoZWRIZWFkXG4gICAgICB9XG4gICAgICBkb2VzSGVhZE5lZWREeW5hbWljUmVxdWVzdCA9IGlzQ2FjaGVkSGVhZFBhcnRpYWxcbiAgICB9XG4gIH1cblxuICAvLyBOb3cgdGhhdCB3ZSdyZSBjcmVhdGluZyBhIG5ldyBzZWdtZW50LCB3cml0ZSBpdHMgZGF0YSB0byB0aGUgQkZDYWNoZS4gQVxuICAvLyBzdWJzZXF1ZW50IGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9uIHdpbGwgcmV1c2UgdGhpcyBzYW1lIGRhdGEsIHVudGlsIG9yXG4gIC8vIHVubGVzcyBpdCdzIGNsZWFyZWQgYnkgYSByZWZyZXNoL3JldmFsaWRhdGlvbi5cbiAgLy9cbiAgLy8gU2tpcCBCRkNhY2hlIHdyaXRlcyBmb3Igb3B0aW1pc3RpYyBuYXZpZ2F0aW9ucyBzaW5jZSB0aGV5IGFyZSB0cmFuc2llbnRcbiAgLy8gYW5kIHdpbGwgYmUgcmVwbGFjZWQgYnkgdGhlIGNhbm9uaWNhbCBuYXZpZ2F0aW9uLlxuICBpZiAoZnJlc2huZXNzICE9PSBGcmVzaG5lc3NQb2xpY3kuR2VzdHVyZSkge1xuICAgIHdyaXRlVG9CRkNhY2hlKFxuICAgICAgbm93LFxuICAgICAgdHJlZS52YXJ5UGF0aCxcbiAgICAgIHJzYyxcbiAgICAgIHByZWZldGNoUnNjLFxuICAgICAgaGVhZCxcbiAgICAgIHByZWZldGNoSGVhZCxcbiAgICAgIGR5bmFtaWNTdGFsZUF0XG4gICAgKVxuICAgIGlmIChpc1BhZ2UgJiYgbWV0YWRhdGFWYXJ5UGF0aCAhPT0gbnVsbCkge1xuICAgICAgd3JpdGVIZWFkVG9CRkNhY2hlKFxuICAgICAgICBub3csXG4gICAgICAgIG1ldGFkYXRhVmFyeVBhdGgsXG4gICAgICAgIGhlYWQsXG4gICAgICAgIHByZWZldGNoSGVhZCxcbiAgICAgICAgZHluYW1pY1N0YWxlQXRcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNhY2hlTm9kZTogY3JlYXRlQ2FjaGVOb2RlKHJzYywgcHJlZmV0Y2hSc2MsIGhlYWQsIHByZWZldGNoSGVhZCksXG4gICAgLy8gVE9ETzogV2Ugc2hvdWxkIHN0b3JlIHRoaXMgZmllbGQgb24gdGhlIENhY2hlTm9kZSBpdHNlbGYuIEkgdGhpbmsgd2UgY2FuXG4gICAgLy8gcHJvYmFibHkgdW5pZnkgTmF2aWdhdGlvblRhc2ssIENhY2hlTm9kZSwgYW5kIERlZmVycmVkUnNjIGludG8gYVxuICAgIC8vIHNpbmdsZSB0eXBlLiBPciBhdCBsZWFzdCBDYWNoZU5vZGUgYW5kIERlZmVycmVkUnNjLlxuICAgIG5lZWRzRHluYW1pY1JlcXVlc3Q6XG4gICAgICBkb2VzU2VnbWVudE5lZWREeW5hbWljUmVxdWVzdCB8fCBkb2VzSGVhZE5lZWREeW5hbWljUmVxdWVzdCxcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVDYWNoZU5vZGUoXG4gIHJzYzogUmVhY3QuUmVhY3ROb2RlIHwgbnVsbCxcbiAgcHJlZmV0Y2hSc2M6IFJlYWN0LlJlYWN0Tm9kZSB8IG51bGwsXG4gIGhlYWQ6IFJlYWN0LlJlYWN0Tm9kZSB8IG51bGwsXG4gIHByZWZldGNoSGVhZDogSGVhZERhdGEgfCBudWxsLFxuICBzY3JvbGxSZWY6IFNjcm9sbFJlZiB8IG51bGwgPSBudWxsXG4pOiBDYWNoZU5vZGUge1xuICByZXR1cm4ge1xuICAgIHJzYyxcbiAgICBwcmVmZXRjaFJzYyxcbiAgICBoZWFkLFxuICAgIHByZWZldGNoSGVhZCxcbiAgICBzbG90czogbnVsbCxcbiAgICBzY3JvbGxSZWYsXG4gIH1cbn1cblxuLy8gUmVwcmVzZW50cyB3aGV0aGVyIHRoZSBwcmV2aXVvcyBuYXZpZ2F0aW9uIHJlc3VsdGVkIGluIGEgcm91dGUgdHJlZSBtaXNtYXRjaC5cbi8vIEEgbWlzbWF0Y2ggcmVzdWx0cyBpbiBhIHJlZnJlc2ggb2YgdGhlIHBhZ2UuIElmIHRoZXJlIGFyZSB0d28gc3VjY2Vzc2l2ZVxuLy8gbWlzbWF0Y2hlcywgd2Ugd2lsbCBmYWxsIGJhY2sgdG8gYW4gTVBBIG5hdmlnYXRpb24sIHRvIHByZXZlbnQgYSByZXRyeSBsb29wLlxubGV0IHByZXZpb3VzTmF2aWdhdGlvbkRpZE1pc21hdGNoID0gZmFsc2VcblxuLy8gV3JpdGVzIGEgZHluYW1pYyBzZXJ2ZXIgcmVzcG9uc2UgaW50byB0aGUgdHJlZSBjcmVhdGVkIGJ5XG4vLyB1cGRhdGVDYWNoZU5vZGVPbk5hdmlnYXRpb24uIEFsbCBwZW5kaW5nIHByb21pc2VzIHRoYXQgd2VyZSBzcGF3bmVkIGJ5IHRoZVxuLy8gbmF2aWdhdGlvbiB3aWxsIGJlIHJlc29sdmVkLCBlaXRoZXIgd2l0aCBkeW5hbWljIGRhdGEgZnJvbSB0aGUgc2VydmVyLCBvclxuLy8gYG51bGxgIHRvIGluZGljYXRlIHRoYXQgdGhlIGRhdGEgaXMgbWlzc2luZy5cbi8vXG4vLyBBIGBudWxsYCB2YWx1ZSB3aWxsIHRyaWdnZXIgYSBsYXp5IGZldGNoIGR1cmluZyByZW5kZXIsIHdoaWNoIHdpbGwgdGhlbiBwYXRjaFxuLy8gdXAgdGhlIHRyZWUgdXNpbmcgdGhlIHNhbWUgbWVjaGFuaXNtIGFzIHRoZSBub24tUFBSIGltcGxlbWVudGF0aW9uXG4vLyAoc2VydmVyUGF0Y2hSZWR1Y2VyKS5cbi8vXG4vLyBVc3VhbGx5LCB0aGUgc2VydmVyIHdpbGwgcmVzcG9uZCB3aXRoIGV4YWN0bHkgdGhlIHN1YnNldCBvZiBkYXRhIHRoYXQgd2UncmVcbi8vIHdhaXRpbmcgZm9yIOKAlCBldmVyeXRoaW5nIGJlbG93IHRoZSBuZWFyZXN0IHNoYXJlZCBsYXlvdXQuIEJ1dCB0ZWNobmljYWxseSxcbi8vIHRoZSBzZXJ2ZXIgY2FuIHJldHVybiBhbnl0aGluZyBpdCB3YW50cy5cbi8vXG4vLyBUaGlzIGRvZXMgX25vdF8gY3JlYXRlIGEgbmV3IHRyZWU7IGl0IG1vZGlmaWVzIHRoZSBleGlzdGluZyBvbmUgaW4gcGxhY2UuXG4vLyBXaGljaCBtZWFucyBpdCBtdXN0IGZvbGxvdyB0aGUgU3VzcGVuc2UgcnVsZXMgb2YgY2FjaGUgc2FmZXR5LlxuZXhwb3J0IGZ1bmN0aW9uIHNwYXduRHluYW1pY1JlcXVlc3RzKFxuICB0YXNrOiBOYXZpZ2F0aW9uVGFzayxcbiAgcHJpbWFyeVVybDogVVJMLFxuICBuZXh0VXJsOiBzdHJpbmcgfCBudWxsLFxuICBmcmVzaG5lc3NQb2xpY3k6IEZyZXNobmVzc1BvbGljeSxcbiAgYWNjdW11bGF0aW9uOiBOYXZpZ2F0aW9uUmVxdWVzdEFjY3VtdWxhdGlvbixcbiAgLy8gVGhlIHJvdXRlIGNhY2hlIGVudHJ5IHVzZWQgZm9yIHRoaXMgbmF2aWdhdGlvbiwgaWYgaXQgY2FtZSBmcm9tIHJvdXRlXG4gIC8vIHByZWRpY3Rpb24uIFBhc3NlZCB0aHJvdWdoIHNvIGl0IGNhbiBiZSBtYXJrZWQgYXMgaGF2aW5nIGEgZHluYW1pYyByZXdyaXRlXG4gIC8vIGlmIHRoZSBzZXJ2ZXIgcmV0dXJucyBhIGRpZmZlcmVudCBwYXRobmFtZSB0aGFuIGV4cGVjdGVkIChpbmRpY2F0aW5nXG4gIC8vIGR5bmFtaWMgcmV3cml0ZSBiZWhhdmlvciB0aGF0IHZhcmllcyBieSBwYXJhbSB2YWx1ZSkuXG4gIHJvdXRlQ2FjaGVFbnRyeTogRnVsZmlsbGVkUm91dGVDYWNoZUVudHJ5IHwgbnVsbCxcbiAgLy8gVGhlIG9yaWdpbmFsIG5hdmlnYXRpb24ncyBwdXNoL3JlcGxhY2UgaW50ZW50LiBUaHJlYWRlZCB0aHJvdWdoIHRvIHRoZVxuICAvLyBzZXJ2ZXItcGF0Y2ggcmV0cnkgbG9naWMgc28gaXQgY2FuIGluaGVyaXQgdGhlIGludGVudCBpZiB0aGUgb3JpZ2luYWxcbiAgLy8gdHJhbnNpdGlvbiBoYXNuJ3QgY29tbWl0dGVkIHlldC5cbiAgbmF2aWdhdGVUeXBlOiAncHVzaCcgfCAncmVwbGFjZSdcbik6IHZvaWQge1xuICBjb25zdCBkeW5hbWljUmVxdWVzdFRyZWUgPSB0YXNrLmR5bmFtaWNSZXF1ZXN0VHJlZVxuICBpZiAoZHluYW1pY1JlcXVlc3RUcmVlID09PSBudWxsKSB7XG4gICAgLy8gVGhpcyBuYXZpZ2F0aW9uIHdhcyBmdWxseSBjYWNoZWQuIFRoZXJlIGFyZSBubyBkeW5hbWljIHJlcXVlc3RzIHRvIHNwYXduLlxuICAgIHByZXZpb3VzTmF2aWdhdGlvbkRpZE1pc21hdGNoID0gZmFsc2VcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBub3QgYW4gYXN5bmMgZnVuY3Rpb24gdG8gZGlzY291cmFnZSB0aGUgY2FsbGVyIGZyb21cbiAgLy8gYXdhaXRpbmcgdGhlIHJlc3VsdC4gQW55IHN1YnNlcXVlbnQgYXN5bmMgb3BlcmF0aW9ucyBzcGF3bmVkIGJ5IHRoaXNcbiAgLy8gZnVuY3Rpb24gc2hvdWxkIHJlc3VsdCBpbiBhIHNlcGFyYXRlIG5hdmlnYXRpb24gdGFzaywgcmF0aGVyIHRoYW5cbiAgLy8gYmxvY2sgdGhlIG9yaWdpbmFsIG9uZS5cbiAgLy9cbiAgLy8gSW4gdGhpcyBmdW5jdGlvbiB3ZSBzcGF3biAoYnV0IGRvIG5vdCBhd2FpdCkgYWxsIHRoZSBuZXR3b3JrIHJlcXVlc3RzIHRoYXRcbiAgLy8gYmxvY2sgdGhlIG5hdmlnYXRpb24sIGFuZCBjb2xsZWN0IHRoZSBwcm9taXNlcy4gVGhlIG5leHQgZnVuY3Rpb24sXG4gIC8vIGBmaW5pc2hOYXZpZ2F0aW9uVGFza2AsIGNhbiBhd2FpdCB0aGUgcHJvbWlzZXMgaW4gYW55IG9yZGVyIHdpdGhvdXRcbiAgLy8gYWNjaWRlbnRhbGx5IGludHJvZHVjaW5nIGEgbmV0d29yayB3YXRlcmZhbGwuXG4gIGNvbnN0IHByaW1hcnlSZXF1ZXN0UHJvbWlzZSA9IGZldGNoTWlzc2luZ0R5bmFtaWNEYXRhKFxuICAgIHRhc2ssXG4gICAgZHluYW1pY1JlcXVlc3RUcmVlLFxuICAgIHByaW1hcnlVcmwsXG4gICAgbmV4dFVybCxcbiAgICBmcmVzaG5lc3NQb2xpY3ksXG4gICAgcm91dGVDYWNoZUVudHJ5XG4gIClcblxuICBjb25zdCBzZXBhcmF0ZVJlZnJlc2hVcmxzID0gYWNjdW11bGF0aW9uLnNlcGFyYXRlUmVmcmVzaFVybHNcbiAgbGV0IHJlZnJlc2hSZXF1ZXN0UHJvbWlzZXM6IEFycmF5PFxuICAgIFJldHVyblR5cGU8dHlwZW9mIGZldGNoTWlzc2luZ0R5bmFtaWNEYXRhPlxuICA+IHwgbnVsbCA9IG51bGxcbiAgaWYgKHNlcGFyYXRlUmVmcmVzaFVybHMgIT09IG51bGwpIHtcbiAgICAvLyBUaGVyZSBhcmUgbXVsdGlwbGUgVVJMcyB0aGF0IHdlIG5lZWQgdG8gcmVxdWVzdCB0aGUgZGF0YSBmcm9tLiBUaGlzXG4gICAgLy8gaGFwcGVucyB3aGVuIGEgXCJkZWZhdWx0XCIgcGFyYWxsZWwgcm91dGUgc2xvdCBpcyBwcmVzZW50IGluIHRoZSB0cmVlLCBhbmRcbiAgICAvLyBpdHMgZGF0YSBjYW5ub3QgYmUgZmV0Y2hlZCBmcm9tIHRoZSBjdXJyZW50IHJvdXRlLiBXZSBuZWVkIHRvIHNwbGl0IHRoZVxuICAgIC8vIGNvbWJpbmVkIGR5bmFtaWMgcmVxdWVzdCB0cmVlIGludG8gc2VwYXJhdGUgcmVxdWVzdHMgcGVyIFVSTC5cblxuICAgIC8vIFRPRE86IENyZWF0ZSBhIHNjb3BlZCBkeW5hbWljIHJlcXVlc3QgdHJlZSB0aGF0IG9taXRzIGFueXRoaW5nIHRoYXRcbiAgICAvLyBpcyBub3QgcmVsZXZhbnQgdG8gdGhlIGdpdmVuIFVSTC4gV2l0aG91dCBkb2luZyB0aGlzLCB0aGUgc2VydmVyIG1heVxuICAgIC8vIHNvbWV0aW1lcyByZW5kZXIgbW9yZSBkYXRhIHRoYW4gbmVjZXNzYXJ5OyB0aGlzIGlzIG5vdCBhIHJlZ3Jlc3Npb25cbiAgICAvLyBjb21wYXJlZCB0byB0aGUgcHJlLVNlZ21lbnQgQ2FjaGUgaW1wbGVtZW50YXRpb24sIHRob3VnaCwganVzdCBhblxuICAgIC8vIG9wdGltaXphdGlvbiB3ZSBjYW4gbWFrZSBpbiB0aGUgZnV0dXJlLlxuXG4gICAgLy8gQ29uc3RydWN0IGEgcmVxdWVzdCB0cmVlIGZvciBlYWNoIGFkZGl0aW9uYWwgcmVmcmVzaCBVUkwuIFRoaXMgd2lsbFxuICAgIC8vIHBydW5lIGF3YXkgZXZlcnl0aGluZyBleGNlcHQgdGhlIHBhcnRzIG9mIHRoZSB0cmVlIHRoYXQgbWF0Y2ggdGhlXG4gICAgLy8gZ2l2ZW4gcmVmcmVzaCBVUkwuXG4gICAgcmVmcmVzaFJlcXVlc3RQcm9taXNlcyA9IFtdXG4gICAgY29uc3QgY2Fub25pY2FsVXJsID0gY3JlYXRlSHJlZkZyb21VcmwocHJpbWFyeVVybClcbiAgICBmb3IgKGNvbnN0IHJlZnJlc2hVcmwgb2Ygc2VwYXJhdGVSZWZyZXNoVXJscykge1xuICAgICAgaWYgKHJlZnJlc2hVcmwgPT09IGNhbm9uaWNhbFVybCkge1xuICAgICAgICAvLyBXZSBhbHJlYWR5IGluaXRpYXRlZCBhIHJlcXVlc3QgZm9yIHRoZSB0aGlzIFVSTCwgYWJvdmUuIFNraXAgaXQuXG4gICAgICAgIC8vIFRPRE86IFRoaXMgb25seSBoYXBwZW5zIGJlY2F1c2UgdGhlIG1haW4gVVJMIGlzIG5vdCB0cmFja2VkIGFzXG4gICAgICAgIC8vIHBhcnQgb2YgdGhlIHNlcGFyYXRlUmVmcmVzaFVSTHMgc2V0LiBUaGVyZSdzIHByb2JhYmx5IGEgYmV0dGVyIHdheVxuICAgICAgICAvLyB0byBzdHJ1Y3R1cmUgdGhpcyBzbyB0aGlzIGNhc2UgZG9lc24ndCBoYXBwZW4uXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICAvLyBUT0RPOiBDcmVhdGUgYSBzY29wZWQgZHluYW1pYyByZXF1ZXN0IHRyZWUgdGhhdCBvbWl0cyBhbnl0aGluZyB0aGF0XG4gICAgICAvLyBpcyBub3QgcmVsZXZhbnQgdG8gdGhlIGdpdmVuIFVSTC4gV2l0aG91dCBkb2luZyB0aGlzLCB0aGUgc2VydmVyIG1heVxuICAgICAgLy8gc29tZXRpbWVzIHJlbmRlciBtb3JlIGRhdGEgdGhhbiBuZWNlc3Nhcnk7IHRoaXMgaXMgbm90IGEgcmVncmVzc2lvblxuICAgICAgLy8gY29tcGFyZWQgdG8gdGhlIHByZS1TZWdtZW50IENhY2hlIGltcGxlbWVudGF0aW9uLCB0aG91Z2gsIGp1c3QgYW5cbiAgICAgIC8vIG9wdGltaXphdGlvbiB3ZSBjYW4gbWFrZSBpbiB0aGUgZnV0dXJlLlxuICAgICAgLy8gY29uc3Qgc2NvcGVkRHluYW1pY1JlcXVlc3RUcmVlID0gc3BsaXRUYXNrQnlVUkwodGFzaywgcmVmcmVzaFVybClcbiAgICAgIGNvbnN0IHNjb3BlZER5bmFtaWNSZXF1ZXN0VHJlZSA9IGR5bmFtaWNSZXF1ZXN0VHJlZVxuICAgICAgaWYgKHNjb3BlZER5bmFtaWNSZXF1ZXN0VHJlZSAhPT0gbnVsbCkge1xuICAgICAgICByZWZyZXNoUmVxdWVzdFByb21pc2VzLnB1c2goXG4gICAgICAgICAgZmV0Y2hNaXNzaW5nRHluYW1pY0RhdGEoXG4gICAgICAgICAgICB0YXNrLFxuICAgICAgICAgICAgc2NvcGVkRHluYW1pY1JlcXVlc3RUcmVlLFxuICAgICAgICAgICAgbmV3IFVSTChyZWZyZXNoVXJsLCBsb2NhdGlvbi5vcmlnaW4pLFxuICAgICAgICAgICAgLy8gVE9ETzogSnVzdCBub3RpY2VkIHRoYXQgdGhpcyBzaG91bGQgYWN0dWFsbHkgdGhlIE5leHQtVXJsIGF0IHRoZVxuICAgICAgICAgICAgLy8gdGltZSB0aGUgcmVmcmVzaCBVUkwgd2FzIHNldCwgbm90IHRoZSBjdXJyZW50IE5leHQtVXJsLiBOZWVkIHRvXG4gICAgICAgICAgICAvLyBzdGFydCB0cmFja2luZyB0aGlzIGFsb25nc2lkZSB0aGUgcmVmcmVzaCBVUkwuIEluIHRoZSBtZWFudGltZSxcbiAgICAgICAgICAgIC8vIGlmIGEgcmVmcmVzaCBmYWlscyBkdWUgdG8gYSBtaXNtYXRjaCwgaXQgd2lsbCB0cmlnZ2VyIGFcbiAgICAgICAgICAgIC8vIGhhcmQgcmVmcmVzaC5cbiAgICAgICAgICAgIG5leHRVcmwsXG4gICAgICAgICAgICBmcmVzaG5lc3NQb2xpY3ksXG4gICAgICAgICAgICByb3V0ZUNhY2hlRW50cnlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBGdXJ0aGVyIGFzeW5jIG9wZXJhdGlvbnMgYXJlIG1vdmVkIGludG8gdGhpcyBzZXBhcmF0ZSBmdW5jdGlvbiB0b1xuICAvLyBkaXNjb3VyYWdlIHNlcXVlbnRpYWwgbmV0d29yayByZXF1ZXN0cy5cbiAgY29uc3Qgdm9pZFByb21pc2UgPSBmaW5pc2hOYXZpZ2F0aW9uVGFzayhcbiAgICB0YXNrLFxuICAgIG5leHRVcmwsXG4gICAgcHJpbWFyeVJlcXVlc3RQcm9taXNlLFxuICAgIHJlZnJlc2hSZXF1ZXN0UHJvbWlzZXMsXG4gICAgcm91dGVDYWNoZUVudHJ5LFxuICAgIG5hdmlnYXRlVHlwZVxuICApXG4gIC8vIGBmaW5pc2hOYXZpZ2F0aW9uVGFza2AgaXMgcmVzcG9uc2libGUgZm9yIGVycm9yIGhhbmRsaW5nLCBzbyB3ZSBjYW4gYXR0YWNoXG4gIC8vIG5vb3AgY2FsbGJhY2tzIHRvIHRoaXMgcHJvbWlzZS5cbiAgdm9pZFByb21pc2UudGhlbihub29wLCBub29wKVxufVxuXG5hc3luYyBmdW5jdGlvbiBmaW5pc2hOYXZpZ2F0aW9uVGFzayhcbiAgdGFzazogTmF2aWdhdGlvblRhc2ssXG4gIG5leHRVcmw6IHN0cmluZyB8IG51bGwsXG4gIHByaW1hcnlSZXF1ZXN0UHJvbWlzZTogUmV0dXJuVHlwZTx0eXBlb2YgZmV0Y2hNaXNzaW5nRHluYW1pY0RhdGE+LFxuICByZWZyZXNoUmVxdWVzdFByb21pc2VzOiBBcnJheTxcbiAgICBSZXR1cm5UeXBlPHR5cGVvZiBmZXRjaE1pc3NpbmdEeW5hbWljRGF0YT5cbiAgPiB8IG51bGwsXG4gIHJvdXRlQ2FjaGVFbnRyeTogRnVsZmlsbGVkUm91dGVDYWNoZUVudHJ5IHwgbnVsbCxcbiAgbmF2aWdhdGVUeXBlOiAncHVzaCcgfCAncmVwbGFjZSdcbik6IFByb21pc2U8dm9pZD4ge1xuICAvLyBXYWl0IGZvciBhbGwgdGhlIHJlcXVlc3RzIHRvIGZpbmlzaCwgb3IgZm9yIHRoZSBmaXJzdCBvbmUgdG8gZmFpbC5cbiAgbGV0IGV4aXRTdGF0dXMgPSBhd2FpdCB3YWl0Rm9yUmVxdWVzdHNUb0ZpbmlzaChcbiAgICBwcmltYXJ5UmVxdWVzdFByb21pc2UsXG4gICAgcmVmcmVzaFJlcXVlc3RQcm9taXNlc1xuICApXG5cbiAgLy8gT25jZSB0aGUgYWxsIHRoZSByZXF1ZXN0cyBoYXZlIGZpbmlzaGVkLCBjaGVjayB0aGUgdHJlZSBmb3IgYW55IHJlbWFpbmluZ1xuICAvLyBwZW5kaW5nIHRhc2tzLiBJZiBhbnl0aGluZyBpcyBzdGlsbCBwZW5kaW5nLCBpdCBtZWFucyB0aGUgc2VydmVyIHJlc3BvbnNlXG4gIC8vIGRvZXMgbm90IG1hdGNoIHRoZSBjbGllbnQsIGFuZCB3ZSBtdXN0IHJlZnJlc2ggdG8gZ2V0IGJhY2sgdG8gYSBjb25zaXN0ZW50XG4gIC8vIHN0YXRlLiBXZSBjYW4gc2tpcCB0aGlzIHN0ZXAgaWYgd2UgYWxyZWFkeSBkZXRlY3RlZCBhIG1pc21hdGNoIGR1cmluZyB0aGVcbiAgLy8gZmlyc3QgcGhhc2U7IGl0IGRvZXNuJ3QgbWF0dGVyIGluIHRoYXQgY2FzZSBiZWNhdXNlIHdlJ3JlIGdvaW5nIHRvIHJlZnJlc2hcbiAgLy8gdGhlIHdob2xlIHRyZWUgcmVnYXJkbGVzcy5cbiAgaWYgKGV4aXRTdGF0dXMgPT09IE5hdmlnYXRpb25UYXNrRXhpdFN0YXR1cy5Eb25lKSB7XG4gICAgZXhpdFN0YXR1cyA9IGFib3J0UmVtYWluaW5nUGVuZGluZ1Rhc2tzKHRhc2ssIG51bGwsIG51bGwpXG4gIH1cblxuICBzd2l0Y2ggKGV4aXRTdGF0dXMpIHtcbiAgICBjYXNlIE5hdmlnYXRpb25UYXNrRXhpdFN0YXR1cy5Eb25lOiB7XG4gICAgICAvLyBUaGUgdGFzayBoYXMgY29tcGxldGVseSBmaW5pc2hlZC4gVGhlcmUncyBubyBtaXNzaW5nIGRhdGEuIEV4aXQuXG4gICAgICBwcmV2aW91c05hdmlnYXRpb25EaWRNaXNtYXRjaCA9IGZhbHNlXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2FzZSBOYXZpZ2F0aW9uVGFza0V4aXRTdGF0dXMuU29mdFJldHJ5OiB7XG4gICAgICAvLyBTb21lIGRhdGEgZmFpbGVkIHRvIGZpbmlzaCBsb2FkaW5nLiBUcmlnZ2VyIGEgc29mdCByZXRyeS5cbiAgICAgIC8vIFRPRE86IEFzIGFuIGV4dHJhIHByZWNhdXRpb24gYWdhaW5zdCBzb2Z0IHJldHJ5IGxvb3BzLCBjb25zaWRlclxuICAgICAgLy8gdHJhY2tpbmcgd2hldGhlciBhIG5hdmlnYXRpb24gd2FzIGl0c2VsZiB0cmlnZ2VyZWQgYnkgYSByZXRyeS4gSWYgdHdvXG4gICAgICAvLyBoYXBwZW4gaW4gYSByb3csIGZhbGwgYmFjayB0byBhIGhhcmQgcmV0cnkuXG4gICAgICBjb25zdCBpc0hhcmRSZXRyeSA9IGZhbHNlXG4gICAgICBjb25zdCBwcmltYXJ5UmVxdWVzdFJlc3VsdCA9IGF3YWl0IHByaW1hcnlSZXF1ZXN0UHJvbWlzZVxuICAgICAgZGlzcGF0Y2hSZXRyeUR1ZVRvVHJlZU1pc21hdGNoKFxuICAgICAgICBpc0hhcmRSZXRyeSxcbiAgICAgICAgcHJpbWFyeVJlcXVlc3RSZXN1bHQudXJsLFxuICAgICAgICBuZXh0VXJsLFxuICAgICAgICBwcmltYXJ5UmVxdWVzdFJlc3VsdC5zZWVkLFxuICAgICAgICB0YXNrLnJvdXRlLFxuICAgICAgICByb3V0ZUNhY2hlRW50cnksXG4gICAgICAgIG5hdmlnYXRlVHlwZVxuICAgICAgKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNhc2UgTmF2aWdhdGlvblRhc2tFeGl0U3RhdHVzLkhhcmRSZXRyeToge1xuICAgICAgLy8gU29tZSBkYXRhIGZhaWxlZCB0byBmaW5pc2ggbG9hZGluZyBpbiBhIG5vbi1yZWNvdmVyYWJsZSB3YXksIHN1Y2ggYXMgYVxuICAgICAgLy8gbmV0d29yayBlcnJvci4gVHJpZ2dlciBhbiBNUEEgbmF2aWdhdGlvbi5cbiAgICAgIC8vXG4gICAgICAvLyBIYXJkIG5hdmlnYXRpbmcvcmVmcmVzaGluZyBpcyBob3cgd2UgcHJldmVudCBhbiBpbmZpbml0ZSByZXRyeSBsb29wXG4gICAgICAvLyBjYXVzZWQgYnkgYSBuZXR3b3JrIGVycm9yIOKAlCB3aGVuIHRoZSBuZXR3b3JrIGZhaWxzLCB3ZSBmYWxsIGJhY2sgdG8gdGhlXG4gICAgICAvLyBicm93c2VyIGJlaGF2aW9yIGZvciBvZmZsaW5lIG5hdmlnYXRpb25zLiBJbiB0aGUgZnV0dXJlLCBOZXh0LmpzIG1heVxuICAgICAgLy8gaW50cm9kdWNlIGl0cyBvd24gY3VzdG9tIGhhbmRsaW5nIG9mIG9mZmxpbmUgbmF2aWdhdGlvbnMsIGJ1dCB0aGF0XG4gICAgICAvLyBkb2Vzbid0IGV4aXN0IHlldC5cbiAgICAgIGNvbnN0IGlzSGFyZFJldHJ5ID0gdHJ1ZVxuICAgICAgY29uc3QgcHJpbWFyeVJlcXVlc3RSZXN1bHQgPSBhd2FpdCBwcmltYXJ5UmVxdWVzdFByb21pc2VcbiAgICAgIGRpc3BhdGNoUmV0cnlEdWVUb1RyZWVNaXNtYXRjaChcbiAgICAgICAgaXNIYXJkUmV0cnksXG4gICAgICAgIHByaW1hcnlSZXF1ZXN0UmVzdWx0LnVybCxcbiAgICAgICAgbmV4dFVybCxcbiAgICAgICAgcHJpbWFyeVJlcXVlc3RSZXN1bHQuc2VlZCxcbiAgICAgICAgdGFzay5yb3V0ZSxcbiAgICAgICAgcm91dGVDYWNoZUVudHJ5LFxuICAgICAgICBuYXZpZ2F0ZVR5cGVcbiAgICAgIClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gZXhpdFN0YXR1cyBzYXRpc2ZpZXMgbmV2ZXJcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gd2FpdEZvclJlcXVlc3RzVG9GaW5pc2goXG4gIHByaW1hcnlSZXF1ZXN0UHJvbWlzZTogUmV0dXJuVHlwZTx0eXBlb2YgZmV0Y2hNaXNzaW5nRHluYW1pY0RhdGE+LFxuICByZWZyZXNoUmVxdWVzdFByb21pc2VzOiBBcnJheTxcbiAgICBSZXR1cm5UeXBlPHR5cGVvZiBmZXRjaE1pc3NpbmdEeW5hbWljRGF0YT5cbiAgPiB8IG51bGxcbikge1xuICAvLyBDdXN0b20gYXN5bmMgY29tYmluYXRvciBsb2dpYy4gVGhpcyBjb3VsZCBiZSByZXBsYWNlZCBieSBQcm9taXNlLmFueSBidXRcbiAgLy8gd2UgZG9uJ3QgYXNzdW1lIHRoYXQncyBhdmFpbGFibGUuXG4gIC8vXG4gIC8vIEVhY2ggcHJvbWlzZSByZXNvbHZlcyBvbmNlIHRoZSBzZXJ2ZXIgcmVzcG9uc2RzIGFuZCB0aGUgZGF0YSBpcyB3cml0dGVuXG4gIC8vIGludG8gdGhlIENhY2hlTm9kZSB0cmVlLiBSZXNvbHZlIHRoZSBjb21iaW5lZCBwcm9taXNlIG9uY2UgYWxsIHRoZVxuICAvLyByZXF1ZXN0cyBmaW5pc2guXG4gIC8vXG4gIC8vIE9yLCByZXNvbHZlIGFzIHNvb24gYXMgb25lIG9mIHRoZSByZXF1ZXN0cyBmYWlscywgd2l0aG91dCB3YWl0aW5nIGZvciB0aGVcbiAgLy8gb3RoZXJzIHRvIGZpbmlzaC5cbiAgcmV0dXJuIG5ldyBQcm9taXNlPE5hdmlnYXRpb25UYXNrRXhpdFN0YXR1cz4oKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBvbkZ1bGZpbGwgPSAocmVzdWx0OiB7IGV4aXRTdGF0dXM6IE5hdmlnYXRpb25UYXNrRXhpdFN0YXR1cyB9KSA9PiB7XG4gICAgICBpZiAocmVzdWx0LmV4aXRTdGF0dXMgPT09IE5hdmlnYXRpb25UYXNrRXhpdFN0YXR1cy5Eb25lKSB7XG4gICAgICAgIHJlbWFpbmluZ0NvdW50LS1cbiAgICAgICAgaWYgKHJlbWFpbmluZ0NvdW50ID09PSAwKSB7XG4gICAgICAgICAgLy8gQWxsIHRoZSByZXF1ZXN0cyBmaW5pc2hlZCBzdWNjZXNzZnVsbHkuXG4gICAgICAgICAgcmVzb2x2ZShOYXZpZ2F0aW9uVGFza0V4aXRTdGF0dXMuRG9uZSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT25lIG9mIHRoZSByZXF1ZXN0cyBmYWlsZWQuIEV4aXQgd2l0aCBhIGZhaWxpbmcgc3RhdHVzLlxuICAgICAgICAvLyBOT1RFOiBJdCdzIHBvc3NpYmxlIGZvciBvbmUgb2YgdGhlIHJlcXVlc3RzIHRvIGZhaWwgd2l0aCBTb2Z0UmV0cnlcbiAgICAgICAgLy8gYW5kIGEgbGF0ZXIgb25lIHRvIGZhaWwgd2l0aCBIYXJkUmV0cnkuIEluIHRoaXMgY2FzZSwgd2UgY2hvb3NlIHRvXG4gICAgICAgIC8vIHJldHJ5IGltbWVkaWF0ZWx5LCByYXRoZXIgdGhhbiBkZWxheSB0aGUgcmV0cnkgdW50aWwgYWxsIHRoZSByZXF1ZXN0c1xuICAgICAgICAvLyBmaW5pc2guIElmIGl0IGZhaWxzIGFnYWluLCB3ZSB3aWxsIGhhcmQgcmV0cnkgb24gdGhlIG5leHRcbiAgICAgICAgLy8gYXR0ZW1wdCwgYW55d2F5LlxuICAgICAgICByZXNvbHZlKHJlc3VsdC5leGl0U3RhdHVzKVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBvblJlamVjdCBzaG91bGRuJ3QgZXZlciBiZSBjYWxsZWQgYmVjYXVzZSBmZXRjaE1pc3NpbmdEeW5hbWljRGF0YSdzXG4gICAgLy8gZW50aXJlIGJvZHkgaXMgd3JhcHBlZCBpbiBhIHRyeS9jYXRjaC4gVGhpcyBpcyBqdXN0IGRlZmVuc2l2ZS5cbiAgICBjb25zdCBvblJlamVjdCA9ICgpID0+IHJlc29sdmUoTmF2aWdhdGlvblRhc2tFeGl0U3RhdHVzLkhhcmRSZXRyeSlcblxuICAgIC8vIEF0dGFjaCB0aGUgbGlzdGVuZXJzIHRvIHRoZSBwcm9taXNlcy5cbiAgICBsZXQgcmVtYWluaW5nQ291bnQgPSAxXG4gICAgcHJpbWFyeVJlcXVlc3RQcm9taXNlLnRoZW4ob25GdWxmaWxsLCBvblJlamVjdClcbiAgICBpZiAocmVmcmVzaFJlcXVlc3RQcm9taXNlcyAhPT0gbnVsbCkge1xuICAgICAgcmVtYWluaW5nQ291bnQgKz0gcmVmcmVzaFJlcXVlc3RQcm9taXNlcy5sZW5ndGhcbiAgICAgIHJlZnJlc2hSZXF1ZXN0UHJvbWlzZXMuZm9yRWFjaCgocmVmcmVzaFJlcXVlc3RQcm9taXNlKSA9PlxuICAgICAgICByZWZyZXNoUmVxdWVzdFByb21pc2UudGhlbihvbkZ1bGZpbGwsIG9uUmVqZWN0KVxuICAgICAgKVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gZGlzcGF0Y2hSZXRyeUR1ZVRvVHJlZU1pc21hdGNoKFxuICBpc0hhcmRSZXRyeTogYm9vbGVhbixcbiAgcmV0cnlVcmw6IFVSTCxcbiAgcmV0cnlOZXh0VXJsOiBzdHJpbmcgfCBudWxsLFxuICBzZWVkOiBOYXZpZ2F0aW9uU2VlZCB8IG51bGwsXG4gIGJhc2VUcmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgLy8gVGhlIHJvdXRlIGNhY2hlIGVudHJ5IHVzZWQgZm9yIHRoaXMgbmF2aWdhdGlvbiwgaWYgaXQgY2FtZSBmcm9tIHJvdXRlXG4gIC8vIHByZWRpY3Rpb24uIElmIHRoZSBuYXZpZ2F0aW9uIHJlc3VsdHMgaW4gYSBtaXNtYXRjaCwgd2UgbWFyayBpdCBhcyBoYXZpbmdcbiAgLy8gYSBkeW5hbWljIHJld3JpdGUgc28gZnV0dXJlIHByZWRpY3Rpb25zIGJhaWwgb3V0LlxuICByb3V0ZUNhY2hlRW50cnk6IEZ1bGZpbGxlZFJvdXRlQ2FjaGVFbnRyeSB8IG51bGwsXG4gIC8vIFRoZSBvcmlnaW5hbCBuYXZpZ2F0aW9uJ3MgcHVzaC9yZXBsYWNlIGludGVudC5cbiAgb3JpZ2luYWxOYXZpZ2F0ZVR5cGU6ICdwdXNoJyB8ICdyZXBsYWNlJ1xuKSB7XG4gIC8vIElmIHRoZSBuYXZpZ2F0aW9uIHVzZWQgYSByb3V0ZSBwcmVkaWN0aW9uLCBtYXJrIGl0IGFzIGhhdmluZyBhIGR5bmFtaWNcbiAgLy8gcmV3cml0ZSBzaW5jZSBpdCByZXN1bHRlZCBpbiBhIG1pc21hdGNoLlxuICBpZiAocm91dGVDYWNoZUVudHJ5ICE9PSBudWxsKSB7XG4gICAgbWFya1JvdXRlRW50cnlBc0R5bmFtaWNSZXdyaXRlKHJvdXRlQ2FjaGVFbnRyeSlcbiAgfSBlbHNlIGlmIChzZWVkICE9PSBudWxsKSB7XG4gICAgLy8gRXZlbiB3aXRob3V0IGEgZGlyZWN0IHJlZmVyZW5jZSB0byB0aGUgcm91dGUgY2FjaGUgZW50cnksIHdlIGNhbiBzdGlsbFxuICAgIC8vIG1hcmsgdGhlIHJvdXRlIGFzIGhhdmluZyBhIGR5bmFtaWMgcmV3cml0ZSBieSB0cmF2ZXJzaW5nIHRoZSBrbm93biByb3V0ZVxuICAgIC8vIHRyZWUuIFRoaXMgaGFuZGxlcyBjYXNlcyB3aGVyZSB0aGUgbmF2aWdhdGlvbiBkaWRuJ3Qgb3JpZ2luYXRlIGZyb20gYVxuICAgIC8vIHJvdXRlIHByZWRpY3Rpb24sIGJ1dCBzdGlsbCBuZWVkcyB0byBtYXJrIHRoZSBwYXR0ZXJuLlxuICAgIGNvbnN0IG1ldGFkYXRhVmFyeVBhdGggPSBzZWVkLm1ldGFkYXRhVmFyeVBhdGhcbiAgICBpZiAobWV0YWRhdGFWYXJ5UGF0aCAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKVxuICAgICAgZGlzY292ZXJLbm93blJvdXRlKFxuICAgICAgICBub3csXG4gICAgICAgIHJldHJ5VXJsLnBhdGhuYW1lLFxuICAgICAgICByZXRyeU5leHRVcmwsXG4gICAgICAgIG51bGwsXG4gICAgICAgIHNlZWQucm91dGVUcmVlLFxuICAgICAgICBtZXRhZGF0YVZhcnlQYXRoLFxuICAgICAgICBmYWxzZSwgLy8gY291bGRCZUludGVyY2VwdGVkIC0gZG9lc24ndCBtYXR0ZXIsIHdlJ3JlIGp1c3QgbWFya2luZyBoYXNEeW5hbWljUmV3cml0ZVxuICAgICAgICBjcmVhdGVIcmVmRnJvbVVybChyZXRyeVVybCksXG4gICAgICAgIGZhbHNlLCAvLyBzdXBwb3J0c1BlclNlZ21lbnRQcmVmZXRjaGluZyAtIGRvZXNuJ3QgbWF0dGVyLCB3ZSdyZSBqdXN0IG1hcmtpbmcgaGFzRHluYW1pY1Jld3JpdGVcbiAgICAgICAgdHJ1ZSAvLyBoYXNEeW5hbWljUmV3cml0ZVxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIC8vIEludmFsaWRhdGUgYWxsIHJvdXRlIGNhY2hlIGVudHJpZXMuIE90aGVyIGVudHJpZXMgbWF5IGhhdmUgYmVlbiBkZXJpdmVkXG4gIC8vIGZyb20gdGhlIHRlbXBsYXRlIGJlZm9yZSB3ZSBrbmV3IGl0IGhhZCBhIGR5bmFtaWMgcmV3cml0ZS4gVGhpcyBhbHNvXG4gIC8vIHRyaWdnZXJzIHJlLXByZWZldGNoaW5nIG9mIHZpc2libGUgbGlua3MuXG4gIGludmFsaWRhdGVSb3V0ZUNhY2hlRW50cmllcyhyZXRyeU5leHRVcmwsIGJhc2VUcmVlKVxuXG4gIC8vIElmIHRoaXMgaXMgdGhlIHNlY29uZCB0aW1lIGluIGEgcm93IHRoYXQgYSBuYXZpZ2F0aW9uIHJlc3VsdGVkIGluIGFcbiAgLy8gbWlzbWF0Y2gsIGZhbGwgYmFjayB0byBhIGhhcmQgKE1QQSkgcmVmcmVzaC5cbiAgaXNIYXJkUmV0cnkgPSBpc0hhcmRSZXRyeSB8fCBwcmV2aW91c05hdmlnYXRpb25EaWRNaXNtYXRjaFxuICBwcmV2aW91c05hdmlnYXRpb25EaWRNaXNtYXRjaCA9IHRydWVcblxuICAvLyBJZiB0aGUgb3JpZ2luYWwgbmF2aWdhdGlvbiBoYXNuJ3QgY29tbWl0dGVkIHRvIHRoZSBicm93c2VyIGhpc3RvcnkgeWV0XG4gIC8vICh0aGUgdHJhbnNpdGlvbiBzdXNwZW5kZWQgYmVmb3JlIFJlYWN0IGNvbW1pdHRlZCksIGluaGVyaXQgaXRzIHB1c2gvcmVwbGFjZVxuICAvLyBpbnRlbnQuIE90aGVyd2lzZSwgdGhlIHB1c2hTdGF0ZSBhbHJlYWR5IHJhbiwgc28gdXNlICdyZXBsYWNlJyB0byBhdm9pZFxuICAvLyBjcmVhdGluZyBhIGR1cGxpY2F0ZSBoaXN0b3J5IGVudHJ5LlxuICAvL1xuICAvLyBUaGlzIHdvcmtzIGJlY2F1c2UgUmVhY3QgZW50YW5nbGVzIHRoZSByZXRyeSdzIHN0YXRlIHVwZGF0ZSB3aXRoIHRoZVxuICAvLyBvcmlnaW5hbCBwZW5kaW5nIHRyYW5zaXRpb24g4oCUIHRoZXkgY29tbWl0IHRvZ2V0aGVyIGFzIGEgc2luZ2xlIGJhdGNoLFxuICAvLyBzbyB0aGUgbmF2aWdhdGUgdHlwZSBmcm9tIHRoZSByZXRyeSBpcyB3aGF0IEhpc3RvcnlVcGRhdGVyIHVsdGltYXRlbHkgc2Vlcy5cbiAgLy9cbiAgLy8gVE9ETzogSWRlYWxseSB0aGlzIGNoZWNrIHdvdWxkIGhhcHBlbiByaWdodCBiZWZvcmUgd2Ugc2NoZWR1bGUgdGhlIFJlYWN0XG4gIC8vIHVwZGF0ZSAoaS5lLiwgY2xvc2VyIHRvIHdoZXJlIHRoZSBhY3Rpb24gaXMgZGlzcGF0Y2hlZCBpbnRvIHRoZSBxdWV1ZSksXG4gIC8vIG5vdCBoZXJlIHdoZXJlIHRoZSBhY3Rpb24gaXMgY29uc3RydWN0ZWQuIEJ1dCB0aGUgY3VycmVudCBhY3Rpb24gcXVldWVcbiAgLy8gZG9lc24ndCBwcm92aWRlIGEgbmF0dXJhbCBwbGFjZSBmb3IgdGhhdC4gUmV2aXNpdCB3aGVuIHdlIHJlZmFjdG9yIHRoZVxuICAvLyBhY3Rpb24gcXVldWUgaW50byBhIG1vcmUgcmVhY3RpdmUgbmF2aWdhdGlvbiBtb2RlbC5cbiAgY29uc3QgbGFzdENvbW1pdHRlZCA9IGdldExhc3RDb21taXR0ZWRUcmVlKClcbiAgY29uc3QgcmV0cnlOYXZpZ2F0ZVR5cGU6ICdwdXNoJyB8ICdyZXBsYWNlJyA9XG4gICAgbGFzdENvbW1pdHRlZCAhPT0gbnVsbCAmJiBiYXNlVHJlZSAhPT0gbGFzdENvbW1pdHRlZFxuICAgICAgPyBvcmlnaW5hbE5hdmlnYXRlVHlwZVxuICAgICAgOiAncmVwbGFjZSdcblxuICBjb25zdCByZXRyeUFjdGlvbjogU2VydmVyUGF0Y2hBY3Rpb24gPSB7XG4gICAgdHlwZTogQUNUSU9OX1NFUlZFUl9QQVRDSCxcbiAgICBwcmV2aW91c1RyZWU6IGJhc2VUcmVlLFxuICAgIHVybDogcmV0cnlVcmwsXG4gICAgbmV4dFVybDogcmV0cnlOZXh0VXJsLFxuICAgIHNlZWQsXG4gICAgbXBhOiBpc0hhcmRSZXRyeSxcbiAgICBuYXZpZ2F0ZVR5cGU6IHJldHJ5TmF2aWdhdGVUeXBlLFxuICB9XG4gIGRpc3BhdGNoQXBwUm91dGVyQWN0aW9uKHJldHJ5QWN0aW9uKVxufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaE1pc3NpbmdEeW5hbWljRGF0YShcbiAgdGFzazogTmF2aWdhdGlvblRhc2ssXG4gIGR5bmFtaWNSZXF1ZXN0VHJlZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIHVybDogVVJMLFxuICBuZXh0VXJsOiBzdHJpbmcgfCBudWxsLFxuICBmcmVzaG5lc3NQb2xpY3k6IEZyZXNobmVzc1BvbGljeSxcbiAgcm91dGVDYWNoZUVudHJ5OiBGdWxmaWxsZWRSb3V0ZUNhY2hlRW50cnkgfCBudWxsXG4pOiBQcm9taXNlPHtcbiAgZXhpdFN0YXR1czogTmF2aWdhdGlvblRhc2tFeGl0U3RhdHVzXG4gIHVybDogVVJMXG4gIHNlZWQ6IE5hdmlnYXRpb25TZWVkIHwgbnVsbFxufT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZldGNoU2VydmVyUmVzcG9uc2UodXJsLCB7XG4gICAgICBmbGlnaHRSb3V0ZXJTdGF0ZTogZHluYW1pY1JlcXVlc3RUcmVlLFxuICAgICAgbmV4dFVybCxcbiAgICAgIGlzSG1yUmVmcmVzaDogZnJlc2huZXNzUG9saWN5ID09PSBGcmVzaG5lc3NQb2xpY3kuSE1SUmVmcmVzaCxcbiAgICB9KVxuICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJykge1xuICAgICAgLy8gZmV0Y2hTZXJ2ZXJSZXNwb25zZSB3aWxsIHJldHVybiBhbiBocmVmIHRvIGluZGljYXRlIHRoYXQgdGhlIFNQQVxuICAgICAgLy8gbmF2aWdhdGlvbiBmYWlsZWQuIEZvciBleGFtcGxlLCBpZiB0aGUgc2VydmVyIHRyaWdnZXJlZCBhIGhhcmRcbiAgICAgIC8vIHJlZGlyZWN0LCBvciB0aGUgZmV0Y2ggcmVxdWVzdCBlcnJvcmVkLiBJbml0aWF0ZSBhbiBNUEEgbmF2aWdhdGlvblxuICAgICAgLy8gdG8gdGhlIGdpdmVuIGhyZWYuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBleGl0U3RhdHVzOiBOYXZpZ2F0aW9uVGFza0V4aXRTdGF0dXMuSGFyZFJldHJ5LFxuICAgICAgICB1cmw6IG5ldyBVUkwocmVzdWx0LCBsb2NhdGlvbi5vcmlnaW4pLFxuICAgICAgICBzZWVkOiBudWxsLFxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpXG5cbiAgICBjb25zdCBzZWVkID0gY29udmVydFNlcnZlclBhdGNoVG9GdWxsVHJlZShcbiAgICAgIG5vdyxcbiAgICAgIHRhc2sucm91dGUsXG4gICAgICByZXN1bHQuZmxpZ2h0RGF0YSxcbiAgICAgIHJlc3VsdC5yZW5kZXJlZFNlYXJjaCxcbiAgICAgIHJlc3VsdC5keW5hbWljU3RhbGVUaW1lXG4gICAgKVxuXG4gICAgLy8gSWYgdGhlIG5hdmlnYXRpb24gbG9jayBpcyBhY3RpdmUsIHdhaXQgZm9yIGl0IHRvIGJlIHJlbGVhc2VkIGJlZm9yZVxuICAgIC8vIHdyaXRpbmcgdGhlIGR5bmFtaWMgZGF0YS4gVGhpcyBhbGxvd3MgdGVzdHMgdG8gYXNzZXJ0IG9uIHRoZSBwcmVmZXRjaGVkXG4gICAgLy8gVUkgc3RhdGUuXG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9FWFBPU0VfVEVTVElOR19BUEkpIHtcbiAgICAgIGF3YWl0IHdhaXRGb3JOYXZpZ2F0aW9uTG9jaygpXG4gICAgfVxuXG4gICAgaWYgKHJvdXRlQ2FjaGVFbnRyeSAhPT0gbnVsbCAmJiByZXN1bHQuc3RhdGljU3RhZ2VEYXRhICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB7IHJlc3BvbnNlOiBzdGF0aWNTdGFnZVJlc3BvbnNlLCBpc1Jlc3BvbnNlUGFydGlhbCB9ID1cbiAgICAgICAgcmVzdWx0LnN0YXRpY1N0YWdlRGF0YVxuXG4gICAgICBnZXRTdGFsZUF0KG5vdywgc3RhdGljU3RhZ2VSZXNwb25zZS5zKVxuICAgICAgICAudGhlbigoc3RhbGVBdCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGJ1aWxkSWQgPVxuICAgICAgICAgICAgcmVzdWx0LnJlc3BvbnNlSGVhZGVycy5nZXQoTkVYVF9OQVZfREVQTE9ZTUVOVF9JRF9IRUFERVIpID8/XG4gICAgICAgICAgICBzdGF0aWNTdGFnZVJlc3BvbnNlLmJcblxuICAgICAgICAgIHdyaXRlU3RhdGljU3RhZ2VSZXNwb25zZUludG9DYWNoZShcbiAgICAgICAgICAgIG5vdyxcbiAgICAgICAgICAgIHN0YXRpY1N0YWdlUmVzcG9uc2UuZixcbiAgICAgICAgICAgIGJ1aWxkSWQsXG4gICAgICAgICAgICBzdGF0aWNTdGFnZVJlc3BvbnNlLmgsXG4gICAgICAgICAgICBzdGFsZUF0LFxuICAgICAgICAgICAgZHluYW1pY1JlcXVlc3RUcmVlLFxuICAgICAgICAgICAgcmVzdWx0LnJlbmRlcmVkU2VhcmNoLFxuICAgICAgICAgICAgaXNSZXNwb25zZVBhcnRpYWxcbiAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgLy8gVGhlIHN0YXRpYyBzdGFnZSBwcm9jZXNzaW5nIGZhaWxlZC4gTm90IGZhdGFsIOKAlCB0aGUgbmF2aWdhdGlvblxuICAgICAgICAgIC8vIGNvbXBsZXRlZCBub3JtYWxseSwgd2UganVzdCB3b24ndCB3cml0ZSBpbnRvIHRoZSBjYWNoZS5cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAocm91dGVDYWNoZUVudHJ5ICE9PSBudWxsICYmIHJlc3VsdC5ydW50aW1lUHJlZmV0Y2hTdHJlYW0gIT09IG51bGwpIHtcbiAgICAgIHByb2Nlc3NSdW50aW1lUHJlZmV0Y2hTdHJlYW0oXG4gICAgICAgIG5vdyxcbiAgICAgICAgcmVzdWx0LnJ1bnRpbWVQcmVmZXRjaFN0cmVhbSxcbiAgICAgICAgZHluYW1pY1JlcXVlc3RUcmVlLFxuICAgICAgICByZXN1bHQucmVuZGVyZWRTZWFyY2hcbiAgICAgIClcbiAgICAgICAgLnRoZW4oKHByb2Nlc3NlZCkgPT4ge1xuICAgICAgICAgIGlmIChwcm9jZXNzZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHdyaXRlRHluYW1pY1JlbmRlclJlc3BvbnNlSW50b0NhY2hlKFxuICAgICAgICAgICAgICBub3csXG4gICAgICAgICAgICAgIEZldGNoU3RyYXRlZ3kuUFBSUnVudGltZSxcbiAgICAgICAgICAgICAgcHJvY2Vzc2VkLmZsaWdodERhdGFzLFxuICAgICAgICAgICAgICBwcm9jZXNzZWQuYnVpbGRJZCxcbiAgICAgICAgICAgICAgcHJvY2Vzc2VkLmlzUmVzcG9uc2VQYXJ0aWFsLFxuICAgICAgICAgICAgICBwcm9jZXNzZWQuaGVhZFZhcnlQYXJhbXMsXG4gICAgICAgICAgICAgIHByb2Nlc3NlZC5zdGFsZUF0LFxuICAgICAgICAgICAgICBwcm9jZXNzZWQubmF2aWdhdGlvblNlZWQsXG4gICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgLy8gVGhlIHJ1bnRpbWUgcHJlZmV0Y2ggY2FjaGUgd3JpdGUgZmFpbGVkLiBOb3QgZmF0YWwg4oCUIHRoZVxuICAgICAgICAgIC8vIG5hdmlnYXRpb24gY29tcGxldGVkIG5vcm1hbGx5LCB3ZSBqdXN0IHdvbid0IGNhY2hlIHJ1bnRpbWUgZGF0YS5cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyByZXN1bHQuZHluYW1pY1N0YWxlVGltZSBpcyBpbiBzZWNvbmRzIChmcm9tIHRoZSBzZXJ2ZXIncyBgZGAgZmllbGQpLlxuICAgIC8vIENvbnZlcnQgdG8gYW4gYWJzb2x1dGUgdGltZXN0YW1wIHVzaW5nIHRoZSBjZW50cmFsaXplZCBoZWxwZXIuXG4gICAgY29uc3QgZHluYW1pY1N0YWxlQXQgPSBjb21wdXRlRHluYW1pY1N0YWxlQXQobm93LCByZXN1bHQuZHluYW1pY1N0YWxlVGltZSlcblxuICAgIGNvbnN0IGRpZFJlY2VpdmVVbmtub3duUGFyYWxsZWxSb3V0ZSA9IHdyaXRlRHluYW1pY0RhdGFJbnRvTmF2aWdhdGlvblRhc2soXG4gICAgICB0YXNrLFxuICAgICAgc2VlZC5yb3V0ZVRyZWUsXG4gICAgICBzZWVkLmRhdGEsXG4gICAgICBzZWVkLmhlYWQsXG4gICAgICBkeW5hbWljU3RhbGVBdCxcbiAgICAgIHJlc3VsdC5kZWJ1Z0luZm9cbiAgICApXG5cbiAgICByZXR1cm4ge1xuICAgICAgZXhpdFN0YXR1czogZGlkUmVjZWl2ZVVua25vd25QYXJhbGxlbFJvdXRlXG4gICAgICAgID8gTmF2aWdhdGlvblRhc2tFeGl0U3RhdHVzLlNvZnRSZXRyeVxuICAgICAgICA6IE5hdmlnYXRpb25UYXNrRXhpdFN0YXR1cy5Eb25lLFxuICAgICAgdXJsOiBuZXcgVVJMKHJlc3VsdC5jYW5vbmljYWxVcmwsIGxvY2F0aW9uLm9yaWdpbiksXG4gICAgICBzZWVkLFxuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgLy8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuIGJlY2F1c2UgZmV0Y2hTZXJ2ZXJSZXNwb25zZSdzIGVudGlyZSBib2R5IGlzXG4gICAgLy8gd3JhcHBlZCBpbiBhIHRyeS9jYXRjaC4gSWYgaXQgZG9lcywgdGhvdWdoLCBpdCBpbXBsaWVzIHRoZSBzZXJ2ZXIgZmFpbGVkXG4gICAgLy8gdG8gcmVzcG9uZCB3aXRoIGFueSB0cmVlIGF0IGFsbC4gU28gd2UgbXVzdCBmYWxsIGJhY2sgdG8gYSBoYXJkIHJldHJ5LlxuICAgIHJldHVybiB7XG4gICAgICBleGl0U3RhdHVzOiBOYXZpZ2F0aW9uVGFza0V4aXRTdGF0dXMuSGFyZFJldHJ5LFxuICAgICAgdXJsOiB1cmwsXG4gICAgICBzZWVkOiBudWxsLFxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB3cml0ZUR5bmFtaWNEYXRhSW50b05hdmlnYXRpb25UYXNrKFxuICB0YXNrOiBOYXZpZ2F0aW9uVGFzayxcbiAgc2VydmVyUm91dGVUcmVlOiBSb3V0ZVRyZWUsXG4gIGR5bmFtaWNEYXRhOiBDYWNoZU5vZGVTZWVkRGF0YSB8IG51bGwsXG4gIGR5bmFtaWNIZWFkOiBIZWFkRGF0YSxcbiAgZHluYW1pY1N0YWxlQXQ6IG51bWJlcixcbiAgZGVidWdJbmZvOiBBcnJheTxhbnk+IHwgbnVsbFxuKTogYm9vbGVhbiB7XG4gIGlmICh0YXNrLnN0YXR1cyA9PT0gTmF2aWdhdGlvblRhc2tTdGF0dXMuUGVuZGluZyAmJiBkeW5hbWljRGF0YSAhPT0gbnVsbCkge1xuICAgIHRhc2suc3RhdHVzID0gTmF2aWdhdGlvblRhc2tTdGF0dXMuRnVsZmlsbGVkXG4gICAgZmluaXNoUGVuZGluZ0NhY2hlTm9kZSh0YXNrLm5vZGUsIGR5bmFtaWNEYXRhLCBkeW5hbWljSGVhZCwgZGVidWdJbmZvKVxuXG4gICAgLy8gVXBkYXRlIHRoZSBCRkNhY2hlIGVudHJ5J3Mgc3RhbGVBdCBmb3IgdGhpcyBzZWdtZW50IHdpdGggdGhlIHZhbHVlXG4gICAgLy8gZnJvbSB0aGUgZHluYW1pYyByZXNwb25zZS4gVGhpcyBhcHBsaWVzIHRoZSBwZXItcGFnZVxuICAgIC8vIHVuc3RhYmxlX2R5bmFtaWNTdGFsZVRpbWUgaWYgc2V0LCBvciB0aGUgZGVmYXVsdCBEWU5BTUlDX1NUQUxFVElNRV9NUy5cbiAgICAvLyBXZSBvbmx5IHVwZGF0ZSBzZWdtZW50cyB0aGF0IHJlY2VpdmVkIGR5bmFtaWMgZGF0YSDigJQgc3RhdGljIHNlZ21lbnRzXG4gICAgLy8gYXJlIHVuYWZmZWN0ZWQuXG4gICAgdXBkYXRlQkZDYWNoZUVudHJ5U3RhbGVBdChzZXJ2ZXJSb3V0ZVRyZWUudmFyeVBhdGgsIGR5bmFtaWNTdGFsZUF0KVxuICB9XG5cbiAgY29uc3QgdGFza0NoaWxkcmVuID0gdGFzay5jaGlsZHJlblxuICBjb25zdCBzZXJ2ZXJDaGlsZHJlbiA9IHNlcnZlclJvdXRlVHJlZS5zbG90c1xuICBjb25zdCBkeW5hbWljRGF0YUNoaWxkcmVuID0gZHluYW1pY0RhdGEgIT09IG51bGwgPyBkeW5hbWljRGF0YVsxXSA6IG51bGxcblxuICAvLyBEZXRlY3Qgd2hldGhlciB0aGUgc2VydmVyIHNlbmRzIGEgcGFyYWxsZWwgcm91dGUgc2xvdCB0aGF0IHRoZSBjbGllbnRcbiAgLy8gZG9lc24ndCBrbm93IGFib3V0LlxuICBsZXQgZGlkUmVjZWl2ZVVua25vd25QYXJhbGxlbFJvdXRlID0gZmFsc2VcblxuICBpZiAodGFza0NoaWxkcmVuICE9PSBudWxsKSB7XG4gICAgaWYgKHNlcnZlckNoaWxkcmVuICE9PSBudWxsKSB7XG4gICAgICBmb3IgKGNvbnN0IHBhcmFsbGVsUm91dGVLZXkgaW4gc2VydmVyQ2hpbGRyZW4pIHtcbiAgICAgICAgY29uc3Qgc2VydmVyUm91dGVUcmVlQ2hpbGQ6IFJvdXRlVHJlZSA9IHNlcnZlckNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldXG4gICAgICAgIGNvbnN0IGR5bmFtaWNEYXRhQ2hpbGQ6IENhY2hlTm9kZVNlZWREYXRhIHwgbnVsbCB8IHZvaWQgPVxuICAgICAgICAgIGR5bmFtaWNEYXRhQ2hpbGRyZW4gIT09IG51bGxcbiAgICAgICAgICAgID8gZHluYW1pY0RhdGFDaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XVxuICAgICAgICAgICAgOiBudWxsXG5cbiAgICAgICAgY29uc3QgdGFza0NoaWxkID0gdGFza0NoaWxkcmVuLmdldChwYXJhbGxlbFJvdXRlS2V5KVxuICAgICAgICBpZiAodGFza0NoaWxkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBUaGUgc2VydmVyIHNlbnQgYSBjaGlsZCBzZWdtZW50IHRoYXQgdGhlIGNsaWVudCBkb2Vzbid0IGtub3cgYWJvdXQuXG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyBXaGVuIHdlIHJlY2VpdmUgYW4gdW5rbm93biBwYXJhbGxlbCByb3V0ZSwgd2UgbXVzdCBjb25zaWRlciBpdCBhXG4gICAgICAgICAgLy8gbWlzbWF0Y2guIFRoaXMgaXMgdW5saWtlIHRoZSBjYXNlIHdoZXJlIHRoZSBzZWdtZW50IGl0c2VsZlxuICAgICAgICAgIC8vIG1pc21hdGNoZXMsIGJlY2F1c2UgbXVsdGlwbGUgcm91dGVzIGNhbiBiZSBhY3RpdmUgc2ltdWx0YW5lb3VzbHkuXG4gICAgICAgICAgLy8gQnV0IGEgZ2l2ZW4gbGF5b3V0IHNob3VsZCBuZXZlciBoYXZlIGEgbWlzbWF0Y2hpbmcgc2V0IG9mXG4gICAgICAgICAgLy8gY2hpbGQgc2xvdHMuXG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyBUaGVvcmV0aWNhbGx5LCB0aGlzIHNob3VsZCBvbmx5IGhhcHBlbiBpbiBkZXZlbG9wbWVudCBkdXJpbmcgYW4gSE1SXG4gICAgICAgICAgLy8gcmVmcmVzaCwgYmVjYXVzZSB0aGUgc2V0IG9mIHBhcmFsbGVsIHJvdXRlcyBmb3IgYSBsYXlvdXQgZG9lcyBub3RcbiAgICAgICAgICAvLyBjaGFuZ2Ugb3ZlciB0aGUgbGlmZXRpbWUgb2YgYSBidWlsZC9kZXBsb3ltZW50LiBJbiBwcm9kdWN0aW9uLCB3ZVxuICAgICAgICAgIC8vIHNob3VsZCBoYXZlIGFscmVhZHkgbWlzbWF0Y2hlZCBvbiBlaXRoZXIgdGhlIGJ1aWxkIGlkIG9yIHRoZSBzZWdtZW50XG4gICAgICAgICAgLy8gcGF0aC4gQnV0IGFzIGFuIGV4dHJhIHByZWNhdXRpb24sIHdlIHZhbGlkYXRlIGluIHByb2QsIHRvby5cbiAgICAgICAgICBkaWRSZWNlaXZlVW5rbm93blBhcmFsbGVsUm91dGUgPSB0cnVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgdGFza1NlZ21lbnQgPSB0YXNrQ2hpbGQucm91dGVbMF1cbiAgICAgICAgICBjb25zdCBzZXJ2ZXJTZWdtZW50ID0gY3JlYXRlU2VnbWVudEZyb21Sb3V0ZVRyZWUoc2VydmVyUm91dGVUcmVlQ2hpbGQpXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgbWF0Y2hTZWdtZW50KHNlcnZlclNlZ21lbnQsIHRhc2tTZWdtZW50KSAmJlxuICAgICAgICAgICAgZHluYW1pY0RhdGFDaGlsZCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgZHluYW1pY0RhdGFDaGlsZCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBGb3VuZCBhIG1hdGNoIGZvciB0aGlzIHRhc2suIEtlZXAgdHJhdmVyc2luZyBkb3duIHRoZSB0YXNrIHRyZWUuXG4gICAgICAgICAgICBjb25zdCBjaGlsZERpZFJlY2VpdmVVbmtub3duUGFyYWxsZWxSb3V0ZSA9XG4gICAgICAgICAgICAgIHdyaXRlRHluYW1pY0RhdGFJbnRvTmF2aWdhdGlvblRhc2soXG4gICAgICAgICAgICAgICAgdGFza0NoaWxkLFxuICAgICAgICAgICAgICAgIHNlcnZlclJvdXRlVHJlZUNoaWxkLFxuICAgICAgICAgICAgICAgIGR5bmFtaWNEYXRhQ2hpbGQsXG4gICAgICAgICAgICAgICAgZHluYW1pY0hlYWQsXG4gICAgICAgICAgICAgICAgZHluYW1pY1N0YWxlQXQsXG4gICAgICAgICAgICAgICAgZGVidWdJbmZvXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIGlmIChjaGlsZERpZFJlY2VpdmVVbmtub3duUGFyYWxsZWxSb3V0ZSkge1xuICAgICAgICAgICAgICBkaWRSZWNlaXZlVW5rbm93blBhcmFsbGVsUm91dGUgPSB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzZXJ2ZXJDaGlsZHJlbiAhPT0gbnVsbCkge1xuICAgICAgICAvLyBUaGUgc2VydmVyIHNlbnQgYSBjaGlsZCBzZWdtZW50IHRoYXQgdGhlIGNsaWVudCBkb2Vzbid0IGtub3cgYWJvdXQuXG4gICAgICAgIGRpZFJlY2VpdmVVbmtub3duUGFyYWxsZWxSb3V0ZSA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGlkUmVjZWl2ZVVua25vd25QYXJhbGxlbFJvdXRlXG59XG5cbmZ1bmN0aW9uIGZpbmlzaFBlbmRpbmdDYWNoZU5vZGUoXG4gIGNhY2hlTm9kZTogQ2FjaGVOb2RlLFxuICBkeW5hbWljRGF0YTogQ2FjaGVOb2RlU2VlZERhdGEsXG4gIGR5bmFtaWNIZWFkOiBIZWFkRGF0YSxcbiAgZGVidWdJbmZvOiBBcnJheTxhbnk+IHwgbnVsbFxuKTogdm9pZCB7XG4gIC8vIFdyaXRlcyBhIGR5bmFtaWMgcmVzcG9uc2UgaW50byBhbiBleGlzdGluZyBDYWNoZSBOb2RlIHRyZWUuIFRoaXMgZG9lcyBfbm90X1xuICAvLyBjcmVhdGUgYSBuZXcgdHJlZSwgaXQgdXBkYXRlcyB0aGUgZXhpc3RpbmcgdHJlZSBpbi1wbGFjZS4gU28gaXQgbXVzdCBmb2xsb3dcbiAgLy8gdGhlIFN1c3BlbnNlIHJ1bGVzIG9mIGNhY2hlIHNhZmV0eSDigJQgaXQgY2FuIHJlc29sdmUgcGVuZGluZyBwcm9taXNlcywgYnV0XG4gIC8vIGl0IGNhbm5vdCBvdmVyd3JpdGUgZXhpc3RpbmcgZGF0YS4gSXQgY2FuIGFkZCBzZWdtZW50cyB0byB0aGUgdHJlZSAoYmVjYXVzZVxuICAvLyBhIG1pc3Npbmcgc2VnbWVudCB3aWxsIGNhdXNlIHRoZSBsYXlvdXQgcm91dGVyIHRvIHN1c3BlbmQpLlxuICAvLyBidXQgaXQgY2Fubm90IGRlbGV0ZSB0aGVtLlxuICAvL1xuICAvLyBXZSBtdXN0IHJlc29sdmUgZXZlcnkgcHJvbWlzZSBpbiB0aGUgdHJlZSwgb3IgZWxzZSBpdCB3aWxsIHN1c3BlbmRcbiAgLy8gaW5kZWZpbml0ZWx5LiBJZiB3ZSBkaWQgbm90IHJlY2VpdmUgZGF0YSBmb3IgYSBzZWdtZW50LCB3ZSB3aWxsIHJlc29sdmUgaXRzXG4gIC8vIGRhdGEgcHJvbWlzZSB0byBgbnVsbGAgdG8gdHJpZ2dlciBhIGxhenkgZmV0Y2ggZHVyaW5nIHJlbmRlci5cblxuICAvLyBVc2UgdGhlIGR5bmFtaWMgZGF0YSBmcm9tIHRoZSBzZXJ2ZXIgdG8gZnVsZmlsbCB0aGUgZGVmZXJyZWQgUlNDIHByb21pc2VcbiAgLy8gb24gdGhlIENhY2hlIE5vZGUuXG4gIGNvbnN0IHJzYyA9IGNhY2hlTm9kZS5yc2NcbiAgY29uc3QgZHluYW1pY1NlZ21lbnREYXRhID0gZHluYW1pY0RhdGFbMF1cblxuICBpZiAoZHluYW1pY1NlZ21lbnREYXRhID09PSBudWxsKSB7XG4gICAgLy8gVGhpcyBpcyBhbiBlbXB0eSBDYWNoZU5vZGU7IHRoaXMgcGFydGljdWxhciBzZXJ2ZXIgcmVxdWVzdCBkaWQgbm90XG4gICAgLy8gcmVuZGVyIHRoaXMgc2VnbWVudC4gVGhlcmUgbWF5IGJlIGEgc2VwYXJhdGUgcGVuZGluZyByZXF1ZXN0IHRoYXQgd2lsbCxcbiAgICAvLyB0aG91Z2gsIHNvIHdlIHdvbid0IGFib3J0IHRoZSB0YXNrIHVudGlsIGFsbCBwZW5kaW5nIHJlcXVlc3RzIGZpbmlzaC5cbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmIChyc2MgPT09IG51bGwpIHtcbiAgICAvLyBUaGlzIGlzIGEgbGF6eSBjYWNoZSBub2RlLiBXZSBjYW4gb3ZlcndyaXRlIGl0LiBUaGlzIGlzIG9ubHkgc2FmZVxuICAgIC8vIGJlY2F1c2Ugd2Uga25vdyB0aGF0IHRoZSBMYXlvdXRSb3V0ZXIgc3VzcGVuZHMgaWYgYHJzY2AgaXMgYG51bGxgLlxuICAgIGNhY2hlTm9kZS5yc2MgPSBkeW5hbWljU2VnbWVudERhdGFcbiAgfSBlbHNlIGlmIChpc0RlZmVycmVkUnNjKHJzYykpIHtcbiAgICAvLyBUaGlzIGlzIGEgZGVmZXJyZWQgUlNDIHByb21pc2UuIFdlIGNhbiBmdWxmaWxsIGl0IHdpdGggdGhlIGRhdGEgd2UganVzdFxuICAgIC8vIHJlY2VpdmVkIGZyb20gdGhlIHNlcnZlci4gSWYgaXQgd2FzIGFscmVhZHkgcmVzb2x2ZWQgYnkgYSBkaWZmZXJlbnRcbiAgICAvLyBuYXZpZ2F0aW9uLCB0aGVuIHRoaXMgZG9lcyBub3RoaW5nIGJlY2F1c2Ugd2UgY2FuJ3Qgb3ZlcndyaXRlIGRhdGEuXG4gICAgcnNjLnJlc29sdmUoZHluYW1pY1NlZ21lbnREYXRhLCBkZWJ1Z0luZm8pXG4gIH0gZWxzZSB7XG4gICAgLy8gVGhpcyBpcyBub3QgYSBkZWZlcnJlZCBSU0MgcHJvbWlzZSwgbm9yIGlzIGl0IGVtcHR5LCBzbyBpdCBtdXN0IGhhdmVcbiAgICAvLyBiZWVuIHBvcHVsYXRlZCBieSBhIGRpZmZlcmVudCBuYXZpZ2F0aW9uLiBXZSBtdXN0IG5vdCBvdmVyd3JpdGUgaXQuXG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGlzIGlzIGEgbGVhZiBzZWdtZW50LiBJZiBzbywgaXQgd2lsbCBoYXZlIGEgYGhlYWRgIHByb3BlcnR5IHdpdGhcbiAgLy8gYSBwZW5kaW5nIHByb21pc2UgdGhhdCBuZWVkcyB0byBiZSByZXNvbHZlZCB3aXRoIHRoZSBkeW5hbWljIGhlYWQgZnJvbVxuICAvLyB0aGUgc2VydmVyLlxuICBjb25zdCBoZWFkID0gY2FjaGVOb2RlLmhlYWRcbiAgaWYgKGlzRGVmZXJyZWRSc2MoaGVhZCkpIHtcbiAgICBoZWFkLnJlc29sdmUoZHluYW1pY0hlYWQsIGRlYnVnSW5mbylcbiAgfVxufVxuXG5mdW5jdGlvbiBhYm9ydFJlbWFpbmluZ1BlbmRpbmdUYXNrcyhcbiAgdGFzazogTmF2aWdhdGlvblRhc2ssXG4gIGVycm9yOiBhbnksXG4gIGRlYnVnSW5mbzogQXJyYXk8YW55PiB8IG51bGxcbik6IE5hdmlnYXRpb25UYXNrRXhpdFN0YXR1cyB7XG4gIGxldCBleGl0U3RhdHVzXG4gIGlmICh0YXNrLnN0YXR1cyA9PT0gTmF2aWdhdGlvblRhc2tTdGF0dXMuUGVuZGluZykge1xuICAgIC8vIFRoZSBkYXRhIGZvciB0aGlzIHNlZ21lbnQgaXMgc3RpbGwgbWlzc2luZy5cbiAgICB0YXNrLnN0YXR1cyA9IE5hdmlnYXRpb25UYXNrU3RhdHVzLlJlamVjdGVkXG4gICAgYWJvcnRQZW5kaW5nQ2FjaGVOb2RlKHRhc2subm9kZSwgZXJyb3IsIGRlYnVnSW5mbylcblxuICAgIC8vIElmIHRoZSBzZXJ2ZXIgZmFpbGVkIHRvIGZ1bGZpbGwgdGhlIGRhdGEgZm9yIHRoaXMgc2VnbWVudCwgaXQgaW1wbGllc1xuICAgIC8vIHRoYXQgdGhlIHJvdXRlIHRyZWUgcmVjZWl2ZWQgZnJvbSB0aGUgc2VydmVyIG1pc21hdGNoZWQgdGhlIHRyZWUgdGhhdFxuICAgIC8vIHdhcyBwcmV2aW91c2x5IHByZWZldGNoZWQuXG4gICAgLy9cbiAgICAvLyBJbiBhbiBhcHAgd2l0aCBmdWxseSBzdGF0aWMgcm91dGVzIGFuZCBubyBwcm94eS1kcml2ZW4gcmVkaXJlY3RzIG9yXG4gICAgLy8gcmV3cml0ZXMsIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiwgYmVjYXVzZSB0aGUgcm91dGUgZm9yIGEgVVJMIHdvdWxkXG4gICAgLy8gYWx3YXlzIGJlIHRoZSBzYW1lIGFjcm9zcyBtdWx0aXBsZSByZXF1ZXN0cy4gU28sIHRoaXMgaW1wbGllcyB0aGF0IHNvbWVcbiAgICAvLyBydW50aW1lIHJvdXRpbmcgY29uZGl0aW9uIGNoYW5nZWQsIGxpa2VseSBpbiBhIHByb3h5LCB3aXRob3V0IGJlaW5nXG4gICAgLy8gcHVzaGVkIHRvIHRoZSBjbGllbnQuXG4gICAgLy9cbiAgICAvLyBXaGVuIHRoaXMgaGFwcGVucywgd2UgdHJlYXQgdGhpcyB0aGUgc2FtZSBhcyBhIHJlZnJlc2goKS4gVGhlIGVudGlyZVxuICAgIC8vIHRyZWUgd2lsbCBiZSByZS1yZW5kZXJlZCBmcm9tIHRoZSByb290LlxuICAgIGlmICh0YXNrLnJlZnJlc2hTdGF0ZSA9PT0gbnVsbCkge1xuICAgICAgLy8gVHJpZ2dlciBhIFwic29mdFwiIHJlZnJlc2guIEVzc2VudGlhbGx5IHRoZSBzYW1lIGFzIGNhbGxpbmcgYHJlZnJlc2goKWBcbiAgICAgIC8vIGluIGEgU2VydmVyIEFjdGlvbi5cbiAgICAgIGV4aXRTdGF0dXMgPSBOYXZpZ2F0aW9uVGFza0V4aXRTdGF0dXMuU29mdFJldHJ5XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZSBtaXNtYXRjaCB3YXMgZGlzY292ZXJlZCBpbnNpZGUgYW4gaW5hY3RpdmUgcGFyYWxsZWwgcm91dGUuIFRoaXNcbiAgICAgIC8vIGltcGxpZXMgdGhlIGluYWN0aXZlIHBhcmFsbGVsIHJvdXRlIGlzIG5vIGxvbmdlciByZWFjaGFibGUgYXQgdGhlIFVSTFxuICAgICAgLy8gdGhhdCBvcmlnaW5hbGx5IHJlbmRlcmVkIGl0LiBGYWxsIGJhY2sgdG8gYW4gTVBBIHJlZnJlc2guXG4gICAgICAvLyBUT0RPOiBBbiBhbHRlcm5hdGl2ZSBjb3VsZCBiZSB0byB0cmlnZ2VyIGEgc29mdCByZWZyZXNoIGJ1dCB0byBfbm90X1xuICAgICAgLy8gcmUtdXNlIHRoZSBpbmFjdGl2ZSBwYXJhbGxlbCByb3V0ZXMgdGhpcyB0aW1lLiBTaW1pbGFyIHRvIHdoYXQgd291bGRcbiAgICAgIC8vIGhhcHBlbiBpZiB3ZXJlIHRvIGRvIGEgaGFyZCByZWZyZWhzLCBidXQgd2l0aG91dCB0aGUgSFRNTCBwYWdlLlxuICAgICAgZXhpdFN0YXR1cyA9IE5hdmlnYXRpb25UYXNrRXhpdFN0YXR1cy5IYXJkUmV0cnlcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gVGhpcyBzZWdtZW50IGZpbmlzaGVkLiAoQW4gZXJyb3IgaGVyZSBpcyB0cmVhdGVkIGFzIERvbmUgYmVjYXVzZSB0aGV5IGFyZVxuICAgIC8vIHN1cmZhY2VkIHRvIHRoZSBhcHBsaWNhdGlvbiBkdXJpbmcgcmVuZGVyLilcbiAgICBleGl0U3RhdHVzID0gTmF2aWdhdGlvblRhc2tFeGl0U3RhdHVzLkRvbmVcbiAgfVxuXG4gIGNvbnN0IHRhc2tDaGlsZHJlbiA9IHRhc2suY2hpbGRyZW5cbiAgaWYgKHRhc2tDaGlsZHJlbiAhPT0gbnVsbCkge1xuICAgIGZvciAoY29uc3QgWywgdGFza0NoaWxkXSBvZiB0YXNrQ2hpbGRyZW4pIHtcbiAgICAgIGNvbnN0IGNoaWxkRXhpdFN0YXR1cyA9IGFib3J0UmVtYWluaW5nUGVuZGluZ1Rhc2tzKFxuICAgICAgICB0YXNrQ2hpbGQsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBkZWJ1Z0luZm9cbiAgICAgIClcbiAgICAgIC8vIFByb3BhZ2F0ZSB0aGUgZXhpdCBzdGF0dXMgdXAgdGhlIHRyZWUuIFRoZSBzdGF0dXNlcyBhcmUgb3JkZXJlZCBieVxuICAgICAgLy8gdGhlaXIgcHJlY2VkZW5jZS5cbiAgICAgIGlmIChjaGlsZEV4aXRTdGF0dXMgPiBleGl0U3RhdHVzKSB7XG4gICAgICAgIGV4aXRTdGF0dXMgPSBjaGlsZEV4aXRTdGF0dXNcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXhpdFN0YXR1c1xufVxuXG5mdW5jdGlvbiBhYm9ydFBlbmRpbmdDYWNoZU5vZGUoXG4gIGNhY2hlTm9kZTogQ2FjaGVOb2RlLFxuICBlcnJvcjogYW55LFxuICBkZWJ1Z0luZm86IEFycmF5PGFueT4gfCBudWxsXG4pOiB2b2lkIHtcbiAgY29uc3QgcnNjID0gY2FjaGVOb2RlLnJzY1xuICBpZiAoaXNEZWZlcnJlZFJzYyhyc2MpKSB7XG4gICAgaWYgKGVycm9yID09PSBudWxsKSB7XG4gICAgICAvLyBUaGlzIHdpbGwgdHJpZ2dlciBhIGxhenkgZmV0Y2ggZHVyaW5nIHJlbmRlci5cbiAgICAgIHJzYy5yZXNvbHZlKG51bGwsIGRlYnVnSW5mbylcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgYW4gZXJyb3IgZHVyaW5nIHJlbmRlcmluZy5cbiAgICAgIHJzYy5yZWplY3QoZXJyb3IsIGRlYnVnSW5mbylcbiAgICB9XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGlzIGlzIGEgbGVhZiBzZWdtZW50LiBJZiBzbywgaXQgd2lsbCBoYXZlIGEgYGhlYWRgIHByb3BlcnR5IHdpdGhcbiAgLy8gYSBwZW5kaW5nIHByb21pc2UgdGhhdCBuZWVkcyB0byBiZSByZXNvbHZlZC4gSWYgYW4gZXJyb3Igd2FzIHByb3ZpZGVkLCB3ZVxuICAvLyB3aWxsIG5vdCByZXNvbHZlIGl0IHdpdGggYW4gZXJyb3IsIHNpbmNlIHRoaXMgaXMgcmVuZGVyZWQgYXQgdGhlIHJvb3Qgb2ZcbiAgLy8gdGhlIGFwcC4gV2Ugd2FudCB0aGUgc2VnbWVudCB0byBlcnJvciwgbm90IHRoZSBlbnRpcmUgYXBwLlxuICBjb25zdCBoZWFkID0gY2FjaGVOb2RlLmhlYWRcbiAgaWYgKGlzRGVmZXJyZWRSc2MoaGVhZCkpIHtcbiAgICBoZWFkLnJlc29sdmUobnVsbCwgZGVidWdJbmZvKVxuICB9XG59XG5cbmNvbnN0IERFRkVSUkVEID0gU3ltYm9sKClcblxudHlwZSBQZW5kaW5nRGVmZXJyZWRSc2M8VD4gPSBQcm9taXNlPFQ+ICYge1xuICBzdGF0dXM6ICdwZW5kaW5nJ1xuICByZXNvbHZlOiAodmFsdWU6IFQsIGRlYnVnSW5mbzogQXJyYXk8YW55PiB8IG51bGwpID0+IHZvaWRcbiAgcmVqZWN0OiAoZXJyb3I6IGFueSwgZGVidWdJbmZvOiBBcnJheTxhbnk+IHwgbnVsbCkgPT4gdm9pZFxuICB0YWc6IFN5bWJvbFxuICBfZGVidWdJbmZvOiBBcnJheTxhbnk+XG59XG5cbnR5cGUgRnVsZmlsbGVkRGVmZXJyZWRSc2M8VD4gPSBQcm9taXNlPFQ+ICYge1xuICBzdGF0dXM6ICdmdWxmaWxsZWQnXG4gIHZhbHVlOiBUXG4gIHJlc29sdmU6ICh2YWx1ZTogVCwgZGVidWdJbmZvOiBBcnJheTxhbnk+IHwgbnVsbCkgPT4gdm9pZFxuICByZWplY3Q6IChlcnJvcjogYW55LCBkZWJ1Z0luZm86IEFycmF5PGFueT4gfCBudWxsKSA9PiB2b2lkXG4gIHRhZzogU3ltYm9sXG4gIF9kZWJ1Z0luZm86IEFycmF5PGFueT5cbn1cblxudHlwZSBSZWplY3RlZERlZmVycmVkUnNjPFQ+ID0gUHJvbWlzZTxUPiAmIHtcbiAgc3RhdHVzOiAncmVqZWN0ZWQnXG4gIHJlYXNvbjogYW55XG4gIHJlc29sdmU6ICh2YWx1ZTogVCwgZGVidWdJbmZvOiBBcnJheTxhbnk+IHwgbnVsbCkgPT4gdm9pZFxuICByZWplY3Q6IChlcnJvcjogYW55LCBkZWJ1Z0luZm86IEFycmF5PGFueT4gfCBudWxsKSA9PiB2b2lkXG4gIHRhZzogU3ltYm9sXG4gIF9kZWJ1Z0luZm86IEFycmF5PGFueT5cbn1cblxudHlwZSBEZWZlcnJlZFJzYzxUIGV4dGVuZHMgUmVhY3QuUmVhY3ROb2RlID0gUmVhY3QuUmVhY3ROb2RlPiA9XG4gIHwgUGVuZGluZ0RlZmVycmVkUnNjPFQ+XG4gIHwgRnVsZmlsbGVkRGVmZXJyZWRSc2M8VD5cbiAgfCBSZWplY3RlZERlZmVycmVkUnNjPFQ+XG5cbi8vIFRoaXMgdHlwZSBleGlzdHMgdG8gZGlzdGluZ3Vpc2ggYSBEZWZlcnJlZFJzYyBmcm9tIGEgRmxpZ2h0IHByb21pc2UuIEl0J3MgYVxuLy8gY29tcHJvbWlzZSB0byBhdm9pZCBhZGRpbmcgYW4gZXh0cmEgZmllbGQgb24gZXZlcnkgQ2FjaGUgTm9kZSwgd2hpY2ggd291bGQgYmVcbi8vIGF3a3dhcmQgYmVjYXVzZSB0aGUgcHJlLVBQUiBwYXJ0cyBvZiBjb2RlYmFzZSB3b3VsZCBuZWVkIHRvIGFjY291bnQgZm9yIGl0LFxuLy8gdG9vLiBXZSBjYW4gcmVtb3ZlIGl0IG9uY2UgdHlwZSBDYWNoZSBOb2RlIHR5cGUgaXMgbW9yZSBzZXR0bGVkLlxuZXhwb3J0IGZ1bmN0aW9uIGlzRGVmZXJyZWRSc2ModmFsdWU6IGFueSk6IHZhbHVlIGlzIERlZmVycmVkUnNjIHtcbiAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUudGFnID09PSBERUZFUlJFRFxufVxuXG5mdW5jdGlvbiBjcmVhdGVEZWZlcnJlZFJzYzxcbiAgVCBleHRlbmRzIFJlYWN0LlJlYWN0Tm9kZSA9IFJlYWN0LlJlYWN0Tm9kZSxcbj4oKTogUGVuZGluZ0RlZmVycmVkUnNjPFQ+IHtcbiAgLy8gQ3JlYXRlIGFuIHVucmVzb2x2ZWQgcHJvbWlzZSB0aGF0IHJlcHJlc2VudHMgZGF0YSBkZXJpdmVkIGZyb20gYSBGbGlnaHRcbiAgLy8gcmVzcG9uc2UuIFRoZSBwcm9taXNlIHdpbGwgYmUgcmVzb2x2ZWQgbGF0ZXIgYXMgc29vbiBhcyB3ZSBzdGFydCByZWNlaXZpbmdcbiAgLy8gZGF0YSBmcm9tIHRoZSBzZXJ2ZXIsIGkuZS4gYXMgc29vbiBhcyB0aGUgRmxpZ2h0IGNsaWVudCBkZWNvZGVzIGFuZCByZXR1cm5zXG4gIC8vIHRoZSB0b3AtbGV2ZWwgcmVzcG9uc2Ugb2JqZWN0LlxuXG4gIC8vIFRoZSBgX2RlYnVnSW5mb2AgZmllbGQgY29udGFpbnMgcHJvZmlsaW5nIGluZm9ybWF0aW9uLiBQcm9taXNlcyB0aGF0IGFyZVxuICAvLyBjcmVhdGVkIGJ5IEZsaWdodCBhbHJlYWR5IGhhdmUgdGhpcyBpbmZvIGFkZGVkIGJ5IFJlYWN0OyBmb3IgYW55IGRlcml2ZWRcbiAgLy8gcHJvbWlzZSBjcmVhdGVkIGJ5IHRoZSByb3V0ZXIsIHdlIG5lZWQgdG8gdHJhbnNmZXIgdGhlIEZsaWdodCBkZWJ1ZyBpbmZvXG4gIC8vIG9udG8gdGhlIGRlcml2ZWQgcHJvbWlzZS5cbiAgLy9cbiAgLy8gVGhlIGRlYnVnIGluZm8gcmVwcmVzZW50cyB0aGUgbGF0ZW5jeSBiZXR3ZWVuIHRoZSBzdGFydCBvZiB0aGUgbmF2aWdhdGlvblxuICAvLyBhbmQgdGhlIHN0YXJ0IG9mIHJlbmRlcmluZy4gKEl0IGRvZXMgbm90IHJlcHJlc2VudCB0aGUgdGltZSBpdCB0YWtlcyBmb3JcbiAgLy8gd2hvbGUgc3RyZWFtIHRvIGZpbmlzaC4pXG4gIGNvbnN0IGRlYnVnSW5mbzogQXJyYXk8YW55PiA9IFtdXG5cbiAgbGV0IHJlc29sdmU6IGFueVxuICBsZXQgcmVqZWN0OiBhbnlcbiAgY29uc3QgcGVuZGluZ1JzYyA9IG5ldyBQcm9taXNlPFQ+KChyZXMsIHJlaikgPT4ge1xuICAgIHJlc29sdmUgPSByZXNcbiAgICByZWplY3QgPSByZWpcbiAgfSkgYXMgUGVuZGluZ0RlZmVycmVkUnNjPFQ+XG4gIHBlbmRpbmdSc2Muc3RhdHVzID0gJ3BlbmRpbmcnXG4gIHBlbmRpbmdSc2MucmVzb2x2ZSA9ICh2YWx1ZTogVCwgcmVzcG9uc2VEZWJ1Z0luZm86IEFycmF5PGFueT4gfCBudWxsKSA9PiB7XG4gICAgaWYgKHBlbmRpbmdSc2Muc3RhdHVzID09PSAncGVuZGluZycpIHtcbiAgICAgIGNvbnN0IGZ1bGZpbGxlZFJzYzogRnVsZmlsbGVkRGVmZXJyZWRSc2M8VD4gPSBwZW5kaW5nUnNjIGFzIGFueVxuICAgICAgZnVsZmlsbGVkUnNjLnN0YXR1cyA9ICdmdWxmaWxsZWQnXG4gICAgICBmdWxmaWxsZWRSc2MudmFsdWUgPSB2YWx1ZVxuICAgICAgaWYgKHJlc3BvbnNlRGVidWdJbmZvICE9PSBudWxsKSB7XG4gICAgICAgIC8vIFRyYW5zZmVyIHRoZSBkZWJ1ZyBpbmZvIHRvIHRoZSBkZXJpdmVkIHByb21pc2UuXG4gICAgICAgIGRlYnVnSW5mby5wdXNoLmFwcGx5KGRlYnVnSW5mbywgcmVzcG9uc2VEZWJ1Z0luZm8pXG4gICAgICB9XG4gICAgICByZXNvbHZlKHZhbHVlKVxuICAgIH1cbiAgfVxuICBwZW5kaW5nUnNjLnJlamVjdCA9IChlcnJvcjogYW55LCByZXNwb25zZURlYnVnSW5mbzogQXJyYXk8YW55PiB8IG51bGwpID0+IHtcbiAgICBpZiAocGVuZGluZ1JzYy5zdGF0dXMgPT09ICdwZW5kaW5nJykge1xuICAgICAgY29uc3QgcmVqZWN0ZWRSc2M6IFJlamVjdGVkRGVmZXJyZWRSc2M8VD4gPSBwZW5kaW5nUnNjIGFzIGFueVxuICAgICAgcmVqZWN0ZWRSc2Muc3RhdHVzID0gJ3JlamVjdGVkJ1xuICAgICAgcmVqZWN0ZWRSc2MucmVhc29uID0gZXJyb3JcbiAgICAgIGlmIChyZXNwb25zZURlYnVnSW5mbyAhPT0gbnVsbCkge1xuICAgICAgICAvLyBUcmFuc2ZlciB0aGUgZGVidWcgaW5mbyB0byB0aGUgZGVyaXZlZCBwcm9taXNlLlxuICAgICAgICBkZWJ1Z0luZm8ucHVzaC5hcHBseShkZWJ1Z0luZm8sIHJlc3BvbnNlRGVidWdJbmZvKVxuICAgICAgfVxuICAgICAgcmVqZWN0KGVycm9yKVxuICAgIH1cbiAgfVxuICBwZW5kaW5nUnNjLnRhZyA9IERFRkVSUkVEXG4gIHBlbmRpbmdSc2MuX2RlYnVnSW5mbyA9IGRlYnVnSW5mb1xuXG4gIHJldHVybiBwZW5kaW5nUnNjXG59XG5cbi8qKlxuICogSGVscGVyIGZvciB0aGUgSW5zdGFudCBOYXZpZ2F0aW9uIFRlc3RpbmcgQVBJLiBXYWl0cyBmb3IgdGhlIG5hdmlnYXRpb24gbG9ja1xuICogdG8gYmUgcmVsZWFzZWQgYmVmb3JlIHJldHVybmluZy4gVGhlIG5ldHdvcmsgcmVxdWVzdCBoYXMgYWxyZWFkeSBjb21wbGV0ZWQgYnlcbiAqIHRoZSB0aW1lIHRoaXMgaXMgY2FsbGVkLCBzbyB0aGlzIG9ubHkgZGVsYXlzIHdyaXRpbmcgdGhlIGR5bmFtaWMgZGF0YS5cbiAqXG4gKiBOb3QgZXhwb3NlZCBpbiBwcm9kdWN0aW9uIGJ1aWxkcyBieSBkZWZhdWx0LlxuICovXG5hc3luYyBmdW5jdGlvbiB3YWl0Rm9yTmF2aWdhdGlvbkxvY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChwcm9jZXNzLmVudi5fX05FWFRfRVhQT1NFX1RFU1RJTkdfQVBJKSB7XG4gICAgY29uc3QgeyB3YWl0Rm9yTmF2aWdhdGlvbkxvY2tJZkFjdGl2ZSB9ID1cbiAgICAgIHJlcXVpcmUoJy4uL3NlZ21lbnQtY2FjaGUvbmF2aWdhdGlvbi10ZXN0aW5nLWxvY2snKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi9zZWdtZW50LWNhY2hlL25hdmlnYXRpb24tdGVzdGluZy1sb2NrJylcbiAgICBhd2FpdCB3YWl0Rm9yTmF2aWdhdGlvbkxvY2tJZkFjdGl2ZSgpXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJGcmVzaG5lc3NQb2xpY3kiLCJjcmVhdGVJbml0aWFsQ2FjaGVOb2RlRm9ySHlkcmF0aW9uIiwiaXNEZWZlcnJlZFJzYyIsInNwYXduRHluYW1pY1JlcXVlc3RzIiwic3RhcnRQUFJOYXZpZ2F0aW9uIiwibm9vcCIsIm5hdmlnYXRlZEF0IiwiaW5pdGlhbFRyZWUiLCJzZWVkRGF0YSIsInNlZWRIZWFkIiwic2VlZER5bmFtaWNTdGFsZUF0IiwiYWNjdW11bGF0aW9uIiwic2VwYXJhdGVSZWZyZXNoVXJscyIsInNjcm9sbFJlZiIsInRhc2siLCJjcmVhdGVDYWNoZU5vZGVPbk5hdmlnYXRpb24iLCJvbGRVcmwiLCJvbGRSZW5kZXJlZFNlYXJjaCIsIm9sZENhY2hlTm9kZSIsIm9sZFJvdXRlclN0YXRlIiwibmV3Um91dGVUcmVlIiwibmV3TWV0YWRhdGFWYXJ5UGF0aCIsImZyZXNobmVzcyIsImlzU2FtZVBhZ2VOYXZpZ2F0aW9uIiwiZGlkRmluZFJvb3RMYXlvdXQiLCJwYXJlbnROZWVkc0R5bmFtaWNSZXF1ZXN0IiwicGFyZW50UmVmcmVzaFN0YXRlIiwib2xkUm9vdFJlZnJlc2hTdGF0ZSIsImNhbm9uaWNhbFVybCIsImNyZWF0ZUhyZWZGcm9tVXJsIiwicmVuZGVyZWRTZWFyY2giLCJ1cGRhdGVDYWNoZU5vZGVPbk5hdmlnYXRpb24iLCJ1bmRlZmluZWQiLCJvbGRTZWdtZW50IiwibmV3U2VnbWVudCIsImNyZWF0ZVNlZ21lbnRGcm9tUm91dGVUcmVlIiwibWF0Y2hTZWdtZW50IiwiaXNOYXZpZ2F0aW5nVG9OZXdSb290TGF5b3V0IiwiTk9UX0ZPVU5EX1NFR01FTlRfS0VZIiwibmV3U2xvdHMiLCJzbG90cyIsIm9sZFJvdXRlclN0YXRlQ2hpbGRyZW4iLCJzZWVkRGF0YUNoaWxkcmVuIiwiY2hpbGREaWRGaW5kUm9vdExheW91dCIsInByZWZldGNoSGludHMiLCJQcmVmZXRjaEhpbnQiLCJJc1Jvb3RMYXlvdXQiLCJzaG91bGRSZWZyZXNoRHluYW1pY0RhdGEiLCJpc0xlYWZTZWdtZW50IiwibmV3Q2FjaGVOb2RlIiwibmVlZHNEeW5hbWljUmVxdWVzdCIsImRyb3BQcmVmZXRjaFJzYyIsInJldXNlU2hhcmVkQ2FjaGVOb2RlIiwic2VlZFJzYyIsInJlc3VsdCIsImNyZWF0ZUNhY2hlTm9kZUZvclNlZ21lbnQiLCJjYWNoZU5vZGUiLCJtYXliZVJlZnJlc2hTdGF0ZSIsInJlZnJlc2hTdGF0ZSIsImFjY3VtdWxhdGVSZWZyZXNoVXJsIiwicGF0Y2hlZFJvdXRlclN0YXRlQ2hpbGRyZW4iLCJ0YXNrQ2hpbGRyZW4iLCJjaGlsZE5lZWRzRHluYW1pY1JlcXVlc3QiLCJkeW5hbWljUmVxdWVzdFRyZWVDaGlsZHJlbiIsIm5ld0NhY2hlTm9kZVNsb3RzIiwib2xkQ2FjaGVOb2RlU2xvdHMiLCJNYXAiLCJwYXJhbGxlbFJvdXRlS2V5IiwibmV3Um91dGVUcmVlQ2hpbGQiLCJvbGRSb3V0ZXJTdGF0ZUNoaWxkIiwic2VlZERhdGFDaGlsZCIsIm9sZFNlZ21lbnRDaGlsZCIsIm5ld1NlZ21lbnRDaGlsZCIsInNlZWRIZWFkQ2hpbGQiLCJERUZBVUxUX1NFR01FTlRfS0VZIiwicmV1c2VBY3RpdmVTZWdtZW50SW5EZWZhdWx0U2xvdCIsIm9sZENhY2hlTm9kZUNoaWxkIiwidGFza0NoaWxkIiwic2V0Iiwibm9kZSIsInRhc2tDaGlsZFJvdXRlIiwicm91dGUiLCJkeW5hbWljUmVxdWVzdFRyZWVDaGlsZCIsImR5bmFtaWNSZXF1ZXN0VHJlZSIsIm5ld0ZsaWdodFJvdXRlclN0YXRlIiwic3RhdHVzIiwiY3JlYXRlRHluYW1pY1JlcXVlc3RUcmVlIiwiY2hpbGRyZW4iLCJhY2N1bXVsYXRlU2Nyb2xsUmVmIiwiY3VycmVudCIsImlzUGFnZSIsImdldFJlbmRlcmVkU2VhcmNoRnJvbVZhcnlQYXRoIiwidmFyeVBhdGgiLCJQQUdFX1NFR01FTlRfS0VZIiwic3RyaW5naWZpZWRRdWVyeSIsIkpTT04iLCJzdHJpbmdpZnkiLCJPYmplY3QiLCJmcm9tRW50cmllcyIsIlVSTFNlYXJjaFBhcmFtcyIsInNlZ21lbnQiLCJwYXRjaFJvdXRlclN0YXRlV2l0aE5ld0NoaWxkcmVuIiwiYmFzZVJvdXRlclN0YXRlIiwibmV3Q2hpbGRyZW4iLCJjbG9uZSIsIm5ld1JvdXRlclN0YXRlIiwicmVmcmVzaFVybCIsIlNldCIsImFkZCIsInBhcmVudFJvdXRlVHJlZSIsInJldXNlZFVybCIsInJldXNlZFJlbmRlcmVkU2VhcmNoIiwib2xkUmVmcmVzaFN0YXRlIiwiYWNjIiwibWV0YWRhdGFWYXJ5UGF0aCIsInJldXNlZFJvdXRlVHJlZSIsImNvbnZlcnRSZXVzZWRGbGlnaHRSb3V0ZXJTdGF0ZVRvUm91dGVUcmVlIiwiZXhpc3RpbmdDYWNoZU5vZGUiLCJjcmVhdGVDYWNoZU5vZGUiLCJyc2MiLCJwcmVmZXRjaFJzYyIsImhlYWQiLCJwcmVmZXRjaEhlYWQiLCJub3ciLCJ0cmVlIiwiZHluYW1pY1N0YWxlQXQiLCJiZmNhY2hlRW50cnkiLCJyZWFkRnJvbUJGQ2FjaGVEdXJpbmdSZWd1bGFyTmF2aWdhdGlvbiIsIndyaXRlVG9CRkNhY2hlIiwid3JpdGVIZWFkVG9CRkNhY2hlIiwicmVhZEZyb21CRkNhY2hlIiwib2xkUnNjIiwib2xkUnNjRGlkUmVzb2x2ZSIsImNhY2hlZFJzYyIsImlzQ2FjaGVkUnNjUGFydGlhbCIsInNlZ21lbnRFbnRyeSIsInJlYWRTZWdtZW50Q2FjaGVFbnRyeSIsIkVudHJ5U3RhdHVzIiwiRnVsZmlsbGVkIiwiaXNQYXJ0aWFsIiwiUGVuZGluZyIsInByb21pc2VGb3JGdWxmaWxsZWRFbnRyeSIsIndhaXRGb3JTZWdtZW50Q2FjaGVFbnRyeSIsInRoZW4iLCJlbnRyeSIsIkVtcHR5IiwiUmVqZWN0ZWQiLCJkb2VzU2VnbWVudE5lZWREeW5hbWljUmVxdWVzdCIsImNyZWF0ZURlZmVycmVkUnNjIiwiZG9lc0hlYWROZWVkRHluYW1pY1JlcXVlc3QiLCJjYWNoZWRIZWFkIiwiaXNDYWNoZWRIZWFkUGFydGlhbCIsIm1ldGFkYXRhRW50cnkiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX09QVElNSVNUSUNfUk9VVElORyIsInByZXZpb3VzTmF2aWdhdGlvbkRpZE1pc21hdGNoIiwicHJpbWFyeVVybCIsIm5leHRVcmwiLCJmcmVzaG5lc3NQb2xpY3kiLCJyb3V0ZUNhY2hlRW50cnkiLCJuYXZpZ2F0ZVR5cGUiLCJwcmltYXJ5UmVxdWVzdFByb21pc2UiLCJmZXRjaE1pc3NpbmdEeW5hbWljRGF0YSIsInJlZnJlc2hSZXF1ZXN0UHJvbWlzZXMiLCJzY29wZWREeW5hbWljUmVxdWVzdFRyZWUiLCJwdXNoIiwiVVJMIiwibG9jYXRpb24iLCJvcmlnaW4iLCJ2b2lkUHJvbWlzZSIsImZpbmlzaE5hdmlnYXRpb25UYXNrIiwiZXhpdFN0YXR1cyIsIndhaXRGb3JSZXF1ZXN0c1RvRmluaXNoIiwiYWJvcnRSZW1haW5pbmdQZW5kaW5nVGFza3MiLCJpc0hhcmRSZXRyeSIsInByaW1hcnlSZXF1ZXN0UmVzdWx0IiwiZGlzcGF0Y2hSZXRyeUR1ZVRvVHJlZU1pc21hdGNoIiwidXJsIiwic2VlZCIsIlByb21pc2UiLCJyZXNvbHZlIiwib25GdWxmaWxsIiwicmVtYWluaW5nQ291bnQiLCJvblJlamVjdCIsImxlbmd0aCIsImZvckVhY2giLCJyZWZyZXNoUmVxdWVzdFByb21pc2UiLCJyZXRyeVVybCIsInJldHJ5TmV4dFVybCIsImJhc2VUcmVlIiwib3JpZ2luYWxOYXZpZ2F0ZVR5cGUiLCJtYXJrUm91dGVFbnRyeUFzRHluYW1pY1Jld3JpdGUiLCJEYXRlIiwiZGlzY292ZXJLbm93blJvdXRlIiwicGF0aG5hbWUiLCJyb3V0ZVRyZWUiLCJpbnZhbGlkYXRlUm91dGVDYWNoZUVudHJpZXMiLCJsYXN0Q29tbWl0dGVkIiwiZ2V0TGFzdENvbW1pdHRlZFRyZWUiLCJyZXRyeU5hdmlnYXRlVHlwZSIsInJldHJ5QWN0aW9uIiwidHlwZSIsIkFDVElPTl9TRVJWRVJfUEFUQ0giLCJwcmV2aW91c1RyZWUiLCJtcGEiLCJkaXNwYXRjaEFwcFJvdXRlckFjdGlvbiIsImZldGNoU2VydmVyUmVzcG9uc2UiLCJmbGlnaHRSb3V0ZXJTdGF0ZSIsImlzSG1yUmVmcmVzaCIsImNvbnZlcnRTZXJ2ZXJQYXRjaFRvRnVsbFRyZWUiLCJmbGlnaHREYXRhIiwiZHluYW1pY1N0YWxlVGltZSIsIl9fTkVYVF9FWFBPU0VfVEVTVElOR19BUEkiLCJ3YWl0Rm9yTmF2aWdhdGlvbkxvY2siLCJzdGF0aWNTdGFnZURhdGEiLCJyZXNwb25zZSIsInN0YXRpY1N0YWdlUmVzcG9uc2UiLCJpc1Jlc3BvbnNlUGFydGlhbCIsImdldFN0YWxlQXQiLCJzIiwic3RhbGVBdCIsImJ1aWxkSWQiLCJyZXNwb25zZUhlYWRlcnMiLCJnZXQiLCJORVhUX05BVl9ERVBMT1lNRU5UX0lEX0hFQURFUiIsImIiLCJ3cml0ZVN0YXRpY1N0YWdlUmVzcG9uc2VJbnRvQ2FjaGUiLCJmIiwiaCIsImNhdGNoIiwicnVudGltZVByZWZldGNoU3RyZWFtIiwicHJvY2Vzc1J1bnRpbWVQcmVmZXRjaFN0cmVhbSIsInByb2Nlc3NlZCIsIndyaXRlRHluYW1pY1JlbmRlclJlc3BvbnNlSW50b0NhY2hlIiwiRmV0Y2hTdHJhdGVneSIsIlBQUlJ1bnRpbWUiLCJmbGlnaHREYXRhcyIsImhlYWRWYXJ5UGFyYW1zIiwibmF2aWdhdGlvblNlZWQiLCJjb21wdXRlRHluYW1pY1N0YWxlQXQiLCJkaWRSZWNlaXZlVW5rbm93blBhcmFsbGVsUm91dGUiLCJ3cml0ZUR5bmFtaWNEYXRhSW50b05hdmlnYXRpb25UYXNrIiwiZGF0YSIsImRlYnVnSW5mbyIsInNlcnZlclJvdXRlVHJlZSIsImR5bmFtaWNEYXRhIiwiZHluYW1pY0hlYWQiLCJmaW5pc2hQZW5kaW5nQ2FjaGVOb2RlIiwidXBkYXRlQkZDYWNoZUVudHJ5U3RhbGVBdCIsInNlcnZlckNoaWxkcmVuIiwiZHluYW1pY0RhdGFDaGlsZHJlbiIsInNlcnZlclJvdXRlVHJlZUNoaWxkIiwiZHluYW1pY0RhdGFDaGlsZCIsInRhc2tTZWdtZW50Iiwic2VydmVyU2VnbWVudCIsImNoaWxkRGlkUmVjZWl2ZVVua25vd25QYXJhbGxlbFJvdXRlIiwiZHluYW1pY1NlZ21lbnREYXRhIiwiZXJyb3IiLCJhYm9ydFBlbmRpbmdDYWNoZU5vZGUiLCJjaGlsZEV4aXRTdGF0dXMiLCJyZWplY3QiLCJERUZFUlJFRCIsIlN5bWJvbCIsInZhbHVlIiwidGFnIiwicGVuZGluZ1JzYyIsInJlcyIsInJlaiIsInJlc3BvbnNlRGVidWdJbmZvIiwiZnVsZmlsbGVkUnNjIiwiYXBwbHkiLCJyZWplY3RlZFJzYyIsInJlYXNvbiIsIl9kZWJ1Z0luZm8iLCJ3YWl0Rm9yTmF2aWdhdGlvbkxvY2tJZkFjdGl2ZSIsInJlcXVpcmUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/router-reducer/ppr-navigations.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/committed-state.js":
|
||
/*!*********************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/router-reducer/reducers/committed-state.js ***!
|
||
\*********************************************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getLastCommittedTree: function() {\n return getLastCommittedTree;\n },\n setLastCommittedTree: function() {\n return setLastCommittedTree;\n }\n});\n// The tree from the last state that was committed to the browser history\n// (i.e., the last state for which HistoryUpdater's useInsertionEffect ran).\n// This lets the server-patch reducer distinguish between retrying a\n// navigation that already pushed a history entry vs one whose transition\n// suspended and never committed.\n//\n// Currently only used by the server-patch retry logic, but this module is a\n// stepping stone toward a broader refactor of the navigation queue. The\n// existing AppRouter action queue will eventually be replaced by a more\n// reactive model that explicitly tracks pending vs committed navigation\n// state. This file will likely evolve into (or be subsumed by) that new\n// implementation.\nlet lastCommittedTree = null;\nfunction getLastCommittedTree() {\n return lastCommittedTree;\n}\nfunction setLastCommittedTree(tree) {\n lastCommittedTree = tree;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=committed-state.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL2NvbW1pdHRlZC1zdGF0ZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFnQmdCQSxvQkFBb0I7ZUFBcEJBOztJQUlBQyxvQkFBb0I7ZUFBcEJBOzs7QUFsQmhCLHlFQUF5RTtBQUN6RSw0RUFBNEU7QUFDNUUsb0VBQW9FO0FBQ3BFLHlFQUF5RTtBQUN6RSxpQ0FBaUM7QUFDakMsRUFBRTtBQUNGLDRFQUE0RTtBQUM1RSx3RUFBd0U7QUFDeEUsd0VBQXdFO0FBQ3hFLHdFQUF3RTtBQUN4RSx3RUFBd0U7QUFDeEUsa0JBQWtCO0FBQ2xCLElBQUlDLG9CQUE4QztBQUUzQyxTQUFTRjtJQUNkLE9BQU9FO0FBQ1Q7QUFFTyxTQUFTRCxxQkFBcUJFLElBQXVCO0lBQzFERCxvQkFBb0JDO0FBQ3RCIiwic291cmNlcyI6WyIvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL2NvbW1pdHRlZC1zdGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZsaWdodFJvdXRlclN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLXR5cGVzJ1xuXG4vLyBUaGUgdHJlZSBmcm9tIHRoZSBsYXN0IHN0YXRlIHRoYXQgd2FzIGNvbW1pdHRlZCB0byB0aGUgYnJvd3NlciBoaXN0b3J5XG4vLyAoaS5lLiwgdGhlIGxhc3Qgc3RhdGUgZm9yIHdoaWNoIEhpc3RvcnlVcGRhdGVyJ3MgdXNlSW5zZXJ0aW9uRWZmZWN0IHJhbikuXG4vLyBUaGlzIGxldHMgdGhlIHNlcnZlci1wYXRjaCByZWR1Y2VyIGRpc3Rpbmd1aXNoIGJldHdlZW4gcmV0cnlpbmcgYVxuLy8gbmF2aWdhdGlvbiB0aGF0IGFscmVhZHkgcHVzaGVkIGEgaGlzdG9yeSBlbnRyeSB2cyBvbmUgd2hvc2UgdHJhbnNpdGlvblxuLy8gc3VzcGVuZGVkIGFuZCBuZXZlciBjb21taXR0ZWQuXG4vL1xuLy8gQ3VycmVudGx5IG9ubHkgdXNlZCBieSB0aGUgc2VydmVyLXBhdGNoIHJldHJ5IGxvZ2ljLCBidXQgdGhpcyBtb2R1bGUgaXMgYVxuLy8gc3RlcHBpbmcgc3RvbmUgdG93YXJkIGEgYnJvYWRlciByZWZhY3RvciBvZiB0aGUgbmF2aWdhdGlvbiBxdWV1ZS4gVGhlXG4vLyBleGlzdGluZyBBcHBSb3V0ZXIgYWN0aW9uIHF1ZXVlIHdpbGwgZXZlbnR1YWxseSBiZSByZXBsYWNlZCBieSBhIG1vcmVcbi8vIHJlYWN0aXZlIG1vZGVsIHRoYXQgZXhwbGljaXRseSB0cmFja3MgcGVuZGluZyB2cyBjb21taXR0ZWQgbmF2aWdhdGlvblxuLy8gc3RhdGUuIFRoaXMgZmlsZSB3aWxsIGxpa2VseSBldm9sdmUgaW50byAob3IgYmUgc3Vic3VtZWQgYnkpIHRoYXQgbmV3XG4vLyBpbXBsZW1lbnRhdGlvbi5cbmxldCBsYXN0Q29tbWl0dGVkVHJlZTogRmxpZ2h0Um91dGVyU3RhdGUgfCBudWxsID0gbnVsbFxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGFzdENvbW1pdHRlZFRyZWUoKTogRmxpZ2h0Um91dGVyU3RhdGUgfCBudWxsIHtcbiAgcmV0dXJuIGxhc3RDb21taXR0ZWRUcmVlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRMYXN0Q29tbWl0dGVkVHJlZSh0cmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZSk6IHZvaWQge1xuICBsYXN0Q29tbWl0dGVkVHJlZSA9IHRyZWVcbn1cbiJdLCJuYW1lcyI6WyJnZXRMYXN0Q29tbWl0dGVkVHJlZSIsInNldExhc3RDb21taXR0ZWRUcmVlIiwibGFzdENvbW1pdHRlZFRyZWUiLCJ0cmVlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/committed-state.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js":
|
||
/*!********************************************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js ***!
|
||
\********************************************************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"hasInterceptionRouteInCurrentTree\", ({\n enumerable: true,\n get: function() {\n return hasInterceptionRouteInCurrentTree;\n }\n}));\nconst _interceptionroutes = __webpack_require__(/*! ../../../../shared/lib/router/utils/interception-routes */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/interception-routes.js\");\nfunction hasInterceptionRouteInCurrentTree([segment, parallelRoutes]) {\n // If we have a dynamic segment, it's marked as an interception route by the presence of the `i` suffix.\n if (Array.isArray(segment) && (segment[2] === 'di(..)(..)' || segment[2] === 'ci(..)(..)' || segment[2] === 'di(.)' || segment[2] === 'ci(.)' || segment[2] === 'di(..)' || segment[2] === 'ci(..)' || segment[2] === 'di(...)' || segment[2] === 'ci(...)')) {\n return true;\n }\n // If segment is not an array, apply the existing string-based check\n if (typeof segment === 'string' && (0, _interceptionroutes.isInterceptionRouteAppPath)(segment)) {\n return true;\n }\n // Iterate through parallelRoutes if they exist\n if (parallelRoutes) {\n for(const key in parallelRoutes){\n if (hasInterceptionRouteInCurrentTree(parallelRoutes[key])) {\n return true;\n }\n }\n }\n return false;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=has-interception-route-in-current-tree.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL2hhcy1pbnRlcmNlcHRpb24tcm91dGUtaW4tY3VycmVudC10cmVlLmpzIiwibWFwcGluZ3MiOiI7Ozs7cUVBR2dCQTs7O2VBQUFBOzs7Z0RBRjJCO0FBRXBDLFNBQVNBLGtDQUFrQyxDQUNoREMsU0FDQUMsZUFDa0I7SUFDbEIsd0dBQXdHO0lBQ3hHLElBQ0VDLE1BQU1DLE9BQU8sQ0FBQ0gsWUFDYkEsQ0FBQUEsT0FBTyxDQUFDLEVBQUUsS0FBSyxnQkFDZEEsT0FBTyxDQUFDLEVBQUUsS0FBSyxnQkFDZkEsT0FBTyxDQUFDLEVBQUUsS0FBSyxXQUNmQSxPQUFPLENBQUMsRUFBRSxLQUFLLFdBQ2ZBLE9BQU8sQ0FBQyxFQUFFLEtBQUssWUFDZkEsT0FBTyxDQUFDLEVBQUUsS0FBSyxZQUNmQSxPQUFPLENBQUMsRUFBRSxLQUFLLGFBQ2ZBLE9BQU8sQ0FBQyxFQUFFLEtBQUssVUFBUSxFQUN6QjtRQUNBLE9BQU87SUFDVDtJQUVBLG9FQUFvRTtJQUNwRSxJQUFJLE9BQU9BLFlBQVksWUFBWUksQ0FBQUEsR0FBQUEsb0JBQUFBLDBCQUFBQSxFQUEyQkosVUFBVTtRQUN0RSxPQUFPO0lBQ1Q7SUFFQSwrQ0FBK0M7SUFDL0MsSUFBSUMsZ0JBQWdCO1FBQ2xCLElBQUssTUFBTUksT0FBT0osZUFBZ0I7WUFDaEMsSUFBSUYsa0NBQWtDRSxjQUFjLENBQUNJLElBQUksR0FBRztnQkFDMUQsT0FBTztZQUNUO1FBQ0Y7SUFDRjtJQUVBLE9BQU87QUFDVCIsInNvdXJjZXMiOlsiL3NyYy9jbGllbnQvY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9yZWR1Y2Vycy9oYXMtaW50ZXJjZXB0aW9uLXJvdXRlLWluLWN1cnJlbnQtdHJlZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZsaWdodFJvdXRlclN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLXR5cGVzJ1xuaW1wb3J0IHsgaXNJbnRlcmNlcHRpb25Sb3V0ZUFwcFBhdGggfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9pbnRlcmNlcHRpb24tcm91dGVzJ1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzSW50ZXJjZXB0aW9uUm91dGVJbkN1cnJlbnRUcmVlKFtcbiAgc2VnbWVudCxcbiAgcGFyYWxsZWxSb3V0ZXMsXG5dOiBGbGlnaHRSb3V0ZXJTdGF0ZSk6IGJvb2xlYW4ge1xuICAvLyBJZiB3ZSBoYXZlIGEgZHluYW1pYyBzZWdtZW50LCBpdCdzIG1hcmtlZCBhcyBhbiBpbnRlcmNlcHRpb24gcm91dGUgYnkgdGhlIHByZXNlbmNlIG9mIHRoZSBgaWAgc3VmZml4LlxuICBpZiAoXG4gICAgQXJyYXkuaXNBcnJheShzZWdtZW50KSAmJlxuICAgIChzZWdtZW50WzJdID09PSAnZGkoLi4pKC4uKScgfHxcbiAgICAgIHNlZ21lbnRbMl0gPT09ICdjaSguLikoLi4pJyB8fFxuICAgICAgc2VnbWVudFsyXSA9PT0gJ2RpKC4pJyB8fFxuICAgICAgc2VnbWVudFsyXSA9PT0gJ2NpKC4pJyB8fFxuICAgICAgc2VnbWVudFsyXSA9PT0gJ2RpKC4uKScgfHxcbiAgICAgIHNlZ21lbnRbMl0gPT09ICdjaSguLiknIHx8XG4gICAgICBzZWdtZW50WzJdID09PSAnZGkoLi4uKScgfHxcbiAgICAgIHNlZ21lbnRbMl0gPT09ICdjaSguLi4pJylcbiAgKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8vIElmIHNlZ21lbnQgaXMgbm90IGFuIGFycmF5LCBhcHBseSB0aGUgZXhpc3Rpbmcgc3RyaW5nLWJhc2VkIGNoZWNrXG4gIGlmICh0eXBlb2Ygc2VnbWVudCA9PT0gJ3N0cmluZycgJiYgaXNJbnRlcmNlcHRpb25Sb3V0ZUFwcFBhdGgoc2VnbWVudCkpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLy8gSXRlcmF0ZSB0aHJvdWdoIHBhcmFsbGVsUm91dGVzIGlmIHRoZXkgZXhpc3RcbiAgaWYgKHBhcmFsbGVsUm91dGVzKSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gcGFyYWxsZWxSb3V0ZXMpIHtcbiAgICAgIGlmIChoYXNJbnRlcmNlcHRpb25Sb3V0ZUluQ3VycmVudFRyZWUocGFyYWxsZWxSb3V0ZXNba2V5XSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cbiJdLCJuYW1lcyI6WyJoYXNJbnRlcmNlcHRpb25Sb3V0ZUluQ3VycmVudFRyZWUiLCJzZWdtZW50IiwicGFyYWxsZWxSb3V0ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJpc0ludGVyY2VwdGlvblJvdXRlQXBwUGF0aCIsImtleSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/hmr-refresh-reducer.js":
|
||
/*!*************************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/router-reducer/reducers/hmr-refresh-reducer.js ***!
|
||
\*************************************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"hmrRefreshReducer\", ({\n enumerable: true,\n get: function() {\n return hmrRefreshReducer;\n }\n}));\nconst _refreshreducer = __webpack_require__(/*! ./refresh-reducer */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js\");\nconst _pprnavigations = __webpack_require__(/*! ../ppr-navigations */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/ppr-navigations.js\");\nfunction hmrRefreshReducer(state) {\n return (0, _refreshreducer.refreshDynamicData)(state, _pprnavigations.FreshnessPolicy.HMRRefresh);\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=hmr-refresh-reducer.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL2htci1yZWZyZXNoLXJlZHVjZXIuanMiLCJtYXBwaW5ncyI6Ijs7OztxREFPZ0JBOzs7ZUFBQUE7Ozs0Q0FIbUI7NENBQ0g7QUFFekIsU0FBU0Esa0JBQWtCQyxLQUEyQjtJQUMzRCxPQUFPQyxDQUFBQSxHQUFBQSxnQkFBQUEsa0JBQUFBLEVBQW1CRCxPQUFPRSxnQkFBQUEsZUFBZSxDQUFDQyxVQUFVO0FBQzdEIiwic291cmNlcyI6WyIvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL2htci1yZWZyZXNoLXJlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBSZWFkb25seVJlZHVjZXJTdGF0ZSxcbiAgUmVkdWNlclN0YXRlLFxufSBmcm9tICcuLi9yb3V0ZXItcmVkdWNlci10eXBlcydcbmltcG9ydCB7IHJlZnJlc2hEeW5hbWljRGF0YSB9IGZyb20gJy4vcmVmcmVzaC1yZWR1Y2VyJ1xuaW1wb3J0IHsgRnJlc2huZXNzUG9saWN5IH0gZnJvbSAnLi4vcHByLW5hdmlnYXRpb25zJ1xuXG5leHBvcnQgZnVuY3Rpb24gaG1yUmVmcmVzaFJlZHVjZXIoc3RhdGU6IFJlYWRvbmx5UmVkdWNlclN0YXRlKTogUmVkdWNlclN0YXRlIHtcbiAgcmV0dXJuIHJlZnJlc2hEeW5hbWljRGF0YShzdGF0ZSwgRnJlc2huZXNzUG9saWN5LkhNUlJlZnJlc2gpXG59XG4iXSwibmFtZXMiOlsiaG1yUmVmcmVzaFJlZHVjZXIiLCJzdGF0ZSIsInJlZnJlc2hEeW5hbWljRGF0YSIsIkZyZXNobmVzc1BvbGljeSIsIkhNUlJlZnJlc2giXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/hmr-refresh-reducer.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js":
|
||
/*!**********************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js ***!
|
||
\**********************************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n DYNAMIC_STALETIME_MS: function() {\n return DYNAMIC_STALETIME_MS;\n },\n STATIC_STALETIME_MS: function() {\n return STATIC_STALETIME_MS;\n },\n navigateReducer: function() {\n return navigateReducer;\n }\n});\nconst _navigation = __webpack_require__(/*! ../../segment-cache/navigation */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/navigation.js\");\nconst _cache = __webpack_require__(/*! ../../segment-cache/cache */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/cache.js\");\nconst _pprnavigations = __webpack_require__(/*! ../ppr-navigations */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/ppr-navigations.js\");\nconst DYNAMIC_STALETIME_MS = Number(\"0\") * 1000;\nconst STATIC_STALETIME_MS = (0, _cache.getStaleTimeMs)(Number(\"300\"));\nfunction navigateReducer(state, action) {\n const { url, isExternalUrl, navigateType, scrollBehavior } = action;\n if (isExternalUrl) {\n return (0, _navigation.completeHardNavigation)(state, url, navigateType);\n }\n // Handles case where `<meta http-equiv=\"refresh\">` tag is present,\n // which will trigger an MPA navigation.\n if (document.getElementById('__next-page-redirect')) {\n return (0, _navigation.completeHardNavigation)(state, url, navigateType);\n }\n // Temporary glue code between the router reducer and the new navigation\n // implementation. Eventually we'll rewrite the router reducer to a\n // state machine.\n const currentUrl = new URL(state.canonicalUrl, location.origin);\n const currentRenderedSearch = state.renderedSearch;\n return (0, _navigation.navigate)(state, url, currentUrl, currentRenderedSearch, state.cache, state.tree, state.nextUrl, _pprnavigations.FreshnessPolicy.Default, scrollBehavior, navigateType);\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=navigate-reducer.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL25hdmlnYXRlLXJlZHVjZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBZWFBLG9CQUFvQjtlQUFwQkE7O0lBR0FDLG1CQUFtQjtlQUFuQkE7O0lBSUdDLGVBQWU7ZUFBZkE7Ozt3Q0FiVDttQ0FDd0I7NENBQ0M7QUFJekIsTUFBTUYsdUJBQ1hHLE9BQU9DLEdBQWtELElBQUk7QUFFeEQsTUFBTUgsc0JBQXNCTSxDQUFBQSxHQUFBQSxPQUFBQSxjQUFBQSxFQUNqQ0osT0FBT0MsS0FBaUQ7QUFHbkQsU0FBU0YsZ0JBQ2RPLEtBQTJCLEVBQzNCQyxNQUFzQjtJQUV0QixNQUFNLEVBQUVDLEdBQUcsRUFBRUMsYUFBYSxFQUFFQyxZQUFZLEVBQUVDLGNBQWMsRUFBRSxHQUFHSjtJQUU3RCxJQUFJRSxlQUFlO1FBQ2pCLE9BQU9HLENBQUFBLEdBQUFBLFlBQUFBLHNCQUFBQSxFQUF1Qk4sT0FBT0UsS0FBS0U7SUFDNUM7SUFFQSxtRUFBbUU7SUFDbkUsd0NBQXdDO0lBQ3hDLElBQUlHLFNBQVNDLGNBQWMsQ0FBQyx5QkFBeUI7UUFDbkQsT0FBT0YsQ0FBQUEsR0FBQUEsWUFBQUEsc0JBQUFBLEVBQXVCTixPQUFPRSxLQUFLRTtJQUM1QztJQUVBLHdFQUF3RTtJQUN4RSxtRUFBbUU7SUFDbkUsaUJBQWlCO0lBQ2pCLE1BQU1LLGFBQWEsSUFBSUMsSUFBSVYsTUFBTVcsWUFBWSxFQUFFQyxTQUFTQyxNQUFNO0lBQzlELE1BQU1DLHdCQUF3QmQsTUFBTWUsY0FBYztJQUNsRCxPQUFPQyxDQUFBQSxHQUFBQSxZQUFBQSxRQUFBQSxFQUNMaEIsT0FDQUUsS0FDQU8sWUFDQUssdUJBQ0FkLE1BQU1pQixLQUFLLEVBQ1hqQixNQUFNa0IsSUFBSSxFQUNWbEIsTUFBTW1CLE9BQU8sRUFDYkMsZ0JBQUFBLGVBQWUsQ0FBQ0MsT0FBTyxFQUN2QmhCLGdCQUNBRDtBQUVKIiwic291cmNlcyI6WyIvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL25hdmlnYXRlLXJlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBOYXZpZ2F0ZUFjdGlvbixcbiAgUmVhZG9ubHlSZWR1Y2VyU3RhdGUsXG4gIFJlZHVjZXJTdGF0ZSxcbn0gZnJvbSAnLi4vcm91dGVyLXJlZHVjZXItdHlwZXMnXG5cbmltcG9ydCB7XG4gIGNvbXBsZXRlSGFyZE5hdmlnYXRpb24sXG4gIG5hdmlnYXRlIGFzIG5hdmlnYXRlVXNpbmdTZWdtZW50Q2FjaGUsXG59IGZyb20gJy4uLy4uL3NlZ21lbnQtY2FjaGUvbmF2aWdhdGlvbidcbmltcG9ydCB7IGdldFN0YWxlVGltZU1zIH0gZnJvbSAnLi4vLi4vc2VnbWVudC1jYWNoZS9jYWNoZSdcbmltcG9ydCB7IEZyZXNobmVzc1BvbGljeSB9IGZyb20gJy4uL3Bwci1uYXZpZ2F0aW9ucydcblxuLy8gVGhlc2UgdmFsdWVzIGFyZSBzZXQgYnkgYGRlZmluZS1lbnYtcGx1Z2luYCAoYmFzZWQgb24gYG5leHRDb25maWcuZXhwZXJpbWVudGFsLnN0YWxlVGltZXNgKVxuLy8gYW5kIGRlZmF1bHQgdG8gNSBtaW51dGVzIChzdGF0aWMpIC8gMCBzZWNvbmRzIChkeW5hbWljKVxuZXhwb3J0IGNvbnN0IERZTkFNSUNfU1RBTEVUSU1FX01TID1cbiAgTnVtYmVyKHByb2Nlc3MuZW52Ll9fTkVYVF9DTElFTlRfUk9VVEVSX0RZTkFNSUNfU1RBTEVUSU1FKSAqIDEwMDBcblxuZXhwb3J0IGNvbnN0IFNUQVRJQ19TVEFMRVRJTUVfTVMgPSBnZXRTdGFsZVRpbWVNcyhcbiAgTnVtYmVyKHByb2Nlc3MuZW52Ll9fTkVYVF9DTElFTlRfUk9VVEVSX1NUQVRJQ19TVEFMRVRJTUUpXG4pXG5cbmV4cG9ydCBmdW5jdGlvbiBuYXZpZ2F0ZVJlZHVjZXIoXG4gIHN0YXRlOiBSZWFkb25seVJlZHVjZXJTdGF0ZSxcbiAgYWN0aW9uOiBOYXZpZ2F0ZUFjdGlvblxuKTogUmVkdWNlclN0YXRlIHtcbiAgY29uc3QgeyB1cmwsIGlzRXh0ZXJuYWxVcmwsIG5hdmlnYXRlVHlwZSwgc2Nyb2xsQmVoYXZpb3IgfSA9IGFjdGlvblxuXG4gIGlmIChpc0V4dGVybmFsVXJsKSB7XG4gICAgcmV0dXJuIGNvbXBsZXRlSGFyZE5hdmlnYXRpb24oc3RhdGUsIHVybCwgbmF2aWdhdGVUeXBlKVxuICB9XG5cbiAgLy8gSGFuZGxlcyBjYXNlIHdoZXJlIGA8bWV0YSBodHRwLWVxdWl2PVwicmVmcmVzaFwiPmAgdGFnIGlzIHByZXNlbnQsXG4gIC8vIHdoaWNoIHdpbGwgdHJpZ2dlciBhbiBNUEEgbmF2aWdhdGlvbi5cbiAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdfX25leHQtcGFnZS1yZWRpcmVjdCcpKSB7XG4gICAgcmV0dXJuIGNvbXBsZXRlSGFyZE5hdmlnYXRpb24oc3RhdGUsIHVybCwgbmF2aWdhdGVUeXBlKVxuICB9XG5cbiAgLy8gVGVtcG9yYXJ5IGdsdWUgY29kZSBiZXR3ZWVuIHRoZSByb3V0ZXIgcmVkdWNlciBhbmQgdGhlIG5ldyBuYXZpZ2F0aW9uXG4gIC8vIGltcGxlbWVudGF0aW9uLiBFdmVudHVhbGx5IHdlJ2xsIHJld3JpdGUgdGhlIHJvdXRlciByZWR1Y2VyIHRvIGFcbiAgLy8gc3RhdGUgbWFjaGluZS5cbiAgY29uc3QgY3VycmVudFVybCA9IG5ldyBVUkwoc3RhdGUuY2Fub25pY2FsVXJsLCBsb2NhdGlvbi5vcmlnaW4pXG4gIGNvbnN0IGN1cnJlbnRSZW5kZXJlZFNlYXJjaCA9IHN0YXRlLnJlbmRlcmVkU2VhcmNoXG4gIHJldHVybiBuYXZpZ2F0ZVVzaW5nU2VnbWVudENhY2hlKFxuICAgIHN0YXRlLFxuICAgIHVybCxcbiAgICBjdXJyZW50VXJsLFxuICAgIGN1cnJlbnRSZW5kZXJlZFNlYXJjaCxcbiAgICBzdGF0ZS5jYWNoZSxcbiAgICBzdGF0ZS50cmVlLFxuICAgIHN0YXRlLm5leHRVcmwsXG4gICAgRnJlc2huZXNzUG9saWN5LkRlZmF1bHQsXG4gICAgc2Nyb2xsQmVoYXZpb3IsXG4gICAgbmF2aWdhdGVUeXBlXG4gIClcbn1cbiJdLCJuYW1lcyI6WyJEWU5BTUlDX1NUQUxFVElNRV9NUyIsIlNUQVRJQ19TVEFMRVRJTUVfTVMiLCJuYXZpZ2F0ZVJlZHVjZXIiLCJOdW1iZXIiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX0NMSUVOVF9ST1VURVJfRFlOQU1JQ19TVEFMRVRJTUUiLCJnZXRTdGFsZVRpbWVNcyIsIl9fTkVYVF9DTElFTlRfUk9VVEVSX1NUQVRJQ19TVEFMRVRJTUUiLCJzdGF0ZSIsImFjdGlvbiIsInVybCIsImlzRXh0ZXJuYWxVcmwiLCJuYXZpZ2F0ZVR5cGUiLCJzY3JvbGxCZWhhdmlvciIsImNvbXBsZXRlSGFyZE5hdmlnYXRpb24iLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiY3VycmVudFVybCIsIlVSTCIsImNhbm9uaWNhbFVybCIsImxvY2F0aW9uIiwib3JpZ2luIiwiY3VycmVudFJlbmRlcmVkU2VhcmNoIiwicmVuZGVyZWRTZWFyY2giLCJuYXZpZ2F0ZVVzaW5nU2VnbWVudENhY2hlIiwiY2FjaGUiLCJ0cmVlIiwibmV4dFVybCIsIkZyZXNobmVzc1BvbGljeSIsIkRlZmF1bHQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js":
|
||
/*!*********************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js ***!
|
||
\*********************************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n refreshDynamicData: function() {\n return refreshDynamicData;\n },\n refreshReducer: function() {\n return refreshReducer;\n }\n});\nconst _routerreducertypes = __webpack_require__(/*! ../router-reducer-types */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _navigation = __webpack_require__(/*! ../../segment-cache/navigation */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/navigation.js\");\nconst _cache = __webpack_require__(/*! ../../segment-cache/cache */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/cache.js\");\nconst _hasinterceptionrouteincurrenttree = __webpack_require__(/*! ./has-interception-route-in-current-tree */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js\");\nconst _pprnavigations = __webpack_require__(/*! ../ppr-navigations */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/ppr-navigations.js\");\nconst _bfcache = __webpack_require__(/*! ../../segment-cache/bfcache */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/bfcache.js\");\nfunction refreshReducer(state, action) {\n // During a refresh, we invalidate the segment cache but not the route cache.\n // The route cache contains the tree structure (which segments exist at a\n // given URL) which doesn't change during a refresh. The segment cache\n // contains the actual RSC data which needs to be re-fetched.\n //\n // The Instant Navigation Testing API can bypass cache invalidation to\n // preserve prefetched data when refreshing after an MPA navigation. This is\n // only used for testing and is not exposed in production builds by default.\n const bypassCacheInvalidation = true && action.bypassCacheInvalidation;\n if (!bypassCacheInvalidation) {\n const currentNextUrl = state.nextUrl;\n const currentRouterState = state.tree;\n (0, _cache.invalidateSegmentCacheEntries)(currentNextUrl, currentRouterState);\n }\n return refreshDynamicData(state, _pprnavigations.FreshnessPolicy.RefreshAll);\n}\nfunction refreshDynamicData(state, freshnessPolicy) {\n // During a refresh, invalidate the BFCache, which may contain dynamic data.\n (0, _bfcache.invalidateBfCache)();\n const currentNextUrl = state.nextUrl;\n // We always send the last next-url, not the current when performing a dynamic\n // request. This is because we update the next-url after a navigation, but we\n // want the same interception route to be matched that used the last next-url.\n const nextUrlForRefresh = (0, _hasinterceptionrouteincurrenttree.hasInterceptionRouteInCurrentTree)(state.tree) ? state.previousNextUrl || currentNextUrl : null;\n // A refresh is modeled as a navigation to the current URL, but where any\n // existing dynamic data (including in shared layouts) is re-fetched.\n const currentCanonicalUrl = state.canonicalUrl;\n const currentUrl = new URL(currentCanonicalUrl, location.origin);\n const currentRenderedSearch = state.renderedSearch;\n const currentFlightRouterState = state.tree;\n const scrollBehavior = _routerreducertypes.ScrollBehavior.NoScroll;\n // Create a NavigationSeed from the current FlightRouterState.\n // TODO: Eventually we will store this type directly on the state object\n // instead of reconstructing it on demand. Part of a larger series of\n // refactors to unify the various tree types that the client deals with.\n const now = Date.now();\n // TODO: Store the dynamic stale time on the top-level state so it's known\n // during restores and refreshes.\n const refreshSeed = (0, _navigation.convertServerPatchToFullTree)(now, currentFlightRouterState, null, currentRenderedSearch, _bfcache.UnknownDynamicStaleTime);\n const navigateType = 'replace';\n return (0, _navigation.navigateToKnownRoute)(now, state, currentUrl, currentCanonicalUrl, refreshSeed, currentUrl, currentRenderedSearch, state.cache, currentFlightRouterState, freshnessPolicy, nextUrlForRefresh, scrollBehavior, navigateType, null, // cache entry to mark as having a dynamic rewrite on mismatch. If a\n // mismatch occurs, the retry handler will traverse the known route tree\n // to find and mark the entry.\n null);\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=refresh-reducer.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL3JlZnJlc2gtcmVkdWNlci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUF3Q2dCQSxrQkFBa0I7ZUFBbEJBOztJQXRCQUMsY0FBYztlQUFkQTs7O2dEQWJlO3dDQUl4QjttQ0FDdUM7K0RBQ0k7NENBQ2xCO3FDQUl6QjtBQUVBLFNBQVNBLGVBQ2RDLEtBQTJCLEVBQzNCQyxNQUFxQjtJQUVyQiw2RUFBNkU7SUFDN0UseUVBQXlFO0lBQ3pFLHNFQUFzRTtJQUN0RSw2REFBNkQ7SUFDN0QsRUFBRTtJQUNGLHNFQUFzRTtJQUN0RSw0RUFBNEU7SUFDNUUsNEVBQTRFO0lBQzVFLE1BQU1DLDBCQUNKQyxLQUFxQyxJQUFJRixPQUFPQyx1QkFBdUI7SUFDekUsSUFBSSxDQUFDQSx5QkFBeUI7UUFDNUIsTUFBTUksaUJBQWlCTixNQUFNTyxPQUFPO1FBQ3BDLE1BQU1DLHFCQUFxQlIsTUFBTVMsSUFBSTtRQUNyQ0MsQ0FBQUEsR0FBQUEsT0FBQUEsNkJBQTZCLEVBQUNKLGdCQUFnQkU7SUFDaEQ7SUFDQSxPQUFPVixtQkFBbUJFLE9BQU9XLGdCQUFBQSxlQUFlLENBQUNDLFVBQVU7QUFDN0Q7QUFFTyxTQUFTZCxtQkFDZEUsS0FBMkIsRUFDM0JhLGVBQXdFO0lBRXhFLDRFQUE0RTtJQUM1RUMsQ0FBQUEsR0FBQUEsU0FBQUEsaUJBQUFBO0lBRUEsTUFBTVIsaUJBQWlCTixNQUFNTyxPQUFPO0lBRXBDLDhFQUE4RTtJQUM5RSw2RUFBNkU7SUFDN0UsOEVBQThFO0lBQzlFLE1BQU1RLG9CQUFvQkMsQ0FBQUEsR0FBQUEsbUNBQUFBLGlDQUFBQSxFQUFrQ2hCLE1BQU1TLElBQUksSUFDbEVULE1BQU1pQixlQUFlLElBQUlYLGlCQUN6QjtJQUVKLHlFQUF5RTtJQUN6RSxxRUFBcUU7SUFDckUsTUFBTVksc0JBQXNCbEIsTUFBTW1CLFlBQVk7SUFDOUMsTUFBTUMsYUFBYSxJQUFJQyxJQUFJSCxxQkFBcUJJLFNBQVNDLE1BQU07SUFDL0QsTUFBTUMsd0JBQXdCeEIsTUFBTXlCLGNBQWM7SUFDbEQsTUFBTUMsMkJBQTJCMUIsTUFBTVMsSUFBSTtJQUMzQyxNQUFNa0IsaUJBQWlCQyxvQkFBQUEsY0FBYyxDQUFDQyxRQUFRO0lBRTlDLDhEQUE4RDtJQUM5RCx3RUFBd0U7SUFDeEUscUVBQXFFO0lBQ3JFLHdFQUF3RTtJQUN4RSxNQUFNQyxNQUFNQyxLQUFLRCxHQUFHO0lBQ3BCLDBFQUEwRTtJQUMxRSxpQ0FBaUM7SUFDakMsTUFBTUUsY0FBY0MsQ0FBQUEsR0FBQUEsWUFBQUEsNEJBQTRCLEVBQzlDSCxLQUNBSiwwQkFDQSxNQUNBRix1QkFDQVUsU0FBQUEsdUJBQXVCO0lBR3pCLE1BQU1DLGVBQWU7SUFDckIsT0FBT0MsQ0FBQUEsR0FBQUEsWUFBQUEsb0JBQUFBLEVBQ0xOLEtBQ0E5QixPQUNBb0IsWUFDQUYscUJBQ0FjLGFBQ0FaLFlBQ0FJLHVCQUNBeEIsTUFBTXFDLEtBQUssRUFDWFgsMEJBQ0FiLGlCQUNBRSxtQkFDQVksZ0JBQ0FRLGNBQ0EsTUFDQSxvRUFDb0U7SUFDcEUsd0VBQXdFO0lBQ3hFLDhCQUE4QjtJQUM5QjtBQUVKIiwic291cmNlcyI6WyIvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL3JlZnJlc2gtcmVkdWNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBSZWR1Y2VyU3RhdGUsXG4gIFJlZnJlc2hBY3Rpb24sXG59IGZyb20gJy4uL3JvdXRlci1yZWR1Y2VyLXR5cGVzJ1xuaW1wb3J0IHsgU2Nyb2xsQmVoYXZpb3IgfSBmcm9tICcuLi9yb3V0ZXItcmVkdWNlci10eXBlcydcbmltcG9ydCB7XG4gIGNvbnZlcnRTZXJ2ZXJQYXRjaFRvRnVsbFRyZWUsXG4gIG5hdmlnYXRlVG9Lbm93blJvdXRlLFxufSBmcm9tICcuLi8uLi9zZWdtZW50LWNhY2hlL25hdmlnYXRpb24nXG5pbXBvcnQgeyBpbnZhbGlkYXRlU2VnbWVudENhY2hlRW50cmllcyB9IGZyb20gJy4uLy4uL3NlZ21lbnQtY2FjaGUvY2FjaGUnXG5pbXBvcnQgeyBoYXNJbnRlcmNlcHRpb25Sb3V0ZUluQ3VycmVudFRyZWUgfSBmcm9tICcuL2hhcy1pbnRlcmNlcHRpb24tcm91dGUtaW4tY3VycmVudC10cmVlJ1xuaW1wb3J0IHsgRnJlc2huZXNzUG9saWN5IH0gZnJvbSAnLi4vcHByLW5hdmlnYXRpb25zJ1xuaW1wb3J0IHtcbiAgaW52YWxpZGF0ZUJmQ2FjaGUsXG4gIFVua25vd25EeW5hbWljU3RhbGVUaW1lLFxufSBmcm9tICcuLi8uLi9zZWdtZW50LWNhY2hlL2JmY2FjaGUnXG5cbmV4cG9ydCBmdW5jdGlvbiByZWZyZXNoUmVkdWNlcihcbiAgc3RhdGU6IFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBhY3Rpb246IFJlZnJlc2hBY3Rpb25cbik6IFJlZHVjZXJTdGF0ZSB7XG4gIC8vIER1cmluZyBhIHJlZnJlc2gsIHdlIGludmFsaWRhdGUgdGhlIHNlZ21lbnQgY2FjaGUgYnV0IG5vdCB0aGUgcm91dGUgY2FjaGUuXG4gIC8vIFRoZSByb3V0ZSBjYWNoZSBjb250YWlucyB0aGUgdHJlZSBzdHJ1Y3R1cmUgKHdoaWNoIHNlZ21lbnRzIGV4aXN0IGF0IGFcbiAgLy8gZ2l2ZW4gVVJMKSB3aGljaCBkb2Vzbid0IGNoYW5nZSBkdXJpbmcgYSByZWZyZXNoLiBUaGUgc2VnbWVudCBjYWNoZVxuICAvLyBjb250YWlucyB0aGUgYWN0dWFsIFJTQyBkYXRhIHdoaWNoIG5lZWRzIHRvIGJlIHJlLWZldGNoZWQuXG4gIC8vXG4gIC8vIFRoZSBJbnN0YW50IE5hdmlnYXRpb24gVGVzdGluZyBBUEkgY2FuIGJ5cGFzcyBjYWNoZSBpbnZhbGlkYXRpb24gdG9cbiAgLy8gcHJlc2VydmUgcHJlZmV0Y2hlZCBkYXRhIHdoZW4gcmVmcmVzaGluZyBhZnRlciBhbiBNUEEgbmF2aWdhdGlvbi4gVGhpcyBpc1xuICAvLyBvbmx5IHVzZWQgZm9yIHRlc3RpbmcgYW5kIGlzIG5vdCBleHBvc2VkIGluIHByb2R1Y3Rpb24gYnVpbGRzIGJ5IGRlZmF1bHQuXG4gIGNvbnN0IGJ5cGFzc0NhY2hlSW52YWxpZGF0aW9uID1cbiAgICBwcm9jZXNzLmVudi5fX05FWFRfRVhQT1NFX1RFU1RJTkdfQVBJICYmIGFjdGlvbi5ieXBhc3NDYWNoZUludmFsaWRhdGlvblxuICBpZiAoIWJ5cGFzc0NhY2hlSW52YWxpZGF0aW9uKSB7XG4gICAgY29uc3QgY3VycmVudE5leHRVcmwgPSBzdGF0ZS5uZXh0VXJsXG4gICAgY29uc3QgY3VycmVudFJvdXRlclN0YXRlID0gc3RhdGUudHJlZVxuICAgIGludmFsaWRhdGVTZWdtZW50Q2FjaGVFbnRyaWVzKGN1cnJlbnROZXh0VXJsLCBjdXJyZW50Um91dGVyU3RhdGUpXG4gIH1cbiAgcmV0dXJuIHJlZnJlc2hEeW5hbWljRGF0YShzdGF0ZSwgRnJlc2huZXNzUG9saWN5LlJlZnJlc2hBbGwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZyZXNoRHluYW1pY0RhdGEoXG4gIHN0YXRlOiBSZWFkb25seVJlZHVjZXJTdGF0ZSxcbiAgZnJlc2huZXNzUG9saWN5OiBGcmVzaG5lc3NQb2xpY3kuUmVmcmVzaEFsbCB8IEZyZXNobmVzc1BvbGljeS5ITVJSZWZyZXNoXG4pOiBSZWR1Y2VyU3RhdGUge1xuICAvLyBEdXJpbmcgYSByZWZyZXNoLCBpbnZhbGlkYXRlIHRoZSBCRkNhY2hlLCB3aGljaCBtYXkgY29udGFpbiBkeW5hbWljIGRhdGEuXG4gIGludmFsaWRhdGVCZkNhY2hlKClcblxuICBjb25zdCBjdXJyZW50TmV4dFVybCA9IHN0YXRlLm5leHRVcmxcblxuICAvLyBXZSBhbHdheXMgc2VuZCB0aGUgbGFzdCBuZXh0LXVybCwgbm90IHRoZSBjdXJyZW50IHdoZW4gcGVyZm9ybWluZyBhIGR5bmFtaWNcbiAgLy8gcmVxdWVzdC4gVGhpcyBpcyBiZWNhdXNlIHdlIHVwZGF0ZSB0aGUgbmV4dC11cmwgYWZ0ZXIgYSBuYXZpZ2F0aW9uLCBidXQgd2VcbiAgLy8gd2FudCB0aGUgc2FtZSBpbnRlcmNlcHRpb24gcm91dGUgdG8gYmUgbWF0Y2hlZCB0aGF0IHVzZWQgdGhlIGxhc3QgbmV4dC11cmwuXG4gIGNvbnN0IG5leHRVcmxGb3JSZWZyZXNoID0gaGFzSW50ZXJjZXB0aW9uUm91dGVJbkN1cnJlbnRUcmVlKHN0YXRlLnRyZWUpXG4gICAgPyBzdGF0ZS5wcmV2aW91c05leHRVcmwgfHwgY3VycmVudE5leHRVcmxcbiAgICA6IG51bGxcblxuICAvLyBBIHJlZnJlc2ggaXMgbW9kZWxlZCBhcyBhIG5hdmlnYXRpb24gdG8gdGhlIGN1cnJlbnQgVVJMLCBidXQgd2hlcmUgYW55XG4gIC8vIGV4aXN0aW5nIGR5bmFtaWMgZGF0YSAoaW5jbHVkaW5nIGluIHNoYXJlZCBsYXlvdXRzKSBpcyByZS1mZXRjaGVkLlxuICBjb25zdCBjdXJyZW50Q2Fub25pY2FsVXJsID0gc3RhdGUuY2Fub25pY2FsVXJsXG4gIGNvbnN0IGN1cnJlbnRVcmwgPSBuZXcgVVJMKGN1cnJlbnRDYW5vbmljYWxVcmwsIGxvY2F0aW9uLm9yaWdpbilcbiAgY29uc3QgY3VycmVudFJlbmRlcmVkU2VhcmNoID0gc3RhdGUucmVuZGVyZWRTZWFyY2hcbiAgY29uc3QgY3VycmVudEZsaWdodFJvdXRlclN0YXRlID0gc3RhdGUudHJlZVxuICBjb25zdCBzY3JvbGxCZWhhdmlvciA9IFNjcm9sbEJlaGF2aW9yLk5vU2Nyb2xsXG5cbiAgLy8gQ3JlYXRlIGEgTmF2aWdhdGlvblNlZWQgZnJvbSB0aGUgY3VycmVudCBGbGlnaHRSb3V0ZXJTdGF0ZS5cbiAgLy8gVE9ETzogRXZlbnR1YWxseSB3ZSB3aWxsIHN0b3JlIHRoaXMgdHlwZSBkaXJlY3RseSBvbiB0aGUgc3RhdGUgb2JqZWN0XG4gIC8vIGluc3RlYWQgb2YgcmVjb25zdHJ1Y3RpbmcgaXQgb24gZGVtYW5kLiBQYXJ0IG9mIGEgbGFyZ2VyIHNlcmllcyBvZlxuICAvLyByZWZhY3RvcnMgdG8gdW5pZnkgdGhlIHZhcmlvdXMgdHJlZSB0eXBlcyB0aGF0IHRoZSBjbGllbnQgZGVhbHMgd2l0aC5cbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKVxuICAvLyBUT0RPOiBTdG9yZSB0aGUgZHluYW1pYyBzdGFsZSB0aW1lIG9uIHRoZSB0b3AtbGV2ZWwgc3RhdGUgc28gaXQncyBrbm93blxuICAvLyBkdXJpbmcgcmVzdG9yZXMgYW5kIHJlZnJlc2hlcy5cbiAgY29uc3QgcmVmcmVzaFNlZWQgPSBjb252ZXJ0U2VydmVyUGF0Y2hUb0Z1bGxUcmVlKFxuICAgIG5vdyxcbiAgICBjdXJyZW50RmxpZ2h0Um91dGVyU3RhdGUsXG4gICAgbnVsbCxcbiAgICBjdXJyZW50UmVuZGVyZWRTZWFyY2gsXG4gICAgVW5rbm93bkR5bmFtaWNTdGFsZVRpbWVcbiAgKVxuXG4gIGNvbnN0IG5hdmlnYXRlVHlwZSA9ICdyZXBsYWNlJ1xuICByZXR1cm4gbmF2aWdhdGVUb0tub3duUm91dGUoXG4gICAgbm93LFxuICAgIHN0YXRlLFxuICAgIGN1cnJlbnRVcmwsXG4gICAgY3VycmVudENhbm9uaWNhbFVybCxcbiAgICByZWZyZXNoU2VlZCxcbiAgICBjdXJyZW50VXJsLFxuICAgIGN1cnJlbnRSZW5kZXJlZFNlYXJjaCxcbiAgICBzdGF0ZS5jYWNoZSxcbiAgICBjdXJyZW50RmxpZ2h0Um91dGVyU3RhdGUsXG4gICAgZnJlc2huZXNzUG9saWN5LFxuICAgIG5leHRVcmxGb3JSZWZyZXNoLFxuICAgIHNjcm9sbEJlaGF2aW9yLFxuICAgIG5hdmlnYXRlVHlwZSxcbiAgICBudWxsLFxuICAgIC8vIFJlZnJlc2ggbmF2aWdhdGlvbnMgZG9uJ3QgdXNlIHJvdXRlIHByZWRpY3Rpb24sIHNvIHRoZXJlJ3Mgbm8gcm91dGVcbiAgICAvLyBjYWNoZSBlbnRyeSB0byBtYXJrIGFzIGhhdmluZyBhIGR5bmFtaWMgcmV3cml0ZSBvbiBtaXNtYXRjaC4gSWYgYVxuICAgIC8vIG1pc21hdGNoIG9jY3VycywgdGhlIHJldHJ5IGhhbmRsZXIgd2lsbCB0cmF2ZXJzZSB0aGUga25vd24gcm91dGUgdHJlZVxuICAgIC8vIHRvIGZpbmQgYW5kIG1hcmsgdGhlIGVudHJ5LlxuICAgIG51bGxcbiAgKVxufVxuIl0sIm5hbWVzIjpbInJlZnJlc2hEeW5hbWljRGF0YSIsInJlZnJlc2hSZWR1Y2VyIiwic3RhdGUiLCJhY3Rpb24iLCJieXBhc3NDYWNoZUludmFsaWRhdGlvbiIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfRVhQT1NFX1RFU1RJTkdfQVBJIiwiY3VycmVudE5leHRVcmwiLCJuZXh0VXJsIiwiY3VycmVudFJvdXRlclN0YXRlIiwidHJlZSIsImludmFsaWRhdGVTZWdtZW50Q2FjaGVFbnRyaWVzIiwiRnJlc2huZXNzUG9saWN5IiwiUmVmcmVzaEFsbCIsImZyZXNobmVzc1BvbGljeSIsImludmFsaWRhdGVCZkNhY2hlIiwibmV4dFVybEZvclJlZnJlc2giLCJoYXNJbnRlcmNlcHRpb25Sb3V0ZUluQ3VycmVudFRyZWUiLCJwcmV2aW91c05leHRVcmwiLCJjdXJyZW50Q2Fub25pY2FsVXJsIiwiY2Fub25pY2FsVXJsIiwiY3VycmVudFVybCIsIlVSTCIsImxvY2F0aW9uIiwib3JpZ2luIiwiY3VycmVudFJlbmRlcmVkU2VhcmNoIiwicmVuZGVyZWRTZWFyY2giLCJjdXJyZW50RmxpZ2h0Um91dGVyU3RhdGUiLCJzY3JvbGxCZWhhdmlvciIsIlNjcm9sbEJlaGF2aW9yIiwiTm9TY3JvbGwiLCJub3ciLCJEYXRlIiwicmVmcmVzaFNlZWQiLCJjb252ZXJ0U2VydmVyUGF0Y2hUb0Z1bGxUcmVlIiwiVW5rbm93bkR5bmFtaWNTdGFsZVRpbWUiLCJuYXZpZ2F0ZVR5cGUiLCJuYXZpZ2F0ZVRvS25vd25Sb3V0ZSIsImNhY2hlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/restore-reducer.js":
|
||
/*!*********************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/router-reducer/reducers/restore-reducer.js ***!
|
||
\*********************************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"restoreReducer\", ({\n enumerable: true,\n get: function() {\n return restoreReducer;\n }\n}));\nconst _computechangedpath = __webpack_require__(/*! ../compute-changed-path */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/compute-changed-path.js\");\nconst _pprnavigations = __webpack_require__(/*! ../ppr-navigations */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/ppr-navigations.js\");\nconst _navigation = __webpack_require__(/*! ../../segment-cache/navigation */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/navigation.js\");\nconst _bfcache = __webpack_require__(/*! ../../segment-cache/bfcache */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/bfcache.js\");\nfunction restoreReducer(state, action) {\n // This action is used to restore the router state from the history state.\n // However, it's possible that the history state no longer contains the `FlightRouterState`.\n // We will copy over the internal state on pushState/replaceState events, but if a history entry\n // occurred before hydration, or if the user navigated to a hash using a regular anchor link,\n // the history state will not contain the `FlightRouterState`.\n // In this case, we'll continue to use the existing tree so the router doesn't get into an invalid state.\n let treeToRestore;\n let renderedSearch;\n const historyState = action.historyState;\n if (historyState) {\n treeToRestore = historyState.tree;\n renderedSearch = historyState.renderedSearch;\n } else {\n treeToRestore = state.tree;\n renderedSearch = state.renderedSearch;\n }\n const currentUrl = new URL(state.canonicalUrl, location.origin);\n const restoredUrl = action.url;\n const restoredNextUrl = (0, _computechangedpath.extractPathFromFlightRouterState)(treeToRestore) ?? restoredUrl.pathname;\n const now = Date.now();\n // TODO: Store the dynamic stale time on the top-level state so it's known\n // during restores and refreshes.\n const accumulation = {\n separateRefreshUrls: null,\n scrollRef: null\n };\n const restoreSeed = (0, _navigation.convertServerPatchToFullTree)(now, treeToRestore, null, renderedSearch, _bfcache.UnknownDynamicStaleTime);\n const task = (0, _pprnavigations.startPPRNavigation)(now, currentUrl, state.renderedSearch, state.cache, state.tree, restoreSeed.routeTree, restoreSeed.metadataVaryPath, _pprnavigations.FreshnessPolicy.HistoryTraversal, null, null, restoreSeed.dynamicStaleAt, false, accumulation);\n if (task === null) {\n return (0, _navigation.completeHardNavigation)(state, restoredUrl, 'replace');\n }\n (0, _pprnavigations.spawnDynamicRequests)(task, restoredUrl, restoredNextUrl, _pprnavigations.FreshnessPolicy.HistoryTraversal, accumulation, // cache entry to mark as having a dynamic rewrite on mismatch. If a\n // mismatch occurs, the retry handler will traverse the known route tree\n // to find and mark the entry.\n null, 'replace');\n return (0, _navigation.completeTraverseNavigation)(state, restoredUrl, renderedSearch, task.node, task.route, restoredNextUrl);\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=restore-reducer.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL3Jlc3RvcmUtcmVkdWNlci5qcyIsIm1hcHBpbmdzIjoiOzs7O2tEQW9CZ0JBOzs7ZUFBQUE7OztnREFmaUM7NENBTTFDO3dDQU1BO3FDQUNpQztBQUVqQyxTQUFTQSxlQUNkQyxLQUEyQixFQUMzQkMsTUFBcUI7SUFFckIsMEVBQTBFO0lBQzFFLDRGQUE0RjtJQUM1RixnR0FBZ0c7SUFDaEcsNkZBQTZGO0lBQzdGLDhEQUE4RDtJQUM5RCx5R0FBeUc7SUFDekcsSUFBSUM7SUFDSixJQUFJQztJQUNKLE1BQU1DLGVBQWVILE9BQU9HLFlBQVk7SUFDeEMsSUFBSUEsY0FBYztRQUNoQkYsZ0JBQWdCRSxhQUFhQyxJQUFJO1FBQ2pDRixpQkFBaUJDLGFBQWFELGNBQWM7SUFDOUMsT0FBTztRQUNMRCxnQkFBZ0JGLE1BQU1LLElBQUk7UUFDMUJGLGlCQUFpQkgsTUFBTUcsY0FBYztJQUN2QztJQUVBLE1BQU1HLGFBQWEsSUFBSUMsSUFBSVAsTUFBTVEsWUFBWSxFQUFFQyxTQUFTQyxNQUFNO0lBQzlELE1BQU1DLGNBQWNWLE9BQU9XLEdBQUc7SUFDOUIsTUFBTUMsa0JBQ0pDLENBQUFBLEdBQUFBLG9CQUFBQSxnQ0FBQUEsRUFBaUNaLGtCQUFrQlMsWUFBWUksUUFBUTtJQUV6RSxNQUFNQyxNQUFNQyxLQUFLRCxHQUFHO0lBQ3BCLDBFQUEwRTtJQUMxRSxpQ0FBaUM7SUFDakMsTUFBTUUsZUFBOEM7UUFDbERDLHFCQUFxQjtRQUNyQkMsV0FBVztJQUNiO0lBQ0EsTUFBTUMsY0FBY0MsQ0FBQUEsR0FBQUEsWUFBQUEsNEJBQUFBLEVBQ2xCTixLQUNBZCxlQUNBLE1BQ0FDLGdCQUNBb0IsU0FBQUEsdUJBQXVCO0lBRXpCLE1BQU1DLE9BQU9DLENBQUFBLEdBQUFBLGdCQUFBQSxrQkFBQUEsRUFDWFQsS0FDQVYsWUFDQU4sTUFBTUcsY0FBYyxFQUNwQkgsTUFBTTBCLEtBQUssRUFDWDFCLE1BQU1LLElBQUksRUFDVmdCLFlBQVlNLFNBQVMsRUFDckJOLFlBQVlPLGdCQUFnQixFQUM1QkMsZ0JBQUFBLGVBQWUsQ0FBQ0MsZ0JBQWdCLEVBQ2hDLE1BQ0EsTUFDQVQsWUFBWVUsY0FBYyxFQUMxQixPQUNBYjtJQUdGLElBQUlNLFNBQVMsTUFBTTtRQUNqQixPQUFPUSxDQUFBQSxHQUFBQSxZQUFBQSxzQkFBQUEsRUFBdUJoQyxPQUFPVyxhQUFhO0lBQ3BEO0lBQ0FzQixDQUFBQSxHQUFBQSxnQkFBQUEsb0JBQUFBLEVBQ0VULE1BQ0FiLGFBQ0FFLGlCQUNBZ0IsZ0JBQUFBLGVBQWUsQ0FBQ0MsZ0JBQWdCLEVBQ2hDWixjQUNBLG9FQUNvRTtJQUNwRSx3RUFBd0U7SUFDeEUsOEJBQThCO0lBQzlCLE1BQ0E7SUFHRixPQUFPZ0IsQ0FBQUEsR0FBQUEsWUFBQUEsMEJBQUFBLEVBQ0xsQyxPQUNBVyxhQUNBUixnQkFDQXFCLEtBQUtXLElBQUksRUFDVFgsS0FBS1ksS0FBSyxFQUNWdkI7QUFFSiIsInNvdXJjZXMiOlsiL3NyYy9jbGllbnQvY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9yZWR1Y2Vycy9yZXN0b3JlLXJlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBSZWFkb25seVJlZHVjZXJTdGF0ZSxcbiAgUmVkdWNlclN0YXRlLFxuICBSZXN0b3JlQWN0aW9uLFxufSBmcm9tICcuLi9yb3V0ZXItcmVkdWNlci10eXBlcydcbmltcG9ydCB7IGV4dHJhY3RQYXRoRnJvbUZsaWdodFJvdXRlclN0YXRlIH0gZnJvbSAnLi4vY29tcHV0ZS1jaGFuZ2VkLXBhdGgnXG5pbXBvcnQge1xuICBGcmVzaG5lc3NQb2xpY3ksXG4gIHNwYXduRHluYW1pY1JlcXVlc3RzLFxuICBzdGFydFBQUk5hdmlnYXRpb24sXG4gIHR5cGUgTmF2aWdhdGlvblJlcXVlc3RBY2N1bXVsYXRpb24sXG59IGZyb20gJy4uL3Bwci1uYXZpZ2F0aW9ucydcbmltcG9ydCB0eXBlIHsgRmxpZ2h0Um91dGVyU3RhdGUgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItdHlwZXMnXG5pbXBvcnQge1xuICBjb21wbGV0ZUhhcmROYXZpZ2F0aW9uLFxuICBjb21wbGV0ZVRyYXZlcnNlTmF2aWdhdGlvbixcbiAgY29udmVydFNlcnZlclBhdGNoVG9GdWxsVHJlZSxcbn0gZnJvbSAnLi4vLi4vc2VnbWVudC1jYWNoZS9uYXZpZ2F0aW9uJ1xuaW1wb3J0IHsgVW5rbm93bkR5bmFtaWNTdGFsZVRpbWUgfSBmcm9tICcuLi8uLi9zZWdtZW50LWNhY2hlL2JmY2FjaGUnXG5cbmV4cG9ydCBmdW5jdGlvbiByZXN0b3JlUmVkdWNlcihcbiAgc3RhdGU6IFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBhY3Rpb246IFJlc3RvcmVBY3Rpb25cbik6IFJlZHVjZXJTdGF0ZSB7XG4gIC8vIFRoaXMgYWN0aW9uIGlzIHVzZWQgdG8gcmVzdG9yZSB0aGUgcm91dGVyIHN0YXRlIGZyb20gdGhlIGhpc3Rvcnkgc3RhdGUuXG4gIC8vIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgaGlzdG9yeSBzdGF0ZSBubyBsb25nZXIgY29udGFpbnMgdGhlIGBGbGlnaHRSb3V0ZXJTdGF0ZWAuXG4gIC8vIFdlIHdpbGwgY29weSBvdmVyIHRoZSBpbnRlcm5hbCBzdGF0ZSBvbiBwdXNoU3RhdGUvcmVwbGFjZVN0YXRlIGV2ZW50cywgYnV0IGlmIGEgaGlzdG9yeSBlbnRyeVxuICAvLyBvY2N1cnJlZCBiZWZvcmUgaHlkcmF0aW9uLCBvciBpZiB0aGUgdXNlciBuYXZpZ2F0ZWQgdG8gYSBoYXNoIHVzaW5nIGEgcmVndWxhciBhbmNob3IgbGluayxcbiAgLy8gdGhlIGhpc3Rvcnkgc3RhdGUgd2lsbCBub3QgY29udGFpbiB0aGUgYEZsaWdodFJvdXRlclN0YXRlYC5cbiAgLy8gSW4gdGhpcyBjYXNlLCB3ZSdsbCBjb250aW51ZSB0byB1c2UgdGhlIGV4aXN0aW5nIHRyZWUgc28gdGhlIHJvdXRlciBkb2Vzbid0IGdldCBpbnRvIGFuIGludmFsaWQgc3RhdGUuXG4gIGxldCB0cmVlVG9SZXN0b3JlOiBGbGlnaHRSb3V0ZXJTdGF0ZSB8IHVuZGVmaW5lZFxuICBsZXQgcmVuZGVyZWRTZWFyY2g6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBjb25zdCBoaXN0b3J5U3RhdGUgPSBhY3Rpb24uaGlzdG9yeVN0YXRlXG4gIGlmIChoaXN0b3J5U3RhdGUpIHtcbiAgICB0cmVlVG9SZXN0b3JlID0gaGlzdG9yeVN0YXRlLnRyZWVcbiAgICByZW5kZXJlZFNlYXJjaCA9IGhpc3RvcnlTdGF0ZS5yZW5kZXJlZFNlYXJjaFxuICB9IGVsc2Uge1xuICAgIHRyZWVUb1Jlc3RvcmUgPSBzdGF0ZS50cmVlXG4gICAgcmVuZGVyZWRTZWFyY2ggPSBzdGF0ZS5yZW5kZXJlZFNlYXJjaFxuICB9XG5cbiAgY29uc3QgY3VycmVudFVybCA9IG5ldyBVUkwoc3RhdGUuY2Fub25pY2FsVXJsLCBsb2NhdGlvbi5vcmlnaW4pXG4gIGNvbnN0IHJlc3RvcmVkVXJsID0gYWN0aW9uLnVybFxuICBjb25zdCByZXN0b3JlZE5leHRVcmwgPVxuICAgIGV4dHJhY3RQYXRoRnJvbUZsaWdodFJvdXRlclN0YXRlKHRyZWVUb1Jlc3RvcmUpID8/IHJlc3RvcmVkVXJsLnBhdGhuYW1lXG5cbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKVxuICAvLyBUT0RPOiBTdG9yZSB0aGUgZHluYW1pYyBzdGFsZSB0aW1lIG9uIHRoZSB0b3AtbGV2ZWwgc3RhdGUgc28gaXQncyBrbm93blxuICAvLyBkdXJpbmcgcmVzdG9yZXMgYW5kIHJlZnJlc2hlcy5cbiAgY29uc3QgYWNjdW11bGF0aW9uOiBOYXZpZ2F0aW9uUmVxdWVzdEFjY3VtdWxhdGlvbiA9IHtcbiAgICBzZXBhcmF0ZVJlZnJlc2hVcmxzOiBudWxsLFxuICAgIHNjcm9sbFJlZjogbnVsbCxcbiAgfVxuICBjb25zdCByZXN0b3JlU2VlZCA9IGNvbnZlcnRTZXJ2ZXJQYXRjaFRvRnVsbFRyZWUoXG4gICAgbm93LFxuICAgIHRyZWVUb1Jlc3RvcmUsXG4gICAgbnVsbCxcbiAgICByZW5kZXJlZFNlYXJjaCxcbiAgICBVbmtub3duRHluYW1pY1N0YWxlVGltZVxuICApXG4gIGNvbnN0IHRhc2sgPSBzdGFydFBQUk5hdmlnYXRpb24oXG4gICAgbm93LFxuICAgIGN1cnJlbnRVcmwsXG4gICAgc3RhdGUucmVuZGVyZWRTZWFyY2gsXG4gICAgc3RhdGUuY2FjaGUsXG4gICAgc3RhdGUudHJlZSxcbiAgICByZXN0b3JlU2VlZC5yb3V0ZVRyZWUsXG4gICAgcmVzdG9yZVNlZWQubWV0YWRhdGFWYXJ5UGF0aCxcbiAgICBGcmVzaG5lc3NQb2xpY3kuSGlzdG9yeVRyYXZlcnNhbCxcbiAgICBudWxsLFxuICAgIG51bGwsXG4gICAgcmVzdG9yZVNlZWQuZHluYW1pY1N0YWxlQXQsXG4gICAgZmFsc2UsXG4gICAgYWNjdW11bGF0aW9uXG4gIClcblxuICBpZiAodGFzayA9PT0gbnVsbCkge1xuICAgIHJldHVybiBjb21wbGV0ZUhhcmROYXZpZ2F0aW9uKHN0YXRlLCByZXN0b3JlZFVybCwgJ3JlcGxhY2UnKVxuICB9XG4gIHNwYXduRHluYW1pY1JlcXVlc3RzKFxuICAgIHRhc2ssXG4gICAgcmVzdG9yZWRVcmwsXG4gICAgcmVzdG9yZWROZXh0VXJsLFxuICAgIEZyZXNobmVzc1BvbGljeS5IaXN0b3J5VHJhdmVyc2FsLFxuICAgIGFjY3VtdWxhdGlvbixcbiAgICAvLyBIaXN0b3J5IHRyYXZlcnNhbCBkb2Vzbid0IHVzZSByb3V0ZSBwcmVkaWN0aW9uLCBzbyB0aGVyZSdzIG5vIHJvdXRlXG4gICAgLy8gY2FjaGUgZW50cnkgdG8gbWFyayBhcyBoYXZpbmcgYSBkeW5hbWljIHJld3JpdGUgb24gbWlzbWF0Y2guIElmIGFcbiAgICAvLyBtaXNtYXRjaCBvY2N1cnMsIHRoZSByZXRyeSBoYW5kbGVyIHdpbGwgdHJhdmVyc2UgdGhlIGtub3duIHJvdXRlIHRyZWVcbiAgICAvLyB0byBmaW5kIGFuZCBtYXJrIHRoZSBlbnRyeS5cbiAgICBudWxsLFxuICAgIC8vIEhpc3RvcnkgdHJhdmVyc2FsIGFsd2F5cyB1c2VzICdyZXBsYWNlJy5cbiAgICAncmVwbGFjZSdcbiAgKVxuICByZXR1cm4gY29tcGxldGVUcmF2ZXJzZU5hdmlnYXRpb24oXG4gICAgc3RhdGUsXG4gICAgcmVzdG9yZWRVcmwsXG4gICAgcmVuZGVyZWRTZWFyY2gsXG4gICAgdGFzay5ub2RlLFxuICAgIHRhc2sucm91dGUsXG4gICAgcmVzdG9yZWROZXh0VXJsXG4gIClcbn1cbiJdLCJuYW1lcyI6WyJyZXN0b3JlUmVkdWNlciIsInN0YXRlIiwiYWN0aW9uIiwidHJlZVRvUmVzdG9yZSIsInJlbmRlcmVkU2VhcmNoIiwiaGlzdG9yeVN0YXRlIiwidHJlZSIsImN1cnJlbnRVcmwiLCJVUkwiLCJjYW5vbmljYWxVcmwiLCJsb2NhdGlvbiIsIm9yaWdpbiIsInJlc3RvcmVkVXJsIiwidXJsIiwicmVzdG9yZWROZXh0VXJsIiwiZXh0cmFjdFBhdGhGcm9tRmxpZ2h0Um91dGVyU3RhdGUiLCJwYXRobmFtZSIsIm5vdyIsIkRhdGUiLCJhY2N1bXVsYXRpb24iLCJzZXBhcmF0ZVJlZnJlc2hVcmxzIiwic2Nyb2xsUmVmIiwicmVzdG9yZVNlZWQiLCJjb252ZXJ0U2VydmVyUGF0Y2hUb0Z1bGxUcmVlIiwiVW5rbm93bkR5bmFtaWNTdGFsZVRpbWUiLCJ0YXNrIiwic3RhcnRQUFJOYXZpZ2F0aW9uIiwiY2FjaGUiLCJyb3V0ZVRyZWUiLCJtZXRhZGF0YVZhcnlQYXRoIiwiRnJlc2huZXNzUG9saWN5IiwiSGlzdG9yeVRyYXZlcnNhbCIsImR5bmFtaWNTdGFsZUF0IiwiY29tcGxldGVIYXJkTmF2aWdhdGlvbiIsInNwYXduRHluYW1pY1JlcXVlc3RzIiwiY29tcGxldGVUcmF2ZXJzZU5hdmlnYXRpb24iLCJub2RlIiwicm91dGUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/restore-reducer.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/server-action-reducer.js":
|
||
/*!***************************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/router-reducer/reducers/server-action-reducer.js ***!
|
||
\***************************************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"serverActionReducer\", ({\n enumerable: true,\n get: function() {\n return serverActionReducer;\n }\n}));\nconst _appcallserver = __webpack_require__(/*! ../../../app-call-server */ \"(ssr)/./node_modules/next/dist/client/app-call-server.js\");\nconst _appfindsourcemapurl = __webpack_require__(/*! ../../../app-find-source-map-url */ \"(ssr)/./node_modules/next/dist/client/app-find-source-map-url.js\");\nconst _approuterheaders = __webpack_require__(/*! ../../app-router-headers */ \"(ssr)/./node_modules/next/dist/client/components/app-router-headers.js\");\nconst _unrecognizedactionerror = __webpack_require__(/*! ../../unrecognized-action-error */ \"(ssr)/./node_modules/next/dist/client/components/unrecognized-action-error.js\");\nconst _client = __webpack_require__(/*! react-server-dom-webpack/client */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-webpack-client.js\");\nconst _routerreducertypes = __webpack_require__(/*! ../router-reducer-types */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _assignlocation = __webpack_require__(/*! ../../../assign-location */ \"(ssr)/./node_modules/next/dist/client/assign-location.js\");\nconst _createhreffromurl = __webpack_require__(/*! ../create-href-from-url */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nconst _hasinterceptionrouteincurrenttree = __webpack_require__(/*! ./has-interception-route-in-current-tree */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js\");\nconst _flightdatahelpers = __webpack_require__(/*! ../../../flight-data-helpers */ \"(ssr)/./node_modules/next/dist/client/flight-data-helpers.js\");\nconst _redirect = __webpack_require__(/*! ../../redirect */ \"(ssr)/./node_modules/next/dist/client/components/redirect.js\");\nconst _removebasepath = __webpack_require__(/*! ../../../remove-base-path */ \"(ssr)/./node_modules/next/dist/client/remove-base-path.js\");\nconst _hasbasepath = __webpack_require__(/*! ../../../has-base-path */ \"(ssr)/./node_modules/next/dist/client/has-base-path.js\");\nconst _serverreferenceinfo = __webpack_require__(/*! ../../../../shared/lib/server-reference-info */ \"(ssr)/./node_modules/next/dist/shared/lib/server-reference-info.js\");\nconst _cache = __webpack_require__(/*! ../../segment-cache/cache */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/cache.js\");\nconst _scheduler = __webpack_require__(/*! ../../segment-cache/scheduler */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/scheduler.js\");\nconst _deploymentid = __webpack_require__(/*! ../../../../shared/lib/deployment-id */ \"(ssr)/./node_modules/next/dist/shared/lib/deployment-id.js\");\nconst _navigationbuildid = __webpack_require__(/*! ../../../navigation-build-id */ \"(ssr)/./node_modules/next/dist/client/navigation-build-id.js\");\nconst _constants = __webpack_require__(/*! ../../../../lib/constants */ \"(ssr)/./node_modules/next/dist/lib/constants.js\");\nconst _navigation = __webpack_require__(/*! ../../segment-cache/navigation */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/navigation.js\");\nconst _optimisticroutes = __webpack_require__(/*! ../../segment-cache/optimistic-routes */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/optimistic-routes.js\");\nconst _actionrevalidationkind = __webpack_require__(/*! ../../../../shared/lib/action-revalidation-kind */ \"(ssr)/./node_modules/next/dist/shared/lib/action-revalidation-kind.js\");\nconst _approuterutils = __webpack_require__(/*! ../../app-router-utils */ \"(ssr)/./node_modules/next/dist/client/components/app-router-utils.js\");\nconst _pprnavigations = __webpack_require__(/*! ../ppr-navigations */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/ppr-navigations.js\");\nconst _fetchserverresponse = __webpack_require__(/*! ../fetch-server-response */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/fetch-server-response.js\");\nconst _bfcache = __webpack_require__(/*! ../../segment-cache/bfcache */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/bfcache.js\");\nconst createFromFetch = _client.createFromFetch;\nlet createDebugChannel;\nif (true) {\n createDebugChannel = (__webpack_require__(/*! ../../../dev/debug-channel */ \"(ssr)/./node_modules/next/dist/client/dev/debug-channel.js\").createDebugChannel);\n}\nasync function fetchServerAction(state, nextUrl, { actionId, actionArgs }) {\n const temporaryReferences = (0, _client.createTemporaryReferenceSet)();\n const info = (0, _serverreferenceinfo.extractInfoFromServerReferenceId)(actionId);\n const usedArgs = (0, _serverreferenceinfo.omitUnusedArgs)(actionArgs, info);\n const body = await (0, _client.encodeReply)(usedArgs, {\n temporaryReferences\n });\n const headers = {\n Accept: _approuterheaders.RSC_CONTENT_TYPE_HEADER,\n [_approuterheaders.ACTION_HEADER]: actionId,\n [_approuterheaders.NEXT_ROUTER_STATE_TREE_HEADER]: (0, _flightdatahelpers.prepareFlightRouterStateForRequest)(state.tree)\n };\n const deploymentId = (0, _deploymentid.getDeploymentId)();\n if (deploymentId) {\n headers['x-deployment-id'] = deploymentId;\n }\n if (nextUrl) {\n headers[_approuterheaders.NEXT_URL] = nextUrl;\n }\n if (true) {\n if (self.__next_r) {\n headers[_approuterheaders.NEXT_HTML_REQUEST_ID_HEADER] = self.__next_r;\n }\n // Create a new request ID for the server action request. The server uses\n // this to tag debug information sent via WebSocket to the client, which\n // then routes those chunks to the debug channel associated with this ID.\n headers[_approuterheaders.NEXT_REQUEST_ID_HEADER] = crypto.getRandomValues(new Uint32Array(1))[0].toString(16);\n }\n const res = await fetch(state.canonicalUrl, {\n method: 'POST',\n headers,\n body\n });\n // Handle server actions that the server didn't recognize.\n const unrecognizedActionHeader = res.headers.get(_approuterheaders.NEXT_ACTION_NOT_FOUND_HEADER);\n if (unrecognizedActionHeader === '1') {\n throw Object.defineProperty(new _unrecognizedactionerror.UnrecognizedActionError(`Server Action \"${actionId}\" was not found on the server. \\nRead more: https://nextjs.org/docs/messages/failed-to-find-server-action`), \"__NEXT_ERROR_CODE\", {\n value: \"E715\",\n enumerable: false,\n configurable: true\n });\n }\n const redirectHeader = res.headers.get('x-action-redirect');\n const [location1, _redirectType] = redirectHeader?.split(';') || [];\n let redirectType;\n switch(_redirectType){\n case 'push':\n redirectType = 'push';\n break;\n case 'replace':\n redirectType = 'replace';\n break;\n default:\n redirectType = undefined;\n }\n const isPrerender = !!res.headers.get(_approuterheaders.NEXT_IS_PRERENDER_HEADER);\n let revalidationKind = _actionrevalidationkind.ActionDidNotRevalidate;\n try {\n const revalidationHeader = res.headers.get('x-action-revalidated');\n if (revalidationHeader) {\n const parsedKind = JSON.parse(revalidationHeader);\n if (parsedKind === _actionrevalidationkind.ActionDidRevalidateStaticAndDynamic || parsedKind === _actionrevalidationkind.ActionDidRevalidateDynamicOnly) {\n revalidationKind = parsedKind;\n }\n }\n } catch {}\n const redirectLocation = location1 ? (0, _assignlocation.assignLocation)(location1, new URL(state.canonicalUrl, window.location.href)) : undefined;\n const contentType = res.headers.get('content-type');\n const isRscResponse = !!(contentType && contentType.startsWith(_approuterheaders.RSC_CONTENT_TYPE_HEADER));\n // Handle invalid server action responses.\n // A valid response must have `content-type: text/x-component`, unless it's an external redirect.\n // (external redirects have an 'x-action-redirect' header, but the body is an empty 'text/plain')\n if (!isRscResponse && !redirectLocation) {\n // The server can respond with a text/plain error message, but we'll fallback to something generic\n // if there isn't one.\n const message = res.status >= 400 && contentType === 'text/plain' ? await res.text() : 'An unexpected response was received from the server.';\n throw Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n }\n let actionResult;\n let actionFlightData;\n let actionFlightDataRenderedSearch;\n let couldBeIntercepted = false;\n if (isRscResponse) {\n // Server action redirect responses carry the Flight data of the redirect\n // target, which may be prerendered with a completeness marker byte\n // prepended. Strip it before passing to Flight.\n const responsePromise = redirectLocation ? (0, _fetchserverresponse.processFetch)(res).then(({ response: r })=>r) : Promise.resolve(res);\n const response = await createFromFetch(responsePromise, {\n callServer: _appcallserver.callServer,\n findSourceMapURL: _appfindsourcemapurl.findSourceMapURL,\n temporaryReferences,\n debugChannel: createDebugChannel && createDebugChannel(headers)\n });\n // An internal redirect can send an RSC response, but does not have a useful `actionResult`.\n actionResult = redirectLocation ? undefined : response.a;\n couldBeIntercepted = response.i;\n // Check if the response build ID matches the client build ID.\n // In a multi-zone setup, when a server action triggers a redirect,\n // the server pre-fetches the redirect target as RSC. If the redirect\n // target is served by a different Next.js zone (different build), the\n // pre-fetched RSC data will have a foreign build ID. We must discard\n // the flight data in that case so the redirect triggers an MPA\n // navigation (full page load) instead of trying to apply the foreign\n // RSC payload — which would result in a blank page.\n const responseBuildId = res.headers.get(_constants.NEXT_NAV_DEPLOYMENT_ID_HEADER) ?? response.b;\n if (responseBuildId !== undefined && responseBuildId !== (0, _navigationbuildid.getNavigationBuildId)()) {\n // Build ID mismatch — discard the flight data. The redirect will\n // still be processed, and the absence of flight data will cause an\n // MPA navigation via completeHardNavigation().\n } else {\n const maybeFlightData = (0, _flightdatahelpers.normalizeFlightData)(response.f);\n if (maybeFlightData !== '') {\n actionFlightData = maybeFlightData;\n actionFlightDataRenderedSearch = response.q;\n }\n }\n } else {\n // An external redirect doesn't contain RSC data.\n actionResult = undefined;\n actionFlightData = undefined;\n actionFlightDataRenderedSearch = undefined;\n }\n return {\n actionResult,\n actionFlightData,\n actionFlightDataRenderedSearch,\n redirectLocation,\n redirectType,\n revalidationKind,\n isPrerender,\n couldBeIntercepted\n };\n}\nfunction serverActionReducer(state, action) {\n const { resolve, reject } = action;\n // only pass along the `nextUrl` param (used for interception routes) if the current route was intercepted.\n // If the route has been intercepted, the action should be as well.\n // Otherwise the server action might be intercepted with the wrong action id\n // (ie, one that corresponds with the intercepted route)\n const nextUrl = // performing a dynamic request. This is because we update\n // the next-url after a navigation, but we want the same\n // interception route to be matched that used the last\n // next-url.\n (state.previousNextUrl || state.nextUrl) && (0, _hasinterceptionrouteincurrenttree.hasInterceptionRouteInCurrentTree)(state.tree) ? state.previousNextUrl || state.nextUrl : null;\n return fetchServerAction(state, nextUrl, action).then(async ({ revalidationKind, actionResult, actionFlightData: flightData, actionFlightDataRenderedSearch: flightDataRenderedSearch, redirectLocation, redirectType, isPrerender, couldBeIntercepted })=>{\n if (revalidationKind !== _actionrevalidationkind.ActionDidNotRevalidate) {\n // There was either a revalidation or a refresh, or maybe both.\n // Evict the BFCache, which may contain dynamic data.\n (0, _bfcache.invalidateBfCache)();\n // Store whether this action triggered any revalidation\n // The action queue will use this information to potentially\n // trigger a refresh action if the action was discarded\n // (ie, due to a navigation, before the action completed)\n action.didRevalidate = true;\n // If there was a revalidation, evict the prefetch cache.\n // TODO: Evict only segments with matching tags and/or paths.\n // TODO: We should only invalidate the route cache if cookies were\n // mutated, since route trees may vary based on cookies. For now we\n // invalidate both caches until we have a way to detect cookie\n // mutations on the client.\n if (revalidationKind === _actionrevalidationkind.ActionDidRevalidateStaticAndDynamic) {\n (0, _cache.invalidateEntirePrefetchCache)(nextUrl, state.tree);\n }\n // Start a cooldown before re-prefetching to allow CDN cache\n // propagation.\n (0, _scheduler.startRevalidationCooldown)();\n }\n const navigateType = redirectType || 'push';\n if (redirectLocation !== undefined) {\n // If the action triggered a redirect, the action promise will be rejected with\n // a redirect so that it's handled by RedirectBoundary as we won't have a valid\n // action result to resolve the promise with. This will effectively reset the state of\n // the component that called the action as the error boundary will remount the tree.\n // The status code doesn't matter here as the action handler will have already sent\n // a response with the correct status code.\n if ((0, _approuterutils.isExternalURL)(redirectLocation)) {\n // External redirect. Triggers an MPA navigation.\n const redirectHref = redirectLocation.href;\n const redirectError = createRedirectErrorForAction(redirectHref, navigateType);\n reject(redirectError);\n return (0, _navigation.completeHardNavigation)(state, redirectLocation, navigateType);\n } else {\n // Internal redirect. Triggers an SPA navigation.\n const redirectWithBasepath = (0, _createhreffromurl.createHrefFromUrl)(redirectLocation, false);\n const redirectHref = (0, _hasbasepath.hasBasePath)(redirectWithBasepath) ? (0, _removebasepath.removeBasePath)(redirectWithBasepath) : redirectWithBasepath;\n const redirectError = createRedirectErrorForAction(redirectHref, navigateType);\n reject(redirectError);\n }\n } else {\n // If there's no redirect, resolve the action with the result.\n resolve(actionResult);\n }\n // Check if we can bail out without updating any state.\n if (redirectLocation === undefined && // Did the action revalidate any data?\n revalidationKind === _actionrevalidationkind.ActionDidNotRevalidate && // Did the server render new data?\n flightData === undefined) {\n // The action did not trigger any revalidations or redirects. No\n // navigation is required.\n return state;\n }\n if (flightData === undefined && redirectLocation !== undefined) {\n // The server redirected, but did not send any Flight data. This implies\n // an external redirect.\n // TODO: We should refactor the action response type to be more explicit\n // about the various response types.\n return (0, _navigation.completeHardNavigation)(state, redirectLocation, navigateType);\n }\n if (typeof flightData === 'string') {\n // If the flight data is just a string, something earlier in the\n // response handling triggered an external redirect.\n return (0, _navigation.completeHardNavigation)(state, new URL(flightData, location.origin), navigateType);\n }\n // The action triggered a navigation — either a redirect, a revalidation,\n // or both.\n // If there was no redirect, then the target URL is the same as the\n // current URL.\n const currentUrl = new URL(state.canonicalUrl, location.origin);\n const currentRenderedSearch = state.renderedSearch;\n const redirectUrl = redirectLocation !== undefined ? redirectLocation : currentUrl;\n const currentFlightRouterState = state.tree;\n const scrollBehavior = _routerreducertypes.ScrollBehavior.Default;\n // If the action triggered a revalidation of the cache, we should also\n // refresh all the dynamic data.\n const freshnessPolicy = revalidationKind === _actionrevalidationkind.ActionDidNotRevalidate ? _pprnavigations.FreshnessPolicy.Default : _pprnavigations.FreshnessPolicy.RefreshAll;\n // The server may have sent back new data. If so, we will perform a\n // \"seeded\" navigation that uses the data from the response.\n // TODO: Currently the server always renders from the root in\n // response to a Server Action. In the case of a normal redirect\n // with no revalidation, it should skip over the shared layouts.\n if (flightData !== undefined && flightDataRenderedSearch !== undefined) {\n // The server sent back new route data as part of the response. We\n // will use this to render the new page. If this happens to be only a\n // subset of the data needed to render the new page, we'll initiate a\n // new fetch, like we would for a normal navigation.\n const redirectCanonicalUrl = (0, _createhreffromurl.createHrefFromUrl)(redirectUrl);\n const now = Date.now();\n // TODO: Store the dynamic stale time on the top-level state so it's\n // known during restores and refreshes.\n const redirectSeed = (0, _navigation.convertServerPatchToFullTree)(now, currentFlightRouterState, flightData, flightDataRenderedSearch, _bfcache.UnknownDynamicStaleTime);\n // Learn the route pattern so we can predict it for future navigations.\n const metadataVaryPath = redirectSeed.metadataVaryPath;\n if (metadataVaryPath !== null) {\n (0, _optimisticroutes.discoverKnownRoute)(now, redirectUrl.pathname, nextUrl, null, redirectSeed.routeTree, metadataVaryPath, couldBeIntercepted, redirectCanonicalUrl, isPrerender, false // hasDynamicRewrite\n );\n }\n return (0, _navigation.navigateToKnownRoute)(now, state, redirectUrl, redirectCanonicalUrl, redirectSeed, currentUrl, currentRenderedSearch, state.cache, currentFlightRouterState, freshnessPolicy, nextUrl, scrollBehavior, navigateType, null, // have the route tree from the server response. If a mismatch occurs\n // during dynamic data fetch, the retry handler will traverse the\n // known route tree to mark the entry as having a dynamic rewrite.\n null);\n }\n // The server did not send back new data. We'll perform a regular, non-\n // seeded navigation — effectively the same as <Link> or router.push().\n return (0, _navigation.navigate)(state, redirectUrl, currentUrl, currentRenderedSearch, state.cache, currentFlightRouterState, nextUrl, freshnessPolicy, scrollBehavior, navigateType);\n }, (e)=>{\n // When the server action is rejected we don't update the state and instead call the reject handler of the promise.\n reject(e);\n return state;\n });\n}\nfunction createRedirectErrorForAction(redirectHref, resolvedRedirectType) {\n const redirectError = (0, _redirect.getRedirectError)(redirectHref, resolvedRedirectType);\n redirectError.handled = true;\n return redirectError;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=server-action-reducer.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL3NlcnZlci1hY3Rpb24tcmVkdWNlci5qcyIsIm1hcHBpbmdzIjoiOzs7O3VEQTBSZ0JBOzs7ZUFBQUE7OzsyQ0F0Ulc7aURBQ007OENBVTFCO3FEQUNpQztvQ0FRakM7Z0RBT3dCOzRDQUNBOytDQUNHOytEQUNnQjsrQ0FLM0M7c0NBQzBCOzRDQUVGO3lDQUNIO2lEQUlyQjttQ0FDdUM7dUNBQ0o7MENBQ1Y7K0NBQ0s7dUNBQ1M7d0NBTXZDOzhDQUM0QjtvREFPNUI7NENBQ3VCOzRDQUNFO2lEQUNIO3FDQUl0QjtBQUVQLE1BQU1DLGtCQUNKQyxRQUFBQSxlQUFzQjtBQUV4QixJQUFJQztBQUlKLElBQUlDLElBQXVFLEVBQUU7SUFDM0VELHFCQUNFSyx3SUFDa0I7QUFDdEI7QUFnQkEsZUFBZUMsa0JBQ2JDLEtBQTJCLEVBQzNCQyxPQUF3QyxFQUN4QyxFQUFFQyxRQUFRLEVBQUVDLFVBQVUsRUFBc0I7SUFFNUMsTUFBTUMsc0JBQXNCQyxDQUFBQSxHQUFBQSxRQUFBQSwyQkFBQUE7SUFDNUIsTUFBTUMsT0FBT0MsQ0FBQUEsR0FBQUEscUJBQUFBLGdDQUFBQSxFQUFpQ0w7SUFDOUMsTUFBTU0sV0FBV0MsQ0FBQUEsR0FBQUEscUJBQUFBLGNBQWMsRUFBQ04sWUFBWUc7SUFDNUMsTUFBTUksT0FBTyxNQUFNQyxDQUFBQSxHQUFBQSxRQUFBQSxXQUFBQSxFQUFZSCxVQUFVO1FBQUVKO0lBQW9CO0lBRS9ELE1BQU1RLFVBQWtDO1FBQ3RDQyxRQUFRQyxrQkFBQUEsdUJBQXVCO1FBQy9CLENBQUNDLGtCQUFBQSxhQUFhLENBQUMsRUFBRWI7UUFDakIsQ0FBQ2Msa0JBQUFBLDZCQUE2QixDQUFDLEVBQUVDLENBQUFBLEdBQUFBLG1CQUFBQSxrQ0FBQUEsRUFDL0JqQixNQUFNa0IsSUFBSTtJQUVkO0lBRUEsTUFBTUMsZUFBZUMsQ0FBQUEs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dXJjZXMiOlsiL3NyYy9jbGllbnQvY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9yZWR1Y2Vycy9zZXJ2ZXItYWN0aW9uLXJlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBBY3Rpb25GbGlnaHRSZXNwb25zZSxcbiAgQWN0aW9uUmVzdWx0LFxufSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItdHlwZXMnXG5pbXBvcnQgeyBjYWxsU2VydmVyIH0gZnJvbSAnLi4vLi4vLi4vYXBwLWNhbGwtc2VydmVyJ1xuaW1wb3J0IHsgZmluZFNvdXJjZU1hcFVSTCB9IGZyb20gJy4uLy4uLy4uL2FwcC1maW5kLXNvdXJjZS1tYXAtdXJsJ1xuaW1wb3J0IHtcbiAgQUNUSU9OX0hFQURFUixcbiAgTkVYVF9BQ1RJT05fTk9UX0ZPVU5EX0hFQURFUixcbiAgTkVYVF9JU19QUkVSRU5ERVJfSEVBREVSLFxuICBORVhUX0hUTUxfUkVRVUVTVF9JRF9IRUFERVIsXG4gIE5FWFRfUk9VVEVSX1NUQVRFX1RSRUVfSEVBREVSLFxuICBORVhUX1VSTCxcbiAgUlNDX0NPTlRFTlRfVFlQRV9IRUFERVIsXG4gIE5FWFRfUkVRVUVTVF9JRF9IRUFERVIsXG59IGZyb20gJy4uLy4uL2FwcC1yb3V0ZXItaGVhZGVycydcbmltcG9ydCB7IFVucmVjb2duaXplZEFjdGlvbkVycm9yIH0gZnJvbSAnLi4vLi4vdW5yZWNvZ25pemVkLWFjdGlvbi1lcnJvcidcblxuLy8gVE9ETzogRXhwbGljaXRseSBpbXBvcnQgZnJvbSBjbGllbnQuYnJvd3NlclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IHtcbiAgY3JlYXRlRnJvbUZldGNoIGFzIGNyZWF0ZUZyb21GZXRjaEJyb3dzZXIsXG4gIGNyZWF0ZVRlbXBvcmFyeVJlZmVyZW5jZVNldCxcbiAgZW5jb2RlUmVwbHksXG59IGZyb20gJ3JlYWN0LXNlcnZlci1kb20td2VicGFjay9jbGllbnQnXG5cbmltcG9ydCB0eXBlIHtcbiAgUmVhZG9ubHlSZWR1Y2VyU3RhdGUsXG4gIFJlZHVjZXJTdGF0ZSxcbiAgU2VydmVyQWN0aW9uQWN0aW9uLFxufSBmcm9tICcuLi9yb3V0ZXItcmVkdWNlci10eXBlcydcbmltcG9ydCB7IFNjcm9sbEJlaGF2aW9yIH0gZnJvbSAnLi4vcm91dGVyLXJlZHVjZXItdHlwZXMnXG5pbXBvcnQgeyBhc3NpZ25Mb2NhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2Fzc2lnbi1sb2NhdGlvbidcbmltcG9ydCB7IGNyZWF0ZUhyZWZGcm9tVXJsIH0gZnJvbSAnLi4vY3JlYXRlLWhyZWYtZnJvbS11cmwnXG5pbXBvcnQgeyBoYXNJbnRlcmNlcHRpb25Sb3V0ZUluQ3VycmVudFRyZWUgfSBmcm9tICcuL2hhcy1pbnRlcmNlcHRpb24tcm91dGUtaW4tY3VycmVudC10cmVlJ1xuaW1wb3J0IHtcbiAgbm9ybWFsaXplRmxpZ2h0RGF0YSxcbiAgcHJlcGFyZUZsaWdodFJvdXRlclN0YXRlRm9yUmVxdWVzdCxcbiAgdHlwZSBOb3JtYWxpemVkRmxpZ2h0RGF0YSxcbn0gZnJvbSAnLi4vLi4vLi4vZmxpZ2h0LWRhdGEtaGVscGVycydcbmltcG9ydCB7IGdldFJlZGlyZWN0RXJyb3IgfSBmcm9tICcuLi8uLi9yZWRpcmVjdCdcbmltcG9ydCB0eXBlIHsgUmVkaXJlY3RUeXBlIH0gZnJvbSAnLi4vLi4vcmVkaXJlY3QtZXJyb3InXG5pbXBvcnQgeyByZW1vdmVCYXNlUGF0aCB9IGZyb20gJy4uLy4uLy4uL3JlbW92ZS1iYXNlLXBhdGgnXG5pbXBvcnQgeyBoYXNCYXNlUGF0aCB9IGZyb20gJy4uLy4uLy4uL2hhcy1iYXNlLXBhdGgnXG5pbXBvcnQge1xuICBleHRyYWN0SW5mb0Zyb21TZXJ2ZXJSZWZlcmVuY2VJZCxcbiAgb21pdFVudXNlZEFyZ3MsXG59IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9saWIvc2VydmVyLXJlZmVyZW5jZS1pbmZvJ1xuaW1wb3J0IHsgaW52YWxpZGF0ZUVudGlyZVByZWZldGNoQ2FjaGUgfSBmcm9tICcuLi8uLi9zZWdtZW50LWNhY2hlL2NhY2hlJ1xuaW1wb3J0IHsgc3RhcnRSZXZhbGlkYXRpb25Db29sZG93biB9IGZyb20gJy4uLy4uL3NlZ21lbnQtY2FjaGUvc2NoZWR1bGVyJ1xuaW1wb3J0IHsgZ2V0RGVwbG95bWVudElkIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2xpYi9kZXBsb3ltZW50LWlkJ1xuaW1wb3J0IHsgZ2V0TmF2aWdhdGlvbkJ1aWxkSWQgfSBmcm9tICcuLi8uLi8uLi9uYXZpZ2F0aW9uLWJ1aWxkLWlkJ1xuaW1wb3J0IHsgTkVYVF9OQVZfREVQTE9ZTUVOVF9JRF9IRUFERVIgfSBmcm9tICcuLi8uLi8uLi8uLi9saWIvY29uc3RhbnRzJ1xuaW1wb3J0IHtcbiAgY29tcGxldGVIYXJkTmF2aWdhdGlvbixcbiAgY29udmVydFNlcnZlclBhdGNoVG9GdWxsVHJlZSxcbiAgbmF2aWdhdGVUb0tub3duUm91dGUsXG4gIG5hdmlnYXRlLFxufSBmcm9tICcuLi8uLi9zZWdtZW50LWNhY2hlL25hdmlnYXRpb24nXG5pbXBvcnQgeyBkaXNjb3Zlcktub3duUm91dGUgfSBmcm9tICcuLi8uLi9zZWdtZW50LWNhY2hlL29wdGltaXN0aWMtcm91dGVzJ1xuaW1wb3J0IHR5cGUgeyBOb3JtYWxpemVkU2VhcmNoIH0gZnJvbSAnLi4vLi4vc2VnbWVudC1jYWNoZS9jYWNoZS1rZXknXG5pbXBvcnQge1xuICBBY3Rpb25EaWROb3RSZXZhbGlkYXRlLFxuICBBY3Rpb25EaWRSZXZhbGlkYXRlRHluYW1pY09ubHksXG4gIEFjdGlvbkRpZFJldmFsaWRhdGVTdGF0aWNBbmREeW5hbWljLFxuICB0eXBlIEFjdGlvblJldmFsaWRhdGlvbktpbmQsXG59IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9saWIvYWN0aW9uLXJldmFsaWRhdGlvbi1raW5kJ1xuaW1wb3J0IHsgaXNFeHRlcm5hbFVSTCB9IGZyb20gJy4uLy4uL2FwcC1yb3V0ZXItdXRpbHMnXG5pbXBvcnQgeyBGcmVzaG5lc3NQb2xpY3kgfSBmcm9tICcuLi9wcHItbmF2aWdhdGlvbnMnXG5pbXBvcnQgeyBwcm9jZXNzRmV0Y2ggfSBmcm9tICcuLi9mZXRjaC1zZXJ2ZXItcmVzcG9uc2UnXG5pbXBvcnQge1xuICBpbnZhbGlkYXRlQmZDYWNoZSxcbiAgVW5rbm93bkR5bmFtaWNTdGFsZVRpbWUsXG59IGZyb20gJy4uLy4uL3NlZ21lbnQtY2FjaGUvYmZjYWNoZSdcblxuY29uc3QgY3JlYXRlRnJvbUZldGNoID1cbiAgY3JlYXRlRnJvbUZldGNoQnJvd3NlciBhcyAodHlwZW9mIGltcG9ydCgncmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrL2NsaWVudC5icm93c2VyJykpWydjcmVhdGVGcm9tRmV0Y2gnXVxuXG5sZXQgY3JlYXRlRGVidWdDaGFubmVsOlxuICB8IHR5cGVvZiBpbXBvcnQoJy4uLy4uLy4uL2Rldi9kZWJ1Zy1jaGFubmVsJykuY3JlYXRlRGVidWdDaGFubmVsXG4gIHwgdW5kZWZpbmVkXG5cbmlmIChwcm9jZXNzLmVudi5fX05FWFRfREVWX1NFUlZFUiAmJiBwcm9jZXNzLmVudi5fX05FWFRfUkVBQ1RfREVCVUdfQ0hBTk5FTCkge1xuICBjcmVhdGVEZWJ1Z0NoYW5uZWwgPSAoXG4gICAgcmVxdWlyZSgnLi4vLi4vLi4vZGV2L2RlYnVnLWNoYW5uZWwnKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi8uLi8uLi9kZXYvZGVidWctY2hhbm5lbCcpXG4gICkuY3JlYXRlRGVidWdDaGFubmVsXG59XG5cbi8vIFRPRE86IFJlZmFjdG9yIHRvIGJlIGEgZGlzY3JpbWluYXRlZCB1bmlvbi4gT3IganVzdCBnZXQgcmlkIG9mIGl0O1xuLy8gZmV0Y2hTZXJ2ZXJBY3Rpb24gb25seSBoYXMgb25lIGNhbGxlciwgbm8gcmVhc29uIHRoaXMgaW50ZXJtZWRpYXRlIHR5cGUgaGFzXG4vLyB0byBleGlzdC5cbnR5cGUgRmV0Y2hTZXJ2ZXJBY3Rpb25SZXN1bHQgPSB7XG4gIHJlZGlyZWN0TG9jYXRpb246IFVSTCB8IHVuZGVmaW5lZFxuICByZWRpcmVjdFR5cGU6IFJlZGlyZWN0VHlwZSB8IHVuZGVmaW5lZFxuICByZXZhbGlkYXRpb25LaW5kOiBBY3Rpb25SZXZhbGlkYXRpb25LaW5kXG4gIGFjdGlvblJlc3VsdDogQWN0aW9uUmVzdWx0IHwgdW5kZWZpbmVkXG4gIGFjdGlvbkZsaWdodERhdGE6IE5vcm1hbGl6ZWRGbGlnaHREYXRhW10gfCBzdHJpbmcgfCB1bmRlZmluZWRcbiAgYWN0aW9uRmxpZ2h0RGF0YVJlbmRlcmVkU2VhcmNoOiBOb3JtYWxpemVkU2VhcmNoIHwgdW5kZWZpbmVkXG4gIGlzUHJlcmVuZGVyOiBib29sZWFuXG4gIGNvdWxkQmVJbnRlcmNlcHRlZDogYm9vbGVhblxufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFNlcnZlckFjdGlvbihcbiAgc3RhdGU6IFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBuZXh0VXJsOiBSZWFkb25seVJlZHVjZXJTdGF0ZVsnbmV4dFVybCddLFxuICB7IGFjdGlvbklkLCBhY3Rpb25BcmdzIH06IFNlcnZlckFjdGlvbkFjdGlvblxuKTogUHJvbWlzZTxGZXRjaFNlcnZlckFjdGlvblJlc3VsdD4ge1xuICBjb25zdCB0ZW1wb3JhcnlSZWZlcmVuY2VzID0gY3JlYXRlVGVtcG9yYXJ5UmVmZXJlbmNlU2V0KClcbiAgY29uc3QgaW5mbyA9IGV4dHJhY3RJbmZvRnJvbVNlcnZlclJlZmVyZW5jZUlkKGFjdGlvbklkKVxuICBjb25zdCB1c2VkQXJncyA9IG9taXRVbnVzZWRBcmdzKGFjdGlvbkFyZ3MsIGluZm8pXG4gIGNvbnN0IGJvZHkgPSBhd2FpdCBlbmNvZGVSZXBseSh1c2VkQXJncywgeyB0ZW1wb3JhcnlSZWZlcmVuY2VzIH0pXG5cbiAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICBBY2NlcHQ6IFJTQ19DT05URU5UX1RZUEVfSEVBREVSLFxuICAgIFtBQ1RJT05fSEVBREVSXTogYWN0aW9uSWQsXG4gICAgW05FWFRfUk9VVEVSX1NUQVRFX1RSRUVfSEVBREVSXTogcHJlcGFyZUZsaWdodFJvdXRlclN0YXRlRm9yUmVxdWVzdChcbiAgICAgIHN0YXRlLnRyZWVcbiAgICApLFxuICB9XG5cbiAgY29uc3QgZGVwbG95bWVudElkID0gZ2V0RGVwbG95bWVudElkKClcbiAgaWYgKGRlcGxveW1lbnRJZCkge1xuICAgIGhlYWRlcnNbJ3gtZGVwbG95bWVudC1pZCddID0gZGVwbG95bWVudElkXG4gIH1cblxuICBpZiAobmV4dFVybCkge1xuICAgIGhlYWRlcnNbTkVYVF9VUkxdID0gbmV4dFVybFxuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9ERVZfU0VSVkVSKSB7XG4gICAgaWYgKHNlbGYuX19uZXh0X3IpIHtcbiAgICAgIGhlYWRlcnNbTkVYVF9IVE1MX1JFUVVFU1RfSURfSEVBREVSXSA9IHNlbGYuX19uZXh0X3JcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgYSBuZXcgcmVxdWVzdCBJRCBmb3IgdGhlIHNlcnZlciBhY3Rpb24gcmVxdWVzdC4gVGhlIHNlcnZlciB1c2VzXG4gICAgLy8gdGhpcyB0byB0YWcgZGVidWcgaW5mb3JtYXRpb24gc2VudCB2aWEgV2ViU29ja2V0IHRvIHRoZSBjbGllbnQsIHdoaWNoXG4gICAgLy8gdGhlbiByb3V0ZXMgdGhvc2UgY2h1bmtzIHRvIHRoZSBkZWJ1ZyBjaGFubmVsIGFzc29jaWF0ZWQgd2l0aCB0aGlzIElELlxuICAgIGhlYWRlcnNbTkVYVF9SRVFVRVNUX0lEX0hFQURFUl0gPSBjcnlwdG9cbiAgICAgIC5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQzMkFycmF5KDEpKVswXVxuICAgICAgLnRvU3RyaW5nKDE2KVxuICB9XG5cbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goc3RhdGUuY2Fub25pY2FsVXJsLCB7IG1ldGhvZDogJ1BPU1QnLCBoZWFkZXJzLCBib2R5IH0pXG5cbiAgLy8gSGFuZGxlIHNlcnZlciBhY3Rpb25zIHRoYXQgdGhlIHNlcnZlciBkaWRuJ3QgcmVjb2duaXplLlxuICBjb25zdCB1bnJlY29nbml6ZWRBY3Rpb25IZWFkZXIgPSByZXMuaGVhZGVycy5nZXQoTkVYVF9BQ1RJT05fTk9UX0ZPVU5EX0hFQURFUilcbiAgaWYgKHVucmVjb2duaXplZEFjdGlvbkhlYWRlciA9PT0gJzEnKSB7XG4gICAgdGhyb3cgbmV3IFVucmVjb2duaXplZEFjdGlvbkVycm9yKFxuICAgICAgYFNlcnZlciBBY3Rpb24gXCIke2FjdGlvbklkfVwiIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlci4gXFxuUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9mYWlsZWQtdG8tZmluZC1zZXJ2ZXItYWN0aW9uYFxuICAgIClcbiAgfVxuXG4gIGNvbnN0IHJlZGlyZWN0SGVhZGVyID0gcmVzLmhlYWRlcnMuZ2V0KCd4LWFjdGlvbi1yZWRpcmVjdCcpXG4gIGNvbnN0IFtsb2NhdGlvbiwgX3JlZGlyZWN0VHlwZV0gPSByZWRpcmVjdEhlYWRlcj8uc3BsaXQoJzsnKSB8fCBbXVxuICBsZXQgcmVkaXJlY3RUeXBlOiBSZWRpcmVjdFR5cGUgfCB1bmRlZmluZWRcbiAgc3dpdGNoIChfcmVkaXJlY3RUeXBlKSB7XG4gICAgY2FzZSAncHVzaCc6XG4gICAgICByZWRpcmVjdFR5cGUgPSAncHVzaCdcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncmVwbGFjZSc6XG4gICAgICByZWRpcmVjdFR5cGUgPSAncmVwbGFjZSdcbiAgICAgIGJyZWFrXG4gICAgZGVmYXVsdDpcbiAgICAgIHJlZGlyZWN0VHlwZSA9IHVuZGVmaW5lZFxuICB9XG5cbiAgY29uc3QgaXNQcmVyZW5kZXIgPSAhIXJlcy5oZWFkZXJzLmdldChORVhUX0lTX1BSRVJFTkRFUl9IRUFERVIpXG5cbiAgbGV0IHJldmFsaWRhdGlvbktpbmQ6IEFjdGlvblJldmFsaWRhdGlvbktpbmQgPSBBY3Rpb25EaWROb3RSZXZhbGlkYXRlXG4gIHRyeSB7XG4gICAgY29uc3QgcmV2YWxpZGF0aW9uSGVhZGVyID0gcmVzLmhlYWRlcnMuZ2V0KCd4LWFjdGlvbi1yZXZhbGlkYXRlZCcpXG4gICAgaWYgKHJldmFsaWRhdGlvbkhlYWRlcikge1xuICAgICAgY29uc3QgcGFyc2VkS2luZCA9IEpTT04ucGFyc2UocmV2YWxpZGF0aW9uSGVhZGVyKVxuICAgICAgaWYgKFxuICAgICAgICBwYXJzZWRLaW5kID09PSBBY3Rpb25EaWRSZXZhbGlkYXRlU3RhdGljQW5kRHluYW1pYyB8fFxuICAgICAgICBwYXJzZWRLaW5kID09PSBBY3Rpb25EaWRSZXZhbGlkYXRlRHluYW1pY09ubHlcbiAgICAgICkge1xuICAgICAgICByZXZhbGlkYXRpb25LaW5kID0gcGFyc2VkS2luZFxuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCB7fVxuXG4gIGNvbnN0IHJlZGlyZWN0TG9jYXRpb24gPSBsb2NhdGlvblxuICAgID8gYXNzaWduTG9jYXRpb24oXG4gICAgICAgIGxvY2F0aW9uLFxuICAgICAgICBuZXcgVVJMKHN0YXRlLmNhbm9uaWNhbFVybCwgd2luZG93LmxvY2F0aW9uLmhyZWYpXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcblxuICBjb25zdCBjb250ZW50VHlwZSA9IHJlcy5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJylcbiAgY29uc3QgaXNSc2NSZXNwb25zZSA9ICEhKFxuICAgIGNvbnRlbnRUeXBlICYmIGNvbnRlbnRUeXBlLnN0YXJ0c1dpdGgoUlNDX0NPTlRFTlRfVFlQRV9IRUFERVIpXG4gIClcblxuICAvLyBIYW5kbGUgaW52YWxpZCBzZXJ2ZXIgYWN0aW9uIHJlc3BvbnNlcy5cbiAgLy8gQSB2YWxpZCByZXNwb25zZSBtdXN0IGhhdmUgYGNvbnRlbnQtdHlwZTogdGV4dC94LWNvbXBvbmVudGAsIHVubGVzcyBpdCdzIGFuIGV4dGVybmFsIHJlZGlyZWN0LlxuICAvLyAoZXh0ZXJuYWwgcmVkaXJlY3RzIGhhdmUgYW4gJ3gtYWN0aW9uLXJlZGlyZWN0JyBoZWFkZXIsIGJ1dCB0aGUgYm9keSBpcyBhbiBlbXB0eSAndGV4dC9wbGFpbicpXG4gIGlmICghaXNSc2NSZXNwb25zZSAmJiAhcmVkaXJlY3RMb2NhdGlvbikge1xuICAgIC8vIFRoZSBzZXJ2ZXIgY2FuIHJlc3BvbmQgd2l0aCBhIHRleHQvcGxhaW4gZXJyb3IgbWVzc2FnZSwgYnV0IHdlJ2xsIGZhbGxiYWNrIHRvIHNvbWV0aGluZyBnZW5lcmljXG4gICAgLy8gaWYgdGhlcmUgaXNuJ3Qgb25lLlxuICAgIGNvbnN0IG1lc3NhZ2UgPVxuICAgICAgcmVzLnN0YXR1cyA+PSA0MDAgJiYgY29udGVudFR5cGUgPT09ICd0ZXh0L3BsYWluJ1xuICAgICAgICA/IGF3YWl0IHJlcy50ZXh0KClcbiAgICAgICAgOiAnQW4gdW5leHBlY3RlZCByZXNwb25zZSB3YXMgcmVjZWl2ZWQgZnJvbSB0aGUgc2VydmVyLidcblxuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKVxuICB9XG5cbiAgbGV0IGFjdGlvblJlc3VsdDogRmV0Y2hTZXJ2ZXJBY3Rpb25SZXN1bHRbJ2FjdGlvblJlc3VsdCddXG4gIGxldCBhY3Rpb25GbGlnaHREYXRhOiBGZXRjaFNlcnZlckFjdGlvblJlc3VsdFsnYWN0aW9uRmxpZ2h0RGF0YSddXG4gIGxldCBhY3Rpb25GbGlnaHREYXRhUmVuZGVyZWRTZWFyY2g6IEZldGNoU2VydmVyQWN0aW9uUmVzdWx0WydhY3Rpb25GbGlnaHREYXRhUmVuZGVyZWRTZWFyY2gnXVxuICBsZXQgY291bGRCZUludGVyY2VwdGVkOiBib29sZWFuID0gZmFsc2VcblxuICBpZiAoaXNSc2NSZXNwb25zZSkge1xuICAgIC8vIFNlcnZlciBhY3Rpb24gcmVkaXJlY3QgcmVzcG9uc2VzIGNhcnJ5IHRoZSBGbGlnaHQgZGF0YSBvZiB0aGUgcmVkaXJlY3RcbiAgICAvLyB0YXJnZXQsIHdoaWNoIG1heSBiZSBwcmVyZW5kZXJlZCB3aXRoIGEgY29tcGxldGVuZXNzIG1hcmtlciBieXRlXG4gICAgLy8gcHJlcGVuZGVkLiBTdHJpcCBpdCBiZWZvcmUgcGFzc2luZyB0byBGbGlnaHQuXG4gICAgY29uc3QgcmVzcG9uc2VQcm9taXNlID0gcmVkaXJlY3RMb2NhdGlvblxuICAgICAgPyBwcm9jZXNzRmV0Y2gocmVzKS50aGVuKCh7IHJlc3BvbnNlOiByIH0pID0+IHIpXG4gICAgICA6IFByb21pc2UucmVzb2x2ZShyZXMpXG5cbiAgICBjb25zdCByZXNwb25zZTogQWN0aW9uRmxpZ2h0UmVzcG9uc2UgPSBhd2FpdCBjcmVhdGVGcm9tRmV0Y2goXG4gICAgICByZXNwb25zZVByb21pc2UsXG4gICAgICB7XG4gICAgICAgIGNhbGxTZXJ2ZXIsXG4gICAgICAgIGZpbmRTb3VyY2VNYXBVUkwsXG4gICAgICAgIHRlbXBvcmFyeVJlZmVyZW5jZXMsXG4gICAgICAgIGRlYnVnQ2hhbm5lbDogY3JlYXRlRGVidWdDaGFubmVsICYmIGNyZWF0ZURlYnVnQ2hhbm5lbChoZWFkZXJzKSxcbiAgICAgIH1cbiAgICApXG5cbiAgICAvLyBBbiBpbnRlcm5hbCByZWRpcmVjdCBjYW4gc2VuZCBhbiBSU0MgcmVzcG9uc2UsIGJ1dCBkb2VzIG5vdCBoYXZlIGEgdXNlZnVsIGBhY3Rpb25SZXN1bHRgLlxuICAgIGFjdGlvblJlc3VsdCA9IHJlZGlyZWN0TG9jYXRpb24gPyB1bmRlZmluZWQgOiByZXNwb25zZS5hXG4gICAgY291bGRCZUludGVyY2VwdGVkID0gcmVzcG9uc2UuaVxuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIHJlc3BvbnNlIGJ1aWxkIElEIG1hdGNoZXMgdGhlIGNsaWVudCBidWlsZCBJRC5cbiAgICAvLyBJbiBhIG11bHRpLXpvbmUgc2V0dXAsIHdoZW4gYSBzZXJ2ZXIgYWN0aW9uIHRyaWdnZXJzIGEgcmVkaXJlY3QsXG4gICAgLy8gdGhlIHNlcnZlciBwcmUtZmV0Y2hlcyB0aGUgcmVkaXJlY3QgdGFyZ2V0IGFzIFJTQy4gSWYgdGhlIHJlZGlyZWN0XG4gICAgLy8gdGFyZ2V0IGlzIHNlcnZlZCBieSBhIGRpZmZlcmVudCBOZXh0LmpzIHpvbmUgKGRpZmZlcmVudCBidWlsZCksIHRoZVxuICAgIC8vIHByZS1mZXRjaGVkIFJTQyBkYXRhIHdpbGwgaGF2ZSBhIGZvcmVpZ24gYnVpbGQgSUQuIFdlIG11c3QgZGlzY2FyZFxuICAgIC8vIHRoZSBmbGlnaHQgZGF0YSBpbiB0aGF0IGNhc2Ugc28gdGhlIHJlZGlyZWN0IHRyaWdnZXJzIGFuIE1QQVxuICAgIC8vIG5hdmlnYXRpb24gKGZ1bGwgcGFnZSBsb2FkKSBpbnN0ZWFkIG9mIHRyeWluZyB0byBhcHBseSB0aGUgZm9yZWlnblxuICAgIC8vIFJTQyBwYXlsb2FkIOKAlCB3aGljaCB3b3VsZCByZXN1bHQgaW4gYSBibGFuayBwYWdlLlxuICAgIGNvbnN0IHJlc3BvbnNlQnVpbGRJZCA9XG4gICAgICByZXMuaGVhZGVycy5nZXQoTkVYVF9OQVZfREVQTE9ZTUVOVF9JRF9IRUFERVIpID8/IHJlc3BvbnNlLmJcbiAgICBpZiAoXG4gICAgICByZXNwb25zZUJ1aWxkSWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgcmVzcG9uc2VCdWlsZElkICE9PSBnZXROYXZpZ2F0aW9uQnVpbGRJZCgpXG4gICAgKSB7XG4gICAgICAvLyBCdWlsZCBJRCBtaXNtYXRjaCDigJQgZGlzY2FyZCB0aGUgZmxpZ2h0IGRhdGEuIFRoZSByZWRpcmVjdCB3aWxsXG4gICAgICAvLyBzdGlsbCBiZSBwcm9jZXNzZWQsIGFuZCB0aGUgYWJzZW5jZSBvZiBmbGlnaHQgZGF0YSB3aWxsIGNhdXNlIGFuXG4gICAgICAvLyBNUEEgbmF2aWdhdGlvbiB2aWEgY29tcGxldGVIYXJkTmF2aWdhdGlvbigpLlxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtYXliZUZsaWdodERhdGEgPSBub3JtYWxpemVGbGlnaHREYXRhKHJlc3BvbnNlLmYpXG4gICAgICBpZiAobWF5YmVGbGlnaHREYXRhICE9PSAnJykge1xuICAgICAgICBhY3Rpb25GbGlnaHREYXRhID0gbWF5YmVGbGlnaHREYXRhXG4gICAgICAgIGFjdGlvbkZsaWdodERhdGFSZW5kZXJlZFNlYXJjaCA9IHJlc3BvbnNlLnEgYXMgTm9ybWFsaXplZFNlYXJjaFxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBBbiBleHRlcm5hbCByZWRpcmVjdCBkb2Vzbid0IGNvbnRhaW4gUlNDIGRhdGEuXG4gICAgYWN0aW9uUmVzdWx0ID0gdW5kZWZpbmVkXG4gICAgYWN0aW9uRmxpZ2h0RGF0YSA9IHVuZGVmaW5lZFxuICAgIGFjdGlvbkZsaWdodERhdGFSZW5kZXJlZFNlYXJjaCA9IHVuZGVmaW5lZFxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhY3Rpb25SZXN1bHQsXG4gICAgYWN0aW9uRmxpZ2h0RGF0YSxcbiAgICBhY3Rpb25GbGlnaHREYXRhUmVuZGVyZWRTZWFyY2gsXG4gICAgcmVkaXJlY3RMb2NhdGlvbixcbiAgICByZWRpcmVjdFR5cGUsXG4gICAgcmV2YWxpZGF0aW9uS2luZCxcbiAgICBpc1ByZXJlbmRlcixcbiAgICBjb3VsZEJlSW50ZXJjZXB0ZWQsXG4gIH1cbn1cblxuLypcbiAqIFRoaXMgcmVkdWNlciBpcyByZXNwb25zaWJsZSBmb3IgY2FsbGluZyB0aGUgc2VydmVyIGFjdGlvbiBhbmQgcHJvY2Vzc2luZyBhbnkgc2lkZS1lZmZlY3RzIGZyb20gdGhlIHNlcnZlciBhY3Rpb24uXG4gKiBJdCBkb2VzIG5vdCBtdXRhdGUgdGhlIHN0YXRlIGJ5IGl0c2VsZiBidXQgcmF0aGVyIGRlbGVnYXRlcyB0byBvdGhlciByZWR1Y2VycyB0byBkbyB0aGUgYWN0dWFsIG11dGF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VydmVyQWN0aW9uUmVkdWNlcihcbiAgc3RhdGU6IFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBhY3Rpb246IFNlcnZlckFjdGlvbkFjdGlvblxuKTogUmVkdWNlclN0YXRlIHtcbiAgY29uc3QgeyByZXNvbHZlLCByZWplY3QgfSA9IGFjdGlvblxuXG4gIC8vIG9ubHkgcGFzcyBhbG9uZyB0aGUgYG5leHRVcmxgIHBhcmFtICh1c2VkIGZvciBpbnRlcmNlcHRpb24gcm91dGVzKSBpZiB0aGUgY3VycmVudCByb3V0ZSB3YXMgaW50ZXJjZXB0ZWQuXG4gIC8vIElmIHRoZSByb3V0ZSBoYXMgYmVlbiBpbnRlcmNlcHRlZCwgdGhlIGFjdGlvbiBzaG91bGQgYmUgYXMgd2VsbC5cbiAgLy8gT3RoZXJ3aXNlIHRoZSBzZXJ2ZXIgYWN0aW9uIG1pZ2h0IGJlIGludGVyY2VwdGVkIHdpdGggdGhlIHdyb25nIGFjdGlvbiBpZFxuICAvLyAoaWUsIG9uZSB0aGF0IGNvcnJlc3BvbmRzIHdpdGggdGhlIGludGVyY2VwdGVkIHJvdXRlKVxuICBjb25zdCBuZXh0VXJsID1cbiAgICAvLyBXZSBhbHdheXMgc2VuZCB0aGUgbGFzdCBuZXh0LXVybCwgbm90IHRoZSBjdXJyZW50IHdoZW5cbiAgICAvLyBwZXJmb3JtaW5nIGEgZHluYW1pYyByZXF1ZXN0LiBUaGlzIGlzIGJlY2F1c2Ugd2UgdXBkYXRlXG4gICAgLy8gdGhlIG5leHQtdXJsIGFmdGVyIGEgbmF2aWdhdGlvbiwgYnV0IHdlIHdhbnQgdGhlIHNhbWVcbiAgICAvLyBpbnRlcmNlcHRpb24gcm91dGUgdG8gYmUgbWF0Y2hlZCB0aGF0IHVzZWQgdGhlIGxhc3RcbiAgICAvLyBuZXh0LXVybC5cbiAgICAoc3RhdGUucHJldmlvdXNOZXh0VXJsIHx8IHN0YXRlLm5leHRVcmwpICYmXG4gICAgaGFzSW50ZXJjZXB0aW9uUm91dGVJbkN1cnJlbnRUcmVlKHN0YXRlLnRyZWUpXG4gICAgICA/IHN0YXRlLnByZXZpb3VzTmV4dFVybCB8fCBzdGF0ZS5uZXh0VXJsXG4gICAgICA6IG51bGxcblxuICByZXR1cm4gZmV0Y2hTZXJ2ZXJBY3Rpb24oc3RhdGUsIG5leHRVcmwsIGFjdGlvbikudGhlbihcbiAgICBhc3luYyAoe1xuICAgICAgcmV2YWxpZGF0aW9uS2luZCxcbiAgICAgIGFjdGlvblJlc3VsdCxcbiAgICAgIGFjdGlvbkZsaWdodERhdGE6IGZsaWdodERhdGEsXG4gICAgICBhY3Rpb25GbGlnaHREYXRhUmVuZGVyZWRTZWFyY2g6IGZsaWdodERhdGFSZW5kZXJlZFNlYXJjaCxcbiAgICAgIHJlZGlyZWN0TG9jYXRpb24sXG4gICAgICByZWRpcmVjdFR5cGUsXG4gICAgICBpc1ByZXJlbmRlcixcbiAgICAgIGNvdWxkQmVJbnRlcmNlcHRlZCxcbiAgICB9KSA9PiB7XG4gICAgICBpZiAocmV2YWxpZGF0aW9uS2luZCAhPT0gQWN0aW9uRGlkTm90UmV2YWxpZGF0ZSkge1xuICAgICAgICAvLyBUaGVyZSB3YXMgZWl0aGVyIGEgcmV2YWxpZGF0aW9uIG9yIGEgcmVmcmVzaCwgb3IgbWF5YmUgYm90aC5cblxuICAgICAgICAvLyBFdmljdCB0aGUgQkZDYWNoZSwgd2hpY2ggbWF5IGNvbnRhaW4gZHluYW1pYyBkYXRhLlxuICAgICAgICBpbnZhbGlkYXRlQmZDYWNoZSgpXG5cbiAgICAgICAgLy8gU3RvcmUgd2hldGhlciB0aGlzIGFjdGlvbiB0cmlnZ2VyZWQgYW55IHJldmFsaWRhdGlvblxuICAgICAgICAvLyBUaGUgYWN0aW9uIHF1ZXVlIHdpbGwgdXNlIHRoaXMgaW5mb3JtYXRpb24gdG8gcG90ZW50aWFsbHlcbiAgICAgICAgLy8gdHJpZ2dlciBhIHJlZnJlc2ggYWN0aW9uIGlmIHRoZSBhY3Rpb24gd2FzIGRpc2NhcmRlZFxuICAgICAgICAvLyAoaWUsIGR1ZSB0byBhIG5hdmlnYXRpb24sIGJlZm9yZSB0aGUgYWN0aW9uIGNvbXBsZXRlZClcbiAgICAgICAgYWN0aW9uLmRpZFJldmFsaWRhdGUgPSB0cnVlXG5cbiAgICAgICAgLy8gSWYgdGhlcmUgd2FzIGEgcmV2YWxpZGF0aW9uLCBldmljdCB0aGUgcHJlZmV0Y2ggY2FjaGUuXG4gICAgICAgIC8vIFRPRE86IEV2aWN0IG9ubHkgc2VnbWVudHMgd2l0aCBtYXRjaGluZyB0YWdzIGFuZC9vciBwYXRocy5cbiAgICAgICAgLy8gVE9ETzogV2Ugc2hvdWxkIG9ubHkgaW52YWxpZGF0ZSB0aGUgcm91dGUgY2FjaGUgaWYgY29va2llcyB3ZXJlXG4gICAgICAgIC8vIG11dGF0ZWQsIHNpbmNlIHJvdXRlIHRyZWVzIG1heSB2YXJ5IGJhc2VkIG9uIGNvb2tpZXMuIEZvciBub3cgd2VcbiAgICAgICAgLy8gaW52YWxpZGF0ZSBib3RoIGNhY2hlcyB1bnRpbCB3ZSBoYXZlIGEgd2F5IHRvIGRldGVjdCBjb29raWVcbiAgICAgICAgLy8gbXV0YXRpb25zIG9uIHRoZSBjbGllbnQuXG4gICAgICAgIGlmIChyZXZhbGlkYXRpb25LaW5kID09PSBBY3Rpb25EaWRSZXZhbGlkYXRlU3RhdGljQW5kRHluYW1pYykge1xuICAgICAgICAgIGludmFsaWRhdGVFbnRpcmVQcmVmZXRjaENhY2hlKG5leHRVcmwsIHN0YXRlLnRyZWUpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdGFydCBhIGNvb2xkb3duIGJlZm9yZSByZS1wcmVmZXRjaGluZyB0byBhbGxvdyBDRE4gY2FjaGVcbiAgICAgICAgLy8gcHJvcGFnYXRpb24uXG4gICAgICAgIHN0YXJ0UmV2YWxpZGF0aW9uQ29vbGRvd24oKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBuYXZpZ2F0ZVR5cGUgPSByZWRpcmVjdFR5cGUgfHwgJ3B1c2gnXG5cbiAgICAgIGlmIChyZWRpcmVjdExvY2F0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gSWYgdGhlIGFjdGlvbiB0cmlnZ2VyZWQgYSByZWRpcmVjdCwgdGhlIGFjdGlvbiBwcm9taXNlIHdpbGwgYmUgcmVqZWN0ZWQgd2l0aFxuICAgICAgICAvLyBhIHJlZGlyZWN0IHNvIHRoYXQgaXQncyBoYW5kbGVkIGJ5IFJlZGlyZWN0Qm91bmRhcnkgYXMgd2Ugd29uJ3QgaGF2ZSBhIHZhbGlkXG4gICAgICAgIC8vIGFjdGlvbiByZXN1bHQgdG8gcmVzb2x2ZSB0aGUgcHJvbWlzZSB3aXRoLiBUaGlzIHdpbGwgZWZmZWN0aXZlbHkgcmVzZXQgdGhlIHN0YXRlIG9mXG4gICAgICAgIC8vIHRoZSBjb21wb25lbnQgdGhhdCBjYWxsZWQgdGhlIGFjdGlvbiBhcyB0aGUgZXJyb3IgYm91bmRhcnkgd2lsbCByZW1vdW50IHRoZSB0cmVlLlxuICAgICAgICAvLyBUaGUgc3RhdHVzIGNvZGUgZG9lc24ndCBtYXR0ZXIgaGVyZSBhcyB0aGUgYWN0aW9uIGhhbmRsZXIgd2lsbCBoYXZlIGFscmVhZHkgc2VudFxuICAgICAgICAvLyBhIHJlc3BvbnNlIHdpdGggdGhlIGNvcnJlY3Qgc3RhdHVzIGNvZGUuXG5cbiAgICAgICAgaWYgKGlzRXh0ZXJuYWxVUkwocmVkaXJlY3RMb2NhdGlvbikpIHtcbiAgICAgICAgICAvLyBFeHRlcm5hbCByZWRpcmVjdC4gVHJpZ2dlcnMgYW4gTVBBIG5hdmlnYXRpb24uXG4gICAgICAgICAgY29uc3QgcmVkaXJlY3RIcmVmID0gcmVkaXJlY3RMb2NhdGlvbi5ocmVmXG4gICAgICAgICAgY29uc3QgcmVkaXJlY3RFcnJvciA9IGNyZWF0ZVJlZGlyZWN0RXJyb3JGb3JBY3Rpb24oXG4gICAgICAgICAgICByZWRpcmVjdEhyZWYsXG4gICAgICAgICAgICBuYXZpZ2F0ZVR5cGVcbiAgICAgICAgICApXG4gICAgICAgICAgcmVqZWN0KHJlZGlyZWN0RXJyb3IpXG4gICAgICAgICAgcmV0dXJuIGNvbXBsZXRlSGFyZE5hdmlnYXRpb24oc3RhdGUsIHJlZGlyZWN0TG9jYXRpb24sIG5hdmlnYXRlVHlwZSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBJbnRlcm5hbCByZWRpcmVjdC4gVHJpZ2dlcnMgYW4gU1BBIG5hdmlnYXRpb24uXG4gICAgICAgICAgY29uc3QgcmVkaXJlY3RXaXRoQmFzZXBhdGggPSBjcmVhdGVIcmVmRnJvbVVybChcbiAgICAgICAgICAgIHJlZGlyZWN0TG9jYXRpb24sXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICAgIClcbiAgICAgICAgICBjb25zdCByZWRpcmVjdEhyZWYgPSBoYXNCYXNlUGF0aChyZWRpcmVjdFdpdGhCYXNlcGF0aClcbiAgICAgICAgICAgID8gcmVtb3ZlQmFzZVBhdGgocmVkaXJlY3RXaXRoQmFzZXBhdGgpXG4gICAgICAgICAgICA6IHJlZGlyZWN0V2l0aEJhc2VwYXRoXG4gICAgICAgICAgY29uc3QgcmVkaXJlY3RFcnJvciA9IGNyZWF0ZVJlZGlyZWN0RXJyb3JGb3JBY3Rpb24oXG4gICAgICAgICAgICByZWRpcmVjdEhyZWYsXG4gICAgICAgICAgICBuYXZpZ2F0ZVR5cGVcbiAgICAgICAgICApXG4gICAgICAgICAgcmVqZWN0KHJlZGlyZWN0RXJyb3IpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIHRoZXJlJ3Mgbm8gcmVkaXJlY3QsIHJlc29sdmUgdGhlIGFjdGlvbiB3aXRoIHRoZSByZXN1bHQuXG4gICAgICAgIHJlc29sdmUoYWN0aW9uUmVzdWx0KVxuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBpZiB3ZSBjYW4gYmFpbCBvdXQgd2l0aG91dCB1cGRhdGluZyBhbnkgc3RhdGUuXG4gICAgICBpZiAoXG4gICAgICAgIC8vIERpZCB0aGUgYWN0aW9uIHRyaWdnZXIgYSByZWRpcmVjdD9cbiAgICAgICAgcmVkaXJlY3RMb2NhdGlvbiA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgIC8vIERpZCB0aGUgYWN0aW9uIHJldmFsaWRhdGUgYW55IGRhdGE/XG4gICAgICAgIHJldmFsaWRhdGlvbktpbmQgPT09IEFjdGlvbkRpZE5vdFJldmFsaWRhdGUgJiZcbiAgICAgICAgLy8gRGlkIHRoZSBzZXJ2ZXIgcmVuZGVyIG5ldyBkYXRhP1xuICAgICAgICBmbGlnaHREYXRhID09PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICAvLyBUaGUgYWN0aW9uIGRpZCBub3QgdHJpZ2dlciBhbnkgcmV2YWxpZGF0aW9ucyBvciByZWRpcmVjdHMuIE5vXG4gICAgICAgIC8vIG5hdmlnYXRpb24gaXMgcmVxdWlyZWQuXG4gICAgICAgIHJldHVybiBzdGF0ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZmxpZ2h0RGF0YSA9PT0gdW5kZWZpbmVkICYmIHJlZGlyZWN0TG9jYXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBUaGUgc2VydmVyIHJlZGlyZWN0ZWQsIGJ1dCBkaWQgbm90IHNlbmQgYW55IEZsaWdodCBkYXRhLiBUaGlzIGltcGxpZXNcbiAgICAgICAgLy8gYW4gZXh0ZXJuYWwgcmVkaXJlY3QuXG4gICAgICAgIC8vIFRPRE86IFdlIHNob3VsZCByZWZhY3RvciB0aGUgYWN0aW9uIHJlc3BvbnNlIHR5cGUgdG8gYmUgbW9yZSBleHBsaWNpdFxuICAgICAgICAvLyBhYm91dCB0aGUgdmFyaW91cyByZXNwb25zZSB0eXBlcy5cbiAgICAgICAgcmV0dXJuIGNvbXBsZXRlSGFyZE5hdmlnYXRpb24oc3RhdGUsIHJlZGlyZWN0TG9jYXRpb24sIG5hdmlnYXRlVHlwZSlcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBmbGlnaHREYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgICAvLyBJZiB0aGUgZmxpZ2h0IGRhdGEgaXMganVzdCBhIHN0cmluZywgc29tZXRoaW5nIGVhcmxpZXIgaW4gdGhlXG4gICAgICAgIC8vIHJlc3BvbnNlIGhhbmRsaW5nIHRyaWdnZXJlZCBhbiBleHRlcm5hbCByZWRpcmVjdC5cbiAgICAgICAgcmV0dXJuIGNvbXBsZXRlSGFyZE5hdmlnYXRpb24oXG4gICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgbmV3IFVSTChmbGlnaHREYXRhLCBsb2NhdGlvbi5vcmlnaW4pLFxuICAgICAgICAgIG5hdmlnYXRlVHlwZVxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBhY3Rpb24gdHJpZ2dlcmVkIGEgbmF2aWdhdGlvbiDigJQgZWl0aGVyIGEgcmVkaXJlY3QsIGEgcmV2YWxpZGF0aW9uLFxuICAgICAgLy8gb3IgYm90aC5cblxuICAgICAgLy8gSWYgdGhlcmUgd2FzIG5vIHJlZGlyZWN0LCB0aGVuIHRoZSB0YXJnZXQgVVJMIGlzIHRoZSBzYW1lIGFzIHRoZVxuICAgICAgLy8gY3VycmVudCBVUkwuXG4gICAgICBjb25zdCBjdXJyZW50VXJsID0gbmV3IFVSTChzdGF0ZS5jYW5vbmljYWxVcmwsIGxvY2F0aW9uLm9yaWdpbilcbiAgICAgIGNvbnN0IGN1cnJlbnRSZW5kZXJlZFNlYXJjaCA9IHN0YXRlLnJlbmRlcmVkU2VhcmNoXG4gICAgICBjb25zdCByZWRpcmVjdFVybCA9XG4gICAgICAgIHJlZGlyZWN0TG9jYXRpb24gIT09IHVuZGVmaW5lZCA/IHJlZGlyZWN0TG9jYXRpb24gOiBjdXJyZW50VXJsXG4gICAgICBjb25zdCBjdXJyZW50RmxpZ2h0Um91dGVyU3RhdGUgPSBzdGF0ZS50cmVlXG4gICAgICBjb25zdCBzY3JvbGxCZWhhdmlvciA9IFNjcm9sbEJlaGF2aW9yLkRlZmF1bHRcblxuICAgICAgLy8gSWYgdGhlIGFjdGlvbiB0cmlnZ2VyZWQgYSByZXZhbGlkYXRpb24gb2YgdGhlIGNhY2hlLCB3ZSBzaG91bGQgYWxzb1xuICAgICAgLy8gcmVmcmVzaCBhbGwgdGhlIGR5bmFtaWMgZGF0YS5cbiAgICAgIGNvbnN0IGZyZXNobmVzc1BvbGljeSA9XG4gICAgICAgIHJldmFsaWRhdGlvbktpbmQgPT09IEFjdGlvbkRpZE5vdFJldmFsaWRhdGVcbiAgICAgICAgICA/IEZyZXNobmVzc1BvbGljeS5EZWZhdWx0XG4gICAgICAgICAgOiBGcmVzaG5lc3NQb2xpY3kuUmVmcmVzaEFsbFxuXG4gICAgICAvLyBUaGUgc2VydmVyIG1heSBoYXZlIHNlbnQgYmFjayBuZXcgZGF0YS4gSWYgc28sIHdlIHdpbGwgcGVyZm9ybSBhXG4gICAgICAvLyBcInNlZWRlZFwiIG5hdmlnYXRpb24gdGhhdCB1c2VzIHRoZSBkYXRhIGZyb20gdGhlIHJlc3BvbnNlLlxuICAgICAgLy8gVE9ETzogQ3VycmVudGx5IHRoZSBzZXJ2ZXIgYWx3YXlzIHJlbmRlcnMgZnJvbSB0aGUgcm9vdCBpblxuICAgICAgLy8gcmVzcG9uc2UgdG8gYSBTZXJ2ZXIgQWN0aW9uLiBJbiB0aGUgY2FzZSBvZiBhIG5vcm1hbCByZWRpcmVjdFxuICAgICAgLy8gd2l0aCBubyByZXZhbGlkYXRpb24sIGl0IHNob3VsZCBza2lwIG92ZXIgdGhlIHNoYXJlZCBsYXlvdXRzLlxuICAgICAgaWYgKGZsaWdodERhdGEgIT09IHVuZGVmaW5lZCAmJiBmbGlnaHREYXRhUmVuZGVyZWRTZWFyY2ggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBUaGUgc2VydmVyIHNlbnQgYmFjayBuZXcgcm91dGUgZGF0YSBhcyBwYXJ0IG9mIHRoZSByZXNwb25zZS4gV2VcbiAgICAgICAgLy8gd2lsbCB1c2UgdGhpcyB0byByZW5kZXIgdGhlIG5ldyBwYWdlLiBJZiB0aGlzIGhhcHBlbnMgdG8gYmUgb25seSBhXG4gICAgICAgIC8vIHN1YnNldCBvZiB0aGUgZGF0YSBuZWVkZWQgdG8gcmVuZGVyIHRoZSBuZXcgcGFnZSwgd2UnbGwgaW5pdGlhdGUgYVxuICAgICAgICAvLyBuZXcgZmV0Y2gsIGxpa2Ugd2Ugd291bGQgZm9yIGEgbm9ybWFsIG5hdmlnYXRpb24uXG4gICAgICAgIGNvbnN0IHJlZGlyZWN0Q2Fub25pY2FsVXJsID0gY3JlYXRlSHJlZkZyb21VcmwocmVkaXJlY3RVcmwpXG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KClcbiAgICAgICAgLy8gVE9ETzogU3RvcmUgdGhlIGR5bmFtaWMgc3RhbGUgdGltZSBvbiB0aGUgdG9wLWxldmVsIHN0YXRlIHNvIGl0J3NcbiAgICAgICAgLy8ga25vd24gZHVyaW5nIHJlc3RvcmVzIGFuZCByZWZyZXNoZXMuXG4gICAgICAgIGNvbnN0IHJlZGlyZWN0U2VlZCA9IGNvbnZlcnRTZXJ2ZXJQYXRjaFRvRnVsbFRyZWUoXG4gICAgICAgICAgbm93LFxuICAgICAgICAgIGN1cnJlbnRGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgICAgICAgICBmbGlnaHREYXRhLFxuICAgICAgICAgIGZsaWdodERhdGFSZW5kZXJlZFNlYXJjaCxcbiAgICAgICAgICBVbmtub3duRHluYW1pY1N0YWxlVGltZVxuICAgICAgICApXG5cbiAgICAgICAgLy8gTGVhcm4gdGhlIHJvdXRlIHBhdHRlcm4gc28gd2UgY2FuIHByZWRpY3QgaXQgZm9yIGZ1dHVyZSBuYXZpZ2F0aW9ucy5cbiAgICAgICAgY29uc3QgbWV0YWRhdGFWYXJ5UGF0aCA9IHJlZGlyZWN0U2VlZC5tZXRhZGF0YVZhcnlQYXRoXG4gICAgICAgIGlmIChtZXRhZGF0YVZhcnlQYXRoICE9PSBudWxsKSB7XG4gICAgICAgICAgZGlzY292ZXJLbm93blJvdXRlKFxuICAgICAgICAgICAgbm93LFxuICAgICAgICAgICAgcmVkaXJlY3RVcmwucGF0aG5hbWUsXG4gICAgICAgICAgICBuZXh0VXJsLFxuICAgICAgICAgICAgbnVsbCwgLy8gTm8gcGVuZGluZyBlbnRyeVxuICAgICAgICAgICAgcmVkaXJlY3RTZWVkLnJvdXRlVHJlZSxcbiAgICAgICAgICAgIG1ldGFkYXRhVmFyeVBhdGgsXG4gICAgICAgICAgICBjb3VsZEJlSW50ZXJjZXB0ZWQsXG4gICAgICAgICAgICByZWRpcmVjdENhbm9uaWNhbFVybCxcbiAgICAgICAgICAgIGlzUHJlcmVuZGVyLFxuICAgICAgICAgICAgZmFsc2UgLy8gaGFzRHluYW1pY1Jld3JpdGVcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmF2aWdhdGVUb0tub3duUm91dGUoXG4gICAgICAgICAgbm93LFxuICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgIHJlZGlyZWN0VXJsLFxuICAgICAgICAgIHJlZGlyZWN0Q2Fub25pY2FsVXJsLFxuICAgICAgICAgIHJlZGlyZWN0U2VlZCxcbiAgICAgICAgICBjdXJyZW50VXJsLFxuICAgICAgICAgIGN1cnJlbnRSZW5kZXJlZFNlYXJjaCxcbiAgICAgICAgICBzdGF0ZS5jYWNoZSxcbiAgICAgICAgICBjdXJyZW50RmxpZ2h0Um91dGVyU3RhdGUsXG4gICAgICAgICAgZnJlc2huZXNzUG9saWN5LFxuICAgICAgICAgIG5leHRVcmwsXG4gICAgICAgICAgc2Nyb2xsQmVoYXZpb3IsXG4gICAgICAgICAgbmF2aWdhdGVUeXBlLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgLy8gU2VydmVyIGFjdGlvbiByZWRpcmVjdHMgZG9uJ3QgdXNlIHJvdXRlIHByZWRpY3Rpb24gLSB3ZSBhbHJlYWR5XG4gICAgICAgICAgLy8gaGF2ZSB0aGUgcm91dGUgdHJlZSBmcm9tIHRoZSBzZXJ2ZXIgcmVzcG9uc2UuIElmIGEgbWlzbWF0Y2ggb2NjdXJzXG4gICAgICAgICAgLy8gZHVyaW5nIGR5bmFtaWMgZGF0YSBmZXRjaCwgdGhlIHJldHJ5IGhhbmRsZXIgd2lsbCB0cmF2ZXJzZSB0aGVcbiAgICAgICAgICAvLyBrbm93biByb3V0ZSB0cmVlIHRvIG1hcmsgdGhlIGVudHJ5IGFzIGhhdmluZyBhIGR5bmFtaWMgcmV3cml0ZS5cbiAgICAgICAgICBudWxsXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgLy8gVGhlIHNlcnZlciBkaWQgbm90IHNlbmQgYmFjayBuZXcgZGF0YS4gV2UnbGwgcGVyZm9ybSBhIHJlZ3VsYXIsIG5vbi1cbiAgICAgIC8vIHNlZWRlZCBuYXZpZ2F0aW9uIOKAlCBlZmZlY3RpdmVseSB0aGUgc2FtZSBhcyA8TGluaz4gb3Igcm91dGVyLnB1c2goKS5cbiAgICAgIHJldHVybiBuYXZpZ2F0ZShcbiAgICAgICAgc3RhdGUsXG4gICAgICAgIHJlZGlyZWN0VXJsLFxuICAgICAgICBjdXJyZW50VXJsLFxuICAgICAgICBjdXJyZW50UmVuZGVyZWRTZWFyY2gsXG4gICAgICAgIHN0YXRlLmNhY2hlLFxuICAgICAgICBjdXJyZW50RmxpZ2h0Um91dGVyU3RhdGUsXG4gICAgICAgIG5leHRVcmwsXG4gICAgICAgIGZyZXNobmVzc1BvbGljeSxcbiAgICAgICAgc2Nyb2xsQmVoYXZpb3IsXG4gICAgICAgIG5hdmlnYXRlVHlwZVxuICAgICAgKVxuICAgIH0sXG4gICAgKGU6IGFueSkgPT4ge1xuICAgICAgLy8gV2hlbiB0aGUgc2VydmVyIGFjdGlvbiBpcyByZWplY3RlZCB3ZSBkb24ndCB1cGRhdGUgdGhlIHN0YXRlIGFuZCBpbnN0ZWFkIGNhbGwgdGhlIHJlamVjdCBoYW5kbGVyIG9mIHRoZSBwcm9taXNlLlxuICAgICAgcmVqZWN0KGUpXG5cbiAgICAgIHJldHVybiBzdGF0ZVxuICAgIH1cbiAgKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVSZWRpcmVjdEVycm9yRm9yQWN0aW9uKFxuICByZWRpcmVjdEhyZWY6IHN0cmluZyxcbiAgcmVzb2x2ZWRSZWRpcmVjdFR5cGU6IFJlZGlyZWN0VHlwZVxuKSB7XG4gIGNvbnN0IHJlZGlyZWN0RXJyb3IgPSBnZXRSZWRpcmVjdEVycm9yKHJlZGlyZWN0SHJlZiwgcmVzb2x2ZWRSZWRpcmVjdFR5cGUpXG4gIC8vIFdlIG1hcmsgdGhlIGVycm9yIGFzIGhhbmRsZWQgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRoZSByZWRpcmVjdCB0byBiZSB0cmllZCBsYXRlciBieVxuICAvLyB0aGUgUmVkaXJlY3RCb3VuZGFyeSwgaW4gY2FzZSB0aGUgdXNlciBnb2VzIGJhY2sgYW5kIGBBY3Rpdml0eWAgdHJpZ2dlcnMgdGhlIHJlZGlyZWN0XG4gIC8vIGFnYWluLCBhcyBpdCdzIHJ1biB3aXRoaW4gYW4gZWZmZWN0LlxuICAvLyBXZSBkb24ndCBhY3R1YWxseSBuZWVkIHRoZSBSZWRpcmVjdEJvdW5kYXJ5IHRvIGRvIGEgcm91dGVyLnB1c2ggYmVjYXVzZSB3ZSBhbHJlYWR5XG4gIC8vIGhhdmUgYWxsIHRoZSBuZWNlc3NhcnkgUlNDIGRhdGEgdG8gcmVuZGVyIHRoZSBuZXcgcGFnZSB3aXRoaW4gYSBzaW5nbGUgcm91bmR0cmlwLlxuICA7KHJlZGlyZWN0RXJyb3IgYXMgYW55KS5oYW5kbGVkID0gdHJ1ZVxuICByZXR1cm4gcmVkaXJlY3RFcnJvclxufVxuIl0sIm5hbWVzIjpbInNlcnZlckFjdGlvblJlZHVjZXIiLCJjcmVhdGVGcm9tRmV0Y2giLCJjcmVhdGVGcm9tRmV0Y2hCcm93c2VyIiwiY3JlYXRlRGVidWdDaGFubmVsIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9ERVZfU0VSVkVSIiwiX19ORVhUX1JFQUNUX0RFQlVHX0NIQU5ORUwiLCJyZXF1aXJlIiwiZmV0Y2hTZXJ2ZXJBY3Rpb24iLCJzdGF0ZSIsIm5leHRVcmwiLCJhY3Rpb25JZCIsImFjdGlvbkFyZ3MiLCJ0ZW1wb3JhcnlSZWZlcmVuY2VzIiwiY3JlYXRlVGVtcG9yYXJ5UmVmZXJlbmNlU2V0IiwiaW5mbyIsImV4dHJhY3RJbmZvRnJvbVNlcnZlclJlZmVyZW5jZUlkIiwidXNlZEFyZ3MiLCJvbWl0VW51c2VkQXJncyIsImJvZHkiLCJlbmNvZGVSZXBseSIsImhlYWRlcnMiLCJBY2NlcHQiLCJSU0NfQ09OVEVOVF9UWVBFX0hFQURFUiIsIkFDVElPTl9IRUFERVIiLCJORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUiIsInByZXBhcmVGbGlnaHRSb3V0ZXJTdGF0ZUZvclJlcXVlc3QiLCJ0cmVlIiwiZGVwbG95bWVudElkIiwiZ2V0RGVwbG95bWVudElkIiwiTkVYVF9VUkwiLCJzZWxmIiwiX19uZXh0X3IiLCJORVhUX0hUTUxfUkVRVUVTVF9JRF9IRUFERVIiLCJORVhUX1JFUVVFU1RfSURfSEVBREVSIiwiY3J5cHRvIiwiZ2V0UmFuZG9tVmFsdWVzIiwiVWludDMyQXJyYXkiLCJ0b1N0cmluZyIsInJlcyIsImZldGNoIiwiY2Fub25pY2FsVXJsIiwibWV0aG9kIiwidW5yZWNvZ25pemVkQWN0aW9uSGVhZGVyIiwiZ2V0IiwiTkVYVF9BQ1RJT05fTk9UX0ZPVU5EX0hFQURFUiIsIlVucmVjb2duaXplZEFjdGlvbkVycm9yIiwicmVkaXJlY3RIZWFkZXIiLCJsb2NhdGlvbiIsIl9yZWRpcmVjdFR5cGUiLCJzcGxpdCIsInJlZGlyZWN0VHlwZSIsInVuZGVmaW5lZCIsImlzUHJlcmVuZGVyIiwiTkVYVF9JU19QUkVSRU5ERVJfSEVBREVSIiwicmV2YWxpZGF0aW9uS2luZCIsIkFjdGlvbkRpZE5vdFJldmFsaWRhdGUiLCJyZXZhbGlkYXRpb25IZWFkZXIiLCJwYXJzZWRLaW5kIiwiSlNPTiIsInBhcnNlIiwiQWN0aW9uRGlkUmV2YWxpZGF0ZVN0YXRpY0FuZER5bmFtaWMiLCJBY3Rpb25EaWRSZXZhbGlkYXRlRHluYW1pY09ubHkiLCJyZWRpcmVjdExvY2F0aW9uIiwiYXNzaWduTG9jYXRpb24iLCJVUkwiLCJ3aW5kb3ciLCJocmVmIiwiY29udGVudFR5cGUiLCJpc1JzY1Jlc3BvbnNlIiwic3RhcnRzV2l0aCIsIm1lc3NhZ2UiLCJzdGF0dXMiLCJ0ZXh0IiwiRXJyb3IiLCJhY3Rpb25SZXN1bHQiLCJhY3Rpb25GbGlnaHREYXRhIiwiYWN0aW9uRmxpZ2h0RGF0YVJlbmRlcmVkU2VhcmNoIiwiY291bGRCZUludGVyY2VwdGVkIiwicmVzcG9uc2VQcm9taXNlIiwicHJvY2Vzc0ZldGNoIiwidGhlbiIsInJlc3BvbnNlIiwiciIsIlByb21pc2UiLCJyZXNvbHZlIiwiY2FsbFNlcnZlciIsImZpbmRTb3VyY2VNYXBVUkwiLCJkZWJ1Z0NoYW5uZWwiLCJhIiwiaSIsInJlc3BvbnNlQnVpbGRJZCIsIk5FWFRfTkFWX0RFUExPWU1FTlRfSURfSEVBREVSIiwiYiIsImdldE5hdmlnYXRpb25CdWlsZElkIiwibWF5YmVGbGlnaHREYXRhIiwibm9ybWFsaXplRmxpZ2h0RGF0YSIsImYiLCJxIiwiYWN0aW9uIiwicmVqZWN0IiwicHJldmlvdXNOZXh0VXJsIiwiaGFzSW50ZXJjZXB0aW9uUm91dGVJbkN1cnJlbnRUcmVlIiwiZmxpZ2h0RGF0YSIsImZsaWdodERhdGFSZW5kZXJlZFNlYXJjaCIsImludmFsaWRhdGVCZkNhY2hlIiwiZGlkUmV2YWxpZGF0ZSIsImludmFsaWRhdGVFbnRpcmVQcmVmZXRjaENhY2hlIiwic3RhcnRSZXZhbGlkYXRpb25Db29sZG93biIsIm5hdmlnYXRlVHlwZSIsImlzRXh0ZXJuYWxVUkwiLCJyZWRpcmVjdEhyZWYiLCJyZWRpcmVjdEVycm9yIiwiY3JlYXRlUmVkaXJlY3RFcnJvckZvckFjdGlvbiIsImNvbXBsZXRlSGFyZE5hdmlnYXRpb24iLCJyZWRpcmVjdFdpdGhCYXNlcGF0aCIsImNyZWF0ZUhyZWZGcm9tVXJsIiwiaGFzQmFzZVBhdGgiLCJyZW1vdmVCYXNlUGF0aCIsIm9yaWdpbiIsImN1cnJlbnRVcmwiLCJjdXJyZW50UmVuZGVyZWRTZWFyY2giLCJyZW5kZXJlZFNlYXJjaCIsInJlZGlyZWN0VXJsIiwiY3VycmVudEZsaWdodFJvdXRlclN0YXRlIiwic2Nyb2xsQmVoYXZpb3IiLCJTY3JvbGxCZWhhdmlvciIsIkRlZmF1bHQiLCJmcmVzaG5lc3NQb2xpY3kiLCJGcmVzaG5lc3NQb2xpY3kiLCJSZWZyZXNoQWxsIiwicmVkaXJlY3RDYW5vbmljYWxVcmwiLCJub3ciLCJEYXRlIiwicmVkaXJlY3RTZWVkIiwiY29udmVydFNlcnZlclBhdGNoVG9GdWxsVHJlZSIsIlVua25vd25EeW5hbWljU3RhbGVUaW1lIiwibWV0YWRhdGFWYXJ5UGF0aCIsImRpc2NvdmVyS25vd25Sb3V0ZSIsInBhdGhuYW1lIiwicm91dGVUcmVlIiwibmF2aWdhdGVUb0tub3duUm91dGUiLCJjYWNoZSIsIm5hdmlnYXRlIiwiZSIsInJlc29sdmVkUmVkaXJlY3RUeXBlIiwiZ2V0UmVkaXJlY3RFcnJvciIsImhhbmRsZWQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/server-action-reducer.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/server-patch-reducer.js":
|
||
/*!**************************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/router-reducer/reducers/server-patch-reducer.js ***!
|
||
\**************************************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"serverPatchReducer\", ({\n enumerable: true,\n get: function() {\n return serverPatchReducer;\n }\n}));\nconst _createhreffromurl = __webpack_require__(/*! ../create-href-from-url */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nconst _routerreducertypes = __webpack_require__(/*! ../router-reducer-types */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _navigation = __webpack_require__(/*! ../../segment-cache/navigation */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/navigation.js\");\nconst _refreshreducer = __webpack_require__(/*! ./refresh-reducer */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js\");\nconst _pprnavigations = __webpack_require__(/*! ../ppr-navigations */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/ppr-navigations.js\");\nfunction serverPatchReducer(state, action) {\n // A \"retry\" is a navigation that happens due to a route mismatch. It's\n // similar to a refresh, because we will omit any existing dynamic data on\n // the page. But we seed the retry navigation with the exact tree that the\n // server just responded with.\n const retryMpa = action.mpa;\n const retryUrl = new URL(action.url, location.origin);\n const retrySeed = action.seed;\n const navigateType = action.navigateType;\n if (retryMpa || retrySeed === null) {\n // If the server did not send back data during the mismatch, fall back to\n // an MPA navigation.\n return (0, _navigation.completeHardNavigation)(state, retryUrl, navigateType);\n }\n const currentUrl = new URL(state.canonicalUrl, location.origin);\n const currentRenderedSearch = state.renderedSearch;\n if (action.previousTree !== state.tree) {\n // There was another, more recent navigation since the once that\n // mismatched. We can abort the retry, but we still need to refresh the\n // page to evict any stale dynamic data.\n return (0, _refreshreducer.refreshReducer)(state, {\n type: _routerreducertypes.ACTION_REFRESH\n });\n }\n // There have been no new navigations since the mismatched one. Refresh,\n // using the tree we just received from the server.\n const retryCanonicalUrl = (0, _createhreffromurl.createHrefFromUrl)(retryUrl);\n const retryNextUrl = action.nextUrl;\n const scrollBehavior = _routerreducertypes.ScrollBehavior.Default;\n const now = Date.now();\n return (0, _navigation.navigateToKnownRoute)(now, state, retryUrl, retryCanonicalUrl, retrySeed, currentUrl, currentRenderedSearch, state.cache, state.tree, _pprnavigations.FreshnessPolicy.RefreshAll, retryNextUrl, scrollBehavior, navigateType, null, // typically a retry after a previous mismatch, so the route was already\n // marked as having a dynamic rewrite when the mismatch was detected.\n null);\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=server-patch-reducer.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL3NlcnZlci1wYXRjaC1yZWR1Y2VyLmpzIiwibWFwcGluZ3MiOiI7Ozs7c0RBZWdCQTs7O2VBQUFBOzs7K0NBZmtCO2dEQU8zQjt3Q0FJQTs0Q0FDd0I7NENBQ0M7QUFFekIsU0FBU0EsbUJBQ2RDLEtBQTJCLEVBQzNCQyxNQUF5QjtJQUV6Qix1RUFBdUU7SUFDdkUsMEVBQTBFO0lBQzFFLDBFQUEwRTtJQUMxRSw4QkFBOEI7SUFDOUIsTUFBTUMsV0FBV0QsT0FBT0UsR0FBRztJQUMzQixNQUFNQyxXQUFXLElBQUlDLElBQUlKLE9BQU9LLEdBQUcsRUFBRUMsU0FBU0MsTUFBTTtJQUNwRCxNQUFNQyxZQUFZUixPQUFPUyxJQUFJO0lBQzdCLE1BQU1DLGVBQWVWLE9BQU9VLFlBQVk7SUFDeEMsSUFBSVQsWUFBWU8sY0FBYyxNQUFNO1FBQ2xDLHlFQUF5RTtRQUN6RSxxQkFBcUI7UUFDckIsT0FBT0csQ0FBQUEsR0FBQUEsWUFBQUEsc0JBQUFBLEVBQXVCWixPQUFPSSxVQUFVTztJQUNqRDtJQUNBLE1BQU1FLGFBQWEsSUFBSVIsSUFBSUwsTUFBTWMsWUFBWSxFQUFFUCxTQUFTQyxNQUFNO0lBQzlELE1BQU1PLHdCQUF3QmYsTUFBTWdCLGNBQWM7SUFDbEQsSUFBSWYsT0FBT2dCLFlBQVksS0FBS2pCLE1BQU1rQixJQUFJLEVBQUU7UUFDdEMsZ0VBQWdFO1FBQ2hFLHVFQUF1RTtRQUN2RSx3Q0FBd0M7UUFDeEMsT0FBT0MsQ0FBQUEsR0FBQUEsZ0JBQUFBLGNBQUFBLEVBQWVuQixPQUFPO1lBQUVvQixNQUFNQyxvQkFBQUEsY0FBYztRQUFDO0lBQ3REO0lBQ0Esd0VBQXdFO0lBQ3hFLG1EQUFtRDtJQUNuRCxNQUFNQyxvQkFBb0JDLENBQUFBLEdBQUFBLG1CQUFBQSxpQkFBQUEsRUFBa0JuQjtJQUM1QyxNQUFNb0IsZUFBZXZCLE9BQU93QixPQUFPO0lBQ25DLE1BQU1DLGlCQUFpQkMsb0JBQUFBLGNBQWMsQ0FBQ0MsT0FBTztJQUM3QyxNQUFNQyxNQUFNQyxLQUFLRCxHQUFHO0lBQ3BCLE9BQU9FLENBQUFBLEdBQUFBLFlBQUFBLG9CQUFBQSxFQUNMRixLQUNBN0IsT0FDQUksVUFDQWtCLG1CQUNBYixXQUNBSSxZQUNBRSx1QkFDQWYsTUFBTWdDLEtBQUssRUFDWGhDLE1BQU1rQixJQUFJLEVBQ1ZlLGdCQUFBQSxlQUFlLENBQUNDLFVBQVUsRUFDMUJWLGNBQ0FFLGdCQUNBZixjQUNBLE1BQ0EsdUVBQXVFLENBQ0M7SUFDeEUscUVBQXFFO0lBQ3JFO0FBRUoiLCJzb3VyY2VzIjpbIi9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvc2VydmVyLXBhdGNoLXJlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlSHJlZkZyb21VcmwgfSBmcm9tICcuLi9jcmVhdGUtaHJlZi1mcm9tLXVybCdcbmltcG9ydCB7XG4gIEFDVElPTl9SRUZSRVNILFxuICB0eXBlIFNlcnZlclBhdGNoQWN0aW9uLFxuICB0eXBlIFJlZHVjZXJTdGF0ZSxcbiAgdHlwZSBSZWFkb25seVJlZHVjZXJTdGF0ZSxcbiAgU2Nyb2xsQmVoYXZpb3IsXG59IGZyb20gJy4uL3JvdXRlci1yZWR1Y2VyLXR5cGVzJ1xuaW1wb3J0IHtcbiAgY29tcGxldGVIYXJkTmF2aWdhdGlvbixcbiAgbmF2aWdhdGVUb0tub3duUm91dGUsXG59IGZyb20gJy4uLy4uL3NlZ21lbnQtY2FjaGUvbmF2aWdhdGlvbidcbmltcG9ydCB7IHJlZnJlc2hSZWR1Y2VyIH0gZnJvbSAnLi9yZWZyZXNoLXJlZHVjZXInXG5pbXBvcnQgeyBGcmVzaG5lc3NQb2xpY3kgfSBmcm9tICcuLi9wcHItbmF2aWdhdGlvbnMnXG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJ2ZXJQYXRjaFJlZHVjZXIoXG4gIHN0YXRlOiBSZWFkb25seVJlZHVjZXJTdGF0ZSxcbiAgYWN0aW9uOiBTZXJ2ZXJQYXRjaEFjdGlvblxuKTogUmVkdWNlclN0YXRlIHtcbiAgLy8gQSBcInJldHJ5XCIgaXMgYSBuYXZpZ2F0aW9uIHRoYXQgaGFwcGVucyBkdWUgdG8gYSByb3V0ZSBtaXNtYXRjaC4gSXQnc1xuICAvLyBzaW1pbGFyIHRvIGEgcmVmcmVzaCwgYmVjYXVzZSB3ZSB3aWxsIG9taXQgYW55IGV4aXN0aW5nIGR5bmFtaWMgZGF0YSBvblxuICAvLyB0aGUgcGFnZS4gQnV0IHdlIHNlZWQgdGhlIHJldHJ5IG5hdmlnYXRpb24gd2l0aCB0aGUgZXhhY3QgdHJlZSB0aGF0IHRoZVxuICAvLyBzZXJ2ZXIganVzdCByZXNwb25kZWQgd2l0aC5cbiAgY29uc3QgcmV0cnlNcGEgPSBhY3Rpb24ubXBhXG4gIGNvbnN0IHJldHJ5VXJsID0gbmV3IFVSTChhY3Rpb24udXJsLCBsb2NhdGlvbi5vcmlnaW4pXG4gIGNvbnN0IHJldHJ5U2VlZCA9IGFjdGlvbi5zZWVkXG4gIGNvbnN0IG5hdmlnYXRlVHlwZSA9IGFjdGlvbi5uYXZpZ2F0ZVR5cGVcbiAgaWYgKHJldHJ5TXBhIHx8IHJldHJ5U2VlZCA9PT0gbnVsbCkge1xuICAgIC8vIElmIHRoZSBzZXJ2ZXIgZGlkIG5vdCBzZW5kIGJhY2sgZGF0YSBkdXJpbmcgdGhlIG1pc21hdGNoLCBmYWxsIGJhY2sgdG9cbiAgICAvLyBhbiBNUEEgbmF2aWdhdGlvbi5cbiAgICByZXR1cm4gY29tcGxldGVIYXJkTmF2aWdhdGlvbihzdGF0ZSwgcmV0cnlVcmwsIG5hdmlnYXRlVHlwZSlcbiAgfVxuICBjb25zdCBjdXJyZW50VXJsID0gbmV3IFVSTChzdGF0ZS5jYW5vbmljYWxVcmwsIGxvY2F0aW9uLm9yaWdpbilcbiAgY29uc3QgY3VycmVudFJlbmRlcmVkU2VhcmNoID0gc3RhdGUucmVuZGVyZWRTZWFyY2hcbiAgaWYgKGFjdGlvbi5wcmV2aW91c1RyZWUgIT09IHN0YXRlLnRyZWUpIHtcbiAgICAvLyBUaGVyZSB3YXMgYW5vdGhlciwgbW9yZSByZWNlbnQgbmF2aWdhdGlvbiBzaW5jZSB0aGUgb25jZSB0aGF0XG4gICAgLy8gbWlzbWF0Y2hlZC4gV2UgY2FuIGFib3J0IHRoZSByZXRyeSwgYnV0IHdlIHN0aWxsIG5lZWQgdG8gcmVmcmVzaCB0aGVcbiAgICAvLyBwYWdlIHRvIGV2aWN0IGFueSBzdGFsZSBkeW5hbWljIGRhdGEuXG4gICAgcmV0dXJuIHJlZnJlc2hSZWR1Y2VyKHN0YXRlLCB7IHR5cGU6IEFDVElPTl9SRUZSRVNIIH0pXG4gIH1cbiAgLy8gVGhlcmUgaGF2ZSBiZWVuIG5vIG5ldyBuYXZpZ2F0aW9ucyBzaW5jZSB0aGUgbWlzbWF0Y2hlZCBvbmUuIFJlZnJlc2gsXG4gIC8vIHVzaW5nIHRoZSB0cmVlIHdlIGp1c3QgcmVjZWl2ZWQgZnJvbSB0aGUgc2VydmVyLlxuICBjb25zdCByZXRyeUNhbm9uaWNhbFVybCA9IGNyZWF0ZUhyZWZGcm9tVXJsKHJldHJ5VXJsKVxuICBjb25zdCByZXRyeU5leHRVcmwgPSBhY3Rpb24ubmV4dFVybFxuICBjb25zdCBzY3JvbGxCZWhhdmlvciA9IFNjcm9sbEJlaGF2aW9yLkRlZmF1bHRcbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKVxuICByZXR1cm4gbmF2aWdhdGVUb0tub3duUm91dGUoXG4gICAgbm93LFxuICAgIHN0YXRlLFxuICAgIHJldHJ5VXJsLFxuICAgIHJldHJ5Q2Fub25pY2FsVXJsLFxuICAgIHJldHJ5U2VlZCxcbiAgICBjdXJyZW50VXJsLFxuICAgIGN1cnJlbnRSZW5kZXJlZFNlYXJjaCxcbiAgICBzdGF0ZS5jYWNoZSxcbiAgICBzdGF0ZS50cmVlLFxuICAgIEZyZXNobmVzc1BvbGljeS5SZWZyZXNoQWxsLFxuICAgIHJldHJ5TmV4dFVybCxcbiAgICBzY3JvbGxCZWhhdmlvcixcbiAgICBuYXZpZ2F0ZVR5cGUsXG4gICAgbnVsbCxcbiAgICAvLyBTZXJ2ZXIgcGF0Y2ggKHJldHJ5KSBuYXZpZ2F0aW9ucyBkb24ndCB1c2Ugcm91dGUgcHJlZGljdGlvbi4gVGhpcyBpc1xuICAgIC8vIHR5cGljYWxseSBhIHJldHJ5IGFmdGVyIGEgcHJldmlvdXMgbWlzbWF0Y2gsIHNvIHRoZSByb3V0ZSB3YXMgYWxyZWFkeVxuICAgIC8vIG1hcmtlZCBhcyBoYXZpbmcgYSBkeW5hbWljIHJld3JpdGUgd2hlbiB0aGUgbWlzbWF0Y2ggd2FzIGRldGVjdGVkLlxuICAgIG51bGxcbiAgKVxufVxuIl0sIm5hbWVzIjpbInNlcnZlclBhdGNoUmVkdWNlciIsInN0YXRlIiwiYWN0aW9uIiwicmV0cnlNcGEiLCJtcGEiLCJyZXRyeVVybCIsIlVSTCIsInVybCIsImxvY2F0aW9uIiwib3JpZ2luIiwicmV0cnlTZWVkIiwic2VlZCIsIm5hdmlnYXRlVHlwZSIsImNvbXBsZXRlSGFyZE5hdmlnYXRpb24iLCJjdXJyZW50VXJsIiwiY2Fub25pY2FsVXJsIiwiY3VycmVudFJlbmRlcmVkU2VhcmNoIiwicmVuZGVyZWRTZWFyY2giLCJwcmV2aW91c1RyZWUiLCJ0cmVlIiwicmVmcmVzaFJlZHVjZXIiLCJ0eXBlIiwiQUNUSU9OX1JFRlJFU0giLCJyZXRyeUNhbm9uaWNhbFVybCIsImNyZWF0ZUhyZWZGcm9tVXJsIiwicmV0cnlOZXh0VXJsIiwibmV4dFVybCIsInNjcm9sbEJlaGF2aW9yIiwiU2Nyb2xsQmVoYXZpb3IiLCJEZWZhdWx0Iiwibm93IiwiRGF0ZSIsIm5hdmlnYXRlVG9Lbm93blJvdXRlIiwiY2FjaGUiLCJGcmVzaG5lc3NQb2xpY3kiLCJSZWZyZXNoQWxsIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/server-patch-reducer.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js":
|
||
/*!*****************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js ***!
|
||
\*****************************************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n ACTION_HMR_REFRESH: function() {\n return ACTION_HMR_REFRESH;\n },\n ACTION_NAVIGATE: function() {\n return ACTION_NAVIGATE;\n },\n ACTION_REFRESH: function() {\n return ACTION_REFRESH;\n },\n ACTION_RESTORE: function() {\n return ACTION_RESTORE;\n },\n ACTION_SERVER_ACTION: function() {\n return ACTION_SERVER_ACTION;\n },\n ACTION_SERVER_PATCH: function() {\n return ACTION_SERVER_PATCH;\n },\n PrefetchKind: function() {\n return PrefetchKind;\n },\n ScrollBehavior: function() {\n return ScrollBehavior;\n }\n});\nconst ACTION_REFRESH = 'refresh';\nconst ACTION_NAVIGATE = 'navigate';\nconst ACTION_RESTORE = 'restore';\nconst ACTION_SERVER_PATCH = 'server-patch';\nconst ACTION_HMR_REFRESH = 'hmr-refresh';\nconst ACTION_SERVER_ACTION = 'server-action';\nvar PrefetchKind = /*#__PURE__*/ function(PrefetchKind) {\n PrefetchKind[\"AUTO\"] = \"auto\";\n PrefetchKind[\"FULL\"] = \"full\";\n return PrefetchKind;\n}({});\nvar ScrollBehavior = /*#__PURE__*/ function(ScrollBehavior) {\n /** Use per-node ScrollRef to decide whether to scroll. */ ScrollBehavior[ScrollBehavior[\"Default\"] = 0] = \"Default\";\n /** Suppress scroll entirely (e.g. scroll={false} on Link or router.push). */ ScrollBehavior[ScrollBehavior[\"NoScroll\"] = 1] = \"NoScroll\";\n return ScrollBehavior;\n}({});\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=router-reducer-types.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JvdXRlci1yZWR1Y2VyLXR5cGVzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQVNhQSxrQkFBa0I7ZUFBbEJBOztJQUhBQyxlQUFlO2VBQWZBOztJQURBQyxjQUFjO2VBQWRBOztJQUVBQyxjQUFjO2VBQWRBOztJQUdBQyxvQkFBb0I7ZUFBcEJBOztJQUZBQyxtQkFBbUI7ZUFBbkJBOztJQStIREMsWUFBWTtlQUFaQTs7SUE4Qk1DLGNBQWM7ZUFBZEE7OztBQWhLWCxNQUFNTCxpQkFBaUI7QUFDdkIsTUFBTUQsa0JBQWtCO0FBQ3hCLE1BQU1FLGlCQUFpQjtBQUN2QixNQUFNRSxzQkFBc0I7QUFDNUIsTUFBTUwscUJBQXFCO0FBQzNCLE1BQU1JLHVCQUF1QjtBQTZIN0IsSUFBS0UsZUFBQUEsV0FBQUEsR0FBQUEsU0FBQUEsWUFBQUE7OztXQUFBQTs7QUE4QkwsSUFBV0MsaUJBQUFBLFdBQUFBLEdBQUFBLFNBQUFBLGNBQUFBO0lBQ2hCLHdEQUF3RDtJQUV4RCwyRUFBMkU7V0FIM0RBIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JvdXRlci1yZWR1Y2VyLXR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ2FjaGVOb2RlLCBTY3JvbGxSZWYgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZsaWdodFJvdXRlclN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLXR5cGVzJ1xuaW1wb3J0IHR5cGUgeyBOYXZpZ2F0aW9uU2VlZCB9IGZyb20gJy4uL3NlZ21lbnQtY2FjaGUvbmF2aWdhdGlvbidcbmltcG9ydCB0eXBlIHsgRmV0Y2hTZXJ2ZXJSZXNwb25zZVJlc3VsdCB9IGZyb20gJy4vZmV0Y2gtc2VydmVyLXJlc3BvbnNlJ1xuXG5leHBvcnQgY29uc3QgQUNUSU9OX1JFRlJFU0ggPSAncmVmcmVzaCdcbmV4cG9ydCBjb25zdCBBQ1RJT05fTkFWSUdBVEUgPSAnbmF2aWdhdGUnXG5leHBvcnQgY29uc3QgQUNUSU9OX1JFU1RPUkUgPSAncmVzdG9yZSdcbmV4cG9ydCBjb25zdCBBQ1RJT05fU0VSVkVSX1BBVENIID0gJ3NlcnZlci1wYXRjaCdcbmV4cG9ydCBjb25zdCBBQ1RJT05fSE1SX1JFRlJFU0ggPSAnaG1yLXJlZnJlc2gnXG5leHBvcnQgY29uc3QgQUNUSU9OX1NFUlZFUl9BQ1RJT04gPSAnc2VydmVyLWFjdGlvbidcblxuZXhwb3J0IHR5cGUgUm91dGVyQ2hhbmdlQnlTZXJ2ZXJSZXNwb25zZSA9ICh7XG4gIG5hdmlnYXRlZEF0LFxuICBwcmV2aW91c1RyZWUsXG4gIHNlcnZlclJlc3BvbnNlLFxufToge1xuICBuYXZpZ2F0ZWRBdDogbnVtYmVyXG4gIHByZXZpb3VzVHJlZTogRmxpZ2h0Um91dGVyU3RhdGVcbiAgc2VydmVyUmVzcG9uc2U6IEZldGNoU2VydmVyUmVzcG9uc2VSZXN1bHRcbn0pID0+IHZvaWRcblxuLyoqXG4gKiBSZWZyZXNoIHRyaWdnZXJzIGEgcmVmcmVzaCBvZiB0aGUgZnVsbCBwYWdlIGRhdGEuXG4gKiAtIGZldGNoZXMgdGhlIEZsaWdodCBkYXRhIGFuZCBmaWxscyByc2MgYXQgdGhlIHJvb3Qgb2YgdGhlIGNhY2hlLlxuICogLSBUaGUgcm91dGVyIHN0YXRlIGlzIHVwZGF0ZWQgYXQgdGhlIHJvb3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVmcmVzaEFjdGlvbiB7XG4gIHR5cGU6IHR5cGVvZiBBQ1RJT05fUkVGUkVTSFxuICAvKipcbiAgICogQnlwYXNzIGludmFsaWRhdGluZyB0aGUgc2VnbWVudCBjYWNoZS4gVXNlZCBieSB0aGUgSW5zdGFudCBOYXZpZ2F0aW9uXG4gICAqIFRlc3RpbmcgQVBJIHRvIHByZXNlcnZlIHByZWZldGNoZWQgZGF0YSB3aGVuIHJlZnJlc2hpbmcgYWZ0ZXIgYW4gTVBBXG4gICAqIG5hdmlnYXRpb24uIE5vdCBleHBvc2VkIGluIHByb2R1Y3Rpb24gYnVpbGRzIGJ5IGRlZmF1bHQuXG4gICAqL1xuICBieXBhc3NDYWNoZUludmFsaWRhdGlvbj86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBIbXJSZWZyZXNoQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIEFDVElPTl9ITVJfUkVGUkVTSFxufVxuXG5leHBvcnQgdHlwZSBTZXJ2ZXJBY3Rpb25EaXNwYXRjaGVyID0gKFxuICBhcmdzOiBPbWl0PFxuICAgIFNlcnZlckFjdGlvbkFjdGlvbixcbiAgICAndHlwZScgfCAnbXV0YWJsZScgfCAnbmF2aWdhdGUnIHwgJ2NoYW5nZUJ5U2VydmVyUmVzcG9uc2UnIHwgJ2NhY2hlJ1xuICA+XG4pID0+IHZvaWRcblxuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJBY3Rpb25BY3Rpb24ge1xuICB0eXBlOiB0eXBlb2YgQUNUSU9OX1NFUlZFUl9BQ1RJT05cbiAgYWN0aW9uSWQ6IHN0cmluZ1xuICBhY3Rpb25BcmdzOiBhbnlbXVxuICByZXNvbHZlOiAodmFsdWU6IGFueSkgPT4gdm9pZFxuICByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWRcbiAgZGlkUmV2YWxpZGF0ZT86IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBOYXZpZ2F0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24gdG8gdGhlIHByb3ZpZGVkIHVybC4gSXQgc3VwcG9ydHMgdHdvIHR5cGVzOiBgcHVzaGAgYW5kIGByZXBsYWNlYC5cbiAqXG4gKiBgbmF2aWdhdGVUeXBlYDpcbiAqIC0gYHB1c2hgIC0gcHVzaGVzIGEgbmV3IGhpc3RvcnkgZW50cnkgaW4gdGhlIGJyb3dzZXIgaGlzdG9yeVxuICogLSBgcmVwbGFjZWAgLSByZXBsYWNlcyB0aGUgY3VycmVudCBoaXN0b3J5IGVudHJ5IGluIHRoZSBicm93c2VyIGhpc3RvcnlcbiAqXG4gKiBOYXZpZ2F0ZSBoYXMgbXVsdGlwbGUgY2FjaGUgaGV1cmlzdGljczpcbiAqIC0gcGFnZSB3YXMgcHJlZmV0Y2hlZFxuICogIC0gQXBwbHkgcm91dGVyIHN0YXRlIHRyZWUgZnJvbSBwcmVmZXRjaFxuICogIC0gQXBwbHkgRmxpZ2h0IGRhdGEgZnJvbSBwcmVmZXRjaCB0byB0aGUgY2FjaGVcbiAqICAtIElmIEZsaWdodCBkYXRhIGlzIGEgc3RyaW5nLCBpdCdzIGEgcmVkaXJlY3QgYW5kIHRoZSBzdGF0ZSBpcyB1cGRhdGVkIHRvIHRyaWdnZXIgYSByZWRpcmVjdFxuICogIC0gQ2hlY2sgaWYgaGFyZCBuYXZpZ2F0aW9uIGlzIG5lZWRlZFxuICogICAgLSBIYXJkIG5hdmlnYXRpb24gaGFwcGVucyB3aGVuIGEgZHluYW1pYyBwYXJhbWV0ZXIgYmVsb3cgdGhlIGNvbW1vbiBsYXlvdXQgY2hhbmdlZFxuICogICAgLSBXaGVuIGhhcmQgbmF2aWdhdGlvbiBpcyBuZWVkZWQgdGhlIGNhY2hlIGlzIGludmFsaWRhdGVkIGJlbG93IHRoZSBmbGlnaHRTZWdtZW50UGF0aFxuICogICAgLSBUaGUgbWlzc2luZyBjYWNoZSBub2RlcyBvZiB0aGUgcGFnZSB3aWxsIGJlIGZldGNoZWQgaW4gbGF5b3V0LXJvdXRlciBhbmQgdHJpZ2dlciB0aGUgU0VSVkVSX1BBVENIIGFjdGlvblxuICogIC0gSWYgaGFyZCBuYXZpZ2F0aW9uIGlzIG5vdCBuZWVkZWRcbiAqICAgIC0gVGhlIGNhY2hlIGlzIHJldXNlZFxuICogICAgLSBJZiBhbnkgY2FjaGUgbm9kZXMgYXJlIG1pc3NpbmcgdGhleSdsbCBiZSBmZXRjaGVkIGluIGxheW91dC1yb3V0ZXIgYW5kIHRyaWdnZXIgdGhlIFNFUlZFUl9QQVRDSCBhY3Rpb25cbiAqIC0gcGFnZSB3YXMgbm90IHByZWZldGNoZWRcbiAqICAtIFRoZSBuYXZpZ2F0ZSB3YXMgY2FsbGVkIGZyb20gYG5leHQvcm91dGVyYCAoYHJvdXRlci5wdXNoKClgIC8gYHJvdXRlci5yZXBsYWNlKClgKSAvIGBuZXh0L2xpbmtgIHdpdGhvdXQgcHJlZmV0Y2hlZCBkYXRhIGF2YWlsYWJsZSAoZS5nLiB0aGUgcHJlZmV0Y2ggZGlkbid0IGNvbWUgYmFjayBmcm9tIHRoZSBzZXJ2ZXIgYmVmb3JlIGNsaWNraW5nIHRoZSBsaW5rKVxuICogICAgLSBGbGlnaHQgZGF0YSBpcyBmZXRjaGVkIGluIHRoZSByZWR1Y2VyIChzdXNwZW5kcyB0aGUgcmVkdWNlcilcbiAqICAgIC0gUm91dGVyIHN0YXRlIHRyZWUgaXMgY3JlYXRlZCBiYXNlZCBvbiBGbGlnaHQgZGF0YVxuICogICAgLSBDYWNoZSBpcyBmaWxsZWQgYmFzZWQgb24gdGhlIEZsaWdodCBkYXRhXG4gKlxuICogQWJvdmUgc3RlcHMgZXhwbGFpbiAzIGNhc2VzOlxuICogLSBgc29mdGAgLSBSZXVzZXMgdGhlIGV4aXN0aW5nIGNhY2hlIGFuZCBmZXRjaGVzIG1pc3Npbmcgbm9kZXMgaW4gbGF5b3V0LXJvdXRlci5cbiAqIC0gYGhhcmRgIC0gQ3JlYXRlcyBhIG5ldyBjYWNoZSB3aGVyZSBjYWNoZSBub2RlcyBhcmUgcmVtb3ZlZCBiZWxvdyB0aGUgY29tbW9uIGxheW91dCBhbmQgZmV0Y2hlcyBtaXNzaW5nIG5vZGVzIGluIGxheW91dC1yb3V0ZXIuXG4gKiAtIGBvcHRpbWlzdGljYCAoZXhwbGljaXQgbm8gcHJlZmV0Y2gpIC0gQ3JlYXRlcyBhIG5ldyBjYWNoZSBhbmQga2lja3Mgb2ZmIHRoZSBkYXRhIGZldGNoIGluIHRoZSByZWR1Y2VyLiBUaGUgZGF0YSBmZXRjaCBpcyBhd2FpdGVkIGluIHRoZSBsYXlvdXQtcm91dGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hdmlnYXRlQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIEFDVElPTl9OQVZJR0FURVxuICB1cmw6IFVSTFxuICBpc0V4dGVybmFsVXJsOiBib29sZWFuXG4gIGxvY2F0aW9uU2VhcmNoOiBMb2NhdGlvblsnc2VhcmNoJ11cbiAgbmF2aWdhdGVUeXBlOiAncHVzaCcgfCAncmVwbGFjZSdcbiAgc2Nyb2xsQmVoYXZpb3I6IFNjcm9sbEJlaGF2aW9yXG59XG5cbi8qKlxuICogUmVzdG9yZSBhcHBsaWVzIHRoZSBwcm92aWRlZCByb3V0ZXIgc3RhdGUuXG4gKiAtIFVzZWQgZm9yIGBwb3BzdGF0ZWAgKGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9uKSB3aGVyZSBhIGtub3duIHJvdXRlciBzdGF0ZSBoYXMgdG8gYmUgYXBwbGllZC5cbiAqIC0gQWxzbyB1c2VkIHdoZW4gc3luY2luZyB0aGUgcm91dGVyIHN0YXRlIHdpdGggYHB1c2hTdGF0ZWAvYHJlcGxhY2VTdGF0ZWAgY2FsbHMuXG4gKiAtIFJvdXRlciBzdGF0ZSBpcyBhcHBsaWVkIGFzLWlzIGZyb20gdGhlIGhpc3Rvcnkgc3RhdGUsIGlmIGF2YWlsYWJsZS5cbiAqIC0gSWYgdGhlIGhpc3Rvcnkgc3RhdGUgZG9lcyBub3QgY29udGFpbiB0aGUgcm91dGVyIHN0YXRlLCB0aGUgZXhpc3Rpbmcgcm91dGVyIHN0YXRlIGlzIHVzZWQuXG4gKiAtIElmIGFueSBjYWNoZSBub2RlIGlzIG1pc3NpbmcgaXQgd2lsbCBiZSBmZXRjaGVkIGluIGxheW91dC1yb3V0ZXIgZHVyaW5nIHJlbmRlcmluZyBhbmQgdGhlIHNlcnZlci1wYXRjaCBjYXNlLlxuICogLSBJZiBleGlzdGluZyBjYWNoZSBub2RlcyBtYXRjaCB0aGVzZSBhcmUgdXNlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXN0b3JlQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIEFDVElPTl9SRVNUT1JFXG4gIHVybDogVVJMXG4gIGhpc3RvcnlTdGF0ZTogQXBwSGlzdG9yeVN0YXRlIHwgdW5kZWZpbmVkXG59XG5cbmV4cG9ydCB0eXBlIEFwcEhpc3RvcnlTdGF0ZSA9IHtcbiAgdHJlZTogRmxpZ2h0Um91dGVyU3RhdGVcbiAgcmVuZGVyZWRTZWFyY2g6IHN0cmluZ1xufVxuXG4vKipcbiAqIFNlcnZlci1wYXRjaCBhcHBsaWVzIHRoZSBwcm92aWRlZCBGbGlnaHQgZGF0YSB0byB0aGUgY2FjaGUgYW5kIHJvdXRlciB0cmVlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZlclBhdGNoQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIEFDVElPTl9TRVJWRVJfUEFUQ0hcbiAgcHJldmlvdXNUcmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZVxuICB1cmw6IFVSTFxuICBuZXh0VXJsOiBzdHJpbmcgfCBudWxsXG4gIHNlZWQ6IE5hdmlnYXRpb25TZWVkIHwgbnVsbFxuICBtcGE6IGJvb2xlYW5cbiAgbmF2aWdhdGVUeXBlOiAncHVzaCcgfCAncmVwbGFjZSdcbn1cblxuLyoqXG4gKiBQcmVmZXRjaEtpbmQgZGVmaW5lcyB0aGUgdHlwZSBvZiBwcmVmZXRjaGluZyB0aGF0IHNob3VsZCBiZSBkb25lLlxuICogLSBgYXV0b2AgLSBpZiB0aGUgcGFnZSBpcyBkeW5hbWljLCBwcmVmZXRjaCB0aGUgcGFnZSBkYXRhIHBhcnRpYWxseSwgaWYgc3RhdGljIHByZWZldGNoIHRoZSBwYWdlIGRhdGEgZnVsbHkuXG4gKiAtIGBmdWxsYCAtIHByZWZldGNoIHRoZSBwYWdlIGRhdGEgZnVsbHkuXG4gKi9cblxuZXhwb3J0IGVudW0gUHJlZmV0Y2hLaW5kIHtcbiAgQVVUTyA9ICdhdXRvJyxcbiAgRlVMTCA9ICdmdWxsJyxcbn1cblxuLyoqXG4gKiBQcmVmZXRjaCBhZGRzIHRoZSBwcm92aWRlZCBGbGlnaHREYXRhIHRvIHRoZSBwcmVmZXRjaCBjYWNoZVxuICogLSBDcmVhdGVzIHRoZSByb3V0ZXIgc3RhdGUgdHJlZSBiYXNlZCBvbiB0aGUgcGF0Y2ggaW4gRmxpZ2h0RGF0YVxuICogLSBBZGRzIHRoZSBGbGlnaHREYXRhIHRvIHRoZSBwcmVmZXRjaCBjYWNoZVxuICogLSBJbiBBQ1RJT05fTkFWSUdBVEUgdGhlIHByZWZldGNoIGNhY2hlIGlzIGNoZWNrZWQgYW5kIHRoZSByb3V0ZXIgc3RhdGUgdHJlZSBhbmQgRmxpZ2h0RGF0YSBhcmUgYXBwbGllZC5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIFB1c2hSZWYge1xuICAvKipcbiAgICogSWYgdGhlIGFwcC1yb3V0ZXIgc2hvdWxkIHB1c2ggYSBuZXcgaGlzdG9yeSBlbnRyeSBpbiBhcHAtcm91dGVyJ3MgdXNlRWZmZWN0KClcbiAgICovXG4gIHBlbmRpbmdQdXNoOiBib29sZWFuXG4gIC8qKlxuICAgKiBNdWx0aS1wYWdlIG5hdmlnYXRpb24gdGhyb3VnaCBsb2NhdGlvbi5ocmVmLlxuICAgKi9cbiAgbXBhTmF2aWdhdGlvbjogYm9vbGVhblxuICAvKipcbiAgICogU2tpcCBhcHBseWluZyB0aGUgcm91dGVyIHN0YXRlIHRvIHRoZSBicm93c2VyIGhpc3Rvcnkgc3RhdGUuXG4gICAqL1xuICBwcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZTogYm9vbGVhblxufVxuXG4vKipcbiAqIENvbnRyb2xzIHRoZSBzY3JvbGwgYmVoYXZpb3IgZm9yIGEgbmF2aWdhdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gU2Nyb2xsQmVoYXZpb3Ige1xuICAvKiogVXNlIHBlci1ub2RlIFNjcm9sbFJlZiB0byBkZWNpZGUgd2hldGhlciB0byBzY3JvbGwuICovXG4gIERlZmF1bHQgPSAwLFxuICAvKiogU3VwcHJlc3Mgc2Nyb2xsIGVudGlyZWx5IChlLmcuIHNjcm9sbD17ZmFsc2V9IG9uIExpbmsgb3Igcm91dGVyLnB1c2gpLiAqL1xuICBOb1Njcm9sbCA9IDEsXG59XG5cbmV4cG9ydCB0eXBlIEZvY3VzQW5kU2Nyb2xsUmVmID0ge1xuICAvKipcbiAgICogVGhlIHNjcm9sbCByZWYgZnJvbSB0aGUgbW9zdCByZWNlbnQgbmF2aWdhdGlvbi4gU2V0IHRvIHdoYXRldmVyIHdhc1xuICAgKiBhY2N1bXVsYXRlZCBkdXJpbmcgdHJlZSBjb25zdHJ1Y3Rpb24gKG9yIG51bGwgaWYgbm90aGluZyB3YXNcbiAgICogYWNjdW11bGF0ZWQpLiBPbiB0aGUgbmV4dCBuYXZpZ2F0aW9uLCBpZiBuZXcgc2Nyb2xsIHRhcmdldHMgYXJlXG4gICAqIGNyZWF0ZWQsIHRoZSBwcmV2aW91cyBzY3JvbGxSZWYgaXMgaW52YWxpZGF0ZWQgYnkgc2V0dGluZ1xuICAgKiBgY3VycmVudCA9IGZhbHNlYC5cbiAgICovXG4gIHNjcm9sbFJlZjogU2Nyb2xsUmVmIHwgbnVsbFxuICAvKipcbiAgICogV2hlbiB0cnVlLCB0aGUgc2Nyb2xsIGhhbmRsZXIgdXNlcyBgZm9jdXNBbmRTY3JvbGxSZWYuc2Nyb2xsUmVmYFxuICAgKiBmb3IgZXZlcnkgc2VnbWVudCByZWdhcmRsZXNzIG9mIHBlci1ub2RlIHN0YXRlLiBVc2VkIGZvciBoYXNoLW9ubHlcbiAgICogbmF2aWdhdGlvbnMgd2hlcmUgZXZlcnkgc2VnbWVudCBzaG91bGQgYmUgdHJlYXRlZCBhcyBhIHNjcm9sbFxuICAgKiB0YXJnZXQuIFdoZW4gZmFsc2UsIHRoZSBoYW5kbGVyIGNoZWNrcyBgY2FjaGVOb2RlLnNjcm9sbFJlZmBcbiAgICogaW5zdGVhZCAocGVyLW5vZGUpLCBzbyBvbmx5IHNlZ21lbnRzIHRoYXQgYWN0dWFsbHkgbmF2aWdhdGVkIHNjcm9sbC5cbiAgICovXG4gIGZvcmNlU2Nyb2xsOiBib29sZWFuXG4gIC8qKlxuICAgKiBUaGUgaGFzaCBmcmFnbWVudCB0aGF0IHNob3VsZCBiZSBzY3JvbGxlZCB0by5cbiAgICovXG4gIGhhc2hGcmFnbWVudDogc3RyaW5nIHwgbnVsbFxuICAvKipcbiAgICogSWYgb25seSB0aGUgVVJMcyBoYXNoIGZyYWdtZW50IGNoYW5nZWRcbiAgICovXG4gIG9ubHlIYXNoQ2hhbmdlOiBib29sZWFuXG59XG5cbi8qKlxuICogSGFuZGxlcyBrZWVwaW5nIHRoZSBzdGF0ZSBvZiBhcHAtcm91dGVyLlxuICovXG5leHBvcnQgdHlwZSBBcHBSb3V0ZXJTdGF0ZSA9IHtcbiAgLyoqXG4gICAqIFRoZSByb3V0ZXIgc3RhdGUsIHRoaXMgaXMgd3JpdHRlbiBpbnRvIHRoZSBoaXN0b3J5IHN0YXRlIGluIGFwcC1yb3V0ZXIgdXNpbmcgcmVwbGFjZVN0YXRlL3B1c2hTdGF0ZS5cbiAgICogLSBIYXMgdG8gYmUgc2VyaWFsaXphYmxlIGFzIGl0IGlzIHdyaXR0ZW4gaW50byB0aGUgaGlzdG9yeSBzdGF0ZS5cbiAgICogLSBIb2xkcyB3aGljaCBzZWdtZW50cyBhbmQgcGFyYWxsZWwgcm91dGVzIGFyZSBzaG93biBvbiB0aGUgc2NyZWVuLlxuICAgKi9cbiAgdHJlZTogRmxpZ2h0Um91dGVyU3RhdGVcbiAgLyoqXG4gICAqIFRoZSBjYWNoZSBob2xkcyBSZWFjdCBub2RlcyBmb3IgZXZlcnkgc2VnbWVudCB0aGF0IGlzIHNob3duIG9uIHNjcmVlbiBhcyB3ZWxsIGFzIHByZXZpb3VzbHkgc2hvd24gc2VnbWVudHMuXG4gICAqIEl0IGFsc28gaG9sZHMgaW4tcHJvZ3Jlc3MgZGF0YSByZXF1ZXN0cy5cbiAgICovXG4gIGNhY2hlOiBDYWNoZU5vZGVcbiAgLyoqXG4gICAqIERlY2lkZXMgaWYgdGhlIHVwZGF0ZSBzaG91bGQgY3JlYXRlIGEgbmV3IGhpc3RvcnkgZW50cnkgYW5kIGlmIHRoZSBuYXZpZ2F0aW9uIGhhcyB0byB0cmlnZ2VyIGEgYnJvd3NlciBuYXZpZ2F0aW9uLlxuICAgKi9cbiAgcHVzaFJlZjogUHVzaFJlZlxuICAvKipcbiAgICogRGVjaWRlcyBpZiB0aGUgdXBkYXRlIHNob3VsZCBhcHBseSBzY3JvbGwgYW5kIGZvY3VzIG1hbmFnZW1lbnQuXG4gICAqL1xuICBmb2N1c0FuZFNjcm9sbFJlZjogRm9jdXNBbmRTY3JvbGxSZWZcbiAgLyoqXG4gICAqIFRoZSBjYW5vbmljYWwgdXJsIHRoYXQgaXMgcHVzaGVkL3JlcGxhY2VkLlxuICAgKiAtIFRoaXMgaXMgdGhlIHVybCB5b3Ugc2VlIGluIHRoZSBicm93c2VyLlxuICAgKi9cbiAgY2Fub25pY2FsVXJsOiBzdHJpbmdcblxuICAvKipcbiAgICogVGhlIHNlYXJjaCBxdWVyeSBvYnNlcnZlZCBieSB0aGUgc2VydmVyIGR1cmluZyByZW5kZXJpbmcuIFRoaXMgbWF5IGJlXG4gICAqIGRpZmZlcmVudCBmcm9tIHRoZSBjYW5vbmljYWwgVVJMJ3Mgc2VhcmNoIHF1ZXJ5IGlmIHRoZSBzZXJ2ZXIgcGVyZm9ybWVkXG4gICAqIGEgcmV3cml0ZS4gRXZlbiB0aG91Z2ggYSBjbGllbnQgY29tcG9uZW50IHdvbid0IG9ic2VydmUgdGhpcyAodW5sZXNzIGl0XG4gICAqIHdlcmUgcGFzc2VkIGZyb20gYSBTZXJ2ZXIgY29tcG9uZW50KSwgdGhlIGNsaWVudCByb3V0ZXIgbmVlZHMgdG8ga25vdyB0aGlzXG4gICAqIHNvIGl0IGNhbiBwcm9wZXJseSBjYWNoZSBzZWdtZW50IGRhdGE7IGl0J3NzIHBhcnQgb2YgYSBwYWdlIHNlZ21lbnQnc1xuICAgKiBjYWNoZSBrZXkuXG4gICAqL1xuICByZW5kZXJlZFNlYXJjaDogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFRoZSB1bmRlcmx5aW5nIFwidXJsXCIgcmVwcmVzZW50aW5nIHRoZSBVSSBzdGF0ZSwgd2hpY2ggaXMgdXNlZCBmb3IgaW50ZXJjZXB0aW5nIHJvdXRlcy5cbiAgICovXG4gIG5leHRVcmw6IHN0cmluZyB8IG51bGxcblxuICAvKipcbiAgICogVGhlIHByZXZpb3VzIG5leHQtdXJsIHRoYXQgd2FzIHVzZWQgcHJldmlvdXMgdG8gYSBkeW5hbWljIG5hdmlnYXRpb24uXG4gICAqL1xuICBwcmV2aW91c05leHRVcmw6IHN0cmluZyB8IG51bGxcblxuICBkZWJ1Z0luZm86IEFycmF5PHVua25vd24+IHwgbnVsbFxufVxuXG5leHBvcnQgdHlwZSBSZWFkb25seVJlZHVjZXJTdGF0ZSA9IFJlYWRvbmx5PEFwcFJvdXRlclN0YXRlPlxuZXhwb3J0IHR5cGUgUmVkdWNlclN0YXRlID1cbiAgfCAoUHJvbWlzZTxBcHBSb3V0ZXJTdGF0ZT4gJiB7IF9kZWJ1Z0luZm8/OiBBcnJheTx1bmtub3duPiB9KVxuICB8IEFwcFJvdXRlclN0YXRlXG5leHBvcnQgdHlwZSBSZWR1Y2VyQWN0aW9ucyA9IFJlYWRvbmx5PFxuICB8IFJlZnJlc2hBY3Rpb25cbiAgfCBOYXZpZ2F0ZUFjdGlvblxuICB8IFJlc3RvcmVBY3Rpb25cbiAgfCBTZXJ2ZXJQYXRjaEFjdGlvblxuICB8IEhtclJlZnJlc2hBY3Rpb25cbiAgfCBTZXJ2ZXJBY3Rpb25BY3Rpb25cbj5cbiJdLCJuYW1lcyI6WyJBQ1RJT05fSE1SX1JFRlJFU0giLCJBQ1RJT05fTkFWSUdBVEUiLCJBQ1RJT05fUkVGUkVTSCIsIkFDVElPTl9SRVNUT1JFIiwiQUNUSU9OX1NFUlZFUl9BQ1RJT04iLCJBQ1RJT05fU0VSVkVSX1BBVENIIiwiUHJlZmV0Y2hLaW5kIiwiU2Nyb2xsQmVoYXZpb3IiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/router-reducer/router-reducer.js":
|
||
/*!***********************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/router-reducer/router-reducer.js ***!
|
||
\***********************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"reducer\", ({\n enumerable: true,\n get: function() {\n return reducer;\n }\n}));\nconst _routerreducertypes = __webpack_require__(/*! ./router-reducer-types */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _navigatereducer = __webpack_require__(/*! ./reducers/navigate-reducer */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js\");\nconst _serverpatchreducer = __webpack_require__(/*! ./reducers/server-patch-reducer */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/server-patch-reducer.js\");\nconst _restorereducer = __webpack_require__(/*! ./reducers/restore-reducer */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/restore-reducer.js\");\nconst _refreshreducer = __webpack_require__(/*! ./reducers/refresh-reducer */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js\");\nconst _hmrrefreshreducer = __webpack_require__(/*! ./reducers/hmr-refresh-reducer */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/hmr-refresh-reducer.js\");\nconst _serveractionreducer = __webpack_require__(/*! ./reducers/server-action-reducer */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/server-action-reducer.js\");\n/**\n * Reducer that handles the app-router state updates.\n */ function clientReducer(state, action) {\n switch(action.type){\n case _routerreducertypes.ACTION_NAVIGATE:\n {\n return (0, _navigatereducer.navigateReducer)(state, action);\n }\n case _routerreducertypes.ACTION_SERVER_PATCH:\n {\n return (0, _serverpatchreducer.serverPatchReducer)(state, action);\n }\n case _routerreducertypes.ACTION_RESTORE:\n {\n return (0, _restorereducer.restoreReducer)(state, action);\n }\n case _routerreducertypes.ACTION_REFRESH:\n {\n return (0, _refreshreducer.refreshReducer)(state, action);\n }\n case _routerreducertypes.ACTION_HMR_REFRESH:\n {\n return (0, _hmrrefreshreducer.hmrRefreshReducer)(state);\n }\n case _routerreducertypes.ACTION_SERVER_ACTION:\n {\n return (0, _serveractionreducer.serverActionReducer)(state, action);\n }\n // This case should never be hit as dispatch is strongly typed.\n default:\n throw Object.defineProperty(new Error('Unknown action'), \"__NEXT_ERROR_CODE\", {\n value: \"E295\",\n enumerable: false,\n configurable: true\n });\n }\n}\nfunction serverReducer(state, _action) {\n return state;\n}\nconst reducer = true ? serverReducer : 0;\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=router-reducer.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JvdXRlci1yZWR1Y2VyLmpzIiwibWFwcGluZ3MiOiI7Ozs7MkNBNERhQTs7O2VBQUFBOzs7Z0RBckROOzZDQU15QjtnREFDRzs0Q0FDSjs0Q0FDQTsrQ0FDRztpREFDRTtBQUVwQzs7Q0FFQyxHQUNELFNBQVNDLGNBQ1BDLEtBQTJCLEVBQzNCQyxNQUFzQjtJQUV0QixPQUFRQSxPQUFPQyxJQUFJO1FBQ2pCLEtBQUtDLG9CQUFBQSxlQUFlO1lBQUU7Z0JBQ3BCLE9BQU9DLENBQUFBLEdBQUFBLGlCQUFBQSxlQUFBQSxFQUFnQkosT0FBT0M7WUFDaEM7UUFDQSxLQUFLSSxvQkFBQUEsbUJBQW1CO1lBQUU7Z0JBQ3hCLE9BQU9DLENBQUFBLEdBQUFBLG9CQUFBQSxrQkFBQUEsRUFBbUJOLE9BQU9DO1lBQ25DO1FBQ0EsS0FBS00sb0JBQUFBLGNBQWM7WUFBRTtnQkFDbkIsT0FBT0MsQ0FBQUEsR0FBQUEsZ0JBQUFBLGNBQUFBLEVBQWVSLE9BQU9DO1lBQy9CO1FBQ0EsS0FBS1Esb0JBQUFBLGNBQWM7WUFBRTtnQkFDbkIsT0FBT0MsQ0FBQUEsR0FBQUEsZ0JBQUFBLGNBQWMsRUFBQ1YsT0FBT0M7WUFDL0I7UUFDQSxLQUFLVSxvQkFBQUEsa0JBQWtCO1lBQUU7Z0JBQ3ZCLE9BQU9DLENBQUFBLEdBQUFBLG1CQUFBQSxpQkFBaUIsRUFBQ1o7WUFDM0I7UUFDQSxLQUFLYSxvQkFBQUEsb0JBQW9CO1lBQUU7Z0JBQ3pCLE9BQU9DLENBQUFBLEdBQUFBLHFCQUFBQSxtQkFBQUEsRUFBb0JkLE9BQU9DO1lBQ3BDO1FBQ0EsK0RBQStEO1FBQy9EO1lBQ0UsTUFBTSxxQkFBMkIsQ0FBM0IsSUFBSWMsTUFBTSxtQkFBVjt1QkFBQTs0QkFBQTs4QkFBQTtZQUEwQjtJQUNwQztBQUNGO0FBRUEsU0FBU0MsY0FDUGhCLEtBQTJCLEVBQzNCaUIsT0FBdUI7SUFFdkIsT0FBT2pCO0FBQ1Q7QUFHTyxNQUFNRixVQUNYLEtBQTZCLEdBQUdrQixnQkFBZ0JqQixDQUFhQSIsInNvdXJjZXMiOlsiL1VzZXJzL3NyYy9jbGllbnQvY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9yb3V0ZXItcmVkdWNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBQ1RJT05fTkFWSUdBVEUsXG4gIEFDVElPTl9TRVJWRVJfUEFUQ0gsXG4gIEFDVElPTl9SRVNUT1JFLFxuICBBQ1RJT05fUkVGUkVTSCxcbiAgQUNUSU9OX0hNUl9SRUZSRVNILFxuICBBQ1RJT05fU0VSVkVSX0FDVElPTixcbn0gZnJvbSAnLi9yb3V0ZXItcmVkdWNlci10eXBlcydcbmltcG9ydCB0eXBlIHtcbiAgUmVkdWNlckFjdGlvbnMsXG4gIFJlZHVjZXJTdGF0ZSxcbiAgUmVhZG9ubHlSZWR1Y2VyU3RhdGUsXG59IGZyb20gJy4vcm91dGVyLXJlZHVjZXItdHlwZXMnXG5pbXBvcnQgeyBuYXZpZ2F0ZVJlZHVjZXIgfSBmcm9tICcuL3JlZHVjZXJzL25hdmlnYXRlLXJlZHVjZXInXG5pbXBvcnQgeyBzZXJ2ZXJQYXRjaFJlZHVjZXIgfSBmcm9tICcuL3JlZHVjZXJzL3NlcnZlci1wYXRjaC1yZWR1Y2VyJ1xuaW1wb3J0IHsgcmVzdG9yZVJlZHVjZXIgfSBmcm9tICcuL3JlZHVjZXJzL3Jlc3RvcmUtcmVkdWNlcidcbmltcG9ydCB7IHJlZnJlc2hSZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2Vycy9yZWZyZXNoLXJlZHVjZXInXG5pbXBvcnQgeyBobXJSZWZyZXNoUmVkdWNlciB9IGZyb20gJy4vcmVkdWNlcnMvaG1yLXJlZnJlc2gtcmVkdWNlcidcbmltcG9ydCB7IHNlcnZlckFjdGlvblJlZHVjZXIgfSBmcm9tICcuL3JlZHVjZXJzL3NlcnZlci1hY3Rpb24tcmVkdWNlcidcblxuLyoqXG4gKiBSZWR1Y2VyIHRoYXQgaGFuZGxlcyB0aGUgYXBwLXJvdXRlciBzdGF0ZSB1cGRhdGVzLlxuICovXG5mdW5jdGlvbiBjbGllbnRSZWR1Y2VyKFxuICBzdGF0ZTogUmVhZG9ubHlSZWR1Y2VyU3RhdGUsXG4gIGFjdGlvbjogUmVkdWNlckFjdGlvbnNcbik6IFJlZHVjZXJTdGF0ZSB7XG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICBjYXNlIEFDVElPTl9OQVZJR0FURToge1xuICAgICAgcmV0dXJuIG5hdmlnYXRlUmVkdWNlcihzdGF0ZSwgYWN0aW9uKVxuICAgIH1cbiAgICBjYXNlIEFDVElPTl9TRVJWRVJfUEFUQ0g6IHtcbiAgICAgIHJldHVybiBzZXJ2ZXJQYXRjaFJlZHVjZXIoc3RhdGUsIGFjdGlvbilcbiAgICB9XG4gICAgY2FzZSBBQ1RJT05fUkVTVE9SRToge1xuICAgICAgcmV0dXJuIHJlc3RvcmVSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pXG4gICAgfVxuICAgIGNhc2UgQUNUSU9OX1JFRlJFU0g6IHtcbiAgICAgIHJldHVybiByZWZyZXNoUmVkdWNlcihzdGF0ZSwgYWN0aW9uKVxuICAgIH1cbiAgICBjYXNlIEFDVElPTl9ITVJfUkVGUkVTSDoge1xuICAgICAgcmV0dXJuIGhtclJlZnJlc2hSZWR1Y2VyKHN0YXRlKVxuICAgIH1cbiAgICBjYXNlIEFDVElPTl9TRVJWRVJfQUNUSU9OOiB7XG4gICAgICByZXR1cm4gc2VydmVyQWN0aW9uUmVkdWNlcihzdGF0ZSwgYWN0aW9uKVxuICAgIH1cbiAgICAvLyBUaGlzIGNhc2Ugc2hvdWxkIG5ldmVyIGJlIGhpdCBhcyBkaXNwYXRjaCBpcyBzdHJvbmdseSB0eXBlZC5cbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGFjdGlvbicpXG4gIH1cbn1cblxuZnVuY3Rpb24gc2VydmVyUmVkdWNlcihcbiAgc3RhdGU6IFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBfYWN0aW9uOiBSZWR1Y2VyQWN0aW9uc1xuKTogUmVkdWNlclN0YXRlIHtcbiAgcmV0dXJuIHN0YXRlXG59XG5cbi8vIHdlIGRvbid0IHJ1biB0aGUgY2xpZW50IHJlZHVjZXIgb24gdGhlIHNlcnZlciwgc28gd2UgdXNlIGEgbm9vcCBmdW5jdGlvbiBmb3IgYmV0dGVyIHRyZWUgc2hha2luZ1xuZXhwb3J0IGNvbnN0IHJlZHVjZXIgPVxuICB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyA/IHNlcnZlclJlZHVjZXIgOiBjbGllbnRSZWR1Y2VyXG4iXSwibmFtZXMiOlsicmVkdWNlciIsImNsaWVudFJlZHVjZXIiLCJzdGF0ZSIsImFjdGlvbiIsInR5cGUiLCJBQ1RJT05fTkFWSUdBVEUiLCJuYXZpZ2F0ZVJlZHVjZXIiLCJBQ1RJT05fU0VSVkVSX1BBVENIIiwic2VydmVyUGF0Y2hSZWR1Y2VyIiwiQUNUSU9OX1JFU1RPUkUiLCJyZXN0b3JlUmVkdWNlciIsIkFDVElPTl9SRUZSRVNIIiwicmVmcmVzaFJlZHVjZXIiLCJBQ1RJT05fSE1SX1JFRlJFU0giLCJobXJSZWZyZXNoUmVkdWNlciIsIkFDVElPTl9TRVJWRVJfQUNUSU9OIiwic2VydmVyQWN0aW9uUmVkdWNlciIsIkVycm9yIiwic2VydmVyUmVkdWNlciIsIl9hY3Rpb24iLCJ3aW5kb3ciXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/router-reducer/router-reducer.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/router-reducer/set-cache-busting-search-param.js":
|
||
/*!***************************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/router-reducer/set-cache-busting-search-param.js ***!
|
||
\***************************************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n setCacheBustingSearchParam: function() {\n return setCacheBustingSearchParam;\n },\n setCacheBustingSearchParamWithHash: function() {\n return setCacheBustingSearchParamWithHash;\n }\n});\nconst _cachebustingsearchparam = __webpack_require__(/*! ../../../shared/lib/router/utils/cache-busting-search-param */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/cache-busting-search-param.js\");\nconst _approuterheaders = __webpack_require__(/*! ../app-router-headers */ \"(ssr)/./node_modules/next/dist/client/components/app-router-headers.js\");\nconst setCacheBustingSearchParam = (url, headers)=>{\n const uniqueCacheKey = (0, _cachebustingsearchparam.computeCacheBustingSearchParam)(headers[_approuterheaders.NEXT_ROUTER_PREFETCH_HEADER], headers[_approuterheaders.NEXT_ROUTER_SEGMENT_PREFETCH_HEADER], headers[_approuterheaders.NEXT_ROUTER_STATE_TREE_HEADER], headers[_approuterheaders.NEXT_URL]);\n setCacheBustingSearchParamWithHash(url, uniqueCacheKey);\n};\nconst setCacheBustingSearchParamWithHash = (url, hash)=>{\n /**\n * Note that we intentionally do not use `url.searchParams.set` here:\n *\n * const url = new URL('https://example.com/search?q=custom%20spacing');\n * url.searchParams.set('_rsc', 'abc123');\n * console.log(url.toString()); // Outputs: https://example.com/search?q=custom+spacing&_rsc=abc123\n * ^ <--- this is causing confusion\n * This is in fact intended based on https://url.spec.whatwg.org/#interface-urlsearchparams, but\n * we want to preserve the %20 as %20 if that's what the user passed in, hence the custom\n * logic below.\n */ const existingSearch = url.search;\n const rawQuery = existingSearch.startsWith('?') ? existingSearch.slice(1) : existingSearch;\n // Always remove any existing cache busting param and add a fresh one to ensure\n // we have the correct value based on current request headers\n const pairs = rawQuery.split('&').filter((pair)=>pair && !pair.startsWith(`${_approuterheaders.NEXT_RSC_UNION_QUERY}=`));\n if (hash.length > 0) {\n pairs.push(`${_approuterheaders.NEXT_RSC_UNION_QUERY}=${hash}`);\n } else {\n pairs.push(`${_approuterheaders.NEXT_RSC_UNION_QUERY}`);\n }\n url.search = pairs.length ? `?${pairs.join('&')}` : '';\n};\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=set-cache-busting-search-param.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3NldC1jYWNoZS1idXN0aW5nLXNlYXJjaC1wYXJhbS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUE0QmFBLDBCQUEwQjtlQUExQkE7O0lBNkJBQyxrQ0FBa0M7ZUFBbENBOzs7cURBdkRrQzs4Q0FPeEM7QUFtQkEsTUFBTUQsNkJBQTZCLENBQ3hDRSxLQUNBQztJQUVBLE1BQU1DLGlCQUFpQkMsQ0FBQUEsR0FBQUEseUJBQUFBLDhCQUFBQSxFQUNyQkYsT0FBTyxDQUFDRyxrQkFBQUEsMkJBQTJCLENBQUMsRUFDcENILE9BQU8sQ0FBQ0ksa0JBQUFBLG1DQUFtQyxDQUFDLEVBQzVDSixPQUFPLENBQUNLLGtCQUFBQSw2QkFBNkIsQ0FBQyxFQUN0Q0wsT0FBTyxDQUFDTSxrQkFBQUEsUUFBUSxDQUFDO0lBRW5CUixtQ0FBbUNDLEtBQUtFO0FBQzFDO0FBa0JPLE1BQU1ILHFDQUFxQyxDQUNoREMsS0FDQVE7SUFFQTs7Ozs7Ozs7OztHQVVDLEdBQ0QsTUFBTUMsaUJBQWlCVCxJQUFJVSxNQUFNO0lBQ2pDLE1BQU1DLFdBQVdGLGVBQWVHLFVBQVUsQ0FBQyxPQUN2Q0gsZUFBZUksS0FBSyxDQUFDLEtBQ3JCSjtJQUVKLCtFQUErRTtJQUMvRSw2REFBNkQ7SUFDN0QsTUFBTUssUUFBUUgsU0FDWEksS0FBSyxDQUFDLEtBQ05DLE1BQU0sQ0FBQyxDQUFDQyxPQUFTQSxRQUFRLENBQUNBLEtBQUtMLFVBQVUsQ0FBQyxHQUFHTSxrQkFBQUEsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0lBRXZFLElBQUlWLEtBQUtXLE1BQU0sR0FBRyxHQUFHO1FBQ25CTCxNQUFNTSxJQUFJLENBQUMsR0FBR0Ysa0JBQUFBLG9CQUFvQixDQUFDLENBQUMsRUFBRVYsTUFBTTtJQUM5QyxPQUFPO1FBQ0xNLE1BQU1NLElBQUksQ0FBQyxHQUFHRixrQkFBQUEsb0JBQW9CLEVBQUU7SUFDdEM7SUFDQWxCLElBQUlVLE1BQU0sR0FBR0ksTUFBTUssTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFTCxNQUFNTyxJQUFJLENBQUMsTUFBTSxHQUFHO0FBQ3REIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3NldC1jYWNoZS1idXN0aW5nLXNlYXJjaC1wYXJhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuaW1wb3J0IHsgY29tcHV0ZUNhY2hlQnVzdGluZ1NlYXJjaFBhcmFtIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvY2FjaGUtYnVzdGluZy1zZWFyY2gtcGFyYW0nXG5pbXBvcnQge1xuICBORVhUX1JPVVRFUl9QUkVGRVRDSF9IRUFERVIsXG4gIE5FWFRfUk9VVEVSX1NFR01FTlRfUFJFRkVUQ0hfSEVBREVSLFxuICBORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUixcbiAgTkVYVF9VUkwsXG4gIE5FWFRfUlNDX1VOSU9OX1FVRVJZLFxufSBmcm9tICcuLi9hcHAtcm91dGVyLWhlYWRlcnMnXG5pbXBvcnQgdHlwZSB7IFJlcXVlc3RIZWFkZXJzIH0gZnJvbSAnLi9mZXRjaC1zZXJ2ZXItcmVzcG9uc2UnXG5cbi8qKlxuICogTXV0YXRlcyB0aGUgcHJvdmlkZWQgVVJMIGJ5IGFkZGluZyBhIGNhY2hlLWJ1c3Rpbmcgc2VhcmNoIHBhcmFtZXRlciBmb3IgQ0ROcyB0aGF0IGRvbid0XG4gKiBzdXBwb3J0IGN1c3RvbSBoZWFkZXJzLiBUaGlzIGhlbHBzIGF2b2lkIGNhY2hpbmcgY29uZmxpY3RzIGJ5IG1ha2luZyBlYWNoIHJlcXVlc3QgdW5pcXVlLlxuICpcbiAqIFJhdGhlciB0aGFuIHJlbHlpbmcgb24gdGhlIFZhcnkgaGVhZGVyIHdoaWNoIHNvbWUgQ0ROcyBpZ25vcmUsIHdlIGFwcGVuZCBhIHNlYXJjaCBwYXJhbVxuICogdG8gY3JlYXRlIGEgdW5pcXVlIFVSTCB0aGF0IGZvcmNlcyBhIGZyZXNoIHJlcXVlc3QuXG4gKlxuICogRXhhbXBsZTpcbiAqIFVSTCBiZWZvcmU6IGh0dHBzOi8vZXhhbXBsZS5jb20vcGF0aD9xdWVyeT0xXG4gKiBVUkwgYWZ0ZXI6IGh0dHBzOi8vZXhhbXBsZS5jb20vcGF0aD9xdWVyeT0xJl9yc2M9YWJjMTIzXG4gKlxuICogTm90ZTogVGhpcyBmdW5jdGlvbiBtdXRhdGVzIHRoZSBpbnB1dCBVUkwgZGlyZWN0bHkgYW5kIGRvZXMgbm90IHJldHVybiBhbnl0aGluZy5cbiAqXG4gKiBUT0RPOiBTaW5jZSB3ZSBuZWVkIHRvIHVzZSBhIHNlYXJjaCBwYXJhbSBhbnl3YXksIHdlIGNvdWxkIHNpbXBsaWZ5IGJ5IHJlbW92aW5nIHRoZSBjdXN0b21cbiAqIGhlYWRlcnMgYXBwcm9hY2ggZW50aXJlbHkgYW5kIGp1c3QgdXNlIHNlYXJjaCBwYXJhbXMuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbSA9IChcbiAgdXJsOiBVUkwsXG4gIGhlYWRlcnM6IFJlcXVlc3RIZWFkZXJzXG4pOiB2b2lkID0+IHtcbiAgY29uc3QgdW5pcXVlQ2FjaGVLZXkgPSBjb21wdXRlQ2FjaGVCdXN0aW5nU2VhcmNoUGFyYW0oXG4gICAgaGVhZGVyc1tORVhUX1JPVVRFUl9QUkVGRVRDSF9IRUFERVJdLFxuICAgIGhlYWRlcnNbTkVYVF9ST1VURVJfU0VHTUVOVF9QUkVGRVRDSF9IRUFERVJdLFxuICAgIGhlYWRlcnNbTkVYVF9ST1VURVJfU1RBVEVfVFJFRV9IRUFERVJdLFxuICAgIGhlYWRlcnNbTkVYVF9VUkxdXG4gIClcbiAgc2V0Q2FjaGVCdXN0aW5nU2VhcmNoUGFyYW1XaXRoSGFzaCh1cmwsIHVuaXF1ZUNhY2hlS2V5KVxufVxuXG4vKipcbiAqIFNldHMgYSBjYWNoZS1idXN0aW5nIHNlYXJjaCBwYXJhbWV0ZXIgb24gYSBVUkwgdXNpbmcgYSBwcm92aWRlZCBoYXNoIHZhbHVlLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgdGhlIHNhbWUgbG9naWMgYXMgYHNldENhY2hlQnVzdGluZ1NlYXJjaFBhcmFtYCBidXQgYWNjZXB0c1xuICogYSBwcmUtY29tcHV0ZWQgaGFzaCBpbnN0ZWFkIG9mIGNvbXB1dGluZyBpdCBmcm9tIGhlYWRlcnMuXG4gKlxuICogRXhhbXBsZTpcbiAqIFVSTCBiZWZvcmU6IGh0dHBzOi8vZXhhbXBsZS5jb20vcGF0aD9xdWVyeT0xXG4gKiBoYXNoOiBcImFiYzEyM1wiXG4gKiBVUkwgYWZ0ZXI6IGh0dHBzOi8vZXhhbXBsZS5jb20vcGF0aD9xdWVyeT0xJl9yc2M9YWJjMTIzXG4gKlxuICogSWYgdGhlIGhhc2ggaXMgbnVsbCwgd2Ugd2lsbCBzZXQgYF9yc2NgIHNlYXJjaCBwYXJhbSB3aXRob3V0IGEgdmFsdWUuXG4gKiBMaWtlIHRoaXM6IGh0dHBzOi8vZXhhbXBsZS5jb20vcGF0aD9xdWVyeT0xJl9yc2NcbiAqXG4gKiBOb3RlOiBUaGlzIGZ1bmN0aW9uIG11dGF0ZXMgdGhlIGlucHV0IFVSTCBkaXJlY3RseSBhbmQgZG9lcyBub3QgcmV0dXJuIGFueXRoaW5nLlxuICovXG5leHBvcnQgY29uc3Qgc2V0Q2FjaGVCdXN0aW5nU2VhcmNoUGFyYW1XaXRoSGFzaCA9IChcbiAgdXJsOiBVUkwsXG4gIGhhc2g6IHN0cmluZ1xuKTogdm9pZCA9PiB7XG4gIC8qKlxuICAgKiBOb3RlIHRoYXQgd2UgaW50ZW50aW9uYWxseSBkbyBub3QgdXNlIGB1cmwuc2VhcmNoUGFyYW1zLnNldGAgaGVyZTpcbiAgICpcbiAgICogY29uc3QgdXJsID0gbmV3IFVSTCgnaHR0cHM6Ly9leGFtcGxlLmNvbS9zZWFyY2g/cT1jdXN0b20lMjBzcGFjaW5nJyk7XG4gICAqIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdfcnNjJywgJ2FiYzEyMycpO1xuICAgKiBjb25zb2xlLmxvZyh1cmwudG9TdHJpbmcoKSk7IC8vIE91dHB1dHM6IGh0dHBzOi8vZXhhbXBsZS5jb20vc2VhcmNoP3E9Y3VzdG9tK3NwYWNpbmcmX3JzYz1hYmMxMjNcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gPC0tLSB0aGlzIGlzIGNhdXNpbmcgY29uZnVzaW9uXG4gICAqIFRoaXMgaXMgaW4gZmFjdCBpbnRlbmRlZCBiYXNlZCBvbiBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2ludGVyZmFjZS11cmxzZWFyY2hwYXJhbXMsIGJ1dFxuICAgKiB3ZSB3YW50IHRvIHByZXNlcnZlIHRoZSAlMjAgYXMgJTIwIGlmIHRoYXQncyB3aGF0IHRoZSB1c2VyIHBhc3NlZCBpbiwgaGVuY2UgdGhlIGN1c3RvbVxuICAgKiBsb2dpYyBiZWxvdy5cbiAgICovXG4gIGNvbnN0IGV4aXN0aW5nU2VhcmNoID0gdXJsLnNlYXJjaFxuICBjb25zdCByYXdRdWVyeSA9IGV4aXN0aW5nU2VhcmNoLnN0YXJ0c1dpdGgoJz8nKVxuICAgID8gZXhpc3RpbmdTZWFyY2guc2xpY2UoMSlcbiAgICA6IGV4aXN0aW5nU2VhcmNoXG5cbiAgLy8gQWx3YXlzIHJlbW92ZSBhbnkgZXhpc3RpbmcgY2FjaGUgYnVzdGluZyBwYXJhbSBhbmQgYWRkIGEgZnJlc2ggb25lIHRvIGVuc3VyZVxuICAvLyB3ZSBoYXZlIHRoZSBjb3JyZWN0IHZhbHVlIGJhc2VkIG9uIGN1cnJlbnQgcmVxdWVzdCBoZWFkZXJzXG4gIGNvbnN0IHBhaXJzID0gcmF3UXVlcnlcbiAgICAuc3BsaXQoJyYnKVxuICAgIC5maWx0ZXIoKHBhaXIpID0+IHBhaXIgJiYgIXBhaXIuc3RhcnRzV2l0aChgJHtORVhUX1JTQ19VTklPTl9RVUVSWX09YCkpXG5cbiAgaWYgKGhhc2gubGVuZ3RoID4gMCkge1xuICAgIHBhaXJzLnB1c2goYCR7TkVYVF9SU0NfVU5JT05fUVVFUll9PSR7aGFzaH1gKVxuICB9IGVsc2Uge1xuICAgIHBhaXJzLnB1c2goYCR7TkVYVF9SU0NfVU5JT05fUVVFUll9YClcbiAgfVxuICB1cmwuc2VhcmNoID0gcGFpcnMubGVuZ3RoID8gYD8ke3BhaXJzLmpvaW4oJyYnKX1gIDogJydcbn1cbiJdLCJuYW1lcyI6WyJzZXRDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbSIsInNldENhY2hlQnVzdGluZ1NlYXJjaFBhcmFtV2l0aEhhc2giLCJ1cmwiLCJoZWFkZXJzIiwidW5pcXVlQ2FjaGVLZXkiLCJjb21wdXRlQ2FjaGVCdXN0aW5nU2VhcmNoUGFyYW0iLCJORVhUX1JPVVRFUl9QUkVGRVRDSF9IRUFERVIiLCJORVhUX1JPVVRFUl9TRUdNRU5UX1BSRUZFVENIX0hFQURFUiIsIk5FWFRfUk9VVEVSX1NUQVRFX1RSRUVfSEVBREVSIiwiTkVYVF9VUkwiLCJoYXNoIiwiZXhpc3RpbmdTZWFyY2giLCJzZWFyY2giLCJyYXdRdWVyeSIsInN0YXJ0c1dpdGgiLCJzbGljZSIsInBhaXJzIiwic3BsaXQiLCJmaWx0ZXIiLCJwYWlyIiwiTkVYVF9SU0NfVU5JT05fUVVFUlkiLCJsZW5ndGgiLCJwdXNoIiwiam9pbiJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/router-reducer/set-cache-busting-search-param.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/segment-cache/bfcache.js":
|
||
/*!***************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/segment-cache/bfcache.js ***!
|
||
\***************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n UnknownDynamicStaleTime: function() {\n return UnknownDynamicStaleTime;\n },\n computeDynamicStaleAt: function() {\n return computeDynamicStaleAt;\n },\n invalidateBfCache: function() {\n return invalidateBfCache;\n },\n readFromBFCache: function() {\n return readFromBFCache;\n },\n readFromBFCacheDuringRegularNavigation: function() {\n return readFromBFCacheDuringRegularNavigation;\n },\n updateBFCacheEntryStaleAt: function() {\n return updateBFCacheEntryStaleAt;\n },\n writeHeadToBFCache: function() {\n return writeHeadToBFCache;\n },\n writeToBFCache: function() {\n return writeToBFCache;\n }\n});\nconst _navigatereducer = __webpack_require__(/*! ../router-reducer/reducers/navigate-reducer */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js\");\nconst _cachemap = __webpack_require__(/*! ./cache-map */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/cache-map.js\");\nconst UnknownDynamicStaleTime = -1;\nfunction computeDynamicStaleAt(now, dynamicStaleTimeSeconds) {\n return dynamicStaleTimeSeconds !== UnknownDynamicStaleTime ? now + dynamicStaleTimeSeconds * 1000 : now + _navigatereducer.DYNAMIC_STALETIME_MS;\n}\nconst bfcacheMap = (0, _cachemap.createCacheMap)();\nlet currentBfCacheVersion = 0;\nfunction invalidateBfCache() {\n if (true) {\n return;\n }\n currentBfCacheVersion++;\n}\nfunction writeToBFCache(now, varyPath, rsc, prefetchRsc, head, prefetchHead, dynamicStaleAt) {\n if (true) {\n return;\n }\n const entry = {\n rsc,\n prefetchRsc,\n // TODO: These fields will be removed from both BFCacheEntry and\n // SegmentCacheEntry. The head has its own separate cache entry.\n head,\n prefetchHead,\n ref: null,\n // TODO: This is just a heuristic. Getting the actual size of the segment\n // isn't feasible because it's part of a larger streaming response. The\n // LRU will still evict it, we just won't have a fully accurate total\n // LRU size. However, we'll probably remove the size tracking from the LRU\n // entirely and use memory pressure events instead.\n size: 100,\n navigatedAt: now,\n // A back/forward navigation will disregard the stale time. This field is\n // only relevant when staleTimes.dynamic is enabled or unstable_dynamicStaleTime\n // is exported by a page.\n staleAt: dynamicStaleAt,\n version: currentBfCacheVersion\n };\n const isRevalidation = false;\n (0, _cachemap.setInCacheMap)(bfcacheMap, varyPath, entry, isRevalidation);\n}\nfunction writeHeadToBFCache(now, varyPath, head, prefetchHead, dynamicStaleAt) {\n // Read the special \"segment\" that represents the head data.\n writeToBFCache(now, varyPath, head, prefetchHead, null, null, dynamicStaleAt);\n}\nfunction updateBFCacheEntryStaleAt(varyPath, newStaleAt) {\n if (true) {\n return;\n }\n const isRevalidation = false;\n // Read with staleness bypass (-1) so we can update even stale entries\n const entry = (0, _cachemap.getFromCacheMap)(-1, currentBfCacheVersion, bfcacheMap, varyPath, isRevalidation);\n if (entry !== null) {\n entry.staleAt = newStaleAt;\n }\n}\nfunction readFromBFCache(varyPath) {\n if (true) {\n return null;\n }\n const isRevalidation = false;\n return (0, _cachemap.getFromCacheMap)(// might be. Pass -1 instead of the actual current time to bypass\n // staleness checks.\n -1, currentBfCacheVersion, bfcacheMap, varyPath, isRevalidation);\n}\nfunction readFromBFCacheDuringRegularNavigation(now, varyPath) {\n if (true) {\n return null;\n }\n const isRevalidation = false;\n return (0, _cachemap.getFromCacheMap)(now, currentBfCacheVersion, bfcacheMap, varyPath, isRevalidation);\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=bfcache.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3NlZ21lbnQtY2FjaGUvYmZjYWNoZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFPYUEsdUJBQXVCO2VBQXZCQTs7SUFPR0MscUJBQXFCO2VBQXJCQTs7SUFzQ0FDLGlCQUFpQjtlQUFqQkE7O0lBdUZBQyxlQUFlO2VBQWZBOztJQW1CQUMsc0NBQXNDO2VBQXRDQTs7SUF4Q0FDLHlCQUF5QjtlQUF6QkE7O0lBakJBQyxrQkFBa0I7ZUFBbEJBOztJQTFDQUMsY0FBYztlQUFkQTs7OzZDQTNEcUI7c0NBNEI5QjtBQXJCQSxNQUFNUCwwQkFBMEIsQ0FBQztBQU9qQyxTQUFTQyxzQkFDZE8sR0FBVyxFQUNYQyx1QkFBK0I7SUFFL0IsT0FBT0EsNEJBQTRCVCwwQkFDL0JRLE1BQU1DLDBCQUEwQixPQUNoQ0QsTUFBTUUsaUJBQUFBLG9CQUFvQjtBQUNoQztBQTJCQSxNQUFNQyxhQUFxQ0MsQ0FBQUEsR0FBQUEsVUFBQUEsY0FBQUE7QUFFM0MsSUFBSUMsd0JBQXdCO0FBRXJCLFNBQVNYO0lBQ2QsSUFBSSxJQUE2QixFQUFFO1FBQ2pDO0lBQ0Y7SUFDQVc7QUFDRjtBQUVPLFNBQVNOLGVBQ2RDLEdBQVcsRUFDWE8sUUFBeUIsRUFDekJDLEdBQW9CLEVBQ3BCQyxXQUE0QixFQUM1QkMsSUFBcUIsRUFDckJDLFlBQTZCLEVBQzdCQyxjQUFzQjtJQUV0QixJQUFJLElBQTZCLEVBQUU7UUFDakM7SUFDRjtJQUVBLE1BQU1DLFFBQXNCO1FBQzFCTDtRQUNBQztRQUVBLGdFQUFnRTtRQUNoRSxnRUFBZ0U7UUFDaEVDO1FBQ0FDO1FBRUFHLEtBQUs7UUFDTCx5RUFBeUU7UUFDekUsdUVBQXVFO1FBQ3ZFLHFFQUFxRTtRQUNyRSwwRUFBMEU7UUFDMUUsbURBQW1EO1FBQ25EQyxNQUFNO1FBRU5DLGFBQWFoQjtRQUViLHlFQUF5RTtRQUN6RSxnRkFBZ0Y7UUFDaEYseUJBQXlCO1FBQ3pCaUIsU0FBU0w7UUFDVE0sU0FBU2I7SUFDWDtJQUNBLE1BQU1jLGlCQUFpQjtJQUN2QkMsQ0FBQUEsR0FBQUEsVUFBQUEsYUFBQUEsRUFBY2pCLFlBQVlJLFVBQVVNLE9BQU9NO0FBQzdDO0FBRU8sU0FBU3JCLG1CQUNkRSxHQUFXLEVBQ1hPLFFBQXlCLEVBQ3pCRyxJQUFxQixFQUNyQkMsWUFBNkIsRUFDN0JDLGNBQXNCO0lBRXRCLDREQUE0RDtJQUM1RGIsZUFBZUMsS0FBS08sVUFBVUcsTUFBTUMsY0FBYyxNQUFNLE1BQU1DO0FBQ2hFO0FBUU8sU0FBU2YsMEJBQ2RVLFFBQXlCLEVBQ3pCYyxVQUFrQjtJQUVsQixJQUFJLElBQTZCLEVBQUU7UUFDakM7SUFDRjtJQUNBLE1BQU1GLGlCQUFpQjtJQUN2QixzRUFBc0U7SUFDdEUsTUFBTU4sUUFBUVMsQ0FBQUEsR0FBQUEsVUFBQUEsZUFBQUEsRUFDWixDQUFDLEdBQ0RqQix1QkFDQUYsWUFDQUksVUFDQVk7SUFFRixJQUFJTixVQUFVLE1BQU07UUFDbEJBLE1BQU1JLE9BQU8sR0FBR0k7SUFDbEI7QUFDRjtBQUVPLFNBQVMxQixnQkFDZFksUUFBeUI7SUFFekIsSUFBSSxJQUE2QixFQUFFO1FBQ2pDLE9BQU87SUFDVDtJQUNBLE1BQU1ZLGlCQUFpQjtJQUN2QixPQUFPRyxDQUFBQSxHQUFBQSxVQUFBQSxlQUFBQSxFQUNMLGlFQUNpRTtJQUNqRSxvQkFBb0I7SUFDcEIsQ0FBQyxHQUNEakIsdUJBQ0FGLFlBQ0FJLFVBQ0FZO0FBRUo7QUFFTyxTQUFTdkIsdUNBQ2RJLEdBQVcsRUFDWE8sUUFBeUI7SUFFekIsSUFBSSxJQUE2QixFQUFFO1FBQ2pDLE9BQU87SUFDVDtJQUNBLE1BQU1ZLGlCQUFpQjtJQUN2QixPQUFPRyxDQUFBQSxHQUFBQSxVQUFBQSxlQUFBQSxFQUNMdEIsS0FDQUssdUJBQ0FGLFlBQ0FJLFVBQ0FZO0FBRUoiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvY2xpZW50L2NvbXBvbmVudHMvc2VnbWVudC1jYWNoZS9iZmNhY2hlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERZTkFNSUNfU1RBTEVUSU1FX01TIH0gZnJvbSAnLi4vcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvbmF2aWdhdGUtcmVkdWNlcidcbmltcG9ydCB0eXBlIHsgU2VnbWVudFZhcnlQYXRoIH0gZnJvbSAnLi92YXJ5LXBhdGgnXG5cbi8qKlxuICogU2VudGluZWwgdmFsdWUgaW5kaWNhdGluZyB0aGF0IG5vIHBlci1wYWdlIGR5bmFtaWMgc3RhbGUgdGltZSB3YXMgcHJvdmlkZWQuXG4gKiBXaGVuIHRoaXMgaXMgdGhlIGR5bmFtaWNTdGFsZVRpbWUsIHRoZSBkZWZhdWx0IERZTkFNSUNfU1RBTEVUSU1FX01TIGlzIHVzZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBVbmtub3duRHluYW1pY1N0YWxlVGltZSA9IC0xXG5cbi8qKlxuICogQ29udmVydHMgYSBkeW5hbWljIHN0YWxlIHRpbWUgKGluIHNlY29uZHMsIGFzIHNlbnQgYnkgdGhlIHNlcnZlciBpbiB0aGUgYGRgXG4gKiBmaWVsZCBvZiB0aGUgRmxpZ2h0IHJlc3BvbnNlKSB0byBhbiBhYnNvbHV0ZSBzdGFsZUF0IHRpbWVzdGFtcC4gV2hlbiB0aGVcbiAqIHZhbHVlIGlzIHVua25vd24sIGZhbGxzIGJhY2sgdG8gdGhlIGdsb2JhbCBEWU5BTUlDX1NUQUxFVElNRV9NUy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVEeW5hbWljU3RhbGVBdChcbiAgbm93OiBudW1iZXIsXG4gIGR5bmFtaWNTdGFsZVRpbWVTZWNvbmRzOiBudW1iZXJcbik6IG51bWJlciB7XG4gIHJldHVybiBkeW5hbWljU3RhbGVUaW1lU2Vjb25kcyAhPT0gVW5rbm93bkR5bmFtaWNTdGFsZVRpbWVcbiAgICA/IG5vdyArIGR5bmFtaWNTdGFsZVRpbWVTZWNvbmRzICogMTAwMFxuICAgIDogbm93ICsgRFlOQU1JQ19TVEFMRVRJTUVfTVNcbn1cbmltcG9ydCB7XG4gIHNldEluQ2FjaGVNYXAsXG4gIGdldEZyb21DYWNoZU1hcCxcbiAgdHlwZSBVbmtub3duTWFwRW50cnksXG4gIHR5cGUgQ2FjaGVNYXAsXG4gIGNyZWF0ZUNhY2hlTWFwLFxufSBmcm9tICcuL2NhY2hlLW1hcCdcblxuZXhwb3J0IHR5cGUgQkZDYWNoZUVudHJ5ID0ge1xuICByc2M6IFJlYWN0LlJlYWN0Tm9kZSB8IG51bGxcbiAgcHJlZmV0Y2hSc2M6IFJlYWN0LlJlYWN0Tm9kZSB8IG51bGxcbiAgaGVhZDogUmVhY3QuUmVhY3ROb2RlIHwgbnVsbFxuICBwcmVmZXRjaEhlYWQ6IFJlYWN0LlJlYWN0Tm9kZSB8IG51bGxcblxuICByZWY6IFVua25vd25NYXBFbnRyeSB8IG51bGxcbiAgc2l6ZTogbnVtYmVyXG4gIC8vIFRoZSB0aW1lIGF0IHdoaWNoIHRoaXMgZGF0YSB3YXMgcmVjZWl2ZWQuIFVzZWQgdG8gY29tcHV0ZSB0aGUgc3RhbGUgdGltZVxuICAvLyBmb3IgZHluYW1pYyBwcmVmZXRjaGVzICh3aGljaCB1c2UgU1RBVElDX1NUQUxFVElNRV9NUyBpbnN0ZWFkIG9mXG4gIC8vIERZTkFNSUNfU1RBTEVUSU1FX01TKS4gU3RvcmVkIGV4cGxpY2l0bHkgYmVjYXVzZSBzdGFsZUF0IG1heSBiZVxuICAvLyBvdmVycmlkZGVuIGJ5IGEgcGVyLXBhZ2UgdW5zdGFibGVfZHluYW1pY1N0YWxlVGltZSwgd2hpY2ggd291bGQgYnJlYWtcbiAgLy8gYW55IHJldmVyc2UgY2FsY3VsYXRpb24gZnJvbSBzdGFsZUF0LlxuICBuYXZpZ2F0ZWRBdDogbnVtYmVyXG4gIHN0YWxlQXQ6IG51bWJlclxuICB2ZXJzaW9uOiBudW1iZXJcbn1cblxuY29uc3QgYmZjYWNoZU1hcDogQ2FjaGVNYXA8QkZDYWNoZUVudHJ5PiA9IGNyZWF0ZUNhY2hlTWFwKClcblxubGV0IGN1cnJlbnRCZkNhY2hlVmVyc2lvbiA9IDBcblxuZXhwb3J0IGZ1bmN0aW9uIGludmFsaWRhdGVCZkNhY2hlKCk6IHZvaWQge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm5cbiAgfVxuICBjdXJyZW50QmZDYWNoZVZlcnNpb24rK1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVUb0JGQ2FjaGUoXG4gIG5vdzogbnVtYmVyLFxuICB2YXJ5UGF0aDogU2VnbWVudFZhcnlQYXRoLFxuICByc2M6IFJlYWN0LlJlYWN0Tm9kZSxcbiAgcHJlZmV0Y2hSc2M6IFJlYWN0LlJlYWN0Tm9kZSxcbiAgaGVhZDogUmVhY3QuUmVhY3ROb2RlLFxuICBwcmVmZXRjaEhlYWQ6IFJlYWN0LlJlYWN0Tm9kZSxcbiAgZHluYW1pY1N0YWxlQXQ6IG51bWJlclxuKTogdm9pZCB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgZW50cnk6IEJGQ2FjaGVFbnRyeSA9IHtcbiAgICByc2MsXG4gICAgcHJlZmV0Y2hSc2MsXG5cbiAgICAvLyBUT0RPOiBUaGVzZSBmaWVsZHMgd2lsbCBiZSByZW1vdmVkIGZyb20gYm90aCBCRkNhY2hlRW50cnkgYW5kXG4gICAgLy8gU2VnbWVudENhY2hlRW50cnkuIFRoZSBoZWFkIGhhcyBpdHMgb3duIHNlcGFyYXRlIGNhY2hlIGVudHJ5LlxuICAgIGhlYWQsXG4gICAgcHJlZmV0Y2hIZWFkLFxuXG4gICAgcmVmOiBudWxsLFxuICAgIC8vIFRPRE86IFRoaXMgaXMganVzdCBhIGhldXJpc3RpYy4gR2V0dGluZyB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIHNlZ21lbnRcbiAgICAvLyBpc24ndCBmZWFzaWJsZSBiZWNhdXNlIGl0J3MgcGFydCBvZiBhIGxhcmdlciBzdHJlYW1pbmcgcmVzcG9uc2UuIFRoZVxuICAgIC8vIExSVSB3aWxsIHN0aWxsIGV2aWN0IGl0LCB3ZSBqdXN0IHdvbid0IGhhdmUgYSBmdWxseSBhY2N1cmF0ZSB0b3RhbFxuICAgIC8vIExSVSBzaXplLiBIb3dldmVyLCB3ZSdsbCBwcm9iYWJseSByZW1vdmUgdGhlIHNpemUgdHJhY2tpbmcgZnJvbSB0aGUgTFJVXG4gICAgLy8gZW50aXJlbHkgYW5kIHVzZSBtZW1vcnkgcHJlc3N1cmUgZXZlbnRzIGluc3RlYWQuXG4gICAgc2l6ZTogMTAwLFxuXG4gICAgbmF2aWdhdGVkQXQ6IG5vdyxcblxuICAgIC8vIEEgYmFjay9mb3J3YXJkIG5hdmlnYXRpb24gd2lsbCBkaXNyZWdhcmQgdGhlIHN0YWxlIHRpbWUuIFRoaXMgZmllbGQgaXNcbiAgICAvLyBvbmx5IHJlbGV2YW50IHdoZW4gc3RhbGVUaW1lcy5keW5hbWljIGlzIGVuYWJsZWQgb3IgdW5zdGFibGVfZHluYW1pY1N0YWxlVGltZVxuICAgIC8vIGlzIGV4cG9ydGVkIGJ5IGEgcGFnZS5cbiAgICBzdGFsZUF0OiBkeW5hbWljU3RhbGVBdCxcbiAgICB2ZXJzaW9uOiBjdXJyZW50QmZDYWNoZVZlcnNpb24sXG4gIH1cbiAgY29uc3QgaXNSZXZhbGlkYXRpb24gPSBmYWxzZVxuICBzZXRJbkNhY2hlTWFwKGJmY2FjaGVNYXAsIHZhcnlQYXRoLCBlbnRyeSwgaXNSZXZhbGlkYXRpb24pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUhlYWRUb0JGQ2FjaGUoXG4gIG5vdzogbnVtYmVyLFxuICB2YXJ5UGF0aDogU2VnbWVudFZhcnlQYXRoLFxuICBoZWFkOiBSZWFjdC5SZWFjdE5vZGUsXG4gIHByZWZldGNoSGVhZDogUmVhY3QuUmVhY3ROb2RlLFxuICBkeW5hbWljU3RhbGVBdDogbnVtYmVyXG4pOiB2b2lkIHtcbiAgLy8gUmVhZCB0aGUgc3BlY2lhbCBcInNlZ21lbnRcIiB0aGF0IHJlcHJlc2VudHMgdGhlIGhlYWQgZGF0YS5cbiAgd3JpdGVUb0JGQ2FjaGUobm93LCB2YXJ5UGF0aCwgaGVhZCwgcHJlZmV0Y2hIZWFkLCBudWxsLCBudWxsLCBkeW5hbWljU3RhbGVBdClcbn1cblxuLyoqXG4gKiBVcGRhdGUgdGhlIHN0YWxlQXQgb2YgYW4gZXhpc3RpbmcgQkZDYWNoZSBlbnRyeS4gVXNlZCBhZnRlciBhIGR5bmFtaWNcbiAqIHJlc3BvbnNlIGFycml2ZXMgd2l0aCBhIHBlci1wYWdlIHN0YWxlIHRpbWUgZnJvbSBgdW5zdGFibGVfZHluYW1pY1N0YWxlVGltZWAuXG4gKiBUaGUgcGVyLXBhZ2UgdmFsdWUgaXMgYXV0aG9yaXRhdGl2ZSDigJQgaXQgb3ZlcnJpZGVzIHdoYXRldmVyIHN0YWxlQXQgd2FzIHNldFxuICogYnkgdGhlIGRlZmF1bHQgRFlOQU1JQ19TVEFMRVRJTUVfTVMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVCRkNhY2hlRW50cnlTdGFsZUF0KFxuICB2YXJ5UGF0aDogU2VnbWVudFZhcnlQYXRoLFxuICBuZXdTdGFsZUF0OiBudW1iZXJcbik6IHZvaWQge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm5cbiAgfVxuICBjb25zdCBpc1JldmFsaWRhdGlvbiA9IGZhbHNlXG4gIC8vIFJlYWQgd2l0aCBzdGFsZW5lc3MgYnlwYXNzICgtMSkgc28gd2UgY2FuIHVwZGF0ZSBldmVuIHN0YWxlIGVudHJpZXNcbiAgY29uc3QgZW50cnkgPSBnZXRGcm9tQ2FjaGVNYXAoXG4gICAgLTEsXG4gICAgY3VycmVudEJmQ2FjaGVWZXJzaW9uLFxuICAgIGJmY2FjaGVNYXAsXG4gICAgdmFyeVBhdGgsXG4gICAgaXNSZXZhbGlkYXRpb25cbiAgKVxuICBpZiAoZW50cnkgIT09IG51bGwpIHtcbiAgICBlbnRyeS5zdGFsZUF0ID0gbmV3U3RhbGVBdFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkRnJvbUJGQ2FjaGUoXG4gIHZhcnlQYXRoOiBTZWdtZW50VmFyeVBhdGhcbik6IEJGQ2FjaGVFbnRyeSB8IG51bGwge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGlzUmV2YWxpZGF0aW9uID0gZmFsc2VcbiAgcmV0dXJuIGdldEZyb21DYWNoZU1hcChcbiAgICAvLyBEdXJpbmcgYSBiYWNrL2ZvcndhcmQgbmF2aWdhdGlvbiwgaXQgZG9lc24ndCBtYXR0ZXIgaG93IHN0YWxlIHRoZSBkYXRhXG4gICAgLy8gbWlnaHQgYmUuIFBhc3MgLTEgaW5zdGVhZCBvZiB0aGUgYWN0dWFsIGN1cnJlbnQgdGltZSB0byBieXBhc3NcbiAgICAvLyBzdGFsZW5lc3MgY2hlY2tzLlxuICAgIC0xLFxuICAgIGN1cnJlbnRCZkNhY2hlVmVyc2lvbixcbiAgICBiZmNhY2hlTWFwLFxuICAgIHZhcnlQYXRoLFxuICAgIGlzUmV2YWxpZGF0aW9uXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRGcm9tQkZDYWNoZUR1cmluZ1JlZ3VsYXJOYXZpZ2F0aW9uKFxuICBub3c6IG51bWJlcixcbiAgdmFyeVBhdGg6IFNlZ21lbnRWYXJ5UGF0aFxuKTogQkZDYWNoZUVudHJ5IHwgbnVsbCB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgaXNSZXZhbGlkYXRpb24gPSBmYWxzZVxuICByZXR1cm4gZ2V0RnJvbUNhY2hlTWFwKFxuICAgIG5vdyxcbiAgICBjdXJyZW50QmZDYWNoZVZlcnNpb24sXG4gICAgYmZjYWNoZU1hcCxcbiAgICB2YXJ5UGF0aCxcbiAgICBpc1JldmFsaWRhdGlvblxuICApXG59XG4iXSwibmFtZXMiOlsiVW5rbm93bkR5bmFtaWNTdGFsZVRpbWUiLCJjb21wdXRlRHluYW1pY1N0YWxlQXQiLCJpbnZhbGlkYXRlQmZDYWNoZSIsInJlYWRGcm9tQkZDYWNoZSIsInJlYWRGcm9tQkZDYWNoZUR1cmluZ1JlZ3VsYXJOYXZpZ2F0aW9uIiwidXBkYXRlQkZDYWNoZUVudHJ5U3RhbGVBdCIsIndyaXRlSGVhZFRvQkZDYWNoZSIsIndyaXRlVG9CRkNhY2hlIiwibm93IiwiZHluYW1pY1N0YWxlVGltZVNlY29uZHMiLCJEWU5BTUlDX1NUQUxFVElNRV9NUyIsImJmY2FjaGVNYXAiLCJjcmVhdGVDYWNoZU1hcCIsImN1cnJlbnRCZkNhY2hlVmVyc2lvbiIsIndpbmRvdyIsInZhcnlQYXRoIiwicnNjIiwicHJlZmV0Y2hSc2MiLCJoZWFkIiwicHJlZmV0Y2hIZWFkIiwiZHluYW1pY1N0YWxlQXQiLCJlbnRyeSIsInJlZiIsInNpemUiLCJuYXZpZ2F0ZWRBdCIsInN0YWxlQXQiLCJ2ZXJzaW9uIiwiaXNSZXZhbGlkYXRpb24iLCJzZXRJbkNhY2hlTWFwIiwibmV3U3RhbGVBdCIsImdldEZyb21DYWNoZU1hcCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/segment-cache/bfcache.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/segment-cache/cache-key.js":
|
||
/*!*****************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/segment-cache/cache-key.js ***!
|
||
\*****************************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("// TypeScript trick to simulate opaque types, like in Flow.\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createCacheKey\", ({\n enumerable: true,\n get: function() {\n return createCacheKey;\n }\n}));\nfunction createCacheKey(originalHref, nextUrl) {\n const originalUrl = new URL(originalHref);\n const cacheKey = {\n pathname: originalUrl.pathname,\n search: originalUrl.search,\n nextUrl: nextUrl\n };\n return cacheKey;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=cache-key.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3NlZ21lbnQtY2FjaGUvY2FjaGUta2V5LmpzIiwibWFwcGluZ3MiOiJBQUFBLDJEQUEyRDs7Ozs7a0RBbUIzQ0E7OztlQUFBQTs7O0FBQVQsU0FBU0EsZUFDZEMsWUFBb0IsRUFDcEJDLE9BQXNCO0lBRXRCLE1BQU1DLGNBQWMsSUFBSUMsSUFBSUg7SUFDNUIsTUFBTUksV0FBVztRQUNmQyxVQUFVSCxZQUFZRyxRQUFRO1FBQzlCQyxRQUFRSixZQUFZSSxNQUFNO1FBQzFCTCxTQUFTQTtJQUNYO0lBQ0EsT0FBT0c7QUFDVCIsInNvdXJjZXMiOlsiL1VzZXJzL3NyYy9jbGllbnQvY29tcG9uZW50cy9zZWdtZW50LWNhY2hlL2NhY2hlLWtleS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUeXBlU2NyaXB0IHRyaWNrIHRvIHNpbXVsYXRlIG9wYXF1ZSB0eXBlcywgbGlrZSBpbiBGbG93LlxudHlwZSBPcGFxdWU8SywgVD4gPSBUICYgeyBfX2JyYW5kOiBLIH1cblxuLy8gT25seSBmdW5jdGlvbnMgaW4gdGhpcyBtb2R1bGUgc2hvdWxkIGJlIGFsbG93ZWQgdG8gY3JlYXRlIENhY2hlS2V5cy5cbmV4cG9ydCB0eXBlIE5vcm1hbGl6ZWRQYXRobmFtZSA9IE9wYXF1ZTwnTm9ybWFsaXplZFBhdGhuYW1lJywgc3RyaW5nPlxuZXhwb3J0IHR5cGUgTm9ybWFsaXplZFNlYXJjaCA9IE9wYXF1ZTwnTm9ybWFsaXplZFNlYXJjaCcsIHN0cmluZz5cbmV4cG9ydCB0eXBlIE5vcm1hbGl6ZWROZXh0VXJsID0gT3BhcXVlPCdOb3JtYWxpemVkTmV4dFVybCcsIHN0cmluZz5cblxuZXhwb3J0IHR5cGUgUm91dGVDYWNoZUtleSA9IE9wYXF1ZTxcbiAgJ1JvdXRlQ2FjaGVLZXknLFxuICB7XG4gICAgcGF0aG5hbWU6IE5vcm1hbGl6ZWRQYXRobmFtZVxuICAgIHNlYXJjaDogTm9ybWFsaXplZFNlYXJjaFxuICAgIG5leHRVcmw6IE5vcm1hbGl6ZWROZXh0VXJsIHwgbnVsbFxuXG4gICAgLy8gVE9ETzogRXZlbnR1YWxseSB0aGUgZHluYW1pYyBwYXJhbXMgd2lsbCBiZSBhZGRlZCBoZXJlLCB0b28uXG4gIH1cbj5cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNhY2hlS2V5KFxuICBvcmlnaW5hbEhyZWY6IHN0cmluZyxcbiAgbmV4dFVybDogc3RyaW5nIHwgbnVsbFxuKTogUm91dGVDYWNoZUtleSB7XG4gIGNvbnN0IG9yaWdpbmFsVXJsID0gbmV3IFVSTChvcmlnaW5hbEhyZWYpXG4gIGNvbnN0IGNhY2hlS2V5ID0ge1xuICAgIHBhdGhuYW1lOiBvcmlnaW5hbFVybC5wYXRobmFtZSBhcyBOb3JtYWxpemVkUGF0aG5hbWUsXG4gICAgc2VhcmNoOiBvcmlnaW5hbFVybC5zZWFyY2ggYXMgTm9ybWFsaXplZFNlYXJjaCxcbiAgICBuZXh0VXJsOiBuZXh0VXJsIGFzIE5vcm1hbGl6ZWROZXh0VXJsIHwgbnVsbCxcbiAgfSBhcyBSb3V0ZUNhY2hlS2V5XG4gIHJldHVybiBjYWNoZUtleVxufVxuIl0sIm5hbWVzIjpbImNyZWF0ZUNhY2hlS2V5Iiwib3JpZ2luYWxIcmVmIiwibmV4dFVybCIsIm9yaWdpbmFsVXJsIiwiVVJMIiwiY2FjaGVLZXkiLCJwYXRobmFtZSIsInNlYXJjaCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/segment-cache/cache-key.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/segment-cache/cache-map.js":
|
||
/*!*****************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/segment-cache/cache-map.js ***!
|
||
\*****************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n Fallback: function() {\n return Fallback;\n },\n createCacheMap: function() {\n return createCacheMap;\n },\n deleteFromCacheMap: function() {\n return deleteFromCacheMap;\n },\n deleteMapEntry: function() {\n return deleteMapEntry;\n },\n getFromCacheMap: function() {\n return getFromCacheMap;\n },\n isValueExpired: function() {\n return isValueExpired;\n },\n setInCacheMap: function() {\n return setInCacheMap;\n },\n setSizeInCacheMap: function() {\n return setSizeInCacheMap;\n }\n});\nconst _lru = __webpack_require__(/*! ./lru */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/lru.js\");\nconst Fallback = {};\n// This is a special internal key that is used for \"revalidation\" entries. It's\n// an implementation detail that shouldn't leak outside of this module.\nconst Revalidation = {};\nfunction createCacheMap() {\n const cacheMap = {\n parent: null,\n key: null,\n value: null,\n map: null,\n // LRU-related fields\n prev: null,\n next: null,\n size: 0\n };\n return cacheMap;\n}\nfunction getOrInitialize(cacheMap, keys, isRevalidation) {\n // Go through each level of keys until we find the entry that matches, or\n // create a new entry if one doesn't exist.\n //\n // This function will only return entries that match the keypath _exactly_.\n // Unlike getWithFallback, it will not access fallback entries unless it's\n // explicitly part of the keypath.\n let entry = cacheMap;\n let remainingKeys = keys;\n let key = null;\n while(true){\n const previousKey = key;\n if (remainingKeys !== null) {\n key = remainingKeys.value;\n remainingKeys = remainingKeys.parent;\n } else if (isRevalidation && previousKey !== Revalidation) {\n // During a revalidation, we append an internal \"Revalidation\" key to\n // the end of the keypath. The \"normal\" entry is its parent.\n // However, if the parent entry is currently empty, we don't need to store\n // this as a revalidation entry. Just insert the revalidation into the\n // normal slot.\n if (entry.value === null) {\n return entry;\n }\n // Otheriwse, create a child entry.\n key = Revalidation;\n } else {\n break;\n }\n let map = entry.map;\n if (map !== null) {\n const existingEntry = map.get(key);\n if (existingEntry !== undefined) {\n // Found a match. Keep going.\n entry = existingEntry;\n continue;\n }\n } else {\n map = new Map();\n entry.map = map;\n }\n // No entry exists yet at this level. Create a new one.\n const newEntry = {\n parent: entry,\n key,\n value: null,\n map: null,\n // LRU-related fields\n prev: null,\n next: null,\n size: 0\n };\n map.set(key, newEntry);\n entry = newEntry;\n }\n return entry;\n}\nfunction getFromCacheMap(now, currentCacheVersion, rootEntry, keys, isRevalidation) {\n const entry = getEntryWithFallbackImpl(now, currentCacheVersion, rootEntry, keys, isRevalidation, 0);\n if (entry === null || entry.value === null) {\n return null;\n }\n // This is an LRU access. Move the entry to the front of the list.\n (0, _lru.lruPut)(entry);\n return entry.value;\n}\nfunction isValueExpired(now, currentCacheVersion, value) {\n return value.staleAt <= now || value.version < currentCacheVersion;\n}\nfunction lazilyEvictIfNeeded(now, currentCacheVersion, entry) {\n // We have a matching entry, but before we can return it, we need to check if\n // it's still fresh. Otherwise it should be treated the same as a cache miss.\n if (entry.value === null) {\n // This entry has no value, so there's nothing to evict.\n return entry;\n }\n const value = entry.value;\n if (isValueExpired(now, currentCacheVersion, value)) {\n // The value expired. Lazily evict it from the cache, and return null. This\n // is conceptually the same as a cache miss.\n deleteMapEntry(entry);\n return null;\n }\n // The matched entry has not expired. Return it.\n return entry;\n}\nfunction getEntryWithFallbackImpl(now, currentCacheVersion, entry, keys, isRevalidation, previousKey) {\n // This is similar to getExactEntry, but if an exact match is not found for\n // a key, it will return the fallback entry instead. This is recursive at\n // every level, e.g. an entry with keypath [a, Fallback, c, Fallback] is\n // valid match for [a, b, c, d].\n //\n // It will return the most specific match available.\n let key;\n let remainingKeys;\n if (keys !== null) {\n key = keys.value;\n remainingKeys = keys.parent;\n } else if (isRevalidation && previousKey !== Revalidation) {\n // During a revalidation, we append an internal \"Revalidation\" key to\n // the end of the keypath.\n key = Revalidation;\n remainingKeys = null;\n } else {\n // There are no more keys. This is the terminal entry.\n // TODO: When performing a lookup during a navigation, as opposed to a\n // prefetch, we may want to skip entries that are Pending if there's also\n // a Fulfilled fallback entry. Tricky to say, though, since if it's\n // already pending, it's likely to stream in soon. Maybe we could do this\n // just on slow connections and offline mode.\n return lazilyEvictIfNeeded(now, currentCacheVersion, entry);\n }\n const map = entry.map;\n if (map !== null) {\n const existingEntry = map.get(key);\n if (existingEntry !== undefined) {\n // Found an exact match for this key. Keep searching.\n const result = getEntryWithFallbackImpl(now, currentCacheVersion, existingEntry, remainingKeys, isRevalidation, key);\n if (result !== null) {\n return result;\n }\n }\n // No match found for this key. Check if there's a fallback.\n const fallbackEntry = map.get(Fallback);\n if (fallbackEntry !== undefined) {\n // Found a fallback for this key. Keep searching.\n return getEntryWithFallbackImpl(now, currentCacheVersion, fallbackEntry, remainingKeys, isRevalidation, key);\n }\n }\n return null;\n}\nfunction setInCacheMap(cacheMap, keys, value, isRevalidation) {\n // Add a value to the map at the given keypath. If the value is already\n // part of the map, it's removed from its previous keypath. (NOTE: This is\n // unlike a regular JS map, but the behavior is intentional.)\n const entry = getOrInitialize(cacheMap, keys, isRevalidation);\n setMapEntryValue(entry, value);\n // This is an LRU access. Move the entry to the front of the list.\n (0, _lru.lruPut)(entry);\n (0, _lru.updateLruSize)(entry, value.size);\n}\nfunction setMapEntryValue(entry, value) {\n if (entry.value !== null) {\n // There's already a value at the given keypath. Disconnect the old value\n // from the map. We're not calling `deleteMapEntry` here because the\n // entry itself is still in the map. We just want to overwrite its value.\n dropRef(entry.value);\n entry.value = null;\n }\n // This value may already be in the map at a different keypath.\n // Grab a reference before we overwrite it.\n const oldEntry = value.ref;\n entry.value = value;\n value.ref = entry;\n (0, _lru.updateLruSize)(entry, value.size);\n if (oldEntry !== null && oldEntry !== entry && oldEntry.value === value) {\n // This value is already in the map at a different keypath in the map.\n // Values only exist at a single keypath at a time. Remove it from the\n // previous keypath.\n //\n // Note that only the internal map entry is garbage collected; we don't\n // call `dropRef` here because it's still in the map, just\n // at a new keypath (the one we just set, above).\n deleteMapEntry(oldEntry);\n }\n}\nfunction deleteFromCacheMap(value) {\n const entry = value.ref;\n if (entry === null) {\n // This value is not a member of any map.\n return;\n }\n dropRef(value);\n deleteMapEntry(entry);\n}\nfunction dropRef(value) {\n // Drop the value from the map by setting its `ref` backpointer to\n // null. This is a separate operation from `deleteMapEntry` because when\n // re-keying a value we need to be able to delete the old, internal map\n // entry without garbage collecting the value itself.\n value.ref = null;\n}\nfunction deleteMapEntry(entry) {\n // Delete the entry from the cache.\n entry.value = null;\n (0, _lru.deleteFromLru)(entry);\n // Check if we can garbage collect the entry.\n const map = entry.map;\n if (map === null) {\n // Since this entry has no value, and also no child entries, we can\n // garbage collect it. Remove it from its parent, and keep garbage\n // collecting the parents until we reach a non-empty entry.\n let parent = entry.parent;\n let key = entry.key;\n while(parent !== null){\n const parentMap = parent.map;\n if (parentMap !== null) {\n parentMap.delete(key);\n if (parentMap.size === 0) {\n // We just removed the last entry in the parent map.\n parent.map = null;\n if (parent.value === null) {\n // The parent node has no child entries, nor does it have a value\n // on itself. It can be garbage collected. Keep going.\n key = parent.key;\n parent = parent.parent;\n continue;\n }\n }\n }\n break;\n }\n } else {\n // Check if there's a revalidating entry. If so, promote it to a\n // \"normal\" entry, since the normal one was just deleted.\n const revalidatingEntry = map.get(Revalidation);\n if (revalidatingEntry !== undefined && revalidatingEntry.value !== null) {\n setMapEntryValue(entry, revalidatingEntry.value);\n }\n }\n}\nfunction setSizeInCacheMap(value, size) {\n const entry = value.ref;\n if (entry === null) {\n // This value is not a member of any map.\n return;\n }\n // Except during initialization (when the size is set to 0), this is the only\n // place the `size` field should be updated, to ensure it's in sync with the\n // the LRU.\n value.size = size;\n (0, _lru.updateLruSize)(entry, size);\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=cache-map.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3NlZ21lbnQtY2FjaGUvY2FjaGUtbWFwLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQTJIYUEsUUFBUTtlQUFSQTs7SUFNR0MsY0FBYztlQUFkQTs7SUErUEFDLGtCQUFrQjtlQUFsQkE7O0lBbUJBQyxjQUFjO2VBQWRBOztJQS9MQUMsZUFBZTtlQUFmQTs7SUF1QkFDLGNBQWM7ZUFBZEE7O0lBc0dBQyxhQUFhO2VBQWJBOztJQTZHQUMsaUJBQWlCO2VBQWpCQTs7O2lDQTdicUM7QUEwSDlDLE1BQU1QLFdBQVcsQ0FBQztBQUV6QiwrRUFBK0U7QUFDL0UsdUVBQXVFO0FBQ3ZFLE1BQU1RLGVBQWUsQ0FBQztBQUVmLFNBQVNQO0lBQ2QsTUFBTVEsV0FBd0I7UUFDNUJDLFFBQVE7UUFDUkMsS0FBSztRQUNMQyxPQUFPO1FBQ1BDLEtBQUs7UUFFTCxxQkFBcUI7UUFDckJDLE1BQU07UUFDTkMsTUFBTTtRQUNOQyxNQUFNO0lBQ1I7SUFDQSxPQUFPUDtBQUNUO0FBRUEsU0FBU1EsZ0JBQ1BSLFFBQXFCLEVBQ3JCUyxJQUFjLEVBQ2RDLGNBQXVCO0lBRXZCLHlFQUF5RTtJQUN6RSwyQ0FBMkM7SUFDM0MsRUFBRTtJQUNGLDJFQUEyRTtJQUMzRSwwRUFBMEU7SUFDMUUsa0NBQWtDO0lBQ2xDLElBQUlDLFFBQVFYO0lBQ1osSUFBSVksZ0JBQWlDSDtJQUNyQyxJQUFJUCxNQUFzQjtJQUMxQixNQUFPLEtBQU07UUFDWCxNQUFNVyxjQUFjWDtRQUNwQixJQUFJVSxrQkFBa0IsTUFBTTtZQUMxQlYsTUFBTVUsY0FBY1QsS0FBSztZQUN6QlMsZ0JBQWdCQSxjQUFjWCxNQUFNO1FBQ3RDLE9BQU8sSUFBSVMsa0JBQWtCRyxnQkFBZ0JkLGNBQWM7WUFDekQscUVBQXFFO1lBQ3JFLDREQUE0RDtZQUU1RCwwRUFBMEU7WUFDMUUsc0VBQXNFO1lBQ3RFLGVBQWU7WUFDZixJQUFJWSxNQUFN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QUNGLE9BQU87UUFDTCxnRUFBZ0U7UUFDaEUseURBQXlEO1FBQ3pELE1BQU1xQyxvQkFBb0JsQyxJQUFJVyxHQUFHLENBQUNoQjtRQUNsQyxJQUFJdUMsc0JBQXNCdEIsYUFBYXNCLGtCQUFrQm5DLEtBQUssS0FBSyxNQUFNO1lBQ3ZFMkIsaUJBQWlCbkIsT0FBTzJCLGtCQUFrQm5DLEtBQUs7UUFDakQ7SUFDRjtBQUNGO0FBRU8sU0FBU0wsa0JBQ2RLLEtBQVEsRUFDUkksSUFBWTtJQUVaLE1BQU1JLFFBQVFSLE1BQU0rQixHQUFHO0lBQ3ZCLElBQUl2QixVQUFVLE1BQU07UUFDbEIseUNBQXlDO1FBQ3pDO0lBQ0Y7SUFDQSw2RUFBNkU7SUFDN0UsNEVBQTRFO0lBQzVFLFdBQVc7SUFDWFIsTUFBTUksSUFBSSxHQUFHQTtJQUNid0IsQ0FBQUEsR0FBQUEsS0FBQUEsYUFBQUEsRUFBY3BCLE9BQU9KO0FBQ3ZCIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2NsaWVudC9jb21wb25lbnRzL3NlZ21lbnQtY2FjaGUvY2FjaGUtbWFwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVmFyeVBhdGggfSBmcm9tICcuL3ZhcnktcGF0aCdcbmltcG9ydCB7IGxydVB1dCwgdXBkYXRlTHJ1U2l6ZSwgZGVsZXRlRnJvbUxydSB9IGZyb20gJy4vbHJ1J1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgZGF0YSB0eXBlIGZvciBzdG9yaW5nIG11bHRpLWtleSBjYWNoZSBlbnRyaWVzLlxuICpcbiAqIFRoZSBiYXNpYyBzdHJ1Y3R1cmUgaXMgYSBtYXAgd2hvc2Uga2V5cyBhcmUgdHVwbGVzLCBjYWxsZWQgdGhlIGtleXBhdGguXG4gKiBXaGVuIHF1ZXJ5aW5nIHRoZSBjYWNoZSwga2V5cGF0aHMgYXJlIGNvbXBhcmVkIHBlci1lbGVtZW50LlxuICpcbiAqIEV4YW1wbGU6XG4gKiAgIHNldChtYXAsIFsnaHR0cHM6Ly9sb2NhbGhvc3QnLCAnZm9vL2Jhci9iYXonXSwgJ3lheScpO1xuICogICBnZXQobWFwLCBbJ2h0dHBzOi8vbG9jYWxob3N0JywgJ2Zvby9iYXIvYmF6J10pIC0+ICd5YXknXG4gKlxuICogTk9URTogQXJyYXkgc3ludGF4IGlzIHVzZWQgaW4gdGhlc2UgZXhhbXBsZXMgZm9yIGlsbHVzdHJhdGlvbiBwdXJwb3NlcywgYnV0XG4gKiBpbiByZWFsaXR5IHRoZSBwYXRocyBhcmUgbGlzdHMuXG4gKiBcbiAqIFRoZSBwYXJ0cyBvZiB0aGUga2V5cGF0aCByZXByZXNlbnQgdGhlIGRpZmZlcmVudCBpbnB1dHMgdGhhdCBjb250cmlidXRlXG4gKiB0byB0aGUgZW50cnkgdmFsdWUuIFRvIGlsbHVzdHJhdGUsIGlmIHlvdSB3ZXJlIHRvIHVzZSB0aGlzIGRhdGEgdHlwZSB0byBzdG9yZVxuICogSFRUUCByZXNwb25zZXMsIHRoZSBrZXlwYXRoIHdvdWxkIGluY2x1ZGUgdGhlIFVSTCBhbmQgZXZlcnl0aGluZyBsaXN0ZWQgYnlcbiAqIHRoZSBWYXJ5IGhlYWRlci5cbiAqIFxuICogU2VlIHZhcnktcGF0aC50cyBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFRoZSBvcmRlciBvZiBlbGVtZW50cyBpbiBhIGtleXBhdGggbXVzdCBiZSBjb25zaXN0ZW50IGJldHdlZW4gbG9va3VwcyB0b1xuICogYmUgY29uc2lkZXJlZCB0aGUgc2FtZSwgYnV0IGJlc2lkZXMgdGhhdCwgdGhlIG9yZGVyIG9mIHRoZSBrZXlzIGlzIG5vdFxuICogc2VtYW50aWNhbGx5IG1lYW5pbmdmdWwuXG4gKlxuICogS2V5cGF0aHMgbWF5IGluY2x1ZGUgYSBzcGVjaWFsIGtpbmQgb2Yga2V5IGNhbGxlZCBGYWxsYmFjay4gV2hlbiBhbiBlbnRyeSBpc1xuICogc3RvcmVkIHdpdGggRmFsbGJhY2sgYXMgcGFydCBvZiBpdHMga2V5cGF0aCwgaXQgbWVhbnMgdGhhdCB0aGUgZW50cnkgZG9lcyBub3RcbiAqIHZhcnkgYnkgdGhhdCBrZXkuIFdoZW4gcXVlcnlpbmcgdGhlIGNhY2hlLCBpZiBhbiBleGFjdCBtYXRjaCBpcyBub3QgZm91bmQgZm9yXG4gKiBhIGtleXBhdGgsIHRoZSBjYWNoZSB3aWxsIGNoZWNrIGZvciBhIEZhbGxiYWNrIG1hdGNoIGluc3RlYWQuIEVhY2ggZWxlbWVudCBvZlxuICogdGhlIGtleXBhdGggbWF5IGhhdmUgYSBGYWxsYmFjaywgc28gcmV0cmlldmFsIGlzIGFuIE8obiBeIDIpIG9wZXJhdGlvbiwgYnV0XG4gKiBpdCdzIGV4cGVjdGVkIHRoYXQga2V5cGF0aHMgYXJlIHJlbGF0aXZlbHkgc2hvcnQuXG4gKlxuICogRXhhbXBsZTpcbiAqICAgc2V0KGNhY2hlTWFwLCBbJ3N0b3JlJywgJ3Byb2R1Y3QnLCAxXSwgUFJPRFVDVF9QQUdFXzEpO1xuICogICBzZXQoY2FjaGVNYXAsIFsnc3RvcmUnLCAncHJvZHVjdCcsIEZhbGxiYWNrXSwgR0VORVJJQ19QUk9EVUNUX1BBR0UpO1xuICpcbiAqICAgLy8gRXhhY3QgbWF0Y2hcbiAqICAgZ2V0KGNhY2hlTWFwLCBbJ3N0b3JlJywgJ3Byb2R1Y3QnLCAxXSkgLT4gUFJPRFVDVF9QQUdFXzFcbiAqXG4gKiAgIC8vIEZhbGxiYWNrIG1hdGNoXG4gKiAgIGdldChjYWNoZU1hcCwgWydzdG9yZScsICdwcm9kdWN0JywgMl0pIC0+IEdFTkVSSUNfUFJPRFVDVF9QQUdFXG4gKlxuICogQmVjYXVzZSB3ZSBoYXZlIHRoZSBGYWxsYmFjayBtZWNoYW5pc20sIHdlIGNhbiBpbXBvc2UgYSBjb25zdHJhaW50IHRoYXRcbiAqIHJlZ3VsYXIgSlMgbWFwcyBkbyBub3QgaGF2ZTogYSB2YWx1ZSBjYW5ub3QgYmUgc3RvcmVkIGF0IG11bHRpcGxlIGtleXBhdGhzXG4gKiBzaW11bHRhbmVvdXNseS4gVGhlc2UgY2FzZXMgc2hvdWxkIGJlIGV4cHJlc3NlZCB3aXRoIEZhbGxiYWNrIGtleXMgaW5zdGVhZC5cbiAqXG4gKiBBZGRpdGlvbmFsbHksIGJlY2F1c2UgdmFsdWVzIG9ubHkgZXhpc3QgYXQgYSBzaW5nbGUga2V5cGF0aCBhdCBhIHRpbWUsIHdlXG4gKiBjYW4gb3B0aW1pemUgc3VjY2Vzc2l2ZSBsb29rdXBzIGJ5IGNhY2hpbmcgdGhlIGludGVybmFsIG1hcCBlbnRyeSBvbiB0aGVcbiAqIHZhbHVlIGl0c2VsZiwgdXNpbmcgdGhlIGByZWZgIGZpZWxkLiBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIGJlY2F1c2UgaXRcbiAqIGxldHMgdXMgc2tpcCB0aGUgTyhuIF4gMikgbG9va3VwIHRoYXQgb2NjdXJzIHdoZW4gRmFsbGJhY2sgZW50cmllc1xuICogYXJlIHByZXNlbnQuXG4gKlxuXG4gKiBIb3cgdG8gZGVjaWRlIGlmIHN0dWZmIGJlbG9uZ3MgaW4gaGVyZSwgb3IgaW4gY2FjaGUudHM/XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBcbiAqIEFueXRoaW5nIHRvIGRvIHdpdGggcmV0cml2YWwsIGxpZmV0aW1lcywgb3IgZXZpY3Rpb24gbmVlZHMgdG8gZ28gaW4gdGhpc1xuICogbW9kdWxlIGJlY2F1c2UgaXQgYWZmZWN0cyB0aGUgZmFsbGJhY2sgYWxnb3JpdGhtLiBGb3IgZXhhbXBsZSwgd2hlblxuICogcGVyZm9ybWluZyBhIGxvb2t1cCwgaWYgYW4gZW50cnkgaXMgc3RhbGUsIGl0IG5lZWRzIHRvIGJlIHRyZWF0ZWQgYXNcbiAqIHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvIGlmIHRoZSBlbnRyeSB3YXMgbm90IHByZXNlbnQgYXQgYWxsLlxuICogXG4gKiBJZiB0aGVyZSdzIGxvZ2ljIHRoYXQncyBub3QgcmVsYXRlZCB0byB0aGUgZmFsbGJhY2sgYWxnb3JpdGhtLCB0aG91Z2gsIHdlXG4gKiBzaG91bGQgcHJlZmVyIHRvIHB1dCBpdCBpbiBjYWNoZS50cy5cbiAqL1xuXG4vLyBUaGUgcHJvdG9jb2wgdGhhdCB2YWx1ZXMgbXVzdCBpbXBsZW1lbnQuIEluIHByYWN0aWNlLCB0aGUgb25seSB0d28gdHlwZXMgdGhhdFxuLy8gd2UgZXZlciBhY3R1YWxseSBkZWFsIHdpdGggaW4gdGhpcyBtb2R1bGUgYXJlIFJvdXRlQ2FjaGVFbnRyeSBhbmRcbi8vIFNlZ21lbnRDYWNoZUVudHJ5OyB0aGlzIGlzIGp1c3QgdG8ga2VlcCB0cmFjayBvZiB0aGUgY291cGxpbmcgc28gd2UgZG9uJ3Rcbi8vIGxlYWsgY29uY2VybnMgYmV0d2VlbiB0aGUgbW9kdWxlcyB1bm5lY2Vzc2FyaWx5LlxuZXhwb3J0IGludGVyZmFjZSBNYXBWYWx1ZSB7XG4gIHJlZjogVW5rbm93bk1hcEVudHJ5IHwgbnVsbFxuICBzaXplOiBudW1iZXJcbiAgc3RhbGVBdDogbnVtYmVyXG4gIHZlcnNpb246IG51bWJlclxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBub2RlIGluIHRoZSBjYWNoZSBtYXAgYW5kIExSVS5cbiAqIE1hcEVudHJ5PFY+IHN0cnVjdHVyYWxseSBzYXRpc2ZpZXMgdGhpcyBpbnRlcmZhY2UgZm9yIGFueSBWIGV4dGVuZHMgTWFwVmFsdWUuXG4gKlxuICogVGhlIExSVSBjYW4gY29udGFpbiBlbnRyaWVzIG9mIGRpZmZlcmVudCB2YWx1ZSB0eXBlc1xuICogKGUuZy4sIGJvdGggUm91dGVDYWNoZUVudHJ5IGFuZCBTZWdtZW50Q2FjaGVFbnRyeSkuIFRoaXMgaW50ZXJmYWNlIGNhcHR1cmVzXG4gKiB0aGUgY29tbW9uIHN0cnVjdHVyZSBuZWVkZWQgZm9yIGNhY2hlIG1hcCBhbmQgTFJVIG9wZXJhdGlvbnMgd2l0aG91dFxuICogcmVxdWlyaW5nIGtub3dsZWRnZSBvZiB0aGUgc3BlY2lmaWMgdmFsdWUgdHlwZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXBFbnRyeTxWIGV4dGVuZHMgTWFwVmFsdWU+IHtcbiAgLy8gQ2FjaGUgbWFwIHN0cnVjdHVyZSBmaWVsZHNcbiAgcGFyZW50OiBNYXBFbnRyeTxWPiB8IG51bGxcbiAga2V5OiB1bmtub3duXG4gIG1hcDogTWFwPHVua25vd24sIE1hcEVudHJ5PFY+PiB8IG51bGxcbiAgdmFsdWU6IFYgfCBudWxsXG5cbiAgLy8gTFJVIGxpbmtlZCBsaXN0IGZpZWxkc1xuICBwcmV2OiBNYXBFbnRyeTxWPiB8IG51bGxcbiAgbmV4dDogTWFwRW50cnk8Vj4gfCBudWxsXG4gIHNpemU6IG51bWJlclxufVxuXG4vKipcbiAqIEEgbG9vc2VyIHR5cGUgZm9yIE1hcEVudHJ5XG4gKiBUaGlzIGFsbG93cyB0aGUgTFJVIHRvIHdvcmsgd2l0aCBlbnRyaWVzIG9mIGRpZmZlcmVudFxuICogdmFsdWUgdHlwZXMgd2hpbGUgc3RpbGwgcHJvdmlkaW5nIHR5cGUgc2FmZXR5LlxuICpcbiAqIFRoZSBgbWFwYCBmaWVsZCBsZXRzIE1hcDx1bmtub3duLCBNYXBFbnRyeTxWPj4gYmUgYXNzaWduYWJsZSB0byB0aGlzXG4gKiB0eXBlIHNpbmNlIHdlJ3JlIG9ubHkgcmVhZGluZyBmcm9tIHRoZSBtYXAsIG5vdCBpbnNlcnRpbmcgaW50byBpdC5cbiAqL1xuZXhwb3J0IHR5cGUgVW5rbm93bk1hcEVudHJ5ID0ge1xuICBwYXJlbnQ6IFVua25vd25NYXBFbnRyeSB8IG51bGxcbiAga2V5OiB1bmtub3duXG4gIG1hcDogUGljazxNYXA8dW5rbm93biwgVW5rbm93bk1hcEVudHJ5PiwgJ2dldCcgfCAnZGVsZXRlJyB8ICdzaXplJz4gfCBudWxsXG4gIHZhbHVlOiBNYXBWYWx1ZSB8IG51bGxcblxuICBwcmV2OiBVbmtub3duTWFwRW50cnkgfCBudWxsXG4gIG5leHQ6IFVua25vd25NYXBFbnRyeSB8IG51bGxcbiAgc2l6ZTogbnVtYmVyXG59XG5cbi8vIFRoZSBDYWNoZU1hcCB0eXBlIGlzIGp1c3QgdGhlIHJvb3QgZW50cnkgb2YgdGhlIG1hcC5cbmV4cG9ydCB0eXBlIENhY2hlTWFwPFYgZXh0ZW5kcyBNYXBWYWx1ZT4gPSBNYXBFbnRyeTxWPlxuXG5leHBvcnQgdHlwZSBGYWxsYmFja1R5cGUgPSB7IF9fYnJhbmQ6ICdGYWxsYmFjaycgfVxuZXhwb3J0IGNvbnN0IEZhbGxiYWNrID0ge30gYXMgRmFsbGJhY2tUeXBlXG5cbi8vIFRoaXMgaXMgYSBzcGVjaWFsIGludGVybmFsIGtleSB0aGF0IGlzIHVzZWQgZm9yIFwicmV2YWxpZGF0aW9uXCIgZW50cmllcy4gSXQnc1xuLy8gYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsIHRoYXQgc2hvdWxkbid0IGxlYWsgb3V0c2lkZSBvZiB0aGlzIG1vZHVsZS5cbmNvbnN0IFJldmFsaWRhdGlvbiA9IHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDYWNoZU1hcDxWIGV4dGVuZHMgTWFwVmFsdWU+KCk6IENhY2hlTWFwPFY+IHtcbiAgY29uc3QgY2FjaGVNYXA6IE1hcEVudHJ5PFY+ID0ge1xuICAgIHBhcmVudDogbnVsbCxcbiAgICBrZXk6IG51bGwsXG4gICAgdmFsdWU6IG51bGwsXG4gICAgbWFwOiBudWxsLFxuXG4gICAgLy8gTFJVLXJlbGF0ZWQgZmllbGRzXG4gICAgcHJldjogbnVsbCxcbiAgICBuZXh0OiBudWxsLFxuICAgIHNpemU6IDAsXG4gIH1cbiAgcmV0dXJuIGNhY2hlTWFwXG59XG5cbmZ1bmN0aW9uIGdldE9ySW5pdGlhbGl6ZTxWIGV4dGVuZHMgTWFwVmFsdWU+KFxuICBjYWNoZU1hcDogQ2FjaGVNYXA8Vj4sXG4gIGtleXM6IFZhcnlQYXRoLFxuICBpc1JldmFsaWRhdGlvbjogYm9vbGVhblxuKTogTWFwRW50cnk8Vj4ge1xuICAvLyBHbyB0aHJvdWdoIGVhY2ggbGV2ZWwgb2Yga2V5cyB1bnRpbCB3ZSBmaW5kIHRoZSBlbnRyeSB0aGF0IG1hdGNoZXMsIG9yXG4gIC8vIGNyZWF0ZSBhIG5ldyBlbnRyeSBpZiBvbmUgZG9lc24ndCBleGlzdC5cbiAgLy9cbiAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIG9ubHkgcmV0dXJuIGVudHJpZXMgdGhhdCBtYXRjaCB0aGUga2V5cGF0aCBfZXhhY3RseV8uXG4gIC8vIFVubGlrZSBnZXRXaXRoRmFsbGJhY2ssIGl0IHdpbGwgbm90IGFjY2VzcyBmYWxsYmFjayBlbnRyaWVzIHVubGVzcyBpdCdzXG4gIC8vIGV4cGxpY2l0bHkgcGFydCBvZiB0aGUga2V5cGF0aC5cbiAgbGV0IGVudHJ5ID0gY2FjaGVNYXBcbiAgbGV0IHJlbWFpbmluZ0tleXM6IFZhcnlQYXRoIHwgbnVsbCA9IGtleXNcbiAgbGV0IGtleTogdW5rbm93biB8IG51bGwgPSBudWxsXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgY29uc3QgcHJldmlvdXNLZXkgPSBrZXlcbiAgICBpZiAocmVtYWluaW5nS2V5cyAhPT0gbnVsbCkge1xuICAgICAga2V5ID0gcmVtYWluaW5nS2V5cy52YWx1ZVxuICAgICAgcmVtYWluaW5nS2V5cyA9IHJlbWFpbmluZ0tleXMucGFyZW50XG4gICAgfSBlbHNlIGlmIChpc1JldmFsaWRhdGlvbiAmJiBwcmV2aW91c0tleSAhPT0gUmV2YWxpZGF0aW9uKSB7XG4gICAgICAvLyBEdXJpbmcgYSByZXZhbGlkYXRpb24sIHdlIGFwcGVuZCBhbiBpbnRlcm5hbCBcIlJldmFsaWRhdGlvblwiIGtleSB0b1xuICAgICAgLy8gdGhlIGVuZCBvZiB0aGUga2V5cGF0aC4gVGhlIFwibm9ybWFsXCIgZW50cnkgaXMgaXRzIHBhcmVudC5cblxuICAgICAgLy8gSG93ZXZlciwgaWYgdGhlIHBhcmVudCBlbnRyeSBpcyBjdXJyZW50bHkgZW1wdHksIHdlIGRvbid0IG5lZWQgdG8gc3RvcmVcbiAgICAgIC8vIHRoaXMgYXMgYSByZXZhbGlkYXRpb24gZW50cnkuIEp1c3QgaW5zZXJ0IHRoZSByZXZhbGlkYXRpb24gaW50byB0aGVcbiAgICAgIC8vIG5vcm1hbCBzbG90LlxuICAgICAgaWYgKGVudHJ5LnZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBlbnRyeVxuICAgICAgfVxuXG4gICAgICAvLyBPdGhlcml3c2UsIGNyZWF0ZSBhIGNoaWxkIGVudHJ5LlxuICAgICAga2V5ID0gUmV2YWxpZGF0aW9uXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZXJlIGFyZSBubyBtb3JlIGtleXMuIFRoaXMgaXMgdGhlIHRlcm1pbmFsIGVudHJ5LlxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBsZXQgbWFwID0gZW50cnkubWFwXG4gICAgaWYgKG1hcCAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgZXhpc3RpbmdFbnRyeSA9IG1hcC5nZXQoa2V5KVxuICAgICAgaWYgKGV4aXN0aW5nRW50cnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBGb3VuZCBhIG1hdGNoLiBLZWVwIGdvaW5nLlxuICAgICAgICBlbnRyeSA9IGV4aXN0aW5nRW50cnlcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbWFwID0gbmV3IE1hcCgpXG4gICAgICBlbnRyeS5tYXAgPSBtYXBcbiAgICB9XG4gICAgLy8gTm8gZW50cnkgZXhpc3RzIHlldCBhdCB0aGlzIGxldmVsLiBDcmVhdGUgYSBuZXcgb25lLlxuICAgIGNvbnN0IG5ld0VudHJ5OiBNYXBFbnRyeTxWPiA9IHtcbiAgICAgIHBhcmVudDogZW50cnksXG4gICAgICBrZXksXG4gICAgICB2YWx1ZTogbnVsbCxcbiAgICAgIG1hcDogbnVsbCxcblxuICAgICAgLy8gTFJVLXJlbGF0ZWQgZmllbGRzXG4gICAgICBwcmV2OiBudWxsLFxuICAgICAgbmV4dDogbnVsbCxcbiAgICAgIHNpemU6IDAsXG4gICAgfVxuICAgIG1hcC5zZXQoa2V5LCBuZXdFbnRyeSlcbiAgICBlbnRyeSA9IG5ld0VudHJ5XG4gIH1cblxuICByZXR1cm4gZW50cnlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZyb21DYWNoZU1hcDxWIGV4dGVuZHMgTWFwVmFsdWU+KFxuICBub3c6IG51bWJlcixcbiAgY3VycmVudENhY2hlVmVyc2lvbjogbnVtYmVyLFxuICByb290RW50cnk6IENhY2hlTWFwPFY+LFxuICBrZXlzOiBWYXJ5UGF0aCxcbiAgaXNSZXZhbGlkYXRpb246IGJvb2xlYW5cbik6IFYgfCBudWxsIHtcbiAgY29uc3QgZW50cnkgPSBnZXRFbnRyeVdpdGhGYWxsYmFja0ltcGwoXG4gICAgbm93LFxuICAgIGN1cnJlbnRDYWNoZVZlcnNpb24sXG4gICAgcm9vdEVudHJ5LFxuICAgIGtleXMsXG4gICAgaXNSZXZhbGlkYXRpb24sXG4gICAgMFxuICApXG4gIGlmIChlbnRyeSA9PT0gbnVsbCB8fCBlbnRyeS52YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgLy8gVGhpcyBpcyBhbiBMUlUgYWNjZXNzLiBNb3ZlIHRoZSBlbnRyeSB0byB0aGUgZnJvbnQgb2YgdGhlIGxpc3QuXG4gIGxydVB1dChlbnRyeSlcbiAgcmV0dXJuIGVudHJ5LnZhbHVlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbHVlRXhwaXJlZChcbiAgbm93OiBudW1iZXIsXG4gIGN1cnJlbnRDYWNoZVZlcnNpb246IG51bWJlcixcbiAgdmFsdWU6IE1hcFZhbHVlXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlLnN0YWxlQXQgPD0gbm93IHx8IHZhbHVlLnZlcnNpb24gPCBjdXJyZW50Q2FjaGVWZXJzaW9uXG59XG5cbmZ1bmN0aW9uIGxhemlseUV2aWN0SWZOZWVkZWQ8ViBleHRlbmRzIE1hcFZhbHVlPihcbiAgbm93OiBudW1iZXIsXG4gIGN1cnJlbnRDYWNoZVZlcnNpb246IG51bWJlcixcbiAgZW50cnk6IE1hcEVudHJ5PFY+XG4pIHtcbiAgLy8gV2UgaGF2ZSBhIG1hdGNoaW5nIGVudHJ5LCBidXQgYmVmb3JlIHdlIGNhbiByZXR1cm4gaXQsIHdlIG5lZWQgdG8gY2hlY2sgaWZcbiAgLy8gaXQncyBzdGlsbCBmcmVzaC4gT3RoZXJ3aXNlIGl0IHNob3VsZCBiZSB0cmVhdGVkIHRoZSBzYW1lIGFzIGEgY2FjaGUgbWlzcy5cblxuICBpZiAoZW50cnkudmFsdWUgPT09IG51bGwpIHtcbiAgICAvLyBUaGlzIGVudHJ5IGhhcyBubyB2YWx1ZSwgc28gdGhlcmUncyBub3RoaW5nIHRvIGV2aWN0LlxuICAgIHJldHVybiBlbnRyeVxuICB9XG5cbiAgY29uc3QgdmFsdWUgPSBlbnRyeS52YWx1ZVxuICBpZiAoaXNWYWx1ZUV4cGlyZWQobm93LCBjdXJyZW50Q2FjaGVWZXJzaW9uLCB2YWx1ZSkpIHtcbiAgICAvLyBUaGUgdmFsdWUgZXhwaXJlZC4gTGF6aWx5IGV2aWN0IGl0IGZyb20gdGhlIGNhY2hlLCBhbmQgcmV0dXJuIG51bGwuIFRoaXNcbiAgICAvLyBpcyBjb25jZXB0dWFsbHkgdGhlIHNhbWUgYXMgYSBjYWNoZSBtaXNzLlxuICAgIGRlbGV0ZU1hcEVudHJ5KGVudHJ5KVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvLyBUaGUgbWF0Y2hlZCBlbnRyeSBoYXMgbm90IGV4cGlyZWQuIFJldHVybiBpdC5cbiAgcmV0dXJuIGVudHJ5XG59XG5cbmZ1bmN0aW9uIGdldEVudHJ5V2l0aEZhbGxiYWNrSW1wbDxWIGV4dGVuZHMgTWFwVmFsdWU+KFxuICBub3c6IG51bWJlcixcbiAgY3VycmVudENhY2hlVmVyc2lvbjogbnVtYmVyLFxuICBlbnRyeTogTWFwRW50cnk8Vj4sXG4gIGtleXM6IFZhcnlQYXRoIHwgbnVsbCxcbiAgaXNSZXZhbGlkYXRpb246IGJvb2xlYW4sXG4gIHByZXZpb3VzS2V5OiB1bmtub3duIHwgbnVsbFxuKTogTWFwRW50cnk8Vj4gfCBudWxsIHtcbiAgLy8gVGhpcyBpcyBzaW1pbGFyIHRvIGdldEV4YWN0RW50cnksIGJ1dCBpZiBhbiBleGFjdCBtYXRjaCBpcyBub3QgZm91bmQgZm9yXG4gIC8vIGEga2V5LCBpdCB3aWxsIHJldHVybiB0aGUgZmFsbGJhY2sgZW50cnkgaW5zdGVhZC4gVGhpcyBpcyByZWN1cnNpdmUgYXRcbiAgLy8gZXZlcnkgbGV2ZWwsIGUuZy4gYW4gZW50cnkgd2l0aCBrZXlwYXRoIFthLCBGYWxsYmFjaywgYywgRmFsbGJhY2tdIGlzXG4gIC8vIHZhbGlkIG1hdGNoIGZvciBbYSwgYiwgYywgZF0uXG4gIC8vXG4gIC8vIEl0IHdpbGwgcmV0dXJuIHRoZSBtb3N0IHNwZWNpZmljIG1hdGNoIGF2YWlsYWJsZS5cbiAgbGV0IGtleVxuICBsZXQgcmVtYWluaW5nS2V5czogVmFyeVBhdGggfCBudWxsXG4gIGlmIChrZXlzICE9PSBudWxsKSB7XG4gICAga2V5ID0ga2V5cy52YWx1ZVxuICAgIHJlbWFpbmluZ0tleXMgPSBrZXlzLnBhcmVudFxuICB9IGVsc2UgaWYgKGlzUmV2YWxpZGF0aW9uICYmIHByZXZpb3VzS2V5ICE9PSBSZXZhbGlkYXRpb24pIHtcbiAgICAvLyBEdXJpbmcgYSByZXZhbGlkYXRpb24sIHdlIGFwcGVuZCBhbiBpbnRlcm5hbCBcIlJldmFsaWRhdGlvblwiIGtleSB0b1xuICAgIC8vIHRoZSBlbmQgb2YgdGhlIGtleXBhdGguXG4gICAga2V5ID0gUmV2YWxpZGF0aW9uXG4gICAgcmVtYWluaW5nS2V5cyA9IG51bGxcbiAgfSBlbHNlIHtcbiAgICAvLyBUaGVyZSBhcmUgbm8gbW9yZSBrZXlzLiBUaGlzIGlzIHRoZSB0ZXJtaW5hbCBlbnRyeS5cblxuICAgIC8vIFRPRE86IFdoZW4gcGVyZm9ybWluZyBhIGxvb2t1cCBkdXJpbmcgYSBuYXZpZ2F0aW9uLCBhcyBvcHBvc2VkIHRvIGFcbiAgICAvLyBwcmVmZXRjaCwgd2UgbWF5IHdhbnQgdG8gc2tpcCBlbnRyaWVzIHRoYXQgYXJlIFBlbmRpbmcgaWYgdGhlcmUncyBhbHNvXG4gICAgLy8gYSBGdWxmaWxsZWQgZmFsbGJhY2sgZW50cnkuIFRyaWNreSB0byBzYXksIHRob3VnaCwgc2luY2UgaWYgaXQnc1xuICAgIC8vIGFscmVhZHkgcGVuZGluZywgaXQncyBsaWtlbHkgdG8gc3RyZWFtIGluIHNvb24uIE1heWJlIHdlIGNvdWxkIGRvIHRoaXNcbiAgICAvLyBqdXN0IG9uIHNsb3cgY29ubmVjdGlvbnMgYW5kIG9mZmxpbmUgbW9kZS5cblxuICAgIHJldHVybiBsYXppbHlFdmljdElmTmVlZGVkKG5vdywgY3VycmVudENhY2hlVmVyc2lvbiwgZW50cnkpXG4gIH1cbiAgY29uc3QgbWFwID0gZW50cnkubWFwXG4gIGlmIChtYXAgIT09IG51bGwpIHtcbiAgICBjb25zdCBleGlzdGluZ0VudHJ5ID0gbWFwLmdldChrZXkpXG4gICAgaWYgKGV4aXN0aW5nRW50cnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gRm91bmQgYW4gZXhhY3QgbWF0Y2ggZm9yIHRoaXMga2V5LiBLZWVwIHNlYXJjaGluZy5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEVudHJ5V2l0aEZhbGxiYWNrSW1wbChcbiAgICAgICAgbm93LFxuICAgICAgICBjdXJyZW50Q2FjaGVWZXJzaW9uLFxuICAgICAgICBleGlzdGluZ0VudHJ5LFxuICAgICAgICByZW1haW5pbmdLZXlzLFxuICAgICAgICBpc1JldmFsaWRhdGlvbixcbiAgICAgICAga2V5XG4gICAgICApXG4gICAgICBpZiAocmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gTm8gbWF0Y2ggZm91bmQgZm9yIHRoaXMga2V5LiBDaGVjayBpZiB0aGVyZSdzIGEgZmFsbGJhY2suXG4gICAgY29uc3QgZmFsbGJhY2tFbnRyeSA9IG1hcC5nZXQoRmFsbGJhY2spXG4gICAgaWYgKGZhbGxiYWNrRW50cnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gRm91bmQgYSBmYWxsYmFjayBmb3IgdGhpcyBrZXkuIEtlZXAgc2VhcmNoaW5nLlxuICAgICAgcmV0dXJuIGdldEVudHJ5V2l0aEZhbGxiYWNrSW1wbChcbiAgICAgICAgbm93LFxuICAgICAgICBjdXJyZW50Q2FjaGVWZXJzaW9uLFxuICAgICAgICBmYWxsYmFja0VudHJ5LFxuICAgICAgICByZW1haW5pbmdLZXlzLFxuICAgICAgICBpc1JldmFsaWRhdGlvbixcbiAgICAgICAga2V5XG4gICAgICApXG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRJbkNhY2hlTWFwPFYgZXh0ZW5kcyBNYXBWYWx1ZT4oXG4gIGNhY2hlTWFwOiBDYWNoZU1hcDxWPixcbiAga2V5czogVmFyeVBhdGgsXG4gIHZhbHVlOiBWLFxuICBpc1JldmFsaWRhdGlvbjogYm9vbGVhblxuKTogdm9pZCB7XG4gIC8vIEFkZCBhIHZhbHVlIHRvIHRoZSBtYXAgYXQgdGhlIGdpdmVuIGtleXBhdGguIElmIHRoZSB2YWx1ZSBpcyBhbHJlYWR5XG4gIC8vIHBhcnQgb2YgdGhlIG1hcCwgaXQncyByZW1vdmVkIGZyb20gaXRzIHByZXZpb3VzIGtleXBhdGguIChOT1RFOiBUaGlzIGlzXG4gIC8vIHVubGlrZSBhIHJlZ3VsYXIgSlMgbWFwLCBidXQgdGhlIGJlaGF2aW9yIGlzIGludGVudGlvbmFsLilcbiAgY29uc3QgZW50cnkgPSBnZXRPckluaXRpYWxpemUoY2FjaGVNYXAsIGtleXMsIGlzUmV2YWxpZGF0aW9uKVxuICBzZXRNYXBFbnRyeVZhbHVlKGVudHJ5LCB2YWx1ZSlcblxuICAvLyBUaGlzIGlzIGFuIExSVSBhY2Nlc3MuIE1vdmUgdGhlIGVudHJ5IHRvIHRoZSBmcm9udCBvZiB0aGUgbGlzdC5cbiAgbHJ1UHV0KGVudHJ5KVxuICB1cGRhdGVMcnVTaXplKGVudHJ5LCB2YWx1ZS5zaXplKVxufVxuXG5mdW5jdGlvbiBzZXRNYXBFbnRyeVZhbHVlKGVudHJ5OiBVbmtub3duTWFwRW50cnksIHZhbHVlOiBNYXBWYWx1ZSk6IHZvaWQge1xuICBpZiAoZW50cnkudmFsdWUgIT09IG51bGwpIHtcbiAgICAvLyBUaGVyZSdzIGFscmVhZHkgYSB2YWx1ZSBhdCB0aGUgZ2l2ZW4ga2V5cGF0aC4gRGlzY29ubmVjdCB0aGUgb2xkIHZhbHVlXG4gICAgLy8gZnJvbSB0aGUgbWFwLiBXZSdyZSBub3QgY2FsbGluZyBgZGVsZXRlTWFwRW50cnlgIGhlcmUgYmVjYXVzZSB0aGVcbiAgICAvLyBlbnRyeSBpdHNlbGYgaXMgc3RpbGwgaW4gdGhlIG1hcC4gV2UganVzdCB3YW50IHRvIG92ZXJ3cml0ZSBpdHMgdmFsdWUuXG4gICAgZHJvcFJlZihlbnRyeS52YWx1ZSlcbiAgICBlbnRyeS52YWx1ZSA9IG51bGxcbiAgfVxuXG4gIC8vIFRoaXMgdmFsdWUgbWF5IGFscmVhZHkgYmUgaW4gdGhlIG1hcCBhdCBhIGRpZmZlcmVudCBrZXlwYXRoLlxuICAvLyBHcmFiIGEgcmVmZXJlbmNlIGJlZm9yZSB3ZSBvdmVyd3JpdGUgaXQuXG4gIGNvbnN0IG9sZEVudHJ5ID0gdmFsdWUucmVmXG5cbiAgZW50cnkudmFsdWUgPSB2YWx1ZVxuICB2YWx1ZS5yZWYgPSBlbnRyeVxuXG4gIHVwZGF0ZUxydVNpemUoZW50cnksIHZhbHVlLnNpemUpXG5cbiAgaWYgKG9sZEVudHJ5ICE9PSBudWxsICYmIG9sZEVudHJ5ICE9PSBlbnRyeSAmJiBvbGRFbnRyeS52YWx1ZSA9PT0gdmFsdWUpIHtcbiAgICAvLyBUaGlzIHZhbHVlIGlzIGFscmVhZHkgaW4gdGhlIG1hcCBhdCBhIGRpZmZlcmVudCBrZXlwYXRoIGluIHRoZSBtYXAuXG4gICAgLy8gVmFsdWVzIG9ubHkgZXhpc3QgYXQgYSBzaW5nbGUga2V5cGF0aCBhdCBhIHRpbWUuIFJlbW92ZSBpdCBmcm9tIHRoZVxuICAgIC8vIHByZXZpb3VzIGtleXBhdGguXG4gICAgLy9cbiAgICAvLyBOb3RlIHRoYXQgb25seSB0aGUgaW50ZXJuYWwgbWFwIGVudHJ5IGlzIGdhcmJhZ2UgY29sbGVjdGVkOyB3ZSBkb24ndFxuICAgIC8vIGNhbGwgYGRyb3BSZWZgIGhlcmUgYmVjYXVzZSBpdCdzIHN0aWxsIGluIHRoZSBtYXAsIGp1c3RcbiAgICAvLyBhdCBhIG5ldyBrZXlwYXRoICh0aGUgb25lIHdlIGp1c3Qgc2V0LCBhYm92ZSkuXG4gICAgZGVsZXRlTWFwRW50cnkob2xkRW50cnkpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZUZyb21DYWNoZU1hcCh2YWx1ZTogTWFwVmFsdWUpOiB2b2lkIHtcbiAgY29uc3QgZW50cnkgPSB2YWx1ZS5yZWZcbiAgaWYgKGVudHJ5ID09PSBudWxsKSB7XG4gICAgLy8gVGhpcyB2YWx1ZSBpcyBub3QgYSBtZW1iZXIgb2YgYW55IG1hcC5cbiAgICByZXR1cm5cbiAgfVxuXG4gIGRyb3BSZWYodmFsdWUpXG4gIGRlbGV0ZU1hcEVudHJ5KGVudHJ5KVxufVxuXG5mdW5jdGlvbiBkcm9wUmVmKHZhbHVlOiBNYXBWYWx1ZSk6IHZvaWQge1xuICAvLyBEcm9wIHRoZSB2YWx1ZSBmcm9tIHRoZSBtYXAgYnkgc2V0dGluZyBpdHMgYHJlZmAgYmFja3BvaW50ZXIgdG9cbiAgLy8gbnVsbC4gVGhpcyBpcyBhIHNlcGFyYXRlIG9wZXJhdGlvbiBmcm9tIGBkZWxldGVNYXBFbnRyeWAgYmVjYXVzZSB3aGVuXG4gIC8vIHJlLWtleWluZyBhIHZhbHVlIHdlIG5lZWQgdG8gYmUgYWJsZSB0byBkZWxldGUgdGhlIG9sZCwgaW50ZXJuYWwgbWFwXG4gIC8vIGVudHJ5IHdpdGhvdXQgZ2FyYmFnZSBjb2xsZWN0aW5nIHRoZSB2YWx1ZSBpdHNlbGYuXG4gIHZhbHVlLnJlZiA9IG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZU1hcEVudHJ5KGVudHJ5OiBVbmtub3duTWFwRW50cnkpOiB2b2lkIHtcbiAgLy8gRGVsZXRlIHRoZSBlbnRyeSBmcm9tIHRoZSBjYWNoZS5cbiAgZW50cnkudmFsdWUgPSBudWxsXG5cbiAgZGVsZXRlRnJvbUxydShlbnRyeSlcblxuICAvLyBDaGVjayBpZiB3ZSBjYW4gZ2FyYmFnZSBjb2xsZWN0IHRoZSBlbnRyeS5cbiAgY29uc3QgbWFwID0gZW50cnkubWFwXG4gIGlmIChtYXAgPT09IG51bGwpIHtcbiAgICAvLyBTaW5jZSB0aGlzIGVudHJ5IGhhcyBubyB2YWx1ZSwgYW5kIGFsc28gbm8gY2hpbGQgZW50cmllcywgd2UgY2FuXG4gICAgLy8gZ2FyYmFnZSBjb2xsZWN0IGl0LiBSZW1vdmUgaXQgZnJvbSBpdHMgcGFyZW50LCBhbmQga2VlcCBnYXJiYWdlXG4gICAgLy8gY29sbGVjdGluZyB0aGUgcGFyZW50cyB1bnRpbCB3ZSByZWFjaCBhIG5vbi1lbXB0eSBlbnRyeS5cbiAgICBsZXQgcGFyZW50ID0gZW50cnkucGFyZW50XG4gICAgbGV0IGtleSA9IGVudHJ5LmtleVxuICAgIHdoaWxlIChwYXJlbnQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHBhcmVudE1hcCA9IHBhcmVudC5tYXBcbiAgICAgIGlmIChwYXJlbnRNYXAgIT09IG51bGwpIHtcbiAgICAgICAgcGFyZW50TWFwLmRlbGV0ZShrZXkpXG4gICAgICAgIGlmIChwYXJlbnRNYXAuc2l6ZSA9PT0gMCkge1xuICAgICAgICAgIC8vIFdlIGp1c3QgcmVtb3ZlZCB0aGUgbGFzdCBlbnRyeSBpbiB0aGUgcGFyZW50IG1hcC5cbiAgICAgICAgICBwYXJlbnQubWFwID0gbnVsbFxuICAgICAgICAgIGlmIChwYXJlbnQudmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIFRoZSBwYXJlbnQgbm9kZSBoYXMgbm8gY2hpbGQgZW50cmllcywgbm9yIGRvZXMgaXQgaGF2ZSBhIHZhbHVlXG4gICAgICAgICAgICAvLyBvbiBpdHNlbGYuIEl0IGNhbiBiZSBnYXJiYWdlIGNvbGxlY3RlZC4gS2VlcCBnb2luZy5cbiAgICAgICAgICAgIGtleSA9IHBhcmVudC5rZXlcbiAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnRcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBUaGUgcGFyZW50IGlzIG5vdCBlbXB0eS4gU3RvcCBnYXJiYWdlIGNvbGxlY3RpbmcuXG4gICAgICBicmVha1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGEgcmV2YWxpZGF0aW5nIGVudHJ5LiBJZiBzbywgcHJvbW90ZSBpdCB0byBhXG4gICAgLy8gXCJub3JtYWxcIiBlbnRyeSwgc2luY2UgdGhlIG5vcm1hbCBvbmUgd2FzIGp1c3QgZGVsZXRlZC5cbiAgICBjb25zdCByZXZhbGlkYXRpbmdFbnRyeSA9IG1hcC5nZXQoUmV2YWxpZGF0aW9uKVxuICAgIGlmIChyZXZhbGlkYXRpbmdFbnRyeSAhPT0gdW5kZWZpbmVkICYmIHJldmFsaWRhdGluZ0VudHJ5LnZhbHVlICE9PSBudWxsKSB7XG4gICAgICBzZXRNYXBFbnRyeVZhbHVlKGVudHJ5LCByZXZhbGlkYXRpbmdFbnRyeS52YWx1ZSlcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFNpemVJbkNhY2hlTWFwPFYgZXh0ZW5kcyBNYXBWYWx1ZT4oXG4gIHZhbHVlOiBWLFxuICBzaXplOiBudW1iZXJcbik6IHZvaWQge1xuICBjb25zdCBlbnRyeSA9IHZhbHVlLnJlZlxuICBpZiAoZW50cnkgPT09IG51bGwpIHtcbiAgICAvLyBUaGlzIHZhbHVlIGlzIG5vdCBhIG1lbWJlciBvZiBhbnkgbWFwLlxuICAgIHJldHVyblxuICB9XG4gIC8vIEV4Y2VwdCBkdXJpbmcgaW5pdGlhbGl6YXRpb24gKHdoZW4gdGhlIHNpemUgaXMgc2V0IHRvIDApLCB0aGlzIGlzIHRoZSBvbmx5XG4gIC8vIHBsYWNlIHRoZSBgc2l6ZWAgZmllbGQgc2hvdWxkIGJlIHVwZGF0ZWQsIHRvIGVuc3VyZSBpdCdzIGluIHN5bmMgd2l0aCB0aGVcbiAgLy8gdGhlIExSVS5cbiAgdmFsdWUuc2l6ZSA9IHNpemVcbiAgdXBkYXRlTHJ1U2l6ZShlbnRyeSwgc2l6ZSlcbn1cbiJdLCJuYW1lcyI6WyJGYWxsYmFjayIsImNyZWF0ZUNhY2hlTWFwIiwiZGVsZXRlRnJvbUNhY2hlTWFwIiwiZGVsZXRlTWFwRW50cnkiLCJnZXRGcm9tQ2FjaGVNYXAiLCJpc1ZhbHVlRXhwaXJlZCIsInNldEluQ2FjaGVNYXAiLCJzZXRTaXplSW5DYWNoZU1hcCIsIlJldmFsaWRhdGlvbiIsImNhY2hlTWFwIiwicGFyZW50Iiwia2V5IiwidmFsdWUiLCJtYXAiLCJwcmV2IiwibmV4dCIsInNpemUiLCJnZXRPckluaXRpYWxpemUiLCJrZXlzIiwiaXNSZXZhbGlkYXRpb24iLCJlbnRyeSIsInJlbWFpbmluZ0tleXMiLCJwcmV2aW91c0tleSIsImV4aXN0aW5nRW50cnkiLCJnZXQiLCJ1bmRlZmluZWQiLCJNYXAiLCJuZXdFbnRyeSIsInNldCIsIm5vdyIsImN1cnJlbnRDYWNoZVZlcnNpb24iLCJyb290RW50cnkiLCJnZXRFbnRyeVdpdGhGYWxsYmFja0ltcGwiLCJscnVQdXQiLCJzdGFsZUF0IiwidmVyc2lvbiIsImxhemlseUV2aWN0SWZOZWVkZWQiLCJyZXN1bHQiLCJmYWxsYmFja0VudHJ5Iiwic2V0TWFwRW50cnlWYWx1ZSIsInVwZGF0ZUxydVNpemUiLCJkcm9wUmVmIiwib2xkRW50cnkiLCJyZWYiLCJkZWxldGVGcm9tTHJ1IiwicGFyZW50TWFwIiwiZGVsZXRlIiwicmV2YWxpZGF0aW5nRW50cnkiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/segment-cache/cache-map.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/segment-cache/cache.js":
|
||
/*!*************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/segment-cache/cache.js ***!
|
||
\*************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n EntryStatus: function() {\n return EntryStatus;\n },\n attemptToFulfillDynamicSegmentFromBFCache: function() {\n return attemptToFulfillDynamicSegmentFromBFCache;\n },\n attemptToUpgradeSegmentFromBFCache: function() {\n return attemptToUpgradeSegmentFromBFCache;\n },\n canNewFetchStrategyProvideMoreContent: function() {\n return canNewFetchStrategyProvideMoreContent;\n },\n convertReusedFlightRouterStateToRouteTree: function() {\n return convertReusedFlightRouterStateToRouteTree;\n },\n convertRootFlightRouterStateToRouteTree: function() {\n return convertRootFlightRouterStateToRouteTree;\n },\n convertRouteTreeToFlightRouterState: function() {\n return convertRouteTreeToFlightRouterState;\n },\n createDetachedSegmentCacheEntry: function() {\n return createDetachedSegmentCacheEntry;\n },\n createMetadataRouteTree: function() {\n return createMetadataRouteTree;\n },\n deprecated_requestOptimisticRouteCacheEntry: function() {\n return deprecated_requestOptimisticRouteCacheEntry;\n },\n fetchInlinedSegmentsOnCacheMiss: function() {\n return fetchInlinedSegmentsOnCacheMiss;\n },\n fetchRouteOnCacheMiss: function() {\n return fetchRouteOnCacheMiss;\n },\n fetchSegmentOnCacheMiss: function() {\n return fetchSegmentOnCacheMiss;\n },\n fetchSegmentPrefetchesUsingDynamicRequest: function() {\n return fetchSegmentPrefetchesUsingDynamicRequest;\n },\n fulfillRouteCacheEntry: function() {\n return fulfillRouteCacheEntry;\n },\n getCurrentRouteCacheVersion: function() {\n return getCurrentRouteCacheVersion;\n },\n getCurrentSegmentCacheVersion: function() {\n return getCurrentSegmentCacheVersion;\n },\n getStaleAt: function() {\n return getStaleAt;\n },\n getStaleTimeMs: function() {\n return getStaleTimeMs;\n },\n invalidateEntirePrefetchCache: function() {\n return invalidateEntirePrefetchCache;\n },\n invalidateRouteCacheEntries: function() {\n return invalidateRouteCacheEntries;\n },\n invalidateSegmentCacheEntries: function() {\n return invalidateSegmentCacheEntries;\n },\n markRouteEntryAsDynamicRewrite: function() {\n return markRouteEntryAsDynamicRewrite;\n },\n overwriteRevalidatingSegmentCacheEntry: function() {\n return overwriteRevalidatingSegmentCacheEntry;\n },\n pingInvalidationListeners: function() {\n return pingInvalidationListeners;\n },\n processRuntimePrefetchStream: function() {\n return processRuntimePrefetchStream;\n },\n readOrCreateRevalidatingSegmentEntry: function() {\n return readOrCreateRevalidatingSegmentEntry;\n },\n readOrCreateRouteCacheEntry: function() {\n return readOrCreateRouteCacheEntry;\n },\n readOrCreateSegmentCacheEntry: function() {\n return readOrCreateSegmentCacheEntry;\n },\n readRouteCacheEntry: function() {\n return readRouteCacheEntry;\n },\n readSegmentCacheEntry: function() {\n return readSegmentCacheEntry;\n },\n stripIsPartialByte: function() {\n return stripIsPartialByte;\n },\n upgradeToPendingSegment: function() {\n return upgradeToPendingSegment;\n },\n upsertSegmentEntry: function() {\n return upsertSegmentEntry;\n },\n waitForSegmentCacheEntry: function() {\n return waitForSegmentCacheEntry;\n },\n writeDynamicRenderResponseIntoCache: function() {\n return writeDynamicRenderResponseIntoCache;\n },\n writeRouteIntoCache: function() {\n return writeRouteIntoCache;\n },\n writeStaticStageResponseIntoCache: function() {\n return writeStaticStageResponseIntoCache;\n }\n});\nconst _varyparamsdecoding = __webpack_require__(/*! ../../../shared/lib/segment-cache/vary-params-decoding */ \"(ssr)/./node_modules/next/dist/shared/lib/segment-cache/vary-params-decoding.js\");\nconst _approuterheaders = __webpack_require__(/*! ../app-router-headers */ \"(ssr)/./node_modules/next/dist/client/components/app-router-headers.js\");\nconst _fetchserverresponse = __webpack_require__(/*! ../router-reducer/fetch-server-response */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/fetch-server-response.js\");\nconst _scheduler = __webpack_require__(/*! ./scheduler */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/scheduler.js\");\nconst _varypath = __webpack_require__(/*! ./vary-path */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/vary-path.js\");\nconst _createhreffromurl = __webpack_require__(/*! ../router-reducer/create-href-from-url */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nconst _cachekey = __webpack_require__(/*! ./cache-key */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/cache-key.js\");\nconst _routeparams = __webpack_require__(/*! ../../route-params */ \"(ssr)/./node_modules/next/dist/client/route-params.js\");\nconst _cachemap = __webpack_require__(/*! ./cache-map */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/cache-map.js\");\nconst _segmentvalueencoding = __webpack_require__(/*! ../../../shared/lib/segment-cache/segment-value-encoding */ \"(ssr)/./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js\");\nconst _flightdatahelpers = __webpack_require__(/*! ../../flight-data-helpers */ \"(ssr)/./node_modules/next/dist/client/flight-data-helpers.js\");\nconst _navigatereducer = __webpack_require__(/*! ../router-reducer/reducers/navigate-reducer */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js\");\nconst _links = __webpack_require__(/*! ../links */ \"(ssr)/./node_modules/next/dist/client/components/links.js\");\nconst _segment = __webpack_require__(/*! ../../../shared/lib/segment */ \"(ssr)/./node_modules/next/dist/shared/lib/segment.js\");\nconst _types = __webpack_require__(/*! ./types */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/types.js\");\nconst _promisewithresolvers = __webpack_require__(/*! ../../../shared/lib/promise-with-resolvers */ \"(ssr)/./node_modules/next/dist/shared/lib/promise-with-resolvers.js\");\nconst _bfcache = __webpack_require__(/*! ./bfcache */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/bfcache.js\");\nconst _optimisticroutes = __webpack_require__(/*! ./optimistic-routes */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/optimistic-routes.js\");\nconst _navigation = __webpack_require__(/*! ./navigation */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/navigation.js\");\nconst _navigationbuildid = __webpack_require__(/*! ../../navigation-build-id */ \"(ssr)/./node_modules/next/dist/client/navigation-build-id.js\");\nconst _constants = __webpack_require__(/*! ../../../lib/constants */ \"(ssr)/./node_modules/next/dist/lib/constants.js\");\nfunction getStaleTimeMs(staleTimeSeconds) {\n return Math.max(staleTimeSeconds, 30) * 1000;\n}\nvar EntryStatus = /*#__PURE__*/ function(EntryStatus) {\n EntryStatus[EntryStatus[\"Empty\"] = 0] = \"Empty\";\n EntryStatus[EntryStatus[\"Pending\"] = 1] = \"Pending\";\n EntryStatus[EntryStatus[\"Fulfilled\"] = 2] = \"Fulfilled\";\n EntryStatus[EntryStatus[\"Rejected\"] = 3] = \"Rejected\";\n return EntryStatus;\n}({});\nconst isOutputExportMode = false && 0;\nconst MetadataOnlyRequestTree = [\n '',\n {},\n null,\n 'metadata-only'\n];\nlet routeCacheMap = (0, _cachemap.createCacheMap)();\nlet segmentCacheMap = (0, _cachemap.createCacheMap)();\n// All invalidation listeners for the whole cache are tracked in single set.\n// Since we don't yet support tag or path-based invalidation, there's no point\n// tracking them any more granularly than this. Once we add granular\n// invalidation, that may change, though generally the model is to just notify\n// the listeners and allow the caller to poll the prefetch cache with a new\n// prefetch task if desired.\nlet invalidationListeners = null;\n// Incrementing counters used to track cache invalidations. Route and segment\n// caches have separate versions so they can be invalidated independently.\n// Invalidation does not eagerly evict anything from the cache; entries are\n// lazily evicted when read.\nlet currentRouteCacheVersion = 0;\nlet currentSegmentCacheVersion = 0;\nfunction getCurrentRouteCacheVersion() {\n return currentRouteCacheVersion;\n}\nfunction getCurrentSegmentCacheVersion() {\n return currentSegmentCacheVersion;\n}\nfunction invalidateEntirePrefetchCache(nextUrl, tree) {\n currentRouteCacheVersion++;\n currentSegmentCacheVersion++;\n (0, _links.pingVisibleLinks)(nextUrl, tree);\n pingInvalidationListeners(nextUrl, tree);\n}\nfunction invalidateRouteCacheEntries(nextUrl, tree) {\n currentRouteCacheVersion++;\n (0, _links.pingVisibleLinks)(nextUrl, tree);\n pingInvalidationListeners(nextUrl, tree);\n}\nfunction invalidateSegmentCacheEntries(nextUrl, tree) {\n currentSegmentCacheVersion++;\n (0, _links.pingVisibleLinks)(nextUrl, tree);\n pingInvalidationListeners(nextUrl, tree);\n}\nfunction attachInvalidationListener(task) {\n // This function is called whenever a prefetch task reads a cache entry. If\n // the task has an onInvalidate function associated with it — i.e. the one\n // optionally passed to router.prefetch(onInvalidate) — then we attach that\n // listener to the every cache entry that the task reads. Then, if an entry\n // is invalidated, we call the function.\n if (task.onInvalidate !== null) {\n if (invalidationListeners === null) {\n invalidationListeners = new Set([\n task\n ]);\n } else {\n invalidationListeners.add(task);\n }\n }\n}\nfunction notifyInvalidationListener(task) {\n const onInvalidate = task.onInvalidate;\n if (onInvalidate !== null) {\n // Clear the callback from the task object to guarantee it's not called more\n // than once.\n task.onInvalidate = null;\n // This is a user-space function, so we must wrap in try/catch.\n try {\n onInvalidate();\n } catch (error) {\n if (typeof reportError === 'function') {\n reportError(error);\n } else {\n console.error(error);\n }\n }\n }\n}\nfunction pingInvalidationListeners(nextUrl, tree) {\n // The rough equivalent of pingVisibleLinks, but for onInvalidate callbacks.\n // This is called when the Next-Url or the base tree changes, since those\n // may affect the result of a prefetch task. It's also called after a\n // cache invalidation.\n if (invalidationListeners !== null) {\n const tasks = invalidationListeners;\n invalidationListeners = null;\n for (const task of tasks){\n if ((0, _scheduler.isPrefetchTaskDirty)(task, nextUrl, tree)) {\n notifyInvalidationListener(task);\n }\n }\n }\n}\nfunction readRouteCacheEntry(now, key) {\n const varyPath = (0, _varypath.getRouteVaryPath)(key.pathname, key.search, key.nextUrl);\n const isRevalidation = false;\n const existingEntry = (0, _cachemap.getFromCacheMap)(now, getCurrentRouteCacheVersion(), routeCacheMap, varyPath, isRevalidation);\n if (existingEntry !== null) {\n return existingEntry;\n }\n // No cache hit. Attempt to construct from template using the new\n // optimistic routing mechanism (pattern-based matching).\n if (false) {}\n return null;\n}\nfunction readSegmentCacheEntry(now, varyPath) {\n const isRevalidation = false;\n return (0, _cachemap.getFromCacheMap)(now, getCurrentSegmentCacheVersion(), segmentCacheMap, varyPath, isRevalidation);\n}\nfunction readRevalidatingSegmentCacheEntry(now, varyPath) {\n const isRevalidation = true;\n return (0, _cachemap.getFromCacheMap)(now, getCurrentSegmentCacheVersion(), segmentCacheMap, varyPath, isRevalidation);\n}\nfunction waitForSegmentCacheEntry(pendingEntry) {\n // Because the entry is pending, there's already a in-progress request.\n // Attach a promise to the entry that will resolve when the server responds.\n let promiseWithResolvers = pendingEntry.promise;\n if (promiseWithResolvers === null) {\n promiseWithResolvers = pendingEntry.promise = (0, _promisewithresolvers.createPromiseWithResolvers)();\n } else {\n // There's already a promise we can use\n }\n return promiseWithResolvers.promise;\n}\nfunction createDetachedRouteCacheEntry() {\n return {\n canonicalUrl: null,\n status: 0,\n blockedTasks: null,\n tree: null,\n metadata: null,\n // This is initialized to true because we don't know yet whether the route\n // could be intercepted. It's only set to false once we receive a response\n // from the server.\n couldBeIntercepted: true,\n // Similarly, we don't yet know if the route supports PPR.\n supportsPerSegmentPrefetching: false,\n renderedSearch: null,\n // Map-related fields\n ref: null,\n size: 0,\n // Since this is an empty entry, there's no reason to ever evict it. It will\n // be updated when the data is populated.\n staleAt: Infinity,\n version: getCurrentRouteCacheVersion()\n };\n}\nfunction readOrCreateRouteCacheEntry(now, task, key) {\n attachInvalidationListener(task);\n const existingEntry = readRouteCacheEntry(now, key);\n if (existingEntry !== null) {\n return existingEntry;\n }\n // Create a pending entry and add it to the cache.\n const pendingEntry = createDetachedRouteCacheEntry();\n const varyPath = (0, _varypath.getRouteVaryPath)(key.pathname, key.search, key.nextUrl);\n const isRevalidation = false;\n (0, _cachemap.setInCacheMap)(routeCacheMap, varyPath, pendingEntry, isRevalidation);\n return pendingEntry;\n}\nfunction deprecated_requestOptimisticRouteCacheEntry(now, requestedUrl, nextUrl) {\n // This function is called during a navigation when there was no matching\n // route tree in the prefetch cache. Before de-opting to a blocking,\n // unprefetched navigation, we will first attempt to construct an \"optimistic\"\n // route tree by checking the cache for similar routes.\n //\n // Check if there's a route with the same pathname, but with different\n // search params. We can then base our optimistic route tree on this entry.\n //\n // Conceptually, we are simulating what would happen if we did perform a\n // prefetch the requested URL, under the assumption that the server will\n // not redirect or rewrite the request in a different manner than the\n // base route tree. This assumption might not hold, in which case we'll have\n // to recover when we perform the dynamic navigation request. However, this\n // is what would happen if a route were dynamically rewritten/redirected\n // in between the prefetch and the navigation. So the logic needs to exist\n // to handle this case regardless.\n // Look for a route with the same pathname, but with an empty search string.\n // TODO: There's nothing inherently special about the empty search string;\n // it's chosen somewhat arbitrarily, with the rationale that it's the most\n // likely one to exist. But we should update this to match _any_ search\n // string. The plan is to generalize this logic alongside other improvements\n // related to \"fallback\" cache entries.\n const requestedSearch = requestedUrl.search;\n if (requestedSearch === '') {\n // The caller would have already checked if a route with an empty search\n // string is in the cache. So we can bail out here.\n return null;\n }\n const urlWithoutSearchParams = new URL(requestedUrl);\n urlWithoutSearchParams.search = '';\n const routeWithNoSearchParams = readRouteCacheEntry(now, (0, _cachekey.createCacheKey)(urlWithoutSearchParams.href, nextUrl));\n if (routeWithNoSearchParams === null || routeWithNoSearchParams.status !== 2) {\n // Bail out of constructing an optimistic route tree. This will result in\n // a blocking, unprefetched navigation.\n return null;\n }\n // Now we have a base route tree we can \"patch\" with our optimistic values.\n // Optimistically assume that redirects for the requested pathname do\n // not vary on the search string. Therefore, if the base route was\n // redirected to a different search string, then the optimistic route\n // should be redirected to the same search string. Otherwise, we use\n // the requested search string.\n const canonicalUrlForRouteWithNoSearchParams = new URL(routeWithNoSearchParams.canonicalUrl, requestedUrl.origin);\n const optimisticCanonicalSearch = canonicalUrlForRouteWithNoSearchParams.search !== '' ? canonicalUrlForRouteWithNoSearchParams.search : requestedSearch;\n // Similarly, optimistically assume that rewrites for the requested\n // pathname do not vary on the search string. Therefore, if the base\n // route was rewritten to a different search string, then the optimistic\n // route should be rewritten to the same search string. Otherwise, we use\n // the requested search string.\n const optimisticRenderedSearch = routeWithNoSearchParams.renderedSearch !== '' ? routeWithNoSearchParams.renderedSearch : requestedSearch;\n const optimisticUrl = new URL(routeWithNoSearchParams.canonicalUrl, location.origin);\n optimisticUrl.search = optimisticCanonicalSearch;\n const optimisticCanonicalUrl = (0, _createhreffromurl.createHrefFromUrl)(optimisticUrl);\n const optimisticRouteTree = deprecated_createOptimisticRouteTree(routeWithNoSearchParams.tree, optimisticRenderedSearch);\n const optimisticMetadataTree = deprecated_createOptimisticRouteTree(routeWithNoSearchParams.metadata, optimisticRenderedSearch);\n // Clone the base route tree, and override the relevant fields with our\n // optimistic values.\n const optimisticEntry = {\n canonicalUrl: optimisticCanonicalUrl,\n status: 2,\n // This isn't cloned because it's instance-specific\n blockedTasks: null,\n tree: optimisticRouteTree,\n metadata: optimisticMetadataTree,\n couldBeIntercepted: routeWithNoSearchParams.couldBeIntercepted,\n supportsPerSegmentPrefetching: routeWithNoSearchParams.supportsPerSegmentPrefetching,\n hasDynamicRewrite: routeWithNoSearchParams.hasDynamicRewrite,\n // Override the rendered search with the optimistic value.\n renderedSearch: optimisticRenderedSearch,\n // Map-related fields\n ref: null,\n size: 0,\n staleAt: routeWithNoSearchParams.staleAt,\n version: routeWithNoSearchParams.version\n };\n // Do not insert this entry into the cache. It only exists so we can\n // perform the current navigation. Just return it to the caller.\n return optimisticEntry;\n}\nfunction deprecated_createOptimisticRouteTree(tree, newRenderedSearch) {\n // Create a new route tree that identical to the original one except for\n // the rendered search string, which is contained in the vary path.\n let clonedSlots = null;\n const originalSlots = tree.slots;\n if (originalSlots !== null) {\n clonedSlots = {};\n for(const parallelRouteKey in originalSlots){\n const childTree = originalSlots[parallelRouteKey];\n clonedSlots[parallelRouteKey] = deprecated_createOptimisticRouteTree(childTree, newRenderedSearch);\n }\n }\n // We only need to clone the vary path if the route is a page.\n if (tree.isPage) {\n return {\n requestKey: tree.requestKey,\n segment: tree.segment,\n refreshState: tree.refreshState,\n varyPath: (0, _varypath.clonePageVaryPathWithNewSearchParams)(tree.varyPath, newRenderedSearch),\n isPage: true,\n slots: clonedSlots,\n prefetchHints: tree.prefetchHints\n };\n }\n return {\n requestKey: tree.requestKey,\n segment: tree.segment,\n refreshState: tree.refreshState,\n varyPath: tree.varyPath,\n isPage: false,\n slots: clonedSlots,\n prefetchHints: tree.prefetchHints\n };\n}\nfunction readOrCreateSegmentCacheEntry(now, fetchStrategy, tree) {\n const existingEntry = readSegmentCacheEntry(now, tree.varyPath);\n if (existingEntry !== null) {\n return existingEntry;\n }\n // Create a pending entry and add it to the cache. The stale time is set to a\n // default value; the actual stale time will be set when the entry is\n // fulfilled with data from the server response.\n const varyPathForRequest = (0, _varypath.getSegmentVaryPathForRequest)(fetchStrategy, tree);\n const pendingEntry = createDetachedSegmentCacheEntry(now);\n const isRevalidation = false;\n (0, _cachemap.setInCacheMap)(segmentCacheMap, varyPathForRequest, pendingEntry, isRevalidation);\n return pendingEntry;\n}\nfunction readOrCreateRevalidatingSegmentEntry(now, fetchStrategy, tree) {\n // This function is called when we've already confirmed that a particular\n // segment is cached, but we want to perform another request anyway in case it\n // returns more complete and/or fresher data than we already have. The logic\n // for deciding whether to replace the existing entry is handled elsewhere;\n // this function just handles retrieving a cache entry that we can use to\n // track the revalidation.\n //\n // The reason revalidations are stored in the cache is because we need to be\n // able to dedupe multiple revalidation requests. The reason they have to be\n // handled specially is because we shouldn't overwrite a \"normal\" entry if\n // one exists at the same keypath. So, for each internal cache location, there\n // is a special \"revalidation\" slot that is used solely for this purpose.\n //\n // You can think of it as if all the revalidation entries were stored in a\n // separate cache map from the canonical entries, and then transfered to the\n // canonical cache map once the request is complete — this isn't how it's\n // actually implemented, since it's more efficient to store them in the same\n // data structure as the normal entries, but that's how it's modeled\n // conceptually.\n // TODO: Once we implement Fallback behavior for params, where an entry is\n // re-keyed based on response information, we'll need to account for the\n // possibility that the keypath of the previous entry is more generic than\n // the keypath of the revalidating entry. In other words, the server could\n // return a less generic entry upon revalidation. For now, though, this isn't\n // a concern because the keypath is based solely on the prefetch strategy,\n // not on data contained in the response.\n const existingEntry = readRevalidatingSegmentCacheEntry(now, tree.varyPath);\n if (existingEntry !== null) {\n return existingEntry;\n }\n // Create a pending entry and add it to the cache. The stale time is set to a\n // default value; the actual stale time will be set when the entry is\n // fulfilled with data from the server response.\n const varyPathForRequest = (0, _varypath.getSegmentVaryPathForRequest)(fetchStrategy, tree);\n const pendingEntry = createDetachedSegmentCacheEntry(now);\n const isRevalidation = true;\n (0, _cachemap.setInCacheMap)(segmentCacheMap, varyPathForRequest, pendingEntry, isRevalidation);\n return pendingEntry;\n}\nfunction overwriteRevalidatingSegmentCacheEntry(now, fetchStrategy, tree) {\n // This function is called when we've already decided to replace an existing\n // revalidation entry. Create a new entry and write it into the cache,\n // overwriting the previous value. The stale time is set to a default value;\n // the actual stale time will be set when the entry is fulfilled with data\n // from the server response.\n const varyPathForRequest = (0, _varypath.getSegmentVaryPathForRequest)(fetchStrategy, tree);\n const pendingEntry = createDetachedSegmentCacheEntry(now);\n const isRevalidation = true;\n (0, _cachemap.setInCacheMap)(segmentCacheMap, varyPathForRequest, pendingEntry, isRevalidation);\n return pendingEntry;\n}\nfunction upsertSegmentEntry(now, varyPath, candidateEntry) {\n // We have a new entry that has not yet been inserted into the cache. Before\n // we do so, we need to confirm whether it takes precedence over the existing\n // entry (if one exists).\n // TODO: We should not upsert an entry if its key was invalidated in the time\n // since the request was made. We can do that by passing the \"owner\" entry to\n // this function and confirming it's the same as `existingEntry`.\n if ((0, _cachemap.isValueExpired)(now, getCurrentSegmentCacheVersion(), candidateEntry)) {\n // The entry is expired. We cannot upsert it.\n return null;\n }\n const existingEntry = readSegmentCacheEntry(now, varyPath);\n if (existingEntry !== null) {\n // Don't replace a more specific segment with a less-specific one. A case where this\n // might happen is if the existing segment was fetched via\n // `<Link prefetch={true}>`.\n if (// than the segment we already have in the cache, so it can't have more content.\n candidateEntry.fetchStrategy !== existingEntry.fetchStrategy && !canNewFetchStrategyProvideMoreContent(existingEntry.fetchStrategy, candidateEntry.fetchStrategy) || // The existing entry isn't partial, but the new one is.\n // (TODO: can this be true if `candidateEntry.fetchStrategy >= existingEntry.fetchStrategy`?)\n !existingEntry.isPartial && candidateEntry.isPartial) {\n // We're going to leave revalidating entry in the cache so that it doesn't\n // get revalidated again unnecessarily. Downgrade the Fulfilled entry to\n // Rejected and null out the data so it can be garbage collected. We leave\n // `staleAt` intact to prevent subsequent revalidation attempts only until\n // the entry expires.\n const rejectedEntry = candidateEntry;\n rejectedEntry.status = 3;\n rejectedEntry.rsc = null;\n return null;\n }\n // Evict the existing entry from the cache.\n (0, _cachemap.deleteFromCacheMap)(existingEntry);\n }\n const isRevalidation = false;\n (0, _cachemap.setInCacheMap)(segmentCacheMap, varyPath, candidateEntry, isRevalidation);\n return candidateEntry;\n}\nfunction createDetachedSegmentCacheEntry(now) {\n // Default stale time for pending segment cache entries. The actual stale time\n // is set when the entry is fulfilled with data from the server response.\n const staleAt = now + 30 * 1000;\n const emptyEntry = {\n status: 0,\n // Default to assuming the fetch strategy will be PPR. This will be updated\n // when a fetch is actually initiated.\n fetchStrategy: _types.FetchStrategy.PPR,\n rsc: null,\n isPartial: true,\n promise: null,\n // Map-related fields\n ref: null,\n size: 0,\n staleAt,\n version: 0\n };\n return emptyEntry;\n}\nfunction upgradeToPendingSegment(emptyEntry, fetchStrategy) {\n const pendingEntry = emptyEntry;\n pendingEntry.status = 1;\n pendingEntry.fetchStrategy = fetchStrategy;\n if (fetchStrategy === _types.FetchStrategy.Full) {\n // We can assume the response will contain the full segment data. Set this\n // to false so we know it's OK to omit this segment from any navigation\n // requests that may happen while the data is still pending.\n pendingEntry.isPartial = false;\n }\n // Set the version here, since this is right before the request is initiated.\n // The next time the segment cache version is incremented, the entry will\n // effectively be evicted. This happens before initiating the request, rather\n // than when receiving the response, because it's guaranteed to happen\n // before the data is read on the server.\n pendingEntry.version = getCurrentSegmentCacheVersion();\n return pendingEntry;\n}\nfunction attemptToFulfillDynamicSegmentFromBFCache(now, segment, tree) {\n // Attempts to fulfill an empty segment cache entry using data from the\n // bfcache. This is only valid during a Full prefetch (i.e. one that includes\n // dynamic data), because the bfcache stores data from navigations which\n // always include dynamic data.\n // We always use the canonical vary path when checking the bfcache. This is\n // the same operation we'd use to access the cache during a\n // regular navigation.\n const varyPath = tree.varyPath;\n // Read from the BFCache without expiring it (pass -1). We check freshness\n // ourselves using navigatedAt, because the BFCache's staleAt may have been\n // overridden by a per-page unstable_dynamicStaleTime and can't be used to\n // derive the original request time.\n const bfcacheEntry = (0, _bfcache.readFromBFCache)(varyPath);\n if (bfcacheEntry !== null) {\n // The stale time for dynamic prefetches (default: 5 mins) is different\n // from the stale time for regular navigations (default: 0 secs). Use\n // navigatedAt to compute the correct expiry for prefetch purposes.\n const dynamicPrefetchStaleAt = bfcacheEntry.navigatedAt + _navigatereducer.STATIC_STALETIME_MS;\n if (now > dynamicPrefetchStaleAt) {\n return null;\n }\n const pendingSegment = upgradeToPendingSegment(segment, _types.FetchStrategy.Full);\n const isPartial = false;\n return fulfillSegmentCacheEntry(pendingSegment, bfcacheEntry.rsc, dynamicPrefetchStaleAt, isPartial);\n }\n return null;\n}\nfunction attemptToUpgradeSegmentFromBFCache(now, tree) {\n const varyPath = tree.varyPath;\n const bfcacheEntry = (0, _bfcache.readFromBFCache)(varyPath);\n if (bfcacheEntry !== null) {\n const dynamicPrefetchStaleAt = bfcacheEntry.navigatedAt + _navigatereducer.STATIC_STALETIME_MS;\n if (now > dynamicPrefetchStaleAt) {\n return null;\n }\n const pendingSegment = upgradeToPendingSegment(createDetachedSegmentCacheEntry(now), _types.FetchStrategy.Full);\n const isPartial = false;\n const newEntry = fulfillSegmentCacheEntry(pendingSegment, bfcacheEntry.rsc, dynamicPrefetchStaleAt, isPartial);\n const segmentVaryPath = (0, _varypath.getSegmentVaryPathForRequest)(_types.FetchStrategy.Full, tree);\n const upserted = upsertSegmentEntry(now, segmentVaryPath, newEntry);\n if (upserted !== null && upserted.status === 2) {\n return upserted;\n }\n }\n return null;\n}\nfunction pingBlockedTasks(entry) {\n const blockedTasks = entry.blockedTasks;\n if (blockedTasks !== null) {\n for (const task of blockedTasks){\n (0, _scheduler.pingPrefetchTask)(task);\n }\n entry.blockedTasks = null;\n }\n}\nfunction createMetadataRouteTree(metadataVaryPath) {\n // The Head is not actually part of the route tree, but other than that, it's\n // fetched and cached like a segment. Some functions expect a RouteTree\n // object, so rather than fork the logic in all those places, we use this\n // \"fake\" one.\n const metadata = {\n requestKey: _segmentvalueencoding.HEAD_REQUEST_KEY,\n segment: _segmentvalueencoding.HEAD_REQUEST_KEY,\n refreshState: null,\n varyPath: metadataVaryPath,\n // The metadata isn't really a \"page\" (though it isn't really a \"segment\"\n // either) but for the purposes of how this field is used, it behaves like\n // one. If this logic ever gets more complex we can change this to an enum.\n isPage: true,\n slots: null,\n prefetchHints: 0\n };\n return metadata;\n}\nfunction fulfillRouteCacheEntry(now, entry, tree, metadataVaryPath, couldBeIntercepted, canonicalUrl, supportsPerSegmentPrefetching) {\n // Get the rendered search from the vary path\n const renderedSearch = (0, _varypath.getRenderedSearchFromVaryPath)(metadataVaryPath) ?? '';\n const fulfilledEntry = entry;\n fulfilledEntry.status = 2;\n fulfilledEntry.tree = tree;\n fulfilledEntry.metadata = createMetadataRouteTree(metadataVaryPath);\n // Route structure is essentially static — it only changes on deploy.\n // Always use the static stale time.\n // NOTE: An exception is rewrites/redirects in middleware or proxy, which can\n // change routes dynamically. We have other strategies for handling those.\n fulfilledEntry.staleAt = now + _navigatereducer.STATIC_STALETIME_MS;\n fulfilledEntry.couldBeIntercepted = couldBeIntercepted;\n fulfilledEntry.canonicalUrl = canonicalUrl;\n fulfilledEntry.renderedSearch = renderedSearch;\n fulfilledEntry.supportsPerSegmentPrefetching = supportsPerSegmentPrefetching;\n fulfilledEntry.hasDynamicRewrite = false;\n pingBlockedTasks(entry);\n return fulfilledEntry;\n}\nfunction writeRouteIntoCache(now, pathname, nextUrl, tree, metadataVaryPath, couldBeIntercepted, canonicalUrl, supportsPerSegmentPrefetching) {\n const pendingEntry = createDetachedRouteCacheEntry();\n const fulfilledEntry = fulfillRouteCacheEntry(now, pendingEntry, tree, metadataVaryPath, couldBeIntercepted, canonicalUrl, supportsPerSegmentPrefetching);\n const renderedSearch = fulfilledEntry.renderedSearch;\n const varyPath = (0, _varypath.getFulfilledRouteVaryPath)(pathname, renderedSearch, nextUrl, couldBeIntercepted);\n const isRevalidation = false;\n (0, _cachemap.setInCacheMap)(routeCacheMap, varyPath, fulfilledEntry, isRevalidation);\n return fulfilledEntry;\n}\nfunction markRouteEntryAsDynamicRewrite(entry) {\n entry.hasDynamicRewrite = true;\n// Note: The caller is responsible for also calling invalidateRouteCacheEntries\n// to invalidate other entries that may have been derived from this template\n// before we knew it had a dynamic rewrite.\n}\nfunction fulfillSegmentCacheEntry(segmentCacheEntry, rsc, staleAt, isPartial) {\n const fulfilledEntry = segmentCacheEntry;\n fulfilledEntry.status = 2;\n fulfilledEntry.rsc = rsc;\n fulfilledEntry.staleAt = staleAt;\n fulfilledEntry.isPartial = isPartial;\n // Resolve any listeners that were waiting for this data.\n if (segmentCacheEntry.promise !== null) {\n segmentCacheEntry.promise.resolve(fulfilledEntry);\n // Free the promise for garbage collection.\n fulfilledEntry.promise = null;\n }\n return fulfilledEntry;\n}\nfunction rejectRouteCacheEntry(entry, staleAt) {\n const rejectedEntry = entry;\n rejectedEntry.status = 3;\n rejectedEntry.staleAt = staleAt;\n pingBlockedTasks(entry);\n}\nfunction rejectSegmentCacheEntry(entry, staleAt) {\n const rejectedEntry = entry;\n rejectedEntry.status = 3;\n rejectedEntry.staleAt = staleAt;\n if (entry.promise !== null) {\n // NOTE: We don't currently propagate the reason the prefetch was canceled\n // but we could by accepting a `reason` argument.\n entry.promise.resolve(null);\n entry.promise = null;\n }\n}\nfunction convertRootTreePrefetchToRouteTree(rootTree, renderedPathname, renderedSearch, acc) {\n // Remove trailing and leading slashes\n const pathnameParts = renderedPathname.split('/').filter((p)=>p !== '');\n const index = 0;\n const rootSegment = _segmentvalueencoding.ROOT_SEGMENT_REQUEST_KEY;\n return convertTreePrefetchToRouteTree(rootTree.tree, rootSegment, null, _segmentvalueencoding.ROOT_SEGMENT_REQUEST_KEY, pathnameParts, index, renderedSearch, acc);\n}\nfunction convertTreePrefetchToRouteTree(prefetch, segment, partialVaryPath, requestKey, pathnameParts, pathnamePartsIndex, renderedSearch, acc) {\n // Converts the route tree sent by the server into the format used by the\n // cache. The cached version of the tree includes additional fields, such as a\n // cache key for each segment. Since this is frequently accessed, we compute\n // it once instead of on every access. This same cache key is also used to\n // request the segment from the server.\n let slots = null;\n let isPage;\n let varyPath;\n const prefetchSlots = prefetch.slots;\n if (prefetchSlots !== null) {\n isPage = false;\n varyPath = (0, _varypath.finalizeLayoutVaryPath)(requestKey, partialVaryPath);\n slots = {};\n for(let parallelRouteKey in prefetchSlots){\n const childPrefetch = prefetchSlots[parallelRouteKey];\n const childSegmentName = childPrefetch.name;\n const childParam = childPrefetch.param;\n let childDoesAppearInURL;\n let childSegment;\n let childPartialVaryPath;\n if (childParam !== null) {\n // This segment is parameterized. Get the param from the pathname.\n const childParamValue = (0, _routeparams.parseDynamicParamFromURLPart)(childParam.type, pathnameParts, pathnamePartsIndex);\n // Assign a cache key to the segment, based on the param value. In the\n // pre-Segment Cache implementation, the server computes this and sends\n // it in the body of the response. In the Segment Cache implementation,\n // the server sends an empty string and we fill it in here.\n // TODO: We're intentionally not adding the search param to page\n // segments here; it's tracked separately and added back during a read.\n // This would clearer if we waited to construct the segment until it's\n // read from the cache, since that's effectively what we're\n // doing anyway.\n const childParamKey = // cacheComponents is enabled.\n childParam.key !== null ? childParam.key : (0, _routeparams.getCacheKeyForDynamicParam)(childParamValue, '');\n childPartialVaryPath = (0, _varypath.appendLayoutVaryPath)(partialVaryPath, childParamKey, childSegmentName);\n childSegment = [\n childSegmentName,\n childParamKey,\n childParam.type,\n childParam.siblings\n ];\n childDoesAppearInURL = true;\n } else {\n // This segment does not have a param. Inherit the partial vary path of\n // the parent.\n childPartialVaryPath = partialVaryPath;\n childSegment = childSegmentName;\n childDoesAppearInURL = (0, _routeparams.doesStaticSegmentAppearInURL)(childSegmentName);\n }\n // Only increment the index if the segment appears in the URL. If it's a\n // \"virtual\" segment, like a route group, it remains the same.\n const childPathnamePartsIndex = childDoesAppearInURL ? pathnamePartsIndex + 1 : pathnamePartsIndex;\n const childRequestKeyPart = (0, _segmentvalueencoding.createSegmentRequestKeyPart)(childSegment);\n const childRequestKey = (0, _segmentvalueencoding.appendSegmentRequestKeyPart)(requestKey, parallelRouteKey, childRequestKeyPart);\n slots[parallelRouteKey] = convertTreePrefetchToRouteTree(childPrefetch, childSegment, childPartialVaryPath, childRequestKey, pathnameParts, childPathnamePartsIndex, renderedSearch, acc);\n }\n } else {\n if (requestKey.endsWith(_segment.PAGE_SEGMENT_KEY)) {\n // This is a page segment.\n isPage = true;\n varyPath = (0, _varypath.finalizePageVaryPath)(requestKey, renderedSearch, partialVaryPath);\n // The metadata \"segment\" is not part the route tree, but it has the same\n // conceptual params as a page segment. Write the vary path into the\n // accumulator object. If there are multiple parallel pages, we use the\n // first one. Which page we choose is arbitrary as long as it's\n // consistently the same one every time every time. See\n // finalizeMetadataVaryPath for more details.\n if (acc.metadataVaryPath === null) {\n acc.metadataVaryPath = (0, _varypath.finalizeMetadataVaryPath)(requestKey, renderedSearch, partialVaryPath);\n }\n } else {\n // This is a layout segment.\n isPage = false;\n varyPath = (0, _varypath.finalizeLayoutVaryPath)(requestKey, partialVaryPath);\n }\n }\n return {\n requestKey,\n segment,\n refreshState: null,\n // TODO: Cheating the type system here a bit because TypeScript can't tell\n // that the type of isPage and varyPath are consistent. The fix would be to\n // create separate constructors and call the appropriate one from each of\n // the branches above. Just seems a bit overkill only for one field so I'll\n // leave it as-is for now. If isPage were wrong it would break the behavior\n // and we'd catch it quickly, anyway.\n varyPath: varyPath,\n isPage: isPage,\n slots,\n prefetchHints: prefetch.prefetchHints\n };\n}\nfunction convertRootFlightRouterStateToRouteTree(flightRouterState, renderedSearch, acc) {\n return convertFlightRouterStateToRouteTree(flightRouterState, _segmentvalueencoding.ROOT_SEGMENT_REQUEST_KEY, null, renderedSearch, acc);\n}\nfunction convertReusedFlightRouterStateToRouteTree(parentRouteTree, parallelRouteKey, flightRouterState, renderedSearch, acc) {\n // Create a RouteTree for a FlightRouterState that was reused from an older\n // route. This happens during a navigation when a parallel route slot does not\n // match the target route; we reuse whatever slot was already active.\n // Unlike a FlightRouterState, the RouteTree type contains backreferences to\n // the parent segments. Append the vary path to the parent's vary path.\n const parentPartialVaryPath = parentRouteTree.isPage ? (0, _varypath.getPartialPageVaryPath)(parentRouteTree.varyPath) : (0, _varypath.getPartialLayoutVaryPath)(parentRouteTree.varyPath);\n const segment = flightRouterState[0];\n // And the request key.\n const parentRequestKey = parentRouteTree.requestKey;\n const requestKeyPart = (0, _segmentvalueencoding.createSegmentRequestKeyPart)(segment);\n const requestKey = (0, _segmentvalueencoding.appendSegmentRequestKeyPart)(parentRequestKey, parallelRouteKey, requestKeyPart);\n return convertFlightRouterStateToRouteTree(flightRouterState, requestKey, parentPartialVaryPath, renderedSearch, acc);\n}\nfunction convertFlightRouterStateToRouteTree(flightRouterState, requestKey, parentPartialVaryPath, parentRenderedSearch, acc) {\n const originalSegment = flightRouterState[0];\n // If the FlightRouterState has a refresh state, then this segment is part of\n // an inactive parallel route. It has a different rendered search query than\n // the outer parent route. In order to construct the inactive route correctly,\n // we must restore the query that was originally used to render it.\n const compressedRefreshState = flightRouterState[2] ?? null;\n const refreshState = compressedRefreshState !== null ? {\n canonicalUrl: compressedRefreshState[0],\n renderedSearch: compressedRefreshState[1]\n } : null;\n const renderedSearch = refreshState !== null ? refreshState.renderedSearch : parentRenderedSearch;\n let segment;\n let partialVaryPath;\n let isPage;\n let varyPath;\n if (Array.isArray(originalSegment)) {\n isPage = false;\n const paramCacheKey = originalSegment[1];\n const paramName = originalSegment[0];\n partialVaryPath = (0, _varypath.appendLayoutVaryPath)(parentPartialVaryPath, paramCacheKey, paramName);\n varyPath = (0, _varypath.finalizeLayoutVaryPath)(requestKey, partialVaryPath);\n segment = originalSegment;\n } else {\n // This segment does not have a param. Inherit the partial vary path of\n // the parent.\n partialVaryPath = parentPartialVaryPath;\n if (requestKey.endsWith(_segment.PAGE_SEGMENT_KEY)) {\n // This is a page segment.\n isPage = true;\n // The navigation implementation expects the search params to be included\n // in the segment. However, in the case of a static response, the search\n // params are omitted. So the client needs to add them back in when reading\n // from the Segment Cache.\n //\n // For consistency, we'll do this for dynamic responses, too.\n //\n // TODO: We should move search params out of FlightRouterState and handle\n // them entirely on the client, similar to our plan for dynamic params.\n segment = _segment.PAGE_SEGMENT_KEY;\n varyPath = (0, _varypath.finalizePageVaryPath)(requestKey, renderedSearch, partialVaryPath);\n // The metadata \"segment\" is not part the route tree, but it has the same\n // conceptual params as a page segment. Write the vary path into the\n // accumulator object. If there are multiple parallel pages, we use the\n // first one. Which page we choose is arbitrary as long as it's\n // consistently the same one every time every time. See\n // finalizeMetadataVaryPath for more details.\n if (acc.metadataVaryPath === null) {\n acc.metadataVaryPath = (0, _varypath.finalizeMetadataVaryPath)(requestKey, renderedSearch, partialVaryPath);\n }\n } else {\n // This is a layout segment.\n isPage = false;\n segment = originalSegment;\n varyPath = (0, _varypath.finalizeLayoutVaryPath)(requestKey, partialVaryPath);\n }\n }\n let slots = null;\n const parallelRoutes = flightRouterState[1];\n for(let parallelRouteKey in parallelRoutes){\n const childRouterState = parallelRoutes[parallelRouteKey];\n const childSegment = childRouterState[0];\n // TODO: Eventually, the param values will not be included in the response\n // from the server. We'll instead fill them in on the client by parsing\n // the URL. This is where we'll do that.\n const childRequestKeyPart = (0, _segmentvalueencoding.createSegmentRequestKeyPart)(childSegment);\n const childRequestKey = (0, _segmentvalueencoding.appendSegmentRequestKeyPart)(requestKey, parallelRouteKey, childRequestKeyPart);\n const childTree = convertFlightRouterStateToRouteTree(childRouterState, childRequestKey, partialVaryPath, renderedSearch, acc);\n if (slots === null) {\n slots = {\n [parallelRouteKey]: childTree\n };\n } else {\n slots[parallelRouteKey] = childTree;\n }\n }\n return {\n requestKey,\n segment,\n refreshState,\n // TODO: Cheating the type system here a bit because TypeScript can't tell\n // that the type of isPage and varyPath are consistent. The fix would be to\n // create separate constructors and call the appropriate one from each of\n // the branches above. Just seems a bit overkill only for one field so I'll\n // leave it as-is for now. If isPage were wrong it would break the behavior\n // and we'd catch it quickly, anyway.\n varyPath: varyPath,\n isPage: isPage,\n slots,\n prefetchHints: flightRouterState[4] ?? 0\n };\n}\nfunction convertRouteTreeToFlightRouterState(routeTree) {\n const parallelRoutes = {};\n if (routeTree.slots !== null) {\n for(const parallelRouteKey in routeTree.slots){\n parallelRoutes[parallelRouteKey] = convertRouteTreeToFlightRouterState(routeTree.slots[parallelRouteKey]);\n }\n }\n const flightRouterState = [\n routeTree.segment,\n parallelRoutes,\n null,\n null\n ];\n return flightRouterState;\n}\nasync function fetchRouteOnCacheMiss(entry, key) {\n // This function is allowed to use async/await because it contains the actual\n // fetch that gets issued on a cache miss. Notice it writes the result to the\n // cache entry directly, rather than return data that is then written by\n // the caller.\n const pathname = key.pathname;\n const search = key.search;\n const nextUrl = key.nextUrl;\n const segmentPath = '/_tree';\n const headers = {\n [_approuterheaders.RSC_HEADER]: '1',\n [_approuterheaders.NEXT_ROUTER_PREFETCH_HEADER]: '1',\n [_approuterheaders.NEXT_ROUTER_SEGMENT_PREFETCH_HEADER]: segmentPath\n };\n if (nextUrl !== null) {\n headers[_approuterheaders.NEXT_URL] = nextUrl;\n }\n // Tell the server to perform a static pre-render for the Instant Navigation\n // Testing API. Static pre-renders don't normally happen during development.\n addInstantPrefetchHeaderIfLocked(headers);\n try {\n const url = new URL(pathname + search, location.origin);\n let response;\n let urlAfterRedirects;\n if (isOutputExportMode) {\n // In output: \"export\" mode, we can't use headers to request a particular\n // segment. Instead, we encode the extra request information into the URL.\n // This is not part of the \"public\" interface of the app; it's an internal\n // Next.js implementation detail that the app developer should not need to\n // concern themselves with.\n //\n // For example, to request a segment:\n //\n // Path passed to <Link>: /path/to/page\n // Path passed to fetch: /path/to/page/__next-segments/_tree\n //\n // (This is not the exact protocol, just an illustration.)\n //\n // Before we do that, though, we need to account for redirects. Even in\n // output: \"export\" mode, a proxy might redirect the page to a different\n // location, but we shouldn't assume or expect that they also redirect all\n // the segment files, too.\n //\n // To check whether the page is redirected, previously we perform a range\n // request of 64 bytes of the HTML document to check if the target page\n // is part of this app (by checking if build id matches). Only if the target\n // page is part of this app do we determine the final canonical URL.\n //\n // However, as mentioned in https://github.com/vercel/next.js/pull/85903,\n // some popular static hosting providers (like Cloudflare Pages or Render.com)\n // do not support range requests, in the worst case, the entire HTML instead\n // of 64 bytes could be returned, which is wasteful.\n //\n // So instead, we drops the check for build id here, and simply perform\n // a HEAD request to rejects 1xx/4xx/5xx responses, and then determine the\n // final URL after redirects.\n //\n // NOTE: We could embed the route tree into the HTML document, to avoid\n // a second request. We're not doing that currently because it would make\n // the HTML document larger and affect normal page loads.\n const headResponse = await fetch(url, {\n method: 'HEAD'\n });\n if (headResponse.status < 200 || headResponse.status >= 400) {\n // The target page responded w/o a successful status code\n // Could be a WAF serving a 403, or a 5xx from a backend\n //\n // Note that we can't use headResponse.ok here, because\n // Response#ok returns `false` with 3xx responses.\n rejectRouteCacheEntry(entry, Date.now() + 10 * 1000);\n return null;\n }\n urlAfterRedirects = headResponse.redirected ? new URL(headResponse.url) : url;\n response = await fetchPrefetchResponse(addSegmentPathToUrlInOutputExportMode(urlAfterRedirects, segmentPath), headers);\n } else {\n // \"Server\" mode. We can use request headers instead of the pathname.\n // TODO: The eventual plan is to get rid of our custom request headers and\n // encode everything into the URL, using a similar strategy to the\n // \"output: export\" block above.\n response = await fetchPrefetchResponse(url, headers);\n urlAfterRedirects = response !== null && response.redirected ? new URL(response.url) : url;\n }\n if (!response || !response.ok || // 204 is a Cache miss. Though theoretically this shouldn't happen when\n // PPR is enabled, because we always respond to route tree requests, even\n // if it needs to be blockingly generated on demand.\n response.status === 204 || !response.body) {\n // Server responded with an error, or with a miss. We should still cache\n // the response, but we can try again after 10 seconds.\n rejectRouteCacheEntry(entry, Date.now() + 10 * 1000);\n return null;\n }\n // TODO: The canonical URL is the href without the origin. I think\n // historically the reason for this is because the initial canonical URL\n // gets passed as a prop to the top-level React component, which means it\n // needs to be computed during SSR. If it were to include the origin, it\n // would need to always be same as location.origin on the client, to prevent\n // a hydration mismatch. To sidestep this complexity, we omit the origin.\n //\n // However, since this is neither a native URL object nor a fully qualified\n // URL string, we need to be careful about how we use it. To prevent subtle\n // mistakes, we should create a special type for it, instead of just string.\n // Or, we should just use a (readonly) URL object instead. The type of the\n // prop that we pass to seed the initial state does not need to be the same\n // type as the state itself.\n const canonicalUrl = (0, _createhreffromurl.createHrefFromUrl)(urlAfterRedirects);\n // Check whether the response varies based on the Next-Url header.\n const varyHeader = response.headers.get('vary');\n const couldBeIntercepted = varyHeader !== null && varyHeader.includes(_approuterheaders.NEXT_URL);\n // TODO: The `closed` promise was originally used to track when a streaming\n // network connection closes, so the scheduler could limit concurrent\n // connections. Now that prefetch responses are buffered, `closed` is\n // resolved immediately after buffering — before the outer function even\n // returns. This mechanism is only still meaningful for dynamic (Full)\n // prefetches, which use incremental streaming. Consider removing the\n // `closed` plumbing for buffered prefetch paths.\n const closed = (0, _promisewithresolvers.createPromiseWithResolvers)();\n // This checks whether the response was served from the per-segment cache,\n // rather than the old prefetching flow. If it fails, it implies that PPR\n // is disabled on this route.\n const routeIsPPREnabled = response.headers.get(_approuterheaders.NEXT_DID_POSTPONE_HEADER) === '2' || // In output: \"export\" mode, we can't rely on response headers. But if we\n // receive a well-formed response, we can assume it's a static response,\n // because all data is static in this mode.\n isOutputExportMode;\n if (routeIsPPREnabled) {\n const { stream: prefetchStream, size: responseSize } = await createNonTaskyPrefetchResponseStream(response.body);\n closed.resolve();\n (0, _cachemap.setSizeInCacheMap)(entry, responseSize);\n const serverData = await (0, _fetchserverresponse.createFromNextReadableStream)(prefetchStream, headers, {\n allowPartialStream: true\n });\n if ((response.headers.get(_constants.NEXT_NAV_DEPLOYMENT_ID_HEADER) ?? serverData.buildId) !== (0, _navigationbuildid.getNavigationBuildId)()) {\n // The server build does not match the client. Treat as a 404. During\n // an actual navigation, the router will trigger an MPA navigation.\n // TODO: We should cache the fact that this is an MPA navigation.\n rejectRouteCacheEntry(entry, Date.now() + 10 * 1000);\n return null;\n }\n // Get the params that were used to render the target page. These may\n // be different from the params in the request URL, if the page\n // was rewritten.\n const renderedPathname = (0, _routeparams.getRenderedPathname)(response);\n const renderedSearch = (0, _routeparams.getRenderedSearch)(response);\n // Convert the server-sent data into the RouteTree format used by the\n // client cache.\n //\n // During this traversal, we accumulate additional data into this\n // \"accumulator\" object.\n const acc = {\n metadataVaryPath: null\n };\n const routeTree = convertRootTreePrefetchToRouteTree(serverData, renderedPathname, renderedSearch, acc);\n const metadataVaryPath = acc.metadataVaryPath;\n if (metadataVaryPath === null) {\n rejectRouteCacheEntry(entry, Date.now() + 10 * 1000);\n return null;\n }\n (0, _optimisticroutes.discoverKnownRoute)(Date.now(), pathname, nextUrl, entry, routeTree, metadataVaryPath, couldBeIntercepted, canonicalUrl, routeIsPPREnabled, false // hasDynamicRewrite\n );\n } else {\n // PPR is not enabled for this route. The server responds with a\n // different format (FlightRouterState) that we need to convert.\n // TODO: We will unify the responses eventually. I'm keeping the types\n // separate for now because FlightRouterState has so many\n // overloaded concerns.\n const { stream: prefetchStream, size: responseSize } = await createNonTaskyPrefetchResponseStream(response.body);\n closed.resolve();\n (0, _cachemap.setSizeInCacheMap)(entry, responseSize);\n const serverData = await (0, _fetchserverresponse.createFromNextReadableStream)(prefetchStream, headers, {\n allowPartialStream: true\n });\n if ((response.headers.get(_constants.NEXT_NAV_DEPLOYMENT_ID_HEADER) ?? serverData.b) !== (0, _navigationbuildid.getNavigationBuildId)()) {\n // The server build does not match the client. Treat as a 404. During\n // an actual navigation, the router will trigger an MPA navigation.\n // TODO: We should cache the fact that this is an MPA navigation.\n rejectRouteCacheEntry(entry, Date.now() + 10 * 1000);\n return null;\n }\n // Read head vary params synchronously. Individual segments carry their\n // own thenables in CacheNodeSeedData.\n const headVaryParamsThenable = serverData.h;\n const headVaryParams = headVaryParamsThenable !== null ? (0, _varyparamsdecoding.readVaryParams)(headVaryParamsThenable) : null;\n writeDynamicTreeResponseIntoCache(Date.now(), // using the LoadingBoundary fetch strategy, so mark their cache entries accordingly.\n _types.FetchStrategy.LoadingBoundary, response, serverData, entry, couldBeIntercepted, canonicalUrl, routeIsPPREnabled, headVaryParams, pathname, nextUrl);\n }\n if (!couldBeIntercepted) {\n // This route will never be intercepted. So we can use this entry for all\n // requests to this route, regardless of the Next-Url header. This works\n // because when reading the cache we always check for a valid\n // non-intercepted entry first.\n // Re-key the entry. The `set` implementation handles removing it from\n // its previous position in the cache. We don't need to do anything to\n // update the LRU, because the entry is already in it.\n // TODO: Treat this as an upsert — should check if an entry already\n // exists at the new keypath, and if so, whether we should keep that\n // one instead.\n const fulfilledVaryPath = (0, _varypath.getFulfilledRouteVaryPath)(pathname, search, nextUrl, couldBeIntercepted);\n const isRevalidation = false;\n (0, _cachemap.setInCacheMap)(routeCacheMap, fulfilledVaryPath, entry, isRevalidation);\n }\n // Return a promise that resolves when the network connection closes, so\n // the scheduler can track the number of concurrent network connections.\n return {\n value: null,\n closed: closed.promise\n };\n } catch (error) {\n // Either the connection itself failed, or something bad happened while\n // decoding the response.\n rejectRouteCacheEntry(entry, Date.now() + 10 * 1000);\n return null;\n }\n}\nasync function fetchSegmentOnCacheMiss(route, segmentCacheEntry, routeKey, tree) {\n // This function is allowed to use async/await because it contains the actual\n // fetch that gets issued on a cache miss. Notice it writes the result to the\n // cache entry directly, rather than return data that is then written by\n // the caller.\n //\n // Segment fetches are non-blocking so we don't need to ping the scheduler\n // on completion.\n // Use the canonical URL to request the segment, not the original URL. These\n // are usually the same, but the canonical URL will be different if the route\n // tree response was redirected. To avoid an extra waterfall on every segment\n // request, we pass the redirected URL instead of the original one.\n const url = new URL(route.canonicalUrl, location.origin);\n const nextUrl = routeKey.nextUrl;\n const requestKey = tree.requestKey;\n const normalizedRequestKey = requestKey === _segmentvalueencoding.ROOT_SEGMENT_REQUEST_KEY ? // `_index` instead of as an empty string. This should be treated as\n // an implementation detail and not as a stable part of the protocol.\n // It just needs to match the equivalent logic that happens when\n // prerendering the responses. It should not leak outside of Next.js.\n '/_index' : requestKey;\n const headers = {\n [_approuterheaders.RSC_HEADER]: '1',\n [_approuterheaders.NEXT_ROUTER_PREFETCH_HEADER]: '1',\n [_approuterheaders.NEXT_ROUTER_SEGMENT_PREFETCH_HEADER]: normalizedRequestKey\n };\n if (nextUrl !== null) {\n headers[_approuterheaders.NEXT_URL] = nextUrl;\n }\n // Tell the server to perform a static pre-render for the Instant Navigation\n // Testing API. Static pre-renders don't normally happen during development.\n addInstantPrefetchHeaderIfLocked(headers);\n const requestUrl = isOutputExportMode ? addSegmentPathToUrlInOutputExportMode(url, normalizedRequestKey) : url;\n try {\n const response = await fetchPrefetchResponse(requestUrl, headers);\n if (!response || !response.ok || response.status === 204 || // Cache miss\n // This checks whether the response was served from the per-segment cache,\n // rather than the old prefetching flow. If it fails, it implies that PPR\n // is disabled on this route. Theoretically this should never happen\n // because we only issue requests for segments once we've verified that\n // the route supports PPR.\n response.headers.get(_approuterheaders.NEXT_DID_POSTPONE_HEADER) !== '2' && // In output: \"export\" mode, we can't rely on response headers. But if\n // we receive a well-formed response, we can assume it's a static\n // response, because all data is static in this mode.\n !isOutputExportMode || !response.body) {\n // Server responded with an error, or with a miss. We should still cache\n // the response, but we can try again after 10 seconds.\n rejectSegmentCacheEntry(segmentCacheEntry, Date.now() + 10 * 1000);\n return null;\n }\n // See TODO in fetchRouteOnCacheMiss about removing `closed` for\n // buffered prefetch paths.\n const closed = (0, _promisewithresolvers.createPromiseWithResolvers)();\n const { stream: prefetchStream, size: responseSize } = await createNonTaskyPrefetchResponseStream(response.body);\n closed.resolve();\n (0, _cachemap.setSizeInCacheMap)(segmentCacheEntry, responseSize);\n const serverData = await (0, _fetchserverresponse.createFromNextReadableStream)(prefetchStream, headers, {\n allowPartialStream: true\n });\n if ((response.headers.get(_constants.NEXT_NAV_DEPLOYMENT_ID_HEADER) ?? serverData.buildId) !== (0, _navigationbuildid.getNavigationBuildId)()) {\n // The server build does not match the client. Treat as a 404. During\n // an actual navigation, the router will trigger an MPA navigation.\n rejectSegmentCacheEntry(segmentCacheEntry, Date.now() + 10 * 1000);\n return null;\n }\n const now = Date.now();\n const staleAt = now + getStaleTimeMs(serverData.staleTime);\n const fulfilledEntry = fulfillSegmentCacheEntry(segmentCacheEntry, serverData.rsc, staleAt, serverData.isPartial);\n // If the server tells us which params the segment varies by, we can re-key\n // the entry to a more generic vary path. This allows the entry to be reused\n // across different param values for params that the segment doesn't\n // actually depend on.\n const varyParams = serverData.varyParams;\n const fulfilledVaryPath = false ? 0 : (0, _varypath.getSegmentVaryPathForRequest)(segmentCacheEntry.fetchStrategy, tree);\n // Re-key and upsert the entry at the fulfilled vary path. This ensures\n // the entry is stored at the most generic path possible based on which\n // params the segment actually depends on.\n upsertSegmentEntry(now, fulfilledVaryPath, fulfilledEntry);\n return {\n value: fulfilledEntry,\n // Return a promise that resolves when the network connection closes, so\n // the scheduler can track the number of concurrent network connections.\n closed: closed.promise\n };\n } catch (error) {\n // Either the connection itself failed, or something bad happened while\n // decoding the response.\n rejectSegmentCacheEntry(segmentCacheEntry, Date.now() + 10 * 1000);\n return null;\n }\n}\nasync function fetchInlinedSegmentsOnCacheMiss(route, routeKey, tree, spawnedEntries) {\n // When prefetch inlining is enabled, all segment data for a route is bundled\n // into a single /_inlined response instead of individual per-segment\n // requests. This function fetches that response and walks the tree to fill\n // all segment cache entries at once.\n const url = new URL(route.canonicalUrl, location.origin);\n const nextUrl = routeKey.nextUrl;\n const headers = {\n [_approuterheaders.RSC_HEADER]: '1',\n [_approuterheaders.NEXT_ROUTER_PREFETCH_HEADER]: '1',\n [_approuterheaders.NEXT_ROUTER_SEGMENT_PREFETCH_HEADER]: '/' + _segment.PAGE_SEGMENT_KEY\n };\n if (nextUrl !== null) {\n headers[_approuterheaders.NEXT_URL] = nextUrl;\n }\n addInstantPrefetchHeaderIfLocked(headers);\n try {\n const response = await fetchPrefetchResponse(url, headers);\n if (!response || !response.ok || response.status === 204 || response.headers.get(_approuterheaders.NEXT_DID_POSTPONE_HEADER) !== '2' && !isOutputExportMode || !response.body) {\n rejectSegmentEntriesIfStillPending(spawnedEntries, Date.now() + 10 * 1000);\n return null;\n }\n // See TODO in fetchRouteOnCacheMiss about removing `closed` for\n // buffered prefetch paths.\n const closed = (0, _promisewithresolvers.createPromiseWithResolvers)();\n const { stream: prefetchStream } = await createNonTaskyPrefetchResponseStream(response.body);\n closed.resolve();\n const serverData = await (0, _fetchserverresponse.createFromNextReadableStream)(prefetchStream, headers, {\n allowPartialStream: true\n });\n if ((response.headers.get(_constants.NEXT_NAV_DEPLOYMENT_ID_HEADER) ?? serverData.tree.segment.buildId) !== (0, _navigationbuildid.getNavigationBuildId)()) {\n rejectSegmentEntriesIfStillPending(spawnedEntries, Date.now() + 10 * 1000);\n return null;\n }\n const now = Date.now();\n // Walk the inlined tree in parallel with the RouteTree and fill\n // segment cache entries.\n fillInlinedSegmentEntries(now, route, tree, serverData.tree, spawnedEntries);\n // Fill the head entry.\n const headStaleAt = now + getStaleTimeMs(serverData.head.staleTime);\n const headKey = route.metadata.requestKey;\n const ownedHeadEntry = spawnedEntries.get(headKey);\n if (ownedHeadEntry !== undefined) {\n fulfillSegmentCacheEntry(ownedHeadEntry, serverData.head.rsc, headStaleAt, serverData.head.isPartial);\n } else {\n // The head was already cached. Try to upsert if the entry is empty.\n const existingEntry = readOrCreateSegmentCacheEntry(now, _types.FetchStrategy.PPR, route.metadata);\n if (existingEntry.status === 0) {\n fulfillSegmentCacheEntry(upgradeToPendingSegment(existingEntry, _types.FetchStrategy.PPR), serverData.head.rsc, headStaleAt, serverData.head.isPartial);\n }\n }\n // Reject any remaining entries that were not fulfilled by the response.\n rejectSegmentEntriesIfStillPending(spawnedEntries, Date.now() + 10 * 1000);\n return {\n value: null,\n closed: closed.promise\n };\n } catch (error) {\n rejectSegmentEntriesIfStillPending(spawnedEntries, Date.now() + 10 * 1000);\n return null;\n }\n}\nfunction fillInlinedSegmentEntries(now, route, tree, inlinedNode, spawnedEntries) {\n // Check if the spawned entries map has an entry for this segment's key.\n const segment = inlinedNode.segment;\n const staleAt = now + getStaleTimeMs(segment.staleTime);\n const ownedEntry = spawnedEntries.get(tree.requestKey);\n if (ownedEntry !== undefined) {\n // We own this entry. Fulfill it directly.\n fulfillSegmentCacheEntry(ownedEntry, segment.rsc, staleAt, segment.isPartial);\n } else {\n // Not owned by us — this is extra data from the inlined response for a\n // segment that was already cached. Try to upsert if the entry is empty.\n const existingEntry = readOrCreateSegmentCacheEntry(now, _types.FetchStrategy.PPR, tree);\n if (existingEntry.status === 0) {\n fulfillSegmentCacheEntry(upgradeToPendingSegment(existingEntry, _types.FetchStrategy.PPR), segment.rsc, staleAt, segment.isPartial);\n }\n }\n // Recurse into children.\n if (tree.slots !== null && inlinedNode.slots !== null) {\n for(const parallelRouteKey in tree.slots){\n const childTree = tree.slots[parallelRouteKey];\n const childInlinedNode = inlinedNode.slots[parallelRouteKey];\n if (childInlinedNode !== undefined) {\n fillInlinedSegmentEntries(now, route, childTree, childInlinedNode, spawnedEntries);\n }\n }\n }\n}\nasync function fetchSegmentPrefetchesUsingDynamicRequest(task, route, fetchStrategy, dynamicRequestTree, spawnedEntries) {\n const key = task.key;\n const url = new URL(route.canonicalUrl, location.origin);\n const nextUrl = key.nextUrl;\n if (spawnedEntries.size === 1 && spawnedEntries.has(route.metadata.requestKey)) {\n // The only thing pending is the head. Instruct the server to\n // skip over everything else.\n dynamicRequestTree = MetadataOnlyRequestTree;\n }\n const headers = {\n [_approuterheaders.RSC_HEADER]: '1',\n [_approuterheaders.NEXT_ROUTER_STATE_TREE_HEADER]: (0, _flightdatahelpers.prepareFlightRouterStateForRequest)(dynamicRequestTree)\n };\n if (nextUrl !== null) {\n headers[_approuterheaders.NEXT_URL] = nextUrl;\n }\n switch(fetchStrategy){\n case _types.FetchStrategy.Full:\n {\n break;\n }\n case _types.FetchStrategy.PPRRuntime:\n {\n headers[_approuterheaders.NEXT_ROUTER_PREFETCH_HEADER] = '2';\n break;\n }\n case _types.FetchStrategy.LoadingBoundary:\n {\n headers[_approuterheaders.NEXT_ROUTER_PREFETCH_HEADER] = '1';\n break;\n }\n default:\n {\n fetchStrategy;\n }\n }\n try {\n const response = await fetchPrefetchResponse(url, headers);\n if (!response || !response.ok || !response.body) {\n // Server responded with an error, or with a miss. We should still cache\n // the response, but we can try again after 10 seconds.\n rejectSegmentEntriesIfStillPending(spawnedEntries, Date.now() + 10 * 1000);\n return null;\n }\n const renderedSearch = (0, _routeparams.getRenderedSearch)(response);\n if (renderedSearch !== route.renderedSearch) {\n // The search params that were used to render the target page are\n // different from the search params in the request URL. This only happens\n // when there's a dynamic rewrite in between the tree prefetch and the\n // data prefetch.\n // TODO: For now, since this is an edge case, we reject the prefetch, but\n // the proper way to handle this is to evict the stale route tree entry\n // then fill the cache with the new response.\n rejectSegmentEntriesIfStillPending(spawnedEntries, Date.now() + 10 * 1000);\n return null;\n }\n // Track when the network connection closes. Only meaningful for Full\n // (dynamic) prefetches which use incremental streaming. For buffered\n // paths, this is resolved immediately — see TODO in fetchRouteOnCacheMiss.\n const closed = (0, _promisewithresolvers.createPromiseWithResolvers)();\n let fulfilledEntries = null;\n let prefetchStream;\n let bufferedResponseSize = null;\n if (fetchStrategy === _types.FetchStrategy.Full) {\n // Full prefetches are dynamic responses stored in the prefetch cache.\n // They don't carry vary params or other cache metadata, so there's no\n // need to buffer them. Use the incremental version to allow data to be\n // processed as it arrives.\n prefetchStream = createIncrementalPrefetchResponseStream(response.body, closed.resolve, function onResponseSizeUpdate(totalBytesReceivedSoFar) {\n // When processing a dynamic response, we don't know how large each\n // individual segment is, so approximate by assigning each segment\n // the average of the total response size.\n if (fulfilledEntries === null) {\n // Haven't received enough data yet to know which segments\n // were included.\n return;\n }\n const averageSize = totalBytesReceivedSoFar / fulfilledEntries.length;\n for (const entry of fulfilledEntries){\n (0, _cachemap.setSizeInCacheMap)(entry, averageSize);\n }\n });\n } else {\n const { stream, size } = await createNonTaskyPrefetchResponseStream(response.body);\n closed.resolve();\n prefetchStream = stream;\n bufferedResponseSize = size;\n }\n const [serverData, cacheData] = await Promise.all([\n (0, _fetchserverresponse.createFromNextReadableStream)(prefetchStream, headers, {\n allowPartialStream: true\n }),\n response.cacheData\n ]);\n // Read head vary params synchronously. Individual segments carry their\n // own thenables in CacheNodeSeedData.\n const headVaryParamsThenable = serverData.h;\n const headVaryParams = headVaryParamsThenable !== null ? (0, _varyparamsdecoding.readVaryParams)(headVaryParamsThenable) : null;\n const now = Date.now();\n const staleAt = await getStaleAt(now, serverData.s, response);\n // PPRRuntime prefetches are partial when the server marks the response\n // as '~' (Partial). Full/LoadingBoundary prefetches are always complete.\n const isResponsePartial = fetchStrategy === _types.FetchStrategy.PPRRuntime && (cacheData?.isResponsePartial ?? false);\n // Aside from writing the data into the cache, this function also returns\n // the entries that were fulfilled, so we can streamingly update their sizes\n // in the LRU as more data comes in.\n const buildId = response.headers.get(_constants.NEXT_NAV_DEPLOYMENT_ID_HEADER) ?? serverData.b;\n const flightDatas = (0, _flightdatahelpers.normalizeFlightData)(serverData.f);\n if (typeof flightDatas === 'string') {\n rejectSegmentEntriesIfStillPending(spawnedEntries, Date.now() + 10 * 1000);\n return null;\n }\n const navigationSeed = (0, _navigation.convertServerPatchToFullTree)(now, dynamicRequestTree, flightDatas, renderedSearch, _bfcache.UnknownDynamicStaleTime);\n fulfilledEntries = writeDynamicRenderResponseIntoCache(now, fetchStrategy, flightDatas, buildId, isResponsePartial, headVaryParams, staleAt, navigationSeed, spawnedEntries);\n // For buffered responses, update LRU sizes now that we know which\n // entries were fulfilled.\n if (bufferedResponseSize !== null && fulfilledEntries !== null && fulfilledEntries.length > 0) {\n const averageSize = bufferedResponseSize / fulfilledEntries.length;\n for (const entry of fulfilledEntries){\n (0, _cachemap.setSizeInCacheMap)(entry, averageSize);\n }\n }\n // Return a promise that resolves when the network connection closes, so\n // the scheduler can track the number of concurrent network connections.\n return {\n value: null,\n closed: closed.promise\n };\n } catch (error) {\n rejectSegmentEntriesIfStillPending(spawnedEntries, Date.now() + 10 * 1000);\n return null;\n }\n}\nfunction writeDynamicTreeResponseIntoCache(now, fetchStrategy, response, serverData, entry, couldBeIntercepted, canonicalUrl, routeIsPPREnabled, headVaryParams, originalPathname, nextUrl) {\n const renderedSearch = (0, _routeparams.getRenderedSearch)(response);\n const normalizedFlightDataResult = (0, _flightdatahelpers.normalizeFlightData)(serverData.f);\n if (// MPA navigation.\n typeof normalizedFlightDataResult === 'string' || normalizedFlightDataResult.length !== 1) {\n rejectRouteCacheEntry(entry, now + 10 * 1000);\n return;\n }\n const flightData = normalizedFlightDataResult[0];\n if (!flightData.isRootRender) {\n // Unexpected response format.\n rejectRouteCacheEntry(entry, now + 10 * 1000);\n return;\n }\n const flightRouterState = flightData.tree;\n // If the response was postponed, segments may contain dynamic holes.\n // The head has its own partiality flag (flightDataEntry.isHeadPartial)\n // which is handled separately in writeDynamicRenderResponseIntoCache.\n const isResponsePartial = response.headers.get(_approuterheaders.NEXT_DID_POSTPONE_HEADER) === '1';\n // Convert the server-sent data into the RouteTree format used by the\n // client cache.\n //\n // During this traversal, we accumulate additional data into this\n // \"accumulator\" object.\n const acc = {\n metadataVaryPath: null\n };\n const routeTree = convertRootFlightRouterStateToRouteTree(flightRouterState, renderedSearch, acc);\n const metadataVaryPath = acc.metadataVaryPath;\n if (metadataVaryPath === null) {\n rejectRouteCacheEntry(entry, now + 10 * 1000);\n return;\n }\n (0, _optimisticroutes.discoverKnownRoute)(now, originalPathname, nextUrl, entry, routeTree, metadataVaryPath, couldBeIntercepted, canonicalUrl, routeIsPPREnabled, false // hasDynamicRewrite\n );\n // If the server sent segment data as part of the response, we should write\n // it into the cache to prevent a second, redundant prefetch request.\n // TODO: This is a leftover branch from before Client Segment Cache was\n // enabled everywhere. Tree prefetches should never include segment data. We\n // can delete it. Leaving for a subsequent PR.\n const navigationSeed = (0, _navigation.convertServerPatchToFullTree)(now, flightRouterState, normalizedFlightDataResult, renderedSearch, _bfcache.UnknownDynamicStaleTime);\n const buildId = response.headers.get(_constants.NEXT_NAV_DEPLOYMENT_ID_HEADER) ?? serverData.b;\n writeDynamicRenderResponseIntoCache(now, fetchStrategy, normalizedFlightDataResult, buildId, isResponsePartial, headVaryParams, getStaleAtFromHeader(now, response), navigationSeed, null);\n}\nfunction rejectSegmentEntriesIfStillPending(entries, staleAt) {\n const fulfilledEntries = [];\n for (const entry of entries.values()){\n if (entry.status === 1) {\n rejectSegmentCacheEntry(entry, staleAt);\n } else if (entry.status === 2) {\n fulfilledEntries.push(entry);\n }\n }\n return fulfilledEntries;\n}\nfunction writeDynamicRenderResponseIntoCache(now, fetchStrategy, flightDatas, buildId, isResponsePartial, headVaryParams, staleAt, navigationSeed, spawnedEntries) {\n if (buildId && buildId !== (0, _navigationbuildid.getNavigationBuildId)()) {\n // The server build does not match the client. Treat as a 404. During\n // an actual navigation, the router will trigger an MPA navigation.\n if (spawnedEntries !== null) {\n rejectSegmentEntriesIfStillPending(spawnedEntries, now + 10 * 1000);\n }\n return null;\n }\n const routeTree = navigationSeed.routeTree;\n const metadataTree = navigationSeed.metadataVaryPath !== null ? createMetadataRouteTree(navigationSeed.metadataVaryPath) : null;\n for (const flightDataEntry of flightDatas){\n const seedData = flightDataEntry.seedData;\n if (seedData !== null) {\n // The data sent by the server represents only a subtree of the app. We\n // need to find the part of the task tree that matches the response.\n //\n // segmentPath represents the parent path of subtree. It's a repeating\n // pattern of parallel route key and segment:\n //\n // [string, Segment, string, Segment, string, Segment, ...]\n const segmentPath = flightDataEntry.segmentPath;\n let tree = routeTree;\n for(let i = 0; i < segmentPath.length; i += 2){\n const parallelRouteKey = segmentPath[i];\n if (tree?.slots?.[parallelRouteKey] !== undefined) {\n tree = tree.slots[parallelRouteKey];\n } else {\n if (spawnedEntries !== null) {\n rejectSegmentEntriesIfStillPending(spawnedEntries, now + 10 * 1000);\n }\n return null;\n }\n }\n writeSeedDataIntoCache(now, fetchStrategy, tree, staleAt, seedData, isResponsePartial, spawnedEntries);\n }\n const head = flightDataEntry.head;\n if (head !== null && metadataTree !== null) {\n // When Cache Components is enabled, the server conservatively marks\n // the head as partial during static generation (isPossiblyPartialHead\n // in app-render.tsx), even for fully static pages where the head is\n // actually complete. When the response is non-partial, we override\n // this since the server confirmed no dynamic content exists.\n //\n // Without Cache Components, the server always sends the correct\n // isHeadPartial value, so no override is needed.\n const isHeadPartial = !isResponsePartial && false ? 0 : flightDataEntry.isHeadPartial;\n fulfillEntrySpawnedByRuntimePrefetch(now, fetchStrategy, head, isHeadPartial, staleAt, // parameter.\n headVaryParams, metadataTree, spawnedEntries);\n }\n }\n // Any entry that's still pending was intentionally not rendered by the\n // server, because it was inside the loading boundary. Mark them as rejected\n // so we know not to fetch them again.\n // TODO: If PPR is enabled on some routes but not others, then it's possible\n // that a different page is able to do a per-segment prefetch of one of the\n // segments we're marking as rejected here. We should mark on the segment\n // somehow that the reason for the rejection is because of a non-PPR prefetch.\n // That way a per-segment prefetch knows to disregard the rejection.\n if (spawnedEntries !== null) {\n const fulfilledEntries = rejectSegmentEntriesIfStillPending(spawnedEntries, now + 10 * 1000);\n return fulfilledEntries;\n }\n return null;\n}\nfunction writeSeedDataIntoCache(now, fetchStrategy, tree, staleAt, seedData, isResponsePartial, entriesOwnedByCurrentTask) {\n // This function is used to write the result of a runtime server request\n // (CacheNodeSeedData) into the prefetch cache.\n const rsc = seedData[0];\n const isPartial = rsc === null || isResponsePartial;\n const varyParamsThenable = seedData[4];\n // Each segment carries its own vary params thenable in the seed data. The\n // thenable resolves to the set of params the segment accessed during render.\n // A null thenable means tracking was not enabled (not a prerender).\n const varyParams = varyParamsThenable !== null ? (0, _varyparamsdecoding.readVaryParams)(varyParamsThenable) : null;\n fulfillEntrySpawnedByRuntimePrefetch(now, fetchStrategy, rsc, isPartial, staleAt, varyParams, tree, entriesOwnedByCurrentTask);\n // Recursively write the child data into the cache.\n const slots = tree.slots;\n if (slots !== null) {\n const seedDataChildren = seedData[1];\n for(const parallelRouteKey in slots){\n const childTree = slots[parallelRouteKey];\n const childSeedData = seedDataChildren[parallelRouteKey];\n if (childSeedData !== null && childSeedData !== undefined) {\n writeSeedDataIntoCache(now, fetchStrategy, childTree, staleAt, childSeedData, isResponsePartial, entriesOwnedByCurrentTask);\n }\n }\n }\n}\nfunction fulfillEntrySpawnedByRuntimePrefetch(now, fetchStrategy, rsc, isPartial, staleAt, segmentVaryParams, tree, entriesOwnedByCurrentTask) {\n // We should only write into cache entries that are owned by us. Or create\n // a new one and write into that. We must never write over an entry that was\n // created by a different task, because that causes data races.\n const ownedEntry = entriesOwnedByCurrentTask !== null ? entriesOwnedByCurrentTask.get(tree.requestKey) : undefined;\n if (ownedEntry !== undefined) {\n const fulfilledEntry = fulfillSegmentCacheEntry(ownedEntry, rsc, staleAt, isPartial);\n // Re-key the entry based on which params the segment actually depends on.\n if (false) {}\n } else {\n // There's no matching entry. Attempt to create a new one.\n const possiblyNewEntry = readOrCreateSegmentCacheEntry(now, fetchStrategy, tree);\n if (possiblyNewEntry.status === 0) {\n // Confirmed this is a new entry. We can fulfill it.\n const newEntry = possiblyNewEntry;\n const fulfilledEntry = fulfillSegmentCacheEntry(upgradeToPendingSegment(newEntry, fetchStrategy), rsc, staleAt, isPartial);\n // Re-key the entry based on which params the segment actually depends on.\n if (false) {}\n } else {\n // There was already an entry in the cache. But we may be able to\n // replace it with the new one from the server.\n const newEntry = fulfillSegmentCacheEntry(upgradeToPendingSegment(createDetachedSegmentCacheEntry(now), fetchStrategy), rsc, staleAt, isPartial);\n // Use the fulfilled vary path if available, otherwise fall back to\n // the request vary path.\n const varyPath = false ? 0 : (0, _varypath.getSegmentVaryPathForRequest)(fetchStrategy, tree);\n upsertSegmentEntry(now, varyPath, newEntry);\n }\n }\n}\nasync function fetchPrefetchResponse(url, headers) {\n const fetchPriority = 'low';\n // When issuing a prefetch request, don't immediately decode the response; we\n // use the lower level `createFromResponse` API instead because we need to do\n // some extra processing of the response stream. See\n // `createNonTaskyPrefetchResponseStream` for more details.\n const shouldImmediatelyDecode = false;\n const response = await (0, _fetchserverresponse.createFetch)(url, headers, fetchPriority, shouldImmediatelyDecode);\n if (!response.ok) {\n return null;\n }\n // Check the content type\n if (isOutputExportMode) {\n // In output: \"export\" mode, we relaxed about the content type, since it's\n // not Next.js that's serving the response. If the status is OK, assume the\n // response is valid. If it's not a valid response, the Flight client won't\n // be able to decode it, and we'll treat it as a miss.\n } else {\n const contentType = response.headers.get('content-type');\n const isFlightResponse = contentType && contentType.startsWith(_approuterheaders.RSC_CONTENT_TYPE_HEADER);\n if (!isFlightResponse) {\n return null;\n }\n }\n return response;\n}\nasync function createNonTaskyPrefetchResponseStream(body) {\n // Buffer the entire response before passing it to the Flight client. This\n // ensures that when Flight processes the stream, all model data is available\n // synchronously. This is important for readVaryParams, which synchronously\n // checks the thenable status — if data arrived in multiple network chunks,\n // the thenables might not yet be fulfilled.\n //\n // TODO: There are too many intermediate stream transformations in the\n // prefetch response pipeline (e.g. stripIsPartialByte, this function).\n // These could all be consolidated into a single transformation. Refactor\n // once the cached navigations experiment lands.\n //\n // Read the entire response from the network.\n const reader = body.getReader();\n const chunks = [];\n let size = 0;\n while(true){\n const { done, value } = await reader.read();\n if (done) break;\n chunks.push(value);\n size += value.byteLength;\n }\n // Concatenate into a single chunk so that Flight's processBinaryChunk\n // processes all rows synchronously in one call. Multiple chunks would not\n // be sufficient: even though reader.read() resolves as a microtask for\n // already-enqueued data, the `await` continuation from\n // createFromReadableStream can interleave between chunks. If the root\n // model row isn't the first row (e.g. outlined values come first), the\n // PromiseResolveThenableJob from `await` can cause the root to initialize\n // eagerly, scheduling the continuation before remaining chunks (including\n // promise value rows) are processed. A single chunk avoids this.\n let buffer;\n if (chunks.length === 1) {\n buffer = chunks[0];\n } else if (chunks.length > 1) {\n buffer = new Uint8Array(size);\n let offset = 0;\n for (const chunk of chunks){\n buffer.set(chunk, offset);\n offset += chunk.byteLength;\n }\n } else {\n buffer = new Uint8Array(0);\n }\n const stream = new ReadableStream({\n start (controller) {\n controller.enqueue(buffer);\n controller.close();\n }\n });\n return {\n stream,\n size\n };\n}\n/**\n * Creates a streaming (non-buffered) prefetch response stream for dynamic/Full\n * prefetches. These are essentially dynamic responses that get stored in the\n * prefetch cache — they don't carry vary params or other cache metadata that\n * requires synchronous thenable resolution, so there's no need to buffer them.\n * They should continue to stream so consumers can process data as it arrives.\n */ function createIncrementalPrefetchResponseStream(originalFlightStream, onStreamClose, onResponseSizeUpdate) {\n // While processing the original stream, we incrementally update the size\n // of the cache entry in the LRU.\n let totalByteLength = 0;\n const reader = originalFlightStream.getReader();\n return new ReadableStream({\n async pull (controller) {\n while(true){\n const { done, value } = await reader.read();\n if (!done) {\n // Pass to the target stream and keep consuming the Flight response\n // from the server.\n controller.enqueue(value);\n // Incrementally update the size of the cache entry in the LRU.\n totalByteLength += value.byteLength;\n onResponseSizeUpdate(totalByteLength);\n continue;\n }\n controller.close();\n onStreamClose();\n return;\n }\n }\n });\n}\nfunction addSegmentPathToUrlInOutputExportMode(url, segmentPath) {\n if (isOutputExportMode) {\n // In output: \"export\" mode, we cannot use a header to encode the segment\n // path. Instead, we append it to the end of the pathname.\n const staticUrl = new URL(url);\n const routeDir = staticUrl.pathname.endsWith('/') ? staticUrl.pathname.slice(0, -1) : staticUrl.pathname;\n const staticExportFilename = (0, _segmentvalueencoding.convertSegmentPathToStaticExportFilename)(segmentPath);\n staticUrl.pathname = `${routeDir}/${staticExportFilename}`;\n return staticUrl;\n }\n return url;\n}\nfunction canNewFetchStrategyProvideMoreContent(currentStrategy, newStrategy) {\n return currentStrategy < newStrategy;\n}\n/**\n * Adds the instant prefetch header if the navigation lock is active.\n * Uses a lazy require to ensure dead code elimination.\n */ function addInstantPrefetchHeaderIfLocked(headers) {\n if (true) {\n const { isNavigationLocked } = __webpack_require__(/*! ./navigation-testing-lock */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/navigation-testing-lock.js\");\n if (isNavigationLocked()) {\n headers[_approuterheaders.NEXT_INSTANT_PREFETCH_HEADER] = '1';\n }\n }\n}\nfunction getStaleAtFromHeader(now, response) {\n const staleTimeSeconds = parseInt(response.headers.get(_approuterheaders.NEXT_ROUTER_STALE_TIME_HEADER) ?? '', 10);\n const staleTimeMs = !isNaN(staleTimeSeconds) ? getStaleTimeMs(staleTimeSeconds) : _navigatereducer.STATIC_STALETIME_MS;\n return now + staleTimeMs;\n}\nasync function getStaleAt(now, staleTimeIterable, response) {\n if (staleTimeIterable !== undefined) {\n // Iterate the async iterable and take the last yielded value. The server\n // yields updated staleTime values during the render; the last one is the\n // final staleTime.\n let staleTimeSeconds;\n for await (const value of staleTimeIterable){\n staleTimeSeconds = value;\n }\n if (staleTimeSeconds !== undefined) {\n const staleTimeMs = isNaN(staleTimeSeconds) ? _navigatereducer.STATIC_STALETIME_MS : getStaleTimeMs(staleTimeSeconds);\n return now + staleTimeMs;\n }\n }\n if (response !== undefined) {\n return getStaleAtFromHeader(now, response);\n }\n return now + _navigatereducer.STATIC_STALETIME_MS;\n}\nfunction writeStaticStageResponseIntoCache(now, flightData, buildId, headVaryParamsThenable, staleAt, baseTree, renderedSearch, isResponsePartial) {\n const fetchStrategy = isResponsePartial ? _types.FetchStrategy.PPR : _types.FetchStrategy.Full;\n const headVaryParams = headVaryParamsThenable !== null ? (0, _varyparamsdecoding.readVaryParams)(headVaryParamsThenable) : null;\n const flightDatas = (0, _flightdatahelpers.normalizeFlightData)(flightData);\n if (typeof flightDatas === 'string') {\n return;\n }\n const navigationSeed = (0, _navigation.convertServerPatchToFullTree)(now, baseTree, flightDatas, renderedSearch, _bfcache.UnknownDynamicStaleTime);\n writeDynamicRenderResponseIntoCache(now, fetchStrategy, flightDatas, buildId, isResponsePartial, headVaryParams, staleAt, navigationSeed, null // spawnedEntries — no pre-created entries; will create or upsert\n );\n}\nasync function processRuntimePrefetchStream(now, runtimePrefetchStream, baseTree, renderedSearch) {\n const { stream, isPartial } = await stripIsPartialByte(runtimePrefetchStream);\n const serverData = await (0, _fetchserverresponse.createFromNextReadableStream)(stream, undefined, {\n allowPartialStream: true\n });\n const headVaryParamsThenable = serverData.h;\n const headVaryParams = headVaryParamsThenable !== null ? (0, _varyparamsdecoding.readVaryParams)(headVaryParamsThenable) : null;\n const staleAt = await getStaleAt(now, serverData.s);\n const flightDatas = (0, _flightdatahelpers.normalizeFlightData)(serverData.f);\n if (typeof flightDatas === 'string') {\n return null;\n }\n const navigationSeed = (0, _navigation.convertServerPatchToFullTree)(now, baseTree, flightDatas, renderedSearch, _bfcache.UnknownDynamicStaleTime);\n return {\n flightDatas,\n navigationSeed,\n buildId: serverData.b,\n isResponsePartial: isPartial,\n headVaryParams,\n staleAt\n };\n}\nasync function stripIsPartialByte(stream) {\n // When there is no recognized marker byte, the fallback depends on whether\n // Cached Navigations is enabled. When enabled, dynamic navigation responses\n // don't have a marker but may contain dynamic holes, so they are treated as\n // partial. When disabled, unmarked responses are treated as non-partial.\n const defaultIsPartial = !!false;\n const reader = stream.getReader();\n const { done, value } = await reader.read();\n if (done || !value || value.byteLength === 0) {\n return {\n stream: new ReadableStream({\n start: (c)=>c.close()\n }),\n isPartial: defaultIsPartial\n };\n }\n const firstByte = value[0];\n const hasMarker = firstByte === 0x23 || firstByte === 0x7e;\n const isPartial = hasMarker ? firstByte === 0x7e : defaultIsPartial;\n const remainder = hasMarker ? value.byteLength > 1 ? value.subarray(1) : null : value;\n return {\n isPartial,\n stream: new ReadableStream({\n start (controller) {\n if (remainder) {\n controller.enqueue(remainder);\n }\n },\n async pull (controller) {\n const result = await reader.read();\n if (result.done) {\n controller.close();\n } else {\n controller.enqueue(result.value);\n }\n }\n })\n };\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=cache.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3NlZ21lbnQtY2FjaGUvY2FjaGUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBK0xrQkEsV0FBVztlQUFYQTs7SUF3dUJGQyx5Q0FBeUM7ZUFBekNBOztJQWdEQUMsa0NBQWtDO2VBQWxDQTs7SUFpM0RBQyxxQ0FBcUM7ZUFBckNBOztJQWgvQ0FDLHlDQUF5QztlQUF6Q0E7O0lBZEFDLHVDQUF1QztlQUF2Q0E7O0lBbUxBQyxtQ0FBbUM7ZUFBbkNBOztJQXRvQkFDLCtCQUErQjtlQUEvQkE7O0lBK0lBQyx1QkFBdUI7ZUFBdkJBOztJQXRkQUMsMkNBQTJDO2VBQTNDQTs7SUFrNUNNQywrQkFBK0I7ZUFBL0JBOztJQWpiQUMscUJBQXFCO2VBQXJCQTs7SUFvU0FDLHVCQUF1QjtlQUF2QkE7O0lBMlNBQyx5Q0FBeUM7ZUFBekNBOztJQXBrQ05DLHNCQUFzQjtlQUF0QkE7O0lBL3RCQUMsMkJBQTJCO2VBQTNCQTs7SUFJQUMsNkJBQTZCO2VBQTdCQTs7SUF5akZNQyxVQUFVO2VBQVZBOztJQXR3Rk5DLGNBQWM7ZUFBZEE7O0lBdU5BQyw2QkFBNkI7ZUFBN0JBOztJQWtCQUMsMkJBQTJCO2VBQTNCQTs7SUFpQkFDLDZCQUE2QjtlQUE3QkE7O0lBcXZCQUMsOEJBQThCO2VBQTlCQTs7SUF4VEFDLHNDQUFzQztlQUF0Q0E7O0lBaFpBQyx5QkFBeUI7ZUFBekJBOztJQXFqRk1DLDRCQUE0QjtlQUE1QkE7O0lBeHRFTkMsb0NBQW9DO2VBQXBDQTs7SUFwT0FDLDJCQUEyQjtlQUEzQkE7O0lBNE1BQyw2QkFBNkI7ZUFBN0JBOztJQWxUQUMsbUJBQW1CO2VBQW5CQTs7SUE4QkFDLHFCQUFxQjtlQUFyQkE7O0lBa2tGTUMsa0JBQWtCO2VBQWxCQTs7SUEvbkVOQyx1QkFBdUI7ZUFBdkJBOztJQTlFQUMsa0JBQWtCO2VBQWxCQTs7SUF6VkFDLHdCQUF3QjtlQUF4QkE7O0lBdzZEQUMs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QUFDNEIsSUFBTUEsRUFBRXpCLEtBQUs7WUFBRztZQUNyRGhPLFdBQVd1UDtRQUNiO0lBQ0Y7SUFFQSxNQUFNRyxZQUFZakgsS0FBSyxDQUFDLEVBQUU7SUFDMUIsTUFBTWtILFlBQVlELGNBQWMsUUFBUUEsY0FBYztJQUN0RCxNQUFNMVAsWUFBWTJQLFlBQVlELGNBQWMsT0FBT0g7SUFFbkQsTUFBTUssWUFBWUQsWUFDZGxILE1BQU02RSxVQUFVLEdBQUcsSUFDakI3RSxNQUFNb0gsUUFBUSxDQUFDLEtBQ2YsT0FDRnBIO0lBRUosT0FBTztRQUNMekk7UUFDQW1ILFFBQVEsSUFBSXlHLGVBQTJCO1lBQ3JDQyxPQUFNQyxVQUFVO2dCQUNkLElBQUk4QixXQUFXO29CQUNiOUIsV0FBV0MsT0FBTyxDQUFDNkI7Z0JBQ3JCO1lBQ0Y7WUFDQSxNQUFNeEIsTUFBS04sVUFBVTtnQkFDbkIsTUFBTWdDLFNBQVMsTUFBTTdDLE9BQU9JLElBQUk7Z0JBQ2hDLElBQUl5QyxPQUFPMUMsSUFBSSxFQUFFO29CQUNmVSxXQUFXRSxLQUFLO2dCQUNsQixPQUFPO29CQUNMRixXQUFXQyxPQUFPLENBQUMrQixPQUFPckgsS0FBSztnQkFDakM7WUFDRjtRQUNGO0lBQ0Y7QUFDRiIsInNvdXJjZXMiOlsiL1VzZXJzL3NyYy9jbGllbnQvY29tcG9uZW50cy9zZWdtZW50LWNhY2hlL2NhY2hlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgVHJlZVByZWZldGNoLFxuICBSb290VHJlZVByZWZldGNoLFxuICBTZWdtZW50UHJlZmV0Y2gsXG4gIElubGluZWRQcmVmZXRjaFJlc3BvbnNlLFxuICBJbmxpbmVkU2VnbWVudFByZWZldGNoLFxufSBmcm9tICcuLi8uLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci9jb2xsZWN0LXNlZ21lbnQtZGF0YSdcbmltcG9ydCB0eXBlIHtcbiAgQ2FjaGVOb2RlU2VlZERhdGEsXG4gIEZsaWdodERhdGEsXG4gIFNlZ21lbnQgYXMgRmxpZ2h0Um91dGVyU3RhdGVTZWdtZW50LFxufSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItdHlwZXMnXG5pbXBvcnQge1xuICByZWFkVmFyeVBhcmFtcyxcbiAgdHlwZSBWYXJ5UGFyYW1zLFxuICB0eXBlIFZhcnlQYXJhbXNUaGVuYWJsZSxcbn0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9zZWdtZW50LWNhY2hlL3ZhcnktcGFyYW1zLWRlY29kaW5nJ1xuaW1wb3J0IHtcbiAgTkVYVF9ESURfUE9TVFBPTkVfSEVBREVSLFxuICBORVhUX0lOU1RBTlRfUFJFRkVUQ0hfSEVBREVSLFxuICBORVhUX1JPVVRFUl9QUkVGRVRDSF9IRUFERVIsXG4gIE5FWFRfUk9VVEVSX1NFR01FTlRfUFJFRkVUQ0hfSEVBREVSLFxuICBORVhUX1JPVVRFUl9TVEFMRV9USU1FX0hFQURFUixcbiAgTkVYVF9ST1VURVJfU1RBVEVfVFJFRV9IRUFERVIsXG4gIE5FWFRfVVJMLFxuICBSU0NfQ09OVEVOVF9UWVBFX0hFQURFUixcbiAgUlNDX0hFQURFUixcbn0gZnJvbSAnLi4vYXBwLXJvdXRlci1oZWFkZXJzJ1xuaW1wb3J0IHtcbiAgY3JlYXRlRmV0Y2gsXG4gIGNyZWF0ZUZyb21OZXh0UmVhZGFibGVTdHJlYW0sXG4gIHR5cGUgUlNDUmVzcG9uc2UsXG4gIHR5cGUgUmVxdWVzdEhlYWRlcnMsXG59IGZyb20gJy4uL3JvdXRlci1yZWR1Y2VyL2ZldGNoLXNlcnZlci1yZXNwb25zZSdcbmltcG9ydCB7XG4gIHBpbmdQcmVmZXRjaFRhc2ssXG4gIGlzUHJlZmV0Y2hUYXNrRGlydHksXG4gIHR5cGUgUHJlZmV0Y2hUYXNrLFxuICB0eXBlIFByZWZldGNoU3VidGFza1Jlc3VsdCxcbn0gZnJvbSAnLi9zY2hlZHVsZXInXG5pbXBvcnQge1xuICB0eXBlIFJvdXRlVmFyeVBhdGgsXG4gIHR5cGUgU2VnbWVudFZhcnlQYXRoLFxuICB0eXBlIFBhcnRpYWxTZWdtZW50VmFyeVBhdGgsXG4gIGdldFJvdXRlVmFyeVBhdGgsXG4gIGdldEZ1bGZpbGxlZFJvdXRlVmFyeVBhdGgsXG4gIGdldEZ1bGZpbGxlZFNlZ21lbnRWYXJ5UGF0aCxcbiAgZ2V0U2VnbWVudFZhcnlQYXRoRm9yUmVxdWVzdCxcbiAgYXBwZW5kTGF5b3V0VmFyeVBhdGgsXG4gIGZpbmFsaXplTGF5b3V0VmFyeVBhdGgsXG4gIGZpbmFsaXplUGFnZVZhcnlQYXRoLFxuICBjbG9uZVBhZ2VWYXJ5UGF0aFdpdGhOZXdTZWFyY2hQYXJhbXMsXG4gIHR5cGUgUGFnZVZhcnlQYXRoLFxuICB0eXBlIExheW91dFZhcnlQYXRoLFxuICBmaW5hbGl6ZU1ldGFkYXRhVmFyeVBhdGgsXG4gIGdldFBhcnRpYWxQYWdlVmFyeVBhdGgsXG4gIGdldFBhcnRpYWxMYXlvdXRWYXJ5UGF0aCxcbiAgZ2V0UmVuZGVyZWRTZWFyY2hGcm9tVmFyeVBhdGgsXG59IGZyb20gJy4vdmFyeS1wYXRoJ1xuaW1wb3J0IHsgY3JlYXRlSHJlZkZyb21VcmwgfSBmcm9tICcuLi9yb3V0ZXItcmVkdWNlci9jcmVhdGUtaHJlZi1mcm9tLXVybCdcbmltcG9ydCB0eXBlIHtcbiAgTm9ybWFsaXplZFBhdGhuYW1lLFxuICBOb3JtYWxpemVkU2VhcmNoLFxuICBOb3JtYWxpemVkTmV4dFVybCxcbiAgUm91dGVDYWNoZUtleSxcbn0gZnJvbSAnLi9jYWNoZS1rZXknXG5pbXBvcnQgeyBjcmVhdGVDYWNoZUtleSBhcyBjcmVhdGVQcmVmZXRjaFJlcXVlc3RLZXkgfSBmcm9tICcuL2NhY2hlLWtleSdcbmltcG9ydCB7XG4gIGRvZXNTdGF0aWNTZWdtZW50QXBwZWFySW5VUkwsXG4gIGdldENhY2hlS2V5Rm9yRHluYW1pY1BhcmFtLFxuICBnZXRSZW5kZXJlZFBhdGhuYW1lLFxuICBnZXRSZW5kZXJlZFNlYXJjaCxcbiAgcGFyc2VEeW5hbWljUGFyYW1Gcm9tVVJMUGFydCxcbn0gZnJvbSAnLi4vLi4vcm91dGUtcGFyYW1zJ1xuaW1wb3J0IHtcbiAgY3JlYXRlQ2FjaGVNYXAsXG4gIGdldEZyb21DYWNoZU1hcCxcbiAgc2V0SW5DYWNoZU1hcCxcbiAgc2V0U2l6ZUluQ2FjaGVNYXAsXG4gIGRlbGV0ZUZyb21DYWNoZU1hcCxcbiAgaXNWYWx1ZUV4cGlyZWQsXG4gIHR5cGUgQ2FjaGVNYXAsXG4gIHR5cGUgVW5rbm93bk1hcEVudHJ5LFxufSBmcm9tICcuL2NhY2hlLW1hcCdcbmltcG9ydCB7XG4gIGFwcGVuZFNlZ21lbnRSZXF1ZXN0S2V5UGFydCxcbiAgY29udmVydFNlZ21lbnRQYXRoVG9TdGF0aWNFeHBvcnRGaWxlbmFtZSxcbiAgY3JlYXRlU2VnbWVudFJlcXVlc3RLZXlQYXJ0LFxuICBIRUFEX1JFUVVFU1RfS0VZLFxuICBST09UX1NFR01FTlRfUkVRVUVTVF9LRVksXG4gIHR5cGUgU2VnbWVudFJlcXVlc3RLZXksXG59IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvc2VnbWVudC1jYWNoZS9zZWdtZW50LXZhbHVlLWVuY29kaW5nJ1xuaW1wb3J0IHR5cGUge1xuICBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgTmF2aWdhdGlvbkZsaWdodFJlc3BvbnNlLFxufSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItdHlwZXMnXG5pbXBvcnQge1xuICB0eXBlIE5vcm1hbGl6ZWRGbGlnaHREYXRhLFxuICBub3JtYWxpemVGbGlnaHREYXRhLFxuICBwcmVwYXJlRmxpZ2h0Um91dGVyU3RhdGVGb3JSZXF1ZXN0LFxufSBmcm9tICcuLi8uLi9mbGlnaHQtZGF0YS1oZWxwZXJzJ1xuaW1wb3J0IHsgU1RBVElDX1NUQUxFVElNRV9NUyB9IGZyb20gJy4uL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL25hdmlnYXRlLXJlZHVjZXInXG5pbXBvcnQgeyBwaW5nVmlzaWJsZUxpbmtzIH0gZnJvbSAnLi4vbGlua3MnXG5pbXBvcnQgeyBQQUdFX1NFR01FTlRfS0VZIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9zZWdtZW50J1xuaW1wb3J0IHsgRmV0Y2hTdHJhdGVneSB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQgeyBjcmVhdGVQcm9taXNlV2l0aFJlc29sdmVycyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvcHJvbWlzZS13aXRoLXJlc29sdmVycydcbmltcG9ydCB7IHJlYWRGcm9tQkZDYWNoZSwgVW5rbm93bkR5bmFtaWNTdGFsZVRpbWUgfSBmcm9tICcuL2JmY2FjaGUnXG5pbXBvcnQgeyBkaXNjb3Zlcktub3duUm91dGUsIG1hdGNoS25vd25Sb3V0ZSB9IGZyb20gJy4vb3B0aW1pc3RpYy1yb3V0ZXMnXG5pbXBvcnQgeyBjb252ZXJ0U2VydmVyUGF0Y2hUb0Z1bGxUcmVlLCB0eXBlIE5hdmlnYXRpb25TZWVkIH0gZnJvbSAnLi9uYXZpZ2F0aW9uJ1xuaW1wb3J0IHsgZ2V0TmF2aWdhdGlvbkJ1aWxkSWQgfSBmcm9tICcuLi8uLi9uYXZpZ2F0aW9uLWJ1aWxkLWlkJ1xuaW1wb3J0IHsgTkVYVF9OQVZfREVQTE9ZTUVOVF9JRF9IRUFERVIgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJ1xuXG4vKipcbiAqIEVuc3VyZXMgYSBtaW5pbXVtIHN0YWxlIHRpbWUgb2YgMzBzIHRvIGF2b2lkIGlzc3VlcyB3aGVyZSB0aGUgc2VydmVyIHNlbmRzIGEgdG9vXG4gKiBzaG9ydC1saXZlZCBzdGFsZSB0aW1lLCB3aGljaCB3b3VsZCBwcmV2ZW50IGFueXRoaW5nIGZyb20gYmVpbmcgcHJlZmV0Y2hlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YWxlVGltZU1zKHN0YWxlVGltZVNlY29uZHM6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLm1heChzdGFsZVRpbWVTZWNvbmRzLCAzMCkgKiAxMDAwXG59XG5cbi8vIEEgbm90ZSBvbiBhc3luYy9hd2FpdCB3aGVuIHdvcmtpbmcgaW4gdGhlIHByZWZldGNoIGNhY2hlOlxuLy9cbi8vIE1vc3QgYXN5bmMgb3BlcmF0aW9ucyBpbiB0aGUgcHJlZmV0Y2ggY2FjaGUgc2hvdWxkICpub3QqIHVzZSBhc3luYy9hd2FpdCxcbi8vIEluc3RlYWQsIHNwYXduIGEgc3VidGFzayB0aGF0IHdyaXRlcyB0aGUgcmVzdWx0cyB0byBhIGNhY2hlIGVudHJ5LCBhbmQgYXR0YWNoXG4vLyBhIFwicGluZ1wiIGxpc3RlbmVyIHRvIG5vdGlmeSB0aGUgcHJlZmV0Y2ggcXVldWUgdG8gdHJ5IGFnYWluLlxuLy9cbi8vIFRoZSByZWFzb24gaXMgd2UgbmVlZCB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgc2VnbWVudCBjYWNoZSBhbmQgdHJhdmVyc2UgaXRzXG4vLyBkYXRhIHN0cnVjdHVyZXMgc3luY2hyb25vdXNseS4gRm9yIGV4YW1wbGUsIGlmIHRoZXJlJ3MgYSBzeW5jaHJvbm91cyB1cGRhdGVcbi8vIHdlIGNhbiB0YWtlIGFuIGltbWVkaWF0ZSBzbmFwc2hvdCBvZiB0aGUgY2FjaGUgdG8gcHJvZHVjZSBzb21ldGhpbmcgd2UgY2FuXG4vLyByZW5kZXIuIExpbWl0aW5nIHRoZSB1c2Ugb2YgYXN5bmMvYXdhaXQgYWxzbyBtYWtlcyBpdCBlYXNpZXIgdG8gYXZvaWQgcmFjZVxuLy8gY29uZGl0aW9ucywgd2hpY2ggaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgYmVjYXVzZSBpcyBjYWNoZSBpcyBtdXRhYmxlLlxuLy9cbi8vIEFub3RoZXIgcmVhc29uIGlzIHRoYXQgd2hpbGUgd2UncmUgcGVyZm9ybWluZyBhc3luYyB3b3JrLCBpdCdzIHBvc3NpYmxlIGZvclxuLy8gZXhpc3RpbmcgZW50cmllcyB0byBiZWNvbWUgc3RhbGUsIG9yIGZvciBMaW5rIHByZWZldGNoZXMgdG8gYmUgcmVtb3ZlZCBmcm9tXG4vLyB0aGUgcXVldWUuIEZvciBvcHRpbWFsIHNjaGVkdWxpbmcsIHdlIG5lZWQgdG8gYmUgYWJsZSB0byBcImNhbmNlbFwiIHN1YnRhc2tzXG4vLyB0aGF0IGFyZSBubyBsb25nZXIgbmVlZGVkLiBTbywgd2hlbiBhIHNlZ21lbnQgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgc2VydmVyLCB3ZVxuLy8gcmVzdGFydCBmcm9tIHRoZSByb290IG9mIHRoZSB0cmVlIHRoYXQncyBiZWluZyBwcmVmZXRjaGVkLCB0byBjb25maXJtIGFsbCB0aGVcbi8vIHBhcmVudCBzZWdtZW50cyBhcmUgc3RpbGwgY2FjaGVkLiBJZiB0aGUgc2VnbWVudCBpcyBubyBsb25nZXIgcmVhY2hhYmxlIGZyb21cbi8vIHRoZSByb290LCB0aGVuIGl0J3MgZWZmZWN0aXZlbHkgY2FuY2VsZWQuIFRoaXMgaXMgc2ltaWxhciB0byB0aGUgZGVzaWduIG9mXG4vLyBSdXN0IEZ1dHVyZXMsIG9yIFJlYWN0IFN1c3BlbnNlLlxuXG50eXBlIFJvdXRlVHJlZVNoYXJlZCA9IHtcbiAgcmVxdWVzdEtleTogU2VnbWVudFJlcXVlc3RLZXlcbiAgLy8gVE9ETzogUmVtb3ZlIHRoZSBgc2VnbWVudGAgZmllbGQsIG5vdyB0aGF0IGl0IGNhbiBiZSByZWNvbnN0cnVjdGVkXG4gIC8vIGZyb20gYHBhcmFtYC5cbiAgc2VnbWVudDogRmxpZ2h0Um91dGVyU3RhdGVTZWdtZW50XG4gIHJlZnJlc2hTdGF0ZTogUmVmcmVzaFN0YXRlIHwgbnVsbFxuICBzbG90czogbnVsbCB8IHtcbiAgICBbcGFyYWxsZWxSb3V0ZUtleTogc3RyaW5nXTogUm91dGVUcmVlXG4gIH1cbiAgLy8gQml0bWFzayBvZiBQcmVmZXRjaEhpbnQgZmxhZ3MuIEVuY29kZXMgcm91dGUgc3RydWN0dXJlIG1ldGFkYXRhOlxuICAvLyByb290IGxheW91dCwgbG9hZGluZyBib3VuZGFyaWVzLCBpbnN0YW50IGNvbmZpZ3MsIGFuZCBydW50aW1lIHByZWZldGNoXG4gIC8vIGhpbnRzLlxuICBwcmVmZXRjaEhpbnRzOiBudW1iZXJcbn1cblxuZXhwb3J0IHR5cGUgUmVmcmVzaFN0YXRlID0ge1xuICBjYW5vbmljYWxVcmw6IHN0cmluZ1xuICByZW5kZXJlZFNlYXJjaDogTm9ybWFsaXplZFNlYXJjaFxufVxuXG50eXBlIExheW91dFJvdXRlVHJlZSA9IFJvdXRlVHJlZVNoYXJlZCAmIHtcbiAgaXNQYWdlOiBmYWxzZVxuICB2YXJ5UGF0aDogTGF5b3V0VmFyeVBhdGhcbn1cblxudHlwZSBQYWdlUm91dGVUcmVlID0gUm91dGVUcmVlU2hhcmVkICYge1xuICBpc1BhZ2U6IHRydWVcbiAgdmFyeVBhdGg6IFBhZ2VWYXJ5UGF0aFxufVxuXG5leHBvcnQgdHlwZSBSb3V0ZVRyZWUgPSBMYXlvdXRSb3V0ZVRyZWUgfCBQYWdlUm91dGVUcmVlXG5cbnR5cGUgUm91dGVDYWNoZUVudHJ5U2hhcmVkID0ge1xuICAvLyBUaGlzIGlzIGZhbHNlIG9ubHkgaWYgd2UncmUgY2VydGFpbiB0aGUgcm91dGUgY2Fubm90IGJlIGludGVyY2VwdGVkLiBJdCdzXG4gIC8vIHRydWUgaW4gYWxsIG90aGVyIGNhc2VzLCBpbmNsdWRpbmcgb24gaW5pdGlhbGl6YXRpb24gd2hlbiB3ZSBoYXZlbid0IHlldFxuICAvLyByZWNlaXZlZCBhIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlci5cbiAgY291bGRCZUludGVyY2VwdGVkOiBib29sZWFuXG5cbiAgLy8gTWFwLXJlbGF0ZWQgZmllbGRzLlxuICByZWY6IFVua25vd25NYXBFbnRyeSB8IG51bGxcbiAgc2l6ZTogbnVtYmVyXG4gIHN0YWxlQXQ6IG51bWJlclxuICB2ZXJzaW9uOiBudW1iZXJcbn1cblxuLyoqXG4gKiBUcmFja3MgdGhlIHN0YXR1cyBvZiBhIGNhY2hlIGVudHJ5IGFzIGl0IHByb2dyZXNzZXMgZnJvbSBubyBkYXRhIChFbXB0eSksXG4gKiB3YWl0aW5nIGZvciBzZXJ2ZXIgZGF0YSAoUGVuZGluZyksIGFuZCBmaW5pc2hlZCAoZWl0aGVyIEZ1bGZpbGxlZCBvclxuICogUmVqZWN0ZWQgZGVwZW5kaW5nIG9uIHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIEVudHJ5U3RhdHVzIHtcbiAgRW1wdHkgPSAwLFxuICBQZW5kaW5nID0gMSxcbiAgRnVsZmlsbGVkID0gMixcbiAgUmVqZWN0ZWQgPSAzLFxufVxuXG5leHBvcnQgdHlwZSBQZW5kaW5nUm91dGVDYWNoZUVudHJ5ID0gUm91dGVDYWNoZUVudHJ5U2hhcmVkICYge1xuICBzdGF0dXM6IEVudHJ5U3RhdHVzLkVtcHR5IHwgRW50cnlTdGF0dXMuUGVuZGluZ1xuICBibG9ja2VkVGFza3M6IFNldDxQcmVmZXRjaFRhc2s+IHwgbnVsbFxuICBjYW5vbmljYWxVcmw6IG51bGxcbiAgcmVuZGVyZWRTZWFyY2g6IG51bGxcbiAgdHJlZTogbnVsbFxuICBtZXRhZGF0YTogbnVsbFxuICBzdXBwb3J0c1BlclNlZ21lbnRQcmVmZXRjaGluZzogZmFsc2Vcbn1cblxudHlwZSBSZWplY3RlZFJvdXRlQ2FjaGVFbnRyeSA9IFJvdXRlQ2FjaGVFbnRyeVNoYXJlZCAmIHtcbiAgc3RhdHVzOiBFbnRyeVN0YXR1cy5SZWplY3RlZFxuICBibG9ja2VkVGFza3M6IFNldDxQcmVmZXRjaFRhc2s+IHwgbnVsbFxuICBjYW5vbmljYWxVcmw6IG51bGxcbiAgcmVuZGVyZWRTZWFyY2g6IG51bGxcbiAgdHJlZTogbnVsbFxuICBtZXRhZGF0YTogbnVsbFxuICBzdXBwb3J0c1BlclNlZ21lbnRQcmVmZXRjaGluZzogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBGdWxmaWxsZWRSb3V0ZUNhY2hlRW50cnkgPSBSb3V0ZUNhY2hlRW50cnlTaGFyZWQgJiB7XG4gIHN0YXR1czogRW50cnlTdGF0dXMuRnVsZmlsbGVkXG4gIGJsb2NrZWRUYXNrczogbnVsbFxuICBjYW5vbmljYWxVcmw6IHN0cmluZ1xuICByZW5kZXJlZFNlYXJjaDogTm9ybWFsaXplZFNlYXJjaFxuICB0cmVlOiBSb3V0ZVRyZWVcbiAgbWV0YWRhdGE6IFJvdXRlVHJlZVxuICBzdXBwb3J0c1BlclNlZ21lbnRQcmVmZXRjaGluZzogYm9vbGVhblxuICAvLyBXaGVuIHRydWUsIHRoaXMgZW50cnkgc2hvdWxkIG5vdCBiZSB1c2VkIGFzIGEgdGVtcGxhdGUgZm9yIHJvdXRlXG4gIC8vIHByZWRpY3Rpb24uIFNldCB3aGVuIHdlIGRpc2NvdmVyIHRoYXQgdGhlIFVSTCB3YXMgcmV3cml0dGVuIGJ5IG1pZGRsZXdhcmVcbiAgLy8gdG8gYSBkaWZmZXJlbnQgcm91dGUgc3RydWN0dXJlIChlLmcuLCAvZm9vIHdhcyByZXdyaXR0ZW4gdG8gL2JhcikuIFNpbmNlXG4gIC8vIHJld3JpdGUgYmVoYXZpb3IgY2FuIHZhcnkgYnkgcGFyYW0gdmFsdWUsIHdlIGNhbid0IHNhZmVseSBwcmVkaWN0IHRoZVxuICAvLyByb3V0ZSBzdHJ1Y3R1cmUgZm9yIG90aGVyIFVSTHMgbWF0Y2hpbmcgdGhpcyBwYXR0ZXJuLlxuICBoYXNEeW5hbWljUmV3cml0ZTogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBSb3V0ZUNhY2hlRW50cnkgPVxuICB8IFBlbmRpbmdSb3V0ZUNhY2hlRW50cnlcbiAgfCBGdWxmaWxsZWRSb3V0ZUNhY2hlRW50cnlcbiAgfCBSZWplY3RlZFJvdXRlQ2FjaGVFbnRyeVxuXG50eXBlIFNlZ21lbnRDYWNoZUVudHJ5U2hhcmVkID0ge1xuICBmZXRjaFN0cmF0ZWd5OiBGZXRjaFN0cmF0ZWd5XG5cbiAgLy8gTWFwLXJlbGF0ZWQgZmllbGRzLlxuICByZWY6IFVua25vd25NYXBFbnRyeSB8IG51bGxcbiAgc2l6ZTogbnVtYmVyXG4gIHN0YWxlQXQ6IG51bWJlclxuICB2ZXJzaW9uOiBudW1iZXJcbn1cblxuZXhwb3J0IHR5cGUgRW1wdHlTZWdtZW50Q2FjaGVFbnRyeSA9IFNlZ21lbnRDYWNoZUVudHJ5U2hhcmVkICYge1xuICBzdGF0dXM6IEVudHJ5U3RhdHVzLkVtcHR5XG4gIHJzYzogbnVsbFxuICBpc1BhcnRpYWw6IHRydWVcbiAgcHJvbWlzZTogbnVsbFxufVxuXG5leHBvcnQgdHlwZSBQZW5kaW5nU2VnbWVudENhY2hlRW50cnkgPSBTZWdtZW50Q2FjaGVFbnRyeVNoYXJlZCAmIHtcbiAgc3RhdHVzOiBFbnRyeVN0YXR1cy5QZW5kaW5nXG4gIHJzYzogbnVsbFxuICBpc1BhcnRpYWw6IGJvb2xlYW5cbiAgcHJvbWlzZTogbnVsbCB8IFByb21pc2VXaXRoUmVzb2x2ZXJzPEZ1bGZpbGxlZFNlZ21lbnRDYWNoZUVudHJ5IHwgbnVsbD5cbn1cblxudHlwZSBSZWplY3RlZFNlZ21lbnRDYWNoZUVudHJ5ID0gU2VnbWVudENhY2hlRW50cnlTaGFyZWQgJiB7XG4gIHN0YXR1czogRW50cnlTdGF0dXMuUmVqZWN0ZWRcbiAgcnNjOiBudWxsXG4gIGlzUGFydGlhbDogdHJ1ZVxuICBwcm9taXNlOiBudWxsXG59XG5cbmV4cG9ydCB0eXBlIEZ1bGZpbGxlZFNlZ21lbnRDYWNoZUVudHJ5ID0gU2VnbWVudENhY2hlRW50cnlTaGFyZWQgJiB7XG4gIHN0YXR1czogRW50cnlTdGF0dXMuRnVsZmlsbGVkXG4gIHJzYzogUmVhY3QuUmVhY3ROb2RlIHwgbnVsbFxuICBpc1BhcnRpYWw6IGJvb2xlYW5cbiAgcHJvbWlzZTogbnVsbFxufVxuXG5leHBvcnQgdHlwZSBTZWdtZW50Q2FjaGVFbnRyeSA9XG4gIHwgRW1wdHlTZWdtZW50Q2FjaGVFbnRyeVxuICB8IFBlbmRpbmdTZWdtZW50Q2FjaGVFbnRyeVxuICB8IFJlamVjdGVkU2VnbWVudENhY2hlRW50cnlcbiAgfCBGdWxmaWxsZWRTZWdtZW50Q2FjaGVFbnRyeVxuXG5leHBvcnQgdHlwZSBOb25FbXB0eVNlZ21lbnRDYWNoZUVudHJ5ID0gRXhjbHVkZTxcbiAgU2VnbWVudENhY2hlRW50cnksXG4gIEVtcHR5U2VnbWVudENhY2hlRW50cnlcbj5cblxuY29uc3QgaXNPdXRwdXRFeHBvcnRNb2RlID1cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJyAmJlxuICBwcm9jZXNzLmVudi5fX05FWFRfQ09ORklHX09VVFBVVCA9PT0gJ2V4cG9ydCdcblxuY29uc3QgTWV0YWRhdGFPbmx5UmVxdWVzdFRyZWU6IEZsaWdodFJvdXRlclN0YXRlID0gW1xuICAnJyxcbiAge30sXG4gIG51bGwsXG4gICdtZXRhZGF0YS1vbmx5Jyxcbl1cblxubGV0IHJvdXRlQ2FjaGVNYXA6IENhY2hlTWFwPFJvdXRlQ2FjaGVFbnRyeT4gPSBjcmVhdGVDYWNoZU1hcCgpXG5sZXQgc2VnbWVudENhY2hlTWFwOiBDYWNoZU1hcDxTZWdtZW50Q2FjaGVFbnRyeT4gPSBjcmVhdGVDYWNoZU1hcCgpXG5cbi8vIEFsbCBpbnZhbGlkYXRpb24gbGlzdGVuZXJzIGZvciB0aGUgd2hvbGUgY2FjaGUgYXJlIHRyYWNrZWQgaW4gc2luZ2xlIHNldC5cbi8vIFNpbmNlIHdlIGRvbid0IHlldCBzdXBwb3J0IHRhZyBvciBwYXRoLWJhc2VkIGludmFsaWRhdGlvbiwgdGhlcmUncyBubyBwb2ludFxuLy8gdHJhY2tpbmcgdGhlbSBhbnkgbW9yZSBncmFudWxhcmx5IHRoYW4gdGhpcy4gT25jZSB3ZSBhZGQgZ3JhbnVsYXJcbi8vIGludmFsaWRhdGlvbiwgdGhhdCBtYXkgY2hhbmdlLCB0aG91Z2ggZ2VuZXJhbGx5IHRoZSBtb2RlbCBpcyB0byBqdXN0IG5vdGlmeVxuLy8gdGhlIGxpc3RlbmVycyBhbmQgYWxsb3cgdGhlIGNhbGxlciB0byBwb2xsIHRoZSBwcmVmZXRjaCBjYWNoZSB3aXRoIGEgbmV3XG4vLyBwcmVmZXRjaCB0YXNrIGlmIGRlc2lyZWQuXG5sZXQgaW52YWxpZGF0aW9uTGlzdGVuZXJzOiBTZXQ8UHJlZmV0Y2hUYXNrPiB8IG51bGwgPSBudWxsXG5cbi8vIEluY3JlbWVudGluZyBjb3VudGVycyB1c2VkIHRvIHRyYWNrIGNhY2hlIGludmFsaWRhdGlvbnMuIFJvdXRlIGFuZCBzZWdtZW50XG4vLyBjYWNoZXMgaGF2ZSBzZXBhcmF0ZSB2ZXJzaW9ucyBzbyB0aGV5IGNhbiBiZSBpbnZhbGlkYXRlZCBpbmRlcGVuZGVudGx5LlxuLy8gSW52YWxpZGF0aW9uIGRvZXMgbm90IGVhZ2VybHkgZXZpY3QgYW55dGhpbmcgZnJvbSB0aGUgY2FjaGU7IGVudHJpZXMgYXJlXG4vLyBsYXppbHkgZXZpY3RlZCB3aGVuIHJlYWQuXG5sZXQgY3VycmVudFJvdXRlQ2FjaGVWZXJzaW9uID0gMFxubGV0IGN1cnJlbnRTZWdtZW50Q2FjaGVWZXJzaW9uID0gMFxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3VycmVudFJvdXRlQ2FjaGVWZXJzaW9uKCk6IG51bWJlciB7XG4gIHJldHVybiBjdXJyZW50Um91dGVDYWNoZVZlcnNpb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEN1cnJlbnRTZWdtZW50Q2FjaGVWZXJzaW9uKCk6IG51bWJlciB7XG4gIHJldHVybiBjdXJyZW50U2VnbWVudENhY2hlVmVyc2lvblxufVxuXG4vKipcbiAqIEludmFsaWRhdGVzIGFsbCBwcmVmZXRjaCBjYWNoZSBlbnRyaWVzIChib3RoIHJvdXRlIGFuZCBzZWdtZW50IGNhY2hlcykuXG4gKlxuICogQWZ0ZXIgaW52YWxpZGF0aW9uLCB0cmlnZ2VycyByZS1wcmVmZXRjaGluZyBvZiB2aXNpYmxlIGxpbmtzIGFuZCBub3RpZmllc1xuICogaW52YWxpZGF0aW9uIGxpc3RlbmVycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGludmFsaWRhdGVFbnRpcmVQcmVmZXRjaENhY2hlKFxuICBuZXh0VXJsOiBzdHJpbmcgfCBudWxsLFxuICB0cmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZVxuKTogdm9pZCB7XG4gIGN1cnJlbnRSb3V0ZUNhY2hlVmVyc2lvbisrXG4gIGN1cnJlbnRTZWdtZW50Q2FjaGVWZXJzaW9uKytcblxuICBwaW5nVmlzaWJsZUxpbmtzKG5leHRVcmwsIHRyZWUpXG4gIHBpbmdJbnZhbGlkYXRpb25MaXN0ZW5lcnMobmV4dFVybCwgdHJlZSlcbn1cblxuLyoqXG4gKiBJbnZhbGlkYXRlcyBhbGwgcm91dGUgY2FjaGUgZW50cmllcy4gUm91dGUgZW50cmllcyBjb250YWluIHRoZSB0cmVlIHN0cnVjdHVyZVxuICogKHdoaWNoIHNlZ21lbnRzIGV4aXN0IGF0IGEgZ2l2ZW4gVVJMKSBidXQgbm90IHRoZSBzZWdtZW50IGRhdGEgaXRzZWxmLlxuICpcbiAqIEFmdGVyIGludmFsaWRhdGlvbiwgdHJpZ2dlcnMgcmUtcHJlZmV0Y2hpbmcgb2YgdmlzaWJsZSBsaW5rcyBhbmQgbm90aWZpZXNcbiAqIGludmFsaWRhdGlvbiBsaXN0ZW5lcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnZhbGlkYXRlUm91dGVDYWNoZUVudHJpZXMoXG4gIG5leHRVcmw6IHN0cmluZyB8IG51bGwsXG4gIHRyZWU6IEZsaWdodFJvdXRlclN0YXRlXG4pOiB2b2lkIHtcbiAgY3VycmVudFJvdXRlQ2FjaGVWZXJzaW9uKytcblxuICBwaW5nVmlzaWJsZUxpbmtzKG5leHRVcmwsIHRyZWUpXG4gIHBpbmdJbnZhbGlkYXRpb25MaXN0ZW5lcnMobmV4dFVybCwgdHJlZSlcbn1cblxuLyoqXG4gKiBJbnZhbGlkYXRlcyBhbGwgc2VnbWVudCBjYWNoZSBlbnRyaWVzLiBTZWdtZW50IGVudHJpZXMgY29udGFpbiB0aGUgYWN0dWFsXG4gKiBSU0MgZGF0YSBmb3IgZWFjaCBzZWdtZW50LlxuICpcbiAqIEFmdGVyIGludmFsaWRhdGlvbiwgdHJpZ2dlcnMgcmUtcHJlZmV0Y2hpbmcgb2YgdmlzaWJsZSBsaW5rcyBhbmQgbm90aWZpZXNcbiAqIGludmFsaWRhdGlvbiBsaXN0ZW5lcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnZhbGlkYXRlU2VnbWVudENhY2hlRW50cmllcyhcbiAgbmV4dFVybDogc3RyaW5nIHwgbnVsbCxcbiAgdHJlZTogRmxpZ2h0Um91dGVyU3RhdGVcbik6IHZvaWQge1xuICBjdXJyZW50U2VnbWVudENhY2hlVmVyc2lvbisrXG5cbiAgcGluZ1Zpc2libGVMaW5rcyhuZXh0VXJsLCB0cmVlKVxuICBwaW5nSW52YWxpZGF0aW9uTGlzdGVuZXJzKG5leHRVcmwsIHRyZWUpXG59XG5cbmZ1bmN0aW9uIGF0dGFjaEludmFsaWRhdGlvbkxpc3RlbmVyKHRhc2s6IFByZWZldGNoVGFzayk6IHZvaWQge1xuICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuZXZlciBhIHByZWZldGNoIHRhc2sgcmVhZHMgYSBjYWNoZSBlbnRyeS4gSWZcbiAgLy8gdGhlIHRhc2sgaGFzIGFuIG9uSW52YWxpZGF0ZSBmdW5jdGlvbiBhc3NvY2lhdGVkIHdpdGggaXQg4oCUIGkuZS4gdGhlIG9uZVxuICAvLyBvcHRpb25hbGx5IHBhc3NlZCB0byByb3V0ZXIucHJlZmV0Y2gob25JbnZhbGlkYXRlKSDigJQgdGhlbiB3ZSBhdHRhY2ggdGhhdFxuICAvLyBsaXN0ZW5lciB0byB0aGUgZXZlcnkgY2FjaGUgZW50cnkgdGhhdCB0aGUgdGFzayByZWFkcy4gVGhlbiwgaWYgYW4gZW50cnlcbiAgLy8gaXMgaW52YWxpZGF0ZWQsIHdlIGNhbGwgdGhlIGZ1bmN0aW9uLlxuICBpZiAodGFzay5vbkludmFsaWRhdGUgIT09IG51bGwpIHtcbiAgICBpZiAoaW52YWxpZGF0aW9uTGlzdGVuZXJzID09PSBudWxsKSB7XG4gICAgICBpbnZhbGlkYXRpb25MaXN0ZW5lcnMgPSBuZXcgU2V0KFt0YXNrXSlcbiAgICB9IGVsc2Uge1xuICAgICAgaW52YWxpZGF0aW9uTGlzdGVuZXJzLmFkZCh0YXNrKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBub3RpZnlJbnZhbGlkYXRpb25MaXN0ZW5lcih0YXNrOiBQcmVmZXRjaFRhc2spOiB2b2lkIHtcbiAgY29uc3Qgb25JbnZhbGlkYXRlID0gdGFzay5vbkludmFsaWRhdGVcbiAgaWYgKG9uSW52YWxpZGF0ZSAhPT0gbnVsbCkge1xuICAgIC8vIENsZWFyIHRoZSBjYWxsYmFjayBmcm9tIHRoZSB0YXNrIG9iamVjdCB0byBndWFyYW50ZWUgaXQncyBub3QgY2FsbGVkIG1vcmVcbiAgICAvLyB0aGFuIG9uY2UuXG4gICAgdGFzay5vbkludmFsaWRhdGUgPSBudWxsXG5cbiAgICAvLyBUaGlzIGlzIGEgdXNlci1zcGFjZSBmdW5jdGlvbiwgc28gd2UgbXVzdCB3cmFwIGluIHRyeS9jYXRjaC5cbiAgICB0cnkge1xuICAgICAgb25JbnZhbGlkYXRlKClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKHR5cGVvZiByZXBvcnRFcnJvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXBvcnRFcnJvcihlcnJvcilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwaW5nSW52YWxpZGF0aW9uTGlzdGVuZXJzKFxuICBuZXh0VXJsOiBzdHJpbmcgfCBudWxsLFxuICB0cmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZVxuKTogdm9pZCB7XG4gIC8vIFRoZSByb3VnaCBlcXVpdmFsZW50IG9mIHBpbmdWaXNpYmxlTGlua3MsIGJ1dCBmb3Igb25JbnZhbGlkYXRlIGNhbGxiYWNrcy5cbiAgLy8gVGhpcyBpcyBjYWxsZWQgd2hlbiB0aGUgTmV4dC1Vcmwgb3IgdGhlIGJhc2UgdHJlZSBjaGFuZ2VzLCBzaW5jZSB0aG9zZVxuICAvLyBtYXkgYWZmZWN0IHRoZSByZXN1bHQgb2YgYSBwcmVmZXRjaCB0YXNrLiBJdCdzIGFsc28gY2FsbGVkIGFmdGVyIGFcbiAgLy8gY2FjaGUgaW52YWxpZGF0aW9uLlxuICBpZiAoaW52YWxpZGF0aW9uTGlzdGVuZXJzICE9PSBudWxsKSB7XG4gICAgY29uc3QgdGFza3MgPSBpbnZhbGlkYXRpb25MaXN0ZW5lcnNcbiAgICBpbnZhbGlkYXRpb25MaXN0ZW5lcnMgPSBudWxsXG4gICAgZm9yIChjb25zdCB0YXNrIG9mIHRhc2tzKSB7XG4gICAgICBpZiAoaXNQcmVmZXRjaFRhc2tEaXJ0eSh0YXNrLCBuZXh0VXJsLCB0cmVlKSkge1xuICAgICAgICBub3RpZnlJbnZhbGlkYXRpb25MaXN0ZW5lcih0YXNrKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFJvdXRlQ2FjaGVFbnRyeShcbiAgbm93OiBudW1iZXIsXG4gIGtleTogUm91dGVDYWNoZUtleVxuKTogUm91dGVDYWNoZUVudHJ5IHwgbnVsbCB7XG4gIGNvbnN0IHZhcnlQYXRoOiBSb3V0ZVZhcnlQYXRoID0gZ2V0Um91dGVWYXJ5UGF0aChcbiAgICBrZXkucGF0aG5hbWUsXG4gICAga2V5LnNlYXJjaCxcbiAgICBrZXkubmV4dFVybFxuICApXG4gIGNvbnN0IGlzUmV2YWxpZGF0aW9uID0gZmFsc2VcbiAgY29uc3QgZXhpc3RpbmdFbnRyeSA9IGdldEZyb21DYWNoZU1hcChcbiAgICBub3csXG4gICAgZ2V0Q3VycmVudFJvdXRlQ2FjaGVWZXJzaW9uKCksXG4gICAgcm91dGVDYWNoZU1hcCxcbiAgICB2YXJ5UGF0aCxcbiAgICBpc1JldmFsaWRhdGlvblxuICApXG4gIGlmIChleGlzdGluZ0VudHJ5ICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIGV4aXN0aW5nRW50cnlcbiAgfVxuXG4gIC8vIE5vIGNhY2hlIGhpdC4gQXR0ZW1wdCB0byBjb25zdHJ1Y3QgZnJvbSB0ZW1wbGF0ZSB1c2luZyB0aGUgbmV3XG4gIC8vIG9wdGltaXN0aWMgcm91dGluZyBtZWNoYW5pc20gKHBhdHRlcm4tYmFzZWQgbWF0Y2hpbmcpLlxuICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX09QVElNSVNUSUNfUk9VVElORykge1xuICAgIHJldHVybiBtYXRjaEtub3duUm91dGUoa2V5LnBhdGhuYW1lLCBrZXkuc2VhcmNoKVxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRTZWdtZW50Q2FjaGVFbnRyeShcbiAgbm93OiBudW1iZXIsXG4gIHZhcnlQYXRoOiBTZWdtZW50VmFyeVBhdGhcbik6IFNlZ21lbnRDYWNoZUVudHJ5IHwgbnVsbCB7XG4gIGNvbnN0IGlzUmV2YWxpZGF0aW9uID0gZmFsc2VcbiAgcmV0dXJuIGdldEZyb21DYWNoZU1hcChcbiAgICBub3csXG4gICAgZ2V0Q3VycmVudFNlZ21lbnRDYWNoZVZlcnNpb24oKSxcbiAgICBzZWdtZW50Q2FjaGVNYXAsXG4gICAgdmFyeVBhdGgsXG4gICAgaXNSZXZhbGlkYXRpb25cbiAgKVxufVxuXG5mdW5jdGlvbiByZWFkUmV2YWxpZGF0aW5nU2VnbWVudENhY2hlRW50cnkoXG4gIG5vdzogbnVtYmVyLFxuICB2YXJ5UGF0aDogU2VnbWVudFZhcnlQYXRoXG4pOiBTZWdtZW50Q2FjaGVFbnRyeSB8IG51bGwge1xuICBjb25zdCBpc1JldmFsaWRhdGlvbiA9IHRydWVcbiAgcmV0dXJuIGdldEZyb21DYWNoZU1hcChcbiAgICBub3csXG4gICAgZ2V0Q3VycmVudFNlZ21lbnRDYWNoZVZlcnNpb24oKSxcbiAgICBzZWdtZW50Q2FjaGVNYXAsXG4gICAgdmFyeVBhdGgsXG4gICAgaXNSZXZhbGlkYXRpb25cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd2FpdEZvclNlZ21lbnRDYWNoZUVudHJ5KFxuICBwZW5kaW5nRW50cnk6IFBlbmRpbmdTZWdtZW50Q2FjaGVFbnRyeVxuKTogUHJvbWlzZTxGdWxmaWxsZWRTZWdtZW50Q2FjaGVFbnRyeSB8IG51bGw+IHtcbiAgLy8gQmVjYXVzZSB0aGUgZW50cnkgaXMgcGVuZGluZywgdGhlcmUncyBhbHJlYWR5IGEgaW4tcHJvZ3Jlc3MgcmVxdWVzdC5cbiAgLy8gQXR0YWNoIGEgcHJvbWlzZSB0byB0aGUgZW50cnkgdGhhdCB3aWxsIHJlc29sdmUgd2hlbiB0aGUgc2VydmVyIHJlc3BvbmRzLlxuICBsZXQgcHJvbWlzZVdpdGhSZXNvbHZlcnMgPSBwZW5kaW5nRW50cnkucHJvbWlzZVxuICBpZiAocHJvbWlzZVdpdGhSZXNvbHZlcnMgPT09IG51bGwpIHtcbiAgICBwcm9taXNlV2l0aFJlc29sdmVycyA9IHBlbmRpbmdFbnRyeS5wcm9taXNlID1cbiAgICAgIGNyZWF0ZVByb21pc2VXaXRoUmVzb2x2ZXJzPEZ1bGZpbGxlZFNlZ21lbnRDYWNoZUVudHJ5IHwgbnVsbD4oKVxuICB9IGVsc2Uge1xuICAgIC8vIFRoZXJlJ3MgYWxyZWFkeSBhIHByb21pc2Ugd2UgY2FuIHVzZVxuICB9XG4gIHJldHVybiBwcm9taXNlV2l0aFJlc29sdmVycy5wcm9taXNlXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURldGFjaGVkUm91dGVDYWNoZUVudHJ5KCk6IFBlbmRpbmdSb3V0ZUNhY2hlRW50cnkge1xuICByZXR1cm4ge1xuICAgIGNhbm9uaWNhbFVybDogbnVsbCxcbiAgICBzdGF0dXM6IEVudHJ5U3RhdHVzLkVtcHR5LFxuICAgIGJsb2NrZWRUYXNrczogbnVsbCxcbiAgICB0cmVlOiBudWxsLFxuICAgIG1ldGFkYXRhOiBudWxsLFxuICAgIC8vIFRoaXMgaXMgaW5pdGlhbGl6ZWQgdG8gdHJ1ZSBiZWNhdXNlIHdlIGRvbid0IGtub3cgeWV0IHdoZXRoZXIgdGhlIHJvdXRlXG4gICAgLy8gY291bGQgYmUgaW50ZXJjZXB0ZWQuIEl0J3Mgb25seSBzZXQgdG8gZmFsc2Ugb25jZSB3ZSByZWNlaXZlIGEgcmVzcG9uc2VcbiAgICAvLyBmcm9tIHRoZSBzZXJ2ZXIuXG4gICAgY291bGRCZUludGVyY2VwdGVkOiB0cnVlLFxuICAgIC8vIFNpbWlsYXJseSwgd2UgZG9uJ3QgeWV0IGtub3cgaWYgdGhlIHJvdXRlIHN1cHBvcnRzIFBQUi5cbiAgICBzdXBwb3J0c1BlclNlZ21lbnRQcmVmZXRjaGluZzogZmFsc2UsXG4gICAgcmVuZGVyZWRTZWFyY2g6IG51bGwsXG5cbiAgICAvLyBNYXAtcmVsYXRlZCBmaWVsZHNcbiAgICByZWY6IG51bGwsXG4gICAgc2l6ZTogMCxcbiAgICAvLyBTaW5jZSB0aGlzIGlzIGFuIGVtcHR5IGVudHJ5LCB0aGVyZSdzIG5vIHJlYXNvbiB0byBldmVyIGV2aWN0IGl0LiBJdCB3aWxsXG4gICAgLy8gYmUgdXBkYXRlZCB3aGVuIHRoZSBkYXRhIGlzIHBvcHVsYXRlZC5cbiAgICBzdGFsZUF0OiBJbmZpbml0eSxcbiAgICB2ZXJzaW9uOiBnZXRDdXJyZW50Um91dGVDYWNoZVZlcnNpb24oKSxcbiAgfVxufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhbiBlbnRyeSBmb3IgYSByb3V0ZSBleGlzdHMgaW4gdGhlIGNhY2hlLiBJZiBzbywgaXQgcmV0dXJucyB0aGVcbiAqIGVudHJ5LCBJZiBub3QsIGl0IGFkZHMgYW4gZW1wdHkgZW50cnkgdG8gdGhlIGNhY2hlIGFuZCByZXR1cm5zIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZE9yQ3JlYXRlUm91dGVDYWNoZUVudHJ5KFxuICBub3c6IG51bWJlcixcbiAgdGFzazogUHJlZmV0Y2hUYXNrLFxuICBrZXk6IFJvdXRlQ2FjaGVLZXlcbik6IFJvdXRlQ2FjaGVFbnRyeSB7XG4gIGF0dGFjaEludmFsaWRhdGlvbkxpc3RlbmVyKHRhc2spXG5cbiAgY29uc3QgZXhpc3RpbmdFbnRyeSA9IHJlYWRSb3V0ZUNhY2hlRW50cnkobm93LCBrZXkpXG4gIGlmIChleGlzdGluZ0VudHJ5ICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIGV4aXN0aW5nRW50cnlcbiAgfVxuICAvLyBDcmVhdGUgYSBwZW5kaW5nIGVudHJ5IGFuZCBhZGQgaXQgdG8gdGhlIGNhY2hlLlxuICBjb25zdCBwZW5kaW5nRW50cnkgPSBjcmVhdGVEZXRhY2hlZFJvdXRlQ2FjaGVFbnRyeSgpXG4gIGNvbnN0IHZhcnlQYXRoOiBSb3V0ZVZhcnlQYXRoID0gZ2V0Um91dGVWYXJ5UGF0aChcbiAgICBrZXkucGF0aG5hbWUsXG4gICAga2V5LnNlYXJjaCxcbiAgICBrZXkubmV4dFVybFxuICApXG4gIGNvbnN0IGlzUmV2YWxpZGF0aW9uID0gZmFsc2VcbiAgc2V0SW5DYWNoZU1hcChyb3V0ZUNhY2hlTWFwLCB2YXJ5UGF0aCwgcGVuZGluZ0VudHJ5LCBpc1JldmFsaWRhdGlvbilcbiAgcmV0dXJuIHBlbmRpbmdFbnRyeVxufVxuXG4vLyBUT0RPOiBUaGlzIGZ1bmN0aW9uIHByZWRhdGVzIHRoZSBuZXcgb3B0aW1pc3RpY1JvdXRpbmcgZmVhdHVyZSBhbmQgd2lsbCBiZVxuLy8gcmVtb3ZlZCBvbmNlIG9wdGltaXN0aWNSb3V0aW5nIGlzIHN0YWJsZS4gVGhlIG5ldyBtZWNoYW5pc20gKG1hdGNoS25vd25Sb3V0ZSlcbi8vIGhhbmRsZXMgc2VhcmNoIHBhcmFtIHZhcmlhdGlvbnMgbW9yZSByb2J1c3RseSBhcyBwYXJ0IG9mIHRoZSBnZW5lcmFsIHJvdXRlXG4vLyBwcmVkaWN0aW9uIHN5c3RlbS4gVGhpcyBmYWxsYmFjayByZW1haW5zIGZvciB3aGVuIG9wdGltaXN0aWNSb3V0aW5nIGlzXG4vLyBkaXNhYmxlZCAoc3RhdGljQ2hpbGRyZW4gaXMgbnVsbCkuXG5leHBvcnQgZnVuY3Rpb24gZGVwcmVjYXRlZF9yZXF1ZXN0T3B0aW1pc3RpY1JvdXRlQ2FjaGVFbnRyeShcbiAgbm93OiBudW1iZXIsXG4gIHJlcXVlc3RlZFVybDogVVJMLFxuICBuZXh0VXJsOiBzdHJpbmcgfCBudWxsXG4pOiBGdWxmaWxsZWRSb3V0ZUNhY2hlRW50cnkgfCBudWxsIHtcbiAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZHVyaW5nIGEgbmF2aWdhdGlvbiB3aGVuIHRoZXJlIHdhcyBubyBtYXRjaGluZ1xuICAvLyByb3V0ZSB0cmVlIGluIHRoZSBwcmVmZXRjaCBjYWNoZS4gQmVmb3JlIGRlLW9wdGluZyB0byBhIGJsb2NraW5nLFxuICAvLyB1bnByZWZldGNoZWQgbmF2aWdhdGlvbiwgd2Ugd2lsbCBmaXJzdCBhdHRlbXB0IHRvIGNvbnN0cnVjdCBhbiBcIm9wdGltaXN0aWNcIlxuICAvLyByb3V0ZSB0cmVlIGJ5IGNoZWNraW5nIHRoZSBjYWNoZSBmb3Igc2ltaWxhciByb3V0ZXMuXG4gIC8vXG4gIC8vIENoZWNrIGlmIHRoZXJlJ3MgYSByb3V0ZSB3aXRoIHRoZSBzYW1lIHBhdGhuYW1lLCBidXQgd2l0aCBkaWZmZXJlbnRcbiAgLy8gc2VhcmNoIHBhcmFtcy4gV2UgY2FuIHRoZW4gYmFzZSBvdXIgb3B0aW1pc3RpYyByb3V0ZSB0cmVlIG9uIHRoaXMgZW50cnkuXG4gIC8vXG4gIC8vIENvbmNlcHR1YWxseSwgd2UgYXJlIHNpbXVsYXRpbmcgd2hhdCB3b3VsZCBoYXBwZW4gaWYgd2UgZGlkIHBlcmZvcm0gYVxuICAvLyBwcmVmZXRjaCB0aGUgcmVxdWVzdGVkIFVSTCwgdW5kZXIgdGhlIGFzc3VtcHRpb24gdGhhdCB0aGUgc2VydmVyIHdpbGxcbiAgLy8gbm90IHJlZGlyZWN0IG9yIHJld3JpdGUgdGhlIHJlcXVlc3QgaW4gYSBkaWZmZXJlbnQgbWFubmVyIHRoYW4gdGhlXG4gIC8vIGJhc2Ugcm91dGUgdHJlZS4gVGhpcyBhc3N1bXB0aW9uIG1pZ2h0IG5vdCBob2xkLCBpbiB3aGljaCBjYXNlIHdlJ2xsIGhhdmVcbiAgLy8gdG8gcmVjb3ZlciB3aGVuIHdlIHBlcmZvcm0gdGhlIGR5bmFtaWMgbmF2aWdhdGlvbiByZXF1ZXN0LiBIb3dldmVyLCB0aGlzXG4gIC8vIGlzIHdoYXQgd291bGQgaGFwcGVuIGlmIGEgcm91dGUgd2VyZSBkeW5hbWljYWxseSByZXdyaXR0ZW4vcmVkaXJlY3RlZFxuICAvLyBpbiBiZXR3ZWVuIHRoZSBwcmVmZXRjaCBhbmQgdGhlIG5hdmlnYXRpb24uIFNvIHRoZSBsb2dpYyBuZWVkcyB0byBleGlzdFxuICAvLyB0byBoYW5kbGUgdGhpcyBjYXNlIHJlZ2FyZGxlc3MuXG5cbiAgLy8gTG9vayBmb3IgYSByb3V0ZSB3aXRoIHRoZSBzYW1lIHBhdGhuYW1lLCBidXQgd2l0aCBhbiBlbXB0eSBzZWFyY2ggc3RyaW5nLlxuICAvLyBUT0RPOiBUaGVyZSdzIG5vdGhpbmcgaW5oZXJlbnRseSBzcGVjaWFsIGFib3V0IHRoZSBlbXB0eSBzZWFyY2ggc3RyaW5nO1xuICAvLyBpdCdzIGNob3NlbiBzb21ld2hhdCBhcmJpdHJhcmlseSwgd2l0aCB0aGUgcmF0aW9uYWxlIHRoYXQgaXQncyB0aGUgbW9zdFxuICAvLyBsaWtlbHkgb25lIHRvIGV4aXN0LiBCdXQgd2Ugc2hvdWxkIHVwZGF0ZSB0aGlzIHRvIG1hdGNoIF9hbnlfIHNlYXJjaFxuICAvLyBzdHJpbmcuIFRoZSBwbGFuIGlzIHRvIGdlbmVyYWxpemUgdGhpcyBsb2dpYyBhbG9uZ3NpZGUgb3RoZXIgaW1wcm92ZW1lbnRzXG4gIC8vIHJlbGF0ZWQgdG8gXCJmYWxsYmFja1wiIGNhY2hlIGVudHJpZXMuXG4gIGNvbnN0IHJlcXVlc3RlZFNlYXJjaCA9IHJlcXVlc3RlZFVybC5zZWFyY2ggYXMgTm9ybWFsaXplZFNlYXJjaFxuICBpZiAocmVxdWVzdGVkU2VhcmNoID09PSAnJykge1xuICAgIC8vIFRoZSBjYWxsZXIgd291bGQgaGF2ZSBhbHJlYWR5IGNoZWNrZWQgaWYgYSByb3V0ZSB3aXRoIGFuIGVtcHR5IHNlYXJjaFxuICAgIC8vIHN0cmluZyBpcyBpbiB0aGUgY2FjaGUuIFNvIHdlIGNhbiBiYWlsIG91dCBoZXJlLlxuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgdXJsV2l0aG91dFNlYXJjaFBhcmFtcyA9IG5ldyBVUkwocmVxdWVzdGVkVXJsKVxuICB1cmxXaXRob3V0U2VhcmNoUGFyYW1zLnNlYXJjaCA9ICcnXG4gIGNvbnN0IHJvdXRlV2l0aE5vU2VhcmNoUGFyYW1zID0gcmVhZFJvdXRlQ2FjaGVFbnRyeShcbiAgICBub3csXG4gICAgY3JlYXRlUHJlZmV0Y2hSZXF1ZXN0S2V5KHVybFdpdGhvdXRTZWFyY2hQYXJhbXMuaHJlZiwgbmV4dFVybClcbiAgKVxuXG4gIGlmIChcbiAgICByb3V0ZVdpdGhOb1NlYXJjaFBhcmFtcyA9PT0gbnVsbCB8fFxuICAgIHJvdXRlV2l0aE5vU2VhcmNoUGFyYW1zLnN0YXR1cyAhPT0gRW50cnlTdGF0dXMuRnVsZmlsbGVkXG4gICkge1xuICAgIC8vIEJhaWwgb3V0IG9mIGNvbnN0cnVjdGluZyBhbiBvcHRpbWlzdGljIHJvdXRlIHRyZWUuIFRoaXMgd2lsbCByZXN1bHQgaW5cbiAgICAvLyBhIGJsb2NraW5nLCB1bnByZWZldGNoZWQgbmF2aWdhdGlvbi5cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLy8gTm93IHdlIGhhdmUgYSBiYXNlIHJvdXRlIHRyZWUgd2UgY2FuIFwicGF0Y2hcIiB3aXRoIG91ciBvcHRpbWlzdGljIHZhbHVlcy5cblxuICAvLyBPcHRpbWlzdGljYWxseSBhc3N1bWUgdGhhdCByZWRpcmVjdHMgZm9yIHRoZSByZXF1ZXN0ZWQgcGF0aG5hbWUgZG9cbiAgLy8gbm90IHZhcnkgb24gdGhlIHNlYXJjaCBzdHJpbmcuIFRoZXJlZm9yZSwgaWYgdGhlIGJhc2Ugcm91dGUgd2FzXG4gIC8vIHJlZGlyZWN0ZWQgdG8gYSBkaWZmZXJlbnQgc2VhcmNoIHN0cmluZywgdGhlbiB0aGUgb3B0aW1pc3RpYyByb3V0ZVxuICAvLyBzaG91bGQgYmUgcmVkaXJlY3RlZCB0byB0aGUgc2FtZSBzZWFyY2ggc3RyaW5nLiBPdGhlcndpc2UsIHdlIHVzZVxuICAvLyB0aGUgcmVxdWVzdGVkIHNlYXJjaCBzdHJpbmcuXG4gIGNvbnN0IGNhbm9uaWNhbFVybEZvclJvdXRlV2l0aE5vU2VhcmNoUGFyYW1zID0gbmV3IFVSTChcbiAgICByb3V0ZVdpdGhOb1NlYXJjaFBhcmFtcy5jYW5vbmljYWxVcmwsXG4gICAgcmVxdWVzdGVkVXJsLm9yaWdpblxuICApXG4gIGNvbnN0IG9wdGltaXN0aWNDYW5vbmljYWxTZWFyY2ggPVxuICAgIGNhbm9uaWNhbFVybEZvclJvdXRlV2l0aE5vU2VhcmNoUGFyYW1zLnNlYXJjaCAhPT0gJydcbiAgICAgID8gLy8gQmFzZSByb3V0ZSB3YXMgcmVkaXJlY3RlZC4gUmV1c2UgdGhlIHNhbWUgcmVkaXJlY3RlZCBzZWFyY2ggc3RyaW5nLlxuICAgICAgICBjYW5vbmljYWxVcmxGb3JSb3V0ZVdpdGhOb1NlYXJjaFBhcmFtcy5zZWFyY2hcbiAgICAgIDogcmVxdWVzdGVkU2VhcmNoXG5cbiAgLy8gU2ltaWxhcmx5LCBvcHRpbWlzdGljYWxseSBhc3N1bWUgdGhhdCByZXdyaXRlcyBmb3IgdGhlIHJlcXVlc3RlZFxuICAvLyBwYXRobmFtZSBkbyBub3QgdmFyeSBvbiB0aGUgc2VhcmNoIHN0cmluZy4gVGhlcmVmb3JlLCBpZiB0aGUgYmFzZVxuICAvLyByb3V0ZSB3YXMgcmV3cml0dGVuIHRvIGEgZGlmZmVyZW50IHNlYXJjaCBzdHJpbmcsIHRoZW4gdGhlIG9wdGltaXN0aWNcbiAgLy8gcm91dGUgc2hvdWxkIGJlIHJld3JpdHRlbiB0byB0aGUgc2FtZSBzZWFyY2ggc3RyaW5nLiBPdGhlcndpc2UsIHdlIHVzZVxuICAvLyB0aGUgcmVxdWVzdGVkIHNlYXJjaCBzdHJpbmcuXG4gIGNvbnN0IG9wdGltaXN0aWNSZW5kZXJlZFNlYXJjaCA9XG4gICAgcm91dGVXaXRoTm9TZWFyY2hQYXJhbXMucmVuZGVyZWRTZWFyY2ggIT09ICcnXG4gICAgICA/IC8vIEJhc2Ugcm91dGUgd2FzIHJld3JpdHRlbi4gUmV1c2UgdGhlIHNhbWUgcmV3cml0dGVuIHNlYXJjaCBzdHJpbmcuXG4gICAgICAgIHJvdXRlV2l0aE5vU2VhcmNoUGFyYW1zLnJlbmRlcmVkU2VhcmNoXG4gICAgICA6IHJlcXVlc3RlZFNlYXJjaFxuXG4gIGNvbnN0IG9wdGltaXN0aWNVcmwgPSBuZXcgVVJMKFxuICAgIHJvdXRlV2l0aE5vU2VhcmNoUGFyYW1zLmNhbm9uaWNhbFVybCxcbiAgICBsb2NhdGlvbi5vcmlnaW5cbiAgKVxuICBvcHRpbWlzdGljVXJsLnNlYXJjaCA9IG9wdGltaXN0aWNDYW5vbmljYWxTZWFyY2hcbiAgY29uc3Qgb3B0aW1pc3RpY0Nhbm9uaWNhbFVybCA9IGNyZWF0ZUhyZWZGcm9tVXJsKG9wdGltaXN0aWNVcmwpXG5cbiAgY29uc3Qgb3B0aW1pc3RpY1JvdXRlVHJlZSA9IGRlcHJlY2F0ZWRfY3JlYXRlT3B0aW1pc3RpY1JvdXRlVHJlZShcbiAgICByb3V0ZVdpdGhOb1NlYXJjaFBhcmFtcy50cmVlLFxuICAgIG9wdGltaXN0aWNSZW5kZXJlZFNlYXJjaFxuICApXG4gIGNvbnN0IG9wdGltaXN0aWNNZXRhZGF0YVRyZWUgPSBkZXByZWNhdGVkX2NyZWF0ZU9wdGltaXN0aWNSb3V0ZVRyZWUoXG4gICAgcm91dGVXaXRoTm9TZWFyY2hQYXJhbXMubWV0YWRhdGEsXG4gICAgb3B0aW1pc3RpY1JlbmRlcmVkU2VhcmNoXG4gIClcblxuICAvLyBDbG9uZSB0aGUgYmFzZSByb3V0ZSB0cmVlLCBhbmQgb3ZlcnJpZGUgdGhlIHJlbGV2YW50IGZpZWxkcyB3aXRoIG91clxuICAvLyBvcHRpbWlzdGljIHZhbHVlcy5cbiAgY29uc3Qgb3B0aW1pc3RpY0VudHJ5OiBGdWxmaWxsZWRSb3V0ZUNhY2hlRW50cnkgPSB7XG4gICAgY2Fub25pY2FsVXJsOiBvcHRpbWlzdGljQ2Fub25pY2FsVXJsLFxuXG4gICAgc3RhdHVzOiBFbnRyeVN0YXR1cy5GdWxmaWxsZWQsXG4gICAgLy8gVGhpcyBpc24ndCBjbG9uZWQgYmVjYXVzZSBpdCdzIGluc3RhbmNlLXNwZWNpZmljXG4gICAgYmxvY2tlZFRhc2tzOiBudWxsLFxuICAgIHRyZWU6IG9wdGltaXN0aWNSb3V0ZVRyZWUsXG4gICAgbWV0YWRhdGE6IG9wdGltaXN0aWNNZXRhZGF0YVRyZWUsXG4gICAgY291bGRCZUludGVyY2VwdGVkOiByb3V0ZVdpdGhOb1NlYXJjaFBhcmFtcy5jb3VsZEJlSW50ZXJjZXB0ZWQsXG4gICAgc3VwcG9ydHNQZXJTZWdtZW50UHJlZmV0Y2hpbmc6XG4gICAgICByb3V0ZVdpdGhOb1NlYXJjaFBhcmFtcy5zdXBwb3J0c1BlclNlZ21lbnRQcmVmZXRjaGluZyxcbiAgICBoYXNEeW5hbWljUmV3cml0ZTogcm91dGVXaXRoTm9TZWFyY2hQYXJhbXMuaGFzRHluYW1pY1Jld3JpdGUsXG5cbiAgICAvLyBPdmVycmlkZSB0aGUgcmVuZGVyZWQgc2VhcmNoIHdpdGggdGhlIG9wdGltaXN0aWMgdmFsdWUuXG4gICAgcmVuZGVyZWRTZWFyY2g6IG9wdGltaXN0aWNSZW5kZXJlZFNlYXJjaCxcblxuICAgIC8vIE1hcC1yZWxhdGVkIGZpZWxkc1xuICAgIHJlZjogbnVsbCxcbiAgICBzaXplOiAwLFxuICAgIHN0YWxlQXQ6IHJvdXRlV2l0aE5vU2VhcmNoUGFyYW1zLnN0YWxlQXQsXG4gICAgdmVyc2lvbjogcm91dGVXaXRoTm9TZWFyY2hQYXJhbXMudmVyc2lvbixcbiAgfVxuXG4gIC8vIERvIG5vdCBpbnNlcnQgdGhpcyBlbnRyeSBpbnRvIHRoZSBjYWNoZS4gSXQgb25seSBleGlzdHMgc28gd2UgY2FuXG4gIC8vIHBlcmZvcm0gdGhlIGN1cnJlbnQgbmF2aWdhdGlvbi4gSnVzdCByZXR1cm4gaXQgdG8gdGhlIGNhbGxlci5cbiAgcmV0dXJuIG9wdGltaXN0aWNFbnRyeVxufVxuXG5mdW5jdGlvbiBkZXByZWNhdGVkX2NyZWF0ZU9wdGltaXN0aWNSb3V0ZVRyZWUoXG4gIHRyZWU6IFJvdXRlVHJlZSxcbiAgbmV3UmVuZGVyZWRTZWFyY2g6IE5vcm1hbGl6ZWRTZWFyY2hcbik6IFJvdXRlVHJlZSB7XG4gIC8vIENyZWF0ZSBhIG5ldyByb3V0ZSB0cmVlIHRoYXQgaWRlbnRpY2FsIHRvIHRoZSBvcmlnaW5hbCBvbmUgZXhjZXB0IGZvclxuICAvLyB0aGUgcmVuZGVyZWQgc2VhcmNoIHN0cmluZywgd2hpY2ggaXMgY29udGFpbmVkIGluIHRoZSB2YXJ5IHBhdGguXG5cbiAgbGV0IGNsb25lZFNsb3RzOiBSZWNvcmQ8c3RyaW5nLCBSb3V0ZVRyZWU+IHwgbnVsbCA9IG51bGxcbiAgY29uc3Qgb3JpZ2luYWxTbG90cyA9IHRyZWUuc2xvdHNcbiAgaWYgKG9yaWdpbmFsU2xvdHMgIT09IG51bGwpIHtcbiAgICBjbG9uZWRTbG90cyA9IHt9XG4gICAgZm9yIChjb25zdCBwYXJhbGxlbFJvdXRlS2V5IGluIG9yaWdpbmFsU2xvdHMpIHtcbiAgICAgIGNvbnN0IGNoaWxkVHJlZSA9IG9yaWdpbmFsU2xvdHNbcGFyYWxsZWxSb3V0ZUtleV1cbiAgICAgIGNsb25lZFNsb3RzW3BhcmFsbGVsUm91dGVLZXldID0gZGVwcmVjYXRlZF9jcmVhdGVPcHRpbWlzdGljUm91dGVUcmVlKFxuICAgICAgICBjaGlsZFRyZWUsXG4gICAgICAgIG5ld1JlbmRlcmVkU2VhcmNoXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgLy8gV2Ugb25seSBuZWVkIHRvIGNsb25lIHRoZSB2YXJ5IHBhdGggaWYgdGhlIHJvdXRlIGlzIGEgcGFnZS5cbiAgaWYgKHRyZWUuaXNQYWdlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlcXVlc3RLZXk6IHRyZWUucmVxdWVzdEtleSxcbiAgICAgIHNlZ21lbnQ6IHRyZWUuc2VnbWVudCxcbiAgICAgIHJlZnJlc2hTdGF0ZTogdHJlZS5yZWZyZXNoU3RhdGUsXG4gICAgICB2YXJ5UGF0aDogY2xvbmVQYWdlVmFyeVBhdGhXaXRoTmV3U2VhcmNoUGFyYW1zKFxuICAgICAgICB0cmVlLnZhcnlQYXRoLFxuICAgICAgICBuZXdSZW5kZXJlZFNlYXJjaFxuICAgICAgKSxcbiAgICAgIGlzUGFnZTogdHJ1ZSxcbiAgICAgIHNsb3RzOiBjbG9uZWRTbG90cyxcblxuICAgICAgcHJlZmV0Y2hIaW50czogdHJlZS5wcmVmZXRjaEhpbnRzLFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcmVxdWVzdEtleTogdHJlZS5yZXF1ZXN0S2V5LFxuICAgIHNlZ21lbnQ6IHRyZWUuc2VnbWVudCxcbiAgICByZWZyZXNoU3RhdGU6IHRyZWUucmVmcmVzaFN0YXRlLFxuICAgIHZhcnlQYXRoOiB0cmVlLnZhcnlQYXRoLFxuICAgIGlzUGFnZTogZmFsc2UsXG4gICAgc2xvdHM6IGNsb25lZFNsb3RzLFxuICAgIHByZWZldGNoSGludHM6IHRyZWUucHJlZmV0Y2hIaW50cyxcbiAgfVxufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhbiBlbnRyeSBmb3IgYSBzZWdtZW50IGV4aXN0cyBpbiB0aGUgY2FjaGUuIElmIHNvLCBpdCByZXR1cm5zIHRoZVxuICogZW50cnksIElmIG5vdCwgaXQgYWRkcyBhbiBlbXB0eSBlbnRyeSB0byB0aGUgY2FjaGUgYW5kIHJldHVybnMgaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkT3JDcmVhdGVTZWdtZW50Q2FjaGVFbnRyeShcbiAgbm93OiBudW1iZXIsXG4gIGZldGNoU3RyYXRlZ3k6IEZldGNoU3RyYXRlZ3ksXG4gIHRyZWU6IFJvdXRlVHJlZVxuKTogU2VnbWVudENhY2hlRW50cnkge1xuICBjb25zdCBleGlzdGluZ0VudHJ5ID0gcmVhZFNlZ21lbnRDYWNoZUVudHJ5KG5vdywgdHJlZS52YXJ5UGF0aClcbiAgaWYgKGV4aXN0aW5nRW50cnkgIT09IG51bGwpIHtcbiAgICByZXR1cm4gZXhpc3RpbmdFbnRyeVxuICB9XG4gIC8vIENyZWF0ZSBhIHBlbmRpbmcgZW50cnkgYW5kIGFkZCBpdCB0byB0aGUgY2FjaGUuIFRoZSBzdGFsZSB0aW1lIGlzIHNldCB0byBhXG4gIC8vIGRlZmF1bHQgdmFsdWU7IHRoZSBhY3R1YWwgc3RhbGUgdGltZSB3aWxsIGJlIHNldCB3aGVuIHRoZSBlbnRyeSBpc1xuICAvLyBmdWxmaWxsZWQgd2l0aCBkYXRhIGZyb20gdGhlIHNlcnZlciByZXNwb25zZS5cbiAgY29uc3QgdmFyeVBhdGhGb3JSZXF1ZXN0ID0gZ2V0U2VnbWVudFZhcnlQYXRoRm9yUmVxdWVzdChmZXRjaFN0cmF0ZWd5LCB0cmVlKVxuICBjb25zdCBwZW5kaW5nRW50cnkgPSBjcmVhdGVEZXRhY2hlZFNlZ21lbnRDYWNoZUVudHJ5KG5vdylcbiAgY29uc3QgaXNSZXZhbGlkYXRpb24gPSBmYWxzZVxuICBzZXRJbkNhY2hlTWFwKFxuICAgIHNlZ21lbnRDYWNoZU1hcCxcbiAgICB2YXJ5UGF0aEZvclJlcXVlc3QsXG4gICAgcGVuZGluZ0VudHJ5LFxuICAgIGlzUmV2YWxpZGF0aW9uXG4gIClcbiAgcmV0dXJuIHBlbmRpbmdFbnRyeVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZE9yQ3JlYXRlUmV2YWxpZGF0aW5nU2VnbWVudEVudHJ5KFxuICBub3c6IG51bWJlcixcbiAgZmV0Y2hTdHJhdGVneTogRmV0Y2hTdHJhdGVneSxcbiAgdHJlZTogUm91dGVUcmVlXG4pOiBTZWdtZW50Q2FjaGVFbnRyeSB7XG4gIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gd2UndmUgYWxyZWFkeSBjb25maXJtZWQgdGhhdCBhIHBhcnRpY3VsYXJcbiAgLy8gc2VnbWVudCBpcyBjYWNoZWQsIGJ1dCB3ZSB3YW50IHRvIHBlcmZvcm0gYW5vdGhlciByZXF1ZXN0IGFueXdheSBpbiBjYXNlIGl0XG4gIC8vIHJldHVybnMgbW9yZSBjb21wbGV0ZSBhbmQvb3IgZnJlc2hlciBkYXRhIHRoYW4gd2UgYWxyZWFkeSBoYXZlLiBUaGUgbG9naWNcbiAgLy8gZm9yIGRlY2lkaW5nIHdoZXRoZXIgdG8gcmVwbGFjZSB0aGUgZXhpc3RpbmcgZW50cnkgaXMgaGFuZGxlZCBlbHNld2hlcmU7XG4gIC8vIHRoaXMgZnVuY3Rpb24ganVzdCBoYW5kbGVzIHJldHJpZXZpbmcgYSBjYWNoZSBlbnRyeSB0aGF0IHdlIGNhbiB1c2UgdG9cbiAgLy8gdHJhY2sgdGhlIHJldmFsaWRhdGlvbi5cbiAgLy9cbiAgLy8gVGhlIHJlYXNvbiByZXZhbGlkYXRpb25zIGFyZSBzdG9yZWQgaW4gdGhlIGNhY2hlIGlzIGJlY2F1c2Ugd2UgbmVlZCB0byBiZVxuICAvLyBhYmxlIHRvIGRlZHVwZSBtdWx0aXBsZSByZXZhbGlkYXRpb24gcmVxdWVzdHMuIFRoZSByZWFzb24gdGhleSBoYXZlIHRvIGJlXG4gIC8vIGhhbmRsZWQgc3BlY2lhbGx5IGlzIGJlY2F1c2Ugd2Ugc2hvdWxkbid0IG92ZXJ3cml0ZSBhIFwibm9ybWFsXCIgZW50cnkgaWZcbiAgLy8gb25lIGV4aXN0cyBhdCB0aGUgc2FtZSBrZXlwYXRoLiBTbywgZm9yIGVhY2ggaW50ZXJuYWwgY2FjaGUgbG9jYXRpb24sIHRoZXJlXG4gIC8vIGlzIGEgc3BlY2lhbCBcInJldmFsaWRhdGlvblwiIHNsb3QgdGhhdCBpcyB1c2VkIHNvbGVseSBmb3IgdGhpcyBwdXJwb3NlLlxuICAvL1xuICAvLyBZb3UgY2FuIHRoaW5rIG9mIGl0IGFzIGlmIGFsbCB0aGUgcmV2YWxpZGF0aW9uIGVudHJpZXMgd2VyZSBzdG9yZWQgaW4gYVxuICAvLyBzZXBhcmF0ZSBjYWNoZSBtYXAgZnJvbSB0aGUgY2Fub25pY2FsIGVudHJpZXMsIGFuZCB0aGVuIHRyYW5zZmVyZWQgdG8gdGhlXG4gIC8vIGNhbm9uaWNhbCBjYWNoZSBtYXAgb25jZSB0aGUgcmVxdWVzdCBpcyBjb21wbGV0ZSDigJQgdGhpcyBpc24ndCBob3cgaXQnc1xuICAvLyBhY3R1YWxseSBpbXBsZW1lbnRlZCwgc2luY2UgaXQncyBtb3JlIGVmZmljaWVudCB0byBzdG9yZSB0aGVtIGluIHRoZSBzYW1lXG4gIC8vIGRhdGEgc3RydWN0dXJlIGFzIHRoZSBub3JtYWwgZW50cmllcywgYnV0IHRoYXQncyBob3cgaXQncyBtb2RlbGVkXG4gIC8vIGNvbmNlcHR1YWxseS5cblxuICAvLyBUT0RPOiBPbmNlIHdlIGltcGxlbWVudCBGYWxsYmFjayBiZWhhdmlvciBmb3IgcGFyYW1zLCB3aGVyZSBhbiBlbnRyeSBpc1xuICAvLyByZS1rZXllZCBiYXNlZCBvbiByZXNwb25zZSBpbmZvcm1hdGlvbiwgd2UnbGwgbmVlZCB0byBhY2NvdW50IGZvciB0aGVcbiAgLy8gcG9zc2liaWxpdHkgdGhhdCB0aGUga2V5cGF0aCBvZiB0aGUgcHJldmlvdXMgZW50cnkgaXMgbW9yZSBnZW5lcmljIHRoYW5cbiAgLy8gdGhlIGtleXBhdGggb2YgdGhlIHJldmFsaWRhdGluZyBlbnRyeS4gSW4gb3RoZXIgd29yZHMsIHRoZSBzZXJ2ZXIgY291bGRcbiAgLy8gcmV0dXJuIGEgbGVzcyBnZW5lcmljIGVudHJ5IHVwb24gcmV2YWxpZGF0aW9uLiBGb3Igbm93LCB0aG91Z2gsIHRoaXMgaXNuJ3RcbiAgLy8gYSBjb25jZXJuIGJlY2F1c2UgdGhlIGtleXBhdGggaXMgYmFzZWQgc29sZWx5IG9uIHRoZSBwcmVmZXRjaCBzdHJhdGVneSxcbiAgLy8gbm90IG9uIGRhdGEgY29udGFpbmVkIGluIHRoZSByZXNwb25zZS5cbiAgY29uc3QgZXhpc3RpbmdFbnRyeSA9IHJlYWRSZXZhbGlkYXRpbmdTZWdtZW50Q2FjaGVFbnRyeShub3csIHRyZWUudmFyeVBhdGgpXG4gIGlmIChleGlzdGluZ0VudHJ5ICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIGV4aXN0aW5nRW50cnlcbiAgfVxuICAvLyBDcmVhdGUgYSBwZW5kaW5nIGVudHJ5IGFuZCBhZGQgaXQgdG8gdGhlIGNhY2hlLiBUaGUgc3RhbGUgdGltZSBpcyBzZXQgdG8gYVxuICAvLyBkZWZhdWx0IHZhbHVlOyB0aGUgYWN0dWFsIHN0YWxlIHRpbWUgd2lsbCBiZSBzZXQgd2hlbiB0aGUgZW50cnkgaXNcbiAgLy8gZnVsZmlsbGVkIHdpdGggZGF0YSBmcm9tIHRoZSBzZXJ2ZXIgcmVzcG9uc2UuXG4gIGNvbnN0IHZhcnlQYXRoRm9yUmVxdWVzdCA9IGdldFNlZ21lbnRWYXJ5UGF0aEZvclJlcXVlc3QoZmV0Y2hTdHJhdGVneSwgdHJlZSlcbiAgY29uc3QgcGVuZGluZ0VudHJ5ID0gY3JlYXRlRGV0YWNoZWRTZWdtZW50Q2FjaGVFbnRyeShub3cpXG4gIGNvbnN0IGlzUmV2YWxpZGF0aW9uID0gdHJ1ZVxuICBzZXRJbkNhY2hlTWFwKFxuICAgIHNlZ21lbnRDYWNoZU1hcCxcbiAgICB2YXJ5UGF0aEZvclJlcXVlc3QsXG4gICAgcGVuZGluZ0VudHJ5LFxuICAgIGlzUmV2YWxpZGF0aW9uXG4gIClcbiAgcmV0dXJuIHBlbmRpbmdFbnRyeVxufVxuXG5leHBvcnQgZnVuY3Rpb24gb3ZlcndyaXRlUmV2YWxpZGF0aW5nU2VnbWVudENhY2hlRW50cnkoXG4gIG5vdzogbnVtYmVyLFxuICBmZXRjaFN0cmF0ZWd5OiBGZXRjaFN0cmF0ZWd5LFxuICB0cmVlOiBSb3V0ZVRyZWVcbikge1xuICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHdlJ3ZlIGFscmVhZHkgZGVjaWRlZCB0byByZXBsYWNlIGFuIGV4aXN0aW5nXG4gIC8vIHJldmFsaWRhdGlvbiBlbnRyeS4gQ3JlYXRlIGEgbmV3IGVudHJ5IGFuZCB3cml0ZSBpdCBpbnRvIHRoZSBjYWNoZSxcbiAgLy8gb3ZlcndyaXRpbmcgdGhlIHByZXZpb3VzIHZhbHVlLiBUaGUgc3RhbGUgdGltZSBpcyBzZXQgdG8gYSBkZWZhdWx0IHZhbHVlO1xuICAvLyB0aGUgYWN0dWFsIHN0YWxlIHRpbWUgd2lsbCBiZSBzZXQgd2hlbiB0aGUgZW50cnkgaXMgZnVsZmlsbGVkIHdpdGggZGF0YVxuICAvLyBmcm9tIHRoZSBzZXJ2ZXIgcmVzcG9uc2UuXG4gIGNvbnN0IHZhcnlQYXRoRm9yUmVxdWVzdCA9IGdldFNlZ21lbnRWYXJ5UGF0aEZvclJlcXVlc3QoZmV0Y2hTdHJhdGVneSwgdHJlZSlcbiAgY29uc3QgcGVuZGluZ0VudHJ5ID0gY3JlYXRlRGV0YWNoZWRTZWdtZW50Q2FjaGVFbnRyeShub3cpXG4gIGNvbnN0IGlzUmV2YWxpZGF0aW9uID0gdHJ1ZVxuICBzZXRJbkNhY2hlTWFwKFxuICAgIHNlZ21lbnRDYWNoZU1hcCxcbiAgICB2YXJ5UGF0aEZvclJlcXVlc3QsXG4gICAgcGVuZGluZ0VudHJ5LFxuICAgIGlzUmV2YWxpZGF0aW9uXG4gIClcbiAgcmV0dXJuIHBlbmRpbmdFbnRyeVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBzZXJ0U2VnbWVudEVudHJ5KFxuICBub3c6IG51bWJlcixcbiAgdmFyeVBhdGg6IFNlZ21lbnRWYXJ5UGF0aCxcbiAgY2FuZGlkYXRlRW50cnk6IFNlZ21lbnRDYWNoZUVudHJ5XG4pOiBTZWdtZW50Q2FjaGVFbnRyeSB8IG51bGwge1xuICAvLyBXZSBoYXZlIGEgbmV3IGVudHJ5IHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBpbnNlcnRlZCBpbnRvIHRoZSBjYWNoZS4gQmVmb3JlXG4gIC8vIHdlIGRvIHNvLCB3ZSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBpdCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdGhlIGV4aXN0aW5nXG4gIC8vIGVudHJ5IChpZiBvbmUgZXhpc3RzKS5cbiAgLy8gVE9ETzogV2Ugc2hvdWxkIG5vdCB1cHNlcnQgYW4gZW50cnkgaWYgaXRzIGtleSB3YXMgaW52YWxpZGF0ZWQgaW4gdGhlIHRpbWVcbiAgLy8gc2luY2UgdGhlIHJlcXVlc3Qgd2FzIG1hZGUuIFdlIGNhbiBkbyB0aGF0IGJ5IHBhc3NpbmcgdGhlIFwib3duZXJcIiBlbnRyeSB0b1xuICAvLyB0aGlzIGZ1bmN0aW9uIGFuZCBjb25maXJtaW5nIGl0J3MgdGhlIHNhbWUgYXMgYGV4aXN0aW5nRW50cnlgLlxuXG4gIGlmIChpc1ZhbHVlRXhwaXJlZChub3csIGdldEN1cnJlbnRTZWdtZW50Q2FjaGVWZXJzaW9uKCksIGNhbmRpZGF0ZUVudHJ5KSkge1xuICAgIC8vIFRoZSBlbnRyeSBpcyBleHBpcmVkLiBXZSBjYW5ub3QgdXBzZXJ0IGl0LlxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBjb25zdCBleGlzdGluZ0VudHJ5ID0gcmVhZFNlZ21lbnRDYWNoZUVudHJ5KG5vdywgdmFyeVBhdGgpXG4gIGlmIChleGlzdGluZ0VudHJ5ICE9PSBudWxsKSB7XG4gICAgLy8gRG9uJ3QgcmVwbGFjZSBhIG1vcmUgc3BlY2lmaWMgc2VnbWVudCB3aXRoIGEgbGVzcy1zcGVjaWZpYyBvbmUuIEEgY2FzZSB3aGVyZSB0aGlzXG4gICAgLy8gbWlnaHQgaGFwcGVuIGlzIGlmIHRoZSBleGlzdGluZyBzZWdtZW50IHdhcyBmZXRjaGVkIHZpYVxuICAgIC8vIGA8TGluayBwcmVmZXRjaD17dHJ1ZX0+YC5cbiAgICBpZiAoXG4gICAgICAvLyBXZSBmZXRjaGVkIHRoZSBuZXcgc2VnbWVudCB1c2luZyBhIGRpZmZlcmVudCwgbGVzcyBzcGVjaWZpYyBmZXRjaCBzdHJhdGVneVxuICAgICAgLy8gdGhhbiB0aGUgc2VnbWVudCB3ZSBhbHJlYWR5IGhhdmUgaW4gdGhlIGNhY2hlLCBzbyBpdCBjYW4ndCBoYXZlIG1vcmUgY29udGVudC5cbiAgICAgIChjYW5kaWRhdGVFbnRyeS5mZXRjaFN0cmF0ZWd5ICE9PSBleGlzdGluZ0VudHJ5LmZldGNoU3RyYXRlZ3kgJiZcbiAgICAgICAgIWNhbk5ld0ZldGNoU3RyYXRlZ3lQcm92aWRlTW9yZUNvbnRlbnQoXG4gICAgICAgICAgZXhpc3RpbmdFbnRyeS5mZXRjaFN0cmF0ZWd5LFxuICAgICAgICAgIGNhbmRpZGF0ZUVudHJ5LmZldGNoU3RyYXRlZ3lcbiAgICAgICAgKSkgfHxcbiAgICAgIC8vIFRoZSBleGlzdGluZyBlbnRyeSBpc24ndCBwYXJ0aWFsLCBidXQgdGhlIG5ldyBvbmUgaXMuXG4gICAgICAvLyAoVE9ETzogY2FuIHRoaXMgYmUgdHJ1ZSBpZiBgY2FuZGlkYXRlRW50cnkuZmV0Y2hTdHJhdGVneSA+PSBleGlzdGluZ0VudHJ5LmZldGNoU3RyYXRlZ3lgPylcbiAgICAgICghZXhpc3RpbmdFbnRyeS5pc1BhcnRpYWwgJiYgY2FuZGlkYXRlRW50cnkuaXNQYXJ0aWFsKVxuICAgICkge1xuICAgICAgLy8gV2UncmUgZ29pbmcgdG8gbGVhdmUgcmV2YWxpZGF0aW5nIGVudHJ5IGluIHRoZSBjYWNoZSBzbyB0aGF0IGl0IGRvZXNuJ3RcbiAgICAgIC8vIGdldCByZXZhbGlkYXRlZCBhZ2FpbiB1bm5lY2Vzc2FyaWx5LiBEb3duZ3JhZGUgdGhlIEZ1bGZpbGxlZCBlbnRyeSB0b1xuICAgICAgLy8gUmVqZWN0ZWQgYW5kIG51bGwgb3V0IHRoZSBkYXRhIHNvIGl0IGNhbiBiZSBnYXJiYWdlIGNvbGxlY3RlZC4gV2UgbGVhdmVcbiAgICAgIC8vIGBzdGFsZUF0YCBpbnRhY3QgdG8gcHJldmVudCBzdWJzZXF1ZW50IHJldmFsaWRhdGlvbiBhdHRlbXB0cyBvbmx5IHVudGlsXG4gICAgICAvLyB0aGUgZW50cnkgZXhwaXJlcy5cbiAgICAgIGNvbnN0IHJlamVjdGVkRW50cnk6IFJlamVjdGVkU2VnbWVudENhY2hlRW50cnkgPSBjYW5kaWRhdGVFbnRyeSBhcyBhbnlcbiAgICAgIHJlamVjdGVkRW50cnkuc3RhdHVzID0gRW50cnlTdGF0dXMuUmVqZWN0ZWRcbiAgICAgIHJlamVjdGVkRW50cnkucnNjID0gbnVsbFxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICAvLyBFdmljdCB0aGUgZXhpc3RpbmcgZW50cnkgZnJvbSB0aGUgY2FjaGUuXG4gICAgZGVsZXRlRnJvbUNhY2hlTWFwKGV4aXN0aW5nRW50cnkpXG4gIH1cblxuICBjb25zdCBpc1JldmFsaWRhdGlvbiA9IGZhbHNlXG4gIHNldEluQ2FjaGVNYXAoc2VnbWVudENhY2hlTWFwLCB2YXJ5UGF0aCwgY2FuZGlkYXRlRW50cnksIGlzUmV2YWxpZGF0aW9uKVxuICByZXR1cm4gY2FuZGlkYXRlRW50cnlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURldGFjaGVkU2VnbWVudENhY2hlRW50cnkoXG4gIG5vdzogbnVtYmVyXG4pOiBFbXB0eVNlZ21lbnRDYWNoZUVudHJ5IHtcbiAgLy8gRGVmYXVsdCBzdGFsZSB0aW1lIGZvciBwZW5kaW5nIHNlZ21lbnQgY2FjaGUgZW50cmllcy4gVGhlIGFjdHVhbCBzdGFsZSB0aW1lXG4gIC8vIGlzIHNldCB3aGVuIHRoZSBlbnRyeSBpcyBmdWxmaWxsZWQgd2l0aCBkYXRhIGZyb20gdGhlIHNlcnZlciByZXNwb25zZS5cbiAgY29uc3Qgc3RhbGVBdCA9IG5vdyArIDMwICogMTAwMFxuICBjb25zdCBlbXB0eUVudHJ5OiBFbXB0eVNlZ21lbnRDYWNoZUVudHJ5ID0ge1xuICAgIHN0YXR1czogRW50cnlTdGF0dXMuRW1wdHksXG4gICAgLy8gRGVmYXVsdCB0byBhc3N1bWluZyB0aGUgZmV0Y2ggc3RyYXRlZ3kgd2lsbCBiZSBQUFIuIFRoaXMgd2lsbCBiZSB1cGRhdGVkXG4gICAgLy8gd2hlbiBhIGZldGNoIGlzIGFjdHVhbGx5IGluaXRpYXRlZC5cbiAgICBmZXRjaFN0cmF0ZWd5OiBGZXRjaFN0cmF0ZWd5LlBQUixcbiAgICByc2M6IG51bGwsXG4gICAgaXNQYXJ0aWFsOiB0cnVlLFxuICAgIHByb21pc2U6IG51bGwsXG5cbiAgICAvLyBNYXAtcmVsYXRlZCBmaWVsZHNcbiAgICByZWY6IG51bGwsXG4gICAgc2l6ZTogMCxcbiAgICBzdGFsZUF0LFxuICAgIHZlcnNpb246IDAsXG4gIH1cbiAgcmV0dXJuIGVtcHR5RW50cnlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZ3JhZGVUb1BlbmRpbmdTZWdtZW50KFxuICBlbXB0eUVudHJ5OiBFbXB0eVNlZ21lbnRDYWNoZUVudHJ5LFxuICBmZXRjaFN0cmF0ZWd5OiBGZXRjaFN0cmF0ZWd5XG4pOiBQZW5kaW5nU2VnbWVudENhY2hlRW50cnkge1xuICBjb25zdCBwZW5kaW5nRW50cnk6IFBlbmRpbmdTZWdtZW50Q2FjaGVFbnRyeSA9IGVtcHR5RW50cnkgYXMgYW55XG4gIHBlbmRpbmdFbnRyeS5zdGF0dXMgPSBFbnRyeVN0YXR1cy5QZW5kaW5nXG4gIHBlbmRpbmdFbnRyeS5mZXRjaFN0cmF0ZWd5ID0gZmV0Y2hTdHJhdGVneVxuXG4gIGlmIChmZXRjaFN0cmF0ZWd5ID09PSBGZXRjaFN0cmF0ZWd5LkZ1bGwpIHtcbiAgICAvLyBXZSBjYW4gYXNzdW1lIHRoZSByZXNwb25zZSB3aWxsIGNvbnRhaW4gdGhlIGZ1bGwgc2VnbWVudCBkYXRhLiBTZXQgdGhpc1xuICAgIC8vIHRvIGZhbHNlIHNvIHdlIGtub3cgaXQncyBPSyB0byBvbWl0IHRoaXMgc2VnbWVudCBmcm9tIGFueSBuYXZpZ2F0aW9uXG4gICAgLy8gcmVxdWVzdHMgdGhhdCBtYXkgaGFwcGVuIHdoaWxlIHRoZSBkYXRhIGlzIHN0aWxsIHBlbmRpbmcuXG4gICAgcGVuZGluZ0VudHJ5LmlzUGFydGlhbCA9IGZhbHNlXG4gIH1cblxuICAvLyBTZXQgdGhlIHZlcnNpb24gaGVyZSwgc2luY2UgdGhpcyBpcyByaWdodCBiZWZvcmUgdGhlIHJlcXVlc3QgaXMgaW5pdGlhdGVkLlxuICAvLyBUaGUgbmV4dCB0aW1lIHRoZSBzZWdtZW50IGNhY2hlIHZlcnNpb24gaXMgaW5jcmVtZW50ZWQsIHRoZSBlbnRyeSB3aWxsXG4gIC8vIGVmZmVjdGl2ZWx5IGJlIGV2aWN0ZWQuIFRoaXMgaGFwcGVucyBiZWZvcmUgaW5pdGlhdGluZyB0aGUgcmVxdWVzdCwgcmF0aGVyXG4gIC8vIHRoYW4gd2hlbiByZWNlaXZpbmcgdGhlIHJlc3BvbnNlLCBiZWNhdXNlIGl0J3MgZ3VhcmFudGVlZCB0byBoYXBwZW5cbiAgLy8gYmVmb3JlIHRoZSBkYXRhIGlzIHJlYWQgb24gdGhlIHNlcnZlci5cbiAgcGVuZGluZ0VudHJ5LnZlcnNpb24gPSBnZXRDdXJyZW50U2VnbWVudENhY2hlVmVyc2lvbigpXG4gIHJldHVybiBwZW5kaW5nRW50cnlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF0dGVtcHRUb0Z1bGZpbGxEeW5hbWljU2VnbWVudEZyb21CRkNhY2hlKFxuICBub3c6IG51bWJlcixcbiAgc2VnbWVudDogRW1wdHlTZWdtZW50Q2FjaGVFbnRyeSxcbiAgdHJlZTogUm91dGVUcmVlXG4pOiBGdWxmaWxsZWRTZWdtZW50Q2FjaGVFbnRyeSB8IG51bGwge1xuICAvLyBBdHRlbXB0cyB0byBmdWxmaWxsIGFuIGVtcHR5IHNlZ21lbnQgY2FjaGUgZW50cnkgdXNpbmcgZGF0YSBmcm9tIHRoZVxuICAvLyBiZmNhY2hlLiBUaGlzIGlzIG9ubHkgdmFsaWQgZHVyaW5nIGEgRnVsbCBwcmVmZXRjaCAoaS5lLiBvbmUgdGhhdCBpbmNsdWRlc1xuICAvLyBkeW5hbWljIGRhdGEpLCBiZWNhdXNlIHRoZSBiZmNhY2hlIHN0b3JlcyBkYXRhIGZyb20gbmF2aWdhdGlvbnMgd2hpY2hcbiAgLy8gYWx3YXlzIGluY2x1ZGUgZHluYW1pYyBkYXRhLlxuXG4gIC8vIFdlIGFsd2F5cyB1c2UgdGhlIGNhbm9uaWNhbCB2YXJ5IHBhdGggd2hlbiBjaGVja2luZyB0aGUgYmZjYWNoZS4gVGhpcyBpc1xuICAvLyB0aGUgc2FtZSBvcGVyYXRpb24gd2UnZCB1c2UgdG8gYWNjZXNzIHRoZSBjYWNoZSBkdXJpbmcgYVxuICAvLyByZWd1bGFyIG5hdmlnYXRpb24uXG4gIGNvbnN0IHZhcnlQYXRoID0gdHJlZS52YXJ5UGF0aFxuXG4gIC8vIFJlYWQgZnJvbSB0aGUgQkZDYWNoZSB3aXRob3V0IGV4cGlyaW5nIGl0IChwYXNzIC0xKS4gV2UgY2hlY2sgZnJlc2huZXNzXG4gIC8vIG91cnNlbHZlcyB1c2luZyBuYXZpZ2F0ZWRBdCwgYmVjYXVzZSB0aGUgQkZDYWNoZSdzIHN0YWxlQXQgbWF5IGhhdmUgYmVlblxuICAvLyBvdmVycmlkZGVuIGJ5IGEgcGVyLXBhZ2UgdW5zdGFibGVfZHluYW1pY1N0YWxlVGltZSBhbmQgY2FuJ3QgYmUgdXNlZCB0b1xuICAvLyBkZXJpdmUgdGhlIG9yaWdpbmFsIHJlcXVlc3QgdGltZS5cbiAgY29uc3QgYmZjYWNoZUVudHJ5ID0gcmVhZEZyb21CRkNhY2hlKHZhcnlQYXRoKVxuICBpZiAoYmZjYWNoZUVudHJ5ICE9PSBudWxsKSB7XG4gICAgLy8gVGhlIHN0YWxlIHRpbWUgZm9yIGR5bmFtaWMgcHJlZmV0Y2hlcyAoZGVmYXVsdDogNSBtaW5zKSBpcyBkaWZmZXJlbnRcbiAgICAvLyBmcm9tIHRoZSBzdGFsZSB0aW1lIGZvciByZWd1bGFyIG5hdmlnYXRpb25zIChkZWZhdWx0OiAwIHNlY3MpLiBVc2VcbiAgICAvLyBuYXZpZ2F0ZWRBdCB0byBjb21wdXRlIHRoZSBjb3JyZWN0IGV4cGlyeSBmb3IgcHJlZmV0Y2ggcHVycG9zZXMuXG4gICAgY29uc3QgZHluYW1pY1ByZWZldGNoU3RhbGVBdCA9XG4gICAgICBiZmNhY2hlRW50cnkubmF2aWdhdGVkQXQgKyBTVEFUSUNfU1RBTEVUSU1FX01TXG4gICAgaWYgKG5vdyA+IGR5bmFtaWNQcmVmZXRjaFN0YWxlQXQpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgcGVuZGluZ1NlZ21lbnQgPSB1cGdyYWRlVG9QZW5kaW5nU2VnbWVudChzZWdtZW50LCBGZXRjaFN0cmF0ZWd5LkZ1bGwpXG4gICAgY29uc3QgaXNQYXJ0aWFsID0gZmFsc2VcbiAgICByZXR1cm4gZnVsZmlsbFNlZ21lbnRDYWNoZUVudHJ5KFxuICAgICAgcGVuZGluZ1NlZ21lbnQsXG4gICAgICBiZmNhY2hlRW50cnkucnNjLFxuICAgICAgZHluYW1pY1ByZWZldGNoU3RhbGVBdCxcbiAgICAgIGlzUGFydGlhbFxuICAgIClcbiAgfVxuICByZXR1cm4gbnVsbFxufVxuXG4vKipcbiAqIEF0dGVtcHRzIHRvIHJlcGxhY2UgYW4gZXhpc3Rpbmcgc2VnbWVudCBjYWNoZSBlbnRyeSB3aXRoIGRhdGEgZnJvbSB0aGVcbiAqIGJmY2FjaGUuIFVubGlrZSBgYXR0ZW1wdFRvRnVsZmlsbER5bmFtaWNTZWdtZW50RnJvbUJGQ2FjaGVgICh3aGljaCBmaWxscyBhblxuICogZW1wdHkgZW50cnkpLCB0aGlzIGNyZWF0ZXMgYSBuZXcgZW50cnkgYW5kIHVwc2VydHMgaXQsIHNvIGl0IHdvcmtzIGV2ZW4gd2hlblxuICogdGhlIHNlZ21lbnQgaXMgYWxyZWFkeSBmdWxmaWxsZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhdHRlbXB0VG9VcGdyYWRlU2VnbWVudEZyb21CRkNhY2hlKFxuICBub3c6IG51bWJlcixcbiAgdHJlZTogUm91dGVUcmVlXG4pOiBGdWxmaWxsZWRTZWdtZW50Q2FjaGVFbnRyeSB8IG51bGwge1xuICBjb25zdCB2YXJ5UGF0aCA9IHRyZWUudmFyeVBhdGhcbiAgY29uc3QgYmZjYWNoZUVudHJ5ID0gcmVhZEZyb21CRkNhY2hlKHZhcnlQYXRoKVxuICBpZiAoYmZjYWNoZUVudHJ5ICE9PSBudWxsKSB7XG4gICAgY29uc3QgZHluYW1pY1ByZWZldGNoU3RhbGVBdCA9XG4gICAgICBiZmNhY2hlRW50cnkubmF2aWdhdGVkQXQgKyBTVEFUSUNfU1RBTEVUSU1FX01TXG4gICAgaWYgKG5vdyA+IGR5bmFtaWNQcmVmZXRjaFN0YWxlQXQpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGNvbnN0IHBlbmRpbmdTZWdtZW50ID0gdXBncmFkZVRvUGVuZGluZ1NlZ21lbnQoXG4gICAgICBjcmVhdGVEZXRhY2hlZFNlZ21lbnRDYWNoZUVudHJ5KG5vdyksXG4gICAgICBGZXRjaFN0cmF0ZWd5LkZ1bGxcbiAgICApXG4gICAgY29uc3QgaXNQYXJ0aWFsID0gZmFsc2VcbiAgICBjb25zdCBuZXdFbnRyeSA9IGZ1bGZpbGxTZWdtZW50Q2FjaGVFbnRyeShcbiAgICAgIHBlbmRpbmdTZWdtZW50LFxuICAgICAgYmZjYWNoZUVudHJ5LnJzYyxcbiAgICAgIGR5bmFtaWNQcmVmZXRjaFN0YWxlQXQsXG4gICAgICBpc1BhcnRpYWxcbiAgICApXG4gICAgY29uc3Qgc2VnbWVudFZhcnlQYXRoID0gZ2V0U2VnbWVudFZhcnlQYXRoRm9yUmVxdWVzdChcbiAgICAgIEZldGNoU3RyYXRlZ3kuRnVsbCxcbiAgICAgIHRyZWVcbiAgICApXG4gICAgY29uc3QgdXBzZXJ0ZWQgPSB1cHNlcnRTZWdtZW50RW50cnkobm93LCBzZWdtZW50VmFyeVBhdGgsIG5ld0VudHJ5KVxuICAgIGlmICh1cHNlcnRlZCAhPT0gbnVsbCAmJiB1cHNlcnRlZC5zdGF0dXMgPT09IEVudHJ5U3RhdHVzLkZ1bGZpbGxlZCkge1xuICAgICAgcmV0dXJuIHVwc2VydGVkXG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsXG59XG5cbmZ1bmN0aW9uIHBpbmdCbG9ja2VkVGFza3MoZW50cnk6IHtcbiAgYmxvY2tlZFRhc2tzOiBTZXQ8UHJlZmV0Y2hUYXNrPiB8IG51bGxcbn0pOiB2b2lkIHtcbiAgY29uc3QgYmxvY2tlZFRhc2tzID0gZW50cnkuYmxvY2tlZFRhc2tzXG4gIGlmIChibG9ja2VkVGFza3MgIT09IG51bGwpIHtcbiAgICBmb3IgKGNvbnN0IHRhc2sgb2YgYmxvY2tlZFRhc2tzKSB7XG4gICAgICBwaW5nUHJlZmV0Y2hUYXNrKHRhc2spXG4gICAgfVxuICAgIGVudHJ5LmJsb2NrZWRUYXNrcyA9IG51bGxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTWV0YWRhdGFSb3V0ZVRyZWUoXG4gIG1ldGFkYXRhVmFyeVBhdGg6IFBhZ2VWYXJ5UGF0aFxuKTogUm91dGVUcmVlIHtcbiAgLy8gVGhlIEhlYWQgaXMgbm90IGFjdHVhbGx5IHBhcnQgb2YgdGhlIHJvdXRlIHRyZWUsIGJ1dCBvdGhlciB0aGFuIHRoYXQsIGl0J3NcbiAgLy8gZmV0Y2hlZCBhbmQgY2FjaGVkIGxpa2UgYSBzZWdtZW50LiBTb21lIGZ1bmN0aW9ucyBleHBlY3QgYSBSb3V0ZVRyZWVcbiAgLy8gb2JqZWN0LCBzbyByYXRoZXIgdGhhbiBmb3JrIHRoZSBsb2dpYyBpbiBhbGwgdGhvc2UgcGxhY2VzLCB3ZSB1c2UgdGhpc1xuICAvLyBcImZha2VcIiBvbmUuXG4gIGNvbnN0IG1ldGFkYXRhOiBSb3V0ZVRyZWUgPSB7XG4gICAgcmVxdWVzdEtleTogSEVBRF9SRVFVRVNUX0tFWSxcbiAgICBzZWdtZW50OiBIRUFEX1JFUVVFU1RfS0VZLFxuICAgIHJlZnJlc2hTdGF0ZTogbnVsbCxcbiAgICB2YXJ5UGF0aDogbWV0YWRhdGFWYXJ5UGF0aCxcbiAgICAvLyBUaGUgbWV0YWRhdGEgaXNuJ3QgcmVhbGx5IGEgXCJwYWdlXCIgKHRob3VnaCBpdCBpc24ndCByZWFsbHkgYSBcInNlZ21lbnRcIlxuICAgIC8vIGVpdGhlcikgYnV0IGZvciB0aGUgcHVycG9zZXMgb2YgaG93IHRoaXMgZmllbGQgaXMgdXNlZCwgaXQgYmVoYXZlcyBsaWtlXG4gICAgLy8gb25lLiBJZiB0aGlzIGxvZ2ljIGV2ZXIgZ2V0cyBtb3JlIGNvbXBsZXggd2UgY2FuIGNoYW5nZSB0aGlzIHRvIGFuIGVudW0uXG4gICAgaXNQYWdlOiB0cnVlLFxuICAgIHNsb3RzOiBudWxsLFxuICAgIHByZWZldGNoSGludHM6IDAsXG4gIH1cbiAgcmV0dXJuIG1ldGFkYXRhXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmdWxmaWxsUm91dGVDYWNoZUVudHJ5KFxuICBub3c6IG51bWJlcixcbiAgZW50cnk6IFBlbmRpbmdSb3V0ZUNhY2hlRW50cnksXG4gIHRyZWU6IFJvdXRlVHJlZSxcbiAgbWV0YWRhdGFWYXJ5UGF0aDogUGFnZVZhcnlQYXRoLFxuICBjb3VsZEJlSW50ZXJjZXB0ZWQ6IGJvb2xlYW4sXG4gIGNhbm9uaWNhbFVybDogc3RyaW5nLFxuICBzdXBwb3J0c1BlclNlZ21lbnRQcmVmZXRjaGluZzogYm9vbGVhblxuKTogRnVsZmlsbGVkUm91dGVDYWNoZUVudHJ5IHtcbiAgLy8gR2V0IHRoZSByZW5kZXJlZCBzZWFyY2ggZnJvbSB0aGUgdmFyeSBwYXRoXG4gIGNvbnN0IHJlbmRlcmVkU2VhcmNoID1cbiAgICBnZXRSZW5kZXJlZFNlYXJjaEZyb21WYXJ5UGF0aChtZXRhZGF0YVZhcnlQYXRoKSA/PyAoJycgYXMgTm9ybWFsaXplZFNlYXJjaClcbiAgY29uc3QgZnVsZmlsbGVkRW50cnk6IEZ1bGZpbGxlZFJvdXRlQ2FjaGVFbnRyeSA9IGVudHJ5IGFzIGFueVxuICBmdWxmaWxsZWRFbnRyeS5zdGF0dXMgPSBFbnRyeVN0YXR1cy5GdWxmaWxsZWRcbiAgZnVsZmlsbGVkRW50cnkudHJlZSA9IHRyZWVcbiAgZnVsZmlsbGVkRW50cnkubWV0YWRhdGEgPSBjcmVhdGVNZXRhZGF0YVJvdXRlVHJlZShtZXRhZGF0YVZhcnlQYXRoKVxuICAvLyBSb3V0ZSBzdHJ1Y3R1cmUgaXMgZXNzZW50aWFsbHkgc3RhdGljIOKAlCBpdCBvbmx5IGNoYW5nZXMgb24gZGVwbG95LlxuICAvLyBBbHdheXMgdXNlIHRoZSBzdGF0aWMgc3RhbGUgdGltZS5cbiAgLy8gTk9URTogQW4gZXhjZXB0aW9uIGlzIHJld3JpdGVzL3JlZGlyZWN0cyBpbiBtaWRkbGV3YXJlIG9yIHByb3h5LCB3aGljaCBjYW5cbiAgLy8gY2hhbmdlIHJvdXRlcyBkeW5hbWljYWxseS4gV2UgaGF2ZSBvdGhlciBzdHJhdGVnaWVzIGZvciBoYW5kbGluZyB0aG9zZS5cbiAgZnVsZmlsbGVkRW50cnkuc3RhbGVBdCA9IG5vdyArIFNUQVRJQ19TVEFMRVRJTUVfTVNcbiAgZnVsZmlsbGVkRW50cnkuY291bGRCZUludGVyY2VwdGVkID0gY291bGRCZUludGVyY2VwdGVkXG4gIGZ1bGZpbGxlZEVudHJ5LmNhbm9uaWNhbFVybCA9IGNhbm9uaWNhbFVybFxuICBmdWxmaWxsZWRFbnRyeS5yZW5kZXJlZFNlYXJjaCA9IHJlbmRlcmVkU2VhcmNoXG4gIGZ1bGZpbGxlZEVudHJ5LnN1cHBvcnRzUGVyU2VnbWVudFByZWZldGNoaW5nID0gc3VwcG9ydHNQZXJTZWdtZW50UHJlZmV0Y2hpbmdcbiAgZnVsZmlsbGVkRW50cnkuaGFzRHluYW1pY1Jld3JpdGUgPSBmYWxzZVxuICBwaW5nQmxvY2tlZFRhc2tzKGVudHJ5KVxuICByZXR1cm4gZnVsZmlsbGVkRW50cnlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlUm91dGVJbnRvQ2FjaGUoXG4gIG5vdzogbnVtYmVyLFxuICBwYXRobmFtZTogTm9ybWFsaXplZFBhdGhuYW1lLFxuICBuZXh0VXJsOiBzdHJpbmcgfCBudWxsLFxuICB0cmVlOiBSb3V0ZVRyZWUsXG4gIG1ldGFkYXRhVmFyeVBhdGg6IFBhZ2VWYXJ5UGF0aCxcbiAgY291bGRCZUludGVyY2VwdGVkOiBib29sZWFuLFxuICBjYW5vbmljYWxVcmw6IHN0cmluZyxcbiAgc3VwcG9ydHNQZXJTZWdtZW50UHJlZmV0Y2hpbmc6IGJvb2xlYW5cbik6IEZ1bGZpbGxlZFJvdXRlQ2FjaGVFbnRyeSB7XG4gIGNvbnN0IHBlbmRpbmdFbnRyeSA9IGNyZWF0ZURldGFjaGVkUm91dGVDYWNoZUVudHJ5KClcbiAgY29uc3QgZnVsZmlsbGVkRW50cnkgPSBmdWxmaWxsUm91dGVDYWNoZUVudHJ5KFxuICAgIG5vdyxcbiAgICBwZW5kaW5nRW50cnksXG4gICAgdHJlZSxcbiAgICBtZXRhZGF0YVZhcnlQYXRoLFxuICAgIGNvdWxkQmVJbnRlcmNlcHRlZCxcbiAgICBjYW5vbmljYWxVcmwsXG4gICAgc3VwcG9ydHNQZXJTZWdtZW50UHJlZmV0Y2hpbmdcbiAgKVxuICBjb25zdCByZW5kZXJlZFNlYXJjaCA9IGZ1bGZpbGxlZEVudHJ5LnJlbmRlcmVkU2VhcmNoXG4gIGNvbnN0IHZhcnlQYXRoID0gZ2V0RnVsZmlsbGVkUm91dGVWYXJ5UGF0aChcbiAgICBwYXRobmFtZSxcbiAgICByZW5kZXJlZFNlYXJjaCxcbiAgICBuZXh0VXJsIGFzIE5vcm1hbGl6ZWROZXh0VXJsIHwgbnVsbCxcbiAgICBjb3VsZEJlSW50ZXJjZXB0ZWRcbiAgKVxuICBjb25zdCBpc1JldmFsaWRhdGlvbiA9IGZhbHNlXG4gIHNldEluQ2FjaGVNYXAocm91dGVDYWNoZU1hcCwgdmFyeVBhdGgsIGZ1bGZpbGxlZEVudHJ5LCBpc1JldmFsaWRhdGlvbilcbiAgcmV0dXJuIGZ1bGZpbGxlZEVudHJ5XG59XG5cbi8qKlxuICogTWFya3MgYSByb3V0ZSBjYWNoZSBlbnRyeSBhcyBoYXZpbmcgYSBkeW5hbWljIHJld3JpdGUuIENhbGxlZCB3aGVuIHdlXG4gKiBkaXNjb3ZlciB0aGF0IGEgcm91dGUgcGF0dGVybiBoYXMgZHluYW1pYyByZXdyaXRlIGJlaGF2aW9yIC0gaS5lLiwgd2UgdXNlZFxuICogYW4gb3B0aW1pc3RpYyByb3V0ZSB0cmVlIGZvciBwcmVkaWN0aW9uLCBidXQgdGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBhXG4gKiBkaWZmZXJlbnQgcmVuZGVyZWQgcGF0aG5hbWUuXG4gKlxuICogT25jZSBtYXJrZWQsIGF0dGVtcHRzIHRvIHVzZSB0aGlzIGVudHJ5IGFzIGEgdGVtcGxhdGUgZm9yIHByZWRpY3Rpb24gd2lsbFxuICogYmFpbCBvdXQgdG8gc2VydmVyIHJlc29sdXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXJrUm91dGVFbnRyeUFzRHluYW1pY1Jld3JpdGUoXG4gIGVudHJ5OiBGdWxmaWxsZWRSb3V0ZUNhY2hlRW50cnlcbik6IHZvaWQge1xuICBlbnRyeS5oYXNEeW5hbWljUmV3cml0ZSA9IHRydWVcbiAgLy8gTm90ZTogVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgYWxzbyBjYWxsaW5nIGludmFsaWRhdGVSb3V0ZUNhY2hlRW50cmllc1xuICAvLyB0byBpbnZhbGlkYXRlIG90aGVyIGVudHJpZXMgdGhhdCBtYXkgaGF2ZSBiZWVuIGRlcml2ZWQgZnJvbSB0aGlzIHRlbXBsYXRlXG4gIC8vIGJlZm9yZSB3ZSBrbmV3IGl0IGhhZCBhIGR5bmFtaWMgcmV3cml0ZS5cbn1cblxuZnVuY3Rpb24gZnVsZmlsbFNlZ21lbnRDYWNoZUVudHJ5KFxuICBzZWdtZW50Q2FjaGVFbnRyeTogUGVuZGluZ1NlZ21lbnRDYWNoZUVudHJ5LFxuICByc2M6IFJlYWN0LlJlYWN0Tm9kZSxcbiAgc3RhbGVBdDogbnVtYmVyLFxuICBpc1BhcnRpYWw6IGJvb2xlYW5cbik6IEZ1bGZpbGxlZFNlZ21lbnRDYWNoZUVudHJ5IHtcbiAgY29uc3QgZnVsZmlsbGVkRW50cnk6IEZ1bGZpbGxlZFNlZ21lbnRDYWNoZUVudHJ5ID0gc2VnbWVudENhY2hlRW50cnkgYXMgYW55XG4gIGZ1bGZpbGxlZEVudHJ5LnN0YXR1cyA9IEVudHJ5U3RhdHVzLkZ1bGZpbGxlZFxuICBmdWxmaWxsZWRFbnRyeS5yc2MgPSByc2NcbiAgZnVsZmlsbGVkRW50cnkuc3RhbGVBdCA9IHN0YWxlQXRcbiAgZnVsZmlsbGVkRW50cnkuaXNQYXJ0aWFsID0gaXNQYXJ0aWFsXG4gIC8vIFJlc29sdmUgYW55IGxpc3RlbmVycyB0aGF0IHdlcmUgd2FpdGluZyBmb3IgdGhpcyBkYXRhLlxuICBpZiAoc2VnbWVudENhY2hlRW50cnkucHJvbWlzZSAhPT0gbnVsbCkge1xuICAgIHNlZ21lbnRDYWNoZUVudHJ5LnByb21pc2UucmVzb2x2ZShmdWxmaWxsZWRFbnRyeSlcbiAgICAvLyBGcmVlIHRoZSBwcm9taXNlIGZvciBnYXJiYWdlIGNvbGxlY3Rpb24uXG4gICAgZnVsZmlsbGVkRW50cnkucHJvbWlzZSA9IG51bGxcbiAgfVxuICByZXR1cm4gZnVsZmlsbGVkRW50cnlcbn1cblxuZnVuY3Rpb24gcmVqZWN0Um91dGVDYWNoZUVudHJ5KFxuICBlbnRyeTogUGVuZGluZ1JvdXRlQ2FjaGVFbnRyeSxcbiAgc3RhbGVBdDogbnVtYmVyXG4pOiB2b2lkIHtcbiAgY29uc3QgcmVqZWN0ZWRFbnRyeTogUmVqZWN0ZWRSb3V0ZUNhY2hlRW50cnkgPSBlbnRyeSBhcyBhbnlcbiAgcmVqZWN0ZWRFbnRyeS5zdGF0dXMgPSBFbnRyeVN0YXR1cy5SZWplY3RlZFxuICByZWplY3RlZEVudHJ5LnN0YWxlQXQgPSBzdGFsZUF0XG4gIHBpbmdCbG9ja2VkVGFza3MoZW50cnkpXG59XG5cbmZ1bmN0aW9uIHJlamVjdFNlZ21lbnRDYWNoZUVudHJ5KFxuICBlbnRyeTogUGVuZGluZ1NlZ21lbnRDYWNoZUVudHJ5LFxuICBzdGFsZUF0OiBudW1iZXJcbik6IHZvaWQge1xuICBjb25zdCByZWplY3RlZEVudHJ5OiBSZWplY3RlZFNlZ21lbnRDYWNoZUVudHJ5ID0gZW50cnkgYXMgYW55XG4gIHJlamVjdGVkRW50cnkuc3RhdHVzID0gRW50cnlTdGF0dXMuUmVqZWN0ZWRcbiAgcmVqZWN0ZWRFbnRyeS5zdGFsZUF0ID0gc3RhbGVBdFxuICBpZiAoZW50cnkucHJvbWlzZSAhPT0gbnVsbCkge1xuICAgIC8vIE5PVEU6IFdlIGRvbid0IGN1cnJlbnRseSBwcm9wYWdhdGUgdGhlIHJlYXNvbiB0aGUgcHJlZmV0Y2ggd2FzIGNhbmNlbGVkXG4gICAgLy8gYnV0IHdlIGNvdWxkIGJ5IGFjY2VwdGluZyBhIGByZWFzb25gIGFyZ3VtZW50LlxuICAgIGVudHJ5LnByb21pc2UucmVzb2x2ZShudWxsKVxuICAgIGVudHJ5LnByb21pc2UgPSBudWxsXG4gIH1cbn1cblxudHlwZSBSb3V0ZVRyZWVBY2N1bXVsYXRvciA9IHtcbiAgbWV0YWRhdGFWYXJ5UGF0aDogUGFnZVZhcnlQYXRoIHwgbnVsbFxufVxuXG5mdW5jdGlvbiBjb252ZXJ0Um9vdFRyZWVQcmVmZXRjaFRvUm91dGVUcmVlKFxuICByb290VHJlZTogUm9vdFRyZWVQcmVmZXRjaCxcbiAgcmVuZGVyZWRQYXRobmFtZTogc3RyaW5nLFxuICByZW5kZXJlZFNlYXJjaDogTm9ybWFsaXplZFNlYXJjaCxcbiAgYWNjOiBSb3V0ZVRyZWVBY2N1bXVsYXRvclxuKSB7XG4gIC8vIFJlbW92ZSB0cmFpbGluZyBhbmQgbGVhZGluZyBzbGFzaGVzXG4gIGNvbnN0IHBhdGhuYW1lUGFydHMgPSByZW5kZXJlZFBhdGhuYW1lLnNwbGl0KCcvJykuZmlsdGVyKChwKSA9PiBwICE9PSAnJylcbiAgY29uc3QgaW5kZXggPSAwXG4gIGNvbnN0IHJvb3RTZWdtZW50ID0gUk9PVF9TRUdNRU5UX1JFUVVFU1RfS0VZXG4gIHJldHVybiBjb252ZXJ0VHJlZVByZWZldGNoVG9Sb3V0ZVRyZWUoXG4gICAgcm9vdFRyZWUudHJlZSxcbiAgICByb290U2VnbWVudCxcbiAgICBudWxsLFxuICAgIFJPT1RfU0VHTUVOVF9SRVFVRVNUX0tFWSxcbiAgICBwYXRobmFtZVBhcnRzLFxuICAgIGluZGV4LFxuICAgIHJlbmRlcmVkU2VhcmNoLFxuICAgIGFjY1xuICApXG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUcmVlUHJlZmV0Y2hUb1JvdXRlVHJlZShcbiAgcHJlZmV0Y2g6IFRyZWVQcmVmZXRjaCxcbiAgc2VnbWVudDogRmxpZ2h0Um91dGVyU3RhdGVTZWdtZW50LFxuICBwYXJ0aWFsVmFyeVBhdGg6IFBhcnRpYWxTZWdtZW50VmFyeVBhdGggfCBudWxsLFxuICByZXF1ZXN0S2V5OiBTZWdtZW50UmVxdWVzdEtleSxcbiAgcGF0aG5hbWVQYXJ0czogQXJyYXk8c3RyaW5nPixcbiAgcGF0aG5hbWVQYXJ0c0luZGV4OiBudW1iZXIsXG4gIHJlbmRlcmVkU2VhcmNoOiBOb3JtYWxpemVkU2VhcmNoLFxuICBhY2M6IFJvdXRlVHJlZUFjY3VtdWxhdG9yXG4pOiBSb3V0ZVRyZWUge1xuICAvLyBDb252ZXJ0cyB0aGUgcm91dGUgdHJlZSBzZW50IGJ5IHRoZSBzZXJ2ZXIgaW50byB0aGUgZm9ybWF0IHVzZWQgYnkgdGhlXG4gIC8vIGNhY2hlLiBUaGUgY2FjaGVkIHZlcnNpb24gb2YgdGhlIHRyZWUgaW5jbHVkZXMgYWRkaXRpb25hbCBmaWVsZHMsIHN1Y2ggYXMgYVxuICAvLyBjYWNoZSBrZXkgZm9yIGVhY2ggc2VnbWVudC4gU2luY2UgdGhpcyBpcyBmcmVxdWVudGx5IGFjY2Vzc2VkLCB3ZSBjb21wdXRlXG4gIC8vIGl0IG9uY2UgaW5zdGVhZCBvZiBvbiBldmVyeSBhY2Nlc3MuIFRoaXMgc2FtZSBjYWNoZSBrZXkgaXMgYWxzbyB1c2VkIHRvXG4gIC8vIHJlcXVlc3QgdGhlIHNlZ21lbnQgZnJvbSB0aGUgc2VydmVyLlxuXG4gIGxldCBzbG90czogeyBbcGFyYWxsZWxSb3V0ZUtleTogc3RyaW5nXTogUm91dGVUcmVlIH0gfCBudWxsID0gbnVsbFxuICBsZXQgaXNQYWdlOiBib29sZWFuXG4gIGxldCB2YXJ5UGF0aDogU2VnbWVudFZhcnlQYXRoXG4gIGNvbnN0IHByZWZldGNoU2xvdHMgPSBwcmVmZXRjaC5zbG90c1xuICBpZiAocHJlZmV0Y2hTbG90cyAhPT0gbnVsbCkge1xuICAgIGlzUGFnZSA9IGZhbHNlXG4gICAgdmFyeVBhdGggPSBmaW5hbGl6ZUxheW91dFZhcnlQYXRoKHJlcXVlc3RLZXksIHBhcnRpYWxWYXJ5UGF0aClcblxuICAgIHNsb3RzID0ge31cbiAgICBmb3IgKGxldCBwYXJhbGxlbFJvdXRlS2V5IGluIHByZWZldGNoU2xvdHMpIHtcbiAgICAgIGNvbnN0IGNoaWxkUHJlZmV0Y2ggPSBwcmVmZXRjaFNsb3RzW3BhcmFsbGVsUm91dGVLZXldXG4gICAgICBjb25zdCBjaGlsZFNlZ21lbnROYW1lID0gY2hpbGRQcmVmZXRjaC5uYW1lXG4gICAgICBjb25zdCBjaGlsZFBhcmFtID0gY2hpbGRQcmVmZXRjaC5wYXJhbVxuXG4gICAgICBsZXQgY2hpbGREb2VzQXBwZWFySW5VUkw6IGJvb2xlYW5cbiAgICAgIGxldCBjaGlsZFNlZ21lbnQ6IEZsaWdodFJvdXRlclN0YXRlU2VnbWVudFxuICAgICAgbGV0IGNoaWxkUGFydGlhbFZhcnlQYXRoOiBQYXJ0aWFsU2VnbWVudFZhcnlQYXRoIHwgbnVsbFxuICAgICAgaWYgKGNoaWxkUGFyYW0gIT09IG51bGwpIHtcbiAgICAgICAgLy8gVGhpcyBzZWdtZW50IGlzIHBhcmFtZXRlcml6ZWQuIEdldCB0aGUgcGFyYW0gZnJvbSB0aGUgcGF0aG5hbWUuXG4gICAgICAgIGNvbnN0IGNoaWxkUGFyYW1WYWx1ZSA9IHBhcnNlRHluYW1pY1BhcmFtRnJvbVVSTFBhcnQoXG4gICAgICAgICAgY2hpbGRQYXJhbS50eXBlLFxuICAgICAgICAgIHBhdGhuYW1lUGFydHMsXG4gICAgICAgICAgcGF0aG5hbWVQYXJ0c0luZGV4XG4gICAgICAgIClcblxuICAgICAgICAvLyBBc3NpZ24gYSBjYWNoZSBrZXkgdG8gdGhlIHNlZ21lbnQsIGJhc2VkIG9uIHRoZSBwYXJhbSB2YWx1ZS4gSW4gdGhlXG4gICAgICAgIC8vIHByZS1TZWdtZW50IENhY2hlIGltcGxlbWVudGF0aW9uLCB0aGUgc2VydmVyIGNvbXB1dGVzIHRoaXMgYW5kIHNlbmRzXG4gICAgICAgIC8vIGl0IGluIHRoZSBib2R5IG9mIHRoZSByZXNwb25zZS4gSW4gdGhlIFNlZ21lbnQgQ2FjaGUgaW1wbGVtZW50YXRpb24sXG4gICAgICAgIC8vIHRoZSBzZXJ2ZXIgc2VuZHMgYW4gZW1wdHkgc3RyaW5nIGFuZCB3ZSBmaWxsIGl0IGluIGhlcmUuXG5cbiAgICAgICAgLy8gVE9ETzogV2UncmUgaW50ZW50aW9uYWxseSBub3QgYWRkaW5nIHRoZSBzZWFyY2ggcGFyYW0gdG8gcGFnZVxuICAgICAgICAvLyBzZWdtZW50cyBoZXJlOyBpdCdzIHRyYWNrZWQgc2VwYXJhdGVseSBhbmQgYWRkZWQgYmFjayBkdXJpbmcgYSByZWFkLlxuICAgICAgICAvLyBUaGlzIHdvdWxkIGNsZWFyZXIgaWYgd2Ugd2FpdGVkIHRvIGNvbnN0cnVjdCB0aGUgc2VnbWVudCB1bnRpbCBpdCdzXG4gICAgICAgIC8vIHJlYWQgZnJvbSB0aGUgY2FjaGUsIHNpbmNlIHRoYXQncyBlZmZlY3RpdmVseSB3aGF0IHdlJ3JlXG4gICAgICAgIC8vIGRvaW5nIGFueXdheS5cbiAgICAgICAgY29uc3QgY2hpbGRQYXJhbUtleSA9XG4gICAgICAgICAgLy8gVGhlIHNlcnZlciBvbWl0cyB0aGlzIGZpZWxkIGZyb20gdGhlIHByZWZldGNoIHJlc3BvbnNlIHdoZW5cbiAgICAgICAgICAvLyBjYWNoZUNvbXBvbmVudHMgaXMgZW5hYmxlZC5cbiAgICAgICAgICBjaGlsZFBhcmFtLmtleSAhPT0gbnVsbFxuICAgICAgICAgICAgPyBjaGlsZFBhcmFtLmtleVxuICAgICAgICAgICAgOiAvLyBJZiBubyBwYXJhbSBrZXkgd2FzIHNlbnQsIHVzZSB0aGUgdmFsdWUgcGFyc2VkIG9uIHRoZSBjbGllbnQuXG4gICAgICAgICAgICAgIGdldENhY2hlS2V5Rm9yRHluYW1pY1BhcmFtKFxuICAgICAgICAgICAgICAgIGNoaWxkUGFyYW1WYWx1ZSxcbiAgICAgICAgICAgICAgICAnJyBhcyBOb3JtYWxpemVkU2VhcmNoXG4gICAgICAgICAgICAgIClcblxuICAgICAgICBjaGlsZFBhcnRpYWxWYXJ5UGF0aCA9IGFwcGVuZExheW91dFZhcnlQYXRoKFxuICAgICAgICAgIHBhcnRpYWxWYXJ5UGF0aCxcbiAgICAgICAgICBjaGlsZFBhcmFtS2V5LFxuICAgICAgICAgIGNoaWxkU2VnbWVudE5hbWVcbiAgICAgICAgKVxuICAgICAgICBjaGlsZFNlZ21lbnQgPSBbXG4gICAgICAgICAgY2hpbGRTZWdtZW50TmFtZSxcbiAgICAgICAgICBjaGlsZFBhcmFtS2V5LFxuICAgICAgICAgIGNoaWxkUGFyYW0udHlwZSxcbiAgICAgICAgICBjaGlsZFBhcmFtLnNpYmxpbmdzLFxuICAgICAgICBdXG4gICAgICAgIGNoaWxkRG9lc0FwcGVhckluVVJMID0gdHJ1ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVGhpcyBzZWdtZW50IGRvZXMgbm90IGhhdmUgYSBwYXJhbS4gSW5oZXJpdCB0aGUgcGFydGlhbCB2YXJ5IHBhdGggb2ZcbiAgICAgICAgLy8gdGhlIHBhcmVudC5cbiAgICAgICAgY2hpbGRQYXJ0aWFsVmFyeVBhdGggPSBwYXJ0aWFsVmFyeVBhdGhcbiAgICAgICAgY2hpbGRTZWdtZW50ID0gY2hpbGRTZWdtZW50TmFtZVxuICAgICAgICBjaGlsZERvZXNBcHBlYXJJblVSTCA9IGRvZXNTdGF0aWNTZWdtZW50QXBwZWFySW5VUkwoY2hpbGRTZWdtZW50TmFtZSlcbiAgICAgIH1cblxuICAgICAgLy8gT25seSBpbmNyZW1lbnQgdGhlIGluZGV4IGlmIHRoZSBzZWdtZW50IGFwcGVhcnMgaW4gdGhlIFVSTC4gSWYgaXQncyBhXG4gICAgICAvLyBcInZpcnR1YWxcIiBzZWdtZW50LCBsaWtlIGEgcm91dGUgZ3JvdXAsIGl0IHJlbWFpbnMgdGhlIHNhbWUuXG4gICAgICBjb25zdCBjaGlsZFBhdGhuYW1lUGFydHNJbmRleCA9IGNoaWxkRG9lc0FwcGVhckluVVJMXG4gICAgICAgID8gcGF0aG5hbWVQYXJ0c0luZGV4ICsgMVxuICAgICAgICA6IHBhdGhuYW1lUGFydHNJbmRleFxuXG4gICAgICBjb25zdCBjaGlsZFJlcXVlc3RLZXlQYXJ0ID0gY3JlYXRlU2VnbWVudFJlcXVlc3RLZXlQYXJ0KGNoaWxkU2VnbWVudClcbiAgICAgIGNvbnN0IGNoaWxkUmVxdWVzdEtleSA9IGFwcGVuZFNlZ21lbnRSZXF1ZXN0S2V5UGFydChcbiAgICAgICAgcmVxdWVzdEtleSxcbiAgICAgICAgcGFyYWxsZWxSb3V0ZUtleSxcbiAgICAgICAgY2hpbGRSZXF1ZXN0S2V5UGFydFxuICAgICAgKVxuICAgICAgc2xvdHNbcGFyYWxsZWxSb3V0ZUtleV0gPSBjb252ZXJ0VHJlZVByZWZldGNoVG9Sb3V0ZVRyZWUoXG4gICAgICAgIGNoaWxkUHJlZmV0Y2gsXG4gICAgICAgIGNoaWxkU2VnbWVudCxcbiAgICAgICAgY2hpbGRQYXJ0aWFsVmFyeVBhdGgsXG4gICAgICAgIGNoaWxkUmVxdWVzdEtleSxcbiAgICAgICAgcGF0aG5hbWVQYXJ0cyxcbiAgICAgICAgY2hpbGRQYXRobmFtZVBhcnRzSW5kZXgsXG4gICAgICAgIHJlbmRlcmVkU2VhcmNoLFxuICAgICAgICBhY2NcbiAgICAgIClcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKHJlcXVlc3RLZXkuZW5kc1dpdGgoUEFHRV9TRUdNRU5UX0tFWSkpIHtcbiAgICAgIC8vIFRoaXMgaXMgYSBwYWdlIHNlZ21lbnQuXG4gICAgICBpc1BhZ2UgPSB0cnVlXG4gICAgICB2YXJ5UGF0aCA9IGZpbmFsaXplUGFnZVZhcnlQYXRoKFxuICAgICAgICByZXF1ZXN0S2V5LFxuICAgICAgICByZW5kZXJlZFNlYXJjaCxcbiAgICAgICAgcGFydGlhbFZhcnlQYXRoXG4gICAgICApXG4gICAgICAvLyBUaGUgbWV0YWRhdGEgXCJzZWdtZW50XCIgaXMgbm90IHBhcnQgdGhlIHJvdXRlIHRyZWUsIGJ1dCBpdCBoYXMgdGhlIHNhbWVcbiAgICAgIC8vIGNvbmNlcHR1YWwgcGFyYW1zIGFzIGEgcGFnZSBzZWdtZW50LiBXcml0ZSB0aGUgdmFyeSBwYXRoIGludG8gdGhlXG4gICAgICAvLyBhY2N1bXVsYXRvciBvYmplY3QuIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBwYXJhbGxlbCBwYWdlcywgd2UgdXNlIHRoZVxuICAgICAgLy8gZmlyc3Qgb25lLiBXaGljaCBwYWdlIHdlIGNob29zZSBpcyBhcmJpdHJhcnkgYXMgbG9uZyBhcyBpdCdzXG4gICAgICAvLyBjb25zaXN0ZW50bHkgdGhlIHNhbWUgb25lIGV2ZXJ5IHRpbWUgZXZlcnkgdGltZS4gU2VlXG4gICAgICAvLyBmaW5hbGl6ZU1ldGFkYXRhVmFyeVBhdGggZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIGlmIChhY2MubWV0YWRhdGFWYXJ5UGF0aCA9PT0gbnVsbCkge1xuICAgICAgICBhY2MubWV0YWRhdGFWYXJ5UGF0aCA9IGZpbmFsaXplTWV0YWRhdGFWYXJ5UGF0aChcbiAgICAgICAgICByZXF1ZXN0S2V5LFxuICAgICAgICAgIHJlbmRlcmVkU2VhcmNoLFxuICAgICAgICAgIHBhcnRpYWxWYXJ5UGF0aFxuICAgICAgICApXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoaXMgaXMgYSBsYXlvdXQgc2VnbWVudC5cbiAgICAgIGlzUGFnZSA9IGZhbHNlXG4gICAgICB2YXJ5UGF0aCA9IGZpbmFsaXplTGF5b3V0VmFyeVBhdGgocmVxdWVzdEtleSwgcGFydGlhbFZhcnlQYXRoKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcmVxdWVzdEtleSxcbiAgICBzZWdtZW50LFxuICAgIHJlZnJlc2hTdGF0ZTogbnVsbCxcbiAgICAvLyBUT0RPOiBDaGVhdGluZyB0aGUgdHlwZSBzeXN0ZW0gaGVyZSBhIGJpdCBiZWNhdXNlIFR5cGVTY3JpcHQgY2FuJ3QgdGVsbFxuICAgIC8vIHRoYXQgdGhlIHR5cGUgb2YgaXNQYWdlIGFuZCB2YXJ5UGF0aCBhcmUgY29uc2lzdGVudC4gVGhlIGZpeCB3b3VsZCBiZSB0b1xuICAgIC8vIGNyZWF0ZSBzZXBhcmF0ZSBjb25zdHJ1Y3RvcnMgYW5kIGNhbGwgdGhlIGFwcHJvcHJpYXRlIG9uZSBmcm9tIGVhY2ggb2ZcbiAgICAvLyB0aGUgYnJhbmNoZXMgYWJvdmUuIEp1c3Qgc2VlbXMgYSBiaXQgb3ZlcmtpbGwgb25seSBmb3Igb25lIGZpZWxkIHNvIEknbGxcbiAgICAvLyBsZWF2ZSBpdCBhcy1pcyBmb3Igbm93LiBJZiBpc1BhZ2Ugd2VyZSB3cm9uZyBpdCB3b3VsZCBicmVhayB0aGUgYmVoYXZpb3JcbiAgICAvLyBhbmQgd2UnZCBjYXRjaCBpdCBxdWlja2x5LCBhbnl3YXkuXG4gICAgdmFyeVBhdGg6IHZhcnlQYXRoIGFzIGFueSxcbiAgICBpc1BhZ2U6IGlzUGFnZSBhcyBib29sZWFuIGFzIGFueSxcbiAgICBzbG90cyxcbiAgICBwcmVmZXRjaEhpbnRzOiBwcmVmZXRjaC5wcmVmZXRjaEhpbnRzLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0Um9vdEZsaWdodFJvdXRlclN0YXRlVG9Sb3V0ZVRyZWUoXG4gIGZsaWdodFJvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgcmVuZGVyZWRTZWFyY2g6IE5vcm1hbGl6ZWRTZWFyY2gsXG4gIGFjYzogUm91dGVUcmVlQWNjdW11bGF0b3Jcbik6IFJvdXRlVHJlZSB7XG4gIHJldHVybiBjb252ZXJ0RmxpZ2h0Um91dGVyU3RhdGVUb1JvdXRlVHJlZShcbiAgICBmbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgICBST09UX1NFR01FTlRfUkVRVUVTVF9LRVksXG4gICAgbnVsbCxcbiAgICByZW5kZXJlZFNlYXJjaCxcbiAgICBhY2NcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFJldXNlZEZsaWdodFJvdXRlclN0YXRlVG9Sb3V0ZVRyZWUoXG4gIHBhcmVudFJvdXRlVHJlZTogUm91dGVUcmVlLFxuICBwYXJhbGxlbFJvdXRlS2V5OiBzdHJpbmcsXG4gIGZsaWdodFJvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgcmVuZGVyZWRTZWFyY2g6IE5vcm1hbGl6ZWRTZWFyY2gsXG4gIGFjYzogUm91dGVUcmVlQWNjdW11bGF0b3Jcbikge1xuICAvLyBDcmVhdGUgYSBSb3V0ZVRyZWUgZm9yIGEgRmxpZ2h0Um91dGVyU3RhdGUgdGhhdCB3YXMgcmV1c2VkIGZyb20gYW4gb2xkZXJcbiAgLy8gcm91dGUuIFRoaXMgaGFwcGVucyBkdXJpbmcgYSBuYXZpZ2F0aW9uIHdoZW4gYSBwYXJhbGxlbCByb3V0ZSBzbG90IGRvZXMgbm90XG4gIC8vIG1hdGNoIHRoZSB0YXJnZXQgcm91dGU7IHdlIHJldXNlIHdoYXRldmVyIHNsb3Qgd2FzIGFscmVhZHkgYWN0aXZlLlxuXG4gIC8vIFVubGlrZSBhIEZsaWdodFJvdXRlclN0YXRlLCB0aGUgUm91dGVUcmVlIHR5cGUgY29udGFpbnMgYmFja3JlZmVyZW5jZXMgdG9cbiAgLy8gdGhlIHBhcmVudCBzZWdtZW50cy4gQXBwZW5kIHRoZSB2YXJ5IHBhdGggdG8gdGhlIHBhcmVudCdzIHZhcnkgcGF0aC5cbiAgY29uc3QgcGFyZW50UGFydGlhbFZhcnlQYXRoID0gcGFyZW50Um91dGVUcmVlLmlzUGFnZVxuICAgID8gZ2V0UGFydGlhbFBhZ2VWYXJ5UGF0aChwYXJlbnRSb3V0ZVRyZWUudmFyeVBhdGgpXG4gICAgOiBnZXRQYXJ0aWFsTGF5b3V0VmFyeVBhdGgocGFyZW50Um91dGVUcmVlLnZhcnlQYXRoKVxuICBjb25zdCBzZWdtZW50ID0gZmxpZ2h0Um91dGVyU3RhdGVbMF1cbiAgLy8gQW5kIHRoZSByZXF1ZXN0IGtleS5cbiAgY29uc3QgcGFyZW50UmVxdWVzdEtleSA9IHBhcmVudFJvdXRlVHJlZS5yZXF1ZXN0S2V5XG4gIGNvbnN0IHJlcXVlc3RLZXlQYXJ0ID0gY3JlYXRlU2VnbWVudFJlcXVlc3RLZXlQYXJ0KHNlZ21lbnQpXG4gIGNvbnN0IHJlcXVlc3RLZXkgPSBhcHBlbmRTZWdtZW50UmVxdWVzdEtleVBhcnQoXG4gICAgcGFyZW50UmVxdWVzdEtleSxcbiAgICBwYXJhbGxlbFJvdXRlS2V5LFxuICAgIHJlcXVlc3RLZXlQYXJ0XG4gIClcbiAgcmV0dXJuIGNvbnZlcnRGbGlnaHRSb3V0ZXJTdGF0ZVRvUm91dGVUcmVlKFxuICAgIGZsaWdodFJvdXRlclN0YXRlLFxuICAgIHJlcXVlc3RLZXksXG4gICAgcGFyZW50UGFydGlhbFZhcnlQYXRoLFxuICAgIHJlbmRlcmVkU2VhcmNoLFxuICAgIGFjY1xuICApXG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRGbGlnaHRSb3V0ZXJTdGF0ZVRvUm91dGVUcmVlKFxuICBmbGlnaHRSb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIHJlcXVlc3RLZXk6IFNlZ21lbnRSZXF1ZXN0S2V5LFxuICBwYXJlbnRQYXJ0aWFsVmFyeVBhdGg6IFBhcnRpYWxTZWdtZW50VmFyeVBhdGggfCBudWxsLFxuICBwYXJlbnRSZW5kZXJlZFNlYXJjaDogTm9ybWFsaXplZFNlYXJjaCxcbiAgYWNjOiBSb3V0ZVRyZWVBY2N1bXVsYXRvclxuKTogUm91dGVUcmVlIHtcbiAgY29uc3Qgb3JpZ2luYWxTZWdtZW50ID0gZmxpZ2h0Um91dGVyU3RhdGVbMF1cblxuICAvLyBJZiB0aGUgRmxpZ2h0Um91dGVyU3RhdGUgaGFzIGEgcmVmcmVzaCBzdGF0ZSwgdGhlbiB0aGlzIHNlZ21lbnQgaXMgcGFydCBvZlxuICAvLyBhbiBpbmFjdGl2ZSBwYXJhbGxlbCByb3V0ZS4gSXQgaGFzIGEgZGlmZmVyZW50IHJlbmRlcmVkIHNlYXJjaCBxdWVyeSB0aGFuXG4gIC8vIHRoZSBvdXRlciBwYXJlbnQgcm91dGUuIEluIG9yZGVyIHRvIGNvbnN0cnVjdCB0aGUgaW5hY3RpdmUgcm91dGUgY29ycmVjdGx5LFxuICAvLyB3ZSBtdXN0IHJlc3RvcmUgdGhlIHF1ZXJ5IHRoYXQgd2FzIG9yaWdpbmFsbHkgdXNlZCB0byByZW5kZXIgaXQuXG4gIGNvbnN0IGNvbXByZXNzZWRSZWZyZXNoU3RhdGUgPSBmbGlnaHRSb3V0ZXJTdGF0ZVsyXSA/PyBudWxsXG4gIGNvbnN0IHJlZnJlc2hTdGF0ZSA9XG4gICAgY29tcHJlc3NlZFJlZnJlc2hTdGF0ZSAhPT0gbnVsbFxuICAgICAgPyB7XG4gICAgICAgICAgY2Fub25pY2FsVXJsOiBjb21wcmVzc2VkUmVmcmVzaFN0YXRlWzBdIGFzIHN0cmluZyxcbiAgICAgICAgICByZW5kZXJlZFNlYXJjaDogY29tcHJlc3NlZFJlZnJlc2hTdGF0ZVsxXSBhcyBOb3JtYWxpemVkU2VhcmNoLFxuICAgICAgICB9XG4gICAgICA6IG51bGxcbiAgY29uc3QgcmVuZGVyZWRTZWFyY2ggPVxuICAgIHJlZnJlc2hTdGF0ZSAhPT0gbnVsbCA/IHJlZnJlc2hTdGF0ZS5yZW5kZXJlZFNlYXJjaCA6IHBhcmVudFJlbmRlcmVkU2VhcmNoXG5cbiAgbGV0IHNlZ21lbnQ6IEZsaWdodFJvdXRlclN0YXRlU2VnbWVudFxuICBsZXQgcGFydGlhbFZhcnlQYXRoOiBQYXJ0aWFsU2VnbWVudFZhcnlQYXRoIHwgbnVsbFxuICBsZXQgaXNQYWdlOiBib29sZWFuXG4gIGxldCB2YXJ5UGF0aDogU2VnbWVudFZhcnlQYXRoXG4gIGlmIChBcnJheS5pc0FycmF5KG9yaWdpbmFsU2VnbWVudCkpIHtcbiAgICBpc1BhZ2UgPSBmYWxzZVxuICAgIGNvbnN0IHBhcmFtQ2FjaGVLZXkgPSBvcmlnaW5hbFNlZ21lbnRbMV1cbiAgICBjb25zdCBwYXJhbU5hbWUgPSBvcmlnaW5hbFNlZ21lbnRbMF1cbiAgICBwYXJ0aWFsVmFyeVBhdGggPSBhcHBlbmRMYXlvdXRWYXJ5UGF0aChcbiAgICAgIHBhcmVudFBhcnRpYWxWYXJ5UGF0aCxcbiAgICAgIHBhcmFtQ2FjaGVLZXksXG4gICAgICBwYXJhbU5hbWVcbiAgICApXG4gICAgdmFyeVBhdGggPSBmaW5hbGl6ZUxheW91dFZhcnlQYXRoKHJlcXVlc3RLZXksIHBhcnRpYWxWYXJ5UGF0aClcbiAgICBzZWdtZW50ID0gb3JpZ2luYWxTZWdtZW50XG4gIH0gZWxzZSB7XG4gICAgLy8gVGhpcyBzZWdtZW50IGRvZXMgbm90IGhhdmUgYSBwYXJhbS4gSW5oZXJpdCB0aGUgcGFydGlhbCB2YXJ5IHBhdGggb2ZcbiAgICAvLyB0aGUgcGFyZW50LlxuICAgIHBhcnRpYWxWYXJ5UGF0aCA9IHBhcmVudFBhcnRpYWxWYXJ5UGF0aFxuICAgIGlmIChyZXF1ZXN0S2V5LmVuZHNXaXRoKFBBR0VfU0VHTUVOVF9LRVkpKSB7XG4gICAgICAvLyBUaGlzIGlzIGEgcGFnZSBzZWdtZW50LlxuICAgICAgaXNQYWdlID0gdHJ1ZVxuXG4gICAgICAvLyBUaGUgbmF2aWdhdGlvbiBpbXBsZW1lbnRhdGlvbiBleHBlY3RzIHRoZSBzZWFyY2ggcGFyYW1zIHRvIGJlIGluY2x1ZGVkXG4gICAgICAvLyBpbiB0aGUgc2VnbWVudC4gSG93ZXZlciwgaW4gdGhlIGNhc2Ugb2YgYSBzdGF0aWMgcmVzcG9uc2UsIHRoZSBzZWFyY2hcbiAgICAgIC8vIHBhcmFtcyBhcmUgb21pdHRlZC4gU28gdGhlIGNsaWVudCBuZWVkcyB0byBhZGQgdGhlbSBiYWNrIGluIHdoZW4gcmVhZGluZ1xuICAgICAgLy8gZnJvbSB0aGUgU2VnbWVudCBDYWNoZS5cbiAgICAgIC8vXG4gICAgICAvLyBGb3IgY29uc2lzdGVuY3ksIHdlJ2xsIGRvIHRoaXMgZm9yIGR5bmFtaWMgcmVzcG9uc2VzLCB0b28uXG4gICAgICAvL1xuICAgICAgLy8gVE9ETzogV2Ugc2hvdWxkIG1vdmUgc2VhcmNoIHBhcmFtcyBvdXQgb2YgRmxpZ2h0Um91dGVyU3RhdGUgYW5kIGhhbmRsZVxuICAgICAgLy8gdGhlbSBlbnRpcmVseSBvbiB0aGUgY2xpZW50LCBzaW1pbGFyIHRvIG91ciBwbGFuIGZvciBkeW5hbWljIHBhcmFtcy5cbiAgICAgIHNlZ21lbnQgPSBQQUdFX1NFR01FTlRfS0VZXG4gICAgICB2YXJ5UGF0aCA9IGZpbmFsaXplUGFnZVZhcnlQYXRoKFxuICAgICAgICByZXF1ZXN0S2V5LFxuICAgICAgICByZW5kZXJlZFNlYXJjaCxcbiAgICAgICAgcGFydGlhbFZhcnlQYXRoXG4gICAgICApXG4gICAgICAvLyBUaGUgbWV0YWRhdGEgXCJzZWdtZW50XCIgaXMgbm90IHBhcnQgdGhlIHJvdXRlIHRyZWUsIGJ1dCBpdCBoYXMgdGhlIHNhbWVcbiAgICAgIC8vIGNvbmNlcHR1YWwgcGFyYW1zIGFzIGEgcGFnZSBzZWdtZW50LiBXcml0ZSB0aGUgdmFyeSBwYXRoIGludG8gdGhlXG4gICAgICAvLyBhY2N1bXVsYXRvciBvYmplY3QuIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBwYXJhbGxlbCBwYWdlcywgd2UgdXNlIHRoZVxuICAgICAgLy8gZmlyc3Qgb25lLiBXaGljaCBwYWdlIHdlIGNob29zZSBpcyBhcmJpdHJhcnkgYXMgbG9uZyBhcyBpdCdzXG4gICAgICAvLyBjb25zaXN0ZW50bHkgdGhlIHNhbWUgb25lIGV2ZXJ5IHRpbWUgZXZlcnkgdGltZS4gU2VlXG4gICAgICAvLyBmaW5hbGl6ZU1ldGFkYXRhVmFyeVBhdGggZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIGlmIChhY2MubWV0YWRhdGFWYXJ5UGF0aCA9PT0gbnVsbCkge1xuICAgICAgICBhY2MubWV0YWRhdGFWYXJ5UGF0aCA9IGZpbmFsaXplTWV0YWRhdGFWYXJ5UGF0aChcbiAgICAgICAgICByZXF1ZXN0S2V5LFxuICAgICAgICAgIHJlbmRlcmVkU2VhcmNoLFxuICAgICAgICAgIHBhcnRpYWxWYXJ5UGF0aFxuICAgICAgICApXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoaXMgaXMgYSBsYXlvdXQgc2VnbWVudC5cbiAgICAgIGlzUGFnZSA9IGZhbHNlXG4gICAgICBzZWdtZW50ID0gb3JpZ2luYWxTZWdtZW50XG4gICAgICB2YXJ5UGF0aCA9IGZpbmFsaXplTGF5b3V0VmFyeVBhdGgocmVxdWVzdEtleSwgcGFydGlhbFZhcnlQYXRoKVxuICAgIH1cbiAgfVxuXG4gIGxldCBzbG90czogeyBbcGFyYWxsZWxSb3V0ZUtleTogc3RyaW5nXTogUm91dGVUcmVlIH0gfCBudWxsID0gbnVsbFxuXG4gIGNvbnN0IHBhcmFsbGVsUm91dGVzID0gZmxpZ2h0Um91dGVyU3RhdGVbMV1cbiAgZm9yIChsZXQgcGFyYWxsZWxSb3V0ZUtleSBpbiBwYXJhbGxlbFJvdXRlcykge1xuICAgIGNvbnN0IGNoaWxkUm91dGVyU3RhdGUgPSBwYXJhbGxlbFJvdXRlc1twYXJhbGxlbFJvdXRlS2V5XVxuICAgIGNvbnN0IGNoaWxkU2VnbWVudCA9IGNoaWxkUm91dGVyU3RhdGVbMF1cbiAgICAvLyBUT0RPOiBFdmVudHVhbGx5LCB0aGUgcGFyYW0gdmFsdWVzIHdpbGwgbm90IGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZVxuICAgIC8vIGZyb20gdGhlIHNlcnZlci4gV2UnbGwgaW5zdGVhZCBmaWxsIHRoZW0gaW4gb24gdGhlIGNsaWVudCBieSBwYXJzaW5nXG4gICAgLy8gdGhlIFVSTC4gVGhpcyBpcyB3aGVyZSB3ZSdsbCBkbyB0aGF0LlxuICAgIGNvbnN0IGNoaWxkUmVxdWVzdEtleVBhcnQgPSBjcmVhdGVTZWdtZW50UmVxdWVzdEtleVBhcnQoY2hpbGRTZWdtZW50KVxuICAgIGNvbnN0IGNoaWxkUmVxdWVzdEtleSA9IGFwcGVuZFNlZ21lbnRSZXF1ZXN0S2V5UGFydChcbiAgICAgIHJlcXVlc3RLZXksXG4gICAgICBwYXJhbGxlbFJvdXRlS2V5LFxuICAgICAgY2hpbGRSZXF1ZXN0S2V5UGFydFxuICAgIClcbiAgICBjb25zdCBjaGlsZFRyZWUgPSBjb252ZXJ0RmxpZ2h0Um91dGVyU3RhdGVUb1JvdXRlVHJlZShcbiAgICAgIGNoaWxkUm91dGVyU3RhdGUsXG4gICAgICBjaGlsZFJlcXVlc3RLZXksXG4gICAgICBwYXJ0aWFsVmFyeVBhdGgsXG4gICAgICByZW5kZXJlZFNlYXJjaCxcbiAgICAgIGFjY1xuICAgIClcbiAgICBpZiAoc2xvdHMgPT09IG51bGwpIHtcbiAgICAgIHNsb3RzID0ge1xuICAgICAgICBbcGFyYWxsZWxSb3V0ZUtleV06IGNoaWxkVHJlZSxcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2xvdHNbcGFyYWxsZWxSb3V0ZUtleV0gPSBjaGlsZFRyZWVcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHJlcXVlc3RLZXksXG4gICAgc2VnbWVudCxcbiAgICByZWZyZXNoU3RhdGUsXG4gICAgLy8gVE9ETzogQ2hlYXRpbmcgdGhlIHR5cGUgc3lzdGVtIGhlcmUgYSBiaXQgYmVjYXVzZSBUeXBlU2NyaXB0IGNhbid0IHRlbGxcbiAgICAvLyB0aGF0IHRoZSB0eXBlIG9mIGlzUGFnZSBhbmQgdmFyeVBhdGggYXJlIGNvbnNpc3RlbnQuIFRoZSBmaXggd291bGQgYmUgdG9cbiAgICAvLyBjcmVhdGUgc2VwYXJhdGUgY29uc3RydWN0b3JzIGFuZCBjYWxsIHRoZSBhcHByb3ByaWF0ZSBvbmUgZnJvbSBlYWNoIG9mXG4gICAgLy8gdGhlIGJyYW5jaGVzIGFib3ZlLiBKdXN0IHNlZW1zIGEgYml0IG92ZXJraWxsIG9ubHkgZm9yIG9uZSBmaWVsZCBzbyBJJ2xsXG4gICAgLy8gbGVhdmUgaXQgYXMtaXMgZm9yIG5vdy4gSWYgaXNQYWdlIHdlcmUgd3JvbmcgaXQgd291bGQgYnJlYWsgdGhlIGJlaGF2aW9yXG4gICAgLy8gYW5kIHdlJ2QgY2F0Y2ggaXQgcXVpY2tseSwgYW55d2F5LlxuICAgIHZhcnlQYXRoOiB2YXJ5UGF0aCBhcyBhbnksXG4gICAgaXNQYWdlOiBpc1BhZ2UgYXMgYm9vbGVhbiBhcyBhbnksXG4gICAgc2xvdHMsXG4gICAgcHJlZmV0Y2hIaW50czogZmxpZ2h0Um91dGVyU3RhdGVbNF0gPz8gMCxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFJvdXRlVHJlZVRvRmxpZ2h0Um91dGVyU3RhdGUoXG4gIHJvdXRlVHJlZTogUm91dGVUcmVlXG4pOiBGbGlnaHRSb3V0ZXJTdGF0ZSB7XG4gIGNvbnN0IHBhcmFsbGVsUm91dGVzOiBSZWNvcmQ8c3RyaW5nLCBGbGlnaHRSb3V0ZXJTdGF0ZT4gPSB7fVxuICBpZiAocm91dGVUcmVlLnNsb3RzICE9PSBudWxsKSB7XG4gICAgZm9yIChjb25zdCBwYXJhbGxlbFJvdXRlS2V5IGluIHJvdXRlVHJlZS5zbG90cykge1xuICAgICAgcGFyYWxsZWxSb3V0ZXNbcGFyYWxsZWxSb3V0ZUtleV0gPSBjb252ZXJ0Um91dGVUcmVlVG9GbGlnaHRSb3V0ZXJTdGF0ZShcbiAgICAgICAgcm91dGVUcmVlLnNsb3RzW3BhcmFsbGVsUm91dGVLZXldXG4gICAgICApXG4gICAgfVxuICB9XG4gIGNvbnN0IGZsaWdodFJvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSA9IFtcbiAgICByb3V0ZVRyZWUuc2VnbWVudCxcbiAgICBwYXJhbGxlbFJvdXRlcyxcbiAgICBudWxsLFxuICAgIG51bGwsXG4gIF1cbiAgcmV0dXJuIGZsaWdodFJvdXRlclN0YXRlXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFJvdXRlT25DYWNoZU1pc3MoXG4gIGVudHJ5OiBQZW5kaW5nUm91dGVDYWNoZUVudHJ5LFxuICBrZXk6IFJvdXRlQ2FjaGVLZXlcbik6IFByb21pc2U8UHJlZmV0Y2hTdWJ0YXNrUmVzdWx0PG51bGw+IHwgbnVsbD4ge1xuICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGFsbG93ZWQgdG8gdXNlIGFzeW5jL2F3YWl0IGJlY2F1c2UgaXQgY29udGFpbnMgdGhlIGFjdHVhbFxuICAvLyBmZXRjaCB0aGF0IGdldHMgaXNzdWVkIG9uIGEgY2FjaGUgbWlzcy4gTm90aWNlIGl0IHdyaXRlcyB0aGUgcmVzdWx0IHRvIHRoZVxuICAvLyBjYWNoZSBlbnRyeSBkaXJlY3RseSwgcmF0aGVyIHRoYW4gcmV0dXJuIGRhdGEgdGhhdCBpcyB0aGVuIHdyaXR0ZW4gYnlcbiAgLy8gdGhlIGNhbGxlci5cbiAgY29uc3QgcGF0aG5hbWUgPSBrZXkucGF0aG5hbWVcbiAgY29uc3Qgc2VhcmNoID0ga2V5LnNlYXJjaFxuICBjb25zdCBuZXh0VXJsID0ga2V5Lm5leHRVcmxcbiAgY29uc3Qgc2VnbWVudFBhdGggPSAnL190cmVlJyBhcyBTZWdtZW50UmVxdWVzdEtleVxuXG4gIGNvbnN0IGhlYWRlcnM6IFJlcXVlc3RIZWFkZXJzID0ge1xuICAgIFtSU0NfSEVBREVSXTogJzEnLFxuICAgIFtORVhUX1JPVVRFUl9QUkVGRVRDSF9IRUFERVJdOiAnMScsXG4gICAgW05FWFRfUk9VVEVSX1NFR01FTlRfUFJFRkVUQ0hfSEVBREVSXTogc2VnbWVudFBhdGgsXG4gIH1cbiAgaWYgKG5leHRVcmwgIT09IG51bGwpIHtcbiAgICBoZWFkZXJzW05FWFRfVVJMXSA9IG5leHRVcmxcbiAgfVxuICAvLyBUZWxsIHRoZSBzZXJ2ZXIgdG8gcGVyZm9ybSBhIHN0YXRpYyBwcmUtcmVuZGVyIGZvciB0aGUgSW5zdGFudCBOYXZpZ2F0aW9uXG4gIC8vIFRlc3RpbmcgQVBJLiBTdGF0aWMgcHJlLXJlbmRlcnMgZG9uJ3Qgbm9ybWFsbHkgaGFwcGVuIGR1cmluZyBkZXZlbG9wbWVudC5cbiAgYWRkSW5zdGFudFByZWZldGNoSGVhZGVySWZMb2NrZWQoaGVhZGVycylcblxuICB0cnkge1xuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwocGF0aG5hbWUgKyBzZWFyY2gsIGxvY2F0aW9uLm9yaWdpbilcbiAgICBsZXQgcmVzcG9uc2VcbiAgICBsZXQgdXJsQWZ0ZXJSZWRpcmVjdHNcbiAgICBpZiAoaXNPdXRwdXRFeHBvcnRNb2RlKSB7XG4gICAgICAvLyBJbiBvdXRwdXQ6IFwiZXhwb3J0XCIgbW9kZSwgd2UgY2FuJ3QgdXNlIGhlYWRlcnMgdG8gcmVxdWVzdCBhIHBhcnRpY3VsYXJcbiAgICAgIC8vIHNlZ21lbnQuIEluc3RlYWQsIHdlIGVuY29kZSB0aGUgZXh0cmEgcmVxdWVzdCBpbmZvcm1hdGlvbiBpbnRvIHRoZSBVUkwuXG4gICAgICAvLyBUaGlzIGlzIG5vdCBwYXJ0IG9mIHRoZSBcInB1YmxpY1wiIGludGVyZmFjZSBvZiB0aGUgYXBwOyBpdCdzIGFuIGludGVybmFsXG4gICAgICAvLyBOZXh0LmpzIGltcGxlbWVudGF0aW9uIGRldGFpbCB0aGF0IHRoZSBhcHAgZGV2ZWxvcGVyIHNob3VsZCBub3QgbmVlZCB0b1xuICAgICAgLy8gY29uY2VybiB0aGVtc2VsdmVzIHdpdGguXG4gICAgICAvL1xuICAgICAgLy8gRm9yIGV4YW1wbGUsIHRvIHJlcXVlc3QgYSBzZWdtZW50OlxuICAgICAgLy9cbiAgICAgIC8vICAgUGF0aCBwYXNzZWQgdG8gPExpbms+OiAgIC9wYXRoL3RvL3BhZ2VcbiAgICAgIC8vICAgUGF0aCBwYXNzZWQgdG8gZmV0Y2g6ICAgIC9wYXRoL3RvL3BhZ2UvX19uZXh0LXNlZ21lbnRzL190cmVlXG4gICAgICAvL1xuICAgICAgLy8gICAoVGhpcyBpcyBub3QgdGhlIGV4YWN0IHByb3RvY29sLCBqdXN0IGFuIGlsbHVzdHJhdGlvbi4pXG4gICAgICAvL1xuICAgICAgLy8gQmVmb3JlIHdlIGRvIHRoYXQsIHRob3VnaCwgd2UgbmVlZCB0byBhY2NvdW50IGZvciByZWRpcmVjdHMuIEV2ZW4gaW5cbiAgICAgIC8vIG91dHB1dDogXCJleHBvcnRcIiBtb2RlLCBhIHByb3h5IG1pZ2h0IHJlZGlyZWN0IHRoZSBwYWdlIHRvIGEgZGlmZmVyZW50XG4gICAgICAvLyBsb2NhdGlvbiwgYnV0IHdlIHNob3VsZG4ndCBhc3N1bWUgb3IgZXhwZWN0IHRoYXQgdGhleSBhbHNvIHJlZGlyZWN0IGFsbFxuICAgICAgLy8gdGhlIHNlZ21lbnQgZmlsZXMsIHRvby5cbiAgICAgIC8vXG4gICAgICAvLyBUbyBjaGVjayB3aGV0aGVyIHRoZSBwYWdlIGlzIHJlZGlyZWN0ZWQsIHByZXZpb3VzbHkgd2UgcGVyZm9ybSBhIHJhbmdlXG4gICAgICAvLyByZXF1ZXN0IG9mIDY0IGJ5dGVzIG9mIHRoZSBIVE1MIGRvY3VtZW50IHRvIGNoZWNrIGlmIHRoZSB0YXJnZXQgcGFnZVxuICAgICAgLy8gaXMgcGFydCBvZiB0aGlzIGFwcCAoYnkgY2hlY2tpbmcgaWYgYnVpbGQgaWQgbWF0Y2hlcykuIE9ubHkgaWYgdGhlIHRhcmdldFxuICAgICAgLy8gcGFnZSBpcyBwYXJ0IG9mIHRoaXMgYXBwIGRvIHdlIGRldGVybWluZSB0aGUgZmluYWwgY2Fub25pY2FsIFVSTC5cbiAgICAgIC8vXG4gICAgICAvLyBIb3dldmVyLCBhcyBtZW50aW9uZWQgaW4gaHR0cHM6Ly9naXRodWIuY29tL3ZlcmNlbC9uZXh0LmpzL3B1bGwvODU5MDMsXG4gICAgICAvLyBzb21lIHBvcHVsYXIgc3RhdGljIGhvc3RpbmcgcHJvdmlkZXJzIChsaWtlIENsb3VkZmxhcmUgUGFnZXMgb3IgUmVuZGVyLmNvbSlcbiAgICAgIC8vIGRvIG5vdCBzdXBwb3J0IHJhbmdlIHJlcXVlc3RzLCBpbiB0aGUgd29yc3QgY2FzZSwgdGhlIGVudGlyZSBIVE1MIGluc3RlYWRcbiAgICAgIC8vIG9mIDY0IGJ5dGVzIGNvdWxkIGJlIHJldHVybmVkLCB3aGljaCBpcyB3YXN0ZWZ1bC5cbiAgICAgIC8vXG4gICAgICAvLyBTbyBpbnN0ZWFkLCB3ZSBkcm9wcyB0aGUgY2hlY2sgZm9yIGJ1aWxkIGlkIGhlcmUsIGFuZCBzaW1wbHkgcGVyZm9ybVxuICAgICAgLy8gYSBIRUFEIHJlcXVlc3QgdG8gcmVqZWN0cyAxeHgvNHh4LzV4eCByZXNwb25zZXMsIGFuZCB0aGVuIGRldGVybWluZSB0aGVcbiAgICAgIC8vIGZpbmFsIFVSTCBhZnRlciByZWRpcmVjdHMuXG4gICAgICAvL1xuICAgICAgLy8gTk9URTogV2UgY291bGQgZW1iZWQgdGhlIHJvdXRlIHRyZWUgaW50byB0aGUgSFRNTCBkb2N1bWVudCwgdG8gYXZvaWRcbiAgICAgIC8vIGEgc2Vjb25kIHJlcXVlc3QuIFdlJ3JlIG5vdCBkb2luZyB0aGF0IGN1cnJlbnRseSBiZWNhdXNlIGl0IHdvdWxkIG1ha2VcbiAgICAgIC8vIHRoZSBIVE1MIGRvY3VtZW50IGxhcmdlciBhbmQgYWZmZWN0IG5vcm1hbCBwYWdlIGxvYWRzLlxuICAgICAgY29uc3QgaGVhZFJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7XG4gICAgICAgIG1ldGhvZDogJ0hFQUQnLFxuICAgICAgfSlcbiAgICAgIGlmIChoZWFkUmVzcG9uc2Uuc3RhdHVzIDwgMjAwIHx8IGhlYWRSZXNwb25zZS5zdGF0dXMgPj0gNDAwKSB7XG4gICAgICAgIC8vIFRoZSB0YXJnZXQgcGFnZSByZXNwb25kZWQgdy9vIGEgc3VjY2Vzc2Z1bCBzdGF0dXMgY29kZVxuICAgICAgICAvLyBDb3VsZCBiZSBhIFdBRiBzZXJ2aW5nIGEgNDAzLCBvciBhIDV4eCBmcm9tIGEgYmFja2VuZFxuICAgICAgICAvL1xuICAgICAgICAvLyBOb3RlIHRoYXQgd2UgY2FuJ3QgdXNlIGhlYWRSZXNwb25zZS5vayBoZXJlLCBiZWNhdXNlXG4gICAgICAgIC8vIFJlc3BvbnNlI29rIHJldHVybnMgYGZhbHNlYCB3aXRoIDN4eCByZXNwb25zZXMuXG4gICAgICAgIHJlamVjdFJvdXRlQ2FjaGVFbnRyeShlbnRyeSwgRGF0ZS5ub3coKSArIDEwICogMTAwMClcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgdXJsQWZ0ZXJSZWRpcmVjdHMgPSBoZWFkUmVzcG9uc2UucmVkaXJlY3RlZFxuICAgICAgICA/IG5ldyBVUkwoaGVhZFJlc3BvbnNlLnVybClcbiAgICAgICAgOiB1cmxcblxuICAgICAgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaFByZWZldGNoUmVzcG9uc2UoXG4gICAgICAgIGFkZFNlZ21lbnRQYXRoVG9VcmxJbk91dHB1dEV4cG9ydE1vZGUodXJsQWZ0ZXJSZWRpcmVjdHMsIHNlZ21lbnRQYXRoKSxcbiAgICAgICAgaGVhZGVyc1xuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBcIlNlcnZlclwiIG1vZGUuIFdlIGNhbiB1c2UgcmVxdWVzdCBoZWFkZXJzIGluc3RlYWQgb2YgdGhlIHBhdGhuYW1lLlxuICAgICAgLy8gVE9ETzogVGhlIGV2ZW50dWFsIHBsYW4gaXMgdG8gZ2V0IHJpZCBvZiBvdXIgY3VzdG9tIHJlcXVlc3QgaGVhZGVycyBhbmRcbiAgICAgIC8vIGVuY29kZSBldmVyeXRoaW5nIGludG8gdGhlIFVSTCwgdXNpbmcgYSBzaW1pbGFyIHN0cmF0ZWd5IHRvIHRoZVxuICAgICAgLy8gXCJvdXRwdXQ6IGV4cG9ydFwiIGJsb2NrIGFib3ZlLlxuICAgICAgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaFByZWZldGNoUmVzcG9uc2UodXJsLCBoZWFkZXJzKVxuICAgICAgdXJsQWZ0ZXJSZWRpcmVjdHMgPVxuICAgICAgICByZXNwb25zZSAhPT0gbnVsbCAmJiByZXNwb25zZS5yZWRpcmVjdGVkID8gbmV3IFVSTChyZXNwb25zZS51cmwpIDogdXJsXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgIXJlc3BvbnNlIHx8XG4gICAgICAhcmVzcG9uc2Uub2sgfHxcbiAgICAgIC8vIDIwNCBpcyBhIENhY2hlIG1pc3MuIFRob3VnaCB0aGVvcmV0aWNhbGx5IHRoaXMgc2hvdWxkbid0IGhhcHBlbiB3aGVuXG4gICAgICAvLyBQUFIgaXMgZW5hYmxlZCwgYmVjYXVzZSB3ZSBhbHdheXMgcmVzcG9uZCB0byByb3V0ZSB0cmVlIHJlcXVlc3RzLCBldmVuXG4gICAgICAvLyBpZiBpdCBuZWVkcyB0byBiZSBibG9ja2luZ2x5IGdlbmVyYXRlZCBvbiBkZW1hbmQuXG4gICAgICByZXNwb25zZS5zdGF0dXMgPT09IDIwNCB8fFxuICAgICAgIXJlc3BvbnNlLmJvZHlcbiAgICApIHtcbiAgICAgIC8vIFNlcnZlciByZXNwb25kZWQgd2l0aCBhbiBlcnJvciwgb3Igd2l0aCBhIG1pc3MuIFdlIHNob3VsZCBzdGlsbCBjYWNoZVxuICAgICAgLy8gdGhlIHJlc3BvbnNlLCBidXQgd2UgY2FuIHRyeSBhZ2FpbiBhZnRlciAxMCBzZWNvbmRzLlxuICAgICAgcmVqZWN0Um91dGVDYWNoZUVudHJ5KGVudHJ5LCBEYXRlLm5vdygpICsgMTAgKiAxMDAwKVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBUaGUgY2Fub25pY2FsIFVSTCBpcyB0aGUgaHJlZiB3aXRob3V0IHRoZSBvcmlnaW4uIEkgdGhpbmtcbiAgICAvLyBoaXN0b3JpY2FsbHkgdGhlIHJlYXNvbiBmb3IgdGhpcyBpcyBiZWNhdXNlIHRoZSBpbml0aWFsIGNhbm9uaWNhbCBVUkxcbiAgICAvLyBnZXRzIHBhc3NlZCBhcyBhIHByb3AgdG8gdGhlIHRvcC1sZXZlbCBSZWFjdCBjb21wb25lbnQsIHdoaWNoIG1lYW5zIGl0XG4gICAgLy8gbmVlZHMgdG8gYmUgY29tcHV0ZWQgZHVyaW5nIFNTUi4gSWYgaXQgd2VyZSB0byBpbmNsdWRlIHRoZSBvcmlnaW4sIGl0XG4gICAgLy8gd291bGQgbmVlZCB0byBhbHdheXMgYmUgc2FtZSBhcyBsb2NhdGlvbi5vcmlnaW4gb24gdGhlIGNsaWVudCwgdG8gcHJldmVudFxuICAgIC8vIGEgaHlkcmF0aW9uIG1pc21hdGNoLiBUbyBzaWRlc3RlcCB0aGlzIGNvbXBsZXhpdHksIHdlIG9taXQgdGhlIG9yaWdpbi5cbiAgICAvL1xuICAgIC8vIEhvd2V2ZXIsIHNpbmNlIHRoaXMgaXMgbmVpdGhlciBhIG5hdGl2ZSBVUkwgb2JqZWN0IG5vciBhIGZ1bGx5IHF1YWxpZmllZFxuICAgIC8vIFVSTCBzdHJpbmcsIHdlIG5lZWQgdG8gYmUgY2FyZWZ1bCBhYm91dCBob3cgd2UgdXNlIGl0LiBUbyBwcmV2ZW50IHN1YnRsZVxuICAgIC8vIG1pc3Rha2VzLCB3ZSBzaG91bGQgY3JlYXRlIGEgc3BlY2lhbCB0eXBlIGZvciBpdCwgaW5zdGVhZCBvZiBqdXN0IHN0cmluZy5cbiAgICAvLyBPciwgd2Ugc2hvdWxkIGp1c3QgdXNlIGEgKHJlYWRvbmx5KSBVUkwgb2JqZWN0IGluc3RlYWQuIFRoZSB0eXBlIG9mIHRoZVxuICAgIC8vIHByb3AgdGhhdCB3ZSBwYXNzIHRvIHNlZWQgdGhlIGluaXRpYWwgc3RhdGUgZG9lcyBub3QgbmVlZCB0byBiZSB0aGUgc2FtZVxuICAgIC8vIHR5cGUgYXMgdGhlIHN0YXRlIGl0c2VsZi5cbiAgICBjb25zdCBjYW5vbmljYWxVcmwgPSBjcmVhdGVIcmVmRnJvbVVybCh1cmxBZnRlclJlZGlyZWN0cylcblxuICAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIHJlc3BvbnNlIHZhcmllcyBiYXNlZCBvbiB0aGUgTmV4dC1VcmwgaGVhZGVyLlxuICAgIGNvbnN0IHZhcnlIZWFkZXIgPSByZXNwb25zZS5oZWFkZXJzLmdldCgndmFyeScpXG4gICAgY29uc3QgY291bGRCZUludGVyY2VwdGVkID1cbiAgICAgIHZhcnlIZWFkZXIgIT09IG51bGwgJiYgdmFyeUhlYWRlci5pbmNsdWRlcyhORVhUX1VSTClcblxuICAgIC8vIFRPRE86IFRoZSBgY2xvc2VkYCBwcm9taXNlIHdhcyBvcmlnaW5hbGx5IHVzZWQgdG8gdHJhY2sgd2hlbiBhIHN0cmVhbWluZ1xuICAgIC8vIG5ldHdvcmsgY29ubmVjdGlvbiBjbG9zZXMsIHNvIHRoZSBzY2hlZHVsZXIgY291bGQgbGltaXQgY29uY3VycmVudFxuICAgIC8vIGNvbm5lY3Rpb25zLiBOb3cgdGhhdCBwcmVmZXRjaCByZXNwb25zZXMgYXJlIGJ1ZmZlcmVkLCBgY2xvc2VkYCBpc1xuICAgIC8vIHJlc29sdmVkIGltbWVkaWF0ZWx5IGFmdGVyIGJ1ZmZlcmluZyDigJQgYmVmb3JlIHRoZSBvdXRlciBmdW5jdGlvbiBldmVuXG4gICAgLy8gcmV0dXJucy4gVGhpcyBtZWNoYW5pc20gaXMgb25seSBzdGlsbCBtZWFuaW5nZnVsIGZvciBkeW5hbWljIChGdWxsKVxuICAgIC8vIHByZWZldGNoZXMsIHdoaWNoIHVzZSBpbmNyZW1lbnRhbCBzdHJlYW1pbmcuIENvbnNpZGVyIHJlbW92aW5nIHRoZVxuICAgIC8vIGBjbG9zZWRgIHBsdW1iaW5nIGZvciBidWZmZXJlZCBwcmVmZXRjaCBwYXRocy5cbiAgICBjb25zdCBjbG9zZWQgPSBjcmVhdGVQcm9taXNlV2l0aFJlc29sdmVyczx2b2lkPigpXG5cbiAgICAvLyBUaGlzIGNoZWNrcyB3aGV0aGVyIHRoZSByZXNwb25zZSB3YXMgc2VydmVkIGZyb20gdGhlIHBlci1zZWdtZW50IGNhY2hlLFxuICAgIC8vIHJhdGhlciB0aGFuIHRoZSBvbGQgcHJlZmV0Y2hpbmcgZmxvdy4gSWYgaXQgZmFpbHMsIGl0IGltcGxpZXMgdGhhdCBQUFJcbiAgICAvLyBpcyBkaXNhYmxlZCBvbiB0aGlzIHJvdXRlLlxuICAgIGNvbnN0IHJvdXRlSXNQUFJFbmFibGVkID1cbiAgICAgIHJlc3BvbnNlLmhlYWRlcnMuZ2V0KE5FWFRfRElEX1BPU1RQT05FX0hFQURFUikgPT09ICcyJyB8fFxuICAgICAgLy8gSW4gb3V0cHV0OiBcImV4cG9ydFwiIG1vZGUsIHdlIGNhbid0IHJlbHkgb24gcmVzcG9uc2UgaGVhZGVycy4gQnV0IGlmIHdlXG4gICAgICAvLyByZWNlaXZlIGEgd2VsbC1mb3JtZWQgcmVzcG9uc2UsIHdlIGNhbiBhc3N1bWUgaXQncyBhIHN0YXRpYyByZXNwb25zZSxcbiAgICAgIC8vIGJlY2F1c2UgYWxsIGRhdGEgaXMgc3RhdGljIGluIHRoaXMgbW9kZS5cbiAgICAgIGlzT3V0cHV0RXhwb3J0TW9kZVxuXG4gICAgaWYgKHJvdXRlSXNQUFJFbmFibGVkKSB7XG4gICAgICBjb25zdCB7IHN0cmVhbTogcHJlZmV0Y2hTdHJlYW0sIHNpemU6IHJlc3BvbnNlU2l6ZSB9ID1cbiAgICAgICAgYXdhaXQgY3JlYXRlTm9uVGFza3lQcmVmZXRjaFJlc3BvbnNlU3RyZWFtKHJlc3BvbnNlLmJvZHkpXG4gICAgICBjbG9zZWQucmVzb2x2ZSgpXG4gICAgICBzZXRTaXplSW5DYWNoZU1hcChlbnRyeSwgcmVzcG9uc2VTaXplKVxuICAgICAgY29uc3Qgc2VydmVyRGF0YSA9IGF3YWl0IGNyZWF0ZUZyb21OZXh0UmVhZGFibGVTdHJlYW08Um9vdFRyZWVQcmVmZXRjaD4oXG4gICAgICAgIHByZWZldGNoU3RyZWFtLFxuICAgICAgICBoZWFkZXJzLFxuICAgICAgICB7IGFsbG93UGFydGlhbFN0cmVhbTogdHJ1ZSB9XG4gICAgICApXG5cbiAgICAgIGlmIChcbiAgICAgICAgKHJlc3BvbnNlLmhlYWRlcnMuZ2V0KE5FWFRfTkFWX0RFUExPWU1FTlRfSURfSEVBREVSKSA/P1xuICAgICAgICAgIHNlcnZlckRhdGEuYnVpbGRJZCkgIT09IGdldE5hdmlnYXRpb25CdWlsZElkKClcbiAgICAgICkge1xuICAgICAgICAvLyBUaGUgc2VydmVyIGJ1aWxkIGRvZXMgbm90IG1hdGNoIHRoZSBjbGllbnQuIFRyZWF0IGFzIGEgNDA0LiBEdXJpbmdcbiAgICAgICAgLy8gYW4gYWN0dWFsIG5hdmlnYXRpb24sIHRoZSByb3V0ZXIgd2lsbCB0cmlnZ2VyIGFuIE1QQSBuYXZpZ2F0aW9uLlxuICAgICAgICAvLyBUT0RPOiBXZSBzaG91bGQgY2FjaGUgdGhlIGZhY3QgdGhhdCB0aGlzIGlzIGFuIE1QQSBuYXZpZ2F0aW9uLlxuICAgICAgICByZWplY3RSb3V0ZUNhY2hlRW50cnkoZW50cnksIERhdGUubm93KCkgKyAxMCAqIDEwMDApXG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG5cbiAgICAgIC8vIEdldCB0aGUgcGFyYW1zIHRoYXQgd2VyZSB1c2VkIHRvIHJlbmRlciB0aGUgdGFyZ2V0IHBhZ2UuIFRoZXNlIG1heVxuICAgICAgLy8gYmUgZGlmZmVyZW50IGZyb20gdGhlIHBhcmFtcyBpbiB0aGUgcmVxdWVzdCBVUkwsIGlmIHRoZSBwYWdlXG4gICAgICAvLyB3YXMgcmV3cml0dGVuLlxuICAgICAgY29uc3QgcmVuZGVyZWRQYXRobmFtZSA9IGdldFJlbmRlcmVkUGF0aG5hbWUocmVzcG9uc2UpXG4gICAgICBjb25zdCByZW5kZXJlZFNlYXJjaCA9IGdldFJlbmRlcmVkU2VhcmNoKHJlc3BvbnNlKVxuXG4gICAgICAvLyBDb252ZXJ0IHRoZSBzZXJ2ZXItc2VudCBkYXRhIGludG8gdGhlIFJvdXRlVHJlZSBmb3JtYXQgdXNlZCBieSB0aGVcbiAgICAgIC8vIGNsaWVudCBjYWNoZS5cbiAgICAgIC8vXG4gICAgICAvLyBEdXJpbmcgdGhpcyB0cmF2ZXJzYWwsIHdlIGFjY3VtdWxhdGUgYWRkaXRpb25hbCBkYXRhIGludG8gdGhpc1xuICAgICAgLy8gXCJhY2N1bXVsYXRvclwiIG9iamVjdC5cbiAgICAgIGNvbnN0IGFjYzogUm91dGVUcmVlQWNjdW11bGF0b3IgPSB7IG1ldGFkYXRhVmFyeVBhdGg6IG51bGwgfVxuICAgICAgY29uc3Qgcm91dGVUcmVlID0gY29udmVydFJvb3RUcmVlUHJlZmV0Y2hUb1JvdXRlVHJlZShcbiAgICAgICAgc2VydmVyRGF0YSxcbiAgICAgICAgcmVuZGVyZWRQYXRobmFtZSxcbiAgICAgICAgcmVuZGVyZWRTZWFyY2gsXG4gICAgICAgIGFjY1xuICAgICAgKVxuICAgICAgY29uc3QgbWV0YWRhdGFWYXJ5UGF0aCA9IGFjYy5tZXRhZGF0YVZhcnlQYXRoXG4gICAgICBpZiAobWV0YWRhdGFWYXJ5UGF0aCA9PT0gbnVsbCkge1xuICAgICAgICByZWplY3RSb3V0ZUNhY2hlRW50cnkoZW50cnksIERhdGUubm93KCkgKyAxMCAqIDEwMDApXG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG5cbiAgICAgIGRpc2NvdmVyS25vd25Sb3V0ZShcbiAgICAgICAgRGF0ZS5ub3coKSxcbiAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgIG5leHRVcmwsXG4gICAgICAgIGVudHJ5LFxuICAgICAgICByb3V0ZVRyZWUsXG4gICAgICAgIG1ldGFkYXRhVmFyeVBhdGgsXG4gICAgICAgIGNvdWxkQmVJbnRlcmNlcHRlZCxcbiAgICAgICAgY2Fub25pY2FsVXJsLFxuICAgICAgICByb3V0ZUlzUFBSRW5hYmxlZCxcbiAgICAgICAgZmFsc2UgLy8gaGFzRHluYW1pY1Jld3JpdGVcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUFBSIGlzIG5vdCBlbmFibGVkIGZvciB0aGlzIHJvdXRlLiBUaGUgc2VydmVyIHJlc3BvbmRzIHdpdGggYVxuICAgICAgLy8gZGlmZmVyZW50IGZvcm1hdCAoRmxpZ2h0Um91dGVyU3RhdGUpIHRoYXQgd2UgbmVlZCB0byBjb252ZXJ0LlxuICAgICAgLy8gVE9ETzogV2Ugd2lsbCB1bmlmeSB0aGUgcmVzcG9uc2VzIGV2ZW50dWFsbHkuIEknbSBrZWVwaW5nIHRoZSB0eXBlc1xuICAgICAgLy8gc2VwYXJhdGUgZm9yIG5vdyBiZWNhdXNlIEZsaWdodFJvdXRlclN0YXRlIGhhcyBzbyBtYW55XG4gICAgICAvLyBvdmVybG9hZGVkIGNvbmNlcm5zLlxuICAgICAgY29uc3QgeyBzdHJlYW06IHByZWZldGNoU3RyZWFtLCBzaXplOiByZXNwb25zZVNpemUgfSA9XG4gICAgICAgIGF3YWl0IGNyZWF0ZU5vblRhc2t5UHJlZmV0Y2hSZXNwb25zZVN0cmVhbShyZXNwb25zZS5ib2R5KVxuICAgICAgY2xvc2VkLnJlc29sdmUoKVxuICAgICAgc2V0U2l6ZUluQ2FjaGVNYXAoZW50cnksIHJlc3BvbnNlU2l6ZSlcbiAgICAgIGNvbnN0IHNlcnZlckRhdGEgPVxuICAgICAgICBhd2FpdCBjcmVhdGVGcm9tTmV4dFJlYWRhYmxlU3RyZWFtPE5hdmlnYXRpb25GbGlnaHRSZXNwb25zZT4oXG4gICAgICAgICAgcHJlZmV0Y2hTdHJlYW0sXG4gICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgICB7IGFsbG93UGFydGlhbFN0cmVhbTogdHJ1ZSB9XG4gICAgICAgIClcblxuICAgICAgaWYgKFxuICAgICAgICAocmVzcG9uc2UuaGVhZGVycy5nZXQoTkVYVF9OQVZfREVQTE9ZTUVOVF9JRF9IRUFERVIpID8/XG4gICAgICAgICAgc2VydmVyRGF0YS5iKSAhPT0gZ2V0TmF2aWdhdGlvbkJ1aWxkSWQoKVxuICAgICAgKSB7XG4gICAgICAgIC8vIFRoZSBzZXJ2ZXIgYnVpbGQgZG9lcyBub3QgbWF0Y2ggdGhlIGNsaWVudC4gVHJlYXQgYXMgYSA0MDQuIER1cmluZ1xuICAgICAgICAvLyBhbiBhY3R1YWwgbmF2aWdhdGlvbiwgdGhlIHJvdXRlciB3aWxsIHRyaWdnZXIgYW4gTVBBIG5hdmlnYXRpb24uXG4gICAgICAgIC8vIFRPRE86IFdlIHNob3VsZCBjYWNoZSB0aGUgZmFjdCB0aGF0IHRoaXMgaXMgYW4gTVBBIG5hdmlnYXRpb24uXG4gICAgICAgIHJlamVjdFJvdXRlQ2FjaGVFbnRyeShlbnRyeSwgRGF0ZS5ub3coKSArIDEwICogMTAwMClcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgLy8gUmVhZCBoZWFkIHZhcnkgcGFyYW1zIHN5bmNocm9ub3VzbHkuIEluZGl2aWR1YWwgc2VnbWVudHMgY2FycnkgdGhlaXJcbiAgICAgIC8vIG93biB0aGVuYWJsZXMgaW4gQ2FjaGVOb2RlU2VlZERhdGEuXG4gICAgICBjb25zdCBoZWFkVmFyeVBhcmFtc1RoZW5hYmxlID0gc2VydmVyRGF0YS5oXG4gICAgICBjb25zdCBoZWFkVmFyeVBhcmFtcyA9XG4gICAgICAgIGhlYWRWYXJ5UGFyYW1zVGhlbmFibGUgIT09IG51bGxcbiAgICAgICAgICA/IHJlYWRWYXJ5UGFyYW1zKGhlYWRWYXJ5UGFyYW1zVGhlbmFibGUpXG4gICAgICAgICAgOiBudWxsXG4gICAgICB3cml0ZUR5bmFtaWNUcmVlUmVzcG9uc2VJbnRvQ2FjaGUoXG4gICAgICAgIERhdGUubm93KCksXG4gICAgICAgIC8vIFRoZSBub24tUFBSIHJlc3BvbnNlIGZvcm1hdCBpcyB3aGF0IHdlJ2QgZ2V0IGlmIHdlIHByZWZldGNoZWQgdGhlc2Ugc2VnbWVudHNcbiAgICAgICAgLy8gdXNpbmcgdGhlIExvYWRpbmdCb3VuZGFyeSBmZXRjaCBzdHJhdGVneSwgc28gbWFyayB0aGVpciBjYWNoZSBlbnRyaWVzIGFjY29yZGluZ2x5LlxuICAgICAgICBGZXRjaFN0cmF0ZWd5LkxvYWRpbmdCb3VuZGFyeSxcbiAgICAgICAgcmVzcG9uc2UgYXMgUlNDUmVzcG9uc2U8TmF2aWdhdGlvbkZsaWdodFJlc3BvbnNlPixcbiAgICAgICAgc2VydmVyRGF0YSxcbiAgICAgICAgZW50cnksXG4gICAgICAgIGNvdWxkQmVJbnRlcmNlcHRlZCxcbiAgICAgICAgY2Fub25pY2FsVXJsLFxuICAgICAgICByb3V0ZUlzUFBSRW5hYmxlZCxcbiAgICAgICAgaGVhZFZhcnlQYXJhbXMsXG4gICAgICAgIHBhdGhuYW1lLFxuICAgICAgICBuZXh0VXJsXG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKCFjb3VsZEJlSW50ZXJjZXB0ZWQpIHtcbiAgICAgIC8vIFRoaXMgcm91dGUgd2lsbCBuZXZlciBiZSBpbnRlcmNlcHRlZC4gU28gd2UgY2FuIHVzZSB0aGlzIGVudHJ5IGZvciBhbGxcbiAgICAgIC8vIHJlcXVlc3RzIHRvIHRoaXMgcm91dGUsIHJlZ2FyZGxlc3Mgb2YgdGhlIE5leHQtVXJsIGhlYWRlci4gVGhpcyB3b3Jrc1xuICAgICAgLy8gYmVjYXVzZSB3aGVuIHJlYWRpbmcgdGhlIGNhY2hlIHdlIGFsd2F5cyBjaGVjayBmb3IgYSB2YWxpZFxuICAgICAgLy8gbm9uLWludGVyY2VwdGVkIGVudHJ5IGZpcnN0LlxuXG4gICAgICAvLyBSZS1rZXkgdGhlIGVudHJ5LiBUaGUgYHNldGAgaW1wbGVtZW50YXRpb24gaGFuZGxlcyByZW1vdmluZyBpdCBmcm9tXG4gICAgICAvLyBpdHMgcHJldmlvdXMgcG9zaXRpb24gaW4gdGhlIGNhY2hlLiBXZSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nIHRvXG4gICAgICAvLyB1cGRhdGUgdGhlIExSVSwgYmVjYXVzZSB0aGUgZW50cnkgaXMgYWxyZWFkeSBpbiBpdC5cbiAgICAgIC8vIFRPRE86IFRyZWF0IHRoaXMgYXMgYW4gdXBzZXJ0IOKAlCBzaG91bGQgY2hlY2sgaWYgYW4gZW50cnkgYWxyZWFkeVxuICAgICAgLy8gZXhpc3RzIGF0IHRoZSBuZXcga2V5cGF0aCwgYW5kIGlmIHNvLCB3aGV0aGVyIHdlIHNob3VsZCBrZWVwIHRoYXRcbiAgICAgIC8vIG9uZSBpbnN0ZWFkLlxuICAgICAgY29uc3QgZnVsZmlsbGVkVmFyeVBhdGg6IFJvdXRlVmFyeVBhdGggPSBnZXRGdWxmaWxsZWRSb3V0ZVZhcnlQYXRoKFxuICAgICAgICBwYXRobmFtZSxcbiAgICAgICAgc2VhcmNoLFxuICAgICAgICBuZXh0VXJsLFxuICAgICAgICBjb3VsZEJlSW50ZXJjZXB0ZWRcbiAgICAgIClcbiAgICAgIGNvbnN0IGlzUmV2YWxpZGF0aW9uID0gZmFsc2VcbiAgICAgIHNldEluQ2FjaGVNYXAocm91dGVDYWNoZU1hcCwgZnVsZmlsbGVkVmFyeVBhdGgsIGVudHJ5LCBpc1JldmFsaWRhdGlvbilcbiAgICB9XG4gICAgLy8gUmV0dXJuIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG5ldHdvcmsgY29ubmVjdGlvbiBjbG9zZXMsIHNvXG4gICAgLy8gdGhlIHNjaGVkdWxlciBjYW4gdHJhY2sgdGhlIG51bWJlciBvZiBjb25jdXJyZW50IG5ldHdvcmsgY29ubmVjdGlvbnMuXG4gICAgcmV0dXJuIHsgdmFsdWU6IG51bGwsIGNsb3NlZDogY2xvc2VkLnByb21pc2UgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIEVpdGhlciB0aGUgY29ubmVjdGlvbiBpdHNlbGYgZmFpbGVkLCBvciBzb21ldGhpbmcgYmFkIGhhcHBlbmVkIHdoaWxlXG4gICAgLy8gZGVjb2RpbmcgdGhlIHJlc3BvbnNlLlxuICAgIHJlamVjdFJvdXRlQ2FjaGVFbnRyeShlbnRyeSwgRGF0ZS5ub3coKSArIDEwICogMTAwMClcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFNlZ21lbnRPbkNhY2hlTWlzcyhcbiAgcm91dGU6IEZ1bGZpbGxlZFJvdXRlQ2FjaGVFbnRyeSxcbiAgc2VnbWVudENhY2hlRW50cnk6IFBlbmRpbmdTZWdtZW50Q2FjaGVFbnRyeSxcbiAgcm91dGVLZXk6IFJvdXRlQ2FjaGVLZXksXG4gIHRyZWU6IFJvdXRlVHJlZVxuKTogUHJvbWlzZTxQcmVmZXRjaFN1YnRhc2tSZXN1bHQ8RnVsZmlsbGVkU2VnbWVudENhY2hlRW50cnk+IHwgbnVsbD4ge1xuICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGFsbG93ZWQgdG8gdXNlIGFzeW5jL2F3YWl0IGJlY2F1c2UgaXQgY29udGFpbnMgdGhlIGFjdHVhbFxuICAvLyBmZXRjaCB0aGF0IGdldHMgaXNzdWVkIG9uIGEgY2FjaGUgbWlzcy4gTm90aWNlIGl0IHdyaXRlcyB0aGUgcmVzdWx0IHRvIHRoZVxuICAvLyBjYWNoZSBlbnRyeSBkaXJlY3RseSwgcmF0aGVyIHRoYW4gcmV0dXJuIGRhdGEgdGhhdCBpcyB0aGVuIHdyaXR0ZW4gYnlcbiAgLy8gdGhlIGNhbGxlci5cbiAgLy9cbiAgLy8gU2VnbWVudCBmZXRjaGVzIGFyZSBub24tYmxvY2tpbmcgc28gd2UgZG9uJ3QgbmVlZCB0byBwaW5nIHRoZSBzY2hlZHVsZXJcbiAgLy8gb24gY29tcGxldGlvbi5cblxuICAvLyBVc2UgdGhlIGNhbm9uaWNhbCBVUkwgdG8gcmVxdWVzdCB0aGUgc2VnbWVudCwgbm90IHRoZSBvcmlnaW5hbCBVUkwuIFRoZXNlXG4gIC8vIGFyZSB1c3VhbGx5IHRoZSBzYW1lLCBidXQgdGhlIGNhbm9uaWNhbCBVUkwgd2lsbCBiZSBkaWZmZXJlbnQgaWYgdGhlIHJvdXRlXG4gIC8vIHRyZWUgcmVzcG9uc2Ugd2FzIHJlZGlyZWN0ZWQuIFRvIGF2b2lkIGFuIGV4dHJhIHdhdGVyZmFsbCBvbiBldmVyeSBzZWdtZW50XG4gIC8vIHJlcXVlc3QsIHdlIHBhc3MgdGhlIHJlZGlyZWN0ZWQgVVJMIGluc3RlYWQgb2YgdGhlIG9yaWdpbmFsIG9uZS5cbiAgY29uc3QgdXJsID0gbmV3IFVSTChyb3V0ZS5jYW5vbmljYWxVcmwsIGxvY2F0aW9uLm9yaWdpbilcbiAgY29uc3QgbmV4dFVybCA9IHJvdXRlS2V5Lm5leHRVcmxcblxuICBjb25zdCByZXF1ZXN0S2V5ID0gdHJlZS5yZXF1ZXN0S2V5XG4gIGNvbnN0IG5vcm1hbGl6ZWRSZXF1ZXN0S2V5ID1cbiAgICByZXF1ZXN0S2V5ID09PSBST09UX1NFR01FTlRfUkVRVUVTVF9LRVlcbiAgICAgID8gLy8gVGhlIHJvb3Qgc2VnbWVudCBpcyBhIHNwZWNpYWwgY2FzZS4gVG8gc2ltcGxpZnkgdGhlIHNlcnZlci1zaWRlXG4gICAgICAgIC8vIGhhbmRsaW5nIG9mIHRoZXNlIHJlcXVlc3RzLCB3ZSBlbmNvZGUgdGhlIHJvb3Qgc2VnbWVudCBwYXRoIGFzXG4gICAgICAgIC8vIGBfaW5kZXhgIGluc3RlYWQgb2YgYXMgYW4gZW1wdHkgc3RyaW5nLiBUaGlzIHNob3VsZCBiZSB0cmVhdGVkIGFzXG4gICAgICAgIC8vIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBhbmQgbm90IGFzIGEgc3RhYmxlIHBhcnQgb2YgdGhlIHByb3RvY29sLlxuICAgICAgICAvLyBJdCBqdXN0IG5lZWRzIHRvIG1hdGNoIHRoZSBlcXVpdmFsZW50IGxvZ2ljIHRoYXQgaGFwcGVucyB3aGVuXG4gICAgICAgIC8vIHByZXJlbmRlcmluZyB0aGUgcmVzcG9uc2VzLiBJdCBzaG91bGQgbm90IGxlYWsgb3V0c2lkZSBvZiBOZXh0LmpzLlxuICAgICAgICAoJy9faW5kZXgnIGFzIFNlZ21lbnRSZXF1ZXN0S2V5KVxuICAgICAgOiByZXF1ZXN0S2V5XG5cbiAgY29uc3QgaGVhZGVyczogUmVxdWVzdEhlYWRlcnMgPSB7XG4gICAgW1JTQ19IRUFERVJdOiAnMScsXG4gICAgW05FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUl06ICcxJyxcbiAgICBbTkVYVF9ST1VURVJfU0VHTUVOVF9QUkVGRVRDSF9IRUFERVJdOiBub3JtYWxpemVkUmVxdWVzdEtleSxcbiAgfVxuICBpZiAobmV4dFVybCAhPT0gbnVsbCkge1xuICAgIGhlYWRlcnNbTkVYVF9VUkxdID0gbmV4dFVybFxuICB9XG4gIC8vIFRlbGwgdGhlIHNlcnZlciB0byBwZXJmb3JtIGEgc3RhdGljIHByZS1yZW5kZXIgZm9yIHRoZSBJbnN0YW50IE5hdmlnYXRpb25cbiAgLy8gVGVzdGluZyBBUEkuIFN0YXRpYyBwcmUtcmVuZGVycyBkb24ndCBub3JtYWxseSBoYXBwZW4gZHVyaW5nIGRldmVsb3BtZW50LlxuICBhZGRJbnN0YW50UHJlZmV0Y2hIZWFkZXJJZkxvY2tlZChoZWFkZXJzKVxuXG4gIGNvbnN0IHJlcXVlc3RVcmwgPSBpc091dHB1dEV4cG9ydE1vZGVcbiAgICA/IC8vIEluIG91dHB1dDogXCJleHBvcnRcIiBtb2RlLCB3ZSBuZWVkIHRvIGFkZCB0aGUgc2VnbWVudCBwYXRoIHRvIHRoZSBVUkwuXG4gICAgICBhZGRTZWdtZW50UGF0aFRvVXJsSW5PdXRwdXRFeHBvcnRNb2RlKHVybCwgbm9ybWFsaXplZFJlcXVlc3RLZXkpXG4gICAgOiB1cmxcbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoUHJlZmV0Y2hSZXNwb25zZShyZXF1ZXN0VXJsLCBoZWFkZXJzKVxuICAgIGlmIChcbiAgICAgICFyZXNwb25zZSB8fFxuICAgICAgIXJlc3BvbnNlLm9rIHx8XG4gICAgICByZXNwb25zZS5zdGF0dXMgPT09IDIwNCB8fCAvLyBDYWNoZSBtaXNzXG4gICAgICAvLyBUaGlzIGNoZWNrcyB3aGV0aGVyIHRoZSByZXNwb25zZSB3YXMgc2VydmVkIGZyb20gdGhlIHBlci1zZWdtZW50IGNhY2hlLFxuICAgICAgLy8gcmF0aGVyIHRoYW4gdGhlIG9sZCBwcmVmZXRjaGluZyBmbG93LiBJZiBpdCBmYWlscywgaXQgaW1wbGllcyB0aGF0IFBQUlxuICAgICAgLy8gaXMgZGlzYWJsZWQgb24gdGhpcyByb3V0ZS4gVGhlb3JldGljYWxseSB0aGlzIHNob3VsZCBuZXZlciBoYXBwZW5cbiAgICAgIC8vIGJlY2F1c2Ugd2Ugb25seSBpc3N1ZSByZXF1ZXN0cyBmb3Igc2VnbWVudHMgb25jZSB3ZSd2ZSB2ZXJpZmllZCB0aGF0XG4gICAgICAvLyB0aGUgcm91dGUgc3VwcG9ydHMgUFBSLlxuICAgICAgKHJlc3BvbnNlLmhlYWRlcnMuZ2V0KE5FWFRfRElEX1BPU1RQT05FX0hFQURFUikgIT09ICcyJyAmJlxuICAgICAgICAvLyBJbiBvdXRwdXQ6IFwiZXhwb3J0XCIgbW9kZSwgd2UgY2FuJ3QgcmVseSBvbiByZXNwb25zZSBoZWFkZXJzLiBCdXQgaWZcbiAgICAgICAgLy8gd2UgcmVjZWl2ZSBhIHdlbGwtZm9ybWVkIHJlc3BvbnNlLCB3ZSBjYW4gYXNzdW1lIGl0J3MgYSBzdGF0aWNcbiAgICAgICAgLy8gcmVzcG9uc2UsIGJlY2F1c2UgYWxsIGRhdGEgaXMgc3RhdGljIGluIHRoaXMgbW9kZS5cbiAgICAgICAgIWlzT3V0cHV0RXhwb3J0TW9kZSkgfHxcbiAgICAgICFyZXNwb25zZS5ib2R5XG4gICAgKSB7XG4gICAgICAvLyBTZXJ2ZXIgcmVzcG9uZGVkIHdpdGggYW4gZXJyb3IsIG9yIHdpdGggYSBtaXNzLiBXZSBzaG91bGQgc3RpbGwgY2FjaGVcbiAgICAgIC8vIHRoZSByZXNwb25zZSwgYnV0IHdlIGNhbiB0cnkgYWdhaW4gYWZ0ZXIgMTAgc2Vjb25kcy5cbiAgICAgIHJlamVjdFNlZ21lbnRDYWNoZUVudHJ5KHNlZ21lbnRDYWNoZUVudHJ5LCBEYXRlLm5vdygpICsgMTAgKiAxMDAwKVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICAvLyBTZWUgVE9ETyBpbiBmZXRjaFJvdXRlT25DYWNoZU1pc3MgYWJvdXQgcmVtb3ZpbmcgYGNsb3NlZGAgZm9yXG4gICAgLy8gYnVmZmVyZWQgcHJlZmV0Y2ggcGF0aHMuXG4gICAgY29uc3QgY2xvc2VkID0gY3JlYXRlUHJvbWlzZVdpdGhSZXNvbHZlcnM8dm9pZD4oKVxuXG4gICAgY29uc3QgeyBzdHJlYW06IHByZWZldGNoU3RyZWFtLCBzaXplOiByZXNwb25zZVNpemUgfSA9XG4gICAgICBhd2FpdCBjcmVhdGVOb25UYXNreVByZWZldGNoUmVzcG9uc2VTdHJlYW0ocmVzcG9uc2UuYm9keSlcbiAgICBjbG9zZWQucmVzb2x2ZSgpXG4gICAgc2V0U2l6ZUluQ2FjaGVNYXAoc2VnbWVudENhY2hlRW50cnksIHJlc3BvbnNlU2l6ZSlcbiAgICBjb25zdCBzZXJ2ZXJEYXRhID0gYXdhaXQgY3JlYXRlRnJvbU5leHRSZWFkYWJsZVN0cmVhbTxTZWdtZW50UHJlZmV0Y2g+KFxuICAgICAgcHJlZmV0Y2hTdHJlYW0sXG4gICAgICBoZWFkZXJzLFxuICAgICAgeyBhbGxvd1BhcnRpYWxTdHJlYW06IHRydWUgfVxuICAgIClcbiAgICBpZiAoXG4gICAgICAocmVzcG9uc2UuaGVhZGVycy5nZXQoTkVYVF9OQVZfREVQTE9ZTUVOVF9JRF9IRUFERVIpID8/XG4gICAgICAgIHNlcnZlckRhdGEuYnVpbGRJZCkgIT09IGdldE5hdmlnYXRpb25CdWlsZElkKClcbiAgICApIHtcbiAgICAgIC8vIFRoZSBzZXJ2ZXIgYnVpbGQgZG9lcyBub3QgbWF0Y2ggdGhlIGNsaWVudC4gVHJlYXQgYXMgYSA0MDQuIER1cmluZ1xuICAgICAgLy8gYW4gYWN0dWFsIG5hdmlnYXRpb24sIHRoZSByb3V0ZXIgd2lsbCB0cmlnZ2VyIGFuIE1QQSBuYXZpZ2F0aW9uLlxuICAgICAgcmVqZWN0U2VnbWVudENhY2hlRW50cnkoc2VnbWVudENhY2hlRW50cnksIERhdGUubm93KCkgKyAxMCAqIDEwMDApXG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpXG4gICAgY29uc3Qgc3RhbGVBdCA9IG5vdyArIGdldFN0YWxlVGltZU1zKHNlcnZlckRhdGEuc3RhbGVUaW1lKVxuICAgIGNvbnN0IGZ1bGZpbGxlZEVudHJ5ID0gZnVsZmlsbFNlZ21lbnRDYWNoZUVudHJ5KFxuICAgICAgc2VnbWVudENhY2hlRW50cnksXG4gICAgICBzZXJ2ZXJEYXRhLnJzYyxcbiAgICAgIHN0YWxlQXQsXG4gICAgICBzZXJ2ZXJEYXRhLmlzUGFydGlhbFxuICAgIClcblxuICAgIC8vIElmIHRoZSBzZXJ2ZXIgdGVsbHMgdXMgd2hpY2ggcGFyYW1zIHRoZSBzZWdtZW50IHZhcmllcyBieSwgd2UgY2FuIHJlLWtleVxuICAgIC8vIHRoZSBlbnRyeSB0byBhIG1vcmUgZ2VuZXJpYyB2YXJ5IHBhdGguIFRoaXMgYWxsb3dzIHRoZSBlbnRyeSB0byBiZSByZXVzZWRcbiAgICAvLyBhY3Jvc3MgZGlmZmVyZW50IHBhcmFtIHZhbHVlcyBmb3IgcGFyYW1zIHRoYXQgdGhlIHNlZ21lbnQgZG9lc24ndFxuICAgIC8vIGFjdHVhbGx5IGRlcGVuZCBvbi5cbiAgICBjb25zdCB2YXJ5UGFyYW1zID0gc2VydmVyRGF0YS52YXJ5UGFyYW1zXG4gICAgY29uc3QgZnVsZmlsbGVkVmFyeVBhdGggPVxuICAgICAgcHJvY2Vzcy5lbnYuX19ORVhUX1ZBUllfUEFSQU1TICYmIHZhcnlQYXJhbXMgIT09IG51bGxcbiAgICAgICAgPyBnZXRGdWxmaWxsZWRTZWdtZW50VmFyeVBhdGgodHJlZS52YXJ5UGF0aCwgdmFyeVBhcmFtcylcbiAgICAgICAgOiBnZXRTZWdtZW50VmFyeVBhdGhGb3JSZXF1ZXN0KHNlZ21lbnRDYWNoZUVudHJ5LmZldGNoU3RyYXRlZ3ksIHRyZWUpXG4gICAgLy8gUmUta2V5IGFuZCB1cHNlcnQgdGhlIGVudHJ5IGF0IHRoZSBmdWxmaWxsZWQgdmFyeSBwYXRoLiBUaGlzIGVuc3VyZXNcbiAgICAvLyB0aGUgZW50cnkgaXMgc3RvcmVkIGF0IHRoZSBtb3N0IGdlbmVyaWMgcGF0aCBwb3NzaWJsZSBiYXNlZCBvbiB3aGljaFxuICAgIC8vIHBhcmFtcyB0aGUgc2VnbWVudCBhY3R1YWxseSBkZXBlbmRzIG9uLlxuICAgIHVwc2VydFNlZ21lbnRFbnRyeShub3csIGZ1bGZpbGxlZFZhcnlQYXRoLCBmdWxmaWxsZWRFbnRyeSlcblxuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogZnVsZmlsbGVkRW50cnksXG4gICAgICAvLyBSZXR1cm4gYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbmV0d29yayBjb25uZWN0aW9uIGNsb3Nlcywgc29cbiAgICAgIC8vIHRoZSBzY2hlZHVsZXIgY2FuIHRyYWNrIHRoZSBudW1iZXIgb2YgY29uY3VycmVudCBuZXR3b3JrIGNvbm5lY3Rpb25zLlxuICAgICAgY2xvc2VkOiBjbG9zZWQucHJvbWlzZSxcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgLy8gRWl0aGVyIHRoZSBjb25uZWN0aW9uIGl0c2VsZiBmYWlsZWQsIG9yIHNvbWV0aGluZyBiYWQgaGFwcGVuZWQgd2hpbGVcbiAgICAvLyBkZWNvZGluZyB0aGUgcmVzcG9uc2UuXG4gICAgcmVqZWN0U2VnbWVudENhY2hlRW50cnkoc2VnbWVudENhY2hlRW50cnksIERhdGUubm93KCkgKyAxMCAqIDEwMDApXG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG4vLyBUT0RPOiBUaGUgaW5saW5lZCBwcmVmZXRjaCBmbG93IGJlbG93IGlzIHRlbXBvcmFyeS4gRXZlbnR1YWxseSwgaW5saW5pbmdcbi8vIHdpbGwgYmUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgY29udHJvbGxlZCBieSBhIHNpemUgaGV1cmlzdGljIHJhdGhlciB0aGFuIGFcbi8vIGJvb2xlYW4gZmxhZy4gQXQgdGhhdCBwb2ludCwgdGhlIHBlci1zZWdtZW50IGFuZCBpbmxpbmVkIGZldGNoIHBhdGhzIHdpbGxcbi8vIG1lcmdlLCBhbmQgdGhlc2Ugc2VwYXJhdGUgZnVuY3Rpb25zIHdpbGwgYmUgcmVtb3ZlZC5cbi8vXG4vLyBUaGUgY2FsbCBzaXRlIGluIHRoZSBzY2hlZHVsZXIgaXMgZ3VhcmRlZCBieVxuLy8gcHJvY2Vzcy5lbnYuX19ORVhUX1BSRUZFVENIX0lOTElOSU5HLCBzbyB0aGVzZSBmdW5jdGlvbnMgYXJlXG4vLyBkZWFkLWNvZGUtZWxpbWluYXRlZCBmcm9tIHRoZSBjbGllbnQgYnVuZGxlIHdoZW4gdGhlIGZlYXR1cmUgaXMgZGlzYWJsZWQuXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaElubGluZWRTZWdtZW50c09uQ2FjaGVNaXNzKFxuICByb3V0ZTogRnVsZmlsbGVkUm91dGVDYWNoZUVudHJ5LFxuICByb3V0ZUtleTogUm91dGVDYWNoZUtleSxcbiAgdHJlZTogUm91dGVUcmVlLFxuICBzcGF3bmVkRW50cmllczogTWFwPFNlZ21lbnRSZXF1ZXN0S2V5LCBQZW5kaW5nU2VnbWVudENhY2hlRW50cnk+XG4pOiBQcm9taXNlPFByZWZldGNoU3VidGFza1Jlc3VsdDxudWxsPiB8IG51bGw+IHtcbiAgLy8gV2hlbiBwcmVmZXRjaCBpbmxpbmluZyBpcyBlbmFibGVkLCBhbGwgc2VnbWVudCBkYXRhIGZvciBhIHJvdXRlIGlzIGJ1bmRsZWRcbiAgLy8gaW50byBhIHNpbmdsZSAvX2lubGluZWQgcmVzcG9uc2UgaW5zdGVhZCBvZiBpbmRpdmlkdWFsIHBlci1zZWdtZW50XG4gIC8vIHJlcXVlc3RzLiBUaGlzIGZ1bmN0aW9uIGZldGNoZXMgdGhhdCByZXNwb25zZSBhbmQgd2Fsa3MgdGhlIHRyZWUgdG8gZmlsbFxuICAvLyBhbGwgc2VnbWVudCBjYWNoZSBlbnRyaWVzIGF0IG9uY2UuXG4gIGNvbnN0IHVybCA9IG5ldyBVUkwocm91dGUuY2Fub25pY2FsVXJsLCBsb2NhdGlvbi5vcmlnaW4pXG4gIGNvbnN0IG5leHRVcmwgPSByb3V0ZUtleS5uZXh0VXJsXG5cbiAgY29uc3QgaGVhZGVyczogUmVxdWVzdEhlYWRlcnMgPSB7XG4gICAgW1JTQ19IRUFERVJdOiAnMScsXG4gICAgW05FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUl06ICcxJyxcbiAgICBbTkVYVF9ST1VURVJfU0VHTUVOVF9QUkVGRVRDSF9IRUFERVJdOiAnLycgKyBQQUdFX1NFR01FTlRfS0VZLFxuICB9XG4gIGlmIChuZXh0VXJsICE9PSBudWxsKSB7XG4gICAgaGVhZGVyc1tORVhUX1VSTF0gPSBuZXh0VXJsXG4gIH1cbiAgYWRkSW5zdGFudFByZWZldGNoSGVhZGVySWZMb2NrZWQoaGVhZGVycylcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hQcmVmZXRjaFJlc3BvbnNlKHVybCwgaGVhZGVycylcbiAgICBpZiAoXG4gICAgICAhcmVzcG9uc2UgfHxcbiAgICAgICFyZXNwb25zZS5vayB8fFxuICAgICAgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDQgfHxcbiAgICAgIChyZXNwb25zZS5oZWFkZXJzLmdldChORVhUX0RJRF9QT1NUUE9ORV9IRUFERVIpICE9PSAnMicgJiZcbiAgICAgICAgIWlzT3V0cHV0RXhwb3J0TW9kZSkgfHxcbiAgICAgICFyZXNwb25zZS5ib2R5XG4gICAgKSB7XG4gICAgICByZWplY3RTZWdtZW50RW50cmllc0lmU3RpbGxQZW5kaW5nKHNwYXduZWRFbnRyaWVzLCBEYXRlLm5vdygpICsgMTAgKiAxMDAwKVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICAvLyBTZWUgVE9ETyBpbiBmZXRjaFJvdXRlT25DYWNoZU1pc3MgYWJvdXQgcmVtb3ZpbmcgYGNsb3NlZGAgZm9yXG4gICAgLy8gYnVmZmVyZWQgcHJlZmV0Y2ggcGF0aHMuXG4gICAgY29uc3QgY2xvc2VkID0gY3JlYXRlUHJvbWlzZVdpdGhSZXNvbHZlcnM8dm9pZD4oKVxuXG4gICAgY29uc3QgeyBzdHJlYW06IHByZWZldGNoU3RyZWFtIH0gPVxuICAgICAgYXdhaXQgY3JlYXRlTm9uVGFza3lQcmVmZXRjaFJlc3BvbnNlU3RyZWFtKHJlc3BvbnNlLmJvZHkpXG4gICAgY2xvc2VkLnJlc29sdmUoKVxuICAgIGNvbnN0IHNlcnZlckRhdGEgPVxuICAgICAgYXdhaXQgY3JlYXRlRnJvbU5leHRSZWFkYWJsZVN0cmVhbTxJbmxpbmVkUHJlZmV0Y2hSZXNwb25zZT4oXG4gICAgICAgIHByZWZldGNoU3RyZWFtLFxuICAgICAgICBoZWFkZXJzLFxuICAgICAgICB7IGFsbG93UGFydGlhbFN0cmVhbTogdHJ1ZSB9XG4gICAgICApXG5cbiAgICBpZiAoXG4gICAgICAocmVzcG9uc2UuaGVhZGVycy5nZXQoTkVYVF9OQVZfREVQTE9ZTUVOVF9JRF9IRUFERVIpID8/XG4gICAgICAgIHNlcnZlckRhdGEudHJlZS5zZWdtZW50LmJ1aWxkSWQpICE9PSBnZXROYXZpZ2F0aW9uQnVpbGRJZCgpXG4gICAgKSB7XG4gICAgICByZWplY3RTZWdtZW50RW50cmllc0lmU3RpbGxQZW5kaW5nKHNwYXduZWRFbnRyaWVzLCBEYXRlLm5vdygpICsgMTAgKiAxMDAwKVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpXG5cbiAgICAvLyBXYWxrIHRoZSBpbmxpbmVkIHRyZWUgaW4gcGFyYWxsZWwgd2l0aCB0aGUgUm91dGVUcmVlIGFuZCBmaWxsXG4gICAgLy8gc2VnbWVudCBjYWNoZSBlbnRyaWVzLlxuICAgIGZpbGxJbmxpbmVkU2VnbWVudEVudHJpZXMobm93LCByb3V0ZSwgdHJlZSwgc2VydmVyRGF0YS50cmVlLCBzcGF3bmVkRW50cmllcylcblxuICAgIC8vIEZpbGwgdGhlIGhlYWQgZW50cnkuXG4gICAgY29uc3QgaGVhZFN0YWxlQXQgPSBub3cgKyBnZXRTdGFsZVRpbWVNcyhzZXJ2ZXJEYXRhLmhlYWQuc3RhbGVUaW1lKVxuICAgIGNvbnN0IGhlYWRLZXkgPSByb3V0ZS5tZXRhZGF0YS5yZXF1ZXN0S2V5XG4gICAgY29uc3Qgb3duZWRIZWFkRW50cnkgPSBzcGF3bmVkRW50cmllcy5nZXQoaGVhZEtleSlcbiAgICBpZiAob3duZWRIZWFkRW50cnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZnVsZmlsbFNlZ21lbnRDYWNoZUVudHJ5KFxuICAgICAgICBvd25lZEhlYWRFbnRyeSxcbiAgICAgICAgc2VydmVyRGF0YS5oZWFkLnJzYyxcbiAgICAgICAgaGVhZFN0YWxlQXQsXG4gICAgICAgIHNlcnZlckRhdGEuaGVhZC5pc1BhcnRpYWxcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhlIGhlYWQgd2FzIGFscmVhZHkgY2FjaGVkLiBUcnkgdG8gdXBzZXJ0IGlmIHRoZSBlbnRyeSBpcyBlbXB0eS5cbiAgICAgIGNvbnN0IGV4aXN0aW5nRW50cnkgPSByZWFkT3JDcmVhdGVTZWdtZW50Q2FjaGVFbnRyeShcbiAgICAgICAgbm93LFxuICAgICAgICBGZXRjaFN0cmF0ZWd5LlBQUixcbiAgICAgICAgcm91dGUubWV0YWRhdGFcbiAgICAgIClcbiAgICAgIGlmIChleGlzdGluZ0VudHJ5LnN0YXR1cyA9PT0gRW50cnlTdGF0dXMuRW1wdHkpIHtcbiAgICAgICAgZnVsZmlsbFNlZ21lbnRDYWNoZUVudHJ5KFxuICAgICAgICAgIHVwZ3JhZGVUb1BlbmRpbmdTZWdtZW50KGV4aXN0aW5nRW50cnksIEZldGNoU3RyYXRlZ3kuUFBSKSxcbiAgICAgICAgICBzZXJ2ZXJEYXRhLmhlYWQucnNjLFxuICAgICAgICAgIGhlYWRTdGFsZUF0LFxuICAgICAgICAgIHNlcnZlckRhdGEuaGVhZC5pc1BhcnRpYWxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlamVjdCBhbnkgcmVtYWluaW5nIGVudHJpZXMgdGhhdCB3ZXJlIG5vdCBmdWxmaWxsZWQgYnkgdGhlIHJlc3BvbnNlLlxuICAgIHJlamVjdFNlZ21lbnRFbnRyaWVzSWZTdGlsbFBlbmRpbmcoc3Bhd25lZEVudHJpZXMsIERhdGUubm93KCkgKyAxMCAqIDEwMDApXG5cbiAgICByZXR1cm4geyB2YWx1ZTogbnVsbCwgY2xvc2VkOiBjbG9zZWQucHJvbWlzZSB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmVqZWN0U2VnbWVudEVudHJpZXNJZlN0aWxsUGVuZGluZyhzcGF3bmVkRW50cmllcywgRGF0ZS5ub3coKSArIDEwICogMTAwMClcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmZ1bmN0aW9uIGZpbGxJbmxpbmVkU2VnbWVudEVudHJpZXMoXG4gIG5vdzogbnVtYmVyLFxuICByb3V0ZTogRnVsZmlsbGVkUm91dGVDYWNoZUVudHJ5LFxuICB0cmVlOiBSb3V0ZVRyZWUsXG4gIGlubGluZWROb2RlOiBJbmxpbmVkU2VnbWVudFByZWZldGNoLFxuICBzcGF3bmVkRW50cmllczogTWFwPFNlZ21lbnRSZXF1ZXN0S2V5LCBQZW5kaW5nU2VnbWVudENhY2hlRW50cnk+XG4pOiB2b2lkIHtcbiAgLy8gQ2hlY2sgaWYgdGhlIHNwYXduZWQgZW50cmllcyBtYXAgaGFzIGFuIGVudHJ5IGZvciB0aGlzIHNlZ21lbnQncyBrZXkuXG4gIGNvbnN0IHNlZ21lbnQgPSBpbmxpbmVkTm9kZS5zZWdtZW50XG4gIGNvbnN0IHN0YWxlQXQgPSBub3cgKyBnZXRTdGFsZVRpbWVNcyhzZWdtZW50LnN0YWxlVGltZSlcbiAgY29uc3Qgb3duZWRFbnRyeSA9IHNwYXduZWRFbnRyaWVzLmdldCh0cmVlLnJlcXVlc3RLZXkpXG4gIGlmIChvd25lZEVudHJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAvLyBXZSBvd24gdGhpcyBlbnRyeS4gRnVsZmlsbCBpdCBkaXJlY3RseS5cbiAgICBmdWxmaWxsU2VnbWVudENhY2hlRW50cnkoXG4gICAgICBvd25lZEVudHJ5LFxuICAgICAgc2VnbWVudC5yc2MsXG4gICAgICBzdGFsZUF0LFxuICAgICAgc2VnbWVudC5pc1BhcnRpYWxcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgLy8gTm90IG93bmVkIGJ5IHVzIOKAlCB0aGlzIGlzIGV4dHJhIGRhdGEgZnJvbSB0aGUgaW5saW5lZCByZXNwb25zZSBmb3IgYVxuICAgIC8vIHNlZ21lbnQgdGhhdCB3YXMgYWxyZWFkeSBjYWNoZWQuIFRyeSB0byB1cHNlcnQgaWYgdGhlIGVudHJ5IGlzIGVtcHR5LlxuICAgIGNvbnN0IGV4aXN0aW5nRW50cnkgPSByZWFkT3JDcmVhdGVTZWdtZW50Q2FjaGVFbnRyeShcbiAgICAgIG5vdyxcbiAgICAgIEZldGNoU3RyYXRlZ3kuUFBSLFxuICAgICAgdHJlZVxuICAgIClcbiAgICBpZiAoZXhpc3RpbmdFbnRyeS5zdGF0dXMgPT09IEVudHJ5U3RhdHVzLkVtcHR5KSB7XG4gICAgICBmdWxmaWxsU2VnbWVudENhY2hlRW50cnkoXG4gICAgICAgIHVwZ3JhZGVUb1BlbmRpbmdTZWdtZW50KGV4aXN0aW5nRW50cnksIEZldGNoU3RyYXRlZ3kuUFBSKSxcbiAgICAgICAgc2VnbWVudC5yc2MsXG4gICAgICAgIHN0YWxlQXQsXG4gICAgICAgIHNlZ21lbnQuaXNQYXJ0aWFsXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgLy8gUmVjdXJzZSBpbnRvIGNoaWxkcmVuLlxuICBpZiAodHJlZS5zbG90cyAhPT0gbnVsbCAmJiBpbmxpbmVkTm9kZS5zbG90cyAhPT0gbnVsbCkge1xuICAgIGZvciAoY29uc3QgcGFyYWxsZWxSb3V0ZUtleSBpbiB0cmVlLnNsb3RzKSB7XG4gICAgICBjb25zdCBjaGlsZFRyZWUgPSB0cmVlLnNsb3RzW3BhcmFsbGVsUm91dGVLZXldXG4gICAgICBjb25zdCBjaGlsZElubGluZWROb2RlID0gaW5saW5lZE5vZGUuc2xvdHNbcGFyYWxsZWxSb3V0ZUtleV1cbiAgICAgIGlmIChjaGlsZElubGluZWROb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZmlsbElubGluZWRTZWdtZW50RW50cmllcyhcbiAgICAgICAgICBub3csXG4gICAgICAgICAgcm91dGUsXG4gICAgICAgICAgY2hpbGRUcmVlLFxuICAgICAgICAgIGNoaWxkSW5saW5lZE5vZGUsXG4gICAgICAgICAgc3Bhd25lZEVudHJpZXNcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hTZWdtZW50UHJlZmV0Y2hlc1VzaW5nRHluYW1pY1JlcXVlc3QoXG4gIHRhc2s6IFByZWZldGNoVGFzayxcbiAgcm91dGU6IEZ1bGZpbGxlZFJvdXRlQ2FjaGVFbnRyeSxcbiAgZmV0Y2hTdHJhdGVneTpcbiAgICB8IEZldGNoU3RyYXRlZ3kuTG9hZGluZ0JvdW5kYXJ5XG4gICAgfCBGZXRjaFN0cmF0ZWd5LlBQUlJ1bnRpbWVcbiAgICB8IEZldGNoU3RyYXRlZ3kuRnVsbCxcbiAgZHluYW1pY1JlcXVlc3RUcmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgc3Bhd25lZEVudHJpZXM6IE1hcDxTZWdtZW50UmVxdWVzdEtleSwgUGVuZGluZ1NlZ21lbnRDYWNoZUVudHJ5PlxuKTogUHJvbWlzZTxQcmVmZXRjaFN1YnRhc2tSZXN1bHQ8bnVsbD4gfCBudWxsPiB7XG4gIGNvbnN0IGtleSA9IHRhc2sua2V5XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwocm91dGUuY2Fub25pY2FsVXJsLCBsb2NhdGlvbi5vcmlnaW4pXG4gIGNvbnN0IG5leHRVcmwgPSBrZXkubmV4dFVybFxuXG4gIGlmIChcbiAgICBzcGF3bmVkRW50cmllcy5zaXplID09PSAxICYmXG4gICAgc3Bhd25lZEVudHJpZXMuaGFzKHJvdXRlLm1ldGFkYXRhLnJlcXVlc3RLZXkpXG4gICkge1xuICAgIC8vIFRoZSBvbmx5IHRoaW5nIHBlbmRpbmcgaXMgdGhlIGhlYWQuIEluc3RydWN0IHRoZSBzZXJ2ZXIgdG9cbiAgICAvLyBza2lwIG92ZXIgZXZlcnl0aGluZyBlbHNlLlxuICAgIGR5bmFtaWNSZXF1ZXN0VHJlZSA9IE1ldGFkYXRhT25seVJlcXVlc3RUcmVlXG4gIH1cblxuICBjb25zdCBoZWFkZXJzOiBSZXF1ZXN0SGVhZGVycyA9IHtcbiAgICBbUlNDX0hFQURFUl06ICcxJyxcbiAgICBbTkVYVF9ST1VURVJfU1RBVEVfVFJFRV9IRUFERVJdOlxuICAgICAgcHJlcGFyZUZsaWdodFJvdXRlclN0YXRlRm9yUmVxdWVzdChkeW5hbWljUmVxdWVzdFRyZWUpLFxuICB9XG4gIGlmIChuZXh0VXJsICE9PSBudWxsKSB7XG4gICAgaGVhZGVyc1tORVhUX1VSTF0gPSBuZXh0VXJsXG4gIH1cbiAgc3dpdGNoIChmZXRjaFN0cmF0ZWd5KSB7XG4gICAgY2FzZSBGZXRjaFN0cmF0ZWd5LkZ1bGw6IHtcbiAgICAgIC8vIFdlIG9taXQgdGhlIHByZWZldGNoIGhlYWRlciBmcm9tIGEgZnVsbCBwcmVmZXRjaCBiZWNhdXNlIGl0J3MgZXNzZW50aWFsbHlcbiAgICAgIC8vIGp1c3QgYSBuYXZpZ2F0aW9uIHJlcXVlc3QgdGhhdCBoYXBwZW5zIGFoZWFkIG9mIHRpbWUg4oCUIGl0IHNob3VsZCBpbmNsdWRlXG4gICAgICAvLyBhbGwgdGhlIHNhbWUgZGF0YSBpbiB0aGUgcmVzcG9uc2UuXG4gICAgICBicmVha1xuICAgIH1cbiAgICBjYXNlIEZldGNoU3RyYXRlZ3kuUFBSUnVudGltZToge1xuICAgICAgaGVhZGVyc1tORVhUX1JPVVRFUl9QUkVGRVRDSF9IRUFERVJdID0gJzInXG4gICAgICBicmVha1xuICAgIH1cbiAgICBjYXNlIEZldGNoU3RyYXRlZ3kuTG9hZGluZ0JvdW5kYXJ5OiB7XG4gICAgICBoZWFkZXJzW05FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUl0gPSAnMSdcbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGZldGNoU3RyYXRlZ3kgc2F0aXNmaWVzIG5ldmVyXG4gICAgfVxuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoUHJlZmV0Y2hSZXNwb25zZSh1cmwsIGhlYWRlcnMpXG4gICAgaWYgKCFyZXNwb25zZSB8fCAhcmVzcG9uc2Uub2sgfHwgIXJlc3BvbnNlLmJvZHkpIHtcbiAgICAgIC8vIFNlcnZlciByZXNwb25kZWQgd2l0aCBhbiBlcnJvciwgb3Igd2l0aCBhIG1pc3MuIFdlIHNob3VsZCBzdGlsbCBjYWNoZVxuICAgICAgLy8gdGhlIHJlc3BvbnNlLCBidXQgd2UgY2FuIHRyeSBhZ2FpbiBhZnRlciAxMCBzZWNvbmRzLlxuICAgICAgcmVqZWN0U2VnbWVudEVudHJpZXNJZlN0aWxsUGVuZGluZyhzcGF3bmVkRW50cmllcywgRGF0ZS5ub3coKSArIDEwICogMTAwMClcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgcmVuZGVyZWRTZWFyY2ggPSBnZXRSZW5kZXJlZFNlYXJjaChyZXNwb25zZSlcbiAgICBpZiAocmVuZGVyZWRTZWFyY2ggIT09IHJvdXRlLnJlbmRlcmVkU2VhcmNoKSB7XG4gICAgICAvLyBUaGUgc2VhcmNoIHBhcmFtcyB0aGF0IHdlcmUgdXNlZCB0byByZW5kZXIgdGhlIHRhcmdldCBwYWdlIGFyZVxuICAgICAgLy8gZGlmZmVyZW50IGZyb20gdGhlIHNlYXJjaCBwYXJhbXMgaW4gdGhlIHJlcXVlc3QgVVJMLiBUaGlzIG9ubHkgaGFwcGVuc1xuICAgICAgLy8gd2hlbiB0aGVyZSdzIGEgZHluYW1pYyByZXdyaXRlIGluIGJldHdlZW4gdGhlIHRyZWUgcHJlZmV0Y2ggYW5kIHRoZVxuICAgICAgLy8gZGF0YSBwcmVmZXRjaC5cbiAgICAgIC8vIFRPRE86IEZvciBub3csIHNpbmNlIHRoaXMgaXMgYW4gZWRnZSBjYXNlLCB3ZSByZWplY3QgdGhlIHByZWZldGNoLCBidXRcbiAgICAgIC8vIHRoZSBwcm9wZXIgd2F5IHRvIGhhbmRsZSB0aGlzIGlzIHRvIGV2aWN0IHRoZSBzdGFsZSByb3V0ZSB0cmVlIGVudHJ5XG4gICAgICAvLyB0aGVuIGZpbGwgdGhlIGNhY2hlIHdpdGggdGhlIG5ldyByZXNwb25zZS5cbiAgICAgIHJlamVjdFNlZ21lbnRFbnRyaWVzSWZTdGlsbFBlbmRpbmcoc3Bhd25lZEVudHJpZXMsIERhdGUubm93KCkgKyAxMCAqIDEwMDApXG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIC8vIFRyYWNrIHdoZW4gdGhlIG5ldHdvcmsgY29ubmVjdGlvbiBjbG9zZXMuIE9ubHkgbWVhbmluZ2Z1bCBmb3IgRnVsbFxuICAgIC8vIChkeW5hbWljKSBwcmVmZXRjaGVzIHdoaWNoIHVzZSBpbmNyZW1lbnRhbCBzdHJlYW1pbmcuIEZvciBidWZmZXJlZFxuICAgIC8vIHBhdGhzLCB0aGlzIGlzIHJlc29sdmVkIGltbWVkaWF0ZWx5IOKAlCBzZWUgVE9ETyBpbiBmZXRjaFJvdXRlT25DYWNoZU1pc3MuXG4gICAgY29uc3QgY2xvc2VkID0gY3JlYXRlUHJvbWlzZVdpdGhSZXNvbHZlcnM8dm9pZD4oKVxuXG4gICAgbGV0IGZ1bGZpbGxlZEVudHJpZXM6IEFycmF5PEZ1bGZpbGxlZFNlZ21lbnRDYWNoZUVudHJ5PiB8IG51bGwgPSBudWxsXG4gICAgbGV0IHByZWZldGNoU3RyZWFtOiBSZWFkYWJsZVN0cmVhbTxVaW50OEFycmF5PlxuICAgIGxldCBidWZmZXJlZFJlc3BvbnNlU2l6ZTogbnVtYmVyIHwgbnVsbCA9IG51bGxcbiAgICBpZiAoZmV0Y2hTdHJhdGVneSA9PT0gRmV0Y2hTdHJhdGVneS5GdWxsKSB7XG4gICAgICAvLyBGdWxsIHByZWZldGNoZXMgYXJlIGR5bmFtaWMgcmVzcG9uc2VzIHN0b3JlZCBpbiB0aGUgcHJlZmV0Y2ggY2FjaGUuXG4gICAgICAvLyBUaGV5IGRvbid0IGNhcnJ5IHZhcnkgcGFyYW1zIG9yIG90aGVyIGNhY2hlIG1ldGFkYXRhLCBzbyB0aGVyZSdzIG5vXG4gICAgICAvLyBuZWVkIHRvIGJ1ZmZlciB0aGVtLiBVc2UgdGhlIGluY3JlbWVudGFsIHZlcnNpb24gdG8gYWxsb3cgZGF0YSB0byBiZVxuICAgICAgLy8gcHJvY2Vzc2VkIGFzIGl0IGFycml2ZXMuXG4gICAgICBwcmVmZXRjaFN0cmVhbSA9IGNyZWF0ZUluY3JlbWVudGFsUHJlZmV0Y2hSZXNwb25zZVN0cmVhbShcbiAgICAgICAgcmVzcG9uc2UuYm9keSxcbiAgICAgICAgY2xvc2VkLnJlc29sdmUsXG4gICAgICAgIGZ1bmN0aW9uIG9uUmVzcG9uc2VTaXplVXBkYXRlKHRvdGFsQnl0ZXNSZWNlaXZlZFNvRmFyKSB7XG4gICAgICAgICAgLy8gV2hlbiBwcm9jZXNzaW5nIGEgZHluYW1pYyByZXNwb25zZSwgd2UgZG9uJ3Qga25vdyBob3cgbGFyZ2UgZWFjaFxuICAgICAgICAgIC8vIGluZGl2aWR1YWwgc2VnbWVudCBpcywgc28gYXBwcm94aW1hdGUgYnkgYXNzaWduaW5nIGVhY2ggc2VnbWVudFxuICAgICAgICAgIC8vIHRoZSBhdmVyYWdlIG9mIHRoZSB0b3RhbCByZXNwb25zZSBzaXplLlxuICAgICAgICAgIGlmIChmdWxmaWxsZWRFbnRyaWVzID09PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBIYXZlbid0IHJlY2VpdmVkIGVub3VnaCBkYXRhIHlldCB0byBrbm93IHdoaWNoIHNlZ21lbnRzXG4gICAgICAgICAgICAvLyB3ZXJlIGluY2x1ZGVkLlxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGF2ZXJhZ2VTaXplID0gdG90YWxCeXRlc1JlY2VpdmVkU29GYXIgLyBmdWxmaWxsZWRFbnRyaWVzLmxlbmd0aFxuICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZnVsZmlsbGVkRW50cmllcykge1xuICAgICAgICAgICAgc2V0U2l6ZUluQ2FjaGVNYXAoZW50cnksIGF2ZXJhZ2VTaXplKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB7IHN0cmVhbSwgc2l6ZSB9ID0gYXdhaXQgY3JlYXRlTm9uVGFza3lQcmVmZXRjaFJlc3BvbnNlU3RyZWFtKFxuICAgICAgICByZXNwb25zZS5ib2R5XG4gICAgICApXG4gICAgICBjbG9zZWQucmVzb2x2ZSgpXG4gICAgICBwcmVmZXRjaFN0cmVhbSA9IHN0cmVhbVxuICAgICAgYnVmZmVyZWRSZXNwb25zZVNpemUgPSBzaXplXG4gICAgfVxuXG4gICAgY29uc3QgW3NlcnZlckRhdGEsIGNhY2hlRGF0YV0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICBjcmVhdGVGcm9tTmV4dFJlYWRhYmxlU3RyZWFtPE5hdmlnYXRpb25GbGlnaHRSZXNwb25zZT4oXG4gICAgICAgIHByZWZldGNoU3RyZWFtLFxuICAgICAgICBoZWFkZXJzLFxuICAgICAgICB7IGFsbG93UGFydGlhbFN0cmVhbTogdHJ1ZSB9XG4gICAgICApLFxuICAgICAgcmVzcG9uc2UuY2FjaGVEYXRhLFxuICAgIF0pXG5cbiAgICAvLyBSZWFkIGhlYWQgdmFyeSBwYXJhbXMgc3luY2hyb25vdXNseS4gSW5kaXZpZHVhbCBzZWdtZW50cyBjYXJyeSB0aGVpclxuICAgIC8vIG93biB0aGVuYWJsZXMgaW4gQ2FjaGVOb2RlU2VlZERhdGEuXG4gICAgY29uc3QgaGVhZFZhcnlQYXJhbXNUaGVuYWJsZSA9IHNlcnZlckRhdGEuaFxuICAgIGNvbnN0IGhlYWRWYXJ5UGFyYW1zID1cbiAgICAgIGhlYWRWYXJ5UGFyYW1zVGhlbmFibGUgIT09IG51bGxcbiAgICAgICAgPyByZWFkVmFyeVBhcmFtcyhoZWFkVmFyeVBhcmFtc1RoZW5hYmxlKVxuICAgICAgICA6IG51bGxcblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KClcbiAgICBjb25zdCBzdGFsZUF0ID0gYXdhaXQgZ2V0U3RhbGVBdChub3csIHNlcnZlckRhdGEucywgcmVzcG9uc2UpXG4gICAgLy8gUFBSUnVudGltZSBwcmVmZXRjaGVzIGFyZSBwYXJ0aWFsIHdoZW4gdGhlIHNlcnZlciBtYXJrcyB0aGUgcmVzcG9uc2VcbiAgICAvLyBhcyAnficgKFBhcnRpYWwpLiBGdWxsL0xvYWRpbmdCb3VuZGFyeSBwcmVmZXRjaGVzIGFyZSBhbHdheXMgY29tcGxldGUuXG4gICAgY29uc3QgaXNSZXNwb25zZVBhcnRpYWwgPVxuICAgICAgZmV0Y2hTdHJhdGVneSA9PT0gRmV0Y2hTdHJhdGVneS5QUFJSdW50aW1lICYmXG4gICAgICAoY2FjaGVEYXRhPy5pc1Jlc3BvbnNlUGFydGlhbCA/PyBmYWxzZSlcblxuICAgIC8vIEFzaWRlIGZyb20gd3JpdGluZyB0aGUgZGF0YSBpbnRvIHRoZSBjYWNoZSwgdGhpcyBmdW5jdGlvbiBhbHNvIHJldHVybnNcbiAgICAvLyB0aGUgZW50cmllcyB0aGF0IHdlcmUgZnVsZmlsbGVkLCBzbyB3ZSBjYW4gc3RyZWFtaW5nbHkgdXBkYXRlIHRoZWlyIHNpemVzXG4gICAgLy8gaW4gdGhlIExSVSBhcyBtb3JlIGRhdGEgY29tZXMgaW4uXG4gICAgY29uc3QgYnVpbGRJZCA9XG4gICAgICByZXNwb25zZS5oZWFkZXJzLmdldChORVhUX05BVl9ERVBMT1lNRU5UX0lEX0hFQURFUikgPz8gc2VydmVyRGF0YS5iXG4gICAgY29uc3QgZmxpZ2h0RGF0YXMgPSBub3JtYWxpemVGbGlnaHREYXRhKHNlcnZlckRhdGEuZilcbiAgICBpZiAodHlwZW9mIGZsaWdodERhdGFzID09PSAnc3RyaW5nJykge1xuICAgICAgcmVqZWN0U2VnbWVudEVudHJpZXNJZlN0aWxsUGVuZGluZyhzcGF3bmVkRW50cmllcywgRGF0ZS5ub3coKSArIDEwICogMTAwMClcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGNvbnN0IG5hdmlnYXRpb25TZWVkID0gY29udmVydFNlcnZlclBhdGNoVG9GdWxsVHJlZShcbiAgICAgIG5vdyxcbiAgICAgIGR5bmFtaWNSZXF1ZXN0VHJlZSxcbiAgICAgIGZsaWdodERhdGFzLFxuICAgICAgcmVuZGVyZWRTZWFyY2gsXG4gICAgICAvLyBOb3QgbmVlZGVkIGZvciBwcmVmZXRjaCByZXNwb25zZXM7IHBhc3MgdW5rbm93biB0byB1c2UgdGhlIGRlZmF1bHQuXG4gICAgICBVbmtub3duRHluYW1pY1N0YWxlVGltZVxuICAgIClcbiAgICBmdWxmaWxsZWRFbnRyaWVzID0gd3JpdGVEeW5hbWljUmVuZGVyUmVzcG9uc2VJbnRvQ2FjaGUoXG4gICAgICBub3csXG4gICAgICBmZXRjaFN0cmF0ZWd5LFxuICAgICAgZmxpZ2h0RGF0YXMsXG4gICAgICBidWlsZElkLFxuICAgICAgaXNSZXNwb25zZVBhcnRpYWwsXG4gICAgICBoZWFkVmFyeVBhcmFtcyxcbiAgICAgIHN0YWxlQXQsXG4gICAgICBuYXZpZ2F0aW9uU2VlZCxcbiAgICAgIHNwYXduZWRFbnRyaWVzXG4gICAgKVxuXG4gICAgLy8gRm9yIGJ1ZmZlcmVkIHJlc3BvbnNlcywgdXBkYXRlIExSVSBzaXplcyBub3cgdGhhdCB3ZSBrbm93IHdoaWNoXG4gICAgLy8gZW50cmllcyB3ZXJlIGZ1bGZpbGxlZC5cbiAgICBpZiAoXG4gICAgICBidWZmZXJlZFJlc3BvbnNlU2l6ZSAhPT0gbnVsbCAmJlxuICAgICAgZnVsZmlsbGVkRW50cmllcyAhPT0gbnVsbCAmJlxuICAgICAgZnVsZmlsbGVkRW50cmllcy5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjb25zdCBhdmVyYWdlU2l6ZSA9IGJ1ZmZlcmVkUmVzcG9uc2VTaXplIC8gZnVsZmlsbGVkRW50cmllcy5sZW5ndGhcbiAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZnVsZmlsbGVkRW50cmllcykge1xuICAgICAgICBzZXRTaXplSW5DYWNoZU1hcChlbnRyeSwgYXZlcmFnZVNpemUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG5ldHdvcmsgY29ubmVjdGlvbiBjbG9zZXMsIHNvXG4gICAgLy8gdGhlIHNjaGVkdWxlciBjYW4gdHJhY2sgdGhlIG51bWJlciBvZiBjb25jdXJyZW50IG5ldHdvcmsgY29ubmVjdGlvbnMuXG4gICAgcmV0dXJuIHsgdmFsdWU6IG51bGwsIGNsb3NlZDogY2xvc2VkLnByb21pc2UgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlamVjdFNlZ21lbnRFbnRyaWVzSWZTdGlsbFBlbmRpbmcoc3Bhd25lZEVudHJpZXMsIERhdGUubm93KCkgKyAxMCAqIDEwMDApXG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5mdW5jdGlvbiB3cml0ZUR5bmFtaWNUcmVlUmVzcG9uc2VJbnRvQ2FjaGUoXG4gIG5vdzogbnVtYmVyLFxuICBmZXRjaFN0cmF0ZWd5OlxuICAgIHwgRmV0Y2hTdHJhdGVneS5Mb2FkaW5nQm91bmRhcnlcbiAgICB8IEZldGNoU3RyYXRlZ3kuUFBSUnVudGltZVxuICAgIHwgRmV0Y2hTdHJhdGVneS5GdWxsLFxuICByZXNwb25zZTogUlNDUmVzcG9uc2U8TmF2aWdhdGlvbkZsaWdodFJlc3BvbnNlPixcbiAgc2VydmVyRGF0YTogTmF2aWdhdGlvbkZsaWdodFJlc3BvbnNlLFxuICBlbnRyeTogUGVuZGluZ1JvdXRlQ2FjaGVFbnRyeSxcbiAgY291bGRCZUludGVyY2VwdGVkOiBib29sZWFuLFxuICBjYW5vbmljYWxVcmw6IHN0cmluZyxcbiAgcm91dGVJc1BQUkVuYWJsZWQ6IGJvb2xlYW4sXG4gIGhlYWRWYXJ5UGFyYW1zOiBWYXJ5UGFyYW1zIHwgbnVsbCxcbiAgb3JpZ2luYWxQYXRobmFtZTogc3RyaW5nLFxuICBuZXh0VXJsOiBzdHJpbmcgfCBudWxsXG4pOiB2b2lkIHtcbiAgY29uc3QgcmVuZGVyZWRTZWFyY2ggPSBnZXRSZW5kZXJlZFNlYXJjaChyZXNwb25zZSlcblxuICBjb25zdCBub3JtYWxpemVkRmxpZ2h0RGF0YVJlc3VsdCA9IG5vcm1hbGl6ZUZsaWdodERhdGEoc2VydmVyRGF0YS5mKVxuICBpZiAoXG4gICAgLy8gQSBzdHJpbmcgcmVzdWx0IG1lYW5zIG5hdmlnYXRpbmcgdG8gdGhpcyByb3V0ZSB3aWxsIHJlc3VsdCBpbiBhblxuICAgIC8vIE1QQSBuYXZpZ2F0aW9uLlxuICAgIHR5cGVvZiBub3JtYWxpemVkRmxpZ2h0RGF0YVJlc3VsdCA9PT0gJ3N0cmluZycgfHxcbiAgICBub3JtYWxpemVkRmxpZ2h0RGF0YVJlc3VsdC5sZW5ndGggIT09IDFcbiAgKSB7XG4gICAgcmVqZWN0Um91dGVDYWNoZUVudHJ5KGVudHJ5LCBub3cgKyAxMCAqIDEwMDApXG4gICAgcmV0dXJuXG4gIH1cbiAgY29uc3QgZmxpZ2h0RGF0YSA9IG5vcm1hbGl6ZWRGbGlnaHREYXRhUmVzdWx0WzBdXG4gIGlmICghZmxpZ2h0RGF0YS5pc1Jvb3RSZW5kZXIpIHtcbiAgICAvLyBVbmV4cGVjdGVkIHJlc3BvbnNlIGZvcm1hdC5cbiAgICByZWplY3RSb3V0ZUNhY2hlRW50cnkoZW50cnksIG5vdyArIDEwICogMTAwMClcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IGZsaWdodFJvdXRlclN0YXRlID0gZmxpZ2h0RGF0YS50cmVlXG4gIC8vIElmIHRoZSByZXNwb25zZSB3YXMgcG9zdHBvbmVkLCBzZWdtZW50cyBtYXkgY29udGFpbiBkeW5hbWljIGhvbGVzLlxuICAvLyBUaGUgaGVhZCBoYXMgaXRzIG93biBwYXJ0aWFsaXR5IGZsYWcgKGZsaWdodERhdGFFbnRyeS5pc0hlYWRQYXJ0aWFsKVxuICAvLyB3aGljaCBpcyBoYW5kbGVkIHNlcGFyYXRlbHkgaW4gd3JpdGVEeW5hbWljUmVuZGVyUmVzcG9uc2VJbnRvQ2FjaGUuXG4gIGNvbnN0IGlzUmVzcG9uc2VQYXJ0aWFsID1cbiAgICByZXNwb25zZS5oZWFkZXJzLmdldChORVhUX0RJRF9QT1NUUE9ORV9IRUFERVIpID09PSAnMSdcblxuICAvLyBDb252ZXJ0IHRoZSBzZXJ2ZXItc2VudCBkYXRhIGludG8gdGhlIFJvdXRlVHJlZSBmb3JtYXQgdXNlZCBieSB0aGVcbiAgLy8gY2xpZW50IGNhY2hlLlxuICAvL1xuICAvLyBEdXJpbmcgdGhpcyB0cmF2ZXJzYWwsIHdlIGFjY3VtdWxhdGUgYWRkaXRpb25hbCBkYXRhIGludG8gdGhpc1xuICAvLyBcImFjY3VtdWxhdG9yXCIgb2JqZWN0LlxuICBjb25zdCBhY2M6IFJvdXRlVHJlZUFjY3VtdWxhdG9yID0geyBtZXRhZGF0YVZhcnlQYXRoOiBudWxsIH1cbiAgY29uc3Qgcm91dGVUcmVlID0gY29udmVydFJvb3RGbGlnaHRSb3V0ZXJTdGF0ZVRvUm91dGVUcmVlKFxuICAgIGZsaWdodFJvdXRlclN0YXRlLFxuICAgIHJlbmRlcmVkU2VhcmNoLFxuICAgIGFjY1xuICApXG4gIGNvbnN0IG1ldGFkYXRhVmFyeVBhdGggPSBhY2MubWV0YWRhdGFWYXJ5UGF0aFxuICBpZiAobWV0YWRhdGFWYXJ5UGF0aCA9PT0gbnVsbCkge1xuICAgIHJlamVjdFJvdXRlQ2FjaGVFbnRyeShlbnRyeSwgbm93ICsgMTAgKiAxMDAwKVxuICAgIHJldHVyblxuICB9XG5cbiAgZGlzY292ZXJLbm93blJvdXRlKFxuICAgIG5vdyxcbiAgICBvcmlnaW5hbFBhdGhuYW1lLFxuICAgIG5leHRVcmwsXG4gICAgZW50cnksXG4gICAgcm91dGVUcmVlLFxuICAgIG1ldGFkYXRhVmFyeVBhdGgsXG4gICAgY291bGRCZUludGVyY2VwdGVkLFxuICAgIGNhbm9uaWNhbFVybCxcbiAgICByb3V0ZUlzUFBSRW5hYmxlZCxcbiAgICBmYWxzZSAvLyBoYXNEeW5hbWljUmV3cml0ZVxuICApXG5cbiAgLy8gSWYgdGhlIHNlcnZlciBzZW50IHNlZ21lbnQgZGF0YSBhcyBwYXJ0IG9mIHRoZSByZXNwb25zZSwgd2Ugc2hvdWxkIHdyaXRlXG4gIC8vIGl0IGludG8gdGhlIGNhY2hlIHRvIHByZXZlbnQgYSBzZWNvbmQsIHJlZHVuZGFudCBwcmVmZXRjaCByZXF1ZXN0LlxuICAvLyBUT0RPOiBUaGlzIGlzIGEgbGVmdG92ZXIgYnJhbmNoIGZyb20gYmVmb3JlIENsaWVudCBTZWdtZW50IENhY2hlIHdhc1xuICAvLyBlbmFibGVkIGV2ZXJ5d2hlcmUuIFRyZWUgcHJlZmV0Y2hlcyBzaG91bGQgbmV2ZXIgaW5jbHVkZSBzZWdtZW50IGRhdGEuICBXZVxuICAvLyBjYW4gZGVsZXRlIGl0LiBMZWF2aW5nIGZvciBhIHN1YnNlcXVlbnQgUFIuXG4gIGNvbnN0IG5hdmlnYXRpb25TZWVkID0gY29udmVydFNlcnZlclBhdGNoVG9GdWxsVHJlZShcbiAgICBub3csXG4gICAgZmxpZ2h0Um91dGVyU3RhdGUsXG4gICAgbm9ybWFsaXplZEZsaWdodERhdGFSZXN1bHQsXG4gICAgcmVuZGVyZWRTZWFyY2gsXG4gICAgVW5rbm93bkR5bmFtaWNTdGFsZVRpbWVcbiAgKVxuICBjb25zdCBidWlsZElkID1cbiAgICByZXNwb25zZS5oZWFkZXJzLmdldChORVhUX05BVl9ERVBMT1lNRU5UX0lEX0hFQURFUikgPz8gc2VydmVyRGF0YS5iXG4gIHdyaXRlRHluYW1pY1JlbmRlclJlc3BvbnNlSW50b0NhY2hlKFxuICAgIG5vdyxcbiAgICBmZXRjaFN0cmF0ZWd5LFxuICAgIG5vcm1hbGl6ZWRGbGlnaHREYXRhUmVzdWx0LFxuICAgIGJ1aWxkSWQsXG4gICAgaXNSZXNwb25zZVBhcnRpYWwsXG4gICAgaGVhZFZhcnlQYXJhbXMsXG4gICAgZ2V0U3RhbGVBdEZyb21IZWFkZXIobm93LCByZXNwb25zZSksXG4gICAgbmF2aWdhdGlvblNlZWQsXG4gICAgbnVsbFxuICApXG59XG5cbmZ1bmN0aW9uIHJlamVjdFNlZ21lbnRFbnRyaWVzSWZTdGlsbFBlbmRpbmcoXG4gIGVudHJpZXM6IE1hcDxTZWdtZW50UmVxdWVzdEtleSwgU2VnbWVudENhY2hlRW50cnk+LFxuICBzdGFsZUF0OiBudW1iZXJcbik6IEFycmF5PEZ1bGZpbGxlZFNlZ21lbnRDYWNoZUVudHJ5PiB7XG4gIGNvbnN0IGZ1bGZpbGxlZEVudHJpZXMgPSBbXVxuICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMudmFsdWVzKCkpIHtcbiAgICBpZiAoZW50cnkuc3RhdHVzID09PSBFbnRyeVN0YXR1cy5QZW5kaW5nKSB7XG4gICAgICByZWplY3RTZWdtZW50Q2FjaGVFbnRyeShlbnRyeSwgc3RhbGVBdClcbiAgICB9IGVsc2UgaWYgKGVudHJ5LnN0YXR1cyA9PT0gRW50cnlTdGF0dXMuRnVsZmlsbGVkKSB7XG4gICAgICBmdWxmaWxsZWRFbnRyaWVzLnB1c2goZW50cnkpXG4gICAgfVxuICB9XG4gIHJldHVybiBmdWxmaWxsZWRFbnRyaWVzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUR5bmFtaWNSZW5kZXJSZXNwb25zZUludG9DYWNoZShcbiAgbm93OiBudW1iZXIsXG4gIGZldGNoU3RyYXRlZ3k6XG4gICAgfCBGZXRjaFN0cmF0ZWd5LkxvYWRpbmdCb3VuZGFyeVxuICAgIHwgRmV0Y2hTdHJhdGVneS5QUFJcbiAgICB8IEZldGNoU3RyYXRlZ3kuUFBSUnVudGltZVxuICAgIHwgRmV0Y2hTdHJhdGVneS5GdWxsLFxuICBmbGlnaHREYXRhczogTm9ybWFsaXplZEZsaWdodERhdGFbXSxcbiAgYnVpbGRJZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBpc1Jlc3BvbnNlUGFydGlhbDogYm9vbGVhbixcbiAgaGVhZFZhcnlQYXJhbXM6IFZhcnlQYXJhbXMgfCBudWxsLFxuICBzdGFsZUF0OiBudW1iZXIsXG4gIG5hdmlnYXRpb25TZWVkOiBOYXZpZ2F0aW9uU2VlZCxcbiAgc3Bhd25lZEVudHJpZXM6IE1hcDxTZWdtZW50UmVxdWVzdEtleSwgUGVuZGluZ1NlZ21lbnRDYWNoZUVudHJ5PiB8IG51bGxcbik6IEFycmF5PEZ1bGZpbGxlZFNlZ21lbnRDYWNoZUVudHJ5PiB8IG51bGwge1xuICBpZiAoYnVpbGRJZCAmJiBidWlsZElkICE9PSBnZXROYXZpZ2F0aW9uQnVpbGRJZCgpKSB7XG4gICAgLy8gVGhlIHNlcnZlciBidWlsZCBkb2VzIG5vdCBtYXRjaCB0aGUgY2xpZW50LiBUcmVhdCBhcyBhIDQwNC4gRHVyaW5nXG4gICAgLy8gYW4gYWN0dWFsIG5hdmlnYXRpb24sIHRoZSByb3V0ZXIgd2lsbCB0cmlnZ2VyIGFuIE1QQSBuYXZpZ2F0aW9uLlxuICAgIGlmIChzcGF3bmVkRW50cmllcyAhPT0gbnVsbCkge1xuICAgICAgcmVqZWN0U2VnbWVudEVudHJpZXNJZlN0aWxsUGVuZGluZyhzcGF3bmVkRW50cmllcywgbm93ICsgMTAgKiAxMDAwKVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgY29uc3Qgcm91dGVUcmVlID0gbmF2aWdhdGlvblNlZWQucm91dGVUcmVlXG4gIGNvbnN0IG1ldGFkYXRhVHJlZSA9XG4gICAgbmF2aWdhdGlvblNlZWQubWV0YWRhdGFWYXJ5UGF0aCAhPT0gbnVsbFxuICAgICAgPyBjcmVhdGVNZXRhZGF0YVJvdXRlVHJlZShuYXZpZ2F0aW9uU2VlZC5tZXRhZGF0YVZhcnlQYXRoKVxuICAgICAgOiBudWxsXG5cbiAgZm9yIChjb25zdCBmbGlnaHREYXRhRW50cnkgb2YgZmxpZ2h0RGF0YXMpIHtcbiAgICBjb25zdCBzZWVkRGF0YSA9IGZsaWdodERhdGFFbnRyeS5zZWVkRGF0YVxuICAgIGlmIChzZWVkRGF0YSAhPT0gbnVsbCkge1xuICAgICAgLy8gVGhlIGRhdGEgc2VudCBieSB0aGUgc2VydmVyIHJlcHJlc2VudHMgb25seSBhIHN1YnRyZWUgb2YgdGhlIGFwcC4gV2VcbiAgICAgIC8vIG5lZWQgdG8gZmluZCB0aGUgcGFydCBvZiB0aGUgdGFzayB0cmVlIHRoYXQgbWF0Y2hlcyB0aGUgcmVzcG9uc2UuXG4gICAgICAvL1xuICAgICAgLy8gc2VnbWVudFBhdGggcmVwcmVzZW50cyB0aGUgcGFyZW50IHBhdGggb2Ygc3VidHJlZS4gSXQncyBhIHJlcGVhdGluZ1xuICAgICAgLy8gcGF0dGVybiBvZiBwYXJhbGxlbCByb3V0ZSBrZXkgYW5kIHNlZ21lbnQ6XG4gICAgICAvL1xuICAgICAgLy8gICBbc3RyaW5nLCBTZWdtZW50LCBzdHJpbmcsIFNlZ21lbnQsIHN0cmluZywgU2VnbWVudCwgLi4uXVxuICAgICAgY29uc3Qgc2VnbWVudFBhdGggPSBmbGlnaHREYXRhRW50cnkuc2VnbWVudFBhdGhcbiAgICAgIGxldCB0cmVlID0gcm91dGVUcmVlXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlZ21lbnRQYXRoLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICAgIGNvbnN0IHBhcmFsbGVsUm91dGVLZXk6IHN0cmluZyA9IHNlZ21lbnRQYXRoW2ldXG4gICAgICAgIGlmICh0cmVlPy5zbG90cz8uW3BhcmFsbGVsUm91dGVLZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0cmVlID0gdHJlZS5zbG90c1twYXJhbGxlbFJvdXRlS2V5XVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChzcGF3bmVkRW50cmllcyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmVqZWN0U2VnbWVudEVudHJpZXNJZlN0aWxsUGVuZGluZyhzcGF3bmVkRW50cmllcywgbm93ICsgMTAgKiAxMDAwKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHdyaXRlU2VlZERhdGFJbnRvQ2FjaGUoXG4gICAgICAgIG5vdyxcbiAgICAgICAgZmV0Y2hTdHJhdGVneSxcbiAgICAgICAgdHJlZSxcbiAgICAgICAgc3RhbGVBdCxcbiAgICAgICAgc2VlZERhdGEsXG4gICAgICAgIGlzUmVzcG9uc2VQYXJ0aWFsLFxuICAgICAgICBzcGF3bmVkRW50cmllc1xuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IGhlYWQgPSBmbGlnaHREYXRhRW50cnkuaGVhZFxuICAgIGlmIChoZWFkICE9PSBudWxsICYmIG1ldGFkYXRhVHJlZSAhPT0gbnVsbCkge1xuICAgICAgLy8gV2hlbiBDYWNoZSBDb21wb25lbnRzIGlzIGVuYWJsZWQsIHRoZSBzZXJ2ZXIgY29uc2VydmF0aXZlbHkgbWFya3NcbiAgICAgIC8vIHRoZSBoZWFkIGFzIHBhcnRpYWwgZHVyaW5nIHN0YXRpYyBnZW5lcmF0aW9uIChpc1Bvc3NpYmx5UGFydGlhbEhlYWRcbiAgICAgIC8vIGluIGFwcC1yZW5kZXIudHN4KSwgZXZlbiBmb3IgZnVsbHkgc3RhdGljIHBhZ2VzIHdoZXJlIHRoZSBoZWFkIGlzXG4gICAgICAvLyBhY3R1YWxseSBjb21wbGV0ZS4gV2hlbiB0aGUgcmVzcG9uc2UgaXMgbm9uLXBhcnRpYWwsIHdlIG92ZXJyaWRlXG4gICAgICAvLyB0aGlzIHNpbmNlIHRoZSBzZXJ2ZXIgY29uZmlybWVkIG5vIGR5bmFtaWMgY29udGVudCBleGlzdHMuXG4gICAgICAvL1xuICAgICAgLy8gV2l0aG91dCBDYWNoZSBDb21wb25lbnRzLCB0aGUgc2VydmVyIGFsd2F5cyBzZW5kcyB0aGUgY29ycmVjdFxuICAgICAgLy8gaXNIZWFkUGFydGlhbCB2YWx1ZSwgc28gbm8gb3ZlcnJpZGUgaXMgbmVlZGVkLlxuICAgICAgY29uc3QgaXNIZWFkUGFydGlhbCA9XG4gICAgICAgICFpc1Jlc3BvbnNlUGFydGlhbCAmJiBwcm9jZXNzLmVudi5fX05FWFRfQ0FDSEVfQ09NUE9ORU5UU1xuICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICA6IGZsaWdodERhdGFFbnRyeS5pc0hlYWRQYXJ0aWFsXG5cbiAgICAgIGZ1bGZpbGxFbnRyeVNwYXduZWRCeVJ1bnRpbWVQcmVmZXRjaChcbiAgICAgICAgbm93LFxuICAgICAgICBmZXRjaFN0cmF0ZWd5LFxuICAgICAgICBoZWFkLFxuICAgICAgICBpc0hlYWRQYXJ0aWFsLFxuICAgICAgICBzdGFsZUF0LFxuICAgICAgICAvLyBGb3IgaGVhZCBlbnRyaWVzLCB1c2UgdGhlIGhlYWQtc3BlY2lmaWMgdmFyeSBwYXJhbXMgcGFzc2VkIGFzXG4gICAgICAgIC8vIHBhcmFtZXRlci5cbiAgICAgICAgaGVhZFZhcnlQYXJhbXMsXG4gICAgICAgIG1ldGFkYXRhVHJlZSxcbiAgICAgICAgc3Bhd25lZEVudHJpZXNcbiAgICAgIClcbiAgICB9XG4gIH1cbiAgLy8gQW55IGVudHJ5IHRoYXQncyBzdGlsbCBwZW5kaW5nIHdhcyBpbnRlbnRpb25hbGx5IG5vdCByZW5kZXJlZCBieSB0aGVcbiAgLy8gc2VydmVyLCBiZWNhdXNlIGl0IHdhcyBpbnNpZGUgdGhlIGxvYWRpbmcgYm91bmRhcnkuIE1hcmsgdGhlbSBhcyByZWplY3RlZFxuICAvLyBzbyB3ZSBrbm93IG5vdCB0byBmZXRjaCB0aGVtIGFnYWluLlxuICAvLyBUT0RPOiBJZiBQUFIgaXMgZW5hYmxlZCBvbiBzb21lIHJvdXRlcyBidXQgbm90IG90aGVycywgdGhlbiBpdCdzIHBvc3NpYmxlXG4gIC8vIHRoYXQgYSBkaWZmZXJlbnQgcGFnZSBpcyBhYmxlIHRvIGRvIGEgcGVyLXNlZ21lbnQgcHJlZmV0Y2ggb2Ygb25lIG9mIHRoZVxuICAvLyBzZWdtZW50cyB3ZSdyZSBtYXJraW5nIGFzIHJlamVjdGVkIGhlcmUuIFdlIHNob3VsZCBtYXJrIG9uIHRoZSBzZWdtZW50XG4gIC8vIHNvbWVob3cgdGhhdCB0aGUgcmVhc29uIGZvciB0aGUgcmVqZWN0aW9uIGlzIGJlY2F1c2Ugb2YgYSBub24tUFBSIHByZWZldGNoLlxuICAvLyBUaGF0IHdheSBhIHBlci1zZWdtZW50IHByZWZldGNoIGtub3dzIHRvIGRpc3JlZ2FyZCB0aGUgcmVqZWN0aW9uLlxuICBpZiAoc3Bhd25lZEVudHJpZXMgIT09IG51bGwpIHtcbiAgICBjb25zdCBmdWxmaWxsZWRFbnRyaWVzID0gcmVqZWN0U2VnbWVudEVudHJpZXNJZlN0aWxsUGVuZGluZyhcbiAgICAgIHNwYXduZWRFbnRyaWVzLFxuICAgICAgbm93ICsgMTAgKiAxMDAwXG4gICAgKVxuICAgIHJldHVybiBmdWxmaWxsZWRFbnRyaWVzXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuZnVuY3Rpb24gd3JpdGVTZWVkRGF0YUludG9DYWNoZShcbiAgbm93OiBudW1iZXIsXG4gIGZldGNoU3RyYXRlZ3k6XG4gICAgfCBGZXRjaFN0cmF0ZWd5LkxvYWRpbmdCb3VuZGFyeVxuICAgIHwgRmV0Y2hTdHJhdGVneS5QUFJcbiAgICB8IEZldGNoU3RyYXRlZ3kuUFBSUnVudGltZVxuICAgIHwgRmV0Y2hTdHJhdGVneS5GdWxsLFxuICB0cmVlOiBSb3V0ZVRyZWUsXG4gIHN0YWxlQXQ6IG51bWJlcixcbiAgc2VlZERhdGE6IENhY2hlTm9kZVNlZWREYXRhLFxuICBpc1Jlc3BvbnNlUGFydGlhbDogYm9vbGVhbixcbiAgZW50cmllc093bmVkQnlDdXJyZW50VGFzazogTWFwPFxuICAgIFNlZ21lbnRSZXF1ZXN0S2V5LFxuICAgIFBlbmRpbmdTZWdtZW50Q2FjaGVFbnRyeVxuICA+IHwgbnVsbFxuKSB7XG4gIC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byB3cml0ZSB0aGUgcmVzdWx0IG9mIGEgcnVudGltZSBzZXJ2ZXIgcmVxdWVzdFxuICAvLyAoQ2FjaGVOb2RlU2VlZERhdGEpIGludG8gdGhlIHByZWZldGNoIGNhY2hlLlxuICBjb25zdCByc2MgPSBzZWVkRGF0YVswXVxuICBjb25zdCBpc1BhcnRpYWwgPSByc2MgPT09IG51bGwgfHwgaXNSZXNwb25zZVBhcnRpYWxcbiAgY29uc3QgdmFyeVBhcmFtc1RoZW5hYmxlID0gc2VlZERhdGFbNF1cbiAgLy8gRWFjaCBzZWdtZW50IGNhcnJpZXMgaXRzIG93biB2YXJ5IHBhcmFtcyB0aGVuYWJsZSBpbiB0aGUgc2VlZCBkYXRhLiBUaGVcbiAgLy8gdGhlbmFibGUgcmVzb2x2ZXMgdG8gdGhlIHNldCBvZiBwYXJhbXMgdGhlIHNlZ21lbnQgYWNjZXNzZWQgZHVyaW5nIHJlbmRlci5cbiAgLy8gQSBudWxsIHRoZW5hYmxlIG1lYW5zIHRyYWNraW5nIHdhcyBub3QgZW5hYmxlZCAobm90IGEgcHJlcmVuZGVyKS5cbiAgY29uc3QgdmFyeVBhcmFtcyA9XG4gICAgdmFyeVBhcmFtc1RoZW5hYmxlICE9PSBudWxsID8gcmVhZFZhcnlQYXJhbXModmFyeVBhcmFtc1RoZW5hYmxlKSA6IG51bGxcbiAgZnVsZmlsbEVudHJ5U3Bhd25lZEJ5UnVudGltZVByZWZldGNoKFxuICAgIG5vdyxcbiAgICBmZXRjaFN0cmF0ZWd5LFxuICAgIHJzYyxcbiAgICBpc1BhcnRpYWwsXG4gICAgc3RhbGVBdCxcbiAgICB2YXJ5UGFyYW1zLFxuICAgIHRyZWUsXG4gICAgZW50cmllc093bmVkQnlDdXJyZW50VGFza1xuICApXG5cbiAgLy8gUmVjdXJzaXZlbHkgd3JpdGUgdGhlIGNoaWxkIGRhdGEgaW50byB0aGUgY2FjaGUuXG4gIGNvbnN0IHNsb3RzID0gdHJlZS5zbG90c1xuICBpZiAoc2xvdHMgIT09IG51bGwpIHtcbiAgICBjb25zdCBzZWVkRGF0YUNoaWxkcmVuID0gc2VlZERhdGFbMV1cbiAgICBmb3IgKGNvbnN0IHBhcmFsbGVsUm91dGVLZXkgaW4gc2xvdHMpIHtcbiAgICAgIGNvbnN0IGNoaWxkVHJlZSA9IHNsb3RzW3BhcmFsbGVsUm91dGVLZXldXG4gICAgICBjb25zdCBjaGlsZFNlZWREYXRhOiBDYWNoZU5vZGVTZWVkRGF0YSB8IG51bGwgfCB2b2lkID1cbiAgICAgICAgc2VlZERhdGFDaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XVxuICAgICAgaWYgKGNoaWxkU2VlZERhdGEgIT09IG51bGwgJiYgY2hpbGRTZWVkRGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHdyaXRlU2VlZERhdGFJbnRvQ2FjaGUoXG4gICAgICAgICAgbm93LFxuICAgICAgICAgIGZldGNoU3RyYXRlZ3ksXG4gICAgICAgICAgY2hpbGRUcmVlLFxuICAgICAgICAgIHN0YWxlQXQsXG4gICAgICAgICAgY2hpbGRTZWVkRGF0YSxcbiAgICAgICAgICBpc1Jlc3BvbnNlUGFydGlhbCxcbiAgICAgICAgICBlbnRyaWVzT3duZWRCeUN1cnJlbnRUYXNrXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZnVsZmlsbEVudHJ5U3Bhd25lZEJ5UnVudGltZVByZWZldGNoKFxuICBub3c6IG51bWJlcixcbiAgZmV0Y2hTdHJhdGVneTpcbiAgICB8IEZldGNoU3RyYXRlZ3kuTG9hZGluZ0JvdW5kYXJ5XG4gICAgfCBGZXRjaFN0cmF0ZWd5LlBQUlxuICAgIHwgRmV0Y2hTdHJhdGVneS5QUFJSdW50aW1lXG4gICAgfCBGZXRjaFN0cmF0ZWd5LkZ1bGwsXG4gIHJzYzogUmVhY3QuUmVhY3ROb2RlLFxuICBpc1BhcnRpYWw6IGJvb2xlYW4sXG4gIHN0YWxlQXQ6IG51bWJlcixcbiAgc2VnbWVudFZhcnlQYXJhbXM6IFNldDxzdHJpbmc+IHwgbnVsbCxcbiAgdHJlZTogUm91dGVUcmVlLFxuICBlbnRyaWVzT3duZWRCeUN1cnJlbnRUYXNrOiBNYXA8XG4gICAgU2VnbWVudFJlcXVlc3RLZXksXG4gICAgUGVuZGluZ1NlZ21lbnRDYWNoZUVudHJ5XG4gID4gfCBudWxsXG4pIHtcbiAgLy8gV2Ugc2hvdWxkIG9ubHkgd3JpdGUgaW50byBjYWNoZSBlbnRyaWVzIHRoYXQgYXJlIG93bmVkIGJ5IHVzLiBPciBjcmVhdGVcbiAgLy8gYSBuZXcgb25lIGFuZCB3cml0ZSBpbnRvIHRoYXQuIFdlIG11c3QgbmV2ZXIgd3JpdGUgb3ZlciBhbiBlbnRyeSB0aGF0IHdhc1xuICAvLyBjcmVhdGVkIGJ5IGEgZGlmZmVyZW50IHRhc2ssIGJlY2F1c2UgdGhhdCBjYXVzZXMgZGF0YSByYWNlcy5cbiAgY29uc3Qgb3duZWRFbnRyeSA9XG4gICAgZW50cmllc093bmVkQnlDdXJyZW50VGFzayAhPT0gbnVsbFxuICAgICAgPyBlbnRyaWVzT3duZWRCeUN1cnJlbnRUYXNrLmdldCh0cmVlLnJlcXVlc3RLZXkpXG4gICAgICA6IHVuZGVmaW5lZFxuICBpZiAob3duZWRFbnRyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZnVsZmlsbGVkRW50cnkgPSBmdWxmaWxsU2VnbWVudENhY2hlRW50cnkoXG4gICAgICBvd25lZEVudHJ5LFxuICAgICAgcnNjLFxuICAgICAgc3RhbGVBdCxcbiAgICAgIGlzUGFydGlhbFxuICAgIClcbiAgICAvLyBSZS1rZXkgdGhlIGVudHJ5IGJhc2VkIG9uIHdoaWNoIHBhcmFtcyB0aGUgc2VnbWVudCBhY3R1YWxseSBkZXBlbmRzIG9uLlxuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfVkFSWV9QQVJBTVMgJiYgc2VnbWVudFZhcnlQYXJhbXMgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGZ1bGZpbGxlZFZhcnlQYXRoID0gZ2V0RnVsZmlsbGVkU2VnbWVudFZhcnlQYXRoKFxuICAgICAgICB0cmVlLnZhcnlQYXRoLFxuICAgICAgICBzZWdtZW50VmFyeVBhcmFtc1xuICAgICAgKVxuICAgICAgY29uc3QgaXNSZXZhbGlkYXRpb24gPSBmYWxzZVxuICAgICAgc2V0SW5DYWNoZU1hcChcbiAgICAgICAgc2VnbWVudENhY2hlTWFwLFxuICAgICAgICBmdWxmaWxsZWRWYXJ5UGF0aCxcbiAgICAgICAgZnVsZmlsbGVkRW50cnksXG4gICAgICAgIGlzUmV2YWxpZGF0aW9uXG4gICAgICApXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIFRoZXJlJ3Mgbm8gbWF0Y2hpbmcgZW50cnkuIEF0dGVtcHQgdG8gY3JlYXRlIGEgbmV3IG9uZS5cbiAgICBjb25zdCBwb3NzaWJseU5ld0VudHJ5ID0gcmVhZE9yQ3JlYXRlU2VnbWVudENhY2hlRW50cnkoXG4gICAgICBub3csXG4gICAgICBmZXRjaFN0cmF0ZWd5LFxuICAgICAgdHJlZVxuICAgIClcbiAgICBpZiAocG9zc2libHlOZXdFbnRyeS5zdGF0dXMgPT09IEVudHJ5U3RhdHVzLkVtcHR5KSB7XG4gICAgICAvLyBDb25maXJtZWQgdGhpcyBpcyBhIG5ldyBlbnRyeS4gV2UgY2FuIGZ1bGZpbGwgaXQuXG4gICAgICBjb25zdCBuZXdFbnRyeSA9IHBvc3NpYmx5TmV3RW50cnlcbiAgICAgIGNvbnN0IGZ1bGZpbGxlZEVudHJ5ID0gZnVsZmlsbFNlZ21lbnRDYWNoZUVudHJ5KFxuICAgICAgICB1cGdyYWRlVG9QZW5kaW5nU2VnbWVudChuZXdFbnRyeSwgZmV0Y2hTdHJhdGVneSksXG4gICAgICAgIHJzYyxcbiAgICAgICAgc3RhbGVBdCxcbiAgICAgICAgaXNQYXJ0aWFsXG4gICAgICApXG4gICAgICAvLyBSZS1rZXkgdGhlIGVudHJ5IGJhc2VkIG9uIHdoaWNoIHBhcmFtcyB0aGUgc2VnbWVudCBhY3R1YWxseSBkZXBlbmRzIG9uLlxuICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9WQVJZX1BBUkFNUyAmJiBzZWdtZW50VmFyeVBhcmFtcyAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBmdWxmaWxsZWRWYXJ5UGF0aCA9IGdldEZ1bGZpbGxlZFNlZ21lbnRWYXJ5UGF0aChcbiAgICAgICAgICB0cmVlLnZhcnlQYXRoLFxuICAgICAgICAgIHNlZ21lbnRWYXJ5UGFyYW1zXG4gICAgICAgIClcbiAgICAgICAgY29uc3QgaXNSZXZhbGlkYXRpb24gPSBmYWxzZVxuICAgICAgICBzZXRJbkNhY2hlTWFwKFxuICAgICAgICAgIHNlZ21lbnRDYWNoZU1hcCxcbiAgICAgICAgICBmdWxmaWxsZWRWYXJ5UGF0aCxcbiAgICAgICAgICBmdWxmaWxsZWRFbnRyeSxcbiAgICAgICAgICBpc1JldmFsaWRhdGlvblxuICAgICAgICApXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZXJlIHdhcyBhbHJlYWR5IGFuIGVudHJ5IGluIHRoZSBjYWNoZS4gQnV0IHdlIG1heSBiZSBhYmxlIHRvXG4gICAgICAvLyByZXBsYWNlIGl0IHdpdGggdGhlIG5ldyBvbmUgZnJvbSB0aGUgc2VydmVyLlxuICAgICAgY29uc3QgbmV3RW50cnkgPSBmdWxmaWxsU2VnbWVudENhY2hlRW50cnkoXG4gICAgICAgIHVwZ3JhZGVUb1BlbmRpbmdTZWdtZW50KFxuICAgICAgICAgIGNyZWF0ZURldGFjaGVkU2VnbWVudENhY2hlRW50cnkobm93KSxcbiAgICAgICAgICBmZXRjaFN0cmF0ZWd5XG4gICAgICAgICksXG4gICAgICAgIHJzYyxcbiAgICAgICAgc3RhbGVBdCxcbiAgICAgICAgaXNQYXJ0aWFsXG4gICAgICApXG4gICAgICAvLyBVc2UgdGhlIGZ1bGZpbGxlZCB2YXJ5IHBhdGggaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvXG4gICAgICAvLyB0aGUgcmVxdWVzdCB2YXJ5IHBhdGguXG4gICAgICBjb25zdCB2YXJ5UGF0aCA9XG4gICAgICAgIHByb2Nlc3MuZW52Ll9fTkVYVF9WQVJZX1BBUkFNUyAmJiBzZWdtZW50VmFyeVBhcmFtcyAhPT0gbnVsbFxuICAgICAgICAgID8gZ2V0RnVsZmlsbGVkU2VnbWVudFZhcnlQYXRoKHRyZWUudmFyeVBhdGgsIHNlZ21lbnRWYXJ5UGFyYW1zKVxuICAgICAgICAgIDogZ2V0U2VnbWVudFZhcnlQYXRoRm9yUmVxdWVzdChmZXRjaFN0cmF0ZWd5LCB0cmVlKVxuICAgICAgdXBzZXJ0U2VnbWVudEVudHJ5KG5vdywgdmFyeVBhdGgsIG5ld0VudHJ5KVxuICAgIH1cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFByZWZldGNoUmVzcG9uc2U8VD4oXG4gIHVybDogVVJMLFxuICBoZWFkZXJzOiBSZXF1ZXN0SGVhZGVyc1xuKTogUHJvbWlzZTxSU0NSZXNwb25zZTxUPiB8IG51bGw+IHtcbiAgY29uc3QgZmV0Y2hQcmlvcml0eSA9ICdsb3cnXG4gIC8vIFdoZW4gaXNzdWluZyBhIHByZWZldGNoIHJlcXVlc3QsIGRvbid0IGltbWVkaWF0ZWx5IGRlY29kZSB0aGUgcmVzcG9uc2U7IHdlXG4gIC8vIHVzZSB0aGUgbG93ZXIgbGV2ZWwgYGNyZWF0ZUZyb21SZXNwb25zZWAgQVBJIGluc3RlYWQgYmVjYXVzZSB3ZSBuZWVkIHRvIGRvXG4gIC8vIHNvbWUgZXh0cmEgcHJvY2Vzc2luZyBvZiB0aGUgcmVzcG9uc2Ugc3RyZWFtLiBTZWVcbiAgLy8gYGNyZWF0ZU5vblRhc2t5UHJlZmV0Y2hSZXNwb25zZVN0cmVhbWAgZm9yIG1vcmUgZGV0YWlscy5cbiAgY29uc3Qgc2hvdWxkSW1tZWRpYXRlbHlEZWNvZGUgPSBmYWxzZVxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNyZWF0ZUZldGNoPFQ+KFxuICAgIHVybCxcbiAgICBoZWFkZXJzLFxuICAgIGZldGNoUHJpb3JpdHksXG4gICAgc2hvdWxkSW1tZWRpYXRlbHlEZWNvZGVcbiAgKVxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8vIENoZWNrIHRoZSBjb250ZW50IHR5cGVcbiAgaWYgKGlzT3V0cHV0RXhwb3J0TW9kZSkge1xuICAgIC8vIEluIG91dHB1dDogXCJleHBvcnRcIiBtb2RlLCB3ZSByZWxheGVkIGFib3V0IHRoZSBjb250ZW50IHR5cGUsIHNpbmNlIGl0J3NcbiAgICAvLyBub3QgTmV4dC5qcyB0aGF0J3Mgc2VydmluZyB0aGUgcmVzcG9uc2UuIElmIHRoZSBzdGF0dXMgaXMgT0ssIGFzc3VtZSB0aGVcbiAgICAvLyByZXNwb25zZSBpcyB2YWxpZC4gSWYgaXQncyBub3QgYSB2YWxpZCByZXNwb25zZSwgdGhlIEZsaWdodCBjbGllbnQgd29uJ3RcbiAgICAvLyBiZSBhYmxlIHRvIGRlY29kZSBpdCwgYW5kIHdlJ2xsIHRyZWF0IGl0IGFzIGEgbWlzcy5cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBjb250ZW50VHlwZSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKVxuICAgIGNvbnN0IGlzRmxpZ2h0UmVzcG9uc2UgPVxuICAgICAgY29udGVudFR5cGUgJiYgY29udGVudFR5cGUuc3RhcnRzV2l0aChSU0NfQ09OVEVOVF9UWVBFX0hFQURFUilcbiAgICBpZiAoIWlzRmxpZ2h0UmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICB9XG4gIHJldHVybiByZXNwb25zZVxufVxuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVOb25UYXNreVByZWZldGNoUmVzcG9uc2VTdHJlYW0oXG4gIGJvZHk6IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+XG4pOiBQcm9taXNlPHsgc3RyZWFtOiBSZWFkYWJsZVN0cmVhbTxVaW50OEFycmF5Pjsgc2l6ZTogbnVtYmVyIH0+IHtcbiAgLy8gQnVmZmVyIHRoZSBlbnRpcmUgcmVzcG9uc2UgYmVmb3JlIHBhc3NpbmcgaXQgdG8gdGhlIEZsaWdodCBjbGllbnQuIFRoaXNcbiAgLy8gZW5zdXJlcyB0aGF0IHdoZW4gRmxpZ2h0IHByb2Nlc3NlcyB0aGUgc3RyZWFtLCBhbGwgbW9kZWwgZGF0YSBpcyBhdmFpbGFibGVcbiAgLy8gc3luY2hyb25vdXNseS4gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHJlYWRWYXJ5UGFyYW1zLCB3aGljaCBzeW5jaHJvbm91c2x5XG4gIC8vIGNoZWNrcyB0aGUgdGhlbmFibGUgc3RhdHVzIOKAlCBpZiBkYXRhIGFycml2ZWQgaW4gbXVsdGlwbGUgbmV0d29yayBjaHVua3MsXG4gIC8vIHRoZSB0aGVuYWJsZXMgbWlnaHQgbm90IHlldCBiZSBmdWxmaWxsZWQuXG4gIC8vXG4gIC8vIFRPRE86IFRoZXJlIGFyZSB0b28gbWFueSBpbnRlcm1lZGlhdGUgc3RyZWFtIHRyYW5zZm9ybWF0aW9ucyBpbiB0aGVcbiAgLy8gcHJlZmV0Y2ggcmVzcG9uc2UgcGlwZWxpbmUgKGUuZy4gc3RyaXBJc1BhcnRpYWxCeXRlLCB0aGlzIGZ1bmN0aW9uKS5cbiAgLy8gVGhlc2UgY291bGQgYWxsIGJlIGNvbnNvbGlkYXRlZCBpbnRvIGEgc2luZ2xlIHRyYW5zZm9ybWF0aW9uLiBSZWZhY3RvclxuICAvLyBvbmNlIHRoZSBjYWNoZWQgbmF2aWdhdGlvbnMgZXhwZXJpbWVudCBsYW5kcy5cbiAgLy9cbiAgLy8gUmVhZCB0aGUgZW50aXJlIHJlc3BvbnNlIGZyb20gdGhlIG5ldHdvcmsuXG4gIGNvbnN0IHJlYWRlciA9IGJvZHkuZ2V0UmVhZGVyKClcbiAgY29uc3QgY2h1bmtzOiBVaW50OEFycmF5W10gPSBbXVxuICBsZXQgc2l6ZSA9IDBcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpXG4gICAgaWYgKGRvbmUpIGJyZWFrXG4gICAgY2h1bmtzLnB1c2godmFsdWUpXG4gICAgc2l6ZSArPSB2YWx1ZS5ieXRlTGVuZ3RoXG4gIH1cbiAgLy8gQ29uY2F0ZW5hdGUgaW50byBhIHNpbmdsZSBjaHVuayBzbyB0aGF0IEZsaWdodCdzIHByb2Nlc3NCaW5hcnlDaHVua1xuICAvLyBwcm9jZXNzZXMgYWxsIHJvd3Mgc3luY2hyb25vdXNseSBpbiBvbmUgY2FsbC4gTXVsdGlwbGUgY2h1bmtzIHdvdWxkIG5vdFxuICAvLyBiZSBzdWZmaWNpZW50OiBldmVuIHRob3VnaCByZWFkZXIucmVhZCgpIHJlc29sdmVzIGFzIGEgbWljcm90YXNrIGZvclxuICAvLyBhbHJlYWR5LWVucXVldWVkIGRhdGEsIHRoZSBgYXdhaXRgIGNvbnRpbnVhdGlvbiBmcm9tXG4gIC8vIGNyZWF0ZUZyb21SZWFkYWJsZVN0cmVhbSBjYW4gaW50ZXJsZWF2ZSBiZXR3ZWVuIGNodW5rcy4gSWYgdGhlIHJvb3RcbiAgLy8gbW9kZWwgcm93IGlzbid0IHRoZSBmaXJzdCByb3cgKGUuZy4gb3V0bGluZWQgdmFsdWVzIGNvbWUgZmlyc3QpLCB0aGVcbiAgLy8gUHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYiBmcm9tIGBhd2FpdGAgY2FuIGNhdXNlIHRoZSByb290IHRvIGluaXRpYWxpemVcbiAgLy8gZWFnZXJseSwgc2NoZWR1bGluZyB0aGUgY29udGludWF0aW9uIGJlZm9yZSByZW1haW5pbmcgY2h1bmtzIChpbmNsdWRpbmdcbiAgLy8gcHJvbWlzZSB2YWx1ZSByb3dzKSBhcmUgcHJvY2Vzc2VkLiBBIHNpbmdsZSBjaHVuayBhdm9pZHMgdGhpcy5cbiAgbGV0IGJ1ZmZlcjogVWludDhBcnJheVxuICBpZiAoY2h1bmtzLmxlbmd0aCA9PT0gMSkge1xuICAgIGJ1ZmZlciA9IGNodW5rc1swXVxuICB9IGVsc2UgaWYgKGNodW5rcy5sZW5ndGggPiAxKSB7XG4gICAgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoc2l6ZSlcbiAgICBsZXQgb2Zmc2V0ID0gMFxuICAgIGZvciAoY29uc3QgY2h1bmsgb2YgY2h1bmtzKSB7XG4gICAgICBidWZmZXIuc2V0KGNodW5rLCBvZmZzZXQpXG4gICAgICBvZmZzZXQgKz0gY2h1bmsuYnl0ZUxlbmd0aFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBidWZmZXIgPSBuZXcgVWludDhBcnJheSgwKVxuICB9XG4gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbTxVaW50OEFycmF5Pih7XG4gICAgc3RhcnQoY29udHJvbGxlcikge1xuICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGJ1ZmZlcilcbiAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKVxuICAgIH0sXG4gIH0pXG4gIHJldHVybiB7IHN0cmVhbSwgc2l6ZSB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN0cmVhbWluZyAobm9uLWJ1ZmZlcmVkKSBwcmVmZXRjaCByZXNwb25zZSBzdHJlYW0gZm9yIGR5bmFtaWMvRnVsbFxuICogcHJlZmV0Y2hlcy4gVGhlc2UgYXJlIGVzc2VudGlhbGx5IGR5bmFtaWMgcmVzcG9uc2VzIHRoYXQgZ2V0IHN0b3JlZCBpbiB0aGVcbiAqIHByZWZldGNoIGNhY2hlIOKAlCB0aGV5IGRvbid0IGNhcnJ5IHZhcnkgcGFyYW1zIG9yIG90aGVyIGNhY2hlIG1ldGFkYXRhIHRoYXRcbiAqIHJlcXVpcmVzIHN5bmNocm9ub3VzIHRoZW5hYmxlIHJlc29sdXRpb24sIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byBidWZmZXIgdGhlbS5cbiAqIFRoZXkgc2hvdWxkIGNvbnRpbnVlIHRvIHN0cmVhbSBzbyBjb25zdW1lcnMgY2FuIHByb2Nlc3MgZGF0YSBhcyBpdCBhcnJpdmVzLlxuICovXG5mdW5jdGlvbiBjcmVhdGVJbmNyZW1lbnRhbFByZWZldGNoUmVzcG9uc2VTdHJlYW0oXG4gIG9yaWdpbmFsRmxpZ2h0U3RyZWFtOiBSZWFkYWJsZVN0cmVhbTxVaW50OEFycmF5PixcbiAgb25TdHJlYW1DbG9zZTogKCkgPT4gdm9pZCxcbiAgb25SZXNwb25zZVNpemVVcGRhdGU6IChzaXplOiBudW1iZXIpID0+IHZvaWRcbik6IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+IHtcbiAgLy8gV2hpbGUgcHJvY2Vzc2luZyB0aGUgb3JpZ2luYWwgc3RyZWFtLCB3ZSBpbmNyZW1lbnRhbGx5IHVwZGF0ZSB0aGUgc2l6ZVxuICAvLyBvZiB0aGUgY2FjaGUgZW50cnkgaW4gdGhlIExSVS5cbiAgbGV0IHRvdGFsQnl0ZUxlbmd0aCA9IDBcbiAgY29uc3QgcmVhZGVyID0gb3JpZ2luYWxGbGlnaHRTdHJlYW0uZ2V0UmVhZGVyKClcbiAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgYXN5bmMgcHVsbChjb250cm9sbGVyKSB7XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpXG4gICAgICAgIGlmICghZG9uZSkge1xuICAgICAgICAgIC8vIFBhc3MgdG8gdGhlIHRhcmdldCBzdHJlYW0gYW5kIGtlZXAgY29uc3VtaW5nIHRoZSBGbGlnaHQgcmVzcG9uc2VcbiAgICAgICAgICAvLyBmcm9tIHRoZSBzZXJ2ZXIuXG4gICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKHZhbHVlKVxuXG4gICAgICAgICAgLy8gSW5jcmVtZW50YWxseSB1cGRhdGUgdGhlIHNpemUgb2YgdGhlIGNhY2hlIGVudHJ5IGluIHRoZSBMUlUuXG4gICAgICAgICAgdG90YWxCeXRlTGVuZ3RoICs9IHZhbHVlLmJ5dGVMZW5ndGhcbiAgICAgICAgICBvblJlc3BvbnNlU2l6ZVVwZGF0ZSh0b3RhbEJ5dGVMZW5ndGgpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb250cm9sbGVyLmNsb3NlKClcbiAgICAgICAgb25TdHJlYW1DbG9zZSgpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH0sXG4gIH0pXG59XG5cbmZ1bmN0aW9uIGFkZFNlZ21lbnRQYXRoVG9VcmxJbk91dHB1dEV4cG9ydE1vZGUoXG4gIHVybDogVVJMLFxuICBzZWdtZW50UGF0aDogU2VnbWVudFJlcXVlc3RLZXlcbik6IFVSTCB7XG4gIGlmIChpc091dHB1dEV4cG9ydE1vZGUpIHtcbiAgICAvLyBJbiBvdXRwdXQ6IFwiZXhwb3J0XCIgbW9kZSwgd2UgY2Fubm90IHVzZSBhIGhlYWRlciB0byBlbmNvZGUgdGhlIHNlZ21lbnRcbiAgICAvLyBwYXRoLiBJbnN0ZWFkLCB3ZSBhcHBlbmQgaXQgdG8gdGhlIGVuZCBvZiB0aGUgcGF0aG5hbWUuXG4gICAgY29uc3Qgc3RhdGljVXJsID0gbmV3IFVSTCh1cmwpXG4gICAgY29uc3Qgcm91dGVEaXIgPSBzdGF0aWNVcmwucGF0aG5hbWUuZW5kc1dpdGgoJy8nKVxuICAgICAgPyBzdGF0aWNVcmwucGF0aG5hbWUuc2xpY2UoMCwgLTEpXG4gICAgICA6IHN0YXRpY1VybC5wYXRobmFtZVxuICAgIGNvbnN0IHN0YXRpY0V4cG9ydEZpbGVuYW1lID1cbiAgICAgIGNvbnZlcnRTZWdtZW50UGF0aFRvU3RhdGljRXhwb3J0RmlsZW5hbWUoc2VnbWVudFBhdGgpXG4gICAgc3RhdGljVXJsLnBhdGhuYW1lID0gYCR7cm91dGVEaXJ9LyR7c3RhdGljRXhwb3J0RmlsZW5hbWV9YFxuICAgIHJldHVybiBzdGF0aWNVcmxcbiAgfVxuICByZXR1cm4gdXJsXG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIG5ldyBmZXRjaCBzdHJhdGVneSBpcyBsaWtlbHkgdG8gcHJvdmlkZSBtb3JlIGNvbnRlbnQgdGhhbiB0aGUgb2xkIG9uZS5cbiAqXG4gKiBHZW5lcmFsbHksIHdoZW4gYW4gYXBwIHVzZXMgZHluYW1pYyBkYXRhLCBhIFwibW9yZSBzcGVjaWZpY1wiIGZldGNoIHN0cmF0ZWd5IGlzIGV4cGVjdGVkIHRvIHByb3ZpZGUgbW9yZSBjb250ZW50OlxuICogLSBgTG9hZGluZ0JvdW5kYXJ5YCBvbmx5IHByb3ZpZGVzIHN0YXRpYyBsYXlvdXRzXG4gKiAtIGBQUFJgIGNhbiBwcm92aWRlIHNoZWxscyBmb3IgZWFjaCBzZWdtZW50IChldmVuIGZvciBzZWdtZW50cyB0aGF0IHVzZSBkeW5hbWljIGRhdGEpXG4gKiAtIGBQUFJSdW50aW1lYCBjYW4gYWRkaXRpb25hbGx5IGluY2x1ZGUgY29udGVudCB0aGF0IHVzZXMgc2VhcmNoUGFyYW1zLCBwYXJhbXMsIG9yIGNvb2tpZXNcbiAqIC0gYEZ1bGxgIGluY2x1ZGVzIGFsbCB0aGUgY29udGVudCwgZXZlbiBpZiBpdCB1c2VzIGR5bmFtaWMgZGF0YVxuICpcbiAqIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCBhIG1vcmUgc3BlY2lmaWMgZmV0Y2ggc3RyYXRlZ3kgKndvbid0KiBnaXZlIHVzIG1vcmUgY29udGVudCBpZjpcbiAqIC0gYSBzZWdtZW50IGlzIGZ1bGx5IHN0YXRpY1xuICogICAodGhlbiwgYFBQUmAvYFBQUlJ1bnRpbWVgL2BGdWxsYCB3aWxsIGFsbCB5aWVsZCBlcXVpdmFsZW50IHJlc3VsdHMpXG4gKiAtIHByb3ZpZGluZyBzZWFyY2hQYXJhbXMvcGFyYW1zL2Nvb2tpZXMgZG9lc24ndCByZXZlYWwgYW55IG1vcmUgY29udGVudCwgZS5nLiBiZWNhdXNlIG9mIGFuIGBhd2FpdCBjb25uZWN0aW9uKClgXG4gKiAgICh0aGVuLCBgUFBSYCBhbmQgYFBQUlJ1bnRpbWVgIHdpbGwgeWllbGQgZXF1aXZhbGVudCByZXN1bHRzLCBvbmx5IGBGdWxsYCB3aWxsIGdpdmUgdXMgbW9yZSlcbiAqIEJlY2F1c2Ugb2YgdGhpcywgd2hlbiBjb21wYXJpbmcgdHdvIHNlZ21lbnRzLCB3ZSBzaG91bGQgYWxzbyBjaGVjayBpZiB0aGUgZXhpc3Rpbmcgc2VnbWVudCBpcyBwYXJ0aWFsLlxuICogSWYgaXQncyBub3QgcGFydGlhbCwgdGhlbiB0aGVyZSdzIG5vIG5lZWQgdG8gcHJlZmV0Y2ggaXQgYWdhaW4sIGV2ZW4gdXNpbmcgYSBcIm1vcmUgc3BlY2lmaWNcIiBzdHJhdGVneS5cbiAqIFRoZXJlJ3MgY3VycmVudGx5IG5vIHdheSB0byBrbm93IGlmIGBQUFJSdW50aW1lYCB3aWxsIHlpZWxkIG1vcmUgZGF0YSB0aGF0IGBQUFJgLCBzbyB3ZSBoYXZlIHRvIGFzc3VtZSBpdCB3aWxsLlxuICpcbiAqIEFsc28gbm90ZSB0aGF0LCBpbiBwcmFjdGljZSwgd2UgZG9uJ3QgZXhwZWN0IHRvIGJlIGNvbXBhcmluZyBgTG9hZGluZ0JvdW5kYXJ5YCB0byBgUFBSYC9gUFBSUnVudGltZWAsXG4gKiBiZWNhdXNlIGEgbm9uLVBQUi1lbmFibGVkIHJvdXRlIHdvdWxkbid0IGV2ZXIgdXNlIHRoZSBsYXR0ZXIgc3RyYXRlZ2llcy4gSXQgbWlnaHQgaG93ZXZlciB1c2UgYEZ1bGxgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FuTmV3RmV0Y2hTdHJhdGVneVByb3ZpZGVNb3JlQ29udGVudChcbiAgY3VycmVudFN0cmF0ZWd5OiBGZXRjaFN0cmF0ZWd5LFxuICBuZXdTdHJhdGVneTogRmV0Y2hTdHJhdGVneVxuKTogYm9vbGVhbiB7XG4gIHJldHVybiBjdXJyZW50U3RyYXRlZ3kgPCBuZXdTdHJhdGVneVxufVxuXG4vKipcbiAqIEFkZHMgdGhlIGluc3RhbnQgcHJlZmV0Y2ggaGVhZGVyIGlmIHRoZSBuYXZpZ2F0aW9uIGxvY2sgaXMgYWN0aXZlLlxuICogVXNlcyBhIGxhenkgcmVxdWlyZSB0byBlbnN1cmUgZGVhZCBjb2RlIGVsaW1pbmF0aW9uLlxuICovXG5mdW5jdGlvbiBhZGRJbnN0YW50UHJlZmV0Y2hIZWFkZXJJZkxvY2tlZChcbiAgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuKTogdm9pZCB7XG4gIGlmIChwcm9jZXNzLmVudi5fX05FWFRfRVhQT1NFX1RFU1RJTkdfQVBJKSB7XG4gICAgY29uc3QgeyBpc05hdmlnYXRpb25Mb2NrZWQgfSA9XG4gICAgICByZXF1aXJlKCcuL25hdmlnYXRpb24tdGVzdGluZy1sb2NrJykgYXMgdHlwZW9mIGltcG9ydCgnLi9uYXZpZ2F0aW9uLXRlc3RpbmctbG9jaycpXG4gICAgaWYgKGlzTmF2aWdhdGlvbkxvY2tlZCgpKSB7XG4gICAgICBoZWFkZXJzW05FWFRfSU5TVEFOVF9QUkVGRVRDSF9IRUFERVJdID0gJzEnXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldFN0YWxlQXRGcm9tSGVhZGVyKFxuICBub3c6IG51bWJlcixcbiAgcmVzcG9uc2U6IFJTQ1Jlc3BvbnNlPHVua25vd24+XG4pOiBudW1iZXIge1xuICBjb25zdCBzdGFsZVRpbWVTZWNvbmRzID0gcGFyc2VJbnQoXG4gICAgcmVzcG9uc2UuaGVhZGVycy5nZXQoTkVYVF9ST1VURVJfU1RBTEVfVElNRV9IRUFERVIpID8/ICcnLFxuICAgIDEwXG4gIClcblxuICBjb25zdCBzdGFsZVRpbWVNcyA9ICFpc05hTihzdGFsZVRpbWVTZWNvbmRzKVxuICAgID8gZ2V0U3RhbGVUaW1lTXMoc3RhbGVUaW1lU2Vjb25kcylcbiAgICA6IFNUQVRJQ19TVEFMRVRJTUVfTVNcblxuICByZXR1cm4gbm93ICsgc3RhbGVUaW1lTXNcbn1cblxuLyoqXG4gKiBSZWFkcyB0aGUgc3RhbGUgdGltZSBmcm9tIGFuIGFzeW5jIGl0ZXJhYmxlIG9yIGEgcmVzcG9uc2UgaGVhZGVyIGFuZFxuICogcmV0dXJucyBhIHN0YWxlQXQgdGltZXN0YW1wLlxuICpcbiAqIFRPRE86IEJ1ZmZlciB0aGUgcmVzcG9uc2UgYW5kIHRoZW4gcmVhZCB0aGUgaXRlcmFibGUgdmFsdWVzXG4gKiBzeW5jaHJvbm91c2x5LCBzaW1pbGFyIHRvIHJlYWRWYXJ5UGFyYW1zLiBUaGlzIHdvdWxkIGF2b2lkIHRoZSBuZWVkIHRvXG4gKiBtYWtlIHRoaXMgYXN5bmMsIGFuZCB3ZSBjb3VsZCBhbHNvIHVzZSBpdCBpblxuICogd3JpdGVEeW5hbWljVHJlZVJlc3BvbnNlSW50b0NhY2hlLiBUaGlzIHdpbGwgYWxzbyBiZSBuZWVkZWQgd2hlbiBSZWFjdFxuICogc3RhcnRzIGxlYXZpbmcgYXN5bmMgaXRlcmFibGVzIGhhbmdpbmcgd2hlbiB0aGUgb3V0ZXIgUlNDIHN0cmVhbSBpc1xuICogYWJvcnRlZCBlLmcuIGR1ZSB0byBzeW5jIEkvTyAod2l0aCB1bnN0YWJsZV9hbGxvd1BhcnRpYWxTdHJlYW0pLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U3RhbGVBdChcbiAgbm93OiBudW1iZXIsXG4gIHN0YWxlVGltZUl0ZXJhYmxlOiBBc3luY0l0ZXJhYmxlPG51bWJlcj4gfCB1bmRlZmluZWQsXG4gIHJlc3BvbnNlPzogUlNDUmVzcG9uc2U8dW5rbm93bj5cbik6IFByb21pc2U8bnVtYmVyPiB7XG4gIGlmIChzdGFsZVRpbWVJdGVyYWJsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gSXRlcmF0ZSB0aGUgYXN5bmMgaXRlcmFibGUgYW5kIHRha2UgdGhlIGxhc3QgeWllbGRlZCB2YWx1ZS4gVGhlIHNlcnZlclxuICAgIC8vIHlpZWxkcyB1cGRhdGVkIHN0YWxlVGltZSB2YWx1ZXMgZHVyaW5nIHRoZSByZW5kZXI7IHRoZSBsYXN0IG9uZSBpcyB0aGVcbiAgICAvLyBmaW5hbCBzdGFsZVRpbWUuXG4gICAgbGV0IHN0YWxlVGltZVNlY29uZHM6IG51bWJlciB8IHVuZGVmaW5lZFxuICAgIGZvciBhd2FpdCAoY29uc3QgdmFsdWUgb2Ygc3RhbGVUaW1lSXRlcmFibGUpIHtcbiAgICAgIHN0YWxlVGltZVNlY29uZHMgPSB2YWx1ZVxuICAgIH1cblxuICAgIGlmIChzdGFsZVRpbWVTZWNvbmRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHN0YWxlVGltZU1zID0gaXNOYU4oc3RhbGVUaW1lU2Vjb25kcylcbiAgICAgICAgPyBTVEFUSUNfU1RBTEVUSU1FX01TXG4gICAgICAgIDogZ2V0U3RhbGVUaW1lTXMoc3RhbGVUaW1lU2Vjb25kcylcblxuICAgICAgcmV0dXJuIG5vdyArIHN0YWxlVGltZU1zXG4gICAgfVxuICB9XG5cbiAgaWYgKHJlc3BvbnNlICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gZ2V0U3RhbGVBdEZyb21IZWFkZXIobm93LCByZXNwb25zZSlcbiAgfVxuXG4gIHJldHVybiBub3cgKyBTVEFUSUNfU1RBTEVUSU1FX01TXG59XG5cbi8qKlxuICogV3JpdGVzIHRoZSBzdGF0aWMgc3RhZ2Ugb2YgYSBuYXZpZ2F0aW9uIHJlc3BvbnNlIGludG8gdGhlIHNlZ21lbnQgY2FjaGUuXG4gKiBXaGVuIGBpc1Jlc3BvbnNlUGFydGlhbGAgaXMgZmFsc2UsIHNlZ21lbnRzIGFyZSB3cml0dGVuIGFzIG5vbi1wYXJ0aWFsIHdpdGhcbiAqIGBGZXRjaFN0cmF0ZWd5LkZ1bGxgIHNvIG5vIGR5bmFtaWMgZm9sbG93LXVwIGlzIG5lZWRlZC4gRGVmYXVsdCBzZWdtZW50c1xuICogYXJlIHNraXBwZWQgKGJ5IGB3cml0ZVNlZWREYXRhSW50b0NhY2hlYCkgdG8gYXZvaWQgY2FjaGluZyBmYWxsYmFjayBjb250ZW50XG4gKiB0aGF0IHdvdWxkIGJsb2NrIHJlZnJlc2hlcyBmcm9tIG92ZXJ3cml0aW5nIHdpdGggZHluYW1pYyBkYXRhLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVTdGF0aWNTdGFnZVJlc3BvbnNlSW50b0NhY2hlKFxuICBub3c6IG51bWJlcixcbiAgZmxpZ2h0RGF0YTogRmxpZ2h0RGF0YSxcbiAgYnVpbGRJZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBoZWFkVmFyeVBhcmFtc1RoZW5hYmxlOiBWYXJ5UGFyYW1zVGhlbmFibGUgfCBudWxsLFxuICBzdGFsZUF0OiBudW1iZXIsXG4gIGJhc2VUcmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgcmVuZGVyZWRTZWFyY2g6IHN0cmluZyxcbiAgaXNSZXNwb25zZVBhcnRpYWw6IGJvb2xlYW5cbik6IHZvaWQge1xuICBjb25zdCBmZXRjaFN0cmF0ZWd5ID0gaXNSZXNwb25zZVBhcnRpYWxcbiAgICA/IEZldGNoU3RyYXRlZ3kuUFBSXG4gICAgOiBGZXRjaFN0cmF0ZWd5LkZ1bGxcblxuICBjb25zdCBoZWFkVmFyeVBhcmFtcyA9XG4gICAgaGVhZFZhcnlQYXJhbXNUaGVuYWJsZSAhPT0gbnVsbFxuICAgICAgPyByZWFkVmFyeVBhcmFtcyhoZWFkVmFyeVBhcmFtc1RoZW5hYmxlKVxuICAgICAgOiBudWxsXG5cbiAgY29uc3QgZmxpZ2h0RGF0YXMgPSBub3JtYWxpemVGbGlnaHREYXRhKGZsaWdodERhdGEpXG4gIGlmICh0eXBlb2YgZmxpZ2h0RGF0YXMgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgY29uc3QgbmF2aWdhdGlvblNlZWQgPSBjb252ZXJ0U2VydmVyUGF0Y2hUb0Z1bGxUcmVlKFxuICAgIG5vdyxcbiAgICBiYXNlVHJlZSxcbiAgICBmbGlnaHREYXRhcyxcbiAgICByZW5kZXJlZFNlYXJjaCxcbiAgICBVbmtub3duRHluYW1pY1N0YWxlVGltZVxuICApXG4gIHdyaXRlRHluYW1pY1JlbmRlclJlc3BvbnNlSW50b0NhY2hlKFxuICAgIG5vdyxcbiAgICBmZXRjaFN0cmF0ZWd5LFxuICAgIGZsaWdodERhdGFzLFxuICAgIGJ1aWxkSWQsXG4gICAgaXNSZXNwb25zZVBhcnRpYWwsXG4gICAgaGVhZFZhcnlQYXJhbXMsXG4gICAgc3RhbGVBdCxcbiAgICBuYXZpZ2F0aW9uU2VlZCxcbiAgICBudWxsIC8vIHNwYXduZWRFbnRyaWVzIOKAlCBubyBwcmUtY3JlYXRlZCBlbnRyaWVzOyB3aWxsIGNyZWF0ZSBvciB1cHNlcnRcbiAgKVxufVxuXG4vKipcbiAqIERlY29kZXMgYW4gZW1iZWRkZWQgcnVudGltZSBwcmVmZXRjaCBGbGlnaHQgc3RyZWFtLCBub3JtYWxpemVzIHRoZSBmbGlnaHRcbiAqIGRhdGEsIGFuZCBkZXJpdmVzIGEgYE5hdmlnYXRpb25TZWVkYCBmcm9tIHRoZSBiYXNlIHRyZWUuXG4gKlxuICogUmV0dXJucyBgbnVsbGAgaWYgdGhlIHJlc3BvbnNlIHRyaWdnZXJzIGFuIE1QQSBuYXZpZ2F0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1J1bnRpbWVQcmVmZXRjaFN0cmVhbShcbiAgbm93OiBudW1iZXIsXG4gIHJ1bnRpbWVQcmVmZXRjaFN0cmVhbTogUmVhZGFibGVTdHJlYW08VWludDhBcnJheT4sXG4gIGJhc2VUcmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgcmVuZGVyZWRTZWFyY2g6IHN0cmluZ1xuKTogUHJvbWlzZTx7XG4gIGZsaWdodERhdGFzOiBOb3JtYWxpemVkRmxpZ2h0RGF0YVtdXG4gIG5hdmlnYXRpb25TZWVkOiBOYXZpZ2F0aW9uU2VlZFxuICBidWlsZElkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgaXNSZXNwb25zZVBhcnRpYWw6IGJvb2xlYW5cbiAgaGVhZFZhcnlQYXJhbXM6IFZhcnlQYXJhbXMgfCBudWxsXG4gIHN0YWxlQXQ6IG51bWJlclxufSB8IG51bGw+IHtcbiAgY29uc3QgeyBzdHJlYW0sIGlzUGFydGlhbCB9ID0gYXdhaXQgc3RyaXBJc1BhcnRpYWxCeXRlKHJ1bnRpbWVQcmVmZXRjaFN0cmVhbSlcblxuICBjb25zdCBzZXJ2ZXJEYXRhID1cbiAgICBhd2FpdCBjcmVhdGVGcm9tTmV4dFJlYWRhYmxlU3RyZWFtPE5hdmlnYXRpb25GbGlnaHRSZXNwb25zZT4oXG4gICAgICBzdHJlYW0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB7IGFsbG93UGFydGlhbFN0cmVhbTogdHJ1ZSB9XG4gICAgKVxuXG4gIGNvbnN0IGhlYWRWYXJ5UGFyYW1zVGhlbmFibGUgPSBzZXJ2ZXJEYXRhLmhcbiAgY29uc3QgaGVhZFZhcnlQYXJhbXMgPVxuICAgIGhlYWRWYXJ5UGFyYW1zVGhlbmFibGUgIT09IG51bGxcbiAgICAgID8gcmVhZFZhcnlQYXJhbXMoaGVhZFZhcnlQYXJhbXNUaGVuYWJsZSlcbiAgICAgIDogbnVsbFxuXG4gIGNvbnN0IHN0YWxlQXQgPSBhd2FpdCBnZXRTdGFsZUF0KG5vdywgc2VydmVyRGF0YS5zKVxuXG4gIGNvbnN0IGZsaWdodERhdGFzID0gbm9ybWFsaXplRmxpZ2h0RGF0YShzZXJ2ZXJEYXRhLmYpXG4gIGlmICh0eXBlb2YgZmxpZ2h0RGF0YXMgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCBuYXZpZ2F0aW9uU2VlZCA9IGNvbnZlcnRTZXJ2ZXJQYXRjaFRvRnVsbFRyZWUoXG4gICAgbm93LFxuICAgIGJhc2VUcmVlLFxuICAgIGZsaWdodERhdGFzLFxuICAgIHJlbmRlcmVkU2VhcmNoLFxuICAgIFVua25vd25EeW5hbWljU3RhbGVUaW1lXG4gIClcblxuICByZXR1cm4ge1xuICAgIGZsaWdodERhdGFzLFxuICAgIG5hdmlnYXRpb25TZWVkLFxuICAgIGJ1aWxkSWQ6IHNlcnZlckRhdGEuYixcbiAgICBpc1Jlc3BvbnNlUGFydGlhbDogaXNQYXJ0aWFsLFxuICAgIGhlYWRWYXJ5UGFyYW1zLFxuICAgIHN0YWxlQXQsXG4gIH1cbn1cblxuLyoqXG4gKiBTdHJpcHMgdGhlIGxlYWRpbmcgaXNQYXJ0aWFsIGJ5dGUgZnJvbSBhbiBSU0MgcmVzcG9uc2Ugc3RyZWFtLlxuICpcbiAqIFRoZSBzZXJ2ZXIgcHJlcGVuZHMgYSBzaW5nbGUgYnl0ZTogJ34nICgweDdlKSBmb3IgcGFydGlhbCwgJyMnICgweDIzKSBmb3JcbiAqIGNvbXBsZXRlLiBUaGVzZSBieXRlcyBjYW5ub3QgYXBwZWFyIGFzIHRoZSBmaXJzdCBieXRlIG9mIGEgdmFsaWQgUlNDIEZsaWdodFxuICogcmVzcG9uc2UgKEZsaWdodCByb3dzIHN0YXJ0IHdpdGggYSBoZXggZGlnaXQgb3IgJzonKS5cbiAqXG4gKiBJZiB0aGUgZmlyc3QgYnl0ZSBpcyBub3QgYSByZWNvZ25pemVkIG1hcmtlciwgdGhlIHN0cmVhbSBpcyByZXR1cm5lZCBpbnRhY3RcbiAqIGFuZCBgaXNQYXJ0aWFsYCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBjYWNoZWROYXZpZ2F0aW9ucyBleHBlcmltZW50YWwgZmxhZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN0cmlwSXNQYXJ0aWFsQnl0ZShcbiAgc3RyZWFtOiBSZWFkYWJsZVN0cmVhbTxVaW50OEFycmF5PlxuKTogUHJvbWlzZTx7IHN0cmVhbTogUmVhZGFibGVTdHJlYW08VWludDhBcnJheT47IGlzUGFydGlhbDogYm9vbGVhbiB9PiB7XG4gIC8vIFdoZW4gdGhlcmUgaXMgbm8gcmVjb2duaXplZCBtYXJrZXIgYnl0ZSwgdGhlIGZhbGxiYWNrIGRlcGVuZHMgb24gd2hldGhlclxuICAvLyBDYWNoZWQgTmF2aWdhdGlvbnMgaXMgZW5hYmxlZC4gV2hlbiBlbmFibGVkLCBkeW5hbWljIG5hdmlnYXRpb24gcmVzcG9uc2VzXG4gIC8vIGRvbid0IGhhdmUgYSBtYXJrZXIgYnV0IG1heSBjb250YWluIGR5bmFtaWMgaG9sZXMsIHNvIHRoZXkgYXJlIHRyZWF0ZWQgYXNcbiAgLy8gcGFydGlhbC4gV2hlbiBkaXNhYmxlZCwgdW5tYXJrZWQgcmVzcG9uc2VzIGFyZSB0cmVhdGVkIGFzIG5vbi1wYXJ0aWFsLlxuICBjb25zdCBkZWZhdWx0SXNQYXJ0aWFsID0gISFwcm9jZXNzLmVudi5fX05FWFRfRVhQRVJJTUVOVEFMX0NBQ0hFRF9OQVZJR0FUSU9OU1xuXG4gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKVxuICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpXG5cbiAgaWYgKGRvbmUgfHwgIXZhbHVlIHx8IHZhbHVlLmJ5dGVMZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RyZWFtOiBuZXcgUmVhZGFibGVTdHJlYW0oeyBzdGFydDogKGMpID0+IGMuY2xvc2UoKSB9KSxcbiAgICAgIGlzUGFydGlhbDogZGVmYXVsdElzUGFydGlhbCxcbiAgICB9XG4gIH1cblxuICBjb25zdCBmaXJzdEJ5dGUgPSB2YWx1ZVswXVxuICBjb25zdCBoYXNNYXJrZXIgPSBmaXJzdEJ5dGUgPT09IDB4MjMgfHwgZmlyc3RCeXRlID09PSAweDdlXG4gIGNvbnN0IGlzUGFydGlhbCA9IGhhc01hcmtlciA/IGZpcnN0Qnl0ZSA9PT0gMHg3ZSA6IGRlZmF1bHRJc1BhcnRpYWxcblxuICBjb25zdCByZW1haW5kZXIgPSBoYXNNYXJrZXJcbiAgICA/IHZhbHVlLmJ5dGVMZW5ndGggPiAxXG4gICAgICA/IHZhbHVlLnN1YmFycmF5KDEpXG4gICAgICA6IG51bGxcbiAgICA6IHZhbHVlXG5cbiAgcmV0dXJuIHtcbiAgICBpc1BhcnRpYWwsXG4gICAgc3RyZWFtOiBuZXcgUmVhZGFibGVTdHJlYW08VWludDhBcnJheT4oe1xuICAgICAgc3RhcnQoY29udHJvbGxlcikge1xuICAgICAgICBpZiAocmVtYWluZGVyKSB7XG4gICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKHJlbWFpbmRlcilcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGFzeW5jIHB1bGwoY29udHJvbGxlcikge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZWFkZXIucmVhZCgpXG4gICAgICAgIGlmIChyZXN1bHQuZG9uZSkge1xuICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShyZXN1bHQudmFsdWUpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSksXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJFbnRyeVN0YXR1cyIsImF0dGVtcHRUb0Z1bGZpbGxEeW5hbWljU2VnbWVudEZyb21CRkNhY2hlIiwiYXR0ZW1wdFRvVXBncmFkZVNlZ21lbnRGcm9tQkZDYWNoZSIsImNhbk5ld0ZldGNoU3RyYXRlZ3lQcm92aWRlTW9yZUNvbnRlbnQiLCJjb252ZXJ0UmV1c2VkRmxpZ2h0Um91dGVyU3RhdGVUb1JvdXRlVHJlZSIsImNvbnZlcnRSb290RmxpZ2h0Um91dGVyU3RhdGVUb1JvdXRlVHJlZSIsImNvbnZlcnRSb3V0ZVRyZWVUb0ZsaWdodFJvdXRlclN0YXRlIiwiY3JlYXRlRGV0YWNoZWRTZWdtZW50Q2FjaGVFbnRyeSIsImNyZWF0ZU1ldGFkYXRhUm91dGVUcmVlIiwiZGVwcmVjYXRlZF9yZXF1ZXN0T3B0aW1pc3RpY1JvdXRlQ2FjaGVFbnRyeSIsImZldGNoSW5saW5lZFNlZ21lbnRzT25DYWNoZU1pc3MiLCJmZXRjaFJvdXRlT25DYWNoZU1pc3MiLCJmZXRjaFNlZ21lbnRPbkNhY2hlTWlzcyIsImZldGNoU2VnbWVudFByZWZldGNoZXNVc2luZ0R5bmFtaWNSZXF1ZXN0IiwiZnVsZmlsbFJvdXRlQ2FjaGVFbnRyeSIsImdldEN1cnJlbnRSb3V0ZUNhY2hlVmVyc2lvbiIsImdldEN1cnJlbnRTZWdtZW50Q2FjaGVWZXJzaW9uIiwiZ2V0U3RhbGVBdCIsImdldFN0YWxlVGltZU1zIiwiaW52YWxpZGF0ZUVudGlyZVByZWZldGNoQ2FjaGUiLCJpbnZhbGlkYXRlUm91dGVDYWNoZUVudHJpZXMiLCJpbnZhbGlkYXRlU2VnbWVudENhY2hlRW50cmllcyIsIm1hcmtSb3V0ZUVudHJ5QXNEeW5hbWljUmV3cml0ZSIsIm92ZXJ3cml0ZVJldmFsaWRhdGluZ1NlZ21lbnRDYWNoZUVudHJ5IiwicGluZ0ludmFsaWRhdGlvbkxpc3RlbmVycyIsInByb2Nlc3NSdW50aW1lUHJlZmV0Y2hTdHJlYW0iLCJyZWFkT3JDcmVhdGVSZXZhbGlkYXRpbmdTZWdtZW50RW50cnkiLCJyZWFkT3JDcmVhdGVSb3V0ZUNhY2hlRW50cnkiLCJyZWFkT3JDcmVhdGVTZWdtZW50Q2FjaGVFbnRyeSIsInJlYWRSb3V0ZUNhY2hlRW50cnkiLCJyZWFkU2VnbWVudENhY2hlRW50cnkiLCJzdHJpcElzUGFydGlhbEJ5dGUiLCJ1cGdyYWRlVG9QZW5kaW5nU2VnbWVudCIsInVwc2VydFNlZ21lbnRFbnRyeSIsIndhaXRGb3JTZWdtZW50Q2FjaGVFbnRyeSIsIndyaXRlRHluYW1pY1JlbmRlclJlc3BvbnNlSW50b0NhY2hlIiwid3JpdGVSb3V0ZUludG9DYWNoZSIsIndyaXRlU3RhdGljU3RhZ2VSZXNwb25zZUludG9DYWNoZSIsInN0YWxlVGltZVNlY29uZHMiLCJNYXRoIiwibWF4IiwiaXNPdXRwdXRFeHBvcnRNb2RlIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiX19ORVhUX0NPTkZJR19PVVRQVVQiLCJNZXRhZGF0YU9ubHlSZXF1ZXN0VHJlZSIsInJvdXRlQ2FjaGVNYXAiLCJjcmVhdGVDYWNoZU1hcCIsInNlZ21lbnRDYWNoZU1hcCIsImludmFsaWRhdGlvbkxpc3RlbmVycyIsImN1cnJlbnRSb3V0ZUNhY2hlVmVyc2lvbiIsImN1cnJlbnRTZWdtZW50Q2FjaGVWZXJzaW9uIiwibmV4dFVybCIsInRyZWUiLCJwaW5nVmlzaWJsZUxpbmtzIiwiYXR0YWNoSW52YWxpZGF0aW9uTGlzdGVuZXIiLCJ0YXNrIiwib25JbnZhbGlkYXRlIiwiU2V0IiwiYWRkIiwibm90aWZ5SW52YWxpZGF0aW9uTGlzdGVuZXIiLCJlcnJvciIsInJlcG9ydEVycm9yIiwiY29uc29sZSIsInRhc2tzIiwiaXNQcmVmZXRjaFRhc2tEaXJ0eSIsIm5vdyIsImtleSIsInZhcnlQYXRoIiwiZ2V0Um91dGVWYXJ5UGF0aCIsInBhdGhuYW1lIiwic2VhcmNoIiwiaXNSZXZhbGlkYXRpb24iLCJleGlzdGluZ0VudHJ5IiwiZ2V0RnJvbUNhY2hlTWFwIiwiX19ORVhUX09QVElNSVNUSUNfUk9VVElORyIsIm1hdGNoS25vd25Sb3V0ZSIsInJlYWRSZXZhbGlkYXRpbmdTZWdtZW50Q2FjaGVFbnRyeSIsInBlbmRpbmdFbnRyeSIsInByb21pc2VXaXRoUmVzb2x2ZXJzIiwicHJvbWlzZSIsImNyZWF0ZVByb21pc2VXaXRoUmVzb2x2ZXJzIiwiY3JlYXRlRGV0YWNoZWRSb3V0ZUNhY2hlRW50cnkiLCJjYW5vbmljYWxVcmwiLCJzdGF0dXMiLCJibG9ja2VkVGFza3MiLCJtZXRhZGF0YSIsImNvdWxkQmVJbnRlcmNlcHRlZCIsInN1cHBvcnRzUGVyU2VnbWVudFByZWZldGNoaW5nIiwicmVuZGVyZWRTZWFyY2giLCJyZWYiLCJzaXplIiwic3RhbGVBdCIsIkluZmluaXR5IiwidmVyc2lvbiIsInNldEluQ2FjaGVNYXAiLCJyZXF1ZXN0ZWRVcmwiLCJyZXF1ZXN0ZWRTZWFyY2giLCJ1cmxXaXRob3V0U2VhcmNoUGFyYW1zIiwiVVJMIiwicm91dGVXaXRoTm9TZWFyY2hQYXJhbXMiLCJjcmVhdGVQcmVmZXRjaFJlcXVlc3RLZXkiLCJocmVmIiwiY2Fub25pY2FsVXJsRm9yUm91dGVXaXRoTm9TZWFyY2hQYXJhbXMiLCJvcmlnaW4iLCJvcHRpbWlzdGljQ2Fub25pY2FsU2VhcmNoIiwib3B0aW1pc3RpY1JlbmRlcmVkU2VhcmNoIiwib3B0aW1pc3RpY1VybCIsImxvY2F0aW9uIiwib3B0aW1pc3RpY0Nhbm9uaWNhbFVybCIsImNyZWF0ZUhyZWZGcm9tVXJsIiwib3B0aW1pc3RpY1JvdXRlVHJlZSIsImRlcHJlY2F0ZWRfY3JlYXRlT3B0aW1pc3RpY1JvdXRlVHJlZSIsIm9wdGltaXN0aWNNZXRhZGF0YVRyZWUiLCJvcHRpbWlzdGljRW50cnkiLCJoYXNEeW5hbWljUmV3cml0ZSIsIm5ld1JlbmRlcmVkU2VhcmNoIiwiY2xvbmVkU2xvdHMiLCJvcmlnaW5hbFNsb3RzIiwic2xvdHMiLCJwYXJhbGxlbFJvdXRlS2V5IiwiY2hpbGRUcmVlIiwiaXNQYWdlIiwicmVxdWVzdEtleSIsInNlZ21lbnQiLCJyZWZyZXNoU3RhdGUiLCJjbG9uZVBhZ2VWYXJ5UGF0aFdpdGhOZXdTZWFyY2hQYXJhbXMiLCJwcmVmZXRjaEhpbnRzIiwiZmV0Y2hTdHJhdGVneSIsInZhcnlQYXRoRm9yUmVxdWVzdCIsImdldFNlZ21lbnRWYXJ5UGF0aEZvclJlcXVlc3QiLCJjYW5kaWRhdGVFbnRyeSIsImlzVmFsdWVFeHBpcmVkIiwiaXNQYXJ0aWFsIiwicmVqZWN0ZWRFbnRyeSIsInJzYyIsImRlbGV0ZUZyb21DYWNoZU1hcCIsImVtcHR5RW50cnkiLCJGZXRjaFN0cmF0ZWd5IiwiUFBSIiwiRnVsbCIsImJmY2FjaGVFbnRyeSIsInJlYWRGcm9tQkZDYWNoZSIsImR5bmFtaWNQcmVmZXRjaFN0YWxlQXQiLCJuYXZpZ2F0ZWRBdCIsIlNUQVRJQ19TVEFMRVRJTUVfTVMiLCJwZW5kaW5nU2VnbWVudCIsImZ1bGZpbGxTZWdtZW50Q2FjaGVFbnRyeSIsIm5ld0VudHJ5Iiwic2VnbWVudFZhcnlQYXRoIiwidXBzZXJ0ZWQiLCJwaW5nQmxvY2tlZFRhc2tzIiwiZW50cnkiLCJwaW5nUHJlZmV0Y2hUYXNrIiwibWV0YWRhdGFWYXJ5UGF0aCIsIkhFQURfUkVRVUVTVF9LRVkiLCJnZXRSZW5kZXJlZFNlYXJjaEZyb21WYXJ5UGF0aCIsImZ1bGZpbGxlZEVudHJ5IiwiZ2V0RnVsZmlsbGVkUm91dGVWYXJ5UGF0aCIsInNlZ21lbnRDYWNoZUVudHJ5IiwicmVzb2x2ZSIsInJlamVjdFJvdXRlQ2FjaGVFbnRyeSIsInJlamVjdFNlZ21lbnRDYWNoZUVudHJ5IiwiY29udmVydFJvb3RUcmVlUHJlZmV0Y2hUb1JvdXRlVHJlZSIsInJvb3RUcmVlIiwicmVuZGVyZWRQYXRobmFtZSIsImFjYyIsInBhdGhuYW1lUGFydHMiLCJzcGxpdCIsImZpbHRlciIsInAiLCJpbmRleCIsInJvb3RTZWdtZW50IiwiUk9PVF9TRUdNRU5UX1JFUVVFU1RfS0VZIiwiY29udmVydFRyZWVQcmVmZXRjaFRvUm91dGVUcmVlIiwicHJlZmV0Y2giLCJwYXJ0aWFsVmFyeVBhdGgiLCJwYXRobmFtZVBhcnRzSW5kZXgiLCJwcmVmZXRjaFNsb3RzIiwiZmluYWxpemVMYXlvdXRWYXJ5UGF0aCIsImNoaWxkUHJlZmV0Y2giLCJjaGlsZFNlZ21lbnROYW1lIiwibmFtZSIsImNoaWxkUGFyYW0iLCJwYXJhbSIsImNoaWxkRG9lc0FwcGVhckluVVJMIiwiY2hpbGRTZWdtZW50IiwiY2hpbGRQYXJ0aWFsVmFyeVBhdGgiLCJjaGlsZFBhcmFtVmFsdWUiLCJwYXJzZUR5bmFtaWNQYXJhbUZyb21VUkxQYXJ0IiwidHlwZSIsImNoaWxkUGFyYW1LZXkiLCJnZXRDYWNoZUtleUZvckR5bmFtaWNQYXJhbSIsImFwcGVuZExheW91dFZhcnlQYXRoIiwic2libGluZ3MiLCJkb2VzU3RhdGljU2VnbWVudEFwcGVhckluVVJMIiwiY2hpbGRQYXRobmFtZVBhcnRzSW5kZXgiLCJjaGlsZFJlcXVlc3RLZXlQYXJ0IiwiY3JlYXRlU2VnbWVudFJlcXVlc3RLZXlQYXJ0IiwiY2hpbGRSZXF1ZXN0S2V5IiwiYXBwZW5kU2VnbWVudFJlcXVlc3RLZXlQYXJ0IiwiZW5kc1dpdGgiLCJQQUdFX1NFR01FTlRfS0VZIiwiZmluYWxpemVQYWdlVmFyeVBhdGgiLCJmaW5hbGl6ZU1ldGFkYXRhVmFyeVBhdGgiLCJmbGlnaHRSb3V0ZXJTdGF0ZSIsImNvbnZlcnRGbGlnaHRSb3V0ZXJTdGF0ZVRvUm91dGVUcmVlIiwicGFyZW50Um91dGVUcmVlIiwicGFyZW50UGFydGlhbFZhcnlQYXRoIiwiZ2V0UGFydGlhbFBhZ2VWYXJ5UGF0aCIsImdldFBhcnRpYWxMYXlvdXRWYXJ5UGF0aCIsInBhcmVudFJlcXVlc3RLZXkiLCJyZXF1ZXN0S2V5UGFydCIsInBhcmVudFJlbmRlcmVkU2VhcmNoIiwib3JpZ2luYWxTZWdtZW50IiwiY29tcHJlc3NlZFJlZnJlc2hTdGF0ZSIsIkFycmF5IiwiaXNBcnJheSIsInBhcmFtQ2FjaGVLZXkiLCJwYXJhbU5hbWUiLCJwYXJhbGxlbFJvdXRlcyIsImNoaWxkUm91dGVyU3RhdGUiLCJyb3V0ZVRyZWUiLCJzZWdtZW50UGF0aCIsImhlYWRlcnMiLCJSU0NfSEVBREVSIiwiTkVYVF9ST1VURVJfUFJFRkVUQ0hfSEVBREVSIiwiTkVYVF9ST1VURVJfU0VHTUVOVF9QUkVGRVRDSF9IRUFERVIiLCJORVhUX1VSTCIsImFkZEluc3RhbnRQcmVmZXRjaEhlYWRlcklmTG9ja2VkIiwidXJsIiwicmVzcG9uc2UiLCJ1cmxBZnRlclJlZGlyZWN0cyIsImhlYWRSZXNwb25zZSIsImZldGNoIiwibWV0aG9kIiwiRGF0ZSIsInJlZGlyZWN0ZWQiLCJmZXRjaFByZWZldGNoUmVzcG9uc2UiLCJhZGRTZWdtZW50UGF0aFRvVXJsSW5PdXRwdXRFeHBvcnRNb2RlIiwib2siLCJib2R5IiwidmFyeUhlYWRlciIsImdldCIsImluY2x1ZGVzIiwiY2xvc2VkIiwicm91dGVJc1BQUkVuYWJsZWQiLCJORVhUX0RJRF9QT1NUUE9ORV9IRUFERVIiLCJzdHJlYW0iLCJwcmVmZXRjaFN0cmVhbSIsInJlc3BvbnNlU2l6ZSIsImNyZWF0ZU5vblRhc2t5UHJlZmV0Y2hSZXNwb25zZVN0cmVhbSIsInNldFNpemVJbkNhY2hlTWFwIiwic2VydmVyRGF0YSIsImNyZWF0ZUZyb21OZXh0UmVhZGFibGVTdHJlYW0iLCJhbGxvd1BhcnRpYWxTdHJlYW0iLCJORVhUX05BVl9ERVBMT1lNRU5UX0lEX0hFQURFUiIsImJ1aWxkSWQiLCJnZXROYXZpZ2F0aW9uQnVpbGRJZCIsImdldFJlbmRlcmVkUGF0aG5hbWUiLCJnZXRSZW5kZXJlZFNlYXJjaCIsImRpc2NvdmVyS25vd25Sb3V0ZSIsImIiLCJoZWFkVmFyeVBhcmFtc1RoZW5hYmxlIiwiaCIsImhlYWRWYXJ5UGFyYW1zIiwicmVhZFZhcnlQYXJhbXMiLCJ3cml0ZUR5bmFtaWNUcmVlUmVzcG9uc2VJbnRvQ2FjaGUiLCJMb2FkaW5nQm91bmRhcnkiLCJmdWxmaWxsZWRWYXJ5UGF0aCIsInZhbHVlIiwicm91dGUiLCJyb3V0ZUtleSIsIm5vcm1hbGl6ZWRSZXF1ZXN0S2V5IiwicmVxdWVzdFVybCIsInN0YWxlVGltZSIsInZhcnlQYXJhbXMiLCJfX05FWFRfVkFSWV9QQVJBTVMiLCJnZXRGdWxmaWxsZWRTZWdtZW50VmFyeVBhdGgiLCJzcGF3bmVkRW50cmllcyIsInJlamVjdFNlZ21lbnRFbnRyaWVzSWZTdGlsbFBlbmRpbmciLCJmaWxsSW5saW5lZFNlZ21lbnRFbnRyaWVzIiwiaGVhZFN0YWxlQXQiLCJoZWFkIiwiaGVhZEtleSIsIm93bmVkSGVhZEVudHJ5IiwidW5kZWZpbmVkIiwiaW5saW5lZE5vZGUiLCJvd25lZEVudHJ5IiwiY2hpbGRJbmxpbmVkTm9kZSIsImR5bmFtaWNSZXF1ZXN0VHJlZSIsImhhcyIsIk5FWFRfUk9VVEVSX1NUQVRFX1RSRUVfSEVBREVSIiwicHJlcGFyZUZsaWdodFJvdXRlclN0YXRlRm9yUmVxdWVzdCIsIlBQUlJ1bnRpbWUiLCJmdWxmaWxsZWRFbnRyaWVzIiwiYnVmZmVyZWRSZXNwb25zZVNpemUiLCJjcmVhdGVJbmNyZW1lbnRhbFByZWZldGNoUmVzcG9uc2VTdHJlYW0iLCJvblJlc3BvbnNlU2l6ZVVwZGF0ZSIsInRvdGFsQnl0ZXNSZWNlaXZlZFNvRmFyIiwiYXZlcmFnZVNpemUiLCJsZW5ndGgiLCJjYWNoZURhdGEiLCJQcm9taXNlIiwiYWxsIiwicyIsImlzUmVzcG9uc2VQYXJ0aWFsIiwiZmxpZ2h0RGF0YXMiLCJub3JtYWxpemVGbGlnaHREYXRhIiwiZiIsIm5hdmlnYXRpb25TZWVkIiwiY29udmVydFNlcnZlclBhdGNoVG9GdWxsVHJlZSIsIlVua25vd25EeW5hbWljU3RhbGVUaW1lIiwib3JpZ2luYWxQYXRobmFtZSIsIm5vcm1hbGl6ZWRGbGlnaHREYXRhUmVzdWx0IiwiZmxpZ2h0RGF0YSIsImlzUm9vdFJlbmRlciIsImdldFN0YWxlQXRGcm9tSGVhZGVyIiwiZW50cmllcyIsInZhbHVlcyIsInB1c2giLCJtZXRhZGF0YVRyZWUiLCJmbGlnaHREYXRhRW50cnkiLCJzZWVkRGF0YSIsImkiLCJ3cml0ZVNlZWREYXRhSW50b0NhY2hlIiwiaXNIZWFkUGFydGlhbCIsIl9fTkVYVF9DQUNIRV9DT01QT05FTlRTIiwiZnVsZmlsbEVudHJ5U3Bhd25lZEJ5UnVudGltZVByZWZldGNoIiwiZW50cmllc093bmVkQnlDdXJyZW50VGFzayIsInZhcnlQYXJhbXNUaGVuYWJsZSIsInNlZWREYXRhQ2hpbGRyZW4iLCJjaGlsZFNlZWREYXRhIiwic2VnbWVudFZhcnlQYXJhbXMiLCJwb3NzaWJseU5ld0VudHJ5IiwiZmV0Y2hQcmlvcml0eSIsInNob3VsZEltbWVkaWF0ZWx5RGVjb2RlIiwiY3JlYXRlRmV0Y2giLCJjb250ZW50VHlwZSIsImlzRmxpZ2h0UmVzcG9uc2UiLCJzdGFydHNXaXRoIiwiUlNDX0NPTlRFTlRfVFlQRV9IRUFERVIiLCJyZWFkZXIiLCJnZXRSZWFkZXIiLCJjaHVua3MiLCJkb25lIiwicmVhZCIsImJ5dGVMZW5ndGgiLCJidWZmZXIiLCJVaW50OEFycmF5Iiwib2Zmc2V0IiwiY2h1bmsiLCJzZXQiLCJSZWFkYWJsZVN0cmVhbSIsInN0YXJ0IiwiY29udHJvbGxlciIsImVucXVldWUiLCJjbG9zZSIsIm9yaWdpbmFsRmxpZ2h0U3RyZWFtIiwib25TdHJlYW1DbG9zZSIsInRvdGFsQnl0ZUxlbmd0aCIsInB1bGwiLCJzdGF0aWNVcmwiLCJyb3V0ZURpciIsInNsaWNlIiwic3RhdGljRXhwb3J0RmlsZW5hbWUiLCJjb252ZXJ0U2VnbWVudFBhdGhUb1N0YXRpY0V4cG9ydEZpbGVuYW1lIiwiY3VycmVudFN0cmF0ZWd5IiwibmV3U3RyYXRlZ3kiLCJfX05FWFRfRVhQT1NFX1RFU1RJTkdfQVBJIiwiaXNOYXZpZ2F0aW9uTG9ja2VkIiwicmVxdWlyZSIsIk5FWFRfSU5TVEFOVF9QUkVGRVRDSF9IRUFERVIiLCJwYXJzZUludCIsIk5FWFRfUk9VVEVSX1NUQUxFX1RJTUVfSEVBREVSIiwic3RhbGVUaW1lTXMiLCJpc05hTiIsInN0YWxlVGltZUl0ZXJhYmxlIiwiYmFzZVRyZWUiLCJydW50aW1lUHJlZmV0Y2hTdHJlYW0iLCJkZWZhdWx0SXNQYXJ0aWFsIiwiX19ORVhUX0VYUEVSSU1FTlRBTF9DQUNIRURfTkFWSUdBVElPTlMiLCJjIiwiZmlyc3RCeXRlIiwiaGFzTWFya2VyIiwicmVtYWluZGVyIiwic3ViYXJyYXkiLCJyZXN1bHQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/segment-cache/cache.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/segment-cache/lru.js":
|
||
/*!***********************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/segment-cache/lru.js ***!
|
||
\***********************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n cleanup: function() {\n return cleanup;\n },\n deleteFromLru: function() {\n return deleteFromLru;\n },\n lruPut: function() {\n return lruPut;\n },\n updateLruSize: function() {\n return updateLruSize;\n }\n});\nconst _cachemap = __webpack_require__(/*! ./cache-map */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/cache-map.js\");\nconst _scheduler = __webpack_require__(/*! ./scheduler */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/scheduler.js\");\n// We use an LRU for memory management. We must update this whenever we add or\n// remove a new cache entry, or when an entry changes size.\nlet head = null;\nlet lruSize = 0;\n// TODO: I chose the max size somewhat arbitrarily. Consider setting this based\n// on navigator.deviceMemory, or some other heuristic. We should make this\n// customizable via the Next.js config, too.\nconst maxLruSize = 50 * 1024 * 1024 // 50 MB\n;\nfunction lruPut(node) {\n if (head === node) {\n // Already at the head\n return;\n }\n const prev = node.prev;\n const next = node.next;\n if (next === null || prev === null) {\n // This is an insertion\n lruSize += node.size;\n // Whenever we add an entry, we need to check if we've exceeded the\n // max size. We don't evict entries immediately; they're evicted later in\n // an asynchronous task.\n ensureCleanupIsScheduled();\n } else {\n // This is a move. Remove from its current position.\n prev.next = next;\n next.prev = prev;\n }\n // Move to the front of the list\n if (head === null) {\n // This is the first entry\n node.prev = node;\n node.next = node;\n } else {\n // Add to the front of the list\n const tail = head.prev;\n node.prev = tail;\n // In practice, this is never null, but that isn't encoded in the type\n if (tail !== null) {\n tail.next = node;\n }\n node.next = head;\n head.prev = node;\n }\n head = node;\n}\nfunction updateLruSize(node, newNodeSize) {\n // This is a separate function from `put` so that we can resize the entry\n // regardless of whether it's currently being tracked by the LRU.\n const prevNodeSize = node.size;\n node.size = newNodeSize;\n if (node.next === null) {\n // This entry is not currently being tracked by the LRU.\n return;\n }\n // Update the total LRU size\n lruSize = lruSize - prevNodeSize + newNodeSize;\n ensureCleanupIsScheduled();\n}\nfunction deleteFromLru(deleted) {\n const next = deleted.next;\n const prev = deleted.prev;\n if (next !== null && prev !== null) {\n lruSize -= deleted.size;\n deleted.next = null;\n deleted.prev = null;\n // Remove from the list\n if (head === deleted) {\n // Update the head\n if (next === head) {\n // This was the last entry\n head = null;\n } else {\n head = next;\n prev.next = next;\n next.prev = prev;\n }\n } else {\n prev.next = next;\n next.prev = prev;\n }\n } else {\n // Already deleted\n }\n}\nfunction ensureCleanupIsScheduled() {\n if (lruSize <= maxLruSize) {\n return;\n }\n // To schedule cleanup, ping the prefetch scheduler. At the end of its work\n // loop, once there are no queued tasks and no in-progress requests, it will\n // call cleanup().\n (0, _scheduler.pingPrefetchScheduler)();\n}\nfunction cleanup() {\n if (lruSize <= maxLruSize) {\n return;\n }\n // Evict entries until we're at 90% capacity. We can assume this won't\n // infinite loop because even if `maxLruSize` were 0, eventually\n // `deleteFromLru` sets `head` to `null` when we run out entries.\n const ninetyPercentMax = maxLruSize * 0.9;\n while(lruSize > ninetyPercentMax && head !== null){\n const tail = head.prev;\n // In practice, this is never null, but that isn't encoded in the type\n if (tail !== null) {\n // Delete the entry from the map. In turn, this will remove it from\n // the LRU.\n (0, _cachemap.deleteMapEntry)(tail);\n }\n }\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=lru.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3NlZ21lbnQtY2FjaGUvbHJ1LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQTRHZ0JBLE9BQU87ZUFBUEE7O0lBeENBQyxhQUFhO2VBQWJBOztJQXJEQUMsTUFBTTtlQUFOQTs7SUF1Q0FDLGFBQWE7ZUFBYkE7OztzQ0F0RGU7dUNBRU87QUFFdEMsOEVBQThFO0FBQzlFLDJEQUEyRDtBQUUzRCxJQUFJQyxPQUErQjtBQUNuQyxJQUFJQyxVQUFrQjtBQUV0QiwrRUFBK0U7QUFDL0UsMEVBQTBFO0FBQzFFLDRDQUE0QztBQUM1QyxNQUFNQyxhQUFhLEtBQUssT0FBTyxLQUFLLFFBQVE7O0FBRXJDLFNBQVNKLE9BQU9LLElBQXFCO0lBQzFDLElBQUlILFNBQVNHLE1BQU07UUFDakIsc0JBQXNCO1FBQ3RCO0lBQ0Y7SUFDQSxNQUFNQyxPQUFPRCxLQUFLQyxJQUFJO0lBQ3RCLE1BQU1DLE9BQU9GLEtBQUtFLElBQUk7SUFDdEIsSUFBSUEsU0FBUyxRQUFRRCxTQUFTLE1BQU07UUFDbEMsdUJBQXVCO1FBQ3ZCSCxXQUFXRSxLQUFLRyxJQUFJO1FBQ3BCLG1FQUFtRTtRQUNuRSx5RUFBeUU7UUFDekUsd0JBQXdCO1FBQ3hCQztJQUNGLE9BQU87UUFDTCxvREFBb0Q7UUFDcERILEtBQUtDLElBQUksR0FBR0E7UUFDWkEsS0FBS0QsSUFBSSxHQUFHQTtJQUNkO0lBRUEsZ0NBQWdDO0lBQ2hDLElBQUlKLFNBQVMsTUFBTTtRQUNqQiwwQkFBMEI7UUFDMUJHLEtBQUtDLElBQUksR0FBR0Q7UUFDWkEsS0FBS0UsSUFBSSxHQUFHRjtJQUNkLE9BQU87UUFDTCwrQkFBK0I7UUFDL0IsTUFBTUssT0FBT1IsS0FBS0ksSUFBSTtRQUN0QkQsS0FBS0MsSUFBSSxHQUFHSTtRQUNaLHNFQUFzRTtRQUN0RSxJQUFJQSxTQUFTLE1BQU07WUFDakJBLEtBQUtILElBQUksR0FBR0Y7UUFDZDtRQUNBQSxLQUFLRSxJQUFJLEdBQUdMO1FBQ1pBLEtBQUtJLElBQUksR0FBR0Q7SUFDZDtJQUNBSCxPQUFPRztBQUNUO0FBRU8sU0FBU0osY0FBY0ksSUFBcUIsRUFBRU0sV0FBbUI7SUFDdEUseUVBQXlFO0lBQ3pFLGlFQUFpRTtJQUNqRSxNQUFNQyxlQUFlUCxLQUFLRyxJQUFJO0lBQzlCSCxLQUFLRyxJQUFJLEdBQUdHO0lBQ1osSUFBSU4sS0FBS0UsSUFBSSxLQUFLLE1BQU07UUFDdEIsd0RBQXdEO1FBQ3hEO0lBQ0Y7SUFDQSw0QkFBNEI7SUFDNUJKLFVBQVVBLFVBQVVTLGVBQWVEO0lBQ25DRjtBQUNGO0FBRU8sU0FBU1YsY0FBY2MsT0FBd0I7SUFDcEQsTUFBTU4sT0FBT00sUUFBUU4sSUFBSTtJQUN6QixNQUFNRCxPQUFPTyxRQUFRUCxJQUFJO0lBQ3pCLElBQUlDLFNBQVMsUUFBUUQsU0FBUyxNQUFNO1FBQ2xDSCxXQUFXVSxRQUFRTCxJQUFJO1FBRXZCSyxRQUFRTixJQUFJLEdBQUc7UUFDZk0sUUFBUVAsSUFBSSxHQUFHO1FBRWYsdUJBQXVCO1FBQ3ZCLElBQUlKLFNBQVNXLFNBQVM7WUFDcEIsa0JBQWtCO1lBQ2xCLElBQUlOLFNBQVNMLE1BQU07Z0JBQ2pCLDBCQUEwQjtnQkFDMUJBLE9BQU87WUFDVCxPQUFPO2dCQUNMQSxPQUFPSztnQkFDUEQsS0FBS0MsSUFBSSxHQUFHQTtnQkFDWkEsS0FBS0QsSUFBSSxHQUFHQTtZQUNkO1FBQ0YsT0FBTztZQUNMQSxLQUFLQyxJQUFJLEdBQUdBO1lBQ1pBLEtBQUtELElBQUksR0FBR0E7UUFDZDtJQUNGLE9BQU87SUFDTCxrQkFBa0I7SUFDcEI7QUFDRjtBQUVBLFNBQVNHO0lBQ1AsSUFBSU4sV0FBV0MsWUFBWTtRQUN6QjtJQUNGO0lBRUEsMkVBQTJFO0lBQzNFLDRFQUE0RTtJQUM1RSxrQkFBa0I7SUFDbEJVLENBQUFBLEdBQUFBLFdBQUFBLHFCQUFBQTtBQUNGO0FBRU8sU0FBU2hCO0lBQ2QsSUFBSUssV0FBV0MsWUFBWTtRQUN6QjtJQUNGO0lBRUEsc0VBQXNFO0lBQ3RFLGdFQUFnRTtJQUNoRSxpRUFBaUU7SUFDakUsTUFBTVcsbUJBQW1CWCxhQUFhO0lBQ3RDLE1BQU9ELFVBQVVZLG9CQUFvQmIsU0FBUyxLQUFNO1FBQ2xELE1BQU1RLE9BQU9SLEtBQUtJLElBQUk7UUFDdEIsc0VBQXNFO1FBQ3RFLElBQUlJLFNBQVMsTUFBTTtZQUNqQixtRUFBbUU7WUFDbkUsV0FBVztZQUNYTSxDQUFBQSxHQUFBQSxVQUFBQSxjQUFBQSxFQUFlTjtRQUNqQjtJQUNGO0FBQ0YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvY2xpZW50L2NvbXBvbmVudHMvc2VnbWVudC1jYWNoZS9scnUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVsZXRlTWFwRW50cnkgfSBmcm9tICcuL2NhY2hlLW1hcCdcbmltcG9ydCB0eXBlIHsgVW5rbm93bk1hcEVudHJ5IH0gZnJvbSAnLi9jYWNoZS1tYXAnXG5pbXBvcnQgeyBwaW5nUHJlZmV0Y2hTY2hlZHVsZXIgfSBmcm9tICcuL3NjaGVkdWxlcidcblxuLy8gV2UgdXNlIGFuIExSVSBmb3IgbWVtb3J5IG1hbmFnZW1lbnQuIFdlIG11c3QgdXBkYXRlIHRoaXMgd2hlbmV2ZXIgd2UgYWRkIG9yXG4vLyByZW1vdmUgYSBuZXcgY2FjaGUgZW50cnksIG9yIHdoZW4gYW4gZW50cnkgY2hhbmdlcyBzaXplLlxuXG5sZXQgaGVhZDogVW5rbm93bk1hcEVudHJ5IHwgbnVsbCA9IG51bGxcbmxldCBscnVTaXplOiBudW1iZXIgPSAwXG5cbi8vIFRPRE86IEkgY2hvc2UgdGhlIG1heCBzaXplIHNvbWV3aGF0IGFyYml0cmFyaWx5LiBDb25zaWRlciBzZXR0aW5nIHRoaXMgYmFzZWRcbi8vIG9uIG5hdmlnYXRvci5kZXZpY2VNZW1vcnksIG9yIHNvbWUgb3RoZXIgaGV1cmlzdGljLiBXZSBzaG91bGQgbWFrZSB0aGlzXG4vLyBjdXN0b21pemFibGUgdmlhIHRoZSBOZXh0LmpzIGNvbmZpZywgdG9vLlxuY29uc3QgbWF4THJ1U2l6ZSA9IDUwICogMTAyNCAqIDEwMjQgLy8gNTAgTUJcblxuZXhwb3J0IGZ1bmN0aW9uIGxydVB1dChub2RlOiBVbmtub3duTWFwRW50cnkpIHtcbiAgaWYgKGhlYWQgPT09IG5vZGUpIHtcbiAgICAvLyBBbHJlYWR5IGF0IHRoZSBoZWFkXG4gICAgcmV0dXJuXG4gIH1cbiAgY29uc3QgcHJldiA9IG5vZGUucHJldlxuICBjb25zdCBuZXh0ID0gbm9kZS5uZXh0XG4gIGlmIChuZXh0ID09PSBudWxsIHx8IHByZXYgPT09IG51bGwpIHtcbiAgICAvLyBUaGlzIGlzIGFuIGluc2VydGlvblxuICAgIGxydVNpemUgKz0gbm9kZS5zaXplXG4gICAgLy8gV2hlbmV2ZXIgd2UgYWRkIGFuIGVudHJ5LCB3ZSBuZWVkIHRvIGNoZWNrIGlmIHdlJ3ZlIGV4Y2VlZGVkIHRoZVxuICAgIC8vIG1heCBzaXplLiBXZSBkb24ndCBldmljdCBlbnRyaWVzIGltbWVkaWF0ZWx5OyB0aGV5J3JlIGV2aWN0ZWQgbGF0ZXIgaW5cbiAgICAvLyBhbiBhc3luY2hyb25vdXMgdGFzay5cbiAgICBlbnN1cmVDbGVhbnVwSXNTY2hlZHVsZWQoKVxuICB9IGVsc2Uge1xuICAgIC8vIFRoaXMgaXMgYSBtb3ZlLiBSZW1vdmUgZnJvbSBpdHMgY3VycmVudCBwb3NpdGlvbi5cbiAgICBwcmV2Lm5leHQgPSBuZXh0XG4gICAgbmV4dC5wcmV2ID0gcHJldlxuICB9XG5cbiAgLy8gTW92ZSB0byB0aGUgZnJvbnQgb2YgdGhlIGxpc3RcbiAgaWYgKGhlYWQgPT09IG51bGwpIHtcbiAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCBlbnRyeVxuICAgIG5vZGUucHJldiA9IG5vZGVcbiAgICBub2RlLm5leHQgPSBub2RlXG4gIH0gZWxzZSB7XG4gICAgLy8gQWRkIHRvIHRoZSBmcm9udCBvZiB0aGUgbGlzdFxuICAgIGNvbnN0IHRhaWwgPSBoZWFkLnByZXZcbiAgICBub2RlLnByZXYgPSB0YWlsXG4gICAgLy8gSW4gcHJhY3RpY2UsIHRoaXMgaXMgbmV2ZXIgbnVsbCwgYnV0IHRoYXQgaXNuJ3QgZW5jb2RlZCBpbiB0aGUgdHlwZVxuICAgIGlmICh0YWlsICE9PSBudWxsKSB7XG4gICAgICB0YWlsLm5leHQgPSBub2RlXG4gICAgfVxuICAgIG5vZGUubmV4dCA9IGhlYWRcbiAgICBoZWFkLnByZXYgPSBub2RlXG4gIH1cbiAgaGVhZCA9IG5vZGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUxydVNpemUobm9kZTogVW5rbm93bk1hcEVudHJ5LCBuZXdOb2RlU2l6ZTogbnVtYmVyKSB7XG4gIC8vIFRoaXMgaXMgYSBzZXBhcmF0ZSBmdW5jdGlvbiBmcm9tIGBwdXRgIHNvIHRoYXQgd2UgY2FuIHJlc2l6ZSB0aGUgZW50cnlcbiAgLy8gcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0J3MgY3VycmVudGx5IGJlaW5nIHRyYWNrZWQgYnkgdGhlIExSVS5cbiAgY29uc3QgcHJldk5vZGVTaXplID0gbm9kZS5zaXplXG4gIG5vZGUuc2l6ZSA9IG5ld05vZGVTaXplXG4gIGlmIChub2RlLm5leHQgPT09IG51bGwpIHtcbiAgICAvLyBUaGlzIGVudHJ5IGlzIG5vdCBjdXJyZW50bHkgYmVpbmcgdHJhY2tlZCBieSB0aGUgTFJVLlxuICAgIHJldHVyblxuICB9XG4gIC8vIFVwZGF0ZSB0aGUgdG90YWwgTFJVIHNpemVcbiAgbHJ1U2l6ZSA9IGxydVNpemUgLSBwcmV2Tm9kZVNpemUgKyBuZXdOb2RlU2l6ZVxuICBlbnN1cmVDbGVhbnVwSXNTY2hlZHVsZWQoKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVsZXRlRnJvbUxydShkZWxldGVkOiBVbmtub3duTWFwRW50cnkpIHtcbiAgY29uc3QgbmV4dCA9IGRlbGV0ZWQubmV4dFxuICBjb25zdCBwcmV2ID0gZGVsZXRlZC5wcmV2XG4gIGlmIChuZXh0ICE9PSBudWxsICYmIHByZXYgIT09IG51bGwpIHtcbiAgICBscnVTaXplIC09IGRlbGV0ZWQuc2l6ZVxuXG4gICAgZGVsZXRlZC5uZXh0ID0gbnVsbFxuICAgIGRlbGV0ZWQucHJldiA9IG51bGxcblxuICAgIC8vIFJlbW92ZSBmcm9tIHRoZSBsaXN0XG4gICAgaWYgKGhlYWQgPT09IGRlbGV0ZWQpIHtcbiAgICAgIC8vIFVwZGF0ZSB0aGUgaGVhZFxuICAgICAgaWYgKG5leHQgPT09IGhlYWQpIHtcbiAgICAgICAgLy8gVGhpcyB3YXMgdGhlIGxhc3QgZW50cnlcbiAgICAgICAgaGVhZCA9IG51bGxcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhlYWQgPSBuZXh0XG4gICAgICAgIHByZXYubmV4dCA9IG5leHRcbiAgICAgICAgbmV4dC5wcmV2ID0gcHJldlxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwcmV2Lm5leHQgPSBuZXh0XG4gICAgICBuZXh0LnByZXYgPSBwcmV2XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIEFscmVhZHkgZGVsZXRlZFxuICB9XG59XG5cbmZ1bmN0aW9uIGVuc3VyZUNsZWFudXBJc1NjaGVkdWxlZCgpIHtcbiAgaWYgKGxydVNpemUgPD0gbWF4THJ1U2l6ZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gVG8gc2NoZWR1bGUgY2xlYW51cCwgcGluZyB0aGUgcHJlZmV0Y2ggc2NoZWR1bGVyLiBBdCB0aGUgZW5kIG9mIGl0cyB3b3JrXG4gIC8vIGxvb3AsIG9uY2UgdGhlcmUgYXJlIG5vIHF1ZXVlZCB0YXNrcyBhbmQgbm8gaW4tcHJvZ3Jlc3MgcmVxdWVzdHMsIGl0IHdpbGxcbiAgLy8gY2FsbCBjbGVhbnVwKCkuXG4gIHBpbmdQcmVmZXRjaFNjaGVkdWxlcigpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICBpZiAobHJ1U2l6ZSA8PSBtYXhMcnVTaXplKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBFdmljdCBlbnRyaWVzIHVudGlsIHdlJ3JlIGF0IDkwJSBjYXBhY2l0eS4gV2UgY2FuIGFzc3VtZSB0aGlzIHdvbid0XG4gIC8vIGluZmluaXRlIGxvb3AgYmVjYXVzZSBldmVuIGlmIGBtYXhMcnVTaXplYCB3ZXJlIDAsIGV2ZW50dWFsbHlcbiAgLy8gYGRlbGV0ZUZyb21McnVgIHNldHMgYGhlYWRgIHRvIGBudWxsYCB3aGVuIHdlIHJ1biBvdXQgZW50cmllcy5cbiAgY29uc3QgbmluZXR5UGVyY2VudE1heCA9IG1heExydVNpemUgKiAwLjlcbiAgd2hpbGUgKGxydVNpemUgPiBuaW5ldHlQZXJjZW50TWF4ICYmIGhlYWQgIT09IG51bGwpIHtcbiAgICBjb25zdCB0YWlsID0gaGVhZC5wcmV2XG4gICAgLy8gSW4gcHJhY3RpY2UsIHRoaXMgaXMgbmV2ZXIgbnVsbCwgYnV0IHRoYXQgaXNuJ3QgZW5jb2RlZCBpbiB0aGUgdHlwZVxuICAgIGlmICh0YWlsICE9PSBudWxsKSB7XG4gICAgICAvLyBEZWxldGUgdGhlIGVudHJ5IGZyb20gdGhlIG1hcC4gSW4gdHVybiwgdGhpcyB3aWxsIHJlbW92ZSBpdCBmcm9tXG4gICAgICAvLyB0aGUgTFJVLlxuICAgICAgZGVsZXRlTWFwRW50cnkodGFpbClcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJjbGVhbnVwIiwiZGVsZXRlRnJvbUxydSIsImxydVB1dCIsInVwZGF0ZUxydVNpemUiLCJoZWFkIiwibHJ1U2l6ZSIsIm1heExydVNpemUiLCJub2RlIiwicHJldiIsIm5leHQiLCJzaXplIiwiZW5zdXJlQ2xlYW51cElzU2NoZWR1bGVkIiwidGFpbCIsIm5ld05vZGVTaXplIiwicHJldk5vZGVTaXplIiwiZGVsZXRlZCIsInBpbmdQcmVmZXRjaFNjaGVkdWxlciIsIm5pbmV0eVBlcmNlbnRNYXgiLCJkZWxldGVNYXBFbnRyeSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/segment-cache/lru.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/segment-cache/navigation-testing-lock.js":
|
||
/*!*******************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/segment-cache/navigation-testing-lock.js ***!
|
||
\*******************************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * Navigation lock for the Instant Navigation Testing API.\n *\n * Manages the in-memory lock (a promise) that gates dynamic data writes\n * during instant navigation captures, and owns all cookie state\n * transitions (pending → captured-MPA, pending → captured-SPA).\n *\n * External actors (Playwright, devtools) set [0] to start a lock scope\n * and delete the cookie to end one. Next.js writes captured values.\n * The CookieStore handler distinguishes them by value: pending = external,\n * captured = self-write (ignored).\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n isNavigationLocked: function() {\n return isNavigationLocked;\n },\n startListeningForInstantNavigationCookie: function() {\n return startListeningForInstantNavigationCookie;\n },\n transitionToCapturedSPA: function() {\n return transitionToCapturedSPA;\n },\n updateCapturedSPAToTree: function() {\n return updateCapturedSPAToTree;\n },\n waitForNavigationLockIfActive: function() {\n return waitForNavigationLockIfActive;\n }\n});\nconst _approuterheaders = __webpack_require__(/*! ../app-router-headers */ \"(ssr)/./node_modules/next/dist/client/components/app-router-headers.js\");\nconst _useactionqueue = __webpack_require__(/*! ../use-action-queue */ \"(ssr)/./node_modules/next/dist/client/components/use-action-queue.js\");\nfunction parseCookieValue(raw) {\n try {\n const parsed = JSON.parse(raw);\n if (Array.isArray(parsed) && parsed.length >= 3) {\n const rawState = parsed[2];\n return rawState === null ? 'mpa' : 'spa';\n }\n } catch {}\n return 'pending';\n}\nfunction writeCookieValue(value) {\n if (typeof cookieStore === 'undefined') {\n return;\n }\n // Read the existing cookie to preserve its attributes (domain, path),\n // then write back with the new value. This updates the same cookie\n // entry that the external actor created, regardless of how it was\n // scoped.\n cookieStore.get(_approuterheaders.NEXT_INSTANT_TEST_COOKIE).then((existing)=>{\n if (existing) {\n const options = {\n name: _approuterheaders.NEXT_INSTANT_TEST_COOKIE,\n value: JSON.stringify(value),\n path: existing.path ?? '/'\n };\n if (existing.domain) {\n options.domain = existing.domain;\n }\n cookieStore.set(options);\n }\n });\n}\nlet lockState = null;\nfunction acquireLock() {\n if (lockState !== null) {\n return;\n }\n let resolve;\n const promise = new Promise((r)=>{\n resolve = r;\n });\n lockState = {\n promise,\n resolve: resolve\n };\n}\nfunction releaseLock() {\n if (lockState !== null) {\n lockState.resolve();\n lockState = null;\n }\n}\nfunction startListeningForInstantNavigationCookie() {\n if (true) {\n // If the server served a static shell, this is an MPA page load\n // while the lock is held. Transition to captured-MPA and acquire.\n if (self.__next_instant_test) {\n if (typeof cookieStore !== 'undefined') {\n // If the cookie was already cleared during the MPA page\n // transition, reload to get the full dynamic page.\n cookieStore.get(_approuterheaders.NEXT_INSTANT_TEST_COOKIE).then((cookie)=>{\n if (!cookie) {\n window.location.reload();\n }\n });\n }\n writeCookieValue([\n 1,\n `c${Math.random()}`,\n null\n ]);\n acquireLock();\n }\n if (typeof cookieStore === 'undefined') {\n return;\n }\n cookieStore.addEventListener('change', (event)=>{\n for (const cookie of event.changed){\n if (cookie.name === _approuterheaders.NEXT_INSTANT_TEST_COOKIE) {\n const state = parseCookieValue(cookie.value ?? '');\n if (state !== 'pending') {\n // Captured value — our own transition. Ignore.\n return;\n }\n // Pending value — external actor starting a new lock scope.\n if (lockState !== null) {\n releaseLock();\n }\n acquireLock();\n return;\n }\n }\n for (const cookie of event.deleted){\n if (cookie.name === _approuterheaders.NEXT_INSTANT_TEST_COOKIE) {\n releaseLock();\n (0, _useactionqueue.refreshOnInstantNavigationUnlock)();\n return;\n }\n }\n });\n }\n}\nfunction transitionToCapturedSPA(fromTree, toTree) {\n if (true) {\n writeCookieValue([\n 1,\n `c${Math.random()}`,\n {\n from: fromTree,\n to: toTree\n }\n ]);\n }\n}\nfunction updateCapturedSPAToTree(fromTree, toTree) {\n if (true) {\n writeCookieValue([\n 1,\n `c${Math.random()}`,\n {\n from: fromTree,\n to: toTree\n }\n ]);\n }\n}\nfunction isNavigationLocked() {\n if (true) {\n return lockState !== null;\n }\n return false;\n}\nasync function waitForNavigationLockIfActive() {\n if (true) {\n if (lockState !== null) {\n await lockState.promise;\n }\n }\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=navigation-testing-lock.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3NlZ21lbnQtY2FjaGUvbmF2aWdhdGlvbi10ZXN0aW5nLWxvY2suanMiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0NBV0M7Ozs7Ozs7Ozs7OztJQTBLZUEsa0JBQWtCO2VBQWxCQTs7SUFyRkFDLHdDQUF3QztlQUF4Q0E7O0lBNERBQyx1QkFBdUI7ZUFBdkJBOztJQWFBQyx1QkFBdUI7ZUFBdkJBOztJQXVCTUMsNkJBQTZCO2VBQTdCQTs7OzhDQWxMbUI7NENBQ1E7QUFnQmpELFNBQVNDLGlCQUFpQkMsR0FBVztJQUNuQyxJQUFJO1FBQ0YsTUFBTUMsU0FBU0MsS0FBS0MsS0FBSyxDQUFDSDtRQUMxQixJQUFJSSxNQUFNQyxPQUFPLENBQUNKLFdBQVdBLE9BQU9LLE1BQU0sSUFBSSxHQUFHO1lBQy9DLE1BQU1DLFdBQVdOLE1BQU0sQ0FBQyxFQUFFO1lBQzFCLE9BQU9NLGFBQWEsT0FBTyxRQUFRO1FBQ3JDO0lBQ0YsRUFBRSxPQUFNLENBQUM7SUFDVCxPQUFPO0FBQ1Q7QUFFQSxTQUFTQyxpQkFBaUJDLEtBQW9CO0lBQzVDLElBQUksT0FBT0MsZ0JBQWdCLGFBQWE7UUFDdEM7SUFDRjtJQUNBLHNFQUFzRTtJQUN0RSxtRUFBbUU7SUFDbkUsa0VBQWtFO0lBQ2xFLFVBQVU7SUFDVkEsWUFBWUMsR0FBRyxDQUFDQyxrQkFBQUEsd0JBQXdCLEVBQUVDLElBQUksQ0FBQyxDQUFDQztRQUM5QyxJQUFJQSxVQUFVO1lBQ1osTUFBTUMsVUFBZTtnQkFDbkJDLE1BQU1KLGtCQUFBQSx3QkFBd0I7Z0JBQzlCSCxPQUFPUCxLQUFLZSxTQUFTLENBQUNSO2dCQUN0QlMsTUFBTUosU0FBU0ksSUFBSSxJQUFJO1lBQ3pCO1lBQ0EsSUFBSUosU0FBU0ssTUFBTSxFQUFFO2dCQUNuQkosUUFBUUksTUFBTSxHQUFHTCxTQUFTSyxNQUFNO1lBQ2xDO1lBQ0FULFlBQVlVLEdBQUcsQ0FBQ0w7UUFDbEI7SUFDRjtBQUNGO0FBT0EsSUFBSU0sWUFBd0M7QUFFNUMsU0FBU0M7SUFDUCxJQUFJRCxjQUFjLE1BQU07UUFDdEI7SUFDRjtJQUNBLElBQUlFO0lBQ0osTUFBTUMsVUFBVSxJQUFJQyxRQUFjLENBQUNDO1FBQ2pDSCxVQUFVRztJQUNaO0lBQ0FMLFlBQVk7UUFBRUc7UUFBU0QsU0FBU0E7SUFBUztBQUMzQztBQUVBLFNBQVNJO0lBQ1AsSUFBSU4sY0FBYyxNQUFNO1FBQ3RCQSxVQUFVRSxPQUFPO1FBQ2pCRixZQUFZO0lBQ2Q7QUFDRjtBQVFPLFNBQVMxQjtJQUNkLElBQUlpQyxJQUFxQyxFQUFFO1FBQ3pDLGdFQUFnRTtRQUNoRSxrRUFBa0U7UUFDbEUsSUFBSUcsS0FBS0MsbUJBQW1CLEVBQUU7WUFDNUIsSUFBSSxPQUFPdEIsZ0JBQWdCLGFBQWE7Z0JBQ3RDLHdEQUF3RDtnQkFDeEQsbURBQW1EO2dCQUNuREEsWUFBWUMsR0FBRyxDQUFDQyxrQkFBQUEsd0JBQXdCLEVBQUVDLElBQUksQ0FBQyxDQUFDb0I7b0JBQzlDLElBQUksQ0FBQ0EsUUFBUTt3QkFDWEMsT0FBT0MsUUFBUSxDQUFDQyxNQUFNO29CQUN4QjtnQkFDRjtZQUNGO1lBRUE1QixpQkFBaUI7Z0JBQUM7Z0JBQUcsQ0FBQyxDQUFDLEVBQUU2QixLQUFLQyxNQUFNLElBQUk7Z0JBQUU7YUFBSztZQUMvQ2hCO1FBQ0Y7UUFFQSxJQUFJLE9BQU9aLGdCQUFnQixhQUFhO1lBQ3RDO1FBQ0Y7UUFFQUEsWUFBWTZCLGdCQUFnQixDQUFDLFVBQVUsQ0FBQ0M7WUFDdEMsS0FBSyxNQUFNUCxVQUFVTyxNQUFNQyxPQUFPLENBQUU7Z0JBQ2xDLElBQUlSLE9BQU9qQixJQUFJLEtBQUtKLGtCQUFBQSx3QkFBd0IsRUFBRTtvQkFDNUMsTUFBTThCLFFBQVEzQyxpQkFBaUJrQyxPQUFPeEIsS0FBSyxJQUFJO29CQUUvQyxJQUFJaUMsVUFBVSxXQUFXO3dCQUN2QiwrQ0FBK0M7d0JBQy9DO29CQUNGO29CQUVBLDREQUE0RDtvQkFDNUQsSUFBSXJCLGNBQWMsTUFBTTt3QkFDdEJNO29CQUNGO29CQUNBTDtvQkFDQTtnQkFDRjtZQUNGO1lBRUEsS0FBSyxNQUFNVyxVQUFVTyxNQUFNRyxPQUFPLENBQUU7Z0JBQ2xDLElBQUlWLE9BQU9qQixJQUFJLEtBQUtKLGtCQUFBQSx3QkFBd0IsRUFBRTtvQkFDNUNlO29CQUNBaUIsQ0FBQUEsR0FBQUEsZ0JBQUFBLGdDQUFBQTtvQkFDQTtnQkFDRjtZQUNGO1FBQ0Y7SUFDRjtBQUNGO0FBU08sU0FBU2hELHdCQUNkaUQsUUFBMkIsRUFDM0JDLE1BQWdDO0lBRWhDLElBQUlsQixJQUFxQyxFQUFFO1FBQ3pDcEIsaUJBQWlCO1lBQUM7WUFBRyxDQUFDLENBQUMsRUFBRTZCLEtBQUtDLE1BQU0sSUFBSTtZQUFFO2dCQUFFUyxNQUFNRjtnQkFBVUcsSUFBSUY7WUFBTztTQUFFO0lBQzNFO0FBQ0Y7QUFNTyxTQUFTakQsd0JBQ2RnRCxRQUEyQixFQUMzQkMsTUFBeUI7SUFFekIsSUFBSWxCLElBQXFDLEVBQUU7UUFDekNwQixpQkFBaUI7WUFBQztZQUFHLENBQUMsQ0FBQyxFQUFFNkIsS0FBS0MsTUFBTSxJQUFJO1lBQUU7Z0JBQUVTLE1BQU1GO2dCQUFVRyxJQUFJRjtZQUFPO1NBQUU7SUFDM0U7QUFDRjtBQUtPLFNBQVNwRDtJQUNkLElBQUlrQyxJQUFxQyxFQUFFO1FBQ3pDLE9BQU9QLGNBQWM7SUFDdkI7SUFDQSxPQUFPO0FBQ1Q7QUFNTyxlQUFldkI7SUFDcEIsSUFBSThCLElBQXFDLEVBQUU7UUFDekMsSUFBSVAsY0FBYyxNQUFNO1lBQ3RCLE1BQU1BLFVBQVVHLE9BQU87UUFDekI7SUFDRjtBQUNGIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2NsaWVudC9jb21wb25lbnRzL3NlZ21lbnQtY2FjaGUvbmF2aWdhdGlvbi10ZXN0aW5nLWxvY2sudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBOYXZpZ2F0aW9uIGxvY2sgZm9yIHRoZSBJbnN0YW50IE5hdmlnYXRpb24gVGVzdGluZyBBUEkuXG4gKlxuICogTWFuYWdlcyB0aGUgaW4tbWVtb3J5IGxvY2sgKGEgcHJvbWlzZSkgdGhhdCBnYXRlcyBkeW5hbWljIGRhdGEgd3JpdGVzXG4gKiBkdXJpbmcgaW5zdGFudCBuYXZpZ2F0aW9uIGNhcHR1cmVzLCBhbmQgb3ducyBhbGwgY29va2llIHN0YXRlXG4gKiB0cmFuc2l0aW9ucyAocGVuZGluZyDihpIgY2FwdHVyZWQtTVBBLCBwZW5kaW5nIOKGkiBjYXB0dXJlZC1TUEEpLlxuICpcbiAqIEV4dGVybmFsIGFjdG9ycyAoUGxheXdyaWdodCwgZGV2dG9vbHMpIHNldCBbMF0gdG8gc3RhcnQgYSBsb2NrIHNjb3BlXG4gKiBhbmQgZGVsZXRlIHRoZSBjb29raWUgdG8gZW5kIG9uZS4gTmV4dC5qcyB3cml0ZXMgY2FwdHVyZWQgdmFsdWVzLlxuICogVGhlIENvb2tpZVN0b3JlIGhhbmRsZXIgZGlzdGluZ3Vpc2hlcyB0aGVtIGJ5IHZhbHVlOiBwZW5kaW5nID0gZXh0ZXJuYWwsXG4gKiBjYXB0dXJlZCA9IHNlbGYtd3JpdGUgKGlnbm9yZWQpLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRmxpZ2h0Um91dGVyU3RhdGUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItdHlwZXMnXG5pbXBvcnQgeyBORVhUX0lOU1RBTlRfVEVTVF9DT09LSUUgfSBmcm9tICcuLi9hcHAtcm91dGVyLWhlYWRlcnMnXG5pbXBvcnQgeyByZWZyZXNoT25JbnN0YW50TmF2aWdhdGlvblVubG9jayB9IGZyb20gJy4uL3VzZS1hY3Rpb24tcXVldWUnXG5cbnR5cGUgSW5zdGFudE5hdkNvb2tpZVN0YXRlID0gJ3BlbmRpbmcnIHwgJ21wYScgfCAnc3BhJ1xuXG50eXBlIEluc3RhbnRDb29raWUgPVxuICAvLyBwZW5kaW5nICh3YWl0aW5nIHRvIGNhcHR1cmUpXG4gIHwgW2NhcHR1cmVkOiAwLCBpZDogc3RyaW5nXVxuICAvLyBjYXB0dXJlZCBNUEEgcGFnZSBsb2FkXG4gIHwgW2NhcHR1cmVkOiAxLCBpZDogc3RyaW5nLCBzdGF0ZTogbnVsbF1cbiAgLy8gY2FwdHVyZWQgU1BBIG5hdmlnYXRpb24gKGZyb20vdG8gcm91dGUgdHJlZXMpXG4gIHwgW1xuICAgICAgY2FwdHVyZWQ6IDEsXG4gICAgICBpZDogc3RyaW5nLFxuICAgICAgc3RhdGU6IHsgZnJvbTogRmxpZ2h0Um91dGVyU3RhdGU7IHRvOiBGbGlnaHRSb3V0ZXJTdGF0ZSB8IG51bGwgfSxcbiAgICBdXG5cbmZ1bmN0aW9uIHBhcnNlQ29va2llVmFsdWUocmF3OiBzdHJpbmcpOiBJbnN0YW50TmF2Q29va2llU3RhdGUge1xuICB0cnkge1xuICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UocmF3KVxuICAgIGlmIChBcnJheS5pc0FycmF5KHBhcnNlZCkgJiYgcGFyc2VkLmxlbmd0aCA+PSAzKSB7XG4gICAgICBjb25zdCByYXdTdGF0ZSA9IHBhcnNlZFsyXVxuICAgICAgcmV0dXJuIHJhd1N0YXRlID09PSBudWxsID8gJ21wYScgOiAnc3BhJ1xuICAgIH1cbiAgfSBjYXRjaCB7fVxuICByZXR1cm4gJ3BlbmRpbmcnXG59XG5cbmZ1bmN0aW9uIHdyaXRlQ29va2llVmFsdWUodmFsdWU6IEluc3RhbnRDb29raWUpOiB2b2lkIHtcbiAgaWYgKHR5cGVvZiBjb29raWVTdG9yZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm5cbiAgfVxuICAvLyBSZWFkIHRoZSBleGlzdGluZyBjb29raWUgdG8gcHJlc2VydmUgaXRzIGF0dHJpYnV0ZXMgKGRvbWFpbiwgcGF0aCksXG4gIC8vIHRoZW4gd3JpdGUgYmFjayB3aXRoIHRoZSBuZXcgdmFsdWUuIFRoaXMgdXBkYXRlcyB0aGUgc2FtZSBjb29raWVcbiAgLy8gZW50cnkgdGhhdCB0aGUgZXh0ZXJuYWwgYWN0b3IgY3JlYXRlZCwgcmVnYXJkbGVzcyBvZiBob3cgaXQgd2FzXG4gIC8vIHNjb3BlZC5cbiAgY29va2llU3RvcmUuZ2V0KE5FWFRfSU5TVEFOVF9URVNUX0NPT0tJRSkudGhlbigoZXhpc3Rpbmc6IGFueSkgPT4ge1xuICAgIGlmIChleGlzdGluZykge1xuICAgICAgY29uc3Qgb3B0aW9uczogYW55ID0ge1xuICAgICAgICBuYW1lOiBORVhUX0lOU1RBTlRfVEVTVF9DT09LSUUsXG4gICAgICAgIHZhbHVlOiBKU09OLnN0cmluZ2lmeSh2YWx1ZSksXG4gICAgICAgIHBhdGg6IGV4aXN0aW5nLnBhdGggPz8gJy8nLFxuICAgICAgfVxuICAgICAgaWYgKGV4aXN0aW5nLmRvbWFpbikge1xuICAgICAgICBvcHRpb25zLmRvbWFpbiA9IGV4aXN0aW5nLmRvbWFpblxuICAgICAgfVxuICAgICAgY29va2llU3RvcmUuc2V0KG9wdGlvbnMpXG4gICAgfVxuICB9KVxufVxuXG50eXBlIE5hdmlnYXRpb25Mb2NrU3RhdGUgPSB7XG4gIHByb21pc2U6IFByb21pc2U8dm9pZD5cbiAgcmVzb2x2ZTogKCkgPT4gdm9pZFxufVxuXG5sZXQgbG9ja1N0YXRlOiBOYXZpZ2F0aW9uTG9ja1N0YXRlIHwgbnVsbCA9IG51bGxcblxuZnVuY3Rpb24gYWNxdWlyZUxvY2soKTogdm9pZCB7XG4gIGlmIChsb2NrU3RhdGUgIT09IG51bGwpIHtcbiAgICByZXR1cm5cbiAgfVxuICBsZXQgcmVzb2x2ZTogKCkgPT4gdm9pZFxuICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHIpID0+IHtcbiAgICByZXNvbHZlID0gclxuICB9KVxuICBsb2NrU3RhdGUgPSB7IHByb21pc2UsIHJlc29sdmU6IHJlc29sdmUhIH1cbn1cblxuZnVuY3Rpb24gcmVsZWFzZUxvY2soKTogdm9pZCB7XG4gIGlmIChsb2NrU3RhdGUgIT09IG51bGwpIHtcbiAgICBsb2NrU3RhdGUucmVzb2x2ZSgpXG4gICAgbG9ja1N0YXRlID0gbnVsbFxuICB9XG59XG5cbi8qKlxuICogU2V0cyB1cCB0aGUgY29va2llLWJhc2VkIGxvY2suIEhhbmRsZXMgdGhlIGluaXRpYWwgcGFnZSBsb2FkIHN0YXRlIGFuZFxuICogcmVnaXN0ZXJzIGEgQ29va2llU3RvcmUgbGlzdGVuZXIgZm9yIHJ1bnRpbWUgY2hhbmdlcy5cbiAqXG4gKiBDYWxsZWQgb25jZSBkdXJpbmcgcGFnZSBpbml0aWFsaXphdGlvbiBmcm9tIGFwcC1nbG9iYWxzLnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRMaXN0ZW5pbmdGb3JJbnN0YW50TmF2aWdhdGlvbkNvb2tpZSgpOiB2b2lkIHtcbiAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9FWFBPU0VfVEVTVElOR19BUEkpIHtcbiAgICAvLyBJZiB0aGUgc2VydmVyIHNlcnZlZCBhIHN0YXRpYyBzaGVsbCwgdGhpcyBpcyBhbiBNUEEgcGFnZSBsb2FkXG4gICAgLy8gd2hpbGUgdGhlIGxvY2sgaXMgaGVsZC4gVHJhbnNpdGlvbiB0byBjYXB0dXJlZC1NUEEgYW5kIGFjcXVpcmUuXG4gICAgaWYgKHNlbGYuX19uZXh0X2luc3RhbnRfdGVzdCkge1xuICAgICAgaWYgKHR5cGVvZiBjb29raWVTdG9yZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgLy8gSWYgdGhlIGNvb2tpZSB3YXMgYWxyZWFkeSBjbGVhcmVkIGR1cmluZyB0aGUgTVBBIHBhZ2VcbiAgICAgICAgLy8gdHJhbnNpdGlvbiwgcmVsb2FkIHRvIGdldCB0aGUgZnVsbCBkeW5hbWljIHBhZ2UuXG4gICAgICAgIGNvb2tpZVN0b3JlLmdldChORVhUX0lOU1RBTlRfVEVTVF9DT09LSUUpLnRoZW4oKGNvb2tpZTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKCFjb29raWUpIHtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgd3JpdGVDb29raWVWYWx1ZShbMSwgYGMke01hdGgucmFuZG9tKCl9YCwgbnVsbF0pXG4gICAgICBhY3F1aXJlTG9jaygpXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjb29raWVTdG9yZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvb2tpZVN0b3JlLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChldmVudDogQ29va2llQ2hhbmdlRXZlbnQpID0+IHtcbiAgICAgIGZvciAoY29uc3QgY29va2llIG9mIGV2ZW50LmNoYW5nZWQpIHtcbiAgICAgICAgaWYgKGNvb2tpZS5uYW1lID09PSBORVhUX0lOU1RBTlRfVEVTVF9DT09LSUUpIHtcbiAgICAgICAgICBjb25zdCBzdGF0ZSA9IHBhcnNlQ29va2llVmFsdWUoY29va2llLnZhbHVlID8/ICcnKVxuXG4gICAgICAgICAgaWYgKHN0YXRlICE9PSAncGVuZGluZycpIHtcbiAgICAgICAgICAgIC8vIENhcHR1cmVkIHZhbHVlIOKAlCBvdXIgb3duIHRyYW5zaXRpb24uIElnbm9yZS5cbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFBlbmRpbmcgdmFsdWUg4oCUIGV4dGVybmFsIGFjdG9yIHN0YXJ0aW5nIGEgbmV3IGxvY2sgc2NvcGUuXG4gICAgICAgICAgaWYgKGxvY2tTdGF0ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmVsZWFzZUxvY2soKVxuICAgICAgICAgIH1cbiAgICAgICAgICBhY3F1aXJlTG9jaygpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBjb29raWUgb2YgZXZlbnQuZGVsZXRlZCkge1xuICAgICAgICBpZiAoY29va2llLm5hbWUgPT09IE5FWFRfSU5TVEFOVF9URVNUX0NPT0tJRSkge1xuICAgICAgICAgIHJlbGVhc2VMb2NrKClcbiAgICAgICAgICByZWZyZXNoT25JbnN0YW50TmF2aWdhdGlvblVubG9jaygpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICB9XG59XG5cbi8qKlxuICogVHJhbnNpdGlvbnMgdGhlIGNvb2tpZSBmcm9tIHBlbmRpbmcgdG8gY2FwdHVyZWQtU1BBLiBDYWxsZWQgd2hlbiBhXG4gKiBjbGllbnQtc2lkZSBuYXZpZ2F0aW9uIGlzIGNhcHR1cmVkIGJ5IHRoZSBsb2NrLlxuICpcbiAqIEBwYXJhbSBmcm9tVHJlZSAtIFRoZSBmbGlnaHQgcm91dGVyIHN0YXRlIG9mIHRoZSBmcm9tLXJvdXRlXG4gKiBAcGFyYW0gdG9UcmVlIC0gVGhlIGZsaWdodCByb3V0ZXIgc3RhdGUgb2YgdGhlIHRvLXJvdXRlIChudWxsIGlmIG5vdCB5ZXQga25vd24pXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2l0aW9uVG9DYXB0dXJlZFNQQShcbiAgZnJvbVRyZWU6IEZsaWdodFJvdXRlclN0YXRlLFxuICB0b1RyZWU6IEZsaWdodFJvdXRlclN0YXRlIHwgbnVsbFxuKTogdm9pZCB7XG4gIGlmIChwcm9jZXNzLmVudi5fX05FWFRfRVhQT1NFX1RFU1RJTkdfQVBJKSB7XG4gICAgd3JpdGVDb29raWVWYWx1ZShbMSwgYGMke01hdGgucmFuZG9tKCl9YCwgeyBmcm9tOiBmcm9tVHJlZSwgdG86IHRvVHJlZSB9XSlcbiAgfVxufVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIGNhcHR1cmVkLVNQQSBjb29raWUgd2l0aCB0aGUgcmVzb2x2ZWQgcm91dGUgdHJlZXMuXG4gKiBDYWxsZWQgYWZ0ZXIgdGhlIHByZWZldGNoIHJlc29sdmVzIGFuZCB0aGUgdGFyZ2V0IHJvdXRlIHRyZWUgaXMga25vd24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVDYXB0dXJlZFNQQVRvVHJlZShcbiAgZnJvbVRyZWU6IEZsaWdodFJvdXRlclN0YXRlLFxuICB0b1RyZWU6IEZsaWdodFJvdXRlclN0YXRlXG4pOiB2b2lkIHtcbiAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9FWFBPU0VfVEVTVElOR19BUEkpIHtcbiAgICB3cml0ZUNvb2tpZVZhbHVlKFsxLCBgYyR7TWF0aC5yYW5kb20oKX1gLCB7IGZyb206IGZyb21UcmVlLCB0bzogdG9UcmVlIH1dKVxuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBuYXZpZ2F0aW9uIGxvY2sgaXMgY3VycmVudGx5IGFjdGl2ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTmF2aWdhdGlvbkxvY2tlZCgpOiBib29sZWFuIHtcbiAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9FWFBPU0VfVEVTVElOR19BUEkpIHtcbiAgICByZXR1cm4gbG9ja1N0YXRlICE9PSBudWxsXG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qKlxuICogV2FpdHMgZm9yIHRoZSBuYXZpZ2F0aW9uIGxvY2sgdG8gYmUgcmVsZWFzZWQsIGlmIGl0J3MgY3VycmVudGx5IGhlbGQuXG4gKiBOby1vcCBpZiB0aGUgbG9jayBpcyBub3QgYWNxdWlyZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3YWl0Rm9yTmF2aWdhdGlvbkxvY2tJZkFjdGl2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9FWFBPU0VfVEVTVElOR19BUEkpIHtcbiAgICBpZiAobG9ja1N0YXRlICE9PSBudWxsKSB7XG4gICAgICBhd2FpdCBsb2NrU3RhdGUucHJvbWlzZVxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbImlzTmF2aWdhdGlvbkxvY2tlZCIsInN0YXJ0TGlzdGVuaW5nRm9ySW5zdGFudE5hdmlnYXRpb25Db29raWUiLCJ0cmFuc2l0aW9uVG9DYXB0dXJlZFNQQSIsInVwZGF0ZUNhcHR1cmVkU1BBVG9UcmVlIiwid2FpdEZvck5hdmlnYXRpb25Mb2NrSWZBY3RpdmUiLCJwYXJzZUNvb2tpZVZhbHVlIiwicmF3IiwicGFyc2VkIiwiSlNPTiIsInBhcnNlIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwicmF3U3RhdGUiLCJ3cml0ZUNvb2tpZVZhbHVlIiwidmFsdWUiLCJjb29raWVTdG9yZSIsImdldCIsIk5FWFRfSU5TVEFOVF9URVNUX0NPT0tJRSIsInRoZW4iLCJleGlzdGluZyIsIm9wdGlvbnMiLCJuYW1lIiwic3RyaW5naWZ5IiwicGF0aCIsImRvbWFpbiIsInNldCIsImxvY2tTdGF0ZSIsImFjcXVpcmVMb2NrIiwicmVzb2x2ZSIsInByb21pc2UiLCJQcm9taXNlIiwiciIsInJlbGVhc2VMb2NrIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9FWFBPU0VfVEVTVElOR19BUEkiLCJzZWxmIiwiX19uZXh0X2luc3RhbnRfdGVzdCIsImNvb2tpZSIsIndpbmRvdyIsImxvY2F0aW9uIiwicmVsb2FkIiwiTWF0aCIsInJhbmRvbSIsImFkZEV2ZW50TGlzdGVuZXIiLCJldmVudCIsImNoYW5nZWQiLCJzdGF0ZSIsImRlbGV0ZWQiLCJyZWZyZXNoT25JbnN0YW50TmF2aWdhdGlvblVubG9jayIsImZyb21UcmVlIiwidG9UcmVlIiwiZnJvbSIsInRvIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/segment-cache/navigation-testing-lock.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/segment-cache/navigation.js":
|
||
/*!******************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/segment-cache/navigation.js ***!
|
||
\******************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n completeHardNavigation: function() {\n return completeHardNavigation;\n },\n completeSoftNavigation: function() {\n return completeSoftNavigation;\n },\n completeTraverseNavigation: function() {\n return completeTraverseNavigation;\n },\n convertServerPatchToFullTree: function() {\n return convertServerPatchToFullTree;\n },\n navigate: function() {\n return navigate;\n },\n navigateToKnownRoute: function() {\n return navigateToKnownRoute;\n }\n});\nconst _fetchserverresponse = __webpack_require__(/*! ../router-reducer/fetch-server-response */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/fetch-server-response.js\");\nconst _pprnavigations = __webpack_require__(/*! ../router-reducer/ppr-navigations */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/ppr-navigations.js\");\nconst _createhreffromurl = __webpack_require__(/*! ../router-reducer/create-href-from-url */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nconst _constants = __webpack_require__(/*! ../../../lib/constants */ \"(ssr)/./node_modules/next/dist/lib/constants.js\");\nconst _cache = __webpack_require__(/*! ./cache */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/cache.js\");\nconst _optimisticroutes = __webpack_require__(/*! ./optimistic-routes */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/optimistic-routes.js\");\nconst _cachekey = __webpack_require__(/*! ./cache-key */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/cache-key.js\");\nconst _scheduler = __webpack_require__(/*! ./scheduler */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/scheduler.js\");\nconst _types = __webpack_require__(/*! ./types */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/types.js\");\nconst _links = __webpack_require__(/*! ../links */ \"(ssr)/./node_modules/next/dist/client/components/links.js\");\nconst _routerreducertypes = __webpack_require__(/*! ../router-reducer/router-reducer-types */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _computechangedpath = __webpack_require__(/*! ../router-reducer/compute-changed-path */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/compute-changed-path.js\");\nconst _javascripturl = __webpack_require__(/*! ../../lib/javascript-url */ \"(ssr)/./node_modules/next/dist/client/lib/javascript-url.js\");\nconst _bfcache = __webpack_require__(/*! ./bfcache */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/bfcache.js\");\nfunction navigate(state, url, currentUrl, currentRenderedSearch, currentCacheNode, currentFlightRouterState, nextUrl, freshnessPolicy, scrollBehavior, navigateType) {\n // Instant Navigation Testing API: when the lock is active, ensure a\n // prefetch task has been initiated before proceeding with the navigation.\n // This guarantees that segment data requests are at least pending, even\n // for routes that already have a cached route tree. Without this, the\n // static shell might be incomplete because some segments were never\n // requested.\n if (true) {\n const { isNavigationLocked } = __webpack_require__(/*! ./navigation-testing-lock */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/navigation-testing-lock.js\");\n if (isNavigationLocked()) {\n return ensurePrefetchThenNavigate(state, url, currentUrl, currentRenderedSearch, currentCacheNode, currentFlightRouterState, nextUrl, freshnessPolicy, scrollBehavior, navigateType);\n }\n }\n return navigateImpl(state, url, currentUrl, currentRenderedSearch, currentCacheNode, currentFlightRouterState, nextUrl, freshnessPolicy, scrollBehavior, navigateType);\n}\nfunction navigateImpl(state, url, currentUrl, currentRenderedSearch, currentCacheNode, currentFlightRouterState, nextUrl, freshnessPolicy, scrollBehavior, navigateType) {\n const now = Date.now();\n const href = url.href;\n const cacheKey = (0, _cachekey.createCacheKey)(href, nextUrl);\n const route = (0, _cache.readRouteCacheEntry)(now, cacheKey);\n if (route !== null && route.status === _cache.EntryStatus.Fulfilled) {\n // We have a matching prefetch.\n return navigateUsingPrefetchedRouteTree(now, state, url, currentUrl, currentRenderedSearch, nextUrl, currentCacheNode, currentFlightRouterState, freshnessPolicy, scrollBehavior, navigateType, route);\n }\n // There was no matching route tree in the cache. Let's see if we can\n // construct an \"optimistic\" route tree using the deprecated search-params\n // based matching. This is only used when the new optimisticRouting flag is\n // disabled.\n //\n // Do not construct an optimistic route tree if there was a cache hit, but\n // the entry has a rejected status, since it may have been rejected due to a\n // rewrite or redirect based on the search params.\n //\n // TODO: There are multiple reasons a prefetch might be rejected; we should\n // track them explicitly and choose what to do here based on that.\n if (true) {\n if (route === null || route.status !== _cache.EntryStatus.Rejected) {\n const optimisticRoute = (0, _cache.deprecated_requestOptimisticRouteCacheEntry)(now, url, nextUrl);\n if (optimisticRoute !== null) {\n // We have an optimistic route tree. Proceed with the normal flow.\n return navigateUsingPrefetchedRouteTree(now, state, url, currentUrl, currentRenderedSearch, nextUrl, currentCacheNode, currentFlightRouterState, freshnessPolicy, scrollBehavior, navigateType, optimisticRoute);\n }\n }\n }\n // There's no matching prefetch for this route in the cache. We must lazily\n // fetch it from the server before we can perform the navigation.\n //\n // TODO: If this is a gesture navigation, instead of performing a\n // dynamic request, we should do a runtime prefetch.\n return navigateToUnknownRoute(now, state, url, currentUrl, currentRenderedSearch, nextUrl, currentCacheNode, currentFlightRouterState, freshnessPolicy, scrollBehavior, navigateType).catch(()=>{\n // If the navigation fails, return the current state\n return state;\n });\n}\nfunction navigateToKnownRoute(now, state, url, canonicalUrl, navigationSeed, currentUrl, currentRenderedSearch, currentCacheNode, currentFlightRouterState, freshnessPolicy, nextUrl, scrollBehavior, navigateType, debugInfo, // prediction. Passed through so it can be marked as having a dynamic rewrite\n// if the server returns a different pathname (indicating dynamic rewrite\n// behavior).\n//\n// When null, the navigation did not use route prediction - either because\n// the route was already fully cached, or it's a navigation that doesn't\n// involve prediction (refresh, history traversal, server action, etc.).\n// In these cases, if a mismatch occurs, we still mark the route as having a\n// dynamic rewrite by traversing the known route tree (see\n// dispatchRetryDueToTreeMismatch).\nrouteCacheEntry) {\n // A version of navigate() that accepts the target route tree as an argument\n // rather than reading it from the prefetch cache.\n const accumulation = {\n separateRefreshUrls: null,\n scrollRef: null\n };\n // We special case navigations to the exact same URL as the current location.\n // It's a common UI pattern for apps to refresh when you click a link to the\n // current page. So when this happens, we refresh the dynamic data in the page\n // segments.\n //\n // Note that this does not apply if the any part of the hash or search query\n // has changed. This might feel a bit weird but it makes more sense when you\n // consider that the way to trigger this behavior is to click the same link\n // multiple times.\n //\n // TODO: We should probably refresh the *entire* route when this case occurs,\n // not just the page segments. Essentially treating it the same as a refresh()\n // triggered by an action, which is the more explicit way of modeling the UI\n // pattern described above.\n //\n // Also note that this only refreshes the dynamic data, not static/ cached\n // data. If the page segment is fully static and prefetched, the request is\n // skipped. (This is also how refresh() works.)\n const isSamePageNavigation = url.href === currentUrl.href;\n const task = (0, _pprnavigations.startPPRNavigation)(now, currentUrl, currentRenderedSearch, currentCacheNode, currentFlightRouterState, navigationSeed.routeTree, navigationSeed.metadataVaryPath, freshnessPolicy, navigationSeed.data, navigationSeed.head, navigationSeed.dynamicStaleAt, isSamePageNavigation, accumulation);\n if (task !== null) {\n if (freshnessPolicy !== _pprnavigations.FreshnessPolicy.Gesture) {\n (0, _pprnavigations.spawnDynamicRequests)(task, url, nextUrl, freshnessPolicy, accumulation, routeCacheEntry, navigateType);\n }\n return completeSoftNavigation(state, url, nextUrl, task.route, task.node, navigationSeed.renderedSearch, canonicalUrl, navigateType, scrollBehavior, accumulation.scrollRef, debugInfo);\n }\n // Could not perform a SPA navigation. Revert to a full-page (MPA) navigation.\n return completeHardNavigation(state, url, navigateType);\n}\nfunction navigateUsingPrefetchedRouteTree(now, state, url, currentUrl, currentRenderedSearch, nextUrl, currentCacheNode, currentFlightRouterState, freshnessPolicy, scrollBehavior, navigateType, route) {\n const routeTree = route.tree;\n const canonicalUrl = route.canonicalUrl + url.hash;\n const renderedSearch = route.renderedSearch;\n const prefetchSeed = {\n renderedSearch,\n routeTree,\n metadataVaryPath: route.metadata.varyPath,\n data: null,\n head: null,\n dynamicStaleAt: (0, _bfcache.computeDynamicStaleAt)(now, _bfcache.UnknownDynamicStaleTime)\n };\n return navigateToKnownRoute(now, state, url, canonicalUrl, prefetchSeed, currentUrl, currentRenderedSearch, currentCacheNode, currentFlightRouterState, freshnessPolicy, nextUrl, scrollBehavior, navigateType, null, route);\n}\n// Used to request all the dynamic data for a route, rather than just a subset,\n// e.g. during a refresh or a revalidation. Typically this gets constructed\n// during the normal flow when diffing the route tree, but for an unprefetched\n// navigation, where we don't know the structure of the target route, we use\n// this instead.\nconst DynamicRequestTreeForEntireRoute = [\n '',\n {},\n null,\n 'refetch'\n];\nasync function navigateToUnknownRoute(now, state, url, currentUrl, currentRenderedSearch, nextUrl, currentCacheNode, currentFlightRouterState, freshnessPolicy, scrollBehavior, navigateType) {\n // Runs when a navigation happens but there's no cached prefetch we can use.\n // Don't bother to wait for a prefetch response; go straight to a full\n // navigation that contains both static and dynamic data in a single stream.\n // (This is unlike the old navigation implementation, which instead blocks\n // the dynamic request until a prefetch request is received.)\n //\n // To avoid duplication of logic, we're going to pretend that the tree\n // returned by the dynamic request is, in fact, a prefetch tree. Then we can\n // use the same server response to write the actual data into the CacheNode\n // tree. So it's the same flow as the \"happy path\" (prefetch, then\n // navigation), except we use a single server response for both stages.\n let dynamicRequestTree;\n switch(freshnessPolicy){\n case _pprnavigations.FreshnessPolicy.Default:\n case _pprnavigations.FreshnessPolicy.HistoryTraversal:\n case _pprnavigations.FreshnessPolicy.Gesture:\n dynamicRequestTree = currentFlightRouterState;\n break;\n case _pprnavigations.FreshnessPolicy.Hydration:\n case _pprnavigations.FreshnessPolicy.RefreshAll:\n case _pprnavigations.FreshnessPolicy.HMRRefresh:\n dynamicRequestTree = DynamicRequestTreeForEntireRoute;\n break;\n default:\n freshnessPolicy;\n dynamicRequestTree = currentFlightRouterState;\n break;\n }\n const promiseForDynamicServerResponse = (0, _fetchserverresponse.fetchServerResponse)(url, {\n flightRouterState: dynamicRequestTree,\n nextUrl\n });\n const result = await promiseForDynamicServerResponse;\n if (typeof result === 'string') {\n // This is an MPA navigation.\n const redirectUrl = new URL(result, location.origin);\n return completeHardNavigation(state, redirectUrl, navigateType);\n }\n const { flightData, canonicalUrl, renderedSearch, couldBeIntercepted, supportsPerSegmentPrefetching, dynamicStaleTime, staticStageData, runtimePrefetchStream, responseHeaders, debugInfo } = result;\n // Since the response format of dynamic requests and prefetches is slightly\n // different, we'll need to massage the data a bit. Create FlightRouterState\n // tree that simulates what we'd receive as the result of a prefetch.\n const navigationSeed = convertServerPatchToFullTree(now, currentFlightRouterState, flightData, renderedSearch, dynamicStaleTime);\n // Learn the route pattern so we can predict it for future navigations.\n // hasDynamicRewrite is false because this is a fresh navigation to an\n // unknown route - any rewrite detection happens during the traversal inside\n // discoverKnownRoute. The hasDynamicRewrite param is only set to true when\n // retrying after a tree mismatch (see dispatchRetryDueToTreeMismatch).\n const metadataVaryPath = navigationSeed.metadataVaryPath;\n if (metadataVaryPath !== null) {\n (0, _optimisticroutes.discoverKnownRoute)(now, url.pathname, nextUrl, null, navigationSeed.routeTree, metadataVaryPath, couldBeIntercepted, (0, _createhreffromurl.createHrefFromUrl)(canonicalUrl), supportsPerSegmentPrefetching, false // hasDynamicRewrite - not a retry, rewrite detection happens during traversal\n );\n if (staticStageData !== null) {\n const { response: staticStageResponse, isResponsePartial } = staticStageData;\n // Write the static stage of the response into the segment cache so that\n // subsequent navigations can serve cached static segments instantly.\n (0, _cache.getStaleAt)(now, staticStageResponse.s).then((staleAt)=>{\n const buildId = responseHeaders.get(_constants.NEXT_NAV_DEPLOYMENT_ID_HEADER) ?? staticStageResponse.b;\n (0, _cache.writeStaticStageResponseIntoCache)(now, staticStageResponse.f, buildId, staticStageResponse.h, staleAt, currentFlightRouterState, renderedSearch, isResponsePartial);\n }).catch(()=>{\n // The static stage processing failed. Not fatal — the navigation\n // completed normally, we just won't write into the cache.\n });\n }\n if (runtimePrefetchStream !== null) {\n (0, _cache.processRuntimePrefetchStream)(now, runtimePrefetchStream, currentFlightRouterState, renderedSearch).then((processed)=>{\n if (processed !== null) {\n (0, _cache.writeDynamicRenderResponseIntoCache)(now, _types.FetchStrategy.PPRRuntime, processed.flightDatas, processed.buildId, processed.isResponsePartial, processed.headVaryParams, processed.staleAt, processed.navigationSeed, null);\n }\n }).catch(()=>{\n // The runtime prefetch cache write failed. Not fatal — the\n // navigation completed normally, we just won't cache runtime data.\n });\n }\n }\n return navigateToKnownRoute(now, state, url, (0, _createhreffromurl.createHrefFromUrl)(canonicalUrl), navigationSeed, currentUrl, currentRenderedSearch, currentCacheNode, currentFlightRouterState, freshnessPolicy, nextUrl, scrollBehavior, navigateType, debugInfo, // came directly from the server. If a mismatch occurs during dynamic data\n // fetch, the retry handler will traverse the known route tree to mark the\n // entry as having a dynamic rewrite.\n null);\n}\nfunction completeHardNavigation(state, url, navigateType) {\n if ((0, _javascripturl.isJavaScriptURLString)(url.href)) {\n console.error('Next.js has blocked a javascript: URL as a security precaution.');\n return state;\n }\n const newState = {\n canonicalUrl: url.origin === location.origin ? (0, _createhreffromurl.createHrefFromUrl)(url) : url.href,\n pushRef: {\n pendingPush: navigateType === 'push',\n mpaNavigation: true,\n preserveCustomHistoryState: false\n },\n // TODO: None of the rest of these values are consistent with the incoming\n // navigation. We rely on the fact that AppRouter will suspend and trigger\n // a hard navigation before it accesses any of these values. But instead\n // we should trigger the hard navigation and blocking any subsequent\n // router updates without updating React.\n renderedSearch: state.renderedSearch,\n focusAndScrollRef: state.focusAndScrollRef,\n cache: state.cache,\n tree: state.tree,\n nextUrl: state.nextUrl,\n previousNextUrl: state.previousNextUrl,\n debugInfo: null\n };\n return newState;\n}\nfunction completeSoftNavigation(oldState, url, referringNextUrl, tree, cache, renderedSearch, canonicalUrl, navigateType, scrollBehavior, scrollRef, collectedDebugInfo) {\n // The \"Next-Url\" is a special representation of the URL that Next.js\n // uses to implement interception routes.\n // TODO: Get rid of this extra traversal by computing this during the\n // same traversal that computes the tree itself. We should also figure out\n // what is the minimum information needed for the server to correctly\n // intercept the route.\n const changedPath = (0, _computechangedpath.computeChangedPath)(oldState.tree, tree);\n const nextUrlForNewRoute = changedPath ? changedPath : oldState.nextUrl;\n // This value is stored on the state as `previousNextUrl`; the naming is\n // confusing. What it represents is the \"Next-Url\" header that was used to\n // fetch the incoming route. It's essentially the refererer URL, but in a\n // Next.js specific format. During refreshes, this is sent back to the server\n // instead of the current route's \"Next-Url\" so that the same interception\n // logic is applied as during the original navigation.\n const previousNextUrl = referringNextUrl;\n // Check if the only thing that changed was the hash fragment.\n const oldUrl = new URL(oldState.canonicalUrl, url);\n const onlyHashChange = // navigations are always same-origin.\n url.pathname === oldUrl.pathname && url.search === oldUrl.search && url.hash !== oldUrl.hash;\n // Determine whether and how the page should scroll after this\n // navigation.\n //\n // By default, we scroll to the segments that were navigated to — i.e.\n // segments in the new part of the route, as opposed to shared segments\n // that were already part of the previous route. All newly navigated\n // segments share a single ScrollRef. When they mount, the first one\n // to mount initiates the scroll. They share a ref so that only one\n // scroll happens per navigation.\n //\n // If a subsequent navigation produces new segments, those supersede\n // any pending scroll from the previous navigation by invalidating its\n // ScrollRef. If a navigation doesn't produce any new segments (e.g.\n // a refresh where the route structure didn't change), any pending\n // scrolls from previous navigations are unaffected.\n //\n // The branches below handle special cases layered on top of this\n // default model.\n let activeScrollRef;\n let forceScroll;\n if (scrollBehavior === _routerreducertypes.ScrollBehavior.NoScroll) {\n // The user explicitly opted out of scrolling (e.g. scroll={false}\n // on a Link or router.push).\n //\n // If this navigation created new scroll targets (scrollRef !== null),\n // neutralize them. If it didn't, any prior scroll targets carried\n // forward on the cache nodes via reuseSharedCacheNode remain active.\n if (scrollRef !== null) {\n scrollRef.current = false;\n }\n activeScrollRef = oldState.focusAndScrollRef.scrollRef;\n forceScroll = false;\n } else if (onlyHashChange) {\n // Hash-only navigations should scroll regardless of per-node state.\n // Create a fresh ref so the first segment to scroll consumes it.\n //\n // Invalidate any scroll ref from a prior navigation that hasn't\n // been consumed yet.\n const oldScrollRef = oldState.focusAndScrollRef.scrollRef;\n if (oldScrollRef !== null) {\n oldScrollRef.current = false;\n }\n // Also invalidate any per-node refs that were accumulated during\n // this navigation's tree construction — the hash-only ref\n // supersedes them.\n if (scrollRef !== null) {\n scrollRef.current = false;\n }\n activeScrollRef = {\n current: true\n };\n forceScroll = true;\n } else {\n // Default case. Use the accumulated scrollRef (may be null if no\n // new segments were created). The handler checks per-node refs, so\n // unchanged parallel route slots won't scroll.\n activeScrollRef = scrollRef;\n // If this navigation created new scroll targets, invalidate any\n // pending scroll from a previous navigation.\n if (scrollRef !== null) {\n const oldScrollRef = oldState.focusAndScrollRef.scrollRef;\n if (oldScrollRef !== null) {\n oldScrollRef.current = false;\n }\n }\n forceScroll = false;\n }\n const newState = {\n canonicalUrl,\n renderedSearch,\n pushRef: {\n pendingPush: navigateType === 'push',\n mpaNavigation: false,\n preserveCustomHistoryState: false\n },\n focusAndScrollRef: {\n scrollRef: activeScrollRef,\n forceScroll,\n onlyHashChange,\n hashFragment: //\n // Empty hash should trigger default behavior of scrolling layout into\n // view. #top is handled in layout-router.\n //\n // Refer to `ScrollAndFocusHandler` for details on how this is used.\n scrollBehavior !== _routerreducertypes.ScrollBehavior.NoScroll && url.hash !== '' ? decodeURIComponent(url.hash.slice(1)) : oldState.focusAndScrollRef.hashFragment\n },\n cache,\n tree,\n nextUrl: nextUrlForNewRoute,\n previousNextUrl,\n debugInfo: collectedDebugInfo\n };\n return newState;\n}\nfunction completeTraverseNavigation(state, url, renderedSearch, cache, tree, nextUrl) {\n return {\n // Set canonical url\n canonicalUrl: (0, _createhreffromurl.createHrefFromUrl)(url),\n renderedSearch,\n pushRef: {\n pendingPush: false,\n mpaNavigation: false,\n // Ensures that the custom history state that was set is preserved when applying this update.\n preserveCustomHistoryState: true\n },\n focusAndScrollRef: state.focusAndScrollRef,\n cache,\n // Restore provided tree\n tree,\n nextUrl,\n // TODO: We need to restore previousNextUrl, too, which represents the\n // Next-Url that was used to fetch the data. Anywhere we fetch using the\n // canonical URL, there should be a corresponding Next-Url.\n previousNextUrl: null,\n debugInfo: null\n };\n}\nfunction convertServerPatchToFullTree(now, currentTree, flightData, renderedSearch, dynamicStaleTimeSeconds) {\n // During a client navigation or prefetch, the server sends back only a patch\n // for the parts of the tree that have changed.\n //\n // This applies the patch to the base tree to create a full representation of\n // the resulting tree.\n //\n // The return type includes a full FlightRouterState tree and a full\n // CacheNodeSeedData tree. (Conceptually these are the same tree, and should\n // eventually be unified, but there's still lots of existing code that\n // operates on FlightRouterState trees alone without the CacheNodeSeedData.)\n //\n // TODO: This similar to what apply-router-state-patch-to-tree does. It\n // will eventually fully replace it. We should get rid of all the remaining\n // places where we iterate over the server patch format. This should also\n // eventually replace normalizeFlightData.\n let baseTree = currentTree;\n let baseData = null;\n let head = null;\n if (flightData !== null) {\n for (const { segmentPath, tree: treePatch, seedData: dataPatch, head: headPatch } of flightData){\n const result = convertServerPatchToFullTreeImpl(baseTree, baseData, treePatch, dataPatch, segmentPath, renderedSearch, 0);\n baseTree = result.tree;\n baseData = result.data;\n // This is the same for all patches per response, so just pick an\n // arbitrary one\n head = headPatch;\n }\n }\n const finalFlightRouterState = baseTree;\n // Convert the final FlightRouterState into a RouteTree type.\n //\n // TODO: Eventually, FlightRouterState will evolve to being a transport format\n // only. The RouteTree type will become the main type used for dealing with\n // routes on the client, and we'll store it in the state directly.\n const acc = {\n metadataVaryPath: null\n };\n const routeTree = (0, _cache.convertRootFlightRouterStateToRouteTree)(finalFlightRouterState, renderedSearch, acc);\n return {\n routeTree,\n metadataVaryPath: acc.metadataVaryPath,\n data: baseData,\n renderedSearch,\n head,\n dynamicStaleAt: (0, _bfcache.computeDynamicStaleAt)(now, dynamicStaleTimeSeconds)\n };\n}\nfunction convertServerPatchToFullTreeImpl(baseRouterState, baseData, treePatch, dataPatch, segmentPath, renderedSearch, index) {\n if (index === segmentPath.length) {\n // We reached the part of the tree that we need to patch.\n return {\n tree: treePatch,\n data: dataPatch\n };\n }\n // segmentPath represents the parent path of subtree. It's a repeating\n // pattern of parallel route key and segment:\n //\n // [string, Segment, string, Segment, string, Segment, ...]\n //\n // This path tells us which part of the base tree to apply the tree patch.\n //\n // NOTE: We receive the FlightRouterState patch in the same request as the\n // seed data patch. Therefore we don't need to worry about diffing the segment\n // values; we can assume the server sent us a correct result.\n const updatedParallelRouteKey = segmentPath[index];\n // const segment: Segment = segmentPath[index + 1] <-- Not used, see note above\n const baseTreeChildren = baseRouterState[1];\n const baseSeedDataChildren = baseData !== null ? baseData[1] : null;\n const newTreeChildren = {};\n const newSeedDataChildren = {};\n for(const parallelRouteKey in baseTreeChildren){\n const childBaseRouterState = baseTreeChildren[parallelRouteKey];\n const childBaseSeedData = baseSeedDataChildren !== null ? baseSeedDataChildren[parallelRouteKey] ?? null : null;\n if (parallelRouteKey === updatedParallelRouteKey) {\n const result = convertServerPatchToFullTreeImpl(childBaseRouterState, childBaseSeedData, treePatch, dataPatch, segmentPath, renderedSearch, // the end of the segment path.\n index + 2);\n newTreeChildren[parallelRouteKey] = result.tree;\n newSeedDataChildren[parallelRouteKey] = result.data;\n } else {\n // This child is not being patched. Copy it over as-is.\n newTreeChildren[parallelRouteKey] = childBaseRouterState;\n newSeedDataChildren[parallelRouteKey] = childBaseSeedData;\n }\n }\n let clonedTree;\n let clonedSeedData;\n // Clone all the fields except the children.\n // Clone the FlightRouterState tree. Based on equivalent logic in\n // apply-router-state-patch-to-tree, but should confirm whether we need to\n // copy all of these fields. Not sure the server ever sends, e.g. the\n // refetch marker.\n clonedTree = [\n baseRouterState[0],\n newTreeChildren\n ];\n if (2 in baseRouterState) {\n const compressedRefreshState = baseRouterState[2];\n if (compressedRefreshState !== undefined && compressedRefreshState !== null) {\n // Since this part of the tree was patched with new data, any parent\n // refresh states should be updated to reflect the new rendered search\n // value. (The refresh state acts like a \"context provider\".) All pages\n // within the same server response share the same renderedSearch value,\n // but the same RouteTree could be composed from multiple different\n // routes, and multiple responses.\n clonedTree[2] = [\n compressedRefreshState[0],\n renderedSearch\n ];\n }\n }\n if (3 in baseRouterState) {\n clonedTree[3] = baseRouterState[3];\n }\n if (4 in baseRouterState) {\n clonedTree[4] = baseRouterState[4];\n }\n // Clone the CacheNodeSeedData tree.\n const isEmptySeedDataPartial = true;\n clonedSeedData = [\n null,\n newSeedDataChildren,\n null,\n isEmptySeedDataPartial,\n null\n ];\n return {\n tree: clonedTree,\n data: clonedSeedData\n };\n}\n/**\n * Instant Navigation Testing API: ensures a prefetch task has been initiated\n * and completed before proceeding with the navigation. This guarantees that\n * segment data requests are at least pending, even for routes whose route\n * tree is already cached.\n *\n * After the prefetch completes, delegates to the normal navigation flow.\n */ async function ensurePrefetchThenNavigate(state, url, currentUrl, currentRenderedSearch, currentCacheNode, currentFlightRouterState, nextUrl, freshnessPolicy, scrollBehavior, navigateType) {\n const link = (0, _links.getLinkForCurrentNavigation)();\n const fetchStrategy = link !== null ? link.fetchStrategy : _types.FetchStrategy.PPR;\n // Transition the cookie to captured-SPA immediately, before waiting\n // for the prefetch. This ensures the devtools panel can update its UI\n // right away, even if the prefetch takes time (e.g. dev compilation).\n // The \"to\" tree starts as null and is filled in after the prefetch\n // resolves and the navigation produces a new router state.\n const { transitionToCapturedSPA, updateCapturedSPAToTree } = __webpack_require__(/*! ./navigation-testing-lock */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/navigation-testing-lock.js\");\n transitionToCapturedSPA(currentFlightRouterState, null);\n const cacheKey = (0, _cachekey.createCacheKey)(url.href, nextUrl);\n await new Promise((resolve)=>{\n (0, _scheduler.schedulePrefetchTask)(cacheKey, currentFlightRouterState, fetchStrategy, _types.PrefetchPriority.Default, null, resolve // _onComplete callback\n );\n });\n // Prefetch is complete. Proceed with the normal navigation flow, which\n // will now find the route in the cache.\n const result = await navigateImpl(state, url, currentUrl, currentRenderedSearch, currentCacheNode, currentFlightRouterState, nextUrl, freshnessPolicy, scrollBehavior, navigateType);\n // Update the cookie with the resolved \"to\" tree so the devtools\n // panel can display both routes immediately.\n updateCapturedSPAToTree(currentFlightRouterState, result.tree);\n return result;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=navigation.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3NlZ21lbnQtY2FjaGUvbmF2aWdhdGlvbi5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFraEJnQkEsc0JBQXNCO2VBQXRCQTs7SUFtQ0FDLHNCQUFzQjtlQUF0QkE7O0lBMElBQywwQkFBMEI7ZUFBMUJBOztJQTRDQUMsNEJBQTRCO2VBQTVCQTs7SUF6ckJBQyxRQUFRO2VBQVJBOztJQW1KQUMsb0JBQW9CO2VBQXBCQTs7O2lEQTVMb0I7NENBTTdCOytDQUMyQjt1Q0FDWTttQ0FZdkM7OENBQzRCO3NDQUNtQjt1Q0FDakI7bUNBQ1c7bUNBQ0o7Z0RBR2I7Z0RBQ0k7MkNBQ0c7cUNBQ3lCO0FBVXhELFNBQVNELFNBQ2RFLEtBQXFCLEVBQ3JCQyxHQUFRLEVBQ1JDLFVBQWUsRUFDZkMscUJBQTZCLEVBQzdCQyxnQkFBa0MsRUFDbENDLHdCQUEyQyxFQUMzQ0MsT0FBc0IsRUFDdEJDLGVBQWdDLEVBQ2hDQyxjQUE4QixFQUM5QkMsWUFBZ0M7SUFFaEMsb0VBQW9FO0lBQ3BFLDBFQUEwRTtJQUMxRSx3RUFBd0U7SUFDeEUsc0VBQXNFO0lBQ3RFLG9FQUFvRTtJQUNwRSxhQUFhO0lBQ2IsSUFBSUMsSUFBcUMsRUFBRTtRQUN6QyxNQUFNLEVBQUVHLGtCQUFrQixFQUFFLEdBQzFCQyxtQkFBT0EsQ0FBQyw0SEFBMkI7UUFDckMsSUFBSUQsc0JBQXNCO1lBQ3hCLE9BQU9FLDJCQUNMZixPQUNBQyxLQUNBQyxZQUNBQyx1QkFDQUMsa0JBQ0FDLDBCQUNBQyxTQUNBQyxpQkFDQUMsZ0JBQ0FDO1FBRUo7SUFDRjtJQUVBLE9BQU9PLGFBQ0xoQixPQUNBQyxLQUNBQyxZQUNBQyx1QkFDQUMsa0JBQ0FDLDBCQUNBQyxTQUNBQyxpQkFDQUMsZ0JBQ0FDO0FBRUo7QUFFQSxTQUFTTyxhQUNQaEIsS0FBcUIsRUFDckJDLEdBQVEsRUFDUkMsVUFBZSxFQUNmQyxxQkFBNkIsRUFDN0JDLGdC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QywwQkFDQUMsU0FDQUMsaUJBQ0FDLGdCQUNBQztJQUdGLGdFQUFnRTtJQUNoRSw2Q0FBNkM7SUFDN0NpSyx3QkFBd0JySywwQkFBMEJrRSxPQUFPakIsSUFBSTtJQUU3RCxPQUFPaUI7QUFDVCIsInNvdXJjZXMiOlsiL1VzZXJzL3NyYy9jbGllbnQvY29tcG9uZW50cy9zZWdtZW50LWNhY2hlL25hdmlnYXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBDYWNoZU5vZGVTZWVkRGF0YSxcbiAgRmxpZ2h0Um91dGVyU3RhdGUsXG4gIEZsaWdodFNlZ21lbnRQYXRoLFxuICBTY3JvbGxSZWYsXG59IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci10eXBlcydcbmltcG9ydCB0eXBlIHsgQ2FjaGVOb2RlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLXR5cGVzJ1xuaW1wb3J0IHR5cGUgeyBIZWFkRGF0YSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci10eXBlcydcbmltcG9ydCB0eXBlIHsgTm9ybWFsaXplZEZsaWdodERhdGEgfSBmcm9tICcuLi8uLi9mbGlnaHQtZGF0YS1oZWxwZXJzJ1xuaW1wb3J0IHsgZmV0Y2hTZXJ2ZXJSZXNwb25zZSB9IGZyb20gJy4uL3JvdXRlci1yZWR1Y2VyL2ZldGNoLXNlcnZlci1yZXNwb25zZSdcbmltcG9ydCB7XG4gIHN0YXJ0UFBSTmF2aWdhdGlvbixcbiAgc3Bhd25EeW5hbWljUmVxdWVzdHMsXG4gIEZyZXNobmVzc1BvbGljeSxcbiAgdHlwZSBOYXZpZ2F0aW9uUmVxdWVzdEFjY3VtdWxhdGlvbixcbn0gZnJvbSAnLi4vcm91dGVyLXJlZHVjZXIvcHByLW5hdmlnYXRpb25zJ1xuaW1wb3J0IHsgY3JlYXRlSHJlZkZyb21VcmwgfSBmcm9tICcuLi9yb3V0ZXItcmVkdWNlci9jcmVhdGUtaHJlZi1mcm9tLXVybCdcbmltcG9ydCB7IE5FWFRfTkFWX0RFUExPWU1FTlRfSURfSEVBREVSIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cydcbmltcG9ydCB7XG4gIEVudHJ5U3RhdHVzLFxuICByZWFkUm91dGVDYWNoZUVudHJ5LFxuICBkZXByZWNhdGVkX3JlcXVlc3RPcHRpbWlzdGljUm91dGVDYWNoZUVudHJ5LFxuICBjb252ZXJ0Um9vdEZsaWdodFJvdXRlclN0YXRlVG9Sb3V0ZVRyZWUsXG4gIGdldFN0YWxlQXQsXG4gIHdyaXRlU3RhdGljU3RhZ2VSZXNwb25zZUludG9DYWNoZSxcbiAgcHJvY2Vzc1J1bnRpbWVQcmVmZXRjaFN0cmVhbSxcbiAgd3JpdGVEeW5hbWljUmVuZGVyUmVzcG9uc2VJbnRvQ2FjaGUsXG4gIHR5cGUgUm91dGVUcmVlLFxuICB0eXBlIEZ1bGZpbGxlZFJvdXRlQ2FjaGVFbnRyeSxcbn0gZnJvbSAnLi9jYWNoZSdcbmltcG9ydCB7IGRpc2NvdmVyS25vd25Sb3V0ZSB9IGZyb20gJy4vb3B0aW1pc3RpYy1yb3V0ZXMnXG5pbXBvcnQgeyBjcmVhdGVDYWNoZUtleSwgdHlwZSBOb3JtYWxpemVkU2VhcmNoIH0gZnJvbSAnLi9jYWNoZS1rZXknXG5pbXBvcnQgeyBzY2hlZHVsZVByZWZldGNoVGFzayB9IGZyb20gJy4vc2NoZWR1bGVyJ1xuaW1wb3J0IHsgUHJlZmV0Y2hQcmlvcml0eSwgRmV0Y2hTdHJhdGVneSB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQgeyBnZXRMaW5rRm9yQ3VycmVudE5hdmlnYXRpb24gfSBmcm9tICcuLi9saW5rcydcbmltcG9ydCB0eXBlIHsgUGFnZVZhcnlQYXRoIH0gZnJvbSAnLi92YXJ5LXBhdGgnXG5pbXBvcnQgdHlwZSB7IEFwcFJvdXRlclN0YXRlIH0gZnJvbSAnLi4vcm91dGVyLXJlZHVjZXIvcm91dGVyLXJlZHVjZXItdHlwZXMnXG5pbXBvcnQgeyBTY3JvbGxCZWhhdmlvciB9IGZyb20gJy4uL3JvdXRlci1yZWR1Y2VyL3JvdXRlci1yZWR1Y2VyLXR5cGVzJ1xuaW1wb3J0IHsgY29tcHV0ZUNoYW5nZWRQYXRoIH0gZnJvbSAnLi4vcm91dGVyLXJlZHVjZXIvY29tcHV0ZS1jaGFuZ2VkLXBhdGgnXG5pbXBvcnQgeyBpc0phdmFTY3JpcHRVUkxTdHJpbmcgfSBmcm9tICcuLi8uLi9saWIvamF2YXNjcmlwdC11cmwnXG5pbXBvcnQgeyBVbmtub3duRHluYW1pY1N0YWxlVGltZSwgY29tcHV0ZUR5bmFtaWNTdGFsZUF0IH0gZnJvbSAnLi9iZmNhY2hlJ1xuXG4vKipcbiAqIE5hdmlnYXRlIHRvIGEgbmV3IFVSTCwgdXNpbmcgdGhlIFNlZ21lbnQgQ2FjaGUgdG8gY29uc3RydWN0IGEgcmVzcG9uc2UuXG4gKlxuICogVG8gYWxsb3cgZm9yIHN5bmNocm9ub3VzIG5hdmlnYXRpb25zIHdoZW5ldmVyIHBvc3NpYmxlLCB0aGlzIGlzIG5vdCBhbiBhc3luY1xuICogZnVuY3Rpb24uIEl0IHJldHVybnMgYSBwcm9taXNlIG9ubHkgaWYgdGhlcmUncyBubyBtYXRjaGluZyBwcmVmZXRjaCBpblxuICogdGhlIGNhY2hlLiBPdGhlcndpc2UgaXQgcmV0dXJucyBhbiBpbW1lZGlhdGUgcmVzdWx0IGFuZCB1c2VzIFN1c3BlbnNlL1JTQyB0b1xuICogc3RyZWFtIGluIGFueSBtaXNzaW5nIGRhdGEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuYXZpZ2F0ZShcbiAgc3RhdGU6IEFwcFJvdXRlclN0YXRlLFxuICB1cmw6IFVSTCxcbiAgY3VycmVudFVybDogVVJMLFxuICBjdXJyZW50UmVuZGVyZWRTZWFyY2g6IHN0cmluZyxcbiAgY3VycmVudENhY2hlTm9kZTogQ2FjaGVOb2RlIHwgbnVsbCxcbiAgY3VycmVudEZsaWdodFJvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgbmV4dFVybDogc3RyaW5nIHwgbnVsbCxcbiAgZnJlc2huZXNzUG9saWN5OiBGcmVzaG5lc3NQb2xpY3ksXG4gIHNjcm9sbEJlaGF2aW9yOiBTY3JvbGxCZWhhdmlvcixcbiAgbmF2aWdhdGVUeXBlOiAncHVzaCcgfCAncmVwbGFjZSdcbik6IEFwcFJvdXRlclN0YXRlIHwgUHJvbWlzZTxBcHBSb3V0ZXJTdGF0ZT4ge1xuICAvLyBJbnN0YW50IE5hdmlnYXRpb24gVGVzdGluZyBBUEk6IHdoZW4gdGhlIGxvY2sgaXMgYWN0aXZlLCBlbnN1cmUgYVxuICAvLyBwcmVmZXRjaCB0YXNrIGhhcyBiZWVuIGluaXRpYXRlZCBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIHRoZSBuYXZpZ2F0aW9uLlxuICAvLyBUaGlzIGd1YXJhbnRlZXMgdGhhdCBzZWdtZW50IGRhdGEgcmVxdWVzdHMgYXJlIGF0IGxlYXN0IHBlbmRpbmcsIGV2ZW5cbiAgLy8gZm9yIHJvdXRlcyB0aGF0IGFscmVhZHkgaGF2ZSBhIGNhY2hlZCByb3V0ZSB0cmVlLiBXaXRob3V0IHRoaXMsIHRoZVxuICAvLyBzdGF0aWMgc2hlbGwgbWlnaHQgYmUgaW5jb21wbGV0ZSBiZWNhdXNlIHNvbWUgc2VnbWVudHMgd2VyZSBuZXZlclxuICAvLyByZXF1ZXN0ZWQuXG4gIGlmIChwcm9jZXNzLmVudi5fX05FWFRfRVhQT1NFX1RFU1RJTkdfQVBJKSB7XG4gICAgY29uc3QgeyBpc05hdmlnYXRpb25Mb2NrZWQgfSA9XG4gICAgICByZXF1aXJlKCcuL25hdmlnYXRpb24tdGVzdGluZy1sb2NrJykgYXMgdHlwZW9mIGltcG9ydCgnLi9uYXZpZ2F0aW9uLXRlc3RpbmctbG9jaycpXG4gICAgaWYgKGlzTmF2aWdhdGlvbkxvY2tlZCgpKSB7XG4gICAgICByZXR1cm4gZW5zdXJlUHJlZmV0Y2hUaGVuTmF2aWdhdGUoXG4gICAgICAgIHN0YXRlLFxuICAgICAgICB1cmwsXG4gICAgICAgIGN1cnJlbnRVcmwsXG4gICAgICAgIGN1cnJlbnRSZW5kZXJlZFNlYXJjaCxcbiAgICAgICAgY3VycmVudENhY2hlTm9kZSxcbiAgICAgICAgY3VycmVudEZsaWdodFJvdXRlclN0YXRlLFxuICAgICAgICBuZXh0VXJsLFxuICAgICAgICBmcmVzaG5lc3NQb2xpY3ksXG4gICAgICAgIHNjcm9sbEJlaGF2aW9yLFxuICAgICAgICBuYXZpZ2F0ZVR5cGVcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmF2aWdhdGVJbXBsKFxuICAgIHN0YXRlLFxuICAgIHVybCxcbiAgICBjdXJyZW50VXJsLFxuICAgIGN1cnJlbnRSZW5kZXJlZFNlYXJjaCxcbiAgICBjdXJyZW50Q2FjaGVOb2RlLFxuICAgIGN1cnJlbnRGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgICBuZXh0VXJsLFxuICAgIGZyZXNobmVzc1BvbGljeSxcbiAgICBzY3JvbGxCZWhhdmlvcixcbiAgICBuYXZpZ2F0ZVR5cGVcbiAgKVxufVxuXG5mdW5jdGlvbiBuYXZpZ2F0ZUltcGwoXG4gIHN0YXRlOiBBcHBSb3V0ZXJTdGF0ZSxcbiAgdXJsOiBVUkwsXG4gIGN1cnJlbnRVcmw6IFVSTCxcbiAgY3VycmVudFJlbmRlcmVkU2VhcmNoOiBzdHJpbmcsXG4gIGN1cnJlbnRDYWNoZU5vZGU6IENhY2hlTm9kZSB8IG51bGwsXG4gIGN1cnJlbnRGbGlnaHRSb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIG5leHRVcmw6IHN0cmluZyB8IG51bGwsXG4gIGZyZXNobmVzc1BvbGljeTogRnJlc2huZXNzUG9saWN5LFxuICBzY3JvbGxCZWhhdmlvcjogU2Nyb2xsQmVoYXZpb3IsXG4gIG5hdmlnYXRlVHlwZTogJ3B1c2gnIHwgJ3JlcGxhY2UnXG4pOiBBcHBSb3V0ZXJTdGF0ZSB8IFByb21pc2U8QXBwUm91dGVyU3RhdGU+IHtcbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKVxuICBjb25zdCBocmVmID0gdXJsLmhyZWZcblxuICBjb25zdCBjYWNoZUtleSA9IGNyZWF0ZUNhY2hlS2V5KGhyZWYsIG5leHRVcmwpXG4gIGNvbnN0IHJvdXRlID0gcmVhZFJvdXRlQ2FjaGVFbnRyeShub3csIGNhY2hlS2V5KVxuICBpZiAocm91dGUgIT09IG51bGwgJiYgcm91dGUuc3RhdHVzID09PSBFbnRyeVN0YXR1cy5GdWxmaWxsZWQpIHtcbiAgICAvLyBXZSBoYXZlIGEgbWF0Y2hpbmcgcHJlZmV0Y2guXG4gICAgcmV0dXJuIG5hdmlnYXRlVXNpbmdQcmVmZXRjaGVkUm91dGVUcmVlKFxuICAgICAgbm93LFxuICAgICAgc3RhdGUsXG4gICAgICB1cmwsXG4gICAgICBjdXJyZW50VXJsLFxuICAgICAgY3VycmVudFJlbmRlcmVkU2VhcmNoLFxuICAgICAgbmV4dFVybCxcbiAgICAgIGN1cnJlbnRDYWNoZU5vZGUsXG4gICAgICBjdXJyZW50RmxpZ2h0Um91dGVyU3RhdGUsXG4gICAgICBmcmVzaG5lc3NQb2xpY3ksXG4gICAgICBzY3JvbGxCZWhhdmlvcixcbiAgICAgIG5hdmlnYXRlVHlwZSxcbiAgICAgIHJvdXRlXG4gICAgKVxuICB9XG5cbiAgLy8gVGhlcmUgd2FzIG5vIG1hdGNoaW5nIHJvdXRlIHRyZWUgaW4gdGhlIGNhY2hlLiBMZXQncyBzZWUgaWYgd2UgY2FuXG4gIC8vIGNvbnN0cnVjdCBhbiBcIm9wdGltaXN0aWNcIiByb3V0ZSB0cmVlIHVzaW5nIHRoZSBkZXByZWNhdGVkIHNlYXJjaC1wYXJhbXNcbiAgLy8gYmFzZWQgbWF0Y2hpbmcuIFRoaXMgaXMgb25seSB1c2VkIHdoZW4gdGhlIG5ldyBvcHRpbWlzdGljUm91dGluZyBmbGFnIGlzXG4gIC8vIGRpc2FibGVkLlxuICAvL1xuICAvLyBEbyBub3QgY29uc3RydWN0IGFuIG9wdGltaXN0aWMgcm91dGUgdHJlZSBpZiB0aGVyZSB3YXMgYSBjYWNoZSBoaXQsIGJ1dFxuICAvLyB0aGUgZW50cnkgaGFzIGEgcmVqZWN0ZWQgc3RhdHVzLCBzaW5jZSBpdCBtYXkgaGF2ZSBiZWVuIHJlamVjdGVkIGR1ZSB0byBhXG4gIC8vIHJld3JpdGUgb3IgcmVkaXJlY3QgYmFzZWQgb24gdGhlIHNlYXJjaCBwYXJhbXMuXG4gIC8vXG4gIC8vIFRPRE86IFRoZXJlIGFyZSBtdWx0aXBsZSByZWFzb25zIGEgcHJlZmV0Y2ggbWlnaHQgYmUgcmVqZWN0ZWQ7IHdlIHNob3VsZFxuICAvLyB0cmFjayB0aGVtIGV4cGxpY2l0bHkgYW5kIGNob29zZSB3aGF0IHRvIGRvIGhlcmUgYmFzZWQgb24gdGhhdC5cbiAgaWYgKCFwcm9jZXNzLmVudi5fX05FWFRfT1BUSU1JU1RJQ19ST1VUSU5HKSB7XG4gICAgaWYgKHJvdXRlID09PSBudWxsIHx8IHJvdXRlLnN0YXR1cyAhPT0gRW50cnlTdGF0dXMuUmVqZWN0ZWQpIHtcbiAgICAgIGNvbnN0IG9wdGltaXN0aWNSb3V0ZSA9IGRlcHJlY2F0ZWRfcmVxdWVzdE9wdGltaXN0aWNSb3V0ZUNhY2hlRW50cnkoXG4gICAgICAgIG5vdyxcbiAgICAgICAgdXJsLFxuICAgICAgICBuZXh0VXJsXG4gICAgICApXG4gICAgICBpZiAob3B0aW1pc3RpY1JvdXRlICE9PSBudWxsKSB7XG4gICAgICAgIC8vIFdlIGhhdmUgYW4gb3B0aW1pc3RpYyByb3V0ZSB0cmVlLiBQcm9jZWVkIHdpdGggdGhlIG5vcm1hbCBmbG93LlxuICAgICAgICByZXR1cm4gbmF2aWdhdGVVc2luZ1ByZWZldGNoZWRSb3V0ZVRyZWUoXG4gICAgICAgICAgbm93LFxuICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgIHVybCxcbiAgICAgICAgICBjdXJyZW50VXJsLFxuICAgICAgICAgIGN1cnJlbnRSZW5kZXJlZFNlYXJjaCxcbiAgICAgICAgICBuZXh0VXJsLFxuICAgICAgICAgIGN1cnJlbnRDYWNoZU5vZGUsXG4gICAgICAgICAgY3VycmVudEZsaWdodFJvdXRlclN0YXRlLFxuICAgICAgICAgIGZyZXNobmVzc1BvbGljeSxcbiAgICAgICAgICBzY3JvbGxCZWhhdmlvcixcbiAgICAgICAgICBuYXZpZ2F0ZVR5cGUsXG4gICAgICAgICAgb3B0aW1pc3RpY1JvdXRlXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBUaGVyZSdzIG5vIG1hdGNoaW5nIHByZWZldGNoIGZvciB0aGlzIHJvdXRlIGluIHRoZSBjYWNoZS4gV2UgbXVzdCBsYXppbHlcbiAgLy8gZmV0Y2ggaXQgZnJvbSB0aGUgc2VydmVyIGJlZm9yZSB3ZSBjYW4gcGVyZm9ybSB0aGUgbmF2aWdhdGlvbi5cbiAgLy9cbiAgLy8gVE9ETzogSWYgdGhpcyBpcyBhIGdlc3R1cmUgbmF2aWdhdGlvbiwgaW5zdGVhZCBvZiBwZXJmb3JtaW5nIGFcbiAgLy8gZHluYW1pYyByZXF1ZXN0LCB3ZSBzaG91bGQgZG8gYSBydW50aW1lIHByZWZldGNoLlxuICByZXR1cm4gbmF2aWdhdGVUb1Vua25vd25Sb3V0ZShcbiAgICBub3csXG4gICAgc3RhdGUsXG4gICAgdXJsLFxuICAgIGN1cnJlbnRVcmwsXG4gICAgY3VycmVudFJlbmRlcmVkU2VhcmNoLFxuICAgIG5leHRVcmwsXG4gICAgY3VycmVudENhY2hlTm9kZSxcbiAgICBjdXJyZW50RmxpZ2h0Um91dGVyU3RhdGUsXG4gICAgZnJlc2huZXNzUG9saWN5LFxuICAgIHNjcm9sbEJlaGF2aW9yLFxuICAgIG5hdmlnYXRlVHlwZVxuICApLmNhdGNoKCgpID0+IHtcbiAgICAvLyBJZiB0aGUgbmF2aWdhdGlvbiBmYWlscywgcmV0dXJuIHRoZSBjdXJyZW50IHN0YXRlXG4gICAgcmV0dXJuIHN0YXRlXG4gIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuYXZpZ2F0ZVRvS25vd25Sb3V0ZShcbiAgbm93OiBudW1iZXIsXG4gIHN0YXRlOiBBcHBSb3V0ZXJTdGF0ZSxcbiAgdXJsOiBVUkwsXG4gIGNhbm9uaWNhbFVybDogc3RyaW5nLFxuICBuYXZpZ2F0aW9uU2VlZDogTmF2aWdhdGlvblNlZWQsXG4gIGN1cnJlbnRVcmw6IFVSTCxcbiAgY3VycmVudFJlbmRlcmVkU2VhcmNoOiBzdHJpbmcsXG4gIGN1cnJlbnRDYWNoZU5vZGU6IENhY2hlTm9kZSB8IG51bGwsXG4gIGN1cnJlbnRGbGlnaHRSb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIGZyZXNobmVzc1BvbGljeTogRnJlc2huZXNzUG9saWN5LFxuICBuZXh0VXJsOiBzdHJpbmcgfCBudWxsLFxuICBzY3JvbGxCZWhhdmlvcjogU2Nyb2xsQmVoYXZpb3IsXG4gIG5hdmlnYXRlVHlwZTogJ3B1c2gnIHwgJ3JlcGxhY2UnLFxuICBkZWJ1Z0luZm86IEFycmF5PHVua25vd24+IHwgbnVsbCxcbiAgLy8gVGhlIHJvdXRlIGNhY2hlIGVudHJ5IHVzZWQgZm9yIHRoaXMgbmF2aWdhdGlvbiwgaWYgaXQgY2FtZSBmcm9tIHJvdXRlXG4gIC8vIHByZWRpY3Rpb24uIFBhc3NlZCB0aHJvdWdoIHNvIGl0IGNhbiBiZSBtYXJrZWQgYXMgaGF2aW5nIGEgZHluYW1pYyByZXdyaXRlXG4gIC8vIGlmIHRoZSBzZXJ2ZXIgcmV0dXJucyBhIGRpZmZlcmVudCBwYXRobmFtZSAoaW5kaWNhdGluZyBkeW5hbWljIHJld3JpdGVcbiAgLy8gYmVoYXZpb3IpLlxuICAvL1xuICAvLyBXaGVuIG51bGwsIHRoZSBuYXZpZ2F0aW9uIGRpZCBub3QgdXNlIHJvdXRlIHByZWRpY3Rpb24gLSBlaXRoZXIgYmVjYXVzZVxuICAvLyB0aGUgcm91dGUgd2FzIGFscmVhZHkgZnVsbHkgY2FjaGVkLCBvciBpdCdzIGEgbmF2aWdhdGlvbiB0aGF0IGRvZXNuJ3RcbiAgLy8gaW52b2x2ZSBwcmVkaWN0aW9uIChyZWZyZXNoLCBoaXN0b3J5IHRyYXZlcnNhbCwgc2VydmVyIGFjdGlvbiwgZXRjLikuXG4gIC8vIEluIHRoZXNlIGNhc2VzLCBpZiBhIG1pc21hdGNoIG9jY3Vycywgd2Ugc3RpbGwgbWFyayB0aGUgcm91dGUgYXMgaGF2aW5nIGFcbiAgLy8gZHluYW1pYyByZXdyaXRlIGJ5IHRyYXZlcnNpbmcgdGhlIGtub3duIHJvdXRlIHRyZWUgKHNlZVxuICAvLyBkaXNwYXRjaFJldHJ5RHVlVG9UcmVlTWlzbWF0Y2gpLlxuICByb3V0ZUNhY2hlRW50cnk6IEZ1bGZpbGxlZFJvdXRlQ2FjaGVFbnRyeSB8IG51bGxcbik6IEFwcFJvdXRlclN0YXRlIHtcbiAgLy8gQSB2ZXJzaW9uIG9mIG5hdmlnYXRlKCkgdGhhdCBhY2NlcHRzIHRoZSB0YXJnZXQgcm91dGUgdHJlZSBhcyBhbiBhcmd1bWVudFxuICAvLyByYXRoZXIgdGhhbiByZWFkaW5nIGl0IGZyb20gdGhlIHByZWZldGNoIGNhY2hlLlxuICBjb25zdCBhY2N1bXVsYXRpb246IE5hdmlnYXRpb25SZXF1ZXN0QWNjdW11bGF0aW9uID0ge1xuICAgIHNlcGFyYXRlUmVmcmVzaFVybHM6IG51bGwsXG4gICAgc2Nyb2xsUmVmOiBudWxsLFxuICB9XG4gIC8vIFdlIHNwZWNpYWwgY2FzZSBuYXZpZ2F0aW9ucyB0byB0aGUgZXhhY3Qgc2FtZSBVUkwgYXMgdGhlIGN1cnJlbnQgbG9jYXRpb24uXG4gIC8vIEl0J3MgYSBjb21tb24gVUkgcGF0dGVybiBmb3IgYXBwcyB0byByZWZyZXNoIHdoZW4geW91IGNsaWNrIGEgbGluayB0byB0aGVcbiAgLy8gY3VycmVudCBwYWdlLiBTbyB3aGVuIHRoaXMgaGFwcGVucywgd2UgcmVmcmVzaCB0aGUgZHluYW1pYyBkYXRhIGluIHRoZSBwYWdlXG4gIC8vIHNlZ21lbnRzLlxuICAvL1xuICAvLyBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBhcHBseSBpZiB0aGUgYW55IHBhcnQgb2YgdGhlIGhhc2ggb3Igc2VhcmNoIHF1ZXJ5XG4gIC8vIGhhcyBjaGFuZ2VkLiBUaGlzIG1pZ2h0IGZlZWwgYSBiaXQgd2VpcmQgYnV0IGl0IG1ha2VzIG1vcmUgc2Vuc2Ugd2hlbiB5b3VcbiAgLy8gY29uc2lkZXIgdGhhdCB0aGUgd2F5IHRvIHRyaWdnZXIgdGhpcyBiZWhhdmlvciBpcyB0byBjbGljayB0aGUgc2FtZSBsaW5rXG4gIC8vIG11bHRpcGxlIHRpbWVzLlxuICAvL1xuICAvLyBUT0RPOiBXZSBzaG91bGQgcHJvYmFibHkgcmVmcmVzaCB0aGUgKmVudGlyZSogcm91dGUgd2hlbiB0aGlzIGNhc2Ugb2NjdXJzLFxuICAvLyBub3QganVzdCB0aGUgcGFnZSBzZWdtZW50cy4gRXNzZW50aWFsbHkgdHJlYXRpbmcgaXQgdGhlIHNhbWUgYXMgYSByZWZyZXNoKClcbiAgLy8gdHJpZ2dlcmVkIGJ5IGFuIGFjdGlvbiwgd2hpY2ggaXMgdGhlIG1vcmUgZXhwbGljaXQgd2F5IG9mIG1vZGVsaW5nIHRoZSBVSVxuICAvLyBwYXR0ZXJuIGRlc2NyaWJlZCBhYm92ZS5cbiAgLy9cbiAgLy8gQWxzbyBub3RlIHRoYXQgdGhpcyBvbmx5IHJlZnJlc2hlcyB0aGUgZHluYW1pYyBkYXRhLCBub3Qgc3RhdGljLyBjYWNoZWRcbiAgLy8gZGF0YS4gSWYgdGhlIHBhZ2Ugc2VnbWVudCBpcyBmdWxseSBzdGF0aWMgYW5kIHByZWZldGNoZWQsIHRoZSByZXF1ZXN0IGlzXG4gIC8vIHNraXBwZWQuIChUaGlzIGlzIGFsc28gaG93IHJlZnJlc2goKSB3b3Jrcy4pXG4gIGNvbnN0IGlzU2FtZVBhZ2VOYXZpZ2F0aW9uID0gdXJsLmhyZWYgPT09IGN1cnJlbnRVcmwuaHJlZlxuICBjb25zdCB0YXNrID0gc3RhcnRQUFJOYXZpZ2F0aW9uKFxuICAgIG5vdyxcbiAgICBjdXJyZW50VXJsLFxuICAgIGN1cnJlbnRSZW5kZXJlZFNlYXJjaCxcbiAgICBjdXJyZW50Q2FjaGVOb2RlLFxuICAgIGN1cnJlbnRGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgICBuYXZpZ2F0aW9uU2VlZC5yb3V0ZVRyZWUsXG4gICAgbmF2aWdhdGlvblNlZWQubWV0YWRhdGFWYXJ5UGF0aCxcbiAgICBmcmVzaG5lc3NQb2xpY3ksXG4gICAgbmF2aWdhdGlvblNlZWQuZGF0YSxcbiAgICBuYXZpZ2F0aW9uU2VlZC5oZWFkLFxuICAgIG5hdmlnYXRpb25TZWVkLmR5bmFtaWNTdGFsZUF0LFxuICAgIGlzU2FtZVBhZ2VOYXZpZ2F0aW9uLFxuICAgIGFjY3VtdWxhdGlvblxuICApXG4gIGlmICh0YXNrICE9PSBudWxsKSB7XG4gICAgaWYgKGZyZXNobmVzc1BvbGljeSAhPT0gRnJlc2huZXNzUG9saWN5Lkdlc3R1cmUpIHtcbiAgICAgIHNwYXduRHluYW1pY1JlcXVlc3RzKFxuICAgICAgICB0YXNrLFxuICAgICAgICB1cmwsXG4gICAgICAgIG5leHRVcmwsXG4gICAgICAgIGZyZXNobmVzc1BvbGljeSxcbiAgICAgICAgYWNjdW11bGF0aW9uLFxuICAgICAgICByb3V0ZUNhY2hlRW50cnksXG4gICAgICAgIG5hdmlnYXRlVHlwZVxuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gY29tcGxldGVTb2Z0TmF2aWdhdGlvbihcbiAgICAgIHN0YXRlLFxuICAgICAgdXJsLFxuICAgICAgbmV4dFVybCxcbiAgICAgIHRhc2sucm91dGUsXG4gICAgICB0YXNrLm5vZGUsXG4gICAgICBuYXZpZ2F0aW9uU2VlZC5yZW5kZXJlZFNlYXJjaCxcbiAgICAgIGNhbm9uaWNhbFVybCxcbiAgICAgIG5hdmlnYXRlVHlwZSxcbiAgICAgIHNjcm9sbEJlaGF2aW9yLFxuICAgICAgYWNjdW11bGF0aW9uLnNjcm9sbFJlZixcbiAgICAgIGRlYnVnSW5mb1xuICAgIClcbiAgfVxuICAvLyBDb3VsZCBub3QgcGVyZm9ybSBhIFNQQSBuYXZpZ2F0aW9uLiBSZXZlcnQgdG8gYSBmdWxsLXBhZ2UgKE1QQSkgbmF2aWdhdGlvbi5cbiAgcmV0dXJuIGNvbXBsZXRlSGFyZE5hdmlnYXRpb24oc3RhdGUsIHVybCwgbmF2aWdhdGVUeXBlKVxufVxuXG5mdW5jdGlvbiBuYXZpZ2F0ZVVzaW5nUHJlZmV0Y2hlZFJvdXRlVHJlZShcbiAgbm93OiBudW1iZXIsXG4gIHN0YXRlOiBBcHBSb3V0ZXJTdGF0ZSxcbiAgdXJsOiBVUkwsXG4gIGN1cnJlbnRVcmw6IFVSTCxcbiAgY3VycmVudFJlbmRlcmVkU2VhcmNoOiBzdHJpbmcsXG4gIG5leHRVcmw6IHN0cmluZyB8IG51bGwsXG4gIGN1cnJlbnRDYWNoZU5vZGU6IENhY2hlTm9kZSB8IG51bGwsXG4gIGN1cnJlbnRGbGlnaHRSb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIGZyZXNobmVzc1BvbGljeTogRnJlc2huZXNzUG9saWN5LFxuICBzY3JvbGxCZWhhdmlvcjogU2Nyb2xsQmVoYXZpb3IsXG4gIG5hdmlnYXRlVHlwZTogJ3B1c2gnIHwgJ3JlcGxhY2UnLFxuICByb3V0ZTogRnVsZmlsbGVkUm91dGVDYWNoZUVudHJ5XG4pOiBBcHBSb3V0ZXJTdGF0ZSB7XG4gIGNvbnN0IHJvdXRlVHJlZSA9IHJvdXRlLnRyZWVcbiAgY29uc3QgY2Fub25pY2FsVXJsID0gcm91dGUuY2Fub25pY2FsVXJsICsgdXJsLmhhc2hcbiAgY29uc3QgcmVuZGVyZWRTZWFyY2ggPSByb3V0ZS5yZW5kZXJlZFNlYXJjaFxuICBjb25zdCBwcmVmZXRjaFNlZWQ6IE5hdmlnYXRpb25TZWVkID0ge1xuICAgIHJlbmRlcmVkU2VhcmNoLFxuICAgIHJvdXRlVHJlZSxcbiAgICBtZXRhZGF0YVZhcnlQYXRoOiByb3V0ZS5tZXRhZGF0YS52YXJ5UGF0aCBhcyBhbnksXG4gICAgZGF0YTogbnVsbCxcbiAgICBoZWFkOiBudWxsLFxuICAgIGR5bmFtaWNTdGFsZUF0OiBjb21wdXRlRHluYW1pY1N0YWxlQXQobm93LCBVbmtub3duRHluYW1pY1N0YWxlVGltZSksXG4gIH1cbiAgcmV0dXJuIG5hdmlnYXRlVG9Lbm93blJvdXRlKFxuICAgIG5vdyxcbiAgICBzdGF0ZSxcbiAgICB1cmwsXG4gICAgY2Fub25pY2FsVXJsLFxuICAgIHByZWZldGNoU2VlZCxcbiAgICBjdXJyZW50VXJsLFxuICAgIGN1cnJlbnRSZW5kZXJlZFNlYXJjaCxcbiAgICBjdXJyZW50Q2FjaGVOb2RlLFxuICAgIGN1cnJlbnRGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgICBmcmVzaG5lc3NQb2xpY3ksXG4gICAgbmV4dFVybCxcbiAgICBzY3JvbGxCZWhhdmlvcixcbiAgICBuYXZpZ2F0ZVR5cGUsXG4gICAgbnVsbCxcbiAgICByb3V0ZVxuICApXG59XG5cbi8vIFVzZWQgdG8gcmVxdWVzdCBhbGwgdGhlIGR5bmFtaWMgZGF0YSBmb3IgYSByb3V0ZSwgcmF0aGVyIHRoYW4ganVzdCBhIHN1YnNldCxcbi8vIGUuZy4gZHVyaW5nIGEgcmVmcmVzaCBvciBhIHJldmFsaWRhdGlvbi4gVHlwaWNhbGx5IHRoaXMgZ2V0cyBjb25zdHJ1Y3RlZFxuLy8gZHVyaW5nIHRoZSBub3JtYWwgZmxvdyB3aGVuIGRpZmZpbmcgdGhlIHJvdXRlIHRyZWUsIGJ1dCBmb3IgYW4gdW5wcmVmZXRjaGVkXG4vLyBuYXZpZ2F0aW9uLCB3aGVyZSB3ZSBkb24ndCBrbm93IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRhcmdldCByb3V0ZSwgd2UgdXNlXG4vLyB0aGlzIGluc3RlYWQuXG5jb25zdCBEeW5hbWljUmVxdWVzdFRyZWVGb3JFbnRpcmVSb3V0ZTogRmxpZ2h0Um91dGVyU3RhdGUgPSBbXG4gICcnLFxuICB7fSxcbiAgbnVsbCxcbiAgJ3JlZmV0Y2gnLFxuXVxuXG5hc3luYyBmdW5jdGlvbiBuYXZpZ2F0ZVRvVW5rbm93blJvdXRlKFxuICBub3c6IG51bWJlcixcbiAgc3RhdGU6IEFwcFJvdXRlclN0YXRlLFxuICB1cmw6IFVSTCxcbiAgY3VycmVudFVybDogVVJMLFxuICBjdXJyZW50UmVuZGVyZWRTZWFyY2g6IHN0cmluZyxcbiAgbmV4dFVybDogc3RyaW5nIHwgbnVsbCxcbiAgY3VycmVudENhY2hlTm9kZTogQ2FjaGVOb2RlIHwgbnVsbCxcbiAgY3VycmVudEZsaWdodFJvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgZnJlc2huZXNzUG9saWN5OiBGcmVzaG5lc3NQb2xpY3ksXG4gIHNjcm9sbEJlaGF2aW9yOiBTY3JvbGxCZWhhdmlvcixcbiAgbmF2aWdhdGVUeXBlOiAncHVzaCcgfCAncmVwbGFjZSdcbik6IFByb21pc2U8QXBwUm91dGVyU3RhdGU+IHtcbiAgLy8gUnVucyB3aGVuIGEgbmF2aWdhdGlvbiBoYXBwZW5zIGJ1dCB0aGVyZSdzIG5vIGNhY2hlZCBwcmVmZXRjaCB3ZSBjYW4gdXNlLlxuICAvLyBEb24ndCBib3RoZXIgdG8gd2FpdCBmb3IgYSBwcmVmZXRjaCByZXNwb25zZTsgZ28gc3RyYWlnaHQgdG8gYSBmdWxsXG4gIC8vIG5hdmlnYXRpb24gdGhhdCBjb250YWlucyBib3RoIHN0YXRpYyBhbmQgZHluYW1pYyBkYXRhIGluIGEgc2luZ2xlIHN0cmVhbS5cbiAgLy8gKFRoaXMgaXMgdW5saWtlIHRoZSBvbGQgbmF2aWdhdGlvbiBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaW5zdGVhZCBibG9ja3NcbiAgLy8gdGhlIGR5bmFtaWMgcmVxdWVzdCB1bnRpbCBhIHByZWZldGNoIHJlcXVlc3QgaXMgcmVjZWl2ZWQuKVxuICAvL1xuICAvLyBUbyBhdm9pZCBkdXBsaWNhdGlvbiBvZiBsb2dpYywgd2UncmUgZ29pbmcgdG8gcHJldGVuZCB0aGF0IHRoZSB0cmVlXG4gIC8vIHJldHVybmVkIGJ5IHRoZSBkeW5hbWljIHJlcXVlc3QgaXMsIGluIGZhY3QsIGEgcHJlZmV0Y2ggdHJlZS4gVGhlbiB3ZSBjYW5cbiAgLy8gdXNlIHRoZSBzYW1lIHNlcnZlciByZXNwb25zZSB0byB3cml0ZSB0aGUgYWN0dWFsIGRhdGEgaW50byB0aGUgQ2FjaGVOb2RlXG4gIC8vIHRyZWUuIFNvIGl0J3MgdGhlIHNhbWUgZmxvdyBhcyB0aGUgXCJoYXBweSBwYXRoXCIgKHByZWZldGNoLCB0aGVuXG4gIC8vIG5hdmlnYXRpb24pLCBleGNlcHQgd2UgdXNlIGEgc2luZ2xlIHNlcnZlciByZXNwb25zZSBmb3IgYm90aCBzdGFnZXMuXG5cbiAgbGV0IGR5bmFtaWNSZXF1ZXN0VHJlZTogRmxpZ2h0Um91dGVyU3RhdGVcbiAgc3dpdGNoIChmcmVzaG5lc3NQb2xpY3kpIHtcbiAgICBjYXNlIEZyZXNobmVzc1BvbGljeS5EZWZhdWx0OlxuICAgIGNhc2UgRnJlc2huZXNzUG9saWN5Lkhpc3RvcnlUcmF2ZXJzYWw6XG4gICAgY2FzZSBGcmVzaG5lc3NQb2xpY3kuR2VzdHVyZTpcbiAgICAgIGR5bmFtaWNSZXF1ZXN0VHJlZSA9IGN1cnJlbnRGbGlnaHRSb3V0ZXJTdGF0ZVxuICAgICAgYnJlYWtcbiAgICBjYXNlIEZyZXNobmVzc1BvbGljeS5IeWRyYXRpb246IC8vIDwtIHNob3VsZG4ndCBoYXBwZW4gZHVyaW5nIGNsaWVudCBuYXZcbiAgICBjYXNlIEZyZXNobmVzc1BvbGljeS5SZWZyZXNoQWxsOlxuICAgIGNhc2UgRnJlc2huZXNzUG9saWN5LkhNUlJlZnJlc2g6XG4gICAgICBkeW5hbWljUmVxdWVzdFRyZWUgPSBEeW5hbWljUmVxdWVzdFRyZWVGb3JFbnRpcmVSb3V0ZVxuICAgICAgYnJlYWtcbiAgICBkZWZhdWx0OlxuICAgICAgZnJlc2huZXNzUG9saWN5IHNhdGlzZmllcyBuZXZlclxuICAgICAgZHluYW1pY1JlcXVlc3RUcmVlID0gY3VycmVudEZsaWdodFJvdXRlclN0YXRlXG4gICAgICBicmVha1xuICB9XG5cbiAgY29uc3QgcHJvbWlzZUZvckR5bmFtaWNTZXJ2ZXJSZXNwb25zZSA9IGZldGNoU2VydmVyUmVzcG9uc2UodXJsLCB7XG4gICAgZmxpZ2h0Um91dGVyU3RhdGU6IGR5bmFtaWNSZXF1ZXN0VHJlZSxcbiAgICBuZXh0VXJsLFxuICB9KVxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcm9taXNlRm9yRHluYW1pY1NlcnZlclJlc3BvbnNlXG4gIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJykge1xuICAgIC8vIFRoaXMgaXMgYW4gTVBBIG5hdmlnYXRpb24uXG4gICAgY29uc3QgcmVkaXJlY3RVcmwgPSBuZXcgVVJMKHJlc3VsdCwgbG9jYXRpb24ub3JpZ2luKVxuICAgIHJldHVybiBjb21wbGV0ZUhhcmROYXZpZ2F0aW9uKHN0YXRlLCByZWRpcmVjdFVybCwgbmF2aWdhdGVUeXBlKVxuICB9XG5cbiAgY29uc3Qge1xuICAgIGZsaWdodERhdGEsXG4gICAgY2Fub25pY2FsVXJsLFxuICAgIHJlbmRlcmVkU2VhcmNoLFxuICAgIGNvdWxkQmVJbnRlcmNlcHRlZCxcbiAgICBzdXBwb3J0c1BlclNlZ21lbnRQcmVmZXRjaGluZyxcbiAgICBkeW5hbWljU3RhbGVUaW1lLFxuICAgIHN0YXRpY1N0YWdlRGF0YSxcbiAgICBydW50aW1lUHJlZmV0Y2hTdHJlYW0sXG4gICAgcmVzcG9uc2VIZWFkZXJzLFxuICAgIGRlYnVnSW5mbyxcbiAgfSA9IHJlc3VsdFxuXG4gIC8vIFNpbmNlIHRoZSByZXNwb25zZSBmb3JtYXQgb2YgZHluYW1pYyByZXF1ZXN0cyBhbmQgcHJlZmV0Y2hlcyBpcyBzbGlnaHRseVxuICAvLyBkaWZmZXJlbnQsIHdlJ2xsIG5lZWQgdG8gbWFzc2FnZSB0aGUgZGF0YSBhIGJpdC4gQ3JlYXRlIEZsaWdodFJvdXRlclN0YXRlXG4gIC8vIHRyZWUgdGhhdCBzaW11bGF0ZXMgd2hhdCB3ZSdkIHJlY2VpdmUgYXMgdGhlIHJlc3VsdCBvZiBhIHByZWZldGNoLlxuICBjb25zdCBuYXZpZ2F0aW9uU2VlZCA9IGNvbnZlcnRTZXJ2ZXJQYXRjaFRvRnVsbFRyZWUoXG4gICAgbm93LFxuICAgIGN1cnJlbnRGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgICBmbGlnaHREYXRhLFxuICAgIHJlbmRlcmVkU2VhcmNoLFxuICAgIGR5bmFtaWNTdGFsZVRpbWVcbiAgKVxuXG4gIC8vIExlYXJuIHRoZSByb3V0ZSBwYXR0ZXJuIHNvIHdlIGNhbiBwcmVkaWN0IGl0IGZvciBmdXR1cmUgbmF2aWdhdGlvbnMuXG4gIC8vIGhhc0R5bmFtaWNSZXdyaXRlIGlzIGZhbHNlIGJlY2F1c2UgdGhpcyBpcyBhIGZyZXNoIG5hdmlnYXRpb24gdG8gYW5cbiAgLy8gdW5rbm93biByb3V0ZSAtIGFueSByZXdyaXRlIGRldGVjdGlvbiBoYXBwZW5zIGR1cmluZyB0aGUgdHJhdmVyc2FsIGluc2lkZVxuICAvLyBkaXNjb3Zlcktub3duUm91dGUuIFRoZSBoYXNEeW5hbWljUmV3cml0ZSBwYXJhbSBpcyBvbmx5IHNldCB0byB0cnVlIHdoZW5cbiAgLy8gcmV0cnlpbmcgYWZ0ZXIgYSB0cmVlIG1pc21hdGNoIChzZWUgZGlzcGF0Y2hSZXRyeUR1ZVRvVHJlZU1pc21hdGNoKS5cbiAgY29uc3QgbWV0YWRhdGFWYXJ5UGF0aCA9IG5hdmlnYXRpb25TZWVkLm1ldGFkYXRhVmFyeVBhdGhcbiAgaWYgKG1ldGFkYXRhVmFyeVBhdGggIT09IG51bGwpIHtcbiAgICBkaXNjb3Zlcktub3duUm91dGUoXG4gICAgICBub3csXG4gICAgICB1cmwucGF0aG5hbWUsXG4gICAgICBuZXh0VXJsLFxuICAgICAgbnVsbCwgLy8gTm8gcGVuZGluZyBlbnRyeVxuICAgICAgbmF2aWdhdGlvblNlZWQucm91dGVUcmVlLFxuICAgICAgbWV0YWRhdGFWYXJ5UGF0aCxcbiAgICAgIGNvdWxkQmVJbnRlcmNlcHRlZCxcbiAgICAgIGNyZWF0ZUhyZWZGcm9tVXJsKGNhbm9uaWNhbFVybCksXG4gICAgICBzdXBwb3J0c1BlclNlZ21lbnRQcmVmZXRjaGluZyxcbiAgICAgIGZhbHNlIC8vIGhhc0R5bmFtaWNSZXdyaXRlIC0gbm90IGEgcmV0cnksIHJld3JpdGUgZGV0ZWN0aW9uIGhhcHBlbnMgZHVyaW5nIHRyYXZlcnNhbFxuICAgIClcblxuICAgIGlmIChzdGF0aWNTdGFnZURhdGEgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHsgcmVzcG9uc2U6IHN0YXRpY1N0YWdlUmVzcG9uc2UsIGlzUmVzcG9uc2VQYXJ0aWFsIH0gPVxuICAgICAgICBzdGF0aWNTdGFnZURhdGFcblxuICAgICAgLy8gV3JpdGUgdGhlIHN0YXRpYyBzdGFnZSBvZiB0aGUgcmVzcG9uc2UgaW50byB0aGUgc2VnbWVudCBjYWNoZSBzbyB0aGF0XG4gICAgICAvLyBzdWJzZXF1ZW50IG5hdmlnYXRpb25zIGNhbiBzZXJ2ZSBjYWNoZWQgc3RhdGljIHNlZ21lbnRzIGluc3RhbnRseS5cbiAgICAgIGdldFN0YWxlQXQobm93LCBzdGF0aWNTdGFnZVJlc3BvbnNlLnMpXG4gICAgICAgIC50aGVuKChzdGFsZUF0KSA9PiB7XG4gICAgICAgICAgY29uc3QgYnVpbGRJZCA9XG4gICAgICAgICAgICByZXNwb25zZUhlYWRlcnMuZ2V0KE5FWFRfTkFWX0RFUExPWU1FTlRfSURfSEVBREVSKSA/P1xuICAgICAgICAgICAgc3RhdGljU3RhZ2VSZXNwb25zZS5iXG5cbiAgICAgICAgICB3cml0ZVN0YXRpY1N0YWdlUmVzcG9uc2VJbnRvQ2FjaGUoXG4gICAgICAgICAgICBub3csXG4gICAgICAgICAgICBzdGF0aWNTdGFnZVJlc3BvbnNlLmYsXG4gICAgICAgICAgICBidWlsZElkLFxuICAgICAgICAgICAgc3RhdGljU3RhZ2VSZXNwb25zZS5oLFxuICAgICAgICAgICAgc3RhbGVBdCxcbiAgICAgICAgICAgIGN1cnJlbnRGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgICAgICAgICAgIHJlbmRlcmVkU2VhcmNoLFxuICAgICAgICAgICAgaXNSZXNwb25zZVBhcnRpYWxcbiAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgLy8gVGhlIHN0YXRpYyBzdGFnZSBwcm9jZXNzaW5nIGZhaWxlZC4gTm90IGZhdGFsIOKAlCB0aGUgbmF2aWdhdGlvblxuICAgICAgICAgIC8vIGNvbXBsZXRlZCBub3JtYWxseSwgd2UganVzdCB3b24ndCB3cml0ZSBpbnRvIHRoZSBjYWNoZS5cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAocnVudGltZVByZWZldGNoU3RyZWFtICE9PSBudWxsKSB7XG4gICAgICBwcm9jZXNzUnVudGltZVByZWZldGNoU3RyZWFtKFxuICAgICAgICBub3csXG4gICAgICAgIHJ1bnRpbWVQcmVmZXRjaFN0cmVhbSxcbiAgICAgICAgY3VycmVudEZsaWdodFJvdXRlclN0YXRlLFxuICAgICAgICByZW5kZXJlZFNlYXJjaFxuICAgICAgKVxuICAgICAgICAudGhlbigocHJvY2Vzc2VkKSA9PiB7XG4gICAgICAgICAgaWYgKHByb2Nlc3NlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgd3JpdGVEeW5hbWljUmVuZGVyUmVzcG9uc2VJbnRvQ2FjaGUoXG4gICAgICAgICAgICAgIG5vdyxcbiAgICAgICAgICAgICAgRmV0Y2hTdHJhdGVneS5QUFJSdW50aW1lLFxuICAgICAgICAgICAgICBwcm9jZXNzZWQuZmxpZ2h0RGF0YXMsXG4gICAgICAgICAgICAgIHByb2Nlc3NlZC5idWlsZElkLFxuICAgICAgICAgICAgICBwcm9jZXNzZWQuaXNSZXNwb25zZVBhcnRpYWwsXG4gICAgICAgICAgICAgIHByb2Nlc3NlZC5oZWFkVmFyeVBhcmFtcyxcbiAgICAgICAgICAgICAgcHJvY2Vzc2VkLnN0YWxlQXQsXG4gICAgICAgICAgICAgIHByb2Nlc3NlZC5uYXZpZ2F0aW9uU2VlZCxcbiAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAvLyBUaGUgcnVudGltZSBwcmVmZXRjaCBjYWNoZSB3cml0ZSBmYWlsZWQuIE5vdCBmYXRhbCDigJQgdGhlXG4gICAgICAgICAgLy8gbmF2aWdhdGlvbiBjb21wbGV0ZWQgbm9ybWFsbHksIHdlIGp1c3Qgd29uJ3QgY2FjaGUgcnVudGltZSBkYXRhLlxuICAgICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuYXZpZ2F0ZVRvS25vd25Sb3V0ZShcbiAgICBub3csXG4gICAgc3RhdGUsXG4gICAgdXJsLFxuICAgIGNyZWF0ZUhyZWZGcm9tVXJsKGNhbm9uaWNhbFVybCksXG4gICAgbmF2aWdhdGlvblNlZWQsXG4gICAgY3VycmVudFVybCxcbiAgICBjdXJyZW50UmVuZGVyZWRTZWFyY2gsXG4gICAgY3VycmVudENhY2hlTm9kZSxcbiAgICBjdXJyZW50RmxpZ2h0Um91dGVyU3RhdGUsXG4gICAgZnJlc2huZXNzUG9saWN5LFxuICAgIG5leHRVcmwsXG4gICAgc2Nyb2xsQmVoYXZpb3IsXG4gICAgbmF2aWdhdGVUeXBlLFxuICAgIGRlYnVnSW5mbyxcbiAgICAvLyBVbmtub3duIHJvdXRlIG5hdmlnYXRpb25zIGRvbid0IHVzZSByb3V0ZSBwcmVkaWN0aW9uIC0gdGhlIHJvdXRlIHRyZWVcbiAgICAvLyBjYW1lIGRpcmVjdGx5IGZyb20gdGhlIHNlcnZlci4gSWYgYSBtaXNtYXRjaCBvY2N1cnMgZHVyaW5nIGR5bmFtaWMgZGF0YVxuICAgIC8vIGZldGNoLCB0aGUgcmV0cnkgaGFuZGxlciB3aWxsIHRyYXZlcnNlIHRoZSBrbm93biByb3V0ZSB0cmVlIHRvIG1hcmsgdGhlXG4gICAgLy8gZW50cnkgYXMgaGF2aW5nIGEgZHluYW1pYyByZXdyaXRlLlxuICAgIG51bGxcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGxldGVIYXJkTmF2aWdhdGlvbihcbiAgc3RhdGU6IEFwcFJvdXRlclN0YXRlLFxuICB1cmw6IFVSTCxcbiAgbmF2aWdhdGVUeXBlOiAncHVzaCcgfCAncmVwbGFjZSdcbik6IEFwcFJvdXRlclN0YXRlIHtcbiAgaWYgKGlzSmF2YVNjcmlwdFVSTFN0cmluZyh1cmwuaHJlZikpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgJ05leHQuanMgaGFzIGJsb2NrZWQgYSBqYXZhc2NyaXB0OiBVUkwgYXMgYSBzZWN1cml0eSBwcmVjYXV0aW9uLidcbiAgICApXG4gICAgcmV0dXJuIHN0YXRlXG4gIH1cbiAgY29uc3QgbmV3U3RhdGU6IEFwcFJvdXRlclN0YXRlID0ge1xuICAgIGNhbm9uaWNhbFVybDpcbiAgICAgIHVybC5vcmlnaW4gPT09IGxvY2F0aW9uLm9yaWdpbiA/IGNyZWF0ZUhyZWZGcm9tVXJsKHVybCkgOiB1cmwuaHJlZixcbiAgICBwdXNoUmVmOiB7XG4gICAgICBwZW5kaW5nUHVzaDogbmF2aWdhdGVUeXBlID09PSAncHVzaCcsXG4gICAgICBtcGFOYXZpZ2F0aW9uOiB0cnVlLFxuICAgICAgcHJlc2VydmVDdXN0b21IaXN0b3J5U3RhdGU6IGZhbHNlLFxuICAgIH0sXG4gICAgLy8gVE9ETzogTm9uZSBvZiB0aGUgcmVzdCBvZiB0aGVzZSB2YWx1ZXMgYXJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgaW5jb21pbmdcbiAgICAvLyBuYXZpZ2F0aW9uLiBXZSByZWx5IG9uIHRoZSBmYWN0IHRoYXQgQXBwUm91dGVyIHdpbGwgc3VzcGVuZCBhbmQgdHJpZ2dlclxuICAgIC8vIGEgaGFyZCBuYXZpZ2F0aW9uIGJlZm9yZSBpdCBhY2Nlc3NlcyBhbnkgb2YgdGhlc2UgdmFsdWVzLiBCdXQgaW5zdGVhZFxuICAgIC8vIHdlIHNob3VsZCB0cmlnZ2VyIHRoZSBoYXJkIG5hdmlnYXRpb24gYW5kIGJsb2NraW5nIGFueSBzdWJzZXF1ZW50XG4gICAgLy8gcm91dGVyIHVwZGF0ZXMgd2l0aG91dCB1cGRhdGluZyBSZWFjdC5cbiAgICByZW5kZXJlZFNlYXJjaDogc3RhdGUucmVuZGVyZWRTZWFyY2gsXG4gICAgZm9jdXNBbmRTY3JvbGxSZWY6IHN0YXRlLmZvY3VzQW5kU2Nyb2xsUmVmLFxuICAgIGNhY2hlOiBzdGF0ZS5jYWNoZSxcbiAgICB0cmVlOiBzdGF0ZS50cmVlLFxuICAgIG5leHRVcmw6IHN0YXRlLm5leHRVcmwsXG4gICAgcHJldmlvdXNOZXh0VXJsOiBzdGF0ZS5wcmV2aW91c05leHRVcmwsXG4gICAgZGVidWdJbmZvOiBudWxsLFxuICB9XG4gIHJldHVybiBuZXdTdGF0ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGxldGVTb2Z0TmF2aWdhdGlvbihcbiAgb2xkU3RhdGU6IEFwcFJvdXRlclN0YXRlLFxuICB1cmw6IFVSTCxcbiAgcmVmZXJyaW5nTmV4dFVybDogc3RyaW5nIHwgbnVsbCxcbiAgdHJlZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIGNhY2hlOiBDYWNoZU5vZGUsXG4gIHJlbmRlcmVkU2VhcmNoOiBzdHJpbmcsXG4gIGNhbm9uaWNhbFVybDogc3RyaW5nLFxuICBuYXZpZ2F0ZVR5cGU6ICdwdXNoJyB8ICdyZXBsYWNlJyxcbiAgc2Nyb2xsQmVoYXZpb3I6IFNjcm9sbEJlaGF2aW9yLFxuICBzY3JvbGxSZWY6IFNjcm9sbFJlZiB8IG51bGwsXG4gIGNvbGxlY3RlZERlYnVnSW5mbzogQXJyYXk8dW5rbm93bj4gfCBudWxsXG4pIHtcbiAgLy8gVGhlIFwiTmV4dC1VcmxcIiBpcyBhIHNwZWNpYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIFVSTCB0aGF0IE5leHQuanNcbiAgLy8gdXNlcyB0byBpbXBsZW1lbnQgaW50ZXJjZXB0aW9uIHJvdXRlcy5cbiAgLy8gVE9ETzogR2V0IHJpZCBvZiB0aGlzIGV4dHJhIHRyYXZlcnNhbCBieSBjb21wdXRpbmcgdGhpcyBkdXJpbmcgdGhlXG4gIC8vIHNhbWUgdHJhdmVyc2FsIHRoYXQgY29tcHV0ZXMgdGhlIHRyZWUgaXRzZWxmLiBXZSBzaG91bGQgYWxzbyBmaWd1cmUgb3V0XG4gIC8vIHdoYXQgaXMgdGhlIG1pbmltdW0gaW5mb3JtYXRpb24gbmVlZGVkIGZvciB0aGUgc2VydmVyIHRvIGNvcnJlY3RseVxuICAvLyBpbnRlcmNlcHQgdGhlIHJvdXRlLlxuICBjb25zdCBjaGFuZ2VkUGF0aCA9IGNvbXB1dGVDaGFuZ2VkUGF0aChvbGRTdGF0ZS50cmVlLCB0cmVlKVxuICBjb25zdCBuZXh0VXJsRm9yTmV3Um91dGUgPSBjaGFuZ2VkUGF0aCA/IGNoYW5nZWRQYXRoIDogb2xkU3RhdGUubmV4dFVybFxuXG4gIC8vIFRoaXMgdmFsdWUgaXMgc3RvcmVkIG9uIHRoZSBzdGF0ZSBhcyBgcHJldmlvdXNOZXh0VXJsYDsgdGhlIG5hbWluZyBpc1xuICAvLyBjb25mdXNpbmcuIFdoYXQgaXQgcmVwcmVzZW50cyBpcyB0aGUgXCJOZXh0LVVybFwiIGhlYWRlciB0aGF0IHdhcyB1c2VkIHRvXG4gIC8vIGZldGNoIHRoZSBpbmNvbWluZyByb3V0ZS4gSXQncyBlc3NlbnRpYWxseSB0aGUgcmVmZXJlcmVyIFVSTCwgYnV0IGluIGFcbiAgLy8gTmV4dC5qcyBzcGVjaWZpYyBmb3JtYXQuIER1cmluZyByZWZyZXNoZXMsIHRoaXMgaXMgc2VudCBiYWNrIHRvIHRoZSBzZXJ2ZXJcbiAgLy8gaW5zdGVhZCBvZiB0aGUgY3VycmVudCByb3V0ZSdzIFwiTmV4dC1VcmxcIiBzbyB0aGF0IHRoZSBzYW1lIGludGVyY2VwdGlvblxuICAvLyBsb2dpYyBpcyBhcHBsaWVkIGFzIGR1cmluZyB0aGUgb3JpZ2luYWwgbmF2aWdhdGlvbi5cbiAgY29uc3QgcHJldmlvdXNOZXh0VXJsID0gcmVmZXJyaW5nTmV4dFVybFxuXG4gIC8vIENoZWNrIGlmIHRoZSBvbmx5IHRoaW5nIHRoYXQgY2hhbmdlZCB3YXMgdGhlIGhhc2ggZnJhZ21lbnQuXG4gIGNvbnN0IG9sZFVybCA9IG5ldyBVUkwob2xkU3RhdGUuY2Fub25pY2FsVXJsLCB1cmwpXG4gIGNvbnN0IG9ubHlIYXNoQ2hhbmdlID1cbiAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNvbXBhcmUgdGhlIG9yaWdpbnMsIGJlY2F1c2UgY2xpZW50LWRyaXZlblxuICAgIC8vIG5hdmlnYXRpb25zIGFyZSBhbHdheXMgc2FtZS1vcmlnaW4uXG4gICAgdXJsLnBhdGhuYW1lID09PSBvbGRVcmwucGF0aG5hbWUgJiZcbiAgICB1cmwuc2VhcmNoID09PSBvbGRVcmwuc2VhcmNoICYmXG4gICAgdXJsLmhhc2ggIT09IG9sZFVybC5oYXNoXG5cbiAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgYW5kIGhvdyB0aGUgcGFnZSBzaG91bGQgc2Nyb2xsIGFmdGVyIHRoaXNcbiAgLy8gbmF2aWdhdGlvbi5cbiAgLy9cbiAgLy8gQnkgZGVmYXVsdCwgd2Ugc2Nyb2xsIHRvIHRoZSBzZWdtZW50cyB0aGF0IHdlcmUgbmF2aWdhdGVkIHRvIOKAlCBpLmUuXG4gIC8vIHNlZ21lbnRzIGluIHRoZSBuZXcgcGFydCBvZiB0aGUgcm91dGUsIGFzIG9wcG9zZWQgdG8gc2hhcmVkIHNlZ21lbnRzXG4gIC8vIHRoYXQgd2VyZSBhbHJlYWR5IHBhcnQgb2YgdGhlIHByZXZpb3VzIHJvdXRlLiBBbGwgbmV3bHkgbmF2aWdhdGVkXG4gIC8vIHNlZ21lbnRzIHNoYXJlIGEgc2luZ2xlIFNjcm9sbFJlZi4gV2hlbiB0aGV5IG1vdW50LCB0aGUgZmlyc3Qgb25lXG4gIC8vIHRvIG1vdW50IGluaXRpYXRlcyB0aGUgc2Nyb2xsLiBUaGV5IHNoYXJlIGEgcmVmIHNvIHRoYXQgb25seSBvbmVcbiAgLy8gc2Nyb2xsIGhhcHBlbnMgcGVyIG5hdmlnYXRpb24uXG4gIC8vXG4gIC8vIElmIGEgc3Vic2VxdWVudCBuYXZpZ2F0aW9uIHByb2R1Y2VzIG5ldyBzZWdtZW50cywgdGhvc2Ugc3VwZXJzZWRlXG4gIC8vIGFueSBwZW5kaW5nIHNjcm9sbCBmcm9tIHRoZSBwcmV2aW91cyBuYXZpZ2F0aW9uIGJ5IGludmFsaWRhdGluZyBpdHNcbiAgLy8gU2Nyb2xsUmVmLiBJZiBhIG5hdmlnYXRpb24gZG9lc24ndCBwcm9kdWNlIGFueSBuZXcgc2VnbWVudHMgKGUuZy5cbiAgLy8gYSByZWZyZXNoIHdoZXJlIHRoZSByb3V0ZSBzdHJ1Y3R1cmUgZGlkbid0IGNoYW5nZSksIGFueSBwZW5kaW5nXG4gIC8vIHNjcm9sbHMgZnJvbSBwcmV2aW91cyBuYXZpZ2F0aW9ucyBhcmUgdW5hZmZlY3RlZC5cbiAgLy9cbiAgLy8gVGhlIGJyYW5jaGVzIGJlbG93IGhhbmRsZSBzcGVjaWFsIGNhc2VzIGxheWVyZWQgb24gdG9wIG9mIHRoaXNcbiAgLy8gZGVmYXVsdCBtb2RlbC5cbiAgbGV0IGFjdGl2ZVNjcm9sbFJlZjogU2Nyb2xsUmVmIHwgbnVsbFxuICBsZXQgZm9yY2VTY3JvbGw6IGJvb2xlYW5cbiAgaWYgKHNjcm9sbEJlaGF2aW9yID09PSBTY3JvbGxCZWhhdmlvci5Ob1Njcm9sbCkge1xuICAgIC8vIFRoZSB1c2VyIGV4cGxpY2l0bHkgb3B0ZWQgb3V0IG9mIHNjcm9sbGluZyAoZS5nLiBzY3JvbGw9e2ZhbHNlfVxuICAgIC8vIG9uIGEgTGluayBvciByb3V0ZXIucHVzaCkuXG4gICAgLy9cbiAgICAvLyBJZiB0aGlzIG5hdmlnYXRpb24gY3JlYXRlZCBuZXcgc2Nyb2xsIHRhcmdldHMgKHNjcm9sbFJlZiAhPT0gbnVsbCksXG4gICAgLy8gbmV1dHJhbGl6ZSB0aGVtLiBJZiBpdCBkaWRuJ3QsIGFueSBwcmlvciBzY3JvbGwgdGFyZ2V0cyBjYXJyaWVkXG4gICAgLy8gZm9yd2FyZCBvbiB0aGUgY2FjaGUgbm9kZXMgdmlhIHJldXNlU2hhcmVkQ2FjaGVOb2RlIHJlbWFpbiBhY3RpdmUuXG4gICAgaWYgKHNjcm9sbFJlZiAhPT0gbnVsbCkge1xuICAgICAgc2Nyb2xsUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH1cbiAgICBhY3RpdmVTY3JvbGxSZWYgPSBvbGRTdGF0ZS5mb2N1c0FuZFNjcm9sbFJlZi5zY3JvbGxSZWZcbiAgICBmb3JjZVNjcm9sbCA9IGZhbHNlXG4gIH0gZWxzZSBpZiAob25seUhhc2hDaGFuZ2UpIHtcbiAgICAvLyBIYXNoLW9ubHkgbmF2aWdhdGlvbnMgc2hvdWxkIHNjcm9sbCByZWdhcmRsZXNzIG9mIHBlci1ub2RlIHN0YXRlLlxuICAgIC8vIENyZWF0ZSBhIGZyZXNoIHJlZiBzbyB0aGUgZmlyc3Qgc2VnbWVudCB0byBzY3JvbGwgY29uc3VtZXMgaXQuXG4gICAgLy9cbiAgICAvLyBJbnZhbGlkYXRlIGFueSBzY3JvbGwgcmVmIGZyb20gYSBwcmlvciBuYXZpZ2F0aW9uIHRoYXQgaGFzbid0XG4gICAgLy8gYmVlbiBjb25zdW1lZCB5ZXQuXG4gICAgY29uc3Qgb2xkU2Nyb2xsUmVmID0gb2xkU3RhdGUuZm9jdXNBbmRTY3JvbGxSZWYuc2Nyb2xsUmVmXG4gICAgaWYgKG9sZFNjcm9sbFJlZiAhPT0gbnVsbCkge1xuICAgICAgb2xkU2Nyb2xsUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH1cbiAgICAvLyBBbHNvIGludmFsaWRhdGUgYW55IHBlci1ub2RlIHJlZnMgdGhhdCB3ZXJlIGFjY3VtdWxhdGVkIGR1cmluZ1xuICAgIC8vIHRoaXMgbmF2aWdhdGlvbidzIHRyZWUgY29uc3RydWN0aW9uIOKAlCB0aGUgaGFzaC1vbmx5IHJlZlxuICAgIC8vIHN1cGVyc2VkZXMgdGhlbS5cbiAgICBpZiAoc2Nyb2xsUmVmICE9PSBudWxsKSB7XG4gICAgICBzY3JvbGxSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfVxuICAgIGFjdGl2ZVNjcm9sbFJlZiA9IHsgY3VycmVudDogdHJ1ZSB9XG4gICAgZm9yY2VTY3JvbGwgPSB0cnVlXG4gIH0gZWxzZSB7XG4gICAgLy8gRGVmYXVsdCBjYXNlLiBVc2UgdGhlIGFjY3VtdWxhdGVkIHNjcm9sbFJlZiAobWF5IGJlIG51bGwgaWYgbm9cbiAgICAvLyBuZXcgc2VnbWVudHMgd2VyZSBjcmVhdGVkKS4gVGhlIGhhbmRsZXIgY2hlY2tzIHBlci1ub2RlIHJlZnMsIHNvXG4gICAgLy8gdW5jaGFuZ2VkIHBhcmFsbGVsIHJvdXRlIHNsb3RzIHdvbid0IHNjcm9sbC5cbiAgICBhY3RpdmVTY3JvbGxSZWYgPSBzY3JvbGxSZWZcblxuICAgIC8vIElmIHRoaXMgbmF2aWdhdGlvbiBjcmVhdGVkIG5ldyBzY3JvbGwgdGFyZ2V0cywgaW52YWxpZGF0ZSBhbnlcbiAgICAvLyBwZW5kaW5nIHNjcm9sbCBmcm9tIGEgcHJldmlvdXMgbmF2aWdhdGlvbi5cbiAgICBpZiAoc2Nyb2xsUmVmICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBvbGRTY3JvbGxSZWYgPSBvbGRTdGF0ZS5mb2N1c0FuZFNjcm9sbFJlZi5zY3JvbGxSZWZcbiAgICAgIGlmIChvbGRTY3JvbGxSZWYgIT09IG51bGwpIHtcbiAgICAgICAgb2xkU2Nyb2xsUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgfVxuICAgIH1cbiAgICBmb3JjZVNjcm9sbCA9IGZhbHNlXG4gIH1cblxuICBjb25zdCBuZXdTdGF0ZTogQXBwUm91dGVyU3RhdGUgPSB7XG4gICAgY2Fub25pY2FsVXJsLFxuICAgIHJlbmRlcmVkU2VhcmNoLFxuICAgIHB1c2hSZWY6IHtcbiAgICAgIHBlbmRpbmdQdXNoOiBuYXZpZ2F0ZVR5cGUgPT09ICdwdXNoJyxcbiAgICAgIG1wYU5hdmlnYXRpb246IGZhbHNlLFxuICAgICAgcHJlc2VydmVDdXN0b21IaXN0b3J5U3RhdGU6IGZhbHNlLFxuICAgIH0sXG4gICAgZm9jdXNBbmRTY3JvbGxSZWY6IHtcbiAgICAgIHNjcm9sbFJlZjogYWN0aXZlU2Nyb2xsUmVmLFxuICAgICAgZm9yY2VTY3JvbGwsXG4gICAgICBvbmx5SGFzaENoYW5nZSxcbiAgICAgIGhhc2hGcmFnbWVudDpcbiAgICAgICAgLy8gUmVtb3ZlIGxlYWRpbmcgIyBhbmQgZGVjb2RlIGhhc2ggdG8gbWFrZSBub24tbGF0aW4gaGFzaGVzIHdvcmsuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEVtcHR5IGhhc2ggc2hvdWxkIHRyaWdnZXIgZGVmYXVsdCBiZWhhdmlvciBvZiBzY3JvbGxpbmcgbGF5b3V0IGludG9cbiAgICAgICAgLy8gdmlldy4gI3RvcCBpcyBoYW5kbGVkIGluIGxheW91dC1yb3V0ZXIuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFJlZmVyIHRvIGBTY3JvbGxBbmRGb2N1c0hhbmRsZXJgIGZvciBkZXRhaWxzIG9uIGhvdyB0aGlzIGlzIHVzZWQuXG4gICAgICAgIHNjcm9sbEJlaGF2aW9yICE9PSBTY3JvbGxCZWhhdmlvci5Ob1Njcm9sbCAmJiB1cmwuaGFzaCAhPT0gJydcbiAgICAgICAgICA/IGRlY29kZVVSSUNvbXBvbmVudCh1cmwuaGFzaC5zbGljZSgxKSlcbiAgICAgICAgICA6IG9sZFN0YXRlLmZvY3VzQW5kU2Nyb2xsUmVmLmhhc2hGcmFnbWVudCxcbiAgICB9LFxuICAgIGNhY2hlLFxuICAgIHRyZWUsXG4gICAgbmV4dFVybDogbmV4dFVybEZvck5ld1JvdXRlLFxuICAgIHByZXZpb3VzTmV4dFVybCxcbiAgICBkZWJ1Z0luZm86IGNvbGxlY3RlZERlYnVnSW5mbyxcbiAgfVxuICByZXR1cm4gbmV3U3RhdGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBsZXRlVHJhdmVyc2VOYXZpZ2F0aW9uKFxuICBzdGF0ZTogQXBwUm91dGVyU3RhdGUsXG4gIHVybDogVVJMLFxuICByZW5kZXJlZFNlYXJjaDogc3RyaW5nLFxuICBjYWNoZTogQ2FjaGVOb2RlLFxuICB0cmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgbmV4dFVybDogc3RyaW5nIHwgbnVsbFxuKSB7XG4gIHJldHVybiB7XG4gICAgLy8gU2V0IGNhbm9uaWNhbCB1cmxcbiAgICBjYW5vbmljYWxVcmw6IGNyZWF0ZUhyZWZGcm9tVXJsKHVybCksXG4gICAgcmVuZGVyZWRTZWFyY2gsXG4gICAgcHVzaFJlZjoge1xuICAgICAgcGVuZGluZ1B1c2g6IGZhbHNlLFxuICAgICAgbXBhTmF2aWdhdGlvbjogZmFsc2UsXG4gICAgICAvLyBFbnN1cmVzIHRoYXQgdGhlIGN1c3RvbSBoaXN0b3J5IHN0YXRlIHRoYXQgd2FzIHNldCBpcyBwcmVzZXJ2ZWQgd2hlbiBhcHBseWluZyB0aGlzIHVwZGF0ZS5cbiAgICAgIHByZXNlcnZlQ3VzdG9tSGlzdG9yeVN0YXRlOiB0cnVlLFxuICAgIH0sXG4gICAgZm9jdXNBbmRTY3JvbGxSZWY6IHN0YXRlLmZvY3VzQW5kU2Nyb2xsUmVmLFxuICAgIGNhY2hlLFxuICAgIC8vIFJlc3RvcmUgcHJvdmlkZWQgdHJlZVxuICAgIHRyZWUsXG4gICAgbmV4dFVybCxcbiAgICAvLyBUT0RPOiBXZSBuZWVkIHRvIHJlc3RvcmUgcHJldmlvdXNOZXh0VXJsLCB0b28sIHdoaWNoIHJlcHJlc2VudHMgdGhlXG4gICAgLy8gTmV4dC1VcmwgdGhhdCB3YXMgdXNlZCB0byBmZXRjaCB0aGUgZGF0YS4gQW55d2hlcmUgd2UgZmV0Y2ggdXNpbmcgdGhlXG4gICAgLy8gY2Fub25pY2FsIFVSTCwgdGhlcmUgc2hvdWxkIGJlIGEgY29ycmVzcG9uZGluZyBOZXh0LVVybC5cbiAgICBwcmV2aW91c05leHRVcmw6IG51bGwsXG4gICAgZGVidWdJbmZvOiBudWxsLFxuICB9XG59XG5cbi8vIFRPRE86IFRoZSByZXN0IG9mIHRoaXMgZmlsZSBpcyByZWxhdGVkIHRvIGNvbnZlcnRpbmcgdGhlIHNlcnZlciByZXNwb25zZSBpbnRvXG4vLyB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHVzZWQgYnkgdGhlIGNsaWVudC4gUHJvYmFibHkgc2hvdWxkIG1vdmUgdG8gYVxuLy8gc2VwYXJhdGUgbW9kdWxlLlxuXG5leHBvcnQgdHlwZSBOYXZpZ2F0aW9uU2VlZCA9IHtcbiAgcmVuZGVyZWRTZWFyY2g6IHN0cmluZ1xuICByb3V0ZVRyZWU6IFJvdXRlVHJlZVxuICBtZXRhZGF0YVZhcnlQYXRoOiBQYWdlVmFyeVBhdGggfCBudWxsXG4gIGRhdGE6IENhY2hlTm9kZVNlZWREYXRhIHwgbnVsbFxuICBoZWFkOiBIZWFkRGF0YSB8IG51bGxcbiAgZHluYW1pY1N0YWxlQXQ6IG51bWJlclxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFNlcnZlclBhdGNoVG9GdWxsVHJlZShcbiAgbm93OiBudW1iZXIsXG4gIGN1cnJlbnRUcmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgZmxpZ2h0RGF0YTogQXJyYXk8Tm9ybWFsaXplZEZsaWdodERhdGE+IHwgbnVsbCxcbiAgcmVuZGVyZWRTZWFyY2g6IHN0cmluZyxcbiAgZHluYW1pY1N0YWxlVGltZVNlY29uZHM6IG51bWJlclxuKTogTmF2aWdhdGlvblNlZWQge1xuICAvLyBEdXJpbmcgYSBjbGllbnQgbmF2aWdhdGlvbiBvciBwcmVmZXRjaCwgdGhlIHNlcnZlciBzZW5kcyBiYWNrIG9ubHkgYSBwYXRjaFxuICAvLyBmb3IgdGhlIHBhcnRzIG9mIHRoZSB0cmVlIHRoYXQgaGF2ZSBjaGFuZ2VkLlxuICAvL1xuICAvLyBUaGlzIGFwcGxpZXMgdGhlIHBhdGNoIHRvIHRoZSBiYXNlIHRyZWUgdG8gY3JlYXRlIGEgZnVsbCByZXByZXNlbnRhdGlvbiBvZlxuICAvLyB0aGUgcmVzdWx0aW5nIHRyZWUuXG4gIC8vXG4gIC8vIFRoZSByZXR1cm4gdHlwZSBpbmNsdWRlcyBhIGZ1bGwgRmxpZ2h0Um91dGVyU3RhdGUgdHJlZSBhbmQgYSBmdWxsXG4gIC8vIENhY2hlTm9kZVNlZWREYXRhIHRyZWUuIChDb25jZXB0dWFsbHkgdGhlc2UgYXJlIHRoZSBzYW1lIHRyZWUsIGFuZCBzaG91bGRcbiAgLy8gZXZlbnR1YWxseSBiZSB1bmlmaWVkLCBidXQgdGhlcmUncyBzdGlsbCBsb3RzIG9mIGV4aXN0aW5nIGNvZGUgdGhhdFxuICAvLyBvcGVyYXRlcyBvbiBGbGlnaHRSb3V0ZXJTdGF0ZSB0cmVlcyBhbG9uZSB3aXRob3V0IHRoZSBDYWNoZU5vZGVTZWVkRGF0YS4pXG4gIC8vXG4gIC8vIFRPRE86IFRoaXMgc2ltaWxhciB0byB3aGF0IGFwcGx5LXJvdXRlci1zdGF0ZS1wYXRjaC10by10cmVlIGRvZXMuIEl0XG4gIC8vIHdpbGwgZXZlbnR1YWxseSBmdWxseSByZXBsYWNlIGl0LiBXZSBzaG91bGQgZ2V0IHJpZCBvZiBhbGwgdGhlIHJlbWFpbmluZ1xuICAvLyBwbGFjZXMgd2hlcmUgd2UgaXRlcmF0ZSBvdmVyIHRoZSBzZXJ2ZXIgcGF0Y2ggZm9ybWF0LiBUaGlzIHNob3VsZCBhbHNvXG4gIC8vIGV2ZW50dWFsbHkgcmVwbGFjZSBub3JtYWxpemVGbGlnaHREYXRhLlxuXG4gIGxldCBiYXNlVHJlZTogRmxpZ2h0Um91dGVyU3RhdGUgPSBjdXJyZW50VHJlZVxuICBsZXQgYmFzZURhdGE6IENhY2hlTm9kZVNlZWREYXRhIHwgbnVsbCA9IG51bGxcbiAgbGV0IGhlYWQ6IEhlYWREYXRhIHwgbnVsbCA9IG51bGxcbiAgaWYgKGZsaWdodERhdGEgIT09IG51bGwpIHtcbiAgICBmb3IgKGNvbnN0IHtcbiAgICAgIHNlZ21lbnRQYXRoLFxuICAgICAgdHJlZTogdHJlZVBhdGNoLFxuICAgICAgc2VlZERhdGE6IGRhdGFQYXRjaCxcbiAgICAgIGhlYWQ6IGhlYWRQYXRjaCxcbiAgICB9IG9mIGZsaWdodERhdGEpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbnZlcnRTZXJ2ZXJQYXRjaFRvRnVsbFRyZWVJbXBsKFxuICAgICAgICBiYXNlVHJlZSxcbiAgICAgICAgYmFzZURhdGEsXG4gICAgICAgIHRyZWVQYXRjaCxcbiAgICAgICAgZGF0YVBhdGNoLFxuICAgICAgICBzZWdtZW50UGF0aCxcbiAgICAgICAgcmVuZGVyZWRTZWFyY2gsXG4gICAgICAgIDBcbiAgICAgIClcbiAgICAgIGJhc2VUcmVlID0gcmVzdWx0LnRyZWVcbiAgICAgIGJhc2VEYXRhID0gcmVzdWx0LmRhdGFcbiAgICAgIC8vIFRoaXMgaXMgdGhlIHNhbWUgZm9yIGFsbCBwYXRjaGVzIHBlciByZXNwb25zZSwgc28ganVzdCBwaWNrIGFuXG4gICAgICAvLyBhcmJpdHJhcnkgb25lXG4gICAgICBoZWFkID0gaGVhZFBhdGNoXG4gICAgfVxuICB9XG5cbiAgY29uc3QgZmluYWxGbGlnaHRSb3V0ZXJTdGF0ZSA9IGJhc2VUcmVlXG5cbiAgLy8gQ29udmVydCB0aGUgZmluYWwgRmxpZ2h0Um91dGVyU3RhdGUgaW50byBhIFJvdXRlVHJlZSB0eXBlLlxuICAvL1xuICAvLyBUT0RPOiBFdmVudHVhbGx5LCBGbGlnaHRSb3V0ZXJTdGF0ZSB3aWxsIGV2b2x2ZSB0byBiZWluZyBhIHRyYW5zcG9ydCBmb3JtYXRcbiAgLy8gb25seS4gVGhlIFJvdXRlVHJlZSB0eXBlIHdpbGwgYmVjb21lIHRoZSBtYWluIHR5cGUgdXNlZCBmb3IgZGVhbGluZyB3aXRoXG4gIC8vIHJvdXRlcyBvbiB0aGUgY2xpZW50LCBhbmQgd2UnbGwgc3RvcmUgaXQgaW4gdGhlIHN0YXRlIGRpcmVjdGx5LlxuICBjb25zdCBhY2MgPSB7IG1ldGFkYXRhVmFyeVBhdGg6IG51bGwgfVxuICBjb25zdCByb3V0ZVRyZWUgPSBjb252ZXJ0Um9vdEZsaWdodFJvdXRlclN0YXRlVG9Sb3V0ZVRyZWUoXG4gICAgZmluYWxGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgICByZW5kZXJlZFNlYXJjaCBhcyBOb3JtYWxpemVkU2VhcmNoLFxuICAgIGFjY1xuICApXG5cbiAgcmV0dXJuIHtcbiAgICByb3V0ZVRyZWUsXG4gICAgbWV0YWRhdGFWYXJ5UGF0aDogYWNjLm1ldGFkYXRhVmFyeVBhdGgsXG4gICAgZGF0YTogYmFzZURhdGEsXG4gICAgcmVuZGVyZWRTZWFyY2gsXG4gICAgaGVhZCxcbiAgICBkeW5hbWljU3RhbGVBdDogY29tcHV0ZUR5bmFtaWNTdGFsZUF0KG5vdywgZHluYW1pY1N0YWxlVGltZVNlY29uZHMpLFxuICB9XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRTZXJ2ZXJQYXRjaFRvRnVsbFRyZWVJbXBsKFxuICBiYXNlUm91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlLFxuICBiYXNlRGF0YTogQ2FjaGVOb2RlU2VlZERhdGEgfCBudWxsLFxuICB0cmVlUGF0Y2g6IEZsaWdodFJvdXRlclN0YXRlLFxuICBkYXRhUGF0Y2g6IENhY2hlTm9kZVNlZWREYXRhIHwgbnVsbCxcbiAgc2VnbWVudFBhdGg6IEZsaWdodFNlZ21lbnRQYXRoLFxuICByZW5kZXJlZFNlYXJjaDogc3RyaW5nLFxuICBpbmRleDogbnVtYmVyXG4pOiB7IHRyZWU6IEZsaWdodFJvdXRlclN0YXRlOyBkYXRhOiBDYWNoZU5vZGVTZWVkRGF0YSB8IG51bGwgfSB7XG4gIGlmIChpbmRleCA9PT0gc2VnbWVudFBhdGgubGVuZ3RoKSB7XG4gICAgLy8gV2UgcmVhY2hlZCB0aGUgcGFydCBvZiB0aGUgdHJlZSB0aGF0IHdlIG5lZWQgdG8gcGF0Y2guXG4gICAgcmV0dXJuIHtcbiAgICAgIHRyZWU6IHRyZWVQYXRjaCxcbiAgICAgIGRhdGE6IGRhdGFQYXRjaCxcbiAgICB9XG4gIH1cblxuICAvLyBzZWdtZW50UGF0aCByZXByZXNlbnRzIHRoZSBwYXJlbnQgcGF0aCBvZiBzdWJ0cmVlLiBJdCdzIGEgcmVwZWF0aW5nXG4gIC8vIHBhdHRlcm4gb2YgcGFyYWxsZWwgcm91dGUga2V5IGFuZCBzZWdtZW50OlxuICAvL1xuICAvLyAgIFtzdHJpbmcsIFNlZ21lbnQsIHN0cmluZywgU2VnbWVudCwgc3RyaW5nLCBTZWdtZW50LCAuLi5dXG4gIC8vXG4gIC8vIFRoaXMgcGF0aCB0ZWxscyB1cyB3aGljaCBwYXJ0IG9mIHRoZSBiYXNlIHRyZWUgdG8gYXBwbHkgdGhlIHRyZWUgcGF0Y2guXG4gIC8vXG4gIC8vIE5PVEU6IFdlIHJlY2VpdmUgdGhlIEZsaWdodFJvdXRlclN0YXRlIHBhdGNoIGluIHRoZSBzYW1lIHJlcXVlc3QgYXMgdGhlXG4gIC8vIHNlZWQgZGF0YSBwYXRjaC4gVGhlcmVmb3JlIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgZGlmZmluZyB0aGUgc2VnbWVudFxuICAvLyB2YWx1ZXM7IHdlIGNhbiBhc3N1bWUgdGhlIHNlcnZlciBzZW50IHVzIGEgY29ycmVjdCByZXN1bHQuXG4gIGNvbnN0IHVwZGF0ZWRQYXJhbGxlbFJvdXRlS2V5OiBzdHJpbmcgPSBzZWdtZW50UGF0aFtpbmRleF1cbiAgLy8gY29uc3Qgc2VnbWVudDogU2VnbWVudCA9IHNlZ21lbnRQYXRoW2luZGV4ICsgMV0gPC0tIE5vdCB1c2VkLCBzZWUgbm90ZSBhYm92ZVxuXG4gIGNvbnN0IGJhc2VUcmVlQ2hpbGRyZW4gPSBiYXNlUm91dGVyU3RhdGVbMV1cbiAgY29uc3QgYmFzZVNlZWREYXRhQ2hpbGRyZW4gPSBiYXNlRGF0YSAhPT0gbnVsbCA/IGJhc2VEYXRhWzFdIDogbnVsbFxuICBjb25zdCBuZXdUcmVlQ2hpbGRyZW46IFJlY29yZDxzdHJpbmcsIEZsaWdodFJvdXRlclN0YXRlPiA9IHt9XG4gIGNvbnN0IG5ld1NlZWREYXRhQ2hpbGRyZW46IFJlY29yZDxzdHJpbmcsIENhY2hlTm9kZVNlZWREYXRhIHwgbnVsbD4gPSB7fVxuICBmb3IgKGNvbnN0IHBhcmFsbGVsUm91dGVLZXkgaW4gYmFzZVRyZWVDaGlsZHJlbikge1xuICAgIGNvbnN0IGNoaWxkQmFzZVJvdXRlclN0YXRlID0gYmFzZVRyZWVDaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XVxuICAgIGNvbnN0IGNoaWxkQmFzZVNlZWREYXRhID1cbiAgICAgIGJhc2VTZWVkRGF0YUNoaWxkcmVuICE9PSBudWxsXG4gICAgICAgID8gKGJhc2VTZWVkRGF0YUNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldID8/IG51bGwpXG4gICAgICAgIDogbnVsbFxuICAgIGlmIChwYXJhbGxlbFJvdXRlS2V5ID09PSB1cGRhdGVkUGFyYWxsZWxSb3V0ZUtleSkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gY29udmVydFNlcnZlclBhdGNoVG9GdWxsVHJlZUltcGwoXG4gICAgICAgIGNoaWxkQmFzZVJvdXRlclN0YXRlLFxuICAgICAgICBjaGlsZEJhc2VTZWVkRGF0YSxcbiAgICAgICAgdHJlZVBhdGNoLFxuICAgICAgICBkYXRhUGF0Y2gsXG4gICAgICAgIHNlZ21lbnRQYXRoLFxuICAgICAgICByZW5kZXJlZFNlYXJjaCxcbiAgICAgICAgLy8gQWR2YW5jZSB0aGUgaW5kZXggYnkgdHdvIGFuZCBrZWVwIGNsb25pbmcgdW50aWwgd2UgcmVhY2hcbiAgICAgICAgLy8gdGhlIGVuZCBvZiB0aGUgc2VnbWVudCBwYXRoLlxuICAgICAgICBpbmRleCArIDJcbiAgICAgIClcblxuICAgICAgbmV3VHJlZUNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldID0gcmVzdWx0LnRyZWVcbiAgICAgIG5ld1NlZWREYXRhQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV0gPSByZXN1bHQuZGF0YVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGlzIGNoaWxkIGlzIG5vdCBiZWluZyBwYXRjaGVkLiBDb3B5IGl0IG92ZXIgYXMtaXMuXG4gICAgICBuZXdUcmVlQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV0gPSBjaGlsZEJhc2VSb3V0ZXJTdGF0ZVxuICAgICAgbmV3U2VlZERhdGFDaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XSA9IGNoaWxkQmFzZVNlZWREYXRhXG4gICAgfVxuICB9XG5cbiAgbGV0IGNsb25lZFRyZWU6IEZsaWdodFJvdXRlclN0YXRlXG4gIGxldCBjbG9uZWRTZWVkRGF0YTogQ2FjaGVOb2RlU2VlZERhdGFcbiAgLy8gQ2xvbmUgYWxsIHRoZSBmaWVsZHMgZXhjZXB0IHRoZSBjaGlsZHJlbi5cblxuICAvLyBDbG9uZSB0aGUgRmxpZ2h0Um91dGVyU3RhdGUgdHJlZS4gQmFzZWQgb24gZXF1aXZhbGVudCBsb2dpYyBpblxuICAvLyBhcHBseS1yb3V0ZXItc3RhdGUtcGF0Y2gtdG8tdHJlZSwgYnV0IHNob3VsZCBjb25maXJtIHdoZXRoZXIgd2UgbmVlZCB0b1xuICAvLyBjb3B5IGFsbCBvZiB0aGVzZSBmaWVsZHMuIE5vdCBzdXJlIHRoZSBzZXJ2ZXIgZXZlciBzZW5kcywgZS5nLiB0aGVcbiAgLy8gcmVmZXRjaCBtYXJrZXIuXG4gIGNsb25lZFRyZWUgPSBbYmFzZVJvdXRlclN0YXRlWzBdLCBuZXdUcmVlQ2hpbGRyZW5dXG4gIGlmICgyIGluIGJhc2VSb3V0ZXJTdGF0ZSkge1xuICAgIGNvbnN0IGNvbXByZXNzZWRSZWZyZXNoU3RhdGUgPSBiYXNlUm91dGVyU3RhdGVbMl1cbiAgICBpZiAoXG4gICAgICBjb21wcmVzc2VkUmVmcmVzaFN0YXRlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGNvbXByZXNzZWRSZWZyZXNoU3RhdGUgIT09IG51bGxcbiAgICApIHtcbiAgICAgIC8vIFNpbmNlIHRoaXMgcGFydCBvZiB0aGUgdHJlZSB3YXMgcGF0Y2hlZCB3aXRoIG5ldyBkYXRhLCBhbnkgcGFyZW50XG4gICAgICAvLyByZWZyZXNoIHN0YXRlcyBzaG91bGQgYmUgdXBkYXRlZCB0byByZWZsZWN0IHRoZSBuZXcgcmVuZGVyZWQgc2VhcmNoXG4gICAgICAvLyB2YWx1ZS4gKFRoZSByZWZyZXNoIHN0YXRlIGFjdHMgbGlrZSBhIFwiY29udGV4dCBwcm92aWRlclwiLikgQWxsIHBhZ2VzXG4gICAgICAvLyB3aXRoaW4gdGhlIHNhbWUgc2VydmVyIHJlc3BvbnNlIHNoYXJlIHRoZSBzYW1lIHJlbmRlcmVkU2VhcmNoIHZhbHVlLFxuICAgICAgLy8gYnV0IHRoZSBzYW1lIFJvdXRlVHJlZSBjb3VsZCBiZSBjb21wb3NlZCBmcm9tIG11bHRpcGxlIGRpZmZlcmVudFxuICAgICAgLy8gcm91dGVzLCBhbmQgbXVsdGlwbGUgcmVzcG9uc2VzLlxuICAgICAgY2xvbmVkVHJlZVsyXSA9IFtjb21wcmVzc2VkUmVmcmVzaFN0YXRlWzBdLCByZW5kZXJlZFNlYXJjaF1cbiAgICB9XG4gIH1cbiAgaWYgKDMgaW4gYmFzZVJvdXRlclN0YXRlKSB7XG4gICAgY2xvbmVkVHJlZVszXSA9IGJhc2VSb3V0ZXJTdGF0ZVszXVxuICB9XG4gIGlmICg0IGluIGJhc2VSb3V0ZXJTdGF0ZSkge1xuICAgIGNsb25lZFRyZWVbNF0gPSBiYXNlUm91dGVyU3RhdGVbNF1cbiAgfVxuXG4gIC8vIENsb25lIHRoZSBDYWNoZU5vZGVTZWVkRGF0YSB0cmVlLlxuICBjb25zdCBpc0VtcHR5U2VlZERhdGFQYXJ0aWFsID0gdHJ1ZVxuICBjbG9uZWRTZWVkRGF0YSA9IFtcbiAgICBudWxsLFxuICAgIG5ld1NlZWREYXRhQ2hpbGRyZW4sXG4gICAgbnVsbCxcbiAgICBpc0VtcHR5U2VlZERhdGFQYXJ0aWFsLFxuICAgIG51bGwsXG4gIF1cblxuICByZXR1cm4ge1xuICAgIHRyZWU6IGNsb25lZFRyZWUsXG4gICAgZGF0YTogY2xvbmVkU2VlZERhdGEsXG4gIH1cbn1cblxuLyoqXG4gKiBJbnN0YW50IE5hdmlnYXRpb24gVGVzdGluZyBBUEk6IGVuc3VyZXMgYSBwcmVmZXRjaCB0YXNrIGhhcyBiZWVuIGluaXRpYXRlZFxuICogYW5kIGNvbXBsZXRlZCBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIHRoZSBuYXZpZ2F0aW9uLiBUaGlzIGd1YXJhbnRlZXMgdGhhdFxuICogc2VnbWVudCBkYXRhIHJlcXVlc3RzIGFyZSBhdCBsZWFzdCBwZW5kaW5nLCBldmVuIGZvciByb3V0ZXMgd2hvc2Ugcm91dGVcbiAqIHRyZWUgaXMgYWxyZWFkeSBjYWNoZWQuXG4gKlxuICogQWZ0ZXIgdGhlIHByZWZldGNoIGNvbXBsZXRlcywgZGVsZWdhdGVzIHRvIHRoZSBub3JtYWwgbmF2aWdhdGlvbiBmbG93LlxuICovXG5hc3luYyBmdW5jdGlvbiBlbnN1cmVQcmVmZXRjaFRoZW5OYXZpZ2F0ZShcbiAgc3RhdGU6IEFwcFJvdXRlclN0YXRlLFxuICB1cmw6IFVSTCxcbiAgY3VycmVudFVybDogVVJMLFxuICBjdXJyZW50UmVuZGVyZWRTZWFyY2g6IHN0cmluZyxcbiAgY3VycmVudENhY2hlTm9kZTogQ2FjaGVOb2RlIHwgbnVsbCxcbiAgY3VycmVudEZsaWdodFJvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgbmV4dFVybDogc3RyaW5nIHwgbnVsbCxcbiAgZnJlc2huZXNzUG9saWN5OiBGcmVzaG5lc3NQb2xpY3ksXG4gIHNjcm9sbEJlaGF2aW9yOiBTY3JvbGxCZWhhdmlvcixcbiAgbmF2aWdhdGVUeXBlOiAncHVzaCcgfCAncmVwbGFjZSdcbik6IFByb21pc2U8QXBwUm91dGVyU3RhdGU+IHtcbiAgY29uc3QgbGluayA9IGdldExpbmtGb3JDdXJyZW50TmF2aWdhdGlvbigpXG4gIGNvbnN0IGZldGNoU3RyYXRlZ3kgPSBsaW5rICE9PSBudWxsID8gbGluay5mZXRjaFN0cmF0ZWd5IDogRmV0Y2hTdHJhdGVneS5QUFJcblxuICAvLyBUcmFuc2l0aW9uIHRoZSBjb29raWUgdG8gY2FwdHVyZWQtU1BBIGltbWVkaWF0ZWx5LCBiZWZvcmUgd2FpdGluZ1xuICAvLyBmb3IgdGhlIHByZWZldGNoLiBUaGlzIGVuc3VyZXMgdGhlIGRldnRvb2xzIHBhbmVsIGNhbiB1cGRhdGUgaXRzIFVJXG4gIC8vIHJpZ2h0IGF3YXksIGV2ZW4gaWYgdGhlIHByZWZldGNoIHRha2VzIHRpbWUgKGUuZy4gZGV2IGNvbXBpbGF0aW9uKS5cbiAgLy8gVGhlIFwidG9cIiB0cmVlIHN0YXJ0cyBhcyBudWxsIGFuZCBpcyBmaWxsZWQgaW4gYWZ0ZXIgdGhlIHByZWZldGNoXG4gIC8vIHJlc29sdmVzIGFuZCB0aGUgbmF2aWdhdGlvbiBwcm9kdWNlcyBhIG5ldyByb3V0ZXIgc3RhdGUuXG4gIGNvbnN0IHsgdHJhbnNpdGlvblRvQ2FwdHVyZWRTUEEsIHVwZGF0ZUNhcHR1cmVkU1BBVG9UcmVlIH0gPVxuICAgIHJlcXVpcmUoJy4vbmF2aWdhdGlvbi10ZXN0aW5nLWxvY2snKSBhcyB0eXBlb2YgaW1wb3J0KCcuL25hdmlnYXRpb24tdGVzdGluZy1sb2NrJylcbiAgdHJhbnNpdGlvblRvQ2FwdHVyZWRTUEEoY3VycmVudEZsaWdodFJvdXRlclN0YXRlLCBudWxsKVxuXG4gIGNvbnN0IGNhY2hlS2V5ID0gY3JlYXRlQ2FjaGVLZXkodXJsLmhyZWYsIG5leHRVcmwpXG5cbiAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICBzY2hlZHVsZVByZWZldGNoVGFzayhcbiAgICAgIGNhY2hlS2V5LFxuICAgICAgY3VycmVudEZsaWdodFJvdXRlclN0YXRlLFxuICAgICAgZmV0Y2hTdHJhdGVneSxcbiAgICAgIFByZWZldGNoUHJpb3JpdHkuRGVmYXVsdCxcbiAgICAgIG51bGwsIC8vIG9uSW52YWxpZGF0ZVxuICAgICAgcmVzb2x2ZSAvLyBfb25Db21wbGV0ZSBjYWxsYmFja1xuICAgIClcbiAgfSlcblxuICAvLyBQcmVmZXRjaCBpcyBjb21wbGV0ZS4gUHJvY2VlZCB3aXRoIHRoZSBub3JtYWwgbmF2aWdhdGlvbiBmbG93LCB3aGljaFxuICAvLyB3aWxsIG5vdyBmaW5kIHRoZSByb3V0ZSBpbiB0aGUgY2FjaGUuXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG5hdmlnYXRlSW1wbChcbiAgICBzdGF0ZSxcbiAgICB1cmwsXG4gICAgY3VycmVudFVybCxcbiAgICBjdXJyZW50UmVuZGVyZWRTZWFyY2gsXG4gICAgY3VycmVudENhY2hlTm9kZSxcbiAgICBjdXJyZW50RmxpZ2h0Um91dGVyU3RhdGUsXG4gICAgbmV4dFVybCxcbiAgICBmcmVzaG5lc3NQb2xpY3ksXG4gICAgc2Nyb2xsQmVoYXZpb3IsXG4gICAgbmF2aWdhdGVUeXBlXG4gIClcblxuICAvLyBVcGRhdGUgdGhlIGNvb2tpZSB3aXRoIHRoZSByZXNvbHZlZCBcInRvXCIgdHJlZSBzbyB0aGUgZGV2dG9vbHNcbiAgLy8gcGFuZWwgY2FuIGRpc3BsYXkgYm90aCByb3V0ZXMgaW1tZWRpYXRlbHkuXG4gIHVwZGF0ZUNhcHR1cmVkU1BBVG9UcmVlKGN1cnJlbnRGbGlnaHRSb3V0ZXJTdGF0ZSwgcmVzdWx0LnRyZWUpXG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuIl0sIm5hbWVzIjpbImNvbXBsZXRlSGFyZE5hdmlnYXRpb24iLCJjb21wbGV0ZVNvZnROYXZpZ2F0aW9uIiwiY29tcGxldGVUcmF2ZXJzZU5hdmlnYXRpb24iLCJjb252ZXJ0U2VydmVyUGF0Y2hUb0Z1bGxUcmVlIiwibmF2aWdhdGUiLCJuYXZpZ2F0ZVRvS25vd25Sb3V0ZSIsInN0YXRlIiwidXJsIiwiY3VycmVudFVybCIsImN1cnJlbnRSZW5kZXJlZFNlYXJjaCIsImN1cnJlbnRDYWNoZU5vZGUiLCJjdXJyZW50RmxpZ2h0Um91dGVyU3RhdGUiLCJuZXh0VXJsIiwiZnJlc2huZXNzUG9saWN5Iiwic2Nyb2xsQmVoYXZpb3IiLCJuYXZpZ2F0ZVR5cGUiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX0VYUE9TRV9URVNUSU5HX0FQSSIsImlzTmF2aWdhdGlvbkxvY2tlZCIsInJlcXVpcmUiLCJlbnN1cmVQcmVmZXRjaFRoZW5OYXZpZ2F0ZSIsIm5hdmlnYXRlSW1wbCIsIm5vdyIsIkRhdGUiLCJocmVmIiwiY2FjaGVLZXkiLCJjcmVhdGVDYWNoZUtleSIsInJvdXRlIiwicmVhZFJvdXRlQ2FjaGVFbnRyeSIsInN0YXR1cyIsIkVudHJ5U3RhdHVzIiwiRnVsZmlsbGVkIiwibmF2aWdhdGVVc2luZ1ByZWZldGNoZWRSb3V0ZVRyZWUiLCJfX05FWFRfT1BUSU1JU1RJQ19ST1VUSU5HIiwiUmVqZWN0ZWQiLCJvcHRpbWlzdGljUm91dGUiLCJkZXByZWNhdGVkX3JlcXVlc3RPcHRpbWlzdGljUm91dGVDYWNoZUVudHJ5IiwibmF2aWdhdGVUb1Vua25vd25Sb3V0ZSIsImNhdGNoIiwiY2Fub25pY2FsVXJsIiwibmF2aWdhdGlvblNlZWQiLCJkZWJ1Z0luZm8iLCJyb3V0ZUNhY2hlRW50cnkiLCJhY2N1bXVsYXRpb24iLCJzZXBhcmF0ZVJlZnJlc2hVcmxzIiwic2Nyb2xsUmVmIiwiaXNTYW1lUGFnZU5hdmlnYXRpb24iLCJ0YXNrIiwic3RhcnRQUFJOYXZpZ2F0aW9uIiwicm91dGVUcmVlIiwibWV0YWRhdGFWYXJ5UGF0aCIsImRhdGEiLCJoZWFkIiwiZHluYW1pY1N0YWxlQXQiLCJGcmVzaG5lc3NQb2xpY3kiLCJHZXN0dXJlIiwic3Bhd25EeW5hbWljUmVxdWVzdHMiLCJub2RlIiwicmVuZGVyZWRTZWFyY2giLCJ0cmVlIiwiaGFzaCIsInByZWZldGNoU2VlZCIsIm1ldGFkYXRhIiwidmFyeVBhdGgiLCJjb21wdXRlRHluYW1pY1N0YWxlQXQiLCJVbmtub3duRHluYW1pY1N0YWxlVGltZSIsIkR5bmFtaWNSZXF1ZXN0VHJlZUZvckVudGlyZVJvdXRlIiwiZHluYW1pY1JlcXVlc3RUcmVlIiwiRGVmYXVsdCIsIkhpc3RvcnlUcmF2ZXJzYWwiLCJIeWRyYXRpb24iLCJSZWZyZXNoQWxsIiwiSE1SUmVmcmVzaCIsInByb21pc2VGb3JEeW5hbWljU2VydmVyUmVzcG9uc2UiLCJmZXRjaFNlcnZlclJlc3BvbnNlIiwiZmxpZ2h0Um91dGVyU3RhdGUiLCJyZXN1bHQiLCJyZWRpcmVjdFVybCIsIlVSTCIsImxvY2F0aW9uIiwib3JpZ2luIiwiZmxpZ2h0RGF0YSIsImNvdWxkQmVJbnRlcmNlcHRlZCIsInN1cHBvcnRzUGVyU2VnbWVudFByZWZldGNoaW5nIiwiZHluYW1pY1N0YWxlVGltZSIsInN0YXRpY1N0YWdlRGF0YSIsInJ1bnRpbWVQcmVmZXRjaFN0cmVhbSIsInJlc3BvbnNlSGVhZGVycyIsImRpc2NvdmVyS25vd25Sb3V0ZSIsInBhdGhuYW1lIiwiY3JlYXRlSHJlZkZyb21VcmwiLCJyZXNwb25zZSIsInN0YXRpY1N0YWdlUmVzcG9uc2UiLCJpc1Jlc3BvbnNlUGFydGlhbCIsImdldFN0YWxlQXQiLCJzIiwidGhlbiIsInN0YWxlQXQiLCJidWlsZElkIiwiZ2V0IiwiTkVYVF9OQVZfREVQTE9ZTUVOVF9JRF9IRUFERVIiLCJiIiwid3JpdGVTdGF0aWNTdGFnZVJlc3BvbnNlSW50b0NhY2hlIiwiZiIsImgiLCJwcm9jZXNzUnVudGltZVByZWZldGNoU3RyZWFtIiwicHJvY2Vzc2VkIiwid3JpdGVEeW5hbWljUmVuZGVyUmVzcG9uc2VJbnRvQ2FjaGUiLCJGZXRjaFN0cmF0ZWd5IiwiUFBSUnVudGltZSIsImZsaWdodERhdGFzIiwiaGVhZFZhcnlQYXJhbXMiLCJpc0phdmFTY3JpcHRVUkxTdHJpbmciLCJjb25zb2xlIiwiZXJyb3IiLCJuZXdTdGF0ZSIsInB1c2hSZWYiLCJwZW5kaW5nUHVzaCIsIm1wYU5hdmlnYXRpb24iLCJwcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZSIsImZvY3VzQW5kU2Nyb2xsUmVmIiwiY2FjaGUiLCJwcmV2aW91c05leHRVcmwiLCJvbGRTdGF0ZSIsInJlZmVycmluZ05leHRVcmwiLCJjb2xsZWN0ZWREZWJ1Z0luZm8iLCJjaGFuZ2VkUGF0aCIsImNvbXB1dGVDaGFuZ2VkUGF0aCIsIm5leHRVcmxGb3JOZXdSb3V0ZSIsIm9sZFVybCIsIm9ubHlIYXNoQ2hhbmdlIiwic2VhcmNoIiwiYWN0aXZlU2Nyb2xsUmVmIiwiZm9yY2VTY3JvbGwiLCJTY3JvbGxCZWhhdmlvciIsIk5vU2Nyb2xsIiwiY3VycmVudCIsIm9sZFNjcm9sbFJlZiIsImhhc2hGcmFnbWVudCIsImRlY29kZVVSSUNvbXBvbmVudCIsInNsaWNlIiwiY3VycmVudFRyZWUiLCJkeW5hbWljU3RhbGVUaW1lU2Vjb25kcyIsImJhc2VUcmVlIiwiYmFzZURhdGEiLCJzZWdtZW50UGF0aCIsInRyZWVQYXRjaCIsInNlZWREYXRhIiwiZGF0YVBhdGNoIiwiaGVhZFBhdGNoIiwiY29udmVydFNlcnZlclBhdGNoVG9GdWxsVHJlZUltcGwiLCJmaW5hbEZsaWdodFJvdXRlclN0YXRlIiwiYWNjIiwiY29udmVydFJvb3RGbGlnaHRSb3V0ZXJTdGF0ZVRvUm91dGVUcmVlIiwiYmFzZVJvdXRlclN0YXRlIiwiaW5kZXgiLCJsZW5ndGgiLCJ1cGRhdGVkUGFyYWxsZWxSb3V0ZUtleSIsImJhc2VUcmVlQ2hpbGRyZW4iLCJiYXNlU2VlZERhdGFDaGlsZHJlbiIsIm5ld1RyZWVDaGlsZHJlbiIsIm5ld1NlZWREYXRhQ2hpbGRyZW4iLCJwYXJhbGxlbFJvdXRlS2V5IiwiY2hpbGRCYXNlUm91dGVyU3RhdGUiLCJjaGlsZEJhc2VTZWVkRGF0YSIsImNsb25lZFRyZWUiLCJjbG9uZWRTZWVkRGF0YSIsImNvbXByZXNzZWRSZWZyZXNoU3RhdGUiLCJ1bmRlZmluZWQiLCJpc0VtcHR5U2VlZERhdGFQYXJ0aWFsIiwibGluayIsImdldExpbmtGb3JDdXJyZW50TmF2aWdhdGlvbiIsImZldGNoU3RyYXRlZ3kiLCJQUFIiLCJ0cmFuc2l0aW9uVG9DYXB0dXJlZFNQQSIsInVwZGF0ZUNhcHR1cmVkU1BBVG9UcmVlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJzY2hlZHVsZVByZWZldGNoVGFzayIsIlByZWZldGNoUHJpb3JpdHkiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/segment-cache/navigation.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/segment-cache/optimistic-routes.js":
|
||
/*!*************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/segment-cache/optimistic-routes.js ***!
|
||
\*************************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * Optimistic Routing (Known Routes)\n *\n * This module enables the client to predict route structure for URLs that\n * haven't been prefetched yet, based on previously learned route patterns.\n * When successful, this allows skipping the route tree prefetch request\n * entirely.\n *\n * The core idea is that many URLs map to the same route structure. For example,\n * /blog/post-1 and /blog/post-2 both resolve to /blog/[slug]. Once we've\n * prefetched one, we can predict the structure of the other.\n *\n * However, we can't always make this prediction. Static siblings (like\n * /blog/featured alongside /blog/[slug]) have different route structures.\n * When we learn a dynamic route, we also learn its static siblings so we\n * know when NOT to apply the prediction.\n *\n * Main entry points:\n *\n * 1. discoverKnownRoute: Called after receiving a route tree from the server.\n * Traverses the route tree, compares URL parts to segments, and populates\n * the known route tree if they match. Routes are always inserted into the\n * cache.\n *\n * 2. matchKnownRoute: Called when looking up a route with no cache entry.\n * Matches the candidate URL against learned patterns. Returns a synthetic\n * cache entry if successful, or null to fall back to server resolution.\n *\n * Rewrite detection happens during traversal: if a URL path part doesn't match\n * the corresponding route segment, we stop populating the known route tree\n * (since the mapping is incorrect) but still insert the route into the cache.\n *\n * The known route tree is append-only with no eviction. Route patterns are\n * derived from the filesystem, so they don't become stale within a session.\n * Cache invalidation on deploy clears everything anyway.\n *\n * Current limitations (deopt to server resolution):\n * - Rewrites: Detected during traversal (tree not populated, but route cached)\n * - Intercepted routes: The route tree varies by referrer (Next-Url header),\n * so we can't predict the correct structure from the URL alone. Patterns are\n * still stored during discovery (so the trie stays populated for non-\n * intercepted siblings), but matching bails out when the pattern is marked\n * as interceptable.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n discoverKnownRoute: function() {\n return discoverKnownRoute;\n },\n matchKnownRoute: function() {\n return matchKnownRoute;\n },\n resetKnownRoutes: function() {\n return resetKnownRoutes;\n }\n});\nconst _cache = __webpack_require__(/*! ./cache */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/cache.js\");\nconst _routeparams = __webpack_require__(/*! ../../route-params */ \"(ssr)/./node_modules/next/dist/client/route-params.js\");\nconst _varypath = __webpack_require__(/*! ./vary-path */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/vary-path.js\");\nfunction createEmptyPart() {\n return {\n staticChildren: null,\n dynamicChild: null,\n dynamicChildParamName: null,\n dynamicChildParamType: null,\n pattern: null\n };\n}\n// The root of the known route tree.\nlet knownRouteTreeRoot = createEmptyPart();\nfunction discoverKnownRoute(now, pathname, nextUrl, pendingEntry, routeTree, metadataVaryPath, couldBeIntercepted, canonicalUrl, supportsPerSegmentPrefetching, hasDynamicRewrite) {\n const tree = routeTree;\n const pathnameParts = pathname.split('/').filter((p)=>p !== '');\n const firstPart = pathnameParts.length > 0 ? pathnameParts[0] : null;\n const remainingParts = pathnameParts.length > 0 ? pathnameParts.slice(1) : [];\n if (pendingEntry !== null) {\n // Fulfill the pending entry first\n const fulfilledEntry = (0, _cache.fulfillRouteCacheEntry)(now, pendingEntry, tree, metadataVaryPath, couldBeIntercepted, canonicalUrl, supportsPerSegmentPrefetching);\n if (hasDynamicRewrite) {\n fulfilledEntry.hasDynamicRewrite = true;\n }\n // Populate the known route tree (handles rewrite detection internally).\n // The entry is already in the cache; this just stores it as a pattern\n // if the URL matches the route structure.\n discoverKnownRoutePart(knownRouteTreeRoot, tree, firstPart, remainingParts, fulfilledEntry, now, pathname, nextUrl, tree, metadataVaryPath, couldBeIntercepted, canonicalUrl, supportsPerSegmentPrefetching, hasDynamicRewrite);\n return fulfilledEntry;\n }\n // No pending entry - discoverKnownRoutePart will create one and insert it\n // into the cache, or return an existing pattern if one exists.\n return discoverKnownRoutePart(knownRouteTreeRoot, tree, firstPart, remainingParts, null, now, pathname, nextUrl, tree, metadataVaryPath, couldBeIntercepted, canonicalUrl, supportsPerSegmentPrefetching, hasDynamicRewrite);\n}\n/**\n * Gets or creates the dynamic child node for a KnownRoutePart.\n * A node can have at most one dynamic child (you can't have both [slug] and\n * [id] at the same route level), so we either return existing or create new.\n */ function discoverDynamicChild(part, paramName, paramType) {\n if (part.dynamicChild !== null) {\n return part.dynamicChild;\n }\n const newChild = createEmptyPart();\n // Type assertion needed because we're converting from \"without\" to \"with\"\n // dynamic child variant.\n const mutablePart = part;\n mutablePart.dynamicChild = newChild;\n mutablePart.dynamicChildParamName = paramName;\n mutablePart.dynamicChildParamType = paramType;\n return newChild;\n}\n/**\n * Recursive workhorse for discoverKnownRoute.\n *\n * Walks the route tree and URL parts in parallel, building out the known\n * route tree as it goes. At each step:\n * 1. Determines if the current segment appears in the URL (dynamic/static)\n * 2. Validates URL matches route structure (detects rewrites)\n * 3. Creates/updates the corresponding KnownRoutePart node\n * 4. Records static siblings for future matching\n * 5. Recurses into child slots (parallel routes)\n *\n * If a URL/route mismatch is detected (rewrite), we stop building the known\n * route tree but still cache the route entry for direct lookup.\n */ function discoverKnownRoutePart(parentKnownRoutePart, routeTree, urlPart, remainingParts, existingEntry, now, pathname, nextUrl, fullTree, metadataVaryPath, couldBeIntercepted, canonicalUrl, supportsPerSegmentPrefetching, hasDynamicRewrite) {\n const segment = routeTree.segment;\n let segmentAppearsInURL;\n let paramName = null;\n let paramType = null;\n let staticSiblings = null;\n if (typeof segment === 'string') {\n segmentAppearsInURL = (0, _routeparams.doesStaticSegmentAppearInURL)(segment);\n } else {\n // Dynamic segment tuple: [paramName, paramCacheKey, paramType, staticSiblings]\n paramName = segment[0];\n paramType = segment[2];\n staticSiblings = segment[3];\n segmentAppearsInURL = true;\n }\n let knownRoutePart = parentKnownRoutePart;\n let nextUrlPart = urlPart;\n let nextRemainingParts = remainingParts;\n if (segmentAppearsInURL) {\n // Check for mismatch: if this is a static segment, the URL part must match\n if (paramName === null && urlPart !== segment) {\n // URL doesn't match route structure (likely a rewrite).\n // Don't populate the known route tree, just write the route into the\n // cache and return immediately.\n if (existingEntry !== null) {\n return existingEntry;\n }\n return (0, _cache.writeRouteIntoCache)(now, pathname, nextUrl, fullTree, metadataVaryPath, couldBeIntercepted, canonicalUrl, supportsPerSegmentPrefetching);\n }\n // URL matches route structure. Build the known route tree.\n if (paramName !== null && paramType !== null) {\n // Dynamic segment\n knownRoutePart = discoverDynamicChild(parentKnownRoutePart, paramName, paramType);\n // Record static siblings as placeholder parts.\n // IMPORTANT: We use the null vs Map distinction to track whether\n // siblings are known at this level:\n // - staticChildren: null = siblings unknown (can't safely match dynamic)\n // - staticChildren: Map = siblings known (even if empty)\n // This matters in dev mode where webpack may not know all siblings yet.\n if (staticSiblings !== null) {\n // Siblings are known - ensure we have a Map (even if empty)\n if (parentKnownRoutePart.staticChildren === null) {\n parentKnownRoutePart.staticChildren = new Map();\n }\n for (const sibling of staticSiblings){\n if (!parentKnownRoutePart.staticChildren.has(sibling)) {\n parentKnownRoutePart.staticChildren.set(sibling, createEmptyPart());\n }\n }\n }\n } else {\n // Static segment\n if (parentKnownRoutePart.staticChildren === null) {\n parentKnownRoutePart.staticChildren = new Map();\n }\n let existingChild = parentKnownRoutePart.staticChildren.get(urlPart);\n if (existingChild === undefined) {\n existingChild = createEmptyPart();\n parentKnownRoutePart.staticChildren.set(urlPart, existingChild);\n }\n knownRoutePart = existingChild;\n }\n // Advance to next URL part\n nextUrlPart = remainingParts.length > 0 ? remainingParts[0] : null;\n nextRemainingParts = remainingParts.length > 0 ? remainingParts.slice(1) : [];\n }\n // else: Transparent segment (route group, __PAGE__, etc.)\n // Stay at the same known route part, don't advance URL parts\n // Recurse into child routes. A route tree can have multiple parallel routes\n // (e.g., @modal alongside children). Each parallel route is a separate\n // branch, but they all share the same URL - we just need to traverse all\n // branches to build out the known route tree.\n const slots = routeTree.slots;\n let resultFromChildren = null;\n if (slots !== null) {\n for(const parallelRouteKey in slots){\n const childRouteTree = slots[parallelRouteKey];\n // Skip branches with refreshState set - these were reused from a\n // different route (e.g., a \"default\" parallel slot) and don't represent\n // the actual route structure for this URL.\n if (childRouteTree.refreshState !== null) {\n continue;\n }\n const result = discoverKnownRoutePart(knownRoutePart, childRouteTree, nextUrlPart, nextRemainingParts, existingEntry, now, pathname, nextUrl, fullTree, metadataVaryPath, couldBeIntercepted, canonicalUrl, supportsPerSegmentPrefetching, hasDynamicRewrite);\n // All parallel route branches share the same URL, so they should all\n // reach compatible leaf nodes. We capture any result.\n resultFromChildren = result;\n }\n if (resultFromChildren !== null) {\n return resultFromChildren;\n }\n // Defensive fallback: no children returned a result. This shouldn't happen\n // for valid route trees, but handle it gracefully.\n if (existingEntry !== null) {\n return existingEntry;\n }\n return (0, _cache.writeRouteIntoCache)(now, pathname, nextUrl, fullTree, metadataVaryPath, couldBeIntercepted, canonicalUrl, supportsPerSegmentPrefetching);\n }\n // Reached a page node. Create/get the route cache entry and store as a\n // pattern. First, check if there's already a pattern for this route.\n if (knownRoutePart.pattern !== null) {\n // If this route has a dynamic rewrite, mark the existing pattern.\n if (hasDynamicRewrite) {\n knownRoutePart.pattern.hasDynamicRewrite = true;\n }\n return knownRoutePart.pattern;\n }\n // Get or create the entry\n let entry;\n if (existingEntry !== null) {\n // Already have a fulfilled entry, use it directly. It's already in the\n // route cache map.\n entry = existingEntry;\n } else {\n // Create the entry and insert it into the route cache map.\n entry = (0, _cache.writeRouteIntoCache)(now, pathname, nextUrl, fullTree, metadataVaryPath, couldBeIntercepted, canonicalUrl, supportsPerSegmentPrefetching);\n }\n if (hasDynamicRewrite) {\n entry.hasDynamicRewrite = true;\n }\n // Store as pattern\n knownRoutePart.pattern = entry;\n return entry;\n}\nfunction matchKnownRoute(pathname, search) {\n const pathnameParts = pathname.split('/').filter((p)=>p !== '');\n const resolvedParams = new Map();\n const match = matchKnownRoutePart(knownRouteTreeRoot, pathnameParts, 0, resolvedParams);\n if (match === null) {\n return null;\n }\n const matchedPart = match.part;\n const pattern = match.pattern;\n // If the pattern could be intercepted, we can't safely use it for prediction.\n // Interception routes resolve to different route trees depending on the\n // referrer (the Next-Url header), which means the same URL can map to\n // different page components depending on where the navigation originated.\n // Since the known route tree only stores a single pattern per URL shape, we\n // can't distinguish between the intercepted and non-intercepted cases, so we\n // bail out to server resolution.\n //\n // TODO: We could store interception behavior in the known route tree itself\n // (e.g., which segments use interception markers and what they resolve to).\n // With enough information embedded in the trie, we could match interception\n // routes entirely on the client without a server round-trip.\n if (pattern.couldBeIntercepted) {\n return null;\n }\n // \"Reify\" the pattern: clone the template tree with concrete param values.\n // This substitutes resolved params (e.g., slug: \"hello\") into dynamic\n // segments and recomputes vary paths for correct segment cache keying.\n const acc = {\n metadataVaryPath: null\n };\n const reifiedTree = reifyRouteTree(pattern.tree, resolvedParams, search, null, acc);\n // The metadata tree is a flat page node without the intermediate layout\n // structure. Clone it with the updated metadata vary path collected during\n // the main tree traversal.\n const metadataVaryPath = acc.metadataVaryPath;\n if (metadataVaryPath === null) {\n // This shouldn't be reachable for a valid route tree.\n return null;\n }\n const reifiedMetadata = (0, _cache.createMetadataRouteTree)(metadataVaryPath);\n // Create a synthetic (predicted) entry and store it as the new pattern.\n //\n // Why replace the pattern? We intentionally update the pattern with this\n // synthetic entry so that if our prediction was wrong (server returns a\n // different pathname due to dynamic rewrite), the entry gets marked with\n // hasDynamicRewrite. Future predictions for this route will see the flag\n // and bail out to server resolution instead of making the same mistake.\n const syntheticEntry = {\n canonicalUrl: pathname + search,\n status: _cache.EntryStatus.Fulfilled,\n blockedTasks: null,\n tree: reifiedTree,\n metadata: reifiedMetadata,\n couldBeIntercepted: pattern.couldBeIntercepted,\n supportsPerSegmentPrefetching: pattern.supportsPerSegmentPrefetching,\n hasDynamicRewrite: false,\n renderedSearch: search,\n ref: null,\n size: pattern.size,\n staleAt: pattern.staleAt,\n version: pattern.version\n };\n matchedPart.pattern = syntheticEntry;\n return syntheticEntry;\n}\n/**\n * Recursively matches a URL against the known route tree.\n *\n * Matching priority (most specific first):\n * 1. Static children - exact path segment match\n * 2. Dynamic child - [param], [...param], [[...param]]\n * 3. Direct pattern - when no more URL parts remain\n *\n * Collects resolved param values in resolvedParams as it traverses.\n * Returns null if no match found (caller should fall back to server).\n */ function matchKnownRoutePart(part, pathnameParts, partIndex, resolvedParams) {\n const urlPart = partIndex < pathnameParts.length ? pathnameParts[partIndex] : null;\n // If staticChildren is null, we don't know what static routes exist at this\n // level. This happens in webpack dev mode where routes are compiled\n // on-demand. We can't safely match a dynamicChild because the URL part might\n // be a static sibling we haven't discovered yet. Example: We know\n // /blog/[slug] exists, but haven't compiled /blog/featured. A request for\n // /blog/featured would incorrectly match /blog/[slug].\n if (part.staticChildren === null) {\n // The only safe match is a direct pattern when no URL parts remain.\n if (urlPart === null) {\n const pattern = part.pattern;\n if (pattern !== null && !pattern.hasDynamicRewrite) {\n return {\n part,\n pattern\n };\n }\n }\n return null;\n }\n // Static children take priority over dynamic. This ensures /blog/featured\n // matches its own route rather than /blog/[slug].\n if (urlPart !== null) {\n const staticChild = part.staticChildren.get(urlPart);\n if (staticChild !== undefined) {\n // Check if this is an \"unknown\" placeholder part. These are created when\n // we learn about static siblings (from the route tree's staticSiblings\n // field) but haven't prefetched them yet. We know the path exists but\n // don't know its structure, so we can't predict it.\n if (staticChild.pattern === null && staticChild.dynamicChild === null && staticChild.staticChildren === null) {\n // Bail out - server must resolve this route.\n return null;\n }\n const match = matchKnownRoutePart(staticChild, pathnameParts, partIndex + 1, resolvedParams);\n if (match !== null) {\n return match;\n }\n // Static child is a real node (not a placeholder) but its subtree\n // didn't match the remaining URL parts. This means the route exists\n // in the static subtree but hasn't been fully discovered yet. Do not\n // fall through to try the dynamic child — the static match is\n // authoritative. Bail out to server resolution.\n return null;\n }\n }\n // Try dynamic child\n if (part.dynamicChild !== null) {\n const dynamicPart = part.dynamicChild;\n const paramName = part.dynamicChildParamName;\n const paramType = part.dynamicChildParamType;\n const dynamicPattern = dynamicPart.pattern;\n switch(paramType){\n case 'c':\n // Required catch-all [...param]: consumes 1+ URL parts\n if (dynamicPattern !== null && !dynamicPattern.hasDynamicRewrite && urlPart !== null) {\n resolvedParams.set(paramName, pathnameParts.slice(partIndex));\n return {\n part: dynamicPart,\n pattern: dynamicPattern\n };\n }\n break;\n case 'oc':\n // Optional catch-all [[...param]]: consumes 0+ URL parts\n if (dynamicPattern !== null && !dynamicPattern.hasDynamicRewrite) {\n if (urlPart !== null) {\n resolvedParams.set(paramName, pathnameParts.slice(partIndex));\n return {\n part: dynamicPart,\n pattern: dynamicPattern\n };\n }\n // urlPart is null - can match with zero parts, but a direct pattern\n // (e.g., page.tsx alongside [[...param]]) takes precedence.\n if (part.pattern === null || part.pattern.hasDynamicRewrite) {\n resolvedParams.set(paramName, []);\n return {\n part: dynamicPart,\n pattern: dynamicPattern\n };\n }\n }\n break;\n case 'd':\n // Regular dynamic [param]: consumes exactly 1 URL part.\n // Unlike catch-all which terminates here, regular dynamic must\n // continue recursing to find the leaf pattern.\n if (urlPart !== null) {\n resolvedParams.set(paramName, urlPart);\n return matchKnownRoutePart(dynamicPart, pathnameParts, partIndex + 1, resolvedParams);\n }\n break;\n // Intercepted routes use relative path markers like (.), (..), (...)\n // Their behavior depends on navigation context (soft vs hard nav),\n // so we can't predict them client-side. Defer to server.\n case 'ci(..)(..)':\n case 'ci(.)':\n case 'ci(..)':\n case 'ci(...)':\n case 'di(..)(..)':\n case 'di(.)':\n case 'di(..)':\n case 'di(...)':\n return null;\n default:\n paramType;\n }\n }\n // No children matched. If we've consumed all URL parts, check for a direct\n // pattern at this node (the route terminates here).\n if (urlPart === null) {\n const pattern = part.pattern;\n if (pattern !== null && !pattern.hasDynamicRewrite) {\n return {\n part,\n pattern\n };\n }\n }\n return null;\n}\n/**\n * \"Reify\" means to make concrete - we take an abstract pattern (the template\n * route tree) and produce a concrete instance with actual param values.\n *\n * This function clones a RouteTree, substituting dynamic segment values from\n * resolvedParams and computing new vary paths. The vary path encodes param\n * values so segment cache entries can be correctly keyed.\n *\n * Example: Pattern for /blog/[slug] with resolvedParams { slug: \"hello\" }\n * produces a tree where segment [slug] has cacheKey \"hello\".\n */ function reifyRouteTree(pattern, resolvedParams, search, parentPartialVaryPath, acc) {\n const originalSegment = pattern.segment;\n let newSegment = originalSegment;\n let partialVaryPath;\n if (typeof originalSegment !== 'string') {\n // Dynamic segment: compute new cache key and append to partial vary path\n const paramName = originalSegment[0];\n const paramType = originalSegment[2];\n const staticSiblings = originalSegment[3];\n const newValue = resolvedParams.get(paramName);\n if (newValue !== undefined) {\n const newCacheKey = Array.isArray(newValue) ? newValue.join('/') : newValue;\n newSegment = [\n paramName,\n newCacheKey,\n paramType,\n staticSiblings\n ];\n partialVaryPath = (0, _varypath.appendLayoutVaryPath)(parentPartialVaryPath, newCacheKey, paramName);\n } else {\n // Param not found in resolvedParams - keep original and inherit partial\n // TODO: This should never happen. Bail out with null.\n partialVaryPath = parentPartialVaryPath;\n }\n } else {\n // Static segment: inherit partial vary path from parent\n partialVaryPath = parentPartialVaryPath;\n }\n // Recurse into children with the (possibly updated) partial vary path\n let newSlots = null;\n if (pattern.slots !== null) {\n newSlots = {};\n for(const key in pattern.slots){\n newSlots[key] = reifyRouteTree(pattern.slots[key], resolvedParams, search, partialVaryPath, acc);\n }\n }\n if (pattern.isPage) {\n // Page segment: finalize with search params\n const newVaryPath = (0, _varypath.finalizePageVaryPath)(pattern.requestKey, search, partialVaryPath);\n // Collect metadata vary path (first page wins, same as original algorithm)\n if (acc.metadataVaryPath === null) {\n acc.metadataVaryPath = (0, _varypath.finalizeMetadataVaryPath)(pattern.requestKey, search, partialVaryPath);\n }\n return {\n requestKey: pattern.requestKey,\n segment: newSegment,\n refreshState: pattern.refreshState,\n slots: newSlots,\n prefetchHints: pattern.prefetchHints,\n isPage: true,\n varyPath: newVaryPath\n };\n } else {\n // Layout segment: finalize without search params\n const newVaryPath = (0, _varypath.finalizeLayoutVaryPath)(pattern.requestKey, partialVaryPath);\n return {\n requestKey: pattern.requestKey,\n segment: newSegment,\n refreshState: pattern.refreshState,\n slots: newSlots,\n prefetchHints: pattern.prefetchHints,\n isPage: false,\n varyPath: newVaryPath\n };\n }\n}\nfunction resetKnownRoutes() {\n knownRouteTreeRoot = createEmptyPart();\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=optimistic-routes.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3NlZ21lbnQtY2FjaGUvb3B0aW1pc3RpYy1yb3V0ZXMuanMiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0EyQ0M7Ozs7Ozs7Ozs7OztJQStIZUEsa0JBQWtCO2VBQWxCQTs7SUE2VEFDLGVBQWU7ZUFBZkE7O0lBOFdBQyxnQkFBZ0I7ZUFBaEJBOzs7bUNBaHlCVDt5Q0FDc0M7c0NBU3RDO0FBNEVQLFNBQVNDO0lBQ1AsT0FBTztRQUNMQyxnQkFBZ0I7UUFDaEJDLGNBQWM7UUFDZEMsdUJBQXVCO1FBQ3ZCQyx1QkFBdUI7UUFDdkJDLFNBQVM7SUFDWDtBQUNGO0FBRUEsb0NBQW9DO0FBQ3BDLElBQUlDLHFCQUFxQ047QUFvQmxDLFNBQVNILG1CQUNkVSxHQUFXLEVBQ1hDLFFBQWdCLEVBQ2hCQyxPQUFzQixFQUN0QkMsWUFBMkMsRUFDM0NDLFNBQW9CLEVBQ3BCQyxnQkFBOEIsRUFDOUJDLGtCQUEyQixFQUMzQkMsWUFBb0IsRUFDcEJDLDZCQUFzQyxFQUN0Q0MsaUJBQTBCO0lBRTFCLE1BQU1DLE9BQU9OO0lBRWIsTUFBTU8sZ0JBQWdCVixTQUFTVyxLQUFLLENBQUMsS0FBS0MsTUFBTSxDQUFDLENBQUNDLElBQU1BLE1BQU07SUFDOUQsTUFBTUMsWUFBWUosY0FBY0ssTUFBTSxHQUFHLElBQUlMLGFBQWEsQ0FBQyxFQUFFLEdBQUc7SUFDaEUsTUFBTU0saUJBQWlCTixjQUFjSyxNQUFNLEdBQUcsSUFBSUwsY0FBY08sS0FBSyxDQUFDLEtBQUssRUFBRTtJQUU3RSxJQUFJZixpQkFBaUIsTUFBTTtRQUN6QixrQ0FBa0M7UUFDbEMsTUFBTWdCLGlCQUFpQkMsQ0FBQUEsR0FBQUEsT0FBQUEsc0JBQUFBLEVBQ3JCcEIsS0FDQUcsY0FDQU8sTUFDQUwsa0JBQ0FDLG9CQUNBQyxjQUNBQztRQUVGLElBQUlDLG1CQUFtQjtZQUNyQlUsZUFBZVYsaUJBQWlCLEdBQUc7UUFDckM7UUFDQSx3RUFBd0U7UUFDeEUsc0VBQXNFO1FBQ3RFLDBDQUEwQztRQUMxQ1ksdUJBQ0V0QixvQkFDQVcsTUFDQUssV0FDQUUsZ0JBQ0FFLGdCQUNBbkIsS0FDQUMsVUFDQUMsU0FDQVEsTUFDQUwsa0JBQ0FDLG9CQUNBQyxjQUNBQywrQkFDQUM7UUFFRixPQUFPVTtJQUNUO0lBRUEsMEVBQTBFO0lBQzFFLCtEQUErRDtJQUMvRCxPQUFPRSx1QkFDTHRCLG9CQUNBVyxNQUNBSyxXQUNBRSxnQkFDQSxNQUNBakIsS0FDQUMsVUFDQUMsU0FDQVEsTUFDQUwsa0JBQ0FDLG9CQUNBQyxjQUNBQywrQkFDQUM7QUFFSjtBQUVBOzs7O0NBSUMsR0FDRCxTQUFTYSxxQkFDUEMsSUFBb0IsRUFDcEJDLFNBQWlCLEVBQ2pCQyxTQUFpQztJQUVqQyxJQUFJRixLQUFLNUIsWUFBWSxLQUFLLE1BQU07UUFDOUIsT0FBTzRCLEtBQUs1QixZQUFZO0lBQzFCO0lBQ0EsTUFBTStCLFdBQVdqQztJQUNqQiwwRUFBMEU7SUFDMUUseUJBQXlCO0lBQ3pCLE1BQU1rQyxjQUFjSjtJQUNwQkksWUFBWWhDLFlBQVksR0FBRytCO0lBQzNCQyxZQUFZL0IscUJBQXFCLEdBQUc0QjtJQUNwQ0csWUFBWTlCLHFCQUFxQixHQUFHNEI7SUFDcEMsT0FBT0M7QUFDVDtBQUVBOzs7Ozs7Ozs7Ozs7O0NBYUMsR0FDRCxTQUFTTCx1QkFDUE8sb0JBQW9DLEVBQ3BDeEIsU0FBb0IsRUFDcEJ5QixPQUFzQixFQUN0QlosY0FBd0IsRUFDeEJhLGFBQThDLEVBQzlDLEdBQ1csRUFDWDdCLFFBQWdCLEVBQ2hCQyxPQUFzQixFQUN0QjZCLFFBQW1CLEVBQ25CMUIsZ0JBQThCLEVBQzlCQyxnQkFOb0UsRUFNekMsRUFDM0JDLFlBQW9CLEVBQ3BCQyw2QkFBc0MsRUFDdENDLGlCQUEwQjtJQUUxQixNQUFNdUIsVUFBVTVCLFVBQVU0QixPQUFPO0lBRWpDLElBQUlDO0lBQ0osSUFBSVQsWUFBMkI7SUFDL0IsSUFBSUMsWUFBMkM7SUFDL0MsSUFBSVMsaUJBQTJDO0lBRS9DLElBQUksT0FBT0YsWUFBWSxVQUFVO1FBQy9CQyxzQkFBc0JFLENBQUFBLEdBQUFBLGFBQUFBLDRCQUFBQSxFQUE2Qkg7SUFDckQsT0FBTztRQUNMLCtFQUErRTtRQUMvRVIsWUFBWVEsT0FBTyxDQUFDLEVBQUU7UUFDdEJQLFlBQVlPLE9BQU8sQ0FBQyxFQUFFO1FBQ3RCRSxpQkFBaUJGLE9BQU8sQ0FBQyxFQUFFO1FBQzNCQyxzQkFBc0I7SUFDeEI7SUFFQSxJQUFJRyxpQkFBaUNSO0lBQ3JDLElBQUlTLGNBQTZCUjtJQUNqQyxJQUFJUyxxQkFBK0JyQjtJQUVuQyxJQUFJZ0IscUJBQXFCO1FBQ3ZCLDJFQUEyRTtRQUMzRSxJQUFJVCxjQUFjLFFBQVFLLFlBQVlHLFNBQVM7WUFDN0Msd0RBQXdEO1lBQ3hELHFFQUFxRTtZQUNyRSxnQ0FBZ0M7WUFDaEMsSUFBSUYsa0JBQWtCLE1BQU07Z0JBQzFCLE9BQU9BO1lBQ1Q7WUFDQSxPQUFPUyxDQUFBQSxHQUFBQSxPQUFBQSxtQkFBQUEsRUFDTHZDLEtBQ0FDLFVBQ0FDLFNBQ0E2QixVQUNBMUIsa0JBQ0FDLG9CQUNBQyxjQUNBQztRQUVKO1FBRUEsMkRBQTJEO1FBQzNELElBQUlnQixjQUFjLFFBQVFDLGNBQWMsTUFBTTtZQUM1QyxrQkFBa0I7WUFDbEJXLGlCQUFpQmQscUJBQ2ZNLHNCQUNBSixXQUNBQztZQUdGLCtDQUErQztZQUMvQyxpRUFBaUU7WUFDakUsb0NBQW9DO1lBQ3BDLHlFQUF5RTtZQUN6RSx5REFBeUQ7WUFDekQsd0VBQXdFO1lBQ3hFLElBQUlTLG1CQUFtQixNQUFNO2dCQUMzQiw0REFBNEQ7Z0JBQzVELElBQUlOLHFCQUFxQmxDLGNBQWMsS0FBSyxNQUFNO29CQUNoRGtDLHFCQUFxQmxDLGNBQWMsR0FBRyxJQUFJOEM7Z0JBQzVDO2dCQUNBLEtBQUssTUFBTUMsV0FBV1AsZUFBZ0I7b0JBQ3BDLElBQUksQ0FBQ04scUJBQXFCbEMsY0FBYyxDQUFDZ0QsR0FBRyxDQUFDRCxVQUFVO3dCQUNyRGIscUJBQXFCbEMsY0FBYyxDQUFDaUQsR0FBRyxDQUFDRixTQUFTaEQ7b0JBQ25EO2dCQUNGO1lBQ0Y7UUFDRixPQUFPO1lBQ0wsaUJBQWlCO1lBQ2pCLElBQUltQyxxQkFBcUJsQyxjQUFjLEtBQUssTUFBTTtnQkFDaERrQyxxQkFBcUJsQyxjQUFjLEdBQUcsSUFBSThDO1lBQzVDO1lBQ0EsSUFBSUksZ0JBQWdCaEIscUJBQXFCbEMsY0FBYyxDQUFDbUQsR0FBRyxDQUFDaEI7WUFDNUQsSUFBSWUsa0JBQWtCRSxXQUFXO2dCQUMvQkYsZ0JBQWdCbkQ7Z0JBQ2hCbUMscUJBQXFCbEMsY0FBYyxDQUFDaUQsR0FBRyxDQUFDZCxTQUFVZTtZQUNwRDtZQUNBUixpQkFBaUJRO1FBQ25CO1FBRUEsMkJBQTJCO1FBQzNCUCxjQUFjcEIsZUFBZUQsTUFBTSxHQUFHLElBQUlDLGNBQWMsQ0FBQyxFQUFFLEdBQUc7UUFDOURxQixxQkFDRXJCLGVBQWVELE1BQU0sR0FBRyxJQUFJQyxlQUFlQyxLQUFLLENBQUMsS0FBSyxFQUFFO0lBQzVEO0lBQ0EsMERBQTBEO0lBQzFELDZEQUE2RDtJQUU3RCw0RUFBNEU7SUFDNUUsdUVBQXVFO0lBQ3ZFLHlFQUF5RTtJQUN6RSw4Q0FBOEM7SUFDOUMsTUFBTTZCLFFBQVEzQyxVQUFVMkMsS0FBSztJQUM3QixJQUFJQyxxQkFBc0Q7SUFDMUQsSUFBSUQsVUFBVSxNQUFNO1FBQ2xCLElBQUssTUFBTUUsb0JBQW9CRixNQUFPO1lBQ3BDLE1BQU1HLGlCQUFpQkgsS0FBSyxDQUFDRSxpQkFBaUI7WUFDOUMsaUVBQWlFO1lBQ2pFLHdFQUF3RTtZQUN4RSwyQ0FBMkM7WUFDM0MsSUFBSUMsZUFBZUMsWUFBWSxLQUFLLE1BQU07Z0JBQ3hDO1lBQ0Y7WUFDQSxNQUFNQyxTQUFTL0IsdUJBQ2JlLGdCQUNBYyxnQkFDQWIsYUFDQUMsb0JBQ0FSLGVBQ0E5QixLQUNBQyxVQUNBQyxTQUNBNkIsVUFDQTFCLGtCQUNBQyxvQkFDQUMsY0FDQUMsK0JBQ0FDO1lBRUYscUVBQXFFO1lBQ3JFLHNEQUFzRDtZQUN0RHVDLHFCQUFxQkk7UUFDdkI7UUFDQSxJQUFJSix1QkFBdUIsTUFBTTtZQUMvQixPQUFPQTtRQUNUO1FBQ0EsMkVBQTJFO1FBQzNFLG1EQUFtRDtRQUNuRCxJQUFJbEIsa0JBQWtCLE1BQU07WUFDMUIsT0FBT0E7UUFDVDtRQUNBLE9BQU9TLENBQUFBLEdBQUFBLE9BQUFBLG1CQUFBQSxFQUNMdkMsS0FDQUMsVUFDQUMsU0FDQTZCLFVBQ0ExQixrQkFDQUMsb0JBQ0FDLGNBQ0FDO0lBRUo7SUFFQSx1RUFBdUU7SUFDdkUscUVBQXFFO0lBQ3JFLElBQUk0QixlQUFldEMsT0FBTyxLQUFLLE1BQU07UUFDbkMsa0VBQWtFO1FBQ2xFLElBQUlXLG1CQUFtQjtZQUNyQjJCLGVBQWV0QyxPQUFPLENBQUNXLGlCQUFpQixHQUFHO1FBQzdDO1FBQ0EsT0FBTzJCLGVBQWV0QyxPQUFPO0lBQy9CO0lBRUEsMEJBQTBCO0lBQzFCLElBQUl1RDtJQUNKLElBQUl2QixrQkFBa0IsTUFBTTtRQUMxQix1RUFBdUU7UUFDdkUsbUJBQW1CO1FBQ25CdUIsUUFBUXZCO0lBQ1YsT0FBTztRQUNMLDJEQUEyRDtRQUMzRHVCLFFBQVFkLENBQUFBLEdBQUFBLE9BQUFBLG1CQUFBQSxFQUNOdkMsS0FDQUMsVUFDQUMsU0FDQTZCLFVBQ0ExQixrQkFDQUMsb0JBQ0FDLGNBQ0FDO0lBRUo7SUFFQSxJQUFJQyxtQkFBbUI7UUFDckI0QyxNQUFNNUMsaUJBQWlCLEdBQUc7SUFDNUI7SUFFQSxtQkFBbUI7SUFDbkIyQixlQUFldEMsT0FBTyxHQUFHdUQ7SUFDekIsT0FBT0E7QUFDVDtBQVFPLFNBQVM5RCxnQkFDZFUsUUFBZ0IsRUFDaEJxRCxNQUF3QjtJQUV4QixNQUFNM0MsZ0JBQWdCVixTQUFTVyxLQUFLLENBQUMsS0FBS0MsTUFBTSxDQUFDLENBQUNDLElBQU1BLE1BQU07SUFDOUQsTUFBTXlDLGlCQUFpQyxJQUFJZjtJQUMzQyxNQUFNZ0IsUUFBUUMsb0JBQ1oxRCxvQkFDQVksZUFDQSxHQUNBNEM7SUFHRixJQUFJQyxVQUFVLE1BQU07UUFDbEIsT0FBTztJQUNUO0lBRUEsTUFBTUUsY0FBY0YsTUFBTWpDLElBQUk7SUFDOUIsTUFBTXpCLFVBQVUwRCxNQUFNMUQsT0FBTztJQUU3Qiw4RUFBOEU7SUFDOUUsd0VBQXdFO0lBQ3hFLHNFQUFzRTtJQUN0RSwwRUFBMEU7SUFDMUUsNEVBQTRFO0lBQzVFLDZFQUE2RTtJQUM3RSxpQ0FBaUM7SUFDakMsRUFBRTtJQUNGLDRFQUE0RTtJQUM1RSw0RUFBNEU7SUFDNUUsNEVBQTRFO0lBQzVFLDZEQUE2RDtJQUM3RCxJQUFJQSxRQUFRUSxrQkFBa0IsRUFBRTtRQUM5QixPQUFPO0lBQ1Q7SUFFQSwyRUFBMkU7SUFDM0Usc0VBQXNFO0lBQ3RFLHVFQUF1RTtJQUN2RSxNQUFNcUQsTUFBd0I7UUFBRXRELGtCQUFrQjtJQUFLO0lBQ3ZELE1BQU11RCxjQUFjQyxlQUNsQi9ELFFBQVFZLElBQUksRUFDWjZDLGdCQUNBRCxRQUNBLE1BQ0FLO0lBR0Ysd0VBQXdFO0lBQ3hFLDJFQUEyRTtJQUMzRSwyQkFBMkI7SUFDM0IsTUFBTXRELG1CQUFtQnNELElBQUl0RCxnQkFBZ0I7SUFDN0MsSUFBSUEscUJBQXFCLE1BQU07UUFDN0Isc0RBQXNEO1FBQ3RELE9BQU87SUFDVDtJQUNBLE1BQU15RCxrQkFBa0JDLENBQUFBLEdBQUFBLE9BQUFBLHVCQUFBQSxFQUF3QjFEO0lBRWhELHdFQUF3RTtJQUN4RSxFQUFFO0lBQ0YseUVBQXlFO0lBQ3pFLHdFQUF3RTtJQUN4RSx5RUFBeUU7SUFDekUseUVBQXlFO0lBQ3pFLHdFQUF3RTtJQUN4RSxNQUFNMkQsaUJBQTJDO1FBQy9DekQsY0FBY04sV0FBV3FEO1FBQ3pCVyxRQUFRQyxPQUFBQSxXQUFXLENBQUNDLFNBQVM7UUFDN0JDLGNBQWM7UUFDZDFELE1BQU1rRDtRQUNOUyxVQUFVUDtRQUNWeEQsb0JBQW9CUixRQUFRUSxrQkFBa0I7UUFDOUNFLCtCQUErQlYsUUFBUVUsNkJBQTZCO1FBQ3BFQyxtQkFBbUI7UUFDbkI2RCxnQkFBZ0JoQjtRQUNoQmlCLEtBQUs7UUFDTEMsTUFBTTFFLFFBQVEwRSxJQUFJO1FBQ2xCQyxTQUFTM0UsUUFBUTJFLE9BQU87UUFDeEJDLFNBQVM1RSxRQUFRNEUsT0FBTztJQUMxQjtJQUVBaEIsWUFBWTVELE9BQU8sR0FBR2tFO0lBRXRCLE9BQU9BO0FBQ1Q7QUFZQTs7Ozs7Ozs7OztDQVVDLEdBQ0QsU0FBU1Asb0JBQ1BsQyxJQUFvQixFQUNwQlosYUFBdUIsRUFDdkJnRSxTQUFpQixFQUNqQnBCLGNBQThCO0lBRTlCLE1BQU0xQixVQUNKOEMsWUFBWWhFLGNBQWNLLE1BQU0sR0FBR0wsYUFBYSxDQUFDZ0UsVUFBVSxHQUFHO0lBRWhFLDRFQUE0RTtJQUM1RSxvRUFBb0U7SUFDcEUsNkVBQTZFO0lBQzdFLGtFQUFrRTtJQUNsRSwwRUFBMEU7SUFDMUUsdURBQXVEO0lBQ3ZELElBQUlwRCxLQUFLN0IsY0FBYyxLQUFLLE1BQU07UUFDaEMsb0VBQW9FO1FBQ3BFLElBQUltQyxZQUFZLE1BQU07WUFDcEIsTUFBTS9CLFVBQVV5QixLQUFLekIsT0FBTztZQUM1QixJQUFJQSxZQUFZLFFBQVEsQ0FBQ0EsUUFBUVcsaUJBQWlCLEVBQUU7Z0JBQ2xELE9BQU87b0JBQUVjO29CQUFNekI7Z0JBQVE7WUFDekI7UUFDRjtRQUNBLE9BQU87SUFDVDtJQUVBLDBFQUEwRTtJQUMxRSxrREFBa0Q7SUFDbEQsSUFBSStCLFlBQVksTUFBTTtRQUNwQixNQUFNK0MsY0FBY3JELEtBQUs3QixjQUFjLENBQUNtRCxHQUFHLENBQUNoQjtRQUM1QyxJQUFJK0MsZ0JBQWdCOUIsV0FBVztZQUM3Qix5RUFBeUU7WUFDekUsdUVBQXVFO1lBQ3ZFLHNFQUFzRTtZQUN0RSxvREFBb0Q7WUFDcEQsSUFDRThCLFlBQVk5RSxPQUFPLEtBQUssUUFDeEI4RSxZQUFZakYsWUFBWSxLQUFLLFFBQzdCaUYsWUFBWWxGLGNBQWMsS0FBSyxNQUMvQjtnQkFDQSw2Q0FBNkM7Z0JBQzdDLE9BQU87WUFDVDtZQUNBLE1BQU04RCxRQUFRQyxvQkFDWm1CLGFBQ0FqRSxlQUNBZ0UsWUFBWSxHQUNacEI7WUFFRixJQUFJQyxVQUFVLE1BQU07Z0JBQ2xCLE9BQU9BO1lBQ1Q7WUFDQSxrRUFBa0U7WUFDbEUsb0VBQW9FO1lBQ3BFLHFFQUFxRTtZQUNyRSw4REFBOEQ7WUFDOUQsZ0RBQWdEO1lBQ2hELE9BQU87UUFDVDtJQUNGO0lBRUEsb0JBQW9CO0lBQ3BCLElBQUlqQyxLQUFLNUIsWUFBWSxLQUFLLE1BQU07UUFDOUIsTUFBTWtGLGNBQWN0RCxLQUFLNUIsWUFBWTtRQUNyQyxNQUFNNkIsWUFBWUQsS0FBSzNCLHFCQUFxQjtRQUM1QyxNQUFNNkIsWUFBWUYsS0FBSzFCLHFCQUFxQjtRQUM1QyxNQUFNaUYsaUJBQWlCRCxZQUFZL0UsT0FBTztRQUUxQyxPQUFRMkI7WUFDTixLQUFLO2dCQUNILHVEQUF1RDtnQkFDdkQsSUFDRXFELG1CQUFtQixRQUNuQixDQUFDQSxlQUFlckUsaUJBQWlCLElBQ2pDb0IsWUFBWSxNQUNaO29CQUNBMEIsZUFBZVosR0FBRyxDQUFDbkIsV0FBV2IsY0FBY08sS0FBSyxDQUFDeUQ7b0JBQ2xELE9BQU87d0JBQUVwRCxNQUFNc0Q7d0JBQWEvRSxTQUFTZ0Y7b0JBQWU7Z0JBQ3REO2dCQUNBO1lBQ0YsS0FBSztnQkFDSCx5REFBeUQ7Z0JBQ3pELElBQUlBLG1CQUFtQixRQUFRLENBQUNBLGVBQWVyRSxpQkFBaUIsRUFBRTtvQkFDaEUsSUFBSW9CLFlBQVksTUFBTTt3QkFDcEIwQixlQUFlWixHQUFHLENBQUNuQixXQUFXYixjQUFjTyxLQUFLLENBQUN5RDt3QkFDbEQsT0FBTzs0QkFBRXBELE1BQU1zRDs0QkFBYS9FLFNBQVNnRjt3QkFBZTtvQkFDdEQ7b0JBQ0Esb0VBQW9FO29CQUNwRSw0REFBNEQ7b0JBQzVELElBQUl2RCxLQUFLekIsT0FBTyxLQUFLLFFBQVF5QixLQUFLekIsT0FBTyxDQUFDVyxpQkFBaUIsRUFBRTt3QkFDM0Q4QyxlQUFlWixHQUFHLENBQUNuQixXQUFXLEVBQUU7d0JBQ2hDLE9BQU87NEJBQUVELE1BQU1zRDs0QkFBYS9FLFNBQVNnRjt3QkFBZTtvQkFDdEQ7Z0JBQ0Y7Z0JBQ0E7WUFDRixLQUFLO2dCQUNILHdEQUF3RDtnQkFDeEQsK0RBQStEO2dCQUMvRCwrQ0FBK0M7Z0JBQy9DLElBQUlqRCxZQUFZLE1BQU07b0JBQ3BCMEIsZUFBZVosR0FBRyxDQUFDbkIsV0FBV0s7b0JBQzlCLE9BQU80QixvQkFDTG9CLGFBQ0FsRSxlQUNBZ0UsWUFBWSxHQUNacEI7Z0JBRUo7Z0JBQ0E7WUFDRixxRUFBcUU7WUFDckUsbUVBQW1FO1lBQ25FLHlEQUF5RDtZQUN6RCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztnQkFDSCxPQUFPO1lBQ1Q7Z0JBQ0U5QjtRQUNKO0lBQ0Y7SUFFQSwyRUFBMkU7SUFDM0Usb0RBQW9EO0lBQ3BELElBQUlJLFlBQVksTUFBTTtRQUNwQixNQUFNL0IsVUFBVXlCLEtBQUt6QixPQUFPO1FBQzVCLElBQUlBLFlBQVksUUFBUSxDQUFDQSxRQUFRVyxpQkFBaUIsRUFBRTtZQUNsRCxPQUFPO2dCQUFFYztnQkFBTXpCO1lBQVE7UUFDekI7SUFDRjtJQUVBLE9BQU87QUFDVDtBQVdBOzs7Ozs7Ozs7O0NBVUMsR0FDRCxTQUFTK0QsZUFDUC9ELE9BQWtCLEVBQ2xCeUQsY0FBOEIsRUFDOUJELE1BQXdCLEVBQ3hCeUIscUJBQW9ELEVBQ3BEcEIsR0FBcUI7SUFFckIsTUFBTXFCLGtCQUFrQmxGLFFBQVFrQyxPQUFPO0lBRXZDLElBQUlpRCxhQUFhRDtJQUNqQixJQUFJRTtJQUVKLElBQUksT0FBT0Ysb0JBQW9CLFVBQVU7UUFDdkMseUVBQXlFO1FBQ3pFLE1BQU14RCxZQUFZd0QsZUFBZSxDQUFDLEVBQUU7UUFDcEMsTUFBTXZELFlBQVl1RCxlQUFlLENBQUMsRUFBRTtRQUNwQyxNQUFNOUMsaUJBQWlCOEMsZUFBZSxDQUFDLEVBQUU7UUFDekMsTUFBTUcsV0FBVzVCLGVBQWVWLEdBQUcsQ0FBQ3JCO1FBQ3BDLElBQUkyRCxhQUFhckMsV0FBVztZQUMxQixNQUFNc0MsY0FBY0MsTUFBTUMsT0FBTyxDQUFDSCxZQUM5QkEsU0FBU0ksSUFBSSxDQUFDLE9BQ2RKO1lBQ0pGLGFBQWE7Z0JBQUN6RDtnQkFBVzREO2dCQUFhM0Q7Z0JBQVdTO2FBQWU7WUFDaEVnRCxrQkFBa0JNLENBQUFBLEdBQUFBLFVBQUFBLG9CQUFBQSxFQUNoQlQsdUJBQ0FLLGFBQ0E1RDtRQUVKLE9BQU87WUFDTCx3RUFBd0U7WUFDeEUsc0RBQXNEO1lBQ3REMEQsa0JBQWtCSDtRQUNwQjtJQUNGLE9BQU87UUFDTCx3REFBd0Q7UUFDeERHLGtCQUFrQkg7SUFDcEI7SUFFQSxzRUFBc0U7SUFDdEUsSUFBSVUsV0FBNkM7SUFDakQsSUFBSTNGLFFBQVFpRCxLQUFLLEtBQUssTUFBTTtRQUMxQjBDLFdBQVcsQ0FBQztRQUNaLElBQUssTUFBTUMsT0FBTzVGLFFBQVFpRCxLQUFLLENBQUU7WUFDL0IwQyxRQUFRLENBQUNDLElBQUksR0FBRzdCLGVBQ2QvRCxRQUFRaUQsS0FBSyxDQUFDMkMsSUFBSSxFQUNsQm5DLGdCQUNBRCxRQUNBNEIsaUJBQ0F2QjtRQUVKO0lBQ0Y7SUFFQSxJQUFJN0QsUUFBUTZGLE1BQU0sRUFBRTtRQUNsQiw0Q0FBNEM7UUFDNUMsTUFBTUMsY0FBY0MsQ0FBQUEsR0FBQUEsVUFBQUEsb0JBQUFBLEVBQ2xCL0YsUUFBUWdHLFVBQVUsRUFDbEJ4QyxRQUNBNEI7UUFFRiwyRUFBMkU7UUFDM0UsSUFBSXZCLElBQUl0RCxnQkFBZ0IsS0FBSyxNQUFNO1lBQ2pDc0QsSUFBSXRELGdCQUFnQixHQUFHMEYsQ0FBQUEsR0FBQUEsVUFBQUEsd0JBQUFBLEVBQ3JCakcsUUFBUWdHLFVBQVUsRUFDbEJ4QyxRQUNBNEI7UUFFSjtRQUNBLE9BQU87WUFDTFksWUFBWWhHLFFBQVFnRyxVQUFVO1lBQzlCOUQsU0FBU2lEO1lBQ1Q5QixjQUFjckQsUUFBUXFELFlBQVk7WUFDbENKLE9BQU8wQztZQUVQTyxlQUFlbEcsUUFBUWtHLGFBQWE7WUFDcENMLFFBQVE7WUFDUk0sVUFBVUw7UUFDWjtJQUNGLE9BQU87UUFDTCxpREFBaUQ7UUFDakQsTUFBTUEsY0FBY00sQ0FBQUEsR0FBQUEsVUFBQUEsc0JBQUFBLEVBQ2xCcEcsUUFBUWdHLFVBQVUsRUFDbEJaO1FBRUYsT0FBTztZQUNMWSxZQUFZaEcsUUFBUWdHLFVBQVU7WUFDOUI5RCxTQUFTaUQ7WUFDVDlCLGNBQWNyRCxRQUFRcUQsWUFBWTtZQUNsQ0osT0FBTzBDO1lBRVBPLGVBQWVsRyxRQUFRa0csYUFBYTtZQUNwQ0wsUUFBUTtZQUNSTSxVQUFVTDtRQUNaO0lBQ0Y7QUFDRjtBQU1PLFNBQVNwRztJQUNkTyxxQkFBcUJOO0FBQ3ZCIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2NsaWVudC9jb21wb25lbnRzL3NlZ21lbnQtY2FjaGUvb3B0aW1pc3RpYy1yb3V0ZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBPcHRpbWlzdGljIFJvdXRpbmcgKEtub3duIFJvdXRlcylcbiAqXG4gKiBUaGlzIG1vZHVsZSBlbmFibGVzIHRoZSBjbGllbnQgdG8gcHJlZGljdCByb3V0ZSBzdHJ1Y3R1cmUgZm9yIFVSTHMgdGhhdFxuICogaGF2ZW4ndCBiZWVuIHByZWZldGNoZWQgeWV0LCBiYXNlZCBvbiBwcmV2aW91c2x5IGxlYXJuZWQgcm91dGUgcGF0dGVybnMuXG4gKiBXaGVuIHN1Y2Nlc3NmdWwsIHRoaXMgYWxsb3dzIHNraXBwaW5nIHRoZSByb3V0ZSB0cmVlIHByZWZldGNoIHJlcXVlc3RcbiAqIGVudGlyZWx5LlxuICpcbiAqIFRoZSBjb3JlIGlkZWEgaXMgdGhhdCBtYW55IFVSTHMgbWFwIHRvIHRoZSBzYW1lIHJvdXRlIHN0cnVjdHVyZS4gRm9yIGV4YW1wbGUsXG4gKiAvYmxvZy9wb3N0LTEgYW5kIC9ibG9nL3Bvc3QtMiBib3RoIHJlc29sdmUgdG8gL2Jsb2cvW3NsdWddLiBPbmNlIHdlJ3ZlXG4gKiBwcmVmZXRjaGVkIG9uZSwgd2UgY2FuIHByZWRpY3QgdGhlIHN0cnVjdHVyZSBvZiB0aGUgb3RoZXIuXG4gKlxuICogSG93ZXZlciwgd2UgY2FuJ3QgYWx3YXlzIG1ha2UgdGhpcyBwcmVkaWN0aW9uLiBTdGF0aWMgc2libGluZ3MgKGxpa2VcbiAqIC9ibG9nL2ZlYXR1cmVkIGFsb25nc2lkZSAvYmxvZy9bc2x1Z10pIGhhdmUgZGlmZmVyZW50IHJvdXRlIHN0cnVjdHVyZXMuXG4gKiBXaGVuIHdlIGxlYXJuIGEgZHluYW1pYyByb3V0ZSwgd2UgYWxzbyBsZWFybiBpdHMgc3RhdGljIHNpYmxpbmdzIHNvIHdlXG4gKiBrbm93IHdoZW4gTk9UIHRvIGFwcGx5IHRoZSBwcmVkaWN0aW9uLlxuICpcbiAqIE1haW4gZW50cnkgcG9pbnRzOlxuICpcbiAqIDEuIGRpc2NvdmVyS25vd25Sb3V0ZTogQ2FsbGVkIGFmdGVyIHJlY2VpdmluZyBhIHJvdXRlIHRyZWUgZnJvbSB0aGUgc2VydmVyLlxuICogICAgVHJhdmVyc2VzIHRoZSByb3V0ZSB0cmVlLCBjb21wYXJlcyBVUkwgcGFydHMgdG8gc2VnbWVudHMsIGFuZCBwb3B1bGF0ZXNcbiAqICAgIHRoZSBrbm93biByb3V0ZSB0cmVlIGlmIHRoZXkgbWF0Y2guIFJvdXRlcyBhcmUgYWx3YXlzIGluc2VydGVkIGludG8gdGhlXG4gKiAgICBjYWNoZS5cbiAqXG4gKiAyLiBtYXRjaEtub3duUm91dGU6IENhbGxlZCB3aGVuIGxvb2tpbmcgdXAgYSByb3V0ZSB3aXRoIG5vIGNhY2hlIGVudHJ5LlxuICogICAgTWF0Y2hlcyB0aGUgY2FuZGlkYXRlIFVSTCBhZ2FpbnN0IGxlYXJuZWQgcGF0dGVybnMuIFJldHVybnMgYSBzeW50aGV0aWNcbiAqICAgIGNhY2hlIGVudHJ5IGlmIHN1Y2Nlc3NmdWwsIG9yIG51bGwgdG8gZmFsbCBiYWNrIHRvIHNlcnZlciByZXNvbHV0aW9uLlxuICpcbiAqIFJld3JpdGUgZGV0ZWN0aW9uIGhhcHBlbnMgZHVyaW5nIHRyYXZlcnNhbDogaWYgYSBVUkwgcGF0aCBwYXJ0IGRvZXNuJ3QgbWF0Y2hcbiAqIHRoZSBjb3JyZXNwb25kaW5nIHJvdXRlIHNlZ21lbnQsIHdlIHN0b3AgcG9wdWxhdGluZyB0aGUga25vd24gcm91dGUgdHJlZVxuICogKHNpbmNlIHRoZSBtYXBwaW5nIGlzIGluY29ycmVjdCkgYnV0IHN0aWxsIGluc2VydCB0aGUgcm91dGUgaW50byB0aGUgY2FjaGUuXG4gKlxuICogVGhlIGtub3duIHJvdXRlIHRyZWUgaXMgYXBwZW5kLW9ubHkgd2l0aCBubyBldmljdGlvbi4gUm91dGUgcGF0dGVybnMgYXJlXG4gKiBkZXJpdmVkIGZyb20gdGhlIGZpbGVzeXN0ZW0sIHNvIHRoZXkgZG9uJ3QgYmVjb21lIHN0YWxlIHdpdGhpbiBhIHNlc3Npb24uXG4gKiBDYWNoZSBpbnZhbGlkYXRpb24gb24gZGVwbG95IGNsZWFycyBldmVyeXRoaW5nIGFueXdheS5cbiAqXG4gKiBDdXJyZW50IGxpbWl0YXRpb25zIChkZW9wdCB0byBzZXJ2ZXIgcmVzb2x1dGlvbik6XG4gKiAtIFJld3JpdGVzOiBEZXRlY3RlZCBkdXJpbmcgdHJhdmVyc2FsICh0cmVlIG5vdCBwb3B1bGF0ZWQsIGJ1dCByb3V0ZSBjYWNoZWQpXG4gKiAtIEludGVyY2VwdGVkIHJvdXRlczogVGhlIHJvdXRlIHRyZWUgdmFyaWVzIGJ5IHJlZmVycmVyIChOZXh0LVVybCBoZWFkZXIpLFxuICogICBzbyB3ZSBjYW4ndCBwcmVkaWN0IHRoZSBjb3JyZWN0IHN0cnVjdHVyZSBmcm9tIHRoZSBVUkwgYWxvbmUuIFBhdHRlcm5zIGFyZVxuICogICBzdGlsbCBzdG9yZWQgZHVyaW5nIGRpc2NvdmVyeSAoc28gdGhlIHRyaWUgc3RheXMgcG9wdWxhdGVkIGZvciBub24tXG4gKiAgIGludGVyY2VwdGVkIHNpYmxpbmdzKSwgYnV0IG1hdGNoaW5nIGJhaWxzIG91dCB3aGVuIHRoZSBwYXR0ZXJuIGlzIG1hcmtlZFxuICogICBhcyBpbnRlcmNlcHRhYmxlLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRHluYW1pY1BhcmFtVHlwZXNTaG9ydCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci10eXBlcydcbmltcG9ydCB0eXBlIHsgUm91dGVUcmVlLCBGdWxmaWxsZWRSb3V0ZUNhY2hlRW50cnkgfSBmcm9tICcuL2NhY2hlJ1xuaW1wb3J0IHtcbiAgRW50cnlTdGF0dXMsXG4gIHdyaXRlUm91dGVJbnRvQ2FjaGUsXG4gIGZ1bGZpbGxSb3V0ZUNhY2hlRW50cnksXG4gIHR5cGUgUGVuZGluZ1JvdXRlQ2FjaGVFbnRyeSxcbiAgY3JlYXRlTWV0YWRhdGFSb3V0ZVRyZWUsXG59IGZyb20gJy4vY2FjaGUnXG5pbXBvcnQgeyBkb2VzU3RhdGljU2VnbWVudEFwcGVhckluVVJMIH0gZnJvbSAnLi4vLi4vcm91dGUtcGFyYW1zJ1xuaW1wb3J0IHR5cGUgeyBOb3JtYWxpemVkUGF0aG5hbWUsIE5vcm1hbGl6ZWRTZWFyY2ggfSBmcm9tICcuL2NhY2hlLWtleSdcbmltcG9ydCB7XG4gIGFwcGVuZExheW91dFZhcnlQYXRoLFxuICBmaW5hbGl6ZUxheW91dFZhcnlQYXRoLFxuICBmaW5hbGl6ZVBhZ2VWYXJ5UGF0aCxcbiAgZmluYWxpemVNZXRhZGF0YVZhcnlQYXRoLFxuICB0eXBlIFBhcnRpYWxTZWdtZW50VmFyeVBhdGgsXG4gIHR5cGUgUGFnZVZhcnlQYXRoLFxufSBmcm9tICcuL3ZhcnktcGF0aCdcblxuLyoqXG4gKiBUaGUga25vd24gcm91dGUgdHJlZSBpcyBhbmFsb2dvdXMgdG8gYSByb3V0ZSB0YWJsZS4gQSBkaWZmZXJlbnQgcm91dGluZ1xuICogaW1wbGVtZW50YXRpb24gbWlnaHQgdXNlIHJlZ2V4ZXMgb3IgVVJMUGF0dGVybjsgb3VycyB1c2VzIGEgdHJpZSBpbmRleGVkXG4gKiBieSBVUkwgcGF0aCBzZWdtZW50cy5cbiAqXG4gKiBFYWNoIG5vZGUgKEtub3duUm91dGVQYXJ0KSByZXByZXNlbnRzIGEgcG9zaXRpb24gaW4gdGhlIFVSTCBhbmQgY2FuIGhhdmU6XG4gKiAtIHN0YXRpY0NoaWxkcmVuOiBNYXAgb2YgbGl0ZXJhbCBzZWdtZW50cyB0byBjaGlsZCBub2Rlc1xuICogLSBkeW5hbWljQ2hpbGQ6IEEgc2luZ2xlIGR5bmFtaWMgc2VnbWVudCBub2RlIChbc2x1Z10sIFsuLi5wYXJhbXNdLCBldGMuKVxuICogLSBwYXR0ZXJuOiBBIGNhY2hlIGVudHJ5IHRlbXBsYXRlIGZvciByb3V0ZXMgdGhhdCB0ZXJtaW5hdGUgaGVyZVxuICpcbiAqIFRoaXMgdHJlZSBvbmx5IGNvbnRhaW5zIHNlZ21lbnRzIHRoYXQgY29ycmVzcG9uZCB0byBhY3R1YWwgZmlsZXN5c3RlbSByb3V0ZXMuXG4gKiBSb3V0ZSBncm91cHMgbGlrZSAobWFya2V0aW5nKSBhbmQgcGFyYWxsZWwgcm91dGVzIGxpa2UgQG1vZGFsIGFyZSBub3RcbiAqIGluY2x1ZGVkIHNpbmNlIHRoZXkgZG9uJ3QgYXBwZWFyIGluIFVSTHMuIFNpbWlsYXJseSwgaWYgYSBVUkwgaXMgcmV3cml0dGVuXG4gKiB0byBhIGRpZmZlcmVudCBmaWxlc3lzdGVtIHBhdGgsIHRoZSBvcmlnaW5hbCBVUkwgc2VnbWVudHMgZG9uJ3QgYXBwZWFyIGhlcmVcbiAqIOKAlCBvbmx5IHRoZSByZXNvbHZlZCBmaWxlc3lzdGVtIHJvdXRlIHN0cnVjdHVyZSBpcyBzdG9yZWQuXG4gKlxuICogRXhhbXBsZSB0cmVlIGFmdGVyIGxlYXJuaW5nIC9ibG9nL1tzbHVnXSwgL2Jsb2cvZmVhdHVyZWQsIGFuZCAvYWJvdXQ6XG4gKlxuICogICDilJzilIDilIAgYWJvdXRcbiAqICAg4pSU4pSA4pSAIGJsb2dcbiAqICAgICAgIOKUnOKUgOKUgCBmZWF0dXJlZFxuICogICAgICAg4pSU4pSA4pSAIFtzbHVnXVxuICpcbiAqIFdoZW4gbWF0Y2hpbmcgL2Jsb2cvaGVsbG86XG4gKiAgIDEuIFwiYmxvZ1wiIG1hdGNoZXMgc3RhdGljIGNoaWxkXG4gKiAgIDIuIFwiaGVsbG9cIiBkb2Vzbid0IG1hdGNoIFwiZmVhdHVyZWRcIiwgZmFsbHMgdGhyb3VnaCB0byBbc2x1Z11cbiAqICAgMy4gUmV0dXJucyBbc2x1Z10ncyBwYXR0ZXJuIHdpdGggcmVzb2x2ZWQgcGFyYW0geyBzbHVnOiBcImhlbGxvXCIgfVxuICovXG50eXBlIEtub3duUm91dGVQYXJ0QmFzZSA9IHtcbiAgLy8gS25vd24gc3RhdGljIHBhdGhzIGF0IHRoaXMgbGV2ZWwuIFRoZSBudWxsIHZzIE1hcCBkaXN0aW5jdGlvbiBpc1xuICAvLyBzZW1hbnRpY2FsbHkgbWVhbmluZ2Z1bDpcbiAgLy8gLSBudWxsOiBTdGF0aWMgc2libGluZ3MgYXJlIFVOS05PV04gYXQgdGhpcyBsZXZlbCAoZS5nLiwgd2VicGFjayBkZXYgbW9kZVxuICAvLyAgIHdoZXJlIHJvdXRlcyBhcmUgY29tcGlsZWQgb24tZGVtYW5kKS4gSWYgdGhlcmUncyBhIGR5bmFtaWNDaGlsZCwgd2VcbiAgLy8gICBjYW4ndCBzYWZlbHkgbWF0Y2ggaXQgYmVjYXVzZSB0aGUgVVJMIG1pZ2h0IGJlIGFuIHVua25vd24gc3RhdGljIHNpYmxpbmcuXG4gIC8vIC0gTWFwIChldmVuIGlmIGVtcHR5KTogU3RhdGljIHNpYmxpbmdzIGFyZSBLTk9XTi4gV2UgY2FuIHNhZmVseSBtYXRjaCBhXG4gIC8vICAgZHluYW1pY0NoaWxkIGlmIHRoZSBVUkwgZG9lc24ndCBtYXRjaCBhbnkgZW50cnkgaW4gdGhlIE1hcC5cbiAgc3RhdGljQ2hpbGRyZW46IE1hcDxzdHJpbmcsIEtub3duUm91dGVQYXJ0PiB8IG51bGxcblxuICAvLyBUaGUgY2FjaGUgZW50cnkgdGhhdCBzZXJ2ZXMgYXMgYSBwYXR0ZXJuIGZvciB0aGlzIHJvdXRlLlxuICAvLyBXaGVuIGEgVVJMIG1hdGNoZXMsIHdlIGNsb25lIHRoaXMgYW5kIHN1YnN0aXR1dGUgcGFyYW0gdmFsdWVzLlxuICAvLyBudWxsIG1lYW5zIHdlIGtub3cgdGhpcyBwYXRoIGV4aXN0cyAoZnJvbSBzdGF0aWMgc2libGluZ3MpIGJ1dCBoYXZlbid0XG4gIC8vIGxlYXJuZWQgaXRzIHN0cnVjdHVyZSB5ZXQuXG4gIHBhdHRlcm46IEZ1bGZpbGxlZFJvdXRlQ2FjaGVFbnRyeSB8IG51bGxcblxuICAvLyBUT0RPOiBGb3IgcHJlZml4IHJld3JpdGUgc3VwcG9ydC4gV2hlbiB0cnVlLCB0aGlzIHBhcnQgbWF5IG5vdCBhcHBlYXIgaW5cbiAgLy8gdGhlIGNhbmRpZGF0ZSBVUkwgYmVjYXVzZSBpdCB3YXMgaW5qZWN0ZWQgYnkgYSByZXdyaXRlLlxuICAvLyBtYXlCZVNraXBwZWRJblVSTDogYm9vbGVhblxufVxuXG4vLyBUaGUgZHluYW1pYyBjaGlsZCBmaWVsZHMgYXJlIHN0cnVjdHVyZWQgYXMgYSB1bmlvbiBzbyB0aGF0IG5hcnJvd2luZyBvblxuLy8gZHluYW1pY0NoaWxkIGFsc28gbmFycm93cyBkeW5hbWljQ2hpbGRQYXJhbU5hbWUgYW5kIGR5bmFtaWNDaGlsZFBhcmFtVHlwZS5cbnR5cGUgS25vd25Sb3V0ZVBhcnRXaXRob3V0RHluYW1pY0NoaWxkID0gS25vd25Sb3V0ZVBhcnRCYXNlICYge1xuICBkeW5hbWljQ2hpbGQ6IG51bGxcbiAgZHluYW1pY0NoaWxkUGFyYW1OYW1lOiBudWxsXG4gIGR5bmFtaWNDaGlsZFBhcmFtVHlwZTogbnVsbFxufVxuXG50eXBlIEtub3duUm91dGVQYXJ0V2l0aER5bmFtaWNDaGlsZCA9IEtub3duUm91dGVQYXJ0QmFzZSAmIHtcbiAgZHluYW1pY0NoaWxkOiBLbm93blJvdXRlUGFydFxuICBkeW5hbWljQ2hpbGRQYXJhbU5hbWU6IHN0cmluZ1xuICBkeW5hbWljQ2hpbGRQYXJhbVR5cGU6IER5bmFtaWNQYXJhbVR5cGVzU2hvcnRcbn1cblxudHlwZSBLbm93blJvdXRlUGFydCA9XG4gIHwgS25vd25Sb3V0ZVBhcnRXaXRob3V0RHluYW1pY0NoaWxkXG4gIHwgS25vd25Sb3V0ZVBhcnRXaXRoRHluYW1pY0NoaWxkXG5cbi8qKlxuICogUGFyYW0gdmFsdWVzIGV4dHJhY3RlZCBkdXJpbmcgVVJMIG1hdGNoaW5nLiBVc2VkIHRvIHJlaWZ5IHRoZSB0ZW1wbGF0ZS5cbiAqIC0gc3RyaW5nIGZvciByZWd1bGFyIGR5bmFtaWMgW3BhcmFtXVxuICogLSBzdHJpbmdbXSBmb3IgY2F0Y2gtYWxsIFsuLi5wYXJhbV0gYW5kIG9wdGlvbmFsIGNhdGNoLWFsbCBbWy4uLnBhcmFtXV1cbiAqL1xudHlwZSBSZXNvbHZlZFBhcmFtcyA9IE1hcDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdPlxuXG5mdW5jdGlvbiBjcmVhdGVFbXB0eVBhcnQoKTogS25vd25Sb3V0ZVBhcnQge1xuICByZXR1cm4ge1xuICAgIHN0YXRpY0NoaWxkcmVuOiBudWxsLFxuICAgIGR5bmFtaWNDaGlsZDogbnVsbCxcbiAgICBkeW5hbWljQ2hpbGRQYXJhbU5hbWU6IG51bGwsXG4gICAgZHluYW1pY0NoaWxkUGFyYW1UeXBlOiBudWxsLFxuICAgIHBhdHRlcm46IG51bGwsXG4gIH1cbn1cblxuLy8gVGhlIHJvb3Qgb2YgdGhlIGtub3duIHJvdXRlIHRyZWUuXG5sZXQga25vd25Sb3V0ZVRyZWVSb290OiBLbm93blJvdXRlUGFydCA9IGNyZWF0ZUVtcHR5UGFydCgpXG5cbi8qKlxuICogTGVhcm5zIGEgcm91dGUgcGF0dGVybiBmcm9tIGEgc2VydmVyIHJlc3BvbnNlIGFuZCBpbnNlcnRzIGl0IGludG8gdGhlIGNhY2hlLlxuICpcbiAqIENhbGxlZCBhZnRlciByZWNlaXZpbmcgYSByb3V0ZSB0cmVlIGZyb20gdGhlIHNlcnZlciAoaW5pdGlhbCBsb2FkLCBuYXZpZ2F0aW9uLFxuICogb3IgcHJlZmV0Y2gpLiBUcmF2ZXJzZXMgdGhlIHJvdXRlIHRyZWUsIGNvbXBhcmVzIFVSTCBwYXJ0cyB0byBzZWdtZW50cywgYW5kXG4gKiBwb3B1bGF0ZXMgdGhlIGtub3duIHJvdXRlIHRyZWUgaWYgdGhleSBtYXRjaC4gUm91dGVzIGFyZSBhbHdheXMgaW5zZXJ0ZWQgaW50b1xuICogdGhlIGNhY2hlIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgVVJMIG1hdGNoZXMgdGhlIHJvdXRlIHN0cnVjdHVyZS5cbiAqXG4gKiBXaGVuIHBlbmRpbmdFbnRyeSBpcyBwcm92aWRlZCwgaXQncyBmdWxmaWxsZWQgYW5kIHVzZWQuIFdoZW4gbnVsbCwgYW4gZW50cnlcbiAqIGlzIGNyZWF0ZWQgYW5kIGluc2VydGVkIGludG8gdGhlIHJvdXRlIGNhY2hlIG1hcC5cbiAqXG4gKiBXaGVuIGhhc0R5bmFtaWNSZXdyaXRlIGlzIHRydWUsIHRoZSByb3V0ZSBlbnRyeSBpcyBtYXJrZWQgYXMgaGF2aW5nIGFcbiAqIGR5bmFtaWMgcmV3cml0ZSwgd2hpY2ggcHJldmVudHMgaXQgZnJvbSBiZWluZyB1c2VkIGFzIGEgdGVtcGxhdGUgZm9yIGZ1dHVyZVxuICogcHJlZGljdGlvbnMuIFRoaXMgaXMgc2V0IHdoZW4gd2UgZGV0ZWN0IGEgbWlzbWF0Y2ggYmV0d2VlbiB3aGF0IHdlIHByZWRpY3RlZFxuICogYW5kIHdoYXQgdGhlIHNlcnZlciByZXR1cm5lZC5cbiAqXG4gKiBSZXR1cm5zIHRoZSBmdWxmaWxsZWQgcm91dGUgY2FjaGUgZW50cnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXNjb3Zlcktub3duUm91dGUoXG4gIG5vdzogbnVtYmVyLFxuICBwYXRobmFtZTogc3RyaW5nLFxuICBuZXh0VXJsOiBzdHJpbmcgfCBudWxsLFxuICBwZW5kaW5nRW50cnk6IFBlbmRpbmdSb3V0ZUNhY2hlRW50cnkgfCBudWxsLFxuICByb3V0ZVRyZWU6IFJvdXRlVHJlZSxcbiAgbWV0YWRhdGFWYXJ5UGF0aDogUGFnZVZhcnlQYXRoLFxuICBjb3VsZEJlSW50ZXJjZXB0ZWQ6IGJvb2xlYW4sXG4gIGNhbm9uaWNhbFVybDogc3RyaW5nLFxuICBzdXBwb3J0c1BlclNlZ21lbnRQcmVmZXRjaGluZzogYm9vbGVhbixcbiAgaGFzRHluYW1pY1Jld3JpdGU6IGJvb2xlYW5cbik6IEZ1bGZpbGxlZFJvdXRlQ2FjaGVFbnRyeSB7XG4gIGNvbnN0IHRyZWUgPSByb3V0ZVRyZWVcblxuICBjb25zdCBwYXRobmFtZVBhcnRzID0gcGF0aG5hbWUuc3BsaXQoJy8nKS5maWx0ZXIoKHApID0+IHAgIT09ICcnKVxuICBjb25zdCBmaXJzdFBhcnQgPSBwYXRobmFtZVBhcnRzLmxlbmd0aCA+IDAgPyBwYXRobmFtZVBhcnRzWzBdIDogbnVsbFxuICBjb25zdCByZW1haW5pbmdQYXJ0cyA9IHBhdGhuYW1lUGFydHMubGVuZ3RoID4gMCA/IHBhdGhuYW1lUGFydHMuc2xpY2UoMSkgOiBbXVxuXG4gIGlmIChwZW5kaW5nRW50cnkgIT09IG51bGwpIHtcbiAgICAvLyBGdWxmaWxsIHRoZSBwZW5kaW5nIGVudHJ5IGZpcnN0XG4gICAgY29uc3QgZnVsZmlsbGVkRW50cnkgPSBmdWxmaWxsUm91dGVDYWNoZUVudHJ5KFxuICAgICAgbm93LFxuICAgICAgcGVuZGluZ0VudHJ5LFxuICAgICAgdHJlZSxcbiAgICAgIG1ldGFkYXRhVmFyeVBhdGgsXG4gICAgICBjb3VsZEJlSW50ZXJjZXB0ZWQsXG4gICAgICBjYW5vbmljYWxVcmwsXG4gICAgICBzdXBwb3J0c1BlclNlZ21lbnRQcmVmZXRjaGluZ1xuICAgIClcbiAgICBpZiAoaGFzRHluYW1pY1Jld3JpdGUpIHtcbiAgICAgIGZ1bGZpbGxlZEVudHJ5Lmhhc0R5bmFtaWNSZXdyaXRlID0gdHJ1ZVxuICAgIH1cbiAgICAvLyBQb3B1bGF0ZSB0aGUga25vd24gcm91dGUgdHJlZSAoaGFuZGxlcyByZXdyaXRlIGRldGVjdGlvbiBpbnRlcm5hbGx5KS5cbiAgICAvLyBUaGUgZW50cnkgaXMgYWxyZWFkeSBpbiB0aGUgY2FjaGU7IHRoaXMganVzdCBzdG9yZXMgaXQgYXMgYSBwYXR0ZXJuXG4gICAgLy8gaWYgdGhlIFVSTCBtYXRjaGVzIHRoZSByb3V0ZSBzdHJ1Y3R1cmUuXG4gICAgZGlzY292ZXJLbm93blJvdXRlUGFydChcbiAgICAgIGtub3duUm91dGVUcmVlUm9vdCxcbiAgICAgIHRyZWUsXG4gICAgICBmaXJzdFBhcnQsXG4gICAgICByZW1haW5pbmdQYXJ0cyxcbiAgICAgIGZ1bGZpbGxlZEVudHJ5LFxuICAgICAgbm93LFxuICAgICAgcGF0aG5hbWUsXG4gICAgICBuZXh0VXJsLFxuICAgICAgdHJlZSxcbiAgICAgIG1ldGFkYXRhVmFyeVBhdGgsXG4gICAgICBjb3VsZEJlSW50ZXJjZXB0ZWQsXG4gICAgICBjYW5vbmljYWxVcmwsXG4gICAgICBzdXBwb3J0c1BlclNlZ21lbnRQcmVmZXRjaGluZyxcbiAgICAgIGhhc0R5bmFtaWNSZXdyaXRlXG4gICAgKVxuICAgIHJldHVybiBmdWxmaWxsZWRFbnRyeVxuICB9XG5cbiAgLy8gTm8gcGVuZGluZyBlbnRyeSAtIGRpc2NvdmVyS25vd25Sb3V0ZVBhcnQgd2lsbCBjcmVhdGUgb25lIGFuZCBpbnNlcnQgaXRcbiAgLy8gaW50byB0aGUgY2FjaGUsIG9yIHJldHVybiBhbiBleGlzdGluZyBwYXR0ZXJuIGlmIG9uZSBleGlzdHMuXG4gIHJldHVybiBkaXNjb3Zlcktub3duUm91dGVQYXJ0KFxuICAgIGtub3duUm91dGVUcmVlUm9vdCxcbiAgICB0cmVlLFxuICAgIGZpcnN0UGFydCxcbiAgICByZW1haW5pbmdQYXJ0cyxcbiAgICBudWxsLFxuICAgIG5vdyxcbiAgICBwYXRobmFtZSxcbiAgICBuZXh0VXJsLFxuICAgIHRyZWUsXG4gICAgbWV0YWRhdGFWYXJ5UGF0aCxcbiAgICBjb3VsZEJlSW50ZXJjZXB0ZWQsXG4gICAgY2Fub25pY2FsVXJsLFxuICAgIHN1cHBvcnRzUGVyU2VnbWVudFByZWZldGNoaW5nLFxuICAgIGhhc0R5bmFtaWNSZXdyaXRlXG4gIClcbn1cblxuLyoqXG4gKiBHZXRzIG9yIGNyZWF0ZXMgdGhlIGR5bmFtaWMgY2hpbGQgbm9kZSBmb3IgYSBLbm93blJvdXRlUGFydC5cbiAqIEEgbm9kZSBjYW4gaGF2ZSBhdCBtb3N0IG9uZSBkeW5hbWljIGNoaWxkICh5b3UgY2FuJ3QgaGF2ZSBib3RoIFtzbHVnXSBhbmRcbiAqIFtpZF0gYXQgdGhlIHNhbWUgcm91dGUgbGV2ZWwpLCBzbyB3ZSBlaXRoZXIgcmV0dXJuIGV4aXN0aW5nIG9yIGNyZWF0ZSBuZXcuXG4gKi9cbmZ1bmN0aW9uIGRpc2NvdmVyRHluYW1pY0NoaWxkKFxuICBwYXJ0OiBLbm93blJvdXRlUGFydCxcbiAgcGFyYW1OYW1lOiBzdHJpbmcsXG4gIHBhcmFtVHlwZTogRHluYW1pY1BhcmFtVHlwZXNTaG9ydFxuKTogS25vd25Sb3V0ZVBhcnQge1xuICBpZiAocGFydC5keW5hbWljQ2hpbGQgIT09IG51bGwpIHtcbiAgICByZXR1cm4gcGFydC5keW5hbWljQ2hpbGRcbiAgfVxuICBjb25zdCBuZXdDaGlsZCA9IGNyZWF0ZUVtcHR5UGFydCgpXG4gIC8vIFR5cGUgYXNzZXJ0aW9uIG5lZWRlZCBiZWNhdXNlIHdlJ3JlIGNvbnZlcnRpbmcgZnJvbSBcIndpdGhvdXRcIiB0byBcIndpdGhcIlxuICAvLyBkeW5hbWljIGNoaWxkIHZhcmlhbnQuXG4gIGNvbnN0IG11dGFibGVQYXJ0ID0gcGFydCBhcyB1bmtub3duIGFzIEtub3duUm91dGVQYXJ0V2l0aER5bmFtaWNDaGlsZFxuICBtdXRhYmxlUGFydC5keW5hbWljQ2hpbGQgPSBuZXdDaGlsZFxuICBtdXRhYmxlUGFydC5keW5hbWljQ2hpbGRQYXJhbU5hbWUgPSBwYXJhbU5hbWVcbiAgbXV0YWJsZVBhcnQuZHluYW1pY0NoaWxkUGFyYW1UeXBlID0gcGFyYW1UeXBlXG4gIHJldHVybiBuZXdDaGlsZFxufVxuXG4vKipcbiAqIFJlY3Vyc2l2ZSB3b3JraG9yc2UgZm9yIGRpc2NvdmVyS25vd25Sb3V0ZS5cbiAqXG4gKiBXYWxrcyB0aGUgcm91dGUgdHJlZSBhbmQgVVJMIHBhcnRzIGluIHBhcmFsbGVsLCBidWlsZGluZyBvdXQgdGhlIGtub3duXG4gKiByb3V0ZSB0cmVlIGFzIGl0IGdvZXMuIEF0IGVhY2ggc3RlcDpcbiAqIDEuIERldGVybWluZXMgaWYgdGhlIGN1cnJlbnQgc2VnbWVudCBhcHBlYXJzIGluIHRoZSBVUkwgKGR5bmFtaWMvc3RhdGljKVxuICogMi4gVmFsaWRhdGVzIFVSTCBtYXRjaGVzIHJvdXRlIHN0cnVjdHVyZSAoZGV0ZWN0cyByZXdyaXRlcylcbiAqIDMuIENyZWF0ZXMvdXBkYXRlcyB0aGUgY29ycmVzcG9uZGluZyBLbm93blJvdXRlUGFydCBub2RlXG4gKiA0LiBSZWNvcmRzIHN0YXRpYyBzaWJsaW5ncyBmb3IgZnV0dXJlIG1hdGNoaW5nXG4gKiA1LiBSZWN1cnNlcyBpbnRvIGNoaWxkIHNsb3RzIChwYXJhbGxlbCByb3V0ZXMpXG4gKlxuICogSWYgYSBVUkwvcm91dGUgbWlzbWF0Y2ggaXMgZGV0ZWN0ZWQgKHJld3JpdGUpLCB3ZSBzdG9wIGJ1aWxkaW5nIHRoZSBrbm93blxuICogcm91dGUgdHJlZSBidXQgc3RpbGwgY2FjaGUgdGhlIHJvdXRlIGVudHJ5IGZvciBkaXJlY3QgbG9va3VwLlxuICovXG5mdW5jdGlvbiBkaXNjb3Zlcktub3duUm91dGVQYXJ0KFxuICBwYXJlbnRLbm93blJvdXRlUGFydDogS25vd25Sb3V0ZVBhcnQsXG4gIHJvdXRlVHJlZTogUm91dGVUcmVlLFxuICB1cmxQYXJ0OiBzdHJpbmcgfCBudWxsLFxuICByZW1haW5pbmdQYXJ0czogc3RyaW5nW10sXG4gIGV4aXN0aW5nRW50cnk6IEZ1bGZpbGxlZFJvdXRlQ2FjaGVFbnRyeSB8IG51bGwsXG4gIC8vIFRoZXNlIGFyZSBwYXNzZWQgdGhyb3VnaCB1bmNoYW5nZWQgZm9yIGVudHJ5IGNyZWF0aW9uIGF0IHRoZSBsZWFmXG4gIG5vdzogbnVtYmVyLFxuICBwYXRobmFtZTogc3RyaW5nLFxuICBuZXh0VXJsOiBzdHJpbmcgfCBudWxsLFxuICBmdWxsVHJlZTogUm91dGVUcmVlLFxuICBtZXRhZGF0YVZhcnlQYXRoOiBQYWdlVmFyeVBhdGgsXG4gIGNvdWxkQmVJbnRlcmNlcHRlZDogYm9vbGVhbixcbiAgY2Fub25pY2FsVXJsOiBzdHJpbmcsXG4gIHN1cHBvcnRzUGVyU2VnbWVudFByZWZldGNoaW5nOiBib29sZWFuLFxuICBoYXNEeW5hbWljUmV3cml0ZTogYm9vbGVhblxuKTogRnVsZmlsbGVkUm91dGVDYWNoZUVudHJ5IHtcbiAgY29uc3Qgc2VnbWVudCA9IHJvdXRlVHJlZS5zZWdtZW50XG5cbiAgbGV0IHNlZ21lbnRBcHBlYXJzSW5VUkw6IGJvb2xlYW5cbiAgbGV0IHBhcmFtTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgbGV0IHBhcmFtVHlwZTogRHluYW1pY1BhcmFtVHlwZXNTaG9ydCB8IG51bGwgPSBudWxsXG4gIGxldCBzdGF0aWNTaWJsaW5nczogcmVhZG9ubHkgc3RyaW5nW10gfCBudWxsID0gbnVsbFxuXG4gIGlmICh0eXBlb2Ygc2VnbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICBzZWdtZW50QXBwZWFyc0luVVJMID0gZG9lc1N0YXRpY1NlZ21lbnRBcHBlYXJJblVSTChzZWdtZW50KVxuICB9IGVsc2Uge1xuICAgIC8vIER5bmFtaWMgc2VnbWVudCB0dXBsZTogW3BhcmFtTmFtZSwgcGFyYW1DYWNoZUtleSwgcGFyYW1UeXBlLCBzdGF0aWNTaWJsaW5nc11cbiAgICBwYXJhbU5hbWUgPSBzZWdtZW50WzBdXG4gICAgcGFyYW1UeXBlID0gc2VnbWVudFsyXVxuICAgIHN0YXRpY1NpYmxpbmdzID0gc2VnbWVudFszXVxuICAgIHNlZ21lbnRBcHBlYXJzSW5VUkwgPSB0cnVlXG4gIH1cblxuICBsZXQga25vd25Sb3V0ZVBhcnQ6IEtub3duUm91dGVQYXJ0ID0gcGFyZW50S25vd25Sb3V0ZVBhcnRcbiAgbGV0IG5leHRVcmxQYXJ0OiBzdHJpbmcgfCBudWxsID0gdXJsUGFydFxuICBsZXQgbmV4dFJlbWFpbmluZ1BhcnRzOiBzdHJpbmdbXSA9IHJlbWFpbmluZ1BhcnRzXG5cbiAgaWYgKHNlZ21lbnRBcHBlYXJzSW5VUkwpIHtcbiAgICAvLyBDaGVjayBmb3IgbWlzbWF0Y2g6IGlmIHRoaXMgaXMgYSBzdGF0aWMgc2VnbWVudCwgdGhlIFVSTCBwYXJ0IG11c3QgbWF0Y2hcbiAgICBpZiAocGFyYW1OYW1lID09PSBudWxsICYmIHVybFBhcnQgIT09IHNlZ21lbnQpIHtcbiAgICAgIC8vIFVSTCBkb2Vzbid0IG1hdGNoIHJvdXRlIHN0cnVjdHVyZSAobGlrZWx5IGEgcmV3cml0ZSkuXG4gICAgICAvLyBEb24ndCBwb3B1bGF0ZSB0aGUga25vd24gcm91dGUgdHJlZSwganVzdCB3cml0ZSB0aGUgcm91dGUgaW50byB0aGVcbiAgICAgIC8vIGNhY2hlIGFuZCByZXR1cm4gaW1tZWRpYXRlbHkuXG4gICAgICBpZiAoZXhpc3RpbmdFbnRyeSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZXhpc3RpbmdFbnRyeVxuICAgICAgfVxuICAgICAgcmV0dXJuIHdyaXRlUm91dGVJbnRvQ2FjaGUoXG4gICAgICAgIG5vdyxcbiAgICAgICAgcGF0aG5hbWUgYXMgTm9ybWFsaXplZFBhdGhuYW1lLFxuICAgICAgICBuZXh0VXJsLFxuICAgICAgICBmdWxsVHJlZSxcbiAgICAgICAgbWV0YWRhdGFWYXJ5UGF0aCxcbiAgICAgICAgY291bGRCZUludGVyY2VwdGVkLFxuICAgICAgICBjYW5vbmljYWxVcmwsXG4gICAgICAgIHN1cHBvcnRzUGVyU2VnbWVudFByZWZldGNoaW5nXG4gICAgICApXG4gICAgfVxuXG4gICAgLy8gVVJMIG1hdGNoZXMgcm91dGUgc3RydWN0dXJlLiBCdWlsZCB0aGUga25vd24gcm91dGUgdHJlZS5cbiAgICBpZiAocGFyYW1OYW1lICE9PSBudWxsICYmIHBhcmFtVHlwZSAhPT0gbnVsbCkge1xuICAgICAgLy8gRHluYW1pYyBzZWdtZW50XG4gICAgICBrbm93blJvdXRlUGFydCA9IGRpc2NvdmVyRHluYW1pY0NoaWxkKFxuICAgICAgICBwYXJlbnRLbm93blJvdXRlUGFydCxcbiAgICAgICAgcGFyYW1OYW1lLFxuICAgICAgICBwYXJhbVR5cGVcbiAgICAgIClcblxuICAgICAgLy8gUmVjb3JkIHN0YXRpYyBzaWJsaW5ncyBhcyBwbGFjZWhvbGRlciBwYXJ0cy5cbiAgICAgIC8vIElNUE9SVEFOVDogV2UgdXNlIHRoZSBudWxsIHZzIE1hcCBkaXN0aW5jdGlvbiB0byB0cmFjayB3aGV0aGVyXG4gICAgICAvLyBzaWJsaW5ncyBhcmUga25vd24gYXQgdGhpcyBsZXZlbDpcbiAgICAgIC8vIC0gc3RhdGljQ2hpbGRyZW46IG51bGwgPSBzaWJsaW5ncyB1bmtub3duIChjYW4ndCBzYWZlbHkgbWF0Y2ggZHluYW1pYylcbiAgICAgIC8vIC0gc3RhdGljQ2hpbGRyZW46IE1hcCA9IHNpYmxpbmdzIGtub3duIChldmVuIGlmIGVtcHR5KVxuICAgICAgLy8gVGhpcyBtYXR0ZXJzIGluIGRldiBtb2RlIHdoZXJlIHdlYnBhY2sgbWF5IG5vdCBrbm93IGFsbCBzaWJsaW5ncyB5ZXQuXG4gICAgICBpZiAoc3RhdGljU2libGluZ3MgIT09IG51bGwpIHtcbiAgICAgICAgLy8gU2libGluZ3MgYXJlIGtub3duIC0gZW5zdXJlIHdlIGhhdmUgYSBNYXAgKGV2ZW4gaWYgZW1wdHkpXG4gICAgICAgIGlmIChwYXJlbnRLbm93blJvdXRlUGFydC5zdGF0aWNDaGlsZHJlbiA9PT0gbnVsbCkge1xuICAgICAgICAgIHBhcmVudEtub3duUm91dGVQYXJ0LnN0YXRpY0NoaWxkcmVuID0gbmV3IE1hcCgpXG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBzaWJsaW5nIG9mIHN0YXRpY1NpYmxpbmdzKSB7XG4gICAgICAgICAgaWYgKCFwYXJlbnRLbm93blJvdXRlUGFydC5zdGF0aWNDaGlsZHJlbi5oYXMoc2libGluZykpIHtcbiAgICAgICAgICAgIHBhcmVudEtub3duUm91dGVQYXJ0LnN0YXRpY0NoaWxkcmVuLnNldChzaWJsaW5nLCBjcmVhdGVFbXB0eVBhcnQoKSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU3RhdGljIHNlZ21lbnRcbiAgICAgIGlmIChwYXJlbnRLbm93blJvdXRlUGFydC5zdGF0aWNDaGlsZHJlbiA9PT0gbnVsbCkge1xuICAgICAgICBwYXJlbnRLbm93blJvdXRlUGFydC5zdGF0aWNDaGlsZHJlbiA9IG5ldyBNYXAoKVxuICAgICAgfVxuICAgICAgbGV0IGV4aXN0aW5nQ2hpbGQgPSBwYXJlbnRLbm93blJvdXRlUGFydC5zdGF0aWNDaGlsZHJlbi5nZXQodXJsUGFydCEpXG4gICAgICBpZiAoZXhpc3RpbmdDaGlsZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4aXN0aW5nQ2hpbGQgPSBjcmVhdGVFbXB0eVBhcnQoKVxuICAgICAgICBwYXJlbnRLbm93blJvdXRlUGFydC5zdGF0aWNDaGlsZHJlbi5zZXQodXJsUGFydCEsIGV4aXN0aW5nQ2hpbGQpXG4gICAgICB9XG4gICAgICBrbm93blJvdXRlUGFydCA9IGV4aXN0aW5nQ2hpbGRcbiAgICB9XG5cbiAgICAvLyBBZHZhbmNlIHRvIG5leHQgVVJMIHBhcnRcbiAgICBuZXh0VXJsUGFydCA9IHJlbWFpbmluZ1BhcnRzLmxlbmd0aCA+IDAgPyByZW1haW5pbmdQYXJ0c1swXSA6IG51bGxcbiAgICBuZXh0UmVtYWluaW5nUGFydHMgPVxuICAgICAgcmVtYWluaW5nUGFydHMubGVuZ3RoID4gMCA/IHJlbWFpbmluZ1BhcnRzLnNsaWNlKDEpIDogW11cbiAgfVxuICAvLyBlbHNlOiBUcmFuc3BhcmVudCBzZWdtZW50IChyb3V0ZSBncm91cCwgX19QQUdFX18sIGV0Yy4pXG4gIC8vIFN0YXkgYXQgdGhlIHNhbWUga25vd24gcm91dGUgcGFydCwgZG9uJ3QgYWR2YW5jZSBVUkwgcGFydHNcblxuICAvLyBSZWN1cnNlIGludG8gY2hpbGQgcm91dGVzLiBBIHJvdXRlIHRyZWUgY2FuIGhhdmUgbXVsdGlwbGUgcGFyYWxsZWwgcm91dGVzXG4gIC8vIChlLmcuLCBAbW9kYWwgYWxvbmdzaWRlIGNoaWxkcmVuKS4gRWFjaCBwYXJhbGxlbCByb3V0ZSBpcyBhIHNlcGFyYXRlXG4gIC8vIGJyYW5jaCwgYnV0IHRoZXkgYWxsIHNoYXJlIHRoZSBzYW1lIFVSTCAtIHdlIGp1c3QgbmVlZCB0byB0cmF2ZXJzZSBhbGxcbiAgLy8gYnJhbmNoZXMgdG8gYnVpbGQgb3V0IHRoZSBrbm93biByb3V0ZSB0cmVlLlxuICBjb25zdCBzbG90cyA9IHJvdXRlVHJlZS5zbG90c1xuICBsZXQgcmVzdWx0RnJvbUNoaWxkcmVuOiBGdWxmaWxsZWRSb3V0ZUNhY2hlRW50cnkgfCBudWxsID0gbnVsbFxuICBpZiAoc2xvdHMgIT09IG51bGwpIHtcbiAgICBmb3IgKGNvbnN0IHBhcmFsbGVsUm91dGVLZXkgaW4gc2xvdHMpIHtcbiAgICAgIGNvbnN0IGNoaWxkUm91dGVUcmVlID0gc2xvdHNbcGFyYWxsZWxSb3V0ZUtleV1cbiAgICAgIC8vIFNraXAgYnJhbmNoZXMgd2l0aCByZWZyZXNoU3RhdGUgc2V0IC0gdGhlc2Ugd2VyZSByZXVzZWQgZnJvbSBhXG4gICAgICAvLyBkaWZmZXJlbnQgcm91dGUgKGUuZy4sIGEgXCJkZWZhdWx0XCIgcGFyYWxsZWwgc2xvdCkgYW5kIGRvbid0IHJlcHJlc2VudFxuICAgICAgLy8gdGhlIGFjdHVhbCByb3V0ZSBzdHJ1Y3R1cmUgZm9yIHRoaXMgVVJMLlxuICAgICAgaWYgKGNoaWxkUm91dGVUcmVlLnJlZnJlc2hTdGF0ZSAhPT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0ID0gZGlzY292ZXJLbm93blJvdXRlUGFydChcbiAgICAgICAga25vd25Sb3V0ZVBhcnQsXG4gICAgICAgIGNoaWxkUm91dGVUcmVlLFxuICAgICAgICBuZXh0VXJsUGFydCxcbiAgICAgICAgbmV4dFJlbWFpbmluZ1BhcnRzLFxuICAgICAgICBleGlzdGluZ0VudHJ5LFxuICAgICAgICBub3csXG4gICAgICAgIHBhdGhuYW1lLFxuICAgICAgICBuZXh0VXJsLFxuICAgICAgICBmdWxsVHJlZSxcbiAgICAgICAgbWV0YWRhdGFWYXJ5UGF0aCxcbiAgICAgICAgY291bGRCZUludGVyY2VwdGVkLFxuICAgICAgICBjYW5vbmljYWxVcmwsXG4gICAgICAgIHN1cHBvcnRzUGVyU2VnbWVudFByZWZldGNoaW5nLFxuICAgICAgICBoYXNEeW5hbWljUmV3cml0ZVxuICAgICAgKVxuICAgICAgLy8gQWxsIHBhcmFsbGVsIHJvdXRlIGJyYW5jaGVzIHNoYXJlIHRoZSBzYW1lIFVSTCwgc28gdGhleSBzaG91bGQgYWxsXG4gICAgICAvLyByZWFjaCBjb21wYXRpYmxlIGxlYWYgbm9kZXMuIFdlIGNhcHR1cmUgYW55IHJlc3VsdC5cbiAgICAgIHJlc3VsdEZyb21DaGlsZHJlbiA9IHJlc3VsdFxuICAgIH1cbiAgICBpZiAocmVzdWx0RnJvbUNoaWxkcmVuICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gcmVzdWx0RnJvbUNoaWxkcmVuXG4gICAgfVxuICAgIC8vIERlZmVuc2l2ZSBmYWxsYmFjazogbm8gY2hpbGRyZW4gcmV0dXJuZWQgYSByZXN1bHQuIFRoaXMgc2hvdWxkbid0IGhhcHBlblxuICAgIC8vIGZvciB2YWxpZCByb3V0ZSB0cmVlcywgYnV0IGhhbmRsZSBpdCBncmFjZWZ1bGx5LlxuICAgIGlmIChleGlzdGluZ0VudHJ5ICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gZXhpc3RpbmdFbnRyeVxuICAgIH1cbiAgICByZXR1cm4gd3JpdGVSb3V0ZUludG9DYWNoZShcbiAgICAgIG5vdyxcbiAgICAgIHBhdGhuYW1lIGFzIE5vcm1hbGl6ZWRQYXRobmFtZSxcbiAgICAgIG5leHRVcmwsXG4gICAgICBmdWxsVHJlZSxcbiAgICAgIG1ldGFkYXRhVmFyeVBhdGgsXG4gICAgICBjb3VsZEJlSW50ZXJjZXB0ZWQsXG4gICAgICBjYW5vbmljYWxVcmwsXG4gICAgICBzdXBwb3J0c1BlclNlZ21lbnRQcmVmZXRjaGluZ1xuICAgIClcbiAgfVxuXG4gIC8vIFJlYWNoZWQgYSBwYWdlIG5vZGUuIENyZWF0ZS9nZXQgdGhlIHJvdXRlIGNhY2hlIGVudHJ5IGFuZCBzdG9yZSBhcyBhXG4gIC8vIHBhdHRlcm4uIEZpcnN0LCBjaGVjayBpZiB0aGVyZSdzIGFscmVhZHkgYSBwYXR0ZXJuIGZvciB0aGlzIHJvdXRlLlxuICBpZiAoa25vd25Sb3V0ZVBhcnQucGF0dGVybiAhPT0gbnVsbCkge1xuICAgIC8vIElmIHRoaXMgcm91dGUgaGFzIGEgZHluYW1pYyByZXdyaXRlLCBtYXJrIHRoZSBleGlzdGluZyBwYXR0ZXJuLlxuICAgIGlmIChoYXNEeW5hbWljUmV3cml0ZSkge1xuICAgICAga25vd25Sb3V0ZVBhcnQucGF0dGVybi5oYXNEeW5hbWljUmV3cml0ZSA9IHRydWVcbiAgICB9XG4gICAgcmV0dXJuIGtub3duUm91dGVQYXJ0LnBhdHRlcm5cbiAgfVxuXG4gIC8vIEdldCBvciBjcmVhdGUgdGhlIGVudHJ5XG4gIGxldCBlbnRyeTogRnVsZmlsbGVkUm91dGVDYWNoZUVudHJ5XG4gIGlmIChleGlzdGluZ0VudHJ5ICE9PSBudWxsKSB7XG4gICAgLy8gQWxyZWFkeSBoYXZlIGEgZnVsZmlsbGVkIGVudHJ5LCB1c2UgaXQgZGlyZWN0bHkuIEl0J3MgYWxyZWFkeSBpbiB0aGVcbiAgICAvLyByb3V0ZSBjYWNoZSBtYXAuXG4gICAgZW50cnkgPSBleGlzdGluZ0VudHJ5XG4gIH0gZWxzZSB7XG4gICAgLy8gQ3JlYXRlIHRoZSBlbnRyeSBhbmQgaW5zZXJ0IGl0IGludG8gdGhlIHJvdXRlIGNhY2hlIG1hcC5cbiAgICBlbnRyeSA9IHdyaXRlUm91dGVJbnRvQ2FjaGUoXG4gICAgICBub3csXG4gICAgICBwYXRobmFtZSBhcyBOb3JtYWxpemVkUGF0aG5hbWUsXG4gICAgICBuZXh0VXJsLFxuICAgICAgZnVsbFRyZWUsXG4gICAgICBtZXRhZGF0YVZhcnlQYXRoLFxuICAgICAgY291bGRCZUludGVyY2VwdGVkLFxuICAgICAgY2Fub25pY2FsVXJsLFxuICAgICAgc3VwcG9ydHNQZXJTZWdtZW50UHJlZmV0Y2hpbmdcbiAgICApXG4gIH1cblxuICBpZiAoaGFzRHluYW1pY1Jld3JpdGUpIHtcbiAgICBlbnRyeS5oYXNEeW5hbWljUmV3cml0ZSA9IHRydWVcbiAgfVxuXG4gIC8vIFN0b3JlIGFzIHBhdHRlcm5cbiAga25vd25Sb3V0ZVBhcnQucGF0dGVybiA9IGVudHJ5XG4gIHJldHVybiBlbnRyeVxufVxuXG4vKipcbiAqIEF0dGVtcHRzIHRvIG1hdGNoIGEgVVJMIGFnYWluc3QgbGVhcm5lZCByb3V0ZSBwYXR0ZXJucy5cbiAqXG4gKiBSZXR1cm5zIGEgc3ludGhldGljIEZ1bGZpbGxlZFJvdXRlQ2FjaGVFbnRyeSBpZiB0aGUgVVJMIG1hdGNoZXMgYSBrbm93blxuICogcGF0dGVybiwgb3IgbnVsbCBpZiBubyBtYXRjaCBpcyBmb3VuZCAoZmFsbCBiYWNrIHRvIHNlcnZlciByZXNvbHV0aW9uKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoS25vd25Sb3V0ZShcbiAgcGF0aG5hbWU6IHN0cmluZyxcbiAgc2VhcmNoOiBOb3JtYWxpemVkU2VhcmNoXG4pOiBGdWxmaWxsZWRSb3V0ZUNhY2hlRW50cnkgfCBudWxsIHtcbiAgY29uc3QgcGF0aG5hbWVQYXJ0cyA9IHBhdGhuYW1lLnNwbGl0KCcvJykuZmlsdGVyKChwKSA9PiBwICE9PSAnJylcbiAgY29uc3QgcmVzb2x2ZWRQYXJhbXM6IFJlc29sdmVkUGFyYW1zID0gbmV3IE1hcCgpXG4gIGNvbnN0IG1hdGNoID0gbWF0Y2hLbm93blJvdXRlUGFydChcbiAgICBrbm93blJvdXRlVHJlZVJvb3QsXG4gICAgcGF0aG5hbWVQYXJ0cyxcbiAgICAwLFxuICAgIHJlc29sdmVkUGFyYW1zXG4gIClcblxuICBpZiAobWF0Y2ggPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgY29uc3QgbWF0Y2hlZFBhcnQgPSBtYXRjaC5wYXJ0XG4gIGNvbnN0IHBhdHRlcm4gPSBtYXRjaC5wYXR0ZXJuXG5cbiAgLy8gSWYgdGhlIHBhdHRlcm4gY291bGQgYmUgaW50ZXJjZXB0ZWQsIHdlIGNhbid0IHNhZmVseSB1c2UgaXQgZm9yIHByZWRpY3Rpb24uXG4gIC8vIEludGVyY2VwdGlvbiByb3V0ZXMgcmVzb2x2ZSB0byBkaWZmZXJlbnQgcm91dGUgdHJlZXMgZGVwZW5kaW5nIG9uIHRoZVxuICAvLyByZWZlcnJlciAodGhlIE5leHQtVXJsIGhlYWRlciksIHdoaWNoIG1lYW5zIHRoZSBzYW1lIFVSTCBjYW4gbWFwIHRvXG4gIC8vIGRpZmZlcmVudCBwYWdlIGNvbXBvbmVudHMgZGVwZW5kaW5nIG9uIHdoZXJlIHRoZSBuYXZpZ2F0aW9uIG9yaWdpbmF0ZWQuXG4gIC8vIFNpbmNlIHRoZSBrbm93biByb3V0ZSB0cmVlIG9ubHkgc3RvcmVzIGEgc2luZ2xlIHBhdHRlcm4gcGVyIFVSTCBzaGFwZSwgd2VcbiAgLy8gY2FuJ3QgZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgaW50ZXJjZXB0ZWQgYW5kIG5vbi1pbnRlcmNlcHRlZCBjYXNlcywgc28gd2VcbiAgLy8gYmFpbCBvdXQgdG8gc2VydmVyIHJlc29sdXRpb24uXG4gIC8vXG4gIC8vIFRPRE86IFdlIGNvdWxkIHN0b3JlIGludGVyY2VwdGlvbiBiZWhhdmlvciBpbiB0aGUga25vd24gcm91dGUgdHJlZSBpdHNlbGZcbiAgLy8gKGUuZy4sIHdoaWNoIHNlZ21lbnRzIHVzZSBpbnRlcmNlcHRpb24gbWFya2VycyBhbmQgd2hhdCB0aGV5IHJlc29sdmUgdG8pLlxuICAvLyBXaXRoIGVub3VnaCBpbmZvcm1hdGlvbiBlbWJlZGRlZCBpbiB0aGUgdHJpZSwgd2UgY291bGQgbWF0Y2ggaW50ZXJjZXB0aW9uXG4gIC8vIHJvdXRlcyBlbnRpcmVseSBvbiB0aGUgY2xpZW50IHdpdGhvdXQgYSBzZXJ2ZXIgcm91bmQtdHJpcC5cbiAgaWYgKHBhdHRlcm4uY291bGRCZUludGVyY2VwdGVkKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8vIFwiUmVpZnlcIiB0aGUgcGF0dGVybjogY2xvbmUgdGhlIHRlbXBsYXRlIHRyZWUgd2l0aCBjb25jcmV0ZSBwYXJhbSB2YWx1ZXMuXG4gIC8vIFRoaXMgc3Vic3RpdHV0ZXMgcmVzb2x2ZWQgcGFyYW1zIChlLmcuLCBzbHVnOiBcImhlbGxvXCIpIGludG8gZHluYW1pY1xuICAvLyBzZWdtZW50cyBhbmQgcmVjb21wdXRlcyB2YXJ5IHBhdGhzIGZvciBjb3JyZWN0IHNlZ21lbnQgY2FjaGUga2V5aW5nLlxuICBjb25zdCBhY2M6IFJlaWZ5QWNjdW11bGF0b3IgPSB7IG1ldGFkYXRhVmFyeVBhdGg6IG51bGwgfVxuICBjb25zdCByZWlmaWVkVHJlZSA9IHJlaWZ5Um91dGVUcmVlKFxuICAgIHBhdHRlcm4udHJlZSxcbiAgICByZXNvbHZlZFBhcmFtcyxcbiAgICBzZWFyY2gsXG4gICAgbnVsbCwgLy8gU3RhcnQgd2l0aCBudWxsIHBhcnRpYWwgdmFyeSBwYXRoIGF0IHRoZSByb290XG4gICAgYWNjXG4gIClcblxuICAvLyBUaGUgbWV0YWRhdGEgdHJlZSBpcyBhIGZsYXQgcGFnZSBub2RlIHdpdGhvdXQgdGhlIGludGVybWVkaWF0ZSBsYXlvdXRcbiAgLy8gc3RydWN0dXJlLiBDbG9uZSBpdCB3aXRoIHRoZSB1cGRhdGVkIG1ldGFkYXRhIHZhcnkgcGF0aCBjb2xsZWN0ZWQgZHVyaW5nXG4gIC8vIHRoZSBtYWluIHRyZWUgdHJhdmVyc2FsLlxuICBjb25zdCBtZXRhZGF0YVZhcnlQYXRoID0gYWNjLm1ldGFkYXRhVmFyeVBhdGhcbiAgaWYgKG1ldGFkYXRhVmFyeVBhdGggPT09IG51bGwpIHtcbiAgICAvLyBUaGlzIHNob3VsZG4ndCBiZSByZWFjaGFibGUgZm9yIGEgdmFsaWQgcm91dGUgdHJlZS5cbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IHJlaWZpZWRNZXRhZGF0YSA9IGNyZWF0ZU1ldGFkYXRhUm91dGVUcmVlKG1ldGFkYXRhVmFyeVBhdGgpXG5cbiAgLy8gQ3JlYXRlIGEgc3ludGhldGljIChwcmVkaWN0ZWQpIGVudHJ5IGFuZCBzdG9yZSBpdCBhcyB0aGUgbmV3IHBhdHRlcm4uXG4gIC8vXG4gIC8vIFdoeSByZXBsYWNlIHRoZSBwYXR0ZXJuPyBXZSBpbnRlbnRpb25hbGx5IHVwZGF0ZSB0aGUgcGF0dGVybiB3aXRoIHRoaXNcbiAgLy8gc3ludGhldGljIGVudHJ5IHNvIHRoYXQgaWYgb3VyIHByZWRpY3Rpb24gd2FzIHdyb25nIChzZXJ2ZXIgcmV0dXJucyBhXG4gIC8vIGRpZmZlcmVudCBwYXRobmFtZSBkdWUgdG8gZHluYW1pYyByZXdyaXRlKSwgdGhlIGVudHJ5IGdldHMgbWFya2VkIHdpdGhcbiAgLy8gaGFzRHluYW1pY1Jld3JpdGUuIEZ1dHVyZSBwcmVkaWN0aW9ucyBmb3IgdGhpcyByb3V0ZSB3aWxsIHNlZSB0aGUgZmxhZ1xuICAvLyBhbmQgYmFpbCBvdXQgdG8gc2VydmVyIHJlc29sdXRpb24gaW5zdGVhZCBvZiBtYWtpbmcgdGhlIHNhbWUgbWlzdGFrZS5cbiAgY29uc3Qgc3ludGhldGljRW50cnk6IEZ1bGZpbGxlZFJvdXRlQ2FjaGVFbnRyeSA9IHtcbiAgICBjYW5vbmljYWxVcmw6IHBhdGhuYW1lICsgc2VhcmNoLFxuICAgIHN0YXR1czogRW50cnlTdGF0dXMuRnVsZmlsbGVkLFxuICAgIGJsb2NrZWRUYXNrczogbnVsbCxcbiAgICB0cmVlOiByZWlmaWVkVHJlZSxcbiAgICBtZXRhZGF0YTogcmVpZmllZE1ldGFkYXRhLFxuICAgIGNvdWxkQmVJbnRlcmNlcHRlZDogcGF0dGVybi5jb3VsZEJlSW50ZXJjZXB0ZWQsXG4gICAgc3VwcG9ydHNQZXJTZWdtZW50UHJlZmV0Y2hpbmc6IHBhdHRlcm4uc3VwcG9ydHNQZXJTZWdtZW50UHJlZmV0Y2hpbmcsXG4gICAgaGFzRHluYW1pY1Jld3JpdGU6IGZhbHNlLFxuICAgIHJlbmRlcmVkU2VhcmNoOiBzZWFyY2gsXG4gICAgcmVmOiBudWxsLFxuICAgIHNpemU6IHBhdHRlcm4uc2l6ZSxcbiAgICBzdGFsZUF0OiBwYXR0ZXJuLnN0YWxlQXQsXG4gICAgdmVyc2lvbjogcGF0dGVybi52ZXJzaW9uLFxuICB9XG5cbiAgbWF0Y2hlZFBhcnQucGF0dGVybiA9IHN5bnRoZXRpY0VudHJ5XG5cbiAgcmV0dXJuIHN5bnRoZXRpY0VudHJ5XG59XG5cbi8qKlxuICogUmVzdWx0IG9mIGEgc3VjY2Vzc2Z1bCBtYXRjaDogdGhlIG1hdGNoZWQgdHJlZSBub2RlIGFuZCBpdHMgcGF0dGVybi5cbiAqIFdlIHJldHVybiBib3RoIGJlY2F1c2UgdGhlIGNhbGxlciBuZWVkcyB0byB1cGRhdGUgdGhlIHBhdHRlcm4gYWZ0ZXJcbiAqIGNyZWF0aW5nIGEgc3ludGhldGljIGVudHJ5IChmb3IgZHluYW1pYyByZXdyaXRlIGRldGVjdGlvbikuXG4gKi9cbnR5cGUgS25vd25Sb3V0ZU1hdGNoID0ge1xuICBwYXJ0OiBLbm93blJvdXRlUGFydFxuICBwYXR0ZXJuOiBGdWxmaWxsZWRSb3V0ZUNhY2hlRW50cnlcbn0gfCBudWxsXG5cbi8qKlxuICogUmVjdXJzaXZlbHkgbWF0Y2hlcyBhIFVSTCBhZ2FpbnN0IHRoZSBrbm93biByb3V0ZSB0cmVlLlxuICpcbiAqIE1hdGNoaW5nIHByaW9yaXR5IChtb3N0IHNwZWNpZmljIGZpcnN0KTpcbiAqIDEuIFN0YXRpYyBjaGlsZHJlbiAtIGV4YWN0IHBhdGggc2VnbWVudCBtYXRjaFxuICogMi4gRHluYW1pYyBjaGlsZCAtIFtwYXJhbV0sIFsuLi5wYXJhbV0sIFtbLi4ucGFyYW1dXVxuICogMy4gRGlyZWN0IHBhdHRlcm4gLSB3aGVuIG5vIG1vcmUgVVJMIHBhcnRzIHJlbWFpblxuICpcbiAqIENvbGxlY3RzIHJlc29sdmVkIHBhcmFtIHZhbHVlcyBpbiByZXNvbHZlZFBhcmFtcyBhcyBpdCB0cmF2ZXJzZXMuXG4gKiBSZXR1cm5zIG51bGwgaWYgbm8gbWF0Y2ggZm91bmQgKGNhbGxlciBzaG91bGQgZmFsbCBiYWNrIHRvIHNlcnZlcikuXG4gKi9cbmZ1bmN0aW9uIG1hdGNoS25vd25Sb3V0ZVBhcnQoXG4gIHBhcnQ6IEtub3duUm91dGVQYXJ0LFxuICBwYXRobmFtZVBhcnRzOiBzdHJpbmdbXSxcbiAgcGFydEluZGV4OiBudW1iZXIsXG4gIHJlc29sdmVkUGFyYW1zOiBSZXNvbHZlZFBhcmFtc1xuKTogS25vd25Sb3V0ZU1hdGNoIHtcbiAgY29uc3QgdXJsUGFydCA9XG4gICAgcGFydEluZGV4IDwgcGF0aG5hbWVQYXJ0cy5sZW5ndGggPyBwYXRobmFtZVBhcnRzW3BhcnRJbmRleF0gOiBudWxsXG5cbiAgLy8gSWYgc3RhdGljQ2hpbGRyZW4gaXMgbnVsbCwgd2UgZG9uJ3Qga25vdyB3aGF0IHN0YXRpYyByb3V0ZXMgZXhpc3QgYXQgdGhpc1xuICAvLyBsZXZlbC4gVGhpcyBoYXBwZW5zIGluIHdlYnBhY2sgZGV2IG1vZGUgd2hlcmUgcm91dGVzIGFyZSBjb21waWxlZFxuICAvLyBvbi1kZW1hbmQuIFdlIGNhbid0IHNhZmVseSBtYXRjaCBhIGR5bmFtaWNDaGlsZCBiZWNhdXNlIHRoZSBVUkwgcGFydCBtaWdodFxuICAvLyBiZSBhIHN0YXRpYyBzaWJsaW5nIHdlIGhhdmVuJ3QgZGlzY292ZXJlZCB5ZXQuIEV4YW1wbGU6IFdlIGtub3dcbiAgLy8gL2Jsb2cvW3NsdWddIGV4aXN0cywgYnV0IGhhdmVuJ3QgY29tcGlsZWQgL2Jsb2cvZmVhdHVyZWQuIEEgcmVxdWVzdCBmb3JcbiAgLy8gL2Jsb2cvZmVhdHVyZWQgd291bGQgaW5jb3JyZWN0bHkgbWF0Y2ggL2Jsb2cvW3NsdWddLlxuICBpZiAocGFydC5zdGF0aWNDaGlsZHJlbiA9PT0gbnVsbCkge1xuICAgIC8vIFRoZSBvbmx5IHNhZmUgbWF0Y2ggaXMgYSBkaXJlY3QgcGF0dGVybiB3aGVuIG5vIFVSTCBwYXJ0cyByZW1haW4uXG4gICAgaWYgKHVybFBhcnQgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHBhdHRlcm4gPSBwYXJ0LnBhdHRlcm5cbiAgICAgIGlmIChwYXR0ZXJuICE9PSBudWxsICYmICFwYXR0ZXJuLmhhc0R5bmFtaWNSZXdyaXRlKSB7XG4gICAgICAgIHJldHVybiB7IHBhcnQsIHBhdHRlcm4gfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLy8gU3RhdGljIGNoaWxkcmVuIHRha2UgcHJpb3JpdHkgb3ZlciBkeW5hbWljLiBUaGlzIGVuc3VyZXMgL2Jsb2cvZmVhdHVyZWRcbiAgLy8gbWF0Y2hlcyBpdHMgb3duIHJvdXRlIHJhdGhlciB0aGFuIC9ibG9nL1tzbHVnXS5cbiAgaWYgKHVybFBhcnQgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0aWNDaGlsZCA9IHBhcnQuc3RhdGljQ2hpbGRyZW4uZ2V0KHVybFBhcnQpXG4gICAgaWYgKHN0YXRpY0NoaWxkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYW4gXCJ1bmtub3duXCIgcGxhY2Vob2xkZXIgcGFydC4gVGhlc2UgYXJlIGNyZWF0ZWQgd2hlblxuICAgICAgLy8gd2UgbGVhcm4gYWJvdXQgc3RhdGljIHNpYmxpbmdzIChmcm9tIHRoZSByb3V0ZSB0cmVlJ3Mgc3RhdGljU2libGluZ3NcbiAgICAgIC8vIGZpZWxkKSBidXQgaGF2ZW4ndCBwcmVmZXRjaGVkIHRoZW0geWV0LiBXZSBrbm93IHRoZSBwYXRoIGV4aXN0cyBidXRcbiAgICAgIC8vIGRvbid0IGtub3cgaXRzIHN0cnVjdHVyZSwgc28gd2UgY2FuJ3QgcHJlZGljdCBpdC5cbiAgICAgIGlmIChcbiAgICAgICAgc3RhdGljQ2hpbGQucGF0dGVybiA9PT0gbnVsbCAmJlxuICAgICAgICBzdGF0aWNDaGlsZC5keW5hbWljQ2hpbGQgPT09IG51bGwgJiZcbiAgICAgICAgc3RhdGljQ2hpbGQuc3RhdGljQ2hpbGRyZW4gPT09IG51bGxcbiAgICAgICkge1xuICAgICAgICAvLyBCYWlsIG91dCAtIHNlcnZlciBtdXN0IHJlc29sdmUgdGhpcyByb3V0ZS5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1hdGNoID0gbWF0Y2hLbm93blJvdXRlUGFydChcbiAgICAgICAgc3RhdGljQ2hpbGQsXG4gICAgICAgIHBhdGhuYW1lUGFydHMsXG4gICAgICAgIHBhcnRJbmRleCArIDEsXG4gICAgICAgIHJlc29sdmVkUGFyYW1zXG4gICAgICApXG4gICAgICBpZiAobWF0Y2ggIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG1hdGNoXG4gICAgICB9XG4gICAgICAvLyBTdGF0aWMgY2hpbGQgaXMgYSByZWFsIG5vZGUgKG5vdCBhIHBsYWNlaG9sZGVyKSBidXQgaXRzIHN1YnRyZWVcbiAgICAgIC8vIGRpZG4ndCBtYXRjaCB0aGUgcmVtYWluaW5nIFVSTCBwYXJ0cy4gVGhpcyBtZWFucyB0aGUgcm91dGUgZXhpc3RzXG4gICAgICAvLyBpbiB0aGUgc3RhdGljIHN1YnRyZWUgYnV0IGhhc24ndCBiZWVuIGZ1bGx5IGRpc2NvdmVyZWQgeWV0LiBEbyBub3RcbiAgICAgIC8vIGZhbGwgdGhyb3VnaCB0byB0cnkgdGhlIGR5bmFtaWMgY2hpbGQg4oCUIHRoZSBzdGF0aWMgbWF0Y2ggaXNcbiAgICAgIC8vIGF1dGhvcml0YXRpdmUuIEJhaWwgb3V0IHRvIHNlcnZlciByZXNvbHV0aW9uLlxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gIH1cblxuICAvLyBUcnkgZHluYW1pYyBjaGlsZFxuICBpZiAocGFydC5keW5hbWljQ2hpbGQgIT09IG51bGwpIHtcbiAgICBjb25zdCBkeW5hbWljUGFydCA9IHBhcnQuZHluYW1pY0NoaWxkXG4gICAgY29uc3QgcGFyYW1OYW1lID0gcGFydC5keW5hbWljQ2hpbGRQYXJhbU5hbWVcbiAgICBjb25zdCBwYXJhbVR5cGUgPSBwYXJ0LmR5bmFtaWNDaGlsZFBhcmFtVHlwZVxuICAgIGNvbnN0IGR5bmFtaWNQYXR0ZXJuID0gZHluYW1pY1BhcnQucGF0dGVyblxuXG4gICAgc3dpdGNoIChwYXJhbVR5cGUpIHtcbiAgICAgIGNhc2UgJ2MnOlxuICAgICAgICAvLyBSZXF1aXJlZCBjYXRjaC1hbGwgWy4uLnBhcmFtXTogY29uc3VtZXMgMSsgVVJMIHBhcnRzXG4gICAgICAgIGlmIChcbiAgICAgICAgICBkeW5hbWljUGF0dGVybiAhPT0gbnVsbCAmJlxuICAgICAgICAgICFkeW5hbWljUGF0dGVybi5oYXNEeW5hbWljUmV3cml0ZSAmJlxuICAgICAgICAgIHVybFBhcnQgIT09IG51bGxcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmVzb2x2ZWRQYXJhbXMuc2V0KHBhcmFtTmFtZSwgcGF0aG5hbWVQYXJ0cy5zbGljZShwYXJ0SW5kZXgpKVxuICAgICAgICAgIHJldHVybiB7IHBhcnQ6IGR5bmFtaWNQYXJ0LCBwYXR0ZXJuOiBkeW5hbWljUGF0dGVybiB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ29jJzpcbiAgICAgICAgLy8gT3B0aW9uYWwgY2F0Y2gtYWxsIFtbLi4ucGFyYW1dXTogY29uc3VtZXMgMCsgVVJMIHBhcnRzXG4gICAgICAgIGlmIChkeW5hbWljUGF0dGVybiAhPT0gbnVsbCAmJiAhZHluYW1pY1BhdHRlcm4uaGFzRHluYW1pY1Jld3JpdGUpIHtcbiAgICAgICAgICBpZiAodXJsUGFydCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmVzb2x2ZWRQYXJhbXMuc2V0KHBhcmFtTmFtZSwgcGF0aG5hbWVQYXJ0cy5zbGljZShwYXJ0SW5kZXgpKVxuICAgICAgICAgICAgcmV0dXJuIHsgcGFydDogZHluYW1pY1BhcnQsIHBhdHRlcm46IGR5bmFtaWNQYXR0ZXJuIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gdXJsUGFydCBpcyBudWxsIC0gY2FuIG1hdGNoIHdpdGggemVybyBwYXJ0cywgYnV0IGEgZGlyZWN0IHBhdHRlcm5cbiAgICAgICAgICAvLyAoZS5nLiwgcGFnZS50c3ggYWxvbmdzaWRlIFtbLi4ucGFyYW1dXSkgdGFrZXMgcHJlY2VkZW5jZS5cbiAgICAgICAgICBpZiAocGFydC5wYXR0ZXJuID09PSBudWxsIHx8IHBhcnQucGF0dGVybi5oYXNEeW5hbWljUmV3cml0ZSkge1xuICAgICAgICAgICAgcmVzb2x2ZWRQYXJhbXMuc2V0KHBhcmFtTmFtZSwgW10pXG4gICAgICAgICAgICByZXR1cm4geyBwYXJ0OiBkeW5hbWljUGFydCwgcGF0dGVybjogZHluYW1pY1BhdHRlcm4gfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnZCc6XG4gICAgICAgIC8vIFJlZ3VsYXIgZHluYW1pYyBbcGFyYW1dOiBjb25zdW1lcyBleGFjdGx5IDEgVVJMIHBhcnQuXG4gICAgICAgIC8vIFVubGlrZSBjYXRjaC1hbGwgd2hpY2ggdGVybWluYXRlcyBoZXJlLCByZWd1bGFyIGR5bmFtaWMgbXVzdFxuICAgICAgICAvLyBjb250aW51ZSByZWN1cnNpbmcgdG8gZmluZCB0aGUgbGVhZiBwYXR0ZXJuLlxuICAgICAgICBpZiAodXJsUGFydCAhPT0gbnVsbCkge1xuICAgICAgICAgIHJlc29sdmVkUGFyYW1zLnNldChwYXJhbU5hbWUsIHVybFBhcnQpXG4gICAgICAgICAgcmV0dXJuIG1hdGNoS25vd25Sb3V0ZVBhcnQoXG4gICAgICAgICAgICBkeW5hbWljUGFydCxcbiAgICAgICAgICAgIHBhdGhuYW1lUGFydHMsXG4gICAgICAgICAgICBwYXJ0SW5kZXggKyAxLFxuICAgICAgICAgICAgcmVzb2x2ZWRQYXJhbXNcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIC8vIEludGVyY2VwdGVkIHJvdXRlcyB1c2UgcmVsYXRpdmUgcGF0aCBtYXJrZXJzIGxpa2UgKC4pLCAoLi4pLCAoLi4uKVxuICAgICAgLy8gVGhlaXIgYmVoYXZpb3IgZGVwZW5kcyBvbiBuYXZpZ2F0aW9uIGNvbnRleHQgKHNvZnQgdnMgaGFyZCBuYXYpLFxuICAgICAgLy8gc28gd2UgY2FuJ3QgcHJlZGljdCB0aGVtIGNsaWVudC1zaWRlLiBEZWZlciB0byBzZXJ2ZXIuXG4gICAgICBjYXNlICdjaSguLikoLi4pJzpcbiAgICAgIGNhc2UgJ2NpKC4pJzpcbiAgICAgIGNhc2UgJ2NpKC4uKSc6XG4gICAgICBjYXNlICdjaSguLi4pJzpcbiAgICAgIGNhc2UgJ2RpKC4uKSguLiknOlxuICAgICAgY2FzZSAnZGkoLiknOlxuICAgICAgY2FzZSAnZGkoLi4pJzpcbiAgICAgIGNhc2UgJ2RpKC4uLiknOlxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcGFyYW1UeXBlIHNhdGlzZmllcyBuZXZlclxuICAgIH1cbiAgfVxuXG4gIC8vIE5vIGNoaWxkcmVuIG1hdGNoZWQuIElmIHdlJ3ZlIGNvbnN1bWVkIGFsbCBVUkwgcGFydHMsIGNoZWNrIGZvciBhIGRpcmVjdFxuICAvLyBwYXR0ZXJuIGF0IHRoaXMgbm9kZSAodGhlIHJvdXRlIHRlcm1pbmF0ZXMgaGVyZSkuXG4gIGlmICh1cmxQYXJ0ID09PSBudWxsKSB7XG4gICAgY29uc3QgcGF0dGVybiA9IHBhcnQucGF0dGVyblxuICAgIGlmIChwYXR0ZXJuICE9PSBudWxsICYmICFwYXR0ZXJuLmhhc0R5bmFtaWNSZXdyaXRlKSB7XG4gICAgICByZXR1cm4geyBwYXJ0LCBwYXR0ZXJuIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxuXG4vKipcbiAqIEFjY3VtdWxhdG9yIGZvciBjb2xsZWN0aW5nIGRhdGEgZHVyaW5nIHJlaWZ5Um91dGVUcmVlIHRyYXZlcnNhbC5cbiAqIG1ldGFkYXRhVmFyeVBhdGggaXMgY29sbGVjdGVkIGZyb20gdGhlIGZpcnN0IHBhZ2Ugbm9kZSBlbmNvdW50ZXJlZFxuICogKHBhcmFsbGVsIHJvdXRlcyBtYXkgaGF2ZSBtdWx0aXBsZSBwYWdlcywgYnV0IG1ldGFkYXRhIHVzZXMgdGhlIGZpcnN0KS5cbiAqL1xudHlwZSBSZWlmeUFjY3VtdWxhdG9yID0ge1xuICBtZXRhZGF0YVZhcnlQYXRoOiBQYWdlVmFyeVBhdGggfCBudWxsXG59XG5cbi8qKlxuICogXCJSZWlmeVwiIG1lYW5zIHRvIG1ha2UgY29uY3JldGUgLSB3ZSB0YWtlIGFuIGFic3RyYWN0IHBhdHRlcm4gKHRoZSB0ZW1wbGF0ZVxuICogcm91dGUgdHJlZSkgYW5kIHByb2R1Y2UgYSBjb25jcmV0ZSBpbnN0YW5jZSB3aXRoIGFjdHVhbCBwYXJhbSB2YWx1ZXMuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBjbG9uZXMgYSBSb3V0ZVRyZWUsIHN1YnN0aXR1dGluZyBkeW5hbWljIHNlZ21lbnQgdmFsdWVzIGZyb21cbiAqIHJlc29sdmVkUGFyYW1zIGFuZCBjb21wdXRpbmcgbmV3IHZhcnkgcGF0aHMuIFRoZSB2YXJ5IHBhdGggZW5jb2RlcyBwYXJhbVxuICogdmFsdWVzIHNvIHNlZ21lbnQgY2FjaGUgZW50cmllcyBjYW4gYmUgY29ycmVjdGx5IGtleWVkLlxuICpcbiAqIEV4YW1wbGU6IFBhdHRlcm4gZm9yIC9ibG9nL1tzbHVnXSB3aXRoIHJlc29sdmVkUGFyYW1zIHsgc2x1ZzogXCJoZWxsb1wiIH1cbiAqIHByb2R1Y2VzIGEgdHJlZSB3aGVyZSBzZWdtZW50IFtzbHVnXSBoYXMgY2FjaGVLZXkgXCJoZWxsb1wiLlxuICovXG5mdW5jdGlvbiByZWlmeVJvdXRlVHJlZShcbiAgcGF0dGVybjogUm91dGVUcmVlLFxuICByZXNvbHZlZFBhcmFtczogUmVzb2x2ZWRQYXJhbXMsXG4gIHNlYXJjaDogTm9ybWFsaXplZFNlYXJjaCxcbiAgcGFyZW50UGFydGlhbFZhcnlQYXRoOiBQYXJ0aWFsU2VnbWVudFZhcnlQYXRoIHwgbnVsbCxcbiAgYWNjOiBSZWlmeUFjY3VtdWxhdG9yXG4pOiBSb3V0ZVRyZWUge1xuICBjb25zdCBvcmlnaW5hbFNlZ21lbnQgPSBwYXR0ZXJuLnNlZ21lbnRcblxuICBsZXQgbmV3U2VnbWVudCA9IG9yaWdpbmFsU2VnbWVudFxuICBsZXQgcGFydGlhbFZhcnlQYXRoOiBQYXJ0aWFsU2VnbWVudFZhcnlQYXRoIHwgbnVsbFxuXG4gIGlmICh0eXBlb2Ygb3JpZ2luYWxTZWdtZW50ICE9PSAnc3RyaW5nJykge1xuICAgIC8vIER5bmFtaWMgc2VnbWVudDogY29tcHV0ZSBuZXcgY2FjaGUga2V5IGFuZCBhcHBlbmQgdG8gcGFydGlhbCB2YXJ5IHBhdGhcbiAgICBjb25zdCBwYXJhbU5hbWUgPSBvcmlnaW5hbFNlZ21lbnRbMF1cbiAgICBjb25zdCBwYXJhbVR5cGUgPSBvcmlnaW5hbFNlZ21lbnRbMl1cbiAgICBjb25zdCBzdGF0aWNTaWJsaW5ncyA9IG9yaWdpbmFsU2VnbWVudFszXVxuICAgIGNvbnN0IG5ld1ZhbHVlID0gcmVzb2x2ZWRQYXJhbXMuZ2V0KHBhcmFtTmFtZSlcbiAgICBpZiAobmV3VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgbmV3Q2FjaGVLZXkgPSBBcnJheS5pc0FycmF5KG5ld1ZhbHVlKVxuICAgICAgICA/IG5ld1ZhbHVlLmpvaW4oJy8nKVxuICAgICAgICA6IG5ld1ZhbHVlXG4gICAgICBuZXdTZWdtZW50ID0gW3BhcmFtTmFtZSwgbmV3Q2FjaGVLZXksIHBhcmFtVHlwZSwgc3RhdGljU2libGluZ3NdXG4gICAgICBwYXJ0aWFsVmFyeVBhdGggPSBhcHBlbmRMYXlvdXRWYXJ5UGF0aChcbiAgICAgICAgcGFyZW50UGFydGlhbFZhcnlQYXRoLFxuICAgICAgICBuZXdDYWNoZUtleSxcbiAgICAgICAgcGFyYW1OYW1lXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFBhcmFtIG5vdCBmb3VuZCBpbiByZXNvbHZlZFBhcmFtcyAtIGtlZXAgb3JpZ2luYWwgYW5kIGluaGVyaXQgcGFydGlhbFxuICAgICAgLy8gVE9ETzogVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLiBCYWlsIG91dCB3aXRoIG51bGwuXG4gICAgICBwYXJ0aWFsVmFyeVBhdGggPSBwYXJlbnRQYXJ0aWFsVmFyeVBhdGhcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gU3RhdGljIHNlZ21lbnQ6IGluaGVyaXQgcGFydGlhbCB2YXJ5IHBhdGggZnJvbSBwYXJlbnRcbiAgICBwYXJ0aWFsVmFyeVBhdGggPSBwYXJlbnRQYXJ0aWFsVmFyeVBhdGhcbiAgfVxuXG4gIC8vIFJlY3Vyc2UgaW50byBjaGlsZHJlbiB3aXRoIHRoZSAocG9zc2libHkgdXBkYXRlZCkgcGFydGlhbCB2YXJ5IHBhdGhcbiAgbGV0IG5ld1Nsb3RzOiBSZWNvcmQ8c3RyaW5nLCBSb3V0ZVRyZWU+IHwgbnVsbCA9IG51bGxcbiAgaWYgKHBhdHRlcm4uc2xvdHMgIT09IG51bGwpIHtcbiAgICBuZXdTbG90cyA9IHt9XG4gICAgZm9yIChjb25zdCBrZXkgaW4gcGF0dGVybi5zbG90cykge1xuICAgICAgbmV3U2xvdHNba2V5XSA9IHJlaWZ5Um91dGVUcmVlKFxuICAgICAgICBwYXR0ZXJuLnNsb3RzW2tleV0sXG4gICAgICAgIHJlc29sdmVkUGFyYW1zLFxuICAgICAgICBzZWFyY2gsXG4gICAgICAgIHBhcnRpYWxWYXJ5UGF0aCxcbiAgICAgICAgYWNjXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgaWYgKHBhdHRlcm4uaXNQYWdlKSB7XG4gICAgLy8gUGFnZSBzZWdtZW50OiBmaW5hbGl6ZSB3aXRoIHNlYXJjaCBwYXJhbXNcbiAgICBjb25zdCBuZXdWYXJ5UGF0aCA9IGZpbmFsaXplUGFnZVZhcnlQYXRoKFxuICAgICAgcGF0dGVybi5yZXF1ZXN0S2V5LFxuICAgICAgc2VhcmNoLFxuICAgICAgcGFydGlhbFZhcnlQYXRoXG4gICAgKVxuICAgIC8vIENvbGxlY3QgbWV0YWRhdGEgdmFyeSBwYXRoIChmaXJzdCBwYWdlIHdpbnMsIHNhbWUgYXMgb3JpZ2luYWwgYWxnb3JpdGhtKVxuICAgIGlmIChhY2MubWV0YWRhdGFWYXJ5UGF0aCA9PT0gbnVsbCkge1xuICAgICAgYWNjLm1ldGFkYXRhVmFyeVBhdGggPSBmaW5hbGl6ZU1ldGFkYXRhVmFyeVBhdGgoXG4gICAgICAgIHBhdHRlcm4ucmVxdWVzdEtleSxcbiAgICAgICAgc2VhcmNoLFxuICAgICAgICBwYXJ0aWFsVmFyeVBhdGhcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlcXVlc3RLZXk6IHBhdHRlcm4ucmVxdWVzdEtleSxcbiAgICAgIHNlZ21lbnQ6IG5ld1NlZ21lbnQsXG4gICAgICByZWZyZXNoU3RhdGU6IHBhdHRlcm4ucmVmcmVzaFN0YXRlLFxuICAgICAgc2xvdHM6IG5ld1Nsb3RzLFxuXG4gICAgICBwcmVmZXRjaEhpbnRzOiBwYXR0ZXJuLnByZWZldGNoSGludHMsXG4gICAgICBpc1BhZ2U6IHRydWUsXG4gICAgICB2YXJ5UGF0aDogbmV3VmFyeVBhdGgsXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIExheW91dCBzZWdtZW50OiBmaW5hbGl6ZSB3aXRob3V0IHNlYXJjaCBwYXJhbXNcbiAgICBjb25zdCBuZXdWYXJ5UGF0aCA9IGZpbmFsaXplTGF5b3V0VmFyeVBhdGgoXG4gICAgICBwYXR0ZXJuLnJlcXVlc3RLZXksXG4gICAgICBwYXJ0aWFsVmFyeVBhdGhcbiAgICApXG4gICAgcmV0dXJuIHtcbiAgICAgIHJlcXVlc3RLZXk6IHBhdHRlcm4ucmVxdWVzdEtleSxcbiAgICAgIHNlZ21lbnQ6IG5ld1NlZ21lbnQsXG4gICAgICByZWZyZXNoU3RhdGU6IHBhdHRlcm4ucmVmcmVzaFN0YXRlLFxuICAgICAgc2xvdHM6IG5ld1Nsb3RzLFxuXG4gICAgICBwcmVmZXRjaEhpbnRzOiBwYXR0ZXJuLnByZWZldGNoSGludHMsXG4gICAgICBpc1BhZ2U6IGZhbHNlLFxuICAgICAgdmFyeVBhdGg6IG5ld1ZhcnlQYXRoLFxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlc2V0cyB0aGUga25vd24gcm91dGUgdHJlZS4gQ2FsbGVkIGR1cmluZyBkZXZlbG9wbWVudCB3aGVuIHJvdXRlcyBtYXlcbiAqIGNoYW5nZSBkdWUgdG8gaG90IHJlbG9hZGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0S25vd25Sb3V0ZXMoKTogdm9pZCB7XG4gIGtub3duUm91dGVUcmVlUm9vdCA9IGNyZWF0ZUVtcHR5UGFydCgpXG59XG4iXSwibmFtZXMiOlsiZGlzY292ZXJLbm93blJvdXRlIiwibWF0Y2hLbm93blJvdXRlIiwicmVzZXRLbm93blJvdXRlcyIsImNyZWF0ZUVtcHR5UGFydCIsInN0YXRpY0NoaWxkcmVuIiwiZHluYW1pY0NoaWxkIiwiZHluYW1pY0NoaWxkUGFyYW1OYW1lIiwiZHluYW1pY0NoaWxkUGFyYW1UeXBlIiwicGF0dGVybiIsImtub3duUm91dGVUcmVlUm9vdCIsIm5vdyIsInBhdGhuYW1lIiwibmV4dFVybCIsInBlbmRpbmdFbnRyeSIsInJvdXRlVHJlZSIsIm1ldGFkYXRhVmFyeVBhdGgiLCJjb3VsZEJlSW50ZXJjZXB0ZWQiLCJjYW5vbmljYWxVcmwiLCJzdXBwb3J0c1BlclNlZ21lbnRQcmVmZXRjaGluZyIsImhhc0R5bmFtaWNSZXdyaXRlIiwidHJlZSIsInBhdGhuYW1lUGFydHMiLCJzcGxpdCIsImZpbHRlciIsInAiLCJmaXJzdFBhcnQiLCJsZW5ndGgiLCJyZW1haW5pbmdQYXJ0cyIsInNsaWNlIiwiZnVsZmlsbGVkRW50cnkiLCJmdWxmaWxsUm91dGVDYWNoZUVudHJ5IiwiZGlzY292ZXJLbm93blJvdXRlUGFydCIsImRpc2NvdmVyRHluYW1pY0NoaWxkIiwicGFydCIsInBhcmFtTmFtZSIsInBhcmFtVHlwZSIsIm5ld0NoaWxkIiwibXV0YWJsZVBhcnQiLCJwYXJlbnRLbm93blJvdXRlUGFydCIsInVybFBhcnQiLCJleGlzdGluZ0VudHJ5IiwiZnVsbFRyZWUiLCJzZWdtZW50Iiwic2VnbWVudEFwcGVhcnNJblVSTCIsInN0YXRpY1NpYmxpbmdzIiwiZG9lc1N0YXRpY1NlZ21lbnRBcHBlYXJJblVSTCIsImtub3duUm91dGVQYXJ0IiwibmV4dFVybFBhcnQiLCJuZXh0UmVtYWluaW5nUGFydHMiLCJ3cml0ZVJvdXRlSW50b0NhY2hlIiwiTWFwIiwic2libGluZyIsImhhcyIsInNldCIsImV4aXN0aW5nQ2hpbGQiLCJnZXQiLCJ1bmRlZmluZWQiLCJzbG90cyIsInJlc3VsdEZyb21DaGlsZHJlbiIsInBhcmFsbGVsUm91dGVLZXkiLCJjaGlsZFJvdXRlVHJlZSIsInJlZnJlc2hTdGF0ZSIsInJlc3VsdCIsImVudHJ5Iiwic2VhcmNoIiwicmVzb2x2ZWRQYXJhbXMiLCJtYXRjaCIsIm1hdGNoS25vd25Sb3V0ZVBhcnQiLCJtYXRjaGVkUGFydCIsImFjYyIsInJlaWZpZWRUcmVlIiwicmVpZnlSb3V0ZVRyZWUiLCJyZWlmaWVkTWV0YWRhdGEiLCJjcmVhdGVNZXRhZGF0YVJvdXRlVHJlZSIsInN5bnRoZXRpY0VudHJ5Iiwic3RhdHVzIiwiRW50cnlTdGF0dXMiLCJGdWxmaWxsZWQiLCJibG9ja2VkVGFza3MiLCJtZXRhZGF0YSIsInJlbmRlcmVkU2VhcmNoIiwicmVmIiwic2l6ZSIsInN0YWxlQXQiLCJ2ZXJzaW9uIiwicGFydEluZGV4Iiwic3RhdGljQ2hpbGQiLCJkeW5hbWljUGFydCIsImR5bmFtaWNQYXR0ZXJuIiwicGFyZW50UGFydGlhbFZhcnlQYXRoIiwib3JpZ2luYWxTZWdtZW50IiwibmV3U2VnbWVudCIsInBhcnRpYWxWYXJ5UGF0aCIsIm5ld1ZhbHVlIiwibmV3Q2FjaGVLZXkiLCJBcnJheSIsImlzQXJyYXkiLCJqb2luIiwiYXBwZW5kTGF5b3V0VmFyeVBhdGgiLCJuZXdTbG90cyIsImtleSIsImlzUGFnZSIsIm5ld1ZhcnlQYXRoIiwiZmluYWxpemVQYWdlVmFyeVBhdGgiLCJyZXF1ZXN0S2V5IiwiZmluYWxpemVNZXRhZGF0YVZhcnlQYXRoIiwicHJlZmV0Y2hIaW50cyIsInZhcnlQYXRoIiwiZmluYWxpemVMYXlvdXRWYXJ5UGF0aCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/segment-cache/optimistic-routes.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/segment-cache/prefetch.js":
|
||
/*!****************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/segment-cache/prefetch.js ***!
|
||
\****************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"prefetch\", ({\n enumerable: true,\n get: function() {\n return prefetch;\n }\n}));\nconst _approuterutils = __webpack_require__(/*! ../app-router-utils */ \"(ssr)/./node_modules/next/dist/client/components/app-router-utils.js\");\nconst _cachekey = __webpack_require__(/*! ./cache-key */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/cache-key.js\");\nconst _scheduler = __webpack_require__(/*! ./scheduler */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/scheduler.js\");\nconst _types = __webpack_require__(/*! ./types */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/types.js\");\nfunction prefetch(href, nextUrl, treeAtTimeOfPrefetch, fetchStrategy, onInvalidate) {\n const url = (0, _approuterutils.createPrefetchURL)(href);\n if (url === null) {\n // This href should not be prefetched.\n return;\n }\n const cacheKey = (0, _cachekey.createCacheKey)(url.href, nextUrl);\n (0, _scheduler.schedulePrefetchTask)(cacheKey, treeAtTimeOfPrefetch, fetchStrategy, _types.PrefetchPriority.Default, onInvalidate);\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=prefetch.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3NlZ21lbnQtY2FjaGUvcHJlZmV0Y2guanMiLCJtYXBwaW5ncyI6Ijs7Ozs0Q0EwQmdCQTs7O2VBQUFBOzs7NENBekJrQjtzQ0FDSDt1Q0FDTTttQ0FDNEI7QUFzQjFELFNBQVNBLFNBQ2RDLElBQVksRUFDWkMsT0FBc0IsRUFDdEJDLG9CQUF1QyxFQUN2Q0MsYUFBd0MsRUFDeENDLFlBQWlDO0lBRWpDLE1BQU1DLE1BQU1DLENBQUFBLEdBQUFBLGdCQUFBQSxpQkFBQUEsRUFBa0JOO0lBQzlCLElBQUlLLFFBQVEsTUFBTTtRQUNoQixzQ0FBc0M7UUFDdEM7SUFDRjtJQUNBLE1BQU1FLFdBQVdDLENBQUFBLEdBQUFBLFVBQUFBLGNBQUFBLEVBQWVILElBQUlMLElBQUksRUFBRUM7SUFDMUNRLENBQUFBLEdBQUFBLFdBQUFBLG9CQUFBQSxFQUNFRixVQUNBTCxzQkFDQUMsZUFDQU8sT0FBQUEsZ0JBQWdCLENBQUNDLE9BQU8sRUFDeEJQO0FBRUoiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvY2xpZW50L2NvbXBvbmVudHMvc2VnbWVudC1jYWNoZS9wcmVmZXRjaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZsaWdodFJvdXRlclN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLXR5cGVzJ1xuaW1wb3J0IHsgY3JlYXRlUHJlZmV0Y2hVUkwgfSBmcm9tICcuLi9hcHAtcm91dGVyLXV0aWxzJ1xuaW1wb3J0IHsgY3JlYXRlQ2FjaGVLZXkgfSBmcm9tICcuL2NhY2hlLWtleSdcbmltcG9ydCB7IHNjaGVkdWxlUHJlZmV0Y2hUYXNrIH0gZnJvbSAnLi9zY2hlZHVsZXInXG5pbXBvcnQgeyBQcmVmZXRjaFByaW9yaXR5LCB0eXBlIFByZWZldGNoVGFza0ZldGNoU3RyYXRlZ3kgfSBmcm9tICcuL3R5cGVzJ1xuXG4vKipcbiAqIEVudHJ5cG9pbnQgZm9yIHByZWZldGNoaW5nIGEgVVJMIGludG8gdGhlIFNlZ21lbnQgQ2FjaGUuXG4gKiBAcGFyYW0gaHJlZiAtIFRoZSBVUkwgdG8gcHJlZmV0Y2guIFR5cGljYWxseSB0aGlzIHdpbGwgY29tZSBmcm9tIGEgPExpbms+LFxuICogb3Igcm91dGVyLnByZWZldGNoLiBJdCBtdXN0IGJlIHZhbGlkYXRlZCBiZWZvcmUgd2UgYXR0ZW1wdCB0byBwcmVmZXRjaCBpdC5cbiAqIEBwYXJhbSBuZXh0VXJsIC0gQSBzcGVjaWFsIGhlYWRlciB1c2VkIGJ5IHRoZSBzZXJ2ZXIgZm9yIGludGVyY2VwdGlvbiByb3V0ZXMuXG4gKiBSb3VnaGx5IGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50IFVSTC5cbiAqIEBwYXJhbSB0cmVlQXRUaW1lT2ZQcmVmZXRjaCAtIFRoZSBGbGlnaHRSb3V0ZXJTdGF0ZSBhdCB0aGUgdGltZSB0aGUgcHJlZmV0Y2hcbiAqIHdhcyByZXF1ZXN0ZWQuIFRoaXMgaXMgb25seSB1c2VkIHdoZW4gUFBSIGlzIGRpc2FibGVkLlxuICogQHBhcmFtIGZldGNoU3RyYXRlZ3kgLSBXaGV0aGVyIHRvIHByZWZldGNoIGR5bmFtaWMgZGF0YSwgaW4gYWRkaXRpb24gdG9cbiAqIHN0YXRpYyBkYXRhLiBUaGlzIGlzIHVzZWQgYnkgYDxMaW5rIHByZWZldGNoPXt0cnVlfT5gLlxuICogQHBhcmFtIG9uSW52YWxpZGF0ZSAtIEEgY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBwcmVmZXRjaCBjYWNoZVxuICogV2hlbiBjYWxsZWQsIGl0IHNpZ25hbHMgdG8gdGhlIGxpc3RlbmVyIHRoYXQgdGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZVxuICogcHJlZmV0Y2ggbWF5IGhhdmUgYmVlbiBpbnZhbGlkYXRlZCBmcm9tIHRoZSBjYWNoZS4gVGhpcyBpcyBub3QgYSBsaXZlXG4gKiBzdWJzY3JpcHRpb24g4oCUIGl0J3MgY2FsbGVkIGF0IG1vc3Qgb25jZSBwZXIgYHByZWZldGNoYCBjYWxsLiBUaGUgb25seVxuICogc3VwcG9ydGVkIHVzZSBjYXNlIGlzIHRvIHRyaWdnZXIgYSBuZXcgcHJlZmV0Y2ggaW5zaWRlIHRoZSBsaXN0ZW5lciwgaWZcbiAqIGRlc2lyZWQuIEl0IGFsc28gbWF5IGJlIGNhbGxlZCBldmVuIGluIGNhc2VzIHdoZXJlIHRoZSBhc3NvY2lhdGVkIGRhdGEgaXNcbiAqIHN0aWxsIGNhY2hlZC4gUHJlZmV0Y2hpbmcgaXMgYSBwb2xsLWJhc2VkIChwdWxsKSBvcGVyYXRpb24sIG5vdCBhbiBldmVudC1cbiAqIGJhc2VkIChwdXNoKSBvbmUuIFJhdGhlciB0aGFuIHN1YnNjcmliZSB0byBzcGVjaWZpYyBjYWNoZSBlbnRyaWVzLCB5b3VcbiAqIG9jY2FzaW9uYWxseSBwb2xsIHRoZSBwcmVmZXRjaCBjYWNoZSB0byBjaGVjayBpZiBhbnl0aGluZyBpcyBtaXNzaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlZmV0Y2goXG4gIGhyZWY6IHN0cmluZyxcbiAgbmV4dFVybDogc3RyaW5nIHwgbnVsbCxcbiAgdHJlZUF0VGltZU9mUHJlZmV0Y2g6IEZsaWdodFJvdXRlclN0YXRlLFxuICBmZXRjaFN0cmF0ZWd5OiBQcmVmZXRjaFRhc2tGZXRjaFN0cmF0ZWd5LFxuICBvbkludmFsaWRhdGU6IG51bGwgfCAoKCkgPT4gdm9pZClcbikge1xuICBjb25zdCB1cmwgPSBjcmVhdGVQcmVmZXRjaFVSTChocmVmKVxuICBpZiAodXJsID09PSBudWxsKSB7XG4gICAgLy8gVGhpcyBocmVmIHNob3VsZCBub3QgYmUgcHJlZmV0Y2hlZC5cbiAgICByZXR1cm5cbiAgfVxuICBjb25zdCBjYWNoZUtleSA9IGNyZWF0ZUNhY2hlS2V5KHVybC5ocmVmLCBuZXh0VXJsKVxuICBzY2hlZHVsZVByZWZldGNoVGFzayhcbiAgICBjYWNoZUtleSxcbiAgICB0cmVlQXRUaW1lT2ZQcmVmZXRjaCxcbiAgICBmZXRjaFN0cmF0ZWd5LFxuICAgIFByZWZldGNoUHJpb3JpdHkuRGVmYXVsdCxcbiAgICBvbkludmFsaWRhdGVcbiAgKVxufVxuIl0sIm5hbWVzIjpbInByZWZldGNoIiwiaHJlZiIsIm5leHRVcmwiLCJ0cmVlQXRUaW1lT2ZQcmVmZXRjaCIsImZldGNoU3RyYXRlZ3kiLCJvbkludmFsaWRhdGUiLCJ1cmwiLCJjcmVhdGVQcmVmZXRjaFVSTCIsImNhY2hlS2V5IiwiY3JlYXRlQ2FjaGVLZXkiLCJzY2hlZHVsZVByZWZldGNoVGFzayIsIlByZWZldGNoUHJpb3JpdHkiLCJEZWZhdWx0Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/segment-cache/prefetch.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/segment-cache/scheduler.js":
|
||
/*!*****************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/segment-cache/scheduler.js ***!
|
||
\*****************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n cancelPrefetchTask: function() {\n return cancelPrefetchTask;\n },\n isPrefetchTaskDirty: function() {\n return isPrefetchTaskDirty;\n },\n pingPrefetchScheduler: function() {\n return pingPrefetchScheduler;\n },\n pingPrefetchTask: function() {\n return pingPrefetchTask;\n },\n reschedulePrefetchTask: function() {\n return reschedulePrefetchTask;\n },\n schedulePrefetchTask: function() {\n return schedulePrefetchTask;\n },\n startRevalidationCooldown: function() {\n return startRevalidationCooldown;\n }\n});\nconst _approutertypes = __webpack_require__(/*! ../../../shared/lib/app-router-types */ \"(ssr)/./node_modules/next/dist/shared/lib/app-router-types.js\");\nconst _matchsegments = __webpack_require__(/*! ../match-segments */ \"(ssr)/./node_modules/next/dist/client/components/match-segments.js\");\nconst _cache = __webpack_require__(/*! ./cache */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/cache.js\");\nconst _cachekey = __webpack_require__(/*! ./cache-key */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/cache-key.js\");\nconst _types = __webpack_require__(/*! ./types */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/types.js\");\nconst _segment = __webpack_require__(/*! ../../../shared/lib/segment */ \"(ssr)/./node_modules/next/dist/shared/lib/segment.js\");\nconst _lru = __webpack_require__(/*! ./lru */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/lru.js\");\nconst scheduleMicrotask = typeof queueMicrotask === 'function' ? queueMicrotask : (fn)=>Promise.resolve().then(fn).catch((error)=>setTimeout(()=>{\n throw error;\n }));\nconst taskHeap = [];\nlet inProgressRequests = 0;\nlet sortIdCounter = 0;\nlet didScheduleMicrotask = false;\n// The most recently hovered (or touched, etc) link, i.e. the most recent task\n// scheduled at Intent priority. There's only ever a single task at Intent\n// priority at a time. We reserve special network bandwidth for this task only.\nlet mostRecentlyHoveredLink = null;\n// CDN cache propagation delay after revalidation (in milliseconds)\nconst REVALIDATION_COOLDOWN_MS = 300;\n// Timeout handle for the revalidation cooldown. When non-null, prefetch\n// requests are blocked to allow CDN cache propagation.\nlet revalidationCooldownTimeoutHandle = null;\nfunction startRevalidationCooldown() {\n // Clear any existing timeout in case multiple revalidations happen\n // in quick succession.\n if (revalidationCooldownTimeoutHandle !== null) {\n clearTimeout(revalidationCooldownTimeoutHandle);\n }\n // Schedule the cooldown to expire after the delay.\n revalidationCooldownTimeoutHandle = setTimeout(()=>{\n revalidationCooldownTimeoutHandle = null;\n // Retry the prefetch queue now that the cooldown has expired.\n pingPrefetchScheduler();\n }, REVALIDATION_COOLDOWN_MS);\n}\nfunction schedulePrefetchTask(key, treeAtTimeOfPrefetch, fetchStrategy, priority, onInvalidate, _onComplete) {\n // Spawn a new prefetch task\n const task = {\n key,\n treeAtTimeOfPrefetch,\n routeCacheVersion: (0, _cache.getCurrentRouteCacheVersion)(),\n segmentCacheVersion: (0, _cache.getCurrentSegmentCacheVersion)(),\n priority,\n phase: 1,\n hasBackgroundWork: false,\n spawnedRuntimePrefetches: null,\n fetchStrategy,\n sortId: sortIdCounter++,\n isCanceled: false,\n onInvalidate,\n _heapIndex: -1\n };\n if (true) {\n task._onComplete = _onComplete;\n }\n trackMostRecentlyHoveredLink(task);\n heapPush(taskHeap, task);\n // Schedule an async task to process the queue.\n //\n // The main reason we process the queue in an async task is for batching.\n // It's common for a single JS task/event to trigger multiple prefetches.\n // By deferring to a microtask, we only process the queue once per JS task.\n // If they have different priorities, it also ensures they are processed in\n // the optimal order.\n pingPrefetchScheduler();\n return task;\n}\nfunction cancelPrefetchTask(task) {\n // Remove the prefetch task from the queue. If the task already completed,\n // then this is a no-op.\n //\n // We must also explicitly mark the task as canceled so that a blocked task\n // does not get added back to the queue when it's pinged by the network.\n task.isCanceled = true;\n heapDelete(taskHeap, task);\n if (true) {\n // Call completion callback. In practice this shouldn't be reached for\n // test-initiated prefetches since cancellation is only used by the Link\n // component when elements scroll out of viewport.\n const onComplete = task._onComplete;\n task._onComplete = undefined;\n onComplete?.();\n }\n}\nfunction reschedulePrefetchTask(task, treeAtTimeOfPrefetch, fetchStrategy, priority) {\n // Bump the prefetch task to the top of the queue, as if it were a fresh\n // task. This is essentially the same as canceling the task and scheduling\n // a new one, except it reuses the original object.\n //\n // The primary use case is to increase the priority of a Link-initated\n // prefetch on hover.\n //\n // Note: _onComplete is not reset here because it's preserved on the same\n // task object. When the rescheduled task completes, the original callback\n // will still be invoked.\n // Un-cancel the task, in case it was previously canceled.\n task.isCanceled = false;\n task.phase = 1;\n // Assign a new sort ID to move it ahead of all other tasks at the same\n // priority level. (Higher sort IDs are processed first.)\n task.sortId = sortIdCounter++;\n task.priority = // Intent priority, even if the rescheduled priority is lower.\n task === mostRecentlyHoveredLink ? _types.PrefetchPriority.Intent : priority;\n task.treeAtTimeOfPrefetch = treeAtTimeOfPrefetch;\n task.fetchStrategy = fetchStrategy;\n trackMostRecentlyHoveredLink(task);\n if (task._heapIndex !== -1) {\n // The task is already in the queue.\n heapResift(taskHeap, task);\n } else {\n heapPush(taskHeap, task);\n }\n pingPrefetchScheduler();\n}\nfunction isPrefetchTaskDirty(task, nextUrl, tree) {\n // This is used to quickly bail out of a prefetch task if the result is\n // guaranteed to not have changed since the task was initiated. This is\n // strictly an optimization — theoretically, if it always returned true, no\n // behavior should change because a full prefetch task will effectively\n // perform the same checks.\n return task.routeCacheVersion !== (0, _cache.getCurrentRouteCacheVersion)() || task.segmentCacheVersion !== (0, _cache.getCurrentSegmentCacheVersion)() || task.treeAtTimeOfPrefetch !== tree || task.key.nextUrl !== nextUrl;\n}\nfunction trackMostRecentlyHoveredLink(task) {\n // Track the mostly recently hovered link, i.e. the most recently scheduled\n // task at Intent priority. There must only be one such task at a time.\n if (task.priority === _types.PrefetchPriority.Intent && task !== mostRecentlyHoveredLink) {\n if (mostRecentlyHoveredLink !== null) {\n // Bump the previously hovered link's priority down to Default.\n if (mostRecentlyHoveredLink.priority !== _types.PrefetchPriority.Background) {\n mostRecentlyHoveredLink.priority = _types.PrefetchPriority.Default;\n heapResift(taskHeap, mostRecentlyHoveredLink);\n }\n }\n mostRecentlyHoveredLink = task;\n }\n}\nfunction pingPrefetchScheduler() {\n if (didScheduleMicrotask) {\n // Already scheduled a task to process the queue\n return;\n }\n didScheduleMicrotask = true;\n scheduleMicrotask(processQueueInMicrotask);\n}\n/**\n * Checks if we've exceeded the maximum number of concurrent prefetch requests,\n * to avoid saturating the browser's internal network queue. This is a\n * cooperative limit — prefetch tasks should check this before issuing\n * new requests.\n *\n * Also checks if we're within the revalidation cooldown window, during which\n * prefetch requests are delayed to allow CDN cache propagation.\n */ function hasNetworkBandwidth(task) {\n // Check if we're within the revalidation cooldown window\n if (revalidationCooldownTimeoutHandle !== null) {\n // We're within the cooldown window. Return false to prevent prefetching.\n // When the cooldown expires, the timeout will call ensureWorkIsScheduled()\n // to retry the queue.\n return false;\n }\n // TODO: Also check if there's an in-progress navigation. We should never\n // add prefetch requests to the network queue if an actual navigation is\n // taking place, to ensure there's sufficient bandwidth for render-blocking\n // data and resources.\n // TODO: Consider reserving some amount of bandwidth for static prefetches.\n if (task.priority === _types.PrefetchPriority.Intent) {\n // The most recently hovered link is allowed to exceed the default limit.\n //\n // The goal is to always have enough bandwidth to start a new prefetch\n // request when hovering over a link.\n //\n // However, because we don't abort in-progress requests, it's still possible\n // we'll run out of bandwidth. When links are hovered in quick succession,\n // there could be multiple hover requests running simultaneously.\n return inProgressRequests < 12;\n }\n // The default limit is lower than the limit for a hovered link.\n return inProgressRequests < 4;\n}\nfunction spawnPrefetchSubtask(prefetchSubtask) {\n // When the scheduler spawns an async task, we don't await its result.\n // Instead, the async task writes its result directly into the cache, then\n // pings the scheduler to continue.\n //\n // We process server responses streamingly, so the prefetch subtask will\n // likely resolve before we're finished receiving all the data. The subtask\n // result includes a promise that resolves once the network connection is\n // closed. The scheduler uses this to control network bandwidth by tracking\n // and limiting the number of concurrent requests.\n inProgressRequests++;\n return prefetchSubtask.then((result)=>{\n if (result === null) {\n // The prefetch task errored before it could start processing the\n // network stream. Assume the connection is closed.\n onPrefetchConnectionClosed();\n return null;\n }\n // Wait for the connection to close before freeing up more bandwidth.\n result.closed.then(onPrefetchConnectionClosed);\n return result.value;\n });\n}\nfunction onPrefetchConnectionClosed() {\n inProgressRequests--;\n // Notify the scheduler that we have more bandwidth, and can continue\n // processing tasks.\n pingPrefetchScheduler();\n}\nfunction pingPrefetchTask(task) {\n // \"Ping\" a prefetch that's already in progress to notify it of new data.\n if (task.isCanceled || // Check if prefetch is already queued.\n task._heapIndex !== -1) {\n return;\n }\n // Add the task back to the queue.\n heapPush(taskHeap, task);\n pingPrefetchScheduler();\n}\nfunction processQueueInMicrotask() {\n didScheduleMicrotask = false;\n // We aim to minimize how often we read the current time. Since nearly all\n // functions in the prefetch scheduler are synchronous, we can read the time\n // once and pass it as an argument wherever it's needed.\n const now = Date.now();\n // Process the task queue until we run out of network bandwidth.\n let task = heapPeek(taskHeap);\n while(task !== null && hasNetworkBandwidth(task)){\n task.routeCacheVersion = (0, _cache.getCurrentRouteCacheVersion)();\n task.segmentCacheVersion = (0, _cache.getCurrentSegmentCacheVersion)();\n const exitStatus = pingRoute(now, task);\n // These fields are only valid for a single attempt. Reset them after each\n // iteration of the task queue.\n const hasBackgroundWork = task.hasBackgroundWork;\n task.hasBackgroundWork = false;\n task.spawnedRuntimePrefetches = null;\n switch(exitStatus){\n case 0:\n // The task yielded because there are too many requests in progress.\n // Stop processing tasks until we have more bandwidth.\n return;\n case 1:\n // The task is blocked. It needs more data before it can proceed.\n // Keep the task out of the queue until the server responds.\n heapPop(taskHeap);\n // Continue to the next task\n task = heapPeek(taskHeap);\n continue;\n case 2:\n if (task.phase === 1) {\n // Finished prefetching the route tree. Proceed to prefetching\n // the segments.\n task.phase = 0;\n heapResift(taskHeap, task);\n } else if (hasBackgroundWork) {\n // The task spawned additional background work. Reschedule the task\n // at background priority.\n task.priority = _types.PrefetchPriority.Background;\n heapResift(taskHeap, task);\n } else {\n // The prefetch is complete. Continue to the next task.\n if (true) {\n // Notify the Instant Navigation Testing API that the prefetch has\n // completed, so it can proceed with navigation.\n const onComplete = task._onComplete;\n task._onComplete = undefined;\n onComplete?.();\n }\n heapPop(taskHeap);\n }\n task = heapPeek(taskHeap);\n continue;\n default:\n exitStatus;\n }\n }\n // Run LRU cleanup only when the scheduler is fully idle: no queued tasks and\n // no in-progress requests. At that point, all active prefetch tasks have\n // finished reading from the cache (moving recently used entries to the front\n // of the list), so only genuinely stale data gets evicted.\n if (task === null && inProgressRequests === 0) {\n (0, _lru.cleanup)();\n }\n}\n/**\n * Check this during a prefetch task to determine if background work can be\n * performed. If so, it evaluates to `true`. Otherwise, it returns `false`,\n * while also scheduling a background task to run later. Usage:\n *\n * @example\n * if (background(task)) {\n * // Perform background-pri work\n * }\n */ function background(task) {\n if (task.priority === _types.PrefetchPriority.Background) {\n return true;\n }\n task.hasBackgroundWork = true;\n return false;\n}\nfunction pingRoute(now, task) {\n const key = task.key;\n const route = (0, _cache.readOrCreateRouteCacheEntry)(now, task, key);\n const exitStatus = pingRootRouteTree(now, task, route);\n if (exitStatus !== 0 && key.search !== '') {\n // If the URL has a non-empty search string, also prefetch the pathname\n // without the search string. We use the searchless route tree as a base for\n // optimistic routing; see requestOptimisticRouteCacheEntry for details.\n //\n // Note that we don't need to prefetch any of the segment data. Just the\n // route tree.\n //\n // TODO: This is a temporary solution; the plan is to replace this by adding\n // a wildcard lookup method to the TupleMap implementation. This is\n // non-trivial to implement because it needs to account for things like\n // fallback route entries, hence this temporary workaround.\n const url = new URL(key.pathname, location.origin);\n const keyWithoutSearch = (0, _cachekey.createCacheKey)(url.href, key.nextUrl);\n const routeWithoutSearch = (0, _cache.readOrCreateRouteCacheEntry)(now, task, keyWithoutSearch);\n switch(routeWithoutSearch.status){\n case _cache.EntryStatus.Empty:\n {\n if (background(task)) {\n routeWithoutSearch.status = _cache.EntryStatus.Pending;\n spawnPrefetchSubtask((0, _cache.fetchRouteOnCacheMiss)(routeWithoutSearch, keyWithoutSearch));\n }\n break;\n }\n case _cache.EntryStatus.Pending:\n case _cache.EntryStatus.Fulfilled:\n case _cache.EntryStatus.Rejected:\n {\n break;\n }\n default:\n routeWithoutSearch;\n }\n }\n return exitStatus;\n}\nfunction pingRootRouteTree(now, task, route) {\n switch(route.status){\n case _cache.EntryStatus.Empty:\n {\n // Route is not yet cached, and there's no request already in progress.\n // Spawn a task to request the route, load it into the cache, and ping\n // the task to continue.\n // TODO: There are multiple strategies in the <Link> API for prefetching\n // a route. Currently we've only implemented the main one: per-segment,\n // static-data only.\n //\n // There's also `<Link prefetch={true}>`\n // which prefetch both static *and* dynamic data.\n // Similarly, we need to fallback to the old, per-page\n // behavior if PPR is disabled for a route (via the incremental opt-in).\n //\n // Those cases will be handled here.\n spawnPrefetchSubtask((0, _cache.fetchRouteOnCacheMiss)(route, task.key));\n // If the request takes longer than a minute, a subsequent request should\n // retry instead of waiting for this one. When the response is received,\n // this value will be replaced by a new value based on the stale time sent\n // from the server.\n // TODO: We should probably also manually abort the fetch task, to reclaim\n // server bandwidth.\n route.staleAt = now + 60 * 1000;\n // Upgrade to Pending so we know there's already a request in progress\n route.status = _cache.EntryStatus.Pending;\n // Intentional fallthrough to the Pending branch\n }\n case _cache.EntryStatus.Pending:\n {\n // Still pending. We can't start prefetching the segments until the route\n // tree has loaded. Add the task to the set of blocked tasks so that it\n // is notified when the route tree is ready.\n const blockedTasks = route.blockedTasks;\n if (blockedTasks === null) {\n route.blockedTasks = new Set([\n task\n ]);\n } else {\n blockedTasks.add(task);\n }\n return 1;\n }\n case _cache.EntryStatus.Rejected:\n {\n // Route tree failed to load. Treat as a 404.\n return 2;\n }\n case _cache.EntryStatus.Fulfilled:\n {\n if (task.phase !== 0) {\n // Do not prefetch segment data until we've entered the segment phase.\n return 2;\n }\n // Recursively fill in the segment tree.\n if (!hasNetworkBandwidth(task)) {\n // Stop prefetching segments until there's more bandwidth.\n return 0;\n }\n const tree = route.tree;\n // A task's fetch strategy gets set to `PPR` for any \"auto\" prefetch.\n // If it turned out that the route isn't PPR-enabled, we need to use `LoadingBoundary` instead.\n // We don't need to do this for runtime prefetches, because those are only available in\n // `cacheComponents`, where every route is PPR.\n let fetchStrategy;\n if (tree.prefetchHints & _approutertypes.PrefetchHint.SubtreeHasInstant) {\n // If `instant` is defined anywhere on the target route, ignore the\n // fetch strategy and switch to unified strategy used by Cache\n // Components (called `PPR` for now, will likely be renamed).\n //\n // In practice, this just means that a \"full\" prefetch (<Link\n // prefetch={true}>) has no effect. You're meant to use Runtime\n // Prefetching instead — that's the new pattern that replaces\n // prefetch={true}.\n //\n // The reason we check for `instant` rather than the `cacheComponents`\n // flag is to support incremental adoption. `prefetch={true}` will\n // continue to work until you opt into `instant`.\n fetchStrategy = _types.FetchStrategy.PPR;\n } else if (task.fetchStrategy === _types.FetchStrategy.PPR) {\n fetchStrategy = route.supportsPerSegmentPrefetching ? _types.FetchStrategy.PPR : _types.FetchStrategy.LoadingBoundary;\n } else {\n fetchStrategy = task.fetchStrategy;\n }\n switch(fetchStrategy){\n case _types.FetchStrategy.PPR:\n {\n // For Cache Components pages, each segment may be prefetched\n // statically or using a runtime request, based on various\n // configurations and heuristics. We'll do this in two passes: first\n // traverse the tree and perform all the static prefetches.\n //\n // Then, if there are any segments that need a runtime request,\n // do another pass to perform a runtime prefetch.\n pingStaticHead(now, task, route);\n const exitStatus = pingSharedPartOfCacheComponentsTree(now, task, route, task.treeAtTimeOfPrefetch, tree);\n if (exitStatus === 0) {\n // Child yielded without finishing.\n return 0;\n }\n const spawnedRuntimePrefetches = task.spawnedRuntimePrefetches;\n if (spawnedRuntimePrefetches !== null) {\n // During the first pass, we discovered segments that require a\n // runtime prefetch. Do a second pass to construct a request tree.\n const spawnedEntries = new Map();\n pingRuntimeHead(now, task, route, spawnedEntries, _types.FetchStrategy.PPRRuntime);\n const requestTree = pingRuntimePrefetches(now, task, route, tree, spawnedRuntimePrefetches, spawnedEntries);\n let needsDynamicRequest = spawnedEntries.size > 0;\n if (needsDynamicRequest) {\n // Perform a dynamic prefetch request and populate the cache with\n // the result.\n spawnPrefetchSubtask((0, _cache.fetchSegmentPrefetchesUsingDynamicRequest)(task, route, _types.FetchStrategy.PPRRuntime, requestTree, spawnedEntries));\n }\n }\n return 2;\n }\n case _types.FetchStrategy.Full:\n case _types.FetchStrategy.PPRRuntime:\n case _types.FetchStrategy.LoadingBoundary:\n {\n // Prefetch multiple segments using a single dynamic request.\n // TODO: We can consolidate this branch with previous one by modeling\n // it as if the first segment in the new tree has runtime prefetching\n // enabled. Will do this as a follow-up refactor. Might want to remove\n // the special metatdata case below first. In the meantime, it's not\n // really that much duplication, just would be nice to remove one of\n // these codepaths.\n const spawnedEntries = new Map();\n pingRuntimeHead(now, task, route, spawnedEntries, fetchStrategy);\n const dynamicRequestTree = diffRouteTreeAgainstCurrent(now, task, route, task.treeAtTimeOfPrefetch, tree, spawnedEntries, fetchStrategy);\n let needsDynamicRequest = spawnedEntries.size > 0;\n if (needsDynamicRequest) {\n spawnPrefetchSubtask((0, _cache.fetchSegmentPrefetchesUsingDynamicRequest)(task, route, fetchStrategy, dynamicRequestTree, spawnedEntries));\n }\n return 2;\n }\n default:\n fetchStrategy;\n }\n break;\n }\n default:\n {\n route;\n }\n }\n return 2;\n}\nfunction pingStaticHead(now, task, route) {\n // The Head data for a page (metadata, viewport) is not really a route\n // segment, in the sense that it doesn't appear in the route tree. But we\n // store it in the cache as if it were, using a special key.\n pingStaticSegmentData(now, task, route, (0, _cache.readOrCreateSegmentCacheEntry)(now, _types.FetchStrategy.PPR, route.metadata), task.key, route.metadata);\n}\nfunction pingRuntimeHead(now, task, route, spawnedEntries, fetchStrategy) {\n pingRouteTreeAndIncludeDynamicData(now, task, route, route.metadata, false, spawnedEntries, // and LoadingBoundary\n fetchStrategy === _types.FetchStrategy.LoadingBoundary ? _types.FetchStrategy.Full : fetchStrategy);\n}\n// TODO: Rename dynamic -> runtime throughout this module\nfunction pingSharedPartOfCacheComponentsTree(now, task, route, oldTree, newTree) {\n // When Cache Components is enabled (or PPR, or a fully static route when PPR\n // is disabled; those cases are treated equivalently to Cache Components), we\n // start by prefetching each segment individually. Once we reach the \"new\"\n // part of the tree — the part that doesn't exist on the current page — we\n // may choose to switch to a runtime prefetch instead, based on the\n // information sent by the server in the route tree.\n //\n // The traversal starts in the \"shared\" part of the tree. Once we reach the\n // \"new\" part of the tree, we switch to a different traversal,\n // pingNewPartOfCacheComponentsTree.\n // Prefetch this segment's static data.\n const segment = (0, _cache.readOrCreateSegmentCacheEntry)(now, task.fetchStrategy, newTree);\n pingStaticSegmentData(now, task, route, segment, task.key, newTree);\n // Recursively ping the children.\n const oldTreeChildren = oldTree[1];\n const newTreeChildren = newTree.slots;\n if (newTreeChildren !== null) {\n for(const parallelRouteKey in newTreeChildren){\n if (!hasNetworkBandwidth(task)) {\n // Stop prefetching segments until there's more bandwidth.\n return 0;\n }\n const newTreeChild = newTreeChildren[parallelRouteKey];\n const newTreeChildSegment = newTreeChild.segment;\n const oldTreeChild = oldTreeChildren[parallelRouteKey];\n const oldTreeChildSegment = oldTreeChild?.[0];\n let childExitStatus;\n if (oldTreeChildSegment !== undefined && doesCurrentSegmentMatchCachedSegment(route, newTreeChildSegment, oldTreeChildSegment)) {\n // We're still in the \"shared\" part of the tree.\n childExitStatus = pingSharedPartOfCacheComponentsTree(now, task, route, oldTreeChild, newTreeChild);\n } else {\n // We've entered the \"new\" part of the tree. Switch\n // traversal functions.\n childExitStatus = pingNewPartOfCacheComponentsTree(now, task, route, newTreeChild);\n }\n if (childExitStatus === 0) {\n // Child yielded without finishing.\n return 0;\n }\n }\n }\n return 2;\n}\nfunction pingNewPartOfCacheComponentsTree(now, task, route, tree) {\n // We're now prefetching in the \"new\" part of the tree, the part that doesn't\n // exist on the current page. (In other words, we're deeper than the\n // shared layouts.) Segments in here default to being prefetched statically.\n // However, if the server instructs us to, we may switch to a runtime\n // prefetch instead. Traverse the tree and check at each segment.\n if (tree.prefetchHints & _approutertypes.PrefetchHint.HasRuntimePrefetch) {\n // This route has a runtime prefetch response. Since we're below the shared\n // layout, everything from this point should be prefetched using a single,\n // combined runtime request, rather than using per-segment static requests.\n // This is true even if some of the child segments are known to be fully\n // static — once we've decided to perform a runtime prefetch, we might as\n // well respond with the static segments in the same roundtrip. (That's how\n // regular navigations work, too.) We'll still skip over segments that are\n // already cached, though.\n //\n // It's the server's responsibility to set a reasonable value of\n // `hasRuntimePrefetch`. Currently it's user-defined, but eventually, the\n // server may send a value of `false` even if the user opts in, if it\n // determines during build that the route is always fully static. There are\n // more optimizations we can do once we implement fallback param\n // tracking, too.\n //\n // Use the task object to collect the segments that need a runtime prefetch.\n // This will signal to the outer task queue that a second traversal is\n // required to construct a request tree.\n if (task.spawnedRuntimePrefetches === null) {\n task.spawnedRuntimePrefetches = new Set([\n tree.requestKey\n ]);\n } else {\n task.spawnedRuntimePrefetches.add(tree.requestKey);\n }\n // Then exit the traversal without prefetching anything further.\n return 2;\n }\n // This segment should not be runtime prefetched. Prefetch its static data.\n const segment = (0, _cache.readOrCreateSegmentCacheEntry)(now, task.fetchStrategy, tree);\n pingStaticSegmentData(now, task, route, segment, task.key, tree);\n if (tree.slots !== null) {\n if (!hasNetworkBandwidth(task)) {\n // Stop prefetching segments until there's more bandwidth.\n return 0;\n }\n // Recursively ping the children.\n for(const parallelRouteKey in tree.slots){\n const childTree = tree.slots[parallelRouteKey];\n const childExitStatus = pingNewPartOfCacheComponentsTree(now, task, route, childTree);\n if (childExitStatus === 0) {\n // Child yielded without finishing.\n return 0;\n }\n }\n }\n // This segment and all its children have finished prefetching.\n return 2;\n}\nfunction diffRouteTreeAgainstCurrent(now, task, route, oldTree, newTree, spawnedEntries, fetchStrategy) {\n // This is a single recursive traversal that does multiple things:\n // - Finds the parts of the target route (newTree) that are not part of\n // of the current page (oldTree) by diffing them, using the same algorithm\n // as a real navigation.\n // - Constructs a request tree (FlightRouterState) that describes which\n // segments need to be prefetched and which ones are already cached.\n // - Creates a set of pending cache entries for the segments that need to\n // be prefetched, so that a subsequent prefetch task does not request the\n // same segments again.\n const oldTreeChildren = oldTree[1];\n const newTreeChildren = newTree.slots;\n let requestTreeChildren = {};\n if (newTreeChildren !== null) {\n for(const parallelRouteKey in newTreeChildren){\n const newTreeChild = newTreeChildren[parallelRouteKey];\n const newTreeChildSegment = newTreeChild.segment;\n const oldTreeChild = oldTreeChildren[parallelRouteKey];\n const oldTreeChildSegment = oldTreeChild?.[0];\n if (oldTreeChildSegment !== undefined && doesCurrentSegmentMatchCachedSegment(route, newTreeChildSegment, oldTreeChildSegment)) {\n // This segment is already part of the current route. Keep traversing.\n const requestTreeChild = diffRouteTreeAgainstCurrent(now, task, route, oldTreeChild, newTreeChild, spawnedEntries, fetchStrategy);\n requestTreeChildren[parallelRouteKey] = requestTreeChild;\n } else {\n // This segment is not part of the current route. We're entering a\n // part of the tree that we need to prefetch (unless everything is\n // already cached).\n switch(fetchStrategy){\n case _types.FetchStrategy.LoadingBoundary:\n {\n // When PPR is disabled, we can't prefetch per segment. We must\n // fallback to the old prefetch behavior and send a dynamic request.\n // Only routes that include a loading boundary can be prefetched in\n // this way.\n //\n // This is simlar to a \"full\" prefetch, but we're much more\n // conservative about which segments to include in the request.\n //\n // The server will only render up to the first loading boundary\n // inside new part of the tree. If there's no loading boundary\n // anywhere in the tree, the server will never return any data, so\n // we can skip the request.\n const subtreeHasLoadingBoundary = (newTreeChild.prefetchHints & (_approutertypes.PrefetchHint.SegmentHasLoadingBoundary | _approutertypes.PrefetchHint.SubtreeHasLoadingBoundary)) !== 0;\n const requestTreeChild = subtreeHasLoadingBoundary ? pingPPRDisabledRouteTreeUpToLoadingBoundary(now, task, route, newTreeChild, null, spawnedEntries) : (0, _cache.convertRouteTreeToFlightRouterState)(newTreeChild);\n requestTreeChildren[parallelRouteKey] = requestTreeChild;\n break;\n }\n case _types.FetchStrategy.PPRRuntime:\n {\n // This is a runtime prefetch. Fetch all cacheable data in the tree,\n // not just the static PPR shell.\n const requestTreeChild = pingRouteTreeAndIncludeDynamicData(now, task, route, newTreeChild, false, spawnedEntries, fetchStrategy);\n requestTreeChildren[parallelRouteKey] = requestTreeChild;\n break;\n }\n case _types.FetchStrategy.Full:\n {\n // This is a \"full\" prefetch. Fetch all the data in the tree, both\n // static and dynamic. We issue roughly the same request that we\n // would during a real navigation. The goal is that once the\n // navigation occurs, the router should not have to fetch any\n // additional data.\n //\n // Although the response will include dynamic data, opting into a\n // Full prefetch — via <Link prefetch={true}> — implicitly\n // instructs the cache to treat the response as \"static\", or non-\n // dynamic, since the whole point is to cache it for\n // future navigations.\n //\n // Construct a tree (currently a FlightRouterState) that represents\n // which segments need to be prefetched and which ones are already\n // cached. If the tree is empty, then we can exit. Otherwise, we'll\n // send the request tree to the server and use the response to\n // populate the segment cache.\n const requestTreeChild = pingRouteTreeAndIncludeDynamicData(now, task, route, newTreeChild, false, spawnedEntries, fetchStrategy);\n requestTreeChildren[parallelRouteKey] = requestTreeChild;\n break;\n }\n default:\n fetchStrategy;\n }\n }\n }\n }\n const requestTree = [\n newTree.segment,\n requestTreeChildren,\n null,\n null\n ];\n return requestTree;\n}\nfunction pingPPRDisabledRouteTreeUpToLoadingBoundary(now, task, route, tree, refetchMarkerContext, spawnedEntries) {\n // This function is similar to pingRouteTreeAndIncludeDynamicData, except the\n // server is only going to return a minimal loading state — it will stop\n // rendering at the first loading boundary. Whereas a Full prefetch is\n // intentionally aggressive and tries to pretfetch all the data that will be\n // needed for a navigation, a LoadingBoundary prefetch is much more\n // conservative. For example, it will omit from the request tree any segment\n // that is already cached, regardles of whether it's partial or full. By\n // contrast, a Full prefetch will refetch partial segments.\n // \"inside-shared-layout\" tells the server where to start looking for a\n // loading boundary.\n let refetchMarker = refetchMarkerContext === null ? 'inside-shared-layout' : null;\n const segment = (0, _cache.readOrCreateSegmentCacheEntry)(now, task.fetchStrategy, tree);\n switch(segment.status){\n case _cache.EntryStatus.Empty:\n {\n // This segment is not cached. Add a refetch marker so the server knows\n // to start rendering here.\n // TODO: Instead of a \"refetch\" marker, we could just omit this subtree's\n // FlightRouterState from the request tree. I think this would probably\n // already work even without any updates to the server. For consistency,\n // though, I'll send the full tree and we'll look into this later as part\n // of a larger redesign of the request protocol.\n // Add the pending cache entry to the result map.\n spawnedEntries.set(tree.requestKey, (0, _cache.upgradeToPendingSegment)(segment, // might not include it in the pending response. If another route is able\n // to issue a per-segment request, we'll do that in the background.\n _types.FetchStrategy.LoadingBoundary));\n if (refetchMarkerContext !== 'refetch') {\n refetchMarker = refetchMarkerContext = 'refetch';\n } else {\n // There's already a parent with a refetch marker, so we don't need\n // to add another one.\n }\n break;\n }\n case _cache.EntryStatus.Fulfilled:\n {\n // The segment is already cached.\n const segmentHasLoadingBoundary = (tree.prefetchHints & _approutertypes.PrefetchHint.SegmentHasLoadingBoundary) !== 0;\n if (segmentHasLoadingBoundary) {\n // This segment has a loading boundary, which means the server won't\n // render its children. So there's nothing left to prefetch along this\n // path. We can bail out.\n return (0, _cache.convertRouteTreeToFlightRouterState)(tree);\n }\n break;\n }\n case _cache.EntryStatus.Pending:\n {\n break;\n }\n case _cache.EntryStatus.Rejected:\n {\n break;\n }\n default:\n segment;\n }\n const requestTreeChildren = {};\n if (tree.slots !== null) {\n for(const parallelRouteKey in tree.slots){\n const childTree = tree.slots[parallelRouteKey];\n requestTreeChildren[parallelRouteKey] = pingPPRDisabledRouteTreeUpToLoadingBoundary(now, task, route, childTree, refetchMarkerContext, spawnedEntries);\n }\n }\n const requestTree = [\n tree.segment,\n requestTreeChildren,\n null,\n refetchMarker\n ];\n return requestTree;\n}\nfunction pingRouteTreeAndIncludeDynamicData(now, task, route, tree, isInsideRefetchingParent, spawnedEntries, fetchStrategy) {\n // The tree we're constructing is the same shape as the tree we're navigating\n // to. But even though this is a \"new\" tree, some of the individual segments\n // may be cached as a result of other route prefetches.\n //\n // So we need to find the first uncached segment along each path add an\n // explicit \"refetch\" marker so the server knows where to start rendering.\n // Once the server starts rendering along a path, it keeps rendering the\n // entire subtree.\n const segment = (0, _cache.readOrCreateSegmentCacheEntry)(now, // and we have to use the former here.\n // We can have a task with `FetchStrategy.PPR` where some of its segments are configured to\n // always use runtime prefetching (via `export const prefetch`), and those should check for\n // entries that include search params.\n fetchStrategy, tree);\n let spawnedSegment = null;\n switch(segment.status){\n case _cache.EntryStatus.Empty:\n {\n // This segment is not cached.\n if (fetchStrategy === _types.FetchStrategy.Full) {\n // Check if there's a matching entry in the bfcache. If so, fulfill the\n // segment using the bfcache entry instead of issuing a new request.\n const fulfilled = (0, _cache.attemptToFulfillDynamicSegmentFromBFCache)(now, segment, tree);\n if (fulfilled !== null) {\n break;\n }\n }\n // Include it in the request.\n spawnedSegment = (0, _cache.upgradeToPendingSegment)(segment, fetchStrategy);\n break;\n }\n case _cache.EntryStatus.Fulfilled:\n {\n // The segment is already cached.\n if (segment.isPartial && (0, _cache.canNewFetchStrategyProvideMoreContent)(segment.fetchStrategy, fetchStrategy)) {\n // The cached segment contains dynamic holes, and was prefetched using a\n // less specific strategy than the current one. This means we're in one\n // of these cases:\n // - we have a static prefetch, and we're doing a runtime prefetch\n // - we have a static or runtime prefetch, and we're doing a Full\n // prefetch (or a navigation).\n // In either case, we need to include it in the request to get a more\n // specific (or full) version. However, if there's a non-stale bfcache\n // entry from a previous navigation, prefer that over making a new\n // request.\n if (fetchStrategy === _types.FetchStrategy.Full) {\n const fulfilled = (0, _cache.attemptToUpgradeSegmentFromBFCache)(now, tree);\n if (fulfilled !== null) {\n break;\n }\n }\n spawnedSegment = pingFullSegmentRevalidation(now, tree, fetchStrategy);\n }\n break;\n }\n case _cache.EntryStatus.Pending:\n case _cache.EntryStatus.Rejected:\n {\n // There's either another prefetch currently in progress, or the previous\n // attempt failed. If the new strategy can provide more content, fetch it again.\n if ((0, _cache.canNewFetchStrategyProvideMoreContent)(segment.fetchStrategy, fetchStrategy)) {\n spawnedSegment = pingFullSegmentRevalidation(now, tree, fetchStrategy);\n }\n break;\n }\n default:\n segment;\n }\n const requestTreeChildren = {};\n if (tree.slots !== null) {\n for(const parallelRouteKey in tree.slots){\n const childTree = tree.slots[parallelRouteKey];\n requestTreeChildren[parallelRouteKey] = pingRouteTreeAndIncludeDynamicData(now, task, route, childTree, isInsideRefetchingParent || spawnedSegment !== null, spawnedEntries, fetchStrategy);\n }\n }\n if (spawnedSegment !== null) {\n // Add the pending entry to the result map.\n spawnedEntries.set(tree.requestKey, spawnedSegment);\n }\n // Don't bother to add a refetch marker if one is already present in a parent.\n const refetchMarker = !isInsideRefetchingParent && spawnedSegment !== null ? 'refetch' : null;\n const requestTree = [\n tree.segment,\n requestTreeChildren,\n null,\n refetchMarker\n ];\n return requestTree;\n}\nfunction pingRuntimePrefetches(now, task, route, tree, spawnedRuntimePrefetches, spawnedEntries) {\n // Construct a request tree (FlightRouterState) for a runtime prefetch. If\n // a segment is part of the runtime prefetch, the tree is constructed by\n // diffing against what's already in the prefetch cache. Otherwise, we send\n // a regular FlightRouterState with no special markers.\n //\n // See pingRouteTreeAndIncludeDynamicData for details.\n if (spawnedRuntimePrefetches.has(tree.requestKey)) {\n // This segment needs a runtime prefetch.\n return pingRouteTreeAndIncludeDynamicData(now, task, route, tree, false, spawnedEntries, _types.FetchStrategy.PPRRuntime);\n }\n let requestTreeChildren = {};\n const slots = tree.slots;\n if (slots !== null) {\n for(const parallelRouteKey in slots){\n const childTree = slots[parallelRouteKey];\n requestTreeChildren[parallelRouteKey] = pingRuntimePrefetches(now, task, route, childTree, spawnedRuntimePrefetches, spawnedEntries);\n }\n }\n // This segment is not part of the runtime prefetch. Clone the base tree.\n const requestTree = [\n tree.segment,\n requestTreeChildren,\n null,\n null\n ];\n return requestTree;\n}\nfunction pingStaticSegmentData(now, task, route, segment, routeKey, tree) {\n switch(segment.status){\n case _cache.EntryStatus.Empty:\n if (false) {}\n // Upgrade to Pending so we know there's already a request in progress\n spawnPrefetchSubtask((0, _cache.fetchSegmentOnCacheMiss)(route, (0, _cache.upgradeToPendingSegment)(segment, _types.FetchStrategy.PPR), routeKey, tree));\n break;\n case _cache.EntryStatus.Pending:\n {\n // There's already a request in progress. Depending on what kind of\n // request it is, we may want to revalidate it.\n switch(segment.fetchStrategy){\n case _types.FetchStrategy.PPR:\n case _types.FetchStrategy.PPRRuntime:\n case _types.FetchStrategy.Full:\n break;\n case _types.FetchStrategy.LoadingBoundary:\n // There's a pending request, but because it's using the old\n // prefetching strategy, we can't be sure if it will be fulfilled by\n // the response — it might be inside the loading boundary. Perform\n // a revalidation, but because it's speculative, wait to do it at\n // background priority.\n if (background(task)) {\n // TODO: Instead of speculatively revalidating, consider including\n // `hasLoading` in the route tree prefetch response.\n pingPPRSegmentRevalidation(now, route, routeKey, tree);\n }\n break;\n default:\n segment.fetchStrategy;\n }\n break;\n }\n case _cache.EntryStatus.Rejected:\n {\n // The existing entry in the cache was rejected. Depending on how it\n // was originally fetched, we may or may not want to revalidate it.\n switch(segment.fetchStrategy){\n case _types.FetchStrategy.PPR:\n case _types.FetchStrategy.PPRRuntime:\n case _types.FetchStrategy.Full:\n break;\n case _types.FetchStrategy.LoadingBoundary:\n // There's a rejected entry, but it was fetched using the loading\n // boundary strategy. So the reason it wasn't returned by the server\n // might just be because it was inside a loading boundary. Or because\n // there was a dynamic rewrite. Revalidate it using the per-\n // segment strategy.\n //\n // Because a rejected segment will definitely prevent the segment (and\n // all of its children) from rendering, we perform this revalidation\n // immediately instead of deferring it to a background task.\n pingPPRSegmentRevalidation(now, route, routeKey, tree);\n break;\n default:\n segment.fetchStrategy;\n }\n break;\n }\n case _cache.EntryStatus.Fulfilled:\n break;\n default:\n segment;\n }\n// Segments do not have dependent tasks, so once the prefetch is initiated,\n// there's nothing else for us to do (except write the server data into the\n// entry, which is handled by `fetchSegmentOnCacheMiss`).\n}\n/**\n * Walks the RouteTree (including the head metadata) and collects any segments\n * that are still Empty into a Map, upgrading them to Pending. These entries\n * will be fulfilled by the inlined prefetch response.\n */ function collectInlinedEntries(now, route) {\n const entries = new Map();\n collectInlinedEntriesImpl(now, route.tree, entries);\n // Also collect the head/metadata entry.\n const headEntry = (0, _cache.readOrCreateSegmentCacheEntry)(now, _types.FetchStrategy.PPR, route.metadata);\n if (headEntry.status === _cache.EntryStatus.Empty) {\n entries.set(route.metadata.requestKey, (0, _cache.upgradeToPendingSegment)(headEntry, _types.FetchStrategy.PPR));\n }\n return entries;\n}\nfunction collectInlinedEntriesImpl(now, tree, entries) {\n const entry = (0, _cache.readOrCreateSegmentCacheEntry)(now, _types.FetchStrategy.PPR, tree);\n if (entry.status === _cache.EntryStatus.Empty) {\n entries.set(tree.requestKey, (0, _cache.upgradeToPendingSegment)(entry, _types.FetchStrategy.PPR));\n }\n if (tree.slots !== null) {\n for(const parallelRouteKey in tree.slots){\n collectInlinedEntriesImpl(now, tree.slots[parallelRouteKey], entries);\n }\n }\n}\nfunction pingPPRSegmentRevalidation(now, route, routeKey, tree) {\n const revalidatingSegment = (0, _cache.readOrCreateRevalidatingSegmentEntry)(now, _types.FetchStrategy.PPR, tree);\n switch(revalidatingSegment.status){\n case _cache.EntryStatus.Empty:\n // Spawn a prefetch request. The fetch function handles upserting\n // the entry at the correct fulfilled vary path upon completion.\n spawnPrefetchSubtask((0, _cache.fetchSegmentOnCacheMiss)(route, (0, _cache.upgradeToPendingSegment)(revalidatingSegment, _types.FetchStrategy.PPR), routeKey, tree));\n break;\n case _cache.EntryStatus.Pending:\n break;\n case _cache.EntryStatus.Fulfilled:\n case _cache.EntryStatus.Rejected:\n break;\n default:\n revalidatingSegment;\n }\n}\nfunction pingFullSegmentRevalidation(now, tree, fetchStrategy) {\n const revalidatingSegment = (0, _cache.readOrCreateRevalidatingSegmentEntry)(now, fetchStrategy, tree);\n if (revalidatingSegment.status === _cache.EntryStatus.Empty) {\n // During a Full/PPRRuntime prefetch, a single dynamic request is made for all the\n // segments that we need. So we don't initiate a request here directly. By\n // returning a pending entry from this function, it signals to the caller\n // that this segment should be included in the request that's sent to\n // the server.\n const pendingSegment = (0, _cache.upgradeToPendingSegment)(revalidatingSegment, fetchStrategy);\n // The upsert is handled by fulfillEntrySpawnedByRuntimePrefetch\n // when the dynamic prefetch response is written into the cache.\n return pendingSegment;\n } else {\n // There's already a revalidation in progress.\n const nonEmptyRevalidatingSegment = revalidatingSegment;\n if ((0, _cache.canNewFetchStrategyProvideMoreContent)(nonEmptyRevalidatingSegment.fetchStrategy, fetchStrategy)) {\n // The existing revalidation was fetched using a less specific strategy.\n // Reset it and start a new revalidation.\n const emptySegment = (0, _cache.overwriteRevalidatingSegmentCacheEntry)(now, fetchStrategy, tree);\n const pendingSegment = (0, _cache.upgradeToPendingSegment)(emptySegment, fetchStrategy);\n // The upsert is handled by fulfillEntrySpawnedByRuntimePrefetch\n // when the dynamic prefetch response is written into the cache.\n return pendingSegment;\n }\n switch(nonEmptyRevalidatingSegment.status){\n case _cache.EntryStatus.Pending:\n // There's already an in-progress prefetch that includes this segment.\n return null;\n case _cache.EntryStatus.Fulfilled:\n case _cache.EntryStatus.Rejected:\n // A previous revalidation attempt finished, but we chose not to replace\n // the existing entry in the cache. Don't try again until or unless the\n // revalidation entry expires.\n return null;\n default:\n nonEmptyRevalidatingSegment;\n return null;\n }\n }\n}\nfunction doesCurrentSegmentMatchCachedSegment(route, currentSegment, cachedSegment) {\n if (cachedSegment === _segment.PAGE_SEGMENT_KEY) {\n // In the FlightRouterState stored by the router, the page segment has the\n // rendered search params appended to the name of the segment. In the\n // prefetch cache, however, this is stored separately. So, when comparing\n // the router's current FlightRouterState to the cached FlightRouterState,\n // we need to make sure we compare both parts of the segment.\n // TODO: This is not modeled clearly. We use the same type,\n // FlightRouterState, for both the CacheNode tree _and_ the prefetch cache\n // _and_ the server response format, when conceptually those are three\n // different things and treated in different ways. We should encode more of\n // this information into the type design so mistakes are less likely.\n return currentSegment === (0, _segment.addSearchParamsIfPageSegment)(_segment.PAGE_SEGMENT_KEY, Object.fromEntries(new URLSearchParams(route.renderedSearch)));\n }\n // Non-page segments are compared using the same function as the server\n return (0, _matchsegments.matchSegment)(cachedSegment, currentSegment);\n}\n// -----------------------------------------------------------------------------\n// The remainder of the module is a MinHeap implementation. Try not to put any\n// logic below here unless it's related to the heap algorithm. We can extract\n// this to a separate module if/when we need multiple kinds of heaps.\n// -----------------------------------------------------------------------------\nfunction compareQueuePriority(a, b) {\n // Since the queue is a MinHeap, this should return a positive number if b is\n // higher priority than a, and a negative number if a is higher priority\n // than b.\n // `priority` is an integer, where higher numbers are higher priority.\n const priorityDiff = b.priority - a.priority;\n if (priorityDiff !== 0) {\n return priorityDiff;\n }\n // If the priority is the same, check which phase the prefetch is in — is it\n // prefetching the route tree, or the segments? Route trees are prioritized.\n const phaseDiff = b.phase - a.phase;\n if (phaseDiff !== 0) {\n return phaseDiff;\n }\n // Finally, check the insertion order. `sortId` is an incrementing counter\n // assigned to prefetches. We want to process the newest prefetches first.\n return b.sortId - a.sortId;\n}\nfunction heapPush(heap, node) {\n const index = heap.length;\n heap.push(node);\n node._heapIndex = index;\n heapSiftUp(heap, node, index);\n}\nfunction heapPeek(heap) {\n return heap.length === 0 ? null : heap[0];\n}\nfunction heapPop(heap) {\n if (heap.length === 0) {\n return null;\n }\n const first = heap[0];\n first._heapIndex = -1;\n const last = heap.pop();\n if (last !== first) {\n heap[0] = last;\n last._heapIndex = 0;\n heapSiftDown(heap, last, 0);\n }\n return first;\n}\nfunction heapDelete(heap, node) {\n const index = node._heapIndex;\n if (index !== -1) {\n node._heapIndex = -1;\n if (heap.length !== 0) {\n const last = heap.pop();\n if (last !== node) {\n heap[index] = last;\n last._heapIndex = index;\n heapSiftDown(heap, last, index);\n }\n }\n }\n}\nfunction heapResift(heap, node) {\n const index = node._heapIndex;\n if (index !== -1) {\n if (index === 0) {\n heapSiftDown(heap, node, 0);\n } else {\n const parentIndex = index - 1 >>> 1;\n const parent = heap[parentIndex];\n if (compareQueuePriority(parent, node) > 0) {\n // The parent is larger. Sift up.\n heapSiftUp(heap, node, index);\n } else {\n // The parent is smaller (or equal). Sift down.\n heapSiftDown(heap, node, index);\n }\n }\n }\n}\nfunction heapSiftUp(heap, node, i) {\n let index = i;\n while(index > 0){\n const parentIndex = index - 1 >>> 1;\n const parent = heap[parentIndex];\n if (compareQueuePriority(parent, node) > 0) {\n // The parent is larger. Swap positions.\n heap[parentIndex] = node;\n node._heapIndex = parentIndex;\n heap[index] = parent;\n parent._heapIndex = index;\n index = parentIndex;\n } else {\n // The parent is smaller. Exit.\n return;\n }\n }\n}\nfunction heapSiftDown(heap, node, i) {\n let index = i;\n const length = heap.length;\n const halfLength = length >>> 1;\n while(index < halfLength){\n const leftIndex = (index + 1) * 2 - 1;\n const left = heap[leftIndex];\n const rightIndex = leftIndex + 1;\n const right = heap[rightIndex];\n // If the left or right node is smaller, swap with the smaller of those.\n if (compareQueuePriority(left, node) < 0) {\n if (rightIndex < length && compareQueuePriority(right, left) < 0) {\n heap[index] = right;\n right._heapIndex = index;\n heap[rightIndex] = node;\n node._heapIndex = rightIndex;\n index = rightIndex;\n } else {\n heap[index] = left;\n left._heapIndex = index;\n heap[leftIndex] = node;\n node._heapIndex = leftIndex;\n index = leftIndex;\n }\n } else if (rightIndex < length && compareQueuePriority(right, node) < 0) {\n heap[index] = right;\n right._heapIndex = index;\n heap[rightIndex] = node;\n node._heapIndex = rightIndex;\n index = rightIndex;\n } else {\n // Neither child is smaller. Exit.\n return;\n }\n }\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=scheduler.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3NlZ21lbnQtY2FjaGUvc2NoZWR1bGVyLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQTZTZ0JBLGtCQUFrQjtlQUFsQkE7O0lBNkRBQyxtQkFBbUI7ZUFBbkJBOztJQW9DQUMscUJBQXFCO2VBQXJCQTs7SUF5RkFDLGdCQUFnQjtlQUFoQkE7O0lBeEtBQyxzQkFBc0I7ZUFBdEJBOztJQTlEQUMsb0JBQW9CO2VBQXBCQTs7SUE5QkFDLHlCQUF5QjtlQUF6QkE7Ozs0Q0E5TmE7MkNBQ0E7bUNBcUJ0QjtzQ0FFd0I7bUNBS3hCO3FDQVFBO2lDQUVpQjtBQUV4QixNQUFNQyxvQkFDSixPQUFPQyxtQkFBbUIsYUFDdEJBLGlCQUNBLENBQUNDLEtBQ0NDLFFBQVFDLE9BQU8sR0FDWkMsSUFBSSxDQUFDSCxJQUNMSSxLQUFLLENBQUMsQ0FBQ0MsUUFDTkMsV0FBVztZQUNULE1BQU1EO1FBQ1I7QUFvSlosTUFBTUUsV0FBZ0MsRUFBRTtBQUV4QyxJQUFJQyxxQkFBcUI7QUFFekIsSUFBSUMsZ0JBQWdCO0FBQ3BCLElBQUlDLHVCQUF1QjtBQUUzQiw4RUFBOEU7QUFDOUUsMEVBQTBFO0FBQzFFLCtFQUErRTtBQUMvRSxJQUFJQywwQkFBK0M7QUFFbkQsbUVBQW1FO0FBQ25FLE1BQU1DLDJCQUEyQjtBQUVqQyx3RUFBd0U7QUFDeEUsdURBQXVEO0FBQ3ZELElBQUlDLG9DQUNGO0FBTUssU0FBU2hCO0lBQ2QsbUVBQW1FO0lBQ25FLHVCQUF1QjtJQUN2QixJQUFJZ0Isc0NBQXNDLE1BQU07UUFDOUNDLGFBQWFEO0lBQ2Y7SUFFQSxtREFBbUQ7SUFDbkRBLG9DQUFvQ1AsV0FBVztRQUM3Q08sb0NBQW9DO1FBQ3BDLDhEQUE4RDtRQUM5RHBCO0lBQ0YsR0FBR21CO0FBQ0w7QUFpQk8sU0FBU2hCLHFCQUNkbUIsR0FBa0IsRUFDbEJDLG9CQUF1QyxFQUN2Q0MsYUFBd0MsRUFDeENDLFFB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VyxHQUFHZjtZQUNuQkEsS0FBS3ZKLFVBQVUsR0FBR3NLO1lBRWxCZCxRQUFRYztRQUNWLE9BQU87WUFDTCxrQ0FBa0M7WUFDbEM7UUFDRjtJQUNGO0FBQ0YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvY2xpZW50L2NvbXBvbmVudHMvc2VnbWVudC1jYWNoZS9zY2hlZHVsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgU2VnbWVudCBhcyBGbGlnaHRSb3V0ZXJTdGF0ZVNlZ21lbnQsXG4gIFNlZ21lbnQsXG59IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci10eXBlcydcbmltcG9ydCB7IFByZWZldGNoSGludCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci10eXBlcydcbmltcG9ydCB7IG1hdGNoU2VnbWVudCB9IGZyb20gJy4uL21hdGNoLXNlZ21lbnRzJ1xuaW1wb3J0IHtcbiAgcmVhZE9yQ3JlYXRlUm91dGVDYWNoZUVudHJ5LFxuICByZWFkT3JDcmVhdGVTZWdtZW50Q2FjaGVFbnRyeSxcbiAgZmV0Y2hSb3V0ZU9uQ2FjaGVNaXNzLFxuICBmZXRjaFNlZ21lbnRPbkNhY2hlTWlzcyxcbiAgZmV0Y2hJbmxpbmVkU2VnbWVudHNPbkNhY2hlTWlzcyxcbiAgRW50cnlTdGF0dXMsXG4gIHR5cGUgRnVsZmlsbGVkUm91dGVDYWNoZUVudHJ5LFxuICB0eXBlIFJvdXRlQ2FjaGVFbnRyeSxcbiAgdHlwZSBTZWdtZW50Q2FjaGVFbnRyeSxcbiAgdHlwZSBSb3V0ZVRyZWUsXG4gIGZldGNoU2VnbWVudFByZWZldGNoZXNVc2luZ0R5bmFtaWNSZXF1ZXN0LFxuICB0eXBlIFBlbmRpbmdTZWdtZW50Q2FjaGVFbnRyeSxcbiAgY29udmVydFJvdXRlVHJlZVRvRmxpZ2h0Um91dGVyU3RhdGUsXG4gIHJlYWRPckNyZWF0ZVJldmFsaWRhdGluZ1NlZ21lbnRFbnRyeSxcbiAgdXBncmFkZVRvUGVuZGluZ1NlZ21lbnQsXG4gIG92ZXJ3cml0ZVJldmFsaWRhdGluZ1NlZ21lbnRDYWNoZUVudHJ5LFxuICBjYW5OZXdGZXRjaFN0cmF0ZWd5UHJvdmlkZU1vcmVDb250ZW50LFxuICBhdHRlbXB0VG9GdWxmaWxsRHluYW1pY1NlZ21lbnRGcm9tQkZDYWNoZSxcbiAgYXR0ZW1wdFRvVXBncmFkZVNlZ21lbnRGcm9tQkZDYWNoZSxcbn0gZnJvbSAnLi9jYWNoZSdcbmltcG9ydCB0eXBlIHsgUm91dGVDYWNoZUtleSB9IGZyb20gJy4vY2FjaGUta2V5J1xuaW1wb3J0IHsgY3JlYXRlQ2FjaGVLZXkgfSBmcm9tICcuL2NhY2hlLWtleSdcbmltcG9ydCB7XG4gIEZldGNoU3RyYXRlZ3ksXG4gIHR5cGUgUHJlZmV0Y2hUYXNrRmV0Y2hTdHJhdGVneSxcbiAgUHJlZmV0Y2hQcmlvcml0eSxcbn0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7XG4gIGdldEN1cnJlbnRSb3V0ZUNhY2hlVmVyc2lvbixcbiAgZ2V0Q3VycmVudFNlZ21lbnRDYWNoZVZlcnNpb24sXG59IGZyb20gJy4vY2FjaGUnXG5pbXBvcnQge1xuICBhZGRTZWFyY2hQYXJhbXNJZlBhZ2VTZWdtZW50LFxuICBQQUdFX1NFR01FTlRfS0VZLFxufSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL3NlZ21lbnQnXG5pbXBvcnQgdHlwZSB7IFNlZ21lbnRSZXF1ZXN0S2V5IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9zZWdtZW50LWNhY2hlL3NlZ21lbnQtdmFsdWUtZW5jb2RpbmcnXG5pbXBvcnQgeyBjbGVhbnVwIH0gZnJvbSAnLi9scnUnXG5cbmNvbnN0IHNjaGVkdWxlTWljcm90YXNrID1cbiAgdHlwZW9mIHF1ZXVlTWljcm90YXNrID09PSAnZnVuY3Rpb24nXG4gICAgPyBxdWV1ZU1pY3JvdGFza1xuICAgIDogKGZuOiAoKSA9PiB1bmtub3duKSA9PlxuICAgICAgICBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgICAgIC50aGVuKGZuKVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuXG5leHBvcnQgdHlwZSBQcmVmZXRjaFRhc2sgPSB7XG4gIGtleTogUm91dGVDYWNoZUtleVxuXG4gIC8qKlxuICAgKiBUaGUgRmxpZ2h0Um91dGVyU3RhdGUgYXQgdGhlIHRpbWUgdGhlIHRhc2sgd2FzIGluaXRpYXRlZC4gVGhpcyBpcyBuZWVkZWRcbiAgICogd2hlbiBmYWxsaW5nIGJhY2sgdG8gdGhlIG5vbi1QUFIgYmVoYXZpb3IsIHdoaWNoIG9ubHkgcHJlZmV0Y2hlcyB1cCB0b1xuICAgKiB0aGUgZmlyc3QgbG9hZGluZyBib3VuZGFyeS5cbiAgICovXG4gIHRyZWVBdFRpbWVPZlByZWZldGNoOiBGbGlnaHRSb3V0ZXJTdGF0ZVxuXG4gIC8qKlxuICAgKiBUaGUgY2FjaGUgdmVyc2lvbnMgYXQgdGhlIHRpbWUgdGhlIHRhc2sgd2FzIGluaXRpYXRlZC4gVXNlZCB0byBkZXRlcm1pbmVcbiAgICogaWYgdGhlIGNhY2hlIHdhcyBpbnZhbGlkYXRlZCBzaW5jZSB0aGUgdGFzayB3YXMgaW5pdGlhdGVkLiBSb3V0ZSBhbmRcbiAgICogc2VnbWVudCBjYWNoZXMgaGF2ZSBzZXBhcmF0ZSB2ZXJzaW9ucyBzbyB0aGV5IGNhbiBiZSBpbnZhbGlkYXRlZFxuICAgKiBpbmRlcGVuZGVudGx5LlxuICAgKi9cbiAgcm91dGVDYWNoZVZlcnNpb246IG51bWJlclxuICBzZWdtZW50Q2FjaGVWZXJzaW9uOiBudW1iZXJcblxuICAvKipcbiAgICogV2hldGhlciB0byBwcmVmZXRjaCBkeW5hbWljIGRhdGEsIGluIGFkZGl0aW9uIHRvIHN0YXRpYyBkYXRhLiBUaGlzIGlzXG4gICAqIHVzZWQgYnkgYDxMaW5rIHByZWZldGNoPXt0cnVlfT5gLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgYSB0YXNrIHdpdGggYEZldGNoU3RyYXRlZ3kuUFBSYCBtaWdodCBuZWVkIHRvIHVzZVxuICAgKiBgRmV0Y2hTdHJhdGVneS5Mb2FkaW5nQm91bmRhcnlgIGluc3RlYWQgaWYgd2UgZmluZCBvdXQgdGhhdCBhIHJvdXRlXG4gICAqIGRvZXMgbm90IHN1cHBvcnQgUFBSIGFmdGVyIGRvaW5nIHRoZSBpbml0aWFsIHJvdXRlIHByZWZldGNoLlxuICAgKi9cbiAgZmV0Y2hTdHJhdGVneTogUHJlZmV0Y2hUYXNrRmV0Y2hTdHJhdGVneVxuXG4gIC8qKlxuICAgKiBzb3J0SWQgaXMgYW4gaW5jcmVtZW50aW5nIGNvdW50ZXJcbiAgICpcbiAgICogTmV3ZXIgcHJlZmV0Y2hlcyBhcmUgcHJpb3JpdGl6ZWQgb3ZlciBvbGRlciBvbmVzLCBzbyB0aGF0IGFzIG5ldyBsaW5rc1xuICAgKiBlbnRlciB0aGUgdmlld3BvcnQsIHRoZXkgYXJlIG5vdCBzdGFydmVkIGJ5IG9sZGVyIGxpbmtzIHRoYXQgYXJlIG5vXG4gICAqIGxvbmdlciByZWxldmFudC4gSW4gdGhlIGZ1dHVyZSwgd2UgY2FuIGFkZCBhZGRpdGlvbmFsIHByaW9yaXRpemF0aW9uXG4gICAqIGhldXJpc3RpY3MsIGxpa2UgcmVtb3ZpbmcgcHJlZmV0Y2hlcyBvbmNlIGEgbGluayBsZWF2ZXMgdGhlIHZpZXdwb3J0LlxuICAgKlxuICAgKiBUaGUgc29ydElkIGlzIGFzc2lnbmVkIHdoZW4gdGhlIHByZWZldGNoIGlzIGluaXRpYXRlZCwgYW5kIHJlYXNzaWduZWQgaWZcbiAgICogdGhlIHNhbWUgdGFzayBpcyBwcmVmZXRjaGVkIGFnYWluIChlZmZlY3RpdmVseSBidW1waW5nIGl0IHRvIHRoZSB0b3Agb2ZcbiAgICogdGhlIHF1ZXVlKS5cbiAgICpcbiAgICogVE9ETzogV2UgY2FuIGFkZCBhZGRpdGlvbmFsIGZpZWxkcyBoZXJlIHRvIGluZGljYXRlIHdoYXQga2luZCBvZiBwcmVmZXRjaFxuICAgKiBpdCBpcy4gRm9yIGV4YW1wbGUsIHdhcyBpdCBpbml0aWF0ZWQgYnkgYSBsaW5rPyBPciB3YXMgaXQgYW4gaW1wZXJhdGl2ZVxuICAgKiBjYWxsPyBJZiBpdCB3YXMgaW5pdGlhdGVkIGJ5IGEgbGluaywgd2UgY2FuIHJlbW92ZSBpdCBmcm9tIHRoZSBxdWV1ZSB3aGVuXG4gICAqIHRoZSBsaW5rIGxlYXZlcyB0aGUgdmlld3BvcnQsIGJ1dCBpZiBpdCB3YXMgYW4gaW1wZXJhdGl2ZSBjYWxsLCB0aGVuIHdlXG4gICAqIHNob3VsZCBrZWVwIGl0IGluIHRoZSBxdWV1ZSB1bnRpbCBpdCdzIGZ1bGZpbGxlZC5cbiAgICpcbiAgICogV2UgY2FuIGFsc28gYWRkIHByaW9yaXR5IGxldmVscy4gRm9yIGV4YW1wbGUsIGhvdmVyaW5nIG92ZXIgYSBsaW5rIGNvdWxkXG4gICAqIGluY3JlYXNlIHRoZSBwcmlvcml0eSBvZiBpdHMgcHJlZmV0Y2guXG4gICAqL1xuICBzb3J0SWQ6IG51bWJlclxuXG4gIC8qKlxuICAgKiBUaGUgcHJpb3JpdHkgb2YgdGhlIHRhc2suIExpa2Ugc29ydElkLCB0aGlzIGFmZmVjdHMgdGhlIHRhc2sncyBwb3NpdGlvbiBpblxuICAgKiB0aGUgcXVldWUsIHNvIGl0IG11c3QgbmV2ZXIgYmUgdXBkYXRlZCB3aXRob3V0IHJlc2lmdGluZyB0aGUgaGVhcC5cbiAgICovXG4gIHByaW9yaXR5OiBQcmVmZXRjaFByaW9yaXR5XG5cbiAgLyoqXG4gICAqIFRoZSBwaGFzZSBvZiB0aGUgdGFzay4gVGFza3MgYXJlIHNwbGl0IGludG8gbXVsdGlwbGUgcGhhc2VzIHNvIHRoYXQgdGhlaXJcbiAgICogcHJpb3JpdHkgY2FuIGJlIGFkanVzdGVkIGJhc2VkIG9uIHdoYXQga2luZCBvZiB3b3JrIHRoZXkncmUgZG9pbmcuXG4gICAqIENvbmNyZXRlbHksIHByZWZldGNoaW5nIHRoZSByb3V0ZSB0cmVlIGlzIGhpZ2hlciBwcmlvcml0eSB0aGFuIHByZWZldGNoaW5nXG4gICAqIHNlZ21lbnQgZGF0YS5cbiAgICovXG4gIHBoYXNlOiBQcmVmZXRjaFBoYXNlXG5cbiAgLyoqXG4gICAqIFRoZXNlIGZpZWxkcyBhcmUgdGVtcG9yYXJ5IHN0YXRlIGZvciB0cmFja2luZyB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGFzay5cbiAgICogVGhleSBhcmUgcmVzZXQgYWZ0ZXIgZWFjaCBpdGVyYXRpb24gb2YgdGhlIHRhc2sgcXVldWUuXG4gICAqL1xuICBoYXNCYWNrZ3JvdW5kV29yazogYm9vbGVhblxuICBzcGF3bmVkUnVudGltZVByZWZldGNoZXM6IFNldDxTZWdtZW50UmVxdWVzdEtleT4gfCBudWxsXG5cbiAgLyoqXG4gICAqIFRydWUgaWYgdGhlIHByZWZldGNoIHdhcyBjYW5jZWxsZWQuXG4gICAqL1xuICBpc0NhbmNlbGVkOiBib29sZWFuXG5cbiAgLyoqXG4gICAqIFRoZSBjYWxsYmFjayBwYXNzZWQgdG8gYHJvdXRlci5wcmVmZXRjaGAsIGlmIGdpdmVuLlxuICAgKi9cbiAgb25JbnZhbGlkYXRlOiBudWxsIHwgKCgpID0+IHZvaWQpXG5cbiAgLyoqXG4gICAqIFRoZSBpbmRleCBvZiB0aGUgdGFzayBpbiB0aGUgaGVhcCdzIGJhY2tpbmcgYXJyYXkuIFVzZWQgdG8gZWZmaWNpZW50bHlcbiAgICogY2hhbmdlIHRoZSBwcmlvcml0eSBvZiBhIHRhc2sgYnkgcmUtc2lmdGluZyBpdCwgd2hpY2ggcmVxdWlyZXMga25vd2luZ1xuICAgKiB3aGVyZSBpdCBpcyBpbiB0aGUgYXJyYXkuIFRoaXMgaXMgb25seSB1c2VkIGludGVybmFsbHkgYnkgdGhlIGhlYXBcbiAgICogYWxnb3JpdGhtLiBUaGUgbmFpdmUgYWx0ZXJuYXRpdmUgaXMgaW5kZXhPZiBldmVyeSB0aW1lIGEgdGFzayBpcyBxdWV1ZWQsXG4gICAqIHdoaWNoIGhhcyBPKG4pIGNvbXBsZXhpdHkuXG4gICAqXG4gICAqIFdlIGFsc28gdXNlIHRoaXMgZmllbGQgdG8gY2hlY2sgd2hldGhlciBhIHRhc2sgaXMgY3VycmVudGx5IGluIHRoZSBxdWV1ZS5cbiAgICovXG4gIF9oZWFwSW5kZXg6IG51bWJlclxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgcHJlZmV0Y2ggdGFzayBmaW5pc2hlcyAoZWl0aGVyIGNvbXBsZXRlZCBvciBjYW5jZWxlZCkuXG4gICAqIFVzZWQgYnkgdGhlIEluc3RhbnQgTmF2aWdhdGlvbiBUZXN0aW5nIEFQSSB0byBhd2FpdCBwcmVmZXRjaCBjb21wbGV0aW9uLlxuICAgKiBOb3QgZXhwb3NlZCBpbiBwcm9kdWN0aW9uIGJ1aWxkcyBieSBkZWZhdWx0LlxuICAgKlxuICAgKiBOb3RlOiBcIkNvbXBsZXRlXCIgbWVhbnMgdGhlIHNjaGVkdWxlciBoYXMgbm8gbW9yZSB3b3JrIHRvIGRvIGZvciB0aGlzIHRhc2tcbiAgICog4oCUIGFsbCBuZXR3b3JrIHJlcXVlc3RzIGhhdmUgYmVlbiBzcGF3bmVkLiBJdCBkb2VzIG5vdCBtZWFuIGFsbCBkYXRhIGhhc1xuICAgKiBiZWVuIHJldHJpZXZlZDsgcmVzcG9uc2VzIG1heSBzdGlsbCBiZSBpbiBmbGlnaHQuXG4gICAqL1xuICBfb25Db21wbGV0ZT86ICgpID0+IHZvaWRcbn1cblxuY29uc3QgZW51bSBQcmVmZXRjaFRhc2tFeGl0U3RhdHVzIHtcbiAgLyoqXG4gICAqIFRoZSB0YXNrIHlpZWxkZWQgYmVjYXVzZSB0aGVyZSBhcmUgdG9vIG1hbnkgcmVxdWVzdHMgaW4gcHJvZ3Jlc3MuXG4gICAqL1xuICBJblByb2dyZXNzLFxuXG4gIC8qKlxuICAgKiBUaGUgdGFzayBpcyBibG9ja2VkLiBJdCBuZWVkcyBtb3JlIGRhdGEgYmVmb3JlIGl0IGNhbiBwcm9jZWVkLlxuICAgKlxuICAgKiBDdXJyZW50bHkgdGhlIG9ubHkgcmVhc29uIHRoaXMgaGFwcGVucyBpcyB3ZSdyZSBzdGlsbCB3YWl0aW5nIHRvIHJlY2VpdmUgYVxuICAgKiByb3V0ZSB0cmVlIGZyb20gdGhlIHNlcnZlciwgYmVjYXVzZSB3ZSBjYW4ndCBzdGFydCBwcmVmZXRjaGluZyB0aGUgc2VnbWVudHNcbiAgICogdW50aWwgd2Uga25vdyB3aGF0IHRvIHByZWZldGNoLlxuICAgKi9cbiAgQmxvY2tlZCxcblxuICAvKipcbiAgICogVGhlcmUncyBub3RoaW5nIGxlZnQgdG8gcHJlZmV0Y2guXG4gICAqL1xuICBEb25lLFxufVxuXG4vKipcbiAqIFByZWZldGNoIHRhc2tzIGFyZSBwcm9jZXNzZWQgaW4gdHdvIHBoYXNlczogZmlyc3QgdGhlIHJvdXRlIHRyZWUgaXMgZmV0Y2hlZCxcbiAqIHRoZW4gdGhlIHNlZ21lbnRzLiBXZSB1c2UgdGhpcyB0byBwcmlvcnRpemUgdGFza3MgdGhhdCBoYXZlIG5vdCB5ZXQgZmV0Y2hlZFxuICogdGhlIHJvdXRlIHRyZWUuXG4gKi9cbmNvbnN0IGVudW0gUHJlZmV0Y2hQaGFzZSB7XG4gIFJvdXRlVHJlZSA9IDEsXG4gIFNlZ21lbnRzID0gMCxcbn1cblxuZXhwb3J0IHR5cGUgUHJlZmV0Y2hTdWJ0YXNrUmVzdWx0PFQ+ID0ge1xuICAvKipcbiAgICogQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbmV0d29yayBjb25uZWN0aW9uIGlzIGNsb3NlZC5cbiAgICovXG4gIGNsb3NlZDogUHJvbWlzZTx2b2lkPlxuICB2YWx1ZTogVFxufVxuXG5jb25zdCB0YXNrSGVhcDogQXJyYXk8UHJlZmV0Y2hUYXNrPiA9IFtdXG5cbmxldCBpblByb2dyZXNzUmVxdWVzdHMgPSAwXG5cbmxldCBzb3J0SWRDb3VudGVyID0gMFxubGV0IGRpZFNjaGVkdWxlTWljcm90YXNrID0gZmFsc2VcblxuLy8gVGhlIG1vc3QgcmVjZW50bHkgaG92ZXJlZCAob3IgdG91Y2hlZCwgZXRjKSBsaW5rLCBpLmUuIHRoZSBtb3N0IHJlY2VudCB0YXNrXG4vLyBzY2hlZHVsZWQgYXQgSW50ZW50IHByaW9yaXR5LiBUaGVyZSdzIG9ubHkgZXZlciBhIHNpbmdsZSB0YXNrIGF0IEludGVudFxuLy8gcHJpb3JpdHkgYXQgYSB0aW1lLiBXZSByZXNlcnZlIHNwZWNpYWwgbmV0d29yayBiYW5kd2lkdGggZm9yIHRoaXMgdGFzayBvbmx5LlxubGV0IG1vc3RSZWNlbnRseUhvdmVyZWRMaW5rOiBQcmVmZXRjaFRhc2sgfCBudWxsID0gbnVsbFxuXG4vLyBDRE4gY2FjaGUgcHJvcGFnYXRpb24gZGVsYXkgYWZ0ZXIgcmV2YWxpZGF0aW9uIChpbiBtaWxsaXNlY29uZHMpXG5jb25zdCBSRVZBTElEQVRJT05fQ09PTERPV05fTVMgPSAzMDBcblxuLy8gVGltZW91dCBoYW5kbGUgZm9yIHRoZSByZXZhbGlkYXRpb24gY29vbGRvd24uIFdoZW4gbm9uLW51bGwsIHByZWZldGNoXG4vLyByZXF1ZXN0cyBhcmUgYmxvY2tlZCB0byBhbGxvdyBDRE4gY2FjaGUgcHJvcGFnYXRpb24uXG5sZXQgcmV2YWxpZGF0aW9uQ29vbGRvd25UaW1lb3V0SGFuZGxlOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPVxuICBudWxsXG5cbi8qKlxuICogQ2FsbGVkIGJ5IHRoZSBjYWNoZSB3aGVuIHJldmFsaWRhdGlvbiBvY2N1cnMuIFN0YXJ0cyBhIGNvb2xkb3duIHBlcmlvZFxuICogZHVyaW5nIHdoaWNoIHByZWZldGNoIHJlcXVlc3RzIGFyZSBibG9ja2VkIHRvIGFsbG93IENETiBjYWNoZSBwcm9wYWdhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0UmV2YWxpZGF0aW9uQ29vbGRvd24oKTogdm9pZCB7XG4gIC8vIENsZWFyIGFueSBleGlzdGluZyB0aW1lb3V0IGluIGNhc2UgbXVsdGlwbGUgcmV2YWxpZGF0aW9ucyBoYXBwZW5cbiAgLy8gaW4gcXVpY2sgc3VjY2Vzc2lvbi5cbiAgaWYgKHJldmFsaWRhdGlvbkNvb2xkb3duVGltZW91dEhhbmRsZSAhPT0gbnVsbCkge1xuICAgIGNsZWFyVGltZW91dChyZXZhbGlkYXRpb25Db29sZG93blRpbWVvdXRIYW5kbGUpXG4gIH1cblxuICAvLyBTY2hlZHVsZSB0aGUgY29vbGRvd24gdG8gZXhwaXJlIGFmdGVyIHRoZSBkZWxheS5cbiAgcmV2YWxpZGF0aW9uQ29vbGRvd25UaW1lb3V0SGFuZGxlID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgcmV2YWxpZGF0aW9uQ29vbGRvd25UaW1lb3V0SGFuZGxlID0gbnVsbFxuICAgIC8vIFJldHJ5IHRoZSBwcmVmZXRjaCBxdWV1ZSBub3cgdGhhdCB0aGUgY29vbGRvd24gaGFzIGV4cGlyZWQuXG4gICAgcGluZ1ByZWZldGNoU2NoZWR1bGVyKClcbiAgfSwgUkVWQUxJREFUSU9OX0NPT0xET1dOX01TKVxufVxuXG5leHBvcnQgdHlwZSBJbmNsdWRlRHluYW1pY0RhdGEgPSBudWxsIHwgJ2Z1bGwnIHwgJ2R5bmFtaWMnXG5cbi8qKlxuICogSW5pdGlhdGVzIGEgcHJlZmV0Y2ggdGFzayBmb3IgdGhlIGdpdmVuIFVSTC4gSWYgYSBwcmVmZXRjaCBmb3IgdGhlIHNhbWUgVVJMXG4gKiBpcyBhbHJlYWR5IGluIHByb2dyZXNzLCB0aGlzIHdpbGwgYnVtcCBpdCB0byB0aGUgdG9wIG9mIHRoZSBxdWV1ZS5cbiAqXG4gKiBUaGlzIGlzIG5vdCBhIHVzZXItZmFjaW5nIGZ1bmN0aW9uLiBCeSB0aGUgdGltZSB0aGlzIGlzIGNhbGxlZCwgdGhlIGhyZWYgaXNcbiAqIGV4cGVjdGVkIHRvIGJlIHZhbGlkYXRlZCBhbmQgbm9ybWFsaXplZC5cbiAqXG4gKiBAcGFyYW0ga2V5IFRoZSBSb3V0ZUNhY2hlS2V5IHRvIHByZWZldGNoLlxuICogQHBhcmFtIHRyZWVBdFRpbWVPZlByZWZldGNoIFRoZSBhcHAncyBjdXJyZW50IEZsaWdodFJvdXRlclN0YXRlXG4gKiBAcGFyYW0gZmV0Y2hTdHJhdGVneSBXaGV0aGVyIHRvIHByZWZldGNoIGR5bmFtaWMgZGF0YSwgaW4gYWRkaXRpb24gdG9cbiAqIHN0YXRpYyBkYXRhLiBUaGlzIGlzIHVzZWQgYnkgYDxMaW5rIHByZWZldGNoPXt0cnVlfT5gLlxuICogQHBhcmFtIF9vbkNvbXBsZXRlIENhbGxlZCB3aGVuIHRoZSBwcmVmZXRjaCB0YXNrIGZpbmlzaGVzLiBUZXN0aW5nIEFQSSBvbmx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2NoZWR1bGVQcmVmZXRjaFRhc2soXG4gIGtleTogUm91dGVDYWNoZUtleSxcbiAgdHJlZUF0VGltZU9mUHJlZmV0Y2g6IEZsaWdodFJvdXRlclN0YXRlLFxuICBmZXRjaFN0cmF0ZWd5OiBQcmVmZXRjaFRhc2tGZXRjaFN0cmF0ZWd5LFxuICBwcmlvcml0eTogUHJlZmV0Y2hQcmlvcml0eSxcbiAgb25JbnZhbGlkYXRlOiBudWxsIHwgKCgpID0+IHZvaWQpLFxuICBfb25Db21wbGV0ZT86ICgpID0+IHZvaWRcbik6IFByZWZldGNoVGFzayB7XG4gIC8vIFNwYXduIGEgbmV3IHByZWZldGNoIHRhc2tcbiAgY29uc3QgdGFzazogUHJlZmV0Y2hUYXNrID0ge1xuICAgIGtleSxcbiAgICB0cmVlQXRUaW1lT2ZQcmVmZXRjaCxcbiAgICByb3V0ZUNhY2hlVmVyc2lvbjogZ2V0Q3VycmVudFJvdXRlQ2FjaGVWZXJzaW9uKCksXG4gICAgc2VnbWVudENhY2hlVmVyc2lvbjogZ2V0Q3VycmVudFNlZ21lbnRDYWNoZVZlcnNpb24oKSxcbiAgICBwcmlvcml0eSxcbiAgICBwaGFzZTogUHJlZmV0Y2hQaGFzZS5Sb3V0ZVRyZWUsXG4gICAgaGFzQmFja2dyb3VuZFdvcms6IGZhbHNlLFxuICAgIHNwYXduZWRSdW50aW1lUHJlZmV0Y2hlczogbnVsbCxcbiAgICBmZXRjaFN0cmF0ZWd5LFxuICAgIHNvcnRJZDogc29ydElkQ291bnRlcisrLFxuICAgIGlzQ2FuY2VsZWQ6IGZhbHNlLFxuICAgIG9uSW52YWxpZGF0ZSxcbiAgICBfaGVhcEluZGV4OiAtMSxcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0VYUE9TRV9URVNUSU5HX0FQSSkge1xuICAgIHRhc2suX29uQ29tcGxldGUgPSBfb25Db21wbGV0ZVxuICB9XG5cbiAgdHJhY2tNb3N0UmVjZW50bHlIb3ZlcmVkTGluayh0YXNrKVxuXG4gIGhlYXBQdXNoKHRhc2tIZWFwLCB0YXNrKVxuXG4gIC8vIFNjaGVkdWxlIGFuIGFzeW5jIHRhc2sgdG8gcHJvY2VzcyB0aGUgcXVldWUuXG4gIC8vXG4gIC8vIFRoZSBtYWluIHJlYXNvbiB3ZSBwcm9jZXNzIHRoZSBxdWV1ZSBpbiBhbiBhc3luYyB0YXNrIGlzIGZvciBiYXRjaGluZy5cbiAgLy8gSXQncyBjb21tb24gZm9yIGEgc2luZ2xlIEpTIHRhc2svZXZlbnQgdG8gdHJpZ2dlciBtdWx0aXBsZSBwcmVmZXRjaGVzLlxuICAvLyBCeSBkZWZlcnJpbmcgdG8gYSBtaWNyb3Rhc2ssIHdlIG9ubHkgcHJvY2VzcyB0aGUgcXVldWUgb25jZSBwZXIgSlMgdGFzay5cbiAgLy8gSWYgdGhleSBoYXZlIGRpZmZlcmVudCBwcmlvcml0aWVzLCBpdCBhbHNvIGVuc3VyZXMgdGhleSBhcmUgcHJvY2Vzc2VkIGluXG4gIC8vIHRoZSBvcHRpbWFsIG9yZGVyLlxuICBwaW5nUHJlZmV0Y2hTY2hlZHVsZXIoKVxuXG4gIHJldHVybiB0YXNrXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYW5jZWxQcmVmZXRjaFRhc2sodGFzazogUHJlZmV0Y2hUYXNrKTogdm9pZCB7XG4gIC8vIFJlbW92ZSB0aGUgcHJlZmV0Y2ggdGFzayBmcm9tIHRoZSBxdWV1ZS4gSWYgdGhlIHRhc2sgYWxyZWFkeSBjb21wbGV0ZWQsXG4gIC8vIHRoZW4gdGhpcyBpcyBhIG5vLW9wLlxuICAvL1xuICAvLyBXZSBtdXN0IGFsc28gZXhwbGljaXRseSBtYXJrIHRoZSB0YXNrIGFzIGNhbmNlbGVkIHNvIHRoYXQgYSBibG9ja2VkIHRhc2tcbiAgLy8gZG9lcyBub3QgZ2V0IGFkZGVkIGJhY2sgdG8gdGhlIHF1ZXVlIHdoZW4gaXQncyBwaW5nZWQgYnkgdGhlIG5ldHdvcmsuXG4gIHRhc2suaXNDYW5jZWxlZCA9IHRydWVcbiAgaGVhcERlbGV0ZSh0YXNrSGVhcCwgdGFzaylcbiAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9FWFBPU0VfVEVTVElOR19BUEkpIHtcbiAgICAvLyBDYWxsIGNvbXBsZXRpb24gY2FsbGJhY2suIEluIHByYWN0aWNlIHRoaXMgc2hvdWxkbid0IGJlIHJlYWNoZWQgZm9yXG4gICAgLy8gdGVzdC1pbml0aWF0ZWQgcHJlZmV0Y2hlcyBzaW5jZSBjYW5jZWxsYXRpb24gaXMgb25seSB1c2VkIGJ5IHRoZSBMaW5rXG4gICAgLy8gY29tcG9uZW50IHdoZW4gZWxlbWVudHMgc2Nyb2xsIG91dCBvZiB2aWV3cG9ydC5cbiAgICBjb25zdCBvbkNvbXBsZXRlID0gdGFzay5fb25Db21wbGV0ZVxuICAgIHRhc2suX29uQ29tcGxldGUgPSB1bmRlZmluZWRcbiAgICBvbkNvbXBsZXRlPy4oKVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNjaGVkdWxlUHJlZmV0Y2hUYXNrKFxuICB0YXNrOiBQcmVmZXRjaFRhc2ssXG4gIHRyZWVBdFRpbWVPZlByZWZldGNoOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgZmV0Y2hTdHJhdGVneTogUHJlZmV0Y2hUYXNrRmV0Y2hTdHJhdGVneSxcbiAgcHJpb3JpdHk6IFByZWZldGNoUHJpb3JpdHlcbik6IHZvaWQge1xuICAvLyBCdW1wIHRoZSBwcmVmZXRjaCB0YXNrIHRvIHRoZSB0b3Agb2YgdGhlIHF1ZXVlLCBhcyBpZiBpdCB3ZXJlIGEgZnJlc2hcbiAgLy8gdGFzay4gVGhpcyBpcyBlc3NlbnRpYWxseSB0aGUgc2FtZSBhcyBjYW5jZWxpbmcgdGhlIHRhc2sgYW5kIHNjaGVkdWxpbmdcbiAgLy8gYSBuZXcgb25lLCBleGNlcHQgaXQgcmV1c2VzIHRoZSBvcmlnaW5hbCBvYmplY3QuXG4gIC8vXG4gIC8vIFRoZSBwcmltYXJ5IHVzZSBjYXNlIGlzIHRvIGluY3JlYXNlIHRoZSBwcmlvcml0eSBvZiBhIExpbmstaW5pdGF0ZWRcbiAgLy8gcHJlZmV0Y2ggb24gaG92ZXIuXG4gIC8vXG4gIC8vIE5vdGU6IF9vbkNvbXBsZXRlIGlzIG5vdCByZXNldCBoZXJlIGJlY2F1c2UgaXQncyBwcmVzZXJ2ZWQgb24gdGhlIHNhbWVcbiAgLy8gdGFzayBvYmplY3QuIFdoZW4gdGhlIHJlc2NoZWR1bGVkIHRhc2sgY29tcGxldGVzLCB0aGUgb3JpZ2luYWwgY2FsbGJhY2tcbiAgLy8gd2lsbCBzdGlsbCBiZSBpbnZva2VkLlxuXG4gIC8vIFVuLWNhbmNlbCB0aGUgdGFzaywgaW4gY2FzZSBpdCB3YXMgcHJldmlvdXNseSBjYW5jZWxlZC5cbiAgdGFzay5pc0NhbmNlbGVkID0gZmFsc2VcbiAgdGFzay5waGFzZSA9IFByZWZldGNoUGhhc2UuUm91dGVUcmVlXG5cbiAgLy8gQXNzaWduIGEgbmV3IHNvcnQgSUQgdG8gbW92ZSBpdCBhaGVhZCBvZiBhbGwgb3RoZXIgdGFza3MgYXQgdGhlIHNhbWVcbiAgLy8gcHJpb3JpdHkgbGV2ZWwuIChIaWdoZXIgc29ydCBJRHMgYXJlIHByb2Nlc3NlZCBmaXJzdC4pXG4gIHRhc2suc29ydElkID0gc29ydElkQ291bnRlcisrXG4gIHRhc2sucHJpb3JpdHkgPVxuICAgIC8vIElmIHRoaXMgdGFzayBpcyB0aGUgbW9zdCByZWNlbnRseSBob3ZlcmVkIGxpbmssIG1haW50YWluIGl0c1xuICAgIC8vIEludGVudCBwcmlvcml0eSwgZXZlbiBpZiB0aGUgcmVzY2hlZHVsZWQgcHJpb3JpdHkgaXMgbG93ZXIuXG4gICAgdGFzayA9PT0gbW9zdFJlY2VudGx5SG92ZXJlZExpbmsgPyBQcmVmZXRjaFByaW9yaXR5LkludGVudCA6IHByaW9yaXR5XG5cbiAgdGFzay50cmVlQXRUaW1lT2ZQcmVmZXRjaCA9IHRyZWVBdFRpbWVPZlByZWZldGNoXG4gIHRhc2suZmV0Y2hTdHJhdGVneSA9IGZldGNoU3RyYXRlZ3lcblxuICB0cmFja01vc3RSZWNlbnRseUhvdmVyZWRMaW5rKHRhc2spXG5cbiAgaWYgKHRhc2suX2hlYXBJbmRleCAhPT0gLTEpIHtcbiAgICAvLyBUaGUgdGFzayBpcyBhbHJlYWR5IGluIHRoZSBxdWV1ZS5cbiAgICBoZWFwUmVzaWZ0KHRhc2tIZWFwLCB0YXNrKVxuICB9IGVsc2Uge1xuICAgIGhlYXBQdXNoKHRhc2tIZWFwLCB0YXNrKVxuICB9XG4gIHBpbmdQcmVmZXRjaFNjaGVkdWxlcigpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ByZWZldGNoVGFza0RpcnR5KFxuICB0YXNrOiBQcmVmZXRjaFRhc2ssXG4gIG5leHRVcmw6IHN0cmluZyB8IG51bGwsXG4gIHRyZWU6IEZsaWdodFJvdXRlclN0YXRlXG4pOiBib29sZWFuIHtcbiAgLy8gVGhpcyBpcyB1c2VkIHRvIHF1aWNrbHkgYmFpbCBvdXQgb2YgYSBwcmVmZXRjaCB0YXNrIGlmIHRoZSByZXN1bHQgaXNcbiAgLy8gZ3VhcmFudGVlZCB0byBub3QgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSB0YXNrIHdhcyBpbml0aWF0ZWQuIFRoaXMgaXNcbiAgLy8gc3RyaWN0bHkgYW4gb3B0aW1pemF0aW9uIOKAlCB0aGVvcmV0aWNhbGx5LCBpZiBpdCBhbHdheXMgcmV0dXJuZWQgdHJ1ZSwgbm9cbiAgLy8gYmVoYXZpb3Igc2hvdWxkIGNoYW5nZSBiZWNhdXNlIGEgZnVsbCBwcmVmZXRjaCB0YXNrIHdpbGwgZWZmZWN0aXZlbHlcbiAgLy8gcGVyZm9ybSB0aGUgc2FtZSBjaGVja3MuXG4gIHJldHVybiAoXG4gICAgdGFzay5yb3V0ZUNhY2hlVmVyc2lvbiAhPT0gZ2V0Q3VycmVudFJvdXRlQ2FjaGVWZXJzaW9uKCkgfHxcbiAgICB0YXNrLnNlZ21lbnRDYWNoZVZlcnNpb24gIT09IGdldEN1cnJlbnRTZWdtZW50Q2FjaGVWZXJzaW9uKCkgfHxcbiAgICB0YXNrLnRyZWVBdFRpbWVPZlByZWZldGNoICE9PSB0cmVlIHx8XG4gICAgdGFzay5rZXkubmV4dFVybCAhPT0gbmV4dFVybFxuICApXG59XG5cbmZ1bmN0aW9uIHRyYWNrTW9zdFJlY2VudGx5SG92ZXJlZExpbmsodGFzazogUHJlZmV0Y2hUYXNrKSB7XG4gIC8vIFRyYWNrIHRoZSBtb3N0bHkgcmVjZW50bHkgaG92ZXJlZCBsaW5rLCBpLmUuIHRoZSBtb3N0IHJlY2VudGx5IHNjaGVkdWxlZFxuICAvLyB0YXNrIGF0IEludGVudCBwcmlvcml0eS4gVGhlcmUgbXVzdCBvbmx5IGJlIG9uZSBzdWNoIHRhc2sgYXQgYSB0aW1lLlxuICBpZiAoXG4gICAgdGFzay5wcmlvcml0eSA9PT0gUHJlZmV0Y2hQcmlvcml0eS5JbnRlbnQgJiZcbiAgICB0YXNrICE9PSBtb3N0UmVjZW50bHlIb3ZlcmVkTGlua1xuICApIHtcbiAgICBpZiAobW9zdFJlY2VudGx5SG92ZXJlZExpbmsgIT09IG51bGwpIHtcbiAgICAgIC8vIEJ1bXAgdGhlIHByZXZpb3VzbHkgaG92ZXJlZCBsaW5rJ3MgcHJpb3JpdHkgZG93biB0byBEZWZhdWx0LlxuICAgICAgaWYgKG1vc3RSZWNlbnRseUhvdmVyZWRMaW5rLnByaW9yaXR5ICE9PSBQcmVmZXRjaFByaW9yaXR5LkJhY2tncm91bmQpIHtcbiAgICAgICAgbW9zdFJlY2VudGx5SG92ZXJlZExpbmsucHJpb3JpdHkgPSBQcmVmZXRjaFByaW9yaXR5LkRlZmF1bHRcbiAgICAgICAgaGVhcFJlc2lmdCh0YXNrSGVhcCwgbW9zdFJlY2VudGx5SG92ZXJlZExpbmspXG4gICAgICB9XG4gICAgfVxuICAgIG1vc3RSZWNlbnRseUhvdmVyZWRMaW5rID0gdGFza1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwaW5nUHJlZmV0Y2hTY2hlZHVsZXIoKSB7XG4gIGlmIChkaWRTY2hlZHVsZU1pY3JvdGFzaykge1xuICAgIC8vIEFscmVhZHkgc2NoZWR1bGVkIGEgdGFzayB0byBwcm9jZXNzIHRoZSBxdWV1ZVxuICAgIHJldHVyblxuICB9XG4gIGRpZFNjaGVkdWxlTWljcm90YXNrID0gdHJ1ZVxuICBzY2hlZHVsZU1pY3JvdGFzayhwcm9jZXNzUXVldWVJbk1pY3JvdGFzaylcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgd2UndmUgZXhjZWVkZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbmN1cnJlbnQgcHJlZmV0Y2ggcmVxdWVzdHMsXG4gKiB0byBhdm9pZCBzYXR1cmF0aW5nIHRoZSBicm93c2VyJ3MgaW50ZXJuYWwgbmV0d29yayBxdWV1ZS4gVGhpcyBpcyBhXG4gKiBjb29wZXJhdGl2ZSBsaW1pdCDigJQgcHJlZmV0Y2ggdGFza3Mgc2hvdWxkIGNoZWNrIHRoaXMgYmVmb3JlIGlzc3VpbmdcbiAqIG5ldyByZXF1ZXN0cy5cbiAqXG4gKiBBbHNvIGNoZWNrcyBpZiB3ZSdyZSB3aXRoaW4gdGhlIHJldmFsaWRhdGlvbiBjb29sZG93biB3aW5kb3csIGR1cmluZyB3aGljaFxuICogcHJlZmV0Y2ggcmVxdWVzdHMgYXJlIGRlbGF5ZWQgdG8gYWxsb3cgQ0ROIGNhY2hlIHByb3BhZ2F0aW9uLlxuICovXG5mdW5jdGlvbiBoYXNOZXR3b3JrQmFuZHdpZHRoKHRhc2s6IFByZWZldGNoVGFzayk6IGJvb2xlYW4ge1xuICAvLyBDaGVjayBpZiB3ZSdyZSB3aXRoaW4gdGhlIHJldmFsaWRhdGlvbiBjb29sZG93biB3aW5kb3dcbiAgaWYgKHJldmFsaWRhdGlvbkNvb2xkb3duVGltZW91dEhhbmRsZSAhPT0gbnVsbCkge1xuICAgIC8vIFdlJ3JlIHdpdGhpbiB0aGUgY29vbGRvd24gd2luZG93LiBSZXR1cm4gZmFsc2UgdG8gcHJldmVudCBwcmVmZXRjaGluZy5cbiAgICAvLyBXaGVuIHRoZSBjb29sZG93biBleHBpcmVzLCB0aGUgdGltZW91dCB3aWxsIGNhbGwgZW5zdXJlV29ya0lzU2NoZWR1bGVkKClcbiAgICAvLyB0byByZXRyeSB0aGUgcXVldWUuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvLyBUT0RPOiBBbHNvIGNoZWNrIGlmIHRoZXJlJ3MgYW4gaW4tcHJvZ3Jlc3MgbmF2aWdhdGlvbi4gV2Ugc2hvdWxkIG5ldmVyXG4gIC8vIGFkZCBwcmVmZXRjaCByZXF1ZXN0cyB0byB0aGUgbmV0d29yayBxdWV1ZSBpZiBhbiBhY3R1YWwgbmF2aWdhdGlvbiBpc1xuICAvLyB0YWtpbmcgcGxhY2UsIHRvIGVuc3VyZSB0aGVyZSdzIHN1ZmZpY2llbnQgYmFuZHdpZHRoIGZvciByZW5kZXItYmxvY2tpbmdcbiAgLy8gZGF0YSBhbmQgcmVzb3VyY2VzLlxuXG4gIC8vIFRPRE86IENvbnNpZGVyIHJlc2VydmluZyBzb21lIGFtb3VudCBvZiBiYW5kd2lkdGggZm9yIHN0YXRpYyBwcmVmZXRjaGVzLlxuXG4gIGlmICh0YXNrLnByaW9yaXR5ID09PSBQcmVmZXRjaFByaW9yaXR5LkludGVudCkge1xuICAgIC8vIFRoZSBtb3N0IHJlY2VudGx5IGhvdmVyZWQgbGluayBpcyBhbGxvd2VkIHRvIGV4Y2VlZCB0aGUgZGVmYXVsdCBsaW1pdC5cbiAgICAvL1xuICAgIC8vIFRoZSBnb2FsIGlzIHRvIGFsd2F5cyBoYXZlIGVub3VnaCBiYW5kd2lkdGggdG8gc3RhcnQgYSBuZXcgcHJlZmV0Y2hcbiAgICAvLyByZXF1ZXN0IHdoZW4gaG92ZXJpbmcgb3ZlciBhIGxpbmsuXG4gICAgLy9cbiAgICAvLyBIb3dldmVyLCBiZWNhdXNlIHdlIGRvbid0IGFib3J0IGluLXByb2dyZXNzIHJlcXVlc3RzLCBpdCdzIHN0aWxsIHBvc3NpYmxlXG4gICAgLy8gd2UnbGwgcnVuIG91dCBvZiBiYW5kd2lkdGguIFdoZW4gbGlua3MgYXJlIGhvdmVyZWQgaW4gcXVpY2sgc3VjY2Vzc2lvbixcbiAgICAvLyB0aGVyZSBjb3VsZCBiZSBtdWx0aXBsZSBob3ZlciByZXF1ZXN0cyBydW5uaW5nIHNpbXVsdGFuZW91c2x5LlxuICAgIHJldHVybiBpblByb2dyZXNzUmVxdWVzdHMgPCAxMlxuICB9XG5cbiAgLy8gVGhlIGRlZmF1bHQgbGltaXQgaXMgbG93ZXIgdGhhbiB0aGUgbGltaXQgZm9yIGEgaG92ZXJlZCBsaW5rLlxuICByZXR1cm4gaW5Qcm9ncmVzc1JlcXVlc3RzIDwgNFxufVxuXG5mdW5jdGlvbiBzcGF3blByZWZldGNoU3VidGFzazxUPihcbiAgcHJlZmV0Y2hTdWJ0YXNrOiBQcm9taXNlPFByZWZldGNoU3VidGFza1Jlc3VsdDxUPiB8IG51bGw+XG4pOiBQcm9taXNlPFQgfCBudWxsPiB7XG4gIC8vIFdoZW4gdGhlIHNjaGVkdWxlciBzcGF3bnMgYW4gYXN5bmMgdGFzaywgd2UgZG9uJ3QgYXdhaXQgaXRzIHJlc3VsdC5cbiAgLy8gSW5zdGVhZCwgdGhlIGFzeW5jIHRhc2sgd3JpdGVzIGl0cyByZXN1bHQgZGlyZWN0bHkgaW50byB0aGUgY2FjaGUsIHRoZW5cbiAgLy8gcGluZ3MgdGhlIHNjaGVkdWxlciB0byBjb250aW51ZS5cbiAgLy9cbiAgLy8gV2UgcHJvY2VzcyBzZXJ2ZXIgcmVzcG9uc2VzIHN0cmVhbWluZ2x5LCBzbyB0aGUgcHJlZmV0Y2ggc3VidGFzayB3aWxsXG4gIC8vIGxpa2VseSByZXNvbHZlIGJlZm9yZSB3ZSdyZSBmaW5pc2hlZCByZWNlaXZpbmcgYWxsIHRoZSBkYXRhLiBUaGUgc3VidGFza1xuICAvLyByZXN1bHQgaW5jbHVkZXMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgbmV0d29yayBjb25uZWN0aW9uIGlzXG4gIC8vIGNsb3NlZC4gVGhlIHNjaGVkdWxlciB1c2VzIHRoaXMgdG8gY29udHJvbCBuZXR3b3JrIGJhbmR3aWR0aCBieSB0cmFja2luZ1xuICAvLyBhbmQgbGltaXRpbmcgdGhlIG51bWJlciBvZiBjb25jdXJyZW50IHJlcXVlc3RzLlxuICBpblByb2dyZXNzUmVxdWVzdHMrK1xuICByZXR1cm4gcHJlZmV0Y2hTdWJ0YXNrLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgIGlmIChyZXN1bHQgPT09IG51bGwpIHtcbiAgICAgIC8vIFRoZSBwcmVmZXRjaCB0YXNrIGVycm9yZWQgYmVmb3JlIGl0IGNvdWxkIHN0YXJ0IHByb2Nlc3NpbmcgdGhlXG4gICAgICAvLyBuZXR3b3JrIHN0cmVhbS4gQXNzdW1lIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZC5cbiAgICAgIG9uUHJlZmV0Y2hDb25uZWN0aW9uQ2xvc2VkKClcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIC8vIFdhaXQgZm9yIHRoZSBjb25uZWN0aW9uIHRvIGNsb3NlIGJlZm9yZSBmcmVlaW5nIHVwIG1vcmUgYmFuZHdpZHRoLlxuICAgIHJlc3VsdC5jbG9zZWQudGhlbihvblByZWZldGNoQ29ubmVjdGlvbkNsb3NlZClcbiAgICByZXR1cm4gcmVzdWx0LnZhbHVlXG4gIH0pXG59XG5cbmZ1bmN0aW9uIG9uUHJlZmV0Y2hDb25uZWN0aW9uQ2xvc2VkKCk6IHZvaWQge1xuICBpblByb2dyZXNzUmVxdWVzdHMtLVxuXG4gIC8vIE5vdGlmeSB0aGUgc2NoZWR1bGVyIHRoYXQgd2UgaGF2ZSBtb3JlIGJhbmR3aWR0aCwgYW5kIGNhbiBjb250aW51ZVxuICAvLyBwcm9jZXNzaW5nIHRhc2tzLlxuICBwaW5nUHJlZmV0Y2hTY2hlZHVsZXIoKVxufVxuXG4vKipcbiAqIE5vdGlmeSB0aGUgc2NoZWR1bGVyIHRoYXQgd2UndmUgcmVjZWl2ZWQgbmV3IGRhdGEgZm9yIGFuIGluLXByb2dyZXNzXG4gKiBwcmVmZXRjaC4gVGhlIGNvcnJlc3BvbmRpbmcgdGFzayB3aWxsIGJlIGFkZGVkIGJhY2sgdG8gdGhlIHF1ZXVlICh1bmxlc3MgdGhlXG4gKiB0YXNrIGhhcyBiZWVuIGNhbmNlbGVkIGluIHRoZSBtZWFudGltZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwaW5nUHJlZmV0Y2hUYXNrKHRhc2s6IFByZWZldGNoVGFzaykge1xuICAvLyBcIlBpbmdcIiBhIHByZWZldGNoIHRoYXQncyBhbHJlYWR5IGluIHByb2dyZXNzIHRvIG5vdGlmeSBpdCBvZiBuZXcgZGF0YS5cbiAgaWYgKFxuICAgIC8vIENoZWNrIGlmIHByZWZldGNoIHdhcyBjYW5jZWxlZC5cbiAgICB0YXNrLmlzQ2FuY2VsZWQgfHxcbiAgICAvLyBDaGVjayBpZiBwcmVmZXRjaCBpcyBhbHJlYWR5IHF1ZXVlZC5cbiAgICB0YXNrLl9oZWFwSW5kZXggIT09IC0xXG4gICkge1xuICAgIHJldHVyblxuICB9XG4gIC8vIEFkZCB0aGUgdGFzayBiYWNrIHRvIHRoZSBxdWV1ZS5cbiAgaGVhcFB1c2godGFza0hlYXAsIHRhc2spXG4gIHBpbmdQcmVmZXRjaFNjaGVkdWxlcigpXG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NRdWV1ZUluTWljcm90YXNrKCkge1xuICBkaWRTY2hlZHVsZU1pY3JvdGFzayA9IGZhbHNlXG5cbiAgLy8gV2UgYWltIHRvIG1pbmltaXplIGhvdyBvZnRlbiB3ZSByZWFkIHRoZSBjdXJyZW50IHRpbWUuIFNpbmNlIG5lYXJseSBhbGxcbiAgLy8gZnVuY3Rpb25zIGluIHRoZSBwcmVmZXRjaCBzY2hlZHVsZXIgYXJlIHN5bmNocm9ub3VzLCB3ZSBjYW4gcmVhZCB0aGUgdGltZVxuICAvLyBvbmNlIGFuZCBwYXNzIGl0IGFzIGFuIGFyZ3VtZW50IHdoZXJldmVyIGl0J3MgbmVlZGVkLlxuICBjb25zdCBub3cgPSBEYXRlLm5vdygpXG5cbiAgLy8gUHJvY2VzcyB0aGUgdGFzayBxdWV1ZSB1bnRpbCB3ZSBydW4gb3V0IG9mIG5ldHdvcmsgYmFuZHdpZHRoLlxuICBsZXQgdGFzayA9IGhlYXBQZWVrKHRhc2tIZWFwKVxuICB3aGlsZSAodGFzayAhPT0gbnVsbCAmJiBoYXNOZXR3b3JrQmFuZHdpZHRoKHRhc2spKSB7XG4gICAgdGFzay5yb3V0ZUNhY2hlVmVyc2lvbiA9IGdldEN1cnJlbnRSb3V0ZUNhY2hlVmVyc2lvbigpXG4gICAgdGFzay5zZWdtZW50Q2FjaGVWZXJzaW9uID0gZ2V0Q3VycmVudFNlZ21lbnRDYWNoZVZlcnNpb24oKVxuXG4gICAgY29uc3QgZXhpdFN0YXR1cyA9IHBpbmdSb3V0ZShub3csIHRhc2spXG5cbiAgICAvLyBUaGVzZSBmaWVsZHMgYXJlIG9ubHkgdmFsaWQgZm9yIGEgc2luZ2xlIGF0dGVtcHQuIFJlc2V0IHRoZW0gYWZ0ZXIgZWFjaFxuICAgIC8vIGl0ZXJhdGlvbiBvZiB0aGUgdGFzayBxdWV1ZS5cbiAgICBjb25zdCBoYXNCYWNrZ3JvdW5kV29yayA9IHRhc2suaGFzQmFja2dyb3VuZFdvcmtcbiAgICB0YXNrLmhhc0JhY2tncm91bmRXb3JrID0gZmFsc2VcbiAgICB0YXNrLnNwYXduZWRSdW50aW1lUHJlZmV0Y2hlcyA9IG51bGxcblxuICAgIHN3aXRjaCAoZXhpdFN0YXR1cykge1xuICAgICAgY2FzZSBQcmVmZXRjaFRhc2tFeGl0U3RhdHVzLkluUHJvZ3Jlc3M6XG4gICAgICAgIC8vIFRoZSB0YXNrIHlpZWxkZWQgYmVjYXVzZSB0aGVyZSBhcmUgdG9vIG1hbnkgcmVxdWVzdHMgaW4gcHJvZ3Jlc3MuXG4gICAgICAgIC8vIFN0b3AgcHJvY2Vzc2luZyB0YXNrcyB1bnRpbCB3ZSBoYXZlIG1vcmUgYmFuZHdpZHRoLlxuICAgICAgICByZXR1cm5cbiAgICAgIGNhc2UgUHJlZmV0Y2hUYXNrRXhpdFN0YXR1cy5CbG9ja2VkOlxuICAgICAgICAvLyBUaGUgdGFzayBpcyBibG9ja2VkLiBJdCBuZWVkcyBtb3JlIGRhdGEgYmVmb3JlIGl0IGNhbiBwcm9jZWVkLlxuICAgICAgICAvLyBLZWVwIHRoZSB0YXNrIG91dCBvZiB0aGUgcXVldWUgdW50aWwgdGhlIHNlcnZlciByZXNwb25kcy5cbiAgICAgICAgaGVhcFBvcCh0YXNrSGVhcClcbiAgICAgICAgLy8gQ29udGludWUgdG8gdGhlIG5leHQgdGFza1xuICAgICAgICB0YXNrID0gaGVhcFBlZWsodGFza0hlYXApXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICBjYXNlIFByZWZldGNoVGFza0V4aXRTdGF0dXMuRG9uZTpcbiAgICAgICAgaWYgKHRhc2sucGhhc2UgPT09IFByZWZldGNoUGhhc2UuUm91dGVUcmVlKSB7XG4gICAgICAgICAgLy8gRmluaXNoZWQgcHJlZmV0Y2hpbmcgdGhlIHJvdXRlIHRyZWUuIFByb2NlZWQgdG8gcHJlZmV0Y2hpbmdcbiAgICAgICAgICAvLyB0aGUgc2VnbWVudHMuXG4gICAgICAgICAgdGFzay5waGFzZSA9IFByZWZldGNoUGhhc2UuU2VnbWVudHNcbiAgICAgICAgICBoZWFwUmVzaWZ0KHRhc2tIZWFwLCB0YXNrKVxuICAgICAgICB9IGVsc2UgaWYgKGhhc0JhY2tncm91bmRXb3JrKSB7XG4gICAgICAgICAgLy8gVGhlIHRhc2sgc3Bhd25lZCBhZGRpdGlvbmFsIGJhY2tncm91bmQgd29yay4gUmVzY2hlZHVsZSB0aGUgdGFza1xuICAgICAgICAgIC8vIGF0IGJhY2tncm91bmQgcHJpb3JpdHkuXG4gICAgICAgICAgdGFzay5wcmlvcml0eSA9IFByZWZldGNoUHJpb3JpdHkuQmFja2dyb3VuZFxuICAgICAgICAgIGhlYXBSZXNpZnQodGFza0hlYXAsIHRhc2spXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVGhlIHByZWZldGNoIGlzIGNvbXBsZXRlLiBDb250aW51ZSB0byB0aGUgbmV4dCB0YXNrLlxuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfRVhQT1NFX1RFU1RJTkdfQVBJKSB7XG4gICAgICAgICAgICAvLyBOb3RpZnkgdGhlIEluc3RhbnQgTmF2aWdhdGlvbiBUZXN0aW5nIEFQSSB0aGF0IHRoZSBwcmVmZXRjaCBoYXNcbiAgICAgICAgICAgIC8vIGNvbXBsZXRlZCwgc28gaXQgY2FuIHByb2NlZWQgd2l0aCBuYXZpZ2F0aW9uLlxuICAgICAgICAgICAgY29uc3Qgb25Db21wbGV0ZSA9IHRhc2suX29uQ29tcGxldGVcbiAgICAgICAgICAgIHRhc2suX29uQ29tcGxldGUgPSB1bmRlZmluZWRcbiAgICAgICAgICAgIG9uQ29tcGxldGU/LigpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlYXBQb3AodGFza0hlYXApXG4gICAgICAgIH1cbiAgICAgICAgdGFzayA9IGhlYXBQZWVrKHRhc2tIZWFwKVxuICAgICAgICBjb250aW51ZVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgZXhpdFN0YXR1cyBzYXRpc2ZpZXMgbmV2ZXJcbiAgICB9XG4gIH1cblxuICAvLyBSdW4gTFJVIGNsZWFudXAgb25seSB3aGVuIHRoZSBzY2hlZHVsZXIgaXMgZnVsbHkgaWRsZTogbm8gcXVldWVkIHRhc2tzIGFuZFxuICAvLyBubyBpbi1wcm9ncmVzcyByZXF1ZXN0cy4gQXQgdGhhdCBwb2ludCwgYWxsIGFjdGl2ZSBwcmVmZXRjaCB0YXNrcyBoYXZlXG4gIC8vIGZpbmlzaGVkIHJlYWRpbmcgZnJvbSB0aGUgY2FjaGUgKG1vdmluZyByZWNlbnRseSB1c2VkIGVudHJpZXMgdG8gdGhlIGZyb250XG4gIC8vIG9mIHRoZSBsaXN0KSwgc28gb25seSBnZW51aW5lbHkgc3RhbGUgZGF0YSBnZXRzIGV2aWN0ZWQuXG4gIGlmICh0YXNrID09PSBudWxsICYmIGluUHJvZ3Jlc3NSZXF1ZXN0cyA9PT0gMCkge1xuICAgIGNsZWFudXAoKVxuICB9XG59XG5cbi8qKlxuICogQ2hlY2sgdGhpcyBkdXJpbmcgYSBwcmVmZXRjaCB0YXNrIHRvIGRldGVybWluZSBpZiBiYWNrZ3JvdW5kIHdvcmsgY2FuIGJlXG4gKiBwZXJmb3JtZWQuIElmIHNvLCBpdCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UsIGl0IHJldHVybnMgYGZhbHNlYCxcbiAqIHdoaWxlIGFsc28gc2NoZWR1bGluZyBhIGJhY2tncm91bmQgdGFzayB0byBydW4gbGF0ZXIuIFVzYWdlOlxuICpcbiAqIEBleGFtcGxlXG4gKiBpZiAoYmFja2dyb3VuZCh0YXNrKSkge1xuICogICAvLyBQZXJmb3JtIGJhY2tncm91bmQtcHJpIHdvcmtcbiAqIH1cbiAqL1xuZnVuY3Rpb24gYmFja2dyb3VuZCh0YXNrOiBQcmVmZXRjaFRhc2spOiBib29sZWFuIHtcbiAgaWYgKHRhc2sucHJpb3JpdHkgPT09IFByZWZldGNoUHJpb3JpdHkuQmFja2dyb3VuZCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgdGFzay5oYXNCYWNrZ3JvdW5kV29yayA9IHRydWVcbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIHBpbmdSb3V0ZShub3c6IG51bWJlciwgdGFzazogUHJlZmV0Y2hUYXNrKTogUHJlZmV0Y2hUYXNrRXhpdFN0YXR1cyB7XG4gIGNvbnN0IGtleSA9IHRhc2sua2V5XG4gIGNvbnN0IHJvdXRlID0gcmVhZE9yQ3JlYXRlUm91dGVDYWNoZUVudHJ5KG5vdywgdGFzaywga2V5KVxuICBjb25zdCBleGl0U3RhdHVzID0gcGluZ1Jvb3RSb3V0ZVRyZWUobm93LCB0YXNrLCByb3V0ZSlcblxuICBpZiAoZXhpdFN0YXR1cyAhPT0gUHJlZmV0Y2hUYXNrRXhpdFN0YXR1cy5JblByb2dyZXNzICYmIGtleS5zZWFyY2ggIT09ICcnKSB7XG4gICAgLy8gSWYgdGhlIFVSTCBoYXMgYSBub24tZW1wdHkgc2VhcmNoIHN0cmluZywgYWxzbyBwcmVmZXRjaCB0aGUgcGF0aG5hbWVcbiAgICAvLyB3aXRob3V0IHRoZSBzZWFyY2ggc3RyaW5nLiBXZSB1c2UgdGhlIHNlYXJjaGxlc3Mgcm91dGUgdHJlZSBhcyBhIGJhc2UgZm9yXG4gICAgLy8gb3B0aW1pc3RpYyByb3V0aW5nOyBzZWUgcmVxdWVzdE9wdGltaXN0aWNSb3V0ZUNhY2hlRW50cnkgZm9yIGRldGFpbHMuXG4gICAgLy9cbiAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byBwcmVmZXRjaCBhbnkgb2YgdGhlIHNlZ21lbnQgZGF0YS4gSnVzdCB0aGVcbiAgICAvLyByb3V0ZSB0cmVlLlxuICAgIC8vXG4gICAgLy8gVE9ETzogVGhpcyBpcyBhIHRlbXBvcmFyeSBzb2x1dGlvbjsgdGhlIHBsYW4gaXMgdG8gcmVwbGFjZSB0aGlzIGJ5IGFkZGluZ1xuICAgIC8vIGEgd2lsZGNhcmQgbG9va3VwIG1ldGhvZCB0byB0aGUgVHVwbGVNYXAgaW1wbGVtZW50YXRpb24uIFRoaXMgaXNcbiAgICAvLyBub24tdHJpdmlhbCB0byBpbXBsZW1lbnQgYmVjYXVzZSBpdCBuZWVkcyB0byBhY2NvdW50IGZvciB0aGluZ3MgbGlrZVxuICAgIC8vIGZhbGxiYWNrIHJvdXRlIGVudHJpZXMsIGhlbmNlIHRoaXMgdGVtcG9yYXJ5IHdvcmthcm91bmQuXG4gICAgY29uc3QgdXJsID0gbmV3IFVSTChrZXkucGF0aG5hbWUsIGxvY2F0aW9uLm9yaWdpbilcbiAgICBjb25zdCBrZXlXaXRob3V0U2VhcmNoID0gY3JlYXRlQ2FjaGVLZXkodXJsLmhyZWYsIGtleS5uZXh0VXJsKVxuICAgIGNvbnN0IHJvdXRlV2l0aG91dFNlYXJjaCA9IHJlYWRPckNyZWF0ZVJvdXRlQ2FjaGVFbnRyeShcbiAgICAgIG5vdyxcbiAgICAgIHRhc2ssXG4gICAgICBrZXlXaXRob3V0U2VhcmNoXG4gICAgKVxuICAgIHN3aXRjaCAocm91dGVXaXRob3V0U2VhcmNoLnN0YXR1cykge1xuICAgICAgY2FzZSBFbnRyeVN0YXR1cy5FbXB0eToge1xuICAgICAgICBpZiAoYmFja2dyb3VuZCh0YXNrKSkge1xuICAgICAgICAgIHJvdXRlV2l0aG91dFNlYXJjaC5zdGF0dXMgPSBFbnRyeVN0YXR1cy5QZW5kaW5nXG4gICAgICAgICAgc3Bhd25QcmVmZXRjaFN1YnRhc2soXG4gICAgICAgICAgICBmZXRjaFJvdXRlT25DYWNoZU1pc3Mocm91dGVXaXRob3V0U2VhcmNoLCBrZXlXaXRob3V0U2VhcmNoKVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSBFbnRyeVN0YXR1cy5QZW5kaW5nOlxuICAgICAgY2FzZSBFbnRyeVN0YXR1cy5GdWxmaWxsZWQ6XG4gICAgICBjYXNlIEVudHJ5U3RhdHVzLlJlamVjdGVkOiB7XG4gICAgICAgIC8vIEVpdGhlciB0aGUgcm91dGUgdHJlZSBpcyBhbHJlYWR5IGNhY2hlZCwgb3IgdGhlcmUncyBhbHJlYWR5IGFcbiAgICAgICAgLy8gcmVxdWVzdCBpbiBwcm9ncmVzcy4gU2luY2Ugd2UgZG9uJ3QgbmVlZCB0byBmZXRjaCBhbnkgc2VnbWVudCBkYXRhXG4gICAgICAgIC8vIGZvciB0aGlzIHJvdXRlLCB0aGVyZSdzIG5vdGhpbmcgbGVmdCB0byBkby5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJvdXRlV2l0aG91dFNlYXJjaCBzYXRpc2ZpZXMgbmV2ZXJcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXhpdFN0YXR1c1xufVxuXG5mdW5jdGlvbiBwaW5nUm9vdFJvdXRlVHJlZShcbiAgbm93OiBudW1iZXIsXG4gIHRhc2s6IFByZWZldGNoVGFzayxcbiAgcm91dGU6IFJvdXRlQ2FjaGVFbnRyeVxuKTogUHJlZmV0Y2hUYXNrRXhpdFN0YXR1cyB7XG4gIHN3aXRjaCAocm91dGUuc3RhdHVzKSB7XG4gICAgY2FzZSBFbnRyeVN0YXR1cy5FbXB0eToge1xuICAgICAgLy8gUm91dGUgaXMgbm90IHlldCBjYWNoZWQsIGFuZCB0aGVyZSdzIG5vIHJlcXVlc3QgYWxyZWFkeSBpbiBwcm9ncmVzcy5cbiAgICAgIC8vIFNwYXduIGEgdGFzayB0byByZXF1ZXN0IHRoZSByb3V0ZSwgbG9hZCBpdCBpbnRvIHRoZSBjYWNoZSwgYW5kIHBpbmdcbiAgICAgIC8vIHRoZSB0YXNrIHRvIGNvbnRpbnVlLlxuXG4gICAgICAvLyBUT0RPOiBUaGVyZSBhcmUgbXVsdGlwbGUgc3RyYXRlZ2llcyBpbiB0aGUgPExpbms+IEFQSSBmb3IgcHJlZmV0Y2hpbmdcbiAgICAgIC8vIGEgcm91dGUuIEN1cnJlbnRseSB3ZSd2ZSBvbmx5IGltcGxlbWVudGVkIHRoZSBtYWluIG9uZTogcGVyLXNlZ21lbnQsXG4gICAgICAvLyBzdGF0aWMtZGF0YSBvbmx5LlxuICAgICAgLy9cbiAgICAgIC8vIFRoZXJlJ3MgYWxzbyBgPExpbmsgcHJlZmV0Y2g9e3RydWV9PmBcbiAgICAgIC8vIHdoaWNoIHByZWZldGNoIGJvdGggc3RhdGljICphbmQqIGR5bmFtaWMgZGF0YS5cbiAgICAgIC8vIFNpbWlsYXJseSwgd2UgbmVlZCB0byBmYWxsYmFjayB0byB0aGUgb2xkLCBwZXItcGFnZVxuICAgICAgLy8gYmVoYXZpb3IgaWYgUFBSIGlzIGRpc2FibGVkIGZvciBhIHJvdXRlICh2aWEgdGhlIGluY3JlbWVudGFsIG9wdC1pbikuXG4gICAgICAvL1xuICAgICAgLy8gVGhvc2UgY2FzZXMgd2lsbCBiZSBoYW5kbGVkIGhlcmUuXG4gICAgICBzcGF3blByZWZldGNoU3VidGFzayhmZXRjaFJvdXRlT25DYWNoZU1pc3Mocm91dGUsIHRhc2sua2V5KSlcblxuICAgICAgLy8gSWYgdGhlIHJlcXVlc3QgdGFrZXMgbG9uZ2VyIHRoYW4gYSBtaW51dGUsIGEgc3Vic2VxdWVudCByZXF1ZXN0IHNob3VsZFxuICAgICAgLy8gcmV0cnkgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciB0aGlzIG9uZS4gV2hlbiB0aGUgcmVzcG9uc2UgaXMgcmVjZWl2ZWQsXG4gICAgICAvLyB0aGlzIHZhbHVlIHdpbGwgYmUgcmVwbGFjZWQgYnkgYSBuZXcgdmFsdWUgYmFzZWQgb24gdGhlIHN0YWxlIHRpbWUgc2VudFxuICAgICAgLy8gZnJvbSB0aGUgc2VydmVyLlxuICAgICAgLy8gVE9ETzogV2Ugc2hvdWxkIHByb2JhYmx5IGFsc28gbWFudWFsbHkgYWJvcnQgdGhlIGZldGNoIHRhc2ssIHRvIHJlY2xhaW1cbiAgICAgIC8vIHNlcnZlciBiYW5kd2lkdGguXG4gICAgICByb3V0ZS5zdGFsZUF0ID0gbm93ICsgNjAgKiAxMDAwXG5cbiAgICAgIC8vIFVwZ3JhZGUgdG8gUGVuZGluZyBzbyB3ZSBrbm93IHRoZXJlJ3MgYWxyZWFkeSBhIHJlcXVlc3QgaW4gcHJvZ3Jlc3NcbiAgICAgIHJvdXRlLnN0YXR1cyA9IEVudHJ5U3RhdHVzLlBlbmRpbmdcblxuICAgICAgLy8gSW50ZW50aW9uYWwgZmFsbHRocm91Z2ggdG8gdGhlIFBlbmRpbmcgYnJhbmNoXG4gICAgfVxuICAgIGNhc2UgRW50cnlTdGF0dXMuUGVuZGluZzoge1xuICAgICAgLy8gU3RpbGwgcGVuZGluZy4gV2UgY2FuJ3Qgc3RhcnQgcHJlZmV0Y2hpbmcgdGhlIHNlZ21lbnRzIHVudGlsIHRoZSByb3V0ZVxuICAgICAgLy8gdHJlZSBoYXMgbG9hZGVkLiBBZGQgdGhlIHRhc2sgdG8gdGhlIHNldCBvZiBibG9ja2VkIHRhc2tzIHNvIHRoYXQgaXRcbiAgICAgIC8vIGlzIG5vdGlmaWVkIHdoZW4gdGhlIHJvdXRlIHRyZWUgaXMgcmVhZHkuXG4gICAgICBjb25zdCBibG9ja2VkVGFza3MgPSByb3V0ZS5ibG9ja2VkVGFza3NcbiAgICAgIGlmIChibG9ja2VkVGFza3MgPT09IG51bGwpIHtcbiAgICAgICAgcm91dGUuYmxvY2tlZFRhc2tzID0gbmV3IFNldChbdGFza10pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBibG9ja2VkVGFza3MuYWRkKHRhc2spXG4gICAgICB9XG4gICAgICByZXR1cm4gUHJlZmV0Y2hUYXNrRXhpdFN0YXR1cy5CbG9ja2VkXG4gICAgfVxuICAgIGNhc2UgRW50cnlTdGF0dXMuUmVqZWN0ZWQ6IHtcbiAgICAgIC8vIFJvdXRlIHRyZWUgZmFpbGVkIHRvIGxvYWQuIFRyZWF0IGFzIGEgNDA0LlxuICAgICAgcmV0dXJuIFByZWZldGNoVGFza0V4aXRTdGF0dXMuRG9uZVxuICAgIH1cbiAgICBjYXNlIEVudHJ5U3RhdHVzLkZ1bGZpbGxlZDoge1xuICAgICAgaWYgKHRhc2sucGhhc2UgIT09IFByZWZldGNoUGhhc2UuU2VnbWVudHMpIHtcbiAgICAgICAgLy8gRG8gbm90IHByZWZldGNoIHNlZ21lbnQgZGF0YSB1bnRpbCB3ZSd2ZSBlbnRlcmVkIHRoZSBzZWdtZW50IHBoYXNlLlxuICAgICAgICByZXR1cm4gUHJlZmV0Y2hUYXNrRXhpdFN0YXR1cy5Eb25lXG4gICAgICB9XG4gICAgICAvLyBSZWN1cnNpdmVseSBmaWxsIGluIHRoZSBzZWdtZW50IHRyZWUuXG4gICAgICBpZiAoIWhhc05ldHdvcmtCYW5kd2lkdGgodGFzaykpIHtcbiAgICAgICAgLy8gU3RvcCBwcmVmZXRjaGluZyBzZWdtZW50cyB1bnRpbCB0aGVyZSdzIG1vcmUgYmFuZHdpZHRoLlxuICAgICAgICByZXR1cm4gUHJlZmV0Y2hUYXNrRXhpdFN0YXR1cy5JblByb2dyZXNzXG4gICAgICB9XG4gICAgICBjb25zdCB0cmVlID0gcm91dGUudHJlZVxuXG4gICAgICAvLyBBIHRhc2sncyBmZXRjaCBzdHJhdGVneSBnZXRzIHNldCB0byBgUFBSYCBmb3IgYW55IFwiYXV0b1wiIHByZWZldGNoLlxuICAgICAgLy8gSWYgaXQgdHVybmVkIG91dCB0aGF0IHRoZSByb3V0ZSBpc24ndCBQUFItZW5hYmxlZCwgd2UgbmVlZCB0byB1c2UgYExvYWRpbmdCb3VuZGFyeWAgaW5zdGVhZC5cbiAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gZG8gdGhpcyBmb3IgcnVudGltZSBwcmVmZXRjaGVzLCBiZWNhdXNlIHRob3NlIGFyZSBvbmx5IGF2YWlsYWJsZSBpblxuICAgICAgLy8gYGNhY2hlQ29tcG9uZW50c2AsIHdoZXJlIGV2ZXJ5IHJvdXRlIGlzIFBQUi5cbiAgICAgIGxldCBmZXRjaFN0cmF0ZWd5OiBGZXRjaFN0cmF0ZWd5XG4gICAgICBpZiAodHJlZS5wcmVmZXRjaEhpbnRzICYgUHJlZmV0Y2hIaW50LlN1YnRyZWVIYXNJbnN0YW50KSB7XG4gICAgICAgIC8vIElmIGBpbnN0YW50YCBpcyBkZWZpbmVkIGFueXdoZXJlIG9uIHRoZSB0YXJnZXQgcm91dGUsIGlnbm9yZSB0aGVcbiAgICAgICAgLy8gZmV0Y2ggc3RyYXRlZ3kgYW5kIHN3aXRjaCB0byB1bmlmaWVkIHN0cmF0ZWd5IHVzZWQgYnkgQ2FjaGVcbiAgICAgICAgLy8gQ29tcG9uZW50cyAoY2FsbGVkIGBQUFJgIGZvciBub3csIHdpbGwgbGlrZWx5IGJlIHJlbmFtZWQpLlxuICAgICAgICAvL1xuICAgICAgICAvLyBJbiBwcmFjdGljZSwgdGhpcyBqdXN0IG1lYW5zIHRoYXQgYSBcImZ1bGxcIiBwcmVmZXRjaCAoPExpbmtcbiAgICAgICAgLy8gcHJlZmV0Y2g9e3RydWV9PikgaGFzIG5vIGVmZmVjdC4gWW91J3JlIG1lYW50IHRvIHVzZSBSdW50aW1lXG4gICAgICAgIC8vIFByZWZldGNoaW5nIGluc3RlYWQg4oCUIHRoYXQncyB0aGUgbmV3IHBhdHRlcm4gdGhhdCByZXBsYWNlc1xuICAgICAgICAvLyBwcmVmZXRjaD17dHJ1ZX0uXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFRoZSByZWFzb24gd2UgY2hlY2sgZm9yIGBpbnN0YW50YCByYXRoZXIgdGhhbiB0aGUgYGNhY2hlQ29tcG9uZW50c2BcbiAgICAgICAgLy8gZmxhZyBpcyB0byBzdXBwb3J0IGluY3JlbWVudGFsIGFkb3B0aW9uLiBgcHJlZmV0Y2g9e3RydWV9YCB3aWxsXG4gICAgICAgIC8vIGNvbnRpbnVlIHRvIHdvcmsgdW50aWwgeW91IG9wdCBpbnRvIGBpbnN0YW50YC5cbiAgICAgICAgZmV0Y2hTdHJhdGVneSA9IEZldGNoU3RyYXRlZ3kuUFBSXG4gICAgICB9IGVsc2UgaWYgKHRhc2suZmV0Y2hTdHJhdGVneSA9PT0gRmV0Y2hTdHJhdGVneS5QUFIpIHtcbiAgICAgICAgZmV0Y2hTdHJhdGVneSA9IHJvdXRlLnN1cHBvcnRzUGVyU2VnbWVudFByZWZldGNoaW5nXG4gICAgICAgICAgPyBGZXRjaFN0cmF0ZWd5LlBQUlxuICAgICAgICAgIDogRmV0Y2hTdHJhdGVneS5Mb2FkaW5nQm91bmRhcnlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZldGNoU3RyYXRlZ3kgPSB0YXNrLmZldGNoU3RyYXRlZ3lcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChmZXRjaFN0cmF0ZWd5KSB7XG4gICAgICAgIGNhc2UgRmV0Y2hTdHJhdGVneS5QUFI6IHtcbiAgICAgICAgICAvLyBGb3IgQ2FjaGUgQ29tcG9uZW50cyBwYWdlcywgZWFjaCBzZWdtZW50IG1heSBiZSBwcmVmZXRjaGVkXG4gICAgICAgICAgLy8gc3RhdGljYWxseSBvciB1c2luZyBhIHJ1bnRpbWUgcmVxdWVzdCwgYmFzZWQgb24gdmFyaW91c1xuICAgICAgICAgIC8vIGNvbmZpZ3VyYXRpb25zIGFuZCBoZXVyaXN0aWNzLiBXZSdsbCBkbyB0aGlzIGluIHR3byBwYXNzZXM6IGZpcnN0XG4gICAgICAgICAgLy8gdHJhdmVyc2UgdGhlIHRyZWUgYW5kIHBlcmZvcm0gYWxsIHRoZSBzdGF0aWMgcHJlZmV0Y2hlcy5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIFRoZW4sIGlmIHRoZXJlIGFyZSBhbnkgc2VnbWVudHMgdGhhdCBuZWVkIGEgcnVudGltZSByZXF1ZXN0LFxuICAgICAgICAgIC8vIGRvIGFub3RoZXIgcGFzcyB0byBwZXJmb3JtIGEgcnVudGltZSBwcmVmZXRjaC5cbiAgICAgICAgICBwaW5nU3RhdGljSGVhZChub3csIHRhc2ssIHJvdXRlKVxuICAgICAgICAgIGNvbnN0IGV4aXRTdGF0dXMgPSBwaW5nU2hhcmVkUGFydE9mQ2FjaGVDb21wb25lbnRzVHJlZShcbiAgICAgICAgICAgIG5vdyxcbiAgICAgICAgICAgIHRhc2ssXG4gICAgICAgICAgICByb3V0ZSxcbiAgICAgICAgICAgIHRhc2sudHJlZUF0VGltZU9mUHJlZmV0Y2gsXG4gICAgICAgICAgICB0cmVlXG4gICAgICAgICAgKVxuICAgICAgICAgIGlmIChleGl0U3RhdHVzID09PSBQcmVmZXRjaFRhc2tFeGl0U3RhdHVzLkluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIC8vIENoaWxkIHlpZWxkZWQgd2l0aG91dCBmaW5pc2hpbmcuXG4gICAgICAgICAgICByZXR1cm4gUHJlZmV0Y2hUYXNrRXhpdFN0YXR1cy5JblByb2dyZXNzXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHNwYXduZWRSdW50aW1lUHJlZmV0Y2hlcyA9IHRhc2suc3Bhd25lZFJ1bnRpbWVQcmVmZXRjaGVzXG4gICAgICAgICAgaWYgKHNwYXduZWRSdW50aW1lUHJlZmV0Y2hlcyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gRHVyaW5nIHRoZSBmaXJzdCBwYXNzLCB3ZSBkaXNjb3ZlcmVkIHNlZ21lbnRzIHRoYXQgcmVxdWlyZSBhXG4gICAgICAgICAgICAvLyBydW50aW1lIHByZWZldGNoLiBEbyBhIHNlY29uZCBwYXNzIHRvIGNvbnN0cnVjdCBhIHJlcXVlc3QgdHJlZS5cbiAgICAgICAgICAgIGNvbnN0IHNwYXduZWRFbnRyaWVzID0gbmV3IE1hcDxcbiAgICAgICAgICAgICAgU2VnbWVudFJlcXVlc3RLZXksXG4gICAgICAgICAgICAgIFBlbmRpbmdTZWdtZW50Q2FjaGVFbnRyeVxuICAgICAgICAgICAgPigpXG4gICAgICAgICAgICBwaW5nUnVudGltZUhlYWQoXG4gICAgICAgICAgICAgIG5vdyxcbiAgICAgICAgICAgICAgdGFzayxcbiAgICAgICAgICAgICAgcm91dGUsXG4gICAgICAgICAgICAgIHNwYXduZWRFbnRyaWVzLFxuICAgICAgICAgICAgICBGZXRjaFN0cmF0ZWd5LlBQUlJ1bnRpbWVcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RUcmVlID0gcGluZ1J1bnRpbWVQcmVmZXRjaGVzKFxuICAgICAgICAgICAgICBub3csXG4gICAgICAgICAgICAgIHRhc2ssXG4gICAgICAgICAgICAgIHJvdXRlLFxuICAgICAgICAgICAgICB0cmVlLFxuICAgICAgICAgICAgICBzcGF3bmVkUnVudGltZVByZWZldGNoZXMsXG4gICAgICAgICAgICAgIHNwYXduZWRFbnRyaWVzXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBsZXQgbmVlZHNEeW5hbWljUmVxdWVzdCA9IHNwYXduZWRFbnRyaWVzLnNpemUgPiAwXG4gICAgICAgICAgICBpZiAobmVlZHNEeW5hbWljUmVxdWVzdCkge1xuICAgICAgICAgICAgICAvLyBQZXJmb3JtIGEgZHluYW1pYyBwcmVmZXRjaCByZXF1ZXN0IGFuZCBwb3B1bGF0ZSB0aGUgY2FjaGUgd2l0aFxuICAgICAgICAgICAgICAvLyB0aGUgcmVzdWx0LlxuICAgICAgICAgICAgICBzcGF3blByZWZldGNoU3VidGFzayhcbiAgICAgICAgICAgICAgICBmZXRjaFNlZ21lbnRQcmVmZXRjaGVzVXNpbmdEeW5hbWljUmVxdWVzdChcbiAgICAgICAgICAgICAgICAgIHRhc2ssXG4gICAgICAgICAgICAgICAgICByb3V0ZSxcbiAgICAgICAgICAgICAgICAgIEZldGNoU3RyYXRlZ3kuUFBSUnVudGltZSxcbiAgICAgICAgICAgICAgICAgIHJlcXVlc3RUcmVlLFxuICAgICAgICAgICAgICAgICAgc3Bhd25lZEVudHJpZXNcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gUHJlZmV0Y2hUYXNrRXhpdFN0YXR1cy5Eb25lXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBGZXRjaFN0cmF0ZWd5LkZ1bGw6XG4gICAgICAgIGNhc2UgRmV0Y2hTdHJhdGVneS5QUFJSdW50aW1lOlxuICAgICAgICBjYXNlIEZldGNoU3RyYXRlZ3kuTG9hZGluZ0JvdW5kYXJ5OiB7XG4gICAgICAgICAgLy8gUHJlZmV0Y2ggbXVsdGlwbGUgc2VnbWVudHMgdXNpbmcgYSBzaW5nbGUgZHluYW1pYyByZXF1ZXN0LlxuICAgICAgICAgIC8vIFRPRE86IFdlIGNhbiBjb25zb2xpZGF0ZSB0aGlzIGJyYW5jaCB3aXRoIHByZXZpb3VzIG9uZSBieSBtb2RlbGluZ1xuICAgICAgICAgIC8vIGl0IGFzIGlmIHRoZSBmaXJzdCBzZWdtZW50IGluIHRoZSBuZXcgdHJlZSBoYXMgcnVudGltZSBwcmVmZXRjaGluZ1xuICAgICAgICAgIC8vIGVuYWJsZWQuIFdpbGwgZG8gdGhpcyBhcyBhIGZvbGxvdy11cCByZWZhY3Rvci4gTWlnaHQgd2FudCB0byByZW1vdmVcbiAgICAgICAgICAvLyB0aGUgc3BlY2lhbCBtZXRhdGRhdGEgY2FzZSBiZWxvdyBmaXJzdC4gSW4gdGhlIG1lYW50aW1lLCBpdCdzIG5vdFxuICAgICAgICAgIC8vIHJlYWxseSB0aGF0IG11Y2ggZHVwbGljYXRpb24sIGp1c3Qgd291bGQgYmUgbmljZSB0byByZW1vdmUgb25lIG9mXG4gICAgICAgICAgLy8gdGhlc2UgY29kZXBhdGhzLlxuICAgICAgICAgIGNvbnN0IHNwYXduZWRFbnRyaWVzID0gbmV3IE1hcDxcbiAgICAgICAgICAgIFNlZ21lbnRSZXF1ZXN0S2V5LFxuICAgICAgICAgICAgUGVuZGluZ1NlZ21lbnRDYWNoZUVudHJ5XG4gICAgICAgICAgPigpXG4gICAgICAgICAgcGluZ1J1bnRpbWVIZWFkKG5vdywgdGFzaywgcm91dGUsIHNwYXduZWRFbnRyaWVzLCBmZXRjaFN0cmF0ZWd5KVxuICAgICAgICAgIGNvbnN0IGR5bmFtaWNSZXF1ZXN0VHJlZSA9IGRpZmZSb3V0ZVRyZWVBZ2FpbnN0Q3VycmVudChcbiAgICAgICAgICAgIG5vdyxcbiAgICAgICAgICAgIHRhc2ssXG4gICAgICAgICAgICByb3V0ZSxcbiAgICAgICAgICAgIHRhc2sudHJlZUF0VGltZU9mUHJlZmV0Y2gsXG4gICAgICAgICAgICB0cmVlLFxuICAgICAgICAgICAgc3Bhd25lZEVudHJpZXMsXG4gICAgICAgICAgICBmZXRjaFN0cmF0ZWd5XG4gICAgICAgICAgKVxuICAgICAgICAgIGxldCBuZWVkc0R5bmFtaWNSZXF1ZXN0ID0gc3Bhd25lZEVudHJpZXMuc2l6ZSA+IDBcbiAgICAgICAgICBpZiAobmVlZHNEeW5hbWljUmVxdWVzdCkge1xuICAgICAgICAgICAgc3Bhd25QcmVmZXRjaFN1YnRhc2soXG4gICAgICAgICAgICAgIGZldGNoU2VnbWVudFByZWZldGNoZXNVc2luZ0R5bmFtaWNSZXF1ZXN0KFxuICAgICAgICAgICAgICAgIHRhc2ssXG4gICAgICAgICAgICAgICAgcm91dGUsXG4gICAgICAgICAgICAgICAgZmV0Y2hTdHJhdGVneSxcbiAgICAgICAgICAgICAgICBkeW5hbWljUmVxdWVzdFRyZWUsXG4gICAgICAgICAgICAgICAgc3Bhd25lZEVudHJpZXNcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gUHJlZmV0Y2hUYXNrRXhpdFN0YXR1cy5Eb25lXG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBmZXRjaFN0cmF0ZWd5IHNhdGlzZmllcyBuZXZlclxuICAgICAgfVxuICAgICAgYnJlYWtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcm91dGUgc2F0aXNmaWVzIG5ldmVyXG4gICAgfVxuICB9XG4gIHJldHVybiBQcmVmZXRjaFRhc2tFeGl0U3RhdHVzLkRvbmVcbn1cblxuZnVuY3Rpb24gcGluZ1N0YXRpY0hlYWQoXG4gIG5vdzogbnVtYmVyLFxuICB0YXNrOiBQcmVmZXRjaFRhc2ssXG4gIHJvdXRlOiBGdWxmaWxsZWRSb3V0ZUNhY2hlRW50cnlcbik6IHZvaWQge1xuICAvLyBUaGUgSGVhZCBkYXRhIGZvciBhIHBhZ2UgKG1ldGFkYXRhLCB2aWV3cG9ydCkgaXMgbm90IHJlYWxseSBhIHJvdXRlXG4gIC8vIHNlZ21lbnQsIGluIHRoZSBzZW5zZSB0aGF0IGl0IGRvZXNuJ3QgYXBwZWFyIGluIHRoZSByb3V0ZSB0cmVlLiBCdXQgd2VcbiAgLy8gc3RvcmUgaXQgaW4gdGhlIGNhY2hlIGFzIGlmIGl0IHdlcmUsIHVzaW5nIGEgc3BlY2lhbCBrZXkuXG4gIHBpbmdTdGF0aWNTZWdtZW50RGF0YShcbiAgICBub3csXG4gICAgdGFzayxcbiAgICByb3V0ZSxcbiAgICByZWFkT3JDcmVhdGVTZWdtZW50Q2FjaGVFbnRyeShub3csIEZldGNoU3RyYXRlZ3kuUFBSLCByb3V0ZS5tZXRhZGF0YSksXG4gICAgdGFzay5rZXksXG4gICAgcm91dGUubWV0YWRhdGFcbiAgKVxufVxuXG5mdW5jdGlvbiBwaW5nUnVudGltZUhlYWQoXG4gIG5vdzogbnVtYmVyLFxuICB0YXNrOiBQcmVmZXRjaFRhc2ssXG4gIHJvdXRlOiBGdWxmaWxsZWRSb3V0ZUNhY2hlRW50cnksXG4gIHNwYXduZWRFbnRyaWVzOiBNYXA8U2VnbWVudFJlcXVlc3RLZXksIFBlbmRpbmdTZWdtZW50Q2FjaGVFbnRyeT4sXG4gIGZldGNoU3RyYXRlZ3k6XG4gICAgfCBGZXRjaFN0cmF0ZWd5LkZ1bGxcbiAgICB8IEZldGNoU3RyYXRlZ3kuUFBSUnVudGltZVxuICAgIHwgRmV0Y2hTdHJhdGVneS5Mb2FkaW5nQm91bmRhcnlcbik6IHZvaWQge1xuICBwaW5nUm91dGVUcmVlQW5kSW5jbHVkZUR5bmFtaWNEYXRhKFxuICAgIG5vdyxcbiAgICB0YXNrLFxuICAgIHJvdXRlLFxuICAgIHJvdXRlLm1ldGFkYXRhLFxuICAgIGZhbHNlLFxuICAgIHNwYXduZWRFbnRyaWVzLFxuICAgIC8vIFdoZW4gcHJlZmV0Y2hpbmcgdGhlIGhlYWQsIHRoZXJlJ3Mgbm8gZGlmZmVyZW5jZSBiZXR3ZWVuIEZ1bGxcbiAgICAvLyBhbmQgTG9hZGluZ0JvdW5kYXJ5XG4gICAgZmV0Y2hTdHJhdGVneSA9PT0gRmV0Y2hTdHJhdGVneS5Mb2FkaW5nQm91bmRhcnlcbiAgICAgID8gRmV0Y2hTdHJhdGVneS5GdWxsXG4gICAgICA6IGZldGNoU3RyYXRlZ3lcbiAgKVxufVxuXG4vLyBUT0RPOiBSZW5hbWUgZHluYW1pYyAtPiBydW50aW1lIHRocm91Z2hvdXQgdGhpcyBtb2R1bGVcblxuZnVuY3Rpb24gcGluZ1NoYXJlZFBhcnRPZkNhY2hlQ29tcG9uZW50c1RyZWUoXG4gIG5vdzogbnVtYmVyLFxuICB0YXNrOiBQcmVmZXRjaFRhc2ssXG4gIHJvdXRlOiBGdWxmaWxsZWRSb3V0ZUNhY2hlRW50cnksXG4gIG9sZFRyZWU6IEZsaWdodFJvdXRlclN0YXRlLFxuICBuZXdUcmVlOiBSb3V0ZVRyZWVcbik6IFByZWZldGNoVGFza0V4aXRTdGF0dXMge1xuICAvLyBXaGVuIENhY2hlIENvbXBvbmVudHMgaXMgZW5hYmxlZCAob3IgUFBSLCBvciBhIGZ1bGx5IHN0YXRpYyByb3V0ZSB3aGVuIFBQUlxuICAvLyBpcyBkaXNhYmxlZDsgdGhvc2UgY2FzZXMgYXJlIHRyZWF0ZWQgZXF1aXZhbGVudGx5IHRvIENhY2hlIENvbXBvbmVudHMpLCB3ZVxuICAvLyBzdGFydCBieSBwcmVmZXRjaGluZyBlYWNoIHNlZ21lbnQgaW5kaXZpZHVhbGx5LiBPbmNlIHdlIHJlYWNoIHRoZSBcIm5ld1wiXG4gIC8vIHBhcnQgb2YgdGhlIHRyZWUg4oCUIHRoZSBwYXJ0IHRoYXQgZG9lc24ndCBleGlzdCBvbiB0aGUgY3VycmVudCBwYWdlIOKAlCB3ZVxuICAvLyBtYXkgY2hvb3NlIHRvIHN3aXRjaCB0byBhIHJ1bnRpbWUgcHJlZmV0Y2ggaW5zdGVhZCwgYmFzZWQgb24gdGhlXG4gIC8vIGluZm9ybWF0aW9uIHNlbnQgYnkgdGhlIHNlcnZlciBpbiB0aGUgcm91dGUgdHJlZS5cbiAgLy9cbiAgLy8gVGhlIHRyYXZlcnNhbCBzdGFydHMgaW4gdGhlIFwic2hhcmVkXCIgcGFydCBvZiB0aGUgdHJlZS4gT25jZSB3ZSByZWFjaCB0aGVcbiAgLy8gXCJuZXdcIiBwYXJ0IG9mIHRoZSB0cmVlLCB3ZSBzd2l0Y2ggdG8gYSBkaWZmZXJlbnQgdHJhdmVyc2FsLFxuICAvLyBwaW5nTmV3UGFydE9mQ2FjaGVDb21wb25lbnRzVHJlZS5cblxuICAvLyBQcmVmZXRjaCB0aGlzIHNlZ21lbnQncyBzdGF0aWMgZGF0YS5cbiAgY29uc3Qgc2VnbWVudCA9IHJlYWRPckNyZWF0ZVNlZ21lbnRDYWNoZUVudHJ5KFxuICAgIG5vdyxcbiAgICB0YXNrLmZldGNoU3RyYXRlZ3ksXG4gICAgbmV3VHJlZVxuICApXG4gIHBpbmdTdGF0aWNTZWdtZW50RGF0YShub3csIHRhc2ssIHJvdXRlLCBzZWdtZW50LCB0YXNrLmtleSwgbmV3VHJlZSlcblxuICAvLyBSZWN1cnNpdmVseSBwaW5nIHRoZSBjaGlsZHJlbi5cbiAgY29uc3Qgb2xkVHJlZUNoaWxkcmVuID0gb2xkVHJlZVsxXVxuICBjb25zdCBuZXdUcmVlQ2hpbGRyZW4gPSBuZXdUcmVlLnNsb3RzXG4gIGlmIChuZXdUcmVlQ2hpbGRyZW4gIT09IG51bGwpIHtcbiAgICBmb3IgKGNvbnN0IHBhcmFsbGVsUm91dGVLZXkgaW4gbmV3VHJlZUNoaWxkcmVuKSB7XG4gICAgICBpZiAoIWhhc05ldHdvcmtCYW5kd2lkdGgodGFzaykpIHtcbiAgICAgICAgLy8gU3RvcCBwcmVmZXRjaGluZyBzZWdtZW50cyB1bnRpbCB0aGVyZSdzIG1vcmUgYmFuZHdpZHRoLlxuICAgICAgICByZXR1cm4gUHJlZmV0Y2hUYXNrRXhpdFN0YXR1cy5JblByb2dyZXNzXG4gICAgICB9XG4gICAgICBjb25zdCBuZXdUcmVlQ2hpbGQgPSBuZXdUcmVlQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV1cbiAgICAgIGNvbnN0IG5ld1RyZWVDaGlsZFNlZ21lbnQgPSBuZXdUcmVlQ2hpbGQuc2VnbWVudFxuICAgICAgY29uc3Qgb2xkVHJlZUNoaWxkOiBGbGlnaHRSb3V0ZXJTdGF0ZSB8IHZvaWQgPVxuICAgICAgICBvbGRUcmVlQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV1cbiAgICAgIGNvbnN0IG9sZFRyZWVDaGlsZFNlZ21lbnQ6IEZsaWdodFJvdXRlclN0YXRlU2VnbWVudCB8IHZvaWQgPVxuICAgICAgICBvbGRUcmVlQ2hpbGQ/LlswXVxuICAgICAgbGV0IGNoaWxkRXhpdFN0YXR1c1xuICAgICAgaWYgKFxuICAgICAgICBvbGRUcmVlQ2hpbGRTZWdtZW50ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgZG9lc0N1cnJlbnRTZWdtZW50TWF0Y2hDYWNoZWRTZWdtZW50KFxuICAgICAgICAgIHJvdXRlLFxuICAgICAgICAgIG5ld1RyZWVDaGlsZFNlZ21lbnQsXG4gICAgICAgICAgb2xkVHJlZUNoaWxkU2VnbWVudFxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgLy8gV2UncmUgc3RpbGwgaW4gdGhlIFwic2hhcmVkXCIgcGFydCBvZiB0aGUgdHJlZS5cbiAgICAgICAgY2hpbGRFeGl0U3RhdHVzID0gcGluZ1NoYXJlZFBhcnRPZkNhY2hlQ29tcG9uZW50c1RyZWUoXG4gICAgICAgICAgbm93LFxuICAgICAgICAgIHRhc2ssXG4gICAgICAgICAgcm91dGUsXG4gICAgICAgICAgb2xkVHJlZUNoaWxkLFxuICAgICAgICAgIG5ld1RyZWVDaGlsZFxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXZSd2ZSBlbnRlcmVkIHRoZSBcIm5ld1wiIHBhcnQgb2YgdGhlIHRyZWUuIFN3aXRjaFxuICAgICAgICAvLyB0cmF2ZXJzYWwgZnVuY3Rpb25zLlxuICAgICAgICBjaGlsZEV4aXRTdGF0dXMgPSBwaW5nTmV3UGFydE9mQ2FjaGVDb21wb25lbnRzVHJlZShcbiAgICAgICAgICBub3csXG4gICAgICAgICAgdGFzayxcbiAgICAgICAgICByb3V0ZSxcbiAgICAgICAgICBuZXdUcmVlQ2hpbGRcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaWYgKGNoaWxkRXhpdFN0YXR1cyA9PT0gUHJlZmV0Y2hUYXNrRXhpdFN0YXR1cy5JblByb2dyZXNzKSB7XG4gICAgICAgIC8vIENoaWxkIHlpZWxkZWQgd2l0aG91dCBmaW5pc2hpbmcuXG4gICAgICAgIHJldHVybiBQcmVmZXRjaFRhc2tFeGl0U3RhdHVzLkluUHJvZ3Jlc3NcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gUHJlZmV0Y2hUYXNrRXhpdFN0YXR1cy5Eb25lXG59XG5cbmZ1bmN0aW9uIHBpbmdOZXdQYXJ0T2ZDYWNoZUNvbXBvbmVudHNUcmVlKFxuICBub3c6IG51bWJlcixcbiAgdGFzazogUHJlZmV0Y2hUYXNrLFxuICByb3V0ZTogRnVsZmlsbGVkUm91dGVDYWNoZUVudHJ5LFxuICB0cmVlOiBSb3V0ZVRyZWVcbik6IFByZWZldGNoVGFza0V4aXRTdGF0dXMuSW5Qcm9ncmVzcyB8IFByZWZldGNoVGFza0V4aXRTdGF0dXMuRG9uZSB7XG4gIC8vIFdlJ3JlIG5vdyBwcmVmZXRjaGluZyBpbiB0aGUgXCJuZXdcIiBwYXJ0IG9mIHRoZSB0cmVlLCB0aGUgcGFydCB0aGF0IGRvZXNuJ3RcbiAgLy8gZXhpc3Qgb24gdGhlIGN1cnJlbnQgcGFnZS4gKEluIG90aGVyIHdvcmRzLCB3ZSdyZSBkZWVwZXIgdGhhbiB0aGVcbiAgLy8gc2hhcmVkIGxheW91dHMuKSBTZWdtZW50cyBpbiBoZXJlIGRlZmF1bHQgdG8gYmVpbmcgcHJlZmV0Y2hlZCBzdGF0aWNhbGx5LlxuICAvLyBIb3dldmVyLCBpZiB0aGUgc2VydmVyIGluc3RydWN0cyB1cyB0bywgd2UgbWF5IHN3aXRjaCB0byBhIHJ1bnRpbWVcbiAgLy8gcHJlZmV0Y2ggaW5zdGVhZC4gVHJhdmVyc2UgdGhlIHRyZWUgYW5kIGNoZWNrIGF0IGVhY2ggc2VnbWVudC5cbiAgaWYgKHRyZWUucHJlZmV0Y2hIaW50cyAmIFByZWZldGNoSGludC5IYXNSdW50aW1lUHJlZmV0Y2gpIHtcbiAgICAvLyBUaGlzIHJvdXRlIGhhcyBhIHJ1bnRpbWUgcHJlZmV0Y2ggcmVzcG9uc2UuIFNpbmNlIHdlJ3JlIGJlbG93IHRoZSBzaGFyZWRcbiAgICAvLyBsYXlvdXQsIGV2ZXJ5dGhpbmcgZnJvbSB0aGlzIHBvaW50IHNob3VsZCBiZSBwcmVmZXRjaGVkIHVzaW5nIGEgc2luZ2xlLFxuICAgIC8vIGNvbWJpbmVkIHJ1bnRpbWUgcmVxdWVzdCwgcmF0aGVyIHRoYW4gdXNpbmcgcGVyLXNlZ21lbnQgc3RhdGljIHJlcXVlc3RzLlxuICAgIC8vIFRoaXMgaXMgdHJ1ZSBldmVuIGlmIHNvbWUgb2YgdGhlIGNoaWxkIHNlZ21lbnRzIGFyZSBrbm93biB0byBiZSBmdWxseVxuICAgIC8vIHN0YXRpYyDigJQgb25jZSB3ZSd2ZSBkZWNpZGVkIHRvIHBlcmZvcm0gYSBydW50aW1lIHByZWZldGNoLCB3ZSBtaWdodCBhc1xuICAgIC8vIHdlbGwgcmVzcG9uZCB3aXRoIHRoZSBzdGF0aWMgc2VnbWVudHMgaW4gdGhlIHNhbWUgcm91bmR0cmlwLiAoVGhhdCdzIGhvd1xuICAgIC8vIHJlZ3VsYXIgbmF2aWdhdGlvbnMgd29yaywgdG9vLikgV2UnbGwgc3RpbGwgc2tpcCBvdmVyIHNlZ21lbnRzIHRoYXQgYXJlXG4gICAgLy8gYWxyZWFkeSBjYWNoZWQsIHRob3VnaC5cbiAgICAvL1xuICAgIC8vIEl0J3MgdGhlIHNlcnZlcidzIHJlc3BvbnNpYmlsaXR5IHRvIHNldCBhIHJlYXNvbmFibGUgdmFsdWUgb2ZcbiAgICAvLyBgaGFzUnVudGltZVByZWZldGNoYC4gQ3VycmVudGx5IGl0J3MgdXNlci1kZWZpbmVkLCBidXQgZXZlbnR1YWxseSwgdGhlXG4gICAgLy8gc2VydmVyIG1heSBzZW5kIGEgdmFsdWUgb2YgYGZhbHNlYCBldmVuIGlmIHRoZSB1c2VyIG9wdHMgaW4sIGlmIGl0XG4gICAgLy8gZGV0ZXJtaW5lcyBkdXJpbmcgYnVpbGQgdGhhdCB0aGUgcm91dGUgaXMgYWx3YXlzIGZ1bGx5IHN0YXRpYy4gVGhlcmUgYXJlXG4gICAgLy8gbW9yZSBvcHRpbWl6YXRpb25zIHdlIGNhbiBkbyBvbmNlIHdlIGltcGxlbWVudCBmYWxsYmFjayBwYXJhbVxuICAgIC8vIHRyYWNraW5nLCB0b28uXG4gICAgLy9cbiAgICAvLyBVc2UgdGhlIHRhc2sgb2JqZWN0IHRvIGNvbGxlY3QgdGhlIHNlZ21lbnRzIHRoYXQgbmVlZCBhIHJ1bnRpbWUgcHJlZmV0Y2guXG4gICAgLy8gVGhpcyB3aWxsIHNpZ25hbCB0byB0aGUgb3V0ZXIgdGFzayBxdWV1ZSB0aGF0IGEgc2Vjb25kIHRyYXZlcnNhbCBpc1xuICAgIC8vIHJlcXVpcmVkIHRvIGNvbnN0cnVjdCBhIHJlcXVlc3QgdHJlZS5cbiAgICBpZiAodGFzay5zcGF3bmVkUnVudGltZVByZWZldGNoZXMgPT09IG51bGwpIHtcbiAgICAgIHRhc2suc3Bhd25lZFJ1bnRpbWVQcmVmZXRjaGVzID0gbmV3IFNldChbdHJlZS5yZXF1ZXN0S2V5XSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGFzay5zcGF3bmVkUnVudGltZVByZWZldGNoZXMuYWRkKHRyZWUucmVxdWVzdEtleSlcbiAgICB9XG4gICAgLy8gVGhlbiBleGl0IHRoZSB0cmF2ZXJzYWwgd2l0aG91dCBwcmVmZXRjaGluZyBhbnl0aGluZyBmdXJ0aGVyLlxuICAgIHJldHVybiBQcmVmZXRjaFRhc2tFeGl0U3RhdHVzLkRvbmVcbiAgfVxuXG4gIC8vIFRoaXMgc2VnbWVudCBzaG91bGQgbm90IGJlIHJ1bnRpbWUgcHJlZmV0Y2hlZC4gUHJlZmV0Y2ggaXRzIHN0YXRpYyBkYXRhLlxuICBjb25zdCBzZWdtZW50ID0gcmVhZE9yQ3JlYXRlU2VnbWVudENhY2hlRW50cnkobm93LCB0YXNrLmZldGNoU3RyYXRlZ3ksIHRyZWUpXG4gIHBpbmdTdGF0aWNTZWdtZW50RGF0YShub3csIHRhc2ssIHJvdXRlLCBzZWdtZW50LCB0YXNrLmtleSwgdHJlZSlcbiAgaWYgKHRyZWUuc2xvdHMgIT09IG51bGwpIHtcbiAgICBpZiAoIWhhc05ldHdvcmtCYW5kd2lkdGgodGFzaykpIHtcbiAgICAgIC8vIFN0b3AgcHJlZmV0Y2hpbmcgc2VnbWVudHMgdW50aWwgdGhlcmUncyBtb3JlIGJhbmR3aWR0aC5cbiAgICAgIHJldHVybiBQcmVmZXRjaFRhc2tFeGl0U3RhdHVzLkluUHJvZ3Jlc3NcbiAgICB9XG4gICAgLy8gUmVjdXJzaXZlbHkgcGluZyB0aGUgY2hpbGRyZW4uXG4gICAgZm9yIChjb25zdCBwYXJhbGxlbFJvdXRlS2V5IGluIHRyZWUuc2xvdHMpIHtcbiAgICAgIGNvbnN0IGNoaWxkVHJlZSA9IHRyZWUuc2xvdHNbcGFyYWxsZWxSb3V0ZUtleV1cbiAgICAgIGNvbnN0IGNoaWxkRXhpdFN0YXR1cyA9IHBpbmdOZXdQYXJ0T2ZDYWNoZUNvbXBvbmVudHNUcmVlKFxuICAgICAgICBub3csXG4gICAgICAgIHRhc2ssXG4gICAgICAgIHJvdXRlLFxuICAgICAgICBjaGlsZFRyZWVcbiAgICAgIClcbiAgICAgIGlmIChjaGlsZEV4aXRTdGF0dXMgPT09IFByZWZldGNoVGFza0V4aXRTdGF0dXMuSW5Qcm9ncmVzcykge1xuICAgICAgICAvLyBDaGlsZCB5aWVsZGVkIHdpdGhvdXQgZmluaXNoaW5nLlxuICAgICAgICByZXR1cm4gUHJlZmV0Y2hUYXNrRXhpdFN0YXR1cy5JblByb2dyZXNzXG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vIFRoaXMgc2VnbWVudCBhbmQgYWxsIGl0cyBjaGlsZHJlbiBoYXZlIGZpbmlzaGVkIHByZWZldGNoaW5nLlxuICByZXR1cm4gUHJlZmV0Y2hUYXNrRXhpdFN0YXR1cy5Eb25lXG59XG5cbmZ1bmN0aW9uIGRpZmZSb3V0ZVRyZWVBZ2FpbnN0Q3VycmVudChcbiAgbm93OiBudW1iZXIsXG4gIHRhc2s6IFByZWZldGNoVGFzayxcbiAgcm91dGU6IEZ1bGZpbGxlZFJvdXRlQ2FjaGVFbnRyeSxcbiAgb2xkVHJlZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIG5ld1RyZWU6IFJvdXRlVHJlZSxcbiAgc3Bhd25lZEVudHJpZXM6IE1hcDxTZWdtZW50UmVxdWVzdEtleSwgUGVuZGluZ1NlZ21lbnRDYWNoZUVudHJ5PixcbiAgZmV0Y2hTdHJhdGVneTpcbiAgICB8IEZldGNoU3RyYXRlZ3kuRnVsbFxuICAgIHwgRmV0Y2hTdHJhdGVneS5QUFJSdW50aW1lXG4gICAgfCBGZXRjaFN0cmF0ZWd5LkxvYWRpbmdCb3VuZGFyeVxuKTogRmxpZ2h0Um91dGVyU3RhdGUge1xuICAvLyBUaGlzIGlzIGEgc2luZ2xlIHJlY3Vyc2l2ZSB0cmF2ZXJzYWwgdGhhdCBkb2VzIG11bHRpcGxlIHRoaW5nczpcbiAgLy8gLSBGaW5kcyB0aGUgcGFydHMgb2YgdGhlIHRhcmdldCByb3V0ZSAobmV3VHJlZSkgdGhhdCBhcmUgbm90IHBhcnQgb2ZcbiAgLy8gICBvZiB0aGUgY3VycmVudCBwYWdlIChvbGRUcmVlKSBieSBkaWZmaW5nIHRoZW0sIHVzaW5nIHRoZSBzYW1lIGFsZ29yaXRobVxuICAvLyAgIGFzIGEgcmVhbCBuYXZpZ2F0aW9uLlxuICAvLyAtIENvbnN0cnVjdHMgYSByZXF1ZXN0IHRyZWUgKEZsaWdodFJvdXRlclN0YXRlKSB0aGF0IGRlc2NyaWJlcyB3aGljaFxuICAvLyAgIHNlZ21lbnRzIG5lZWQgdG8gYmUgcHJlZmV0Y2hlZCBhbmQgd2hpY2ggb25lcyBhcmUgYWxyZWFkeSBjYWNoZWQuXG4gIC8vIC0gQ3JlYXRlcyBhIHNldCBvZiBwZW5kaW5nIGNhY2hlIGVudHJpZXMgZm9yIHRoZSBzZWdtZW50cyB0aGF0IG5lZWQgdG9cbiAgLy8gICBiZSBwcmVmZXRjaGVkLCBzbyB0aGF0IGEgc3Vic2VxdWVudCBwcmVmZXRjaCB0YXNrIGRvZXMgbm90IHJlcXVlc3QgdGhlXG4gIC8vICAgc2FtZSBzZWdtZW50cyBhZ2Fpbi5cbiAgY29uc3Qgb2xkVHJlZUNoaWxkcmVuID0gb2xkVHJlZVsxXVxuICBjb25zdCBuZXdUcmVlQ2hpbGRyZW4gPSBuZXdUcmVlLnNsb3RzXG4gIGxldCByZXF1ZXN0VHJlZUNoaWxkcmVuOiBSZWNvcmQ8c3RyaW5nLCBGbGlnaHRSb3V0ZXJTdGF0ZT4gPSB7fVxuICBpZiAobmV3VHJlZUNoaWxkcmVuICE9PSBudWxsKSB7XG4gICAgZm9yIChjb25zdCBwYXJhbGxlbFJvdXRlS2V5IGluIG5ld1RyZWVDaGlsZHJlbikge1xuICAgICAgY29uc3QgbmV3VHJlZUNoaWxkID0gbmV3VHJlZUNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldXG4gICAgICBjb25zdCBuZXdUcmVlQ2hpbGRTZWdtZW50ID0gbmV3VHJlZUNoaWxkLnNlZ21lbnRcbiAgICAgIGNvbnN0IG9sZFRyZWVDaGlsZDogRmxpZ2h0Um91dGVyU3RhdGUgfCB2b2lkID1cbiAgICAgICAgb2xkVHJlZUNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldXG4gICAgICBjb25zdCBvbGRUcmVlQ2hpbGRTZWdtZW50OiBGbGlnaHRSb3V0ZXJTdGF0ZVNlZ21lbnQgfCB2b2lkID1cbiAgICAgICAgb2xkVHJlZUNoaWxkPy5bMF1cbiAgICAgIGlmIChcbiAgICAgICAgb2xkVHJlZUNoaWxkU2VnbWVudCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIGRvZXNDdXJyZW50U2VnbWVudE1hdGNoQ2FjaGVkU2VnbWVudChcbiAgICAgICAgICByb3V0ZSxcbiAgICAgICAgICBuZXdUcmVlQ2hpbGRTZWdtZW50LFxuICAgICAgICAgIG9sZFRyZWVDaGlsZFNlZ21lbnRcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIC8vIFRoaXMgc2VnbWVudCBpcyBhbHJlYWR5IHBhcnQgb2YgdGhlIGN1cnJlbnQgcm91dGUuIEtlZXAgdHJhdmVyc2luZy5cbiAgICAgICAgY29uc3QgcmVxdWVzdFRyZWVDaGlsZCA9IGRpZmZSb3V0ZVRyZWVBZ2FpbnN0Q3VycmVudChcbiAgICAgICAgICBub3csXG4gICAgICAgICAgdGFzayxcbiAgICAgICAgICByb3V0ZSxcbiAgICAgICAgICBvbGRUcmVlQ2hpbGQsXG4gICAgICAgICAgbmV3VHJlZUNoaWxkLFxuICAgICAgICAgIHNwYXduZWRFbnRyaWVzLFxuICAgICAgICAgIGZldGNoU3RyYXRlZ3lcbiAgICAgICAgKVxuICAgICAgICByZXF1ZXN0VHJlZUNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldID0gcmVxdWVzdFRyZWVDaGlsZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVGhpcyBzZWdtZW50IGlzIG5vdCBwYXJ0IG9mIHRoZSBjdXJyZW50IHJvdXRlLiBXZSdyZSBlbnRlcmluZyBhXG4gICAgICAgIC8vIHBhcnQgb2YgdGhlIHRyZWUgdGhhdCB3ZSBuZWVkIHRvIHByZWZldGNoICh1bmxlc3MgZXZlcnl0aGluZyBpc1xuICAgICAgICAvLyBhbHJlYWR5IGNhY2hlZCkuXG4gICAgICAgIHN3aXRjaCAoZmV0Y2hTdHJhdGVneSkge1xuICAgICAgICAgIGNhc2UgRmV0Y2hTdHJhdGVneS5Mb2FkaW5nQm91bmRhcnk6IHtcbiAgICAgICAgICAgIC8vIFdoZW4gUFBSIGlzIGRpc2FibGVkLCB3ZSBjYW4ndCBwcmVmZXRjaCBwZXIgc2VnbWVudC4gV2UgbXVzdFxuICAgICAgICAgICAgLy8gZmFsbGJhY2sgdG8gdGhlIG9sZCBwcmVmZXRjaCBiZWhhdmlvciBhbmQgc2VuZCBhIGR5bmFtaWMgcmVxdWVzdC5cbiAgICAgICAgICAgIC8vIE9ubHkgcm91dGVzIHRoYXQgaW5jbHVkZSBhIGxvYWRpbmcgYm91bmRhcnkgY2FuIGJlIHByZWZldGNoZWQgaW5cbiAgICAgICAgICAgIC8vIHRoaXMgd2F5LlxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vIFRoaXMgaXMgc2ltbGFyIHRvIGEgXCJmdWxsXCIgcHJlZmV0Y2gsIGJ1dCB3ZSdyZSBtdWNoIG1vcmVcbiAgICAgICAgICAgIC8vIGNvbnNlcnZhdGl2ZSBhYm91dCB3aGljaCBzZWdtZW50cyB0byBpbmNsdWRlIGluIHRoZSByZXF1ZXN0LlxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vIFRoZSBzZXJ2ZXIgd2lsbCBvbmx5IHJlbmRlciB1cCB0byB0aGUgZmlyc3QgbG9hZGluZyBib3VuZGFyeVxuICAgICAgICAgICAgLy8gaW5zaWRlIG5ldyBwYXJ0IG9mIHRoZSB0cmVlLiBJZiB0aGVyZSdzIG5vIGxvYWRpbmcgYm91bmRhcnlcbiAgICAgICAgICAgIC8vIGFueXdoZXJlIGluIHRoZSB0cmVlLCB0aGUgc2VydmVyIHdpbGwgbmV2ZXIgcmV0dXJuIGFueSBkYXRhLCBzb1xuICAgICAgICAgICAgLy8gd2UgY2FuIHNraXAgdGhlIHJlcXVlc3QuXG4gICAgICAgICAgICBjb25zdCBzdWJ0cmVlSGFzTG9hZGluZ0JvdW5kYXJ5ID1cbiAgICAgICAgICAgICAgKG5ld1RyZWVDaGlsZC5wcmVmZXRjaEhpbnRzICZcbiAgICAgICAgICAgICAgICAoUHJlZmV0Y2hIaW50LlNlZ21lbnRIYXNMb2FkaW5nQm91bmRhcnkgfFxuICAgICAgICAgICAgICAgICAgUHJlZmV0Y2hIaW50LlN1YnRyZWVIYXNMb2FkaW5nQm91bmRhcnkpKSAhPT1cbiAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgY29uc3QgcmVxdWVzdFRyZWVDaGlsZCA9IHN1YnRyZWVIYXNMb2FkaW5nQm91bmRhcnlcbiAgICAgICAgICAgICAgPyBwaW5nUFBSRGlzYWJsZWRSb3V0ZVRyZWVVcFRvTG9hZGluZ0JvdW5kYXJ5KFxuICAgICAgICAgICAgICAgICAgbm93LFxuICAgICAgICAgICAgICAgICAgdGFzayxcbiAgICAgICAgICAgICAgICAgIHJvdXRlLFxuICAgICAgICAgICAgICAgICAgbmV3VHJlZUNoaWxkLFxuICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgIHNwYXduZWRFbnRyaWVzXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IC8vIFRoZXJlJ3Mgbm8gbG9hZGluZyBib3VuZGFyeSB3aXRoaW4gdGhpcyB0cmVlLiBCYWlsIG91dC5cbiAgICAgICAgICAgICAgICBjb252ZXJ0Um91dGVUcmVlVG9GbGlnaHRSb3V0ZXJTdGF0ZShuZXdUcmVlQ2hpbGQpXG4gICAgICAgICAgICByZXF1ZXN0VHJlZUNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldID0gcmVxdWVzdFRyZWVDaGlsZFxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBGZXRjaFN0cmF0ZWd5LlBQUlJ1bnRpbWU6IHtcbiAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBydW50aW1lIHByZWZldGNoLiBGZXRjaCBhbGwgY2FjaGVhYmxlIGRhdGEgaW4gdGhlIHRyZWUsXG4gICAgICAgICAgICAvLyBub3QganVzdCB0aGUgc3RhdGljIFBQUiBzaGVsbC5cbiAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RUcmVlQ2hpbGQgPSBwaW5nUm91dGVUcmVlQW5kSW5jbHVkZUR5bmFtaWNEYXRhKFxuICAgICAgICAgICAgICBub3csXG4gICAgICAgICAgICAgIHRhc2ssXG4gICAgICAgICAgICAgIHJvdXRlLFxuICAgICAgICAgICAgICBuZXdUcmVlQ2hpbGQsXG4gICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICBzcGF3bmVkRW50cmllcyxcbiAgICAgICAgICAgICAgZmV0Y2hTdHJhdGVneVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgcmVxdWVzdFRyZWVDaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XSA9IHJlcXVlc3RUcmVlQ2hpbGRcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgRmV0Y2hTdHJhdGVneS5GdWxsOiB7XG4gICAgICAgICAgICAvLyBUaGlzIGlzIGEgXCJmdWxsXCIgcHJlZmV0Y2guIEZldGNoIGFsbCB0aGUgZGF0YSBpbiB0aGUgdHJlZSwgYm90aFxuICAgICAgICAgICAgLy8gc3RhdGljIGFuZCBkeW5hbWljLiBXZSBpc3N1ZSByb3VnaGx5IHRoZSBzYW1lIHJlcXVlc3QgdGhhdCB3ZVxuICAgICAgICAgICAgLy8gd291bGQgZHVyaW5nIGEgcmVhbCBuYXZpZ2F0aW9uLiBUaGUgZ29hbCBpcyB0aGF0IG9uY2UgdGhlXG4gICAgICAgICAgICAvLyBuYXZpZ2F0aW9uIG9jY3VycywgdGhlIHJvdXRlciBzaG91bGQgbm90IGhhdmUgdG8gZmV0Y2ggYW55XG4gICAgICAgICAgICAvLyBhZGRpdGlvbmFsIGRhdGEuXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gQWx0aG91Z2ggdGhlIHJlc3BvbnNlIHdpbGwgaW5jbHVkZSBkeW5hbWljIGRhdGEsIG9wdGluZyBpbnRvIGFcbiAgICAgICAgICAgIC8vIEZ1bGwgcHJlZmV0Y2gg4oCUIHZpYSA8TGluayBwcmVmZXRjaD17dHJ1ZX0+IOKAlCBpbXBsaWNpdGx5XG4gICAgICAgICAgICAvLyBpbnN0cnVjdHMgdGhlIGNhY2hlIHRvIHRyZWF0IHRoZSByZXNwb25zZSBhcyBcInN0YXRpY1wiLCBvciBub24tXG4gICAgICAgICAgICAvLyBkeW5hbWljLCBzaW5jZSB0aGUgd2hvbGUgcG9pbnQgaXMgdG8gY2FjaGUgaXQgZm9yXG4gICAgICAgICAgICAvLyBmdXR1cmUgbmF2aWdhdGlvbnMuXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gQ29uc3RydWN0IGEgdHJlZSAoY3VycmVudGx5IGEgRmxpZ2h0Um91dGVyU3RhdGUpIHRoYXQgcmVwcmVzZW50c1xuICAgICAgICAgICAgLy8gd2hpY2ggc2VnbWVudHMgbmVlZCB0byBiZSBwcmVmZXRjaGVkIGFuZCB3aGljaCBvbmVzIGFyZSBhbHJlYWR5XG4gICAgICAgICAgICAvLyBjYWNoZWQuIElmIHRoZSB0cmVlIGlzIGVtcHR5LCB0aGVuIHdlIGNhbiBleGl0LiBPdGhlcndpc2UsIHdlJ2xsXG4gICAgICAgICAgICAvLyBzZW5kIHRoZSByZXF1ZXN0IHRyZWUgdG8gdGhlIHNlcnZlciBhbmQgdXNlIHRoZSByZXNwb25zZSB0b1xuICAgICAgICAgICAgLy8gcG9wdWxhdGUgdGhlIHNlZ21lbnQgY2FjaGUuXG4gICAgICAgICAgICBjb25zdCByZXF1ZXN0VHJlZUNoaWxkID0gcGluZ1JvdXRlVHJlZUFuZEluY2x1ZGVEeW5hbWljRGF0YShcbiAgICAgICAgICAgICAgbm93LFxuICAgICAgICAgICAgICB0YXNrLFxuICAgICAgICAgICAgICByb3V0ZSxcbiAgICAgICAgICAgICAgbmV3VHJlZUNoaWxkLFxuICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgc3Bhd25lZEVudHJpZXMsXG4gICAgICAgICAgICAgIGZldGNoU3RyYXRlZ3lcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHJlcXVlc3RUcmVlQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV0gPSByZXF1ZXN0VHJlZUNoaWxkXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgZmV0Y2hTdHJhdGVneSBzYXRpc2ZpZXMgbmV2ZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb25zdCByZXF1ZXN0VHJlZTogRmxpZ2h0Um91dGVyU3RhdGUgPSBbXG4gICAgbmV3VHJlZS5zZWdtZW50LFxuICAgIHJlcXVlc3RUcmVlQ2hpbGRyZW4sXG4gICAgbnVsbCxcbiAgICBudWxsLFxuICBdXG4gIHJldHVybiByZXF1ZXN0VHJlZVxufVxuXG5mdW5jdGlvbiBwaW5nUFBSRGlzYWJsZWRSb3V0ZVRyZWVVcFRvTG9hZGluZ0JvdW5kYXJ5KFxuICBub3c6IG51bWJlcixcbiAgdGFzazogUHJlZmV0Y2hUYXNrLFxuICByb3V0ZTogRnVsZmlsbGVkUm91dGVDYWNoZUVudHJ5LFxuICB0cmVlOiBSb3V0ZVRyZWUsXG4gIHJlZmV0Y2hNYXJrZXJDb250ZXh0OiAncmVmZXRjaCcgfCAnaW5zaWRlLXNoYXJlZC1sYXlvdXQnIHwgbnVsbCxcbiAgc3Bhd25lZEVudHJpZXM6IE1hcDxTZWdtZW50UmVxdWVzdEtleSwgUGVuZGluZ1NlZ21lbnRDYWNoZUVudHJ5PlxuKTogRmxpZ2h0Um91dGVyU3RhdGUge1xuICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8gcGluZ1JvdXRlVHJlZUFuZEluY2x1ZGVEeW5hbWljRGF0YSwgZXhjZXB0IHRoZVxuICAvLyBzZXJ2ZXIgaXMgb25seSBnb2luZyB0byByZXR1cm4gYSBtaW5pbWFsIGxvYWRpbmcgc3RhdGUg4oCUIGl0IHdpbGwgc3RvcFxuICAvLyByZW5kZXJpbmcgYXQgdGhlIGZpcnN0IGxvYWRpbmcgYm91bmRhcnkuIFdoZXJlYXMgYSBGdWxsIHByZWZldGNoIGlzXG4gIC8vIGludGVudGlvbmFsbHkgYWdncmVzc2l2ZSBhbmQgdHJpZXMgdG8gcHJldGZldGNoIGFsbCB0aGUgZGF0YSB0aGF0IHdpbGwgYmVcbiAgLy8gbmVlZGVkIGZvciBhIG5hdmlnYXRpb24sIGEgTG9hZGluZ0JvdW5kYXJ5IHByZWZldGNoIGlzIG11Y2ggbW9yZVxuICAvLyBjb25zZXJ2YXRpdmUuIEZvciBleGFtcGxlLCBpdCB3aWxsIG9taXQgZnJvbSB0aGUgcmVxdWVzdCB0cmVlIGFueSBzZWdtZW50XG4gIC8vIHRoYXQgaXMgYWxyZWFkeSBjYWNoZWQsIHJlZ2FyZGxlcyBvZiB3aGV0aGVyIGl0J3MgcGFydGlhbCBvciBmdWxsLiBCeVxuICAvLyBjb250cmFzdCwgYSBGdWxsIHByZWZldGNoIHdpbGwgcmVmZXRjaCBwYXJ0aWFsIHNlZ21lbnRzLlxuXG4gIC8vIFwiaW5zaWRlLXNoYXJlZC1sYXlvdXRcIiB0ZWxscyB0aGUgc2VydmVyIHdoZXJlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIGFcbiAgLy8gbG9hZGluZyBib3VuZGFyeS5cbiAgbGV0IHJlZmV0Y2hNYXJrZXI6ICdyZWZldGNoJyB8ICdpbnNpZGUtc2hhcmVkLWxheW91dCcgfCBudWxsID1cbiAgICByZWZldGNoTWFya2VyQ29udGV4dCA9PT0gbnVsbCA/ICdpbnNpZGUtc2hhcmVkLWxheW91dCcgOiBudWxsXG5cbiAgY29uc3Qgc2VnbWVudCA9IHJlYWRPckNyZWF0ZVNlZ21lbnRDYWNoZUVudHJ5KG5vdywgdGFzay5mZXRjaFN0cmF0ZWd5LCB0cmVlKVxuICBzd2l0Y2ggKHNlZ21lbnQuc3RhdHVzKSB7XG4gICAgY2FzZSBFbnRyeVN0YXR1cy5FbXB0eToge1xuICAgICAgLy8gVGhpcyBzZWdtZW50IGlzIG5vdCBjYWNoZWQuIEFkZCBhIHJlZmV0Y2ggbWFya2VyIHNvIHRoZSBzZXJ2ZXIga25vd3NcbiAgICAgIC8vIHRvIHN0YXJ0IHJlbmRlcmluZyBoZXJlLlxuICAgICAgLy8gVE9ETzogSW5zdGVhZCBvZiBhIFwicmVmZXRjaFwiIG1hcmtlciwgd2UgY291bGQganVzdCBvbWl0IHRoaXMgc3VidHJlZSdzXG4gICAgICAvLyBGbGlnaHRSb3V0ZXJTdGF0ZSBmcm9tIHRoZSByZXF1ZXN0IHRyZWUuIEkgdGhpbmsgdGhpcyB3b3VsZCBwcm9iYWJseVxuICAgICAgLy8gYWxyZWFkeSB3b3JrIGV2ZW4gd2l0aG91dCBhbnkgdXBkYXRlcyB0byB0aGUgc2VydmVyLiBGb3IgY29uc2lzdGVuY3ksXG4gICAgICAvLyB0aG91Z2gsIEknbGwgc2VuZCB0aGUgZnVsbCB0cmVlIGFuZCB3ZSdsbCBsb29rIGludG8gdGhpcyBsYXRlciBhcyBwYXJ0XG4gICAgICAvLyBvZiBhIGxhcmdlciByZWRlc2lnbiBvZiB0aGUgcmVxdWVzdCBwcm90b2NvbC5cblxuICAgICAgLy8gQWRkIHRoZSBwZW5kaW5nIGNhY2hlIGVudHJ5IHRvIHRoZSByZXN1bHQgbWFwLlxuICAgICAgc3Bhd25lZEVudHJpZXMuc2V0KFxuICAgICAgICB0cmVlLnJlcXVlc3RLZXksXG4gICAgICAgIHVwZ3JhZGVUb1BlbmRpbmdTZWdtZW50KFxuICAgICAgICAgIHNlZ21lbnQsXG4gICAgICAgICAgLy8gU2V0IHRoZSBmZXRjaCBzdHJhdGVneSB0byBMb2FkaW5nQm91bmRhcnkgdG8gaW5kaWNhdGUgdGhhdCB0aGUgc2VydmVyXG4gICAgICAgICAgLy8gbWlnaHQgbm90IGluY2x1ZGUgaXQgaW4gdGhlIHBlbmRpbmcgcmVzcG9uc2UuIElmIGFub3RoZXIgcm91dGUgaXMgYWJsZVxuICAgICAgICAgIC8vIHRvIGlzc3VlIGEgcGVyLXNlZ21lbnQgcmVxdWVzdCwgd2UnbGwgZG8gdGhhdCBpbiB0aGUgYmFja2dyb3VuZC5cbiAgICAgICAgICBGZXRjaFN0cmF0ZWd5LkxvYWRpbmdCb3VuZGFyeVxuICAgICAgICApXG4gICAgICApXG4gICAgICBpZiAocmVmZXRjaE1hcmtlckNvbnRleHQgIT09ICdyZWZldGNoJykge1xuICAgICAgICByZWZldGNoTWFya2VyID0gcmVmZXRjaE1hcmtlckNvbnRleHQgPSAncmVmZXRjaCdcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFRoZXJlJ3MgYWxyZWFkeSBhIHBhcmVudCB3aXRoIGEgcmVmZXRjaCBtYXJrZXIsIHNvIHdlIGRvbid0IG5lZWRcbiAgICAgICAgLy8gdG8gYWRkIGFub3RoZXIgb25lLlxuICAgICAgfVxuICAgICAgYnJlYWtcbiAgICB9XG4gICAgY2FzZSBFbnRyeVN0YXR1cy5GdWxmaWxsZWQ6IHtcbiAgICAgIC8vIFRoZSBzZWdtZW50IGlzIGFscmVhZHkgY2FjaGVkLlxuICAgICAgY29uc3Qgc2VnbWVudEhhc0xvYWRpbmdCb3VuZGFyeSA9XG4gICAgICAgICh0cmVlLnByZWZldGNoSGludHMgJiBQcmVmZXRjaEhpbnQuU2VnbWVudEhhc0xvYWRpbmdCb3VuZGFyeSkgIT09IDBcbiAgICAgIGlmIChzZWdtZW50SGFzTG9hZGluZ0JvdW5kYXJ5KSB7XG4gICAgICAgIC8vIFRoaXMgc2VnbWVudCBoYXMgYSBsb2FkaW5nIGJvdW5kYXJ5LCB3aGljaCBtZWFucyB0aGUgc2VydmVyIHdvbid0XG4gICAgICAgIC8vIHJlbmRlciBpdHMgY2hpbGRyZW4uIFNvIHRoZXJlJ3Mgbm90aGluZyBsZWZ0IHRvIHByZWZldGNoIGFsb25nIHRoaXNcbiAgICAgICAgLy8gcGF0aC4gV2UgY2FuIGJhaWwgb3V0LlxuICAgICAgICByZXR1cm4gY29udmVydFJvdXRlVHJlZVRvRmxpZ2h0Um91dGVyU3RhdGUodHJlZSlcbiAgICAgIH1cbiAgICAgIC8vIE5PVEU6IElmIHRoZSBjYWNoZWQgc2VnbWVudCB3ZXJlIGZldGNoZWQgdXNpbmcgUFBSLCB0aGVuIGl0IG1pZ2h0IGJlXG4gICAgICAvLyBwYXJ0aWFsLiBXZSBjb3VsZCBnZXQgYSBtb3JlIGNvbXBsZXRlIHZlcnNpb24gb2YgdGhlIHNlZ21lbnQgYnlcbiAgICAgIC8vIGluY2x1ZGluZyBpdCBpbiB0aGlzIG5vbi1QUFIgcmVxdWVzdC5cbiAgICAgIC8vXG4gICAgICAvLyBXZSdyZSBpbnRlbnRpb25hbGx5IGNob29zaW5nIG5vdCB0bywgdGhvdWdoLCBiZWNhdXNlIGl0J3MgZ2VuZXJhbGx5XG4gICAgICAvLyBiZXR0ZXIgdG8gYXZvaWQgZG9pbmcgYSBmdWxsIHByZWZldGNoIHdoZW5ldmVyIHBvc3NpYmxlLlxuICAgICAgYnJlYWtcbiAgICB9XG4gICAgY2FzZSBFbnRyeVN0YXR1cy5QZW5kaW5nOiB7XG4gICAgICAvLyBUaGVyZSdzIGFub3RoZXIgcHJlZmV0Y2ggY3VycmVudGx5IGluIHByb2dyZXNzLiBEb24ndCBhZGQgdGhlIHJlZmV0Y2hcbiAgICAgIC8vIG1hcmtlciB5ZXQsIHNvIHRoZSBzZXJ2ZXIga25vd3MgaXQgY2FuIHNraXAgcmVuZGVyaW5nIHRoaXMgc2VnbWVudC5cbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIGNhc2UgRW50cnlTdGF0dXMuUmVqZWN0ZWQ6IHtcbiAgICAgIC8vIFRoZSBzZWdtZW50IGZhaWxlZCB0byBsb2FkLiBXZSBzaG91bGRuJ3QgaXNzdWUgYW5vdGhlciByZXF1ZXN0IHVudGlsXG4gICAgICAvLyB0aGUgc3RhbGUgdGltZSBoYXMgZWxhcHNlZC5cbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIGRlZmF1bHQ6XG4gICAgICBzZWdtZW50IHNhdGlzZmllcyBuZXZlclxuICB9XG4gIGNvbnN0IHJlcXVlc3RUcmVlQ2hpbGRyZW46IFJlY29yZDxzdHJpbmcsIEZsaWdodFJvdXRlclN0YXRlPiA9IHt9XG4gIGlmICh0cmVlLnNsb3RzICE9PSBudWxsKSB7XG4gICAgZm9yIChjb25zdCBwYXJhbGxlbFJvdXRlS2V5IGluIHRyZWUuc2xvdHMpIHtcbiAgICAgIGNvbnN0IGNoaWxkVHJlZSA9IHRyZWUuc2xvdHNbcGFyYWxsZWxSb3V0ZUtleV1cbiAgICAgIHJlcXVlc3RUcmVlQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV0gPVxuICAgICAgICBwaW5nUFBSRGlzYWJsZWRSb3V0ZVRyZWVVcFRvTG9hZGluZ0JvdW5kYXJ5KFxuICAgICAgICAgIG5vdyxcbiAgICAgICAgICB0YXNrLFxuICAgICAgICAgIHJvdXRlLFxuICAgICAgICAgIGNoaWxkVHJlZSxcbiAgICAgICAgICByZWZldGNoTWFya2VyQ29udGV4dCxcbiAgICAgICAgICBzcGF3bmVkRW50cmllc1xuICAgICAgICApXG4gICAgfVxuICB9XG4gIGNvbnN0IHJlcXVlc3RUcmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZSA9IFtcbiAgICB0cmVlLnNlZ21lbnQsXG4gICAgcmVxdWVzdFRyZWVDaGlsZHJlbixcbiAgICBudWxsLFxuICAgIHJlZmV0Y2hNYXJrZXIsXG4gIF1cbiAgcmV0dXJuIHJlcXVlc3RUcmVlXG59XG5cbmZ1bmN0aW9uIHBpbmdSb3V0ZVRyZWVBbmRJbmNsdWRlRHluYW1pY0RhdGEoXG4gIG5vdzogbnVtYmVyLFxuICB0YXNrOiBQcmVmZXRjaFRhc2ssXG4gIHJvdXRlOiBGdWxmaWxsZWRSb3V0ZUNhY2hlRW50cnksXG4gIHRyZWU6IFJvdXRlVHJlZSxcbiAgaXNJbnNpZGVSZWZldGNoaW5nUGFyZW50OiBib29sZWFuLFxuICBzcGF3bmVkRW50cmllczogTWFwPFNlZ21lbnRSZXF1ZXN0S2V5LCBQZW5kaW5nU2VnbWVudENhY2hlRW50cnk+LFxuICBmZXRjaFN0cmF0ZWd5OiBGZXRjaFN0cmF0ZWd5LkZ1bGwgfCBGZXRjaFN0cmF0ZWd5LlBQUlJ1bnRpbWVcbik6IEZsaWdodFJvdXRlclN0YXRlIHtcbiAgLy8gVGhlIHRyZWUgd2UncmUgY29uc3RydWN0aW5nIGlzIHRoZSBzYW1lIHNoYXBlIGFzIHRoZSB0cmVlIHdlJ3JlIG5hdmlnYXRpbmdcbiAgLy8gdG8uIEJ1dCBldmVuIHRob3VnaCB0aGlzIGlzIGEgXCJuZXdcIiB0cmVlLCBzb21lIG9mIHRoZSBpbmRpdmlkdWFsIHNlZ21lbnRzXG4gIC8vIG1heSBiZSBjYWNoZWQgYXMgYSByZXN1bHQgb2Ygb3RoZXIgcm91dGUgcHJlZmV0Y2hlcy5cbiAgLy9cbiAgLy8gU28gd2UgbmVlZCB0byBmaW5kIHRoZSBmaXJzdCB1bmNhY2hlZCBzZWdtZW50IGFsb25nIGVhY2ggcGF0aCBhZGQgYW5cbiAgLy8gZXhwbGljaXQgXCJyZWZldGNoXCIgbWFya2VyIHNvIHRoZSBzZXJ2ZXIga25vd3Mgd2hlcmUgdG8gc3RhcnQgcmVuZGVyaW5nLlxuICAvLyBPbmNlIHRoZSBzZXJ2ZXIgc3RhcnRzIHJlbmRlcmluZyBhbG9uZyBhIHBhdGgsIGl0IGtlZXBzIHJlbmRlcmluZyB0aGVcbiAgLy8gZW50aXJlIHN1YnRyZWUuXG4gIGNvbnN0IHNlZ21lbnQgPSByZWFkT3JDcmVhdGVTZWdtZW50Q2FjaGVFbnRyeShcbiAgICBub3csXG4gICAgLy8gTm90ZSB0aGF0IGBmZXRjaFN0cmF0ZWd5YCBtaWdodCBiZSBkaWZmZXJlbnQgZnJvbSBgdGFzay5mZXRjaFN0cmF0ZWd5YCxcbiAgICAvLyBhbmQgd2UgaGF2ZSB0byB1c2UgdGhlIGZvcm1lciBoZXJlLlxuICAgIC8vIFdlIGNhbiBoYXZlIGEgdGFzayB3aXRoIGBGZXRjaFN0cmF0ZWd5LlBQUmAgd2hlcmUgc29tZSBvZiBpdHMgc2VnbWVudHMgYXJlIGNvbmZpZ3VyZWQgdG9cbiAgICAvLyBhbHdheXMgdXNlIHJ1bnRpbWUgcHJlZmV0Y2hpbmcgKHZpYSBgZXhwb3J0IGNvbnN0IHByZWZldGNoYCksIGFuZCB0aG9zZSBzaG91bGQgY2hlY2sgZm9yXG4gICAgLy8gZW50cmllcyB0aGF0IGluY2x1ZGUgc2VhcmNoIHBhcmFtcy5cbiAgICBmZXRjaFN0cmF0ZWd5LFxuICAgIHRyZWVcbiAgKVxuXG4gIGxldCBzcGF3bmVkU2VnbWVudDogUGVuZGluZ1NlZ21lbnRDYWNoZUVudHJ5IHwgbnVsbCA9IG51bGxcblxuICBzd2l0Y2ggKHNlZ21lbnQuc3RhdHVzKSB7XG4gICAgY2FzZSBFbnRyeVN0YXR1cy5FbXB0eToge1xuICAgICAgLy8gVGhpcyBzZWdtZW50IGlzIG5vdCBjYWNoZWQuXG4gICAgICBpZiAoZmV0Y2hTdHJhdGVneSA9PT0gRmV0Y2hTdHJhdGVneS5GdWxsKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYSBtYXRjaGluZyBlbnRyeSBpbiB0aGUgYmZjYWNoZS4gSWYgc28sIGZ1bGZpbGwgdGhlXG4gICAgICAgIC8vIHNlZ21lbnQgdXNpbmcgdGhlIGJmY2FjaGUgZW50cnkgaW5zdGVhZCBvZiBpc3N1aW5nIGEgbmV3IHJlcXVlc3QuXG4gICAgICAgIGNvbnN0IGZ1bGZpbGxlZCA9IGF0dGVtcHRUb0Z1bGZpbGxEeW5hbWljU2VnbWVudEZyb21CRkNhY2hlKFxuICAgICAgICAgIG5vdyxcbiAgICAgICAgICBzZWdtZW50LFxuICAgICAgICAgIHRyZWVcbiAgICAgICAgKVxuICAgICAgICBpZiAoZnVsZmlsbGVkICE9PSBudWxsKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gSW5jbHVkZSBpdCBpbiB0aGUgcmVxdWVzdC5cbiAgICAgIHNwYXduZWRTZWdtZW50ID0gdXBncmFkZVRvUGVuZGluZ1NlZ21lbnQoc2VnbWVudCwgZmV0Y2hTdHJhdGVneSlcbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIGNhc2UgRW50cnlTdGF0dXMuRnVsZmlsbGVkOiB7XG4gICAgICAvLyBUaGUgc2VnbWVudCBpcyBhbHJlYWR5IGNhY2hlZC5cbiAgICAgIGlmIChcbiAgICAgICAgc2VnbWVudC5pc1BhcnRpYWwgJiZcbiAgICAgICAgY2FuTmV3RmV0Y2hTdHJhdGVneVByb3ZpZGVNb3JlQ29udGVudChcbiAgICAgICAgICBzZWdtZW50LmZldGNoU3RyYXRlZ3ksXG4gICAgICAgICAgZmV0Y2hTdHJhdGVneVxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgLy8gVGhlIGNhY2hlZCBzZWdtZW50IGNvbnRhaW5zIGR5bmFtaWMgaG9sZXMsIGFuZCB3YXMgcHJlZmV0Y2hlZCB1c2luZyBhXG4gICAgICAgIC8vIGxlc3Mgc3BlY2lmaWMgc3RyYXRlZ3kgdGhhbiB0aGUgY3VycmVudCBvbmUuIFRoaXMgbWVhbnMgd2UncmUgaW4gb25lXG4gICAgICAgIC8vIG9mIHRoZXNlIGNhc2VzOlxuICAgICAgICAvLyAgIC0gd2UgaGF2ZSBhIHN0YXRpYyBwcmVmZXRjaCwgYW5kIHdlJ3JlIGRvaW5nIGEgcnVudGltZSBwcmVmZXRjaFxuICAgICAgICAvLyAgIC0gd2UgaGF2ZSBhIHN0YXRpYyBvciBydW50aW1lIHByZWZldGNoLCBhbmQgd2UncmUgZG9pbmcgYSBGdWxsXG4gICAgICAgIC8vICAgICBwcmVmZXRjaCAob3IgYSBuYXZpZ2F0aW9uKS5cbiAgICAgICAgLy8gSW4gZWl0aGVyIGNhc2UsIHdlIG5lZWQgdG8gaW5jbHVkZSBpdCBpbiB0aGUgcmVxdWVzdCB0byBnZXQgYSBtb3JlXG4gICAgICAgIC8vIHNwZWNpZmljIChvciBmdWxsKSB2ZXJzaW9uLiBIb3dldmVyLCBpZiB0aGVyZSdzIGEgbm9uLXN0YWxlIGJmY2FjaGVcbiAgICAgICAgLy8gZW50cnkgZnJvbSBhIHByZXZpb3VzIG5hdmlnYXRpb24sIHByZWZlciB0aGF0IG92ZXIgbWFraW5nIGEgbmV3XG4gICAgICAgIC8vIHJlcXVlc3QuXG4gICAgICAgIGlmIChmZXRjaFN0cmF0ZWd5ID09PSBGZXRjaFN0cmF0ZWd5LkZ1bGwpIHtcbiAgICAgICAgICBjb25zdCBmdWxmaWxsZWQgPSBhdHRlbXB0VG9VcGdyYWRlU2VnbWVudEZyb21CRkNhY2hlKG5vdywgdHJlZSlcbiAgICAgICAgICBpZiAoZnVsZmlsbGVkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzcGF3bmVkU2VnbWVudCA9IHBpbmdGdWxsU2VnbWVudFJldmFsaWRhdGlvbihub3csIHRyZWUsIGZldGNoU3RyYXRlZ3kpXG4gICAgICB9XG4gICAgICBicmVha1xuICAgIH1cbiAgICBjYXNlIEVudHJ5U3RhdHVzLlBlbmRpbmc6XG4gICAgY2FzZSBFbnRyeVN0YXR1cy5SZWplY3RlZDoge1xuICAgICAgLy8gVGhlcmUncyBlaXRoZXIgYW5vdGhlciBwcmVmZXRjaCBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MsIG9yIHRoZSBwcmV2aW91c1xuICAgICAgLy8gYXR0ZW1wdCBmYWlsZWQuIElmIHRoZSBuZXcgc3RyYXRlZ3kgY2FuIHByb3ZpZGUgbW9yZSBjb250ZW50LCBmZXRjaCBpdCBhZ2Fpbi5cbiAgICAgIGlmIChcbiAgICAgICAgY2FuTmV3RmV0Y2hTdHJhdGVneVByb3ZpZGVNb3JlQ29udGVudChcbiAgICAgICAgICBzZWdtZW50LmZldGNoU3RyYXRlZ3ksXG4gICAgICAgICAgZmV0Y2hTdHJhdGVneVxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgc3Bhd25lZFNlZ21lbnQgPSBwaW5nRnVsbFNlZ21lbnRSZXZhbGlkYXRpb24obm93LCB0cmVlLCBmZXRjaFN0cmF0ZWd5KVxuICAgICAgfVxuICAgICAgYnJlYWtcbiAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHNlZ21lbnQgc2F0aXNmaWVzIG5ldmVyXG4gIH1cbiAgY29uc3QgcmVxdWVzdFRyZWVDaGlsZHJlbjogUmVjb3JkPHN0cmluZywgRmxpZ2h0Um91dGVyU3RhdGU+ID0ge31cbiAgaWYgKHRyZWUuc2xvdHMgIT09IG51bGwpIHtcbiAgICBmb3IgKGNvbnN0IHBhcmFsbGVsUm91dGVLZXkgaW4gdHJlZS5zbG90cykge1xuICAgICAgY29uc3QgY2hpbGRUcmVlID0gdHJlZS5zbG90c1twYXJhbGxlbFJvdXRlS2V5XVxuICAgICAgcmVxdWVzdFRyZWVDaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XSA9XG4gICAgICAgIHBpbmdSb3V0ZVRyZWVBbmRJbmNsdWRlRHluYW1pY0RhdGEoXG4gICAgICAgICAgbm93LFxuICAgICAgICAgIHRhc2ssXG4gICAgICAgICAgcm91dGUsXG4gICAgICAgICAgY2hpbGRUcmVlLFxuICAgICAgICAgIGlzSW5zaWRlUmVmZXRjaGluZ1BhcmVudCB8fCBzcGF3bmVkU2VnbWVudCAhPT0gbnVsbCxcbiAgICAgICAgICBzcGF3bmVkRW50cmllcyxcbiAgICAgICAgICBmZXRjaFN0cmF0ZWd5XG4gICAgICAgIClcbiAgICB9XG4gIH1cblxuICBpZiAoc3Bhd25lZFNlZ21lbnQgIT09IG51bGwpIHtcbiAgICAvLyBBZGQgdGhlIHBlbmRpbmcgZW50cnkgdG8gdGhlIHJlc3VsdCBtYXAuXG4gICAgc3Bhd25lZEVudHJpZXMuc2V0KHRyZWUucmVxdWVzdEtleSwgc3Bhd25lZFNlZ21lbnQpXG4gIH1cblxuICAvLyBEb24ndCBib3RoZXIgdG8gYWRkIGEgcmVmZXRjaCBtYXJrZXIgaWYgb25lIGlzIGFscmVhZHkgcHJlc2VudCBpbiBhIHBhcmVudC5cbiAgY29uc3QgcmVmZXRjaE1hcmtlciA9XG4gICAgIWlzSW5zaWRlUmVmZXRjaGluZ1BhcmVudCAmJiBzcGF3bmVkU2VnbWVudCAhPT0gbnVsbCA/ICdyZWZldGNoJyA6IG51bGxcblxuICBjb25zdCByZXF1ZXN0VHJlZTogRmxpZ2h0Um91dGVyU3RhdGUgPSBbXG4gICAgdHJlZS5zZWdtZW50LFxuICAgIHJlcXVlc3RUcmVlQ2hpbGRyZW4sXG4gICAgbnVsbCxcbiAgICByZWZldGNoTWFya2VyLFxuICBdXG4gIHJldHVybiByZXF1ZXN0VHJlZVxufVxuXG5mdW5jdGlvbiBwaW5nUnVudGltZVByZWZldGNoZXMoXG4gIG5vdzogbnVtYmVyLFxuICB0YXNrOiBQcmVmZXRjaFRhc2ssXG4gIHJvdXRlOiBGdWxmaWxsZWRSb3V0ZUNhY2hlRW50cnksXG4gIHRyZWU6IFJvdXRlVHJlZSxcbiAgc3Bhd25lZFJ1bnRpbWVQcmVmZXRjaGVzOiBTZXQ8U2VnbWVudFJlcXVlc3RLZXk+LFxuICBzcGF3bmVkRW50cmllczogTWFwPFNlZ21lbnRSZXF1ZXN0S2V5LCBQZW5kaW5nU2VnbWVudENhY2hlRW50cnk+XG4pOiBGbGlnaHRSb3V0ZXJTdGF0ZSB7XG4gIC8vIENvbnN0cnVjdCBhIHJlcXVlc3QgdHJlZSAoRmxpZ2h0Um91dGVyU3RhdGUpIGZvciBhIHJ1bnRpbWUgcHJlZmV0Y2guIElmXG4gIC8vIGEgc2VnbWVudCBpcyBwYXJ0IG9mIHRoZSBydW50aW1lIHByZWZldGNoLCB0aGUgdHJlZSBpcyBjb25zdHJ1Y3RlZCBieVxuICAvLyBkaWZmaW5nIGFnYWluc3Qgd2hhdCdzIGFscmVhZHkgaW4gdGhlIHByZWZldGNoIGNhY2hlLiBPdGhlcndpc2UsIHdlIHNlbmRcbiAgLy8gYSByZWd1bGFyIEZsaWdodFJvdXRlclN0YXRlIHdpdGggbm8gc3BlY2lhbCBtYXJrZXJzLlxuICAvL1xuICAvLyBTZWUgcGluZ1JvdXRlVHJlZUFuZEluY2x1ZGVEeW5hbWljRGF0YSBmb3IgZGV0YWlscy5cbiAgaWYgKHNwYXduZWRSdW50aW1lUHJlZmV0Y2hlcy5oYXModHJlZS5yZXF1ZXN0S2V5KSkge1xuICAgIC8vIFRoaXMgc2VnbWVudCBuZWVkcyBhIHJ1bnRpbWUgcHJlZmV0Y2guXG4gICAgcmV0dXJuIHBpbmdSb3V0ZVRyZWVBbmRJbmNsdWRlRHluYW1pY0RhdGEoXG4gICAgICBub3csXG4gICAgICB0YXNrLFxuICAgICAgcm91dGUsXG4gICAgICB0cmVlLFxuICAgICAgZmFsc2UsXG4gICAgICBzcGF3bmVkRW50cmllcyxcbiAgICAgIEZldGNoU3RyYXRlZ3kuUFBSUnVudGltZVxuICAgIClcbiAgfVxuICBsZXQgcmVxdWVzdFRyZWVDaGlsZHJlbjogUmVjb3JkPHN0cmluZywgRmxpZ2h0Um91dGVyU3RhdGU+ID0ge31cbiAgY29uc3Qgc2xvdHMgPSB0cmVlLnNsb3RzXG4gIGlmIChzbG90cyAhPT0gbnVsbCkge1xuICAgIGZvciAoY29uc3QgcGFyYWxsZWxSb3V0ZUtleSBpbiBzbG90cykge1xuICAgICAgY29uc3QgY2hpbGRUcmVlID0gc2xvdHNbcGFyYWxsZWxSb3V0ZUtleV1cbiAgICAgIHJlcXVlc3RUcmVlQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV0gPSBwaW5nUnVudGltZVByZWZldGNoZXMoXG4gICAgICAgIG5vdyxcbiAgICAgICAgdGFzayxcbiAgICAgICAgcm91dGUsXG4gICAgICAgIGNoaWxkVHJlZSxcbiAgICAgICAgc3Bhd25lZFJ1bnRpbWVQcmVmZXRjaGVzLFxuICAgICAgICBzcGF3bmVkRW50cmllc1xuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIC8vIFRoaXMgc2VnbWVudCBpcyBub3QgcGFydCBvZiB0aGUgcnVudGltZSBwcmVmZXRjaC4gQ2xvbmUgdGhlIGJhc2UgdHJlZS5cbiAgY29uc3QgcmVxdWVzdFRyZWU6IEZsaWdodFJvdXRlclN0YXRlID0gW1xuICAgIHRyZWUuc2VnbWVudCxcbiAgICByZXF1ZXN0VHJlZUNoaWxkcmVuLFxuICAgIG51bGwsXG4gICAgbnVsbCxcbiAgXVxuICByZXR1cm4gcmVxdWVzdFRyZWVcbn1cblxuZnVuY3Rpb24gcGluZ1N0YXRpY1NlZ21lbnREYXRhKFxuICBub3c6IG51bWJlcixcbiAgdGFzazogUHJlZmV0Y2hUYXNrLFxuICByb3V0ZTogRnVsZmlsbGVkUm91dGVDYWNoZUVudHJ5LFxuICBzZWdtZW50OiBTZWdtZW50Q2FjaGVFbnRyeSxcbiAgcm91dGVLZXk6IFJvdXRlQ2FjaGVLZXksXG4gIHRyZWU6IFJvdXRlVHJlZVxuKTogdm9pZCB7XG4gIHN3aXRjaCAoc2VnbWVudC5zdGF0dXMpIHtcbiAgICBjYXNlIEVudHJ5U3RhdHVzLkVtcHR5OlxuICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9QUkVGRVRDSF9JTkxJTklORykge1xuICAgICAgICAvLyBBbGwgc2VnbWVudCBkYXRhIGZvciB0aGlzIHJvdXRlIGlzIGJ1bmRsZWQgaW50byBhIHNpbmdsZVxuICAgICAgICAvLyAvX2lubGluZWQgcmVzcG9uc2UuIFdhbGsgdGhlIGZ1bGwgcm91dGUgdHJlZSB0byBjb2xsZWN0IGFsbFxuICAgICAgICAvLyBFbXB0eSBzZWdtZW50cywgdXBncmFkZSB0aGVtIHRvIFBlbmRpbmcsIGFuZCBzcGF3biBvbmVcbiAgICAgICAgLy8gYnVuZGxlZCByZXF1ZXN0LiBTdWJzZXF1ZW50IGNhbGxzIGZvciBvdGhlciBzZWdtZW50cyBpbiB0aGVcbiAgICAgICAgLy8gc2FtZSB0cmVlIHdpbGwgc2VlIHRoZW0gYXMgUGVuZGluZyBhbmQgc2tpcC5cbiAgICAgICAgY29uc3QgaW5saW5lZEVudHJpZXMgPSBjb2xsZWN0SW5saW5lZEVudHJpZXMobm93LCByb3V0ZSlcbiAgICAgICAgaWYgKGlubGluZWRFbnRyaWVzLnNpemUgPiAwKSB7XG4gICAgICAgICAgc3Bhd25QcmVmZXRjaFN1YnRhc2soXG4gICAgICAgICAgICBmZXRjaElubGluZWRTZWdtZW50c09uQ2FjaGVNaXNzKFxuICAgICAgICAgICAgICByb3V0ZSxcbiAgICAgICAgICAgICAgcm91dGVLZXksXG4gICAgICAgICAgICAgIHJvdXRlLnRyZWUsXG4gICAgICAgICAgICAgIGlubGluZWRFbnRyaWVzXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICAvLyBVcGdyYWRlIHRvIFBlbmRpbmcgc28gd2Uga25vdyB0aGVyZSdzIGFscmVhZHkgYSByZXF1ZXN0IGluIHByb2dyZXNzXG4gICAgICBzcGF3blByZWZldGNoU3VidGFzayhcbiAgICAgICAgZmV0Y2hTZWdtZW50T25DYWNoZU1pc3MoXG4gICAgICAgICAgcm91dGUsXG4gICAgICAgICAgdXBncmFkZVRvUGVuZGluZ1NlZ21lbnQoc2VnbWVudCwgRmV0Y2hTdHJhdGVneS5QUFIpLFxuICAgICAgICAgIHJvdXRlS2V5LFxuICAgICAgICAgIHRyZWVcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgYnJlYWtcbiAgICBjYXNlIEVudHJ5U3RhdHVzLlBlbmRpbmc6IHtcbiAgICAgIC8vIFRoZXJlJ3MgYWxyZWFkeSBhIHJlcXVlc3QgaW4gcHJvZ3Jlc3MuIERlcGVuZGluZyBvbiB3aGF0IGtpbmQgb2ZcbiAgICAgIC8vIHJlcXVlc3QgaXQgaXMsIHdlIG1heSB3YW50IHRvIHJldmFsaWRhdGUgaXQuXG4gICAgICBzd2l0Y2ggKHNlZ21lbnQuZmV0Y2hTdHJhdGVneSkge1xuICAgICAgICBjYXNlIEZldGNoU3RyYXRlZ3kuUFBSOlxuICAgICAgICBjYXNlIEZldGNoU3RyYXRlZ3kuUFBSUnVudGltZTpcbiAgICAgICAgY2FzZSBGZXRjaFN0cmF0ZWd5LkZ1bGw6XG4gICAgICAgICAgLy8gVGhlcmUncyBhbHJlYWR5IGEgcmVxdWVzdCBpbiBwcm9ncmVzcy4gRG9uJ3QgZG8gYW55dGhpbmcuXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBGZXRjaFN0cmF0ZWd5LkxvYWRpbmdCb3VuZGFyeTpcbiAgICAgICAgICAvLyBUaGVyZSdzIGEgcGVuZGluZyByZXF1ZXN0LCBidXQgYmVjYXVzZSBpdCdzIHVzaW5nIHRoZSBvbGRcbiAgICAgICAgICAvLyBwcmVmZXRjaGluZyBzdHJhdGVneSwgd2UgY2FuJ3QgYmUgc3VyZSBpZiBpdCB3aWxsIGJlIGZ1bGZpbGxlZCBieVxuICAgICAgICAgIC8vIHRoZSByZXNwb25zZSDigJQgaXQgbWlnaHQgYmUgaW5zaWRlIHRoZSBsb2FkaW5nIGJvdW5kYXJ5LiBQZXJmb3JtXG4gICAgICAgICAgLy8gYSByZXZhbGlkYXRpb24sIGJ1dCBiZWNhdXNlIGl0J3Mgc3BlY3VsYXRpdmUsIHdhaXQgdG8gZG8gaXQgYXRcbiAgICAgICAgICAvLyBiYWNrZ3JvdW5kIHByaW9yaXR5LlxuICAgICAgICAgIGlmIChiYWNrZ3JvdW5kKHRhc2spKSB7XG4gICAgICAgICAgICAvLyBUT0RPOiBJbnN0ZWFkIG9mIHNwZWN1bGF0aXZlbHkgcmV2YWxpZGF0aW5nLCBjb25zaWRlciBpbmNsdWRpbmdcbiAgICAgICAgICAgIC8vIGBoYXNMb2FkaW5nYCBpbiB0aGUgcm91dGUgdHJlZSBwcmVmZXRjaCByZXNwb25zZS5cbiAgICAgICAgICAgIHBpbmdQUFJTZWdtZW50UmV2YWxpZGF0aW9uKG5vdywgcm91dGUsIHJvdXRlS2V5LCB0cmVlKVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHNlZ21lbnQuZmV0Y2hTdHJhdGVneSBzYXRpc2ZpZXMgbmV2ZXJcbiAgICAgIH1cbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIGNhc2UgRW50cnlTdGF0dXMuUmVqZWN0ZWQ6IHtcbiAgICAgIC8vIFRoZSBleGlzdGluZyBlbnRyeSBpbiB0aGUgY2FjaGUgd2FzIHJlamVjdGVkLiBEZXBlbmRpbmcgb24gaG93IGl0XG4gICAgICAvLyB3YXMgb3JpZ2luYWxseSBmZXRjaGVkLCB3ZSBtYXkgb3IgbWF5IG5vdCB3YW50IHRvIHJldmFsaWRhdGUgaXQuXG4gICAgICBzd2l0Y2ggKHNlZ21lbnQuZmV0Y2hTdHJhdGVneSkge1xuICAgICAgICBjYXNlIEZldGNoU3RyYXRlZ3kuUFBSOlxuICAgICAgICBjYXNlIEZldGNoU3RyYXRlZ3kuUFBSUnVudGltZTpcbiAgICAgICAgY2FzZSBGZXRjaFN0cmF0ZWd5LkZ1bGw6XG4gICAgICAgICAgLy8gVGhlIHByZXZpb3VzIGF0dGVtcHQgdG8gZmV0Y2ggdGhpcyBlbnRyeSBmYWlsZWQuIERvbid0IGF0dGVtcHQgdG9cbiAgICAgICAgICAvLyBmZXRjaCBpdCBhZ2FpbiB1bnRpbCB0aGUgZW50cnkgZXhwaXJlcy5cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIEZldGNoU3RyYXRlZ3kuTG9hZGluZ0JvdW5kYXJ5OlxuICAgICAgICAgIC8vIFRoZXJlJ3MgYSByZWplY3RlZCBlbnRyeSwgYnV0IGl0IHdhcyBmZXRjaGVkIHVzaW5nIHRoZSBsb2FkaW5nXG4gICAgICAgICAgLy8gYm91bmRhcnkgc3RyYXRlZ3kuIFNvIHRoZSByZWFzb24gaXQgd2Fzbid0IHJldHVybmVkIGJ5IHRoZSBzZXJ2ZXJcbiAgICAgICAgICAvLyBtaWdodCBqdXN0IGJlIGJlY2F1c2UgaXQgd2FzIGluc2lkZSBhIGxvYWRpbmcgYm91bmRhcnkuIE9yIGJlY2F1c2VcbiAgICAgICAgICAvLyB0aGVyZSB3YXMgYSBkeW5hbWljIHJld3JpdGUuIFJldmFsaWRhdGUgaXQgdXNpbmcgdGhlIHBlci1cbiAgICAgICAgICAvLyBzZWdtZW50IHN0cmF0ZWd5LlxuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gQmVjYXVzZSBhIHJlamVjdGVkIHNlZ21lbnQgd2lsbCBkZWZpbml0ZWx5IHByZXZlbnQgdGhlIHNlZ21lbnQgKGFuZFxuICAgICAgICAgIC8vIGFsbCBvZiBpdHMgY2hpbGRyZW4pIGZyb20gcmVuZGVyaW5nLCB3ZSBwZXJmb3JtIHRoaXMgcmV2YWxpZGF0aW9uXG4gICAgICAgICAgLy8gaW1tZWRpYXRlbHkgaW5zdGVhZCBvZiBkZWZlcnJpbmcgaXQgdG8gYSBiYWNrZ3JvdW5kIHRhc2suXG4gICAgICAgICAgcGluZ1BQUlNlZ21lbnRSZXZhbGlkYXRpb24obm93LCByb3V0ZSwgcm91dGVLZXksIHRyZWUpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBzZWdtZW50LmZldGNoU3RyYXRlZ3kgc2F0aXNmaWVzIG5ldmVyXG4gICAgICB9XG4gICAgICBicmVha1xuICAgIH1cbiAgICBjYXNlIEVudHJ5U3RhdHVzLkZ1bGZpbGxlZDpcbiAgICAgIC8vIFNlZ21lbnQgaXMgYWxyZWFkeSBjYWNoZWQuIFRoZXJlJ3Mgbm90aGluZyBsZWZ0IHRvIHByZWZldGNoLlxuICAgICAgYnJlYWtcbiAgICBkZWZhdWx0OlxuICAgICAgc2VnbWVudCBzYXRpc2ZpZXMgbmV2ZXJcbiAgfVxuXG4gIC8vIFNlZ21lbnRzIGRvIG5vdCBoYXZlIGRlcGVuZGVudCB0YXNrcywgc28gb25jZSB0aGUgcHJlZmV0Y2ggaXMgaW5pdGlhdGVkLFxuICAvLyB0aGVyZSdzIG5vdGhpbmcgZWxzZSBmb3IgdXMgdG8gZG8gKGV4Y2VwdCB3cml0ZSB0aGUgc2VydmVyIGRhdGEgaW50byB0aGVcbiAgLy8gZW50cnksIHdoaWNoIGlzIGhhbmRsZWQgYnkgYGZldGNoU2VnbWVudE9uQ2FjaGVNaXNzYCkuXG59XG5cbi8qKlxuICogV2Fsa3MgdGhlIFJvdXRlVHJlZSAoaW5jbHVkaW5nIHRoZSBoZWFkIG1ldGFkYXRhKSBhbmQgY29sbGVjdHMgYW55IHNlZ21lbnRzXG4gKiB0aGF0IGFyZSBzdGlsbCBFbXB0eSBpbnRvIGEgTWFwLCB1cGdyYWRpbmcgdGhlbSB0byBQZW5kaW5nLiBUaGVzZSBlbnRyaWVzXG4gKiB3aWxsIGJlIGZ1bGZpbGxlZCBieSB0aGUgaW5saW5lZCBwcmVmZXRjaCByZXNwb25zZS5cbiAqL1xuZnVuY3Rpb24gY29sbGVjdElubGluZWRFbnRyaWVzKFxuICBub3c6IG51bWJlcixcbiAgcm91dGU6IEZ1bGZpbGxlZFJvdXRlQ2FjaGVFbnRyeVxuKTogTWFwPFNlZ21lbnRSZXF1ZXN0S2V5LCBQZW5kaW5nU2VnbWVudENhY2hlRW50cnk+IHtcbiAgY29uc3QgZW50cmllcyA9IG5ldyBNYXA8U2VnbWVudFJlcXVlc3RLZXksIFBlbmRpbmdTZWdtZW50Q2FjaGVFbnRyeT4oKVxuICBjb2xsZWN0SW5saW5lZEVudHJpZXNJbXBsKG5vdywgcm91dGUudHJlZSwgZW50cmllcylcbiAgLy8gQWxzbyBjb2xsZWN0IHRoZSBoZWFkL21ldGFkYXRhIGVudHJ5LlxuICBjb25zdCBoZWFkRW50cnkgPSByZWFkT3JDcmVhdGVTZWdtZW50Q2FjaGVFbnRyeShcbiAgICBub3csXG4gICAgRmV0Y2hTdHJhdGVneS5QUFIsXG4gICAgcm91dGUubWV0YWRhdGFcbiAgKVxuICBpZiAoaGVhZEVudHJ5LnN0YXR1cyA9PT0gRW50cnlTdGF0dXMuRW1wdHkpIHtcbiAgICBlbnRyaWVzLnNldChcbiAgICAgIHJvdXRlLm1ldGFkYXRhLnJlcXVlc3RLZXksXG4gICAgICB1cGdyYWRlVG9QZW5kaW5nU2VnbWVudChoZWFkRW50cnksIEZldGNoU3RyYXRlZ3kuUFBSKVxuICAgIClcbiAgfVxuICByZXR1cm4gZW50cmllc1xufVxuXG5mdW5jdGlvbiBjb2xsZWN0SW5saW5lZEVudHJpZXNJbXBsKFxuICBub3c6IG51bWJlcixcbiAgdHJlZTogUm91dGVUcmVlLFxuICBlbnRyaWVzOiBNYXA8U2VnbWVudFJlcXVlc3RLZXksIFBlbmRpbmdTZWdtZW50Q2FjaGVFbnRyeT5cbik6IHZvaWQge1xuICBjb25zdCBlbnRyeSA9IHJlYWRPckNyZWF0ZVNlZ21lbnRDYWNoZUVudHJ5KG5vdywgRmV0Y2hTdHJhdGVneS5QUFIsIHRyZWUpXG4gIGlmIChlbnRyeS5zdGF0dXMgPT09IEVudHJ5U3RhdHVzLkVtcHR5KSB7XG4gICAgZW50cmllcy5zZXQoXG4gICAgICB0cmVlLnJlcXVlc3RLZXksXG4gICAgICB1cGdyYWRlVG9QZW5kaW5nU2VnbWVudChlbnRyeSwgRmV0Y2hTdHJhdGVneS5QUFIpXG4gICAgKVxuICB9XG4gIGlmICh0cmVlLnNsb3RzICE9PSBudWxsKSB7XG4gICAgZm9yIChjb25zdCBwYXJhbGxlbFJvdXRlS2V5IGluIHRyZWUuc2xvdHMpIHtcbiAgICAgIGNvbGxlY3RJbmxpbmVkRW50cmllc0ltcGwobm93LCB0cmVlLnNsb3RzW3BhcmFsbGVsUm91dGVLZXldLCBlbnRyaWVzKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwaW5nUFBSU2VnbWVudFJldmFsaWRhdGlvbihcbiAgbm93OiBudW1iZXIsXG4gIHJvdXRlOiBGdWxmaWxsZWRSb3V0ZUNhY2hlRW50cnksXG4gIHJvdXRlS2V5OiBSb3V0ZUNhY2hlS2V5LFxuICB0cmVlOiBSb3V0ZVRyZWVcbik6IHZvaWQge1xuICBjb25zdCByZXZhbGlkYXRpbmdTZWdtZW50ID0gcmVhZE9yQ3JlYXRlUmV2YWxpZGF0aW5nU2VnbWVudEVudHJ5KFxuICAgIG5vdyxcbiAgICBGZXRjaFN0cmF0ZWd5LlBQUixcbiAgICB0cmVlXG4gIClcbiAgc3dpdGNoIChyZXZhbGlkYXRpbmdTZWdtZW50LnN0YXR1cykge1xuICAgIGNhc2UgRW50cnlTdGF0dXMuRW1wdHk6XG4gICAgICAvLyBTcGF3biBhIHByZWZldGNoIHJlcXVlc3QuIFRoZSBmZXRjaCBmdW5jdGlvbiBoYW5kbGVzIHVwc2VydGluZ1xuICAgICAgLy8gdGhlIGVudHJ5IGF0IHRoZSBjb3JyZWN0IGZ1bGZpbGxlZCB2YXJ5IHBhdGggdXBvbiBjb21wbGV0aW9uLlxuICAgICAgc3Bhd25QcmVmZXRjaFN1YnRhc2soXG4gICAgICAgIGZldGNoU2VnbWVudE9uQ2FjaGVNaXNzKFxuICAgICAgICAgIHJvdXRlLFxuICAgICAgICAgIHVwZ3JhZGVUb1BlbmRpbmdTZWdtZW50KHJldmFsaWRhdGluZ1NlZ21lbnQsIEZldGNoU3RyYXRlZ3kuUFBSKSxcbiAgICAgICAgICByb3V0ZUtleSxcbiAgICAgICAgICB0cmVlXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIGJyZWFrXG4gICAgY2FzZSBFbnRyeVN0YXR1cy5QZW5kaW5nOlxuICAgICAgLy8gVGhlcmUncyBhbHJlYWR5IGEgcmV2YWxpZGF0aW9uIGluIHByb2dyZXNzLlxuICAgICAgYnJlYWtcbiAgICBjYXNlIEVudHJ5U3RhdHVzLkZ1bGZpbGxlZDpcbiAgICBjYXNlIEVudHJ5U3RhdHVzLlJlamVjdGVkOlxuICAgICAgLy8gQSBwcmV2aW91cyByZXZhbGlkYXRpb24gYXR0ZW1wdCBmaW5pc2hlZCwgYnV0IHdlIGNob3NlIG5vdCB0byByZXBsYWNlXG4gICAgICAvLyB0aGUgZXhpc3RpbmcgZW50cnkgaW4gdGhlIGNhY2hlLiBEb24ndCB0cnkgYWdhaW4gdW50aWwgb3IgdW5sZXNzIHRoZVxuICAgICAgLy8gcmV2YWxpZGF0aW9uIGVudHJ5IGV4cGlyZXMuXG4gICAgICBicmVha1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXZhbGlkYXRpbmdTZWdtZW50IHNhdGlzZmllcyBuZXZlclxuICB9XG59XG5cbmZ1bmN0aW9uIHBpbmdGdWxsU2VnbWVudFJldmFsaWRhdGlvbihcbiAgbm93OiBudW1iZXIsXG4gIHRyZWU6IFJvdXRlVHJlZSxcbiAgZmV0Y2hTdHJhdGVneTogRmV0Y2hTdHJhdGVneS5GdWxsIHwgRmV0Y2hTdHJhdGVneS5QUFJSdW50aW1lXG4pOiBQZW5kaW5nU2VnbWVudENhY2hlRW50cnkgfCBudWxsIHtcbiAgY29uc3QgcmV2YWxpZGF0aW5nU2VnbWVudCA9IHJlYWRPckNyZWF0ZVJldmFsaWRhdGluZ1NlZ21lbnRFbnRyeShcbiAgICBub3csXG4gICAgZmV0Y2hTdHJhdGVneSxcbiAgICB0cmVlXG4gIClcbiAgaWYgKHJldmFsaWRhdGluZ1NlZ21lbnQuc3RhdHVzID09PSBFbnRyeVN0YXR1cy5FbXB0eSkge1xuICAgIC8vIER1cmluZyBhIEZ1bGwvUFBSUnVudGltZSBwcmVmZXRjaCwgYSBzaW5nbGUgZHluYW1pYyByZXF1ZXN0IGlzIG1hZGUgZm9yIGFsbCB0aGVcbiAgICAvLyBzZWdtZW50cyB0aGF0IHdlIG5lZWQuIFNvIHdlIGRvbid0IGluaXRpYXRlIGEgcmVxdWVzdCBoZXJlIGRpcmVjdGx5LiBCeVxuICAgIC8vIHJldHVybmluZyBhIHBlbmRpbmcgZW50cnkgZnJvbSB0aGlzIGZ1bmN0aW9uLCBpdCBzaWduYWxzIHRvIHRoZSBjYWxsZXJcbiAgICAvLyB0aGF0IHRoaXMgc2VnbWVudCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHJlcXVlc3QgdGhhdCdzIHNlbnQgdG9cbiAgICAvLyB0aGUgc2VydmVyLlxuICAgIGNvbnN0IHBlbmRpbmdTZWdtZW50ID0gdXBncmFkZVRvUGVuZGluZ1NlZ21lbnQoXG4gICAgICByZXZhbGlkYXRpbmdTZWdtZW50LFxuICAgICAgZmV0Y2hTdHJhdGVneVxuICAgIClcbiAgICAvLyBUaGUgdXBzZXJ0IGlzIGhhbmRsZWQgYnkgZnVsZmlsbEVudHJ5U3Bhd25lZEJ5UnVudGltZVByZWZldGNoXG4gICAgLy8gd2hlbiB0aGUgZHluYW1pYyBwcmVmZXRjaCByZXNwb25zZSBpcyB3cml0dGVuIGludG8gdGhlIGNhY2hlLlxuICAgIHJldHVybiBwZW5kaW5nU2VnbWVudFxuICB9IGVsc2Uge1xuICAgIC8vIFRoZXJlJ3MgYWxyZWFkeSBhIHJldmFsaWRhdGlvbiBpbiBwcm9ncmVzcy5cbiAgICBjb25zdCBub25FbXB0eVJldmFsaWRhdGluZ1NlZ21lbnQgPSByZXZhbGlkYXRpbmdTZWdtZW50XG4gICAgaWYgKFxuICAgICAgY2FuTmV3RmV0Y2hTdHJhdGVneVByb3ZpZGVNb3JlQ29udGVudChcbiAgICAgICAgbm9uRW1wdHlSZXZhbGlkYXRpbmdTZWdtZW50LmZldGNoU3RyYXRlZ3ksXG4gICAgICAgIGZldGNoU3RyYXRlZ3lcbiAgICAgIClcbiAgICApIHtcbiAgICAgIC8vIFRoZSBleGlzdGluZyByZXZhbGlkYXRpb24gd2FzIGZldGNoZWQgdXNpbmcgYSBsZXNzIHNwZWNpZmljIHN0cmF0ZWd5LlxuICAgICAgLy8gUmVzZXQgaXQgYW5kIHN0YXJ0IGEgbmV3IHJldmFsaWRhdGlvbi5cbiAgICAgIGNvbnN0IGVtcHR5U2VnbWVudCA9IG92ZXJ3cml0ZVJldmFsaWRhdGluZ1NlZ21lbnRDYWNoZUVudHJ5KFxuICAgICAgICBub3csXG4gICAgICAgIGZldGNoU3RyYXRlZ3ksXG4gICAgICAgIHRyZWVcbiAgICAgIClcbiAgICAgIGNvbnN0IHBlbmRpbmdTZWdtZW50ID0gdXBncmFkZVRvUGVuZGluZ1NlZ21lbnQoXG4gICAgICAgIGVtcHR5U2VnbWVudCxcbiAgICAgICAgZmV0Y2hTdHJhdGVneVxuICAgICAgKVxuICAgICAgLy8gVGhlIHVwc2VydCBpcyBoYW5kbGVkIGJ5IGZ1bGZpbGxFbnRyeVNwYXduZWRCeVJ1bnRpbWVQcmVmZXRjaFxuICAgICAgLy8gd2hlbiB0aGUgZHluYW1pYyBwcmVmZXRjaCByZXNwb25zZSBpcyB3cml0dGVuIGludG8gdGhlIGNhY2hlLlxuICAgICAgcmV0dXJuIHBlbmRpbmdTZWdtZW50XG4gICAgfVxuICAgIHN3aXRjaCAobm9uRW1wdHlSZXZhbGlkYXRpbmdTZWdtZW50LnN0YXR1cykge1xuICAgICAgY2FzZSBFbnRyeVN0YXR1cy5QZW5kaW5nOlxuICAgICAgICAvLyBUaGVyZSdzIGFscmVhZHkgYW4gaW4tcHJvZ3Jlc3MgcHJlZmV0Y2ggdGhhdCBpbmNsdWRlcyB0aGlzIHNlZ21lbnQuXG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICBjYXNlIEVudHJ5U3RhdHVzLkZ1bGZpbGxlZDpcbiAgICAgIGNhc2UgRW50cnlTdGF0dXMuUmVqZWN0ZWQ6XG4gICAgICAgIC8vIEEgcHJldmlvdXMgcmV2YWxpZGF0aW9uIGF0dGVtcHQgZmluaXNoZWQsIGJ1dCB3ZSBjaG9zZSBub3QgdG8gcmVwbGFjZVxuICAgICAgICAvLyB0aGUgZXhpc3RpbmcgZW50cnkgaW4gdGhlIGNhY2hlLiBEb24ndCB0cnkgYWdhaW4gdW50aWwgb3IgdW5sZXNzIHRoZVxuICAgICAgICAvLyByZXZhbGlkYXRpb24gZW50cnkgZXhwaXJlcy5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIG5vbkVtcHR5UmV2YWxpZGF0aW5nU2VnbWVudCBzYXRpc2ZpZXMgbmV2ZXJcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZG9lc0N1cnJlbnRTZWdtZW50TWF0Y2hDYWNoZWRTZWdtZW50KFxuICByb3V0ZTogRnVsZmlsbGVkUm91dGVDYWNoZUVudHJ5LFxuICBjdXJyZW50U2VnbWVudDogU2VnbWVudCxcbiAgY2FjaGVkU2VnbWVudDogU2VnbWVudFxuKTogYm9vbGVhbiB7XG4gIGlmIChjYWNoZWRTZWdtZW50ID09PSBQQUdFX1NFR01FTlRfS0VZKSB7XG4gICAgLy8gSW4gdGhlIEZsaWdodFJvdXRlclN0YXRlIHN0b3JlZCBieSB0aGUgcm91dGVyLCB0aGUgcGFnZSBzZWdtZW50IGhhcyB0aGVcbiAgICAvLyByZW5kZXJlZCBzZWFyY2ggcGFyYW1zIGFwcGVuZGVkIHRvIHRoZSBuYW1lIG9mIHRoZSBzZWdtZW50LiBJbiB0aGVcbiAgICAvLyBwcmVmZXRjaCBjYWNoZSwgaG93ZXZlciwgdGhpcyBpcyBzdG9yZWQgc2VwYXJhdGVseS4gU28sIHdoZW4gY29tcGFyaW5nXG4gICAgLy8gdGhlIHJvdXRlcidzIGN1cnJlbnQgRmxpZ2h0Um91dGVyU3RhdGUgdG8gdGhlIGNhY2hlZCBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgICAvLyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBjb21wYXJlIGJvdGggcGFydHMgb2YgdGhlIHNlZ21lbnQuXG4gICAgLy8gVE9ETzogVGhpcyBpcyBub3QgbW9kZWxlZCBjbGVhcmx5LiBXZSB1c2UgdGhlIHNhbWUgdHlwZSxcbiAgICAvLyBGbGlnaHRSb3V0ZXJTdGF0ZSwgZm9yIGJvdGggdGhlIENhY2hlTm9kZSB0cmVlIF9hbmRfIHRoZSBwcmVmZXRjaCBjYWNoZVxuICAgIC8vIF9hbmRfIHRoZSBzZXJ2ZXIgcmVzcG9uc2UgZm9ybWF0LCB3aGVuIGNvbmNlcHR1YWxseSB0aG9zZSBhcmUgdGhyZWVcbiAgICAvLyBkaWZmZXJlbnQgdGhpbmdzIGFuZCB0cmVhdGVkIGluIGRpZmZlcmVudCB3YXlzLiBXZSBzaG91bGQgZW5jb2RlIG1vcmUgb2ZcbiAgICAvLyB0aGlzIGluZm9ybWF0aW9uIGludG8gdGhlIHR5cGUgZGVzaWduIHNvIG1pc3Rha2VzIGFyZSBsZXNzIGxpa2VseS5cbiAgICByZXR1cm4gKFxuICAgICAgY3VycmVudFNlZ21lbnQgPT09XG4gICAgICBhZGRTZWFyY2hQYXJhbXNJZlBhZ2VTZWdtZW50KFxuICAgICAgICBQQUdFX1NFR01FTlRfS0VZLFxuICAgICAgICBPYmplY3QuZnJvbUVudHJpZXMobmV3IFVSTFNlYXJjaFBhcmFtcyhyb3V0ZS5yZW5kZXJlZFNlYXJjaCkpXG4gICAgICApXG4gICAgKVxuICB9XG4gIC8vIE5vbi1wYWdlIHNlZ21lbnRzIGFyZSBjb21wYXJlZCB1c2luZyB0aGUgc2FtZSBmdW5jdGlvbiBhcyB0aGUgc2VydmVyXG4gIHJldHVybiBtYXRjaFNlZ21lbnQoY2FjaGVkU2VnbWVudCwgY3VycmVudFNlZ21lbnQpXG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUaGUgcmVtYWluZGVyIG9mIHRoZSBtb2R1bGUgaXMgYSBNaW5IZWFwIGltcGxlbWVudGF0aW9uLiBUcnkgbm90IHRvIHB1dCBhbnlcbi8vIGxvZ2ljIGJlbG93IGhlcmUgdW5sZXNzIGl0J3MgcmVsYXRlZCB0byB0aGUgaGVhcCBhbGdvcml0aG0uIFdlIGNhbiBleHRyYWN0XG4vLyB0aGlzIHRvIGEgc2VwYXJhdGUgbW9kdWxlIGlmL3doZW4gd2UgbmVlZCBtdWx0aXBsZSBraW5kcyBvZiBoZWFwcy5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIGNvbXBhcmVRdWV1ZVByaW9yaXR5KGE6IFByZWZldGNoVGFzaywgYjogUHJlZmV0Y2hUYXNrKSB7XG4gIC8vIFNpbmNlIHRoZSBxdWV1ZSBpcyBhIE1pbkhlYXAsIHRoaXMgc2hvdWxkIHJldHVybiBhIHBvc2l0aXZlIG51bWJlciBpZiBiIGlzXG4gIC8vIGhpZ2hlciBwcmlvcml0eSB0aGFuIGEsIGFuZCBhIG5lZ2F0aXZlIG51bWJlciBpZiBhIGlzIGhpZ2hlciBwcmlvcml0eVxuICAvLyB0aGFuIGIuXG5cbiAgLy8gYHByaW9yaXR5YCBpcyBhbiBpbnRlZ2VyLCB3aGVyZSBoaWdoZXIgbnVtYmVycyBhcmUgaGlnaGVyIHByaW9yaXR5LlxuICBjb25zdCBwcmlvcml0eURpZmYgPSBiLnByaW9yaXR5IC0gYS5wcmlvcml0eVxuICBpZiAocHJpb3JpdHlEaWZmICE9PSAwKSB7XG4gICAgcmV0dXJuIHByaW9yaXR5RGlmZlxuICB9XG5cbiAgLy8gSWYgdGhlIHByaW9yaXR5IGlzIHRoZSBzYW1lLCBjaGVjayB3aGljaCBwaGFzZSB0aGUgcHJlZmV0Y2ggaXMgaW4g4oCUIGlzIGl0XG4gIC8vIHByZWZldGNoaW5nIHRoZSByb3V0ZSB0cmVlLCBvciB0aGUgc2VnbWVudHM/IFJvdXRlIHRyZWVzIGFyZSBwcmlvcml0aXplZC5cbiAgY29uc3QgcGhhc2VEaWZmID0gYi5waGFzZSAtIGEucGhhc2VcbiAgaWYgKHBoYXNlRGlmZiAhPT0gMCkge1xuICAgIHJldHVybiBwaGFzZURpZmZcbiAgfVxuXG4gIC8vIEZpbmFsbHksIGNoZWNrIHRoZSBpbnNlcnRpb24gb3JkZXIuIGBzb3J0SWRgIGlzIGFuIGluY3JlbWVudGluZyBjb3VudGVyXG4gIC8vIGFzc2lnbmVkIHRvIHByZWZldGNoZXMuIFdlIHdhbnQgdG8gcHJvY2VzcyB0aGUgbmV3ZXN0IHByZWZldGNoZXMgZmlyc3QuXG4gIHJldHVybiBiLnNvcnRJZCAtIGEuc29ydElkXG59XG5cbmZ1bmN0aW9uIGhlYXBQdXNoKGhlYXA6IEFycmF5PFByZWZldGNoVGFzaz4sIG5vZGU6IFByZWZldGNoVGFzayk6IHZvaWQge1xuICBjb25zdCBpbmRleCA9IGhlYXAubGVuZ3RoXG4gIGhlYXAucHVzaChub2RlKVxuICBub2RlLl9oZWFwSW5kZXggPSBpbmRleFxuICBoZWFwU2lmdFVwKGhlYXAsIG5vZGUsIGluZGV4KVxufVxuXG5mdW5jdGlvbiBoZWFwUGVlayhoZWFwOiBBcnJheTxQcmVmZXRjaFRhc2s+KTogUHJlZmV0Y2hUYXNrIHwgbnVsbCB7XG4gIHJldHVybiBoZWFwLmxlbmd0aCA9PT0gMCA/IG51bGwgOiBoZWFwWzBdXG59XG5cbmZ1bmN0aW9uIGhlYXBQb3AoaGVhcDogQXJyYXk8UHJlZmV0Y2hUYXNrPik6IFByZWZldGNoVGFzayB8IG51bGwge1xuICBpZiAoaGVhcC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGZpcnN0ID0gaGVhcFswXVxuICBmaXJzdC5faGVhcEluZGV4ID0gLTFcbiAgY29uc3QgbGFzdCA9IGhlYXAucG9wKCkgYXMgUHJlZmV0Y2hUYXNrXG4gIGlmIChsYXN0ICE9PSBmaXJzdCkge1xuICAgIGhlYXBbMF0gPSBsYXN0XG4gICAgbGFzdC5faGVhcEluZGV4ID0gMFxuICAgIGhlYXBTaWZ0RG93bihoZWFwLCBsYXN0LCAwKVxuICB9XG4gIHJldHVybiBmaXJzdFxufVxuXG5mdW5jdGlvbiBoZWFwRGVsZXRlKGhlYXA6IEFycmF5PFByZWZldGNoVGFzaz4sIG5vZGU6IFByZWZldGNoVGFzayk6IHZvaWQge1xuICBjb25zdCBpbmRleCA9IG5vZGUuX2hlYXBJbmRleFxuICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgbm9kZS5faGVhcEluZGV4ID0gLTFcbiAgICBpZiAoaGVhcC5sZW5ndGggIT09IDApIHtcbiAgICAgIGNvbnN0IGxhc3QgPSBoZWFwLnBvcCgpIGFzIFByZWZldGNoVGFza1xuICAgICAgaWYgKGxhc3QgIT09IG5vZGUpIHtcbiAgICAgICAgaGVhcFtpbmRleF0gPSBsYXN0XG4gICAgICAgIGxhc3QuX2hlYXBJbmRleCA9IGluZGV4XG4gICAgICAgIGhlYXBTaWZ0RG93bihoZWFwLCBsYXN0LCBpbmRleClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaGVhcFJlc2lmdChoZWFwOiBBcnJheTxQcmVmZXRjaFRhc2s+LCBub2RlOiBQcmVmZXRjaFRhc2spOiB2b2lkIHtcbiAgY29uc3QgaW5kZXggPSBub2RlLl9oZWFwSW5kZXhcbiAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgaGVhcFNpZnREb3duKGhlYXAsIG5vZGUsIDApXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHBhcmVudEluZGV4ID0gKGluZGV4IC0gMSkgPj4+IDFcbiAgICAgIGNvbnN0IHBhcmVudCA9IGhlYXBbcGFyZW50SW5kZXhdXG4gICAgICBpZiAoY29tcGFyZVF1ZXVlUHJpb3JpdHkocGFyZW50LCBub2RlKSA+IDApIHtcbiAgICAgICAgLy8gVGhlIHBhcmVudCBpcyBsYXJnZXIuIFNpZnQgdXAuXG4gICAgICAgIGhlYXBTaWZ0VXAoaGVhcCwgbm9kZSwgaW5kZXgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBUaGUgcGFyZW50IGlzIHNtYWxsZXIgKG9yIGVxdWFsKS4gU2lmdCBkb3duLlxuICAgICAgICBoZWFwU2lmdERvd24oaGVhcCwgbm9kZSwgaW5kZXgpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGhlYXBTaWZ0VXAoXG4gIGhlYXA6IEFycmF5PFByZWZldGNoVGFzaz4sXG4gIG5vZGU6IFByZWZldGNoVGFzayxcbiAgaTogbnVtYmVyXG4pOiB2b2lkIHtcbiAgbGV0IGluZGV4ID0gaVxuICB3aGlsZSAoaW5kZXggPiAwKSB7XG4gICAgY29uc3QgcGFyZW50SW5kZXggPSAoaW5kZXggLSAxKSA+Pj4gMVxuICAgIGNvbnN0IHBhcmVudCA9IGhlYXBbcGFyZW50SW5kZXhdXG4gICAgaWYgKGNvbXBhcmVRdWV1ZVByaW9yaXR5KHBhcmVudCwgbm9kZSkgPiAwKSB7XG4gICAgICAvLyBUaGUgcGFyZW50IGlzIGxhcmdlci4gU3dhcCBwb3NpdGlvbnMuXG4gICAgICBoZWFwW3BhcmVudEluZGV4XSA9IG5vZGVcbiAgICAgIG5vZGUuX2hlYXBJbmRleCA9IHBhcmVudEluZGV4XG4gICAgICBoZWFwW2luZGV4XSA9IHBhcmVudFxuICAgICAgcGFyZW50Ll9oZWFwSW5kZXggPSBpbmRleFxuXG4gICAgICBpbmRleCA9IHBhcmVudEluZGV4XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZSBwYXJlbnQgaXMgc21hbGxlci4gRXhpdC5cbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBoZWFwU2lmdERvd24oXG4gIGhlYXA6IEFycmF5PFByZWZldGNoVGFzaz4sXG4gIG5vZGU6IFByZWZldGNoVGFzayxcbiAgaTogbnVtYmVyXG4pOiB2b2lkIHtcbiAgbGV0IGluZGV4ID0gaVxuICBjb25zdCBsZW5ndGggPSBoZWFwLmxlbmd0aFxuICBjb25zdCBoYWxmTGVuZ3RoID0gbGVuZ3RoID4+PiAxXG4gIHdoaWxlIChpbmRleCA8IGhhbGZMZW5ndGgpIHtcbiAgICBjb25zdCBsZWZ0SW5kZXggPSAoaW5kZXggKyAxKSAqIDIgLSAxXG4gICAgY29uc3QgbGVmdCA9IGhlYXBbbGVmdEluZGV4XVxuICAgIGNvbnN0IHJpZ2h0SW5kZXggPSBsZWZ0SW5kZXggKyAxXG4gICAgY29uc3QgcmlnaHQgPSBoZWFwW3JpZ2h0SW5kZXhdXG5cbiAgICAvLyBJZiB0aGUgbGVmdCBvciByaWdodCBub2RlIGlzIHNtYWxsZXIsIHN3YXAgd2l0aCB0aGUgc21hbGxlciBvZiB0aG9zZS5cbiAgICBpZiAoY29tcGFyZVF1ZXVlUHJpb3JpdHkobGVmdCwgbm9kZSkgPCAwKSB7XG4gICAgICBpZiAocmlnaHRJbmRleCA8IGxlbmd0aCAmJiBjb21wYXJlUXVldWVQcmlvcml0eShyaWdodCwgbGVmdCkgPCAwKSB7XG4gICAgICAgIGhlYXBbaW5kZXhdID0gcmlnaHRcbiAgICAgICAgcmlnaHQuX2hlYXBJbmRleCA9IGluZGV4XG4gICAgICAgIGhlYXBbcmlnaHRJbmRleF0gPSBub2RlXG4gICAgICAgIG5vZGUuX2hlYXBJbmRleCA9IHJpZ2h0SW5kZXhcblxuICAgICAgICBpbmRleCA9IHJpZ2h0SW5kZXhcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhlYXBbaW5kZXhdID0gbGVmdFxuICAgICAgICBsZWZ0Ll9oZWFwSW5kZXggPSBpbmRleFxuICAgICAgICBoZWFwW2xlZnRJbmRleF0gPSBub2RlXG4gICAgICAgIG5vZGUuX2hlYXBJbmRleCA9IGxlZnRJbmRleFxuXG4gICAgICAgIGluZGV4ID0gbGVmdEluZGV4XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChyaWdodEluZGV4IDwgbGVuZ3RoICYmIGNvbXBhcmVRdWV1ZVByaW9yaXR5KHJpZ2h0LCBub2RlKSA8IDApIHtcbiAgICAgIGhlYXBbaW5kZXhdID0gcmlnaHRcbiAgICAgIHJpZ2h0Ll9oZWFwSW5kZXggPSBpbmRleFxuICAgICAgaGVhcFtyaWdodEluZGV4XSA9IG5vZGVcbiAgICAgIG5vZGUuX2hlYXBJbmRleCA9IHJpZ2h0SW5kZXhcblxuICAgICAgaW5kZXggPSByaWdodEluZGV4XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5laXRoZXIgY2hpbGQgaXMgc21hbGxlci4gRXhpdC5cbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbImNhbmNlbFByZWZldGNoVGFzayIsImlzUHJlZmV0Y2hUYXNrRGlydHkiLCJwaW5nUHJlZmV0Y2hTY2hlZHVsZXIiLCJwaW5nUHJlZmV0Y2hUYXNrIiwicmVzY2hlZHVsZVByZWZldGNoVGFzayIsInNjaGVkdWxlUHJlZmV0Y2hUYXNrIiwic3RhcnRSZXZhbGlkYXRpb25Db29sZG93biIsInNjaGVkdWxlTWljcm90YXNrIiwicXVldWVNaWNyb3Rhc2siLCJmbiIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsImNhdGNoIiwiZXJyb3IiLCJzZXRUaW1lb3V0IiwidGFza0hlYXAiLCJpblByb2dyZXNzUmVxdWVzdHMiLCJzb3J0SWRDb3VudGVyIiwiZGlkU2NoZWR1bGVNaWNyb3Rhc2siLCJtb3N0UmVjZW50bHlIb3ZlcmVkTGluayIsIlJFVkFMSURBVElPTl9DT09MRE9XTl9NUyIsInJldmFsaWRhdGlvbkNvb2xkb3duVGltZW91dEhhbmRsZSIsImNsZWFyVGltZW91dCIsImtleSIsInRyZWVBdFRpbWVPZlByZWZldGNoIiwiZmV0Y2hTdHJhdGVneSIsInByaW9yaXR5Iiwib25JbnZhbGlkYXRlIiwiX29uQ29tcGxldGUiLCJ0YXNrIiwicm91dGVDYWNoZVZlcnNpb24iLCJnZXRDdXJyZW50Um91dGVDYWNoZVZlcnNpb24iLCJzZWdtZW50Q2FjaGVWZXJzaW9uIiwiZ2V0Q3VycmVudFNlZ21lbnRDYWNoZVZlcnNpb24iLCJwaGFzZSIsImhhc0JhY2tncm91bmRXb3JrIiwic3Bhd25lZFJ1bnRpbWVQcmVmZXRjaGVzIiwic29ydElkIiwiaXNDYW5jZWxlZCIsIl9oZWFwSW5kZXgiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX0VYUE9TRV9URVNUSU5HX0FQSSIsInRyYWNrTW9zdFJlY2VudGx5SG92ZXJlZExpbmsiLCJoZWFwUHVzaCIsImhlYXBEZWxldGUiLCJvbkNvbXBsZXRlIiwidW5kZWZpbmVkIiwiUHJlZmV0Y2hQcmlvcml0eSIsIkludGVudCIsImhlYXBSZXNpZnQiLCJuZXh0VXJsIiwidHJlZSIsIkJhY2tncm91bmQiLCJEZWZhdWx0IiwicHJvY2Vzc1F1ZXVlSW5NaWNyb3Rhc2siLCJoYXNOZXR3b3JrQmFuZHdpZHRoIiwic3Bhd25QcmVmZXRjaFN1YnRhc2siLCJwcmVmZXRjaFN1YnRhc2siLCJyZXN1bHQiLCJvblByZWZldGNoQ29ubmVjdGlvbkNsb3NlZCIsImNsb3NlZCIsInZhbHVlIiwibm93IiwiRGF0ZSIsImhlYXBQZWVrIiwiZXhpdFN0YXR1cyIsInBpbmdSb3V0ZSIsImhlYXBQb3AiLCJjbGVhbnVwIiwiYmFja2dyb3VuZCIsInJvdXRlIiwicmVhZE9yQ3JlYXRlUm91dGVDYWNoZUVudHJ5IiwicGluZ1Jvb3RSb3V0ZVRyZWUiLCJzZWFyY2giLCJ1cmwiLCJVUkwiLCJwYXRobmFtZSIsImxvY2F0aW9uIiwib3JpZ2luIiwia2V5V2l0aG91dFNlYXJjaCIsImNyZWF0ZUNhY2hlS2V5IiwiaHJlZiIsInJvdXRlV2l0aG91dFNlYXJjaCIsInN0YXR1cyIsIkVudHJ5U3RhdHVzIiwiRW1wdHkiLCJQZW5kaW5nIiwiZmV0Y2hSb3V0ZU9uQ2FjaGVNaXNzIiwiRnVsZmlsbGVkIiwiUmVqZWN0ZWQiLCJzdGFsZUF0IiwiYmxvY2tlZFRhc2tzIiwiU2V0IiwiYWRkIiwicHJlZmV0Y2hIaW50cyIsIlByZWZldGNoSGludCIsIlN1YnRyZWVIYXNJbnN0YW50IiwiRmV0Y2hTdHJhdGVneSIsIlBQUiIsInN1cHBvcnRzUGVyU2VnbWVudFByZWZldGNoaW5nIiwiTG9hZGluZ0JvdW5kYXJ5IiwicGluZ1N0YXRpY0hlYWQiLCJwaW5nU2hhcmVkUGFydE9mQ2FjaGVDb21wb25lbnRzVHJlZSIsInNwYXduZWRFbnRyaWVzIiwiTWFwIiwicGluZ1J1bnRpbWVIZWFkIiwiUFBSUnVudGltZSIsInJlcXVlc3RUcmVlIiwicGluZ1J1bnRpbWVQcmVmZXRjaGVzIiwibmVlZHNEeW5hbWljUmVxdWVzdCIsInNpemUiLCJmZXRjaFNlZ21lbnRQcmVmZXRjaGVzVXNpbmdEeW5hbWljUmVxdWVzdCIsIkZ1bGwiLCJkeW5hbWljUmVxdWVzdFRyZWUiLCJkaWZmUm91dGVUcmVlQWdhaW5zdEN1cnJlbnQiLCJwaW5nU3RhdGljU2VnbWVudERhdGEiLCJyZWFkT3JDcmVhdGVTZWdtZW50Q2FjaGVFbnRyeSIsIm1ldGFkYXRhIiwicGluZ1JvdXRlVHJlZUFuZEluY2x1ZGVEeW5hbWljRGF0YSIsIm9sZFRyZWUiLCJuZXdUcmVlIiwic2VnbWVudCIsIm9sZFRyZWVDaGlsZHJlbiIsIm5ld1RyZWVDaGlsZHJlbiIsInNsb3RzIiwicGFyYWxsZWxSb3V0ZUtleSIsIm5ld1RyZWVDaGlsZCIsIm5ld1RyZWVDaGlsZFNlZ21lbnQiLCJvbGRUcmVlQ2hpbGQiLCJvbGRUcmVlQ2hpbGRTZWdtZW50IiwiY2hpbGRFeGl0U3RhdHVzIiwiZG9lc0N1cnJlbnRTZWdtZW50TWF0Y2hDYWNoZWRTZWdtZW50IiwicGluZ05ld1BhcnRPZkNhY2hlQ29tcG9uZW50c1RyZWUiLCJIYXNSdW50aW1lUHJlZmV0Y2giLCJyZXF1ZXN0S2V5IiwiY2hpbGRUcmVlIiwicmVxdWVzdFRyZWVDaGlsZHJlbiIsInJlcXVlc3RUcmVlQ2hpbGQiLCJzdWJ0cmVlSGFzTG9hZGluZ0JvdW5kYXJ5IiwiU2VnbWVudEhhc0xvYWRpbmdCb3VuZGFyeSIsIlN1YnRyZWVIYXNMb2FkaW5nQm91bmRhcnkiLCJwaW5nUFBSRGlzYWJsZWRSb3V0ZVRyZWVVcFRvTG9hZGluZ0JvdW5kYXJ5IiwiY29udmVydFJvdXRlVHJlZVRvRmxpZ2h0Um91dGVyU3RhdGUiLCJyZWZldGNoTWFya2VyQ29udGV4dCIsInJlZmV0Y2hNYXJrZXIiLCJzZXQiLCJ1cGdyYWRlVG9QZW5kaW5nU2VnbWVudCIsInNlZ21lbnRIYXNMb2FkaW5nQm91bmRhcnkiLCJpc0luc2lkZVJlZmV0Y2hpbmdQYXJlbnQiLCJzcGF3bmVkU2VnbWVudCIsImZ1bGZpbGxlZCIsImF0dGVtcHRUb0Z1bGZpbGxEeW5hbWljU2VnbWVudEZyb21CRkNhY2hlIiwiaXNQYXJ0aWFsIiwiY2FuTmV3RmV0Y2hTdHJhdGVneVByb3ZpZGVNb3JlQ29udGVudCIsImF0dGVtcHRUb1VwZ3JhZGVTZWdtZW50RnJvbUJGQ2FjaGUiLCJwaW5nRnVsbFNlZ21lbnRSZXZhbGlkYXRpb24iLCJoYXMiLCJyb3V0ZUtleSIsIl9fTkVYVF9QUkVGRVRDSF9JTkxJTklORyIsImlubGluZWRFbnRyaWVzIiwiY29sbGVjdElubGluZWRFbnRyaWVzIiwiZmV0Y2hJbmxpbmVkU2VnbWVudHNPbkNhY2hlTWlzcyIsImZldGNoU2VnbWVudE9uQ2FjaGVNaXNzIiwicGluZ1BQUlNlZ21lbnRSZXZhbGlkYXRpb24iLCJlbnRyaWVzIiwiY29sbGVjdElubGluZWRFbnRyaWVzSW1wbCIsImhlYWRFbnRyeSIsImVudHJ5IiwicmV2YWxpZGF0aW5nU2VnbWVudCIsInJlYWRPckNyZWF0ZVJldmFsaWRhdGluZ1NlZ21lbnRFbnRyeSIsInBlbmRpbmdTZWdtZW50Iiwibm9uRW1wdHlSZXZhbGlkYXRpbmdTZWdtZW50IiwiZW1wdHlTZWdtZW50Iiwib3ZlcndyaXRlUmV2YWxpZGF0aW5nU2VnbWVudENhY2hlRW50cnkiLCJjdXJyZW50U2VnbWVudCIsImNhY2hlZFNlZ21lbnQiLCJQQUdFX1NFR01FTlRfS0VZIiwiYWRkU2VhcmNoUGFyYW1zSWZQYWdlU2VnbWVudCIsIk9iamVjdCIsImZyb21FbnRyaWVzIiwiVVJMU2VhcmNoUGFyYW1zIiwicmVuZGVyZWRTZWFyY2giLCJtYXRjaFNlZ21lbnQiLCJjb21wYXJlUXVldWVQcmlvcml0eSIsImEiLCJiIiwicHJpb3JpdHlEaWZmIiwicGhhc2VEaWZmIiwiaGVhcCIsIm5vZGUiLCJpbmRleCIsImxlbmd0aCIsInB1c2giLCJoZWFwU2lmdFVwIiwiZmlyc3QiLCJsYXN0IiwicG9wIiwiaGVhcFNpZnREb3duIiwicGFyZW50SW5kZXgiLCJwYXJlbnQiLCJpIiwiaGFsZkxlbmd0aCIsImxlZnRJbmRleCIsImxlZnQiLCJyaWdodEluZGV4IiwicmlnaHQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/segment-cache/scheduler.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/segment-cache/types.js":
|
||
/*!*************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/segment-cache/types.js ***!
|
||
\*************************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * Shared types and constants for the Segment Cache.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n FetchStrategy: function() {\n return FetchStrategy;\n },\n NavigationResultTag: function() {\n return NavigationResultTag;\n },\n PrefetchPriority: function() {\n return PrefetchPriority;\n }\n});\nvar NavigationResultTag = /*#__PURE__*/ function(NavigationResultTag) {\n NavigationResultTag[NavigationResultTag[\"MPA\"] = 0] = \"MPA\";\n NavigationResultTag[NavigationResultTag[\"Success\"] = 1] = \"Success\";\n NavigationResultTag[NavigationResultTag[\"NoOp\"] = 2] = \"NoOp\";\n NavigationResultTag[NavigationResultTag[\"Async\"] = 3] = \"Async\";\n return NavigationResultTag;\n}({});\nvar PrefetchPriority = /*#__PURE__*/ function(PrefetchPriority) {\n /**\n * Assigned to the most recently hovered/touched link. Special network\n * bandwidth is reserved for this task only. There's only ever one Intent-\n * priority task at a time; when a new Intent task is scheduled, the previous\n * one is bumped down to Default.\n */ PrefetchPriority[PrefetchPriority[\"Intent\"] = 2] = \"Intent\";\n /**\n * The default priority for prefetch tasks.\n */ PrefetchPriority[PrefetchPriority[\"Default\"] = 1] = \"Default\";\n /**\n * Assigned to tasks when they spawn non-blocking background work, like\n * revalidating a partially cached entry to see if more data is available.\n */ PrefetchPriority[PrefetchPriority[\"Background\"] = 0] = \"Background\";\n return PrefetchPriority;\n}({});\nvar FetchStrategy = /*#__PURE__*/ function(FetchStrategy) {\n // Deliberately ordered so we can easily compare two segments\n // and determine if one segment is \"more specific\" than another\n // (i.e. if it's likely that it contains more data)\n FetchStrategy[FetchStrategy[\"LoadingBoundary\"] = 0] = \"LoadingBoundary\";\n FetchStrategy[FetchStrategy[\"PPR\"] = 1] = \"PPR\";\n FetchStrategy[FetchStrategy[\"PPRRuntime\"] = 2] = \"PPRRuntime\";\n FetchStrategy[FetchStrategy[\"Full\"] = 3] = \"Full\";\n return FetchStrategy;\n}({});\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=types.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3NlZ21lbnQtY2FjaGUvdHlwZXMuanMiLCJtYXBwaW5ncyI6IkFBQUE7O0NBRUM7Ozs7Ozs7Ozs7OztJQStCaUJBLGFBQWE7ZUFBYkE7O0lBN0JBQyxtQkFBbUI7ZUFBbkJBOztJQVVBQyxnQkFBZ0I7ZUFBaEJBOzs7QUFWWCxJQUFXRCxzQkFBQUEsV0FBQUEsR0FBQUEsU0FBQUEsbUJBQUFBOzs7OztXQUFBQTs7QUFVWCxJQUFXQyxtQkFBQUEsV0FBQUEsR0FBQUEsU0FBQUEsZ0JBQUFBO0lBQ2hCOzs7OztHQUtDO0lBRUQ7O0dBRUM7SUFFRDs7O0dBR0M7V0FmZUE7O0FBbUJYLElBQVdGLGdCQUFBQSxXQUFBQSxHQUFBQSxTQUFBQSxhQUFBQTtJQUNoQiw2REFBNkQ7SUFDN0QsK0RBQStEO0lBQy9ELG1EQUFtRDs7Ozs7V0FIbkNBIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2NsaWVudC9jb21wb25lbnRzL3NlZ21lbnQtY2FjaGUvdHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTaGFyZWQgdHlwZXMgYW5kIGNvbnN0YW50cyBmb3IgdGhlIFNlZ21lbnQgQ2FjaGUuXG4gKi9cblxuZXhwb3J0IGNvbnN0IGVudW0gTmF2aWdhdGlvblJlc3VsdFRhZyB7XG4gIE1QQSxcbiAgU3VjY2VzcyxcbiAgTm9PcCxcbiAgQXN5bmMsXG59XG5cbi8qKlxuICogVGhlIHByaW9yaXR5IG9mIHRoZSBwcmVmZXRjaCB0YXNrLiBIaWdoZXIgbnVtYmVycyBhcmUgaGlnaGVyIHByaW9yaXR5LlxuICovXG5leHBvcnQgY29uc3QgZW51bSBQcmVmZXRjaFByaW9yaXR5IHtcbiAgLyoqXG4gICAqIEFzc2lnbmVkIHRvIHRoZSBtb3N0IHJlY2VudGx5IGhvdmVyZWQvdG91Y2hlZCBsaW5rLiBTcGVjaWFsIG5ldHdvcmtcbiAgICogYmFuZHdpZHRoIGlzIHJlc2VydmVkIGZvciB0aGlzIHRhc2sgb25seS4gVGhlcmUncyBvbmx5IGV2ZXIgb25lIEludGVudC1cbiAgICogcHJpb3JpdHkgdGFzayBhdCBhIHRpbWU7IHdoZW4gYSBuZXcgSW50ZW50IHRhc2sgaXMgc2NoZWR1bGVkLCB0aGUgcHJldmlvdXNcbiAgICogb25lIGlzIGJ1bXBlZCBkb3duIHRvIERlZmF1bHQuXG4gICAqL1xuICBJbnRlbnQgPSAyLFxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgcHJpb3JpdHkgZm9yIHByZWZldGNoIHRhc2tzLlxuICAgKi9cbiAgRGVmYXVsdCA9IDEsXG4gIC8qKlxuICAgKiBBc3NpZ25lZCB0byB0YXNrcyB3aGVuIHRoZXkgc3Bhd24gbm9uLWJsb2NraW5nIGJhY2tncm91bmQgd29yaywgbGlrZVxuICAgKiByZXZhbGlkYXRpbmcgYSBwYXJ0aWFsbHkgY2FjaGVkIGVudHJ5IHRvIHNlZSBpZiBtb3JlIGRhdGEgaXMgYXZhaWxhYmxlLlxuICAgKi9cbiAgQmFja2dyb3VuZCA9IDAsXG59XG5cbmV4cG9ydCBjb25zdCBlbnVtIEZldGNoU3RyYXRlZ3kge1xuICAvLyBEZWxpYmVyYXRlbHkgb3JkZXJlZCBzbyB3ZSBjYW4gZWFzaWx5IGNvbXBhcmUgdHdvIHNlZ21lbnRzXG4gIC8vIGFuZCBkZXRlcm1pbmUgaWYgb25lIHNlZ21lbnQgaXMgXCJtb3JlIHNwZWNpZmljXCIgdGhhbiBhbm90aGVyXG4gIC8vIChpLmUuIGlmIGl0J3MgbGlrZWx5IHRoYXQgaXQgY29udGFpbnMgbW9yZSBkYXRhKVxuICBMb2FkaW5nQm91bmRhcnkgPSAwLFxuICBQUFIgPSAxLFxuICBQUFJSdW50aW1lID0gMixcbiAgRnVsbCA9IDMsXG59XG5cbi8qKlxuICogQSBzdWJzZXQgb2YgZmV0Y2ggc3RyYXRlZ2llcyB1c2VkIGZvciBwcmVmZXRjaCB0YXNrcy5cbiAqIEEgcHJlZmV0Y2ggdGFzayBjYW4ndCBrbm93IGlmIGl0IHNob3VsZCB1c2UgYFBQUmAgb3IgYExvYWRpbmdCb3VuZGFyeWBcbiAqIHVudGlsIHdlIGNvbXBsZXRlIHRoZSBpbml0aWFsIHRyZWUgcHJlZmV0Y2ggcmVxdWVzdCwgc28gd2UgdXNlIGBQUFJgIHRvIHNpZ25hbCBib3RoIGNhc2VzXG4gKiBhbmQgYWRqdXN0IGl0IGJhc2VkIG9uIHRoZSByb3V0ZSB3aGVuIGFjdHVhbGx5IGZldGNoaW5nLlxuICogKi9cbmV4cG9ydCB0eXBlIFByZWZldGNoVGFza0ZldGNoU3RyYXRlZ3kgPVxuICB8IEZldGNoU3RyYXRlZ3kuUFBSXG4gIHwgRmV0Y2hTdHJhdGVneS5QUFJSdW50aW1lXG4gIHwgRmV0Y2hTdHJhdGVneS5GdWxsXG4iXSwibmFtZXMiOlsiRmV0Y2hTdHJhdGVneSIsIk5hdmlnYXRpb25SZXN1bHRUYWciLCJQcmVmZXRjaFByaW9yaXR5Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/segment-cache/types.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/segment-cache/vary-path.js":
|
||
/*!*****************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/segment-cache/vary-path.js ***!
|
||
\*****************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n appendLayoutVaryPath: function() {\n return appendLayoutVaryPath;\n },\n clonePageVaryPathWithNewSearchParams: function() {\n return clonePageVaryPathWithNewSearchParams;\n },\n finalizeLayoutVaryPath: function() {\n return finalizeLayoutVaryPath;\n },\n finalizeMetadataVaryPath: function() {\n return finalizeMetadataVaryPath;\n },\n finalizePageVaryPath: function() {\n return finalizePageVaryPath;\n },\n getFulfilledRouteVaryPath: function() {\n return getFulfilledRouteVaryPath;\n },\n getFulfilledSegmentVaryPath: function() {\n return getFulfilledSegmentVaryPath;\n },\n getPartialLayoutVaryPath: function() {\n return getPartialLayoutVaryPath;\n },\n getPartialPageVaryPath: function() {\n return getPartialPageVaryPath;\n },\n getRenderedSearchFromVaryPath: function() {\n return getRenderedSearchFromVaryPath;\n },\n getRouteVaryPath: function() {\n return getRouteVaryPath;\n },\n getSegmentVaryPathForRequest: function() {\n return getSegmentVaryPathForRequest;\n }\n});\nconst _types = __webpack_require__(/*! ./types */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/types.js\");\nconst _cachemap = __webpack_require__(/*! ./cache-map */ \"(ssr)/./node_modules/next/dist/client/components/segment-cache/cache-map.js\");\nconst _segmentvalueencoding = __webpack_require__(/*! ../../../shared/lib/segment-cache/segment-value-encoding */ \"(ssr)/./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js\");\nfunction getRouteVaryPath(pathname, search, nextUrl) {\n // requestKey -> searchParams -> nextUrl\n const varyPath = {\n id: null,\n value: pathname,\n parent: {\n id: '?',\n value: search,\n parent: {\n id: null,\n value: nextUrl,\n parent: null\n }\n }\n };\n return varyPath;\n}\nfunction getFulfilledRouteVaryPath(pathname, search, nextUrl, couldBeIntercepted) {\n // This is called when a route's data is fulfilled. The cache entry will be\n // re-keyed based on which inputs the response varies by.\n // requestKey -> searchParams -> nextUrl\n const varyPath = {\n id: null,\n value: pathname,\n parent: {\n id: '?',\n value: search,\n parent: {\n id: null,\n value: couldBeIntercepted ? nextUrl : _cachemap.Fallback,\n parent: null\n }\n }\n };\n return varyPath;\n}\nfunction appendLayoutVaryPath(parentPath, cacheKey, paramName) {\n const varyPathPart = {\n id: paramName,\n value: cacheKey,\n parent: parentPath\n };\n return varyPathPart;\n}\nfunction finalizeLayoutVaryPath(requestKey, varyPath) {\n const layoutVaryPath = {\n id: null,\n value: requestKey,\n parent: varyPath\n };\n return layoutVaryPath;\n}\nfunction getPartialLayoutVaryPath(finalizedVaryPath) {\n // This is the inverse of finalizeLayoutVaryPath.\n return finalizedVaryPath.parent;\n}\nfunction finalizePageVaryPath(requestKey, renderedSearch, varyPath) {\n // Unlike layouts, a page segment's vary path also includes the search string.\n // requestKey -> searchParams -> pathParams\n const pageVaryPath = {\n id: null,\n value: requestKey,\n parent: {\n id: '?',\n value: renderedSearch,\n parent: varyPath\n }\n };\n return pageVaryPath;\n}\nfunction getPartialPageVaryPath(finalizedVaryPath) {\n // This is the inverse of finalizePageVaryPath.\n return finalizedVaryPath.parent.parent;\n}\nfunction finalizeMetadataVaryPath(pageRequestKey, renderedSearch, varyPath) {\n // The metadata \"segment\" is not a real segment because it doesn't exist in\n // the normal structure of the route tree, but in terms of caching, it\n // behaves like a page segment because it varies by all the same params as\n // a page.\n //\n // To keep the protocol for querying the server simple, the request key for\n // the metadata does not include any path information. It's unnecessary from\n // the server's perspective, because unlike page segments, there's only one\n // metadata response per URL, i.e. there's no need to distinguish multiple\n // parallel pages.\n //\n // However, this means the metadata request key is insufficient for\n // caching the the metadata in the client cache, because on the client we\n // use the request key to distinguish the metadata entry from all other\n // page's metadata entries.\n //\n // So instead we create a simulated request key based on the page segment.\n // Conceptually this is equivalent to the request key the server would have\n // assigned the metadata segment if it treated it as part of the actual\n // route structure.\n // If there are multiple parallel pages, we use whichever is the first one.\n // This is fine because the only difference between request keys for\n // different parallel pages are things like route groups and parallel\n // route slots. As long as it's always the same one, it doesn't matter.\n const pageVaryPath = {\n id: null,\n // Append the actual metadata request key to the page request key. Note\n // that we're not using a separate vary path part; it's unnecessary because\n // these are not conceptually separate inputs.\n value: pageRequestKey + _segmentvalueencoding.HEAD_REQUEST_KEY,\n parent: {\n id: '?',\n value: renderedSearch,\n parent: varyPath\n }\n };\n return pageVaryPath;\n}\nfunction getSegmentVaryPathForRequest(fetchStrategy, tree) {\n // This is used for storing pending requests in the cache. We want to choose\n // the most generic vary path based on the strategy used to fetch it, i.e.\n // static/PPR versus runtime prefetching, so that it can be reused as much\n // as possible.\n //\n // We may be able to re-key the response to something even more generic once\n // we receive it — for example, if the server tells us that the response\n // doesn't vary on a particular param — but even before we send the request,\n // we know some params are reusable based on the fetch strategy alone. For\n // example, a static prefetch will never vary on search params.\n //\n // The original vary path with all the params filled in is stored on the\n // route tree object. We will clone this one to create a new vary path\n // where certain params are replaced with Fallback.\n //\n // This result of this function is not stored anywhere. It's only used to\n // access the cache a single time.\n //\n // TODO: Rather than create a new list object just to access the cache, the\n // plan is to add the concept of a \"vary mask\". This will represent all the\n // params that can be treated as Fallback. (Or perhaps the inverse.)\n const originalVaryPath = tree.varyPath;\n // Only page segments (and the special \"metadata\" segment, which is treated\n // like a page segment for the purposes of caching) may contain search\n // params. There's no reason to include them in the vary path otherwise.\n if (tree.isPage) {\n // Only a runtime prefetch will include search params in the vary path.\n // Static prefetches never include search params, so they can be reused\n // across all possible search param values.\n const doesVaryOnSearchParams = fetchStrategy === _types.FetchStrategy.Full || fetchStrategy === _types.FetchStrategy.PPRRuntime;\n if (!doesVaryOnSearchParams) {\n // The response from the the server will not vary on search params. Clone\n // the end of the original vary path to replace the search params\n // with Fallback.\n //\n // requestKey -> searchParams -> pathParams\n // ^ This part gets replaced with Fallback\n const searchParamsVaryPath = originalVaryPath.parent;\n const pathParamsVaryPath = searchParamsVaryPath.parent;\n const patchedVaryPath = {\n id: null,\n value: originalVaryPath.value,\n parent: {\n id: '?',\n value: _cachemap.Fallback,\n parent: pathParamsVaryPath\n }\n };\n return patchedVaryPath;\n }\n }\n // The request does vary on search params. We don't need to modify anything.\n return originalVaryPath;\n}\nfunction clonePageVaryPathWithNewSearchParams(originalVaryPath, newSearch) {\n // requestKey -> searchParams -> pathParams\n // ^ This part gets replaced with newSearch\n const searchParamsVaryPath = originalVaryPath.parent;\n const clonedVaryPath = {\n id: null,\n value: originalVaryPath.value,\n parent: {\n id: '?',\n value: newSearch,\n parent: searchParamsVaryPath.parent\n }\n };\n return clonedVaryPath;\n}\nfunction getRenderedSearchFromVaryPath(varyPath) {\n const searchParams = varyPath.parent.value;\n return typeof searchParams === 'string' ? searchParams : null;\n}\nfunction getFulfilledSegmentVaryPath(original, varyParams) {\n // Re-keys a segment's vary path based on which params the segment actually\n // depends on. Params that are NOT in the varyParams set are replaced with\n // Fallback, allowing the cache entry to be reused across different values of\n // those params.\n // This is called when a segment is fulfilled with data from the server. The\n // varyParams set comes from the server and indicates which params were\n // accessed during rendering.\n const clone = {\n id: original.id,\n // If the id is null, this node is not a param (e.g., it's a request key).\n // If the id is in the varyParams set, keep the original value.\n // Otherwise, replace with Fallback to make it reusable.\n value: original.id === null || varyParams.has(original.id) ? original.value : _cachemap.Fallback,\n parent: original.parent === null ? null : getFulfilledSegmentVaryPath(original.parent, varyParams)\n };\n return clone;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=vary-path.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3NlZ21lbnQtY2FjaGUvdmFyeS1wYXRoLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQTZJZ0JBLG9CQUFvQjtlQUFwQkE7O0lBdUtBQyxvQ0FBb0M7ZUFBcENBOztJQTFKQUMsc0JBQXNCO2VBQXRCQTs7SUE2Q0FDLHdCQUF3QjtlQUF4QkE7O0lBMUJBQyxvQkFBb0I7ZUFBcEJBOztJQXpEQUMseUJBQXlCO2VBQXpCQTs7SUE0TkFDLDJCQUEyQjtlQUEzQkE7O0lBMUtBQyx3QkFBd0I7ZUFBeEJBOztJQTBCQUMsc0JBQXNCO2VBQXRCQTs7SUF1SUFDLDZCQUE2QjtlQUE3QkE7O0lBek9BQyxnQkFBZ0I7ZUFBaEJBOztJQXNKQUMsNEJBQTRCO2VBQTVCQTs7O21DQXBQYztzQ0FPYztrREFDWDtBQXNGMUIsU0FBU0QsaUJBQ2RFLFFBQTRCLEVBQzVCQyxNQUF3QixFQUN4QkMsT0FBaUM7SUFFakMsd0NBQXdDO0lBQ3hDLE1BQU1DLFdBQXFCO1FBQ3pCQyxJQUFJO1FBQ0pDLE9BQU9MO1FBQ1BNLFFBQVE7WUFDTkYsSUFBSTtZQUNKQyxPQUFPSjtZQUNQSyxRQUFRO2dCQUNORixJQUFJO2dCQUNKQyxPQUFPSDtnQkFDUEksUUFBUTtZQUNWO1FBQ0Y7SUFDRjtJQUNBLE9BQU9IO0FBQ1Q7QUFFTyxTQUFTViwwQkFDZE8sUUFBNEIsRUFDNUJDLE1BQXdCLEVBQ3hCQyxPQUFpQyxFQUNqQ0ssa0JBQTJCO0lBRTNCLDJFQUEyRTtJQUMzRSx5REFBeUQ7SUFDekQsd0NBQXdDO0lBQ3hDLE1BQU1KLFdBQXFCO1FBQ3pCQyxJQUFJO1FBQ0pDLE9BQU9MO1FBQ1BNLFFBQVE7WUFDTkYsSUFBSTtZQUNKQyxPQUFPSjtZQUNQSyxRQUFRO2dCQUNORixJQUFJO2dCQUNKQyxPQUFPRSxxQkFBcUJMLFVBQVVNLFVBQUFBLFFBQVE7Z0JBQzlDRixRQUFRO1lBQ1Y7UUFDRjtJQUNGO0lBQ0EsT0FBT0g7QUFDVDtBQUVPLFNBQVNmLHFCQUNkcUIsVUFBeUMsRUFDekNDLFFBQWdCLEVBQ2hCQyxTQUFpQjtJQUVqQixNQUFNQyxlQUF5QjtRQUM3QlIsSUFBSU87UUFDSk4sT0FBT0s7UUFDUEosUUFBUUc7SUFDVjtJQUNBLE9BQU9HO0FBQ1Q7QUFFTyxTQUFTdEIsdUJBQ2R1QixVQUFrQixFQUNsQlYsUUFBdUM7SUFFdkMsTUFBTVcsaUJBQTJCO1FBQy9CVixJQUFJO1FBQ0pDLE9BQU9RO1FBQ1BQLFFBQVFIO0lBQ1Y7SUFDQSxPQUFPVztBQUNUO0FBRU8sU0FBU25CLHlCQUNkb0IsaUJBQWlDO0lBRWpDLGlEQUFpRDtJQUNqRCxPQUFPQSxrQkFBa0JULE1BQU07QUFDakM7QUFFTyxTQUFTZCxxQkFDZHFCLFVBQWtCLEVBQ2xCRyxjQUFnQyxFQUNoQ2IsUUFBdUM7SUFFdkMsOEVBQThFO0lBQzlFLDJDQUEyQztJQUMzQyxNQUFNYyxlQUF5QjtRQUM3QmIsSUFBSTtRQUNKQyxPQUFPUTtRQUNQUCxRQUFRO1lBQ05GLElBQUk7WUFDSkMsT0FBT1c7WUFDUFYsUUFBUUg7UUFDVjtJQUNGO0lBQ0EsT0FBT2M7QUFDVDtBQUVPLFNBQVNyQix1QkFDZG1CLGlCQUErQjtJQUUvQiwrQ0FBK0M7SUFDL0MsT0FBT0Esa0JBQWtCVCxNQUFNLENBQUNBLE1BQU07QUFDeEM7QUFFTyxTQUFTZix5QkFDZDJCLGNBQXNCLEVBQ3RCRixjQUFnQyxFQUNoQ2IsUUFBdUM7SUFFdkMsMkVBQTJFO0lBQzNFLHNFQUFzRTtJQUN0RSwwRUFBMEU7SUFDMUUsVUFBVTtJQUNWLEVBQUU7SUFDRiwyRUFBMkU7SUFDM0UsNEVBQTRFO0lBQzVFLDJFQUEyRTtJQUMzRSwwRUFBMEU7SUFDMUUsa0JBQWtCO0lBQ2xCLEVBQUU7SUFDRixtRUFBbUU7SUFDbkUseUVBQXlFO0lBQ3pFLHVFQUF1RTtJQUN2RSwyQkFBMkI7SUFDM0IsRUFBRTtJQUNGLDBFQUEwRTtJQUMxRSwyRUFBMkU7SUFDM0UsdUVBQXVFO0lBQ3ZFLG1CQUFtQjtJQUVuQiwyRUFBMkU7SUFDM0Usb0VBQW9FO0lBQ3BFLHFFQUFxRTtJQUNyRSx1RUFBdUU7SUFDdkUsTUFBTWMsZUFBeUI7UUFDN0JiLElBQUk7UUFDSix1RUFBdUU7UUFDdkUsMkVBQTJFO1FBQzNFLDhDQUE4QztRQUM5Q0MsT0FBT2EsaUJBQWlCQyxzQkFBQUEsZ0JBQWdCO1FBQ3hDYixRQUFRO1lBQ05GLElBQUk7WUFDSkMsT0FBT1c7WUFDUFYsUUFBUUg7UUFDVjtJQUNGO0lBQ0EsT0FBT2M7QUFDVDtBQUVPLFNBQVNsQiw2QkFDZHFCLGFBQTRCLEVBQzVCQyxJQUFlO0lBRWYsNEVBQTRFO0lBQzVFLDBFQUEwRTtJQUMxRSwwRUFBMEU7SUFDMUUsZUFBZTtJQUNmLEVBQUU7SUFDRiw0RUFBNEU7SUFDNUUsd0VBQXdFO0lBQ3hFLDRFQUE0RTtJQUM1RSwwRUFBMEU7SUFDMUUsK0RBQStEO0lBQy9ELEVBQUU7SUFDRix3RUFBd0U7SUFDeEUsc0VBQXNFO0lBQ3RFLG1EQUFtRDtJQUNuRCxFQUFFO0lBQ0YseUVBQXlFO0lBQ3pFLGtDQUFrQztJQUNsQyxFQUFFO0lBQ0YsMkVBQTJFO0lBQzNFLDJFQUEyRTtJQUMzRSxvRUFBb0U7SUFDcEUsTUFBTUMsbUJBQW1CRCxLQUFLbEIsUUFBUTtJQUV0QywyRUFBMkU7SUFDM0Usc0VBQXNFO0lBQ3RFLHdFQUF3RTtJQUN4RSxJQUFJa0IsS0FBS0UsTUFBTSxFQUFFO1FBQ2YsdUVBQXVFO1FBQ3ZFLHVFQUF1RTtRQUN2RSwyQ0FBMkM7UUFDM0MsTUFBTUMseUJBQ0pKLGtCQUFrQkssT0FBQUEsYUFBYSxDQUFDQyxJQUFJLElBQ3BDTixrQkFBa0JLLE9BQUFBLGFBQWEsQ0FBQ0UsVUFBVTtRQUU1QyxJQUFJLENBQUNILHdCQUF3QjtZQUMzQix5RUFBeUU7WUFDekUsaUVBQWlFO1lBQ2pFLGlCQUFpQjtZQUNqQixFQUFFO1lBQ0YsMkNBQTJDO1lBQzNDLHdEQUF3RDtZQUN4RCxNQUFNSSx1QkFBd0JOLGlCQUFrQ2hCLE1BQU07WUFDdEUsTUFBTXVCLHFCQUFxQkQscUJBQXFCdEIsTUFBTTtZQUN0RCxNQUFNd0Isa0JBQTRCO2dCQUNoQzFCLElBQUk7Z0JBQ0pDLE9BQU9pQixpQkFBaUJqQixLQUFLO2dCQUM3QkMsUUFBUTtvQkFDTkYsSUFBSTtvQkFDSkMsT0FBT0csVUFBQUEsUUFBUTtvQkFDZkYsUUFBUXVCO2dCQUNWO1lBQ0Y7WUFDQSxPQUFPQztRQUNUO0lBQ0Y7SUFFQSw0RUFBNEU7SUFDNUUsT0FBT1I7QUFDVDtBQUVPLFNBQVNqQyxxQ0FDZGlDLGdCQUE4QixFQUM5QlMsU0FBMkI7SUFFM0IsMkNBQTJDO0lBQzNDLHlEQUF5RDtJQUN6RCxNQUFNSCx1QkFBdUJOLGlCQUFpQmhCLE1BQU07SUFDcEQsTUFBTTBCLGlCQUEyQjtRQUMvQjVCLElBQUk7UUFDSkMsT0FBT2lCLGlCQUFpQmpCLEtBQUs7UUFDN0JDLFFBQVE7WUFDTkYsSUFBSTtZQUNKQyxPQUFPMEI7WUFDUHpCLFFBQVFzQixxQkFBcUJ0QixNQUFNO1FBQ3JDO0lBQ0Y7SUFDQSxPQUFPMEI7QUFDVDtBQUVPLFNBQVNuQyw4QkFDZE0sUUFBc0I7SUFFdEIsTUFBTThCLGVBQWU5QixTQUFTRyxNQUFNLENBQUNELEtBQUs7SUFDMUMsT0FBTyxPQUFPNEIsaUJBQWlCLFdBQzFCQSxlQUNEO0FBQ047QUFFTyxTQUFTdkMsNEJBQ2R3QyxRQUFrQixFQUNsQkMsVUFBdUI7SUFFdkIsMkVBQTJFO0lBQzNFLDBFQUEwRTtJQUMxRSw2RUFBNkU7SUFDN0UsZ0JBQWdCO0lBRWhCLDRFQUE0RTtJQUM1RSx1RUFBdUU7SUFDdkUsNkJBQTZCO0lBQzdCLE1BQU1DLFFBQWtCO1FBQ3RCaEMsSUFBSThCLFNBQVM5QixFQUFFO1FBQ2YsMEVBQTBFO1FBQzFFLCtEQUErRDtRQUMvRCx3REFBd0Q7UUFDeERDLE9BQ0U2QixTQUFTOUIsRUFBRSxLQUFLLFFBQVErQixXQUFXRSxHQUFHLENBQUNILFNBQVM5QixFQUFFLElBQzlDOEIsU0FBUzdCLEtBQUssR0FDZEcsVUFBQUEsUUFBUTtRQUNkRixRQUNFNEIsU0FBUzVCLE1BQU0sS0FBSyxPQUNoQixPQUNBWiw0QkFBNEJ3QyxTQUFTNUIsTUFBTSxFQUFFNkI7SUFDckQ7SUFDQSxPQUFPQztBQUNUIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2NsaWVudC9jb21wb25lbnRzL3NlZ21lbnQtY2FjaGUvdmFyeS1wYXRoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZldGNoU3RyYXRlZ3kgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBOb3JtYWxpemVkUGF0aG5hbWUsXG4gIE5vcm1hbGl6ZWRTZWFyY2gsXG4gIE5vcm1hbGl6ZWROZXh0VXJsLFxufSBmcm9tICcuL2NhY2hlLWtleSdcbmltcG9ydCB0eXBlIHsgUm91dGVUcmVlIH0gZnJvbSAnLi9jYWNoZSdcbmltcG9ydCB7IEZhbGxiYWNrLCB0eXBlIEZhbGxiYWNrVHlwZSB9IGZyb20gJy4vY2FjaGUtbWFwJ1xuaW1wb3J0IHsgSEVBRF9SRVFVRVNUX0tFWSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvc2VnbWVudC1jYWNoZS9zZWdtZW50LXZhbHVlLWVuY29kaW5nJ1xuXG50eXBlIE9wYXF1ZTxULCBLPiA9IFQgJiB7IF9fYnJhbmQ6IEsgfVxuXG4vKipcbiAqIEEgbGlua2VkLWxpc3Qgb2YgYWxsIHRoZSBwYXJhbXMgKG9yIG90aGVyIHBhcmFtLWxpa2UpIGlucHV0cyB0aGF0IGEgY2FjaGVcbiAqIGVudHJ5IG1heSB2YXJ5IGJ5LiBUaGlzIGlzIHVzZWQgYnkgdGhlIENhY2hlTWFwIG1vZHVsZSB0byByZXVzZSBjYWNoZSBlbnRyaWVzXG4gKiBhY3Jvc3MgZGlmZmVyZW50IHBhcmFtIHZhbHVlcy4gSWYgYSBwYXJhbSBoYXMgYSB2YWx1ZSBvZiBGYWxsYmFjaywgaXQgbWVhbnNcbiAqIHRoZSBjYWNoZSBlbnRyeSBpcyByZXVzYWJsZSBmb3IgYWxsIHBvc3NpYmxlIHZhbHVlcyBvZiB0aGF0IHBhcmFtLiBTZWVcbiAqIGNhY2hlLW1hcC50cyBmb3IgZGV0YWlscy5cbiAqXG4gKiBBIHNlZ21lbnQncyB2YXJ5IHBhdGggaXMgYSBwdXJlIGZ1bmN0aW9uIG9mIGEgc2VnbWVudCdzIHBvc2l0aW9uIGluIGFcbiAqIHBhcnRpY3VsYXIgcm91dGUgdHJlZSBhbmQgdGhlIChwb3N0LXJld3JpdGUpIFVSTCB0aGF0IGlzIGJlaW5nIHF1ZXJpZWQuIE1vcmVcbiAqIGNvbmNyZXRlbHksIHN1Y2Nlc3NpdmUgcXVlcmllcyBvZiB0aGUgY2FjaGUgZm9yIHRoZSBzYW1lIHNlZ21lbnQgYWx3YXlzIHVzZVxuICogdGhlIHNhbWUgdmFyeSBwYXRoLlxuICpcbiAqIEEgcm91dGUncyB2YXJ5IHBhdGggaXMgc2ltcGxlcjogaXQncyBjb21wcmlzZWQgb2YgdGhlIHBhdGhuYW1lLCBzZWFyY2hcbiAqIHN0cmluZywgYW5kIE5leHQtVVJMIGhlYWRlci5cbiAqL1xuZXhwb3J0IHR5cGUgVmFyeVBhdGggPSB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVzIHdoaWNoIHBhcmFtIHRoaXMgdmFyeSBwYXRoIG5vZGUgY29ycmVzcG9uZHMgdG8uIFVzZWQgYnlcbiAgICogZ2V0RnVsZmlsbGVkU2VnbWVudFZhcnlQYXRoIHRvIGRldGVybWluZSB3aGljaCBwYXJhbXMgdG8gcmVwbGFjZSB3aXRoXG4gICAqIEZhbGxiYWNrIGJhc2VkIG9uIHRoZSB2YXJ5UGFyYW1zIHNldCBmcm9tIHRoZSBzZXJ2ZXIuXG4gICAqXG4gICAqIC0gRm9yIHBhdGggcGFyYW1zOiB0aGUgcGFyYW0gbmFtZSAoZS5nLiwgJ3NsdWcnKVxuICAgKiAtIEZvciBzZWFyY2ggcGFyYW1zOiAnPydcbiAgICogLSBGb3Igbm9uLXBhcmFtIG5vZGVzIChyZXF1ZXN0IGtleXMsIGV0Yy4pOiBudWxsXG4gICAqL1xuICBpZDogc3RyaW5nIHwgbnVsbFxuICB2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IEZhbGxiYWNrVHlwZVxuICBwYXJlbnQ6IFZhcnlQYXRoIHwgbnVsbFxufVxuXG4vLyBCZWNhdXNlIGl0J3Mgc28gaW1wb3J0YW50IGZvciB2YXJ5IHBhdGhzIHRvIGxpbmUgdXAgYWNyb3NzIGNhY2hlIGFjY2Vzc2VzLFxuLy8gd2UgdXNlIG9wYXF1ZSB0eXBlIGFsaWFzZXMgdG8gZW5zdXJlIHRoZXNlIGFyZSBvbmx5IGNyZWF0ZWQgd2l0aGluXG4vLyB0aGlzIG1vZHVsZS5cblxuLy8gcmVxdWVzdEtleSAtPiBzZWFyY2hQYXJhbXMgLT4gbmV4dFVybFxuZXhwb3J0IHR5cGUgUm91dGVWYXJ5UGF0aCA9IE9wYXF1ZTxcbiAge1xuICAgIGlkOiBudWxsXG4gICAgdmFsdWU6IE5vcm1hbGl6ZWRQYXRobmFtZVxuICAgIHBhcmVudDoge1xuICAgICAgaWQ6ICc/J1xuICAgICAgdmFsdWU6IE5vcm1hbGl6ZWRTZWFyY2hcbiAgICAgIHBhcmVudDoge1xuICAgICAgICBpZDogbnVsbFxuICAgICAgICB2YWx1ZTogTm9ybWFsaXplZE5leHRVcmwgfCBudWxsIHwgRmFsbGJhY2tUeXBlXG4gICAgICAgIHBhcmVudDogbnVsbFxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgJ1JvdXRlVmFyeVBhdGgnXG4+XG5cbi8vIHJlcXVlc3RLZXkgLT4gcGF0aFBhcmFtc1xuZXhwb3J0IHR5cGUgTGF5b3V0VmFyeVBhdGggPSBPcGFxdWU8XG4gIHtcbiAgICBpZDogbnVsbFxuICAgIHZhbHVlOiBzdHJpbmdcbiAgICBwYXJlbnQ6IFBhcnRpYWxTZWdtZW50VmFyeVBhdGggfCBudWxsXG4gIH0sXG4gICdMYXlvdXRWYXJ5UGF0aCdcbj5cblxuLy8gcmVxdWVzdEtleSAtPiBzZWFyY2hQYXJhbXMgLT4gcGF0aFBhcmFtc1xuZXhwb3J0IHR5cGUgUGFnZVZhcnlQYXRoID0gT3BhcXVlPFxuICB7XG4gICAgaWQ6IG51bGxcbiAgICB2YWx1ZTogc3RyaW5nXG4gICAgcGFyZW50OiB7XG4gICAgICBpZDogJz8nXG4gICAgICB2YWx1ZTogTm9ybWFsaXplZFNlYXJjaCB8IEZhbGxiYWNrVHlwZVxuICAgICAgcGFyZW50OiBQYXJ0aWFsU2VnbWVudFZhcnlQYXRoIHwgbnVsbFxuICAgIH1cbiAgfSxcbiAgJ1BhZ2VWYXJ5UGF0aCdcbj5cblxuZXhwb3J0IHR5cGUgU2VnbWVudFZhcnlQYXRoID0gTGF5b3V0VmFyeVBhdGggfCBQYWdlVmFyeVBhdGhcblxuLy8gSW50ZXJtZWRpYXRlIHR5cGUgdXNlZCB3aGVuIGJ1aWxkaW5nIGEgdmFyeSBwYXRoIGR1cmluZyBhIHJlY3Vyc2l2ZSB0cmF2ZXJzYWxcbi8vIG9mIHRoZSByb3V0ZSB0cmVlLlxuZXhwb3J0IHR5cGUgUGFydGlhbFNlZ21lbnRWYXJ5UGF0aCA9IE9wYXF1ZTxWYXJ5UGF0aCwgJ1BhcnRpYWxTZWdtZW50VmFyeVBhdGgnPlxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um91dGVWYXJ5UGF0aChcbiAgcGF0aG5hbWU6IE5vcm1hbGl6ZWRQYXRobmFtZSxcbiAgc2VhcmNoOiBOb3JtYWxpemVkU2VhcmNoLFxuICBuZXh0VXJsOiBOb3JtYWxpemVkTmV4dFVybCB8IG51bGxcbik6IFJvdXRlVmFyeVBhdGgge1xuICAvLyByZXF1ZXN0S2V5IC0+IHNlYXJjaFBhcmFtcyAtPiBuZXh0VXJsXG4gIGNvbnN0IHZhcnlQYXRoOiBWYXJ5UGF0aCA9IHtcbiAgICBpZDogbnVsbCxcbiAgICB2YWx1ZTogcGF0aG5hbWUsXG4gICAgcGFyZW50OiB7XG4gICAgICBpZDogJz8nLFxuICAgICAgdmFsdWU6IHNlYXJjaCxcbiAgICAgIHBhcmVudDoge1xuICAgICAgICBpZDogbnVsbCxcbiAgICAgICAgdmFsdWU6IG5leHRVcmwsXG4gICAgICAgIHBhcmVudDogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgfVxuICByZXR1cm4gdmFyeVBhdGggYXMgUm91dGVWYXJ5UGF0aFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RnVsZmlsbGVkUm91dGVWYXJ5UGF0aChcbiAgcGF0aG5hbWU6IE5vcm1hbGl6ZWRQYXRobmFtZSxcbiAgc2VhcmNoOiBOb3JtYWxpemVkU2VhcmNoLFxuICBuZXh0VXJsOiBOb3JtYWxpemVkTmV4dFVybCB8IG51bGwsXG4gIGNvdWxkQmVJbnRlcmNlcHRlZDogYm9vbGVhblxuKTogUm91dGVWYXJ5UGF0aCB7XG4gIC8vIFRoaXMgaXMgY2FsbGVkIHdoZW4gYSByb3V0ZSdzIGRhdGEgaXMgZnVsZmlsbGVkLiBUaGUgY2FjaGUgZW50cnkgd2lsbCBiZVxuICAvLyByZS1rZXllZCBiYXNlZCBvbiB3aGljaCBpbnB1dHMgdGhlIHJlc3BvbnNlIHZhcmllcyBieS5cbiAgLy8gcmVxdWVzdEtleSAtPiBzZWFyY2hQYXJhbXMgLT4gbmV4dFVybFxuICBjb25zdCB2YXJ5UGF0aDogVmFyeVBhdGggPSB7XG4gICAgaWQ6IG51bGwsXG4gICAgdmFsdWU6IHBhdGhuYW1lLFxuICAgIHBhcmVudDoge1xuICAgICAgaWQ6ICc/JyxcbiAgICAgIHZhbHVlOiBzZWFyY2gsXG4gICAgICBwYXJlbnQ6IHtcbiAgICAgICAgaWQ6IG51bGwsXG4gICAgICAgIHZhbHVlOiBjb3VsZEJlSW50ZXJjZXB0ZWQgPyBuZXh0VXJsIDogRmFsbGJhY2ssXG4gICAgICAgIHBhcmVudDogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgfVxuICByZXR1cm4gdmFyeVBhdGggYXMgUm91dGVWYXJ5UGF0aFxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kTGF5b3V0VmFyeVBhdGgoXG4gIHBhcmVudFBhdGg6IFBhcnRpYWxTZWdtZW50VmFyeVBhdGggfCBudWxsLFxuICBjYWNoZUtleTogc3RyaW5nLFxuICBwYXJhbU5hbWU6IHN0cmluZ1xuKTogUGFydGlhbFNlZ21lbnRWYXJ5UGF0aCB7XG4gIGNvbnN0IHZhcnlQYXRoUGFydDogVmFyeVBhdGggPSB7XG4gICAgaWQ6IHBhcmFtTmFtZSxcbiAgICB2YWx1ZTogY2FjaGVLZXksXG4gICAgcGFyZW50OiBwYXJlbnRQYXRoLFxuICB9XG4gIHJldHVybiB2YXJ5UGF0aFBhcnQgYXMgUGFydGlhbFNlZ21lbnRWYXJ5UGF0aFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluYWxpemVMYXlvdXRWYXJ5UGF0aChcbiAgcmVxdWVzdEtleTogc3RyaW5nLFxuICB2YXJ5UGF0aDogUGFydGlhbFNlZ21lbnRWYXJ5UGF0aCB8IG51bGxcbik6IExheW91dFZhcnlQYXRoIHtcbiAgY29uc3QgbGF5b3V0VmFyeVBhdGg6IFZhcnlQYXRoID0ge1xuICAgIGlkOiBudWxsLFxuICAgIHZhbHVlOiByZXF1ZXN0S2V5LFxuICAgIHBhcmVudDogdmFyeVBhdGgsXG4gIH1cbiAgcmV0dXJuIGxheW91dFZhcnlQYXRoIGFzIExheW91dFZhcnlQYXRoXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJ0aWFsTGF5b3V0VmFyeVBhdGgoXG4gIGZpbmFsaXplZFZhcnlQYXRoOiBMYXlvdXRWYXJ5UGF0aFxuKTogUGFydGlhbFNlZ21lbnRWYXJ5UGF0aCB8IG51bGwge1xuICAvLyBUaGlzIGlzIHRoZSBpbnZlcnNlIG9mIGZpbmFsaXplTGF5b3V0VmFyeVBhdGguXG4gIHJldHVybiBmaW5hbGl6ZWRWYXJ5UGF0aC5wYXJlbnRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmFsaXplUGFnZVZhcnlQYXRoKFxuICByZXF1ZXN0S2V5OiBzdHJpbmcsXG4gIHJlbmRlcmVkU2VhcmNoOiBOb3JtYWxpemVkU2VhcmNoLFxuICB2YXJ5UGF0aDogUGFydGlhbFNlZ21lbnRWYXJ5UGF0aCB8IG51bGxcbik6IFBhZ2VWYXJ5UGF0aCB7XG4gIC8vIFVubGlrZSBsYXlvdXRzLCBhIHBhZ2Ugc2VnbWVudCdzIHZhcnkgcGF0aCBhbHNvIGluY2x1ZGVzIHRoZSBzZWFyY2ggc3RyaW5nLlxuICAvLyByZXF1ZXN0S2V5IC0+IHNlYXJjaFBhcmFtcyAtPiBwYXRoUGFyYW1zXG4gIGNvbnN0IHBhZ2VWYXJ5UGF0aDogVmFyeVBhdGggPSB7XG4gICAgaWQ6IG51bGwsXG4gICAgdmFsdWU6IHJlcXVlc3RLZXksXG4gICAgcGFyZW50OiB7XG4gICAgICBpZDogJz8nLFxuICAgICAgdmFsdWU6IHJlbmRlcmVkU2VhcmNoLFxuICAgICAgcGFyZW50OiB2YXJ5UGF0aCxcbiAgICB9LFxuICB9XG4gIHJldHVybiBwYWdlVmFyeVBhdGggYXMgUGFnZVZhcnlQYXRoXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJ0aWFsUGFnZVZhcnlQYXRoKFxuICBmaW5hbGl6ZWRWYXJ5UGF0aDogUGFnZVZhcnlQYXRoXG4pOiBQYXJ0aWFsU2VnbWVudFZhcnlQYXRoIHwgbnVsbCB7XG4gIC8vIFRoaXMgaXMgdGhlIGludmVyc2Ugb2YgZmluYWxpemVQYWdlVmFyeVBhdGguXG4gIHJldHVybiBmaW5hbGl6ZWRWYXJ5UGF0aC5wYXJlbnQucGFyZW50XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5hbGl6ZU1ldGFkYXRhVmFyeVBhdGgoXG4gIHBhZ2VSZXF1ZXN0S2V5OiBzdHJpbmcsXG4gIHJlbmRlcmVkU2VhcmNoOiBOb3JtYWxpemVkU2VhcmNoLFxuICB2YXJ5UGF0aDogUGFydGlhbFNlZ21lbnRWYXJ5UGF0aCB8IG51bGxcbik6IFBhZ2VWYXJ5UGF0aCB7XG4gIC8vIFRoZSBtZXRhZGF0YSBcInNlZ21lbnRcIiBpcyBub3QgYSByZWFsIHNlZ21lbnQgYmVjYXVzZSBpdCBkb2Vzbid0IGV4aXN0IGluXG4gIC8vIHRoZSBub3JtYWwgc3RydWN0dXJlIG9mIHRoZSByb3V0ZSB0cmVlLCBidXQgaW4gdGVybXMgb2YgY2FjaGluZywgaXRcbiAgLy8gYmVoYXZlcyBsaWtlIGEgcGFnZSBzZWdtZW50IGJlY2F1c2UgaXQgdmFyaWVzIGJ5IGFsbCB0aGUgc2FtZSBwYXJhbXMgYXNcbiAgLy8gYSBwYWdlLlxuICAvL1xuICAvLyBUbyBrZWVwIHRoZSBwcm90b2NvbCBmb3IgcXVlcnlpbmcgdGhlIHNlcnZlciBzaW1wbGUsIHRoZSByZXF1ZXN0IGtleSBmb3JcbiAgLy8gdGhlIG1ldGFkYXRhIGRvZXMgbm90IGluY2x1ZGUgYW55IHBhdGggaW5mb3JtYXRpb24uIEl0J3MgdW5uZWNlc3NhcnkgZnJvbVxuICAvLyB0aGUgc2VydmVyJ3MgcGVyc3BlY3RpdmUsIGJlY2F1c2UgdW5saWtlIHBhZ2Ugc2VnbWVudHMsIHRoZXJlJ3Mgb25seSBvbmVcbiAgLy8gbWV0YWRhdGEgcmVzcG9uc2UgcGVyIFVSTCwgaS5lLiB0aGVyZSdzIG5vIG5lZWQgdG8gZGlzdGluZ3Vpc2ggbXVsdGlwbGVcbiAgLy8gcGFyYWxsZWwgcGFnZXMuXG4gIC8vXG4gIC8vIEhvd2V2ZXIsIHRoaXMgbWVhbnMgdGhlIG1ldGFkYXRhIHJlcXVlc3Qga2V5IGlzIGluc3VmZmljaWVudCBmb3JcbiAgLy8gY2FjaGluZyB0aGUgdGhlIG1ldGFkYXRhIGluIHRoZSBjbGllbnQgY2FjaGUsIGJlY2F1c2Ugb24gdGhlIGNsaWVudCB3ZVxuICAvLyB1c2UgdGhlIHJlcXVlc3Qga2V5IHRvIGRpc3Rpbmd1aXNoIHRoZSBtZXRhZGF0YSBlbnRyeSBmcm9tIGFsbCBvdGhlclxuICAvLyBwYWdlJ3MgbWV0YWRhdGEgZW50cmllcy5cbiAgLy9cbiAgLy8gU28gaW5zdGVhZCB3ZSBjcmVhdGUgYSBzaW11bGF0ZWQgcmVxdWVzdCBrZXkgYmFzZWQgb24gdGhlIHBhZ2Ugc2VnbWVudC5cbiAgLy8gQ29uY2VwdHVhbGx5IHRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUgcmVxdWVzdCBrZXkgdGhlIHNlcnZlciB3b3VsZCBoYXZlXG4gIC8vIGFzc2lnbmVkIHRoZSBtZXRhZGF0YSBzZWdtZW50IGlmIGl0IHRyZWF0ZWQgaXQgYXMgcGFydCBvZiB0aGUgYWN0dWFsXG4gIC8vIHJvdXRlIHN0cnVjdHVyZS5cblxuICAvLyBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgcGFyYWxsZWwgcGFnZXMsIHdlIHVzZSB3aGljaGV2ZXIgaXMgdGhlIGZpcnN0IG9uZS5cbiAgLy8gVGhpcyBpcyBmaW5lIGJlY2F1c2UgdGhlIG9ubHkgZGlmZmVyZW5jZSBiZXR3ZWVuIHJlcXVlc3Qga2V5cyBmb3JcbiAgLy8gZGlmZmVyZW50IHBhcmFsbGVsIHBhZ2VzIGFyZSB0aGluZ3MgbGlrZSByb3V0ZSBncm91cHMgYW5kIHBhcmFsbGVsXG4gIC8vIHJvdXRlIHNsb3RzLiBBcyBsb25nIGFzIGl0J3MgYWx3YXlzIHRoZSBzYW1lIG9uZSwgaXQgZG9lc24ndCBtYXR0ZXIuXG4gIGNvbnN0IHBhZ2VWYXJ5UGF0aDogVmFyeVBhdGggPSB7XG4gICAgaWQ6IG51bGwsXG4gICAgLy8gQXBwZW5kIHRoZSBhY3R1YWwgbWV0YWRhdGEgcmVxdWVzdCBrZXkgdG8gdGhlIHBhZ2UgcmVxdWVzdCBrZXkuIE5vdGVcbiAgICAvLyB0aGF0IHdlJ3JlIG5vdCB1c2luZyBhIHNlcGFyYXRlIHZhcnkgcGF0aCBwYXJ0OyBpdCdzIHVubmVjZXNzYXJ5IGJlY2F1c2VcbiAgICAvLyB0aGVzZSBhcmUgbm90IGNvbmNlcHR1YWxseSBzZXBhcmF0ZSBpbnB1dHMuXG4gICAgdmFsdWU6IHBhZ2VSZXF1ZXN0S2V5ICsgSEVBRF9SRVFVRVNUX0tFWSxcbiAgICBwYXJlbnQ6IHtcbiAgICAgIGlkOiAnPycsXG4gICAgICB2YWx1ZTogcmVuZGVyZWRTZWFyY2gsXG4gICAgICBwYXJlbnQ6IHZhcnlQYXRoLFxuICAgIH0sXG4gIH1cbiAgcmV0dXJuIHBhZ2VWYXJ5UGF0aCBhcyBQYWdlVmFyeVBhdGhcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlZ21lbnRWYXJ5UGF0aEZvclJlcXVlc3QoXG4gIGZldGNoU3RyYXRlZ3k6IEZldGNoU3RyYXRlZ3ksXG4gIHRyZWU6IFJvdXRlVHJlZVxuKTogU2VnbWVudFZhcnlQYXRoIHtcbiAgLy8gVGhpcyBpcyB1c2VkIGZvciBzdG9yaW5nIHBlbmRpbmcgcmVxdWVzdHMgaW4gdGhlIGNhY2hlLiBXZSB3YW50IHRvIGNob29zZVxuICAvLyB0aGUgbW9zdCBnZW5lcmljIHZhcnkgcGF0aCBiYXNlZCBvbiB0aGUgc3RyYXRlZ3kgdXNlZCB0byBmZXRjaCBpdCwgaS5lLlxuICAvLyBzdGF0aWMvUFBSIHZlcnN1cyBydW50aW1lIHByZWZldGNoaW5nLCBzbyB0aGF0IGl0IGNhbiBiZSByZXVzZWQgYXMgbXVjaFxuICAvLyBhcyBwb3NzaWJsZS5cbiAgLy9cbiAgLy8gV2UgbWF5IGJlIGFibGUgdG8gcmUta2V5IHRoZSByZXNwb25zZSB0byBzb21ldGhpbmcgZXZlbiBtb3JlIGdlbmVyaWMgb25jZVxuICAvLyB3ZSByZWNlaXZlIGl0IOKAlCBmb3IgZXhhbXBsZSwgaWYgdGhlIHNlcnZlciB0ZWxscyB1cyB0aGF0IHRoZSByZXNwb25zZVxuICAvLyBkb2Vzbid0IHZhcnkgb24gYSBwYXJ0aWN1bGFyIHBhcmFtIOKAlCBidXQgZXZlbiBiZWZvcmUgd2Ugc2VuZCB0aGUgcmVxdWVzdCxcbiAgLy8gd2Uga25vdyBzb21lIHBhcmFtcyBhcmUgcmV1c2FibGUgYmFzZWQgb24gdGhlIGZldGNoIHN0cmF0ZWd5IGFsb25lLiBGb3JcbiAgLy8gZXhhbXBsZSwgYSBzdGF0aWMgcHJlZmV0Y2ggd2lsbCBuZXZlciB2YXJ5IG9uIHNlYXJjaCBwYXJhbXMuXG4gIC8vXG4gIC8vIFRoZSBvcmlnaW5hbCB2YXJ5IHBhdGggd2l0aCBhbGwgdGhlIHBhcmFtcyBmaWxsZWQgaW4gaXMgc3RvcmVkIG9uIHRoZVxuICAvLyByb3V0ZSB0cmVlIG9iamVjdC4gV2Ugd2lsbCBjbG9uZSB0aGlzIG9uZSB0byBjcmVhdGUgYSBuZXcgdmFyeSBwYXRoXG4gIC8vIHdoZXJlIGNlcnRhaW4gcGFyYW1zIGFyZSByZXBsYWNlZCB3aXRoIEZhbGxiYWNrLlxuICAvL1xuICAvLyBUaGlzIHJlc3VsdCBvZiB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBzdG9yZWQgYW55d2hlcmUuIEl0J3Mgb25seSB1c2VkIHRvXG4gIC8vIGFjY2VzcyB0aGUgY2FjaGUgYSBzaW5nbGUgdGltZS5cbiAgLy9cbiAgLy8gVE9ETzogUmF0aGVyIHRoYW4gY3JlYXRlIGEgbmV3IGxpc3Qgb2JqZWN0IGp1c3QgdG8gYWNjZXNzIHRoZSBjYWNoZSwgdGhlXG4gIC8vIHBsYW4gaXMgdG8gYWRkIHRoZSBjb25jZXB0IG9mIGEgXCJ2YXJ5IG1hc2tcIi4gVGhpcyB3aWxsIHJlcHJlc2VudCBhbGwgdGhlXG4gIC8vIHBhcmFtcyB0aGF0IGNhbiBiZSB0cmVhdGVkIGFzIEZhbGxiYWNrLiAoT3IgcGVyaGFwcyB0aGUgaW52ZXJzZS4pXG4gIGNvbnN0IG9yaWdpbmFsVmFyeVBhdGggPSB0cmVlLnZhcnlQYXRoXG5cbiAgLy8gT25seSBwYWdlIHNlZ21lbnRzIChhbmQgdGhlIHNwZWNpYWwgXCJtZXRhZGF0YVwiIHNlZ21lbnQsIHdoaWNoIGlzIHRyZWF0ZWRcbiAgLy8gbGlrZSBhIHBhZ2Ugc2VnbWVudCBmb3IgdGhlIHB1cnBvc2VzIG9mIGNhY2hpbmcpIG1heSBjb250YWluIHNlYXJjaFxuICAvLyBwYXJhbXMuIFRoZXJlJ3Mgbm8gcmVhc29uIHRvIGluY2x1ZGUgdGhlbSBpbiB0aGUgdmFyeSBwYXRoIG90aGVyd2lzZS5cbiAgaWYgKHRyZWUuaXNQYWdlKSB7XG4gICAgLy8gT25seSBhIHJ1bnRpbWUgcHJlZmV0Y2ggd2lsbCBpbmNsdWRlIHNlYXJjaCBwYXJhbXMgaW4gdGhlIHZhcnkgcGF0aC5cbiAgICAvLyBTdGF0aWMgcHJlZmV0Y2hlcyBuZXZlciBpbmNsdWRlIHNlYXJjaCBwYXJhbXMsIHNvIHRoZXkgY2FuIGJlIHJldXNlZFxuICAgIC8vIGFjcm9zcyBhbGwgcG9zc2libGUgc2VhcmNoIHBhcmFtIHZhbHVlcy5cbiAgICBjb25zdCBkb2VzVmFyeU9uU2VhcmNoUGFyYW1zID1cbiAgICAgIGZldGNoU3RyYXRlZ3kgPT09IEZldGNoU3RyYXRlZ3kuRnVsbCB8fFxuICAgICAgZmV0Y2hTdHJhdGVneSA9PT0gRmV0Y2hTdHJhdGVneS5QUFJSdW50aW1lXG5cbiAgICBpZiAoIWRvZXNWYXJ5T25TZWFyY2hQYXJhbXMpIHtcbiAgICAgIC8vIFRoZSByZXNwb25zZSBmcm9tIHRoZSB0aGUgc2VydmVyIHdpbGwgbm90IHZhcnkgb24gc2VhcmNoIHBhcmFtcy4gQ2xvbmVcbiAgICAgIC8vIHRoZSBlbmQgb2YgdGhlIG9yaWdpbmFsIHZhcnkgcGF0aCB0byByZXBsYWNlIHRoZSBzZWFyY2ggcGFyYW1zXG4gICAgICAvLyB3aXRoIEZhbGxiYWNrLlxuICAgICAgLy9cbiAgICAgIC8vIHJlcXVlc3RLZXkgLT4gc2VhcmNoUGFyYW1zIC0+IHBhdGhQYXJhbXNcbiAgICAgIC8vICAgICAgICAgICAgICAgXiBUaGlzIHBhcnQgZ2V0cyByZXBsYWNlZCB3aXRoIEZhbGxiYWNrXG4gICAgICBjb25zdCBzZWFyY2hQYXJhbXNWYXJ5UGF0aCA9IChvcmlnaW5hbFZhcnlQYXRoIGFzIFBhZ2VWYXJ5UGF0aCkucGFyZW50XG4gICAgICBjb25zdCBwYXRoUGFyYW1zVmFyeVBhdGggPSBzZWFyY2hQYXJhbXNWYXJ5UGF0aC5wYXJlbnRcbiAgICAgIGNvbnN0IHBhdGNoZWRWYXJ5UGF0aDogVmFyeVBhdGggPSB7XG4gICAgICAgIGlkOiBudWxsLFxuICAgICAgICB2YWx1ZTogb3JpZ2luYWxWYXJ5UGF0aC52YWx1ZSxcbiAgICAgICAgcGFyZW50OiB7XG4gICAgICAgICAgaWQ6ICc/JyxcbiAgICAgICAgICB2YWx1ZTogRmFsbGJhY2ssXG4gICAgICAgICAgcGFyZW50OiBwYXRoUGFyYW1zVmFyeVBhdGgsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgICByZXR1cm4gcGF0Y2hlZFZhcnlQYXRoIGFzIFNlZ21lbnRWYXJ5UGF0aFxuICAgIH1cbiAgfVxuXG4gIC8vIFRoZSByZXF1ZXN0IGRvZXMgdmFyeSBvbiBzZWFyY2ggcGFyYW1zLiBXZSBkb24ndCBuZWVkIHRvIG1vZGlmeSBhbnl0aGluZy5cbiAgcmV0dXJuIG9yaWdpbmFsVmFyeVBhdGggYXMgU2VnbWVudFZhcnlQYXRoXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9uZVBhZ2VWYXJ5UGF0aFdpdGhOZXdTZWFyY2hQYXJhbXMoXG4gIG9yaWdpbmFsVmFyeVBhdGg6IFBhZ2VWYXJ5UGF0aCxcbiAgbmV3U2VhcmNoOiBOb3JtYWxpemVkU2VhcmNoXG4pOiBQYWdlVmFyeVBhdGgge1xuICAvLyByZXF1ZXN0S2V5IC0+IHNlYXJjaFBhcmFtcyAtPiBwYXRoUGFyYW1zXG4gIC8vICAgICAgICAgICAgICAgXiBUaGlzIHBhcnQgZ2V0cyByZXBsYWNlZCB3aXRoIG5ld1NlYXJjaFxuICBjb25zdCBzZWFyY2hQYXJhbXNWYXJ5UGF0aCA9IG9yaWdpbmFsVmFyeVBhdGgucGFyZW50XG4gIGNvbnN0IGNsb25lZFZhcnlQYXRoOiBWYXJ5UGF0aCA9IHtcbiAgICBpZDogbnVsbCxcbiAgICB2YWx1ZTogb3JpZ2luYWxWYXJ5UGF0aC52YWx1ZSxcbiAgICBwYXJlbnQ6IHtcbiAgICAgIGlkOiAnPycsXG4gICAgICB2YWx1ZTogbmV3U2VhcmNoLFxuICAgICAgcGFyZW50OiBzZWFyY2hQYXJhbXNWYXJ5UGF0aC5wYXJlbnQsXG4gICAgfSxcbiAgfVxuICByZXR1cm4gY2xvbmVkVmFyeVBhdGggYXMgUGFnZVZhcnlQYXRoXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZW5kZXJlZFNlYXJjaEZyb21WYXJ5UGF0aChcbiAgdmFyeVBhdGg6IFBhZ2VWYXJ5UGF0aFxuKTogTm9ybWFsaXplZFNlYXJjaCB8IG51bGwge1xuICBjb25zdCBzZWFyY2hQYXJhbXMgPSB2YXJ5UGF0aC5wYXJlbnQudmFsdWVcbiAgcmV0dXJuIHR5cGVvZiBzZWFyY2hQYXJhbXMgPT09ICdzdHJpbmcnXG4gICAgPyAoc2VhcmNoUGFyYW1zIGFzIE5vcm1hbGl6ZWRTZWFyY2gpXG4gICAgOiBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGdWxmaWxsZWRTZWdtZW50VmFyeVBhdGgoXG4gIG9yaWdpbmFsOiBWYXJ5UGF0aCxcbiAgdmFyeVBhcmFtczogU2V0PHN0cmluZz5cbik6IFNlZ21lbnRWYXJ5UGF0aCB7XG4gIC8vIFJlLWtleXMgYSBzZWdtZW50J3MgdmFyeSBwYXRoIGJhc2VkIG9uIHdoaWNoIHBhcmFtcyB0aGUgc2VnbWVudCBhY3R1YWxseVxuICAvLyBkZXBlbmRzIG9uLiBQYXJhbXMgdGhhdCBhcmUgTk9UIGluIHRoZSB2YXJ5UGFyYW1zIHNldCBhcmUgcmVwbGFjZWQgd2l0aFxuICAvLyBGYWxsYmFjaywgYWxsb3dpbmcgdGhlIGNhY2hlIGVudHJ5IHRvIGJlIHJldXNlZCBhY3Jvc3MgZGlmZmVyZW50IHZhbHVlcyBvZlxuICAvLyB0aG9zZSBwYXJhbXMuXG5cbiAgLy8gVGhpcyBpcyBjYWxsZWQgd2hlbiBhIHNlZ21lbnQgaXMgZnVsZmlsbGVkIHdpdGggZGF0YSBmcm9tIHRoZSBzZXJ2ZXIuIFRoZVxuICAvLyB2YXJ5UGFyYW1zIHNldCBjb21lcyBmcm9tIHRoZSBzZXJ2ZXIgYW5kIGluZGljYXRlcyB3aGljaCBwYXJhbXMgd2VyZVxuICAvLyBhY2Nlc3NlZCBkdXJpbmcgcmVuZGVyaW5nLlxuICBjb25zdCBjbG9uZTogVmFyeVBhdGggPSB7XG4gICAgaWQ6IG9yaWdpbmFsLmlkLFxuICAgIC8vIElmIHRoZSBpZCBpcyBudWxsLCB0aGlzIG5vZGUgaXMgbm90IGEgcGFyYW0gKGUuZy4sIGl0J3MgYSByZXF1ZXN0IGtleSkuXG4gICAgLy8gSWYgdGhlIGlkIGlzIGluIHRoZSB2YXJ5UGFyYW1zIHNldCwga2VlcCB0aGUgb3JpZ2luYWwgdmFsdWUuXG4gICAgLy8gT3RoZXJ3aXNlLCByZXBsYWNlIHdpdGggRmFsbGJhY2sgdG8gbWFrZSBpdCByZXVzYWJsZS5cbiAgICB2YWx1ZTpcbiAgICAgIG9yaWdpbmFsLmlkID09PSBudWxsIHx8IHZhcnlQYXJhbXMuaGFzKG9yaWdpbmFsLmlkKVxuICAgICAgICA/IG9yaWdpbmFsLnZhbHVlXG4gICAgICAgIDogRmFsbGJhY2ssXG4gICAgcGFyZW50OlxuICAgICAgb3JpZ2luYWwucGFyZW50ID09PSBudWxsXG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IGdldEZ1bGZpbGxlZFNlZ21lbnRWYXJ5UGF0aChvcmlnaW5hbC5wYXJlbnQsIHZhcnlQYXJhbXMpLFxuICB9XG4gIHJldHVybiBjbG9uZSBhcyBTZWdtZW50VmFyeVBhdGhcbn1cbiJdLCJuYW1lcyI6WyJhcHBlbmRMYXlvdXRWYXJ5UGF0aCIsImNsb25lUGFnZVZhcnlQYXRoV2l0aE5ld1NlYXJjaFBhcmFtcyIsImZpbmFsaXplTGF5b3V0VmFyeVBhdGgiLCJmaW5hbGl6ZU1ldGFkYXRhVmFyeVBhdGgiLCJmaW5hbGl6ZVBhZ2VWYXJ5UGF0aCIsImdldEZ1bGZpbGxlZFJvdXRlVmFyeVBhdGgiLCJnZXRGdWxmaWxsZWRTZWdtZW50VmFyeVBhdGgiLCJnZXRQYXJ0aWFsTGF5b3V0VmFyeVBhdGgiLCJnZXRQYXJ0aWFsUGFnZVZhcnlQYXRoIiwiZ2V0UmVuZGVyZWRTZWFyY2hGcm9tVmFyeVBhdGgiLCJnZXRSb3V0ZVZhcnlQYXRoIiwiZ2V0U2VnbWVudFZhcnlQYXRoRm9yUmVxdWVzdCIsInBhdGhuYW1lIiwic2VhcmNoIiwibmV4dFVybCIsInZhcnlQYXRoIiwiaWQiLCJ2YWx1ZSIsInBhcmVudCIsImNvdWxkQmVJbnRlcmNlcHRlZCIsIkZhbGxiYWNrIiwicGFyZW50UGF0aCIsImNhY2hlS2V5IiwicGFyYW1OYW1lIiwidmFyeVBhdGhQYXJ0IiwicmVxdWVzdEtleSIsImxheW91dFZhcnlQYXRoIiwiZmluYWxpemVkVmFyeVBhdGgiLCJyZW5kZXJlZFNlYXJjaCIsInBhZ2VWYXJ5UGF0aCIsInBhZ2VSZXF1ZXN0S2V5IiwiSEVBRF9SRVFVRVNUX0tFWSIsImZldGNoU3RyYXRlZ3kiLCJ0cmVlIiwib3JpZ2luYWxWYXJ5UGF0aCIsImlzUGFnZSIsImRvZXNWYXJ5T25TZWFyY2hQYXJhbXMiLCJGZXRjaFN0cmF0ZWd5IiwiRnVsbCIsIlBQUlJ1bnRpbWUiLCJzZWFyY2hQYXJhbXNWYXJ5UGF0aCIsInBhdGhQYXJhbXNWYXJ5UGF0aCIsInBhdGNoZWRWYXJ5UGF0aCIsIm5ld1NlYXJjaCIsImNsb25lZFZhcnlQYXRoIiwic2VhcmNoUGFyYW1zIiwib3JpZ2luYWwiLCJ2YXJ5UGFyYW1zIiwiY2xvbmUiLCJoYXMiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/segment-cache/vary-path.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/static-generation-bailout.js":
|
||
/*!*******************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/static-generation-bailout.js ***!
|
||
\*******************************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n StaticGenBailoutError: function() {\n return StaticGenBailoutError;\n },\n isStaticGenBailoutError: function() {\n return isStaticGenBailoutError;\n }\n});\nconst NEXT_STATIC_GEN_BAILOUT = 'NEXT_STATIC_GEN_BAILOUT';\nclass StaticGenBailoutError extends Error {\n constructor(...args){\n super(...args), this.code = NEXT_STATIC_GEN_BAILOUT;\n }\n}\nfunction isStaticGenBailoutError(error) {\n if (typeof error !== 'object' || error === null || !('code' in error)) {\n return false;\n }\n return error.code === NEXT_STATIC_GEN_BAILOUT;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=static-generation-bailout.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3N0YXRpYy1nZW5lcmF0aW9uLWJhaWxvdXQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBRWFBLHFCQUFxQjtlQUFyQkE7O0lBSUdDLHVCQUF1QjtlQUF2QkE7OztBQU5oQixNQUFNQywwQkFBMEI7QUFFekIsTUFBTUYsOEJBQThCRzs7UUFBcEMscUJBQ1dDLElBQUFBLEdBQU9GOztBQUN6QjtBQUVPLFNBQVNELHdCQUNkSSxLQUFjO0lBRWQsSUFBSSxPQUFPQSxVQUFVLFlBQVlBLFVBQVUsUUFBUSxDQUFFLFdBQVVBLEtBQUFBLENBQUksRUFBSTtRQUNyRSxPQUFPO0lBQ1Q7SUFFQSxPQUFPQSxNQUFNRCxJQUFJLEtBQUtGO0FBQ3hCIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL2NsaWVudC9jb21wb25lbnRzL3N0YXRpYy1nZW5lcmF0aW9uLWJhaWxvdXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgTkVYVF9TVEFUSUNfR0VOX0JBSUxPVVQgPSAnTkVYVF9TVEFUSUNfR0VOX0JBSUxPVVQnXG5cbmV4cG9ydCBjbGFzcyBTdGF0aWNHZW5CYWlsb3V0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHB1YmxpYyByZWFkb25seSBjb2RlID0gTkVYVF9TVEFUSUNfR0VOX0JBSUxPVVRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RhdGljR2VuQmFpbG91dEVycm9yKFxuICBlcnJvcjogdW5rbm93blxuKTogZXJyb3IgaXMgU3RhdGljR2VuQmFpbG91dEVycm9yIHtcbiAgaWYgKHR5cGVvZiBlcnJvciAhPT0gJ29iamVjdCcgfHwgZXJyb3IgPT09IG51bGwgfHwgISgnY29kZScgaW4gZXJyb3IpKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gZXJyb3IuY29kZSA9PT0gTkVYVF9TVEFUSUNfR0VOX0JBSUxPVVRcbn1cbiJdLCJuYW1lcyI6WyJTdGF0aWNHZW5CYWlsb3V0RXJyb3IiLCJpc1N0YXRpY0dlbkJhaWxvdXRFcnJvciIsIk5FWFRfU1RBVElDX0dFTl9CQUlMT1VUIiwiRXJyb3IiLCJjb2RlIiwiZXJyb3IiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/static-generation-bailout.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/unauthorized.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/unauthorized.js ***!
|
||
\******************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"unauthorized\", ({\n enumerable: true,\n get: function() {\n return unauthorized;\n }\n}));\nconst _httpaccessfallback = __webpack_require__(/*! ./http-access-fallback/http-access-fallback */ \"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\");\n// TODO: Add `unauthorized` docs\n/**\n * @experimental\n * This function allows you to render the [unauthorized.js file](https://nextjs.org/docs/app/api-reference/file-conventions/unauthorized)\n * within a route segment as well as inject a tag.\n *\n * `unauthorized()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n *\n * Read more: [Next.js Docs: `unauthorized`](https://nextjs.org/docs/app/api-reference/functions/unauthorized)\n */ const DIGEST = `${_httpaccessfallback.HTTP_ERROR_FALLBACK_ERROR_CODE};401`;\nfunction unauthorized() {\n if (true) {\n throw Object.defineProperty(new Error(`\\`unauthorized()\\` is experimental and only allowed to be used when \\`experimental.authInterrupts\\` is enabled.`), \"__NEXT_ERROR_CODE\", {\n value: \"E411\",\n enumerable: false,\n configurable: true\n });\n }\n const error = Object.defineProperty(new Error(DIGEST), \"__NEXT_ERROR_CODE\", {\n value: \"E1002\",\n enumerable: false,\n configurable: true\n });\n error.digest = DIGEST;\n throw error;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=unauthorized.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3VuYXV0aG9yaXplZC5qcyIsIm1hcHBpbmdzIjoiOzs7O2dEQXNCZ0JBOzs7ZUFBQUE7OztnREFuQlQ7QUFFUCxnQ0FBZ0M7QUFDaEM7Ozs7Ozs7Ozs7OztDQVlDLEdBRUQsTUFBTUMsU0FBUyxHQUFHQyxvQkFBQUEsOEJBQThCLENBQUMsSUFBSSxDQUFDO0FBRS9DLFNBQVNGO0lBQ2QsSUFBSSxJQUFnRCxFQUFFO1FBQ3BELE1BQU0scUJBRUwsQ0FGSyxJQUFJTSxNQUNSLENBQUMsK0dBQStHLENBQUMsR0FEN0c7bUJBQUE7d0JBQUE7MEJBQUE7UUFFTjtJQUNGO0lBRUEsTUFBTUMsUUFBUSxxQkFBaUIsQ0FBakIsSUFBSUQsTUFBTUwsU0FBVjtlQUFBO29CQUFBO3NCQUFBO0lBQWdCO0lBQzVCTSxNQUFrQ0MsTUFBTSxHQUFHUDtJQUM3QyxNQUFNTTtBQUNSIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL2NsaWVudC9jb21wb25lbnRzL3VuYXV0aG9yaXplZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBIVFRQX0VSUk9SX0ZBTExCQUNLX0VSUk9SX0NPREUsXG4gIHR5cGUgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3IsXG59IGZyb20gJy4vaHR0cC1hY2Nlc3MtZmFsbGJhY2svaHR0cC1hY2Nlc3MtZmFsbGJhY2snXG5cbi8vIFRPRE86IEFkZCBgdW5hdXRob3JpemVkYCBkb2NzXG4vKipcbiAqIEBleHBlcmltZW50YWxcbiAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byByZW5kZXIgdGhlIFt1bmF1dGhvcml6ZWQuanMgZmlsZV0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZmlsZS1jb252ZW50aW9ucy91bmF1dGhvcml6ZWQpXG4gKiB3aXRoaW4gYSByb3V0ZSBzZWdtZW50IGFzIHdlbGwgYXMgaW5qZWN0IGEgdGFnLlxuICpcbiAqIGB1bmF1dGhvcml6ZWQoKWAgY2FuIGJlIHVzZWQgaW5cbiAqIFtTZXJ2ZXIgQ29tcG9uZW50c10oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcmVuZGVyaW5nL3NlcnZlci1jb21wb25lbnRzKSxcbiAqIFtSb3V0ZSBIYW5kbGVyc10oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcm91dGluZy9yb3V0ZS1oYW5kbGVycyksIGFuZFxuICogW1NlcnZlciBBY3Rpb25zXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9kYXRhLWZldGNoaW5nL3NlcnZlci1hY3Rpb25zLWFuZC1tdXRhdGlvbnMpLlxuICpcbiAqXG4gKiBSZWFkIG1vcmU6IFtOZXh0LmpzIERvY3M6IGB1bmF1dGhvcml6ZWRgXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvdW5hdXRob3JpemVkKVxuICovXG5cbmNvbnN0IERJR0VTVCA9IGAke0hUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERX07NDAxYFxuXG5leHBvcnQgZnVuY3Rpb24gdW5hdXRob3JpemVkKCk6IG5ldmVyIHtcbiAgaWYgKCFwcm9jZXNzLmVudi5fX05FWFRfRVhQRVJJTUVOVEFMX0FVVEhfSU5URVJSVVBUUykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBcXGB1bmF1dGhvcml6ZWQoKVxcYCBpcyBleHBlcmltZW50YWwgYW5kIG9ubHkgYWxsb3dlZCB0byBiZSB1c2VkIHdoZW4gXFxgZXhwZXJpbWVudGFsLmF1dGhJbnRlcnJ1cHRzXFxgIGlzIGVuYWJsZWQuYFxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKERJR0VTVCkgYXMgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3JcbiAgOyhlcnJvciBhcyBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvcikuZGlnZXN0ID0gRElHRVNUXG4gIHRocm93IGVycm9yXG59XG4iXSwibmFtZXMiOlsidW5hdXRob3JpemVkIiwiRElHRVNUIiwiSFRUUF9FUlJPUl9GQUxMQkFDS19FUlJPUl9DT0RFIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9FWFBFUklNRU5UQUxfQVVUSF9JTlRFUlJVUFRTIiwiRXJyb3IiLCJlcnJvciIsImRpZ2VzdCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/unauthorized.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/unrecognized-action-error.js":
|
||
/*!*******************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/unrecognized-action-error.js ***!
|
||
\*******************************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n UnrecognizedActionError: function() {\n return UnrecognizedActionError;\n },\n unstable_isUnrecognizedActionError: function() {\n return unstable_isUnrecognizedActionError;\n }\n});\nclass UnrecognizedActionError extends Error {\n constructor(...args){\n super(...args);\n this.name = 'UnrecognizedActionError';\n }\n}\nfunction unstable_isUnrecognizedActionError(error) {\n return !!(error && typeof error === 'object' && error instanceof UnrecognizedActionError);\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=unrecognized-action-error.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3VucmVjb2duaXplZC1hY3Rpb24tZXJyb3IuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBQWFBLHVCQUF1QjtlQUF2QkE7O0lBeUJHQyxrQ0FBa0M7ZUFBbENBOzs7QUF6QlQsTUFBTUQsZ0NBQWdDRTtJQUMzQ0MsWUFBWSxHQUFHQyxJQUF5QyxDQUFFO1FBQ3hELEtBQUssSUFBSUE7UUFDVCxJQUFJLENBQUNDLElBQUksR0FBRztJQUNkO0FBQ0Y7QUFvQk8sU0FBU0osbUNBQ2RLLEtBQWM7SUFFZCxPQUFPLENBQUMsQ0FDTkEsQ0FBQUEsU0FDQSxPQUFPQSxVQUFVLFlBQ2pCQSxpQkFBaUJOLHVCQUFBQSxDQUFzQjtBQUUzQyIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9jbGllbnQvY29tcG9uZW50cy91bnJlY29nbml6ZWQtYWN0aW9uLWVycm9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBVbnJlY29nbml6ZWRBY3Rpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoLi4uYXJnczogQ29uc3RydWN0b3JQYXJhbWV0ZXJzPHR5cGVvZiBFcnJvcj4pIHtcbiAgICBzdXBlciguLi5hcmdzKVxuICAgIHRoaXMubmFtZSA9ICdVbnJlY29nbml6ZWRBY3Rpb25FcnJvcidcbiAgfVxufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgYSBzZXJ2ZXIgYWN0aW9uIGNhbGwgZmFpbGVkIGJlY2F1c2UgdGhlIHNlcnZlciBhY3Rpb24gd2FzIG5vdCByZWNvZ25pemVkIGJ5IHRoZSBzZXJ2ZXIuXG4gKiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIGNsaWVudCBhbmQgdGhlIHNlcnZlciBhcmUgbm90IGZyb20gdGhlIHNhbWUgZGVwbG95bWVudC5cbiAqXG4gKiBFeGFtcGxlIHVzYWdlOlxuICogYGBgdHNcbiAqIHRyeSB7XG4gKiAgIGF3YWl0IG15U2VydmVyQWN0aW9uKCk7XG4gKiB9IGNhdGNoIChlcnIpIHtcbiAqICAgaWYgKHVuc3RhYmxlX2lzVW5yZWNvZ25pemVkQWN0aW9uRXJyb3IoZXJyKSkge1xuICogICAgIC8vIFRoZSBjbGllbnQgaXMgZnJvbSBhIGRpZmZlcmVudCBkZXBsb3ltZW50IHRoYW4gdGhlIHNlcnZlci5cbiAqICAgICAvLyBSZWxvYWRpbmcgdGhlIHBhZ2Ugd2lsbCBmaXggdGhpcyBtaXNtYXRjaC5cbiAqICAgICB3aW5kb3cuYWxlcnQoXCJQbGVhc2UgcmVmcmVzaCB0aGUgcGFnZSBhbmQgdHJ5IGFnYWluXCIpO1xuICogICAgIHJldHVybjtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuc3RhYmxlX2lzVW5yZWNvZ25pemVkQWN0aW9uRXJyb3IoXG4gIGVycm9yOiB1bmtub3duXG4pOiBlcnJvciBpcyBVbnJlY29nbml6ZWRBY3Rpb25FcnJvciB7XG4gIHJldHVybiAhIShcbiAgICBlcnJvciAmJlxuICAgIHR5cGVvZiBlcnJvciA9PT0gJ29iamVjdCcgJiZcbiAgICBlcnJvciBpbnN0YW5jZW9mIFVucmVjb2duaXplZEFjdGlvbkVycm9yXG4gIClcbn1cbiJdLCJuYW1lcyI6WyJVbnJlY29nbml6ZWRBY3Rpb25FcnJvciIsInVuc3RhYmxlX2lzVW5yZWNvZ25pemVkQWN0aW9uRXJyb3IiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwiYXJncyIsIm5hbWUiLCJlcnJvciJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/unrecognized-action-error.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/unresolved-thenable.js":
|
||
/*!*************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/unresolved-thenable.js ***!
|
||
\*************************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * Create a \"Thenable\" that does not resolve. This is used to suspend indefinitely when data is not available yet.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"unresolvedThenable\", ({\n enumerable: true,\n get: function() {\n return unresolvedThenable;\n }\n}));\nconst unresolvedThenable = {\n then: ()=>{}\n};\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=unresolved-thenable.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3VucmVzb2x2ZWQtdGhlbmFibGUuanMiLCJtYXBwaW5ncyI6IkFBQUE7O0NBRUM7Ozs7c0RBQ1lBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLHFCQUFxQjtJQUNoQ0MsTUFBTSxLQUFPO0FBQ2YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9zcmMvY2xpZW50L2NvbXBvbmVudHMvdW5yZXNvbHZlZC10aGVuYWJsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENyZWF0ZSBhIFwiVGhlbmFibGVcIiB0aGF0IGRvZXMgbm90IHJlc29sdmUuIFRoaXMgaXMgdXNlZCB0byBzdXNwZW5kIGluZGVmaW5pdGVseSB3aGVuIGRhdGEgaXMgbm90IGF2YWlsYWJsZSB5ZXQuXG4gKi9cbmV4cG9ydCBjb25zdCB1bnJlc29sdmVkVGhlbmFibGUgPSB7XG4gIHRoZW46ICgpID0+IHt9LFxufSBhcyBQcm9taXNlTGlrZTx2b2lkPlxuIl0sIm5hbWVzIjpbInVucmVzb2x2ZWRUaGVuYWJsZSIsInRoZW4iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/unresolved-thenable.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/unstable-rethrow.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/unstable-rethrow.js ***!
|
||
\**********************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * This function should be used to rethrow internal Next.js errors so that they can be handled by the framework.\n * When wrapping an API that uses errors to interrupt control flow, you should use this function before you do any error handling.\n * This function will rethrow the error if it is a Next.js error so it can be handled, otherwise it will do nothing.\n *\n * Read more: [Next.js Docs: `unstable_rethrow`](https://nextjs.org/docs/app/api-reference/functions/unstable_rethrow)\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"unstable_rethrow\", ({\n enumerable: true,\n get: function() {\n return unstable_rethrow;\n }\n}));\nconst unstable_rethrow = true ? (__webpack_require__(/*! ./unstable-rethrow.server */ \"(ssr)/./node_modules/next/dist/client/components/unstable-rethrow.server.js\").unstable_rethrow) : 0;\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=unstable-rethrow.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3Vuc3RhYmxlLXJldGhyb3cuanMiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztDQU1DOzs7O29EQUNZQTs7O2VBQUFBOzs7QUFBTixNQUFNQSxtQkFDWCxLQUE2QixHQUV2QkUsc0pBQ2dCLEdBRWhCQSxDQUNnQiIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9jbGllbnQvY29tcG9uZW50cy91bnN0YWJsZS1yZXRocm93LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCB0byByZXRocm93IGludGVybmFsIE5leHQuanMgZXJyb3JzIHNvIHRoYXQgdGhleSBjYW4gYmUgaGFuZGxlZCBieSB0aGUgZnJhbWV3b3JrLlxuICogV2hlbiB3cmFwcGluZyBhbiBBUEkgdGhhdCB1c2VzIGVycm9ycyB0byBpbnRlcnJ1cHQgY29udHJvbCBmbG93LCB5b3Ugc2hvdWxkIHVzZSB0aGlzIGZ1bmN0aW9uIGJlZm9yZSB5b3UgZG8gYW55IGVycm9yIGhhbmRsaW5nLlxuICogVGhpcyBmdW5jdGlvbiB3aWxsIHJldGhyb3cgdGhlIGVycm9yIGlmIGl0IGlzIGEgTmV4dC5qcyBlcnJvciBzbyBpdCBjYW4gYmUgaGFuZGxlZCwgb3RoZXJ3aXNlIGl0IHdpbGwgZG8gbm90aGluZy5cbiAqXG4gKiBSZWFkIG1vcmU6IFtOZXh0LmpzIERvY3M6IGB1bnN0YWJsZV9yZXRocm93YF0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL3Vuc3RhYmxlX3JldGhyb3cpXG4gKi9cbmV4cG9ydCBjb25zdCB1bnN0YWJsZV9yZXRocm93ID1cbiAgdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCdcbiAgICA/IChcbiAgICAgICAgcmVxdWlyZSgnLi91bnN0YWJsZS1yZXRocm93LnNlcnZlcicpIGFzIHR5cGVvZiBpbXBvcnQoJy4vdW5zdGFibGUtcmV0aHJvdy5zZXJ2ZXInKVxuICAgICAgKS51bnN0YWJsZV9yZXRocm93XG4gICAgOiAoXG4gICAgICAgIHJlcXVpcmUoJy4vdW5zdGFibGUtcmV0aHJvdy5icm93c2VyJykgYXMgdHlwZW9mIGltcG9ydCgnLi91bnN0YWJsZS1yZXRocm93LmJyb3dzZXInKVxuICAgICAgKS51bnN0YWJsZV9yZXRocm93XG4iXSwibmFtZXMiOlsidW5zdGFibGVfcmV0aHJvdyIsIndpbmRvdyIsInJlcXVpcmUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/unstable-rethrow.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/unstable-rethrow.server.js":
|
||
/*!*****************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/unstable-rethrow.server.js ***!
|
||
\*****************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"unstable_rethrow\", ({\n enumerable: true,\n get: function() {\n return unstable_rethrow;\n }\n}));\nconst _dynamicrenderingutils = __webpack_require__(/*! ../../server/dynamic-rendering-utils */ \"(ssr)/./node_modules/next/dist/server/dynamic-rendering-utils.js\");\nconst _ispostpone = __webpack_require__(/*! ../../server/lib/router-utils/is-postpone */ \"(ssr)/./node_modules/next/dist/server/lib/router-utils/is-postpone.js\");\nconst _bailouttocsr = __webpack_require__(/*! ../../shared/lib/lazy-dynamic/bailout-to-csr */ \"(ssr)/./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js\");\nconst _isnextroutererror = __webpack_require__(/*! ./is-next-router-error */ \"(ssr)/./node_modules/next/dist/client/components/is-next-router-error.js\");\nconst _dynamicrendering = __webpack_require__(/*! ../../server/app-render/dynamic-rendering */ \"(ssr)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\");\nconst _hooksservercontext = __webpack_require__(/*! ./hooks-server-context */ \"(ssr)/./node_modules/next/dist/client/components/hooks-server-context.js\");\nfunction unstable_rethrow(error) {\n if ((0, _isnextroutererror.isNextRouterError)(error) || (0, _bailouttocsr.isBailoutToCSRError)(error) || (0, _hooksservercontext.isDynamicServerError)(error) || (0, _dynamicrendering.isDynamicPostpone)(error) || (0, _ispostpone.isPostpone)(error) || (0, _dynamicrenderingutils.isHangingPromiseRejectionError)(error) || (0, _dynamicrendering.isPrerenderInterruptedError)(error)) {\n throw error;\n }\n if (error instanceof Error && 'cause' in error) {\n unstable_rethrow(error.cause);\n }\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=unstable-rethrow.server.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3Vuc3RhYmxlLXJldGhyb3cuc2VydmVyLmpzIiwibWFwcGluZ3MiOiI7Ozs7b0RBVWdCQTs7O2VBQUFBOzs7bURBVitCO3dDQUNwQjswQ0FDUzsrQ0FDRjs4Q0FJM0I7Z0RBQzhCO0FBRTlCLFNBQVNBLGlCQUFpQkMsS0FBYztJQUM3QyxJQUNFQyxDQUFBQSxHQUFBQSxtQkFBQUEsaUJBQUFBLEVBQWtCRCxVQUNsQkUsQ0FBQUEsR0FBQUEsY0FBQUEsbUJBQUFBLEVBQW9CRixVQUNwQkcsQ0FBQUEsR0FBQUEsb0JBQUFBLG9CQUFBQSxFQUFxQkgsVUFDckJJLENBQUFBLEdBQUFBLGtCQUFBQSxpQkFBaUIsRUFBQ0osVUFDbEJLLENBQUFBLEdBQUFBLFlBQUFBLFVBQUFBLEVBQVdMLFVBQ1hNLENBQUFBLEdBQUFBLHVCQUFBQSw4QkFBQUEsRUFBK0JOLFVBQy9CTyxDQUFBQSxHQUFBQSxrQkFBQUEsMkJBQUFBLEVBQTRCUCxRQUM1QjtRQUNBLE1BQU1BO0lBQ1I7SUFFQSxJQUFJQSxpQkFBaUJRLFNBQVMsV0FBV1IsT0FBTztRQUM5Q0QsaUJBQWlCQyxNQUFNUyxLQUFLO0lBQzlCO0FBQ0YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9zcmMvY2xpZW50L2NvbXBvbmVudHMvdW5zdGFibGUtcmV0aHJvdy5zZXJ2ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNIYW5naW5nUHJvbWlzZVJlamVjdGlvbkVycm9yIH0gZnJvbSAnLi4vLi4vc2VydmVyL2R5bmFtaWMtcmVuZGVyaW5nLXV0aWxzJ1xuaW1wb3J0IHsgaXNQb3N0cG9uZSB9IGZyb20gJy4uLy4uL3NlcnZlci9saWIvcm91dGVyLXV0aWxzL2lzLXBvc3Rwb25lJ1xuaW1wb3J0IHsgaXNCYWlsb3V0VG9DU1JFcnJvciB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvbGF6eS1keW5hbWljL2JhaWxvdXQtdG8tY3NyJ1xuaW1wb3J0IHsgaXNOZXh0Um91dGVyRXJyb3IgfSBmcm9tICcuL2lzLW5leHQtcm91dGVyLWVycm9yJ1xuaW1wb3J0IHtcbiAgaXNEeW5hbWljUG9zdHBvbmUsXG4gIGlzUHJlcmVuZGVySW50ZXJydXB0ZWRFcnJvcixcbn0gZnJvbSAnLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvZHluYW1pYy1yZW5kZXJpbmcnXG5pbXBvcnQgeyBpc0R5bmFtaWNTZXJ2ZXJFcnJvciB9IGZyb20gJy4vaG9va3Mtc2VydmVyLWNvbnRleHQnXG5cbmV4cG9ydCBmdW5jdGlvbiB1bnN0YWJsZV9yZXRocm93KGVycm9yOiB1bmtub3duKTogdm9pZCB7XG4gIGlmIChcbiAgICBpc05leHRSb3V0ZXJFcnJvcihlcnJvcikgfHxcbiAgICBpc0JhaWxvdXRUb0NTUkVycm9yKGVycm9yKSB8fFxuICAgIGlzRHluYW1pY1NlcnZlckVycm9yKGVycm9yKSB8fFxuICAgIGlzRHluYW1pY1Bvc3Rwb25lKGVycm9yKSB8fFxuICAgIGlzUG9zdHBvbmUoZXJyb3IpIHx8XG4gICAgaXNIYW5naW5nUHJvbWlzZVJlamVjdGlvbkVycm9yKGVycm9yKSB8fFxuICAgIGlzUHJlcmVuZGVySW50ZXJydXB0ZWRFcnJvcihlcnJvcilcbiAgKSB7XG4gICAgdGhyb3cgZXJyb3JcbiAgfVxuXG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmICdjYXVzZScgaW4gZXJyb3IpIHtcbiAgICB1bnN0YWJsZV9yZXRocm93KGVycm9yLmNhdXNlKVxuICB9XG59XG4iXSwibmFtZXMiOlsidW5zdGFibGVfcmV0aHJvdyIsImVycm9yIiwiaXNOZXh0Um91dGVyRXJyb3IiLCJpc0JhaWxvdXRUb0NTUkVycm9yIiwiaXNEeW5hbWljU2VydmVyRXJyb3IiLCJpc0R5bmFtaWNQb3N0cG9uZSIsImlzUG9zdHBvbmUiLCJpc0hhbmdpbmdQcm9taXNlUmVqZWN0aW9uRXJyb3IiLCJpc1ByZXJlbmRlckludGVycnVwdGVkRXJyb3IiLCJFcnJvciIsImNhdXNlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/unstable-rethrow.server.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/components/use-action-queue.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/components/use-action-queue.js ***!
|
||
\**********************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n dispatchAppRouterAction: function() {\n return dispatchAppRouterAction;\n },\n dispatchGestureState: function() {\n return dispatchGestureState;\n },\n refreshOnInstantNavigationUnlock: function() {\n return refreshOnInstantNavigationUnlock;\n },\n useActionQueue: function() {\n return useActionQueue;\n }\n});\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\"));\nconst _isthenable = __webpack_require__(/*! ../../shared/lib/is-thenable */ \"(ssr)/./node_modules/next/dist/shared/lib/is-thenable.js\");\nconst _routerreducertypes = __webpack_require__(/*! ./router-reducer/router-reducer-types */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\n// The app router state lives outside of React, so we can import the dispatch\n// method directly wherever we need it, rather than passing it around via props\n// or context.\nlet dispatch = null;\nfunction refreshOnInstantNavigationUnlock() {\n if (true) {\n if (dispatch !== null) {\n dispatch({\n type: _routerreducertypes.ACTION_REFRESH,\n bypassCacheInvalidation: true\n });\n } else {\n window.location.reload();\n }\n }\n}\nfunction dispatchAppRouterAction(action) {\n if (dispatch === null) {\n throw Object.defineProperty(new Error('Internal Next.js error: Router action dispatched before initialization.'), \"__NEXT_ERROR_CODE\", {\n value: \"E668\",\n enumerable: false,\n configurable: true\n });\n }\n dispatch(action);\n}\n// Optimistic state setter for experimental_gesturePush. Only should be used\n// during a gesture transition.\nlet setGestureRouterState = null;\nfunction dispatchGestureState(state) {\n if (setGestureRouterState === null) {\n throw Object.defineProperty(new Error('Internal Next.js error: Router action dispatched before initialization.'), \"__NEXT_ERROR_CODE\", {\n value: \"E668\",\n enumerable: false,\n configurable: true\n });\n }\n setGestureRouterState(state);\n}\nconst __DEV__ = \"development\" !== 'production';\nconst promisesWithDebugInfo = __DEV__ ? new WeakMap() : null;\nfunction useActionQueue(actionQueue) {\n const [canonicalState, setState] = _react.default.useState(actionQueue.state);\n // Wrap the canonical state in useOptimistic to support\n // experimental_gesturePush. During a gesture transition, this returns a fork\n // of the router state that represents the eventual target if/when the gesture\n // completes. Otherwise it returns the canonical state.\n const [state, setGesture] = (0, _react.useOptimistic)(canonicalState);\n if (false) {}\n // Because of a known issue that requires to decode Flight streams inside the\n // render phase, we have to be a bit clever and assign the dispatch method to\n // a module-level variable upon initialization. The useState hook in this\n // module only exists to synchronize state that lives outside of React.\n // Ideally, what we'd do instead is pass the state as a prop to root.render;\n // this is conceptually how we're modeling the app router state, despite the\n // weird implementation details.\n let nextDispatch;\n if (true) {\n const { useAppDevRenderingIndicator } = __webpack_require__(/*! ../../next-devtools/userspace/use-app-dev-rendering-indicator */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/use-app-dev-rendering-indicator.js\");\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const appDevRenderingIndicator = useAppDevRenderingIndicator();\n nextDispatch = (action)=>{\n appDevRenderingIndicator(()=>{\n actionQueue.dispatch(action, setState);\n });\n };\n } else {}\n if (false) {}\n // When navigating to a non-prefetched route, then App Router state will be\n // blocked until the server responds. We need to transfer the `_debugInfo`\n // from the underlying Flight response onto the top-level promise that is\n // passed to React (via `use`) so that the latency is accurately represented\n // in the React DevTools.\n const stateWithDebugInfo = (0, _react.useMemo)(()=>{\n if (!__DEV__) {\n return state;\n }\n if ((0, _isthenable.isThenable)(state)) {\n // useMemo can't be used to cache a Promise since the memoized value is thrown\n // away when we suspend. So we use a WeakMap to cache the Promise with debug info.\n let promiseWithDebugInfo = promisesWithDebugInfo.get(state);\n if (promiseWithDebugInfo === undefined) {\n const debugInfo = [];\n promiseWithDebugInfo = Promise.resolve(state).then((asyncState)=>{\n if (asyncState.debugInfo !== null) {\n debugInfo.push(...asyncState.debugInfo);\n }\n return asyncState;\n });\n promiseWithDebugInfo._debugInfo = debugInfo;\n promisesWithDebugInfo.set(state, promiseWithDebugInfo);\n }\n return promiseWithDebugInfo;\n }\n return state;\n }, [\n state\n ]);\n return (0, _isthenable.isThenable)(stateWithDebugInfo) ? (0, _react.use)(stateWithDebugInfo) : stateWithDebugInfo;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=use-action-queue.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3VzZS1hY3Rpb24tcXVldWUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBZ0NnQkEsdUJBQXVCO2VBQXZCQTs7SUFhQUMsb0JBQW9CO2VBQXBCQTs7SUF2QkFDLGdDQUFnQztlQUFoQ0E7O0lBc0NBQyxjQUFjO2VBQWRBOzs7OzZFQTNEbUM7d0NBQ3hCO2dEQU9wQjtBQUVQLDZFQUE2RTtBQUM3RSwrRUFBK0U7QUFDL0UsY0FBYztBQUNkLElBQUlDLFdBQTRDO0FBUXpDLFNBQVNGO0lBQ2QsSUFBSUcsSUFBcUMsRUFBRTtRQUN6QyxJQUFJRCxhQUFhLE1BQU07WUFDckJBLFNBQVM7Z0JBQUVJLE1BQU1DLG9CQUFBQSxjQUFjO2dCQUFFQyx5QkFBeUI7WUFBSztRQUNqRSxPQUFPO1lBQ0xDLE9BQU9DLFFBQVEsQ0FBQ0MsTUFBTTtRQUN4QjtJQUNGO0FBQ0Y7QUFFTyxTQUFTYix3QkFBd0JjLE1BQXNCO0lBQzVELElBQUlWLGFBQWEsTUFBTTtRQUNyQixNQUFNLHFCQUVMLENBRkssSUFBSVcsTUFDUiw0RUFESTttQkFBQTt3QkFBQTswQkFBQTtRQUVOO0lBQ0Y7SUFDQVgsU0FBU1U7QUFDWDtBQUVBLDRFQUE0RTtBQUM1RSwrQkFBK0I7QUFDL0IsSUFBSUUsd0JBQWdFO0FBRTdELFNBQVNmLHFCQUFxQmdCLEtBQW1CO0lBQ3RELElBQUlELDBCQUEwQixNQUFNO1FBQ2xDLE1BQU0scUJBRUwsQ0FGSyxJQUFJRCxNQUNSLDRFQURJO21CQUFBO3dCQUFBOzBCQUFBO1FBRU47SUFDRjtJQUNBQyxzQkFBc0JDO0FBQ3hCO0FBRUEsTUFBTUMsVUFBVWIsUUFBUUMsR0FBRyxDQUFDYSxNQUFhLEVBQUw7QUFDcEMsTUFBTUMsd0JBR0ZGLFVBQVUsSUFBSUcsWUFBYTtBQUV4QixTQUFTbEIsZUFDZG1CLFdBQWlDO0lBRWpDLE1BQU0sQ0FBQ0MsZ0JBQWdCQyxTQUFTLEdBQUdDLE9BQUFBLE9BQUssQ0FBQ0MsUUFBUSxDQUMvQ0osWUFBWUwsS0FBSztJQUduQix1REFBdUQ7SUFDdkQsNkVBQTZFO0lBQzdFLDhFQUE4RTtJQUM5RSx1REFBdUQ7SUFDdkQsTUFBTSxDQUFDQSxPQUFPVSxXQUFXLEdBQUdDLENBQUFBLEdBQUFBLE9BQUFBLGFBQUFBLEVBQWNMO0lBQzFDLElBQUksS0FBNkIsRUFBRSxFQUVsQztJQUVELDZFQUE2RTtJQUM3RSw2RUFBNkU7SUFDN0UseUVBQXlFO0lBQ3pFLHVFQUF1RTtJQUN2RSw0RUFBNEU7SUFDNUUsNEVBQTRFO0lBQzVFLGdDQUFnQztJQUNoQyxJQUFJTTtJQUVKLElBQUl4QixJQUFvQixFQUFtQjtRQUN6QyxNQUFNLEVBQUV5QiwyQkFBMkIsRUFBRSxHQUNuQ0MsbUJBQU9BLENBQUMsZ0tBQStEO1FBQ3pFLHNEQUFzRDtRQUN0RCxNQUFNQywyQkFBMkJGO1FBRWpDRCxlQUFlLENBQUNmO1lBQ2RrQix5QkFBeUI7Z0JBQ3ZCVixZQUFZbEIsUUFBUSxDQUFDVSxRQUFRVTtZQUMvQjtRQUNGO0lBQ0YsT0FBTyxFQUdOO0lBRUQsSUFBSSxLQUE2QixFQUFFLEVBRWxDO0lBRUQsMkVBQTJFO0lBQzNFLDBFQUEwRTtJQUMxRSx5RUFBeUU7SUFDekUsNEVBQTRFO0lBQzVFLHlCQUF5QjtJQUN6QixNQUFNUyxxQkFBcUJDLENBQUFBLEdBQUFBLE9BQUFBLE9BQUFBLEVBQVE7UUFDakMsSUFBSSxDQUFDaEIsU0FBUztZQUNaLE9BQU9EO1FBQ1Q7UUFFQSxJQUFJa0IsQ0FBQUEsR0FBQUEsWUFBQUEsVUFBQUEsRUFBV2xCLFFBQVE7WUFDckIsOEVBQThFO1lBQzlFLGtGQUFrRjtZQUNsRixJQUFJbUIsdUJBQXVCaEIsc0JBQXNCaUIsR0FBRyxDQUFDcEI7WUFDckQsSUFBSW1CLHlCQUF5QkUsV0FBVztnQkFDdEMsTUFBTUMsWUFBNEIsRUFBRTtnQkFDcENILHVCQUF1QkksUUFBUUMsT0FBTyxDQUFDeEIsT0FBT3lCLElBQUksQ0FBQyxDQUFDQztvQkFDbEQsSUFBSUEsV0FBV0osU0FBUyxLQUFLLE1BQU07d0JBQ2pDQSxVQUFVSyxJQUFJLElBQUlELFdBQVdKLFNBQVM7b0JBQ3hDO29CQUNBLE9BQU9JO2dCQUNUO2dCQUNBUCxxQkFBcUJTLFVBQVUsR0FBR047Z0JBRWxDbkIsc0JBQXNCMEIsR0FBRyxDQUFDN0IsT0FBT21CO1lBQ25DO1lBRUEsT0FBT0E7UUFDVDtRQUNBLE9BQU9uQjtJQUNULEdBQUc7UUFBQ0E7S0FBTTtJQUVWLE9BQU9rQixDQUFBQSxHQUFBQSxZQUFBQSxVQUFBQSxFQUFXRixzQkFDZGMsQ0FBQUEsR0FBQUEsT0FBQUEsR0FBQUEsRUFBSWQsc0JBQ0pBO0FBQ04iLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9zcmMvY2xpZW50L2NvbXBvbmVudHMvdXNlLWFjdGlvbi1xdWV1ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERpc3BhdGNoIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUmVhY3QsIHsgdXNlLCB1c2VNZW1vLCB1c2VPcHRpbWlzdGljIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBpc1RoZW5hYmxlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9pcy10aGVuYWJsZSdcbmltcG9ydCB0eXBlIHsgQXBwUm91dGVyQWN0aW9uUXVldWUgfSBmcm9tICcuL2FwcC1yb3V0ZXItaW5zdGFuY2UnXG5pbXBvcnQge1xuICBBQ1RJT05fUkVGUkVTSCxcbiAgdHlwZSBBcHBSb3V0ZXJTdGF0ZSxcbiAgdHlwZSBSZWR1Y2VyQWN0aW9ucyxcbiAgdHlwZSBSZWR1Y2VyU3RhdGUsXG59IGZyb20gJy4vcm91dGVyLXJlZHVjZXIvcm91dGVyLXJlZHVjZXItdHlwZXMnXG5cbi8vIFRoZSBhcHAgcm91dGVyIHN0YXRlIGxpdmVzIG91dHNpZGUgb2YgUmVhY3QsIHNvIHdlIGNhbiBpbXBvcnQgdGhlIGRpc3BhdGNoXG4vLyBtZXRob2QgZGlyZWN0bHkgd2hlcmV2ZXIgd2UgbmVlZCBpdCwgcmF0aGVyIHRoYW4gcGFzc2luZyBpdCBhcm91bmQgdmlhIHByb3BzXG4vLyBvciBjb250ZXh0LlxubGV0IGRpc3BhdGNoOiBEaXNwYXRjaDxSZWR1Y2VyQWN0aW9ucz4gfCBudWxsID0gbnVsbFxuXG4vKipcbiAqIENhbGxlZCB3aGVuIHRoZSBpbnN0YW50IG5hdmlnYXRpb24gdGVzdCBsb2NrIGlzIHJlbGVhc2VkLiBJZiB0aGUgcm91dGVyXG4gKiBpcyBpbml0aWFsaXplZCwgZGlzcGF0Y2hlcyBhIHNvZnQgcmVmcmVzaCB0byBmZXRjaCBkeW5hbWljIGRhdGEuIElmIG5vdFxuICogKGUuZy4gdGhlIGxvY2sgd2FzIHJlbGVhc2VkIGJlZm9yZSBoeWRyYXRpb24gZmluaXNoZWQpLCBmYWxscyBiYWNrIHRvIGFcbiAqIGhhcmQgcmVsb2FkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVmcmVzaE9uSW5zdGFudE5hdmlnYXRpb25VbmxvY2soKSB7XG4gIGlmIChwcm9jZXNzLmVudi5fX05FWFRfRVhQT1NFX1RFU1RJTkdfQVBJKSB7XG4gICAgaWYgKGRpc3BhdGNoICE9PSBudWxsKSB7XG4gICAgICBkaXNwYXRjaCh7IHR5cGU6IEFDVElPTl9SRUZSRVNILCBieXBhc3NDYWNoZUludmFsaWRhdGlvbjogdHJ1ZSB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKClcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BhdGNoQXBwUm91dGVyQWN0aW9uKGFjdGlvbjogUmVkdWNlckFjdGlvbnMpIHtcbiAgaWYgKGRpc3BhdGNoID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0ludGVybmFsIE5leHQuanMgZXJyb3I6IFJvdXRlciBhY3Rpb24gZGlzcGF0Y2hlZCBiZWZvcmUgaW5pdGlhbGl6YXRpb24uJ1xuICAgIClcbiAgfVxuICBkaXNwYXRjaChhY3Rpb24pXG59XG5cbi8vIE9wdGltaXN0aWMgc3RhdGUgc2V0dGVyIGZvciBleHBlcmltZW50YWxfZ2VzdHVyZVB1c2guIE9ubHkgc2hvdWxkIGJlIHVzZWRcbi8vIGR1cmluZyBhIGdlc3R1cmUgdHJhbnNpdGlvbi5cbmxldCBzZXRHZXN0dXJlUm91dGVyU3RhdGU6ICgoc3RhdGU6IFJlZHVjZXJTdGF0ZSkgPT4gdm9pZCkgfCBudWxsID0gbnVsbFxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGF0Y2hHZXN0dXJlU3RhdGUoc3RhdGU6IFJlZHVjZXJTdGF0ZSkge1xuICBpZiAoc2V0R2VzdHVyZVJvdXRlclN0YXRlID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0ludGVybmFsIE5leHQuanMgZXJyb3I6IFJvdXRlciBhY3Rpb24gZGlzcGF0Y2hlZCBiZWZvcmUgaW5pdGlhbGl6YXRpb24uJ1xuICAgIClcbiAgfVxuICBzZXRHZXN0dXJlUm91dGVyU3RhdGUoc3RhdGUpXG59XG5cbmNvbnN0IF9fREVWX18gPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nXG5jb25zdCBwcm9taXNlc1dpdGhEZWJ1Z0luZm86IFdlYWtNYXA8XG4gIFByb21pc2U8QXBwUm91dGVyU3RhdGU+LFxuICBQcm9taXNlPEFwcFJvdXRlclN0YXRlPiAmIHsgX2RlYnVnSW5mbz86IEFycmF5PHVua25vd24+IH1cbj4gPSBfX0RFVl9fID8gbmV3IFdlYWtNYXAoKSA6IChudWxsIGFzIGFueSlcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGlvblF1ZXVlKFxuICBhY3Rpb25RdWV1ZTogQXBwUm91dGVyQWN0aW9uUXVldWVcbik6IEFwcFJvdXRlclN0YXRlIHtcbiAgY29uc3QgW2Nhbm9uaWNhbFN0YXRlLCBzZXRTdGF0ZV0gPSBSZWFjdC51c2VTdGF0ZTxSZWR1Y2VyU3RhdGU+KFxuICAgIGFjdGlvblF1ZXVlLnN0YXRlXG4gIClcblxuICAvLyBXcmFwIHRoZSBjYW5vbmljYWwgc3RhdGUgaW4gdXNlT3B0aW1pc3RpYyB0byBzdXBwb3J0XG4gIC8vIGV4cGVyaW1lbnRhbF9nZXN0dXJlUHVzaC4gRHVyaW5nIGEgZ2VzdHVyZSB0cmFuc2l0aW9uLCB0aGlzIHJldHVybnMgYSBmb3JrXG4gIC8vIG9mIHRoZSByb3V0ZXIgc3RhdGUgdGhhdCByZXByZXNlbnRzIHRoZSBldmVudHVhbCB0YXJnZXQgaWYvd2hlbiB0aGUgZ2VzdHVyZVxuICAvLyBjb21wbGV0ZXMuIE90aGVyd2lzZSBpdCByZXR1cm5zIHRoZSBjYW5vbmljYWwgc3RhdGUuXG4gIGNvbnN0IFtzdGF0ZSwgc2V0R2VzdHVyZV0gPSB1c2VPcHRpbWlzdGljKGNhbm9uaWNhbFN0YXRlKVxuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBzZXRHZXN0dXJlUm91dGVyU3RhdGUgPSBzZXRHZXN0dXJlXG4gIH1cblxuICAvLyBCZWNhdXNlIG9mIGEga25vd24gaXNzdWUgdGhhdCByZXF1aXJlcyB0byBkZWNvZGUgRmxpZ2h0IHN0cmVhbXMgaW5zaWRlIHRoZVxuICAvLyByZW5kZXIgcGhhc2UsIHdlIGhhdmUgdG8gYmUgYSBiaXQgY2xldmVyIGFuZCBhc3NpZ24gdGhlIGRpc3BhdGNoIG1ldGhvZCB0b1xuICAvLyBhIG1vZHVsZS1sZXZlbCB2YXJpYWJsZSB1cG9uIGluaXRpYWxpemF0aW9uLiBUaGUgdXNlU3RhdGUgaG9vayBpbiB0aGlzXG4gIC8vIG1vZHVsZSBvbmx5IGV4aXN0cyB0byBzeW5jaHJvbml6ZSBzdGF0ZSB0aGF0IGxpdmVzIG91dHNpZGUgb2YgUmVhY3QuXG4gIC8vIElkZWFsbHksIHdoYXQgd2UnZCBkbyBpbnN0ZWFkIGlzIHBhc3MgdGhlIHN0YXRlIGFzIGEgcHJvcCB0byByb290LnJlbmRlcjtcbiAgLy8gdGhpcyBpcyBjb25jZXB0dWFsbHkgaG93IHdlJ3JlIG1vZGVsaW5nIHRoZSBhcHAgcm91dGVyIHN0YXRlLCBkZXNwaXRlIHRoZVxuICAvLyB3ZWlyZCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuICBsZXQgbmV4dERpc3BhdGNoOiBEaXNwYXRjaDxSZWR1Y2VyQWN0aW9ucz5cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGNvbnN0IHsgdXNlQXBwRGV2UmVuZGVyaW5nSW5kaWNhdG9yIH0gPVxuICAgICAgcmVxdWlyZSgnLi4vLi4vbmV4dC1kZXZ0b29scy91c2Vyc3BhY2UvdXNlLWFwcC1kZXYtcmVuZGVyaW5nLWluZGljYXRvcicpIGFzIHR5cGVvZiBpbXBvcnQoJy4uLy4uL25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL3VzZS1hcHAtZGV2LXJlbmRlcmluZy1pbmRpY2F0b3InKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICAgIGNvbnN0IGFwcERldlJlbmRlcmluZ0luZGljYXRvciA9IHVzZUFwcERldlJlbmRlcmluZ0luZGljYXRvcigpXG5cbiAgICBuZXh0RGlzcGF0Y2ggPSAoYWN0aW9uOiBSZWR1Y2VyQWN0aW9ucykgPT4ge1xuICAgICAgYXBwRGV2UmVuZGVyaW5nSW5kaWNhdG9yKCgpID0+IHtcbiAgICAgICAgYWN0aW9uUXVldWUuZGlzcGF0Y2goYWN0aW9uLCBzZXRTdGF0ZSlcbiAgICAgIH0pXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG5leHREaXNwYXRjaCA9IChhY3Rpb246IFJlZHVjZXJBY3Rpb25zKSA9PlxuICAgICAgYWN0aW9uUXVldWUuZGlzcGF0Y2goYWN0aW9uLCBzZXRTdGF0ZSlcbiAgfVxuXG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgIGRpc3BhdGNoID0gbmV4dERpc3BhdGNoXG4gIH1cblxuICAvLyBXaGVuIG5hdmlnYXRpbmcgdG8gYSBub24tcHJlZmV0Y2hlZCByb3V0ZSwgdGhlbiBBcHAgUm91dGVyIHN0YXRlIHdpbGwgYmVcbiAgLy8gYmxvY2tlZCB1bnRpbCB0aGUgc2VydmVyIHJlc3BvbmRzLiBXZSBuZWVkIHRvIHRyYW5zZmVyIHRoZSBgX2RlYnVnSW5mb2BcbiAgLy8gZnJvbSB0aGUgdW5kZXJseWluZyBGbGlnaHQgcmVzcG9uc2Ugb250byB0aGUgdG9wLWxldmVsIHByb21pc2UgdGhhdCBpc1xuICAvLyBwYXNzZWQgdG8gUmVhY3QgKHZpYSBgdXNlYCkgc28gdGhhdCB0aGUgbGF0ZW5jeSBpcyBhY2N1cmF0ZWx5IHJlcHJlc2VudGVkXG4gIC8vIGluIHRoZSBSZWFjdCBEZXZUb29scy5cbiAgY29uc3Qgc3RhdGVXaXRoRGVidWdJbmZvID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFfX0RFVl9fKSB7XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9XG5cbiAgICBpZiAoaXNUaGVuYWJsZShzdGF0ZSkpIHtcbiAgICAgIC8vIHVzZU1lbW8gY2FuJ3QgYmUgdXNlZCB0byBjYWNoZSBhIFByb21pc2Ugc2luY2UgdGhlIG1lbW9pemVkIHZhbHVlIGlzIHRocm93blxuICAgICAgLy8gYXdheSB3aGVuIHdlIHN1c3BlbmQuIFNvIHdlIHVzZSBhIFdlYWtNYXAgdG8gY2FjaGUgdGhlIFByb21pc2Ugd2l0aCBkZWJ1ZyBpbmZvLlxuICAgICAgbGV0IHByb21pc2VXaXRoRGVidWdJbmZvID0gcHJvbWlzZXNXaXRoRGVidWdJbmZvLmdldChzdGF0ZSlcbiAgICAgIGlmIChwcm9taXNlV2l0aERlYnVnSW5mbyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGRlYnVnSW5mbzogQXJyYXk8dW5rbm93bj4gPSBbXVxuICAgICAgICBwcm9taXNlV2l0aERlYnVnSW5mbyA9IFByb21pc2UucmVzb2x2ZShzdGF0ZSkudGhlbigoYXN5bmNTdGF0ZSkgPT4ge1xuICAgICAgICAgIGlmIChhc3luY1N0YXRlLmRlYnVnSW5mbyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgZGVidWdJbmZvLnB1c2goLi4uYXN5bmNTdGF0ZS5kZWJ1Z0luZm8pXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBhc3luY1N0YXRlXG4gICAgICAgIH0pIGFzIFByb21pc2U8QXBwUm91dGVyU3RhdGU+ICYgeyBfZGVidWdJbmZvPzogQXJyYXk8dW5rbm93bj4gfVxuICAgICAgICBwcm9taXNlV2l0aERlYnVnSW5mby5fZGVidWdJbmZvID0gZGVidWdJbmZvXG5cbiAgICAgICAgcHJvbWlzZXNXaXRoRGVidWdJbmZvLnNldChzdGF0ZSwgcHJvbWlzZVdpdGhEZWJ1Z0luZm8pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcm9taXNlV2l0aERlYnVnSW5mb1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGVcbiAgfSwgW3N0YXRlXSlcblxuICByZXR1cm4gaXNUaGVuYWJsZShzdGF0ZVdpdGhEZWJ1Z0luZm8pXG4gICAgPyB1c2Uoc3RhdGVXaXRoRGVidWdJbmZvKVxuICAgIDogc3RhdGVXaXRoRGVidWdJbmZvXG59XG4iXSwibmFtZXMiOlsiZGlzcGF0Y2hBcHBSb3V0ZXJBY3Rpb24iLCJkaXNwYXRjaEdlc3R1cmVTdGF0ZSIsInJlZnJlc2hPbkluc3RhbnROYXZpZ2F0aW9uVW5sb2NrIiwidXNlQWN0aW9uUXVldWUiLCJkaXNwYXRjaCIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfRVhQT1NFX1RFU1RJTkdfQVBJIiwidHlwZSIsIkFDVElPTl9SRUZSRVNIIiwiYnlwYXNzQ2FjaGVJbnZhbGlkYXRpb24iLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInJlbG9hZCIsImFjdGlvbiIsIkVycm9yIiwic2V0R2VzdHVyZVJvdXRlclN0YXRlIiwic3RhdGUiLCJfX0RFVl9fIiwiTk9ERV9FTlYiLCJwcm9taXNlc1dpdGhEZWJ1Z0luZm8iLCJXZWFrTWFwIiwiYWN0aW9uUXVldWUiLCJjYW5vbmljYWxTdGF0ZSIsInNldFN0YXRlIiwiUmVhY3QiLCJ1c2VTdGF0ZSIsInNldEdlc3R1cmUiLCJ1c2VPcHRpbWlzdGljIiwibmV4dERpc3BhdGNoIiwidXNlQXBwRGV2UmVuZGVyaW5nSW5kaWNhdG9yIiwicmVxdWlyZSIsImFwcERldlJlbmRlcmluZ0luZGljYXRvciIsInN0YXRlV2l0aERlYnVnSW5mbyIsInVzZU1lbW8iLCJpc1RoZW5hYmxlIiwicHJvbWlzZVdpdGhEZWJ1Z0luZm8iLCJnZXQiLCJ1bmRlZmluZWQiLCJkZWJ1Z0luZm8iLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJhc3luY1N0YXRlIiwicHVzaCIsIl9kZWJ1Z0luZm8iLCJzZXQiLCJ1c2UiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/use-action-queue.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/dev/debug-channel.js":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/dev/debug-channel.js ***!
|
||
\************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createDebugChannel: function() {\n return createDebugChannel;\n },\n getOrCreateDebugChannelReadableWriterPair: function() {\n return getOrCreateDebugChannelReadableWriterPair;\n }\n});\nconst _approuterheaders = __webpack_require__(/*! ../components/app-router-headers */ \"(ssr)/./node_modules/next/dist/client/components/app-router-headers.js\");\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(ssr)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nconst pairs = new Map();\nfunction getOrCreateDebugChannelReadableWriterPair(requestId) {\n let pair = pairs.get(requestId);\n if (!pair) {\n const { readable, writable } = new TransformStream();\n pair = {\n readable,\n writer: writable.getWriter()\n };\n pairs.set(requestId, pair);\n pair.writer.closed.finally(()=>pairs.delete(requestId));\n }\n return pair;\n}\nfunction createDebugChannel(requestHeaders) {\n let requestId;\n if (requestHeaders) {\n requestId = requestHeaders[_approuterheaders.NEXT_REQUEST_ID_HEADER] ?? undefined;\n if (!requestId) {\n throw Object.defineProperty(new _invarianterror.InvariantError(`Expected a ${JSON.stringify(_approuterheaders.NEXT_REQUEST_ID_HEADER)} request header.`), \"__NEXT_ERROR_CODE\", {\n value: \"E854\",\n enumerable: false,\n configurable: true\n });\n }\n } else {\n requestId = self.__next_r;\n if (!requestId) {\n throw Object.defineProperty(new _invarianterror.InvariantError(`Expected a request ID to be defined for the document via self.__next_r.`), \"__NEXT_ERROR_CODE\", {\n value: \"E806\",\n enumerable: false,\n configurable: true\n });\n }\n }\n const { readable } = getOrCreateDebugChannelReadableWriterPair(requestId);\n return {\n readable\n };\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=debug-channel.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZGVidWctY2hhbm5lbC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUF5QmdCQSxrQkFBa0I7ZUFBbEJBOztJQWZBQyx5Q0FBeUM7ZUFBekNBOzs7OENBVnVCOzRDQUNSO0FBTy9CLE1BQU1DLFFBQVEsSUFBSUM7QUFFWCxTQUFTRiwwQ0FDZEcsU0FBaUI7SUFFakIsSUFBSUMsT0FBT0gsTUFBTUksR0FBRyxDQUFDRjtJQUVyQixJQUFJLENBQUNDLE1BQU07UUFDVCxNQUFNLEVBQUVFLFFBQVEsRUFBRUMsUUFBUSxFQUFFLEdBQUcsSUFBSUM7UUFDbkNKLE9BQU87WUFBRUU7WUFBVUcsUUFBUUYsU0FBU0csU0FBUztRQUFHO1FBQ2hEVCxNQUFNVSxHQUFHLENBQUNSLFdBQVdDO1FBQ3JCQSxLQUFLSyxNQUFNLENBQUNHLE1BQU0sQ0FBQ0MsT0FBTyxDQUFDLElBQU1aLE1BQU1hLE1BQU0sQ0FBQ1g7SUFDaEQ7SUFFQSxPQUFPQztBQUNUO0FBRU8sU0FBU0wsbUJBQ2RnQixjQUFrRDtJQUtsRCxJQUFJWjtJQUVKLElBQUlZLGdCQUFnQjtRQUNsQlosWUFBWVksY0FBYyxDQUFDQyxrQkFBQUEsc0JBQXNCLENBQUMsSUFBSUM7UUFFdEQsSUFBSSxDQUFDZCxXQUFXO1lBQ2QsTUFBTSxxQkFFTCxDQUZLLElBQUllLGdCQUFBQSxjQUFjLENBQ3RCLENBQUMsV0FBVyxFQUFFQyxLQUFLQyxTQUFTLENBQUNKLGtCQUFBQSxzQkFBc0IsRUFBRSxnQkFBZ0IsQ0FBQyxHQURsRTt1QkFBQTs0QkFBQTs4QkFBQTtZQUVOO1FBQ0Y7SUFDRixPQUFPO1FBQ0xiLFlBQVlrQixLQUFLQyxRQUFRO1FBRXpCLElBQUksQ0FBQ25CLFdBQVc7WUFDZCxNQUFNLHFCQUVMLENBRkssSUFBSWUsZ0JBQUFBLGNBQWMsQ0FDdEIsQ0FBQyx1RUFBdUUsQ0FBQyxHQURyRTt1QkFBQTs0QkFBQTs4QkFBQTtZQUVOO1FBQ0Y7SUFDRjtJQUVBLE1BQU0sRUFBRVosUUFBUSxFQUFFLEdBQUdOLDBDQUEwQ0c7SUFFL0QsT0FBTztRQUFFRztJQUFTO0FBQ3BCIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL2NsaWVudC9kZXYvZGVidWctY2hhbm5lbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBORVhUX1JFUVVFU1RfSURfSEVBREVSIH0gZnJvbSAnLi4vY29tcG9uZW50cy9hcHAtcm91dGVyLWhlYWRlcnMnXG5pbXBvcnQgeyBJbnZhcmlhbnRFcnJvciB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvaW52YXJpYW50LWVycm9yJ1xuXG5leHBvcnQgaW50ZXJmYWNlIERlYnVnQ2hhbm5lbFJlYWRhYmxlV3JpdGVyUGFpciB7XG4gIHJlYWRvbmx5IHJlYWRhYmxlOiBSZWFkYWJsZVN0cmVhbTxVaW50OEFycmF5PlxuICByZWFkb25seSB3cml0ZXI6IFdyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlcjxVaW50OEFycmF5PlxufVxuXG5jb25zdCBwYWlycyA9IG5ldyBNYXA8c3RyaW5nLCBEZWJ1Z0NoYW5uZWxSZWFkYWJsZVdyaXRlclBhaXI+KClcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9yQ3JlYXRlRGVidWdDaGFubmVsUmVhZGFibGVXcml0ZXJQYWlyKFxuICByZXF1ZXN0SWQ6IHN0cmluZ1xuKTogRGVidWdDaGFubmVsUmVhZGFibGVXcml0ZXJQYWlyIHtcbiAgbGV0IHBhaXIgPSBwYWlycy5nZXQocmVxdWVzdElkKVxuXG4gIGlmICghcGFpcikge1xuICAgIGNvbnN0IHsgcmVhZGFibGUsIHdyaXRhYmxlIH0gPSBuZXcgVHJhbnNmb3JtU3RyZWFtPFVpbnQ4QXJyYXksIFVpbnQ4QXJyYXk+KClcbiAgICBwYWlyID0geyByZWFkYWJsZSwgd3JpdGVyOiB3cml0YWJsZS5nZXRXcml0ZXIoKSB9XG4gICAgcGFpcnMuc2V0KHJlcXVlc3RJZCwgcGFpcilcbiAgICBwYWlyLndyaXRlci5jbG9zZWQuZmluYWxseSgoKSA9PiBwYWlycy5kZWxldGUocmVxdWVzdElkKSlcbiAgfVxuXG4gIHJldHVybiBwYWlyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWJ1Z0NoYW5uZWwoXG4gIHJlcXVlc3RIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkXG4pOiB7XG4gIHdyaXRhYmxlPzogV3JpdGFibGVTdHJlYW1cbiAgcmVhZGFibGU/OiBSZWFkYWJsZVN0cmVhbVxufSB7XG4gIGxldCByZXF1ZXN0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuXG4gIGlmIChyZXF1ZXN0SGVhZGVycykge1xuICAgIHJlcXVlc3RJZCA9IHJlcXVlc3RIZWFkZXJzW05FWFRfUkVRVUVTVF9JRF9IRUFERVJdID8/IHVuZGVmaW5lZFxuXG4gICAgaWYgKCFyZXF1ZXN0SWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhcmlhbnRFcnJvcihcbiAgICAgICAgYEV4cGVjdGVkIGEgJHtKU09OLnN0cmluZ2lmeShORVhUX1JFUVVFU1RfSURfSEVBREVSKX0gcmVxdWVzdCBoZWFkZXIuYFxuICAgICAgKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXF1ZXN0SWQgPSBzZWxmLl9fbmV4dF9yXG5cbiAgICBpZiAoIXJlcXVlc3RJZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFyaWFudEVycm9yKFxuICAgICAgICBgRXhwZWN0ZWQgYSByZXF1ZXN0IElEIHRvIGJlIGRlZmluZWQgZm9yIHRoZSBkb2N1bWVudCB2aWEgc2VsZi5fX25leHRfci5gXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgY29uc3QgeyByZWFkYWJsZSB9ID0gZ2V0T3JDcmVhdGVEZWJ1Z0NoYW5uZWxSZWFkYWJsZVdyaXRlclBhaXIocmVxdWVzdElkKVxuXG4gIHJldHVybiB7IHJlYWRhYmxlIH1cbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVEZWJ1Z0NoYW5uZWwiLCJnZXRPckNyZWF0ZURlYnVnQ2hhbm5lbFJlYWRhYmxlV3JpdGVyUGFpciIsInBhaXJzIiwiTWFwIiwicmVxdWVzdElkIiwicGFpciIsImdldCIsInJlYWRhYmxlIiwid3JpdGFibGUiLCJUcmFuc2Zvcm1TdHJlYW0iLCJ3cml0ZXIiLCJnZXRXcml0ZXIiLCJzZXQiLCJjbG9zZWQiLCJmaW5hbGx5IiwiZGVsZXRlIiwicmVxdWVzdEhlYWRlcnMiLCJORVhUX1JFUVVFU1RfSURfSEVBREVSIiwidW5kZWZpbmVkIiwiSW52YXJpYW50RXJyb3IiLCJKU09OIiwic3RyaW5naWZ5Iiwic2VsZiIsIl9fbmV4dF9yIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/dev/debug-channel.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/dev/hot-reloader/app/hot-reloader-app.js":
|
||
/*!********************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/dev/hot-reloader/app/hot-reloader-app.js ***!
|
||
\********************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/* module decorator */ module = __webpack_require__.nmd(module);\n/// <reference types=\"webpack/module.d.ts\" />\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n default: function() {\n return HotReload;\n },\n performFullReload: function() {\n return performFullReload;\n },\n processMessage: function() {\n return processMessage;\n },\n waitForWebpackRuntimeHotUpdate: function() {\n return waitForWebpackRuntimeHotUpdate;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nconst _stripansi = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! next/dist/compiled/strip-ansi */ \"(ssr)/./node_modules/next/dist/compiled/strip-ansi/index.js\"));\nconst _formatwebpackmessages = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../../../../shared/lib/format-webpack-messages */ \"(ssr)/./node_modules/next/dist/shared/lib/format-webpack-messages.js\"));\nconst _shared = __webpack_require__(/*! ../shared */ \"(ssr)/./node_modules/next/dist/client/dev/hot-reloader/shared.js\");\nconst _nextdevtools = __webpack_require__(/*! next/dist/compiled/next-devtools */ \"(ssr)/./node_modules/next/dist/next-devtools/dev-overlay.shim.js\");\nconst _replayssronlyerrors = __webpack_require__(/*! ../../../../next-devtools/userspace/app/errors/replay-ssr-only-errors */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/replay-ssr-only-errors.js\");\nconst _appdevoverlayerrorboundary = __webpack_require__(/*! ../../../../next-devtools/userspace/app/app-dev-overlay-error-boundary */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/app-dev-overlay-error-boundary.js\");\nconst _useerrorhandler = __webpack_require__(/*! ../../../../next-devtools/userspace/app/errors/use-error-handler */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/use-error-handler.js\");\nconst _runtimeerrorhandler = __webpack_require__(/*! ../../runtime-error-handler */ \"(ssr)/./node_modules/next/dist/client/dev/runtime-error-handler.js\");\nconst _websocket = __webpack_require__(/*! ./web-socket */ \"(ssr)/./node_modules/next/dist/client/dev/hot-reloader/app/web-socket.js\");\nconst _hotreloadertypes = __webpack_require__(/*! ../../../../server/dev/hot-reloader-types */ \"(ssr)/./node_modules/next/dist/server/dev/hot-reloader-types.js\");\nconst _navigationuntracked = __webpack_require__(/*! ../../../components/navigation-untracked */ \"(ssr)/./node_modules/next/dist/client/components/navigation-untracked.js\");\nconst _reporthmrlatency = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../../report-hmr-latency */ \"(ssr)/./node_modules/next/dist/client/dev/report-hmr-latency.js\"));\nconst _turbopackhotreloadercommon = __webpack_require__(/*! ../turbopack-hot-reloader-common */ \"(ssr)/./node_modules/next/dist/client/dev/hot-reloader/turbopack-hot-reloader-common.js\");\nconst _approuterheaders = __webpack_require__(/*! ../../../components/app-router-headers */ \"(ssr)/./node_modules/next/dist/client/components/app-router-headers.js\");\nconst _approuterinstance = __webpack_require__(/*! ../../../components/app-router-instance */ \"(ssr)/./node_modules/next/dist/client/components/app-router-instance.js\");\nconst _invarianterror = __webpack_require__(/*! ../../../../shared/lib/invariant-error */ \"(ssr)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nconst _debugchannel = __webpack_require__(/*! ../../debug-channel */ \"(ssr)/./node_modules/next/dist/client/dev/debug-channel.js\");\nconst _client = __webpack_require__(/*! react-server-dom-webpack/client */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-webpack-client.js\");\nconst _appfindsourcemapurl = __webpack_require__(/*! ../../../app-find-source-map-url */ \"(ssr)/./node_modules/next/dist/client/app-find-source-map-url.js\");\nconst createFromReadableStream = _client.createFromReadableStream;\nlet mostRecentCompilationHash = null;\nlet __nextDevClientId = Math.round(Math.random() * 100 + Date.now());\nlet reloading = false;\nlet webpackStartMsSinceEpoch = null;\nconst turbopackHmr = false ? 0 : null;\nlet pendingHotUpdateWebpack = Promise.resolve();\nlet resolvePendingHotUpdateWebpack = ()=>{};\nfunction setPendingHotUpdateWebpack() {\n pendingHotUpdateWebpack = new Promise((resolve)=>{\n resolvePendingHotUpdateWebpack = ()=>{\n resolve();\n };\n });\n}\nfunction waitForWebpackRuntimeHotUpdate() {\n return pendingHotUpdateWebpack;\n}\n// There is a newer version of the code available.\nfunction handleAvailableHash(hash) {\n // Update last known compilation hash.\n mostRecentCompilationHash = hash;\n}\n/**\n * Is there a newer version of this code available?\n * For webpack: Check if the hash changed compared to __webpack_hash__\n * For Turbopack: Always true because it doesn't have __webpack_hash__\n */ function isUpdateAvailable() {\n if (false) {}\n /* globals __webpack_hash__ */ // __webpack_hash__ is the hash of the current compilation.\n // It's a global variable injected by Webpack.\n return mostRecentCompilationHash !== __webpack_require__.h();\n}\n// Webpack disallows updates in other states.\nfunction canApplyUpdates() {\n return module.hot.status() === 'idle';\n}\nfunction afterApplyUpdates(fn) {\n if (canApplyUpdates()) {\n fn();\n } else {\n function handler(status) {\n if (status === 'idle') {\n module.hot.removeStatusHandler(handler);\n fn();\n }\n }\n module.hot.addStatusHandler(handler);\n }\n}\nfunction performFullReload(err, sendMessage) {\n const stackTrace = err && (err.stack && err.stack.split('\\n').slice(0, 5).join('\\n') || err.message || err + '');\n sendMessage(JSON.stringify({\n event: 'client-full-reload',\n stackTrace,\n hadRuntimeError: !!_runtimeerrorhandler.RuntimeErrorHandler.hadRuntimeError,\n dependencyChain: err ? err.dependencyChain : undefined\n }));\n if (reloading) return;\n reloading = true;\n window.location.reload();\n}\n// Attempt to update code on the fly, fall back to a hard reload.\nfunction tryApplyUpdatesWebpack(sendMessage) {\n if (!isUpdateAvailable() || !canApplyUpdates()) {\n resolvePendingHotUpdateWebpack();\n _nextdevtools.dispatcher.onBuildOk();\n (0, _reporthmrlatency.default)(sendMessage, [], webpackStartMsSinceEpoch, Date.now());\n return;\n }\n function handleApplyUpdates(err, updatedModules) {\n if (err || _runtimeerrorhandler.RuntimeErrorHandler.hadRuntimeError || updatedModules == null) {\n if (err) {\n console.warn(_shared.REACT_REFRESH_FULL_RELOAD);\n } else if (_runtimeerrorhandler.RuntimeErrorHandler.hadRuntimeError) {\n console.warn(_shared.REACT_REFRESH_FULL_RELOAD_FROM_ERROR);\n }\n performFullReload(err, sendMessage);\n return;\n }\n _nextdevtools.dispatcher.onBuildOk();\n if (isUpdateAvailable()) {\n // While we were updating, there was a new update! Do it again.\n tryApplyUpdatesWebpack(sendMessage);\n return;\n }\n _nextdevtools.dispatcher.onRefresh();\n resolvePendingHotUpdateWebpack();\n (0, _reporthmrlatency.default)(sendMessage, updatedModules, webpackStartMsSinceEpoch, Date.now());\n if (false) {}\n }\n // https://webpack.js.org/api/hot-module-replacement/#check\n module.hot.check(/* autoApply */ false).then((updatedModules)=>{\n if (updatedModules == null) {\n return null;\n }\n // We should always handle an update, even if updatedModules is empty (but\n // non-null) for any reason. That's what webpack would normally do:\n // https://github.com/webpack/webpack/blob/3aa6b6bc3a64/lib/hmr/HotModuleReplacement.runtime.js#L296-L298\n _nextdevtools.dispatcher.onBeforeRefresh();\n // https://webpack.js.org/api/hot-module-replacement/#apply\n return module.hot.apply();\n }).then((updatedModules)=>{\n handleApplyUpdates(null, updatedModules);\n }, (err)=>{\n handleApplyUpdates(err, null);\n });\n}\nfunction processMessage(message, sendMessage, processTurbopackMessage, staticIndicatorState) {\n function handleErrors(errors) {\n // \"Massage\" webpack messages.\n const formatted = (0, _formatwebpackmessages.default)({\n errors: errors,\n warnings: []\n });\n // Only show the first error.\n _nextdevtools.dispatcher.onBuildError(formatted.errors[0]);\n // Also log them to the console.\n for(let i = 0; i < formatted.errors.length; i++){\n console.error((0, _stripansi.default)(formatted.errors[i]));\n }\n // Do not attempt to reload now.\n // We will reload on next success instead.\n if (false) {}\n }\n function handleHotUpdate() {\n if (false) {} else {\n tryApplyUpdatesWebpack(sendMessage);\n }\n }\n switch(message.type){\n case _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.ISR_MANIFEST:\n {\n if (true) {\n staticIndicatorState.appIsrManifest = message.data;\n // Handle the initial static indicator status on receiving the ISR\n // manifest. Navigation is handled in an effect inside HotReload for\n // pathname changes as we'll receive the updated manifest before\n // usePathname triggers for a new value.\n const isStatic = staticIndicatorState.pathname ? message.data[staticIndicatorState.pathname] : undefined;\n _nextdevtools.dispatcher.onStaticIndicator(isStatic === undefined ? 'pending' : isStatic ? 'static' : 'dynamic');\n }\n break;\n }\n case _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.BUILDING:\n {\n _nextdevtools.dispatcher.buildingIndicatorShow();\n if (false) {} else {\n webpackStartMsSinceEpoch = Date.now();\n setPendingHotUpdateWebpack();\n console.log('[Fast Refresh] rebuilding');\n }\n break;\n }\n case _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.BUILT:\n case _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.SYNC:\n {\n _nextdevtools.dispatcher.buildingIndicatorHide();\n if (message.hash) {\n handleAvailableHash(message.hash);\n }\n const { errors, warnings } = message;\n // Is undefined when it's a 'built' event\n if ('versionInfo' in message) _nextdevtools.dispatcher.onVersionInfo(message.versionInfo);\n if ('debug' in message && message.debug) _nextdevtools.dispatcher.onDebugInfo(message.debug);\n if ('devIndicator' in message) _nextdevtools.dispatcher.onDevIndicator(message.devIndicator);\n if ('devToolsConfig' in message) _nextdevtools.dispatcher.onDevToolsConfig(message.devToolsConfig);\n const hasErrors = Boolean(errors && errors.length);\n // Compilation with errors (e.g. syntax error or missing modules).\n if (hasErrors) {\n sendMessage(JSON.stringify({\n event: 'client-error',\n errorCount: errors.length,\n clientId: __nextDevClientId\n }));\n handleErrors(errors);\n return;\n }\n const hasWarnings = Boolean(warnings && warnings.length);\n if (hasWarnings) {\n sendMessage(JSON.stringify({\n event: 'client-warning',\n warningCount: warnings.length,\n clientId: __nextDevClientId\n }));\n // Print warnings to the console.\n const formattedMessages = (0, _formatwebpackmessages.default)({\n warnings: warnings,\n errors: []\n });\n for(let i = 0; i < formattedMessages.warnings.length; i++){\n if (i === 5) {\n console.warn('There were more warnings in other files.\\n' + 'You can find a complete log in the terminal.');\n break;\n }\n console.warn((0, _stripansi.default)(formattedMessages.warnings[i]));\n }\n // No early return here as we need to apply modules in the same way between warnings only and compiles without warnings\n }\n sendMessage(JSON.stringify({\n event: 'client-success',\n clientId: __nextDevClientId\n }));\n if (message.type === _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.BUILT) {\n handleHotUpdate();\n }\n return;\n }\n case _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.TURBOPACK_CONNECTED:\n {\n processTurbopackMessage({\n type: _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.TURBOPACK_CONNECTED,\n data: {\n sessionId: message.data.sessionId\n }\n });\n break;\n }\n case _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.TURBOPACK_MESSAGE:\n {\n turbopackHmr.onTurbopackMessage(message);\n _nextdevtools.dispatcher.onBeforeRefresh();\n processTurbopackMessage({\n type: _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.TURBOPACK_MESSAGE,\n data: message.data\n });\n if (_runtimeerrorhandler.RuntimeErrorHandler.hadRuntimeError) {\n console.warn(_shared.REACT_REFRESH_FULL_RELOAD_FROM_ERROR);\n performFullReload(null, sendMessage);\n }\n _nextdevtools.dispatcher.onRefresh();\n break;\n }\n // TODO-APP: make server component change more granular\n case _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.SERVER_COMPONENT_CHANGES:\n {\n turbopackHmr?.onServerComponentChanges();\n sendMessage(JSON.stringify({\n event: 'server-component-reload-page',\n clientId: __nextDevClientId,\n hash: message.hash\n }));\n // Store the latest hash in a session cookie so that it's sent back to the\n // server with any subsequent requests.\n document.cookie = `${_approuterheaders.NEXT_HMR_REFRESH_HASH_COOKIE}=${message.hash};path=/`;\n if (_runtimeerrorhandler.RuntimeErrorHandler.hadRuntimeError || document.documentElement.id === '__next_error__') {\n if (reloading) return;\n reloading = true;\n return window.location.reload();\n }\n (0, _react.startTransition)(()=>{\n _approuterinstance.publicAppRouterInstance.hmrRefresh();\n _nextdevtools.dispatcher.onRefresh();\n });\n if (false) {}\n return;\n }\n case _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.RELOAD_PAGE:\n {\n turbopackHmr?.onReloadPage();\n sendMessage(JSON.stringify({\n event: 'client-reload-page',\n clientId: __nextDevClientId\n }));\n if (reloading) return;\n reloading = true;\n return window.location.reload();\n }\n case _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.ADDED_PAGE:\n case _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.REMOVED_PAGE:\n {\n turbopackHmr?.onPageAddRemove();\n // TODO-APP: potentially only refresh if the currently viewed page was added/removed.\n return _approuterinstance.publicAppRouterInstance.hmrRefresh();\n }\n case _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.SERVER_ERROR:\n {\n const { errorJSON } = message;\n if (errorJSON) {\n const errorObject = JSON.parse(errorJSON);\n const error = Object.defineProperty(new Error(errorObject.message), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n error.stack = errorObject.stack;\n handleErrors([\n error\n ]);\n }\n return;\n }\n case _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.DEV_PAGES_MANIFEST_UPDATE:\n {\n return;\n }\n case _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.DEVTOOLS_CONFIG:\n {\n _nextdevtools.dispatcher.onDevToolsConfig(message.data);\n return;\n }\n case _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.REACT_DEBUG_CHUNK:\n {\n const { requestId, chunk } = message;\n const { writer } = (0, _debugchannel.getOrCreateDebugChannelReadableWriterPair)(requestId);\n if (chunk) {\n writer.ready.then(()=>writer.write(chunk)).catch(console.error);\n } else {\n // A null chunk signals that no more chunks will be sent, which allows\n // us to close the writer.\n // TODO: Revisit this cleanup logic when we integrate the return channel\n // that keeps the connection open to be able to lazily retrieve debug\n // objects.\n writer.ready.then(()=>writer.close()).catch(console.error);\n }\n return;\n }\n case _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.REQUEST_CURRENT_ERROR_STATE:\n {\n const errorState = (0, _nextdevtools.getSerializedOverlayState)();\n const response = {\n event: _hotreloadertypes.HMR_MESSAGE_SENT_TO_SERVER.MCP_ERROR_STATE_RESPONSE,\n requestId: message.requestId,\n errorState,\n url: window.location.href\n };\n sendMessage(JSON.stringify(response));\n return;\n }\n case _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.REQUEST_PAGE_METADATA:\n {\n const segmentTrieData = (0, _nextdevtools.getSegmentTrieData)();\n const response = {\n event: _hotreloadertypes.HMR_MESSAGE_SENT_TO_SERVER.MCP_PAGE_METADATA_RESPONSE,\n requestId: message.requestId,\n segmentTrieData,\n url: window.location.href\n };\n sendMessage(JSON.stringify(response));\n return;\n }\n case _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.CACHE_INDICATOR:\n {\n _nextdevtools.dispatcher.onCacheIndicator(message.state);\n return;\n }\n case _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.ERRORS_TO_SHOW_IN_BROWSER:\n {\n createFromReadableStream(new ReadableStream({\n start (controller) {\n controller.enqueue(message.serializedErrors);\n controller.close();\n }\n }), {\n findSourceMapURL: _appfindsourcemapurl.findSourceMapURL\n }).then(({ errors, errorCodes })=>{\n for (const error of errors){\n const code = errorCodes.get(error);\n if (code !== undefined) {\n Object.defineProperty(error, '__NEXT_ERROR_CODE', {\n value: code,\n enumerable: false,\n configurable: true\n });\n }\n console.error(error);\n }\n }, (err)=>{\n console.error(Object.defineProperty(new Error('Failed to deserialize errors.', {\n cause: err\n }), \"__NEXT_ERROR_CODE\", {\n value: \"E946\",\n enumerable: false,\n configurable: true\n }));\n });\n return;\n }\n case _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.MIDDLEWARE_CHANGES:\n case _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.CLIENT_CHANGES:\n case _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.SERVER_ONLY_CHANGES:\n break;\n default:\n {\n message;\n }\n }\n}\nfunction HotReload({ children, globalError, webSocket, staticIndicatorState }) {\n (0, _useerrorhandler.useErrorHandler)(_nextdevtools.dispatcher.onUnhandledError, _nextdevtools.dispatcher.onUnhandledRejection);\n (0, _websocket.useWebSocketPing)(webSocket);\n // We don't want access of the pathname for the dev tools to trigger a dynamic\n // access (as the dev overlay will never be present in production).\n const pathname = (0, _navigationuntracked.useUntrackedPathname)();\n if (true) {\n // this conditional is only for dead-code elimination which\n // isn't a runtime conditional only build-time so ignore hooks rule\n // eslint-disable-next-line react-hooks/rules-of-hooks\n (0, _react.useEffect)(()=>{\n if (!staticIndicatorState) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected staticIndicatorState to be defined in dev mode.'), \"__NEXT_ERROR_CODE\", {\n value: \"E786\",\n enumerable: false,\n configurable: true\n });\n }\n staticIndicatorState.pathname = pathname;\n if (staticIndicatorState.appIsrManifest) {\n const isStatic = pathname ? staticIndicatorState.appIsrManifest[pathname] : undefined;\n _nextdevtools.dispatcher.onStaticIndicator(isStatic === undefined ? 'pending' : isStatic ? 'static' : 'dynamic');\n }\n }, [\n pathname,\n staticIndicatorState\n ]);\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_appdevoverlayerrorboundary.AppDevOverlayErrorBoundary, {\n globalError: globalError,\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(_replayssronlyerrors.ReplaySsrOnlyErrors, {\n onBlockingError: _nextdevtools.dispatcher.openErrorOverlay\n }),\n children\n ]\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=hot-reloader-app.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvaG90LXJlbG9hZGVyL2FwcC9ob3QtcmVsb2FkZXItYXBwLmpzIiwibWFwcGluZ3MiOiI7QUFBQSw2Q0FBNkM7Ozs7Ozs7Ozs7Ozs7SUE4aUI3QyxPQWlEQztlQWpEdUJBOztJQTNiUkMsaUJBQWlCO2VBQWpCQTs7SUFvR0FDLGNBQWM7ZUFBZEE7O0lBaEpBQyw4QkFBOEI7ZUFBOUJBOzs7OzttQ0FwRTJCO2dGQUNyQjs0RkFDWTtvQ0FJM0I7MENBS0E7aURBQzZCO3dEQUNPOzZDQUNYO2lEQUNJO3VDQUNIOzhDQUkxQjtpREFPOEI7dUZBQ1I7d0RBQ0E7OENBQ2dCOytDQUl0Qzs0Q0FDd0I7MENBQzJCO29DQUdrQjtpREFDM0M7QUFPakMsTUFBTUMsMkJBQ0pDLFFBQUFBLHdCQUErQjtBQUVqQyxJQUFJQyw0QkFBaUM7QUFDckMsSUFBSUMsb0JBQW9CQyxLQUFLQyxLQUFLLENBQUNELEtBQUtFLE1BQU0sS0FBSyxNQUFNQyxLQUFLQyxHQUFHO0FBQ2pFLElBQUlDLFlBQVk7QUFDaEIsSUFBSUMsMkJBQTBDO0FBQzlDLE1BQU1DLGVBQW9DQyxNQUFxQixHQUMzRCxDQUFrQixHQUNsQjtBQUVKLElBQUlJLDBCQUEwQkMsUUFBUUMsT0FBTztBQUM3QyxJQUFJQyxpQ0FBNkMsS0FBTztBQUN4RCxTQUFTQztJQUNQSiwwQkFBMEIsSUFBSUMsUUFBUSxDQUFDQztRQUNyQ0MsaUNBQWlDO1lBQy9CRDtRQUNGO0lBQ0Y7QUFDRjtBQUVPLFNBQVNuQjtJQUNkLE9BQU9pQjtBQUNUO0FBRUEsa0RBQWtEO0FBQ2xELFNBQVNLLG9CQUFvQkMsSUFBWTtJQUN2QyxzQ0FBc0M7SUFDdENwQiw0QkFBNEJvQjtBQUM5QjtBQUVBOzs7O0NBSUMsR0FDRCxTQUFTQztJQUNQLElBQUlYLEtBQXFCLEVBQUUsRUFFMUI7SUFFRCw0QkFBNEIsR0FDNUIsMkRBQTJEO0lBQzNELDhDQUE4QztJQUM5QyxPQUFPViw4QkFB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QUEsaUJBQUFBLGVBQWUsRUFBQzFJLGNBQUFBLFVBQVUsQ0FBQzJJLGdCQUFnQixFQUFFM0ksY0FBQUEsVUFBVSxDQUFDNEksb0JBQW9CO0lBQzVFQyxDQUFBQSxHQUFBQSxXQUFBQSxnQkFBQUEsRUFBaUJKO0lBRWpCLDhFQUE4RTtJQUM5RSxtRUFBbUU7SUFDbkUsTUFBTS9GLFdBQVdvRyxDQUFBQSxHQUFBQSxxQkFBQUEsb0JBQUFBO0lBRWpCLElBQUl2TCxJQUFnQyxFQUFFO1FBQ3BDLDJEQUEyRDtRQUMzRCxtRUFBbUU7UUFDbkUsc0RBQXNEO1FBQ3REd0wsQ0FBQUEsR0FBQUEsT0FBQUEsU0FBQUEsRUFBVTtZQUNSLElBQUksQ0FBQzdILHNCQUFzQjtnQkFDekIsTUFBTSxxQkFFTCxDQUZLLElBQUk4SCxnQkFBQUEsY0FBYyxDQUN0Qiw2REFESTsyQkFBQTtnQ0FBQTtrQ0FBQTtnQkFFTjtZQUNGO1lBRUE5SCxxQkFBcUJ3QixRQUFRLEdBQUdBO1lBRWhDLElBQUl4QixxQkFBcUJxQixjQUFjLEVBQUU7Z0JBQ3ZDLE1BQU1FLFdBQVdDLFdBQ2J4QixxQkFBcUJxQixjQUFjLENBQUNHLFNBQVMsR0FDN0MvQztnQkFFSkssY0FBQUEsVUFBVSxDQUFDMkMsaUJBQWlCLENBQzFCRixhQUFhOUMsWUFBWSxZQUFZOEMsV0FBVyxXQUFXO1lBRS9EO1FBQ0YsR0FBRztZQUFDQztZQUFVeEI7U0FBcUI7SUFDckM7SUFFQSxxQkFDRSxzQkFBQytILDRCQUFBQSwwQkFBMEI7UUFBQ1QsYUFBYUE7OzBCQUN2QyxxQkFBQ1UscUJBQUFBLG1CQUFtQjtnQkFBQ0MsaUJBQWlCbkosY0FBQUEsVUFBVSxDQUFDb0osZ0JBQWdCOztZQUNoRWI7OztBQUdQIiwic291cmNlcyI6WyIvc3JjL2NsaWVudC9kZXYvaG90LXJlbG9hZGVyL2FwcC9ob3QtcmVsb2FkZXItYXBwLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSB0eXBlcz1cIndlYnBhY2svbW9kdWxlLmQudHNcIiAvPlxuXG5pbXBvcnQgdHlwZSB7IFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlRWZmZWN0LCBzdGFydFRyYW5zaXRpb24gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBzdHJpcEFuc2kgZnJvbSAnbmV4dC9kaXN0L2NvbXBpbGVkL3N0cmlwLWFuc2knXG5pbXBvcnQgZm9ybWF0V2VicGFja01lc3NhZ2VzIGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9saWIvZm9ybWF0LXdlYnBhY2stbWVzc2FnZXMnXG5pbXBvcnQge1xuICBSRUFDVF9SRUZSRVNIX0ZVTExfUkVMT0FELFxuICBSRUFDVF9SRUZSRVNIX0ZVTExfUkVMT0FEX0ZST01fRVJST1IsXG59IGZyb20gJy4uL3NoYXJlZCdcbmltcG9ydCB7XG4gIGRpc3BhdGNoZXIsXG4gIGdldFNlcmlhbGl6ZWRPdmVybGF5U3RhdGUsXG4gIGdldFNlZ21lbnRUcmllRGF0YSxcbn0gZnJvbSAnbmV4dC9kaXN0L2NvbXBpbGVkL25leHQtZGV2dG9vbHMnXG5pbXBvcnQgeyBSZXBsYXlTc3JPbmx5RXJyb3JzIH0gZnJvbSAnLi4vLi4vLi4vLi4vbmV4dC1kZXZ0b29scy91c2Vyc3BhY2UvYXBwL2Vycm9ycy9yZXBsYXktc3NyLW9ubHktZXJyb3JzJ1xuaW1wb3J0IHsgQXBwRGV2T3ZlcmxheUVycm9yQm91bmRhcnkgfSBmcm9tICcuLi8uLi8uLi8uLi9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS9hcHAvYXBwLWRldi1vdmVybGF5LWVycm9yLWJvdW5kYXJ5J1xuaW1wb3J0IHsgdXNlRXJyb3JIYW5kbGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vbmV4dC1kZXZ0b29scy91c2Vyc3BhY2UvYXBwL2Vycm9ycy91c2UtZXJyb3ItaGFuZGxlcidcbmltcG9ydCB7IFJ1bnRpbWVFcnJvckhhbmRsZXIgfSBmcm9tICcuLi8uLi9ydW50aW1lLWVycm9yLWhhbmRsZXInXG5pbXBvcnQgeyB1c2VXZWJTb2NrZXRQaW5nIH0gZnJvbSAnLi93ZWItc29ja2V0J1xuaW1wb3J0IHtcbiAgSE1SX01FU1NBR0VfU0VOVF9UT19CUk9XU0VSLFxuICBITVJfTUVTU0FHRV9TRU5UX1RPX1NFUlZFUixcbn0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmVyL2Rldi9ob3QtcmVsb2FkZXItdHlwZXMnXG5pbXBvcnQgdHlwZSB7XG4gIEhtck1lc3NhZ2VTZW50VG9Ccm93c2VyLFxuICBUdXJib3BhY2tNZXNzYWdlU2VudFRvQnJvd3Nlcixcbn0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmVyL2Rldi9ob3QtcmVsb2FkZXItdHlwZXMnXG5pbXBvcnQgdHlwZSB7IE1jcEVycm9yU3RhdGVSZXNwb25zZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9saWIvbWNwLWVycm9yLXR5cGVzJ1xuaW1wb3J0IHR5cGUgeyBNY3BQYWdlTWV0YWRhdGFSZXNwb25zZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9saWIvbWNwLXBhZ2UtbWV0YWRhdGEtdHlwZXMnXG5pbXBvcnQgeyB1c2VVbnRyYWNrZWRQYXRobmFtZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvbmF2aWdhdGlvbi11bnRyYWNrZWQnXG5pbXBvcnQgcmVwb3J0SG1yTGF0ZW5jeSBmcm9tICcuLi8uLi9yZXBvcnQtaG1yLWxhdGVuY3knXG5pbXBvcnQgeyBUdXJib3BhY2tIbXIgfSBmcm9tICcuLi90dXJib3BhY2staG90LXJlbG9hZGVyLWNvbW1vbidcbmltcG9ydCB7IE5FWFRfSE1SX1JFRlJFU0hfSEFTSF9DT09LSUUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2FwcC1yb3V0ZXItaGVhZGVycydcbmltcG9ydCB7XG4gIHB1YmxpY0FwcFJvdXRlckluc3RhbmNlLFxuICB0eXBlIEdsb2JhbEVycm9yU3RhdGUsXG59IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvYXBwLXJvdXRlci1pbnN0YW5jZSdcbmltcG9ydCB7IEludmFyaWFudEVycm9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2xpYi9pbnZhcmlhbnQtZXJyb3InXG5pbXBvcnQgeyBnZXRPckNyZWF0ZURlYnVnQ2hhbm5lbFJlYWRhYmxlV3JpdGVyUGFpciB9IGZyb20gJy4uLy4uL2RlYnVnLWNoYW5uZWwnXG4vLyBUT0RPOiBFeHBsaWNpdGx5IGltcG9ydCBmcm9tIGNsaWVudC5icm93c2VyIChkb2Vzbid0IHdvcmsgd2l0aCBXZWJwYWNrKS5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB7IGNyZWF0ZUZyb21SZWFkYWJsZVN0cmVhbSBhcyBjcmVhdGVGcm9tUmVhZGFibGVTdHJlYW1Ccm93c2VyIH0gZnJvbSAncmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrL2NsaWVudCdcbmltcG9ydCB7IGZpbmRTb3VyY2VNYXBVUkwgfSBmcm9tICcuLi8uLi8uLi9hcHAtZmluZC1zb3VyY2UtbWFwLXVybCdcblxuZXhwb3J0IGludGVyZmFjZSBTdGF0aWNJbmRpY2F0b3JTdGF0ZSB7XG4gIHBhdGhuYW1lOiBzdHJpbmcgfCBudWxsXG4gIGFwcElzck1hbmlmZXN0OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiB8IG51bGxcbn1cblxuY29uc3QgY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtID1cbiAgY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtQnJvd3NlciBhcyAodHlwZW9mIGltcG9ydCgncmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrL2NsaWVudC5icm93c2VyJykpWydjcmVhdGVGcm9tUmVhZGFibGVTdHJlYW0nXVxuXG5sZXQgbW9zdFJlY2VudENvbXBpbGF0aW9uSGFzaDogYW55ID0gbnVsbFxubGV0IF9fbmV4dERldkNsaWVudElkID0gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogMTAwICsgRGF0ZS5ub3coKSlcbmxldCByZWxvYWRpbmcgPSBmYWxzZVxubGV0IHdlYnBhY2tTdGFydE1zU2luY2VFcG9jaDogbnVtYmVyIHwgbnVsbCA9IG51bGxcbmNvbnN0IHR1cmJvcGFja0htcjogVHVyYm9wYWNrSG1yIHwgbnVsbCA9IHByb2Nlc3MuZW52LlRVUkJPUEFDS1xuICA/IG5ldyBUdXJib3BhY2tIbXIoKVxuICA6IG51bGxcblxubGV0IHBlbmRpbmdIb3RVcGRhdGVXZWJwYWNrID0gUHJvbWlzZS5yZXNvbHZlKClcbmxldCByZXNvbHZlUGVuZGluZ0hvdFVwZGF0ZVdlYnBhY2s6ICgpID0+IHZvaWQgPSAoKSA9PiB7fVxuZnVuY3Rpb24gc2V0UGVuZGluZ0hvdFVwZGF0ZVdlYnBhY2soKSB7XG4gIHBlbmRpbmdIb3RVcGRhdGVXZWJwYWNrID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICByZXNvbHZlUGVuZGluZ0hvdFVwZGF0ZVdlYnBhY2sgPSAoKSA9PiB7XG4gICAgICByZXNvbHZlKClcbiAgICB9XG4gIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3YWl0Rm9yV2VicGFja1J1bnRpbWVIb3RVcGRhdGUoKSB7XG4gIHJldHVybiBwZW5kaW5nSG90VXBkYXRlV2VicGFja1xufVxuXG4vLyBUaGVyZSBpcyBhIG5ld2VyIHZlcnNpb24gb2YgdGhlIGNvZGUgYXZhaWxhYmxlLlxuZnVuY3Rpb24gaGFuZGxlQXZhaWxhYmxlSGFzaChoYXNoOiBzdHJpbmcpIHtcbiAgLy8gVXBkYXRlIGxhc3Qga25vd24gY29tcGlsYXRpb24gaGFzaC5cbiAgbW9zdFJlY2VudENvbXBpbGF0aW9uSGFzaCA9IGhhc2hcbn1cblxuLyoqXG4gKiBJcyB0aGVyZSBhIG5ld2VyIHZlcnNpb24gb2YgdGhpcyBjb2RlIGF2YWlsYWJsZT9cbiAqIEZvciB3ZWJwYWNrOiBDaGVjayBpZiB0aGUgaGFzaCBjaGFuZ2VkIGNvbXBhcmVkIHRvIF9fd2VicGFja19oYXNoX19cbiAqIEZvciBUdXJib3BhY2s6IEFsd2F5cyB0cnVlIGJlY2F1c2UgaXQgZG9lc24ndCBoYXZlIF9fd2VicGFja19oYXNoX19cbiAqL1xuZnVuY3Rpb24gaXNVcGRhdGVBdmFpbGFibGUoKSB7XG4gIGlmIChwcm9jZXNzLmVudi5UVVJCT1BBQ0spIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLyogZ2xvYmFscyBfX3dlYnBhY2tfaGFzaF9fICovXG4gIC8vIF9fd2VicGFja19oYXNoX18gaXMgdGhlIGhhc2ggb2YgdGhlIGN1cnJlbnQgY29tcGlsYXRpb24uXG4gIC8vIEl0J3MgYSBnbG9iYWwgdmFyaWFibGUgaW5qZWN0ZWQgYnkgV2VicGFjay5cbiAgcmV0dXJuIG1vc3RSZWNlbnRDb21waWxhdGlvbkhhc2ggIT09IF9fd2VicGFja19oYXNoX19cbn1cblxuLy8gV2VicGFjayBkaXNhbGxvd3MgdXBkYXRlcyBpbiBvdGhlciBzdGF0ZXMuXG5mdW5jdGlvbiBjYW5BcHBseVVwZGF0ZXMoKSB7XG4gIHJldHVybiBtb2R1bGUuaG90LnN0YXR1cygpID09PSAnaWRsZSdcbn1cbmZ1bmN0aW9uIGFmdGVyQXBwbHlVcGRhdGVzKGZuOiBhbnkpIHtcbiAgaWYgKGNhbkFwcGx5VXBkYXRlcygpKSB7XG4gICAgZm4oKVxuICB9IGVsc2Uge1xuICAgIGZ1bmN0aW9uIGhhbmRsZXIoc3RhdHVzOiBhbnkpIHtcbiAgICAgIGlmIChzdGF0dXMgPT09ICdpZGxlJykge1xuICAgICAgICBtb2R1bGUuaG90LnJlbW92ZVN0YXR1c0hhbmRsZXIoaGFuZGxlcilcbiAgICAgICAgZm4oKVxuICAgICAgfVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFkZFN0YXR1c0hhbmRsZXIoaGFuZGxlcilcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGVyZm9ybUZ1bGxSZWxvYWQoXG4gIGVycjogYW55LFxuICBzZW5kTWVzc2FnZTogKGRhdGE6IHN0cmluZykgPT4gdm9pZFxuKSB7XG4gIGNvbnN0IHN0YWNrVHJhY2UgPVxuICAgIGVyciAmJlxuICAgICgoZXJyLnN0YWNrICYmIGVyci5zdGFjay5zcGxpdCgnXFxuJykuc2xpY2UoMCwgNSkuam9pbignXFxuJykpIHx8XG4gICAgICBlcnIubWVzc2FnZSB8fFxuICAgICAgZXJyICsgJycpXG5cbiAgc2VuZE1lc3NhZ2UoXG4gICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgZXZlbnQ6ICdjbGllbnQtZnVsbC1yZWxvYWQnLFxuICAgICAgc3RhY2tUcmFjZSxcbiAgICAgIGhhZFJ1bnRpbWVFcnJvcjogISFSdW50aW1lRXJyb3JIYW5kbGVyLmhhZFJ1bnRpbWVFcnJvcixcbiAgICAgIGRlcGVuZGVuY3lDaGFpbjogZXJyID8gZXJyLmRlcGVuZGVuY3lDaGFpbiA6IHVuZGVmaW5lZCxcbiAgICB9KVxuICApXG5cbiAgaWYgKHJlbG9hZGluZykgcmV0dXJuXG4gIHJlbG9hZGluZyA9IHRydWVcbiAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpXG59XG5cbi8vIEF0dGVtcHQgdG8gdXBkYXRlIGNvZGUgb24gdGhlIGZseSwgZmFsbCBiYWNrIHRvIGEgaGFyZCByZWxvYWQuXG5mdW5jdGlvbiB0cnlBcHBseVVwZGF0ZXNXZWJwYWNrKHNlbmRNZXNzYWdlOiAobWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkKSB7XG4gIGlmICghaXNVcGRhdGVBdmFpbGFibGUoKSB8fCAhY2FuQXBwbHlVcGRhdGVzKCkpIHtcbiAgICByZXNvbHZlUGVuZGluZ0hvdFVwZGF0ZVdlYnBhY2soKVxuICAgIGRpc3BhdGNoZXIub25CdWlsZE9rKClcbiAgICByZXBvcnRIbXJMYXRlbmN5KHNlbmRNZXNzYWdlLCBbXSwgd2VicGFja1N0YXJ0TXNTaW5jZUVwb2NoISwgRGF0ZS5ub3coKSlcbiAgICByZXR1cm5cbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUFwcGx5VXBkYXRlcyhcbiAgICBlcnI6IGFueSxcbiAgICB1cGRhdGVkTW9kdWxlczogKHN0cmluZyB8IG51bWJlcilbXSB8IG51bGxcbiAgKSB7XG4gICAgaWYgKGVyciB8fCBSdW50aW1lRXJyb3JIYW5kbGVyLmhhZFJ1bnRpbWVFcnJvciB8fCB1cGRhdGVkTW9kdWxlcyA9PSBudWxsKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihSRUFDVF9SRUZSRVNIX0ZVTExfUkVMT0FEKVxuICAgICAgfSBlbHNlIGlmIChSdW50aW1lRXJyb3JIYW5kbGVyLmhhZFJ1bnRpbWVFcnJvcikge1xuICAgICAgICBjb25zb2xlLndhcm4oUkVBQ1RfUkVGUkVTSF9GVUxMX1JFTE9BRF9GUk9NX0VSUk9SKVxuICAgICAgfVxuICAgICAgcGVyZm9ybUZ1bGxSZWxvYWQoZXJyLCBzZW5kTWVzc2FnZSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGRpc3BhdGNoZXIub25CdWlsZE9rKClcblxuICAgIGlmIChpc1VwZGF0ZUF2YWlsYWJsZSgpKSB7XG4gICAgICAvLyBXaGlsZSB3ZSB3ZXJlIHVwZGF0aW5nLCB0aGVyZSB3YXMgYSBuZXcgdXBkYXRlISBEbyBpdCBhZ2Fpbi5cbiAgICAgIHRyeUFwcGx5VXBkYXRlc1dlYnBhY2soc2VuZE1lc3NhZ2UpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBkaXNwYXRjaGVyLm9uUmVmcmVzaCgpXG4gICAgcmVzb2x2ZVBlbmRpbmdIb3RVcGRhdGVXZWJwYWNrKClcbiAgICByZXBvcnRIbXJMYXRlbmN5KFxuICAgICAgc2VuZE1lc3NhZ2UsXG4gICAgICB1cGRhdGVkTW9kdWxlcyxcbiAgICAgIHdlYnBhY2tTdGFydE1zU2luY2VFcG9jaCEsXG4gICAgICBEYXRlLm5vdygpXG4gICAgKVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9URVNUX01PREUpIHtcbiAgICAgIGFmdGVyQXBwbHlVcGRhdGVzKCgpID0+IHtcbiAgICAgICAgaWYgKHNlbGYuX19ORVhUX0hNUl9DQikge1xuICAgICAgICAgIHNlbGYuX19ORVhUX0hNUl9DQigpXG4gICAgICAgICAgc2VsZi5fX05FWFRfSE1SX0NCID0gbnVsbFxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8vIGh0dHBzOi8vd2VicGFjay5qcy5vcmcvYXBpL2hvdC1tb2R1bGUtcmVwbGFjZW1lbnQvI2NoZWNrXG4gIG1vZHVsZS5ob3RcbiAgICAuY2hlY2soLyogYXV0b0FwcGx5ICovIGZhbHNlKVxuICAgIC50aGVuKCh1cGRhdGVkTW9kdWxlczogKHN0cmluZyB8IG51bWJlcilbXSB8IG51bGwpID0+IHtcbiAgICAgIGlmICh1cGRhdGVkTW9kdWxlcyA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG5cbiAgICAgIC8vIFdlIHNob3VsZCBhbHdheXMgaGFuZGxlIGFuIHVwZGF0ZSwgZXZlbiBpZiB1cGRhdGVkTW9kdWxlcyBpcyBlbXB0eSAoYnV0XG4gICAgICAvLyBub24tbnVsbCkgZm9yIGFueSByZWFzb24uIFRoYXQncyB3aGF0IHdlYnBhY2sgd291bGQgbm9ybWFsbHkgZG86XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay93ZWJwYWNrL2Jsb2IvM2FhNmI2YmMzYTY0L2xpYi9obXIvSG90TW9kdWxlUmVwbGFjZW1lbnQucnVudGltZS5qcyNMMjk2LUwyOThcbiAgICAgIGRpc3BhdGNoZXIub25CZWZvcmVSZWZyZXNoKClcbiAgICAgIC8vIGh0dHBzOi8vd2VicGFjay5qcy5vcmcvYXBpL2hvdC1tb2R1bGUtcmVwbGFjZW1lbnQvI2FwcGx5XG4gICAgICByZXR1cm4gbW9kdWxlLmhvdC5hcHBseSgpXG4gICAgfSlcbiAgICAudGhlbihcbiAgICAgICh1cGRhdGVkTW9kdWxlczogKHN0cmluZyB8IG51bWJlcilbXSB8IG51bGwpID0+IHtcbiAgICAgICAgaGFuZGxlQXBwbHlVcGRhdGVzKG51bGwsIHVwZGF0ZWRNb2R1bGVzKVxuICAgICAgfSxcbiAgICAgIChlcnI6IGFueSkgPT4ge1xuICAgICAgICBoYW5kbGVBcHBseVVwZGF0ZXMoZXJyLCBudWxsKVxuICAgICAgfVxuICAgIClcbn1cblxuLyoqIEhhbmRsZXMgbWVzc2FnZXMgZnJvbSB0aGUgc2VydmVyIGZvciB0aGUgQXBwIFJvdXRlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzTWVzc2FnZShcbiAgbWVzc2FnZTogSG1yTWVzc2FnZVNlbnRUb0Jyb3dzZXIsXG4gIHNlbmRNZXNzYWdlOiAobWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkLFxuICBwcm9jZXNzVHVyYm9wYWNrTWVzc2FnZTogKG1zZzogVHVyYm9wYWNrTWVzc2FnZVNlbnRUb0Jyb3dzZXIpID0+IHZvaWQsXG4gIHN0YXRpY0luZGljYXRvclN0YXRlOiBTdGF0aWNJbmRpY2F0b3JTdGF0ZVxuKSB7XG4gIGZ1bmN0aW9uIGhhbmRsZUVycm9ycyhlcnJvcnM6IFJlYWRvbmx5QXJyYXk8dW5rbm93bj4pIHtcbiAgICAvLyBcIk1hc3NhZ2VcIiB3ZWJwYWNrIG1lc3NhZ2VzLlxuICAgIGNvbnN0IGZvcm1hdHRlZCA9IGZvcm1hdFdlYnBhY2tNZXNzYWdlcyh7XG4gICAgICBlcnJvcnM6IGVycm9ycyxcbiAgICAgIHdhcm5pbmdzOiBbXSxcbiAgICB9KVxuXG4gICAgLy8gT25seSBzaG93IHRoZSBmaXJzdCBlcnJvci5cbiAgICBkaXNwYXRjaGVyLm9uQnVpbGRFcnJvcihmb3JtYXR0ZWQuZXJyb3JzWzBdKVxuXG4gICAgLy8gQWxzbyBsb2cgdGhlbSB0byB0aGUgY29uc29sZS5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvcm1hdHRlZC5lcnJvcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnNvbGUuZXJyb3Ioc3RyaXBBbnNpKGZvcm1hdHRlZC5lcnJvcnNbaV0pKVxuICAgIH1cblxuICAgIC8vIERvIG5vdCBhdHRlbXB0IHRvIHJlbG9hZCBub3cuXG4gICAgLy8gV2Ugd2lsbCByZWxvYWQgb24gbmV4dCBzdWNjZXNzIGluc3RlYWQuXG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9URVNUX01PREUpIHtcbiAgICAgIGlmIChzZWxmLl9fTkVYVF9ITVJfQ0IpIHtcbiAgICAgICAgc2VsZi5fX05FWFRfSE1SX0NCKGZvcm1hdHRlZC5lcnJvcnNbMF0pXG4gICAgICAgIHNlbGYuX19ORVhUX0hNUl9DQiA9IG51bGxcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVIb3RVcGRhdGUoKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52LlRVUkJPUEFDSykge1xuICAgICAgY29uc3QgaG1yVXBkYXRlID0gdHVyYm9wYWNrSG1yIS5vbkJ1aWx0KClcbiAgICAgIGlmIChobXJVcGRhdGUgIT0gbnVsbCkge1xuICAgICAgICByZXBvcnRIbXJMYXRlbmN5KFxuICAgICAgICAgIHNlbmRNZXNzYWdlLFxuICAgICAgICAgIFsuLi5obXJVcGRhdGUudXBkYXRlZE1vZHVsZXNdLFxuICAgICAgICAgIGhtclVwZGF0ZS5zdGFydE1zU2luY2VFcG9jaCxcbiAgICAgICAgICBobXJVcGRhdGUuZW5kTXNTaW5jZUVwb2NoLFxuICAgICAgICAgIC8vIHN1cHByZXNzIHRoZSBgY2xpZW50LWhtci1sYXRlbmN5YCBldmVudCBpZiB0aGUgdXBkYXRlIHdhcyBhIG5vLW9wOlxuICAgICAgICAgIGhtclVwZGF0ZS5oYXNVcGRhdGVzXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGRpc3BhdGNoZXIub25CdWlsZE9rKClcbiAgICB9IGVsc2Uge1xuICAgICAgdHJ5QXBwbHlVcGRhdGVzV2VicGFjayhzZW5kTWVzc2FnZSlcbiAgICB9XG4gIH1cblxuICBzd2l0Y2ggKG1lc3NhZ2UudHlwZSkge1xuICAgIGNhc2UgSE1SX01FU1NBR0VfU0VOVF9UT19CUk9XU0VSLklTUl9NQU5JRkVTVDoge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9ERVZfSU5ESUNBVE9SKSB7XG4gICAgICAgIHN0YXRpY0luZGljYXRvclN0YXRlLmFwcElzck1hbmlmZXN0ID0gbWVzc2FnZS5kYXRhXG5cbiAgICAgICAgLy8gSGFuZGxlIHRoZSBpbml0aWFsIHN0YXRpYyBpbmRpY2F0b3Igc3RhdHVzIG9uIHJlY2VpdmluZyB0aGUgSVNSXG4gICAgICAgIC8vIG1hbmlmZXN0LiBOYXZpZ2F0aW9uIGlzIGhhbmRsZWQgaW4gYW4gZWZmZWN0IGluc2lkZSBIb3RSZWxvYWQgZm9yXG4gICAgICAgIC8vIHBhdGhuYW1lIGNoYW5nZXMgYXMgd2UnbGwgcmVjZWl2ZSB0aGUgdXBkYXRlZCBtYW5pZmVzdCBiZWZvcmVcbiAgICAgICAgLy8gdXNlUGF0aG5hbWUgdHJpZ2dlcnMgZm9yIGEgbmV3IHZhbHVlLlxuXG4gICAgICAgIGNvbnN0IGlzU3RhdGljID0gc3RhdGljSW5kaWNhdG9yU3RhdGUucGF0aG5hbWVcbiAgICAgICAgICA/IG1lc3NhZ2UuZGF0YVtzdGF0aWNJbmRpY2F0b3JTdGF0ZS5wYXRobmFtZV1cbiAgICAgICAgICA6IHVuZGVmaW5lZFxuXG4gICAgICAgIGRpc3BhdGNoZXIub25TdGF0aWNJbmRpY2F0b3IoXG4gICAgICAgICAgaXNTdGF0aWMgPT09IHVuZGVmaW5lZCA/ICdwZW5kaW5nJyA6IGlzU3RhdGljID8gJ3N0YXRpYycgOiAnZHluYW1pYydcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgYnJlYWtcbiAgICB9XG4gICAgY2FzZSBITVJfTUVTU0FHRV9TRU5UX1RPX0JST1dTRVIuQlVJTERJTkc6IHtcbiAgICAgIGRpc3BhdGNoZXIuYnVpbGRpbmdJbmRpY2F0b3JTaG93KClcblxuICAgICAgaWYgKHByb2Nlc3MuZW52LlRVUkJPUEFDSykge1xuICAgICAgICB0dXJib3BhY2tIbXIhLm9uQnVpbGRpbmcoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2VicGFja1N0YXJ0TXNTaW5jZUVwb2NoID0gRGF0ZS5ub3coKVxuICAgICAgICBzZXRQZW5kaW5nSG90VXBkYXRlV2VicGFjaygpXG4gICAgICAgIGNvbnNvbGUubG9nKCdbRmFzdCBSZWZyZXNoXSByZWJ1aWxkaW5nJylcbiAgICAgIH1cbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIGNhc2UgSE1SX01FU1NBR0VfU0VOVF9UT19CUk9XU0VSLkJVSUxUOlxuICAgIGNhc2UgSE1SX01FU1NBR0VfU0VOVF9UT19CUk9XU0VSLlNZTkM6IHtcbiAgICAgIGRpc3BhdGNoZXIuYnVpbGRpbmdJbmRpY2F0b3JIaWRlKClcblxuICAgICAgaWYgKG1lc3NhZ2UuaGFzaCkge1xuICAgICAgICBoYW5kbGVBdmFpbGFibGVIYXNoKG1lc3NhZ2UuaGFzaClcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBlcnJvcnMsIHdhcm5pbmdzIH0gPSBtZXNzYWdlXG5cbiAgICAgIC8vIElzIHVuZGVmaW5lZCB3aGVuIGl0J3MgYSAnYnVpbHQnIGV2ZW50XG4gICAgICBpZiAoJ3ZlcnNpb25JbmZvJyBpbiBtZXNzYWdlKVxuICAgICAgICBkaXNwYXRjaGVyLm9uVmVyc2lvbkluZm8obWVzc2FnZS52ZXJzaW9uSW5mbylcbiAgICAgIGlmICgnZGVidWcnIGluIG1lc3NhZ2UgJiYgbWVzc2FnZS5kZWJ1ZylcbiAgICAgICAgZGlzcGF0Y2hlci5vbkRlYnVnSW5mbyhtZXNzYWdlLmRlYnVnKVxuICAgICAgaWYgKCdkZXZJbmRpY2F0b3InIGluIG1lc3NhZ2UpXG4gICAgICAgIGRpc3BhdGNoZXIub25EZXZJbmRpY2F0b3IobWVzc2FnZS5kZXZJbmRpY2F0b3IpXG4gICAgICBpZiAoJ2RldlRvb2xzQ29uZmlnJyBpbiBtZXNzYWdlKVxuICAgICAgICBkaXNwYXRjaGVyLm9uRGV2VG9vbHNDb25maWcobWVzc2FnZS5kZXZUb29sc0NvbmZpZylcblxuICAgICAgY29uc3QgaGFzRXJyb3JzID0gQm9vbGVhbihlcnJvcnMgJiYgZXJyb3JzLmxlbmd0aClcbiAgICAgIC8vIENvbXBpbGF0aW9uIHdpdGggZXJyb3JzIChlLmcuIHN5bnRheCBlcnJvciBvciBtaXNzaW5nIG1vZHVsZXMpLlxuICAgICAgaWYgKGhhc0Vycm9ycykge1xuICAgICAgICBzZW5kTWVzc2FnZShcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBldmVudDogJ2NsaWVudC1lcnJvcicsXG4gICAgICAgICAgICBlcnJvckNvdW50OiBlcnJvcnMubGVuZ3RoLFxuICAgICAgICAgICAgY2xpZW50SWQ6IF9fbmV4dERldkNsaWVudElkLFxuICAgICAgICAgIH0pXG4gICAgICAgIClcblxuICAgICAgICBoYW5kbGVFcnJvcnMoZXJyb3JzKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgaGFzV2FybmluZ3MgPSBCb29sZWFuKHdhcm5pbmdzICYmIHdhcm5pbmdzLmxlbmd0aClcbiAgICAgIGlmIChoYXNXYXJuaW5ncykge1xuICAgICAgICBzZW5kTWVzc2FnZShcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBldmVudDogJ2NsaWVudC13YXJuaW5nJyxcbiAgICAgICAgICAgIHdhcm5pbmdDb3VudDogd2FybmluZ3MubGVuZ3RoLFxuICAgICAgICAgICAgY2xpZW50SWQ6IF9fbmV4dERldkNsaWVudElkLFxuICAgICAgICAgIH0pXG4gICAgICAgIClcblxuICAgICAgICAvLyBQcmludCB3YXJuaW5ncyB0byB0aGUgY29uc29sZS5cbiAgICAgICAgY29uc3QgZm9ybWF0dGVkTWVzc2FnZXMgPSBmb3JtYXRXZWJwYWNrTWVzc2FnZXMoe1xuICAgICAgICAgIHdhcm5pbmdzOiB3YXJuaW5ncyxcbiAgICAgICAgICBlcnJvcnM6IFtdLFxuICAgICAgICB9KVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm9ybWF0dGVkTWVzc2FnZXMud2FybmluZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoaSA9PT0gNSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAnVGhlcmUgd2VyZSBtb3JlIHdhcm5pbmdzIGluIG90aGVyIGZpbGVzLlxcbicgK1xuICAgICAgICAgICAgICAgICdZb3UgY2FuIGZpbmQgYSBjb21wbGV0ZSBsb2cgaW4gdGhlIHRlcm1pbmFsLidcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnNvbGUud2FybihzdHJpcEFuc2koZm9ybWF0dGVkTWVzc2FnZXMud2FybmluZ3NbaV0pKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gTm8gZWFybHkgcmV0dXJuIGhlcmUgYXMgd2UgbmVlZCB0byBhcHBseSBtb2R1bGVzIGluIHRoZSBzYW1lIHdheSBiZXR3ZWVuIHdhcm5pbmdzIG9ubHkgYW5kIGNvbXBpbGVzIHdpdGhvdXQgd2FybmluZ3NcbiAgICAgIH1cblxuICAgICAgc2VuZE1lc3NhZ2UoXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBldmVudDogJ2NsaWVudC1zdWNjZXNzJyxcbiAgICAgICAgICBjbGllbnRJZDogX19uZXh0RGV2Q2xpZW50SWQsXG4gICAgICAgIH0pXG4gICAgICApXG5cbiAgICAgIGlmIChtZXNzYWdlLnR5cGUgPT09IEhNUl9NRVNTQUdFX1NFTlRfVE9fQlJPV1NFUi5CVUlMVCkge1xuICAgICAgICBoYW5kbGVIb3RVcGRhdGUoKVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNhc2UgSE1SX01FU1NBR0VfU0VOVF9UT19CUk9XU0VSLlRVUkJPUEFDS19DT05ORUNURUQ6IHtcbiAgICAgIHByb2Nlc3NUdXJib3BhY2tNZXNzYWdlKHtcbiAgICAgICAgdHlwZTogSE1SX01FU1NBR0VfU0VOVF9UT19CUk9XU0VSLlRVUkJPUEFDS19DT05ORUNURUQsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBzZXNzaW9uSWQ6IG1lc3NhZ2UuZGF0YS5zZXNzaW9uSWQsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgYnJlYWtcbiAgICB9XG4gICAgY2FzZSBITVJfTUVTU0FHRV9TRU5UX1RPX0JST1dTRVIuVFVSQk9QQUNLX01FU1NBR0U6IHtcbiAgICAgIHR1cmJvcGFja0htciEub25UdXJib3BhY2tNZXNzYWdlKG1lc3NhZ2UpXG4gICAgICBkaXNwYXRjaGVyLm9uQmVmb3JlUmVmcmVzaCgpXG4gICAgICBwcm9jZXNzVHVyYm9wYWNrTWVzc2FnZSh7XG4gICAgICAgIHR5cGU6IEhNUl9NRVNTQUdFX1NFTlRfVE9fQlJPV1NFUi5UVVJCT1BBQ0tfTUVTU0FHRSxcbiAgICAgICAgZGF0YTogbWVzc2FnZS5kYXRhLFxuICAgICAgfSlcbiAgICAgIGlmIChSdW50aW1lRXJyb3JIYW5kbGVyLmhhZFJ1bnRpbWVFcnJvcikge1xuICAgICAgICBjb25zb2xlLndhcm4oUkVBQ1RfUkVGUkVTSF9GVUxMX1JFTE9BRF9GUk9NX0VSUk9SKVxuICAgICAgICBwZXJmb3JtRnVsbFJlbG9hZChudWxsLCBzZW5kTWVzc2FnZSlcbiAgICAgIH1cbiAgICAgIGRpc3BhdGNoZXIub25SZWZyZXNoKClcbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIC8vIFRPRE8tQVBQOiBtYWtlIHNlcnZlciBjb21wb25lbnQgY2hhbmdlIG1vcmUgZ3JhbnVsYXJcbiAgICBjYXNlIEhNUl9NRVNTQUdFX1NFTlRfVE9fQlJPV1NFUi5TRVJWRVJfQ09NUE9ORU5UX0NIQU5HRVM6IHtcbiAgICAgIHR1cmJvcGFja0htcj8ub25TZXJ2ZXJDb21wb25lbnRDaGFuZ2VzKClcbiAgICAgIHNlbmRNZXNzYWdlKFxuICAgICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgZXZlbnQ6ICdzZXJ2ZXItY29tcG9uZW50LXJlbG9hZC1wYWdlJyxcbiAgICAgICAgICBjbGllbnRJZDogX19uZXh0RGV2Q2xpZW50SWQsXG4gICAgICAgICAgaGFzaDogbWVzc2FnZS5oYXNoLFxuICAgICAgICB9KVxuICAgICAgKVxuXG4gICAgICAvLyBTdG9yZSB0aGUgbGF0ZXN0IGhhc2ggaW4gYSBzZXNzaW9uIGNvb2tpZSBzbyB0aGF0IGl0J3Mgc2VudCBiYWNrIHRvIHRoZVxuICAgICAgLy8gc2VydmVyIHdpdGggYW55IHN1YnNlcXVlbnQgcmVxdWVzdHMuXG4gICAgICBkb2N1bWVudC5jb29raWUgPSBgJHtORVhUX0hNUl9SRUZSRVNIX0hBU0hfQ09PS0lFfT0ke21lc3NhZ2UuaGFzaH07cGF0aD0vYFxuXG4gICAgICBpZiAoXG4gICAgICAgIFJ1bnRpbWVFcnJvckhhbmRsZXIuaGFkUnVudGltZUVycm9yIHx8XG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5pZCA9PT0gJ19fbmV4dF9lcnJvcl9fJ1xuICAgICAgKSB7XG4gICAgICAgIGlmIChyZWxvYWRpbmcpIHJldHVyblxuICAgICAgICByZWxvYWRpbmcgPSB0cnVlXG4gICAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ucmVsb2FkKClcbiAgICAgIH1cblxuICAgICAgc3RhcnRUcmFuc2l0aW9uKCgpID0+IHtcbiAgICAgICAgcHVibGljQXBwUm91dGVySW5zdGFuY2UuaG1yUmVmcmVzaCgpXG4gICAgICAgIGRpc3BhdGNoZXIub25SZWZyZXNoKClcbiAgICAgIH0pXG5cbiAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfVEVTVF9NT0RFKSB7XG4gICAgICAgIGlmIChzZWxmLl9fTkVYVF9ITVJfQ0IpIHtcbiAgICAgICAgICBzZWxmLl9fTkVYVF9ITVJfQ0IoKVxuICAgICAgICAgIHNlbGYuX19ORVhUX0hNUl9DQiA9IG51bGxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2FzZSBITVJfTUVTU0FHRV9TRU5UX1RPX0JST1dTRVIuUkVMT0FEX1BBR0U6IHtcbiAgICAgIHR1cmJvcGFja0htcj8ub25SZWxvYWRQYWdlKClcbiAgICAgIHNlbmRNZXNzYWdlKFxuICAgICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgZXZlbnQ6ICdjbGllbnQtcmVsb2FkLXBhZ2UnLFxuICAgICAgICAgIGNsaWVudElkOiBfX25leHREZXZDbGllbnRJZCxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIGlmIChyZWxvYWRpbmcpIHJldHVyblxuICAgICAgcmVsb2FkaW5nID0gdHJ1ZVxuICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKVxuICAgIH1cbiAgICBjYXNlIEhNUl9NRVNTQUdFX1NFTlRfVE9fQlJPV1NFUi5BRERFRF9QQUdFOlxuICAgIGNhc2UgSE1SX01FU1NBR0VfU0VOVF9UT19CUk9XU0VSLlJFTU9WRURfUEFHRToge1xuICAgICAgdHVyYm9wYWNrSG1yPy5vblBhZ2VBZGRSZW1vdmUoKVxuICAgICAgLy8gVE9ETy1BUFA6IHBvdGVudGlhbGx5IG9ubHkgcmVmcmVzaCBpZiB0aGUgY3VycmVudGx5IHZpZXdlZCBwYWdlIHdhcyBhZGRlZC9yZW1vdmVkLlxuICAgICAgcmV0dXJuIHB1YmxpY0FwcFJvdXRlckluc3RhbmNlLmhtclJlZnJlc2goKVxuICAgIH1cbiAgICBjYXNlIEhNUl9NRVNTQUdFX1NFTlRfVE9fQlJPV1NFUi5TRVJWRVJfRVJST1I6IHtcbiAgICAgIGNvbnN0IHsgZXJyb3JKU09OIH0gPSBtZXNzYWdlXG4gICAgICBpZiAoZXJyb3JKU09OKSB7XG4gICAgICAgIGNvbnN0IGVycm9yT2JqZWN0ID0gSlNPTi5wYXJzZShlcnJvckpTT04pXG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGVycm9yT2JqZWN0Lm1lc3NhZ2UpXG4gICAgICAgIGVycm9yLnN0YWNrID0gZXJyb3JPYmplY3Quc3RhY2tcbiAgICAgICAgaGFuZGxlRXJyb3JzKFtlcnJvcl0pXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2FzZSBITVJfTUVTU0FHRV9TRU5UX1RPX0JST1dTRVIuREVWX1BBR0VTX01BTklGRVNUX1VQREFURToge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNhc2UgSE1SX01FU1NBR0VfU0VOVF9UT19CUk9XU0VSLkRFVlRPT0xTX0NPTkZJRzoge1xuICAgICAgZGlzcGF0Y2hlci5vbkRldlRvb2xzQ29uZmlnKG1lc3NhZ2UuZGF0YSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYXNlIEhNUl9NRVNTQUdFX1NFTlRfVE9fQlJPV1NFUi5SRUFDVF9ERUJVR19DSFVOSzoge1xuICAgICAgY29uc3QgeyByZXF1ZXN0SWQsIGNodW5rIH0gPSBtZXNzYWdlXG4gICAgICBjb25zdCB7IHdyaXRlciB9ID0gZ2V0T3JDcmVhdGVEZWJ1Z0NoYW5uZWxSZWFkYWJsZVdyaXRlclBhaXIocmVxdWVzdElkKVxuXG4gICAgICBpZiAoY2h1bmspIHtcbiAgICAgICAgd3JpdGVyLnJlYWR5LnRoZW4oKCkgPT4gd3JpdGVyLndyaXRlKGNodW5rKSkuY2F0Y2goY29uc29sZS5lcnJvcilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEEgbnVsbCBjaHVuayBzaWduYWxzIHRoYXQgbm8gbW9yZSBjaHVua3Mgd2lsbCBiZSBzZW50LCB3aGljaCBhbGxvd3NcbiAgICAgICAgLy8gdXMgdG8gY2xvc2UgdGhlIHdyaXRlci5cbiAgICAgICAgLy8gVE9ETzogUmV2aXNpdCB0aGlzIGNsZWFudXAgbG9naWMgd2hlbiB3ZSBpbnRlZ3JhdGUgdGhlIHJldHVybiBjaGFubmVsXG4gICAgICAgIC8vIHRoYXQga2VlcHMgdGhlIGNvbm5lY3Rpb24gb3BlbiB0byBiZSBhYmxlIHRvIGxhemlseSByZXRyaWV2ZSBkZWJ1Z1xuICAgICAgICAvLyBvYmplY3RzLlxuICAgICAgICB3cml0ZXIucmVhZHkudGhlbigoKSA9PiB3cml0ZXIuY2xvc2UoKSkuY2F0Y2goY29uc29sZS5lcnJvcilcbiAgICAgIH1cblxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNhc2UgSE1SX01FU1NBR0VfU0VOVF9UT19CUk9XU0VSLlJFUVVFU1RfQ1VSUkVOVF9FUlJPUl9TVEFURToge1xuICAgICAgY29uc3QgZXJyb3JTdGF0ZSA9IGdldFNlcmlhbGl6ZWRPdmVybGF5U3RhdGUoKVxuICAgICAgY29uc3QgcmVzcG9uc2U6IE1jcEVycm9yU3RhdGVSZXNwb25zZSA9IHtcbiAgICAgICAgZXZlbnQ6IEhNUl9NRVNTQUdFX1NFTlRfVE9fU0VSVkVSLk1DUF9FUlJPUl9TVEFURV9SRVNQT05TRSxcbiAgICAgICAgcmVxdWVzdElkOiBtZXNzYWdlLnJlcXVlc3RJZCxcbiAgICAgICAgZXJyb3JTdGF0ZSxcbiAgICAgICAgdXJsOiB3aW5kb3cubG9jYXRpb24uaHJlZixcbiAgICAgIH1cbiAgICAgIHNlbmRNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlKSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYXNlIEhNUl9NRVNTQUdFX1NFTlRfVE9fQlJPV1NFUi5SRVFVRVNUX1BBR0VfTUVUQURBVEE6IHtcbiAgICAgIGNvbnN0IHNlZ21lbnRUcmllRGF0YSA9IGdldFNlZ21lbnRUcmllRGF0YSgpXG4gICAgICBjb25zdCByZXNwb25zZTogTWNwUGFnZU1ldGFkYXRhUmVzcG9uc2UgPSB7XG4gICAgICAgIGV2ZW50OiBITVJfTUVTU0FHRV9TRU5UX1RPX1NFUlZFUi5NQ1BfUEFHRV9NRVRBREFUQV9SRVNQT05TRSxcbiAgICAgICAgcmVxdWVzdElkOiBtZXNzYWdlLnJlcXVlc3RJZCxcbiAgICAgICAgc2VnbWVudFRyaWVEYXRhLFxuICAgICAgICB1cmw6IHdpbmRvdy5sb2NhdGlvbi5ocmVmLFxuICAgICAgfVxuICAgICAgc2VuZE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNhc2UgSE1SX01FU1NBR0VfU0VOVF9UT19CUk9XU0VSLkNBQ0hFX0lORElDQVRPUjoge1xuICAgICAgZGlzcGF0Y2hlci5vbkNhY2hlSW5kaWNhdG9yKG1lc3NhZ2Uuc3RhdGUpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2FzZSBITVJfTUVTU0FHRV9TRU5UX1RPX0JST1dTRVIuRVJST1JTX1RPX1NIT1dfSU5fQlJPV1NFUjoge1xuICAgICAgY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtPHtcbiAgICAgICAgZXJyb3JzOiBFcnJvcltdXG4gICAgICAgIGVycm9yQ29kZXM6IE1hcDxFcnJvciwgc3RyaW5nPlxuICAgICAgfT4oXG4gICAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgICAgICAgc3RhcnQoY29udHJvbGxlcikge1xuICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKG1lc3NhZ2Uuc2VyaWFsaXplZEVycm9ycylcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgICB7IGZpbmRTb3VyY2VNYXBVUkwgfVxuICAgICAgKS50aGVuKFxuICAgICAgICAoeyBlcnJvcnMsIGVycm9yQ29kZXMgfSkgPT4ge1xuICAgICAgICAgIGZvciAoY29uc3QgZXJyb3Igb2YgZXJyb3JzKSB7XG4gICAgICAgICAgICBjb25zdCBjb2RlID0gZXJyb3JDb2Rlcy5nZXQoZXJyb3IpXG4gICAgICAgICAgICBpZiAoY29kZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlcnJvciwgJ19fTkVYVF9FUlJPUl9DT0RFJywge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBjb2RlLFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIG5ldyBFcnJvcignRmFpbGVkIHRvIGRlc2VyaWFsaXplIGVycm9ycy4nLCB7IGNhdXNlOiBlcnIgfSlcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYXNlIEhNUl9NRVNTQUdFX1NFTlRfVE9fQlJPV1NFUi5NSURETEVXQVJFX0NIQU5HRVM6XG4gICAgY2FzZSBITVJfTUVTU0FHRV9TRU5UX1RPX0JST1dTRVIuQ0xJRU5UX0NIQU5HRVM6XG4gICAgY2FzZSBITVJfTUVTU0FHRV9TRU5UX1RPX0JST1dTRVIuU0VSVkVSX09OTFlfQ0hBTkdFUzpcbiAgICAgIC8vIFRoZXNlIGFjdGlvbiB0eXBlcyBhcmUgaGFuZGxlZCBpbiBzcmMvY2xpZW50L3BhZ2UtYm9vdHN0cmFwLnRzXG4gICAgICBicmVha1xuICAgIGRlZmF1bHQ6IHtcbiAgICAgIG1lc3NhZ2Ugc2F0aXNmaWVzIG5ldmVyXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEhvdFJlbG9hZCh7XG4gIGNoaWxkcmVuLFxuICBnbG9iYWxFcnJvcixcbiAgd2ViU29ja2V0LFxuICBzdGF0aWNJbmRpY2F0b3JTdGF0ZSxcbn06IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZVxuICBnbG9iYWxFcnJvcjogR2xvYmFsRXJyb3JTdGF0ZVxuICB3ZWJTb2NrZXQ6IFdlYlNvY2tldCB8IHVuZGVmaW5lZFxuICBzdGF0aWNJbmRpY2F0b3JTdGF0ZTogU3RhdGljSW5kaWNhdG9yU3RhdGUgfCB1bmRlZmluZWRcbn0pIHtcbiAgdXNlRXJyb3JIYW5kbGVyKGRpc3BhdGNoZXIub25VbmhhbmRsZWRFcnJvciwgZGlzcGF0Y2hlci5vblVuaGFuZGxlZFJlamVjdGlvbilcbiAgdXNlV2ViU29ja2V0UGluZyh3ZWJTb2NrZXQpXG5cbiAgLy8gV2UgZG9uJ3Qgd2FudCBhY2Nlc3Mgb2YgdGhlIHBhdGhuYW1lIGZvciB0aGUgZGV2IHRvb2xzIHRvIHRyaWdnZXIgYSBkeW5hbWljXG4gIC8vIGFjY2VzcyAoYXMgdGhlIGRldiBvdmVybGF5IHdpbGwgbmV2ZXIgYmUgcHJlc2VudCBpbiBwcm9kdWN0aW9uKS5cbiAgY29uc3QgcGF0aG5hbWUgPSB1c2VVbnRyYWNrZWRQYXRobmFtZSgpXG5cbiAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9ERVZfSU5ESUNBVE9SKSB7XG4gICAgLy8gdGhpcyBjb25kaXRpb25hbCBpcyBvbmx5IGZvciBkZWFkLWNvZGUgZWxpbWluYXRpb24gd2hpY2hcbiAgICAvLyBpc24ndCBhIHJ1bnRpbWUgY29uZGl0aW9uYWwgb25seSBidWlsZC10aW1lIHNvIGlnbm9yZSBob29rcyBydWxlXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICghc3RhdGljSW5kaWNhdG9yU3RhdGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFyaWFudEVycm9yKFxuICAgICAgICAgICdFeHBlY3RlZCBzdGF0aWNJbmRpY2F0b3JTdGF0ZSB0byBiZSBkZWZpbmVkIGluIGRldiBtb2RlLidcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBzdGF0aWNJbmRpY2F0b3JTdGF0ZS5wYXRobmFtZSA9IHBhdGhuYW1lXG5cbiAgICAgIGlmIChzdGF0aWNJbmRpY2F0b3JTdGF0ZS5hcHBJc3JNYW5pZmVzdCkge1xuICAgICAgICBjb25zdCBpc1N0YXRpYyA9IHBhdGhuYW1lXG4gICAgICAgICAgPyBzdGF0aWNJbmRpY2F0b3JTdGF0ZS5hcHBJc3JNYW5pZmVzdFtwYXRobmFtZV1cbiAgICAgICAgICA6IHVuZGVmaW5lZFxuXG4gICAgICAgIGRpc3BhdGNoZXIub25TdGF0aWNJbmRpY2F0b3IoXG4gICAgICAgICAgaXNTdGF0aWMgPT09IHVuZGVmaW5lZCA/ICdwZW5kaW5nJyA6IGlzU3RhdGljID8gJ3N0YXRpYycgOiAnZHluYW1pYydcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0sIFtwYXRobmFtZSwgc3RhdGljSW5kaWNhdG9yU3RhdGVdKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8QXBwRGV2T3ZlcmxheUVycm9yQm91bmRhcnkgZ2xvYmFsRXJyb3I9e2dsb2JhbEVycm9yfT5cbiAgICAgIDxSZXBsYXlTc3JPbmx5RXJyb3JzIG9uQmxvY2tpbmdFcnJvcj17ZGlzcGF0Y2hlci5vcGVuRXJyb3JPdmVybGF5fSAvPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvQXBwRGV2T3ZlcmxheUVycm9yQm91bmRhcnk+XG4gIClcbn1cbiJdLCJuYW1lcyI6WyJIb3RSZWxvYWQiLCJwZXJmb3JtRnVsbFJlbG9hZCIsInByb2Nlc3NNZXNzYWdlIiwid2FpdEZvcldlYnBhY2tSdW50aW1lSG90VXBkYXRlIiwiY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtIiwiY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtQnJvd3NlciIsIm1vc3RSZWNlbnRDb21waWxhdGlvbkhhc2giLCJfX25leHREZXZDbGllbnRJZCIsIk1hdGgiLCJyb3VuZCIsInJhbmRvbSIsIkRhdGUiLCJub3ciLCJyZWxvYWRpbmciLCJ3ZWJwYWNrU3RhcnRNc1NpbmNlRXBvY2giLCJ0dXJib3BhY2tIbXIiLCJwcm9jZXNzIiwiZW52IiwiVFVSQk9QQUNLIiwiVHVyYm9wYWNrSG1yIiwicGVuZGluZ0hvdFVwZGF0ZVdlYnBhY2siLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlc29sdmVQZW5kaW5nSG90VXBkYXRlV2VicGFjayIsInNldFBlbmRpbmdIb3RVcGRhdGVXZWJwYWNrIiwiaGFuZGxlQXZhaWxhYmxlSGFzaCIsImhhc2giLCJpc1VwZGF0ZUF2YWlsYWJsZSIsIl9fd2VicGFja19oYXNoX18iLCJjYW5BcHBseVVwZGF0ZXMiLCJtb2R1bGUiLCJob3QiLCJzdGF0dXMiLCJhZnRlckFwcGx5VXBkYXRlcyIsImZuIiwiaGFuZGxlciIsInJlbW92ZVN0YXR1c0hhbmRsZXIiLCJhZGRTdGF0dXNIYW5kbGVyIiwiZXJyIiwic2VuZE1lc3NhZ2UiLCJzdGFja1RyYWNlIiwic3RhY2siLCJzcGxpdCIsInNsaWNlIiwiam9pbiIsIm1lc3NhZ2UiLCJKU09OIiwic3RyaW5naWZ5IiwiZXZlbnQiLCJoYWRSdW50aW1lRXJyb3IiLCJSdW50aW1lRXJyb3JIYW5kbGVyIiwiZGVwZW5kZW5jeUNoYWluIiwidW5kZWZpbmVkIiwid2luZG93IiwibG9jYXRpb24iLCJyZWxvYWQiLCJ0cnlBcHBseVVwZGF0ZXNXZWJwYWNrIiwiZGlzcGF0Y2hlciIsIm9uQnVpbGRPayIsInJlcG9ydEhtckxhdGVuY3kiLCJoYW5kbGVBcHBseVVwZGF0ZXMiLCJ1cGRhdGVkTW9kdWxlcyIsImNvbnNvbGUiLCJ3YXJuIiwiUkVBQ1RfUkVGUkVTSF9GVUxMX1JFTE9BRCIsIlJFQUNUX1JFRlJFU0hfRlVMTF9SRUxPQURfRlJPTV9FUlJPUiIsIm9uUmVmcmVzaCIsIl9fTkVYVF9URVNUX01PREUiLCJzZWxmIiwiX19ORVhUX0hNUl9DQiIsImNoZWNrIiwidGhlbiIsIm9uQmVmb3JlUmVmcmVzaCIsImFwcGx5IiwicHJvY2Vzc1R1cmJvcGFja01lc3NhZ2UiLCJzdGF0aWNJbmRpY2F0b3JTdGF0ZSIsImhhbmRsZUVycm9ycyIsImVycm9ycyIsImZvcm1hdHRlZCIsImZvcm1hdFdlYnBhY2tNZXNzYWdlcyIsIndhcm5pbmdzIiwib25CdWlsZEVycm9yIiwiaSIsImxlbmd0aCIsImVycm9yIiwic3RyaXBBbnNpIiwiaGFuZGxlSG90VXBkYXRlIiwiaG1yVXBkYXRlIiwib25CdWlsdCIsInN0YXJ0TXNTaW5jZUVwb2NoIiwiZW5kTXNTaW5jZUVwb2NoIiwiaGFzVXBkYXRlcyIsInR5cGUiLCJITVJfTUVTU0FHRV9TRU5UX1RPX0JST1dTRVIiLCJJU1JfTUFOSUZFU1QiLCJfX05FWFRfREVWX0lORElDQVRPUiIsImFwcElzck1hbmlmZXN0IiwiZGF0YSIsImlzU3RhdGljIiwicGF0aG5hbWUiLCJvblN0YXRpY0luZGljYXRvciIsIkJVSUxESU5HIiwiYnVpbGRpbmdJbmRpY2F0b3JTaG93Iiwib25CdWlsZGluZyIsImxvZyIsIkJVSUxUIiwiU1lOQyIsImJ1aWxkaW5nSW5kaWNhdG9ySGlkZSIsIm9uVmVyc2lvbkluZm8iLCJ2ZXJzaW9uSW5mbyIsImRlYnVnIiwib25EZWJ1Z0luZm8iLCJvbkRldkluZGljYXRvciIsImRldkluZGljYXRvciIsIm9uRGV2VG9vbHNDb25maWciLCJkZXZUb29sc0NvbmZpZyIsImhhc0Vycm9ycyIsIkJvb2xlYW4iLCJlcnJvckNvdW50IiwiY2xpZW50SWQiLCJoYXNXYXJuaW5ncyIsIndhcm5pbmdDb3VudCIsImZvcm1hdHRlZE1lc3NhZ2VzIiwiVFVSQk9QQUNLX0NPTk5FQ1RFRCIsInNlc3Npb25JZCIsIlRVUkJPUEFDS19NRVNTQUdFIiwib25UdXJib3BhY2tNZXNzYWdlIiwiU0VSVkVSX0NPTVBPTkVOVF9DSEFOR0VTIiwib25TZXJ2ZXJDb21wb25lbnRDaGFuZ2VzIiwiZG9jdW1lbnQiLCJjb29raWUiLCJORVhUX0hNUl9SRUZSRVNIX0hBU0hfQ09PS0lFIiwiZG9jdW1lbnRFbGVtZW50IiwiaWQiLCJzdGFydFRyYW5zaXRpb24iLCJwdWJsaWNBcHBSb3V0ZXJJbnN0YW5jZSIsImhtclJlZnJlc2giLCJSRUxPQURfUEFHRSIsIm9uUmVsb2FkUGFnZSIsIkFEREVEX1BBR0UiLCJSRU1PVkVEX1BBR0UiLCJvblBhZ2VBZGRSZW1vdmUiLCJTRVJWRVJfRVJST1IiLCJlcnJvckpTT04iLCJlcnJvck9iamVjdCIsInBhcnNlIiwiRXJyb3IiLCJERVZfUEFHRVNfTUFOSUZFU1RfVVBEQVRFIiwiREVWVE9PTFNfQ09ORklHIiwiUkVBQ1RfREVCVUdfQ0hVTksiLCJyZXF1ZXN0SWQiLCJjaHVuayIsIndyaXRlciIsImdldE9yQ3JlYXRlRGVidWdDaGFubmVsUmVhZGFibGVXcml0ZXJQYWlyIiwicmVhZHkiLCJ3cml0ZSIsImNhdGNoIiwiY2xvc2UiLCJSRVFVRVNUX0NVUlJFTlRfRVJST1JfU1RBVEUiLCJlcnJvclN0YXRlIiwiZ2V0U2VyaWFsaXplZE92ZXJsYXlTdGF0ZSIsInJlc3BvbnNlIiwiSE1SX01FU1NBR0VfU0VOVF9UT19TRVJWRVIiLCJNQ1BfRVJST1JfU1RBVEVfUkVTUE9OU0UiLCJ1cmwiLCJocmVmIiwiUkVRVUVTVF9QQUdFX01FVEFEQVRBIiwic2VnbWVudFRyaWVEYXRhIiwiZ2V0U2VnbWVudFRyaWVEYXRhIiwiTUNQX1BBR0VfTUVUQURBVEFfUkVTUE9OU0UiLCJDQUNIRV9JTkRJQ0FUT1IiLCJvbkNhY2hlSW5kaWNhdG9yIiwic3RhdGUiLCJFUlJPUlNfVE9fU0hPV19JTl9CUk9XU0VSIiwiUmVhZGFibGVTdHJlYW0iLCJzdGFydCIsImNvbnRyb2xsZXIiLCJlbnF1ZXVlIiwic2VyaWFsaXplZEVycm9ycyIsImZpbmRTb3VyY2VNYXBVUkwiLCJlcnJvckNvZGVzIiwiY29kZSIsImdldCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwiY2F1c2UiLCJNSURETEVXQVJFX0NIQU5HRVMiLCJDTElFTlRfQ0hBTkdFUyIsIlNFUlZFUl9PTkxZX0NIQU5HRVMiLCJjaGlsZHJlbiIsImdsb2JhbEVycm9yIiwid2ViU29ja2V0IiwidXNlRXJyb3JIYW5kbGVyIiwib25VbmhhbmRsZWRFcnJvciIsIm9uVW5oYW5kbGVkUmVqZWN0aW9uIiwidXNlV2ViU29ja2V0UGluZyIsInVzZVVudHJhY2tlZFBhdGhuYW1lIiwidXNlRWZmZWN0IiwiSW52YXJpYW50RXJyb3IiLCJBcHBEZXZPdmVybGF5RXJyb3JCb3VuZGFyeSIsIlJlcGxheVNzck9ubHlFcnJvcnMiLCJvbkJsb2NraW5nRXJyb3IiLCJvcGVuRXJyb3JPdmVybGF5Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/dev/hot-reloader/app/hot-reloader-app.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/dev/hot-reloader/app/web-socket.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/dev/hot-reloader/app/web-socket.js ***!
|
||
\**************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createProcessTurbopackMessage: function() {\n return createProcessTurbopackMessage;\n },\n createWebSocket: function() {\n return createWebSocket;\n },\n useWebSocketPing: function() {\n return useWebSocketPing;\n }\n});\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../../../shared/lib/app-router-context.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js\");\nconst _getsocketurl = __webpack_require__(/*! ../get-socket-url */ \"(ssr)/./node_modules/next/dist/client/dev/hot-reloader/get-socket-url.js\");\nconst _hotreloadertypes = __webpack_require__(/*! ../../../../server/dev/hot-reloader-types */ \"(ssr)/./node_modules/next/dist/server/dev/hot-reloader-types.js\");\nconst _shared = __webpack_require__(/*! ../shared */ \"(ssr)/./node_modules/next/dist/client/dev/hot-reloader/shared.js\");\nconst _hotreloaderapp = __webpack_require__(/*! ./hot-reloader-app */ \"(ssr)/./node_modules/next/dist/client/dev/hot-reloader/app/hot-reloader-app.js\");\nconst _forwardlogs = __webpack_require__(/*! ../../../../next-devtools/userspace/app/forward-logs */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/forward-logs.js\");\nconst _invarianterror = __webpack_require__(/*! ../../../../shared/lib/invariant-error */ \"(ssr)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nconst _constants = __webpack_require__(/*! ../../../../lib/constants */ \"(ssr)/./node_modules/next/dist/lib/constants.js\");\nlet reconnections = 0;\nlet reloading = false;\nlet serverSessionId = null;\nlet mostRecentCompilationHash = null;\nfunction createWebSocket(assetPrefix, staticIndicatorState) {\n if (!self.__next_r) {\n throw Object.defineProperty(new _invarianterror.InvariantError(`Expected a request ID to be defined for the document via self.__next_r.`), \"__NEXT_ERROR_CODE\", {\n value: \"E806\",\n enumerable: false,\n configurable: true\n });\n }\n let webSocket;\n let timer;\n const sendMessage = (data)=>{\n if (webSocket && webSocket.readyState === webSocket.OPEN) {\n webSocket.send(data);\n }\n };\n const processTurbopackMessage = createProcessTurbopackMessage(sendMessage);\n function init() {\n if (webSocket) {\n webSocket.close();\n }\n const newWebSocket = new window.WebSocket(`${(0, _getsocketurl.getSocketUrl)(assetPrefix)}/_next/webpack-hmr?id=${self.__next_r}`);\n newWebSocket.binaryType = 'arraybuffer';\n function handleOnline() {\n _forwardlogs.logQueue.onSocketReady(newWebSocket);\n reconnections = 0;\n window.console.log('[HMR] connected');\n }\n function handleMessage(event) {\n // While the page is reloading, don't respond to any more messages.\n if (reloading) {\n return;\n }\n try {\n const message = event.data instanceof ArrayBuffer ? parseBinaryMessage(event.data) : JSON.parse(event.data);\n // Check for server restart in Turbopack mode\n if (message.type === _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.TURBOPACK_CONNECTED) {\n if (serverSessionId !== null && serverSessionId !== message.data.sessionId) {\n // Either the server's session id has changed and it's a new server, or\n // it's been too long since we disconnected and we should reload the page.\n window.location.reload();\n reloading = true;\n return;\n }\n serverSessionId = message.data.sessionId;\n }\n // Track webpack compilation hash for server restart detection\n if (message.type === _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.SYNC && 'hash' in message) {\n // If we had previously reconnected and the hash changed, the server may have restarted\n if (mostRecentCompilationHash !== null && mostRecentCompilationHash !== message.hash) {\n window.location.reload();\n reloading = true;\n return;\n }\n mostRecentCompilationHash = message.hash;\n }\n (0, _hotreloaderapp.processMessage)(message, sendMessage, processTurbopackMessage, staticIndicatorState);\n } catch (err) {\n (0, _shared.reportInvalidHmrMessage)(event, err);\n }\n }\n function handleDisconnect() {\n newWebSocket.onerror = null;\n newWebSocket.onclose = null;\n newWebSocket.close();\n reconnections++;\n // After 25 reconnects we'll want to reload the page as it indicates the dev server is no longer running.\n if (reconnections > _constants.WEB_SOCKET_MAX_RECONNECTIONS) {\n reloading = true;\n window.location.reload();\n return;\n }\n clearTimeout(timer);\n // Try again after 5 seconds\n timer = setTimeout(init, reconnections > 5 ? 5000 : 1000);\n }\n newWebSocket.onopen = handleOnline;\n newWebSocket.onerror = handleDisconnect;\n newWebSocket.onclose = handleDisconnect;\n newWebSocket.onmessage = handleMessage;\n webSocket = newWebSocket;\n return newWebSocket;\n }\n return init();\n}\nfunction createProcessTurbopackMessage(sendMessage) {\n if (true) {\n return ()=>{};\n }\n let queue = [];\n let callback;\n const processTurbopackMessage = (msg)=>{\n if (callback) {\n callback(msg);\n } else {\n queue.push(msg);\n }\n };\n Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! @vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.ts */ \"(ssr)/./node_modules/next/dist/client/dev/noop-turbopack-hmr.js\"))).then(({ connect })=>{\n connect({\n addMessageListener (cb) {\n callback = cb;\n // Replay all Turbopack messages before we were able to establish the HMR client.\n for (const msg of queue){\n cb(msg);\n }\n queue.length = 0;\n },\n sendMessage,\n onUpdateError: (err)=>(0, _hotreloaderapp.performFullReload)(err, sendMessage)\n });\n });\n return processTurbopackMessage;\n}\nfunction useWebSocketPing(webSocket) {\n const { tree } = (0, _react.useContext)(_approutercontextsharedruntime.GlobalLayoutRouterContext);\n (0, _react.useEffect)(()=>{\n if (!webSocket) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected webSocket to be defined in dev mode.'), \"__NEXT_ERROR_CODE\", {\n value: \"E785\",\n enumerable: false,\n configurable: true\n });\n }\n // Never send pings when using Turbopack as it's not used.\n // Pings were originally used to keep track of active routes in on-demand-entries with webpack.\n if (false) {}\n // Taken from on-demand-entries-client.js\n const interval = setInterval(()=>{\n if (webSocket.readyState === webSocket.OPEN) {\n webSocket.send(JSON.stringify({\n event: 'ping',\n tree,\n appDirRoute: true\n }));\n }\n }, 2500);\n return ()=>clearInterval(interval);\n }, [\n tree,\n webSocket\n ]);\n}\nconst textDecoder = new TextDecoder();\nfunction parseBinaryMessage(data) {\n assertByteLength(data, 1);\n const view = new DataView(data);\n const messageType = view.getUint8(0);\n switch(messageType){\n case _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.ERRORS_TO_SHOW_IN_BROWSER:\n {\n const serializedErrors = new Uint8Array(data, 1);\n return {\n type: _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.ERRORS_TO_SHOW_IN_BROWSER,\n serializedErrors\n };\n }\n case _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.REACT_DEBUG_CHUNK:\n {\n assertByteLength(data, 2);\n const requestIdLength = view.getUint8(1);\n assertByteLength(data, 2 + requestIdLength);\n const requestId = textDecoder.decode(new Uint8Array(data, 2, requestIdLength));\n const chunk = data.byteLength > 2 + requestIdLength ? new Uint8Array(data, 2 + requestIdLength) : null;\n return {\n type: _hotreloadertypes.HMR_MESSAGE_SENT_TO_BROWSER.REACT_DEBUG_CHUNK,\n requestId,\n chunk\n };\n }\n default:\n {\n throw Object.defineProperty(new _invarianterror.InvariantError(`Invalid binary HMR message of type ${messageType}`), \"__NEXT_ERROR_CODE\", {\n value: \"E809\",\n enumerable: false,\n configurable: true\n });\n }\n }\n}\nfunction assertByteLength(data, expectedLength) {\n if (data.byteLength < expectedLength) {\n throw Object.defineProperty(new _invarianterror.InvariantError(`Invalid binary HMR message: insufficient data (expected ${expectedLength} bytes, got ${data.byteLength})`), \"__NEXT_ERROR_CODE\", {\n value: \"E808\",\n enumerable: false,\n configurable: true\n });\n }\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=web-socket.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvaG90LXJlbG9hZGVyL2FwcC93ZWItc29ja2V0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7SUFtSmdCQSw2QkFBNkI7ZUFBN0JBOztJQTVIQUMsZUFBZTtlQUFmQTs7SUFvS0FDLGdCQUFnQjtlQUFoQkE7OzttQ0EzTHNCOzJEQUNJOzBDQUNiOzhDQUt0QjtvQ0FDaUM7NENBS2pDO3lDQUNrQjs0Q0FDTTt1Q0FDYztBQUU3QyxJQUFJQyxnQkFBZ0I7QUFDcEIsSUFBSUMsWUFBWTtBQUNoQixJQUFJQyxrQkFBaUM7QUFDckMsSUFBSUMsNEJBQTJDO0FBRXhDLFNBQVNMLGdCQUNkTSxXQUFtQixFQUNuQkMsb0JBQTBDO0lBRTFDLElBQUksQ0FBQ0MsS0FBS0MsUUFBUSxFQUFFO1FBQ2xCLE1BQU0scUJBRUwsQ0FGSyxJQUFJQyxnQkFBQUEsY0FBYyxDQUN0QixDQUFDLHVFQUF1RSxDQUFDLEdBRHJFO21CQUFBO3dCQUFBOzBCQUFBO1FBRU47SUFDRjtJQUVBLElBQUlDO0lBQ0osSUFBSUM7SUFFSixNQUFNQyxjQUFjLENBQUNDO1FBQ25CLElBQUlILGFBQWFBLFVBQVVJLFVBQVUsS0FBS0osVUFBVUssSUFBSSxFQUFFO1lBQ3hETCxVQUFVTSxJQUFJLENBQUNIO1FBQ2pCO0lBQ0Y7SUFFQSxNQUFNSSwwQkFBMEJuQiw4QkFBOEJjO0lBRTlELFNBQVNNO1FBQ1AsSUFBSVIsV0FBVztZQUNiQSxVQUFVUyxLQUFLO1FBQ2pCO1FBRUEsTUFBTUMsZUFBZSxJQUFJQyxPQUFPQyxTQUFTLENBQ3ZDLEdBQUdDLENBQUFBLEdBQUFBLGNBQUFBLFlBQUFBLEVBQWFsQixhQUFhLHNCQUFzQixFQUFFRSxLQUFLQyxRQUFRLEVBQUU7UUFHdEVZLGFBQWFJLFVBQVUsR0FBRztRQUUxQixTQUFTQztZQUNQQyxhQUFBQSxRQUFRLENBQUNDLGFBQWEsQ0FBQ1A7WUFFdkJuQixnQkFBZ0I7WUFDaEJv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QU07Z0JBQ3ZCLE1BQU02RSxrQkFBa0JSLEtBQUtHLFFBQVEsQ0FBQztnQkFDdENKLGlCQUFpQnBFLE1BQU0sSUFBSTZFO2dCQUUzQixNQUFNQyxZQUFZWixZQUFZYSxNQUFNLENBQ2xDLElBQUlKLFdBQVczRSxNQUFNLEdBQUc2RTtnQkFHMUIsTUFBTUcsUUFDSmhGLEtBQUtpRixVQUFVLEdBQUcsSUFBSUosa0JBQ2xCLElBQUlGLFdBQVczRSxNQUFNLElBQUk2RSxtQkFDekI7Z0JBRU4sT0FBTztvQkFDTHJELE1BQU1DLGtCQUFBQSwyQkFBMkIsQ0FBQ21ELGlCQUFpQjtvQkFDbkRFO29CQUNBRTtnQkFDRjtZQUNGO1FBQ0E7WUFBUztnQkFDUCxNQUFNLHFCQUVMLENBRkssSUFBSXBGLGdCQUFBQSxjQUFjLENBQ3RCLENBQUMsbUNBQW1DLEVBQUUyRSxhQUFhLEdBRC9DOzJCQUFBO2dDQUFBO2tDQUFBO2dCQUVOO1lBQ0Y7SUFDRjtBQUNGO0FBRUEsU0FBU0gsaUJBQWlCcEUsSUFBaUIsRUFBRWtGLGNBQXNCO0lBQ2pFLElBQUlsRixLQUFLaUYsVUFBVSxHQUFHQyxnQkFBZ0I7UUFDcEMsTUFBTSxxQkFFTCxDQUZLLElBQUl0RixnQkFBQUEsY0FBYyxDQUN0QixDQUFDLHdEQUF3RCxFQUFFc0YsZUFBZSxZQUFZLEVBQUVsRixLQUFLaUYsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUR0RzttQkFBQTt3QkFBQTswQkFBQTtRQUVOO0lBQ0Y7QUFDRiIsInNvdXJjZXMiOlsiL3NyYy9jbGllbnQvZGV2L2hvdC1yZWxvYWRlci9hcHAvd2ViLXNvY2tldC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IEdsb2JhbExheW91dFJvdXRlckNvbnRleHQgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB7IGdldFNvY2tldFVybCB9IGZyb20gJy4uL2dldC1zb2NrZXQtdXJsJ1xuaW1wb3J0IHtcbiAgSE1SX01FU1NBR0VfU0VOVF9UT19CUk9XU0VSLFxuICB0eXBlIEhtck1lc3NhZ2VTZW50VG9Ccm93c2VyLFxuICB0eXBlIFR1cmJvcGFja01lc3NhZ2VTZW50VG9Ccm93c2VyLFxufSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2ZXIvZGV2L2hvdC1yZWxvYWRlci10eXBlcydcbmltcG9ydCB7IHJlcG9ydEludmFsaWRIbXJNZXNzYWdlIH0gZnJvbSAnLi4vc2hhcmVkJ1xuaW1wb3J0IHtcbiAgcGVyZm9ybUZ1bGxSZWxvYWQsXG4gIHByb2Nlc3NNZXNzYWdlLFxuICB0eXBlIFN0YXRpY0luZGljYXRvclN0YXRlLFxufSBmcm9tICcuL2hvdC1yZWxvYWRlci1hcHAnXG5pbXBvcnQgeyBsb2dRdWV1ZSB9IGZyb20gJy4uLy4uLy4uLy4uL25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9mb3J3YXJkLWxvZ3MnXG5pbXBvcnQgeyBJbnZhcmlhbnRFcnJvciB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9saWIvaW52YXJpYW50LWVycm9yJ1xuaW1wb3J0IHsgV0VCX1NPQ0tFVF9NQVhfUkVDT05ORUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uLy4uL2xpYi9jb25zdGFudHMnXG5cbmxldCByZWNvbm5lY3Rpb25zID0gMFxubGV0IHJlbG9hZGluZyA9IGZhbHNlXG5sZXQgc2VydmVyU2Vzc2lvbklkOiBudW1iZXIgfCBudWxsID0gbnVsbFxubGV0IG1vc3RSZWNlbnRDb21waWxhdGlvbkhhc2g6IHN0cmluZyB8IG51bGwgPSBudWxsXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVXZWJTb2NrZXQoXG4gIGFzc2V0UHJlZml4OiBzdHJpbmcsXG4gIHN0YXRpY0luZGljYXRvclN0YXRlOiBTdGF0aWNJbmRpY2F0b3JTdGF0ZVxuKSB7XG4gIGlmICghc2VsZi5fX25leHRfcikge1xuICAgIHRocm93IG5ldyBJbnZhcmlhbnRFcnJvcihcbiAgICAgIGBFeHBlY3RlZCBhIHJlcXVlc3QgSUQgdG8gYmUgZGVmaW5lZCBmb3IgdGhlIGRvY3VtZW50IHZpYSBzZWxmLl9fbmV4dF9yLmBcbiAgICApXG4gIH1cblxuICBsZXQgd2ViU29ja2V0OiBXZWJTb2NrZXRcbiAgbGV0IHRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PlxuXG4gIGNvbnN0IHNlbmRNZXNzYWdlID0gKGRhdGE6IHN0cmluZykgPT4ge1xuICAgIGlmICh3ZWJTb2NrZXQgJiYgd2ViU29ja2V0LnJlYWR5U3RhdGUgPT09IHdlYlNvY2tldC5PUEVOKSB7XG4gICAgICB3ZWJTb2NrZXQuc2VuZChkYXRhKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHByb2Nlc3NUdXJib3BhY2tNZXNzYWdlID0gY3JlYXRlUHJvY2Vzc1R1cmJvcGFja01lc3NhZ2Uoc2VuZE1lc3NhZ2UpXG5cbiAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICBpZiAod2ViU29ja2V0KSB7XG4gICAgICB3ZWJTb2NrZXQuY2xvc2UoKVxuICAgIH1cblxuICAgIGNvbnN0IG5ld1dlYlNvY2tldCA9IG5ldyB3aW5kb3cuV2ViU29ja2V0KFxuICAgICAgYCR7Z2V0U29ja2V0VXJsKGFzc2V0UHJlZml4KX0vX25leHQvd2VicGFjay1obXI/aWQ9JHtzZWxmLl9fbmV4dF9yfWBcbiAgICApXG5cbiAgICBuZXdXZWJTb2NrZXQuYmluYXJ5VHlwZSA9ICdhcnJheWJ1ZmZlcidcblxuICAgIGZ1bmN0aW9uIGhhbmRsZU9ubGluZSgpIHtcbiAgICAgIGxvZ1F1ZXVlLm9uU29ja2V0UmVhZHkobmV3V2ViU29ja2V0KVxuXG4gICAgICByZWNvbm5lY3Rpb25zID0gMFxuICAgICAgd2luZG93LmNvbnNvbGUubG9nKCdbSE1SXSBjb25uZWN0ZWQnKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZU1lc3NhZ2UoZXZlbnQ6IE1lc3NhZ2VFdmVudCkge1xuICAgICAgLy8gV2hpbGUgdGhlIHBhZ2UgaXMgcmVsb2FkaW5nLCBkb24ndCByZXNwb25kIHRvIGFueSBtb3JlIG1lc3NhZ2VzLlxuICAgICAgaWYgKHJlbG9hZGluZykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbWVzc2FnZTogSG1yTWVzc2FnZVNlbnRUb0Jyb3dzZXIgPVxuICAgICAgICAgIGV2ZW50LmRhdGEgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlclxuICAgICAgICAgICAgPyBwYXJzZUJpbmFyeU1lc3NhZ2UoZXZlbnQuZGF0YSlcbiAgICAgICAgICAgIDogSlNPTi5wYXJzZShldmVudC5kYXRhKVxuXG4gICAgICAgIC8vIENoZWNrIGZvciBzZXJ2ZXIgcmVzdGFydCBpbiBUdXJib3BhY2sgbW9kZVxuICAgICAgICBpZiAobWVzc2FnZS50eXBlID09PSBITVJfTUVTU0FHRV9TRU5UX1RPX0JST1dTRVIuVFVSQk9QQUNLX0NPTk5FQ1RFRCkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHNlcnZlclNlc3Npb25JZCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgc2VydmVyU2Vzc2lvbklkICE9PSBtZXNzYWdlLmRhdGEuc2Vzc2lvbklkXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBFaXRoZXIgdGhlIHNlcnZlcidzIHNlc3Npb24gaWQgaGFzIGNoYW5nZWQgYW5kIGl0J3MgYSBuZXcgc2VydmVyLCBvclxuICAgICAgICAgICAgLy8gaXQncyBiZWVuIHRvbyBsb25nIHNpbmNlIHdlIGRpc2Nvbm5lY3RlZCBhbmQgd2Ugc2hvdWxkIHJlbG9hZCB0aGUgcGFnZS5cbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKVxuICAgICAgICAgICAgcmVsb2FkaW5nID0gdHJ1ZVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIHNlcnZlclNlc3Npb25JZCA9IG1lc3NhZ2UuZGF0YS5zZXNzaW9uSWRcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRyYWNrIHdlYnBhY2sgY29tcGlsYXRpb24gaGFzaCBmb3Igc2VydmVyIHJlc3RhcnQgZGV0ZWN0aW9uXG4gICAgICAgIGlmIChcbiAgICAgICAgICBtZXNzYWdlLnR5cGUgPT09IEhNUl9NRVNTQUdFX1NFTlRfVE9fQlJPV1NFUi5TWU5DICYmXG4gICAgICAgICAgJ2hhc2gnIGluIG1lc3NhZ2VcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gSWYgd2UgaGFkIHByZXZpb3VzbHkgcmVjb25uZWN0ZWQgYW5kIHRoZSBoYXNoIGNoYW5nZWQsIHRoZSBzZXJ2ZXIgbWF5IGhhdmUgcmVzdGFydGVkXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgbW9zdFJlY2VudENvbXBpbGF0aW9uSGFzaCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgbW9zdFJlY2VudENvbXBpbGF0aW9uSGFzaCAhPT0gbWVzc2FnZS5oYXNoXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKClcbiAgICAgICAgICAgIHJlbG9hZGluZyA9IHRydWVcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgICBtb3N0UmVjZW50Q29tcGlsYXRpb25IYXNoID0gbWVzc2FnZS5oYXNoXG4gICAgICAgIH1cblxuICAgICAgICBwcm9jZXNzTWVzc2FnZShcbiAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgIHNlbmRNZXNzYWdlLFxuICAgICAgICAgIHByb2Nlc3NUdXJib3BhY2tNZXNzYWdlLFxuICAgICAgICAgIHN0YXRpY0luZGljYXRvclN0YXRlXG4gICAgICAgIClcbiAgICAgIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgICAgICByZXBvcnRJbnZhbGlkSG1yTWVzc2FnZShldmVudCwgZXJyKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZURpc2Nvbm5lY3QoKSB7XG4gICAgICBuZXdXZWJTb2NrZXQub25lcnJvciA9IG51bGxcbiAgICAgIG5ld1dlYlNvY2tldC5vbmNsb3NlID0gbnVsbFxuICAgICAgbmV3V2ViU29ja2V0LmNsb3NlKClcbiAgICAgIHJlY29ubmVjdGlvbnMrK1xuXG4gICAgICAvLyBBZnRlciAyNSByZWNvbm5lY3RzIHdlJ2xsIHdhbnQgdG8gcmVsb2FkIHRoZSBwYWdlIGFzIGl0IGluZGljYXRlcyB0aGUgZGV2IHNlcnZlciBpcyBubyBsb25nZXIgcnVubmluZy5cbiAgICAgIGlmIChyZWNvbm5lY3Rpb25zID4gV0VCX1NPQ0tFVF9NQVhfUkVDT05ORUNUSU9OUykge1xuICAgICAgICByZWxvYWRpbmcgPSB0cnVlXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKVxuICAgICAgLy8gVHJ5IGFnYWluIGFmdGVyIDUgc2Vjb25kc1xuICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KGluaXQsIHJlY29ubmVjdGlvbnMgPiA1ID8gNTAwMCA6IDEwMDApXG4gICAgfVxuXG4gICAgbmV3V2ViU29ja2V0Lm9ub3BlbiA9IGhhbmRsZU9ubGluZVxuICAgIG5ld1dlYlNvY2tldC5vbmVycm9yID0gaGFuZGxlRGlzY29ubmVjdFxuICAgIG5ld1dlYlNvY2tldC5vbmNsb3NlID0gaGFuZGxlRGlzY29ubmVjdFxuICAgIG5ld1dlYlNvY2tldC5vbm1lc3NhZ2UgPSBoYW5kbGVNZXNzYWdlXG5cbiAgICB3ZWJTb2NrZXQgPSBuZXdXZWJTb2NrZXRcbiAgICByZXR1cm4gbmV3V2ViU29ja2V0XG4gIH1cblxuICByZXR1cm4gaW5pdCgpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm9jZXNzVHVyYm9wYWNrTWVzc2FnZShcbiAgc2VuZE1lc3NhZ2U6IChkYXRhOiBzdHJpbmcpID0+IHZvaWRcbik6IChtc2c6IFR1cmJvcGFja01lc3NhZ2VTZW50VG9Ccm93c2VyKSA9PiB2b2lkIHtcbiAgaWYgKCFwcm9jZXNzLmVudi5UVVJCT1BBQ0spIHtcbiAgICByZXR1cm4gKCkgPT4ge31cbiAgfVxuXG4gIGxldCBxdWV1ZTogVHVyYm9wYWNrTWVzc2FnZVNlbnRUb0Jyb3dzZXJbXSA9IFtdXG4gIGxldCBjYWxsYmFjazogKChtc2c6IFR1cmJvcGFja01lc3NhZ2VTZW50VG9Ccm93c2VyKSA9PiB2b2lkKSB8IHVuZGVmaW5lZFxuXG4gIGNvbnN0IHByb2Nlc3NUdXJib3BhY2tNZXNzYWdlID0gKG1zZzogVHVyYm9wYWNrTWVzc2FnZVNlbnRUb0Jyb3dzZXIpID0+IHtcbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrKG1zZylcbiAgICB9IGVsc2Uge1xuICAgICAgcXVldWUucHVzaChtc2cpXG4gICAgfVxuICB9XG5cbiAgaW1wb3J0KFxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgcmVxdWlyZXMgXCJtb2R1bGVSZXNvbHV0aW9uXCI6IFwibm9kZTE2XCIgaW4gdHNjb25maWcuanNvbiBhbmQgbm90IC50cyBleHRlbnNpb25cbiAgICAnQHZlcmNlbC90dXJib3BhY2stZWNtYXNjcmlwdC1ydW50aW1lL2Jyb3dzZXIvZGV2L2htci1jbGllbnQvaG1yLWNsaWVudC50cydcbiAgKS50aGVuKCh7IGNvbm5lY3QgfSkgPT4ge1xuICAgIGNvbm5lY3Qoe1xuICAgICAgYWRkTWVzc2FnZUxpc3RlbmVyKGNiOiAobXNnOiBUdXJib3BhY2tNZXNzYWdlU2VudFRvQnJvd3NlcikgPT4gdm9pZCkge1xuICAgICAgICBjYWxsYmFjayA9IGNiXG5cbiAgICAgICAgLy8gUmVwbGF5IGFsbCBUdXJib3BhY2sgbWVzc2FnZXMgYmVmb3JlIHdlIHdlcmUgYWJsZSB0byBlc3RhYmxpc2ggdGhlIEhNUiBjbGllbnQuXG4gICAgICAgIGZvciAoY29uc3QgbXNnIG9mIHF1ZXVlKSB7XG4gICAgICAgICAgY2IobXNnKVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlLmxlbmd0aCA9IDBcbiAgICAgIH0sXG4gICAgICBzZW5kTWVzc2FnZSxcbiAgICAgIG9uVXBkYXRlRXJyb3I6IChlcnI6IHVua25vd24pID0+IHBlcmZvcm1GdWxsUmVsb2FkKGVyciwgc2VuZE1lc3NhZ2UpLFxuICAgIH0pXG4gIH0pXG5cbiAgcmV0dXJuIHByb2Nlc3NUdXJib3BhY2tNZXNzYWdlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VXZWJTb2NrZXRQaW5nKHdlYlNvY2tldDogV2ViU29ja2V0IHwgdW5kZWZpbmVkKSB7XG4gIGNvbnN0IHsgdHJlZSB9ID0gdXNlQ29udGV4dChHbG9iYWxMYXlvdXRSb3V0ZXJDb250ZXh0KVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF3ZWJTb2NrZXQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhcmlhbnRFcnJvcignRXhwZWN0ZWQgd2ViU29ja2V0IHRvIGJlIGRlZmluZWQgaW4gZGV2IG1vZGUuJylcbiAgICB9XG5cbiAgICAvLyBOZXZlciBzZW5kIHBpbmdzIHdoZW4gdXNpbmcgVHVyYm9wYWNrIGFzIGl0J3Mgbm90IHVzZWQuXG4gICAgLy8gUGluZ3Mgd2VyZSBvcmlnaW5hbGx5IHVzZWQgdG8ga2VlcCB0cmFjayBvZiBhY3RpdmUgcm91dGVzIGluIG9uLWRlbWFuZC1lbnRyaWVzIHdpdGggd2VicGFjay5cbiAgICBpZiAocHJvY2Vzcy5lbnYuVFVSQk9QQUNLKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBUYWtlbiBmcm9tIG9uLWRlbWFuZC1lbnRyaWVzLWNsaWVudC5qc1xuICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgaWYgKHdlYlNvY2tldC5yZWFkeVN0YXRlID09PSB3ZWJTb2NrZXQuT1BFTikge1xuICAgICAgICB3ZWJTb2NrZXQuc2VuZChcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBldmVudDogJ3BpbmcnLFxuICAgICAgICAgICAgdHJlZSxcbiAgICAgICAgICAgIGFwcERpclJvdXRlOiB0cnVlLFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9LCAyNTAwKVxuICAgIHJldHVybiAoKSA9PiBjbGVhckludGVydmFsKGludGVydmFsKVxuICB9LCBbdHJlZSwgd2ViU29ja2V0XSlcbn1cblxuY29uc3QgdGV4dERlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKVxuXG5mdW5jdGlvbiBwYXJzZUJpbmFyeU1lc3NhZ2UoZGF0YTogQXJyYXlCdWZmZXIpOiBIbXJNZXNzYWdlU2VudFRvQnJvd3NlciB7XG4gIGFzc2VydEJ5dGVMZW5ndGgoZGF0YSwgMSlcbiAgY29uc3QgdmlldyA9IG5ldyBEYXRhVmlldyhkYXRhKVxuICBjb25zdCBtZXNzYWdlVHlwZSA9IHZpZXcuZ2V0VWludDgoMClcblxuICBzd2l0Y2ggKG1lc3NhZ2VUeXBlKSB7XG4gICAgY2FzZSBITVJfTUVTU0FHRV9TRU5UX1RPX0JST1dTRVIuRVJST1JTX1RPX1NIT1dfSU5fQlJPV1NFUjoge1xuICAgICAgY29uc3Qgc2VyaWFsaXplZEVycm9ycyA9IG5ldyBVaW50OEFycmF5KGRhdGEsIDEpXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IEhNUl9NRVNTQUdFX1NFTlRfVE9fQlJPV1NFUi5FUlJPUlNfVE9fU0hPV19JTl9CUk9XU0VSLFxuICAgICAgICBzZXJpYWxpemVkRXJyb3JzLFxuICAgICAgfVxuICAgIH1cbiAgICBjYXNlIEhNUl9NRVNTQUdFX1NFTlRfVE9fQlJPV1NFUi5SRUFDVF9ERUJVR19DSFVOSzoge1xuICAgICAgYXNzZXJ0Qnl0ZUxlbmd0aChkYXRhLCAyKVxuICAgICAgY29uc3QgcmVxdWVzdElkTGVuZ3RoID0gdmlldy5nZXRVaW50OCgxKVxuICAgICAgYXNzZXJ0Qnl0ZUxlbmd0aChkYXRhLCAyICsgcmVxdWVzdElkTGVuZ3RoKVxuXG4gICAgICBjb25zdCByZXF1ZXN0SWQgPSB0ZXh0RGVjb2Rlci5kZWNvZGUoXG4gICAgICAgIG5ldyBVaW50OEFycmF5KGRhdGEsIDIsIHJlcXVlc3RJZExlbmd0aClcbiAgICAgIClcblxuICAgICAgY29uc3QgY2h1bmsgPVxuICAgICAgICBkYXRhLmJ5dGVMZW5ndGggPiAyICsgcmVxdWVzdElkTGVuZ3RoXG4gICAgICAgICAgPyBuZXcgVWludDhBcnJheShkYXRhLCAyICsgcmVxdWVzdElkTGVuZ3RoKVxuICAgICAgICAgIDogbnVsbFxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBITVJfTUVTU0FHRV9TRU5UX1RPX0JST1dTRVIuUkVBQ1RfREVCVUdfQ0hVTkssXG4gICAgICAgIHJlcXVlc3RJZCxcbiAgICAgICAgY2h1bmssXG4gICAgICB9XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHRocm93IG5ldyBJbnZhcmlhbnRFcnJvcihcbiAgICAgICAgYEludmFsaWQgYmluYXJ5IEhNUiBtZXNzYWdlIG9mIHR5cGUgJHttZXNzYWdlVHlwZX1gXG4gICAgICApXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydEJ5dGVMZW5ndGgoZGF0YTogQXJyYXlCdWZmZXIsIGV4cGVjdGVkTGVuZ3RoOiBudW1iZXIpIHtcbiAgaWYgKGRhdGEuYnl0ZUxlbmd0aCA8IGV4cGVjdGVkTGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEludmFyaWFudEVycm9yKFxuICAgICAgYEludmFsaWQgYmluYXJ5IEhNUiBtZXNzYWdlOiBpbnN1ZmZpY2llbnQgZGF0YSAoZXhwZWN0ZWQgJHtleHBlY3RlZExlbmd0aH0gYnl0ZXMsIGdvdCAke2RhdGEuYnl0ZUxlbmd0aH0pYFxuICAgIClcbiAgfVxufVxuIl0sIm5hbWVzIjpbImNyZWF0ZVByb2Nlc3NUdXJib3BhY2tNZXNzYWdlIiwiY3JlYXRlV2ViU29ja2V0IiwidXNlV2ViU29ja2V0UGluZyIsInJlY29ubmVjdGlvbnMiLCJyZWxvYWRpbmciLCJzZXJ2ZXJTZXNzaW9uSWQiLCJtb3N0UmVjZW50Q29tcGlsYXRpb25IYXNoIiwiYXNzZXRQcmVmaXgiLCJzdGF0aWNJbmRpY2F0b3JTdGF0ZSIsInNlbGYiLCJfX25leHRfciIsIkludmFyaWFudEVycm9yIiwid2ViU29ja2V0IiwidGltZXIiLCJzZW5kTWVzc2FnZSIsImRhdGEiLCJyZWFkeVN0YXRlIiwiT1BFTiIsInNlbmQiLCJwcm9jZXNzVHVyYm9wYWNrTWVzc2FnZSIsImluaXQiLCJjbG9zZSIsIm5ld1dlYlNvY2tldCIsIndpbmRvdyIsIldlYlNvY2tldCIsImdldFNvY2tldFVybCIsImJpbmFyeVR5cGUiLCJoYW5kbGVPbmxpbmUiLCJsb2dRdWV1ZSIsIm9uU29ja2V0UmVhZHkiLCJjb25zb2xlIiwibG9nIiwiaGFuZGxlTWVzc2FnZSIsImV2ZW50IiwibWVzc2FnZSIsIkFycmF5QnVmZmVyIiwicGFyc2VCaW5hcnlNZXNzYWdlIiwiSlNPTiIsInBhcnNlIiwidHlwZSIsIkhNUl9NRVNTQUdFX1NFTlRfVE9fQlJPV1NFUiIsIlRVUkJPUEFDS19DT05ORUNURUQiLCJzZXNzaW9uSWQiLCJsb2NhdGlvbiIsInJlbG9hZCIsIlNZTkMiLCJoYXNoIiwicHJvY2Vzc01lc3NhZ2UiLCJlcnIiLCJyZXBvcnRJbnZhbGlkSG1yTWVzc2FnZSIsImhhbmRsZURpc2Nvbm5lY3QiLCJvbmVycm9yIiwib25jbG9zZSIsIldFQl9TT0NLRVRfTUFYX1JFQ09OTkVDVElPTlMiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0Iiwib25vcGVuIiwib25tZXNzYWdlIiwicHJvY2VzcyIsImVudiIsIlRVUkJPUEFDSyIsInF1ZXVlIiwiY2FsbGJhY2siLCJtc2ciLCJwdXNoIiwidGhlbiIsImNvbm5lY3QiLCJhZGRNZXNzYWdlTGlzdGVuZXIiLCJjYiIsImxlbmd0aCIsIm9uVXBkYXRlRXJyb3IiLCJwZXJmb3JtRnVsbFJlbG9hZCIsInRyZWUiLCJ1c2VDb250ZXh0IiwiR2xvYmFsTGF5b3V0Um91dGVyQ29udGV4dCIsInVzZUVmZmVjdCIsImludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJzdHJpbmdpZnkiLCJhcHBEaXJSb3V0ZSIsImNsZWFySW50ZXJ2YWwiLCJ0ZXh0RGVjb2RlciIsIlRleHREZWNvZGVyIiwiYXNzZXJ0Qnl0ZUxlbmd0aCIsInZpZXciLCJEYXRhVmlldyIsIm1lc3NhZ2VUeXBlIiwiZ2V0VWludDgiLCJFUlJPUlNfVE9fU0hPV19JTl9CUk9XU0VSIiwic2VyaWFsaXplZEVycm9ycyIsIlVpbnQ4QXJyYXkiLCJSRUFDVF9ERUJVR19DSFVOSyIsInJlcXVlc3RJZExlbmd0aCIsInJlcXVlc3RJZCIsImRlY29kZSIsImNodW5rIiwiYnl0ZUxlbmd0aCIsImV4cGVjdGVkTGVuZ3RoIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/dev/hot-reloader/app/web-socket.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/dev/hot-reloader/get-socket-url.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/dev/hot-reloader/get-socket-url.js ***!
|
||
\**************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getSocketUrl\", ({\n enumerable: true,\n get: function() {\n return getSocketUrl;\n }\n}));\nconst _normalizedassetprefix = __webpack_require__(/*! ../../../shared/lib/normalized-asset-prefix */ \"(ssr)/./node_modules/next/dist/shared/lib/normalized-asset-prefix.js\");\nfunction getSocketProtocol(assetPrefix) {\n let protocol = window.location.protocol;\n try {\n // assetPrefix is a url\n protocol = new URL(assetPrefix).protocol;\n } catch {}\n return protocol === 'http:' ? 'ws:' : 'wss:';\n}\nfunction getSocketUrl(assetPrefix) {\n const prefix = (0, _normalizedassetprefix.normalizedAssetPrefix)(assetPrefix);\n const protocol = getSocketProtocol(assetPrefix || '');\n if (URL.canParse(prefix)) {\n // since normalized asset prefix is ensured to be a URL format,\n // we can safely replace the protocol\n return prefix.replace(/^http/, 'ws');\n }\n const { hostname, port } = window.location;\n return `${protocol}//${hostname}${port ? `:${port}` : ''}${prefix}`;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=get-socket-url.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvaG90LXJlbG9hZGVyL2dldC1zb2NrZXQtdXJsLmpzIiwibWFwcGluZ3MiOiI7Ozs7Z0RBYWdCQTs7O2VBQUFBOzs7bURBYnNCO0FBRXRDLFNBQVNDLGtCQUFrQkMsV0FBbUI7SUFDNUMsSUFBSUMsV0FBV0MsT0FBT0MsUUFBUSxDQUFDRixRQUFRO0lBRXZDLElBQUk7UUFDRix1QkFBdUI7UUFDdkJBLFdBQVcsSUFBSUcsSUFBSUosYUFBYUMsUUFBUTtJQUMxQyxFQUFFLE9BQU0sQ0FBQztJQUVULE9BQU9BLGFBQWEsVUFBVSxRQUFRO0FBQ3hDO0FBRU8sU0FBU0gsYUFBYUUsV0FBK0I7SUFDMUQsTUFBTUssU0FBU0MsQ0FBQUEsR0FBQUEsdUJBQUFBLHFCQUFBQSxFQUFzQk47SUFDckMsTUFBTUMsV0FBV0Ysa0JBQWtCQyxlQUFlO0lBRWxELElBQUlJLElBQUlHLFFBQVEsQ0FBQ0YsU0FBUztRQUN4QiwrREFBK0Q7UUFDL0QscUNBQXFDO1FBQ3JDLE9BQU9BLE9BQU9HLE9BQU8sQ0FBQyxTQUFTO0lBQ2pDO0lBRUEsTUFBTSxFQUFFQyxRQUFRLEVBQUVDLElBQUksRUFBRSxHQUFHUixPQUFPQyxRQUFRO0lBQzFDLE9BQU8sR0FBR0YsU0FBUyxFQUFFLEVBQUVRLFdBQVdDLE9BQU8sQ0FBQyxDQUFDLEVBQUVBLE1BQU0sR0FBRyxLQUFLTCxRQUFRO0FBQ3JFIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2NsaWVudC9kZXYvaG90LXJlbG9hZGVyL2dldC1zb2NrZXQtdXJsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG5vcm1hbGl6ZWRBc3NldFByZWZpeCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvbm9ybWFsaXplZC1hc3NldC1wcmVmaXgnXG5cbmZ1bmN0aW9uIGdldFNvY2tldFByb3RvY29sKGFzc2V0UHJlZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgcHJvdG9jb2wgPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2xcblxuICB0cnkge1xuICAgIC8vIGFzc2V0UHJlZml4IGlzIGEgdXJsXG4gICAgcHJvdG9jb2wgPSBuZXcgVVJMKGFzc2V0UHJlZml4KS5wcm90b2NvbFxuICB9IGNhdGNoIHt9XG5cbiAgcmV0dXJuIHByb3RvY29sID09PSAnaHR0cDonID8gJ3dzOicgOiAnd3NzOidcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNvY2tldFVybChhc3NldFByZWZpeDogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgY29uc3QgcHJlZml4ID0gbm9ybWFsaXplZEFzc2V0UHJlZml4KGFzc2V0UHJlZml4KVxuICBjb25zdCBwcm90b2NvbCA9IGdldFNvY2tldFByb3RvY29sKGFzc2V0UHJlZml4IHx8ICcnKVxuXG4gIGlmIChVUkwuY2FuUGFyc2UocHJlZml4KSkge1xuICAgIC8vIHNpbmNlIG5vcm1hbGl6ZWQgYXNzZXQgcHJlZml4IGlzIGVuc3VyZWQgdG8gYmUgYSBVUkwgZm9ybWF0LFxuICAgIC8vIHdlIGNhbiBzYWZlbHkgcmVwbGFjZSB0aGUgcHJvdG9jb2xcbiAgICByZXR1cm4gcHJlZml4LnJlcGxhY2UoL15odHRwLywgJ3dzJylcbiAgfVxuXG4gIGNvbnN0IHsgaG9zdG5hbWUsIHBvcnQgfSA9IHdpbmRvdy5sb2NhdGlvblxuICByZXR1cm4gYCR7cHJvdG9jb2x9Ly8ke2hvc3RuYW1lfSR7cG9ydCA/IGA6JHtwb3J0fWAgOiAnJ30ke3ByZWZpeH1gXG59XG4iXSwibmFtZXMiOlsiZ2V0U29ja2V0VXJsIiwiZ2V0U29ja2V0UHJvdG9jb2wiLCJhc3NldFByZWZpeCIsInByb3RvY29sIiwid2luZG93IiwibG9jYXRpb24iLCJVUkwiLCJwcmVmaXgiLCJub3JtYWxpemVkQXNzZXRQcmVmaXgiLCJjYW5QYXJzZSIsInJlcGxhY2UiLCJob3N0bmFtZSIsInBvcnQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/dev/hot-reloader/get-socket-url.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/dev/hot-reloader/shared.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/dev/hot-reloader/shared.js ***!
|
||
\******************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n REACT_REFRESH_FULL_RELOAD: function() {\n return REACT_REFRESH_FULL_RELOAD;\n },\n REACT_REFRESH_FULL_RELOAD_FROM_ERROR: function() {\n return REACT_REFRESH_FULL_RELOAD_FROM_ERROR;\n },\n reportInvalidHmrMessage: function() {\n return reportInvalidHmrMessage;\n }\n});\nconst REACT_REFRESH_FULL_RELOAD = '[Fast Refresh] performing full reload\\n\\n' + \"Fast Refresh will perform a full reload when you edit a file that's imported by modules outside of the React rendering tree.\\n\" + 'You might have a file which exports a React component but also exports a value that is imported by a non-React component file.\\n' + 'Consider migrating the non-React component export to a separate file and importing it into both files.\\n\\n' + 'It is also possible the parent component of the component you edited is a class component, which disables Fast Refresh.\\n' + 'Fast Refresh requires at least one parent function component in your React tree.';\nconst REACT_REFRESH_FULL_RELOAD_FROM_ERROR = '[Fast Refresh] performing full reload because your application had an unrecoverable error';\nfunction reportInvalidHmrMessage(message, err) {\n console.warn('[HMR] Invalid message: ' + JSON.stringify(message) + '\\n' + (err instanceof Error && err?.stack || ''));\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=shared.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvaG90LXJlbG9hZGVyL3NoYXJlZC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFFYUEseUJBQXlCO2VBQXpCQTs7SUFRQUMsb0NBQW9DO2VBQXBDQTs7SUFHR0MsdUJBQXVCO2VBQXZCQTs7O0FBWFQsTUFBTUYsNEJBQ1gsOENBQ0EsbUlBQ0EscUlBQ0EsK0dBQ0EsOEhBQ0E7QUFFSyxNQUFNQyx1Q0FDWDtBQUVLLFNBQVNDLHdCQUNkQyxPQUF3RCxFQUN4REMsR0FBWTtJQUVaQyxRQUFRQyxJQUFJLENBQ1YsNEJBQ0VDLEtBQUtDLFNBQVMsQ0FBQ0wsV0FDZixPQUNDLENBQUNDLGVBQWVLLFNBQVNMLEtBQUtNLFNBQVUsR0FBQztBQUVoRCIsInNvdXJjZXMiOlsiL1VzZXJzL3NyYy9jbGllbnQvZGV2L2hvdC1yZWxvYWRlci9zaGFyZWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBIbXJNZXNzYWdlU2VudFRvQnJvd3NlciB9IGZyb20gJy4uLy4uLy4uL3NlcnZlci9kZXYvaG90LXJlbG9hZGVyLXR5cGVzJ1xuXG5leHBvcnQgY29uc3QgUkVBQ1RfUkVGUkVTSF9GVUxMX1JFTE9BRCA9XG4gICdbRmFzdCBSZWZyZXNoXSBwZXJmb3JtaW5nIGZ1bGwgcmVsb2FkXFxuXFxuJyArXG4gIFwiRmFzdCBSZWZyZXNoIHdpbGwgcGVyZm9ybSBhIGZ1bGwgcmVsb2FkIHdoZW4geW91IGVkaXQgYSBmaWxlIHRoYXQncyBpbXBvcnRlZCBieSBtb2R1bGVzIG91dHNpZGUgb2YgdGhlIFJlYWN0IHJlbmRlcmluZyB0cmVlLlxcblwiICtcbiAgJ1lvdSBtaWdodCBoYXZlIGEgZmlsZSB3aGljaCBleHBvcnRzIGEgUmVhY3QgY29tcG9uZW50IGJ1dCBhbHNvIGV4cG9ydHMgYSB2YWx1ZSB0aGF0IGlzIGltcG9ydGVkIGJ5IGEgbm9uLVJlYWN0IGNvbXBvbmVudCBmaWxlLlxcbicgK1xuICAnQ29uc2lkZXIgbWlncmF0aW5nIHRoZSBub24tUmVhY3QgY29tcG9uZW50IGV4cG9ydCB0byBhIHNlcGFyYXRlIGZpbGUgYW5kIGltcG9ydGluZyBpdCBpbnRvIGJvdGggZmlsZXMuXFxuXFxuJyArXG4gICdJdCBpcyBhbHNvIHBvc3NpYmxlIHRoZSBwYXJlbnQgY29tcG9uZW50IG9mIHRoZSBjb21wb25lbnQgeW91IGVkaXRlZCBpcyBhIGNsYXNzIGNvbXBvbmVudCwgd2hpY2ggZGlzYWJsZXMgRmFzdCBSZWZyZXNoLlxcbicgK1xuICAnRmFzdCBSZWZyZXNoIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBwYXJlbnQgZnVuY3Rpb24gY29tcG9uZW50IGluIHlvdXIgUmVhY3QgdHJlZS4nXG5cbmV4cG9ydCBjb25zdCBSRUFDVF9SRUZSRVNIX0ZVTExfUkVMT0FEX0ZST01fRVJST1IgPVxuICAnW0Zhc3QgUmVmcmVzaF0gcGVyZm9ybWluZyBmdWxsIHJlbG9hZCBiZWNhdXNlIHlvdXIgYXBwbGljYXRpb24gaGFkIGFuIHVucmVjb3ZlcmFibGUgZXJyb3InXG5cbmV4cG9ydCBmdW5jdGlvbiByZXBvcnRJbnZhbGlkSG1yTWVzc2FnZShcbiAgbWVzc2FnZTogSG1yTWVzc2FnZVNlbnRUb0Jyb3dzZXIgfCBNZXNzYWdlRXZlbnQ8dW5rbm93bj4sXG4gIGVycjogdW5rbm93blxuKSB7XG4gIGNvbnNvbGUud2FybihcbiAgICAnW0hNUl0gSW52YWxpZCBtZXNzYWdlOiAnICtcbiAgICAgIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpICtcbiAgICAgICdcXG4nICtcbiAgICAgICgoZXJyIGluc3RhbmNlb2YgRXJyb3IgJiYgZXJyPy5zdGFjaykgfHwgJycpXG4gIClcbn1cbiJdLCJuYW1lcyI6WyJSRUFDVF9SRUZSRVNIX0ZVTExfUkVMT0FEIiwiUkVBQ1RfUkVGUkVTSF9GVUxMX1JFTE9BRF9GUk9NX0VSUk9SIiwicmVwb3J0SW52YWxpZEhtck1lc3NhZ2UiLCJtZXNzYWdlIiwiZXJyIiwiY29uc29sZSIsIndhcm4iLCJKU09OIiwic3RyaW5naWZ5IiwiRXJyb3IiLCJzdGFjayJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/dev/hot-reloader/shared.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/dev/hot-reloader/turbopack-hot-reloader-common.js":
|
||
/*!*****************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/dev/hot-reloader/turbopack-hot-reloader-common.js ***!
|
||
\*****************************************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"TurbopackHmr\", ({\n enumerable: true,\n get: function() {\n return TurbopackHmr;\n }\n}));\n// How long to wait before reporting the HMR start, used to suppress irrelevant\n// `BUILDING` events. Does not impact reported latency.\nconst TURBOPACK_HMR_START_DELAY_MS = 100;\nclass TurbopackHmr {\n #updatedModules;\n #startMsSinceEpoch;\n #lastUpdateMsSinceEpoch;\n #deferredReportHmrStartId;\n #reportedHmrStart;\n constructor(){\n this.#updatedModules = new Set();\n this.#reportedHmrStart = false;\n }\n // HACK: Turbopack tends to generate a lot of irrelevant \"BUILDING\" actions,\n // as it reports *any* compilation, including fully no-op/cached compilations\n // and those unrelated to HMR. Fixing this would require significant\n // architectural changes.\n //\n // Work around this by deferring any \"rebuilding\" message by 100ms. If we get\n // a BUILT event within that threshold and nothing has changed, just suppress\n // the message entirely.\n #runDeferredReportHmrStart() {\n if (this.#deferredReportHmrStartId != null) {\n console.log('[Fast Refresh] rebuilding');\n this.#reportedHmrStart = true;\n this.#cancelDeferredReportHmrStart();\n }\n }\n #cancelDeferredReportHmrStart() {\n clearTimeout(this.#deferredReportHmrStartId);\n this.#deferredReportHmrStartId = undefined;\n }\n onBuilding() {\n this.#lastUpdateMsSinceEpoch = undefined;\n this.#cancelDeferredReportHmrStart();\n this.#startMsSinceEpoch = Date.now();\n // report the HMR start after a short delay\n this.#deferredReportHmrStartId = setTimeout(()=>this.#runDeferredReportHmrStart(), self.__NEXT_HMR_TURBOPACK_REPORT_NOISY_NOOP_EVENTS ? 0 : TURBOPACK_HMR_START_DELAY_MS);\n }\n /** Helper for other `onEvent` methods. */ #onUpdate() {\n this.#runDeferredReportHmrStart();\n this.#lastUpdateMsSinceEpoch = Date.now();\n }\n onTurbopackMessage(msg) {\n this.#onUpdate();\n const updatedModules = extractModulesFromTurbopackMessage(msg.data);\n for (const module1 of updatedModules){\n this.#updatedModules.add(module1);\n }\n }\n onServerComponentChanges() {\n this.#onUpdate();\n }\n onReloadPage() {\n this.#onUpdate();\n }\n onPageAddRemove() {\n this.#onUpdate();\n }\n /**\n * @returns `null` if the caller should ignore the update entirely. Returns an\n * object with `hasUpdates: false` if the caller should report the end of\n * the HMR in the browser console, but the HMR was a no-op.\n */ onBuilt() {\n // Check that we got *any* `TurbopackMessage`, even if\n // `updatedModules` is empty (not everything gets recorded there).\n //\n // There's also a case where `onBuilt` gets called before `onBuilding`,\n // which can happen during initial page load. Ignore that too!\n const hasUpdates = this.#lastUpdateMsSinceEpoch != null && this.#startMsSinceEpoch != null;\n if (!hasUpdates && !this.#reportedHmrStart) {\n // suppress the update entirely\n this.#cancelDeferredReportHmrStart();\n return null;\n }\n this.#runDeferredReportHmrStart();\n const result = {\n hasUpdates,\n updatedModules: this.#updatedModules,\n startMsSinceEpoch: this.#startMsSinceEpoch,\n endMsSinceEpoch: this.#lastUpdateMsSinceEpoch ?? Date.now()\n };\n this.#updatedModules = new Set();\n this.#reportedHmrStart = false;\n return result;\n }\n}\nfunction extractModulesFromTurbopackMessage(data) {\n const updatedModules = new Set();\n const updates = Array.isArray(data) ? data : [\n data\n ];\n for (const update of updates){\n // TODO this won't capture changes to CSS since they don't result in a \"merged\" update\n if (update.type !== 'partial' || update.instruction.type !== 'ChunkListUpdate' || update.instruction.merged === undefined) {\n continue;\n }\n for (const mergedUpdate of update.instruction.merged){\n for (const name of Object.keys(mergedUpdate.entries)){\n const res = /(.*)\\s+[([].*/.exec(name);\n if (res === null) {\n continue;\n }\n updatedModules.add(res[1]);\n }\n }\n }\n return updatedModules;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=turbopack-hot-reloader-common.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvaG90LXJlbG9hZGVyL3R1cmJvcGFjay1ob3QtcmVsb2FkZXItY29tbW9uLmpzIiwibWFwcGluZ3MiOiI7Ozs7Z0RBb0JhQTs7O2VBQUFBOzs7QUFYYiwrRUFBK0U7QUFDL0UsdURBQXVEO0FBQ3ZELE1BQU1DLCtCQUErQjtBQVM5QixNQUFNRDtLQUNYLGNBQWUsQ0FBYTtLQUM1QixpQkFBa0IsQ0FBb0I7S0FDdEMsc0JBQXVCLENBQW9CO0tBQzNDLHdCQUF5QixDQUEyQztLQUNwRSxnQkFBaUIsQ0FBUztJQUUxQkUsYUFBYztRQUNaLElBQUksRUFBQyxjQUFlLEdBQUcsSUFBSUM7UUFDM0IsSUFBSSxFQUFDLGdCQUFpQixHQUFHO0lBQzNCO0lBRUEsNEVBQTRFO0lBQzVFLDZFQUE2RTtJQUM3RSxvRUFBb0U7SUFDcEUseUJBQXlCO0lBQ3pCLEVBQUU7SUFDRiw2RUFBNkU7SUFDN0UsNkVBQTZFO0lBQzdFLHdCQUF3QjtLQUN4Qix5QkFBMEI7UUFDeEIsSUFBSSxJQUFJLEVBQUMsd0JBQXlCLElBQUksTUFBTTtZQUMxQ0MsUUFBUUMsR0FBRyxDQUFDO1lBQ1osSUFBSSxFQUFDLGdCQUFpQixHQUFHO1lBQ3pCLElBQUksRUFBQyw0QkFBNkI7UUFDcEM7SUFDRjtLQUVBLDRCQUE2QjtRQUMzQkMsYUFBYSxJQUFJLEVBQUMsd0JBQXlCO1FBQzNDLElBQUksRUFBQyx3QkFBeUIsR0FBR0M7SUFDbkM7SUFFQUMsYUFBYTtRQUNYLElBQUksRUFBQyxzQkFBdUIsR0FBR0Q7UUFDL0IsSUFBSSxFQUFDLDRCQUE2QjtRQUNsQyxJQUFJLEVBQUMsaUJBQWtCLEdBQUdFLEtBQUtDLEdBQUc7UUFFbEMsMkNBQTJDO1FBQzNDLElBQUksRUFBQyx3QkFBeUIsR0FBR0MsV0FDL0IsSUFBTSxJQUFJLEVBQUMseUJBQTBCLElBQ3JDLEtBQ0tFLDZDQUE2QyxHQUM5QyxJQUNBWixpQkFIc0U7SUFLOUU7SUFFQSx3Q0FBd0MsSUFDeEMsUUFBUztRQUNQLElBQUksRUFBQyx5QkFBMEI7UUFDL0IsSUFBSSxFQUFDLHNCQUF1QixHQUFHUSxLQUFLQyxHQUFHO0lBQ3pDO0lBRUFJLG1CQUFtQkMsR0FBcUIsRUFBRTtRQUN4QyxJQUFJLEVBQUMsUUFBUztRQUNkLE1BQU1DLGlCQUFpQkMsbUNBQW1DRixJQUFJRyxJQUFJO1FBQ2xFLEtBQUssTUFBTUMsV0FBVUgsZUFBZ0I7WUFDbkMsSUFBSSxFQUFDLGNBQWUsQ0FBQ0ksR0FBRyxDQUFDRDtRQUMzQjtJQUNGO0lBRUFFLDJCQUEyQjtRQUN6QixJQUFJLEVBQUMsUUFBUztJQUNoQjtJQUVBQyxlQUFlO1FBQ2IsSUFBSSxFQUFDLFFBQVM7SUFDaEI7SUFFQUMsa0JBQWtCO1FBQ2hCLElBQUksRUFBQyxRQUFTO0lBQ2hCO0lBRUE7Ozs7R0FJQyxHQUNEQyxVQUE0QjtRQUMxQixzREFBc0Q7UUFDdEQsa0VBQWtFO1FBQ2xFLEVBQUU7UUFDRix1RUFBdUU7UUFDdkUsOERBQThEO1FBQzlELE1BQU1DLGFBQ0osSUFBSSxFQUFDLHNCQUF1QixJQUFJLFFBQVEsSUFBSSxFQUFDLGlCQUFrQixJQUFJO1FBQ3JFLElBQUksQ0FBQ0EsY0FBYyxDQUFDLElBQUksRUFBQyxnQkFBaUIsRUFBRTtZQUMxQywrQkFBK0I7WUFDL0IsSUFBSSxFQUFDLDRCQUE2QjtZQUNsQyxPQUFPO1FBQ1Q7UUFDQSxJQUFJLEVBQUMseUJBQTBCO1FBRS9CLE1BQU1DLFNBQVM7WUFDYkQ7WUFDQVQsZ0JBQWdCLElBQUksRUFBQyxjQUFlO1lBQ3BDVyxtQkFBbUIsSUFBSSxFQUFDLGlCQUFrQjtZQUMxQ0MsaUJBQWlCLElBQUksRUFBQyxzQkFBdUIsSUFBSW5CLEtBQUtDLEdBQUc7UUFDM0Q7UUFDQSxJQUFJLEVBQUMsY0FBZSxHQUFHLElBQUlQO1FBQzNCLElBQUksRUFBQyxnQkFBaUIsR0FBRztRQUN6QixPQUFPdUI7SUFDVDtBQUNGO0FBRUEsU0FBU1QsbUNBQ1BDLElBQXlDO0lBRXpDLE1BQU1GLGlCQUE4QixJQUFJYjtJQUV4QyxNQUFNMEIsVUFBVUMsTUFBTUMsT0FBTyxDQUFDYixRQUFRQSxPQUFPO1FBQUNBO0tBQUs7SUFDbkQsS0FBSyxNQUFNYyxVQUFVSCxRQUFTO1FBQzVCLHNGQUFzRjtRQUN0RixJQUNFRyxPQUFPQyxJQUFJLEtBQUssYUFDaEJELE9BQU9FLFdBQVcsQ0FBQ0QsSUFBSSxLQUFLLHFCQUM1QkQsT0FBT0UsV0FBVyxDQUFDQyxNQUFNLEtBQUs1QixXQUM5QjtZQUNBO1FBQ0Y7UUFFQSxLQUFLLE1BQU02QixnQkFBZ0JKLE9BQU9FLFdBQVcsQ0FBQ0MsTUFBTSxDQUFFO1lBQ3BELEtBQUssTUFBTUUsUUFBUUMsT0FBT0MsSUFBSSxDQUFDSCxhQUFhSSxPQUFPLEVBQUc7Z0JBQ3BELE1BQU1DLE1BQU0sZ0JBQWdCQyxJQUFJLENBQUNMO2dCQUNqQyxJQUFJSSxRQUFRLE1BQU07b0JBQ2hCO2dCQUNGO2dCQUVBekIsZUFBZUksR0FBRyxDQUFDcUIsR0FBRyxDQUFDLEVBQUU7WUFDM0I7UUFDRjtJQUNGO0lBRUEsT0FBT3pCO0FBQ1QiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvY2xpZW50L2Rldi9ob3QtcmVsb2FkZXIvdHVyYm9wYWNrLWhvdC1yZWxvYWRlci1jb21tb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBUdXJib3BhY2tNZXNzYWdlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmVyL2Rldi9ob3QtcmVsb2FkZXItdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFVwZGF0ZSBhcyBUdXJib3BhY2tVcGRhdGUgfSBmcm9tICcuLi8uLi8uLi9idWlsZC9zd2MvdHlwZXMnXG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgX19ORVhUX0hNUl9UVVJCT1BBQ0tfUkVQT1JUX05PSVNZX05PT1BfRVZFTlRTOiBib29sZWFuIHwgdW5kZWZpbmVkXG4gIH1cbn1cblxuLy8gSG93IGxvbmcgdG8gd2FpdCBiZWZvcmUgcmVwb3J0aW5nIHRoZSBITVIgc3RhcnQsIHVzZWQgdG8gc3VwcHJlc3MgaXJyZWxldmFudFxuLy8gYEJVSUxESU5HYCBldmVudHMuIERvZXMgbm90IGltcGFjdCByZXBvcnRlZCBsYXRlbmN5LlxuY29uc3QgVFVSQk9QQUNLX0hNUl9TVEFSVF9ERUxBWV9NUyA9IDEwMFxuXG5pbnRlcmZhY2UgSG1yVXBkYXRlIHtcbiAgaGFzVXBkYXRlczogYm9vbGVhblxuICB1cGRhdGVkTW9kdWxlczogU2V0PHN0cmluZz5cbiAgc3RhcnRNc1NpbmNlRXBvY2g6IG51bWJlclxuICBlbmRNc1NpbmNlRXBvY2g6IG51bWJlclxufVxuXG5leHBvcnQgY2xhc3MgVHVyYm9wYWNrSG1yIHtcbiAgI3VwZGF0ZWRNb2R1bGVzOiBTZXQ8c3RyaW5nPlxuICAjc3RhcnRNc1NpbmNlRXBvY2g6IG51bWJlciB8IHVuZGVmaW5lZFxuICAjbGFzdFVwZGF0ZU1zU2luY2VFcG9jaDogbnVtYmVyIHwgdW5kZWZpbmVkXG4gICNkZWZlcnJlZFJlcG9ydEhtclN0YXJ0SWQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkXG4gICNyZXBvcnRlZEhtclN0YXJ0OiBib29sZWFuXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy4jdXBkYXRlZE1vZHVsZXMgPSBuZXcgU2V0KClcbiAgICB0aGlzLiNyZXBvcnRlZEhtclN0YXJ0ID0gZmFsc2VcbiAgfVxuXG4gIC8vIEhBQ0s6IFR1cmJvcGFjayB0ZW5kcyB0byBnZW5lcmF0ZSBhIGxvdCBvZiBpcnJlbGV2YW50IFwiQlVJTERJTkdcIiBhY3Rpb25zLFxuICAvLyBhcyBpdCByZXBvcnRzICphbnkqIGNvbXBpbGF0aW9uLCBpbmNsdWRpbmcgZnVsbHkgbm8tb3AvY2FjaGVkIGNvbXBpbGF0aW9uc1xuICAvLyBhbmQgdGhvc2UgdW5yZWxhdGVkIHRvIEhNUi4gRml4aW5nIHRoaXMgd291bGQgcmVxdWlyZSBzaWduaWZpY2FudFxuICAvLyBhcmNoaXRlY3R1cmFsIGNoYW5nZXMuXG4gIC8vXG4gIC8vIFdvcmsgYXJvdW5kIHRoaXMgYnkgZGVmZXJyaW5nIGFueSBcInJlYnVpbGRpbmdcIiBtZXNzYWdlIGJ5IDEwMG1zLiBJZiB3ZSBnZXRcbiAgLy8gYSBCVUlMVCBldmVudCB3aXRoaW4gdGhhdCB0aHJlc2hvbGQgYW5kIG5vdGhpbmcgaGFzIGNoYW5nZWQsIGp1c3Qgc3VwcHJlc3NcbiAgLy8gdGhlIG1lc3NhZ2UgZW50aXJlbHkuXG4gICNydW5EZWZlcnJlZFJlcG9ydEhtclN0YXJ0KCkge1xuICAgIGlmICh0aGlzLiNkZWZlcnJlZFJlcG9ydEhtclN0YXJ0SWQgIT0gbnVsbCkge1xuICAgICAgY29uc29sZS5sb2coJ1tGYXN0IFJlZnJlc2hdIHJlYnVpbGRpbmcnKVxuICAgICAgdGhpcy4jcmVwb3J0ZWRIbXJTdGFydCA9IHRydWVcbiAgICAgIHRoaXMuI2NhbmNlbERlZmVycmVkUmVwb3J0SG1yU3RhcnQoKVxuICAgIH1cbiAgfVxuXG4gICNjYW5jZWxEZWZlcnJlZFJlcG9ydEhtclN0YXJ0KCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLiNkZWZlcnJlZFJlcG9ydEhtclN0YXJ0SWQpXG4gICAgdGhpcy4jZGVmZXJyZWRSZXBvcnRIbXJTdGFydElkID0gdW5kZWZpbmVkXG4gIH1cblxuICBvbkJ1aWxkaW5nKCkge1xuICAgIHRoaXMuI2xhc3RVcGRhdGVNc1NpbmNlRXBvY2ggPSB1bmRlZmluZWRcbiAgICB0aGlzLiNjYW5jZWxEZWZlcnJlZFJlcG9ydEhtclN0YXJ0KClcbiAgICB0aGlzLiNzdGFydE1zU2luY2VFcG9jaCA9IERhdGUubm93KClcblxuICAgIC8vIHJlcG9ydCB0aGUgSE1SIHN0YXJ0IGFmdGVyIGEgc2hvcnQgZGVsYXlcbiAgICB0aGlzLiNkZWZlcnJlZFJlcG9ydEhtclN0YXJ0SWQgPSBzZXRUaW1lb3V0KFxuICAgICAgKCkgPT4gdGhpcy4jcnVuRGVmZXJyZWRSZXBvcnRIbXJTdGFydCgpLFxuICAgICAgLy8gZGVidWdnaW5nIGZlYXR1cmU6IGRvbid0IGRlZmVyL3N1cHByZXNzIG5vaXN5IG5vLW9wIEhNUiB1cGRhdGUgbWVzc2FnZXNcbiAgICAgIHNlbGYuX19ORVhUX0hNUl9UVVJCT1BBQ0tfUkVQT1JUX05PSVNZX05PT1BfRVZFTlRTXG4gICAgICAgID8gMFxuICAgICAgICA6IFRVUkJPUEFDS19ITVJfU1RBUlRfREVMQVlfTVNcbiAgICApXG4gIH1cblxuICAvKiogSGVscGVyIGZvciBvdGhlciBgb25FdmVudGAgbWV0aG9kcy4gKi9cbiAgI29uVXBkYXRlKCkge1xuICAgIHRoaXMuI3J1bkRlZmVycmVkUmVwb3J0SG1yU3RhcnQoKVxuICAgIHRoaXMuI2xhc3RVcGRhdGVNc1NpbmNlRXBvY2ggPSBEYXRlLm5vdygpXG4gIH1cblxuICBvblR1cmJvcGFja01lc3NhZ2UobXNnOiBUdXJib3BhY2tNZXNzYWdlKSB7XG4gICAgdGhpcy4jb25VcGRhdGUoKVxuICAgIGNvbnN0IHVwZGF0ZWRNb2R1bGVzID0gZXh0cmFjdE1vZHVsZXNGcm9tVHVyYm9wYWNrTWVzc2FnZShtc2cuZGF0YSlcbiAgICBmb3IgKGNvbnN0IG1vZHVsZSBvZiB1cGRhdGVkTW9kdWxlcykge1xuICAgICAgdGhpcy4jdXBkYXRlZE1vZHVsZXMuYWRkKG1vZHVsZSlcbiAgICB9XG4gIH1cblxuICBvblNlcnZlckNvbXBvbmVudENoYW5nZXMoKSB7XG4gICAgdGhpcy4jb25VcGRhdGUoKVxuICB9XG5cbiAgb25SZWxvYWRQYWdlKCkge1xuICAgIHRoaXMuI29uVXBkYXRlKClcbiAgfVxuXG4gIG9uUGFnZUFkZFJlbW92ZSgpIHtcbiAgICB0aGlzLiNvblVwZGF0ZSgpXG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgYG51bGxgIGlmIHRoZSBjYWxsZXIgc2hvdWxkIGlnbm9yZSB0aGUgdXBkYXRlIGVudGlyZWx5LiBSZXR1cm5zIGFuXG4gICAqICAgb2JqZWN0IHdpdGggYGhhc1VwZGF0ZXM6IGZhbHNlYCBpZiB0aGUgY2FsbGVyIHNob3VsZCByZXBvcnQgdGhlIGVuZCBvZlxuICAgKiAgIHRoZSBITVIgaW4gdGhlIGJyb3dzZXIgY29uc29sZSwgYnV0IHRoZSBITVIgd2FzIGEgbm8tb3AuXG4gICAqL1xuICBvbkJ1aWx0KCk6IEhtclVwZGF0ZSB8IG51bGwge1xuICAgIC8vIENoZWNrIHRoYXQgd2UgZ290ICphbnkqIGBUdXJib3BhY2tNZXNzYWdlYCwgZXZlbiBpZlxuICAgIC8vIGB1cGRhdGVkTW9kdWxlc2AgaXMgZW1wdHkgKG5vdCBldmVyeXRoaW5nIGdldHMgcmVjb3JkZWQgdGhlcmUpLlxuICAgIC8vXG4gICAgLy8gVGhlcmUncyBhbHNvIGEgY2FzZSB3aGVyZSBgb25CdWlsdGAgZ2V0cyBjYWxsZWQgYmVmb3JlIGBvbkJ1aWxkaW5nYCxcbiAgICAvLyB3aGljaCBjYW4gaGFwcGVuIGR1cmluZyBpbml0aWFsIHBhZ2UgbG9hZC4gSWdub3JlIHRoYXQgdG9vIVxuICAgIGNvbnN0IGhhc1VwZGF0ZXMgPVxuICAgICAgdGhpcy4jbGFzdFVwZGF0ZU1zU2luY2VFcG9jaCAhPSBudWxsICYmIHRoaXMuI3N0YXJ0TXNTaW5jZUVwb2NoICE9IG51bGxcbiAgICBpZiAoIWhhc1VwZGF0ZXMgJiYgIXRoaXMuI3JlcG9ydGVkSG1yU3RhcnQpIHtcbiAgICAgIC8vIHN1cHByZXNzIHRoZSB1cGRhdGUgZW50aXJlbHlcbiAgICAgIHRoaXMuI2NhbmNlbERlZmVycmVkUmVwb3J0SG1yU3RhcnQoKVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgdGhpcy4jcnVuRGVmZXJyZWRSZXBvcnRIbXJTdGFydCgpXG5cbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICBoYXNVcGRhdGVzLFxuICAgICAgdXBkYXRlZE1vZHVsZXM6IHRoaXMuI3VwZGF0ZWRNb2R1bGVzLFxuICAgICAgc3RhcnRNc1NpbmNlRXBvY2g6IHRoaXMuI3N0YXJ0TXNTaW5jZUVwb2NoISxcbiAgICAgIGVuZE1zU2luY2VFcG9jaDogdGhpcy4jbGFzdFVwZGF0ZU1zU2luY2VFcG9jaCA/PyBEYXRlLm5vdygpLFxuICAgIH1cbiAgICB0aGlzLiN1cGRhdGVkTW9kdWxlcyA9IG5ldyBTZXQoKVxuICAgIHRoaXMuI3JlcG9ydGVkSG1yU3RhcnQgPSBmYWxzZVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxufVxuXG5mdW5jdGlvbiBleHRyYWN0TW9kdWxlc0Zyb21UdXJib3BhY2tNZXNzYWdlKFxuICBkYXRhOiBUdXJib3BhY2tVcGRhdGUgfCBUdXJib3BhY2tVcGRhdGVbXVxuKTogU2V0PHN0cmluZz4ge1xuICBjb25zdCB1cGRhdGVkTW9kdWxlczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KClcblxuICBjb25zdCB1cGRhdGVzID0gQXJyYXkuaXNBcnJheShkYXRhKSA/IGRhdGEgOiBbZGF0YV1cbiAgZm9yIChjb25zdCB1cGRhdGUgb2YgdXBkYXRlcykge1xuICAgIC8vIFRPRE8gdGhpcyB3b24ndCBjYXB0dXJlIGNoYW5nZXMgdG8gQ1NTIHNpbmNlIHRoZXkgZG9uJ3QgcmVzdWx0IGluIGEgXCJtZXJnZWRcIiB1cGRhdGVcbiAgICBpZiAoXG4gICAgICB1cGRhdGUudHlwZSAhPT0gJ3BhcnRpYWwnIHx8XG4gICAgICB1cGRhdGUuaW5zdHJ1Y3Rpb24udHlwZSAhPT0gJ0NodW5rTGlzdFVwZGF0ZScgfHxcbiAgICAgIHVwZGF0ZS5pbnN0cnVjdGlvbi5tZXJnZWQgPT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IG1lcmdlZFVwZGF0ZSBvZiB1cGRhdGUuaW5zdHJ1Y3Rpb24ubWVyZ2VkKSB7XG4gICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMobWVyZ2VkVXBkYXRlLmVudHJpZXMpKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IC8oLiopXFxzK1soW10uKi8uZXhlYyhuYW1lKVxuICAgICAgICBpZiAocmVzID09PSBudWxsKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIHVwZGF0ZWRNb2R1bGVzLmFkZChyZXNbMV0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVwZGF0ZWRNb2R1bGVzXG59XG4iXSwibmFtZXMiOlsiVHVyYm9wYWNrSG1yIiwiVFVSQk9QQUNLX0hNUl9TVEFSVF9ERUxBWV9NUyIsImNvbnN0cnVjdG9yIiwiU2V0IiwiY29uc29sZSIsImxvZyIsImNsZWFyVGltZW91dCIsInVuZGVmaW5lZCIsIm9uQnVpbGRpbmciLCJEYXRlIiwibm93Iiwic2V0VGltZW91dCIsInNlbGYiLCJfX05FWFRfSE1SX1RVUkJPUEFDS19SRVBPUlRfTk9JU1lfTk9PUF9FVkVOVFMiLCJvblR1cmJvcGFja01lc3NhZ2UiLCJtc2ciLCJ1cGRhdGVkTW9kdWxlcyIsImV4dHJhY3RNb2R1bGVzRnJvbVR1cmJvcGFja01lc3NhZ2UiLCJkYXRhIiwibW9kdWxlIiwiYWRkIiwib25TZXJ2ZXJDb21wb25lbnRDaGFuZ2VzIiwib25SZWxvYWRQYWdlIiwib25QYWdlQWRkUmVtb3ZlIiwib25CdWlsdCIsImhhc1VwZGF0ZXMiLCJyZXN1bHQiLCJzdGFydE1zU2luY2VFcG9jaCIsImVuZE1zU2luY2VFcG9jaCIsInVwZGF0ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJ1cGRhdGUiLCJ0eXBlIiwiaW5zdHJ1Y3Rpb24iLCJtZXJnZWQiLCJtZXJnZWRVcGRhdGUiLCJuYW1lIiwiT2JqZWN0Iiwia2V5cyIsImVudHJpZXMiLCJyZXMiLCJleGVjIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/dev/hot-reloader/turbopack-hot-reloader-common.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/dev/noop-turbopack-hmr.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/dev/noop-turbopack-hmr.js ***!
|
||
\*****************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("// The Turbopack HMR client can't be properly omitted at the moment (WEB-1589),\n// so instead we remap its import to this file in webpack builds.\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"connect\", ({\n enumerable: true,\n get: function() {\n return connect;\n }\n}));\nfunction connect() {}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=noop-turbopack-hmr.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvbm9vcC10dXJib3BhY2staG1yLmpzIiwibWFwcGluZ3MiOiJBQUFBLCtFQUErRTtBQUMvRSxpRUFBaUU7Ozs7OzJDQUNqREE7OztlQUFBQTs7O0FBQVQsU0FBU0EsV0FBVyIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9jbGllbnQvZGV2L25vb3AtdHVyYm9wYWNrLWhtci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGUgVHVyYm9wYWNrIEhNUiBjbGllbnQgY2FuJ3QgYmUgcHJvcGVybHkgb21pdHRlZCBhdCB0aGUgbW9tZW50IChXRUItMTU4OSksXG4vLyBzbyBpbnN0ZWFkIHdlIHJlbWFwIGl0cyBpbXBvcnQgdG8gdGhpcyBmaWxlIGluIHdlYnBhY2sgYnVpbGRzLlxuZXhwb3J0IGZ1bmN0aW9uIGNvbm5lY3QoKSB7fVxuIl0sIm5hbWVzIjpbImNvbm5lY3QiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/dev/noop-turbopack-hmr.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/dev/report-hmr-latency.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/dev/report-hmr-latency.js ***!
|
||
\*****************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return reportHmrLatency;\n }\n}));\nfunction reportHmrLatency(sendMessage, updatedModules, startMsSinceEpoch, endMsSinceEpoch, hasUpdate = true) {\n const latencyMs = endMsSinceEpoch - startMsSinceEpoch;\n console.log(`[Fast Refresh] done in ${latencyMs}ms`);\n if (!hasUpdate) {\n return;\n }\n sendMessage(JSON.stringify({\n event: 'client-hmr-latency',\n id: window.__nextDevClientId,\n startTime: startMsSinceEpoch,\n endTime: endMsSinceEpoch,\n page: window.location.pathname,\n updatedModules,\n // Whether the page (tab) was hidden at the time the event occurred.\n // This can impact the accuracy of the event's timing.\n isPageHidden: document.visibilityState === 'hidden'\n }));\n if (self.__NEXT_HMR_LATENCY_CB) {\n self.__NEXT_HMR_LATENCY_CB(latencyMs);\n }\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=report-hmr-latency.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvcmVwb3J0LWhtci1sYXRlbmN5LmpzIiwibWFwcGluZ3MiOiI7Ozs7MkNBaUJBOzs7ZUFBd0JBOzs7QUFBVCxTQUFTQSxpQkFDdEJDLFdBQXNDLEVBQ3RDQyxjQUE4QyxFQUM5Q0MsaUJBQXlCLEVBQ3pCQyxlQUF1QixFQUN2QkMsWUFBcUIsSUFBSTtJQUV6QixNQUFNQyxZQUFZRixrQkFBa0JEO0lBQ3BDSSxRQUFRQyxHQUFHLENBQUMsQ0FBQyx1QkFBdUIsRUFBRUYsVUFBVSxFQUFFLENBQUM7SUFDbkQsSUFBSSxDQUFDRCxXQUFXO1FBQ2Q7SUFDRjtJQUNBSixZQUNFUSxLQUFLQyxTQUFTLENBQUM7UUFDYkMsT0FBTztRQUNQQyxJQUFJQyxPQUFPQyxpQkFBaUI7UUFDNUJDLFdBQVdaO1FBQ1hhLFNBQVNaO1FBQ1RhLE1BQU1KLE9BQU9LLFFBQVEsQ0FBQ0MsUUFBUTtRQUM5QmpCO1FBQ0Esb0VBQW9FO1FBQ3BFLHNEQUFzRDtRQUN0RGtCLGNBQWNDLFNBQVNDLGVBQWUsS0FBSztJQUM3QztJQUVGLElBQUlDLEtBQUtDLHFCQUFxQixFQUFFO1FBQzlCRCxLQUFLQyxxQkFBcUIsQ0FBQ2xCO0lBQzdCO0FBQ0YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9zcmMvY2xpZW50L2Rldi9yZXBvcnQtaG1yLWxhdGVuY3kudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBfX05FWFRfSE1SX0xBVEVOQ1lfQ0I6ICgobGF0ZW5jeU1zOiBudW1iZXIpID0+IHZvaWQpIHwgdW5kZWZpbmVkXG4gIH1cbn1cblxuLyoqXG4gKiBMb2dzIGluZm9ybWF0aW9uIGFib3V0IGEgY29tcGxldGVkIEhNUiB0byB0aGUgY29uc29sZSwgdGhlIHNlcnZlciAodmlhIGFcbiAqIGBjbGllbnQtaG1yLWxhdGVuY3lgIGV2ZW50KSwgYW5kIHRvIGBzZWxmLl9fTkVYVF9ITVJfTEFURU5DWV9DQmAgKGEgZGVidWdnaW5nXG4gKiBob29rKS5cbiAqXG4gKiBAcGFyYW0gaGFzVXBkYXRlIFNldCB0aGlzIHRvIGBmYWxzZWAgdG8gYXZvaWQgcmVwb3J0aW5nIHRoZSBITVIgZXZlbnQgdmlhIGFcbiAqICAgYGNsaWVudC1obXItbGF0ZW5jeWAgZXZlbnQgb3IgdG8gYHNlbGYuX19ORVhUX0hNUl9MQVRFTkNZX0NCYC4gVXNlZCBieVxuICogICB0dXJib3BhY2sgd2hlbiB3ZSBtdXN0IHJlcG9ydCBhIG1lc3NhZ2UgdG8gdGhlIGJyb3dzZXIgY29uc29sZSAoYmVjYXVzZSB3ZVxuICogICBhbHJlYWR5IGxvZ2dlZCBhIFwicmVidWlsZGluZ1wiIG1lc3NhZ2UpLCBidXQgaXQncyBub3QgYSByZWFsIEhNUiwgc28gd2VcbiAqICAgZG9uJ3Qgd2FudCB0byBpbXBhY3Qgb3VyIHRlbGVtZXRyeS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVwb3J0SG1yTGF0ZW5jeShcbiAgc2VuZE1lc3NhZ2U6IChtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWQsXG4gIHVwZGF0ZWRNb2R1bGVzOiBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlcj4sXG4gIHN0YXJ0TXNTaW5jZUVwb2NoOiBudW1iZXIsXG4gIGVuZE1zU2luY2VFcG9jaDogbnVtYmVyLFxuICBoYXNVcGRhdGU6IGJvb2xlYW4gPSB0cnVlXG4pIHtcbiAgY29uc3QgbGF0ZW5jeU1zID0gZW5kTXNTaW5jZUVwb2NoIC0gc3RhcnRNc1NpbmNlRXBvY2hcbiAgY29uc29sZS5sb2coYFtGYXN0IFJlZnJlc2hdIGRvbmUgaW4gJHtsYXRlbmN5TXN9bXNgKVxuICBpZiAoIWhhc1VwZGF0ZSkge1xuICAgIHJldHVyblxuICB9XG4gIHNlbmRNZXNzYWdlKFxuICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGV2ZW50OiAnY2xpZW50LWhtci1sYXRlbmN5JyxcbiAgICAgIGlkOiB3aW5kb3cuX19uZXh0RGV2Q2xpZW50SWQsXG4gICAgICBzdGFydFRpbWU6IHN0YXJ0TXNTaW5jZUVwb2NoLFxuICAgICAgZW5kVGltZTogZW5kTXNTaW5jZUVwb2NoLFxuICAgICAgcGFnZTogd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLFxuICAgICAgdXBkYXRlZE1vZHVsZXMsXG4gICAgICAvLyBXaGV0aGVyIHRoZSBwYWdlICh0YWIpIHdhcyBoaWRkZW4gYXQgdGhlIHRpbWUgdGhlIGV2ZW50IG9jY3VycmVkLlxuICAgICAgLy8gVGhpcyBjYW4gaW1wYWN0IHRoZSBhY2N1cmFjeSBvZiB0aGUgZXZlbnQncyB0aW1pbmcuXG4gICAgICBpc1BhZ2VIaWRkZW46IGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSA9PT0gJ2hpZGRlbicsXG4gICAgfSlcbiAgKVxuICBpZiAoc2VsZi5fX05FWFRfSE1SX0xBVEVOQ1lfQ0IpIHtcbiAgICBzZWxmLl9fTkVYVF9ITVJfTEFURU5DWV9DQihsYXRlbmN5TXMpXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJyZXBvcnRIbXJMYXRlbmN5Iiwic2VuZE1lc3NhZ2UiLCJ1cGRhdGVkTW9kdWxlcyIsInN0YXJ0TXNTaW5jZUVwb2NoIiwiZW5kTXNTaW5jZUVwb2NoIiwiaGFzVXBkYXRlIiwibGF0ZW5jeU1zIiwiY29uc29sZSIsImxvZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJldmVudCIsImlkIiwid2luZG93IiwiX19uZXh0RGV2Q2xpZW50SWQiLCJzdGFydFRpbWUiLCJlbmRUaW1lIiwicGFnZSIsImxvY2F0aW9uIiwicGF0aG5hbWUiLCJpc1BhZ2VIaWRkZW4iLCJkb2N1bWVudCIsInZpc2liaWxpdHlTdGF0ZSIsInNlbGYiLCJfX05FWFRfSE1SX0xBVEVOQ1lfQ0IiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/dev/report-hmr-latency.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/dev/runtime-error-handler.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/dev/runtime-error-handler.js ***!
|
||
\********************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"RuntimeErrorHandler\", ({\n enumerable: true,\n get: function() {\n return RuntimeErrorHandler;\n }\n}));\nconst RuntimeErrorHandler = {\n hadRuntimeError: false\n};\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=runtime-error-handler.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvcnVudGltZS1lcnJvci1oYW5kbGVyLmpzIiwibWFwcGluZ3MiOiI7Ozs7dURBQWFBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLHNCQUFzQjtJQUNqQ0MsaUJBQWlCO0FBQ25CIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL2NsaWVudC9kZXYvcnVudGltZS1lcnJvci1oYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBSdW50aW1lRXJyb3JIYW5kbGVyID0ge1xuICBoYWRSdW50aW1lRXJyb3I6IGZhbHNlLFxufVxuIl0sIm5hbWVzIjpbIlJ1bnRpbWVFcnJvckhhbmRsZXIiLCJoYWRSdW50aW1lRXJyb3IiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/dev/runtime-error-handler.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/flight-data-helpers.js":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/flight-data-helpers.js ***!
|
||
\**************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createInitialRSCPayloadFromFallbackPrerender: function() {\n return createInitialRSCPayloadFromFallbackPrerender;\n },\n getFlightDataPartsFromPath: function() {\n return getFlightDataPartsFromPath;\n },\n getNextFlightSegmentPath: function() {\n return getNextFlightSegmentPath;\n },\n normalizeFlightData: function() {\n return normalizeFlightData;\n },\n prepareFlightRouterStateForRequest: function() {\n return prepareFlightRouterStateForRequest;\n }\n});\nconst _segment = __webpack_require__(/*! ../shared/lib/segment */ \"(ssr)/./node_modules/next/dist/shared/lib/segment.js\");\nconst _routeparams = __webpack_require__(/*! ./route-params */ \"(ssr)/./node_modules/next/dist/client/route-params.js\");\nconst _createhreffromurl = __webpack_require__(/*! ./components/router-reducer/create-href-from-url */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nfunction getFlightDataPartsFromPath(flightDataPath) {\n // Pick the last 4 items from the `FlightDataPath` to get the [tree, seedData, viewport, isHeadPartial].\n const flightDataPathLength = 4;\n // tree, seedData, and head are *always* the last three items in the `FlightDataPath`.\n const [tree, seedData, head, isHeadPartial] = flightDataPath.slice(-flightDataPathLength);\n // The `FlightSegmentPath` is everything except the last three items. For a root render, it won't be present.\n const segmentPath = flightDataPath.slice(0, -flightDataPathLength);\n return {\n // TODO: Unify these two segment path helpers. We are inconsistently pushing an empty segment (\"\")\n // to the start of the segment path in some places which makes it hard to use solely the segment path.\n // Look for \"// TODO-APP: remove ''\" in the codebase.\n pathToSegment: segmentPath.slice(0, -1),\n segmentPath,\n // if the `FlightDataPath` corresponds with the root, there'll be no segment path,\n // in which case we default to ''.\n segment: segmentPath[segmentPath.length - 1] ?? '',\n tree,\n seedData,\n head,\n isHeadPartial,\n isRootRender: flightDataPath.length === flightDataPathLength\n };\n}\nfunction createInitialRSCPayloadFromFallbackPrerender(response, fallbackInitialRSCPayload) {\n // This is a static fallback page. In order to hydrate the page, we need to\n // parse the client params from the URL, but to account for the possibility\n // that the page was rewritten, we need to check the response headers\n // for x-nextjs-rewritten-path or x-nextjs-rewritten-query headers. Since\n // we can't access the headers of the initial document response, the client\n // performs a fetch request to the current location. Since it's possible that\n // the fetch request will be dynamically rewritten to a different path than\n // the initial document, this fetch request delivers _all_ the hydration data\n // for the page; it was not inlined into the document, like it normally\n // would be.\n //\n // TODO: Consider treating the case where fetch is rewritten to a different\n // path from the document as a special deopt case. We should optimistically\n // assume this won't happen, inline the data into the document, and perform\n // a minimal request (like a HEAD or range request) to verify that the\n // response matches. Tricky to get right because we need to account for\n // all the different deployment environments we support, like output:\n // \"export\" mode, where we currently don't assume that custom response\n // headers are present.\n // Patch the Flight data sent by the server with the correct params parsed\n // from the URL + response object.\n const renderedPathname = (0, _routeparams.getRenderedPathname)(response);\n const renderedSearch = (0, _routeparams.getRenderedSearch)(response);\n const canonicalUrl = (0, _createhreffromurl.createHrefFromUrl)(new URL(location.href));\n const originalFlightDataPath = fallbackInitialRSCPayload.f[0];\n const originalFlightRouterState = originalFlightDataPath[0];\n const payload = {\n c: canonicalUrl.split('/'),\n q: renderedSearch,\n i: fallbackInitialRSCPayload.i,\n f: [\n [\n fillInFallbackFlightRouterState(originalFlightRouterState, renderedPathname, renderedSearch),\n originalFlightDataPath[1],\n originalFlightDataPath[2],\n originalFlightDataPath[2]\n ]\n ],\n m: fallbackInitialRSCPayload.m,\n G: fallbackInitialRSCPayload.G,\n S: fallbackInitialRSCPayload.S,\n h: fallbackInitialRSCPayload.h\n };\n if (fallbackInitialRSCPayload.b) {\n payload.b = fallbackInitialRSCPayload.b;\n }\n return payload;\n}\nfunction fillInFallbackFlightRouterState(flightRouterState, renderedPathname, renderedSearch) {\n const pathnameParts = renderedPathname.split('/').filter((p)=>p !== '');\n const index = 0;\n return fillInFallbackFlightRouterStateImpl(flightRouterState, renderedSearch, pathnameParts, index);\n}\nfunction fillInFallbackFlightRouterStateImpl(flightRouterState, renderedSearch, pathnameParts, pathnamePartsIndex) {\n const originalSegment = flightRouterState[0];\n let newSegment;\n let doesAppearInURL;\n if (typeof originalSegment === 'string') {\n newSegment = originalSegment;\n doesAppearInURL = (0, _routeparams.doesStaticSegmentAppearInURL)(originalSegment);\n } else {\n const paramName = originalSegment[0];\n const paramType = originalSegment[2];\n const staticSiblings = originalSegment[3];\n const paramValue = (0, _routeparams.parseDynamicParamFromURLPart)(paramType, pathnameParts, pathnamePartsIndex);\n const cacheKey = (0, _routeparams.getCacheKeyForDynamicParam)(paramValue, renderedSearch);\n newSegment = [\n paramName,\n cacheKey,\n paramType,\n staticSiblings\n ];\n doesAppearInURL = true;\n }\n // Only increment the index if the segment appears in the URL. If it's a\n // \"virtual\" segment, like a route group, it remains the same.\n const childPathnamePartsIndex = doesAppearInURL ? pathnamePartsIndex + 1 : pathnamePartsIndex;\n const children = flightRouterState[1];\n const newChildren = {};\n for(let key in children){\n const childFlightRouterState = children[key];\n newChildren[key] = fillInFallbackFlightRouterStateImpl(childFlightRouterState, renderedSearch, pathnameParts, childPathnamePartsIndex);\n }\n const newState = [\n newSegment,\n newChildren,\n null,\n flightRouterState[3],\n flightRouterState[4]\n ];\n return newState;\n}\nfunction getNextFlightSegmentPath(flightSegmentPath) {\n // Since `FlightSegmentPath` is a repeated tuple of `Segment` and `ParallelRouteKey`, we slice off two items\n // to get the next segment path.\n return flightSegmentPath.slice(2);\n}\nfunction normalizeFlightData(flightData) {\n // FlightData can be a string when the server didn't respond with a proper flight response,\n // or when a redirect happens, to signal to the client that it needs to perform an MPA navigation.\n if (typeof flightData === 'string') {\n return flightData;\n }\n return flightData.map((flightDataPath)=>getFlightDataPartsFromPath(flightDataPath));\n}\nfunction prepareFlightRouterStateForRequest(flightRouterState, isHmrRefresh) {\n // HMR requests need the complete, unmodified state for proper functionality\n if (isHmrRefresh) {\n return encodeURIComponent(JSON.stringify(flightRouterState));\n }\n return encodeURIComponent(JSON.stringify(stripClientOnlyDataFromFlightRouterState(flightRouterState)));\n}\n/**\n * Recursively strips client-only data from FlightRouterState while preserving\n * server-needed information for proper rendering decisions.\n */ function stripClientOnlyDataFromFlightRouterState(flightRouterState) {\n const [segment, parallelRoutes, _refreshState, refreshMarker, prefetchHints] = flightRouterState;\n // Strip client-only data from the segment\n const cleanedSegment = stripClientOnlyDataFromSegment(segment);\n // Recursively process parallel routes\n const cleanedParallelRoutes = {};\n for (const [key, childState] of Object.entries(parallelRoutes)){\n cleanedParallelRoutes[key] = stripClientOnlyDataFromFlightRouterState(childState);\n }\n const result = [\n cleanedSegment,\n cleanedParallelRoutes\n ];\n if (refreshMarker) {\n result[2] = null // null slightly more compact than undefined\n ;\n result[3] = refreshMarker;\n }\n // Append optional fields if present\n if (prefetchHints !== undefined) {\n result[4] = prefetchHints;\n }\n // Everything else is used only by the client and is not needed for requests.\n return result;\n}\n/**\n * Strips client-only data from segments:\n * - Search parameters from __PAGE__ segments\n * - staticSiblings from dynamic segment tuples (only needed for client-side\n * prefetch reuse decisions)\n */ function stripClientOnlyDataFromSegment(segment) {\n if (typeof segment === 'string') {\n // Strip search params from __PAGE__ segments\n if (segment.startsWith(_segment.PAGE_SEGMENT_KEY + '?')) {\n return _segment.PAGE_SEGMENT_KEY;\n }\n return segment;\n }\n // Dynamic segment tuple: [paramName, paramCacheKey, paramType, staticSiblings]\n // Strip staticSiblings (4th element) since server doesn't need it\n const [paramName, paramCacheKey, paramType] = segment;\n return [\n paramName,\n paramCacheKey,\n paramType,\n null\n ];\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=flight-data-helpers.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9mbGlnaHQtZGF0YS1oZWxwZXJzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQXNFZ0JBLDRDQUE0QztlQUE1Q0E7O0lBNUJBQywwQkFBMEI7ZUFBMUJBOztJQTJKQUMsd0JBQXdCO2VBQXhCQTs7SUFRQUMsbUJBQW1CO2VBQW5CQTs7SUFzQkFDLGtDQUFrQztlQUFsQ0E7OztxQ0F6TmlCO3lDQVExQjsrQ0FDMkI7QUF1QjNCLFNBQVNILDJCQUNkSSxjQUE4QjtJQUU5Qix3R0FBd0c7SUFDeEcsTUFBTUMsdUJBQXVCO0lBQzdCLHNGQUFzRjtJQUN0RixNQUFNLENBQUNDLE1BQU1DLFVBQVVDLE1BQU1DLGNBQWMsR0FDekNMLGVBQWVNLEtBQUssQ0FBQyxDQUFDTDtJQUN4Qiw2R0FBNkc7SUFDN0csTUFBTU0sY0FBY1AsZUFBZU0sS0FBSyxDQUFDLEdBQUcsQ0FBQ0w7SUFFN0MsT0FBTztRQUNMLGtHQUFrRztRQUNsRyxzR0FBc0c7UUFDdEcscURBQXFEO1FBQ3JETyxlQUFlRCxZQUFZRCxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQ3JDQztRQUNBLGtGQUFrRjtRQUNsRixrQ0FBa0M7UUFDbENFLFNBQVNGLFdBQVcsQ0FBQ0EsWUFBWUcsTUFBTSxHQUFHLEVBQUUsSUFBSTtRQUNoRFI7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQU0sY0FBY1gsZUFBZVUsTUFBTSxLQUFLVDtJQUMxQztBQUNGO0FBRU8sU0FBU04sNkNBQ2RpQixRQUFrQixFQUNsQkMseUJBQTRDO0lBRTVDLDJFQUEyRTtJQUMzRSwyRUFBMkU7SUFDM0UscUVBQXFFO0lBQ3JFLHlFQUF5RTtJQUN6RSwyRUFBMkU7SUFDM0UsNkVBQTZFO0lBQzdFLDJFQUEyRTtJQUMzRSw2RUFBNkU7SUFDN0UsdUVBQXVFO0lBQ3ZFLFlBQVk7SUFDWixFQUFFO0lBQ0YsMkVBQTJFO0lBQzNFLDJFQUEyRTtJQUMzRSwyRUFBMkU7SUFDM0Usc0VBQXNF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UDtJQUNkO0lBRUEsNkVBQTZFO0lBQzdFLE9BQU9PO0FBQ1Q7QUFFQTs7Ozs7Q0FLQyxHQUNELFNBQVNMLCtCQUErQmpFLE9BQWdCO0lBQ3RELElBQUksT0FBT0EsWUFBWSxVQUFVO1FBQy9CLDZDQUE2QztRQUM3QyxJQUFJQSxRQUFRd0UsVUFBVSxDQUFDQyxTQUFBQSxnQkFBZ0IsR0FBRyxNQUFNO1lBQzlDLE9BQU9BLFNBQUFBLGdCQUFnQjtRQUN6QjtRQUNBLE9BQU96RTtJQUNUO0lBQ0EsK0VBQStFO0lBQy9FLGtFQUFrRTtJQUNsRSxNQUFNLENBQUN1QyxXQUFXbUMsZUFBZWxDLFVBQVUsR0FBR3hDO0lBQzlDLE9BQU87UUFBQ3VDO1FBQVdtQztRQUFlbEM7UUFBVztLQUFLO0FBQ3BEIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9zcmMvY2xpZW50L2ZsaWdodC1kYXRhLWhlbHBlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBDYWNoZU5vZGVTZWVkRGF0YSxcbiAgRmxpZ2h0RGF0YSxcbiAgRmxpZ2h0RGF0YVBhdGgsXG4gIEZsaWdodFJvdXRlclN0YXRlLFxuICBGbGlnaHRTZWdtZW50UGF0aCxcbiAgU2VnbWVudCxcbiAgSGVhZERhdGEsXG4gIEluaXRpYWxSU0NQYXlsb2FkLFxufSBmcm9tICcuLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItdHlwZXMnXG5pbXBvcnQgeyBQQUdFX1NFR01FTlRfS0VZIH0gZnJvbSAnLi4vc2hhcmVkL2xpYi9zZWdtZW50J1xuaW1wb3J0IHR5cGUgeyBOb3JtYWxpemVkU2VhcmNoIH0gZnJvbSAnLi9jb21wb25lbnRzL3NlZ21lbnQtY2FjaGUvY2FjaGUta2V5J1xuaW1wb3J0IHtcbiAgZ2V0Q2FjaGVLZXlGb3JEeW5hbWljUGFyYW0sXG4gIHBhcnNlRHluYW1pY1BhcmFtRnJvbVVSTFBhcnQsXG4gIGRvZXNTdGF0aWNTZWdtZW50QXBwZWFySW5VUkwsXG4gIGdldFJlbmRlcmVkUGF0aG5hbWUsXG4gIGdldFJlbmRlcmVkU2VhcmNoLFxufSBmcm9tICcuL3JvdXRlLXBhcmFtcydcbmltcG9ydCB7IGNyZWF0ZUhyZWZGcm9tVXJsIH0gZnJvbSAnLi9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2NyZWF0ZS1ocmVmLWZyb20tdXJsJ1xuXG5leHBvcnQgdHlwZSBOb3JtYWxpemVkRmxpZ2h0RGF0YSA9IHtcbiAgLyoqXG4gICAqIFRoZSBmdWxsIGBGbGlnaHRTZWdtZW50UGF0aGAgaW5jbHVzaXZlIG9mIHRoZSBmaW5hbCBgU2VnbWVudGBcbiAgICovXG4gIHNlZ21lbnRQYXRoOiBGbGlnaHRTZWdtZW50UGF0aFxuICAvKipcbiAgICogVGhlIGBGbGlnaHRTZWdtZW50UGF0aGAgZXhjbHVzaXZlIG9mIHRoZSBmaW5hbCBgU2VnbWVudGBcbiAgICovXG4gIHBhdGhUb1NlZ21lbnQ6IEZsaWdodFNlZ21lbnRQYXRoXG4gIHNlZ21lbnQ6IFNlZ21lbnRcbiAgdHJlZTogRmxpZ2h0Um91dGVyU3RhdGVcbiAgc2VlZERhdGE6IENhY2hlTm9kZVNlZWREYXRhIHwgbnVsbFxuICBoZWFkOiBIZWFkRGF0YVxuICBpc0hlYWRQYXJ0aWFsOiBib29sZWFuXG4gIGlzUm9vdFJlbmRlcjogYm9vbGVhblxufVxuXG4vLyBUT0RPOiBXZSBzaG91bGQgb25seSBoYXZlIHRvIGV4cG9ydCBgbm9ybWFsaXplRmxpZ2h0RGF0YWAsIGhvd2V2ZXIgYmVjYXVzZSB0aGUgaW5pdGlhbCBmbGlnaHQgZGF0YVxuLy8gdGhhdCBnZXRzIHBhc3NlZCB0byBgY3JlYXRlSW5pdGlhbFJvdXRlclN0YXRlYCBkb2Vzbid0IGNvbmZvcm0gdG8gdGhlIGBGbGlnaHREYXRhUGF0aGAgdHlwZSAoaXQncyBtaXNzaW5nIHRoZSByb290IHNlZ21lbnQpXG4vLyB3ZSdyZSBjdXJyZW50bHkgZXhwb3J0aW5nIGl0IHNvIHdlIGNhbiB1c2UgaXQgZGlyZWN0bHkuIFRoaXMgc2hvdWxkIGJlIGZpeGVkIGFzIHBhcnQgb2YgdGhlIHVuaWZpY2F0aW9uIG9mXG4vLyB0aGUgZGlmZmVyZW50IHdheXMgd2UgZXhwcmVzcyBgRmxpZ2h0U2VnbWVudFBhdGhgLlxuZXhwb3J0IGZ1bmN0aW9uIGdldEZsaWdodERhdGFQYXJ0c0Zyb21QYXRoKFxuICBmbGlnaHREYXRhUGF0aDogRmxpZ2h0RGF0YVBhdGhcbik6IE5vcm1hbGl6ZWRGbGlnaHREYXRhIHtcbiAgLy8gUGljayB0aGUgbGFzdCA0IGl0ZW1zIGZyb20gdGhlIGBGbGlnaHREYXRhUGF0aGAgdG8gZ2V0IHRoZSBbdHJlZSwgc2VlZERhdGEsIHZpZXdwb3J0LCBpc0hlYWRQYXJ0aWFsXS5cbiAgY29uc3QgZmxpZ2h0RGF0YVBhdGhMZW5ndGggPSA0XG4gIC8vIHRyZWUsIHNlZWREYXRhLCBhbmQgaGVhZCBhcmUgKmFsd2F5cyogdGhlIGxhc3QgdGhyZWUgaXRlbXMgaW4gdGhlIGBGbGlnaHREYXRhUGF0aGAuXG4gIGNvbnN0IFt0cmVlLCBzZWVkRGF0YSwgaGVhZCwgaXNIZWFkUGFydGlhbF0gPVxuICAgIGZsaWdodERhdGFQYXRoLnNsaWNlKC1mbGlnaHREYXRhUGF0aExlbmd0aClcbiAgLy8gVGhlIGBGbGlnaHRTZWdtZW50UGF0aGAgaXMgZXZlcnl0aGluZyBleGNlcHQgdGhlIGxhc3QgdGhyZWUgaXRlbXMuIEZvciBhIHJvb3QgcmVuZGVyLCBpdCB3b24ndCBiZSBwcmVzZW50LlxuICBjb25zdCBzZWdtZW50UGF0aCA9IGZsaWdodERhdGFQYXRoLnNsaWNlKDAsIC1mbGlnaHREYXRhUGF0aExlbmd0aClcblxuICByZXR1cm4ge1xuICAgIC8vIFRPRE86IFVuaWZ5IHRoZXNlIHR3byBzZWdtZW50IHBhdGggaGVscGVycy4gV2UgYXJlIGluY29uc2lzdGVudGx5IHB1c2hpbmcgYW4gZW1wdHkgc2VnbWVudCAoXCJcIilcbiAgICAvLyB0byB0aGUgc3RhcnQgb2YgdGhlIHNlZ21lbnQgcGF0aCBpbiBzb21lIHBsYWNlcyB3aGljaCBtYWtlcyBpdCBoYXJkIHRvIHVzZSBzb2xlbHkgdGhlIHNlZ21lbnQgcGF0aC5cbiAgICAvLyBMb29rIGZvciBcIi8vIFRPRE8tQVBQOiByZW1vdmUgJydcIiBpbiB0aGUgY29kZWJhc2UuXG4gICAgcGF0aFRvU2VnbWVudDogc2VnbWVudFBhdGguc2xpY2UoMCwgLTEpLFxuICAgIHNlZ21lbnRQYXRoLFxuICAgIC8vIGlmIHRoZSBgRmxpZ2h0RGF0YVBhdGhgIGNvcnJlc3BvbmRzIHdpdGggdGhlIHJvb3QsIHRoZXJlJ2xsIGJlIG5vIHNlZ21lbnQgcGF0aCxcbiAgICAvLyBpbiB3aGljaCBjYXNlIHdlIGRlZmF1bHQgdG8gJycuXG4gICAgc2VnbWVudDogc2VnbWVudFBhdGhbc2VnbWVudFBhdGgubGVuZ3RoIC0gMV0gPz8gJycsXG4gICAgdHJlZSxcbiAgICBzZWVkRGF0YSxcbiAgICBoZWFkLFxuICAgIGlzSGVhZFBhcnRpYWwsXG4gICAgaXNSb290UmVuZGVyOiBmbGlnaHREYXRhUGF0aC5sZW5ndGggPT09IGZsaWdodERhdGFQYXRoTGVuZ3RoLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbml0aWFsUlNDUGF5bG9hZEZyb21GYWxsYmFja1ByZXJlbmRlcihcbiAgcmVzcG9uc2U6IFJlc3BvbnNlLFxuICBmYWxsYmFja0luaXRpYWxSU0NQYXlsb2FkOiBJbml0aWFsUlNDUGF5bG9hZFxuKTogSW5pdGlhbFJTQ1BheWxvYWQge1xuICAvLyBUaGlzIGlzIGEgc3RhdGljIGZhbGxiYWNrIHBhZ2UuIEluIG9yZGVyIHRvIGh5ZHJhdGUgdGhlIHBhZ2UsIHdlIG5lZWQgdG9cbiAgLy8gcGFyc2UgdGhlIGNsaWVudCBwYXJhbXMgZnJvbSB0aGUgVVJMLCBidXQgdG8gYWNjb3VudCBmb3IgdGhlIHBvc3NpYmlsaXR5XG4gIC8vIHRoYXQgdGhlIHBhZ2Ugd2FzIHJld3JpdHRlbiwgd2UgbmVlZCB0byBjaGVjayB0aGUgcmVzcG9uc2UgaGVhZGVyc1xuICAvLyBmb3IgeC1uZXh0anMtcmV3cml0dGVuLXBhdGggb3IgeC1uZXh0anMtcmV3cml0dGVuLXF1ZXJ5IGhlYWRlcnMuIFNpbmNlXG4gIC8vIHdlIGNhbid0IGFjY2VzcyB0aGUgaGVhZGVycyBvZiB0aGUgaW5pdGlhbCBkb2N1bWVudCByZXNwb25zZSwgdGhlIGNsaWVudFxuICAvLyBwZXJmb3JtcyBhIGZldGNoIHJlcXVlc3QgdG8gdGhlIGN1cnJlbnQgbG9jYXRpb24uIFNpbmNlIGl0J3MgcG9zc2libGUgdGhhdFxuICAvLyB0aGUgZmV0Y2ggcmVxdWVzdCB3aWxsIGJlIGR5bmFtaWNhbGx5IHJld3JpdHRlbiB0byBhIGRpZmZlcmVudCBwYXRoIHRoYW5cbiAgLy8gdGhlIGluaXRpYWwgZG9jdW1lbnQsIHRoaXMgZmV0Y2ggcmVxdWVzdCBkZWxpdmVycyBfYWxsXyB0aGUgaHlkcmF0aW9uIGRhdGFcbiAgLy8gZm9yIHRoZSBwYWdlOyBpdCB3YXMgbm90IGlubGluZWQgaW50byB0aGUgZG9jdW1lbnQsIGxpa2UgaXQgbm9ybWFsbHlcbiAgLy8gd291bGQgYmUuXG4gIC8vXG4gIC8vIFRPRE86IENvbnNpZGVyIHRyZWF0aW5nIHRoZSBjYXNlIHdoZXJlIGZldGNoIGlzIHJld3JpdHRlbiB0byBhIGRpZmZlcmVudFxuICAvLyBwYXRoIGZyb20gdGhlIGRvY3VtZW50IGFzIGEgc3BlY2lhbCBkZW9wdCBjYXNlLiBXZSBzaG91bGQgb3B0aW1pc3RpY2FsbHlcbiAgLy8gYXNzdW1lIHRoaXMgd29uJ3QgaGFwcGVuLCBpbmxpbmUgdGhlIGRhdGEgaW50byB0aGUgZG9jdW1lbnQsIGFuZCBwZXJmb3JtXG4gIC8vIGEgbWluaW1hbCByZXF1ZXN0IChsaWtlIGEgSEVBRCBvciByYW5nZSByZXF1ZXN0KSB0byB2ZXJpZnkgdGhhdCB0aGVcbiAgLy8gcmVzcG9uc2UgbWF0Y2hlcy4gVHJpY2t5IHRvIGdldCByaWdodCBiZWNhdXNlIHdlIG5lZWQgdG8gYWNjb3VudCBmb3JcbiAgLy8gYWxsIHRoZSBkaWZmZXJlbnQgZGVwbG95bWVudCBlbnZpcm9ubWVudHMgd2Ugc3VwcG9ydCwgbGlrZSBvdXRwdXQ6XG4gIC8vIFwiZXhwb3J0XCIgbW9kZSwgd2hlcmUgd2UgY3VycmVudGx5IGRvbid0IGFzc3VtZSB0aGF0IGN1c3RvbSByZXNwb25zZVxuICAvLyBoZWFkZXJzIGFyZSBwcmVzZW50LlxuXG4gIC8vIFBhdGNoIHRoZSBGbGlnaHQgZGF0YSBzZW50IGJ5IHRoZSBzZXJ2ZXIgd2l0aCB0aGUgY29ycmVjdCBwYXJhbXMgcGFyc2VkXG4gIC8vIGZyb20gdGhlIFVSTCArIHJlc3BvbnNlIG9iamVjdC5cbiAgY29uc3QgcmVuZGVyZWRQYXRobmFtZSA9IGdldFJlbmRlcmVkUGF0aG5hbWUocmVzcG9uc2UpXG4gIGNvbnN0IHJlbmRlcmVkU2VhcmNoID0gZ2V0UmVuZGVyZWRTZWFyY2gocmVzcG9uc2UpXG4gIGNvbnN0IGNhbm9uaWNhbFVybCA9IGNyZWF0ZUhyZWZGcm9tVXJsKG5ldyBVUkwobG9jYXRpb24uaHJlZikpXG4gIGNvbnN0IG9yaWdpbmFsRmxpZ2h0RGF0YVBhdGggPSBmYWxsYmFja0luaXRpYWxSU0NQYXlsb2FkLmZbMF1cbiAgY29uc3Qgb3JpZ2luYWxGbGlnaHRSb3V0ZXJTdGF0ZSA9IG9yaWdpbmFsRmxpZ2h0RGF0YVBhdGhbMF1cbiAgY29uc3QgcGF5bG9hZDogSW5pdGlhbFJTQ1BheWxvYWQgPSB7XG4gICAgYzogY2Fub25pY2FsVXJsLnNwbGl0KCcvJyksXG4gICAgcTogcmVuZGVyZWRTZWFyY2gsXG4gICAgaTogZmFsbGJhY2tJbml0aWFsUlNDUGF5bG9hZC5pLFxuICAgIGY6IFtcbiAgICAgIFtcbiAgICAgICAgZmlsbEluRmFsbGJhY2tGbGlnaHRSb3V0ZXJTdGF0ZShcbiAgICAgICAgICBvcmlnaW5hbEZsaWdodFJvdXRlclN0YXRlLFxuICAgICAgICAgIHJlbmRlcmVkUGF0aG5hbWUsXG4gICAgICAgICAgcmVuZGVyZWRTZWFyY2ggYXMgTm9ybWFsaXplZFNlYXJjaFxuICAgICAgICApLFxuICAgICAgICBvcmlnaW5hbEZsaWdodERhdGFQYXRoWzFdLFxuICAgICAgICBvcmlnaW5hbEZsaWdodERhdGFQYXRoWzJdLFxuICAgICAgICBvcmlnaW5hbEZsaWdodERhdGFQYXRoWzJdLFxuICAgICAgXSxcbiAgICBdLFxuICAgIG06IGZhbGxiYWNrSW5pdGlhbFJTQ1BheWxvYWQubSxcbiAgICBHOiBmYWxsYmFja0luaXRpYWxSU0NQYXlsb2FkLkcsXG4gICAgUzogZmFsbGJhY2tJbml0aWFsUlNDUGF5bG9hZC5TLFxuICAgIGg6IGZhbGxiYWNrSW5pdGlhbFJTQ1BheWxvYWQuaCxcbiAgfVxuICBpZiAoZmFsbGJhY2tJbml0aWFsUlNDUGF5bG9hZC5iKSB7XG4gICAgcGF5bG9hZC5iID0gZmFsbGJhY2tJbml0aWFsUlNDUGF5bG9hZC5iXG4gIH1cbiAgcmV0dXJuIHBheWxvYWRcbn1cblxuZnVuY3Rpb24gZmlsbEluRmFsbGJhY2tGbGlnaHRSb3V0ZXJTdGF0ZShcbiAgZmxpZ2h0Um91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlLFxuICByZW5kZXJlZFBhdGhuYW1lOiBzdHJpbmcsXG4gIHJlbmRlcmVkU2VhcmNoOiBOb3JtYWxpemVkU2VhcmNoXG4pOiBGbGlnaHRSb3V0ZXJTdGF0ZSB7XG4gIGNvbnN0IHBhdGhuYW1lUGFydHMgPSByZW5kZXJlZFBhdGhuYW1lLnNwbGl0KCcvJykuZmlsdGVyKChwKSA9PiBwICE9PSAnJylcbiAgY29uc3QgaW5kZXggPSAwXG4gIHJldHVybiBmaWxsSW5GYWxsYmFja0ZsaWdodFJvdXRlclN0YXRlSW1wbChcbiAgICBmbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgICByZW5kZXJlZFNlYXJjaCxcbiAgICBwYXRobmFtZVBhcnRzLFxuICAgIGluZGV4XG4gIClcbn1cblxuZnVuY3Rpb24gZmlsbEluRmFsbGJhY2tGbGlnaHRSb3V0ZXJTdGF0ZUltcGwoXG4gIGZsaWdodFJvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgcmVuZGVyZWRTZWFyY2g6IE5vcm1hbGl6ZWRTZWFyY2gsXG4gIHBhdGhuYW1lUGFydHM6IEFycmF5PHN0cmluZz4sXG4gIHBhdGhuYW1lUGFydHNJbmRleDogbnVtYmVyXG4pOiBGbGlnaHRSb3V0ZXJTdGF0ZSB7XG4gIGNvbnN0IG9yaWdpbmFsU2VnbWVudCA9IGZsaWdodFJvdXRlclN0YXRlWzBdXG4gIGxldCBuZXdTZWdtZW50OiBTZWdtZW50XG4gIGxldCBkb2VzQXBwZWFySW5VUkw6IGJvb2xlYW5cbiAgaWYgKHR5cGVvZiBvcmlnaW5hbFNlZ21lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgbmV3U2VnbWVudCA9IG9yaWdpbmFsU2VnbWVudFxuICAgIGRvZXNBcHBlYXJJblVSTCA9IGRvZXNTdGF0aWNTZWdtZW50QXBwZWFySW5VUkwob3JpZ2luYWxTZWdtZW50KVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IHBhcmFtTmFtZSA9IG9yaWdpbmFsU2VnbWVudFswXVxuICAgIGNvbnN0IHBhcmFtVHlwZSA9IG9yaWdpbmFsU2VnbWVudFsyXVxuICAgIGNvbnN0IHN0YXRpY1NpYmxpbmdzID0gb3JpZ2luYWxTZWdtZW50WzNdXG4gICAgY29uc3QgcGFyYW1WYWx1ZSA9IHBhcnNlRHluYW1pY1BhcmFtRnJvbVVSTFBhcnQoXG4gICAgICBwYXJhbVR5cGUsXG4gICAgICBwYXRobmFtZVBhcnRzLFxuICAgICAgcGF0aG5hbWVQYXJ0c0luZGV4XG4gICAgKVxuICAgIGNvbnN0IGNhY2hlS2V5ID0gZ2V0Q2FjaGVLZXlGb3JEeW5hbWljUGFyYW0ocGFyYW1WYWx1ZSwgcmVuZGVyZWRTZWFyY2gpXG4gICAgbmV3U2VnbWVudCA9IFtwYXJhbU5hbWUsIGNhY2hlS2V5LCBwYXJhbVR5cGUsIHN0YXRpY1NpYmxpbmdzXVxuICAgIGRvZXNBcHBlYXJJblVSTCA9IHRydWVcbiAgfVxuXG4gIC8vIE9ubHkgaW5jcmVtZW50IHRoZSBpbmRleCBpZiB0aGUgc2VnbWVudCBhcHBlYXJzIGluIHRoZSBVUkwuIElmIGl0J3MgYVxuICAvLyBcInZpcnR1YWxcIiBzZWdtZW50LCBsaWtlIGEgcm91dGUgZ3JvdXAsIGl0IHJlbWFpbnMgdGhlIHNhbWUuXG4gIGNvbnN0IGNoaWxkUGF0aG5hbWVQYXJ0c0luZGV4ID0gZG9lc0FwcGVhckluVVJMXG4gICAgPyBwYXRobmFtZVBhcnRzSW5kZXggKyAxXG4gICAgOiBwYXRobmFtZVBhcnRzSW5kZXhcblxuICBjb25zdCBjaGlsZHJlbiA9IGZsaWdodFJvdXRlclN0YXRlWzFdXG4gIGNvbnN0IG5ld0NoaWxkcmVuOiB7IFtrZXk6IHN0cmluZ106IEZsaWdodFJvdXRlclN0YXRlIH0gPSB7fVxuICBmb3IgKGxldCBrZXkgaW4gY2hpbGRyZW4pIHtcbiAgICBjb25zdCBjaGlsZEZsaWdodFJvdXRlclN0YXRlID0gY2hpbGRyZW5ba2V5XVxuICAgIG5ld0NoaWxkcmVuW2tleV0gPSBmaWxsSW5GYWxsYmFja0ZsaWdodFJvdXRlclN0YXRlSW1wbChcbiAgICAgIGNoaWxkRmxpZ2h0Um91dGVyU3RhdGUsXG4gICAgICByZW5kZXJlZFNlYXJjaCxcbiAgICAgIHBhdGhuYW1lUGFydHMsXG4gICAgICBjaGlsZFBhdGhuYW1lUGFydHNJbmRleFxuICAgIClcbiAgfVxuXG4gIGNvbnN0IG5ld1N0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSA9IFtcbiAgICBuZXdTZWdtZW50LFxuICAgIG5ld0NoaWxkcmVuLFxuICAgIG51bGwsXG4gICAgZmxpZ2h0Um91dGVyU3RhdGVbM10sXG4gICAgZmxpZ2h0Um91dGVyU3RhdGVbNF0sXG4gIF1cbiAgcmV0dXJuIG5ld1N0YXRlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXh0RmxpZ2h0U2VnbWVudFBhdGgoXG4gIGZsaWdodFNlZ21lbnRQYXRoOiBGbGlnaHRTZWdtZW50UGF0aFxuKTogRmxpZ2h0U2VnbWVudFBhdGgge1xuICAvLyBTaW5jZSBgRmxpZ2h0U2VnbWVudFBhdGhgIGlzIGEgcmVwZWF0ZWQgdHVwbGUgb2YgYFNlZ21lbnRgIGFuZCBgUGFyYWxsZWxSb3V0ZUtleWAsIHdlIHNsaWNlIG9mZiB0d28gaXRlbXNcbiAgLy8gdG8gZ2V0IHRoZSBuZXh0IHNlZ21lbnQgcGF0aC5cbiAgcmV0dXJuIGZsaWdodFNlZ21lbnRQYXRoLnNsaWNlKDIpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVGbGlnaHREYXRhKFxuICBmbGlnaHREYXRhOiBGbGlnaHREYXRhXG4pOiBOb3JtYWxpemVkRmxpZ2h0RGF0YVtdIHwgc3RyaW5nIHtcbiAgLy8gRmxpZ2h0RGF0YSBjYW4gYmUgYSBzdHJpbmcgd2hlbiB0aGUgc2VydmVyIGRpZG4ndCByZXNwb25kIHdpdGggYSBwcm9wZXIgZmxpZ2h0IHJlc3BvbnNlLFxuICAvLyBvciB3aGVuIGEgcmVkaXJlY3QgaGFwcGVucywgdG8gc2lnbmFsIHRvIHRoZSBjbGllbnQgdGhhdCBpdCBuZWVkcyB0byBwZXJmb3JtIGFuIE1QQSBuYXZpZ2F0aW9uLlxuICBpZiAodHlwZW9mIGZsaWdodERhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZsaWdodERhdGFcbiAgfVxuXG4gIHJldHVybiBmbGlnaHREYXRhLm1hcCgoZmxpZ2h0RGF0YVBhdGgpID0+XG4gICAgZ2V0RmxpZ2h0RGF0YVBhcnRzRnJvbVBhdGgoZmxpZ2h0RGF0YVBhdGgpXG4gIClcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcHJlcGFyZSB0aGUgZmxpZ2h0IHJvdXRlciBzdGF0ZSBmb3IgdGhlIHJlcXVlc3QuXG4gKiBJdCByZW1vdmVzIG1hcmtlcnMgdGhhdCBhcmUgbm90IG5lZWRlZCBieSB0aGUgc2VydmVyLCBhbmQgYXJlIHB1cmVseSB1c2VkXG4gKiBmb3Igc3Rhc2hpbmcgc3RhdGUgb24gdGhlIGNsaWVudC5cbiAqIEBwYXJhbSBmbGlnaHRSb3V0ZXJTdGF0ZSAtIFRoZSBmbGlnaHQgcm91dGVyIHN0YXRlIHRvIHByZXBhcmUuXG4gKiBAcGFyYW0gaXNIbXJSZWZyZXNoIC0gV2hldGhlciB0aGlzIGlzIGFuIEhNUiByZWZyZXNoIHJlcXVlc3QuXG4gKiBAcmV0dXJucyBUaGUgcHJlcGFyZWQgZmxpZ2h0IHJvdXRlciBzdGF0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVGbGlnaHRSb3V0ZXJTdGF0ZUZvclJlcXVlc3QoXG4gIGZsaWdodFJvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgaXNIbXJSZWZyZXNoPzogYm9vbGVhblxuKTogc3RyaW5nIHtcbiAgLy8gSE1SIHJlcXVlc3RzIG5lZWQgdGhlIGNvbXBsZXRlLCB1bm1vZGlmaWVkIHN0YXRlIGZvciBwcm9wZXIgZnVuY3Rpb25hbGl0eVxuICBpZiAoaXNIbXJSZWZyZXNoKSB7XG4gICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShmbGlnaHRSb3V0ZXJTdGF0ZSkpXG4gIH1cblxuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KFxuICAgIEpTT04uc3RyaW5naWZ5KHN0cmlwQ2xpZW50T25seURhdGFGcm9tRmxpZ2h0Um91dGVyU3RhdGUoZmxpZ2h0Um91dGVyU3RhdGUpKVxuICApXG59XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgc3RyaXBzIGNsaWVudC1vbmx5IGRhdGEgZnJvbSBGbGlnaHRSb3V0ZXJTdGF0ZSB3aGlsZSBwcmVzZXJ2aW5nXG4gKiBzZXJ2ZXItbmVlZGVkIGluZm9ybWF0aW9uIGZvciBwcm9wZXIgcmVuZGVyaW5nIGRlY2lzaW9ucy5cbiAqL1xuZnVuY3Rpb24gc3RyaXBDbGllbnRPbmx5RGF0YUZyb21GbGlnaHRSb3V0ZXJTdGF0ZShcbiAgZmxpZ2h0Um91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlXG4pOiBGbGlnaHRSb3V0ZXJTdGF0ZSB7XG4gIGNvbnN0IFtcbiAgICBzZWdtZW50LFxuICAgIHBhcmFsbGVsUm91dGVzLFxuICAgIF9yZWZyZXNoU3RhdGUsIC8vIEludGVudGlvbmFsbHkgdW51c2VkIC0gVVJMcyBhcmUgY2xpZW50LW9ubHlcbiAgICByZWZyZXNoTWFya2VyLFxuICAgIHByZWZldGNoSGludHMsXG4gIF0gPSBmbGlnaHRSb3V0ZXJTdGF0ZVxuXG4gIC8vIFN0cmlwIGNsaWVudC1vbmx5IGRhdGEgZnJvbSB0aGUgc2VnbWVudFxuICBjb25zdCBjbGVhbmVkU2VnbWVudCA9IHN0cmlwQ2xpZW50T25seURhdGFGcm9tU2VnbWVudChzZWdtZW50KVxuXG4gIC8vIFJlY3Vyc2l2ZWx5IHByb2Nlc3MgcGFyYWxsZWwgcm91dGVzXG4gIGNvbnN0IGNsZWFuZWRQYXJhbGxlbFJvdXRlczogeyBba2V5OiBzdHJpbmddOiBGbGlnaHRSb3V0ZXJTdGF0ZSB9ID0ge31cbiAgZm9yIChjb25zdCBba2V5LCBjaGlsZFN0YXRlXSBvZiBPYmplY3QuZW50cmllcyhwYXJhbGxlbFJvdXRlcykpIHtcbiAgICBjbGVhbmVkUGFyYWxsZWxSb3V0ZXNba2V5XSA9XG4gICAgICBzdHJpcENsaWVudE9ubHlEYXRhRnJvbUZsaWdodFJvdXRlclN0YXRlKGNoaWxkU3RhdGUpXG4gIH1cblxuICBjb25zdCByZXN1bHQ6IEZsaWdodFJvdXRlclN0YXRlID0gW2NsZWFuZWRTZWdtZW50LCBjbGVhbmVkUGFyYWxsZWxSb3V0ZXNdXG4gIGlmIChyZWZyZXNoTWFya2VyKSB7XG4gICAgcmVzdWx0WzJdID0gbnVsbCAvLyBudWxsIHNsaWdodGx5IG1vcmUgY29tcGFjdCB0aGFuIHVuZGVmaW5lZFxuICAgIHJlc3VsdFszXSA9IHJlZnJlc2hNYXJrZXJcbiAgfVxuXG4gIC8vIEFwcGVuZCBvcHRpb25hbCBmaWVsZHMgaWYgcHJlc2VudFxuICBpZiAocHJlZmV0Y2hIaW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmVzdWx0WzRdID0gcHJlZmV0Y2hIaW50c1xuICB9XG5cbiAgLy8gRXZlcnl0aGluZyBlbHNlIGlzIHVzZWQgb25seSBieSB0aGUgY2xpZW50IGFuZCBpcyBub3QgbmVlZGVkIGZvciByZXF1ZXN0cy5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG4vKipcbiAqIFN0cmlwcyBjbGllbnQtb25seSBkYXRhIGZyb20gc2VnbWVudHM6XG4gKiAtIFNlYXJjaCBwYXJhbWV0ZXJzIGZyb20gX19QQUdFX18gc2VnbWVudHNcbiAqIC0gc3RhdGljU2libGluZ3MgZnJvbSBkeW5hbWljIHNlZ21lbnQgdHVwbGVzIChvbmx5IG5lZWRlZCBmb3IgY2xpZW50LXNpZGVcbiAqICAgcHJlZmV0Y2ggcmV1c2UgZGVjaXNpb25zKVxuICovXG5mdW5jdGlvbiBzdHJpcENsaWVudE9ubHlEYXRhRnJvbVNlZ21lbnQoc2VnbWVudDogU2VnbWVudCk6IFNlZ21lbnQge1xuICBpZiAodHlwZW9mIHNlZ21lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgLy8gU3RyaXAgc2VhcmNoIHBhcmFtcyBmcm9tIF9fUEFHRV9fIHNlZ21lbnRzXG4gICAgaWYgKHNlZ21lbnQuc3RhcnRzV2l0aChQQUdFX1NFR01FTlRfS0VZICsgJz8nKSkge1xuICAgICAgcmV0dXJuIFBBR0VfU0VHTUVOVF9LRVlcbiAgICB9XG4gICAgcmV0dXJuIHNlZ21lbnRcbiAgfVxuICAvLyBEeW5hbWljIHNlZ21lbnQgdHVwbGU6IFtwYXJhbU5hbWUsIHBhcmFtQ2FjaGVLZXksIHBhcmFtVHlwZSwgc3RhdGljU2libGluZ3NdXG4gIC8vIFN0cmlwIHN0YXRpY1NpYmxpbmdzICg0dGggZWxlbWVudCkgc2luY2Ugc2VydmVyIGRvZXNuJ3QgbmVlZCBpdFxuICBjb25zdCBbcGFyYW1OYW1lLCBwYXJhbUNhY2hlS2V5LCBwYXJhbVR5cGVdID0gc2VnbWVudFxuICByZXR1cm4gW3BhcmFtTmFtZSwgcGFyYW1DYWNoZUtleSwgcGFyYW1UeXBlLCBudWxsXVxufVxuIl0sIm5hbWVzIjpbImNyZWF0ZUluaXRpYWxSU0NQYXlsb2FkRnJvbUZhbGxiYWNrUHJlcmVuZGVyIiwiZ2V0RmxpZ2h0RGF0YVBhcnRzRnJvbVBhdGgiLCJnZXROZXh0RmxpZ2h0U2VnbWVudFBhdGgiLCJub3JtYWxpemVGbGlnaHREYXRhIiwicHJlcGFyZUZsaWdodFJvdXRlclN0YXRlRm9yUmVxdWVzdCIsImZsaWdodERhdGFQYXRoIiwiZmxpZ2h0RGF0YVBhdGhMZW5ndGgiLCJ0cmVlIiwic2VlZERhdGEiLCJoZWFkIiwiaXNIZWFkUGFydGlhbCIsInNsaWNlIiwic2VnbWVudFBhdGgiLCJwYXRoVG9TZWdtZW50Iiwic2VnbWVudCIsImxlbmd0aCIsImlzUm9vdFJlbmRlciIsInJlc3BvbnNlIiwiZmFsbGJhY2tJbml0aWFsUlNDUGF5bG9hZCIsInJlbmRlcmVkUGF0aG5hbWUiLCJnZXRSZW5kZXJlZFBhdGhuYW1lIiwicmVuZGVyZWRTZWFyY2giLCJnZXRSZW5kZXJlZFNlYXJjaCIsImNhbm9uaWNhbFVybCIsImNyZWF0ZUhyZWZGcm9tVXJsIiwiVVJMIiwibG9jYXRpb24iLCJocmVmIiwib3JpZ2luYWxGbGlnaHREYXRhUGF0aCIsImYiLCJvcmlnaW5hbEZsaWdodFJvdXRlclN0YXRlIiwicGF5bG9hZCIsImMiLCJzcGxpdCIsInEiLCJpIiwiZmlsbEluRmFsbGJhY2tGbGlnaHRSb3V0ZXJTdGF0ZSIsIm0iLCJHIiwiUyIsImgiLCJiIiwiZmxpZ2h0Um91dGVyU3RhdGUiLCJwYXRobmFtZVBhcnRzIiwiZmlsdGVyIiwicCIsImluZGV4IiwiZmlsbEluRmFsbGJhY2tGbGlnaHRSb3V0ZXJTdGF0ZUltcGwiLCJwYXRobmFtZVBhcnRzSW5kZXgiLCJvcmlnaW5hbFNlZ21lbnQiLCJuZXdTZWdtZW50IiwiZG9lc0FwcGVhckluVVJMIiwiZG9lc1N0YXRpY1NlZ21lbnRBcHBlYXJJblVSTCIsInBhcmFtTmFtZSIsInBhcmFtVHlwZSIsInN0YXRpY1NpYmxpbmdzIiwicGFyYW1WYWx1ZSIsInBhcnNlRHluYW1pY1BhcmFtRnJvbVVSTFBhcnQiLCJjYWNoZUtleSIsImdldENhY2hlS2V5Rm9yRHluYW1pY1BhcmFtIiwiY2hpbGRQYXRobmFtZVBhcnRzSW5kZXgiLCJjaGlsZHJlbiIsIm5ld0NoaWxkcmVuIiwia2V5IiwiY2hpbGRGbGlnaHRSb3V0ZXJTdGF0ZSIsIm5ld1N0YXRlIiwiZmxpZ2h0U2VnbWVudFBhdGgiLCJmbGlnaHREYXRhIiwibWFwIiwiaXNIbXJSZWZyZXNoIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiSlNPTiIsInN0cmluZ2lmeSIsInN0cmlwQ2xpZW50T25seURhdGFGcm9tRmxpZ2h0Um91dGVyU3RhdGUiLCJwYXJhbGxlbFJvdXRlcyIsIl9yZWZyZXNoU3RhdGUiLCJyZWZyZXNoTWFya2VyIiwicHJlZmV0Y2hIaW50cyIsImNsZWFuZWRTZWdtZW50Iiwic3RyaXBDbGllbnRPbmx5RGF0YUZyb21TZWdtZW50IiwiY2xlYW5lZFBhcmFsbGVsUm91dGVzIiwiY2hpbGRTdGF0ZSIsIk9iamVjdCIsImVudHJpZXMiLCJyZXN1bHQiLCJ1bmRlZmluZWQiLCJzdGFydHNXaXRoIiwiUEFHRV9TRUdNRU5UX0tFWSIsInBhcmFtQ2FjaGVLZXkiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/flight-data-helpers.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/has-base-path.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/next/dist/client/has-base-path.js ***!
|
||
\********************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"hasBasePath\", ({\n enumerable: true,\n get: function() {\n return hasBasePath;\n }\n}));\nconst _pathhasprefix = __webpack_require__(/*! ../shared/lib/router/utils/path-has-prefix */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js\");\nconst basePath = false || '';\nfunction hasBasePath(path) {\n return (0, _pathhasprefix.pathHasPrefix)(path, basePath);\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=has-base-path.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9oYXMtYmFzZS1wYXRoLmpzIiwibWFwcGluZ3MiOiI7Ozs7K0NBSWdCQTs7O2VBQUFBOzs7MkNBSmM7QUFFOUIsTUFBTUMsV0FBWUMsTUFBa0MsSUFBZTtBQUU1RCxTQUFTRixZQUFZSyxJQUFZO0lBQ3RDLE9BQU9DLENBQUFBLEdBQUFBLGVBQUFBLGFBQUFBLEVBQWNELE1BQU1KO0FBQzdCIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9zcmMvY2xpZW50L2hhcy1iYXNlLXBhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGF0aEhhc1ByZWZpeCB9IGZyb20gJy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhdGgtaGFzLXByZWZpeCdcblxuY29uc3QgYmFzZVBhdGggPSAocHJvY2Vzcy5lbnYuX19ORVhUX1JPVVRFUl9CQVNFUEFUSCBhcyBzdHJpbmcpIHx8ICcnXG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNCYXNlUGF0aChwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHBhdGhIYXNQcmVmaXgocGF0aCwgYmFzZVBhdGgpXG59XG4iXSwibmFtZXMiOlsiaGFzQmFzZVBhdGgiLCJiYXNlUGF0aCIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfUk9VVEVSX0JBU0VQQVRIIiwicGF0aCIsInBhdGhIYXNQcmVmaXgiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/has-base-path.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/lib/console.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/next/dist/client/lib/console.js ***!
|
||
\******************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n formatConsoleArgs: function() {\n return formatConsoleArgs;\n },\n parseConsoleArgs: function() {\n return parseConsoleArgs;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _iserror = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../../lib/is-error */ \"(ssr)/./node_modules/next/dist/lib/is-error.js\"));\nfunction formatObject(arg, depth) {\n switch(typeof arg){\n case 'object':\n if (arg === null) {\n return 'null';\n } else if (Array.isArray(arg)) {\n let result = '[';\n if (depth < 1) {\n for(let i = 0; i < arg.length; i++){\n if (result !== '[') {\n result += ',';\n }\n if (Object.prototype.hasOwnProperty.call(arg, i)) {\n result += formatObject(arg[i], depth + 1);\n }\n }\n } else {\n result += arg.length > 0 ? '...' : '';\n }\n result += ']';\n return result;\n } else if (arg instanceof Error) {\n return arg + '';\n } else {\n const keys = Object.keys(arg);\n let result = '{';\n if (depth < 1) {\n for(let i = 0; i < keys.length; i++){\n const key = keys[i];\n const desc = Object.getOwnPropertyDescriptor(arg, 'key');\n if (desc && !desc.get && !desc.set) {\n const jsonKey = JSON.stringify(key);\n if (jsonKey !== '\"' + key + '\"') {\n result += jsonKey + ': ';\n } else {\n result += key + ': ';\n }\n result += formatObject(desc.value, depth + 1);\n }\n }\n } else {\n result += keys.length > 0 ? '...' : '';\n }\n result += '}';\n return result;\n }\n case 'string':\n return JSON.stringify(arg);\n case 'number':\n case 'bigint':\n case 'boolean':\n case 'symbol':\n case 'undefined':\n case 'function':\n default:\n return String(arg);\n }\n}\nfunction formatConsoleArgs(args) {\n let message;\n let idx;\n if (typeof args[0] === 'string') {\n message = args[0];\n idx = 1;\n } else {\n message = '';\n idx = 0;\n }\n let result = '';\n let startQuote = false;\n for(let i = 0; i < message.length; ++i){\n const char = message[i];\n if (char !== '%' || i === message.length - 1 || idx >= args.length) {\n result += char;\n continue;\n }\n const code = message[++i];\n switch(code){\n case 'c':\n {\n // TODO: We should colorize with HTML instead of turning into a string.\n // Ignore for now.\n result = startQuote ? `${result}]` : `[${result}`;\n startQuote = !startQuote;\n idx++;\n break;\n }\n case 'O':\n case 'o':\n {\n result += formatObject(args[idx++], 0);\n break;\n }\n case 'd':\n case 'i':\n {\n result += parseInt(args[idx++], 10);\n break;\n }\n case 'f':\n {\n result += parseFloat(args[idx++]);\n break;\n }\n case 's':\n {\n result += String(args[idx++]);\n break;\n }\n default:\n result += '%' + code;\n }\n }\n for(; idx < args.length; idx++){\n result += (idx > 0 ? ' ' : '') + formatObject(args[idx], 0);\n }\n return result;\n}\nfunction parseConsoleArgs(args) {\n // See\n // https://github.com/facebook/react/blob/65a56d0e99261481c721334a3ec4561d173594cd/packages/react-devtools-shared/src/backend/flight/renderer.js#L88-L93\n //\n // Logs replayed from the server look like this:\n // [\n // \"%c%s%c%o\\n\\n%s\\n\\n%s\\n\",\n // \"background: #e6e6e6; ...\",\n // \" Server \", // can also be e.g. \" Prerender \"\n // \"\",\n // Error,\n // \"The above error occurred in the <Page> component.\",\n // ...\n // ]\n if (args.length > 3 && typeof args[0] === 'string' && args[0].startsWith('%c%s%c') && typeof args[1] === 'string' && typeof args[2] === 'string' && typeof args[3] === 'string') {\n const environmentName = args[2];\n const maybeError = args[4];\n return {\n environmentName: environmentName.trim(),\n error: (0, _iserror.default)(maybeError) ? maybeError : null\n };\n }\n return {\n environmentName: null,\n error: null\n };\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=console.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9saWIvY29uc29sZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUE2RGdCQSxpQkFBaUI7ZUFBakJBOztJQTJEQUMsZ0JBQWdCO2VBQWhCQTs7Ozs4RUF4SEk7QUFFcEIsU0FBU0MsYUFBYUMsR0FBWSxFQUFFQyxLQUFhO0lBQy9DLE9BQVEsT0FBT0Q7UUFDYixLQUFLO1lBQ0gsSUFBSUEsUUFBUSxNQUFNO2dCQUNoQixPQUFPO1lBQ1QsT0FBTyxJQUFJRSxNQUFNQyxPQUFPLENBQUNILE1BQU07Z0JBQzdCLElBQUlJLFNBQVM7Z0JBQ2IsSUFBSUgsUUFBUSxHQUFHO29CQUNiLElBQUssSUFBSUksSUFBSSxHQUFHQSxJQUFJTCxJQUFJTSxNQUFNLEVBQUVELElBQUs7d0JBQ25DLElBQUlELFdBQVcsS0FBSzs0QkFDbEJBLFVBQVU7d0JBQ1o7d0JBQ0EsSUFBSUcsT0FBT0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1YsS0FBS0ssSUFBSTs0QkFDaERELFVBQVVMLGFBQWFDLEdBQUcsQ0FBQ0ssRUFBRSxFQUFFSixRQUFRO3dCQUN6QztvQkFDRjtnQkFDRixPQUFPO29CQUNMRyxVQUFVSixJQUFJTSxNQUFNLEdBQUcsSUFBSSxRQUFRO2dCQUNyQztnQkFDQUYsVUFBVTtnQkFDVixPQUFPQTtZQUNULE9BQU8sSUFBSUosZUFBZVcsT0FBTztnQkFDL0IsT0FBT1gsTUFBTTtZQUNmLE9BQU87Z0JBQ0wsTUFBTVksT0FBT0wsT0FBT0ssSUFBSSxDQUFDWjtnQkFDekIsSUFBSUksU0FBUztnQkFDYixJQUFJSCxRQUFRLEdBQUc7b0JBQ2IsSUFBSyxJQUFJSSxJQUFJLEdBQUdBLElBQUlPLEtBQUtOLE1BQU0sRUFBRUQsSUFBSzt3QkFDcEMsTUFBTVEsTUFBTUQsSUFBSSxDQUFDUCxFQUFFO3dCQUNuQixNQUFNUyxPQUFPUCxPQUFPUSx3QkFBd0IsQ0FBQ2YsS0FBSzt3QkFDbEQsSUFB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QyxhQUNuQixPQUFPUixJQUFJLENBQUMsRUFBRSxLQUFLLFlBQ25CLE9BQU9BLElBQUksQ0FBQyxFQUFFLEtBQUssWUFDbkIsT0FBT0EsSUFBSSxDQUFDLEVBQUUsS0FBSyxVQUNuQjtRQUNBLE1BQU1TLGtCQUFrQlQsSUFBSSxDQUFDLEVBQUU7UUFDL0IsTUFBTVUsYUFBYVYsSUFBSSxDQUFDLEVBQUU7UUFFMUIsT0FBTztZQUNMUyxpQkFBaUJBLGdCQUFnQkUsSUFBSTtZQUNyQ0MsT0FBT0MsQ0FBQUEsR0FBQUEsU0FBQUEsT0FBQUEsRUFBUUgsY0FBY0EsYUFBYTtRQUM1QztJQUNGO0lBRUEsT0FBTztRQUNMRCxpQkFBaUI7UUFDakJHLE9BQU87SUFDVDtBQUNGIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL2NsaWVudC9saWIvY29uc29sZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNFcnJvciBmcm9tICcuLi8uLi9saWIvaXMtZXJyb3InXG5cbmZ1bmN0aW9uIGZvcm1hdE9iamVjdChhcmc6IHVua25vd24sIGRlcHRoOiBudW1iZXIpIHtcbiAgc3dpdGNoICh0eXBlb2YgYXJnKSB7XG4gICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgIGlmIChhcmcgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICdudWxsJ1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9ICdbJ1xuICAgICAgICBpZiAoZGVwdGggPCAxKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09ICdbJykge1xuICAgICAgICAgICAgICByZXN1bHQgKz0gJywnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGFyZywgaSkpIHtcbiAgICAgICAgICAgICAgcmVzdWx0ICs9IGZvcm1hdE9iamVjdChhcmdbaV0sIGRlcHRoICsgMSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ICs9IGFyZy5sZW5ndGggPiAwID8gJy4uLicgOiAnJ1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCArPSAnXSdcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfSBlbHNlIGlmIChhcmcgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICByZXR1cm4gYXJnICsgJydcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhhcmcpXG4gICAgICAgIGxldCByZXN1bHQgPSAneydcbiAgICAgICAgaWYgKGRlcHRoIDwgMSkge1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXVxuICAgICAgICAgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYXJnLCAna2V5JylcbiAgICAgICAgICAgIGlmIChkZXNjICYmICFkZXNjLmdldCAmJiAhZGVzYy5zZXQpIHtcbiAgICAgICAgICAgICAgY29uc3QganNvbktleSA9IEpTT04uc3RyaW5naWZ5KGtleSlcbiAgICAgICAgICAgICAgaWYgKGpzb25LZXkgIT09ICdcIicgKyBrZXkgKyAnXCInKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGpzb25LZXkgKyAnOiAnXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGtleSArICc6ICdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXN1bHQgKz0gZm9ybWF0T2JqZWN0KGRlc2MudmFsdWUsIGRlcHRoICsgMSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ICs9IGtleXMubGVuZ3RoID4gMCA/ICcuLi4nIDogJydcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgKz0gJ30nXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH1cbiAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGFyZylcbiAgICBjYXNlICdudW1iZXInOlxuICAgIGNhc2UgJ2JpZ2ludCc6XG4gICAgY2FzZSAnYm9vbGVhbic6XG4gICAgY2FzZSAnc3ltYm9sJzpcbiAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFN0cmluZyhhcmcpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdENvbnNvbGVBcmdzKGFyZ3M6IHVua25vd25bXSk6IHN0cmluZyB7XG4gIGxldCBtZXNzYWdlOiBzdHJpbmdcbiAgbGV0IGlkeDogbnVtYmVyXG4gIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICBtZXNzYWdlID0gYXJnc1swXVxuICAgIGlkeCA9IDFcbiAgfSBlbHNlIHtcbiAgICBtZXNzYWdlID0gJydcbiAgICBpZHggPSAwXG4gIH1cbiAgbGV0IHJlc3VsdCA9ICcnXG4gIGxldCBzdGFydFF1b3RlID0gZmFsc2VcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtZXNzYWdlLmxlbmd0aDsgKytpKSB7XG4gICAgY29uc3QgY2hhciA9IG1lc3NhZ2VbaV1cbiAgICBpZiAoY2hhciAhPT0gJyUnIHx8IGkgPT09IG1lc3NhZ2UubGVuZ3RoIC0gMSB8fCBpZHggPj0gYXJncy5sZW5ndGgpIHtcbiAgICAgIHJlc3VsdCArPSBjaGFyXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGNvbnN0IGNvZGUgPSBtZXNzYWdlWysraV1cbiAgICBzd2l0Y2ggKGNvZGUpIHtcbiAgICAgIGNhc2UgJ2MnOiB7XG4gICAgICAgIC8vIFRPRE86IFdlIHNob3VsZCBjb2xvcml6ZSB3aXRoIEhUTUwgaW5zdGVhZCBvZiB0dXJuaW5nIGludG8gYSBzdHJpbmcuXG4gICAgICAgIC8vIElnbm9yZSBmb3Igbm93LlxuICAgICAgICByZXN1bHQgPSBzdGFydFF1b3RlID8gYCR7cmVzdWx0fV1gIDogYFske3Jlc3VsdH1gXG4gICAgICAgIHN0YXJ0UXVvdGUgPSAhc3RhcnRRdW90ZVxuICAgICAgICBpZHgrK1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnTyc6XG4gICAgICBjYXNlICdvJzoge1xuICAgICAgICByZXN1bHQgKz0gZm9ybWF0T2JqZWN0KGFyZ3NbaWR4KytdLCAwKVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnZCc6XG4gICAgICBjYXNlICdpJzoge1xuICAgICAgICByZXN1bHQgKz0gcGFyc2VJbnQoYXJnc1tpZHgrK10gYXMgYW55LCAxMClcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2YnOiB7XG4gICAgICAgIHJlc3VsdCArPSBwYXJzZUZsb2F0KGFyZ3NbaWR4KytdIGFzIGFueSlcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3MnOiB7XG4gICAgICAgIHJlc3VsdCArPSBTdHJpbmcoYXJnc1tpZHgrK10pXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXN1bHQgKz0gJyUnICsgY29kZVxuICAgIH1cbiAgfVxuXG4gIGZvciAoOyBpZHggPCBhcmdzLmxlbmd0aDsgaWR4KyspIHtcbiAgICByZXN1bHQgKz0gKGlkeCA+IDAgPyAnICcgOiAnJykgKyBmb3JtYXRPYmplY3QoYXJnc1tpZHhdLCAwKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDb25zb2xlQXJncyhhcmdzOiB1bmtub3duW10pOiB7XG4gIGVudmlyb25tZW50TmFtZTogc3RyaW5nIHwgbnVsbFxuICBlcnJvcjogRXJyb3IgfCBudWxsXG59IHtcbiAgLy8gU2VlXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9ibG9iLzY1YTU2ZDBlOTkyNjE0ODFjNzIxMzM0YTNlYzQ1NjFkMTczNTk0Y2QvcGFja2FnZXMvcmVhY3QtZGV2dG9vbHMtc2hhcmVkL3NyYy9iYWNrZW5kL2ZsaWdodC9yZW5kZXJlci5qcyNMODgtTDkzXG4gIC8vXG4gIC8vIExvZ3MgcmVwbGF5ZWQgZnJvbSB0aGUgc2VydmVyIGxvb2sgbGlrZSB0aGlzOlxuICAvLyBbXG4gIC8vICAgXCIlYyVzJWMlb1xcblxcbiVzXFxuXFxuJXNcXG5cIixcbiAgLy8gICBcImJhY2tncm91bmQ6ICNlNmU2ZTY7IC4uLlwiLFxuICAvLyAgIFwiIFNlcnZlciBcIiwgLy8gY2FuIGFsc28gYmUgZS5nLiBcIiBQcmVyZW5kZXIgXCJcbiAgLy8gICBcIlwiLFxuICAvLyAgIEVycm9yLFxuICAvLyAgIFwiVGhlIGFib3ZlIGVycm9yIG9jY3VycmVkIGluIHRoZSA8UGFnZT4gY29tcG9uZW50LlwiLFxuICAvLyAgIC4uLlxuICAvLyBdXG4gIGlmIChcbiAgICBhcmdzLmxlbmd0aCA+IDMgJiZcbiAgICB0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycgJiZcbiAgICBhcmdzWzBdLnN0YXJ0c1dpdGgoJyVjJXMlYycpICYmXG4gICAgdHlwZW9mIGFyZ3NbMV0gPT09ICdzdHJpbmcnICYmXG4gICAgdHlwZW9mIGFyZ3NbMl0gPT09ICdzdHJpbmcnICYmXG4gICAgdHlwZW9mIGFyZ3NbM10gPT09ICdzdHJpbmcnXG4gICkge1xuICAgIGNvbnN0IGVudmlyb25tZW50TmFtZSA9IGFyZ3NbMl1cbiAgICBjb25zdCBtYXliZUVycm9yID0gYXJnc1s0XVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVudmlyb25tZW50TmFtZTogZW52aXJvbm1lbnROYW1lLnRyaW0oKSxcbiAgICAgIGVycm9yOiBpc0Vycm9yKG1heWJlRXJyb3IpID8gbWF5YmVFcnJvciA6IG51bGwsXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlbnZpcm9ubWVudE5hbWU6IG51bGwsXG4gICAgZXJyb3I6IG51bGwsXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJmb3JtYXRDb25zb2xlQXJncyIsInBhcnNlQ29uc29sZUFyZ3MiLCJmb3JtYXRPYmplY3QiLCJhcmciLCJkZXB0aCIsIkFycmF5IiwiaXNBcnJheSIsInJlc3VsdCIsImkiLCJsZW5ndGgiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJFcnJvciIsImtleXMiLCJrZXkiLCJkZXNjIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZ2V0Iiwic2V0IiwianNvbktleSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ2YWx1ZSIsIlN0cmluZyIsImFyZ3MiLCJtZXNzYWdlIiwiaWR4Iiwic3RhcnRRdW90ZSIsImNoYXIiLCJjb2RlIiwicGFyc2VJbnQiLCJwYXJzZUZsb2F0Iiwic3RhcnRzV2l0aCIsImVudmlyb25tZW50TmFtZSIsIm1heWJlRXJyb3IiLCJ0cmltIiwiZXJyb3IiLCJpc0Vycm9yIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/lib/console.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/lib/javascript-url.js":
|
||
/*!*************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/lib/javascript-url.js ***!
|
||
\*************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("// Adapted from React's sanitizeURL function found here: https://github.com/facebook/react/blob/b565373afd0cc1988497e1107106e851e8cfb261/packages/react-dom-bindings/src/shared/sanitizeURL.js\n// A javascript: URL can contain leading C0 control or \\u0020 SPACE,\n// and any newline or tab are filtered out as if they're not part of the URL.\n// https://url.spec.whatwg.org/#url-parsing\n// Tab or newline are defined as \\r\\n\\t:\n// https://infra.spec.whatwg.org/#ascii-tab-or-newline\n// A C0 control is a code point in the range \\u0000 NULL to \\u001F\n// INFORMATION SEPARATOR ONE, inclusive:\n// https://infra.spec.whatwg.org/#c0-control-or-space\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"isJavaScriptURLString\", ({\n enumerable: true,\n get: function() {\n return isJavaScriptURLString;\n }\n}));\nconst isJavaScriptProtocol = /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*:/i;\nfunction isJavaScriptURLString(url) {\n return isJavaScriptProtocol.test('' + url);\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=javascript-url.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9saWIvamF2YXNjcmlwdC11cmwuanMiLCJtYXBwaW5ncyI6IkFBQUEsOExBQThMO0FBRTlMLG9FQUFvRTtBQUNwRSw2RUFBNkU7QUFDN0UsMkNBQTJDO0FBQzNDLHdDQUF3QztBQUN4QyxzREFBc0Q7QUFDdEQsa0VBQWtFO0FBQ2xFLHdDQUF3QztBQUN4QyxxREFBcUQ7Ozs7O3lEQU1yQ0E7OztlQUFBQTs7O0FBSmhCLE1BQU1DLHVCQUNKLDRDQUE0QztBQUd2QyxTQUFTRCxzQkFBc0JFLEdBQVc7SUFDL0MsT0FBT0QscUJBQXFCRSxJQUFJLENBQUMsS0FBTUQ7QUFDekMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9zcmMvY2xpZW50L2xpYi9qYXZhc2NyaXB0LXVybC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBZGFwdGVkIGZyb20gUmVhY3QncyBzYW5pdGl6ZVVSTCBmdW5jdGlvbiBmb3VuZCBoZXJlOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvYmxvYi9iNTY1MzczYWZkMGNjMTk4ODQ5N2UxMTA3MTA2ZTg1MWU4Y2ZiMjYxL3BhY2thZ2VzL3JlYWN0LWRvbS1iaW5kaW5ncy9zcmMvc2hhcmVkL3Nhbml0aXplVVJMLmpzXG5cbi8vIEEgamF2YXNjcmlwdDogVVJMIGNhbiBjb250YWluIGxlYWRpbmcgQzAgY29udHJvbCBvciBcXHUwMDIwIFNQQUNFLFxuLy8gYW5kIGFueSBuZXdsaW5lIG9yIHRhYiBhcmUgZmlsdGVyZWQgb3V0IGFzIGlmIHRoZXkncmUgbm90IHBhcnQgb2YgdGhlIFVSTC5cbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jdXJsLXBhcnNpbmdcbi8vIFRhYiBvciBuZXdsaW5lIGFyZSBkZWZpbmVkIGFzIFxcclxcblxcdDpcbi8vIGh0dHBzOi8vaW5mcmEuc3BlYy53aGF0d2cub3JnLyNhc2NpaS10YWItb3ItbmV3bGluZVxuLy8gQSBDMCBjb250cm9sIGlzIGEgY29kZSBwb2ludCBpbiB0aGUgcmFuZ2UgXFx1MDAwMCBOVUxMIHRvIFxcdTAwMUZcbi8vIElORk9STUFUSU9OIFNFUEFSQVRPUiBPTkUsIGluY2x1c2l2ZTpcbi8vIGh0dHBzOi8vaW5mcmEuc3BlYy53aGF0d2cub3JnLyNjMC1jb250cm9sLW9yLXNwYWNlXG5cbmNvbnN0IGlzSmF2YVNjcmlwdFByb3RvY29sID1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnRyb2wtcmVnZXhcbiAgL15bXFx1MDAwMC1cXHUwMDFGIF0qaltcXHJcXG5cXHRdKmFbXFxyXFxuXFx0XSp2W1xcclxcblxcdF0qYVtcXHJcXG5cXHRdKnNbXFxyXFxuXFx0XSpjW1xcclxcblxcdF0qcltcXHJcXG5cXHRdKmlbXFxyXFxuXFx0XSpwW1xcclxcblxcdF0qdFtcXHJcXG5cXHRdKjovaVxuXG5leHBvcnQgZnVuY3Rpb24gaXNKYXZhU2NyaXB0VVJMU3RyaW5nKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc0phdmFTY3JpcHRQcm90b2NvbC50ZXN0KCcnICsgKHVybCBhcyB1bmtub3duIGFzIHN0cmluZykpXG59XG4iXSwibmFtZXMiOlsiaXNKYXZhU2NyaXB0VVJMU3RyaW5nIiwiaXNKYXZhU2NyaXB0UHJvdG9jb2wiLCJ1cmwiLCJ0ZXN0Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/lib/javascript-url.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/navigation-build-id.js":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/navigation-build-id.js ***!
|
||
\**************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("// This gets assigned as a side-effect during app initialization. Because it\n// represents the build used to create the JS bundle, it should never change\n// after being set, so we store it in a global variable.\n//\n// When performing RSC requests, if the incoming data has a different build ID,\n// we perform an MPA navigation/refresh to load the updated build and ensure\n// that the client and server in sync.\n//\n// Starts as an empty string. In practice, because setNavigationBuildId is called during initialization\n// before hydration starts, this will always get reassigned to the actual ID before it's ever needed\n// by a navigation. If for some reasons it didn't, due to a bug or race condition, then on\n// navigation the build comparision would fail and trigger an MPA navigation.\n//\n// Note that this can also be initialized with the deployment id instead (if available). So it's not\n// the same as \"the build id\", but we are running out of alternative names for \"build id or\n// deployment id\".\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getNavigationBuildId: function() {\n return getNavigationBuildId;\n },\n setNavigationBuildId: function() {\n return setNavigationBuildId;\n }\n});\nlet globalBuildId = '';\nfunction setNavigationBuildId(buildId) {\n globalBuildId = buildId;\n}\nfunction getNavigationBuildId() {\n return globalBuildId;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=navigation-build-id.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9uYXZpZ2F0aW9uLWJ1aWxkLWlkLmpzIiwibWFwcGluZ3MiOiJBQUFBLDRFQUE0RTtBQUM1RSw0RUFBNEU7QUFDNUUsd0RBQXdEO0FBQ3hELEVBQUU7QUFDRiwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLHNDQUFzQztBQUN0QyxFQUFFO0FBQ0YsdUdBQXVHO0FBQ3ZHLG9HQUFvRztBQUNwRywwRkFBMEY7QUFDMUYsNkVBQTZFO0FBQzdFLEVBQUU7QUFDRixvR0FBb0c7QUFDcEcsMkZBQTJGO0FBQzNGLGtCQUFrQjs7Ozs7Ozs7Ozs7OztJQU9GQSxvQkFBb0I7ZUFBcEJBOztJQUpBQyxvQkFBb0I7ZUFBcEJBOzs7QUFGaEIsSUFBSUMsZ0JBQXdCO0FBRXJCLFNBQVNELHFCQUFxQkUsT0FBZTtJQUNsREQsZ0JBQWdCQztBQUNsQjtBQUVPLFNBQVNIO0lBQ2QsT0FBT0U7QUFDVCIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3Avc3JjL2NsaWVudC9uYXZpZ2F0aW9uLWJ1aWxkLWlkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZ2V0cyBhc3NpZ25lZCBhcyBhIHNpZGUtZWZmZWN0IGR1cmluZyBhcHAgaW5pdGlhbGl6YXRpb24uIEJlY2F1c2UgaXRcbi8vIHJlcHJlc2VudHMgdGhlIGJ1aWxkIHVzZWQgdG8gY3JlYXRlIHRoZSBKUyBidW5kbGUsIGl0IHNob3VsZCBuZXZlciBjaGFuZ2Vcbi8vIGFmdGVyIGJlaW5nIHNldCwgc28gd2Ugc3RvcmUgaXQgaW4gYSBnbG9iYWwgdmFyaWFibGUuXG4vL1xuLy8gV2hlbiBwZXJmb3JtaW5nIFJTQyByZXF1ZXN0cywgaWYgdGhlIGluY29taW5nIGRhdGEgaGFzIGEgZGlmZmVyZW50IGJ1aWxkIElELFxuLy8gd2UgcGVyZm9ybSBhbiBNUEEgbmF2aWdhdGlvbi9yZWZyZXNoIHRvIGxvYWQgdGhlIHVwZGF0ZWQgYnVpbGQgYW5kIGVuc3VyZVxuLy8gdGhhdCB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIgaW4gc3luYy5cbi8vXG4vLyBTdGFydHMgYXMgYW4gZW1wdHkgc3RyaW5nLiBJbiBwcmFjdGljZSwgYmVjYXVzZSBzZXROYXZpZ2F0aW9uQnVpbGRJZCBpcyBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uXG4vLyBiZWZvcmUgaHlkcmF0aW9uIHN0YXJ0cywgdGhpcyB3aWxsIGFsd2F5cyBnZXQgcmVhc3NpZ25lZCB0byB0aGUgYWN0dWFsIElEIGJlZm9yZSBpdCdzIGV2ZXIgbmVlZGVkXG4vLyBieSBhIG5hdmlnYXRpb24uIElmIGZvciBzb21lIHJlYXNvbnMgaXQgZGlkbid0LCBkdWUgdG8gYSBidWcgb3IgcmFjZSBjb25kaXRpb24sIHRoZW4gb25cbi8vIG5hdmlnYXRpb24gdGhlIGJ1aWxkIGNvbXBhcmlzaW9uIHdvdWxkIGZhaWwgYW5kIHRyaWdnZXIgYW4gTVBBIG5hdmlnYXRpb24uXG4vL1xuLy8gTm90ZSB0aGF0IHRoaXMgY2FuIGFsc28gYmUgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgZGVwbG95bWVudCBpZCBpbnN0ZWFkIChpZiBhdmFpbGFibGUpLiBTbyBpdCdzIG5vdFxuLy8gdGhlIHNhbWUgYXMgXCJ0aGUgYnVpbGQgaWRcIiwgYnV0IHdlIGFyZSBydW5uaW5nIG91dCBvZiBhbHRlcm5hdGl2ZSBuYW1lcyBmb3IgXCJidWlsZCBpZCBvclxuLy8gZGVwbG95bWVudCBpZFwiLlxubGV0IGdsb2JhbEJ1aWxkSWQ6IHN0cmluZyA9ICcnXG5cbmV4cG9ydCBmdW5jdGlvbiBzZXROYXZpZ2F0aW9uQnVpbGRJZChidWlsZElkOiBzdHJpbmcpIHtcbiAgZ2xvYmFsQnVpbGRJZCA9IGJ1aWxkSWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5hdmlnYXRpb25CdWlsZElkKCk6IHN0cmluZyB7XG4gIHJldHVybiBnbG9iYWxCdWlsZElkXG59XG4iXSwibmFtZXMiOlsiZ2V0TmF2aWdhdGlvbkJ1aWxkSWQiLCJzZXROYXZpZ2F0aW9uQnVpbGRJZCIsImdsb2JhbEJ1aWxkSWQiLCJidWlsZElkIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/navigation-build-id.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/normalize-trailing-slash.js":
|
||
/*!*******************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/normalize-trailing-slash.js ***!
|
||
\*******************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"normalizePathTrailingSlash\", ({\n enumerable: true,\n get: function() {\n return normalizePathTrailingSlash;\n }\n}));\nconst _removetrailingslash = __webpack_require__(/*! ../shared/lib/router/utils/remove-trailing-slash */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js\");\nconst _parsepath = __webpack_require__(/*! ../shared/lib/router/utils/parse-path */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/parse-path.js\");\nconst normalizePathTrailingSlash = (path)=>{\n if (!path.startsWith('/') || undefined) {\n return path;\n }\n const { pathname, query, hash } = (0, _parsepath.parsePath)(path);\n if (false) {}\n return `${(0, _removetrailingslash.removeTrailingSlash)(pathname)}${query}${hash}`;\n};\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=normalize-trailing-slash.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9ub3JtYWxpemUtdHJhaWxpbmctc2xhc2guanMiLCJtYXBwaW5ncyI6Ijs7Ozs4REFPYUE7OztlQUFBQTs7O2lEQVB1Qjt1Q0FDVjtBQU1uQixNQUFNQSw2QkFBNkIsQ0FBQ0M7SUFDekMsSUFBSSxDQUFDQSxLQUFLQyxVQUFVLENBQUMsUUFBUUMsU0FBd0MsRUFBRTtRQUNyRSxPQUFPRjtJQUNUO0lBRUEsTUFBTSxFQUFFSyxRQUFRLEVBQUVDLEtBQUssRUFBRUMsSUFBSSxFQUFFLEdBQUdDLENBQUFBLEdBQUFBLFdBQUFBLFNBQUFBLEVBQVVSO0lBQzVDLElBQUlFLEtBQWlDLEVBQUUsRUFRdEM7SUFFRCxPQUFPLEdBQUdTLENBQUFBLEdBQUFBLHFCQUFBQSxtQkFBQUEsRUFBb0JOLFlBQVlDLFFBQVFDLE1BQU07QUFDMUQiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL3NyYy9jbGllbnQvbm9ybWFsaXplLXRyYWlsaW5nLXNsYXNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbW92ZVRyYWlsaW5nU2xhc2ggfSBmcm9tICcuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9yZW1vdmUtdHJhaWxpbmctc2xhc2gnXG5pbXBvcnQgeyBwYXJzZVBhdGggfSBmcm9tICcuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9wYXJzZS1wYXRoJ1xuXG4vKipcbiAqIE5vcm1hbGl6ZXMgdGhlIHRyYWlsaW5nIHNsYXNoIG9mIGEgcGF0aCBhY2NvcmRpbmcgdG8gdGhlIGB0cmFpbGluZ1NsYXNoYCBvcHRpb25cbiAqIGluIGBuZXh0LmNvbmZpZy5qc2AuXG4gKi9cbmV4cG9ydCBjb25zdCBub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaCA9IChwYXRoOiBzdHJpbmcpID0+IHtcbiAgaWYgKCFwYXRoLnN0YXJ0c1dpdGgoJy8nKSB8fCBwcm9jZXNzLmVudi5fX05FWFRfTUFOVUFMX1RSQUlMSU5HX1NMQVNIKSB7XG4gICAgcmV0dXJuIHBhdGhcbiAgfVxuXG4gIGNvbnN0IHsgcGF0aG5hbWUsIHF1ZXJ5LCBoYXNoIH0gPSBwYXJzZVBhdGgocGF0aClcbiAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9UUkFJTElOR19TTEFTSCkge1xuICAgIGlmICgvXFwuW14vXStcXC8/JC8udGVzdChwYXRobmFtZSkpIHtcbiAgICAgIHJldHVybiBgJHtyZW1vdmVUcmFpbGluZ1NsYXNoKHBhdGhuYW1lKX0ke3F1ZXJ5fSR7aGFzaH1gXG4gICAgfSBlbHNlIGlmIChwYXRobmFtZS5lbmRzV2l0aCgnLycpKSB7XG4gICAgICByZXR1cm4gYCR7cGF0aG5hbWV9JHtxdWVyeX0ke2hhc2h9YFxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYCR7cGF0aG5hbWV9LyR7cXVlcnl9JHtoYXNofWBcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYCR7cmVtb3ZlVHJhaWxpbmdTbGFzaChwYXRobmFtZSl9JHtxdWVyeX0ke2hhc2h9YFxufVxuIl0sIm5hbWVzIjpbIm5vcm1hbGl6ZVBhdGhUcmFpbGluZ1NsYXNoIiwicGF0aCIsInN0YXJ0c1dpdGgiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX01BTlVBTF9UUkFJTElOR19TTEFTSCIsInBhdGhuYW1lIiwicXVlcnkiLCJoYXNoIiwicGFyc2VQYXRoIiwiX19ORVhUX1RSQUlMSU5HX1NMQVNIIiwidGVzdCIsInJlbW92ZVRyYWlsaW5nU2xhc2giLCJlbmRzV2l0aCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/normalize-trailing-slash.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/remove-base-path.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/next/dist/client/remove-base-path.js ***!
|
||
\***********************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"removeBasePath\", ({\n enumerable: true,\n get: function() {\n return removeBasePath;\n }\n}));\nconst _hasbasepath = __webpack_require__(/*! ./has-base-path */ \"(ssr)/./node_modules/next/dist/client/has-base-path.js\");\nconst basePath = false || '';\nfunction removeBasePath(path) {\n if (false) {}\n // Can't trim the basePath if it has zero length!\n if (basePath.length === 0) return path;\n path = path.slice(basePath.length);\n if (!path.startsWith('/')) path = `/${path}`;\n return path;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=remove-base-path.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZW1vdmUtYmFzZS1wYXRoLmpzIiwibWFwcGluZ3MiOiI7Ozs7a0RBSWdCQTs7O2VBQUFBOzs7eUNBSlk7QUFFNUIsTUFBTUMsV0FBWUMsTUFBa0MsSUFBZTtBQUU1RCxTQUFTRixlQUFlSyxJQUFZO0lBQ3pDLElBQUlILEtBQTBDLEVBQUUsRUFJL0M7SUFFRCxpREFBaUQ7SUFDakQsSUFBSUQsU0FBU08sTUFBTSxLQUFLLEdBQUcsT0FBT0g7SUFFbENBLE9BQU9BLEtBQUtJLEtBQUssQ0FBQ1IsU0FBU08sTUFBTTtJQUNqQyxJQUFJLENBQUNILEtBQUtLLFVBQVUsQ0FBQyxNQUFNTCxPQUFPLENBQUMsQ0FBQyxFQUFFQSxNQUFNO0lBQzVDLE9BQU9BO0FBQ1QiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL3NyYy9jbGllbnQvcmVtb3ZlLWJhc2UtcGF0aC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoYXNCYXNlUGF0aCB9IGZyb20gJy4vaGFzLWJhc2UtcGF0aCdcblxuY29uc3QgYmFzZVBhdGggPSAocHJvY2Vzcy5lbnYuX19ORVhUX1JPVVRFUl9CQVNFUEFUSCBhcyBzdHJpbmcpIHx8ICcnXG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVCYXNlUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX01BTlVBTF9DTElFTlRfQkFTRV9QQVRIKSB7XG4gICAgaWYgKCFoYXNCYXNlUGF0aChwYXRoKSkge1xuICAgICAgcmV0dXJuIHBhdGhcbiAgICB9XG4gIH1cblxuICAvLyBDYW4ndCB0cmltIHRoZSBiYXNlUGF0aCBpZiBpdCBoYXMgemVybyBsZW5ndGghXG4gIGlmIChiYXNlUGF0aC5sZW5ndGggPT09IDApIHJldHVybiBwYXRoXG5cbiAgcGF0aCA9IHBhdGguc2xpY2UoYmFzZVBhdGgubGVuZ3RoKVxuICBpZiAoIXBhdGguc3RhcnRzV2l0aCgnLycpKSBwYXRoID0gYC8ke3BhdGh9YFxuICByZXR1cm4gcGF0aFxufVxuIl0sIm5hbWVzIjpbInJlbW92ZUJhc2VQYXRoIiwiYmFzZVBhdGgiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1JPVVRFUl9CQVNFUEFUSCIsInBhdGgiLCJfX05FWFRfTUFOVUFMX0NMSUVOVF9CQVNFX1BBVEgiLCJoYXNCYXNlUGF0aCIsImxlbmd0aCIsInNsaWNlIiwic3RhcnRzV2l0aCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/remove-base-path.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/request-idle-callback.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/request-idle-callback.js ***!
|
||
\****************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n cancelIdleCallback: function() {\n return cancelIdleCallback;\n },\n requestIdleCallback: function() {\n return requestIdleCallback;\n }\n});\nconst requestIdleCallback = typeof self !== 'undefined' && self.requestIdleCallback && self.requestIdleCallback.bind(window) || function(cb) {\n let start = Date.now();\n return self.setTimeout(function() {\n cb({\n didTimeout: false,\n timeRemaining: function() {\n return Math.max(0, 50 - (Date.now() - start));\n }\n });\n }, 1);\n};\nconst cancelIdleCallback = typeof self !== 'undefined' && self.cancelIdleCallback && self.cancelIdleCallback.bind(window) || function(id) {\n return clearTimeout(id);\n};\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=request-idle-callback.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZXF1ZXN0LWlkbGUtY2FsbGJhY2suanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBZ0JhQSxrQkFBa0I7ZUFBbEJBOztJQWhCQUMsbUJBQW1CO2VBQW5CQTs7O0FBQU4sTUFBTUEsc0JBQ1YsT0FBT0MsU0FBUyxlQUNmQSxLQUFLRCxtQkFBbUIsSUFDeEJDLEtBQUtELG1CQUFtQixDQUFDRSxJQUFJLENBQUNDLFdBQ2hDLFNBQVVDLEVBQXVCO0lBQy9CLElBQUlDLFFBQVFDLEtBQUtDLEdBQUc7SUFDcEIsT0FBT04sS0FBS08sVUFBVSxDQUFDO1FBQ3JCSixHQUFHO1lBQ0RLLFlBQVk7WUFDWkMsZUFBZTtnQkFDYixPQUFPQyxLQUFLQyxHQUFHLENBQUMsR0FBRyxLQUFNTixDQUFBQSxLQUFLQyxHQUFHLEtBQUtGLEtBQUFBLENBQUk7WUFDNUM7UUFDRjtJQUNGLEdBQUc7QUFDTDtBQUVLLE1BQU1OLHFCQUNWLE9BQU9FLFNBQVMsZUFDZkEsS0FBS0Ysa0JBQWtCLElBQ3ZCRSxLQUFLRixrQkFBa0IsQ0FBQ0csSUFBSSxDQUFDQyxXQUMvQixTQUFVVSxFQUFVO0lBQ2xCLE9BQU9DLGFBQWFEO0FBQ3RCIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9zcmMvY2xpZW50L3JlcXVlc3QtaWRsZS1jYWxsYmFjay50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgcmVxdWVzdElkbGVDYWxsYmFjayA9XG4gICh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgJiZcbiAgICBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2suYmluZCh3aW5kb3cpKSB8fFxuICBmdW5jdGlvbiAoY2I6IElkbGVSZXF1ZXN0Q2FsbGJhY2spOiBudW1iZXIge1xuICAgIGxldCBzdGFydCA9IERhdGUubm93KClcbiAgICByZXR1cm4gc2VsZi5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGNiKHtcbiAgICAgICAgZGlkVGltZW91dDogZmFsc2UsXG4gICAgICAgIHRpbWVSZW1haW5pbmc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoMCwgNTAgLSAoRGF0ZS5ub3coKSAtIHN0YXJ0KSlcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgfSwgMSlcbiAgfVxuXG5leHBvcnQgY29uc3QgY2FuY2VsSWRsZUNhbGxiYWNrID1cbiAgKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIHNlbGYuY2FuY2VsSWRsZUNhbGxiYWNrICYmXG4gICAgc2VsZi5jYW5jZWxJZGxlQ2FsbGJhY2suYmluZCh3aW5kb3cpKSB8fFxuICBmdW5jdGlvbiAoaWQ6IG51bWJlcikge1xuICAgIHJldHVybiBjbGVhclRpbWVvdXQoaWQpXG4gIH1cbiJdLCJuYW1lcyI6WyJjYW5jZWxJZGxlQ2FsbGJhY2siLCJyZXF1ZXN0SWRsZUNhbGxiYWNrIiwic2VsZiIsImJpbmQiLCJ3aW5kb3ciLCJjYiIsInN0YXJ0IiwiRGF0ZSIsIm5vdyIsInNldFRpbWVvdXQiLCJkaWRUaW1lb3V0IiwidGltZVJlbWFpbmluZyIsIk1hdGgiLCJtYXgiLCJpZCIsImNsZWFyVGltZW91dCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/request-idle-callback.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/route-params.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/next/dist/client/route-params.js ***!
|
||
\*******************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n doesStaticSegmentAppearInURL: function() {\n return doesStaticSegmentAppearInURL;\n },\n getCacheKeyForDynamicParam: function() {\n return getCacheKeyForDynamicParam;\n },\n getParamValueFromCacheKey: function() {\n return getParamValueFromCacheKey;\n },\n getRenderedPathname: function() {\n return getRenderedPathname;\n },\n getRenderedSearch: function() {\n return getRenderedSearch;\n },\n parseDynamicParamFromURLPart: function() {\n return parseDynamicParamFromURLPart;\n },\n urlSearchParamsToParsedUrlQuery: function() {\n return urlSearchParamsToParsedUrlQuery;\n },\n urlToUrlWithoutFlightMarker: function() {\n return urlToUrlWithoutFlightMarker;\n }\n});\nconst _segment = __webpack_require__(/*! ../shared/lib/segment */ \"(ssr)/./node_modules/next/dist/shared/lib/segment.js\");\nconst _segmentvalueencoding = __webpack_require__(/*! ../shared/lib/segment-cache/segment-value-encoding */ \"(ssr)/./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js\");\nconst _approuterheaders = __webpack_require__(/*! ./components/app-router-headers */ \"(ssr)/./node_modules/next/dist/client/components/app-router-headers.js\");\nfunction getRenderedSearch(response) {\n // If the server performed a rewrite, the search params used to render the\n // page will be different from the params in the request URL. In this case,\n // the response will include a header that gives the rewritten search query.\n const rewrittenQuery = response.headers.get(_approuterheaders.NEXT_REWRITTEN_QUERY_HEADER);\n if (rewrittenQuery !== null) {\n return rewrittenQuery === '' ? '' : '?' + rewrittenQuery;\n }\n // If the header is not present, there was no rewrite, so we use the search\n // query of the response URL.\n return urlToUrlWithoutFlightMarker(new URL(response.url)).search;\n}\nfunction getRenderedPathname(response) {\n // If the server performed a rewrite, the pathname used to render the\n // page will be different from the pathname in the request URL. In this case,\n // the response will include a header that gives the rewritten pathname.\n const rewrittenPath = response.headers.get(_approuterheaders.NEXT_REWRITTEN_PATH_HEADER);\n return rewrittenPath ?? urlToUrlWithoutFlightMarker(new URL(response.url)).pathname;\n}\nfunction parseDynamicParamFromURLPart(paramType, pathnameParts, partIndex) {\n // This needs to match the behavior in get-dynamic-param.ts.\n switch(paramType){\n // Catchalls\n case 'c':\n {\n // Catchalls receive all the remaining URL parts. If there are no\n // remaining pathname parts, return an empty array.\n return partIndex < pathnameParts.length ? pathnameParts.slice(partIndex).map((s)=>encodeURIComponent(s)) : [];\n }\n // Catchall intercepted\n case 'ci(..)(..)':\n case 'ci(.)':\n case 'ci(..)':\n case 'ci(...)':\n {\n const prefix = paramType.length - 2;\n return partIndex < pathnameParts.length ? pathnameParts.slice(partIndex).map((s, i)=>{\n if (i === 0) {\n return encodeURIComponent(s.slice(prefix));\n }\n return encodeURIComponent(s);\n }) : [];\n }\n // Optional catchalls\n case 'oc':\n {\n // Optional catchalls receive all the remaining URL parts, unless this is\n // the end of the pathname, in which case they return null.\n return partIndex < pathnameParts.length ? pathnameParts.slice(partIndex).map((s)=>encodeURIComponent(s)) : null;\n }\n // Dynamic\n case 'd':\n {\n if (partIndex >= pathnameParts.length) {\n // The route tree expected there to be more parts in the URL than there\n // actually are. This could happen if the x-nextjs-rewritten-path header\n // is incorrectly set, or potentially due to bug in Next.js. TODO:\n // Should this be a hard error? During a prefetch, we can just abort.\n // During a client navigation, we could trigger a hard refresh. But if\n // it happens during initial render, we don't really have any\n // recovery options.\n return '';\n }\n return encodeURIComponent(pathnameParts[partIndex]);\n }\n // Dynamic intercepted\n case 'di(..)(..)':\n case 'di(.)':\n case 'di(..)':\n case 'di(...)':\n {\n const prefix = paramType.length - 2;\n if (partIndex >= pathnameParts.length) {\n // The route tree expected there to be more parts in the URL than there\n // actually are. This could happen if the x-nextjs-rewritten-path header\n // is incorrectly set, or potentially due to bug in Next.js. TODO:\n // Should this be a hard error? During a prefetch, we can just abort.\n // During a client navigation, we could trigger a hard refresh. But if\n // it happens during initial render, we don't really have any\n // recovery options.\n return '';\n }\n return encodeURIComponent(pathnameParts[partIndex].slice(prefix));\n }\n default:\n paramType;\n return '';\n }\n}\nfunction doesStaticSegmentAppearInURL(segment) {\n // This is not a parameterized segment; however, we need to determine\n // whether or not this segment appears in the URL. For example, this route\n // groups do not appear in the URL, so they should be skipped. Any other\n // special cases must be handled here.\n // TODO: Consider encoding this directly into the router tree instead of\n // inferring it on the client based on the segment type. Something like\n // a `doesAppearInURL` flag in FlightRouterState.\n if (segment === _segmentvalueencoding.ROOT_SEGMENT_REQUEST_KEY || // For some reason, the loader tree sometimes includes extra __PAGE__\n // \"layouts\" when part of a parallel route. But it's not a leaf node.\n // Otherwise, we wouldn't need this special case because pages are\n // always leaf nodes.\n // TODO: Investigate why the loader produces these fake page segments.\n segment.startsWith(_segment.PAGE_SEGMENT_KEY) || // Route groups.\n segment[0] === '(' && segment.endsWith(')') || segment === _segment.DEFAULT_SEGMENT_KEY || segment === '/_not-found') {\n return false;\n } else {\n // All other segment types appear in the URL\n return true;\n }\n}\nfunction getCacheKeyForDynamicParam(paramValue, renderedSearch) {\n // This needs to match the logic in get-dynamic-param.ts, until we're able to\n // unify the various implementations so that these are always computed on\n // the client.\n if (typeof paramValue === 'string') {\n // TODO: Refactor or remove this helper function to accept a string rather\n // than the whole segment type. Also we can probably just append the\n // search string instead of turning it into JSON.\n const pageSegmentWithSearchParams = (0, _segment.addSearchParamsIfPageSegment)(paramValue, Object.fromEntries(new URLSearchParams(renderedSearch)));\n return pageSegmentWithSearchParams;\n } else if (paramValue === null) {\n return '';\n } else {\n return paramValue.join('/');\n }\n}\nfunction urlToUrlWithoutFlightMarker(url) {\n const urlWithoutFlightParameters = new URL(url);\n urlWithoutFlightParameters.searchParams.delete(_approuterheaders.NEXT_RSC_UNION_QUERY);\n if (false) {}\n return urlWithoutFlightParameters;\n}\nfunction getParamValueFromCacheKey(paramCacheKey, paramType) {\n // Turn the cache key string sent by the server (as part of FlightRouterState)\n // into a value that can be passed to `useParams` and client components.\n const isCatchAll = paramType === 'c' || paramType === 'oc';\n if (isCatchAll) {\n // Catch-all param keys are a concatenation of the path segments.\n // See equivalent logic in `getSelectedParams`.\n // TODO: We should just pass the array directly, rather than concatenate\n // it to a string and then split it back to an array. It needs to be an\n // array in some places, like when passing a key React, but we can convert\n // it at runtime in those places.\n return paramCacheKey.split('/');\n }\n return paramCacheKey;\n}\nfunction urlSearchParamsToParsedUrlQuery(searchParams) {\n // Converts a URLSearchParams object to the same type used by the server when\n // creating search params props, i.e. the type returned by Node's\n // \"querystring\" module.\n const result = {};\n for (const [key, value] of searchParams.entries()){\n if (result[key] === undefined) {\n result[key] = value;\n } else if (Array.isArray(result[key])) {\n result[key].push(value);\n } else {\n result[key] = [\n result[key],\n value\n ];\n }\n }\n return result;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=route-params.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yb3V0ZS1wYXJhbXMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBaUlnQkEsNEJBQTRCO2VBQTVCQTs7SUE0QkFDLDBCQUEwQjtlQUExQkE7O0lBd0NBQyx5QkFBeUI7ZUFBekJBOztJQTlKQUMsbUJBQW1CO2VBQW5CQTs7SUFsQkFDLGlCQUFpQjtlQUFqQkE7O0lBOEJBQyw0QkFBNEI7ZUFBNUJBOztJQXFLQUMsK0JBQStCO2VBQS9CQTs7SUFwQ0FDLDJCQUEyQjtlQUEzQkE7OztxQ0EvS1Q7a0RBQ2tDOzhDQUtsQztBQVVBLFNBQVNILGtCQUNkSSxRQUF5QztJQUV6QywwRUFBMEU7SUFDMUUsMkVBQTJFO0lBQzNFLDRFQUE0RTtJQUM1RSxNQUFNQyxpQkFBaUJELFNBQVNFLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyxrQkFBQUEsMkJBQTJCO0lBQ3ZFLElBQUlILG1CQUFtQixNQUFNO1FBQzNCLE9BQ0VBLG1CQUFtQixLQUFLLEtBQUssTUFBTUE7SUFFdkM7SUFDQSwyRUFBMkU7SUFDM0UsNkJBQTZCO0lBQzdCLE9BQU9GLDRCQUE0QixJQUFJTSxJQUFJTCxTQUFTTSxHQUFHLEdBQ3BEQyxNQUFNO0FBQ1g7QUFFTyxTQUFTWixvQkFDZEssUUFBeUM7SUFFekMscUVBQXFFO0lBQ3JFLDZFQUE2RTtJQUM3RSx3RUFBd0U7SUFDeEUsTUFBTVEsZ0JBQWdCUixTQUFTRSxPQUFPLENBQUNDLEdBQUcsQ0FBQ00sa0JBQUFBLDBCQUEwQjtJQUNyRSxPQUFRRCxpQkFDTlQsNEJBQTRCLElBQUlNLElBQUlMLFNBQVNNLEdBQUcsR0FDN0NJLFFBQVE7QUFDZjtBQUVPLFNBQVNiLDZCQUNkYyxTQUFpQyxFQUNqQ0MsYUFBNEIsRUFDNUJDLFNBQWlCO0lBRWpCLDREQUE0RDtJQUM1RCxPQUFRRjtRQUNOLFlBQVk7UUFDWixLQUFLO1lBQUs7Z0JBQ1IsaUVBQWlFO2dCQUNqRSxtREFBbUQ7Z0JBQ25ELE9B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QUFJLENBQUM7SUFDekI7QUFDRjtBQUVPLFNBQVNuQyw0QkFBNEJPLEdBQVE7SUFDbEQsTUFBTTZCLDZCQUE2QixJQUFJOUIsSUFBSUM7SUFDM0M2QiwyQkFBMkJDLFlBQVksQ0FBQ0MsTUFBTSxDQUFDQyxrQkFBQUEsb0JBQW9CO0lBQ25FLElBQUlDLEtBQW9CLEVBQW1CLEVBVTFDO0lBQ0QsT0FBT0o7QUFDVDtBQUVPLFNBQVN6QywwQkFDZGlELGFBQXFCLEVBQ3JCaEMsU0FBaUM7SUFFakMsOEVBQThFO0lBQzlFLHdFQUF3RTtJQUN4RSxNQUFNaUMsYUFBYWpDLGNBQWMsT0FBT0EsY0FBYztJQUN0RCxJQUFJaUMsWUFBWTtRQUNkLGlFQUFpRTtRQUNqRSwrQ0FBK0M7UUFDL0Msd0VBQXdFO1FBQ3hFLHVFQUF1RTtRQUN2RSwwRUFBMEU7UUFDMUUsaUNBQWlDO1FBQ2pDLE9BQU9ELGNBQWNFLEtBQUssQ0FBQztJQUM3QjtJQUNBLE9BQU9GO0FBQ1Q7QUFFTyxTQUFTN0MsZ0NBQ2RzQyxZQUE2QjtJQUU3Qiw2RUFBNkU7SUFDN0UsaUVBQWlFO0lBQ2pFLHdCQUF3QjtJQUN4QixNQUFNVSxTQUF5QixDQUFDO0lBQ2hDLEtBQUssTUFBTSxDQUFDQyxLQUFLQyxNQUFNLElBQUlaLGFBQWFhLE9BQU8sR0FBSTtRQUNqRCxJQUFJSCxNQUFNLENBQUNDLElBQUksS0FBS0csV0FBVztZQUM3QkosTUFBTSxDQUFDQyxJQUFJLEdBQUdDO1FBQ2hCLE9BQU8sSUFBSUcsTUFBTUMsT0FBTyxDQUFDTixNQUFNLENBQUNDLElBQUksR0FBRztZQUNyQ0QsTUFBTSxDQUFDQyxJQUFJLENBQUNNLElBQUksQ0FBQ0w7UUFDbkIsT0FBTztZQUNMRixNQUFNLENBQUNDLElBQUksR0FBRztnQkFBQ0QsTUFBTSxDQUFDQyxJQUFJO2dCQUFFQzthQUFNO1FBQ3BDO0lBQ0Y7SUFDQSxPQUFPRjtBQUNUIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9zcmMvY2xpZW50L3JvdXRlLXBhcmFtcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IER5bmFtaWNQYXJhbVR5cGVzU2hvcnQgfSBmcm9tICcuLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItdHlwZXMnXG5pbXBvcnQge1xuICBhZGRTZWFyY2hQYXJhbXNJZlBhZ2VTZWdtZW50LFxuICBERUZBVUxUX1NFR01FTlRfS0VZLFxuICBQQUdFX1NFR01FTlRfS0VZLFxufSBmcm9tICcuLi9zaGFyZWQvbGliL3NlZ21lbnQnXG5pbXBvcnQgeyBST09UX1NFR01FTlRfUkVRVUVTVF9LRVkgfSBmcm9tICcuLi9zaGFyZWQvbGliL3NlZ21lbnQtY2FjaGUvc2VnbWVudC12YWx1ZS1lbmNvZGluZydcbmltcG9ydCB7XG4gIE5FWFRfUkVXUklUVEVOX1BBVEhfSEVBREVSLFxuICBORVhUX1JFV1JJVFRFTl9RVUVSWV9IRUFERVIsXG4gIE5FWFRfUlNDX1VOSU9OX1FVRVJZLFxufSBmcm9tICcuL2NvbXBvbmVudHMvYXBwLXJvdXRlci1oZWFkZXJzJ1xuaW1wb3J0IHR5cGUge1xuICBOb3JtYWxpemVkUGF0aG5hbWUsXG4gIE5vcm1hbGl6ZWRTZWFyY2gsXG59IGZyb20gJy4vY29tcG9uZW50cy9zZWdtZW50LWNhY2hlL2NhY2hlLWtleSdcbmltcG9ydCB0eXBlIHsgUlNDUmVzcG9uc2UgfSBmcm9tICcuL2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvZmV0Y2gtc2VydmVyLXJlc3BvbnNlJ1xuaW1wb3J0IHR5cGUgeyBQYXJzZWRVcmxRdWVyeSB9IGZyb20gJ3F1ZXJ5c3RyaW5nJ1xuXG5leHBvcnQgdHlwZSBSb3V0ZVBhcmFtVmFsdWUgPSBzdHJpbmcgfCBBcnJheTxzdHJpbmc+IHwgbnVsbFxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVuZGVyZWRTZWFyY2goXG4gIHJlc3BvbnNlOiBSU0NSZXNwb25zZTx1bmtub3duPiB8IFJlc3BvbnNlXG4pOiBOb3JtYWxpemVkU2VhcmNoIHtcbiAgLy8gSWYgdGhlIHNlcnZlciBwZXJmb3JtZWQgYSByZXdyaXRlLCB0aGUgc2VhcmNoIHBhcmFtcyB1c2VkIHRvIHJlbmRlciB0aGVcbiAgLy8gcGFnZSB3aWxsIGJlIGRpZmZlcmVudCBmcm9tIHRoZSBwYXJhbXMgaW4gdGhlIHJlcXVlc3QgVVJMLiBJbiB0aGlzIGNhc2UsXG4gIC8vIHRoZSByZXNwb25zZSB3aWxsIGluY2x1ZGUgYSBoZWFkZXIgdGhhdCBnaXZlcyB0aGUgcmV3cml0dGVuIHNlYXJjaCBxdWVyeS5cbiAgY29uc3QgcmV3cml0dGVuUXVlcnkgPSByZXNwb25zZS5oZWFkZXJzLmdldChORVhUX1JFV1JJVFRFTl9RVUVSWV9IRUFERVIpXG4gIGlmIChyZXdyaXR0ZW5RdWVyeSAhPT0gbnVsbCkge1xuICAgIHJldHVybiAoXG4gICAgICByZXdyaXR0ZW5RdWVyeSA9PT0gJycgPyAnJyA6ICc/JyArIHJld3JpdHRlblF1ZXJ5XG4gICAgKSBhcyBOb3JtYWxpemVkU2VhcmNoXG4gIH1cbiAgLy8gSWYgdGhlIGhlYWRlciBpcyBub3QgcHJlc2VudCwgdGhlcmUgd2FzIG5vIHJld3JpdGUsIHNvIHdlIHVzZSB0aGUgc2VhcmNoXG4gIC8vIHF1ZXJ5IG9mIHRoZSByZXNwb25zZSBVUkwuXG4gIHJldHVybiB1cmxUb1VybFdpdGhvdXRGbGlnaHRNYXJrZXIobmV3IFVSTChyZXNwb25zZS51cmwpKVxuICAgIC5zZWFyY2ggYXMgTm9ybWFsaXplZFNlYXJjaFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVuZGVyZWRQYXRobmFtZShcbiAgcmVzcG9uc2U6IFJTQ1Jlc3BvbnNlPHVua25vd24+IHwgUmVzcG9uc2Vcbik6IE5vcm1hbGl6ZWRQYXRobmFtZSB7XG4gIC8vIElmIHRoZSBzZXJ2ZXIgcGVyZm9ybWVkIGEgcmV3cml0ZSwgdGhlIHBhdGhuYW1lIHVzZWQgdG8gcmVuZGVyIHRoZVxuICAvLyBwYWdlIHdpbGwgYmUgZGlmZmVyZW50IGZyb20gdGhlIHBhdGhuYW1lIGluIHRoZSByZXF1ZXN0IFVSTC4gSW4gdGhpcyBjYXNlLFxuICAvLyB0aGUgcmVzcG9uc2Ugd2lsbCBpbmNsdWRlIGEgaGVhZGVyIHRoYXQgZ2l2ZXMgdGhlIHJld3JpdHRlbiBwYXRobmFtZS5cbiAgY29uc3QgcmV3cml0dGVuUGF0aCA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KE5FWFRfUkVXUklUVEVOX1BBVEhfSEVBREVSKVxuICByZXR1cm4gKHJld3JpdHRlblBhdGggPz9cbiAgICB1cmxUb1VybFdpdGhvdXRGbGlnaHRNYXJrZXIobmV3IFVSTChyZXNwb25zZS51cmwpKVxuICAgICAgLnBhdGhuYW1lKSBhcyBOb3JtYWxpemVkUGF0aG5hbWVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRHluYW1pY1BhcmFtRnJvbVVSTFBhcnQoXG4gIHBhcmFtVHlwZTogRHluYW1pY1BhcmFtVHlwZXNTaG9ydCxcbiAgcGF0aG5hbWVQYXJ0czogQXJyYXk8c3RyaW5nPixcbiAgcGFydEluZGV4OiBudW1iZXJcbik6IFJvdXRlUGFyYW1WYWx1ZSB7XG4gIC8vIFRoaXMgbmVlZHMgdG8gbWF0Y2ggdGhlIGJlaGF2aW9yIGluIGdldC1keW5hbWljLXBhcmFtLnRzLlxuICBzd2l0Y2ggKHBhcmFtVHlwZSkge1xuICAgIC8vIENhdGNoYWxsc1xuICAgIGNhc2UgJ2MnOiB7XG4gICAgICAvLyBDYXRjaGFsbHMgcmVjZWl2ZSBhbGwgdGhlIHJlbWFpbmluZyBVUkwgcGFydHMuIElmIHRoZXJlIGFyZSBub1xuICAgICAgLy8gcmVtYWluaW5nIHBhdGhuYW1lIHBhcnRzLCByZXR1cm4gYW4gZW1wdHkgYXJyYXkuXG4gICAgICByZXR1cm4gcGFydEluZGV4IDwgcGF0aG5hbWVQYXJ0cy5sZW5ndGhcbiAgICAgICAgPyBwYXRobmFtZVBhcnRzLnNsaWNlKHBhcnRJbmRleCkubWFwKChzKSA9PiBlbmNvZGVVUklDb21wb25lbnQocykpXG4gICAgICAgIDogW11cbiAgICB9XG4gICAgLy8gQ2F0Y2hhbGwgaW50ZXJjZXB0ZWRcbiAgICBjYXNlICdjaSguLikoLi4pJzpcbiAgICBjYXNlICdjaSguKSc6XG4gICAgY2FzZSAnY2koLi4pJzpcbiAgICBjYXNlICdjaSguLi4pJzoge1xuICAgICAgY29uc3QgcHJlZml4ID0gcGFyYW1UeXBlLmxlbmd0aCAtIDJcbiAgICAgIHJldHVybiBwYXJ0SW5kZXggPCBwYXRobmFtZVBhcnRzLmxlbmd0aFxuICAgICAgICA/IHBhdGhuYW1lUGFydHMuc2xpY2UocGFydEluZGV4KS5tYXAoKHMsIGkpID0+IHtcbiAgICAgICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQocy5zbGljZShwcmVmaXgpKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHMpXG4gICAgICAgICAgfSlcbiAgICAgICAgOiBbXVxuICAgIH1cbiAgICAvLyBPcHRpb25hbCBjYXRjaGFsbHNcbiAgICBjYXNlICdvYyc6IHtcbiAgICAgIC8vIE9wdGlvbmFsIGNhdGNoYWxscyByZWNlaXZlIGFsbCB0aGUgcmVtYWluaW5nIFVSTCBwYXJ0cywgdW5sZXNzIHRoaXMgaXNcbiAgICAgIC8vIHRoZSBlbmQgb2YgdGhlIHBhdGhuYW1lLCBpbiB3aGljaCBjYXNlIHRoZXkgcmV0dXJuIG51bGwuXG4gICAgICByZXR1cm4gcGFydEluZGV4IDwgcGF0aG5hbWVQYXJ0cy5sZW5ndGhcbiAgICAgICAgPyBwYXRobmFtZVBhcnRzLnNsaWNlKHBhcnRJbmRleCkubWFwKChzKSA9PiBlbmNvZGVVUklDb21wb25lbnQocykpXG4gICAgICAgIDogbnVsbFxuICAgIH1cbiAgICAvLyBEeW5hbWljXG4gICAgY2FzZSAnZCc6IHtcbiAgICAgIGlmIChwYXJ0SW5kZXggPj0gcGF0aG5hbWVQYXJ0cy5sZW5ndGgpIHtcbiAgICAgICAgLy8gVGhlIHJvdXRlIHRyZWUgZXhwZWN0ZWQgdGhlcmUgdG8gYmUgbW9yZSBwYXJ0cyBpbiB0aGUgVVJMIHRoYW4gdGhlcmVcbiAgICAgICAgLy8gYWN0dWFsbHkgYXJlLiBUaGlzIGNvdWxkIGhhcHBlbiBpZiB0aGUgeC1uZXh0anMtcmV3cml0dGVuLXBhdGggaGVhZGVyXG4gICAgICAgIC8vIGlzIGluY29ycmVjdGx5IHNldCwgb3IgcG90ZW50aWFsbHkgZHVlIHRvIGJ1ZyBpbiBOZXh0LmpzLiBUT0RPOlxuICAgICAgICAvLyBTaG91bGQgdGhpcyBiZSBhIGhhcmQgZXJyb3I/IER1cmluZyBhIHByZWZldGNoLCB3ZSBjYW4ganVzdCBhYm9ydC5cbiAgICAgICAgLy8gRHVyaW5nIGEgY2xpZW50IG5hdmlnYXRpb24sIHdlIGNvdWxkIHRyaWdnZXIgYSBoYXJkIHJlZnJlc2guIEJ1dCBpZlxuICAgICAgICAvLyBpdCBoYXBwZW5zIGR1cmluZyBpbml0aWFsIHJlbmRlciwgd2UgZG9uJ3QgcmVhbGx5IGhhdmUgYW55XG4gICAgICAgIC8vIHJlY292ZXJ5IG9wdGlvbnMuXG4gICAgICAgIHJldHVybiAnJ1xuICAgICAgfVxuICAgICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChwYXRobmFtZVBhcnRzW3BhcnRJbmRleF0pXG4gICAgfVxuICAgIC8vIER5bmFtaWMgaW50ZXJjZXB0ZWRcbiAgICBjYXNlICdkaSguLikoLi4pJzpcbiAgICBjYXNlICdkaSguKSc6XG4gICAgY2FzZSAnZGkoLi4pJzpcbiAgICBjYXNlICdkaSguLi4pJzoge1xuICAgICAgY29uc3QgcHJlZml4ID0gcGFyYW1UeXBlLmxlbmd0aCAtIDJcbiAgICAgIGlmIChwYXJ0SW5kZXggPj0gcGF0aG5hbWVQYXJ0cy5sZW5ndGgpIHtcbiAgICAgICAgLy8gVGhlIHJvdXRlIHRyZWUgZXhwZWN0ZWQgdGhlcmUgdG8gYmUgbW9yZSBwYXJ0cyBpbiB0aGUgVVJMIHRoYW4gdGhlcmVcbiAgICAgICAgLy8gYWN0dWFsbHkgYXJlLiBUaGlzIGNvdWxkIGhhcHBlbiBpZiB0aGUgeC1uZXh0anMtcmV3cml0dGVuLXBhdGggaGVhZGVyXG4gICAgICAgIC8vIGlzIGluY29ycmVjdGx5IHNldCwgb3IgcG90ZW50aWFsbHkgZHVlIHRvIGJ1ZyBpbiBOZXh0LmpzLiBUT0RPOlxuICAgICAgICAvLyBTaG91bGQgdGhpcyBiZSBhIGhhcmQgZXJyb3I/IER1cmluZyBhIHByZWZldGNoLCB3ZSBjYW4ganVzdCBhYm9ydC5cbiAgICAgICAgLy8gRHVyaW5nIGEgY2xpZW50IG5hdmlnYXRpb24sIHdlIGNvdWxkIHRyaWdnZXIgYSBoYXJkIHJlZnJlc2guIEJ1dCBpZlxuICAgICAgICAvLyBpdCBoYXBwZW5zIGR1cmluZyBpbml0aWFsIHJlbmRlciwgd2UgZG9uJ3QgcmVhbGx5IGhhdmUgYW55XG4gICAgICAgIC8vIHJlY292ZXJ5IG9wdGlvbnMuXG4gICAgICAgIHJldHVybiAnJ1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHBhdGhuYW1lUGFydHNbcGFydEluZGV4XS5zbGljZShwcmVmaXgpKVxuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcGFyYW1UeXBlIHNhdGlzZmllcyBuZXZlclxuICAgICAgcmV0dXJuICcnXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRvZXNTdGF0aWNTZWdtZW50QXBwZWFySW5VUkwoc2VnbWVudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8vIFRoaXMgaXMgbm90IGEgcGFyYW1ldGVyaXplZCBzZWdtZW50OyBob3dldmVyLCB3ZSBuZWVkIHRvIGRldGVybWluZVxuICAvLyB3aGV0aGVyIG9yIG5vdCB0aGlzIHNlZ21lbnQgYXBwZWFycyBpbiB0aGUgVVJMLiBGb3IgZXhhbXBsZSwgdGhpcyByb3V0ZVxuICAvLyBncm91cHMgZG8gbm90IGFwcGVhciBpbiB0aGUgVVJMLCBzbyB0aGV5IHNob3VsZCBiZSBza2lwcGVkLiBBbnkgb3RoZXJcbiAgLy8gc3BlY2lhbCBjYXNlcyBtdXN0IGJlIGhhbmRsZWQgaGVyZS5cbiAgLy8gVE9ETzogQ29uc2lkZXIgZW5jb2RpbmcgdGhpcyBkaXJlY3RseSBpbnRvIHRoZSByb3V0ZXIgdHJlZSBpbnN0ZWFkIG9mXG4gIC8vIGluZmVycmluZyBpdCBvbiB0aGUgY2xpZW50IGJhc2VkIG9uIHRoZSBzZWdtZW50IHR5cGUuIFNvbWV0aGluZyBsaWtlXG4gIC8vIGEgYGRvZXNBcHBlYXJJblVSTGAgZmxhZyBpbiBGbGlnaHRSb3V0ZXJTdGF0ZS5cbiAgaWYgKFxuICAgIHNlZ21lbnQgPT09IFJPT1RfU0VHTUVOVF9SRVFVRVNUX0tFWSB8fFxuICAgIC8vIEZvciBzb21lIHJlYXNvbiwgdGhlIGxvYWRlciB0cmVlIHNvbWV0aW1lcyBpbmNsdWRlcyBleHRyYSBfX1BBR0VfX1xuICAgIC8vIFwibGF5b3V0c1wiIHdoZW4gcGFydCBvZiBhIHBhcmFsbGVsIHJvdXRlLiBCdXQgaXQncyBub3QgYSBsZWFmIG5vZGUuXG4gICAgLy8gT3RoZXJ3aXNlLCB3ZSB3b3VsZG4ndCBuZWVkIHRoaXMgc3BlY2lhbCBjYXNlIGJlY2F1c2UgcGFnZXMgYXJlXG4gICAgLy8gYWx3YXlzIGxlYWYgbm9kZXMuXG4gICAgLy8gVE9ETzogSW52ZXN0aWdhdGUgd2h5IHRoZSBsb2FkZXIgcHJvZHVjZXMgdGhlc2UgZmFrZSBwYWdlIHNlZ21lbnRzLlxuICAgIHNlZ21lbnQuc3RhcnRzV2l0aChQQUdFX1NFR01FTlRfS0VZKSB8fFxuICAgIC8vIFJvdXRlIGdyb3Vwcy5cbiAgICAoc2VnbWVudFswXSA9PT0gJygnICYmIHNlZ21lbnQuZW5kc1dpdGgoJyknKSkgfHxcbiAgICBzZWdtZW50ID09PSBERUZBVUxUX1NFR01FTlRfS0VZIHx8XG4gICAgc2VnbWVudCA9PT0gJy9fbm90LWZvdW5kJ1xuICApIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfSBlbHNlIHtcbiAgICAvLyBBbGwgb3RoZXIgc2VnbWVudCB0eXBlcyBhcHBlYXIgaW4gdGhlIFVSTFxuICAgIHJldHVybiB0cnVlXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENhY2hlS2V5Rm9yRHluYW1pY1BhcmFtKFxuICBwYXJhbVZhbHVlOiBSb3V0ZVBhcmFtVmFsdWUsXG4gIHJlbmRlcmVkU2VhcmNoOiBOb3JtYWxpemVkU2VhcmNoXG4pOiBzdHJpbmcge1xuICAvLyBUaGlzIG5lZWRzIHRvIG1hdGNoIHRoZSBsb2dpYyBpbiBnZXQtZHluYW1pYy1wYXJhbS50cywgdW50aWwgd2UncmUgYWJsZSB0b1xuICAvLyB1bmlmeSB0aGUgdmFyaW91cyBpbXBsZW1lbnRhdGlvbnMgc28gdGhhdCB0aGVzZSBhcmUgYWx3YXlzIGNvbXB1dGVkIG9uXG4gIC8vIHRoZSBjbGllbnQuXG4gIGlmICh0eXBlb2YgcGFyYW1WYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBUT0RPOiBSZWZhY3RvciBvciByZW1vdmUgdGhpcyBoZWxwZXIgZnVuY3Rpb24gdG8gYWNjZXB0IGEgc3RyaW5nIHJhdGhlclxuICAgIC8vIHRoYW4gdGhlIHdob2xlIHNlZ21lbnQgdHlwZS4gQWxzbyB3ZSBjYW4gcHJvYmFibHkganVzdCBhcHBlbmQgdGhlXG4gICAgLy8gc2VhcmNoIHN0cmluZyBpbnN0ZWFkIG9mIHR1cm5pbmcgaXQgaW50byBKU09OLlxuICAgIGNvbnN0IHBhZ2VTZWdtZW50V2l0aFNlYXJjaFBhcmFtcyA9IGFkZFNlYXJjaFBhcmFtc0lmUGFnZVNlZ21lbnQoXG4gICAgICBwYXJhbVZhbHVlLFxuICAgICAgT2JqZWN0LmZyb21FbnRyaWVzKG5ldyBVUkxTZWFyY2hQYXJhbXMocmVuZGVyZWRTZWFyY2gpKVxuICAgICkgYXMgc3RyaW5nXG4gICAgcmV0dXJuIHBhZ2VTZWdtZW50V2l0aFNlYXJjaFBhcmFtc1xuICB9IGVsc2UgaWYgKHBhcmFtVmFsdWUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gJydcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcGFyYW1WYWx1ZS5qb2luKCcvJylcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXJsVG9VcmxXaXRob3V0RmxpZ2h0TWFya2VyKHVybDogVVJMKTogVVJMIHtcbiAgY29uc3QgdXJsV2l0aG91dEZsaWdodFBhcmFtZXRlcnMgPSBuZXcgVVJMKHVybClcbiAgdXJsV2l0aG91dEZsaWdodFBhcmFtZXRlcnMuc2VhcmNoUGFyYW1zLmRlbGV0ZShORVhUX1JTQ19VTklPTl9RVUVSWSlcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAoXG4gICAgICBwcm9jZXNzLmVudi5fX05FWFRfQ09ORklHX09VVFBVVCA9PT0gJ2V4cG9ydCcgJiZcbiAgICAgIHVybFdpdGhvdXRGbGlnaHRQYXJhbWV0ZXJzLnBhdGhuYW1lLmVuZHNXaXRoKCcudHh0JylcbiAgICApIHtcbiAgICAgIGNvbnN0IHsgcGF0aG5hbWUgfSA9IHVybFdpdGhvdXRGbGlnaHRQYXJhbWV0ZXJzXG4gICAgICBjb25zdCBsZW5ndGggPSBwYXRobmFtZS5lbmRzV2l0aCgnL2luZGV4LnR4dCcpID8gMTAgOiA0XG4gICAgICAvLyBTbGljZSBvZmYgYC9pbmRleC50eHRgIG9yIGAudHh0YCBmcm9tIHRoZSBlbmQgb2YgdGhlIHBhdGhuYW1lXG4gICAgICB1cmxXaXRob3V0RmxpZ2h0UGFyYW1ldGVycy5wYXRobmFtZSA9IHBhdGhuYW1lLnNsaWNlKDAsIC1sZW5ndGgpXG4gICAgfVxuICB9XG4gIHJldHVybiB1cmxXaXRob3V0RmxpZ2h0UGFyYW1ldGVyc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFyYW1WYWx1ZUZyb21DYWNoZUtleShcbiAgcGFyYW1DYWNoZUtleTogc3RyaW5nLFxuICBwYXJhbVR5cGU6IER5bmFtaWNQYXJhbVR5cGVzU2hvcnRcbikge1xuICAvLyBUdXJuIHRoZSBjYWNoZSBrZXkgc3RyaW5nIHNlbnQgYnkgdGhlIHNlcnZlciAoYXMgcGFydCBvZiBGbGlnaHRSb3V0ZXJTdGF0ZSlcbiAgLy8gaW50byBhIHZhbHVlIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBgdXNlUGFyYW1zYCBhbmQgY2xpZW50IGNvbXBvbmVudHMuXG4gIGNvbnN0IGlzQ2F0Y2hBbGwgPSBwYXJhbVR5cGUgPT09ICdjJyB8fCBwYXJhbVR5cGUgPT09ICdvYydcbiAgaWYgKGlzQ2F0Y2hBbGwpIHtcbiAgICAvLyBDYXRjaC1hbGwgcGFyYW0ga2V5cyBhcmUgYSBjb25jYXRlbmF0aW9uIG9mIHRoZSBwYXRoIHNlZ21lbnRzLlxuICAgIC8vIFNlZSBlcXVpdmFsZW50IGxvZ2ljIGluIGBnZXRTZWxlY3RlZFBhcmFtc2AuXG4gICAgLy8gVE9ETzogV2Ugc2hvdWxkIGp1c3QgcGFzcyB0aGUgYXJyYXkgZGlyZWN0bHksIHJhdGhlciB0aGFuIGNvbmNhdGVuYXRlXG4gICAgLy8gaXQgdG8gYSBzdHJpbmcgYW5kIHRoZW4gc3BsaXQgaXQgYmFjayB0byBhbiBhcnJheS4gSXQgbmVlZHMgdG8gYmUgYW5cbiAgICAvLyBhcnJheSBpbiBzb21lIHBsYWNlcywgbGlrZSB3aGVuIHBhc3NpbmcgYSBrZXkgUmVhY3QsIGJ1dCB3ZSBjYW4gY29udmVydFxuICAgIC8vIGl0IGF0IHJ1bnRpbWUgaW4gdGhvc2UgcGxhY2VzLlxuICAgIHJldHVybiBwYXJhbUNhY2hlS2V5LnNwbGl0KCcvJylcbiAgfVxuICByZXR1cm4gcGFyYW1DYWNoZUtleVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXJsU2VhcmNoUGFyYW1zVG9QYXJzZWRVcmxRdWVyeShcbiAgc2VhcmNoUGFyYW1zOiBVUkxTZWFyY2hQYXJhbXNcbik6IFBhcnNlZFVybFF1ZXJ5IHtcbiAgLy8gQ29udmVydHMgYSBVUkxTZWFyY2hQYXJhbXMgb2JqZWN0IHRvIHRoZSBzYW1lIHR5cGUgdXNlZCBieSB0aGUgc2VydmVyIHdoZW5cbiAgLy8gY3JlYXRpbmcgc2VhcmNoIHBhcmFtcyBwcm9wcywgaS5lLiB0aGUgdHlwZSByZXR1cm5lZCBieSBOb2RlJ3NcbiAgLy8gXCJxdWVyeXN0cmluZ1wiIG1vZHVsZS5cbiAgY29uc3QgcmVzdWx0OiBQYXJzZWRVcmxRdWVyeSA9IHt9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIHNlYXJjaFBhcmFtcy5lbnRyaWVzKCkpIHtcbiAgICBpZiAocmVzdWx0W2tleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZVxuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHRba2V5XSkpIHtcbiAgICAgIHJlc3VsdFtrZXldLnB1c2godmFsdWUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdFtrZXldID0gW3Jlc3VsdFtrZXldLCB2YWx1ZV1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdFxufVxuIl0sIm5hbWVzIjpbImRvZXNTdGF0aWNTZWdtZW50QXBwZWFySW5VUkwiLCJnZXRDYWNoZUtleUZvckR5bmFtaWNQYXJhbSIsImdldFBhcmFtVmFsdWVGcm9tQ2FjaGVLZXkiLCJnZXRSZW5kZXJlZFBhdGhuYW1lIiwiZ2V0UmVuZGVyZWRTZWFyY2giLCJwYXJzZUR5bmFtaWNQYXJhbUZyb21VUkxQYXJ0IiwidXJsU2VhcmNoUGFyYW1zVG9QYXJzZWRVcmxRdWVyeSIsInVybFRvVXJsV2l0aG91dEZsaWdodE1hcmtlciIsInJlc3BvbnNlIiwicmV3cml0dGVuUXVlcnkiLCJoZWFkZXJzIiwiZ2V0IiwiTkVYVF9SRVdSSVRURU5fUVVFUllfSEVBREVSIiwiVVJMIiwidXJsIiwic2VhcmNoIiwicmV3cml0dGVuUGF0aCIsIk5FWFRfUkVXUklUVEVOX1BBVEhfSEVBREVSIiwicGF0aG5hbWUiLCJwYXJhbVR5cGUiLCJwYXRobmFtZVBhcnRzIiwicGFydEluZGV4IiwibGVuZ3RoIiwic2xpY2UiLCJtYXAiLCJzIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwicHJlZml4IiwiaSIsInNlZ21lbnQiLCJST09UX1NFR01FTlRfUkVRVUVTVF9LRVkiLCJzdGFydHNXaXRoIiwiUEFHRV9TRUdNRU5UX0tFWSIsImVuZHNXaXRoIiwiREVGQVVMVF9TRUdNRU5UX0tFWSIsInBhcmFtVmFsdWUiLCJyZW5kZXJlZFNlYXJjaCIsInBhZ2VTZWdtZW50V2l0aFNlYXJjaFBhcmFtcyIsImFkZFNlYXJjaFBhcmFtc0lmUGFnZVNlZ21lbnQiLCJPYmplY3QiLCJmcm9tRW50cmllcyIsIlVSTFNlYXJjaFBhcmFtcyIsImpvaW4iLCJ1cmxXaXRob3V0RmxpZ2h0UGFyYW1ldGVycyIsInNlYXJjaFBhcmFtcyIsImRlbGV0ZSIsIk5FWFRfUlNDX1VOSU9OX1FVRVJZIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiX19ORVhUX0NPTkZJR19PVVRQVVQiLCJwYXJhbUNhY2hlS2V5IiwiaXNDYXRjaEFsbCIsInNwbGl0IiwicmVzdWx0Iiwia2V5IiwidmFsdWUiLCJlbnRyaWVzIiwidW5kZWZpbmVkIiwiQXJyYXkiLCJpc0FycmF5IiwicHVzaCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/route-params.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/script.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/next/dist/client/script.js ***!
|
||
\*************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n default: function() {\n return _default;\n },\n handleClientScriptLoad: function() {\n return handleClientScriptLoad;\n },\n initScriptLoader: function() {\n return initScriptLoader;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _reactdom = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react-dom */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-dom.js\"));\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\"));\nconst _headmanagercontextsharedruntime = __webpack_require__(/*! ../shared/lib/head-manager-context.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/head-manager-context.js\");\nconst _setattributesfromprops = __webpack_require__(/*! ./set-attributes-from-props */ \"(ssr)/./node_modules/next/dist/client/set-attributes-from-props.js\");\nconst _requestidlecallback = __webpack_require__(/*! ./request-idle-callback */ \"(ssr)/./node_modules/next/dist/client/request-idle-callback.js\");\nconst ScriptCache = new Map();\nconst LoadCache = new Set();\nconst insertStylesheets = (stylesheets)=>{\n // Case 1: Styles for afterInteractive/lazyOnload with appDir injected via handleClientScriptLoad\n //\n // Using ReactDOM.preinit to feature detect appDir and inject styles\n // Stylesheets might have already been loaded if initialized with Script component\n // Re-inject styles here to handle scripts loaded via handleClientScriptLoad\n // ReactDOM.preinit handles dedup and ensures the styles are loaded only once\n if (_reactdom.default.preinit) {\n stylesheets.forEach((stylesheet)=>{\n _reactdom.default.preinit(stylesheet, {\n as: 'style'\n });\n });\n return;\n }\n // Case 2: Styles for afterInteractive/lazyOnload with pages injected via handleClientScriptLoad\n //\n // We use this function to load styles when appdir is not detected\n // TODO: Use React float APIs to load styles once available for pages dir\n if (false) {}\n};\nconst loadScript = (props)=>{\n const { src, id, onLoad = ()=>{}, onReady = null, dangerouslySetInnerHTML, children = '', strategy = 'afterInteractive', onError, stylesheets } = props;\n const cacheKey = id || src;\n // Script has already loaded\n if (cacheKey && LoadCache.has(cacheKey)) {\n return;\n }\n // Contents of this script are already loading/loaded\n if (ScriptCache.has(src)) {\n LoadCache.add(cacheKey);\n // It is possible that multiple `next/script` components all have same \"src\", but has different \"onLoad\"\n // This is to make sure the same remote script will only load once, but \"onLoad\" are executed in order\n ScriptCache.get(src).then(onLoad, onError);\n return;\n }\n /** Execute after the script first loaded */ const afterLoad = ()=>{\n // Run onReady for the first time after load event\n if (onReady) {\n onReady();\n }\n // add cacheKey to LoadCache when load successfully\n LoadCache.add(cacheKey);\n };\n const el = document.createElement('script');\n const loadPromise = new Promise((resolve, reject)=>{\n el.addEventListener('load', function(e) {\n resolve();\n if (onLoad) {\n onLoad.call(this, e);\n }\n afterLoad();\n });\n el.addEventListener('error', function(e) {\n reject(e);\n });\n }).catch(function(e) {\n if (onError) {\n onError(e);\n }\n });\n if (dangerouslySetInnerHTML) {\n // Casting since lib.dom.d.ts doesn't have TrustedHTML yet.\n el.innerHTML = dangerouslySetInnerHTML.__html || '';\n afterLoad();\n } else if (children) {\n el.textContent = typeof children === 'string' ? children : Array.isArray(children) ? children.join('') : '';\n afterLoad();\n } else if (src) {\n el.src = src;\n // do not add cacheKey into LoadCache for remote script here\n // cacheKey will be added to LoadCache when it is actually loaded (see loadPromise above)\n ScriptCache.set(src, loadPromise);\n }\n (0, _setattributesfromprops.setAttributesFromProps)(el, props);\n if (strategy === 'worker') {\n el.setAttribute('type', 'text/partytown');\n }\n el.setAttribute('data-nscript', strategy);\n // Load styles associated with this script\n if (stylesheets) {\n insertStylesheets(stylesheets);\n }\n document.body.appendChild(el);\n};\nfunction handleClientScriptLoad(props) {\n const { strategy = 'afterInteractive' } = props;\n if (strategy === 'lazyOnload') {\n window.addEventListener('load', ()=>{\n (0, _requestidlecallback.requestIdleCallback)(()=>loadScript(props));\n });\n } else {\n loadScript(props);\n }\n}\nfunction loadLazyScript(props) {\n if (document.readyState === 'complete') {\n (0, _requestidlecallback.requestIdleCallback)(()=>loadScript(props));\n } else {\n window.addEventListener('load', ()=>{\n (0, _requestidlecallback.requestIdleCallback)(()=>loadScript(props));\n });\n }\n}\nfunction addBeforeInteractiveToCache() {\n const scripts = [\n ...document.querySelectorAll('[data-nscript=\"beforeInteractive\"]'),\n ...document.querySelectorAll('[data-nscript=\"beforePageRender\"]')\n ];\n scripts.forEach((script)=>{\n const cacheKey = script.id || script.getAttribute('src');\n LoadCache.add(cacheKey);\n });\n}\nfunction initScriptLoader(scriptLoaderItems) {\n scriptLoaderItems.forEach(handleClientScriptLoad);\n addBeforeInteractiveToCache();\n}\n/**\n * Load a third-party scripts in an optimized way.\n *\n * Read more: [Next.js Docs: `next/script`](https://nextjs.org/docs/app/api-reference/components/script)\n */ function Script(props) {\n const { id, src = '', onLoad = ()=>{}, onReady = null, strategy = 'afterInteractive', onError, stylesheets, ...restProps } = props;\n // Context is available only during SSR\n let { updateScripts, scripts, getIsSsr, appDir, nonce } = (0, _react.useContext)(_headmanagercontextsharedruntime.HeadManagerContext);\n // if a nonce is explicitly passed to the script tag, favor that over the automatic handling\n nonce = restProps.nonce || nonce;\n /**\n * - First mount:\n * 1. The useEffect for onReady executes\n * 2. hasOnReadyEffectCalled.current is false, but the script hasn't loaded yet (not in LoadCache)\n * onReady is skipped, set hasOnReadyEffectCalled.current to true\n * 3. The useEffect for loadScript executes\n * 4. hasLoadScriptEffectCalled.current is false, loadScript executes\n * Once the script is loaded, the onLoad and onReady will be called by then\n * [If strict mode is enabled / is wrapped in <OffScreen /> component]\n * 5. The useEffect for onReady executes again\n * 6. hasOnReadyEffectCalled.current is true, so entire effect is skipped\n * 7. The useEffect for loadScript executes again\n * 8. hasLoadScriptEffectCalled.current is true, so entire effect is skipped\n *\n * - Second mount:\n * 1. The useEffect for onReady executes\n * 2. hasOnReadyEffectCalled.current is false, but the script has already loaded (found in LoadCache)\n * onReady is called, set hasOnReadyEffectCalled.current to true\n * 3. The useEffect for loadScript executes\n * 4. The script is already loaded, loadScript bails out\n * [If strict mode is enabled / is wrapped in <OffScreen /> component]\n * 5. The useEffect for onReady executes again\n * 6. hasOnReadyEffectCalled.current is true, so entire effect is skipped\n * 7. The useEffect for loadScript executes again\n * 8. hasLoadScriptEffectCalled.current is true, so entire effect is skipped\n */ const hasOnReadyEffectCalled = (0, _react.useRef)(false);\n (0, _react.useEffect)(()=>{\n const cacheKey = id || src;\n if (!hasOnReadyEffectCalled.current) {\n // Run onReady if script has loaded before but component is re-mounted\n if (onReady && cacheKey && LoadCache.has(cacheKey)) {\n onReady();\n }\n hasOnReadyEffectCalled.current = true;\n }\n }, [\n onReady,\n id,\n src\n ]);\n const hasLoadScriptEffectCalled = (0, _react.useRef)(false);\n (0, _react.useEffect)(()=>{\n if (!hasLoadScriptEffectCalled.current) {\n if (strategy === 'afterInteractive') {\n loadScript(props);\n } else if (strategy === 'lazyOnload') {\n loadLazyScript(props);\n }\n hasLoadScriptEffectCalled.current = true;\n }\n }, [\n props,\n strategy\n ]);\n if (strategy === 'beforeInteractive' || strategy === 'worker') {\n if (updateScripts) {\n scripts[strategy] = (scripts[strategy] || []).concat([\n {\n id,\n src,\n onLoad,\n onReady,\n onError,\n ...restProps,\n nonce\n }\n ]);\n updateScripts(scripts);\n } else if (getIsSsr && getIsSsr()) {\n // Script has already loaded during SSR\n LoadCache.add(id || src);\n } else if (getIsSsr && !getIsSsr()) {\n loadScript({\n ...props,\n nonce\n });\n }\n }\n // For the app directory, we need React Float to preload these scripts.\n if (appDir) {\n // Injecting stylesheets here handles beforeInteractive and worker scripts correctly\n // For other strategies injecting here ensures correct stylesheet order\n // ReactDOM.preinit handles loading the styles in the correct order,\n // also ensures the stylesheet is loaded only once and in a consistent manner\n //\n // Case 1: Styles for beforeInteractive/worker with appDir - handled here\n // Case 2: Styles for beforeInteractive/worker with pages dir - Not handled yet\n // Case 3: Styles for afterInteractive/lazyOnload with appDir - handled here\n // Case 4: Styles for afterInteractive/lazyOnload with pages dir - handled in insertStylesheets function\n if (stylesheets) {\n stylesheets.forEach((styleSrc)=>{\n _reactdom.default.preinit(styleSrc, {\n as: 'style'\n });\n });\n }\n // Before interactive scripts need to be loaded by Next.js' runtime instead\n // of native <script> tags, because they no longer have `defer`.\n if (strategy === 'beforeInteractive') {\n if (!src) {\n // For inlined scripts, we put the content in `children`.\n if (restProps.dangerouslySetInnerHTML) {\n // Casting since lib.dom.d.ts doesn't have TrustedHTML yet.\n restProps.children = restProps.dangerouslySetInnerHTML.__html;\n delete restProps.dangerouslySetInnerHTML;\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"script\", {\n nonce: nonce,\n dangerouslySetInnerHTML: {\n __html: `(self.__next_s=self.__next_s||[]).push(${JSON.stringify([\n 0,\n {\n ...restProps,\n id\n }\n ])})`\n }\n });\n } else {\n // @ts-ignore\n _reactdom.default.preload(src, restProps.integrity ? {\n as: 'script',\n integrity: restProps.integrity,\n nonce,\n crossOrigin: restProps.crossOrigin\n } : {\n as: 'script',\n nonce,\n crossOrigin: restProps.crossOrigin\n });\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"script\", {\n nonce: nonce,\n dangerouslySetInnerHTML: {\n __html: `(self.__next_s=self.__next_s||[]).push(${JSON.stringify([\n src,\n {\n ...restProps,\n id\n }\n ])})`\n }\n });\n }\n } else if (strategy === 'afterInteractive') {\n if (src) {\n // @ts-ignore\n _reactdom.default.preload(src, restProps.integrity ? {\n as: 'script',\n integrity: restProps.integrity,\n nonce,\n crossOrigin: restProps.crossOrigin\n } : {\n as: 'script',\n nonce,\n crossOrigin: restProps.crossOrigin\n });\n }\n }\n }\n return null;\n}\nObject.defineProperty(Script, '__nextScript', {\n value: true\n});\nconst _default = Script;\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=script.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9zY3JpcHQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBZ1lBLE9BQXFCO2VBQXJCOztJQXBPZ0JBLHNCQUFzQjtlQUF0QkE7O0lBZ0NBQyxnQkFBZ0I7ZUFBaEJBOzs7Ozs7K0VBMUxLOzZFQUMwQzs2REFFNUI7b0RBQ0k7aURBQ0g7QUFFcEMsTUFBTUMsY0FBYyxJQUFJQztBQUN4QixNQUFNQyxZQUFZLElBQUlDO0FBaUJ0QixNQUFNQyxvQkFBb0IsQ0FBQ0M7SUFDekIsaUdBQWlHO0lBQ2pHLEVBQUU7SUFDRixvRUFBb0U7SUFDcEUsa0ZBQWtGO0lBQ2xGLDRFQUE0RTtJQUM1RSw2RUFBNkU7SUFDN0UsSUFBSUMsVUFBQUEsT0FBUSxDQUFDQyxPQUFPLEVBQUU7UUFDcEJGLFlBQVlHLE9BQU8sQ0FBQyxDQUFDQztZQUNuQkgsVUFBQUEsT0FBUSxDQUFDQyxPQUFPLENBQUNFLFlBQVk7Z0JBQUVDLElBQUk7WUFBUTtRQUM3QztRQUVBO0lBQ0Y7SUFFQSxnR0FBZ0c7SUFDaEcsRUFBRTtJQUNGLGtFQUFrRTtJQUNsRSx5RUFBeUU7SUFDekUsSUFBSSxLQUE2QixFQUFFLEVBV2xDO0FBQ0g7QUFFQSxNQUFNVSxhQUFhLENBQUNDO0lBQ2xCLE1BQU0sRUFDSkMsR0FBRyxFQUNIQyxFQUFFLEVBQ0ZDLFNBQVMsS0FBTyxDQUFDLEVBQ2pCQyxVQUFVLElBQUksRUFDZEMsdUJBQXVCLEVBQ3ZCQyxXQUFXLEVBQUUsRUFDYkMsV0FBVyxrQkFBa0IsRUFDN0JDLE9BQU8sRUFDUHhCLFdBQVcsRUFDWixHQUFHZ0I7SUFFSixNQUFNUyxXQUFXUCxNQUFNRDtJQUV2Qiw0QkFBNEI7SUFDNUIsSUFBSVEsWUFBWTVCLFVBQVU2QixHQUFHLENBQUNELFdBQVc7UUFDdkM7SUFDRjtJQUVBLHFEQUFxRDtJQUNyRCxJQUFJOUIsWUFBWStCLEdBQUcsQ0FBQ1QsTUFBTTtRQUN4QnBCLFVBQVU4QixHQUFHLENB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TUFFNUQsV0FBZXRCIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9zcmMvY2xpZW50L3NjcmlwdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VDb250ZXh0LCB1c2VSZWYsIHR5cGUgSlNYIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7IFNjcmlwdEhUTUxBdHRyaWJ1dGVzIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBIZWFkTWFuYWdlckNvbnRleHQgfSBmcm9tICcuLi9zaGFyZWQvbGliL2hlYWQtbWFuYWdlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHsgc2V0QXR0cmlidXRlc0Zyb21Qcm9wcyB9IGZyb20gJy4vc2V0LWF0dHJpYnV0ZXMtZnJvbS1wcm9wcydcbmltcG9ydCB7IHJlcXVlc3RJZGxlQ2FsbGJhY2sgfSBmcm9tICcuL3JlcXVlc3QtaWRsZS1jYWxsYmFjaydcblxuY29uc3QgU2NyaXB0Q2FjaGUgPSBuZXcgTWFwKClcbmNvbnN0IExvYWRDYWNoZSA9IG5ldyBTZXQoKVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmlwdFByb3BzIGV4dGVuZHMgU2NyaXB0SFRNTEF0dHJpYnV0ZXM8SFRNTFNjcmlwdEVsZW1lbnQ+IHtcbiAgc3RyYXRlZ3k/OiAnYWZ0ZXJJbnRlcmFjdGl2ZScgfCAnbGF6eU9ubG9hZCcgfCAnYmVmb3JlSW50ZXJhY3RpdmUnIHwgJ3dvcmtlcidcbiAgaWQ/OiBzdHJpbmdcbiAgb25Mb2FkPzogKGU6IGFueSkgPT4gdm9pZFxuICBvblJlYWR5PzogKCkgPT4gdm9pZCB8IG51bGxcbiAgb25FcnJvcj86IChlOiBhbnkpID0+IHZvaWRcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGVcbiAgc3R5bGVzaGVldHM/OiBzdHJpbmdbXVxufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBgU2NyaXB0UHJvcHNgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCB0eXBlIFByb3BzID0gU2NyaXB0UHJvcHNcblxuY29uc3QgaW5zZXJ0U3R5bGVzaGVldHMgPSAoc3R5bGVzaGVldHM6IHN0cmluZ1tdKSA9PiB7XG4gIC8vIENhc2UgMTogU3R5bGVzIGZvciBhZnRlckludGVyYWN0aXZlL2xhenlPbmxvYWQgd2l0aCBhcHBEaXIgaW5qZWN0ZWQgdmlhIGhhbmRsZUNsaWVudFNjcmlwdExvYWRcbiAgLy9cbiAgLy8gVXNpbmcgUmVhY3RET00ucHJlaW5pdCB0byBmZWF0dXJlIGRldGVjdCBhcHBEaXIgYW5kIGluamVjdCBzdHlsZXNcbiAgLy8gU3R5bGVzaGVldHMgbWlnaHQgaGF2ZSBhbHJlYWR5IGJlZW4gbG9hZGVkIGlmIGluaXRpYWxpemVkIHdpdGggU2NyaXB0IGNvbXBvbmVudFxuICAvLyBSZS1pbmplY3Qgc3R5bGVzIGhlcmUgdG8gaGFuZGxlIHNjcmlwdHMgbG9hZGVkIHZpYSBoYW5kbGVDbGllbnRTY3JpcHRMb2FkXG4gIC8vIFJlYWN0RE9NLnByZWluaXQgaGFuZGxlcyBkZWR1cCBhbmQgZW5zdXJlcyB0aGUgc3R5bGVzIGFyZSBsb2FkZWQgb25seSBvbmNlXG4gIGlmIChSZWFjdERPTS5wcmVpbml0KSB7XG4gICAgc3R5bGVzaGVldHMuZm9yRWFjaCgoc3R5bGVzaGVldDogc3RyaW5nKSA9PiB7XG4gICAgICBSZWFjdERPTS5wcmVpbml0KHN0eWxlc2hlZXQsIHsgYXM6ICdzdHlsZScgfSlcbiAgICB9KVxuXG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBDYXNlIDI6IFN0eWxlcyBmb3IgYWZ0ZXJJbnRlcmFjdGl2ZS9sYXp5T25sb2FkIHdpdGggcGFnZXMgaW5qZWN0ZWQgdmlhIGhhbmRsZUNsaWVudFNjcmlwdExvYWRcbiAgLy9cbiAgLy8gV2UgdXNlIHRoaXMgZnVuY3Rpb24gdG8gbG9hZCBzdHlsZXMgd2hlbiBhcHBkaXIgaXMgbm90IGRldGVjdGVkXG4gIC8vIFRPRE86IFVzZSBSZWFjdCBmbG9hdCBBUElzIHRvIGxvYWQgc3R5bGVzIG9uY2UgYXZhaWxhYmxlIGZvciBwYWdlcyBkaXJcbiAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgbGV0IGhlYWQgPSBkb2N1bWVudC5oZWFkXG4gICAgc3R5bGVzaGVldHMuZm9yRWFjaCgoc3R5bGVzaGVldDogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKVxuXG4gICAgICBsaW5rLnR5cGUgPSAndGV4dC9jc3MnXG4gICAgICBsaW5rLnJlbCA9ICdzdHlsZXNoZWV0J1xuICAgICAgbGluay5ocmVmID0gc3R5bGVzaGVldFxuXG4gICAgICBoZWFkLmFwcGVuZENoaWxkKGxpbmspXG4gICAgfSlcbiAgfVxufVxuXG5jb25zdCBsb2FkU2NyaXB0ID0gKHByb3BzOiBTY3JpcHRQcm9wcyk6IHZvaWQgPT4ge1xuICBjb25zdCB7XG4gICAgc3JjLFxuICAgIGlkLFxuICAgIG9uTG9hZCA9ICgpID0+IHt9LFxuICAgIG9uUmVhZHkgPSBudWxsLFxuICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLFxuICAgIGNoaWxkcmVuID0gJycsXG4gICAgc3RyYXRlZ3kgPSAnYWZ0ZXJJbnRlcmFjdGl2ZScsXG4gICAgb25FcnJvcixcbiAgICBzdHlsZXNoZWV0cyxcbiAgfSA9IHByb3BzXG5cbiAgY29uc3QgY2FjaGVLZXkgPSBpZCB8fCBzcmNcblxuICAvLyBTY3JpcHQgaGFzIGFscmVhZHkgbG9hZGVkXG4gIGlmIChjYWNoZUtleSAmJiBMb2FkQ2FjaGUuaGFzKGNhY2hlS2V5KSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gQ29udGVudHMgb2YgdGhpcyBzY3JpcHQgYXJlIGFscmVhZHkgbG9hZGluZy9sb2FkZWRcbiAgaWYgKFNjcmlwdENhY2hlLmhhcyhzcmMpKSB7XG4gICAgTG9hZENhY2hlLmFkZChjYWNoZUtleSlcbiAgICAvLyBJdCBpcyBwb3NzaWJsZSB0aGF0IG11bHRpcGxlIGBuZXh0L3NjcmlwdGAgY29tcG9uZW50cyBhbGwgaGF2ZSBzYW1lIFwic3JjXCIsIGJ1dCBoYXMgZGlmZmVyZW50IFwib25Mb2FkXCJcbiAgICAvLyBUaGlzIGlzIHRvIG1ha2Ugc3VyZSB0aGUgc2FtZSByZW1vdGUgc2NyaXB0IHdpbGwgb25seSBsb2FkIG9uY2UsIGJ1dCBcIm9uTG9hZFwiIGFyZSBleGVjdXRlZCBpbiBvcmRlclxuICAgIFNjcmlwdENhY2hlLmdldChzcmMpLnRoZW4ob25Mb2FkLCBvbkVycm9yKVxuICAgIHJldHVyblxuICB9XG5cbiAgLyoqIEV4ZWN1dGUgYWZ0ZXIgdGhlIHNjcmlwdCBmaXJzdCBsb2FkZWQgKi9cbiAgY29uc3QgYWZ0ZXJMb2FkID0gKCkgPT4ge1xuICAgIC8vIFJ1biBvblJlYWR5IGZvciB0aGUgZmlyc3QgdGltZSBhZnRlciBsb2FkIGV2ZW50XG4gICAgaWYgKG9uUmVhZHkpIHtcbiAgICAgIG9uUmVhZHkoKVxuICAgIH1cbiAgICAvLyBhZGQgY2FjaGVLZXkgdG8gTG9hZENhY2hlIHdoZW4gbG9hZCBzdWNjZXNzZnVsbHlcbiAgICBMb2FkQ2FjaGUuYWRkKGNhY2hlS2V5KVxuICB9XG5cbiAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKVxuXG4gIGNvbnN0IGxvYWRQcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgcmVzb2x2ZSgpXG4gICAgICBpZiAob25Mb2FkKSB7XG4gICAgICAgIG9uTG9hZC5jYWxsKHRoaXMsIGUpXG4gICAgICB9XG4gICAgICBhZnRlckxvYWQoKVxuICAgIH0pXG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBmdW5jdGlvbiAoZSkge1xuICAgICAgcmVqZWN0KGUpXG4gICAgfSlcbiAgfSkuY2F0Y2goZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAob25FcnJvcikge1xuICAgICAgb25FcnJvcihlKVxuICAgIH1cbiAgfSlcblxuICBpZiAoZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpIHtcbiAgICAvLyBDYXN0aW5nIHNpbmNlIGxpYi5kb20uZC50cyBkb2Vzbid0IGhhdmUgVHJ1c3RlZEhUTUwgeWV0LlxuICAgIGVsLmlubmVySFRNTCA9IChkYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWwgYXMgc3RyaW5nKSB8fCAnJ1xuXG4gICAgYWZ0ZXJMb2FkKClcbiAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xuICAgIGVsLnRleHRDb250ZW50ID1cbiAgICAgIHR5cGVvZiBjaGlsZHJlbiA9PT0gJ3N0cmluZydcbiAgICAgICAgPyBjaGlsZHJlblxuICAgICAgICA6IEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pXG4gICAgICAgICAgPyBjaGlsZHJlbi5qb2luKCcnKVxuICAgICAgICAgIDogJydcblxuICAgIGFmdGVyTG9hZCgpXG4gIH0gZWxzZSBpZiAoc3JjKSB7XG4gICAgZWwuc3JjID0gc3JjXG4gICAgLy8gZG8gbm90IGFkZCBjYWNoZUtleSBpbnRvIExvYWRDYWNoZSBmb3IgcmVtb3RlIHNjcmlwdCBoZXJlXG4gICAgLy8gY2FjaGVLZXkgd2lsbCBiZSBhZGRlZCB0byBMb2FkQ2FjaGUgd2hlbiBpdCBpcyBhY3R1YWxseSBsb2FkZWQgKHNlZSBsb2FkUHJvbWlzZSBhYm92ZSlcblxuICAgIFNjcmlwdENhY2hlLnNldChzcmMsIGxvYWRQcm9taXNlKVxuICB9XG5cbiAgc2V0QXR0cmlidXRlc0Zyb21Qcm9wcyhlbCwgcHJvcHMpXG5cbiAgaWYgKHN0cmF0ZWd5ID09PSAnd29ya2VyJykge1xuICAgIGVsLnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0L3BhcnR5dG93bicpXG4gIH1cblxuICBlbC5zZXRBdHRyaWJ1dGUoJ2RhdGEtbnNjcmlwdCcsIHN0cmF0ZWd5KVxuXG4gIC8vIExvYWQgc3R5bGVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNjcmlwdFxuICBpZiAoc3R5bGVzaGVldHMpIHtcbiAgICBpbnNlcnRTdHlsZXNoZWV0cyhzdHlsZXNoZWV0cylcbiAgfVxuXG4gIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVDbGllbnRTY3JpcHRMb2FkKHByb3BzOiBTY3JpcHRQcm9wcykge1xuICBjb25zdCB7IHN0cmF0ZWd5ID0gJ2FmdGVySW50ZXJhY3RpdmUnIH0gPSBwcm9wc1xuICBpZiAoc3RyYXRlZ3kgPT09ICdsYXp5T25sb2FkJykge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4ge1xuICAgICAgcmVxdWVzdElkbGVDYWxsYmFjaygoKSA9PiBsb2FkU2NyaXB0KHByb3BzKSlcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIGxvYWRTY3JpcHQocHJvcHMpXG4gIH1cbn1cblxuZnVuY3Rpb24gbG9hZExhenlTY3JpcHQocHJvcHM6IFNjcmlwdFByb3BzKSB7XG4gIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnKSB7XG4gICAgcmVxdWVzdElkbGVDYWxsYmFjaygoKSA9PiBsb2FkU2NyaXB0KHByb3BzKSlcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcbiAgICAgIHJlcXVlc3RJZGxlQ2FsbGJhY2soKCkgPT4gbG9hZFNjcmlwdChwcm9wcykpXG4gICAgfSlcbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRCZWZvcmVJbnRlcmFjdGl2ZVRvQ2FjaGUoKSB7XG4gIGNvbnN0IHNjcmlwdHMgPSBbXG4gICAgLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtbnNjcmlwdD1cImJlZm9yZUludGVyYWN0aXZlXCJdJyksXG4gICAgLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtbnNjcmlwdD1cImJlZm9yZVBhZ2VSZW5kZXJcIl0nKSxcbiAgXVxuICBzY3JpcHRzLmZvckVhY2goKHNjcmlwdCkgPT4ge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gc2NyaXB0LmlkIHx8IHNjcmlwdC5nZXRBdHRyaWJ1dGUoJ3NyYycpXG4gICAgTG9hZENhY2hlLmFkZChjYWNoZUtleSlcbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRTY3JpcHRMb2FkZXIoc2NyaXB0TG9hZGVySXRlbXM6IFNjcmlwdFByb3BzW10pIHtcbiAgc2NyaXB0TG9hZGVySXRlbXMuZm9yRWFjaChoYW5kbGVDbGllbnRTY3JpcHRMb2FkKVxuICBhZGRCZWZvcmVJbnRlcmFjdGl2ZVRvQ2FjaGUoKVxufVxuXG4vKipcbiAqIExvYWQgYSB0aGlyZC1wYXJ0eSBzY3JpcHRzIGluIGFuIG9wdGltaXplZCB3YXkuXG4gKlxuICogUmVhZCBtb3JlOiBbTmV4dC5qcyBEb2NzOiBgbmV4dC9zY3JpcHRgXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9jb21wb25lbnRzL3NjcmlwdClcbiAqL1xuZnVuY3Rpb24gU2NyaXB0KHByb3BzOiBTY3JpcHRQcm9wcyk6IEpTWC5FbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IHtcbiAgICBpZCxcbiAgICBzcmMgPSAnJyxcbiAgICBvbkxvYWQgPSAoKSA9PiB7fSxcbiAgICBvblJlYWR5ID0gbnVsbCxcbiAgICBzdHJhdGVneSA9ICdhZnRlckludGVyYWN0aXZlJyxcbiAgICBvbkVycm9yLFxuICAgIHN0eWxlc2hlZXRzLFxuICAgIC4uLnJlc3RQcm9wc1xuICB9ID0gcHJvcHNcblxuICAvLyBDb250ZXh0IGlzIGF2YWlsYWJsZSBvbmx5IGR1cmluZyBTU1JcbiAgbGV0IHsgdXBkYXRlU2NyaXB0cywgc2NyaXB0cywgZ2V0SXNTc3IsIGFwcERpciwgbm9uY2UgfSA9XG4gICAgdXNlQ29udGV4dChIZWFkTWFuYWdlckNvbnRleHQpXG5cbiAgLy8gaWYgYSBub25jZSBpcyBleHBsaWNpdGx5IHBhc3NlZCB0byB0aGUgc2NyaXB0IHRhZywgZmF2b3IgdGhhdCBvdmVyIHRoZSBhdXRvbWF0aWMgaGFuZGxpbmdcbiAgbm9uY2UgPSByZXN0UHJvcHMubm9uY2UgfHwgbm9uY2VcblxuICAvKipcbiAgICogLSBGaXJzdCBtb3VudDpcbiAgICogICAxLiBUaGUgdXNlRWZmZWN0IGZvciBvblJlYWR5IGV4ZWN1dGVzXG4gICAqICAgMi4gaGFzT25SZWFkeUVmZmVjdENhbGxlZC5jdXJyZW50IGlzIGZhbHNlLCBidXQgdGhlIHNjcmlwdCBoYXNuJ3QgbG9hZGVkIHlldCAobm90IGluIExvYWRDYWNoZSlcbiAgICogICAgICBvblJlYWR5IGlzIHNraXBwZWQsIHNldCBoYXNPblJlYWR5RWZmZWN0Q2FsbGVkLmN1cnJlbnQgdG8gdHJ1ZVxuICAgKiAgIDMuIFRoZSB1c2VFZmZlY3QgZm9yIGxvYWRTY3JpcHQgZXhlY3V0ZXNcbiAgICogICA0LiBoYXNMb2FkU2NyaXB0RWZmZWN0Q2FsbGVkLmN1cnJlbnQgaXMgZmFsc2UsIGxvYWRTY3JpcHQgZXhlY3V0ZXNcbiAgICogICAgICBPbmNlIHRoZSBzY3JpcHQgaXMgbG9hZGVkLCB0aGUgb25Mb2FkIGFuZCBvblJlYWR5IHdpbGwgYmUgY2FsbGVkIGJ5IHRoZW5cbiAgICogICBbSWYgc3RyaWN0IG1vZGUgaXMgZW5hYmxlZCAvIGlzIHdyYXBwZWQgaW4gPE9mZlNjcmVlbiAvPiBjb21wb25lbnRdXG4gICAqICAgNS4gVGhlIHVzZUVmZmVjdCBmb3Igb25SZWFkeSBleGVjdXRlcyBhZ2FpblxuICAgKiAgIDYuIGhhc09uUmVhZHlFZmZlY3RDYWxsZWQuY3VycmVudCBpcyB0cnVlLCBzbyBlbnRpcmUgZWZmZWN0IGlzIHNraXBwZWRcbiAgICogICA3LiBUaGUgdXNlRWZmZWN0IGZvciBsb2FkU2NyaXB0IGV4ZWN1dGVzIGFnYWluXG4gICAqICAgOC4gaGFzTG9hZFNjcmlwdEVmZmVjdENhbGxlZC5jdXJyZW50IGlzIHRydWUsIHNvIGVudGlyZSBlZmZlY3QgaXMgc2tpcHBlZFxuICAgKlxuICAgKiAtIFNlY29uZCBtb3VudDpcbiAgICogICAxLiBUaGUgdXNlRWZmZWN0IGZvciBvblJlYWR5IGV4ZWN1dGVzXG4gICAqICAgMi4gaGFzT25SZWFkeUVmZmVjdENhbGxlZC5jdXJyZW50IGlzIGZhbHNlLCBidXQgdGhlIHNjcmlwdCBoYXMgYWxyZWFkeSBsb2FkZWQgKGZvdW5kIGluIExvYWRDYWNoZSlcbiAgICogICAgICBvblJlYWR5IGlzIGNhbGxlZCwgc2V0IGhhc09uUmVhZHlFZmZlY3RDYWxsZWQuY3VycmVudCB0byB0cnVlXG4gICAqICAgMy4gVGhlIHVzZUVmZmVjdCBmb3IgbG9hZFNjcmlwdCBleGVjdXRlc1xuICAgKiAgIDQuIFRoZSBzY3JpcHQgaXMgYWxyZWFkeSBsb2FkZWQsIGxvYWRTY3JpcHQgYmFpbHMgb3V0XG4gICAqICAgW0lmIHN0cmljdCBtb2RlIGlzIGVuYWJsZWQgLyBpcyB3cmFwcGVkIGluIDxPZmZTY3JlZW4gLz4gY29tcG9uZW50XVxuICAgKiAgIDUuIFRoZSB1c2VFZmZlY3QgZm9yIG9uUmVhZHkgZXhlY3V0ZXMgYWdhaW5cbiAgICogICA2LiBoYXNPblJlYWR5RWZmZWN0Q2FsbGVkLmN1cnJlbnQgaXMgdHJ1ZSwgc28gZW50aXJlIGVmZmVjdCBpcyBza2lwcGVkXG4gICAqICAgNy4gVGhlIHVzZUVmZmVjdCBmb3IgbG9hZFNjcmlwdCBleGVjdXRlcyBhZ2FpblxuICAgKiAgIDguIGhhc0xvYWRTY3JpcHRFZmZlY3RDYWxsZWQuY3VycmVudCBpcyB0cnVlLCBzbyBlbnRpcmUgZWZmZWN0IGlzIHNraXBwZWRcbiAgICovXG4gIGNvbnN0IGhhc09uUmVhZHlFZmZlY3RDYWxsZWQgPSB1c2VSZWYoZmFsc2UpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjYWNoZUtleSA9IGlkIHx8IHNyY1xuICAgIGlmICghaGFzT25SZWFkeUVmZmVjdENhbGxlZC5jdXJyZW50KSB7XG4gICAgICAvLyBSdW4gb25SZWFkeSBpZiBzY3JpcHQgaGFzIGxvYWRlZCBiZWZvcmUgYnV0IGNvbXBvbmVudCBpcyByZS1tb3VudGVkXG4gICAgICBpZiAob25SZWFkeSAmJiBjYWNoZUtleSAmJiBMb2FkQ2FjaGUuaGFzKGNhY2hlS2V5KSkge1xuICAgICAgICBvblJlYWR5KClcbiAgICAgIH1cblxuICAgICAgaGFzT25SZWFkeUVmZmVjdENhbGxlZC5jdXJyZW50ID0gdHJ1ZVxuICAgIH1cbiAgfSwgW29uUmVhZHksIGlkLCBzcmNdKVxuXG4gIGNvbnN0IGhhc0xvYWRTY3JpcHRFZmZlY3RDYWxsZWQgPSB1c2VSZWYoZmFsc2UpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWhhc0xvYWRTY3JpcHRFZmZlY3RDYWxsZWQuY3VycmVudCkge1xuICAgICAgaWYgKHN0cmF0ZWd5ID09PSAnYWZ0ZXJJbnRlcmFjdGl2ZScpIHtcbiAgICAgICAgbG9hZFNjcmlwdChwcm9wcylcbiAgICAgIH0gZWxzZSBpZiAoc3RyYXRlZ3kgPT09ICdsYXp5T25sb2FkJykge1xuICAgICAgICBsb2FkTGF6eVNjcmlwdChwcm9wcylcbiAgICAgIH1cblxuICAgICAgaGFzTG9hZFNjcmlwdEVmZmVjdENhbGxlZC5jdXJyZW50ID0gdHJ1ZVxuICAgIH1cbiAgfSwgW3Byb3BzLCBzdHJhdGVneV0pXG5cbiAgaWYgKHN0cmF0ZWd5ID09PSAnYmVmb3JlSW50ZXJhY3RpdmUnIHx8IHN0cmF0ZWd5ID09PSAnd29ya2VyJykge1xuICAgIGlmICh1cGRhdGVTY3JpcHRzKSB7XG4gICAgICBzY3JpcHRzW3N0cmF0ZWd5XSA9IChzY3JpcHRzW3N0cmF0ZWd5XSB8fCBbXSkuY29uY2F0KFtcbiAgICAgICAge1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIHNyYyxcbiAgICAgICAgICBvbkxvYWQsXG4gICAgICAgICAgb25SZWFkeSxcbiAgICAgICAgICBvbkVycm9yLFxuICAgICAgICAgIC4uLnJlc3RQcm9wcyxcbiAgICAgICAgICBub25jZSxcbiAgICAgICAgfSxcbiAgICAgIF0pXG4gICAgICB1cGRhdGVTY3JpcHRzKHNjcmlwdHMpXG4gICAgfSBlbHNlIGlmIChnZXRJc1NzciAmJiBnZXRJc1NzcigpKSB7XG4gICAgICAvLyBTY3JpcHQgaGFzIGFscmVhZHkgbG9hZGVkIGR1cmluZyBTU1JcbiAgICAgIExvYWRDYWNoZS5hZGQoaWQgfHwgc3JjKVxuICAgIH0gZWxzZSBpZiAoZ2V0SXNTc3IgJiYgIWdldElzU3NyKCkpIHtcbiAgICAgIGxvYWRTY3JpcHQoe1xuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgbm9uY2UsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8vIEZvciB0aGUgYXBwIGRpcmVjdG9yeSwgd2UgbmVlZCBSZWFjdCBGbG9hdCB0byBwcmVsb2FkIHRoZXNlIHNjcmlwdHMuXG4gIGlmIChhcHBEaXIpIHtcbiAgICAvLyBJbmplY3Rpbmcgc3R5bGVzaGVldHMgaGVyZSBoYW5kbGVzIGJlZm9yZUludGVyYWN0aXZlIGFuZCB3b3JrZXIgc2NyaXB0cyBjb3JyZWN0bHlcbiAgICAvLyBGb3Igb3RoZXIgc3RyYXRlZ2llcyBpbmplY3RpbmcgaGVyZSBlbnN1cmVzIGNvcnJlY3Qgc3R5bGVzaGVldCBvcmRlclxuICAgIC8vIFJlYWN0RE9NLnByZWluaXQgaGFuZGxlcyBsb2FkaW5nIHRoZSBzdHlsZXMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIsXG4gICAgLy8gYWxzbyBlbnN1cmVzIHRoZSBzdHlsZXNoZWV0IGlzIGxvYWRlZCBvbmx5IG9uY2UgYW5kIGluIGEgY29uc2lzdGVudCBtYW5uZXJcbiAgICAvL1xuICAgIC8vIENhc2UgMTogU3R5bGVzIGZvciBiZWZvcmVJbnRlcmFjdGl2ZS93b3JrZXIgd2l0aCBhcHBEaXIgLSBoYW5kbGVkIGhlcmVcbiAgICAvLyBDYXNlIDI6IFN0eWxlcyBmb3IgYmVmb3JlSW50ZXJhY3RpdmUvd29ya2VyIHdpdGggcGFnZXMgZGlyIC0gTm90IGhhbmRsZWQgeWV0XG4gICAgLy8gQ2FzZSAzOiBTdHlsZXMgZm9yIGFmdGVySW50ZXJhY3RpdmUvbGF6eU9ubG9hZCB3aXRoIGFwcERpciAtIGhhbmRsZWQgaGVyZVxuICAgIC8vIENhc2UgNDogU3R5bGVzIGZvciBhZnRlckludGVyYWN0aXZlL2xhenlPbmxvYWQgd2l0aCBwYWdlcyBkaXIgLSBoYW5kbGVkIGluIGluc2VydFN0eWxlc2hlZXRzIGZ1bmN0aW9uXG4gICAgaWYgKHN0eWxlc2hlZXRzKSB7XG4gICAgICBzdHlsZXNoZWV0cy5mb3JFYWNoKChzdHlsZVNyYykgPT4ge1xuICAgICAgICBSZWFjdERPTS5wcmVpbml0KHN0eWxlU3JjLCB7IGFzOiAnc3R5bGUnIH0pXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIEJlZm9yZSBpbnRlcmFjdGl2ZSBzY3JpcHRzIG5lZWQgdG8gYmUgbG9hZGVkIGJ5IE5leHQuanMnIHJ1bnRpbWUgaW5zdGVhZFxuICAgIC8vIG9mIG5hdGl2ZSA8c2NyaXB0PiB0YWdzLCBiZWNhdXNlIHRoZXkgbm8gbG9uZ2VyIGhhdmUgYGRlZmVyYC5cbiAgICBpZiAoc3RyYXRlZ3kgPT09ICdiZWZvcmVJbnRlcmFjdGl2ZScpIHtcbiAgICAgIGlmICghc3JjKSB7XG4gICAgICAgIC8vIEZvciBpbmxpbmVkIHNjcmlwdHMsIHdlIHB1dCB0aGUgY29udGVudCBpbiBgY2hpbGRyZW5gLlxuICAgICAgICBpZiAocmVzdFByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSB7XG4gICAgICAgICAgLy8gQ2FzdGluZyBzaW5jZSBsaWIuZG9tLmQudHMgZG9lc24ndCBoYXZlIFRydXN0ZWRIVE1MIHlldC5cbiAgICAgICAgICByZXN0UHJvcHMuY2hpbGRyZW4gPSByZXN0UHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcbiAgICAgICAgICAgIC5fX2h0bWwgYXMgc3RyaW5nXG4gICAgICAgICAgZGVsZXRlIHJlc3RQcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8c2NyaXB0XG4gICAgICAgICAgICBub25jZT17bm9uY2V9XG4gICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17e1xuICAgICAgICAgICAgICBfX2h0bWw6IGAoc2VsZi5fX25leHRfcz1zZWxmLl9fbmV4dF9zfHxbXSkucHVzaCgke0pTT04uc3RyaW5naWZ5KFtcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIHsgLi4ucmVzdFByb3BzLCBpZCB9LFxuICAgICAgICAgICAgICBdKX0pYCxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBSZWFjdERPTS5wcmVsb2FkKFxuICAgICAgICAgIHNyYyxcbiAgICAgICAgICByZXN0UHJvcHMuaW50ZWdyaXR5XG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBhczogJ3NjcmlwdCcsXG4gICAgICAgICAgICAgICAgaW50ZWdyaXR5OiByZXN0UHJvcHMuaW50ZWdyaXR5LFxuICAgICAgICAgICAgICAgIG5vbmNlLFxuICAgICAgICAgICAgICAgIGNyb3NzT3JpZ2luOiByZXN0UHJvcHMuY3Jvc3NPcmlnaW4sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogeyBhczogJ3NjcmlwdCcsIG5vbmNlLCBjcm9zc09yaWdpbjogcmVzdFByb3BzLmNyb3NzT3JpZ2luIH1cbiAgICAgICAgKVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxzY3JpcHRcbiAgICAgICAgICAgIG5vbmNlPXtub25jZX1cbiAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7XG4gICAgICAgICAgICAgIF9faHRtbDogYChzZWxmLl9fbmV4dF9zPXNlbGYuX19uZXh0X3N8fFtdKS5wdXNoKCR7SlNPTi5zdHJpbmdpZnkoW1xuICAgICAgICAgICAgICAgIHNyYyxcbiAgICAgICAgICAgICAgICB7IC4uLnJlc3RQcm9wcywgaWQgfSxcbiAgICAgICAgICAgICAgXSl9KWAsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHN0cmF0ZWd5ID09PSAnYWZ0ZXJJbnRlcmFjdGl2ZScpIHtcbiAgICAgIGlmIChzcmMpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBSZWFjdERPTS5wcmVsb2FkKFxuICAgICAgICAgIHNyYyxcbiAgICAgICAgICByZXN0UHJvcHMuaW50ZWdyaXR5XG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBhczogJ3NjcmlwdCcsXG4gICAgICAgICAgICAgICAgaW50ZWdyaXR5OiByZXN0UHJvcHMuaW50ZWdyaXR5LFxuICAgICAgICAgICAgICAgIG5vbmNlLFxuICAgICAgICAgICAgICAgIGNyb3NzT3JpZ2luOiByZXN0UHJvcHMuY3Jvc3NPcmlnaW4sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogeyBhczogJ3NjcmlwdCcsIG5vbmNlLCBjcm9zc09yaWdpbjogcmVzdFByb3BzLmNyb3NzT3JpZ2luIH1cbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShTY3JpcHQsICdfX25leHRTY3JpcHQnLCB7IHZhbHVlOiB0cnVlIH0pXG5cbmV4cG9ydCBkZWZhdWx0IFNjcmlwdFxuIl0sIm5hbWVzIjpbImhhbmRsZUNsaWVudFNjcmlwdExvYWQiLCJpbml0U2NyaXB0TG9hZGVyIiwiU2NyaXB0Q2FjaGUiLCJNYXAiLCJMb2FkQ2FjaGUiLCJTZXQiLCJpbnNlcnRTdHlsZXNoZWV0cyIsInN0eWxlc2hlZXRzIiwiUmVhY3RET00iLCJwcmVpbml0IiwiZm9yRWFjaCIsInN0eWxlc2hlZXQiLCJhcyIsIndpbmRvdyIsImhlYWQiLCJkb2N1bWVudCIsImxpbmsiLCJjcmVhdGVFbGVtZW50IiwidHlwZSIsInJlbCIsImhyZWYiLCJhcHBlbmRDaGlsZCIsImxvYWRTY3JpcHQiLCJwcm9wcyIsInNyYyIsImlkIiwib25Mb2FkIiwib25SZWFkeSIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiY2hpbGRyZW4iLCJzdHJhdGVneSIsIm9uRXJyb3IiLCJjYWNoZUtleSIsImhhcyIsImFkZCIsImdldCIsInRoZW4iLCJhZnRlckxvYWQiLCJlbCIsImxvYWRQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJhZGRFdmVudExpc3RlbmVyIiwiZSIsImNhbGwiLCJjYXRjaCIsImlubmVySFRNTCIsIl9faHRtbCIsInRleHRDb250ZW50IiwiQXJyYXkiLCJpc0FycmF5Iiwiam9pbiIsInNldCIsInNldEF0dHJpYnV0ZXNGcm9tUHJvcHMiLCJzZXRBdHRyaWJ1dGUiLCJib2R5IiwicmVxdWVzdElkbGVDYWxsYmFjayIsImxvYWRMYXp5U2NyaXB0IiwicmVhZHlTdGF0ZSIsImFkZEJlZm9yZUludGVyYWN0aXZlVG9DYWNoZSIsInNjcmlwdHMiLCJxdWVyeVNlbGVjdG9yQWxsIiwic2NyaXB0IiwiZ2V0QXR0cmlidXRlIiwic2NyaXB0TG9hZGVySXRlbXMiLCJTY3JpcHQiLCJyZXN0UHJvcHMiLCJ1cGRhdGVTY3JpcHRzIiwiZ2V0SXNTc3IiLCJhcHBEaXIiLCJub25jZSIsInVzZUNvbnRleHQiLCJIZWFkTWFuYWdlckNvbnRleHQiLCJoYXNPblJlYWR5RWZmZWN0Q2FsbGVkIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiY3VycmVudCIsImhhc0xvYWRTY3JpcHRFZmZlY3RDYWxsZWQiLCJjb25jYXQiLCJzdHlsZVNyYyIsIkpTT04iLCJzdHJpbmdpZnkiLCJwcmVsb2FkIiwiaW50ZWdyaXR5IiwiY3Jvc3NPcmlnaW4iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/script.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/set-attributes-from-props.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/set-attributes-from-props.js ***!
|
||
\********************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"setAttributesFromProps\", ({\n enumerable: true,\n get: function() {\n return setAttributesFromProps;\n }\n}));\nconst DOMAttributeNames = {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv',\n noModule: 'noModule'\n};\nconst ignoreProps = [\n 'onLoad',\n 'onReady',\n 'dangerouslySetInnerHTML',\n 'children',\n 'onError',\n 'strategy',\n 'stylesheets'\n];\nfunction isBooleanScriptAttribute(attr) {\n return [\n 'async',\n 'defer',\n 'noModule'\n ].includes(attr);\n}\nfunction setAttributesFromProps(el, props) {\n for (const [p, value] of Object.entries(props)){\n if (!props.hasOwnProperty(p)) continue;\n if (ignoreProps.includes(p)) continue;\n // we don't render undefined props to the DOM\n if (value === undefined) {\n continue;\n }\n const attr = DOMAttributeNames[p] || p.toLowerCase();\n if (el.tagName === 'SCRIPT' && isBooleanScriptAttribute(attr)) {\n // Correctly assign boolean script attributes\n // https://github.com/vercel/next.js/pull/20748\n ;\n el[attr] = !!value;\n } else {\n el.setAttribute(attr, String(value));\n }\n // Remove falsy non-zero boolean attributes so they are correctly interpreted\n // (e.g. if we set them to false, this coerces to the string \"false\", which the browser interprets as true)\n if (value === false || el.tagName === 'SCRIPT' && isBooleanScriptAttribute(attr) && (!value || value === 'false')) {\n // Call setAttribute before, as we need to set and unset the attribute to override force async:\n // https://html.spec.whatwg.org/multipage/scripting.html#script-force-async\n el.setAttribute(attr, '');\n el.removeAttribute(attr);\n }\n }\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=set-attributes-from-props.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9zZXQtYXR0cmlidXRlcy1mcm9tLXByb3BzLmpzIiwibWFwcGluZ3MiOiI7Ozs7MERBd0JnQkE7OztlQUFBQTs7O0FBeEJoQixNQUFNQyxvQkFBNEM7SUFDaERDLGVBQWU7SUFDZkMsV0FBVztJQUNYQyxTQUFTO0lBQ1RDLFdBQVc7SUFDWEMsVUFBVTtBQUNaO0FBRUEsTUFBTUMsY0FBYztJQUNsQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtDQUNEO0FBRUQsU0FBU0MseUJBQ1BDLElBQVk7SUFFWixPQUFPO1FBQUM7UUFBUztRQUFTO0tBQVcsQ0FBQ0MsUUFBUSxDQUFDRDtBQUNqRDtBQUVPLFNBQVNULHVCQUF1QlcsRUFBZSxFQUFFQyxLQUFhO0lBQ25FLEtBQUssTUFBTSxDQUFDQyxHQUFHQyxNQUFNLElBQUlDLE9BQU9DLE9BQU8sQ0FBQ0osT0FBUTtRQUM5QyxJQUFJLENBQUNBLE1BQU1LLGNBQWMsQ0FBQ0osSUFBSTtRQUM5QixJQUFJTixZQUFZRyxRQUFRLENBQUNHLElBQUk7UUFFN0IsNkNBQTZDO1FBQzdDLElBQUlDLFVBQVVJLFdBQVc7WUFDdkI7UUFDRjtRQUVBLE1BQU1ULE9BQU9SLGlCQUFpQixDQUFDWSxFQUFFLElBQUlBLEVBQUVNLFdBQVc7UUFFbEQsSUFBSVIsR0FBR1MsT0FBTyxLQUFLLFlBQVlaLHlCQUF5QkMsT0FBTztZQUM3RCw2Q0FBNkM7WUFDN0MsK0NBQStDOztZQUM3Q0UsRUFBd0IsQ0FBQ0YsS0FBSyxHQUFHLENBQUMsQ0FBQ0s7UUFDdkMsT0FBTztZQUNMSCxHQUFHVSxZQUFZLENBQUNaLE1BQU1hLE9BQU9SO1FBQy9CO1FBRUEsNkVBQTZFO1FBQzdFLDJHQUEyRztRQUMzRyxJQUNFQSxVQUFVLFNBQ1RILEdBQUdTLE9BQU8sS0FBSyxZQUNkWix5QkFBeUJDLFNBQ3hCLEVBQUNLLFNBQVNBLFVBQVUsUUFBTSxFQUM3QjtZQUNBLCtGQUErRjtZQUMvRiwyRUFBMkU7WUFDM0VILEdBQUdVLFlBQVksQ0FBQ1osTUFBTTtZQUN0QkUsR0FBR1ksZUFBZSxDQUFDZDtRQUNyQjtJQUNGO0FBQ0YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL3NyYy9jbGllbnQvc2V0LWF0dHJpYnV0ZXMtZnJvbS1wcm9wcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBET01BdHRyaWJ1dGVOYW1lczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgYWNjZXB0Q2hhcnNldDogJ2FjY2VwdC1jaGFyc2V0JyxcbiAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICBodG1sRm9yOiAnZm9yJyxcbiAgaHR0cEVxdWl2OiAnaHR0cC1lcXVpdicsXG4gIG5vTW9kdWxlOiAnbm9Nb2R1bGUnLFxufVxuXG5jb25zdCBpZ25vcmVQcm9wcyA9IFtcbiAgJ29uTG9hZCcsXG4gICdvblJlYWR5JyxcbiAgJ2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MJyxcbiAgJ2NoaWxkcmVuJyxcbiAgJ29uRXJyb3InLFxuICAnc3RyYXRlZ3knLFxuICAnc3R5bGVzaGVldHMnLFxuXVxuXG5mdW5jdGlvbiBpc0Jvb2xlYW5TY3JpcHRBdHRyaWJ1dGUoXG4gIGF0dHI6IHN0cmluZ1xuKTogYXR0ciBpcyAnYXN5bmMnIHwgJ2RlZmVyJyB8ICdub01vZHVsZScge1xuICByZXR1cm4gWydhc3luYycsICdkZWZlcicsICdub01vZHVsZSddLmluY2x1ZGVzKGF0dHIpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRBdHRyaWJ1dGVzRnJvbVByb3BzKGVsOiBIVE1MRWxlbWVudCwgcHJvcHM6IG9iamVjdCkge1xuICBmb3IgKGNvbnN0IFtwLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocHJvcHMpKSB7XG4gICAgaWYgKCFwcm9wcy5oYXNPd25Qcm9wZXJ0eShwKSkgY29udGludWVcbiAgICBpZiAoaWdub3JlUHJvcHMuaW5jbHVkZXMocCkpIGNvbnRpbnVlXG5cbiAgICAvLyB3ZSBkb24ndCByZW5kZXIgdW5kZWZpbmVkIHByb3BzIHRvIHRoZSBET01cbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBjb25zdCBhdHRyID0gRE9NQXR0cmlidXRlTmFtZXNbcF0gfHwgcC50b0xvd2VyQ2FzZSgpXG5cbiAgICBpZiAoZWwudGFnTmFtZSA9PT0gJ1NDUklQVCcgJiYgaXNCb29sZWFuU2NyaXB0QXR0cmlidXRlKGF0dHIpKSB7XG4gICAgICAvLyBDb3JyZWN0bHkgYXNzaWduIGJvb2xlYW4gc2NyaXB0IGF0dHJpYnV0ZXNcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS92ZXJjZWwvbmV4dC5qcy9wdWxsLzIwNzQ4XG4gICAgICA7KGVsIGFzIEhUTUxTY3JpcHRFbGVtZW50KVthdHRyXSA9ICEhdmFsdWVcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc2V0QXR0cmlidXRlKGF0dHIsIFN0cmluZyh2YWx1ZSkpXG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIGZhbHN5IG5vbi16ZXJvIGJvb2xlYW4gYXR0cmlidXRlcyBzbyB0aGV5IGFyZSBjb3JyZWN0bHkgaW50ZXJwcmV0ZWRcbiAgICAvLyAoZS5nLiBpZiB3ZSBzZXQgdGhlbSB0byBmYWxzZSwgdGhpcyBjb2VyY2VzIHRvIHRoZSBzdHJpbmcgXCJmYWxzZVwiLCB3aGljaCB0aGUgYnJvd3NlciBpbnRlcnByZXRzIGFzIHRydWUpXG4gICAgaWYgKFxuICAgICAgdmFsdWUgPT09IGZhbHNlIHx8XG4gICAgICAoZWwudGFnTmFtZSA9PT0gJ1NDUklQVCcgJiZcbiAgICAgICAgaXNCb29sZWFuU2NyaXB0QXR0cmlidXRlKGF0dHIpICYmXG4gICAgICAgICghdmFsdWUgfHwgdmFsdWUgPT09ICdmYWxzZScpKVxuICAgICkge1xuICAgICAgLy8gQ2FsbCBzZXRBdHRyaWJ1dGUgYmVmb3JlLCBhcyB3ZSBuZWVkIHRvIHNldCBhbmQgdW5zZXQgdGhlIGF0dHJpYnV0ZSB0byBvdmVycmlkZSBmb3JjZSBhc3luYzpcbiAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI3NjcmlwdC1mb3JjZS1hc3luY1xuICAgICAgZWwuc2V0QXR0cmlidXRlKGF0dHIsICcnKVxuICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKGF0dHIpXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsic2V0QXR0cmlidXRlc0Zyb21Qcm9wcyIsIkRPTUF0dHJpYnV0ZU5hbWVzIiwiYWNjZXB0Q2hhcnNldCIsImNsYXNzTmFtZSIsImh0bWxGb3IiLCJodHRwRXF1aXYiLCJub01vZHVsZSIsImlnbm9yZVByb3BzIiwiaXNCb29sZWFuU2NyaXB0QXR0cmlidXRlIiwiYXR0ciIsImluY2x1ZGVzIiwiZWwiLCJwcm9wcyIsInAiLCJ2YWx1ZSIsIk9iamVjdCIsImVudHJpZXMiLCJoYXNPd25Qcm9wZXJ0eSIsInVuZGVmaW5lZCIsInRvTG93ZXJDYXNlIiwidGFnTmFtZSIsInNldEF0dHJpYnV0ZSIsIlN0cmluZyIsInJlbW92ZUF0dHJpYnV0ZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/set-attributes-from-props.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/client/use-merged-ref.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/next/dist/client/use-merged-ref.js ***!
|
||
\*********************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"useMergedRef\", ({\n enumerable: true,\n get: function() {\n return useMergedRef;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nfunction useMergedRef(refA, refB) {\n const cleanupA = (0, _react.useRef)(null);\n const cleanupB = (0, _react.useRef)(null);\n // NOTE: In theory, we could skip the wrapping if only one of the refs is non-null.\n // (this happens often if the user doesn't pass a ref to Link/Form/Image)\n // But this can cause us to leak a cleanup-ref into user code (previously via `<Link legacyBehavior>`),\n // and the user might pass that ref into ref-merging library that doesn't support cleanup refs\n // (because it hasn't been updated for React 19)\n // which can then cause things to blow up, because a cleanup-returning ref gets called with `null`.\n // So in practice, it's safer to be defensive and always wrap the ref, even on React 19.\n return (0, _react.useCallback)((current)=>{\n if (current === null) {\n const cleanupFnA = cleanupA.current;\n if (cleanupFnA) {\n cleanupA.current = null;\n cleanupFnA();\n }\n const cleanupFnB = cleanupB.current;\n if (cleanupFnB) {\n cleanupB.current = null;\n cleanupFnB();\n }\n } else {\n if (refA) {\n cleanupA.current = applyRef(refA, current);\n }\n if (refB) {\n cleanupB.current = applyRef(refB, current);\n }\n }\n }, [\n refA,\n refB\n ]);\n}\nfunction applyRef(refA, current) {\n if (typeof refA === 'function') {\n const cleanup = refA(current);\n if (typeof cleanup === 'function') {\n return cleanup;\n } else {\n return ()=>refA(null);\n }\n } else {\n refA.current = current;\n return ()=>{\n refA.current = null;\n };\n }\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=use-merged-ref.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC91c2UtbWVyZ2VkLXJlZi5qcyIsIm1hcHBpbmdzIjoiOzs7O2dEQVNnQkE7OztlQUFBQTs7O21DQVQ4QjtBQVN2QyxTQUFTQSxhQUNkQyxJQUFtQixFQUNuQkMsSUFBbUI7SUFFbkIsTUFBTUMsV0FBV0MsQ0FBQUEsR0FBQUEsT0FBQUEsTUFBQUEsRUFBNEI7SUFDN0MsTUFBTUMsV0FBV0QsQ0FBQUEsR0FBQUEsT0FBQUEsTUFBQUEsRUFBNEI7SUFFN0MsbUZBQW1GO0lBQ25GLHlFQUF5RTtJQUN6RSx1R0FBdUc7SUFDdkcsOEZBQThGO0lBQzlGLGdEQUFnRDtJQUNoRCxtR0FBbUc7SUFDbkcsd0ZBQXdGO0lBQ3hGLE9BQU9FLENBQUFBLEdBQUFBLE9BQUFBLFdBQUFBLEVBQ0wsQ0FBQ0M7UUFDQyxJQUFJQSxZQUFZLE1BQU07WUFDcEIsTUFBTUMsYUFBYUwsU0FBU0ksT0FBTztZQUNuQyxJQUFJQyxZQUFZO2dCQUNkTCxTQUFTSSxPQUFPLEdBQUc7Z0JBQ25CQztZQUNGO1lBQ0EsTUFBTUMsYUFBYUosU0FBU0UsT0FBTztZQUNuQyxJQUFJRSxZQUFZO2dCQUNkSixTQUFTRSxPQUFPLEdBQUc7Z0JBQ25CRTtZQUNGO1FBQ0YsT0FBTztZQUNMLElBQUlSLE1BQU07Z0JBQ1JFLFNBQVNJLE9BQU8sR0FBR0csU0FBU1QsTUFBTU07WUFDcEM7WUFDQSxJQUFJTCxNQUFNO2dCQUNSRyxTQUFTRSxPQUFPLEdBQUdHLFNBQVNSLE1BQU1LO1lBQ3BDO1FBQ0Y7SUFDRixHQUNBO1FBQUNOO1FBQU1DO0tBQUs7QUFFaEI7QUFFQSxTQUFTUSxTQUNQVCxJQUFnQyxFQUNoQ00sT0FBaUI7SUFFakIsSUFBSSxPQUFPTixTQUFTLFlBQVk7UUFDOUIsTUFBTVUsVUFBVVYsS0FBS007UUFDckIsSUFBSSxPQUFPSSxZQUFZLFlBQVk7WUFDakMsT0FBT0E7UUFDVCxPQUFPO1lBQ0wsT0FBTyxJQUFNVixLQUFLO1FBQ3BCO0lBQ0YsT0FBTztRQUNMQSxLQUFLTSxPQUFPLEdBQUdBO1FBQ2YsT0FBTztZQUNMTixLQUFLTSxPQUFPLEdBQUc7UUFDakI7SUFDRjtBQUNGIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9zcmMvY2xpZW50L3VzZS1tZXJnZWQtcmVmLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHR5cGUgUmVmIH0gZnJvbSAncmVhY3QnXG5cbi8vIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IGhvb2sgdG8gc3VwcG9ydCBSZWFjdCAxOCBhbmQgMTkgcmVmcy5cbi8vIEluIDE5LCBhIGNsZWFudXAgZnVuY3Rpb24gZnJvbSByZWZzIG1heSBiZSByZXR1cm5lZC5cbi8vIEluIDE4LCByZXR1cm5pbmcgYSBjbGVhbnVwIGZ1bmN0aW9uIGNyZWF0ZXMgYSB3YXJuaW5nLlxuLy8gU2luY2Ugd2UgdGFrZSB1c2Vyc3BhY2UgcmVmcywgd2UgZG9uJ3Qga25vdyBhaGVhZCBvZiB0aW1lIGlmIGEgY2xlYW51cCBmdW5jdGlvbiB3aWxsIGJlIHJldHVybmVkLlxuLy8gVGhpcyBpbXBsZW1lbnRzIGNsZWFudXAgZnVuY3Rpb25zIHdpdGggdGhlIG9sZCBiZWhhdmlvciBpbiAxOC5cbi8vIFdlIGtub3cgcmVmcyBhcmUgYWx3YXlzIGNhbGxlZCBhbHRlcm5hdGluZyB3aXRoIGBudWxsYCBhbmQgdGhlbiBgVGAuXG4vLyBTbyBhIGNhbGwgd2l0aCBgbnVsbGAgbWVhbnMgd2UgbmVlZCB0byBjYWxsIHRoZSBwcmV2aW91cyBjbGVhbnVwIGZ1bmN0aW9ucy5cbmV4cG9ydCBmdW5jdGlvbiB1c2VNZXJnZWRSZWY8VEVsZW1lbnQ+KFxuICByZWZBOiBSZWY8VEVsZW1lbnQ+LFxuICByZWZCOiBSZWY8VEVsZW1lbnQ+XG4pOiBSZWY8VEVsZW1lbnQ+IHtcbiAgY29uc3QgY2xlYW51cEEgPSB1c2VSZWY8KCgpID0+IHZvaWQpIHwgbnVsbD4obnVsbClcbiAgY29uc3QgY2xlYW51cEIgPSB1c2VSZWY8KCgpID0+IHZvaWQpIHwgbnVsbD4obnVsbClcblxuICAvLyBOT1RFOiBJbiB0aGVvcnksIHdlIGNvdWxkIHNraXAgdGhlIHdyYXBwaW5nIGlmIG9ubHkgb25lIG9mIHRoZSByZWZzIGlzIG5vbi1udWxsLlxuICAvLyAodGhpcyBoYXBwZW5zIG9mdGVuIGlmIHRoZSB1c2VyIGRvZXNuJ3QgcGFzcyBhIHJlZiB0byBMaW5rL0Zvcm0vSW1hZ2UpXG4gIC8vIEJ1dCB0aGlzIGNhbiBjYXVzZSB1cyB0byBsZWFrIGEgY2xlYW51cC1yZWYgaW50byB1c2VyIGNvZGUgKHByZXZpb3VzbHkgdmlhIGA8TGluayBsZWdhY3lCZWhhdmlvcj5gKSxcbiAgLy8gYW5kIHRoZSB1c2VyIG1pZ2h0IHBhc3MgdGhhdCByZWYgaW50byByZWYtbWVyZ2luZyBsaWJyYXJ5IHRoYXQgZG9lc24ndCBzdXBwb3J0IGNsZWFudXAgcmVmc1xuICAvLyAoYmVjYXVzZSBpdCBoYXNuJ3QgYmVlbiB1cGRhdGVkIGZvciBSZWFjdCAxOSlcbiAgLy8gd2hpY2ggY2FuIHRoZW4gY2F1c2UgdGhpbmdzIHRvIGJsb3cgdXAsIGJlY2F1c2UgYSBjbGVhbnVwLXJldHVybmluZyByZWYgZ2V0cyBjYWxsZWQgd2l0aCBgbnVsbGAuXG4gIC8vIFNvIGluIHByYWN0aWNlLCBpdCdzIHNhZmVyIHRvIGJlIGRlZmVuc2l2ZSBhbmQgYWx3YXlzIHdyYXAgdGhlIHJlZiwgZXZlbiBvbiBSZWFjdCAxOS5cbiAgcmV0dXJuIHVzZUNhbGxiYWNrKFxuICAgIChjdXJyZW50OiBURWxlbWVudCB8IG51bGwpOiB2b2lkID0+IHtcbiAgICAgIGlmIChjdXJyZW50ID09PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGNsZWFudXBGbkEgPSBjbGVhbnVwQS5jdXJyZW50XG4gICAgICAgIGlmIChjbGVhbnVwRm5BKSB7XG4gICAgICAgICAgY2xlYW51cEEuY3VycmVudCA9IG51bGxcbiAgICAgICAgICBjbGVhbnVwRm5BKClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjbGVhbnVwRm5CID0gY2xlYW51cEIuY3VycmVudFxuICAgICAgICBpZiAoY2xlYW51cEZuQikge1xuICAgICAgICAgIGNsZWFudXBCLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgY2xlYW51cEZuQigpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChyZWZBKSB7XG4gICAgICAgICAgY2xlYW51cEEuY3VycmVudCA9IGFwcGx5UmVmKHJlZkEsIGN1cnJlbnQpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlZkIpIHtcbiAgICAgICAgICBjbGVhbnVwQi5jdXJyZW50ID0gYXBwbHlSZWYocmVmQiwgY3VycmVudClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW3JlZkEsIHJlZkJdXG4gIClcbn1cblxuZnVuY3Rpb24gYXBwbHlSZWY8VEVsZW1lbnQ+KFxuICByZWZBOiBOb25OdWxsYWJsZTxSZWY8VEVsZW1lbnQ+PixcbiAgY3VycmVudDogVEVsZW1lbnRcbikge1xuICBpZiAodHlwZW9mIHJlZkEgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjb25zdCBjbGVhbnVwID0gcmVmQShjdXJyZW50KVxuICAgIGlmICh0eXBlb2YgY2xlYW51cCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGNsZWFudXBcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICgpID0+IHJlZkEobnVsbClcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmVmQS5jdXJyZW50ID0gY3VycmVudFxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICByZWZBLmN1cnJlbnQgPSBudWxsXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsidXNlTWVyZ2VkUmVmIiwicmVmQSIsInJlZkIiLCJjbGVhbnVwQSIsInVzZVJlZiIsImNsZWFudXBCIiwidXNlQ2FsbGJhY2siLCJjdXJyZW50IiwiY2xlYW51cEZuQSIsImNsZWFudXBGbkIiLCJhcHBseVJlZiIsImNsZWFudXAiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/use-merged-ref.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/compiled/@edge-runtime/cookies/index.js":
|
||
/*!************************************************************************!*\
|
||
!*** ./node_modules/next/dist/compiled/@edge-runtime/cookies/index.js ***!
|
||
\************************************************************************/
|
||
/***/ ((module) => {
|
||
|
||
"use strict";
|
||
eval("\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n RequestCookies: () => RequestCookies,\n ResponseCookies: () => ResponseCookies,\n parseCookie: () => parseCookie,\n parseSetCookie: () => parseSetCookie,\n stringifyCookie: () => stringifyCookie\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/serialize.ts\nfunction stringifyCookie(c) {\n var _a;\n const attrs = [\n \"path\" in c && c.path && `Path=${c.path}`,\n \"expires\" in c && (c.expires || c.expires === 0) && `Expires=${(typeof c.expires === \"number\" ? new Date(c.expires) : c.expires).toUTCString()}`,\n \"maxAge\" in c && typeof c.maxAge === \"number\" && `Max-Age=${c.maxAge}`,\n \"domain\" in c && c.domain && `Domain=${c.domain}`,\n \"secure\" in c && c.secure && \"Secure\",\n \"httpOnly\" in c && c.httpOnly && \"HttpOnly\",\n \"sameSite\" in c && c.sameSite && `SameSite=${c.sameSite}`,\n \"partitioned\" in c && c.partitioned && \"Partitioned\",\n \"priority\" in c && c.priority && `Priority=${c.priority}`\n ].filter(Boolean);\n const stringified = `${c.name}=${encodeURIComponent((_a = c.value) != null ? _a : \"\")}`;\n return attrs.length === 0 ? stringified : `${stringified}; ${attrs.join(\"; \")}`;\n}\nfunction parseCookie(cookie) {\n const map = /* @__PURE__ */ new Map();\n for (const pair of cookie.split(/; */)) {\n if (!pair)\n continue;\n const splitAt = pair.indexOf(\"=\");\n if (splitAt === -1) {\n map.set(pair, \"true\");\n continue;\n }\n const [key, value] = [pair.slice(0, splitAt), pair.slice(splitAt + 1)];\n try {\n map.set(key, decodeURIComponent(value != null ? value : \"true\"));\n } catch {\n }\n }\n return map;\n}\nfunction parseSetCookie(setCookie) {\n if (!setCookie) {\n return void 0;\n }\n const [[name, value], ...attributes] = parseCookie(setCookie);\n const {\n domain,\n expires,\n httponly,\n maxage,\n path,\n samesite,\n secure,\n partitioned,\n priority\n } = Object.fromEntries(\n attributes.map(([key, value2]) => [\n key.toLowerCase().replace(/-/g, \"\"),\n value2\n ])\n );\n const cookie = {\n name,\n value: decodeURIComponent(value),\n domain,\n ...expires && { expires: new Date(expires) },\n ...httponly && { httpOnly: true },\n ...typeof maxage === \"string\" && { maxAge: Number(maxage) },\n path,\n ...samesite && { sameSite: parseSameSite(samesite) },\n ...secure && { secure: true },\n ...priority && { priority: parsePriority(priority) },\n ...partitioned && { partitioned: true }\n };\n return compact(cookie);\n}\nfunction compact(t) {\n const newT = {};\n for (const key in t) {\n if (t[key]) {\n newT[key] = t[key];\n }\n }\n return newT;\n}\nvar SAME_SITE = [\"strict\", \"lax\", \"none\"];\nfunction parseSameSite(string) {\n string = string.toLowerCase();\n return SAME_SITE.includes(string) ? string : void 0;\n}\nvar PRIORITY = [\"low\", \"medium\", \"high\"];\nfunction parsePriority(string) {\n string = string.toLowerCase();\n return PRIORITY.includes(string) ? string : void 0;\n}\nfunction splitCookiesString(cookiesString) {\n if (!cookiesString)\n return [];\n var cookiesStrings = [];\n var pos = 0;\n var start;\n var ch;\n var lastComma;\n var nextStart;\n var cookiesSeparatorFound;\n function skipWhitespace() {\n while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n pos += 1;\n }\n return pos < cookiesString.length;\n }\n function notSpecialChar() {\n ch = cookiesString.charAt(pos);\n return ch !== \"=\" && ch !== \";\" && ch !== \",\";\n }\n while (pos < cookiesString.length) {\n start = pos;\n cookiesSeparatorFound = false;\n while (skipWhitespace()) {\n ch = cookiesString.charAt(pos);\n if (ch === \",\") {\n lastComma = pos;\n pos += 1;\n skipWhitespace();\n nextStart = pos;\n while (pos < cookiesString.length && notSpecialChar()) {\n pos += 1;\n }\n if (pos < cookiesString.length && cookiesString.charAt(pos) === \"=\") {\n cookiesSeparatorFound = true;\n pos = nextStart;\n cookiesStrings.push(cookiesString.substring(start, lastComma));\n start = pos;\n } else {\n pos = lastComma + 1;\n }\n } else {\n pos += 1;\n }\n }\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length));\n }\n }\n return cookiesStrings;\n}\n\n// src/request-cookies.ts\nvar RequestCookies = class {\n constructor(requestHeaders) {\n /** @internal */\n this._parsed = /* @__PURE__ */ new Map();\n this._headers = requestHeaders;\n const header = requestHeaders.get(\"cookie\");\n if (header) {\n const parsed = parseCookie(header);\n for (const [name, value] of parsed) {\n this._parsed.set(name, { name, value });\n }\n }\n }\n [Symbol.iterator]() {\n return this._parsed[Symbol.iterator]();\n }\n /**\n * The amount of cookies received from the client\n */\n get size() {\n return this._parsed.size;\n }\n get(...args) {\n const name = typeof args[0] === \"string\" ? args[0] : args[0].name;\n return this._parsed.get(name);\n }\n getAll(...args) {\n var _a;\n const all = Array.from(this._parsed);\n if (!args.length) {\n return all.map(([_, value]) => value);\n }\n const name = typeof args[0] === \"string\" ? args[0] : (_a = args[0]) == null ? void 0 : _a.name;\n return all.filter(([n]) => n === name).map(([_, value]) => value);\n }\n has(name) {\n return this._parsed.has(name);\n }\n set(...args) {\n const [name, value] = args.length === 1 ? [args[0].name, args[0].value] : args;\n const map = this._parsed;\n map.set(name, { name, value });\n this._headers.set(\n \"cookie\",\n Array.from(map).map(([_, value2]) => stringifyCookie(value2)).join(\"; \")\n );\n return this;\n }\n /**\n * Delete the cookies matching the passed name or names in the request.\n */\n delete(names) {\n const map = this._parsed;\n const result = !Array.isArray(names) ? map.delete(names) : names.map((name) => map.delete(name));\n this._headers.set(\n \"cookie\",\n Array.from(map).map(([_, value]) => stringifyCookie(value)).join(\"; \")\n );\n return result;\n }\n /**\n * Delete all the cookies in the cookies in the request.\n */\n clear() {\n this.delete(Array.from(this._parsed.keys()));\n return this;\n }\n /**\n * Format the cookies in the request as a string for logging\n */\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return `RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`;\n }\n toString() {\n return [...this._parsed.values()].map((v) => `${v.name}=${encodeURIComponent(v.value)}`).join(\"; \");\n }\n};\n\n// src/response-cookies.ts\nvar ResponseCookies = class {\n constructor(responseHeaders) {\n /** @internal */\n this._parsed = /* @__PURE__ */ new Map();\n var _a, _b, _c;\n this._headers = responseHeaders;\n const setCookie = (_c = (_b = (_a = responseHeaders.getSetCookie) == null ? void 0 : _a.call(responseHeaders)) != null ? _b : responseHeaders.get(\"set-cookie\")) != null ? _c : [];\n const cookieStrings = Array.isArray(setCookie) ? setCookie : splitCookiesString(setCookie);\n for (const cookieString of cookieStrings) {\n const parsed = parseSetCookie(cookieString);\n if (parsed)\n this._parsed.set(parsed.name, parsed);\n }\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-get CookieStore#get} without the Promise.\n */\n get(...args) {\n const key = typeof args[0] === \"string\" ? args[0] : args[0].name;\n return this._parsed.get(key);\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-getAll CookieStore#getAll} without the Promise.\n */\n getAll(...args) {\n var _a;\n const all = Array.from(this._parsed.values());\n if (!args.length) {\n return all;\n }\n const key = typeof args[0] === \"string\" ? args[0] : (_a = args[0]) == null ? void 0 : _a.name;\n return all.filter((c) => c.name === key);\n }\n has(name) {\n return this._parsed.has(name);\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-set CookieStore#set} without the Promise.\n */\n set(...args) {\n const [name, value, cookie] = args.length === 1 ? [args[0].name, args[0].value, args[0]] : args;\n const map = this._parsed;\n map.set(name, normalizeCookie({ name, value, ...cookie }));\n replace(map, this._headers);\n return this;\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-delete CookieStore#delete} without the Promise.\n */\n delete(...args) {\n const [name, options] = typeof args[0] === \"string\" ? [args[0]] : [args[0].name, args[0]];\n return this.set({ ...options, name, value: \"\", expires: /* @__PURE__ */ new Date(0) });\n }\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return `ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`;\n }\n toString() {\n return [...this._parsed.values()].map(stringifyCookie).join(\"; \");\n }\n};\nfunction replace(bag, headers) {\n headers.delete(\"set-cookie\");\n for (const [, value] of bag) {\n const serialized = stringifyCookie(value);\n headers.append(\"set-cookie\", serialized);\n }\n}\nfunction normalizeCookie(cookie = { name: \"\", value: \"\" }) {\n if (typeof cookie.expires === \"number\") {\n cookie.expires = new Date(cookie.expires);\n }\n if (cookie.maxAge) {\n cookie.expires = new Date(Date.now() + cookie.maxAge * 1e3);\n }\n if (cookie.path === null || cookie.path === void 0) {\n cookie.path = \"/\";\n }\n return cookie;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (0);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL0BlZGdlLXJ1bnRpbWUvY29va2llcy9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixrQ0FBa0M7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qiw0RkFBNEY7QUFDekg7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELGtCQUFrQixhQUFhOztBQUVuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLE9BQU87QUFDNUMsbUVBQW1FLGdGQUFnRjtBQUNuSixnRUFBZ0UsU0FBUztBQUN6RSwyQ0FBMkMsU0FBUztBQUNwRDtBQUNBO0FBQ0EsaURBQWlELFdBQVc7QUFDNUQ7QUFDQSxpREFBaUQsV0FBVztBQUM1RDtBQUNBLHlCQUF5QixPQUFPLEdBQUcscURBQXFEO0FBQ3hGLCtDQUErQyxjQUFjLEVBQUUsY0FBYyxHQUFHO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsNEJBQTRCO0FBQ2hELHFCQUFxQixnQkFBZ0I7QUFDckMsdUNBQXVDLHdCQUF3QjtBQUMvRDtBQUNBLHFCQUFxQixtQ0FBbUM7QUFDeEQsbUJBQW1CLGNBQWM7QUFDakMscUJBQXFCLG1DQUFtQztBQUN4RCx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsYUFBYTtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixhQUFhO0FBQ2pDO0FBQ0E7QUFDQSw0RUFBNEU7QUFDNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBFQUEwRTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLGlEQUFpRDtBQUM5RTtBQUNBO0FBQ0Esb0RBQW9ELE9BQU8sR0FBRyw0QkFBNEIsV0FBVztBQUNyRztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSw0RUFBNEU7QUFDbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxrRkFBa0Y7QUFDeEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sNEVBQTRFO0FBQ2xGO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLHdCQUF3QjtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sa0ZBQWtGO0FBQ3hGO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixtRUFBbUU7QUFDekY7QUFDQTtBQUNBLDhCQUE4QixpREFBaUQ7QUFDL0U7QUFDQTtBQUNBLG1FQUFtRTtBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MscUJBQXFCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sQ0FNTCIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvQGVkZ2UtcnVudGltZS9jb29raWVzL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBfX2dldE93blByb3BOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19leHBvcnQgPSAodGFyZ2V0LCBhbGwpID0+IHtcbiAgZm9yICh2YXIgbmFtZSBpbiBhbGwpXG4gICAgX19kZWZQcm9wKHRhcmdldCwgbmFtZSwgeyBnZXQ6IGFsbFtuYW1lXSwgZW51bWVyYWJsZTogdHJ1ZSB9KTtcbn07XG52YXIgX19jb3B5UHJvcHMgPSAodG8sIGZyb20sIGV4Y2VwdCwgZGVzYykgPT4ge1xuICBpZiAoZnJvbSAmJiB0eXBlb2YgZnJvbSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgZnJvbSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgZm9yIChsZXQga2V5IG9mIF9fZ2V0T3duUHJvcE5hbWVzKGZyb20pKVxuICAgICAgaWYgKCFfX2hhc093blByb3AuY2FsbCh0bywga2V5KSAmJiBrZXkgIT09IGV4Y2VwdClcbiAgICAgICAgX19kZWZQcm9wKHRvLCBrZXksIHsgZ2V0OiAoKSA9PiBmcm9tW2tleV0sIGVudW1lcmFibGU6ICEoZGVzYyA9IF9fZ2V0T3duUHJvcERlc2MoZnJvbSwga2V5KSkgfHwgZGVzYy5lbnVtZXJhYmxlIH0pO1xuICB9XG4gIHJldHVybiB0bztcbn07XG52YXIgX190b0NvbW1vbkpTID0gKG1vZCkgPT4gX19jb3B5UHJvcHMoX19kZWZQcm9wKHt9LCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KSwgbW9kKTtcblxuLy8gc3JjL2luZGV4LnRzXG52YXIgc3JjX2V4cG9ydHMgPSB7fTtcbl9fZXhwb3J0KHNyY19leHBvcnRzLCB7XG4gIFJlcXVlc3RDb29raWVzOiAoKSA9PiBSZXF1ZXN0Q29va2llcyxcbiAgUmVzcG9uc2VDb29raWVzOiAoKSA9PiBSZXNwb25zZUNvb2tpZXMsXG4gIHBhcnNlQ29va2llOiAoKSA9PiBwYXJzZUNvb2tpZSxcbiAgcGFyc2VTZXRDb29raWU6ICgpID0+IHBhcnNlU2V0Q29va2llLFxuICBzdHJpbmdpZnlDb29raWU6ICgpID0+IHN0cmluZ2lmeUNvb2tpZVxufSk7XG5tb2R1bGUuZXhwb3J0cyA9IF9fdG9Db21tb25KUyhzcmNfZXhwb3J0cyk7XG5cbi8vIHNyYy9zZXJpYWxpemUudHNcbmZ1bmN0aW9uIHN0cmluZ2lmeUNvb2tpZShjKSB7XG4gIHZhciBfYTtcbiAgY29uc3QgYXR0cnMgPSBbXG4gICAgXCJwYXRoXCIgaW4gYyAmJiBjLnBhdGggJiYgYFBhdGg9JHtjLnBhdGh9YCxcbiAgICBcImV4cGlyZXNcIiBpbiBjICYmIChjLmV4cGlyZXMgfHwgYy5leHBpcmVzID09PSAwKSAmJiBgRXhwaXJlcz0keyh0eXBlb2YgYy5leHBpcmVzID09PSBcIm51bWJlclwiID8gbmV3IERhdGUoYy5leHBpcmVzKSA6IGMuZXhwaXJlcykudG9VVENTdHJpbmcoKX1gLFxuICAgIFwibWF4QWdlXCIgaW4gYyAmJiB0eXBlb2YgYy5tYXhBZ2UgPT09IFwibnVtYmVyXCIgJiYgYE1heC1BZ2U9JHtjLm1heEFnZX1gLFxuICAgIFwiZG9tYWluXCIgaW4gYyAmJiBjLmRvbWFpbiAmJiBgRG9tYWluPSR7Yy5kb21haW59YCxcbiAgICBcInNlY3VyZVwiIGluIGMgJiYgYy5zZWN1cmUgJiYgXCJTZWN1cmVcIixcbiAgICBcImh0dHBPbmx5XCIgaW4gYyAmJiBjLmh0dHBPbmx5ICYmIFwiSHR0cE9ubHlcIixcbiAgICBcInNhbWVTaXRlXCIgaW4gYyAmJiBjLnNhbWVTaXRlICYmIGBTYW1lU2l0ZT0ke2Muc2FtZVNpdGV9YCxcbiAgICBcInBhcnRpdGlvbmVkXCIgaW4gYyAmJiBjLnBhcnRpdGlvbmVkICYmIFwiUGFydGl0aW9uZWRcIixcbiAgICBcInByaW9yaXR5XCIgaW4gYyAmJiBjLnByaW9yaXR5ICYmIGBQcmlvcml0eT0ke2MucHJpb3JpdHl9YFxuICBdLmZpbHRlcihCb29sZWFuKTtcbiAgY29uc3Qgc3RyaW5naWZpZWQgPSBgJHtjLm5hbWV9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KChfYSA9IGMudmFsdWUpICE9IG51bGwgPyBfYSA6IFwiXCIpfWA7XG4gIHJldHVybiBhdHRycy5sZW5ndGggPT09IDAgPyBzdHJpbmdpZmllZCA6IGAke3N0cmluZ2lmaWVkfTsgJHthdHRycy5qb2luKFwiOyBcIil9YDtcbn1cbmZ1bmN0aW9uIHBhcnNlQ29va2llKGNvb2tpZSkge1xuICBjb25zdCBtYXAgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICBmb3IgKGNvbnN0IHBhaXIgb2YgY29va2llLnNwbGl0KC87ICovKSkge1xuICAgIGlmICghcGFpcilcbiAgICAgIGNvbnRpbnVlO1xuICAgIGNvbnN0IHNwbGl0QXQgPSBwYWlyLmluZGV4T2YoXCI9XCIpO1xuICAgIGlmIChzcGxpdEF0ID09PSAtMSkge1xuICAgICAgbWFwLnNldChwYWlyLCBcInRydWVcIik7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgW2tleSwgdmFsdWVdID0gW3BhaXIuc2xpY2UoMCwgc3BsaXRBdCksIHBhaXIuc2xpY2Uoc3BsaXRBdCArIDEpXTtcbiAgICB0cnkge1xuICAgICAgbWFwLnNldChrZXksIGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSAhPSBudWxsID8gdmFsdWUgOiBcInRydWVcIikpO1xuICAgIH0gY2F0Y2gge1xuICAgIH1cbiAgfVxuICByZXR1cm4gbWFwO1xufVxuZnVuY3Rpb24gcGFyc2VTZXRDb29raWUoc2V0Q29va2llKSB7XG4gIGlmICghc2V0Q29va2llKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuICBjb25zdCBbW25hbWUsIHZhbHVlXSwgLi4uYXR0cmlidXRlc10gPSBwYXJzZUNvb2tpZShzZXRDb29raWUpO1xuICBjb25zdCB7XG4gICAgZG9tYWluLFxuICAgIGV4cGlyZXMsXG4gICAgaHR0cG9ubHksXG4gICAgbWF4YWdlLFxuICAgIHBhdGgsXG4gICAgc2FtZXNpdGUsXG4gICAgc2VjdXJlLFxuICAgIHBhcnRpdGlvbmVkLFxuICAgIHByaW9yaXR5XG4gIH0gPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgYXR0cmlidXRlcy5tYXAoKFtrZXksIHZhbHVlMl0pID0+IFtcbiAgICAgIGtleS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLy0vZywgXCJcIiksXG4gICAgICB2YWx1ZTJcbiAgICBdKVxuICApO1xuICBjb25zdCBjb29raWUgPSB7XG4gICAgbmFtZSxcbiAgICB2YWx1ZTogZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSxcbiAgICBkb21haW4sXG4gICAgLi4uZXhwaXJlcyAmJiB7IGV4cGlyZXM6IG5ldyBEYXRlKGV4cGlyZXMpIH0sXG4gICAgLi4uaHR0cG9ubHkgJiYgeyBodHRwT25seTogdHJ1ZSB9LFxuICAgIC4uLnR5cGVvZiBtYXhhZ2UgPT09IFwic3RyaW5nXCIgJiYgeyBtYXhBZ2U6IE51bWJlcihtYXhhZ2UpIH0sXG4gICAgcGF0aCxcbiAgICAuLi5zYW1lc2l0ZSAmJiB7IHNhbWVTaXRlOiBwYXJzZVNhbWVTaXRlKHNhbWVzaXRlKSB9LFxuICAgIC4uLnNlY3VyZSAmJiB7IHNlY3VyZTogdHJ1ZSB9LFxuICAgIC4uLnByaW9yaXR5ICYmIHsgcHJpb3JpdHk6IHBhcnNlUHJpb3JpdHkocHJpb3JpdHkpIH0sXG4gICAgLi4ucGFydGl0aW9uZWQgJiYgeyBwYXJ0aXRpb25lZDogdHJ1ZSB9XG4gIH07XG4gIHJldHVybiBjb21wYWN0KGNvb2tpZSk7XG59XG5mdW5jdGlvbiBjb21wYWN0KHQpIHtcbiAgY29uc3QgbmV3VCA9IHt9O1xuICBmb3IgKGNvbnN0IGtleSBpbiB0KSB7XG4gICAgaWYgKHRba2V5XSkge1xuICAgICAgbmV3VFtrZXldID0gdFtrZXldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbmV3VDtcbn1cbnZhciBTQU1FX1NJVEUgPSBbXCJzdHJpY3RcIiwgXCJsYXhcIiwgXCJub25lXCJdO1xuZnVuY3Rpb24gcGFyc2VTYW1lU2l0ZShzdHJpbmcpIHtcbiAgc3RyaW5nID0gc3RyaW5nLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBTQU1FX1NJVEUuaW5jbHVkZXMoc3RyaW5nKSA/IHN0cmluZyA6IHZvaWQgMDtcbn1cbnZhciBQUklPUklUWSA9IFtcImxvd1wiLCBcIm1lZGl1bVwiLCBcImhpZ2hcIl07XG5mdW5jdGlvbiBwYXJzZVByaW9yaXR5KHN0cmluZykge1xuICBzdHJpbmcgPSBzdHJpbmcudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIFBSSU9SSVRZLmluY2x1ZGVzKHN0cmluZykgPyBzdHJpbmcgOiB2b2lkIDA7XG59XG5mdW5jdGlvbiBzcGxpdENvb2tpZXNTdHJpbmcoY29va2llc1N0cmluZykge1xuICBpZiAoIWNvb2tpZXNTdHJpbmcpXG4gICAgcmV0dXJuIFtdO1xuICB2YXIgY29va2llc1N0cmluZ3MgPSBbXTtcbiAgdmFyIHBvcyA9IDA7XG4gIHZhciBzdGFydDtcbiAgdmFyIGNoO1xuICB2YXIgbGFzdENvbW1hO1xuICB2YXIgbmV4dFN0YXJ0O1xuICB2YXIgY29va2llc1NlcGFyYXRvckZvdW5kO1xuICBmdW5jdGlvbiBza2lwV2hpdGVzcGFjZSgpIHtcbiAgICB3aGlsZSAocG9zIDwgY29va2llc1N0cmluZy5sZW5ndGggJiYgL1xccy8udGVzdChjb29raWVzU3RyaW5nLmNoYXJBdChwb3MpKSkge1xuICAgICAgcG9zICs9IDE7XG4gICAgfVxuICAgIHJldHVybiBwb3MgPCBjb29raWVzU3RyaW5nLmxlbmd0aDtcbiAgfVxuICBmdW5jdGlvbiBub3RTcGVjaWFsQ2hhcigpIHtcbiAgICBjaCA9IGNvb2tpZXNTdHJpbmcuY2hhckF0KHBvcyk7XG4gICAgcmV0dXJuIGNoICE9PSBcIj1cIiAmJiBjaCAhPT0gXCI7XCIgJiYgY2ggIT09IFwiLFwiO1xuICB9XG4gIHdoaWxlIChwb3MgPCBjb29raWVzU3RyaW5nLmxlbmd0aCkge1xuICAgIHN0YXJ0ID0gcG9zO1xuICAgIGNvb2tpZXNTZXBhcmF0b3JGb3VuZCA9IGZhbHNlO1xuICAgIHdoaWxlIChza2lwV2hpdGVzcGFjZSgpKSB7XG4gICAgICBjaCA9IGNvb2tpZXNTdHJpbmcuY2hhckF0KHBvcyk7XG4gICAgICBpZiAoY2ggPT09IFwiLFwiKSB7XG4gICAgICAgIGxhc3RDb21tYSA9IHBvcztcbiAgICAgICAgcG9zICs9IDE7XG4gICAgICAgIHNraXBXaGl0ZXNwYWNlKCk7XG4gICAgICAgIG5leHRTdGFydCA9IHBvcztcbiAgICAgICAgd2hpbGUgKHBvcyA8IGNvb2tpZXNTdHJpbmcubGVuZ3RoICYmIG5vdFNwZWNpYWxDaGFyKCkpIHtcbiAgICAgICAgICBwb3MgKz0gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocG9zIDwgY29va2llc1N0cmluZy5sZW5ndGggJiYgY29va2llc1N0cmluZy5jaGFyQXQocG9zKSA9PT0gXCI9XCIpIHtcbiAgICAgICAgICBjb29raWVzU2VwYXJhdG9yRm91bmQgPSB0cnVlO1xuICAgICAgICAgIHBvcyA9IG5leHRTdGFydDtcbiAgICAgICAgICBjb29raWVzU3RyaW5ncy5wdXNoKGNvb2tpZXNTdHJpbmcuc3Vic3RyaW5nKHN0YXJ0LCBsYXN0Q29tbWEpKTtcbiAgICAgICAgICBzdGFydCA9IHBvcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwb3MgPSBsYXN0Q29tbWEgKyAxO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwb3MgKz0gMTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFjb29raWVzU2VwYXJhdG9yRm91bmQgfHwgcG9zID49IGNvb2tpZXNTdHJpbmcubGVuZ3RoKSB7XG4gICAgICBjb29raWVzU3RyaW5ncy5wdXNoKGNvb2tpZXNTdHJpbmcuc3Vic3RyaW5nKHN0YXJ0LCBjb29raWVzU3RyaW5nLmxlbmd0aCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY29va2llc1N0cmluZ3M7XG59XG5cbi8vIHNyYy9yZXF1ZXN0LWNvb2tpZXMudHNcbnZhciBSZXF1ZXN0Q29va2llcyA9IGNsYXNzIHtcbiAgY29uc3RydWN0b3IocmVxdWVzdEhlYWRlcnMpIHtcbiAgICAvKiogQGludGVybmFsICovXG4gICAgdGhpcy5fcGFyc2VkID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgICB0aGlzLl9oZWFkZXJzID0gcmVxdWVzdEhlYWRlcnM7XG4gICAgY29uc3QgaGVhZGVyID0gcmVxdWVzdEhlYWRlcnMuZ2V0KFwiY29va2llXCIpO1xuICAgIGlmIChoZWFkZXIpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlQ29va2llKGhlYWRlcik7XG4gICAgICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgcGFyc2VkKSB7XG4gICAgICAgIHRoaXMuX3BhcnNlZC5zZXQobmFtZSwgeyBuYW1lLCB2YWx1ZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcnNlZFtTeW1ib2wuaXRlcmF0b3JdKCk7XG4gIH1cbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgY29va2llcyByZWNlaXZlZCBmcm9tIHRoZSBjbGllbnRcbiAgICovXG4gIGdldCBzaXplKCkge1xuICAgIHJldHVybiB0aGlzLl9wYXJzZWQuc2l6ZTtcbiAgfVxuICBnZXQoLi4uYXJncykge1xuICAgIGNvbnN0IG5hbWUgPSB0eXBlb2YgYXJnc1swXSA9PT0gXCJzdHJpbmdcIiA/IGFyZ3NbMF0gOiBhcmdzWzBdLm5hbWU7XG4gICAgcmV0dXJuIHRoaXMuX3BhcnNlZC5nZXQobmFtZSk7XG4gIH1cbiAgZ2V0QWxsKC4uLmFyZ3MpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgYWxsID0gQXJyYXkuZnJvbSh0aGlzLl9wYXJzZWQpO1xuICAgIGlmICghYXJncy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBhbGwubWFwKChbXywgdmFsdWVdKSA9PiB2YWx1ZSk7XG4gICAgfVxuICAgIGNvbnN0IG5hbWUgPSB0eXBlb2YgYXJnc1swXSA9PT0gXCJzdHJpbmdcIiA/IGFyZ3NbMF0gOiAoX2EgPSBhcmdzWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX2EubmFtZTtcbiAgICByZXR1cm4gYWxsLmZpbHRlcigoW25dKSA9PiBuID09PSBuYW1lKS5tYXAoKFtfLCB2YWx1ZV0pID0+IHZhbHVlKTtcbiAgfVxuICBoYXMobmFtZSkge1xuICAgIHJldHVybiB0aGlzLl9wYXJzZWQuaGFzKG5hbWUpO1xuICB9XG4gIHNldCguLi5hcmdzKSB7XG4gICAgY29uc3QgW25hbWUsIHZhbHVlXSA9IGFyZ3MubGVuZ3RoID09PSAxID8gW2FyZ3NbMF0ubmFtZSwgYXJnc1swXS52YWx1ZV0gOiBhcmdzO1xuICAgIGNvbnN0IG1hcCA9IHRoaXMuX3BhcnNlZDtcbiAgICBtYXAuc2V0KG5hbWUsIHsgbmFtZSwgdmFsdWUgfSk7XG4gICAgdGhpcy5faGVhZGVycy5zZXQoXG4gICAgICBcImNvb2tpZVwiLFxuICAgICAgQXJyYXkuZnJvbShtYXApLm1hcCgoW18sIHZhbHVlMl0pID0+IHN0cmluZ2lmeUNvb2tpZSh2YWx1ZTIpKS5qb2luKFwiOyBcIilcbiAgICApO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIC8qKlxuICAgKiBEZWxldGUgdGhlIGNvb2tpZXMgbWF0Y2hpbmcgdGhlIHBhc3NlZCBuYW1lIG9yIG5hbWVzIGluIHRoZSByZXF1ZXN0LlxuICAgKi9cbiAgZGVsZXRlKG5hbWVzKSB7XG4gICAgY29uc3QgbWFwID0gdGhpcy5fcGFyc2VkO1xuICAgIGNvbnN0IHJlc3VsdCA9ICFBcnJheS5pc0FycmF5KG5hbWVzKSA/IG1hcC5kZWxldGUobmFtZXMpIDogbmFtZXMubWFwKChuYW1lKSA9PiBtYXAuZGVsZXRlKG5hbWUpKTtcbiAgICB0aGlzLl9oZWFkZXJzLnNldChcbiAgICAgIFwiY29va2llXCIsXG4gICAgICBBcnJheS5mcm9tKG1hcCkubWFwKChbXywgdmFsdWVdKSA9PiBzdHJpbmdpZnlDb29raWUodmFsdWUpKS5qb2luKFwiOyBcIilcbiAgICApO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgLyoqXG4gICAqIERlbGV0ZSBhbGwgdGhlIGNvb2tpZXMgaW4gdGhlIGNvb2tpZXMgaW4gdGhlIHJlcXVlc3QuXG4gICAqL1xuICBjbGVhcigpIHtcbiAgICB0aGlzLmRlbGV0ZShBcnJheS5mcm9tKHRoaXMuX3BhcnNlZC5rZXlzKCkpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICAvKipcbiAgICogRm9ybWF0IHRoZSBjb29raWVzIGluIHRoZSByZXF1ZXN0IGFzIGEgc3RyaW5nIGZvciBsb2dnaW5nXG4gICAqL1xuICBbU3ltYm9sLmZvcihcImVkZ2UtcnVudGltZS5pbnNwZWN0LmN1c3RvbVwiKV0oKSB7XG4gICAgcmV0dXJuIGBSZXF1ZXN0Q29va2llcyAke0pTT04uc3RyaW5naWZ5KE9iamVjdC5mcm9tRW50cmllcyh0aGlzLl9wYXJzZWQpKX1gO1xuICB9XG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBbLi4udGhpcy5fcGFyc2VkLnZhbHVlcygpXS5tYXAoKHYpID0+IGAke3YubmFtZX09JHtlbmNvZGVVUklDb21wb25lbnQodi52YWx1ZSl9YCkuam9pbihcIjsgXCIpO1xuICB9XG59O1xuXG4vLyBzcmMvcmVzcG9uc2UtY29va2llcy50c1xudmFyIFJlc3BvbnNlQ29va2llcyA9IGNsYXNzIHtcbiAgY29uc3RydWN0b3IocmVzcG9uc2VIZWFkZXJzKSB7XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIHRoaXMuX3BhcnNlZCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgdGhpcy5faGVhZGVycyA9IHJlc3BvbnNlSGVhZGVycztcbiAgICBjb25zdCBzZXRDb29raWUgPSAoX2MgPSAoX2IgPSAoX2EgPSByZXNwb25zZUhlYWRlcnMuZ2V0U2V0Q29va2llKSA9PSBudWxsID8gdm9pZCAwIDogX2EuY2FsbChyZXNwb25zZUhlYWRlcnMpKSAhPSBudWxsID8gX2IgOiByZXNwb25zZUhlYWRlcnMuZ2V0KFwic2V0LWNvb2tpZVwiKSkgIT0gbnVsbCA/IF9jIDogW107XG4gICAgY29uc3QgY29va2llU3RyaW5ncyA9IEFycmF5LmlzQXJyYXkoc2V0Q29va2llKSA/IHNldENvb2tpZSA6IHNwbGl0Q29va2llc1N0cmluZyhzZXRDb29raWUpO1xuICAgIGZvciAoY29uc3QgY29va2llU3RyaW5nIG9mIGNvb2tpZVN0cmluZ3MpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlU2V0Q29va2llKGNvb2tpZVN0cmluZyk7XG4gICAgICBpZiAocGFyc2VkKVxuICAgICAgICB0aGlzLl9wYXJzZWQuc2V0KHBhcnNlZC5uYW1lLCBwYXJzZWQpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICoge0BsaW5rIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vY29va2llLXN0b3JlLyNDb29raWVTdG9yZS1nZXQgQ29va2llU3RvcmUjZ2V0fSB3aXRob3V0IHRoZSBQcm9taXNlLlxuICAgKi9cbiAgZ2V0KC4uLmFyZ3MpIHtcbiAgICBjb25zdCBrZXkgPSB0eXBlb2YgYXJnc1swXSA9PT0gXCJzdHJpbmdcIiA/IGFyZ3NbMF0gOiBhcmdzWzBdLm5hbWU7XG4gICAgcmV0dXJuIHRoaXMuX3BhcnNlZC5nZXQoa2V5KTtcbiAgfVxuICAvKipcbiAgICoge0BsaW5rIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vY29va2llLXN0b3JlLyNDb29raWVTdG9yZS1nZXRBbGwgQ29va2llU3RvcmUjZ2V0QWxsfSB3aXRob3V0IHRoZSBQcm9taXNlLlxuICAgKi9cbiAgZ2V0QWxsKC4uLmFyZ3MpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgYWxsID0gQXJyYXkuZnJvbSh0aGlzLl9wYXJzZWQudmFsdWVzKCkpO1xuICAgIGlmICghYXJncy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBhbGw7XG4gICAgfVxuICAgIGNvbnN0IGtleSA9IHR5cGVvZiBhcmdzWzBdID09PSBcInN0cmluZ1wiID8gYXJnc1swXSA6IChfYSA9IGFyZ3NbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfYS5uYW1lO1xuICAgIHJldHVybiBhbGwuZmlsdGVyKChjKSA9PiBjLm5hbWUgPT09IGtleSk7XG4gIH1cbiAgaGFzKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyc2VkLmhhcyhuYW1lKTtcbiAgfVxuICAvKipcbiAgICoge0BsaW5rIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vY29va2llLXN0b3JlLyNDb29raWVTdG9yZS1zZXQgQ29va2llU3RvcmUjc2V0fSB3aXRob3V0IHRoZSBQcm9taXNlLlxuICAgKi9cbiAgc2V0KC4uLmFyZ3MpIHtcbiAgICBjb25zdCBbbmFtZSwgdmFsdWUsIGNvb2tpZV0gPSBhcmdzLmxlbmd0aCA9PT0gMSA/IFthcmdzWzBdLm5hbWUsIGFyZ3NbMF0udmFsdWUsIGFyZ3NbMF1dIDogYXJncztcbiAgICBjb25zdCBtYXAgPSB0aGlzLl9wYXJzZWQ7XG4gICAgbWFwLnNldChuYW1lLCBub3JtYWxpemVDb29raWUoeyBuYW1lLCB2YWx1ZSwgLi4uY29va2llIH0pKTtcbiAgICByZXBsYWNlKG1hcCwgdGhpcy5faGVhZGVycyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgLyoqXG4gICAqIHtAbGluayBodHRwczovL3dpY2cuZ2l0aHViLmlvL2Nvb2tpZS1zdG9yZS8jQ29va2llU3RvcmUtZGVsZXRlIENvb2tpZVN0b3JlI2RlbGV0ZX0gd2l0aG91dCB0aGUgUHJvbWlzZS5cbiAgICovXG4gIGRlbGV0ZSguLi5hcmdzKSB7XG4gICAgY29uc3QgW25hbWUsIG9wdGlvbnNdID0gdHlwZW9mIGFyZ3NbMF0gPT09IFwic3RyaW5nXCIgPyBbYXJnc1swXV0gOiBbYXJnc1swXS5uYW1lLCBhcmdzWzBdXTtcbiAgICByZXR1cm4gdGhpcy5zZXQoeyAuLi5vcHRpb25zLCBuYW1lLCB2YWx1ZTogXCJcIiwgZXhwaXJlczogLyogQF9fUFVSRV9fICovIG5ldyBEYXRlKDApIH0pO1xuICB9XG4gIFtTeW1ib2wuZm9yKFwiZWRnZS1ydW50aW1lLmluc3BlY3QuY3VzdG9tXCIpXSgpIHtcbiAgICByZXR1cm4gYFJlc3BvbnNlQ29va2llcyAke0pTT04uc3RyaW5naWZ5KE9iamVjdC5mcm9tRW50cmllcyh0aGlzLl9wYXJzZWQpKX1gO1xuICB9XG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBbLi4udGhpcy5fcGFyc2VkLnZhbHVlcygpXS5tYXAoc3RyaW5naWZ5Q29va2llKS5qb2luKFwiOyBcIik7XG4gIH1cbn07XG5mdW5jdGlvbiByZXBsYWNlKGJhZywgaGVhZGVycykge1xuICBoZWFkZXJzLmRlbGV0ZShcInNldC1jb29raWVcIik7XG4gIGZvciAoY29uc3QgWywgdmFsdWVdIG9mIGJhZykge1xuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBzdHJpbmdpZnlDb29raWUodmFsdWUpO1xuICAgIGhlYWRlcnMuYXBwZW5kKFwic2V0LWNvb2tpZVwiLCBzZXJpYWxpemVkKTtcbiAgfVxufVxuZnVuY3Rpb24gbm9ybWFsaXplQ29va2llKGNvb2tpZSA9IHsgbmFtZTogXCJcIiwgdmFsdWU6IFwiXCIgfSkge1xuICBpZiAodHlwZW9mIGNvb2tpZS5leHBpcmVzID09PSBcIm51bWJlclwiKSB7XG4gICAgY29va2llLmV4cGlyZXMgPSBuZXcgRGF0ZShjb29raWUuZXhwaXJlcyk7XG4gIH1cbiAgaWYgKGNvb2tpZS5tYXhBZ2UpIHtcbiAgICBjb29raWUuZXhwaXJlcyA9IG5ldyBEYXRlKERhdGUubm93KCkgKyBjb29raWUubWF4QWdlICogMWUzKTtcbiAgfVxuICBpZiAoY29va2llLnBhdGggPT09IG51bGwgfHwgY29va2llLnBhdGggPT09IHZvaWQgMCkge1xuICAgIGNvb2tpZS5wYXRoID0gXCIvXCI7XG4gIH1cbiAgcmV0dXJuIGNvb2tpZTtcbn1cbi8vIEFubm90YXRlIHRoZSBDb21tb25KUyBleHBvcnQgbmFtZXMgZm9yIEVTTSBpbXBvcnQgaW4gbm9kZTpcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICBSZXF1ZXN0Q29va2llcyxcbiAgUmVzcG9uc2VDb29raWVzLFxuICBwYXJzZUNvb2tpZSxcbiAgcGFyc2VTZXRDb29raWUsXG4gIHN0cmluZ2lmeUNvb2tpZVxufSk7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/compiled/@edge-runtime/cookies/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/compiled/safe-stable-stringify/index.js":
|
||
/*!************************************************************************!*\
|
||
!*** ./node_modules/next/dist/compiled/safe-stable-stringify/index.js ***!
|
||
\************************************************************************/
|
||
/***/ ((module) => {
|
||
|
||
eval("(function(){\"use strict\";var e={879:function(e,t){const{hasOwnProperty:n}=Object.prototype;const r=configure();r.configure=configure;r.stringify=r;r.default=r;t.stringify=r;t.configure=configure;e.exports=r;const i=/[\\u0000-\\u001f\\u0022\\u005c\\ud800-\\udfff]/;function strEscape(e){if(e.length<5e3&&!i.test(e)){return`\"${e}\"`}return JSON.stringify(e)}function sort(e,t){if(e.length>200||t){return e.sort(t)}for(let t=1;t<e.length;t++){const n=e[t];let r=t;while(r!==0&&e[r-1]>n){e[r]=e[r-1];r--}e[r]=n}return e}const f=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Object.getPrototypeOf(new Int8Array)),Symbol.toStringTag).get;function isTypedArrayWithEntries(e){return f.call(e)!==undefined&&e.length!==0}function stringifyTypedArray(e,t,n){if(e.length<n){n=e.length}const r=t===\",\"?\"\":\" \";let i=`\"0\":${r}${e[0]}`;for(let f=1;f<n;f++){i+=`${t}\"${f}\":${r}${e[f]}`}return i}function getCircularValueOption(e){if(n.call(e,\"circularValue\")){const t=e.circularValue;if(typeof t===\"string\"){return`\"${t}\"`}if(t==null){return t}if(t===Error||t===TypeError){return{toString(){throw new TypeError(\"Converting circular structure to JSON\")}}}throw new TypeError('The \"circularValue\" argument must be of type string or the value null or undefined')}return'\"[Circular]\"'}function getDeterministicOption(e){let t;if(n.call(e,\"deterministic\")){t=e.deterministic;if(typeof t!==\"boolean\"&&typeof t!==\"function\"){throw new TypeError('The \"deterministic\" argument must be of type boolean or comparator function')}}return t===undefined?true:t}function getBooleanOption(e,t){let r;if(n.call(e,t)){r=e[t];if(typeof r!==\"boolean\"){throw new TypeError(`The \"${t}\" argument must be of type boolean`)}}return r===undefined?true:r}function getPositiveIntegerOption(e,t){let r;if(n.call(e,t)){r=e[t];if(typeof r!==\"number\"){throw new TypeError(`The \"${t}\" argument must be of type number`)}if(!Number.isInteger(r)){throw new TypeError(`The \"${t}\" argument must be an integer`)}if(r<1){throw new RangeError(`The \"${t}\" argument must be >= 1`)}}return r===undefined?Infinity:r}function getItemCount(e){if(e===1){return\"1 item\"}return`${e} items`}function getUniqueReplacerSet(e){const t=new Set;for(const n of e){if(typeof n===\"string\"||typeof n===\"number\"){t.add(String(n))}}return t}function getStrictOption(e){if(n.call(e,\"strict\")){const t=e.strict;if(typeof t!==\"boolean\"){throw new TypeError('The \"strict\" argument must be of type boolean')}if(t){return e=>{let t=`Object can not safely be stringified. Received type ${typeof e}`;if(typeof e!==\"function\")t+=` (${e.toString()})`;throw new Error(t)}}}}function configure(e){e={...e};const t=getStrictOption(e);if(t){if(e.bigint===undefined){e.bigint=false}if(!(\"circularValue\"in e)){e.circularValue=Error}}const n=getCircularValueOption(e);const r=getBooleanOption(e,\"bigint\");const i=getDeterministicOption(e);const f=typeof i===\"function\"?i:undefined;const u=getPositiveIntegerOption(e,\"maximumDepth\");const o=getPositiveIntegerOption(e,\"maximumBreadth\");function stringifyFnReplacer(e,s,l,c,a,g){let p=s[e];if(typeof p===\"object\"&&p!==null&&typeof p.toJSON===\"function\"){p=p.toJSON(e)}p=c.call(s,e,p);switch(typeof p){case\"string\":return strEscape(p);case\"object\":{if(p===null){return\"null\"}if(l.indexOf(p)!==-1){return n}let e=\"\";let t=\",\";const r=g;if(Array.isArray(p)){if(p.length===0){return\"[]\"}if(u<l.length+1){return'\"[Array]\"'}l.push(p);if(a!==\"\"){g+=a;e+=`\\n${g}`;t=`,\\n${g}`}const n=Math.min(p.length,o);let i=0;for(;i<n-1;i++){const n=stringifyFnReplacer(String(i),p,l,c,a,g);e+=n!==undefined?n:\"null\";e+=t}const f=stringifyFnReplacer(String(i),p,l,c,a,g);e+=f!==undefined?f:\"null\";if(p.length-1>o){const n=p.length-o-1;e+=`${t}\"... ${getItemCount(n)} not stringified\"`}if(a!==\"\"){e+=`\\n${r}`}l.pop();return`[${e}]`}let s=Object.keys(p);const y=s.length;if(y===0){return\"{}\"}if(u<l.length+1){return'\"[Object]\"'}let d=\"\";let h=\"\";if(a!==\"\"){g+=a;t=`,\\n${g}`;d=\" \"}const $=Math.min(y,o);if(i&&!isTypedArrayWithEntries(p)){s=sort(s,f)}l.push(p);for(let n=0;n<$;n++){const r=s[n];const i=stringifyFnReplacer(r,p,l,c,a,g);if(i!==undefined){e+=`${h}${strEscape(r)}:${d}${i}`;h=t}}if(y>o){const n=y-o;e+=`${h}\"...\":${d}\"${getItemCount(n)} not stringified\"`;h=t}if(a!==\"\"&&h.length>1){e=`\\n${g}${e}\\n${r}`}l.pop();return`{${e}}`}case\"number\":return isFinite(p)?String(p):t?t(p):\"null\";case\"boolean\":return p===true?\"true\":\"false\";case\"undefined\":return undefined;case\"bigint\":if(r){return String(p)}default:return t?t(p):undefined}}function stringifyArrayReplacer(e,i,f,s,l,c){if(typeof i===\"object\"&&i!==null&&typeof i.toJSON===\"function\"){i=i.toJSON(e)}switch(typeof i){case\"string\":return strEscape(i);case\"object\":{if(i===null){return\"null\"}if(f.indexOf(i)!==-1){return n}const e=c;let t=\"\";let r=\",\";if(Array.isArray(i)){if(i.length===0){return\"[]\"}if(u<f.length+1){return'\"[Array]\"'}f.push(i);if(l!==\"\"){c+=l;t+=`\\n${c}`;r=`,\\n${c}`}const n=Math.min(i.length,o);let a=0;for(;a<n-1;a++){const e=stringifyArrayReplacer(String(a),i[a],f,s,l,c);t+=e!==undefined?e:\"null\";t+=r}const g=stringifyArrayReplacer(String(a),i[a],f,s,l,c);t+=g!==undefined?g:\"null\";if(i.length-1>o){const e=i.length-o-1;t+=`${r}\"... ${getItemCount(e)} not stringified\"`}if(l!==\"\"){t+=`\\n${e}`}f.pop();return`[${t}]`}f.push(i);let a=\"\";if(l!==\"\"){c+=l;r=`,\\n${c}`;a=\" \"}let g=\"\";for(const e of s){const n=stringifyArrayReplacer(e,i[e],f,s,l,c);if(n!==undefined){t+=`${g}${strEscape(e)}:${a}${n}`;g=r}}if(l!==\"\"&&g.length>1){t=`\\n${c}${t}\\n${e}`}f.pop();return`{${t}}`}case\"number\":return isFinite(i)?String(i):t?t(i):\"null\";case\"boolean\":return i===true?\"true\":\"false\";case\"undefined\":return undefined;case\"bigint\":if(r){return String(i)}default:return t?t(i):undefined}}function stringifyIndent(e,s,l,c,a){switch(typeof s){case\"string\":return strEscape(s);case\"object\":{if(s===null){return\"null\"}if(typeof s.toJSON===\"function\"){s=s.toJSON(e);if(typeof s!==\"object\"){return stringifyIndent(e,s,l,c,a)}if(s===null){return\"null\"}}if(l.indexOf(s)!==-1){return n}const t=a;if(Array.isArray(s)){if(s.length===0){return\"[]\"}if(u<l.length+1){return'\"[Array]\"'}l.push(s);a+=c;let e=`\\n${a}`;const n=`,\\n${a}`;const r=Math.min(s.length,o);let i=0;for(;i<r-1;i++){const t=stringifyIndent(String(i),s[i],l,c,a);e+=t!==undefined?t:\"null\";e+=n}const f=stringifyIndent(String(i),s[i],l,c,a);e+=f!==undefined?f:\"null\";if(s.length-1>o){const t=s.length-o-1;e+=`${n}\"... ${getItemCount(t)} not stringified\"`}e+=`\\n${t}`;l.pop();return`[${e}]`}let r=Object.keys(s);const g=r.length;if(g===0){return\"{}\"}if(u<l.length+1){return'\"[Object]\"'}a+=c;const p=`,\\n${a}`;let y=\"\";let d=\"\";let h=Math.min(g,o);if(isTypedArrayWithEntries(s)){y+=stringifyTypedArray(s,p,o);r=r.slice(s.length);h-=s.length;d=p}if(i){r=sort(r,f)}l.push(s);for(let e=0;e<h;e++){const t=r[e];const n=stringifyIndent(t,s[t],l,c,a);if(n!==undefined){y+=`${d}${strEscape(t)}: ${n}`;d=p}}if(g>o){const e=g-o;y+=`${d}\"...\": \"${getItemCount(e)} not stringified\"`;d=p}if(d!==\"\"){y=`\\n${a}${y}\\n${t}`}l.pop();return`{${y}}`}case\"number\":return isFinite(s)?String(s):t?t(s):\"null\";case\"boolean\":return s===true?\"true\":\"false\";case\"undefined\":return undefined;case\"bigint\":if(r){return String(s)}default:return t?t(s):undefined}}function stringifySimple(e,s,l){switch(typeof s){case\"string\":return strEscape(s);case\"object\":{if(s===null){return\"null\"}if(typeof s.toJSON===\"function\"){s=s.toJSON(e);if(typeof s!==\"object\"){return stringifySimple(e,s,l)}if(s===null){return\"null\"}}if(l.indexOf(s)!==-1){return n}let t=\"\";const r=s.length!==undefined;if(r&&Array.isArray(s)){if(s.length===0){return\"[]\"}if(u<l.length+1){return'\"[Array]\"'}l.push(s);const e=Math.min(s.length,o);let n=0;for(;n<e-1;n++){const e=stringifySimple(String(n),s[n],l);t+=e!==undefined?e:\"null\";t+=\",\"}const r=stringifySimple(String(n),s[n],l);t+=r!==undefined?r:\"null\";if(s.length-1>o){const e=s.length-o-1;t+=`,\"... ${getItemCount(e)} not stringified\"`}l.pop();return`[${t}]`}let c=Object.keys(s);const a=c.length;if(a===0){return\"{}\"}if(u<l.length+1){return'\"[Object]\"'}let g=\"\";let p=Math.min(a,o);if(r&&isTypedArrayWithEntries(s)){t+=stringifyTypedArray(s,\",\",o);c=c.slice(s.length);p-=s.length;g=\",\"}if(i){c=sort(c,f)}l.push(s);for(let e=0;e<p;e++){const n=c[e];const r=stringifySimple(n,s[n],l);if(r!==undefined){t+=`${g}${strEscape(n)}:${r}`;g=\",\"}}if(a>o){const e=a-o;t+=`${g}\"...\":\"${getItemCount(e)} not stringified\"`}l.pop();return`{${t}}`}case\"number\":return isFinite(s)?String(s):t?t(s):\"null\";case\"boolean\":return s===true?\"true\":\"false\";case\"undefined\":return undefined;case\"bigint\":if(r){return String(s)}default:return t?t(s):undefined}}function stringify(e,t,n){if(arguments.length>1){let r=\"\";if(typeof n===\"number\"){r=\" \".repeat(Math.min(n,10))}else if(typeof n===\"string\"){r=n.slice(0,10)}if(t!=null){if(typeof t===\"function\"){return stringifyFnReplacer(\"\",{\"\":e},[],t,r,\"\")}if(Array.isArray(t)){return stringifyArrayReplacer(\"\",e,[],getUniqueReplacerSet(t),r,\"\")}}if(r.length!==0){return stringifyIndent(\"\",e,[],r,\"\")}}return stringifySimple(\"\",e,[])}return stringify}}};var t={};function __nccwpck_require__(n){var r=t[n];if(r!==undefined){return r.exports}var i=t[n]={exports:{}};var f=true;try{e[n](i,i.exports,__nccwpck_require__);f=false}finally{if(f)delete t[n]}return i.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var n=__nccwpck_require__(879);module.exports=n})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3NhZmUtc3RhYmxlLXN0cmluZ2lmeS9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBQSxZQUFZLGFBQWEsT0FBTyxrQkFBa0IsTUFBTSxpQkFBaUIsa0JBQWtCLG9CQUFvQixzQkFBc0IsY0FBYyxZQUFZLGNBQWMsc0JBQXNCLFlBQVksbURBQW1ELHNCQUFzQiw2QkFBNkIsVUFBVSxFQUFFLEdBQUcseUJBQXlCLG1CQUFtQixvQkFBb0IsaUJBQWlCLFlBQVksV0FBVyxLQUFLLGFBQWEsUUFBUSx1QkFBdUIsWUFBWSxJQUFJLE9BQU8sU0FBUyw0SEFBNEgsb0NBQW9DLDJDQUEyQyxvQ0FBb0MsZUFBZSxXQUFXLHVCQUF1QixhQUFhLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxJQUFJLEtBQUssTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxtQ0FBbUMsOEJBQThCLHdCQUF3Qix3QkFBd0IsVUFBVSxFQUFFLEdBQUcsWUFBWSxTQUFTLDZCQUE2QixPQUFPLFdBQVcsK0RBQStELDBHQUEwRyxxQkFBcUIsbUNBQW1DLE1BQU0sOEJBQThCLGtCQUFrQixnREFBZ0Qsb0dBQW9HLDRCQUE0QiwrQkFBK0IsTUFBTSxnQkFBZ0IsT0FBTyx5QkFBeUIsNEJBQTRCLEVBQUUsc0NBQXNDLDRCQUE0Qix1Q0FBdUMsTUFBTSxnQkFBZ0IsT0FBTyx3QkFBd0IsNEJBQTRCLEVBQUUsb0NBQW9DLHlCQUF5Qiw0QkFBNEIsRUFBRSxnQ0FBZ0MsUUFBUSw2QkFBNkIsRUFBRSwyQkFBMkIsZ0NBQWdDLHlCQUF5QixVQUFVLGVBQWUsU0FBUyxHQUFHLE9BQU8saUNBQWlDLGdCQUFnQixrQkFBa0IsNkNBQTZDLGtCQUFrQixTQUFTLDRCQUE0Qix1QkFBdUIsaUJBQWlCLHlCQUF5QixxRUFBcUUsTUFBTSxXQUFXLDZEQUE2RCxTQUFTLEVBQUUsaUNBQWlDLGFBQWEsR0FBRyxzQkFB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cnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jb21waWxlZC9zYWZlLXN0YWJsZS1zdHJpbmdpZnkvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIGU9ezg3OTpmdW5jdGlvbihlLHQpe2NvbnN0e2hhc093blByb3BlcnR5Om59PU9iamVjdC5wcm90b3R5cGU7Y29uc3Qgcj1jb25maWd1cmUoKTtyLmNvbmZpZ3VyZT1jb25maWd1cmU7ci5zdHJpbmdpZnk9cjtyLmRlZmF1bHQ9cjt0LnN0cmluZ2lmeT1yO3QuY29uZmlndXJlPWNvbmZpZ3VyZTtlLmV4cG9ydHM9cjtjb25zdCBpPS9bXFx1MDAwMC1cXHUwMDFmXFx1MDAyMlxcdTAwNWNcXHVkODAwLVxcdWRmZmZdLztmdW5jdGlvbiBzdHJFc2NhcGUoZSl7aWYoZS5sZW5ndGg8NWUzJiYhaS50ZXN0KGUpKXtyZXR1cm5gXCIke2V9XCJgfXJldHVybiBKU09OLnN0cmluZ2lmeShlKX1mdW5jdGlvbiBzb3J0KGUsdCl7aWYoZS5sZW5ndGg+MjAwfHx0KXtyZXR1cm4gZS5zb3J0KHQpfWZvcihsZXQgdD0xO3Q8ZS5sZW5ndGg7dCsrKXtjb25zdCBuPWVbdF07bGV0IHI9dDt3aGlsZShyIT09MCYmZVtyLTFdPm4pe2Vbcl09ZVtyLTFdO3ItLX1lW3JdPW59cmV0dXJuIGV9Y29uc3QgZj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5nZXRQcm90b3R5cGVPZihPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IEludDhBcnJheSkpLFN5bWJvbC50b1N0cmluZ1RhZykuZ2V0O2Z1bmN0aW9uIGlzVHlwZWRBcnJheVdpdGhFbnRyaWVzKGUpe3JldHVybiBmLmNhbGwoZSkhPT11bmRlZmluZWQmJmUubGVuZ3RoIT09MH1mdW5jdGlvbiBzdHJpbmdpZnlUeXBlZEFycmF5KGUsdCxuKXtpZihlLmxlbmd0aDxuKXtuPWUubGVuZ3RofWNvbnN0IHI9dD09PVwiLFwiP1wiXCI6XCIgXCI7bGV0IGk9YFwiMFwiOiR7cn0ke2VbMF19YDtmb3IobGV0IGY9MTtmPG47ZisrKXtpKz1gJHt0fVwiJHtmfVwiOiR7cn0ke2VbZl19YH1yZXR1cm4gaX1mdW5jdGlvbiBnZXRDaXJjdWxhclZhbHVlT3B0aW9uKGUpe2lmKG4uY2FsbChlLFwiY2lyY3VsYXJWYWx1ZVwiKSl7Y29uc3QgdD1lLmNpcmN1bGFyVmFsdWU7aWYodHlwZW9mIHQ9PT1cInN0cmluZ1wiKXtyZXR1cm5gXCIke3R9XCJgfWlmKHQ9PW51bGwpe3JldHVybiB0fWlmKHQ9PT1FcnJvcnx8dD09PVR5cGVFcnJvcil7cmV0dXJue3RvU3RyaW5nKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkNvbnZlcnRpbmcgY2lyY3VsYXIgc3RydWN0dXJlIHRvIEpTT05cIil9fX10aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjaXJjdWxhclZhbHVlXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIHN0cmluZyBvciB0aGUgdmFsdWUgbnVsbCBvciB1bmRlZmluZWQnKX1yZXR1cm4nXCJbQ2lyY3VsYXJdXCInfWZ1bmN0aW9uIGdldERldGVybWluaXN0aWNPcHRpb24oZSl7bGV0IHQ7aWYobi5jYWxsKGUsXCJkZXRlcm1pbmlzdGljXCIpKXt0PWUuZGV0ZXJtaW5pc3RpYztpZih0eXBlb2YgdCE9PVwiYm9vbGVhblwiJiZ0eXBlb2YgdCE9PVwiZnVuY3Rpb25cIil7dGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiZGV0ZXJtaW5pc3RpY1wiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBib29sZWFuIG9yIGNvbXBhcmF0b3IgZnVuY3Rpb24nKX19cmV0dXJuIHQ9PT11bmRlZmluZWQ/dHJ1ZTp0fWZ1bmN0aW9uIGdldEJvb2xlYW5PcHRpb24oZSx0KXtsZXQgcjtpZihuLmNhbGwoZSx0KSl7cj1lW3RdO2lmKHR5cGVvZiByIT09XCJib29sZWFuXCIpe3Rocm93IG5ldyBUeXBlRXJyb3IoYFRoZSBcIiR7dH1cIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbmApfX1yZXR1cm4gcj09PXVuZGVmaW5lZD90cnVlOnJ9ZnVuY3Rpb24gZ2V0UG9zaXRpdmVJbnRlZ2VyT3B0aW9uKGUsdCl7bGV0IHI7aWYobi5jYWxsKGUsdCkpe3I9ZVt0XTtpZih0eXBlb2YgciE9PVwibnVtYmVyXCIpe3Rocm93IG5ldyBUeXBlRXJyb3IoYFRoZSBcIiR7dH1cIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyYCl9aWYoIU51bWJlci5pc0ludGVnZXIocikpe3Rocm93IG5ldyBUeXBlRXJyb3IoYFRoZSBcIiR7dH1cIiBhcmd1bWVudCBtdXN0IGJlIGFuIGludGVnZXJgKX1pZihyPDEpe3Rocm93IG5ldyBSYW5nZUVycm9yKGBUaGUgXCIke3R9XCIgYXJndW1lbnQgbXVzdCBiZSA+PSAxYCl9fXJldHVybiByPT09dW5kZWZpbmVkP0luZmluaXR5OnJ9ZnVuY3Rpb24gZ2V0SXRlbUNvdW50KGUpe2lmKGU9PT0xKXtyZXR1cm5cIjEgaXRlbVwifXJldHVybmAke2V9IGl0ZW1zYH1mdW5jdGlvbiBnZXRVbmlxdWVSZXBsYWNlclNldChlKXtjb25zdCB0PW5ldyBTZXQ7Zm9yKGNvbnN0IG4gb2YgZSl7aWYodHlwZW9mIG49PT1cInN0cmluZ1wifHx0eXBlb2Ygbj09PVwibnVtYmVyXCIpe3QuYWRkKFN0cmluZyhuKSl9fXJldHVybiB0fWZ1bmN0aW9uIGdldFN0cmljdE9wdGlvbihlKXtpZihuLmNhbGwoZSxcInN0cmljdFwiKSl7Y29uc3QgdD1lLnN0cmljdDtpZih0eXBlb2YgdCE9PVwiYm9vbGVhblwiKXt0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJzdHJpY3RcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbicpfWlmKHQpe3JldHVybiBlPT57bGV0IHQ9YE9iamVjdCBjYW4gbm90IHNhZmVseSBiZSBzdHJpbmdpZmllZC4gUmVjZWl2ZWQgdHlwZSAke3R5cGVvZiBlfWA7aWYodHlwZW9mIGUhPT1cImZ1bmN0aW9uXCIpdCs9YCAoJHtlLnRvU3RyaW5nKCl9KWA7dGhyb3cgbmV3IEVycm9yKHQpfX19fWZ1bmN0aW9uIGNvbmZpZ3VyZShlKXtlPXsuLi5lfTtjb25zdCB0PWdldFN0cmljdE9wdGlvbihlKTtpZih0KXtpZihlLmJpZ2ludD09PXVuZGVmaW5lZCl7ZS5iaWdpbnQ9ZmFsc2V9aWYoIShcImNpcmN1bGFyVmFsdWVcImluIGUpKXtlLmNpcmN1bGFyVmFsdWU9RXJyb3J9fWNvbnN0IG49Z2V0Q2lyY3VsYXJWYWx1ZU9wdGlvbihlKTtjb25zdCByPWdldEJvb2xlYW5PcHRpb24oZSxcImJpZ2ludFwiKTtjb25zdCBpPWdldERldGVybWluaXN0aWNPcHRpb24oZSk7Y29uc3QgZj10eXBlb2YgaT09PVwiZnVuY3Rpb25cIj9pOnVuZGVmaW5lZDtjb25zdCB1PWdldFBvc2l0aXZlSW50ZWdlck9wdGlvbihlLFwibWF4aW11bURlcHRoXCIpO2NvbnN0IG89Z2V0UG9zaXRpdmVJbnRlZ2VyT3B0aW9uKGUsXCJtYXhpbXVtQnJlYWR0aFwiKTtmdW5jdGlvbiBzdHJpbmdpZnlGblJlcGxhY2VyKGUscyxsLGMsYSxnKXtsZXQgcD1zW2VdO2lmKHR5cGVvZiBwPT09XCJvYmplY3RcIiYmcCE9PW51bGwmJnR5cGVvZiBwLnRvSlNPTj09PVwiZnVuY3Rpb25cIil7cD1wLnRvSlNPTihlKX1wPWMuY2FsbChzLGUscCk7c3dpdGNoKHR5cGVvZiBwKXtjYXNlXCJzdHJpbmdcIjpyZXR1cm4gc3RyRXNjYXBlKHApO2Nhc2VcIm9iamVjdFwiOntpZihwPT09bnVsbCl7cmV0dXJuXCJudWxsXCJ9aWYobC5pbmRleE9mKHApIT09LTEpe3JldHVybiBufWxldCBlPVwiXCI7bGV0IHQ9XCIsXCI7Y29uc3Qgcj1nO2lmKEFycmF5LmlzQXJyYXkocCkpe2lmKHAubGVuZ3RoPT09MCl7cmV0dXJuXCJbXVwifWlmKHU8bC5sZW5ndGgrMSl7cmV0dXJuJ1wiW0FycmF5XVwiJ31sLnB1c2gocCk7aWYoYSE9PVwiXCIpe2crPWE7ZSs9YFxcbiR7Z31gO3Q9YCxcXG4ke2d9YH1jb25zdCBuPU1hdGgubWluKHAubGVuZ3RoLG8pO2xldCBpPTA7Zm9yKDtpPG4tMTtpKyspe2NvbnN0IG49c3RyaW5naWZ5Rm5SZXBsYWNlcihTdHJpbmcoaSkscCxsLGMsYSxnKTtlKz1uIT09dW5kZWZpbmVkP246XCJudWxsXCI7ZSs9dH1jb25zdCBmPXN0cmluZ2lmeUZuUmVwbGFjZXIoU3RyaW5nKGkpLHAsbCxjLGEsZyk7ZSs9ZiE9PXVuZGVmaW5lZD9mOlwibnVsbFwiO2lmKHAubGVuZ3RoLTE+byl7Y29uc3Qgbj1wLmxlbmd0aC1vLTE7ZSs9YCR7dH1cIi4uLiAke2dldEl0ZW1Db3VudChuKX0gbm90IHN0cmluZ2lmaWVkXCJgfWlmKGEhPT1cIlwiKXtlKz1gXFxuJHtyfWB9bC5wb3AoKTtyZXR1cm5gWyR7ZX1dYH1sZXQgcz1PYmplY3Qua2V5cyhwKTtjb25zdCB5PXMubGVuZ3RoO2lmKHk9PT0wKXtyZXR1cm5cInt9XCJ9aWYodTxsLmxlbmd0aCsxKXtyZXR1cm4nXCJbT2JqZWN0XVwiJ31sZXQgZD1cIlwiO2xldCBoPVwiXCI7aWYoYSE9PVwiXCIpe2crPWE7dD1gLFxcbiR7Z31gO2Q9XCIgXCJ9Y29uc3QgJD1NYXRoLm1pbih5LG8pO2lmKGkmJiFpc1R5cGVkQXJyYXlXaXRoRW50cmllcyhwKSl7cz1zb3J0KHMsZil9bC5wdXNoKHApO2ZvcihsZXQgbj0wO248JDtuKyspe2NvbnN0IHI9c1tuXTtjb25zdCBpPXN0cmluZ2lmeUZuUmVwbGFjZXIocixwLGwsYyxhLGcpO2lmKGkhPT11bmRlZmluZWQpe2UrPWAke2h9JHtzdHJFc2NhcGUocil9OiR7ZH0ke2l9YDtoPXR9fWlmKHk+byl7Y29uc3Qgbj15LW87ZSs9YCR7aH1cIi4uLlwiOiR7ZH1cIiR7Z2V0SXRlbUNvdW50KG4pfSBub3Qgc3RyaW5naWZpZWRcImA7aD10fWlmKGEhPT1cIlwiJiZoLmxlbmd0aD4xKXtlPWBcXG4ke2d9JHtlfVxcbiR7cn1gfWwucG9wKCk7cmV0dXJuYHske2V9fWB9Y2FzZVwibnVtYmVyXCI6cmV0dXJuIGlzRmluaXRlKHApP1N0cmluZyhwKTp0P3QocCk6XCJudWxsXCI7Y2FzZVwiYm9vbGVhblwiOnJldHVybiBwPT09dHJ1ZT9cInRydWVcIjpcImZhbHNlXCI7Y2FzZVwidW5kZWZpbmVkXCI6cmV0dXJuIHVuZGVmaW5lZDtjYXNlXCJiaWdpbnRcIjppZihyKXtyZXR1cm4gU3RyaW5nKHApfWRlZmF1bHQ6cmV0dXJuIHQ/dChwKTp1bmRlZmluZWR9fWZ1bmN0aW9uIHN0cmluZ2lmeUFycmF5UmVwbGFjZXIoZSxpLGYscyxsLGMpe2lmKHR5cGVvZiBpPT09XCJvYmplY3RcIiYmaSE9PW51bGwmJnR5cGVvZiBpLnRvSlNPTj09PVwiZnVuY3Rpb25cIil7aT1pLnRvSlNPTihlKX1zd2l0Y2godHlwZW9mIGkpe2Nhc2VcInN0cmluZ1wiOnJldHVybiBzdHJFc2NhcGUoaSk7Y2FzZVwib2JqZWN0XCI6e2lmKGk9PT1udWxsKXtyZXR1cm5cIm51bGxcIn1pZihmLmluZGV4T2YoaSkhPT0tMSl7cmV0dXJuIG59Y29uc3QgZT1jO2xldCB0PVwiXCI7bGV0IHI9XCIsXCI7aWYoQXJyYXkuaXNBcnJheShpKSl7aWYoaS5sZW5ndGg9PT0wKXtyZXR1cm5cIltdXCJ9aWYodTxmLmxlbmd0aCsxKXtyZXR1cm4nXCJbQXJyYXldXCInfWYucHVzaChpKTtpZihsIT09XCJcIil7Yys9bDt0Kz1gXFxuJHtjfWA7cj1gLFxcbiR7Y31gfWNvbnN0IG49TWF0aC5taW4oaS5sZW5ndGgsbyk7bGV0IGE9MDtmb3IoO2E8bi0xO2ErKyl7Y29uc3QgZT1zdHJpbmdpZnlBcnJheVJlcGxhY2VyKFN0cmluZyhhKSxpW2FdLGYscyxsLGMpO3QrPWUhPT11bmRlZmluZWQ/ZTpcIm51bGxcIjt0Kz1yfWNvbnN0IGc9c3RyaW5naWZ5QXJyYXlSZXBsYWNlcihTdHJpbmcoYSksaVthXSxmLHMsbCxjKTt0Kz1nIT09dW5kZWZpbmVkP2c6XCJudWxsXCI7aWYoaS5sZW5ndGgtMT5vKXtjb25zdCBlPWkubGVuZ3RoLW8tMTt0Kz1gJHtyfVwiLi4uICR7Z2V0SXRlbUNvdW50KGUpfSBub3Qgc3RyaW5naWZpZWRcImB9aWYobCE9PVwiXCIpe3QrPWBcXG4ke2V9YH1mLnBvcCgpO3JldHVybmBbJHt0fV1gfWYucHVzaChpKTtsZXQgYT1cIlwiO2lmKGwhPT1cIlwiKXtjKz1sO3I9YCxcXG4ke2N9YDthPVwiIFwifWxldCBnPVwiXCI7Zm9yKGNvbnN0IGUgb2Ygcyl7Y29uc3Qgbj1zdHJpbmdpZnlBcnJheVJlcGxhY2VyKGUsaVtlXSxmLHMsbCxjKTtpZihuIT09dW5kZWZpbmVkKXt0Kz1gJHtnfSR7c3RyRXNjYXBlKGUpfToke2F9JHtufWA7Zz1yfX1pZihsIT09XCJcIiYmZy5sZW5ndGg+MSl7dD1gXFxuJHtjfSR7dH1cXG4ke2V9YH1mLnBvcCgpO3JldHVybmB7JHt0fX1gfWNhc2VcIm51bWJlclwiOnJldHVybiBpc0Zpbml0ZShpKT9TdHJpbmcoaSk6dD90KGkpOlwibnVsbFwiO2Nhc2VcImJvb2xlYW5cIjpyZXR1cm4gaT09PXRydWU/XCJ0cnVlXCI6XCJmYWxzZVwiO2Nhc2VcInVuZGVmaW5lZFwiOnJldHVybiB1bmRlZmluZWQ7Y2FzZVwiYmlnaW50XCI6aWYocil7cmV0dXJuIFN0cmluZyhpKX1kZWZhdWx0OnJldHVybiB0P3QoaSk6dW5kZWZpbmVkfX1mdW5jdGlvbiBzdHJpbmdpZnlJbmRlbnQoZSxzLGwsYyxhKXtzd2l0Y2godHlwZW9mIHMpe2Nhc2VcInN0cmluZ1wiOnJldHVybiBzdHJFc2NhcGUocyk7Y2FzZVwib2JqZWN0XCI6e2lmKHM9PT1udWxsKXtyZXR1cm5cIm51bGxcIn1pZih0eXBlb2Ygcy50b0pTT049PT1cImZ1bmN0aW9uXCIpe3M9cy50b0pTT04oZSk7aWYodHlwZW9mIHMhPT1cIm9iamVjdFwiKXtyZXR1cm4gc3RyaW5naWZ5SW5kZW50KGUscyxsLGMsYSl9aWYocz09PW51bGwpe3JldHVyblwibnVsbFwifX1pZihsLmluZGV4T2YocykhPT0tMSl7cmV0dXJuIG59Y29uc3QgdD1hO2lmKEFycmF5LmlzQXJyYXkocykpe2lmKHMubGVuZ3RoPT09MCl7cmV0dXJuXCJbXVwifWlmKHU8bC5sZW5ndGgrMSl7cmV0dXJuJ1wiW0FycmF5XVwiJ31sLnB1c2gocyk7YSs9YztsZXQgZT1gXFxuJHthfWA7Y29uc3Qgbj1gLFxcbiR7YX1gO2NvbnN0IHI9TWF0aC5taW4ocy5sZW5ndGgsbyk7bGV0IGk9MDtmb3IoO2k8ci0xO2krKyl7Y29uc3QgdD1zdHJpbmdpZnlJbmRlbnQoU3RyaW5nKGkpLHNbaV0sbCxjLGEpO2UrPXQhPT11bmRlZmluZWQ/dDpcIm51bGxcIjtlKz1ufWNvbnN0IGY9c3RyaW5naWZ5SW5kZW50KFN0cmluZyhpKSxzW2ldLGwsYyxhKTtlKz1mIT09dW5kZWZpbmVkP2Y6XCJudWxsXCI7aWYocy5sZW5ndGgtMT5vKXtjb25zdCB0PXMubGVuZ3RoLW8tMTtlKz1gJHtufVwiLi4uICR7Z2V0SXRlbUNvdW50KHQpfSBub3Qgc3RyaW5naWZpZWRcImB9ZSs9YFxcbiR7dH1gO2wucG9wKCk7cmV0dXJuYFske2V9XWB9bGV0IHI9T2JqZWN0LmtleXMocyk7Y29uc3QgZz1yLmxlbmd0aDtpZihnPT09MCl7cmV0dXJuXCJ7fVwifWlmKHU8bC5sZW5ndGgrMSl7cmV0dXJuJ1wiW09iamVjdF1cIid9YSs9Yztjb25zdCBwPWAsXFxuJHthfWA7bGV0IHk9XCJcIjtsZXQgZD1cIlwiO2xldCBoPU1hdGgubWluKGcsbyk7aWYoaXNUeXBlZEFycmF5V2l0aEVudHJpZXMocykpe3krPXN0cmluZ2lmeVR5cGVkQXJyYXkocyxwLG8pO3I9ci5zbGljZShzLmxlbmd0aCk7aC09cy5sZW5ndGg7ZD1wfWlmKGkpe3I9c29ydChyLGYpfWwucHVzaChzKTtmb3IobGV0IGU9MDtlPGg7ZSsrKXtjb25zdCB0PXJbZV07Y29uc3Qgbj1zdHJpbmdpZnlJbmRlbnQodCxzW3RdLGwsYyxhKTtpZihuIT09dW5kZWZpbmVkKXt5Kz1gJHtkfSR7c3RyRXNjYXBlKHQpfTogJHtufWA7ZD1wfX1pZihnPm8pe2NvbnN0IGU9Zy1vO3krPWAke2R9XCIuLi5cIjogXCIke2dldEl0ZW1Db3VudChlKX0gbm90IHN0cmluZ2lmaWVkXCJgO2Q9cH1pZihkIT09XCJcIil7eT1gXFxuJHthfSR7eX1cXG4ke3R9YH1sLnBvcCgpO3JldHVybmB7JHt5fX1gfWNhc2VcIm51bWJlclwiOnJldHVybiBpc0Zpbml0ZShzKT9TdHJpbmcocyk6dD90KHMpOlwibnVsbFwiO2Nhc2VcImJvb2xlYW5cIjpyZXR1cm4gcz09PXRydWU/XCJ0cnVlXCI6XCJmYWxzZVwiO2Nhc2VcInVuZGVmaW5lZFwiOnJldHVybiB1bmRlZmluZWQ7Y2FzZVwiYmlnaW50XCI6aWYocil7cmV0dXJuIFN0cmluZyhzKX1kZWZhdWx0OnJldHVybiB0P3Qocyk6dW5kZWZpbmVkfX1mdW5jdGlvbiBzdHJpbmdpZnlTaW1wbGUoZSxzLGwpe3N3aXRjaCh0eXBlb2Ygcyl7Y2FzZVwic3RyaW5nXCI6cmV0dXJuIHN0ckVzY2FwZShzKTtjYXNlXCJvYmplY3RcIjp7aWYocz09PW51bGwpe3JldHVyblwibnVsbFwifWlmKHR5cGVvZiBzLnRvSlNPTj09PVwiZnVuY3Rpb25cIil7cz1zLnRvSlNPTihlKTtpZih0eXBlb2YgcyE9PVwib2JqZWN0XCIpe3JldHVybiBzdHJpbmdpZnlTaW1wbGUoZSxzLGwpfWlmKHM9PT1udWxsKXtyZXR1cm5cIm51bGxcIn19aWYobC5pbmRleE9mKHMpIT09LTEpe3JldHVybiBufWxldCB0PVwiXCI7Y29uc3Qgcj1zLmxlbmd0aCE9PXVuZGVmaW5lZDtpZihyJiZBcnJheS5pc0FycmF5KHMpKXtpZihzLmxlbmd0aD09PTApe3JldHVyblwiW11cIn1pZih1PGwubGVuZ3RoKzEpe3JldHVybidcIltBcnJheV1cIid9bC5wdXNoKHMpO2NvbnN0IGU9TWF0aC5taW4ocy5sZW5ndGgsbyk7bGV0IG49MDtmb3IoO248ZS0xO24rKyl7Y29uc3QgZT1zdHJpbmdpZnlTaW1wbGUoU3RyaW5nKG4pLHNbbl0sbCk7dCs9ZSE9PXVuZGVmaW5lZD9lOlwibnVsbFwiO3QrPVwiLFwifWNvbnN0IHI9c3RyaW5naWZ5U2ltcGxlKFN0cmluZyhuKSxzW25dLGwpO3QrPXIhPT11bmRlZmluZWQ/cjpcIm51bGxcIjtpZihzLmxlbmd0aC0xPm8pe2NvbnN0IGU9cy5sZW5ndGgtby0xO3QrPWAsXCIuLi4gJHtnZXRJdGVtQ291bnQoZSl9IG5vdCBzdHJpbmdpZmllZFwiYH1sLnBvcCgpO3JldHVybmBbJHt0fV1gfWxldCBjPU9iamVjdC5rZXlzKHMpO2NvbnN0IGE9Yy5sZW5ndGg7aWYoYT09PTApe3JldHVyblwie31cIn1pZih1PGwubGVuZ3RoKzEpe3JldHVybidcIltPYmplY3RdXCInfWxldCBnPVwiXCI7bGV0IHA9TWF0aC5taW4oYSxvKTtpZihyJiZpc1R5cGVkQXJyYXlXaXRoRW50cmllcyhzKSl7dCs9c3RyaW5naWZ5VHlwZWRBcnJheShzLFwiLFwiLG8pO2M9Yy5zbGljZShzLmxlbmd0aCk7cC09cy5sZW5ndGg7Zz1cIixcIn1pZihpKXtjPXNvcnQoYyxmKX1sLnB1c2gocyk7Zm9yKGxldCBlPTA7ZTxwO2UrKyl7Y29uc3Qgbj1jW2VdO2NvbnN0IHI9c3RyaW5naWZ5U2ltcGxlKG4sc1tuXSxsKTtpZihyIT09dW5kZWZpbmVkKXt0Kz1gJHtnfSR7c3RyRXNjYXBlKG4pfToke3J9YDtnPVwiLFwifX1pZihhPm8pe2NvbnN0IGU9YS1vO3QrPWAke2d9XCIuLi5cIjpcIiR7Z2V0SXRlbUNvdW50KGUpfSBub3Qgc3RyaW5naWZpZWRcImB9bC5wb3AoKTtyZXR1cm5geyR7dH19YH1jYXNlXCJudW1iZXJcIjpyZXR1cm4gaXNGaW5pdGUocyk/U3RyaW5nKHMpOnQ/dChzKTpcIm51bGxcIjtjYXNlXCJib29sZWFuXCI6cmV0dXJuIHM9PT10cnVlP1widHJ1ZVwiOlwiZmFsc2VcIjtjYXNlXCJ1bmRlZmluZWRcIjpyZXR1cm4gdW5kZWZpbmVkO2Nhc2VcImJpZ2ludFwiOmlmKHIpe3JldHVybiBTdHJpbmcocyl9ZGVmYXVsdDpyZXR1cm4gdD90KHMpOnVuZGVmaW5lZH19ZnVuY3Rpb24gc3RyaW5naWZ5KGUsdCxuKXtpZihhcmd1bWVudHMubGVuZ3RoPjEpe2xldCByPVwiXCI7aWYodHlwZW9mIG49PT1cIm51bWJlclwiKXtyPVwiIFwiLnJlcGVhdChNYXRoLm1pbihuLDEwKSl9ZWxzZSBpZih0eXBlb2Ygbj09PVwic3RyaW5nXCIpe3I9bi5zbGljZSgwLDEwKX1pZih0IT1udWxsKXtpZih0eXBlb2YgdD09PVwiZnVuY3Rpb25cIil7cmV0dXJuIHN0cmluZ2lmeUZuUmVwbGFjZXIoXCJcIix7XCJcIjplfSxbXSx0LHIsXCJcIil9aWYoQXJyYXkuaXNBcnJheSh0KSl7cmV0dXJuIHN0cmluZ2lmeUFycmF5UmVwbGFjZXIoXCJcIixlLFtdLGdldFVuaXF1ZVJlcGxhY2VyU2V0KHQpLHIsXCJcIil9fWlmKHIubGVuZ3RoIT09MCl7cmV0dXJuIHN0cmluZ2lmeUluZGVudChcIlwiLGUsW10scixcIlwiKX19cmV0dXJuIHN0cmluZ2lmeVNpbXBsZShcIlwiLGUsW10pfXJldHVybiBzdHJpbmdpZnl9fX07dmFyIHQ9e307ZnVuY3Rpb24gX19uY2N3cGNrX3JlcXVpcmVfXyhuKXt2YXIgcj10W25dO2lmKHIhPT11bmRlZmluZWQpe3JldHVybiByLmV4cG9ydHN9dmFyIGk9dFtuXT17ZXhwb3J0czp7fX07dmFyIGY9dHJ1ZTt0cnl7ZVtuXShpLGkuZXhwb3J0cyxfX25jY3dwY2tfcmVxdWlyZV9fKTtmPWZhbHNlfWZpbmFsbHl7aWYoZilkZWxldGUgdFtuXX1yZXR1cm4gaS5leHBvcnRzfWlmKHR5cGVvZiBfX25jY3dwY2tfcmVxdWlyZV9fIT09XCJ1bmRlZmluZWRcIilfX25jY3dwY2tfcmVxdWlyZV9fLmFiPV9fZGlybmFtZStcIi9cIjt2YXIgbj1fX25jY3dwY2tfcmVxdWlyZV9fKDg3OSk7bW9kdWxlLmV4cG9ydHM9bn0pKCk7Il0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/compiled/safe-stable-stringify/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/compiled/strip-ansi/index.js":
|
||
/*!*************************************************************!*\
|
||
!*** ./node_modules/next/dist/compiled/strip-ansi/index.js ***!
|
||
\*************************************************************/
|
||
/***/ ((module) => {
|
||
|
||
"use strict";
|
||
eval("\n(()=>{\n \"use strict\";\n var e = {\n 511: (e)=>{\n e.exports = ({ onlyFirst: e = false } = {})=>{\n const r = [\n \"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)\",\n \"(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))\"\n ].join(\"|\");\n return new RegExp(r, e ? undefined : \"g\");\n };\n },\n 532: (e, r, _)=>{\n const t = _(511);\n e.exports = (e)=>typeof e === \"string\" ? e.replace(t(), \"\") : e;\n }\n };\n var r = {};\n function __nccwpck_require__(_) {\n var t = r[_];\n if (t !== undefined) {\n return t.exports;\n }\n var a = r[_] = {\n exports: {}\n };\n var n = true;\n try {\n e[_](a, a.exports, __nccwpck_require__);\n n = false;\n } finally{\n if (n) delete r[_];\n }\n return a.exports;\n }\n if (typeof __nccwpck_require__ !== \"undefined\") __nccwpck_require__.ab = __dirname + \"/\";\n var _ = __nccwpck_require__(532);\n module.exports = _;\n})();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3N0cmlwLWFuc2kvaW5kZXguanMiLCJtYXBwaW5ncyI6IjtBQUFDO0lBQUs7SUFBYSxJQUFJQSxJQUFFO1FBQUMsS0FBSUEsQ0FBQUE7WUFBSUEsRUFBRUMsT0FBTyxHQUFDLENBQUMsRUFBQ0MsV0FBVUYsSUFBRSxLQUFLLEVBQUMsR0FBQyxDQUFDLENBQUM7Z0JBQUksTUFBTUcsSUFBRTtvQkFBQztvQkFBK0g7aUJBQTJELENBQUNDLElBQUksQ0FBQztnQkFBSyxPQUFPLElBQUlDLE9BQU9GLEdBQUVILElBQUVNLFlBQVU7WUFBSTtRQUFDO1FBQUUsS0FBSSxDQUFDTixHQUFFRyxHQUFFSTtZQUFLLE1BQU1DLElBQUVELEVBQUU7WUFBS1AsRUFBRUMsT0FBTyxHQUFDRCxDQUFBQSxJQUFHLE9BQU9BLE1BQUksV0FBU0EsRUFBRVMsT0FBTyxDQUFDRCxLQUFJLE1BQUlSO1FBQUM7SUFBQztJQUFFLElBQUlHLElBQUUsQ0FBQztJQUFFLFNBQVNPLG9CQUFvQkgsQ0FBQztRQUFFLElBQUlDLElBQUVMLENBQUMsQ0FBQ0ksRUFBRTtRQUFDLElBQUdDLE1BQUlGLFdBQVU7WUFBQyxPQUFPRSxFQUFFUCxPQUFPO1FBQUE7UUFBQyxJQUFJVSxJQUFFUixDQUFDLENBQUNJLEVBQUUsR0FBQztZQUFDTixTQUFRLENBQUM7UUFBQztRQUFFLElBQUlXLElBQUU7UUFBSyxJQUFHO1lBQUNaLENBQUMsQ0FBQ08sRUFBRSxDQUFDSSxHQUFFQSxFQUFFVixPQUFPLEVBQUNTO1lBQXFCRSxJQUFFO1FBQUssU0FBUTtZQUFDLElBQUdBLEdBQUUsT0FBT1QsQ0FBQyxDQUFDSSxFQUFFO1FBQUE7UUFBQyxPQUFPSSxFQUFFVixPQUFPO0lBQUE7SUFBQyxJQUFHLE9BQU9TLHdCQUFzQixhQUFZQSxvQkFBb0JHLEVBQUUsR0FBQ0MsWUFBVTtJQUFJLElBQUlQLElBQUVHLG9CQUFvQjtJQUFLSyxPQUFPZCxPQUFPLEdBQUNNO0FBQUMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3N0cmlwLWFuc2kvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiKCgpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIGU9ezUxMTplPT57ZS5leHBvcnRzPSh7b25seUZpcnN0OmU9ZmFsc2V9PXt9KT0+e2NvbnN0IHI9W1wiW1xcXFx1MDAxQlxcXFx1MDA5Ql1bW1xcXFxdKCkjOz9dKig/Oig/Oig/Oig/OjtbLWEtekEtWlxcXFxkXFxcXC8jJi46PT8lQH5fXSspKnxbYS16QS1aXFxcXGRdKyg/OjtbLWEtekEtWlxcXFxkXFxcXC8jJi46PT8lQH5fXSopKik/XFxcXHUwMDA3KVwiLFwiKD86KD86XFxcXGR7MSw0fSg/OjtcXFxcZHswLDR9KSopP1tcXFxcZEEtUFItVFpjZi1udHFyeT0+PH5dKSlcIl0uam9pbihcInxcIik7cmV0dXJuIG5ldyBSZWdFeHAocixlP3VuZGVmaW5lZDpcImdcIil9fSw1MzI6KGUscixfKT0+e2NvbnN0IHQ9Xyg1MTEpO2UuZXhwb3J0cz1lPT50eXBlb2YgZT09PVwic3RyaW5nXCI/ZS5yZXBsYWNlKHQoKSxcIlwiKTplfX07dmFyIHI9e307ZnVuY3Rpb24gX19uY2N3cGNrX3JlcXVpcmVfXyhfKXt2YXIgdD1yW19dO2lmKHQhPT11bmRlZmluZWQpe3JldHVybiB0LmV4cG9ydHN9dmFyIGE9cltfXT17ZXhwb3J0czp7fX07dmFyIG49dHJ1ZTt0cnl7ZVtfXShhLGEuZXhwb3J0cyxfX25jY3dwY2tfcmVxdWlyZV9fKTtuPWZhbHNlfWZpbmFsbHl7aWYobilkZWxldGUgcltfXX1yZXR1cm4gYS5leHBvcnRzfWlmKHR5cGVvZiBfX25jY3dwY2tfcmVxdWlyZV9fIT09XCJ1bmRlZmluZWRcIilfX25jY3dwY2tfcmVxdWlyZV9fLmFiPV9fZGlybmFtZStcIi9cIjt2YXIgXz1fX25jY3dwY2tfcmVxdWlyZV9fKDUzMik7bW9kdWxlLmV4cG9ydHM9X30pKCk7Il0sIm5hbWVzIjpbImUiLCJleHBvcnRzIiwib25seUZpcnN0IiwiciIsImpvaW4iLCJSZWdFeHAiLCJ1bmRlZmluZWQiLCJfIiwidCIsInJlcGxhY2UiLCJfX25jY3dwY2tfcmVxdWlyZV9fIiwiYSIsIm4iLCJhYiIsIl9fZGlybmFtZSIsIm1vZHVsZSJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/compiled/strip-ansi/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/lib/constants.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/constants.js ***!
|
||
\*************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n ACTION_SUFFIX: function() {\n return ACTION_SUFFIX;\n },\n APP_DIR_ALIAS: function() {\n return APP_DIR_ALIAS;\n },\n CACHE_ONE_YEAR_SECONDS: function() {\n return CACHE_ONE_YEAR_SECONDS;\n },\n DOT_NEXT_ALIAS: function() {\n return DOT_NEXT_ALIAS;\n },\n ESLINT_DEFAULT_DIRS: function() {\n return ESLINT_DEFAULT_DIRS;\n },\n GSP_NO_RETURNED_VALUE: function() {\n return GSP_NO_RETURNED_VALUE;\n },\n GSSP_COMPONENT_MEMBER_ERROR: function() {\n return GSSP_COMPONENT_MEMBER_ERROR;\n },\n GSSP_NO_RETURNED_VALUE: function() {\n return GSSP_NO_RETURNED_VALUE;\n },\n HTML_CONTENT_TYPE_HEADER: function() {\n return HTML_CONTENT_TYPE_HEADER;\n },\n INFINITE_CACHE: function() {\n return INFINITE_CACHE;\n },\n INSTRUMENTATION_HOOK_FILENAME: function() {\n return INSTRUMENTATION_HOOK_FILENAME;\n },\n JSON_CONTENT_TYPE_HEADER: function() {\n return JSON_CONTENT_TYPE_HEADER;\n },\n MATCHED_PATH_HEADER: function() {\n return MATCHED_PATH_HEADER;\n },\n MIDDLEWARE_FILENAME: function() {\n return MIDDLEWARE_FILENAME;\n },\n MIDDLEWARE_LOCATION_REGEXP: function() {\n return MIDDLEWARE_LOCATION_REGEXP;\n },\n NEXT_BODY_SUFFIX: function() {\n return NEXT_BODY_SUFFIX;\n },\n NEXT_CACHE_IMPLICIT_TAG_ID: function() {\n return NEXT_CACHE_IMPLICIT_TAG_ID;\n },\n NEXT_CACHE_REVALIDATED_TAGS_HEADER: function() {\n return NEXT_CACHE_REVALIDATED_TAGS_HEADER;\n },\n NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER: function() {\n return NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER;\n },\n NEXT_CACHE_ROOT_PARAM_TAG_ID: function() {\n return NEXT_CACHE_ROOT_PARAM_TAG_ID;\n },\n NEXT_CACHE_SOFT_TAG_MAX_LENGTH: function() {\n return NEXT_CACHE_SOFT_TAG_MAX_LENGTH;\n },\n NEXT_CACHE_TAGS_HEADER: function() {\n return NEXT_CACHE_TAGS_HEADER;\n },\n NEXT_CACHE_TAG_MAX_ITEMS: function() {\n return NEXT_CACHE_TAG_MAX_ITEMS;\n },\n NEXT_CACHE_TAG_MAX_LENGTH: function() {\n return NEXT_CACHE_TAG_MAX_LENGTH;\n },\n NEXT_DATA_SUFFIX: function() {\n return NEXT_DATA_SUFFIX;\n },\n NEXT_INTERCEPTION_MARKER_PREFIX: function() {\n return NEXT_INTERCEPTION_MARKER_PREFIX;\n },\n NEXT_META_SUFFIX: function() {\n return NEXT_META_SUFFIX;\n },\n NEXT_NAV_DEPLOYMENT_ID_HEADER: function() {\n return NEXT_NAV_DEPLOYMENT_ID_HEADER;\n },\n NEXT_QUERY_PARAM_PREFIX: function() {\n return NEXT_QUERY_PARAM_PREFIX;\n },\n NEXT_RESUME_HEADER: function() {\n return NEXT_RESUME_HEADER;\n },\n NEXT_RESUME_STATE_LENGTH_HEADER: function() {\n return NEXT_RESUME_STATE_LENGTH_HEADER;\n },\n NON_STANDARD_NODE_ENV: function() {\n return NON_STANDARD_NODE_ENV;\n },\n PAGES_DIR_ALIAS: function() {\n return PAGES_DIR_ALIAS;\n },\n PRERENDER_REVALIDATE_HEADER: function() {\n return PRERENDER_REVALIDATE_HEADER;\n },\n PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER: function() {\n return PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER;\n },\n PROXY_FILENAME: function() {\n return PROXY_FILENAME;\n },\n PROXY_LOCATION_REGEXP: function() {\n return PROXY_LOCATION_REGEXP;\n },\n PUBLIC_DIR_MIDDLEWARE_CONFLICT: function() {\n return PUBLIC_DIR_MIDDLEWARE_CONFLICT;\n },\n ROOT_DIR_ALIAS: function() {\n return ROOT_DIR_ALIAS;\n },\n RSC_ACTION_CLIENT_WRAPPER_ALIAS: function() {\n return RSC_ACTION_CLIENT_WRAPPER_ALIAS;\n },\n RSC_ACTION_ENCRYPTION_ALIAS: function() {\n return RSC_ACTION_ENCRYPTION_ALIAS;\n },\n RSC_ACTION_PROXY_ALIAS: function() {\n return RSC_ACTION_PROXY_ALIAS;\n },\n RSC_ACTION_VALIDATE_ALIAS: function() {\n return RSC_ACTION_VALIDATE_ALIAS;\n },\n RSC_CACHE_WRAPPER_ALIAS: function() {\n return RSC_CACHE_WRAPPER_ALIAS;\n },\n RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS: function() {\n return RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS;\n },\n RSC_MOD_REF_PROXY_ALIAS: function() {\n return RSC_MOD_REF_PROXY_ALIAS;\n },\n RSC_SEGMENTS_DIR_SUFFIX: function() {\n return RSC_SEGMENTS_DIR_SUFFIX;\n },\n RSC_SEGMENT_SUFFIX: function() {\n return RSC_SEGMENT_SUFFIX;\n },\n RSC_SUFFIX: function() {\n return RSC_SUFFIX;\n },\n SERVER_PROPS_EXPORT_ERROR: function() {\n return SERVER_PROPS_EXPORT_ERROR;\n },\n SERVER_PROPS_GET_INIT_PROPS_CONFLICT: function() {\n return SERVER_PROPS_GET_INIT_PROPS_CONFLICT;\n },\n SERVER_PROPS_SSG_CONFLICT: function() {\n return SERVER_PROPS_SSG_CONFLICT;\n },\n SERVER_RUNTIME: function() {\n return SERVER_RUNTIME;\n },\n SSG_FALLBACK_EXPORT_ERROR: function() {\n return SSG_FALLBACK_EXPORT_ERROR;\n },\n SSG_GET_INITIAL_PROPS_CONFLICT: function() {\n return SSG_GET_INITIAL_PROPS_CONFLICT;\n },\n STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR: function() {\n return STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR;\n },\n TEXT_PLAIN_CONTENT_TYPE_HEADER: function() {\n return TEXT_PLAIN_CONTENT_TYPE_HEADER;\n },\n UNSTABLE_REVALIDATE_RENAME_ERROR: function() {\n return UNSTABLE_REVALIDATE_RENAME_ERROR;\n },\n WEBPACK_LAYERS: function() {\n return WEBPACK_LAYERS;\n },\n WEBPACK_RESOURCE_QUERIES: function() {\n return WEBPACK_RESOURCE_QUERIES;\n },\n WEB_SOCKET_MAX_RECONNECTIONS: function() {\n return WEB_SOCKET_MAX_RECONNECTIONS;\n }\n});\nconst TEXT_PLAIN_CONTENT_TYPE_HEADER = 'text/plain';\nconst HTML_CONTENT_TYPE_HEADER = 'text/html; charset=utf-8';\nconst JSON_CONTENT_TYPE_HEADER = 'application/json; charset=utf-8';\nconst NEXT_QUERY_PARAM_PREFIX = 'nxtP';\nconst NEXT_INTERCEPTION_MARKER_PREFIX = 'nxtI';\nconst MATCHED_PATH_HEADER = 'x-matched-path';\nconst PRERENDER_REVALIDATE_HEADER = 'x-prerender-revalidate';\nconst PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER = 'x-prerender-revalidate-if-generated';\nconst RSC_SEGMENTS_DIR_SUFFIX = '.segments';\nconst RSC_SEGMENT_SUFFIX = '.segment.rsc';\nconst RSC_SUFFIX = '.rsc';\nconst ACTION_SUFFIX = '.action';\nconst NEXT_DATA_SUFFIX = '.json';\nconst NEXT_META_SUFFIX = '.meta';\nconst NEXT_BODY_SUFFIX = '.body';\nconst NEXT_NAV_DEPLOYMENT_ID_HEADER = 'x-nextjs-deployment-id';\nconst NEXT_CACHE_TAGS_HEADER = 'x-next-cache-tags';\nconst NEXT_CACHE_REVALIDATED_TAGS_HEADER = 'x-next-revalidated-tags';\nconst NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER = 'x-next-revalidate-tag-token';\nconst NEXT_RESUME_HEADER = 'next-resume';\nconst NEXT_RESUME_STATE_LENGTH_HEADER = 'x-next-resume-state-length';\nconst NEXT_CACHE_TAG_MAX_ITEMS = 128;\nconst NEXT_CACHE_TAG_MAX_LENGTH = 256;\nconst NEXT_CACHE_SOFT_TAG_MAX_LENGTH = 1024;\nconst NEXT_CACHE_IMPLICIT_TAG_ID = '_N_T_';\nconst NEXT_CACHE_ROOT_PARAM_TAG_ID = '_N_RP_';\nconst CACHE_ONE_YEAR_SECONDS = 31536000;\nconst INFINITE_CACHE = 0xfffffffe;\nconst MIDDLEWARE_FILENAME = 'middleware';\nconst MIDDLEWARE_LOCATION_REGEXP = `(?:src/)?${MIDDLEWARE_FILENAME}`;\nconst PROXY_FILENAME = 'proxy';\nconst PROXY_LOCATION_REGEXP = `(?:src/)?${PROXY_FILENAME}`;\nconst INSTRUMENTATION_HOOK_FILENAME = 'instrumentation';\nconst PAGES_DIR_ALIAS = 'private-next-pages';\nconst DOT_NEXT_ALIAS = 'private-dot-next';\nconst ROOT_DIR_ALIAS = 'private-next-root-dir';\nconst APP_DIR_ALIAS = 'private-next-app-dir';\nconst RSC_MOD_REF_PROXY_ALIAS = 'private-next-rsc-mod-ref-proxy';\nconst RSC_ACTION_VALIDATE_ALIAS = 'private-next-rsc-action-validate';\nconst RSC_ACTION_PROXY_ALIAS = 'private-next-rsc-server-reference';\nconst RSC_CACHE_WRAPPER_ALIAS = 'private-next-rsc-cache-wrapper';\nconst RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS = 'private-next-rsc-track-dynamic-import';\nconst RSC_ACTION_ENCRYPTION_ALIAS = 'private-next-rsc-action-encryption';\nconst RSC_ACTION_CLIENT_WRAPPER_ALIAS = 'private-next-rsc-action-client-wrapper';\nconst PUBLIC_DIR_MIDDLEWARE_CONFLICT = `You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict`;\nconst SSG_GET_INITIAL_PROPS_CONFLICT = `You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps`;\nconst SERVER_PROPS_GET_INIT_PROPS_CONFLICT = `You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.`;\nconst SERVER_PROPS_SSG_CONFLICT = `You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps`;\nconst STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR = `can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props`;\nconst SERVER_PROPS_EXPORT_ERROR = `pages with \\`getServerSideProps\\` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export`;\nconst GSP_NO_RETURNED_VALUE = 'Your `getStaticProps` function did not return an object. Did you forget to add a `return`?';\nconst GSSP_NO_RETURNED_VALUE = 'Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?';\nconst UNSTABLE_REVALIDATE_RENAME_ERROR = 'The `unstable_revalidate` property is available for general use.\\n' + 'Please use `revalidate` instead.';\nconst GSSP_COMPONENT_MEMBER_ERROR = `can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member`;\nconst NON_STANDARD_NODE_ENV = `You are using a non-standard \"NODE_ENV\" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env`;\nconst SSG_FALLBACK_EXPORT_ERROR = `Pages with \\`fallback\\` enabled in \\`getStaticPaths\\` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export`;\nconst ESLINT_DEFAULT_DIRS = [\n 'app',\n 'pages',\n 'components',\n 'lib',\n 'src'\n];\nconst SERVER_RUNTIME = {\n edge: 'edge',\n experimentalEdge: 'experimental-edge',\n nodejs: 'nodejs'\n};\nconst WEB_SOCKET_MAX_RECONNECTIONS = 12;\n/**\n * The names of the webpack layers. These layers are the primitives for the\n * webpack chunks.\n */ const WEBPACK_LAYERS_NAMES = {\n /**\n * The layer for the shared code between the client and server bundles.\n */ shared: 'shared',\n /**\n * The layer for server-only runtime and picking up `react-server` export conditions.\n * Including app router RSC pages and app router custom routes and metadata routes.\n */ reactServerComponents: 'rsc',\n /**\n * Server Side Rendering layer for app (ssr).\n */ serverSideRendering: 'ssr',\n /**\n * The browser client bundle layer for actions.\n */ actionBrowser: 'action-browser',\n /**\n * The Node.js bundle layer for the API routes.\n */ apiNode: 'api-node',\n /**\n * The Edge Lite bundle layer for the API routes.\n */ apiEdge: 'api-edge',\n /**\n * The layer for the middleware code.\n */ middleware: 'middleware',\n /**\n * The layer for the instrumentation hooks.\n */ instrument: 'instrument',\n /**\n * The layer for assets on the edge.\n */ edgeAsset: 'edge-asset',\n /**\n * The browser client bundle layer for App directory.\n */ appPagesBrowser: 'app-pages-browser',\n /**\n * The browser client bundle layer for Pages directory.\n */ pagesDirBrowser: 'pages-dir-browser',\n /**\n * The Edge Lite bundle layer for Pages directory.\n */ pagesDirEdge: 'pages-dir-edge',\n /**\n * The Node.js bundle layer for Pages directory.\n */ pagesDirNode: 'pages-dir-node'\n};\nconst WEBPACK_LAYERS = {\n ...WEBPACK_LAYERS_NAMES,\n GROUP: {\n builtinReact: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser\n ],\n serverOnly: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.instrument,\n WEBPACK_LAYERS_NAMES.middleware\n ],\n neutralTarget: [\n // pages api\n WEBPACK_LAYERS_NAMES.apiNode,\n WEBPACK_LAYERS_NAMES.apiEdge\n ],\n clientOnly: [\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser\n ],\n bundled: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.shared,\n WEBPACK_LAYERS_NAMES.instrument,\n WEBPACK_LAYERS_NAMES.middleware\n ],\n appPages: [\n // app router pages and layouts\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.actionBrowser\n ]\n }\n};\nconst WEBPACK_RESOURCE_QUERIES = {\n edgeSSREntry: '__next_edge_ssr_entry__',\n metadata: '__next_metadata__',\n metadataRoute: '__next_metadata_route__',\n metadataImageMeta: '__next_metadata_image_meta__'\n};\n\n//# sourceMappingURL=constants.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9jb25zdGFudHMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBOERMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBLDZDQUE2QztBQUM3QyxvREFBb0Q7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyxvQkFBb0I7QUFDbkU7QUFDQSwwQ0FBMEMsZUFBZTtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9saWIvY29uc3RhbnRzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgQUNUSU9OX1NVRkZJWDogbnVsbCxcbiAgICBBUFBfRElSX0FMSUFTOiBudWxsLFxuICAgIENBQ0hFX09ORV9ZRUFSX1NFQ09ORFM6IG51bGwsXG4gICAgRE9UX05FWFRfQUxJQVM6IG51bGwsXG4gICAgRVNMSU5UX0RFRkFVTFRfRElSUzogbnVsbCxcbiAgICBHU1BfTk9fUkVUVVJORURfVkFMVUU6IG51bGwsXG4gICAgR1NTUF9DT01QT05FTlRfTUVNQkVSX0VSUk9SOiBudWxsLFxuICAgIEdTU1BfTk9fUkVUVVJORURfVkFMVUU6IG51bGwsXG4gICAgSFRNTF9DT05URU5UX1RZUEVfSEVBREVSOiBudWxsLFxuICAgIElORklOSVRFX0NBQ0hFOiBudWxsLFxuICAgIElOU1RSVU1FTlRBVElPTl9IT09LX0ZJTEVOQU1FOiBudWxsLFxuICAgIEpTT05fQ09OVEVOVF9UWVBFX0hFQURFUjogbnVsbCxcbiAgICBNQVRDSEVEX1BBVEhfSEVBREVSOiBudWxsLFxuICAgIE1JRERMRVdBUkVfRklMRU5BTUU6IG51bGwsXG4gICAgTUlERExFV0FSRV9MT0NBVElPTl9SRUdFWFA6IG51bGwsXG4gICAgTkVYVF9CT0RZX1NVRkZJWDogbnVsbCxcbiAgICBORVhUX0NBQ0hFX0lNUExJQ0lUX1RBR19JRDogbnVsbCxcbiAgICBORVhUX0NBQ0hFX1JFVkFMSURBVEVEX1RBR1NfSEVBREVSOiBudWxsLFxuICAgIE5FWFRfQ0FDSEVfUkVWQUxJREFURV9UQUdfVE9LRU5fSEVBREVSOiBudWxsLFxuICAgIE5FWFRfQ0FDSEVfUk9PVF9QQVJBTV9UQUdfSUQ6IG51bGwsXG4gICAgTkVYVF9DQUNIRV9TT0ZUX1RBR19NQVhfTEVOR1RIOiBudWxsLFxuICAgIE5FWFRfQ0FDSEVfVEFHU19IRUFERVI6IG51bGwsXG4gICAgTkVYVF9DQUNIRV9UQUdfTUFYX0lURU1TOiBudWxsLFxuICAgIE5FWFRfQ0FDSEVfVEFHX01BWF9MRU5HVEg6IG51bGwsXG4gICAgTkVYVF9EQVRBX1NVRkZJWDogbnVsbCxcbiAgICBORVhUX0lOVEVSQ0VQVElPTl9NQVJLRVJfUFJFRklYOiBudWxsLFxuICAgIE5FWFRfTUVUQV9TVUZGSVg6IG51bGwsXG4gICAgTkVYVF9OQVZfREVQTE9ZTUVOVF9JRF9IRUFERVI6IG51bGwsXG4gICAgTkVYVF9RVUVSWV9QQVJBTV9QUkVGSVg6IG51bGwsXG4gICAgTkVYVF9SRVNVTUVfSEVBREVSOiBudWxsLFxuICAgIE5FWFRfUkVTVU1FX1NUQVRFX0xFTkdUSF9IRUFERVI6IG51bGwsXG4gICAgTk9OX1NUQU5EQVJEX05PREVfRU5WOiBudWxsLFxuICAgIFBBR0VTX0RJUl9BTElBUzogbnVsbCxcbiAgICBQUkVSRU5ERVJfUkVWQUxJREFURV9IRUFERVI6IG51bGwsXG4gICAgUFJFUkVOREVSX1JFVkFMSURBVEVfT05MWV9HRU5FUkFURURfSEVBREVSOiBudWxsLFxuICAgIFBST1hZX0ZJTEVOQU1FOiBudWxsLFxuICAgIFBST1hZX0xPQ0FUSU9OX1JFR0VYUDogbnVsbCxcbiAgICBQVUJMSUNfRElSX01JRERMRVdBUkVfQ09ORkxJQ1Q6IG51bGwsXG4gICAgUk9PVF9ESVJfQUxJQVM6IG51bGwsXG4gICAgUlNDX0FDVElPTl9DTElFTlRfV1JBUFBFUl9BTElBUzogbnVsbCxcbiAgICBSU0NfQUNUSU9OX0VOQ1JZUFRJT05fQUxJQVM6IG51bGwsXG4gICAgUlNDX0FDVElPTl9QUk9YWV9BTElBUzogbnVsbCxcbiAgICBSU0NfQUNUSU9OX1ZBTElEQVRFX0FMSUFTOiBudWxsLFxuICAgIFJTQ19DQUNIRV9XUkFQUEVSX0FMSUFTOiBudWxsLFxuICAgIFJTQ19EWU5BTUlDX0lNUE9SVF9XUkFQUEVSX0FMSUFTOiBudWxsLFxuICAgIFJTQ19NT0RfUkVGX1BST1hZX0FMSUFTOiBudWxsLFxuICAgIFJTQ19TRUdNRU5UU19ESVJfU1VGRklYOiBudWxsLFxuICAgIFJTQ19TRUdNRU5UX1NVRkZJWDogbnVsbCxcbiAgICBSU0NfU1VGRklYOiBudWxsLFxuICAgIFNFUlZFUl9QUk9QU19FWFBPUlRfRVJST1I6IG51bGwsXG4gICAgU0VSVkVSX1BST1BTX0dFVF9JTklUX1BST1BTX0NPTkZMSUNUOiBudWxsLFxuICAgIFNFUlZFUl9QUk9QU19TU0dfQ09ORkxJQ1Q6IG51bGwsXG4gICAgU0VSVkVSX1JVTlRJTUU6IG51bGwsXG4gICAgU1NHX0ZBTExCQUNLX0VYUE9SVF9FUlJPUjogbnVsbCxcbiAgICBTU0dfR0VUX0lOSVRJQUxfUFJPUFNfQ09ORkxJQ1Q6IG51bGwsXG4gICAgU1RBVElDX1NUQVRVU19QQUdFX0dFVF9JTklUSUFMX1BST1BTX0VSUk9SOiBudWxsLFxuICAgIFRFWFRfUExBSU5fQ09OVEVOVF9UWVBFX0hFQURFUjogbnVsbCxcbiAgICBVTlNUQUJMRV9SRVZBTElEQVRFX1JFTkFNRV9FUlJPUjogbnVsbCxcbiAgICBXRUJQQUNLX0xBWUVSUzogbnVsbCxcbiAgICBXRUJQQUNLX1JFU09VUkNFX1FVRVJJRVM6IG51bGwsXG4gICAgV0VCX1NPQ0tFVF9NQVhfUkVDT05ORUNUSU9OUzogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBBQ1RJT05fU1VGRklYOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEFDVElPTl9TVUZGSVg7XG4gICAgfSxcbiAgICBBUFBfRElSX0FMSUFTOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEFQUF9ESVJfQUxJQVM7XG4gICAgfSxcbiAgICBDQUNIRV9PTkVfWUVBUl9TRUNPTkRTOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIENBQ0hFX09ORV9ZRUFSX1NFQ09ORFM7XG4gICAgfSxcbiAgICBET1RfTkVYVF9BTElBUzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBET1RfTkVYVF9BTElBUztcbiAgICB9LFxuICAgIEVTTElOVF9ERUZBVUxUX0RJUlM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gRVNMSU5UX0RFRkFVTFRfRElSUztcbiAgICB9LFxuICAgIEdTUF9OT19SRVRVUk5FRF9WQUxVRTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBHU1BfTk9fUkVUVVJORURfVkFMVUU7XG4gICAgfSxcbiAgICBHU1NQX0NPTVBPTkVOVF9NRU1CRVJfRVJST1I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gR1NTUF9DT01QT05FTlRfTUVNQkVSX0VSUk9SO1xuICAgIH0sXG4gICAgR1NTUF9OT19SRVRVUk5FRF9WQUxVRTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBHU1NQX05PX1JFVFVSTkVEX1ZBTFVFO1xuICAgIH0sXG4gICAgSFRNTF9DT05URU5UX1RZUEVfSEVBREVSOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEhUTUxfQ09OVEVOVF9UWVBFX0hFQURFUjtcbiAgICB9LFxuICAgIElORklOSVRFX0NBQ0hFOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIElORklOSVRFX0NBQ0hFO1xuICAgIH0sXG4gICAgSU5TVFJVTUVOVEFUSU9OX0hPT0tfRklMRU5BTUU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gSU5TVFJVTUVOVEFUSU9OX0hPT0tfRklMRU5BTUU7XG4gICAgfSxcbiAgICBKU09OX0NPTlRFTlRfVFlQRV9IRUFERVI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gSlNPTl9DT05URU5UX1RZUEVfSEVBREVSO1xuICAgIH0sXG4gICAgTUFUQ0hFRF9QQVRIX0hFQURFUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBNQVRDSEVEX1BBVEhfSEVBREVSO1xuICAgIH0sXG4gICAgTUlERExFV0FSRV9GSUxFTkFNRTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBNSURETEVXQVJFX0ZJTEVOQU1FO1xuICAgIH0sXG4gICAgTUlERExFV0FSRV9MT0NBVElPTl9SRUdFWFA6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTUlERExFV0FSRV9MT0NBVElPTl9SRUdFWFA7XG4gICAgfSxcbiAgICBORVhUX0JPRFlfU1VGRklYOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfQk9EWV9TVUZGSVg7XG4gICAgfSxcbiAgICBORVhUX0NBQ0hFX0lNUExJQ0lUX1RBR19JRDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBORVhUX0NBQ0hFX0lNUExJQ0lUX1RBR19JRDtcbiAgICB9LFxuICAgIE5FWFRfQ0FDSEVfUkVWQUxJREFURURfVEFHU19IRUFERVI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTkVYVF9DQUNIRV9SRVZBTElEQVRFRF9UQUdTX0hFQURFUjtcbiAgICB9LFxuICAgIE5FWFRfQ0FDSEVfUkVWQUxJREFURV9UQUdfVE9LRU5fSEVBREVSOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfQ0FDSEVfUkVWQUxJREFURV9UQUdfVE9LRU5fSEVBREVSO1xuICAgIH0sXG4gICAgTkVYVF9DQUNIRV9ST09UX1BBUkFNX1RBR19JRDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBORVhUX0NBQ0hFX1JPT1RfUEFSQU1fVEFHX0lEO1xuICAgIH0sXG4gICAgTkVYVF9DQUNIRV9TT0ZUX1RBR19NQVhfTEVOR1RIOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfQ0FDSEVfU09GVF9UQUdfTUFYX0xFTkdUSDtcbiAgICB9LFxuICAgIE5FWFRfQ0FDSEVfVEFHU19IRUFERVI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTkVYVF9DQUNIRV9UQUdTX0hFQURFUjtcbiAgICB9LFxuICAgIE5FWFRfQ0FDSEVfVEFHX01BWF9JVEVNUzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBORVhUX0NBQ0hFX1RBR19NQVhfSVRFTVM7XG4gICAgfSxcbiAgICBORVhUX0NBQ0hFX1RBR19NQVhfTEVOR1RIOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfQ0FDSEVfVEFHX01BWF9MRU5HVEg7XG4gICAgfSxcbiAgICBORVhUX0RBVEFfU1VGRklYOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfREFUQV9TVUZGSVg7XG4gICAgfSxcbiAgICBORVhUX0lOVEVSQ0VQVElPTl9NQVJLRVJfUFJFRklYOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfSU5URVJDRVBUSU9OX01BUktFUl9QUkVGSVg7XG4gICAgfSxcbiAgICBORVhUX01FVEFfU1VGRklYOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfTUVUQV9TVUZGSVg7XG4gICAgfSxcbiAgICBORVhUX05BVl9ERVBMT1lNRU5UX0lEX0hFQURFUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBORVhUX05BVl9ERVBMT1lNRU5UX0lEX0hFQURFUjtcbiAgICB9LFxuICAgIE5FWFRfUVVFUllfUEFSQU1fUFJFRklYOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfUVVFUllfUEFSQU1fUFJFRklYO1xuICAgIH0sXG4gICAgTkVYVF9SRVNVTUVfSEVBREVSOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfUkVTVU1FX0hFQURFUjtcbiAgICB9LFxuICAgIE5FWFRfUkVTVU1FX1NUQVRFX0xFTkdUSF9IRUFERVI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTkVYVF9SRVNVTUVfU1RBVEVfTEVOR1RIX0hFQURFUjtcbiAgICB9LFxuICAgIE5PTl9TVEFOREFSRF9OT0RFX0VOVjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBOT05fU1RBTkRBUkRfTk9ERV9FTlY7XG4gICAgfSxcbiAgICBQQUdFU19ESVJfQUxJQVM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUEFHRVNfRElSX0FMSUFTO1xuICAgIH0sXG4gICAgUFJFUkVOREVSX1JFVkFMSURBVEVfSEVBREVSOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFBSRVJFTkRFUl9SRVZBTElEQVRFX0hFQURFUjtcbiAgICB9LFxuICAgIFBSRVJFTkRFUl9SRVZBTElEQVRFX09OTFlfR0VORVJBVEVEX0hFQURFUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBQUkVSRU5ERVJfUkVWQUxJREFURV9PTkxZX0dFTkVSQVRFRF9IRUFERVI7XG4gICAgfSxcbiAgICBQUk9YWV9GSUxFTkFNRTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBQUk9YWV9GSUxFTkFNRTtcbiAgICB9LFxuICAgIFBST1hZX0xPQ0FUSU9OX1JFR0VYUDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBQUk9YWV9MT0NBVElPTl9SRUdFWFA7XG4gICAgfSxcbiAgICBQVUJMSUNfRElSX01JRERMRVdBUkVfQ09ORkxJQ1Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUFVCTElDX0RJUl9NSURETEVXQVJFX0NPTkZMSUNUO1xuICAgIH0sXG4gICAgUk9PVF9ESVJfQUxJQVM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUk9PVF9ESVJfQUxJQVM7XG4gICAgfSxcbiAgICBSU0NfQUNUSU9OX0NMSUVOVF9XUkFQUEVSX0FMSUFTOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFJTQ19BQ1RJT05fQ0xJRU5UX1dSQVBQRVJfQUxJQVM7XG4gICAgfSxcbiAgICBSU0NfQUNUSU9OX0VOQ1JZUFRJT05fQUxJQVM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUlNDX0FDVElPTl9FTkNSWVBUSU9OX0FMSUFTO1xuICAgIH0sXG4gICAgUlNDX0FDVElPTl9QUk9YWV9BTElBUzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSU0NfQUNUSU9OX1BST1hZX0FMSUFTO1xuICAgIH0sXG4gICAgUlNDX0FDVElPTl9WQUxJREFURV9BTElBUzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSU0NfQUNUSU9OX1ZBTElEQVRFX0FMSUFTO1xuICAgIH0sXG4gICAgUlNDX0NBQ0hFX1dSQVBQRVJfQUxJQVM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUlNDX0NBQ0hFX1dSQVBQRVJfQUxJQVM7XG4gICAgfSxcbiAgICBSU0NfRFlOQU1JQ19JTVBPUlRfV1JBUFBFUl9BTElBUzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSU0NfRFlOQU1JQ19JTVBPUlRfV1JBUFBFUl9BTElBUztcbiAgICB9LFxuICAgIFJTQ19NT0RfUkVGX1BST1hZX0FMSUFTOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFJTQ19NT0RfUkVGX1BST1hZX0FMSUFTO1xuICAgIH0sXG4gICAgUlNDX1NFR01FTlRTX0RJUl9TVUZGSVg6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUlNDX1NFR01FTlRTX0RJUl9TVUZGSVg7XG4gICAgfSxcbiAgICBSU0NfU0VHTUVOVF9TVUZGSVg6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUlNDX1NFR01FTlRfU1VGRklYO1xuICAgIH0sXG4gICAgUlNDX1NVRkZJWDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSU0NfU1VGRklYO1xuICAgIH0sXG4gICAgU0VSVkVSX1BST1BTX0VYUE9SVF9FUlJPUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBTRVJWRVJfUFJPUFNfRVhQT1JUX0VSUk9SO1xuICAgIH0sXG4gICAgU0VSVkVSX1BST1BTX0dFVF9JTklUX1BST1BTX0NPTkZMSUNUOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFNFUlZFUl9QUk9QU19HRVRfSU5JVF9QUk9QU19DT05GTElDVDtcbiAgICB9LFxuICAgIFNFUlZFUl9QUk9QU19TU0dfQ09ORkxJQ1Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gU0VSVkVSX1BST1BTX1NTR19DT05GTElDVDtcbiAgICB9LFxuICAgIFNFUlZFUl9SVU5USU1FOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFNFUlZFUl9SVU5USU1FO1xuICAgIH0sXG4gICAgU1NHX0ZBTExCQUNLX0VYUE9SVF9FUlJPUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBTU0dfRkFMTEJBQ0tfRVhQT1JUX0VSUk9SO1xuICAgIH0sXG4gICAgU1NHX0dFVF9JTklUSUFMX1BST1BTX0NPTkZMSUNUOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFNTR19HRVRfSU5JVElBTF9QUk9QU19DT05GTElDVDtcbiAgICB9LFxuICAgIFNUQVRJQ19TVEFUVVNfUEFHRV9HRVRfSU5JVElBTF9QUk9QU19FUlJPUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBTVEFUSUNfU1RBVFVTX1BBR0VfR0VUX0lOSVRJQUxfUFJPUFNfRVJST1I7XG4gICAgfSxcbiAgICBURVhUX1BMQUlOX0NPTlRFTlRfVFlQRV9IRUFERVI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gVEVYVF9QTEFJTl9DT05URU5UX1RZUEVfSEVBREVSO1xuICAgIH0sXG4gICAgVU5TVEFCTEVfUkVWQUxJREFURV9SRU5BTUVfRVJST1I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gVU5TVEFCTEVfUkVWQUxJREFURV9SRU5BTUVfRVJST1I7XG4gICAgfSxcbiAgICBXRUJQQUNLX0xBWUVSUzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBXRUJQQUNLX0xBWUVSUztcbiAgICB9LFxuICAgIFdFQlBBQ0tfUkVTT1VSQ0VfUVVFUklFUzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBXRUJQQUNLX1JFU09VUkNFX1FVRVJJRVM7XG4gICAgfSxcbiAgICBXRUJfU09DS0VUX01BWF9SRUNPTk5FQ1RJT05TOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFdFQl9TT0NLRVRfTUFYX1JFQ09OTkVDVElPTlM7XG4gICAgfVxufSk7XG5jb25zdCBURVhUX1BMQUlOX0NPTlRFTlRfVFlQRV9IRUFERVIgPSAndGV4dC9wbGFpbic7XG5jb25zdCBIVE1MX0NPTlRFTlRfVFlQRV9IRUFERVIgPSAndGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04JztcbmNvbnN0IEpTT05fQ09OVEVOVF9UWVBFX0hFQURFUiA9ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JztcbmNvbnN0IE5FWFRfUVVFUllfUEFSQU1fUFJFRklYID0gJ254dFAnO1xuY29uc3QgTkVYVF9JTlRFUkNFUFRJT05fTUFSS0VSX1BSRUZJWCA9ICdueHRJJztcbmNvbnN0IE1BVENIRURfUEFUSF9IRUFERVIgPSAneC1tYXRjaGVkLXBhdGgnO1xuY29uc3QgUFJFUkVOREVSX1JFVkFMSURBVEVfSEVBREVSID0gJ3gtcHJlcmVuZGVyLXJldmFsaWRhdGUnO1xuY29uc3QgUFJFUkVOREVSX1JFVkFMSURBVEVfT05MWV9HRU5FUkFURURfSEVBREVSID0gJ3gtcHJlcmVuZGVyLXJldmFsaWRhdGUtaWYtZ2VuZXJhdGVkJztcbmNvbnN0IFJTQ19TRUdNRU5UU19ESVJfU1VGRklYID0gJy5zZWdtZW50cyc7XG5jb25zdCBSU0NfU0VHTUVOVF9TVUZGSVggPSAnLnNlZ21lbnQucnNjJztcbmNvbnN0IFJTQ19TVUZGSVggPSAnLnJzYyc7XG5jb25zdCBBQ1RJT05fU1VGRklYID0gJy5hY3Rpb24nO1xuY29uc3QgTkVYVF9EQVRBX1NVRkZJWCA9ICcuanNvbic7XG5jb25zdCBORVhUX01FVEFfU1VGRklYID0gJy5tZXRhJztcbmNvbnN0IE5FWFRfQk9EWV9TVUZGSVggPSAnLmJvZHknO1xuY29uc3QgTkVYVF9OQVZfREVQTE9ZTUVOVF9JRF9IRUFERVIgPSAneC1uZXh0anMtZGVwbG95bWVudC1pZCc7XG5jb25zdCBORVhUX0NBQ0hFX1RBR1NfSEVBREVSID0gJ3gtbmV4dC1jYWNoZS10YWdzJztcbmNvbnN0IE5FWFRfQ0FDSEVfUkVWQUxJREFURURfVEFHU19IRUFERVIgPSAneC1uZXh0LXJldmFsaWRhdGVkLXRhZ3MnO1xuY29uc3QgTkVYVF9DQUNIRV9SRVZBTElEQVRFX1RBR19UT0tFTl9IRUFERVIgPSAneC1uZXh0LXJldmFsaWRhdGUtdGFnLXRva2VuJztcbmNvbnN0IE5FWFRfUkVTVU1FX0hFQURFUiA9ICduZXh0LXJlc3VtZSc7XG5jb25zdCBORVhUX1JFU1VNRV9TVEFURV9MRU5HVEhfSEVBREVSID0gJ3gtbmV4dC1yZXN1bWUtc3RhdGUtbGVuZ3RoJztcbmNvbnN0IE5FWFRfQ0FDSEVfVEFHX01BWF9JVEVNUyA9IDEyODtcbmNvbnN0IE5FWFRfQ0FDSEVfVEFHX01BWF9MRU5HVEggPSAyNTY7XG5jb25zdCBORVhUX0NBQ0hFX1NPRlRfVEFHX01BWF9MRU5HVEggPSAxMDI0O1xuY29uc3QgTkVYVF9DQUNIRV9JTVBMSUNJVF9UQUdfSUQgPSAnX05fVF8nO1xuY29uc3QgTkVYVF9DQUNIRV9ST09UX1BBUkFNX1RBR19JRCA9ICdfTl9SUF8nO1xuY29uc3QgQ0FDSEVfT05FX1lFQVJfU0VDT05EUyA9IDMxNTM2MDAwO1xuY29uc3QgSU5GSU5JVEVfQ0FDSEUgPSAweGZmZmZmZmZlO1xuY29uc3QgTUlERExFV0FSRV9GSUxFTkFNRSA9ICdtaWRkbGV3YXJlJztcbmNvbnN0IE1JRERMRVdBUkVfTE9DQVRJT05fUkVHRVhQID0gYCg/OnNyYy8pPyR7TUlERExFV0FSRV9GSUxFTkFNRX1gO1xuY29uc3QgUFJPWFlfRklMRU5BTUUgPSAncHJveHknO1xuY29uc3QgUFJPWFlfTE9DQVRJT05fUkVHRVhQID0gYCg/OnNyYy8pPyR7UFJPWFlfRklMRU5BTUV9YDtcbmNvbnN0IElOU1RSVU1FTlRBVElPTl9IT09LX0ZJTEVOQU1FID0gJ2luc3RydW1lbnRhdGlvbic7XG5jb25zdCBQQUdFU19ESVJfQUxJQVMgPSAncHJpdmF0ZS1uZXh0LXBhZ2VzJztcbmNvbnN0IERPVF9ORVhUX0FMSUFTID0gJ3ByaXZhdGUtZG90LW5leHQnO1xuY29uc3QgUk9PVF9ESVJfQUxJQVMgPSAncHJpdmF0ZS1uZXh0LXJvb3QtZGlyJztcbmNvbnN0IEFQUF9ESVJfQUxJQVMgPSAncHJpdmF0ZS1uZXh0LWFwcC1kaXInO1xuY29uc3QgUlNDX01PRF9SRUZfUFJPWFlfQUxJQVMgPSAncHJpdmF0ZS1uZXh0LXJzYy1tb2QtcmVmLXByb3h5JztcbmNvbnN0IFJTQ19BQ1RJT05fVkFMSURBVEVfQUxJQVMgPSAncHJpdmF0ZS1uZXh0LXJzYy1hY3Rpb24tdmFsaWRhdGUnO1xuY29uc3QgUlNDX0FDVElPTl9QUk9YWV9BTElBUyA9ICdwcml2YXRlLW5leHQtcnNjLXNlcnZlci1yZWZlcmVuY2UnO1xuY29uc3QgUlNDX0NBQ0hFX1dSQVBQRVJfQUxJQVMgPSAncHJpdmF0ZS1uZXh0LXJzYy1jYWNoZS13cmFwcGVyJztcbmNvbnN0IFJTQ19EWU5BTUlDX0lNUE9SVF9XUkFQUEVSX0FMSUFTID0gJ3ByaXZhdGUtbmV4dC1yc2MtdHJhY2stZHluYW1pYy1pbXBvcnQnO1xuY29uc3QgUlNDX0FDVElPTl9FTkNSWVBUSU9OX0FMSUFTID0gJ3ByaXZhdGUtbmV4dC1yc2MtYWN0aW9uLWVuY3J5cHRpb24nO1xuY29uc3QgUlNDX0FDVElPTl9DTElFTlRfV1JBUFBFUl9BTElBUyA9ICdwcml2YXRlLW5leHQtcnNjLWFjdGlvbi1jbGllbnQtd3JhcHBlcic7XG5jb25zdCBQVUJMSUNfRElSX01JRERMRVdBUkVfQ09ORkxJQ1QgPSBgWW91IGNhbiBub3QgaGF2ZSBhICdfbmV4dCcgZm9sZGVyIGluc2lkZSBvZiB5b3VyIHB1YmxpYyBmb2xkZXIuIFRoaXMgY29uZmxpY3RzIHdpdGggdGhlIGludGVybmFsICcvX25leHQnIHJvdXRlLiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9wdWJsaWMtbmV4dC1mb2xkZXItY29uZmxpY3RgO1xuY29uc3QgU1NHX0dFVF9JTklUSUFMX1BST1BTX0NPTkZMSUNUID0gYFlvdSBjYW4gbm90IHVzZSBnZXRJbml0aWFsUHJvcHMgd2l0aCBnZXRTdGF0aWNQcm9wcy4gVG8gdXNlIFNTRywgcGxlYXNlIHJlbW92ZSB5b3VyIGdldEluaXRpYWxQcm9wc2A7XG5jb25zdCBTRVJWRVJfUFJPUFNfR0VUX0lOSVRfUFJPUFNfQ09ORkxJQ1QgPSBgWW91IGNhbiBub3QgdXNlIGdldEluaXRpYWxQcm9wcyB3aXRoIGdldFNlcnZlclNpZGVQcm9wcy4gUGxlYXNlIHJlbW92ZSBnZXRJbml0aWFsUHJvcHMuYDtcbmNvbnN0IFNFUlZFUl9QUk9QU19TU0dfQ09ORkxJQ1QgPSBgWW91IGNhbiBub3QgdXNlIGdldFN0YXRpY1Byb3BzIG9yIGdldFN0YXRpY1BhdGhzIHdpdGggZ2V0U2VydmVyU2lkZVByb3BzLiBUbyB1c2UgU1NHLCBwbGVhc2UgcmVtb3ZlIGdldFNlcnZlclNpZGVQcm9wc2A7XG5jb25zdCBTVEFUSUNfU1RBVFVTX1BBR0VfR0VUX0lOSVRJQUxfUFJPUFNfRVJST1IgPSBgY2FuIG5vdCBoYXZlIGdldEluaXRpYWxQcm9wcy9nZXRTZXJ2ZXJTaWRlUHJvcHMsIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzLzQwNC1nZXQtaW5pdGlhbC1wcm9wc2A7XG5jb25zdCBTRVJWRVJfUFJPUFNfRVhQT1JUX0VSUk9SID0gYHBhZ2VzIHdpdGggXFxgZ2V0U2VydmVyU2lkZVByb3BzXFxgIGNhbiBub3QgYmUgZXhwb3J0ZWQuIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZ3NzcC1leHBvcnRgO1xuY29uc3QgR1NQX05PX1JFVFVSTkVEX1ZBTFVFID0gJ1lvdXIgYGdldFN0YXRpY1Byb3BzYCBmdW5jdGlvbiBkaWQgbm90IHJldHVybiBhbiBvYmplY3QuIERpZCB5b3UgZm9yZ2V0IHRvIGFkZCBhIGByZXR1cm5gPyc7XG5jb25zdCBHU1NQX05PX1JFVFVSTkVEX1ZBTFVFID0gJ1lvdXIgYGdldFNlcnZlclNpZGVQcm9wc2AgZnVuY3Rpb24gZGlkIG5vdCByZXR1cm4gYW4gb2JqZWN0LiBEaWQgeW91IGZvcmdldCB0byBhZGQgYSBgcmV0dXJuYD8nO1xuY29uc3QgVU5TVEFCTEVfUkVWQUxJREFURV9SRU5BTUVfRVJST1IgPSAnVGhlIGB1bnN0YWJsZV9yZXZhbGlkYXRlYCBwcm9wZXJ0eSBpcyBhdmFpbGFibGUgZm9yIGdlbmVyYWwgdXNlLlxcbicgKyAnUGxlYXNlIHVzZSBgcmV2YWxpZGF0ZWAgaW5zdGVhZC4nO1xuY29uc3QgR1NTUF9DT01QT05FTlRfTUVNQkVSX0VSUk9SID0gYGNhbiBub3QgYmUgYXR0YWNoZWQgdG8gYSBwYWdlJ3MgY29tcG9uZW50IGFuZCBtdXN0IGJlIGV4cG9ydGVkIGZyb20gdGhlIHBhZ2UuIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZ3NzcC1jb21wb25lbnQtbWVtYmVyYDtcbmNvbnN0IE5PTl9TVEFOREFSRF9OT0RFX0VOViA9IGBZb3UgYXJlIHVzaW5nIGEgbm9uLXN0YW5kYXJkIFwiTk9ERV9FTlZcIiB2YWx1ZSBpbiB5b3VyIGVudmlyb25tZW50LiBUaGlzIGNyZWF0ZXMgaW5jb25zaXN0ZW5jaWVzIGluIHRoZSBwcm9qZWN0IGFuZCBpcyBzdHJvbmdseSBhZHZpc2VkIGFnYWluc3QuIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbm9uLXN0YW5kYXJkLW5vZGUtZW52YDtcbmNvbnN0IFNTR19GQUxMQkFDS19FWFBPUlRfRVJST1IgPSBgUGFnZXMgd2l0aCBcXGBmYWxsYmFja1xcYCBlbmFibGVkIGluIFxcYGdldFN0YXRpY1BhdGhzXFxgIGNhbiBub3QgYmUgZXhwb3J0ZWQuIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvc3NnLWZhbGxiYWNrLXRydWUtZXhwb3J0YDtcbmNvbnN0IEVTTElOVF9ERUZBVUxUX0RJUlMgPSBbXG4gICAgJ2FwcCcsXG4gICAgJ3BhZ2VzJyxcbiAgICAnY29tcG9uZW50cycsXG4gICAgJ2xpYicsXG4gICAgJ3NyYydcbl07XG5jb25zdCBTRVJWRVJfUlVOVElNRSA9IHtcbiAgICBlZGdlOiAnZWRnZScsXG4gICAgZXhwZXJpbWVudGFsRWRnZTogJ2V4cGVyaW1lbnRhbC1lZGdlJyxcbiAgICBub2RlanM6ICdub2RlanMnXG59O1xuY29uc3QgV0VCX1NPQ0tFVF9NQVhfUkVDT05ORUNUSU9OUyA9IDEyO1xuLyoqXG4gKiBUaGUgbmFtZXMgb2YgdGhlIHdlYnBhY2sgbGF5ZXJzLiBUaGVzZSBsYXllcnMgYXJlIHRoZSBwcmltaXRpdmVzIGZvciB0aGVcbiAqIHdlYnBhY2sgY2h1bmtzLlxuICovIGNvbnN0IFdFQlBBQ0tfTEFZRVJTX05BTUVTID0ge1xuICAgIC8qKlxuICAgKiBUaGUgbGF5ZXIgZm9yIHRoZSBzaGFyZWQgY29kZSBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHNlcnZlciBidW5kbGVzLlxuICAgKi8gc2hhcmVkOiAnc2hhcmVkJyxcbiAgICAvKipcbiAgICogVGhlIGxheWVyIGZvciBzZXJ2ZXItb25seSBydW50aW1lIGFuZCBwaWNraW5nIHVwIGByZWFjdC1zZXJ2ZXJgIGV4cG9ydCBjb25kaXRpb25zLlxuICAgKiBJbmNsdWRpbmcgYXBwIHJvdXRlciBSU0MgcGFnZXMgYW5kIGFwcCByb3V0ZXIgY3VzdG9tIHJvdXRlcyBhbmQgbWV0YWRhdGEgcm91dGVzLlxuICAgKi8gcmVhY3RTZXJ2ZXJDb21wb25lbnRzOiAncnNjJyxcbiAgICAvKipcbiAgICogU2VydmVyIFNpZGUgUmVuZGVyaW5nIGxheWVyIGZvciBhcHAgKHNzcikuXG4gICAqLyBzZXJ2ZXJTaWRlUmVuZGVyaW5nOiAnc3NyJyxcbiAgICAvKipcbiAgICogVGhlIGJyb3dzZXIgY2xpZW50IGJ1bmRsZSBsYXllciBmb3IgYWN0aW9ucy5cbiAgICovIGFjdGlvbkJyb3dzZXI6ICdhY3Rpb24tYnJvd3NlcicsXG4gICAgLyoqXG4gICAqIFRoZSBOb2RlLmpzIGJ1bmRsZSBsYXllciBmb3IgdGhlIEFQSSByb3V0ZXMuXG4gICAqLyBhcGlOb2RlOiAnYXBpLW5vZGUnLFxuICAgIC8qKlxuICAgKiBUaGUgRWRnZSBMaXRlIGJ1bmRsZSBsYXllciBmb3IgdGhlIEFQSSByb3V0ZXMuXG4gICAqLyBhcGlFZGdlOiAnYXBpLWVkZ2UnLFxuICAgIC8qKlxuICAgKiBUaGUgbGF5ZXIgZm9yIHRoZSBtaWRkbGV3YXJlIGNvZGUuXG4gICAqLyBtaWRkbGV3YXJlOiAnbWlkZGxld2FyZScsXG4gICAgLyoqXG4gICAqIFRoZSBsYXllciBmb3IgdGhlIGluc3RydW1lbnRhdGlvbiBob29rcy5cbiAgICovIGluc3RydW1lbnQ6ICdpbnN0cnVtZW50JyxcbiAgICAvKipcbiAgICogVGhlIGxheWVyIGZvciBhc3NldHMgb24gdGhlIGVkZ2UuXG4gICAqLyBlZGdlQXNzZXQ6ICdlZGdlLWFzc2V0JyxcbiAgICAvKipcbiAgICogVGhlIGJyb3dzZXIgY2xpZW50IGJ1bmRsZSBsYXllciBmb3IgQXBwIGRpcmVjdG9yeS5cbiAgICovIGFwcFBhZ2VzQnJvd3NlcjogJ2FwcC1wYWdlcy1icm93c2VyJyxcbiAgICAvKipcbiAgICogVGhlIGJyb3dzZXIgY2xpZW50IGJ1bmRsZSBsYXllciBmb3IgUGFnZXMgZGlyZWN0b3J5LlxuICAgKi8gcGFnZXNEaXJCcm93c2VyOiAncGFnZXMtZGlyLWJyb3dzZXInLFxuICAgIC8qKlxuICAgKiBUaGUgRWRnZSBMaXRlIGJ1bmRsZSBsYXllciBmb3IgUGFnZXMgZGlyZWN0b3J5LlxuICAgKi8gcGFnZXNEaXJFZGdlOiAncGFnZXMtZGlyLWVkZ2UnLFxuICAgIC8qKlxuICAgKiBUaGUgTm9kZS5qcyBidW5kbGUgbGF5ZXIgZm9yIFBhZ2VzIGRpcmVjdG9yeS5cbiAgICovIHBhZ2VzRGlyTm9kZTogJ3BhZ2VzLWRpci1ub2RlJ1xufTtcbmNvbnN0IFdFQlBBQ0tfTEFZRVJTID0ge1xuICAgIC4uLldFQlBBQ0tfTEFZRVJTX05BTUVTLFxuICAgIEdST1VQOiB7XG4gICAgICAgIGJ1aWx0aW5SZWFjdDogW1xuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMucmVhY3RTZXJ2ZXJDb21wb25lbnRzLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuYWN0aW9uQnJvd3NlclxuICAgICAgICBdLFxuICAgICAgICBzZXJ2ZXJPbmx5OiBbXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5yZWFjdFNlcnZlckNvbXBvbmVudHMsXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5hY3Rpb25Ccm93c2VyLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuaW5zdHJ1bWVudCxcbiAgICAgICAgICAgIFdFQlBBQ0tfTEFZRVJTX05BTUVTLm1pZGRsZXdhcmVcbiAgICAgICAgXSxcbiAgICAgICAgbmV1dHJhbFRhcmdldDogW1xuICAgICAgICAgICAgLy8gcGFnZXMgYXBpXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5hcGlOb2RlLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuYXBpRWRnZVxuICAgICAgICBdLFxuICAgICAgICBjbGllbnRPbmx5OiBbXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5zZXJ2ZXJTaWRlUmVuZGVyaW5nLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuYXBwUGFnZXNCcm93c2VyXG4gICAgICAgIF0sXG4gICAgICAgIGJ1bmRsZWQ6IFtcbiAgICAgICAgICAgIFdFQlBBQ0tfTEFZRVJTX05BTUVTLnJlYWN0U2VydmVyQ29tcG9uZW50cyxcbiAgICAgICAgICAgIFdFQlBBQ0tfTEFZRVJTX05BTUVTLmFjdGlvbkJyb3dzZXIsXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5zZXJ2ZXJTaWRlUmVuZGVyaW5nLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuYXBwUGFnZXNCcm93c2VyLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuc2hhcmVkLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuaW5zdHJ1bWVudCxcbiAgICAgICAgICAgIFdFQlBBQ0tfTEFZRVJTX05BTUVTLm1pZGRsZXdhcmVcbiAgICAgICAgXSxcbiAgICAgICAgYXBwUGFnZXM6IFtcbiAgICAgICAgICAgIC8vIGFwcCByb3V0ZXIgcGFnZXMgYW5kIGxheW91dHNcbiAgICAgICAgICAgIFdFQlBBQ0tfTEFZRVJTX05BTUVTLnJlYWN0U2VydmVyQ29tcG9uZW50cyxcbiAgICAgICAgICAgIFdFQlBBQ0tfTEFZRVJTX05BTUVTLnNlcnZlclNpZGVSZW5kZXJpbmcsXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5hcHBQYWdlc0Jyb3dzZXIsXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5hY3Rpb25Ccm93c2VyXG4gICAgICAgIF1cbiAgICB9XG59O1xuY29uc3QgV0VCUEFDS19SRVNPVVJDRV9RVUVSSUVTID0ge1xuICAgIGVkZ2VTU1JFbnRyeTogJ19fbmV4dF9lZGdlX3Nzcl9lbnRyeV9fJyxcbiAgICBtZXRhZGF0YTogJ19fbmV4dF9tZXRhZGF0YV9fJyxcbiAgICBtZXRhZGF0YVJvdXRlOiAnX19uZXh0X21ldGFkYXRhX3JvdXRlX18nLFxuICAgIG1ldGFkYXRhSW1hZ2VNZXRhOiAnX19uZXh0X21ldGFkYXRhX2ltYWdlX21ldGFfXydcbn07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbnN0YW50cy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/lib/constants.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/lib/framework/boundary-components.js":
|
||
/*!*********************************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/framework/boundary-components.js ***!
|
||
\*********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n MetadataBoundary: function() {\n return MetadataBoundary;\n },\n OutletBoundary: function() {\n return OutletBoundary;\n },\n RootLayoutBoundary: function() {\n return RootLayoutBoundary;\n },\n ViewportBoundary: function() {\n return ViewportBoundary;\n }\n});\nconst _boundaryconstants = __webpack_require__(/*! ./boundary-constants */ \"(ssr)/./node_modules/next/dist/lib/framework/boundary-constants.js\");\n// We use a namespace object to allow us to recover the name of the function\n// at runtime even when production bundling/minification is used.\nconst NameSpace = {\n [_boundaryconstants.METADATA_BOUNDARY_NAME]: function({ children }) {\n return children;\n },\n [_boundaryconstants.VIEWPORT_BOUNDARY_NAME]: function({ children }) {\n return children;\n },\n [_boundaryconstants.OUTLET_BOUNDARY_NAME]: function({ children }) {\n return children;\n },\n [_boundaryconstants.ROOT_LAYOUT_BOUNDARY_NAME]: function({ children }) {\n return children;\n }\n};\nconst MetadataBoundary = // so it retains the name inferred from the namespace object\nNameSpace[_boundaryconstants.METADATA_BOUNDARY_NAME.slice(0)];\nconst ViewportBoundary = // so it retains the name inferred from the namespace object\nNameSpace[_boundaryconstants.VIEWPORT_BOUNDARY_NAME.slice(0)];\nconst OutletBoundary = // so it retains the name inferred from the namespace object\nNameSpace[_boundaryconstants.OUTLET_BOUNDARY_NAME.slice(0)];\nconst RootLayoutBoundary = // so it retains the name inferred from the namespace object\nNameSpace[_boundaryconstants.ROOT_LAYOUT_BOUNDARY_NAME.slice(0)]; //# sourceMappingURL=boundary-components.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9mcmFtZXdvcmsvYm91bmRhcnktY29tcG9uZW50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUErQmFBLGdCQUFnQjtlQUFoQkE7O0lBVUFDLGNBQWM7ZUFBZEE7O0lBS0FDLGtCQUFrQjtlQUFsQkE7O0lBVkFDLGdCQUFnQjtlQUFoQkE7OzsrQ0E1Qk47QUFFUCw0RUFBNEU7QUFDNUUsaUVBQWlFO0FBQ2pFLE1BQU1DLFlBQVk7SUFDaEIsQ0FBQ0MsbUJBQUFBLHNCQUFzQixDQUFDLEVBQUUsU0FBVSxFQUFFQyxRQUFRLEVBQTJCO1FBQ3ZFLE9BQU9BO0lBQ1Q7SUFDQSxDQUFDQyxtQkFBQUEsc0JBQXNCLENBQUMsRUFBRSxTQUFVLEVBQUVELFFBQVEsRUFBMkI7UUFDdkUsT0FBT0E7SUFDVDtJQUNBLENBQUNFLG1CQUFBQSxvQkFBb0IsQ0FBQyxFQUFFLFNBQVUsRUFBRUYsUUFBUSxFQUEyQjtRQUNyRSxPQUFPQTtJQUNUO0lBQ0EsQ0FBQ0csbUJBQUFBLHlCQUF5QixDQUFDLEVBQUUsU0FBVSxFQUNyQ0gsUUFBUSxFQUdUO1FBQ0MsT0FBT0E7SUFDVDtBQUNGO0FBRU8sTUFBTU4sbUJBQ1gsNERBQzREO0FBQzVESSxTQUFTLENBQUNDLG1CQUFBQSxzQkFBc0IsQ0FBQ0ssS0FBSyxDQUFDLEdBQW9DO0FBRXRFLE1BQU1QLG1CQUNYLDREQUM0RDtBQUM1REMsU0FBUyxDQUFDRyxtQkFBQUEsc0JBQXNCLENBQUNHLEtBQUssQ0FBQyxHQUFvQztBQUV0RSxNQUFNVCxpQkFDWCw0REFDNEQ7QUFDNURHLFNBQVMsQ0FBQ0ksbUJBQUFBLG9CQUFvQixDQUFDRSxLQUFLLENBQUMsR0FBa0M7QUFFbEUsTUFBTVIscUJBQ1gsNERBQzREO0FBQzVERSxTQUFTLENBQ1BLLG1CQUFBQSx5QkFBeUIsQ0FBQ0MsS0FBSyxDQUFDLEdBQ2pDIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL2xpYi9mcmFtZXdvcmsvYm91bmRhcnktY29tcG9uZW50cy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB0eXBlIHsgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQge1xuICBNRVRBREFUQV9CT1VOREFSWV9OQU1FLFxuICBWSUVXUE9SVF9CT1VOREFSWV9OQU1FLFxuICBPVVRMRVRfQk9VTkRBUllfTkFNRSxcbiAgUk9PVF9MQVlPVVRfQk9VTkRBUllfTkFNRSxcbn0gZnJvbSAnLi9ib3VuZGFyeS1jb25zdGFudHMnXG5cbi8vIFdlIHVzZSBhIG5hbWVzcGFjZSBvYmplY3QgdG8gYWxsb3cgdXMgdG8gcmVjb3ZlciB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb25cbi8vIGF0IHJ1bnRpbWUgZXZlbiB3aGVuIHByb2R1Y3Rpb24gYnVuZGxpbmcvbWluaWZpY2F0aW9uIGlzIHVzZWQuXG5jb25zdCBOYW1lU3BhY2UgPSB7XG4gIFtNRVRBREFUQV9CT1VOREFSWV9OQU1FXTogZnVuY3Rpb24gKHsgY2hpbGRyZW4gfTogeyBjaGlsZHJlbjogUmVhY3ROb2RlIH0pIHtcbiAgICByZXR1cm4gY2hpbGRyZW5cbiAgfSxcbiAgW1ZJRVdQT1JUX0JPVU5EQVJZX05BTUVdOiBmdW5jdGlvbiAoeyBjaGlsZHJlbiB9OiB7IGNoaWxkcmVuOiBSZWFjdE5vZGUgfSkge1xuICAgIHJldHVybiBjaGlsZHJlblxuICB9LFxuICBbT1VUTEVUX0JPVU5EQVJZX05BTUVdOiBmdW5jdGlvbiAoeyBjaGlsZHJlbiB9OiB7IGNoaWxkcmVuOiBSZWFjdE5vZGUgfSkge1xuICAgIHJldHVybiBjaGlsZHJlblxuICB9LFxuICBbUk9PVF9MQVlPVVRfQk9VTkRBUllfTkFNRV06IGZ1bmN0aW9uICh7XG4gICAgY2hpbGRyZW4sXG4gIH06IHtcbiAgICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gIH0pIHtcbiAgICByZXR1cm4gY2hpbGRyZW5cbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IE1ldGFkYXRhQm91bmRhcnkgPVxuICAvLyBXZSB1c2Ugc2xpY2UoMCkgdG8gdHJpY2sgdGhlIGJ1bmRsZXIgaW50byBub3QgaW5saW5pbmcvbWluaWZ5aW5nIHRoZSBmdW5jdGlvblxuICAvLyBzbyBpdCByZXRhaW5zIHRoZSBuYW1lIGluZmVycmVkIGZyb20gdGhlIG5hbWVzcGFjZSBvYmplY3RcbiAgTmFtZVNwYWNlW01FVEFEQVRBX0JPVU5EQVJZX05BTUUuc2xpY2UoMCkgYXMgdHlwZW9mIE1FVEFEQVRBX0JPVU5EQVJZX05BTUVdXG5cbmV4cG9ydCBjb25zdCBWaWV3cG9ydEJvdW5kYXJ5ID1cbiAgLy8gV2UgdXNlIHNsaWNlKDApIHRvIHRyaWNrIHRoZSBidW5kbGVyIGludG8gbm90IGlubGluaW5nL21pbmlmeWluZyB0aGUgZnVuY3Rpb25cbiAgLy8gc28gaXQgcmV0YWlucyB0aGUgbmFtZSBpbmZlcnJlZCBmcm9tIHRoZSBuYW1lc3BhY2Ugb2JqZWN0XG4gIE5hbWVTcGFjZVtWSUVXUE9SVF9CT1VOREFSWV9OQU1FLnNsaWNlKDApIGFzIHR5cGVvZiBWSUVXUE9SVF9CT1VOREFSWV9OQU1FXVxuXG5leHBvcnQgY29uc3QgT3V0bGV0Qm91bmRhcnkgPVxuICAvLyBXZSB1c2Ugc2xpY2UoMCkgdG8gdHJpY2sgdGhlIGJ1bmRsZXIgaW50byBub3QgaW5saW5pbmcvbWluaWZ5aW5nIHRoZSBmdW5jdGlvblxuICAvLyBzbyBpdCByZXRhaW5zIHRoZSBuYW1lIGluZmVycmVkIGZyb20gdGhlIG5hbWVzcGFjZSBvYmplY3RcbiAgTmFtZVNwYWNlW09VVExFVF9CT1VOREFSWV9OQU1FLnNsaWNlKDApIGFzIHR5cGVvZiBPVVRMRVRfQk9VTkRBUllfTkFNRV1cblxuZXhwb3J0IGNvbnN0IFJvb3RMYXlvdXRCb3VuZGFyeSA9XG4gIC8vIFdlIHVzZSBzbGljZSgwKSB0byB0cmljayB0aGUgYnVuZGxlciBpbnRvIG5vdCBpbmxpbmluZy9taW5pZnlpbmcgdGhlIGZ1bmN0aW9uXG4gIC8vIHNvIGl0IHJldGFpbnMgdGhlIG5hbWUgaW5mZXJyZWQgZnJvbSB0aGUgbmFtZXNwYWNlIG9iamVjdFxuICBOYW1lU3BhY2VbXG4gICAgUk9PVF9MQVlPVVRfQk9VTkRBUllfTkFNRS5zbGljZSgwKSBhcyB0eXBlb2YgUk9PVF9MQVlPVVRfQk9VTkRBUllfTkFNRVxuICBdXG4iXSwibmFtZXMiOlsiTWV0YWRhdGFCb3VuZGFyeSIsIk91dGxldEJvdW5kYXJ5IiwiUm9vdExheW91dEJvdW5kYXJ5IiwiVmlld3BvcnRCb3VuZGFyeSIsIk5hbWVTcGFjZSIsIk1FVEFEQVRBX0JPVU5EQVJZX05BTUUiLCJjaGlsZHJlbiIsIlZJRVdQT1JUX0JPVU5EQVJZX05BTUUiLCJPVVRMRVRfQk9VTkRBUllfTkFNRSIsIlJPT1RfTEFZT1VUX0JPVU5EQVJZX05BTUUiLCJzbGljZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/lib/framework/boundary-components.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/lib/framework/boundary-constants.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/framework/boundary-constants.js ***!
|
||
\********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n METADATA_BOUNDARY_NAME: function() {\n return METADATA_BOUNDARY_NAME;\n },\n OUTLET_BOUNDARY_NAME: function() {\n return OUTLET_BOUNDARY_NAME;\n },\n ROOT_LAYOUT_BOUNDARY_NAME: function() {\n return ROOT_LAYOUT_BOUNDARY_NAME;\n },\n VIEWPORT_BOUNDARY_NAME: function() {\n return VIEWPORT_BOUNDARY_NAME;\n }\n});\nconst METADATA_BOUNDARY_NAME = '__next_metadata_boundary__';\nconst VIEWPORT_BOUNDARY_NAME = '__next_viewport_boundary__';\nconst OUTLET_BOUNDARY_NAME = '__next_outlet_boundary__';\nconst ROOT_LAYOUT_BOUNDARY_NAME = '__next_root_layout_boundary__';\n\n//# sourceMappingURL=boundary-constants.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9mcmFtZXdvcmsvYm91bmRhcnktY29uc3RhbnRzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQUtMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvbGliL2ZyYW1ld29yay9ib3VuZGFyeS1jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBNRVRBREFUQV9CT1VOREFSWV9OQU1FOiBudWxsLFxuICAgIE9VVExFVF9CT1VOREFSWV9OQU1FOiBudWxsLFxuICAgIFJPT1RfTEFZT1VUX0JPVU5EQVJZX05BTUU6IG51bGwsXG4gICAgVklFV1BPUlRfQk9VTkRBUllfTkFNRTogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBNRVRBREFUQV9CT1VOREFSWV9OQU1FOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE1FVEFEQVRBX0JPVU5EQVJZX05BTUU7XG4gICAgfSxcbiAgICBPVVRMRVRfQk9VTkRBUllfTkFNRTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBPVVRMRVRfQk9VTkRBUllfTkFNRTtcbiAgICB9LFxuICAgIFJPT1RfTEFZT1VUX0JPVU5EQVJZX05BTUU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUk9PVF9MQVlPVVRfQk9VTkRBUllfTkFNRTtcbiAgICB9LFxuICAgIFZJRVdQT1JUX0JPVU5EQVJZX05BTUU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gVklFV1BPUlRfQk9VTkRBUllfTkFNRTtcbiAgICB9XG59KTtcbmNvbnN0IE1FVEFEQVRBX0JPVU5EQVJZX05BTUUgPSAnX19uZXh0X21ldGFkYXRhX2JvdW5kYXJ5X18nO1xuY29uc3QgVklFV1BPUlRfQk9VTkRBUllfTkFNRSA9ICdfX25leHRfdmlld3BvcnRfYm91bmRhcnlfXyc7XG5jb25zdCBPVVRMRVRfQk9VTkRBUllfTkFNRSA9ICdfX25leHRfb3V0bGV0X2JvdW5kYXJ5X18nO1xuY29uc3QgUk9PVF9MQVlPVVRfQk9VTkRBUllfTkFNRSA9ICdfX25leHRfcm9vdF9sYXlvdXRfYm91bmRhcnlfXyc7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJvdW5kYXJ5LWNvbnN0YW50cy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/lib/framework/boundary-constants.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/lib/is-error.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/is-error.js ***!
|
||
\************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n /**\n * Checks whether the given value is a NextError.\n * This can be used to print a more detailed error message with properties like `code` & `digest`.\n */ default: function() {\n return isError;\n },\n getProperError: function() {\n return getProperError;\n }\n});\nconst _isplainobject = __webpack_require__(/*! ../shared/lib/is-plain-object */ \"(ssr)/./node_modules/next/dist/shared/lib/is-plain-object.js\");\n/**\n * This is a safe stringify function that handles circular references.\n * We're using a simpler version here to avoid introducing\n * the dependency `safe-stable-stringify` into production bundle.\n *\n * This helper is used both in development and production.\n */ function safeStringifyLite(obj) {\n const seen = new WeakSet();\n return JSON.stringify(obj, (_key, value)=>{\n // If value is an object and already seen, replace with \"[Circular]\"\n if (typeof value === 'object' && value !== null) {\n if (seen.has(value)) {\n return '[Circular]';\n }\n seen.add(value);\n }\n return value;\n });\n}\nfunction isError(err) {\n return typeof err === 'object' && err !== null && 'name' in err && 'message' in err;\n}\nfunction getProperError(err) {\n if (isError(err)) {\n return err;\n }\n if (true) {\n // provide better error for case where `throw undefined`\n // is called in development\n if (typeof err === 'undefined') {\n return Object.defineProperty(new Error('An undefined error was thrown, ' + 'see here for more info: https://nextjs.org/docs/messages/threw-undefined'), \"__NEXT_ERROR_CODE\", {\n value: \"E98\",\n enumerable: false,\n configurable: true\n });\n }\n if (err === null) {\n return Object.defineProperty(new Error('A null error was thrown, ' + 'see here for more info: https://nextjs.org/docs/messages/threw-undefined'), \"__NEXT_ERROR_CODE\", {\n value: \"E336\",\n enumerable: false,\n configurable: true\n });\n }\n }\n return Object.defineProperty(new Error((0, _isplainobject.isPlainObject)(err) ? safeStringifyLite(err) : err + ''), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n}\n\n//# sourceMappingURL=is-error.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9pcy1lcnJvci5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FHTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCx1QkFBdUIsbUJBQU8sQ0FBQyxtR0FBK0I7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxJQUFzQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9saWIvaXMtZXJyb3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBkZWZhdWx0OiBudWxsLFxuICAgIGdldFByb3BlckVycm9yOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIC8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIHZhbHVlIGlzIGEgTmV4dEVycm9yLlxuICogVGhpcyBjYW4gYmUgdXNlZCB0byBwcmludCBhIG1vcmUgZGV0YWlsZWQgZXJyb3IgbWVzc2FnZSB3aXRoIHByb3BlcnRpZXMgbGlrZSBgY29kZWAgJiBgZGlnZXN0YC5cbiAqLyBkZWZhdWx0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGlzRXJyb3I7XG4gICAgfSxcbiAgICBnZXRQcm9wZXJFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRQcm9wZXJFcnJvcjtcbiAgICB9XG59KTtcbmNvbnN0IF9pc3BsYWlub2JqZWN0ID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvaXMtcGxhaW4tb2JqZWN0XCIpO1xuLyoqXG4gKiBUaGlzIGlzIGEgc2FmZSBzdHJpbmdpZnkgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIGNpcmN1bGFyIHJlZmVyZW5jZXMuXG4gKiBXZSdyZSB1c2luZyBhIHNpbXBsZXIgdmVyc2lvbiBoZXJlIHRvIGF2b2lkIGludHJvZHVjaW5nXG4gKiB0aGUgZGVwZW5kZW5jeSBgc2FmZS1zdGFibGUtc3RyaW5naWZ5YCBpbnRvIHByb2R1Y3Rpb24gYnVuZGxlLlxuICpcbiAqIFRoaXMgaGVscGVyIGlzIHVzZWQgYm90aCBpbiBkZXZlbG9wbWVudCBhbmQgcHJvZHVjdGlvbi5cbiAqLyBmdW5jdGlvbiBzYWZlU3RyaW5naWZ5TGl0ZShvYmopIHtcbiAgICBjb25zdCBzZWVuID0gbmV3IFdlYWtTZXQoKTtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqLCAoX2tleSwgdmFsdWUpPT57XG4gICAgICAgIC8vIElmIHZhbHVlIGlzIGFuIG9iamVjdCBhbmQgYWxyZWFkeSBzZWVuLCByZXBsYWNlIHdpdGggXCJbQ2lyY3VsYXJdXCJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChzZWVuLmhhcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tDaXJjdWxhcl0nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2Vlbi5hZGQodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGlzRXJyb3IoZXJyKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBlcnIgPT09ICdvYmplY3QnICYmIGVyciAhPT0gbnVsbCAmJiAnbmFtZScgaW4gZXJyICYmICdtZXNzYWdlJyBpbiBlcnI7XG59XG5mdW5jdGlvbiBnZXRQcm9wZXJFcnJvcihlcnIpIHtcbiAgICBpZiAoaXNFcnJvcihlcnIpKSB7XG4gICAgICAgIHJldHVybiBlcnI7XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAvLyBwcm92aWRlIGJldHRlciBlcnJvciBmb3IgY2FzZSB3aGVyZSBgdGhyb3cgdW5kZWZpbmVkYFxuICAgICAgICAvLyBpcyBjYWxsZWQgaW4gZGV2ZWxvcG1lbnRcbiAgICAgICAgaWYgKHR5cGVvZiBlcnIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcignQW4gdW5kZWZpbmVkIGVycm9yIHdhcyB0aHJvd24sICcgKyAnc2VlIGhlcmUgZm9yIG1vcmUgaW5mbzogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvdGhyZXctdW5kZWZpbmVkJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU5OFwiLFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVyciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoJ0EgbnVsbCBlcnJvciB3YXMgdGhyb3duLCAnICsgJ3NlZSBoZXJlIGZvciBtb3JlIGluZm86IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL3RocmV3LXVuZGVmaW5lZCcpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMzM2XCIsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcigoMCwgX2lzcGxhaW5vYmplY3QuaXNQbGFpbk9iamVjdCkoZXJyKSA/IHNhZmVTdHJpbmdpZnlMaXRlKGVycikgOiBlcnIgKyAnJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICB2YWx1ZTogXCJFMzk0XCIsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtZXJyb3IuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/lib/is-error.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":
|
||
/*!*******************************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/metadata/generate/icon-mark.js ***!
|
||
\*******************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"IconMark\", ({\n enumerable: true,\n get: function() {\n return IconMark;\n }\n}));\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst IconMark = ()=>{\n if (false) {}\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"\\xabnxt-icon\\xbb\"\n });\n}; //# sourceMappingURL=icon-mark.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9nZW5lcmF0ZS9pY29uLW1hcmsuanMiLCJtYXBwaW5ncyI6Ijs7Ozs0Q0FRYUE7OztlQUFBQTs7OztBQUFOLE1BQU1BLFdBQVc7SUFDdEIsSUFBSSxLQUE2QixFQUFFLEVBRWxDO0lBQ0QscUJBQU8scUJBQUNFLFFBQUFBO1FBQUtDLE1BQUs7O0FBQ3BCIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2xpYi9tZXRhZGF0YS9nZW5lcmF0ZS9pY29uLW1hcmsudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG4vLyBUaGlzIGlzIGEgY2xpZW50IGNvbXBvbmVudCB0aGF0IG9ubHkgcmVuZGVycyBkdXJpbmcgU1NSLFxuLy8gYnV0IHdpbGwgYmUgcmVwbGFjZWQgZHVyaW5nIHN0cmVhbWluZyB3aXRoIGFuIGljb24gaW5zZXJ0aW9uIHNjcmlwdCB0YWcuXG4vLyBXZSBkb24ndCB3YW50IGl0IHRvIGJlIHByZXNlbnRlZCBhbnl3aGVyZSBzbyBpdCdzIG9ubHkgdmlzaWJsZSBkdXJpbmcgc3RyZWFtaW5nLFxuLy8gcmlnaHQgYWZ0ZXIgdGhlIGljb24gbWV0YSB0YWdzIHNvIHRoYXQgYnJvd3NlciBjYW4gcGljayBpdCB1cCBhcyBzb29uIGFzIGl0J3MgcmVuZGVyZWQuXG4vLyBOb3RlOiB3ZSBkb24ndCBqdXN0IGVtaXQgdGhlIHNjcmlwdCBoZXJlIGJlY2F1c2Ugd2Ugb25seSBuZWVkIHRoZSBzY3JpcHQgaWYgaXQncyBub3QgaW4gdGhlIGhlYWQsXG4vLyBhbmQgd2UgbmVlZCBpdCB0byBiZSBob2lzdGFibGUgYWxvbmdzaWRlIHRoZSBvdGhlciBtZXRhZGF0YSBidXQgc3luYyBzY3JpcHRzIGFyZSBub3QgaG9pc3RhYmxlLlxuZXhwb3J0IGNvbnN0IEljb25NYXJrID0gKCkgPT4ge1xuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiA8bWV0YSBuYW1lPVwiwqtueHQtaWNvbsK7XCIgLz5cbn1cbiJdLCJuYW1lcyI6WyJJY29uTWFyayIsIndpbmRvdyIsIm1ldGEiLCJuYW1lIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/lib/scheduler.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/next/dist/lib/scheduler.js ***!
|
||
\*************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n atLeastOneTask: function() {\n return atLeastOneTask;\n },\n scheduleImmediate: function() {\n return scheduleImmediate;\n },\n scheduleOnNextTick: function() {\n return scheduleOnNextTick;\n },\n waitAtLeastOneReactRenderTask: function() {\n return waitAtLeastOneReactRenderTask;\n }\n});\nconst scheduleOnNextTick = (cb)=>{\n // We use Promise.resolve().then() here so that the operation is scheduled at\n // the end of the promise job queue, we then add it to the next process tick\n // to ensure it's evaluated afterwards.\n //\n // This was inspired by the implementation of the DataLoader interface: https://github.com/graphql/dataloader/blob/d336bd15282664e0be4b4a657cb796f09bafbc6b/src/index.js#L213-L255\n //\n Promise.resolve().then(()=>{\n if (false) {} else {\n process.nextTick(cb);\n }\n });\n};\nconst scheduleImmediate = (cb)=>{\n if (false) {} else {\n setImmediate(cb);\n }\n};\nfunction atLeastOneTask() {\n return new Promise((resolve)=>scheduleImmediate(resolve));\n}\nfunction waitAtLeastOneReactRenderTask() {\n if (false) {} else {\n return new Promise((r)=>setImmediate(r));\n }\n}\n\n//# sourceMappingURL=scheduler.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9zY2hlZHVsZXIuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBS0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLEtBQW1DLEVBQUUsRUFFeEMsQ0FBQztBQUNWO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLFFBQVEsS0FBbUMsRUFBRSxFQUV4QyxDQUFDO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLEtBQW1DLEVBQUUsRUFFeEMsQ0FBQztBQUNOO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvbGliL3NjaGVkdWxlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGF0TGVhc3RPbmVUYXNrOiBudWxsLFxuICAgIHNjaGVkdWxlSW1tZWRpYXRlOiBudWxsLFxuICAgIHNjaGVkdWxlT25OZXh0VGljazogbnVsbCxcbiAgICB3YWl0QXRMZWFzdE9uZVJlYWN0UmVuZGVyVGFzazogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBhdExlYXN0T25lVGFzazogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBhdExlYXN0T25lVGFzaztcbiAgICB9LFxuICAgIHNjaGVkdWxlSW1tZWRpYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVkdWxlSW1tZWRpYXRlO1xuICAgIH0sXG4gICAgc2NoZWR1bGVPbk5leHRUaWNrOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVkdWxlT25OZXh0VGljaztcbiAgICB9LFxuICAgIHdhaXRBdExlYXN0T25lUmVhY3RSZW5kZXJUYXNrOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHdhaXRBdExlYXN0T25lUmVhY3RSZW5kZXJUYXNrO1xuICAgIH1cbn0pO1xuY29uc3Qgc2NoZWR1bGVPbk5leHRUaWNrID0gKGNiKT0+e1xuICAgIC8vIFdlIHVzZSBQcm9taXNlLnJlc29sdmUoKS50aGVuKCkgaGVyZSBzbyB0aGF0IHRoZSBvcGVyYXRpb24gaXMgc2NoZWR1bGVkIGF0XG4gICAgLy8gdGhlIGVuZCBvZiB0aGUgcHJvbWlzZSBqb2IgcXVldWUsIHdlIHRoZW4gYWRkIGl0IHRvIHRoZSBuZXh0IHByb2Nlc3MgdGlja1xuICAgIC8vIHRvIGVuc3VyZSBpdCdzIGV2YWx1YXRlZCBhZnRlcndhcmRzLlxuICAgIC8vXG4gICAgLy8gVGhpcyB3YXMgaW5zcGlyZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBEYXRhTG9hZGVyIGludGVyZmFjZTogaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZGF0YWxvYWRlci9ibG9iL2QzMzZiZDE1MjgyNjY0ZTBiZTRiNGE2NTdjYjc5NmYwOWJhZmJjNmIvc3JjL2luZGV4LmpzI0wyMTMtTDI1NVxuICAgIC8vXG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTkVYVF9SVU5USU1FID09PSAnZWRnZScpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoY2IsIDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhjYik7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5jb25zdCBzY2hlZHVsZUltbWVkaWF0ZSA9IChjYik9PntcbiAgICBpZiAocHJvY2Vzcy5lbnYuTkVYVF9SVU5USU1FID09PSAnZWRnZScpIHtcbiAgICAgICAgc2V0VGltZW91dChjYiwgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc2V0SW1tZWRpYXRlKGNiKTtcbiAgICB9XG59O1xuZnVuY3Rpb24gYXRMZWFzdE9uZVRhc2soKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKT0+c2NoZWR1bGVJbW1lZGlhdGUocmVzb2x2ZSkpO1xufVxuZnVuY3Rpb24gd2FpdEF0TGVhc3RPbmVSZWFjdFJlbmRlclRhc2soKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSA9PT0gJ2VkZ2UnKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocik9PnNldFRpbWVvdXQociwgMCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocik9PnNldEltbWVkaWF0ZShyKSk7XG4gICAgfVxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1zY2hlZHVsZXIuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/lib/scheduler.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/next-devtools/dev-overlay.shim.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/next/dist/next-devtools/dev-overlay.shim.js ***!
|
||
\******************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n dispatcher: function() {\n return dispatcher;\n },\n renderAppDevOverlay: function() {\n return renderAppDevOverlay;\n },\n renderPagesDevOverlay: function() {\n return renderPagesDevOverlay;\n }\n});\nfunction renderAppDevOverlay() {\n throw Object.defineProperty(new Error(\"Next DevTools: Can't render in this environment. This is a bug in Next.js\"), \"__NEXT_ERROR_CODE\", {\n value: \"E697\",\n enumerable: false,\n configurable: true\n });\n}\nfunction renderPagesDevOverlay() {\n throw Object.defineProperty(new Error(\"Next DevTools: Can't render in this environment. This is a bug in Next.js\"), \"__NEXT_ERROR_CODE\", {\n value: \"E697\",\n enumerable: false,\n configurable: true\n });\n}\nconst dispatcher = new Proxy({}, {\n get: (_, prop)=>{\n return ()=>{\n throw Object.defineProperty(new Error(`Next DevTools: Can't dispatch ${String(prop)} in this environment. This is a bug in Next.js`), \"__NEXT_ERROR_CODE\", {\n value: \"E698\",\n enumerable: false,\n configurable: true\n });\n };\n }\n});\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=dev-overlay.shim.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkuc2hpbS5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FJTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQSxtRkFBbUYsY0FBYztBQUNqRztBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQSx5REFBeUQsYUFBYTtBQUN0RTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkuc2hpbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGRpc3BhdGNoZXI6IG51bGwsXG4gICAgcmVuZGVyQXBwRGV2T3ZlcmxheTogbnVsbCxcbiAgICByZW5kZXJQYWdlc0Rldk92ZXJsYXk6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgZGlzcGF0Y2hlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBkaXNwYXRjaGVyO1xuICAgIH0sXG4gICAgcmVuZGVyQXBwRGV2T3ZlcmxheTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZW5kZXJBcHBEZXZPdmVybGF5O1xuICAgIH0sXG4gICAgcmVuZGVyUGFnZXNEZXZPdmVybGF5OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHJlbmRlclBhZ2VzRGV2T3ZlcmxheTtcbiAgICB9XG59KTtcbmZ1bmN0aW9uIHJlbmRlckFwcERldk92ZXJsYXkoKSB7XG4gICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcihcIk5leHQgRGV2VG9vbHM6IENhbid0IHJlbmRlciBpbiB0aGlzIGVudmlyb25tZW50LiBUaGlzIGlzIGEgYnVnIGluIE5leHQuanNcIiksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICB2YWx1ZTogXCJFNjk3XCIsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHJlbmRlclBhZ2VzRGV2T3ZlcmxheSgpIHtcbiAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKFwiTmV4dCBEZXZUb29sczogQ2FuJ3QgcmVuZGVyIGluIHRoaXMgZW52aXJvbm1lbnQuIFRoaXMgaXMgYSBidWcgaW4gTmV4dC5qc1wiKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgIHZhbHVlOiBcIkU2OTdcIixcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xufVxuY29uc3QgZGlzcGF0Y2hlciA9IG5ldyBQcm94eSh7fSwge1xuICAgIGdldDogKF8sIHByb3ApPT57XG4gICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcihgTmV4dCBEZXZUb29sczogQ2FuJ3QgZGlzcGF0Y2ggJHtTdHJpbmcocHJvcCl9IGluIHRoaXMgZW52aXJvbm1lbnQuIFRoaXMgaXMgYSBidWcgaW4gTmV4dC5qc2ApLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNjk4XCIsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICB9XG59KTtcblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGV2LW92ZXJsYXkuc2hpbS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/next-devtools/dev-overlay.shim.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/next-devtools/shared/console-error.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/next/dist/next-devtools/shared/console-error.js ***!
|
||
\**********************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("// To distinguish from React error.digest, we use a different symbol here to determine if the error is from console.error or unhandled promise rejection.\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createConsoleError: function() {\n return createConsoleError;\n },\n isConsoleError: function() {\n return isConsoleError;\n }\n});\nconst digestSym = Symbol.for('next.console.error.digest');\nfunction createConsoleError(message, environmentName) {\n const error = typeof message === 'string' ? Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n }) : message;\n error[digestSym] = 'NEXT_CONSOLE_ERROR';\n if (environmentName && !error.environmentName) {\n error.environmentName = environmentName;\n }\n return error;\n}\nconst isConsoleError = (error)=>{\n return error && error[digestSym] === 'NEXT_CONSOLE_ERROR';\n};\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=console-error.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvc2hhcmVkL2NvbnNvbGUtZXJyb3IuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FHTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EseURBQXlELGFBQWE7QUFDdEU7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9uZXh0LWRldnRvb2xzL3NoYXJlZC9jb25zb2xlLWVycm9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRvIGRpc3Rpbmd1aXNoIGZyb20gUmVhY3QgZXJyb3IuZGlnZXN0LCB3ZSB1c2UgYSBkaWZmZXJlbnQgc3ltYm9sIGhlcmUgdG8gZGV0ZXJtaW5lIGlmIHRoZSBlcnJvciBpcyBmcm9tIGNvbnNvbGUuZXJyb3Igb3IgdW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uLlxuXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVDb25zb2xlRXJyb3I6IG51bGwsXG4gICAgaXNDb25zb2xlRXJyb3I6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgY3JlYXRlQ29uc29sZUVycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUNvbnNvbGVFcnJvcjtcbiAgICB9LFxuICAgIGlzQ29uc29sZUVycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGlzQ29uc29sZUVycm9yO1xuICAgIH1cbn0pO1xuY29uc3QgZGlnZXN0U3ltID0gU3ltYm9sLmZvcignbmV4dC5jb25zb2xlLmVycm9yLmRpZ2VzdCcpO1xuZnVuY3Rpb24gY3JlYXRlQ29uc29sZUVycm9yKG1lc3NhZ2UsIGVudmlyb25tZW50TmFtZSkge1xuICAgIGNvbnN0IGVycm9yID0gdHlwZW9mIG1lc3NhZ2UgPT09ICdzdHJpbmcnID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcihtZXNzYWdlKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgIHZhbHVlOiBcIkUzOTRcIixcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pIDogbWVzc2FnZTtcbiAgICBlcnJvcltkaWdlc3RTeW1dID0gJ05FWFRfQ09OU09MRV9FUlJPUic7XG4gICAgaWYgKGVudmlyb25tZW50TmFtZSAmJiAhZXJyb3IuZW52aXJvbm1lbnROYW1lKSB7XG4gICAgICAgIGVycm9yLmVudmlyb25tZW50TmFtZSA9IGVudmlyb25tZW50TmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIGVycm9yO1xufVxuY29uc3QgaXNDb25zb2xlRXJyb3IgPSAoZXJyb3IpPT57XG4gICAgcmV0dXJuIGVycm9yICYmIGVycm9yW2RpZ2VzdFN5bV0gPT09ICdORVhUX0NPTlNPTEVfRVJST1InO1xufTtcblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29uc29sZS1lcnJvci5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/next-devtools/shared/console-error.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/next-devtools/shared/forward-logs-shared.js":
|
||
/*!****************************************************************************!*\
|
||
!*** ./node_modules/next/dist/next-devtools/shared/forward-logs-shared.js ***!
|
||
\****************************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n UNDEFINED_MARKER: function() {\n return UNDEFINED_MARKER;\n },\n patchConsoleMethod: function() {\n return patchConsoleMethod;\n }\n});\nconst UNDEFINED_MARKER = '__next_tagged_undefined';\nfunction patchConsoleMethod(methodName, wrapper) {\n const descriptor = Object.getOwnPropertyDescriptor(console, methodName);\n if (descriptor && (descriptor.configurable || descriptor.writable) && typeof descriptor.value === 'function') {\n const originalMethod = descriptor.value;\n const originalName = Object.getOwnPropertyDescriptor(originalMethod, 'name');\n const wrapperMethod = function(...args) {\n wrapper(methodName, ...args);\n originalMethod.apply(this, args);\n };\n if (originalName) {\n Object.defineProperty(wrapperMethod, 'name', originalName);\n }\n Object.defineProperty(console, methodName, {\n value: wrapperMethod\n });\n return ()=>{\n Object.defineProperty(console, methodName, {\n value: originalMethod,\n writable: descriptor.writable,\n configurable: descriptor.configurable\n });\n };\n }\n return ()=>{};\n}\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=forward-logs-shared.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvc2hhcmVkL2ZvcndhcmQtbG9ncy1zaGFyZWQuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBR0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5REFBeUQsYUFBYTtBQUN0RTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvc2hhcmVkL2ZvcndhcmQtbG9ncy1zaGFyZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBVTkRFRklORURfTUFSS0VSOiBudWxsLFxuICAgIHBhdGNoQ29uc29sZU1ldGhvZDogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBVTkRFRklORURfTUFSS0VSOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFVOREVGSU5FRF9NQVJLRVI7XG4gICAgfSxcbiAgICBwYXRjaENvbnNvbGVNZXRob2Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcGF0Y2hDb25zb2xlTWV0aG9kO1xuICAgIH1cbn0pO1xuY29uc3QgVU5ERUZJTkVEX01BUktFUiA9ICdfX25leHRfdGFnZ2VkX3VuZGVmaW5lZCc7XG5mdW5jdGlvbiBwYXRjaENvbnNvbGVNZXRob2QobWV0aG9kTmFtZSwgd3JhcHBlcikge1xuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbnNvbGUsIG1ldGhvZE5hbWUpO1xuICAgIGlmIChkZXNjcmlwdG9yICYmIChkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSB8fCBkZXNjcmlwdG9yLndyaXRhYmxlKSAmJiB0eXBlb2YgZGVzY3JpcHRvci52YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsTmFtZSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob3JpZ2luYWxNZXRob2QsICduYW1lJyk7XG4gICAgICAgIGNvbnN0IHdyYXBwZXJNZXRob2QgPSBmdW5jdGlvbiguLi5hcmdzKSB7XG4gICAgICAgICAgICB3cmFwcGVyKG1ldGhvZE5hbWUsIC4uLmFyZ3MpO1xuICAgICAgICAgICAgb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIH07XG4gICAgICAgIGlmIChvcmlnaW5hbE5hbWUpIHtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3cmFwcGVyTWV0aG9kLCAnbmFtZScsIG9yaWdpbmFsTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnNvbGUsIG1ldGhvZE5hbWUsIHtcbiAgICAgICAgICAgIHZhbHVlOiB3cmFwcGVyTWV0aG9kXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb25zb2xlLCBtZXRob2ROYW1lLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IG9yaWdpbmFsTWV0aG9kLFxuICAgICAgICAgICAgICAgIHdyaXRhYmxlOiBkZXNjcmlwdG9yLndyaXRhYmxlLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZGVzY3JpcHRvci5jb25maWd1cmFibGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gKCk9Pnt9O1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1mb3J3YXJkLWxvZ3Mtc2hhcmVkLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/next-devtools/shared/forward-logs-shared.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/next-devtools/userspace/app/app-dev-overlay-error-boundary.js":
|
||
/*!**********************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/next-devtools/userspace/app/app-dev-overlay-error-boundary.js ***!
|
||
\**********************************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"AppDevOverlayErrorBoundary\", ({\n enumerable: true,\n get: function() {\n return AppDevOverlayErrorBoundary;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\"));\nconst _nextdevtools = __webpack_require__(/*! next/dist/compiled/next-devtools */ \"(ssr)/./node_modules/next/dist/next-devtools/dev-overlay.shim.js\");\nconst _runtimeerrorhandler = __webpack_require__(/*! ../../../client/dev/runtime-error-handler */ \"(ssr)/./node_modules/next/dist/client/dev/runtime-error-handler.js\");\nconst _errorboundary = __webpack_require__(/*! ../../../client/components/error-boundary */ \"(ssr)/./node_modules/next/dist/client/components/error-boundary.js\");\nconst _globalerror = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../../../client/components/builtin/global-error */ \"(ssr)/./node_modules/next/dist/client/components/builtin/global-error.js\"));\nconst _segmentexplorernode = __webpack_require__(/*! ./segment-explorer-node */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js\");\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../../shared/lib/app-router-context.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js\");\nfunction ErroredHtml({ globalError: [GlobalError, globalErrorStyles], error, reset, unstable_retry }) {\n if (!error) {\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(\"html\", {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"head\", {}),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"body\", {})\n ]\n });\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_errorboundary.ErrorBoundary, {\n errorComponent: _globalerror.default,\n children: [\n globalErrorStyles,\n /*#__PURE__*/ (0, _jsxruntime.jsx)(GlobalError, {\n error: error,\n reset: reset,\n unstable_retry: unstable_retry\n })\n ]\n });\n}\nclass AppDevOverlayErrorBoundary extends _react.PureComponent {\n static{\n this.contextType = _approutercontextsharedruntime.AppRouterContext;\n }\n static getDerivedStateFromError(error) {\n _runtimeerrorhandler.RuntimeErrorHandler.hadRuntimeError = true;\n return {\n reactError: error\n };\n }\n componentDidCatch(err) {\n if ( true && err.message === _segmentexplorernode.SEGMENT_EXPLORER_SIMULATED_ERROR_MESSAGE) {\n return;\n }\n _nextdevtools.dispatcher.openErrorOverlay();\n }\n render() {\n const { children, globalError } = this.props;\n const { reactError } = this.state;\n const fallback = /*#__PURE__*/ (0, _jsxruntime.jsx)(ErroredHtml, {\n globalError: globalError,\n error: reactError,\n reset: this.reset,\n unstable_retry: this.unstable_retry\n });\n return reactError !== null ? fallback : children;\n }\n constructor(...args){\n super(...args), this.state = {\n reactError: null\n }, this.unstable_retry = ()=>{\n (0, _react.startTransition)(()=>{\n this.context?.refresh();\n this.reset();\n });\n }, this.reset = ()=>{\n this.setState({\n reactError: null\n });\n };\n }\n}\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=app-dev-overlay-error-boundary.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9hcHAtZGV2LW92ZXJsYXktZXJyb3ItYm91bmRhcnkuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRiw4REFBNkQ7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRixpQ0FBaUMsbUJBQU8sQ0FBQyxrSEFBeUM7QUFDbEYsa0NBQWtDLG1CQUFPLENBQUMsb0hBQTBDO0FBQ3BGLG9CQUFvQixtQkFBTyxDQUFDLHlIQUFtQjtBQUMvQyx5REFBeUQsbUJBQU8sQ0FBQyxpR0FBTztBQUN4RSxzQkFBc0IsbUJBQU8sQ0FBQywwR0FBa0M7QUFDaEUsNkJBQTZCLG1CQUFPLENBQUMscUhBQTJDO0FBQ2hGLHVCQUF1QixtQkFBTyxDQUFDLHFIQUEyQztBQUMxRSw4REFBOEQsbUJBQU8sQ0FBQyxpSUFBaUQ7QUFDdkgsNkJBQTZCLG1CQUFPLENBQUMsb0hBQXlCO0FBQzlELHVDQUF1QyxtQkFBTyxDQUFDLG1LQUF1RDtBQUN0Ryx1QkFBdUIsNkVBQTZFO0FBQ3BHO0FBQ0E7QUFDQTtBQUNBLDZEQUE2RDtBQUM3RCw2REFBNkQ7QUFDN0Q7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksS0FBc0M7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQix3QkFBd0I7QUFDeEMsZ0JBQWdCLGFBQWE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5REFBeUQsYUFBYTtBQUN0RTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9hcHAtZGV2LW92ZXJsYXktZXJyb3ItYm91bmRhcnkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJBcHBEZXZPdmVybGF5RXJyb3JCb3VuZGFyeVwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gQXBwRGV2T3ZlcmxheUVycm9yQm91bmRhcnk7XG4gICAgfVxufSk7XG5jb25zdCBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQgPSByZXF1aXJlKFwiQHN3Yy9oZWxwZXJzL18vX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0XCIpO1xuY29uc3QgX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkXCIpO1xuY29uc3QgX2pzeHJ1bnRpbWUgPSByZXF1aXJlKFwicmVhY3QvanN4LXJ1bnRpbWVcIik7XG5jb25zdCBfcmVhY3QgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmQuXyhyZXF1aXJlKFwicmVhY3RcIikpO1xuY29uc3QgX25leHRkZXZ0b29scyA9IHJlcXVpcmUoXCJuZXh0L2Rpc3QvY29tcGlsZWQvbmV4dC1kZXZ0b29sc1wiKTtcbmNvbnN0IF9ydW50aW1lZXJyb3JoYW5kbGVyID0gcmVxdWlyZShcIi4uLy4uLy4uL2NsaWVudC9kZXYvcnVudGltZS1lcnJvci1oYW5kbGVyXCIpO1xuY29uc3QgX2Vycm9yYm91bmRhcnkgPSByZXF1aXJlKFwiLi4vLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvZXJyb3ItYm91bmRhcnlcIik7XG5jb25zdCBfZ2xvYmFsZXJyb3IgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCIuLi8uLi8uLi9jbGllbnQvY29tcG9uZW50cy9idWlsdGluL2dsb2JhbC1lcnJvclwiKSk7XG5jb25zdCBfc2VnbWVudGV4cGxvcmVybm9kZSA9IHJlcXVpcmUoXCIuL3NlZ21lbnQtZXhwbG9yZXItbm9kZVwiKTtcbmNvbnN0IF9hcHByb3V0ZXJjb250ZXh0c2hhcmVkcnVudGltZSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZVwiKTtcbmZ1bmN0aW9uIEVycm9yZWRIdG1sKHsgZ2xvYmFsRXJyb3I6IFtHbG9iYWxFcnJvciwgZ2xvYmFsRXJyb3JTdHlsZXNdLCBlcnJvciwgcmVzZXQsIHVuc3RhYmxlX3JldHJ5IH0pIHtcbiAgICBpZiAoIWVycm9yKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3hzKShcImh0bWxcIiwge1xuICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwiaGVhZFwiLCB7fSksXG4gICAgICAgICAgICAgICAgLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcImJvZHlcIiwge30pXG4gICAgICAgICAgICBdXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4cykoX2Vycm9yYm91bmRhcnkuRXJyb3JCb3VuZGFyeSwge1xuICAgICAgICBlcnJvckNvbXBvbmVudDogX2dsb2JhbGVycm9yLmRlZmF1bHQsXG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICBnbG9iYWxFcnJvclN0eWxlcyxcbiAgICAgICAgICAgIC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoR2xvYmFsRXJyb3IsIHtcbiAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3IsXG4gICAgICAgICAgICAgICAgcmVzZXQ6IHJlc2V0LFxuICAgICAgICAgICAgICAgIHVuc3RhYmxlX3JldHJ5OiB1bnN0YWJsZV9yZXRyeVxuICAgICAgICAgICAgfSlcbiAgICAgICAgXVxuICAgIH0pO1xufVxuY2xhc3MgQXBwRGV2T3ZlcmxheUVycm9yQm91bmRhcnkgZXh0ZW5kcyBfcmVhY3QuUHVyZUNvbXBvbmVudCB7XG4gICAgc3RhdGlje1xuICAgICAgICB0aGlzLmNvbnRleHRUeXBlID0gX2FwcHJvdXRlcmNvbnRleHRzaGFyZWRydW50aW1lLkFwcFJvdXRlckNvbnRleHQ7XG4gICAgfVxuICAgIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IoZXJyb3IpIHtcbiAgICAgICAgX3J1bnRpbWVlcnJvcmhhbmRsZXIuUnVudGltZUVycm9ySGFuZGxlci5oYWRSdW50aW1lRXJyb3IgPSB0cnVlO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVhY3RFcnJvcjogZXJyb3JcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY29tcG9uZW50RGlkQ2F0Y2goZXJyKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50JyAmJiBlcnIubWVzc2FnZSA9PT0gX3NlZ21lbnRleHBsb3Jlcm5vZGUuU0VHTUVOVF9FWFBMT1JFUl9TSU1VTEFURURfRVJST1JfTUVTU0FHRSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIF9uZXh0ZGV2dG9vbHMuZGlzcGF0Y2hlci5vcGVuRXJyb3JPdmVybGF5KCk7XG4gICAgfVxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgeyBjaGlsZHJlbiwgZ2xvYmFsRXJyb3IgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHsgcmVhY3RFcnJvciB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgY29uc3QgZmFsbGJhY2sgPSAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKEVycm9yZWRIdG1sLCB7XG4gICAgICAgICAgICBnbG9iYWxFcnJvcjogZ2xvYmFsRXJyb3IsXG4gICAgICAgICAgICBlcnJvcjogcmVhY3RFcnJvcixcbiAgICAgICAgICAgIHJlc2V0OiB0aGlzLnJlc2V0LFxuICAgICAgICAgICAgdW5zdGFibGVfcmV0cnk6IHRoaXMudW5zdGFibGVfcmV0cnlcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZWFjdEVycm9yICE9PSBudWxsID8gZmFsbGJhY2sgOiBjaGlsZHJlbjtcbiAgICB9XG4gICAgY29uc3RydWN0b3IoLi4uYXJncyl7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3MpLCB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgcmVhY3RFcnJvcjogbnVsbFxuICAgICAgICB9LCB0aGlzLnVuc3RhYmxlX3JldHJ5ID0gKCk9PntcbiAgICAgICAgICAgICgwLCBfcmVhY3Quc3RhcnRUcmFuc2l0aW9uKSgoKT0+e1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dD8ucmVmcmVzaCgpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCB0aGlzLnJlc2V0ID0gKCk9PntcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgIHJlYWN0RXJyb3I6IG51bGxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgIH1cbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXBwLWRldi1vdmVybGF5LWVycm9yLWJvdW5kYXJ5LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/next-devtools/userspace/app/app-dev-overlay-error-boundary.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/replay-ssr-only-errors.js":
|
||
/*!*********************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/next-devtools/userspace/app/errors/replay-ssr-only-errors.js ***!
|
||
\*********************************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"ReplaySsrOnlyErrors\", ({\n enumerable: true,\n get: function() {\n return ReplaySsrOnlyErrors;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nconst _useerrorhandler = __webpack_require__(/*! ./use-error-handler */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/use-error-handler.js\");\nconst _isnextroutererror = __webpack_require__(/*! ../../../../client/components/is-next-router-error */ \"(ssr)/./node_modules/next/dist/client/components/is-next-router-error.js\");\nconst _constants = __webpack_require__(/*! ../../../../shared/lib/errors/constants */ \"(ssr)/./node_modules/next/dist/shared/lib/errors/constants.js\");\nfunction readSsrError() {\n if (typeof document === 'undefined') {\n return null;\n }\n const ssrErrorTemplateTag = document.querySelector('template[data-next-error-message]');\n if (ssrErrorTemplateTag) {\n const message = ssrErrorTemplateTag.getAttribute('data-next-error-message');\n const stack = ssrErrorTemplateTag.getAttribute('data-next-error-stack');\n const digest = ssrErrorTemplateTag.getAttribute('data-next-error-digest');\n const error = Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n if (digest) {\n ;\n error.digest = digest;\n }\n // Skip Next.js SSR'd internal errors that which will be handled by the error boundaries.\n if ((0, _isnextroutererror.isNextRouterError)(error)) {\n return null;\n }\n error.stack = stack || '';\n return error;\n }\n return null;\n}\nfunction ReplaySsrOnlyErrors({ onBlockingError }) {\n if (true) {\n // Need to read during render. The attributes will be gone after commit.\n const ssrError = readSsrError();\n // eslint-disable-next-line react-hooks/rules-of-hooks\n (0, _react.useEffect)(()=>{\n if (ssrError !== null) {\n // TODO(veil): Include original Owner Stack (NDX-905)\n // TODO(veil): Mark as recoverable error\n // TODO(veil): console.error\n (0, _useerrorhandler.handleClientError)(ssrError);\n // If it's missing root tags, we can't recover, make it blocking.\n if (ssrError.digest === _constants.MISSING_ROOT_TAGS_ERROR) {\n onBlockingError();\n }\n }\n }, [\n ssrError,\n onBlockingError\n ]);\n }\n return null;\n}\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=replay-ssr-only-errors.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9lcnJvcnMvcmVwbGF5LXNzci1vbmx5LWVycm9ycy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLHVEQUFzRDtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGLGVBQWUsbUJBQU8sQ0FBQyxpR0FBTztBQUM5Qix5QkFBeUIsbUJBQU8sQ0FBQyxtSEFBcUI7QUFDdEQsMkJBQTJCLG1CQUFPLENBQUMsb0lBQW9EO0FBQ3ZGLG1CQUFtQixtQkFBTyxDQUFDLDhHQUF5QztBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixpQkFBaUI7QUFDaEQsUUFBUSxJQUFxQztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlEQUF5RCxhQUFhO0FBQ3RFO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvbmV4dC1kZXZ0b29scy91c2Vyc3BhY2UvYXBwL2Vycm9ycy9yZXBsYXktc3NyLW9ubHktZXJyb3JzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVwbGF5U3NyT25seUVycm9yc1wiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUmVwbGF5U3NyT25seUVycm9ycztcbiAgICB9XG59KTtcbmNvbnN0IF9yZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbmNvbnN0IF91c2VlcnJvcmhhbmRsZXIgPSByZXF1aXJlKFwiLi91c2UtZXJyb3ItaGFuZGxlclwiKTtcbmNvbnN0IF9pc25leHRyb3V0ZXJlcnJvciA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9jbGllbnQvY29tcG9uZW50cy9pcy1uZXh0LXJvdXRlci1lcnJvclwiKTtcbmNvbnN0IF9jb25zdGFudHMgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vc2hhcmVkL2xpYi9lcnJvcnMvY29uc3RhbnRzXCIpO1xuZnVuY3Rpb24gcmVhZFNzckVycm9yKCkge1xuICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBzc3JFcnJvclRlbXBsYXRlVGFnID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndGVtcGxhdGVbZGF0YS1uZXh0LWVycm9yLW1lc3NhZ2VdJyk7XG4gICAgaWYgKHNzckVycm9yVGVtcGxhdGVUYWcpIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IHNzckVycm9yVGVtcGxhdGVUYWcuZ2V0QXR0cmlidXRlKCdkYXRhLW5leHQtZXJyb3ItbWVzc2FnZScpO1xuICAgICAgICBjb25zdCBzdGFjayA9IHNzckVycm9yVGVtcGxhdGVUYWcuZ2V0QXR0cmlidXRlKCdkYXRhLW5leHQtZXJyb3Itc3RhY2snKTtcbiAgICAgICAgY29uc3QgZGlnZXN0ID0gc3NyRXJyb3JUZW1wbGF0ZVRhZy5nZXRBdHRyaWJ1dGUoJ2RhdGEtbmV4dC1lcnJvci1kaWdlc3QnKTtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKG1lc3NhZ2UpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgIHZhbHVlOiBcIkUzOTRcIixcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZGlnZXN0KSB7XG4gICAgICAgICAgICA7XG4gICAgICAgICAgICBlcnJvci5kaWdlc3QgPSBkaWdlc3Q7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU2tpcCBOZXh0LmpzIFNTUidkIGludGVybmFsIGVycm9ycyB0aGF0IHdoaWNoIHdpbGwgYmUgaGFuZGxlZCBieSB0aGUgZXJyb3IgYm91bmRhcmllcy5cbiAgICAgICAgaWYgKCgwLCBfaXNuZXh0cm91dGVyZXJyb3IuaXNOZXh0Um91dGVyRXJyb3IpKGVycm9yKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZXJyb3Iuc3RhY2sgPSBzdGFjayB8fCAnJztcbiAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIFJlcGxheVNzck9ubHlFcnJvcnMoeyBvbkJsb2NraW5nRXJyb3IgfSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIC8vIE5lZWQgdG8gcmVhZCBkdXJpbmcgcmVuZGVyLiBUaGUgYXR0cmlidXRlcyB3aWxsIGJlIGdvbmUgYWZ0ZXIgY29tbWl0LlxuICAgICAgICBjb25zdCBzc3JFcnJvciA9IHJlYWRTc3JFcnJvcigpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICAgICAgKDAsIF9yZWFjdC51c2VFZmZlY3QpKCgpPT57XG4gICAgICAgICAgICBpZiAoc3NyRXJyb3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPKHZlaWwpOiBJbmNsdWRlIG9yaWdpbmFsIE93bmVyIFN0YWNrIChORFgtOTA1KVxuICAgICAgICAgICAgICAgIC8vIFRPRE8odmVpbCk6IE1hcmsgYXMgcmVjb3ZlcmFibGUgZXJyb3JcbiAgICAgICAgICAgICAgICAvLyBUT0RPKHZlaWwpOiBjb25zb2xlLmVycm9yXG4gICAgICAgICAgICAgICAgKDAsIF91c2VlcnJvcmhhbmRsZXIuaGFuZGxlQ2xpZW50RXJyb3IpKHNzckVycm9yKTtcbiAgICAgICAgICAgICAgICAvLyBJZiBpdCdzIG1pc3Npbmcgcm9vdCB0YWdzLCB3ZSBjYW4ndCByZWNvdmVyLCBtYWtlIGl0IGJsb2NraW5nLlxuICAgICAgICAgICAgICAgIGlmIChzc3JFcnJvci5kaWdlc3QgPT09IF9jb25zdGFudHMuTUlTU0lOR19ST09UX1RBR1NfRVJST1IpIHtcbiAgICAgICAgICAgICAgICAgICAgb25CbG9ja2luZ0Vycm9yKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCBbXG4gICAgICAgICAgICBzc3JFcnJvcixcbiAgICAgICAgICAgIG9uQmxvY2tpbmdFcnJvclxuICAgICAgICBdKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlcGxheS1zc3Itb25seS1lcnJvcnMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/replay-ssr-only-errors.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/stitched-error.js":
|
||
/*!*************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/next-devtools/userspace/app/errors/stitched-error.js ***!
|
||
\*************************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n coerceError: function() {\n return coerceError;\n },\n decorateDevError: function() {\n return decorateDevError;\n },\n getOwnerStack: function() {\n return getOwnerStack;\n },\n setOwnerStack: function() {\n return setOwnerStack;\n },\n setOwnerStackIfAvailable: function() {\n return setOwnerStackIfAvailable;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\"));\nconst _iserror = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../../../../lib/is-error */ \"(ssr)/./node_modules/next/dist/lib/is-error.js\"));\nconst ownerStacks = new WeakMap();\nfunction getOwnerStack(error) {\n return ownerStacks.get(error);\n}\nfunction setOwnerStack(error, stack) {\n ownerStacks.set(error, stack);\n}\nfunction coerceError(value) {\n return (0, _iserror.default)(value) ? value : Object.defineProperty(new Error('' + value), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n}\nfunction setOwnerStackIfAvailable(error) {\n // React 18 and prod does not have `captureOwnerStack`\n if ('captureOwnerStack' in _react.default) {\n const ownerStack = _react.default.captureOwnerStack();\n // Only set if we captured a valid owner stack, or if none exists yet.\n // This prevents overwriting a valid owner stack captured earlier\n // (e.g., in onRecoverableError) with null captured later.\n if (ownerStack || !ownerStacks.has(error)) {\n setOwnerStack(error, ownerStack);\n }\n }\n}\nfunction decorateDevError(thrownValue) {\n const error = coerceError(thrownValue);\n setOwnerStackIfAvailable(error);\n return error;\n}\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=stitched-error.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9lcnJvcnMvc3RpdGNoZWQtZXJyb3IuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBTUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsaUNBQWlDLG1CQUFPLENBQUMsa0hBQXlDO0FBQ2xGLHdEQUF3RCxtQkFBTyxDQUFDLGlHQUFPO0FBQ3ZFLDBEQUEwRCxtQkFBTyxDQUFDLGdGQUEwQjtBQUM1RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EseURBQXlELGFBQWE7QUFDdEU7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS9hcHAvZXJyb3JzL3N0aXRjaGVkLWVycm9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgY29lcmNlRXJyb3I6IG51bGwsXG4gICAgZGVjb3JhdGVEZXZFcnJvcjogbnVsbCxcbiAgICBnZXRPd25lclN0YWNrOiBudWxsLFxuICAgIHNldE93bmVyU3RhY2s6IG51bGwsXG4gICAgc2V0T3duZXJTdGFja0lmQXZhaWxhYmxlOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIGNvZXJjZUVycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNvZXJjZUVycm9yO1xuICAgIH0sXG4gICAgZGVjb3JhdGVEZXZFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBkZWNvcmF0ZURldkVycm9yO1xuICAgIH0sXG4gICAgZ2V0T3duZXJTdGFjazogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRPd25lclN0YWNrO1xuICAgIH0sXG4gICAgc2V0T3duZXJTdGFjazogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzZXRPd25lclN0YWNrO1xuICAgIH0sXG4gICAgc2V0T3duZXJTdGFja0lmQXZhaWxhYmxlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHNldE93bmVyU3RhY2tJZkF2YWlsYWJsZTtcbiAgICB9XG59KTtcbmNvbnN0IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRcIik7XG5jb25zdCBfcmVhY3QgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5jb25zdCBfaXNlcnJvciA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcIi4uLy4uLy4uLy4uL2xpYi9pcy1lcnJvclwiKSk7XG5jb25zdCBvd25lclN0YWNrcyA9IG5ldyBXZWFrTWFwKCk7XG5mdW5jdGlvbiBnZXRPd25lclN0YWNrKGVycm9yKSB7XG4gICAgcmV0dXJuIG93bmVyU3RhY2tzLmdldChlcnJvcik7XG59XG5mdW5jdGlvbiBzZXRPd25lclN0YWNrKGVycm9yLCBzdGFjaykge1xuICAgIG93bmVyU3RhY2tzLnNldChlcnJvciwgc3RhY2spO1xufVxuZnVuY3Rpb24gY29lcmNlRXJyb3IodmFsdWUpIHtcbiAgICByZXR1cm4gKDAsIF9pc2Vycm9yLmRlZmF1bHQpKHZhbHVlKSA/IHZhbHVlIDogT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcignJyArIHZhbHVlKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgIHZhbHVlOiBcIkUzOTRcIixcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xufVxuZnVuY3Rpb24gc2V0T3duZXJTdGFja0lmQXZhaWxhYmxlKGVycm9yKSB7XG4gICAgLy8gUmVhY3QgMTggYW5kIHByb2QgZG9lcyBub3QgaGF2ZSBgY2FwdHVyZU93bmVyU3RhY2tgXG4gICAgaWYgKCdjYXB0dXJlT3duZXJTdGFjaycgaW4gX3JlYWN0LmRlZmF1bHQpIHtcbiAgICAgICAgY29uc3Qgb3duZXJTdGFjayA9IF9yZWFjdC5kZWZhdWx0LmNhcHR1cmVPd25lclN0YWNrKCk7XG4gICAgICAgIC8vIE9ubHkgc2V0IGlmIHdlIGNhcHR1cmVkIGEgdmFsaWQgb3duZXIgc3RhY2ssIG9yIGlmIG5vbmUgZXhpc3RzIHlldC5cbiAgICAgICAgLy8gVGhpcyBwcmV2ZW50cyBvdmVyd3JpdGluZyBhIHZhbGlkIG93bmVyIHN0YWNrIGNhcHR1cmVkIGVhcmxpZXJcbiAgICAgICAgLy8gKGUuZy4sIGluIG9uUmVjb3ZlcmFibGVFcnJvcikgd2l0aCBudWxsIGNhcHR1cmVkIGxhdGVyLlxuICAgICAgICBpZiAob3duZXJTdGFjayB8fCAhb3duZXJTdGFja3MuaGFzKGVycm9yKSkge1xuICAgICAgICAgICAgc2V0T3duZXJTdGFjayhlcnJvciwgb3duZXJTdGFjayk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBkZWNvcmF0ZURldkVycm9yKHRocm93blZhbHVlKSB7XG4gICAgY29uc3QgZXJyb3IgPSBjb2VyY2VFcnJvcih0aHJvd25WYWx1ZSk7XG4gICAgc2V0T3duZXJTdGFja0lmQXZhaWxhYmxlKGVycm9yKTtcbiAgICByZXR1cm4gZXJyb3I7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXN0aXRjaGVkLWVycm9yLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/stitched-error.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/use-error-handler.js":
|
||
/*!****************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/next-devtools/userspace/app/errors/use-error-handler.js ***!
|
||
\****************************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n handleClientError: function() {\n return handleClientError;\n },\n handleConsoleError: function() {\n return handleConsoleError;\n },\n handleGlobalErrors: function() {\n return handleGlobalErrors;\n },\n useErrorHandler: function() {\n return useErrorHandler;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nconst _isnextroutererror = __webpack_require__(/*! ../../../../client/components/is-next-router-error */ \"(ssr)/./node_modules/next/dist/client/components/is-next-router-error.js\");\nconst _console = __webpack_require__(/*! ../../../../client/lib/console */ \"(ssr)/./node_modules/next/dist/client/lib/console.js\");\nconst _iserror = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../../../../lib/is-error */ \"(ssr)/./node_modules/next/dist/lib/is-error.js\"));\nconst _consoleerror = __webpack_require__(/*! ../../../shared/console-error */ \"(ssr)/./node_modules/next/dist/next-devtools/shared/console-error.js\");\nconst _stitchederror = __webpack_require__(/*! ./stitched-error */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/stitched-error.js\");\nconst _forwardlogs = __webpack_require__(/*! ../forward-logs */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/forward-logs.js\");\nconst queueMicroTask = globalThis.queueMicrotask || ((cb)=>Promise.resolve().then(cb));\nconst errorQueue = [];\nconst errorHandlers = [];\nconst rejectionQueue = [];\nconst rejectionHandlers = [];\nfunction handleConsoleError(originError, consoleErrorArgs) {\n let error;\n const { environmentName } = (0, _console.parseConsoleArgs)(consoleErrorArgs);\n if ((0, _iserror.default)(originError)) {\n error = (0, _consoleerror.createConsoleError)(originError, environmentName);\n } else {\n error = (0, _consoleerror.createConsoleError)((0, _console.formatConsoleArgs)(consoleErrorArgs), environmentName);\n }\n (0, _stitchederror.setOwnerStackIfAvailable)(error);\n errorQueue.push(error);\n for (const handler of errorHandlers){\n // Delayed the error being passed to React Dev Overlay,\n // avoid the state being synchronously updated in the component.\n queueMicroTask(()=>{\n handler(error);\n });\n }\n}\nfunction handleClientError(error) {\n errorQueue.push(error);\n for (const handler of errorHandlers){\n // Delayed the error being passed to React Dev Overlay,\n // avoid the state being synchronously updated in the component.\n queueMicroTask(()=>{\n handler(error);\n });\n }\n}\nfunction useErrorHandler(handleOnUnhandledError, handleOnUnhandledRejection) {\n (0, _react.useEffect)(()=>{\n // Handle queued errors.\n errorQueue.forEach(handleOnUnhandledError);\n rejectionQueue.forEach(handleOnUnhandledRejection);\n // Listen to new errors.\n errorHandlers.push(handleOnUnhandledError);\n rejectionHandlers.push(handleOnUnhandledRejection);\n return ()=>{\n // Remove listeners.\n errorHandlers.splice(errorHandlers.indexOf(handleOnUnhandledError), 1);\n rejectionHandlers.splice(rejectionHandlers.indexOf(handleOnUnhandledRejection), 1);\n // Reset error queues.\n errorQueue.splice(0, errorQueue.length);\n rejectionQueue.splice(0, rejectionQueue.length);\n };\n }, [\n handleOnUnhandledError,\n handleOnUnhandledRejection\n ]);\n}\nfunction onUnhandledError(event) {\n const thrownValue = event.error;\n if ((0, _isnextroutererror.isNextRouterError)(thrownValue)) {\n event.preventDefault();\n return false;\n }\n // When there's an error property present, we log the error to error overlay.\n // Otherwise we don't do anything as it's not logging in the console either.\n if (thrownValue) {\n const error = (0, _stitchederror.coerceError)(thrownValue);\n (0, _stitchederror.setOwnerStackIfAvailable)(error);\n handleClientError(error);\n (0, _forwardlogs.forwardUnhandledError)(error);\n }\n}\nfunction onUnhandledRejection(ev) {\n const reason = ev?.reason;\n if ((0, _isnextroutererror.isNextRouterError)(reason)) {\n ev.preventDefault();\n return;\n }\n const error = (0, _stitchederror.coerceError)(reason);\n (0, _stitchederror.setOwnerStackIfAvailable)(error);\n rejectionQueue.push(error);\n for (const handler of rejectionHandlers){\n handler(error);\n }\n (0, _forwardlogs.logUnhandledRejection)(reason);\n}\nfunction handleGlobalErrors() {\n if (typeof window !== 'undefined') {\n try {\n // Increase the number of stack frames on the client\n Error.stackTraceLimit = 50;\n } catch {}\n window.addEventListener('error', onUnhandledError);\n window.addEventListener('unhandledrejection', onUnhandledRejection);\n }\n}\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=use-error-handler.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9lcnJvcnMvdXNlLWVycm9yLWhhbmRsZXIuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBS0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELGlDQUFpQyxtQkFBTyxDQUFDLGtIQUF5QztBQUNsRixlQUFlLG1CQUFPLENBQUMsaUdBQU87QUFDOUIsMkJBQTJCLG1CQUFPLENBQUMsb0lBQW9EO0FBQ3ZGLGlCQUFpQixtQkFBTyxDQUFDLDRGQUFnQztBQUN6RCwwREFBMEQsbUJBQU8sQ0FBQyxnRkFBMEI7QUFDNUYsc0JBQXNCLG1CQUFPLENBQUMsMkdBQStCO0FBQzdELHVCQUF1QixtQkFBTyxDQUFDLDZHQUFrQjtBQUNqRCxxQkFBcUIsbUJBQU8sQ0FBQyxtR0FBaUI7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGtCQUFrQjtBQUM5QjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5REFBeUQsYUFBYTtBQUN0RTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9lcnJvcnMvdXNlLWVycm9yLWhhbmRsZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBoYW5kbGVDbGllbnRFcnJvcjogbnVsbCxcbiAgICBoYW5kbGVDb25zb2xlRXJyb3I6IG51bGwsXG4gICAgaGFuZGxlR2xvYmFsRXJyb3JzOiBudWxsLFxuICAgIHVzZUVycm9ySGFuZGxlcjogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBoYW5kbGVDbGllbnRFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBoYW5kbGVDbGllbnRFcnJvcjtcbiAgICB9LFxuICAgIGhhbmRsZUNvbnNvbGVFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBoYW5kbGVDb25zb2xlRXJyb3I7XG4gICAgfSxcbiAgICBoYW5kbGVHbG9iYWxFcnJvcnM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaGFuZGxlR2xvYmFsRXJyb3JzO1xuICAgIH0sXG4gICAgdXNlRXJyb3JIYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHVzZUVycm9ySGFuZGxlcjtcbiAgICB9XG59KTtcbmNvbnN0IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRcIik7XG5jb25zdCBfcmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG5jb25zdCBfaXNuZXh0cm91dGVyZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvaXMtbmV4dC1yb3V0ZXItZXJyb3JcIik7XG5jb25zdCBfY29uc29sZSA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9jbGllbnQvbGliL2NvbnNvbGVcIik7XG5jb25zdCBfaXNlcnJvciA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcIi4uLy4uLy4uLy4uL2xpYi9pcy1lcnJvclwiKSk7XG5jb25zdCBfY29uc29sZWVycm9yID0gcmVxdWlyZShcIi4uLy4uLy4uL3NoYXJlZC9jb25zb2xlLWVycm9yXCIpO1xuY29uc3QgX3N0aXRjaGVkZXJyb3IgPSByZXF1aXJlKFwiLi9zdGl0Y2hlZC1lcnJvclwiKTtcbmNvbnN0IF9mb3J3YXJkbG9ncyA9IHJlcXVpcmUoXCIuLi9mb3J3YXJkLWxvZ3NcIik7XG5jb25zdCBxdWV1ZU1pY3JvVGFzayA9IGdsb2JhbFRoaXMucXVldWVNaWNyb3Rhc2sgfHwgKChjYik9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oY2IpKTtcbmNvbnN0IGVycm9yUXVldWUgPSBbXTtcbmNvbnN0IGVycm9ySGFuZGxlcnMgPSBbXTtcbmNvbnN0IHJlamVjdGlvblF1ZXVlID0gW107XG5jb25zdCByZWplY3Rpb25IYW5kbGVycyA9IFtdO1xuZnVuY3Rpb24gaGFuZGxlQ29uc29sZUVycm9yKG9yaWdpbkVycm9yLCBjb25zb2xlRXJyb3JBcmdzKSB7XG4gICAgbGV0IGVycm9yO1xuICAgIGNvbnN0IHsgZW52aXJvbm1lbnROYW1lIH0gPSAoMCwgX2NvbnNvbGUucGFyc2VDb25zb2xlQXJncykoY29uc29sZUVycm9yQXJncyk7XG4gICAgaWYgKCgwLCBfaXNlcnJvci5kZWZhdWx0KShvcmlnaW5FcnJvcikpIHtcbiAgICAgICAgZXJyb3IgPSAoMCwgX2NvbnNvbGVlcnJvci5jcmVhdGVDb25zb2xlRXJyb3IpKG9yaWdpbkVycm9yLCBlbnZpcm9ubWVudE5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGVycm9yID0gKDAsIF9jb25zb2xlZXJyb3IuY3JlYXRlQ29uc29sZUVycm9yKSgoMCwgX2NvbnNvbGUuZm9ybWF0Q29uc29sZUFyZ3MpKGNvbnNvbGVFcnJvckFyZ3MpLCBlbnZpcm9ubWVudE5hbWUpO1xuICAgIH1cbiAgICAoMCwgX3N0aXRjaGVkZXJyb3Iuc2V0T3duZXJTdGFja0lmQXZhaWxhYmxlKShlcnJvcik7XG4gICAgZXJyb3JRdWV1ZS5wdXNoKGVycm9yKTtcbiAgICBmb3IgKGNvbnN0IGhhbmRsZXIgb2YgZXJyb3JIYW5kbGVycyl7XG4gICAgICAgIC8vIERlbGF5ZWQgdGhlIGVycm9yIGJlaW5nIHBhc3NlZCB0byBSZWFjdCBEZXYgT3ZlcmxheSxcbiAgICAgICAgLy8gYXZvaWQgdGhlIHN0YXRlIGJlaW5nIHN5bmNocm9ub3VzbHkgdXBkYXRlZCBpbiB0aGUgY29tcG9uZW50LlxuICAgICAgICBxdWV1ZU1pY3JvVGFzaygoKT0+e1xuICAgICAgICAgICAgaGFuZGxlcihlcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGhhbmRsZUNsaWVudEVycm9yKGVycm9yKSB7XG4gICAgZXJyb3JRdWV1ZS5wdXNoKGVycm9yKTtcbiAgICBmb3IgKGNvbnN0IGhhbmRsZXIgb2YgZXJyb3JIYW5kbGVycyl7XG4gICAgICAgIC8vIERlbGF5ZWQgdGhlIGVycm9yIGJlaW5nIHBhc3NlZCB0byBSZWFjdCBEZXYgT3ZlcmxheSxcbiAgICAgICAgLy8gYXZvaWQgdGhlIHN0YXRlIGJlaW5nIHN5bmNocm9ub3VzbHkgdXBkYXRlZCBpbiB0aGUgY29tcG9uZW50LlxuICAgICAgICBxdWV1ZU1pY3JvVGFzaygoKT0+e1xuICAgICAgICAgICAgaGFuZGxlcihlcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHVzZUVycm9ySGFuZGxlcihoYW5kbGVPblVuaGFuZGxlZEVycm9yLCBoYW5kbGVPblVuaGFuZGxlZFJlamVjdGlvbikge1xuICAgICgwLCBfcmVhY3QudXNlRWZmZWN0KSgoKT0+e1xuICAgICAgICAvLyBIYW5kbGUgcXVldWVkIGVycm9ycy5cbiAgICAgICAgZXJyb3JRdWV1ZS5mb3JFYWNoKGhhbmRsZU9uVW5oYW5kbGVkRXJyb3IpO1xuICAgICAgICByZWplY3Rpb25RdWV1ZS5mb3JFYWNoKGhhbmRsZU9uVW5oYW5kbGVkUmVqZWN0aW9uKTtcbiAgICAgICAgLy8gTGlzdGVuIHRvIG5ldyBlcnJvcnMuXG4gICAgICAgIGVycm9ySGFuZGxlcnMucHVzaChoYW5kbGVPblVuaGFuZGxlZEVycm9yKTtcbiAgICAgICAgcmVqZWN0aW9uSGFuZGxlcnMucHVzaChoYW5kbGVPblVuaGFuZGxlZFJlamVjdGlvbik7XG4gICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgLy8gUmVtb3ZlIGxpc3RlbmVycy5cbiAgICAgICAgICAgIGVycm9ySGFuZGxlcnMuc3BsaWNlKGVycm9ySGFuZGxlcnMuaW5kZXhPZihoYW5kbGVPblVuaGFuZGxlZEVycm9yKSwgMSk7XG4gICAgICAgICAgICByZWplY3Rpb25IYW5kbGVycy5zcGxpY2UocmVqZWN0aW9uSGFuZGxlcnMuaW5kZXhPZihoYW5kbGVPblVuaGFuZGxlZFJlamVjdGlvbiksIDEpO1xuICAgICAgICAgICAgLy8gUmVzZXQgZXJyb3IgcXVldWVzLlxuICAgICAgICAgICAgZXJyb3JRdWV1ZS5zcGxpY2UoMCwgZXJyb3JRdWV1ZS5sZW5ndGgpO1xuICAgICAgICAgICAgcmVqZWN0aW9uUXVldWUuc3BsaWNlKDAsIHJlamVjdGlvblF1ZXVlLmxlbmd0aCk7XG4gICAgICAgIH07XG4gICAgfSwgW1xuICAgICAgICBoYW5kbGVPblVuaGFuZGxlZEVycm9yLFxuICAgICAgICBoYW5kbGVPblVuaGFuZGxlZFJlamVjdGlvblxuICAgIF0pO1xufVxuZnVuY3Rpb24gb25VbmhhbmRsZWRFcnJvcihldmVudCkge1xuICAgIGNvbnN0IHRocm93blZhbHVlID0gZXZlbnQuZXJyb3I7XG4gICAgaWYgKCgwLCBfaXNuZXh0cm91dGVyZXJyb3IuaXNOZXh0Um91dGVyRXJyb3IpKHRocm93blZhbHVlKSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIFdoZW4gdGhlcmUncyBhbiBlcnJvciBwcm9wZXJ0eSBwcmVzZW50LCB3ZSBsb2cgdGhlIGVycm9yIHRvIGVycm9yIG92ZXJsYXkuXG4gICAgLy8gT3RoZXJ3aXNlIHdlIGRvbid0IGRvIGFueXRoaW5nIGFzIGl0J3Mgbm90IGxvZ2dpbmcgaW4gdGhlIGNvbnNvbGUgZWl0aGVyLlxuICAgIGlmICh0aHJvd25WYWx1ZSkge1xuICAgICAgICBjb25zdCBlcnJvciA9ICgwLCBfc3RpdGNoZWRlcnJvci5jb2VyY2VFcnJvcikodGhyb3duVmFsdWUpO1xuICAgICAgICAoMCwgX3N0aXRjaGVkZXJyb3Iuc2V0T3duZXJTdGFja0lmQXZhaWxhYmxlKShlcnJvcik7XG4gICAgICAgIGhhbmRsZUNsaWVudEVycm9yKGVycm9yKTtcbiAgICAgICAgKDAsIF9mb3J3YXJkbG9ncy5mb3J3YXJkVW5oYW5kbGVkRXJyb3IpKGVycm9yKTtcbiAgICB9XG59XG5mdW5jdGlvbiBvblVuaGFuZGxlZFJlamVjdGlvbihldikge1xuICAgIGNvbnN0IHJlYXNvbiA9IGV2Py5yZWFzb247XG4gICAgaWYgKCgwLCBfaXNuZXh0cm91dGVyZXJyb3IuaXNOZXh0Um91dGVyRXJyb3IpKHJlYXNvbikpIHtcbiAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBlcnJvciA9ICgwLCBfc3RpdGNoZWRlcnJvci5jb2VyY2VFcnJvcikocmVhc29uKTtcbiAgICAoMCwgX3N0aXRjaGVkZXJyb3Iuc2V0T3duZXJTdGFja0lmQXZhaWxhYmxlKShlcnJvcik7XG4gICAgcmVqZWN0aW9uUXVldWUucHVzaChlcnJvcik7XG4gICAgZm9yIChjb25zdCBoYW5kbGVyIG9mIHJlamVjdGlvbkhhbmRsZXJzKXtcbiAgICAgICAgaGFuZGxlcihlcnJvcik7XG4gICAgfVxuICAgICgwLCBfZm9yd2FyZGxvZ3MubG9nVW5oYW5kbGVkUmVqZWN0aW9uKShyZWFzb24pO1xufVxuZnVuY3Rpb24gaGFuZGxlR2xvYmFsRXJyb3JzKCkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gSW5jcmVhc2UgdGhlIG51bWJlciBvZiBzdGFjayBmcmFtZXMgb24gdGhlIGNsaWVudFxuICAgICAgICAgICAgRXJyb3Iuc3RhY2tUcmFjZUxpbWl0ID0gNTA7XG4gICAgICAgIH0gY2F0Y2ggIHt9XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIG9uVW5oYW5kbGVkRXJyb3IpO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndW5oYW5kbGVkcmVqZWN0aW9uJywgb25VbmhhbmRsZWRSZWplY3Rpb24pO1xuICAgIH1cbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXNlLWVycm9yLWhhbmRsZXIuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/use-error-handler.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/next-devtools/userspace/app/forward-logs-utils.js":
|
||
/*!**********************************************************************************!*\
|
||
!*** ./node_modules/next/dist/next-devtools/userspace/app/forward-logs-utils.js ***!
|
||
\**********************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n logStringify: function() {\n return logStringify;\n },\n preLogSerializationClone: function() {\n return preLogSerializationClone;\n },\n safeStringifyWithDepth: function() {\n return safeStringifyWithDepth;\n }\n});\nconst _safestablestringify = __webpack_require__(/*! next/dist/compiled/safe-stable-stringify */ \"(ssr)/./node_modules/next/dist/compiled/safe-stable-stringify/index.js\");\nconst _terminalloggingconfig = __webpack_require__(/*! ./terminal-logging-config */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/terminal-logging-config.js\");\nconst _forwardlogsshared = __webpack_require__(/*! ../../shared/forward-logs-shared */ \"(ssr)/./node_modules/next/dist/next-devtools/shared/forward-logs-shared.js\");\nconst terminalLoggingConfig = (0, _terminalloggingconfig.getTerminalLoggingConfig)();\nconst PROMISE_MARKER = 'Promise {}';\nconst UNAVAILABLE_MARKER = '[Unable to view]';\nconst maximumDepth = typeof terminalLoggingConfig === 'object' && terminalLoggingConfig.depthLimit ? terminalLoggingConfig.depthLimit : 5;\nconst maximumBreadth = typeof terminalLoggingConfig === 'object' && terminalLoggingConfig.edgeLimit ? terminalLoggingConfig.edgeLimit : 100;\nconst safeStringifyWithDepth = (0, _safestablestringify.configure)({\n maximumDepth,\n maximumBreadth\n});\nfunction preLogSerializationClone(value, seen = new WeakMap()) {\n if (value === undefined) return _forwardlogsshared.UNDEFINED_MARKER;\n if (value === null || typeof value !== 'object') return value;\n if (seen.has(value)) return seen.get(value);\n try {\n Object.keys(value);\n } catch {\n return UNAVAILABLE_MARKER;\n }\n try {\n if (typeof value.then === 'function') return PROMISE_MARKER;\n } catch {\n return UNAVAILABLE_MARKER;\n }\n if (Array.isArray(value)) {\n const out = [];\n seen.set(value, out);\n for (const item of value){\n try {\n out.push(preLogSerializationClone(item, seen));\n } catch {\n out.push(UNAVAILABLE_MARKER);\n }\n }\n return out;\n }\n const proto = Object.getPrototypeOf(value);\n if (proto === Object.prototype || proto === null) {\n const out = {};\n seen.set(value, out);\n for (const key of Object.keys(value)){\n try {\n out[key] = preLogSerializationClone(value[key], seen);\n } catch {\n out[key] = UNAVAILABLE_MARKER;\n }\n }\n return out;\n }\n return Object.prototype.toString.call(value);\n}\nconst logStringify = (data)=>{\n try {\n const result = safeStringifyWithDepth(data);\n return result ?? `\"${UNAVAILABLE_MARKER}\"`;\n } catch {\n return `\"${UNAVAILABLE_MARKER}\"`;\n }\n};\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=forward-logs-utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9mb3J3YXJkLWxvZ3MtdXRpbHMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBSUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCw2QkFBNkIsbUJBQU8sQ0FBQyx3SEFBMEM7QUFDL0UsK0JBQStCLG1CQUFPLENBQUMsd0hBQTJCO0FBQ2xFLDJCQUEyQixtQkFBTyxDQUFDLG9IQUFrQztBQUNyRTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLG1CQUFtQjtBQUNoRCxNQUFNO0FBQ04sbUJBQW1CLG1CQUFtQjtBQUN0QztBQUNBOztBQUVBO0FBQ0EseURBQXlELGFBQWE7QUFDdEU7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS9hcHAvZm9yd2FyZC1sb2dzLXV0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgbG9nU3RyaW5naWZ5OiBudWxsLFxuICAgIHByZUxvZ1NlcmlhbGl6YXRpb25DbG9uZTogbnVsbCxcbiAgICBzYWZlU3RyaW5naWZ5V2l0aERlcHRoOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIGxvZ1N0cmluZ2lmeTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBsb2dTdHJpbmdpZnk7XG4gICAgfSxcbiAgICBwcmVMb2dTZXJpYWxpemF0aW9uQ2xvbmU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcHJlTG9nU2VyaWFsaXphdGlvbkNsb25lO1xuICAgIH0sXG4gICAgc2FmZVN0cmluZ2lmeVdpdGhEZXB0aDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzYWZlU3RyaW5naWZ5V2l0aERlcHRoO1xuICAgIH1cbn0pO1xuY29uc3QgX3NhZmVzdGFibGVzdHJpbmdpZnkgPSByZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3NhZmUtc3RhYmxlLXN0cmluZ2lmeVwiKTtcbmNvbnN0IF90ZXJtaW5hbGxvZ2dpbmdjb25maWcgPSByZXF1aXJlKFwiLi90ZXJtaW5hbC1sb2dnaW5nLWNvbmZpZ1wiKTtcbmNvbnN0IF9mb3J3YXJkbG9nc3NoYXJlZCA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvZm9yd2FyZC1sb2dzLXNoYXJlZFwiKTtcbmNvbnN0IHRlcm1pbmFsTG9nZ2luZ0NvbmZpZyA9ICgwLCBfdGVybWluYWxsb2dnaW5nY29uZmlnLmdldFRlcm1pbmFsTG9nZ2luZ0NvbmZpZykoKTtcbmNvbnN0IFBST01JU0VfTUFSS0VSID0gJ1Byb21pc2Uge30nO1xuY29uc3QgVU5BVkFJTEFCTEVfTUFSS0VSID0gJ1tVbmFibGUgdG8gdmlld10nO1xuY29uc3QgbWF4aW11bURlcHRoID0gdHlwZW9mIHRlcm1pbmFsTG9nZ2luZ0NvbmZpZyA9PT0gJ29iamVjdCcgJiYgdGVybWluYWxMb2dnaW5nQ29uZmlnLmRlcHRoTGltaXQgPyB0ZXJtaW5hbExvZ2dpbmdDb25maWcuZGVwdGhMaW1pdCA6IDU7XG5jb25zdCBtYXhpbXVtQnJlYWR0aCA9IHR5cGVvZiB0ZXJtaW5hbExvZ2dpbmdDb25maWcgPT09ICdvYmplY3QnICYmIHRlcm1pbmFsTG9nZ2luZ0NvbmZpZy5lZGdlTGltaXQgPyB0ZXJtaW5hbExvZ2dpbmdDb25maWcuZWRnZUxpbWl0IDogMTAwO1xuY29uc3Qgc2FmZVN0cmluZ2lmeVdpdGhEZXB0aCA9ICgwLCBfc2FmZXN0YWJsZXN0cmluZ2lmeS5jb25maWd1cmUpKHtcbiAgICBtYXhpbXVtRGVwdGgsXG4gICAgbWF4aW11bUJyZWFkdGhcbn0pO1xuZnVuY3Rpb24gcHJlTG9nU2VyaWFsaXphdGlvbkNsb25lKHZhbHVlLCBzZWVuID0gbmV3IFdlYWtNYXAoKSkge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gX2ZvcndhcmRsb2dzc2hhcmVkLlVOREVGSU5FRF9NQVJLRVI7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHJldHVybiB2YWx1ZTtcbiAgICBpZiAoc2Vlbi5oYXModmFsdWUpKSByZXR1cm4gc2Vlbi5nZXQodmFsdWUpO1xuICAgIHRyeSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHZhbHVlKTtcbiAgICB9IGNhdGNoICB7XG4gICAgICAgIHJldHVybiBVTkFWQUlMQUJMRV9NQVJLRVI7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUudGhlbiA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIFBST01JU0VfTUFSS0VSO1xuICAgIH0gY2F0Y2ggIHtcbiAgICAgICAgcmV0dXJuIFVOQVZBSUxBQkxFX01BUktFUjtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IG91dCA9IFtdO1xuICAgICAgICBzZWVuLnNldCh2YWx1ZSwgb3V0KTtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHZhbHVlKXtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb3V0LnB1c2gocHJlTG9nU2VyaWFsaXphdGlvbkNsb25lKGl0ZW0sIHNlZW4pKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggIHtcbiAgICAgICAgICAgICAgICBvdXQucHVzaChVTkFWQUlMQUJMRV9NQVJLRVIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuICAgIGNvbnN0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKTtcbiAgICBpZiAocHJvdG8gPT09IE9iamVjdC5wcm90b3R5cGUgfHwgcHJvdG8gPT09IG51bGwpIHtcbiAgICAgICAgY29uc3Qgb3V0ID0ge307XG4gICAgICAgIHNlZW4uc2V0KHZhbHVlLCBvdXQpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh2YWx1ZSkpe1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBvdXRba2V5XSA9IHByZUxvZ1NlcmlhbGl6YXRpb25DbG9uZSh2YWx1ZVtrZXldLCBzZWVuKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggIHtcbiAgICAgICAgICAgICAgICBvdXRba2V5XSA9IFVOQVZBSUxBQkxFX01BUktFUjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKTtcbn1cbmNvbnN0IGxvZ1N0cmluZ2lmeSA9IChkYXRhKT0+e1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHNhZmVTdHJpbmdpZnlXaXRoRGVwdGgoZGF0YSk7XG4gICAgICAgIHJldHVybiByZXN1bHQgPz8gYFwiJHtVTkFWQUlMQUJMRV9NQVJLRVJ9XCJgO1xuICAgIH0gY2F0Y2ggIHtcbiAgICAgICAgcmV0dXJuIGBcIiR7VU5BVkFJTEFCTEVfTUFSS0VSfVwiYDtcbiAgICB9XG59O1xuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1mb3J3YXJkLWxvZ3MtdXRpbHMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/next-devtools/userspace/app/forward-logs-utils.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/next-devtools/userspace/app/forward-logs.js":
|
||
/*!****************************************************************************!*\
|
||
!*** ./node_modules/next/dist/next-devtools/userspace/app/forward-logs.js ***!
|
||
\****************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n forwardErrorLog: function() {\n return forwardErrorLog;\n },\n forwardUnhandledError: function() {\n return forwardUnhandledError;\n },\n initializeDebugLogForwarding: function() {\n return initializeDebugLogForwarding;\n },\n logQueue: function() {\n return logQueue;\n },\n logUnhandledRejection: function() {\n return logUnhandledRejection;\n }\n});\nconst _errorsource = __webpack_require__(/*! ../../../shared/lib/error-source */ \"(ssr)/./node_modules/next/dist/shared/lib/error-source.js\");\nconst _terminalloggingconfig = __webpack_require__(/*! ./terminal-logging-config */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/terminal-logging-config.js\");\nconst _forwardlogsshared = __webpack_require__(/*! ../../shared/forward-logs-shared */ \"(ssr)/./node_modules/next/dist/next-devtools/shared/forward-logs-shared.js\");\nconst _forwardlogsutils = __webpack_require__(/*! ./forward-logs-utils */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/forward-logs-utils.js\");\nconst _stitchederror = __webpack_require__(/*! ./errors/stitched-error */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/stitched-error.js\");\n// Client-side file logger for browser logs\nclass ClientFileLogger {\n formatTimestamp() {\n const now = new Date();\n const hours = now.getHours().toString().padStart(2, '0');\n const minutes = now.getMinutes().toString().padStart(2, '0');\n const seconds = now.getSeconds().toString().padStart(2, '0');\n const milliseconds = now.getMilliseconds().toString().padStart(3, '0');\n return `${hours}:${minutes}:${seconds}.${milliseconds}`;\n }\n log(level, args) {\n if (isReactServerReplayedLog(args)) {\n return;\n }\n // Format the args into a message string\n const message = args.map((arg)=>{\n if (typeof arg === 'string') return arg;\n if (typeof arg === 'number' || typeof arg === 'boolean') return String(arg);\n if (arg === null) return 'null';\n if (arg === undefined) return 'undefined';\n // Handle DOM nodes - only log the tag name to avoid React proxied elements\n if (arg instanceof Element) {\n return `<${arg.tagName.toLowerCase()}>`;\n }\n return (0, _forwardlogsutils.safeStringifyWithDepth)(arg);\n }).join(' ');\n const logEntry = {\n timestamp: this.formatTimestamp(),\n level: level.toUpperCase(),\n message\n };\n this.logEntries.push(logEntry);\n // Schedule flush when new log is added\n scheduleLogFlush();\n }\n getLogs() {\n return [\n ...this.logEntries\n ];\n }\n clear() {\n this.logEntries = [];\n }\n constructor(){\n this.logEntries = [];\n }\n}\nconst clientFileLogger = new ClientFileLogger();\n// Set up flush-based sending of client file logs\nlet logFlushTimeout = null;\nlet heartbeatInterval = null;\nconst scheduleLogFlush = ()=>{\n if (logFlushTimeout) {\n clearTimeout(logFlushTimeout);\n }\n logFlushTimeout = setTimeout(()=>{\n sendClientFileLogs();\n logFlushTimeout = null;\n }, 100) // Send after 100ms (much faster with debouncing)\n ;\n};\nconst cancelLogFlush = ()=>{\n if (logFlushTimeout) {\n clearTimeout(logFlushTimeout);\n logFlushTimeout = null;\n }\n};\nconst startHeartbeat = ()=>{\n if (heartbeatInterval) return;\n heartbeatInterval = setInterval(()=>{\n if (logQueue.socket && logQueue.socket.readyState === WebSocket.OPEN) {\n try {\n // Send a ping to keep the connection alive\n logQueue.socket.send(JSON.stringify({\n event: 'ping'\n }));\n } catch (error) {\n // Connection might be closed, stop heartbeat\n stopHeartbeat();\n }\n } else {\n stopHeartbeat();\n }\n }, 5000) // Send ping every 5 seconds\n ;\n};\nconst stopHeartbeat = ()=>{\n if (heartbeatInterval) {\n clearInterval(heartbeatInterval);\n heartbeatInterval = null;\n }\n};\nconst isTerminalLoggingEnabled = (0, _terminalloggingconfig.getIsTerminalLoggingEnabled)();\nconst methods = [\n 'log',\n 'info',\n 'warn',\n 'debug',\n 'table',\n 'assert',\n 'dir',\n 'dirxml',\n 'group',\n 'groupCollapsed',\n 'groupEnd',\n 'trace'\n];\nconst afterThisFrame = (cb)=>{\n let timeout;\n const rafId = requestAnimationFrame(()=>{\n timeout = setTimeout(()=>{\n cb();\n });\n });\n return ()=>{\n cancelAnimationFrame(rafId);\n clearTimeout(timeout);\n };\n};\nlet isPatched = false;\nconst serializeEntries = (entries)=>entries.map((clientEntry)=>{\n switch(clientEntry.kind){\n case 'any-logged-error':\n case 'console':\n {\n return {\n ...clientEntry,\n args: clientEntry.args.map(stringifyUserArg)\n };\n }\n case 'formatted-error':\n {\n return clientEntry;\n }\n default:\n {\n return null;\n }\n }\n });\n// Function to send client file logs to server\nconst sendClientFileLogs = ()=>{\n if (!logQueue.socket || logQueue.socket.readyState !== WebSocket.OPEN) {\n return;\n }\n const logs = clientFileLogger.getLogs();\n if (logs.length === 0) {\n return;\n }\n try {\n const payload = JSON.stringify({\n event: 'client-file-logs',\n logs: logs\n });\n logQueue.socket.send(payload);\n } catch (error) {\n console.error(error);\n } finally{\n // Clear logs regardless of send success to prevent memory leaks\n clientFileLogger.clear();\n }\n};\nconst logQueue = {\n entries: [],\n flushScheduled: false,\n cancelFlush: null,\n socket: null,\n sourceType: undefined,\n router: null,\n scheduleLogSend: (entry)=>{\n logQueue.entries.push(entry);\n if (logQueue.flushScheduled) {\n return;\n }\n // safe to deref and use in setTimeout closure since we cancel on new socket\n const socket = logQueue.socket;\n if (!socket) {\n return;\n }\n // we probably dont need this\n logQueue.flushScheduled = true;\n // non blocking log flush, runs at most once per frame\n logQueue.cancelFlush = afterThisFrame(()=>{\n logQueue.flushScheduled = false;\n // just incase\n try {\n const payload = JSON.stringify({\n event: 'browser-logs',\n entries: serializeEntries(logQueue.entries),\n router: logQueue.router,\n // needed for source mapping, we just assign the sourceType from the last error for the whole batch\n sourceType: logQueue.sourceType\n });\n socket.send(payload);\n logQueue.entries = [];\n logQueue.sourceType = undefined;\n // Also send client file logs\n sendClientFileLogs();\n } catch {\n // error (make sure u don't infinite loop)\n /* noop */ }\n });\n },\n onSocketReady: (socket)=>{\n // When MCP or terminal logging is enabled, we enable the socket connection,\n // otherwise it will not proceed.\n if (!isTerminalLoggingEnabled && !true) {}\n if (socket.readyState !== WebSocket.OPEN) {\n // invariant\n return;\n }\n // incase an existing timeout was going to run with a stale socket\n logQueue.cancelFlush?.();\n logQueue.socket = socket;\n // Add socket event listeners to track connection state\n socket.addEventListener('close', ()=>{\n cancelLogFlush();\n stopHeartbeat();\n });\n // Only send terminal logs if enabled\n if (isTerminalLoggingEnabled) {\n try {\n const payload = JSON.stringify({\n event: 'browser-logs',\n entries: serializeEntries(logQueue.entries),\n router: logQueue.router,\n sourceType: logQueue.sourceType\n });\n socket.send(payload);\n logQueue.entries = [];\n logQueue.sourceType = undefined;\n } catch {\n /** noop just incase */ }\n }\n // Always send client file logs when socket is ready\n sendClientFileLogs();\n // Start heartbeat to keep connection alive\n startHeartbeat();\n }\n};\nconst stringifyUserArg = (arg)=>{\n if (arg.kind !== 'arg') {\n return arg;\n }\n return {\n ...arg,\n data: (0, _forwardlogsutils.logStringify)(arg.data)\n };\n};\nconst createErrorArg = (error)=>{\n return {\n kind: 'formatted-error-arg',\n prefix: error.message ? `${error.name}: ${error.message}` : `${error.name}`,\n stack: getErrorStackWithOwnerStack(error)\n };\n};\nconst createLogEntry = (level, args)=>{\n // Always log to client file logger with args (formatting done inside log method)\n clientFileLogger.log(level, args);\n // Only forward to terminal if enabled\n if (!isTerminalLoggingEnabled) {\n return;\n }\n // do not abstract this, it implicitly relies on which functions call it. forcing the inlined implementation makes you think about callers\n // error capture stack trace maybe\n const stack = getErrorStack(new Error());\n const stackLines = stack?.split('\\n');\n const cleanStack = stackLines?.slice(3).join('\\n') // this is probably ignored anyways\n ;\n const entry = {\n kind: 'console',\n consoleMethodStack: cleanStack ?? null,\n method: level,\n args: args.map((arg)=>{\n if (arg instanceof Error) {\n return createErrorArg(arg);\n }\n return {\n kind: 'arg',\n data: (0, _forwardlogsutils.preLogSerializationClone)(arg)\n };\n })\n };\n logQueue.scheduleLogSend(entry);\n};\nconst forwardErrorLog = (args)=>{\n // Skip React server replayed logs - they were already logged on the server\n if (isReactServerReplayedLog(args)) {\n return;\n }\n // Always log to client file logger with args (formatting done inside log method)\n clientFileLogger.log('error', args);\n // Only forward to terminal if enabled\n if (!isTerminalLoggingEnabled) {\n return;\n }\n const errorObjects = args.filter((arg)=>arg instanceof Error);\n const first = errorObjects.at(0);\n if (first) {\n const source = (0, _errorsource.getErrorSource)(first);\n if (source) {\n logQueue.sourceType = source;\n }\n }\n /**\n * browser shows stack regardless of type of data passed to console.error, so we should do the same\n *\n * do not abstract this, it implicitly relies on which functions call it. forcing the inlined implementation makes you think about callers\n */ const stack = getErrorStack(new Error());\n const stackLines = stack?.split('\\n');\n const cleanStack = stackLines?.slice(3).join('\\n');\n const entry = {\n kind: 'any-logged-error',\n method: 'error',\n consoleErrorStack: cleanStack ?? '',\n args: args.map((arg)=>{\n if (arg instanceof Error) {\n return createErrorArg(arg);\n }\n return {\n kind: 'arg',\n data: (0, _forwardlogsutils.preLogSerializationClone)(arg)\n };\n })\n };\n logQueue.scheduleLogSend(entry);\n};\nconst createUncaughtErrorEntry = (errorName, errorMessage, fullStack)=>{\n const entry = {\n kind: 'formatted-error',\n prefix: `Uncaught ${errorName}: ${errorMessage}`,\n stack: fullStack,\n method: 'error'\n };\n logQueue.scheduleLogSend(entry);\n};\nconst getErrorStack = (error)=>{\n return error.stack || '';\n};\n// Get error stack with owner stack appended for source mapping on the server\nconst getErrorStackWithOwnerStack = (error)=>{\n const errorStack = getErrorStack(error);\n const ownerStack = (0, _stitchederror.getOwnerStack)(error);\n return ownerStack ? `${errorStack}\\n${ownerStack}` : errorStack;\n};\nfunction logUnhandledRejection(reason) {\n // Always log to client file logger\n const message = reason instanceof Error ? `${reason.name}: ${reason.message}` : JSON.stringify(reason);\n clientFileLogger.log('error', [\n `unhandledRejection: ${message}`\n ]);\n // Only forward to terminal if enabled\n if (!isTerminalLoggingEnabled) {\n return;\n }\n if (reason instanceof Error) {\n createUnhandledRejectionErrorEntry(reason, getErrorStackWithOwnerStack(reason));\n return;\n }\n createUnhandledRejectionNonErrorEntry(reason);\n}\nconst createUnhandledRejectionErrorEntry = (error, fullStack)=>{\n const source = (0, _errorsource.getErrorSource)(error);\n if (source) {\n logQueue.sourceType = source;\n }\n const entry = {\n kind: 'formatted-error',\n prefix: `⨯ unhandledRejection: ${error.name}: ${error.message}`,\n stack: fullStack,\n method: 'error'\n };\n logQueue.scheduleLogSend(entry);\n};\nconst createUnhandledRejectionNonErrorEntry = (reason)=>{\n const entry = {\n kind: 'any-logged-error',\n // we can't access the stack since the event is dispatched async and creating an inline error would be meaningless\n consoleErrorStack: '',\n method: 'error',\n args: [\n {\n kind: 'arg',\n data: `⨯ unhandledRejection:`,\n isRejectionMessage: true\n },\n {\n kind: 'arg',\n data: (0, _forwardlogsutils.preLogSerializationClone)(reason)\n }\n ]\n };\n logQueue.scheduleLogSend(entry);\n};\nconst isHMR = (args)=>{\n const firstArg = args[0];\n if (typeof firstArg !== 'string') {\n return false;\n }\n if (firstArg.startsWith('[Fast Refresh]')) {\n return true;\n }\n if (firstArg.startsWith('[HMR]')) {\n return true;\n }\n return false;\n};\n/**\n * Matches the format of logs arguments React replayed from the RSC.\n */ const isReactServerReplayedLog = (args)=>{\n if (args.length < 3) {\n return false;\n }\n const [format, styles, label] = args;\n if (typeof format !== 'string' || typeof styles !== 'string' || typeof label !== 'string') {\n return false;\n }\n return format.startsWith('%c%s%c') && styles.includes('background:');\n};\nfunction forwardUnhandledError(error) {\n // Always log to client file logger\n clientFileLogger.log('error', [\n `uncaughtError: ${error.name}: ${error.message}`\n ]);\n // Only forward to terminal if enabled\n if (!isTerminalLoggingEnabled) {\n return;\n }\n createUncaughtErrorEntry(error.name, error.message, getErrorStackWithOwnerStack(error));\n}\nconst initializeDebugLogForwarding = (router)=>{\n // probably don't need this\n if (isPatched) {\n return;\n }\n // TODO(rob): why does this break rendering on server, important to know incase the same bug appears in browser\n if (typeof window === 'undefined') {\n return;\n }\n // better to be safe than sorry\n try {\n methods.forEach((method)=>(0, _forwardlogsshared.patchConsoleMethod)(method, (_, ...args)=>{\n if (isHMR(args)) {\n return;\n }\n if (isReactServerReplayedLog(args)) {\n return;\n }\n createLogEntry(method, args);\n }));\n } catch {}\n logQueue.router = router;\n isPatched = true;\n // Cleanup on page unload\n window.addEventListener('beforeunload', ()=>{\n cancelLogFlush();\n stopHeartbeat();\n // Send any remaining logs before page unloads\n sendClientFileLogs();\n });\n};\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=forward-logs.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9mb3J3YXJkLWxvZ3MuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBTUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QscUJBQXFCLG1CQUFPLENBQUMsbUdBQWtDO0FBQy9ELCtCQUErQixtQkFBTyxDQUFDLHdIQUEyQjtBQUNsRSwyQkFBMkIsbUJBQU8sQ0FBQyxvSEFBa0M7QUFDckUsMEJBQTBCLG1CQUFPLENBQUMsOEdBQXNCO0FBQ3hELHVCQUF1QixtQkFBTyxDQUFDLG9IQUF5QjtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLE1BQU0sR0FBRyxRQUFRLEdBQUcsUUFBUSxHQUFHLGFBQWE7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsMEJBQTBCO0FBQ3JEO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLElBQTZCLEVBQUUsRUFFaEU7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsV0FBVyxJQUFJLGNBQWMsT0FBTyxXQUFXO0FBQ2xGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLFVBQVUsSUFBSSxhQUFhO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixXQUFXLElBQUksV0FBVztBQUNyRDtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsWUFBWSxJQUFJLGVBQWU7QUFDaEY7QUFDQSwrQkFBK0IsUUFBUTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsV0FBVyxJQUFJLGNBQWM7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLFdBQVcsSUFBSSxjQUFjO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSx5REFBeUQsYUFBYTtBQUN0RTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9mb3J3YXJkLWxvZ3MuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBmb3J3YXJkRXJyb3JMb2c6IG51bGwsXG4gICAgZm9yd2FyZFVuaGFuZGxlZEVycm9yOiBudWxsLFxuICAgIGluaXRpYWxpemVEZWJ1Z0xvZ0ZvcndhcmRpbmc6IG51bGwsXG4gICAgbG9nUXVldWU6IG51bGwsXG4gICAgbG9nVW5oYW5kbGVkUmVqZWN0aW9uOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIGZvcndhcmRFcnJvckxvZzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBmb3J3YXJkRXJyb3JMb2c7XG4gICAgfSxcbiAgICBmb3J3YXJkVW5oYW5kbGVkRXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZm9yd2FyZFVuaGFuZGxlZEVycm9yO1xuICAgIH0sXG4gICAgaW5pdGlhbGl6ZURlYnVnTG9nRm9yd2FyZGluZzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpbml0aWFsaXplRGVidWdMb2dGb3J3YXJkaW5nO1xuICAgIH0sXG4gICAgbG9nUXVldWU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbG9nUXVldWU7XG4gICAgfSxcbiAgICBsb2dVbmhhbmRsZWRSZWplY3Rpb246IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbG9nVW5oYW5kbGVkUmVqZWN0aW9uO1xuICAgIH1cbn0pO1xuY29uc3QgX2Vycm9yc291cmNlID0gcmVxdWlyZShcIi4uLy4uLy4uL3NoYXJlZC9saWIvZXJyb3Itc291cmNlXCIpO1xuY29uc3QgX3Rlcm1pbmFsbG9nZ2luZ2NvbmZpZyA9IHJlcXVpcmUoXCIuL3Rlcm1pbmFsLWxvZ2dpbmctY29uZmlnXCIpO1xuY29uc3QgX2ZvcndhcmRsb2dzc2hhcmVkID0gcmVxdWlyZShcIi4uLy4uL3NoYXJlZC9mb3J3YXJkLWxvZ3Mtc2hhcmVkXCIpO1xuY29uc3QgX2ZvcndhcmRsb2dzdXRpbHMgPSByZXF1aXJlKFwiLi9mb3J3YXJkLWxvZ3MtdXRpbHNcIik7XG5jb25zdCBfc3RpdGNoZWRlcnJvciA9IHJlcXVpcmUoXCIuL2Vycm9ycy9zdGl0Y2hlZC1lcnJvclwiKTtcbi8vIENsaWVudC1zaWRlIGZpbGUgbG9nZ2VyIGZvciBicm93c2VyIGxvZ3NcbmNsYXNzIENsaWVudEZpbGVMb2dnZXIge1xuICAgIGZvcm1hdFRpbWVzdGFtcCgpIHtcbiAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICAgICAgY29uc3QgaG91cnMgPSBub3cuZ2V0SG91cnMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBub3cuZ2V0TWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgICAgY29uc3Qgc2Vjb25kcyA9IG5vdy5nZXRTZWNvbmRzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgICBjb25zdCBtaWxsaXNlY29uZHMgPSBub3cuZ2V0TWlsbGlzZWNvbmRzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgzLCAnMCcpO1xuICAgICAgICByZXR1cm4gYCR7aG91cnN9OiR7bWludXRlc306JHtzZWNvbmRzfS4ke21pbGxpc2Vjb25kc31gO1xuICAgIH1cbiAgICBsb2cobGV2ZWwsIGFyZ3MpIHtcbiAgICAgICAgaWYgKGlzUmVhY3RTZXJ2ZXJSZXBsYXllZExvZyhhcmdzKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEZvcm1hdCB0aGUgYXJncyBpbnRvIGEgbWVzc2FnZSBzdHJpbmdcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGFyZ3MubWFwKChhcmcpPT57XG4gICAgICAgICAgICBpZiAodHlwZW9mIGFyZyA9PT0gJ3N0cmluZycpIHJldHVybiBhcmc7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGFyZyA9PT0gJ251bWJlcicgfHwgdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nKSByZXR1cm4gU3RyaW5nKGFyZyk7XG4gICAgICAgICAgICBpZiAoYXJnID09PSBudWxsKSByZXR1cm4gJ251bGwnO1xuICAgICAgICAgICAgaWYgKGFyZyA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJ3VuZGVmaW5lZCc7XG4gICAgICAgICAgICAvLyBIYW5kbGUgRE9NIG5vZGVzIC0gb25seSBsb2cgdGhlIHRhZyBuYW1lIHRvIGF2b2lkIFJlYWN0IHByb3hpZWQgZWxlbWVudHNcbiAgICAgICAgICAgIGlmIChhcmcgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGA8JHthcmcudGFnTmFtZS50b0xvd2VyQ2FzZSgpfT5gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICgwLCBfZm9yd2FyZGxvZ3N1dGlscy5zYWZlU3RyaW5naWZ5V2l0aERlcHRoKShhcmcpO1xuICAgICAgICB9KS5qb2luKCcgJyk7XG4gICAgICAgIGNvbnN0IGxvZ0VudHJ5ID0ge1xuICAgICAgICAgICAgdGltZXN0YW1wOiB0aGlzLmZvcm1hdFRpbWVzdGFtcCgpLFxuICAgICAgICAgICAgbGV2ZWw6IGxldmVsLnRvVXBwZXJDYXNlKCksXG4gICAgICAgICAgICBtZXNzYWdlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubG9nRW50cmllcy5wdXNoKGxvZ0VudHJ5KTtcbiAgICAgICAgLy8gU2NoZWR1bGUgZmx1c2ggd2hlbiBuZXcgbG9nIGlzIGFkZGVkXG4gICAgICAgIHNjaGVkdWxlTG9nRmx1c2goKTtcbiAgICB9XG4gICAgZ2V0TG9ncygpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIC4uLnRoaXMubG9nRW50cmllc1xuICAgICAgICBdO1xuICAgIH1cbiAgICBjbGVhcigpIHtcbiAgICAgICAgdGhpcy5sb2dFbnRyaWVzID0gW107XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKCl7XG4gICAgICAgIHRoaXMubG9nRW50cmllcyA9IFtdO1xuICAgIH1cbn1cbmNvbnN0IGNsaWVudEZpbGVMb2dnZXIgPSBuZXcgQ2xpZW50RmlsZUxvZ2dlcigpO1xuLy8gU2V0IHVwIGZsdXNoLWJhc2VkIHNlbmRpbmcgb2YgY2xpZW50IGZpbGUgbG9nc1xubGV0IGxvZ0ZsdXNoVGltZW91dCA9IG51bGw7XG5sZXQgaGVhcnRiZWF0SW50ZXJ2YWwgPSBudWxsO1xuY29uc3Qgc2NoZWR1bGVMb2dGbHVzaCA9ICgpPT57XG4gICAgaWYgKGxvZ0ZsdXNoVGltZW91dCkge1xuICAgICAgICBjbGVhclRpbWVvdXQobG9nRmx1c2hUaW1lb3V0KTtcbiAgICB9XG4gICAgbG9nRmx1c2hUaW1lb3V0ID0gc2V0VGltZW91dCgoKT0+e1xuICAgICAgICBzZW5kQ2xpZW50RmlsZUxvZ3MoKTtcbiAgICAgICAgbG9nRmx1c2hUaW1lb3V0ID0gbnVsbDtcbiAgICB9LCAxMDApIC8vIFNlbmQgYWZ0ZXIgMTAwbXMgKG11Y2ggZmFzdGVyIHdpdGggZGVib3VuY2luZylcbiAgICA7XG59O1xuY29uc3QgY2FuY2VsTG9nRmx1c2ggPSAoKT0+e1xuICAgIGlmIChsb2dGbHVzaFRpbWVvdXQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KGxvZ0ZsdXNoVGltZW91dCk7XG4gICAgICAgIGxvZ0ZsdXNoVGltZW91dCA9IG51bGw7XG4gICAgfVxufTtcbmNvbnN0IHN0YXJ0SGVhcnRiZWF0ID0gKCk9PntcbiAgICBpZiAoaGVhcnRiZWF0SW50ZXJ2YWwpIHJldHVybjtcbiAgICBoZWFydGJlYXRJbnRlcnZhbCA9IHNldEludGVydmFsKCgpPT57XG4gICAgICAgIGlmIChsb2dRdWV1ZS5zb2NrZXQgJiYgbG9nUXVldWUuc29ja2V0LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIC8vIFNlbmQgYSBwaW5nIHRvIGtlZXAgdGhlIGNvbm5lY3Rpb24gYWxpdmVcbiAgICAgICAgICAgICAgICBsb2dRdWV1ZS5zb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50OiAncGluZydcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIC8vIENvbm5lY3Rpb24gbWlnaHQgYmUgY2xvc2VkLCBzdG9wIGhlYXJ0YmVhdFxuICAgICAgICAgICAgICAgIHN0b3BIZWFydGJlYXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0b3BIZWFydGJlYXQoKTtcbiAgICAgICAgfVxuICAgIH0sIDUwMDApIC8vIFNlbmQgcGluZyBldmVyeSA1IHNlY29uZHNcbiAgICA7XG59O1xuY29uc3Qgc3RvcEhlYXJ0YmVhdCA9ICgpPT57XG4gICAgaWYgKGhlYXJ0YmVhdEludGVydmFsKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwoaGVhcnRiZWF0SW50ZXJ2YWwpO1xuICAgICAgICBoZWFydGJlYXRJbnRlcnZhbCA9IG51bGw7XG4gICAgfVxufTtcbmNvbnN0IGlzVGVybWluYWxMb2dnaW5nRW5hYmxlZCA9ICgwLCBfdGVybWluYWxsb2dnaW5nY29uZmlnLmdldElzVGVybWluYWxMb2dnaW5nRW5hYmxlZCkoKTtcbmNvbnN0IG1ldGhvZHMgPSBbXG4gICAgJ2xvZycsXG4gICAgJ2luZm8nLFxuICAgICd3YXJuJyxcbiAgICAnZGVidWcnLFxuICAgICd0YWJsZScsXG4gICAgJ2Fzc2VydCcsXG4gICAgJ2RpcicsXG4gICAgJ2RpcnhtbCcsXG4gICAgJ2dyb3VwJyxcbiAgICAnZ3JvdXBDb2xsYXBzZWQnLFxuICAgICdncm91cEVuZCcsXG4gICAgJ3RyYWNlJ1xuXTtcbmNvbnN0IGFmdGVyVGhpc0ZyYW1lID0gKGNiKT0+e1xuICAgIGxldCB0aW1lb3V0O1xuICAgIGNvbnN0IHJhZklkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57XG4gICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICBjYigpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gKCk9PntcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmSWQpO1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgfTtcbn07XG5sZXQgaXNQYXRjaGVkID0gZmFsc2U7XG5jb25zdCBzZXJpYWxpemVFbnRyaWVzID0gKGVudHJpZXMpPT5lbnRyaWVzLm1hcCgoY2xpZW50RW50cnkpPT57XG4gICAgICAgIHN3aXRjaChjbGllbnRFbnRyeS5raW5kKXtcbiAgICAgICAgICAgIGNhc2UgJ2FueS1sb2dnZWQtZXJyb3InOlxuICAgICAgICAgICAgY2FzZSAnY29uc29sZSc6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY2xpZW50RW50cnksXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmdzOiBjbGllbnRFbnRyeS5hcmdzLm1hcChzdHJpbmdpZnlVc2VyQXJnKVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2Zvcm1hdHRlZC1lcnJvcic6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xpZW50RW50cnk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuLy8gRnVuY3Rpb24gdG8gc2VuZCBjbGllbnQgZmlsZSBsb2dzIHRvIHNlcnZlclxuY29uc3Qgc2VuZENsaWVudEZpbGVMb2dzID0gKCk9PntcbiAgICBpZiAoIWxvZ1F1ZXVlLnNvY2tldCB8fCBsb2dRdWV1ZS5zb2NrZXQucmVhZHlTdGF0ZSAhPT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBsb2dzID0gY2xpZW50RmlsZUxvZ2dlci5nZXRMb2dzKCk7XG4gICAgaWYgKGxvZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIGV2ZW50OiAnY2xpZW50LWZpbGUtbG9ncycsXG4gICAgICAgICAgICBsb2dzOiBsb2dzXG4gICAgICAgIH0pO1xuICAgICAgICBsb2dRdWV1ZS5zb2NrZXQuc2VuZChwYXlsb2FkKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICB9IGZpbmFsbHl7XG4gICAgICAgIC8vIENsZWFyIGxvZ3MgcmVnYXJkbGVzcyBvZiBzZW5kIHN1Y2Nlc3MgdG8gcHJldmVudCBtZW1vcnkgbGVha3NcbiAgICAgICAgY2xpZW50RmlsZUxvZ2dlci5jbGVhcigpO1xuICAgIH1cbn07XG5jb25zdCBsb2dRdWV1ZSA9IHtcbiAgICBlbnRyaWVzOiBbXSxcbiAgICBmbHVzaFNjaGVkdWxlZDogZmFsc2UsXG4gICAgY2FuY2VsRmx1c2g6IG51bGwsXG4gICAgc29ja2V0OiBudWxsLFxuICAgIHNvdXJjZVR5cGU6IHVuZGVmaW5lZCxcbiAgICByb3V0ZXI6IG51bGwsXG4gICAgc2NoZWR1bGVMb2dTZW5kOiAoZW50cnkpPT57XG4gICAgICAgIGxvZ1F1ZXVlLmVudHJpZXMucHVzaChlbnRyeSk7XG4gICAgICAgIGlmIChsb2dRdWV1ZS5mbHVzaFNjaGVkdWxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIHNhZmUgdG8gZGVyZWYgYW5kIHVzZSBpbiBzZXRUaW1lb3V0IGNsb3N1cmUgc2luY2Ugd2UgY2FuY2VsIG9uIG5ldyBzb2NrZXRcbiAgICAgICAgY29uc3Qgc29ja2V0ID0gbG9nUXVldWUuc29ja2V0O1xuICAgICAgICBpZiAoIXNvY2tldCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIHdlIHByb2JhYmx5IGRvbnQgbmVlZCB0aGlzXG4gICAgICAgIGxvZ1F1ZXVlLmZsdXNoU2NoZWR1bGVkID0gdHJ1ZTtcbiAgICAgICAgLy8gbm9uIGJsb2NraW5nIGxvZyBmbHVzaCwgcnVucyBhdCBtb3N0IG9uY2UgcGVyIGZyYW1lXG4gICAgICAgIGxvZ1F1ZXVlLmNhbmNlbEZsdXNoID0gYWZ0ZXJUaGlzRnJhbWUoKCk9PntcbiAgICAgICAgICAgIGxvZ1F1ZXVlLmZsdXNoU2NoZWR1bGVkID0gZmFsc2U7XG4gICAgICAgICAgICAvLyBqdXN0IGluY2FzZVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICBldmVudDogJ2Jyb3dzZXItbG9ncycsXG4gICAgICAgICAgICAgICAgICAgIGVudHJpZXM6IHNlcmlhbGl6ZUVudHJpZXMobG9nUXVldWUuZW50cmllcyksXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlcjogbG9nUXVldWUucm91dGVyLFxuICAgICAgICAgICAgICAgICAgICAvLyBuZWVkZWQgZm9yIHNvdXJjZSBtYXBwaW5nLCB3ZSBqdXN0IGFzc2lnbiB0aGUgc291cmNlVHlwZSBmcm9tIHRoZSBsYXN0IGVycm9yIGZvciB0aGUgd2hvbGUgYmF0Y2hcbiAgICAgICAgICAgICAgICAgICAgc291cmNlVHlwZTogbG9nUXVldWUuc291cmNlVHlwZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHNvY2tldC5zZW5kKHBheWxvYWQpO1xuICAgICAgICAgICAgICAgIGxvZ1F1ZXVlLmVudHJpZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBsb2dRdWV1ZS5zb3VyY2VUeXBlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIC8vIEFsc28gc2VuZCBjbGllbnQgZmlsZSBsb2dzXG4gICAgICAgICAgICAgICAgc2VuZENsaWVudEZpbGVMb2dzKCk7XG4gICAgICAgICAgICB9IGNhdGNoICB7XG4gICAgICAgICAgICAvLyBlcnJvciAobWFrZSBzdXJlIHUgZG9uJ3QgaW5maW5pdGUgbG9vcClcbiAgICAgICAgICAgIC8qIG5vb3AgKi8gfVxuICAgICAgICB9KTtcbiAgICB9LFxuICAgIG9uU29ja2V0UmVhZHk6IChzb2NrZXQpPT57XG4gICAgICAgIC8vIFdoZW4gTUNQIG9yIHRlcm1pbmFsIGxvZ2dpbmcgaXMgZW5hYmxlZCwgd2UgZW5hYmxlIHRoZSBzb2NrZXQgY29ubmVjdGlvbixcbiAgICAgICAgLy8gb3RoZXJ3aXNlIGl0IHdpbGwgbm90IHByb2NlZWQuXG4gICAgICAgIGlmICghaXNUZXJtaW5hbExvZ2dpbmdFbmFibGVkICYmICFwcm9jZXNzLmVudi5fX05FWFRfTUNQX1NFUlZFUikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzb2NrZXQucmVhZHlTdGF0ZSAhPT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgICAgICAgIC8vIGludmFyaWFudFxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGluY2FzZSBhbiBleGlzdGluZyB0aW1lb3V0IHdhcyBnb2luZyB0byBydW4gd2l0aCBhIHN0YWxlIHNvY2tldFxuICAgICAgICBsb2dRdWV1ZS5jYW5jZWxGbHVzaD8uKCk7XG4gICAgICAgIGxvZ1F1ZXVlLnNvY2tldCA9IHNvY2tldDtcbiAgICAgICAgLy8gQWRkIHNvY2tldCBldmVudCBsaXN0ZW5lcnMgdG8gdHJhY2sgY29ubmVjdGlvbiBzdGF0ZVxuICAgICAgICBzb2NrZXQuYWRkRXZlbnRMaXN0ZW5lcignY2xvc2UnLCAoKT0+e1xuICAgICAgICAgICAgY2FuY2VsTG9nRmx1c2goKTtcbiAgICAgICAgICAgIHN0b3BIZWFydGJlYXQoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIE9ubHkgc2VuZCB0ZXJtaW5hbCBsb2dzIGlmIGVuYWJsZWRcbiAgICAgICAgaWYgKGlzVGVybWluYWxMb2dnaW5nRW5hYmxlZCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICBldmVudDogJ2Jyb3dzZXItbG9ncycsXG4gICAgICAgICAgICAgICAgICAgIGVudHJpZXM6IHNlcmlhbGl6ZUVudHJpZXMobG9nUXVldWUuZW50cmllcyksXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlcjogbG9nUXVldWUucm91dGVyLFxuICAgICAgICAgICAgICAgICAgICBzb3VyY2VUeXBlOiBsb2dRdWV1ZS5zb3VyY2VUeXBlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc29ja2V0LnNlbmQocGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgbG9nUXVldWUuZW50cmllcyA9IFtdO1xuICAgICAgICAgICAgICAgIGxvZ1F1ZXVlLnNvdXJjZVR5cGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9IGNhdGNoICB7XG4gICAgICAgICAgICAvKiogbm9vcCBqdXN0IGluY2FzZSAqLyB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWx3YXlzIHNlbmQgY2xpZW50IGZpbGUgbG9ncyB3aGVuIHNvY2tldCBpcyByZWFkeVxuICAgICAgICBzZW5kQ2xpZW50RmlsZUxvZ3MoKTtcbiAgICAgICAgLy8gU3RhcnQgaGVhcnRiZWF0IHRvIGtlZXAgY29ubmVjdGlvbiBhbGl2ZVxuICAgICAgICBzdGFydEhlYXJ0YmVhdCgpO1xuICAgIH1cbn07XG5jb25zdCBzdHJpbmdpZnlVc2VyQXJnID0gKGFyZyk9PntcbiAgICBpZiAoYXJnLmtpbmQgIT09ICdhcmcnKSB7XG4gICAgICAgIHJldHVybiBhcmc7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIC4uLmFyZyxcbiAgICAgICAgZGF0YTogKDAsIF9mb3J3YXJkbG9nc3V0aWxzLmxvZ1N0cmluZ2lmeSkoYXJnLmRhdGEpXG4gICAgfTtcbn07XG5jb25zdCBjcmVhdGVFcnJvckFyZyA9IChlcnJvcik9PntcbiAgICByZXR1cm4ge1xuICAgICAgICBraW5kOiAnZm9ybWF0dGVkLWVycm9yLWFyZycsXG4gICAgICAgIHByZWZpeDogZXJyb3IubWVzc2FnZSA/IGAke2Vycm9yLm5hbWV9OiAke2Vycm9yLm1lc3NhZ2V9YCA6IGAke2Vycm9yLm5hbWV9YCxcbiAgICAgICAgc3RhY2s6IGdldEVycm9yU3RhY2tXaXRoT3duZXJTdGFjayhlcnJvcilcbiAgICB9O1xufTtcbmNvbnN0IGNyZWF0ZUxvZ0VudHJ5ID0gKGxldmVsLCBhcmdzKT0+e1xuICAgIC8vIEFsd2F5cyBsb2cgdG8gY2xpZW50IGZpbGUgbG9nZ2VyIHdpdGggYXJncyAoZm9ybWF0dGluZyBkb25lIGluc2lkZSBsb2cgbWV0aG9kKVxuICAgIGNsaWVudEZpbGVMb2dnZXIubG9nKGxldmVsLCBhcmdzKTtcbiAgICAvLyBPbmx5IGZvcndhcmQgdG8gdGVybWluYWwgaWYgZW5hYmxlZFxuICAgIGlmICghaXNUZXJtaW5hbExvZ2dpbmdFbmFibGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gZG8gbm90IGFic3RyYWN0IHRoaXMsIGl0IGltcGxpY2l0bHkgcmVsaWVzIG9uIHdoaWNoIGZ1bmN0aW9ucyBjYWxsIGl0LiBmb3JjaW5nIHRoZSBpbmxpbmVkIGltcGxlbWVudGF0aW9uIG1ha2VzIHlvdSB0aGluayBhYm91dCBjYWxsZXJzXG4gICAgLy8gZXJyb3IgY2FwdHVyZSBzdGFjayB0cmFjZSBtYXliZVxuICAgIGNvbnN0IHN0YWNrID0gZ2V0RXJyb3JTdGFjayhuZXcgRXJyb3IoKSk7XG4gICAgY29uc3Qgc3RhY2tMaW5lcyA9IHN0YWNrPy5zcGxpdCgnXFxuJyk7XG4gICAgY29uc3QgY2xlYW5TdGFjayA9IHN0YWNrTGluZXM/LnNsaWNlKDMpLmpvaW4oJ1xcbicpIC8vIHRoaXMgaXMgcHJvYmFibHkgaWdub3JlZCBhbnl3YXlzXG4gICAgO1xuICAgIGNvbnN0IGVudHJ5ID0ge1xuICAgICAgICBraW5kOiAnY29uc29sZScsXG4gICAgICAgIGNvbnNvbGVNZXRob2RTdGFjazogY2xlYW5TdGFjayA/PyBudWxsLFxuICAgICAgICBtZXRob2Q6IGxldmVsLFxuICAgICAgICBhcmdzOiBhcmdzLm1hcCgoYXJnKT0+e1xuICAgICAgICAgICAgaWYgKGFyZyBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUVycm9yQXJnKGFyZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGtpbmQ6ICdhcmcnLFxuICAgICAgICAgICAgICAgIGRhdGE6ICgwLCBfZm9yd2FyZGxvZ3N1dGlscy5wcmVMb2dTZXJpYWxpemF0aW9uQ2xvbmUpKGFyZylcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgfTtcbiAgICBsb2dRdWV1ZS5zY2hlZHVsZUxvZ1NlbmQoZW50cnkpO1xufTtcbmNvbnN0IGZvcndhcmRFcnJvckxvZyA9IChhcmdzKT0+e1xuICAgIC8vIFNraXAgUmVhY3Qgc2VydmVyIHJlcGxheWVkIGxvZ3MgLSB0aGV5IHdlcmUgYWxyZWFkeSBsb2dnZWQgb24gdGhlIHNlcnZlclxuICAgIGlmIChpc1JlYWN0U2VydmVyUmVwbGF5ZWRMb2coYXJncykpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBBbHdheXMgbG9nIHRvIGNsaWVudCBmaWxlIGxvZ2dlciB3aXRoIGFyZ3MgKGZvcm1hdHRpbmcgZG9uZSBpbnNpZGUgbG9nIG1ldGhvZClcbiAgICBjbGllbnRGaWxlTG9nZ2VyLmxvZygnZXJyb3InLCBhcmdzKTtcbiAgICAvLyBPbmx5IGZvcndhcmQgdG8gdGVybWluYWwgaWYgZW5hYmxlZFxuICAgIGlmICghaXNUZXJtaW5hbExvZ2dpbmdFbmFibGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZXJyb3JPYmplY3RzID0gYXJncy5maWx0ZXIoKGFyZyk9PmFyZyBpbnN0YW5jZW9mIEVycm9yKTtcbiAgICBjb25zdCBmaXJzdCA9IGVycm9yT2JqZWN0cy5hdCgwKTtcbiAgICBpZiAoZmlyc3QpIHtcbiAgICAgICAgY29uc3Qgc291cmNlID0gKDAsIF9lcnJvcnNvdXJjZS5nZXRFcnJvclNvdXJjZSkoZmlyc3QpO1xuICAgICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgICAgICBsb2dRdWV1ZS5zb3VyY2VUeXBlID0gc291cmNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgKiBicm93c2VyIHNob3dzIHN0YWNrIHJlZ2FyZGxlc3Mgb2YgdHlwZSBvZiBkYXRhIHBhc3NlZCB0byBjb25zb2xlLmVycm9yLCBzbyB3ZSBzaG91bGQgZG8gdGhlIHNhbWVcbiAgICpcbiAgICogZG8gbm90IGFic3RyYWN0IHRoaXMsIGl0IGltcGxpY2l0bHkgcmVsaWVzIG9uIHdoaWNoIGZ1bmN0aW9ucyBjYWxsIGl0LiBmb3JjaW5nIHRoZSBpbmxpbmVkIGltcGxlbWVudGF0aW9uIG1ha2VzIHlvdSB0aGluayBhYm91dCBjYWxsZXJzXG4gICAqLyBjb25zdCBzdGFjayA9IGdldEVycm9yU3RhY2sobmV3IEVycm9yKCkpO1xuICAgIGNvbnN0IHN0YWNrTGluZXMgPSBzdGFjaz8uc3BsaXQoJ1xcbicpO1xuICAgIGNvbnN0IGNsZWFuU3RhY2sgPSBzdGFja0xpbmVzPy5zbGljZSgzKS5qb2luKCdcXG4nKTtcbiAgICBjb25zdCBlbnRyeSA9IHtcbiAgICAgICAga2luZDogJ2FueS1sb2dnZWQtZXJyb3InLFxuICAgICAgICBtZXRob2Q6ICdlcnJvcicsXG4gICAgICAgIGNvbnNvbGVFcnJvclN0YWNrOiBjbGVhblN0YWNrID8/ICcnLFxuICAgICAgICBhcmdzOiBhcmdzLm1hcCgoYXJnKT0+e1xuICAgICAgICAgICAgaWYgKGFyZyBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUVycm9yQXJnKGFyZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGtpbmQ6ICdhcmcnLFxuICAgICAgICAgICAgICAgIGRhdGE6ICgwLCBfZm9yd2FyZGxvZ3N1dGlscy5wcmVMb2dTZXJpYWxpemF0aW9uQ2xvbmUpKGFyZylcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgfTtcbiAgICBsb2dRdWV1ZS5zY2hlZHVsZUxvZ1NlbmQoZW50cnkpO1xufTtcbmNvbnN0IGNyZWF0ZVVuY2F1Z2h0RXJyb3JFbnRyeSA9IChlcnJvck5hbWUsIGVycm9yTWVzc2FnZSwgZnVsbFN0YWNrKT0+e1xuICAgIGNvbnN0IGVudHJ5ID0ge1xuICAgICAgICBraW5kOiAnZm9ybWF0dGVkLWVycm9yJyxcbiAgICAgICAgcHJlZml4OiBgVW5jYXVnaHQgJHtlcnJvck5hbWV9OiAke2Vycm9yTWVzc2FnZX1gLFxuICAgICAgICBzdGFjazogZnVsbFN0YWNrLFxuICAgICAgICBtZXRob2Q6ICdlcnJvcidcbiAgICB9O1xuICAgIGxvZ1F1ZXVlLnNjaGVkdWxlTG9nU2VuZChlbnRyeSk7XG59O1xuY29uc3QgZ2V0RXJyb3JTdGFjayA9IChlcnJvcik9PntcbiAgICByZXR1cm4gZXJyb3Iuc3RhY2sgfHwgJyc7XG59O1xuLy8gR2V0IGVycm9yIHN0YWNrIHdpdGggb3duZXIgc3RhY2sgYXBwZW5kZWQgZm9yIHNvdXJjZSBtYXBwaW5nIG9uIHRoZSBzZXJ2ZXJcbmNvbnN0IGdldEVycm9yU3RhY2tXaXRoT3duZXJTdGFjayA9IChlcnJvcik9PntcbiAgICBjb25zdCBlcnJvclN0YWNrID0gZ2V0RXJyb3JTdGFjayhlcnJvcik7XG4gICAgY29uc3Qgb3duZXJTdGFjayA9ICgwLCBfc3RpdGNoZWRlcnJvci5nZXRPd25lclN0YWNrKShlcnJvcik7XG4gICAgcmV0dXJuIG93bmVyU3RhY2sgPyBgJHtlcnJvclN0YWNrfVxcbiR7b3duZXJTdGFja31gIDogZXJyb3JTdGFjaztcbn07XG5mdW5jdGlvbiBsb2dVbmhhbmRsZWRSZWplY3Rpb24ocmVhc29uKSB7XG4gICAgLy8gQWx3YXlzIGxvZyB0byBjbGllbnQgZmlsZSBsb2dnZXJcbiAgICBjb25zdCBtZXNzYWdlID0gcmVhc29uIGluc3RhbmNlb2YgRXJyb3IgPyBgJHtyZWFzb24ubmFtZX06ICR7cmVhc29uLm1lc3NhZ2V9YCA6IEpTT04uc3RyaW5naWZ5KHJlYXNvbik7XG4gICAgY2xpZW50RmlsZUxvZ2dlci5sb2coJ2Vycm9yJywgW1xuICAgICAgICBgdW5oYW5kbGVkUmVqZWN0aW9uOiAke21lc3NhZ2V9YFxuICAgIF0pO1xuICAgIC8vIE9ubHkgZm9yd2FyZCB0byB0ZXJtaW5hbCBpZiBlbmFibGVkXG4gICAgaWYgKCFpc1Rlcm1pbmFsTG9nZ2luZ0VuYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocmVhc29uIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgY3JlYXRlVW5oYW5kbGVkUmVqZWN0aW9uRXJyb3JFbnRyeShyZWFzb24sIGdldEVycm9yU3RhY2tXaXRoT3duZXJTdGFjayhyZWFzb24pKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjcmVhdGVVbmhhbmRsZWRSZWplY3Rpb25Ob25FcnJvckVudHJ5KHJlYXNvbik7XG59XG5jb25zdCBjcmVhdGVVbmhhbmRsZWRSZWplY3Rpb25FcnJvckVudHJ5ID0gKGVycm9yLCBmdWxsU3RhY2spPT57XG4gICAgY29uc3Qgc291cmNlID0gKDAsIF9lcnJvcnNvdXJjZS5nZXRFcnJvclNvdXJjZSkoZXJyb3IpO1xuICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgbG9nUXVldWUuc291cmNlVHlwZSA9IHNvdXJjZTtcbiAgICB9XG4gICAgY29uc3QgZW50cnkgPSB7XG4gICAgICAgIGtpbmQ6ICdmb3JtYXR0ZWQtZXJyb3InLFxuICAgICAgICBwcmVmaXg6IGDiqK8gdW5oYW5kbGVkUmVqZWN0aW9uOiAke2Vycm9yLm5hbWV9OiAke2Vycm9yLm1lc3NhZ2V9YCxcbiAgICAgICAgc3RhY2s6IGZ1bGxTdGFjayxcbiAgICAgICAgbWV0aG9kOiAnZXJyb3InXG4gICAgfTtcbiAgICBsb2dRdWV1ZS5zY2hlZHVsZUxvZ1NlbmQoZW50cnkpO1xufTtcbmNvbnN0IGNyZWF0ZVVuaGFuZGxlZFJlamVjdGlvbk5vbkVycm9yRW50cnkgPSAocmVhc29uKT0+e1xuICAgIGNvbnN0IGVudHJ5ID0ge1xuICAgICAgICBraW5kOiAnYW55LWxvZ2dlZC1lcnJvcicsXG4gICAgICAgIC8vIHdlIGNhbid0IGFjY2VzcyB0aGUgc3RhY2sgc2luY2UgdGhlIGV2ZW50IGlzIGRpc3BhdGNoZWQgYXN5bmMgYW5kIGNyZWF0aW5nIGFuIGlubGluZSBlcnJvciB3b3VsZCBiZSBtZWFuaW5nbGVzc1xuICAgICAgICBjb25zb2xlRXJyb3JTdGFjazogJycsXG4gICAgICAgIG1ldGhvZDogJ2Vycm9yJyxcbiAgICAgICAgYXJnczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtpbmQ6ICdhcmcnLFxuICAgICAgICAgICAgICAgIGRhdGE6IGDiqK8gdW5oYW5kbGVkUmVqZWN0aW9uOmAsXG4gICAgICAgICAgICAgICAgaXNSZWplY3Rpb25NZXNzYWdlOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtpbmQ6ICdhcmcnLFxuICAgICAgICAgICAgICAgIGRhdGE6ICgwLCBfZm9yd2FyZGxvZ3N1dGlscy5wcmVMb2dTZXJpYWxpemF0aW9uQ2xvbmUpKHJlYXNvbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgIH07XG4gICAgbG9nUXVldWUuc2NoZWR1bGVMb2dTZW5kKGVudHJ5KTtcbn07XG5jb25zdCBpc0hNUiA9IChhcmdzKT0+e1xuICAgIGNvbnN0IGZpcnN0QXJnID0gYXJnc1swXTtcbiAgICBpZiAodHlwZW9mIGZpcnN0QXJnICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChmaXJzdEFyZy5zdGFydHNXaXRoKCdbRmFzdCBSZWZyZXNoXScpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoZmlyc3RBcmcuc3RhcnRzV2l0aCgnW0hNUl0nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcbi8qKlxuICogTWF0Y2hlcyB0aGUgZm9ybWF0IG9mIGxvZ3MgYXJndW1lbnRzIFJlYWN0IHJlcGxheWVkIGZyb20gdGhlIFJTQy5cbiAqLyBjb25zdCBpc1JlYWN0U2VydmVyUmVwbGF5ZWRMb2cgPSAoYXJncyk9PntcbiAgICBpZiAoYXJncy5sZW5ndGggPCAzKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgW2Zvcm1hdCwgc3R5bGVzLCBsYWJlbF0gPSBhcmdzO1xuICAgIGlmICh0eXBlb2YgZm9ybWF0ICE9PSAnc3RyaW5nJyB8fCB0eXBlb2Ygc3R5bGVzICE9PSAnc3RyaW5nJyB8fCB0eXBlb2YgbGFiZWwgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGZvcm1hdC5zdGFydHNXaXRoKCclYyVzJWMnKSAmJiBzdHlsZXMuaW5jbHVkZXMoJ2JhY2tncm91bmQ6Jyk7XG59O1xuZnVuY3Rpb24gZm9yd2FyZFVuaGFuZGxlZEVycm9yKGVycm9yKSB7XG4gICAgLy8gQWx3YXlzIGxvZyB0byBjbGllbnQgZmlsZSBsb2dnZXJcbiAgICBjbGllbnRGaWxlTG9nZ2VyLmxvZygnZXJyb3InLCBbXG4gICAgICAgIGB1bmNhdWdodEVycm9yOiAke2Vycm9yLm5hbWV9OiAke2Vycm9yLm1lc3NhZ2V9YFxuICAgIF0pO1xuICAgIC8vIE9ubHkgZm9yd2FyZCB0byB0ZXJtaW5hbCBpZiBlbmFibGVkXG4gICAgaWYgKCFpc1Rlcm1pbmFsTG9nZ2luZ0VuYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjcmVhdGVVbmNhdWdodEVycm9yRW50cnkoZXJyb3IubmFtZSwgZXJyb3IubWVzc2FnZSwgZ2V0RXJyb3JTdGFja1dpdGhPd25lclN0YWNrKGVycm9yKSk7XG59XG5jb25zdCBpbml0aWFsaXplRGVidWdMb2dGb3J3YXJkaW5nID0gKHJvdXRlcik9PntcbiAgICAvLyBwcm9iYWJseSBkb24ndCBuZWVkIHRoaXNcbiAgICBpZiAoaXNQYXRjaGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gVE9ETyhyb2IpOiB3aHkgZG9lcyB0aGlzIGJyZWFrIHJlbmRlcmluZyBvbiBzZXJ2ZXIsIGltcG9ydGFudCB0byBrbm93IGluY2FzZSB0aGUgc2FtZSBidWcgYXBwZWFycyBpbiBicm93c2VyXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gYmV0dGVyIHRvIGJlIHNhZmUgdGhhbiBzb3JyeVxuICAgIHRyeSB7XG4gICAgICAgIG1ldGhvZHMuZm9yRWFjaCgobWV0aG9kKT0+KDAsIF9mb3J3YXJkbG9nc3NoYXJlZC5wYXRjaENvbnNvbGVNZXRob2QpKG1ldGhvZCwgKF8sIC4uLmFyZ3MpPT57XG4gICAgICAgICAgICAgICAgaWYgKGlzSE1SKGFyZ3MpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGlzUmVhY3RTZXJ2ZXJSZXBsYXllZExvZyhhcmdzKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNyZWF0ZUxvZ0VudHJ5KG1ldGhvZCwgYXJncyk7XG4gICAgICAgICAgICB9KSk7XG4gICAgfSBjYXRjaCAge31cbiAgICBsb2dRdWV1ZS5yb3V0ZXIgPSByb3V0ZXI7XG4gICAgaXNQYXRjaGVkID0gdHJ1ZTtcbiAgICAvLyBDbGVhbnVwIG9uIHBhZ2UgdW5sb2FkXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsICgpPT57XG4gICAgICAgIGNhbmNlbExvZ0ZsdXNoKCk7XG4gICAgICAgIHN0b3BIZWFydGJlYXQoKTtcbiAgICAgICAgLy8gU2VuZCBhbnkgcmVtYWluaW5nIGxvZ3MgYmVmb3JlIHBhZ2UgdW5sb2Fkc1xuICAgICAgICBzZW5kQ2xpZW50RmlsZUxvZ3MoKTtcbiAgICB9KTtcbn07XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZvcndhcmQtbG9ncy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/next-devtools/userspace/app/forward-logs.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":
|
||
/*!*************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js ***!
|
||
\*************************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n SEGMENT_EXPLORER_SIMULATED_ERROR_MESSAGE: function() {\n return SEGMENT_EXPLORER_SIMULATED_ERROR_MESSAGE;\n },\n SegmentBoundaryTriggerNode: function() {\n return SegmentBoundaryTriggerNode;\n },\n SegmentStateProvider: function() {\n return SegmentStateProvider;\n },\n SegmentViewNode: function() {\n return SegmentViewNode;\n },\n SegmentViewStateNode: function() {\n return SegmentViewStateNode;\n },\n useSegmentState: function() {\n return useSegmentState;\n }\n});\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nconst _nextdevtools = __webpack_require__(/*! next/dist/compiled/next-devtools */ \"(ssr)/./node_modules/next/dist/next-devtools/dev-overlay.shim.js\");\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../../shared/lib/app-router-context.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js\");\nconst _notfound = __webpack_require__(/*! ../../../client/components/not-found */ \"(ssr)/./node_modules/next/dist/client/components/not-found.js\");\nconst SEGMENT_EXPLORER_SIMULATED_ERROR_MESSAGE = 'NEXT_DEVTOOLS_SIMULATED_ERROR';\nfunction SegmentTrieNode({ type, pagePath }) {\n const { boundaryType, setBoundaryType } = useSegmentState();\n const nodeState = (0, _react.useMemo)(()=>{\n return {\n type,\n pagePath,\n boundaryType,\n setBoundaryType\n };\n }, [\n type,\n pagePath,\n boundaryType,\n setBoundaryType\n ]);\n // Use `useLayoutEffect` to ensure the state is updated during suspense.\n // `useEffect` won't work as the state is preserved during suspense.\n (0, _react.useLayoutEffect)(()=>{\n _nextdevtools.dispatcher.segmentExplorerNodeAdd(nodeState);\n return ()=>{\n _nextdevtools.dispatcher.segmentExplorerNodeRemove(nodeState);\n };\n }, [\n nodeState\n ]);\n return null;\n}\nfunction NotFoundSegmentNode() {\n (0, _notfound.notFound)();\n}\nfunction ErrorSegmentNode() {\n throw Object.defineProperty(new Error(SEGMENT_EXPLORER_SIMULATED_ERROR_MESSAGE), \"__NEXT_ERROR_CODE\", {\n value: \"E716\",\n enumerable: false,\n configurable: true\n });\n}\nconst forever = new Promise(()=>{});\nfunction LoadingSegmentNode() {\n (0, _react.use)(forever);\n return null;\n}\nfunction SegmentViewStateNode({ page }) {\n const { tree } = (0, _react.useContext)(_approutercontextsharedruntime.GlobalLayoutRouterContext);\n (0, _react.useLayoutEffect)(()=>{\n _nextdevtools.dispatcher.segmentExplorerUpdateRouteState(page, tree);\n return ()=>{\n _nextdevtools.dispatcher.segmentExplorerUpdateRouteState('', null);\n };\n }, [\n page,\n tree\n ]);\n return null;\n}\nfunction SegmentBoundaryTriggerNode() {\n const { boundaryType } = useSegmentState();\n let segmentNode = null;\n if (boundaryType === 'loading') {\n segmentNode = /*#__PURE__*/ (0, _jsxruntime.jsx)(LoadingSegmentNode, {});\n } else if (boundaryType === 'not-found') {\n segmentNode = /*#__PURE__*/ (0, _jsxruntime.jsx)(NotFoundSegmentNode, {});\n } else if (boundaryType === 'error') {\n segmentNode = /*#__PURE__*/ (0, _jsxruntime.jsx)(ErrorSegmentNode, {});\n }\n return segmentNode;\n}\nfunction SegmentViewNode({ type, pagePath, children }) {\n const segmentNode = /*#__PURE__*/ (0, _jsxruntime.jsx)(SegmentTrieNode, {\n type: type,\n pagePath: pagePath\n }, type);\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\n children: [\n segmentNode,\n children\n ]\n });\n}\nconst SegmentStateContext = /*#__PURE__*/ (0, _react.createContext)({\n boundaryType: null,\n setBoundaryType: ()=>{}\n});\nfunction SegmentStateProvider({ children }) {\n const [boundaryType, setBoundaryType] = (0, _react.useState)(null);\n const [errorBoundaryKey, setErrorBoundaryKey] = (0, _react.useState)(0);\n const reloadBoundary = (0, _react.useCallback)(()=>setErrorBoundaryKey((prev)=>prev + 1), []);\n const setBoundaryTypeAndReload = (0, _react.useCallback)((type)=>{\n if (type === null) {\n reloadBoundary();\n }\n setBoundaryType(type);\n }, [\n reloadBoundary\n ]);\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(SegmentStateContext.Provider, {\n value: {\n boundaryType,\n setBoundaryType: setBoundaryTypeAndReload\n },\n children: children\n }, errorBoundaryKey);\n}\nfunction useSegmentState() {\n return (0, _react.useContext)(SegmentStateContext);\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=segment-explorer-node.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9zZWdtZW50LWV4cGxvcmVyLW5vZGUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBc0JhQSx3Q0FBd0M7ZUFBeENBOztJQWdFR0MsMEJBQTBCO2VBQTFCQTs7SUEwQ0FDLG9CQUFvQjtlQUFwQkE7O0lBN0JBQyxlQUFlO2VBQWZBOztJQXhCQUMsb0JBQW9CO2VBQXBCQTs7SUF1RkFDLGVBQWU7ZUFBZkE7Ozs7bUNBeEpUOzBDQUVvQjsyREFDZTtzQ0FDakI7QUFRbEIsTUFBTUwsMkNBQ1g7QUFTRixTQUFTTSxnQkFBZ0IsRUFDdkJDLElBQUksRUFDSkMsUUFBUSxFQUlUO0lBQ0MsTUFBTSxFQUFFQyxZQUFZLEVBQUVDLGVBQWUsRUFBRSxHQUFHTDtJQUMxQyxNQUFNTSxZQUE4QkMsQ0FBQUEsR0FBQUEsT0FBQUEsT0FBQUEsRUFBUTtRQUMxQyxPQUFPO1lBQ0xMO1lBQ0FDO1lBQ0FDO1lBQ0FDO1FBQ0Y7SUFDRixHQUFHO1FBQUNIO1FBQU1DO1FBQVVDO1FBQWNDO0tBQWdCO0lBRWxELHdFQUF3RTtJQUN4RSxvRUFBb0U7SUFDcEVHLENBQUFBLEdBQUFBLE9BQUFBLGVBQUFBLEVBQWdCO1FBQ2RDLGNBQUFBLFVBQVUsQ0FBQ0Msc0JBQXNCLENBQUNKO1FBQ2xDLE9BQU87WUFDTEcsY0FBQUEsVUFBVSxDQUFDRSx5QkFBeUIsQ0FBQ0w7UUFDdkM7SUFDRixHQUFHO1FBQUNBO0tBQVU7SUFFZCxPQUFPO0FBQ1Q7QUFFQSxTQUFTTTtJQUNQQyxDQUFBQSxHQUFBQSxVQUFBQSxRQUFBQTtBQUNGO0FBRUEsU0FBU0M7SUFDUCxNQUFNLHFCQUFtRCxDQUFuRCxJQUFJQyxNQUFNcEIsMkNBQVY7ZUFBQTtvQkFBQTtzQkFBQTtJQUFrRDtBQUMxRDtBQUVBLE1BQU1xQixVQUFVLElBQUlDLFFBQVEsS0FBTztBQUNuQyxTQUFTQztJQUNQQyxDQUFBQSxHQUFBQSxPQUFBQSxHQUFBQSxFQUFJSDtJQUNKLE9BQU87QUFDVDtBQUVPLFNBQVNqQixxQkFBcUIsRUFBRXFCLElBQUksRUFBb0I7SUFDN0QsTUFBTSxFQUFFQyxJQUFJLEVBQUUsR0FBR0MsQ0FBQUEsR0FBQUEsT0FBQUEsVUFBVSxFQUFDQywrQkFBQUEseUJBQXlCO0lBQ3JEZixDQUFBQSxHQUFBQSxPQUFBQSxlQUFBQSxFQUFnQjtRQUNkQyxjQUFBQSxVQUFVLENBQUNlLCtCQUErQixDQUFDSixNQUFNQztRQUNqRCxPQUFPO1lBQ0xaLGNBQUFBLFVBQVUsQ0FBQ2UsK0JBQStCLENBQUMsSUFBSTtRQUNqRDtJQUNGLEdBQUc7UUFBQ0o7UUFBTUM7S0FBSztJQUNmLE9BQU87QUFDVDtBQUVPLFNBQVN6QjtJQUNkLE1BQU0sRUFBRVEsWUFBWSxFQUFFLEdBQUdKO0lBQ3pCLElBQUl5QixjQUErQjtJQUNuQyxJQUFJckIsaUJBQWlCLFdBQVc7UUFDOUJxQixjQUFBQSxXQUFBQSxHQUFjLHFCQUFDUCxvQkFBQUEsQ0FBQUE7SUFDakIsT0FBTyxJQUFJZCxpQkFBaUIsYUFBYTtRQUN2Q3FCLGNBQUFBLFdBQUFBLEdBQWMscUJBQUNiLHFCQUFBQSxDQUFBQTtJQUNqQixPQUFPLElBQUlSLGlCQUFpQixTQUFTO1FBQ25DcUIsY0FBQUEsV0FBQUEsR0FBYyxxQkFBQ1gsa0JBQUFBLENBQUFBO0lBQ2pCO0lBQ0EsT0FBT1c7QUFDVDtBQUVPLFNBQVMzQixnQkFBZ0IsRUFDOUJJLElBQUksRUFDSkMsUUFBUSxFQUNSdUIsUUFBUSxFQUtUO0lBQ0MsTUFBTUQsY0FBQUEsV0FBQUEsR0FDSixxQkFBQ3hCLGlCQUFBQTtRQUEyQkMsTUFBTUE7UUFBTUMsVUFBVUE7T0FBNUJEO0lBR3hCLHFCQUNFOztZQUNHdUI7WUFDQUM7OztBQUdQO0FBRUEsTUFBTUMsc0JBQUFBLFdBQUFBLEdBQXNCQyxDQUFBQSxHQUFBQSxPQUFBQSxhQUFBQSxFQUd6QjtJQUNEeEIsY0FBYztJQUNkQyxpQkFBaUIsS0FBTztBQUMxQjtBQUVPLFNBQVNSLHFCQUFxQixFQUFFNkIsUUFBUSxFQUEyQjtJQUN4RSxNQUFNLENBQUN0QixjQUFjQyxnQkFBZ0IsR0FBR3dCLENBQUFBLEdBQUFBLE9BQUFBLFFBQUFBLEVBQ3RDO0lBR0YsTUFBTSxDQUFDQyxrQkFBa0JDLG9CQUFvQixHQUFHRixDQUFBQSxHQUFBQSxPQUFBQSxRQUFBQSxFQUFTO0lBQ3pELE1BQU1HLGlCQUFpQkMsQ0FBQUEsR0FBQUEsT0FBQUEsV0FBQUEsRUFDckIsSUFBTUYsb0JBQW9CLENBQUNHLE9BQVNBLE9BQU8sSUFDM0MsRUFBRTtJQUdKLE1BQU1DLDJCQUEyQkYsQ0FBQUEsR0FBQUEsT0FBQUEsV0FBQUEsRUFDL0IsQ0FBQy9CO1FBQ0MsSUFBSUEsU0FBUyxNQUFNO1lBQ2pCOEI7UUFDRjtRQUNBM0IsZ0JBQWdCSDtJQUNsQixHQUNBO1FBQUM4QjtLQUFlO0lBR2xCLHFCQUNFLHFCQUFDTCxvQkFBb0JTLFFBQVE7UUFFM0JDLE9BQU87WUFDTGpDO1lBQ0FDLGlCQUFpQjhCO1FBQ25CO2tCQUVDVDtPQU5JSTtBQVNYO0FBRU8sU0FBUzlCO0lBQ2QsT0FBT3NCLENBQUFBLEdBQUFBLE9BQUFBLFVBQUFBLEVBQVdLO0FBQ3BCIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9zZWdtZW50LWV4cGxvcmVyLW5vZGUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgdHlwZSB7IFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtcbiAgdXNlU3RhdGUsXG4gIGNyZWF0ZUNvbnRleHQsXG4gIHVzZUNvbnRleHQsXG4gIHVzZSxcbiAgdXNlTWVtbyxcbiAgdXNlQ2FsbGJhY2ssXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBkaXNwYXRjaGVyIH0gZnJvbSAnbmV4dC9kaXN0L2NvbXBpbGVkL25leHQtZGV2dG9vbHMnXG5pbXBvcnQgeyBHbG9iYWxMYXlvdXRSb3V0ZXJDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgeyBub3RGb3VuZCB9IGZyb20gJy4uLy4uLy4uL2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZCdcblxuZXhwb3J0IHR5cGUgU2VnbWVudEJvdW5kYXJ5VHlwZSA9XG4gIHwgJ25vdC1mb3VuZCdcbiAgfCAnZXJyb3InXG4gIHwgJ2xvYWRpbmcnXG4gIHwgJ2dsb2JhbC1lcnJvcidcblxuZXhwb3J0IGNvbnN0IFNFR01FTlRfRVhQTE9SRVJfU0lNVUxBVEVEX0VSUk9SX01FU1NBR0UgPVxuICAnTkVYVF9ERVZUT09MU19TSU1VTEFURURfRVJST1InXG5cbmV4cG9ydCB0eXBlIFNlZ21lbnROb2RlU3RhdGUgPSB7XG4gIHR5cGU6IHN0cmluZ1xuICBwYWdlUGF0aDogc3RyaW5nXG4gIGJvdW5kYXJ5VHlwZTogc3RyaW5nIHwgbnVsbFxuICBzZXRCb3VuZGFyeVR5cGU6ICh0eXBlOiBTZWdtZW50Qm91bmRhcnlUeXBlIHwgbnVsbCkgPT4gdm9pZFxufVxuXG5mdW5jdGlvbiBTZWdtZW50VHJpZU5vZGUoe1xuICB0eXBlLFxuICBwYWdlUGF0aCxcbn06IHtcbiAgdHlwZTogc3RyaW5nXG4gIHBhZ2VQYXRoOiBzdHJpbmdcbn0pOiBSZWFjdC5SZWFjdE5vZGUge1xuICBjb25zdCB7IGJvdW5kYXJ5VHlwZSwgc2V0Qm91bmRhcnlUeXBlIH0gPSB1c2VTZWdtZW50U3RhdGUoKVxuICBjb25zdCBub2RlU3RhdGU6IFNlZ21lbnROb2RlU3RhdGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZSxcbiAgICAgIHBhZ2VQYXRoLFxuICAgICAgYm91bmRhcnlUeXBlLFxuICAgICAgc2V0Qm91bmRhcnlUeXBlLFxuICAgIH1cbiAgfSwgW3R5cGUsIHBhZ2VQYXRoLCBib3VuZGFyeVR5cGUsIHNldEJvdW5kYXJ5VHlwZV0pXG5cbiAgLy8gVXNlIGB1c2VMYXlvdXRFZmZlY3RgIHRvIGVuc3VyZSB0aGUgc3RhdGUgaXMgdXBkYXRlZCBkdXJpbmcgc3VzcGVuc2UuXG4gIC8vIGB1c2VFZmZlY3RgIHdvbid0IHdvcmsgYXMgdGhlIHN0YXRlIGlzIHByZXNlcnZlZCBkdXJpbmcgc3VzcGVuc2UuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgZGlzcGF0Y2hlci5zZWdtZW50RXhwbG9yZXJOb2RlQWRkKG5vZGVTdGF0ZSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZGlzcGF0Y2hlci5zZWdtZW50RXhwbG9yZXJOb2RlUmVtb3ZlKG5vZGVTdGF0ZSlcbiAgICB9XG4gIH0sIFtub2RlU3RhdGVdKVxuXG4gIHJldHVybiBudWxsXG59XG5cbmZ1bmN0aW9uIE5vdEZvdW5kU2VnbWVudE5vZGUoKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgbm90Rm91bmQoKVxufVxuXG5mdW5jdGlvbiBFcnJvclNlZ21lbnROb2RlKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIHRocm93IG5ldyBFcnJvcihTRUdNRU5UX0VYUExPUkVSX1NJTVVMQVRFRF9FUlJPUl9NRVNTQUdFKVxufVxuXG5jb25zdCBmb3JldmVyID0gbmV3IFByb21pc2UoKCkgPT4ge30pXG5mdW5jdGlvbiBMb2FkaW5nU2VnbWVudE5vZGUoKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgdXNlKGZvcmV2ZXIpXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTZWdtZW50Vmlld1N0YXRlTm9kZSh7IHBhZ2UgfTogeyBwYWdlOiBzdHJpbmcgfSkge1xuICBjb25zdCB7IHRyZWUgfSA9IHVzZUNvbnRleHQoR2xvYmFsTGF5b3V0Um91dGVyQ29udGV4dClcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBkaXNwYXRjaGVyLnNlZ21lbnRFeHBsb3JlclVwZGF0ZVJvdXRlU3RhdGUocGFnZSwgdHJlZSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZGlzcGF0Y2hlci5zZWdtZW50RXhwbG9yZXJVcGRhdGVSb3V0ZVN0YXRlKCcnLCBudWxsKVxuICAgIH1cbiAgfSwgW3BhZ2UsIHRyZWVdKVxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24gU2VnbWVudEJvdW5kYXJ5VHJpZ2dlck5vZGUoKSB7XG4gIGNvbnN0IHsgYm91bmRhcnlUeXBlIH0gPSB1c2VTZWdtZW50U3RhdGUoKVxuICBsZXQgc2VnbWVudE5vZGU6IFJlYWN0LlJlYWN0Tm9kZSA9IG51bGxcbiAgaWYgKGJvdW5kYXJ5VHlwZSA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgc2VnbWVudE5vZGUgPSA8TG9hZGluZ1NlZ21lbnROb2RlIC8+XG4gIH0gZWxzZSBpZiAoYm91bmRhcnlUeXBlID09PSAnbm90LWZvdW5kJykge1xuICAgIHNlZ21lbnROb2RlID0gPE5vdEZvdW5kU2VnbWVudE5vZGUgLz5cbiAgfSBlbHNlIGlmIChib3VuZGFyeVR5cGUgPT09ICdlcnJvcicpIHtcbiAgICBzZWdtZW50Tm9kZSA9IDxFcnJvclNlZ21lbnROb2RlIC8+XG4gIH1cbiAgcmV0dXJuIHNlZ21lbnROb2RlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTZWdtZW50Vmlld05vZGUoe1xuICB0eXBlLFxuICBwYWdlUGF0aCxcbiAgY2hpbGRyZW4sXG59OiB7XG4gIHR5cGU6IHN0cmluZ1xuICBwYWdlUGF0aDogc3RyaW5nXG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlXG59KTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgY29uc3Qgc2VnbWVudE5vZGUgPSAoXG4gICAgPFNlZ21lbnRUcmllTm9kZSBrZXk9e3R5cGV9IHR5cGU9e3R5cGV9IHBhZ2VQYXRoPXtwYWdlUGF0aH0gLz5cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtzZWdtZW50Tm9kZX1cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8Lz5cbiAgKVxufVxuXG5jb25zdCBTZWdtZW50U3RhdGVDb250ZXh0ID0gY3JlYXRlQ29udGV4dDx7XG4gIGJvdW5kYXJ5VHlwZTogU2VnbWVudEJvdW5kYXJ5VHlwZSB8IG51bGxcbiAgc2V0Qm91bmRhcnlUeXBlOiAodHlwZTogU2VnbWVudEJvdW5kYXJ5VHlwZSB8IG51bGwpID0+IHZvaWRcbn0+KHtcbiAgYm91bmRhcnlUeXBlOiBudWxsLFxuICBzZXRCb3VuZGFyeVR5cGU6ICgpID0+IHt9LFxufSlcblxuZXhwb3J0IGZ1bmN0aW9uIFNlZ21lbnRTdGF0ZVByb3ZpZGVyKHsgY2hpbGRyZW4gfTogeyBjaGlsZHJlbjogUmVhY3ROb2RlIH0pIHtcbiAgY29uc3QgW2JvdW5kYXJ5VHlwZSwgc2V0Qm91bmRhcnlUeXBlXSA9IHVzZVN0YXRlPFNlZ21lbnRCb3VuZGFyeVR5cGUgfCBudWxsPihcbiAgICBudWxsXG4gIClcblxuICBjb25zdCBbZXJyb3JCb3VuZGFyeUtleSwgc2V0RXJyb3JCb3VuZGFyeUtleV0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCByZWxvYWRCb3VuZGFyeSA9IHVzZUNhbGxiYWNrKFxuICAgICgpID0+IHNldEVycm9yQm91bmRhcnlLZXkoKHByZXYpID0+IHByZXYgKyAxKSxcbiAgICBbXVxuICApXG5cbiAgY29uc3Qgc2V0Qm91bmRhcnlUeXBlQW5kUmVsb2FkID0gdXNlQ2FsbGJhY2soXG4gICAgKHR5cGU6IFNlZ21lbnRCb3VuZGFyeVR5cGUgfCBudWxsKSA9PiB7XG4gICAgICBpZiAodHlwZSA9PT0gbnVsbCkge1xuICAgICAgICByZWxvYWRCb3VuZGFyeSgpXG4gICAgICB9XG4gICAgICBzZXRCb3VuZGFyeVR5cGUodHlwZSlcbiAgICB9LFxuICAgIFtyZWxvYWRCb3VuZGFyeV1cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPFNlZ21lbnRTdGF0ZUNvbnRleHQuUHJvdmlkZXJcbiAgICAgIGtleT17ZXJyb3JCb3VuZGFyeUtleX1cbiAgICAgIHZhbHVlPXt7XG4gICAgICAgIGJvdW5kYXJ5VHlwZSxcbiAgICAgICAgc2V0Qm91bmRhcnlUeXBlOiBzZXRCb3VuZGFyeVR5cGVBbmRSZWxvYWQsXG4gICAgICB9fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L1NlZ21lbnRTdGF0ZUNvbnRleHQuUHJvdmlkZXI+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNlZ21lbnRTdGF0ZSgpIHtcbiAgcmV0dXJuIHVzZUNvbnRleHQoU2VnbWVudFN0YXRlQ29udGV4dClcbn1cbiJdLCJuYW1lcyI6WyJTRUdNRU5UX0VYUExPUkVSX1NJTVVMQVRFRF9FUlJPUl9NRVNTQUdFIiwiU2VnbWVudEJvdW5kYXJ5VHJpZ2dlck5vZGUiLCJTZWdtZW50U3RhdGVQcm92aWRlciIsIlNlZ21lbnRWaWV3Tm9kZSIsIlNlZ21lbnRWaWV3U3RhdGVOb2RlIiwidXNlU2VnbWVudFN0YXRlIiwiU2VnbWVudFRyaWVOb2RlIiwidHlwZSIsInBhZ2VQYXRoIiwiYm91bmRhcnlUeXBlIiwic2V0Qm91bmRhcnlUeXBlIiwibm9kZVN0YXRlIiwidXNlTWVtbyIsInVzZUxheW91dEVmZmVjdCIsImRpc3BhdGNoZXIiLCJzZWdtZW50RXhwbG9yZXJOb2RlQWRkIiwic2VnbWVudEV4cGxvcmVyTm9kZVJlbW92ZSIsIk5vdEZvdW5kU2VnbWVudE5vZGUiLCJub3RGb3VuZCIsIkVycm9yU2VnbWVudE5vZGUiLCJFcnJvciIsImZvcmV2ZXIiLCJQcm9taXNlIiwiTG9hZGluZ1NlZ21lbnROb2RlIiwidXNlIiwicGFnZSIsInRyZWUiLCJ1c2VDb250ZXh0IiwiR2xvYmFsTGF5b3V0Um91dGVyQ29udGV4dCIsInNlZ21lbnRFeHBsb3JlclVwZGF0ZVJvdXRlU3RhdGUiLCJzZWdtZW50Tm9kZSIsImNoaWxkcmVuIiwiU2VnbWVudFN0YXRlQ29udGV4dCIsImNyZWF0ZUNvbnRleHQiLCJ1c2VTdGF0ZSIsImVycm9yQm91bmRhcnlLZXkiLCJzZXRFcnJvckJvdW5kYXJ5S2V5IiwicmVsb2FkQm91bmRhcnkiLCJ1c2VDYWxsYmFjayIsInByZXYiLCJzZXRCb3VuZGFyeVR5cGVBbmRSZWxvYWQiLCJQcm92aWRlciIsInZhbHVlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/next-devtools/userspace/app/terminal-logging-config.js":
|
||
/*!***************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/next-devtools/userspace/app/terminal-logging-config.js ***!
|
||
\***************************************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getIsTerminalLoggingEnabled: function() {\n return getIsTerminalLoggingEnabled;\n },\n getTerminalLoggingConfig: function() {\n return getTerminalLoggingConfig;\n }\n});\nfunction getTerminalLoggingConfig() {\n try {\n return JSON.parse(\"\\\"warn\\\"\" || 0);\n } catch {\n return false;\n }\n}\nfunction getIsTerminalLoggingEnabled() {\n const config = getTerminalLoggingConfig();\n return Boolean(config);\n}\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=terminal-logging-config.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC90ZXJtaW5hbC1sb2dnaW5nLWNvbmZpZy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FHTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsMEJBQTBCLFVBQWlELElBQUksQ0FBTztBQUN0RixNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5REFBeUQsYUFBYTtBQUN0RTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC90ZXJtaW5hbC1sb2dnaW5nLWNvbmZpZy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGdldElzVGVybWluYWxMb2dnaW5nRW5hYmxlZDogbnVsbCxcbiAgICBnZXRUZXJtaW5hbExvZ2dpbmdDb25maWc6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgZ2V0SXNUZXJtaW5hbExvZ2dpbmdFbmFibGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldElzVGVybWluYWxMb2dnaW5nRW5hYmxlZDtcbiAgICB9LFxuICAgIGdldFRlcm1pbmFsTG9nZ2luZ0NvbmZpZzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRUZXJtaW5hbExvZ2dpbmdDb25maWc7XG4gICAgfVxufSk7XG5mdW5jdGlvbiBnZXRUZXJtaW5hbExvZ2dpbmdDb25maWcoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UocHJvY2Vzcy5lbnYuX19ORVhUX0JST1dTRVJfREVCVUdfSU5GT19JTl9URVJNSU5BTCB8fCAnZmFsc2UnKTtcbiAgICB9IGNhdGNoICB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5mdW5jdGlvbiBnZXRJc1Rlcm1pbmFsTG9nZ2luZ0VuYWJsZWQoKSB7XG4gICAgY29uc3QgY29uZmlnID0gZ2V0VGVybWluYWxMb2dnaW5nQ29uZmlnKCk7XG4gICAgcmV0dXJuIEJvb2xlYW4oY29uZmlnKTtcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGVybWluYWwtbG9nZ2luZy1jb25maWcuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/next-devtools/userspace/app/terminal-logging-config.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/next-devtools/userspace/use-app-dev-rendering-indicator.js":
|
||
/*!*******************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/next-devtools/userspace/use-app-dev-rendering-indicator.js ***!
|
||
\*******************************************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"useAppDevRenderingIndicator\", ({\n enumerable: true,\n get: function() {\n return useAppDevRenderingIndicator;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nconst _nextdevtools = __webpack_require__(/*! next/dist/compiled/next-devtools */ \"(ssr)/./node_modules/next/dist/next-devtools/dev-overlay.shim.js\");\nconst useAppDevRenderingIndicator = ()=>{\n const [isPending, startTransition] = (0, _react.useTransition)();\n (0, _react.useEffect)(()=>{\n if (isPending) {\n _nextdevtools.dispatcher.renderingIndicatorShow();\n } else {\n _nextdevtools.dispatcher.renderingIndicatorHide();\n }\n }, [\n isPending\n ]);\n return startTransition;\n};\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=use-app-dev-rendering-indicator.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL3VzZS1hcHAtZGV2LXJlbmRlcmluZy1pbmRpY2F0b3IuanMiLCJtYXBwaW5ncyI6Ijs7OzsrREFLYUE7OztlQUFBQTs7O21DQUg0QjswQ0FDZDtBQUVwQixNQUFNQSw4QkFBOEI7SUFDekMsTUFBTSxDQUFDQyxXQUFXQyxnQkFBZ0IsR0FBR0MsQ0FBQUEsR0FBQUEsT0FBQUEsYUFBQUE7SUFFckNDLENBQUFBLEdBQUFBLE9BQUFBLFNBQUFBLEVBQVU7UUFDUixJQUFJSCxXQUFXO1lBQ2JJLGNBQUFBLFVBQVUsQ0FBQ0Msc0JBQXNCO1FBQ25DLE9BQU87WUFDTEQsY0FBQUEsVUFBVSxDQUFDRSxzQkFBc0I7UUFDbkM7SUFDRixHQUFHO1FBQUNOO0tBQVU7SUFFZCxPQUFPQztBQUNUIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL3VzZS1hcHAtZGV2LXJlbmRlcmluZy1pbmRpY2F0b3IudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVRyYW5zaXRpb24gfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGRpc3BhdGNoZXIgfSBmcm9tICduZXh0L2Rpc3QvY29tcGlsZWQvbmV4dC1kZXZ0b29scydcblxuZXhwb3J0IGNvbnN0IHVzZUFwcERldlJlbmRlcmluZ0luZGljYXRvciA9ICgpID0+IHtcbiAgY29uc3QgW2lzUGVuZGluZywgc3RhcnRUcmFuc2l0aW9uXSA9IHVzZVRyYW5zaXRpb24oKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzUGVuZGluZykge1xuICAgICAgZGlzcGF0Y2hlci5yZW5kZXJpbmdJbmRpY2F0b3JTaG93KClcbiAgICB9IGVsc2Uge1xuICAgICAgZGlzcGF0Y2hlci5yZW5kZXJpbmdJbmRpY2F0b3JIaWRlKClcbiAgICB9XG4gIH0sIFtpc1BlbmRpbmddKVxuXG4gIHJldHVybiBzdGFydFRyYW5zaXRpb25cbn1cbiJdLCJuYW1lcyI6WyJ1c2VBcHBEZXZSZW5kZXJpbmdJbmRpY2F0b3IiLCJpc1BlbmRpbmciLCJzdGFydFRyYW5zaXRpb24iLCJ1c2VUcmFuc2l0aW9uIiwidXNlRWZmZWN0IiwiZGlzcGF0Y2hlciIsInJlbmRlcmluZ0luZGljYXRvclNob3ciLCJyZW5kZXJpbmdJbmRpY2F0b3JIaWRlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/next-devtools/userspace/use-app-dev-rendering-indicator.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/app-render/dynamic-rendering.js":
|
||
/*!***********************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/app-render/dynamic-rendering.js ***!
|
||
\***********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * The functions provided by this module are used to communicate certain properties\n * about the currently running code so that Next.js can make decisions on how to handle\n * the current execution in different rendering modes such as pre-rendering, resuming, and SSR.\n *\n * Today Next.js treats all code as potentially static. Certain APIs may only make sense when dynamically rendering.\n * Traditionally this meant deopting the entire render to dynamic however with PPR we can now deopt parts\n * of a React tree as dynamic while still keeping other parts static. There are really two different kinds of\n * Dynamic indications.\n *\n * The first is simply an intention to be dynamic. unstable_noStore is an example of this where\n * the currently executing code simply declares that the current scope is dynamic but if you use it\n * inside unstable_cache it can still be cached. This type of indication can be removed if we ever\n * make the default dynamic to begin with because the only way you would ever be static is inside\n * a cache scope which this indication does not affect.\n *\n * The second is an indication that a dynamic data source was read. This is a stronger form of dynamic\n * because it means that it is inappropriate to cache this at all. using a dynamic data source inside\n * unstable_cache should error. If you want to use some dynamic data inside unstable_cache you should\n * read that data outside the cache and pass it in as an argument to the cached function.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n DynamicHoleKind: function() {\n return DynamicHoleKind;\n },\n Postpone: function() {\n return Postpone;\n },\n PreludeState: function() {\n return PreludeState;\n },\n abortAndThrowOnSynchronousRequestDataAccess: function() {\n return abortAndThrowOnSynchronousRequestDataAccess;\n },\n abortOnSynchronousPlatformIOAccess: function() {\n return abortOnSynchronousPlatformIOAccess;\n },\n accessedDynamicData: function() {\n return accessedDynamicData;\n },\n annotateDynamicAccess: function() {\n return annotateDynamicAccess;\n },\n consumeDynamicAccess: function() {\n return consumeDynamicAccess;\n },\n createDynamicTrackingState: function() {\n return createDynamicTrackingState;\n },\n createDynamicValidationState: function() {\n return createDynamicValidationState;\n },\n createHangingInputAbortSignal: function() {\n return createHangingInputAbortSignal;\n },\n createInstantValidationState: function() {\n return createInstantValidationState;\n },\n createRenderInBrowserAbortSignal: function() {\n return createRenderInBrowserAbortSignal;\n },\n formatDynamicAPIAccesses: function() {\n return formatDynamicAPIAccesses;\n },\n getFirstDynamicReason: function() {\n return getFirstDynamicReason;\n },\n getNavigationDisallowedDynamicReasons: function() {\n return getNavigationDisallowedDynamicReasons;\n },\n getStaticShellDisallowedDynamicReasons: function() {\n return getStaticShellDisallowedDynamicReasons;\n },\n isDynamicPostpone: function() {\n return isDynamicPostpone;\n },\n isPrerenderInterruptedError: function() {\n return isPrerenderInterruptedError;\n },\n logDisallowedDynamicError: function() {\n return logDisallowedDynamicError;\n },\n markCurrentScopeAsDynamic: function() {\n return markCurrentScopeAsDynamic;\n },\n postponeWithTracking: function() {\n return postponeWithTracking;\n },\n throwIfDisallowedDynamic: function() {\n return throwIfDisallowedDynamic;\n },\n throwToInterruptStaticGeneration: function() {\n return throwToInterruptStaticGeneration;\n },\n trackAllowedDynamicAccess: function() {\n return trackAllowedDynamicAccess;\n },\n trackDynamicDataInDynamicRender: function() {\n return trackDynamicDataInDynamicRender;\n },\n trackDynamicHoleInNavigation: function() {\n return trackDynamicHoleInNavigation;\n },\n trackDynamicHoleInRuntimeShell: function() {\n return trackDynamicHoleInRuntimeShell;\n },\n trackDynamicHoleInStaticShell: function() {\n return trackDynamicHoleInStaticShell;\n },\n trackThrownErrorInNavigation: function() {\n return trackThrownErrorInNavigation;\n },\n useDynamicRouteParams: function() {\n return useDynamicRouteParams;\n },\n useDynamicSearchParams: function() {\n return useDynamicSearchParams;\n }\n});\nconst _react = /*#__PURE__*/ _interop_require_default(__webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\"));\nconst _hooksservercontext = __webpack_require__(/*! ../../client/components/hooks-server-context */ \"(ssr)/./node_modules/next/dist/client/components/hooks-server-context.js\");\nconst _staticgenerationbailout = __webpack_require__(/*! ../../client/components/static-generation-bailout */ \"(ssr)/./node_modules/next/dist/client/components/static-generation-bailout.js\");\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ./work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nconst _workasyncstorageexternal = __webpack_require__(/*! ../app-render/work-async-storage.external */ \"../app-render/work-async-storage.external\");\nconst _dynamicrenderingutils = __webpack_require__(/*! ../dynamic-rendering-utils */ \"(ssr)/./node_modules/next/dist/server/dynamic-rendering-utils.js\");\nconst _boundaryconstants = __webpack_require__(/*! ../../lib/framework/boundary-constants */ \"(ssr)/./node_modules/next/dist/lib/framework/boundary-constants.js\");\nconst _scheduler = __webpack_require__(/*! ../../lib/scheduler */ \"(ssr)/./node_modules/next/dist/lib/scheduler.js\");\nconst _bailouttocsr = __webpack_require__(/*! ../../shared/lib/lazy-dynamic/bailout-to-csr */ \"(ssr)/./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js\");\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(ssr)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nconst _boundaryconstants1 = __webpack_require__(/*! ./instant-validation/boundary-constants */ \"(ssr)/./node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nconst hasPostpone = typeof _react.default.unstable_postpone === 'function';\nfunction createDynamicTrackingState(isDebugDynamicAccesses) {\n return {\n isDebugDynamicAccesses,\n dynamicAccesses: [],\n syncDynamicErrorWithStack: null\n };\n}\nfunction createDynamicValidationState() {\n return {\n hasSuspenseAboveBody: false,\n hasDynamicMetadata: false,\n dynamicMetadata: null,\n hasDynamicViewport: false,\n hasAllowedDynamic: false,\n dynamicErrors: []\n };\n}\nfunction getFirstDynamicReason(trackingState) {\n var _trackingState_dynamicAccesses_;\n return (_trackingState_dynamicAccesses_ = trackingState.dynamicAccesses[0]) == null ? void 0 : _trackingState_dynamicAccesses_.expression;\n}\nfunction markCurrentScopeAsDynamic(store, workUnitStore, expression) {\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return;\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return;\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'request':\n case 'generate-static-params':\n break;\n default:\n workUnitStore;\n }\n }\n // If we're forcing dynamic rendering or we're forcing static rendering, we\n // don't need to do anything here because the entire page is already dynamic\n // or it's static and it should not throw or postpone here.\n if (store.forceDynamic || store.forceStatic) return;\n if (store.dynamicShouldError) {\n throw Object.defineProperty(new _staticgenerationbailout.StaticGenBailoutError(`Route ${store.route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`), \"__NEXT_ERROR_CODE\", {\n value: \"E553\",\n enumerable: false,\n configurable: true\n });\n }\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender-ppr':\n return postponeWithTracking(store.route, expression, workUnitStore.dynamicTracking);\n case 'prerender-legacy':\n workUnitStore.revalidate = 0;\n // We aren't prerendering, but we are generating a static page. We need\n // to bail out of static generation.\n const err = Object.defineProperty(new _hooksservercontext.DynamicServerError(`Route ${store.route} couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`), \"__NEXT_ERROR_CODE\", {\n value: \"E550\",\n enumerable: false,\n configurable: true\n });\n store.dynamicUsageDescription = expression;\n store.dynamicUsageStack = err.stack;\n throw err;\n case 'request':\n if (true) {\n workUnitStore.usedDynamic = true;\n }\n break;\n case 'generate-static-params':\n break;\n default:\n workUnitStore;\n }\n }\n}\nfunction throwToInterruptStaticGeneration(expression, store, prerenderStore) {\n // We aren't prerendering but we are generating a static page. We need to bail out of static generation\n const err = Object.defineProperty(new _hooksservercontext.DynamicServerError(`Route ${store.route} couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`), \"__NEXT_ERROR_CODE\", {\n value: \"E558\",\n enumerable: false,\n configurable: true\n });\n prerenderStore.revalidate = 0;\n store.dynamicUsageDescription = expression;\n store.dynamicUsageStack = err.stack;\n throw err;\n}\nfunction trackDynamicDataInDynamicRender(workUnitStore) {\n switch(workUnitStore.type){\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return;\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return;\n case 'prerender':\n case 'prerender-runtime':\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'prerender-client':\n case 'validation-client':\n case 'generate-static-params':\n break;\n case 'request':\n if (true) {\n workUnitStore.usedDynamic = true;\n }\n break;\n default:\n workUnitStore;\n }\n}\nfunction abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore) {\n const reason = `Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`;\n const error = createPrerenderInterruptedError(reason);\n prerenderStore.controller.abort(error);\n const dynamicTracking = prerenderStore.dynamicTracking;\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n // When we aren't debugging, we don't need to create another error for the\n // stack trace.\n stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined,\n expression\n });\n }\n}\nfunction abortOnSynchronousPlatformIOAccess(route, expression, errorWithStack, prerenderStore) {\n const dynamicTracking = prerenderStore.dynamicTracking;\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore);\n // It is important that we set this tracking value after aborting. Aborts are executed\n // synchronously except for the case where you abort during render itself. By setting this\n // value late we can use it to determine if any of the aborted tasks are the task that\n // called the sync IO expression in the first place.\n if (dynamicTracking) {\n if (dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack;\n }\n }\n}\nfunction abortAndThrowOnSynchronousRequestDataAccess(route, expression, errorWithStack, prerenderStore) {\n const prerenderSignal = prerenderStore.controller.signal;\n if (prerenderSignal.aborted === false) {\n // TODO it would be better to move this aborted check into the callsite so we can avoid making\n // the error object when it isn't relevant to the aborting of the prerender however\n // since we need the throw semantics regardless of whether we abort it is easier to land\n // this way. See how this was handled with `abortOnSynchronousPlatformIOAccess` for a closer\n // to ideal implementation\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore);\n // It is important that we set this tracking value after aborting. Aborts are executed\n // synchronously except for the case where you abort during render itself. By setting this\n // value late we can use it to determine if any of the aborted tasks are the task that\n // called the sync IO expression in the first place.\n const dynamicTracking = prerenderStore.dynamicTracking;\n if (dynamicTracking) {\n if (dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack;\n }\n }\n }\n throw createPrerenderInterruptedError(`Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`);\n}\nfunction Postpone({ reason, route }) {\n const prerenderStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n const dynamicTracking = prerenderStore && prerenderStore.type === 'prerender-ppr' ? prerenderStore.dynamicTracking : null;\n postponeWithTracking(route, reason, dynamicTracking);\n}\nfunction postponeWithTracking(route, expression, dynamicTracking) {\n assertPostpone();\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n // When we aren't debugging, we don't need to create another error for the\n // stack trace.\n stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined,\n expression\n });\n }\n _react.default.unstable_postpone(createPostponeReason(route, expression));\n}\nfunction createPostponeReason(route, expression) {\n return `Route ${route} needs to bail out of prerendering at this point because it used ${expression}. ` + `React throws this special object to indicate where. It should not be caught by ` + `your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`;\n}\nfunction isDynamicPostpone(err) {\n if (typeof err === 'object' && err !== null && typeof err.message === 'string') {\n return isDynamicPostponeReason(err.message);\n }\n return false;\n}\nfunction isDynamicPostponeReason(reason) {\n return reason.includes('needs to bail out of prerendering at this point because it used') && reason.includes('Learn more: https://nextjs.org/docs/messages/ppr-caught-error');\n}\nif (isDynamicPostponeReason(createPostponeReason('%%%', '^^^')) === false) {\n throw Object.defineProperty(new Error('Invariant: isDynamicPostpone misidentified a postpone reason. This is a bug in Next.js'), \"__NEXT_ERROR_CODE\", {\n value: \"E296\",\n enumerable: false,\n configurable: true\n });\n}\nconst NEXT_PRERENDER_INTERRUPTED = 'NEXT_PRERENDER_INTERRUPTED';\nfunction createPrerenderInterruptedError(message) {\n const error = Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n error.digest = NEXT_PRERENDER_INTERRUPTED;\n return error;\n}\nfunction isPrerenderInterruptedError(error) {\n return typeof error === 'object' && error !== null && error.digest === NEXT_PRERENDER_INTERRUPTED && 'name' in error && 'message' in error && error instanceof Error;\n}\nfunction accessedDynamicData(dynamicAccesses) {\n return dynamicAccesses.length > 0;\n}\nfunction consumeDynamicAccess(serverDynamic, clientDynamic) {\n // We mutate because we only call this once we are no longer writing\n // to the dynamicTrackingState and it's more efficient than creating a new\n // array.\n serverDynamic.dynamicAccesses.push(...clientDynamic.dynamicAccesses);\n return serverDynamic.dynamicAccesses;\n}\nfunction formatDynamicAPIAccesses(dynamicAccesses) {\n return dynamicAccesses.filter((access)=>typeof access.stack === 'string' && access.stack.length > 0).map(({ expression, stack })=>{\n stack = stack.split('\\n') // Remove the \"Error: \" prefix from the first line of the stack trace as\n // well as the first 4 lines of the stack trace which is the distance\n // from the user code and the `new Error().stack` call.\n .slice(4).filter((line)=>{\n // Exclude Next.js internals from the stack trace.\n if (line.includes('node_modules/next/')) {\n return false;\n }\n // Exclude anonymous functions from the stack trace.\n if (line.includes(' (<anonymous>)')) {\n return false;\n }\n // Exclude Node.js internals from the stack trace.\n if (line.includes(' (node:')) {\n return false;\n }\n return true;\n }).join('\\n');\n return `Dynamic API Usage Debug - ${expression}:\\n${stack}`;\n });\n}\nfunction assertPostpone() {\n if (!hasPostpone) {\n throw Object.defineProperty(new Error(`Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js`), \"__NEXT_ERROR_CODE\", {\n value: \"E224\",\n enumerable: false,\n configurable: true\n });\n }\n}\nfunction createRenderInBrowserAbortSignal() {\n const controller = new AbortController();\n controller.abort(Object.defineProperty(new _bailouttocsr.BailoutToCSRError('Render in Browser'), \"__NEXT_ERROR_CODE\", {\n value: \"E721\",\n enumerable: false,\n configurable: true\n }));\n return controller.signal;\n}\nfunction createHangingInputAbortSignal(workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-runtime':\n const controller = new AbortController();\n if (workUnitStore.cacheSignal) {\n // If we have a cacheSignal it means we're in a prospective render. If\n // the input we're waiting on is coming from another cache, we do want\n // to wait for it so that we can resolve this cache entry too.\n workUnitStore.cacheSignal.inputReady().then(()=>{\n controller.abort();\n });\n } else {\n // Otherwise we're in the final render and we should already have all\n // our caches filled.\n // If the prerender uses stages, we have wait until the runtime stage,\n // at which point all runtime inputs will be resolved.\n // (otherwise, a runtime prerender might consider `cookies()` hanging\n // even though they'd resolve in the next task.)\n //\n // We might still be waiting on some microtasks so we\n // wait one tick before giving up. When we give up, we still want to\n // render the content of this cache as deeply as we can so that we can\n // suspend as deeply as possible in the tree or not at all if we don't\n // end up waiting for the input.\n if (workUnitStore.type === 'prerender-runtime' && workUnitStore.stagedRendering) {\n const { stagedRendering } = workUnitStore;\n stagedRendering.waitForStage((0, _dynamicrenderingutils.getRuntimeStage)(stagedRendering)).then(()=>(0, _scheduler.scheduleOnNextTick)(()=>controller.abort()));\n } else {\n (0, _scheduler.scheduleOnNextTick)(()=>controller.abort());\n }\n }\n return controller.signal;\n case 'prerender-client':\n case 'validation-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'generate-static-params':\n return undefined;\n default:\n workUnitStore;\n }\n}\nfunction annotateDynamicAccess(expression, prerenderStore) {\n const dynamicTracking = prerenderStore.dynamicTracking;\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined,\n expression\n });\n }\n}\nfunction useDynamicRouteParams(expression) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workStore && workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender-client':\n case 'prerender':\n {\n const fallbackParams = workUnitStore.fallbackRouteParams;\n if (fallbackParams && fallbackParams.size > 0) {\n // We are in a prerender with cacheComponents semantics. We are going to\n // hang here and never resolve. This will cause the currently\n // rendering component to effectively be a dynamic hole.\n _react.default.use((0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, expression));\n }\n break;\n }\n case 'prerender-ppr':\n {\n const fallbackParams = workUnitStore.fallbackRouteParams;\n if (fallbackParams && fallbackParams.size > 0) {\n return postponeWithTracking(workStore.route, expression, workUnitStore.dynamicTracking);\n }\n break;\n }\n case 'validation-client':\n {\n break;\n }\n case 'prerender-runtime':\n throw Object.defineProperty(new _invarianterror.InvariantError(`\\`${expression}\\` was called during a runtime prerender. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), \"__NEXT_ERROR_CODE\", {\n value: \"E771\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'private-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError(`\\`${expression}\\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), \"__NEXT_ERROR_CODE\", {\n value: \"E745\",\n enumerable: false,\n configurable: true\n });\n case 'generate-static-params':\n throw Object.defineProperty(new _invarianterror.InvariantError(`\\`${expression}\\` was called in \\`generateStaticParams\\`. Next.js should be preventing ${expression} from being included in server component files statically, but did not in this case.`), \"__NEXT_ERROR_CODE\", {\n value: \"E1130\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-legacy':\n case 'request':\n case 'unstable-cache':\n break;\n default:\n workUnitStore;\n }\n }\n}\nfunction useDynamicSearchParams(expression) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (!workStore) {\n // We assume pages router context and just return\n return;\n }\n if (!workUnitStore) {\n (0, _workunitasyncstorageexternal.throwForMissingRequestStore)(expression);\n }\n switch(workUnitStore.type){\n case 'validation-client':\n // During instant validation we try to behave as close to client as possible,\n // so this shouldn't hang during SSR.\n return;\n case 'prerender-client':\n {\n _react.default.use((0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, expression));\n break;\n }\n case 'prerender-legacy':\n case 'prerender-ppr':\n {\n if (workStore.forceStatic) {\n return;\n }\n throw Object.defineProperty(new _bailouttocsr.BailoutToCSRError(expression), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n }\n case 'prerender':\n case 'prerender-runtime':\n throw Object.defineProperty(new _invarianterror.InvariantError(`\\`${expression}\\` was called from a Server Component. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), \"__NEXT_ERROR_CODE\", {\n value: \"E795\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'unstable-cache':\n case 'private-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError(`\\`${expression}\\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), \"__NEXT_ERROR_CODE\", {\n value: \"E745\",\n enumerable: false,\n configurable: true\n });\n case 'generate-static-params':\n throw Object.defineProperty(new _invarianterror.InvariantError(`\\`${expression}\\` was called in \\`generateStaticParams\\`. Next.js should be preventing ${expression} from being included in server component files statically, but did not in this case.`), \"__NEXT_ERROR_CODE\", {\n value: \"E1130\",\n enumerable: false,\n configurable: true\n });\n case 'request':\n return;\n default:\n workUnitStore;\n }\n}\nconst hasSuspenseRegex = /\\n\\s+at Suspense \\(<anonymous>\\)/;\n// Common implicit body tags that React will treat as body when placed directly in html\nconst bodyAndImplicitTags = 'body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6';\n// Detects when RootLayoutBoundary (our framework marker component) appears\n// after Suspense in the component stack, indicating the root layout is wrapped\n// within a Suspense boundary. Ensures no body/html/implicit-body components are in between.\n//\n// Example matches:\n// at Suspense (<anonymous>)\n// at __next_root_layout_boundary__ (<anonymous>)\n//\n// Or with other components in between (but not body/html/implicit-body):\n// at Suspense (<anonymous>)\n// at SomeComponent (<anonymous>)\n// at __next_root_layout_boundary__ (<anonymous>)\nconst hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex = new RegExp(`\\\\n\\\\s+at Suspense \\\\(<anonymous>\\\\)(?:(?!\\\\n\\\\s+at (?:${bodyAndImplicitTags}) \\\\(<anonymous>\\\\))[\\\\s\\\\S])*?\\\\n\\\\s+at ${_boundaryconstants.ROOT_LAYOUT_BOUNDARY_NAME} \\\\([^\\\\n]*\\\\)`);\nconst hasMetadataRegex = new RegExp(`\\\\n\\\\s+at ${_boundaryconstants.METADATA_BOUNDARY_NAME}[\\\\n\\\\s]`);\nconst hasViewportRegex = new RegExp(`\\\\n\\\\s+at ${_boundaryconstants.VIEWPORT_BOUNDARY_NAME}[\\\\n\\\\s]`);\nconst hasOutletRegex = new RegExp(`\\\\n\\\\s+at ${_boundaryconstants.OUTLET_BOUNDARY_NAME}[\\\\n\\\\s]`);\nconst hasInstantValidationBoundaryRegex = new RegExp(`\\\\n\\\\s+at ${_boundaryconstants1.INSTANT_VALIDATION_BOUNDARY_NAME}[\\\\n\\\\s]`);\nfunction trackAllowedDynamicAccess(workStore, componentStack, dynamicValidation, clientDynamic) {\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return;\n } else if (hasMetadataRegex.test(componentStack)) {\n dynamicValidation.hasDynamicMetadata = true;\n return;\n } else if (hasViewportRegex.test(componentStack)) {\n dynamicValidation.hasDynamicViewport = true;\n return;\n } else if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true;\n dynamicValidation.hasSuspenseAboveBody = true;\n return;\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true;\n return;\n } else if (clientDynamic.syncDynamicErrorWithStack) {\n // This task was the task that called the sync error.\n dynamicValidation.dynamicErrors.push(clientDynamic.syncDynamicErrorWithStack);\n return;\n } else {\n const message = `Route \"${workStore.route}\": Uncached data was accessed outside of ` + '<Suspense>. This delays the entire page from rendering, resulting in a ' + 'slow user experience. Learn more: ' + 'https://nextjs.org/docs/messages/blocking-route';\n const error = addErrorContext(Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1079\",\n enumerable: false,\n configurable: true\n }), componentStack, null);\n dynamicValidation.dynamicErrors.push(error);\n return;\n }\n}\nvar DynamicHoleKind = /*#__PURE__*/ function(DynamicHoleKind) {\n /** We know that this hole is caused by runtime data. */ DynamicHoleKind[DynamicHoleKind[\"Runtime\"] = 1] = \"Runtime\";\n /** We know that this hole is caused by dynamic data. */ DynamicHoleKind[DynamicHoleKind[\"Dynamic\"] = 2] = \"Dynamic\";\n return DynamicHoleKind;\n}({});\nfunction createInstantValidationState(createInstantStack) {\n return {\n hasDynamicMetadata: false,\n hasAllowedClientDynamicAboveBoundary: false,\n dynamicMetadata: null,\n hasDynamicViewport: false,\n hasAllowedDynamic: false,\n dynamicErrors: [],\n validationPreventingErrors: [],\n thrownErrorsOutsideBoundary: [],\n createInstantStack\n };\n}\nfunction trackDynamicHoleInNavigation(workStore, componentStack, dynamicValidation, clientDynamic, kind, boundaryState) {\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return;\n }\n if (hasMetadataRegex.test(componentStack)) {\n const usageDescription = kind === 1 ? `Runtime data such as \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` was accessed inside \\`generateMetadata\\` or you have file-based metadata such as icons that depend on dynamic params segments.` : `Uncached data or \\`connection()\\` was accessed inside \\`generateMetadata\\`.`;\n const message = `Route \"${workStore.route}\": ${usageDescription} Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`;\n const error = addErrorContext(Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1076\",\n enumerable: false,\n configurable: true\n }), componentStack, dynamicValidation.createInstantStack);\n dynamicValidation.dynamicMetadata = error;\n return;\n }\n if (hasViewportRegex.test(componentStack)) {\n const usageDescription = kind === 1 ? `Runtime data such as \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` was accessed inside \\`generateViewport\\`.` : `Uncached data or \\`connection()\\` was accessed inside \\`generateViewport\\`.`;\n const message = `Route \"${workStore.route}\": ${usageDescription} This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`;\n const error = addErrorContext(Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1086\",\n enumerable: false,\n configurable: true\n }), componentStack, dynamicValidation.createInstantStack);\n dynamicValidation.dynamicErrors.push(error);\n return;\n }\n const boundaryLocation = hasInstantValidationBoundaryRegex.exec(componentStack);\n if (!boundaryLocation) {\n // We don't see the validation boundary in the component stack,\n // so this hole must be coming from a shared parent.\n // Shared parents are fully resolved and don't have RSC holes,\n // but they can still suspend in a client component during SSR.\n // If we managed to render all the validation boundaries, that means\n // that the client holes aren't blocking validation and we can disregard them.\n // Note that we don't even care whether they have suspense or not.\n if (boundaryState.expectedIds.size === boundaryState.renderedIds.size) {\n dynamicValidation.hasAllowedClientDynamicAboveBoundary = true;\n dynamicValidation.hasAllowedDynamic = true // Holes outside the boundary contribute to allowing dynamic metadata\n ;\n return;\n } else {\n // TODO(instant-validation) TODO(NAR-787)\n // If shared parents blocked us from validating, we should only log\n // the errors from the innermost (segments), i.e. omit layouts whose\n // slots managed to render (because clearly they didn't block validation)\n const message = `Route \"${workStore.route}\": Could not validate \\`unstable_instant\\` because a Client Component in a parent segment prevented the page from rendering.`;\n const error = addErrorContext(Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1082\",\n enumerable: false,\n configurable: true\n }), componentStack, dynamicValidation.createInstantStack);\n dynamicValidation.validationPreventingErrors.push(error);\n return;\n }\n } else {\n // The hole originates inside the validation boundary.\n //\n // Check if we have a Suspense above the hole, but below the validation boundary.\n // If we do, then this dynamic usage wouldn't block a navigation to this subtree.\n // Conversely, if the nearest suspense is above the validation boundary, then this subtree would block.\n //\n // Note that in the component stack, children come before parents.\n //\n // Valid:\n // ...\n // at Suspense\n // ...\n // at __next_prefetch_validation_boundary__\n //\n // Invalid:\n // ...\n // at __next_prefetch_validation_boundary__\n // ...\n // at Suspense\n //\n const suspenseLocation = hasSuspenseRegex.exec(componentStack);\n if (suspenseLocation) {\n if (suspenseLocation.index < boundaryLocation.index) {\n dynamicValidation.hasAllowedDynamic = true;\n return;\n } else {\n // invalid - fallthrough\n }\n }\n }\n if (clientDynamic.syncDynamicErrorWithStack) {\n // This task was the task that called the sync error.\n const syncError = clientDynamic.syncDynamicErrorWithStack;\n if (dynamicValidation.createInstantStack !== null && syncError.cause === undefined) {\n syncError.cause = dynamicValidation.createInstantStack();\n }\n dynamicValidation.dynamicErrors.push(syncError);\n return;\n }\n const usageDescription = kind === 1 ? `Runtime data such as \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` was accessed outside of \\`<Suspense>\\`.` : `Uncached data or \\`connection()\\` was accessed outside of \\`<Suspense>\\`.`;\n const message = `Route \"${workStore.route}\": ${usageDescription} This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`;\n const error = addErrorContext(Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1078\",\n enumerable: false,\n configurable: true\n }), componentStack, dynamicValidation.createInstantStack);\n dynamicValidation.dynamicErrors.push(error);\n return;\n}\nfunction trackThrownErrorInNavigation(workStore, dynamicValidation, thrownValue, componentStack) {\n const boundaryLocation = hasInstantValidationBoundaryRegex.exec(componentStack);\n if (!boundaryLocation) {\n // There's no validation boundary on the component stack.\n // This error may have blocked a boundary from rendering.\n // Wrap the error to provide component context.\n // This helps for errors from node_modules which would otherwise\n // have no useful stack information due to ignore-listing,\n // e.g. next/dynamic with `ssr: false`.\n const error = addErrorContext(Object.defineProperty(new Error('An error occurred while attempting to validate instant UI. This error may be preventing the validation from completing.', {\n cause: thrownValue\n }), \"__NEXT_ERROR_CODE\", {\n value: \"E1118\",\n enumerable: false,\n configurable: true\n }), componentStack, null);\n dynamicValidation.thrownErrorsOutsideBoundary.push(error);\n } else {\n // There's validation boundary on the component stack,\n // so we know this error didn't block a validation boundary from rendering.\n // However, this error might be hiding be hiding dynamic content that would\n // cause validation to fail.\n const suspenseLocation = hasSuspenseRegex.exec(componentStack);\n if (suspenseLocation) {\n if (suspenseLocation.index < boundaryLocation.index) {\n // There's a Suspense below the validation boundary but above this error's location.\n // This subtree can't fail instant validation because any potential\n // dynamic holes would be guarded by the Suspense anyway,\n // so we can allow this.\n return;\n } else {\n // invalid - fallthrough\n }\n }\n const message = `Route \"${workStore.route}\": Could not validate \\`unstable_instant\\` because an error prevented the target segment from rendering.`;\n const error = addErrorContext(Object.defineProperty(new Error(message, {\n cause: thrownValue\n }), \"__NEXT_ERROR_CODE\", {\n value: \"E1112\",\n enumerable: false,\n configurable: true\n }), componentStack, null // TODO(instant-validation-build): conflicting use of cause\n );\n dynamicValidation.validationPreventingErrors.push(error);\n }\n}\nfunction trackDynamicHoleInRuntimeShell(workStore, componentStack, dynamicValidation, clientDynamic) {\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return;\n } else if (hasMetadataRegex.test(componentStack)) {\n const message = `Route \"${workStore.route}\": Uncached data or \\`connection()\\` was accessed inside \\`generateMetadata\\`. Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`;\n const error = addErrorContext(Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1080\",\n enumerable: false,\n configurable: true\n }), componentStack, null);\n dynamicValidation.dynamicMetadata = error;\n return;\n } else if (hasViewportRegex.test(componentStack)) {\n // TODO(instant-validation): If the page only has holes caused by runtime data,\n // we won't find out if there's a suspense-above-body and error for dynamic viewport\n // even if there is in fact a suspense-above-body\n const message = `Route \"${workStore.route}\": Uncached data or \\`connection()\\` was accessed inside \\`generateViewport\\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`;\n const error = addErrorContext(Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1077\",\n enumerable: false,\n configurable: true\n }), componentStack, null);\n dynamicValidation.dynamicErrors.push(error);\n return;\n } else if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true;\n dynamicValidation.hasSuspenseAboveBody = true;\n return;\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true;\n return;\n } else if (clientDynamic.syncDynamicErrorWithStack) {\n // This task was the task that called the sync error.\n dynamicValidation.dynamicErrors.push(clientDynamic.syncDynamicErrorWithStack);\n return;\n }\n const message = `Route \"${workStore.route}\": Uncached data or \\`connection()\\` was accessed outside of \\`<Suspense>\\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`;\n const error = addErrorContext(Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1084\",\n enumerable: false,\n configurable: true\n }), componentStack, null);\n dynamicValidation.dynamicErrors.push(error);\n return;\n}\nfunction trackDynamicHoleInStaticShell(workStore, componentStack, dynamicValidation, clientDynamic) {\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return;\n } else if (hasMetadataRegex.test(componentStack)) {\n const message = `Route \"${workStore.route}\": Runtime data such as \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` was accessed inside \\`generateMetadata\\` or you have file-based metadata such as icons that depend on dynamic params segments. Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`;\n const error = addErrorContext(Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1085\",\n enumerable: false,\n configurable: true\n }), componentStack, null);\n dynamicValidation.dynamicMetadata = error;\n return;\n } else if (hasViewportRegex.test(componentStack)) {\n const message = `Route \"${workStore.route}\": Runtime data such as \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` was accessed inside \\`generateViewport\\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`;\n const error = addErrorContext(Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1081\",\n enumerable: false,\n configurable: true\n }), componentStack, null);\n dynamicValidation.dynamicErrors.push(error);\n return;\n } else if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true;\n dynamicValidation.hasSuspenseAboveBody = true;\n return;\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true;\n return;\n } else if (clientDynamic.syncDynamicErrorWithStack) {\n // This task was the task that called the sync error.\n dynamicValidation.dynamicErrors.push(clientDynamic.syncDynamicErrorWithStack);\n return;\n } else {\n const message = `Route \"${workStore.route}\": Runtime data such as \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` was accessed outside of \\`<Suspense>\\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`;\n const error = addErrorContext(Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1083\",\n enumerable: false,\n configurable: true\n }), componentStack, null);\n dynamicValidation.dynamicErrors.push(error);\n return;\n }\n}\n/**\n * In dev mode, we prefer using the owner stack, otherwise the provided\n * component stack is used.\n *\n * Accepts an already-created Error so the SWC error-code plugin can see the\n * `new Error(...)` call at each call site and auto-assign error codes.\n */ function addErrorContext(error, componentStack, createInstantStack) {\n const ownerStack = true && _react.default.captureOwnerStack ? _react.default.captureOwnerStack() : null;\n if (createInstantStack !== null) {\n error.cause = createInstantStack();\n }\n // TODO go back to owner stack here if available. This is temporarily using componentStack to get the right\n //\n error.stack = error.name + ': ' + error.message + (ownerStack || componentStack);\n return error;\n}\nvar PreludeState = /*#__PURE__*/ function(PreludeState) {\n PreludeState[PreludeState[\"Full\"] = 0] = \"Full\";\n PreludeState[PreludeState[\"Empty\"] = 1] = \"Empty\";\n PreludeState[PreludeState[\"Errored\"] = 2] = \"Errored\";\n return PreludeState;\n}({});\nfunction logDisallowedDynamicError(workStore, error) {\n console.error(error);\n if (false) {} else if (false) {}\n}\nfunction throwIfDisallowedDynamic(workStore, prelude, dynamicValidation, serverDynamic) {\n if (serverDynamic.syncDynamicErrorWithStack) {\n logDisallowedDynamicError(workStore, serverDynamic.syncDynamicErrorWithStack);\n throw new _staticgenerationbailout.StaticGenBailoutError();\n }\n if (prelude !== 0) {\n if (dynamicValidation.hasSuspenseAboveBody) {\n // This route has opted into allowing fully dynamic rendering\n // by including a Suspense boundary above the body. In this case\n // a lack of a shell is not considered disallowed so we simply return\n return;\n }\n // We didn't have any sync bailouts but there may be user code which\n // blocked the root. We would have captured these during the prerender\n // and can log them here and then terminate the build/validating render\n const dynamicErrors = dynamicValidation.dynamicErrors;\n if (dynamicErrors.length > 0) {\n for(let i = 0; i < dynamicErrors.length; i++){\n logDisallowedDynamicError(workStore, dynamicErrors[i]);\n }\n throw new _staticgenerationbailout.StaticGenBailoutError();\n }\n // If we got this far then the only other thing that could be blocking\n // the root is dynamic Viewport. If this is dynamic then\n // you need to opt into that by adding a Suspense boundary above the body\n // to indicate your are ok with fully dynamic rendering.\n if (dynamicValidation.hasDynamicViewport) {\n console.error(`Route \"${workStore.route}\" has a \\`generateViewport\\` that depends on Request data (\\`cookies()\\`, etc...) or uncached external data (\\`fetch(...)\\`, etc...) without explicitly allowing fully dynamic rendering. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`);\n throw new _staticgenerationbailout.StaticGenBailoutError();\n }\n if (prelude === 1) {\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n // We still adhere to the constraint that you must produce a shell but invite the\n // user to report this as a bug in Next.js.\n console.error(`Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`);\n throw new _staticgenerationbailout.StaticGenBailoutError();\n }\n } else {\n if (dynamicValidation.hasAllowedDynamic === false && dynamicValidation.hasDynamicMetadata) {\n console.error(`Route \"${workStore.route}\" has a \\`generateMetadata\\` that depends on Request data (\\`cookies()\\`, etc...) or uncached external data (\\`fetch(...)\\`, etc...) when the rest of the route does not. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`);\n throw new _staticgenerationbailout.StaticGenBailoutError();\n }\n }\n}\nfunction getStaticShellDisallowedDynamicReasons(workStore, prelude, dynamicValidation, configAllowsBlocking) {\n if (configAllowsBlocking || dynamicValidation.hasSuspenseAboveBody) {\n // This route has opted into allowing fully dynamic rendering\n // by including a Suspense boundary above the body. In this case\n // a lack of a shell is not considered disallowed so we simply return\n return [];\n }\n if (prelude !== 0) {\n // We didn't have any sync bailouts but there may be user code which\n // blocked the root. We would have captured these during the prerender\n // and can log them here and then terminate the build/validating render\n const dynamicErrors = dynamicValidation.dynamicErrors;\n if (dynamicErrors.length > 0) {\n return dynamicErrors;\n }\n if (prelude === 1) {\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n // We still adhere to the constraint that you must produce a shell but invite the\n // user to report this as a bug in Next.js.\n return [\n Object.defineProperty(new _invarianterror.InvariantError(`Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason.`), \"__NEXT_ERROR_CODE\", {\n value: \"E936\",\n enumerable: false,\n configurable: true\n })\n ];\n }\n } else {\n // We have a prelude but we might still have dynamic metadata without any other dynamic access\n if (dynamicValidation.hasAllowedDynamic === false && dynamicValidation.dynamicErrors.length === 0 && dynamicValidation.dynamicMetadata) {\n return [\n dynamicValidation.dynamicMetadata\n ];\n }\n }\n // We had a non-empty prelude and there are no dynamic holes\n return [];\n}\nfunction getNavigationDisallowedDynamicReasons(workStore, prelude, dynamicValidation, validationSampleTracking, boundaryState) {\n // If we have errors related to missing samples, those should take precedence over everything else.\n if (validationSampleTracking) {\n const { missingSampleErrors } = validationSampleTracking;\n if (missingSampleErrors.length > 0) {\n return missingSampleErrors;\n }\n }\n const { validationPreventingErrors } = dynamicValidation;\n if (validationPreventingErrors.length > 0) {\n return validationPreventingErrors;\n }\n if (boundaryState.renderedIds.size < boundaryState.expectedIds.size) {\n const { thrownErrorsOutsideBoundary, createInstantStack } = dynamicValidation;\n if (thrownErrorsOutsideBoundary.length === 0) {\n const message = `Route \"${workStore.route}\": Could not validate \\`unstable_instant\\` because the target segment was prevented from rendering for an unknown reason.`;\n const error = createInstantStack !== null ? createInstantStack() : new Error();\n error.name = 'Error';\n error.message = message;\n return [\n error\n ];\n } else if (thrownErrorsOutsideBoundary.length === 1) {\n const message = `Route \"${workStore.route}\": Could not validate \\`unstable_instant\\` because the target segment was prevented from rendering, likely due to the following error.`;\n const error = createInstantStack !== null ? createInstantStack() : new Error();\n error.name = 'Error';\n error.message = message;\n return [\n error,\n thrownErrorsOutsideBoundary[0]\n ];\n } else {\n const message = `Route \"${workStore.route}\": Could not validate \\`unstable_instant\\` because the target segment was prevented from rendering, likely due to one of the following errors.`;\n const error = createInstantStack !== null ? createInstantStack() : new Error();\n error.name = 'Error';\n error.message = message;\n return [\n error,\n ...thrownErrorsOutsideBoundary\n ];\n }\n }\n // NOTE: We don't care about Suspense above body here,\n // we're only concerned with the validation boundary\n if (prelude !== 0) {\n const dynamicErrors = dynamicValidation.dynamicErrors;\n if (dynamicErrors.length > 0) {\n return dynamicErrors;\n }\n if (prelude === 1) {\n // If a client component suspended prevented us from rendering a shell\n // but didn't block validation, we don't require a prelude.\n if (dynamicValidation.hasAllowedClientDynamicAboveBoundary) {\n return [];\n }\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n return [\n Object.defineProperty(new _invarianterror.InvariantError(`Route \"${workStore.route}\" failed to render during instant validation and Next.js was unable to determine a reason.`), \"__NEXT_ERROR_CODE\", {\n value: \"E1055\",\n enumerable: false,\n configurable: true\n })\n ];\n }\n } else {\n const dynamicErrors = dynamicValidation.dynamicErrors;\n if (dynamicErrors.length > 0) {\n return dynamicErrors;\n }\n if (dynamicValidation.hasAllowedDynamic === false && dynamicValidation.dynamicMetadata) {\n return [\n dynamicValidation.dynamicMetadata\n ];\n }\n }\n // We had a non-empty prelude and there are no dynamic holes\n return [];\n} //# sourceMappingURL=dynamic-rendering.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2R5bmFtaWMtcmVuZGVyaW5nLmpzIiwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW9CQzs7Ozs7Ozs7Ozs7O0lBc3dCV0EsZUFBZTtlQUFmQTs7SUEzYklDLFFBQVE7ZUFBUkE7O0lBb3hCSkMsWUFBWTtlQUFaQTs7SUF6ekJJQywyQ0FBMkM7ZUFBM0NBOztJQTdCQUMsa0NBQWtDO2VBQWxDQTs7SUE0SkFDLG1CQUFtQjtlQUFuQkE7O0lBd0lBQyxxQkFBcUI7ZUFBckJBOztJQWxJQUMsb0JBQW9CO2VBQXBCQTs7SUFoV0FDLDBCQUEwQjtlQUExQkE7O0lBVUFDLDRCQUE0QjtlQUE1QkE7O0lBOFpBQyw2QkFBNkI7ZUFBN0JBOztJQXVTQUMsNEJBQTRCO2VBQTVCQTs7SUFsVEFDLGdDQUFnQztlQUFoQ0E7O0lBbERBQyx3QkFBd0I7ZUFBeEJBOztJQXRWQUMscUJBQXFCO2VBQXJCQTs7SUF1b0NBQyxxQ0FBcUM7ZUFBckNBOztJQTlDQUMsc0NBQXNDO2VBQXRDQTs7SUF6MEJBQyxpQkFBaUI7ZUFBakJBOztJQXdDQUMsMkJBQTJCO2VBQTNCQTs7SUE2c0JBQyx5QkFBeUI7ZUFBekJBOztJQXgvQkFDLHlCQUF5QjtlQUF6QkE7O0lBdU9BQyxvQkFBb0I7ZUFBcEJBOztJQWt5QkFDLHdCQUF3QjtlQUF4QkE7O0lBNTdCQUMsZ0NBQWdDO2VBQWhDQTs7SUEyaEJBQyx5QkFBeUI7ZUFBekJBOztJQWxnQkFDLCtCQUErQjtlQUEvQkE7O0lBdWxCQUMsNEJBQTRCO2VBQTVCQTs7SUFxTEFDLDhCQUE4QjtlQUE5QkE7O0lBb0RBQyw2QkFBNkI7ZUFBN0JBOztJQXhHQUMsNEJBQTRCO2VBQTVCQTs7SUEvV0FDLHFCQUFxQjtlQUFyQkE7O0lBOERBQyxzQkFBc0I7ZUFBdEJBOzs7MEVBL21CRTtnREFFaUI7cURBQ0c7MERBSS9CO3NEQUMwQjttREFDbUI7K0NBTTdD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Q2xDLHNFQUFzRTtZQUN0RSwyREFBMkQ7WUFDM0QsSUFBSXhCLGtCQUFrQkksb0NBQW9DLEVBQUU7Z0JBQzFELE9BQU8sRUFBRTtZQUNYO1lBQ0EsNkVBQTZFO1lBQzdFLE9BQU87Z0JBQ0wscUJBRUMsQ0FGRCxJQUFJcEIsZ0JBQUFBLGNBQWMsQ0FDaEIsQ0FBQyxPQUFPLEVBQUVSLFVBQVV0RCxLQUFLLENBQUMsMEZBQTBGLENBQUMsR0FEdkg7MkJBQUE7Z0NBQUE7a0NBQUE7Z0JBRUE7YUFDRDtRQUNIO0lBQ0YsT0FBTztRQUNMLE1BQU1WLGdCQUFnQndGLGtCQUFrQnhGLGFBQWE7UUFDckQsSUFBSUEsY0FBYzZDLE1BQU0sR0FBRyxHQUFHO1lBQzVCLE9BQU83QztRQUNUO1FBRUEsSUFDRXdGLGtCQUFrQnpGLGlCQUFpQixLQUFLLFNBQ3hDeUYsa0JBQWtCM0YsZUFBZSxFQUNqQztZQUNBLE9BQU87Z0JBQUMyRixrQkFBa0IzRixlQUFlO2FBQUM7UUFDNUM7SUFDRjtJQUNBLDREQUE0RDtJQUM1RCxPQUFPLEVBQUU7QUFDWCIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9zZXJ2ZXIvYXBwLXJlbmRlci9keW5hbWljLXJlbmRlcmluZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBmdW5jdGlvbnMgcHJvdmlkZWQgYnkgdGhpcyBtb2R1bGUgYXJlIHVzZWQgdG8gY29tbXVuaWNhdGUgY2VydGFpbiBwcm9wZXJ0aWVzXG4gKiBhYm91dCB0aGUgY3VycmVudGx5IHJ1bm5pbmcgY29kZSBzbyB0aGF0IE5leHQuanMgY2FuIG1ha2UgZGVjaXNpb25zIG9uIGhvdyB0byBoYW5kbGVcbiAqIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBpbiBkaWZmZXJlbnQgcmVuZGVyaW5nIG1vZGVzIHN1Y2ggYXMgcHJlLXJlbmRlcmluZywgcmVzdW1pbmcsIGFuZCBTU1IuXG4gKlxuICogVG9kYXkgTmV4dC5qcyB0cmVhdHMgYWxsIGNvZGUgYXMgcG90ZW50aWFsbHkgc3RhdGljLiBDZXJ0YWluIEFQSXMgbWF5IG9ubHkgbWFrZSBzZW5zZSB3aGVuIGR5bmFtaWNhbGx5IHJlbmRlcmluZy5cbiAqIFRyYWRpdGlvbmFsbHkgdGhpcyBtZWFudCBkZW9wdGluZyB0aGUgZW50aXJlIHJlbmRlciB0byBkeW5hbWljIGhvd2V2ZXIgd2l0aCBQUFIgd2UgY2FuIG5vdyBkZW9wdCBwYXJ0c1xuICogb2YgYSBSZWFjdCB0cmVlIGFzIGR5bmFtaWMgd2hpbGUgc3RpbGwga2VlcGluZyBvdGhlciBwYXJ0cyBzdGF0aWMuIFRoZXJlIGFyZSByZWFsbHkgdHdvIGRpZmZlcmVudCBraW5kcyBvZlxuICogRHluYW1pYyBpbmRpY2F0aW9ucy5cbiAqXG4gKiBUaGUgZmlyc3QgaXMgc2ltcGx5IGFuIGludGVudGlvbiB0byBiZSBkeW5hbWljLiB1bnN0YWJsZV9ub1N0b3JlIGlzIGFuIGV4YW1wbGUgb2YgdGhpcyB3aGVyZVxuICogdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgY29kZSBzaW1wbHkgZGVjbGFyZXMgdGhhdCB0aGUgY3VycmVudCBzY29wZSBpcyBkeW5hbWljIGJ1dCBpZiB5b3UgdXNlIGl0XG4gKiBpbnNpZGUgdW5zdGFibGVfY2FjaGUgaXQgY2FuIHN0aWxsIGJlIGNhY2hlZC4gVGhpcyB0eXBlIG9mIGluZGljYXRpb24gY2FuIGJlIHJlbW92ZWQgaWYgd2UgZXZlclxuICogbWFrZSB0aGUgZGVmYXVsdCBkeW5hbWljIHRvIGJlZ2luIHdpdGggYmVjYXVzZSB0aGUgb25seSB3YXkgeW91IHdvdWxkIGV2ZXIgYmUgc3RhdGljIGlzIGluc2lkZVxuICogYSBjYWNoZSBzY29wZSB3aGljaCB0aGlzIGluZGljYXRpb24gZG9lcyBub3QgYWZmZWN0LlxuICpcbiAqIFRoZSBzZWNvbmQgaXMgYW4gaW5kaWNhdGlvbiB0aGF0IGEgZHluYW1pYyBkYXRhIHNvdXJjZSB3YXMgcmVhZC4gVGhpcyBpcyBhIHN0cm9uZ2VyIGZvcm0gb2YgZHluYW1pY1xuICogYmVjYXVzZSBpdCBtZWFucyB0aGF0IGl0IGlzIGluYXBwcm9wcmlhdGUgdG8gY2FjaGUgdGhpcyBhdCBhbGwuIHVzaW5nIGEgZHluYW1pYyBkYXRhIHNvdXJjZSBpbnNpZGVcbiAqIHVuc3RhYmxlX2NhY2hlIHNob3VsZCBlcnJvci4gSWYgeW91IHdhbnQgdG8gdXNlIHNvbWUgZHluYW1pYyBkYXRhIGluc2lkZSB1bnN0YWJsZV9jYWNoZSB5b3Ugc2hvdWxkXG4gKiByZWFkIHRoYXQgZGF0YSBvdXRzaWRlIHRoZSBjYWNoZSBhbmQgcGFzcyBpdCBpbiBhcyBhbiBhcmd1bWVudCB0byB0aGUgY2FjaGVkIGZ1bmN0aW9uLlxuICovXG5cbmltcG9ydCB0eXBlIHsgV29ya1N0b3JlIH0gZnJvbSAnLi4vYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnXG5pbXBvcnQgdHlwZSB7XG4gIFdvcmtVbml0U3RvcmUsXG4gIFByZXJlbmRlclN0b3JlTGVnYWN5LFxuICBQcmVyZW5kZXJTdG9yZU1vZGVybixcbiAgVmFsaWRhdGlvblN0b3JlQ2xpZW50LFxufSBmcm9tICcuLi9hcHAtcmVuZGVyL3dvcmstdW5pdC1hc3luYy1zdG9yYWdlLmV4dGVybmFsJ1xuXG4vLyBPbmNlIHBvc3Rwb25lIGlzIGluIHN0YWJsZSB3ZSBzaG91bGQgc3dpdGNoIHRvIGltcG9ydGluZyB0aGUgcG9zdHBvbmUgZXhwb3J0IGRpcmVjdGx5XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IER5bmFtaWNTZXJ2ZXJFcnJvciB9IGZyb20gJy4uLy4uL2NsaWVudC9jb21wb25lbnRzL2hvb2tzLXNlcnZlci1jb250ZXh0J1xuaW1wb3J0IHsgU3RhdGljR2VuQmFpbG91dEVycm9yIH0gZnJvbSAnLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvc3RhdGljLWdlbmVyYXRpb24tYmFpbG91dCdcbmltcG9ydCB7XG4gIHRocm93Rm9yTWlzc2luZ1JlcXVlc3RTdG9yZSxcbiAgd29ya1VuaXRBc3luY1N0b3JhZ2UsXG59IGZyb20gJy4vd29yay11bml0LWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnXG5pbXBvcnQgeyB3b3JrQXN5bmNTdG9yYWdlIH0gZnJvbSAnLi4vYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnXG5pbXBvcnQgeyBtYWtlSGFuZ2luZ1Byb21pc2UsIGdldFJ1bnRpbWVTdGFnZSB9IGZyb20gJy4uL2R5bmFtaWMtcmVuZGVyaW5nLXV0aWxzJ1xuaW1wb3J0IHtcbiAgTUVUQURBVEFfQk9VTkRBUllfTkFNRSxcbiAgVklFV1BPUlRfQk9VTkRBUllfTkFNRSxcbiAgT1VUTEVUX0JPVU5EQVJZX05BTUUsXG4gIFJPT1RfTEFZT1VUX0JPVU5EQVJZX05BTUUsXG59IGZyb20gJy4uLy4uL2xpYi9mcmFtZXdvcmsvYm91bmRhcnktY29uc3RhbnRzJ1xuaW1wb3J0IHsgc2NoZWR1bGVPbk5leHRUaWNrIH0gZnJvbSAnLi4vLi4vbGliL3NjaGVkdWxlcidcbmltcG9ydCB7IEJhaWxvdXRUb0NTUkVycm9yIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9sYXp5LWR5bmFtaWMvYmFpbG91dC10by1jc3InXG5pbXBvcnQgeyBJbnZhcmlhbnRFcnJvciB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvaW52YXJpYW50LWVycm9yJ1xuaW1wb3J0IHsgSU5TVEFOVF9WQUxJREFUSU9OX0JPVU5EQVJZX05BTUUgfSBmcm9tICcuL2luc3RhbnQtdmFsaWRhdGlvbi9ib3VuZGFyeS1jb25zdGFudHMnXG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25Cb3VuZGFyeVRyYWNraW5nIH0gZnJvbSAnLi9pbnN0YW50LXZhbGlkYXRpb24vYm91bmRhcnktdHJhY2tpbmcnXG5pbXBvcnQgdHlwZSB7IEluc3RhbnRWYWxpZGF0aW9uU2FtcGxlVHJhY2tpbmcgfSBmcm9tICcuL2luc3RhbnQtdmFsaWRhdGlvbi9pbnN0YW50LXNhbXBsZXMnXG5cbmNvbnN0IGhhc1Bvc3Rwb25lID0gdHlwZW9mIFJlYWN0LnVuc3RhYmxlX3Bvc3Rwb25lID09PSAnZnVuY3Rpb24nXG5cbmV4cG9ydCB0eXBlIER5bmFtaWNBY2Nlc3MgPSB7XG4gIC8qKlxuICAgKiBJZiBkZWJ1Z2dpbmcsIHRoaXMgd2lsbCBjb250YWluIHRoZSBzdGFjayB0cmFjZSBvZiB3aGVyZSB0aGUgZHluYW1pYyBhY2Nlc3NcbiAgICogb2NjdXJyZWQuIFRoaXMgaXMgdXNlZCB0byBwcm92aWRlIG1vcmUgaW5mb3JtYXRpb24gdG8gdGhlIHVzZXIgYWJvdXQgd2h5XG4gICAqIHRoZWlyIHBhZ2UgaXMgYmVpbmcgcmVuZGVyZWQgZHluYW1pY2FsbHkuXG4gICAqL1xuICBzdGFjaz86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBUaGUgZXhwcmVzc2lvbiB0aGF0IHdhcyBhY2Nlc3NlZCBkeW5hbWljYWxseS5cbiAgICovXG4gIGV4cHJlc3Npb246IHN0cmluZ1xufVxuXG4vLyBTdG9yZXMgZHluYW1pYyByZWFzb25zIHVzZWQgZHVyaW5nIGFuIFJTQyByZW5kZXIuXG5leHBvcnQgdHlwZSBEeW5hbWljVHJhY2tpbmdTdGF0ZSA9IHtcbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgc3RhY2sgaW5mb3JtYXRpb24gd2lsbCBhbHNvIGJlIHRyYWNrZWQgZHVyaW5nIGR5bmFtaWMgYWNjZXNzLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNEZWJ1Z0R5bmFtaWNBY2Nlc3NlczogYm9vbGVhbiB8IHVuZGVmaW5lZFxuXG4gIC8qKlxuICAgKiBUaGUgZHluYW1pYyBhY2Nlc3NlcyB0aGF0IG9jY3VycmVkIGR1cmluZyB0aGUgcmVuZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgZHluYW1pY0FjY2Vzc2VzOiBBcnJheTxEeW5hbWljQWNjZXNzPlxuXG4gIHN5bmNEeW5hbWljRXJyb3JXaXRoU3RhY2s6IG51bGwgfCBFcnJvclxufVxuXG4vLyBTdG9yZXMgZHluYW1pYyByZWFzb25zIHVzZWQgZHVyaW5nIGFuIFNTUiByZW5kZXIuXG5leHBvcnQgdHlwZSBEeW5hbWljVmFsaWRhdGlvblN0YXRlID0ge1xuICBoYXNTdXNwZW5zZUFib3ZlQm9keTogYm9vbGVhblxuICBoYXNEeW5hbWljTWV0YWRhdGE6IGJvb2xlYW5cbiAgZHluYW1pY01ldGFkYXRhOiBudWxsIHwgRXJyb3JcbiAgaGFzRHluYW1pY1ZpZXdwb3J0OiBib29sZWFuXG4gIGhhc0FsbG93ZWREeW5hbWljOiBib29sZWFuXG4gIGR5bmFtaWNFcnJvcnM6IEFycmF5PEVycm9yPlxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRHluYW1pY1RyYWNraW5nU3RhdGUoXG4gIGlzRGVidWdEeW5hbWljQWNjZXNzZXM6IGJvb2xlYW4gfCB1bmRlZmluZWRcbik6IER5bmFtaWNUcmFja2luZ1N0YXRlIHtcbiAgcmV0dXJuIHtcbiAgICBpc0RlYnVnRHluYW1pY0FjY2Vzc2VzLFxuICAgIGR5bmFtaWNBY2Nlc3NlczogW10sXG4gICAgc3luY0R5bmFtaWNFcnJvcldpdGhTdGFjazogbnVsbCxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRHluYW1pY1ZhbGlkYXRpb25TdGF0ZSgpOiBEeW5hbWljVmFsaWRhdGlvblN0YXRlIHtcbiAgcmV0dXJuIHtcbiAgICBoYXNTdXNwZW5zZUFib3ZlQm9keTogZmFsc2UsXG4gICAgaGFzRHluYW1pY01ldGFkYXRhOiBmYWxzZSxcbiAgICBkeW5hbWljTWV0YWRhdGE6IG51bGwsXG4gICAgaGFzRHluYW1pY1ZpZXdwb3J0OiBmYWxzZSxcbiAgICBoYXNBbGxvd2VkRHluYW1pYzogZmFsc2UsXG4gICAgZHluYW1pY0Vycm9yczogW10sXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpcnN0RHluYW1pY1JlYXNvbihcbiAgdHJhY2tpbmdTdGF0ZTogRHluYW1pY1RyYWNraW5nU3RhdGVcbik6IHVuZGVmaW5lZCB8IHN0cmluZyB7XG4gIHJldHVybiB0cmFja2luZ1N0YXRlLmR5bmFtaWNBY2Nlc3Nlc1swXT8uZXhwcmVzc2lvblxufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gY29tbXVuaWNhdGVzIHRoYXQgdGhlIGN1cnJlbnQgc2NvcGUgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgZHluYW1pYy5cbiAqXG4gKiBJbiBtb3N0IGNhc2VzIHRoaXMgZnVuY3Rpb24gaXMgYSBuby1vcCBidXQgaWYgY2FsbGVkIGR1cmluZ1xuICogYSBQUFIgcHJlcmVuZGVyIGl0IHdpbGwgcG9zdHBvbmUgdGhlIGN1cnJlbnQgc3ViLXRyZWUgYW5kIGNhbGxpbmdcbiAqIGl0IGR1cmluZyBhIG5vcm1hbCBwcmVyZW5kZXIgd2lsbCBjYXVzZSB0aGUgZW50aXJlIHByZXJlbmRlciB0byBhYm9ydFxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFya0N1cnJlbnRTY29wZUFzRHluYW1pYyhcbiAgc3RvcmU6IFdvcmtTdG9yZSxcbiAgd29ya1VuaXRTdG9yZTogdW5kZWZpbmVkIHwgRXhjbHVkZTxXb3JrVW5pdFN0b3JlLCBQcmVyZW5kZXJTdG9yZU1vZGVybj4sXG4gIGV4cHJlc3Npb246IHN0cmluZ1xuKTogdm9pZCB7XG4gIGlmICh3b3JrVW5pdFN0b3JlKSB7XG4gICAgc3dpdGNoICh3b3JrVW5pdFN0b3JlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2NhY2hlJzpcbiAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgLy8gSW5zaWRlIGNhY2hlIHNjb3BlcywgbWFya2luZyBhIHNjb3BlIGFzIGR5bmFtaWMgaGFzIG5vIGVmZmVjdCxcbiAgICAgICAgLy8gYmVjYXVzZSB0aGUgb3V0ZXIgY2FjaGUgc2NvcGUgY3JlYXRlcyBhIGNhY2hlIGJvdW5kYXJ5LiBUaGlzIGlzXG4gICAgICAgIC8vIHN1YnRseSBkaWZmZXJlbnQgZnJvbSByZWFkaW5nIGEgZHluYW1pYyBkYXRhIHNvdXJjZSwgd2hpY2ggaXNcbiAgICAgICAgLy8gZm9yYmlkZGVuIGluc2lkZSBhIGNhY2hlIHNjb3BlLlxuICAgICAgICByZXR1cm5cbiAgICAgIGNhc2UgJ3ByaXZhdGUtY2FjaGUnOlxuICAgICAgICAvLyBBIHByaXZhdGUgY2FjaGUgc2NvcGUgaXMgYWxyZWFkeSBkeW5hbWljIGJ5IGRlZmluaXRpb24uXG4gICAgICAgIHJldHVyblxuICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICBjYXNlICdwcmVyZW5kZXItcHByJzpcbiAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgY2FzZSAnZ2VuZXJhdGUtc3RhdGljLXBhcmFtcyc6XG4gICAgICAgIGJyZWFrXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB3b3JrVW5pdFN0b3JlIHNhdGlzZmllcyBuZXZlclxuICAgIH1cbiAgfVxuXG4gIC8vIElmIHdlJ3JlIGZvcmNpbmcgZHluYW1pYyByZW5kZXJpbmcgb3Igd2UncmUgZm9yY2luZyBzdGF0aWMgcmVuZGVyaW5nLCB3ZVxuICAvLyBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nIGhlcmUgYmVjYXVzZSB0aGUgZW50aXJlIHBhZ2UgaXMgYWxyZWFkeSBkeW5hbWljXG4gIC8vIG9yIGl0J3Mgc3RhdGljIGFuZCBpdCBzaG91bGQgbm90IHRocm93IG9yIHBvc3Rwb25lIGhlcmUuXG4gIGlmIChzdG9yZS5mb3JjZUR5bmFtaWMgfHwgc3RvcmUuZm9yY2VTdGF0aWMpIHJldHVyblxuXG4gIGlmIChzdG9yZS5keW5hbWljU2hvdWxkRXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgU3RhdGljR2VuQmFpbG91dEVycm9yKFxuICAgICAgYFJvdXRlICR7c3RvcmUucm91dGV9IHdpdGggXFxgZHluYW1pYyA9IFwiZXJyb3JcIlxcYCBjb3VsZG4ndCBiZSByZW5kZXJlZCBzdGF0aWNhbGx5IGJlY2F1c2UgaXQgdXNlZCBcXGAke2V4cHJlc3Npb259XFxgLiBTZWUgbW9yZSBpbmZvIGhlcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JlbmRlcmluZy9zdGF0aWMtYW5kLWR5bmFtaWMjZHluYW1pYy1yZW5kZXJpbmdgXG4gICAgKVxuICB9XG5cbiAgaWYgKHdvcmtVbml0U3RvcmUpIHtcbiAgICBzd2l0Y2ggKHdvcmtVbml0U3RvcmUudHlwZSkge1xuICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgIHJldHVybiBwb3N0cG9uZVdpdGhUcmFja2luZyhcbiAgICAgICAgICBzdG9yZS5yb3V0ZSxcbiAgICAgICAgICBleHByZXNzaW9uLFxuICAgICAgICAgIHdvcmtVbml0U3RvcmUuZHluYW1pY1RyYWNraW5nXG4gICAgICAgIClcbiAgICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgICAgICB3b3JrVW5pdFN0b3JlLnJldmFsaWRhdGUgPSAwXG5cbiAgICAgICAgLy8gV2UgYXJlbid0IHByZXJlbmRlcmluZywgYnV0IHdlIGFyZSBnZW5lcmF0aW5nIGEgc3RhdGljIHBhZ2UuIFdlIG5lZWRcbiAgICAgICAgLy8gdG8gYmFpbCBvdXQgb2Ygc3RhdGljIGdlbmVyYXRpb24uXG4gICAgICAgIGNvbnN0IGVyciA9IG5ldyBEeW5hbWljU2VydmVyRXJyb3IoXG4gICAgICAgICAgYFJvdXRlICR7c3RvcmUucm91dGV9IGNvdWxkbid0IGJlIHJlbmRlcmVkIHN0YXRpY2FsbHkgYmVjYXVzZSBpdCB1c2VkICR7ZXhwcmVzc2lvbn0uIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZHluYW1pYy1zZXJ2ZXItZXJyb3JgXG4gICAgICAgIClcbiAgICAgICAgc3RvcmUuZHluYW1pY1VzYWdlRGVzY3JpcHRpb24gPSBleHByZXNzaW9uXG4gICAgICAgIHN0b3JlLmR5bmFtaWNVc2FnZVN0YWNrID0gZXJyLnN0YWNrXG5cbiAgICAgICAgdGhyb3cgZXJyXG4gICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB3b3JrVW5pdFN0b3JlLnVzZWREeW5hbWljID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdnZW5lcmF0ZS1zdGF0aWMtcGFyYW1zJzpcbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHdvcmtVbml0U3RvcmUgc2F0aXNmaWVzIG5ldmVyXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBtZWFudCB0byBiZSB1c2VkIHdoZW4gcHJlcmVuZGVyaW5nIHdpdGhvdXQgY2FjaGVDb21wb25lbnRzIG9yIFBQUi5cbiAqIFdoZW4gY2FsbGVkIGR1cmluZyBhIGJ1aWxkIGl0IHdpbGwgY2F1c2UgTmV4dC5qcyB0byBjb25zaWRlciB0aGUgcm91dGUgYXMgZHluYW1pYy5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRocm93VG9JbnRlcnJ1cHRTdGF0aWNHZW5lcmF0aW9uKFxuICBleHByZXNzaW9uOiBzdHJpbmcsXG4gIHN0b3JlOiBXb3JrU3RvcmUsXG4gIHByZXJlbmRlclN0b3JlOiBQcmVyZW5kZXJTdG9yZUxlZ2FjeVxuKTogbmV2ZXIge1xuICAvLyBXZSBhcmVuJ3QgcHJlcmVuZGVyaW5nIGJ1dCB3ZSBhcmUgZ2VuZXJhdGluZyBhIHN0YXRpYyBwYWdlLiBXZSBuZWVkIHRvIGJhaWwgb3V0IG9mIHN0YXRpYyBnZW5lcmF0aW9uXG4gIGNvbnN0IGVyciA9IG5ldyBEeW5hbWljU2VydmVyRXJyb3IoXG4gICAgYFJvdXRlICR7c3RvcmUucm91dGV9IGNvdWxkbid0IGJlIHJlbmRlcmVkIHN0YXRpY2FsbHkgYmVjYXVzZSBpdCB1c2VkIFxcYCR7ZXhwcmVzc2lvbn1cXGAuIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZHluYW1pYy1zZXJ2ZXItZXJyb3JgXG4gIClcblxuICBwcmVyZW5kZXJTdG9yZS5yZXZhbGlkYXRlID0gMFxuXG4gIHN0b3JlLmR5bmFtaWNVc2FnZURlc2NyaXB0aW9uID0gZXhwcmVzc2lvblxuICBzdG9yZS5keW5hbWljVXNhZ2VTdGFjayA9IGVyci5zdGFja1xuXG4gIHRocm93IGVyclxufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgdG8gdHJhY2sgd2hldGhlciBzb21ldGhpbmcgZHluYW1pYyBoYXBwZW5lZCBldmVuIHdoZW5cbiAqIHdlIGFyZSBpbiBhIGR5bmFtaWMgcmVuZGVyLiBUaGlzIGlzIHVzZWZ1bCBmb3IgRGV2IHdoZXJlIGFsbCByZW5kZXJzIGFyZSBkeW5hbWljIGJ1dFxuICogd2Ugc3RpbGwgdHJhY2sgd2hldGhlciBkeW5hbWljIEFQSXMgd2VyZSBhY2Nlc3NlZCBmb3IgaGVscGZ1bCBtZXNzYWdpbmdcbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYWNrRHluYW1pY0RhdGFJbkR5bmFtaWNSZW5kZXIod29ya1VuaXRTdG9yZTogV29ya1VuaXRTdG9yZSkge1xuICBzd2l0Y2ggKHdvcmtVbml0U3RvcmUudHlwZSkge1xuICAgIGNhc2UgJ2NhY2hlJzpcbiAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAvLyBJbnNpZGUgY2FjaGUgc2NvcGVzLCBtYXJraW5nIGEgc2NvcGUgYXMgZHluYW1pYyBoYXMgbm8gZWZmZWN0LFxuICAgICAgLy8gYmVjYXVzZSB0aGUgb3V0ZXIgY2FjaGUgc2NvcGUgY3JlYXRlcyBhIGNhY2hlIGJvdW5kYXJ5LiBUaGlzIGlzXG4gICAgICAvLyBzdWJ0bHkgZGlmZmVyZW50IGZyb20gcmVhZGluZyBhIGR5bmFtaWMgZGF0YSBzb3VyY2UsIHdoaWNoIGlzXG4gICAgICAvLyBmb3JiaWRkZW4gaW5zaWRlIGEgY2FjaGUgc2NvcGUuXG4gICAgICByZXR1cm5cbiAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgIC8vIEEgcHJpdmF0ZSBjYWNoZSBzY29wZSBpcyBhbHJlYWR5IGR5bmFtaWMgYnkgZGVmaW5pdGlvbi5cbiAgICAgIHJldHVyblxuICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgIGNhc2UgJ3ZhbGlkYXRpb24tY2xpZW50JzpcbiAgICBjYXNlICdnZW5lcmF0ZS1zdGF0aWMtcGFyYW1zJzpcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncmVxdWVzdCc6XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB3b3JrVW5pdFN0b3JlLnVzZWREeW5hbWljID0gdHJ1ZVxuICAgICAgfVxuICAgICAgYnJlYWtcbiAgICBkZWZhdWx0OlxuICAgICAgd29ya1VuaXRTdG9yZSBzYXRpc2ZpZXMgbmV2ZXJcbiAgfVxufVxuXG5mdW5jdGlvbiBhYm9ydE9uU3luY2hyb25vdXNEeW5hbWljRGF0YUFjY2VzcyhcbiAgcm91dGU6IHN0cmluZyxcbiAgZXhwcmVzc2lvbjogc3RyaW5nLFxuICBwcmVyZW5kZXJTdG9yZTogUHJlcmVuZGVyU3RvcmVNb2Rlcm5cbik6IHZvaWQge1xuICBjb25zdCByZWFzb24gPSBgUm91dGUgJHtyb3V0ZX0gbmVlZHMgdG8gYmFpbCBvdXQgb2YgcHJlcmVuZGVyaW5nIGF0IHRoaXMgcG9pbnQgYmVjYXVzZSBpdCB1c2VkICR7ZXhwcmVzc2lvbn0uYFxuXG4gIGNvbnN0IGVycm9yID0gY3JlYXRlUHJlcmVuZGVySW50ZXJydXB0ZWRFcnJvcihyZWFzb24pXG5cbiAgcHJlcmVuZGVyU3RvcmUuY29udHJvbGxlci5hYm9ydChlcnJvcilcblxuICBjb25zdCBkeW5hbWljVHJhY2tpbmcgPSBwcmVyZW5kZXJTdG9yZS5keW5hbWljVHJhY2tpbmdcbiAgaWYgKGR5bmFtaWNUcmFja2luZykge1xuICAgIGR5bmFtaWNUcmFja2luZy5keW5hbWljQWNjZXNzZXMucHVzaCh7XG4gICAgICAvLyBXaGVuIHdlIGFyZW4ndCBkZWJ1Z2dpbmcsIHdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGFub3RoZXIgZXJyb3IgZm9yIHRoZVxuICAgICAgLy8gc3RhY2sgdHJhY2UuXG4gICAgICBzdGFjazogZHluYW1pY1RyYWNraW5nLmlzRGVidWdEeW5hbWljQWNjZXNzZXNcbiAgICAgICAgPyBuZXcgRXJyb3IoKS5zdGFja1xuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGV4cHJlc3Npb24sXG4gICAgfSlcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWJvcnRPblN5bmNocm9ub3VzUGxhdGZvcm1JT0FjY2VzcyhcbiAgcm91dGU6IHN0cmluZyxcbiAgZXhwcmVzc2lvbjogc3RyaW5nLFxuICBlcnJvcldpdGhTdGFjazogRXJyb3IsXG4gIHByZXJlbmRlclN0b3JlOiBQcmVyZW5kZXJTdG9yZU1vZGVyblxuKTogdm9pZCB7XG4gIGNvbnN0IGR5bmFtaWNUcmFja2luZyA9IHByZXJlbmRlclN0b3JlLmR5bmFtaWNUcmFja2luZ1xuICBhYm9ydE9uU3luY2hyb25vdXNEeW5hbWljRGF0YUFjY2Vzcyhyb3V0ZSwgZXhwcmVzc2lvbiwgcHJlcmVuZGVyU3RvcmUpXG4gIC8vIEl0IGlzIGltcG9ydGFudCB0aGF0IHdlIHNldCB0aGlzIHRyYWNraW5nIHZhbHVlIGFmdGVyIGFib3J0aW5nLiBBYm9ydHMgYXJlIGV4ZWN1dGVkXG4gIC8vIHN5bmNocm9ub3VzbHkgZXhjZXB0IGZvciB0aGUgY2FzZSB3aGVyZSB5b3UgYWJvcnQgZHVyaW5nIHJlbmRlciBpdHNlbGYuIEJ5IHNldHRpbmcgdGhpc1xuICAvLyB2YWx1ZSBsYXRlIHdlIGNhbiB1c2UgaXQgdG8gZGV0ZXJtaW5lIGlmIGFueSBvZiB0aGUgYWJvcnRlZCB0YXNrcyBhcmUgdGhlIHRhc2sgdGhhdFxuICAvLyBjYWxsZWQgdGhlIHN5bmMgSU8gZXhwcmVzc2lvbiBpbiB0aGUgZmlyc3QgcGxhY2UuXG4gIGlmIChkeW5hbWljVHJhY2tpbmcpIHtcbiAgICBpZiAoZHluYW1pY1RyYWNraW5nLnN5bmNEeW5hbWljRXJyb3JXaXRoU3RhY2sgPT09IG51bGwpIHtcbiAgICAgIGR5bmFtaWNUcmFja2luZy5zeW5jRHluYW1pY0Vycm9yV2l0aFN0YWNrID0gZXJyb3JXaXRoU3RhY2tcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiB1c2UgdGhpcyBmdW5jdGlvbiB3aGVuIHByZXJlbmRlcmluZyB3aXRoIGNhY2hlQ29tcG9uZW50cy4gSWYgd2UgYXJlIGRvaW5nIGFcbiAqIHByb3NwZWN0aXZlIHByZXJlbmRlciB3ZSBkb24ndCBhY3R1YWxseSBhYm9ydCBiZWNhdXNlIHdlIHdhbnQgdG8gZGlzY292ZXJcbiAqIGFsbCBjYWNoZXMgZm9yIHRoZSBzaGVsbC4gSWYgdGhpcyBpcyB0aGUgYWN0dWFsIHByZXJlbmRlciB3ZSBkbyBhYm9ydC5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGFjY2VwdHMgYSBwcmVyZW5kZXJTdG9yZSBidXQgdGhlIGNhbGxlciBzaG91bGQgZW5zdXJlIHdlJ3JlXG4gKiBhY3R1YWxseSBydW5uaW5nIGluIGNhY2hlQ29tcG9uZW50cyBtb2RlLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWJvcnRBbmRUaHJvd09uU3luY2hyb25vdXNSZXF1ZXN0RGF0YUFjY2VzcyhcbiAgcm91dGU6IHN0cmluZyxcbiAgZXhwcmVzc2lvbjogc3RyaW5nLFxuICBlcnJvcldpdGhTdGFjazogRXJyb3IsXG4gIHByZXJlbmRlclN0b3JlOiBQcmVyZW5kZXJTdG9yZU1vZGVyblxuKTogbmV2ZXIge1xuICBjb25zdCBwcmVyZW5kZXJTaWduYWwgPSBwcmVyZW5kZXJTdG9yZS5jb250cm9sbGVyLnNpZ25hbFxuICBpZiAocHJlcmVuZGVyU2lnbmFsLmFib3J0ZWQgPT09IGZhbHNlKSB7XG4gICAgLy8gVE9ETyBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gbW92ZSB0aGlzIGFib3J0ZWQgY2hlY2sgaW50byB0aGUgY2FsbHNpdGUgc28gd2UgY2FuIGF2b2lkIG1ha2luZ1xuICAgIC8vIHRoZSBlcnJvciBvYmplY3Qgd2hlbiBpdCBpc24ndCByZWxldmFudCB0byB0aGUgYWJvcnRpbmcgb2YgdGhlIHByZXJlbmRlciBob3dldmVyXG4gICAgLy8gc2luY2Ugd2UgbmVlZCB0aGUgdGhyb3cgc2VtYW50aWNzIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB3ZSBhYm9ydCBpdCBpcyBlYXNpZXIgdG8gbGFuZFxuICAgIC8vIHRoaXMgd2F5LiBTZWUgaG93IHRoaXMgd2FzIGhhbmRsZWQgd2l0aCBgYWJvcnRPblN5bmNocm9ub3VzUGxhdGZvcm1JT0FjY2Vzc2AgZm9yIGEgY2xvc2VyXG4gICAgLy8gdG8gaWRlYWwgaW1wbGVtZW50YXRpb25cbiAgICBhYm9ydE9uU3luY2hyb25vdXNEeW5hbWljRGF0YUFjY2Vzcyhyb3V0ZSwgZXhwcmVzc2lvbiwgcHJlcmVuZGVyU3RvcmUpXG4gICAgLy8gSXQgaXMgaW1wb3J0YW50IHRoYXQgd2Ugc2V0IHRoaXMgdHJhY2tpbmcgdmFsdWUgYWZ0ZXIgYWJvcnRpbmcuIEFib3J0cyBhcmUgZXhlY3V0ZWRcbiAgICAvLyBzeW5jaHJvbm91c2x5IGV4Y2VwdCBmb3IgdGhlIGNhc2Ugd2hlcmUgeW91IGFib3J0IGR1cmluZyByZW5kZXIgaXRzZWxmLiBCeSBzZXR0aW5nIHRoaXNcbiAgICAvLyB2YWx1ZSBsYXRlIHdlIGNhbiB1c2UgaXQgdG8gZGV0ZXJtaW5lIGlmIGFueSBvZiB0aGUgYWJvcnRlZCB0YXNrcyBhcmUgdGhlIHRhc2sgdGhhdFxuICAgIC8vIGNhbGxlZCB0aGUgc3luYyBJTyBleHByZXNzaW9uIGluIHRoZSBmaXJzdCBwbGFjZS5cbiAgICBjb25zdCBkeW5hbWljVHJhY2tpbmcgPSBwcmVyZW5kZXJTdG9yZS5keW5hbWljVHJhY2tpbmdcbiAgICBpZiAoZHluYW1pY1RyYWNraW5nKSB7XG4gICAgICBpZiAoZHluYW1pY1RyYWNraW5nLnN5bmNEeW5hbWljRXJyb3JXaXRoU3RhY2sgPT09IG51bGwpIHtcbiAgICAgICAgZHluYW1pY1RyYWNraW5nLnN5bmNEeW5hbWljRXJyb3JXaXRoU3RhY2sgPSBlcnJvcldpdGhTdGFja1xuICAgICAgfVxuICAgIH1cbiAgfVxuICB0aHJvdyBjcmVhdGVQcmVyZW5kZXJJbnRlcnJ1cHRlZEVycm9yKFxuICAgIGBSb3V0ZSAke3JvdXRlfSBuZWVkcyB0byBiYWlsIG91dCBvZiBwcmVyZW5kZXJpbmcgYXQgdGhpcyBwb2ludCBiZWNhdXNlIGl0IHVzZWQgJHtleHByZXNzaW9ufS5gXG4gIClcbn1cblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCB3aWxsIGNhbGwgYFJlYWN0LnBvc3Rwb25lYCB0aGF0IHRocm93cyB0aGUgcG9zdHBvbmVkIGVycm9yLlxuICovXG50eXBlIFBvc3Rwb25lUHJvcHMgPSB7XG4gIHJlYXNvbjogc3RyaW5nXG4gIHJvdXRlOiBzdHJpbmdcbn1cbmV4cG9ydCBmdW5jdGlvbiBQb3N0cG9uZSh7IHJlYXNvbiwgcm91dGUgfTogUG9zdHBvbmVQcm9wcyk6IG5ldmVyIHtcbiAgY29uc3QgcHJlcmVuZGVyU3RvcmUgPSB3b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpXG4gIGNvbnN0IGR5bmFtaWNUcmFja2luZyA9XG4gICAgcHJlcmVuZGVyU3RvcmUgJiYgcHJlcmVuZGVyU3RvcmUudHlwZSA9PT0gJ3ByZXJlbmRlci1wcHInXG4gICAgICA/IHByZXJlbmRlclN0b3JlLmR5bmFtaWNUcmFja2luZ1xuICAgICAgOiBudWxsXG4gIHBvc3Rwb25lV2l0aFRyYWNraW5nKHJvdXRlLCByZWFzb24sIGR5bmFtaWNUcmFja2luZylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc3Rwb25lV2l0aFRyYWNraW5nKFxuICByb3V0ZTogc3RyaW5nLFxuICBleHByZXNzaW9uOiBzdHJpbmcsXG4gIGR5bmFtaWNUcmFja2luZzogbnVsbCB8IER5bmFtaWNUcmFja2luZ1N0YXRlXG4pOiBuZXZlciB7XG4gIGFzc2VydFBvc3Rwb25lKClcbiAgaWYgKGR5bmFtaWNUcmFja2luZykge1xuICAgIGR5bmFtaWNUcmFja2luZy5keW5hbWljQWNjZXNzZXMucHVzaCh7XG4gICAgICAvLyBXaGVuIHdlIGFyZW4ndCBkZWJ1Z2dpbmcsIHdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGFub3RoZXIgZXJyb3IgZm9yIHRoZVxuICAgICAgLy8gc3RhY2sgdHJhY2UuXG4gICAgICBzdGFjazogZHluYW1pY1RyYWNraW5nLmlzRGVidWdEeW5hbWljQWNjZXNzZXNcbiAgICAgICAgPyBuZXcgRXJyb3IoKS5zdGFja1xuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGV4cHJlc3Npb24sXG4gICAgfSlcbiAgfVxuXG4gIFJlYWN0LnVuc3RhYmxlX3Bvc3Rwb25lKGNyZWF0ZVBvc3Rwb25lUmVhc29uKHJvdXRlLCBleHByZXNzaW9uKSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlUG9zdHBvbmVSZWFzb24ocm91dGU6IHN0cmluZywgZXhwcmVzc2lvbjogc3RyaW5nKSB7XG4gIHJldHVybiAoXG4gICAgYFJvdXRlICR7cm91dGV9IG5lZWRzIHRvIGJhaWwgb3V0IG9mIHByZXJlbmRlcmluZyBhdCB0aGlzIHBvaW50IGJlY2F1c2UgaXQgdXNlZCAke2V4cHJlc3Npb259LiBgICtcbiAgICBgUmVhY3QgdGhyb3dzIHRoaXMgc3BlY2lhbCBvYmplY3QgdG8gaW5kaWNhdGUgd2hlcmUuIEl0IHNob3VsZCBub3QgYmUgY2F1Z2h0IGJ5IGAgK1xuICAgIGB5b3VyIG93biB0cnkvY2F0Y2guIExlYXJuIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL3Bwci1jYXVnaHQtZXJyb3JgXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRHluYW1pY1Bvc3Rwb25lKGVycjogdW5rbm93bikge1xuICBpZiAoXG4gICAgdHlwZW9mIGVyciA9PT0gJ29iamVjdCcgJiZcbiAgICBlcnIgIT09IG51bGwgJiZcbiAgICB0eXBlb2YgKGVyciBhcyBhbnkpLm1lc3NhZ2UgPT09ICdzdHJpbmcnXG4gICkge1xuICAgIHJldHVybiBpc0R5bmFtaWNQb3N0cG9uZVJlYXNvbigoZXJyIGFzIGFueSkubWVzc2FnZSlcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gaXNEeW5hbWljUG9zdHBvbmVSZWFzb24ocmVhc29uOiBzdHJpbmcpIHtcbiAgcmV0dXJuIChcbiAgICByZWFzb24uaW5jbHVkZXMoXG4gICAgICAnbmVlZHMgdG8gYmFpbCBvdXQgb2YgcHJlcmVuZGVyaW5nIGF0IHRoaXMgcG9pbnQgYmVjYXVzZSBpdCB1c2VkJ1xuICAgICkgJiZcbiAgICByZWFzb24uaW5jbHVkZXMoXG4gICAgICAnTGVhcm4gbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvcHByLWNhdWdodC1lcnJvcidcbiAgICApXG4gIClcbn1cblxuaWYgKGlzRHluYW1pY1Bvc3Rwb25lUmVhc29uKGNyZWF0ZVBvc3Rwb25lUmVhc29uKCclJSUnLCAnXl5eJykpID09PSBmYWxzZSkge1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgJ0ludmFyaWFudDogaXNEeW5hbWljUG9zdHBvbmUgbWlzaWRlbnRpZmllZCBhIHBvc3Rwb25lIHJlYXNvbi4gVGhpcyBpcyBhIGJ1ZyBpbiBOZXh0LmpzJ1xuICApXG59XG5cbmNvbnN0IE5FWFRfUFJFUkVOREVSX0lOVEVSUlVQVEVEID0gJ05FWFRfUFJFUkVOREVSX0lOVEVSUlVQVEVEJ1xuXG5mdW5jdGlvbiBjcmVhdGVQcmVyZW5kZXJJbnRlcnJ1cHRlZEVycm9yKG1lc3NhZ2U6IHN0cmluZyk6IEVycm9yIHtcbiAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSlcbiAgOyhlcnJvciBhcyBhbnkpLmRpZ2VzdCA9IE5FWFRfUFJFUkVOREVSX0lOVEVSUlVQVEVEXG4gIHJldHVybiBlcnJvclxufVxuXG50eXBlIERpZ2VzdEVycm9yID0gRXJyb3IgJiB7XG4gIGRpZ2VzdDogc3RyaW5nXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ByZXJlbmRlckludGVycnVwdGVkRXJyb3IoXG4gIGVycm9yOiB1bmtub3duXG4pOiBlcnJvciBpcyBEaWdlc3RFcnJvciB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIGVycm9yID09PSAnb2JqZWN0JyAmJlxuICAgIGVycm9yICE9PSBudWxsICYmXG4gICAgKGVycm9yIGFzIGFueSkuZGlnZXN0ID09PSBORVhUX1BSRVJFTkRFUl9JTlRFUlJVUFRFRCAmJlxuICAgICduYW1lJyBpbiBlcnJvciAmJlxuICAgICdtZXNzYWdlJyBpbiBlcnJvciAmJlxuICAgIGVycm9yIGluc3RhbmNlb2YgRXJyb3JcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWNjZXNzZWREeW5hbWljRGF0YShcbiAgZHluYW1pY0FjY2Vzc2VzOiBBcnJheTxEeW5hbWljQWNjZXNzPlxuKTogYm9vbGVhbiB7XG4gIHJldHVybiBkeW5hbWljQWNjZXNzZXMubGVuZ3RoID4gMFxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3VtZUR5bmFtaWNBY2Nlc3MoXG4gIHNlcnZlckR5bmFtaWM6IER5bmFtaWNUcmFja2luZ1N0YXRlLFxuICBjbGllbnREeW5hbWljOiBEeW5hbWljVHJhY2tpbmdTdGF0ZVxuKTogRHluYW1pY1RyYWNraW5nU3RhdGVbJ2R5bmFtaWNBY2Nlc3NlcyddIHtcbiAgLy8gV2UgbXV0YXRlIGJlY2F1c2Ugd2Ugb25seSBjYWxsIHRoaXMgb25jZSB3ZSBhcmUgbm8gbG9uZ2VyIHdyaXRpbmdcbiAgLy8gdG8gdGhlIGR5bmFtaWNUcmFja2luZ1N0YXRlIGFuZCBpdCdzIG1vcmUgZWZmaWNpZW50IHRoYW4gY3JlYXRpbmcgYSBuZXdcbiAgLy8gYXJyYXkuXG4gIHNlcnZlckR5bmFtaWMuZHluYW1pY0FjY2Vzc2VzLnB1c2goLi4uY2xpZW50RHluYW1pYy5keW5hbWljQWNjZXNzZXMpXG4gIHJldHVybiBzZXJ2ZXJEeW5hbWljLmR5bmFtaWNBY2Nlc3Nlc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RHluYW1pY0FQSUFjY2Vzc2VzKFxuICBkeW5hbWljQWNjZXNzZXM6IEFycmF5PER5bmFtaWNBY2Nlc3M+XG4pOiBzdHJpbmdbXSB7XG4gIHJldHVybiBkeW5hbWljQWNjZXNzZXNcbiAgICAuZmlsdGVyKFxuICAgICAgKGFjY2Vzcyk6IGFjY2VzcyBpcyBSZXF1aXJlZDxEeW5hbWljQWNjZXNzPiA9PlxuICAgICAgICB0eXBlb2YgYWNjZXNzLnN0YWNrID09PSAnc3RyaW5nJyAmJiBhY2Nlc3Muc3RhY2subGVuZ3RoID4gMFxuICAgIClcbiAgICAubWFwKCh7IGV4cHJlc3Npb24sIHN0YWNrIH0pID0+IHtcbiAgICAgIHN0YWNrID0gc3RhY2tcbiAgICAgICAgLnNwbGl0KCdcXG4nKVxuICAgICAgICAvLyBSZW1vdmUgdGhlIFwiRXJyb3I6IFwiIHByZWZpeCBmcm9tIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBzdGFjayB0cmFjZSBhc1xuICAgICAgICAvLyB3ZWxsIGFzIHRoZSBmaXJzdCA0IGxpbmVzIG9mIHRoZSBzdGFjayB0cmFjZSB3aGljaCBpcyB0aGUgZGlzdGFuY2VcbiAgICAgICAgLy8gZnJvbSB0aGUgdXNlciBjb2RlIGFuZCB0aGUgYG5ldyBFcnJvcigpLnN0YWNrYCBjYWxsLlxuICAgICAgICAuc2xpY2UoNClcbiAgICAgICAgLmZpbHRlcigobGluZSkgPT4ge1xuICAgICAgICAgIC8vIEV4Y2x1ZGUgTmV4dC5qcyBpbnRlcm5hbHMgZnJvbSB0aGUgc3RhY2sgdHJhY2UuXG4gICAgICAgICAgaWYgKGxpbmUuaW5jbHVkZXMoJ25vZGVfbW9kdWxlcy9uZXh0LycpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBFeGNsdWRlIGFub255bW91cyBmdW5jdGlvbnMgZnJvbSB0aGUgc3RhY2sgdHJhY2UuXG4gICAgICAgICAgaWYgKGxpbmUuaW5jbHVkZXMoJyAoPGFub255bW91cz4pJykpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEV4Y2x1ZGUgTm9kZS5qcyBpbnRlcm5hbHMgZnJvbSB0aGUgc3RhY2sgdHJhY2UuXG4gICAgICAgICAgaWYgKGxpbmUuaW5jbHVkZXMoJyAobm9kZTonKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oJ1xcbicpXG4gICAgICByZXR1cm4gYER5bmFtaWMgQVBJIFVzYWdlIERlYnVnIC0gJHtleHByZXNzaW9ufTpcXG4ke3N0YWNrfWBcbiAgICB9KVxufVxuXG5mdW5jdGlvbiBhc3NlcnRQb3N0cG9uZSgpIHtcbiAgaWYgKCFoYXNQb3N0cG9uZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBJbnZhcmlhbnQ6IFJlYWN0LnVuc3RhYmxlX3Bvc3Rwb25lIGlzIG5vdCBkZWZpbmVkLiBUaGlzIHN1Z2dlc3RzIHRoZSB3cm9uZyB2ZXJzaW9uIG9mIFJlYWN0IHdhcyBsb2FkZWQuIFRoaXMgaXMgYSBidWcgaW4gTmV4dC5qc2BcbiAgICApXG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIGlzIGEgYml0IG9mIGEgaGFjayB0byBhbGxvdyB1cyB0byBhYm9ydCBhIHJlbmRlciB1c2luZyBhIFBvc3Rwb25lIGluc3RhbmNlIGluc3RlYWQgb2YgYW4gRXJyb3Igd2hpY2ggY2hhbmdlcyBSZWFjdCdzXG4gKiBhYm9ydCBzZW1hbnRpY3Mgc2xpZ2h0bHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZW5kZXJJbkJyb3dzZXJBYm9ydFNpZ25hbCgpOiBBYm9ydFNpZ25hbCB7XG4gIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgY29udHJvbGxlci5hYm9ydChuZXcgQmFpbG91dFRvQ1NSRXJyb3IoJ1JlbmRlciBpbiBCcm93c2VyJykpXG4gIHJldHVybiBjb250cm9sbGVyLnNpZ25hbFxufVxuXG4vKipcbiAqIEluIGEgcHJlcmVuZGVyLCB3ZSBtYXkgZW5kIHVwIHdpdGggaGFuZ2luZyBQcm9taXNlcyBhcyBpbnB1dHMgZHVlIHRoZW1cbiAqIHN0YWxsaW5nIG9uIGNvbm5lY3Rpb24oKSBvciBiZWNhdXNlIHRoZXkncmUgbG9hZGluZyBkeW5hbWljIGRhdGEuIEluIHRoYXRcbiAqIGNhc2Ugd2UgbmVlZCB0byBhYm9ydCB0aGUgZW5jb2Rpbmcgb2YgYXJndW1lbnRzIHNpbmNlIHRoZXknbGwgbmV2ZXIgY29tcGxldGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVIYW5naW5nSW5wdXRBYm9ydFNpZ25hbChcbiAgd29ya1VuaXRTdG9yZTogV29ya1VuaXRTdG9yZVxuKTogQWJvcnRTaWduYWwgfCB1bmRlZmluZWQge1xuICBzd2l0Y2ggKHdvcmtVbml0U3RvcmUudHlwZSkge1xuICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuXG4gICAgICBpZiAod29ya1VuaXRTdG9yZS5jYWNoZVNpZ25hbCkge1xuICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgY2FjaGVTaWduYWwgaXQgbWVhbnMgd2UncmUgaW4gYSBwcm9zcGVjdGl2ZSByZW5kZXIuIElmXG4gICAgICAgIC8vIHRoZSBpbnB1dCB3ZSdyZSB3YWl0aW5nIG9uIGlzIGNvbWluZyBmcm9tIGFub3RoZXIgY2FjaGUsIHdlIGRvIHdhbnRcbiAgICAgICAgLy8gdG8gd2FpdCBmb3IgaXQgc28gdGhhdCB3ZSBjYW4gcmVzb2x2ZSB0aGlzIGNhY2hlIGVudHJ5IHRvby5cbiAgICAgICAgd29ya1VuaXRTdG9yZS5jYWNoZVNpZ25hbC5pbnB1dFJlYWR5KCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgY29udHJvbGxlci5hYm9ydCgpXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPdGhlcndpc2Ugd2UncmUgaW4gdGhlIGZpbmFsIHJlbmRlciBhbmQgd2Ugc2hvdWxkIGFscmVhZHkgaGF2ZSBhbGxcbiAgICAgICAgLy8gb3VyIGNhY2hlcyBmaWxsZWQuXG4gICAgICAgIC8vIElmIHRoZSBwcmVyZW5kZXIgdXNlcyBzdGFnZXMsIHdlIGhhdmUgd2FpdCB1bnRpbCB0aGUgcnVudGltZSBzdGFnZSxcbiAgICAgICAgLy8gYXQgd2hpY2ggcG9pbnQgYWxsIHJ1bnRpbWUgaW5wdXRzIHdpbGwgYmUgcmVzb2x2ZWQuXG4gICAgICAgIC8vIChvdGhlcndpc2UsIGEgcnVudGltZSBwcmVyZW5kZXIgbWlnaHQgY29uc2lkZXIgYGNvb2tpZXMoKWAgaGFuZ2luZ1xuICAgICAgICAvLyAgZXZlbiB0aG91Z2ggdGhleSdkIHJlc29sdmUgaW4gdGhlIG5leHQgdGFzay4pXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFdlIG1pZ2h0IHN0aWxsIGJlIHdhaXRpbmcgb24gc29tZSBtaWNyb3Rhc2tzIHNvIHdlXG4gICAgICAgIC8vIHdhaXQgb25lIHRpY2sgYmVmb3JlIGdpdmluZyB1cC4gV2hlbiB3ZSBnaXZlIHVwLCB3ZSBzdGlsbCB3YW50IHRvXG4gICAgICAgIC8vIHJlbmRlciB0aGUgY29udGVudCBvZiB0aGlzIGNhY2hlIGFzIGRlZXBseSBhcyB3ZSBjYW4gc28gdGhhdCB3ZSBjYW5cbiAgICAgICAgLy8gc3VzcGVuZCBhcyBkZWVwbHkgYXMgcG9zc2libGUgaW4gdGhlIHRyZWUgb3Igbm90IGF0IGFsbCBpZiB3ZSBkb24ndFxuICAgICAgICAvLyBlbmQgdXAgd2FpdGluZyBmb3IgdGhlIGlucHV0LlxuICAgICAgICBpZiAoXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4IC0tIFdlIGFyZSBkaXNjcmltaW5hdGluZyBiZXR3ZWVuIHR3byBkaWZmZXJlbnQgcmVmaW5lZCB0eXBlcyBhbmQgZG9uJ3QgbmVlZCBhbiBhZGRpdGlvbiBleGhhdXN0aXZlIHN3aXRjaCBoZXJlXG4gICAgICAgICAgd29ya1VuaXRTdG9yZS50eXBlID09PSAncHJlcmVuZGVyLXJ1bnRpbWUnICYmXG4gICAgICAgICAgd29ya1VuaXRTdG9yZS5zdGFnZWRSZW5kZXJpbmdcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgeyBzdGFnZWRSZW5kZXJpbmcgfSA9IHdvcmtVbml0U3RvcmVcbiAgICAgICAgICBzdGFnZWRSZW5kZXJpbmdcbiAgICAgICAgICAgIC53YWl0Rm9yU3RhZ2UoZ2V0UnVudGltZVN0YWdlKHN0YWdlZFJlbmRlcmluZykpXG4gICAgICAgICAgICAudGhlbigoKSA9PiBzY2hlZHVsZU9uTmV4dFRpY2soKCkgPT4gY29udHJvbGxlci5hYm9ydCgpKSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzY2hlZHVsZU9uTmV4dFRpY2soKCkgPT4gY29udHJvbGxlci5hYm9ydCgpKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250cm9sbGVyLnNpZ25hbFxuICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgIGNhc2UgJ3ZhbGlkYXRpb24tY2xpZW50JzpcbiAgICBjYXNlICdwcmVyZW5kZXItcHByJzpcbiAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICBjYXNlICdjYWNoZSc6XG4gICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgY2FzZSAndW5zdGFibGUtY2FjaGUnOlxuICAgIGNhc2UgJ2dlbmVyYXRlLXN0YXRpYy1wYXJhbXMnOlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGRlZmF1bHQ6XG4gICAgICB3b3JrVW5pdFN0b3JlIHNhdGlzZmllcyBuZXZlclxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbm5vdGF0ZUR5bmFtaWNBY2Nlc3MoXG4gIGV4cHJlc3Npb246IHN0cmluZyxcbiAgcHJlcmVuZGVyU3RvcmU6IFByZXJlbmRlclN0b3JlTW9kZXJuIHwgVmFsaWRhdGlvblN0b3JlQ2xpZW50XG4pIHtcbiAgY29uc3QgZHluYW1pY1RyYWNraW5nID0gcHJlcmVuZGVyU3RvcmUuZHluYW1pY1RyYWNraW5nXG4gIGlmIChkeW5hbWljVHJhY2tpbmcpIHtcbiAgICBkeW5hbWljVHJhY2tpbmcuZHluYW1pY0FjY2Vzc2VzLnB1c2goe1xuICAgICAgc3RhY2s6IGR5bmFtaWNUcmFja2luZy5pc0RlYnVnRHluYW1pY0FjY2Vzc2VzXG4gICAgICAgID8gbmV3IEVycm9yKCkuc3RhY2tcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBleHByZXNzaW9uLFxuICAgIH0pXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUR5bmFtaWNSb3V0ZVBhcmFtcyhleHByZXNzaW9uOiBzdHJpbmcpIHtcbiAgY29uc3Qgd29ya1N0b3JlID0gd29ya0FzeW5jU3RvcmFnZS5nZXRTdG9yZSgpXG4gIGNvbnN0IHdvcmtVbml0U3RvcmUgPSB3b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpXG4gIGlmICh3b3JrU3RvcmUgJiYgd29ya1VuaXRTdG9yZSkge1xuICAgIHN3aXRjaCAod29ya1VuaXRTdG9yZS50eXBlKSB7XG4gICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgIGNhc2UgJ3ByZXJlbmRlcic6IHtcbiAgICAgICAgY29uc3QgZmFsbGJhY2tQYXJhbXMgPSB3b3JrVW5pdFN0b3JlLmZhbGxiYWNrUm91dGVQYXJhbXNcblxuICAgICAgICBpZiAoZmFsbGJhY2tQYXJhbXMgJiYgZmFsbGJhY2tQYXJhbXMuc2l6ZSA+IDApIHtcbiAgICAgICAgICAvLyBXZSBhcmUgaW4gYSBwcmVyZW5kZXIgd2l0aCBjYWNoZUNvbXBvbmVudHMgc2VtYW50aWNzLiBXZSBhcmUgZ29pbmcgdG9cbiAgICAgICAgICAvLyBoYW5nIGhlcmUgYW5kIG5ldmVyIHJlc29sdmUuIFRoaXMgd2lsbCBjYXVzZSB0aGUgY3VycmVudGx5XG4gICAgICAgICAgLy8gcmVuZGVyaW5nIGNvbXBvbmVudCB0byBlZmZlY3RpdmVseSBiZSBhIGR5bmFtaWMgaG9sZS5cbiAgICAgICAgICBSZWFjdC51c2UoXG4gICAgICAgICAgICBtYWtlSGFuZ2luZ1Byb21pc2UoXG4gICAgICAgICAgICAgIHdvcmtVbml0U3RvcmUucmVuZGVyU2lnbmFsLFxuICAgICAgICAgICAgICB3b3JrU3RvcmUucm91dGUsXG4gICAgICAgICAgICAgIGV4cHJlc3Npb25cbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOiB7XG4gICAgICAgIGNvbnN0IGZhbGxiYWNrUGFyYW1zID0gd29ya1VuaXRTdG9yZS5mYWxsYmFja1JvdXRlUGFyYW1zXG4gICAgICAgIGlmIChmYWxsYmFja1BhcmFtcyAmJiBmYWxsYmFja1BhcmFtcy5zaXplID4gMCkge1xuICAgICAgICAgIHJldHVybiBwb3N0cG9uZVdpdGhUcmFja2luZyhcbiAgICAgICAgICAgIHdvcmtTdG9yZS5yb3V0ZSxcbiAgICAgICAgICAgIGV4cHJlc3Npb24sXG4gICAgICAgICAgICB3b3JrVW5pdFN0b3JlLmR5bmFtaWNUcmFja2luZ1xuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAndmFsaWRhdGlvbi1jbGllbnQnOiB7XG4gICAgICAgIC8vIERvbid0IGNoZWNrIGZhbGxiYWNrUm91dGVQYXJhbXMgaGVyZS4gV2UgaGFuZGxlIHBhcmFtcyB0aGF0IHdlcmVuJ3RcbiAgICAgICAgLy8gcHJvdmlkZWQgaW4gdGhlIHNhbXBsZXMgdXNpbmcgYSBwcm94eSB0aGF0IHRocm93cyB3aGVuIGFjY2Vzc2VkLlxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgICAgICB0aHJvdyBuZXcgSW52YXJpYW50RXJyb3IoXG4gICAgICAgICAgYFxcYCR7ZXhwcmVzc2lvbn1cXGAgd2FzIGNhbGxlZCBkdXJpbmcgYSBydW50aW1lIHByZXJlbmRlci4gTmV4dC5qcyBzaG91bGQgYmUgcHJldmVudGluZyAke2V4cHJlc3Npb259IGZyb20gYmVpbmcgaW5jbHVkZWQgaW4gc2VydmVyIGNvbXBvbmVudHMgc3RhdGljYWxseSwgYnV0IGRpZCBub3QgaW4gdGhpcyBjYXNlLmBcbiAgICAgICAgKVxuICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICAgIHRocm93IG5ldyBJbnZhcmlhbnRFcnJvcihcbiAgICAgICAgICBgXFxgJHtleHByZXNzaW9ufVxcYCB3YXMgY2FsbGVkIGluc2lkZSBhIGNhY2hlIHNjb3BlLiBOZXh0LmpzIHNob3VsZCBiZSBwcmV2ZW50aW5nICR7ZXhwcmVzc2lvbn0gZnJvbSBiZWluZyBpbmNsdWRlZCBpbiBzZXJ2ZXIgY29tcG9uZW50cyBzdGF0aWNhbGx5LCBidXQgZGlkIG5vdCBpbiB0aGlzIGNhc2UuYFxuICAgICAgICApXG4gICAgICBjYXNlICdnZW5lcmF0ZS1zdGF0aWMtcGFyYW1zJzpcbiAgICAgICAgdGhyb3cgbmV3IEludmFyaWFudEVycm9yKFxuICAgICAgICAgIGBcXGAke2V4cHJlc3Npb259XFxgIHdhcyBjYWxsZWQgaW4gXFxgZ2VuZXJhdGVTdGF0aWNQYXJhbXNcXGAuIE5leHQuanMgc2hvdWxkIGJlIHByZXZlbnRpbmcgJHtleHByZXNzaW9ufSBmcm9tIGJlaW5nIGluY2x1ZGVkIGluIHNlcnZlciBjb21wb25lbnQgZmlsZXMgc3RhdGljYWxseSwgYnV0IGRpZCBub3QgaW4gdGhpcyBjYXNlLmBcbiAgICAgICAgKVxuICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHdvcmtVbml0U3RvcmUgc2F0aXNmaWVzIG5ldmVyXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VEeW5hbWljU2VhcmNoUGFyYW1zKGV4cHJlc3Npb246IHN0cmluZykge1xuICBjb25zdCB3b3JrU3RvcmUgPSB3b3JrQXN5bmNTdG9yYWdlLmdldFN0b3JlKClcbiAgY29uc3Qgd29ya1VuaXRTdG9yZSA9IHdvcmtVbml0QXN5bmNTdG9yYWdlLmdldFN0b3JlKClcblxuICBpZiAoIXdvcmtTdG9yZSkge1xuICAgIC8vIFdlIGFzc3VtZSBwYWdlcyByb3V0ZXIgY29udGV4dCBhbmQganVzdCByZXR1cm5cbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmICghd29ya1VuaXRTdG9yZSkge1xuICAgIHRocm93Rm9yTWlzc2luZ1JlcXVlc3RTdG9yZShleHByZXNzaW9uKVxuICB9XG5cbiAgc3dpdGNoICh3b3JrVW5pdFN0b3JlLnR5cGUpIHtcbiAgICBjYXNlICd2YWxpZGF0aW9uLWNsaWVudCc6XG4gICAgICAvLyBEdXJpbmcgaW5zdGFudCB2YWxpZGF0aW9uIHdlIHRyeSB0byBiZWhhdmUgYXMgY2xvc2UgdG8gY2xpZW50IGFzIHBvc3NpYmxlLFxuICAgICAgLy8gc28gdGhpcyBzaG91bGRuJ3QgaGFuZyBkdXJpbmcgU1NSLlxuICAgICAgcmV0dXJuXG4gICAgY2FzZSAncHJlcmVuZGVyLWNsaWVudCc6IHtcbiAgICAgIFJlYWN0LnVzZShcbiAgICAgICAgbWFrZUhhbmdpbmdQcm9taXNlKFxuICAgICAgICAgIHdvcmtVbml0U3RvcmUucmVuZGVyU2lnbmFsLFxuICAgICAgICAgIHdvcmtTdG9yZS5yb3V0ZSxcbiAgICAgICAgICBleHByZXNzaW9uXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOiB7XG4gICAgICBpZiAod29ya1N0b3JlLmZvcmNlU3RhdGljKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEJhaWxvdXRUb0NTUkVycm9yKGV4cHJlc3Npb24pXG4gICAgfVxuICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgICAgdGhyb3cgbmV3IEludmFyaWFudEVycm9yKFxuICAgICAgICBgXFxgJHtleHByZXNzaW9ufVxcYCB3YXMgY2FsbGVkIGZyb20gYSBTZXJ2ZXIgQ29tcG9uZW50LiBOZXh0LmpzIHNob3VsZCBiZSBwcmV2ZW50aW5nICR7ZXhwcmVzc2lvbn0gZnJvbSBiZWluZyBpbmNsdWRlZCBpbiBzZXJ2ZXIgY29tcG9uZW50cyBzdGF0aWNhbGx5LCBidXQgZGlkIG5vdCBpbiB0aGlzIGNhc2UuYFxuICAgICAgKVxuICAgIGNhc2UgJ2NhY2hlJzpcbiAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICB0aHJvdyBuZXcgSW52YXJpYW50RXJyb3IoXG4gICAgICAgIGBcXGAke2V4cHJlc3Npb259XFxgIHdhcyBjYWxsZWQgaW5zaWRlIGEgY2FjaGUgc2NvcGUuIE5leHQuanMgc2hvdWxkIGJlIHByZXZlbnRpbmcgJHtleHByZXNzaW9ufSBmcm9tIGJlaW5nIGluY2x1ZGVkIGluIHNlcnZlciBjb21wb25lbnRzIHN0YXRpY2FsbHksIGJ1dCBkaWQgbm90IGluIHRoaXMgY2FzZS5gXG4gICAgICApXG4gICAgY2FzZSAnZ2VuZXJhdGUtc3RhdGljLXBhcmFtcyc6XG4gICAgICB0aHJvdyBuZXcgSW52YXJpYW50RXJyb3IoXG4gICAgICAgIGBcXGAke2V4cHJlc3Npb259XFxgIHdhcyBjYWxsZWQgaW4gXFxgZ2VuZXJhdGVTdGF0aWNQYXJhbXNcXGAuIE5leHQuanMgc2hvdWxkIGJlIHByZXZlbnRpbmcgJHtleHByZXNzaW9ufSBmcm9tIGJlaW5nIGluY2x1ZGVkIGluIHNlcnZlciBjb21wb25lbnQgZmlsZXMgc3RhdGljYWxseSwgYnV0IGRpZCBub3QgaW4gdGhpcyBjYXNlLmBcbiAgICAgIClcbiAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgIHJldHVyblxuICAgIGRlZmF1bHQ6XG4gICAgICB3b3JrVW5pdFN0b3JlIHNhdGlzZmllcyBuZXZlclxuICB9XG59XG5cbmNvbnN0IGhhc1N1c3BlbnNlUmVnZXggPSAvXFxuXFxzK2F0IFN1c3BlbnNlIFxcKDxhbm9ueW1vdXM+XFwpL1xuXG4vLyBDb21tb24gaW1wbGljaXQgYm9keSB0YWdzIHRoYXQgUmVhY3Qgd2lsbCB0cmVhdCBhcyBib2R5IHdoZW4gcGxhY2VkIGRpcmVjdGx5IGluIGh0bWxcbmNvbnN0IGJvZHlBbmRJbXBsaWNpdFRhZ3MgPVxuICAnYm9keXxkaXZ8bWFpbnxzZWN0aW9ufGFydGljbGV8YXNpZGV8aGVhZGVyfGZvb3RlcnxuYXZ8Zm9ybXxwfHNwYW58aDF8aDJ8aDN8aDR8aDV8aDYnXG5cbi8vIERldGVjdHMgd2hlbiBSb290TGF5b3V0Qm91bmRhcnkgKG91ciBmcmFtZXdvcmsgbWFya2VyIGNvbXBvbmVudCkgYXBwZWFyc1xuLy8gYWZ0ZXIgU3VzcGVuc2UgaW4gdGhlIGNvbXBvbmVudCBzdGFjaywgaW5kaWNhdGluZyB0aGUgcm9vdCBsYXlvdXQgaXMgd3JhcHBlZFxuLy8gd2l0aGluIGEgU3VzcGVuc2UgYm91bmRhcnkuIEVuc3VyZXMgbm8gYm9keS9odG1sL2ltcGxpY2l0LWJvZHkgY29tcG9uZW50cyBhcmUgaW4gYmV0d2Vlbi5cbi8vXG4vLyBFeGFtcGxlIG1hdGNoZXM6XG4vLyAgIGF0IFN1c3BlbnNlICg8YW5vbnltb3VzPilcbi8vICAgYXQgX19uZXh0X3Jvb3RfbGF5b3V0X2JvdW5kYXJ5X18gKDxhbm9ueW1vdXM+KVxuLy9cbi8vIE9yIHdpdGggb3RoZXIgY29tcG9uZW50cyBpbiBiZXR3ZWVuIChidXQgbm90IGJvZHkvaHRtbC9pbXBsaWNpdC1ib2R5KTpcbi8vICAgYXQgU3VzcGVuc2UgKDxhbm9ueW1vdXM+KVxuLy8gICBhdCBTb21lQ29tcG9uZW50ICg8YW5vbnltb3VzPilcbi8vICAgYXQgX19uZXh0X3Jvb3RfbGF5b3V0X2JvdW5kYXJ5X18gKDxhbm9ueW1vdXM+KVxuY29uc3QgaGFzU3VzcGVuc2VCZWZvcmVSb290TGF5b3V0V2l0aG91dEJvZHlPckltcGxpY2l0Qm9keVJlZ2V4ID0gbmV3IFJlZ0V4cChcbiAgYFxcXFxuXFxcXHMrYXQgU3VzcGVuc2UgXFxcXCg8YW5vbnltb3VzPlxcXFwpKD86KD8hXFxcXG5cXFxccythdCAoPzoke2JvZHlBbmRJbXBsaWNpdFRhZ3N9KSBcXFxcKDxhbm9ueW1vdXM+XFxcXCkpW1xcXFxzXFxcXFNdKSo/XFxcXG5cXFxccythdCAke1JPT1RfTEFZT1VUX0JPVU5EQVJZX05BTUV9IFxcXFwoW15cXFxcbl0qXFxcXClgXG4pXG5cbmNvbnN0IGhhc01ldGFkYXRhUmVnZXggPSBuZXcgUmVnRXhwKFxuICBgXFxcXG5cXFxccythdCAke01FVEFEQVRBX0JPVU5EQVJZX05BTUV9W1xcXFxuXFxcXHNdYFxuKVxuY29uc3QgaGFzVmlld3BvcnRSZWdleCA9IG5ldyBSZWdFeHAoXG4gIGBcXFxcblxcXFxzK2F0ICR7VklFV1BPUlRfQk9VTkRBUllfTkFNRX1bXFxcXG5cXFxcc11gXG4pXG5jb25zdCBoYXNPdXRsZXRSZWdleCA9IG5ldyBSZWdFeHAoYFxcXFxuXFxcXHMrYXQgJHtPVVRMRVRfQk9VTkRBUllfTkFNRX1bXFxcXG5cXFxcc11gKVxuXG5jb25zdCBoYXNJbnN0YW50VmFsaWRhdGlvbkJvdW5kYXJ5UmVnZXggPSBuZXcgUmVnRXhwKFxuICBgXFxcXG5cXFxccythdCAke0lOU1RBTlRfVkFMSURBVElPTl9CT1VOREFSWV9OQU1FfVtcXFxcblxcXFxzXWBcbilcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYWNrQWxsb3dlZER5bmFtaWNBY2Nlc3MoXG4gIHdvcmtTdG9yZTogV29ya1N0b3JlLFxuICBjb21wb25lbnRTdGFjazogc3RyaW5nLFxuICBkeW5hbWljVmFsaWRhdGlvbjogRHluYW1pY1ZhbGlkYXRpb25TdGF0ZSxcbiAgY2xpZW50RHluYW1pYzogRHluYW1pY1RyYWNraW5nU3RhdGVcbikge1xuICBpZiAoaGFzT3V0bGV0UmVnZXgudGVzdChjb21wb25lbnRTdGFjaykpIHtcbiAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHRyYWNrIHRoYXQgdGhpcyBpcyBkeW5hbWljLiBJdCBpcyBvbmx5IHNvIHdoZW4gc29tZXRoaW5nIGVsc2UgaXMgYWxzbyBkeW5hbWljLlxuICAgIHJldHVyblxuICB9IGVsc2UgaWYgKGhhc01ldGFkYXRhUmVnZXgudGVzdChjb21wb25lbnRTdGFjaykpIHtcbiAgICBkeW5hbWljVmFsaWRhdGlvbi5oYXNEeW5hbWljTWV0YWRhdGEgPSB0cnVlXG4gICAgcmV0dXJuXG4gIH0gZWxzZSBpZiAoaGFzVmlld3BvcnRSZWdleC50ZXN0KGNvbXBvbmVudFN0YWNrKSkge1xuICAgIGR5bmFtaWNWYWxpZGF0aW9uLmhhc0R5bmFtaWNWaWV3cG9ydCA9IHRydWVcbiAgICByZXR1cm5cbiAgfSBlbHNlIGlmIChcbiAgICBoYXNTdXNwZW5zZUJlZm9yZVJvb3RMYXlvdXRXaXRob3V0Qm9keU9ySW1wbGljaXRCb2R5UmVnZXgudGVzdChcbiAgICAgIGNvbXBvbmVudFN0YWNrXG4gICAgKVxuICApIHtcbiAgICAvLyBGb3IgU3VzcGVuc2Ugd2l0aGluIGJvZHksIHRoZSBwcmVsdWRlIHdvdWxkbid0IGJlIGVtcHR5IHNvIGl0IHdvdWxkbid0IHZpb2xhdGUgdGhlIGVtcHR5IHN0YXRpYyBzaGVsbHMgcnVsZS5cbiAgICAvLyBCdXQgaWYgeW91IGhhdmUgU3VzcGVuc2UgYWJvdmUgYm9keSwgdGhlIHByZWx1ZGUgaXMgZW1wdHkgYnV0IHdlIGFsbG93IHRoYXQgYmVjYXVzZSBoYXZpbmcgU3VzcGVuc2VcbiAgICAvLyBpcyBhbiBleHBsaWNpdCBzaWduYWwgZnJvbSB0aGUgdXNlciB0aGF0IHRoZXkgYWNrbm93bGVkZ2UgdGhlIGVtcHR5IHNoZWxsIGFuZCB3YW50IGR5bmFtaWMgcmVuZGVyaW5nLlxuICAgIGR5bmFtaWNWYWxpZGF0aW9uLmhhc0FsbG93ZWREeW5hbWljID0gdHJ1ZVxuICAgIGR5bmFtaWNWYWxpZGF0aW9uLmhhc1N1c3BlbnNlQWJvdmVCb2R5ID0gdHJ1ZVxuICAgIHJldHVyblxuICB9IGVsc2UgaWYgKGhhc1N1c3BlbnNlUmVnZXgudGVzdChjb21wb25lbnRTdGFjaykpIHtcbiAgICAvLyB0aGlzIGVycm9yIGhhZCBhIFN1c3BlbnNlIGJvdW5kYXJ5IGFib3ZlIGl0IHNvIHdlIGRvbid0IG5lZWQgdG8gcmVwb3J0IGl0IGFzIGEgc291cmNlXG4gICAgLy8gb2YgZGlzYWxsb3dlZFxuICAgIGR5bmFtaWNWYWxpZGF0aW9uLmhhc0FsbG93ZWREeW5hbWljID0gdHJ1ZVxuICAgIHJldHVyblxuICB9IGVsc2UgaWYgKGNsaWVudER5bmFtaWMuc3luY0R5bmFtaWNFcnJvcldpdGhTdGFjaykge1xuICAgIC8vIFRoaXMgdGFzayB3YXMgdGhlIHRhc2sgdGhhdCBjYWxsZWQgdGhlIHN5bmMgZXJyb3IuXG4gICAgZHluYW1pY1ZhbGlkYXRpb24uZHluYW1pY0Vycm9ycy5wdXNoKFxuICAgICAgY2xpZW50RHluYW1pYy5zeW5jRHluYW1pY0Vycm9yV2l0aFN0YWNrXG4gICAgKVxuICAgIHJldHVyblxuICB9IGVsc2Uge1xuICAgIGNvbnN0IG1lc3NhZ2UgPVxuICAgICAgYFJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCI6IFVuY2FjaGVkIGRhdGEgd2FzIGFjY2Vzc2VkIG91dHNpZGUgb2YgYCArXG4gICAgICAnPFN1c3BlbnNlPi4gVGhpcyBkZWxheXMgdGhlIGVudGlyZSBwYWdlIGZyb20gcmVuZGVyaW5nLCByZXN1bHRpbmcgaW4gYSAnICtcbiAgICAgICdzbG93IHVzZXIgZXhwZXJpZW5jZS4gTGVhcm4gbW9yZTogJyArXG4gICAgICAnaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvYmxvY2tpbmctcm91dGUnXG4gICAgY29uc3QgZXJyb3IgPSBhZGRFcnJvckNvbnRleHQobmV3IEVycm9yKG1lc3NhZ2UpLCBjb21wb25lbnRTdGFjaywgbnVsbClcbiAgICBkeW5hbWljVmFsaWRhdGlvbi5keW5hbWljRXJyb3JzLnB1c2goZXJyb3IpXG4gICAgcmV0dXJuXG4gIH1cbn1cblxuZXhwb3J0IGVudW0gRHluYW1pY0hvbGVLaW5kIHtcbiAgLyoqIFdlIGtub3cgdGhhdCB0aGlzIGhvbGUgaXMgY2F1c2VkIGJ5IHJ1bnRpbWUgZGF0YS4gKi9cbiAgUnVudGltZSA9IDEsXG4gIC8qKiBXZSBrbm93IHRoYXQgdGhpcyBob2xlIGlzIGNhdXNlZCBieSBkeW5hbWljIGRhdGEuICovXG4gIER5bmFtaWMgPSAyLFxufVxuXG4vKiogU3RvcmVzIGR5bmFtaWMgcmVhc29ucyB1c2VkIGR1cmluZyBhbiBTU1IgcmVuZGVyIGluIGluc3RhbnQgdmFsaWRhdGlvbi4gKi9cbmV4cG9ydCB0eXBlIEluc3RhbnRWYWxpZGF0aW9uU3RhdGUgPSB7XG4gIGhhc0R5bmFtaWNNZXRhZGF0YTogYm9vbGVhblxuICBoYXNBbGxvd2VkQ2xpZW50RHluYW1pY0Fib3ZlQm91bmRhcnk6IGJvb2xlYW5cbiAgZHluYW1pY01ldGFkYXRhOiBudWxsIHwgRXJyb3JcbiAgaGFzRHluYW1pY1ZpZXdwb3J0OiBib29sZWFuXG4gIGhhc0FsbG93ZWREeW5hbWljOiBib29sZWFuXG4gIGR5bmFtaWNFcnJvcnM6IEFycmF5PEVycm9yPlxuICB2YWxpZGF0aW9uUHJldmVudGluZ0Vycm9yczogQXJyYXk8RXJyb3I+XG4gIHRocm93bkVycm9yc091dHNpZGVCb3VuZGFyeTogQXJyYXk8dW5rbm93bj5cbiAgY3JlYXRlSW5zdGFudFN0YWNrOiAoKCkgPT4gRXJyb3IpIHwgbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSW5zdGFudFZhbGlkYXRpb25TdGF0ZShcbiAgY3JlYXRlSW5zdGFudFN0YWNrOiAoKCkgPT4gRXJyb3IpIHwgbnVsbFxuKTogSW5zdGFudFZhbGlkYXRpb25TdGF0ZSB7XG4gIHJldHVybiB7XG4gICAgaGFzRHluYW1pY01ldGFkYXRhOiBmYWxzZSxcbiAgICBoYXNBbGxvd2VkQ2xpZW50RHluYW1pY0Fib3ZlQm91bmRhcnk6IGZhbHNlLFxuICAgIGR5bmFtaWNNZXRhZGF0YTogbnVsbCxcbiAgICBoYXNEeW5hbWljVmlld3BvcnQ6IGZhbHNlLFxuICAgIGhhc0FsbG93ZWREeW5hbWljOiBmYWxzZSxcbiAgICBkeW5hbWljRXJyb3JzOiBbXSxcbiAgICB2YWxpZGF0aW9uUHJldmVudGluZ0Vycm9yczogW10sXG4gICAgdGhyb3duRXJyb3JzT3V0c2lkZUJvdW5kYXJ5OiBbXSxcbiAgICBjcmVhdGVJbnN0YW50U3RhY2ssXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYWNrRHluYW1pY0hvbGVJbk5hdmlnYXRpb24oXG4gIHdvcmtTdG9yZTogV29ya1N0b3JlLFxuICBjb21wb25lbnRTdGFjazogc3RyaW5nLFxuICBkeW5hbWljVmFsaWRhdGlvbjogSW5zdGFudFZhbGlkYXRpb25TdGF0ZSxcbiAgY2xpZW50RHluYW1pYzogRHluYW1pY1RyYWNraW5nU3RhdGUsXG4gIGtpbmQ6IER5bmFtaWNIb2xlS2luZCxcbiAgYm91bmRhcnlTdGF0ZTogVmFsaWRhdGlvbkJvdW5kYXJ5VHJhY2tpbmdcbikge1xuICBpZiAoaGFzT3V0bGV0UmVnZXgudGVzdChjb21wb25lbnRTdGFjaykpIHtcbiAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHRyYWNrIHRoYXQgdGhpcyBpcyBkeW5hbWljLiBJdCBpcyBvbmx5IHNvIHdoZW4gc29tZXRoaW5nIGVsc2UgaXMgYWxzbyBkeW5hbWljLlxuICAgIHJldHVyblxuICB9XG4gIGlmIChoYXNNZXRhZGF0YVJlZ2V4LnRlc3QoY29tcG9uZW50U3RhY2spKSB7XG4gICAgY29uc3QgdXNhZ2VEZXNjcmlwdGlvbiA9XG4gICAgICBraW5kID09PSBEeW5hbWljSG9sZUtpbmQuUnVudGltZVxuICAgICAgICA/IGBSdW50aW1lIGRhdGEgc3VjaCBhcyBcXGBjb29raWVzKClcXGAsIFxcYGhlYWRlcnMoKVxcYCwgXFxgcGFyYW1zXFxgLCBvciBcXGBzZWFyY2hQYXJhbXNcXGAgd2FzIGFjY2Vzc2VkIGluc2lkZSBcXGBnZW5lcmF0ZU1ldGFkYXRhXFxgIG9yIHlvdSBoYXZlIGZpbGUtYmFzZWQgbWV0YWRhdGEgc3VjaCBhcyBpY29ucyB0aGF0IGRlcGVuZCBvbiBkeW5hbWljIHBhcmFtcyBzZWdtZW50cy5gXG4gICAgICAgIDogYFVuY2FjaGVkIGRhdGEgb3IgXFxgY29ubmVjdGlvbigpXFxgIHdhcyBhY2Nlc3NlZCBpbnNpZGUgXFxgZ2VuZXJhdGVNZXRhZGF0YVxcYC5gXG4gICAgY29uc3QgbWVzc2FnZSA9IGBSb3V0ZSBcIiR7d29ya1N0b3JlLnJvdXRlfVwiOiAke3VzYWdlRGVzY3JpcHRpb259IEV4Y2VwdCBmb3IgdGhpcyBpbnN0YW5jZSwgdGhlIHBhZ2Ugd291bGQgaGF2ZSBiZWVuIGVudGlyZWx5IHByZXJlbmRlcmFibGUgd2hpY2ggbWF5IGhhdmUgYmVlbiB0aGUgaW50ZW5kZWQgYmVoYXZpb3IuIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbmV4dC1wcmVyZW5kZXItZHluYW1pYy1tZXRhZGF0YWBcbiAgICBjb25zdCBlcnJvciA9IGFkZEVycm9yQ29udGV4dChcbiAgICAgIG5ldyBFcnJvcihtZXNzYWdlKSxcbiAgICAgIGNvbXBvbmVudFN0YWNrLFxuICAgICAgZHluYW1pY1ZhbGlkYXRpb24uY3JlYXRlSW5zdGFudFN0YWNrXG4gICAgKVxuICAgIGR5bmFtaWNWYWxpZGF0aW9uLmR5bmFtaWNNZXRhZGF0YSA9IGVycm9yXG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKGhhc1ZpZXdwb3J0UmVnZXgudGVzdChjb21wb25lbnRTdGFjaykpIHtcbiAgICBjb25zdCB1c2FnZURlc2NyaXB0aW9uID1cbiAgICAgIGtpbmQgPT09IER5bmFtaWNIb2xlS2luZC5SdW50aW1lXG4gICAgICAgID8gYFJ1bnRpbWUgZGF0YSBzdWNoIGFzIFxcYGNvb2tpZXMoKVxcYCwgXFxgaGVhZGVycygpXFxgLCBcXGBwYXJhbXNcXGAsIG9yIFxcYHNlYXJjaFBhcmFtc1xcYCB3YXMgYWNjZXNzZWQgaW5zaWRlIFxcYGdlbmVyYXRlVmlld3BvcnRcXGAuYFxuICAgICAgICA6IGBVbmNhY2hlZCBkYXRhIG9yIFxcYGNvbm5lY3Rpb24oKVxcYCB3YXMgYWNjZXNzZWQgaW5zaWRlIFxcYGdlbmVyYXRlVmlld3BvcnRcXGAuYFxuICAgIGNvbnN0IG1lc3NhZ2UgPSBgUm91dGUgXCIke3dvcmtTdG9yZS5yb3V0ZX1cIjogJHt1c2FnZURlc2NyaXB0aW9ufSBUaGlzIGRlbGF5cyB0aGUgZW50aXJlIHBhZ2UgZnJvbSByZW5kZXJpbmcsIHJlc3VsdGluZyBpbiBhIHNsb3cgdXNlciBleHBlcmllbmNlLiBMZWFybiBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9uZXh0LXByZXJlbmRlci1keW5hbWljLXZpZXdwb3J0YFxuICAgIGNvbnN0IGVycm9yID0gYWRkRXJyb3JDb250ZXh0KFxuICAgICAgbmV3IEVycm9yKG1lc3NhZ2UpLFxuICAgICAgY29tcG9uZW50U3RhY2ssXG4gICAgICBkeW5hbWljVmFsaWRhdGlvbi5jcmVhdGVJbnN0YW50U3RhY2tcbiAgICApXG4gICAgZHluYW1pY1ZhbGlkYXRpb24uZHluYW1pY0Vycm9ycy5wdXNoKGVycm9yKVxuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgYm91bmRhcnlMb2NhdGlvbiA9XG4gICAgaGFzSW5zdGFudFZhbGlkYXRpb25Cb3VuZGFyeVJlZ2V4LmV4ZWMoY29tcG9uZW50U3RhY2spXG4gIGlmICghYm91bmRhcnlMb2NhdGlvbikge1xuICAgIC8vIFdlIGRvbid0IHNlZSB0aGUgdmFsaWRhdGlvbiBib3VuZGFyeSBpbiB0aGUgY29tcG9uZW50IHN0YWNrLFxuICAgIC8vIHNvIHRoaXMgaG9sZSBtdXN0IGJlIGNvbWluZyBmcm9tIGEgc2hhcmVkIHBhcmVudC5cbiAgICAvLyBTaGFyZWQgcGFyZW50cyBhcmUgZnVsbHkgcmVzb2x2ZWQgYW5kIGRvbid0IGhhdmUgUlNDIGhvbGVzLFxuICAgIC8vIGJ1dCB0aGV5IGNhbiBzdGlsbCBzdXNwZW5kIGluIGEgY2xpZW50IGNvbXBvbmVudCBkdXJpbmcgU1NSLlxuXG4gICAgLy8gSWYgd2UgbWFuYWdlZCB0byByZW5kZXIgYWxsIHRoZSB2YWxpZGF0aW9uIGJvdW5kYXJpZXMsIHRoYXQgbWVhbnNcbiAgICAvLyB0aGF0IHRoZSBjbGllbnQgaG9sZXMgYXJlbid0IGJsb2NraW5nIHZhbGlkYXRpb24gYW5kIHdlIGNhbiBkaXNyZWdhcmQgdGhlbS5cbiAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3QgZXZlbiBjYXJlIHdoZXRoZXIgdGhleSBoYXZlIHN1c3BlbnNlIG9yIG5vdC5cbiAgICBpZiAoYm91bmRhcnlTdGF0ZS5leHBlY3RlZElkcy5zaXplID09PSBib3VuZGFyeVN0YXRlLnJlbmRlcmVkSWRzLnNpemUpIHtcbiAgICAgIGR5bmFtaWNWYWxpZGF0aW9uLmhhc0FsbG93ZWRDbGllbnREeW5hbWljQWJvdmVCb3VuZGFyeSA9IHRydWVcbiAgICAgIGR5bmFtaWNWYWxpZGF0aW9uLmhhc0FsbG93ZWREeW5hbWljID0gdHJ1ZSAvLyBIb2xlcyBvdXRzaWRlIHRoZSBib3VuZGFyeSBjb250cmlidXRlIHRvIGFsbG93aW5nIGR5bmFtaWMgbWV0YWRhdGFcbiAgICAgIHJldHVyblxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUT0RPKGluc3RhbnQtdmFsaWRhdGlvbikgVE9ETyhOQVItNzg3KVxuICAgICAgLy8gSWYgc2hhcmVkIHBhcmVudHMgYmxvY2tlZCB1cyBmcm9tIHZhbGlkYXRpbmcsIHdlIHNob3VsZCBvbmx5IGxvZ1xuICAgICAgLy8gdGhlIGVycm9ycyBmcm9tIHRoZSBpbm5lcm1vc3QgKHNlZ21lbnRzKSwgaS5lLiBvbWl0IGxheW91dHMgd2hvc2VcbiAgICAgIC8vIHNsb3RzIG1hbmFnZWQgdG8gcmVuZGVyIChiZWNhdXNlIGNsZWFybHkgdGhleSBkaWRuJ3QgYmxvY2sgdmFsaWRhdGlvbilcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgUm91dGUgXCIke3dvcmtTdG9yZS5yb3V0ZX1cIjogQ291bGQgbm90IHZhbGlkYXRlIFxcYHVuc3RhYmxlX2luc3RhbnRcXGAgYmVjYXVzZSBhIENsaWVudCBDb21wb25lbnQgaW4gYSBwYXJlbnQgc2VnbWVudCBwcmV2ZW50ZWQgdGhlIHBhZ2UgZnJvbSByZW5kZXJpbmcuYFxuICAgICAgY29uc3QgZXJyb3IgPSBhZGRFcnJvckNvbnRleHQoXG4gICAgICAgIG5ldyBFcnJvcihtZXNzYWdlKSxcbiAgICAgICAgY29tcG9uZW50U3RhY2ssXG4gICAgICAgIGR5bmFtaWNWYWxpZGF0aW9uLmNyZWF0ZUluc3RhbnRTdGFja1xuICAgICAgKVxuICAgICAgZHluYW1pY1ZhbGlkYXRpb24udmFsaWRhdGlvblByZXZlbnRpbmdFcnJvcnMucHVzaChlcnJvcilcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBUaGUgaG9sZSBvcmlnaW5hdGVzIGluc2lkZSB0aGUgdmFsaWRhdGlvbiBib3VuZGFyeS5cbiAgICAvL1xuICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgYSBTdXNwZW5zZSBhYm92ZSB0aGUgaG9sZSwgYnV0IGJlbG93IHRoZSB2YWxpZGF0aW9uIGJvdW5kYXJ5LlxuICAgIC8vIElmIHdlIGRvLCB0aGVuIHRoaXMgZHluYW1pYyB1c2FnZSB3b3VsZG4ndCBibG9jayBhIG5hdmlnYXRpb24gdG8gdGhpcyBzdWJ0cmVlLlxuICAgIC8vIENvbnZlcnNlbHksIGlmIHRoZSBuZWFyZXN0IHN1c3BlbnNlIGlzIGFib3ZlIHRoZSB2YWxpZGF0aW9uIGJvdW5kYXJ5LCB0aGVuIHRoaXMgc3VidHJlZSB3b3VsZCBibG9jay5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCBpbiB0aGUgY29tcG9uZW50IHN0YWNrLCBjaGlsZHJlbiBjb21lIGJlZm9yZSBwYXJlbnRzLlxuICAgIC8vXG4gICAgLy8gVmFsaWQ6XG4gICAgLy8gICAuLi5cbiAgICAvLyAgIGF0IFN1c3BlbnNlXG4gICAgLy8gICAuLi5cbiAgICAvLyAgIGF0IF9fbmV4dF9wcmVmZXRjaF92YWxpZGF0aW9uX2JvdW5kYXJ5X19cbiAgICAvL1xuICAgIC8vIEludmFsaWQ6XG4gICAgLy8gICAuLi5cbiAgICAvLyAgIGF0IF9fbmV4dF9wcmVmZXRjaF92YWxpZGF0aW9uX2JvdW5kYXJ5X19cbiAgICAvLyAgIC4uLlxuICAgIC8vICAgYXQgU3VzcGVuc2VcbiAgICAvL1xuICAgIGNvbnN0IHN1c3BlbnNlTG9jYXRpb24gPSBoYXNTdXNwZW5zZVJlZ2V4LmV4ZWMoY29tcG9uZW50U3RhY2spXG4gICAgaWYgKHN1c3BlbnNlTG9jYXRpb24pIHtcbiAgICAgIGlmIChzdXNwZW5zZUxvY2F0aW9uLmluZGV4IDwgYm91bmRhcnlMb2NhdGlvbi5pbmRleCkge1xuICAgICAgICBkeW5hbWljVmFsaWRhdGlvbi5oYXNBbGxvd2VkRHluYW1pYyA9IHRydWVcbiAgICAgICAgcmV0dXJuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBpbnZhbGlkIC0gZmFsbHRocm91Z2hcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoY2xpZW50RHluYW1pYy5zeW5jRHluYW1pY0Vycm9yV2l0aFN0YWNrKSB7XG4gICAgLy8gVGhpcyB0YXNrIHdhcyB0aGUgdGFzayB0aGF0IGNhbGxlZCB0aGUgc3luYyBlcnJvci5cbiAgICBjb25zdCBzeW5jRXJyb3IgPSBjbGllbnREeW5hbWljLnN5bmNEeW5hbWljRXJyb3JXaXRoU3RhY2tcbiAgICBpZiAoXG4gICAgICBkeW5hbWljVmFsaWRhdGlvbi5jcmVhdGVJbnN0YW50U3RhY2sgIT09IG51bGwgJiZcbiAgICAgIHN5bmNFcnJvci5jYXVzZSA9PT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBzeW5jRXJyb3IuY2F1c2UgPSBkeW5hbWljVmFsaWRhdGlvbi5jcmVhdGVJbnN0YW50U3RhY2soKVxuICAgIH1cbiAgICBkeW5hbWljVmFsaWRhdGlvbi5keW5hbWljRXJyb3JzLnB1c2goc3luY0Vycm9yKVxuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgdXNhZ2VEZXNjcmlwdGlvbiA9XG4gICAga2luZCA9PT0gRHluYW1pY0hvbGVLaW5kLlJ1bnRpbWVcbiAgICAgID8gYFJ1bnRpbWUgZGF0YSBzdWNoIGFzIFxcYGNvb2tpZXMoKVxcYCwgXFxgaGVhZGVycygpXFxgLCBcXGBwYXJhbXNcXGAsIG9yIFxcYHNlYXJjaFBhcmFtc1xcYCB3YXMgYWNjZXNzZWQgb3V0c2lkZSBvZiBcXGA8U3VzcGVuc2U+XFxgLmBcbiAgICAgIDogYFVuY2FjaGVkIGRhdGEgb3IgXFxgY29ubmVjdGlvbigpXFxgIHdhcyBhY2Nlc3NlZCBvdXRzaWRlIG9mIFxcYDxTdXNwZW5zZT5cXGAuYFxuICBjb25zdCBtZXNzYWdlID0gYFJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCI6ICR7dXNhZ2VEZXNjcmlwdGlvbn0gVGhpcyBkZWxheXMgdGhlIGVudGlyZSBwYWdlIGZyb20gcmVuZGVyaW5nLCByZXN1bHRpbmcgaW4gYSBzbG93IHVzZXIgZXhwZXJpZW5jZS4gTGVhcm4gbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvYmxvY2tpbmctcm91dGVgXG4gIGNvbnN0IGVycm9yID0gYWRkRXJyb3JDb250ZXh0KFxuICAgIG5ldyBFcnJvcihtZXNzYWdlKSxcbiAgICBjb21wb25lbnRTdGFjayxcbiAgICBkeW5hbWljVmFsaWRhdGlvbi5jcmVhdGVJbnN0YW50U3RhY2tcbiAgKVxuICBkeW5hbWljVmFsaWRhdGlvbi5keW5hbWljRXJyb3JzLnB1c2goZXJyb3IpXG4gIHJldHVyblxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhY2tUaHJvd25FcnJvckluTmF2aWdhdGlvbihcbiAgd29ya1N0b3JlOiBXb3JrU3RvcmUsXG4gIGR5bmFtaWNWYWxpZGF0aW9uOiBJbnN0YW50VmFsaWRhdGlvblN0YXRlLFxuICB0aHJvd25WYWx1ZTogdW5rbm93bixcbiAgY29tcG9uZW50U3RhY2s6IHN0cmluZ1xuKSB7XG4gIGNvbnN0IGJvdW5kYXJ5TG9jYXRpb24gPVxuICAgIGhhc0luc3RhbnRWYWxpZGF0aW9uQm91bmRhcnlSZWdleC5leGVjKGNvbXBvbmVudFN0YWNrKVxuICBpZiAoIWJvdW5kYXJ5TG9jYXRpb24pIHtcbiAgICAvLyBUaGVyZSdzIG5vIHZhbGlkYXRpb24gYm91bmRhcnkgb24gdGhlIGNvbXBvbmVudCBzdGFjay5cbiAgICAvLyBUaGlzIGVycm9yIG1heSBoYXZlIGJsb2NrZWQgYSBib3VuZGFyeSBmcm9tIHJlbmRlcmluZy5cblxuICAgIC8vIFdyYXAgdGhlIGVycm9yIHRvIHByb3ZpZGUgY29tcG9uZW50IGNvbnRleHQuXG4gICAgLy8gVGhpcyBoZWxwcyBmb3IgZXJyb3JzIGZyb20gbm9kZV9tb2R1bGVzIHdoaWNoIHdvdWxkIG90aGVyd2lzZVxuICAgIC8vIGhhdmUgbm8gdXNlZnVsIHN0YWNrIGluZm9ybWF0aW9uIGR1ZSB0byBpZ25vcmUtbGlzdGluZyxcbiAgICAvLyBlLmcuIG5leHQvZHluYW1pYyB3aXRoIGBzc3I6IGZhbHNlYC5cbiAgICBjb25zdCBlcnJvciA9IGFkZEVycm9yQ29udGV4dChcbiAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIGF0dGVtcHRpbmcgdG8gdmFsaWRhdGUgaW5zdGFudCBVSS4gVGhpcyBlcnJvciBtYXkgYmUgcHJldmVudGluZyB0aGUgdmFsaWRhdGlvbiBmcm9tIGNvbXBsZXRpbmcuJyxcbiAgICAgICAgeyBjYXVzZTogdGhyb3duVmFsdWUgfVxuICAgICAgKSxcbiAgICAgIGNvbXBvbmVudFN0YWNrLFxuICAgICAgbnVsbFxuICAgIClcbiAgICBkeW5hbWljVmFsaWRhdGlvbi50aHJvd25FcnJvcnNPdXRzaWRlQm91bmRhcnkucHVzaChlcnJvcilcbiAgfSBlbHNlIHtcbiAgICAvLyBUaGVyZSdzIHZhbGlkYXRpb24gYm91bmRhcnkgb24gdGhlIGNvbXBvbmVudCBzdGFjayxcbiAgICAvLyBzbyB3ZSBrbm93IHRoaXMgZXJyb3IgZGlkbid0IGJsb2NrIGEgdmFsaWRhdGlvbiBib3VuZGFyeSBmcm9tIHJlbmRlcmluZy5cbiAgICAvLyBIb3dldmVyLCB0aGlzIGVycm9yIG1pZ2h0IGJlIGhpZGluZyBiZSBoaWRpbmcgZHluYW1pYyBjb250ZW50IHRoYXQgd291bGRcbiAgICAvLyBjYXVzZSB2YWxpZGF0aW9uIHRvIGZhaWwuXG4gICAgY29uc3Qgc3VzcGVuc2VMb2NhdGlvbiA9IGhhc1N1c3BlbnNlUmVnZXguZXhlYyhjb21wb25lbnRTdGFjaylcbiAgICBpZiAoc3VzcGVuc2VMb2NhdGlvbikge1xuICAgICAgaWYgKHN1c3BlbnNlTG9jYXRpb24uaW5kZXggPCBib3VuZGFyeUxvY2F0aW9uLmluZGV4KSB7XG4gICAgICAgIC8vIFRoZXJlJ3MgYSBTdXNwZW5zZSBiZWxvdyB0aGUgdmFsaWRhdGlvbiBib3VuZGFyeSBidXQgYWJvdmUgdGhpcyBlcnJvcidzIGxvY2F0aW9uLlxuICAgICAgICAvLyBUaGlzIHN1YnRyZWUgY2FuJ3QgZmFpbCBpbnN0YW50IHZhbGlkYXRpb24gYmVjYXVzZSBhbnkgcG90ZW50aWFsXG4gICAgICAgIC8vIGR5bmFtaWMgaG9sZXMgd291bGQgYmUgZ3VhcmRlZCBieSB0aGUgU3VzcGVuc2UgYW55d2F5LFxuICAgICAgICAvLyBzbyB3ZSBjYW4gYWxsb3cgdGhpcy5cbiAgICAgICAgcmV0dXJuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBpbnZhbGlkIC0gZmFsbHRocm91Z2hcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgbWVzc2FnZSA9IGBSb3V0ZSBcIiR7d29ya1N0b3JlLnJvdXRlfVwiOiBDb3VsZCBub3QgdmFsaWRhdGUgXFxgdW5zdGFibGVfaW5zdGFudFxcYCBiZWNhdXNlIGFuIGVycm9yIHByZXZlbnRlZCB0aGUgdGFyZ2V0IHNlZ21lbnQgZnJvbSByZW5kZXJpbmcuYFxuICAgIGNvbnN0IGVycm9yID0gYWRkRXJyb3JDb250ZXh0KFxuICAgICAgbmV3IEVycm9yKG1lc3NhZ2UsIHsgY2F1c2U6IHRocm93blZhbHVlIH0pLFxuICAgICAgY29tcG9uZW50U3RhY2ssXG4gICAgICBudWxsIC8vIFRPRE8oaW5zdGFudC12YWxpZGF0aW9uLWJ1aWxkKTogY29uZmxpY3RpbmcgdXNlIG9mIGNhdXNlXG4gICAgKVxuICAgIGR5bmFtaWNWYWxpZGF0aW9uLnZhbGlkYXRpb25QcmV2ZW50aW5nRXJyb3JzLnB1c2goZXJyb3IpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYWNrRHluYW1pY0hvbGVJblJ1bnRpbWVTaGVsbChcbiAgd29ya1N0b3JlOiBXb3JrU3RvcmUsXG4gIGNvbXBvbmVudFN0YWNrOiBzdHJpbmcsXG4gIGR5bmFtaWNWYWxpZGF0aW9uOiBEeW5hbWljVmFsaWRhdGlvblN0YXRlLFxuICBjbGllbnREeW5hbWljOiBEeW5hbWljVHJhY2tpbmdTdGF0ZVxuKSB7XG4gIGlmIChoYXNPdXRsZXRSZWdleC50ZXN0KGNvbXBvbmVudFN0YWNrKSkge1xuICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gdHJhY2sgdGhhdCB0aGlzIGlzIGR5bmFtaWMuIEl0IGlzIG9ubHkgc28gd2hlbiBzb21ldGhpbmcgZWxzZSBpcyBhbHNvIGR5bmFtaWMuXG4gICAgcmV0dXJuXG4gIH0gZWxzZSBpZiAoaGFzTWV0YWRhdGFSZWdleC50ZXN0KGNvbXBvbmVudFN0YWNrKSkge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBgUm91dGUgXCIke3dvcmtTdG9yZS5yb3V0ZX1cIjogVW5jYWNoZWQgZGF0YSBvciBcXGBjb25uZWN0aW9uKClcXGAgd2FzIGFjY2Vzc2VkIGluc2lkZSBcXGBnZW5lcmF0ZU1ldGFkYXRhXFxgLiBFeGNlcHQgZm9yIHRoaXMgaW5zdGFuY2UsIHRoZSBwYWdlIHdvdWxkIGhhdmUgYmVlbiBlbnRpcmVseSBwcmVyZW5kZXJhYmxlIHdoaWNoIG1heSBoYXZlIGJlZW4gdGhlIGludGVuZGVkIGJlaGF2aW9yLiBTZWUgbW9yZSBpbmZvIGhlcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL25leHQtcHJlcmVuZGVyLWR5bmFtaWMtbWV0YWRhdGFgXG4gICAgY29uc3QgZXJyb3IgPSBhZGRFcnJvckNvbnRleHQobmV3IEVycm9yKG1lc3NhZ2UpLCBjb21wb25lbnRTdGFjaywgbnVsbClcbiAgICBkeW5hbWljVmFsaWRhdGlvbi5keW5hbWljTWV0YWRhdGEgPSBlcnJvclxuICAgIHJldHVyblxuICB9IGVsc2UgaWYgKGhhc1ZpZXdwb3J0UmVnZXgudGVzdChjb21wb25lbnRTdGFjaykpIHtcbiAgICAvLyBUT0RPKGluc3RhbnQtdmFsaWRhdGlvbik6IElmIHRoZSBwYWdlIG9ubHkgaGFzIGhvbGVzIGNhdXNlZCBieSBydW50aW1lIGRhdGEsXG4gICAgLy8gd2Ugd29uJ3QgZmluZCBvdXQgaWYgdGhlcmUncyBhIHN1c3BlbnNlLWFib3ZlLWJvZHkgYW5kIGVycm9yIGZvciBkeW5hbWljIHZpZXdwb3J0XG4gICAgLy8gZXZlbiBpZiB0aGVyZSBpcyBpbiBmYWN0IGEgc3VzcGVuc2UtYWJvdmUtYm9keVxuICAgIGNvbnN0IG1lc3NhZ2UgPSBgUm91dGUgXCIke3dvcmtTdG9yZS5yb3V0ZX1cIjogVW5jYWNoZWQgZGF0YSBvciBcXGBjb25uZWN0aW9uKClcXGAgd2FzIGFjY2Vzc2VkIGluc2lkZSBcXGBnZW5lcmF0ZVZpZXdwb3J0XFxgLiBUaGlzIGRlbGF5cyB0aGUgZW50aXJlIHBhZ2UgZnJvbSByZW5kZXJpbmcsIHJlc3VsdGluZyBpbiBhIHNsb3cgdXNlciBleHBlcmllbmNlLiBMZWFybiBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9uZXh0LXByZXJlbmRlci1keW5hbWljLXZpZXdwb3J0YFxuICAgIGNvbnN0IGVycm9yID0gYWRkRXJyb3JDb250ZXh0KG5ldyBFcnJvcihtZXNzYWdlKSwgY29tcG9uZW50U3RhY2ssIG51bGwpXG4gICAgZHluYW1pY1ZhbGlkYXRpb24uZHluYW1pY0Vycm9ycy5wdXNoKGVycm9yKVxuICAgIHJldHVyblxuICB9IGVsc2UgaWYgKFxuICAgIGhhc1N1c3BlbnNlQmVmb3JlUm9vdExheW91dFdpdGhvdXRCb2R5T3JJbXBsaWNpdEJvZHlSZWdleC50ZXN0KFxuICAgICAgY29tcG9uZW50U3RhY2tcbiAgICApXG4gICkge1xuICAgIC8vIEZvciBTdXNwZW5zZSB3aXRoaW4gYm9keSwgdGhlIHByZWx1ZGUgd291bGRuJ3QgYmUgZW1wdHkgc28gaXQgd291bGRuJ3QgdmlvbGF0ZSB0aGUgZW1wdHkgc3RhdGljIHNoZWxscyBydWxlLlxuICAgIC8vIEJ1dCBpZiB5b3UgaGF2ZSBTdXNwZW5zZSBhYm92ZSBib2R5LCB0aGUgcHJlbHVkZSBpcyBlbXB0eSBidXQgd2UgYWxsb3cgdGhhdCBiZWNhdXNlIGhhdmluZyBTdXNwZW5zZVxuICAgIC8vIGlzIGFuIGV4cGxpY2l0IHNpZ25hbCBmcm9tIHRoZSB1c2VyIHRoYXQgdGhleSBhY2tub3dsZWRnZSB0aGUgZW1wdHkgc2hlbGwgYW5kIHdhbnQgZHluYW1pYyByZW5kZXJpbmcuXG4gICAgZHluYW1pY1ZhbGlkYXRpb24uaGFzQWxsb3dlZER5bmFtaWMgPSB0cnVlXG4gICAgZHluYW1pY1ZhbGlkYXRpb24uaGFzU3VzcGVuc2VBYm92ZUJvZHkgPSB0cnVlXG4gICAgcmV0dXJuXG4gIH0gZWxzZSBpZiAoaGFzU3VzcGVuc2VSZWdleC50ZXN0KGNvbXBvbmVudFN0YWNrKSkge1xuICAgIC8vIHRoaXMgZXJyb3IgaGFkIGEgU3VzcGVuc2UgYm91bmRhcnkgYWJvdmUgaXQgc28gd2UgZG9uJ3QgbmVlZCB0byByZXBvcnQgaXQgYXMgYSBzb3VyY2VcbiAgICAvLyBvZiBkaXNhbGxvd2VkXG4gICAgZHluYW1pY1ZhbGlkYXRpb24uaGFzQWxsb3dlZER5bmFtaWMgPSB0cnVlXG4gICAgcmV0dXJuXG4gIH0gZWxzZSBpZiAoY2xpZW50RHluYW1pYy5zeW5jRHluYW1pY0Vycm9yV2l0aFN0YWNrKSB7XG4gICAgLy8gVGhpcyB0YXNrIHdhcyB0aGUgdGFzayB0aGF0IGNhbGxlZCB0aGUgc3luYyBlcnJvci5cbiAgICBkeW5hbWljVmFsaWRhdGlvbi5keW5hbWljRXJyb3JzLnB1c2goXG4gICAgICBjbGllbnREeW5hbWljLnN5bmNEeW5hbWljRXJyb3JXaXRoU3RhY2tcbiAgICApXG4gICAgcmV0dXJuXG4gIH1cblxuICBjb25zdCBtZXNzYWdlID0gYFJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCI6IFVuY2FjaGVkIGRhdGEgb3IgXFxgY29ubmVjdGlvbigpXFxgIHdhcyBhY2Nlc3NlZCBvdXRzaWRlIG9mIFxcYDxTdXNwZW5zZT5cXGAuIFRoaXMgZGVsYXlzIHRoZSBlbnRpcmUgcGFnZSBmcm9tIHJlbmRlcmluZywgcmVzdWx0aW5nIGluIGEgc2xvdyB1c2VyIGV4cGVyaWVuY2UuIExlYXJuIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2Jsb2NraW5nLXJvdXRlYFxuICBjb25zdCBlcnJvciA9IGFkZEVycm9yQ29udGV4dChuZXcgRXJyb3IobWVzc2FnZSksIGNvbXBvbmVudFN0YWNrLCBudWxsKVxuICBkeW5hbWljVmFsaWRhdGlvbi5keW5hbWljRXJyb3JzLnB1c2goZXJyb3IpXG4gIHJldHVyblxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhY2tEeW5hbWljSG9sZUluU3RhdGljU2hlbGwoXG4gIHdvcmtTdG9yZTogV29ya1N0b3JlLFxuICBjb21wb25lbnRTdGFjazogc3RyaW5nLFxuICBkeW5hbWljVmFsaWRhdGlvbjogRHluYW1pY1ZhbGlkYXRpb25TdGF0ZSxcbiAgY2xpZW50RHluYW1pYzogRHluYW1pY1RyYWNraW5nU3RhdGVcbikge1xuICBpZiAoaGFzT3V0bGV0UmVnZXgudGVzdChjb21wb25lbnRTdGFjaykpIHtcbiAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHRyYWNrIHRoYXQgdGhpcyBpcyBkeW5hbWljLiBJdCBpcyBvbmx5IHNvIHdoZW4gc29tZXRoaW5nIGVsc2UgaXMgYWxzbyBkeW5hbWljLlxuICAgIHJldHVyblxuICB9IGVsc2UgaWYgKGhhc01ldGFkYXRhUmVnZXgudGVzdChjb21wb25lbnRTdGFjaykpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gYFJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCI6IFJ1bnRpbWUgZGF0YSBzdWNoIGFzIFxcYGNvb2tpZXMoKVxcYCwgXFxgaGVhZGVycygpXFxgLCBcXGBwYXJhbXNcXGAsIG9yIFxcYHNlYXJjaFBhcmFtc1xcYCB3YXMgYWNjZXNzZWQgaW5zaWRlIFxcYGdlbmVyYXRlTWV0YWRhdGFcXGAgb3IgeW91IGhhdmUgZmlsZS1iYXNlZCBtZXRhZGF0YSBzdWNoIGFzIGljb25zIHRoYXQgZGVwZW5kIG9uIGR5bmFtaWMgcGFyYW1zIHNlZ21lbnRzLiBFeGNlcHQgZm9yIHRoaXMgaW5zdGFuY2UsIHRoZSBwYWdlIHdvdWxkIGhhdmUgYmVlbiBlbnRpcmVseSBwcmVyZW5kZXJhYmxlIHdoaWNoIG1heSBoYXZlIGJlZW4gdGhlIGludGVuZGVkIGJlaGF2aW9yLiBTZWUgbW9yZSBpbmZvIGhlcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL25leHQtcHJlcmVuZGVyLWR5bmFtaWMtbWV0YWRhdGFgXG4gICAgY29uc3QgZXJyb3IgPSBhZGRFcnJvckNvbnRleHQobmV3IEVycm9yKG1lc3NhZ2UpLCBjb21wb25lbnRTdGFjaywgbnVsbClcbiAgICBkeW5hbWljVmFsaWRhdGlvbi5keW5hbWljTWV0YWRhdGEgPSBlcnJvclxuICAgIHJldHVyblxuICB9IGVsc2UgaWYgKGhhc1ZpZXdwb3J0UmVnZXgudGVzdChjb21wb25lbnRTdGFjaykpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gYFJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCI6IFJ1bnRpbWUgZGF0YSBzdWNoIGFzIFxcYGNvb2tpZXMoKVxcYCwgXFxgaGVhZGVycygpXFxgLCBcXGBwYXJhbXNcXGAsIG9yIFxcYHNlYXJjaFBhcmFtc1xcYCB3YXMgYWNjZXNzZWQgaW5zaWRlIFxcYGdlbmVyYXRlVmlld3BvcnRcXGAuIFRoaXMgZGVsYXlzIHRoZSBlbnRpcmUgcGFnZSBmcm9tIHJlbmRlcmluZywgcmVzdWx0aW5nIGluIGEgc2xvdyB1c2VyIGV4cGVyaWVuY2UuIExlYXJuIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL25leHQtcHJlcmVuZGVyLWR5bmFtaWMtdmlld3BvcnRgXG4gICAgY29uc3QgZXJyb3IgPSBhZGRFcnJvckNvbnRleHQobmV3IEVycm9yKG1lc3NhZ2UpLCBjb21wb25lbnRTdGFjaywgbnVsbClcbiAgICBkeW5hbWljVmFsaWRhdGlvbi5keW5hbWljRXJyb3JzLnB1c2goZXJyb3IpXG4gICAgcmV0dXJuXG4gIH0gZWxzZSBpZiAoXG4gICAgaGFzU3VzcGVuc2VCZWZvcmVSb290TGF5b3V0V2l0aG91dEJvZHlPckltcGxpY2l0Qm9keVJlZ2V4LnRlc3QoXG4gICAgICBjb21wb25lbnRTdGFja1xuICAgIClcbiAgKSB7XG4gICAgLy8gRm9yIFN1c3BlbnNlIHdpdGhpbiBib2R5LCB0aGUgcHJlbHVkZSB3b3VsZG4ndCBiZSBlbXB0eSBzbyBpdCB3b3VsZG4ndCB2aW9sYXRlIHRoZSBlbXB0eSBzdGF0aWMgc2hlbGxzIHJ1bGUuXG4gICAgLy8gQnV0IGlmIHlvdSBoYXZlIFN1c3BlbnNlIGFib3ZlIGJvZHksIHRoZSBwcmVsdWRlIGlzIGVtcHR5IGJ1dCB3ZSBhbGxvdyB0aGF0IGJlY2F1c2UgaGF2aW5nIFN1c3BlbnNlXG4gICAgLy8gaXMgYW4gZXhwbGljaXQgc2lnbmFsIGZyb20gdGhlIHVzZXIgdGhhdCB0aGV5IGFja25vd2xlZGdlIHRoZSBlbXB0eSBzaGVsbCBhbmQgd2FudCBkeW5hbWljIHJlbmRlcmluZy5cbiAgICBkeW5hbWljVmFsaWRhdGlvbi5oYXNBbGxvd2VkRHluYW1pYyA9IHRydWVcbiAgICBkeW5hbWljVmFsaWRhdGlvbi5oYXNTdXNwZW5zZUFib3ZlQm9keSA9IHRydWVcbiAgICByZXR1cm5cbiAgfSBlbHNlIGlmIChoYXNTdXNwZW5zZVJlZ2V4LnRlc3QoY29tcG9uZW50U3RhY2spKSB7XG4gICAgLy8gdGhpcyBlcnJvciBoYWQgYSBTdXNwZW5zZSBib3VuZGFyeSBhYm92ZSBpdCBzbyB3ZSBkb24ndCBuZWVkIHRvIHJlcG9ydCBpdCBhcyBhIHNvdXJjZVxuICAgIC8vIG9mIGRpc2FsbG93ZWRcbiAgICBkeW5hbWljVmFsaWRhdGlvbi5oYXNBbGxvd2VkRHluYW1pYyA9IHRydWVcbiAgICByZXR1cm5cbiAgfSBlbHNlIGlmIChjbGllbnREeW5hbWljLnN5bmNEeW5hbWljRXJyb3JXaXRoU3RhY2spIHtcbiAgICAvLyBUaGlzIHRhc2sgd2FzIHRoZSB0YXNrIHRoYXQgY2FsbGVkIHRoZSBzeW5jIGVycm9yLlxuICAgIGR5bmFtaWNWYWxpZGF0aW9uLmR5bmFtaWNFcnJvcnMucHVzaChcbiAgICAgIGNsaWVudER5bmFtaWMuc3luY0R5bmFtaWNFcnJvcldpdGhTdGFja1xuICAgIClcbiAgICByZXR1cm5cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBtZXNzYWdlID0gYFJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCI6IFJ1bnRpbWUgZGF0YSBzdWNoIGFzIFxcYGNvb2tpZXMoKVxcYCwgXFxgaGVhZGVycygpXFxgLCBcXGBwYXJhbXNcXGAsIG9yIFxcYHNlYXJjaFBhcmFtc1xcYCB3YXMgYWNjZXNzZWQgb3V0c2lkZSBvZiBcXGA8U3VzcGVuc2U+XFxgLiBUaGlzIGRlbGF5cyB0aGUgZW50aXJlIHBhZ2UgZnJvbSByZW5kZXJpbmcsIHJlc3VsdGluZyBpbiBhIHNsb3cgdXNlciBleHBlcmllbmNlLiBMZWFybiBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9ibG9ja2luZy1yb3V0ZWBcbiAgICBjb25zdCBlcnJvciA9IGFkZEVycm9yQ29udGV4dChuZXcgRXJyb3IobWVzc2FnZSksIGNvbXBvbmVudFN0YWNrLCBudWxsKVxuICAgIGR5bmFtaWNWYWxpZGF0aW9uLmR5bmFtaWNFcnJvcnMucHVzaChlcnJvcilcbiAgICByZXR1cm5cbiAgfVxufVxuXG4vKipcbiAqIEluIGRldiBtb2RlLCB3ZSBwcmVmZXIgdXNpbmcgdGhlIG93bmVyIHN0YWNrLCBvdGhlcndpc2UgdGhlIHByb3ZpZGVkXG4gKiBjb21wb25lbnQgc3RhY2sgaXMgdXNlZC5cbiAqXG4gKiBBY2NlcHRzIGFuIGFscmVhZHktY3JlYXRlZCBFcnJvciBzbyB0aGUgU1dDIGVycm9yLWNvZGUgcGx1Z2luIGNhbiBzZWUgdGhlXG4gKiBgbmV3IEVycm9yKC4uLilgIGNhbGwgYXQgZWFjaCBjYWxsIHNpdGUgYW5kIGF1dG8tYXNzaWduIGVycm9yIGNvZGVzLlxuICovXG5mdW5jdGlvbiBhZGRFcnJvckNvbnRleHQoXG4gIGVycm9yOiBFcnJvcixcbiAgY29tcG9uZW50U3RhY2s6IHN0cmluZyxcbiAgY3JlYXRlSW5zdGFudFN0YWNrOiAoKCkgPT4gRXJyb3IpIHwgbnVsbFxuKSB7XG4gIGNvbnN0IG93bmVyU3RhY2sgPVxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgUmVhY3QuY2FwdHVyZU93bmVyU3RhY2tcbiAgICAgID8gUmVhY3QuY2FwdHVyZU93bmVyU3RhY2soKVxuICAgICAgOiBudWxsXG5cbiAgaWYgKGNyZWF0ZUluc3RhbnRTdGFjayAhPT0gbnVsbCkge1xuICAgIGVycm9yLmNhdXNlID0gY3JlYXRlSW5zdGFudFN0YWNrKClcbiAgfVxuICAvLyBUT0RPIGdvIGJhY2sgdG8gb3duZXIgc3RhY2sgaGVyZSBpZiBhdmFpbGFibGUuIFRoaXMgaXMgdGVtcG9yYXJpbHkgdXNpbmcgY29tcG9uZW50U3RhY2sgdG8gZ2V0IHRoZSByaWdodFxuICAvL1xuICBlcnJvci5zdGFjayA9XG4gICAgZXJyb3IubmFtZSArICc6ICcgKyBlcnJvci5tZXNzYWdlICsgKG93bmVyU3RhY2sgfHwgY29tcG9uZW50U3RhY2spXG4gIHJldHVybiBlcnJvclxufVxuXG5leHBvcnQgZW51bSBQcmVsdWRlU3RhdGUge1xuICBGdWxsID0gMCxcbiAgRW1wdHkgPSAxLFxuICBFcnJvcmVkID0gMixcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvZ0Rpc2FsbG93ZWREeW5hbWljRXJyb3IoXG4gIHdvcmtTdG9yZTogV29ya1N0b3JlLFxuICBlcnJvcjogRXJyb3Jcbik6IHZvaWQge1xuICBjb25zb2xlLmVycm9yKGVycm9yKVxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50Jykge1xuICAgIGNvbnNvbGUuZXJyb3IoYFRvIGdldCBhIG1vcmUgZGV0YWlsZWQgc3RhY2sgdHJhY2UgYW5kIHBpbnBvaW50IHRoZSBpc3N1ZSwgdHJ5IG9uZSBvZiB0aGUgZm9sbG93aW5nOlxuICAtIFN0YXJ0IHRoZSBhcHAgaW4gZGV2ZWxvcG1lbnQgbW9kZSBieSBydW5uaW5nIFxcYG5leHQgZGV2XFxgLCB0aGVuIG9wZW4gXCIke3dvcmtTdG9yZS5yb3V0ZX1cIiBpbiB5b3VyIGJyb3dzZXIgdG8gaW52ZXN0aWdhdGUgdGhlIGVycm9yLlxuICAtIFJlcnVuIHRoZSBwcm9kdWN0aW9uIGJ1aWxkIHdpdGggXFxgbmV4dCBidWlsZCAtLWRlYnVnLXByZXJlbmRlclxcYCB0byBnZW5lcmF0ZSBiZXR0ZXIgc3RhY2sgdHJhY2VzLmApXG4gIH0gZWxzZSBpZiAoIXByb2Nlc3MuZW52Ll9fTkVYVF9ERVZfU0VSVkVSKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIGBUbyBkZWJ1ZyB0aGUgaXNzdWUsIHN0YXJ0IHRoZSBhcHAgaW4gZGV2ZWxvcG1lbnQgbW9kZSBieSBydW5uaW5nIFxcYG5leHQgZGV2XFxgLCB0aGVuIG9wZW4gXCIke3dvcmtTdG9yZS5yb3V0ZX1cIiBpbiB5b3VyIGJyb3dzZXIgdG8gaW52ZXN0aWdhdGUgdGhlIGVycm9yLmBcbiAgICApXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRocm93SWZEaXNhbGxvd2VkRHluYW1pYyhcbiAgd29ya1N0b3JlOiBXb3JrU3RvcmUsXG4gIHByZWx1ZGU6IFByZWx1ZGVTdGF0ZSxcbiAgZHluYW1pY1ZhbGlkYXRpb246IER5bmFtaWNWYWxpZGF0aW9uU3RhdGUsXG4gIHNlcnZlckR5bmFtaWM6IER5bmFtaWNUcmFja2luZ1N0YXRlXG4pOiB2b2lkIHtcbiAgaWYgKHNlcnZlckR5bmFtaWMuc3luY0R5bmFtaWNFcnJvcldpdGhTdGFjaykge1xuICAgIGxvZ0Rpc2FsbG93ZWREeW5hbWljRXJyb3IoXG4gICAgICB3b3JrU3RvcmUsXG4gICAgICBzZXJ2ZXJEeW5hbWljLnN5bmNEeW5hbWljRXJyb3JXaXRoU3RhY2tcbiAgICApXG4gICAgdGhyb3cgbmV3IFN0YXRpY0dlbkJhaWxvdXRFcnJvcigpXG4gIH1cblxuICBpZiAocHJlbHVkZSAhPT0gUHJlbHVkZVN0YXRlLkZ1bGwpIHtcbiAgICBpZiAoZHluYW1pY1ZhbGlkYXRpb24uaGFzU3VzcGVuc2VBYm92ZUJvZHkpIHtcbiAgICAgIC8vIFRoaXMgcm91dGUgaGFzIG9wdGVkIGludG8gYWxsb3dpbmcgZnVsbHkgZHluYW1pYyByZW5kZXJpbmdcbiAgICAgIC8vIGJ5IGluY2x1ZGluZyBhIFN1c3BlbnNlIGJvdW5kYXJ5IGFib3ZlIHRoZSBib2R5LiBJbiB0aGlzIGNhc2VcbiAgICAgIC8vIGEgbGFjayBvZiBhIHNoZWxsIGlzIG5vdCBjb25zaWRlcmVkIGRpc2FsbG93ZWQgc28gd2Ugc2ltcGx5IHJldHVyblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gV2UgZGlkbid0IGhhdmUgYW55IHN5bmMgYmFpbG91dHMgYnV0IHRoZXJlIG1heSBiZSB1c2VyIGNvZGUgd2hpY2hcbiAgICAvLyBibG9ja2VkIHRoZSByb290LiBXZSB3b3VsZCBoYXZlIGNhcHR1cmVkIHRoZXNlIGR1cmluZyB0aGUgcHJlcmVuZGVyXG4gICAgLy8gYW5kIGNhbiBsb2cgdGhlbSBoZXJlIGFuZCB0aGVuIHRlcm1pbmF0ZSB0aGUgYnVpbGQvdmFsaWRhdGluZyByZW5kZXJcbiAgICBjb25zdCBkeW5hbWljRXJyb3JzID0gZHluYW1pY1ZhbGlkYXRpb24uZHluYW1pY0Vycm9yc1xuICAgIGlmIChkeW5hbWljRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZHluYW1pY0Vycm9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsb2dEaXNhbGxvd2VkRHluYW1pY0Vycm9yKHdvcmtTdG9yZSwgZHluYW1pY0Vycm9yc1tpXSlcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IFN0YXRpY0dlbkJhaWxvdXRFcnJvcigpXG4gICAgfVxuXG4gICAgLy8gSWYgd2UgZ290IHRoaXMgZmFyIHRoZW4gdGhlIG9ubHkgb3RoZXIgdGhpbmcgdGhhdCBjb3VsZCBiZSBibG9ja2luZ1xuICAgIC8vIHRoZSByb290IGlzIGR5bmFtaWMgVmlld3BvcnQuIElmIHRoaXMgaXMgZHluYW1pYyB0aGVuXG4gICAgLy8geW91IG5lZWQgdG8gb3B0IGludG8gdGhhdCBieSBhZGRpbmcgYSBTdXNwZW5zZSBib3VuZGFyeSBhYm92ZSB0aGUgYm9keVxuICAgIC8vIHRvIGluZGljYXRlIHlvdXIgYXJlIG9rIHdpdGggZnVsbHkgZHluYW1pYyByZW5kZXJpbmcuXG4gICAgaWYgKGR5bmFtaWNWYWxpZGF0aW9uLmhhc0R5bmFtaWNWaWV3cG9ydCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCIgaGFzIGEgXFxgZ2VuZXJhdGVWaWV3cG9ydFxcYCB0aGF0IGRlcGVuZHMgb24gUmVxdWVzdCBkYXRhIChcXGBjb29raWVzKClcXGAsIGV0Yy4uLikgb3IgdW5jYWNoZWQgZXh0ZXJuYWwgZGF0YSAoXFxgZmV0Y2goLi4uKVxcYCwgZXRjLi4uKSB3aXRob3V0IGV4cGxpY2l0bHkgYWxsb3dpbmcgZnVsbHkgZHluYW1pYyByZW5kZXJpbmcuIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbmV4dC1wcmVyZW5kZXItZHluYW1pYy12aWV3cG9ydGBcbiAgICAgIClcbiAgICAgIHRocm93IG5ldyBTdGF0aWNHZW5CYWlsb3V0RXJyb3IoKVxuICAgIH1cblxuICAgIGlmIChwcmVsdWRlID09PSBQcmVsdWRlU3RhdGUuRW1wdHkpIHtcbiAgICAgIC8vIElmIHdlIGV2ZXIgZ2V0IHRoaXMgZmFyIHRoZW4gd2UgbWVzc2VkIHVwIHRoZSB0cmFja2luZyBvZiBpbnZhbGlkIGR5bmFtaWMuXG4gICAgICAvLyBXZSBzdGlsbCBhZGhlcmUgdG8gdGhlIGNvbnN0cmFpbnQgdGhhdCB5b3UgbXVzdCBwcm9kdWNlIGEgc2hlbGwgYnV0IGludml0ZSB0aGVcbiAgICAgIC8vIHVzZXIgdG8gcmVwb3J0IHRoaXMgYXMgYSBidWcgaW4gTmV4dC5qcy5cbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGBSb3V0ZSBcIiR7d29ya1N0b3JlLnJvdXRlfVwiIGRpZCBub3QgcHJvZHVjZSBhIHN0YXRpYyBzaGVsbCBhbmQgTmV4dC5qcyB3YXMgdW5hYmxlIHRvIGRldGVybWluZSBhIHJlYXNvbi4gVGhpcyBpcyBhIGJ1ZyBpbiBOZXh0LmpzLmBcbiAgICAgIClcbiAgICAgIHRocm93IG5ldyBTdGF0aWNHZW5CYWlsb3V0RXJyb3IoKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoXG4gICAgICBkeW5hbWljVmFsaWRhdGlvbi5oYXNBbGxvd2VkRHluYW1pYyA9PT0gZmFsc2UgJiZcbiAgICAgIGR5bmFtaWNWYWxpZGF0aW9uLmhhc0R5bmFtaWNNZXRhZGF0YVxuICAgICkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCIgaGFzIGEgXFxgZ2VuZXJhdGVNZXRhZGF0YVxcYCB0aGF0IGRlcGVuZHMgb24gUmVxdWVzdCBkYXRhIChcXGBjb29raWVzKClcXGAsIGV0Yy4uLikgb3IgdW5jYWNoZWQgZXh0ZXJuYWwgZGF0YSAoXFxgZmV0Y2goLi4uKVxcYCwgZXRjLi4uKSB3aGVuIHRoZSByZXN0IG9mIHRoZSByb3V0ZSBkb2VzIG5vdC4gU2VlIG1vcmUgaW5mbyBoZXJlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9uZXh0LXByZXJlbmRlci1keW5hbWljLW1ldGFkYXRhYFxuICAgICAgKVxuICAgICAgdGhyb3cgbmV3IFN0YXRpY0dlbkJhaWxvdXRFcnJvcigpXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0aWNTaGVsbERpc2FsbG93ZWREeW5hbWljUmVhc29ucyhcbiAgd29ya1N0b3JlOiBXb3JrU3RvcmUsXG4gIHByZWx1ZGU6IFByZWx1ZGVTdGF0ZSxcbiAgZHluYW1pY1ZhbGlkYXRpb246IER5bmFtaWNWYWxpZGF0aW9uU3RhdGUsXG4gIGNvbmZpZ0FsbG93c0Jsb2NraW5nOiBib29sZWFuXG4pOiBBcnJheTxFcnJvcj4ge1xuICBpZiAoY29uZmlnQWxsb3dzQmxvY2tpbmcgfHwgZHluYW1pY1ZhbGlkYXRpb24uaGFzU3VzcGVuc2VBYm92ZUJvZHkpIHtcbiAgICAvLyBUaGlzIHJvdXRlIGhhcyBvcHRlZCBpbnRvIGFsbG93aW5nIGZ1bGx5IGR5bmFtaWMgcmVuZGVyaW5nXG4gICAgLy8gYnkgaW5jbHVkaW5nIGEgU3VzcGVuc2UgYm91bmRhcnkgYWJvdmUgdGhlIGJvZHkuIEluIHRoaXMgY2FzZVxuICAgIC8vIGEgbGFjayBvZiBhIHNoZWxsIGlzIG5vdCBjb25zaWRlcmVkIGRpc2FsbG93ZWQgc28gd2Ugc2ltcGx5IHJldHVyblxuICAgIHJldHVybiBbXVxuICB9XG5cbiAgaWYgKHByZWx1ZGUgIT09IFByZWx1ZGVTdGF0ZS5GdWxsKSB7XG4gICAgLy8gV2UgZGlkbid0IGhhdmUgYW55IHN5bmMgYmFpbG91dHMgYnV0IHRoZXJlIG1heSBiZSB1c2VyIGNvZGUgd2hpY2hcbiAgICAvLyBibG9ja2VkIHRoZSByb290LiBXZSB3b3VsZCBoYXZlIGNhcHR1cmVkIHRoZXNlIGR1cmluZyB0aGUgcHJlcmVuZGVyXG4gICAgLy8gYW5kIGNhbiBsb2cgdGhlbSBoZXJlIGFuZCB0aGVuIHRlcm1pbmF0ZSB0aGUgYnVpbGQvdmFsaWRhdGluZyByZW5kZXJcbiAgICBjb25zdCBkeW5hbWljRXJyb3JzID0gZHluYW1pY1ZhbGlkYXRpb24uZHluYW1pY0Vycm9yc1xuICAgIGlmIChkeW5hbWljRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBkeW5hbWljRXJyb3JzXG4gICAgfVxuXG4gICAgaWYgKHByZWx1ZGUgPT09IFByZWx1ZGVTdGF0ZS5FbXB0eSkge1xuICAgICAgLy8gSWYgd2UgZXZlciBnZXQgdGhpcyBmYXIgdGhlbiB3ZSBtZXNzZWQgdXAgdGhlIHRyYWNraW5nIG9mIGludmFsaWQgZHluYW1pYy5cbiAgICAgIC8vIFdlIHN0aWxsIGFkaGVyZSB0byB0aGUgY29uc3RyYWludCB0aGF0IHlvdSBtdXN0IHByb2R1Y2UgYSBzaGVsbCBidXQgaW52aXRlIHRoZVxuICAgICAgLy8gdXNlciB0byByZXBvcnQgdGhpcyBhcyBhIGJ1ZyBpbiBOZXh0LmpzLlxuICAgICAgcmV0dXJuIFtcbiAgICAgICAgbmV3IEludmFyaWFudEVycm9yKFxuICAgICAgICAgIGBSb3V0ZSBcIiR7d29ya1N0b3JlLnJvdXRlfVwiIGRpZCBub3QgcHJvZHVjZSBhIHN0YXRpYyBzaGVsbCBhbmQgTmV4dC5qcyB3YXMgdW5hYmxlIHRvIGRldGVybWluZSBhIHJlYXNvbi5gXG4gICAgICAgICksXG4gICAgICBdXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIFdlIGhhdmUgYSBwcmVsdWRlIGJ1dCB3ZSBtaWdodCBzdGlsbCBoYXZlIGR5bmFtaWMgbWV0YWRhdGEgd2l0aG91dCBhbnkgb3RoZXIgZHluYW1pYyBhY2Nlc3NcbiAgICBpZiAoXG4gICAgICBkeW5hbWljVmFsaWRhdGlvbi5oYXNBbGxvd2VkRHluYW1pYyA9PT0gZmFsc2UgJiZcbiAgICAgIGR5bmFtaWNWYWxpZGF0aW9uLmR5bmFtaWNFcnJvcnMubGVuZ3RoID09PSAwICYmXG4gICAgICBkeW5hbWljVmFsaWRhdGlvbi5keW5hbWljTWV0YWRhdGFcbiAgICApIHtcbiAgICAgIHJldHVybiBbZHluYW1pY1ZhbGlkYXRpb24uZHluYW1pY01ldGFkYXRhXVxuICAgIH1cbiAgfVxuICAvLyBXZSBoYWQgYSBub24tZW1wdHkgcHJlbHVkZSBhbmQgdGhlcmUgYXJlIG5vIGR5bmFtaWMgaG9sZXNcbiAgcmV0dXJuIFtdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROYXZpZ2F0aW9uRGlzYWxsb3dlZER5bmFtaWNSZWFzb25zKFxuICB3b3JrU3RvcmU6IFdvcmtTdG9yZSxcbiAgcHJlbHVkZTogUHJlbHVkZVN0YXRlLFxuICBkeW5hbWljVmFsaWRhdGlvbjogSW5zdGFudFZhbGlkYXRpb25TdGF0ZSxcbiAgdmFsaWRhdGlvblNhbXBsZVRyYWNraW5nOiBJbnN0YW50VmFsaWRhdGlvblNhbXBsZVRyYWNraW5nIHwgbnVsbCxcbiAgYm91bmRhcnlTdGF0ZTogVmFsaWRhdGlvbkJvdW5kYXJ5VHJhY2tpbmdcbik6IEFycmF5PEVycm9yPiB7XG4gIC8vIElmIHdlIGhhdmUgZXJyb3JzIHJlbGF0ZWQgdG8gbWlzc2luZyBzYW1wbGVzLCB0aG9zZSBzaG91bGQgdGFrZSBwcmVjZWRlbmNlIG92ZXIgZXZlcnl0aGluZyBlbHNlLlxuICBpZiAodmFsaWRhdGlvblNhbXBsZVRyYWNraW5nKSB7XG4gICAgY29uc3QgeyBtaXNzaW5nU2FtcGxlRXJyb3JzIH0gPSB2YWxpZGF0aW9uU2FtcGxlVHJhY2tpbmdcbiAgICBpZiAobWlzc2luZ1NhbXBsZUVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gbWlzc2luZ1NhbXBsZUVycm9yc1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHsgdmFsaWRhdGlvblByZXZlbnRpbmdFcnJvcnMgfSA9IGR5bmFtaWNWYWxpZGF0aW9uXG4gIGlmICh2YWxpZGF0aW9uUHJldmVudGluZ0Vycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHZhbGlkYXRpb25QcmV2ZW50aW5nRXJyb3JzXG4gIH1cblxuICBpZiAoYm91bmRhcnlTdGF0ZS5yZW5kZXJlZElkcy5zaXplIDwgYm91bmRhcnlTdGF0ZS5leHBlY3RlZElkcy5zaXplKSB7XG4gICAgY29uc3QgeyB0aHJvd25FcnJvcnNPdXRzaWRlQm91bmRhcnksIGNyZWF0ZUluc3RhbnRTdGFjayB9ID1cbiAgICAgIGR5bmFtaWNWYWxpZGF0aW9uXG4gICAgaWYgKHRocm93bkVycm9yc091dHNpZGVCb3VuZGFyeS5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgUm91dGUgXCIke3dvcmtTdG9yZS5yb3V0ZX1cIjogQ291bGQgbm90IHZhbGlkYXRlIFxcYHVuc3RhYmxlX2luc3RhbnRcXGAgYmVjYXVzZSB0aGUgdGFyZ2V0IHNlZ21lbnQgd2FzIHByZXZlbnRlZCBmcm9tIHJlbmRlcmluZyBmb3IgYW4gdW5rbm93biByZWFzb24uYFxuICAgICAgY29uc3QgZXJyb3IgPVxuICAgICAgICBjcmVhdGVJbnN0YW50U3RhY2sgIT09IG51bGwgPyBjcmVhdGVJbnN0YW50U3RhY2soKSA6IG5ldyBFcnJvcigpXG4gICAgICBlcnJvci5uYW1lID0gJ0Vycm9yJ1xuICAgICAgZXJyb3IubWVzc2FnZSA9IG1lc3NhZ2VcbiAgICAgIHJldHVybiBbZXJyb3JdXG4gICAgfSBlbHNlIGlmICh0aHJvd25FcnJvcnNPdXRzaWRlQm91bmRhcnkubGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYFJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCI6IENvdWxkIG5vdCB2YWxpZGF0ZSBcXGB1bnN0YWJsZV9pbnN0YW50XFxgIGJlY2F1c2UgdGhlIHRhcmdldCBzZWdtZW50IHdhcyBwcmV2ZW50ZWQgZnJvbSByZW5kZXJpbmcsIGxpa2VseSBkdWUgdG8gdGhlIGZvbGxvd2luZyBlcnJvci5gXG4gICAgICBjb25zdCBlcnJvciA9XG4gICAgICAgIGNyZWF0ZUluc3RhbnRTdGFjayAhPT0gbnVsbCA/IGNyZWF0ZUluc3RhbnRTdGFjaygpIDogbmV3IEVycm9yKClcbiAgICAgIGVycm9yLm5hbWUgPSAnRXJyb3InXG4gICAgICBlcnJvci5tZXNzYWdlID0gbWVzc2FnZVxuICAgICAgcmV0dXJuIFtlcnJvciwgdGhyb3duRXJyb3JzT3V0c2lkZUJvdW5kYXJ5WzBdIGFzIEVycm9yXVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYFJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCI6IENvdWxkIG5vdCB2YWxpZGF0ZSBcXGB1bnN0YWJsZV9pbnN0YW50XFxgIGJlY2F1c2UgdGhlIHRhcmdldCBzZWdtZW50IHdhcyBwcmV2ZW50ZWQgZnJvbSByZW5kZXJpbmcsIGxpa2VseSBkdWUgdG8gb25lIG9mIHRoZSBmb2xsb3dpbmcgZXJyb3JzLmBcbiAgICAgIGNvbnN0IGVycm9yID1cbiAgICAgICAgY3JlYXRlSW5zdGFudFN0YWNrICE9PSBudWxsID8gY3JlYXRlSW5zdGFudFN0YWNrKCkgOiBuZXcgRXJyb3IoKVxuICAgICAgZXJyb3IubmFtZSA9ICdFcnJvcidcbiAgICAgIGVycm9yLm1lc3NhZ2UgPSBtZXNzYWdlXG4gICAgICByZXR1cm4gW2Vycm9yLCAuLi4odGhyb3duRXJyb3JzT3V0c2lkZUJvdW5kYXJ5IGFzIEVycm9yW10pXVxuICAgIH1cbiAgfVxuXG4gIC8vIE5PVEU6IFdlIGRvbid0IGNhcmUgYWJvdXQgU3VzcGVuc2UgYWJvdmUgYm9keSBoZXJlLFxuICAvLyB3ZSdyZSBvbmx5IGNvbmNlcm5lZCB3aXRoIHRoZSB2YWxpZGF0aW9uIGJvdW5kYXJ5XG4gIGlmIChwcmVsdWRlICE9PSBQcmVsdWRlU3RhdGUuRnVsbCkge1xuICAgIGNvbnN0IGR5bmFtaWNFcnJvcnMgPSBkeW5hbWljVmFsaWRhdGlvbi5keW5hbWljRXJyb3JzXG4gICAgaWYgKGR5bmFtaWNFcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGR5bmFtaWNFcnJvcnNcbiAgICB9XG5cbiAgICBpZiAocHJlbHVkZSA9PT0gUHJlbHVkZVN0YXRlLkVtcHR5KSB7XG4gICAgICAvLyBJZiBhIGNsaWVudCBjb21wb25lbnQgc3VzcGVuZGVkIHByZXZlbnRlZCB1cyBmcm9tIHJlbmRlcmluZyBhIHNoZWxsXG4gICAgICAvLyBidXQgZGlkbid0IGJsb2NrIHZhbGlkYXRpb24sIHdlIGRvbid0IHJlcXVpcmUgYSBwcmVsdWRlLlxuICAgICAgaWYgKGR5bmFtaWNWYWxpZGF0aW9uLmhhc0FsbG93ZWRDbGllbnREeW5hbWljQWJvdmVCb3VuZGFyeSkge1xuICAgICAgICByZXR1cm4gW11cbiAgICAgIH1cbiAgICAgIC8vIElmIHdlIGV2ZXIgZ2V0IHRoaXMgZmFyIHRoZW4gd2UgbWVzc2VkIHVwIHRoZSB0cmFja2luZyBvZiBpbnZhbGlkIGR5bmFtaWMuXG4gICAgICByZXR1cm4gW1xuICAgICAgICBuZXcgSW52YXJpYW50RXJyb3IoXG4gICAgICAgICAgYFJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCIgZmFpbGVkIHRvIHJlbmRlciBkdXJpbmcgaW5zdGFudCB2YWxpZGF0aW9uIGFuZCBOZXh0LmpzIHdhcyB1bmFibGUgdG8gZGV0ZXJtaW5lIGEgcmVhc29uLmBcbiAgICAgICAgKSxcbiAgICAgIF1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZHluYW1pY0Vycm9ycyA9IGR5bmFtaWNWYWxpZGF0aW9uLmR5bmFtaWNFcnJvcnNcbiAgICBpZiAoZHluYW1pY0Vycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gZHluYW1pY0Vycm9yc1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGR5bmFtaWNWYWxpZGF0aW9uLmhhc0FsbG93ZWREeW5hbWljID09PSBmYWxzZSAmJlxuICAgICAgZHluYW1pY1ZhbGlkYXRpb24uZHluYW1pY01ldGFkYXRhXG4gICAgKSB7XG4gICAgICByZXR1cm4gW2R5bmFtaWNWYWxpZGF0aW9uLmR5bmFtaWNNZXRhZGF0YV1cbiAgICB9XG4gIH1cbiAgLy8gV2UgaGFkIGEgbm9uLWVtcHR5IHByZWx1ZGUgYW5kIHRoZXJlIGFyZSBubyBkeW5hbWljIGhvbGVzXG4gIHJldHVybiBbXVxufVxuIl0sIm5hbWVzIjpbIkR5bmFtaWNIb2xlS2luZCIsIlBvc3Rwb25lIiwiUHJlbHVkZVN0YXRlIiwiYWJvcnRBbmRUaHJvd09uU3luY2hyb25vdXNSZXF1ZXN0RGF0YUFjY2VzcyIsImFib3J0T25TeW5jaHJvbm91c1BsYXRmb3JtSU9BY2Nlc3MiLCJhY2Nlc3NlZER5bmFtaWNEYXRhIiwiYW5ub3RhdGVEeW5hbWljQWNjZXNzIiwiY29uc3VtZUR5bmFtaWNBY2Nlc3MiLCJjcmVhdGVEeW5hbWljVHJhY2tpbmdTdGF0ZSIsImNyZWF0ZUR5bmFtaWNWYWxpZGF0aW9uU3RhdGUiLCJjcmVhdGVIYW5naW5nSW5wdXRBYm9ydFNpZ25hbCIsImNyZWF0ZUluc3RhbnRWYWxpZGF0aW9uU3RhdGUiLCJjcmVhdGVSZW5kZXJJbkJyb3dzZXJBYm9ydFNpZ25hbCIsImZvcm1hdER5bmFtaWNBUElBY2Nlc3NlcyIsImdldEZpcnN0RHluYW1pY1JlYXNvbiIsImdldE5hdmlnYXRpb25EaXNhbGxvd2VkRHluYW1pY1JlYXNvbnMiLCJnZXRTdGF0aWNTaGVsbERpc2FsbG93ZWREeW5hbWljUmVhc29ucyIsImlzRHluYW1pY1Bvc3Rwb25lIiwiaXNQcmVyZW5kZXJJbnRlcnJ1cHRlZEVycm9yIiwibG9nRGlzYWxsb3dlZER5bmFtaWNFcnJvciIsIm1hcmtDdXJyZW50U2NvcGVBc0R5bmFtaWMiLCJwb3N0cG9uZVdpdGhUcmFja2luZyIsInRocm93SWZEaXNhbGxvd2VkRHluYW1pYyIsInRocm93VG9JbnRlcnJ1cHRTdGF0aWNHZW5lcmF0aW9uIiwidHJhY2tBbGxvd2VkRHluYW1pY0FjY2VzcyIsInRyYWNrRHluYW1pY0RhdGFJbkR5bmFtaWNSZW5kZXIiLCJ0cmFja0R5bmFtaWNIb2xlSW5OYXZpZ2F0aW9uIiwidHJhY2tEeW5hbWljSG9sZUluUnVudGltZVNoZWxsIiwidHJhY2tEeW5hbWljSG9sZUluU3RhdGljU2hlbGwiLCJ0cmFja1Rocm93bkVycm9ySW5OYXZpZ2F0aW9uIiwidXNlRHluYW1pY1JvdXRlUGFyYW1zIiwidXNlRHluYW1pY1NlYXJjaFBhcmFtcyIsImhhc1Bvc3Rwb25lIiwiUmVhY3QiLCJ1bnN0YWJsZV9wb3N0cG9uZSIsImlzRGVidWdEeW5hbWljQWNjZXNzZXMiLCJkeW5hbWljQWNjZXNzZXMiLCJzeW5jRHluYW1pY0Vycm9yV2l0aFN0YWNrIiwiaGFzU3VzcGVuc2VBYm92ZUJvZHkiLCJoYXNEeW5hbWljTWV0YWRhdGEiLCJkeW5hbWljTWV0YWRhdGEiLCJoYXNEeW5hbWljVmlld3BvcnQiLCJoYXNBbGxvd2VkRHluYW1pYyIsImR5bmFtaWNFcnJvcnMiLCJ0cmFja2luZ1N0YXRlIiwiZXhwcmVzc2lvbiIsInN0b3JlIiwid29ya1VuaXRTdG9yZSIsInR5cGUiLCJmb3JjZUR5bmFtaWMiLCJmb3JjZVN0YXRpYyIsImR5bmFtaWNTaG91bGRFcnJvciIsIlN0YXRpY0dlbkJhaWxvdXRFcnJvciIsInJvdXRlIiwiZHluYW1pY1RyYWNraW5nIiwicmV2YWxpZGF0ZSIsImVyciIsIkR5bmFtaWNTZXJ2ZXJFcnJvciIsImR5bmFtaWNVc2FnZURlc2NyaXB0aW9uIiwiZHluYW1pY1VzYWdlU3RhY2siLCJzdGFjayIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInVzZWREeW5hbWljIiwicHJlcmVuZGVyU3RvcmUiLCJhYm9ydE9uU3luY2hyb25vdXNEeW5hbWljRGF0YUFjY2VzcyIsInJlYXNvbiIsImVycm9yIiwiY3JlYXRlUHJlcmVuZGVySW50ZXJydXB0ZWRFcnJvciIsImNvbnRyb2xsZXIiLCJhYm9ydCIsInB1c2giLCJFcnJvciIsInVuZGVmaW5lZCIsImVycm9yV2l0aFN0YWNrIiwicHJlcmVuZGVyU2lnbmFsIiwic2lnbmFsIiwiYWJvcnRlZCIsIndvcmtVbml0QXN5bmNTdG9yYWdlIiwiZ2V0U3RvcmUiLCJhc3NlcnRQb3N0cG9uZSIsImNyZWF0ZVBvc3Rwb25lUmVhc29uIiwibWVzc2FnZSIsImlzRHluYW1pY1Bvc3Rwb25lUmVhc29uIiwiaW5jbHVkZXMiLCJORVhUX1BSRVJFTkRFUl9JTlRFUlJVUFRFRCIsImRpZ2VzdCIsImxlbmd0aCIsInNlcnZlckR5bmFtaWMiLCJjbGllbnREeW5hbWljIiwiZmlsdGVyIiwiYWNjZXNzIiwibWFwIiwic3BsaXQiLCJzbGljZSIsImxpbmUiLCJqb2luIiwiQWJvcnRDb250cm9sbGVyIiwiQmFpbG91dFRvQ1NSRXJyb3IiLCJjYWNoZVNpZ25hbCIsImlucHV0UmVhZHkiLCJ0aGVuIiwic3RhZ2VkUmVuZGVyaW5nIiwid2FpdEZvclN0YWdlIiwiZ2V0UnVudGltZVN0YWdlIiwic2NoZWR1bGVPbk5leHRUaWNrIiwid29ya1N0b3JlIiwid29ya0FzeW5jU3RvcmFnZSIsImZhbGxiYWNrUGFyYW1zIiwiZmFsbGJhY2tSb3V0ZVBhcmFtcyIsInNpemUiLCJ1c2UiLCJtYWtlSGFuZ2luZ1Byb21pc2UiLCJyZW5kZXJTaWduYWwiLCJJbnZhcmlhbnRFcnJvciIsInRocm93Rm9yTWlzc2luZ1JlcXVlc3RTdG9yZSIsImhhc1N1c3BlbnNlUmVnZXgiLCJib2R5QW5kSW1wbGljaXRUYWdzIiwiaGFzU3VzcGVuc2VCZWZvcmVSb290TGF5b3V0V2l0aG91dEJvZHlPckltcGxpY2l0Qm9keVJlZ2V4IiwiUmVnRXhwIiwiUk9PVF9MQVlPVVRfQk9VTkRBUllfTkFNRSIsImhhc01ldGFkYXRhUmVnZXgiLCJNRVRBREFUQV9CT1VOREFSWV9OQU1FIiwiaGFzVmlld3BvcnRSZWdleCIsIlZJRVdQT1JUX0JPVU5EQVJZX05BTUUiLCJoYXNPdXRsZXRSZWdleCIsIk9VVExFVF9CT1VOREFSWV9OQU1FIiwiaGFzSW5zdGFudFZhbGlkYXRpb25Cb3VuZGFyeVJlZ2V4IiwiSU5TVEFOVF9WQUxJREFUSU9OX0JPVU5EQVJZX05BTUUiLCJjb21wb25lbnRTdGFjayIsImR5bmFtaWNWYWxpZGF0aW9uIiwidGVzdCIsImFkZEVycm9yQ29udGV4dCIsImNyZWF0ZUluc3RhbnRTdGFjayIsImhhc0FsbG93ZWRDbGllbnREeW5hbWljQWJvdmVCb3VuZGFyeSIsInZhbGlkYXRpb25QcmV2ZW50aW5nRXJyb3JzIiwidGhyb3duRXJyb3JzT3V0c2lkZUJvdW5kYXJ5Iiwia2luZCIsImJvdW5kYXJ5U3RhdGUiLCJ1c2FnZURlc2NyaXB0aW9uIiwiYm91bmRhcnlMb2NhdGlvbiIsImV4ZWMiLCJleHBlY3RlZElkcyIsInJlbmRlcmVkSWRzIiwic3VzcGVuc2VMb2NhdGlvbiIsImluZGV4Iiwic3luY0Vycm9yIiwiY2F1c2UiLCJ0aHJvd25WYWx1ZSIsIm93bmVyU3RhY2siLCJjYXB0dXJlT3duZXJTdGFjayIsIm5hbWUiLCJjb25zb2xlIiwiX19ORVhUX0RFVl9TRVJWRVIiLCJwcmVsdWRlIiwiaSIsImNvbmZpZ0FsbG93c0Jsb2NraW5nIiwidmFsaWRhdGlvblNhbXBsZVRyYWNraW5nIiwibWlzc2luZ1NhbXBsZUVycm9ycyJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js":
|
||
/*!*******************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js ***!
|
||
\*******************************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"INSTANT_VALIDATION_BOUNDARY_NAME\", ({\n enumerable: true,\n get: function() {\n return INSTANT_VALIDATION_BOUNDARY_NAME;\n }\n}));\nconst INSTANT_VALIDATION_BOUNDARY_NAME = '__next_instant_validation_boundary__';\n\n//# sourceMappingURL=boundary-constants.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2luc3RhbnQtdmFsaWRhdGlvbi9ib3VuZGFyeS1jb25zdGFudHMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixvRUFBbUU7QUFDbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRjs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL2FwcC1yZW5kZXIvaW5zdGFudC12YWxpZGF0aW9uL2JvdW5kYXJ5LWNvbnN0YW50cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIklOU1RBTlRfVkFMSURBVElPTl9CT1VOREFSWV9OQU1FXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBJTlNUQU5UX1ZBTElEQVRJT05fQk9VTkRBUllfTkFNRTtcbiAgICB9XG59KTtcbmNvbnN0IElOU1RBTlRfVkFMSURBVElPTl9CT1VOREFSWV9OQU1FID0gJ19fbmV4dF9pbnN0YW50X3ZhbGlkYXRpb25fYm91bmRhcnlfXyc7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJvdW5kYXJ5LWNvbnN0YW50cy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/app-render/instant-validation/instant-samples.js":
|
||
/*!****************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/app-render/instant-validation/instant-samples.js ***!
|
||
\****************************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n assertRootParamInSamples: function() {\n return assertRootParamInSamples;\n },\n createCookiesFromSample: function() {\n return createCookiesFromSample;\n },\n createDraftModeForValidation: function() {\n return createDraftModeForValidation;\n },\n createExhaustiveParamsProxy: function() {\n return createExhaustiveParamsProxy;\n },\n createExhaustiveSearchParamsProxy: function() {\n return createExhaustiveSearchParamsProxy;\n },\n createExhaustiveURLSearchParamsProxy: function() {\n return createExhaustiveURLSearchParamsProxy;\n },\n createHeadersFromSample: function() {\n return createHeadersFromSample;\n },\n createRelativeURLFromSamples: function() {\n return createRelativeURLFromSamples;\n },\n createValidationSampleTracking: function() {\n return createValidationSampleTracking;\n },\n trackMissingSampleError: function() {\n return trackMissingSampleError;\n },\n trackMissingSampleErrorAndThrow: function() {\n return trackMissingSampleErrorAndThrow;\n }\n});\nconst _cookies = __webpack_require__(/*! ../../web/spec-extension/cookies */ \"(ssr)/./node_modules/next/dist/server/web/spec-extension/cookies.js\");\nconst _requestcookies = __webpack_require__(/*! ../../web/spec-extension/adapters/request-cookies */ \"(ssr)/./node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.js\");\nconst _headers = __webpack_require__(/*! ../../web/spec-extension/adapters/headers */ \"(ssr)/./node_modules/next/dist/server/web/spec-extension/adapters/headers.js\");\nconst _getsegmentparam = __webpack_require__(/*! ../../../shared/lib/router/utils/get-segment-param */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/get-segment-param.js\");\nconst _parserelativeurl = __webpack_require__(/*! ../../../shared/lib/router/utils/parse-relative-url */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js\");\nconst _invarianterror = __webpack_require__(/*! ../../../shared/lib/invariant-error */ \"(ssr)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nconst _instantvalidationerror = __webpack_require__(/*! ./instant-validation-error */ \"(ssr)/./node_modules/next/dist/server/app-render/instant-validation/instant-validation-error.js\");\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ../work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nconst _reflectutils = __webpack_require__(/*! ../../../shared/lib/utils/reflect-utils */ \"(ssr)/./node_modules/next/dist/shared/lib/utils/reflect-utils.js\");\nfunction createValidationSampleTracking() {\n return {\n missingSampleErrors: []\n };\n}\nfunction getExpectedSampleTracking() {\n let validationSampleTracking = null;\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'request':\n case 'validation-client':\n // TODO(instant-validation-build): do we need any special handling for caches?\n validationSampleTracking = workUnitStore.validationSampleTracking ?? null;\n break;\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'prerender-client':\n case 'prerender':\n case 'prerender-runtime':\n case 'generate-static-params':\n break;\n default:\n workUnitStore;\n }\n }\n if (!validationSampleTracking) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected to have a workUnitStore that provides validationSampleTracking'), \"__NEXT_ERROR_CODE\", {\n value: \"E1110\",\n enumerable: false,\n configurable: true\n });\n }\n return validationSampleTracking;\n}\nfunction trackMissingSampleError(error) {\n const validationSampleTracking = getExpectedSampleTracking();\n validationSampleTracking.missingSampleErrors.push(error);\n}\nfunction trackMissingSampleErrorAndThrow(error) {\n // TODO(instant-validation-build): this should abort the render\n trackMissingSampleError(error);\n throw error;\n}\nfunction createCookiesFromSample(sampleCookies, route) {\n const declaredNames = new Set();\n const cookies = new _cookies.RequestCookies(new Headers());\n if (sampleCookies) {\n for (const cookie of sampleCookies){\n declaredNames.add(cookie.name);\n if (cookie.value !== null) {\n cookies.set(cookie.name, cookie.value);\n }\n }\n }\n const sealed = _requestcookies.RequestCookiesAdapter.seal(cookies);\n return new Proxy(sealed, {\n get (target, prop, receiver) {\n if (prop === 'has') {\n const originalMethod = Reflect.get(target, prop, receiver);\n const wrappedMethod = function(name) {\n if (!declaredNames.has(name)) {\n trackMissingSampleErrorAndThrow(createMissingCookieSampleError(route, name));\n }\n return originalMethod.call(target, name);\n };\n return wrappedMethod;\n }\n if (prop === 'get') {\n const originalMethod = Reflect.get(target, prop, receiver);\n const wrappedMethod = function(nameOrCookie) {\n let name;\n if (typeof nameOrCookie === 'string') {\n name = nameOrCookie;\n } else if (nameOrCookie && typeof nameOrCookie === 'object' && typeof nameOrCookie.name === 'string') {\n name = nameOrCookie.name;\n } else {\n // This is an invalid input. Pass it through to the original method so it can error.\n return originalMethod.call(target, nameOrCookie);\n }\n if (!declaredNames.has(name)) {\n trackMissingSampleErrorAndThrow(createMissingCookieSampleError(route, name));\n }\n return originalMethod.call(target, name);\n };\n return wrappedMethod;\n }\n // TODO(instant-validation-build): what should getAll do?\n // Maybe we should only allow it if there's an array (possibly empty?)\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nfunction createMissingCookieSampleError(route, name) {\n return Object.defineProperty(new _instantvalidationerror.InstantValidationError(`Route \"${route}\" accessed cookie \"${name}\" which is not defined in the \\`samples\\` ` + `of \\`unstable_instant\\`. Add it to the sample's \\`cookies\\` array, ` + `or \\`{ name: \"${name}\", value: null }\\` if it should be absent.`), \"__NEXT_ERROR_CODE\", {\n value: \"E1115\",\n enumerable: false,\n configurable: true\n });\n}\nfunction createHeadersFromSample(rawSampleHeaders, sampleCookies, route) {\n // If we have cookie samples, add a `cookie` header to match.\n // Accessing it will be implicitly allowed by the proxy --\n // if the user defined some cookies, accessing the \"cookie\" header is also fine.\n const sampleHeaders = rawSampleHeaders ? [\n ...rawSampleHeaders\n ] : [];\n if (sampleHeaders.find(([name])=>name.toLowerCase() === 'cookie')) {\n throw Object.defineProperty(new _instantvalidationerror.InstantValidationError('Invalid sample: Defining cookies via a \"cookie\" header is not supported. Use `cookies: [{ name: ..., value: ... }]` instead.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1111\",\n enumerable: false,\n configurable: true\n });\n }\n if (sampleCookies) {\n const cookieHeaderValue = sampleCookies.toString();\n sampleHeaders.push([\n 'cookie',\n // if the `cookies` samples were empty, or they were all `null`, then we have no cookies,\n // and the header isn't present, but should remains readable, so we set it to null.\n cookieHeaderValue !== '' ? cookieHeaderValue : null\n ]);\n }\n const declaredNames = new Set();\n const headersInit = {};\n for (const [name, value] of sampleHeaders){\n declaredNames.add(name.toLowerCase());\n if (value !== null) {\n headersInit[name.toLowerCase()] = value;\n }\n }\n const sealed = _headers.HeadersAdapter.seal(_headers.HeadersAdapter.from(headersInit));\n return new Proxy(sealed, {\n get (target, prop, receiver) {\n if (prop === 'get' || prop === 'has') {\n const originalMethod = Reflect.get(target, prop, receiver);\n const patchedMethod = function(rawName) {\n const name = rawName.toLowerCase();\n if (!declaredNames.has(name)) {\n trackMissingSampleErrorAndThrow(Object.defineProperty(new _instantvalidationerror.InstantValidationError(`Route \"${route}\" accessed header \"${name}\" which is not defined in the \\`samples\\` ` + `of \\`unstable_instant\\`. Add it to the sample's \\`headers\\` array, ` + `or \\`[\"${name}\", null]\\` if it should be absent.`), \"__NEXT_ERROR_CODE\", {\n value: \"E1116\",\n enumerable: false,\n configurable: true\n }));\n }\n // typescript can't reconcile a union of functions with a union of return types,\n // so we have to cast the original return type away\n return originalMethod.call(target, name);\n };\n return patchedMethod;\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nfunction createDraftModeForValidation() {\n // Create a minimal DraftModeProvider-compatible object\n // that always reports draft mode as disabled.\n //\n // private properties that can't be set from outside the class.\n return {\n get isEnabled () {\n return false;\n },\n enable () {\n throw Object.defineProperty(new Error('Draft mode cannot be enabled during build-time instant validation.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1092\",\n enumerable: false,\n configurable: true\n });\n },\n disable () {\n throw Object.defineProperty(new Error('Draft mode cannot be disabled during build-time instant validation.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1094\",\n enumerable: false,\n configurable: true\n });\n }\n };\n}\nfunction createExhaustiveParamsProxy(underlyingParams, declaredParamNames, route) {\n return new Proxy(underlyingParams, {\n get (target, prop, receiver) {\n if (typeof prop === 'string' && !_reflectutils.wellKnownProperties.has(prop) && // Only error when accessing a param that is part of the route but wasn't provided.\n // accessing properties that aren't expected to be a valid param value is fine.\n prop in underlyingParams && !declaredParamNames.has(prop)) {\n trackMissingSampleErrorAndThrow(Object.defineProperty(new _instantvalidationerror.InstantValidationError(`Route \"${route}\" accessed param \"${prop}\" which is not defined in the \\`samples\\` ` + `of \\`unstable_instant\\`. Add it to the sample's \\`params\\` object.`), \"__NEXT_ERROR_CODE\", {\n value: \"E1095\",\n enumerable: false,\n configurable: true\n }));\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nfunction createExhaustiveSearchParamsProxy(searchParams, declaredSearchParamNames, route) {\n return new Proxy(searchParams, {\n get (target, prop, receiver) {\n if (typeof prop === 'string' && !_reflectutils.wellKnownProperties.has(prop) && !declaredSearchParamNames.has(prop)) {\n trackMissingSampleErrorAndThrow(createMissingSearchParamSampleError(route, prop));\n }\n return Reflect.get(target, prop, receiver);\n },\n has (target, prop) {\n if (typeof prop === 'string' && !_reflectutils.wellKnownProperties.has(prop) && !declaredSearchParamNames.has(prop)) {\n trackMissingSampleErrorAndThrow(createMissingSearchParamSampleError(route, prop));\n }\n return Reflect.has(target, prop);\n }\n });\n}\nfunction createExhaustiveURLSearchParamsProxy(searchParams, declaredSearchParamNames, route) {\n return new Proxy(searchParams, {\n get (target, prop, receiver) {\n // Intercept method calls that access specific param names\n if (prop === 'get' || prop === 'getAll' || prop === 'has') {\n const originalMathod = Reflect.get(target, prop, receiver);\n return (name)=>{\n if (typeof name === 'string' && !declaredSearchParamNames.has(name)) {\n trackMissingSampleErrorAndThrow(createMissingSearchParamSampleError(route, name));\n }\n return originalMathod.call(target, name);\n };\n }\n const value = Reflect.get(target, prop, receiver);\n // Prevent `TypeError: Value of \"this\" must be of type URLSearchParams` for methods\n if (typeof value === 'function' && !Object.hasOwn(target, prop)) {\n return value.bind(target);\n }\n return value;\n }\n });\n}\nfunction createMissingSearchParamSampleError(route, name) {\n return Object.defineProperty(new _instantvalidationerror.InstantValidationError(`Route \"${route}\" accessed searchParam \"${name}\" which is not defined in the \\`samples\\` ` + `of \\`unstable_instant\\`. Add it to the sample's \\`searchParams\\` object, ` + `or \\`{ \"${name}\": null }\\` if it should be absent.`), \"__NEXT_ERROR_CODE\", {\n value: \"E1098\",\n enumerable: false,\n configurable: true\n });\n}\nfunction createRelativeURLFromSamples(route, sampleParams, sampleSearchParams) {\n // Build searchParams query object and URL search string from sample\n const pathname = createPathnameFromRouteAndSampleParams(route, sampleParams ?? {});\n let search = '';\n if (sampleSearchParams) {\n const qs = createURLSearchParamsFromSample(sampleSearchParams).toString();\n if (qs) {\n search = '?' + qs;\n }\n }\n return (0, _parserelativeurl.parseRelativeUrl)(pathname + search, undefined, true);\n}\nfunction createURLSearchParamsFromSample(sampleSearchParams) {\n const result = new URLSearchParams();\n if (sampleSearchParams) {\n for (const [key, value] of Object.entries(sampleSearchParams)){\n if (value === null || value === undefined) continue;\n if (Array.isArray(value)) {\n for (const v of value){\n result.append(key, v);\n }\n } else {\n result.set(key, value);\n }\n }\n }\n return result;\n}\n/**\n * Substitute sample params into `workStore.route` to create a plausible pathname.\n * TODO(instant-validation-build): this logic is somewhat hacky and likely incomplete,\n * but it should be good enough for some initial testing.\n */ function createPathnameFromRouteAndSampleParams(route, params) {\n let interpolatedSegments = [];\n const rawSegments = route.split('/');\n for (const rawSegment of rawSegments){\n const param = (0, _getsegmentparam.getSegmentParam)(rawSegment);\n if (param) {\n switch(param.paramType){\n case 'catchall':\n case 'optional-catchall':\n {\n let paramValue = params[param.paramName];\n if (paramValue === undefined) {\n // The value for the param was not provided. `usePathname` will detect this and throw\n // before this can surface to userspace. Use `[...NAME]` as a placeholder for the param value\n // in case it pops up somewhere unexpectedly.\n paramValue = [\n rawSegment\n ];\n } else if (!Array.isArray(paramValue)) {\n // NOTE: this happens outside of render, so we don't need `trackMissingSampleErrorAndThrow`\n throw Object.defineProperty(new _instantvalidationerror.InstantValidationError(`Expected sample param value for segment '${rawSegment}' to be an array of strings, got ${typeof paramValue}`), \"__NEXT_ERROR_CODE\", {\n value: \"E1104\",\n enumerable: false,\n configurable: true\n });\n }\n interpolatedSegments.push(...paramValue.map((v)=>encodeURIComponent(v)));\n break;\n }\n case 'dynamic':\n {\n let paramValue = params[param.paramName];\n if (paramValue === undefined) {\n // The value for the param was not provided. `usePathname` will detect this and throw\n // before this can surface to userspace. Use `[NAME]` as a placeholder for the param value\n // in case it pops up somewhere unexpectedly.\n paramValue = rawSegment;\n } else if (typeof paramValue !== 'string') {\n // NOTE: this happens outside of render, so we don't need `trackMissingSampleErrorAndThrow`\n throw Object.defineProperty(new _instantvalidationerror.InstantValidationError(`Expected sample param value for segment '${rawSegment}' to be a string, got ${typeof paramValue}`), \"__NEXT_ERROR_CODE\", {\n value: \"E1108\",\n enumerable: false,\n configurable: true\n });\n }\n interpolatedSegments.push(encodeURIComponent(paramValue));\n break;\n }\n case 'catchall-intercepted-(..)(..)':\n case 'catchall-intercepted-(.)':\n case 'catchall-intercepted-(..)':\n case 'catchall-intercepted-(...)':\n case 'dynamic-intercepted-(..)(..)':\n case 'dynamic-intercepted-(.)':\n case 'dynamic-intercepted-(..)':\n case 'dynamic-intercepted-(...)':\n {\n // TODO(instant-validation-build): i don't know how these are supposed to work, or if we can even get them here\n throw Object.defineProperty(new _invarianterror.InvariantError('Not implemented: Validation of interception routes'), \"__NEXT_ERROR_CODE\", {\n value: \"E1106\",\n enumerable: false,\n configurable: true\n });\n }\n default:\n {\n param.paramType;\n }\n }\n } else {\n interpolatedSegments.push(rawSegment);\n }\n }\n return interpolatedSegments.join('/');\n}\nfunction assertRootParamInSamples(workStore, sampleParams, paramName) {\n if (sampleParams && paramName in sampleParams) {\n // The param is defined in the samples.\n } else {\n const route = workStore.route;\n trackMissingSampleErrorAndThrow(Object.defineProperty(new _instantvalidationerror.InstantValidationError(`Route \"${route}\" accessed root param \"${paramName}\" which is not defined in the \\`samples\\` ` + `of \\`unstable_instant\\`. Add it to the sample's \\`params\\` object.`), \"__NEXT_ERROR_CODE\", {\n value: \"E1114\",\n enumerable: false,\n configurable: true\n }));\n }\n}\n\n//# sourceMappingURL=instant-samples.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2luc3RhbnQtdmFsaWRhdGlvbi9pbnN0YW50LXNhbXBsZXMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBWUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsaUJBQWlCLG1CQUFPLENBQUMsNkdBQWtDO0FBQzNELHdCQUF3QixtQkFBTyxDQUFDLCtJQUFtRDtBQUNuRixpQkFBaUIsbUJBQU8sQ0FBQywrSEFBMkM7QUFDcEUseUJBQXlCLG1CQUFPLENBQUMsdUlBQW9EO0FBQ3JGLDBCQUEwQixtQkFBTyxDQUFDLHlJQUFxRDtBQUN2Rix3QkFBd0IsbUJBQU8sQ0FBQyx5R0FBcUM7QUFDckUsZ0NBQWdDLG1CQUFPLENBQUMsbUlBQTRCO0FBQ3BFLHNDQUFzQyxtQkFBTyxDQUFDLCtFQUFxQztBQUNuRixzQkFBc0IsbUJBQU8sQ0FBQyxpSEFBeUM7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsMkhBQTJILE1BQU0seUJBQXlCLFVBQVU7QUFDcEs7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2luc3RhbnQtdmFsaWRhdGlvbi9pbnN0YW50LXNhbXBsZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBhc3NlcnRSb290UGFyYW1JblNhbXBsZXM6IG51bGwsXG4gICAgY3JlYXRlQ29va2llc0Zyb21TYW1wbGU6IG51bGwsXG4gICAgY3JlYXRlRHJhZnRNb2RlRm9yVmFsaWRhdGlvbjogbnVsbCxcbiAgICBjcmVhdGVFeGhhdXN0aXZlUGFyYW1zUHJveHk6IG51bGwsXG4gICAgY3JlYXRlRXhoYXVzdGl2ZVNlYXJjaFBhcmFtc1Byb3h5OiBudWxsLFxuICAgIGNyZWF0ZUV4aGF1c3RpdmVVUkxTZWFyY2hQYXJhbXNQcm94eTogbnVsbCxcbiAgICBjcmVhdGVIZWFkZXJzRnJvbVNhbXBsZTogbnVsbCxcbiAgICBjcmVhdGVSZWxhdGl2ZVVSTEZyb21TYW1wbGVzOiBudWxsLFxuICAgIGNyZWF0ZVZhbGlkYXRpb25TYW1wbGVUcmFja2luZzogbnVsbCxcbiAgICB0cmFja01pc3NpbmdTYW1wbGVFcnJvcjogbnVsbCxcbiAgICB0cmFja01pc3NpbmdTYW1wbGVFcnJvckFuZFRocm93OiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIGFzc2VydFJvb3RQYXJhbUluU2FtcGxlczogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBhc3NlcnRSb290UGFyYW1JblNhbXBsZXM7XG4gICAgfSxcbiAgICBjcmVhdGVDb29raWVzRnJvbVNhbXBsZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVDb29raWVzRnJvbVNhbXBsZTtcbiAgICB9LFxuICAgIGNyZWF0ZURyYWZ0TW9kZUZvclZhbGlkYXRpb246IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlRHJhZnRNb2RlRm9yVmFsaWRhdGlvbjtcbiAgICB9LFxuICAgIGNyZWF0ZUV4aGF1c3RpdmVQYXJhbXNQcm94eTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVFeGhhdXN0aXZlUGFyYW1zUHJveHk7XG4gICAgfSxcbiAgICBjcmVhdGVFeGhhdXN0aXZlU2VhcmNoUGFyYW1zUHJveHk6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlRXhoYXVzdGl2ZVNlYXJjaFBhcmFtc1Byb3h5O1xuICAgIH0sXG4gICAgY3JlYXRlRXhoYXVzdGl2ZVVSTFNlYXJjaFBhcmFtc1Byb3h5OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUV4aGF1c3RpdmVVUkxTZWFyY2hQYXJhbXNQcm94eTtcbiAgICB9LFxuICAgIGNyZWF0ZUhlYWRlcnNGcm9tU2FtcGxlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUhlYWRlcnNGcm9tU2FtcGxlO1xuICAgIH0sXG4gICAgY3JlYXRlUmVsYXRpdmVVUkxGcm9tU2FtcGxlczogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVSZWxhdGl2ZVVSTEZyb21TYW1wbGVzO1xuICAgIH0sXG4gICAgY3JlYXRlVmFsaWRhdGlvblNhbXBsZVRyYWNraW5nOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVZhbGlkYXRpb25TYW1wbGVUcmFja2luZztcbiAgICB9LFxuICAgIHRyYWNrTWlzc2luZ1NhbXBsZUVycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRyYWNrTWlzc2luZ1NhbXBsZUVycm9yO1xuICAgIH0sXG4gICAgdHJhY2tNaXNzaW5nU2FtcGxlRXJyb3JBbmRUaHJvdzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0cmFja01pc3NpbmdTYW1wbGVFcnJvckFuZFRocm93O1xuICAgIH1cbn0pO1xuY29uc3QgX2Nvb2tpZXMgPSByZXF1aXJlKFwiLi4vLi4vd2ViL3NwZWMtZXh0ZW5zaW9uL2Nvb2tpZXNcIik7XG5jb25zdCBfcmVxdWVzdGNvb2tpZXMgPSByZXF1aXJlKFwiLi4vLi4vd2ViL3NwZWMtZXh0ZW5zaW9uL2FkYXB0ZXJzL3JlcXVlc3QtY29va2llc1wiKTtcbmNvbnN0IF9oZWFkZXJzID0gcmVxdWlyZShcIi4uLy4uL3dlYi9zcGVjLWV4dGVuc2lvbi9hZGFwdGVycy9oZWFkZXJzXCIpO1xuY29uc3QgX2dldHNlZ21lbnRwYXJhbSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9nZXQtc2VnbWVudC1wYXJhbVwiKTtcbmNvbnN0IF9wYXJzZXJlbGF0aXZldXJsID0gcmVxdWlyZShcIi4uLy4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhcnNlLXJlbGF0aXZlLXVybFwiKTtcbmNvbnN0IF9pbnZhcmlhbnRlcnJvciA9IHJlcXVpcmUoXCIuLi8uLi8uLi9zaGFyZWQvbGliL2ludmFyaWFudC1lcnJvclwiKTtcbmNvbnN0IF9pbnN0YW50dmFsaWRhdGlvbmVycm9yID0gcmVxdWlyZShcIi4vaW5zdGFudC12YWxpZGF0aW9uLWVycm9yXCIpO1xuY29uc3QgX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwgPSByZXF1aXJlKFwiLi4vd29yay11bml0LWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWxcIik7XG5jb25zdCBfcmVmbGVjdHV0aWxzID0gcmVxdWlyZShcIi4uLy4uLy4uL3NoYXJlZC9saWIvdXRpbHMvcmVmbGVjdC11dGlsc1wiKTtcbmZ1bmN0aW9uIGNyZWF0ZVZhbGlkYXRpb25TYW1wbGVUcmFja2luZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBtaXNzaW5nU2FtcGxlRXJyb3JzOiBbXVxuICAgIH07XG59XG5mdW5jdGlvbiBnZXRFeHBlY3RlZFNhbXBsZVRyYWNraW5nKCkge1xuICAgIGxldCB2YWxpZGF0aW9uU2FtcGxlVHJhY2tpbmcgPSBudWxsO1xuICAgIGNvbnN0IHdvcmtVbml0U3RvcmUgPSBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICh3b3JrVW5pdFN0b3JlKSB7XG4gICAgICAgIHN3aXRjaCh3b3JrVW5pdFN0b3JlLnR5cGUpe1xuICAgICAgICAgICAgY2FzZSAncmVxdWVzdCc6XG4gICAgICAgICAgICBjYXNlICd2YWxpZGF0aW9uLWNsaWVudCc6XG4gICAgICAgICAgICAgICAgLy8gVE9ETyhpbnN0YW50LXZhbGlkYXRpb24tYnVpbGQpOiBkbyB3ZSBuZWVkIGFueSBzcGVjaWFsIGhhbmRsaW5nIGZvciBjYWNoZXM/XG4gICAgICAgICAgICAgICAgdmFsaWRhdGlvblNhbXBsZVRyYWNraW5nID0gd29ya1VuaXRTdG9yZS52YWxpZGF0aW9uU2FtcGxlVHJhY2tpbmcgPz8gbnVsbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByaXZhdGUtY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAndW5zdGFibGUtY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcHByJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgICAgICAgIGNhc2UgJ2dlbmVyYXRlLXN0YXRpYy1wYXJhbXMnOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB3b3JrVW5pdFN0b3JlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICghdmFsaWRhdGlvblNhbXBsZVRyYWNraW5nKSB7XG4gICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdFeHBlY3RlZCB0byBoYXZlIGEgd29ya1VuaXRTdG9yZSB0aGF0IHByb3ZpZGVzIHZhbGlkYXRpb25TYW1wbGVUcmFja2luZycpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgIHZhbHVlOiBcIkUxMTEwXCIsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkYXRpb25TYW1wbGVUcmFja2luZztcbn1cbmZ1bmN0aW9uIHRyYWNrTWlzc2luZ1NhbXBsZUVycm9yKGVycm9yKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvblNhbXBsZVRyYWNraW5nID0gZ2V0RXhwZWN0ZWRTYW1wbGVUcmFja2luZygpO1xuICAgIHZhbGlkYXRpb25TYW1wbGVUcmFja2luZy5taXNzaW5nU2FtcGxlRXJyb3JzLnB1c2goZXJyb3IpO1xufVxuZnVuY3Rpb24gdHJhY2tNaXNzaW5nU2FtcGxlRXJyb3JBbmRUaHJvdyhlcnJvcikge1xuICAgIC8vIFRPRE8oaW5zdGFudC12YWxpZGF0aW9uLWJ1aWxkKTogdGhpcyBzaG91bGQgYWJvcnQgdGhlIHJlbmRlclxuICAgIHRyYWNrTWlzc2luZ1NhbXBsZUVycm9yKGVycm9yKTtcbiAgICB0aHJvdyBlcnJvcjtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUNvb2tpZXNGcm9tU2FtcGxlKHNhbXBsZUNvb2tpZXMsIHJvdXRlKSB7XG4gICAgY29uc3QgZGVjbGFyZWROYW1lcyA9IG5ldyBTZXQoKTtcbiAgICBjb25zdCBjb29raWVzID0gbmV3IF9jb29raWVzLlJlcXVlc3RDb29raWVzKG5ldyBIZWFkZXJzKCkpO1xuICAgIGlmIChzYW1wbGVDb29raWVzKSB7XG4gICAgICAgIGZvciAoY29uc3QgY29va2llIG9mIHNhbXBsZUNvb2tpZXMpe1xuICAgICAgICAgICAgZGVjbGFyZWROYW1lcy5hZGQoY29va2llLm5hbWUpO1xuICAgICAgICAgICAgaWYgKGNvb2tpZS52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvb2tpZXMuc2V0KGNvb2tpZS5uYW1lLCBjb29raWUudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHNlYWxlZCA9IF9yZXF1ZXN0Y29va2llcy5SZXF1ZXN0Q29va2llc0FkYXB0ZXIuc2VhbChjb29raWVzKTtcbiAgICByZXR1cm4gbmV3IFByb3h5KHNlYWxlZCwge1xuICAgICAgICBnZXQgKHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIGlmIChwcm9wID09PSAnaGFzJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICAgICAgY29uc3Qgd3JhcHBlZE1ldGhvZCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWNsYXJlZE5hbWVzLmhhcyhuYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tNaXNzaW5nU2FtcGxlRXJyb3JBbmRUaHJvdyhjcmVhdGVNaXNzaW5nQ29va2llU2FtcGxlRXJyb3Iocm91dGUsIG5hbWUpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuY2FsbCh0YXJnZXQsIG5hbWUpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWRNZXRob2Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJvcCA9PT0gJ2dldCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZWRNZXRob2QgPSBmdW5jdGlvbihuYW1lT3JDb29raWUpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbmFtZU9yQ29va2llID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWVPckNvb2tpZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lT3JDb29raWUgJiYgdHlwZW9mIG5hbWVPckNvb2tpZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG5hbWVPckNvb2tpZS5uYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWVPckNvb2tpZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBpbnZhbGlkIGlucHV0LiBQYXNzIGl0IHRocm91Z2ggdG8gdGhlIG9yaWdpbmFsIG1ldGhvZCBzbyBpdCBjYW4gZXJyb3IuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuY2FsbCh0YXJnZXQsIG5hbWVPckNvb2tpZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWNsYXJlZE5hbWVzLmhhcyhuYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tNaXNzaW5nU2FtcGxlRXJyb3JBbmRUaHJvdyhjcmVhdGVNaXNzaW5nQ29va2llU2FtcGxlRXJyb3Iocm91dGUsIG5hbWUpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuY2FsbCh0YXJnZXQsIG5hbWUpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWRNZXRob2Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBUT0RPKGluc3RhbnQtdmFsaWRhdGlvbi1idWlsZCk6IHdoYXQgc2hvdWxkIGdldEFsbCBkbz9cbiAgICAgICAgICAgIC8vIE1heWJlIHdlIHNob3VsZCBvbmx5IGFsbG93IGl0IGlmIHRoZXJlJ3MgYW4gYXJyYXkgKHBvc3NpYmx5IGVtcHR5PylcbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlTWlzc2luZ0Nvb2tpZVNhbXBsZUVycm9yKHJvdXRlLCBuYW1lKSB7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2luc3RhbnR2YWxpZGF0aW9uZXJyb3IuSW5zdGFudFZhbGlkYXRpb25FcnJvcihgUm91dGUgXCIke3JvdXRlfVwiIGFjY2Vzc2VkIGNvb2tpZSBcIiR7bmFtZX1cIiB3aGljaCBpcyBub3QgZGVmaW5lZCBpbiB0aGUgXFxgc2FtcGxlc1xcYCBgICsgYG9mIFxcYHVuc3RhYmxlX2luc3RhbnRcXGAuIEFkZCBpdCB0byB0aGUgc2FtcGxlJ3MgXFxgY29va2llc1xcYCBhcnJheSwgYCArIGBvciBcXGB7IG5hbWU6IFwiJHtuYW1lfVwiLCB2YWx1ZTogbnVsbCB9XFxgIGlmIGl0IHNob3VsZCBiZSBhYnNlbnQuYCksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICB2YWx1ZTogXCJFMTExNVwiLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG59XG5mdW5jdGlvbiBjcmVhdGVIZWFkZXJzRnJvbVNhbXBsZShyYXdTYW1wbGVIZWFkZXJzLCBzYW1wbGVDb29raWVzLCByb3V0ZSkge1xuICAgIC8vIElmIHdlIGhhdmUgY29va2llIHNhbXBsZXMsIGFkZCBhIGBjb29raWVgIGhlYWRlciB0byBtYXRjaC5cbiAgICAvLyBBY2Nlc3NpbmcgaXQgd2lsbCBiZSBpbXBsaWNpdGx5IGFsbG93ZWQgYnkgdGhlIHByb3h5IC0tXG4gICAgLy8gaWYgdGhlIHVzZXIgZGVmaW5lZCBzb21lIGNvb2tpZXMsIGFjY2Vzc2luZyB0aGUgXCJjb29raWVcIiBoZWFkZXIgaXMgYWxzbyBmaW5lLlxuICAgIGNvbnN0IHNhbXBsZUhlYWRlcnMgPSByYXdTYW1wbGVIZWFkZXJzID8gW1xuICAgICAgICAuLi5yYXdTYW1wbGVIZWFkZXJzXG4gICAgXSA6IFtdO1xuICAgIGlmIChzYW1wbGVIZWFkZXJzLmZpbmQoKFtuYW1lXSk9Pm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2Nvb2tpZScpKSB7XG4gICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2luc3RhbnR2YWxpZGF0aW9uZXJyb3IuSW5zdGFudFZhbGlkYXRpb25FcnJvcignSW52YWxpZCBzYW1wbGU6IERlZmluaW5nIGNvb2tpZXMgdmlhIGEgXCJjb29raWVcIiBoZWFkZXIgaXMgbm90IHN1cHBvcnRlZC4gVXNlIGBjb29raWVzOiBbeyBuYW1lOiAuLi4sIHZhbHVlOiAuLi4gfV1gIGluc3RlYWQuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgdmFsdWU6IFwiRTExMTFcIixcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoc2FtcGxlQ29va2llcykge1xuICAgICAgICBjb25zdCBjb29raWVIZWFkZXJWYWx1ZSA9IHNhbXBsZUNvb2tpZXMudG9TdHJpbmcoKTtcbiAgICAgICAgc2FtcGxlSGVhZGVycy5wdXNoKFtcbiAgICAgICAgICAgICdjb29raWUnLFxuICAgICAgICAgICAgLy8gaWYgdGhlIGBjb29raWVzYCBzYW1wbGVzIHdlcmUgZW1wdHksIG9yIHRoZXkgd2VyZSBhbGwgYG51bGxgLCB0aGVuIHdlIGhhdmUgbm8gY29va2llcyxcbiAgICAgICAgICAgIC8vIGFuZCB0aGUgaGVhZGVyIGlzbid0IHByZXNlbnQsIGJ1dCBzaG91bGQgcmVtYWlucyByZWFkYWJsZSwgc28gd2Ugc2V0IGl0IHRvIG51bGwuXG4gICAgICAgICAgICBjb29raWVIZWFkZXJWYWx1ZSAhPT0gJycgPyBjb29raWVIZWFkZXJWYWx1ZSA6IG51bGxcbiAgICAgICAgXSk7XG4gICAgfVxuICAgIGNvbnN0IGRlY2xhcmVkTmFtZXMgPSBuZXcgU2V0KCk7XG4gICAgY29uc3QgaGVhZGVyc0luaXQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2Ygc2FtcGxlSGVhZGVycyl7XG4gICAgICAgIGRlY2xhcmVkTmFtZXMuYWRkKG5hbWUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVyc0luaXRbbmFtZS50b0xvd2VyQ2FzZSgpXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHNlYWxlZCA9IF9oZWFkZXJzLkhlYWRlcnNBZGFwdGVyLnNlYWwoX2hlYWRlcnMuSGVhZGVyc0FkYXB0ZXIuZnJvbShoZWFkZXJzSW5pdCkpO1xuICAgIHJldHVybiBuZXcgUHJveHkoc2VhbGVkLCB7XG4gICAgICAgIGdldCAodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKHByb3AgPT09ICdnZXQnIHx8IHByb3AgPT09ICdoYXMnKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRjaGVkTWV0aG9kID0gZnVuY3Rpb24ocmF3TmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gcmF3TmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWRlY2xhcmVkTmFtZXMuaGFzKG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFja01pc3NpbmdTYW1wbGVFcnJvckFuZFRocm93KE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2luc3RhbnR2YWxpZGF0aW9uZXJyb3IuSW5zdGFudFZhbGlkYXRpb25FcnJvcihgUm91dGUgXCIke3JvdXRlfVwiIGFjY2Vzc2VkIGhlYWRlciBcIiR7bmFtZX1cIiB3aGljaCBpcyBub3QgZGVmaW5lZCBpbiB0aGUgXFxgc2FtcGxlc1xcYCBgICsgYG9mIFxcYHVuc3RhYmxlX2luc3RhbnRcXGAuIEFkZCBpdCB0byB0aGUgc2FtcGxlJ3MgXFxgaGVhZGVyc1xcYCBhcnJheSwgYCArIGBvciBcXGBbXCIke25hbWV9XCIsIG51bGxdXFxgIGlmIGl0IHNob3VsZCBiZSBhYnNlbnQuYCksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkUxMTE2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gdHlwZXNjcmlwdCBjYW4ndCByZWNvbmNpbGUgYSB1bmlvbiBvZiBmdW5jdGlvbnMgd2l0aCBhIHVuaW9uIG9mIHJldHVybiB0eXBlcyxcbiAgICAgICAgICAgICAgICAgICAgLy8gc28gd2UgaGF2ZSB0byBjYXN0IHRoZSBvcmlnaW5hbCByZXR1cm4gdHlwZSBhd2F5XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbE1ldGhvZC5jYWxsKHRhcmdldCwgbmFtZSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGF0Y2hlZE1ldGhvZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlRHJhZnRNb2RlRm9yVmFsaWRhdGlvbigpIHtcbiAgICAvLyBDcmVhdGUgYSBtaW5pbWFsIERyYWZ0TW9kZVByb3ZpZGVyLWNvbXBhdGlibGUgb2JqZWN0XG4gICAgLy8gdGhhdCBhbHdheXMgcmVwb3J0cyBkcmFmdCBtb2RlIGFzIGRpc2FibGVkLlxuICAgIC8vXG4gICAgLy8gcHJpdmF0ZSBwcm9wZXJ0aWVzIHRoYXQgY2FuJ3QgYmUgc2V0IGZyb20gb3V0c2lkZSB0aGUgY2xhc3MuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0IGlzRW5hYmxlZCAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIGVuYWJsZSAoKSB7XG4gICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKCdEcmFmdCBtb2RlIGNhbm5vdCBiZSBlbmFibGVkIGR1cmluZyBidWlsZC10aW1lIGluc3RhbnQgdmFsaWRhdGlvbi4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiRTEwOTJcIixcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBkaXNhYmxlICgpIHtcbiAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoJ0RyYWZ0IG1vZGUgY2Fubm90IGJlIGRpc2FibGVkIGR1cmluZyBidWlsZC10aW1lIGluc3RhbnQgdmFsaWRhdGlvbi4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiRTEwOTRcIixcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUV4aGF1c3RpdmVQYXJhbXNQcm94eSh1bmRlcmx5aW5nUGFyYW1zLCBkZWNsYXJlZFBhcmFtTmFtZXMsIHJvdXRlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm94eSh1bmRlcmx5aW5nUGFyYW1zLCB7XG4gICAgICAgIGdldCAodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJyAmJiAhX3JlZmxlY3R1dGlscy53ZWxsS25vd25Qcm9wZXJ0aWVzLmhhcyhwcm9wKSAmJiAvLyBPbmx5IGVycm9yIHdoZW4gYWNjZXNzaW5nIGEgcGFyYW0gdGhhdCBpcyBwYXJ0IG9mIHRoZSByb3V0ZSBidXQgd2Fzbid0IHByb3ZpZGVkLlxuICAgICAgICAgICAgLy8gYWNjZXNzaW5nIHByb3BlcnRpZXMgdGhhdCBhcmVuJ3QgZXhwZWN0ZWQgdG8gYmUgYSB2YWxpZCBwYXJhbSB2YWx1ZSBpcyBmaW5lLlxuICAgICAgICAgICAgcHJvcCBpbiB1bmRlcmx5aW5nUGFyYW1zICYmICFkZWNsYXJlZFBhcmFtTmFtZXMuaGFzKHByb3ApKSB7XG4gICAgICAgICAgICAgICAgdHJhY2tNaXNzaW5nU2FtcGxlRXJyb3JBbmRUaHJvdyhPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnN0YW50dmFsaWRhdGlvbmVycm9yLkluc3RhbnRWYWxpZGF0aW9uRXJyb3IoYFJvdXRlIFwiJHtyb3V0ZX1cIiBhY2Nlc3NlZCBwYXJhbSBcIiR7cHJvcH1cIiB3aGljaCBpcyBub3QgZGVmaW5lZCBpbiB0aGUgXFxgc2FtcGxlc1xcYCBgICsgYG9mIFxcYHVuc3RhYmxlX2luc3RhbnRcXGAuIEFkZCBpdCB0byB0aGUgc2FtcGxlJ3MgXFxgcGFyYW1zXFxgIG9iamVjdC5gKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkUxMDk1XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUV4aGF1c3RpdmVTZWFyY2hQYXJhbXNQcm94eShzZWFyY2hQYXJhbXMsIGRlY2xhcmVkU2VhcmNoUGFyYW1OYW1lcywgcm91dGUpIHtcbiAgICByZXR1cm4gbmV3IFByb3h5KHNlYXJjaFBhcmFtcywge1xuICAgICAgICBnZXQgKHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N0cmluZycgJiYgIV9yZWZsZWN0dXRpbHMud2VsbEtub3duUHJvcGVydGllcy5oYXMocHJvcCkgJiYgIWRlY2xhcmVkU2VhcmNoUGFyYW1OYW1lcy5oYXMocHJvcCkpIHtcbiAgICAgICAgICAgICAgICB0cmFja01pc3NpbmdTYW1wbGVFcnJvckFuZFRocm93KGNyZWF0ZU1pc3NpbmdTZWFyY2hQYXJhbVNhbXBsZUVycm9yKHJvdXRlLCBwcm9wKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgIH0sXG4gICAgICAgIGhhcyAodGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnICYmICFfcmVmbGVjdHV0aWxzLndlbGxLbm93blByb3BlcnRpZXMuaGFzKHByb3ApICYmICFkZWNsYXJlZFNlYXJjaFBhcmFtTmFtZXMuaGFzKHByb3ApKSB7XG4gICAgICAgICAgICAgICAgdHJhY2tNaXNzaW5nU2FtcGxlRXJyb3JBbmRUaHJvdyhjcmVhdGVNaXNzaW5nU2VhcmNoUGFyYW1TYW1wbGVFcnJvcihyb3V0ZSwgcHJvcCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuaGFzKHRhcmdldCwgcHJvcCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUV4aGF1c3RpdmVVUkxTZWFyY2hQYXJhbXNQcm94eShzZWFyY2hQYXJhbXMsIGRlY2xhcmVkU2VhcmNoUGFyYW1OYW1lcywgcm91dGUpIHtcbiAgICByZXR1cm4gbmV3IFByb3h5KHNlYXJjaFBhcmFtcywge1xuICAgICAgICBnZXQgKHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIC8vIEludGVyY2VwdCBtZXRob2QgY2FsbHMgdGhhdCBhY2Nlc3Mgc3BlY2lmaWMgcGFyYW0gbmFtZXNcbiAgICAgICAgICAgIGlmIChwcm9wID09PSAnZ2V0JyB8fCBwcm9wID09PSAnZ2V0QWxsJyB8fCBwcm9wID09PSAnaGFzJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsTWF0aG9kID0gUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChuYW1lKT0+e1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG5hbWUgPT09ICdzdHJpbmcnICYmICFkZWNsYXJlZFNlYXJjaFBhcmFtTmFtZXMuaGFzKG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFja01pc3NpbmdTYW1wbGVFcnJvckFuZFRocm93KGNyZWF0ZU1pc3NpbmdTZWFyY2hQYXJhbVNhbXBsZUVycm9yKHJvdXRlLCBuYW1lKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsTWF0aG9kLmNhbGwodGFyZ2V0LCBuYW1lKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgIC8vIFByZXZlbnQgYFR5cGVFcnJvcjogVmFsdWUgb2YgXCJ0aGlzXCIgbXVzdCBiZSBvZiB0eXBlIFVSTFNlYXJjaFBhcmFtc2AgZm9yIG1ldGhvZHNcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgJiYgIU9iamVjdC5oYXNPd24odGFyZ2V0LCBwcm9wKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5iaW5kKHRhcmdldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZU1pc3NpbmdTZWFyY2hQYXJhbVNhbXBsZUVycm9yKHJvdXRlLCBuYW1lKSB7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2luc3RhbnR2YWxpZGF0aW9uZXJyb3IuSW5zdGFudFZhbGlkYXRpb25FcnJvcihgUm91dGUgXCIke3JvdXRlfVwiIGFjY2Vzc2VkIHNlYXJjaFBhcmFtIFwiJHtuYW1lfVwiIHdoaWNoIGlzIG5vdCBkZWZpbmVkIGluIHRoZSBcXGBzYW1wbGVzXFxgIGAgKyBgb2YgXFxgdW5zdGFibGVfaW5zdGFudFxcYC4gQWRkIGl0IHRvIHRoZSBzYW1wbGUncyBcXGBzZWFyY2hQYXJhbXNcXGAgb2JqZWN0LCBgICsgYG9yIFxcYHsgXCIke25hbWV9XCI6IG51bGwgfVxcYCBpZiBpdCBzaG91bGQgYmUgYWJzZW50LmApLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgdmFsdWU6IFwiRTEwOThcIixcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlUmVsYXRpdmVVUkxGcm9tU2FtcGxlcyhyb3V0ZSwgc2FtcGxlUGFyYW1zLCBzYW1wbGVTZWFyY2hQYXJhbXMpIHtcbiAgICAvLyBCdWlsZCBzZWFyY2hQYXJhbXMgcXVlcnkgb2JqZWN0IGFuZCBVUkwgc2VhcmNoIHN0cmluZyBmcm9tIHNhbXBsZVxuICAgIGNvbnN0IHBhdGhuYW1lID0gY3JlYXRlUGF0aG5hbWVGcm9tUm91dGVBbmRTYW1wbGVQYXJhbXMocm91dGUsIHNhbXBsZVBhcmFtcyA/PyB7fSk7XG4gICAgbGV0IHNlYXJjaCA9ICcnO1xuICAgIGlmIChzYW1wbGVTZWFyY2hQYXJhbXMpIHtcbiAgICAgICAgY29uc3QgcXMgPSBjcmVhdGVVUkxTZWFyY2hQYXJhbXNGcm9tU2FtcGxlKHNhbXBsZVNlYXJjaFBhcmFtcykudG9TdHJpbmcoKTtcbiAgICAgICAgaWYgKHFzKSB7XG4gICAgICAgICAgICBzZWFyY2ggPSAnPycgKyBxcztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gKDAsIF9wYXJzZXJlbGF0aXZldXJsLnBhcnNlUmVsYXRpdmVVcmwpKHBhdGhuYW1lICsgc2VhcmNoLCB1bmRlZmluZWQsIHRydWUpO1xufVxuZnVuY3Rpb24gY3JlYXRlVVJMU2VhcmNoUGFyYW1zRnJvbVNhbXBsZShzYW1wbGVTZWFyY2hQYXJhbXMpIHtcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgaWYgKHNhbXBsZVNlYXJjaFBhcmFtcykge1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhzYW1wbGVTZWFyY2hQYXJhbXMpKXtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdiBvZiB2YWx1ZSl7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoa2V5LCB2KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbi8qKlxuICogU3Vic3RpdHV0ZSBzYW1wbGUgcGFyYW1zIGludG8gYHdvcmtTdG9yZS5yb3V0ZWAgdG8gY3JlYXRlIGEgcGxhdXNpYmxlIHBhdGhuYW1lLlxuICogVE9ETyhpbnN0YW50LXZhbGlkYXRpb24tYnVpbGQpOiB0aGlzIGxvZ2ljIGlzIHNvbWV3aGF0IGhhY2t5IGFuZCBsaWtlbHkgaW5jb21wbGV0ZSxcbiAqIGJ1dCBpdCBzaG91bGQgYmUgZ29vZCBlbm91Z2ggZm9yIHNvbWUgaW5pdGlhbCB0ZXN0aW5nLlxuICovIGZ1bmN0aW9uIGNyZWF0ZVBhdGhuYW1lRnJvbVJvdXRlQW5kU2FtcGxlUGFyYW1zKHJvdXRlLCBwYXJhbXMpIHtcbiAgICBsZXQgaW50ZXJwb2xhdGVkU2VnbWVudHMgPSBbXTtcbiAgICBjb25zdCByYXdTZWdtZW50cyA9IHJvdXRlLnNwbGl0KCcvJyk7XG4gICAgZm9yIChjb25zdCByYXdTZWdtZW50IG9mIHJhd1NlZ21lbnRzKXtcbiAgICAgICAgY29uc3QgcGFyYW0gPSAoMCwgX2dldHNlZ21lbnRwYXJhbS5nZXRTZWdtZW50UGFyYW0pKHJhd1NlZ21lbnQpO1xuICAgICAgICBpZiAocGFyYW0pIHtcbiAgICAgICAgICAgIHN3aXRjaChwYXJhbS5wYXJhbVR5cGUpe1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NhdGNoYWxsJzpcbiAgICAgICAgICAgICAgICBjYXNlICdvcHRpb25hbC1jYXRjaGFsbCc6XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXJhbVZhbHVlID0gcGFyYW1zW3BhcmFtLnBhcmFtTmFtZV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1WYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHZhbHVlIGZvciB0aGUgcGFyYW0gd2FzIG5vdCBwcm92aWRlZC4gYHVzZVBhdGhuYW1lYCB3aWxsIGRldGVjdCB0aGlzIGFuZCB0aHJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlZm9yZSB0aGlzIGNhbiBzdXJmYWNlIHRvIHVzZXJzcGFjZS4gVXNlIGBbLi4uTkFNRV1gIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHRoZSBwYXJhbSB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIGNhc2UgaXQgcG9wcyB1cCBzb21ld2hlcmUgdW5leHBlY3RlZGx5LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtVmFsdWUgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhd1NlZ21lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShwYXJhbVZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHRoaXMgaGFwcGVucyBvdXRzaWRlIG9mIHJlbmRlciwgc28gd2UgZG9uJ3QgbmVlZCBgdHJhY2tNaXNzaW5nU2FtcGxlRXJyb3JBbmRUaHJvd2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnN0YW50dmFsaWRhdGlvbmVycm9yLkluc3RhbnRWYWxpZGF0aW9uRXJyb3IoYEV4cGVjdGVkIHNhbXBsZSBwYXJhbSB2YWx1ZSBmb3Igc2VnbWVudCAnJHtyYXdTZWdtZW50fScgdG8gYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncywgZ290ICR7dHlwZW9mIHBhcmFtVmFsdWV9YCksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMTEwNFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnBvbGF0ZWRTZWdtZW50cy5wdXNoKC4uLnBhcmFtVmFsdWUubWFwKCh2KT0+ZW5jb2RlVVJJQ29tcG9uZW50KHYpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJ2R5bmFtaWMnOlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGFyYW1WYWx1ZSA9IHBhcmFtc1twYXJhbS5wYXJhbU5hbWVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSB2YWx1ZSBmb3IgdGhlIHBhcmFtIHdhcyBub3QgcHJvdmlkZWQuIGB1c2VQYXRobmFtZWAgd2lsbCBkZXRlY3QgdGhpcyBhbmQgdGhyb3dcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZWZvcmUgdGhpcyBjYW4gc3VyZmFjZSB0byB1c2Vyc3BhY2UuIFVzZSBgW05BTUVdYCBhcyBhIHBsYWNlaG9sZGVyIGZvciB0aGUgcGFyYW0gdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbiBjYXNlIGl0IHBvcHMgdXAgc29tZXdoZXJlIHVuZXhwZWN0ZWRseS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbVZhbHVlID0gcmF3U2VnbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHBhcmFtVmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogdGhpcyBoYXBwZW5zIG91dHNpZGUgb2YgcmVuZGVyLCBzbyB3ZSBkb24ndCBuZWVkIGB0cmFja01pc3NpbmdTYW1wbGVFcnJvckFuZFRocm93YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2luc3RhbnR2YWxpZGF0aW9uZXJyb3IuSW5zdGFudFZhbGlkYXRpb25FcnJvcihgRXhwZWN0ZWQgc2FtcGxlIHBhcmFtIHZhbHVlIGZvciBzZWdtZW50ICcke3Jhd1NlZ21lbnR9JyB0byBiZSBhIHN0cmluZywgZ290ICR7dHlwZW9mIHBhcmFtVmFsdWV9YCksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMTEwOFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnBvbGF0ZWRTZWdtZW50cy5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChwYXJhbVZhbHVlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJ2NhdGNoYWxsLWludGVyY2VwdGVkLSguLikoLi4pJzpcbiAgICAgICAgICAgICAgICBjYXNlICdjYXRjaGFsbC1pbnRlcmNlcHRlZC0oLiknOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2NhdGNoYWxsLWludGVyY2VwdGVkLSguLiknOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2NhdGNoYWxsLWludGVyY2VwdGVkLSguLi4pJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkeW5hbWljLWludGVyY2VwdGVkLSguLikoLi4pJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkeW5hbWljLWludGVyY2VwdGVkLSguKSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZHluYW1pYy1pbnRlcmNlcHRlZC0oLi4pJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkeW5hbWljLWludGVyY2VwdGVkLSguLi4pJzpcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETyhpbnN0YW50LXZhbGlkYXRpb24tYnVpbGQpOiBpIGRvbid0IGtub3cgaG93IHRoZXNlIGFyZSBzdXBwb3NlZCB0byB3b3JrLCBvciBpZiB3ZSBjYW4gZXZlbiBnZXQgdGhlbSBoZXJlXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignTm90IGltcGxlbWVudGVkOiBWYWxpZGF0aW9uIG9mIGludGVyY2VwdGlvbiByb3V0ZXMnKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTExMDZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0ucGFyYW1UeXBlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbnRlcnBvbGF0ZWRTZWdtZW50cy5wdXNoKHJhd1NlZ21lbnQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpbnRlcnBvbGF0ZWRTZWdtZW50cy5qb2luKCcvJyk7XG59XG5mdW5jdGlvbiBhc3NlcnRSb290UGFyYW1JblNhbXBsZXMod29ya1N0b3JlLCBzYW1wbGVQYXJhbXMsIHBhcmFtTmFtZSkge1xuICAgIGlmIChzYW1wbGVQYXJhbXMgJiYgcGFyYW1OYW1lIGluIHNhbXBsZVBhcmFtcykge1xuICAgIC8vIFRoZSBwYXJhbSBpcyBkZWZpbmVkIGluIHRoZSBzYW1wbGVzLlxuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJvdXRlID0gd29ya1N0b3JlLnJvdXRlO1xuICAgICAgICB0cmFja01pc3NpbmdTYW1wbGVFcnJvckFuZFRocm93KE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2luc3RhbnR2YWxpZGF0aW9uZXJyb3IuSW5zdGFudFZhbGlkYXRpb25FcnJvcihgUm91dGUgXCIke3JvdXRlfVwiIGFjY2Vzc2VkIHJvb3QgcGFyYW0gXCIke3BhcmFtTmFtZX1cIiB3aGljaCBpcyBub3QgZGVmaW5lZCBpbiB0aGUgXFxgc2FtcGxlc1xcYCBgICsgYG9mIFxcYHVuc3RhYmxlX2luc3RhbnRcXGAuIEFkZCBpdCB0byB0aGUgc2FtcGxlJ3MgXFxgcGFyYW1zXFxgIG9iamVjdC5gKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICB2YWx1ZTogXCJFMTExNFwiLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgfSkpO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5zdGFudC1zYW1wbGVzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/app-render/instant-validation/instant-samples.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/app-render/instant-validation/instant-validation-error.js":
|
||
/*!*************************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/app-render/instant-validation/instant-validation-error.js ***!
|
||
\*************************************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n InstantValidationError: function() {\n return InstantValidationError;\n },\n isInstantValidationError: function() {\n return isInstantValidationError;\n }\n});\nconst INSTANT_VALIDATION_ERROR_DIGEST = 'INSTANT_VALIDATION_ERROR';\nfunction isInstantValidationError(err) {\n return !!(err && typeof err === 'object' && err instanceof Error && err.digest === INSTANT_VALIDATION_ERROR_DIGEST);\n}\nclass InstantValidationError extends Error {\n constructor(...args){\n super(...args), this.digest = INSTANT_VALIDATION_ERROR_DIGEST;\n }\n}\n\n//# sourceMappingURL=instant-validation-error.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2luc3RhbnQtdmFsaWRhdGlvbi9pbnN0YW50LXZhbGlkYXRpb24tZXJyb3IuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBR0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvYXBwLXJlbmRlci9pbnN0YW50LXZhbGlkYXRpb24vaW5zdGFudC12YWxpZGF0aW9uLWVycm9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgSW5zdGFudFZhbGlkYXRpb25FcnJvcjogbnVsbCxcbiAgICBpc0luc3RhbnRWYWxpZGF0aW9uRXJyb3I6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgSW5zdGFudFZhbGlkYXRpb25FcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBJbnN0YW50VmFsaWRhdGlvbkVycm9yO1xuICAgIH0sXG4gICAgaXNJbnN0YW50VmFsaWRhdGlvbkVycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGlzSW5zdGFudFZhbGlkYXRpb25FcnJvcjtcbiAgICB9XG59KTtcbmNvbnN0IElOU1RBTlRfVkFMSURBVElPTl9FUlJPUl9ESUdFU1QgPSAnSU5TVEFOVF9WQUxJREFUSU9OX0VSUk9SJztcbmZ1bmN0aW9uIGlzSW5zdGFudFZhbGlkYXRpb25FcnJvcihlcnIpIHtcbiAgICByZXR1cm4gISEoZXJyICYmIHR5cGVvZiBlcnIgPT09ICdvYmplY3QnICYmIGVyciBpbnN0YW5jZW9mIEVycm9yICYmIGVyci5kaWdlc3QgPT09IElOU1RBTlRfVkFMSURBVElPTl9FUlJPUl9ESUdFU1QpO1xufVxuY2xhc3MgSW5zdGFudFZhbGlkYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvciguLi5hcmdzKXtcbiAgICAgICAgc3VwZXIoLi4uYXJncyksIHRoaXMuZGlnZXN0ID0gSU5TVEFOVF9WQUxJREFUSU9OX0VSUk9SX0RJR0VTVDtcbiAgICB9XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluc3RhbnQtdmFsaWRhdGlvbi1lcnJvci5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/app-render/instant-validation/instant-validation-error.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/app-render/staged-rendering.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/app-render/staged-rendering.js ***!
|
||
\**********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n RenderStage: function() {\n return RenderStage;\n },\n StagedRenderingController: function() {\n return StagedRenderingController;\n }\n});\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(ssr)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nconst _promisewithresolvers = __webpack_require__(/*! ../../shared/lib/promise-with-resolvers */ \"(ssr)/./node_modules/next/dist/shared/lib/promise-with-resolvers.js\");\nvar RenderStage = /*#__PURE__*/ function(RenderStage) {\n RenderStage[RenderStage[\"Before\"] = 1] = \"Before\";\n RenderStage[RenderStage[\"EarlyStatic\"] = 2] = \"EarlyStatic\";\n RenderStage[RenderStage[\"Static\"] = 3] = \"Static\";\n RenderStage[RenderStage[\"EarlyRuntime\"] = 4] = \"EarlyRuntime\";\n RenderStage[RenderStage[\"Runtime\"] = 5] = \"Runtime\";\n RenderStage[RenderStage[\"Dynamic\"] = 6] = \"Dynamic\";\n RenderStage[RenderStage[\"Abandoned\"] = 7] = \"Abandoned\";\n return RenderStage;\n}({});\nclass StagedRenderingController {\n constructor(abortSignal, abandonController, shouldTrackSyncIO){\n this.abortSignal = abortSignal;\n this.abandonController = abandonController;\n this.shouldTrackSyncIO = shouldTrackSyncIO;\n this.currentStage = 1;\n this.syncInterruptReason = null;\n this.staticStageEndTime = Infinity;\n this.runtimeStageEndTime = Infinity;\n this.staticStageListeners = [];\n this.earlyRuntimeStageListeners = [];\n this.runtimeStageListeners = [];\n this.dynamicStageListeners = [];\n this.staticStagePromise = (0, _promisewithresolvers.createPromiseWithResolvers)();\n this.earlyRuntimeStagePromise = (0, _promisewithresolvers.createPromiseWithResolvers)();\n this.runtimeStagePromise = (0, _promisewithresolvers.createPromiseWithResolvers)();\n this.dynamicStagePromise = (0, _promisewithresolvers.createPromiseWithResolvers)();\n if (abortSignal) {\n abortSignal.addEventListener('abort', ()=>{\n // Reject all stage promises that haven't already been resolved.\n // If a promise was already resolved via advanceStage, the reject\n // is a no-op. The ignoreReject handler suppresses unhandled\n // rejection warnings for promises that no one is awaiting.\n const { reason } = abortSignal;\n this.staticStagePromise.promise.catch(ignoreReject);\n this.staticStagePromise.reject(reason);\n this.earlyRuntimeStagePromise.promise.catch(ignoreReject);\n this.earlyRuntimeStagePromise.reject(reason);\n this.runtimeStagePromise.promise.catch(ignoreReject);\n this.runtimeStagePromise.reject(reason);\n this.dynamicStagePromise.promise.catch(ignoreReject);\n this.dynamicStagePromise.reject(reason);\n }, {\n once: true\n });\n }\n if (abandonController) {\n abandonController.signal.addEventListener('abort', ()=>{\n this.abandonRender();\n }, {\n once: true\n });\n }\n }\n onStage(stage, callback) {\n if (this.currentStage >= stage) {\n callback();\n } else if (stage === 3) {\n this.staticStageListeners.push(callback);\n } else if (stage === 4) {\n this.earlyRuntimeStageListeners.push(callback);\n } else if (stage === 5) {\n this.runtimeStageListeners.push(callback);\n } else if (stage === 6) {\n this.dynamicStageListeners.push(callback);\n } else {\n // This should never happen\n throw Object.defineProperty(new _invarianterror.InvariantError(`Invalid render stage: ${stage}`), \"__NEXT_ERROR_CODE\", {\n value: \"E881\",\n enumerable: false,\n configurable: true\n });\n }\n }\n shouldTrackSyncInterrupt() {\n if (!this.shouldTrackSyncIO) {\n return false;\n }\n switch(this.currentStage){\n case 1:\n // If we haven't started the render yet, it can't be interrupted.\n return false;\n case 2:\n case 3:\n return true;\n case 4:\n // EarlyRuntime is for runtime-prefetchable segments. Sync IO\n // should error because it would abort a runtime prefetch.\n return true;\n case 5:\n // Runtime is for non-prefetchable segments. Sync IO is fine there\n // because in practice this segment will never be runtime prefetched\n return false;\n case 6:\n case 7:\n return false;\n default:\n return false;\n }\n }\n syncInterruptCurrentStageWithReason(reason) {\n if (this.currentStage === 1) {\n return;\n }\n // If the render has already been abandoned, there's nothing to interrupt.\n if (this.currentStage === 7) {\n return;\n }\n // If Sync IO occurs during an abandonable render, we trigger the abandon.\n // The abandon listener will call abandonRender which advances through\n // stages to let caches fill before marking as Abandoned.\n if (this.abandonController) {\n this.abandonController.abort();\n return;\n }\n if (this.abortSignal) {\n // If this is an abortable render, we capture the interruption reason and stop advancing.\n // We don't release any more promises.\n // The caller is expected to abort the signal.\n this.syncInterruptReason = reason;\n this.currentStage = 7;\n return;\n }\n // If we're in a non-abandonable & non-abortable render,\n // we need to advance to the Dynamic stage and capture the interruption reason.\n // (in dev, this will be the restarted render)\n switch(this.currentStage){\n case 2:\n case 3:\n case 4:\n {\n // EarlyRuntime is for runtime-prefetchable segments. Sync IO here\n // means the prefetch would be aborted too early.\n this.syncInterruptReason = reason;\n this.advanceStage(6);\n return;\n }\n case 5:\n {\n // canSyncInterrupt returns false for Runtime, so we should\n // never get here. Defensive no-op.\n return;\n }\n case 6:\n default:\n }\n }\n getSyncInterruptReason() {\n return this.syncInterruptReason;\n }\n getStaticStageEndTime() {\n return this.staticStageEndTime;\n }\n getRuntimeStageEndTime() {\n return this.runtimeStageEndTime;\n }\n abandonRender() {\n // In staged rendering, only the initial render is abandonable.\n // We can abandon the initial render if\n // 1. We notice a cache miss, and need to wait for caches to fill\n // 2. A sync IO error occurs, and the render should be interrupted\n // (this might be a lazy intitialization of a module,\n // so we still want to restart in this case and see if it still occurs)\n // In either case, we'll be doing another render after this one,\n // so we only want to unblock the next stage, not Dynamic, because\n // unblocking the dynamic stage would likely lead to wasted (uncached) IO.\n const { currentStage } = this;\n switch(currentStage){\n case 2:\n {\n this.resolveStaticStage();\n }\n // intentional fallthrough\n case 3:\n {\n this.resolveEarlyRuntimeStage();\n }\n // intentional fallthrough\n case 4:\n {\n this.resolveRuntimeStage();\n }\n // intentional fallthrough\n case 5:\n {\n this.currentStage = 7;\n return;\n }\n case 6:\n case 1:\n case 7:\n break;\n default:\n {\n currentStage;\n }\n }\n }\n advanceStage(stage) {\n // If we're already at the target stage or beyond, do nothing.\n // (this can happen e.g. if sync IO advanced us to the dynamic stage)\n if (stage <= this.currentStage) {\n return;\n }\n let currentStage = this.currentStage;\n this.currentStage = stage;\n if (currentStage < 3 && stage >= 3) {\n this.resolveStaticStage();\n }\n if (currentStage < 4 && stage >= 4) {\n this.resolveEarlyRuntimeStage();\n }\n if (currentStage < 5 && stage >= 5) {\n this.staticStageEndTime = performance.now() + performance.timeOrigin;\n this.resolveRuntimeStage();\n }\n if (currentStage < 6 && stage >= 6) {\n this.runtimeStageEndTime = performance.now() + performance.timeOrigin;\n this.resolveDynamicStage();\n return;\n }\n }\n /** Fire the `onStage` listeners for the static stage and unblock any promises waiting for it. */ resolveStaticStage() {\n const staticListeners = this.staticStageListeners;\n for(let i = 0; i < staticListeners.length; i++){\n staticListeners[i]();\n }\n staticListeners.length = 0;\n this.staticStagePromise.resolve();\n }\n /** Fire the `onStage` listeners for the early runtime stage and unblock any promises waiting for it. */ resolveEarlyRuntimeStage() {\n const earlyRuntimeListeners = this.earlyRuntimeStageListeners;\n for(let i = 0; i < earlyRuntimeListeners.length; i++){\n earlyRuntimeListeners[i]();\n }\n earlyRuntimeListeners.length = 0;\n this.earlyRuntimeStagePromise.resolve();\n }\n /** Fire the `onStage` listeners for the runtime stage and unblock any promises waiting for it. */ resolveRuntimeStage() {\n const runtimeListeners = this.runtimeStageListeners;\n for(let i = 0; i < runtimeListeners.length; i++){\n runtimeListeners[i]();\n }\n runtimeListeners.length = 0;\n this.runtimeStagePromise.resolve();\n }\n /** Fire the `onStage` listeners for the dynamic stage and unblock any promises waiting for it. */ resolveDynamicStage() {\n const dynamicListeners = this.dynamicStageListeners;\n for(let i = 0; i < dynamicListeners.length; i++){\n dynamicListeners[i]();\n }\n dynamicListeners.length = 0;\n this.dynamicStagePromise.resolve();\n }\n getStagePromise(stage) {\n switch(stage){\n case 3:\n {\n return this.staticStagePromise.promise;\n }\n case 4:\n {\n return this.earlyRuntimeStagePromise.promise;\n }\n case 5:\n {\n return this.runtimeStagePromise.promise;\n }\n case 6:\n {\n return this.dynamicStagePromise.promise;\n }\n default:\n {\n stage;\n throw Object.defineProperty(new _invarianterror.InvariantError(`Invalid render stage: ${stage}`), \"__NEXT_ERROR_CODE\", {\n value: \"E881\",\n enumerable: false,\n configurable: true\n });\n }\n }\n }\n waitForStage(stage) {\n return this.getStagePromise(stage);\n }\n delayUntilStage(stage, displayName, resolvedValue) {\n const ioTriggerPromise = this.getStagePromise(stage);\n const promise = makeDevtoolsIOPromiseFromIOTrigger(ioTriggerPromise, displayName, resolvedValue);\n // Analogously to `makeHangingPromise`, we might reject this promise if the signal is invoked.\n // (e.g. in the case where we don't want want the render to proceed to the dynamic stage and abort it).\n // We shouldn't consider this an unhandled rejection, so we attach a noop catch handler here to suppress this warning.\n if (this.abortSignal) {\n promise.catch(ignoreReject);\n }\n return promise;\n }\n}\nfunction ignoreReject() {}\n// TODO(restart-on-cache-miss): the layering of `delayUntilStage`,\n// `makeDevtoolsIOPromiseFromIOTrigger` and and `makeDevtoolsIOAwarePromise`\n// is confusing, we should clean it up.\nfunction makeDevtoolsIOPromiseFromIOTrigger(ioTrigger, displayName, resolvedValue) {\n // If we create a `new Promise` and give it a displayName\n // (with no userspace code above us in the stack)\n // React Devtools will use it as the IO cause when determining \"suspended by\".\n // In particular, it should shadow any inner IO that resolved/rejected the promise\n // (in case of staged rendering, this will be the `setTimeout` that triggers the relevant stage)\n const promise = new Promise((resolve, reject)=>{\n ioTrigger.then(resolve.bind(null, resolvedValue), reject);\n });\n if (displayName !== undefined) {\n // @ts-expect-error\n promise.displayName = displayName;\n }\n return promise;\n}\n\n//# sourceMappingURL=staged-rendering.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL3N0YWdlZC1yZW5kZXJpbmcuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBR0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Qsd0JBQXdCLG1CQUFPLENBQUMsc0dBQWtDO0FBQ2xFLDhCQUE4QixtQkFBTyxDQUFDLG9IQUF5QztBQUMvRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEdBQUc7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLFNBQVM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0Esb0dBQW9HLE1BQU07QUFDMUc7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGVBQWU7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDRCQUE0QjtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixrQ0FBa0M7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsNkJBQTZCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDZCQUE2QjtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEdBQTRHLE1BQU07QUFDbEg7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL3N0YWdlZC1yZW5kZXJpbmcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBSZW5kZXJTdGFnZTogbnVsbCxcbiAgICBTdGFnZWRSZW5kZXJpbmdDb250cm9sbGVyOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIFJlbmRlclN0YWdlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFJlbmRlclN0YWdlO1xuICAgIH0sXG4gICAgU3RhZ2VkUmVuZGVyaW5nQ29udHJvbGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBTdGFnZWRSZW5kZXJpbmdDb250cm9sbGVyO1xuICAgIH1cbn0pO1xuY29uc3QgX2ludmFyaWFudGVycm9yID0gcmVxdWlyZShcIi4uLy4uL3NoYXJlZC9saWIvaW52YXJpYW50LWVycm9yXCIpO1xuY29uc3QgX3Byb21pc2V3aXRocmVzb2x2ZXJzID0gcmVxdWlyZShcIi4uLy4uL3NoYXJlZC9saWIvcHJvbWlzZS13aXRoLXJlc29sdmVyc1wiKTtcbnZhciBSZW5kZXJTdGFnZSA9IC8qI19fUFVSRV9fKi8gZnVuY3Rpb24oUmVuZGVyU3RhZ2UpIHtcbiAgICBSZW5kZXJTdGFnZVtSZW5kZXJTdGFnZVtcIkJlZm9yZVwiXSA9IDFdID0gXCJCZWZvcmVcIjtcbiAgICBSZW5kZXJTdGFnZVtSZW5kZXJTdGFnZVtcIkVhcmx5U3RhdGljXCJdID0gMl0gPSBcIkVhcmx5U3RhdGljXCI7XG4gICAgUmVuZGVyU3RhZ2VbUmVuZGVyU3RhZ2VbXCJTdGF0aWNcIl0gPSAzXSA9IFwiU3RhdGljXCI7XG4gICAgUmVuZGVyU3RhZ2VbUmVuZGVyU3RhZ2VbXCJFYXJseVJ1bnRpbWVcIl0gPSA0XSA9IFwiRWFybHlSdW50aW1lXCI7XG4gICAgUmVuZGVyU3RhZ2VbUmVuZGVyU3RhZ2VbXCJSdW50aW1lXCJdID0gNV0gPSBcIlJ1bnRpbWVcIjtcbiAgICBSZW5kZXJTdGFnZVtSZW5kZXJTdGFnZVtcIkR5bmFtaWNcIl0gPSA2XSA9IFwiRHluYW1pY1wiO1xuICAgIFJlbmRlclN0YWdlW1JlbmRlclN0YWdlW1wiQWJhbmRvbmVkXCJdID0gN10gPSBcIkFiYW5kb25lZFwiO1xuICAgIHJldHVybiBSZW5kZXJTdGFnZTtcbn0oe30pO1xuY2xhc3MgU3RhZ2VkUmVuZGVyaW5nQ29udHJvbGxlciB7XG4gICAgY29uc3RydWN0b3IoYWJvcnRTaWduYWwsIGFiYW5kb25Db250cm9sbGVyLCBzaG91bGRUcmFja1N5bmNJTyl7XG4gICAgICAgIHRoaXMuYWJvcnRTaWduYWwgPSBhYm9ydFNpZ25hbDtcbiAgICAgICAgdGhpcy5hYmFuZG9uQ29udHJvbGxlciA9IGFiYW5kb25Db250cm9sbGVyO1xuICAgICAgICB0aGlzLnNob3VsZFRyYWNrU3luY0lPID0gc2hvdWxkVHJhY2tTeW5jSU87XG4gICAgICAgIHRoaXMuY3VycmVudFN0YWdlID0gMTtcbiAgICAgICAgdGhpcy5zeW5jSW50ZXJydXB0UmVhc29uID0gbnVsbDtcbiAgICAgICAgdGhpcy5zdGF0aWNTdGFnZUVuZFRpbWUgPSBJbmZpbml0eTtcbiAgICAgICAgdGhpcy5ydW50aW1lU3RhZ2VFbmRUaW1lID0gSW5maW5pdHk7XG4gICAgICAgIHRoaXMuc3RhdGljU3RhZ2VMaXN0ZW5lcnMgPSBbXTtcbiAgICAgICAgdGhpcy5lYXJseVJ1bnRpbWVTdGFnZUxpc3RlbmVycyA9IFtdO1xuICAgICAgICB0aGlzLnJ1bnRpbWVTdGFnZUxpc3RlbmVycyA9IFtdO1xuICAgICAgICB0aGlzLmR5bmFtaWNTdGFnZUxpc3RlbmVycyA9IFtdO1xuICAgICAgICB0aGlzLnN0YXRpY1N0YWdlUHJvbWlzZSA9ICgwLCBfcHJvbWlzZXdpdGhyZXNvbHZlcnMuY3JlYXRlUHJvbWlzZVdpdGhSZXNvbHZlcnMpKCk7XG4gICAgICAgIHRoaXMuZWFybHlSdW50aW1lU3RhZ2VQcm9taXNlID0gKDAsIF9wcm9taXNld2l0aHJlc29sdmVycy5jcmVhdGVQcm9taXNlV2l0aFJlc29sdmVycykoKTtcbiAgICAgICAgdGhpcy5ydW50aW1lU3RhZ2VQcm9taXNlID0gKDAsIF9wcm9taXNld2l0aHJlc29sdmVycy5jcmVhdGVQcm9taXNlV2l0aFJlc29sdmVycykoKTtcbiAgICAgICAgdGhpcy5keW5hbWljU3RhZ2VQcm9taXNlID0gKDAsIF9wcm9taXNld2l0aHJlc29sdmVycy5jcmVhdGVQcm9taXNlV2l0aFJlc29sdmVycykoKTtcbiAgICAgICAgaWYgKGFib3J0U2lnbmFsKSB7XG4gICAgICAgICAgICBhYm9ydFNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsICgpPT57XG4gICAgICAgICAgICAgICAgLy8gUmVqZWN0IGFsbCBzdGFnZSBwcm9taXNlcyB0aGF0IGhhdmVuJ3QgYWxyZWFkeSBiZWVuIHJlc29sdmVkLlxuICAgICAgICAgICAgICAgIC8vIElmIGEgcHJvbWlzZSB3YXMgYWxyZWFkeSByZXNvbHZlZCB2aWEgYWR2YW5jZVN0YWdlLCB0aGUgcmVqZWN0XG4gICAgICAgICAgICAgICAgLy8gaXMgYSBuby1vcC4gVGhlIGlnbm9yZVJlamVjdCBoYW5kbGVyIHN1cHByZXNzZXMgdW5oYW5kbGVkXG4gICAgICAgICAgICAgICAgLy8gcmVqZWN0aW9uIHdhcm5pbmdzIGZvciBwcm9taXNlcyB0aGF0IG5vIG9uZSBpcyBhd2FpdGluZy5cbiAgICAgICAgICAgICAgICBjb25zdCB7IHJlYXNvbiB9ID0gYWJvcnRTaWduYWw7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0aWNTdGFnZVByb21pc2UucHJvbWlzZS5jYXRjaChpZ25vcmVSZWplY3QpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGljU3RhZ2VQcm9taXNlLnJlamVjdChyZWFzb24pO1xuICAgICAgICAgICAgICAgIHRoaXMuZWFybHlSdW50aW1lU3RhZ2VQcm9taXNlLnByb21pc2UuY2F0Y2goaWdub3JlUmVqZWN0KTtcbiAgICAgICAgICAgICAgICB0aGlzLmVhcmx5UnVudGltZVN0YWdlUHJvbWlzZS5yZWplY3QocmVhc29uKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJ1bnRpbWVTdGFnZVByb21pc2UucHJvbWlzZS5jYXRjaChpZ25vcmVSZWplY3QpO1xuICAgICAgICAgICAgICAgIHRoaXMucnVudGltZVN0YWdlUHJvbWlzZS5yZWplY3QocmVhc29uKTtcbiAgICAgICAgICAgICAgICB0aGlzLmR5bmFtaWNTdGFnZVByb21pc2UucHJvbWlzZS5jYXRjaChpZ25vcmVSZWplY3QpO1xuICAgICAgICAgICAgICAgIHRoaXMuZHluYW1pY1N0YWdlUHJvbWlzZS5yZWplY3QocmVhc29uKTtcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBvbmNlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWJhbmRvbkNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIGFiYW5kb25Db250cm9sbGVyLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsICgpPT57XG4gICAgICAgICAgICAgICAgdGhpcy5hYmFuZG9uUmVuZGVyKCk7XG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25TdGFnZShzdGFnZSwgY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFN0YWdlID49IHN0YWdlKSB7XG4gICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YWdlID09PSAzKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRpY1N0YWdlTGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YWdlID09PSA0KSB7XG4gICAgICAgICAgICB0aGlzLmVhcmx5UnVudGltZVN0YWdlTGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YWdlID09PSA1KSB7XG4gICAgICAgICAgICB0aGlzLnJ1bnRpbWVTdGFnZUxpc3RlbmVycy5wdXNoKGNhbGxiYWNrKTtcbiAgICAgICAgfSBlbHNlIGlmIChzdGFnZSA9PT0gNikge1xuICAgICAgICAgICAgdGhpcy5keW5hbWljU3RhZ2VMaXN0ZW5lcnMucHVzaChjYWxsYmFjayk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW5cbiAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKGBJbnZhbGlkIHJlbmRlciBzdGFnZTogJHtzdGFnZX1gKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiRTg4MVwiLFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2hvdWxkVHJhY2tTeW5jSW50ZXJydXB0KCkge1xuICAgICAgICBpZiAoIXRoaXMuc2hvdWxkVHJhY2tTeW5jSU8pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2godGhpcy5jdXJyZW50U3RhZ2Upe1xuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmVuJ3Qgc3RhcnRlZCB0aGUgcmVuZGVyIHlldCwgaXQgY2FuJ3QgYmUgaW50ZXJydXB0ZWQuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgIC8vIEVhcmx5UnVudGltZSBpcyBmb3IgcnVudGltZS1wcmVmZXRjaGFibGUgc2VnbWVudHMuIFN5bmMgSU9cbiAgICAgICAgICAgICAgICAvLyBzaG91bGQgZXJyb3IgYmVjYXVzZSBpdCB3b3VsZCBhYm9ydCBhIHJ1bnRpbWUgcHJlZmV0Y2guXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgLy8gUnVudGltZSBpcyBmb3Igbm9uLXByZWZldGNoYWJsZSBzZWdtZW50cy4gU3luYyBJTyBpcyBmaW5lIHRoZXJlXG4gICAgICAgICAgICAgICAgLy8gYmVjYXVzZSBpbiBwcmFjdGljZSB0aGlzIHNlZ21lbnQgd2lsbCBuZXZlciBiZSBydW50aW1lIHByZWZldGNoZWRcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3luY0ludGVycnVwdEN1cnJlbnRTdGFnZVdpdGhSZWFzb24ocmVhc29uKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRTdGFnZSA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIHRoZSByZW5kZXIgaGFzIGFscmVhZHkgYmVlbiBhYmFuZG9uZWQsIHRoZXJlJ3Mgbm90aGluZyB0byBpbnRlcnJ1cHQuXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRTdGFnZSA9PT0gNykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIFN5bmMgSU8gb2NjdXJzIGR1cmluZyBhbiBhYmFuZG9uYWJsZSByZW5kZXIsIHdlIHRyaWdnZXIgdGhlIGFiYW5kb24uXG4gICAgICAgIC8vIFRoZSBhYmFuZG9uIGxpc3RlbmVyIHdpbGwgY2FsbCBhYmFuZG9uUmVuZGVyIHdoaWNoIGFkdmFuY2VzIHRocm91Z2hcbiAgICAgICAgLy8gc3RhZ2VzIHRvIGxldCBjYWNoZXMgZmlsbCBiZWZvcmUgbWFya2luZyBhcyBBYmFuZG9uZWQuXG4gICAgICAgIGlmICh0aGlzLmFiYW5kb25Db250cm9sbGVyKSB7XG4gICAgICAgICAgICB0aGlzLmFiYW5kb25Db250cm9sbGVyLmFib3J0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYWJvcnRTaWduYWwpIHtcbiAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYW4gYWJvcnRhYmxlIHJlbmRlciwgd2UgY2FwdHVyZSB0aGUgaW50ZXJydXB0aW9uIHJlYXNvbiBhbmQgc3RvcCBhZHZhbmNpbmcuXG4gICAgICAgICAgICAvLyBXZSBkb24ndCByZWxlYXNlIGFueSBtb3JlIHByb21pc2VzLlxuICAgICAgICAgICAgLy8gVGhlIGNhbGxlciBpcyBleHBlY3RlZCB0byBhYm9ydCB0aGUgc2lnbmFsLlxuICAgICAgICAgICAgdGhpcy5zeW5jSW50ZXJydXB0UmVhc29uID0gcmVhc29uO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RhZ2UgPSA3O1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIHdlJ3JlIGluIGEgbm9uLWFiYW5kb25hYmxlICYgbm9uLWFib3J0YWJsZSByZW5kZXIsXG4gICAgICAgIC8vIHdlIG5lZWQgdG8gYWR2YW5jZSB0byB0aGUgRHluYW1pYyBzdGFnZSBhbmQgY2FwdHVyZSB0aGUgaW50ZXJydXB0aW9uIHJlYXNvbi5cbiAgICAgICAgLy8gKGluIGRldiwgdGhpcyB3aWxsIGJlIHRoZSByZXN0YXJ0ZWQgcmVuZGVyKVxuICAgICAgICBzd2l0Y2godGhpcy5jdXJyZW50U3RhZ2Upe1xuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRWFybHlSdW50aW1lIGlzIGZvciBydW50aW1lLXByZWZldGNoYWJsZSBzZWdtZW50cy4gU3luYyBJTyBoZXJlXG4gICAgICAgICAgICAgICAgICAgIC8vIG1lYW5zIHRoZSBwcmVmZXRjaCB3b3VsZCBiZSBhYm9ydGVkIHRvbyBlYXJseS5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zeW5jSW50ZXJydXB0UmVhc29uID0gcmVhc29uO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkdmFuY2VTdGFnZSg2KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNhblN5bmNJbnRlcnJ1cHQgcmV0dXJucyBmYWxzZSBmb3IgUnVudGltZSwgc28gd2Ugc2hvdWxkXG4gICAgICAgICAgICAgICAgICAgIC8vIG5ldmVyIGdldCBoZXJlLiBEZWZlbnNpdmUgbm8tb3AuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICB9XG4gICAgfVxuICAgIGdldFN5bmNJbnRlcnJ1cHRSZWFzb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN5bmNJbnRlcnJ1cHRSZWFzb247XG4gICAgfVxuICAgIGdldFN0YXRpY1N0YWdlRW5kVGltZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGljU3RhZ2VFbmRUaW1lO1xuICAgIH1cbiAgICBnZXRSdW50aW1lU3RhZ2VFbmRUaW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ydW50aW1lU3RhZ2VFbmRUaW1lO1xuICAgIH1cbiAgICBhYmFuZG9uUmVuZGVyKCkge1xuICAgICAgICAvLyBJbiBzdGFnZWQgcmVuZGVyaW5nLCBvbmx5IHRoZSBpbml0aWFsIHJlbmRlciBpcyBhYmFuZG9uYWJsZS5cbiAgICAgICAgLy8gV2UgY2FuIGFiYW5kb24gdGhlIGluaXRpYWwgcmVuZGVyIGlmXG4gICAgICAgIC8vICAgMS4gV2Ugbm90aWNlIGEgY2FjaGUgbWlzcywgYW5kIG5lZWQgdG8gd2FpdCBmb3IgY2FjaGVzIHRvIGZpbGxcbiAgICAgICAgLy8gICAyLiBBIHN5bmMgSU8gZXJyb3Igb2NjdXJzLCBhbmQgdGhlIHJlbmRlciBzaG91bGQgYmUgaW50ZXJydXB0ZWRcbiAgICAgICAgLy8gICAgICAodGhpcyBtaWdodCBiZSBhIGxhenkgaW50aXRpYWxpemF0aW9uIG9mIGEgbW9kdWxlLFxuICAgICAgICAvLyAgICAgICBzbyB3ZSBzdGlsbCB3YW50IHRvIHJlc3RhcnQgaW4gdGhpcyBjYXNlIGFuZCBzZWUgaWYgaXQgc3RpbGwgb2NjdXJzKVxuICAgICAgICAvLyBJbiBlaXRoZXIgY2FzZSwgd2UnbGwgYmUgZG9pbmcgYW5vdGhlciByZW5kZXIgYWZ0ZXIgdGhpcyBvbmUsXG4gICAgICAgIC8vIHNvIHdlIG9ubHkgd2FudCB0byB1bmJsb2NrIHRoZSBuZXh0IHN0YWdlLCBub3QgRHluYW1pYywgYmVjYXVzZVxuICAgICAgICAvLyB1bmJsb2NraW5nIHRoZSBkeW5hbWljIHN0YWdlIHdvdWxkIGxpa2VseSBsZWFkIHRvIHdhc3RlZCAodW5jYWNoZWQpIElPLlxuICAgICAgICBjb25zdCB7IGN1cnJlbnRTdGFnZSB9ID0gdGhpcztcbiAgICAgICAgc3dpdGNoKGN1cnJlbnRTdGFnZSl7XG4gICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc29sdmVTdGF0aWNTdGFnZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGludGVudGlvbmFsIGZhbGx0aHJvdWdoXG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc29sdmVFYXJseVJ1bnRpbWVTdGFnZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGludGVudGlvbmFsIGZhbGx0aHJvdWdoXG4gICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc29sdmVSdW50aW1lU3RhZ2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBpbnRlbnRpb25hbCBmYWxsdGhyb3VnaFxuICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RhZ2UgPSA3O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdGFnZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYWR2YW5jZVN0YWdlKHN0YWdlKSB7XG4gICAgICAgIC8vIElmIHdlJ3JlIGFscmVhZHkgYXQgdGhlIHRhcmdldCBzdGFnZSBvciBiZXlvbmQsIGRvIG5vdGhpbmcuXG4gICAgICAgIC8vICh0aGlzIGNhbiBoYXBwZW4gZS5nLiBpZiBzeW5jIElPIGFkdmFuY2VkIHVzIHRvIHRoZSBkeW5hbWljIHN0YWdlKVxuICAgICAgICBpZiAoc3RhZ2UgPD0gdGhpcy5jdXJyZW50U3RhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY3VycmVudFN0YWdlID0gdGhpcy5jdXJyZW50U3RhZ2U7XG4gICAgICAgIHRoaXMuY3VycmVudFN0YWdlID0gc3RhZ2U7XG4gICAgICAgIGlmIChjdXJyZW50U3RhZ2UgPCAzICYmIHN0YWdlID49IDMpIHtcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZVN0YXRpY1N0YWdlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN1cnJlbnRTdGFnZSA8IDQgJiYgc3RhZ2UgPj0gNCkge1xuICAgICAgICAgICAgdGhpcy5yZXNvbHZlRWFybHlSdW50aW1lU3RhZ2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3VycmVudFN0YWdlIDwgNSAmJiBzdGFnZSA+PSA1KSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRpY1N0YWdlRW5kVGltZSA9IHBlcmZvcm1hbmNlLm5vdygpICsgcGVyZm9ybWFuY2UudGltZU9yaWdpbjtcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZVJ1bnRpbWVTdGFnZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjdXJyZW50U3RhZ2UgPCA2ICYmIHN0YWdlID49IDYpIHtcbiAgICAgICAgICAgIHRoaXMucnVudGltZVN0YWdlRW5kVGltZSA9IHBlcmZvcm1hbmNlLm5vdygpICsgcGVyZm9ybWFuY2UudGltZU9yaWdpbjtcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZUR5bmFtaWNTdGFnZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKiBGaXJlIHRoZSBgb25TdGFnZWAgbGlzdGVuZXJzIGZvciB0aGUgc3RhdGljIHN0YWdlIGFuZCB1bmJsb2NrIGFueSBwcm9taXNlcyB3YWl0aW5nIGZvciBpdC4gKi8gcmVzb2x2ZVN0YXRpY1N0YWdlKCkge1xuICAgICAgICBjb25zdCBzdGF0aWNMaXN0ZW5lcnMgPSB0aGlzLnN0YXRpY1N0YWdlTGlzdGVuZXJzO1xuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgc3RhdGljTGlzdGVuZXJzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIHN0YXRpY0xpc3RlbmVyc1tpXSgpO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpY0xpc3RlbmVycy5sZW5ndGggPSAwO1xuICAgICAgICB0aGlzLnN0YXRpY1N0YWdlUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuICAgIC8qKiBGaXJlIHRoZSBgb25TdGFnZWAgbGlzdGVuZXJzIGZvciB0aGUgZWFybHkgcnVudGltZSBzdGFnZSBhbmQgdW5ibG9jayBhbnkgcHJvbWlzZXMgd2FpdGluZyBmb3IgaXQuICovIHJlc29sdmVFYXJseVJ1bnRpbWVTdGFnZSgpIHtcbiAgICAgICAgY29uc3QgZWFybHlSdW50aW1lTGlzdGVuZXJzID0gdGhpcy5lYXJseVJ1bnRpbWVTdGFnZUxpc3RlbmVycztcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGVhcmx5UnVudGltZUxpc3RlbmVycy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICBlYXJseVJ1bnRpbWVMaXN0ZW5lcnNbaV0oKTtcbiAgICAgICAgfVxuICAgICAgICBlYXJseVJ1bnRpbWVMaXN0ZW5lcnMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5lYXJseVJ1bnRpbWVTdGFnZVByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cbiAgICAvKiogRmlyZSB0aGUgYG9uU3RhZ2VgIGxpc3RlbmVycyBmb3IgdGhlIHJ1bnRpbWUgc3RhZ2UgYW5kIHVuYmxvY2sgYW55IHByb21pc2VzIHdhaXRpbmcgZm9yIGl0LiAqLyByZXNvbHZlUnVudGltZVN0YWdlKCkge1xuICAgICAgICBjb25zdCBydW50aW1lTGlzdGVuZXJzID0gdGhpcy5ydW50aW1lU3RhZ2VMaXN0ZW5lcnM7XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBydW50aW1lTGlzdGVuZXJzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIHJ1bnRpbWVMaXN0ZW5lcnNbaV0oKTtcbiAgICAgICAgfVxuICAgICAgICBydW50aW1lTGlzdGVuZXJzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMucnVudGltZVN0YWdlUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuICAgIC8qKiBGaXJlIHRoZSBgb25TdGFnZWAgbGlzdGVuZXJzIGZvciB0aGUgZHluYW1pYyBzdGFnZSBhbmQgdW5ibG9jayBhbnkgcHJvbWlzZXMgd2FpdGluZyBmb3IgaXQuICovIHJlc29sdmVEeW5hbWljU3RhZ2UoKSB7XG4gICAgICAgIGNvbnN0IGR5bmFtaWNMaXN0ZW5lcnMgPSB0aGlzLmR5bmFtaWNTdGFnZUxpc3RlbmVycztcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGR5bmFtaWNMaXN0ZW5lcnMubGVuZ3RoOyBpKyspe1xuICAgICAgICAgICAgZHluYW1pY0xpc3RlbmVyc1tpXSgpO1xuICAgICAgICB9XG4gICAgICAgIGR5bmFtaWNMaXN0ZW5lcnMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5keW5hbWljU3RhZ2VQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG4gICAgZ2V0U3RhZ2VQcm9taXNlKHN0YWdlKSB7XG4gICAgICAgIHN3aXRjaChzdGFnZSl7XG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdGF0aWNTdGFnZVByb21pc2UucHJvbWlzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lYXJseVJ1bnRpbWVTdGFnZVByb21pc2UucHJvbWlzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ydW50aW1lU3RhZ2VQcm9taXNlLnByb21pc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZHluYW1pY1N0YWdlUHJvbWlzZS5wcm9taXNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzdGFnZTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoYEludmFsaWQgcmVuZGVyIHN0YWdlOiAke3N0YWdlfWApLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU4ODFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICB3YWl0Rm9yU3RhZ2Uoc3RhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RhZ2VQcm9taXNlKHN0YWdlKTtcbiAgICB9XG4gICAgZGVsYXlVbnRpbFN0YWdlKHN0YWdlLCBkaXNwbGF5TmFtZSwgcmVzb2x2ZWRWYWx1ZSkge1xuICAgICAgICBjb25zdCBpb1RyaWdnZXJQcm9taXNlID0gdGhpcy5nZXRTdGFnZVByb21pc2Uoc3RhZ2UpO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gbWFrZURldnRvb2xzSU9Qcm9taXNlRnJvbUlPVHJpZ2dlcihpb1RyaWdnZXJQcm9taXNlLCBkaXNwbGF5TmFtZSwgcmVzb2x2ZWRWYWx1ZSk7XG4gICAgICAgIC8vIEFuYWxvZ291c2x5IHRvIGBtYWtlSGFuZ2luZ1Byb21pc2VgLCB3ZSBtaWdodCByZWplY3QgdGhpcyBwcm9taXNlIGlmIHRoZSBzaWduYWwgaXMgaW52b2tlZC5cbiAgICAgICAgLy8gKGUuZy4gaW4gdGhlIGNhc2Ugd2hlcmUgd2UgZG9uJ3Qgd2FudCB3YW50IHRoZSByZW5kZXIgdG8gcHJvY2VlZCB0byB0aGUgZHluYW1pYyBzdGFnZSBhbmQgYWJvcnQgaXQpLlxuICAgICAgICAvLyBXZSBzaG91bGRuJ3QgY29uc2lkZXIgdGhpcyBhbiB1bmhhbmRsZWQgcmVqZWN0aW9uLCBzbyB3ZSBhdHRhY2ggYSBub29wIGNhdGNoIGhhbmRsZXIgaGVyZSB0byBzdXBwcmVzcyB0aGlzIHdhcm5pbmcuXG4gICAgICAgIGlmICh0aGlzLmFib3J0U2lnbmFsKSB7XG4gICAgICAgICAgICBwcm9taXNlLmNhdGNoKGlnbm9yZVJlamVjdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxufVxuZnVuY3Rpb24gaWdub3JlUmVqZWN0KCkge31cbi8vIFRPRE8ocmVzdGFydC1vbi1jYWNoZS1taXNzKTogdGhlIGxheWVyaW5nIG9mIGBkZWxheVVudGlsU3RhZ2VgLFxuLy8gYG1ha2VEZXZ0b29sc0lPUHJvbWlzZUZyb21JT1RyaWdnZXJgIGFuZCBhbmQgYG1ha2VEZXZ0b29sc0lPQXdhcmVQcm9taXNlYFxuLy8gaXMgY29uZnVzaW5nLCB3ZSBzaG91bGQgY2xlYW4gaXQgdXAuXG5mdW5jdGlvbiBtYWtlRGV2dG9vbHNJT1Byb21pc2VGcm9tSU9UcmlnZ2VyKGlvVHJpZ2dlciwgZGlzcGxheU5hbWUsIHJlc29sdmVkVmFsdWUpIHtcbiAgICAvLyBJZiB3ZSBjcmVhdGUgYSBgbmV3IFByb21pc2VgIGFuZCBnaXZlIGl0IGEgZGlzcGxheU5hbWVcbiAgICAvLyAod2l0aCBubyB1c2Vyc3BhY2UgY29kZSBhYm92ZSB1cyBpbiB0aGUgc3RhY2spXG4gICAgLy8gUmVhY3QgRGV2dG9vbHMgd2lsbCB1c2UgaXQgYXMgdGhlIElPIGNhdXNlIHdoZW4gZGV0ZXJtaW5pbmcgXCJzdXNwZW5kZWQgYnlcIi5cbiAgICAvLyBJbiBwYXJ0aWN1bGFyLCBpdCBzaG91bGQgc2hhZG93IGFueSBpbm5lciBJTyB0aGF0IHJlc29sdmVkL3JlamVjdGVkIHRoZSBwcm9taXNlXG4gICAgLy8gKGluIGNhc2Ugb2Ygc3RhZ2VkIHJlbmRlcmluZywgdGhpcyB3aWxsIGJlIHRoZSBgc2V0VGltZW91dGAgdGhhdCB0cmlnZ2VycyB0aGUgcmVsZXZhbnQgc3RhZ2UpXG4gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57XG4gICAgICAgIGlvVHJpZ2dlci50aGVuKHJlc29sdmUuYmluZChudWxsLCByZXNvbHZlZFZhbHVlKSwgcmVqZWN0KTtcbiAgICB9KTtcbiAgICBpZiAoZGlzcGxheU5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgIHByb21pc2UuZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXN0YWdlZC1yZW5kZXJpbmcuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/app-render/staged-rendering.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/app-render/vary-params.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/app-render/vary-params.js ***!
|
||
\*****************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n accumulateRootVaryParam: function() {\n return accumulateRootVaryParam;\n },\n accumulateVaryParam: function() {\n return accumulateVaryParam;\n },\n createResponseVaryParamsAccumulator: function() {\n return createResponseVaryParamsAccumulator;\n },\n createVaryParamsAccumulator: function() {\n return createVaryParamsAccumulator;\n },\n createVaryingParams: function() {\n return createVaryingParams;\n },\n createVaryingSearchParams: function() {\n return createVaryingSearchParams;\n },\n emptyVaryParamsAccumulator: function() {\n return emptyVaryParamsAccumulator;\n },\n finishAccumulatingVaryParams: function() {\n return finishAccumulatingVaryParams;\n },\n getMetadataVaryParamsAccumulator: function() {\n return getMetadataVaryParamsAccumulator;\n },\n getMetadataVaryParamsThenable: function() {\n return getMetadataVaryParamsThenable;\n },\n getRootParamsVaryParamsAccumulator: function() {\n return getRootParamsVaryParamsAccumulator;\n },\n getVaryParamsThenable: function() {\n return getVaryParamsThenable;\n },\n getViewportVaryParamsAccumulator: function() {\n return getViewportVaryParamsAccumulator;\n }\n});\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ./work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nfunction createSegmentVaryParamsAccumulator() {\n const accumulator = {\n varyParams: new Set(),\n status: 'pending',\n value: new Set(),\n then (onfulfilled) {\n if (onfulfilled) {\n if (accumulator.status === 'pending') {\n accumulator.resolvers.push(onfulfilled);\n } else {\n onfulfilled(accumulator.value);\n }\n }\n },\n resolvers: []\n };\n return accumulator;\n}\n/**\n * A singleton accumulator that's already resolved to an empty Set. Use this for\n * segments where we know upfront that no params will be accessed, such as\n * client components or segments without user code.\n *\n * Benefits:\n * - No need to accumulate or resolve later\n * - Resilient: resolves correctly even if other tracking fails\n * - Memory efficient: reuses the same object\n */ const emptySet = new Set();\nconst emptyVaryParamsAccumulator = {\n varyParams: emptySet,\n status: 'fulfilled',\n value: emptySet,\n then (onfulfilled) {\n if (onfulfilled) {\n onfulfilled(emptySet);\n }\n },\n resolvers: []\n};\nfunction createResponseVaryParamsAccumulator() {\n // Create the head and rootParams accumulators as top-level fields.\n // Segment accumulators are added to the segments set as they are created.\n const head = createSegmentVaryParamsAccumulator();\n const rootParams = createSegmentVaryParamsAccumulator();\n const segments = new Set();\n return {\n head,\n rootParams,\n segments\n };\n}\nfunction createVaryParamsAccumulator() {\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-runtime':\n {\n const responseAccumulator = workUnitStore.varyParamsAccumulator;\n if (responseAccumulator !== null) {\n const accumulator = createSegmentVaryParamsAccumulator();\n responseAccumulator.segments.add(accumulator);\n return accumulator;\n }\n return null;\n }\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'prerender-client':\n case 'validation-client':\n case 'unstable-cache':\n case 'generate-static-params':\n break;\n default:\n workUnitStore;\n }\n }\n return null;\n}\nfunction getMetadataVaryParamsAccumulator() {\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-runtime':\n {\n const responseAccumulator = workUnitStore.varyParamsAccumulator;\n if (responseAccumulator !== null) {\n return responseAccumulator.head;\n }\n return null;\n }\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'prerender-client':\n case 'validation-client':\n case 'unstable-cache':\n case 'generate-static-params':\n return null;\n default:\n workUnitStore;\n }\n }\n return null;\n}\nfunction getVaryParamsThenable(accumulator) {\n return accumulator;\n}\nfunction getMetadataVaryParamsThenable() {\n const accumulator = getMetadataVaryParamsAccumulator();\n if (accumulator !== null) {\n return getVaryParamsThenable(accumulator);\n }\n return null;\n}\nconst getViewportVaryParamsAccumulator = getMetadataVaryParamsAccumulator;\nfunction getRootParamsVaryParamsAccumulator() {\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-runtime':\n {\n const responseAccumulator = workUnitStore.varyParamsAccumulator;\n if (responseAccumulator !== null) {\n return responseAccumulator.rootParams;\n }\n return null;\n }\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'prerender-client':\n case 'validation-client':\n case 'unstable-cache':\n case 'generate-static-params':\n return null;\n default:\n workUnitStore;\n }\n }\n return null;\n}\nfunction accumulateVaryParam(accumulator, paramName) {\n accumulator.varyParams.add(paramName);\n}\nfunction accumulateRootVaryParam(paramName) {\n const rootParamsAccumulator = getRootParamsVaryParamsAccumulator();\n if (rootParamsAccumulator !== null) {\n accumulateVaryParam(rootParamsAccumulator, paramName);\n }\n}\nfunction createVaryingParams(accumulator, originalParamsObject, optionalCatchAllParamName) {\n if (optionalCatchAllParamName !== null) {\n // When there's an optional catch-all param with no value (e.g.,\n // [[...slug]] at /), the param doesn't exist as a property on the params\n // object. Use a Proxy to track all param access — both existing params\n // and the missing optional param — including enumeration patterns like\n // Object.keys(), spread, for...in, and `in` checks.\n return new Proxy(originalParamsObject, {\n get (target, prop, receiver) {\n if (typeof prop === 'string') {\n if (prop === optionalCatchAllParamName || Object.prototype.hasOwnProperty.call(target, prop)) {\n accumulateVaryParam(accumulator, prop);\n }\n }\n return Reflect.get(target, prop, receiver);\n },\n has (target, prop) {\n if (prop === optionalCatchAllParamName) {\n accumulateVaryParam(accumulator, optionalCatchAllParamName);\n }\n return Reflect.has(target, prop);\n },\n ownKeys (target) {\n // Enumerating the params object means the user's code may depend on\n // which params are present, so conservatively track the optional\n // param as accessed.\n accumulateVaryParam(accumulator, optionalCatchAllParamName);\n return Reflect.ownKeys(target);\n }\n });\n }\n // When there's no optional catch-all, all params exist as properties on the\n // object, so we can use defineProperty getters instead of a Proxy. This is\n // faster because the engine can optimize property access on regular objects\n // more aggressively than Proxy trap calls.\n const underlyingParamsWithVarying = {};\n for(const paramName in originalParamsObject){\n Object.defineProperty(underlyingParamsWithVarying, paramName, {\n get () {\n accumulateVaryParam(accumulator, paramName);\n return originalParamsObject[paramName];\n },\n enumerable: true\n });\n }\n return underlyingParamsWithVarying;\n}\nfunction createVaryingSearchParams(accumulator, originalSearchParamsObject) {\n const underlyingSearchParamsWithVarying = {};\n for(const searchParamName in originalSearchParamsObject){\n Object.defineProperty(underlyingSearchParamsWithVarying, searchParamName, {\n get () {\n // TODO: Unlike path params, we don't vary track each search param\n // individually. The entire search string is treated as a single param.\n // This may change in the future.\n accumulateVaryParam(accumulator, '?');\n return originalSearchParamsObject[searchParamName];\n },\n enumerable: true\n });\n }\n return underlyingSearchParamsWithVarying;\n}\nasync function finishAccumulatingVaryParams(responseAccumulator) {\n const rootVaryParams = responseAccumulator.rootParams.varyParams;\n // Resolve head\n finishSegmentAccumulator(responseAccumulator.head, rootVaryParams);\n // Resolve each segment\n for (const segmentAccumulator of responseAccumulator.segments){\n finishSegmentAccumulator(segmentAccumulator, rootVaryParams);\n }\n // Now that the thenables are resolved, Flight should be able to flush the\n // vary params into the response stream. This work gets scheduled internally\n // by Flight using a microtask as soon as we notify the thenable listeners.\n //\n // We need to ensure that Flight's pending queues are emptied before this\n // function returns; the caller will abort the prerender immediately after.\n // We can't use a macrotask, because that would allow dynamic IO to sneak\n // into the response. So we use microtasks instead.\n //\n // The exact number of awaits here isn't important (indeed, one seems to be\n // sufficient, at the time of writing), as long as we wait enough ticks for\n // Flight to finish writing the response.\n //\n // Anything that remains in Flight's internal queue after these awaits must\n // be actual dynamic IO, not caused by pending vary params tasks. In other\n // words, failing to do this would cause us to treat a fully static prerender\n // as if it were partially dynamic.\n await Promise.resolve();\n await Promise.resolve();\n await Promise.resolve();\n}\nfunction finishSegmentAccumulator(accumulator, rootVaryParams) {\n if (accumulator.status !== 'pending') {\n return;\n }\n const merged = new Set(accumulator.varyParams);\n for (const param of rootVaryParams){\n merged.add(param);\n }\n accumulator.value = merged;\n accumulator.status = 'fulfilled';\n for (const resolver of accumulator.resolvers){\n resolver(merged);\n }\n accumulator.resolvers = [];\n}\n\n//# sourceMappingURL=vary-params.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL3ZhcnktcGFyYW1zLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQWNMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxzQ0FBc0MsbUJBQU8sQ0FBQyw4RUFBb0M7QUFDbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL2FwcC1yZW5kZXIvdmFyeS1wYXJhbXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBhY2N1bXVsYXRlUm9vdFZhcnlQYXJhbTogbnVsbCxcbiAgICBhY2N1bXVsYXRlVmFyeVBhcmFtOiBudWxsLFxuICAgIGNyZWF0ZVJlc3BvbnNlVmFyeVBhcmFtc0FjY3VtdWxhdG9yOiBudWxsLFxuICAgIGNyZWF0ZVZhcnlQYXJhbXNBY2N1bXVsYXRvcjogbnVsbCxcbiAgICBjcmVhdGVWYXJ5aW5nUGFyYW1zOiBudWxsLFxuICAgIGNyZWF0ZVZhcnlpbmdTZWFyY2hQYXJhbXM6IG51bGwsXG4gICAgZW1wdHlWYXJ5UGFyYW1zQWNjdW11bGF0b3I6IG51bGwsXG4gICAgZmluaXNoQWNjdW11bGF0aW5nVmFyeVBhcmFtczogbnVsbCxcbiAgICBnZXRNZXRhZGF0YVZhcnlQYXJhbXNBY2N1bXVsYXRvcjogbnVsbCxcbiAgICBnZXRNZXRhZGF0YVZhcnlQYXJhbXNUaGVuYWJsZTogbnVsbCxcbiAgICBnZXRSb290UGFyYW1zVmFyeVBhcmFtc0FjY3VtdWxhdG9yOiBudWxsLFxuICAgIGdldFZhcnlQYXJhbXNUaGVuYWJsZTogbnVsbCxcbiAgICBnZXRWaWV3cG9ydFZhcnlQYXJhbXNBY2N1bXVsYXRvcjogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBhY2N1bXVsYXRlUm9vdFZhcnlQYXJhbTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBhY2N1bXVsYXRlUm9vdFZhcnlQYXJhbTtcbiAgICB9LFxuICAgIGFjY3VtdWxhdGVWYXJ5UGFyYW06IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gYWNjdW11bGF0ZVZhcnlQYXJhbTtcbiAgICB9LFxuICAgIGNyZWF0ZVJlc3BvbnNlVmFyeVBhcmFtc0FjY3VtdWxhdG9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVJlc3BvbnNlVmFyeVBhcmFtc0FjY3VtdWxhdG9yO1xuICAgIH0sXG4gICAgY3JlYXRlVmFyeVBhcmFtc0FjY3VtdWxhdG9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVZhcnlQYXJhbXNBY2N1bXVsYXRvcjtcbiAgICB9LFxuICAgIGNyZWF0ZVZhcnlpbmdQYXJhbXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlVmFyeWluZ1BhcmFtcztcbiAgICB9LFxuICAgIGNyZWF0ZVZhcnlpbmdTZWFyY2hQYXJhbXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlVmFyeWluZ1NlYXJjaFBhcmFtcztcbiAgICB9LFxuICAgIGVtcHR5VmFyeVBhcmFtc0FjY3VtdWxhdG9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGVtcHR5VmFyeVBhcmFtc0FjY3VtdWxhdG9yO1xuICAgIH0sXG4gICAgZmluaXNoQWNjdW11bGF0aW5nVmFyeVBhcmFtczogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBmaW5pc2hBY2N1bXVsYXRpbmdWYXJ5UGFyYW1zO1xuICAgIH0sXG4gICAgZ2V0TWV0YWRhdGFWYXJ5UGFyYW1zQWNjdW11bGF0b3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZ2V0TWV0YWRhdGFWYXJ5UGFyYW1zQWNjdW11bGF0b3I7XG4gICAgfSxcbiAgICBnZXRNZXRhZGF0YVZhcnlQYXJhbXNUaGVuYWJsZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRNZXRhZGF0YVZhcnlQYXJhbXNUaGVuYWJsZTtcbiAgICB9LFxuICAgIGdldFJvb3RQYXJhbXNWYXJ5UGFyYW1zQWNjdW11bGF0b3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZ2V0Um9vdFBhcmFtc1ZhcnlQYXJhbXNBY2N1bXVsYXRvcjtcbiAgICB9LFxuICAgIGdldFZhcnlQYXJhbXNUaGVuYWJsZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRWYXJ5UGFyYW1zVGhlbmFibGU7XG4gICAgfSxcbiAgICBnZXRWaWV3cG9ydFZhcnlQYXJhbXNBY2N1bXVsYXRvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRWaWV3cG9ydFZhcnlQYXJhbXNBY2N1bXVsYXRvcjtcbiAgICB9XG59KTtcbmNvbnN0IF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsID0gcmVxdWlyZShcIi4vd29yay11bml0LWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWxcIik7XG5mdW5jdGlvbiBjcmVhdGVTZWdtZW50VmFyeVBhcmFtc0FjY3VtdWxhdG9yKCkge1xuICAgIGNvbnN0IGFjY3VtdWxhdG9yID0ge1xuICAgICAgICB2YXJ5UGFyYW1zOiBuZXcgU2V0KCksXG4gICAgICAgIHN0YXR1czogJ3BlbmRpbmcnLFxuICAgICAgICB2YWx1ZTogbmV3IFNldCgpLFxuICAgICAgICB0aGVuIChvbmZ1bGZpbGxlZCkge1xuICAgICAgICAgICAgaWYgKG9uZnVsZmlsbGVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKGFjY3VtdWxhdG9yLnN0YXR1cyA9PT0gJ3BlbmRpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yLnJlc29sdmVycy5wdXNoKG9uZnVsZmlsbGVkKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvbmZ1bGZpbGxlZChhY2N1bXVsYXRvci52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZXNvbHZlcnM6IFtdXG4gICAgfTtcbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG59XG4vKipcbiAqIEEgc2luZ2xldG9uIGFjY3VtdWxhdG9yIHRoYXQncyBhbHJlYWR5IHJlc29sdmVkIHRvIGFuIGVtcHR5IFNldC4gVXNlIHRoaXMgZm9yXG4gKiBzZWdtZW50cyB3aGVyZSB3ZSBrbm93IHVwZnJvbnQgdGhhdCBubyBwYXJhbXMgd2lsbCBiZSBhY2Nlc3NlZCwgc3VjaCBhc1xuICogY2xpZW50IGNvbXBvbmVudHMgb3Igc2VnbWVudHMgd2l0aG91dCB1c2VyIGNvZGUuXG4gKlxuICogQmVuZWZpdHM6XG4gKiAtIE5vIG5lZWQgdG8gYWNjdW11bGF0ZSBvciByZXNvbHZlIGxhdGVyXG4gKiAtIFJlc2lsaWVudDogcmVzb2x2ZXMgY29ycmVjdGx5IGV2ZW4gaWYgb3RoZXIgdHJhY2tpbmcgZmFpbHNcbiAqIC0gTWVtb3J5IGVmZmljaWVudDogcmV1c2VzIHRoZSBzYW1lIG9iamVjdFxuICovIGNvbnN0IGVtcHR5U2V0ID0gbmV3IFNldCgpO1xuY29uc3QgZW1wdHlWYXJ5UGFyYW1zQWNjdW11bGF0b3IgPSB7XG4gICAgdmFyeVBhcmFtczogZW1wdHlTZXQsXG4gICAgc3RhdHVzOiAnZnVsZmlsbGVkJyxcbiAgICB2YWx1ZTogZW1wdHlTZXQsXG4gICAgdGhlbiAob25mdWxmaWxsZWQpIHtcbiAgICAgICAgaWYgKG9uZnVsZmlsbGVkKSB7XG4gICAgICAgICAgICBvbmZ1bGZpbGxlZChlbXB0eVNldCk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHJlc29sdmVyczogW11cbn07XG5mdW5jdGlvbiBjcmVhdGVSZXNwb25zZVZhcnlQYXJhbXNBY2N1bXVsYXRvcigpIHtcbiAgICAvLyBDcmVhdGUgdGhlIGhlYWQgYW5kIHJvb3RQYXJhbXMgYWNjdW11bGF0b3JzIGFzIHRvcC1sZXZlbCBmaWVsZHMuXG4gICAgLy8gU2VnbWVudCBhY2N1bXVsYXRvcnMgYXJlIGFkZGVkIHRvIHRoZSBzZWdtZW50cyBzZXQgYXMgdGhleSBhcmUgY3JlYXRlZC5cbiAgICBjb25zdCBoZWFkID0gY3JlYXRlU2VnbWVudFZhcnlQYXJhbXNBY2N1bXVsYXRvcigpO1xuICAgIGNvbnN0IHJvb3RQYXJhbXMgPSBjcmVhdGVTZWdtZW50VmFyeVBhcmFtc0FjY3VtdWxhdG9yKCk7XG4gICAgY29uc3Qgc2VnbWVudHMgPSBuZXcgU2V0KCk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaGVhZCxcbiAgICAgICAgcm9vdFBhcmFtcyxcbiAgICAgICAgc2VnbWVudHNcbiAgICB9O1xufVxuZnVuY3Rpb24gY3JlYXRlVmFyeVBhcmFtc0FjY3VtdWxhdG9yKCkge1xuICAgIGNvbnN0IHdvcmtVbml0U3RvcmUgPSBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICh3b3JrVW5pdFN0b3JlKSB7XG4gICAgICAgIHN3aXRjaCh3b3JrVW5pdFN0b3JlLnR5cGUpe1xuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlQWNjdW11bGF0b3IgPSB3b3JrVW5pdFN0b3JlLnZhcnlQYXJhbXNBY2N1bXVsYXRvcjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlQWNjdW11bGF0b3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjY3VtdWxhdG9yID0gY3JlYXRlU2VnbWVudFZhcnlQYXJhbXNBY2N1bXVsYXRvcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VBY2N1bXVsYXRvci5zZWdtZW50cy5hZGQoYWNjdW11bGF0b3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgICAgICAgIGNhc2UgJ2NhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByaXZhdGUtY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWNsaWVudCc6XG4gICAgICAgICAgICBjYXNlICd2YWxpZGF0aW9uLWNsaWVudCc6XG4gICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICBjYXNlICdnZW5lcmF0ZS1zdGF0aWMtcGFyYW1zJzpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGdldE1ldGFkYXRhVmFyeVBhcmFtc0FjY3VtdWxhdG9yKCkge1xuICAgIGNvbnN0IHdvcmtVbml0U3RvcmUgPSBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICh3b3JrVW5pdFN0b3JlKSB7XG4gICAgICAgIHN3aXRjaCh3b3JrVW5pdFN0b3JlLnR5cGUpe1xuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlQWNjdW11bGF0b3IgPSB3b3JrVW5pdFN0b3JlLnZhcnlQYXJhbXNBY2N1bXVsYXRvcjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlQWNjdW11bGF0b3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZUFjY3VtdWxhdG9yLmhlYWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ3ZhbGlkYXRpb24tY2xpZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ2dlbmVyYXRlLXN0YXRpYy1wYXJhbXMnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB3b3JrVW5pdFN0b3JlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gZ2V0VmFyeVBhcmFtc1RoZW5hYmxlKGFjY3VtdWxhdG9yKSB7XG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xufVxuZnVuY3Rpb24gZ2V0TWV0YWRhdGFWYXJ5UGFyYW1zVGhlbmFibGUoKSB7XG4gICAgY29uc3QgYWNjdW11bGF0b3IgPSBnZXRNZXRhZGF0YVZhcnlQYXJhbXNBY2N1bXVsYXRvcigpO1xuICAgIGlmIChhY2N1bXVsYXRvciAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZ2V0VmFyeVBhcmFtc1RoZW5hYmxlKGFjY3VtdWxhdG9yKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5jb25zdCBnZXRWaWV3cG9ydFZhcnlQYXJhbXNBY2N1bXVsYXRvciA9IGdldE1ldGFkYXRhVmFyeVBhcmFtc0FjY3VtdWxhdG9yO1xuZnVuY3Rpb24gZ2V0Um9vdFBhcmFtc1ZhcnlQYXJhbXNBY2N1bXVsYXRvcigpIHtcbiAgICBjb25zdCB3b3JrVW5pdFN0b3JlID0gX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya1VuaXRBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgICAgICBzd2l0Y2god29ya1VuaXRTdG9yZS50eXBlKXtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZUFjY3VtdWxhdG9yID0gd29ya1VuaXRTdG9yZS52YXJ5UGFyYW1zQWNjdW11bGF0b3I7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZUFjY3VtdWxhdG9yICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2VBY2N1bXVsYXRvci5yb290UGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgICAgICAgIGNhc2UgJ2NhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByaXZhdGUtY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWNsaWVudCc6XG4gICAgICAgICAgICBjYXNlICd2YWxpZGF0aW9uLWNsaWVudCc6XG4gICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICBjYXNlICdnZW5lcmF0ZS1zdGF0aWMtcGFyYW1zJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGFjY3VtdWxhdGVWYXJ5UGFyYW0oYWNjdW11bGF0b3IsIHBhcmFtTmFtZSkge1xuICAgIGFjY3VtdWxhdG9yLnZhcnlQYXJhbXMuYWRkKHBhcmFtTmFtZSk7XG59XG5mdW5jdGlvbiBhY2N1bXVsYXRlUm9vdFZhcnlQYXJhbShwYXJhbU5hbWUpIHtcbiAgICBjb25zdCByb290UGFyYW1zQWNjdW11bGF0b3IgPSBnZXRSb290UGFyYW1zVmFyeVBhcmFtc0FjY3VtdWxhdG9yKCk7XG4gICAgaWYgKHJvb3RQYXJhbXNBY2N1bXVsYXRvciAhPT0gbnVsbCkge1xuICAgICAgICBhY2N1bXVsYXRlVmFyeVBhcmFtKHJvb3RQYXJhbXNBY2N1bXVsYXRvciwgcGFyYW1OYW1lKTtcbiAgICB9XG59XG5mdW5jdGlvbiBjcmVhdGVWYXJ5aW5nUGFyYW1zKGFjY3VtdWxhdG9yLCBvcmlnaW5hbFBhcmFtc09iamVjdCwgb3B0aW9uYWxDYXRjaEFsbFBhcmFtTmFtZSkge1xuICAgIGlmIChvcHRpb25hbENhdGNoQWxsUGFyYW1OYW1lICE9PSBudWxsKSB7XG4gICAgICAgIC8vIFdoZW4gdGhlcmUncyBhbiBvcHRpb25hbCBjYXRjaC1hbGwgcGFyYW0gd2l0aCBubyB2YWx1ZSAoZS5nLixcbiAgICAgICAgLy8gW1suLi5zbHVnXV0gYXQgLyksIHRoZSBwYXJhbSBkb2Vzbid0IGV4aXN0IGFzIGEgcHJvcGVydHkgb24gdGhlIHBhcmFtc1xuICAgICAgICAvLyBvYmplY3QuIFVzZSBhIFByb3h5IHRvIHRyYWNrIGFsbCBwYXJhbSBhY2Nlc3Mg4oCUIGJvdGggZXhpc3RpbmcgcGFyYW1zXG4gICAgICAgIC8vIGFuZCB0aGUgbWlzc2luZyBvcHRpb25hbCBwYXJhbSDigJQgaW5jbHVkaW5nIGVudW1lcmF0aW9uIHBhdHRlcm5zIGxpa2VcbiAgICAgICAgLy8gT2JqZWN0LmtleXMoKSwgc3ByZWFkLCBmb3IuLi5pbiwgYW5kIGBpbmAgY2hlY2tzLlxuICAgICAgICByZXR1cm4gbmV3IFByb3h5KG9yaWdpbmFsUGFyYW1zT2JqZWN0LCB7XG4gICAgICAgICAgICBnZXQgKHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wID09PSBvcHRpb25hbENhdGNoQWxsUGFyYW1OYW1lIHx8IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0YXJnZXQsIHByb3ApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRlVmFyeVBhcmFtKGFjY3VtdWxhdG9yLCBwcm9wKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGFzICh0YXJnZXQsIHByb3ApIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcCA9PT0gb3B0aW9uYWxDYXRjaEFsbFBhcmFtTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRlVmFyeVBhcmFtKGFjY3VtdWxhdG9yLCBvcHRpb25hbENhdGNoQWxsUGFyYW1OYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuaGFzKHRhcmdldCwgcHJvcCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3duS2V5cyAodGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgLy8gRW51bWVyYXRpbmcgdGhlIHBhcmFtcyBvYmplY3QgbWVhbnMgdGhlIHVzZXIncyBjb2RlIG1heSBkZXBlbmQgb25cbiAgICAgICAgICAgICAgICAvLyB3aGljaCBwYXJhbXMgYXJlIHByZXNlbnQsIHNvIGNvbnNlcnZhdGl2ZWx5IHRyYWNrIHRoZSBvcHRpb25hbFxuICAgICAgICAgICAgICAgIC8vIHBhcmFtIGFzIGFjY2Vzc2VkLlxuICAgICAgICAgICAgICAgIGFjY3VtdWxhdGVWYXJ5UGFyYW0oYWNjdW11bGF0b3IsIG9wdGlvbmFsQ2F0Y2hBbGxQYXJhbU5hbWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0Lm93bktleXModGFyZ2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8vIFdoZW4gdGhlcmUncyBubyBvcHRpb25hbCBjYXRjaC1hbGwsIGFsbCBwYXJhbXMgZXhpc3QgYXMgcHJvcGVydGllcyBvbiB0aGVcbiAgICAvLyBvYmplY3QsIHNvIHdlIGNhbiB1c2UgZGVmaW5lUHJvcGVydHkgZ2V0dGVycyBpbnN0ZWFkIG9mIGEgUHJveHkuIFRoaXMgaXNcbiAgICAvLyBmYXN0ZXIgYmVjYXVzZSB0aGUgZW5naW5lIGNhbiBvcHRpbWl6ZSBwcm9wZXJ0eSBhY2Nlc3Mgb24gcmVndWxhciBvYmplY3RzXG4gICAgLy8gbW9yZSBhZ2dyZXNzaXZlbHkgdGhhbiBQcm94eSB0cmFwIGNhbGxzLlxuICAgIGNvbnN0IHVuZGVybHlpbmdQYXJhbXNXaXRoVmFyeWluZyA9IHt9O1xuICAgIGZvcihjb25zdCBwYXJhbU5hbWUgaW4gb3JpZ2luYWxQYXJhbXNPYmplY3Qpe1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodW5kZXJseWluZ1BhcmFtc1dpdGhWYXJ5aW5nLCBwYXJhbU5hbWUsIHtcbiAgICAgICAgICAgIGdldCAoKSB7XG4gICAgICAgICAgICAgICAgYWNjdW11bGF0ZVZhcnlQYXJhbShhY2N1bXVsYXRvciwgcGFyYW1OYW1lKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxQYXJhbXNPYmplY3RbcGFyYW1OYW1lXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZXJseWluZ1BhcmFtc1dpdGhWYXJ5aW5nO1xufVxuZnVuY3Rpb24gY3JlYXRlVmFyeWluZ1NlYXJjaFBhcmFtcyhhY2N1bXVsYXRvciwgb3JpZ2luYWxTZWFyY2hQYXJhbXNPYmplY3QpIHtcbiAgICBjb25zdCB1bmRlcmx5aW5nU2VhcmNoUGFyYW1zV2l0aFZhcnlpbmcgPSB7fTtcbiAgICBmb3IoY29uc3Qgc2VhcmNoUGFyYW1OYW1lIGluIG9yaWdpbmFsU2VhcmNoUGFyYW1zT2JqZWN0KXtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHVuZGVybHlpbmdTZWFyY2hQYXJhbXNXaXRoVmFyeWluZywgc2VhcmNoUGFyYW1OYW1lLCB7XG4gICAgICAgICAgICBnZXQgKCkge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IFVubGlrZSBwYXRoIHBhcmFtcywgd2UgZG9uJ3QgdmFyeSB0cmFjayBlYWNoIHNlYXJjaCBwYXJhbVxuICAgICAgICAgICAgICAgIC8vIGluZGl2aWR1YWxseS4gVGhlIGVudGlyZSBzZWFyY2ggc3RyaW5nIGlzIHRyZWF0ZWQgYXMgYSBzaW5nbGUgcGFyYW0uXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG4gICAgICAgICAgICAgICAgYWNjdW11bGF0ZVZhcnlQYXJhbShhY2N1bXVsYXRvciwgJz8nKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxTZWFyY2hQYXJhbXNPYmplY3Rbc2VhcmNoUGFyYW1OYW1lXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZXJseWluZ1NlYXJjaFBhcmFtc1dpdGhWYXJ5aW5nO1xufVxuYXN5bmMgZnVuY3Rpb24gZmluaXNoQWNjdW11bGF0aW5nVmFyeVBhcmFtcyhyZXNwb25zZUFjY3VtdWxhdG9yKSB7XG4gICAgY29uc3Qgcm9vdFZhcnlQYXJhbXMgPSByZXNwb25zZUFjY3VtdWxhdG9yLnJvb3RQYXJhbXMudmFyeVBhcmFtcztcbiAgICAvLyBSZXNvbHZlIGhlYWRcbiAgICBmaW5pc2hTZWdtZW50QWNjdW11bGF0b3IocmVzcG9uc2VBY2N1bXVsYXRvci5oZWFkLCByb290VmFyeVBhcmFtcyk7XG4gICAgLy8gUmVzb2x2ZSBlYWNoIHNlZ21lbnRcbiAgICBmb3IgKGNvbnN0IHNlZ21lbnRBY2N1bXVsYXRvciBvZiByZXNwb25zZUFjY3VtdWxhdG9yLnNlZ21lbnRzKXtcbiAgICAgICAgZmluaXNoU2VnbWVudEFjY3VtdWxhdG9yKHNlZ21lbnRBY2N1bXVsYXRvciwgcm9vdFZhcnlQYXJhbXMpO1xuICAgIH1cbiAgICAvLyBOb3cgdGhhdCB0aGUgdGhlbmFibGVzIGFyZSByZXNvbHZlZCwgRmxpZ2h0IHNob3VsZCBiZSBhYmxlIHRvIGZsdXNoIHRoZVxuICAgIC8vIHZhcnkgcGFyYW1zIGludG8gdGhlIHJlc3BvbnNlIHN0cmVhbS4gVGhpcyB3b3JrIGdldHMgc2NoZWR1bGVkIGludGVybmFsbHlcbiAgICAvLyBieSBGbGlnaHQgdXNpbmcgYSBtaWNyb3Rhc2sgYXMgc29vbiBhcyB3ZSBub3RpZnkgdGhlIHRoZW5hYmxlIGxpc3RlbmVycy5cbiAgICAvL1xuICAgIC8vIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgRmxpZ2h0J3MgcGVuZGluZyBxdWV1ZXMgYXJlIGVtcHRpZWQgYmVmb3JlIHRoaXNcbiAgICAvLyBmdW5jdGlvbiByZXR1cm5zOyB0aGUgY2FsbGVyIHdpbGwgYWJvcnQgdGhlIHByZXJlbmRlciBpbW1lZGlhdGVseSBhZnRlci5cbiAgICAvLyBXZSBjYW4ndCB1c2UgYSBtYWNyb3Rhc2ssIGJlY2F1c2UgdGhhdCB3b3VsZCBhbGxvdyBkeW5hbWljIElPIHRvIHNuZWFrXG4gICAgLy8gaW50byB0aGUgcmVzcG9uc2UuIFNvIHdlIHVzZSBtaWNyb3Rhc2tzIGluc3RlYWQuXG4gICAgLy9cbiAgICAvLyBUaGUgZXhhY3QgbnVtYmVyIG9mIGF3YWl0cyBoZXJlIGlzbid0IGltcG9ydGFudCAoaW5kZWVkLCBvbmUgc2VlbXMgdG8gYmVcbiAgICAvLyBzdWZmaWNpZW50LCBhdCB0aGUgdGltZSBvZiB3cml0aW5nKSwgYXMgbG9uZyBhcyB3ZSB3YWl0IGVub3VnaCB0aWNrcyBmb3JcbiAgICAvLyBGbGlnaHQgdG8gZmluaXNoIHdyaXRpbmcgdGhlIHJlc3BvbnNlLlxuICAgIC8vXG4gICAgLy8gQW55dGhpbmcgdGhhdCByZW1haW5zIGluIEZsaWdodCdzIGludGVybmFsIHF1ZXVlIGFmdGVyIHRoZXNlIGF3YWl0cyBtdXN0XG4gICAgLy8gYmUgYWN0dWFsIGR5bmFtaWMgSU8sIG5vdCBjYXVzZWQgYnkgcGVuZGluZyB2YXJ5IHBhcmFtcyB0YXNrcy4gSW4gb3RoZXJcbiAgICAvLyB3b3JkcywgZmFpbGluZyB0byBkbyB0aGlzIHdvdWxkIGNhdXNlIHVzIHRvIHRyZWF0IGEgZnVsbHkgc3RhdGljIHByZXJlbmRlclxuICAgIC8vIGFzIGlmIGl0IHdlcmUgcGFydGlhbGx5IGR5bmFtaWMuXG4gICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCk7XG59XG5mdW5jdGlvbiBmaW5pc2hTZWdtZW50QWNjdW11bGF0b3IoYWNjdW11bGF0b3IsIHJvb3RWYXJ5UGFyYW1zKSB7XG4gICAgaWYgKGFjY3VtdWxhdG9yLnN0YXR1cyAhPT0gJ3BlbmRpbmcnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbWVyZ2VkID0gbmV3IFNldChhY2N1bXVsYXRvci52YXJ5UGFyYW1zKTtcbiAgICBmb3IgKGNvbnN0IHBhcmFtIG9mIHJvb3RWYXJ5UGFyYW1zKXtcbiAgICAgICAgbWVyZ2VkLmFkZChwYXJhbSk7XG4gICAgfVxuICAgIGFjY3VtdWxhdG9yLnZhbHVlID0gbWVyZ2VkO1xuICAgIGFjY3VtdWxhdG9yLnN0YXR1cyA9ICdmdWxmaWxsZWQnO1xuICAgIGZvciAoY29uc3QgcmVzb2x2ZXIgb2YgYWNjdW11bGF0b3IucmVzb2x2ZXJzKXtcbiAgICAgICAgcmVzb2x2ZXIobWVyZ2VkKTtcbiAgICB9XG4gICAgYWNjdW11bGF0b3IucmVzb2x2ZXJzID0gW107XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXZhcnktcGFyYW1zLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/app-render/vary-params.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js":
|
||
/*!*****************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js ***!
|
||
\*****************************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createDedupedByCallsiteServerErrorLoggerDev\", ({\n enumerable: true,\n get: function() {\n return createDedupedByCallsiteServerErrorLoggerDev;\n }\n}));\nconst _react = /*#__PURE__*/ _interop_require_wildcard(__webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\"));\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {\n __proto__: null\n };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nconst errorRef = {\n current: null\n};\n// React.cache is currently only available in canary/experimental React channels.\nconst cache = typeof _react.cache === 'function' ? _react.cache : (fn)=>fn;\n// When Cache Components is enabled, we record these as errors so that they\n// are captured by the dev overlay as it's more critical to fix these\n// when enabled.\nconst logErrorOrWarn = false ? 0 : console.warn;\n// We don't want to dedupe across requests.\n// The developer might've just attempted to fix the warning so we should warn again if it still happens.\nconst flushCurrentErrorIfNew = cache(// eslint-disable-next-line @typescript-eslint/no-unused-vars -- cache key\n(key)=>{\n try {\n logErrorOrWarn(errorRef.current);\n } finally{\n errorRef.current = null;\n }\n});\nfunction createDedupedByCallsiteServerErrorLoggerDev(getMessage) {\n return function logDedupedError(...args) {\n const message = getMessage(...args);\n if (true) {\n var _stack;\n const callStackFrames = (_stack = new Error().stack) == null ? void 0 : _stack.split('\\n');\n if (callStackFrames === undefined || callStackFrames.length < 4) {\n logErrorOrWarn(message);\n } else {\n // Error:\n // logDedupedError\n // asyncApiBeingAccessedSynchronously\n // <userland callsite>\n // TODO: This breaks if sourcemaps with ignore lists are enabled.\n const key = callStackFrames[4];\n errorRef.current = message;\n flushCurrentErrorIfNew(key);\n }\n } else {}\n };\n}\n\n//# sourceMappingURL=create-deduped-by-callsite-server-error-logger.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9jcmVhdGUtZGVkdXBlZC1ieS1jYWxsc2l0ZS1zZXJ2ZXItZXJyb3ItbG9nZ2VyLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsK0VBQThFO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsdURBQXVELG1CQUFPLENBQUMsaUdBQU87QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLE1BQW1DLEdBQUcsQ0FBYTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxZQUFZLElBQXFDO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsS0FBSyxFQUVOO0FBQ1Q7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL2NyZWF0ZS1kZWR1cGVkLWJ5LWNhbGxzaXRlLXNlcnZlci1lcnJvci1sb2dnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJjcmVhdGVEZWR1cGVkQnlDYWxsc2l0ZVNlcnZlckVycm9yTG9nZ2VyRGV2XCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVEZWR1cGVkQnlDYWxsc2l0ZVNlcnZlckVycm9yTG9nZ2VyRGV2O1xuICAgIH1cbn0pO1xuY29uc3QgX3JlYWN0ID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHtcbiAgICBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7XG4gICAgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTtcbiAgICB2YXIgY2FjaGVOb2RlSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7XG4gICAgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbihub2RlSW50ZXJvcCkge1xuICAgICAgICByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7XG4gICAgfSkobm9kZUludGVyb3ApO1xufVxuZnVuY3Rpb24gX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7XG4gICAgaWYgKCFub2RlSW50ZXJvcCAmJiBvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgICAgIH07XG4gICAgfVxuICAgIHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCk7XG4gICAgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7XG4gICAgICAgIHJldHVybiBjYWNoZS5nZXQob2JqKTtcbiAgICB9XG4gICAgdmFyIG5ld09iaiA9IHtcbiAgICAgICAgX19wcm90b19fOiBudWxsXG4gICAgfTtcbiAgICB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICAgZm9yKHZhciBrZXkgaW4gb2JqKXtcbiAgICAgICAgaWYgKGtleSAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICAgICAgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7XG4gICAgICAgICAgICBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3T2JqW2tleV0gPSBvYmpba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBuZXdPYmouZGVmYXVsdCA9IG9iajtcbiAgICBpZiAoY2FjaGUpIHtcbiAgICAgICAgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld09iajtcbn1cbmNvbnN0IGVycm9yUmVmID0ge1xuICAgIGN1cnJlbnQ6IG51bGxcbn07XG4vLyBSZWFjdC5jYWNoZSBpcyBjdXJyZW50bHkgb25seSBhdmFpbGFibGUgaW4gY2FuYXJ5L2V4cGVyaW1lbnRhbCBSZWFjdCBjaGFubmVscy5cbmNvbnN0IGNhY2hlID0gdHlwZW9mIF9yZWFjdC5jYWNoZSA9PT0gJ2Z1bmN0aW9uJyA/IF9yZWFjdC5jYWNoZSA6IChmbik9PmZuO1xuLy8gV2hlbiBDYWNoZSBDb21wb25lbnRzIGlzIGVuYWJsZWQsIHdlIHJlY29yZCB0aGVzZSBhcyBlcnJvcnMgc28gdGhhdCB0aGV5XG4vLyBhcmUgY2FwdHVyZWQgYnkgdGhlIGRldiBvdmVybGF5IGFzIGl0J3MgbW9yZSBjcml0aWNhbCB0byBmaXggdGhlc2Vcbi8vIHdoZW4gZW5hYmxlZC5cbmNvbnN0IGxvZ0Vycm9yT3JXYXJuID0gcHJvY2Vzcy5lbnYuX19ORVhUX0NBQ0hFX0NPTVBPTkVOVFMgPyBjb25zb2xlLmVycm9yIDogY29uc29sZS53YXJuO1xuLy8gV2UgZG9uJ3Qgd2FudCB0byBkZWR1cGUgYWNyb3NzIHJlcXVlc3RzLlxuLy8gVGhlIGRldmVsb3BlciBtaWdodCd2ZSBqdXN0IGF0dGVtcHRlZCB0byBmaXggdGhlIHdhcm5pbmcgc28gd2Ugc2hvdWxkIHdhcm4gYWdhaW4gaWYgaXQgc3RpbGwgaGFwcGVucy5cbmNvbnN0IGZsdXNoQ3VycmVudEVycm9ySWZOZXcgPSBjYWNoZSgvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzIC0tIGNhY2hlIGtleVxuKGtleSk9PntcbiAgICB0cnkge1xuICAgICAgICBsb2dFcnJvck9yV2FybihlcnJvclJlZi5jdXJyZW50KTtcbiAgICB9IGZpbmFsbHl7XG4gICAgICAgIGVycm9yUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgIH1cbn0pO1xuZnVuY3Rpb24gY3JlYXRlRGVkdXBlZEJ5Q2FsbHNpdGVTZXJ2ZXJFcnJvckxvZ2dlckRldihnZXRNZXNzYWdlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGxvZ0RlZHVwZWRFcnJvciguLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBnZXRNZXNzYWdlKC4uLmFyZ3MpO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgdmFyIF9zdGFjaztcbiAgICAgICAgICAgIGNvbnN0IGNhbGxTdGFja0ZyYW1lcyA9IChfc3RhY2sgPSBuZXcgRXJyb3IoKS5zdGFjaykgPT0gbnVsbCA/IHZvaWQgMCA6IF9zdGFjay5zcGxpdCgnXFxuJyk7XG4gICAgICAgICAgICBpZiAoY2FsbFN0YWNrRnJhbWVzID09PSB1bmRlZmluZWQgfHwgY2FsbFN0YWNrRnJhbWVzLmxlbmd0aCA8IDQpIHtcbiAgICAgICAgICAgICAgICBsb2dFcnJvck9yV2FybihtZXNzYWdlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gRXJyb3I6XG4gICAgICAgICAgICAgICAgLy8gICBsb2dEZWR1cGVkRXJyb3JcbiAgICAgICAgICAgICAgICAvLyAgIGFzeW5jQXBpQmVpbmdBY2Nlc3NlZFN5bmNocm9ub3VzbHlcbiAgICAgICAgICAgICAgICAvLyAgIDx1c2VybGFuZCBjYWxsc2l0ZT5cbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBUaGlzIGJyZWFrcyBpZiBzb3VyY2VtYXBzIHdpdGggaWdub3JlIGxpc3RzIGFyZSBlbmFibGVkLlxuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGNhbGxTdGFja0ZyYW1lc1s0XTtcbiAgICAgICAgICAgICAgICBlcnJvclJlZi5jdXJyZW50ID0gbWVzc2FnZTtcbiAgICAgICAgICAgICAgICBmbHVzaEN1cnJlbnRFcnJvcklmTmV3KGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsb2dFcnJvck9yV2FybihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNyZWF0ZS1kZWR1cGVkLWJ5LWNhbGxzaXRlLXNlcnZlci1lcnJvci1sb2dnZXIuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/dev/hot-reloader-types.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/dev/hot-reloader-types.js ***!
|
||
\*****************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n HMR_MESSAGE_SENT_TO_BROWSER: function() {\n return HMR_MESSAGE_SENT_TO_BROWSER;\n },\n HMR_MESSAGE_SENT_TO_SERVER: function() {\n return HMR_MESSAGE_SENT_TO_SERVER;\n }\n});\nvar HMR_MESSAGE_SENT_TO_BROWSER = /*#__PURE__*/ function(HMR_MESSAGE_SENT_TO_BROWSER) {\n // JSON messages:\n HMR_MESSAGE_SENT_TO_BROWSER[\"ADDED_PAGE\"] = \"addedPage\";\n HMR_MESSAGE_SENT_TO_BROWSER[\"REMOVED_PAGE\"] = \"removedPage\";\n HMR_MESSAGE_SENT_TO_BROWSER[\"RELOAD_PAGE\"] = \"reloadPage\";\n HMR_MESSAGE_SENT_TO_BROWSER[\"SERVER_COMPONENT_CHANGES\"] = \"serverComponentChanges\";\n HMR_MESSAGE_SENT_TO_BROWSER[\"MIDDLEWARE_CHANGES\"] = \"middlewareChanges\";\n HMR_MESSAGE_SENT_TO_BROWSER[\"CLIENT_CHANGES\"] = \"clientChanges\";\n HMR_MESSAGE_SENT_TO_BROWSER[\"SERVER_ONLY_CHANGES\"] = \"serverOnlyChanges\";\n HMR_MESSAGE_SENT_TO_BROWSER[\"SYNC\"] = \"sync\";\n HMR_MESSAGE_SENT_TO_BROWSER[\"BUILT\"] = \"built\";\n HMR_MESSAGE_SENT_TO_BROWSER[\"BUILDING\"] = \"building\";\n HMR_MESSAGE_SENT_TO_BROWSER[\"DEV_PAGES_MANIFEST_UPDATE\"] = \"devPagesManifestUpdate\";\n HMR_MESSAGE_SENT_TO_BROWSER[\"TURBOPACK_MESSAGE\"] = \"turbopack-message\";\n HMR_MESSAGE_SENT_TO_BROWSER[\"SERVER_ERROR\"] = \"serverError\";\n HMR_MESSAGE_SENT_TO_BROWSER[\"TURBOPACK_CONNECTED\"] = \"turbopack-connected\";\n HMR_MESSAGE_SENT_TO_BROWSER[\"ISR_MANIFEST\"] = \"isrManifest\";\n HMR_MESSAGE_SENT_TO_BROWSER[\"CACHE_INDICATOR\"] = \"cacheIndicator\";\n HMR_MESSAGE_SENT_TO_BROWSER[\"DEV_INDICATOR\"] = \"devIndicator\";\n HMR_MESSAGE_SENT_TO_BROWSER[\"DEVTOOLS_CONFIG\"] = \"devtoolsConfig\";\n HMR_MESSAGE_SENT_TO_BROWSER[\"REQUEST_CURRENT_ERROR_STATE\"] = \"requestCurrentErrorState\";\n HMR_MESSAGE_SENT_TO_BROWSER[\"REQUEST_PAGE_METADATA\"] = \"requestPageMetadata\";\n // Binary messages:\n HMR_MESSAGE_SENT_TO_BROWSER[HMR_MESSAGE_SENT_TO_BROWSER[\"REACT_DEBUG_CHUNK\"] = 0] = \"REACT_DEBUG_CHUNK\";\n HMR_MESSAGE_SENT_TO_BROWSER[HMR_MESSAGE_SENT_TO_BROWSER[\"ERRORS_TO_SHOW_IN_BROWSER\"] = 1] = \"ERRORS_TO_SHOW_IN_BROWSER\";\n return HMR_MESSAGE_SENT_TO_BROWSER;\n}({});\nvar HMR_MESSAGE_SENT_TO_SERVER = /*#__PURE__*/ function(HMR_MESSAGE_SENT_TO_SERVER) {\n // JSON messages:\n HMR_MESSAGE_SENT_TO_SERVER[\"MCP_ERROR_STATE_RESPONSE\"] = \"mcp-error-state-response\";\n HMR_MESSAGE_SENT_TO_SERVER[\"MCP_PAGE_METADATA_RESPONSE\"] = \"mcp-page-metadata-response\";\n HMR_MESSAGE_SENT_TO_SERVER[\"PING\"] = \"ping\";\n return HMR_MESSAGE_SENT_TO_SERVER;\n}({});\n\n//# sourceMappingURL=hot-reloader-types.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9kZXYvaG90LXJlbG9hZGVyLXR5cGVzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQUdMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEdBQUc7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEdBQUc7O0FBRUoiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9kZXYvaG90LXJlbG9hZGVyLXR5cGVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgSE1SX01FU1NBR0VfU0VOVF9UT19CUk9XU0VSOiBudWxsLFxuICAgIEhNUl9NRVNTQUdFX1NFTlRfVE9fU0VSVkVSOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIEhNUl9NRVNTQUdFX1NFTlRfVE9fQlJPV1NFUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBITVJfTUVTU0FHRV9TRU5UX1RPX0JST1dTRVI7XG4gICAgfSxcbiAgICBITVJfTUVTU0FHRV9TRU5UX1RPX1NFUlZFUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBITVJfTUVTU0FHRV9TRU5UX1RPX1NFUlZFUjtcbiAgICB9XG59KTtcbnZhciBITVJfTUVTU0FHRV9TRU5UX1RPX0JST1dTRVIgPSAvKiNfX1BVUkVfXyovIGZ1bmN0aW9uKEhNUl9NRVNTQUdFX1NFTlRfVE9fQlJPV1NFUikge1xuICAgIC8vIEpTT04gbWVzc2FnZXM6XG4gICAgSE1SX01FU1NBR0VfU0VOVF9UT19CUk9XU0VSW1wiQURERURfUEFHRVwiXSA9IFwiYWRkZWRQYWdlXCI7XG4gICAgSE1SX01FU1NBR0VfU0VOVF9UT19CUk9XU0VSW1wiUkVNT1ZFRF9QQUdFXCJdID0gXCJyZW1vdmVkUGFnZVwiO1xuICAgIEhNUl9NRVNTQUdFX1NFTlRfVE9fQlJPV1NFUltcIlJFTE9BRF9QQUdFXCJdID0gXCJyZWxvYWRQYWdlXCI7XG4gICAgSE1SX01FU1NBR0VfU0VOVF9UT19CUk9XU0VSW1wiU0VSVkVSX0NPTVBPTkVOVF9DSEFOR0VTXCJdID0gXCJzZXJ2ZXJDb21wb25lbnRDaGFuZ2VzXCI7XG4gICAgSE1SX01FU1NBR0VfU0VOVF9UT19CUk9XU0VSW1wiTUlERExFV0FSRV9DSEFOR0VTXCJdID0gXCJtaWRkbGV3YXJlQ2hhbmdlc1wiO1xuICAgIEhNUl9NRVNTQUdFX1NFTlRfVE9fQlJPV1NFUltcIkNMSUVOVF9DSEFOR0VTXCJdID0gXCJjbGllbnRDaGFuZ2VzXCI7XG4gICAgSE1SX01FU1NBR0VfU0VOVF9UT19CUk9XU0VSW1wiU0VSVkVSX09OTFlfQ0hBTkdFU1wiXSA9IFwic2VydmVyT25seUNoYW5nZXNcIjtcbiAgICBITVJfTUVTU0FHRV9TRU5UX1RPX0JST1dTRVJbXCJTWU5DXCJdID0gXCJzeW5jXCI7XG4gICAgSE1SX01FU1NBR0VfU0VOVF9UT19CUk9XU0VSW1wiQlVJTFRcIl0gPSBcImJ1aWx0XCI7XG4gICAgSE1SX01FU1NBR0VfU0VOVF9UT19CUk9XU0VSW1wiQlVJTERJTkdcIl0gPSBcImJ1aWxkaW5nXCI7XG4gICAgSE1SX01FU1NBR0VfU0VOVF9UT19CUk9XU0VSW1wiREVWX1BBR0VTX01BTklGRVNUX1VQREFURVwiXSA9IFwiZGV2UGFnZXNNYW5pZmVzdFVwZGF0ZVwiO1xuICAgIEhNUl9NRVNTQUdFX1NFTlRfVE9fQlJPV1NFUltcIlRVUkJPUEFDS19NRVNTQUdFXCJdID0gXCJ0dXJib3BhY2stbWVzc2FnZVwiO1xuICAgIEhNUl9NRVNTQUdFX1NFTlRfVE9fQlJPV1NFUltcIlNFUlZFUl9FUlJPUlwiXSA9IFwic2VydmVyRXJyb3JcIjtcbiAgICBITVJfTUVTU0FHRV9TRU5UX1RPX0JST1dTRVJbXCJUVVJCT1BBQ0tfQ09OTkVDVEVEXCJdID0gXCJ0dXJib3BhY2stY29ubmVjdGVkXCI7XG4gICAgSE1SX01FU1NBR0VfU0VOVF9UT19CUk9XU0VSW1wiSVNSX01BTklGRVNUXCJdID0gXCJpc3JNYW5pZmVzdFwiO1xuICAgIEhNUl9NRVNTQUdFX1NFTlRfVE9fQlJPV1NFUltcIkNBQ0hFX0lORElDQVRPUlwiXSA9IFwiY2FjaGVJbmRpY2F0b3JcIjtcbiAgICBITVJfTUVTU0FHRV9TRU5UX1RPX0JST1dTRVJbXCJERVZfSU5ESUNBVE9SXCJdID0gXCJkZXZJbmRpY2F0b3JcIjtcbiAgICBITVJfTUVTU0FHRV9TRU5UX1RPX0JST1dTRVJbXCJERVZUT09MU19DT05GSUdcIl0gPSBcImRldnRvb2xzQ29uZmlnXCI7XG4gICAgSE1SX01FU1NBR0VfU0VOVF9UT19CUk9XU0VSW1wiUkVRVUVTVF9DVVJSRU5UX0VSUk9SX1NUQVRFXCJdID0gXCJyZXF1ZXN0Q3VycmVudEVycm9yU3RhdGVcIjtcbiAgICBITVJfTUVTU0FHRV9TRU5UX1RPX0JST1dTRVJbXCJSRVFVRVNUX1BBR0VfTUVUQURBVEFcIl0gPSBcInJlcXVlc3RQYWdlTWV0YWRhdGFcIjtcbiAgICAvLyBCaW5hcnkgbWVzc2FnZXM6XG4gICAgSE1SX01FU1NBR0VfU0VOVF9UT19CUk9XU0VSW0hNUl9NRVNTQUdFX1NFTlRfVE9fQlJPV1NFUltcIlJFQUNUX0RFQlVHX0NIVU5LXCJdID0gMF0gPSBcIlJFQUNUX0RFQlVHX0NIVU5LXCI7XG4gICAgSE1SX01FU1NBR0VfU0VOVF9UT19CUk9XU0VSW0hNUl9NRVNTQUdFX1NFTlRfVE9fQlJPV1NFUltcIkVSUk9SU19UT19TSE9XX0lOX0JST1dTRVJcIl0gPSAxXSA9IFwiRVJST1JTX1RPX1NIT1dfSU5fQlJPV1NFUlwiO1xuICAgIHJldHVybiBITVJfTUVTU0FHRV9TRU5UX1RPX0JST1dTRVI7XG59KHt9KTtcbnZhciBITVJfTUVTU0FHRV9TRU5UX1RPX1NFUlZFUiA9IC8qI19fUFVSRV9fKi8gZnVuY3Rpb24oSE1SX01FU1NBR0VfU0VOVF9UT19TRVJWRVIpIHtcbiAgICAvLyBKU09OIG1lc3NhZ2VzOlxuICAgIEhNUl9NRVNTQUdFX1NFTlRfVE9fU0VSVkVSW1wiTUNQX0VSUk9SX1NUQVRFX1JFU1BPTlNFXCJdID0gXCJtY3AtZXJyb3Itc3RhdGUtcmVzcG9uc2VcIjtcbiAgICBITVJfTUVTU0FHRV9TRU5UX1RPX1NFUlZFUltcIk1DUF9QQUdFX01FVEFEQVRBX1JFU1BPTlNFXCJdID0gXCJtY3AtcGFnZS1tZXRhZGF0YS1yZXNwb25zZVwiO1xuICAgIEhNUl9NRVNTQUdFX1NFTlRfVE9fU0VSVkVSW1wiUElOR1wiXSA9IFwicGluZ1wiO1xuICAgIHJldHVybiBITVJfTUVTU0FHRV9TRU5UX1RPX1NFUlZFUjtcbn0oe30pO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1ob3QtcmVsb2FkZXItdHlwZXMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/dev/hot-reloader-types.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/dynamic-rendering-utils.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/dynamic-rendering-utils.js ***!
|
||
\******************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n delayUntilRuntimeStage: function() {\n return delayUntilRuntimeStage;\n },\n getRuntimeStage: function() {\n return getRuntimeStage;\n },\n isHangingPromiseRejectionError: function() {\n return isHangingPromiseRejectionError;\n },\n makeDevtoolsIOAwarePromise: function() {\n return makeDevtoolsIOAwarePromise;\n },\n makeHangingPromise: function() {\n return makeHangingPromise;\n }\n});\nconst _stagedrendering = __webpack_require__(/*! ./app-render/staged-rendering */ \"(ssr)/./node_modules/next/dist/server/app-render/staged-rendering.js\");\nfunction isHangingPromiseRejectionError(err) {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false;\n }\n return err.digest === HANGING_PROMISE_REJECTION;\n}\nconst HANGING_PROMISE_REJECTION = 'HANGING_PROMISE_REJECTION';\nclass HangingPromiseRejectionError extends Error {\n constructor(route, expression){\n super(`During prerendering, ${expression} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${expression} to a different context by using \\`setTimeout\\`, \\`after\\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route \"${route}\".`), this.route = route, this.expression = expression, this.digest = HANGING_PROMISE_REJECTION;\n }\n}\nconst abortListenersBySignal = new WeakMap();\nfunction makeHangingPromise(signal, route, expression) {\n if (signal.aborted) {\n return Promise.reject(new HangingPromiseRejectionError(route, expression));\n } else {\n const hangingPromise = new Promise((_, reject)=>{\n const boundRejection = reject.bind(null, new HangingPromiseRejectionError(route, expression));\n let currentListeners = abortListenersBySignal.get(signal);\n if (currentListeners) {\n currentListeners.push(boundRejection);\n } else {\n const listeners = [\n boundRejection\n ];\n abortListenersBySignal.set(signal, listeners);\n signal.addEventListener('abort', ()=>{\n for(let i = 0; i < listeners.length; i++){\n listeners[i]();\n }\n }, {\n once: true\n });\n }\n });\n // We are fine if no one actually awaits this promise. We shouldn't consider this an unhandled rejection so\n // we attach a noop catch handler here to suppress this warning. If you actually await somewhere or construct\n // your own promise out of it you'll need to ensure you handle the error when it rejects.\n hangingPromise.catch(ignoreReject);\n return hangingPromise;\n }\n}\nfunction ignoreReject() {}\nfunction makeDevtoolsIOAwarePromise(underlying, requestStore, stage) {\n if (requestStore.stagedRendering) {\n // We resolve each stage in a timeout, so React DevTools will pick this up as IO.\n return requestStore.stagedRendering.delayUntilStage(stage, undefined, underlying);\n }\n // in React DevTools if we resolve in a setTimeout we will observe\n // the promise resolution as something that can suspend a boundary or root.\n return new Promise((resolve)=>{\n // Must use setTimeout to be considered IO React DevTools. setImmediate will not work.\n setTimeout(()=>{\n resolve(underlying);\n }, 0);\n });\n}\nfunction getRuntimeStage(stagedRendering) {\n if (stagedRendering.currentStage === _stagedrendering.RenderStage.EarlyStatic || stagedRendering.currentStage === _stagedrendering.RenderStage.EarlyRuntime) {\n return _stagedrendering.RenderStage.EarlyRuntime;\n }\n return _stagedrendering.RenderStage.Runtime;\n}\nfunction delayUntilRuntimeStage(prerenderStore, result) {\n const { stagedRendering } = prerenderStore;\n if (!stagedRendering) {\n return result;\n }\n return stagedRendering.waitForStage(getRuntimeStage(stagedRendering)).then(()=>result);\n}\n\n//# sourceMappingURL=dynamic-rendering-utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9keW5hbWljLXJlbmRlcmluZy11dGlscy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FNTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCx5QkFBeUIsbUJBQU8sQ0FBQywyR0FBK0I7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLFlBQVksc0dBQXNHLFlBQVksK0tBQStLLE1BQU07QUFDelY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxzQkFBc0I7QUFDekQ7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksa0JBQWtCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9keW5hbWljLXJlbmRlcmluZy11dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGRlbGF5VW50aWxSdW50aW1lU3RhZ2U6IG51bGwsXG4gICAgZ2V0UnVudGltZVN0YWdlOiBudWxsLFxuICAgIGlzSGFuZ2luZ1Byb21pc2VSZWplY3Rpb25FcnJvcjogbnVsbCxcbiAgICBtYWtlRGV2dG9vbHNJT0F3YXJlUHJvbWlzZTogbnVsbCxcbiAgICBtYWtlSGFuZ2luZ1Byb21pc2U6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgZGVsYXlVbnRpbFJ1bnRpbWVTdGFnZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBkZWxheVVudGlsUnVudGltZVN0YWdlO1xuICAgIH0sXG4gICAgZ2V0UnVudGltZVN0YWdlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldFJ1bnRpbWVTdGFnZTtcbiAgICB9LFxuICAgIGlzSGFuZ2luZ1Byb21pc2VSZWplY3Rpb25FcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpc0hhbmdpbmdQcm9taXNlUmVqZWN0aW9uRXJyb3I7XG4gICAgfSxcbiAgICBtYWtlRGV2dG9vbHNJT0F3YXJlUHJvbWlzZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBtYWtlRGV2dG9vbHNJT0F3YXJlUHJvbWlzZTtcbiAgICB9LFxuICAgIG1ha2VIYW5naW5nUHJvbWlzZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBtYWtlSGFuZ2luZ1Byb21pc2U7XG4gICAgfVxufSk7XG5jb25zdCBfc3RhZ2VkcmVuZGVyaW5nID0gcmVxdWlyZShcIi4vYXBwLXJlbmRlci9zdGFnZWQtcmVuZGVyaW5nXCIpO1xuZnVuY3Rpb24gaXNIYW5naW5nUHJvbWlzZVJlamVjdGlvbkVycm9yKGVycikge1xuICAgIGlmICh0eXBlb2YgZXJyICE9PSAnb2JqZWN0JyB8fCBlcnIgPT09IG51bGwgfHwgISgnZGlnZXN0JyBpbiBlcnIpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGVyci5kaWdlc3QgPT09IEhBTkdJTkdfUFJPTUlTRV9SRUpFQ1RJT047XG59XG5jb25zdCBIQU5HSU5HX1BST01JU0VfUkVKRUNUSU9OID0gJ0hBTkdJTkdfUFJPTUlTRV9SRUpFQ1RJT04nO1xuY2xhc3MgSGFuZ2luZ1Byb21pc2VSZWplY3Rpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3Rvcihyb3V0ZSwgZXhwcmVzc2lvbil7XG4gICAgICAgIHN1cGVyKGBEdXJpbmcgcHJlcmVuZGVyaW5nLCAke2V4cHJlc3Npb259IHJlamVjdHMgd2hlbiB0aGUgcHJlcmVuZGVyIGlzIGNvbXBsZXRlLiBUeXBpY2FsbHkgdGhlc2UgZXJyb3JzIGFyZSBoYW5kbGVkIGJ5IFJlYWN0IGJ1dCBpZiB5b3UgbW92ZSAke2V4cHJlc3Npb259IHRvIGEgZGlmZmVyZW50IGNvbnRleHQgYnkgdXNpbmcgXFxgc2V0VGltZW91dFxcYCwgXFxgYWZ0ZXJcXGAsIG9yIHNpbWlsYXIgZnVuY3Rpb25zIHlvdSBtYXkgb2JzZXJ2ZSB0aGlzIGVycm9yIGFuZCB5b3Ugc2hvdWxkIGhhbmRsZSBpdCBpbiB0aGF0IGNvbnRleHQuIFRoaXMgb2NjdXJyZWQgYXQgcm91dGUgXCIke3JvdXRlfVwiLmApLCB0aGlzLnJvdXRlID0gcm91dGUsIHRoaXMuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb24sIHRoaXMuZGlnZXN0ID0gSEFOR0lOR19QUk9NSVNFX1JFSkVDVElPTjtcbiAgICB9XG59XG5jb25zdCBhYm9ydExpc3RlbmVyc0J5U2lnbmFsID0gbmV3IFdlYWtNYXAoKTtcbmZ1bmN0aW9uIG1ha2VIYW5naW5nUHJvbWlzZShzaWduYWwsIHJvdXRlLCBleHByZXNzaW9uKSB7XG4gICAgaWYgKHNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgSGFuZ2luZ1Byb21pc2VSZWplY3Rpb25FcnJvcihyb3V0ZSwgZXhwcmVzc2lvbikpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGhhbmdpbmdQcm9taXNlID0gbmV3IFByb21pc2UoKF8sIHJlamVjdCk9PntcbiAgICAgICAgICAgIGNvbnN0IGJvdW5kUmVqZWN0aW9uID0gcmVqZWN0LmJpbmQobnVsbCwgbmV3IEhhbmdpbmdQcm9taXNlUmVqZWN0aW9uRXJyb3Iocm91dGUsIGV4cHJlc3Npb24pKTtcbiAgICAgICAgICAgIGxldCBjdXJyZW50TGlzdGVuZXJzID0gYWJvcnRMaXN0ZW5lcnNCeVNpZ25hbC5nZXQoc2lnbmFsKTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50TGlzdGVuZXJzKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudExpc3RlbmVycy5wdXNoKGJvdW5kUmVqZWN0aW9uKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlzdGVuZXJzID0gW1xuICAgICAgICAgICAgICAgICAgICBib3VuZFJlamVjdGlvblxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgYWJvcnRMaXN0ZW5lcnNCeVNpZ25hbC5zZXQoc2lnbmFsLCBsaXN0ZW5lcnMpO1xuICAgICAgICAgICAgICAgIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsICgpPT57XG4gICAgICAgICAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyBpKyspe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXJzW2ldKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIG9uY2U6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIFdlIGFyZSBmaW5lIGlmIG5vIG9uZSBhY3R1YWxseSBhd2FpdHMgdGhpcyBwcm9taXNlLiBXZSBzaG91bGRuJ3QgY29uc2lkZXIgdGhpcyBhbiB1bmhhbmRsZWQgcmVqZWN0aW9uIHNvXG4gICAgICAgIC8vIHdlIGF0dGFjaCBhIG5vb3AgY2F0Y2ggaGFuZGxlciBoZXJlIHRvIHN1cHByZXNzIHRoaXMgd2FybmluZy4gSWYgeW91IGFjdHVhbGx5IGF3YWl0IHNvbWV3aGVyZSBvciBjb25zdHJ1Y3RcbiAgICAgICAgLy8geW91ciBvd24gcHJvbWlzZSBvdXQgb2YgaXQgeW91J2xsIG5lZWQgdG8gZW5zdXJlIHlvdSBoYW5kbGUgdGhlIGVycm9yIHdoZW4gaXQgcmVqZWN0cy5cbiAgICAgICAgaGFuZ2luZ1Byb21pc2UuY2F0Y2goaWdub3JlUmVqZWN0KTtcbiAgICAgICAgcmV0dXJuIGhhbmdpbmdQcm9taXNlO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGlnbm9yZVJlamVjdCgpIHt9XG5mdW5jdGlvbiBtYWtlRGV2dG9vbHNJT0F3YXJlUHJvbWlzZSh1bmRlcmx5aW5nLCByZXF1ZXN0U3RvcmUsIHN0YWdlKSB7XG4gICAgaWYgKHJlcXVlc3RTdG9yZS5zdGFnZWRSZW5kZXJpbmcpIHtcbiAgICAgICAgLy8gV2UgcmVzb2x2ZSBlYWNoIHN0YWdlIGluIGEgdGltZW91dCwgc28gUmVhY3QgRGV2VG9vbHMgd2lsbCBwaWNrIHRoaXMgdXAgYXMgSU8uXG4gICAgICAgIHJldHVybiByZXF1ZXN0U3RvcmUuc3RhZ2VkUmVuZGVyaW5nLmRlbGF5VW50aWxTdGFnZShzdGFnZSwgdW5kZWZpbmVkLCB1bmRlcmx5aW5nKTtcbiAgICB9XG4gICAgLy8gaW4gUmVhY3QgRGV2VG9vbHMgaWYgd2UgcmVzb2x2ZSBpbiBhIHNldFRpbWVvdXQgd2Ugd2lsbCBvYnNlcnZlXG4gICAgLy8gdGhlIHByb21pc2UgcmVzb2x1dGlvbiBhcyBzb21ldGhpbmcgdGhhdCBjYW4gc3VzcGVuZCBhIGJvdW5kYXJ5IG9yIHJvb3QuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKT0+e1xuICAgICAgICAvLyBNdXN0IHVzZSBzZXRUaW1lb3V0IHRvIGJlIGNvbnNpZGVyZWQgSU8gUmVhY3QgRGV2VG9vbHMuIHNldEltbWVkaWF0ZSB3aWxsIG5vdCB3b3JrLlxuICAgICAgICBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICByZXNvbHZlKHVuZGVybHlpbmcpO1xuICAgICAgICB9LCAwKTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGdldFJ1bnRpbWVTdGFnZShzdGFnZWRSZW5kZXJpbmcpIHtcbiAgICBpZiAoc3RhZ2VkUmVuZGVyaW5nLmN1cnJlbnRTdGFnZSA9PT0gX3N0YWdlZHJlbmRlcmluZy5SZW5kZXJTdGFnZS5FYXJseVN0YXRpYyB8fCBzdGFnZWRSZW5kZXJpbmcuY3VycmVudFN0YWdlID09PSBfc3RhZ2VkcmVuZGVyaW5nLlJlbmRlclN0YWdlLkVhcmx5UnVudGltZSkge1xuICAgICAgICByZXR1cm4gX3N0YWdlZHJlbmRlcmluZy5SZW5kZXJTdGFnZS5FYXJseVJ1bnRpbWU7XG4gICAgfVxuICAgIHJldHVybiBfc3RhZ2VkcmVuZGVyaW5nLlJlbmRlclN0YWdlLlJ1bnRpbWU7XG59XG5mdW5jdGlvbiBkZWxheVVudGlsUnVudGltZVN0YWdlKHByZXJlbmRlclN0b3JlLCByZXN1bHQpIHtcbiAgICBjb25zdCB7IHN0YWdlZFJlbmRlcmluZyB9ID0gcHJlcmVuZGVyU3RvcmU7XG4gICAgaWYgKCFzdGFnZWRSZW5kZXJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIHN0YWdlZFJlbmRlcmluZy53YWl0Rm9yU3RhZ2UoZ2V0UnVudGltZVN0YWdlKHN0YWdlZFJlbmRlcmluZykpLnRoZW4oKCk9PnJlc3VsdCk7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWR5bmFtaWMtcmVuZGVyaW5nLXV0aWxzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/dynamic-rendering-utils.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/lib/router-utils/is-postpone.js":
|
||
/*!***********************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/lib/router-utils/is-postpone.js ***!
|
||
\***********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"isPostpone\", ({\n enumerable: true,\n get: function() {\n return isPostpone;\n }\n}));\nconst REACT_POSTPONE_TYPE = Symbol.for('react.postpone');\nfunction isPostpone(error) {\n return typeof error === 'object' && error !== null && error.$$typeof === REACT_POSTPONE_TYPE;\n}\n\n//# sourceMappingURL=is-postpone.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvcm91dGVyLXV0aWxzL2lzLXBvc3Rwb25lLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsOENBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvcm91dGVyLXV0aWxzL2lzLXBvc3Rwb25lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiaXNQb3N0cG9uZVwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaXNQb3N0cG9uZTtcbiAgICB9XG59KTtcbmNvbnN0IFJFQUNUX1BPU1RQT05FX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5wb3N0cG9uZScpO1xuZnVuY3Rpb24gaXNQb3N0cG9uZShlcnJvcikge1xuICAgIHJldHVybiB0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmIGVycm9yICE9PSBudWxsICYmIGVycm9yLiQkdHlwZW9mID09PSBSRUFDVF9QT1NUUE9ORV9UWVBFO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1wb3N0cG9uZS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/lib/router-utils/is-postpone.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/request/params.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/next/dist/server/request/params.js ***!
|
||
\*********************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createParamsFromClient: function() {\n return createParamsFromClient;\n },\n createPrerenderParamsForClientSegment: function() {\n return createPrerenderParamsForClientSegment;\n },\n createServerParamsForMetadata: function() {\n return createServerParamsForMetadata;\n },\n createServerParamsForRoute: function() {\n return createServerParamsForRoute;\n },\n createServerParamsForServerSegment: function() {\n return createServerParamsForServerSegment;\n }\n});\nconst _workasyncstorageexternal = __webpack_require__(/*! ../app-render/work-async-storage.external */ \"../app-render/work-async-storage.external\");\nconst _varyparams = __webpack_require__(/*! ../app-render/vary-params */ \"(ssr)/./node_modules/next/dist/server/app-render/vary-params.js\");\nconst _reflect = __webpack_require__(/*! ../web/spec-extension/adapters/reflect */ \"(ssr)/./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js\");\nconst _dynamicrendering = __webpack_require__(/*! ../app-render/dynamic-rendering */ \"(ssr)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\");\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ../app-render/work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(ssr)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nconst _reflectutils = __webpack_require__(/*! ../../shared/lib/utils/reflect-utils */ \"(ssr)/./node_modules/next/dist/shared/lib/utils/reflect-utils.js\");\nconst _dynamicrenderingutils = __webpack_require__(/*! ../dynamic-rendering-utils */ \"(ssr)/./node_modules/next/dist/server/dynamic-rendering-utils.js\");\nconst _creatededupedbycallsiteservererrorlogger = __webpack_require__(/*! ../create-deduped-by-callsite-server-error-logger */ \"(ssr)/./node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js\");\nconst _dynamicaccessasyncstorageexternal = __webpack_require__(/*! ../app-render/dynamic-access-async-storage.external */ \"../app-render/dynamic-access-async-storage.external\");\nconst _stagedrendering = __webpack_require__(/*! ../app-render/staged-rendering */ \"(ssr)/./node_modules/next/dist/server/app-render/staged-rendering.js\");\nfunction createParamsFromClient(underlyingParams) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (!workStore) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected workStore to be initialized'), \"__NEXT_ERROR_CODE\", {\n value: \"E1068\",\n enumerable: false,\n configurable: true\n });\n }\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n // Client params don't need additional vary tracking because by the\n // time they reach the client, the access would have already been\n // tracked by the server.\n const varyParamsAccumulator = null;\n return createStaticPrerenderParams(underlyingParams, null, workStore, workUnitStore, varyParamsAccumulator);\n case 'validation-client':\n return createClientParamsInInstantValidation(underlyingParams, workStore, workUnitStore.validationSamples);\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createParamsFromClient should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E736\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n throw Object.defineProperty(new _invarianterror.InvariantError('createParamsFromClient should not be called in a runtime prerender.'), \"__NEXT_ERROR_CODE\", {\n value: \"E770\",\n enumerable: false,\n configurable: true\n });\n case 'generate-static-params':\n throw Object.defineProperty(new _invarianterror.InvariantError('createParamsFromClient should not be called inside generateStaticParams.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1122\",\n enumerable: false,\n configurable: true\n });\n case 'request':\n if (true) {\n // Semantically we only need the dev tracking when running in `next dev`\n // but since you would never use next dev with production NODE_ENV we use this\n // as a proxy so we can statically exclude this code from production builds.\n const fallbackParams = workUnitStore.fallbackParams;\n // Client params are not runtime prefetchable\n const isRuntimePrefetchable = false;\n return createRenderParamsInDev(underlyingParams, fallbackParams, workStore, workUnitStore, isRuntimePrefetchable);\n } else {}\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nfunction createServerParamsForMetadata(underlyingParams, optionalCatchAllParamName, isRuntimePrefetchable) {\n const metadataVaryParamsAccumulator = (0, _varyparams.getMetadataVaryParamsAccumulator)();\n return createServerParamsForServerSegment(underlyingParams, optionalCatchAllParamName, metadataVaryParamsAccumulator, isRuntimePrefetchable);\n}\nfunction createServerParamsForRoute(underlyingParams, varyParamsAccumulator = null) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (!workStore) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected workStore to be initialized'), \"__NEXT_ERROR_CODE\", {\n value: \"E1068\",\n enumerable: false,\n configurable: true\n });\n }\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-ppr':\n case 'prerender-legacy':\n return createStaticPrerenderParams(underlyingParams, null, workStore, workUnitStore, varyParamsAccumulator);\n case 'prerender-client':\n case 'validation-client':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerParamsForRoute should not be called in client contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1064\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerParamsForRoute should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E738\",\n enumerable: false,\n configurable: true\n });\n case 'generate-static-params':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerParamsForRoute should not be called inside generateStaticParams.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1131\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n {\n // Route params are not runtime prefetchable\n const isRuntimePrefetchable = false;\n return createRuntimePrerenderParams(underlyingParams, null, workUnitStore, varyParamsAccumulator, isRuntimePrefetchable);\n }\n case 'request':\n if (true) {\n // Semantically we only need the dev tracking when running in `next dev`\n // but since you would never use next dev with production NODE_ENV we use this\n // as a proxy so we can statically exclude this code from production builds.\n const fallbackParams = workUnitStore.fallbackParams;\n // Route params are not runtime prefetchable\n const isRuntimePrefetchable = false;\n return createRenderParamsInDev(underlyingParams, fallbackParams, workStore, workUnitStore, isRuntimePrefetchable);\n } else {}\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nfunction createServerParamsForServerSegment(underlyingParams, optionalCatchAllParamName, varyParamsAccumulator, isRuntimePrefetchable) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (!workStore) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected workStore to be initialized'), \"__NEXT_ERROR_CODE\", {\n value: \"E1068\",\n enumerable: false,\n configurable: true\n });\n }\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n return createStaticPrerenderParams(underlyingParams, optionalCatchAllParamName, workStore, workUnitStore, varyParamsAccumulator);\n case 'validation-client':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerParamsForServerSegment should not be called in client contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1101\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerParamsForServerSegment should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E743\",\n enumerable: false,\n configurable: true\n });\n case 'generate-static-params':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerParamsForServerSegment should not be called inside generateStaticParams.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1120\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n return createRuntimePrerenderParams(underlyingParams, optionalCatchAllParamName, workUnitStore, varyParamsAccumulator, isRuntimePrefetchable);\n case 'request':\n if (true) {\n // Semantically we only need the dev tracking when running in `next dev`\n // but since you would never use next dev with production NODE_ENV we use this\n // as a proxy so we can statically exclude this code from production builds.\n const fallbackParams = workUnitStore.fallbackParams;\n return createRenderParamsInDev(underlyingParams, fallbackParams, workStore, workUnitStore, isRuntimePrefetchable);\n } else {}\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nfunction createPrerenderParamsForClientSegment(underlyingParams) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (!workStore) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Missing workStore in createPrerenderParamsForClientSegment'), \"__NEXT_ERROR_CODE\", {\n value: \"E773\",\n enumerable: false,\n configurable: true\n });\n }\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n const fallbackParams = workUnitStore.fallbackRouteParams;\n if (fallbackParams) {\n for(let key in underlyingParams){\n if (fallbackParams.has(key)) {\n // This params object has one or more fallback params, so we need\n // to consider the awaiting of this params object \"dynamic\". Since\n // we are in cacheComponents mode we encode this as a promise that never\n // resolves.\n return (0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, '`params`');\n }\n }\n }\n break;\n case 'validation-client':\n throw Object.defineProperty(new _invarianterror.InvariantError('createPrerenderParamsForClientSegment should not be called in validation contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1099\",\n enumerable: false,\n configurable: true\n });\n break;\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createPrerenderParamsForClientSegment should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E734\",\n enumerable: false,\n configurable: true\n });\n case 'generate-static-params':\n throw Object.defineProperty(new _invarianterror.InvariantError('createPrerenderParamsForClientSegment should not be called inside generateStaticParams.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1126\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'prerender-runtime':\n case 'request':\n break;\n default:\n workUnitStore;\n }\n }\n // We're prerendering in a mode that does not abort. We resolve the promise without\n // any tracking because we're just transporting a value from server to client where the tracking\n // will be applied.\n return Promise.resolve(underlyingParams);\n}\nfunction createStaticPrerenderParams(underlyingParams, optionalCatchAllParamName, workStore, prerenderStore, varyParamsAccumulator) {\n const underlyingParamsWithVarying = varyParamsAccumulator !== null ? (0, _varyparams.createVaryingParams)(varyParamsAccumulator, underlyingParams, optionalCatchAllParamName) : underlyingParams;\n switch(prerenderStore.type){\n case 'prerender':\n case 'prerender-client':\n {\n const fallbackParams = prerenderStore.fallbackRouteParams;\n if (fallbackParams) {\n for(const key in underlyingParams){\n if (fallbackParams.has(key)) {\n // This params object has one or more fallback params, so we need\n // to consider the awaiting of this params object \"dynamic\". Since\n // we are in cacheComponents mode we encode this as a promise that never\n // resolves.\n return makeHangingParams(underlyingParamsWithVarying, workStore, prerenderStore);\n }\n }\n }\n break;\n }\n case 'prerender-ppr':\n {\n const fallbackParams = prerenderStore.fallbackRouteParams;\n if (fallbackParams) {\n for(const key in underlyingParams){\n if (fallbackParams.has(key)) {\n return makeErroringParams(underlyingParamsWithVarying, fallbackParams, workStore, prerenderStore);\n }\n }\n }\n break;\n }\n case 'prerender-legacy':\n break;\n default:\n prerenderStore;\n }\n return makeUntrackedParams(underlyingParamsWithVarying);\n}\nfunction createRuntimePrerenderParams(underlyingParams, optionalCatchAllParamName, workUnitStore, varyParamsAccumulator, isRuntimePrefetchable) {\n const underlyingParamsWithVarying = varyParamsAccumulator !== null ? (0, _varyparams.createVaryingParams)(varyParamsAccumulator, underlyingParams, optionalCatchAllParamName) : underlyingParams;\n const result = makeUntrackedParams(underlyingParamsWithVarying);\n const { stagedRendering } = workUnitStore;\n if (!stagedRendering) {\n return result;\n }\n const stage = isRuntimePrefetchable ? _stagedrendering.RenderStage.EarlyRuntime : _stagedrendering.RenderStage.Runtime;\n return stagedRendering.waitForStage(stage).then(()=>result);\n}\nfunction hasFallbackRouteParams(underlyingParams, fallbackParams) {\n if (fallbackParams) {\n for(let key in underlyingParams){\n if (fallbackParams.has(key)) {\n return true;\n }\n }\n }\n return false;\n}\nfunction createServerParamsInInstantValidation(underlyingParams, workStore, validationSamples, asyncApiPromises, isRuntimePrefetchable) {\n const { createExhaustiveParamsProxy } = __webpack_require__(/*! ../app-render/instant-validation/instant-samples */ \"(ssr)/./node_modules/next/dist/server/app-render/instant-validation/instant-samples.js\");\n const declaredParams = new Set(Object.keys(validationSamples.params ?? {}));\n const proxiedUnderlying = createExhaustiveParamsProxy(underlyingParams, declaredParams, workStore.route);\n return (isRuntimePrefetchable ? asyncApiPromises.earlySharedParamsParent : asyncApiPromises.sharedParamsParent).then(()=>proxiedUnderlying);\n}\nfunction createClientParamsInInstantValidation(underlyingParams, workStore, validationSamples) {\n const { createExhaustiveParamsProxy } = __webpack_require__(/*! ../app-render/instant-validation/instant-samples */ \"(ssr)/./node_modules/next/dist/server/app-render/instant-validation/instant-samples.js\");\n const declaredParams = new Set(Object.keys((validationSamples == null ? void 0 : validationSamples.params) ?? {}));\n const proxiedUnderlying = createExhaustiveParamsProxy(underlyingParams, declaredParams, workStore.route);\n return Promise.resolve(proxiedUnderlying);\n}\nfunction createRenderParamsInProd(underlyingParams) {\n return makeUntrackedParams(underlyingParams);\n}\nfunction createRenderParamsInDev(underlyingParams, fallbackParams, workStore, requestStore, isRuntimePrefetchable) {\n return makeDynamicallyTrackedParamsWithDevWarnings(underlyingParams, hasFallbackRouteParams(underlyingParams, fallbackParams), workStore, requestStore, isRuntimePrefetchable);\n}\nconst CachedParams = new WeakMap();\nconst fallbackParamsProxyHandler = {\n get: function get(target, prop, receiver) {\n if (prop === 'then' || prop === 'catch' || prop === 'finally') {\n const originalMethod = _reflect.ReflectAdapter.get(target, prop, receiver);\n return ({\n [prop]: (...args)=>{\n const store = _dynamicaccessasyncstorageexternal.dynamicAccessAsyncStorage.getStore();\n if (store) {\n store.abortController.abort(Object.defineProperty(new Error(`Accessed fallback \\`params\\` during prerendering.`), \"__NEXT_ERROR_CODE\", {\n value: \"E691\",\n enumerable: false,\n configurable: true\n }));\n }\n return new Proxy(originalMethod.apply(target, args), fallbackParamsProxyHandler);\n }\n })[prop];\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n};\nfunction makeHangingParams(underlyingParams, workStore, prerenderStore) {\n const cachedParams = CachedParams.get(underlyingParams);\n if (cachedParams) {\n return cachedParams;\n }\n const promise = new Proxy((0, _dynamicrenderingutils.makeHangingPromise)(prerenderStore.renderSignal, workStore.route, '`params`'), fallbackParamsProxyHandler);\n CachedParams.set(underlyingParams, promise);\n return promise;\n}\nfunction makeErroringParams(underlyingParams, fallbackParams, workStore, prerenderStore) {\n const cachedParams = CachedParams.get(underlyingParams);\n if (cachedParams) {\n return cachedParams;\n }\n const augmentedUnderlying = {\n ...underlyingParams\n };\n // We don't use makeResolvedReactPromise here because params\n // supports copying with spread and we don't want to unnecessarily\n // instrument the promise with spreadable properties of ReactPromise.\n const promise = Promise.resolve(augmentedUnderlying);\n CachedParams.set(underlyingParams, promise);\n Object.keys(underlyingParams).forEach((prop)=>{\n if (_reflectutils.wellKnownProperties.has(prop)) {\n // These properties cannot be shadowed because they need to be the\n // true underlying value for Promises to work correctly at runtime\n } else {\n if (fallbackParams.has(prop)) {\n Object.defineProperty(augmentedUnderlying, prop, {\n get () {\n const expression = (0, _reflectutils.describeStringPropertyAccess)('params', prop);\n // In most dynamic APIs we also throw if `dynamic = \"error\"` however\n // for params is only dynamic when we're generating a fallback shell\n // and even when `dynamic = \"error\"` we still support generating dynamic\n // fallback shells\n // TODO remove this comment when cacheComponents is the default since there\n // will be no `dynamic = \"error\"`\n if (prerenderStore.type === 'prerender-ppr') {\n // PPR Prerender (no cacheComponents)\n (0, _dynamicrendering.postponeWithTracking)(workStore.route, expression, prerenderStore.dynamicTracking);\n } else {\n // Legacy Prerender\n (0, _dynamicrendering.throwToInterruptStaticGeneration)(expression, workStore, prerenderStore);\n }\n },\n enumerable: true\n });\n }\n }\n });\n return promise;\n}\nfunction makeUntrackedParams(underlyingParams) {\n const cachedParams = CachedParams.get(underlyingParams);\n if (cachedParams) {\n return cachedParams;\n }\n const promise = Promise.resolve(underlyingParams);\n CachedParams.set(underlyingParams, promise);\n return promise;\n}\nfunction makeDynamicallyTrackedParamsWithDevWarnings(underlyingParams, hasFallbackParams, workStore, requestStore, isRuntimePrefetchable) {\n if (requestStore.asyncApiPromises && hasFallbackParams) {\n // We wrap each instance of params in a `new Promise()`, because deduping\n // them across requests doesn't work anyway and this let us show each\n // await a different set of values. This is important when all awaits\n // are in third party which would otherwise track all the way to the\n // internal params.\n const sharedParamsParent = isRuntimePrefetchable ? requestStore.asyncApiPromises.earlySharedParamsParent : requestStore.asyncApiPromises.sharedParamsParent;\n const promise = new Promise((resolve, reject)=>{\n sharedParamsParent.then(()=>resolve(underlyingParams), reject);\n });\n // @ts-expect-error\n promise.displayName = 'params';\n return instrumentParamsPromiseWithDevWarnings(underlyingParams, promise, workStore);\n }\n const cachedParams = CachedParams.get(underlyingParams);\n if (cachedParams) {\n return cachedParams;\n }\n // We don't use makeResolvedReactPromise here because params\n // supports copying with spread and we don't want to unnecessarily\n // instrument the promise with spreadable properties of ReactPromise.\n const promise = hasFallbackParams ? (0, _dynamicrenderingutils.makeDevtoolsIOAwarePromise)(underlyingParams, requestStore, _stagedrendering.RenderStage.Runtime) : Promise.resolve(underlyingParams);\n const proxiedPromise = instrumentParamsPromiseWithDevWarnings(underlyingParams, promise, workStore);\n CachedParams.set(underlyingParams, proxiedPromise);\n return proxiedPromise;\n}\nfunction instrumentParamsPromiseWithDevWarnings(underlyingParams, promise, workStore) {\n // Track which properties we should warn for.\n const proxiedProperties = new Set();\n Object.keys(underlyingParams).forEach((prop)=>{\n if (_reflectutils.wellKnownProperties.has(prop)) {\n // These properties cannot be shadowed because they need to be the\n // true underlying value for Promises to work correctly at runtime\n } else {\n proxiedProperties.add(prop);\n }\n });\n return new Proxy(promise, {\n get (target, prop, receiver) {\n if (typeof prop === 'string') {\n if (// We are accessing a property that was proxied to the promise instance\n proxiedProperties.has(prop)) {\n const expression = (0, _reflectutils.describeStringPropertyAccess)('params', prop);\n warnForSyncAccess(workStore.route, expression);\n }\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n },\n set (target, prop, value, receiver) {\n if (typeof prop === 'string') {\n proxiedProperties.delete(prop);\n }\n return _reflect.ReflectAdapter.set(target, prop, value, receiver);\n },\n ownKeys (target) {\n const expression = '`...params` or similar expression';\n warnForSyncAccess(workStore.route, expression);\n return Reflect.ownKeys(target);\n }\n });\n}\nconst warnForSyncAccess = (0, _creatededupedbycallsiteservererrorlogger.createDedupedByCallsiteServerErrorLoggerDev)(createParamsAccessError);\nfunction createParamsAccessError(route, expression) {\n const prefix = route ? `Route \"${route}\" ` : 'This route ';\n return Object.defineProperty(new Error(`${prefix}used ${expression}. ` + `\\`params\\` is a Promise and must be unwrapped with \\`await\\` or \\`React.use()\\` before accessing its properties. ` + `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`), \"__NEXT_ERROR_CODE\", {\n value: \"E834\",\n enumerable: false,\n configurable: true\n });\n}\n\n//# sourceMappingURL=params.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXF1ZXN0L3BhcmFtcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FNTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxrQ0FBa0MsbUJBQU8sQ0FBQyw0RkFBMkM7QUFDckYsb0JBQW9CLG1CQUFPLENBQUMsa0dBQTJCO0FBQ3ZELGlCQUFpQixtQkFBTyxDQUFDLDRIQUF3QztBQUNqRSwwQkFBMEIsbUJBQU8sQ0FBQyw4R0FBaUM7QUFDbkUsc0NBQXNDLG1CQUFPLENBQUMsMEZBQWdEO0FBQzlGLHdCQUF3QixtQkFBTyxDQUFDLHNHQUFrQztBQUNsRSxzQkFBc0IsbUJBQU8sQ0FBQyw4R0FBc0M7QUFDcEUsK0JBQStCLG1CQUFPLENBQUMsb0dBQTRCO0FBQ25FLGtEQUFrRCxtQkFBTyxDQUFDLGtKQUFtRDtBQUM3RywyQ0FBMkMsbUJBQU8sQ0FBQyxnSEFBcUQ7QUFDeEcseUJBQXlCLG1CQUFPLENBQUMsNEdBQWdDO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLG9CQUFvQixJQUFzQztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixLQUFLLEVBSU47QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsSUFBc0M7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsS0FBSyxFQUVOO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsSUFBc0M7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixLQUFLLEVBTU47QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxrQkFBa0I7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksOEJBQThCLEVBQUUsbUJBQU8sQ0FBQyxnSkFBa0Q7QUFDdEcsNkVBQTZFO0FBQzdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSw4QkFBOEIsRUFBRSxtQkFBTyxDQUFDLGdKQUFrRDtBQUN0RyxvSEFBb0g7QUFDcEg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsTUFBTTtBQUMzQyw4Q0FBOEMsT0FBTyxPQUFPLFdBQVc7QUFDdkU7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvcmVxdWVzdC9wYXJhbXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVQYXJhbXNGcm9tQ2xpZW50OiBudWxsLFxuICAgIGNyZWF0ZVByZXJlbmRlclBhcmFtc0ZvckNsaWVudFNlZ21lbnQ6IG51bGwsXG4gICAgY3JlYXRlU2VydmVyUGFyYW1zRm9yTWV0YWRhdGE6IG51bGwsXG4gICAgY3JlYXRlU2VydmVyUGFyYW1zRm9yUm91dGU6IG51bGwsXG4gICAgY3JlYXRlU2VydmVyUGFyYW1zRm9yU2VydmVyU2VnbWVudDogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBjcmVhdGVQYXJhbXNGcm9tQ2xpZW50OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVBhcmFtc0Zyb21DbGllbnQ7XG4gICAgfSxcbiAgICBjcmVhdGVQcmVyZW5kZXJQYXJhbXNGb3JDbGllbnRTZWdtZW50OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVByZXJlbmRlclBhcmFtc0ZvckNsaWVudFNlZ21lbnQ7XG4gICAgfSxcbiAgICBjcmVhdGVTZXJ2ZXJQYXJhbXNGb3JNZXRhZGF0YTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVTZXJ2ZXJQYXJhbXNGb3JNZXRhZGF0YTtcbiAgICB9LFxuICAgIGNyZWF0ZVNlcnZlclBhcmFtc0ZvclJvdXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVNlcnZlclBhcmFtc0ZvclJvdXRlO1xuICAgIH0sXG4gICAgY3JlYXRlU2VydmVyUGFyYW1zRm9yU2VydmVyU2VnbWVudDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVTZXJ2ZXJQYXJhbXNGb3JTZXJ2ZXJTZWdtZW50O1xuICAgIH1cbn0pO1xuY29uc3QgX3dvcmthc3luY3N0b3JhZ2VleHRlcm5hbCA9IHJlcXVpcmUoXCIuLi9hcHAtcmVuZGVyL3dvcmstYXN5bmMtc3RvcmFnZS5leHRlcm5hbFwiKTtcbmNvbnN0IF92YXJ5cGFyYW1zID0gcmVxdWlyZShcIi4uL2FwcC1yZW5kZXIvdmFyeS1wYXJhbXNcIik7XG5jb25zdCBfcmVmbGVjdCA9IHJlcXVpcmUoXCIuLi93ZWIvc3BlYy1leHRlbnNpb24vYWRhcHRlcnMvcmVmbGVjdFwiKTtcbmNvbnN0IF9keW5hbWljcmVuZGVyaW5nID0gcmVxdWlyZShcIi4uL2FwcC1yZW5kZXIvZHluYW1pYy1yZW5kZXJpbmdcIik7XG5jb25zdCBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbCA9IHJlcXVpcmUoXCIuLi9hcHAtcmVuZGVyL3dvcmstdW5pdC1hc3luYy1zdG9yYWdlLmV4dGVybmFsXCIpO1xuY29uc3QgX2ludmFyaWFudGVycm9yID0gcmVxdWlyZShcIi4uLy4uL3NoYXJlZC9saWIvaW52YXJpYW50LWVycm9yXCIpO1xuY29uc3QgX3JlZmxlY3R1dGlscyA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvbGliL3V0aWxzL3JlZmxlY3QtdXRpbHNcIik7XG5jb25zdCBfZHluYW1pY3JlbmRlcmluZ3V0aWxzID0gcmVxdWlyZShcIi4uL2R5bmFtaWMtcmVuZGVyaW5nLXV0aWxzXCIpO1xuY29uc3QgX2NyZWF0ZWRlZHVwZWRieWNhbGxzaXRlc2VydmVyZXJyb3Jsb2dnZXIgPSByZXF1aXJlKFwiLi4vY3JlYXRlLWRlZHVwZWQtYnktY2FsbHNpdGUtc2VydmVyLWVycm9yLWxvZ2dlclwiKTtcbmNvbnN0IF9keW5hbWljYWNjZXNzYXN5bmNzdG9yYWdlZXh0ZXJuYWwgPSByZXF1aXJlKFwiLi4vYXBwLXJlbmRlci9keW5hbWljLWFjY2Vzcy1hc3luYy1zdG9yYWdlLmV4dGVybmFsXCIpO1xuY29uc3QgX3N0YWdlZHJlbmRlcmluZyA9IHJlcXVpcmUoXCIuLi9hcHAtcmVuZGVyL3N0YWdlZC1yZW5kZXJpbmdcIik7XG5mdW5jdGlvbiBjcmVhdGVQYXJhbXNGcm9tQ2xpZW50KHVuZGVybHlpbmdQYXJhbXMpIHtcbiAgICBjb25zdCB3b3JrU3RvcmUgPSBfd29ya2FzeW5jc3RvcmFnZWV4dGVybmFsLndvcmtBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAoIXdvcmtTdG9yZSkge1xuICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignRXhwZWN0ZWQgd29ya1N0b3JlIHRvIGJlIGluaXRpYWxpemVkJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgdmFsdWU6IFwiRTEwNjhcIixcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCB3b3JrVW5pdFN0b3JlID0gX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya1VuaXRBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgICAgICBzd2l0Y2god29ya1VuaXRTdG9yZS50eXBlKXtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICAgICAgLy8gQ2xpZW50IHBhcmFtcyBkb24ndCBuZWVkIGFkZGl0aW9uYWwgdmFyeSB0cmFja2luZyBiZWNhdXNlIGJ5IHRoZVxuICAgICAgICAgICAgICAgIC8vIHRpbWUgdGhleSByZWFjaCB0aGUgY2xpZW50LCB0aGUgYWNjZXNzIHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVuXG4gICAgICAgICAgICAgICAgLy8gdHJhY2tlZCBieSB0aGUgc2VydmVyLlxuICAgICAgICAgICAgICAgIGNvbnN0IHZhcnlQYXJhbXNBY2N1bXVsYXRvciA9IG51bGw7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVN0YXRpY1ByZXJlbmRlclBhcmFtcyh1bmRlcmx5aW5nUGFyYW1zLCBudWxsLCB3b3JrU3RvcmUsIHdvcmtVbml0U3RvcmUsIHZhcnlQYXJhbXNBY2N1bXVsYXRvcik7XG4gICAgICAgICAgICBjYXNlICd2YWxpZGF0aW9uLWNsaWVudCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUNsaWVudFBhcmFtc0luSW5zdGFudFZhbGlkYXRpb24odW5kZXJseWluZ1BhcmFtcywgd29ya1N0b3JlLCB3b3JrVW5pdFN0b3JlLnZhbGlkYXRpb25TYW1wbGVzKTtcbiAgICAgICAgICAgIGNhc2UgJ2NhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByaXZhdGUtY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAndW5zdGFibGUtY2FjaGUnOlxuICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdjcmVhdGVQYXJhbXNGcm9tQ2xpZW50IHNob3VsZCBub3QgYmUgY2FsbGVkIGluIGNhY2hlIGNvbnRleHRzLicpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTczNlwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVBhcmFtc0Zyb21DbGllbnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gYSBydW50aW1lIHByZXJlbmRlci4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU3NzBcIixcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2FzZSAnZ2VuZXJhdGUtc3RhdGljLXBhcmFtcyc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVBhcmFtc0Zyb21DbGllbnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW5zaWRlIGdlbmVyYXRlU3RhdGljUGFyYW1zLicpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTExMjJcIixcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2FzZSAncmVxdWVzdCc6XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNlbWFudGljYWxseSB3ZSBvbmx5IG5lZWQgdGhlIGRldiB0cmFja2luZyB3aGVuIHJ1bm5pbmcgaW4gYG5leHQgZGV2YFxuICAgICAgICAgICAgICAgICAgICAvLyBidXQgc2luY2UgeW91IHdvdWxkIG5ldmVyIHVzZSBuZXh0IGRldiB3aXRoIHByb2R1Y3Rpb24gTk9ERV9FTlYgd2UgdXNlIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgLy8gYXMgYSBwcm94eSBzbyB3ZSBjYW4gc3RhdGljYWxseSBleGNsdWRlIHRoaXMgY29kZSBmcm9tIHByb2R1Y3Rpb24gYnVpbGRzLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmYWxsYmFja1BhcmFtcyA9IHdvcmtVbml0U3RvcmUuZmFsbGJhY2tQYXJhbXM7XG4gICAgICAgICAgICAgICAgICAgIC8vIENsaWVudCBwYXJhbXMgYXJlIG5vdCBydW50aW1lIHByZWZldGNoYWJsZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1J1bnRpbWVQcmVmZXRjaGFibGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlclBhcmFtc0luRGV2KHVuZGVybHlpbmdQYXJhbXMsIGZhbGxiYWNrUGFyYW1zLCB3b3JrU3RvcmUsIHdvcmtVbml0U3RvcmUsIGlzUnVudGltZVByZWZldGNoYWJsZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3b3JrVW5pdFN0b3JlLnZhbGlkYXRpb25TYW1wbGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVDbGllbnRQYXJhbXNJbkluc3RhbnRWYWxpZGF0aW9uKHVuZGVybHlpbmdQYXJhbXMsIHdvcmtTdG9yZSwgd29ya1VuaXRTdG9yZS52YWxpZGF0aW9uU2FtcGxlcyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlclBhcmFtc0luUHJvZCh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgKDAsIF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLnRocm93SW52YXJpYW50Rm9yTWlzc2luZ1N0b3JlKSgpO1xufVxuZnVuY3Rpb24gY3JlYXRlU2VydmVyUGFyYW1zRm9yTWV0YWRhdGEodW5kZXJseWluZ1BhcmFtcywgb3B0aW9uYWxDYXRjaEFsbFBhcmFtTmFtZSwgaXNSdW50aW1lUHJlZmV0Y2hhYmxlKSB7XG4gICAgY29uc3QgbWV0YWRhdGFWYXJ5UGFyYW1zQWNjdW11bGF0b3IgPSAoMCwgX3ZhcnlwYXJhbXMuZ2V0TWV0YWRhdGFWYXJ5UGFyYW1zQWNjdW11bGF0b3IpKCk7XG4gICAgcmV0dXJuIGNyZWF0ZVNlcnZlclBhcmFtc0ZvclNlcnZlclNlZ21lbnQodW5kZXJseWluZ1BhcmFtcywgb3B0aW9uYWxDYXRjaEFsbFBhcmFtTmFtZSwgbWV0YWRhdGFWYXJ5UGFyYW1zQWNjdW11bGF0b3IsIGlzUnVudGltZVByZWZldGNoYWJsZSk7XG59XG5mdW5jdGlvbiBjcmVhdGVTZXJ2ZXJQYXJhbXNGb3JSb3V0ZSh1bmRlcmx5aW5nUGFyYW1zLCB2YXJ5UGFyYW1zQWNjdW11bGF0b3IgPSBudWxsKSB7XG4gICAgY29uc3Qgd29ya1N0b3JlID0gX3dvcmthc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrQXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgaWYgKCF3b3JrU3RvcmUpIHtcbiAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ0V4cGVjdGVkIHdvcmtTdG9yZSB0byBiZSBpbml0aWFsaXplZCcpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgIHZhbHVlOiBcIkUxMDY4XCIsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3Qgd29ya1VuaXRTdG9yZSA9IF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLndvcmtVbml0QXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgaWYgKHdvcmtVbml0U3RvcmUpIHtcbiAgICAgICAgc3dpdGNoKHdvcmtVbml0U3RvcmUudHlwZSl7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlU3RhdGljUHJlcmVuZGVyUGFyYW1zKHVuZGVybHlpbmdQYXJhbXMsIG51bGwsIHdvcmtTdG9yZSwgd29ya1VuaXRTdG9yZSwgdmFyeVBhcmFtc0FjY3VtdWxhdG9yKTtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAgY2FzZSAndmFsaWRhdGlvbi1jbGllbnQnOlxuICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdjcmVhdGVTZXJ2ZXJQYXJhbXNGb3JSb3V0ZSBzaG91bGQgbm90IGJlIGNhbGxlZCBpbiBjbGllbnQgY29udGV4dHMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMTA2NFwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlICdjYWNoZSc6XG4gICAgICAgICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignY3JlYXRlU2VydmVyUGFyYW1zRm9yUm91dGUgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gY2FjaGUgY29udGV4dHMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNzM4XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ2dlbmVyYXRlLXN0YXRpYy1wYXJhbXMnOlxuICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdjcmVhdGVTZXJ2ZXJQYXJhbXNGb3JSb3V0ZSBzaG91bGQgbm90IGJlIGNhbGxlZCBpbnNpZGUgZ2VuZXJhdGVTdGF0aWNQYXJhbXMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMTEzMVwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAvLyBSb3V0ZSBwYXJhbXMgYXJlIG5vdCBydW50aW1lIHByZWZldGNoYWJsZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1J1bnRpbWVQcmVmZXRjaGFibGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJ1bnRpbWVQcmVyZW5kZXJQYXJhbXModW5kZXJseWluZ1BhcmFtcywgbnVsbCwgd29ya1VuaXRTdG9yZSwgdmFyeVBhcmFtc0FjY3VtdWxhdG9yLCBpc1J1bnRpbWVQcmVmZXRjaGFibGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgICAgICAgICAvLyBTZW1hbnRpY2FsbHkgd2Ugb25seSBuZWVkIHRoZSBkZXYgdHJhY2tpbmcgd2hlbiBydW5uaW5nIGluIGBuZXh0IGRldmBcbiAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHNpbmNlIHlvdSB3b3VsZCBuZXZlciB1c2UgbmV4dCBkZXYgd2l0aCBwcm9kdWN0aW9uIE5PREVfRU5WIHdlIHVzZSB0aGlzXG4gICAgICAgICAgICAgICAgICAgIC8vIGFzIGEgcHJveHkgc28gd2UgY2FuIHN0YXRpY2FsbHkgZXhjbHVkZSB0aGlzIGNvZGUgZnJvbSBwcm9kdWN0aW9uIGJ1aWxkcy5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmFsbGJhY2tQYXJhbXMgPSB3b3JrVW5pdFN0b3JlLmZhbGxiYWNrUGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICAvLyBSb3V0ZSBwYXJhbXMgYXJlIG5vdCBydW50aW1lIHByZWZldGNoYWJsZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1J1bnRpbWVQcmVmZXRjaGFibGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlclBhcmFtc0luRGV2KHVuZGVybHlpbmdQYXJhbXMsIGZhbGxiYWNrUGFyYW1zLCB3b3JrU3RvcmUsIHdvcmtVbml0U3RvcmUsIGlzUnVudGltZVByZWZldGNoYWJsZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlclBhcmFtc0luUHJvZCh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgKDAsIF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLnRocm93SW52YXJpYW50Rm9yTWlzc2luZ1N0b3JlKSgpO1xufVxuZnVuY3Rpb24gY3JlYXRlU2VydmVyUGFyYW1zRm9yU2VydmVyU2VnbWVudCh1bmRlcmx5aW5nUGFyYW1zLCBvcHRpb25hbENhdGNoQWxsUGFyYW1OYW1lLCB2YXJ5UGFyYW1zQWNjdW11bGF0b3IsIGlzUnVudGltZVByZWZldGNoYWJsZSkge1xuICAgIGNvbnN0IHdvcmtTdG9yZSA9IF93b3JrYXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya0FzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICghd29ya1N0b3JlKSB7XG4gICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdFeHBlY3RlZCB3b3JrU3RvcmUgdG8gYmUgaW5pdGlhbGl6ZWQnKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICB2YWx1ZTogXCJFMTA2OFwiLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHdvcmtVbml0U3RvcmUgPSBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICh3b3JrVW5pdFN0b3JlKSB7XG4gICAgICAgIHN3aXRjaCh3b3JrVW5pdFN0b3JlLnR5cGUpe1xuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlU3RhdGljUHJlcmVuZGVyUGFyYW1zKHVuZGVybHlpbmdQYXJhbXMsIG9wdGlvbmFsQ2F0Y2hBbGxQYXJhbU5hbWUsIHdvcmtTdG9yZSwgd29ya1VuaXRTdG9yZSwgdmFyeVBhcmFtc0FjY3VtdWxhdG9yKTtcbiAgICAgICAgICAgIGNhc2UgJ3ZhbGlkYXRpb24tY2xpZW50JzpcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignY3JlYXRlU2VydmVyUGFyYW1zRm9yU2VydmVyU2VnbWVudCBzaG91bGQgbm90IGJlIGNhbGxlZCBpbiBjbGllbnQgY29udGV4dHMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMTEwMVwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlICdjYWNoZSc6XG4gICAgICAgICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignY3JlYXRlU2VydmVyUGFyYW1zRm9yU2VydmVyU2VnbWVudCBzaG91bGQgbm90IGJlIGNhbGxlZCBpbiBjYWNoZSBjb250ZXh0cy4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU3NDNcIixcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2FzZSAnZ2VuZXJhdGUtc3RhdGljLXBhcmFtcyc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVNlcnZlclBhcmFtc0ZvclNlcnZlclNlZ21lbnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW5zaWRlIGdlbmVyYXRlU3RhdGljUGFyYW1zLicpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTExMjBcIixcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSdW50aW1lUHJlcmVuZGVyUGFyYW1zKHVuZGVybHlpbmdQYXJhbXMsIG9wdGlvbmFsQ2F0Y2hBbGxQYXJhbU5hbWUsIHdvcmtVbml0U3RvcmUsIHZhcnlQYXJhbXNBY2N1bXVsYXRvciwgaXNSdW50aW1lUHJlZmV0Y2hhYmxlKTtcbiAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgICAgICAgICAvLyBTZW1hbnRpY2FsbHkgd2Ugb25seSBuZWVkIHRoZSBkZXYgdHJhY2tpbmcgd2hlbiBydW5uaW5nIGluIGBuZXh0IGRldmBcbiAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHNpbmNlIHlvdSB3b3VsZCBuZXZlciB1c2UgbmV4dCBkZXYgd2l0aCBwcm9kdWN0aW9uIE5PREVfRU5WIHdlIHVzZSB0aGlzXG4gICAgICAgICAgICAgICAgICAgIC8vIGFzIGEgcHJveHkgc28gd2UgY2FuIHN0YXRpY2FsbHkgZXhjbHVkZSB0aGlzIGNvZGUgZnJvbSBwcm9kdWN0aW9uIGJ1aWxkcy5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmFsbGJhY2tQYXJhbXMgPSB3b3JrVW5pdFN0b3JlLmZhbGxiYWNrUGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyUGFyYW1zSW5EZXYodW5kZXJseWluZ1BhcmFtcywgZmFsbGJhY2tQYXJhbXMsIHdvcmtTdG9yZSwgd29ya1VuaXRTdG9yZSwgaXNSdW50aW1lUHJlZmV0Y2hhYmxlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdvcmtVbml0U3RvcmUuYXN5bmNBcGlQcm9taXNlcyAmJiB3b3JrVW5pdFN0b3JlLnZhbGlkYXRpb25TYW1wbGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVTZXJ2ZXJQYXJhbXNJbkluc3RhbnRWYWxpZGF0aW9uKHVuZGVybHlpbmdQYXJhbXMsIHdvcmtTdG9yZSwgd29ya1VuaXRTdG9yZS52YWxpZGF0aW9uU2FtcGxlcywgd29ya1VuaXRTdG9yZS5hc3luY0FwaVByb21pc2VzLCBpc1J1bnRpbWVQcmVmZXRjaGFibGUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod29ya1VuaXRTdG9yZS5hc3luY0FwaVByb21pc2VzICYmIGhhc0ZhbGxiYWNrUm91dGVQYXJhbXModW5kZXJseWluZ1BhcmFtcywgd29ya1VuaXRTdG9yZS5mYWxsYmFja1BhcmFtcykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChpc1J1bnRpbWVQcmVmZXRjaGFibGUgPyB3b3JrVW5pdFN0b3JlLmFzeW5jQXBpUHJvbWlzZXMuZWFybHlTaGFyZWRQYXJhbXNQYXJlbnQgOiB3b3JrVW5pdFN0b3JlLmFzeW5jQXBpUHJvbWlzZXMuc2hhcmVkUGFyYW1zUGFyZW50KS50aGVuKCgpPT51bmRlcmx5aW5nUGFyYW1zKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyUGFyYW1zSW5Qcm9kKHVuZGVybHlpbmdQYXJhbXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAoMCwgX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwudGhyb3dJbnZhcmlhbnRGb3JNaXNzaW5nU3RvcmUpKCk7XG59XG5mdW5jdGlvbiBjcmVhdGVQcmVyZW5kZXJQYXJhbXNGb3JDbGllbnRTZWdtZW50KHVuZGVybHlpbmdQYXJhbXMpIHtcbiAgICBjb25zdCB3b3JrU3RvcmUgPSBfd29ya2FzeW5jc3RvcmFnZWV4dGVybmFsLndvcmtBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAoIXdvcmtTdG9yZSkge1xuICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignTWlzc2luZyB3b3JrU3RvcmUgaW4gY3JlYXRlUHJlcmVuZGVyUGFyYW1zRm9yQ2xpZW50U2VnbWVudCcpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgIHZhbHVlOiBcIkU3NzNcIixcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCB3b3JrVW5pdFN0b3JlID0gX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya1VuaXRBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgICAgICBzd2l0Y2god29ya1VuaXRTdG9yZS50eXBlKXtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgICAgICAgICAgICBjb25zdCBmYWxsYmFja1BhcmFtcyA9IHdvcmtVbml0U3RvcmUuZmFsbGJhY2tSb3V0ZVBhcmFtcztcbiAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2tQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBrZXkgaW4gdW5kZXJseWluZ1BhcmFtcyl7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2tQYXJhbXMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHBhcmFtcyBvYmplY3QgaGFzIG9uZSBvciBtb3JlIGZhbGxiYWNrIHBhcmFtcywgc28gd2UgbmVlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGNvbnNpZGVyIHRoZSBhd2FpdGluZyBvZiB0aGlzIHBhcmFtcyBvYmplY3QgXCJkeW5hbWljXCIuIFNpbmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgYXJlIGluIGNhY2hlQ29tcG9uZW50cyBtb2RlIHdlIGVuY29kZSB0aGlzIGFzIGEgcHJvbWlzZSB0aGF0IG5ldmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzb2x2ZXMuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCBfZHluYW1pY3JlbmRlcmluZ3V0aWxzLm1ha2VIYW5naW5nUHJvbWlzZSkod29ya1VuaXRTdG9yZS5yZW5kZXJTaWduYWwsIHdvcmtTdG9yZS5yb3V0ZSwgJ2BwYXJhbXNgJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd2YWxpZGF0aW9uLWNsaWVudCc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVByZXJlbmRlclBhcmFtc0ZvckNsaWVudFNlZ21lbnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gdmFsaWRhdGlvbiBjb250ZXh0cy4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkUxMDk5XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByaXZhdGUtY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAndW5zdGFibGUtY2FjaGUnOlxuICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdjcmVhdGVQcmVyZW5kZXJQYXJhbXNGb3JDbGllbnRTZWdtZW50IHNob3VsZCBub3QgYmUgY2FsbGVkIGluIGNhY2hlIGNvbnRleHRzLicpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTczNFwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlICdnZW5lcmF0ZS1zdGF0aWMtcGFyYW1zJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignY3JlYXRlUHJlcmVuZGVyUGFyYW1zRm9yQ2xpZW50U2VnbWVudCBzaG91bGQgbm90IGJlIGNhbGxlZCBpbnNpZGUgZ2VuZXJhdGVTdGF0aWNQYXJhbXMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMTEyNlwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcHByJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgICAgICAgICAgY2FzZSAncmVxdWVzdCc6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gV2UncmUgcHJlcmVuZGVyaW5nIGluIGEgbW9kZSB0aGF0IGRvZXMgbm90IGFib3J0LiBXZSByZXNvbHZlIHRoZSBwcm9taXNlIHdpdGhvdXRcbiAgICAvLyBhbnkgdHJhY2tpbmcgYmVjYXVzZSB3ZSdyZSBqdXN0IHRyYW5zcG9ydGluZyBhIHZhbHVlIGZyb20gc2VydmVyIHRvIGNsaWVudCB3aGVyZSB0aGUgdHJhY2tpbmdcbiAgICAvLyB3aWxsIGJlIGFwcGxpZWQuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlcmx5aW5nUGFyYW1zKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVN0YXRpY1ByZXJlbmRlclBhcmFtcyh1bmRlcmx5aW5nUGFyYW1zLCBvcHRpb25hbENhdGNoQWxsUGFyYW1OYW1lLCB3b3JrU3RvcmUsIHByZXJlbmRlclN0b3JlLCB2YXJ5UGFyYW1zQWNjdW11bGF0b3IpIHtcbiAgICBjb25zdCB1bmRlcmx5aW5nUGFyYW1zV2l0aFZhcnlpbmcgPSB2YXJ5UGFyYW1zQWNjdW11bGF0b3IgIT09IG51bGwgPyAoMCwgX3ZhcnlwYXJhbXMuY3JlYXRlVmFyeWluZ1BhcmFtcykodmFyeVBhcmFtc0FjY3VtdWxhdG9yLCB1bmRlcmx5aW5nUGFyYW1zLCBvcHRpb25hbENhdGNoQWxsUGFyYW1OYW1lKSA6IHVuZGVybHlpbmdQYXJhbXM7XG4gICAgc3dpdGNoKHByZXJlbmRlclN0b3JlLnR5cGUpe1xuICAgICAgICBjYXNlICdwcmVyZW5kZXInOlxuICAgICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmYWxsYmFja1BhcmFtcyA9IHByZXJlbmRlclN0b3JlLmZhbGxiYWNrUm91dGVQYXJhbXM7XG4gICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrUGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcihjb25zdCBrZXkgaW4gdW5kZXJseWluZ1BhcmFtcyl7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2tQYXJhbXMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHBhcmFtcyBvYmplY3QgaGFzIG9uZSBvciBtb3JlIGZhbGxiYWNrIHBhcmFtcywgc28gd2UgbmVlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGNvbnNpZGVyIHRoZSBhd2FpdGluZyBvZiB0aGlzIHBhcmFtcyBvYmplY3QgXCJkeW5hbWljXCIuIFNpbmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgYXJlIGluIGNhY2hlQ29tcG9uZW50cyBtb2RlIHdlIGVuY29kZSB0aGlzIGFzIGEgcHJvbWlzZSB0aGF0IG5ldmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzb2x2ZXMuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VIYW5naW5nUGFyYW1zKHVuZGVybHlpbmdQYXJhbXNXaXRoVmFyeWluZywgd29ya1N0b3JlLCBwcmVyZW5kZXJTdG9yZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZhbGxiYWNrUGFyYW1zID0gcHJlcmVuZGVyU3RvcmUuZmFsbGJhY2tSb3V0ZVBhcmFtcztcbiAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2tQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yKGNvbnN0IGtleSBpbiB1bmRlcmx5aW5nUGFyYW1zKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWxsYmFja1BhcmFtcy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlRXJyb3JpbmdQYXJhbXModW5kZXJseWluZ1BhcmFtc1dpdGhWYXJ5aW5nLCBmYWxsYmFja1BhcmFtcywgd29ya1N0b3JlLCBwcmVyZW5kZXJTdG9yZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBwcmVyZW5kZXJTdG9yZTtcbiAgICB9XG4gICAgcmV0dXJuIG1ha2VVbnRyYWNrZWRQYXJhbXModW5kZXJseWluZ1BhcmFtc1dpdGhWYXJ5aW5nKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVJ1bnRpbWVQcmVyZW5kZXJQYXJhbXModW5kZXJseWluZ1BhcmFtcywgb3B0aW9uYWxDYXRjaEFsbFBhcmFtTmFtZSwgd29ya1VuaXRTdG9yZSwgdmFyeVBhcmFtc0FjY3VtdWxhdG9yLCBpc1J1bnRpbWVQcmVmZXRjaGFibGUpIHtcbiAgICBjb25zdCB1bmRlcmx5aW5nUGFyYW1zV2l0aFZhcnlpbmcgPSB2YXJ5UGFyYW1zQWNjdW11bGF0b3IgIT09IG51bGwgPyAoMCwgX3ZhcnlwYXJhbXMuY3JlYXRlVmFyeWluZ1BhcmFtcykodmFyeVBhcmFtc0FjY3VtdWxhdG9yLCB1bmRlcmx5aW5nUGFyYW1zLCBvcHRpb25hbENhdGNoQWxsUGFyYW1OYW1lKSA6IHVuZGVybHlpbmdQYXJhbXM7XG4gICAgY29uc3QgcmVzdWx0ID0gbWFrZVVudHJhY2tlZFBhcmFtcyh1bmRlcmx5aW5nUGFyYW1zV2l0aFZhcnlpbmcpO1xuICAgIGNvbnN0IHsgc3RhZ2VkUmVuZGVyaW5nIH0gPSB3b3JrVW5pdFN0b3JlO1xuICAgIGlmICghc3RhZ2VkUmVuZGVyaW5nKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGNvbnN0IHN0YWdlID0gaXNSdW50aW1lUHJlZmV0Y2hhYmxlID8gX3N0YWdlZHJlbmRlcmluZy5SZW5kZXJTdGFnZS5FYXJseVJ1bnRpbWUgOiBfc3RhZ2VkcmVuZGVyaW5nLlJlbmRlclN0YWdlLlJ1bnRpbWU7XG4gICAgcmV0dXJuIHN0YWdlZFJlbmRlcmluZy53YWl0Rm9yU3RhZ2Uoc3RhZ2UpLnRoZW4oKCk9PnJlc3VsdCk7XG59XG5mdW5jdGlvbiBoYXNGYWxsYmFja1JvdXRlUGFyYW1zKHVuZGVybHlpbmdQYXJhbXMsIGZhbGxiYWNrUGFyYW1zKSB7XG4gICAgaWYgKGZhbGxiYWNrUGFyYW1zKSB7XG4gICAgICAgIGZvcihsZXQga2V5IGluIHVuZGVybHlpbmdQYXJhbXMpe1xuICAgICAgICAgICAgaWYgKGZhbGxiYWNrUGFyYW1zLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gY3JlYXRlU2VydmVyUGFyYW1zSW5JbnN0YW50VmFsaWRhdGlvbih1bmRlcmx5aW5nUGFyYW1zLCB3b3JrU3RvcmUsIHZhbGlkYXRpb25TYW1wbGVzLCBhc3luY0FwaVByb21pc2VzLCBpc1J1bnRpbWVQcmVmZXRjaGFibGUpIHtcbiAgICBjb25zdCB7IGNyZWF0ZUV4aGF1c3RpdmVQYXJhbXNQcm94eSB9ID0gcmVxdWlyZSgnLi4vYXBwLXJlbmRlci9pbnN0YW50LXZhbGlkYXRpb24vaW5zdGFudC1zYW1wbGVzJyk7XG4gICAgY29uc3QgZGVjbGFyZWRQYXJhbXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKHZhbGlkYXRpb25TYW1wbGVzLnBhcmFtcyA/PyB7fSkpO1xuICAgIGNvbnN0IHByb3hpZWRVbmRlcmx5aW5nID0gY3JlYXRlRXhoYXVzdGl2ZVBhcmFtc1Byb3h5KHVuZGVybHlpbmdQYXJhbXMsIGRlY2xhcmVkUGFyYW1zLCB3b3JrU3RvcmUucm91dGUpO1xuICAgIHJldHVybiAoaXNSdW50aW1lUHJlZmV0Y2hhYmxlID8gYXN5bmNBcGlQcm9taXNlcy5lYXJseVNoYXJlZFBhcmFtc1BhcmVudCA6IGFzeW5jQXBpUHJvbWlzZXMuc2hhcmVkUGFyYW1zUGFyZW50KS50aGVuKCgpPT5wcm94aWVkVW5kZXJseWluZyk7XG59XG5mdW5jdGlvbiBjcmVhdGVDbGllbnRQYXJhbXNJbkluc3RhbnRWYWxpZGF0aW9uKHVuZGVybHlpbmdQYXJhbXMsIHdvcmtTdG9yZSwgdmFsaWRhdGlvblNhbXBsZXMpIHtcbiAgICBjb25zdCB7IGNyZWF0ZUV4aGF1c3RpdmVQYXJhbXNQcm94eSB9ID0gcmVxdWlyZSgnLi4vYXBwLXJlbmRlci9pbnN0YW50LXZhbGlkYXRpb24vaW5zdGFudC1zYW1wbGVzJyk7XG4gICAgY29uc3QgZGVjbGFyZWRQYXJhbXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKCh2YWxpZGF0aW9uU2FtcGxlcyA9PSBudWxsID8gdm9pZCAwIDogdmFsaWRhdGlvblNhbXBsZXMucGFyYW1zKSA/PyB7fSkpO1xuICAgIGNvbnN0IHByb3hpZWRVbmRlcmx5aW5nID0gY3JlYXRlRXhoYXVzdGl2ZVBhcmFtc1Byb3h5KHVuZGVybHlpbmdQYXJhbXMsIGRlY2xhcmVkUGFyYW1zLCB3b3JrU3RvcmUucm91dGUpO1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocHJveGllZFVuZGVybHlpbmcpO1xufVxuZnVuY3Rpb24gY3JlYXRlUmVuZGVyUGFyYW1zSW5Qcm9kKHVuZGVybHlpbmdQYXJhbXMpIHtcbiAgICByZXR1cm4gbWFrZVVudHJhY2tlZFBhcmFtcyh1bmRlcmx5aW5nUGFyYW1zKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVJlbmRlclBhcmFtc0luRGV2KHVuZGVybHlpbmdQYXJhbXMsIGZhbGxiYWNrUGFyYW1zLCB3b3JrU3RvcmUsIHJlcXVlc3RTdG9yZSwgaXNSdW50aW1lUHJlZmV0Y2hhYmxlKSB7XG4gICAgcmV0dXJuIG1ha2VEeW5hbWljYWxseVRyYWNrZWRQYXJhbXNXaXRoRGV2V2FybmluZ3ModW5kZXJseWluZ1BhcmFtcywgaGFzRmFsbGJhY2tSb3V0ZVBhcmFtcyh1bmRlcmx5aW5nUGFyYW1zLCBmYWxsYmFja1BhcmFtcyksIHdvcmtTdG9yZSwgcmVxdWVzdFN0b3JlLCBpc1J1bnRpbWVQcmVmZXRjaGFibGUpO1xufVxuY29uc3QgQ2FjaGVkUGFyYW1zID0gbmV3IFdlYWtNYXAoKTtcbmNvbnN0IGZhbGxiYWNrUGFyYW1zUHJveHlIYW5kbGVyID0ge1xuICAgIGdldDogZnVuY3Rpb24gZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgaWYgKHByb3AgPT09ICd0aGVuJyB8fCBwcm9wID09PSAnY2F0Y2gnIHx8IHByb3AgPT09ICdmaW5hbGx5Jykge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICByZXR1cm4gKHtcbiAgICAgICAgICAgICAgICBbcHJvcF06ICguLi5hcmdzKT0+e1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdG9yZSA9IF9keW5hbWljYWNjZXNzYXN5bmNzdG9yYWdlZXh0ZXJuYWwuZHluYW1pY0FjY2Vzc0FzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RvcmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLmFib3J0Q29udHJvbGxlci5hYm9ydChPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKGBBY2Nlc3NlZCBmYWxsYmFjayBcXGBwYXJhbXNcXGAgZHVyaW5nIHByZXJlbmRlcmluZy5gKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTY5MVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJveHkob3JpZ2luYWxNZXRob2QuYXBwbHkodGFyZ2V0LCBhcmdzKSwgZmFsbGJhY2tQYXJhbXNQcm94eUhhbmRsZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pW3Byb3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgfVxufTtcbmZ1bmN0aW9uIG1ha2VIYW5naW5nUGFyYW1zKHVuZGVybHlpbmdQYXJhbXMsIHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpIHtcbiAgICBjb25zdCBjYWNoZWRQYXJhbXMgPSBDYWNoZWRQYXJhbXMuZ2V0KHVuZGVybHlpbmdQYXJhbXMpO1xuICAgIGlmIChjYWNoZWRQYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFBhcmFtcztcbiAgICB9XG4gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm94eSgoMCwgX2R5bmFtaWNyZW5kZXJpbmd1dGlscy5tYWtlSGFuZ2luZ1Byb21pc2UpKHByZXJlbmRlclN0b3JlLnJlbmRlclNpZ25hbCwgd29ya1N0b3JlLnJvdXRlLCAnYHBhcmFtc2AnKSwgZmFsbGJhY2tQYXJhbXNQcm94eUhhbmRsZXIpO1xuICAgIENhY2hlZFBhcmFtcy5zZXQodW5kZXJseWluZ1BhcmFtcywgcHJvbWlzZSk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5mdW5jdGlvbiBtYWtlRXJyb3JpbmdQYXJhbXModW5kZXJseWluZ1BhcmFtcywgZmFsbGJhY2tQYXJhbXMsIHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpIHtcbiAgICBjb25zdCBjYWNoZWRQYXJhbXMgPSBDYWNoZWRQYXJhbXMuZ2V0KHVuZGVybHlpbmdQYXJhbXMpO1xuICAgIGlmIChjYWNoZWRQYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFBhcmFtcztcbiAgICB9XG4gICAgY29uc3QgYXVnbWVudGVkVW5kZXJseWluZyA9IHtcbiAgICAgICAgLi4udW5kZXJseWluZ1BhcmFtc1xuICAgIH07XG4gICAgLy8gV2UgZG9uJ3QgdXNlIG1ha2VSZXNvbHZlZFJlYWN0UHJvbWlzZSBoZXJlIGJlY2F1c2UgcGFyYW1zXG4gICAgLy8gc3VwcG9ydHMgY29weWluZyB3aXRoIHNwcmVhZCBhbmQgd2UgZG9uJ3Qgd2FudCB0byB1bm5lY2Vzc2FyaWx5XG4gICAgLy8gaW5zdHJ1bWVudCB0aGUgcHJvbWlzZSB3aXRoIHNwcmVhZGFibGUgcHJvcGVydGllcyBvZiBSZWFjdFByb21pc2UuXG4gICAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShhdWdtZW50ZWRVbmRlcmx5aW5nKTtcbiAgICBDYWNoZWRQYXJhbXMuc2V0KHVuZGVybHlpbmdQYXJhbXMsIHByb21pc2UpO1xuICAgIE9iamVjdC5rZXlzKHVuZGVybHlpbmdQYXJhbXMpLmZvckVhY2goKHByb3ApPT57XG4gICAgICAgIGlmIChfcmVmbGVjdHV0aWxzLndlbGxLbm93blByb3BlcnRpZXMuaGFzKHByb3ApKSB7XG4gICAgICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgY2Fubm90IGJlIHNoYWRvd2VkIGJlY2F1c2UgdGhleSBuZWVkIHRvIGJlIHRoZVxuICAgICAgICAvLyB0cnVlIHVuZGVybHlpbmcgdmFsdWUgZm9yIFByb21pc2VzIHRvIHdvcmsgY29ycmVjdGx5IGF0IHJ1bnRpbWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmYWxsYmFja1BhcmFtcy5oYXMocHJvcCkpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYXVnbWVudGVkVW5kZXJseWluZywgcHJvcCwge1xuICAgICAgICAgICAgICAgICAgICBnZXQgKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICgwLCBfcmVmbGVjdHV0aWxzLmRlc2NyaWJlU3RyaW5nUHJvcGVydHlBY2Nlc3MpKCdwYXJhbXMnLCBwcm9wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluIG1vc3QgZHluYW1pYyBBUElzIHdlIGFsc28gdGhyb3cgaWYgYGR5bmFtaWMgPSBcImVycm9yXCJgIGhvd2V2ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBwYXJhbXMgaXMgb25seSBkeW5hbWljIHdoZW4gd2UncmUgZ2VuZXJhdGluZyBhIGZhbGxiYWNrIHNoZWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgZXZlbiB3aGVuIGBkeW5hbWljID0gXCJlcnJvclwiYCB3ZSBzdGlsbCBzdXBwb3J0IGdlbmVyYXRpbmcgZHluYW1pY1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmFsbGJhY2sgc2hlbGxzXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPIHJlbW92ZSB0aGlzIGNvbW1lbnQgd2hlbiBjYWNoZUNvbXBvbmVudHMgaXMgdGhlIGRlZmF1bHQgc2luY2UgdGhlcmVcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgYmUgbm8gYGR5bmFtaWMgPSBcImVycm9yXCJgXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJlcmVuZGVyU3RvcmUudHlwZSA9PT0gJ3ByZXJlbmRlci1wcHInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUFBSIFByZXJlbmRlciAobm8gY2FjaGVDb21wb25lbnRzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfZHluYW1pY3JlbmRlcmluZy5wb3N0cG9uZVdpdGhUcmFja2luZykod29ya1N0b3JlLnJvdXRlLCBleHByZXNzaW9uLCBwcmVyZW5kZXJTdG9yZS5keW5hbWljVHJhY2tpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZWdhY3kgUHJlcmVuZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAsIF9keW5hbWljcmVuZGVyaW5nLnRocm93VG9JbnRlcnJ1cHRTdGF0aWNHZW5lcmF0aW9uKShleHByZXNzaW9uLCB3b3JrU3RvcmUsIHByZXJlbmRlclN0b3JlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5mdW5jdGlvbiBtYWtlVW50cmFja2VkUGFyYW1zKHVuZGVybHlpbmdQYXJhbXMpIHtcbiAgICBjb25zdCBjYWNoZWRQYXJhbXMgPSBDYWNoZWRQYXJhbXMuZ2V0KHVuZGVybHlpbmdQYXJhbXMpO1xuICAgIGlmIChjYWNoZWRQYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFBhcmFtcztcbiAgICB9XG4gICAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICBDYWNoZWRQYXJhbXMuc2V0KHVuZGVybHlpbmdQYXJhbXMsIHByb21pc2UpO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuZnVuY3Rpb24gbWFrZUR5bmFtaWNhbGx5VHJhY2tlZFBhcmFtc1dpdGhEZXZXYXJuaW5ncyh1bmRlcmx5aW5nUGFyYW1zLCBoYXNGYWxsYmFja1BhcmFtcywgd29ya1N0b3JlLCByZXF1ZXN0U3RvcmUsIGlzUnVudGltZVByZWZldGNoYWJsZSkge1xuICAgIGlmIChyZXF1ZXN0U3RvcmUuYXN5bmNBcGlQcm9taXNlcyAmJiBoYXNGYWxsYmFja1BhcmFtcykge1xuICAgICAgICAvLyBXZSB3cmFwIGVhY2ggaW5zdGFuY2Ugb2YgcGFyYW1zIGluIGEgYG5ldyBQcm9taXNlKClgLCBiZWNhdXNlIGRlZHVwaW5nXG4gICAgICAgIC8vIHRoZW0gYWNyb3NzIHJlcXVlc3RzIGRvZXNuJ3Qgd29yayBhbnl3YXkgYW5kIHRoaXMgbGV0IHVzIHNob3cgZWFjaFxuICAgICAgICAvLyBhd2FpdCBhIGRpZmZlcmVudCBzZXQgb2YgdmFsdWVzLiBUaGlzIGlzIGltcG9ydGFudCB3aGVuIGFsbCBhd2FpdHNcbiAgICAgICAgLy8gYXJlIGluIHRoaXJkIHBhcnR5IHdoaWNoIHdvdWxkIG90aGVyd2lzZSB0cmFjayBhbGwgdGhlIHdheSB0byB0aGVcbiAgICAgICAgLy8gaW50ZXJuYWwgcGFyYW1zLlxuICAgICAgICBjb25zdCBzaGFyZWRQYXJhbXNQYXJlbnQgPSBpc1J1bnRpbWVQcmVmZXRjaGFibGUgPyByZXF1ZXN0U3RvcmUuYXN5bmNBcGlQcm9taXNlcy5lYXJseVNoYXJlZFBhcmFtc1BhcmVudCA6IHJlcXVlc3RTdG9yZS5hc3luY0FwaVByb21pc2VzLnNoYXJlZFBhcmFtc1BhcmVudDtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57XG4gICAgICAgICAgICBzaGFyZWRQYXJhbXNQYXJlbnQudGhlbigoKT0+cmVzb2x2ZSh1bmRlcmx5aW5nUGFyYW1zKSwgcmVqZWN0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgcHJvbWlzZS5kaXNwbGF5TmFtZSA9ICdwYXJhbXMnO1xuICAgICAgICByZXR1cm4gaW5zdHJ1bWVudFBhcmFtc1Byb21pc2VXaXRoRGV2V2FybmluZ3ModW5kZXJseWluZ1BhcmFtcywgcHJvbWlzZSwgd29ya1N0b3JlKTtcbiAgICB9XG4gICAgY29uc3QgY2FjaGVkUGFyYW1zID0gQ2FjaGVkUGFyYW1zLmdldCh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICBpZiAoY2FjaGVkUGFyYW1zKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRQYXJhbXM7XG4gICAgfVxuICAgIC8vIFdlIGRvbid0IHVzZSBtYWtlUmVzb2x2ZWRSZWFjdFByb21pc2UgaGVyZSBiZWNhdXNlIHBhcmFtc1xuICAgIC8vIHN1cHBvcnRzIGNvcHlpbmcgd2l0aCBzcHJlYWQgYW5kIHdlIGRvbid0IHdhbnQgdG8gdW5uZWNlc3NhcmlseVxuICAgIC8vIGluc3RydW1lbnQgdGhlIHByb21pc2Ugd2l0aCBzcHJlYWRhYmxlIHByb3BlcnRpZXMgb2YgUmVhY3RQcm9taXNlLlxuICAgIGNvbnN0IHByb21pc2UgPSBoYXNGYWxsYmFja1BhcmFtcyA/ICgwLCBfZHluYW1pY3JlbmRlcmluZ3V0aWxzLm1ha2VEZXZ0b29sc0lPQXdhcmVQcm9taXNlKSh1bmRlcmx5aW5nUGFyYW1zLCByZXF1ZXN0U3RvcmUsIF9zdGFnZWRyZW5kZXJpbmcuUmVuZGVyU3RhZ2UuUnVudGltZSkgOiBQcm9taXNlLnJlc29sdmUodW5kZXJseWluZ1BhcmFtcyk7XG4gICAgY29uc3QgcHJveGllZFByb21pc2UgPSBpbnN0cnVtZW50UGFyYW1zUHJvbWlzZVdpdGhEZXZXYXJuaW5ncyh1bmRlcmx5aW5nUGFyYW1zLCBwcm9taXNlLCB3b3JrU3RvcmUpO1xuICAgIENhY2hlZFBhcmFtcy5zZXQodW5kZXJseWluZ1BhcmFtcywgcHJveGllZFByb21pc2UpO1xuICAgIHJldHVybiBwcm94aWVkUHJvbWlzZTtcbn1cbmZ1bmN0aW9uIGluc3RydW1lbnRQYXJhbXNQcm9taXNlV2l0aERldldhcm5pbmdzKHVuZGVybHlpbmdQYXJhbXMsIHByb21pc2UsIHdvcmtTdG9yZSkge1xuICAgIC8vIFRyYWNrIHdoaWNoIHByb3BlcnRpZXMgd2Ugc2hvdWxkIHdhcm4gZm9yLlxuICAgIGNvbnN0IHByb3hpZWRQcm9wZXJ0aWVzID0gbmV3IFNldCgpO1xuICAgIE9iamVjdC5rZXlzKHVuZGVybHlpbmdQYXJhbXMpLmZvckVhY2goKHByb3ApPT57XG4gICAgICAgIGlmIChfcmVmbGVjdHV0aWxzLndlbGxLbm93blByb3BlcnRpZXMuaGFzKHByb3ApKSB7XG4gICAgICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgY2Fubm90IGJlIHNoYWRvd2VkIGJlY2F1c2UgdGhleSBuZWVkIHRvIGJlIHRoZVxuICAgICAgICAvLyB0cnVlIHVuZGVybHlpbmcgdmFsdWUgZm9yIFByb21pc2VzIHRvIHdvcmsgY29ycmVjdGx5IGF0IHJ1bnRpbWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb3hpZWRQcm9wZXJ0aWVzLmFkZChwcm9wKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBuZXcgUHJveHkocHJvbWlzZSwge1xuICAgICAgICBnZXQgKHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpZiAoLy8gV2UgYXJlIGFjY2Vzc2luZyBhIHByb3BlcnR5IHRoYXQgd2FzIHByb3hpZWQgdG8gdGhlIHByb21pc2UgaW5zdGFuY2VcbiAgICAgICAgICAgICAgICBwcm94aWVkUHJvcGVydGllcy5oYXMocHJvcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICgwLCBfcmVmbGVjdHV0aWxzLmRlc2NyaWJlU3RyaW5nUHJvcGVydHlBY2Nlc3MpKCdwYXJhbXMnLCBwcm9wKTtcbiAgICAgICAgICAgICAgICAgICAgd2FybkZvclN5bmNBY2Nlc3Mod29ya1N0b3JlLnJvdXRlLCBleHByZXNzaW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gX3JlZmxlY3QuUmVmbGVjdEFkYXB0ZXIuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpO1xuICAgICAgICB9LFxuICAgICAgICBzZXQgKHRhcmdldCwgcHJvcCwgdmFsdWUsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcHJveGllZFByb3BlcnRpZXMuZGVsZXRlKHByb3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLnNldCh0YXJnZXQsIHByb3AsIHZhbHVlLCByZWNlaXZlcik7XG4gICAgICAgIH0sXG4gICAgICAgIG93bktleXMgKHRhcmdldCkge1xuICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICdgLi4ucGFyYW1zYCBvciBzaW1pbGFyIGV4cHJlc3Npb24nO1xuICAgICAgICAgICAgd2FybkZvclN5bmNBY2Nlc3Mod29ya1N0b3JlLnJvdXRlLCBleHByZXNzaW9uKTtcbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0Lm93bktleXModGFyZ2V0KTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuY29uc3Qgd2FybkZvclN5bmNBY2Nlc3MgPSAoMCwgX2NyZWF0ZWRlZHVwZWRieWNhbGxzaXRlc2VydmVyZXJyb3Jsb2dnZXIuY3JlYXRlRGVkdXBlZEJ5Q2FsbHNpdGVTZXJ2ZXJFcnJvckxvZ2dlckRldikoY3JlYXRlUGFyYW1zQWNjZXNzRXJyb3IpO1xuZnVuY3Rpb24gY3JlYXRlUGFyYW1zQWNjZXNzRXJyb3Iocm91dGUsIGV4cHJlc3Npb24pIHtcbiAgICBjb25zdCBwcmVmaXggPSByb3V0ZSA/IGBSb3V0ZSBcIiR7cm91dGV9XCIgYCA6ICdUaGlzIHJvdXRlICc7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoYCR7cHJlZml4fXVzZWQgJHtleHByZXNzaW9ufS4gYCArIGBcXGBwYXJhbXNcXGAgaXMgYSBQcm9taXNlIGFuZCBtdXN0IGJlIHVud3JhcHBlZCB3aXRoIFxcYGF3YWl0XFxgIG9yIFxcYFJlYWN0LnVzZSgpXFxgIGJlZm9yZSBhY2Nlc3NpbmcgaXRzIHByb3BlcnRpZXMuIGAgKyBgTGVhcm4gbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvc3luYy1keW5hbWljLWFwaXNgKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgIHZhbHVlOiBcIkU4MzRcIixcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXJhbXMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/request/params.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/request/search-params.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/request/search-params.js ***!
|
||
\****************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createPrerenderSearchParamsForClientPage: function() {\n return createPrerenderSearchParamsForClientPage;\n },\n createSearchParamsFromClient: function() {\n return createSearchParamsFromClient;\n },\n createServerSearchParamsForMetadata: function() {\n return createServerSearchParamsForMetadata;\n },\n createServerSearchParamsForServerPage: function() {\n return createServerSearchParamsForServerPage;\n },\n makeErroringSearchParamsForUseCache: function() {\n return makeErroringSearchParamsForUseCache;\n }\n});\nconst _workasyncstorageexternal = __webpack_require__(/*! ../app-render/work-async-storage.external */ \"../app-render/work-async-storage.external\");\nconst _varyparams = __webpack_require__(/*! ../app-render/vary-params */ \"(ssr)/./node_modules/next/dist/server/app-render/vary-params.js\");\nconst _reflect = __webpack_require__(/*! ../web/spec-extension/adapters/reflect */ \"(ssr)/./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js\");\nconst _dynamicrendering = __webpack_require__(/*! ../app-render/dynamic-rendering */ \"(ssr)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\");\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ../app-render/work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(ssr)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nconst _dynamicrenderingutils = __webpack_require__(/*! ../dynamic-rendering-utils */ \"(ssr)/./node_modules/next/dist/server/dynamic-rendering-utils.js\");\nconst _creatededupedbycallsiteservererrorlogger = __webpack_require__(/*! ../create-deduped-by-callsite-server-error-logger */ \"(ssr)/./node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js\");\nconst _reflectutils = __webpack_require__(/*! ../../shared/lib/utils/reflect-utils */ \"(ssr)/./node_modules/next/dist/shared/lib/utils/reflect-utils.js\");\nconst _utils = __webpack_require__(/*! ./utils */ \"(ssr)/./node_modules/next/dist/server/request/utils.js\");\nconst _stagedrendering = __webpack_require__(/*! ../app-render/staged-rendering */ \"(ssr)/./node_modules/next/dist/server/app-render/staged-rendering.js\");\nfunction createSearchParamsFromClient(underlyingSearchParams) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (!workStore) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected workStore to be initialized'), \"__NEXT_ERROR_CODE\", {\n value: \"E1068\",\n enumerable: false,\n configurable: true\n });\n }\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n return createStaticPrerenderSearchParams(workStore, workUnitStore);\n case 'validation-client':\n {\n return createClientSearchParamsInValidation(underlyingSearchParams, workStore, workUnitStore);\n }\n case 'prerender-runtime':\n throw Object.defineProperty(new _invarianterror.InvariantError('createSearchParamsFromClient should not be called in a runtime prerender.'), \"__NEXT_ERROR_CODE\", {\n value: \"E769\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createSearchParamsFromClient should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E739\",\n enumerable: false,\n configurable: true\n });\n case 'generate-static-params':\n throw Object.defineProperty(new _invarianterror.InvariantError('createSearchParamsFromClient should not be called inside generateStaticParams.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1133\",\n enumerable: false,\n configurable: true\n });\n case 'request':\n // Client searchParams are not runtime prefetchable\n const isRuntimePrefetchable = false;\n return createRenderSearchParams(underlyingSearchParams, workStore, workUnitStore, isRuntimePrefetchable);\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nfunction createServerSearchParamsForMetadata(underlyingSearchParams, isRuntimePrefetchable) {\n const metadataVaryParamsAccumulator = (0, _varyparams.getMetadataVaryParamsAccumulator)();\n return createServerSearchParamsForServerPage(underlyingSearchParams, metadataVaryParamsAccumulator, isRuntimePrefetchable);\n}\nfunction createServerSearchParamsForServerPage(underlyingSearchParams, varyParamsAccumulator, isRuntimePrefetchable) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (!workStore) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected workStore to be initialized'), \"__NEXT_ERROR_CODE\", {\n value: \"E1068\",\n enumerable: false,\n configurable: true\n });\n }\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n return createStaticPrerenderSearchParams(workStore, workUnitStore);\n case 'validation-client':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerSearchParamsForServerPage should not be called in a client validation.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1066\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerSearchParamsForServerPage should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E747\",\n enumerable: false,\n configurable: true\n });\n case 'generate-static-params':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerSearchParamsForServerPage should not be called inside generateStaticParams.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1128\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n return createRuntimePrerenderSearchParams(underlyingSearchParams, workUnitStore, varyParamsAccumulator, isRuntimePrefetchable);\n case 'request':\n return createRenderSearchParams(underlyingSearchParams, workStore, workUnitStore, isRuntimePrefetchable);\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nfunction createPrerenderSearchParamsForClientPage() {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (!workStore) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected workStore to be initialized'), \"__NEXT_ERROR_CODE\", {\n value: \"E1068\",\n enumerable: false,\n configurable: true\n });\n }\n if (workStore.forceStatic) {\n // When using forceStatic we override all other logic and always just return an empty\n // dictionary object.\n return Promise.resolve({});\n }\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n // We're prerendering in a mode that aborts (cacheComponents) and should stall\n // the promise to ensure the RSC side is considered dynamic\n return (0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, '`searchParams`');\n case 'validation-client':\n throw Object.defineProperty(new _invarianterror.InvariantError('createPrerenderSearchParamsForClientPage should not be called in a client validation.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1061\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n throw Object.defineProperty(new _invarianterror.InvariantError('createPrerenderSearchParamsForClientPage should not be called in a runtime prerender.'), \"__NEXT_ERROR_CODE\", {\n value: \"E768\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createPrerenderSearchParamsForClientPage should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E746\",\n enumerable: false,\n configurable: true\n });\n case 'generate-static-params':\n throw Object.defineProperty(new _invarianterror.InvariantError('createPrerenderSearchParamsForClientPage should not be called inside generateStaticParams.'), \"__NEXT_ERROR_CODE\", {\n value: \"E1124\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n return Promise.resolve({});\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nfunction createStaticPrerenderSearchParams(workStore, prerenderStore) {\n if (workStore.forceStatic) {\n // When using forceStatic we override all other logic and always just return an empty\n // dictionary object.\n return Promise.resolve({});\n }\n switch(prerenderStore.type){\n case 'prerender':\n case 'prerender-client':\n // We are in a cacheComponents (PPR or otherwise) prerender\n return makeHangingSearchParams(workStore, prerenderStore);\n case 'prerender-ppr':\n case 'prerender-legacy':\n // We are in a legacy static generation and need to interrupt the\n // prerender when search params are accessed.\n return makeErroringSearchParams(workStore, prerenderStore);\n default:\n return prerenderStore;\n }\n}\nfunction createRuntimePrerenderSearchParams(underlyingSearchParams, workUnitStore, varyParamsAccumulator, isRuntimePrefetchable) {\n const underlyingSearchParamsWithVarying = varyParamsAccumulator !== null ? (0, _varyparams.createVaryingSearchParams)(varyParamsAccumulator, underlyingSearchParams) : underlyingSearchParams;\n const result = makeUntrackedSearchParams(underlyingSearchParamsWithVarying);\n const { stagedRendering } = workUnitStore;\n if (!stagedRendering) {\n return result;\n }\n const stage = isRuntimePrefetchable ? _stagedrendering.RenderStage.EarlyRuntime : _stagedrendering.RenderStage.Runtime;\n return stagedRendering.waitForStage(stage).then(()=>result);\n}\nfunction createRenderSearchParams(underlyingSearchParams, workStore, requestStore, isRuntimePrefetchable) {\n if (workStore.forceStatic) {\n // When using forceStatic we override all other logic and always just return an empty\n // dictionary object.\n return Promise.resolve({});\n } else {\n if (true) {\n // Semantically we only need the dev tracking when running in `next dev`\n // but since you would never use next dev with production NODE_ENV we use this\n // as a proxy so we can statically exclude this code from production builds.\n return makeUntrackedSearchParamsWithDevWarnings(underlyingSearchParams, workStore, requestStore, isRuntimePrefetchable);\n } else {}\n }\n}\nconst CachedSearchParams = new WeakMap();\nconst CachedSearchParamsForUseCache = new WeakMap();\nfunction makeHangingSearchParams(workStore, prerenderStore) {\n const cachedSearchParams = CachedSearchParams.get(prerenderStore);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const promise = (0, _dynamicrenderingutils.makeHangingPromise)(prerenderStore.renderSignal, workStore.route, '`searchParams`');\n const proxiedPromise = new Proxy(promise, {\n get (target, prop, receiver) {\n if (Object.hasOwn(promise, prop)) {\n // The promise has this property directly. we must return it.\n // We know it isn't a dynamic access because it can only be something\n // that was previously written to the promise and thus not an underlying searchParam value\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n switch(prop){\n case 'then':\n {\n const expression = '`await searchParams`, `searchParams.then`, or similar';\n (0, _dynamicrendering.annotateDynamicAccess)(expression, prerenderStore);\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n case 'status':\n {\n const expression = '`use(searchParams)`, `searchParams.status`, or similar';\n (0, _dynamicrendering.annotateDynamicAccess)(expression, prerenderStore);\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n default:\n {\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n }\n }\n });\n CachedSearchParams.set(prerenderStore, proxiedPromise);\n return proxiedPromise;\n}\nfunction makeErroringSearchParams(workStore, prerenderStore) {\n const cachedSearchParams = CachedSearchParams.get(workStore);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const underlyingSearchParams = {};\n // For search params we don't construct a ReactPromise because we want to interrupt\n // rendering on any property access that was not set from outside and so we only want\n // to have properties like value and status if React sets them.\n const promise = Promise.resolve(underlyingSearchParams);\n const proxiedPromise = new Proxy(promise, {\n get (target, prop, receiver) {\n if (Object.hasOwn(promise, prop)) {\n // The promise has this property directly. we must return it.\n // We know it isn't a dynamic access because it can only be something\n // that was previously written to the promise and thus not an underlying searchParam value\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n if (typeof prop === 'string' && prop === 'then') {\n const expression = '`await searchParams`, `searchParams.then`, or similar';\n if (workStore.dynamicShouldError) {\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(workStore.route, expression);\n } else if (prerenderStore.type === 'prerender-ppr') {\n // PPR Prerender (no cacheComponents)\n (0, _dynamicrendering.postponeWithTracking)(workStore.route, expression, prerenderStore.dynamicTracking);\n } else {\n // Legacy Prerender\n (0, _dynamicrendering.throwToInterruptStaticGeneration)(expression, workStore, prerenderStore);\n }\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n });\n CachedSearchParams.set(workStore, proxiedPromise);\n return proxiedPromise;\n}\nfunction makeErroringSearchParamsForUseCache() {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (!workStore) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected workStore to be initialized'), \"__NEXT_ERROR_CODE\", {\n value: \"E1068\",\n enumerable: false,\n configurable: true\n });\n }\n const cachedSearchParams = CachedSearchParamsForUseCache.get(workStore);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const promise = Promise.resolve({});\n const proxiedPromise = new Proxy(promise, {\n get: function get(target, prop, receiver) {\n if (Object.hasOwn(promise, prop)) {\n // The promise has this property directly. we must return it. We know it\n // isn't a dynamic access because it can only be something that was\n // previously written to the promise and thus not an underlying\n // searchParam value\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n if (typeof prop === 'string' && (prop === 'then' || !_reflectutils.wellKnownProperties.has(prop))) {\n (0, _utils.throwForSearchParamsAccessInUseCache)(workStore, get);\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n });\n CachedSearchParamsForUseCache.set(workStore, proxiedPromise);\n return proxiedPromise;\n}\nfunction makeUntrackedSearchParams(underlyingSearchParams) {\n const cachedSearchParams = CachedSearchParams.get(underlyingSearchParams);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const promise = Promise.resolve(underlyingSearchParams);\n CachedSearchParams.set(underlyingSearchParams, promise);\n return promise;\n}\nfunction makeUntrackedSearchParamsWithDevWarnings(underlyingSearchParams, workStore, requestStore, isRuntimePrefetchable) {\n if (requestStore.asyncApiPromises) {\n // Do not cache the resulting promise. If we do, we'll only show the first \"awaited at\"\n // across all segments that receive searchParams.\n return makeUntrackedSearchParamsWithDevWarningsImpl(underlyingSearchParams, workStore, requestStore, isRuntimePrefetchable);\n } else {\n const cachedSearchParams = CachedSearchParams.get(underlyingSearchParams);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const promise = makeUntrackedSearchParamsWithDevWarningsImpl(underlyingSearchParams, workStore, requestStore, isRuntimePrefetchable);\n CachedSearchParams.set(requestStore, promise);\n return promise;\n }\n}\nfunction makeUntrackedSearchParamsWithDevWarningsImpl(underlyingSearchParams, workStore, requestStore, isRuntimePrefetchable) {\n const promiseInitialized = {\n current: false\n };\n const proxiedUnderlying = instrumentSearchParamsObjectWithDevWarnings(underlyingSearchParams, workStore, promiseInitialized);\n let promise;\n if (requestStore.asyncApiPromises) {\n // We wrap each instance of searchParams in a `new Promise()`.\n // This is important when all awaits are in third party which would otherwise\n // track all the way to the internal params.\n const sharedSearchParamsParent = isRuntimePrefetchable ? requestStore.asyncApiPromises.earlySharedSearchParamsParent : requestStore.asyncApiPromises.sharedSearchParamsParent;\n promise = new Promise((resolve, reject)=>{\n sharedSearchParamsParent.then(()=>resolve(proxiedUnderlying), reject);\n });\n // @ts-expect-error\n promise.displayName = 'searchParams';\n } else {\n promise = (0, _dynamicrenderingutils.makeDevtoolsIOAwarePromise)(proxiedUnderlying, requestStore, _stagedrendering.RenderStage.Runtime);\n }\n promise.then(()=>{\n promiseInitialized.current = true;\n }, // If we're in staged rendering, this promise will reject if the render\n // is aborted before it can reach the runtime stage.\n // In that case, we have to prevent an unhandled rejection from the promise\n // created by this `.then()` call.\n // This does not affect the `promiseInitialized` logic above,\n // because `proxiedUnderlying` will not be used to resolve the promise,\n // so there's no risk of any of its properties being accessed and triggering\n // an undesireable warning.\n ignoreReject);\n return instrumentSearchParamsPromiseWithDevWarnings(underlyingSearchParams, promise, workStore);\n}\nfunction ignoreReject() {}\nfunction instrumentSearchParamsObjectWithDevWarnings(underlyingSearchParams, workStore, promiseInitialized) {\n // We have an unfortunate sequence of events that requires this initialization logic. We want to instrument the underlying\n // searchParams object to detect if you are accessing values in dev. This is used for warnings and for things like the static prerender\n // indicator. However when we pass this proxy to our Promise.resolve() below the VM checks if the resolved value is a promise by looking\n // at the `.then` property. To our dynamic tracking logic this is indistinguishable from a `then` searchParam and so we would normally trigger\n // dynamic tracking. However we know that this .then is not real dynamic access, it's just how thenables resolve in sequence. So we introduce\n // this initialization concept so we omit the dynamic check until after we've constructed our resolved promise.\n return new Proxy(underlyingSearchParams, {\n get (target, prop, receiver) {\n if (typeof prop === 'string' && promiseInitialized.current) {\n if (workStore.dynamicShouldError) {\n const expression = (0, _reflectutils.describeStringPropertyAccess)('searchParams', prop);\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(workStore.route, expression);\n }\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n },\n has (target, prop) {\n if (typeof prop === 'string') {\n if (workStore.dynamicShouldError) {\n const expression = (0, _reflectutils.describeHasCheckingStringProperty)('searchParams', prop);\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(workStore.route, expression);\n }\n }\n return Reflect.has(target, prop);\n },\n ownKeys (target) {\n if (workStore.dynamicShouldError) {\n const expression = '`{...searchParams}`, `Object.keys(searchParams)`, or similar';\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(workStore.route, expression);\n }\n return Reflect.ownKeys(target);\n }\n });\n}\nfunction instrumentSearchParamsPromiseWithDevWarnings(underlyingSearchParams, promise, workStore) {\n // Track which properties we should warn for.\n const proxiedProperties = new Set();\n Object.keys(underlyingSearchParams).forEach((prop)=>{\n if (_reflectutils.wellKnownProperties.has(prop)) {\n // These properties cannot be shadowed because they need to be the\n // true underlying value for Promises to work correctly at runtime\n } else {\n proxiedProperties.add(prop);\n }\n });\n return new Proxy(promise, {\n get (target, prop, receiver) {\n if (prop === 'then' && workStore.dynamicShouldError) {\n const expression = '`searchParams.then`';\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(workStore.route, expression);\n }\n if (typeof prop === 'string') {\n if (!_reflectutils.wellKnownProperties.has(prop) && (proxiedProperties.has(prop) || // We are accessing a property that doesn't exist on the promise nor\n // the underlying searchParams.\n Reflect.has(target, prop) === false)) {\n const expression = (0, _reflectutils.describeStringPropertyAccess)('searchParams', prop);\n warnForSyncAccess(workStore.route, expression);\n }\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n },\n set (target, prop, value, receiver) {\n if (typeof prop === 'string') {\n proxiedProperties.delete(prop);\n }\n return Reflect.set(target, prop, value, receiver);\n },\n has (target, prop) {\n if (typeof prop === 'string') {\n if (!_reflectutils.wellKnownProperties.has(prop) && (proxiedProperties.has(prop) || // We are accessing a property that doesn't exist on the promise nor\n // the underlying searchParams.\n Reflect.has(target, prop) === false)) {\n const expression = (0, _reflectutils.describeHasCheckingStringProperty)('searchParams', prop);\n warnForSyncAccess(workStore.route, expression);\n }\n }\n return Reflect.has(target, prop);\n },\n ownKeys (target) {\n const expression = '`Object.keys(searchParams)` or similar';\n warnForSyncAccess(workStore.route, expression);\n return Reflect.ownKeys(target);\n }\n });\n}\nconst warnForSyncAccess = (0, _creatededupedbycallsiteservererrorlogger.createDedupedByCallsiteServerErrorLoggerDev)(createSearchAccessError);\nfunction createSearchAccessError(route, expression) {\n const prefix = route ? `Route \"${route}\" ` : 'This route ';\n return Object.defineProperty(new Error(`${prefix}used ${expression}. ` + `\\`searchParams\\` is a Promise and must be unwrapped with \\`await\\` or \\`React.use()\\` before accessing its properties. ` + `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`), \"__NEXT_ERROR_CODE\", {\n value: \"E848\",\n enumerable: false,\n configurable: true\n });\n}\nfunction createClientSearchParamsInValidation(underlyingSearchParams, workStore, workUnitStore) {\n var _workUnitStore_validationSamples;\n const { createExhaustiveSearchParamsProxy } = __webpack_require__(/*! ../app-render/instant-validation/instant-samples */ \"(ssr)/./node_modules/next/dist/server/app-render/instant-validation/instant-samples.js\");\n const declaredKeys = new Set(Object.keys(((_workUnitStore_validationSamples = workUnitStore.validationSamples) == null ? void 0 : _workUnitStore_validationSamples.searchParams) ?? {}));\n underlyingSearchParams = createExhaustiveSearchParamsProxy(underlyingSearchParams, declaredKeys, workStore.route);\n return Promise.resolve(underlyingSearchParams);\n}\n\n//# sourceMappingURL=search-params.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXF1ZXN0L3NlYXJjaC1wYXJhbXMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBTUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Qsa0NBQWtDLG1CQUFPLENBQUMsNEZBQTJDO0FBQ3JGLG9CQUFvQixtQkFBTyxDQUFDLGtHQUEyQjtBQUN2RCxpQkFBaUIsbUJBQU8sQ0FBQyw0SEFBd0M7QUFDakUsMEJBQTBCLG1CQUFPLENBQUMsOEdBQWlDO0FBQ25FLHNDQUFzQyxtQkFBTyxDQUFDLDBGQUFnRDtBQUM5Rix3QkFBd0IsbUJBQU8sQ0FBQyxzR0FBa0M7QUFDbEUsK0JBQStCLG1CQUFPLENBQUMsb0dBQTRCO0FBQ25FLGtEQUFrRCxtQkFBTyxDQUFDLGtKQUFtRDtBQUM3RyxzQkFBc0IsbUJBQU8sQ0FBQyw4R0FBc0M7QUFDcEUsZUFBZSxtQkFBTyxDQUFDLHVFQUFTO0FBQ2hDLHlCQUF5QixtQkFBTyxDQUFDLDRHQUFnQztBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksa0JBQWtCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDLE1BQU07QUFDTixZQUFZLElBQXNDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxLQUFLLEVBU047QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxzQ0FBc0MsZ0JBQWdCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxNQUFNO0FBQzNDLDhDQUE4QyxPQUFPLE9BQU8sV0FBVztBQUN2RTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsWUFBWSxvQ0FBb0MsRUFBRSxtQkFBTyxDQUFDLGdKQUFrRDtBQUM1RywwTEFBMEw7QUFDMUw7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvcmVxdWVzdC9zZWFyY2gtcGFyYW1zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgY3JlYXRlUHJlcmVuZGVyU2VhcmNoUGFyYW1zRm9yQ2xpZW50UGFnZTogbnVsbCxcbiAgICBjcmVhdGVTZWFyY2hQYXJhbXNGcm9tQ2xpZW50OiBudWxsLFxuICAgIGNyZWF0ZVNlcnZlclNlYXJjaFBhcmFtc0Zvck1ldGFkYXRhOiBudWxsLFxuICAgIGNyZWF0ZVNlcnZlclNlYXJjaFBhcmFtc0ZvclNlcnZlclBhZ2U6IG51bGwsXG4gICAgbWFrZUVycm9yaW5nU2VhcmNoUGFyYW1zRm9yVXNlQ2FjaGU6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgY3JlYXRlUHJlcmVuZGVyU2VhcmNoUGFyYW1zRm9yQ2xpZW50UGFnZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVQcmVyZW5kZXJTZWFyY2hQYXJhbXNGb3JDbGllbnRQYWdlO1xuICAgIH0sXG4gICAgY3JlYXRlU2VhcmNoUGFyYW1zRnJvbUNsaWVudDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVTZWFyY2hQYXJhbXNGcm9tQ2xpZW50O1xuICAgIH0sXG4gICAgY3JlYXRlU2VydmVyU2VhcmNoUGFyYW1zRm9yTWV0YWRhdGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlU2VydmVyU2VhcmNoUGFyYW1zRm9yTWV0YWRhdGE7XG4gICAgfSxcbiAgICBjcmVhdGVTZXJ2ZXJTZWFyY2hQYXJhbXNGb3JTZXJ2ZXJQYWdlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVNlcnZlclNlYXJjaFBhcmFtc0ZvclNlcnZlclBhZ2U7XG4gICAgfSxcbiAgICBtYWtlRXJyb3JpbmdTZWFyY2hQYXJhbXNGb3JVc2VDYWNoZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBtYWtlRXJyb3JpbmdTZWFyY2hQYXJhbXNGb3JVc2VDYWNoZTtcbiAgICB9XG59KTtcbmNvbnN0IF93b3JrYXN5bmNzdG9yYWdlZXh0ZXJuYWwgPSByZXF1aXJlKFwiLi4vYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWxcIik7XG5jb25zdCBfdmFyeXBhcmFtcyA9IHJlcXVpcmUoXCIuLi9hcHAtcmVuZGVyL3ZhcnktcGFyYW1zXCIpO1xuY29uc3QgX3JlZmxlY3QgPSByZXF1aXJlKFwiLi4vd2ViL3NwZWMtZXh0ZW5zaW9uL2FkYXB0ZXJzL3JlZmxlY3RcIik7XG5jb25zdCBfZHluYW1pY3JlbmRlcmluZyA9IHJlcXVpcmUoXCIuLi9hcHAtcmVuZGVyL2R5bmFtaWMtcmVuZGVyaW5nXCIpO1xuY29uc3QgX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwgPSByZXF1aXJlKFwiLi4vYXBwLXJlbmRlci93b3JrLXVuaXQtYXN5bmMtc3RvcmFnZS5leHRlcm5hbFwiKTtcbmNvbnN0IF9pbnZhcmlhbnRlcnJvciA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvbGliL2ludmFyaWFudC1lcnJvclwiKTtcbmNvbnN0IF9keW5hbWljcmVuZGVyaW5ndXRpbHMgPSByZXF1aXJlKFwiLi4vZHluYW1pYy1yZW5kZXJpbmctdXRpbHNcIik7XG5jb25zdCBfY3JlYXRlZGVkdXBlZGJ5Y2FsbHNpdGVzZXJ2ZXJlcnJvcmxvZ2dlciA9IHJlcXVpcmUoXCIuLi9jcmVhdGUtZGVkdXBlZC1ieS1jYWxsc2l0ZS1zZXJ2ZXItZXJyb3ItbG9nZ2VyXCIpO1xuY29uc3QgX3JlZmxlY3R1dGlscyA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvbGliL3V0aWxzL3JlZmxlY3QtdXRpbHNcIik7XG5jb25zdCBfdXRpbHMgPSByZXF1aXJlKFwiLi91dGlsc1wiKTtcbmNvbnN0IF9zdGFnZWRyZW5kZXJpbmcgPSByZXF1aXJlKFwiLi4vYXBwLXJlbmRlci9zdGFnZWQtcmVuZGVyaW5nXCIpO1xuZnVuY3Rpb24gY3JlYXRlU2VhcmNoUGFyYW1zRnJvbUNsaWVudCh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zKSB7XG4gICAgY29uc3Qgd29ya1N0b3JlID0gX3dvcmthc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrQXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgaWYgKCF3b3JrU3RvcmUpIHtcbiAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ0V4cGVjdGVkIHdvcmtTdG9yZSB0byBiZSBpbml0aWFsaXplZCcpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgIHZhbHVlOiBcIkUxMDY4XCIsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3Qgd29ya1VuaXRTdG9yZSA9IF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLndvcmtVbml0QXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgaWYgKHdvcmtVbml0U3RvcmUpIHtcbiAgICAgICAgc3dpdGNoKHdvcmtVbml0U3RvcmUudHlwZSl7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWNsaWVudCc6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcHByJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVTdGF0aWNQcmVyZW5kZXJTZWFyY2hQYXJhbXMod29ya1N0b3JlLCB3b3JrVW5pdFN0b3JlKTtcbiAgICAgICAgICAgIGNhc2UgJ3ZhbGlkYXRpb24tY2xpZW50JzpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVDbGllbnRTZWFyY2hQYXJhbXNJblZhbGlkYXRpb24odW5kZXJseWluZ1NlYXJjaFBhcmFtcywgd29ya1N0b3JlLCB3b3JrVW5pdFN0b3JlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVNlYXJjaFBhcmFtc0Zyb21DbGllbnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gYSBydW50aW1lIHByZXJlbmRlci4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU3NjlcIixcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVNlYXJjaFBhcmFtc0Zyb21DbGllbnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gY2FjaGUgY29udGV4dHMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNzM5XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ2dlbmVyYXRlLXN0YXRpYy1wYXJhbXMnOlxuICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdjcmVhdGVTZWFyY2hQYXJhbXNGcm9tQ2xpZW50IHNob3VsZCBub3QgYmUgY2FsbGVkIGluc2lkZSBnZW5lcmF0ZVN0YXRpY1BhcmFtcy4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkUxMTMzXCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgICAgIC8vIENsaWVudCBzZWFyY2hQYXJhbXMgYXJlIG5vdCBydW50aW1lIHByZWZldGNoYWJsZVxuICAgICAgICAgICAgICAgIGNvbnN0IGlzUnVudGltZVByZWZldGNoYWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJTZWFyY2hQYXJhbXModW5kZXJseWluZ1NlYXJjaFBhcmFtcywgd29ya1N0b3JlLCB3b3JrVW5pdFN0b3JlLCBpc1J1bnRpbWVQcmVmZXRjaGFibGUpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB3b3JrVW5pdFN0b3JlO1xuICAgICAgICB9XG4gICAgfVxuICAgICgwLCBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC50aHJvd0ludmFyaWFudEZvck1pc3NpbmdTdG9yZSkoKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVNlcnZlclNlYXJjaFBhcmFtc0Zvck1ldGFkYXRhKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIGlzUnVudGltZVByZWZldGNoYWJsZSkge1xuICAgIGNvbnN0IG1ldGFkYXRhVmFyeVBhcmFtc0FjY3VtdWxhdG9yID0gKDAsIF92YXJ5cGFyYW1zLmdldE1ldGFkYXRhVmFyeVBhcmFtc0FjY3VtdWxhdG9yKSgpO1xuICAgIHJldHVybiBjcmVhdGVTZXJ2ZXJTZWFyY2hQYXJhbXNGb3JTZXJ2ZXJQYWdlKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIG1ldGFkYXRhVmFyeVBhcmFtc0FjY3VtdWxhdG9yLCBpc1J1bnRpbWVQcmVmZXRjaGFibGUpO1xufVxuZnVuY3Rpb24gY3JlYXRlU2VydmVyU2VhcmNoUGFyYW1zRm9yU2VydmVyUGFnZSh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCB2YXJ5UGFyYW1zQWNjdW11bGF0b3IsIGlzUnVudGltZVByZWZldGNoYWJsZSkge1xuICAgIGNvbnN0IHdvcmtTdG9yZSA9IF93b3JrYXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya0FzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICghd29ya1N0b3JlKSB7XG4gICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdFeHBlY3RlZCB3b3JrU3RvcmUgdG8gYmUgaW5pdGlhbGl6ZWQnKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICB2YWx1ZTogXCJFMTA2OFwiLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHdvcmtVbml0U3RvcmUgPSBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICh3b3JrVW5pdFN0b3JlKSB7XG4gICAgICAgIHN3aXRjaCh3b3JrVW5pdFN0b3JlLnR5cGUpe1xuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlU3RhdGljUHJlcmVuZGVyU2VhcmNoUGFyYW1zKHdvcmtTdG9yZSwgd29ya1VuaXRTdG9yZSk7XG4gICAgICAgICAgICBjYXNlICd2YWxpZGF0aW9uLWNsaWVudCc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVNlcnZlclNlYXJjaFBhcmFtc0ZvclNlcnZlclBhZ2Ugc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gYSBjbGllbnQgdmFsaWRhdGlvbi4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkUxMDY2XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ2NhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByaXZhdGUtY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAndW5zdGFibGUtY2FjaGUnOlxuICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdjcmVhdGVTZXJ2ZXJTZWFyY2hQYXJhbXNGb3JTZXJ2ZXJQYWdlIHNob3VsZCBub3QgYmUgY2FsbGVkIGluIGNhY2hlIGNvbnRleHRzLicpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTc0N1wiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlICdnZW5lcmF0ZS1zdGF0aWMtcGFyYW1zJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignY3JlYXRlU2VydmVyU2VhcmNoUGFyYW1zRm9yU2VydmVyUGFnZSBzaG91bGQgbm90IGJlIGNhbGxlZCBpbnNpZGUgZ2VuZXJhdGVTdGF0aWNQYXJhbXMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMTEyOFwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJ1bnRpbWVQcmVyZW5kZXJTZWFyY2hQYXJhbXModW5kZXJseWluZ1NlYXJjaFBhcmFtcywgd29ya1VuaXRTdG9yZSwgdmFyeVBhcmFtc0FjY3VtdWxhdG9yLCBpc1J1bnRpbWVQcmVmZXRjaGFibGUpO1xuICAgICAgICAgICAgY2FzZSAncmVxdWVzdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlclNlYXJjaFBhcmFtcyh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCB3b3JrU3RvcmUsIHdvcmtVbml0U3RvcmUsIGlzUnVudGltZVByZWZldGNoYWJsZSk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgKDAsIF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLnRocm93SW52YXJpYW50Rm9yTWlzc2luZ1N0b3JlKSgpO1xufVxuZnVuY3Rpb24gY3JlYXRlUHJlcmVuZGVyU2VhcmNoUGFyYW1zRm9yQ2xpZW50UGFnZSgpIHtcbiAgICBjb25zdCB3b3JrU3RvcmUgPSBfd29ya2FzeW5jc3RvcmFnZWV4dGVybmFsLndvcmtBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAoIXdvcmtTdG9yZSkge1xuICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignRXhwZWN0ZWQgd29ya1N0b3JlIHRvIGJlIGluaXRpYWxpemVkJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgdmFsdWU6IFwiRTEwNjhcIixcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAod29ya1N0b3JlLmZvcmNlU3RhdGljKSB7XG4gICAgICAgIC8vIFdoZW4gdXNpbmcgZm9yY2VTdGF0aWMgd2Ugb3ZlcnJpZGUgYWxsIG90aGVyIGxvZ2ljIGFuZCBhbHdheXMganVzdCByZXR1cm4gYW4gZW1wdHlcbiAgICAgICAgLy8gZGljdGlvbmFyeSBvYmplY3QuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuICAgIH1cbiAgICBjb25zdCB3b3JrVW5pdFN0b3JlID0gX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya1VuaXRBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgICAgICBzd2l0Y2god29ya1VuaXRTdG9yZS50eXBlKXtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgICAgICAgICAgICAvLyBXZSdyZSBwcmVyZW5kZXJpbmcgaW4gYSBtb2RlIHRoYXQgYWJvcnRzIChjYWNoZUNvbXBvbmVudHMpIGFuZCBzaG91bGQgc3RhbGxcbiAgICAgICAgICAgICAgICAvLyB0aGUgcHJvbWlzZSB0byBlbnN1cmUgdGhlIFJTQyBzaWRlIGlzIGNvbnNpZGVyZWQgZHluYW1pY1xuICAgICAgICAgICAgICAgIHJldHVybiAoMCwgX2R5bmFtaWNyZW5kZXJpbmd1dGlscy5tYWtlSGFuZ2luZ1Byb21pc2UpKHdvcmtVbml0U3RvcmUucmVuZGVyU2lnbmFsLCB3b3JrU3RvcmUucm91dGUsICdgc2VhcmNoUGFyYW1zYCcpO1xuICAgICAgICAgICAgY2FzZSAndmFsaWRhdGlvbi1jbGllbnQnOlxuICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdjcmVhdGVQcmVyZW5kZXJTZWFyY2hQYXJhbXNGb3JDbGllbnRQYWdlIHNob3VsZCBub3QgYmUgY2FsbGVkIGluIGEgY2xpZW50IHZhbGlkYXRpb24uJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMTA2MVwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVByZXJlbmRlclNlYXJjaFBhcmFtc0ZvckNsaWVudFBhZ2Ugc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gYSBydW50aW1lIHByZXJlbmRlci4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU3NjhcIixcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVByZXJlbmRlclNlYXJjaFBhcmFtc0ZvckNsaWVudFBhZ2Ugc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gY2FjaGUgY29udGV4dHMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNzQ2XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ2dlbmVyYXRlLXN0YXRpYy1wYXJhbXMnOlxuICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdjcmVhdGVQcmVyZW5kZXJTZWFyY2hQYXJhbXNGb3JDbGllbnRQYWdlIHNob3VsZCBub3QgYmUgY2FsbGVkIGluc2lkZSBnZW5lcmF0ZVN0YXRpY1BhcmFtcy4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkUxMTI0XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAoMCwgX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwudGhyb3dJbnZhcmlhbnRGb3JNaXNzaW5nU3RvcmUpKCk7XG59XG5mdW5jdGlvbiBjcmVhdGVTdGF0aWNQcmVyZW5kZXJTZWFyY2hQYXJhbXMod29ya1N0b3JlLCBwcmVyZW5kZXJTdG9yZSkge1xuICAgIGlmICh3b3JrU3RvcmUuZm9yY2VTdGF0aWMpIHtcbiAgICAgICAgLy8gV2hlbiB1c2luZyBmb3JjZVN0YXRpYyB3ZSBvdmVycmlkZSBhbGwgb3RoZXIgbG9naWMgYW5kIGFsd2F5cyBqdXN0IHJldHVybiBhbiBlbXB0eVxuICAgICAgICAvLyBkaWN0aW9uYXJ5IG9iamVjdC5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XG4gICAgfVxuICAgIHN3aXRjaChwcmVyZW5kZXJTdG9yZS50eXBlKXtcbiAgICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgICAgY2FzZSAncHJlcmVuZGVyLWNsaWVudCc6XG4gICAgICAgICAgICAvLyBXZSBhcmUgaW4gYSBjYWNoZUNvbXBvbmVudHMgKFBQUiBvciBvdGhlcndpc2UpIHByZXJlbmRlclxuICAgICAgICAgICAgcmV0dXJuIG1ha2VIYW5naW5nU2VhcmNoUGFyYW1zKHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpO1xuICAgICAgICBjYXNlICdwcmVyZW5kZXItcHByJzpcbiAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICAvLyBXZSBhcmUgaW4gYSBsZWdhY3kgc3RhdGljIGdlbmVyYXRpb24gYW5kIG5lZWQgdG8gaW50ZXJydXB0IHRoZVxuICAgICAgICAgICAgLy8gcHJlcmVuZGVyIHdoZW4gc2VhcmNoIHBhcmFtcyBhcmUgYWNjZXNzZWQuXG4gICAgICAgICAgICByZXR1cm4gbWFrZUVycm9yaW5nU2VhcmNoUGFyYW1zKHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIHByZXJlbmRlclN0b3JlO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZVJ1bnRpbWVQcmVyZW5kZXJTZWFyY2hQYXJhbXModW5kZXJseWluZ1NlYXJjaFBhcmFtcywgd29ya1VuaXRTdG9yZSwgdmFyeVBhcmFtc0FjY3VtdWxhdG9yLCBpc1J1bnRpbWVQcmVmZXRjaGFibGUpIHtcbiAgICBjb25zdCB1bmRlcmx5aW5nU2VhcmNoUGFyYW1zV2l0aFZhcnlpbmcgPSB2YXJ5UGFyYW1zQWNjdW11bGF0b3IgIT09IG51bGwgPyAoMCwgX3ZhcnlwYXJhbXMuY3JlYXRlVmFyeWluZ1NlYXJjaFBhcmFtcykodmFyeVBhcmFtc0FjY3VtdWxhdG9yLCB1bmRlcmx5aW5nU2VhcmNoUGFyYW1zKSA6IHVuZGVybHlpbmdTZWFyY2hQYXJhbXM7XG4gICAgY29uc3QgcmVzdWx0ID0gbWFrZVVudHJhY2tlZFNlYXJjaFBhcmFtcyh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zV2l0aFZhcnlpbmcpO1xuICAgIGNvbnN0IHsgc3RhZ2VkUmVuZGVyaW5nIH0gPSB3b3JrVW5pdFN0b3JlO1xuICAgIGlmICghc3RhZ2VkUmVuZGVyaW5nKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGNvbnN0IHN0YWdlID0gaXNSdW50aW1lUHJlZmV0Y2hhYmxlID8gX3N0YWdlZHJlbmRlcmluZy5SZW5kZXJTdGFnZS5FYXJseVJ1bnRpbWUgOiBfc3RhZ2VkcmVuZGVyaW5nLlJlbmRlclN0YWdlLlJ1bnRpbWU7XG4gICAgcmV0dXJuIHN0YWdlZFJlbmRlcmluZy53YWl0Rm9yU3RhZ2Uoc3RhZ2UpLnRoZW4oKCk9PnJlc3VsdCk7XG59XG5mdW5jdGlvbiBjcmVhdGVSZW5kZXJTZWFyY2hQYXJhbXModW5kZXJseWluZ1NlYXJjaFBhcmFtcywgd29ya1N0b3JlLCByZXF1ZXN0U3RvcmUsIGlzUnVudGltZVByZWZldGNoYWJsZSkge1xuICAgIGlmICh3b3JrU3RvcmUuZm9yY2VTdGF0aWMpIHtcbiAgICAgICAgLy8gV2hlbiB1c2luZyBmb3JjZVN0YXRpYyB3ZSBvdmVycmlkZSBhbGwgb3RoZXIgbG9naWMgYW5kIGFsd2F5cyBqdXN0IHJldHVybiBhbiBlbXB0eVxuICAgICAgICAvLyBkaWN0aW9uYXJ5IG9iamVjdC5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAgICAgICAvLyBTZW1hbnRpY2FsbHkgd2Ugb25seSBuZWVkIHRoZSBkZXYgdHJhY2tpbmcgd2hlbiBydW5uaW5nIGluIGBuZXh0IGRldmBcbiAgICAgICAgICAgIC8vIGJ1dCBzaW5jZSB5b3Ugd291bGQgbmV2ZXIgdXNlIG5leHQgZGV2IHdpdGggcHJvZHVjdGlvbiBOT0RFX0VOViB3ZSB1c2UgdGhpc1xuICAgICAgICAgICAgLy8gYXMgYSBwcm94eSBzbyB3ZSBjYW4gc3RhdGljYWxseSBleGNsdWRlIHRoaXMgY29kZSBmcm9tIHByb2R1Y3Rpb24gYnVpbGRzLlxuICAgICAgICAgICAgcmV0dXJuIG1ha2VVbnRyYWNrZWRTZWFyY2hQYXJhbXNXaXRoRGV2V2FybmluZ3ModW5kZXJseWluZ1NlYXJjaFBhcmFtcywgd29ya1N0b3JlLCByZXF1ZXN0U3RvcmUsIGlzUnVudGltZVByZWZldGNoYWJsZSk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVxdWVzdFN0b3JlLmFzeW5jQXBpUHJvbWlzZXMpIHtcbiAgICAgICAgICAgIGlmIChyZXF1ZXN0U3RvcmUudmFsaWRhdGlvblNhbXBsZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGNyZWF0ZUV4aGF1c3RpdmVTZWFyY2hQYXJhbXNQcm94eSB9ID0gcmVxdWlyZSgnLi4vYXBwLXJlbmRlci9pbnN0YW50LXZhbGlkYXRpb24vaW5zdGFudC1zYW1wbGVzJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVjbGFyZWRLZXlzID0gbmV3IFNldChPYmplY3Qua2V5cyhyZXF1ZXN0U3RvcmUudmFsaWRhdGlvblNhbXBsZXMuc2VhcmNoUGFyYW1zID8/IHt9KSk7XG4gICAgICAgICAgICAgICAgdW5kZXJseWluZ1NlYXJjaFBhcmFtcyA9IGNyZWF0ZUV4aGF1c3RpdmVTZWFyY2hQYXJhbXNQcm94eSh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCBkZWNsYXJlZEtleXMsIHdvcmtTdG9yZS5yb3V0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gKGlzUnVudGltZVByZWZldGNoYWJsZSA/IHJlcXVlc3RTdG9yZS5hc3luY0FwaVByb21pc2VzLmVhcmx5U2hhcmVkU2VhcmNoUGFyYW1zUGFyZW50IDogcmVxdWVzdFN0b3JlLmFzeW5jQXBpUHJvbWlzZXMuc2hhcmVkU2VhcmNoUGFyYW1zUGFyZW50KS50aGVuKCgpPT51bmRlcmx5aW5nU2VhcmNoUGFyYW1zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBtYWtlVW50cmFja2VkU2VhcmNoUGFyYW1zKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMpO1xuICAgICAgICB9XG4gICAgfVxufVxuY29uc3QgQ2FjaGVkU2VhcmNoUGFyYW1zID0gbmV3IFdlYWtNYXAoKTtcbmNvbnN0IENhY2hlZFNlYXJjaFBhcmFtc0ZvclVzZUNhY2hlID0gbmV3IFdlYWtNYXAoKTtcbmZ1bmN0aW9uIG1ha2VIYW5naW5nU2VhcmNoUGFyYW1zKHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpIHtcbiAgICBjb25zdCBjYWNoZWRTZWFyY2hQYXJhbXMgPSBDYWNoZWRTZWFyY2hQYXJhbXMuZ2V0KHByZXJlbmRlclN0b3JlKTtcbiAgICBpZiAoY2FjaGVkU2VhcmNoUGFyYW1zKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRTZWFyY2hQYXJhbXM7XG4gICAgfVxuICAgIGNvbnN0IHByb21pc2UgPSAoMCwgX2R5bmFtaWNyZW5kZXJpbmd1dGlscy5tYWtlSGFuZ2luZ1Byb21pc2UpKHByZXJlbmRlclN0b3JlLnJlbmRlclNpZ25hbCwgd29ya1N0b3JlLnJvdXRlLCAnYHNlYXJjaFBhcmFtc2AnKTtcbiAgICBjb25zdCBwcm94aWVkUHJvbWlzZSA9IG5ldyBQcm94eShwcm9taXNlLCB7XG4gICAgICAgIGdldCAodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5oYXNPd24ocHJvbWlzZSwgcHJvcCkpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGUgcHJvbWlzZSBoYXMgdGhpcyBwcm9wZXJ0eSBkaXJlY3RseS4gd2UgbXVzdCByZXR1cm4gaXQuXG4gICAgICAgICAgICAgICAgLy8gV2Uga25vdyBpdCBpc24ndCBhIGR5bmFtaWMgYWNjZXNzIGJlY2F1c2UgaXQgY2FuIG9ubHkgYmUgc29tZXRoaW5nXG4gICAgICAgICAgICAgICAgLy8gdGhhdCB3YXMgcHJldmlvdXNseSB3cml0dGVuIHRvIHRoZSBwcm9taXNlIGFuZCB0aHVzIG5vdCBhbiB1bmRlcmx5aW5nIHNlYXJjaFBhcmFtIHZhbHVlXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN3aXRjaChwcm9wKXtcbiAgICAgICAgICAgICAgICBjYXNlICd0aGVuJzpcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICdgYXdhaXQgc2VhcmNoUGFyYW1zYCwgYHNlYXJjaFBhcmFtcy50aGVuYCwgb3Igc2ltaWxhcic7XG4gICAgICAgICAgICAgICAgICAgICAgICAoMCwgX2R5bmFtaWNyZW5kZXJpbmcuYW5ub3RhdGVEeW5hbWljQWNjZXNzKShleHByZXNzaW9uLCBwcmVyZW5kZXJTdG9yZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3JlZmxlY3QuUmVmbGVjdEFkYXB0ZXIuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAnc3RhdHVzJzpcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICdgdXNlKHNlYXJjaFBhcmFtcylgLCBgc2VhcmNoUGFyYW1zLnN0YXR1c2AsIG9yIHNpbWlsYXInO1xuICAgICAgICAgICAgICAgICAgICAgICAgKDAsIF9keW5hbWljcmVuZGVyaW5nLmFubm90YXRlRHluYW1pY0FjY2VzcykoZXhwcmVzc2lvbiwgcHJlcmVuZGVyU3RvcmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIENhY2hlZFNlYXJjaFBhcmFtcy5zZXQocHJlcmVuZGVyU3RvcmUsIHByb3hpZWRQcm9taXNlKTtcbiAgICByZXR1cm4gcHJveGllZFByb21pc2U7XG59XG5mdW5jdGlvbiBtYWtlRXJyb3JpbmdTZWFyY2hQYXJhbXMod29ya1N0b3JlLCBwcmVyZW5kZXJTdG9yZSkge1xuICAgIGNvbnN0IGNhY2hlZFNlYXJjaFBhcmFtcyA9IENhY2hlZFNlYXJjaFBhcmFtcy5nZXQod29ya1N0b3JlKTtcbiAgICBpZiAoY2FjaGVkU2VhcmNoUGFyYW1zKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRTZWFyY2hQYXJhbXM7XG4gICAgfVxuICAgIGNvbnN0IHVuZGVybHlpbmdTZWFyY2hQYXJhbXMgPSB7fTtcbiAgICAvLyBGb3Igc2VhcmNoIHBhcmFtcyB3ZSBkb24ndCBjb25zdHJ1Y3QgYSBSZWFjdFByb21pc2UgYmVjYXVzZSB3ZSB3YW50IHRvIGludGVycnVwdFxuICAgIC8vIHJlbmRlcmluZyBvbiBhbnkgcHJvcGVydHkgYWNjZXNzIHRoYXQgd2FzIG5vdCBzZXQgZnJvbSBvdXRzaWRlIGFuZCBzbyB3ZSBvbmx5IHdhbnRcbiAgICAvLyB0byBoYXZlIHByb3BlcnRpZXMgbGlrZSB2YWx1ZSBhbmQgc3RhdHVzIGlmIFJlYWN0IHNldHMgdGhlbS5cbiAgICBjb25zdCBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMpO1xuICAgIGNvbnN0IHByb3hpZWRQcm9taXNlID0gbmV3IFByb3h5KHByb21pc2UsIHtcbiAgICAgICAgZ2V0ICh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0Lmhhc093bihwcm9taXNlLCBwcm9wKSkge1xuICAgICAgICAgICAgICAgIC8vIFRoZSBwcm9taXNlIGhhcyB0aGlzIHByb3BlcnR5IGRpcmVjdGx5LiB3ZSBtdXN0IHJldHVybiBpdC5cbiAgICAgICAgICAgICAgICAvLyBXZSBrbm93IGl0IGlzbid0IGEgZHluYW1pYyBhY2Nlc3MgYmVjYXVzZSBpdCBjYW4gb25seSBiZSBzb21ldGhpbmdcbiAgICAgICAgICAgICAgICAvLyB0aGF0IHdhcyBwcmV2aW91c2x5IHdyaXR0ZW4gdG8gdGhlIHByb21pc2UgYW5kIHRodXMgbm90IGFuIHVuZGVybHlpbmcgc2VhcmNoUGFyYW0gdmFsdWVcbiAgICAgICAgICAgICAgICByZXR1cm4gX3JlZmxlY3QuUmVmbGVjdEFkYXB0ZXIuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJyAmJiBwcm9wID09PSAndGhlbicpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gJ2Bhd2FpdCBzZWFyY2hQYXJhbXNgLCBgc2VhcmNoUGFyYW1zLnRoZW5gLCBvciBzaW1pbGFyJztcbiAgICAgICAgICAgICAgICBpZiAod29ya1N0b3JlLmR5bmFtaWNTaG91bGRFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAoMCwgX3V0aWxzLnRocm93V2l0aFN0YXRpY0dlbmVyYXRpb25CYWlsb3V0RXJyb3JXaXRoRHluYW1pY0Vycm9yKSh3b3JrU3RvcmUucm91dGUsIGV4cHJlc3Npb24pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJlcmVuZGVyU3RvcmUudHlwZSA9PT0gJ3ByZXJlbmRlci1wcHInKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFBQUiBQcmVyZW5kZXIgKG5vIGNhY2hlQ29tcG9uZW50cylcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9keW5hbWljcmVuZGVyaW5nLnBvc3Rwb25lV2l0aFRyYWNraW5nKSh3b3JrU3RvcmUucm91dGUsIGV4cHJlc3Npb24sIHByZXJlbmRlclN0b3JlLmR5bmFtaWNUcmFja2luZyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTGVnYWN5IFByZXJlbmRlclxuICAgICAgICAgICAgICAgICAgICAoMCwgX2R5bmFtaWNyZW5kZXJpbmcudGhyb3dUb0ludGVycnVwdFN0YXRpY0dlbmVyYXRpb24pKGV4cHJlc3Npb24sIHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBDYWNoZWRTZWFyY2hQYXJhbXMuc2V0KHdvcmtTdG9yZSwgcHJveGllZFByb21pc2UpO1xuICAgIHJldHVybiBwcm94aWVkUHJvbWlzZTtcbn1cbmZ1bmN0aW9uIG1ha2VFcnJvcmluZ1NlYXJjaFBhcmFtc0ZvclVzZUNhY2hlKCkge1xuICAgIGNvbnN0IHdvcmtTdG9yZSA9IF93b3JrYXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya0FzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICghd29ya1N0b3JlKSB7XG4gICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdFeHBlY3RlZCB3b3JrU3RvcmUgdG8gYmUgaW5pdGlhbGl6ZWQnKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICB2YWx1ZTogXCJFMTA2OFwiLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGNhY2hlZFNlYXJjaFBhcmFtcyA9IENhY2hlZFNlYXJjaFBhcmFtc0ZvclVzZUNhY2hlLmdldCh3b3JrU3RvcmUpO1xuICAgIGlmIChjYWNoZWRTZWFyY2hQYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNlYXJjaFBhcmFtcztcbiAgICB9XG4gICAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh7fSk7XG4gICAgY29uc3QgcHJveGllZFByb21pc2UgPSBuZXcgUHJveHkocHJvbWlzZSwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0Lmhhc093bihwcm9taXNlLCBwcm9wKSkge1xuICAgICAgICAgICAgICAgIC8vIFRoZSBwcm9taXNlIGhhcyB0aGlzIHByb3BlcnR5IGRpcmVjdGx5LiB3ZSBtdXN0IHJldHVybiBpdC4gV2Uga25vdyBpdFxuICAgICAgICAgICAgICAgIC8vIGlzbid0IGEgZHluYW1pYyBhY2Nlc3MgYmVjYXVzZSBpdCBjYW4gb25seSBiZSBzb21ldGhpbmcgdGhhdCB3YXNcbiAgICAgICAgICAgICAgICAvLyBwcmV2aW91c2x5IHdyaXR0ZW4gdG8gdGhlIHByb21pc2UgYW5kIHRodXMgbm90IGFuIHVuZGVybHlpbmdcbiAgICAgICAgICAgICAgICAvLyBzZWFyY2hQYXJhbSB2YWx1ZVxuICAgICAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnICYmIChwcm9wID09PSAndGhlbicgfHwgIV9yZWZsZWN0dXRpbHMud2VsbEtub3duUHJvcGVydGllcy5oYXMocHJvcCkpKSB7XG4gICAgICAgICAgICAgICAgKDAsIF91dGlscy50aHJvd0ZvclNlYXJjaFBhcmFtc0FjY2Vzc0luVXNlQ2FjaGUpKHdvcmtTdG9yZSwgZ2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBDYWNoZWRTZWFyY2hQYXJhbXNGb3JVc2VDYWNoZS5zZXQod29ya1N0b3JlLCBwcm94aWVkUHJvbWlzZSk7XG4gICAgcmV0dXJuIHByb3hpZWRQcm9taXNlO1xufVxuZnVuY3Rpb24gbWFrZVVudHJhY2tlZFNlYXJjaFBhcmFtcyh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zKSB7XG4gICAgY29uc3QgY2FjaGVkU2VhcmNoUGFyYW1zID0gQ2FjaGVkU2VhcmNoUGFyYW1zLmdldCh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zKTtcbiAgICBpZiAoY2FjaGVkU2VhcmNoUGFyYW1zKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRTZWFyY2hQYXJhbXM7XG4gICAgfVxuICAgIGNvbnN0IHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUodW5kZXJseWluZ1NlYXJjaFBhcmFtcyk7XG4gICAgQ2FjaGVkU2VhcmNoUGFyYW1zLnNldCh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCBwcm9taXNlKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbn1cbmZ1bmN0aW9uIG1ha2VVbnRyYWNrZWRTZWFyY2hQYXJhbXNXaXRoRGV2V2FybmluZ3ModW5kZXJseWluZ1NlYXJjaFBhcmFtcywgd29ya1N0b3JlLCByZXF1ZXN0U3RvcmUsIGlzUnVudGltZVByZWZldGNoYWJsZSkge1xuICAgIGlmIChyZXF1ZXN0U3RvcmUuYXN5bmNBcGlQcm9taXNlcykge1xuICAgICAgICAvLyBEbyBub3QgY2FjaGUgdGhlIHJlc3VsdGluZyBwcm9taXNlLiBJZiB3ZSBkbywgd2UnbGwgb25seSBzaG93IHRoZSBmaXJzdCBcImF3YWl0ZWQgYXRcIlxuICAgICAgICAvLyBhY3Jvc3MgYWxsIHNlZ21lbnRzIHRoYXQgcmVjZWl2ZSBzZWFyY2hQYXJhbXMuXG4gICAgICAgIHJldHVybiBtYWtlVW50cmFja2VkU2VhcmNoUGFyYW1zV2l0aERldldhcm5pbmdzSW1wbCh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCB3b3JrU3RvcmUsIHJlcXVlc3RTdG9yZSwgaXNSdW50aW1lUHJlZmV0Y2hhYmxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBjYWNoZWRTZWFyY2hQYXJhbXMgPSBDYWNoZWRTZWFyY2hQYXJhbXMuZ2V0KHVuZGVybHlpbmdTZWFyY2hQYXJhbXMpO1xuICAgICAgICBpZiAoY2FjaGVkU2VhcmNoUGFyYW1zKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2VhcmNoUGFyYW1zO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSBtYWtlVW50cmFja2VkU2VhcmNoUGFyYW1zV2l0aERldldhcm5pbmdzSW1wbCh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCB3b3JrU3RvcmUsIHJlcXVlc3RTdG9yZSwgaXNSdW50aW1lUHJlZmV0Y2hhYmxlKTtcbiAgICAgICAgQ2FjaGVkU2VhcmNoUGFyYW1zLnNldChyZXF1ZXN0U3RvcmUsIHByb21pc2UpO1xuICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG59XG5mdW5jdGlvbiBtYWtlVW50cmFja2VkU2VhcmNoUGFyYW1zV2l0aERldldhcm5pbmdzSW1wbCh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCB3b3JrU3RvcmUsIHJlcXVlc3RTdG9yZSwgaXNSdW50aW1lUHJlZmV0Y2hhYmxlKSB7XG4gICAgY29uc3QgcHJvbWlzZUluaXRpYWxpemVkID0ge1xuICAgICAgICBjdXJyZW50OiBmYWxzZVxuICAgIH07XG4gICAgY29uc3QgcHJveGllZFVuZGVybHlpbmcgPSBpbnN0cnVtZW50U2VhcmNoUGFyYW1zT2JqZWN0V2l0aERldldhcm5pbmdzKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIHdvcmtTdG9yZSwgcHJvbWlzZUluaXRpYWxpemVkKTtcbiAgICBsZXQgcHJvbWlzZTtcbiAgICBpZiAocmVxdWVzdFN0b3JlLmFzeW5jQXBpUHJvbWlzZXMpIHtcbiAgICAgICAgLy8gV2Ugd3JhcCBlYWNoIGluc3RhbmNlIG9mIHNlYXJjaFBhcmFtcyBpbiBhIGBuZXcgUHJvbWlzZSgpYC5cbiAgICAgICAgLy8gVGhpcyBpcyBpbXBvcnRhbnQgd2hlbiBhbGwgYXdhaXRzIGFyZSBpbiB0aGlyZCBwYXJ0eSB3aGljaCB3b3VsZCBvdGhlcndpc2VcbiAgICAgICAgLy8gdHJhY2sgYWxsIHRoZSB3YXkgdG8gdGhlIGludGVybmFsIHBhcmFtcy5cbiAgICAgICAgY29uc3Qgc2hhcmVkU2VhcmNoUGFyYW1zUGFyZW50ID0gaXNSdW50aW1lUHJlZmV0Y2hhYmxlID8gcmVxdWVzdFN0b3JlLmFzeW5jQXBpUHJvbWlzZXMuZWFybHlTaGFyZWRTZWFyY2hQYXJhbXNQYXJlbnQgOiByZXF1ZXN0U3RvcmUuYXN5bmNBcGlQcm9taXNlcy5zaGFyZWRTZWFyY2hQYXJhbXNQYXJlbnQ7XG4gICAgICAgIHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+e1xuICAgICAgICAgICAgc2hhcmVkU2VhcmNoUGFyYW1zUGFyZW50LnRoZW4oKCk9PnJlc29sdmUocHJveGllZFVuZGVybHlpbmcpLCByZWplY3QpO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICBwcm9taXNlLmRpc3BsYXlOYW1lID0gJ3NlYXJjaFBhcmFtcyc7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcHJvbWlzZSA9ICgwLCBfZHluYW1pY3JlbmRlcmluZ3V0aWxzLm1ha2VEZXZ0b29sc0lPQXdhcmVQcm9taXNlKShwcm94aWVkVW5kZXJseWluZywgcmVxdWVzdFN0b3JlLCBfc3RhZ2VkcmVuZGVyaW5nLlJlbmRlclN0YWdlLlJ1bnRpbWUpO1xuICAgIH1cbiAgICBwcm9taXNlLnRoZW4oKCk9PntcbiAgICAgICAgcHJvbWlzZUluaXRpYWxpemVkLmN1cnJlbnQgPSB0cnVlO1xuICAgIH0sIC8vIElmIHdlJ3JlIGluIHN0YWdlZCByZW5kZXJpbmcsIHRoaXMgcHJvbWlzZSB3aWxsIHJlamVjdCBpZiB0aGUgcmVuZGVyXG4gICAgLy8gaXMgYWJvcnRlZCBiZWZvcmUgaXQgY2FuIHJlYWNoIHRoZSBydW50aW1lIHN0YWdlLlxuICAgIC8vIEluIHRoYXQgY2FzZSwgd2UgaGF2ZSB0byBwcmV2ZW50IGFuIHVuaGFuZGxlZCByZWplY3Rpb24gZnJvbSB0aGUgcHJvbWlzZVxuICAgIC8vIGNyZWF0ZWQgYnkgdGhpcyBgLnRoZW4oKWAgY2FsbC5cbiAgICAvLyBUaGlzIGRvZXMgbm90IGFmZmVjdCB0aGUgYHByb21pc2VJbml0aWFsaXplZGAgbG9naWMgYWJvdmUsXG4gICAgLy8gYmVjYXVzZSBgcHJveGllZFVuZGVybHlpbmdgIHdpbGwgbm90IGJlIHVzZWQgdG8gcmVzb2x2ZSB0aGUgcHJvbWlzZSxcbiAgICAvLyBzbyB0aGVyZSdzIG5vIHJpc2sgb2YgYW55IG9mIGl0cyBwcm9wZXJ0aWVzIGJlaW5nIGFjY2Vzc2VkIGFuZCB0cmlnZ2VyaW5nXG4gICAgLy8gYW4gdW5kZXNpcmVhYmxlIHdhcm5pbmcuXG4gICAgaWdub3JlUmVqZWN0KTtcbiAgICByZXR1cm4gaW5zdHJ1bWVudFNlYXJjaFBhcmFtc1Byb21pc2VXaXRoRGV2V2FybmluZ3ModW5kZXJseWluZ1NlYXJjaFBhcmFtcywgcHJvbWlzZSwgd29ya1N0b3JlKTtcbn1cbmZ1bmN0aW9uIGlnbm9yZVJlamVjdCgpIHt9XG5mdW5jdGlvbiBpbnN0cnVtZW50U2VhcmNoUGFyYW1zT2JqZWN0V2l0aERldldhcm5pbmdzKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIHdvcmtTdG9yZSwgcHJvbWlzZUluaXRpYWxpemVkKSB7XG4gICAgLy8gV2UgaGF2ZSBhbiB1bmZvcnR1bmF0ZSBzZXF1ZW5jZSBvZiBldmVudHMgdGhhdCByZXF1aXJlcyB0aGlzIGluaXRpYWxpemF0aW9uIGxvZ2ljLiBXZSB3YW50IHRvIGluc3RydW1lbnQgdGhlIHVuZGVybHlpbmdcbiAgICAvLyBzZWFyY2hQYXJhbXMgb2JqZWN0IHRvIGRldGVjdCBpZiB5b3UgYXJlIGFjY2Vzc2luZyB2YWx1ZXMgaW4gZGV2LiBUaGlzIGlzIHVzZWQgZm9yIHdhcm5pbmdzIGFuZCBmb3IgdGhpbmdzIGxpa2UgdGhlIHN0YXRpYyBwcmVyZW5kZXJcbiAgICAvLyBpbmRpY2F0b3IuIEhvd2V2ZXIgd2hlbiB3ZSBwYXNzIHRoaXMgcHJveHkgdG8gb3VyIFByb21pc2UucmVzb2x2ZSgpIGJlbG93IHRoZSBWTSBjaGVja3MgaWYgdGhlIHJlc29sdmVkIHZhbHVlIGlzIGEgcHJvbWlzZSBieSBsb29raW5nXG4gICAgLy8gYXQgdGhlIGAudGhlbmAgcHJvcGVydHkuIFRvIG91ciBkeW5hbWljIHRyYWNraW5nIGxvZ2ljIHRoaXMgaXMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBhIGB0aGVuYCBzZWFyY2hQYXJhbSBhbmQgc28gd2Ugd291bGQgbm9ybWFsbHkgdHJpZ2dlclxuICAgIC8vIGR5bmFtaWMgdHJhY2tpbmcuIEhvd2V2ZXIgd2Uga25vdyB0aGF0IHRoaXMgLnRoZW4gaXMgbm90IHJlYWwgZHluYW1pYyBhY2Nlc3MsIGl0J3MganVzdCBob3cgdGhlbmFibGVzIHJlc29sdmUgaW4gc2VxdWVuY2UuIFNvIHdlIGludHJvZHVjZVxuICAgIC8vIHRoaXMgaW5pdGlhbGl6YXRpb24gY29uY2VwdCBzbyB3ZSBvbWl0IHRoZSBkeW5hbWljIGNoZWNrIHVudGlsIGFmdGVyIHdlJ3ZlIGNvbnN0cnVjdGVkIG91ciByZXNvbHZlZCBwcm9taXNlLlxuICAgIHJldHVybiBuZXcgUHJveHkodW5kZXJseWluZ1NlYXJjaFBhcmFtcywge1xuICAgICAgICBnZXQgKHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N0cmluZycgJiYgcHJvbWlzZUluaXRpYWxpemVkLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAod29ya1N0b3JlLmR5bmFtaWNTaG91bGRFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gKDAsIF9yZWZsZWN0dXRpbHMuZGVzY3JpYmVTdHJpbmdQcm9wZXJ0eUFjY2VzcykoJ3NlYXJjaFBhcmFtcycsIHByb3ApO1xuICAgICAgICAgICAgICAgICAgICAoMCwgX3V0aWxzLnRocm93V2l0aFN0YXRpY0dlbmVyYXRpb25CYWlsb3V0RXJyb3JXaXRoRHluYW1pY0Vycm9yKSh3b3JrU3RvcmUucm91dGUsIGV4cHJlc3Npb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgIH0sXG4gICAgICAgIGhhcyAodGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHdvcmtTdG9yZS5keW5hbWljU2hvdWxkRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICgwLCBfcmVmbGVjdHV0aWxzLmRlc2NyaWJlSGFzQ2hlY2tpbmdTdHJpbmdQcm9wZXJ0eSkoJ3NlYXJjaFBhcmFtcycsIHByb3ApO1xuICAgICAgICAgICAgICAgICAgICAoMCwgX3V0aWxzLnRocm93V2l0aFN0YXRpY0dlbmVyYXRpb25CYWlsb3V0RXJyb3JXaXRoRHluYW1pY0Vycm9yKSh3b3JrU3RvcmUucm91dGUsIGV4cHJlc3Npb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0Lmhhcyh0YXJnZXQsIHByb3ApO1xuICAgICAgICB9LFxuICAgICAgICBvd25LZXlzICh0YXJnZXQpIHtcbiAgICAgICAgICAgIGlmICh3b3JrU3RvcmUuZHluYW1pY1Nob3VsZEVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICdgey4uLnNlYXJjaFBhcmFtc31gLCBgT2JqZWN0LmtleXMoc2VhcmNoUGFyYW1zKWAsIG9yIHNpbWlsYXInO1xuICAgICAgICAgICAgICAgICgwLCBfdXRpbHMudGhyb3dXaXRoU3RhdGljR2VuZXJhdGlvbkJhaWxvdXRFcnJvcldpdGhEeW5hbWljRXJyb3IpKHdvcmtTdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5vd25LZXlzKHRhcmdldCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGluc3RydW1lbnRTZWFyY2hQYXJhbXNQcm9taXNlV2l0aERldldhcm5pbmdzKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIHByb21pc2UsIHdvcmtTdG9yZSkge1xuICAgIC8vIFRyYWNrIHdoaWNoIHByb3BlcnRpZXMgd2Ugc2hvdWxkIHdhcm4gZm9yLlxuICAgIGNvbnN0IHByb3hpZWRQcm9wZXJ0aWVzID0gbmV3IFNldCgpO1xuICAgIE9iamVjdC5rZXlzKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMpLmZvckVhY2goKHByb3ApPT57XG4gICAgICAgIGlmIChfcmVmbGVjdHV0aWxzLndlbGxLbm93blByb3BlcnRpZXMuaGFzKHByb3ApKSB7XG4gICAgICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgY2Fubm90IGJlIHNoYWRvd2VkIGJlY2F1c2UgdGhleSBuZWVkIHRvIGJlIHRoZVxuICAgICAgICAvLyB0cnVlIHVuZGVybHlpbmcgdmFsdWUgZm9yIFByb21pc2VzIHRvIHdvcmsgY29ycmVjdGx5IGF0IHJ1bnRpbWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb3hpZWRQcm9wZXJ0aWVzLmFkZChwcm9wKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBuZXcgUHJveHkocHJvbWlzZSwge1xuICAgICAgICBnZXQgKHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIGlmIChwcm9wID09PSAndGhlbicgJiYgd29ya1N0b3JlLmR5bmFtaWNTaG91bGRFcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAnYHNlYXJjaFBhcmFtcy50aGVuYCc7XG4gICAgICAgICAgICAgICAgKDAsIF91dGlscy50aHJvd1dpdGhTdGF0aWNHZW5lcmF0aW9uQmFpbG91dEVycm9yV2l0aER5bmFtaWNFcnJvcikod29ya1N0b3JlLnJvdXRlLCBleHByZXNzaW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpZiAoIV9yZWZsZWN0dXRpbHMud2VsbEtub3duUHJvcGVydGllcy5oYXMocHJvcCkgJiYgKHByb3hpZWRQcm9wZXJ0aWVzLmhhcyhwcm9wKSB8fCAvLyBXZSBhcmUgYWNjZXNzaW5nIGEgcHJvcGVydHkgdGhhdCBkb2Vzbid0IGV4aXN0IG9uIHRoZSBwcm9taXNlIG5vclxuICAgICAgICAgICAgICAgIC8vIHRoZSB1bmRlcmx5aW5nIHNlYXJjaFBhcmFtcy5cbiAgICAgICAgICAgICAgICBSZWZsZWN0Lmhhcyh0YXJnZXQsIHByb3ApID09PSBmYWxzZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICgwLCBfcmVmbGVjdHV0aWxzLmRlc2NyaWJlU3RyaW5nUHJvcGVydHlBY2Nlc3MpKCdzZWFyY2hQYXJhbXMnLCBwcm9wKTtcbiAgICAgICAgICAgICAgICAgICAgd2FybkZvclN5bmNBY2Nlc3Mod29ya1N0b3JlLnJvdXRlLCBleHByZXNzaW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gX3JlZmxlY3QuUmVmbGVjdEFkYXB0ZXIuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpO1xuICAgICAgICB9LFxuICAgICAgICBzZXQgKHRhcmdldCwgcHJvcCwgdmFsdWUsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcHJveGllZFByb3BlcnRpZXMuZGVsZXRlKHByb3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3Quc2V0KHRhcmdldCwgcHJvcCwgdmFsdWUsIHJlY2VpdmVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgaGFzICh0YXJnZXQsIHByb3ApIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpZiAoIV9yZWZsZWN0dXRpbHMud2VsbEtub3duUHJvcGVydGllcy5oYXMocHJvcCkgJiYgKHByb3hpZWRQcm9wZXJ0aWVzLmhhcyhwcm9wKSB8fCAvLyBXZSBhcmUgYWNjZXNzaW5nIGEgcHJvcGVydHkgdGhhdCBkb2Vzbid0IGV4aXN0IG9uIHRoZSBwcm9taXNlIG5vclxuICAgICAgICAgICAgICAgIC8vIHRoZSB1bmRlcmx5aW5nIHNlYXJjaFBhcmFtcy5cbiAgICAgICAgICAgICAgICBSZWZsZWN0Lmhhcyh0YXJnZXQsIHByb3ApID09PSBmYWxzZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICgwLCBfcmVmbGVjdHV0aWxzLmRlc2NyaWJlSGFzQ2hlY2tpbmdTdHJpbmdQcm9wZXJ0eSkoJ3NlYXJjaFBhcmFtcycsIHByb3ApO1xuICAgICAgICAgICAgICAgICAgICB3YXJuRm9yU3luY0FjY2Vzcyh3b3JrU3RvcmUucm91dGUsIGV4cHJlc3Npb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0Lmhhcyh0YXJnZXQsIHByb3ApO1xuICAgICAgICB9LFxuICAgICAgICBvd25LZXlzICh0YXJnZXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAnYE9iamVjdC5rZXlzKHNlYXJjaFBhcmFtcylgIG9yIHNpbWlsYXInO1xuICAgICAgICAgICAgd2FybkZvclN5bmNBY2Nlc3Mod29ya1N0b3JlLnJvdXRlLCBleHByZXNzaW9uKTtcbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0Lm93bktleXModGFyZ2V0KTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuY29uc3Qgd2FybkZvclN5bmNBY2Nlc3MgPSAoMCwgX2NyZWF0ZWRlZHVwZWRieWNhbGxzaXRlc2VydmVyZXJyb3Jsb2dnZXIuY3JlYXRlRGVkdXBlZEJ5Q2FsbHNpdGVTZXJ2ZXJFcnJvckxvZ2dlckRldikoY3JlYXRlU2VhcmNoQWNjZXNzRXJyb3IpO1xuZnVuY3Rpb24gY3JlYXRlU2VhcmNoQWNjZXNzRXJyb3Iocm91dGUsIGV4cHJlc3Npb24pIHtcbiAgICBjb25zdCBwcmVmaXggPSByb3V0ZSA/IGBSb3V0ZSBcIiR7cm91dGV9XCIgYCA6ICdUaGlzIHJvdXRlICc7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoYCR7cHJlZml4fXVzZWQgJHtleHByZXNzaW9ufS4gYCArIGBcXGBzZWFyY2hQYXJhbXNcXGAgaXMgYSBQcm9taXNlIGFuZCBtdXN0IGJlIHVud3JhcHBlZCB3aXRoIFxcYGF3YWl0XFxgIG9yIFxcYFJlYWN0LnVzZSgpXFxgIGJlZm9yZSBhY2Nlc3NpbmcgaXRzIHByb3BlcnRpZXMuIGAgKyBgTGVhcm4gbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvc3luYy1keW5hbWljLWFwaXNgKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgIHZhbHVlOiBcIkU4NDhcIixcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlQ2xpZW50U2VhcmNoUGFyYW1zSW5WYWxpZGF0aW9uKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIHdvcmtTdG9yZSwgd29ya1VuaXRTdG9yZSkge1xuICAgIHZhciBfd29ya1VuaXRTdG9yZV92YWxpZGF0aW9uU2FtcGxlcztcbiAgICBjb25zdCB7IGNyZWF0ZUV4aGF1c3RpdmVTZWFyY2hQYXJhbXNQcm94eSB9ID0gcmVxdWlyZSgnLi4vYXBwLXJlbmRlci9pbnN0YW50LXZhbGlkYXRpb24vaW5zdGFudC1zYW1wbGVzJyk7XG4gICAgY29uc3QgZGVjbGFyZWRLZXlzID0gbmV3IFNldChPYmplY3Qua2V5cygoKF93b3JrVW5pdFN0b3JlX3ZhbGlkYXRpb25TYW1wbGVzID0gd29ya1VuaXRTdG9yZS52YWxpZGF0aW9uU2FtcGxlcykgPT0gbnVsbCA/IHZvaWQgMCA6IF93b3JrVW5pdFN0b3JlX3ZhbGlkYXRpb25TYW1wbGVzLnNlYXJjaFBhcmFtcykgPz8ge30pKTtcbiAgICB1bmRlcmx5aW5nU2VhcmNoUGFyYW1zID0gY3JlYXRlRXhoYXVzdGl2ZVNlYXJjaFBhcmFtc1Byb3h5KHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIGRlY2xhcmVkS2V5cywgd29ya1N0b3JlLnJvdXRlKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMpO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1zZWFyY2gtcGFyYW1zLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/request/search-params.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/request/utils.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/next/dist/server/request/utils.js ***!
|
||
\********************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n isRequestAPICallableInsideAfter: function() {\n return isRequestAPICallableInsideAfter;\n },\n throwForSearchParamsAccessInUseCache: function() {\n return throwForSearchParamsAccessInUseCache;\n },\n throwWithStaticGenerationBailoutErrorWithDynamicError: function() {\n return throwWithStaticGenerationBailoutErrorWithDynamicError;\n }\n});\nconst _staticgenerationbailout = __webpack_require__(/*! ../../client/components/static-generation-bailout */ \"(ssr)/./node_modules/next/dist/client/components/static-generation-bailout.js\");\nconst _aftertaskasyncstorageexternal = __webpack_require__(/*! ../app-render/after-task-async-storage.external */ \"../app-render/after-task-async-storage.external\");\nfunction throwWithStaticGenerationBailoutErrorWithDynamicError(route, expression) {\n throw Object.defineProperty(new _staticgenerationbailout.StaticGenBailoutError(`Route ${route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`), \"__NEXT_ERROR_CODE\", {\n value: \"E543\",\n enumerable: false,\n configurable: true\n });\n}\nfunction throwForSearchParamsAccessInUseCache(workStore, constructorOpt) {\n const error = Object.defineProperty(new Error(`Route ${workStore.route} used \\`searchParams\\` inside \"use cache\". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \\`searchParams\\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`), \"__NEXT_ERROR_CODE\", {\n value: \"E842\",\n enumerable: false,\n configurable: true\n });\n Error.captureStackTrace(error, constructorOpt);\n workStore.invalidDynamicUsageError ??= error;\n throw error;\n}\nfunction isRequestAPICallableInsideAfter() {\n const afterTaskStore = _aftertaskasyncstorageexternal.afterTaskAsyncStorage.getStore();\n return (afterTaskStore == null ? void 0 : afterTaskStore.rootTaskSpawnPhase) === 'action';\n} //# sourceMappingURL=utils.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXF1ZXN0L3V0aWxzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQTJCZ0JBLCtCQUErQjtlQUEvQkE7O0lBZEFDLG9DQUFvQztlQUFwQ0E7O0lBVEFDLHFEQUFxRDtlQUFyREE7OztxREFKc0I7MkRBQ0E7QUFHL0IsU0FBU0Esc0RBQ2RDLEtBQWEsRUFDYkMsVUFBa0I7SUFFbEIsTUFBTSxxQkFFTCxDQUZLLElBQUlDLHlCQUFBQSxxQkFBcUIsQ0FDN0IsQ0FBQyxNQUFNLEVBQUVGLE1BQU0sNEVBQTRFLEVBQUVDLFdBQVcsMEhBQTBILENBQUMsR0FEL047ZUFBQTtvQkFBQTtzQkFBQTtJQUVOO0FBQ0Y7QUFFTyxTQUFTSCxxQ0FDZEssU0FBb0IsRUFDcEJDLGNBQXdCO0lBRXhCLE1BQU1DLFFBQVEscUJBRWIsQ0FGYSxJQUFJQyxNQUNoQixDQUFDLE1BQU0sRUFBRUgsVUFBVUgsS0FBSyxDQUFDLDJYQUEyWCxDQUFDLEdBRHpZO2VBQUE7b0JBQUE7c0JBQUE7SUFFZDtJQUVBTSxNQUFNQyxpQkFBaUIsQ0FBQ0YsT0FBT0Q7SUFDL0JELFVBQVVLLHdCQUF3QixLQUFLSDtJQUV2QyxNQUFNQTtBQUNSO0FBRU8sU0FBU1I7SUFDZCxNQUFNWSxpQkFBaUJDLCtCQUFBQSxxQkFBcUIsQ0FBQ0MsUUFBUTtJQUNyRCxPQUFPRixDQUFBQSxrQkFBQUEsT0FBQUEsS0FBQUEsSUFBQUEsZUFBZ0JHLGtCQUFBQSxNQUF1QjtBQUNoRCIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9zZXJ2ZXIvcmVxdWVzdC91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGF0aWNHZW5CYWlsb3V0RXJyb3IgfSBmcm9tICcuLi8uLi9jbGllbnQvY29tcG9uZW50cy9zdGF0aWMtZ2VuZXJhdGlvbi1iYWlsb3V0J1xuaW1wb3J0IHsgYWZ0ZXJUYXNrQXN5bmNTdG9yYWdlIH0gZnJvbSAnLi4vYXBwLXJlbmRlci9hZnRlci10YXNrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnXG5pbXBvcnQgdHlwZSB7IFdvcmtTdG9yZSB9IGZyb20gJy4uL2FwcC1yZW5kZXIvd29yay1hc3luYy1zdG9yYWdlLmV4dGVybmFsJ1xuXG5leHBvcnQgZnVuY3Rpb24gdGhyb3dXaXRoU3RhdGljR2VuZXJhdGlvbkJhaWxvdXRFcnJvcldpdGhEeW5hbWljRXJyb3IoXG4gIHJvdXRlOiBzdHJpbmcsXG4gIGV4cHJlc3Npb246IHN0cmluZ1xuKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgU3RhdGljR2VuQmFpbG91dEVycm9yKFxuICAgIGBSb3V0ZSAke3JvdXRlfSB3aXRoIFxcYGR5bmFtaWMgPSBcImVycm9yXCJcXGAgY291bGRuJ3QgYmUgcmVuZGVyZWQgc3RhdGljYWxseSBiZWNhdXNlIGl0IHVzZWQgJHtleHByZXNzaW9ufS4gU2VlIG1vcmUgaW5mbyBoZXJlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvc3RhdGljLWFuZC1keW5hbWljI2R5bmFtaWMtcmVuZGVyaW5nYFxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd0ZvclNlYXJjaFBhcmFtc0FjY2Vzc0luVXNlQ2FjaGUoXG4gIHdvcmtTdG9yZTogV29ya1N0b3JlLFxuICBjb25zdHJ1Y3Rvck9wdDogRnVuY3Rpb25cbik6IG5ldmVyIHtcbiAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgYFJvdXRlICR7d29ya1N0b3JlLnJvdXRlfSB1c2VkIFxcYHNlYXJjaFBhcmFtc1xcYCBpbnNpZGUgXCJ1c2UgY2FjaGVcIi4gQWNjZXNzaW5nIGR5bmFtaWMgcmVxdWVzdCBkYXRhIGluc2lkZSBhIGNhY2hlIHNjb3BlIGlzIG5vdCBzdXBwb3J0ZWQuIElmIHlvdSBuZWVkIHNvbWUgc2VhcmNoIHBhcmFtcyBpbnNpZGUgYSBjYWNoZWQgZnVuY3Rpb24gYXdhaXQgXFxgc2VhcmNoUGFyYW1zXFxgIG91dHNpZGUgb2YgdGhlIGNhY2hlZCBmdW5jdGlvbiBhbmQgcGFzcyBvbmx5IHRoZSByZXF1aXJlZCBzZWFyY2ggcGFyYW1zIGFzIGFyZ3VtZW50cyB0byB0aGUgY2FjaGVkIGZ1bmN0aW9uLiBTZWUgbW9yZSBpbmZvIGhlcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL25leHQtcmVxdWVzdC1pbi11c2UtY2FjaGVgXG4gIClcblxuICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnJvciwgY29uc3RydWN0b3JPcHQpXG4gIHdvcmtTdG9yZS5pbnZhbGlkRHluYW1pY1VzYWdlRXJyb3IgPz89IGVycm9yXG5cbiAgdGhyb3cgZXJyb3Jcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVxdWVzdEFQSUNhbGxhYmxlSW5zaWRlQWZ0ZXIoKSB7XG4gIGNvbnN0IGFmdGVyVGFza1N0b3JlID0gYWZ0ZXJUYXNrQXN5bmNTdG9yYWdlLmdldFN0b3JlKClcbiAgcmV0dXJuIGFmdGVyVGFza1N0b3JlPy5yb290VGFza1NwYXduUGhhc2UgPT09ICdhY3Rpb24nXG59XG4iXSwibmFtZXMiOlsiaXNSZXF1ZXN0QVBJQ2FsbGFibGVJbnNpZGVBZnRlciIsInRocm93Rm9yU2VhcmNoUGFyYW1zQWNjZXNzSW5Vc2VDYWNoZSIsInRocm93V2l0aFN0YXRpY0dlbmVyYXRpb25CYWlsb3V0RXJyb3JXaXRoRHluYW1pY0Vycm9yIiwicm91dGUiLCJleHByZXNzaW9uIiwiU3RhdGljR2VuQmFpbG91dEVycm9yIiwid29ya1N0b3JlIiwiY29uc3RydWN0b3JPcHQiLCJlcnJvciIsIkVycm9yIiwiY2FwdHVyZVN0YWNrVHJhY2UiLCJpbnZhbGlkRHluYW1pY1VzYWdlRXJyb3IiLCJhZnRlclRhc2tTdG9yZSIsImFmdGVyVGFza0FzeW5jU3RvcmFnZSIsImdldFN0b3JlIiwicm9vdFRhc2tTcGF3blBoYXNlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/request/utils.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?8030":
|
||
/*!*********************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/route-modules/app-page/module.compiled.js ***!
|
||
\*********************************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nif (false) {} else {\n if (false) {} else {\n if (true) {\n if (false) {} else {\n module.exports = __webpack_require__(/*! next/dist/compiled/next-server/app-page.runtime.dev.js */ \"next/dist/compiled/next-server/app-page.runtime.dev.js\");\n }\n } else {}\n }\n}\n\n//# sourceMappingURL=module.compiled.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL21vZHVsZS5jb21waWxlZC5qcz84MDMwIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsSUFBSSxLQUFtQyxFQUFFLEVBRXhDLENBQUM7QUFDRixRQUFRLEtBQXFDLEVBQUUsRUFjMUMsQ0FBQztBQUNOLFlBQVksSUFBc0M7QUFDbEQsZ0JBQWdCLEtBQXFCLEVBQUUsRUFFMUIsQ0FBQztBQUNkLGdCQUFnQiw0SkFBa0Y7QUFDbEc7QUFDQSxVQUFVLEtBQUssRUFNTjtBQUNUO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL21vZHVsZS5jb21waWxlZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbmlmIChwcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgPT09ICdlZGdlJykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL21vZHVsZS5qcycpO1xufSBlbHNlIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0VYUEVSSU1FTlRBTF9SRUFDVCkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5UVVJCT1BBQ0spIHtcbiAgICAgICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9uZXh0LXNlcnZlci9hcHAtcGFnZS10dXJiby1leHBlcmltZW50YWwucnVudGltZS5kZXYuanMnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCduZXh0L2Rpc3QvY29tcGlsZWQvbmV4dC1zZXJ2ZXIvYXBwLXBhZ2UtZXhwZXJpbWVudGFsLnJ1bnRpbWUuZGV2LmpzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuVFVSQk9QQUNLKSB7XG4gICAgICAgICAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCduZXh0L2Rpc3QvY29tcGlsZWQvbmV4dC1zZXJ2ZXIvYXBwLXBhZ2UtdHVyYm8tZXhwZXJpbWVudGFsLnJ1bnRpbWUucHJvZC5qcycpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9uZXh0LXNlcnZlci9hcHAtcGFnZS1leHBlcmltZW50YWwucnVudGltZS5wcm9kLmpzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5UVVJCT1BBQ0spIHtcbiAgICAgICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9uZXh0LXNlcnZlci9hcHAtcGFnZS10dXJiby5ydW50aW1lLmRldi5qcycpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9uZXh0LXNlcnZlci9hcHAtcGFnZS5ydW50aW1lLmRldi5qcycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52LlRVUkJPUEFDSykge1xuICAgICAgICAgICAgICAgIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnbmV4dC9kaXN0L2NvbXBpbGVkL25leHQtc2VydmVyL2FwcC1wYWdlLXR1cmJvLnJ1bnRpbWUucHJvZC5qcycpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9uZXh0LXNlcnZlci9hcHAtcGFnZS5ydW50aW1lLnByb2QuanMnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bW9kdWxlLmNvbXBpbGVkLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?8030\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?8c34":
|
||
/*!*********************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/route-modules/app-page/module.compiled.js ***!
|
||
\*********************************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nif (false) {} else {\n if (false) {} else {\n if (true) {\n if (false) {} else {\n module.exports = __webpack_require__(/*! next/dist/compiled/next-server/app-page.runtime.dev.js */ \"next/dist/compiled/next-server/app-page.runtime.dev.js\");\n }\n } else {}\n }\n}\n\n//# sourceMappingURL=module.compiled.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL21vZHVsZS5jb21waWxlZC5qcz84YzM0IiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsSUFBSSxLQUFtQyxFQUFFLEVBRXhDLENBQUM7QUFDRixRQUFRLEtBQXFDLEVBQUUsRUFjMUMsQ0FBQztBQUNOLFlBQVksSUFBc0M7QUFDbEQsZ0JBQWdCLEtBQXFCLEVBQUUsRUFFMUIsQ0FBQztBQUNkLGdCQUFnQiw0SkFBa0Y7QUFDbEc7QUFDQSxVQUFVLEtBQUssRUFNTjtBQUNUO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL21vZHVsZS5jb21waWxlZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbmlmIChwcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgPT09ICdlZGdlJykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL21vZHVsZS5qcycpO1xufSBlbHNlIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0VYUEVSSU1FTlRBTF9SRUFDVCkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5UVVJCT1BBQ0spIHtcbiAgICAgICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9uZXh0LXNlcnZlci9hcHAtcGFnZS10dXJiby1leHBlcmltZW50YWwucnVudGltZS5kZXYuanMnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCduZXh0L2Rpc3QvY29tcGlsZWQvbmV4dC1zZXJ2ZXIvYXBwLXBhZ2UtZXhwZXJpbWVudGFsLnJ1bnRpbWUuZGV2LmpzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuVFVSQk9QQUNLKSB7XG4gICAgICAgICAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCduZXh0L2Rpc3QvY29tcGlsZWQvbmV4dC1zZXJ2ZXIvYXBwLXBhZ2UtdHVyYm8tZXhwZXJpbWVudGFsLnJ1bnRpbWUucHJvZC5qcycpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9uZXh0LXNlcnZlci9hcHAtcGFnZS1leHBlcmltZW50YWwucnVudGltZS5wcm9kLmpzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5UVVJCT1BBQ0spIHtcbiAgICAgICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9uZXh0LXNlcnZlci9hcHAtcGFnZS10dXJiby5ydW50aW1lLmRldi5qcycpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9uZXh0LXNlcnZlci9hcHAtcGFnZS5ydW50aW1lLmRldi5qcycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52LlRVUkJPUEFDSykge1xuICAgICAgICAgICAgICAgIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnbmV4dC9kaXN0L2NvbXBpbGVkL25leHQtc2VydmVyL2FwcC1wYWdlLXR1cmJvLnJ1bnRpbWUucHJvZC5qcycpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9uZXh0LXNlcnZlci9hcHAtcGFnZS5ydW50aW1lLnByb2QuanMnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bW9kdWxlLmNvbXBpbGVkLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?8c34\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js":
|
||
/*!******************************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js ***!
|
||
\******************************************************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?8c34\").vendored.contexts.AppRouterContext;\n\n//# sourceMappingURL=app-router-context.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL2NvbnRleHRzL2FwcC1yb3V0ZXItY29udGV4dC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDRMQUF1Rjs7QUFFdkYiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL2NvbnRleHRzL2FwcC1yb3V0ZXItY29udGV4dC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlLmNvbXBpbGVkJykudmVuZG9yZWRbJ2NvbnRleHRzJ10uQXBwUm91dGVyQ29udGV4dDtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXBwLXJvdXRlci1jb250ZXh0LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/head-manager-context.js":
|
||
/*!********************************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/head-manager-context.js ***!
|
||
\********************************************************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?8c34\").vendored.contexts.HeadManagerContext;\n\n//# sourceMappingURL=head-manager-context.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL2NvbnRleHRzL2hlYWQtbWFuYWdlci1jb250ZXh0LmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOExBQXlGOztBQUV6RiIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL3JvdXRlLW1vZHVsZXMvYXBwLXBhZ2UvdmVuZG9yZWQvY29udGV4dHMvaGVhZC1tYW5hZ2VyLWNvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZS5jb21waWxlZCcpLnZlbmRvcmVkWydjb250ZXh0cyddLkhlYWRNYW5hZ2VyQ29udGV4dDtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGVhZC1tYW5hZ2VyLWNvbnRleHQuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/head-manager-context.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/hooks-client-context.js":
|
||
/*!********************************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/hooks-client-context.js ***!
|
||
\********************************************************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?8c34\").vendored.contexts.HooksClientContext;\n\n//# sourceMappingURL=hooks-client-context.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL2NvbnRleHRzL2hvb2tzLWNsaWVudC1jb250ZXh0LmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOExBQXlGOztBQUV6RiIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL3JvdXRlLW1vZHVsZXMvYXBwLXBhZ2UvdmVuZG9yZWQvY29udGV4dHMvaG9va3MtY2xpZW50LWNvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZS5jb21waWxlZCcpLnZlbmRvcmVkWydjb250ZXh0cyddLkhvb2tzQ2xpZW50Q29udGV4dDtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aG9va3MtY2xpZW50LWNvbnRleHQuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/hooks-client-context.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/server-inserted-html.js":
|
||
/*!********************************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/server-inserted-html.js ***!
|
||
\********************************************************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?8c34\").vendored.contexts.ServerInsertedHtml;\n\n//# sourceMappingURL=server-inserted-html.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL2NvbnRleHRzL3NlcnZlci1pbnNlcnRlZC1odG1sLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOExBQXlGOztBQUV6RiIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL3JvdXRlLW1vZHVsZXMvYXBwLXBhZ2UvdmVuZG9yZWQvY29udGV4dHMvc2VydmVyLWluc2VydGVkLWh0bWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZS5jb21waWxlZCcpLnZlbmRvcmVkWydjb250ZXh0cyddLlNlcnZlckluc2VydGVkSHRtbDtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2VydmVyLWluc2VydGVkLWh0bWwuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/server-inserted-html.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-dom.js":
|
||
/*!****************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-dom.js ***!
|
||
\****************************************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?8c34\").vendored[\"react-ssr\"].ReactDOM;\n\n//# sourceMappingURL=react-dom.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3Nzci9yZWFjdC1kb20uanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYix3TEFBZ0Y7O0FBRWhGIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvcm91dGUtbW9kdWxlcy9hcHAtcGFnZS92ZW5kb3JlZC9zc3IvcmVhY3QtZG9tLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGUuY29tcGlsZWQnKS52ZW5kb3JlZFsncmVhY3Qtc3NyJ10uUmVhY3RET007XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlYWN0LWRvbS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-dom.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js":
|
||
/*!****************************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js ***!
|
||
\****************************************************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?8c34\").vendored[\"react-ssr\"].ReactJsxDevRuntime;\n\n//# sourceMappingURL=react-jsx-dev-runtime.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3Nzci9yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYixrTUFBMEY7O0FBRTFGIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvRGVza3RvcC9naXQtcHJvamVjdHMvZGlnaWthbGEtdGFpbHdpbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvcm91dGUtbW9kdWxlcy9hcHAtcGFnZS92ZW5kb3JlZC9zc3IvcmVhY3QtanN4LWRldi1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGUuY29tcGlsZWQnKS52ZW5kb3JlZFsncmVhY3Qtc3NyJ10uUmVhY3RKc3hEZXZSdW50aW1lO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js":
|
||
/*!************************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js ***!
|
||
\************************************************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?8c34\").vendored[\"react-ssr\"].ReactJsxRuntime;\n\n//# sourceMappingURL=react-jsx-runtime.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3Nzci9yZWFjdC1qc3gtcnVudGltZS5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLCtMQUF1Rjs7QUFFdkYiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3Nzci9yZWFjdC1qc3gtcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlLmNvbXBpbGVkJykudmVuZG9yZWRbJ3JlYWN0LXNzciddLlJlYWN0SnN4UnVudGltZTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVhY3QtanN4LXJ1bnRpbWUuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-webpack-client.js":
|
||
/*!**************************************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-webpack-client.js ***!
|
||
\**************************************************************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?8c34\").vendored[\"react-ssr\"].ReactServerDOMWebpackClient;\n\n//# sourceMappingURL=react-server-dom-webpack-client.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3Nzci9yZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2stY2xpZW50LmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsMk1BQW1HOztBQUVuRyIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL3JvdXRlLW1vZHVsZXMvYXBwLXBhZ2UvdmVuZG9yZWQvc3NyL3JlYWN0LXNlcnZlci1kb20td2VicGFjay1jbGllbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZS5jb21waWxlZCcpLnZlbmRvcmVkWydyZWFjdC1zc3InXS5SZWFjdFNlcnZlckRPTVdlYnBhY2tDbGllbnQ7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlYWN0LXNlcnZlci1kb20td2VicGFjay1jbGllbnQuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-webpack-client.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js":
|
||
/*!************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js ***!
|
||
\************************************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?8c34\").vendored[\"react-ssr\"].React;\n\n//# sourceMappingURL=react.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3Nzci9yZWFjdC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLHFMQUE2RTs7QUFFN0UiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3Nzci9yZWFjdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlLmNvbXBpbGVkJykudmVuZG9yZWRbJ3JlYWN0LXNzciddLlJlYWN0O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZWFjdC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/web/spec-extension/adapters/headers.js":
|
||
/*!******************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/web/spec-extension/adapters/headers.js ***!
|
||
\******************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n HeadersAdapter: function() {\n return HeadersAdapter;\n },\n ReadonlyHeadersError: function() {\n return ReadonlyHeadersError;\n }\n});\nconst _reflect = __webpack_require__(/*! ./reflect */ \"(ssr)/./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js\");\nclass ReadonlyHeadersError extends Error {\n constructor(){\n super('Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers');\n }\n static callable() {\n throw new ReadonlyHeadersError();\n }\n}\nclass HeadersAdapter extends Headers {\n constructor(headers){\n // We've already overridden the methods that would be called, so we're just\n // calling the super constructor to ensure that the instanceof check works.\n super();\n this.headers = new Proxy(headers, {\n get (target, prop, receiver) {\n // Because this is just an object, we expect that all \"get\" operations\n // are for properties. If it's a \"get\" for a symbol, we'll just return\n // the symbol.\n if (typeof prop === 'symbol') {\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n const lowercased = prop.toLowerCase();\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased);\n // If the original casing doesn't exist, return undefined.\n if (typeof original === 'undefined') return;\n // If the original casing exists, return the value.\n return _reflect.ReflectAdapter.get(target, original, receiver);\n },\n set (target, prop, value, receiver) {\n if (typeof prop === 'symbol') {\n return _reflect.ReflectAdapter.set(target, prop, value, receiver);\n }\n const lowercased = prop.toLowerCase();\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased);\n // If the original casing doesn't exist, use the prop as the key.\n return _reflect.ReflectAdapter.set(target, original ?? prop, value, receiver);\n },\n has (target, prop) {\n if (typeof prop === 'symbol') return _reflect.ReflectAdapter.has(target, prop);\n const lowercased = prop.toLowerCase();\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased);\n // If the original casing doesn't exist, return false.\n if (typeof original === 'undefined') return false;\n // If the original casing exists, return true.\n return _reflect.ReflectAdapter.has(target, original);\n },\n deleteProperty (target, prop) {\n if (typeof prop === 'symbol') return _reflect.ReflectAdapter.deleteProperty(target, prop);\n const lowercased = prop.toLowerCase();\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased);\n // If the original casing doesn't exist, return true.\n if (typeof original === 'undefined') return true;\n // If the original casing exists, delete the property.\n return _reflect.ReflectAdapter.deleteProperty(target, original);\n }\n });\n }\n /**\n * Seals a Headers instance to prevent modification by throwing an error when\n * any mutating method is called.\n */ static seal(headers) {\n return new Proxy(headers, {\n get (target, prop, receiver) {\n switch(prop){\n case 'append':\n case 'delete':\n case 'set':\n return ReadonlyHeadersError.callable;\n default:\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n }\n });\n }\n /**\n * Merges a header value into a string. This stores multiple values as an\n * array, so we need to merge them into a string.\n *\n * @param value a header value\n * @returns a merged header value (a string)\n */ merge(value) {\n if (Array.isArray(value)) return value.join(', ');\n return value;\n }\n /**\n * Creates a Headers instance from a plain object or a Headers instance.\n *\n * @param headers a plain object or a Headers instance\n * @returns a headers instance\n */ static from(headers) {\n if (headers instanceof Headers) return headers;\n return new HeadersAdapter(headers);\n }\n append(name, value) {\n const existing = this.headers[name];\n if (typeof existing === 'string') {\n this.headers[name] = [\n existing,\n value\n ];\n } else if (Array.isArray(existing)) {\n existing.push(value);\n } else {\n this.headers[name] = value;\n }\n }\n delete(name) {\n delete this.headers[name];\n }\n get(name) {\n const value = this.headers[name];\n if (typeof value !== 'undefined') return this.merge(value);\n return null;\n }\n has(name) {\n return typeof this.headers[name] !== 'undefined';\n }\n set(name, value) {\n this.headers[name] = value;\n }\n forEach(callbackfn, thisArg) {\n for (const [name, value] of this.entries()){\n callbackfn.call(thisArg, value, name, this);\n }\n }\n *entries() {\n for (const key of Object.keys(this.headers)){\n const name = key.toLowerCase();\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(name);\n yield [\n name,\n value\n ];\n }\n }\n *keys() {\n for (const key of Object.keys(this.headers)){\n const name = key.toLowerCase();\n yield name;\n }\n }\n *values() {\n for (const key of Object.keys(this.headers)){\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(key);\n yield value;\n }\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n}\n\n//# sourceMappingURL=headers.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vYWRhcHRlcnMvaGVhZGVycy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FHTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxpQkFBaUIsbUJBQU8sQ0FBQywrRkFBVztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vYWRhcHRlcnMvaGVhZGVycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIEhlYWRlcnNBZGFwdGVyOiBudWxsLFxuICAgIFJlYWRvbmx5SGVhZGVyc0Vycm9yOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIEhlYWRlcnNBZGFwdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEhlYWRlcnNBZGFwdGVyO1xuICAgIH0sXG4gICAgUmVhZG9ubHlIZWFkZXJzRXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUmVhZG9ubHlIZWFkZXJzRXJyb3I7XG4gICAgfVxufSk7XG5jb25zdCBfcmVmbGVjdCA9IHJlcXVpcmUoXCIuL3JlZmxlY3RcIik7XG5jbGFzcyBSZWFkb25seUhlYWRlcnNFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3Rvcigpe1xuICAgICAgICBzdXBlcignSGVhZGVycyBjYW5ub3QgYmUgbW9kaWZpZWQuIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL2hlYWRlcnMnKTtcbiAgICB9XG4gICAgc3RhdGljIGNhbGxhYmxlKCkge1xuICAgICAgICB0aHJvdyBuZXcgUmVhZG9ubHlIZWFkZXJzRXJyb3IoKTtcbiAgICB9XG59XG5jbGFzcyBIZWFkZXJzQWRhcHRlciBleHRlbmRzIEhlYWRlcnMge1xuICAgIGNvbnN0cnVjdG9yKGhlYWRlcnMpe1xuICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IG92ZXJyaWRkZW4gdGhlIG1ldGhvZHMgdGhhdCB3b3VsZCBiZSBjYWxsZWQsIHNvIHdlJ3JlIGp1c3RcbiAgICAgICAgLy8gY2FsbGluZyB0aGUgc3VwZXIgY29uc3RydWN0b3IgdG8gZW5zdXJlIHRoYXQgdGhlIGluc3RhbmNlb2YgY2hlY2sgd29ya3MuXG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuaGVhZGVycyA9IG5ldyBQcm94eShoZWFkZXJzLCB7XG4gICAgICAgICAgICBnZXQgKHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIHRoaXMgaXMganVzdCBhbiBvYmplY3QsIHdlIGV4cGVjdCB0aGF0IGFsbCBcImdldFwiIG9wZXJhdGlvbnNcbiAgICAgICAgICAgICAgICAvLyBhcmUgZm9yIHByb3BlcnRpZXMuIElmIGl0J3MgYSBcImdldFwiIGZvciBhIHN5bWJvbCwgd2UnbGwganVzdCByZXR1cm5cbiAgICAgICAgICAgICAgICAvLyB0aGUgc3ltYm9sLlxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbG93ZXJjYXNlZCA9IHByb3AudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAvLyBMZXQncyBmaW5kIHRoZSBvcmlnaW5hbCBjYXNpbmcgb2YgdGhlIGtleS4gVGhpcyBhc3N1bWVzIHRoYXQgdGhlcmUgaXNcbiAgICAgICAgICAgICAgICAvLyBubyBtaXhlZCBjYXNlIGtleXMgKGUuZy4gXCJDb250ZW50LVR5cGVcIiBhbmQgXCJjb250ZW50LXR5cGVcIikgaW4gdGhlXG4gICAgICAgICAgICAgICAgLy8gaGVhZGVycyBvYmplY3QuXG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWwgPSBPYmplY3Qua2V5cyhoZWFkZXJzKS5maW5kKChvKT0+by50b0xvd2VyQ2FzZSgpID09PSBsb3dlcmNhc2VkKTtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgb3JpZ2luYWwgY2FzaW5nIGRvZXNuJ3QgZXhpc3QsIHJldHVybiB1bmRlZmluZWQuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvcmlnaW5hbCA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgb3JpZ2luYWwgY2FzaW5nIGV4aXN0cywgcmV0dXJuIHRoZSB2YWx1ZS5cbiAgICAgICAgICAgICAgICByZXR1cm4gX3JlZmxlY3QuUmVmbGVjdEFkYXB0ZXIuZ2V0KHRhcmdldCwgb3JpZ2luYWwsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgKHRhcmdldCwgcHJvcCwgdmFsdWUsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3ltYm9sJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3JlZmxlY3QuUmVmbGVjdEFkYXB0ZXIuc2V0KHRhcmdldCwgcHJvcCwgdmFsdWUsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbG93ZXJjYXNlZCA9IHByb3AudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAvLyBMZXQncyBmaW5kIHRoZSBvcmlnaW5hbCBjYXNpbmcgb2YgdGhlIGtleS4gVGhpcyBhc3N1bWVzIHRoYXQgdGhlcmUgaXNcbiAgICAgICAgICAgICAgICAvLyBubyBtaXhlZCBjYXNlIGtleXMgKGUuZy4gXCJDb250ZW50LVR5cGVcIiBhbmQgXCJjb250ZW50LXR5cGVcIikgaW4gdGhlXG4gICAgICAgICAgICAgICAgLy8gaGVhZGVycyBvYmplY3QuXG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWwgPSBPYmplY3Qua2V5cyhoZWFkZXJzKS5maW5kKChvKT0+by50b0xvd2VyQ2FzZSgpID09PSBsb3dlcmNhc2VkKTtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgb3JpZ2luYWwgY2FzaW5nIGRvZXNuJ3QgZXhpc3QsIHVzZSB0aGUgcHJvcCBhcyB0aGUga2V5LlxuICAgICAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5zZXQodGFyZ2V0LCBvcmlnaW5hbCA/PyBwcm9wLCB2YWx1ZSwgcmVjZWl2ZXIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhhcyAodGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3ltYm9sJykgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmhhcyh0YXJnZXQsIHByb3ApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvd2VyY2FzZWQgPSBwcm9wLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgLy8gTGV0J3MgZmluZCB0aGUgb3JpZ2luYWwgY2FzaW5nIG9mIHRoZSBrZXkuIFRoaXMgYXNzdW1lcyB0aGF0IHRoZXJlIGlzXG4gICAgICAgICAgICAgICAgLy8gbm8gbWl4ZWQgY2FzZSBrZXlzIChlLmcuIFwiQ29udGVudC1UeXBlXCIgYW5kIFwiY29udGVudC10eXBlXCIpIGluIHRoZVxuICAgICAgICAgICAgICAgIC8vIGhlYWRlcnMgb2JqZWN0LlxuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsID0gT2JqZWN0LmtleXMoaGVhZGVycykuZmluZCgobyk9Pm8udG9Mb3dlckNhc2UoKSA9PT0gbG93ZXJjYXNlZCk7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIG9yaWdpbmFsIGNhc2luZyBkb2Vzbid0IGV4aXN0LCByZXR1cm4gZmFsc2UuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvcmlnaW5hbCA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgb3JpZ2luYWwgY2FzaW5nIGV4aXN0cywgcmV0dXJuIHRydWUuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmhhcyh0YXJnZXQsIG9yaWdpbmFsKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZWxldGVQcm9wZXJ0eSAodGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3ltYm9sJykgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmRlbGV0ZVByb3BlcnR5KHRhcmdldCwgcHJvcCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbG93ZXJjYXNlZCA9IHByb3AudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAvLyBMZXQncyBmaW5kIHRoZSBvcmlnaW5hbCBjYXNpbmcgb2YgdGhlIGtleS4gVGhpcyBhc3N1bWVzIHRoYXQgdGhlcmUgaXNcbiAgICAgICAgICAgICAgICAvLyBubyBtaXhlZCBjYXNlIGtleXMgKGUuZy4gXCJDb250ZW50LVR5cGVcIiBhbmQgXCJjb250ZW50LXR5cGVcIikgaW4gdGhlXG4gICAgICAgICAgICAgICAgLy8gaGVhZGVycyBvYmplY3QuXG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWwgPSBPYmplY3Qua2V5cyhoZWFkZXJzKS5maW5kKChvKT0+by50b0xvd2VyQ2FzZSgpID09PSBsb3dlcmNhc2VkKTtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgb3JpZ2luYWwgY2FzaW5nIGRvZXNuJ3QgZXhpc3QsIHJldHVybiB0cnVlLlxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3JpZ2luYWwgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgb3JpZ2luYWwgY2FzaW5nIGV4aXN0cywgZGVsZXRlIHRoZSBwcm9wZXJ0eS5cbiAgICAgICAgICAgICAgICByZXR1cm4gX3JlZmxlY3QuUmVmbGVjdEFkYXB0ZXIuZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBvcmlnaW5hbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICogU2VhbHMgYSBIZWFkZXJzIGluc3RhbmNlIHRvIHByZXZlbnQgbW9kaWZpY2F0aW9uIGJ5IHRocm93aW5nIGFuIGVycm9yIHdoZW5cbiAgICogYW55IG11dGF0aW5nIG1ldGhvZCBpcyBjYWxsZWQuXG4gICAqLyBzdGF0aWMgc2VhbChoZWFkZXJzKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJveHkoaGVhZGVycywge1xuICAgICAgICAgICAgZ2V0ICh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoKHByb3Ape1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdhcHBlbmQnOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdkZWxldGUnOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdzZXQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlYWRvbmx5SGVhZGVyc0Vycm9yLmNhbGxhYmxlO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICogTWVyZ2VzIGEgaGVhZGVyIHZhbHVlIGludG8gYSBzdHJpbmcuIFRoaXMgc3RvcmVzIG11bHRpcGxlIHZhbHVlcyBhcyBhblxuICAgKiBhcnJheSwgc28gd2UgbmVlZCB0byBtZXJnZSB0aGVtIGludG8gYSBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBhIGhlYWRlciB2YWx1ZVxuICAgKiBAcmV0dXJucyBhIG1lcmdlZCBoZWFkZXIgdmFsdWUgKGEgc3RyaW5nKVxuICAgKi8gbWVyZ2UodmFsdWUpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4gdmFsdWUuam9pbignLCAnKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICAvKipcbiAgICogQ3JlYXRlcyBhIEhlYWRlcnMgaW5zdGFuY2UgZnJvbSBhIHBsYWluIG9iamVjdCBvciBhIEhlYWRlcnMgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSBoZWFkZXJzIGEgcGxhaW4gb2JqZWN0IG9yIGEgSGVhZGVycyBpbnN0YW5jZVxuICAgKiBAcmV0dXJucyBhIGhlYWRlcnMgaW5zdGFuY2VcbiAgICovIHN0YXRpYyBmcm9tKGhlYWRlcnMpIHtcbiAgICAgICAgaWYgKGhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzKSByZXR1cm4gaGVhZGVycztcbiAgICAgICAgcmV0dXJuIG5ldyBIZWFkZXJzQWRhcHRlcihoZWFkZXJzKTtcbiAgICB9XG4gICAgYXBwZW5kKG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5oZWFkZXJzW25hbWVdO1xuICAgICAgICBpZiAodHlwZW9mIGV4aXN0aW5nID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhpcy5oZWFkZXJzW25hbWVdID0gW1xuICAgICAgICAgICAgICAgIGV4aXN0aW5nLFxuICAgICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICBdO1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZXhpc3RpbmcpKSB7XG4gICAgICAgICAgICBleGlzdGluZy5wdXNoKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGVhZGVyc1tuYW1lXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGRlbGV0ZShuYW1lKSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmhlYWRlcnNbbmFtZV07XG4gICAgfVxuICAgIGdldChuYW1lKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5oZWFkZXJzW25hbWVdO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIHRoaXMubWVyZ2UodmFsdWUpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaGFzKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLmhlYWRlcnNbbmFtZV0gIT09ICd1bmRlZmluZWQnO1xuICAgIH1cbiAgICBzZXQobmFtZSwgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzW25hbWVdID0gdmFsdWU7XG4gICAgfVxuICAgIGZvckVhY2goY2FsbGJhY2tmbiwgdGhpc0FyZykge1xuICAgICAgICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgdGhpcy5lbnRyaWVzKCkpe1xuICAgICAgICAgICAgY2FsbGJhY2tmbi5jYWxsKHRoaXNBcmcsIHZhbHVlLCBuYW1lLCB0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAqZW50cmllcygpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5oZWFkZXJzKSl7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAvLyBXZSBhc3NlcnQgaGVyZSB0aGF0IHRoaXMgaXMgYSBzdHJpbmcgYmVjYXVzZSB3ZSBnb3QgaXQgZnJvbSB0aGVcbiAgICAgICAgICAgIC8vIE9iamVjdC5rZXlzKCkgY2FsbCBhYm92ZS5cbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXQobmFtZSk7XG4gICAgICAgICAgICB5aWVsZCBbXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAqa2V5cygpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5oZWFkZXJzKSl7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB5aWVsZCBuYW1lO1xuICAgICAgICB9XG4gICAgfVxuICAgICp2YWx1ZXMoKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuaGVhZGVycykpe1xuICAgICAgICAgICAgLy8gV2UgYXNzZXJ0IGhlcmUgdGhhdCB0aGlzIGlzIGEgc3RyaW5nIGJlY2F1c2Ugd2UgZ290IGl0IGZyb20gdGhlXG4gICAgICAgICAgICAvLyBPYmplY3Qua2V5cygpIGNhbGwgYWJvdmUuXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0KGtleSk7XG4gICAgICAgICAgICB5aWVsZCB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50cmllcygpO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGVhZGVycy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/web/spec-extension/adapters/headers.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js":
|
||
/*!******************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js ***!
|
||
\******************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"ReflectAdapter\", ({\n enumerable: true,\n get: function() {\n return ReflectAdapter;\n }\n}));\nclass ReflectAdapter {\n static get(target, prop, receiver) {\n const value = Reflect.get(target, prop, receiver);\n if (typeof value === 'function') {\n return value.bind(target);\n }\n return value;\n }\n static set(target, prop, value, receiver) {\n return Reflect.set(target, prop, value, receiver);\n }\n static has(target, prop) {\n return Reflect.has(target, prop);\n }\n static deleteProperty(target, prop) {\n return Reflect.deleteProperty(target, prop);\n }\n}\n\n//# sourceMappingURL=reflect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vYWRhcHRlcnMvcmVmbGVjdC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLGtEQUFpRDtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL3dlYi9zcGVjLWV4dGVuc2lvbi9hZGFwdGVycy9yZWZsZWN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVmbGVjdEFkYXB0ZXJcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3RBZGFwdGVyO1xuICAgIH1cbn0pO1xuY2xhc3MgUmVmbGVjdEFkYXB0ZXIge1xuICAgIHN0YXRpYyBnZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUuYmluZCh0YXJnZXQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgc3RhdGljIHNldCh0YXJnZXQsIHByb3AsIHZhbHVlLCByZWNlaXZlcikge1xuICAgICAgICByZXR1cm4gUmVmbGVjdC5zZXQodGFyZ2V0LCBwcm9wLCB2YWx1ZSwgcmVjZWl2ZXIpO1xuICAgIH1cbiAgICBzdGF0aWMgaGFzKHRhcmdldCwgcHJvcCkge1xuICAgICAgICByZXR1cm4gUmVmbGVjdC5oYXModGFyZ2V0LCBwcm9wKTtcbiAgICB9XG4gICAgc3RhdGljIGRlbGV0ZVByb3BlcnR5KHRhcmdldCwgcHJvcCkge1xuICAgICAgICByZXR1cm4gUmVmbGVjdC5kZWxldGVQcm9wZXJ0eSh0YXJnZXQsIHByb3ApO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVmbGVjdC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.js":
|
||
/*!**************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.js ***!
|
||
\**************************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n MutableRequestCookiesAdapter: function() {\n return MutableRequestCookiesAdapter;\n },\n ReadonlyRequestCookiesError: function() {\n return ReadonlyRequestCookiesError;\n },\n RequestCookiesAdapter: function() {\n return RequestCookiesAdapter;\n },\n appendMutableCookies: function() {\n return appendMutableCookies;\n },\n areCookiesMutableInCurrentPhase: function() {\n return areCookiesMutableInCurrentPhase;\n },\n createCookiesWithMutableAccessCheck: function() {\n return createCookiesWithMutableAccessCheck;\n },\n getModifiedCookieValues: function() {\n return getModifiedCookieValues;\n },\n responseCookiesToRequestCookies: function() {\n return responseCookiesToRequestCookies;\n }\n});\nconst _cookies = __webpack_require__(/*! ../cookies */ \"(ssr)/./node_modules/next/dist/server/web/spec-extension/cookies.js\");\nconst _reflect = __webpack_require__(/*! ./reflect */ \"(ssr)/./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js\");\nconst _workasyncstorageexternal = __webpack_require__(/*! ../../../app-render/work-async-storage.external */ \"../app-render/work-async-storage.external\");\nconst _actionrevalidationkind = __webpack_require__(/*! ../../../../shared/lib/action-revalidation-kind */ \"(ssr)/./node_modules/next/dist/shared/lib/action-revalidation-kind.js\");\nclass ReadonlyRequestCookiesError extends Error {\n constructor(){\n super('Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#options');\n }\n static callable() {\n throw new ReadonlyRequestCookiesError();\n }\n}\nclass RequestCookiesAdapter {\n static seal(cookies) {\n return new Proxy(cookies, {\n get (target, prop, receiver) {\n switch(prop){\n case 'clear':\n case 'delete':\n case 'set':\n return ReadonlyRequestCookiesError.callable;\n default:\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n }\n });\n }\n}\nconst SYMBOL_MODIFY_COOKIE_VALUES = Symbol.for('next.mutated.cookies');\nfunction getModifiedCookieValues(cookies) {\n const modified = cookies[SYMBOL_MODIFY_COOKIE_VALUES];\n if (!modified || !Array.isArray(modified) || modified.length === 0) {\n return [];\n }\n return modified;\n}\nfunction appendMutableCookies(headers, mutableCookies) {\n const modifiedCookieValues = getModifiedCookieValues(mutableCookies);\n if (modifiedCookieValues.length === 0) {\n return false;\n }\n // Return a new response that extends the response with\n // the modified cookies as fallbacks. `res` cookies\n // will still take precedence.\n const resCookies = new _cookies.ResponseCookies(headers);\n const returnedCookies = resCookies.getAll();\n // Set the modified cookies as fallbacks.\n for (const cookie of modifiedCookieValues){\n resCookies.set(cookie);\n }\n // Set the original cookies as the final values.\n for (const cookie of returnedCookies){\n resCookies.set(cookie);\n }\n return true;\n}\nclass MutableRequestCookiesAdapter {\n static wrap(cookies, onUpdateCookies) {\n const responseCookies = new _cookies.ResponseCookies(new Headers());\n for (const cookie of cookies.getAll()){\n responseCookies.set(cookie);\n }\n let modifiedValues = [];\n const modifiedCookies = new Set();\n const updateResponseCookies = ()=>{\n // TODO-APP: change method of getting workStore\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (workStore) {\n workStore.pathWasRevalidated = _actionrevalidationkind.ActionDidRevalidateStaticAndDynamic;\n }\n const allCookies = responseCookies.getAll();\n modifiedValues = allCookies.filter((c)=>modifiedCookies.has(c.name));\n if (onUpdateCookies) {\n const serializedCookies = [];\n for (const cookie of modifiedValues){\n const tempCookies = new _cookies.ResponseCookies(new Headers());\n tempCookies.set(cookie);\n serializedCookies.push(tempCookies.toString());\n }\n onUpdateCookies(serializedCookies);\n }\n };\n const wrappedCookies = new Proxy(responseCookies, {\n get (target, prop, receiver) {\n switch(prop){\n // A special symbol to get the modified cookie values\n case SYMBOL_MODIFY_COOKIE_VALUES:\n return modifiedValues;\n // TODO: Throw error if trying to set a cookie after the response\n // headers have been set.\n case 'delete':\n return function(...args) {\n modifiedCookies.add(typeof args[0] === 'string' ? args[0] : args[0].name);\n try {\n target.delete(...args);\n return wrappedCookies;\n } finally{\n updateResponseCookies();\n }\n };\n case 'set':\n return function(...args) {\n modifiedCookies.add(typeof args[0] === 'string' ? args[0] : args[0].name);\n try {\n target.set(...args);\n return wrappedCookies;\n } finally{\n updateResponseCookies();\n }\n };\n default:\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n }\n });\n return wrappedCookies;\n }\n}\nfunction createCookiesWithMutableAccessCheck(requestStore) {\n const wrappedCookies = new Proxy(requestStore.mutableCookies, {\n get (target, prop, receiver) {\n switch(prop){\n case 'delete':\n return function(...args) {\n ensureCookiesAreStillMutable(requestStore, 'cookies().delete');\n target.delete(...args);\n return wrappedCookies;\n };\n case 'set':\n return function(...args) {\n ensureCookiesAreStillMutable(requestStore, 'cookies().set');\n target.set(...args);\n return wrappedCookies;\n };\n default:\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n }\n });\n return wrappedCookies;\n}\nfunction areCookiesMutableInCurrentPhase(requestStore) {\n return requestStore.phase === 'action';\n}\n/** Ensure that cookies() starts throwing on mutation\n * if we changed phases and can no longer mutate.\n *\n * This can happen when going:\n * 'render' -> 'after'\n * 'action' -> 'render'\n * */ function ensureCookiesAreStillMutable(requestStore, _callingExpression) {\n if (!areCookiesMutableInCurrentPhase(requestStore)) {\n // TODO: maybe we can give a more precise error message based on callingExpression?\n throw new ReadonlyRequestCookiesError();\n }\n}\nfunction responseCookiesToRequestCookies(responseCookies) {\n const requestCookies = new _cookies.RequestCookies(new Headers());\n for (const cookie of responseCookies.getAll()){\n requestCookies.set(cookie);\n }\n return requestCookies;\n}\n\n//# sourceMappingURL=request-cookies.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vYWRhcHRlcnMvcmVxdWVzdC1jb29raWVzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQVNMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELGlCQUFpQixtQkFBTyxDQUFDLHVGQUFZO0FBQ3JDLGlCQUFpQixtQkFBTyxDQUFDLCtGQUFXO0FBQ3BDLGtDQUFrQyxtQkFBTyxDQUFDLGtHQUFpRDtBQUMzRixnQ0FBZ0MsbUJBQU8sQ0FBQyw4SEFBaUQ7QUFDekY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL0Rlc2t0b3AvZ2l0LXByb2plY3RzL2RpZ2lrYWxhLXRhaWx3aW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL3dlYi9zcGVjLWV4dGVuc2lvbi9hZGFwdGVycy9yZXF1ZXN0LWNvb2tpZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBNdXRhYmxlUmVxdWVzdENvb2tpZXNBZGFwdGVyOiBudWxsLFxuICAgIFJlYWRvbmx5UmVxdWVzdENvb2tpZXNFcnJvcjogbnVsbCxcbiAgICBSZXF1ZXN0Q29va2llc0FkYXB0ZXI6IG51bGwsXG4gICAgYXBwZW5kTXV0YWJsZUNvb2tpZXM6IG51bGwsXG4gICAgYXJlQ29va2llc011dGFibGVJbkN1cnJlbnRQaGFzZTogbnVsbCxcbiAgICBjcmVhdGVDb29raWVzV2l0aE11dGFibGVBY2Nlc3NDaGVjazogbnVsbCxcbiAgICBnZXRNb2RpZmllZENvb2tpZVZhbHVlczogbnVsbCxcbiAgICByZXNwb25zZUNvb2tpZXNUb1JlcXVlc3RDb29raWVzOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIE11dGFibGVSZXF1ZXN0Q29va2llc0FkYXB0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTXV0YWJsZVJlcXVlc3RDb29raWVzQWRhcHRlcjtcbiAgICB9LFxuICAgIFJlYWRvbmx5UmVxdWVzdENvb2tpZXNFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSZWFkb25seVJlcXVlc3RDb29raWVzRXJyb3I7XG4gICAgfSxcbiAgICBSZXF1ZXN0Q29va2llc0FkYXB0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUmVxdWVzdENvb2tpZXNBZGFwdGVyO1xuICAgIH0sXG4gICAgYXBwZW5kTXV0YWJsZUNvb2tpZXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gYXBwZW5kTXV0YWJsZUNvb2tpZXM7XG4gICAgfSxcbiAgICBhcmVDb29raWVzTXV0YWJsZUluQ3VycmVudFBoYXNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGFyZUNvb2tpZXNNdXRhYmxlSW5DdXJyZW50UGhhc2U7XG4gICAgfSxcbiAgICBjcmVhdGVDb29raWVzV2l0aE11dGFibGVBY2Nlc3NDaGVjazogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVDb29raWVzV2l0aE11dGFibGVBY2Nlc3NDaGVjaztcbiAgICB9LFxuICAgIGdldE1vZGlmaWVkQ29va2llVmFsdWVzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldE1vZGlmaWVkQ29va2llVmFsdWVzO1xuICAgIH0sXG4gICAgcmVzcG9uc2VDb29raWVzVG9SZXF1ZXN0Q29va2llczogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZXNwb25zZUNvb2tpZXNUb1JlcXVlc3RDb29raWVzO1xuICAgIH1cbn0pO1xuY29uc3QgX2Nvb2tpZXMgPSByZXF1aXJlKFwiLi4vY29va2llc1wiKTtcbmNvbnN0IF9yZWZsZWN0ID0gcmVxdWlyZShcIi4vcmVmbGVjdFwiKTtcbmNvbnN0IF93b3JrYXN5bmNzdG9yYWdlZXh0ZXJuYWwgPSByZXF1aXJlKFwiLi4vLi4vLi4vYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWxcIik7XG5jb25zdCBfYWN0aW9ucmV2YWxpZGF0aW9ua2luZCA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9zaGFyZWQvbGliL2FjdGlvbi1yZXZhbGlkYXRpb24ta2luZFwiKTtcbmNsYXNzIFJlYWRvbmx5UmVxdWVzdENvb2tpZXNFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3Rvcigpe1xuICAgICAgICBzdXBlcignQ29va2llcyBjYW4gb25seSBiZSBtb2RpZmllZCBpbiBhIFNlcnZlciBBY3Rpb24gb3IgUm91dGUgSGFuZGxlci4gUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvY29va2llcyNvcHRpb25zJyk7XG4gICAgfVxuICAgIHN0YXRpYyBjYWxsYWJsZSgpIHtcbiAgICAgICAgdGhyb3cgbmV3IFJlYWRvbmx5UmVxdWVzdENvb2tpZXNFcnJvcigpO1xuICAgIH1cbn1cbmNsYXNzIFJlcXVlc3RDb29raWVzQWRhcHRlciB7XG4gICAgc3RhdGljIHNlYWwoY29va2llcykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3h5KGNvb2tpZXMsIHtcbiAgICAgICAgICAgIGdldCAodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgICAgIHN3aXRjaChwcm9wKXtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2xlYXInOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdkZWxldGUnOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdzZXQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlYWRvbmx5UmVxdWVzdENvb2tpZXNFcnJvci5jYWxsYWJsZTtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG5jb25zdCBTWU1CT0xfTU9ESUZZX0NPT0tJRV9WQUxVRVMgPSBTeW1ib2wuZm9yKCduZXh0Lm11dGF0ZWQuY29va2llcycpO1xuZnVuY3Rpb24gZ2V0TW9kaWZpZWRDb29raWVWYWx1ZXMoY29va2llcykge1xuICAgIGNvbnN0IG1vZGlmaWVkID0gY29va2llc1tTWU1CT0xfTU9ESUZZX0NPT0tJRV9WQUxVRVNdO1xuICAgIGlmICghbW9kaWZpZWQgfHwgIUFycmF5LmlzQXJyYXkobW9kaWZpZWQpIHx8IG1vZGlmaWVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiBtb2RpZmllZDtcbn1cbmZ1bmN0aW9uIGFwcGVuZE11dGFibGVDb29raWVzKGhlYWRlcnMsIG11dGFibGVDb29raWVzKSB7XG4gICAgY29uc3QgbW9kaWZpZWRDb29raWVWYWx1ZXMgPSBnZXRNb2RpZmllZENvb2tpZVZhbHVlcyhtdXRhYmxlQ29va2llcyk7XG4gICAgaWYgKG1vZGlmaWVkQ29va2llVmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIFJldHVybiBhIG5ldyByZXNwb25zZSB0aGF0IGV4dGVuZHMgdGhlIHJlc3BvbnNlIHdpdGhcbiAgICAvLyB0aGUgbW9kaWZpZWQgY29va2llcyBhcyBmYWxsYmFja3MuIGByZXNgIGNvb2tpZXNcbiAgICAvLyB3aWxsIHN0aWxsIHRha2UgcHJlY2VkZW5jZS5cbiAgICBjb25zdCByZXNDb29raWVzID0gbmV3IF9jb29raWVzLlJlc3BvbnNlQ29va2llcyhoZWFkZXJzKTtcbiAgICBjb25zdCByZXR1cm5lZENvb2tpZXMgPSByZXNDb29raWVzLmdldEFsbCgpO1xuICAgIC8vIFNldCB0aGUgbW9kaWZpZWQgY29va2llcyBhcyBmYWxsYmFja3MuXG4gICAgZm9yIChjb25zdCBjb29raWUgb2YgbW9kaWZpZWRDb29raWVWYWx1ZXMpe1xuICAgICAgICByZXNDb29raWVzLnNldChjb29raWUpO1xuICAgIH1cbiAgICAvLyBTZXQgdGhlIG9yaWdpbmFsIGNvb2tpZXMgYXMgdGhlIGZpbmFsIHZhbHVlcy5cbiAgICBmb3IgKGNvbnN0IGNvb2tpZSBvZiByZXR1cm5lZENvb2tpZXMpe1xuICAgICAgICByZXNDb29raWVzLnNldChjb29raWUpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmNsYXNzIE11dGFibGVSZXF1ZXN0Q29va2llc0FkYXB0ZXIge1xuICAgIHN0YXRpYyB3cmFwKGNvb2tpZXMsIG9uVXBkYXRlQ29va2llcykge1xuICAgICAgICBjb25zdCByZXNwb25zZUNvb2tpZXMgPSBuZXcgX2Nvb2tpZXMuUmVzcG9uc2VDb29raWVzKG5ldyBIZWFkZXJzKCkpO1xuICAgICAgICBmb3IgKGNvbnN0IGNvb2tpZSBvZiBjb29raWVzLmdldEFsbCgpKXtcbiAgICAgICAgICAgIHJlc3BvbnNlQ29va2llcy5zZXQoY29va2llKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbW9kaWZpZWRWYWx1ZXMgPSBbXTtcbiAgICAgICAgY29uc3QgbW9kaWZpZWRDb29raWVzID0gbmV3IFNldCgpO1xuICAgICAgICBjb25zdCB1cGRhdGVSZXNwb25zZUNvb2tpZXMgPSAoKT0+e1xuICAgICAgICAgICAgLy8gVE9ETy1BUFA6IGNoYW5nZSBtZXRob2Qgb2YgZ2V0dGluZyB3b3JrU3RvcmVcbiAgICAgICAgICAgIGNvbnN0IHdvcmtTdG9yZSA9IF93b3JrYXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya0FzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgICAgICAgICAgaWYgKHdvcmtTdG9yZSkge1xuICAgICAgICAgICAgICAgIHdvcmtTdG9yZS5wYXRoV2FzUmV2YWxpZGF0ZWQgPSBfYWN0aW9ucmV2YWxpZGF0aW9ua2luZC5BY3Rpb25EaWRSZXZhbGlkYXRlU3RhdGljQW5kRHluYW1pYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFsbENvb2tpZXMgPSByZXNwb25zZUNvb2tpZXMuZ2V0QWxsKCk7XG4gICAgICAgICAgICBtb2RpZmllZFZhbHVlcyA9IGFsbENvb2tpZXMuZmlsdGVyKChjKT0+bW9kaWZpZWRDb29raWVzLmhhcyhjLm5hbWUpKTtcbiAgICAgICAgICAgIGlmIChvblVwZGF0ZUNvb2tpZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZXJpYWxpemVkQ29va2llcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY29va2llIG9mIG1vZGlmaWVkVmFsdWVzKXtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVtcENvb2tpZXMgPSBuZXcgX2Nvb2tpZXMuUmVzcG9uc2VDb29raWVzKG5ldyBIZWFkZXJzKCkpO1xuICAgICAgICAgICAgICAgICAgICB0ZW1wQ29va2llcy5zZXQoY29va2llKTtcbiAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZENvb2tpZXMucHVzaCh0ZW1wQ29va2llcy50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25VcGRhdGVDb29raWVzKHNlcmlhbGl6ZWRDb29raWVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgd3JhcHBlZENvb2tpZXMgPSBuZXcgUHJveHkocmVzcG9uc2VDb29raWVzLCB7XG4gICAgICAgICAgICBnZXQgKHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2gocHJvcCl7XG4gICAgICAgICAgICAgICAgICAgIC8vIEEgc3BlY2lhbCBzeW1ib2wgdG8gZ2V0IHRoZSBtb2RpZmllZCBjb29raWUgdmFsdWVzXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgU1lNQk9MX01PRElGWV9DT09LSUVfVkFMVUVTOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZGlmaWVkVmFsdWVzO1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBUaHJvdyBlcnJvciBpZiB0cnlpbmcgdG8gc2V0IGEgY29va2llIGFmdGVyIHRoZSByZXNwb25zZVxuICAgICAgICAgICAgICAgICAgICAvLyBoZWFkZXJzIGhhdmUgYmVlbiBzZXQuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2RlbGV0ZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oLi4uYXJncykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkQ29va2llcy5hZGQodHlwZW9mIGFyZ3NbMF0gPT09ICdzdHJpbmcnID8gYXJnc1swXSA6IGFyZ3NbMF0ubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmRlbGV0ZSguLi5hcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWRDb29raWVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlUmVzcG9uc2VDb29raWVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2V0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiguLi5hcmdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWRDb29raWVzLmFkZCh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycgPyBhcmdzWzBdIDogYXJnc1swXS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc2V0KC4uLmFyZ3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZENvb2tpZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVSZXNwb25zZUNvb2tpZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gd3JhcHBlZENvb2tpZXM7XG4gICAgfVxufVxuZnVuY3Rpb24gY3JlYXRlQ29va2llc1dpdGhNdXRhYmxlQWNjZXNzQ2hlY2socmVxdWVzdFN0b3JlKSB7XG4gICAgY29uc3Qgd3JhcHBlZENvb2tpZXMgPSBuZXcgUHJveHkocmVxdWVzdFN0b3JlLm11dGFibGVDb29raWVzLCB7XG4gICAgICAgIGdldCAodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgc3dpdGNoKHByb3Ape1xuICAgICAgICAgICAgICAgIGNhc2UgJ2RlbGV0ZSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiguLi5hcmdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnN1cmVDb29raWVzQXJlU3RpbGxNdXRhYmxlKHJlcXVlc3RTdG9yZSwgJ2Nvb2tpZXMoKS5kZWxldGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5kZWxldGUoLi4uYXJncyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZENvb2tpZXM7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY2FzZSAnc2V0JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKC4uLmFyZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuc3VyZUNvb2tpZXNBcmVTdGlsbE11dGFibGUocmVxdWVzdFN0b3JlLCAnY29va2llcygpLnNldCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnNldCguLi5hcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkQ29va2llcztcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3JlZmxlY3QuUmVmbGVjdEFkYXB0ZXIuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHdyYXBwZWRDb29raWVzO1xufVxuZnVuY3Rpb24gYXJlQ29va2llc011dGFibGVJbkN1cnJlbnRQaGFzZShyZXF1ZXN0U3RvcmUpIHtcbiAgICByZXR1cm4gcmVxdWVzdFN0b3JlLnBoYXNlID09PSAnYWN0aW9uJztcbn1cbi8qKiBFbnN1cmUgdGhhdCBjb29raWVzKCkgc3RhcnRzIHRocm93aW5nIG9uIG11dGF0aW9uXG4gKiBpZiB3ZSBjaGFuZ2VkIHBoYXNlcyBhbmQgY2FuIG5vIGxvbmdlciBtdXRhdGUuXG4gKlxuICogVGhpcyBjYW4gaGFwcGVuIHdoZW4gZ29pbmc6XG4gKiAgICdyZW5kZXInIC0+ICdhZnRlcidcbiAqICAgJ2FjdGlvbicgLT4gJ3JlbmRlcidcbiAqICovIGZ1bmN0aW9uIGVuc3VyZUNvb2tpZXNBcmVTdGlsbE11dGFibGUocmVxdWVzdFN0b3JlLCBfY2FsbGluZ0V4cHJlc3Npb24pIHtcbiAgICBpZiAoIWFyZUNvb2tpZXNNdXRhYmxlSW5DdXJyZW50UGhhc2UocmVxdWVzdFN0b3JlKSkge1xuICAgICAgICAvLyBUT0RPOiBtYXliZSB3ZSBjYW4gZ2l2ZSBhIG1vcmUgcHJlY2lzZSBlcnJvciBtZXNzYWdlIGJhc2VkIG9uIGNhbGxpbmdFeHByZXNzaW9uP1xuICAgICAgICB0aHJvdyBuZXcgUmVhZG9ubHlSZXF1ZXN0Q29va2llc0Vycm9yKCk7XG4gICAgfVxufVxuZnVuY3Rpb24gcmVzcG9uc2VDb29raWVzVG9SZXF1ZXN0Q29va2llcyhyZXNwb25zZUNvb2tpZXMpIHtcbiAgICBjb25zdCByZXF1ZXN0Q29va2llcyA9IG5ldyBfY29va2llcy5SZXF1ZXN0Q29va2llcyhuZXcgSGVhZGVycygpKTtcbiAgICBmb3IgKGNvbnN0IGNvb2tpZSBvZiByZXNwb25zZUNvb2tpZXMuZ2V0QWxsKCkpe1xuICAgICAgICByZXF1ZXN0Q29va2llcy5zZXQoY29va2llKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcXVlc3RDb29raWVzO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXF1ZXN0LWNvb2tpZXMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/server/web/spec-extension/cookies.js":
|
||
/*!*********************************************************************!*\
|
||
!*** ./node_modules/next/dist/server/web/spec-extension/cookies.js ***!
|
||
\*********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n RequestCookies: function() {\n return _cookies.RequestCookies;\n },\n ResponseCookies: function() {\n return _cookies.ResponseCookies;\n },\n stringifyCookie: function() {\n return _cookies.stringifyCookie;\n }\n});\nconst _cookies = __webpack_require__(/*! next/dist/compiled/@edge-runtime/cookies */ \"(ssr)/./node_modules/next/dist/compiled/@edge-runtime/cookies/index.js\");\n\n//# sourceMappingURL=cookies.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vY29va2llcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FJTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELGlCQUFpQixtQkFBTyxDQUFDLHdIQUEwQzs7QUFFbkUiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9EZXNrdG9wL2dpdC1wcm9qZWN0cy9kaWdpa2FsYS10YWlsd2luZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vY29va2llcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIFJlcXVlc3RDb29raWVzOiBudWxsLFxuICAgIFJlc3BvbnNlQ29va2llczogbnVsbCxcbiAgICBzdHJpbmdpZnlDb29raWU6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgUmVxdWVzdENvb2tpZXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2Nvb2tpZXMuUmVxdWVzdENvb2tpZXM7XG4gICAgfSxcbiAgICBSZXNwb25zZUNvb2tpZXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2Nvb2tpZXMuUmVzcG9uc2VDb29raWVzO1xuICAgIH0sXG4gICAgc3RyaW5naWZ5Q29va2llOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9jb29raWVzLnN0cmluZ2lmeUNvb2tpZTtcbiAgICB9XG59KTtcbmNvbnN0IF9jb29raWVzID0gcmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9AZWRnZS1ydW50aW1lL2Nvb2tpZXNcIik7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvb2tpZXMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/web/spec-extension/cookies.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/action-revalidation-kind.js":
|
||
/*!***********************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/action-revalidation-kind.js ***!
|
||
\***********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n ActionDidNotRevalidate: function() {\n return ActionDidNotRevalidate;\n },\n ActionDidRevalidateDynamicOnly: function() {\n return ActionDidRevalidateDynamicOnly;\n },\n ActionDidRevalidateStaticAndDynamic: function() {\n return ActionDidRevalidateStaticAndDynamic;\n }\n});\nconst ActionDidNotRevalidate = 0;\nconst ActionDidRevalidateStaticAndDynamic = 1;\nconst ActionDidRevalidateDynamicOnly = 2; //# sourceMappingURL=action-revalidation-kind.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvYWN0aW9uLXJldmFsaWRhdGlvbi1raW5kLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUVhQSxzQkFBc0I7ZUFBdEJBOztJQUVBQyw4QkFBOEI7ZUFBOUJBOztJQURBQyxtQ0FBbUM7ZUFBbkNBOzs7QUFETixNQUFNRix5QkFBeUI7QUFDL0IsTUFBTUUsc0NBQXNDO0FBQzVDLE1BQU1ELGlDQUFpQyIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9zaGFyZWQvbGliL2FjdGlvbi1yZXZhbGlkYXRpb24ta2luZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBBY3Rpb25SZXZhbGlkYXRpb25LaW5kID0gMCB8IDEgfCAyXG5cbmV4cG9ydCBjb25zdCBBY3Rpb25EaWROb3RSZXZhbGlkYXRlID0gMFxuZXhwb3J0IGNvbnN0IEFjdGlvbkRpZFJldmFsaWRhdGVTdGF0aWNBbmREeW5hbWljID0gMVxuZXhwb3J0IGNvbnN0IEFjdGlvbkRpZFJldmFsaWRhdGVEeW5hbWljT25seSA9IDJcbiJdLCJuYW1lcyI6WyJBY3Rpb25EaWROb3RSZXZhbGlkYXRlIiwiQWN0aW9uRGlkUmV2YWxpZGF0ZUR5bmFtaWNPbmx5IiwiQWN0aW9uRGlkUmV2YWxpZGF0ZVN0YXRpY0FuZER5bmFtaWMiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/action-revalidation-kind.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/app-router-types.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/app-router-types.js ***!
|
||
\***************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * App Router types - Client-safe types for the Next.js App Router\n *\n * This file contains type definitions that can be safely imported\n * by both client-side and server-side code without circular dependencies.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"PrefetchHint\", ({\n enumerable: true,\n get: function() {\n return PrefetchHint;\n }\n}));\nvar PrefetchHint = /*#__PURE__*/ function(PrefetchHint) {\n // This segment has a runtime prefetch enabled (via unstable_instant with\n // prefetch: 'runtime'). Per-segment only, does not propagate to ancestors.\n PrefetchHint[PrefetchHint[\"HasRuntimePrefetch\"] = 1] = \"HasRuntimePrefetch\";\n // This segment or one of its descendants has an instant config defined\n // (any truthy unstable_instant, regardless of prefetch mode). Propagates\n // upward so the root segment reflects the entire subtree.\n PrefetchHint[PrefetchHint[\"SubtreeHasInstant\"] = 2] = \"SubtreeHasInstant\";\n // This segment itself has a loading.tsx boundary.\n PrefetchHint[PrefetchHint[\"SegmentHasLoadingBoundary\"] = 4] = \"SegmentHasLoadingBoundary\";\n // A descendant segment (but not this one) has a loading.tsx boundary.\n // Propagates upward so the root reflects the entire subtree.\n PrefetchHint[PrefetchHint[\"SubtreeHasLoadingBoundary\"] = 8] = \"SubtreeHasLoadingBoundary\";\n // This segment is the root layout of the application.\n PrefetchHint[PrefetchHint[\"IsRootLayout\"] = 16] = \"IsRootLayout\";\n // This segment's response includes its parent's data inlined into it.\n // Set at build time by the segment size measurement pass.\n PrefetchHint[PrefetchHint[\"ParentInlinedIntoSelf\"] = 32] = \"ParentInlinedIntoSelf\";\n // This segment's data is inlined into one of its children — don't fetch\n // it separately. Set at build time by the segment size measurement pass.\n PrefetchHint[PrefetchHint[\"InlinedIntoChild\"] = 64] = \"InlinedIntoChild\";\n // On a __PAGE__: this page's response includes the head (metadata/viewport)\n // at the end of its SegmentPrefetch[] array.\n PrefetchHint[PrefetchHint[\"HeadInlinedIntoSelf\"] = 128] = \"HeadInlinedIntoSelf\";\n // On the root hint node: the head was NOT inlined into any page — fetch\n // it separately. Absence of this bit means the head is bundled into a page.\n PrefetchHint[PrefetchHint[\"HeadOutlined\"] = 256] = \"HeadOutlined\";\n return PrefetchHint;\n}({}); //# sourceMappingURL=app-router-types.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvYXBwLXJvdXRlci10eXBlcy5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Q0FLQzs7OztnREFxS2lCQTs7O2VBQUFBOzs7QUFBWCxJQUFXQSxlQUFBQSxXQUFBQSxHQUFBQSxTQUFBQSxZQUFBQTtJQUNoQix5RUFBeUU7SUFDekUsMkVBQTJFOztJQUUzRSx1RUFBdUU7SUFDdkUseUVBQXlFO0lBQ3pFLDBEQUEwRDs7SUFFMUQsa0RBQWtEOztJQUVsRCxzRUFBc0U7SUFDdEUsNkRBQTZEOztJQUU3RCxzREFBc0Q7O0lBRXRELHNFQUFzRTtJQUN0RSwwREFBMEQ7O0lBRTFELHdFQUF3RTtJQUN4RSx5RUFBeUU7O0lBRXpFLDRFQUE0RTtJQUM1RSw2Q0FBNkM7O0lBRTdDLHdFQUF3RTtJQUN4RSw0RUFBNEU7O1dBekI1REEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9zcmMvc2hhcmVkL2xpYi9hcHAtcm91dGVyLXR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXBwIFJvdXRlciB0eXBlcyAtIENsaWVudC1zYWZlIHR5cGVzIGZvciB0aGUgTmV4dC5qcyBBcHAgUm91dGVyXG4gKlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIHR5cGUgZGVmaW5pdGlvbnMgdGhhdCBjYW4gYmUgc2FmZWx5IGltcG9ydGVkXG4gKiBieSBib3RoIGNsaWVudC1zaWRlIGFuZCBzZXJ2ZXItc2lkZSBjb2RlIHdpdGhvdXQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLlxuICovXG5cbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5leHBvcnQgdHlwZSBMb2FkaW5nTW9kdWxlRGF0YSA9XG4gIHwgW1JlYWN0LkpTWC5FbGVtZW50LCBSZWFjdC5SZWFjdE5vZGUsIFJlYWN0LlJlYWN0Tm9kZV1cbiAgfCBudWxsXG5cbmltcG9ydCB0eXBlIHsgVmFyeVBhcmFtc1RoZW5hYmxlIH0gZnJvbSAnLi9zZWdtZW50LWNhY2hlL3ZhcnktcGFyYW1zLWRlY29kaW5nJ1xuXG4vKiogdmlld3BvcnQgbWV0YWRhdGEgbm9kZSAqL1xuZXhwb3J0IHR5cGUgSGVhZERhdGEgPSBSZWFjdC5SZWFjdE5vZGVcblxuLyoqXG4gKiBDYWNoZSBub2RlIHVzZWQgaW4gYXBwLXJvdXRlciAvIGxheW91dC1yb3V0ZXIuXG4gKi9cblxuZXhwb3J0IHR5cGUgQ2FjaGVOb2RlID0ge1xuICAvKipcbiAgICogV2hlbiByc2MgaXMgbm90IG51bGwsIGl0IHJlcHJlc2VudHMgdGhlIFJTQyBkYXRhIGZvciB0aGVcbiAgICogY29ycmVzcG9uZGluZyBzZWdtZW50LlxuICAgKlxuICAgKiBgbnVsbGAgaXMgYSB2YWxpZCBSZWFjdCBOb2RlIGJ1dCBiZWNhdXNlIHNlZ21lbnQgZGF0YSBpcyBhbHdheXMgYVxuICAgKiA8TGF5b3V0Um91dGVyPiBjb21wb25lbnQsIHdlIGNhbiB1c2UgYG51bGxgIHRvIHJlcHJlc2VudCBlbXB0eS4gV2hlbiBpdCBpc1xuICAgKiBudWxsLCBpdCByZXByZXNlbnRzIG1pc3NpbmcgZGF0YSwgYW5kIHJlbmRlcmluZyBzaG91bGQgc3VzcGVuZC5cbiAgICovXG4gIHJzYzogUmVhY3QuUmVhY3ROb2RlXG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgYSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgc2VnbWVudCB0aGF0IGNhbiBiZSBzaG93biBpbW1lZGlhdGVseSxcbiAgICogYW5kIG1heSBvciBtYXkgbm90IGNvbnRhaW4gZHluYW1pYyBob2xlcy4gSXQncyBwcmVmZXRjaGVkIGJlZm9yZSBhXG4gICAqIG5hdmlnYXRpb24gb2NjdXJzLlxuICAgKlxuICAgKiBEdXJpbmcgcmVuZGVyaW5nLCB3ZSB3aWxsIGNob29zZSB3aGV0aGVyIHRvIHJlbmRlciBgcnNjYCBvciBgcHJlZmV0Y2hSc2NgXG4gICAqIHdpdGggYHVzZURlZmVycmVkVmFsdWVgLiBBcyB3aXRoIHRoZSBgcnNjYCBmaWVsZCwgYSB2YWx1ZSBvZiBgbnVsbGAgbWVhbnNcbiAgICogbm8gdmFsdWUgd2FzIHByb3ZpZGVkLiBJbiB0aGlzIGNhc2UsIHRoZSBMYXlvdXRSb3V0ZXIgd2lsbCBnbyBzdHJhaWdodCB0b1xuICAgKiByZW5kZXJpbmcgdGhlIGByc2NgIHZhbHVlOyBpZiB0aGF0IG9uZSBpcyBhbHNvIG1pc3NpbmcsIGl0IHdpbGwgc3VzcGVuZCBhbmRcbiAgICogdHJpZ2dlciBhIGxhenkgZmV0Y2guXG4gICAqL1xuICBwcmVmZXRjaFJzYzogUmVhY3QuUmVhY3ROb2RlXG5cbiAgcHJlZmV0Y2hIZWFkOiBIZWFkRGF0YSB8IG51bGxcblxuICBoZWFkOiBIZWFkRGF0YVxuXG4gIHNsb3RzOiBSZWNvcmQ8c3RyaW5nLCBDYWNoZU5vZGU+IHwgbnVsbFxuXG4gIC8qKlxuICAgKiBBIHNoYXJlZCBtdXRhYmxlIHJlZiB0aGF0IHRyYWNrcyB3aGV0aGVyIHRoaXMgc2VnbWVudCBzaG91bGQgYmUgc2Nyb2xsZWRcbiAgICogdG8uIEFsbCBuZXcgc2VnbWVudHMgY3JlYXRlZCBkdXJpbmcgYSBzaW5nbGUgbmF2aWdhdGlvbiBzaGFyZSB0aGUgc2FtZVxuICAgKiByZWYuIFdoZW4gYW55IHNlZ21lbnQncyBzY3JvbGwgaGFuZGxlciBmaXJlcywgaXQgc2V0cyBgY3VycmVudGAgdG9cbiAgICogYGZhbHNlYCBzbyBubyBvdGhlciBzZWdtZW50IHNjcm9sbHMgZm9yIHRoZSBzYW1lIG5hdmlnYXRpb24uXG4gICAqXG4gICAqIGBudWxsYCBtZWFucyB0aGlzIHNlZ21lbnQgaXMgbm90IGEgc2Nyb2xsIHRhcmdldCAoZS5nLiwgYSByZXVzZWQgc2hhcmVkXG4gICAqIGxheW91dCBzZWdtZW50KS5cbiAgICovXG4gIHNjcm9sbFJlZjogU2Nyb2xsUmVmIHwgbnVsbFxufVxuXG4vKipcbiAqIEEgbXV0YWJsZSByZWYgc2hhcmVkIGFjcm9zcyBhbGwgbmV3IHNlZ21lbnRzIGNyZWF0ZWQgZHVyaW5nIGEgc2luZ2xlXG4gKiBuYXZpZ2F0aW9uLiBVc2VkIHRvIGVuc3VyZSB0aGF0IG9ubHkgb25lIHNlZ21lbnQgc2Nyb2xscyBwZXIgbmF2aWdhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgU2Nyb2xsUmVmID0geyBjdXJyZW50OiBib29sZWFuIH1cblxuZXhwb3J0IHR5cGUgRHluYW1pY1BhcmFtVHlwZXMgPVxuICB8ICdjYXRjaGFsbCdcbiAgfCAnY2F0Y2hhbGwtaW50ZXJjZXB0ZWQtKC4uKSguLiknXG4gIHwgJ2NhdGNoYWxsLWludGVyY2VwdGVkLSguKSdcbiAgfCAnY2F0Y2hhbGwtaW50ZXJjZXB0ZWQtKC4uKSdcbiAgfCAnY2F0Y2hhbGwtaW50ZXJjZXB0ZWQtKC4uLiknXG4gIHwgJ29wdGlvbmFsLWNhdGNoYWxsJ1xuICB8ICdkeW5hbWljJ1xuICB8ICdkeW5hbWljLWludGVyY2VwdGVkLSguLikoLi4pJ1xuICB8ICdkeW5hbWljLWludGVyY2VwdGVkLSguKSdcbiAgfCAnZHluYW1pYy1pbnRlcmNlcHRlZC0oLi4pJ1xuICB8ICdkeW5hbWljLWludGVyY2VwdGVkLSguLi4pJ1xuXG5leHBvcnQgdHlwZSBEeW5hbWljUGFyYW1UeXBlc1Nob3J0ID1cbiAgfCAnYydcbiAgfCAnY2koLi4pKC4uKSdcbiAgfCAnY2koLiknXG4gIHwgJ2NpKC4uKSdcbiAgfCAnY2koLi4uKSdcbiAgfCAnb2MnXG4gIHwgJ2QnXG4gIHwgJ2RpKC4uKSguLiknXG4gIHwgJ2RpKC4pJ1xuICB8ICdkaSguLiknXG4gIHwgJ2RpKC4uLiknXG5cbi8vIFRoZSB0dXBsZSBmb3JtIG9mIGEgc2VnbWVudCwgdXNlZCBmb3IgZHluYW1pYyByb3V0ZSBwYXJhbXNcbmV4cG9ydCB0eXBlIER5bmFtaWNTZWdtZW50VHVwbGUgPSBbXG4gIC8vIFBhcmFtIG5hbWVcbiAgcGFyYW1OYW1lOiBzdHJpbmcsXG4gIC8vIFBhcmFtIGNhY2hlIGtleSAoYWxtb3N0IHRoZSBzYW1lIGFzIHRoZSB2YWx1ZSwgYnV0IGFycmF5cyBhcmVcbiAgLy8gY29uY2F0ZW5hdGVkIGludG8gc3RyaW5ncylcbiAgLy8gVE9ETzogV2Ugc2hvdWxkIGNoYW5nZSB0aGlzIHRvIGp1c3QgYmUgdGhlIHZhbHVlLiBDdXJyZW50bHkgd2UgY29udmVydFxuICAvLyBpdCBiYWNrIHRvIGEgdmFsdWUgd2hlbiBwYXNzaW5nIHRvIHVzZVBhcmFtcy4gSXQgb25seSBuZWVkcyB0byBiZVxuICAvLyBhIHN0cmluZyB3aGVuIGNvbnZlcnRlZCB0byBhIGEgY2FjaGUga2V5LCBidXQgdGhhdCBkb2Vzbid0IG1lYW4gd2VcbiAgLy8gbmVlZCB0byBzdG9yZSBpdCBhcyB0aGF0IHJlcHJlc2VudGF0aW9uLlxuICBwYXJhbUNhY2hlS2V5OiBzdHJpbmcsXG4gIC8vIER5bmFtaWMgcGFyYW0gdHlwZVxuICBkeW5hbWljUGFyYW1UeXBlOiBEeW5hbWljUGFyYW1UeXBlc1Nob3J0LFxuICAvLyBTdGF0aWMgc2libGluZyBzZWdtZW50cyBhdCB0aGUgc2FtZSBVUkwgbGV2ZWwuIFVzZWQgYnkgdGhlIGNsaWVudFxuICAvLyByb3V0ZXIgdG8gZGV0ZXJtaW5lIGlmIGEgcHJlZmV0Y2ggY2FuIGJlIHJldXNlZCB3aGVuIG5hdmlnYXRpbmcgdG9cbiAgLy8gYSBzdGF0aWMgc2libGluZyBvZiBhIGR5bmFtaWMgcm91dGUuIEZvciBleGFtcGxlLCBpZiB0aGUgcm91dGUgaXNcbiAgLy8gL3Byb2R1Y3RzL1tpZF0gYW5kIHRoZXJlJ3MgYWxzbyAvcHJvZHVjdHMvc2FsZSwgdGhlbiBzdGF0aWNTaWJsaW5nc1xuICAvLyB3b3VsZCBiZSBbJ3NhbGUnXS4gbnVsbCBtZWFucyB0aGUgc2libGluZ3MgYXJlIHVua25vd24gKGUuZy4gaW5cbiAgLy8gd2VicGFjayBkZXYgbW9kZSkuXG4gIHN0YXRpY1NpYmxpbmdzOiByZWFkb25seSBzdHJpbmdbXSB8IG51bGwsXG5dXG5cbmV4cG9ydCB0eXBlIFNlZ21lbnQgPSBzdHJpbmcgfCBEeW5hbWljU2VnbWVudFR1cGxlXG5cbi8qKlxuICogUm91dGVyIHN0YXRlXG4gKi9cbmV4cG9ydCB0eXBlIEZsaWdodFJvdXRlclN0YXRlID0gW1xuICBzZWdtZW50OiBTZWdtZW50LFxuICBwYXJhbGxlbFJvdXRlczogeyBbcGFyYWxsZWxSb3V0ZXJLZXk6IHN0cmluZ106IEZsaWdodFJvdXRlclN0YXRlIH0sXG4gIHJlZnJlc2hTdGF0ZT86IENvbXByZXNzZWRSZWZyZXNoU3RhdGUgfCBudWxsLFxuICAvKipcbiAgICogLSBcInJlZmV0Y2hcIiBpcyB1c2VkIGR1cmluZyBhIHJlcXVlc3QgdG8gaW5mb3JtIHRoZSBzZXJ2ZXIgd2hlcmUgcmVuZGVyaW5nXG4gICAqICAgc2hvdWxkIHN0YXJ0IGZyb20uXG4gICAqXG4gICAqIC0gXCJpbnNpZGUtc2hhcmVkLWxheW91dFwiIGlzIHVzZWQgZHVyaW5nIGEgcHJlZmV0Y2ggcmVxdWVzdCB0byBpbmZvcm0gdGhlXG4gICAqICAgc2VydmVyIHRoYXQgZXZlbiBpZiB0aGUgc2VnbWVudCBtYXRjaGVzLCBpdCBzaG91bGQgYmUgdHJlYXRlZCBhcyBpZiBpdCdzXG4gICAqICAgd2l0aGluIHRoZSBcIm5ld1wiIHBhcnQgb2YgYSBuYXZpZ2F0aW9uIOKAlCBpbnNpZGUgdGhlIHNoYXJlZCBsYXlvdXQuIElmXG4gICAqICAgdGhlIHNlZ21lbnQgZG9lc24ndCBtYXRjaCwgdGhlbiBpdCBoYXMgbm8gZWZmZWN0LCBzaW5jZSBpdCB3b3VsZCBiZVxuICAgKiAgIHRyZWF0ZWQgYXMgbmV3IHJlZ2FyZGxlc3MuIElmIGl0IGRvZXMgbWF0Y2gsIHRob3VnaCwgdGhlIHNlcnZlciBkb2VzIG5vdFxuICAgKiAgIG5lZWQgdG8gcmVuZGVyIGl0LCBiZWNhdXNlIHRoZSBjbGllbnQgYWxyZWFkeSBoYXMgaXQuXG4gICAqXG4gICAqIC0gXCJtZXRhZGF0YS1vbmx5XCIgaW5zdHJ1Y3RzIHRoZSBzZXJ2ZXIgdG8gc2tpcCByZW5kZXJpbmcgdGhlIHNlZ21lbnRzIGFuZFxuICAgKiAgIG9ubHkgc2VuZCB0aGUgaGVhZCBkYXRhLlxuICAgKlxuICAgKiAgIEEgYml0IGNvbmZ1c2luZywgYnV0IHRoYXQncyBiZWNhdXNlIGl0IGhhcyBvbmx5IG9uZSBleHRyZW1lbHkgbmFycm93IHVzZVxuICAgKiAgIGNhc2Ug4oCUIGR1cmluZyBhIG5vbi1QUFIgcHJlZmV0Y2gsIHRoZSBzZXJ2ZXIgdXNlcyBpdCB0byBmaW5kIHRoZSBmaXJzdFxuICAgKiAgIGxvYWRpbmcgYm91bmRhcnkgYmVuZWF0aCBhIHNoYXJlZCBsYXlvdXQuXG4gICAqXG4gICAqICAgVE9ETzogV2Ugc2hvdWxkIHJldGhpbmsgdGhlIHByb3RvY29sIGZvciBkeW5hbWljIHJlcXVlc3RzLiBJdCBtaWdodCBub3RcbiAgICogICBtYWtlIHNlbnNlIGZvciB0aGUgY2xpZW50IHRvIHNlbmQgYSBGbGlnaHRSb3V0ZXJTdGF0ZSwgc2luY2UgdGhpcyB0eXBlIGlzXG4gICAqICAgb3ZlcmxvYWRlZCB3aXRoIGNvbmNlcm5zLlxuICAgKi9cbiAgcmVmcmVzaD86ICdyZWZldGNoJyB8ICdpbnNpZGUtc2hhcmVkLWxheW91dCcgfCAnbWV0YWRhdGEtb25seScgfCBudWxsLFxuICAvKipcbiAgICogQml0bWFzayBvZiBQcmVmZXRjaEhpbnQgZmxhZ3MuIEVuY29kZXMgcm91dGUgc3RydWN0dXJlIG1ldGFkYXRhOlxuICAgKiByb290IGxheW91dCwgbG9hZGluZyBib3VuZGFyaWVzLCBpbnN0YW50IGNvbmZpZ3MsIGFuZCBydW50aW1lIHByZWZldGNoXG4gICAqIGhpbnRzLiBPbmx5IHNldCB3aGVuIG5vbi16ZXJvLlxuICAgKi9cbiAgcHJlZmV0Y2hIaW50cz86IG51bWJlcixcbl1cblxuLyoqXG4gKiBXaGVuIHJlbmRlcmluZyBhIHBhcmFsbGVsIHJvdXRlLCBzb21lIG9mIHRoZSBwYXJhbGxlbCBwYXRocyBtYXkgbm90IG1hdGNoXG4gKiB0aGUgY3VycmVudCBVUkwuIEluIHRoYXQgY2FzZSwgdGhlIE5leHQgY2xpZW50IGhhcyB0byByZW5kZXIgc29tZXRoaW5nLFxuICogc28gaXQgd2lsbCByZW5kZXIgd2hpY2hldmVyIHdhcyB0aGUgbGFzdCByb3V0ZSB0byBtYXRjaCB0aGF0IHNsb3QuIFdlIHVzZVxuICogdGhpcyB0eXBlIHRvIHRyYWNrIHdoZW4gdGhpcyBoYXMgaGFwcGVuZWQuIEl0J3MgYSB0dXBsZSBvZiB0aGUgb3JpZ2luYWxcbiAqIFVSTCB0aGF0IHdhcyB1c2VkIHRvIGZldGNoIHRoZSBzZWdtZW50LCBhbmQgdGhlIChwb3NzaWJseSByZXdyaXR0ZW4pIHNlYXJjaFxuICogcXVlcnkgdGhhdCB3YXMgcmVuZGVyZWQgYnkgdGhlIHNlcnZlci4gVGhlIFVSTCBpcyBuZWVkZWQgd2hlbiBwZXJmb3JtaW5nXG4gKiBhIHJlZnJlc2ggb2YgdGhlIHNlZ21lbnQsIGFuZCB0aGUgc2VhcmNoIHF1ZXJ5IGlzIG5lZWRlZCBmb3IgbG9va2luZyB1cFxuICogbWF0Y2hpbmcgZW50cmllcyBpbiB0aGUgc2VnbWVudCBjYWNoZS5cbiAqL1xuZXhwb3J0IHR5cGUgQ29tcHJlc3NlZFJlZnJlc2hTdGF0ZSA9IFt1cmw6IHN0cmluZywgcmVuZGVyZWRTZWFyY2g6IHN0cmluZ11cblxuZXhwb3J0IGNvbnN0IGVudW0gUHJlZmV0Y2hIaW50IHtcbiAgLy8gVGhpcyBzZWdtZW50IGhhcyBhIHJ1bnRpbWUgcHJlZmV0Y2ggZW5hYmxlZCAodmlhIHVuc3RhYmxlX2luc3RhbnQgd2l0aFxuICAvLyBwcmVmZXRjaDogJ3J1bnRpbWUnKS4gUGVyLXNlZ21lbnQgb25seSwgZG9lcyBub3QgcHJvcGFnYXRlIHRvIGFuY2VzdG9ycy5cbiAgSGFzUnVudGltZVByZWZldGNoID0gMGIwMDAwMSxcbiAgLy8gVGhpcyBzZWdtZW50IG9yIG9uZSBvZiBpdHMgZGVzY2VuZGFudHMgaGFzIGFuIGluc3RhbnQgY29uZmlnIGRlZmluZWRcbiAgLy8gKGFueSB0cnV0aHkgdW5zdGFibGVfaW5zdGFudCwgcmVnYXJkbGVzcyBvZiBwcmVmZXRjaCBtb2RlKS4gUHJvcGFnYXRlc1xuICAvLyB1cHdhcmQgc28gdGhlIHJvb3Qgc2VnbWVudCByZWZsZWN0cyB0aGUgZW50aXJlIHN1YnRyZWUuXG4gIFN1YnRyZWVIYXNJbnN0YW50ID0gMGIwMDAxMCxcbiAgLy8gVGhpcyBzZWdtZW50IGl0c2VsZiBoYXMgYSBsb2FkaW5nLnRzeCBib3VuZGFyeS5cbiAgU2VnbWVudEhhc0xvYWRpbmdCb3VuZGFyeSA9IDBiMDAxMDAsXG4gIC8vIEEgZGVzY2VuZGFudCBzZWdtZW50IChidXQgbm90IHRoaXMgb25lKSBoYXMgYSBsb2FkaW5nLnRzeCBib3VuZGFyeS5cbiAgLy8gUHJvcGFnYXRlcyB1cHdhcmQgc28gdGhlIHJvb3QgcmVmbGVjdHMgdGhlIGVudGlyZSBzdWJ0cmVlLlxuICBTdWJ0cmVlSGFzTG9hZGluZ0JvdW5kYXJ5ID0gMGIwMTAwMCxcbiAgLy8gVGhpcyBzZWdtZW50IGlzIHRoZSByb290IGxheW91dCBvZiB0aGUgYXBwbGljYXRpb24uXG4gIElzUm9vdExheW91dCA9IDBiMTAwMDAsXG4gIC8vIFRoaXMgc2VnbWVudCdzIHJlc3BvbnNlIGluY2x1ZGVzIGl0cyBwYXJlbnQncyBkYXRhIGlubGluZWQgaW50byBpdC5cbiAgLy8gU2V0IGF0IGJ1aWxkIHRpbWUgYnkgdGhlIHNlZ21lbnQgc2l6ZSBtZWFzdXJlbWVudCBwYXNzLlxuICBQYXJlbnRJbmxpbmVkSW50b1NlbGYgPSAwYjEwMDAwMCxcbiAgLy8gVGhpcyBzZWdtZW50J3MgZGF0YSBpcyBpbmxpbmVkIGludG8gb25lIG9mIGl0cyBjaGlsZHJlbiDigJQgZG9uJ3QgZmV0Y2hcbiAgLy8gaXQgc2VwYXJhdGVseS4gU2V0IGF0IGJ1aWxkIHRpbWUgYnkgdGhlIHNlZ21lbnQgc2l6ZSBtZWFzdXJlbWVudCBwYXNzLlxuICBJbmxpbmVkSW50b0NoaWxkID0gMGIxMDAwMDAwLFxuICAvLyBPbiBhIF9fUEFHRV9fOiB0aGlzIHBhZ2UncyByZXNwb25zZSBpbmNsdWRlcyB0aGUgaGVhZCAobWV0YWRhdGEvdmlld3BvcnQpXG4gIC8vIGF0IHRoZSBlbmQgb2YgaXRzIFNlZ21lbnRQcmVmZXRjaFtdIGFycmF5LlxuICBIZWFkSW5saW5lZEludG9TZWxmID0gMGIxMDAwMDAwMCxcbiAgLy8gT24gdGhlIHJvb3QgaGludCBub2RlOiB0aGUgaGVhZCB3YXMgTk9UIGlubGluZWQgaW50byBhbnkgcGFnZSDigJQgZmV0Y2hcbiAgLy8gaXQgc2VwYXJhdGVseS4gQWJzZW5jZSBvZiB0aGlzIGJpdCBtZWFucyB0aGUgaGVhZCBpcyBidW5kbGVkIGludG8gYSBwYWdlLlxuICBIZWFkT3V0bGluZWQgPSAwYjEwMDAwMDAwMCxcbn1cblxuLyoqXG4gKiBJbmRpdmlkdWFsIEZsaWdodCByZXNwb25zZSBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIEZsaWdodFNlZ21lbnRQYXRoID1cbiAgLy8gVXNlcyBgYW55YCBhcyByZXBlYXRpbmcgcGF0dGVybiBjYW4ndCBiZSB0eXBlZC5cbiAgfCBhbnlbXVxuICAvLyBMb29rcyBzb21ld2hhdCBsaWtlIHRoaXNcbiAgfCBbXG4gICAgICBzZWdtZW50OiBTZWdtZW50LFxuICAgICAgcGFyYWxsZWxSb3V0ZXJLZXk6IHN0cmluZyxcbiAgICAgIHNlZ21lbnQ6IFNlZ21lbnQsXG4gICAgICBwYXJhbGxlbFJvdXRlcktleTogc3RyaW5nLFxuICAgICAgc2VnbWVudDogU2VnbWVudCxcbiAgICAgIHBhcmFsbGVsUm91dGVyS2V5OiBzdHJpbmcsXG4gICAgXVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSB0cmVlIG9mIHNlZ21lbnRzIGFuZCB0aGUgRmxpZ2h0IGRhdGEgKGkuZS4gUmVhY3Qgbm9kZXMpIHRoYXRcbiAqIGNvcnJlc3BvbmQgdG8gZWFjaCBvbmUuIFRoZSB0cmVlIGlzIGlzb21vcnBoaWMgdG8gdGhlIEZsaWdodFJvdXRlclN0YXRlO1xuICogaG93ZXZlciBpbiB0aGUgZnV0dXJlIHdlIHdhbnQgdG8gYmUgYWJsZSB0byBmZXRjaCBhcmJpdHJhcnkgcGFydGlhbCBzZWdtZW50c1xuICogd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggYWxsIGl0cyBjaGlsZHJlbi4gU28gdGhpcyByZXNwb25zZSBmb3JtYXQgd2lsbFxuICogbGlrZWx5IGNoYW5nZS5cbiAqL1xuZXhwb3J0IHR5cGUgQ2FjaGVOb2RlU2VlZERhdGEgPSBbXG4gIG5vZGU6IFJlYWN0LlJlYWN0Tm9kZSB8IG51bGwsXG4gIHBhcmFsbGVsUm91dGVzOiB7XG4gICAgW3BhcmFsbGVsUm91dGVyS2V5OiBzdHJpbmddOiBDYWNoZU5vZGVTZWVkRGF0YSB8IG51bGxcbiAgfSxcbiAgLy8gVE9ETzogVGhpcyBmaWVsZCBpcyBubyBsb25nZXIgdXNlZC4gUmVtb3ZlIGl0LlxuICBsb2FkaW5nOiBudWxsLFxuICBpc1BhcnRpYWw6IGJvb2xlYW4sXG4gIC8qKlxuICAgKiBBIHRoZW5hYmxlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHNldCBvZiByb3V0ZSBwYXJhbXMgdGhpcyBzZWdtZW50IGFjY2Vzc2VkXG4gICAqIGR1cmluZyBzZXJ2ZXIgcmVuZGVyaW5nLiBVc2VkIGJ5IHRoZSBjbGllbnQgcm91dGVyIHRvIGRldGVybWluZSBjYWNoZSBrZXlcbiAgICogc3BlY2lmaWNpdHkgLSBzZWdtZW50cyB0aGF0IG9ubHkgYWNjZXNzIGNlcnRhaW4gcGFyYW1zIGNhbiBiZSByZXVzZWQgYWNyb3NzXG4gICAqIG5hdmlnYXRpb25zIHdoZXJlIHVuYWNjZXNzZWQgcGFyYW1zIGNoYW5nZS5cbiAgICpcbiAgICogLSBudWxsIHRoZW5hYmxlOiB0cmFja2luZyB3YXMgbm90IGVuYWJsZWQgZm9yIHRoaXMgcmVuZGVyIChlLmcuLCBub3QgYVxuICAgKiAgIHByZXJlbmRlcikuIFRyZWF0IGNvbnNlcnZhdGl2ZWx5IC0gYXNzdW1lIGFsbCBwYXJhbXMgdmFyeS5cbiAgICogLSBUaGVuYWJsZSByZXNvbHZlcyB0byBlbXB0eSBTZXQ6IHNlZ21lbnQgYWNjZXNzZXMgbm8gcGFyYW1zIChlLmcuLCBjbGllbnRcbiAgICogICBjb21wb25lbnRzLCBvciBzZXJ2ZXIgY29tcG9uZW50cyB0aGF0IGRvbid0IHJlYWQgcGFyYW1zKS4gQ2FuIGJlIHNoYXJlZFxuICAgKiAgIGFjcm9zcyBhbGwgcGFyYW0gdmFsdWVzLlxuICAgKiAtIFRoZW5hYmxlIHJlc29sdmVzIHRvIG5vbi1lbXB0eSBTZXQ6IHNlZ21lbnQgZGVwZW5kcyBvbiB0aG9zZSBwYXJhbXMuXG4gICAqICAgQ2FuIG9ubHkgcmV1c2Ugd2hlbiB0aG9zZSBzcGVjaWZpYyBwYXJhbXMgbWF0Y2guXG4gICAqL1xuICB2YXJ5UGFyYW1zOiBWYXJ5UGFyYW1zVGhlbmFibGUgfCBudWxsLFxuXVxuXG5leHBvcnQgdHlwZSBGbGlnaHREYXRhU2VnbWVudCA9IFtcbiAgLyogc2VnbWVudCBvZiB0aGUgcmVuZGVyZWQgc2xpY2U6ICovIFNlZ21lbnQsXG4gIC8qIHRyZWVQYXRjaCAqLyBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgLyogY2FjaGVOb2RlU2VlZERhdGEgKi8gQ2FjaGVOb2RlU2VlZERhdGEgfCBudWxsLCAvLyBDYW4gYmUgbnVsbCBkdXJpbmcgcHJlZmV0Y2ggaWYgdGhlcmUncyBubyBsb2FkaW5nIGNvbXBvbmVudFxuICAvKiBoZWFkOiB2aWV3cG9ydCAqLyBIZWFkRGF0YSxcbiAgLyogaXNIZWFkUGFydGlhbCAqLyBib29sZWFuLFxuXVxuXG5leHBvcnQgdHlwZSBGbGlnaHREYXRhUGF0aCA9XG4gIC8vIFVzZXMgYGFueWAgYXMgcmVwZWF0aW5nIHBhdHRlcm4gY2FuJ3QgYmUgdHlwZWQuXG4gIHwgYW55W11cbiAgLy8gTG9va3Mgc29tZXdoYXQgbGlrZSB0aGlzXG4gIHwgW1xuICAgICAgLy8gSG9sZHMgZnVsbCBwYXRoIHRvIHRoZSBzZWdtZW50LlxuICAgICAgLi4uRmxpZ2h0U2VnbWVudFBhdGhbXSxcbiAgICAgIC4uLkZsaWdodERhdGFTZWdtZW50LFxuICAgIF1cblxuLyoqXG4gKiBUaGUgRmxpZ2h0IHJlc3BvbnNlIGRhdGFcbiAqL1xuZXhwb3J0IHR5cGUgRmxpZ2h0RGF0YSA9IEFycmF5PEZsaWdodERhdGFQYXRoPiB8IHN0cmluZ1xuXG4vKipcbiAqIFBlci1yb3V0ZSBwcmVmZXRjaCBoaW50cyBjb21wdXRlZCBhdCBidWlsZCB0aW1lLiBNaXJyb3JzIHRoZSBzaGFwZSBvZiB0aGVcbiAqIGxvYWRlciB0cmVlIHNvIGhpbnRzIGNhbiBiZSB0cmF2ZXJzZWQgaW4gcGFyYWxsZWwgZHVyaW5nIHJvdXRlciBzdGF0ZVxuICogY3JlYXRpb24uIEVhY2ggbm9kZSBzdG9yZXMgYSBiaXRtYXNrIG9mIFByZWZldGNoSGludCBmbGFnc1xuICogKFBhcmVudElubGluZWRJbnRvU2VsZiwgSW5saW5lZEludG9DaGlsZCkgY29tcHV0ZWQgYnkgdGhlIHNlZ21lbnQgc2l6ZVxuICogbWVhc3VyZW1lbnQgcGFzcy5cbiAqXG4gKiBQZXJzaXN0ZWQgdG8gcHJlZmV0Y2gtaGludHMuanNvbiBhcyBSZWNvcmQ8c3RyaW5nLCBQcmVmZXRjaEhpbnRzPiAoa2V5ZWRcbiAqIGJ5IHJvdXRlIHBhdHRlcm4pIGFuZCBsb2FkZWQgYXQgc2VydmVyIHN0YXJ0dXAuXG4gKi9cbmV4cG9ydCB0eXBlIFByZWZldGNoSGludHMgPSB7XG4gIC8qKiBCaXRtYXNrIG9mIFByZWZldGNoSGludCBmbGFncyBmb3IgdGhpcyBzZWdtZW50LiAqL1xuICBoaW50czogbnVtYmVyXG4gIC8qKiBDaGlsZCBoaW50IG5vZGVzLCBrZXllZCBieSBwYXJhbGxlbCByb3V0ZSBrZXkuICovXG4gIHNsb3RzOiBSZWNvcmQ8c3RyaW5nLCBQcmVmZXRjaEhpbnRzPiB8IG51bGxcbn1cblxuZXhwb3J0IHR5cGUgQWN0aW9uUmVzdWx0ID0gUHJvbWlzZTxhbnk+XG5cbmV4cG9ydCB0eXBlIEluaXRpYWxSU0NQYXlsb2FkID0ge1xuICAvKiogYnVpbGRJZCwgY2FuIGJlIGVtcHR5IGlmIHRoZSB4LW5leHRqcy1idWlsZC1pZCBoZWFkZXIgaXMgc2V0ICovXG4gIGI/OiBzdHJpbmdcbiAgLyoqIGluaXRpYWxDYW5vbmljYWxVcmxQYXJ0cyAqL1xuICBjOiBzdHJpbmdbXVxuICAvKiogaW5pdGlhbFJlbmRlcmVkU2VhcmNoICovXG4gIHE6IHN0cmluZ1xuICAvKiogY291bGRCZUludGVyY2VwdGVkICovXG4gIGk6IGJvb2xlYW5cbiAgLyoqIGluaXRpYWxGbGlnaHREYXRhICovXG4gIGY6IEZsaWdodERhdGFQYXRoW11cbiAgLyoqIG1pc3NpbmdTbG90cyAqL1xuICBtOiBTZXQ8c3RyaW5nPiB8IHVuZGVmaW5lZFxuICAvKiogR2xvYmFsRXJyb3IgKi9cbiAgRzogW1JlYWN0LkNvbXBvbmVudFR5cGU8YW55PiwgUmVhY3QuUmVhY3ROb2RlIHwgdW5kZWZpbmVkXVxuICAvKiogc3VwcG9ydHNQZXJTZWdtZW50UHJlZmV0Y2hpbmcgKi9cbiAgUzogYm9vbGVhblxuICAvKipcbiAgICogaGVhZFZhcnlQYXJhbXMgLSB2YXJ5IHBhcmFtcyBmb3IgdGhlIGhlYWQgKG1ldGFkYXRhKSBvZiB0aGUgcmVzcG9uc2UuXG4gICAqL1xuICBoOiBWYXJ5UGFyYW1zVGhlbmFibGUgfCBudWxsXG4gIC8qKiBzdGFsZVRpbWUgaW4gc2Vjb25kcyAtIE9ubHkgcHJlc2VudCB3aGVuIENhY2hlIENvbXBvbmVudHMgaXMgZW5hYmxlZC4gKi9cbiAgcz86IEFzeW5jSXRlcmFibGU8bnVtYmVyPlxuICAvKiogc3RhdGljU3RhZ2VCeXRlTGVuZ3RoIC0gUmVzb2x2ZXMgd2hlbiB0aGUgc3RhdGljIHN0YWdlIGVuZHMuICovXG4gIGw/OiBQcm9taXNlPG51bWJlcj5cbiAgLyoqIHJ1bnRpbWVQcmVmZXRjaFN0cmVhbSDigJQgRW1iZWRkZWQgcnVudGltZSBwcmVmZXRjaCBGbGlnaHQgc3RyZWFtLiAqL1xuICBwPzogUmVhZGFibGVTdHJlYW08VWludDhBcnJheT5cbiAgLyoqXG4gICAqIGR5bmFtaWNTdGFsZVRpbWUg4oCUIFBlci1wYWdlIEJGQ2FjaGUgc3RhbGUgdGltZSBpbiBzZWNvbmRzLCBmcm9tXG4gICAqIGB1bnN0YWJsZV9keW5hbWljU3RhbGVUaW1lYC4gT25seSBpbmNsdWRlZCBmb3IgZHluYW1pYyByZW5kZXJzLiBDb250cm9sc1xuICAgKiBob3cgbG9uZyB0aGUgY2xpZW50IHJvdXRlciBjYWNoZSByZXRhaW5zIGR5bmFtaWMgbmF2aWdhdGlvbiBkYXRhLiBUaGlzIGlzXG4gICAqIGRpc3RpbmN0IGZyb20gdGhlIGBzYCBmaWVsZCwgd2hpY2ggY29udHJvbHMgc2VnbWVudCBjYWNoZSAocHJlZmV0Y2gpXG4gICAqIHN0YWxlbmVzcy5cbiAgICovXG4gIGQ/OiBudW1iZXJcbn1cblxuLy8gUmVzcG9uc2UgZnJvbSBgY3JlYXRlRnJvbUZldGNoYCBmb3Igbm9ybWFsIHJlbmRlcmluZ1xuZXhwb3J0IHR5cGUgTmF2aWdhdGlvbkZsaWdodFJlc3BvbnNlID0ge1xuICAvKiogYnVpbGRJZCwgY2FuIGJlIGVtcHR5IGlmIHRoZSB4LW5leHRqcy1idWlsZC1pZCBoZWFkZXIgaXMgc2V0ICovXG4gIGI/OiBzdHJpbmdcbiAgLyoqIGZsaWdodERhdGEgKi9cbiAgZjogRmxpZ2h0RGF0YVxuICAvKiogc3VwcG9ydHNQZXJTZWdtZW50UHJlZmV0Y2hpbmcgKi9cbiAgUzogYm9vbGVhblxuICAvKiogcmVuZGVyZWRTZWFyY2ggKi9cbiAgcTogc3RyaW5nXG4gIC8qKiBjb3VsZEJlSW50ZXJjZXB0ZWQgKi9cbiAgaTogYm9vbGVhblxuICAvKiogc3RhbGVUaW1lIC0gT25seSBwcmVzZW50IGluIGR5bmFtaWMgcnVudGltZSBwcmVmZXRjaCByZXNwb25zZXMuICovXG4gIHM/OiBBc3luY0l0ZXJhYmxlPG51bWJlcj5cbiAgLyoqIHN0YXRpY1N0YWdlQnl0ZUxlbmd0aCAtIFJlc29sdmVzIHdoZW4gdGhlIHN0YXRpYyBzdGFnZSBlbmRzLiAqL1xuICBsPzogUHJvbWlzZTxudW1iZXI+XG4gIC8qKiBoZWFkVmFyeVBhcmFtcyAqL1xuICBoOiBWYXJ5UGFyYW1zVGhlbmFibGUgfCBudWxsXG4gIC8qKiBydW50aW1lUHJlZmV0Y2hTdHJlYW0g4oCUIEVtYmVkZGVkIHJ1bnRpbWUgcHJlZmV0Y2ggRmxpZ2h0IHN0cmVhbS4gKi9cbiAgcD86IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+XG4gIC8qKlxuICAgKiBkeW5hbWljU3RhbGVUaW1lIOKAlCBQZXItcGFnZSBCRkNhY2hlIHN0YWxlIHRpbWUgaW4gc2Vjb25kcywgZnJvbVxuICAgKiBgdW5zdGFibGVfZHluYW1pY1N0YWxlVGltZWAuIE9ubHkgaW5jbHVkZWQgZm9yIGR5bmFtaWMgcmVuZGVycy4gQ29udHJvbHNcbiAgICogaG93IGxvbmcgdGhlIGNsaWVudCByb3V0ZXIgY2FjaGUgcmV0YWlucyBkeW5hbWljIG5hdmlnYXRpb24gZGF0YS4gVGhpcyBpc1xuICAgKiBkaXN0aW5jdCBmcm9tIHRoZSBgc2AgZmllbGQsIHdoaWNoIGNvbnRyb2xzIHNlZ21lbnQgY2FjaGUgKHByZWZldGNoKVxuICAgKiBzdGFsZW5lc3MuXG4gICAqL1xuICBkPzogbnVtYmVyXG59XG5cbi8vIFJlc3BvbnNlIGZyb20gYGNyZWF0ZUZyb21GZXRjaGAgZm9yIHNlcnZlciBhY3Rpb25zLiBBY3Rpb24ncyBmbGlnaHQgZGF0YSBjYW4gYmUgbnVsbFxuZXhwb3J0IHR5cGUgQWN0aW9uRmxpZ2h0UmVzcG9uc2UgPSB7XG4gIC8qKiBhY3Rpb25SZXN1bHQgKi9cbiAgYTogQWN0aW9uUmVzdWx0XG4gIC8qKiBidWlsZElkLCBjYW4gYmUgZW1wdHkgaWYgdGhlIHgtbmV4dGpzLWJ1aWxkLWlkIGhlYWRlciBpcyBzZXQgKi9cbiAgYj86IHN0cmluZ1xuICAvKiogZmxpZ2h0RGF0YSAqL1xuICBmOiBGbGlnaHREYXRhXG4gIC8qKiByZW5kZXJlZFNlYXJjaCAqL1xuICBxOiBzdHJpbmdcbiAgLyoqIGNvdWxkQmVJbnRlcmNlcHRlZCAqL1xuICBpOiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIFJTQ1BheWxvYWQgPVxuICB8IEluaXRpYWxSU0NQYXlsb2FkXG4gIHwgTmF2aWdhdGlvbkZsaWdodFJlc3BvbnNlXG4gIHwgQWN0aW9uRmxpZ2h0UmVzcG9uc2VcbiJdLCJuYW1lcyI6WyJQcmVmZXRjaEhpbnQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/app-router-types.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/deployment-id.js":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/deployment-id.js ***!
|
||
\************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getAssetToken: function() {\n return getAssetToken;\n },\n getAssetTokenQuery: function() {\n return getAssetTokenQuery;\n },\n getDeploymentId: function() {\n return getDeploymentId;\n },\n getDeploymentIdQuery: function() {\n return getDeploymentIdQuery;\n }\n});\nlet deploymentId;\nif (false) {} else {\n // Client side: replaced with globalThis.NEXT_DEPLOYMENT_ID\n // Server side: left as is or replaced with a string or replaced with false\n deploymentId = false || undefined;\n}\nfunction getDeploymentId() {\n return deploymentId;\n}\nfunction getDeploymentIdQuery(ampersand = false) {\n let id = getDeploymentId();\n if (id) {\n return `${ampersand ? '&' : '?'}dpl=${id}`;\n }\n return '';\n}\nfunction getAssetToken() {\n return false || false;\n}\nfunction getAssetTokenQuery(ampersand = false) {\n let id = getAssetToken();\n if (id) {\n return `${ampersand ? '&' : '?'}dpl=${id}`;\n }\n return '';\n} //# sourceMappingURL=deployment-id.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvZGVwbG95bWVudC1pZC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUF5QmdCQSxhQUFhO2VBQWJBOztJQU1BQyxrQkFBa0I7ZUFBbEJBOztJQWxCQUMsZUFBZTtlQUFmQTs7SUFJQUMsb0JBQW9CO2VBQXBCQTs7O0FBakJoQixJQUFJQztBQUVKLElBQUksS0FBNkIsRUFBRSxFQUtsQyxNQUFNO0lBQ0wsMkRBQTJEO0lBQzNELDJFQUEyRTtJQUMzRUEsZUFBZU0sTUFBOEIsSUFBSUc7QUFDbkQ7QUFFTyxTQUFTWDtJQUNkLE9BQU9FO0FBQ1Q7QUFFTyxTQUFTRCxxQkFBcUJXLFlBQVksS0FBSztJQUNwRCxJQUFJQyxLQUFLYjtJQUNULElBQUlhLElBQUk7UUFDTixPQUFPLEdBQUdELFlBQVksTUFBTSxJQUFJLElBQUksRUFBRUMsSUFBSTtJQUM1QztJQUNBLE9BQU87QUFDVDtBQUVPLFNBQVNmO0lBQ2QsT0FDRVUsTUFBc0MsSUFBSUEsS0FBOEI7QUFFNUU7QUFFTyxTQUFTVCxtQkFBbUJhLFlBQVksS0FBSztJQUNsRCxJQUFJQyxLQUFLZjtJQUNULElBQUllLElBQUk7UUFDTixPQUFPLEdBQUdELFlBQVksTUFBTSxJQUFJLElBQUksRUFBRUMsSUFBSTtJQUM1QztJQUNBLE9BQU87QUFDVCIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9zaGFyZWQvbGliL2RlcGxveW1lbnQtaWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsibGV0IGRlcGxveW1lbnRJZDogc3RyaW5nIHwgdW5kZWZpbmVkXG5cbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICBkZXBsb3ltZW50SWQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZGF0YXNldC5kcGxJZFxuICAvLyBJbW1lZGlhdGVseSByZW1vdmUgdGhlIGF0dHJpYnV0ZSB0byBwcmV2ZW50IGh5ZHJhdGlvbiBlcnJvcnMgKHRoZSBkcGxJZCB3YXMgaW5zZXJ0ZWQgaW50byB0aGVcbiAgLy8gSFRNTCBvbmx5KSwgUmVhY3QgaXNuJ3QgYXdhcmUgb2YgaXQgYXQgYWxsLlxuICBkZWxldGUgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRhdGFzZXQuZHBsSWRcbn0gZWxzZSB7XG4gIC8vIENsaWVudCBzaWRlOiByZXBsYWNlZCB3aXRoIGdsb2JhbFRoaXMuTkVYVF9ERVBMT1lNRU5UX0lEXG4gIC8vIFNlcnZlciBzaWRlOiBsZWZ0IGFzIGlzIG9yIHJlcGxhY2VkIHdpdGggYSBzdHJpbmcgb3IgcmVwbGFjZWQgd2l0aCBmYWxzZVxuICBkZXBsb3ltZW50SWQgPSBwcm9jZXNzLmVudi5ORVhUX0RFUExPWU1FTlRfSUQgfHwgdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXBsb3ltZW50SWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGRlcGxveW1lbnRJZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVwbG95bWVudElkUXVlcnkoYW1wZXJzYW5kID0gZmFsc2UpOiBzdHJpbmcge1xuICBsZXQgaWQgPSBnZXREZXBsb3ltZW50SWQoKVxuICBpZiAoaWQpIHtcbiAgICByZXR1cm4gYCR7YW1wZXJzYW5kID8gJyYnIDogJz8nfWRwbD0ke2lkfWBcbiAgfVxuICByZXR1cm4gJydcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFzc2V0VG9rZW4oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIChcbiAgICBwcm9jZXNzLmVudi5ORVhUX0lNTVVUQUJMRV9BU1NFVF9UT0tFTiB8fCBwcm9jZXNzLmVudi5ORVhUX0RFUExPWU1FTlRfSURcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXNzZXRUb2tlblF1ZXJ5KGFtcGVyc2FuZCA9IGZhbHNlKTogc3RyaW5nIHtcbiAgbGV0IGlkID0gZ2V0QXNzZXRUb2tlbigpXG4gIGlmIChpZCkge1xuICAgIHJldHVybiBgJHthbXBlcnNhbmQgPyAnJicgOiAnPyd9ZHBsPSR7aWR9YFxuICB9XG4gIHJldHVybiAnJ1xufVxuIl0sIm5hbWVzIjpbImdldEFzc2V0VG9rZW4iLCJnZXRBc3NldFRva2VuUXVlcnkiLCJnZXREZXBsb3ltZW50SWQiLCJnZXREZXBsb3ltZW50SWRRdWVyeSIsImRlcGxveW1lbnRJZCIsIndpbmRvdyIsImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50IiwiZGF0YXNldCIsImRwbElkIiwicHJvY2VzcyIsImVudiIsIk5FWFRfREVQTE9ZTUVOVF9JRCIsInVuZGVmaW5lZCIsImFtcGVyc2FuZCIsImlkIiwiTkVYVF9JTU1VVEFCTEVfQVNTRVRfVE9LRU4iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/deployment-id.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/error-source.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/error-source.js ***!
|
||
\***********************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n decorateServerError: function() {\n return decorateServerError;\n },\n getErrorSource: function() {\n return getErrorSource;\n }\n});\nconst symbolError = Symbol.for('NextjsError');\nfunction getErrorSource(error) {\n return error[symbolError] || null;\n}\nfunction decorateServerError(error, type) {\n Object.defineProperty(error, symbolError, {\n writable: false,\n enumerable: false,\n configurable: false,\n value: type\n });\n} //# sourceMappingURL=error-source.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvZXJyb3Itc291cmNlLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQVFnQkEsbUJBQW1CO2VBQW5CQTs7SUFOQUMsY0FBYztlQUFkQTs7O0FBRmhCLE1BQU1DLGNBQWNDLE9BQU9DLEdBQUcsQ0FBQztBQUV4QixTQUFTSCxlQUFlSSxLQUFZO0lBQ3pDLE9BQVFBLEtBQWEsQ0FBQ0gsWUFBWSxJQUFJO0FBQ3hDO0FBSU8sU0FBU0Ysb0JBQW9CSyxLQUFZLEVBQUVDLElBQXFCO0lBQ3JFQyxPQUFPQyxjQUFjLENBQUNILE9BQU9ILGFBQWE7UUFDeENPLFVBQVU7UUFDVkMsWUFBWTtRQUNaQyxjQUFjO1FBQ2RDLE9BQU9OO0lBQ1Q7QUFDRiIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9zaGFyZWQvbGliL2Vycm9yLXNvdXJjZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzeW1ib2xFcnJvciA9IFN5bWJvbC5mb3IoJ05leHRqc0Vycm9yJylcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEVycm9yU291cmNlKGVycm9yOiBFcnJvcik6ICdzZXJ2ZXInIHwgJ2VkZ2Utc2VydmVyJyB8IG51bGwge1xuICByZXR1cm4gKGVycm9yIGFzIGFueSlbc3ltYm9sRXJyb3JdIHx8IG51bGxcbn1cblxuZXhwb3J0IHR5cGUgRXJyb3JTb3VyY2VUeXBlID0gJ2VkZ2Utc2VydmVyJyB8ICdzZXJ2ZXInXG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvcmF0ZVNlcnZlckVycm9yKGVycm9yOiBFcnJvciwgdHlwZTogRXJyb3JTb3VyY2VUeXBlKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlcnJvciwgc3ltYm9sRXJyb3IsIHtcbiAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICB2YWx1ZTogdHlwZSxcbiAgfSlcbn1cbiJdLCJuYW1lcyI6WyJkZWNvcmF0ZVNlcnZlckVycm9yIiwiZ2V0RXJyb3JTb3VyY2UiLCJzeW1ib2xFcnJvciIsIlN5bWJvbCIsImZvciIsImVycm9yIiwidHlwZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5Iiwid3JpdGFibGUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwidmFsdWUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/error-source.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/errors/constants.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/errors/constants.js ***!
|
||
\***************************************************************/
|
||
/***/ ((module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"MISSING_ROOT_TAGS_ERROR\", ({\n enumerable: true,\n get: function() {\n return MISSING_ROOT_TAGS_ERROR;\n }\n}));\nconst MISSING_ROOT_TAGS_ERROR = 'NEXT_MISSING_ROOT_TAGS';\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=constants.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvZXJyb3JzL2NvbnN0YW50cy5qcyIsIm1hcHBpbmdzIjoiOzs7OzJEQUFhQTs7O2VBQUFBOzs7QUFBTixNQUFNQSwwQkFBMEIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvc2hhcmVkL2xpYi9lcnJvcnMvY29uc3RhbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBNSVNTSU5HX1JPT1RfVEFHU19FUlJPUiA9ICdORVhUX01JU1NJTkdfUk9PVF9UQUdTJ1xuIl0sIm5hbWVzIjpbIk1JU1NJTkdfUk9PVF9UQUdTX0VSUk9SIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/errors/constants.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/format-webpack-messages.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/format-webpack-messages.js ***!
|
||
\**********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("/**\nMIT License\n\nCopyright (c) 2015-present, Facebook, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return formatWebpackMessages;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _stripansi = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! next/dist/compiled/strip-ansi */ \"(ssr)/./node_modules/next/dist/compiled/strip-ansi/index.js\"));\n// This file is based on https://github.com/facebook/create-react-app/blob/7b1a32be6ec9f99a6c9a3c66813f3ac09c4736b9/packages/react-dev-utils/formatWebpackMessages.js\n// It's been edited to remove chalk and CRA-specific logic\nconst friendlySyntaxErrorLabel = 'Syntax error:';\nconst WEBPACK_BREAKING_CHANGE_POLYFILLS = '\\n\\nBREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.';\nfunction isLikelyASyntaxError(message) {\n return (0, _stripansi.default)(message).includes(friendlySyntaxErrorLabel);\n}\nlet hadMissingSassError = false;\n// Cleans up webpack error messages.\nfunction formatMessage(message, verbose, importTraceNote) {\n // TODO: Replace this once webpack 5 is stable\n if (typeof message === 'object' && message.message) {\n const filteredModuleTrace = message.moduleTrace && message.moduleTrace.filter((trace)=>!/next-(middleware|client-pages|route|edge-function)-loader\\.js/.test(trace.originName));\n let body = message.message;\n const breakingChangeIndex = body.indexOf(WEBPACK_BREAKING_CHANGE_POLYFILLS);\n if (breakingChangeIndex >= 0) {\n body = body.slice(0, breakingChangeIndex);\n }\n // TODO: Rspack currently doesn't populate moduleName correctly in some cases,\n // fall back to moduleIdentifier as a workaround\n if (process.env.NEXT_RSPACK && !message.moduleName && !message.file && message.moduleIdentifier) {\n const parts = message.moduleIdentifier.split('!');\n message.moduleName = parts[parts.length - 1];\n }\n message = (message.moduleName ? (0, _stripansi.default)(message.moduleName) + '\\n' : '') + (message.file ? (0, _stripansi.default)(message.file) + '\\n' : '') + body + (message.details && verbose ? '\\n' + message.details : '') + (filteredModuleTrace && filteredModuleTrace.length ? (importTraceNote || '\\n\\nImport trace for requested module:') + filteredModuleTrace.map((trace)=>`\\n${trace.moduleName}`).join('') : '') + (message.stack && verbose ? '\\n' + message.stack : '');\n }\n let lines = message.split('\\n');\n // Extract loader paths from Webpack-added headers and move them to end.\n // Original format: \"Module build failed (from ./loaders/foo-loader.js):\"\n // The header line is removed and the path is appended at the end as:\n // \" (from ./loaders/foo-loader.js)\"\n // https://github.com/webpack/webpack/blob/master/lib/ModuleError.js\n const loaderPaths = [];\n lines = lines.filter((line)=>{\n const match = /Module [A-z ]+\\(from (.+)\\):?\\s*$/.exec(line);\n if (match) {\n loaderPaths.push(match[1]);\n return false;\n }\n return true;\n });\n // Transform parsing error into syntax error\n // TODO: move this to our ESLint formatter?\n lines = lines.map((line)=>{\n const parsingError = /Line (\\d+):(?:(\\d+):)?\\s*Parsing error: (.+)$/.exec(line);\n if (!parsingError) {\n return line;\n }\n const [, errorLine, errorColumn, errorMessage] = parsingError;\n return `${friendlySyntaxErrorLabel} ${errorMessage} (${errorLine}:${errorColumn})`;\n });\n message = lines.join('\\n');\n // Smoosh syntax errors (commonly found in CSS)\n message = message.replace(/SyntaxError\\s+\\((\\d+):(\\d+)\\)\\s*(.+?)\\n/g, `${friendlySyntaxErrorLabel} $3 ($1:$2)\\n`);\n // Clean up export errors\n message = message.replace(/^.*export '(.+?)' was not found in '(.+?)'.*$/gm, `Attempted import error: '$1' is not exported from '$2'.`);\n message = message.replace(/^.*export 'default' \\(imported as '(.+?)'\\) was not found in '(.+?)'.*$/gm, `Attempted import error: '$2' does not contain a default export (imported as '$1').`);\n message = message.replace(/^.*export '(.+?)' \\(imported as '(.+?)'\\) was not found in '(.+?)'.*$/gm, `Attempted import error: '$1' is not exported from '$3' (imported as '$2').`);\n lines = message.split('\\n');\n // Remove leading newline\n if (lines.length > 2 && lines[1].trim() === '') {\n lines.splice(1, 1);\n }\n // Cleans up verbose \"module not found\" messages for files and packages.\n if (lines[1] && lines[1].startsWith('Module not found: ')) {\n lines = [\n lines[0],\n lines[1].replace('Error: ', '').replace('Module not found: Cannot find file:', 'Cannot find file:'),\n ...lines.slice(2)\n ];\n }\n // Add helpful message for users trying to use Sass for the first time\n if (lines[1] && lines[1].match(/Cannot find module.+sass/)) {\n // ./file.module.scss (<<loader info>>) => ./file.module.scss\n const firstLine = lines[0].split('!');\n lines[0] = firstLine[firstLine.length - 1];\n lines[1] = \"To use Next.js' built-in Sass support, you first need to install `sass`.\\n\";\n lines[1] += 'Run `npm i sass` or `yarn add sass` inside your workspace.\\n';\n lines[1] += '\\nLearn more: https://nextjs.org/docs/messages/install-sass';\n // dispose of unhelpful stack trace\n lines = lines.slice(0, 2);\n hadMissingSassError = true;\n } else if (hadMissingSassError && message.match(/(sass-loader|resolve-url-loader: CSS error)/)) {\n // dispose of unhelpful stack trace following missing sass module\n lines = [];\n }\n if (!verbose) {\n message = lines.join('\\n');\n // Internal stacks are generally useless so we strip them... with the\n // exception of stacks containing `webpack:` because they're normally\n // from user code generated by Webpack. For more information see\n // https://github.com/facebook/create-react-app/pull/1050\n message = message.replace(/^\\s*at\\s((?!webpack:).)*:\\d+:\\d+[\\s)]*(\\n|$)/gm, '') // at ... ...:x:y\n ;\n message = message.replace(/^\\s*at\\s<anonymous>(\\n|$)/gm, '') // at <anonymous>\n ;\n message = message.replace(/File was processed with these loaders:\\n(.+[\\\\/](next[\\\\/]dist[\\\\/].+|@next[\\\\/]react-refresh-utils[\\\\/]loader)\\.js\\n)*You may need an additional loader to handle the result of these loaders.\\n/g, '');\n lines = message.split('\\n');\n }\n // Append loader paths at the end (before any remaining stack trace)\n if (loaderPaths.length > 0) {\n for (const loaderPath of loaderPaths){\n // Don't show internal Next.js loader paths — they're noise for users\n if (!/[/\\\\]next[/\\\\]dist[/\\\\]/.test(loaderPath)) {\n lines.push(` (from ${loaderPath})`);\n }\n }\n }\n // Remove duplicated newlines\n lines = lines.filter((line, index, arr)=>index === 0 || line.trim() !== '' || line.trim() !== arr[index - 1].trim());\n // Reassemble the message\n message = lines.join('\\n');\n return message.trim();\n}\nfunction formatWebpackMessages(json, verbose) {\n const formattedErrors = json.errors.map((message)=>{\n const isUnknownNextFontError = message.message.includes('An error occurred in `next/font`.');\n return formatMessage(message, isUnknownNextFontError || verbose);\n });\n const formattedWarnings = json.warnings.map((message)=>{\n return formatMessage(message, verbose);\n });\n // Reorder errors to put the most relevant ones first.\n let reactServerComponentsError = -1;\n for(let i = 0; i < formattedErrors.length; i++){\n const error = formattedErrors[i];\n if (error.includes('ReactServerComponentsError')) {\n reactServerComponentsError = i;\n break;\n }\n }\n // Move the reactServerComponentsError to the top if it exists\n if (reactServerComponentsError !== -1) {\n const error = formattedErrors.splice(reactServerComponentsError, 1);\n formattedErrors.unshift(error[0]);\n }\n const result = {\n ...json,\n errors: formattedErrors,\n warnings: formattedWarnings\n };\n if (!verbose && result.errors.some(isLikelyASyntaxError)) {\n // If there are any syntax errors, show just them.\n result.errors = result.errors.filter(isLikelyASyntaxError);\n result.warnings = [];\n }\n return result;\n} //# sourceMappingURL=format-webpack-messages.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvZm9ybWF0LXdlYnBhY2stbWVzc2FnZXMuanMiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQkE7Ozs7MkNBa01BOzs7ZUFBd0JBOzs7O2dGQWpNRjtBQUN0QixxS0FBcUs7QUFDckssMERBQTBEO0FBRTFELE1BQU1DLDJCQUEyQjtBQUVqQyxNQUFNQyxvQ0FDSjtBQUVGLFNBQVNDLHFCQUFxQkMsT0FBZTtJQUMzQyxPQUFPQyxDQUFBQSxHQUFBQSxXQUFBQSxPQUFBQSxFQUFVRCxTQUFTRSxRQUFRLENBQUNMO0FBQ3JDO0FBRUEsSUFBSU0sc0JBQXNCO0FBRTFCLG9DQUFvQztBQUNwQyxTQUFTQyxjQUNQSixPQUFZLEVBQ1pLLE9BQWlCLEVBQ2pCQyxlQUF5QjtJQUV6Qiw4Q0FBOEM7SUFDOUMsSUFBSSxPQUFPTixZQUFZLFlBQVlBLFFBQVFBLE9BQU8sRUFBRTtRQUNsRCxNQUFNTyxzQkFDSlAsUUFBUVEsV0FBVyxJQUNuQlIsUUFBUVEsV0FBVyxDQUFDQyxNQUFNLENBQ3hCLENBQUNDLFFBQ0MsQ0FBQyxnRUFBZ0VDLElBQUksQ0FDbkVELE1BQU1FLFVBQVU7UUFJeEIsSUFBSUMsT0FBT2IsUUFBUUEsT0FBTztRQUMxQixNQUFNYyxzQkFBc0JELEtBQUtFLE9BQU8sQ0FBQ2pCO1FBQ3pDLElBQUlnQix1QkFBdUIsR0FBRztZQUM1QkQsT0FBT0EsS0FBS0csS0FBSyxDQUFDLEdBQUdGO1FBQ3ZCO1FBRUEsOEVBQThFO1FBQzlFLGdEQUFnRDtRQUNoRCxJQUNFRyxRQUFRQyxHQUFHLENBQUNDLFdBQVcsSUFDdkIsQ0FBQ25CLFFBQVFvQixVQUFVLElBQ25CLENBQUNwQixRQUFRcUIsSUFBSSxJQUNickIsUUFBUXNCLGdCQUFnQixFQUN4QjtZQUNBLE1BQU1DLFFBQVF2QixRQUFRc0IsZ0JBQWdCLENBQUNFLEtBQUssQ0FBQztZQUM3Q3hCLFFBQVFvQixVQUFVLEdBQUdHLEtBQUssQ0FBQ0EsTUFBTUUsTUFBTSxHQUFHLEVBQUU7UUFDOUM7UUFFQXpCLFVBQ0dBLFNBQVFvQixVQUFVLEdBQUduQixDQUFBQSxHQUFBQSxXQUFBQSxPQUFBQSxFQUFVRCxRQUFRb0IsVUFBVSxJQUFJLE9BQU8sR0FBQyxJQUM3RHBCLFFBQVFxQixJQUFJLEdBQUdwQixDQUFBQSxHQUFBQSxXQUFBQSxPQUFBQSxFQUFVRCxRQUFRcUIsSUFBSSxJQUFJLE9BQU8sR0FBQyxHQUNsRFIsT0FDQ2IsQ0FBQUEsUUFBUTBCLE9BQU8sSUFBSXJCLFVBQVUsT0FBT0wsUUFBUTBCLE9BQU8sR0FBRyxHQUFDLElBQ3ZEbkIsdUJBQXVCQSxvQkFBb0JrQixNQUFNLEdBQzdDbkIsQ0FBQUEsbUJBQW1CLHlDQUF1QyxHQUMzREMsb0JBQ0dvQixHQUFHLENBQUMsQ0FBQ2pCLFFBQWUsQ0FBQyxFQUFFLEVBQUVBLE1BQU1VLFVBQVUsRUFBRSxFQUMzQ1EsSUFBSSxDQUFDLE1BQ1IsR0FBQyxJQUNKNUIsUUFBUTZCLEtBQUssSUFBSXhCLFVBQVUsT0FBT0wsUUFBUTZCLEtBQUssR0FBRyxHQUFDO0lBQ3hEO0lBQ0EsSUFBSUMsUUFBUTlCLFFBQVF3QixLQUFLLENBQUM7SUFFMUIsd0VBQXdFO0lBQ3hFLHlFQUF5RTtJQUN6RSxxRUFBcUU7SUFDckUsdUNBQXVDO0lBQ3ZDLG9FQUFvRTtJQUNwRSxNQUFNTyxjQUF3QixFQUFFO0lBQ2hDRCxRQUFRQSxNQUFNckIsTUFBTSxDQUFDLENBQUN1QjtRQUNwQixNQUFNQyxRQUFRLG9DQUFvQ0MsSUFBSSxDQUFDRjtRQUN2RCxJQUFJQyxPQUFPO1lBQ1RGLFlBQVlJLElBQUksQ0FBQ0YsS0FBSyxDQUFDLEVBQUU7WUFDekIsT0FBTztRQUNUO1FBQ0EsT0FBTztJQUNUO0lBRUEsNENBQTRDO0lBQzVDLDJDQUEyQztJQUMzQ0gsUUFBUUEsTUFBTUgsR0FBRyxDQUFDLENBQUNLO1FBQ2pCLE1BQU1JLGVBQWUsZ0RBQWdERixJQUFJLENBQ3ZFRjtRQUVGLElBQUksQ0FBQ0ksY0FBYztZQUNqQixPQUFPSjtRQUNUO1FBQ0EsTUFBTSxHQUFHSyxXQUFXQyxhQUFhQyxhQUFhLEdBQUdIO1FBQ2pELE9BQU8sR0FBR3ZDLHlCQUF5QixDQUFDLEVBQUUwQyxhQUFhLEVBQUUsRUFBRUYsVUFBVSxDQUFDLEVBQUVDLFlBQVksQ0FBQyxDQUFDO0lBQ3BGO0lBRUF0QyxVQUFVOEIsTUFBTUYsSUFBSSxDQUFDO0lBQ3JCLCtDQUErQztJQUMvQzVCLFVBQVVBLFFBQVF3QyxPQUFPLENBQ3ZCLDRDQUNBLEdBQUczQyx5QkFBeUIsYUFBYSxDQUFDO0lBRTVDLHlCQUF5QjtJQUN6QkcsVUFBVUEsUUFBUXdDLE9BQU8sQ0FDdkIsbURBQ0EsQ0FBQyx1REFBdUQsQ0FBQztJQUUzRHhDLFVBQVVBLFFBQVF3QyxPQUFPLENBQ3ZCLDZFQUNBLENBQUMsa0ZBQWtGLENBQUM7SUFFdEZ4QyxVQUFVQSxRQUFRd0MsT0FBTyxDQUN2QiwyRUFDQSxDQUFDLDBFQUEwRSxDQUFDO0lBRTlFVixRQUFROUIsUUFBUXdCLEtBQUssQ0FBQztJQUV0Qix5QkFBeUI7SUFDekIsSUFBSU0sTUFBTUwsTUFBTSxHQUFHLEtBQUtLLEtBQUssQ0FBQyxFQUFFLENBQUNXLElBQUksT0FBTyxJQUFJO1FBQzlDWCxNQUFNWSxNQUFNLENBQUMsR0FBRztJQUNsQjtJQUVBLHdFQUF3RTtJQUN4RSxJQUFJWixLQUFLLENBQUMsRUFBRSxJQUFJQSxLQUFLLENBQUMsRUFBRSxDQUFDYSxVQUFVLENBQUMsdUJBQXVCO1FBQ3pEYixRQUFRO1lBQ05BLEtBQUssQ0FBQyxFQUFFO1lBQ1JBLEtBQUssQ0FBQyxFQUFFLENBQ0xVLE9BQU8sQ0FBQyxXQUFXLElBQ25CQSxPQUFPLENBQUMsdUNBQXVDO2VBQy9DVixNQUFNZCxLQUFLLENBQUM7U0FDaEI7SUFDSDtJQUVBLHNFQUFzRTtJQUN0RSxJQUFJYyxLQUFLLENBQUMsRUFBRSxJQUFJQSxLQUFLLENBQUMsRUFBRSxDQUFDRyxLQUFLLENBQUMsNkJBQTZCO1FBQzFELDZEQUE2RDtRQUM3RCxNQUFNVyxZQUFZZCxLQUFLLENBQUMsRUFBRSxDQUFDTixLQUFLLENBQUM7UUFDakNNLEtBQUssQ0FBQyxFQUFFLEdBQUdjLFNBQVMsQ0FBQ0EsVUFBVW5CLE1BQU0sR0FBRyxFQUFFO1FBRTFDSyxLQUFLLENBQUMsRUFBRSxHQUNOO1FBQ0ZBLEtBQUssQ0FBQyxFQUFFLElBQUk7UUFDWkEsS0FBSyxDQUFDLEVBQUUsSUFBSTtRQUVaLG1DQUFtQztRQUNuQ0EsUUFBUUEsTUFBTWQsS0FBSyxDQUFDLEdBQUc7UUFDdkJiLHNCQUFzQjtJQUN4QixPQUFPLElBQ0xBLHVCQUNBSCxRQUFRaUMsS0FBSyxDQUFDLGdEQUNkO1FBQ0EsaUVBQWlFO1FBQ2pFSCxRQUFRLEVBQUU7SUFDWjtJQUVBLElBQUksQ0FBQ3pCLFNBQVM7UUFDWkwsVUFBVThCLE1BQU1GLElBQUksQ0FBQztRQUNyQixxRUFBcUU7UUFDckUscUVBQXFFO1FBQ3JFLGdFQUFnRTtRQUNoRSx5REFBeUQ7UUFDekQ1QixVQUFVQSxRQUFRd0MsT0FBTyxDQUN2QixrREFDQSxJQUNBLGlCQUFpQjs7UUFDbkJ4QyxVQUFVQSxRQUFRd0MsT0FBTyxDQUFDLCtCQUErQixJQUFJLGlCQUFpQjs7UUFFOUV4QyxVQUFVQSxRQUFRd0MsT0FBTyxDQUN2QixzTUFDQTtRQUdGVixRQUFROUIsUUFBUXdCLEtBQUssQ0FBQztJQUN4QjtJQUVBLG9FQUFvRTtJQUNwRSxJQUFJTyxZQUFZTixNQUFNLEdBQUcsR0FBRztRQUMxQixLQUFLLE1BQU1vQixjQUFjZCxZQUFhO1lBQ3BDLHFFQUFxRTtZQUNyRSxJQUFJLENBQUMsMEJBQTBCcEIsSUFBSSxDQUFDa0MsYUFBYTtnQkFDL0NmLE1BQU1LLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRVUsV0FBVyxDQUFDLENBQUM7WUFDckM7UUFDRjtJQUNGO0lBRUEsNkJBQTZCO0lBQzdCZixRQUFTQSxNQUFtQnJCLE1BQU0sQ0FDaEMsQ0FBQ3VCLE1BQU1jLE9BQU9DLE1BQ1pELFVBQVUsS0FBS2QsS0FBS1MsSUFBSSxPQUFPLE1BQU1ULEtBQUtTLElBQUksT0FBT00sR0FBRyxDQUFDRCxRQUFRLEVBQUUsQ0FBQ0wsSUFBSTtJQUc1RSx5QkFBeUI7SUFDekJ6QyxVQUFVOEIsTUFBTUYsSUFBSSxDQUFDO0lBQ3JCLE9BQU81QixRQUFReUMsSUFBSTtBQUNyQjtBQUVlLFNBQVM3QyxzQkFBc0JvRCxJQUFTLEVBQUUzQyxPQUFpQjtJQUN4RSxNQUFNNEMsa0JBQWtCRCxLQUFLRSxNQUFNLENBQUN2QixHQUFHLENBQUMsQ0FBQzNCO1FBQ3ZDLE1BQU1tRCx5QkFBeUJuRCxRQUFRQSxPQUFPLENBQUNFLFFBQVEsQ0FDckQ7UUFFRixPQUFPRSxjQUFjSixTQUFTbUQsMEJBQTBCOUM7SUFDMUQ7SUFDQSxNQUFNK0Msb0JBQW9CSixLQUFLSyxRQUFRLENBQUMxQixHQUFHLENBQUMsQ0FBQzNCO1FBQzNDLE9BQU9JLGNBQWNKLFNBQVNLO0lBQ2hDO0lBRUEsc0RBQXNEO0lBQ3RELElBQUlpRCw2QkFBNkIsQ0FBQztJQUVsQyxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSU4sZ0JBQWdCeEIsTUFBTSxFQUFFOEIsSUFBSztRQUMvQyxNQUFNQyxRQUFRUCxlQUFlLENBQUNNLEVBQUU7UUFDaEMsSUFBSUMsTUFBTXRELFFBQVEsQ0FBQywrQkFBK0I7WUFDaERvRCw2QkFBNkJDO1lBQzdCO1FBQ0Y7SUFDRjtJQUVBLDhEQUE4RDtJQUM5RCxJQUFJRCwrQkFBK0IsQ0FBQyxHQUFHO1FBQ3JDLE1BQU1FLFFBQVFQLGdCQUFnQlAsTUFBTSxDQUFDWSw0QkFBNEI7UUFDakVMLGdCQUFnQlEsT0FBTyxDQUFDRCxLQUFLLENBQUMsRUFBRTtJQUNsQztJQUVBLE1BQU1FLFNBQVM7UUFDYixHQUFHVixJQUFJO1FBQ1BFLFFBQVFEO1FBQ1JJLFVBQVVEO0lBQ1o7SUFDQSxJQUFJLENBQUMvQyxXQUFXcUQsT0FBT1IsTUFBTSxDQUFDUyxJQUFJLENBQUM1RCx1QkFBdUI7UUFDeEQsa0RBQWtEO1FBQ2xEMkQsT0FBT1IsTUFBTSxHQUFHUSxPQUFPUixNQUFNLENBQUN6QyxNQUFNLENBQUNWO1FBQ3JDMkQsT0FBT0wsUUFBUSxHQUFHLEVBQUU7SUFDdEI7SUFDQSxPQUFPSztBQUNUIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL3NoYXJlZC9saWIvZm9ybWF0LXdlYnBhY2stbWVzc2FnZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG5NSVQgTGljZW5zZVxuXG5Db3B5cmlnaHQgKGMpIDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblxuUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxub2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xudG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG5mdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG5UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbmNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG5cblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG5BVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG5MSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcblNPRlRXQVJFLlxuKi9cbmltcG9ydCBzdHJpcEFuc2kgZnJvbSAnbmV4dC9kaXN0L2NvbXBpbGVkL3N0cmlwLWFuc2knXG4vLyBUaGlzIGZpbGUgaXMgYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2NyZWF0ZS1yZWFjdC1hcHAvYmxvYi83YjFhMzJiZTZlYzlmOTlhNmM5YTNjNjY4MTNmM2FjMDljNDczNmI5L3BhY2thZ2VzL3JlYWN0LWRldi11dGlscy9mb3JtYXRXZWJwYWNrTWVzc2FnZXMuanNcbi8vIEl0J3MgYmVlbiBlZGl0ZWQgdG8gcmVtb3ZlIGNoYWxrIGFuZCBDUkEtc3BlY2lmaWMgbG9naWNcblxuY29uc3QgZnJpZW5kbHlTeW50YXhFcnJvckxhYmVsID0gJ1N5bnRheCBlcnJvcjonXG5cbmNvbnN0IFdFQlBBQ0tfQlJFQUtJTkdfQ0hBTkdFX1BPTFlGSUxMUyA9XG4gICdcXG5cXG5CUkVBS0lORyBDSEFOR0U6IHdlYnBhY2sgPCA1IHVzZWQgdG8gaW5jbHVkZSBwb2x5ZmlsbHMgZm9yIG5vZGUuanMgY29yZSBtb2R1bGVzIGJ5IGRlZmF1bHQuJ1xuXG5mdW5jdGlvbiBpc0xpa2VseUFTeW50YXhFcnJvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmlwQW5zaShtZXNzYWdlKS5pbmNsdWRlcyhmcmllbmRseVN5bnRheEVycm9yTGFiZWwpXG59XG5cbmxldCBoYWRNaXNzaW5nU2Fzc0Vycm9yID0gZmFsc2VcblxuLy8gQ2xlYW5zIHVwIHdlYnBhY2sgZXJyb3IgbWVzc2FnZXMuXG5mdW5jdGlvbiBmb3JtYXRNZXNzYWdlKFxuICBtZXNzYWdlOiBhbnksXG4gIHZlcmJvc2U/OiBib29sZWFuLFxuICBpbXBvcnRUcmFjZU5vdGU/OiBib29sZWFuXG4pIHtcbiAgLy8gVE9ETzogUmVwbGFjZSB0aGlzIG9uY2Ugd2VicGFjayA1IGlzIHN0YWJsZVxuICBpZiAodHlwZW9mIG1lc3NhZ2UgPT09ICdvYmplY3QnICYmIG1lc3NhZ2UubWVzc2FnZSkge1xuICAgIGNvbnN0IGZpbHRlcmVkTW9kdWxlVHJhY2UgPVxuICAgICAgbWVzc2FnZS5tb2R1bGVUcmFjZSAmJlxuICAgICAgbWVzc2FnZS5tb2R1bGVUcmFjZS5maWx0ZXIoXG4gICAgICAgICh0cmFjZTogYW55KSA9PlxuICAgICAgICAgICEvbmV4dC0obWlkZGxld2FyZXxjbGllbnQtcGFnZXN8cm91dGV8ZWRnZS1mdW5jdGlvbiktbG9hZGVyXFwuanMvLnRlc3QoXG4gICAgICAgICAgICB0cmFjZS5vcmlnaW5OYW1lXG4gICAgICAgICAgKVxuICAgICAgKVxuXG4gICAgbGV0IGJvZHkgPSBtZXNzYWdlLm1lc3NhZ2VcbiAgICBjb25zdCBicmVha2luZ0NoYW5nZUluZGV4ID0gYm9keS5pbmRleE9mKFdFQlBBQ0tfQlJFQUtJTkdfQ0hBTkdFX1BPTFlGSUxMUylcbiAgICBpZiAoYnJlYWtpbmdDaGFuZ2VJbmRleCA+PSAwKSB7XG4gICAgICBib2R5ID0gYm9keS5zbGljZSgwLCBicmVha2luZ0NoYW5nZUluZGV4KVxuICAgIH1cblxuICAgIC8vIFRPRE86IFJzcGFjayBjdXJyZW50bHkgZG9lc24ndCBwb3B1bGF0ZSBtb2R1bGVOYW1lIGNvcnJlY3RseSBpbiBzb21lIGNhc2VzLFxuICAgIC8vIGZhbGwgYmFjayB0byBtb2R1bGVJZGVudGlmaWVyIGFzIGEgd29ya2Fyb3VuZFxuICAgIGlmIChcbiAgICAgIHByb2Nlc3MuZW52Lk5FWFRfUlNQQUNLICYmXG4gICAgICAhbWVzc2FnZS5tb2R1bGVOYW1lICYmXG4gICAgICAhbWVzc2FnZS5maWxlICYmXG4gICAgICBtZXNzYWdlLm1vZHVsZUlkZW50aWZpZXJcbiAgICApIHtcbiAgICAgIGNvbnN0IHBhcnRzID0gbWVzc2FnZS5tb2R1bGVJZGVudGlmaWVyLnNwbGl0KCchJylcbiAgICAgIG1lc3NhZ2UubW9kdWxlTmFtZSA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdXG4gICAgfVxuXG4gICAgbWVzc2FnZSA9XG4gICAgICAobWVzc2FnZS5tb2R1bGVOYW1lID8gc3RyaXBBbnNpKG1lc3NhZ2UubW9kdWxlTmFtZSkgKyAnXFxuJyA6ICcnKSArXG4gICAgICAobWVzc2FnZS5maWxlID8gc3RyaXBBbnNpKG1lc3NhZ2UuZmlsZSkgKyAnXFxuJyA6ICcnKSArXG4gICAgICBib2R5ICtcbiAgICAgIChtZXNzYWdlLmRldGFpbHMgJiYgdmVyYm9zZSA/ICdcXG4nICsgbWVzc2FnZS5kZXRhaWxzIDogJycpICtcbiAgICAgIChmaWx0ZXJlZE1vZHVsZVRyYWNlICYmIGZpbHRlcmVkTW9kdWxlVHJhY2UubGVuZ3RoXG4gICAgICAgID8gKGltcG9ydFRyYWNlTm90ZSB8fCAnXFxuXFxuSW1wb3J0IHRyYWNlIGZvciByZXF1ZXN0ZWQgbW9kdWxlOicpICtcbiAgICAgICAgICBmaWx0ZXJlZE1vZHVsZVRyYWNlXG4gICAgICAgICAgICAubWFwKCh0cmFjZTogYW55KSA9PiBgXFxuJHt0cmFjZS5tb2R1bGVOYW1lfWApXG4gICAgICAgICAgICAuam9pbignJylcbiAgICAgICAgOiAnJykgK1xuICAgICAgKG1lc3NhZ2Uuc3RhY2sgJiYgdmVyYm9zZSA/ICdcXG4nICsgbWVzc2FnZS5zdGFjayA6ICcnKVxuICB9XG4gIGxldCBsaW5lcyA9IG1lc3NhZ2Uuc3BsaXQoJ1xcbicpXG5cbiAgLy8gRXh0cmFjdCBsb2FkZXIgcGF0aHMgZnJvbSBXZWJwYWNrLWFkZGVkIGhlYWRlcnMgYW5kIG1vdmUgdGhlbSB0byBlbmQuXG4gIC8vIE9yaWdpbmFsIGZvcm1hdDogXCJNb2R1bGUgYnVpbGQgZmFpbGVkIChmcm9tIC4vbG9hZGVycy9mb28tbG9hZGVyLmpzKTpcIlxuICAvLyBUaGUgaGVhZGVyIGxpbmUgaXMgcmVtb3ZlZCBhbmQgdGhlIHBhdGggaXMgYXBwZW5kZWQgYXQgdGhlIGVuZCBhczpcbiAgLy8gICBcIiAgKGZyb20gLi9sb2FkZXJzL2Zvby1sb2FkZXIuanMpXCJcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2svd2VicGFjay9ibG9iL21hc3Rlci9saWIvTW9kdWxlRXJyb3IuanNcbiAgY29uc3QgbG9hZGVyUGF0aHM6IHN0cmluZ1tdID0gW11cbiAgbGluZXMgPSBsaW5lcy5maWx0ZXIoKGxpbmU6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IG1hdGNoID0gL01vZHVsZSBbQS16IF0rXFwoZnJvbSAoLispXFwpOj9cXHMqJC8uZXhlYyhsaW5lKVxuICAgIGlmIChtYXRjaCkge1xuICAgICAgbG9hZGVyUGF0aHMucHVzaChtYXRjaFsxXSlcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZVxuICB9KVxuXG4gIC8vIFRyYW5zZm9ybSBwYXJzaW5nIGVycm9yIGludG8gc3ludGF4IGVycm9yXG4gIC8vIFRPRE86IG1vdmUgdGhpcyB0byBvdXIgRVNMaW50IGZvcm1hdHRlcj9cbiAgbGluZXMgPSBsaW5lcy5tYXAoKGxpbmU6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHBhcnNpbmdFcnJvciA9IC9MaW5lIChcXGQrKTooPzooXFxkKyk6KT9cXHMqUGFyc2luZyBlcnJvcjogKC4rKSQvLmV4ZWMoXG4gICAgICBsaW5lXG4gICAgKVxuICAgIGlmICghcGFyc2luZ0Vycm9yKSB7XG4gICAgICByZXR1cm4gbGluZVxuICAgIH1cbiAgICBjb25zdCBbLCBlcnJvckxpbmUsIGVycm9yQ29sdW1uLCBlcnJvck1lc3NhZ2VdID0gcGFyc2luZ0Vycm9yXG4gICAgcmV0dXJuIGAke2ZyaWVuZGx5U3ludGF4RXJyb3JMYWJlbH0gJHtlcnJvck1lc3NhZ2V9ICgke2Vycm9yTGluZX06JHtlcnJvckNvbHVtbn0pYFxuICB9KVxuXG4gIG1lc3NhZ2UgPSBsaW5lcy5qb2luKCdcXG4nKVxuICAvLyBTbW9vc2ggc3ludGF4IGVycm9ycyAoY29tbW9ubHkgZm91bmQgaW4gQ1NTKVxuICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKFxuICAgIC9TeW50YXhFcnJvclxccytcXCgoXFxkKyk6KFxcZCspXFwpXFxzKiguKz8pXFxuL2csXG4gICAgYCR7ZnJpZW5kbHlTeW50YXhFcnJvckxhYmVsfSAkMyAoJDE6JDIpXFxuYFxuICApXG4gIC8vIENsZWFuIHVwIGV4cG9ydCBlcnJvcnNcbiAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZShcbiAgICAvXi4qZXhwb3J0ICcoLis/KScgd2FzIG5vdCBmb3VuZCBpbiAnKC4rPyknLiokL2dtLFxuICAgIGBBdHRlbXB0ZWQgaW1wb3J0IGVycm9yOiAnJDEnIGlzIG5vdCBleHBvcnRlZCBmcm9tICckMicuYFxuICApXG4gIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoXG4gICAgL14uKmV4cG9ydCAnZGVmYXVsdCcgXFwoaW1wb3J0ZWQgYXMgJyguKz8pJ1xcKSB3YXMgbm90IGZvdW5kIGluICcoLis/KScuKiQvZ20sXG4gICAgYEF0dGVtcHRlZCBpbXBvcnQgZXJyb3I6ICckMicgZG9lcyBub3QgY29udGFpbiBhIGRlZmF1bHQgZXhwb3J0IChpbXBvcnRlZCBhcyAnJDEnKS5gXG4gIClcbiAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZShcbiAgICAvXi4qZXhwb3J0ICcoLis/KScgXFwoaW1wb3J0ZWQgYXMgJyguKz8pJ1xcKSB3YXMgbm90IGZvdW5kIGluICcoLis/KScuKiQvZ20sXG4gICAgYEF0dGVtcHRlZCBpbXBvcnQgZXJyb3I6ICckMScgaXMgbm90IGV4cG9ydGVkIGZyb20gJyQzJyAoaW1wb3J0ZWQgYXMgJyQyJykuYFxuICApXG4gIGxpbmVzID0gbWVzc2FnZS5zcGxpdCgnXFxuJylcblxuICAvLyBSZW1vdmUgbGVhZGluZyBuZXdsaW5lXG4gIGlmIChsaW5lcy5sZW5ndGggPiAyICYmIGxpbmVzWzFdLnRyaW0oKSA9PT0gJycpIHtcbiAgICBsaW5lcy5zcGxpY2UoMSwgMSlcbiAgfVxuXG4gIC8vIENsZWFucyB1cCB2ZXJib3NlIFwibW9kdWxlIG5vdCBmb3VuZFwiIG1lc3NhZ2VzIGZvciBmaWxlcyBhbmQgcGFja2FnZXMuXG4gIGlmIChsaW5lc1sxXSAmJiBsaW5lc1sxXS5zdGFydHNXaXRoKCdNb2R1bGUgbm90IGZvdW5kOiAnKSkge1xuICAgIGxpbmVzID0gW1xuICAgICAgbGluZXNbMF0sXG4gICAgICBsaW5lc1sxXVxuICAgICAgICAucmVwbGFjZSgnRXJyb3I6ICcsICcnKVxuICAgICAgICAucmVwbGFjZSgnTW9kdWxlIG5vdCBmb3VuZDogQ2Fubm90IGZpbmQgZmlsZTonLCAnQ2Fubm90IGZpbmQgZmlsZTonKSxcbiAgICAgIC4uLmxpbmVzLnNsaWNlKDIpLFxuICAgIF1cbiAgfVxuXG4gIC8vIEFkZCBoZWxwZnVsIG1lc3NhZ2UgZm9yIHVzZXJzIHRyeWluZyB0byB1c2UgU2FzcyBmb3IgdGhlIGZpcnN0IHRpbWVcbiAgaWYgKGxpbmVzWzFdICYmIGxpbmVzWzFdLm1hdGNoKC9DYW5ub3QgZmluZCBtb2R1bGUuK3Nhc3MvKSkge1xuICAgIC8vIC4vZmlsZS5tb2R1bGUuc2NzcyAoPDxsb2FkZXIgaW5mbz4+KSA9PiAuL2ZpbGUubW9kdWxlLnNjc3NcbiAgICBjb25zdCBmaXJzdExpbmUgPSBsaW5lc1swXS5zcGxpdCgnIScpXG4gICAgbGluZXNbMF0gPSBmaXJzdExpbmVbZmlyc3RMaW5lLmxlbmd0aCAtIDFdXG5cbiAgICBsaW5lc1sxXSA9XG4gICAgICBcIlRvIHVzZSBOZXh0LmpzJyBidWlsdC1pbiBTYXNzIHN1cHBvcnQsIHlvdSBmaXJzdCBuZWVkIHRvIGluc3RhbGwgYHNhc3NgLlxcblwiXG4gICAgbGluZXNbMV0gKz0gJ1J1biBgbnBtIGkgc2Fzc2Agb3IgYHlhcm4gYWRkIHNhc3NgIGluc2lkZSB5b3VyIHdvcmtzcGFjZS5cXG4nXG4gICAgbGluZXNbMV0gKz0gJ1xcbkxlYXJuIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2luc3RhbGwtc2FzcydcblxuICAgIC8vIGRpc3Bvc2Ugb2YgdW5oZWxwZnVsIHN0YWNrIHRyYWNlXG4gICAgbGluZXMgPSBsaW5lcy5zbGljZSgwLCAyKVxuICAgIGhhZE1pc3NpbmdTYXNzRXJyb3IgPSB0cnVlXG4gIH0gZWxzZSBpZiAoXG4gICAgaGFkTWlzc2luZ1Nhc3NFcnJvciAmJlxuICAgIG1lc3NhZ2UubWF0Y2goLyhzYXNzLWxvYWRlcnxyZXNvbHZlLXVybC1sb2FkZXI6IENTUyBlcnJvcikvKVxuICApIHtcbiAgICAvLyBkaXNwb3NlIG9mIHVuaGVscGZ1bCBzdGFjayB0cmFjZSBmb2xsb3dpbmcgbWlzc2luZyBzYXNzIG1vZHVsZVxuICAgIGxpbmVzID0gW11cbiAgfVxuXG4gIGlmICghdmVyYm9zZSkge1xuICAgIG1lc3NhZ2UgPSBsaW5lcy5qb2luKCdcXG4nKVxuICAgIC8vIEludGVybmFsIHN0YWNrcyBhcmUgZ2VuZXJhbGx5IHVzZWxlc3Mgc28gd2Ugc3RyaXAgdGhlbS4uLiB3aXRoIHRoZVxuICAgIC8vIGV4Y2VwdGlvbiBvZiBzdGFja3MgY29udGFpbmluZyBgd2VicGFjazpgIGJlY2F1c2UgdGhleSdyZSBub3JtYWxseVxuICAgIC8vIGZyb20gdXNlciBjb2RlIGdlbmVyYXRlZCBieSBXZWJwYWNrLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWVcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svY3JlYXRlLXJlYWN0LWFwcC9wdWxsLzEwNTBcbiAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKFxuICAgICAgL15cXHMqYXRcXHMoKD8hd2VicGFjazopLikqOlxcZCs6XFxkK1tcXHMpXSooXFxufCQpL2dtLFxuICAgICAgJydcbiAgICApIC8vIGF0IC4uLiAuLi46eDp5XG4gICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgvXlxccyphdFxcczxhbm9ueW1vdXM+KFxcbnwkKS9nbSwgJycpIC8vIGF0IDxhbm9ueW1vdXM+XG5cbiAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKFxuICAgICAgL0ZpbGUgd2FzIHByb2Nlc3NlZCB3aXRoIHRoZXNlIGxvYWRlcnM6XFxuKC4rW1xcXFwvXShuZXh0W1xcXFwvXWRpc3RbXFxcXC9dLit8QG5leHRbXFxcXC9dcmVhY3QtcmVmcmVzaC11dGlsc1tcXFxcL11sb2FkZXIpXFwuanNcXG4pKllvdSBtYXkgbmVlZCBhbiBhZGRpdGlvbmFsIGxvYWRlciB0byBoYW5kbGUgdGhlIHJlc3VsdCBvZiB0aGVzZSBsb2FkZXJzLlxcbi9nLFxuICAgICAgJydcbiAgICApXG5cbiAgICBsaW5lcyA9IG1lc3NhZ2Uuc3BsaXQoJ1xcbicpXG4gIH1cblxuICAvLyBBcHBlbmQgbG9hZGVyIHBhdGhzIGF0IHRoZSBlbmQgKGJlZm9yZSBhbnkgcmVtYWluaW5nIHN0YWNrIHRyYWNlKVxuICBpZiAobG9hZGVyUGF0aHMubGVuZ3RoID4gMCkge1xuICAgIGZvciAoY29uc3QgbG9hZGVyUGF0aCBvZiBsb2FkZXJQYXRocykge1xuICAgICAgLy8gRG9uJ3Qgc2hvdyBpbnRlcm5hbCBOZXh0LmpzIGxvYWRlciBwYXRocyDigJQgdGhleSdyZSBub2lzZSBmb3IgdXNlcnNcbiAgICAgIGlmICghL1svXFxcXF1uZXh0Wy9cXFxcXWRpc3RbL1xcXFxdLy50ZXN0KGxvYWRlclBhdGgpKSB7XG4gICAgICAgIGxpbmVzLnB1c2goYCAgKGZyb20gJHtsb2FkZXJQYXRofSlgKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlbW92ZSBkdXBsaWNhdGVkIG5ld2xpbmVzXG4gIGxpbmVzID0gKGxpbmVzIGFzIHN0cmluZ1tdKS5maWx0ZXIoXG4gICAgKGxpbmUsIGluZGV4LCBhcnIpID0+XG4gICAgICBpbmRleCA9PT0gMCB8fCBsaW5lLnRyaW0oKSAhPT0gJycgfHwgbGluZS50cmltKCkgIT09IGFycltpbmRleCAtIDFdLnRyaW0oKVxuICApXG5cbiAgLy8gUmVhc3NlbWJsZSB0aGUgbWVzc2FnZVxuICBtZXNzYWdlID0gbGluZXMuam9pbignXFxuJylcbiAgcmV0dXJuIG1lc3NhZ2UudHJpbSgpXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdFdlYnBhY2tNZXNzYWdlcyhqc29uOiBhbnksIHZlcmJvc2U/OiBib29sZWFuKSB7XG4gIGNvbnN0IGZvcm1hdHRlZEVycm9ycyA9IGpzb24uZXJyb3JzLm1hcCgobWVzc2FnZTogYW55KSA9PiB7XG4gICAgY29uc3QgaXNVbmtub3duTmV4dEZvbnRFcnJvciA9IG1lc3NhZ2UubWVzc2FnZS5pbmNsdWRlcyhcbiAgICAgICdBbiBlcnJvciBvY2N1cnJlZCBpbiBgbmV4dC9mb250YC4nXG4gICAgKVxuICAgIHJldHVybiBmb3JtYXRNZXNzYWdlKG1lc3NhZ2UsIGlzVW5rbm93bk5leHRGb250RXJyb3IgfHwgdmVyYm9zZSlcbiAgfSlcbiAgY29uc3QgZm9ybWF0dGVkV2FybmluZ3MgPSBqc29uLndhcm5pbmdzLm1hcCgobWVzc2FnZTogYW55KSA9PiB7XG4gICAgcmV0dXJuIGZvcm1hdE1lc3NhZ2UobWVzc2FnZSwgdmVyYm9zZSlcbiAgfSlcblxuICAvLyBSZW9yZGVyIGVycm9ycyB0byBwdXQgdGhlIG1vc3QgcmVsZXZhbnQgb25lcyBmaXJzdC5cbiAgbGV0IHJlYWN0U2VydmVyQ29tcG9uZW50c0Vycm9yID0gLTFcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGZvcm1hdHRlZEVycm9ycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGVycm9yID0gZm9ybWF0dGVkRXJyb3JzW2ldXG4gICAgaWYgKGVycm9yLmluY2x1ZGVzKCdSZWFjdFNlcnZlckNvbXBvbmVudHNFcnJvcicpKSB7XG4gICAgICByZWFjdFNlcnZlckNvbXBvbmVudHNFcnJvciA9IGlcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgLy8gTW92ZSB0aGUgcmVhY3RTZXJ2ZXJDb21wb25lbnRzRXJyb3IgdG8gdGhlIHRvcCBpZiBpdCBleGlzdHNcbiAgaWYgKHJlYWN0U2VydmVyQ29tcG9uZW50c0Vycm9yICE9PSAtMSkge1xuICAgIGNvbnN0IGVycm9yID0gZm9ybWF0dGVkRXJyb3JzLnNwbGljZShyZWFjdFNlcnZlckNvbXBvbmVudHNFcnJvciwgMSlcbiAgICBmb3JtYXR0ZWRFcnJvcnMudW5zaGlmdChlcnJvclswXSlcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAuLi5qc29uLFxuICAgIGVycm9yczogZm9ybWF0dGVkRXJyb3JzLFxuICAgIHdhcm5pbmdzOiBmb3JtYXR0ZWRXYXJuaW5ncyxcbiAgfVxuICBpZiAoIXZlcmJvc2UgJiYgcmVzdWx0LmVycm9ycy5zb21lKGlzTGlrZWx5QVN5bnRheEVycm9yKSkge1xuICAgIC8vIElmIHRoZXJlIGFyZSBhbnkgc3ludGF4IGVycm9ycywgc2hvdyBqdXN0IHRoZW0uXG4gICAgcmVzdWx0LmVycm9ycyA9IHJlc3VsdC5lcnJvcnMuZmlsdGVyKGlzTGlrZWx5QVN5bnRheEVycm9yKVxuICAgIHJlc3VsdC53YXJuaW5ncyA9IFtdXG4gIH1cbiAgcmV0dXJuIHJlc3VsdFxufVxuIl0sIm5hbWVzIjpbImZvcm1hdFdlYnBhY2tNZXNzYWdlcyIsImZyaWVuZGx5U3ludGF4RXJyb3JMYWJlbCIsIldFQlBBQ0tfQlJFQUtJTkdfQ0hBTkdFX1BPTFlGSUxMUyIsImlzTGlrZWx5QVN5bnRheEVycm9yIiwibWVzc2FnZSIsInN0cmlwQW5zaSIsImluY2x1ZGVzIiwiaGFkTWlzc2luZ1Nhc3NFcnJvciIsImZvcm1hdE1lc3NhZ2UiLCJ2ZXJib3NlIiwiaW1wb3J0VHJhY2VOb3RlIiwiZmlsdGVyZWRNb2R1bGVUcmFjZSIsIm1vZHVsZVRyYWNlIiwiZmlsdGVyIiwidHJhY2UiLCJ0ZXN0Iiwib3JpZ2luTmFtZSIsImJvZHkiLCJicmVha2luZ0NoYW5nZUluZGV4IiwiaW5kZXhPZiIsInNsaWNlIiwicHJvY2VzcyIsImVudiIsIk5FWFRfUlNQQUNLIiwibW9kdWxlTmFtZSIsImZpbGUiLCJtb2R1bGVJZGVudGlmaWVyIiwicGFydHMiLCJzcGxpdCIsImxlbmd0aCIsImRldGFpbHMiLCJtYXAiLCJqb2luIiwic3RhY2siLCJsaW5lcyIsImxvYWRlclBhdGhzIiwibGluZSIsIm1hdGNoIiwiZXhlYyIsInB1c2giLCJwYXJzaW5nRXJyb3IiLCJlcnJvckxpbmUiLCJlcnJvckNvbHVtbiIsImVycm9yTWVzc2FnZSIsInJlcGxhY2UiLCJ0cmltIiwic3BsaWNlIiwic3RhcnRzV2l0aCIsImZpcnN0TGluZSIsImxvYWRlclBhdGgiLCJpbmRleCIsImFyciIsImpzb24iLCJmb3JtYXR0ZWRFcnJvcnMiLCJlcnJvcnMiLCJpc1Vua25vd25OZXh0Rm9udEVycm9yIiwiZm9ybWF0dGVkV2FybmluZ3MiLCJ3YXJuaW5ncyIsInJlYWN0U2VydmVyQ29tcG9uZW50c0Vycm9yIiwiaSIsImVycm9yIiwidW5zaGlmdCIsInJlc3VsdCIsInNvbWUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/format-webpack-messages.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/hash.js":
|
||
/*!***************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/hash.js ***!
|
||
\***************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("// http://www.cse.yorku.ca/~oz/hash.html\n// More specifically, 32-bit hash via djbxor\n// (ref: https://gist.github.com/eplawless/52813b1d8ad9af510d85?permalink_comment_id=3367765#gistcomment-3367765)\n// This is due to number type differences between rust for turbopack to js number types,\n// where rust does not have easy way to repreesnt js's 53-bit float number type for the matching\n// overflow behavior. This is more `correct` in terms of having canonical hash across different runtime / implementation\n// as can gaurantee determinstic output from 32bit hash.\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n djb2Hash: function() {\n return djb2Hash;\n },\n hexHash: function() {\n return hexHash;\n }\n});\nfunction djb2Hash(str) {\n let hash = 5381;\n for(let i = 0; i < str.length; i++){\n const char = str.charCodeAt(i);\n hash = (hash << 5) + hash + char & 0xffffffff;\n }\n return hash >>> 0;\n}\nfunction hexHash(str) {\n return djb2Hash(str).toString(36).slice(0, 5);\n} //# sourceMappingURL=hash.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvaGFzaC5qcyIsIm1hcHBpbmdzIjoiQUFBQSx3Q0FBd0M7QUFDeEMsNENBQTRDO0FBQzVDLGlIQUFpSDtBQUNqSCx3RkFBd0Y7QUFDeEYsZ0dBQWdHO0FBQ2hHLHdIQUF3SDtBQUN4SCx3REFBd0Q7Ozs7Ozs7Ozs7Ozs7SUFDeENBLFFBQVE7ZUFBUkE7O0lBU0FDLE9BQU87ZUFBUEE7OztBQVRULFNBQVNELFNBQVNFLEdBQVc7SUFDbEMsSUFBSUMsT0FBTztJQUNYLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJRixJQUFJRyxNQUFNLEVBQUVELElBQUs7UUFDbkMsTUFBTUUsT0FBT0osSUFBSUssVUFBVSxDQUFDSDtRQUM1QkQsT0FBU0EsQ0FBQUEsU0FBUSxJQUFLQSxPQUFPRyxPQUFRO0lBQ3ZDO0lBQ0EsT0FBT0gsU0FBUztBQUNsQjtBQUVPLFNBQVNGLFFBQVFDLEdBQVc7SUFDakMsT0FBT0YsU0FBU0UsS0FBS00sUUFBUSxDQUFDLElBQUlDLEtBQUssQ0FBQyxHQUFHO0FBQzdDIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL3NoYXJlZC9saWIvaGFzaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwOi8vd3d3LmNzZS55b3JrdS5jYS9+b3ovaGFzaC5odG1sXG4vLyBNb3JlIHNwZWNpZmljYWxseSwgMzItYml0IGhhc2ggdmlhIGRqYnhvclxuLy8gKHJlZjogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vZXBsYXdsZXNzLzUyODEzYjFkOGFkOWFmNTEwZDg1P3Blcm1hbGlua19jb21tZW50X2lkPTMzNjc3NjUjZ2lzdGNvbW1lbnQtMzM2Nzc2NSlcbi8vIFRoaXMgaXMgZHVlIHRvIG51bWJlciB0eXBlIGRpZmZlcmVuY2VzIGJldHdlZW4gcnVzdCBmb3IgdHVyYm9wYWNrIHRvIGpzIG51bWJlciB0eXBlcyxcbi8vIHdoZXJlIHJ1c3QgZG9lcyBub3QgaGF2ZSBlYXN5IHdheSB0byByZXByZWVzbnQganMncyA1My1iaXQgZmxvYXQgbnVtYmVyIHR5cGUgZm9yIHRoZSBtYXRjaGluZ1xuLy8gb3ZlcmZsb3cgYmVoYXZpb3IuIFRoaXMgaXMgbW9yZSBgY29ycmVjdGAgaW4gdGVybXMgb2YgaGF2aW5nIGNhbm9uaWNhbCBoYXNoIGFjcm9zcyBkaWZmZXJlbnQgcnVudGltZSAvIGltcGxlbWVudGF0aW9uXG4vLyBhcyBjYW4gZ2F1cmFudGVlIGRldGVybWluc3RpYyBvdXRwdXQgZnJvbSAzMmJpdCBoYXNoLlxuZXhwb3J0IGZ1bmN0aW9uIGRqYjJIYXNoKHN0cjogc3RyaW5nKSB7XG4gIGxldCBoYXNoID0gNTM4MVxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNoYXIgPSBzdHIuY2hhckNvZGVBdChpKVxuICAgIGhhc2ggPSAoKGhhc2ggPDwgNSkgKyBoYXNoICsgY2hhcikgJiAweGZmZmZmZmZmXG4gIH1cbiAgcmV0dXJuIGhhc2ggPj4+IDBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhleEhhc2goc3RyOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGRqYjJIYXNoKHN0cikudG9TdHJpbmcoMzYpLnNsaWNlKDAsIDUpXG59XG4iXSwibmFtZXMiOlsiZGpiMkhhc2giLCJoZXhIYXNoIiwic3RyIiwiaGFzaCIsImkiLCJsZW5ndGgiLCJjaGFyIiwiY2hhckNvZGVBdCIsInRvU3RyaW5nIiwic2xpY2UiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/hash.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/invariant-error.js":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/invariant-error.js ***!
|
||
\**************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"InvariantError\", ({\n enumerable: true,\n get: function() {\n return InvariantError;\n }\n}));\nclass InvariantError extends Error {\n constructor(message, options){\n super(`Invariant: ${message.endsWith('.') ? message : message + '.'} This is a bug in Next.js.`, options);\n this.name = 'InvariantError';\n }\n} //# sourceMappingURL=invariant-error.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvaW52YXJpYW50LWVycm9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7a0RBQWFBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLHVCQUF1QkM7SUFDbENDLFlBQVlDLE9BQWUsRUFBRUMsT0FBc0IsQ0FBRTtRQUNuRCxLQUFLLENBQ0gsQ0FBQyxXQUFXLEVBQUVELFFBQVFFLFFBQVEsQ0FBQyxPQUFPRixVQUFVQSxVQUFVLElBQUksMEJBQTBCLENBQUMsRUFDekZDO1FBRUYsSUFBSSxDQUFDRSxJQUFJLEdBQUc7SUFDZDtBQUNGIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL3NoYXJlZC9saWIvaW52YXJpYW50LWVycm9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBJbnZhcmlhbnRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBvcHRpb25zPzogRXJyb3JPcHRpb25zKSB7XG4gICAgc3VwZXIoXG4gICAgICBgSW52YXJpYW50OiAke21lc3NhZ2UuZW5kc1dpdGgoJy4nKSA/IG1lc3NhZ2UgOiBtZXNzYWdlICsgJy4nfSBUaGlzIGlzIGEgYnVnIGluIE5leHQuanMuYCxcbiAgICAgIG9wdGlvbnNcbiAgICApXG4gICAgdGhpcy5uYW1lID0gJ0ludmFyaWFudEVycm9yJ1xuICB9XG59XG4iXSwibmFtZXMiOlsiSW52YXJpYW50RXJyb3IiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwibWVzc2FnZSIsIm9wdGlvbnMiLCJlbmRzV2l0aCIsIm5hbWUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/invariant-error.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/is-plain-object.js":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/is-plain-object.js ***!
|
||
\**************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getObjectClassLabel: function() {\n return getObjectClassLabel;\n },\n isPlainObject: function() {\n return isPlainObject;\n }\n});\nfunction getObjectClassLabel(value) {\n return Object.prototype.toString.call(value);\n}\nfunction isPlainObject(value) {\n if (getObjectClassLabel(value) !== '[object Object]') {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n /**\n * this used to be previously:\n *\n * `return prototype === null || prototype === Object.prototype`\n *\n * but Edge Runtime expose Object from vm, being that kind of type-checking wrongly fail.\n *\n * It was changed to the current implementation since it's resilient to serialization.\n */ return prototype === null || prototype.hasOwnProperty('isPrototypeOf');\n} //# sourceMappingURL=is-plain-object.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvaXMtcGxhaW4tb2JqZWN0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUFnQkEsbUJBQW1CO2VBQW5CQTs7SUFJQUMsYUFBYTtlQUFiQTs7O0FBSlQsU0FBU0Qsb0JBQW9CRSxLQUFVO0lBQzVDLE9BQU9DLE9BQU9DLFNBQVMsQ0FBQ0MsUUFBUSxDQUFDQyxJQUFJLENBQUNKO0FBQ3hDO0FBRU8sU0FBU0QsY0FBY0MsS0FBVTtJQUN0QyxJQUFJRixvQkFBb0JFLFdBQVcsbUJBQW1CO1FBQ3BELE9BQU87SUFDVDtJQUVBLE1BQU1FLFlBQVlELE9BQU9JLGNBQWMsQ0FBQ0w7SUFFeEM7Ozs7Ozs7O0dBUUMsR0FDRCxPQUFPRSxjQUFjLFFBQVFBLFVBQVVJLGNBQWMsQ0FBQztBQUN4RCIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9zaGFyZWQvbGliL2lzLXBsYWluLW9iamVjdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2V0T2JqZWN0Q2xhc3NMYWJlbCh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICBpZiAoZ2V0T2JqZWN0Q2xhc3NMYWJlbCh2YWx1ZSkgIT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBjb25zdCBwcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpXG5cbiAgLyoqXG4gICAqIHRoaXMgdXNlZCB0byBiZSBwcmV2aW91c2x5OlxuICAgKlxuICAgKiBgcmV0dXJuIHByb3RvdHlwZSA9PT0gbnVsbCB8fCBwcm90b3R5cGUgPT09IE9iamVjdC5wcm90b3R5cGVgXG4gICAqXG4gICAqIGJ1dCBFZGdlIFJ1bnRpbWUgZXhwb3NlIE9iamVjdCBmcm9tIHZtLCBiZWluZyB0aGF0IGtpbmQgb2YgdHlwZS1jaGVja2luZyB3cm9uZ2x5IGZhaWwuXG4gICAqXG4gICAqIEl0IHdhcyBjaGFuZ2VkIHRvIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHNpbmNlIGl0J3MgcmVzaWxpZW50IHRvIHNlcmlhbGl6YXRpb24uXG4gICAqL1xuICByZXR1cm4gcHJvdG90eXBlID09PSBudWxsIHx8IHByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgnaXNQcm90b3R5cGVPZicpXG59XG4iXSwibmFtZXMiOlsiZ2V0T2JqZWN0Q2xhc3NMYWJlbCIsImlzUGxhaW5PYmplY3QiLCJ2YWx1ZSIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwiY2FsbCIsImdldFByb3RvdHlwZU9mIiwiaGFzT3duUHJvcGVydHkiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/is-plain-object.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/is-thenable.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/is-thenable.js ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * Check to see if a value is Thenable.\n *\n * @param promise the maybe-thenable value\n * @returns true if the value is thenable\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"isThenable\", ({\n enumerable: true,\n get: function() {\n return isThenable;\n }\n}));\nfunction isThenable(promise) {\n return promise !== null && typeof promise === 'object' && 'then' in promise && typeof promise.then === 'function';\n} //# sourceMappingURL=is-thenable.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvaXMtdGhlbmFibGUuanMiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0NBS0M7Ozs7OENBQ2VBOzs7ZUFBQUE7OztBQUFULFNBQVNBLFdBQ2RDLE9BQXVCO0lBRXZCLE9BQ0VBLFlBQVksUUFDWixPQUFPQSxZQUFZLFlBQ25CLFVBQVVBLFdBQ1YsT0FBT0EsUUFBUUMsSUFBSSxLQUFLO0FBRTVCIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL3NoYXJlZC9saWIvaXMtdGhlbmFibGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDaGVjayB0byBzZWUgaWYgYSB2YWx1ZSBpcyBUaGVuYWJsZS5cbiAqXG4gKiBAcGFyYW0gcHJvbWlzZSB0aGUgbWF5YmUtdGhlbmFibGUgdmFsdWVcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIHZhbHVlIGlzIHRoZW5hYmxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1RoZW5hYmxlPFQgPSB1bmtub3duPihcbiAgcHJvbWlzZTogUHJvbWlzZTxUPiB8IFRcbik6IHByb21pc2UgaXMgUHJvbWlzZTxUPiB7XG4gIHJldHVybiAoXG4gICAgcHJvbWlzZSAhPT0gbnVsbCAmJlxuICAgIHR5cGVvZiBwcm9taXNlID09PSAnb2JqZWN0JyAmJlxuICAgICd0aGVuJyBpbiBwcm9taXNlICYmXG4gICAgdHlwZW9mIHByb21pc2UudGhlbiA9PT0gJ2Z1bmN0aW9uJ1xuICApXG59XG4iXSwibmFtZXMiOlsiaXNUaGVuYWJsZSIsInByb21pc2UiLCJ0aGVuIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/is-thenable.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js ***!
|
||
\**************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("// This has to be a shared module which is shared between client component error boundary and dynamic component\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n BailoutToCSRError: function() {\n return BailoutToCSRError;\n },\n isBailoutToCSRError: function() {\n return isBailoutToCSRError;\n }\n});\nconst BAILOUT_TO_CSR = 'BAILOUT_TO_CLIENT_SIDE_RENDERING';\nclass BailoutToCSRError extends Error {\n constructor(reason){\n super(`Bail out to client-side rendering: ${reason}`), this.reason = reason, this.digest = BAILOUT_TO_CSR;\n }\n}\nfunction isBailoutToCSRError(err) {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false;\n }\n return err.digest === BAILOUT_TO_CSR;\n} //# sourceMappingURL=bailout-to-csr.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvbGF6eS1keW5hbWljL2JhaWxvdXQtdG8tY3NyLmpzIiwibWFwcGluZ3MiOiJBQUFBLCtHQUErRzs7Ozs7Ozs7Ozs7OztJQUlsR0EsaUJBQWlCO2VBQWpCQTs7SUFTR0MsbUJBQW1CO2VBQW5CQTs7O0FBWmhCLE1BQU1DLGlCQUFpQjtBQUdoQixNQUFNRiwwQkFBMEJHO0lBR3JDQyxZQUE0QkMsTUFBYyxDQUFFO1FBQzFDLEtBQUssQ0FBQyxDQUFDLG1DQUFtQyxFQUFFQSxRQUFRLFFBRDFCQSxNQUFBQSxHQUFBQSxRQUFBQSxJQUFBQSxDQUZaQyxNQUFBQSxHQUFTSjtJQUl6QjtBQUNGO0FBR08sU0FBU0Qsb0JBQW9CTSxHQUFZO0lBQzlDLElBQUksT0FBT0EsUUFBUSxZQUFZQSxRQUFRLFFBQVEsQ0FBRSxhQUFZQSxHQUFBQSxDQUFFLEVBQUk7UUFDakUsT0FBTztJQUNUO0lBRUEsT0FBT0EsSUFBSUQsTUFBTSxLQUFLSjtBQUN4QiIsInNvdXJjZXMiOlsiL1VzZXJzL3NyYy9zaGFyZWQvbGliL2xhenktZHluYW1pYy9iYWlsb3V0LXRvLWNzci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGhhcyB0byBiZSBhIHNoYXJlZCBtb2R1bGUgd2hpY2ggaXMgc2hhcmVkIGJldHdlZW4gY2xpZW50IGNvbXBvbmVudCBlcnJvciBib3VuZGFyeSBhbmQgZHluYW1pYyBjb21wb25lbnRcbmNvbnN0IEJBSUxPVVRfVE9fQ1NSID0gJ0JBSUxPVVRfVE9fQ0xJRU5UX1NJREVfUkVOREVSSU5HJ1xuXG4vKiogQW4gZXJyb3IgdGhhdCBzaG91bGQgYmUgdGhyb3duIHdoZW4gd2Ugd2FudCB0byBiYWlsIG91dCB0byBjbGllbnQtc2lkZSByZW5kZXJpbmcuICovXG5leHBvcnQgY2xhc3MgQmFpbG91dFRvQ1NSRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHB1YmxpYyByZWFkb25seSBkaWdlc3QgPSBCQUlMT1VUX1RPX0NTUlxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSByZWFzb246IHN0cmluZykge1xuICAgIHN1cGVyKGBCYWlsIG91dCB0byBjbGllbnQtc2lkZSByZW5kZXJpbmc6ICR7cmVhc29ufWApXG4gIH1cbn1cblxuLyoqIENoZWNrcyBpZiBhIHBhc3NlZCBhcmd1bWVudCBpcyBhbiBlcnJvciB0aGF0IGlzIHRocm93biBpZiB3ZSB3YW50IHRvIGJhaWwgb3V0IHRvIGNsaWVudC1zaWRlIHJlbmRlcmluZy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0JhaWxvdXRUb0NTUkVycm9yKGVycjogdW5rbm93bik6IGVyciBpcyBCYWlsb3V0VG9DU1JFcnJvciB7XG4gIGlmICh0eXBlb2YgZXJyICE9PSAnb2JqZWN0JyB8fCBlcnIgPT09IG51bGwgfHwgISgnZGlnZXN0JyBpbiBlcnIpKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gZXJyLmRpZ2VzdCA9PT0gQkFJTE9VVF9UT19DU1Jcbn1cbiJdLCJuYW1lcyI6WyJCYWlsb3V0VG9DU1JFcnJvciIsImlzQmFpbG91dFRvQ1NSRXJyb3IiLCJCQUlMT1VUX1RPX0NTUiIsIkVycm9yIiwiY29uc3RydWN0b3IiLCJyZWFzb24iLCJkaWdlc3QiLCJlcnIiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/normalized-asset-prefix.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/normalized-asset-prefix.js ***!
|
||
\**********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"normalizedAssetPrefix\", ({\n enumerable: true,\n get: function() {\n return normalizedAssetPrefix;\n }\n}));\nfunction normalizedAssetPrefix(assetPrefix) {\n // remove all leading slashes and trailing slashes\n const escapedAssetPrefix = assetPrefix?.replace(/^\\/+|\\/+$/g, '') || false;\n // if an assetPrefix was '/', we return empty string\n // because it could be an unnecessary trailing slash\n if (!escapedAssetPrefix) {\n return '';\n }\n if (URL.canParse(escapedAssetPrefix)) {\n const url = new URL(escapedAssetPrefix).toString();\n return url.endsWith('/') ? url.slice(0, -1) : url;\n }\n // assuming assetPrefix here is a pathname-style,\n // restore the leading slash\n return `/${escapedAssetPrefix}`;\n} //# sourceMappingURL=normalized-asset-prefix.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvbm9ybWFsaXplZC1hc3NldC1wcmVmaXguanMiLCJtYXBwaW5ncyI6Ijs7Ozt5REFBZ0JBOzs7ZUFBQUE7OztBQUFULFNBQVNBLHNCQUFzQkMsV0FBK0I7SUFDbkUsa0RBQWtEO0lBQ2xELE1BQU1DLHFCQUFxQkQsYUFBYUUsUUFBUSxjQUFjLE9BQU87SUFFckUsb0RBQW9EO0lBQ3BELG9EQUFvRDtJQUNwRCxJQUFJLENBQUNELG9CQUFvQjtRQUN2QixPQUFPO0lBQ1Q7SUFFQSxJQUFJRSxJQUFJQyxRQUFRLENBQUNILHFCQUFxQjtRQUNwQyxNQUFNSSxNQUFNLElBQUlGLElBQUlGLG9CQUFvQkssUUFBUTtRQUNoRCxPQUFPRCxJQUFJRSxRQUFRLENBQUMsT0FBT0YsSUFBSUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLSDtJQUNoRDtJQUVBLGlEQUFpRDtJQUNqRCw0QkFBNEI7SUFDNUIsT0FBTyxDQUFDLENBQUMsRUFBRUosb0JBQW9CO0FBQ2pDIiwic291cmNlcyI6WyIvVXNlcnMvcG91eWFubWIvc3JjL3NoYXJlZC9saWIvbm9ybWFsaXplZC1hc3NldC1wcmVmaXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZWRBc3NldFByZWZpeChhc3NldFByZWZpeDogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgLy8gcmVtb3ZlIGFsbCBsZWFkaW5nIHNsYXNoZXMgYW5kIHRyYWlsaW5nIHNsYXNoZXNcbiAgY29uc3QgZXNjYXBlZEFzc2V0UHJlZml4ID0gYXNzZXRQcmVmaXg/LnJlcGxhY2UoL15cXC8rfFxcLyskL2csICcnKSB8fCBmYWxzZVxuXG4gIC8vIGlmIGFuIGFzc2V0UHJlZml4IHdhcyAnLycsIHdlIHJldHVybiBlbXB0eSBzdHJpbmdcbiAgLy8gYmVjYXVzZSBpdCBjb3VsZCBiZSBhbiB1bm5lY2Vzc2FyeSB0cmFpbGluZyBzbGFzaFxuICBpZiAoIWVzY2FwZWRBc3NldFByZWZpeCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKFVSTC5jYW5QYXJzZShlc2NhcGVkQXNzZXRQcmVmaXgpKSB7XG4gICAgY29uc3QgdXJsID0gbmV3IFVSTChlc2NhcGVkQXNzZXRQcmVmaXgpLnRvU3RyaW5nKClcbiAgICByZXR1cm4gdXJsLmVuZHNXaXRoKCcvJykgPyB1cmwuc2xpY2UoMCwgLTEpIDogdXJsXG4gIH1cblxuICAvLyBhc3N1bWluZyBhc3NldFByZWZpeCBoZXJlIGlzIGEgcGF0aG5hbWUtc3R5bGUsXG4gIC8vIHJlc3RvcmUgdGhlIGxlYWRpbmcgc2xhc2hcbiAgcmV0dXJuIGAvJHtlc2NhcGVkQXNzZXRQcmVmaXh9YFxufVxuIl0sIm5hbWVzIjpbIm5vcm1hbGl6ZWRBc3NldFByZWZpeCIsImFzc2V0UHJlZml4IiwiZXNjYXBlZEFzc2V0UHJlZml4IiwicmVwbGFjZSIsIlVSTCIsImNhblBhcnNlIiwidXJsIiwidG9TdHJpbmciLCJlbmRzV2l0aCIsInNsaWNlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/normalized-asset-prefix.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js":
|
||
/*!*****************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js ***!
|
||
\*****************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * For a given page path, this function ensures that there is a leading slash.\n * If there is not a leading slash, one is added, otherwise it is noop.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"ensureLeadingSlash\", ({\n enumerable: true,\n get: function() {\n return ensureLeadingSlash;\n }\n}));\nfunction ensureLeadingSlash(path) {\n return path.startsWith('/') ? path : `/${path}`;\n} //# sourceMappingURL=ensure-leading-slash.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcGFnZS1wYXRoL2Vuc3VyZS1sZWFkaW5nLXNsYXNoLmpzIiwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQzs7OztzREFDZUE7OztlQUFBQTs7O0FBQVQsU0FBU0EsbUJBQW1CQyxJQUFZO0lBQzdDLE9BQU9BLEtBQUtDLFVBQVUsQ0FBQyxPQUFPRCxPQUFPLENBQUMsQ0FBQyxFQUFFQSxNQUFNO0FBQ2pEIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL3NoYXJlZC9saWIvcGFnZS1wYXRoL2Vuc3VyZS1sZWFkaW5nLXNsYXNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRm9yIGEgZ2l2ZW4gcGFnZSBwYXRoLCB0aGlzIGZ1bmN0aW9uIGVuc3VyZXMgdGhhdCB0aGVyZSBpcyBhIGxlYWRpbmcgc2xhc2guXG4gKiBJZiB0aGVyZSBpcyBub3QgYSBsZWFkaW5nIHNsYXNoLCBvbmUgaXMgYWRkZWQsIG90aGVyd2lzZSBpdCBpcyBub29wLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlTGVhZGluZ1NsYXNoKHBhdGg6IHN0cmluZykge1xuICByZXR1cm4gcGF0aC5zdGFydHNXaXRoKCcvJykgPyBwYXRoIDogYC8ke3BhdGh9YFxufVxuIl0sIm5hbWVzIjpbImVuc3VyZUxlYWRpbmdTbGFzaCIsInBhdGgiLCJzdGFydHNXaXRoIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/promise-with-resolvers.js":
|
||
/*!*********************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/promise-with-resolvers.js ***!
|
||
\*********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createPromiseWithResolvers\", ({\n enumerable: true,\n get: function() {\n return createPromiseWithResolvers;\n }\n}));\nfunction createPromiseWithResolvers() {\n // Shim of Stage 4 Promise.withResolvers proposal\n let resolve;\n let reject;\n const promise = new Promise((res, rej)=>{\n resolve = res;\n reject = rej;\n });\n return {\n resolve: resolve,\n reject: reject,\n promise\n };\n} //# sourceMappingURL=promise-with-resolvers.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcHJvbWlzZS13aXRoLXJlc29sdmVycy5qcyIsIm1hcHBpbmdzIjoiOzs7OzhEQUFnQkE7OztlQUFBQTs7O0FBQVQsU0FBU0E7SUFDZCxpREFBaUQ7SUFDakQsSUFBSUM7SUFDSixJQUFJQztJQUNKLE1BQU1DLFVBQVUsSUFBSUMsUUFBVyxDQUFDQyxLQUFLQztRQUNuQ0wsVUFBVUk7UUFDVkgsU0FBU0k7SUFDWDtJQUNBLE9BQU87UUFBRUwsU0FBU0E7UUFBVUMsUUFBUUE7UUFBU0M7SUFBUTtBQUN2RCIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9zaGFyZWQvbGliL3Byb21pc2Utd2l0aC1yZXNvbHZlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+KCk6IFByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+IHtcbiAgLy8gU2hpbSBvZiBTdGFnZSA0IFByb21pc2Uud2l0aFJlc29sdmVycyBwcm9wb3NhbFxuICBsZXQgcmVzb2x2ZTogKHZhbHVlOiBUIHwgUHJvbWlzZUxpa2U8VD4pID0+IHZvaWRcbiAgbGV0IHJlamVjdDogKHJlYXNvbjogYW55KSA9PiB2b2lkXG4gIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZTxUPigocmVzLCByZWopID0+IHtcbiAgICByZXNvbHZlID0gcmVzXG4gICAgcmVqZWN0ID0gcmVqXG4gIH0pXG4gIHJldHVybiB7IHJlc29sdmU6IHJlc29sdmUhLCByZWplY3Q6IHJlamVjdCEsIHByb21pc2UgfVxufVxuIl0sIm5hbWVzIjpbImNyZWF0ZVByb21pc2VXaXRoUmVzb2x2ZXJzIiwicmVzb2x2ZSIsInJlamVjdCIsInByb21pc2UiLCJQcm9taXNlIiwicmVzIiwicmVqIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/promise-with-resolvers.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js":
|
||
/*!***************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js ***!
|
||
\***************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"addPathPrefix\", ({\n enumerable: true,\n get: function() {\n return addPathPrefix;\n }\n}));\nconst _parsepath = __webpack_require__(/*! ./parse-path */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/parse-path.js\");\nfunction addPathPrefix(path, prefix) {\n if (!path.startsWith('/') || !prefix) {\n return path;\n }\n const { pathname, query, hash } = (0, _parsepath.parsePath)(path);\n return `${prefix}${pathname}${query}${hash}`;\n} //# sourceMappingURL=add-path-prefix.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2FkZC1wYXRoLXByZWZpeC5qcyIsIm1hcHBpbmdzIjoiOzs7O2lEQU1nQkE7OztlQUFBQTs7O3VDQU5VO0FBTW5CLFNBQVNBLGNBQWNDLElBQVksRUFBRUMsTUFBZTtJQUN6RCxJQUFJLENBQUNELEtBQUtFLFVBQVUsQ0FBQyxRQUFRLENBQUNELFFBQVE7UUFDcEMsT0FBT0Q7SUFDVDtJQUVBLE1BQU0sRUFBRUcsUUFBUSxFQUFFQyxLQUFLLEVBQUVDLElBQUksRUFBRSxHQUFHQyxDQUFBQSxHQUFBQSxXQUFBQSxTQUFBQSxFQUFVTjtJQUM1QyxPQUFPLEdBQUdDLFNBQVNFLFdBQVdDLFFBQVFDLE1BQU07QUFDOUMiLCJzb3VyY2VzIjpbIi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvYWRkLXBhdGgtcHJlZml4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhcnNlUGF0aCB9IGZyb20gJy4vcGFyc2UtcGF0aCdcblxuLyoqXG4gKiBBZGRzIHRoZSBwcm92aWRlZCBwcmVmaXggdG8gdGhlIGdpdmVuIHBhdGguIEl0IGZpcnN0IGVuc3VyZXMgdGhhdCB0aGUgcGF0aFxuICogaXMgaW5kZWVkIHN0YXJ0aW5nIHdpdGggYSBzbGFzaC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFBhdGhQcmVmaXgocGF0aDogc3RyaW5nLCBwcmVmaXg/OiBzdHJpbmcpIHtcbiAgaWYgKCFwYXRoLnN0YXJ0c1dpdGgoJy8nKSB8fCAhcHJlZml4KSB7XG4gICAgcmV0dXJuIHBhdGhcbiAgfVxuXG4gIGNvbnN0IHsgcGF0aG5hbWUsIHF1ZXJ5LCBoYXNoIH0gPSBwYXJzZVBhdGgocGF0aClcbiAgcmV0dXJuIGAke3ByZWZpeH0ke3BhdGhuYW1lfSR7cXVlcnl9JHtoYXNofWBcbn1cbiJdLCJuYW1lcyI6WyJhZGRQYXRoUHJlZml4IiwicGF0aCIsInByZWZpeCIsInN0YXJ0c1dpdGgiLCJwYXRobmFtZSIsInF1ZXJ5IiwiaGFzaCIsInBhcnNlUGF0aCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/router/utils/app-paths.js":
|
||
/*!*********************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/app-paths.js ***!
|
||
\*********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n compareAppPaths: function() {\n return compareAppPaths;\n },\n normalizeAppPath: function() {\n return normalizeAppPath;\n },\n normalizeRscURL: function() {\n return normalizeRscURL;\n }\n});\nconst _ensureleadingslash = __webpack_require__(/*! ../../page-path/ensure-leading-slash */ \"(ssr)/./node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js\");\nconst _segment = __webpack_require__(/*! ../../segment */ \"(ssr)/./node_modules/next/dist/shared/lib/segment.js\");\nfunction normalizeAppPath(route) {\n return (0, _ensureleadingslash.ensureLeadingSlash)(route.split('/').reduce((pathname, segment, index, segments)=>{\n // Empty segments are ignored.\n if (!segment) {\n return pathname;\n }\n // Groups are ignored.\n if ((0, _segment.isGroupSegment)(segment)) {\n return pathname;\n }\n // Parallel segments are ignored.\n if (segment[0] === '@') {\n return pathname;\n }\n // The last segment (if it's a leaf) should be ignored.\n if ((segment === 'page' || segment === 'route') && index === segments.length - 1) {\n return pathname;\n }\n return `${pathname}/${segment}`;\n }, ''));\n}\nfunction compareAppPaths(a, b) {\n const aHasSlot = a.includes('/@');\n const bHasSlot = b.includes('/@');\n if (aHasSlot && !bHasSlot) return -1;\n if (!aHasSlot && bHasSlot) return 1;\n return a.localeCompare(b);\n}\nfunction normalizeRscURL(url) {\n return url.replace(/\\.rsc($|\\?)/, '$1');\n} //# sourceMappingURL=app-paths.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2FwcC1wYXRocy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUErRGdCQSxlQUFlO2VBQWZBOztJQXpDQUMsZ0JBQWdCO2VBQWhCQTs7SUFxREFDLGVBQWU7ZUFBZkE7OztnREEzRW1CO3FDQUNKO0FBcUJ4QixTQUFTRCxpQkFBaUJFLEtBQWE7SUFDNUMsT0FBT0MsQ0FBQUEsR0FBQUEsb0JBQUFBLGtCQUFrQixFQUN2QkQsTUFBTUUsS0FBSyxDQUFDLEtBQUtDLE1BQU0sQ0FBQyxDQUFDQyxVQUFVQyxTQUFTQyxPQUFPQztRQUNqRCw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDRixTQUFTO1lBQ1osT0FBT0Q7UUFDVDtRQUVBLHNCQUFzQjtRQUN0QixJQUFJSSxDQUFBQSxHQUFBQSxTQUFBQSxjQUFBQSxFQUFlSCxVQUFVO1lBQzNCLE9BQU9EO1FBQ1Q7UUFFQSxpQ0FBaUM7UUFDakMsSUFBSUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxLQUFLO1lBQ3RCLE9BQU9EO1FBQ1Q7UUFFQSx1REFBdUQ7UUFDdkQsSUFDR0MsQ0FBQUEsWUFBWSxVQUFVQSxZQUFZLFFBQU0sSUFDekNDLFVBQVVDLFNBQVNFLE1BQU0sR0FBRyxHQUM1QjtZQUNBLE9BQU9MO1FBQ1Q7UUFFQSxPQUFPLEdBQUdBLFNBQVMsQ0FBQyxFQUFFQyxTQUFTO0lBQ2pDLEdBQUc7QUFFUDtBQVlPLFNBQVNSLGdCQUFnQmEsQ0FBUyxFQUFFQyxDQUFTO0lBQ2xELE1BQU1DLFdBQVdGLEVBQUVHLFFBQVEsQ0FBQztJQUM1QixNQUFNQyxXQUFXSCxFQUFFRSxRQUFRLENBQUM7SUFDNUIsSUFBSUQsWUFBWSxDQUFDRSxVQUFVLE9BQU8sQ0FBQztJQUNuQyxJQUFJLENBQUNGLFlBQVlFLFVBQVUsT0FBTztJQUNsQyxPQUFPSixFQUFFSyxhQUFhLENBQUNKO0FBQ3pCO0FBTU8sU0FBU1osZ0JBQWdCaUIsR0FBVztJQUN6QyxPQUFPQSxJQUFJQyxPQUFPLENBQ2hCLGVBQ0E7QUFHSiIsInNvdXJjZXMiOlsiL3NyYy9zaGFyZWQvbGliL3JvdXRlci91dGlscy9hcHAtcGF0aHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZW5zdXJlTGVhZGluZ1NsYXNoIH0gZnJvbSAnLi4vLi4vcGFnZS1wYXRoL2Vuc3VyZS1sZWFkaW5nLXNsYXNoJ1xuaW1wb3J0IHsgaXNHcm91cFNlZ21lbnQgfSBmcm9tICcuLi8uLi9zZWdtZW50J1xuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYW4gYXBwIHJvdXRlIHNvIGl0IHJlcHJlc2VudHMgdGhlIGFjdHVhbCByZXF1ZXN0IHBhdGguIEVzc2VudGlhbGx5XG4gKiBwZXJmb3JtaW5nIHRoZSBmb2xsb3dpbmcgdHJhbnNmb3JtYXRpb25zOlxuICpcbiAqIC0gYC8oZGFzaGJvYXJkKS91c2VyL1tpZF0vcGFnZWAgdG8gYC91c2VyL1tpZF1gXG4gKiAtIGAvKGRhc2hib2FyZCkvYWNjb3VudC9wYWdlYCB0byBgL2FjY291bnRgXG4gKiAtIGAvdXNlci9baWRdL3BhZ2VgIHRvIGAvdXNlci9baWRdYFxuICogLSBgL2FjY291bnQvcGFnZWAgdG8gYC9hY2NvdW50YFxuICogLSBgL3BhZ2VgIHRvIGAvYFxuICogLSBgLyhkYXNoYm9hcmQpL3VzZXIvW2lkXS9yb3V0ZWAgdG8gYC91c2VyL1tpZF1gXG4gKiAtIGAvKGRhc2hib2FyZCkvYWNjb3VudC9yb3V0ZWAgdG8gYC9hY2NvdW50YFxuICogLSBgL3VzZXIvW2lkXS9yb3V0ZWAgdG8gYC91c2VyL1tpZF1gXG4gKiAtIGAvYWNjb3VudC9yb3V0ZWAgdG8gYC9hY2NvdW50YFxuICogLSBgL3JvdXRlYCB0byBgL2BcbiAqIC0gYC9gIHRvIGAvYFxuICpcbiAqIEBwYXJhbSByb3V0ZSB0aGUgYXBwIHJvdXRlIHRvIG5vcm1hbGl6ZVxuICogQHJldHVybnMgdGhlIG5vcm1hbGl6ZWQgcGF0aG5hbWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUFwcFBhdGgocm91dGU6IHN0cmluZykge1xuICByZXR1cm4gZW5zdXJlTGVhZGluZ1NsYXNoKFxuICAgIHJvdXRlLnNwbGl0KCcvJykucmVkdWNlKChwYXRobmFtZSwgc2VnbWVudCwgaW5kZXgsIHNlZ21lbnRzKSA9PiB7XG4gICAgICAvLyBFbXB0eSBzZWdtZW50cyBhcmUgaWdub3JlZC5cbiAgICAgIGlmICghc2VnbWVudCkge1xuICAgICAgICByZXR1cm4gcGF0aG5hbWVcbiAgICAgIH1cblxuICAgICAgLy8gR3JvdXBzIGFyZSBpZ25vcmVkLlxuICAgICAgaWYgKGlzR3JvdXBTZWdtZW50KHNlZ21lbnQpKSB7XG4gICAgICAgIHJldHVybiBwYXRobmFtZVxuICAgICAgfVxuXG4gICAgICAvLyBQYXJhbGxlbCBzZWdtZW50cyBhcmUgaWdub3JlZC5cbiAgICAgIGlmIChzZWdtZW50WzBdID09PSAnQCcpIHtcbiAgICAgICAgcmV0dXJuIHBhdGhuYW1lXG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBsYXN0IHNlZ21lbnQgKGlmIGl0J3MgYSBsZWFmKSBzaG91bGQgYmUgaWdub3JlZC5cbiAgICAgIGlmIChcbiAgICAgICAgKHNlZ21lbnQgPT09ICdwYWdlJyB8fCBzZWdtZW50ID09PSAncm91dGUnKSAmJlxuICAgICAgICBpbmRleCA9PT0gc2VnbWVudHMubGVuZ3RoIC0gMVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBwYXRobmFtZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gYCR7cGF0aG5hbWV9LyR7c2VnbWVudH1gXG4gICAgfSwgJycpXG4gIClcbn1cblxuLyoqXG4gKiBDb21wYXJhdG9yIGZvciBzb3J0aW5nIGFwcCBwYXRocyBzbyB0aGF0IHBhcmFsbGVsIHNsb3QgcGF0aHMgKGNvbnRhaW5pbmdcbiAqIGAvQGApIGNvbWUgYmVmb3JlIHRoZSBjaGlsZHJlbi9yb290IHBhZ2UgcGF0aC4gVGhpcyBlbnN1cmVzIHRoZSBsYXN0IGl0ZW1cbiAqIGlzIGFsd2F5cyB0aGUgY2hpbGRyZW4gcGFnZSwgd2hpY2ggaXMgd2hhdCBgcmVuZGVyUGFnZUNvbXBvbmVudGAgcmVhZHMgdmlhXG4gKiBgYXBwUGF0aHNbYXBwUGF0aHMubGVuZ3RoIC0gMV1gLlxuICpcbiAqIFdpdGhvdXQgdGhpcywgcm91dGUgZ3JvdXAgcHJlZml4ZXMgbGlrZSBgKGdyb3VwKWAgKGNoYXIgY29kZSAweDI4KSBzb3J0XG4gKiBiZWZvcmUgYEBgICgweDQwKSwgY2F1c2luZyB0aGUgY2hpbGRyZW4gcGFnZSB0byBzb3J0IGZpcnN0IGluc3RlYWQgb2YgbGFzdFxuICogYW5kIGxlYWRpbmcgdG8gYSBtYW5pZmVzdCBtaXNtYXRjaCAvIDQwNCBpbiB3ZWJwYWNrIGRldiBtb2RlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZUFwcFBhdGhzKGE6IHN0cmluZywgYjogc3RyaW5nKTogbnVtYmVyIHtcbiAgY29uc3QgYUhhc1Nsb3QgPSBhLmluY2x1ZGVzKCcvQCcpXG4gIGNvbnN0IGJIYXNTbG90ID0gYi5pbmNsdWRlcygnL0AnKVxuICBpZiAoYUhhc1Nsb3QgJiYgIWJIYXNTbG90KSByZXR1cm4gLTFcbiAgaWYgKCFhSGFzU2xvdCAmJiBiSGFzU2xvdCkgcmV0dXJuIDFcbiAgcmV0dXJuIGEubG9jYWxlQ29tcGFyZShiKVxufVxuXG4vKipcbiAqIFN0cmlwcyB0aGUgYC5yc2NgIGV4dGVuc2lvbiBpZiBpdCdzIGluIHRoZSBwYXRobmFtZS5cbiAqIFNpbmNlIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBvbiBmdWxsIHVybHMgaXQgY2hlY2tzIGA/YCBmb3Igc2VhcmNoUGFyYW1zIGhhbmRsaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplUnNjVVJMKHVybDogc3RyaW5nKSB7XG4gIHJldHVybiB1cmwucmVwbGFjZShcbiAgICAvXFwucnNjKCR8XFw/KS8sXG4gICAgLy8gJDEgZW5zdXJlcyBgP2AgaXMgcHJlc2VydmVkXG4gICAgJyQxJ1xuICApXG59XG4iXSwibmFtZXMiOlsiY29tcGFyZUFwcFBhdGhzIiwibm9ybWFsaXplQXBwUGF0aCIsIm5vcm1hbGl6ZVJzY1VSTCIsInJvdXRlIiwiZW5zdXJlTGVhZGluZ1NsYXNoIiwic3BsaXQiLCJyZWR1Y2UiLCJwYXRobmFtZSIsInNlZ21lbnQiLCJpbmRleCIsInNlZ21lbnRzIiwiaXNHcm91cFNlZ21lbnQiLCJsZW5ndGgiLCJhIiwiYiIsImFIYXNTbG90IiwiaW5jbHVkZXMiLCJiSGFzU2xvdCIsImxvY2FsZUNvbXBhcmUiLCJ1cmwiLCJyZXBsYWNlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/router/utils/app-paths.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/router/utils/cache-busting-search-param.js":
|
||
/*!**************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/cache-busting-search-param.js ***!
|
||
\**************************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"computeCacheBustingSearchParam\", ({\n enumerable: true,\n get: function() {\n return computeCacheBustingSearchParam;\n }\n}));\nconst _hash = __webpack_require__(/*! ../../hash */ \"(ssr)/./node_modules/next/dist/shared/lib/hash.js\");\nfunction computeCacheBustingSearchParam(prefetchHeader, segmentPrefetchHeader, stateTreeHeader, nextUrlHeader) {\n if ((prefetchHeader === undefined || prefetchHeader === '0') && segmentPrefetchHeader === undefined && stateTreeHeader === undefined && nextUrlHeader === undefined) {\n return '';\n }\n return (0, _hash.hexHash)([\n prefetchHeader || '0',\n segmentPrefetchHeader || '0',\n stateTreeHeader || '0',\n nextUrlHeader || '0'\n ].join(','));\n} //# sourceMappingURL=cache-busting-search-param.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2NhY2hlLWJ1c3Rpbmctc2VhcmNoLXBhcmFtLmpzIiwibWFwcGluZ3MiOiI7Ozs7a0VBRWdCQTs7O2VBQUFBOzs7a0NBRlE7QUFFakIsU0FBU0EsK0JBQ2RDLGNBQTJDLEVBQzNDQyxxQkFBb0QsRUFDcERDLGVBQThDLEVBQzlDQyxhQUE0QztJQUU1QyxJQUNHSCxDQUFBQSxtQkFBbUJJLGFBQWFKLG1CQUFtQixJQUFFLElBQ3REQywwQkFBMEJHLGFBQzFCRixvQkFBb0JFLGFBQ3BCRCxrQkFBa0JDLFdBQ2xCO1FBQ0EsT0FBTztJQUNUO0lBQ0EsT0FBT0MsQ0FBQUEsR0FBQUEsTUFBQUEsT0FBQUEsRUFDTDtRQUNFTCxrQkFBa0I7UUFDbEJDLHlCQUF5QjtRQUN6QkMsbUJBQW1CO1FBQ25CQyxpQkFBaUI7S0FDbEIsQ0FBQ0csSUFBSSxDQUFDO0FBRVgiLCJzb3VyY2VzIjpbIi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvY2FjaGUtYnVzdGluZy1zZWFyY2gtcGFyYW0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaGV4SGFzaCB9IGZyb20gJy4uLy4uL2hhc2gnXG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlQ2FjaGVCdXN0aW5nU2VhcmNoUGFyYW0oXG4gIHByZWZldGNoSGVhZGVyOiAnMScgfCAnMicgfCAnMCcgfCB1bmRlZmluZWQsXG4gIHNlZ21lbnRQcmVmZXRjaEhlYWRlcjogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQsXG4gIHN0YXRlVHJlZUhlYWRlcjogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQsXG4gIG5leHRVcmxIZWFkZXI6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkXG4pOiBzdHJpbmcge1xuICBpZiAoXG4gICAgKHByZWZldGNoSGVhZGVyID09PSB1bmRlZmluZWQgfHwgcHJlZmV0Y2hIZWFkZXIgPT09ICcwJykgJiZcbiAgICBzZWdtZW50UHJlZmV0Y2hIZWFkZXIgPT09IHVuZGVmaW5lZCAmJlxuICAgIHN0YXRlVHJlZUhlYWRlciA9PT0gdW5kZWZpbmVkICYmXG4gICAgbmV4dFVybEhlYWRlciA9PT0gdW5kZWZpbmVkXG4gICkge1xuICAgIHJldHVybiAnJ1xuICB9XG4gIHJldHVybiBoZXhIYXNoKFxuICAgIFtcbiAgICAgIHByZWZldGNoSGVhZGVyIHx8ICcwJyxcbiAgICAgIHNlZ21lbnRQcmVmZXRjaEhlYWRlciB8fCAnMCcsXG4gICAgICBzdGF0ZVRyZWVIZWFkZXIgfHwgJzAnLFxuICAgICAgbmV4dFVybEhlYWRlciB8fCAnMCcsXG4gICAgXS5qb2luKCcsJylcbiAgKVxufVxuIl0sIm5hbWVzIjpbImNvbXB1dGVDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbSIsInByZWZldGNoSGVhZGVyIiwic2VnbWVudFByZWZldGNoSGVhZGVyIiwic3RhdGVUcmVlSGVhZGVyIiwibmV4dFVybEhlYWRlciIsInVuZGVmaW5lZCIsImhleEhhc2giLCJqb2luIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/router/utils/cache-busting-search-param.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/router/utils/disable-smooth-scroll.js":
|
||
/*!*********************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/disable-smooth-scroll.js ***!
|
||
\*********************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"disableSmoothScrollDuringRouteTransition\", ({\n enumerable: true,\n get: function() {\n return disableSmoothScrollDuringRouteTransition;\n }\n}));\nconst _warnonce = __webpack_require__(/*! ../../utils/warn-once */ \"(ssr)/./node_modules/next/dist/shared/lib/utils/warn-once.js\");\nfunction disableSmoothScrollDuringRouteTransition(fn, options = {}) {\n // if only the hash is changed, we don't need to disable smooth scrolling\n // we only care to prevent smooth scrolling when navigating to a new page to avoid jarring UX\n if (options.onlyHashChange) {\n fn();\n return;\n }\n const htmlElement = document.documentElement;\n const hasDataAttribute = htmlElement.dataset.scrollBehavior === 'smooth';\n if (!hasDataAttribute) {\n // Warn if smooth scrolling is detected but no data attribute is present\n if ( true && getComputedStyle(htmlElement).scrollBehavior === 'smooth') {\n (0, _warnonce.warnOnce)('Detected `scroll-behavior: smooth` on the `<html>` element. To disable smooth scrolling during route transitions, ' + 'add `data-scroll-behavior=\"smooth\"` to your <html> element. ' + 'Learn more: https://nextjs.org/docs/messages/missing-data-scroll-behavior');\n }\n // No smooth scrolling configured, run directly without style manipulation\n fn();\n return;\n }\n // Proceed with temporarily disabling smooth scrolling\n const existing = htmlElement.style.scrollBehavior;\n htmlElement.style.scrollBehavior = 'auto';\n if (!options.dontForceLayout) {\n // In Chrome-based browsers we need to force reflow before calling `scrollTo`.\n // Otherwise it will not pickup the change in scrollBehavior\n // More info here: https://github.com/vercel/next.js/issues/40719#issuecomment-1336248042\n htmlElement.getClientRects();\n }\n fn();\n htmlElement.style.scrollBehavior = existing;\n} //# sourceMappingURL=disable-smooth-scroll.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2Rpc2FibGUtc21vb3RoLXNjcm9sbC5qcyIsIm1hcHBpbmdzIjoiOzs7OzRFQU1nQkE7OztlQUFBQTs7O3NDQU5TO0FBTWxCLFNBQVNBLHlDQUNkQyxFQUFjLEVBQ2RDLFVBQW1FLENBQUMsQ0FBQztJQUVyRSx5RUFBeUU7SUFDekUsNkZBQTZGO0lBQzdGLElBQUlBLFFBQVFDLGNBQWMsRUFBRTtRQUMxQkY7UUFDQTtJQUNGO0lBRUEsTUFBTUcsY0FBY0MsU0FBU0MsZUFBZTtJQUM1QyxNQUFNQyxtQkFBbUJILFlBQVlJLE9BQU8sQ0FBQ0MsY0FBYyxLQUFLO0lBRWhFLElBQUksQ0FBQ0Ysa0JBQWtCO1FBQ3JCLHdFQUF3RTtRQUN4RSxJQUNFRyxLQUFvQixJQUNwQkcsaUJBQWlCVCxhQUFhSyxjQUFjLEtBQUssVUFDakQ7WUFDQUssQ0FBQUEsR0FBQUEsVUFBQUEsUUFBQUEsRUFDRSx1SEFDRSxpRUFDQTtRQUVOO1FBQ0EsMEVBQTBFO1FBQzFFYjtRQUNBO0lBQ0Y7SUFFQSxzREFBc0Q7SUFDdEQsTUFBTWMsV0FBV1gsWUFBWVksS0FBSyxDQUFDUCxjQUFjO0lBQ2pETCxZQUFZWSxLQUFLLENBQUNQLGNBQWMsR0FBRztJQUNuQyxJQUFJLENBQUNQLFFBQVFlLGVBQWUsRUFBRTtRQUM1Qiw4RUFBOEU7UUFDOUUsNERBQTREO1FBQzVELHlGQUF5RjtRQUN6RmIsWUFBWWMsY0FBYztJQUM1QjtJQUNBakI7SUFDQUcsWUFBWVksS0FBSyxDQUFDUCxjQUFjLEdBQUdNO0FBQ3JDIiwic291cmNlcyI6WyIvc3JjL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2Rpc2FibGUtc21vb3RoLXNjcm9sbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB3YXJuT25jZSB9IGZyb20gJy4uLy4uL3V0aWxzL3dhcm4tb25jZSdcblxuLyoqXG4gKiBSdW4gZnVuY3Rpb24gd2l0aCBgc2Nyb2xsLWJlaGF2aW9yOiBhdXRvYCBhcHBsaWVkIHRvIGA8aHRtbC8+YC5cbiAqIFRoaXMgY3NzIGNoYW5nZSB3aWxsIGJlIHJldmVydGVkIGFmdGVyIHRoZSBmdW5jdGlvbiBmaW5pc2hlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpc2FibGVTbW9vdGhTY3JvbGxEdXJpbmdSb3V0ZVRyYW5zaXRpb24oXG4gIGZuOiAoKSA9PiB2b2lkLFxuICBvcHRpb25zOiB7IGRvbnRGb3JjZUxheW91dD86IGJvb2xlYW47IG9ubHlIYXNoQ2hhbmdlPzogYm9vbGVhbiB9ID0ge31cbikge1xuICAvLyBpZiBvbmx5IHRoZSBoYXNoIGlzIGNoYW5nZWQsIHdlIGRvbid0IG5lZWQgdG8gZGlzYWJsZSBzbW9vdGggc2Nyb2xsaW5nXG4gIC8vIHdlIG9ubHkgY2FyZSB0byBwcmV2ZW50IHNtb290aCBzY3JvbGxpbmcgd2hlbiBuYXZpZ2F0aW5nIHRvIGEgbmV3IHBhZ2UgdG8gYXZvaWQgamFycmluZyBVWFxuICBpZiAob3B0aW9ucy5vbmx5SGFzaENoYW5nZSkge1xuICAgIGZuKClcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IGh0bWxFbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XG4gIGNvbnN0IGhhc0RhdGFBdHRyaWJ1dGUgPSBodG1sRWxlbWVudC5kYXRhc2V0LnNjcm9sbEJlaGF2aW9yID09PSAnc21vb3RoJ1xuXG4gIGlmICghaGFzRGF0YUF0dHJpYnV0ZSkge1xuICAgIC8vIFdhcm4gaWYgc21vb3RoIHNjcm9sbGluZyBpcyBkZXRlY3RlZCBidXQgbm8gZGF0YSBhdHRyaWJ1dGUgaXMgcHJlc2VudFxuICAgIGlmIChcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnICYmXG4gICAgICBnZXRDb21wdXRlZFN0eWxlKGh0bWxFbGVtZW50KS5zY3JvbGxCZWhhdmlvciA9PT0gJ3Ntb290aCdcbiAgICApIHtcbiAgICAgIHdhcm5PbmNlKFxuICAgICAgICAnRGV0ZWN0ZWQgYHNjcm9sbC1iZWhhdmlvcjogc21vb3RoYCBvbiB0aGUgYDxodG1sPmAgZWxlbWVudC4gVG8gZGlzYWJsZSBzbW9vdGggc2Nyb2xsaW5nIGR1cmluZyByb3V0ZSB0cmFuc2l0aW9ucywgJyArXG4gICAgICAgICAgJ2FkZCBgZGF0YS1zY3JvbGwtYmVoYXZpb3I9XCJzbW9vdGhcImAgdG8geW91ciA8aHRtbD4gZWxlbWVudC4gJyArXG4gICAgICAgICAgJ0xlYXJuIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL21pc3NpbmctZGF0YS1zY3JvbGwtYmVoYXZpb3InXG4gICAgICApXG4gICAgfVxuICAgIC8vIE5vIHNtb290aCBzY3JvbGxpbmcgY29uZmlndXJlZCwgcnVuIGRpcmVjdGx5IHdpdGhvdXQgc3R5bGUgbWFuaXB1bGF0aW9uXG4gICAgZm4oKVxuICAgIHJldHVyblxuICB9XG5cbiAgLy8gUHJvY2VlZCB3aXRoIHRlbXBvcmFyaWx5IGRpc2FibGluZyBzbW9vdGggc2Nyb2xsaW5nXG4gIGNvbnN0IGV4aXN0aW5nID0gaHRtbEVsZW1lbnQuc3R5bGUuc2Nyb2xsQmVoYXZpb3JcbiAgaHRtbEVsZW1lbnQuc3R5bGUuc2Nyb2xsQmVoYXZpb3IgPSAnYXV0bydcbiAgaWYgKCFvcHRpb25zLmRvbnRGb3JjZUxheW91dCkge1xuICAgIC8vIEluIENocm9tZS1iYXNlZCBicm93c2VycyB3ZSBuZWVkIHRvIGZvcmNlIHJlZmxvdyBiZWZvcmUgY2FsbGluZyBgc2Nyb2xsVG9gLlxuICAgIC8vIE90aGVyd2lzZSBpdCB3aWxsIG5vdCBwaWNrdXAgdGhlIGNoYW5nZSBpbiBzY3JvbGxCZWhhdmlvclxuICAgIC8vIE1vcmUgaW5mbyBoZXJlOiBodHRwczovL2dpdGh1Yi5jb20vdmVyY2VsL25leHQuanMvaXNzdWVzLzQwNzE5I2lzc3VlY29tbWVudC0xMzM2MjQ4MDQyXG4gICAgaHRtbEVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKVxuICB9XG4gIGZuKClcbiAgaHRtbEVsZW1lbnQuc3R5bGUuc2Nyb2xsQmVoYXZpb3IgPSBleGlzdGluZ1xufVxuIl0sIm5hbWVzIjpbImRpc2FibGVTbW9vdGhTY3JvbGxEdXJpbmdSb3V0ZVRyYW5zaXRpb24iLCJmbiIsIm9wdGlvbnMiLCJvbmx5SGFzaENoYW5nZSIsImh0bWxFbGVtZW50IiwiZG9jdW1lbnQiLCJkb2N1bWVudEVsZW1lbnQiLCJoYXNEYXRhQXR0cmlidXRlIiwiZGF0YXNldCIsInNjcm9sbEJlaGF2aW9yIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsIndhcm5PbmNlIiwiZXhpc3RpbmciLCJzdHlsZSIsImRvbnRGb3JjZUxheW91dCIsImdldENsaWVudFJlY3RzIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/router/utils/disable-smooth-scroll.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/router/utils/format-url.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/format-url.js ***!
|
||
\**********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("// Format function modified from nodejs\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n formatUrl: function() {\n return formatUrl;\n },\n formatWithValidation: function() {\n return formatWithValidation;\n },\n urlObjectKeys: function() {\n return urlObjectKeys;\n }\n});\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _querystring = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! ./querystring */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/querystring.js\"));\nconst slashedProtocols = /https?|ftp|gopher|file/;\nfunction formatUrl(urlObj) {\n let { auth, hostname } = urlObj;\n let protocol = urlObj.protocol || '';\n let pathname = urlObj.pathname || '';\n let hash = urlObj.hash || '';\n let query = urlObj.query || '';\n let host = false;\n auth = auth ? encodeURIComponent(auth).replace(/%3A/i, ':') + '@' : '';\n if (urlObj.host) {\n host = auth + urlObj.host;\n } else if (hostname) {\n host = auth + (~hostname.indexOf(':') ? `[${hostname}]` : hostname);\n if (urlObj.port) {\n host += ':' + urlObj.port;\n }\n }\n if (query && typeof query === 'object') {\n query = String(_querystring.urlQueryToSearchParams(query));\n }\n let search = urlObj.search || query && `?${query}` || '';\n if (protocol && !protocol.endsWith(':')) protocol += ':';\n if (urlObj.slashes || (!protocol || slashedProtocols.test(protocol)) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname[0] !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n if (hash && hash[0] !== '#') hash = '#' + hash;\n if (search && search[0] !== '?') search = '?' + search;\n pathname = pathname.replace(/[?#]/g, encodeURIComponent);\n search = search.replace('#', '%23');\n return `${protocol}${host}${pathname}${search}${hash}`;\n}\nconst urlObjectKeys = [\n 'auth',\n 'hash',\n 'host',\n 'hostname',\n 'href',\n 'path',\n 'pathname',\n 'port',\n 'protocol',\n 'query',\n 'search',\n 'slashes'\n];\nfunction formatWithValidation(url) {\n if (true) {\n if (url !== null && typeof url === 'object') {\n Object.keys(url).forEach((key)=>{\n if (!urlObjectKeys.includes(key)) {\n console.warn(`Unknown key passed via urlObject into url.format: ${key}`);\n }\n });\n }\n }\n return formatUrl(url);\n} //# sourceMappingURL=format-url.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2Zvcm1hdC11cmwuanMiLCJtYXBwaW5ncyI6IkFBQUEsdUNBQXVDO0FBQ3ZDLHNEQUFzRDtBQUN0RCxFQUFFO0FBQ0YsMEVBQTBFO0FBQzFFLGdFQUFnRTtBQUNoRSxzRUFBc0U7QUFDdEUsc0VBQXNFO0FBQ3RFLDRFQUE0RTtBQUM1RSxxRUFBcUU7QUFDckUsd0JBQXdCO0FBQ3hCLEVBQUU7QUFDRiwwRUFBMEU7QUFDMUUseURBQXlEO0FBQ3pELEVBQUU7QUFDRiwwRUFBMEU7QUFDMUUsNkRBQTZEO0FBQzdELDRFQUE0RTtBQUM1RSwyRUFBMkU7QUFDM0Usd0VBQXdFO0FBQ3hFLDRFQUE0RTtBQUM1RSx5Q0FBeUM7Ozs7Ozs7Ozs7Ozs7SUFRekJBLFNBQVM7ZUFBVEE7O0lBNkRBQyxvQkFBb0I7ZUFBcEJBOztJQWZIQyxhQUFhO2VBQWJBOzs7O21GQWxEZ0I7QUFFN0IsTUFBTUMsbUJBQW1CO0FBRWxCLFNBQVNILFVBQVVJLE1BQWlCO0lBQ3pDLElBQUksRUFBRUMsSUFBSSxFQUFFQyxRQUFRLEVBQUUsR0FBR0Y7SUFDekIsSUFBSUcsV0FBV0gsT0FBT0csUUFBUSxJQUFJO0lBQ2xDLElBQUlDLFdBQVdKLE9BQU9JLFFBQVEsSUFBSTtJQUNsQyxJQUFJQyxPQUFPTCxPQUFPSyxJQUFJLElBQUk7SUFDMUIsSUFBSUMsUUFBUU4sT0FBT00sS0FBSyxJQUFJO0lBQzVCLElBQUlDLE9BQXVCO0lBRTNCTixPQUFPQSxPQUFPTyxtQkFBbUJQLE1BQU1RLE9BQU8sQ0FBQyxRQUFRLE9BQU8sTUFBTTtJQUVwRSxJQUFJVCxPQUFPTyxJQUFJLEVBQUU7UUFDZkEsT0FBT04sT0FBT0QsT0FBT08sSUFBSTtJQUMzQixPQUFPLElBQUlMLFVBQVU7UUFDbkJLLE9BQU9OLE9BQVEsRUFBQ0MsU0FBU1EsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUVSLFNBQVMsQ0FBQyxDQUFDLEdBQUdBLFFBQUFBLENBQU87UUFDakUsSUFBSUYsT0FBT1csSUFBSSxFQUFFO1lBQ2ZKLFFBQVEsTUFBTVAsT0FBT1csSUFBSTtRQUMzQjtJQUNGO0lBRUEsSUFBSUwsU0FBUyxPQUFPQSxVQUFVLFVBQVU7UUFDdENBLFFBQVFNLE9BQU9DLGFBQVlDLHNCQUFzQixDQUFDUjtJQUNwRDtJQUVBLElBQUlTLFNBQVNmLE9BQU9lLE1BQU0sSUFBS1QsU0FBUyxDQUFDLENBQUMsRUFBRUEsT0FBTyxJQUFLO0lBRXhELElBQUlILFlBQVksQ0FBQ0EsU0FBU2EsUUFBUSxDQUFDLE1BQU1iLFlBQVk7SUFFckQsSUFDRUgsT0FBT2lCLE9BQU8sSUFDWixFQUFDZCxZQUFZSixpQkFBaUJtQixJQUFJLENBQUNmLFNBQUFBLENBQVEsSUFBTUksU0FBUyxPQUM1RDtRQUNBQSxPQUFPLE9BQVFBLENBQUFBLFFBQVEsR0FBQztRQUN4QixJQUFJSCxZQUFZQSxRQUFRLENBQUMsRUFBRSxLQUFLLEtBQUtBLFdBQVcsTUFBTUE7SUFDeEQsT0FBTyxJQUFJLENBQUNHLE1BQU07UUFDaEJBLE9BQU87SUFDVDtJQUVBLElBQUlGLFFBQVFBLElBQUksQ0FBQyxFQUFFLEtBQUssS0FBS0EsT0FBTyxNQUFNQTtJQUMxQyxJQUFJVSxVQUFVQSxNQUFNLENBQUMsRUFBRSxLQUFLLEtBQUtBLFNBQVMsTUFBTUE7SUFFaERYLFdBQVdBLFNBQVNLLE9BQU8sQ0FBQyxTQUFTRDtJQUNyQ08sU0FBU0EsT0FBT04sT0FBTyxDQUFDLEtBQUs7SUFFN0IsT0FBTyxHQUFHTixXQUFXSSxPQUFPSCxXQUFXVyxTQUFTVixNQUFNO0FBQ3hEO0FBRU8sTUFBTVAsZ0JBQWdCO0lBQzNCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtDQUNEO0FBRU0sU0FBU0QscUJBQXFCc0IsR0FBYztJQUNqRCxJQUFJQyxJQUFvQixFQUFvQjtRQUMxQyxJQUFJRCxRQUFRLFFBQVEsT0FBT0EsUUFBUSxVQUFVO1lBQzNDSSxPQUFPQyxJQUFJLENBQUNMLEtBQUtNLE9BQU8sQ0FBQyxDQUFDQztnQkFDeEIsSUFBSSxDQUFDNUIsY0FBYzZCLFFBQVEsQ0FBQ0QsTUFBTTtvQkFDaENFLFFBQVFDLElBQUksQ0FDVixDQUFDLGtEQUFrRCxFQUFFSCxLQUFLO2dCQUU5RDtZQUNGO1FBQ0Y7SUFDRjtJQUVBLE9BQU85QixVQUFVdUI7QUFDbkIiLCJzb3VyY2VzIjpbIi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZm9ybWF0LXVybC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBGb3JtYXQgZnVuY3Rpb24gbW9kaWZpZWQgZnJvbSBub2RlanNcbi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgdHlwZSB7IFVybE9iamVjdCB9IGZyb20gJ3VybCdcbmltcG9ydCB0eXBlIHsgUGFyc2VkVXJsUXVlcnkgfSBmcm9tICdxdWVyeXN0cmluZydcbmltcG9ydCAqIGFzIHF1ZXJ5c3RyaW5nIGZyb20gJy4vcXVlcnlzdHJpbmcnXG5cbmNvbnN0IHNsYXNoZWRQcm90b2NvbHMgPSAvaHR0cHM/fGZ0cHxnb3BoZXJ8ZmlsZS9cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFVybCh1cmxPYmo6IFVybE9iamVjdCkge1xuICBsZXQgeyBhdXRoLCBob3N0bmFtZSB9ID0gdXJsT2JqXG4gIGxldCBwcm90b2NvbCA9IHVybE9iai5wcm90b2NvbCB8fCAnJ1xuICBsZXQgcGF0aG5hbWUgPSB1cmxPYmoucGF0aG5hbWUgfHwgJydcbiAgbGV0IGhhc2ggPSB1cmxPYmouaGFzaCB8fCAnJ1xuICBsZXQgcXVlcnkgPSB1cmxPYmoucXVlcnkgfHwgJydcbiAgbGV0IGhvc3Q6IHN0cmluZyB8IGZhbHNlID0gZmFsc2VcblxuICBhdXRoID0gYXV0aCA/IGVuY29kZVVSSUNvbXBvbmVudChhdXRoKS5yZXBsYWNlKC8lM0EvaSwgJzonKSArICdAJyA6ICcnXG5cbiAgaWYgKHVybE9iai5ob3N0KSB7XG4gICAgaG9zdCA9IGF1dGggKyB1cmxPYmouaG9zdFxuICB9IGVsc2UgaWYgKGhvc3RuYW1lKSB7XG4gICAgaG9zdCA9IGF1dGggKyAofmhvc3RuYW1lLmluZGV4T2YoJzonKSA/IGBbJHtob3N0bmFtZX1dYCA6IGhvc3RuYW1lKVxuICAgIGlmICh1cmxPYmoucG9ydCkge1xuICAgICAgaG9zdCArPSAnOicgKyB1cmxPYmoucG9ydFxuICAgIH1cbiAgfVxuXG4gIGlmIChxdWVyeSAmJiB0eXBlb2YgcXVlcnkgPT09ICdvYmplY3QnKSB7XG4gICAgcXVlcnkgPSBTdHJpbmcocXVlcnlzdHJpbmcudXJsUXVlcnlUb1NlYXJjaFBhcmFtcyhxdWVyeSBhcyBQYXJzZWRVcmxRdWVyeSkpXG4gIH1cblxuICBsZXQgc2VhcmNoID0gdXJsT2JqLnNlYXJjaCB8fCAocXVlcnkgJiYgYD8ke3F1ZXJ5fWApIHx8ICcnXG5cbiAgaWYgKHByb3RvY29sICYmICFwcm90b2NvbC5lbmRzV2l0aCgnOicpKSBwcm90b2NvbCArPSAnOidcblxuICBpZiAoXG4gICAgdXJsT2JqLnNsYXNoZXMgfHxcbiAgICAoKCFwcm90b2NvbCB8fCBzbGFzaGVkUHJvdG9jb2xzLnRlc3QocHJvdG9jb2wpKSAmJiBob3N0ICE9PSBmYWxzZSlcbiAgKSB7XG4gICAgaG9zdCA9ICcvLycgKyAoaG9zdCB8fCAnJylcbiAgICBpZiAocGF0aG5hbWUgJiYgcGF0aG5hbWVbMF0gIT09ICcvJykgcGF0aG5hbWUgPSAnLycgKyBwYXRobmFtZVxuICB9IGVsc2UgaWYgKCFob3N0KSB7XG4gICAgaG9zdCA9ICcnXG4gIH1cblxuICBpZiAoaGFzaCAmJiBoYXNoWzBdICE9PSAnIycpIGhhc2ggPSAnIycgKyBoYXNoXG4gIGlmIChzZWFyY2ggJiYgc2VhcmNoWzBdICE9PSAnPycpIHNlYXJjaCA9ICc/JyArIHNlYXJjaFxuXG4gIHBhdGhuYW1lID0gcGF0aG5hbWUucmVwbGFjZSgvWz8jXS9nLCBlbmNvZGVVUklDb21wb25lbnQpXG4gIHNlYXJjaCA9IHNlYXJjaC5yZXBsYWNlKCcjJywgJyUyMycpXG5cbiAgcmV0dXJuIGAke3Byb3RvY29sfSR7aG9zdH0ke3BhdGhuYW1lfSR7c2VhcmNofSR7aGFzaH1gXG59XG5cbmV4cG9ydCBjb25zdCB1cmxPYmplY3RLZXlzID0gW1xuICAnYXV0aCcsXG4gICdoYXNoJyxcbiAgJ2hvc3QnLFxuICAnaG9zdG5hbWUnLFxuICAnaHJlZicsXG4gICdwYXRoJyxcbiAgJ3BhdGhuYW1lJyxcbiAgJ3BvcnQnLFxuICAncHJvdG9jb2wnLFxuICAncXVlcnknLFxuICAnc2VhcmNoJyxcbiAgJ3NsYXNoZXMnLFxuXVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0V2l0aFZhbGlkYXRpb24odXJsOiBVcmxPYmplY3QpOiBzdHJpbmcge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICBpZiAodXJsICE9PSBudWxsICYmIHR5cGVvZiB1cmwgPT09ICdvYmplY3QnKSB7XG4gICAgICBPYmplY3Qua2V5cyh1cmwpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBpZiAoIXVybE9iamVjdEtleXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBVbmtub3duIGtleSBwYXNzZWQgdmlhIHVybE9iamVjdCBpbnRvIHVybC5mb3JtYXQ6ICR7a2V5fWBcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZvcm1hdFVybCh1cmwpXG59XG4iXSwibmFtZXMiOlsiZm9ybWF0VXJsIiwiZm9ybWF0V2l0aFZhbGlkYXRpb24iLCJ1cmxPYmplY3RLZXlzIiwic2xhc2hlZFByb3RvY29scyIsInVybE9iaiIsImF1dGgiLCJob3N0bmFtZSIsInByb3RvY29sIiwicGF0aG5hbWUiLCJoYXNoIiwicXVlcnkiLCJob3N0IiwiZW5jb2RlVVJJQ29tcG9uZW50IiwicmVwbGFjZSIsImluZGV4T2YiLCJwb3J0IiwiU3RyaW5nIiwicXVlcnlzdHJpbmciLCJ1cmxRdWVyeVRvU2VhcmNoUGFyYW1zIiwic2VhcmNoIiwiZW5kc1dpdGgiLCJzbGFzaGVzIiwidGVzdCIsInVybCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwia2V5IiwiaW5jbHVkZXMiLCJjb25zb2xlIiwid2FybiJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/router/utils/format-url.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/router/utils/get-segment-param.js":
|
||
/*!*****************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/get-segment-param.js ***!
|
||
\*****************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getParamProperties: function() {\n return getParamProperties;\n },\n getSegmentParam: function() {\n return getSegmentParam;\n },\n isCatchAll: function() {\n return isCatchAll;\n }\n});\nconst _interceptionroutes = __webpack_require__(/*! ./interception-routes */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/interception-routes.js\");\nfunction getSegmentParam(segment) {\n const interceptionMarker = _interceptionroutes.INTERCEPTION_ROUTE_MARKERS.find((marker)=>segment.startsWith(marker));\n // if an interception marker is part of the path segment, we need to jump ahead\n // to the relevant portion for param parsing\n if (interceptionMarker) {\n segment = segment.slice(interceptionMarker.length);\n }\n if (segment.startsWith('[[...') && segment.endsWith(']]')) {\n return {\n // TODO-APP: Optional catchall does not currently work with parallel routes,\n // so for now aren't handling a potential interception marker.\n paramType: 'optional-catchall',\n paramName: segment.slice(5, -2)\n };\n }\n if (segment.startsWith('[...') && segment.endsWith(']')) {\n return {\n paramType: interceptionMarker ? `catchall-intercepted-${interceptionMarker}` : 'catchall',\n paramName: segment.slice(4, -1)\n };\n }\n if (segment.startsWith('[') && segment.endsWith(']')) {\n return {\n paramType: interceptionMarker ? `dynamic-intercepted-${interceptionMarker}` : 'dynamic',\n paramName: segment.slice(1, -1)\n };\n }\n return null;\n}\nfunction isCatchAll(type) {\n return type === 'catchall' || type === 'catchall-intercepted-(..)(..)' || type === 'catchall-intercepted-(.)' || type === 'catchall-intercepted-(..)' || type === 'catchall-intercepted-(...)' || type === 'optional-catchall';\n}\nfunction getParamProperties(paramType) {\n let repeat = false;\n let optional = false;\n switch(paramType){\n case 'catchall':\n case 'catchall-intercepted-(..)(..)':\n case 'catchall-intercepted-(.)':\n case 'catchall-intercepted-(..)':\n case 'catchall-intercepted-(...)':\n repeat = true;\n break;\n case 'optional-catchall':\n repeat = true;\n optional = true;\n break;\n case 'dynamic':\n case 'dynamic-intercepted-(..)(..)':\n case 'dynamic-intercepted-(.)':\n case 'dynamic-intercepted-(..)':\n case 'dynamic-intercepted-(...)':\n break;\n default:\n paramType;\n }\n return {\n repeat,\n optional\n };\n} //# sourceMappingURL=get-segment-param.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2dldC1zZWdtZW50LXBhcmFtLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQXVFZ0JBLGtCQUFrQjtlQUFsQkE7O0lBNURBQyxlQUFlO2VBQWZBOztJQXlDQUMsVUFBVTtlQUFWQTs7O2dEQXBEMkI7QUFXcEMsU0FBU0QsZ0JBQWdCRSxPQUFlO0lBQzdDLE1BQU1DLHFCQUFxQkMsb0JBQUFBLDBCQUEwQixDQUFDQyxJQUFJLENBQUMsQ0FBQ0MsU0FDMURKLFFBQVFLLFVBQVUsQ0FBQ0Q7SUFHckIsK0VBQStFO0lBQy9FLDRDQUE0QztJQUM1QyxJQUFJSCxvQkFBb0I7UUFDdEJELFVBQVVBLFFBQVFNLEtBQUssQ0FBQ0wsbUJBQW1CTSxNQUFNO0lBQ25EO0lBRUEsSUFBSVAsUUFBUUssVUFBVSxDQUFDLFlBQVlMLFFBQVFRLFFBQVEsQ0FBQyxPQUFPO1FBQ3pELE9BQU87WUFDTCw0RUFBNEU7WUFDNUUsOERBQThEO1lBQzlEQyxXQUFXO1lBQ1hDLFdBQVdWLFFBQVFNLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDL0I7SUFDRjtJQUVBLElBQUlOLFFBQVFLLFVBQVUsQ0FBQyxXQUFXTCxRQUFRUSxRQUFRLENBQUMsTUFBTTtRQUN2RCxPQUFPO1lBQ0xDLFdBQVdSLHFCQUNQLENBQUMscUJBQXFCLEVBQUVBLG9CQUFvQixHQUM1QztZQUNKUyxXQUFXVixRQUFRTSxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQy9CO0lBQ0Y7SUFFQSxJQUFJTixRQUFRSyxVQUFVLENBQUMsUUFBUUwsUUFBUVEsUUFBUSxDQUFDLE1BQU07UUFDcEQsT0FBTztZQUNMQyxXQUFXUixxQkFDUCxDQUFDLG9CQUFvQixFQUFFQSxvQkFBb0IsR0FDM0M7WUFDSlMsV0FBV1YsUUFBUU0sS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUMvQjtJQUNGO0lBRUEsT0FBTztBQUNUO0FBRU8sU0FBU1AsV0FDZFksSUFBdUI7SUFRdkIsT0FDRUEsU0FBUyxjQUNUQSxTQUFTLG1DQUNUQSxTQUFTLDhCQUNUQSxTQUFTLCtCQUNUQSxTQUFTLGdDQUNUQSxTQUFTO0FBRWI7QUFFTyxTQUFTZCxtQkFBbUJZLFNBQTRCO0lBSTdELElBQUlHLFNBQVM7SUFDYixJQUFJQyxXQUFXO0lBRWYsT0FBUUo7UUFDTixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztZQUNIRyxTQUFTO1lBQ1Q7UUFDRixLQUFLO1lBQ0hBLFNBQVM7WUFDVEMsV0FBVztZQUNYO1FBQ0YsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7WUFDSDtRQUNGO1lBQ0VKO0lBQ0o7SUFFQSxPQUFPO1FBQUVHO1FBQVFDO0lBQVM7QUFDNUIiLCJzb3VyY2VzIjpbIi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZ2V0LXNlZ21lbnQtcGFyYW0udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTIH0gZnJvbSAnLi9pbnRlcmNlcHRpb24tcm91dGVzJ1xuaW1wb3J0IHR5cGUgeyBEeW5hbWljUGFyYW1UeXBlcyB9IGZyb20gJy4uLy4uL2FwcC1yb3V0ZXItdHlwZXMnXG5cbmV4cG9ydCB0eXBlIFNlZ21lbnRQYXJhbSA9IHtcbiAgcGFyYW1OYW1lOiBzdHJpbmdcbiAgcGFyYW1UeXBlOiBEeW5hbWljUGFyYW1UeXBlc1xufVxuXG4vKipcbiAqIFBhcnNlIGR5bmFtaWMgcm91dGUgc2VnbWVudCB0byB0eXBlIG9mIHBhcmFtZXRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VnbWVudFBhcmFtKHNlZ21lbnQ6IHN0cmluZyk6IFNlZ21lbnRQYXJhbSB8IG51bGwge1xuICBjb25zdCBpbnRlcmNlcHRpb25NYXJrZXIgPSBJTlRFUkNFUFRJT05fUk9VVEVfTUFSS0VSUy5maW5kKChtYXJrZXIpID0+XG4gICAgc2VnbWVudC5zdGFydHNXaXRoKG1hcmtlcilcbiAgKVxuXG4gIC8vIGlmIGFuIGludGVyY2VwdGlvbiBtYXJrZXIgaXMgcGFydCBvZiB0aGUgcGF0aCBzZWdtZW50LCB3ZSBuZWVkIHRvIGp1bXAgYWhlYWRcbiAgLy8gdG8gdGhlIHJlbGV2YW50IHBvcnRpb24gZm9yIHBhcmFtIHBhcnNpbmdcbiAgaWYgKGludGVyY2VwdGlvbk1hcmtlcikge1xuICAgIHNlZ21lbnQgPSBzZWdtZW50LnNsaWNlKGludGVyY2VwdGlvbk1hcmtlci5sZW5ndGgpXG4gIH1cblxuICBpZiAoc2VnbWVudC5zdGFydHNXaXRoKCdbWy4uLicpICYmIHNlZ21lbnQuZW5kc1dpdGgoJ11dJykpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gVE9ETy1BUFA6IE9wdGlvbmFsIGNhdGNoYWxsIGRvZXMgbm90IGN1cnJlbnRseSB3b3JrIHdpdGggcGFyYWxsZWwgcm91dGVzLFxuICAgICAgLy8gc28gZm9yIG5vdyBhcmVuJ3QgaGFuZGxpbmcgYSBwb3RlbnRpYWwgaW50ZXJjZXB0aW9uIG1hcmtlci5cbiAgICAgIHBhcmFtVHlwZTogJ29wdGlvbmFsLWNhdGNoYWxsJyxcbiAgICAgIHBhcmFtTmFtZTogc2VnbWVudC5zbGljZSg1LCAtMiksXG4gICAgfVxuICB9XG5cbiAgaWYgKHNlZ21lbnQuc3RhcnRzV2l0aCgnWy4uLicpICYmIHNlZ21lbnQuZW5kc1dpdGgoJ10nKSkge1xuICAgIHJldHVybiB7XG4gICAgICBwYXJhbVR5cGU6IGludGVyY2VwdGlvbk1hcmtlclxuICAgICAgICA/IGBjYXRjaGFsbC1pbnRlcmNlcHRlZC0ke2ludGVyY2VwdGlvbk1hcmtlcn1gXG4gICAgICAgIDogJ2NhdGNoYWxsJyxcbiAgICAgIHBhcmFtTmFtZTogc2VnbWVudC5zbGljZSg0LCAtMSksXG4gICAgfVxuICB9XG5cbiAgaWYgKHNlZ21lbnQuc3RhcnRzV2l0aCgnWycpICYmIHNlZ21lbnQuZW5kc1dpdGgoJ10nKSkge1xuICAgIHJldHVybiB7XG4gICAgICBwYXJhbVR5cGU6IGludGVyY2VwdGlvbk1hcmtlclxuICAgICAgICA/IGBkeW5hbWljLWludGVyY2VwdGVkLSR7aW50ZXJjZXB0aW9uTWFya2VyfWBcbiAgICAgICAgOiAnZHluYW1pYycsXG4gICAgICBwYXJhbU5hbWU6IHNlZ21lbnQuc2xpY2UoMSwgLTEpLFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NhdGNoQWxsKFxuICB0eXBlOiBEeW5hbWljUGFyYW1UeXBlc1xuKTogdHlwZSBpc1xuICB8ICdjYXRjaGFsbCdcbiAgfCAnY2F0Y2hhbGwtaW50ZXJjZXB0ZWQtKC4uKSguLiknXG4gIHwgJ2NhdGNoYWxsLWludGVyY2VwdGVkLSguKSdcbiAgfCAnY2F0Y2hhbGwtaW50ZXJjZXB0ZWQtKC4uKSdcbiAgfCAnY2F0Y2hhbGwtaW50ZXJjZXB0ZWQtKC4uLiknXG4gIHwgJ29wdGlvbmFsLWNhdGNoYWxsJyB7XG4gIHJldHVybiAoXG4gICAgdHlwZSA9PT0gJ2NhdGNoYWxsJyB8fFxuICAgIHR5cGUgPT09ICdjYXRjaGFsbC1pbnRlcmNlcHRlZC0oLi4pKC4uKScgfHxcbiAgICB0eXBlID09PSAnY2F0Y2hhbGwtaW50ZXJjZXB0ZWQtKC4pJyB8fFxuICAgIHR5cGUgPT09ICdjYXRjaGFsbC1pbnRlcmNlcHRlZC0oLi4pJyB8fFxuICAgIHR5cGUgPT09ICdjYXRjaGFsbC1pbnRlcmNlcHRlZC0oLi4uKScgfHxcbiAgICB0eXBlID09PSAnb3B0aW9uYWwtY2F0Y2hhbGwnXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBhcmFtUHJvcGVydGllcyhwYXJhbVR5cGU6IER5bmFtaWNQYXJhbVR5cGVzKToge1xuICByZXBlYXQ6IGJvb2xlYW5cbiAgb3B0aW9uYWw6IGJvb2xlYW5cbn0ge1xuICBsZXQgcmVwZWF0ID0gZmFsc2VcbiAgbGV0IG9wdGlvbmFsID0gZmFsc2VcblxuICBzd2l0Y2ggKHBhcmFtVHlwZSkge1xuICAgIGNhc2UgJ2NhdGNoYWxsJzpcbiAgICBjYXNlICdjYXRjaGFsbC1pbnRlcmNlcHRlZC0oLi4pKC4uKSc6XG4gICAgY2FzZSAnY2F0Y2hhbGwtaW50ZXJjZXB0ZWQtKC4pJzpcbiAgICBjYXNlICdjYXRjaGFsbC1pbnRlcmNlcHRlZC0oLi4pJzpcbiAgICBjYXNlICdjYXRjaGFsbC1pbnRlcmNlcHRlZC0oLi4uKSc6XG4gICAgICByZXBlYXQgPSB0cnVlXG4gICAgICBicmVha1xuICAgIGNhc2UgJ29wdGlvbmFsLWNhdGNoYWxsJzpcbiAgICAgIHJlcGVhdCA9IHRydWVcbiAgICAgIG9wdGlvbmFsID0gdHJ1ZVxuICAgICAgYnJlYWtcbiAgICBjYXNlICdkeW5hbWljJzpcbiAgICBjYXNlICdkeW5hbWljLWludGVyY2VwdGVkLSguLikoLi4pJzpcbiAgICBjYXNlICdkeW5hbWljLWludGVyY2VwdGVkLSguKSc6XG4gICAgY2FzZSAnZHluYW1pYy1pbnRlcmNlcHRlZC0oLi4pJzpcbiAgICBjYXNlICdkeW5hbWljLWludGVyY2VwdGVkLSguLi4pJzpcbiAgICAgIGJyZWFrXG4gICAgZGVmYXVsdDpcbiAgICAgIHBhcmFtVHlwZSBzYXRpc2ZpZXMgbmV2ZXJcbiAgfVxuXG4gIHJldHVybiB7IHJlcGVhdCwgb3B0aW9uYWwgfVxufVxuIl0sIm5hbWVzIjpbImdldFBhcmFtUHJvcGVydGllcyIsImdldFNlZ21lbnRQYXJhbSIsImlzQ2F0Y2hBbGwiLCJzZWdtZW50IiwiaW50ZXJjZXB0aW9uTWFya2VyIiwiSU5URVJDRVBUSU9OX1JPVVRFX01BUktFUlMiLCJmaW5kIiwibWFya2VyIiwic3RhcnRzV2l0aCIsInNsaWNlIiwibGVuZ3RoIiwiZW5kc1dpdGgiLCJwYXJhbVR5cGUiLCJwYXJhbU5hbWUiLCJ0eXBlIiwicmVwZWF0Iiwib3B0aW9uYWwiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/router/utils/get-segment-param.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/router/utils/html-bots.js":
|
||
/*!*********************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/html-bots.js ***!
|
||
\*********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("// This regex contains the bots that we need to do a blocking render for and can't safely stream the response\n// due to how they parse the DOM. For example, they might explicitly check for metadata in the `head` tag, so we can't stream metadata tags after the `head` was sent.\n// Note: The pattern [\\w-]+-Google captures all Google crawlers with \"-Google\" suffix (e.g., Mediapartners-Google, AdsBot-Google, Storebot-Google)\n// as well as crawlers starting with \"Google-\" (e.g., Google-PageRenderer, Google-InspectionTool)\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"HTML_LIMITED_BOT_UA_RE\", ({\n enumerable: true,\n get: function() {\n return HTML_LIMITED_BOT_UA_RE;\n }\n}));\nconst HTML_LIMITED_BOT_UA_RE = /[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight/i; //# sourceMappingURL=html-bots.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2h0bWwtYm90cy5qcyIsIm1hcHBpbmdzIjoiQUFBQSw2R0FBNkc7QUFDN0csc0tBQXNLO0FBQ3RLLGtKQUFrSjtBQUNsSixpR0FBaUc7Ozs7OzBEQUNwRkE7OztlQUFBQTs7O0FBQU4sTUFBTUEseUJBQ1giLCJzb3VyY2VzIjpbIi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaHRtbC1ib3RzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgcmVnZXggY29udGFpbnMgdGhlIGJvdHMgdGhhdCB3ZSBuZWVkIHRvIGRvIGEgYmxvY2tpbmcgcmVuZGVyIGZvciBhbmQgY2FuJ3Qgc2FmZWx5IHN0cmVhbSB0aGUgcmVzcG9uc2Vcbi8vIGR1ZSB0byBob3cgdGhleSBwYXJzZSB0aGUgRE9NLiBGb3IgZXhhbXBsZSwgdGhleSBtaWdodCBleHBsaWNpdGx5IGNoZWNrIGZvciBtZXRhZGF0YSBpbiB0aGUgYGhlYWRgIHRhZywgc28gd2UgY2FuJ3Qgc3RyZWFtIG1ldGFkYXRhIHRhZ3MgYWZ0ZXIgdGhlIGBoZWFkYCB3YXMgc2VudC5cbi8vIE5vdGU6IFRoZSBwYXR0ZXJuIFtcXHctXSstR29vZ2xlIGNhcHR1cmVzIGFsbCBHb29nbGUgY3Jhd2xlcnMgd2l0aCBcIi1Hb29nbGVcIiBzdWZmaXggKGUuZy4sIE1lZGlhcGFydG5lcnMtR29vZ2xlLCBBZHNCb3QtR29vZ2xlLCBTdG9yZWJvdC1Hb29nbGUpXG4vLyBhcyB3ZWxsIGFzIGNyYXdsZXJzIHN0YXJ0aW5nIHdpdGggXCJHb29nbGUtXCIgKGUuZy4sIEdvb2dsZS1QYWdlUmVuZGVyZXIsIEdvb2dsZS1JbnNwZWN0aW9uVG9vbClcbmV4cG9ydCBjb25zdCBIVE1MX0xJTUlURURfQk9UX1VBX1JFID1cbiAgL1tcXHctXSstR29vZ2xlfEdvb2dsZS1bXFx3LV0rfENocm9tZS1MaWdodGhvdXNlfFNsdXJwfER1Y2tEdWNrQm90fGJhaWR1c3BpZGVyfHlhbmRleHxzb2dvdXxiaXRseWJvdHx0dW1ibHJ8dmtTaGFyZXxxdW9yYSBsaW5rIHByZXZpZXd8cmVkZGl0Ym90fGlhX2FyY2hpdmVyfEJpbmdib3R8QmluZ1ByZXZpZXd8YXBwbGVib3R8ZmFjZWJvb2tleHRlcm5hbGhpdHxmYWNlYm9va2NhdGFsb2d8VHdpdHRlcmJvdHxMaW5rZWRJbkJvdHxTbGFja2JvdHxEaXNjb3JkYm90fFdoYXRzQXBwfFNreXBlVXJpUHJldmlld3xZZXRpfGdvb2dsZXdlYmxpZ2h0L2lcbiJdLCJuYW1lcyI6WyJIVE1MX0xJTUlURURfQk9UX1VBX1JFIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/router/utils/html-bots.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/router/utils/interception-routes.js":
|
||
/*!*******************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/interception-routes.js ***!
|
||
\*******************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n INTERCEPTION_ROUTE_MARKERS: function() {\n return INTERCEPTION_ROUTE_MARKERS;\n },\n extractInterceptionRouteInformation: function() {\n return extractInterceptionRouteInformation;\n },\n isInterceptionRouteAppPath: function() {\n return isInterceptionRouteAppPath;\n }\n});\nconst _apppaths = __webpack_require__(/*! ./app-paths */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/app-paths.js\");\nconst INTERCEPTION_ROUTE_MARKERS = [\n '(..)(..)',\n '(.)',\n '(..)',\n '(...)'\n];\nfunction isInterceptionRouteAppPath(path) {\n // TODO-APP: add more serious validation\n return path.split('/').find((segment)=>INTERCEPTION_ROUTE_MARKERS.find((m)=>segment.startsWith(m))) !== undefined;\n}\nfunction extractInterceptionRouteInformation(path) {\n let interceptingRoute;\n let marker;\n let interceptedRoute;\n for (const segment of path.split('/')){\n marker = INTERCEPTION_ROUTE_MARKERS.find((m)=>segment.startsWith(m));\n if (marker) {\n ;\n [interceptingRoute, interceptedRoute] = path.split(marker, 2);\n break;\n }\n }\n if (!interceptingRoute || !marker || !interceptedRoute) {\n throw Object.defineProperty(new Error(`Invalid interception route: ${path}. Must be in the format /<intercepting route>/(..|...|..)(..)/<intercepted route>`), \"__NEXT_ERROR_CODE\", {\n value: \"E269\",\n enumerable: false,\n configurable: true\n });\n }\n interceptingRoute = (0, _apppaths.normalizeAppPath)(interceptingRoute) // normalize the path, e.g. /(blog)/feed -> /feed\n ;\n switch(marker){\n case '(.)':\n // (.) indicates that we should match with sibling routes, so we just need to append the intercepted route to the intercepting route\n if (interceptingRoute === '/') {\n interceptedRoute = `/${interceptedRoute}`;\n } else {\n interceptedRoute = interceptingRoute + '/' + interceptedRoute;\n }\n break;\n case '(..)':\n // (..) indicates that we should match at one level up, so we need to remove the last segment of the intercepting route\n if (interceptingRoute === '/') {\n throw Object.defineProperty(new Error(`Invalid interception route: ${path}. Cannot use (..) marker at the root level, use (.) instead.`), \"__NEXT_ERROR_CODE\", {\n value: \"E207\",\n enumerable: false,\n configurable: true\n });\n }\n interceptedRoute = interceptingRoute.split('/').slice(0, -1).concat(interceptedRoute).join('/');\n break;\n case '(...)':\n // (...) will match the route segment in the root directory, so we need to use the root directory to prepend the intercepted route\n interceptedRoute = '/' + interceptedRoute;\n break;\n case '(..)(..)':\n // (..)(..) indicates that we should match at two levels up, so we need to remove the last two segments of the intercepting route\n const splitInterceptingRoute = interceptingRoute.split('/');\n if (splitInterceptingRoute.length <= 2) {\n throw Object.defineProperty(new Error(`Invalid interception route: ${path}. Cannot use (..)(..) marker at the root level or one level up.`), \"__NEXT_ERROR_CODE\", {\n value: \"E486\",\n enumerable: false,\n configurable: true\n });\n }\n interceptedRoute = splitInterceptingRoute.slice(0, -2).concat(interceptedRoute).join('/');\n break;\n default:\n throw Object.defineProperty(new Error('Invariant: unexpected marker'), \"__NEXT_ERROR_CODE\", {\n value: \"E112\",\n enumerable: false,\n configurable: true\n });\n }\n return {\n interceptingRoute,\n interceptedRoute\n };\n} //# sourceMappingURL=interception-routes.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2ludGVyY2VwdGlvbi1yb3V0ZXMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBR2FBLDBCQUEwQjtlQUExQkE7O0lBbUNHQyxtQ0FBbUM7ZUFBbkNBOztJQTFCQUMsMEJBQTBCO2VBQTFCQTs7O3NDQVppQjtBQUcxQixNQUFNRiw2QkFBNkI7SUFDeEM7SUFDQTtJQUNBO0lBQ0E7Q0FDRDtBQUlNLFNBQVNFLDJCQUEyQkMsSUFBWTtJQUNyRCx3Q0FBd0M7SUFDeEMsT0FDRUEsS0FDR0MsS0FBSyxDQUFDLEtBQ05DLElBQUksQ0FBQyxDQUFDQyxVQUNMTiwyQkFBMkJLLElBQUksQ0FBQyxDQUFDRSxJQUFNRCxRQUFRRSxVQUFVLENBQUNELFNBQ3RERTtBQUVaO0FBaUJPLFNBQVNSLG9DQUNkRSxJQUFZO0lBRVosSUFBSU87SUFDSixJQUFJQztJQUNKLElBQUlDO0lBRUosS0FBSyxNQUFNTixXQUFXSCxLQUFLQyxLQUFLLENBQUMsS0FBTTtRQUNyQ08sU0FBU1gsMkJBQTJCSyxJQUFJLENBQUMsQ0FBQ0UsSUFBTUQsUUFBUUUsVUFBVSxDQUFDRDtRQUNuRSxJQUFJSSxRQUFROztZQUNULENBQUNELG1CQUFtQkUsaUJBQWlCLEdBQUdULEtBQUtDLEtBQUssQ0FBQ08sUUFBUTtZQUM1RDtRQUNGO0lBQ0Y7SUFFQSxJQUFJLENBQUNELHFCQUFxQixDQUFDQyxVQUFVLENBQUNDLGtCQUFrQjtRQUN0RCxNQUFNLHFCQUVMLENBRkssSUFBSUMsTUFDUixDQUFDLDRCQUE0QixFQUFFVixLQUFLLGlGQUFpRixDQUFDLEdBRGxIO21CQUFBO3dCQUFBOzBCQUFBO1FBRU47SUFDRjtJQUVBTyxvQkFBb0JJLENBQUFBLEdBQUFBLFVBQUFBLGdCQUFBQSxFQUFpQkosbUJBQW1CLGlEQUFpRDs7SUFFekcsT0FBUUM7UUFDTixLQUFLO1lBQ0gsb0lBQW9JO1lBQ3BJLElBQUlELHNCQUFzQixLQUFLO2dCQUM3QkUsbUJBQW1CLENBQUMsQ0FBQyxFQUFFQSxrQkFBa0I7WUFDM0MsT0FBTztnQkFDTEEsbUJBQW1CRixvQkFBb0IsTUFBTUU7WUFDL0M7WUFDQTtRQUNGLEtBQUs7WUFDSCx1SEFBdUg7WUFDdkgsSUFBSUYsc0JBQXNCLEtBQUs7Z0JBQzdCLE1BQU0scUJBRUwsQ0FGSyxJQUFJRyxNQUNSLENBQUMsNEJBQTRCLEVBQUVWLEtBQUssNERBQTRELENBQUMsR0FEN0Y7MkJBQUE7Z0NBQUE7a0NBQUE7Z0JBRU47WUFDRjtZQUNBUyxtQkFBbUJGLGtCQUNoQk4sS0FBSyxDQUFDLEtBQ05XLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FDVkMsTUFBTSxDQUFDSixrQkFDUEssSUFBSSxDQUFDO1lBQ1I7UUFDRixLQUFLO1lBQ0gsa0lBQWtJO1lBQ2xJTCxtQkFBbUIsTUFBTUE7WUFDekI7UUFDRixLQUFLO1lBQ0gsaUlBQWlJO1lBRWpJLE1BQU1NLHlCQUF5QlIsa0JBQWtCTixLQUFLLENBQUM7WUFDdkQsSUFBSWMsdUJBQXVCQyxNQUFNLElBQUksR0FBRztnQkFDdEMsTUFBTSxxQkFFTCxDQUZLLElBQUlOLE1BQ1IsQ0FBQyw0QkFBNEIsRUFBRVYsS0FBSywrREFBK0QsQ0FBQyxHQURoRzsyQkFBQTtnQ0FBQTtrQ0FBQTtnQkFFTjtZQUNGO1lBRUFTLG1CQUFtQk0sdUJBQ2hCSCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQ1ZDLE1BQU0sQ0FBQ0osa0JBQ1BLLElBQUksQ0FBQztZQUNSO1FBQ0Y7WUFDRSxNQUFNLHFCQUF5QyxDQUF6QyxJQUFJSixNQUFNLGlDQUFWO3VCQUFBOzRCQUFBOzhCQUFBO1lBQXdDO0lBQ2xEO0lBRUEsT0FBTztRQUFFSDtRQUFtQkU7SUFBaUI7QUFDL0MiLCJzb3VyY2VzIjpbIi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaW50ZXJjZXB0aW9uLXJvdXRlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBub3JtYWxpemVBcHBQYXRoIH0gZnJvbSAnLi9hcHAtcGF0aHMnXG5cbi8vIG9yZGVyIG1hdHRlcnMgaGVyZSwgdGhlIGZpcnN0IG1hdGNoIHdpbGwgYmUgdXNlZFxuZXhwb3J0IGNvbnN0IElOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTID0gW1xuICAnKC4uKSguLiknLFxuICAnKC4pJyxcbiAgJyguLiknLFxuICAnKC4uLiknLFxuXSBhcyBjb25zdFxuXG5leHBvcnQgdHlwZSBJbnRlcmNlcHRpb25NYXJrZXIgPSAodHlwZW9mIElOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTKVtudW1iZXJdXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ludGVyY2VwdGlvblJvdXRlQXBwUGF0aChwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgLy8gVE9ETy1BUFA6IGFkZCBtb3JlIHNlcmlvdXMgdmFsaWRhdGlvblxuICByZXR1cm4gKFxuICAgIHBhdGhcbiAgICAgIC5zcGxpdCgnLycpXG4gICAgICAuZmluZCgoc2VnbWVudCkgPT5cbiAgICAgICAgSU5URVJDRVBUSU9OX1JPVVRFX01BUktFUlMuZmluZCgobSkgPT4gc2VnbWVudC5zdGFydHNXaXRoKG0pKVxuICAgICAgKSAhPT0gdW5kZWZpbmVkXG4gIClcbn1cblxudHlwZSBJbnRlcmNlcHRpb25Sb3V0ZUluZm9ybWF0aW9uID0ge1xuICAvKipcbiAgICogVGhlIGludGVyY2VwdGluZyByb3V0ZS4gVGhpcyBpcyB0aGUgcm91dGUgdGhhdCBpcyBiZWluZyBpbnRlcmNlcHRlZCBvciB0aGVcbiAgICogcm91dGUgdGhhdCB0aGUgdXNlciB3YXMgY29taW5nIGZyb20uIFRoaXMgaXMgbWF0Y2hlZCBieSB0aGUgTmV4dC1VcmxcbiAgICogaGVhZGVyLlxuICAgKi9cbiAgaW50ZXJjZXB0aW5nUm91dGU6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBUaGUgaW50ZXJjZXB0ZWQgcm91dGUuIFRoaXMgaXMgdGhlIHJvdXRlIHRoYXQgaXMgYmVpbmcgaW50ZXJjZXB0ZWQgb3IgdGhlXG4gICAqIHJvdXRlIHRoYXQgdGhlIHVzZXIgaXMgZ29pbmcgdG8uIFRoaXMgaXMgbWF0Y2hlZCBieSB0aGUgcmVxdWVzdCBwYXRobmFtZS5cbiAgICovXG4gIGludGVyY2VwdGVkUm91dGU6IHN0cmluZ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEludGVyY2VwdGlvblJvdXRlSW5mb3JtYXRpb24oXG4gIHBhdGg6IHN0cmluZ1xuKTogSW50ZXJjZXB0aW9uUm91dGVJbmZvcm1hdGlvbiB7XG4gIGxldCBpbnRlcmNlcHRpbmdSb3V0ZTogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIGxldCBtYXJrZXI6ICh0eXBlb2YgSU5URVJDRVBUSU9OX1JPVVRFX01BUktFUlMpW251bWJlcl0gfCB1bmRlZmluZWRcbiAgbGV0IGludGVyY2VwdGVkUm91dGU6IHN0cmluZyB8IHVuZGVmaW5lZFxuXG4gIGZvciAoY29uc3Qgc2VnbWVudCBvZiBwYXRoLnNwbGl0KCcvJykpIHtcbiAgICBtYXJrZXIgPSBJTlRFUkNFUFRJT05fUk9VVEVfTUFSS0VSUy5maW5kKChtKSA9PiBzZWdtZW50LnN0YXJ0c1dpdGgobSkpXG4gICAgaWYgKG1hcmtlcikge1xuICAgICAgO1tpbnRlcmNlcHRpbmdSb3V0ZSwgaW50ZXJjZXB0ZWRSb3V0ZV0gPSBwYXRoLnNwbGl0KG1hcmtlciwgMilcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKCFpbnRlcmNlcHRpbmdSb3V0ZSB8fCAhbWFya2VyIHx8ICFpbnRlcmNlcHRlZFJvdXRlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEludmFsaWQgaW50ZXJjZXB0aW9uIHJvdXRlOiAke3BhdGh9LiBNdXN0IGJlIGluIHRoZSBmb3JtYXQgLzxpbnRlcmNlcHRpbmcgcm91dGU+LyguLnwuLi58Li4pKC4uKS88aW50ZXJjZXB0ZWQgcm91dGU+YFxuICAgIClcbiAgfVxuXG4gIGludGVyY2VwdGluZ1JvdXRlID0gbm9ybWFsaXplQXBwUGF0aChpbnRlcmNlcHRpbmdSb3V0ZSkgLy8gbm9ybWFsaXplIHRoZSBwYXRoLCBlLmcuIC8oYmxvZykvZmVlZCAtPiAvZmVlZFxuXG4gIHN3aXRjaCAobWFya2VyKSB7XG4gICAgY2FzZSAnKC4pJzpcbiAgICAgIC8vICguKSBpbmRpY2F0ZXMgdGhhdCB3ZSBzaG91bGQgbWF0Y2ggd2l0aCBzaWJsaW5nIHJvdXRlcywgc28gd2UganVzdCBuZWVkIHRvIGFwcGVuZCB0aGUgaW50ZXJjZXB0ZWQgcm91dGUgdG8gdGhlIGludGVyY2VwdGluZyByb3V0ZVxuICAgICAgaWYgKGludGVyY2VwdGluZ1JvdXRlID09PSAnLycpIHtcbiAgICAgICAgaW50ZXJjZXB0ZWRSb3V0ZSA9IGAvJHtpbnRlcmNlcHRlZFJvdXRlfWBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGludGVyY2VwdGVkUm91dGUgPSBpbnRlcmNlcHRpbmdSb3V0ZSArICcvJyArIGludGVyY2VwdGVkUm91dGVcbiAgICAgIH1cbiAgICAgIGJyZWFrXG4gICAgY2FzZSAnKC4uKSc6XG4gICAgICAvLyAoLi4pIGluZGljYXRlcyB0aGF0IHdlIHNob3VsZCBtYXRjaCBhdCBvbmUgbGV2ZWwgdXAsIHNvIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBsYXN0IHNlZ21lbnQgb2YgdGhlIGludGVyY2VwdGluZyByb3V0ZVxuICAgICAgaWYgKGludGVyY2VwdGluZ1JvdXRlID09PSAnLycpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBJbnZhbGlkIGludGVyY2VwdGlvbiByb3V0ZTogJHtwYXRofS4gQ2Fubm90IHVzZSAoLi4pIG1hcmtlciBhdCB0aGUgcm9vdCBsZXZlbCwgdXNlICguKSBpbnN0ZWFkLmBcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaW50ZXJjZXB0ZWRSb3V0ZSA9IGludGVyY2VwdGluZ1JvdXRlXG4gICAgICAgIC5zcGxpdCgnLycpXG4gICAgICAgIC5zbGljZSgwLCAtMSlcbiAgICAgICAgLmNvbmNhdChpbnRlcmNlcHRlZFJvdXRlKVxuICAgICAgICAuam9pbignLycpXG4gICAgICBicmVha1xuICAgIGNhc2UgJyguLi4pJzpcbiAgICAgIC8vICguLi4pIHdpbGwgbWF0Y2ggdGhlIHJvdXRlIHNlZ21lbnQgaW4gdGhlIHJvb3QgZGlyZWN0b3J5LCBzbyB3ZSBuZWVkIHRvIHVzZSB0aGUgcm9vdCBkaXJlY3RvcnkgdG8gcHJlcGVuZCB0aGUgaW50ZXJjZXB0ZWQgcm91dGVcbiAgICAgIGludGVyY2VwdGVkUm91dGUgPSAnLycgKyBpbnRlcmNlcHRlZFJvdXRlXG4gICAgICBicmVha1xuICAgIGNhc2UgJyguLikoLi4pJzpcbiAgICAgIC8vICguLikoLi4pIGluZGljYXRlcyB0aGF0IHdlIHNob3VsZCBtYXRjaCBhdCB0d28gbGV2ZWxzIHVwLCBzbyB3ZSBuZWVkIHRvIHJlbW92ZSB0aGUgbGFzdCB0d28gc2VnbWVudHMgb2YgdGhlIGludGVyY2VwdGluZyByb3V0ZVxuXG4gICAgICBjb25zdCBzcGxpdEludGVyY2VwdGluZ1JvdXRlID0gaW50ZXJjZXB0aW5nUm91dGUuc3BsaXQoJy8nKVxuICAgICAgaWYgKHNwbGl0SW50ZXJjZXB0aW5nUm91dGUubGVuZ3RoIDw9IDIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBJbnZhbGlkIGludGVyY2VwdGlvbiByb3V0ZTogJHtwYXRofS4gQ2Fubm90IHVzZSAoLi4pKC4uKSBtYXJrZXIgYXQgdGhlIHJvb3QgbGV2ZWwgb3Igb25lIGxldmVsIHVwLmBcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBpbnRlcmNlcHRlZFJvdXRlID0gc3BsaXRJbnRlcmNlcHRpbmdSb3V0ZVxuICAgICAgICAuc2xpY2UoMCwgLTIpXG4gICAgICAgIC5jb25jYXQoaW50ZXJjZXB0ZWRSb3V0ZSlcbiAgICAgICAgLmpvaW4oJy8nKVxuICAgICAgYnJlYWtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhcmlhbnQ6IHVuZXhwZWN0ZWQgbWFya2VyJylcbiAgfVxuXG4gIHJldHVybiB7IGludGVyY2VwdGluZ1JvdXRlLCBpbnRlcmNlcHRlZFJvdXRlIH1cbn1cbiJdLCJuYW1lcyI6WyJJTlRFUkNFUFRJT05fUk9VVEVfTUFSS0VSUyIsImV4dHJhY3RJbnRlcmNlcHRpb25Sb3V0ZUluZm9ybWF0aW9uIiwiaXNJbnRlcmNlcHRpb25Sb3V0ZUFwcFBhdGgiLCJwYXRoIiwic3BsaXQiLCJmaW5kIiwic2VnbWVudCIsIm0iLCJzdGFydHNXaXRoIiwidW5kZWZpbmVkIiwiaW50ZXJjZXB0aW5nUm91dGUiLCJtYXJrZXIiLCJpbnRlcmNlcHRlZFJvdXRlIiwiRXJyb3IiLCJub3JtYWxpemVBcHBQYXRoIiwic2xpY2UiLCJjb25jYXQiLCJqb2luIiwic3BsaXRJbnRlcmNlcHRpbmdSb3V0ZSIsImxlbmd0aCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/router/utils/interception-routes.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/router/utils/is-bot.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/is-bot.js ***!
|
||
\******************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n HTML_LIMITED_BOT_UA_RE: function() {\n return _htmlbots.HTML_LIMITED_BOT_UA_RE;\n },\n HTML_LIMITED_BOT_UA_RE_STRING: function() {\n return HTML_LIMITED_BOT_UA_RE_STRING;\n },\n getBotType: function() {\n return getBotType;\n },\n isBot: function() {\n return isBot;\n }\n});\nconst _htmlbots = __webpack_require__(/*! ./html-bots */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/html-bots.js\");\n// Bot crawler that will spin up a headless browser and execute JS.\n// Only the main Googlebot search crawler executes JavaScript, not other Google crawlers.\n// x-ref: https://developers.google.com/search/docs/crawling-indexing/google-common-crawlers\n// This regex specifically matches \"Googlebot\" but NOT \"Mediapartners-Google\", \"AdsBot-Google\", etc.\nconst HEADLESS_BROWSER_BOT_UA_RE = /Googlebot(?!-)|Googlebot$/i;\nconst HTML_LIMITED_BOT_UA_RE_STRING = _htmlbots.HTML_LIMITED_BOT_UA_RE.source;\nfunction isDomBotUA(userAgent) {\n return HEADLESS_BROWSER_BOT_UA_RE.test(userAgent);\n}\nfunction isHtmlLimitedBotUA(userAgent) {\n return _htmlbots.HTML_LIMITED_BOT_UA_RE.test(userAgent);\n}\nfunction isBot(userAgent) {\n return isDomBotUA(userAgent) || isHtmlLimitedBotUA(userAgent);\n}\nfunction getBotType(userAgent) {\n if (isDomBotUA(userAgent)) {\n return 'dom';\n }\n if (isHtmlLimitedBotUA(userAgent)) {\n return 'html';\n }\n return undefined;\n} //# sourceMappingURL=is-bot.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2lzLWJvdC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFVU0Esc0JBQXNCO2VBQXRCQSxVQUFBQSxzQkFBc0I7O0lBRmxCQyw2QkFBNkI7ZUFBN0JBOztJQWdCR0MsVUFBVTtlQUFWQTs7SUFKQUMsS0FBSztlQUFMQTs7O3NDQXBCdUI7QUFFdkMsbUVBQW1FO0FBQ25FLHlGQUF5RjtBQUN6Riw0RkFBNEY7QUFDNUYsb0dBQW9HO0FBQ3BHLE1BQU1DLDZCQUE2QjtBQUU1QixNQUFNSCxnQ0FBZ0NELFVBQUFBLHNCQUFzQixDQUFDSyxNQUFNO0FBSTFFLFNBQVNDLFdBQVdDLFNBQWlCO0lBQ25DLE9BQU9ILDJCQUEyQkksSUFBSSxDQUFDRDtBQUN6QztBQUVBLFNBQVNFLG1CQUFtQkYsU0FBaUI7SUFDM0MsT0FBT1AsVUFBQUEsc0JBQXNCLENBQUNRLElBQUksQ0FBQ0Q7QUFDckM7QUFFTyxTQUFTSixNQUFNSSxTQUFpQjtJQUNyQyxPQUFPRCxXQUFXQyxjQUFjRSxtQkFBbUJGO0FBQ3JEO0FBRU8sU0FBU0wsV0FBV0ssU0FBaUI7SUFDMUMsSUFBSUQsV0FBV0MsWUFBWTtRQUN6QixPQUFPO0lBQ1Q7SUFDQSxJQUFJRSxtQkFBbUJGLFlBQVk7UUFDakMsT0FBTztJQUNUO0lBQ0EsT0FBT0c7QUFDVCIsInNvdXJjZXMiOlsiL3NyYy9zaGFyZWQvbGliL3JvdXRlci91dGlscy9pcy1ib3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSFRNTF9MSU1JVEVEX0JPVF9VQV9SRSB9IGZyb20gJy4vaHRtbC1ib3RzJ1xuXG4vLyBCb3QgY3Jhd2xlciB0aGF0IHdpbGwgc3BpbiB1cCBhIGhlYWRsZXNzIGJyb3dzZXIgYW5kIGV4ZWN1dGUgSlMuXG4vLyBPbmx5IHRoZSBtYWluIEdvb2dsZWJvdCBzZWFyY2ggY3Jhd2xlciBleGVjdXRlcyBKYXZhU2NyaXB0LCBub3Qgb3RoZXIgR29vZ2xlIGNyYXdsZXJzLlxuLy8geC1yZWY6IGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3NlYXJjaC9kb2NzL2NyYXdsaW5nLWluZGV4aW5nL2dvb2dsZS1jb21tb24tY3Jhd2xlcnNcbi8vIFRoaXMgcmVnZXggc3BlY2lmaWNhbGx5IG1hdGNoZXMgXCJHb29nbGVib3RcIiBidXQgTk9UIFwiTWVkaWFwYXJ0bmVycy1Hb29nbGVcIiwgXCJBZHNCb3QtR29vZ2xlXCIsIGV0Yy5cbmNvbnN0IEhFQURMRVNTX0JST1dTRVJfQk9UX1VBX1JFID0gL0dvb2dsZWJvdCg/IS0pfEdvb2dsZWJvdCQvaVxuXG5leHBvcnQgY29uc3QgSFRNTF9MSU1JVEVEX0JPVF9VQV9SRV9TVFJJTkcgPSBIVE1MX0xJTUlURURfQk9UX1VBX1JFLnNvdXJjZVxuXG5leHBvcnQgeyBIVE1MX0xJTUlURURfQk9UX1VBX1JFIH1cblxuZnVuY3Rpb24gaXNEb21Cb3RVQSh1c2VyQWdlbnQ6IHN0cmluZykge1xuICByZXR1cm4gSEVBRExFU1NfQlJPV1NFUl9CT1RfVUFfUkUudGVzdCh1c2VyQWdlbnQpXG59XG5cbmZ1bmN0aW9uIGlzSHRtbExpbWl0ZWRCb3RVQSh1c2VyQWdlbnQ6IHN0cmluZykge1xuICByZXR1cm4gSFRNTF9MSU1JVEVEX0JPVF9VQV9SRS50ZXN0KHVzZXJBZ2VudClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQm90KHVzZXJBZ2VudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc0RvbUJvdFVBKHVzZXJBZ2VudCkgfHwgaXNIdG1sTGltaXRlZEJvdFVBKHVzZXJBZ2VudClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJvdFR5cGUodXNlckFnZW50OiBzdHJpbmcpOiAnZG9tJyB8ICdodG1sJyB8IHVuZGVmaW5lZCB7XG4gIGlmIChpc0RvbUJvdFVBKHVzZXJBZ2VudCkpIHtcbiAgICByZXR1cm4gJ2RvbSdcbiAgfVxuICBpZiAoaXNIdG1sTGltaXRlZEJvdFVBKHVzZXJBZ2VudCkpIHtcbiAgICByZXR1cm4gJ2h0bWwnXG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZFxufVxuIl0sIm5hbWVzIjpbIkhUTUxfTElNSVRFRF9CT1RfVUFfUkUiLCJIVE1MX0xJTUlURURfQk9UX1VBX1JFX1NUUklORyIsImdldEJvdFR5cGUiLCJpc0JvdCIsIkhFQURMRVNTX0JST1dTRVJfQk9UX1VBX1JFIiwic291cmNlIiwiaXNEb21Cb3RVQSIsInVzZXJBZ2VudCIsInRlc3QiLCJpc0h0bWxMaW1pdGVkQm90VUEiLCJ1bmRlZmluZWQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/router/utils/is-bot.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/router/utils/is-local-url.js":
|
||
/*!************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/is-local-url.js ***!
|
||
\************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"isLocalURL\", ({\n enumerable: true,\n get: function() {\n return isLocalURL;\n }\n}));\nconst _utils = __webpack_require__(/*! ../../utils */ \"(ssr)/./node_modules/next/dist/shared/lib/utils.js\");\nconst _hasbasepath = __webpack_require__(/*! ../../../../client/has-base-path */ \"(ssr)/./node_modules/next/dist/client/has-base-path.js\");\nfunction isLocalURL(url) {\n // prevent a hydration mismatch on href for url with anchor refs\n if (!(0, _utils.isAbsoluteUrl)(url)) return true;\n try {\n // absolute urls can be local if they are on the same origin\n const locationOrigin = (0, _utils.getLocationOrigin)();\n const resolved = new URL(url, locationOrigin);\n return resolved.origin === locationOrigin && (0, _hasbasepath.hasBasePath)(resolved.pathname);\n } catch (_) {\n return false;\n }\n} //# sourceMappingURL=is-local-url.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2lzLWxvY2FsLXVybC5qcyIsIm1hcHBpbmdzIjoiOzs7OzhDQU1nQkE7OztlQUFBQTs7O21DQU5pQzt5Q0FDckI7QUFLckIsU0FBU0EsV0FBV0MsR0FBVztJQUNwQyxnRUFBZ0U7SUFDaEUsSUFBSSxDQUFDQyxDQUFBQSxHQUFBQSxPQUFBQSxhQUFBQSxFQUFjRCxNQUFNLE9BQU87SUFDaEMsSUFBSTtRQUNGLDREQUE0RDtRQUM1RCxNQUFNRSxpQkFBaUJDLENBQUFBLEdBQUFBLE9BQUFBLGlCQUFBQTtRQUN2QixNQUFNQyxXQUFXLElBQUlDLElBQUlMLEtBQUtFO1FBQzlCLE9BQU9FLFNBQVNFLE1BQU0sS0FBS0osa0JBQWtCSyxDQUFBQSxHQUFBQSxhQUFBQSxXQUFBQSxFQUFZSCxTQUFTSSxRQUFRO0lBQzVFLEVBQUUsT0FBT0MsR0FBRztRQUNWLE9BQU87SUFDVDtBQUNGIiwic291cmNlcyI6WyIvc3JjL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2lzLWxvY2FsLXVybC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0Fic29sdXRlVXJsLCBnZXRMb2NhdGlvbk9yaWdpbiB9IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgaGFzQmFzZVBhdGggfSBmcm9tICcuLi8uLi8uLi8uLi9jbGllbnQvaGFzLWJhc2UtcGF0aCdcblxuLyoqXG4gKiBEZXRlY3RzIHdoZXRoZXIgYSBnaXZlbiB1cmwgaXMgcm91dGFibGUgYnkgdGhlIE5leHQuanMgcm91dGVyIChicm93c2VyIG9ubHkpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMb2NhbFVSTCh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAvLyBwcmV2ZW50IGEgaHlkcmF0aW9uIG1pc21hdGNoIG9uIGhyZWYgZm9yIHVybCB3aXRoIGFuY2hvciByZWZzXG4gIGlmICghaXNBYnNvbHV0ZVVybCh1cmwpKSByZXR1cm4gdHJ1ZVxuICB0cnkge1xuICAgIC8vIGFic29sdXRlIHVybHMgY2FuIGJlIGxvY2FsIGlmIHRoZXkgYXJlIG9uIHRoZSBzYW1lIG9yaWdpblxuICAgIGNvbnN0IGxvY2F0aW9uT3JpZ2luID0gZ2V0TG9jYXRpb25PcmlnaW4oKVxuICAgIGNvbnN0IHJlc29sdmVkID0gbmV3IFVSTCh1cmwsIGxvY2F0aW9uT3JpZ2luKVxuICAgIHJldHVybiByZXNvbHZlZC5vcmlnaW4gPT09IGxvY2F0aW9uT3JpZ2luICYmIGhhc0Jhc2VQYXRoKHJlc29sdmVkLnBhdGhuYW1lKVxuICB9IGNhdGNoIChfKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJpc0xvY2FsVVJMIiwidXJsIiwiaXNBYnNvbHV0ZVVybCIsImxvY2F0aW9uT3JpZ2luIiwiZ2V0TG9jYXRpb25PcmlnaW4iLCJyZXNvbHZlZCIsIlVSTCIsIm9yaWdpbiIsImhhc0Jhc2VQYXRoIiwicGF0aG5hbWUiLCJfIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/router/utils/is-local-url.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/router/utils/parse-path.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/parse-path.js ***!
|
||
\**********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * Given a path this function will find the pathname, query and hash and return\n * them. This is useful to parse full paths on the client side.\n * @param path A path to parse e.g. /foo/bar?id=1#hash\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"parsePath\", ({\n enumerable: true,\n get: function() {\n return parsePath;\n }\n}));\nfunction parsePath(path) {\n const hashIndex = path.indexOf('#');\n const queryIndex = path.indexOf('?');\n const hasQuery = queryIndex > -1 && (hashIndex < 0 || queryIndex < hashIndex);\n if (hasQuery || hashIndex > -1) {\n return {\n pathname: path.substring(0, hasQuery ? queryIndex : hashIndex),\n query: hasQuery ? path.substring(queryIndex, hashIndex > -1 ? hashIndex : undefined) : '',\n hash: hashIndex > -1 ? path.slice(hashIndex) : ''\n };\n }\n return {\n pathname: path,\n query: '',\n hash: ''\n };\n} //# sourceMappingURL=parse-path.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhcnNlLXBhdGguanMiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Q0FJQzs7Ozs2Q0FDZUE7OztlQUFBQTs7O0FBQVQsU0FBU0EsVUFBVUMsSUFBWTtJQUNwQyxNQUFNQyxZQUFZRCxLQUFLRSxPQUFPLENBQUM7SUFDL0IsTUFBTUMsYUFBYUgsS0FBS0UsT0FBTyxDQUFDO0lBQ2hDLE1BQU1FLFdBQVdELGFBQWEsQ0FBQyxLQUFNRixDQUFBQSxZQUFZLEtBQUtFLGFBQWFGLFNBQUFBLENBQVE7SUFFM0UsSUFBSUcsWUFBWUgsWUFBWSxDQUFDLEdBQUc7UUFDOUIsT0FBTztZQUNMSSxVQUFVTCxLQUFLTSxTQUFTLENBQUMsR0FBR0YsV0FBV0QsYUFBYUY7WUFDcERNLE9BQU9ILFdBQ0hKLEtBQUtNLFNBQVMsQ0FBQ0gsWUFBWUYsWUFBWSxDQUFDLElBQUlBLFlBQVlPLGFBQ3hEO1lBQ0pDLE1BQU1SLFlBQVksQ0FBQyxJQUFJRCxLQUFLVSxLQUFLLENBQUNULGFBQWE7UUFDakQ7SUFDRjtJQUVBLE9BQU87UUFBRUksVUFBVUw7UUFBTU8sT0FBTztRQUFJRSxNQUFNO0lBQUc7QUFDL0MiLCJzb3VyY2VzIjpbIi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcGFyc2UtcGF0aC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdpdmVuIGEgcGF0aCB0aGlzIGZ1bmN0aW9uIHdpbGwgZmluZCB0aGUgcGF0aG5hbWUsIHF1ZXJ5IGFuZCBoYXNoIGFuZCByZXR1cm5cbiAqIHRoZW0uIFRoaXMgaXMgdXNlZnVsIHRvIHBhcnNlIGZ1bGwgcGF0aHMgb24gdGhlIGNsaWVudCBzaWRlLlxuICogQHBhcmFtIHBhdGggQSBwYXRoIHRvIHBhcnNlIGUuZy4gL2Zvby9iYXI/aWQ9MSNoYXNoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVBhdGgocGF0aDogc3RyaW5nKSB7XG4gIGNvbnN0IGhhc2hJbmRleCA9IHBhdGguaW5kZXhPZignIycpXG4gIGNvbnN0IHF1ZXJ5SW5kZXggPSBwYXRoLmluZGV4T2YoJz8nKVxuICBjb25zdCBoYXNRdWVyeSA9IHF1ZXJ5SW5kZXggPiAtMSAmJiAoaGFzaEluZGV4IDwgMCB8fCBxdWVyeUluZGV4IDwgaGFzaEluZGV4KVxuXG4gIGlmIChoYXNRdWVyeSB8fCBoYXNoSW5kZXggPiAtMSkge1xuICAgIHJldHVybiB7XG4gICAgICBwYXRobmFtZTogcGF0aC5zdWJzdHJpbmcoMCwgaGFzUXVlcnkgPyBxdWVyeUluZGV4IDogaGFzaEluZGV4KSxcbiAgICAgIHF1ZXJ5OiBoYXNRdWVyeVxuICAgICAgICA/IHBhdGguc3Vic3RyaW5nKHF1ZXJ5SW5kZXgsIGhhc2hJbmRleCA+IC0xID8gaGFzaEluZGV4IDogdW5kZWZpbmVkKVxuICAgICAgICA6ICcnLFxuICAgICAgaGFzaDogaGFzaEluZGV4ID4gLTEgPyBwYXRoLnNsaWNlKGhhc2hJbmRleCkgOiAnJyxcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBwYXRobmFtZTogcGF0aCwgcXVlcnk6ICcnLCBoYXNoOiAnJyB9XG59XG4iXSwibmFtZXMiOlsicGFyc2VQYXRoIiwicGF0aCIsImhhc2hJbmRleCIsImluZGV4T2YiLCJxdWVyeUluZGV4IiwiaGFzUXVlcnkiLCJwYXRobmFtZSIsInN1YnN0cmluZyIsInF1ZXJ5IiwidW5kZWZpbmVkIiwiaGFzaCIsInNsaWNlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/router/utils/parse-path.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js":
|
||
/*!******************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js ***!
|
||
\******************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"parseRelativeUrl\", ({\n enumerable: true,\n get: function() {\n return parseRelativeUrl;\n }\n}));\nconst _utils = __webpack_require__(/*! ../../utils */ \"(ssr)/./node_modules/next/dist/shared/lib/utils.js\");\nconst _querystring = __webpack_require__(/*! ./querystring */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/querystring.js\");\nfunction parseRelativeUrl(url, base, parseQuery = true) {\n const globalBase = new URL( true ? 'http://n' : 0);\n const resolvedBase = base ? new URL(base, globalBase) : url.startsWith('.') ? new URL( true ? 'http://n' : 0) : globalBase;\n const { pathname, searchParams, search, hash, href, origin } = url.startsWith('/') ? // Not using `origin` to support other protocols\n new URL(`${resolvedBase.protocol}//${resolvedBase.host}${url}`) : new URL(url, resolvedBase);\n if (origin !== globalBase.origin) {\n throw Object.defineProperty(new Error(`invariant: invalid relative URL, router received ${url}`), \"__NEXT_ERROR_CODE\", {\n value: \"E159\",\n enumerable: false,\n configurable: true\n });\n }\n return {\n auth: null,\n host: null,\n hostname: null,\n pathname,\n port: null,\n protocol: null,\n query: parseQuery ? (0, _querystring.searchParamsToUrlQuery)(searchParams) : undefined,\n search,\n hash,\n href: href.slice(origin.length),\n // We don't know for relative URLs at this point since we set a custom, internal\n // base that isn't surfaced to users.\n slashes: null\n };\n} //# sourceMappingURL=parse-relative-url.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhcnNlLXJlbGF0aXZlLXVybC5qcyIsIm1hcHBpbmdzIjoiOzs7O29EQWtDZ0JBOzs7ZUFBQUE7OzttQ0FqQ2tCO3lDQUNLO0FBZ0NoQyxTQUFTQSxpQkFDZEMsR0FBVyxFQUNYQyxJQUFhLEVBQ2JDLGFBQWEsSUFBSTtJQUVqQixNQUFNQyxhQUFhLElBQUlDLElBQ3JCLEtBQTZCLEdBQUcsYUFBYUUsQ0FBQUE7SUFHL0MsTUFBTUMsZUFBZU4sT0FDakIsSUFBSUcsSUFBSUgsTUFBTUUsY0FDZEgsSUFBSVEsVUFBVSxDQUFDLE9BQ2IsSUFBSUosSUFDRixLQUE2QixHQUFHLGFBQWFDLENBQW9CLElBRW5FRjtJQUVOLE1BQU0sRUFBRVEsUUFBUSxFQUFFQyxZQUFZLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFSixJQUFJLEVBQUVLLE1BQU0sRUFBRSxHQUFHZixJQUFJUSxVQUFVLENBQzNFLE9BR0UsZ0RBQ2dEO0lBQ2hELElBQUlKLElBQUksR0FBR0csYUFBYVMsUUFBUSxDQUFDLEVBQUUsRUFBRVQsYUFBYVUsSUFBSSxHQUFHakIsS0FBSyxJQUM5RCxJQUFJSSxJQUFJSixLQUFLTztJQUVqQixJQUFJUSxXQUFXWixXQUFXWSxNQUFNLEVBQUU7UUFDaEMsTUFBTSxxQkFBb0UsQ0FBcEUsSUFBSUcsTUFBTSxDQUFDLGlEQUFpRCxFQUFFbEIsS0FBSyxHQUFuRTttQkFBQTt3QkFBQTswQkFBQTtRQUFtRTtJQUMzRTtJQUVBLE9BQU87UUFDTG1CLE1BQU07UUFDTkYsTUFBTTtRQUNORyxVQUFVO1FBQ1ZUO1FBQ0FVLE1BQU07UUFDTkwsVUFBVTtRQUNWTSxPQUFPcEIsYUFBYXFCLENBQUFBLEdBQUFBLGFBQUFBLHNCQUFBQSxFQUF1QlgsZ0JBQWdCWTtRQUMzRFg7UUFDQUM7UUFDQUosTUFBTUEsS0FBS2UsS0FBSyxDQUFDVixPQUFPVyxNQUFNO1FBQzlCLGdGQUFnRjtRQUNoRixxQ0FBcUM7UUFDckNDLFNBQVM7SUFDWDtBQUNGIiwic291cmNlcyI6WyIvc3JjL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhcnNlLXJlbGF0aXZlLXVybC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBhcnNlZFVybFF1ZXJ5IH0gZnJvbSAncXVlcnlzdHJpbmcnXG5pbXBvcnQgeyBnZXRMb2NhdGlvbk9yaWdpbiB9IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgc2VhcmNoUGFyYW1zVG9VcmxRdWVyeSB9IGZyb20gJy4vcXVlcnlzdHJpbmcnXG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkUmVsYXRpdmVVcmwge1xuICBhdXRoOiBzdHJpbmcgfCBudWxsXG4gIGhhc2g6IHN0cmluZ1xuICBob3N0OiBzdHJpbmcgfCBudWxsXG4gIGhvc3RuYW1lOiBzdHJpbmcgfCBudWxsXG4gIGhyZWY6IHN0cmluZ1xuICBwYXRobmFtZTogc3RyaW5nXG4gIHBvcnQ6IHN0cmluZyB8IG51bGxcbiAgcHJvdG9jb2w6IHN0cmluZyB8IG51bGxcbiAgcXVlcnk6IFBhcnNlZFVybFF1ZXJ5XG4gIHNlYXJjaDogc3RyaW5nXG4gIHNsYXNoZXM6IG51bGxcbn1cblxuLyoqXG4gKiBQYXJzZXMgcGF0aC1yZWxhdGl2ZSB1cmxzIChlLmcuIGAvaGVsbG8vd29ybGQ/Zm9vPWJhcmApLiBJZiB1cmwgaXNuJ3QgcGF0aC1yZWxhdGl2ZVxuICogKGUuZy4gYC4vaGVsbG9gKSB0aGVuIGF0IGxlYXN0IGJhc2UgbXVzdCBiZS5cbiAqIEFic29sdXRlIHVybHMgYXJlIHJlamVjdGVkIHdpdGggb25lIGV4Y2VwdGlvbiwgaW4gdGhlIGJyb3dzZXIsIGFic29sdXRlIHVybHMgdGhhdCBhcmUgb25cbiAqIHRoZSBjdXJyZW50IG9yaWdpbiB3aWxsIGJlIHBhcnNlZCBhcyByZWxhdGl2ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSZWxhdGl2ZVVybChcbiAgdXJsOiBzdHJpbmcsXG4gIGJhc2U/OiBzdHJpbmcsXG4gIHBhcnNlUXVlcnk/OiB0cnVlXG4pOiBQYXJzZWRSZWxhdGl2ZVVybFxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmVsYXRpdmVVcmwoXG4gIHVybDogc3RyaW5nLFxuICBiYXNlOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHBhcnNlUXVlcnk6IGZhbHNlXG4pOiBPbWl0PFBhcnNlZFJlbGF0aXZlVXJsLCAncXVlcnknPlxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmVsYXRpdmVVcmwoXG4gIHVybDogc3RyaW5nLFxuICBiYXNlPzogc3RyaW5nLFxuICBwYXJzZVF1ZXJ5ID0gdHJ1ZVxuKTogUGFyc2VkUmVsYXRpdmVVcmwgfCBPbWl0PFBhcnNlZFJlbGF0aXZlVXJsLCAncXVlcnknPiB7XG4gIGNvbnN0IGdsb2JhbEJhc2UgPSBuZXcgVVJMKFxuICAgIHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnID8gJ2h0dHA6Ly9uJyA6IGdldExvY2F0aW9uT3JpZ2luKClcbiAgKVxuXG4gIGNvbnN0IHJlc29sdmVkQmFzZSA9IGJhc2VcbiAgICA/IG5ldyBVUkwoYmFzZSwgZ2xvYmFsQmFzZSlcbiAgICA6IHVybC5zdGFydHNXaXRoKCcuJylcbiAgICAgID8gbmV3IFVSTChcbiAgICAgICAgICB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyA/ICdodHRwOi8vbicgOiB3aW5kb3cubG9jYXRpb24uaHJlZlxuICAgICAgICApXG4gICAgICA6IGdsb2JhbEJhc2VcblxuICBjb25zdCB7IHBhdGhuYW1lLCBzZWFyY2hQYXJhbXMsIHNlYXJjaCwgaGFzaCwgaHJlZiwgb3JpZ2luIH0gPSB1cmwuc3RhcnRzV2l0aChcbiAgICAnLydcbiAgKVxuICAgID8gLy8gJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC8vLycgd291bGQgYmUgcmVjZWl2ZWQgYXMgJy8vLycgaW4gTm9kZS5qcycgSW5jb21pbmdNZXNzYWdlXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9odHRwLmh0bWwjbWVzc2FnZXVybFxuICAgICAgLy8gTm90IHVzaW5nIGBvcmlnaW5gIHRvIHN1cHBvcnQgb3RoZXIgcHJvdG9jb2xzXG4gICAgICBuZXcgVVJMKGAke3Jlc29sdmVkQmFzZS5wcm90b2NvbH0vLyR7cmVzb2x2ZWRCYXNlLmhvc3R9JHt1cmx9YClcbiAgICA6IG5ldyBVUkwodXJsLCByZXNvbHZlZEJhc2UpXG5cbiAgaWYgKG9yaWdpbiAhPT0gZ2xvYmFsQmFzZS5vcmlnaW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFyaWFudDogaW52YWxpZCByZWxhdGl2ZSBVUkwsIHJvdXRlciByZWNlaXZlZCAke3VybH1gKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhdXRoOiBudWxsLFxuICAgIGhvc3Q6IG51bGwsXG4gICAgaG9zdG5hbWU6IG51bGwsXG4gICAgcGF0aG5hbWUsXG4gICAgcG9ydDogbnVsbCxcbiAgICBwcm90b2NvbDogbnVsbCxcbiAgICBxdWVyeTogcGFyc2VRdWVyeSA/IHNlYXJjaFBhcmFtc1RvVXJsUXVlcnkoc2VhcmNoUGFyYW1zKSA6IHVuZGVmaW5lZCxcbiAgICBzZWFyY2gsXG4gICAgaGFzaCxcbiAgICBocmVmOiBocmVmLnNsaWNlKG9yaWdpbi5sZW5ndGgpLFxuICAgIC8vIFdlIGRvbid0IGtub3cgZm9yIHJlbGF0aXZlIFVSTHMgYXQgdGhpcyBwb2ludCBzaW5jZSB3ZSBzZXQgYSBjdXN0b20sIGludGVybmFsXG4gICAgLy8gYmFzZSB0aGF0IGlzbid0IHN1cmZhY2VkIHRvIHVzZXJzLlxuICAgIHNsYXNoZXM6IG51bGwsXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJwYXJzZVJlbGF0aXZlVXJsIiwidXJsIiwiYmFzZSIsInBhcnNlUXVlcnkiLCJnbG9iYWxCYXNlIiwiVVJMIiwid2luZG93IiwiZ2V0TG9jYXRpb25PcmlnaW4iLCJyZXNvbHZlZEJhc2UiLCJzdGFydHNXaXRoIiwibG9jYXRpb24iLCJocmVmIiwicGF0aG5hbWUiLCJzZWFyY2hQYXJhbXMiLCJzZWFyY2giLCJoYXNoIiwib3JpZ2luIiwicHJvdG9jb2wiLCJob3N0IiwiRXJyb3IiLCJhdXRoIiwiaG9zdG5hbWUiLCJwb3J0IiwicXVlcnkiLCJzZWFyY2hQYXJhbXNUb1VybFF1ZXJ5IiwidW5kZWZpbmVkIiwic2xpY2UiLCJsZW5ndGgiLCJzbGFzaGVzIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js":
|
||
/*!***************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js ***!
|
||
\***************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"pathHasPrefix\", ({\n enumerable: true,\n get: function() {\n return pathHasPrefix;\n }\n}));\nconst _parsepath = __webpack_require__(/*! ./parse-path */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/parse-path.js\");\nfunction pathHasPrefix(path, prefix) {\n if (typeof path !== 'string') {\n return false;\n }\n const { pathname } = (0, _parsepath.parsePath)(path);\n return pathname === prefix || pathname.startsWith(prefix + '/');\n} //# sourceMappingURL=path-has-prefix.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhdGgtaGFzLXByZWZpeC5qcyIsIm1hcHBpbmdzIjoiOzs7O2lEQVNnQkE7OztlQUFBQTs7O3VDQVRVO0FBU25CLFNBQVNBLGNBQWNDLElBQVksRUFBRUMsTUFBYztJQUN4RCxJQUFJLE9BQU9ELFNBQVMsVUFBVTtRQUM1QixPQUFPO0lBQ1Q7SUFFQSxNQUFNLEVBQUVFLFFBQVEsRUFBRSxHQUFHQyxDQUFBQSxHQUFBQSxXQUFBQSxTQUFBQSxFQUFVSDtJQUMvQixPQUFPRSxhQUFhRCxVQUFVQyxTQUFTRSxVQUFVLENBQUNILFNBQVM7QUFDN0QiLCJzb3VyY2VzIjpbIi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcGF0aC1oYXMtcHJlZml4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhcnNlUGF0aCB9IGZyb20gJy4vcGFyc2UtcGF0aCdcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBnaXZlbiBwYXRoIHN0YXJ0cyB3aXRoIGEgZ2l2ZW4gcHJlZml4LiBJdCBlbnN1cmVzIGl0IG1hdGNoZXNcbiAqIGV4YWN0bHkgd2l0aG91dCBjb250YWluaW5nIGV4dHJhIGNoYXJzLiBlLmcuIHByZWZpeCAvZG9jcyBzaG91bGQgcmVwbGFjZVxuICogZm9yIC9kb2NzLCAvZG9jcy8sIC9kb2NzL2EgYnV0IG5vdCAvZG9jc3NzXG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAqIEBwYXJhbSBwcmVmaXggVGhlIHByZWZpeCB0byBjaGVjayBhZ2FpbnN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGF0aEhhc1ByZWZpeChwYXRoOiBzdHJpbmcsIHByZWZpeDogc3RyaW5nKSB7XG4gIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGNvbnN0IHsgcGF0aG5hbWUgfSA9IHBhcnNlUGF0aChwYXRoKVxuICByZXR1cm4gcGF0aG5hbWUgPT09IHByZWZpeCB8fCBwYXRobmFtZS5zdGFydHNXaXRoKHByZWZpeCArICcvJylcbn1cbiJdLCJuYW1lcyI6WyJwYXRoSGFzUHJlZml4IiwicGF0aCIsInByZWZpeCIsInBhdGhuYW1lIiwicGFyc2VQYXRoIiwic3RhcnRzV2l0aCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/router/utils/querystring.js":
|
||
/*!***********************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/querystring.js ***!
|
||
\***********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n assign: function() {\n return assign;\n },\n searchParamsToUrlQuery: function() {\n return searchParamsToUrlQuery;\n },\n urlQueryToSearchParams: function() {\n return urlQueryToSearchParams;\n }\n});\nfunction searchParamsToUrlQuery(searchParams) {\n const query = {};\n for (const [key, value] of searchParams.entries()){\n const existing = query[key];\n if (typeof existing === 'undefined') {\n query[key] = value;\n } else if (Array.isArray(existing)) {\n existing.push(value);\n } else {\n query[key] = [\n existing,\n value\n ];\n }\n }\n return query;\n}\nfunction stringifyUrlQueryParam(param) {\n if (typeof param === 'string') {\n return param;\n }\n if (typeof param === 'number' && !isNaN(param) || typeof param === 'boolean') {\n return String(param);\n } else {\n return '';\n }\n}\nfunction urlQueryToSearchParams(query) {\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(query)){\n if (Array.isArray(value)) {\n for (const item of value){\n searchParams.append(key, stringifyUrlQueryParam(item));\n }\n } else {\n searchParams.set(key, stringifyUrlQueryParam(value));\n }\n }\n return searchParams;\n}\nfunction assign(target, ...searchParamsList) {\n for (const searchParams of searchParamsList){\n for (const key of searchParams.keys()){\n target.delete(key);\n }\n for (const [key, value] of searchParams.entries()){\n target.append(key, value);\n }\n }\n return target;\n} //# sourceMappingURL=querystring.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3F1ZXJ5c3RyaW5nLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQWdEZ0JBLE1BQU07ZUFBTkE7O0lBOUNBQyxzQkFBc0I7ZUFBdEJBOztJQWdDQUMsc0JBQXNCO2VBQXRCQTs7O0FBaENULFNBQVNELHVCQUNkRSxZQUE2QjtJQUU3QixNQUFNQyxRQUF3QixDQUFDO0lBQy9CLEtBQUssTUFBTSxDQUFDQyxLQUFLQyxNQUFNLElBQUlILGFBQWFJLE9BQU8sR0FBSTtRQUNqRCxNQUFNQyxXQUFXSixLQUFLLENBQUNDLElBQUk7UUFDM0IsSUFBSSxPQUFPRyxhQUFhLGFBQWE7WUFDbkNKLEtBQUssQ0FBQ0MsSUFBSSxHQUFHQztRQUNmLE9BQU8sSUFBSUcsTUFBTUMsT0FBTyxDQUFDRixXQUFXO1lBQ2xDQSxTQUFTRyxJQUFJLENBQUNMO1FBQ2hCLE9BQU87WUFDTEYsS0FBSyxDQUFDQyxJQUFJLEdBQUc7Z0JBQUNHO2dCQUFVRjthQUFNO1FBQ2hDO0lBQ0Y7SUFDQSxPQUFPRjtBQUNUO0FBRUEsU0FBU1EsdUJBQXVCQyxLQUFjO0lBQzVDLElBQUksT0FBT0EsVUFBVSxVQUFVO1FBQzdCLE9BQU9BO0lBQ1Q7SUFFQSxJQUNHLE9BQU9BLFVBQVUsWUFBWSxDQUFDQyxNQUFNRCxVQUNyQyxPQUFPQSxVQUFVLFdBQ2pCO1FBQ0EsT0FBT0UsT0FBT0Y7SUFDaEIsT0FBTztRQUNMLE9BQU87SUFDVDtBQUNGO0FBRU8sU0FBU1gsdUJBQXVCRSxLQUFxQjtJQUMxRCxNQUFNRCxlQUFlLElBQUlhO0lBQ3pCLEtBQUssTUFBTSxDQUFDWCxLQUFLQyxNQUFNLElBQUlXLE9BQU9WLE9BQU8sQ0FBQ0gsT0FBUTtRQUNoRCxJQUFJSyxNQUFNQyxPQUFPLENBQUNKLFFBQVE7WUFDeEIsS0FBSyxNQUFNWSxRQUFRWixNQUFPO2dCQUN4QkgsYUFBYWdCLE1BQU0sQ0FBQ2QsS0FBS08sdUJBQXVCTTtZQUNsRDtRQUNGLE9BQU87WUFDTGYsYUFBYWlCLEdBQUcsQ0FBQ2YsS0FBS08sdUJBQXVCTjtRQUMvQztJQUNGO0lBQ0EsT0FBT0g7QUFDVDtBQUVPLFNBQVNILE9BQ2RxQixNQUF1QixFQUN2QixHQUFHQyxnQkFBbUM7SUFFdEMsS0FBSyxNQUFNbkIsZ0JBQWdCbUIsaUJBQWtCO1FBQzNDLEtBQUssTUFBTWpCLE9BQU9GLGFBQWFvQixJQUFJLEdBQUk7WUFDckNGLE9BQU9HLE1BQU0sQ0FBQ25CO1FBQ2hCO1FBRUEsS0FBSyxNQUFNLENBQUNBLEtBQUtDLE1BQU0sSUFBSUgsYUFBYUksT0FBTyxHQUFJO1lBQ2pEYyxPQUFPRixNQUFNLENBQUNkLEtBQUtDO1FBQ3JCO0lBQ0Y7SUFFQSxPQUFPZTtBQUNUIiwic291cmNlcyI6WyIvc3JjL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3F1ZXJ5c3RyaW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGFyc2VkVXJsUXVlcnkgfSBmcm9tICdxdWVyeXN0cmluZydcblxuZXhwb3J0IGZ1bmN0aW9uIHNlYXJjaFBhcmFtc1RvVXJsUXVlcnkoXG4gIHNlYXJjaFBhcmFtczogVVJMU2VhcmNoUGFyYW1zXG4pOiBQYXJzZWRVcmxRdWVyeSB7XG4gIGNvbnN0IHF1ZXJ5OiBQYXJzZWRVcmxRdWVyeSA9IHt9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIHNlYXJjaFBhcmFtcy5lbnRyaWVzKCkpIHtcbiAgICBjb25zdCBleGlzdGluZyA9IHF1ZXJ5W2tleV1cbiAgICBpZiAodHlwZW9mIGV4aXN0aW5nID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcXVlcnlba2V5XSA9IHZhbHVlXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGV4aXN0aW5nKSkge1xuICAgICAgZXhpc3RpbmcucHVzaCh2YWx1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgcXVlcnlba2V5XSA9IFtleGlzdGluZywgdmFsdWVdXG4gICAgfVxuICB9XG4gIHJldHVybiBxdWVyeVxufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlVcmxRdWVyeVBhcmFtKHBhcmFtOiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcGFyYW1cbiAgfVxuXG4gIGlmIChcbiAgICAodHlwZW9mIHBhcmFtID09PSAnbnVtYmVyJyAmJiAhaXNOYU4ocGFyYW0pKSB8fFxuICAgIHR5cGVvZiBwYXJhbSA9PT0gJ2Jvb2xlYW4nXG4gICkge1xuICAgIHJldHVybiBTdHJpbmcocGFyYW0pXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICcnXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVybFF1ZXJ5VG9TZWFyY2hQYXJhbXMocXVlcnk6IFBhcnNlZFVybFF1ZXJ5KTogVVJMU2VhcmNoUGFyYW1zIHtcbiAgY29uc3Qgc2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHF1ZXJ5KSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHZhbHVlKSB7XG4gICAgICAgIHNlYXJjaFBhcmFtcy5hcHBlbmQoa2V5LCBzdHJpbmdpZnlVcmxRdWVyeVBhcmFtKGl0ZW0pKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZWFyY2hQYXJhbXMuc2V0KGtleSwgc3RyaW5naWZ5VXJsUXVlcnlQYXJhbSh2YWx1ZSkpXG4gICAgfVxuICB9XG4gIHJldHVybiBzZWFyY2hQYXJhbXNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbihcbiAgdGFyZ2V0OiBVUkxTZWFyY2hQYXJhbXMsXG4gIC4uLnNlYXJjaFBhcmFtc0xpc3Q6IFVSTFNlYXJjaFBhcmFtc1tdXG4pOiBVUkxTZWFyY2hQYXJhbXMge1xuICBmb3IgKGNvbnN0IHNlYXJjaFBhcmFtcyBvZiBzZWFyY2hQYXJhbXNMaXN0KSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2Ygc2VhcmNoUGFyYW1zLmtleXMoKSkge1xuICAgICAgdGFyZ2V0LmRlbGV0ZShrZXkpXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2Ygc2VhcmNoUGFyYW1zLmVudHJpZXMoKSkge1xuICAgICAgdGFyZ2V0LmFwcGVuZChrZXksIHZhbHVlKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXRcbn1cbiJdLCJuYW1lcyI6WyJhc3NpZ24iLCJzZWFyY2hQYXJhbXNUb1VybFF1ZXJ5IiwidXJsUXVlcnlUb1NlYXJjaFBhcmFtcyIsInNlYXJjaFBhcmFtcyIsInF1ZXJ5Iiwia2V5IiwidmFsdWUiLCJlbnRyaWVzIiwiZXhpc3RpbmciLCJBcnJheSIsImlzQXJyYXkiLCJwdXNoIiwic3RyaW5naWZ5VXJsUXVlcnlQYXJhbSIsInBhcmFtIiwiaXNOYU4iLCJTdHJpbmciLCJVUkxTZWFyY2hQYXJhbXMiLCJPYmplY3QiLCJpdGVtIiwiYXBwZW5kIiwic2V0IiwidGFyZ2V0Iiwic2VhcmNoUGFyYW1zTGlzdCIsImtleXMiLCJkZWxldGUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/router/utils/querystring.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js":
|
||
/*!*********************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js ***!
|
||
\*********************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * Removes the trailing slash for a given route or page path. Preserves the\n * root page. Examples:\n * - `/foo/bar/` -> `/foo/bar`\n * - `/foo/bar` -> `/foo/bar`\n * - `/` -> `/`\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"removeTrailingSlash\", ({\n enumerable: true,\n get: function() {\n return removeTrailingSlash;\n }\n}));\nfunction removeTrailingSlash(route) {\n return route.replace(/\\/$/, '') || '/';\n} //# sourceMappingURL=remove-trailing-slash.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JlbW92ZS10cmFpbGluZy1zbGFzaC5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0NBTUM7Ozs7dURBQ2VBOzs7ZUFBQUE7OztBQUFULFNBQVNBLG9CQUFvQkMsS0FBYTtJQUMvQyxPQUFPQSxNQUFNQyxPQUFPLENBQUMsT0FBTyxPQUFPO0FBQ3JDIiwic291cmNlcyI6WyIvc3JjL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JlbW92ZS10cmFpbGluZy1zbGFzaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlbW92ZXMgdGhlIHRyYWlsaW5nIHNsYXNoIGZvciBhIGdpdmVuIHJvdXRlIG9yIHBhZ2UgcGF0aC4gUHJlc2VydmVzIHRoZVxuICogcm9vdCBwYWdlLiBFeGFtcGxlczpcbiAqICAgLSBgL2Zvby9iYXIvYCAtPiBgL2Zvby9iYXJgXG4gKiAgIC0gYC9mb28vYmFyYCAtPiBgL2Zvby9iYXJgXG4gKiAgIC0gYC9gIC0+IGAvYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVHJhaWxpbmdTbGFzaChyb3V0ZTogc3RyaW5nKSB7XG4gIHJldHVybiByb3V0ZS5yZXBsYWNlKC9cXC8kLywgJycpIHx8ICcvJ1xufVxuIl0sIm5hbWVzIjpbInJlbW92ZVRyYWlsaW5nU2xhc2giLCJyb3V0ZSIsInJlcGxhY2UiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js":
|
||
/*!***********************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js ***!
|
||
\***********************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n HEAD_REQUEST_KEY: function() {\n return HEAD_REQUEST_KEY;\n },\n ROOT_SEGMENT_REQUEST_KEY: function() {\n return ROOT_SEGMENT_REQUEST_KEY;\n },\n appendSegmentRequestKeyPart: function() {\n return appendSegmentRequestKeyPart;\n },\n convertSegmentPathToStaticExportFilename: function() {\n return convertSegmentPathToStaticExportFilename;\n },\n createSegmentRequestKeyPart: function() {\n return createSegmentRequestKeyPart;\n }\n});\nconst _segment = __webpack_require__(/*! ../segment */ \"(ssr)/./node_modules/next/dist/shared/lib/segment.js\");\nconst ROOT_SEGMENT_REQUEST_KEY = '';\nconst HEAD_REQUEST_KEY = '/_head';\nfunction createSegmentRequestKeyPart(segment) {\n if (typeof segment === 'string') {\n if (segment.startsWith(_segment.PAGE_SEGMENT_KEY)) {\n // The Flight Router State type sometimes includes the search params in\n // the page segment. However, the Segment Cache tracks this as a separate\n // key. So, we strip the search params here, and then add them back when\n // the cache entry is turned back into a FlightRouterState. This is an\n // unfortunate consequence of the FlightRouteState being used both as a\n // transport type and as a cache key; we'll address this once more of the\n // Segment Cache implementation has settled.\n // TODO: We should hoist the search params out of the FlightRouterState\n // type entirely, This is our plan for dynamic route params, too.\n return _segment.PAGE_SEGMENT_KEY;\n }\n const safeName = // But params typically don't include the leading slash. We should use\n // a different encoding to avoid this special case.\n segment === '/_not-found' ? '_not-found' : encodeToFilesystemAndURLSafeString(segment);\n // Since this is not a dynamic segment, it's fully encoded. It does not\n // need to be \"hydrated\" with a param value.\n return safeName;\n }\n const name = segment[0];\n const paramType = segment[2];\n const safeName = encodeToFilesystemAndURLSafeString(name);\n const encodedName = '$' + paramType + '$' + safeName;\n return encodedName;\n}\nfunction appendSegmentRequestKeyPart(parentRequestKey, parallelRouteKey, childRequestKeyPart) {\n // Aside from being filesystem safe, segment keys are also designed so that\n // each segment and parallel route creates its own subdirectory. Roughly in\n // the same shape as the source app directory. This is mostly just for easier\n // debugging (you can open up the build folder and navigate the output); if\n // we wanted to do we could just use a flat structure.\n // Omit the parallel route key for children, since this is the most\n // common case. Saves some bytes (and it's what the app directory does).\n const slotKey = parallelRouteKey === 'children' ? childRequestKeyPart : `@${encodeToFilesystemAndURLSafeString(parallelRouteKey)}/${childRequestKeyPart}`;\n return parentRequestKey + '/' + slotKey;\n}\n// Define a regex pattern to match the most common characters found in a route\n// param. It excludes anything that might not be cross-platform filesystem\n// compatible, like |. It does not need to be precise because the fallback is to\n// just base64url-encode the whole parameter, which is fine; we just don't do it\n// by default for compactness, and for easier debugging.\nconst simpleParamValueRegex = /^[a-zA-Z0-9\\-_@]+$/;\nfunction encodeToFilesystemAndURLSafeString(value) {\n if (simpleParamValueRegex.test(value)) {\n return value;\n }\n // If there are any unsafe characters, base64url-encode the entire value.\n // We also add a ! prefix so it doesn't collide with the simple case.\n const base64url = btoa(value).replace(/\\+/g, '-') // Replace '+' with '-'\n .replace(/\\//g, '_') // Replace '/' with '_'\n .replace(/=+$/, '') // Remove trailing '='\n ;\n return '!' + base64url;\n}\nfunction convertSegmentPathToStaticExportFilename(segmentPath) {\n return `__next${segmentPath.replace(/\\//g, '.')}.txt`;\n} //# sourceMappingURL=segment-value-encoding.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvc2VnbWVudC1jYWNoZS9zZWdtZW50LXZhbHVlLWVuY29kaW5nLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQVdhQSxnQkFBZ0I7ZUFBaEJBOztJQUZBQyx3QkFBd0I7ZUFBeEJBOztJQXdDR0MsMkJBQTJCO2VBQTNCQTs7SUF3Q0FDLHdDQUF3QztlQUF4Q0E7O0lBNUVBQywyQkFBMkI7ZUFBM0JBOzs7cUNBYmlCO0FBUzFCLE1BQU1ILDJCQUEyQjtBQUVqQyxNQUFNRCxtQkFBbUI7QUFFekIsU0FBU0ksNEJBQ2RDLE9BQWlDO0lBRWpDLElBQUksT0FBT0EsWUFBWSxVQUFVO1FBQy9CLElBQUlBLFFBQVFDLFVBQVUsQ0FBQ0MsU0FBQUEsZ0JBQWdCLEdBQUc7WUFDeEMsdUVBQXVFO1lBQ3ZFLHlFQUF5RTtZQUN6RSx3RUFBd0U7WUFDeEUsc0VBQXNFO1lBQ3RFLHVFQUF1RTtZQUN2RSx5RUFBeUU7WUFDekUsNENBQTRDO1lBQzVDLHVFQUF1RTtZQUN2RSxpRUFBaUU7WUFDakUsT0FBT0EsU0FBQUEsZ0JBQWdCO1FBQ3pCO1FBQ0EsTUFBTUMsV0FDSixxRUFBcUUsQ0FDQztRQUN0RSxtREFBbUQ7UUFDbkRILFlBQVksZ0JBQ1IsZUFDQUksbUNBQW1DSjtRQUN6Qyx1RUFBdUU7UUFDdkUsNENBQTRDO1FBQzVDLE9BQU9HO0lBQ1Q7SUFFQSxNQUFNRSxPQUFPTCxPQUFPLENBQUMsRUFBRTtJQUN2QixNQUFNTSxZQUFZTixPQUFPLENBQUMsRUFBRTtJQUM1QixNQUFNRyxXQUFXQyxtQ0FBbUNDO0lBRXBELE1BQU1FLGNBQWMsTUFBTUQsWUFBWSxNQUFNSDtJQUM1QyxPQUFPSTtBQUNUO0FBRU8sU0FBU1YsNEJBQ2RXLGdCQUFtQyxFQUNuQ0MsZ0JBQXdCLEVBQ3hCQyxtQkFBMEM7SUFFMUMsMkVBQTJFO0lBQzNFLDJFQUEyRTtJQUMzRSw2RUFBNkU7SUFDN0UsMkVBQTJFO0lBQzNFLHNEQUFzRDtJQUV0RCxtRUFBbUU7SUFDbkUsd0VBQXdFO0lBQ3hFLE1BQU1DLFVBQ0pGLHFCQUFxQixhQUNqQkMsc0JBQ0EsQ0FBQyxDQUFDLEVBQUVOLG1DQUFtQ0ssa0JBQWtCLENBQUMsRUFBRUMscUJBQXFCO0lBQ3ZGLE9BQVFGLG1CQUFtQixNQUFNRztBQUNuQztBQUVBLDhFQUE4RTtBQUM5RSwwRUFBMEU7QUFDMUUsZ0ZBQWdGO0FBQ2hGLGdGQUFnRjtBQUNoRix3REFBd0Q7QUFDeEQsTUFBTUMsd0JBQXdCO0FBRTlCLFNBQVNSLG1DQUFtQ1MsS0FBYTtJQUN2RCxJQUFJRCxzQkFBc0JFLElBQUksQ0FBQ0QsUUFBUTtRQUNyQyxPQUFPQTtJQUNUO0lBQ0EseUVBQXlFO0lBQ3pFLHFFQUFxRTtJQUNyRSxNQUFNRSxZQUFZQyxLQUFLSCxPQUNwQkksT0FBTyxDQUFDLE9BQU8sS0FBSyx1QkFBdUI7S0FDM0NBLE9BQU8sQ0FBQyxPQUFPLEtBQUssdUJBQXVCO0tBQzNDQSxPQUFPLENBQUMsT0FBTyxJQUFJLHNCQUFzQjs7SUFDNUMsT0FBTyxNQUFNRjtBQUNmO0FBRU8sU0FBU2pCLHlDQUNkb0IsV0FBbUI7SUFFbkIsT0FBTyxDQUFDLE1BQU0sRUFBRUEsWUFBWUQsT0FBTyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUM7QUFDdkQiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvc2hhcmVkL2xpYi9zZWdtZW50LWNhY2hlL3NlZ21lbnQtdmFsdWUtZW5jb2RpbmcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUEFHRV9TRUdNRU5UX0tFWSB9IGZyb20gJy4uL3NlZ21lbnQnXG5pbXBvcnQgdHlwZSB7IFNlZ21lbnQgYXMgRmxpZ2h0Um91dGVyU3RhdGVTZWdtZW50IH0gZnJvbSAnLi4vYXBwLXJvdXRlci10eXBlcydcblxuLy8gVHlwZVNjcmlwdCB0cmljayB0byBzaW11bGF0ZSBvcGFxdWUgdHlwZXMsIGxpa2UgaW4gRmxvdy5cbnR5cGUgT3BhcXVlPEssIFQ+ID0gVCAmIHsgX19icmFuZDogSyB9XG5cbmV4cG9ydCB0eXBlIFNlZ21lbnRSZXF1ZXN0S2V5UGFydCA9IE9wYXF1ZTwnU2VnbWVudFJlcXVlc3RLZXlQYXJ0Jywgc3RyaW5nPlxuZXhwb3J0IHR5cGUgU2VnbWVudFJlcXVlc3RLZXkgPSBPcGFxdWU8J1NlZ21lbnRSZXF1ZXN0S2V5Jywgc3RyaW5nPlxuXG5leHBvcnQgY29uc3QgUk9PVF9TRUdNRU5UX1JFUVVFU1RfS0VZID0gJycgYXMgU2VnbWVudFJlcXVlc3RLZXlcblxuZXhwb3J0IGNvbnN0IEhFQURfUkVRVUVTVF9LRVkgPSAnL19oZWFkJyBhcyBTZWdtZW50UmVxdWVzdEtleVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VnbWVudFJlcXVlc3RLZXlQYXJ0KFxuICBzZWdtZW50OiBGbGlnaHRSb3V0ZXJTdGF0ZVNlZ21lbnRcbik6IFNlZ21lbnRSZXF1ZXN0S2V5UGFydCB7XG4gIGlmICh0eXBlb2Ygc2VnbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoc2VnbWVudC5zdGFydHNXaXRoKFBBR0VfU0VHTUVOVF9LRVkpKSB7XG4gICAgICAvLyBUaGUgRmxpZ2h0IFJvdXRlciBTdGF0ZSB0eXBlIHNvbWV0aW1lcyBpbmNsdWRlcyB0aGUgc2VhcmNoIHBhcmFtcyBpblxuICAgICAgLy8gdGhlIHBhZ2Ugc2VnbWVudC4gSG93ZXZlciwgdGhlIFNlZ21lbnQgQ2FjaGUgdHJhY2tzIHRoaXMgYXMgYSBzZXBhcmF0ZVxuICAgICAgLy8ga2V5LiBTbywgd2Ugc3RyaXAgdGhlIHNlYXJjaCBwYXJhbXMgaGVyZSwgYW5kIHRoZW4gYWRkIHRoZW0gYmFjayB3aGVuXG4gICAgICAvLyB0aGUgY2FjaGUgZW50cnkgaXMgdHVybmVkIGJhY2sgaW50byBhIEZsaWdodFJvdXRlclN0YXRlLiBUaGlzIGlzIGFuXG4gICAgICAvLyB1bmZvcnR1bmF0ZSBjb25zZXF1ZW5jZSBvZiB0aGUgRmxpZ2h0Um91dGVTdGF0ZSBiZWluZyB1c2VkIGJvdGggYXMgYVxuICAgICAgLy8gdHJhbnNwb3J0IHR5cGUgYW5kIGFzIGEgY2FjaGUga2V5OyB3ZSdsbCBhZGRyZXNzIHRoaXMgb25jZSBtb3JlIG9mIHRoZVxuICAgICAgLy8gU2VnbWVudCBDYWNoZSBpbXBsZW1lbnRhdGlvbiBoYXMgc2V0dGxlZC5cbiAgICAgIC8vIFRPRE86IFdlIHNob3VsZCBob2lzdCB0aGUgc2VhcmNoIHBhcmFtcyBvdXQgb2YgdGhlIEZsaWdodFJvdXRlclN0YXRlXG4gICAgICAvLyB0eXBlIGVudGlyZWx5LCBUaGlzIGlzIG91ciBwbGFuIGZvciBkeW5hbWljIHJvdXRlIHBhcmFtcywgdG9vLlxuICAgICAgcmV0dXJuIFBBR0VfU0VHTUVOVF9LRVkgYXMgU2VnbWVudFJlcXVlc3RLZXlQYXJ0XG4gICAgfVxuICAgIGNvbnN0IHNhZmVOYW1lID1cbiAgICAgIC8vIFRPRE86IEZsaWdodFJvdXRlclN0YXRlIGVuY29kZXMgTm90IEZvdW5kIHJvdXRlcyBhcyBcIi9fbm90LWZvdW5kXCIuXG4gICAgICAvLyBCdXQgcGFyYW1zIHR5cGljYWxseSBkb24ndCBpbmNsdWRlIHRoZSBsZWFkaW5nIHNsYXNoLiBXZSBzaG91bGQgdXNlXG4gICAgICAvLyBhIGRpZmZlcmVudCBlbmNvZGluZyB0byBhdm9pZCB0aGlzIHNwZWNpYWwgY2FzZS5cbiAgICAgIHNlZ21lbnQgPT09ICcvX25vdC1mb3VuZCdcbiAgICAgICAgPyAnX25vdC1mb3VuZCdcbiAgICAgICAgOiBlbmNvZGVUb0ZpbGVzeXN0ZW1BbmRVUkxTYWZlU3RyaW5nKHNlZ21lbnQpXG4gICAgLy8gU2luY2UgdGhpcyBpcyBub3QgYSBkeW5hbWljIHNlZ21lbnQsIGl0J3MgZnVsbHkgZW5jb2RlZC4gSXQgZG9lcyBub3RcbiAgICAvLyBuZWVkIHRvIGJlIFwiaHlkcmF0ZWRcIiB3aXRoIGEgcGFyYW0gdmFsdWUuXG4gICAgcmV0dXJuIHNhZmVOYW1lIGFzIFNlZ21lbnRSZXF1ZXN0S2V5UGFydFxuICB9XG5cbiAgY29uc3QgbmFtZSA9IHNlZ21lbnRbMF1cbiAgY29uc3QgcGFyYW1UeXBlID0gc2VnbWVudFsyXVxuICBjb25zdCBzYWZlTmFtZSA9IGVuY29kZVRvRmlsZXN5c3RlbUFuZFVSTFNhZmVTdHJpbmcobmFtZSlcblxuICBjb25zdCBlbmNvZGVkTmFtZSA9ICckJyArIHBhcmFtVHlwZSArICckJyArIHNhZmVOYW1lXG4gIHJldHVybiBlbmNvZGVkTmFtZSBhcyBTZWdtZW50UmVxdWVzdEtleVBhcnRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZFNlZ21lbnRSZXF1ZXN0S2V5UGFydChcbiAgcGFyZW50UmVxdWVzdEtleTogU2VnbWVudFJlcXVlc3RLZXksXG4gIHBhcmFsbGVsUm91dGVLZXk6IHN0cmluZyxcbiAgY2hpbGRSZXF1ZXN0S2V5UGFydDogU2VnbWVudFJlcXVlc3RLZXlQYXJ0XG4pOiBTZWdtZW50UmVxdWVzdEtleSB7XG4gIC8vIEFzaWRlIGZyb20gYmVpbmcgZmlsZXN5c3RlbSBzYWZlLCBzZWdtZW50IGtleXMgYXJlIGFsc28gZGVzaWduZWQgc28gdGhhdFxuICAvLyBlYWNoIHNlZ21lbnQgYW5kIHBhcmFsbGVsIHJvdXRlIGNyZWF0ZXMgaXRzIG93biBzdWJkaXJlY3RvcnkuIFJvdWdobHkgaW5cbiAgLy8gdGhlIHNhbWUgc2hhcGUgYXMgdGhlIHNvdXJjZSBhcHAgZGlyZWN0b3J5LiBUaGlzIGlzIG1vc3RseSBqdXN0IGZvciBlYXNpZXJcbiAgLy8gZGVidWdnaW5nICh5b3UgY2FuIG9wZW4gdXAgdGhlIGJ1aWxkIGZvbGRlciBhbmQgbmF2aWdhdGUgdGhlIG91dHB1dCk7IGlmXG4gIC8vIHdlIHdhbnRlZCB0byBkbyB3ZSBjb3VsZCBqdXN0IHVzZSBhIGZsYXQgc3RydWN0dXJlLlxuXG4gIC8vIE9taXQgdGhlIHBhcmFsbGVsIHJvdXRlIGtleSBmb3IgY2hpbGRyZW4sIHNpbmNlIHRoaXMgaXMgdGhlIG1vc3RcbiAgLy8gY29tbW9uIGNhc2UuIFNhdmVzIHNvbWUgYnl0ZXMgKGFuZCBpdCdzIHdoYXQgdGhlIGFwcCBkaXJlY3RvcnkgZG9lcykuXG4gIGNvbnN0IHNsb3RLZXkgPVxuICAgIHBhcmFsbGVsUm91dGVLZXkgPT09ICdjaGlsZHJlbidcbiAgICAgID8gY2hpbGRSZXF1ZXN0S2V5UGFydFxuICAgICAgOiBgQCR7ZW5jb2RlVG9GaWxlc3lzdGVtQW5kVVJMU2FmZVN0cmluZyhwYXJhbGxlbFJvdXRlS2V5KX0vJHtjaGlsZFJlcXVlc3RLZXlQYXJ0fWBcbiAgcmV0dXJuIChwYXJlbnRSZXF1ZXN0S2V5ICsgJy8nICsgc2xvdEtleSkgYXMgU2VnbWVudFJlcXVlc3RLZXlcbn1cblxuLy8gRGVmaW5lIGEgcmVnZXggcGF0dGVybiB0byBtYXRjaCB0aGUgbW9zdCBjb21tb24gY2hhcmFjdGVycyBmb3VuZCBpbiBhIHJvdXRlXG4vLyBwYXJhbS4gSXQgZXhjbHVkZXMgYW55dGhpbmcgdGhhdCBtaWdodCBub3QgYmUgY3Jvc3MtcGxhdGZvcm0gZmlsZXN5c3RlbVxuLy8gY29tcGF0aWJsZSwgbGlrZSB8LiBJdCBkb2VzIG5vdCBuZWVkIHRvIGJlIHByZWNpc2UgYmVjYXVzZSB0aGUgZmFsbGJhY2sgaXMgdG9cbi8vIGp1c3QgYmFzZTY0dXJsLWVuY29kZSB0aGUgd2hvbGUgcGFyYW1ldGVyLCB3aGljaCBpcyBmaW5lOyB3ZSBqdXN0IGRvbid0IGRvIGl0XG4vLyBieSBkZWZhdWx0IGZvciBjb21wYWN0bmVzcywgYW5kIGZvciBlYXNpZXIgZGVidWdnaW5nLlxuY29uc3Qgc2ltcGxlUGFyYW1WYWx1ZVJlZ2V4ID0gL15bYS16QS1aMC05XFwtX0BdKyQvXG5cbmZ1bmN0aW9uIGVuY29kZVRvRmlsZXN5c3RlbUFuZFVSTFNhZmVTdHJpbmcodmFsdWU6IHN0cmluZykge1xuICBpZiAoc2ltcGxlUGFyYW1WYWx1ZVJlZ2V4LnRlc3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cbiAgLy8gSWYgdGhlcmUgYXJlIGFueSB1bnNhZmUgY2hhcmFjdGVycywgYmFzZTY0dXJsLWVuY29kZSB0aGUgZW50aXJlIHZhbHVlLlxuICAvLyBXZSBhbHNvIGFkZCBhICEgcHJlZml4IHNvIGl0IGRvZXNuJ3QgY29sbGlkZSB3aXRoIHRoZSBzaW1wbGUgY2FzZS5cbiAgY29uc3QgYmFzZTY0dXJsID0gYnRvYSh2YWx1ZSlcbiAgICAucmVwbGFjZSgvXFwrL2csICctJykgLy8gUmVwbGFjZSAnKycgd2l0aCAnLSdcbiAgICAucmVwbGFjZSgvXFwvL2csICdfJykgLy8gUmVwbGFjZSAnLycgd2l0aCAnXydcbiAgICAucmVwbGFjZSgvPSskLywgJycpIC8vIFJlbW92ZSB0cmFpbGluZyAnPSdcbiAgcmV0dXJuICchJyArIGJhc2U2NHVybFxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFNlZ21lbnRQYXRoVG9TdGF0aWNFeHBvcnRGaWxlbmFtZShcbiAgc2VnbWVudFBhdGg6IHN0cmluZ1xuKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBfX25leHQke3NlZ21lbnRQYXRoLnJlcGxhY2UoL1xcLy9nLCAnLicpfS50eHRgXG59XG4iXSwibmFtZXMiOlsiSEVBRF9SRVFVRVNUX0tFWSIsIlJPT1RfU0VHTUVOVF9SRVFVRVNUX0tFWSIsImFwcGVuZFNlZ21lbnRSZXF1ZXN0S2V5UGFydCIsImNvbnZlcnRTZWdtZW50UGF0aFRvU3RhdGljRXhwb3J0RmlsZW5hbWUiLCJjcmVhdGVTZWdtZW50UmVxdWVzdEtleVBhcnQiLCJzZWdtZW50Iiwic3RhcnRzV2l0aCIsIlBBR0VfU0VHTUVOVF9LRVkiLCJzYWZlTmFtZSIsImVuY29kZVRvRmlsZXN5c3RlbUFuZFVSTFNhZmVTdHJpbmciLCJuYW1lIiwicGFyYW1UeXBlIiwiZW5jb2RlZE5hbWUiLCJwYXJlbnRSZXF1ZXN0S2V5IiwicGFyYWxsZWxSb3V0ZUtleSIsImNoaWxkUmVxdWVzdEtleVBhcnQiLCJzbG90S2V5Iiwic2ltcGxlUGFyYW1WYWx1ZVJlZ2V4IiwidmFsdWUiLCJ0ZXN0IiwiYmFzZTY0dXJsIiwiYnRvYSIsInJlcGxhY2UiLCJzZWdtZW50UGF0aCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/segment-cache/vary-params-decoding.js":
|
||
/*!*********************************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/segment-cache/vary-params-decoding.js ***!
|
||
\*********************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("/**\n * Vary Params Decoding\n *\n * This module is shared between server and client.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"readVaryParams\", ({\n enumerable: true,\n get: function() {\n return readVaryParams;\n }\n}));\nfunction readVaryParams(thenable) {\n // Attach a no-op listener to force Flight to synchronously resolve the\n // thenable. When a thenable arrives from the Flight stream, it may be in an\n // intermediate 'resolved_model' state (data received but not unwrapped).\n // Calling .then() triggers Flight to transition it to 'fulfilled', making\n // the value available synchronously. React uses this same optimization\n // internally to avoid unnecessary microtasks.\n thenable.then(noop);\n // If the thenable is still not 'fulfilled' after calling .then(), the server\n // failed to resolve it before the stream ended. Treat as unknown.\n if (thenable.status !== 'fulfilled') {\n return null;\n }\n return thenable.value;\n}\nconst noop = ()=>{}; //# sourceMappingURL=vary-params-decoding.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvc2VnbWVudC1jYWNoZS92YXJ5LXBhcmFtcy1kZWNvZGluZy5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7OztDQUlDOzs7O2tEQWdDZUE7OztlQUFBQTs7O0FBQVQsU0FBU0EsZUFDZEMsUUFBNEI7SUFFNUIsdUVBQXVFO0lBQ3ZFLDRFQUE0RTtJQUM1RSx5RUFBeUU7SUFDekUsMEVBQTBFO0lBQzFFLHVFQUF1RTtJQUN2RSw4Q0FBOEM7SUFDOUNBLFNBQVNDLElBQUksQ0FBQ0M7SUFDZCw2RUFBNkU7SUFDN0Usa0VBQWtFO0lBQ2xFLElBQUlGLFNBQVNHLE1BQU0sS0FBSyxhQUFhO1FBQ25DLE9BQU87SUFDVDtJQUNBLE9BQU9ILFNBQVNJLEtBQUs7QUFDdkI7QUFFQSxNQUFNRixPQUFPLEtBQU8iLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvc2hhcmVkL2xpYi9zZWdtZW50LWNhY2hlL3ZhcnktcGFyYW1zLWRlY29kaW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVmFyeSBQYXJhbXMgRGVjb2RpbmdcbiAqXG4gKiBUaGlzIG1vZHVsZSBpcyBzaGFyZWQgYmV0d2VlbiBzZXJ2ZXIgYW5kIGNsaWVudC5cbiAqL1xuXG5leHBvcnQgdHlwZSBWYXJ5UGFyYW1zID0gU2V0PHN0cmluZz5cblxudHlwZSBGdWxmaWxsZWRWYXJ5UGFyYW1zVGhlbmFibGUgPSB7XG4gIHN0YXR1czogJ2Z1bGZpbGxlZCdcbiAgdmFsdWU6IFZhcnlQYXJhbXNcbn0gJiBQcm9taXNlTGlrZTxWYXJ5UGFyYW1zPlxuXG50eXBlIFBlbmRpbmdWYXJ5UGFyYW1zVGhlbmFibGUgPSB7XG4gIC8vICdyZXNvbHZlZF9tb2RlbCcgaXMgYW4gaW50ZXJuYWwgUmVhY3QgRmxpZ2h0IHN0YXRlOiB0aGUgdW5kZXJseWluZyBtb2RlbFxuICAvLyBkYXRhIGhhcyBhcnJpdmVkIGJ1dCB0aGUgdGhlbmFibGUgaGFzbid0IGJlZW4gXCJ1bndyYXBwZWRcIiB5ZXQuIENhbGxpbmdcbiAgLy8gLnRoZW4oKSB0cmlnZ2VycyBGbGlnaHQgdG8gc3luY2hyb25vdXNseSB0cmFuc2l0aW9uIHRvICdmdWxmaWxsZWQnLlxuICBzdGF0dXM6ICdwZW5kaW5nJyB8ICdyZXNvbHZlZF9tb2RlbCdcbiAgdmFsdWU6IHVua25vd25cbn0gJiBQcm9taXNlTGlrZTxWYXJ5UGFyYW1zPlxuXG5leHBvcnQgdHlwZSBWYXJ5UGFyYW1zVGhlbmFibGUgPVxuICB8IEZ1bGZpbGxlZFZhcnlQYXJhbXNUaGVuYWJsZVxuICB8IFBlbmRpbmdWYXJ5UGFyYW1zVGhlbmFibGVcblxuLyoqXG4gKiBTeW5jaHJvbm91c2x5IHJlYWRzIHZhcnkgcGFyYW1zIGZyb20gYSB0aGVuYWJsZS5cbiAqXG4gKiBCeSB0aGUgdGltZSB0aGlzIGlzIGNhbGxlZCAoY2xpZW50LXNpZGUgb3IgaW4gY29sbGVjdFNlZ21lbnREYXRhKSwgdGhlXG4gKiB0aGVuYWJsZSBzaG91bGQgYWxyZWFkeSBiZSBmdWxmaWxsZWQgYmVjYXVzZSB0aGUgRmxpZ2h0IHN0cmVhbSBoYXMgYmVlblxuICogZnVsbHkgcmVjZWl2ZWQuIFdlIGNoZWNrIHRoZSBzdGF0dXMgc3luY2hyb25vdXNseSB0byBhdm9pZCB1bm5lY2Vzc2FyeVxuICogbWljcm90YXNrcy5cbiAqXG4gKiBSZXR1cm5zIG51bGwgaWYgdGhlIHRoZW5hYmxlIGlzIHN0aWxsIHBlbmRpbmcgKHdoaWNoIHNob3VsZG4ndCBoYXBwZW4gaW5cbiAqIG5vcm1hbCBvcGVyYXRpb24gLSBpdCBpbmRpY2F0ZXMgdGhlIHNlcnZlciBmYWlsZWQgdG8gdHJhY2sgdmFyeSBwYXJhbXMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZFZhcnlQYXJhbXMoXG4gIHRoZW5hYmxlOiBWYXJ5UGFyYW1zVGhlbmFibGVcbik6IFZhcnlQYXJhbXMgfCBudWxsIHtcbiAgLy8gQXR0YWNoIGEgbm8tb3AgbGlzdGVuZXIgdG8gZm9yY2UgRmxpZ2h0IHRvIHN5bmNocm9ub3VzbHkgcmVzb2x2ZSB0aGVcbiAgLy8gdGhlbmFibGUuIFdoZW4gYSB0aGVuYWJsZSBhcnJpdmVzIGZyb20gdGhlIEZsaWdodCBzdHJlYW0sIGl0IG1heSBiZSBpbiBhblxuICAvLyBpbnRlcm1lZGlhdGUgJ3Jlc29sdmVkX21vZGVsJyBzdGF0ZSAoZGF0YSByZWNlaXZlZCBidXQgbm90IHVud3JhcHBlZCkuXG4gIC8vIENhbGxpbmcgLnRoZW4oKSB0cmlnZ2VycyBGbGlnaHQgdG8gdHJhbnNpdGlvbiBpdCB0byAnZnVsZmlsbGVkJywgbWFraW5nXG4gIC8vIHRoZSB2YWx1ZSBhdmFpbGFibGUgc3luY2hyb25vdXNseS4gUmVhY3QgdXNlcyB0aGlzIHNhbWUgb3B0aW1pemF0aW9uXG4gIC8vIGludGVybmFsbHkgdG8gYXZvaWQgdW5uZWNlc3NhcnkgbWljcm90YXNrcy5cbiAgdGhlbmFibGUudGhlbihub29wKVxuICAvLyBJZiB0aGUgdGhlbmFibGUgaXMgc3RpbGwgbm90ICdmdWxmaWxsZWQnIGFmdGVyIGNhbGxpbmcgLnRoZW4oKSwgdGhlIHNlcnZlclxuICAvLyBmYWlsZWQgdG8gcmVzb2x2ZSBpdCBiZWZvcmUgdGhlIHN0cmVhbSBlbmRlZC4gVHJlYXQgYXMgdW5rbm93bi5cbiAgaWYgKHRoZW5hYmxlLnN0YXR1cyAhPT0gJ2Z1bGZpbGxlZCcpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiB0aGVuYWJsZS52YWx1ZVxufVxuXG5jb25zdCBub29wID0gKCkgPT4ge31cbiJdLCJuYW1lcyI6WyJyZWFkVmFyeVBhcmFtcyIsInRoZW5hYmxlIiwidGhlbiIsIm5vb3AiLCJzdGF0dXMiLCJ2YWx1ZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/segment-cache/vary-params-decoding.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/segment.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/segment.js ***!
|
||
\******************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n DEFAULT_SEGMENT_KEY: function() {\n return DEFAULT_SEGMENT_KEY;\n },\n NOT_FOUND_SEGMENT_KEY: function() {\n return NOT_FOUND_SEGMENT_KEY;\n },\n PAGE_SEGMENT_KEY: function() {\n return PAGE_SEGMENT_KEY;\n },\n addSearchParamsIfPageSegment: function() {\n return addSearchParamsIfPageSegment;\n },\n computeSelectedLayoutSegment: function() {\n return computeSelectedLayoutSegment;\n },\n getSegmentValue: function() {\n return getSegmentValue;\n },\n getSelectedLayoutSegmentPath: function() {\n return getSelectedLayoutSegmentPath;\n },\n isGroupSegment: function() {\n return isGroupSegment;\n },\n isParallelRouteSegment: function() {\n return isParallelRouteSegment;\n }\n});\nfunction getSegmentValue(segment) {\n return Array.isArray(segment) ? segment[1] : segment;\n}\nfunction isGroupSegment(segment) {\n // Use array[0] for performant purpose\n return segment[0] === '(' && segment.endsWith(')');\n}\nfunction isParallelRouteSegment(segment) {\n return segment.startsWith('@') && segment !== '@children';\n}\nfunction addSearchParamsIfPageSegment(segment, searchParams) {\n const isPageSegment = segment.includes(PAGE_SEGMENT_KEY);\n if (isPageSegment) {\n const stringifiedQuery = JSON.stringify(searchParams);\n return stringifiedQuery !== '{}' ? PAGE_SEGMENT_KEY + '?' + stringifiedQuery : PAGE_SEGMENT_KEY;\n }\n return segment;\n}\nfunction computeSelectedLayoutSegment(segments, parallelRouteKey) {\n if (!segments || segments.length === 0) {\n return null;\n }\n // For 'children', use first segment; for other parallel routes, use last segment\n const rawSegment = parallelRouteKey === 'children' ? segments[0] : segments[segments.length - 1];\n // If the default slot is showing, return null since it's not technically \"selected\" (it's a fallback)\n // Returning an internal value like `__DEFAULT__` would be confusing\n return rawSegment === DEFAULT_SEGMENT_KEY ? null : rawSegment;\n}\nfunction getSelectedLayoutSegmentPath(tree, parallelRouteKey, first = true, segmentPath = []) {\n let node;\n if (first) {\n // Use the provided parallel route key on the first parallel route\n node = tree[1][parallelRouteKey];\n } else {\n // After first parallel route prefer children, if there's no children pick the first parallel route.\n const parallelRoutes = tree[1];\n node = parallelRoutes.children ?? Object.values(parallelRoutes)[0];\n }\n if (!node) return segmentPath;\n const segment = node[0];\n let segmentValue = getSegmentValue(segment);\n if (!segmentValue || segmentValue.startsWith(PAGE_SEGMENT_KEY)) {\n return segmentPath;\n }\n segmentPath.push(segmentValue);\n return getSelectedLayoutSegmentPath(node, parallelRouteKey, false, segmentPath);\n}\nconst PAGE_SEGMENT_KEY = '__PAGE__';\nconst DEFAULT_SEGMENT_KEY = '__DEFAULT__';\nconst NOT_FOUND_SEGMENT_KEY = '/_not-found'; //# sourceMappingURL=segment.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvc2VnbWVudC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUF1RmFBLG1CQUFtQjtlQUFuQkE7O0lBQ0FDLHFCQUFxQjtlQUFyQkE7O0lBRkFDLGdCQUFnQjtlQUFoQkE7O0lBdkVHQyw0QkFBNEI7ZUFBNUJBOztJQWdCQUMsNEJBQTRCO2VBQTVCQTs7SUE3QkFDLGVBQWU7ZUFBZkE7O0lBaURBQyw0QkFBNEI7ZUFBNUJBOztJQTdDQUMsY0FBYztlQUFkQTs7SUFLQUMsc0JBQXNCO2VBQXRCQTs7O0FBVFQsU0FBU0gsZ0JBQWdCSSxPQUFnQjtJQUM5QyxPQUFPQyxNQUFNQyxPQUFPLENBQUNGLFdBQVdBLE9BQU8sQ0FBQyxFQUFFLEdBQUdBO0FBQy9DO0FBRU8sU0FBU0YsZUFBZUUsT0FBZTtJQUM1QyxzQ0FBc0M7SUFDdEMsT0FBT0EsT0FBTyxDQUFDLEVBQUUsS0FBSyxPQUFPQSxRQUFRRyxRQUFRLENBQUM7QUFDaEQ7QUFFTyxTQUFTSix1QkFBdUJDLE9BQWU7SUFDcEQsT0FBT0EsUUFBUUksVUFBVSxDQUFDLFFBQVFKLFlBQVk7QUFDaEQ7QUFFTyxTQUFTTiw2QkFDZE0sT0FBZ0IsRUFDaEJLLFlBQTJEO0lBRTNELE1BQU1DLGdCQUFnQk4sUUFBUU8sUUFBUSxDQUFDZDtJQUV2QyxJQUFJYSxlQUFlO1FBQ2pCLE1BQU1FLG1CQUFtQkMsS0FBS0MsU0FBUyxDQUFDTDtRQUN4QyxPQUFPRyxxQkFBcUIsT0FDeEJmLG1CQUFtQixNQUFNZSxtQkFDekJmO0lBQ047SUFFQSxPQUFPTztBQUNUO0FBRU8sU0FBU0wsNkJBQ2RnQixRQUF5QixFQUN6QkMsZ0JBQXdCO0lBRXhCLElBQUksQ0FBQ0QsWUFBWUEsU0FBU0UsTUFBTSxLQUFLLEdBQUc7UUFDdEMsT0FBTztJQUNUO0lBRUEsaUZBQWlGO0lBQ2pGLE1BQU1DLGFBQ0pGLHFCQUFxQixhQUNqQkQsUUFBUSxDQUFDLEVBQUUsR0FDWEEsUUFBUSxDQUFDQSxTQUFTRSxNQUFNLEdBQUcsRUFBRTtJQUVuQyxzR0FBc0c7SUFDdEcsb0VBQW9FO0lBQ3BFLE9BQU9DLGVBQWV2QixzQkFBc0IsT0FBT3VCO0FBQ3JEO0FBR08sU0FBU2pCLDZCQUNka0IsSUFBdUIsRUFDdkJILGdCQUF3QixFQUN4QkksUUFBUSxJQUFJLEVBQ1pDLGNBQXdCLEVBQUU7SUFFMUIsSUFBSUM7SUFDSixJQUFJRixPQUFPO1FBQ1Qsa0VBQWtFO1FBQ2xFRSxPQUFPSCxJQUFJLENBQUMsRUFBRSxDQUFDSCxpQkFBaUI7SUFDbEMsT0FBTztRQUNMLG9HQUFvRztRQUNwRyxNQUFNTyxpQkFBaUJKLElBQUksQ0FBQyxFQUFFO1FBQzlCRyxPQUFPQyxlQUFlQyxRQUFRLElBQUlDLE9BQU9DLE1BQU0sQ0FBQ0gsZUFBZSxDQUFDLEVBQUU7SUFDcEU7SUFFQSxJQUFJLENBQUNELE1BQU0sT0FBT0Q7SUFDbEIsTUFBTWpCLFVBQVVrQixJQUFJLENBQUMsRUFBRTtJQUV2QixJQUFJSyxlQUFlM0IsZ0JBQWdCSTtJQUVuQyxJQUFJLENBQUN1QixnQkFBZ0JBLGFBQWFuQixVQUFVLENBQUNYLG1CQUFtQjtRQUM5RCxPQUFPd0I7SUFDVDtJQUVBQSxZQUFZTyxJQUFJLENBQUNEO0lBRWpCLE9BQU8xQiw2QkFDTHFCLE1BQ0FOLGtCQUNBLE9BQ0FLO0FBRUo7QUFFTyxNQUFNeEIsbUJBQW1CO0FBQ3pCLE1BQU1GLHNCQUFzQjtBQUM1QixNQUFNQyx3QkFBd0IiLCJzb3VyY2VzIjpbIi9Vc2Vycy9wb3V5YW5tYi9zcmMvc2hhcmVkL2xpYi9zZWdtZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmxpZ2h0Um91dGVyU3RhdGUsIFNlZ21lbnQgfSBmcm9tICcuL2FwcC1yb3V0ZXItdHlwZXMnXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWdtZW50VmFsdWUoc2VnbWVudDogU2VnbWVudCkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShzZWdtZW50KSA/IHNlZ21lbnRbMV0gOiBzZWdtZW50XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0dyb3VwU2VnbWVudChzZWdtZW50OiBzdHJpbmcpIHtcbiAgLy8gVXNlIGFycmF5WzBdIGZvciBwZXJmb3JtYW50IHB1cnBvc2VcbiAgcmV0dXJuIHNlZ21lbnRbMF0gPT09ICcoJyAmJiBzZWdtZW50LmVuZHNXaXRoKCcpJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUGFyYWxsZWxSb3V0ZVNlZ21lbnQoc2VnbWVudDogc3RyaW5nKSB7XG4gIHJldHVybiBzZWdtZW50LnN0YXJ0c1dpdGgoJ0AnKSAmJiBzZWdtZW50ICE9PSAnQGNoaWxkcmVuJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkU2VhcmNoUGFyYW1zSWZQYWdlU2VnbWVudChcbiAgc2VnbWVudDogU2VnbWVudCxcbiAgc2VhcmNoUGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZD5cbikge1xuICBjb25zdCBpc1BhZ2VTZWdtZW50ID0gc2VnbWVudC5pbmNsdWRlcyhQQUdFX1NFR01FTlRfS0VZKVxuXG4gIGlmIChpc1BhZ2VTZWdtZW50KSB7XG4gICAgY29uc3Qgc3RyaW5naWZpZWRRdWVyeSA9IEpTT04uc3RyaW5naWZ5KHNlYXJjaFBhcmFtcylcbiAgICByZXR1cm4gc3RyaW5naWZpZWRRdWVyeSAhPT0gJ3t9J1xuICAgICAgPyBQQUdFX1NFR01FTlRfS0VZICsgJz8nICsgc3RyaW5naWZpZWRRdWVyeVxuICAgICAgOiBQQUdFX1NFR01FTlRfS0VZXG4gIH1cblxuICByZXR1cm4gc2VnbWVudFxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVNlbGVjdGVkTGF5b3V0U2VnbWVudChcbiAgc2VnbWVudHM6IHN0cmluZ1tdIHwgbnVsbCxcbiAgcGFyYWxsZWxSb3V0ZUtleTogc3RyaW5nXG4pOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKCFzZWdtZW50cyB8fCBzZWdtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLy8gRm9yICdjaGlsZHJlbicsIHVzZSBmaXJzdCBzZWdtZW50OyBmb3Igb3RoZXIgcGFyYWxsZWwgcm91dGVzLCB1c2UgbGFzdCBzZWdtZW50XG4gIGNvbnN0IHJhd1NlZ21lbnQgPVxuICAgIHBhcmFsbGVsUm91dGVLZXkgPT09ICdjaGlsZHJlbidcbiAgICAgID8gc2VnbWVudHNbMF1cbiAgICAgIDogc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMV1cblxuICAvLyBJZiB0aGUgZGVmYXVsdCBzbG90IGlzIHNob3dpbmcsIHJldHVybiBudWxsIHNpbmNlIGl0J3Mgbm90IHRlY2huaWNhbGx5IFwic2VsZWN0ZWRcIiAoaXQncyBhIGZhbGxiYWNrKVxuICAvLyBSZXR1cm5pbmcgYW4gaW50ZXJuYWwgdmFsdWUgbGlrZSBgX19ERUZBVUxUX19gIHdvdWxkIGJlIGNvbmZ1c2luZ1xuICByZXR1cm4gcmF3U2VnbWVudCA9PT0gREVGQVVMVF9TRUdNRU5UX0tFWSA/IG51bGwgOiByYXdTZWdtZW50XG59XG5cbi8qKiBHZXQgdGhlIGNhbm9uaWNhbCBwYXJhbWV0ZXJzIGZyb20gdGhlIGN1cnJlbnQgbGV2ZWwgdG8gdGhlIGxlYWYgbm9kZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWxlY3RlZExheW91dFNlZ21lbnRQYXRoKFxuICB0cmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgcGFyYWxsZWxSb3V0ZUtleTogc3RyaW5nLFxuICBmaXJzdCA9IHRydWUsXG4gIHNlZ21lbnRQYXRoOiBzdHJpbmdbXSA9IFtdXG4pOiBzdHJpbmdbXSB7XG4gIGxldCBub2RlOiBGbGlnaHRSb3V0ZXJTdGF0ZVxuICBpZiAoZmlyc3QpIHtcbiAgICAvLyBVc2UgdGhlIHByb3ZpZGVkIHBhcmFsbGVsIHJvdXRlIGtleSBvbiB0aGUgZmlyc3QgcGFyYWxsZWwgcm91dGVcbiAgICBub2RlID0gdHJlZVsxXVtwYXJhbGxlbFJvdXRlS2V5XVxuICB9IGVsc2Uge1xuICAgIC8vIEFmdGVyIGZpcnN0IHBhcmFsbGVsIHJvdXRlIHByZWZlciBjaGlsZHJlbiwgaWYgdGhlcmUncyBubyBjaGlsZHJlbiBwaWNrIHRoZSBmaXJzdCBwYXJhbGxlbCByb3V0ZS5cbiAgICBjb25zdCBwYXJhbGxlbFJvdXRlcyA9IHRyZWVbMV1cbiAgICBub2RlID0gcGFyYWxsZWxSb3V0ZXMuY2hpbGRyZW4gPz8gT2JqZWN0LnZhbHVlcyhwYXJhbGxlbFJvdXRlcylbMF1cbiAgfVxuXG4gIGlmICghbm9kZSkgcmV0dXJuIHNlZ21lbnRQYXRoXG4gIGNvbnN0IHNlZ21lbnQgPSBub2RlWzBdXG5cbiAgbGV0IHNlZ21lbnRWYWx1ZSA9IGdldFNlZ21lbnRWYWx1ZShzZWdtZW50KVxuXG4gIGlmICghc2VnbWVudFZhbHVlIHx8IHNlZ21lbnRWYWx1ZS5zdGFydHNXaXRoKFBBR0VfU0VHTUVOVF9LRVkpKSB7XG4gICAgcmV0dXJuIHNlZ21lbnRQYXRoXG4gIH1cblxuICBzZWdtZW50UGF0aC5wdXNoKHNlZ21lbnRWYWx1ZSlcblxuICByZXR1cm4gZ2V0U2VsZWN0ZWRMYXlvdXRTZWdtZW50UGF0aChcbiAgICBub2RlLFxuICAgIHBhcmFsbGVsUm91dGVLZXksXG4gICAgZmFsc2UsXG4gICAgc2VnbWVudFBhdGhcbiAgKVxufVxuXG5leHBvcnQgY29uc3QgUEFHRV9TRUdNRU5UX0tFWSA9ICdfX1BBR0VfXydcbmV4cG9ydCBjb25zdCBERUZBVUxUX1NFR01FTlRfS0VZID0gJ19fREVGQVVMVF9fJ1xuZXhwb3J0IGNvbnN0IE5PVF9GT1VORF9TRUdNRU5UX0tFWSA9ICcvX25vdC1mb3VuZCdcbiJdLCJuYW1lcyI6WyJERUZBVUxUX1NFR01FTlRfS0VZIiwiTk9UX0ZPVU5EX1NFR01FTlRfS0VZIiwiUEFHRV9TRUdNRU5UX0tFWSIsImFkZFNlYXJjaFBhcmFtc0lmUGFnZVNlZ21lbnQiLCJjb21wdXRlU2VsZWN0ZWRMYXlvdXRTZWdtZW50IiwiZ2V0U2VnbWVudFZhbHVlIiwiZ2V0U2VsZWN0ZWRMYXlvdXRTZWdtZW50UGF0aCIsImlzR3JvdXBTZWdtZW50IiwiaXNQYXJhbGxlbFJvdXRlU2VnbWVudCIsInNlZ21lbnQiLCJBcnJheSIsImlzQXJyYXkiLCJlbmRzV2l0aCIsInN0YXJ0c1dpdGgiLCJzZWFyY2hQYXJhbXMiLCJpc1BhZ2VTZWdtZW50IiwiaW5jbHVkZXMiLCJzdHJpbmdpZmllZFF1ZXJ5IiwiSlNPTiIsInN0cmluZ2lmeSIsInNlZ21lbnRzIiwicGFyYWxsZWxSb3V0ZUtleSIsImxlbmd0aCIsInJhd1NlZ21lbnQiLCJ0cmVlIiwiZmlyc3QiLCJzZWdtZW50UGF0aCIsIm5vZGUiLCJwYXJhbGxlbFJvdXRlcyIsImNoaWxkcmVuIiwiT2JqZWN0IiwidmFsdWVzIiwic2VnbWVudFZhbHVlIiwicHVzaCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/segment.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/server-reference-info.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/server-reference-info.js ***!
|
||
\********************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n extractInfoFromServerReferenceId: function() {\n return extractInfoFromServerReferenceId;\n },\n omitUnusedArgs: function() {\n return omitUnusedArgs;\n }\n});\nfunction extractInfoFromServerReferenceId(id) {\n const infoByte = parseInt(id.slice(0, 2), 16);\n const typeBit = infoByte >> 7 & 0x1;\n const argMask = infoByte >> 1 & 0x3f;\n const restArgs = infoByte & 0x1;\n const usedArgs = Array(6);\n for(let index = 0; index < 6; index++){\n const bitPosition = 5 - index;\n const bit = argMask >> bitPosition & 0x1;\n usedArgs[index] = bit === 1;\n }\n return {\n type: typeBit === 1 ? 'use-cache' : 'server-action',\n usedArgs: usedArgs,\n hasRestArgs: restArgs === 1\n };\n}\nfunction omitUnusedArgs(args, info) {\n const filteredArgs = new Array(args.length);\n let length = 0;\n for(let index = 0; index < args.length; index++){\n if (index < 6 && info.usedArgs[index] || // This assumes that the server reference info byte has the restArgs bit\n // set to 1 if there are more than 6 args.\n index >= 6 && info.hasRestArgs) {\n filteredArgs[index] = args[index];\n length = index + 1;\n }\n }\n // Trim trailing unused args from the array.\n filteredArgs.length = length;\n return filteredArgs;\n} //# sourceMappingURL=server-reference-info.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvc2VydmVyLXJlZmVyZW5jZS1pbmZvLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQTBCZ0JBLGdDQUFnQztlQUFoQ0E7O0lBaUNBQyxjQUFjO2VBQWRBOzs7QUFqQ1QsU0FBU0QsaUNBQ2RFLEVBQVU7SUFFVixNQUFNQyxXQUFXQyxTQUFTRixHQUFHRyxLQUFLLENBQUMsR0FBRyxJQUFJO0lBQzFDLE1BQU1DLFVBQVdILFlBQVksSUFBSztJQUNsQyxNQUFNSSxVQUFXSixZQUFZLElBQUs7SUFDbEMsTUFBTUssV0FBV0wsV0FBVztJQUM1QixNQUFNTSxXQUFXQyxNQUFNO0lBRXZCLElBQUssSUFBSUMsUUFBUSxHQUFHQSxRQUFRLEdBQUdBLFFBQVM7UUFDdEMsTUFBTUMsY0FBYyxJQUFJRDtRQUN4QixNQUFNRSxNQUFPTixXQUFXSyxjQUFlO1FBQ3ZDSCxRQUFRLENBQUNFLE1BQU0sR0FBR0UsUUFBUTtJQUM1QjtJQUVBLE9BQU87UUFDTEMsTUFBTVIsWUFBWSxJQUFJLGNBQWM7UUFDcENHLFVBQVVBO1FBUVZNLGFBQWFQLGFBQWE7SUFDNUI7QUFDRjtBQU1PLFNBQVNQLGVBQ2RlLElBQWUsRUFDZkMsSUFBeUI7SUFFekIsTUFBTUMsZUFBZSxJQUFJUixNQUFNTSxLQUFLRyxNQUFNO0lBQzFDLElBQUlBLFNBQVM7SUFFYixJQUFLLElBQUlSLFFBQVEsR0FBR0EsUUFBUUssS0FBS0csTUFBTSxFQUFFUixRQUFTO1FBQ2hELElBQ0dBLFFBQVEsS0FBS00sS0FBS1IsUUFBUSxDQUFDRSxNQUFNLElBQ2xDLHdFQUF3RTtRQUN4RSwwQ0FBMEM7UUFDekNBLFNBQVMsS0FBS00sS0FBS0YsV0FBVyxFQUMvQjtZQUNBRyxZQUFZLENBQUNQLE1BQU0sR0FBR0ssSUFBSSxDQUFDTCxNQUFNO1lBQ2pDUSxTQUFTUixRQUFRO1FBQ25CO0lBQ0Y7SUFFQSw0Q0FBNEM7SUFDNUNPLGFBQWFDLE1BQU0sR0FBR0E7SUFFdEIsT0FBT0Q7QUFDVCIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9zaGFyZWQvbGliL3NlcnZlci1yZWZlcmVuY2UtaW5mby50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFNlcnZlclJlZmVyZW5jZUluZm8ge1xuICB0eXBlOiAnc2VydmVyLWFjdGlvbicgfCAndXNlLWNhY2hlJ1xuICB1c2VkQXJnczogW2Jvb2xlYW4sIGJvb2xlYW4sIGJvb2xlYW4sIGJvb2xlYW4sIGJvb2xlYW4sIGJvb2xlYW5dXG4gIGhhc1Jlc3RBcmdzOiBib29sZWFuXG59XG5cbi8qKlxuICogRXh0cmFjdHMgaW5mbyBhYm91dCB0aGUgc2VydmVyIHJlZmVyZW5jZSBmb3IgdGhlIGdpdmVuIHNlcnZlciByZWZlcmVuY2UgSUQgYnlcbiAqIHBhcnNpbmcgdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIGhleC1lbmNvZGVkIElELlxuICpcbiAqIGBgYFxuICogQml0IHBvc2l0aW9uczogWzddICAgICAgWzZdIFs1XSBbNF0gWzNdIFsyXSBbMV0gIFswXVxuICogQml0czogICAgICAgICAgdHlwZUJpdCAgYXJnTWFzayAgICAgICAgICAgICAgICAgIHJlc3RBcmdzXG4gKiBgYGBcbiAqXG4gKiBJZiB0aGUgYHR5cGVCaXRgIGlzIGAxYCB0aGUgc2VydmVyIHJlZmVyZW5jZSByZXByZXNlbnRzIGEgYFwidXNlIGNhY2hlXCJgXG4gKiBmdW5jdGlvbiwgb3RoZXJ3aXNlIGEgc2VydmVyIGFjdGlvbi5cbiAqXG4gKiBUaGUgYGFyZ01hc2tgIGVuY29kZXMgd2hldGhlciB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgYXJndW1lbnQgYXQgdGhlXG4gKiByZXNwZWN0aXZlIHBvc2l0aW9uLlxuICpcbiAqIFRoZSBgcmVzdEFyZ3NgIGJpdCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgZnVuY3Rpb24gdXNlcyBhIHJlc3QgcGFyYW1ldGVyLiBJdCdzXG4gKiBhbHNvIHNldCB0byAxIGlmIHRoZSBmdW5jdGlvbiBoYXMgbW9yZSB0aGFuIDYgYXJncy5cbiAqXG4gKiBAcGFyYW0gaWQgaGV4LWVuY29kZWQgc2VydmVyIHJlZmVyZW5jZSBJRFxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEluZm9Gcm9tU2VydmVyUmVmZXJlbmNlSWQoXG4gIGlkOiBzdHJpbmdcbik6IFNlcnZlclJlZmVyZW5jZUluZm8ge1xuICBjb25zdCBpbmZvQnl0ZSA9IHBhcnNlSW50KGlkLnNsaWNlKDAsIDIpLCAxNilcbiAgY29uc3QgdHlwZUJpdCA9IChpbmZvQnl0ZSA+PiA3KSAmIDB4MVxuICBjb25zdCBhcmdNYXNrID0gKGluZm9CeXRlID4+IDEpICYgMHgzZlxuICBjb25zdCByZXN0QXJncyA9IGluZm9CeXRlICYgMHgxXG4gIGNvbnN0IHVzZWRBcmdzID0gQXJyYXkoNilcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgNjsgaW5kZXgrKykge1xuICAgIGNvbnN0IGJpdFBvc2l0aW9uID0gNSAtIGluZGV4XG4gICAgY29uc3QgYml0ID0gKGFyZ01hc2sgPj4gYml0UG9zaXRpb24pICYgMHgxXG4gICAgdXNlZEFyZ3NbaW5kZXhdID0gYml0ID09PSAxXG4gIH1cblxuICByZXR1cm4ge1xuICAgIHR5cGU6IHR5cGVCaXQgPT09IDEgPyAndXNlLWNhY2hlJyA6ICdzZXJ2ZXItYWN0aW9uJyxcbiAgICB1c2VkQXJnczogdXNlZEFyZ3MgYXMgW1xuICAgICAgYm9vbGVhbixcbiAgICAgIGJvb2xlYW4sXG4gICAgICBib29sZWFuLFxuICAgICAgYm9vbGVhbixcbiAgICAgIGJvb2xlYW4sXG4gICAgICBib29sZWFuLFxuICAgIF0sXG4gICAgaGFzUmVzdEFyZ3M6IHJlc3RBcmdzID09PSAxLFxuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNwYXJzZSBhcnJheSBjb250YWluaW5nIG9ubHkgdGhlIHVzZWQgYXJndW1lbnRzIGJhc2VkIG9uIHRoZVxuICogcHJvdmlkZWQgYWN0aW9uIGluZm8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbWl0VW51c2VkQXJncyhcbiAgYXJnczogdW5rbm93bltdLFxuICBpbmZvOiBTZXJ2ZXJSZWZlcmVuY2VJbmZvXG4pOiB1bmtub3duW10ge1xuICBjb25zdCBmaWx0ZXJlZEFyZ3MgPSBuZXcgQXJyYXkoYXJncy5sZW5ndGgpXG4gIGxldCBsZW5ndGggPSAwXG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFyZ3MubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgaWYgKFxuICAgICAgKGluZGV4IDwgNiAmJiBpbmZvLnVzZWRBcmdzW2luZGV4XSkgfHxcbiAgICAgIC8vIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSBzZXJ2ZXIgcmVmZXJlbmNlIGluZm8gYnl0ZSBoYXMgdGhlIHJlc3RBcmdzIGJpdFxuICAgICAgLy8gc2V0IHRvIDEgaWYgdGhlcmUgYXJlIG1vcmUgdGhhbiA2IGFyZ3MuXG4gICAgICAoaW5kZXggPj0gNiAmJiBpbmZvLmhhc1Jlc3RBcmdzKVxuICAgICkge1xuICAgICAgZmlsdGVyZWRBcmdzW2luZGV4XSA9IGFyZ3NbaW5kZXhdXG4gICAgICBsZW5ndGggPSBpbmRleCArIDFcbiAgICB9XG4gIH1cblxuICAvLyBUcmltIHRyYWlsaW5nIHVudXNlZCBhcmdzIGZyb20gdGhlIGFycmF5LlxuICBmaWx0ZXJlZEFyZ3MubGVuZ3RoID0gbGVuZ3RoXG5cbiAgcmV0dXJuIGZpbHRlcmVkQXJnc1xufVxuIl0sIm5hbWVzIjpbImV4dHJhY3RJbmZvRnJvbVNlcnZlclJlZmVyZW5jZUlkIiwib21pdFVudXNlZEFyZ3MiLCJpZCIsImluZm9CeXRlIiwicGFyc2VJbnQiLCJzbGljZSIsInR5cGVCaXQiLCJhcmdNYXNrIiwicmVzdEFyZ3MiLCJ1c2VkQXJncyIsIkFycmF5IiwiaW5kZXgiLCJiaXRQb3NpdGlvbiIsImJpdCIsInR5cGUiLCJoYXNSZXN0QXJncyIsImFyZ3MiLCJpbmZvIiwiZmlsdGVyZWRBcmdzIiwibGVuZ3RoIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/server-reference-info.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/utils.js":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/utils.js ***!
|
||
\****************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n DecodeError: function() {\n return DecodeError;\n },\n MiddlewareNotFoundError: function() {\n return MiddlewareNotFoundError;\n },\n MissingStaticPage: function() {\n return MissingStaticPage;\n },\n NormalizeError: function() {\n return NormalizeError;\n },\n PageNotFoundError: function() {\n return PageNotFoundError;\n },\n SP: function() {\n return SP;\n },\n ST: function() {\n return ST;\n },\n WEB_VITALS: function() {\n return WEB_VITALS;\n },\n execOnce: function() {\n return execOnce;\n },\n getDisplayName: function() {\n return getDisplayName;\n },\n getLocationOrigin: function() {\n return getLocationOrigin;\n },\n getURL: function() {\n return getURL;\n },\n isAbsoluteUrl: function() {\n return isAbsoluteUrl;\n },\n isResSent: function() {\n return isResSent;\n },\n loadGetInitialProps: function() {\n return loadGetInitialProps;\n },\n normalizeRepeatedSlashes: function() {\n return normalizeRepeatedSlashes;\n },\n stringifyError: function() {\n return stringifyError;\n }\n});\nconst WEB_VITALS = [\n 'CLS',\n 'FCP',\n 'FID',\n 'INP',\n 'LCP',\n 'TTFB'\n];\nfunction execOnce(fn) {\n let used = false;\n let result;\n return (...args)=>{\n if (!used) {\n used = true;\n result = fn(...args);\n }\n return result;\n };\n}\n// Scheme: https://tools.ietf.org/html/rfc3986#section-3.1\n// Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\nconst ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/;\nconst isAbsoluteUrl = (url)=>ABSOLUTE_URL_REGEX.test(url);\nfunction getLocationOrigin() {\n const { protocol, hostname, port } = window.location;\n return `${protocol}//${hostname}${port ? ':' + port : ''}`;\n}\nfunction getURL() {\n const { href } = window.location;\n const origin = getLocationOrigin();\n return href.substring(origin.length);\n}\nfunction getDisplayName(Component) {\n return typeof Component === 'string' ? Component : Component.displayName || Component.name || 'Unknown';\n}\nfunction isResSent(res) {\n return res.finished || res.headersSent;\n}\nfunction normalizeRepeatedSlashes(url) {\n const urlParts = url.split('?');\n const urlNoQuery = urlParts[0];\n return urlNoQuery // first we replace any non-encoded backslashes with forward\n // then normalize repeated forward slashes\n .replace(/\\\\/g, '/').replace(/\\/\\/+/g, '/') + (urlParts[1] ? `?${urlParts.slice(1).join('?')}` : '');\n}\nasync function loadGetInitialProps(App, ctx) {\n if (true) {\n if (App.prototype?.getInitialProps) {\n const message = `\"${getDisplayName(App)}.getInitialProps()\" is defined as an instance method - visit https://nextjs.org/docs/messages/get-initial-props-as-an-instance-method for more information.`;\n throw Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1035\",\n enumerable: false,\n configurable: true\n });\n }\n }\n // when called from _app `ctx` is nested in `ctx`\n const res = ctx.res || ctx.ctx && ctx.ctx.res;\n if (!App.getInitialProps) {\n if (ctx.ctx && ctx.Component) {\n // @ts-ignore pageProps default\n return {\n pageProps: await loadGetInitialProps(ctx.Component, ctx.ctx)\n };\n }\n return {};\n }\n const props = await App.getInitialProps(ctx);\n if (res && isResSent(res)) {\n return props;\n }\n if (!props) {\n const message = `\"${getDisplayName(App)}.getInitialProps()\" should resolve to an object. But found \"${props}\" instead.`;\n throw Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E1025\",\n enumerable: false,\n configurable: true\n });\n }\n if (true) {\n if (Object.keys(props).length === 0 && !ctx.ctx) {\n console.warn(`${getDisplayName(App)} returned an empty object from \\`getInitialProps\\`. This de-optimizes and prevents automatic static optimization. https://nextjs.org/docs/messages/empty-object-getInitialProps`);\n }\n }\n return props;\n}\nconst SP = typeof performance !== 'undefined';\nconst ST = SP && [\n 'mark',\n 'measure',\n 'getEntriesByName'\n].every((method)=>typeof performance[method] === 'function');\nclass DecodeError extends Error {\n}\nclass NormalizeError extends Error {\n}\nclass PageNotFoundError extends Error {\n constructor(page){\n super();\n this.code = 'ENOENT';\n this.name = 'PageNotFoundError';\n this.message = `Cannot find module for page: ${page}`;\n }\n}\nclass MissingStaticPage extends Error {\n constructor(page, message){\n super();\n this.message = `Failed to load static file for page: ${page} ${message}`;\n }\n}\nclass MiddlewareNotFoundError extends Error {\n constructor(){\n super();\n this.code = 'ENOENT';\n this.message = `Cannot find the middleware module`;\n }\n}\nfunction stringifyError(error) {\n return JSON.stringify({\n message: error.message,\n stack: error.stack\n });\n} //# sourceMappingURL=utils.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvdXRpbHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBbWFhQSxXQUFXO2VBQVhBOztJQW9CQUMsdUJBQXVCO2VBQXZCQTs7SUFQQUMsaUJBQWlCO2VBQWpCQTs7SUFaQUMsY0FBYztlQUFkQTs7SUFDQUMsaUJBQWlCO2VBQWpCQTs7SUFUQUMsRUFBRTtlQUFGQTs7SUFDQUMsRUFBRTtlQUFGQTs7SUFqWEFDLFVBQVU7ZUFBVkE7O0lBcVFHQyxRQUFRO2VBQVJBOztJQStCQUMsY0FBYztlQUFkQTs7SUFYQUMsaUJBQWlCO2VBQWpCQTs7SUFLQUMsTUFBTTtlQUFOQTs7SUFQSEMsYUFBYTtlQUFiQTs7SUFtQkdDLFNBQVM7ZUFBVEE7O0lBa0JNQyxtQkFBbUI7ZUFBbkJBOztJQWROQyx3QkFBd0I7ZUFBeEJBOztJQStHQUMsY0FBYztlQUFkQTs7O0FBN1pULE1BQU1ULGFBQWE7SUFBQztJQUFPO0lBQU87SUFBTztJQUFPO0lBQU87Q0FBTztBQXFROUQsU0FBU0MsU0FDZFMsRUFBSztJQUVMLElBQUlDLE9BQU87SUFDWCxJQUFJQztJQUVKLE9BQVEsQ0FBQyxHQUFHQztRQUNWLElBQUksQ0FBQ0YsTUFBTTtZQUNUQSxPQUFPO1lBQ1BDLFNBQVNGLE1BQU1HO1FBQ2pCO1FBQ0EsT0FBT0Q7SUFDVDtBQUNGO0FBRUEsMERBQTBEO0FBQzFELGdFQUFnRTtBQUNoRSxNQUFNRSxxQkFBcUI7QUFDcEIsTUFBTVQsZ0JBQWdCLENBQUNVLE1BQWdCRCxtQkFBbUJFLElBQUksQ0FBQ0Q7QUFFL0QsU0FBU1o7SUFDZCxNQUFNLEVBQUVjLFFBQVEsRUFBRUMsUUFBUSxFQUFFQyxJQUFJLEVBQUUsR0FBR0MsT0FBT0MsUUFBUTtJQUNwRCxPQUFPLEdBQUdKLFNBQVMsRUFBRSxFQUFFQyxXQUFXQyxPQUFPLE1BQU1BLE9BQU8sSUFBSTtBQUM1RDtBQUVPLFNBQVNmO0lBQ2QsTUFBTSxFQUFFa0IsSUFB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Q0FBQyw2QkFBNkIsRUFBRVksTUFBTTtJQUN2RDtBQUNGO0FBRU8sTUFBTTlELDBCQUEwQm1EO0lBQ3JDVSxZQUFZQyxJQUFZLEVBQUVaLE9BQWUsQ0FBRTtRQUN6QyxLQUFLO1FBQ0wsSUFBSSxDQUFDQSxPQUFPLEdBQUcsQ0FBQyxxQ0FBcUMsRUFBRVksS0FBSyxDQUFDLEVBQUVaLFNBQVM7SUFDMUU7QUFDRjtBQUVPLE1BQU1uRCxnQ0FBZ0NvRDtJQUUzQ1UsYUFBYztRQUNaLEtBQUs7UUFDTCxJQUFJLENBQUNFLElBQUksR0FBRztRQUNaLElBQUksQ0FBQ2IsT0FBTyxHQUFHLENBQUMsaUNBQWlDLENBQUM7SUFDcEQ7QUFDRjtBQVdPLFNBQVNwQyxlQUFla0QsS0FBWTtJQUN6QyxPQUFPQyxLQUFLQyxTQUFTLENBQUM7UUFBRWhCLFNBQVNjLE1BQU1kLE9BQU87UUFBRWlCLE9BQU9ILE1BQU1HLEtBQUs7SUFBQztBQUNyRSIsInNvdXJjZXMiOlsiL1VzZXJzL3BvdXlhbm1iL3NyYy9zaGFyZWQvbGliL3V0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSHRtbFByb3BzIH0gZnJvbSAnLi9odG1sLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudFR5cGUsIEpTWCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHR5cGUgeyBEb21haW5Mb2NhbGUgfSBmcm9tICcuLi8uLi9zZXJ2ZXIvY29uZmlnJ1xuaW1wb3J0IHR5cGUgeyBFbnYgfSBmcm9tICdAbmV4dC9lbnYnXG5pbXBvcnQgdHlwZSB7IEluY29taW5nTWVzc2FnZSwgU2VydmVyUmVzcG9uc2UgfSBmcm9tICdodHRwJ1xuaW1wb3J0IHR5cGUgeyBOZXh0Um91dGVyIH0gZnJvbSAnLi9yb3V0ZXIvcm91dGVyJ1xuaW1wb3J0IHR5cGUgeyBQYXJzZWRVcmxRdWVyeSB9IGZyb20gJ3F1ZXJ5c3RyaW5nJ1xuaW1wb3J0IHR5cGUgeyBQcmV2aWV3RGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBDT01QSUxFUl9OQU1FUyB9IGZyb20gJy4vY29uc3RhbnRzJ1xuaW1wb3J0IHR5cGUgZnMgZnJvbSAnZnMnXG5cbmV4cG9ydCB0eXBlIE5leHRDb21wb25lbnRUeXBlPFxuICBDb250ZXh0IGV4dGVuZHMgQmFzZUNvbnRleHQgPSBOZXh0UGFnZUNvbnRleHQsXG4gIEluaXRpYWxQcm9wcyA9IHt9LFxuICBQcm9wcyA9IHt9LFxuPiA9IENvbXBvbmVudFR5cGU8UHJvcHM+ICYge1xuICAvKipcbiAgICogVXNlZCBmb3IgaW5pdGlhbCBwYWdlIGxvYWQgZGF0YSBwb3B1bGF0aW9uLiBEYXRhIHJldHVybmVkIGZyb20gYGdldEluaXRpYWxQcm9wc2AgaXMgc2VyaWFsaXplZCB3aGVuIHNlcnZlciByZW5kZXJlZC5cbiAgICogTWFrZSBzdXJlIHRvIHJldHVybiBwbGFpbiBgT2JqZWN0YCB3aXRob3V0IHVzaW5nIGBEYXRlYCwgYE1hcGAsIGBTZXRgLlxuICAgKiBAcGFyYW0gY29udGV4dCBDb250ZXh0IG9mIGBwYWdlYFxuICAgKi9cbiAgZ2V0SW5pdGlhbFByb3BzPyhjb250ZXh0OiBDb250ZXh0KTogSW5pdGlhbFByb3BzIHwgUHJvbWlzZTxJbml0aWFsUHJvcHM+XG59XG5cbmV4cG9ydCB0eXBlIERvY3VtZW50VHlwZSA9IE5leHRDb21wb25lbnRUeXBlPFxuICBEb2N1bWVudENvbnRleHQsXG4gIERvY3VtZW50SW5pdGlhbFByb3BzLFxuICBEb2N1bWVudFByb3BzXG4+XG5cbmV4cG9ydCB0eXBlIEFwcFR5cGU8UCA9IHt9PiA9IE5leHRDb21wb25lbnRUeXBlPFxuICBBcHBDb250ZXh0VHlwZSxcbiAgUCxcbiAgQXBwUHJvcHNUeXBlPGFueSwgUD5cbj5cblxuZXhwb3J0IHR5cGUgQXBwVHJlZVR5cGUgPSBDb21wb25lbnRUeXBlPFxuICBBcHBJbml0aWFsUHJvcHMgJiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfVxuPlxuXG4vKipcbiAqIFdlYiB2aXRhbHMgcHJvdmlkZWQgdG8gX2FwcC5yZXBvcnRXZWJWaXRhbHMgYnkgQ29yZSBXZWIgVml0YWxzIHBsdWdpbiBkZXZlbG9wZWQgYnkgR29vZ2xlIENocm9tZSB0ZWFtLlxuICogaHR0cHM6Ly9uZXh0anMub3JnL2Jsb2cvbmV4dC05LTQjaW50ZWdyYXRlZC13ZWItdml0YWxzLXJlcG9ydGluZ1xuICovXG5leHBvcnQgY29uc3QgV0VCX1ZJVEFMUyA9IFsnQ0xTJywgJ0ZDUCcsICdGSUQnLCAnSU5QJywgJ0xDUCcsICdUVEZCJ10gYXMgY29uc3RcbmV4cG9ydCB0eXBlIE5leHRXZWJWaXRhbHNNZXRyaWMgPSB7XG4gIGlkOiBzdHJpbmdcbiAgc3RhcnRUaW1lOiBudW1iZXJcbiAgdmFsdWU6IG51bWJlclxuICBhdHRyaWJ1dGlvbj86IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9XG59ICYgKFxuICB8IHtcbiAgICAgIGxhYmVsOiAnd2ViLXZpdGFsJ1xuICAgICAgbmFtZTogKHR5cGVvZiBXRUJfVklUQUxTKVtudW1iZXJdXG4gICAgfVxuICB8IHtcbiAgICAgIGxhYmVsOiAnY3VzdG9tJ1xuICAgICAgbmFtZTpcbiAgICAgICAgfCAnTmV4dC5qcy1oeWRyYXRpb24nXG4gICAgICAgIHwgJ05leHQuanMtcm91dGUtY2hhbmdlLXRvLXJlbmRlcidcbiAgICAgICAgfCAnTmV4dC5qcy1yZW5kZXInXG4gICAgfVxuKVxuXG5leHBvcnQgdHlwZSBFbmhhbmNlcjxDPiA9IChDb21wb25lbnQ6IEMpID0+IENcblxuZXhwb3J0IHR5cGUgQ29tcG9uZW50c0VuaGFuY2VyID1cbiAgfCB7XG4gICAgICBlbmhhbmNlQXBwPzogRW5oYW5jZXI8QXBwVHlwZT5cbiAgICAgIGVuaGFuY2VDb21wb25lbnQ/OiBFbmhhbmNlcjxOZXh0Q29tcG9uZW50VHlwZT5cbiAgICB9XG4gIHwgRW5oYW5jZXI8TmV4dENvbXBvbmVudFR5cGU+XG5cbmV4cG9ydCB0eXBlIFJlbmRlclBhZ2VSZXN1bHQgPSB7XG4gIGh0bWw6IHN0cmluZ1xuICBoZWFkPzogQXJyYXk8SlNYLkVsZW1lbnQgfCBudWxsPlxufVxuXG5leHBvcnQgdHlwZSBSZW5kZXJQYWdlID0gKFxuICBvcHRpb25zPzogQ29tcG9uZW50c0VuaGFuY2VyXG4pID0+IERvY3VtZW50SW5pdGlhbFByb3BzIHwgUHJvbWlzZTxEb2N1bWVudEluaXRpYWxQcm9wcz5cblxuZXhwb3J0IHR5cGUgQmFzZUNvbnRleHQgPSB7XG4gIHJlcz86IFNlcnZlclJlc3BvbnNlXG4gIFtrOiBzdHJpbmddOiBhbnlcbn1cblxuZXhwb3J0IHR5cGUgTkVYVF9EQVRBID0ge1xuICBwcm9wczogUmVjb3JkPHN0cmluZywgYW55PlxuICBwYWdlOiBzdHJpbmdcbiAgcXVlcnk6IFBhcnNlZFVybFF1ZXJ5XG4gIGJ1aWxkSWQ6IHN0cmluZ1xuICBhc3NldFByZWZpeD86IHN0cmluZ1xuICBuZXh0RXhwb3J0PzogYm9vbGVhblxuICBhdXRvRXhwb3J0PzogYm9vbGVhblxuICBpc0ZhbGxiYWNrPzogYm9vbGVhblxuICBpc0V4cGVyaW1lbnRhbENvbXBpbGU/OiBib29sZWFuXG4gIGR5bmFtaWNJZHM/OiAoc3RyaW5nIHwgbnVtYmVyKVtdXG4gIGVycj86IEVycm9yICYge1xuICAgIHN0YXR1c0NvZGU/OiBudW1iZXJcbiAgICBzb3VyY2U/OiB0eXBlb2YgQ09NUElMRVJfTkFNRVMuc2VydmVyIHwgdHlwZW9mIENPTVBJTEVSX05BTUVTLmVkZ2VTZXJ2ZXJcbiAgfVxuICBnc3A/OiBib29sZWFuXG4gIGdzc3A/OiBib29sZWFuXG4gIGN1c3RvbVNlcnZlcj86IGJvb2xlYW5cbiAgZ2lwPzogYm9vbGVhblxuICBhcHBHaXA/OiBib29sZWFuXG4gIGxvY2FsZT86IHN0cmluZ1xuICBsb2NhbGVzPzogcmVhZG9ubHkgc3RyaW5nW11cbiAgZGVmYXVsdExvY2FsZT86IHN0cmluZ1xuICBkb21haW5Mb2NhbGVzPzogcmVhZG9ubHkgRG9tYWluTG9jYWxlW11cbiAgc2NyaXB0TG9hZGVyPzogYW55W11cbiAgaXNQcmV2aWV3PzogYm9vbGVhblxuICBub3RGb3VuZFNyY1BhZ2U/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiBgTmV4dGAgY29udGV4dFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5leHRQYWdlQ29udGV4dCB7XG4gIC8qKlxuICAgKiBFcnJvciBvYmplY3QgaWYgZW5jb3VudGVyZWQgZHVyaW5nIHJlbmRlcmluZ1xuICAgKi9cbiAgZXJyPzogKEVycm9yICYgeyBzdGF0dXNDb2RlPzogbnVtYmVyIH0pIHwgbnVsbFxuICAvKipcbiAgICogYEhUVFBgIHJlcXVlc3Qgb2JqZWN0LlxuICAgKi9cbiAgcmVxPzogSW5jb21pbmdNZXNzYWdlXG4gIC8qKlxuICAgKiBgSFRUUGAgcmVzcG9uc2Ugb2JqZWN0LlxuICAgKi9cbiAgcmVzPzogU2VydmVyUmVzcG9uc2VcbiAgLyoqXG4gICAqIFBhdGggc2VjdGlvbiBvZiBgVVJMYC5cbiAgICovXG4gIHBhdGhuYW1lOiBzdHJpbmdcbiAgLyoqXG4gICAqIFF1ZXJ5IHN0cmluZyBzZWN0aW9uIG9mIGBVUkxgIHBhcnNlZCBhcyBhbiBvYmplY3QuXG4gICAqL1xuICBxdWVyeTogUGFyc2VkVXJsUXVlcnlcbiAgLyoqXG4gICAqIGBTdHJpbmdgIG9mIHRoZSBhY3R1YWwgcGF0aCBpbmNsdWRpbmcgcXVlcnkuXG4gICAqL1xuICBhc1BhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50bHkgYWN0aXZlIGxvY2FsZVxuICAgKi9cbiAgbG9jYWxlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBBbGwgY29uZmlndXJlZCBsb2NhbGVzXG4gICAqL1xuICBsb2NhbGVzPzogcmVhZG9ubHkgc3RyaW5nW11cbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmVkIGRlZmF1bHQgbG9jYWxlXG4gICAqL1xuICBkZWZhdWx0TG9jYWxlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBgQ29tcG9uZW50YCB0aGUgdHJlZSBvZiB0aGUgQXBwIHRvIHVzZSBpZiBuZWVkaW5nIHRvIHJlbmRlciBzZXBhcmF0ZWx5XG4gICAqL1xuICBBcHBUcmVlOiBBcHBUcmVlVHlwZVxufVxuXG5leHBvcnQgdHlwZSBBcHBDb250ZXh0VHlwZTxSb3V0ZXIgZXh0ZW5kcyBOZXh0Um91dGVyID0gTmV4dFJvdXRlcj4gPSB7XG4gIENvbXBvbmVudDogTmV4dENvbXBvbmVudFR5cGU8TmV4dFBhZ2VDb250ZXh0PlxuICBBcHBUcmVlOiBBcHBUcmVlVHlwZVxuICBjdHg6IE5leHRQYWdlQ29udGV4dFxuICByb3V0ZXI6IFJvdXRlclxufVxuXG5leHBvcnQgdHlwZSBBcHBJbml0aWFsUHJvcHM8UGFnZVByb3BzID0gYW55PiA9IHtcbiAgcGFnZVByb3BzOiBQYWdlUHJvcHNcbn1cblxuZXhwb3J0IHR5cGUgQXBwUHJvcHNUeXBlPFxuICBSb3V0ZXIgZXh0ZW5kcyBOZXh0Um91dGVyID0gTmV4dFJvdXRlcixcbiAgUGFnZVByb3BzID0ge30sXG4+ID0gQXBwSW5pdGlhbFByb3BzPFBhZ2VQcm9wcz4gJiB7XG4gIENvbXBvbmVudDogTmV4dENvbXBvbmVudFR5cGU8TmV4dFBhZ2VDb250ZXh0LCBhbnksIGFueT5cbiAgcm91dGVyOiBSb3V0ZXJcbiAgX19OX1NTRz86IGJvb2xlYW5cbiAgX19OX1NTUD86IGJvb2xlYW5cbn1cblxuZXhwb3J0IHR5cGUgRG9jdW1lbnRDb250ZXh0ID0gTmV4dFBhZ2VDb250ZXh0ICYge1xuICByZW5kZXJQYWdlOiBSZW5kZXJQYWdlXG4gIGRlZmF1bHRHZXRJbml0aWFsUHJvcHMoXG4gICAgY3R4OiBEb2N1bWVudENvbnRleHQsXG4gICAgb3B0aW9ucz86IHsgbm9uY2U/OiBzdHJpbmcgfVxuICApOiBQcm9taXNlPERvY3VtZW50SW5pdGlhbFByb3BzPlxufVxuXG5leHBvcnQgdHlwZSBEb2N1bWVudEluaXRpYWxQcm9wcyA9IFJlbmRlclBhZ2VSZXN1bHQgJiB7XG4gIHN0eWxlcz86IFJlYWN0LlJlYWN0RWxlbWVudFtdIHwgSXRlcmFibGU8UmVhY3QuUmVhY3ROb2RlPiB8IEpTWC5FbGVtZW50XG59XG5cbmV4cG9ydCB0eXBlIERvY3VtZW50UHJvcHMgPSBEb2N1bWVudEluaXRpYWxQcm9wcyAmIEh0bWxQcm9wc1xuXG4vKipcbiAqIE5leHQgYEFQSWAgcm91dGUgcmVxdWVzdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5leHRBcGlSZXF1ZXN0IGV4dGVuZHMgSW5jb21pbmdNZXNzYWdlIHtcbiAgLyoqXG4gICAqIE9iamVjdCBvZiBgcXVlcnlgIHZhbHVlcyBmcm9tIHVybFxuICAgKi9cbiAgcXVlcnk6IFBhcnRpYWw8e1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdXG4gIH0+XG4gIC8qKlxuICAgKiBPYmplY3Qgb2YgYGNvb2tpZXNgIGZyb20gaGVhZGVyXG4gICAqL1xuICBjb29raWVzOiBQYXJ0aWFsPHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmdcbiAgfT5cblxuICBib2R5OiBhbnlcblxuICBlbnY6IEVudlxuXG4gIGRyYWZ0TW9kZT86IGJvb2xlYW5cblxuICBwcmV2aWV3PzogYm9vbGVhblxuICAvKipcbiAgICogUHJldmlldyBkYXRhIHNldCBvbiB0aGUgcmVxdWVzdCwgaWYgYW55XG4gICAqICovXG4gIHByZXZpZXdEYXRhPzogUHJldmlld0RhdGFcbn1cblxuLyoqXG4gKiBTZW5kIGJvZHkgb2YgcmVzcG9uc2VcbiAqL1xudHlwZSBTZW5kPFQ+ID0gKGJvZHk6IFQpID0+IHZvaWRcblxuLyoqXG4gKiBOZXh0IGBBUElgIHJvdXRlIHJlc3BvbnNlXG4gKi9cbmV4cG9ydCB0eXBlIE5leHRBcGlSZXNwb25zZTxEYXRhID0gYW55PiA9IFNlcnZlclJlc3BvbnNlICYge1xuICAvKipcbiAgICogU2VuZCBkYXRhIGBhbnlgIGRhdGEgaW4gcmVzcG9uc2VcbiAgICovXG4gIHNlbmQ6IFNlbmQ8RGF0YT5cbiAgLyoqXG4gICAqIFNlbmQgZGF0YSBganNvbmAgZGF0YSBpbiByZXNwb25zZVxuICAgKi9cbiAganNvbjogU2VuZDxEYXRhPlxuICBzdGF0dXM6IChzdGF0dXNDb2RlOiBudW1iZXIpID0+IE5leHRBcGlSZXNwb25zZTxEYXRhPlxuICByZWRpcmVjdCh1cmw6IHN0cmluZyk6IE5leHRBcGlSZXNwb25zZTxEYXRhPlxuICByZWRpcmVjdChzdGF0dXM6IG51bWJlciwgdXJsOiBzdHJpbmcpOiBOZXh0QXBpUmVzcG9uc2U8RGF0YT5cblxuICAvKipcbiAgICogU2V0IGRyYWZ0IG1vZGVcbiAgICovXG4gIHNldERyYWZ0TW9kZTogKG9wdGlvbnM6IHsgZW5hYmxlOiBib29sZWFuIH0pID0+IE5leHRBcGlSZXNwb25zZTxEYXRhPlxuXG4gIC8qKlxuICAgKiBTZXQgcHJldmlldyBkYXRhIGZvciBOZXh0LmpzJyBwcmVyZW5kZXIgbW9kZVxuICAgKi9cbiAgc2V0UHJldmlld0RhdGE6IChcbiAgICBkYXRhOiBvYmplY3QgfCBzdHJpbmcsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIC8qKlxuICAgICAgICogU3BlY2lmaWVzIHRoZSBudW1iZXIgKGluIHNlY29uZHMpIGZvciB0aGUgcHJldmlldyBzZXNzaW9uIHRvIGxhc3QgZm9yLlxuICAgICAgICogVGhlIGdpdmVuIG51bWJlciB3aWxsIGJlIGNvbnZlcnRlZCB0byBhbiBpbnRlZ2VyIGJ5IHJvdW5kaW5nIGRvd24uXG4gICAgICAgKiBCeSBkZWZhdWx0LCBubyBtYXhpbXVtIGFnZSBpcyBzZXQgYW5kIHRoZSBwcmV2aWV3IHNlc3Npb24gZmluaXNoZXNcbiAgICAgICAqIHdoZW4gdGhlIGNsaWVudCBzaHV0cyBkb3duIChicm93c2VyIGlzIGNsb3NlZCkuXG4gICAgICAgKi9cbiAgICAgIG1heEFnZT86IG51bWJlclxuICAgICAgLyoqXG4gICAgICAgKiBTcGVjaWZpZXMgdGhlIHBhdGggZm9yIHRoZSBwcmV2aWV3IHNlc3Npb24gdG8gd29yayB1bmRlci4gQnkgZGVmYXVsdCxcbiAgICAgICAqIHRoZSBwYXRoIGlzIGNvbnNpZGVyZWQgdGhlIFwiZGVmYXVsdCBwYXRoXCIsIGkuZS4sIGFueSBwYWdlcyB1bmRlciBcIi9cIi5cbiAgICAgICAqL1xuICAgICAgcGF0aD86IHN0cmluZ1xuICAgIH1cbiAgKSA9PiBOZXh0QXBpUmVzcG9uc2U8RGF0YT5cblxuICAvKipcbiAgICogQ2xlYXIgcHJldmlldyBkYXRhIGZvciBOZXh0LmpzJyBwcmVyZW5kZXIgbW9kZVxuICAgKi9cbiAgY2xlYXJQcmV2aWV3RGF0YTogKG9wdGlvbnM/OiB7IHBhdGg/OiBzdHJpbmcgfSkgPT4gTmV4dEFwaVJlc3BvbnNlPERhdGE+XG5cbiAgLyoqXG4gICAqIFJldmFsaWRhdGUgYSBzcGVjaWZpYyBwYWdlIGFuZCByZWdlbmVyYXRlIGl0IHVzaW5nIE9uLURlbWFuZCBJbmNyZW1lbnRhbFxuICAgKiBTdGF0aWMgUmVnZW5lcmF0aW9uLlxuICAgKiBUaGUgcGF0aCBzaG91bGQgYmUgYW4gYWN0dWFsIHBhdGgsIG5vdCBhIHJld3JpdHRlbiBwYXRoLiBFLmcuIGZvclxuICAgKiBcIi9ibG9nL1tzbHVnXVwiIHRoaXMgc2hvdWxkIGJlIFwiL2Jsb2cvcG9zdC0xXCIuXG4gICAqIEBsaW5rIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL2RhdGEtZmV0Y2hpbmcvaW5jcmVtZW50YWwtc3RhdGljLXJlZ2VuZXJhdGlvbiNvbi1kZW1hbmQtcmV2YWxpZGF0aW9uLXdpdGgtcmV2YWxpZGF0ZXBhdGhcbiAgICovXG4gIHJldmFsaWRhdGU6IChcbiAgICB1cmxQYXRoOiBzdHJpbmcsXG4gICAgb3B0cz86IHtcbiAgICAgIHVuc3RhYmxlX29ubHlHZW5lcmF0ZWQ/OiBib29sZWFuXG4gICAgfVxuICApID0+IFByb21pc2U8dm9pZD5cbn1cblxuLyoqXG4gKiBOZXh0IGBBUElgIHJvdXRlIGhhbmRsZXJcbiAqL1xuZXhwb3J0IHR5cGUgTmV4dEFwaUhhbmRsZXI8VCA9IGFueT4gPSAoXG4gIHJlcTogTmV4dEFwaVJlcXVlc3QsXG4gIHJlczogTmV4dEFwaVJlc3BvbnNlPFQ+XG4pID0+IHVua25vd24gfCBQcm9taXNlPHVua25vd24+XG5cbi8qKlxuICogVXRpbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4ZWNPbmNlPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IFJldHVyblR5cGU8VD4+KFxuICBmbjogVFxuKTogVCB7XG4gIGxldCB1c2VkID0gZmFsc2VcbiAgbGV0IHJlc3VsdDogUmV0dXJuVHlwZTxUPlxuXG4gIHJldHVybiAoKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgaWYgKCF1c2VkKSB7XG4gICAgICB1c2VkID0gdHJ1ZVxuICAgICAgcmVzdWx0ID0gZm4oLi4uYXJncylcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9KSBhcyBUXG59XG5cbi8vIFNjaGVtZTogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0zLjFcbi8vIEFic29sdXRlIFVSTDogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi00LjNcbmNvbnN0IEFCU09MVVRFX1VSTF9SRUdFWCA9IC9eW2EtekEtWl1bYS16QS1aXFxkK1xcLS5dKj86L1xuZXhwb3J0IGNvbnN0IGlzQWJzb2x1dGVVcmwgPSAodXJsOiBzdHJpbmcpID0+IEFCU09MVVRFX1VSTF9SRUdFWC50ZXN0KHVybClcblxuZXhwb3J0IGZ1bmN0aW9uIGdldExvY2F0aW9uT3JpZ2luKCkge1xuICBjb25zdCB7IHByb3RvY29sLCBob3N0bmFtZSwgcG9ydCB9ID0gd2luZG93LmxvY2F0aW9uXG4gIHJldHVybiBgJHtwcm90b2NvbH0vLyR7aG9zdG5hbWV9JHtwb3J0ID8gJzonICsgcG9ydCA6ICcnfWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFVSTCgpIHtcbiAgY29uc3QgeyBocmVmIH0gPSB3aW5kb3cubG9jYXRpb25cbiAgY29uc3Qgb3JpZ2luID0gZ2V0TG9jYXRpb25PcmlnaW4oKVxuICByZXR1cm4gaHJlZi5zdWJzdHJpbmcob3JpZ2luLmxlbmd0aClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpc3BsYXlOYW1lPFA+KENvbXBvbmVudDogQ29tcG9uZW50VHlwZTxQPikge1xuICByZXR1cm4gdHlwZW9mIENvbXBvbmVudCA9PT0gJ3N0cmluZydcbiAgICA/IENvbXBvbmVudFxuICAgIDogQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdVbmtub3duJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZXNTZW50KHJlczogU2VydmVyUmVzcG9uc2UpIHtcbiAgcmV0dXJuIHJlcy5maW5pc2hlZCB8fCByZXMuaGVhZGVyc1NlbnRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVJlcGVhdGVkU2xhc2hlcyh1cmw6IHN0cmluZykge1xuICBjb25zdCB1cmxQYXJ0cyA9IHVybC5zcGxpdCgnPycpXG4gIGNvbnN0IHVybE5vUXVlcnkgPSB1cmxQYXJ0c1swXVxuXG4gIHJldHVybiAoXG4gICAgdXJsTm9RdWVyeVxuICAgICAgLy8gZmlyc3Qgd2UgcmVwbGFjZSBhbnkgbm9uLWVuY29kZWQgYmFja3NsYXNoZXMgd2l0aCBmb3J3YXJkXG4gICAgICAvLyB0aGVuIG5vcm1hbGl6ZSByZXBlYXRlZCBmb3J3YXJkIHNsYXNoZXNcbiAgICAgIC5yZXBsYWNlKC9cXFxcL2csICcvJylcbiAgICAgIC5yZXBsYWNlKC9cXC9cXC8rL2csICcvJykgK1xuICAgICh1cmxQYXJ0c1sxXSA/IGA/JHt1cmxQYXJ0cy5zbGljZSgxKS5qb2luKCc/Jyl9YCA6ICcnKVxuICApXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkR2V0SW5pdGlhbFByb3BzPFxuICBDIGV4dGVuZHMgQmFzZUNvbnRleHQsXG4gIElQID0ge30sXG4gIFAgPSB7fSxcbj4oQXBwOiBOZXh0Q29tcG9uZW50VHlwZTxDLCBJUCwgUD4sIGN0eDogQyk6IFByb21pc2U8SVA+IHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAoQXBwLnByb3RvdHlwZT8uZ2V0SW5pdGlhbFByb3BzKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYFwiJHtnZXREaXNwbGF5TmFtZShcbiAgICAgICAgQXBwXG4gICAgICApfS5nZXRJbml0aWFsUHJvcHMoKVwiIGlzIGRlZmluZWQgYXMgYW4gaW5zdGFuY2UgbWV0aG9kIC0gdmlzaXQgaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZ2V0LWluaXRpYWwtcHJvcHMtYXMtYW4taW5zdGFuY2UtbWV0aG9kIGZvciBtb3JlIGluZm9ybWF0aW9uLmBcbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKVxuICAgIH1cbiAgfVxuICAvLyB3aGVuIGNhbGxlZCBmcm9tIF9hcHAgYGN0eGAgaXMgbmVzdGVkIGluIGBjdHhgXG4gIGNvbnN0IHJlcyA9IGN0eC5yZXMgfHwgKGN0eC5jdHggJiYgY3R4LmN0eC5yZXMpXG5cbiAgaWYgKCFBcHAuZ2V0SW5pdGlhbFByb3BzKSB7XG4gICAgaWYgKGN0eC5jdHggJiYgY3R4LkNvbXBvbmVudCkge1xuICAgICAgLy8gQHRzLWlnbm9yZSBwYWdlUHJvcHMgZGVmYXVsdFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGFnZVByb3BzOiBhd2FpdCBsb2FkR2V0SW5pdGlhbFByb3BzKGN0eC5Db21wb25lbnQsIGN0eC5jdHgpLFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge30gYXMgSVBcbiAgfVxuXG4gIGNvbnN0IHByb3BzID0gYXdhaXQgQXBwLmdldEluaXRpYWxQcm9wcyhjdHgpXG5cbiAgaWYgKHJlcyAmJiBpc1Jlc1NlbnQocmVzKSkge1xuICAgIHJldHVybiBwcm9wc1xuICB9XG5cbiAgaWYgKCFwcm9wcykge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBgXCIke2dldERpc3BsYXlOYW1lKFxuICAgICAgQXBwXG4gICAgKX0uZ2V0SW5pdGlhbFByb3BzKClcIiBzaG91bGQgcmVzb2x2ZSB0byBhbiBvYmplY3QuIEJ1dCBmb3VuZCBcIiR7cHJvcHN9XCIgaW5zdGVhZC5gXG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpXG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmIChPYmplY3Qua2V5cyhwcm9wcykubGVuZ3RoID09PSAwICYmICFjdHguY3R4KSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGAke2dldERpc3BsYXlOYW1lKFxuICAgICAgICAgIEFwcFxuICAgICAgICApfSByZXR1cm5lZCBhbiBlbXB0eSBvYmplY3QgZnJvbSBcXGBnZXRJbml0aWFsUHJvcHNcXGAuIFRoaXMgZGUtb3B0aW1pemVzIGFuZCBwcmV2ZW50cyBhdXRvbWF0aWMgc3RhdGljIG9wdGltaXphdGlvbi4gaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZW1wdHktb2JqZWN0LWdldEluaXRpYWxQcm9wc2BcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJvcHNcbn1cblxuZXhwb3J0IGNvbnN0IFNQID0gdHlwZW9mIHBlcmZvcm1hbmNlICE9PSAndW5kZWZpbmVkJ1xuZXhwb3J0IGNvbnN0IFNUID1cbiAgU1AgJiZcbiAgKFsnbWFyaycsICdtZWFzdXJlJywgJ2dldEVudHJpZXNCeU5hbWUnXSBhcyBjb25zdCkuZXZlcnkoXG4gICAgKG1ldGhvZCkgPT4gdHlwZW9mIHBlcmZvcm1hbmNlW21ldGhvZF0gPT09ICdmdW5jdGlvbidcbiAgKVxuXG5leHBvcnQgY2xhc3MgRGVjb2RlRXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuZXhwb3J0IGNsYXNzIE5vcm1hbGl6ZUVycm9yIGV4dGVuZHMgRXJyb3Ige31cbmV4cG9ydCBjbGFzcyBQYWdlTm90Rm91bmRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29kZTogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IocGFnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKVxuICAgIHRoaXMuY29kZSA9ICdFTk9FTlQnXG4gICAgdGhpcy5uYW1lID0gJ1BhZ2VOb3RGb3VuZEVycm9yJ1xuICAgIHRoaXMubWVzc2FnZSA9IGBDYW5ub3QgZmluZCBtb2R1bGUgZm9yIHBhZ2U6ICR7cGFnZX1gXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1pc3NpbmdTdGF0aWNQYWdlIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihwYWdlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKClcbiAgICB0aGlzLm1lc3NhZ2UgPSBgRmFpbGVkIHRvIGxvYWQgc3RhdGljIGZpbGUgZm9yIHBhZ2U6ICR7cGFnZX0gJHttZXNzYWdlfWBcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTWlkZGxld2FyZU5vdEZvdW5kRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvZGU6IHN0cmluZ1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpXG4gICAgdGhpcy5jb2RlID0gJ0VOT0VOVCdcbiAgICB0aGlzLm1lc3NhZ2UgPSBgQ2Fubm90IGZpbmQgdGhlIG1pZGRsZXdhcmUgbW9kdWxlYFxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FjaGVGcyB7XG4gIGV4aXN0c1N5bmM6IHR5cGVvZiBmcy5leGlzdHNTeW5jXG4gIHJlYWRGaWxlOiB0eXBlb2YgZnMucHJvbWlzZXMucmVhZEZpbGVcbiAgcmVhZEZpbGVTeW5jOiB0eXBlb2YgZnMucmVhZEZpbGVTeW5jXG4gIHdyaXRlRmlsZShmOiBzdHJpbmcsIGQ6IGFueSk6IFByb21pc2U8dm9pZD5cbiAgbWtkaXIoZGlyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQgfCBzdHJpbmc+XG4gIHN0YXQoZjogc3RyaW5nKTogUHJvbWlzZTx7IG10aW1lOiBEYXRlIH0+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnlFcnJvcihlcnJvcjogRXJyb3IpIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHsgbWVzc2FnZTogZXJyb3IubWVzc2FnZSwgc3RhY2s6IGVycm9yLnN0YWNrIH0pXG59XG4iXSwibmFtZXMiOlsiRGVjb2RlRXJyb3IiLCJNaWRkbGV3YXJlTm90Rm91bmRFcnJvciIsIk1pc3NpbmdTdGF0aWNQYWdlIiwiTm9ybWFsaXplRXJyb3IiLCJQYWdlTm90Rm91bmRFcnJvciIsIlNQIiwiU1QiLCJXRUJfVklUQUxTIiwiZXhlY09uY2UiLCJnZXREaXNwbGF5TmFtZSIsImdldExvY2F0aW9uT3JpZ2luIiwiZ2V0VVJMIiwiaXNBYnNvbHV0ZVVybCIsImlzUmVzU2VudCIsImxvYWRHZXRJbml0aWFsUHJvcHMiLCJub3JtYWxpemVSZXBlYXRlZFNsYXNoZXMiLCJzdHJpbmdpZnlFcnJvciIsImZuIiwidXNlZCIsInJlc3VsdCIsImFyZ3MiLCJBQlNPTFVURV9VUkxfUkVHRVgiLCJ1cmwiLCJ0ZXN0IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsInBvcnQiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJvcmlnaW4iLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJDb21wb25lbnQiLCJkaXNwbGF5TmFtZSIsIm5hbWUiLCJyZXMiLCJmaW5pc2hlZCIsImhlYWRlcnNTZW50IiwidXJsUGFydHMiLCJzcGxpdCIsInVybE5vUXVlcnkiLCJyZXBsYWNlIiwic2xpY2UiLCJqb2luIiwiQXBwIiwiY3R4IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwicHJvdG90eXBlIiwiZ2V0SW5pdGlhbFByb3BzIiwibWVzc2FnZSIsIkVycm9yIiwicGFnZVByb3BzIiwicHJvcHMiLCJPYmplY3QiLCJrZXlzIiwiY29uc29sZSIsIndhcm4iLCJwZXJmb3JtYW5jZSIsImV2ZXJ5IiwibWV0aG9kIiwiY29uc3RydWN0b3IiLCJwYWdlIiwiY29kZSIsImVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YWNrIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/utils.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/utils/error-once.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/utils/error-once.js ***!
|
||
\***************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"errorOnce\", ({\n enumerable: true,\n get: function() {\n return errorOnce;\n }\n}));\nlet errorOnce = (_)=>{};\nif (true) {\n const errors = new Set();\n errorOnce = (msg)=>{\n if (!errors.has(msg)) {\n console.error(msg);\n }\n errors.add(msg);\n };\n} //# sourceMappingURL=error-once.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvdXRpbHMvZXJyb3Itb25jZS5qcyIsIm1hcHBpbmdzIjoiOzs7OzZDQVdTQTs7O2VBQUFBOzs7QUFYVCxJQUFJQSxZQUFZLENBQUNDLEtBQWU7QUFDaEMsSUFBSUMsSUFBcUMsRUFBRTtJQUN6QyxNQUFNRyxTQUFTLElBQUlDO0lBQ25CTixZQUFZLENBQUNPO1FBQ1gsSUFBSSxDQUFDRixPQUFPRyxHQUFHLENBQUNELE1BQU07WUFDcEJFLFFBQVFDLEtBQUssQ0FBQ0g7UUFDaEI7UUFDQUYsT0FBT00sR0FBRyxDQUFDSjtJQUNiO0FBQ0YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvc2hhcmVkL2xpYi91dGlscy9lcnJvci1vbmNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImxldCBlcnJvck9uY2UgPSAoXzogc3RyaW5nKSA9PiB7fVxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgY29uc3QgZXJyb3JzID0gbmV3IFNldDxzdHJpbmc+KClcbiAgZXJyb3JPbmNlID0gKG1zZzogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCFlcnJvcnMuaGFzKG1zZykpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IobXNnKVxuICAgIH1cbiAgICBlcnJvcnMuYWRkKG1zZylcbiAgfVxufVxuXG5leHBvcnQgeyBlcnJvck9uY2UgfVxuIl0sIm5hbWVzIjpbImVycm9yT25jZSIsIl8iLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJlcnJvcnMiLCJTZXQiLCJtc2ciLCJoYXMiLCJjb25zb2xlIiwiZXJyb3IiLCJhZGQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/utils/error-once.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/utils/reflect-utils.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/utils/reflect-utils.js ***!
|
||
\******************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("// This regex will have fast negatives meaning valid identifiers may not pass\n// this test. However this is only used during static generation to provide hints\n// about why a page bailed out of some or all prerendering and we can use bracket notation\n// for example while `ಠ_ಠ` is a valid identifier it's ok to print `searchParams['ಠ_ಠ']`\n// even if this would have been fine too `searchParams.ಠ_ಠ`\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n describeHasCheckingStringProperty: function() {\n return describeHasCheckingStringProperty;\n },\n describeStringPropertyAccess: function() {\n return describeStringPropertyAccess;\n },\n wellKnownProperties: function() {\n return wellKnownProperties;\n }\n});\nconst isDefinitelyAValidIdentifier = /^[A-Za-z_$][A-Za-z0-9_$]*$/;\nfunction describeStringPropertyAccess(target, prop) {\n if (isDefinitelyAValidIdentifier.test(prop)) {\n return `\\`${target}.${prop}\\``;\n }\n return `\\`${target}[${JSON.stringify(prop)}]\\``;\n}\nfunction describeHasCheckingStringProperty(target, prop) {\n const stringifiedProp = JSON.stringify(prop);\n return `\\`Reflect.has(${target}, ${stringifiedProp})\\`, \\`${stringifiedProp} in ${target}\\`, or similar`;\n}\nconst wellKnownProperties = new Set([\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toString',\n 'valueOf',\n 'toLocaleString',\n // Promise prototype\n 'then',\n 'catch',\n 'finally',\n // React Promise extension\n 'status',\n // 'value',\n // 'error',\n // React introspection\n 'displayName',\n '_debugInfo',\n // Common tested properties\n 'toJSON',\n '$$typeof',\n '__esModule',\n // Tested by flight when checking for iterables\n '@@iterator'\n]); //# sourceMappingURL=reflect-utils.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvdXRpbHMvcmVmbGVjdC11dGlscy5qcyIsIm1hcHBpbmdzIjoiQUFBQSw2RUFBNkU7QUFDN0UsaUZBQWlGO0FBQ2pGLDBGQUEwRjtBQUMxRix1RkFBdUY7QUFDdkYsMkRBQTJEOzs7Ozs7Ozs7Ozs7O0lBVTNDQSxpQ0FBaUM7ZUFBakNBOztJQVBBQyw0QkFBNEI7ZUFBNUJBOztJQWVIQyxtQkFBbUI7ZUFBbkJBOzs7QUFqQmIsTUFBTUMsK0JBQStCO0FBRTlCLFNBQVNGLDZCQUE2QkcsTUFBYyxFQUFFQyxJQUFZO0lBQ3ZFLElBQUlGLDZCQUE2QkcsSUFBSSxDQUFDRCxPQUFPO1FBQzNDLE9BQU8sQ0FBQyxFQUFFLEVBQUVELE9BQU8sQ0FBQyxFQUFFQyxLQUFLLEVBQUUsQ0FBQztJQUNoQztJQUNBLE9BQU8sQ0FBQyxFQUFFLEVBQUVELE9BQU8sQ0FBQyxFQUFFRyxLQUFLQyxTQUFTLENBQUNILE1BQU0sR0FBRyxDQUFDO0FBQ2pEO0FBRU8sU0FBU0wsa0NBQ2RJLE1BQWMsRUFDZEMsSUFBWTtJQUVaLE1BQU1JLGtCQUFrQkYsS0FBS0MsU0FBUyxDQUFDSDtJQUN2QyxPQUFPLENBQUMsY0FBYyxFQUFFRCxPQUFPLEVBQUUsRUFBRUssZ0JBQWdCLE9BQU8sRUFBRUEsZ0JBQWdCLElBQUksRUFBRUwsT0FBTyxjQUFjLENBQUM7QUFDMUc7QUFFTyxNQUFNRixzQkFBc0IsSUFBSVEsSUFBSTtJQUN6QztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFFQSxvQkFBb0I7SUFDcEI7SUFDQTtJQUNBO0lBRUEsMEJBQTBCO0lBQzFCO0lBQ0EsV0FBVztJQUNYLFdBQVc7SUFFWCxzQkFBc0I7SUFDdEI7SUFDQTtJQUVBLDJCQUEyQjtJQUMzQjtJQUNBO0lBQ0E7SUFFQSwrQ0FBK0M7SUFDL0M7Q0FDRCIsInNvdXJjZXMiOlsiL1VzZXJzL3NyYy9zaGFyZWQvbGliL3V0aWxzL3JlZmxlY3QtdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyByZWdleCB3aWxsIGhhdmUgZmFzdCBuZWdhdGl2ZXMgbWVhbmluZyB2YWxpZCBpZGVudGlmaWVycyBtYXkgbm90IHBhc3Ncbi8vIHRoaXMgdGVzdC4gSG93ZXZlciB0aGlzIGlzIG9ubHkgdXNlZCBkdXJpbmcgc3RhdGljIGdlbmVyYXRpb24gdG8gcHJvdmlkZSBoaW50c1xuLy8gYWJvdXQgd2h5IGEgcGFnZSBiYWlsZWQgb3V0IG9mIHNvbWUgb3IgYWxsIHByZXJlbmRlcmluZyBhbmQgd2UgY2FuIHVzZSBicmFja2V0IG5vdGF0aW9uXG4vLyBmb3IgZXhhbXBsZSB3aGlsZSBg4LKgX+CyoGAgaXMgYSB2YWxpZCBpZGVudGlmaWVyIGl0J3Mgb2sgdG8gcHJpbnQgYHNlYXJjaFBhcmFtc1sn4LKgX+CyoCddYFxuLy8gZXZlbiBpZiB0aGlzIHdvdWxkIGhhdmUgYmVlbiBmaW5lIHRvbyBgc2VhcmNoUGFyYW1zLuCyoF/gsqBgXG5jb25zdCBpc0RlZmluaXRlbHlBVmFsaWRJZGVudGlmaWVyID0gL15bQS1aYS16XyRdW0EtWmEtejAtOV8kXSokL1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzY3JpYmVTdHJpbmdQcm9wZXJ0eUFjY2Vzcyh0YXJnZXQ6IHN0cmluZywgcHJvcDogc3RyaW5nKSB7XG4gIGlmIChpc0RlZmluaXRlbHlBVmFsaWRJZGVudGlmaWVyLnRlc3QocHJvcCkpIHtcbiAgICByZXR1cm4gYFxcYCR7dGFyZ2V0fS4ke3Byb3B9XFxgYFxuICB9XG4gIHJldHVybiBgXFxgJHt0YXJnZXR9WyR7SlNPTi5zdHJpbmdpZnkocHJvcCl9XVxcYGBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2NyaWJlSGFzQ2hlY2tpbmdTdHJpbmdQcm9wZXJ0eShcbiAgdGFyZ2V0OiBzdHJpbmcsXG4gIHByb3A6IHN0cmluZ1xuKSB7XG4gIGNvbnN0IHN0cmluZ2lmaWVkUHJvcCA9IEpTT04uc3RyaW5naWZ5KHByb3ApXG4gIHJldHVybiBgXFxgUmVmbGVjdC5oYXMoJHt0YXJnZXR9LCAke3N0cmluZ2lmaWVkUHJvcH0pXFxgLCBcXGAke3N0cmluZ2lmaWVkUHJvcH0gaW4gJHt0YXJnZXR9XFxgLCBvciBzaW1pbGFyYFxufVxuXG5leHBvcnQgY29uc3Qgd2VsbEtub3duUHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnaGFzT3duUHJvcGVydHknLFxuICAnaXNQcm90b3R5cGVPZicsXG4gICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsXG4gICd0b1N0cmluZycsXG4gICd2YWx1ZU9mJyxcbiAgJ3RvTG9jYWxlU3RyaW5nJyxcblxuICAvLyBQcm9taXNlIHByb3RvdHlwZVxuICAndGhlbicsXG4gICdjYXRjaCcsXG4gICdmaW5hbGx5JyxcblxuICAvLyBSZWFjdCBQcm9taXNlIGV4dGVuc2lvblxuICAnc3RhdHVzJyxcbiAgLy8gJ3ZhbHVlJyxcbiAgLy8gJ2Vycm9yJyxcblxuICAvLyBSZWFjdCBpbnRyb3NwZWN0aW9uXG4gICdkaXNwbGF5TmFtZScsXG4gICdfZGVidWdJbmZvJyxcblxuICAvLyBDb21tb24gdGVzdGVkIHByb3BlcnRpZXNcbiAgJ3RvSlNPTicsXG4gICckJHR5cGVvZicsXG4gICdfX2VzTW9kdWxlJyxcblxuICAvLyBUZXN0ZWQgYnkgZmxpZ2h0IHdoZW4gY2hlY2tpbmcgZm9yIGl0ZXJhYmxlc1xuICAnQEBpdGVyYXRvcicsXG5dKVxuIl0sIm5hbWVzIjpbImRlc2NyaWJlSGFzQ2hlY2tpbmdTdHJpbmdQcm9wZXJ0eSIsImRlc2NyaWJlU3RyaW5nUHJvcGVydHlBY2Nlc3MiLCJ3ZWxsS25vd25Qcm9wZXJ0aWVzIiwiaXNEZWZpbml0ZWx5QVZhbGlkSWRlbnRpZmllciIsInRhcmdldCIsInByb3AiLCJ0ZXN0IiwiSlNPTiIsInN0cmluZ2lmeSIsInN0cmluZ2lmaWVkUHJvcCIsIlNldCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/utils/reflect-utils.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/next/dist/shared/lib/utils/warn-once.js":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/utils/warn-once.js ***!
|
||
\**************************************************************/
|
||
/***/ ((__unused_webpack_module, exports) => {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"warnOnce\", ({\n enumerable: true,\n get: function() {\n return warnOnce;\n }\n}));\nlet warnOnce = (_)=>{};\nif (true) {\n const warnings = new Set();\n warnOnce = (msg)=>{\n if (!warnings.has(msg)) {\n console.warn(msg);\n }\n warnings.add(msg);\n };\n} //# sourceMappingURL=warn-once.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvdXRpbHMvd2Fybi1vbmNlLmpzIiwibWFwcGluZ3MiOiI7Ozs7NENBV1NBOzs7ZUFBQUE7OztBQVhULElBQUlBLFdBQVcsQ0FBQ0MsS0FBZTtBQUMvQixJQUFJQyxJQUFxQyxFQUFFO0lBQ3pDLE1BQU1HLFdBQVcsSUFBSUM7SUFDckJOLFdBQVcsQ0FBQ087UUFDVixJQUFJLENBQUNGLFNBQVNHLEdBQUcsQ0FBQ0QsTUFBTTtZQUN0QkUsUUFBUUMsSUFBSSxDQUFDSDtRQUNmO1FBQ0FGLFNBQVNNLEdBQUcsQ0FBQ0o7SUFDZjtBQUNGIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL3NoYXJlZC9saWIvdXRpbHMvd2Fybi1vbmNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImxldCB3YXJuT25jZSA9IChfOiBzdHJpbmcpID0+IHt9XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBjb25zdCB3YXJuaW5ncyA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIHdhcm5PbmNlID0gKG1zZzogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCF3YXJuaW5ncy5oYXMobXNnKSkge1xuICAgICAgY29uc29sZS53YXJuKG1zZylcbiAgICB9XG4gICAgd2FybmluZ3MuYWRkKG1zZylcbiAgfVxufVxuXG5leHBvcnQgeyB3YXJuT25jZSB9XG4iXSwibmFtZXMiOlsid2Fybk9uY2UiLCJfIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwid2FybmluZ3MiLCJTZXQiLCJtc2ciLCJoYXMiLCJjb25zb2xlIiwid2FybiIsImFkZCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/utils/warn-once.js\n");
|
||
|
||
/***/ })
|
||
|
||
};
|
||
; |