You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
NextWeb/.next/static/webpack/_app-pages-browser_app_comp...

22 lines
293 KiB
JavaScript

"use strict";
/*
* ATTENTION: An "eval-source-map" devtool has been used.
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
self["webpackHotUpdate_N_E"]("_app-pages-browser_app_components_settings_tsx",{
/***/ "(app-pages-browser)/./app/components/settings.tsx":
/*!*************************************!*\
!*** ./app/components/settings.tsx ***!
\*************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Settings: function() { return /* binding */ Settings; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _settings_module_scss__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./settings.module.scss */ \"(app-pages-browser)/./app/components/settings.module.scss\");\n/* harmony import */ var _settings_module_scss__WEBPACK_IMPORTED_MODULE_34___default = /*#__PURE__*/__webpack_require__.n(_settings_module_scss__WEBPACK_IMPORTED_MODULE_34__);\n/* harmony import */ var _icons_reload_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/reload.svg */ \"(app-pages-browser)/./app/icons/reload.svg\");\n/* harmony import */ var _icons_add_svg__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/add.svg */ \"(app-pages-browser)/./app/icons/add.svg\");\n/* harmony import */ var _icons_close_svg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons/close.svg */ \"(app-pages-browser)/./app/icons/close.svg\");\n/* harmony import */ var _icons_copy_svg__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../icons/copy.svg */ \"(app-pages-browser)/./app/icons/copy.svg\");\n/* harmony import */ var _icons_clear_svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../icons/clear.svg */ \"(app-pages-browser)/./app/icons/clear.svg\");\n/* harmony import */ var _icons_three_dots_svg__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../icons/three-dots.svg */ \"(app-pages-browser)/./app/icons/three-dots.svg\");\n/* harmony import */ var _icons_edit_svg__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../icons/edit.svg */ \"(app-pages-browser)/./app/icons/edit.svg\");\n/* harmony import */ var _icons_fire_svg__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../icons/fire.svg */ \"(app-pages-browser)/./app/icons/fire.svg\");\n/* harmony import */ var _icons_eye_svg__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../icons/eye.svg */ \"(app-pages-browser)/./app/icons/eye.svg\");\n/* harmony import */ var _icons_download_svg__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../icons/download.svg */ \"(app-pages-browser)/./app/icons/download.svg\");\n/* harmony import */ var _icons_upload_svg__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../icons/upload.svg */ \"(app-pages-browser)/./app/icons/upload.svg\");\n/* harmony import */ var _icons_confirm_svg__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../icons/confirm.svg */ \"(app-pages-browser)/./app/icons/confirm.svg\");\n/* harmony import */ var _icons_connection_svg__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../icons/connection.svg */ \"(app-pages-browser)/./app/icons/connection.svg\");\n/* harmony import */ var _icons_cloud_success_svg__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../icons/cloud-success.svg */ \"(app-pages-browser)/./app/icons/cloud-success.svg\");\n/* harmony import */ var _icons_cloud_fail_svg__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../icons/cloud-fail.svg */ \"(app-pages-browser)/./app/icons/cloud-fail.svg\");\n/* harmony import */ var _utils_auth_settings_events__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../utils/auth-settings-events */ \"(app-pages-browser)/./app/utils/auth-settings-events.ts\");\n/* harmony import */ var _ui_lib__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./ui-lib */ \"(app-pages-browser)/./app/components/ui-lib.tsx\");\n/* harmony import */ var _model_config__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./model-config */ \"(app-pages-browser)/./app/components/model-config.tsx\");\n/* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./button */ \"(app-pages-browser)/./app/components/button.tsx\");\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../store */ \"(app-pages-browser)/./app/store/index.ts\");\n/* harmony import */ var _locales__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../locales */ \"(app-pages-browser)/./app/locales/index.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../utils */ \"(app-pages-browser)/./app/utils.ts\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../constant */ \"(app-pages-browser)/./app/constant.ts\");\n/* harmony import */ var _store_prompt__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../store/prompt */ \"(app-pages-browser)/./app/store/prompt.ts\");\n/* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./error */ \"(app-pages-browser)/./app/components/error.tsx\");\n/* harmony import */ var _input_range__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./input-range */ \"(app-pages-browser)/./app/components/input-range.tsx\");\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! react-router-dom */ \"(app-pages-browser)/./node_modules/react-router/dist/index.js\");\n/* harmony import */ var _emoji__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./emoji */ \"(app-pages-browser)/./app/components/emoji.tsx\");\n/* harmony import */ var _config_client__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../config/client */ \"(app-pages-browser)/./app/config/client.ts\");\n/* harmony import */ var _store_sync__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../store/sync */ \"(app-pages-browser)/./app/store/sync.ts\");\n/* harmony import */ var nanoid__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! nanoid */ \"(app-pages-browser)/./node_modules/nanoid/index.browser.js\");\n/* harmony import */ var _store_mask__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../store/mask */ \"(app-pages-browser)/./app/store/mask.ts\");\n/* harmony import */ var _utils_cloud__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ../utils/cloud */ \"(app-pages-browser)/./app/utils/cloud/index.ts\");\n\nvar _s = $RefreshSig$(), _s1 = $RefreshSig$(), _s2 = $RefreshSig$(), _s3 = $RefreshSig$(), _s4 = $RefreshSig$(), _s5 = $RefreshSig$(), _s6 = $RefreshSig$();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction EditPromptModal(props) {\n _s();\n const promptStore = (0,_store_prompt__WEBPACK_IMPORTED_MODULE_26__.usePromptStore)();\n const prompt = promptStore.get(props.id);\n return prompt ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"modal-mask\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.Modal, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Prompt.EditModal.Title,\n onClose: props.onClose,\n actions: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_20__.IconButton, {\n onClick: props.onClose,\n text: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].UI.Confirm,\n bordered: true\n }, \"\", false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 102,\n columnNumber: 11\n }, void 0)\n ],\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_settings_module_scss__WEBPACK_IMPORTED_MODULE_34___default()[\"edit-prompt-modal\"]),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: prompt.title,\n readOnly: !prompt.isUser,\n className: (_settings_module_scss__WEBPACK_IMPORTED_MODULE_34___default()[\"edit-prompt-title\"]),\n onInput: (e)=>promptStore.updatePrompt(props.id, (prompt)=>prompt.title = e.currentTarget.value)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 111,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.Input, {\n value: prompt.content,\n readOnly: !prompt.isUser,\n className: (_settings_module_scss__WEBPACK_IMPORTED_MODULE_34___default()[\"edit-prompt-content\"]),\n rows: 10,\n onInput: (e)=>promptStore.updatePrompt(props.id, (prompt)=>prompt.content = e.currentTarget.value)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 123,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 110,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 98,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 97,\n columnNumber: 5\n }, this) : null;\n}\n_s(EditPromptModal, \"EzYblIzMAFxPJK+yzvwKHzO38X8=\", false, function() {\n return [\n _store_prompt__WEBPACK_IMPORTED_MODULE_26__.usePromptStore\n ];\n});\n_c = EditPromptModal;\nfunction UserPromptModal(props) {\n _s1();\n const promptStore = (0,_store_prompt__WEBPACK_IMPORTED_MODULE_26__.usePromptStore)();\n const userPrompts = promptStore.getUserPrompts();\n const builtinPrompts = _store_prompt__WEBPACK_IMPORTED_MODULE_26__.SearchService.builtinPrompts;\n const allPrompts = userPrompts.concat(builtinPrompts);\n const [searchInput, setSearchInput] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [searchPrompts, setSearchPrompts] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const prompts = searchInput.length > 0 ? searchPrompts : allPrompts;\n const [editingPromptId, setEditingPromptId] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)();\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (searchInput.length > 0) {\n const searchResult = _store_prompt__WEBPACK_IMPORTED_MODULE_26__.SearchService.search(searchInput);\n setSearchPrompts(searchResult);\n } else {\n setSearchPrompts([]);\n }\n }, [\n searchInput\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"modal-mask\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.Modal, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Prompt.Modal.Title,\n onClose: ()=>{\n var _props_onClose;\n return (_props_onClose = props.onClose) === null || _props_onClose === void 0 ? void 0 : _props_onClose.call(props);\n },\n actions: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_20__.IconButton, {\n onClick: ()=>{\n const promptId = promptStore.add({\n id: (0,nanoid__WEBPACK_IMPORTED_MODULE_35__.nanoid)(),\n createdAt: Date.now(),\n title: \"Empty Prompt\",\n content: \"Empty Prompt Content\"\n });\n setEditingPromptId(promptId);\n },\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_add_svg__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 178,\n columnNumber: 19\n }, void 0),\n bordered: true,\n text: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Prompt.Modal.Add\n }, \"add\", false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 167,\n columnNumber: 11\n }, void 0)\n ],\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_settings_module_scss__WEBPACK_IMPORTED_MODULE_34___default()[\"user-prompt-modal\"]),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n className: (_settings_module_scss__WEBPACK_IMPORTED_MODULE_34___default()[\"user-prompt-search\"]),\n placeholder: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Prompt.Modal.Search,\n value: searchInput,\n onInput: (e)=>setSearchInput(e.currentTarget.value)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 185,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_settings_module_scss__WEBPACK_IMPORTED_MODULE_34___default()[\"user-prompt-list\"]),\n children: prompts.map((v, _)=>/*#__PURE__*/ {\n var _v_id;\n return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_settings_module_scss__WEBPACK_IMPORTED_MODULE_34___default()[\"user-prompt-item\"]),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_settings_module_scss__WEBPACK_IMPORTED_MODULE_34___default()[\"user-prompt-header\"]),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_settings_module_scss__WEBPACK_IMPORTED_MODULE_34___default()[\"user-prompt-title\"]),\n children: v.title\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 197,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_settings_module_scss__WEBPACK_IMPORTED_MODULE_34___default()[\"user-prompt-content\"]) + \" one-line\",\n children: v.content\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 198,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 196,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_settings_module_scss__WEBPACK_IMPORTED_MODULE_34___default()[\"user-prompt-buttons\"]),\n children: [\n v.isUser && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_20__.IconButton, {\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_clear_svg__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 206,\n columnNumber: 29\n }, void 0),\n className: (_settings_module_scss__WEBPACK_IMPORTED_MODULE_34___default()[\"user-prompt-button\"]),\n onClick: ()=>promptStore.remove(v.id)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 205,\n columnNumber: 21\n }, this),\n v.isUser ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_20__.IconButton, {\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_edit_svg__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 213,\n columnNumber: 29\n }, void 0),\n className: (_settings_module_scss__WEBPACK_IMPORTED_MODULE_34___default()[\"user-prompt-button\"]),\n onClick: ()=>setEditingPromptId(v.id)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 212,\n columnNumber: 21\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_20__.IconButton, {\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_eye_svg__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 219,\n columnNumber: 29\n }, void 0),\n className: (_settings_module_scss__WEBPACK_IMPORTED_MODULE_34___default()[\"user-prompt-button\"]),\n onClick: ()=>setEditingPromptId(v.id)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 218,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_20__.IconButton, {\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_copy_svg__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 225,\n columnNumber: 27\n }, void 0),\n className: (_settings_module_scss__WEBPACK_IMPORTED_MODULE_34___default()[\"user-prompt-button\"]),\n onClick: ()=>(0,_utils__WEBPACK_IMPORTED_MODULE_23__.copyToClipboard)(v.content)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 224,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 203,\n columnNumber: 17\n }, this)\n ]\n }, (_v_id = v.id) !== null && _v_id !== void 0 ? _v_id : v.title, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 195,\n columnNumber: 15\n }, this);\n })\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 193,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 184,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 163,\n columnNumber: 7\n }, this),\n editingPromptId !== undefined && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(EditPromptModal, {\n id: editingPromptId,\n onClose: ()=>setEditingPromptId(undefined)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 237,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 162,\n columnNumber: 5\n }, this);\n}\n_s1(UserPromptModal, \"j8e7IC+Qorb6vYwwV+saiLvwdt4=\", false, function() {\n return [\n _store_prompt__WEBPACK_IMPORTED_MODULE_26__.usePromptStore\n ];\n});\n_c1 = UserPromptModal;\nfunction DangerItems() {\n _s2();\n const chatStore = (0,_store__WEBPACK_IMPORTED_MODULE_21__.useChatStore)();\n const appConfig = (0,_store__WEBPACK_IMPORTED_MODULE_21__.useAppConfig)();\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.List, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Danger.Reset.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Danger.Reset.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_20__.IconButton, {\n aria: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Danger.Reset.Title,\n text: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Danger.Reset.Action,\n onClick: async ()=>{\n if (await (0,_ui_lib__WEBPACK_IMPORTED_MODULE_18__.showConfirm)(_locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Danger.Reset.Confirm)) {\n appConfig.reset();\n }\n },\n type: \"danger\"\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 256,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 252,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Danger.Clear.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Danger.Clear.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_20__.IconButton, {\n aria: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Danger.Clear.Title,\n text: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Danger.Clear.Action,\n onClick: async ()=>{\n if (await (0,_ui_lib__WEBPACK_IMPORTED_MODULE_18__.showConfirm)(_locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Danger.Clear.Confirm)) {\n chatStore.clearAllData();\n }\n },\n type: \"danger\"\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 271,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 267,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 251,\n columnNumber: 5\n }, this);\n}\n_s2(DangerItems, \"bujEX65sRm+zZElj4DteQrQ/PHM=\", false, function() {\n return [\n _store__WEBPACK_IMPORTED_MODULE_21__.useChatStore,\n _store__WEBPACK_IMPORTED_MODULE_21__.useAppConfig\n ];\n});\n_c2 = DangerItems;\nfunction CheckButton() {\n _s3();\n const syncStore = (0,_store_sync__WEBPACK_IMPORTED_MODULE_31__.useSyncStore)();\n const couldCheck = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n return syncStore.cloudSync();\n }, [\n syncStore\n ]);\n const [checkState, setCheckState] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"none\");\n async function check() {\n setCheckState(\"checking\");\n const valid = await syncStore.check();\n setCheckState(valid ? \"success\" : \"failed\");\n }\n if (!couldCheck) return null;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_20__.IconButton, {\n text: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Sync.Config.Modal.Check,\n bordered: true,\n onClick: check,\n icon: checkState === \"none\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_connection_svg__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 312,\n columnNumber: 11\n }, void 0) : checkState === \"checking\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_three_dots_svg__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 314,\n columnNumber: 11\n }, void 0) : checkState === \"success\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_cloud_success_svg__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 316,\n columnNumber: 11\n }, void 0) : checkState === \"failed\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_cloud_fail_svg__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 318,\n columnNumber: 11\n }, void 0) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_connection_svg__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 320,\n columnNumber: 11\n }, void 0)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 306,\n columnNumber: 5\n }, this);\n}\n_s3(CheckButton, \"/6RI3yEungwoEAZn8dbo3xLpAIg=\", false, function() {\n return [\n _store_sync__WEBPACK_IMPORTED_MODULE_31__.useSyncStore\n ];\n});\n_c3 = CheckButton;\nfunction SyncConfigModal(props) {\n _s4();\n const syncStore = (0,_store_sync__WEBPACK_IMPORTED_MODULE_31__.useSyncStore)();\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"modal-mask\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.Modal, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Sync.Config.Modal.Title,\n onClose: ()=>{\n var _props_onClose;\n return (_props_onClose = props.onClose) === null || _props_onClose === void 0 ? void 0 : _props_onClose.call(props);\n },\n actions: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(CheckButton, {}, \"check\", false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 336,\n columnNumber: 11\n }, void 0),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_20__.IconButton, {\n onClick: props.onClose,\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_confirm_svg__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 340,\n columnNumber: 19\n }, void 0),\n bordered: true,\n text: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].UI.Confirm\n }, \"confirm\", false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 337,\n columnNumber: 11\n }, void 0)\n ],\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.List, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Sync.Config.SyncType.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Sync.Config.SyncType.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"select\", {\n value: syncStore.provider,\n onChange: (e)=>{\n syncStore.update((config)=>config.provider = e.target.value);\n },\n children: Object.entries(_utils_cloud__WEBPACK_IMPORTED_MODULE_33__.ProviderType).map((param)=>{\n let [k, v] = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: v,\n children: k\n }, k, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 361,\n columnNumber: 17\n }, this);\n })\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 351,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 347,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Sync.Config.Proxy.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Sync.Config.Proxy.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"checkbox\",\n checked: syncStore.useProxy,\n onChange: (e)=>{\n syncStore.update((config)=>config.useProxy = e.currentTarget.checked);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 372,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 368,\n columnNumber: 11\n }, this),\n syncStore.useProxy ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Sync.Config.ProxyUrl.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Sync.Config.ProxyUrl.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: syncStore.proxyUrl,\n onChange: (e)=>{\n syncStore.update((config)=>config.proxyUrl = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 387,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 383,\n columnNumber: 13\n }, this) : null\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 346,\n columnNumber: 9\n }, this),\n syncStore.provider === _utils_cloud__WEBPACK_IMPORTED_MODULE_33__.ProviderType.WebDAV && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.List, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Sync.Config.WebDav.Endpoint,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: syncStore.webdav.endpoint,\n onChange: (e)=>{\n syncStore.update((config)=>config.webdav.endpoint = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 404,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 403,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Sync.Config.WebDav.UserName,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: syncStore.webdav.username,\n onChange: (e)=>{\n syncStore.update((config)=>config.webdav.username = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 417,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 416,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Sync.Config.WebDav.Password,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.PasswordInput, {\n value: syncStore.webdav.password,\n onChange: (e)=>{\n syncStore.update((config)=>config.webdav.password = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 429,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 428,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 402,\n columnNumber: 13\n }, this)\n }, void 0, false),\n syncStore.provider === _utils_cloud__WEBPACK_IMPORTED_MODULE_33__.ProviderType.UpStash && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.List, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Sync.Config.UpStash.Endpoint,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: syncStore.upstash.endpoint,\n onChange: (e)=>{\n syncStore.update((config)=>config.upstash.endpoint = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 446,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 445,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Sync.Config.UpStash.UserName,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: syncStore.upstash.username,\n placeholder: _constant__WEBPACK_IMPORTED_MODULE_25__.STORAGE_KEY,\n onChange: (e)=>{\n syncStore.update((config)=>config.upstash.username = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 459,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 458,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Sync.Config.UpStash.Password,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.PasswordInput, {\n value: syncStore.upstash.apiKey,\n onChange: (e)=>{\n syncStore.update((config)=>config.upstash.apiKey = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 472,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 471,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 444,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 332,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 331,\n columnNumber: 5\n }, this);\n}\n_s4(SyncConfigModal, \"7LGHNOh5zyQVSbzbR8YwVjAXtoY=\", false, function() {\n return [\n _store_sync__WEBPACK_IMPORTED_MODULE_31__.useSyncStore\n ];\n});\n_c4 = SyncConfigModal;\nfunction SyncItems() {\n _s5();\n const syncStore = (0,_store_sync__WEBPACK_IMPORTED_MODULE_31__.useSyncStore)();\n const chatStore = (0,_store__WEBPACK_IMPORTED_MODULE_21__.useChatStore)();\n const promptStore = (0,_store_prompt__WEBPACK_IMPORTED_MODULE_26__.usePromptStore)();\n const maskStore = (0,_store_mask__WEBPACK_IMPORTED_MODULE_32__.useMaskStore)();\n const couldSync = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n return syncStore.cloudSync();\n }, [\n syncStore\n ]);\n const [showSyncConfigModal, setShowSyncConfigModal] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const stateOverview = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n const sessions = chatStore.sessions;\n const messageCount = sessions.reduce((p, c)=>p + c.messages.length, 0);\n return {\n chat: sessions.length,\n message: messageCount,\n prompt: Object.keys(promptStore.prompts).length,\n mask: Object.keys(maskStore.masks).length\n };\n }, [\n chatStore.sessions,\n maskStore.masks,\n promptStore.prompts\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.List, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Sync.LocalState,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Sync.Overview(stateOverview),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n display: \"flex\"\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_20__.IconButton, {\n aria: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Sync.LocalState + _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].UI.Export,\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_upload_svg__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 521,\n columnNumber: 21\n }, void 0),\n text: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].UI.Export,\n onClick: ()=>{\n syncStore.export();\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 519,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_20__.IconButton, {\n aria: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Sync.LocalState + _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].UI.Import,\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_download_svg__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 529,\n columnNumber: 21\n }, void 0),\n text: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].UI.Import,\n onClick: ()=>{\n syncStore.import();\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 527,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 518,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 514,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 513,\n columnNumber: 7\n }, this),\n showSyncConfigModal && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SyncConfigModal, {\n onClose: ()=>setShowSyncConfigModal(false)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 540,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true);\n}\n_s5(SyncItems, \"nX5YTDzhgMuya10UCPA20+lQ5Uw=\", false, function() {\n return [\n _store_sync__WEBPACK_IMPORTED_MODULE_31__.useSyncStore,\n _store__WEBPACK_IMPORTED_MODULE_21__.useChatStore,\n _store_prompt__WEBPACK_IMPORTED_MODULE_26__.usePromptStore,\n _store_mask__WEBPACK_IMPORTED_MODULE_32__.useMaskStore\n ];\n});\n_c5 = SyncItems;\nfunction Settings() {\n var _getClientConfig;\n _s6();\n const navigate = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_36__.useNavigate)();\n const [showEmojiPicker, setShowEmojiPicker] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const config = (0,_store__WEBPACK_IMPORTED_MODULE_21__.useAppConfig)();\n const updateConfig = config.update;\n const updateStore = (0,_store__WEBPACK_IMPORTED_MODULE_21__.useUpdateStore)();\n const [checkingUpdate, setCheckingUpdate] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const currentVersion = updateStore.formatVersion(updateStore.version);\n const remoteId = updateStore.formatVersion(updateStore.remoteVersion);\n const hasNewVersion = (0,_utils__WEBPACK_IMPORTED_MODULE_23__.semverCompare)(currentVersion, remoteId) === -1;\n const updateUrl = ((_getClientConfig = (0,_config_client__WEBPACK_IMPORTED_MODULE_30__.getClientConfig)()) === null || _getClientConfig === void 0 ? void 0 : _getClientConfig.isApp) ? _constant__WEBPACK_IMPORTED_MODULE_25__.RELEASE_URL : _constant__WEBPACK_IMPORTED_MODULE_25__.UPDATE_URL;\n function checkUpdate() {\n let force = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;\n setCheckingUpdate(true);\n updateStore.getLatestVersion(force).then(()=>{\n setCheckingUpdate(false);\n });\n console.log(\"[Update] local version \", updateStore.version);\n console.log(\"[Update] remote version \", updateStore.remoteVersion);\n }\n const accessStore = (0,_store__WEBPACK_IMPORTED_MODULE_21__.useAccessStore)();\n const shouldHideBalanceQuery = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n const isOpenAiUrl = accessStore.openaiUrl.includes(_constant__WEBPACK_IMPORTED_MODULE_25__.OPENAI_BASE_URL);\n return accessStore.hideBalanceQuery || isOpenAiUrl || accessStore.provider === _constant__WEBPACK_IMPORTED_MODULE_25__.ServiceProvider.Azure;\n }, [\n accessStore.hideBalanceQuery,\n accessStore.openaiUrl,\n accessStore.provider\n ]);\n const usage = {\n used: updateStore.used,\n subscription: updateStore.subscription\n };\n const [loadingUsage, setLoadingUsage] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n function checkUsage() {\n let force = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;\n if (shouldHideBalanceQuery) {\n return;\n }\n setLoadingUsage(true);\n updateStore.updateUsage(force).finally(()=>{\n setLoadingUsage(false);\n });\n }\n const enabledAccessControl = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>accessStore.enabledAccessControl(), // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n const promptStore = (0,_store_prompt__WEBPACK_IMPORTED_MODULE_26__.usePromptStore)();\n const builtinCount = _store_prompt__WEBPACK_IMPORTED_MODULE_26__.SearchService.count.builtin;\n var _promptStore_getUserPrompts_length;\n const customCount = (_promptStore_getUserPrompts_length = promptStore.getUserPrompts().length) !== null && _promptStore_getUserPrompts_length !== void 0 ? _promptStore_getUserPrompts_length : 0;\n const [shouldShowPromptModal, setShowPromptModal] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const showUsage = accessStore.isAuthorized();\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n // checks per minutes\n checkUpdate();\n showUsage && checkUsage();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const keydownEvent = (e)=>{\n if (e.key === \"Escape\") {\n navigate(_constant__WEBPACK_IMPORTED_MODULE_25__.Path.Home);\n }\n };\n if (clientConfig === null || clientConfig === void 0 ? void 0 : clientConfig.isApp) {\n // Force to set custom endpoint to true if it's app\n accessStore.update((state)=>{\n state.useCustomConfig = true;\n });\n }\n document.addEventListener(\"keydown\", keydownEvent);\n return ()=>{\n document.removeEventListener(\"keydown\", keydownEvent);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n const clientConfig = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>(0,_config_client__WEBPACK_IMPORTED_MODULE_30__.getClientConfig)(), []);\n const showAccessCode = enabledAccessControl && !(clientConfig === null || clientConfig === void 0 ? void 0 : clientConfig.isApp);\n const accessCodeComponent = showAccessCode && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.AccessCode.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.AccessCode.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.PasswordInput, {\n value: accessStore.accessCode,\n type: \"text\",\n placeholder: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.AccessCode.Placeholder,\n onChange: (e)=>{\n accessStore.update((access)=>access.accessCode = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 646,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 642,\n columnNumber: 5\n }, this);\n const saasStartComponent = /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n className: (_settings_module_scss__WEBPACK_IMPORTED_MODULE_34___default()[\"subtitle-button\"]),\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.SaasStart.Title + \"\".concat(_locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.SaasStart.Label),\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.SaasStart.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_20__.IconButton, {\n aria: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.SaasStart.Title + _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.SaasStart.ChatNow,\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_fire_svg__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 673,\n columnNumber: 15\n }, void 0),\n type: \"primary\",\n text: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.SaasStart.ChatNow,\n onClick: ()=>{\n (0,_utils_auth_settings_events__WEBPACK_IMPORTED_MODULE_17__.trackSettingsPageGuideToCPaymentClick)();\n window.location.href = _constant__WEBPACK_IMPORTED_MODULE_25__.SAAS_CHAT_URL;\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 668,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 660,\n columnNumber: 5\n }, this);\n const useCustomConfigComponent = !(clientConfig === null || clientConfig === void 0 ? void 0 : clientConfig.isApp) && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.CustomEndpoint.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.CustomEndpoint.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.CustomEndpoint.Title,\n type: \"checkbox\",\n checked: accessStore.useCustomConfig,\n onChange: (e)=>accessStore.update((access)=>access.useCustomConfig = e.currentTarget.checked)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 690,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 686,\n columnNumber: 7\n }, this);\n const openAIConfigComponent = accessStore.provider === _constant__WEBPACK_IMPORTED_MODULE_25__.ServiceProvider.OpenAI && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.OpenAI.Endpoint.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.OpenAI.Endpoint.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.OpenAI.Endpoint.Title,\n type: \"text\",\n value: accessStore.openaiUrl,\n placeholder: _constant__WEBPACK_IMPORTED_MODULE_25__.OPENAI_BASE_URL,\n onChange: (e)=>accessStore.update((access)=>access.openaiUrl = e.currentTarget.value)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 710,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 706,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.OpenAI.ApiKey.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.OpenAI.ApiKey.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.PasswordInput, {\n aria: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.ShowPassword,\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.OpenAI.ApiKey.Title,\n value: accessStore.openaiApiKey,\n type: \"text\",\n placeholder: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.OpenAI.ApiKey.Placeholder,\n onChange: (e)=>{\n accessStore.update((access)=>access.openaiApiKey = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 726,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 722,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true);\n const azureConfigComponent = accessStore.provider === _constant__WEBPACK_IMPORTED_MODULE_25__.ServiceProvider.Azure && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Azure.Endpoint.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Azure.Endpoint.SubTitle + _constant__WEBPACK_IMPORTED_MODULE_25__.Azure.ExampleEndpoint,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Azure.Endpoint.Title,\n type: \"text\",\n value: accessStore.azureUrl,\n placeholder: _constant__WEBPACK_IMPORTED_MODULE_25__.Azure.ExampleEndpoint,\n onChange: (e)=>accessStore.update((access)=>access.azureUrl = e.currentTarget.value)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 751,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 745,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Azure.ApiKey.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Azure.ApiKey.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.PasswordInput, {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Azure.ApiKey.Title,\n value: accessStore.azureApiKey,\n type: \"text\",\n placeholder: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Azure.ApiKey.Placeholder,\n onChange: (e)=>{\n accessStore.update((access)=>access.azureApiKey = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 767,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 763,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Azure.ApiVerion.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Azure.ApiVerion.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Azure.ApiVerion.Title,\n type: \"text\",\n value: accessStore.azureApiVersion,\n placeholder: \"2023-08-01-preview\",\n onChange: (e)=>accessStore.update((access)=>access.azureApiVersion = e.currentTarget.value)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 783,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 779,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true);\n const googleConfigComponent = accessStore.provider === _constant__WEBPACK_IMPORTED_MODULE_25__.ServiceProvider.Google && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Google.Endpoint.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Google.Endpoint.SubTitle + _constant__WEBPACK_IMPORTED_MODULE_25__.Google.ExampleEndpoint,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Google.Endpoint.Title,\n type: \"text\",\n value: accessStore.googleUrl,\n placeholder: _constant__WEBPACK_IMPORTED_MODULE_25__.Google.ExampleEndpoint,\n onChange: (e)=>accessStore.update((access)=>access.googleUrl = e.currentTarget.value)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 808,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 801,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Google.ApiKey.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Google.ApiKey.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.PasswordInput, {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Google.ApiKey.Title,\n value: accessStore.googleApiKey,\n type: \"text\",\n placeholder: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Google.ApiKey.Placeholder,\n onChange: (e)=>{\n accessStore.update((access)=>access.googleApiKey = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 824,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 820,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Google.ApiVersion.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Google.ApiVersion.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Google.ApiVersion.Title,\n type: \"text\",\n value: accessStore.googleApiVersion,\n placeholder: \"2023-08-01-preview\",\n onChange: (e)=>accessStore.update((access)=>access.googleApiVersion = e.currentTarget.value)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 840,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 836,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Google.GoogleSafetySettings.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Google.GoogleSafetySettings.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.Select, {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Google.GoogleSafetySettings.Title,\n value: accessStore.googleSafetySettings,\n onChange: (e)=>{\n accessStore.update((access)=>access.googleSafetySettings = e.target.value);\n },\n children: Object.entries(_constant__WEBPACK_IMPORTED_MODULE_25__.GoogleSafetySettingsThreshold).map((param)=>{\n let [k, v] = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: v,\n children: k\n }, k, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 868,\n columnNumber: 13\n }, this);\n })\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 856,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 852,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true);\n const anthropicConfigComponent = accessStore.provider === _constant__WEBPACK_IMPORTED_MODULE_25__.ServiceProvider.Anthropic && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Anthropic.Endpoint.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Anthropic.Endpoint.SubTitle + _constant__WEBPACK_IMPORTED_MODULE_25__.Anthropic.ExampleEndpoint,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Anthropic.Endpoint.Title,\n type: \"text\",\n value: accessStore.anthropicUrl,\n placeholder: _constant__WEBPACK_IMPORTED_MODULE_25__.Anthropic.ExampleEndpoint,\n onChange: (e)=>accessStore.update((access)=>access.anthropicUrl = e.currentTarget.value)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 887,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 880,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Anthropic.ApiKey.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Anthropic.ApiKey.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.PasswordInput, {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Anthropic.ApiKey.Title,\n value: accessStore.anthropicApiKey,\n type: \"text\",\n placeholder: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Anthropic.ApiKey.Placeholder,\n onChange: (e)=>{\n accessStore.update((access)=>access.anthropicApiKey = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 903,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 899,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Anthropic.ApiVerion.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Anthropic.ApiVerion.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Anthropic.ApiVerion.Title,\n type: \"text\",\n value: accessStore.anthropicApiVersion,\n placeholder: _constant__WEBPACK_IMPORTED_MODULE_25__.Anthropic.Vision,\n onChange: (e)=>accessStore.update((access)=>access.anthropicApiVersion = e.currentTarget.value)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 919,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 915,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true);\n const baiduConfigComponent = accessStore.provider === _constant__WEBPACK_IMPORTED_MODULE_25__.ServiceProvider.Baidu && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Baidu.Endpoint.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Baidu.Endpoint.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Baidu.Endpoint.Title,\n type: \"text\",\n value: accessStore.baiduUrl,\n placeholder: _constant__WEBPACK_IMPORTED_MODULE_25__.Baidu.ExampleEndpoint,\n onChange: (e)=>accessStore.update((access)=>access.baiduUrl = e.currentTarget.value)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 941,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 937,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Baidu.ApiKey.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Baidu.ApiKey.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.PasswordInput, {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Baidu.ApiKey.Title,\n value: accessStore.baiduApiKey,\n type: \"text\",\n placeholder: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Baidu.ApiKey.Placeholder,\n onChange: (e)=>{\n accessStore.update((access)=>access.baiduApiKey = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 957,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 953,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Baidu.SecretKey.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Baidu.SecretKey.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.PasswordInput, {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Baidu.SecretKey.Title,\n value: accessStore.baiduSecretKey,\n type: \"text\",\n placeholder: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Baidu.SecretKey.Placeholder,\n onChange: (e)=>{\n accessStore.update((access)=>access.baiduSecretKey = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 973,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 969,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true);\n const tencentConfigComponent = accessStore.provider === _constant__WEBPACK_IMPORTED_MODULE_25__.ServiceProvider.Tencent && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Tencent.Endpoint.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Tencent.Endpoint.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Tencent.Endpoint.Title,\n type: \"text\",\n value: accessStore.tencentUrl,\n placeholder: _constant__WEBPACK_IMPORTED_MODULE_25__.Tencent.ExampleEndpoint,\n onChange: (e)=>accessStore.update((access)=>access.tencentUrl = e.currentTarget.value)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 995,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 991,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Tencent.ApiKey.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Tencent.ApiKey.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.PasswordInput, {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Tencent.ApiKey.Title,\n value: accessStore.tencentSecretId,\n type: \"text\",\n placeholder: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Tencent.ApiKey.Placeholder,\n onChange: (e)=>{\n accessStore.update((access)=>access.tencentSecretId = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1011,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1007,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Tencent.SecretKey.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Tencent.SecretKey.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.PasswordInput, {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Tencent.SecretKey.Title,\n value: accessStore.tencentSecretKey,\n type: \"text\",\n placeholder: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Tencent.SecretKey.Placeholder,\n onChange: (e)=>{\n accessStore.update((access)=>access.tencentSecretKey = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1027,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1023,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true);\n const byteDanceConfigComponent = accessStore.provider === _constant__WEBPACK_IMPORTED_MODULE_25__.ServiceProvider.ByteDance && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.ByteDance.Endpoint.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.ByteDance.Endpoint.SubTitle + _constant__WEBPACK_IMPORTED_MODULE_25__.ByteDance.ExampleEndpoint,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.ByteDance.Endpoint.Title,\n type: \"text\",\n value: accessStore.bytedanceUrl,\n placeholder: _constant__WEBPACK_IMPORTED_MODULE_25__.ByteDance.ExampleEndpoint,\n onChange: (e)=>accessStore.update((access)=>access.bytedanceUrl = e.currentTarget.value)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1052,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1045,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.ByteDance.ApiKey.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.ByteDance.ApiKey.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.PasswordInput, {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.ByteDance.ApiKey.Title,\n value: accessStore.bytedanceApiKey,\n type: \"text\",\n placeholder: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.ByteDance.ApiKey.Placeholder,\n onChange: (e)=>{\n accessStore.update((access)=>access.bytedanceApiKey = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1068,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1064,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true);\n const alibabaConfigComponent = accessStore.provider === _constant__WEBPACK_IMPORTED_MODULE_25__.ServiceProvider.Alibaba && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Alibaba.Endpoint.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Alibaba.Endpoint.SubTitle + _constant__WEBPACK_IMPORTED_MODULE_25__.Alibaba.ExampleEndpoint,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Alibaba.Endpoint.Title,\n type: \"text\",\n value: accessStore.alibabaUrl,\n placeholder: _constant__WEBPACK_IMPORTED_MODULE_25__.Alibaba.ExampleEndpoint,\n onChange: (e)=>accessStore.update((access)=>access.alibabaUrl = e.currentTarget.value)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1093,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1086,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Alibaba.ApiKey.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Alibaba.ApiKey.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.PasswordInput, {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Alibaba.ApiKey.Title,\n value: accessStore.alibabaApiKey,\n type: \"text\",\n placeholder: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Alibaba.ApiKey.Placeholder,\n onChange: (e)=>{\n accessStore.update((access)=>access.alibabaApiKey = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1109,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1105,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true);\n const moonshotConfigComponent = accessStore.provider === _constant__WEBPACK_IMPORTED_MODULE_25__.ServiceProvider.Moonshot && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Moonshot.Endpoint.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Moonshot.Endpoint.SubTitle + _constant__WEBPACK_IMPORTED_MODULE_25__.Moonshot.ExampleEndpoint,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Moonshot.Endpoint.Title,\n type: \"text\",\n value: accessStore.moonshotUrl,\n placeholder: _constant__WEBPACK_IMPORTED_MODULE_25__.Moonshot.ExampleEndpoint,\n onChange: (e)=>accessStore.update((access)=>access.moonshotUrl = e.currentTarget.value)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1134,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1127,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Moonshot.ApiKey.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Moonshot.ApiKey.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.PasswordInput, {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Moonshot.ApiKey.Title,\n value: accessStore.moonshotApiKey,\n type: \"text\",\n placeholder: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Moonshot.ApiKey.Placeholder,\n onChange: (e)=>{\n accessStore.update((access)=>access.moonshotApiKey = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1150,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1146,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true);\n const deepseekConfigComponent = accessStore.provider === _constant__WEBPACK_IMPORTED_MODULE_25__.ServiceProvider.DeepSeek && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.DeepSeek.Endpoint.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.DeepSeek.Endpoint.SubTitle + _constant__WEBPACK_IMPORTED_MODULE_25__.DeepSeek.ExampleEndpoint,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.DeepSeek.Endpoint.Title,\n type: \"text\",\n value: accessStore.deepseekUrl,\n placeholder: _constant__WEBPACK_IMPORTED_MODULE_25__.DeepSeek.ExampleEndpoint,\n onChange: (e)=>accessStore.update((access)=>access.deepseekUrl = e.currentTarget.value)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1175,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1168,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.DeepSeek.ApiKey.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.DeepSeek.ApiKey.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.PasswordInput, {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.DeepSeek.ApiKey.Title,\n value: accessStore.deepseekApiKey,\n type: \"text\",\n placeholder: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.DeepSeek.ApiKey.Placeholder,\n onChange: (e)=>{\n accessStore.update((access)=>access.deepseekApiKey = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1191,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1187,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true);\n const XAIConfigComponent = accessStore.provider === _constant__WEBPACK_IMPORTED_MODULE_25__.ServiceProvider.XAI && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.XAI.Endpoint.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.XAI.Endpoint.SubTitle + _constant__WEBPACK_IMPORTED_MODULE_25__.XAI.ExampleEndpoint,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.XAI.Endpoint.Title,\n type: \"text\",\n value: accessStore.xaiUrl,\n placeholder: _constant__WEBPACK_IMPORTED_MODULE_25__.XAI.ExampleEndpoint,\n onChange: (e)=>accessStore.update((access)=>access.xaiUrl = e.currentTarget.value)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1214,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1208,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.XAI.ApiKey.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.XAI.ApiKey.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.PasswordInput, {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.XAI.ApiKey.Title,\n value: accessStore.xaiApiKey,\n type: \"text\",\n placeholder: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.XAI.ApiKey.Placeholder,\n onChange: (e)=>{\n accessStore.update((access)=>access.xaiApiKey = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1230,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1226,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true);\n const chatglmConfigComponent = accessStore.provider === _constant__WEBPACK_IMPORTED_MODULE_25__.ServiceProvider.ChatGLM && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.ChatGLM.Endpoint.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.ChatGLM.Endpoint.SubTitle + _constant__WEBPACK_IMPORTED_MODULE_25__.ChatGLM.ExampleEndpoint,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.ChatGLM.Endpoint.Title,\n type: \"text\",\n value: accessStore.chatglmUrl,\n placeholder: _constant__WEBPACK_IMPORTED_MODULE_25__.ChatGLM.ExampleEndpoint,\n onChange: (e)=>accessStore.update((access)=>access.chatglmUrl = e.currentTarget.value)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1255,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1248,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.ChatGLM.ApiKey.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.ChatGLM.ApiKey.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.PasswordInput, {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.ChatGLM.ApiKey.Title,\n value: accessStore.chatglmApiKey,\n type: \"text\",\n placeholder: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.ChatGLM.ApiKey.Placeholder,\n onChange: (e)=>{\n accessStore.update((access)=>access.chatglmApiKey = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1271,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1267,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true);\n const siliconflowConfigComponent = accessStore.provider === _constant__WEBPACK_IMPORTED_MODULE_25__.ServiceProvider.SiliconFlow && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.SiliconFlow.Endpoint.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.SiliconFlow.Endpoint.SubTitle + _constant__WEBPACK_IMPORTED_MODULE_25__.SiliconFlow.ExampleEndpoint,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.SiliconFlow.Endpoint.Title,\n type: \"text\",\n value: accessStore.siliconflowUrl,\n placeholder: _constant__WEBPACK_IMPORTED_MODULE_25__.SiliconFlow.ExampleEndpoint,\n onChange: (e)=>accessStore.update((access)=>access.siliconflowUrl = e.currentTarget.value)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1295,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1288,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.SiliconFlow.ApiKey.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.SiliconFlow.ApiKey.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.PasswordInput, {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.SiliconFlow.ApiKey.Title,\n value: accessStore.siliconflowApiKey,\n type: \"text\",\n placeholder: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.SiliconFlow.ApiKey.Placeholder,\n onChange: (e)=>{\n accessStore.update((access)=>access.siliconflowApiKey = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1311,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1307,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true);\n const stabilityConfigComponent = accessStore.provider === _constant__WEBPACK_IMPORTED_MODULE_25__.ServiceProvider.Stability && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Stability.Endpoint.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Stability.Endpoint.SubTitle + _constant__WEBPACK_IMPORTED_MODULE_25__.Stability.ExampleEndpoint,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Stability.Endpoint.Title,\n type: \"text\",\n value: accessStore.stabilityUrl,\n placeholder: _constant__WEBPACK_IMPORTED_MODULE_25__.Stability.ExampleEndpoint,\n onChange: (e)=>accessStore.update((access)=>access.stabilityUrl = e.currentTarget.value)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1336,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1329,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Stability.ApiKey.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Stability.ApiKey.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.PasswordInput, {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Stability.ApiKey.Title,\n value: accessStore.stabilityApiKey,\n type: \"text\",\n placeholder: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Stability.ApiKey.Placeholder,\n onChange: (e)=>{\n accessStore.update((access)=>access.stabilityApiKey = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1352,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1348,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true);\n const lflytekConfigComponent = accessStore.provider === _constant__WEBPACK_IMPORTED_MODULE_25__.ServiceProvider.Iflytek && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Iflytek.Endpoint.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Iflytek.Endpoint.SubTitle + _constant__WEBPACK_IMPORTED_MODULE_25__.Iflytek.ExampleEndpoint,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Iflytek.Endpoint.Title,\n type: \"text\",\n value: accessStore.iflytekUrl,\n placeholder: _constant__WEBPACK_IMPORTED_MODULE_25__.Iflytek.ExampleEndpoint,\n onChange: (e)=>accessStore.update((access)=>access.iflytekUrl = e.currentTarget.value)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1376,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1369,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Iflytek.ApiKey.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Iflytek.ApiKey.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.PasswordInput, {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Iflytek.ApiKey.Title,\n value: accessStore.iflytekApiKey,\n type: \"text\",\n placeholder: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Iflytek.ApiKey.Placeholder,\n onChange: (e)=>{\n accessStore.update((access)=>access.iflytekApiKey = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1392,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1388,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Iflytek.ApiSecret.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Iflytek.ApiSecret.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.PasswordInput, {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Iflytek.ApiSecret.Title,\n value: accessStore.iflytekApiSecret,\n type: \"text\",\n placeholder: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Access.Iflytek.ApiSecret.Placeholder,\n onChange: (e)=>{\n accessStore.update((access)=>access.iflytekApiSecret = e.currentTarget.value);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1409,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1405,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true);\n var _config_fontSize;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_error__WEBPACK_IMPORTED_MODULE_27__.ErrorBoundary, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"window-header\",\n \"data-tauri-drag-region\": true,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"window-header-title\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"window-header-main-title\",\n children: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Title\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1428,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"window-header-sub-title\",\n children: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.SubTitle\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1431,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1427,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"window-actions\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"window-action-button\"\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1436,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"window-action-button\"\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1437,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"window-action-button\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_20__.IconButton, {\n aria: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].UI.Close,\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_close_svg__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1441,\n columnNumber: 21\n }, void 0),\n onClick: ()=>navigate(_constant__WEBPACK_IMPORTED_MODULE_25__.Path.Home),\n bordered: true\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1439,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1438,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1435,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1426,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_settings_module_scss__WEBPACK_IMPORTED_MODULE_34___default().settings),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.List, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Avatar,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.Popover, {\n onClose: ()=>setShowEmojiPicker(false),\n content: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_emoji__WEBPACK_IMPORTED_MODULE_29__.AvatarPicker, {\n onEmojiClick: (avatar)=>{\n updateConfig((config)=>config.avatar = avatar);\n setShowEmojiPicker(false);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1454,\n columnNumber: 17\n }, void 0),\n open: showEmojiPicker,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Avatar,\n tabIndex: 0,\n className: (_settings_module_scss__WEBPACK_IMPORTED_MODULE_34___default().avatar),\n onClick: ()=>{\n setShowEmojiPicker(!showEmojiPicker);\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_emoji__WEBPACK_IMPORTED_MODULE_29__.Avatar, {\n avatar: config.avatar\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1471,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1463,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1451,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1450,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Update.Version(currentVersion !== null && currentVersion !== void 0 ? currentVersion : \"unknown\"),\n subTitle: checkingUpdate ? _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Update.IsChecking : hasNewVersion ? _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Update.FoundUpdate(remoteId !== null && remoteId !== void 0 ? remoteId : \"ERROR\") : _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Update.IsLatest,\n children: checkingUpdate ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_three_dots_svg__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1487,\n columnNumber: 15\n }, this) : hasNewVersion ? (clientConfig === null || clientConfig === void 0 ? void 0 : clientConfig.isApp) ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_20__.IconButton, {\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_reload_svg__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1491,\n columnNumber: 25\n }, void 0),\n text: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Update.GoToUpdate,\n onClick: ()=>(0,_utils__WEBPACK_IMPORTED_MODULE_23__.clientUpdate)()\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1490,\n columnNumber: 17\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_24__[\"default\"], {\n href: updateUrl,\n target: \"_blank\",\n className: \"link\",\n children: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Update.GoToUpdate\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1496,\n columnNumber: 17\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_20__.IconButton, {\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_reload_svg__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1502,\n columnNumber: 23\n }, void 0),\n text: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Update.CheckUpdate,\n onClick: ()=>checkUpdate(true)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1501,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1476,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.SendKey,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.Select, {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.SendKey,\n value: config.submitKey,\n onChange: (e)=>{\n updateConfig((config)=>config.submitKey = e.target.value);\n },\n children: Object.values(_store__WEBPACK_IMPORTED_MODULE_21__.SubmitKey).map((v)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: v,\n children: v\n }, v, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1521,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1510,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1509,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Theme,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.Select, {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Theme,\n value: config.theme,\n onChange: (e)=>{\n updateConfig((config)=>config.theme = e.target.value);\n },\n children: Object.values(_store__WEBPACK_IMPORTED_MODULE_21__.Theme).map((v)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: v,\n children: v\n }, v, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1539,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1529,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1528,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Lang.Name,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.Select, {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.Lang.Name,\n value: (0,_locales__WEBPACK_IMPORTED_MODULE_22__.getLang)(),\n onChange: (e)=>{\n (0,_locales__WEBPACK_IMPORTED_MODULE_22__.changeLang)(e.target.value);\n },\n children: _locales__WEBPACK_IMPORTED_MODULE_22__.AllLangs.map((lang)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: lang,\n children: _locales__WEBPACK_IMPORTED_MODULE_22__.ALL_LANG_OPTIONS[lang]\n }, lang, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1555,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1547,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1546,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.FontSize.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.FontSize.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_input_range__WEBPACK_IMPORTED_MODULE_28__.InputRange, {\n aria: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.FontSize.Title,\n title: \"\".concat((_config_fontSize = config.fontSize) !== null && _config_fontSize !== void 0 ? _config_fontSize : 14, \"px\"),\n value: config.fontSize,\n min: \"12\",\n max: \"40\",\n step: \"1\",\n onChange: (e)=>updateConfig((config)=>config.fontSize = Number.parseInt(e.currentTarget.value))\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1566,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1562,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.FontFamily.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.FontFamily.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.FontFamily.Title,\n type: \"text\",\n value: config.fontFamily,\n placeholder: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.FontFamily.Placeholder,\n onChange: (e)=>updateConfig((config)=>config.fontFamily = e.currentTarget.value)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1586,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1582,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.AutoGenerateTitle.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.AutoGenerateTitle.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.AutoGenerateTitle.Title,\n type: \"checkbox\",\n checked: config.enableAutoGenerateTitle,\n onChange: (e)=>updateConfig((config)=>config.enableAutoGenerateTitle = e.currentTarget.checked)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1603,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1599,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.SendPreviewBubble.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.SendPreviewBubble.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Settings.SendPreviewBubble.Title,\n type: \"checkbox\",\n checked: config.sendPreviewBubble,\n onChange: (e)=>updateConfig((config)=>config.sendPreviewBubble = e.currentTarget.checked)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1620,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1616,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Mask.Config.Artifacts.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Mask.Config.Artifacts.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Mask.Config.Artifacts.Title,\n type: \"checkbox\",\n checked: config.enableArtifacts,\n onChange: (e)=>updateConfig((config)=>config.enableArtifacts = e.currentTarget.checked)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1637,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1633,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Mask.Config.CodeFold.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Mask.Config.CodeFold.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Mask.Config.CodeFold.Title,\n type: \"checkbox\",\n checked: config.enableCodeFold,\n \"data-testid\": \"enable-code-fold-checkbox\",\n onChange: (e)=>updateConfig((config)=>config.enableCodeFold = e.currentTarget.checked)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1653,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1649,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1449,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SyncItems, {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1667,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_18__.List, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_model_config__WEBPACK_IMPORTED_MODULE_19__.ModelConfigList, {\n modelConfig: config.modelConfig,\n updateConfig: (updater)=>{\n const modelConfig = {\n ...config.modelConfig\n };\n updater(modelConfig);\n config.update((config)=>config.modelConfig = modelConfig);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1670,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1669,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(DangerItems, {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1680,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1448,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\settings.tsx\",\n lineNumber: 1425,\n columnNumber: 5\n }, this);\n}\n_s6(Settings, \"gamYpAPQsfvuG0awLCYLheWjSrg=\", false, function() {\n return [\n react_router_dom__WEBPACK_IMPORTED_MODULE_36__.useNavigate,\n _store__WEBPACK_IMPORTED_MODULE_21__.useAppConfig,\n _store__WEBPACK_IMPORTED_MODULE_21__.useUpdateStore,\n _store__WEBPACK_IMPORTED_MODULE_21__.useAccessStore,\n _store_prompt__WEBPACK_IMPORTED_MODULE_26__.usePromptStore\n ];\n});\n_c6 = Settings;\nvar _c, _c1, _c2, _c3, _c4, _c5, _c6;\n$RefreshReg$(_c, \"EditPromptModal\");\n$RefreshReg$(_c1, \"UserPromptModal\");\n$RefreshReg$(_c2, \"DangerItems\");\n$RefreshReg$(_c3, \"CheckButton\");\n$RefreshReg$(_c4, \"SyncConfigModal\");\n$RefreshReg$(_c5, \"SyncItems\");\n$RefreshReg$(_c6, \"Settings\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9jb21wb25lbnRzL3NldHRpbmdzLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBcUQ7QUFFVDtBQUVBO0FBQ0w7QUFDSTtBQUNGO0FBQ0U7QUFDTztBQUNUO0FBQ0E7QUFDRjtBQUNVO0FBQ0o7QUFFRTtBQUVNO0FBQ0s7QUFDTjtBQUNrQztBQVdwRTtBQUMrQjtBQUVYO0FBUXBCO0FBT0U7QUFDb0Q7QUFDM0M7QUF5QlI7QUFDbUQ7QUFDaEM7QUFDRztBQUNJO0FBQ0E7QUFDSTtBQUNOO0FBQ2I7QUFDYTtBQUNDO0FBSTlDLFNBQVMrRSxnQkFBZ0JDLEtBQTBDOztJQUNqRSxNQUFNQyxjQUFjYiw4REFBY0E7SUFDbEMsTUFBTWMsU0FBU0QsWUFBWUUsR0FBRyxDQUFDSCxNQUFNSSxFQUFFO0lBRXZDLE9BQU9GLHVCQUNMLDhEQUFDRztRQUFJQyxXQUFVO2tCQUNiLDRFQUFDL0QsMkNBQUtBO1lBQ0pnRSxPQUFPbkQsaURBQU1BLENBQUNvRCxRQUFRLENBQUNDLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxLQUFLO1lBQzdDQyxTQUFTWixNQUFNWSxPQUFPO1lBQ3RCQyxTQUFTOzhCQUNQLDhEQUFDaEUsZ0RBQVVBO29CQUVUaUUsU0FBU2QsTUFBTVksT0FBTztvQkFDdEJHLE1BQU0zRCxpREFBTUEsQ0FBQzRELEVBQUUsQ0FBQ0MsT0FBTztvQkFDdkJDLFFBQVE7bUJBSEo7Ozs7O2FBS1A7c0JBRUQsNEVBQUNiO2dCQUFJQyxXQUFXbkYsb0ZBQTJCOztrQ0FDekMsOERBQUNnRzt3QkFDQ0MsTUFBSzt3QkFDTEMsT0FBT25CLE9BQU9LLEtBQUs7d0JBQ25CZSxVQUFVLENBQUNwQixPQUFPcUIsTUFBTTt3QkFDeEJqQixXQUFXbkYsb0ZBQTJCO3dCQUN0Q3FHLFNBQVMsQ0FBQ0MsSUFDUnhCLFlBQVl5QixZQUFZLENBQ3RCMUIsTUFBTUksRUFBRSxFQUNS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cEMsaURBQVlBO1FBR1BGLG1EQUFjQTtRQWlCZEMsbURBQWNBO1FBcUNka0MsMERBQWNBOzs7TUE1RHBCb0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2NvbXBvbmVudHMvc2V0dGluZ3MudHN4PzA5MGYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xyXG5cclxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9zZXR0aW5ncy5tb2R1bGUuc2Nzc1wiO1xyXG5cclxuaW1wb3J0IFJlc2V0SWNvbiBmcm9tIFwiLi4vaWNvbnMvcmVsb2FkLnN2Z1wiO1xyXG5pbXBvcnQgQWRkSWNvbiBmcm9tIFwiLi4vaWNvbnMvYWRkLnN2Z1wiO1xyXG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gXCIuLi9pY29ucy9jbG9zZS5zdmdcIjtcclxuaW1wb3J0IENvcHlJY29uIGZyb20gXCIuLi9pY29ucy9jb3B5LnN2Z1wiO1xyXG5pbXBvcnQgQ2xlYXJJY29uIGZyb20gXCIuLi9pY29ucy9jbGVhci5zdmdcIjtcclxuaW1wb3J0IExvYWRpbmdJY29uIGZyb20gXCIuLi9pY29ucy90aHJlZS1kb3RzLnN2Z1wiO1xyXG5pbXBvcnQgRWRpdEljb24gZnJvbSBcIi4uL2ljb25zL2VkaXQuc3ZnXCI7XHJcbmltcG9ydCBGaXJlSWNvbiBmcm9tIFwiLi4vaWNvbnMvZmlyZS5zdmdcIjtcclxuaW1wb3J0IEV5ZUljb24gZnJvbSBcIi4uL2ljb25zL2V5ZS5zdmdcIjtcclxuaW1wb3J0IERvd25sb2FkSWNvbiBmcm9tIFwiLi4vaWNvbnMvZG93bmxvYWQuc3ZnXCI7XHJcbmltcG9ydCBVcGxvYWRJY29uIGZyb20gXCIuLi9pY29ucy91cGxvYWQuc3ZnXCI7XHJcbmltcG9ydCBDb25maWdJY29uIGZyb20gXCIuLi9pY29ucy9jb25maWcuc3ZnXCI7XHJcbmltcG9ydCBDb25maXJtSWNvbiBmcm9tIFwiLi4vaWNvbnMvY29uZmlybS5zdmdcIjtcclxuXHJcbmltcG9ydCBDb25uZWN0aW9uSWNvbiBmcm9tIFwiLi4vaWNvbnMvY29ubmVjdGlvbi5zdmdcIjtcclxuaW1wb3J0IENsb3VkU3VjY2Vzc0ljb24gZnJvbSBcIi4uL2ljb25zL2Nsb3VkLXN1Y2Nlc3Muc3ZnXCI7XHJcbmltcG9ydCBDbG91ZEZhaWxJY29uIGZyb20gXCIuLi9pY29ucy9jbG91ZC1mYWlsLnN2Z1wiO1xyXG5pbXBvcnQgeyB0cmFja1NldHRpbmdzUGFnZUd1aWRlVG9DUGF5bWVudENsaWNrIH0gZnJvbSBcIi4uL3V0aWxzL2F1dGgtc2V0dGluZ3MtZXZlbnRzXCI7XHJcbmltcG9ydCB7XHJcbiAgSW5wdXQsXHJcbiAgTGlzdCxcclxuICBMaXN0SXRlbSxcclxuICBNb2RhbCxcclxuICBQYXNzd29yZElucHV0LFxyXG4gIFBvcG92ZXIsXHJcbiAgU2VsZWN0LFxyXG4gIHNob3dDb25maXJtLFxyXG4gIHNob3dUb2FzdCxcclxufSBmcm9tIFwiLi91aS1saWJcIjtcclxuaW1wb3J0IHsgTW9kZWxDb25maWdMaXN0IH0gZnJvbSBcIi4vbW9kZWwtY29uZmlnXCI7XHJcblxyXG5pbXBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSBcIi4vYnV0dG9uXCI7XHJcbmltcG9ydCB7XHJcbiAgU3VibWl0S2V5LFxyXG4gIHVzZUNoYXRTdG9yZSxcclxuICBUaGVtZSxcclxuICB1c2VVcGRhdGVTdG9yZSxcclxuICB1c2VBY2Nlc3NTdG9yZSxcclxuICB1c2VBcHBDb25maWcsXHJcbn0gZnJvbSBcIi4uL3N0b3JlXCI7XHJcblxyXG5pbXBvcnQgTG9jYWxlLCB7XHJcbiAgQWxsTGFuZ3MsXHJcbiAgQUxMX0xBTkdfT1BUSU9OUyxcclxuICBjaGFuZ2VMYW5nLFxyXG4gIGdldExhbmcsXHJcbn0gZnJvbSBcIi4uL2xvY2FsZXNcIjtcclxuaW1wb3J0IHsgY29weVRvQ2xpcGJvYXJkLCBjbGllbnRVcGRhdGUsIHNlbXZlckNvbXBhcmUgfSBmcm9tIFwiLi4vdXRpbHNcIjtcclxuaW1wb3J0IExpbmsgZnJvbSBcIm5leHQvbGlua1wiO1xyXG5pbXBvcnQge1xyXG4gIEFudGhyb3BpYyxcclxuICBBenVyZSxcclxuICBCYWlkdSxcclxuICBUZW5jZW50LFxyXG4gIEJ5dGVEYW5jZSxcclxuICBBbGliYWJhLFxyXG4gIE1vb25zaG90LFxyXG4gIFhBSSxcclxuICBHb29nbGUsXHJcbiAgR29vZ2xlU2FmZXR5U2V0dGluZ3NUaHJlc2hvbGQsXHJcbiAgT1BFTkFJX0JBU0VfVVJMLFxyXG4gIFBhdGgsXHJcbiAgUkVMRUFTRV9VUkwsXHJcbiAgU1RPUkFHRV9LRVksXHJcbiAgU2VydmljZVByb3ZpZGVyLFxyXG4gIFNsb3RJRCxcclxuICBVUERBVEVfVVJMLFxyXG4gIFN0YWJpbGl0eSxcclxuICBJZmx5dGVrLFxyXG4gIFNBQVNfQ0hBVF9VUkwsXHJcbiAgQ2hhdEdMTSxcclxuICBEZWVwU2VlayxcclxuICBTaWxpY29uRmxvdyxcclxufSBmcm9tIFwiLi4vY29uc3RhbnRcIjtcclxuaW1wb3J0IHsgUHJvbXB0LCBTZWFyY2hTZXJ2aWNlLCB1c2VQcm9tcHRTdG9yZSB9IGZyb20gXCIuLi9zdG9yZS9wcm9tcHRcIjtcclxuaW1wb3J0IHsgRXJyb3JCb3VuZGFyeSB9IGZyb20gXCIuL2Vycm9yXCI7XHJcbmltcG9ydCB7IElucHV0UmFuZ2UgfSBmcm9tIFwiLi9pbnB1dC1yYW5nZVwiO1xyXG5pbXBvcnQgeyB1c2VOYXZpZ2F0ZSB9IGZyb20gXCJyZWFjdC1yb3V0ZXItZG9tXCI7XHJcbmltcG9ydCB7IEF2YXRhciwgQXZhdGFyUGlja2VyIH0gZnJvbSBcIi4vZW1vamlcIjtcclxuaW1wb3J0IHsgZ2V0Q2xpZW50Q29uZmlnIH0gZnJvbSBcIi4uL2NvbmZpZy9jbGllbnRcIjtcclxuaW1wb3J0IHsgdXNlU3luY1N0b3JlIH0gZnJvbSBcIi4uL3N0b3JlL3N5bmNcIjtcclxuaW1wb3J0IHsgbmFub2lkIH0gZnJvbSBcIm5hbm9pZFwiO1xyXG5pbXBvcnQgeyB1c2VNYXNrU3RvcmUgfSBmcm9tIFwiLi4vc3RvcmUvbWFza1wiO1xyXG5pbXBvcnQgeyBQcm92aWRlclR5cGUgfSBmcm9tIFwiLi4vdXRpbHMvY2xvdWRcIjtcclxuaW1wb3J0IHsgVFRTQ29uZmlnTGlzdCB9IGZyb20gXCIuL3R0cy1jb25maWdcIjtcclxuaW1wb3J0IHsgUmVhbHRpbWVDb25maWdMaXN0IH0gZnJvbSBcIi4vcmVhbHRpbWUtY2hhdC9yZWFsdGltZS1jb25maWdcIjtcclxuXHJcbmZ1bmN0aW9uIEVkaXRQcm9tcHRNb2RhbChwcm9wczogeyBpZDogc3RyaW5nOyBvbkNsb3NlOiAoKSA9PiB2b2lkIH0pIHtcclxuICBjb25zdCBwcm9tcHRTdG9yZSA9IHVzZVByb21wdFN0b3JlKCk7XHJcbiAgY29uc3QgcHJvbXB0ID0gcHJvbXB0U3RvcmUuZ2V0KHByb3BzLmlkKTtcclxuXHJcbiAgcmV0dXJuIHByb21wdCA/IChcclxuICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtbWFza1wiPlxyXG4gICAgICA8TW9kYWxcclxuICAgICAgICB0aXRsZT17TG9jYWxlLlNldHRpbmdzLlByb21wdC5FZGl0TW9kYWwuVGl0bGV9XHJcbiAgICAgICAgb25DbG9zZT17cHJvcHMub25DbG9zZX1cclxuICAgICAgICBhY3Rpb25zPXtbXHJcbiAgICAgICAgICA8SWNvbkJ1dHRvblxyXG4gICAgICAgICAgICBrZXk9XCJcIlxyXG4gICAgICAgICAgICBvbkNsaWNrPXtwcm9wcy5vbkNsb3NlfVxyXG4gICAgICAgICAgICB0ZXh0PXtMb2NhbGUuVUkuQ29uZmlybX1cclxuICAgICAgICAgICAgYm9yZGVyZWRcclxuICAgICAgICAgIC8+LFxyXG4gICAgICAgIF19XHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1wiZWRpdC1wcm9tcHQtbW9kYWxcIl19PlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgdmFsdWU9e3Byb21wdC50aXRsZX1cclxuICAgICAgICAgICAgcmVhZE9ubHk9eyFwcm9tcHQuaXNVc2VyfVxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1tcImVkaXQtcHJvbXB0LXRpdGxlXCJdfVxyXG4gICAgICAgICAgICBvbklucHV0PXsoZSkgPT5cclxuICAgICAgICAgICAgICBwcm9tcHRTdG9yZS51cGRhdGVQcm9tcHQoXHJcbiAgICAgICAgICAgICAgICBwcm9wcy5pZCxcclxuICAgICAgICAgICAgICAgIChwcm9tcHQpID0+IChwcm9tcHQudGl0bGUgPSBlLmN1cnJlbnRUYXJnZXQudmFsdWUpLFxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPjwvaW5wdXQ+XHJcbiAgICAgICAgICA8SW5wdXRcclxuICAgICAgICAgICAgdmFsdWU9e3Byb21wdC5jb250ZW50fVxyXG4gICAgICAgICAgICByZWFkT25seT17IXByb21wdC5pc1VzZXJ9XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzW1wiZWRpdC1wcm9tcHQtY29udGVudFwiXX1cclxuICAgICAgICAgICAgcm93cz17MTB9XHJcbiAgICAgICAgICAgIG9uSW5wdXQ9eyhlKSA9PlxyXG4gICAgICAgICAgICAgIHByb21wdFN0b3JlLnVwZGF0ZVByb21wdChcclxuICAgICAgICAgICAgICAgIHByb3BzLmlkLFxyXG4gICAgICAgICAgICAgICAgKHByb21wdCkgPT4gKHByb21wdC5jb250ZW50ID0gZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSxcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgID48L0lucHV0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L01vZGFsPlxyXG4gICAgPC9kaXY+XHJcbiAgKSA6IG51bGw7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIFVzZXJQcm9tcHRNb2RhbChwcm9wczogeyBvbkNsb3NlPzogKCkgPT4gdm9pZCB9KSB7XHJcbiAgY29uc3QgcHJvbXB0U3RvcmUgPSB1c2VQcm9tcHRTdG9yZSgpO1xyXG4gIGNvbnN0IHVzZXJQcm9tcHRzID0gcHJvbXB0U3RvcmUuZ2V0VXNlclByb21wdHMoKTtcclxuICBjb25zdCBidWlsdGluUHJvbXB0cyA9IFNlYXJjaFNlcnZpY2UuYnVpbHRpblByb21wdHM7XHJcbiAgY29uc3QgYWxsUHJvbXB0cyA9IHVzZXJQcm9tcHRzLmNvbmNhdChidWlsdGluUHJvbXB0cyk7XHJcbiAgY29uc3QgW3NlYXJjaElucHV0LCBzZXRTZWFyY2hJbnB1dF0gPSB1c2VTdGF0ZShcIlwiKTtcclxuICBjb25zdCBbc2VhcmNoUHJvbXB0cywgc2V0U2VhcmNoUHJvbXB0c10gPSB1c2VTdGF0ZTxQcm9tcHRbXT4oW10pO1xyXG4gIGNvbnN0IHByb21wdHMgPSBzZWFyY2hJbnB1dC5sZW5ndGggPiAwID8gc2VhcmNoUHJvbXB0cyA6IGFsbFByb21wdHM7XHJcblxyXG4gIGNvbnN0IFtlZGl0aW5nUHJvbXB0SWQsIHNldEVkaXRpbmdQcm9tcHRJZF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCk7XHJcblxyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBpZiAoc2VhcmNoSW5wdXQubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBzZWFyY2hSZXN1bHQgPSBTZWFyY2hTZXJ2aWNlLnNlYXJjaChzZWFyY2hJbnB1dCk7XHJcbiAgICAgIHNldFNlYXJjaFByb21wdHMoc2VhcmNoUmVzdWx0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNldFNlYXJjaFByb21wdHMoW10pO1xyXG4gICAgfVxyXG4gIH0sIFtzZWFyY2hJbnB1dF0pO1xyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1tYXNrXCI+XHJcbiAgICAgIDxNb2RhbFxyXG4gICAgICAgIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuUHJvbXB0Lk1vZGFsLlRpdGxlfVxyXG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHByb3BzLm9uQ2xvc2U/LigpfVxyXG4gICAgICAgIGFjdGlvbnM9e1tcclxuICAgICAgICAgIDxJY29uQnV0dG9uXHJcbiAgICAgICAgICAgIGtleT1cImFkZFwiXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBwcm9tcHRJZCA9IHByb21wdFN0b3JlLmFkZCh7XHJcbiAgICAgICAgICAgICAgICBpZDogbmFub2lkKCksXHJcbiAgICAgICAgICAgICAgICBjcmVhdGVkQXQ6IERhdGUubm93KCksXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogXCJFbXB0eSBQcm9tcHRcIixcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiRW1wdHkgUHJvbXB0IENvbnRlbnRcIixcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBzZXRFZGl0aW5nUHJvbXB0SWQocHJvbXB0SWQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBpY29uPXs8QWRkSWNvbiAvPn1cclxuICAgICAgICAgICAgYm9yZGVyZWRcclxuICAgICAgICAgICAgdGV4dD17TG9jYWxlLlNldHRpbmdzLlByb21wdC5Nb2RhbC5BZGR9XHJcbiAgICAgICAgICAvPixcclxuICAgICAgICBdfVxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcInVzZXItcHJvbXB0LW1vZGFsXCJdfT5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzW1widXNlci1wcm9tcHQtc2VhcmNoXCJdfVxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17TG9jYWxlLlNldHRpbmdzLlByb21wdC5Nb2RhbC5TZWFyY2h9XHJcbiAgICAgICAgICAgIHZhbHVlPXtzZWFyY2hJbnB1dH1cclxuICAgICAgICAgICAgb25JbnB1dD17KGUpID0+IHNldFNlYXJjaElucHV0KGUuY3VycmVudFRhcmdldC52YWx1ZSl9XHJcbiAgICAgICAgICA+PC9pbnB1dD5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1widXNlci1wcm9tcHQtbGlzdFwiXX0+XHJcbiAgICAgICAgICAgIHtwcm9tcHRzLm1hcCgodiwgXykgPT4gKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJ1c2VyLXByb21wdC1pdGVtXCJdfSBrZXk9e3YuaWQgPz8gdi50aXRsZX0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1widXNlci1wcm9tcHQtaGVhZGVyXCJdfT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcInVzZXItcHJvbXB0LXRpdGxlXCJdfT57di50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcInVzZXItcHJvbXB0LWNvbnRlbnRcIl0gKyBcIiBvbmUtbGluZVwifT5cclxuICAgICAgICAgICAgICAgICAgICB7di5jb250ZW50fVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJ1c2VyLXByb21wdC1idXR0b25zXCJdfT5cclxuICAgICAgICAgICAgICAgICAge3YuaXNVc2VyICYmIChcclxuICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj17PENsZWFySWNvbiAvPn1cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzW1widXNlci1wcm9tcHQtYnV0dG9uXCJdfVxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gcHJvbXB0U3RvcmUucmVtb3ZlKHYuaWQhKX1cclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICB7di5pc1VzZXIgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGljb249ezxFZGl0SWNvbiAvPn1cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzW1widXNlci1wcm9tcHQtYnV0dG9uXCJdfVxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0RWRpdGluZ1Byb21wdElkKHYuaWQpfVxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGljb249ezxFeWVJY29uIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbXCJ1c2VyLXByb21wdC1idXR0b25cIl19XHJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRFZGl0aW5nUHJvbXB0SWQodi5pZCl9XHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cclxuICAgICAgICAgICAgICAgICAgICBpY29uPXs8Q29weUljb24gLz59XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbXCJ1c2VyLXByb21wdC1idXR0b25cIl19XHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gY29weVRvQ2xpcGJvYXJkKHYuY29udGVudCl9XHJcbiAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9Nb2RhbD5cclxuXHJcbiAgICAgIHtlZGl0aW5nUHJvbXB0SWQgIT09IHVuZGVmaW5lZCAmJiAoXHJcbiAgICAgICAgPEVkaXRQcm9tcHRNb2RhbFxyXG4gICAgICAgICAgaWQ9e2VkaXRpbmdQcm9tcHRJZCF9XHJcbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRFZGl0aW5nUHJvbXB0SWQodW5kZWZpbmVkKX1cclxuICAgICAgICAvPlxyXG4gICAgICApfVxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufVxyXG5cclxuZnVuY3Rpb24gRGFuZ2VySXRlbXMoKSB7XHJcbiAgY29uc3QgY2hhdFN0b3JlID0gdXNlQ2hhdFN0b3JlKCk7XHJcbiAgY29uc3QgYXBwQ29uZmlnID0gdXNlQXBwQ29uZmlnKCk7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8TGlzdD5cclxuICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5EYW5nZXIuUmVzZXQuVGl0bGV9XHJcbiAgICAgICAgc3ViVGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5EYW5nZXIuUmVzZXQuU3ViVGl0bGV9XHJcbiAgICAgID5cclxuICAgICAgICA8SWNvbkJ1dHRvblxyXG4gICAgICAgICAgYXJpYT17TG9jYWxlLlNldHRpbmdzLkRhbmdlci5SZXNldC5UaXRsZX1cclxuICAgICAgICAgIHRleHQ9e0xvY2FsZS5TZXR0aW5ncy5EYW5nZXIuUmVzZXQuQWN0aW9ufVxyXG4gICAgICAgICAgb25DbGljaz17YXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoYXdhaXQgc2hvd0NvbmZpcm0oTG9jYWxlLlNldHRpbmdzLkRhbmdlci5SZXNldC5Db25maXJtKSkge1xyXG4gICAgICAgICAgICAgIGFwcENvbmZpZy5yZXNldCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgdHlwZT1cImRhbmdlclwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9MaXN0SXRlbT5cclxuICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5EYW5nZXIuQ2xlYXIuVGl0bGV9XHJcbiAgICAgICAgc3ViVGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5EYW5nZXIuQ2xlYXIuU3ViVGl0bGV9XHJcbiAgICAgID5cclxuICAgICAgICA8SWNvbkJ1dHRvblxyXG4gICAgICAgICAgYXJpYT17TG9jYWxlLlNldHRpbmdzLkRhbmdlci5DbGVhci5UaXRsZX1cclxuICAgICAgICAgIHRleHQ9e0xvY2FsZS5TZXR0aW5ncy5EYW5nZXIuQ2xlYXIuQWN0aW9ufVxyXG4gICAgICAgICAgb25DbGljaz17YXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoYXdhaXQgc2hvd0NvbmZpcm0oTG9jYWxlLlNldHRpbmdzLkRhbmdlci5DbGVhci5Db25maXJtKSkge1xyXG4gICAgICAgICAgICAgIGNoYXRTdG9yZS5jbGVhckFsbERhdGEoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIHR5cGU9XCJkYW5nZXJcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICA8L0xpc3Q+XHJcbiAgKTtcclxufVxyXG5cclxuZnVuY3Rpb24gQ2hlY2tCdXR0b24oKSB7XHJcbiAgY29uc3Qgc3luY1N0b3JlID0gdXNlU3luY1N0b3JlKCk7XHJcblxyXG4gIGNvbnN0IGNvdWxkQ2hlY2sgPSB1c2VNZW1vKCgpID0+IHtcclxuICAgIHJldHVybiBzeW5jU3RvcmUuY2xvdWRTeW5jKCk7XHJcbiAgfSwgW3N5bmNTdG9yZV0pO1xyXG5cclxuICBjb25zdCBbY2hlY2tTdGF0ZSwgc2V0Q2hlY2tTdGF0ZV0gPSB1c2VTdGF0ZTxcclxuICAgIFwibm9uZVwiIHwgXCJjaGVja2luZ1wiIHwgXCJzdWNjZXNzXCIgfCBcImZhaWxlZFwiXHJcbiAgPihcIm5vbmVcIik7XHJcblxyXG4gIGFzeW5jIGZ1bmN0aW9uIGNoZWNrKCkge1xyXG4gICAgc2V0Q2hlY2tTdGF0ZShcImNoZWNraW5nXCIpO1xyXG4gICAgY29uc3QgdmFsaWQgPSBhd2FpdCBzeW5jU3RvcmUuY2hlY2soKTtcclxuICAgIHNldENoZWNrU3RhdGUodmFsaWQgPyBcInN1Y2Nlc3NcIiA6IFwiZmFpbGVkXCIpO1xyXG4gIH1cclxuXHJcbiAgaWYgKCFjb3VsZENoZWNrKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxJY29uQnV0dG9uXHJcbiAgICAgIHRleHQ9e0xvY2FsZS5TZXR0aW5ncy5TeW5jLkNvbmZpZy5Nb2RhbC5DaGVja31cclxuICAgICAgYm9yZGVyZWRcclxuICAgICAgb25DbGljaz17Y2hlY2t9XHJcbiAgICAgIGljb249e1xyXG4gICAgICAgIGNoZWNrU3RhdGUgPT09IFwibm9uZVwiID8gKFxyXG4gICAgICAgICAgPENvbm5lY3Rpb25JY29uIC8+XHJcbiAgICAgICAgKSA6IGNoZWNrU3RhdGUgPT09IFwiY2hlY2tpbmdcIiA/IChcclxuICAgICAgICAgIDxMb2FkaW5nSWNvbiAvPlxyXG4gICAgICAgICkgOiBjaGVja1N0YXRlID09PSBcInN1Y2Nlc3NcIiA/IChcclxuICAgICAgICAgIDxDbG91ZFN1Y2Nlc3NJY29uIC8+XHJcbiAgICAgICAgKSA6IGNoZWNrU3RhdGUgPT09IFwiZmFpbGVkXCIgPyAoXHJcbiAgICAgICAgICA8Q2xvdWRGYWlsSWNvbiAvPlxyXG4gICAgICAgICkgOiAoXHJcbiAgICAgICAgICA8Q29ubmVjdGlvbkljb24gLz5cclxuICAgICAgICApXHJcbiAgICAgIH1cclxuICAgID48L0ljb25CdXR0b24+XHJcbiAgKTtcclxufVxyXG5cclxuZnVuY3Rpb24gU3luY0NvbmZpZ01vZGFsKHByb3BzOiB7IG9uQ2xvc2U/OiAoKSA9PiB2b2lkIH0pIHtcclxuICBjb25zdCBzeW5jU3RvcmUgPSB1c2VTeW5jU3RvcmUoKTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtbWFza1wiPlxyXG4gICAgICA8TW9kYWxcclxuICAgICAgICB0aXRsZT17TG9jYWxlLlNldHRpbmdzLlN5bmMuQ29uZmlnLk1vZGFsLlRpdGxlfVxyXG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHByb3BzLm9uQ2xvc2U/LigpfVxyXG4gICAgICAgIGFjdGlvbnM9e1tcclxuICAgICAgICAgIDxDaGVja0J1dHRvbiBrZXk9XCJjaGVja1wiIC8+LFxyXG4gICAgICAgICAgPEljb25CdXR0b25cclxuICAgICAgICAgICAga2V5PVwiY29uZmlybVwiXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9e3Byb3BzLm9uQ2xvc2V9XHJcbiAgICAgICAgICAgIGljb249ezxDb25maXJtSWNvbiAvPn1cclxuICAgICAgICAgICAgYm9yZGVyZWRcclxuICAgICAgICAgICAgdGV4dD17TG9jYWxlLlVJLkNvbmZpcm19XHJcbiAgICAgICAgICAvPixcclxuICAgICAgICBdfVxyXG4gICAgICA+XHJcbiAgICAgICAgPExpc3Q+XHJcbiAgICAgICAgICA8TGlzdEl0ZW1cclxuICAgICAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5TeW5jLkNvbmZpZy5TeW5jVHlwZS5UaXRsZX1cclxuICAgICAgICAgICAgc3ViVGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5TeW5jLkNvbmZpZy5TeW5jVHlwZS5TdWJUaXRsZX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAgIHZhbHVlPXtzeW5jU3RvcmUucHJvdmlkZXJ9XHJcbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzeW5jU3RvcmUudXBkYXRlKFxyXG4gICAgICAgICAgICAgICAgICAoY29uZmlnKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIChjb25maWcucHJvdmlkZXIgPSBlLnRhcmdldC52YWx1ZSBhcyBQcm92aWRlclR5cGUpLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge09iamVjdC5lbnRyaWVzKFByb3ZpZGVyVHlwZSkubWFwKChbaywgdl0pID0+IChcclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9e3Z9IGtleT17a30+XHJcbiAgICAgICAgICAgICAgICAgIHtrfVxyXG4gICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgPC9MaXN0SXRlbT5cclxuXHJcbiAgICAgICAgICA8TGlzdEl0ZW1cclxuICAgICAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5TeW5jLkNvbmZpZy5Qcm94eS5UaXRsZX1cclxuICAgICAgICAgICAgc3ViVGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5TeW5jLkNvbmZpZy5Qcm94eS5TdWJUaXRsZX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICBjaGVja2VkPXtzeW5jU3RvcmUudXNlUHJveHl9XHJcbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzeW5jU3RvcmUudXBkYXRlKFxyXG4gICAgICAgICAgICAgICAgICAoY29uZmlnKSA9PiAoY29uZmlnLnVzZVByb3h5ID0gZS5jdXJyZW50VGFyZ2V0LmNoZWNrZWQpLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA+PC9pbnB1dD5cclxuICAgICAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICAgICAgICB7c3luY1N0b3JlLnVzZVByb3h5ID8gKFxyXG4gICAgICAgICAgICA8TGlzdEl0ZW1cclxuICAgICAgICAgICAgICB0aXRsZT17TG9jYWxlLlNldHRpbmdzLlN5bmMuQ29uZmlnLlByb3h5VXJsLlRpdGxlfVxyXG4gICAgICAgICAgICAgIHN1YlRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuU3luYy5Db25maWcuUHJveHlVcmwuU3ViVGl0bGV9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgIHZhbHVlPXtzeW5jU3RvcmUucHJveHlVcmx9XHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgc3luY1N0b3JlLnVwZGF0ZShcclxuICAgICAgICAgICAgICAgICAgICAoY29uZmlnKSA9PiAoY29uZmlnLnByb3h5VXJsID0gZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSxcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPjwvaW5wdXQ+XHJcbiAgICAgICAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICAgICAgICApIDogbnVsbH1cclxuICAgICAgICA8L0xpc3Q+XHJcblxyXG4gICAgICAgIHtzeW5jU3RvcmUucHJvdmlkZXIgPT09IFByb3ZpZGVyVHlwZS5XZWJEQVYgJiYgKFxyXG4gICAgICAgICAgPD5cclxuICAgICAgICAgICAgPExpc3Q+XHJcbiAgICAgICAgICAgICAgPExpc3RJdGVtIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuU3luYy5Db25maWcuV2ViRGF2LkVuZHBvaW50fT5cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtzeW5jU3RvcmUud2ViZGF2LmVuZHBvaW50fVxyXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzeW5jU3RvcmUudXBkYXRlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNvbmZpZykgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmZpZy53ZWJkYXYuZW5kcG9pbnQgPSBlLmN1cnJlbnRUYXJnZXQudmFsdWUpLFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA+PC9pbnB1dD5cclxuICAgICAgICAgICAgICA8L0xpc3RJdGVtPlxyXG5cclxuICAgICAgICAgICAgICA8TGlzdEl0ZW0gdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5TeW5jLkNvbmZpZy5XZWJEYXYuVXNlck5hbWV9PlxyXG4gICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgdmFsdWU9e3N5bmNTdG9yZS53ZWJkYXYudXNlcm5hbWV9XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHN5bmNTdG9yZS51cGRhdGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY29uZmlnKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY29uZmlnLndlYmRhdi51c2VybmFtZSA9IGUuY3VycmVudFRhcmdldC52YWx1ZSksXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgID48L2lucHV0PlxyXG4gICAgICAgICAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICAgICAgICAgICAgPExpc3RJdGVtIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuU3luYy5Db25maWcuV2ViRGF2LlBhc3N3b3JkfT5cclxuICAgICAgICAgICAgICAgIDxQYXNzd29yZElucHV0XHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtzeW5jU3RvcmUud2ViZGF2LnBhc3N3b3JkfVxyXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzeW5jU3RvcmUudXBkYXRlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNvbmZpZykgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmZpZy53ZWJkYXYucGFzc3dvcmQgPSBlLmN1cnJlbnRUYXJnZXQudmFsdWUpLFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA+PC9QYXNzd29yZElucHV0PlxyXG4gICAgICAgICAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICAgICAgICAgIDwvTGlzdD5cclxuICAgICAgICAgIDwvPlxyXG4gICAgICAgICl9XHJcblxyXG4gICAgICAgIHtzeW5jU3RvcmUucHJvdmlkZXIgPT09IFByb3ZpZGVyVHlwZS5VcFN0YXNoICYmIChcclxuICAgICAgICAgIDxMaXN0PlxyXG4gICAgICAgICAgICA8TGlzdEl0ZW0gdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5TeW5jLkNvbmZpZy5VcFN0YXNoLkVuZHBvaW50fT5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgIHZhbHVlPXtzeW5jU3RvcmUudXBzdGFzaC5lbmRwb2ludH1cclxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBzeW5jU3RvcmUudXBkYXRlKFxyXG4gICAgICAgICAgICAgICAgICAgIChjb25maWcpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAoY29uZmlnLnVwc3Rhc2guZW5kcG9pbnQgPSBlLmN1cnJlbnRUYXJnZXQudmFsdWUpLFxyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICA+PC9pbnB1dD5cclxuICAgICAgICAgICAgPC9MaXN0SXRlbT5cclxuXHJcbiAgICAgICAgICAgIDxMaXN0SXRlbSB0aXRsZT17TG9jYWxlLlNldHRpbmdzLlN5bmMuQ29uZmlnLlVwU3Rhc2guVXNlck5hbWV9PlxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgdmFsdWU9e3N5bmNTdG9yZS51cHN0YXNoLnVzZXJuYW1lfVxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e1NUT1JBR0VfS0VZfVxyXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHN5bmNTdG9yZS51cGRhdGUoXHJcbiAgICAgICAgICAgICAgICAgICAgKGNvbmZpZykgPT5cclxuICAgICAgICAgICAgICAgICAgICAgIChjb25maWcudXBzdGFzaC51c2VybmFtZSA9IGUuY3VycmVudFRhcmdldC52YWx1ZSksXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgID48L2lucHV0PlxyXG4gICAgICAgICAgICA8L0xpc3RJdGVtPlxyXG4gICAgICAgICAgICA8TGlzdEl0ZW0gdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5TeW5jLkNvbmZpZy5VcFN0YXNoLlBhc3N3b3JkfT5cclxuICAgICAgICAgICAgICA8UGFzc3dvcmRJbnB1dFxyXG4gICAgICAgICAgICAgICAgdmFsdWU9e3N5bmNTdG9yZS51cHN0YXNoLmFwaUtleX1cclxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBzeW5jU3RvcmUudXBkYXRlKFxyXG4gICAgICAgICAgICAgICAgICAgIChjb25maWcpID0+IChjb25maWcudXBzdGFzaC5hcGlLZXkgPSBlLmN1cnJlbnRUYXJnZXQudmFsdWUpLFxyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICA+PC9QYXNzd29yZElucHV0PlxyXG4gICAgICAgICAgICA8L0xpc3RJdGVtPlxyXG4gICAgICAgICAgPC9MaXN0PlxyXG4gICAgICAgICl9XHJcbiAgICAgIDwvTW9kYWw+XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBTeW5jSXRlbXMoKSB7XHJcbiAgY29uc3Qgc3luY1N0b3JlID0gdXNlU3luY1N0b3JlKCk7XHJcbiAgY29uc3QgY2hhdFN0b3JlID0gdXNlQ2hhdFN0b3JlKCk7XHJcbiAgY29uc3QgcHJvbXB0U3RvcmUgPSB1c2VQcm9tcHRTdG9yZSgpO1xyXG4gIGNvbnN0IG1hc2tTdG9yZSA9IHVzZU1hc2tTdG9yZSgpO1xyXG4gIGNvbnN0IGNvdWxkU3luYyA9IHVzZU1lbW8oKCkgPT4ge1xyXG4gICAgcmV0dXJuIHN5bmNTdG9yZS5jbG91ZFN5bmMoKTtcclxuICB9LCBbc3luY1N0b3JlXSk7XHJcblxyXG4gIGNvbnN0IFtzaG93U3luY0NvbmZpZ01vZGFsLCBzZXRTaG93U3luY0NvbmZpZ01vZGFsXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuXHJcbiAgY29uc3Qgc3RhdGVPdmVydmlldyA9IHVzZU1lbW8oKCkgPT4ge1xyXG4gICAgY29uc3Qgc2Vzc2lvbnMgPSBjaGF0U3RvcmUuc2Vzc2lvbnM7XHJcbiAgICBjb25zdCBtZXNzYWdlQ291bnQgPSBzZXNzaW9ucy5yZWR1Y2UoKHAsIGMpID0+IHAgKyBjLm1lc3NhZ2VzLmxlbmd0aCwgMCk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY2hhdDogc2Vzc2lvbnMubGVuZ3RoLFxyXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlQ291bnQsXHJcbiAgICAgIHByb21wdDogT2JqZWN0LmtleXMocHJvbXB0U3RvcmUucHJvbXB0cykubGVuZ3RoLFxyXG4gICAgICBtYXNrOiBPYmplY3Qua2V5cyhtYXNrU3RvcmUubWFza3MpLmxlbmd0aCxcclxuICAgIH07XHJcbiAgfSwgW2NoYXRTdG9yZS5zZXNzaW9ucywgbWFza1N0b3JlLm1hc2tzLCBwcm9tcHRTdG9yZS5wcm9tcHRzXSk7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8PlxyXG4gICAgICA8TGlzdD5cclxuICAgICAgICA8TGlzdEl0ZW1cclxuICAgICAgICAgIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuU3luYy5Mb2NhbFN0YXRlfVxyXG4gICAgICAgICAgc3ViVGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5TeW5jLk92ZXJ2aWV3KHN0YXRlT3ZlcnZpZXcpfVxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogXCJmbGV4XCIgfX0+XHJcbiAgICAgICAgICAgIDxJY29uQnV0dG9uXHJcbiAgICAgICAgICAgICAgYXJpYT17TG9jYWxlLlNldHRpbmdzLlN5bmMuTG9jYWxTdGF0ZSArIExvY2FsZS5VSS5FeHBvcnR9XHJcbiAgICAgICAgICAgICAgaWNvbj17PFVwbG9hZEljb24gLz59XHJcbiAgICAgICAgICAgICAgdGV4dD17TG9jYWxlLlVJLkV4cG9ydH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzeW5jU3RvcmUuZXhwb3J0KCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPEljb25CdXR0b25cclxuICAgICAgICAgICAgICBhcmlhPXtMb2NhbGUuU2V0dGluZ3MuU3luYy5Mb2NhbFN0YXRlICsgTG9jYWxlLlVJLkltcG9ydH1cclxuICAgICAgICAgICAgICBpY29uPXs8RG93bmxvYWRJY29uIC8+fVxyXG4gICAgICAgICAgICAgIHRleHQ9e0xvY2FsZS5VSS5JbXBvcnR9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc3luY1N0b3JlLmltcG9ydCgpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L0xpc3RJdGVtPlxyXG4gICAgICA8L0xpc3Q+XHJcblxyXG4gICAgICB7c2hvd1N5bmNDb25maWdNb2RhbCAmJiAoXHJcbiAgICAgICAgPFN5bmNDb25maWdNb2RhbCBvbkNsb3NlPXsoKSA9PiBzZXRTaG93U3luY0NvbmZpZ01vZGFsKGZhbHNlKX0gLz5cclxuICAgICAgKX1cclxuICAgIDwvPlxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBTZXR0aW5ncygpIHtcclxuICBjb25zdCBuYXZpZ2F0ZSA9IHVzZU5hdmlnYXRlKCk7XHJcbiAgY29uc3QgW3Nob3dFbW9qaVBpY2tlciwgc2V0U2hvd0Vtb2ppUGlja2VyXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuICBjb25zdCBjb25maWcgPSB1c2VBcHBDb25maWcoKTtcclxuICBjb25zdCB1cGRhdGVDb25maWcgPSBjb25maWcudXBkYXRlO1xyXG5cclxuICBjb25zdCB1cGRhdGVTdG9yZSA9IHVzZVVwZGF0ZVN0b3JlKCk7XHJcbiAgY29uc3QgW2NoZWNraW5nVXBkYXRlLCBzZXRDaGVja2luZ1VwZGF0ZV0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcbiAgY29uc3QgY3VycmVudFZlcnNpb24gPSB1cGRhdGVTdG9yZS5mb3JtYXRWZXJzaW9uKHVwZGF0ZVN0b3JlLnZlcnNpb24pO1xyXG4gIGNvbnN0IHJlbW90ZUlkID0gdXBkYXRlU3RvcmUuZm9ybWF0VmVyc2lvbih1cGRhdGVTdG9yZS5yZW1vdGVWZXJzaW9uKTtcclxuICBjb25zdCBoYXNOZXdWZXJzaW9uID0gc2VtdmVyQ29tcGFyZShjdXJyZW50VmVyc2lvbiwgcmVtb3RlSWQpID09PSAtMTtcclxuICBjb25zdCB1cGRhdGVVcmwgPSBnZXRDbGllbnRDb25maWcoKT8uaXNBcHAgPyBSRUxFQVNFX1VSTCA6IFVQREFURV9VUkw7XHJcblxyXG4gIGZ1bmN0aW9uIGNoZWNrVXBkYXRlKGZvcmNlID0gZmFsc2UpIHtcclxuICAgIHNldENoZWNraW5nVXBkYXRlKHRydWUpO1xyXG4gICAgdXBkYXRlU3RvcmUuZ2V0TGF0ZXN0VmVyc2lvbihmb3JjZSkudGhlbigoKSA9PiB7XHJcbiAgICAgIHNldENoZWNraW5nVXBkYXRlKGZhbHNlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKFwiW1VwZGF0ZV0gbG9jYWwgdmVyc2lvbiBcIiwgdXBkYXRlU3RvcmUudmVyc2lvbik7XHJcbiAgICBjb25zb2xlLmxvZyhcIltVcGRhdGVdIHJlbW90ZSB2ZXJzaW9uIFwiLCB1cGRhdGVTdG9yZS5yZW1vdGVWZXJzaW9uKTtcclxuICB9XHJcblxyXG4gIGNvbnN0IGFjY2Vzc1N0b3JlID0gdXNlQWNjZXNzU3RvcmUoKTtcclxuICBjb25zdCBzaG91bGRIaWRlQmFsYW5jZVF1ZXJ5ID0gdXNlTWVtbygoKSA9PiB7XHJcbiAgICBjb25zdCBpc09wZW5BaVVybCA9IGFjY2Vzc1N0b3JlLm9wZW5haVVybC5pbmNsdWRlcyhPUEVOQUlfQkFTRV9VUkwpO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIGFjY2Vzc1N0b3JlLmhpZGVCYWxhbmNlUXVlcnkgfHxcclxuICAgICAgaXNPcGVuQWlVcmwgfHxcclxuICAgICAgYWNjZXNzU3RvcmUucHJvdmlkZXIgPT09IFNlcnZpY2VQcm92aWRlci5BenVyZVxyXG4gICAgKTtcclxuICB9LCBbXHJcbiAgICBhY2Nlc3NTdG9yZS5oaWRlQmFsYW5jZVF1ZXJ5LFxyXG4gICAgYWNjZXNzU3RvcmUub3BlbmFpVXJsLFxyXG4gICAgYWNjZXNzU3RvcmUucHJvdmlkZXIsXHJcbiAgXSk7XHJcblxyXG4gIGNvbnN0IHVzYWdlID0ge1xyXG4gICAgdXNlZDogdXBkYXRlU3RvcmUudXNlZCxcclxuICAgIHN1YnNjcmlwdGlvbjogdXBkYXRlU3RvcmUuc3Vic2NyaXB0aW9uLFxyXG4gIH07XHJcbiAgY29uc3QgW2xvYWRpbmdVc2FnZSwgc2V0TG9hZGluZ1VzYWdlXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuICBmdW5jdGlvbiBjaGVja1VzYWdlKGZvcmNlID0gZmFsc2UpIHtcclxuICAgIGlmIChzaG91bGRIaWRlQmFsYW5jZVF1ZXJ5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBzZXRMb2FkaW5nVXNhZ2UodHJ1ZSk7XHJcbiAgICB1cGRhdGVTdG9yZS51cGRhdGVVc2FnZShmb3JjZSkuZmluYWxseSgoKSA9PiB7XHJcbiAgICAgIHNldExvYWRpbmdVc2FnZShmYWxzZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNvbnN0IGVuYWJsZWRBY2Nlc3NDb250cm9sID0gdXNlTWVtbyhcclxuICAgICgpID0+IGFjY2Vzc1N0b3JlLmVuYWJsZWRBY2Nlc3NDb250cm9sKCksXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXHJcbiAgICBbXSxcclxuICApO1xyXG5cclxuICBjb25zdCBwcm9tcHRTdG9yZSA9IHVzZVByb21wdFN0b3JlKCk7XHJcbiAgY29uc3QgYnVpbHRpbkNvdW50ID0gU2VhcmNoU2VydmljZS5jb3VudC5idWlsdGluO1xyXG4gIGNvbnN0IGN1c3RvbUNvdW50ID0gcHJvbXB0U3RvcmUuZ2V0VXNlclByb21wdHMoKS5sZW5ndGggPz8gMDtcclxuICBjb25zdCBbc2hvdWxkU2hvd1Byb21wdE1vZGFsLCBzZXRTaG93UHJvbXB0TW9kYWxdID0gdXNlU3RhdGUoZmFsc2UpO1xyXG5cclxuICBjb25zdCBzaG93VXNhZ2UgPSBhY2Nlc3NTdG9yZS5pc0F1dGhvcml6ZWQoKTtcclxuICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgLy8gY2hlY2tzIHBlciBtaW51dGVzXHJcbiAgICBjaGVja1VwZGF0ZSgpO1xyXG4gICAgc2hvd1VzYWdlICYmIGNoZWNrVXNhZ2UoKTtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcclxuICB9LCBbXSk7XHJcblxyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zdCBrZXlkb3duRXZlbnQgPSAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xyXG4gICAgICBpZiAoZS5rZXkgPT09IFwiRXNjYXBlXCIpIHtcclxuICAgICAgICBuYXZpZ2F0ZShQYXRoLkhvbWUpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgaWYgKGNsaWVudENvbmZpZz8uaXNBcHApIHtcclxuICAgICAgLy8gRm9yY2UgdG8gc2V0IGN1c3RvbSBlbmRwb2ludCB0byB0cnVlIGlmIGl0J3MgYXBwXHJcbiAgICAgIGFjY2Vzc1N0b3JlLnVwZGF0ZSgoc3RhdGUpID0+IHtcclxuICAgICAgICBzdGF0ZS51c2VDdXN0b21Db25maWcgPSB0cnVlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGtleWRvd25FdmVudCk7XHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBrZXlkb3duRXZlbnQpO1xyXG4gICAgfTtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcclxuICB9LCBbXSk7XHJcblxyXG4gIGNvbnN0IGNsaWVudENvbmZpZyA9IHVzZU1lbW8oKCkgPT4gZ2V0Q2xpZW50Q29uZmlnKCksIFtdKTtcclxuICBjb25zdCBzaG93QWNjZXNzQ29kZSA9IGVuYWJsZWRBY2Nlc3NDb250cm9sICYmICFjbGllbnRDb25maWc/LmlzQXBwO1xyXG5cclxuICBjb25zdCBhY2Nlc3NDb2RlQ29tcG9uZW50ID0gc2hvd0FjY2Vzc0NvZGUgJiYgKFxyXG4gICAgPExpc3RJdGVtXHJcbiAgICAgIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkFjY2Vzc0NvZGUuVGl0bGV9XHJcbiAgICAgIHN1YlRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkFjY2Vzc0NvZGUuU3ViVGl0bGV9XHJcbiAgICA+XHJcbiAgICAgIDxQYXNzd29yZElucHV0XHJcbiAgICAgICAgdmFsdWU9e2FjY2Vzc1N0b3JlLmFjY2Vzc0NvZGV9XHJcbiAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkFjY2Vzc0NvZGUuUGxhY2Vob2xkZXJ9XHJcbiAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XHJcbiAgICAgICAgICBhY2Nlc3NTdG9yZS51cGRhdGUoXHJcbiAgICAgICAgICAgIChhY2Nlc3MpID0+IChhY2Nlc3MuYWNjZXNzQ29kZSA9IGUuY3VycmVudFRhcmdldC52YWx1ZSksXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH19XHJcbiAgICAgIC8+XHJcbiAgICA8L0xpc3RJdGVtPlxyXG4gICk7XHJcblxyXG4gIGNvbnN0IHNhYXNTdGFydENvbXBvbmVudCA9IChcclxuICAgIDxMaXN0SXRlbVxyXG4gICAgICBjbGFzc05hbWU9e3N0eWxlc1tcInN1YnRpdGxlLWJ1dHRvblwiXX1cclxuICAgICAgdGl0bGU9e1xyXG4gICAgICAgIExvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuU2Fhc1N0YXJ0LlRpdGxlICtcclxuICAgICAgICBgJHtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLlNhYXNTdGFydC5MYWJlbH1gXHJcbiAgICAgIH1cclxuICAgICAgc3ViVGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuU2Fhc1N0YXJ0LlN1YlRpdGxlfVxyXG4gICAgPlxyXG4gICAgICA8SWNvbkJ1dHRvblxyXG4gICAgICAgIGFyaWE9e1xyXG4gICAgICAgICAgTG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5TYWFzU3RhcnQuVGl0bGUgK1xyXG4gICAgICAgICAgTG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5TYWFzU3RhcnQuQ2hhdE5vd1xyXG4gICAgICAgIH1cclxuICAgICAgICBpY29uPXs8RmlyZUljb24gLz59XHJcbiAgICAgICAgdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgdGV4dD17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5TYWFzU3RhcnQuQ2hhdE5vd31cclxuICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICB0cmFja1NldHRpbmdzUGFnZUd1aWRlVG9DUGF5bWVudENsaWNrKCk7XHJcbiAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IFNBQVNfQ0hBVF9VUkw7XHJcbiAgICAgICAgfX1cclxuICAgICAgLz5cclxuICAgIDwvTGlzdEl0ZW0+XHJcbiAgKTtcclxuXHJcbiAgY29uc3QgdXNlQ3VzdG9tQ29uZmlnQ29tcG9uZW50ID0gLy8gQ29uZGl0aW9uYWxseSByZW5kZXIgdGhlIGZvbGxvd2luZyBMaXN0SXRlbSBiYXNlZCBvbiBjbGllbnRDb25maWcuaXNBcHBcclxuICAgICFjbGllbnRDb25maWc/LmlzQXBwICYmICggLy8gb25seSBzaG93IGlmIGlzQXBwIGlzIGZhbHNlXHJcbiAgICAgIDxMaXN0SXRlbVxyXG4gICAgICAgIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkN1c3RvbUVuZHBvaW50LlRpdGxlfVxyXG4gICAgICAgIHN1YlRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkN1c3RvbUVuZHBvaW50LlN1YlRpdGxlfVxyXG4gICAgICA+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBhcmlhLWxhYmVsPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkN1c3RvbUVuZHBvaW50LlRpdGxlfVxyXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgIGNoZWNrZWQ9e2FjY2Vzc1N0b3JlLnVzZUN1c3RvbUNvbmZpZ31cclxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT5cclxuICAgICAgICAgICAgYWNjZXNzU3RvcmUudXBkYXRlKFxyXG4gICAgICAgICAgICAgIChhY2Nlc3MpID0+IChhY2Nlc3MudXNlQ3VzdG9tQ29uZmlnID0gZS5jdXJyZW50VGFyZ2V0LmNoZWNrZWQpLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPjwvaW5wdXQ+XHJcbiAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICApO1xyXG5cclxuICBjb25zdCBvcGVuQUlDb25maWdDb21wb25lbnQgPSBhY2Nlc3NTdG9yZS5wcm92aWRlciA9PT1cclxuICAgIFNlcnZpY2VQcm92aWRlci5PcGVuQUkgJiYgKFxyXG4gICAgPD5cclxuICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuT3BlbkFJLkVuZHBvaW50LlRpdGxlfVxyXG4gICAgICAgIHN1YlRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLk9wZW5BSS5FbmRwb2ludC5TdWJUaXRsZX1cclxuICAgICAgPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgYXJpYS1sYWJlbD17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5PcGVuQUkuRW5kcG9pbnQuVGl0bGV9XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICB2YWx1ZT17YWNjZXNzU3RvcmUub3BlbmFpVXJsfVxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9e09QRU5BSV9CQVNFX1VSTH1cclxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT5cclxuICAgICAgICAgICAgYWNjZXNzU3RvcmUudXBkYXRlKFxyXG4gICAgICAgICAgICAgIChhY2Nlc3MpID0+IChhY2Nlc3Mub3BlbmFpVXJsID0gZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgID48L2lucHV0PlxyXG4gICAgICA8L0xpc3RJdGVtPlxyXG4gICAgICA8TGlzdEl0ZW1cclxuICAgICAgICB0aXRsZT17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5PcGVuQUkuQXBpS2V5LlRpdGxlfVxyXG4gICAgICAgIHN1YlRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLk9wZW5BSS5BcGlLZXkuU3ViVGl0bGV9XHJcbiAgICAgID5cclxuICAgICAgICA8UGFzc3dvcmRJbnB1dFxyXG4gICAgICAgICAgYXJpYT17TG9jYWxlLlNldHRpbmdzLlNob3dQYXNzd29yZH1cclxuICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuT3BlbkFJLkFwaUtleS5UaXRsZX1cclxuICAgICAgICAgIHZhbHVlPXthY2Nlc3NTdG9yZS5vcGVuYWlBcGlLZXl9XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5PcGVuQUkuQXBpS2V5LlBsYWNlaG9sZGVyfVxyXG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgIGFjY2Vzc1N0b3JlLnVwZGF0ZShcclxuICAgICAgICAgICAgICAoYWNjZXNzKSA9PiAoYWNjZXNzLm9wZW5haUFwaUtleSA9IGUuY3VycmVudFRhcmdldC52YWx1ZSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICA8Lz5cclxuICApO1xyXG5cclxuICBjb25zdCBhenVyZUNvbmZpZ0NvbXBvbmVudCA9IGFjY2Vzc1N0b3JlLnByb3ZpZGVyID09PVxyXG4gICAgU2VydmljZVByb3ZpZGVyLkF6dXJlICYmIChcclxuICAgIDw+XHJcbiAgICAgIDxMaXN0SXRlbVxyXG4gICAgICAgIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkF6dXJlLkVuZHBvaW50LlRpdGxlfVxyXG4gICAgICAgIHN1YlRpdGxlPXtcclxuICAgICAgICAgIExvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuQXp1cmUuRW5kcG9pbnQuU3ViVGl0bGUgKyBBenVyZS5FeGFtcGxlRW5kcG9pbnRcclxuICAgICAgICB9XHJcbiAgICAgID5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuQXp1cmUuRW5kcG9pbnQuVGl0bGV9XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICB2YWx1ZT17YWNjZXNzU3RvcmUuYXp1cmVVcmx9XHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj17QXp1cmUuRXhhbXBsZUVuZHBvaW50fVxyXG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PlxyXG4gICAgICAgICAgICBhY2Nlc3NTdG9yZS51cGRhdGUoXHJcbiAgICAgICAgICAgICAgKGFjY2VzcykgPT4gKGFjY2Vzcy5henVyZVVybCA9IGUuY3VycmVudFRhcmdldC52YWx1ZSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH1cclxuICAgICAgICA+PC9pbnB1dD5cclxuICAgICAgPC9MaXN0SXRlbT5cclxuICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuQXp1cmUuQXBpS2V5LlRpdGxlfVxyXG4gICAgICAgIHN1YlRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkF6dXJlLkFwaUtleS5TdWJUaXRsZX1cclxuICAgICAgPlxyXG4gICAgICAgIDxQYXNzd29yZElucHV0XHJcbiAgICAgICAgICBhcmlhLWxhYmVsPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkF6dXJlLkFwaUtleS5UaXRsZX1cclxuICAgICAgICAgIHZhbHVlPXthY2Nlc3NTdG9yZS5henVyZUFwaUtleX1cclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkF6dXJlLkFwaUtleS5QbGFjZWhvbGRlcn1cclxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICBhY2Nlc3NTdG9yZS51cGRhdGUoXHJcbiAgICAgICAgICAgICAgKGFjY2VzcykgPT4gKGFjY2Vzcy5henVyZUFwaUtleSA9IGUuY3VycmVudFRhcmdldC52YWx1ZSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICAgIDxMaXN0SXRlbVxyXG4gICAgICAgIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkF6dXJlLkFwaVZlcmlvbi5UaXRsZX1cclxuICAgICAgICBzdWJUaXRsZT17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5BenVyZS5BcGlWZXJpb24uU3ViVGl0bGV9XHJcbiAgICAgID5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuQXp1cmUuQXBpVmVyaW9uLlRpdGxlfVxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgdmFsdWU9e2FjY2Vzc1N0b3JlLmF6dXJlQXBpVmVyc2lvbn1cclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiMjAyMy0wOC0wMS1wcmV2aWV3XCJcclxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT5cclxuICAgICAgICAgICAgYWNjZXNzU3RvcmUudXBkYXRlKFxyXG4gICAgICAgICAgICAgIChhY2Nlc3MpID0+IChhY2Nlc3MuYXp1cmVBcGlWZXJzaW9uID0gZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgID48L2lucHV0PlxyXG4gICAgICA8L0xpc3RJdGVtPlxyXG4gICAgPC8+XHJcbiAgKTtcclxuXHJcbiAgY29uc3QgZ29vZ2xlQ29uZmlnQ29tcG9uZW50ID0gYWNjZXNzU3RvcmUucHJvdmlkZXIgPT09XHJcbiAgICBTZXJ2aWNlUHJvdmlkZXIuR29vZ2xlICYmIChcclxuICAgIDw+XHJcbiAgICAgIDxMaXN0SXRlbVxyXG4gICAgICAgIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkdvb2dsZS5FbmRwb2ludC5UaXRsZX1cclxuICAgICAgICBzdWJUaXRsZT17XHJcbiAgICAgICAgICBMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkdvb2dsZS5FbmRwb2ludC5TdWJUaXRsZSArXHJcbiAgICAgICAgICBHb29nbGUuRXhhbXBsZUVuZHBvaW50XHJcbiAgICAgICAgfVxyXG4gICAgICA+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBhcmlhLWxhYmVsPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkdvb2dsZS5FbmRwb2ludC5UaXRsZX1cclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIHZhbHVlPXthY2Nlc3NTdG9yZS5nb29nbGVVcmx9XHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj17R29vZ2xlLkV4YW1wbGVFbmRwb2ludH1cclxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT5cclxuICAgICAgICAgICAgYWNjZXNzU3RvcmUudXBkYXRlKFxyXG4gICAgICAgICAgICAgIChhY2Nlc3MpID0+IChhY2Nlc3MuZ29vZ2xlVXJsID0gZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgID48L2lucHV0PlxyXG4gICAgICA8L0xpc3RJdGVtPlxyXG4gICAgICA8TGlzdEl0ZW1cclxuICAgICAgICB0aXRsZT17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5Hb29nbGUuQXBpS2V5LlRpdGxlfVxyXG4gICAgICAgIHN1YlRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkdvb2dsZS5BcGlLZXkuU3ViVGl0bGV9XHJcbiAgICAgID5cclxuICAgICAgICA8UGFzc3dvcmRJbnB1dFxyXG4gICAgICAgICAgYXJpYS1sYWJlbD17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5Hb29nbGUuQXBpS2V5LlRpdGxlfVxyXG4gICAgICAgICAgdmFsdWU9e2FjY2Vzc1N0b3JlLmdvb2dsZUFwaUtleX1cclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkdvb2dsZS5BcGlLZXkuUGxhY2Vob2xkZXJ9XHJcbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgICAgYWNjZXNzU3RvcmUudXBkYXRlKFxyXG4gICAgICAgICAgICAgIChhY2Nlc3MpID0+IChhY2Nlc3MuZ29vZ2xlQXBpS2V5ID0gZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgLz5cclxuICAgICAgPC9MaXN0SXRlbT5cclxuICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuR29vZ2xlLkFwaVZlcnNpb24uVGl0bGV9XHJcbiAgICAgICAgc3ViVGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuR29vZ2xlLkFwaVZlcnNpb24uU3ViVGl0bGV9XHJcbiAgICAgID5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuR29vZ2xlLkFwaVZlcnNpb24uVGl0bGV9XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICB2YWx1ZT17YWNjZXNzU3RvcmUuZ29vZ2xlQXBpVmVyc2lvbn1cclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiMjAyMy0wOC0wMS1wcmV2aWV3XCJcclxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT5cclxuICAgICAgICAgICAgYWNjZXNzU3RvcmUudXBkYXRlKFxyXG4gICAgICAgICAgICAgIChhY2Nlc3MpID0+IChhY2Nlc3MuZ29vZ2xlQXBpVmVyc2lvbiA9IGUuY3VycmVudFRhcmdldC52YWx1ZSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH1cclxuICAgICAgICA+PC9pbnB1dD5cclxuICAgICAgPC9MaXN0SXRlbT5cclxuICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuR29vZ2xlLkdvb2dsZVNhZmV0eVNldHRpbmdzLlRpdGxlfVxyXG4gICAgICAgIHN1YlRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkdvb2dsZS5Hb29nbGVTYWZldHlTZXR0aW5ncy5TdWJUaXRsZX1cclxuICAgICAgPlxyXG4gICAgICAgIDxTZWxlY3RcclxuICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuR29vZ2xlLkdvb2dsZVNhZmV0eVNldHRpbmdzLlRpdGxlfVxyXG4gICAgICAgICAgdmFsdWU9e2FjY2Vzc1N0b3JlLmdvb2dsZVNhZmV0eVNldHRpbmdzfVxyXG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgIGFjY2Vzc1N0b3JlLnVwZGF0ZShcclxuICAgICAgICAgICAgICAoYWNjZXNzKSA9PlxyXG4gICAgICAgICAgICAgICAgKGFjY2Vzcy5nb29nbGVTYWZldHlTZXR0aW5ncyA9IGUudGFyZ2V0XHJcbiAgICAgICAgICAgICAgICAgIC52YWx1ZSBhcyBHb29nbGVTYWZldHlTZXR0aW5nc1RocmVzaG9sZCksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtPYmplY3QuZW50cmllcyhHb29nbGVTYWZldHlTZXR0aW5nc1RocmVzaG9sZCkubWFwKChbaywgdl0pID0+IChcclxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT17dn0ga2V5PXtrfT5cclxuICAgICAgICAgICAgICB7a31cclxuICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICApKX1cclxuICAgICAgICA8L1NlbGVjdD5cclxuICAgICAgPC9MaXN0SXRlbT5cclxuICAgIDwvPlxyXG4gICk7XHJcblxyXG4gIGNvbnN0IGFudGhyb3BpY0NvbmZpZ0NvbXBvbmVudCA9IGFjY2Vzc1N0b3JlLnByb3ZpZGVyID09PVxyXG4gICAgU2VydmljZVByb3ZpZGVyLkFudGhyb3BpYyAmJiAoXHJcbiAgICA8PlxyXG4gICAgICA8TGlzdEl0ZW1cclxuICAgICAgICB0aXRsZT17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5BbnRocm9waWMuRW5kcG9pbnQuVGl0bGV9XHJcbiAgICAgICAgc3ViVGl0bGU9e1xyXG4gICAgICAgICAgTG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5BbnRocm9waWMuRW5kcG9pbnQuU3ViVGl0bGUgK1xyXG4gICAgICAgICAgQW50aHJvcGljLkV4YW1wbGVFbmRwb2ludFxyXG4gICAgICAgIH1cclxuICAgICAgPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgYXJpYS1sYWJlbD17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5BbnRocm9waWMuRW5kcG9pbnQuVGl0bGV9XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICB2YWx1ZT17YWNjZXNzU3RvcmUuYW50aHJvcGljVXJsfVxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9e0FudGhyb3BpYy5FeGFtcGxlRW5kcG9pbnR9XHJcbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+XHJcbiAgICAgICAgICAgIGFjY2Vzc1N0b3JlLnVwZGF0ZShcclxuICAgICAgICAgICAgICAoYWNjZXNzKSA9PiAoYWNjZXNzLmFudGhyb3BpY1VybCA9IGUuY3VycmVudFRhcmdldC52YWx1ZSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH1cclxuICAgICAgICA+PC9pbnB1dD5cclxuICAgICAgPC9MaXN0SXRlbT5cclxuICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuQW50aHJvcGljLkFwaUtleS5UaXRsZX1cclxuICAgICAgICBzdWJUaXRsZT17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5BbnRocm9waWMuQXBpS2V5LlN1YlRpdGxlfVxyXG4gICAgICA+XHJcbiAgICAgICAgPFBhc3N3b3JkSW5wdXRcclxuICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuQW50aHJvcGljLkFwaUtleS5UaXRsZX1cclxuICAgICAgICAgIHZhbHVlPXthY2Nlc3NTdG9yZS5hbnRocm9waWNBcGlLZXl9XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5BbnRocm9waWMuQXBpS2V5LlBsYWNlaG9sZGVyfVxyXG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgIGFjY2Vzc1N0b3JlLnVwZGF0ZShcclxuICAgICAgICAgICAgICAoYWNjZXNzKSA9PiAoYWNjZXNzLmFudGhyb3BpY0FwaUtleSA9IGUuY3VycmVudFRhcmdldC52YWx1ZSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICAgIDxMaXN0SXRlbVxyXG4gICAgICAgIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkFudGhyb3BpYy5BcGlWZXJpb24uVGl0bGV9XHJcbiAgICAgICAgc3ViVGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuQW50aHJvcGljLkFwaVZlcmlvbi5TdWJUaXRsZX1cclxuICAgICAgPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgYXJpYS1sYWJlbD17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5BbnRocm9waWMuQXBpVmVyaW9uLlRpdGxlfVxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgdmFsdWU9e2FjY2Vzc1N0b3JlLmFudGhyb3BpY0FwaVZlcnNpb259XHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj17QW50aHJvcGljLlZpc2lvbn1cclxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT5cclxuICAgICAgICAgICAgYWNjZXNzU3RvcmUudXBkYXRlKFxyXG4gICAgICAgICAgICAgIChhY2Nlc3MpID0+IChhY2Nlc3MuYW50aHJvcGljQXBpVmVyc2lvbiA9IGUuY3VycmVudFRhcmdldC52YWx1ZSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH1cclxuICAgICAgICA+PC9pbnB1dD5cclxuICAgICAgPC9MaXN0SXRlbT5cclxuICAgIDwvPlxyXG4gICk7XHJcblxyXG4gIGNvbnN0IGJhaWR1Q29uZmlnQ29tcG9uZW50ID0gYWNjZXNzU3RvcmUucHJvdmlkZXIgPT09XHJcbiAgICBTZXJ2aWNlUHJvdmlkZXIuQmFpZHUgJiYgKFxyXG4gICAgPD5cclxuICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuQmFpZHUuRW5kcG9pbnQuVGl0bGV9XHJcbiAgICAgICAgc3ViVGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuQmFpZHUuRW5kcG9pbnQuU3ViVGl0bGV9XHJcbiAgICAgID5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuQmFpZHUuRW5kcG9pbnQuVGl0bGV9XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICB2YWx1ZT17YWNjZXNzU3RvcmUuYmFpZHVVcmx9XHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj17QmFpZHUuRXhhbXBsZUVuZHBvaW50fVxyXG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PlxyXG4gICAgICAgICAgICBhY2Nlc3NTdG9yZS51cGRhdGUoXHJcbiAgICAgICAgICAgICAgKGFjY2VzcykgPT4gKGFjY2Vzcy5iYWlkdVVybCA9IGUuY3VycmVudFRhcmdldC52YWx1ZSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH1cclxuICAgICAgICA+PC9pbnB1dD5cclxuICAgICAgPC9MaXN0SXRlbT5cclxuICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuQmFpZHUuQXBpS2V5LlRpdGxlfVxyXG4gICAgICAgIHN1YlRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkJhaWR1LkFwaUtleS5TdWJUaXRsZX1cclxuICAgICAgPlxyXG4gICAgICAgIDxQYXNzd29yZElucHV0XHJcbiAgICAgICAgICBhcmlhLWxhYmVsPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkJhaWR1LkFwaUtleS5UaXRsZX1cclxuICAgICAgICAgIHZhbHVlPXthY2Nlc3NTdG9yZS5iYWlkdUFwaUtleX1cclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkJhaWR1LkFwaUtleS5QbGFjZWhvbGRlcn1cclxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICBhY2Nlc3NTdG9yZS51cGRhdGUoXHJcbiAgICAgICAgICAgICAgKGFjY2VzcykgPT4gKGFjY2Vzcy5iYWlkdUFwaUtleSA9IGUuY3VycmVudFRhcmdldC52YWx1ZSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICAgIDxMaXN0SXRlbVxyXG4gICAgICAgIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkJhaWR1LlNlY3JldEtleS5UaXRsZX1cclxuICAgICAgICBzdWJUaXRsZT17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5CYWlkdS5TZWNyZXRLZXkuU3ViVGl0bGV9XHJcbiAgICAgID5cclxuICAgICAgICA8UGFzc3dvcmRJbnB1dFxyXG4gICAgICAgICAgYXJpYS1sYWJlbD17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5CYWlkdS5TZWNyZXRLZXkuVGl0bGV9XHJcbiAgICAgICAgICB2YWx1ZT17YWNjZXNzU3RvcmUuYmFpZHVTZWNyZXRLZXl9XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5CYWlkdS5TZWNyZXRLZXkuUGxhY2Vob2xkZXJ9XHJcbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgICAgYWNjZXNzU3RvcmUudXBkYXRlKFxyXG4gICAgICAgICAgICAgIChhY2Nlc3MpID0+IChhY2Nlc3MuYmFpZHVTZWNyZXRLZXkgPSBlLmN1cnJlbnRUYXJnZXQudmFsdWUpLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAvPlxyXG4gICAgICA8L0xpc3RJdGVtPlxyXG4gICAgPC8+XHJcbiAgKTtcclxuXHJcbiAgY29uc3QgdGVuY2VudENvbmZpZ0NvbXBvbmVudCA9IGFjY2Vzc1N0b3JlLnByb3ZpZGVyID09PVxyXG4gICAgU2VydmljZVByb3ZpZGVyLlRlbmNlbnQgJiYgKFxyXG4gICAgPD5cclxuICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuVGVuY2VudC5FbmRwb2ludC5UaXRsZX1cclxuICAgICAgICBzdWJUaXRsZT17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5UZW5jZW50LkVuZHBvaW50LlN1YlRpdGxlfVxyXG4gICAgICA+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBhcmlhLWxhYmVsPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLlRlbmNlbnQuRW5kcG9pbnQuVGl0bGV9XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICB2YWx1ZT17YWNjZXNzU3RvcmUudGVuY2VudFVybH1cclxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtUZW5jZW50LkV4YW1wbGVFbmRwb2ludH1cclxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT5cclxuICAgICAgICAgICAgYWNjZXNzU3RvcmUudXBkYXRlKFxyXG4gICAgICAgICAgICAgIChhY2Nlc3MpID0+IChhY2Nlc3MudGVuY2VudFVybCA9IGUuY3VycmVudFRhcmdldC52YWx1ZSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH1cclxuICAgICAgICA+PC9pbnB1dD5cclxuICAgICAgPC9MaXN0SXRlbT5cclxuICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuVGVuY2VudC5BcGlLZXkuVGl0bGV9XHJcbiAgICAgICAgc3ViVGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuVGVuY2VudC5BcGlLZXkuU3ViVGl0bGV9XHJcbiAgICAgID5cclxuICAgICAgICA8UGFzc3dvcmRJbnB1dFxyXG4gICAgICAgICAgYXJpYS1sYWJlbD17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5UZW5jZW50LkFwaUtleS5UaXRsZX1cclxuICAgICAgICAgIHZhbHVlPXthY2Nlc3NTdG9yZS50ZW5jZW50U2VjcmV0SWR9XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5UZW5jZW50LkFwaUtleS5QbGFjZWhvbGRlcn1cclxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICBhY2Nlc3NTdG9yZS51cGRhdGUoXHJcbiAgICAgICAgICAgICAgKGFjY2VzcykgPT4gKGFjY2Vzcy50ZW5jZW50U2VjcmV0SWQgPSBlLmN1cnJlbnRUYXJnZXQudmFsdWUpLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAvPlxyXG4gICAgICA8L0xpc3RJdGVtPlxyXG4gICAgICA8TGlzdEl0ZW1cclxuICAgICAgICB0aXRsZT17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5UZW5jZW50LlNlY3JldEtleS5UaXRsZX1cclxuICAgICAgICBzdWJUaXRsZT17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5UZW5jZW50LlNlY3JldEtleS5TdWJUaXRsZX1cclxuICAgICAgPlxyXG4gICAgICAgIDxQYXNzd29yZElucHV0XHJcbiAgICAgICAgICBhcmlhLWxhYmVsPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLlRlbmNlbnQuU2VjcmV0S2V5LlRpdGxlfVxyXG4gICAgICAgICAgdmFsdWU9e2FjY2Vzc1N0b3JlLnRlbmNlbnRTZWNyZXRLZXl9XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5UZW5jZW50LlNlY3JldEtleS5QbGFjZWhvbGRlcn1cclxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICBhY2Nlc3NTdG9yZS51cGRhdGUoXHJcbiAgICAgICAgICAgICAgKGFjY2VzcykgPT4gKGFjY2Vzcy50ZW5jZW50U2VjcmV0S2V5ID0gZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgLz5cclxuICAgICAgPC9MaXN0SXRlbT5cclxuICAgIDwvPlxyXG4gICk7XHJcblxyXG4gIGNvbnN0IGJ5dGVEYW5jZUNvbmZpZ0NvbXBvbmVudCA9IGFjY2Vzc1N0b3JlLnByb3ZpZGVyID09PVxyXG4gICAgU2VydmljZVByb3ZpZGVyLkJ5dGVEYW5jZSAmJiAoXHJcbiAgICA8PlxyXG4gICAgICA8TGlzdEl0ZW1cclxuICAgICAgICB0aXRsZT17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5CeXRlRGFuY2UuRW5kcG9pbnQuVGl0bGV9XHJcbiAgICAgICAgc3ViVGl0bGU9e1xyXG4gICAgICAgICAgTG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5CeXRlRGFuY2UuRW5kcG9pbnQuU3ViVGl0bGUgK1xyXG4gICAgICAgICAgQnl0ZURhbmNlLkV4YW1wbGVFbmRwb2ludFxyXG4gICAgICAgIH1cclxuICAgICAgPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgYXJpYS1sYWJlbD17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5CeXRlRGFuY2UuRW5kcG9pbnQuVGl0bGV9XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICB2YWx1ZT17YWNjZXNzU3RvcmUuYnl0ZWRhbmNlVXJsfVxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9e0J5dGVEYW5jZS5FeGFtcGxlRW5kcG9pbnR9XHJcbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+XHJcbiAgICAgICAgICAgIGFjY2Vzc1N0b3JlLnVwZGF0ZShcclxuICAgICAgICAgICAgICAoYWNjZXNzKSA9PiAoYWNjZXNzLmJ5dGVkYW5jZVVybCA9IGUuY3VycmVudFRhcmdldC52YWx1ZSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH1cclxuICAgICAgICA+PC9pbnB1dD5cclxuICAgICAgPC9MaXN0SXRlbT5cclxuICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuQnl0ZURhbmNlLkFwaUtleS5UaXRsZX1cclxuICAgICAgICBzdWJUaXRsZT17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5CeXRlRGFuY2UuQXBpS2V5LlN1YlRpdGxlfVxyXG4gICAgICA+XHJcbiAgICAgICAgPFBhc3N3b3JkSW5wdXRcclxuICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuQnl0ZURhbmNlLkFwaUtleS5UaXRsZX1cclxuICAgICAgICAgIHZhbHVlPXthY2Nlc3NTdG9yZS5ieXRlZGFuY2VBcGlLZXl9XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5CeXRlRGFuY2UuQXBpS2V5LlBsYWNlaG9sZGVyfVxyXG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgIGFjY2Vzc1N0b3JlLnVwZGF0ZShcclxuICAgICAgICAgICAgICAoYWNjZXNzKSA9PiAoYWNjZXNzLmJ5dGVkYW5jZUFwaUtleSA9IGUuY3VycmVudFRhcmdldC52YWx1ZSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICA8Lz5cclxuICApO1xyXG5cclxuICBjb25zdCBhbGliYWJhQ29uZmlnQ29tcG9uZW50ID0gYWNjZXNzU3RvcmUucHJvdmlkZXIgPT09XHJcbiAgICBTZXJ2aWNlUHJvdmlkZXIuQWxpYmFiYSAmJiAoXHJcbiAgICA8PlxyXG4gICAgICA8TGlzdEl0ZW1cclxuICAgICAgICB0aXRsZT17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5BbGliYWJhLkVuZHBvaW50LlRpdGxlfVxyXG4gICAgICAgIHN1YlRpdGxlPXtcclxuICAgICAgICAgIExvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuQWxpYmFiYS5FbmRwb2ludC5TdWJUaXRsZSArXHJcbiAgICAgICAgICBBbGliYWJhLkV4YW1wbGVFbmRwb2ludFxyXG4gICAgICAgIH1cclxuICAgICAgPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgYXJpYS1sYWJlbD17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5BbGliYWJhLkVuZHBvaW50LlRpdGxlfVxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgdmFsdWU9e2FjY2Vzc1N0b3JlLmFsaWJhYmFVcmx9XHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj17QWxpYmFiYS5FeGFtcGxlRW5kcG9pbnR9XHJcbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+XHJcbiAgICAgICAgICAgIGFjY2Vzc1N0b3JlLnVwZGF0ZShcclxuICAgICAgICAgICAgICAoYWNjZXNzKSA9PiAoYWNjZXNzLmFsaWJhYmFVcmwgPSBlLmN1cnJlbnRUYXJnZXQudmFsdWUpLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPjwvaW5wdXQ+XHJcbiAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICAgIDxMaXN0SXRlbVxyXG4gICAgICAgIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkFsaWJhYmEuQXBpS2V5LlRpdGxlfVxyXG4gICAgICAgIHN1YlRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkFsaWJhYmEuQXBpS2V5LlN1YlRpdGxlfVxyXG4gICAgICA+XHJcbiAgICAgICAgPFBhc3N3b3JkSW5wdXRcclxuICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuQWxpYmFiYS5BcGlLZXkuVGl0bGV9XHJcbiAgICAgICAgICB2YWx1ZT17YWNjZXNzU3RvcmUuYWxpYmFiYUFwaUtleX1cclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkFsaWJhYmEuQXBpS2V5LlBsYWNlaG9sZGVyfVxyXG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgIGFjY2Vzc1N0b3JlLnVwZGF0ZShcclxuICAgICAgICAgICAgICAoYWNjZXNzKSA9PiAoYWNjZXNzLmFsaWJhYmFBcGlLZXkgPSBlLmN1cnJlbnRUYXJnZXQudmFsdWUpLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAvPlxyXG4gICAgICA8L0xpc3RJdGVtPlxyXG4gICAgPC8+XHJcbiAgKTtcclxuXHJcbiAgY29uc3QgbW9vbnNob3RDb25maWdDb21wb25lbnQgPSBhY2Nlc3NTdG9yZS5wcm92aWRlciA9PT1cclxuICAgIFNlcnZpY2VQcm92aWRlci5Nb29uc2hvdCAmJiAoXHJcbiAgICA8PlxyXG4gICAgICA8TGlzdEl0ZW1cclxuICAgICAgICB0aXRsZT17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5Nb29uc2hvdC5FbmRwb2ludC5UaXRsZX1cclxuICAgICAgICBzdWJUaXRsZT17XHJcbiAgICAgICAgICBMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLk1vb25zaG90LkVuZHBvaW50LlN1YlRpdGxlICtcclxuICAgICAgICAgIE1vb25zaG90LkV4YW1wbGVFbmRwb2ludFxyXG4gICAgICAgIH1cclxuICAgICAgPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgYXJpYS1sYWJlbD17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5Nb29uc2hvdC5FbmRwb2ludC5UaXRsZX1cclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIHZhbHVlPXthY2Nlc3NTdG9yZS5tb29uc2hvdFVybH1cclxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtNb29uc2hvdC5FeGFtcGxlRW5kcG9pbnR9XHJcbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+XHJcbiAgICAgICAgICAgIGFjY2Vzc1N0b3JlLnVwZGF0ZShcclxuICAgICAgICAgICAgICAoYWNjZXNzKSA9PiAoYWNjZXNzLm1vb25zaG90VXJsID0gZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgID48L2lucHV0PlxyXG4gICAgICA8L0xpc3RJdGVtPlxyXG4gICAgICA8TGlzdEl0ZW1cclxuICAgICAgICB0aXRsZT17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5Nb29uc2hvdC5BcGlLZXkuVGl0bGV9XHJcbiAgICAgICAgc3ViVGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuTW9vbnNob3QuQXBpS2V5LlN1YlRpdGxlfVxyXG4gICAgICA+XHJcbiAgICAgICAgPFBhc3N3b3JkSW5wdXRcclxuICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuTW9vbnNob3QuQXBpS2V5LlRpdGxlfVxyXG4gICAgICAgICAgdmFsdWU9e2FjY2Vzc1N0b3JlLm1vb25zaG90QXBpS2V5fVxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuTW9vbnNob3QuQXBpS2V5LlBsYWNlaG9sZGVyfVxyXG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgIGFjY2Vzc1N0b3JlLnVwZGF0ZShcclxuICAgICAgICAgICAgICAoYWNjZXNzKSA9PiAoYWNjZXNzLm1vb25zaG90QXBpS2V5ID0gZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgLz5cclxuICAgICAgPC9MaXN0SXRlbT5cclxuICAgIDwvPlxyXG4gICk7XHJcblxyXG4gIGNvbnN0IGRlZXBzZWVrQ29uZmlnQ29tcG9uZW50ID0gYWNjZXNzU3RvcmUucHJvdmlkZXIgPT09XHJcbiAgICBTZXJ2aWNlUHJvdmlkZXIuRGVlcFNlZWsgJiYgKFxyXG4gICAgPD5cclxuICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuRGVlcFNlZWsuRW5kcG9pbnQuVGl0bGV9XHJcbiAgICAgICAgc3ViVGl0bGU9e1xyXG4gICAgICAgICAgTG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5EZWVwU2Vlay5FbmRwb2ludC5TdWJUaXRsZSArXHJcbiAgICAgICAgICBEZWVwU2Vlay5FeGFtcGxlRW5kcG9pbnRcclxuICAgICAgICB9XHJcbiAgICAgID5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuRGVlcFNlZWsuRW5kcG9pbnQuVGl0bGV9XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICB2YWx1ZT17YWNjZXNzU3RvcmUuZGVlcHNlZWtVcmx9XHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj17RGVlcFNlZWsuRXhhbXBsZUVuZHBvaW50fVxyXG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PlxyXG4gICAgICAgICAgICBhY2Nlc3NTdG9yZS51cGRhdGUoXHJcbiAgICAgICAgICAgICAgKGFjY2VzcykgPT4gKGFjY2Vzcy5kZWVwc2Vla1VybCA9IGUuY3VycmVudFRhcmdldC52YWx1ZSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH1cclxuICAgICAgICA+PC9pbnB1dD5cclxuICAgICAgPC9MaXN0SXRlbT5cclxuICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuRGVlcFNlZWsuQXBpS2V5LlRpdGxlfVxyXG4gICAgICAgIHN1YlRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkRlZXBTZWVrLkFwaUtleS5TdWJUaXRsZX1cclxuICAgICAgPlxyXG4gICAgICAgIDxQYXNzd29yZElucHV0XHJcbiAgICAgICAgICBhcmlhLWxhYmVsPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkRlZXBTZWVrLkFwaUtleS5UaXRsZX1cclxuICAgICAgICAgIHZhbHVlPXthY2Nlc3NTdG9yZS5kZWVwc2Vla0FwaUtleX1cclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkRlZXBTZWVrLkFwaUtleS5QbGFjZWhvbGRlcn1cclxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICBhY2Nlc3NTdG9yZS51cGRhdGUoXHJcbiAgICAgICAgICAgICAgKGFjY2VzcykgPT4gKGFjY2Vzcy5kZWVwc2Vla0FwaUtleSA9IGUuY3VycmVudFRhcmdldC52YWx1ZSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICA8Lz5cclxuICApO1xyXG5cclxuICBjb25zdCBYQUlDb25maWdDb21wb25lbnQgPSBhY2Nlc3NTdG9yZS5wcm92aWRlciA9PT0gU2VydmljZVByb3ZpZGVyLlhBSSAmJiAoXHJcbiAgICA8PlxyXG4gICAgICA8TGlzdEl0ZW1cclxuICAgICAgICB0aXRsZT17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5YQUkuRW5kcG9pbnQuVGl0bGV9XHJcbiAgICAgICAgc3ViVGl0bGU9e1xyXG4gICAgICAgICAgTG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5YQUkuRW5kcG9pbnQuU3ViVGl0bGUgKyBYQUkuRXhhbXBsZUVuZHBvaW50XHJcbiAgICAgICAgfVxyXG4gICAgICA+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBhcmlhLWxhYmVsPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLlhBSS5FbmRwb2ludC5UaXRsZX1cclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIHZhbHVlPXthY2Nlc3NTdG9yZS54YWlVcmx9XHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj17WEFJLkV4YW1wbGVFbmRwb2ludH1cclxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT5cclxuICAgICAgICAgICAgYWNjZXNzU3RvcmUudXBkYXRlKFxyXG4gICAgICAgICAgICAgIChhY2Nlc3MpID0+IChhY2Nlc3MueGFpVXJsID0gZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgID48L2lucHV0PlxyXG4gICAgICA8L0xpc3RJdGVtPlxyXG4gICAgICA8TGlzdEl0ZW1cclxuICAgICAgICB0aXRsZT17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5YQUkuQXBpS2V5LlRpdGxlfVxyXG4gICAgICAgIHN1YlRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLlhBSS5BcGlLZXkuU3ViVGl0bGV9XHJcbiAgICAgID5cclxuICAgICAgICA8UGFzc3dvcmRJbnB1dFxyXG4gICAgICAgICAgYXJpYS1sYWJlbD17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5YQUkuQXBpS2V5LlRpdGxlfVxyXG4gICAgICAgICAgdmFsdWU9e2FjY2Vzc1N0b3JlLnhhaUFwaUtleX1cclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLlhBSS5BcGlLZXkuUGxhY2Vob2xkZXJ9XHJcbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgICAgYWNjZXNzU3RvcmUudXBkYXRlKFxyXG4gICAgICAgICAgICAgIChhY2Nlc3MpID0+IChhY2Nlc3MueGFpQXBpS2V5ID0gZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgLz5cclxuICAgICAgPC9MaXN0SXRlbT5cclxuICAgIDwvPlxyXG4gICk7XHJcblxyXG4gIGNvbnN0IGNoYXRnbG1Db25maWdDb21wb25lbnQgPSBhY2Nlc3NTdG9yZS5wcm92aWRlciA9PT1cclxuICAgIFNlcnZpY2VQcm92aWRlci5DaGF0R0xNICYmIChcclxuICAgIDw+XHJcbiAgICAgIDxMaXN0SXRlbVxyXG4gICAgICAgIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkNoYXRHTE0uRW5kcG9pbnQuVGl0bGV9XHJcbiAgICAgICAgc3ViVGl0bGU9e1xyXG4gICAgICAgICAgTG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5DaGF0R0xNLkVuZHBvaW50LlN1YlRpdGxlICtcclxuICAgICAgICAgIENoYXRHTE0uRXhhbXBsZUVuZHBvaW50XHJcbiAgICAgICAgfVxyXG4gICAgICA+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBhcmlhLWxhYmVsPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLkNoYXRHTE0uRW5kcG9pbnQuVGl0bGV9XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICB2YWx1ZT17YWNjZXNzU3RvcmUuY2hhdGdsbVVybH1cclxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtDaGF0R0xNLkV4YW1wbGVFbmRwb2ludH1cclxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT5cclxuICAgICAgICAgICAgYWNjZXNzU3RvcmUudXBkYXRlKFxyXG4gICAgICAgICAgICAgIChhY2Nlc3MpID0+IChhY2Nlc3MuY2hhdGdsbVVybCA9IGUuY3VycmVudFRhcmdldC52YWx1ZSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH1cclxuICAgICAgICA+PC9pbnB1dD5cclxuICAgICAgPC9MaXN0SXRlbT5cclxuICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuQ2hhdEdMTS5BcGlLZXkuVGl0bGV9XHJcbiAgICAgICAgc3ViVGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuQ2hhdEdMTS5BcGlLZXkuU3ViVGl0bGV9XHJcbiAgICAgID5cclxuICAgICAgICA8UGFzc3dvcmRJbnB1dFxyXG4gICAgICAgICAgYXJpYS1sYWJlbD17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5DaGF0R0xNLkFwaUtleS5UaXRsZX1cclxuICAgICAgICAgIHZhbHVlPXthY2Nlc3NTdG9yZS5jaGF0Z2xtQXBpS2V5fVxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuQ2hhdEdMTS5BcGlLZXkuUGxhY2Vob2xkZXJ9XHJcbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgICAgYWNjZXNzU3RvcmUudXBkYXRlKFxyXG4gICAgICAgICAgICAgIChhY2Nlc3MpID0+IChhY2Nlc3MuY2hhdGdsbUFwaUtleSA9IGUuY3VycmVudFRhcmdldC52YWx1ZSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICA8Lz5cclxuICApO1xyXG4gIGNvbnN0IHNpbGljb25mbG93Q29uZmlnQ29tcG9uZW50ID0gYWNjZXNzU3RvcmUucHJvdmlkZXIgPT09XHJcbiAgICBTZXJ2aWNlUHJvdmlkZXIuU2lsaWNvbkZsb3cgJiYgKFxyXG4gICAgPD5cclxuICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuU2lsaWNvbkZsb3cuRW5kcG9pbnQuVGl0bGV9XHJcbiAgICAgICAgc3ViVGl0bGU9e1xyXG4gICAgICAgICAgTG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5TaWxpY29uRmxvdy5FbmRwb2ludC5TdWJUaXRsZSArXHJcbiAgICAgICAgICBTaWxpY29uRmxvdy5FeGFtcGxlRW5kcG9pbnRcclxuICAgICAgICB9XHJcbiAgICAgID5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuU2lsaWNvbkZsb3cuRW5kcG9pbnQuVGl0bGV9XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICB2YWx1ZT17YWNjZXNzU3RvcmUuc2lsaWNvbmZsb3dVcmx9XHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj17U2lsaWNvbkZsb3cuRXhhbXBsZUVuZHBvaW50fVxyXG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PlxyXG4gICAgICAgICAgICBhY2Nlc3NTdG9yZS51cGRhdGUoXHJcbiAgICAgICAgICAgICAgKGFjY2VzcykgPT4gKGFjY2Vzcy5zaWxpY29uZmxvd1VybCA9IGUuY3VycmVudFRhcmdldC52YWx1ZSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH1cclxuICAgICAgICA+PC9pbnB1dD5cclxuICAgICAgPC9MaXN0SXRlbT5cclxuICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuU2lsaWNvbkZsb3cuQXBpS2V5LlRpdGxlfVxyXG4gICAgICAgIHN1YlRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLlNpbGljb25GbG93LkFwaUtleS5TdWJUaXRsZX1cclxuICAgICAgPlxyXG4gICAgICAgIDxQYXNzd29yZElucHV0XHJcbiAgICAgICAgICBhcmlhLWxhYmVsPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLlNpbGljb25GbG93LkFwaUtleS5UaXRsZX1cclxuICAgICAgICAgIHZhbHVlPXthY2Nlc3NTdG9yZS5zaWxpY29uZmxvd0FwaUtleX1cclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLlNpbGljb25GbG93LkFwaUtleS5QbGFjZWhvbGRlcn1cclxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICBhY2Nlc3NTdG9yZS51cGRhdGUoXHJcbiAgICAgICAgICAgICAgKGFjY2VzcykgPT4gKGFjY2Vzcy5zaWxpY29uZmxvd0FwaUtleSA9IGUuY3VycmVudFRhcmdldC52YWx1ZSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICA8Lz5cclxuICApO1xyXG5cclxuICBjb25zdCBzdGFiaWxpdHlDb25maWdDb21wb25lbnQgPSBhY2Nlc3NTdG9yZS5wcm92aWRlciA9PT1cclxuICAgIFNlcnZpY2VQcm92aWRlci5TdGFiaWxpdHkgJiYgKFxyXG4gICAgPD5cclxuICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuU3RhYmlsaXR5LkVuZHBvaW50LlRpdGxlfVxyXG4gICAgICAgIHN1YlRpdGxlPXtcclxuICAgICAgICAgIExvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuU3RhYmlsaXR5LkVuZHBvaW50LlN1YlRpdGxlICtcclxuICAgICAgICAgIFN0YWJpbGl0eS5FeGFtcGxlRW5kcG9pbnRcclxuICAgICAgICB9XHJcbiAgICAgID5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuU3RhYmlsaXR5LkVuZHBvaW50LlRpdGxlfVxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgdmFsdWU9e2FjY2Vzc1N0b3JlLnN0YWJpbGl0eVVybH1cclxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtTdGFiaWxpdHkuRXhhbXBsZUVuZHBvaW50fVxyXG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PlxyXG4gICAgICAgICAgICBhY2Nlc3NTdG9yZS51cGRhdGUoXHJcbiAgICAgICAgICAgICAgKGFjY2VzcykgPT4gKGFjY2Vzcy5zdGFiaWxpdHlVcmwgPSBlLmN1cnJlbnRUYXJnZXQudmFsdWUpLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPjwvaW5wdXQ+XHJcbiAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICAgIDxMaXN0SXRlbVxyXG4gICAgICAgIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLlN0YWJpbGl0eS5BcGlLZXkuVGl0bGV9XHJcbiAgICAgICAgc3ViVGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuU3RhYmlsaXR5LkFwaUtleS5TdWJUaXRsZX1cclxuICAgICAgPlxyXG4gICAgICAgIDxQYXNzd29yZElucHV0XHJcbiAgICAgICAgICBhcmlhLWxhYmVsPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLlN0YWJpbGl0eS5BcGlLZXkuVGl0bGV9XHJcbiAgICAgICAgICB2YWx1ZT17YWNjZXNzU3RvcmUuc3RhYmlsaXR5QXBpS2V5fVxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuU3RhYmlsaXR5LkFwaUtleS5QbGFjZWhvbGRlcn1cclxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICBhY2Nlc3NTdG9yZS51cGRhdGUoXHJcbiAgICAgICAgICAgICAgKGFjY2VzcykgPT4gKGFjY2Vzcy5zdGFiaWxpdHlBcGlLZXkgPSBlLmN1cnJlbnRUYXJnZXQudmFsdWUpLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAvPlxyXG4gICAgICA8L0xpc3RJdGVtPlxyXG4gICAgPC8+XHJcbiAgKTtcclxuICBjb25zdCBsZmx5dGVrQ29uZmlnQ29tcG9uZW50ID0gYWNjZXNzU3RvcmUucHJvdmlkZXIgPT09XHJcbiAgICBTZXJ2aWNlUHJvdmlkZXIuSWZseXRlayAmJiAoXHJcbiAgICA8PlxyXG4gICAgICA8TGlzdEl0ZW1cclxuICAgICAgICB0aXRsZT17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5JZmx5dGVrLkVuZHBvaW50LlRpdGxlfVxyXG4gICAgICAgIHN1YlRpdGxlPXtcclxuICAgICAgICAgIExvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuSWZseXRlay5FbmRwb2ludC5TdWJUaXRsZSArXHJcbiAgICAgICAgICBJZmx5dGVrLkV4YW1wbGVFbmRwb2ludFxyXG4gICAgICAgIH1cclxuICAgICAgPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgYXJpYS1sYWJlbD17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5JZmx5dGVrLkVuZHBvaW50LlRpdGxlfVxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgdmFsdWU9e2FjY2Vzc1N0b3JlLmlmbHl0ZWtVcmx9XHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj17SWZseXRlay5FeGFtcGxlRW5kcG9pbnR9XHJcbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+XHJcbiAgICAgICAgICAgIGFjY2Vzc1N0b3JlLnVwZGF0ZShcclxuICAgICAgICAgICAgICAoYWNjZXNzKSA9PiAoYWNjZXNzLmlmbHl0ZWtVcmwgPSBlLmN1cnJlbnRUYXJnZXQudmFsdWUpLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPjwvaW5wdXQ+XHJcbiAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICAgIDxMaXN0SXRlbVxyXG4gICAgICAgIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLklmbHl0ZWsuQXBpS2V5LlRpdGxlfVxyXG4gICAgICAgIHN1YlRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLklmbHl0ZWsuQXBpS2V5LlN1YlRpdGxlfVxyXG4gICAgICA+XHJcbiAgICAgICAgPFBhc3N3b3JkSW5wdXRcclxuICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuSWZseXRlay5BcGlLZXkuVGl0bGV9XHJcbiAgICAgICAgICB2YWx1ZT17YWNjZXNzU3RvcmUuaWZseXRla0FwaUtleX1cclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtMb2NhbGUuU2V0dGluZ3MuQWNjZXNzLklmbHl0ZWsuQXBpS2V5LlBsYWNlaG9sZGVyfVxyXG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgIGFjY2Vzc1N0b3JlLnVwZGF0ZShcclxuICAgICAgICAgICAgICAoYWNjZXNzKSA9PiAoYWNjZXNzLmlmbHl0ZWtBcGlLZXkgPSBlLmN1cnJlbnRUYXJnZXQudmFsdWUpLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAvPlxyXG4gICAgICA8L0xpc3RJdGVtPlxyXG5cclxuICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuSWZseXRlay5BcGlTZWNyZXQuVGl0bGV9XHJcbiAgICAgICAgc3ViVGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuSWZseXRlay5BcGlTZWNyZXQuU3ViVGl0bGV9XHJcbiAgICAgID5cclxuICAgICAgICA8UGFzc3dvcmRJbnB1dFxyXG4gICAgICAgICAgYXJpYS1sYWJlbD17TG9jYWxlLlNldHRpbmdzLkFjY2Vzcy5JZmx5dGVrLkFwaVNlY3JldC5UaXRsZX1cclxuICAgICAgICAgIHZhbHVlPXthY2Nlc3NTdG9yZS5pZmx5dGVrQXBpU2VjcmV0fVxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9e0xvY2FsZS5TZXR0aW5ncy5BY2Nlc3MuSWZseXRlay5BcGlTZWNyZXQuUGxhY2Vob2xkZXJ9XHJcbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgICAgYWNjZXNzU3RvcmUudXBkYXRlKFxyXG4gICAgICAgICAgICAgIChhY2Nlc3MpID0+IChhY2Nlc3MuaWZseXRla0FwaVNlY3JldCA9IGUuY3VycmVudFRhcmdldC52YWx1ZSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICA8Lz5cclxuICApO1xyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPEVycm9yQm91bmRhcnk+XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwid2luZG93LWhlYWRlclwiIGRhdGEtdGF1cmktZHJhZy1yZWdpb24+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3aW5kb3ctaGVhZGVyLXRpdGxlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIndpbmRvdy1oZWFkZXItbWFpbi10aXRsZVwiPlxyXG4gICAgICAgICAgICB7TG9jYWxlLlNldHRpbmdzLlRpdGxlfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIndpbmRvdy1oZWFkZXItc3ViLXRpdGxlXCI+XHJcbiAgICAgICAgICAgIHtMb2NhbGUuU2V0dGluZ3MuU3ViVGl0bGV9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIndpbmRvdy1hY3Rpb25zXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIndpbmRvdy1hY3Rpb24tYnV0dG9uXCI+PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIndpbmRvdy1hY3Rpb24tYnV0dG9uXCI+PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIndpbmRvdy1hY3Rpb24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgIDxJY29uQnV0dG9uXHJcbiAgICAgICAgICAgICAgYXJpYT17TG9jYWxlLlVJLkNsb3NlfVxyXG4gICAgICAgICAgICAgIGljb249ezxDbG9zZUljb24gLz59XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gbmF2aWdhdGUoUGF0aC5Ib21lKX1cclxuICAgICAgICAgICAgICBib3JkZXJlZFxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1wic2V0dGluZ3NcIl19PlxyXG4gICAgICAgIDxMaXN0PlxyXG4gICAgICAgICAgPExpc3RJdGVtIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQXZhdGFyfT5cclxuICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93RW1vamlQaWNrZXIoZmFsc2UpfVxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e1xyXG4gICAgICAgICAgICAgICAgPEF2YXRhclBpY2tlclxyXG4gICAgICAgICAgICAgICAgICBvbkVtb2ppQ2xpY2s9eyhhdmF0YXI6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNvbmZpZygoY29uZmlnKSA9PiAoY29uZmlnLmF2YXRhciA9IGF2YXRhcikpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFNob3dFbW9qaVBpY2tlcihmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBvcGVuPXtzaG93RW1vamlQaWNrZXJ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtMb2NhbGUuU2V0dGluZ3MuQXZhdGFyfVxyXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdmF0YXJ9XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHNldFNob3dFbW9qaVBpY2tlcighc2hvd0Vtb2ppUGlja2VyKTtcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPEF2YXRhciBhdmF0YXI9e2NvbmZpZy5hdmF0YXJ9IC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgIDwvTGlzdEl0ZW0+XHJcblxyXG4gICAgICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgICAgIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuVXBkYXRlLlZlcnNpb24oY3VycmVudFZlcnNpb24gPz8gXCJ1bmtub3duXCIpfVxyXG4gICAgICAgICAgICBzdWJUaXRsZT17XHJcbiAgICAgICAgICAgICAgY2hlY2tpbmdVcGRhdGVcclxuICAgICAgICAgICAgICAgID8gTG9jYWxlLlNldHRpbmdzLlVwZGF0ZS5Jc0NoZWNraW5nXHJcbiAgICAgICAgICAgICAgICA6IGhhc05ld1ZlcnNpb25cclxuICAgICAgICAgICAgICAgID8gTG9jYWxlLlNldHRpbmdzLlVwZGF0ZS5Gb3VuZFVwZGF0ZShyZW1vdGVJZCA/PyBcIkVSUk9SXCIpXHJcbiAgICAgICAgICAgICAgICA6IExvY2FsZS5TZXR0aW5ncy5VcGRhdGUuSXNMYXRlc3RcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7Y2hlY2tpbmdVcGRhdGUgPyAoXHJcbiAgICAgICAgICAgICAgPExvYWRpbmdJY29uIC8+XHJcbiAgICAgICAgICAgICkgOiBoYXNOZXdWZXJzaW9uID8gKFxyXG4gICAgICAgICAgICAgIGNsaWVudENvbmZpZz8uaXNBcHAgPyAoXHJcbiAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBpY29uPXs8UmVzZXRJY29uPjwvUmVzZXRJY29uPn1cclxuICAgICAgICAgICAgICAgICAgdGV4dD17TG9jYWxlLlNldHRpbmdzLlVwZGF0ZS5Hb1RvVXBkYXRlfVxyXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjbGllbnRVcGRhdGUoKX1cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgIDxMaW5rIGhyZWY9e3VwZGF0ZVVybH0gdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3NOYW1lPVwibGlua1wiPlxyXG4gICAgICAgICAgICAgICAgICB7TG9jYWxlLlNldHRpbmdzLlVwZGF0ZS5Hb1RvVXBkYXRlfVxyXG4gICAgICAgICAgICAgICAgPC9MaW5rPlxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxyXG4gICAgICAgICAgICAgICAgaWNvbj17PFJlc2V0SWNvbj48L1Jlc2V0SWNvbj59XHJcbiAgICAgICAgICAgICAgICB0ZXh0PXtMb2NhbGUuU2V0dGluZ3MuVXBkYXRlLkNoZWNrVXBkYXRlfVxyXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gY2hlY2tVcGRhdGUodHJ1ZSl9XHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgIDwvTGlzdEl0ZW0+XHJcblxyXG4gICAgICAgICAgPExpc3RJdGVtIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuU2VuZEtleX0+XHJcbiAgICAgICAgICAgIDxTZWxlY3RcclxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtMb2NhbGUuU2V0dGluZ3MuU2VuZEtleX1cclxuICAgICAgICAgICAgICB2YWx1ZT17Y29uZmlnLnN1Ym1pdEtleX1cclxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHVwZGF0ZUNvbmZpZyhcclxuICAgICAgICAgICAgICAgICAgKGNvbmZpZykgPT5cclxuICAgICAgICAgICAgICAgICAgICAoY29uZmlnLnN1Ym1pdEtleSA9IGUudGFyZ2V0LnZhbHVlIGFzIGFueSBhcyBTdWJtaXRLZXkpLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge09iamVjdC52YWx1ZXMoU3VibWl0S2V5KS5tYXAoKHYpID0+IChcclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9e3Z9IGtleT17dn0+XHJcbiAgICAgICAgICAgICAgICAgIHt2fVxyXG4gICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgIDwvU2VsZWN0PlxyXG4gICAgICAgICAgPC9MaXN0SXRlbT5cclxuXHJcbiAgICAgICAgICA8TGlzdEl0ZW0gdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5UaGVtZX0+XHJcbiAgICAgICAgICAgIDxTZWxlY3RcclxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtMb2NhbGUuU2V0dGluZ3MuVGhlbWV9XHJcbiAgICAgICAgICAgICAgdmFsdWU9e2NvbmZpZy50aGVtZX1cclxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHVwZGF0ZUNvbmZpZyhcclxuICAgICAgICAgICAgICAgICAgKGNvbmZpZykgPT4gKGNvbmZpZy50aGVtZSA9IGUudGFyZ2V0LnZhbHVlIGFzIGFueSBhcyBUaGVtZSksXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7T2JqZWN0LnZhbHVlcyhUaGVtZSkubWFwKCh2KSA9PiAoXHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPXt2fSBrZXk9e3Z9PlxyXG4gICAgICAgICAgICAgICAgICB7dn1cclxuICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICA8L1NlbGVjdD5cclxuICAgICAgICAgIDwvTGlzdEl0ZW0+XHJcblxyXG4gICAgICAgICAgPExpc3RJdGVtIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuTGFuZy5OYW1lfT5cclxuICAgICAgICAgICAgPFNlbGVjdFxyXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5TZXR0aW5ncy5MYW5nLk5hbWV9XHJcbiAgICAgICAgICAgICAgdmFsdWU9e2dldExhbmcoKX1cclxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGNoYW5nZUxhbmcoZS50YXJnZXQudmFsdWUgYXMgYW55KTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge0FsbExhbmdzLm1hcCgobGFuZykgPT4gKFxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT17bGFuZ30ga2V5PXtsYW5nfT5cclxuICAgICAgICAgICAgICAgICAge0FMTF9MQU5HX09QVElPTlNbbGFuZ119XHJcbiAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgPC9TZWxlY3Q+XHJcbiAgICAgICAgICA8L0xpc3RJdGVtPlxyXG5cclxuICAgICAgICAgIDxMaXN0SXRlbVxyXG4gICAgICAgICAgICB0aXRsZT17TG9jYWxlLlNldHRpbmdzLkZvbnRTaXplLlRpdGxlfVxyXG4gICAgICAgICAgICBzdWJUaXRsZT17TG9jYWxlLlNldHRpbmdzLkZvbnRTaXplLlN1YlRpdGxlfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8SW5wdXRSYW5nZVxyXG4gICAgICAgICAgICAgIGFyaWE9e0xvY2FsZS5TZXR0aW5ncy5Gb250U2l6ZS5UaXRsZX1cclxuICAgICAgICAgICAgICB0aXRsZT17YCR7Y29uZmlnLmZvbnRTaXplID8/IDE0fXB4YH1cclxuICAgICAgICAgICAgICB2YWx1ZT17Y29uZmlnLmZvbnRTaXplfVxyXG4gICAgICAgICAgICAgIG1pbj1cIjEyXCJcclxuICAgICAgICAgICAgICBtYXg9XCI0MFwiXHJcbiAgICAgICAgICAgICAgc3RlcD1cIjFcIlxyXG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT5cclxuICAgICAgICAgICAgICAgIHVwZGF0ZUNvbmZpZyhcclxuICAgICAgICAgICAgICAgICAgKGNvbmZpZykgPT5cclxuICAgICAgICAgICAgICAgICAgICAoY29uZmlnLmZvbnRTaXplID0gTnVtYmVyLnBhcnNlSW50KGUuY3VycmVudFRhcmdldC52YWx1ZSkpLFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPjwvSW5wdXRSYW5nZT5cclxuICAgICAgICAgIDwvTGlzdEl0ZW0+XHJcblxyXG4gICAgICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgICAgIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuRm9udEZhbWlseS5UaXRsZX1cclxuICAgICAgICAgICAgc3ViVGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5Gb250RmFtaWx5LlN1YlRpdGxlfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtMb2NhbGUuU2V0dGluZ3MuRm9udEZhbWlseS5UaXRsZX1cclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9e2NvbmZpZy5mb250RmFtaWx5fVxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtMb2NhbGUuU2V0dGluZ3MuRm9udEZhbWlseS5QbGFjZWhvbGRlcn1cclxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+XHJcbiAgICAgICAgICAgICAgICB1cGRhdGVDb25maWcoXHJcbiAgICAgICAgICAgICAgICAgIChjb25maWcpID0+IChjb25maWcuZm9udEZhbWlseSA9IGUuY3VycmVudFRhcmdldC52YWx1ZSksXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA+PC9pbnB1dD5cclxuICAgICAgICAgIDwvTGlzdEl0ZW0+XHJcblxyXG4gICAgICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgICAgIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQXV0b0dlbmVyYXRlVGl0bGUuVGl0bGV9XHJcbiAgICAgICAgICAgIHN1YlRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQXV0b0dlbmVyYXRlVGl0bGUuU3ViVGl0bGV9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5TZXR0aW5ncy5BdXRvR2VuZXJhdGVUaXRsZS5UaXRsZX1cclxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgIGNoZWNrZWQ9e2NvbmZpZy5lbmFibGVBdXRvR2VuZXJhdGVUaXRsZX1cclxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+XHJcbiAgICAgICAgICAgICAgICB1cGRhdGVDb25maWcoXHJcbiAgICAgICAgICAgICAgICAgIChjb25maWcpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKGNvbmZpZy5lbmFibGVBdXRvR2VuZXJhdGVUaXRsZSA9IGUuY3VycmVudFRhcmdldC5jaGVja2VkKSxcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgID48L2lucHV0PlxyXG4gICAgICAgICAgPC9MaXN0SXRlbT5cclxuXHJcbiAgICAgICAgICA8TGlzdEl0ZW1cclxuICAgICAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5TZW5kUHJldmlld0J1YmJsZS5UaXRsZX1cclxuICAgICAgICAgICAgc3ViVGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5TZW5kUHJldmlld0J1YmJsZS5TdWJUaXRsZX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17TG9jYWxlLlNldHRpbmdzLlNlbmRQcmV2aWV3QnViYmxlLlRpdGxlfVxyXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgY2hlY2tlZD17Y29uZmlnLnNlbmRQcmV2aWV3QnViYmxlfVxyXG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT5cclxuICAgICAgICAgICAgICAgIHVwZGF0ZUNvbmZpZyhcclxuICAgICAgICAgICAgICAgICAgKGNvbmZpZykgPT5cclxuICAgICAgICAgICAgICAgICAgICAoY29uZmlnLnNlbmRQcmV2aWV3QnViYmxlID0gZS5jdXJyZW50VGFyZ2V0LmNoZWNrZWQpLFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPjwvaW5wdXQ+XHJcbiAgICAgICAgICA8L0xpc3RJdGVtPlxyXG5cclxuICAgICAgICAgIDxMaXN0SXRlbVxyXG4gICAgICAgICAgICB0aXRsZT17TG9jYWxlLk1hc2suQ29uZmlnLkFydGlmYWN0cy5UaXRsZX1cclxuICAgICAgICAgICAgc3ViVGl0bGU9e0xvY2FsZS5NYXNrLkNvbmZpZy5BcnRpZmFjdHMuU3ViVGl0bGV9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5NYXNrLkNvbmZpZy5BcnRpZmFjdHMuVGl0bGV9XHJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICBjaGVja2VkPXtjb25maWcuZW5hYmxlQXJ0aWZhY3RzfVxyXG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT5cclxuICAgICAgICAgICAgICAgIHVwZGF0ZUNvbmZpZyhcclxuICAgICAgICAgICAgICAgICAgKGNvbmZpZykgPT5cclxuICAgICAgICAgICAgICAgICAgICAoY29uZmlnLmVuYWJsZUFydGlmYWN0cyA9IGUuY3VycmVudFRhcmdldC5jaGVja2VkKSxcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgID48L2lucHV0PlxyXG4gICAgICAgICAgPC9MaXN0SXRlbT5cclxuICAgICAgICAgIDxMaXN0SXRlbVxyXG4gICAgICAgICAgICB0aXRsZT17TG9jYWxlLk1hc2suQ29uZmlnLkNvZGVGb2xkLlRpdGxlfVxyXG4gICAgICAgICAgICBzdWJUaXRsZT17TG9jYWxlLk1hc2suQ29uZmlnLkNvZGVGb2xkLlN1YlRpdGxlfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtMb2NhbGUuTWFzay5Db25maWcuQ29kZUZvbGQuVGl0bGV9XHJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICBjaGVja2VkPXtjb25maWcuZW5hYmxlQ29kZUZvbGR9XHJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJlbmFibGUtY29kZS1mb2xkLWNoZWNrYm94XCJcclxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+XHJcbiAgICAgICAgICAgICAgICB1cGRhdGVDb25maWcoXHJcbiAgICAgICAgICAgICAgICAgIChjb25maWcpID0+IChjb25maWcuZW5hYmxlQ29kZUZvbGQgPSBlLmN1cnJlbnRUYXJnZXQuY2hlY2tlZCksXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA+PC9pbnB1dD5cclxuICAgICAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICAgICAgPC9MaXN0PlxyXG5cclxuICAgICAgICA8U3luY0l0ZW1zIC8+XHJcblxyXG4gICAgICAgIDxMaXN0PlxyXG4gICAgICAgICAgPE1vZGVsQ29uZmlnTGlzdFxyXG4gICAgICAgICAgICBtb2RlbENvbmZpZz17Y29uZmlnLm1vZGVsQ29uZmlnfVxyXG4gICAgICAgICAgICB1cGRhdGVDb25maWc9eyh1cGRhdGVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgbW9kZWxDb25maWcgPSB7IC4uLmNvbmZpZy5tb2RlbENvbmZpZyB9O1xyXG4gICAgICAgICAgICAgIHVwZGF0ZXIobW9kZWxDb25maWcpO1xyXG4gICAgICAgICAgICAgIGNvbmZpZy51cGRhdGUoKGNvbmZpZykgPT4gKGNvbmZpZy5tb2RlbENvbmZpZyA9IG1vZGVsQ29uZmlnKSk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvTGlzdD5cclxuXHJcbiAgICAgICAgPERhbmdlckl0ZW1zIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9FcnJvckJvdW5kYXJ5PlxyXG4gICk7XHJcbn1cclxuIl0sIm5hbWVzIjpbInVzZVN0YXRlIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInN0eWxlcyIsIlJlc2V0SWNvbiIsIkFkZEljb24iLCJDbG9zZUljb24iLCJDb3B5SWNvbiIsIkNsZWFySWNvbiIsIkxvYWRpbmdJY29uIiwiRWRpdEljb24iLCJGaXJlSWNvbiIsIkV5ZUljb24iLCJEb3dubG9hZEljb24iLCJVcGxvYWRJY29uIiwiQ29uZmlybUljb24iLCJDb25uZWN0aW9uSWNvbiIsIkNsb3VkU3VjY2Vzc0ljb24iLCJDbG91ZEZhaWxJY29uIiwidHJhY2tTZXR0aW5nc1BhZ2VHdWlkZVRvQ1BheW1lbnRDbGljayIsIklucHV0IiwiTGlzdCIsIkxpc3RJdGVtIiwiTW9kYWwiLCJQYXNzd29yZElucHV0IiwiUG9wb3ZlciIsIlNlbGVjdCIsInNob3dDb25maXJtIiwiTW9kZWxDb25maWdMaXN0IiwiSWNvbkJ1dHRvbiIsIlN1Ym1pdEtleSIsInVzZUNoYXRTdG9yZSIsIlRoZW1lIiwidXNlVXBkYXRlU3RvcmUiLCJ1c2VBY2Nlc3NTdG9yZSIsInVzZUFwcENvbmZpZyIsIkxvY2FsZSIsIkFsbExhbmdzIiwiQUxMX0xBTkdfT1BUSU9OUyIsImNoYW5nZUxhbmciLCJnZXRMYW5nIiwiY29weVRvQ2xpcGJvYXJkIiwiY2xpZW50VXBkYXRlIiwic2VtdmVyQ29tcGFyZSIsIkxpbmsiLCJBbnRocm9waWMiLCJBenVyZSIsIkJhaWR1IiwiVGVuY2VudCIsIkJ5dGVEYW5jZSIsIkFsaWJhYmEiLCJNb29uc2hvdCIsIlhBSSIsIkdvb2dsZSIsIkdvb2dsZVNhZmV0eVNldHRpbmdzVGhyZXNob2xkIiwiT1BFTkFJX0JBU0VfVVJMIiwiUGF0aCIsIlJFTEVBU0VfVVJMIiwiU1RPUkFHRV9LRVkiLCJTZXJ2aWNlUHJvdmlkZXIiLCJVUERBVEVfVVJMIiwiU3RhYmlsaXR5IiwiSWZseXRlayIsIlNBQVNfQ0hBVF9VUkwiLCJDaGF0R0xNIiwiRGVlcFNlZWsiLCJTaWxpY29uRmxvdyIsIlNlYXJjaFNlcnZpY2UiLCJ1c2VQcm9tcHRTdG9yZSIsIkVycm9yQm91bmRhcnkiLCJJbnB1dFJhbmdlIiwidXNlTmF2aWdhdGUiLCJBdmF0YXIiLCJBdmF0YXJQaWNrZXIiLCJnZXRDbGllbnRDb25maWciLCJ1c2VTeW5jU3RvcmUiLCJuYW5vaWQiLCJ1c2VNYXNrU3RvcmUiLCJQcm92aWRlclR5cGUiLCJFZGl0UHJvbXB0TW9kYWwiLCJwcm9wcyIsInByb21wdFN0b3JlIiwicHJvbXB0IiwiZ2V0IiwiaWQiLCJkaXYiLCJjbGFzc05hbWUiLCJ0aXRsZSIsIlNldHRpbmdzIiwiUHJvbXB0IiwiRWRpdE1vZGFsIiwiVGl0bGUiLCJvbkNsb3NlIiwiYWN0aW9ucyIsIm9uQ2xpY2siLCJ0ZXh0IiwiVUkiLCJDb25maXJtIiwiYm9yZGVyZWQiLCJpbnB1dCIsInR5cGUiLCJ2YWx1ZSIsInJlYWRPbmx5IiwiaXNVc2VyIiwib25JbnB1dCIsImUiLCJ1cGRhdGVQcm9tcHQiLCJjdXJyZW50VGFyZ2V0IiwiY29udGVudCIsInJvd3MiLCJVc2VyUHJvbXB0TW9kYWwiLCJ1c2VyUHJvbXB0cyIsImdldFVzZXJQcm9tcHRzIiwiYnVpbHRpblByb21wdHMiLCJhbGxQcm9tcHRzIiwiY29uY2F0Iiwic2VhcmNoSW5wdXQiLCJzZXRTZWFyY2hJbnB1dCIsInNlYXJjaFByb21wdHMiLCJzZXRTZWFyY2hQcm9tcHRzIiwicHJvbXB0cyIsImxlbmd0aCIsImVkaXRpbmdQcm9tcHRJZCIsInNldEVkaXRpbmdQcm9tcHRJZCIsInNlYXJjaFJlc3VsdCIsInNlYXJjaCIsInByb21wdElkIiwiYWRkIiwiY3JlYXRlZEF0IiwiRGF0ZSIsIm5vdyIsImljb24iLCJBZGQiLCJwbGFjZWhvbGRlciIsIlNlYXJjaCIsIm1hcCIsInYiLCJfIiwicmVtb3ZlIiwidW5kZWZpbmVkIiwiRGFuZ2VySXRlbXMiLCJjaGF0U3RvcmUiLCJhcHBDb25maWciLCJEYW5nZXIiLCJSZXNldCIsInN1YlRpdGxlIiwiU3ViVGl0bGUiLCJhcmlhIiwiQWN0aW9uIiwicmVzZXQiLCJDbGVhciIsImNsZWFyQWxsRGF0YSIsIkNoZWNrQnV0dG9uIiwic3luY1N0b3JlIiwiY291bGRDaGVjayIsImNsb3VkU3luYyIsImNoZWNrU3RhdGUiLCJzZXRDaGVja1N0YXRlIiwiY2hlY2siLCJ2YWxpZCIsIlN5bmMiLCJDb25maWciLCJDaGVjayIsIlN5bmNDb25maWdNb2RhbCIsIlN5bmNUeXBlIiwic2VsZWN0IiwicHJvdmlkZXIiLCJvbkNoYW5nZSIsInVwZGF0ZSIsImNvbmZpZyIsInRhcmdldCIsIk9iamVjdCIsImVudHJpZXMiLCJrIiwib3B0aW9uIiwiUHJveHkiLCJjaGVja2VkIiwidXNlUHJveHkiLCJQcm94eVVybCIsInByb3h5VXJsIiwiV2ViREFWIiwiV2ViRGF2IiwiRW5kcG9pbnQiLCJ3ZWJkYXYiLCJlbmRwb2ludCIsIlVzZXJOYW1lIiwidXNlcm5hbWUiLCJQYXNzd29yZCIsInBhc3N3b3JkIiwiVXBTdGFzaCIsInVwc3Rhc2giLCJhcGlLZXkiLCJTeW5jSXRlbXMiLCJtYXNrU3RvcmUiLCJjb3VsZFN5bmMiLCJzaG93U3luY0NvbmZpZ01vZGFsIiwic2V0U2hvd1N5bmNDb25maWdNb2RhbCIsInN0YXRlT3ZlcnZpZXciLCJzZXNzaW9ucyIsIm1lc3NhZ2VDb3VudCIsInJlZHVjZSIsInAiLCJjIiwibWVzc2FnZXMiLCJjaGF0IiwibWVzc2FnZSIsImtleXMiLCJtYXNrIiwibWFza3MiLCJMb2NhbFN0YXRlIiwiT3ZlcnZpZXciLCJzdHlsZSIsImRpc3BsYXkiLCJFeHBvcnQiLCJleHBvcnQiLCJJbXBvcnQiLCJpbXBvcnQiLCJuYXZpZ2F0ZSIsInNob3dFbW9qaVBpY2tlciIsInNldFNob3dFbW9qaVBpY2tlciIsInVwZGF0ZUNvbmZpZyIsInVwZGF0ZVN0b3JlIiwiY2hlY2tpbmdVcGRhdGUiLCJzZXRDaGVja2luZ1VwZGF0ZSIsImN1cnJlbnRWZXJzaW9uIiwiZm9ybWF0VmVyc2lvbiIsInZlcnNpb24iLCJyZW1vdGVJZCIsInJlbW90ZVZlcnNpb24iLCJoYXNOZXdWZXJzaW9uIiwidXBkYXRlVXJsIiwiaXNBcHAiLCJjaGVja1VwZGF0ZSIsImZvcmNlIiwiZ2V0TGF0ZXN0VmVyc2lvbiIsInRoZW4iLCJjb25zb2xlIiwibG9nIiwiYWNjZXNzU3RvcmUiLCJzaG91bGRIaWRlQmFsYW5jZVF1ZXJ5IiwiaXNPcGVuQWlVcmwiLCJvcGVuYWlVcmwiLCJpbmNsdWRlcyIsImhpZGVCYWxhbmNlUXVlcnkiLCJ1c2FnZSIsInVzZWQiLCJzdWJzY3JpcHRpb24iLCJsb2FkaW5nVXNhZ2UiLCJzZXRMb2FkaW5nVXNhZ2UiLCJjaGVja1VzYWdlIiwidXBkYXRlVXNhZ2UiLCJmaW5hbGx5IiwiZW5hYmxlZEFjY2Vzc0NvbnRyb2wiLCJidWlsdGluQ291bnQiLCJjb3VudCIsImJ1aWx0aW4iLCJjdXN0b21Db3VudCIsInNob3VsZFNob3dQcm9tcHRNb2RhbCIsInNldFNob3dQcm9tcHRNb2RhbCIsInNob3dVc2FnZSIsImlzQXV0aG9yaXplZCIsImtleWRvd25FdmVudCIsImtleSIsIkhvbWUiLCJjbGllbnRDb25maWciLCJzdGF0ZSIsInVzZUN1c3RvbUNvbmZpZyIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzaG93QWNjZXNzQ29kZSIsImFjY2Vzc0NvZGVDb21wb25lbnQiLCJBY2Nlc3MiLCJBY2Nlc3NDb2RlIiwiYWNjZXNzQ29kZSIsIlBsYWNlaG9sZGVyIiwiYWNjZXNzIiwic2Fhc1N0YXJ0Q29tcG9uZW50IiwiU2Fhc1N0YXJ0IiwiTGFiZWwiLCJDaGF0Tm93Iiwid2luZG93IiwibG9jYXRpb24iLCJocmVmIiwidXNlQ3VzdG9tQ29uZmlnQ29tcG9uZW50IiwiQ3VzdG9tRW5kcG9pbnQiLCJhcmlhLWxhYmVsIiwib3BlbkFJQ29uZmlnQ29tcG9uZW50IiwiT3BlbkFJIiwiQXBpS2V5IiwiU2hvd1Bhc3N3b3JkIiwib3BlbmFpQXBpS2V5IiwiYXp1cmVDb25maWdDb21wb25lbnQiLCJFeGFtcGxlRW5kcG9pbnQiLCJhenVyZVVybCIsImF6dXJlQXBpS2V5IiwiQXBpVmVyaW9uIiwiYXp1cmVBcGlWZXJzaW9uIiwiZ29vZ2xlQ29uZmlnQ29tcG9uZW50IiwiZ29vZ2xlVXJsIiwiZ29vZ2xlQXBpS2V5IiwiQXBpVmVyc2lvbiIsImdvb2dsZUFwaVZlcnNpb24iLCJHb29nbGVTYWZldHlTZXR0aW5ncyIsImdvb2dsZVNhZmV0eVNldHRpbmdzIiwiYW50aHJvcGljQ29uZmlnQ29tcG9uZW50IiwiYW50aHJvcGljVXJsIiwiYW50aHJvcGljQXBpS2V5IiwiYW50aHJvcGljQXBpVmVyc2lvbiIsIlZpc2lvbiIsImJhaWR1Q29uZmlnQ29tcG9uZW50IiwiYmFpZHVVcmwiLCJiYWlkdUFwaUtleSIsIlNlY3JldEtleSIsImJhaWR1U2VjcmV0S2V5IiwidGVuY2VudENvbmZpZ0NvbXBvbmVudCIsInRlbmNlbnRVcmwiLCJ0ZW5jZW50U2VjcmV0SWQiLCJ0ZW5jZW50U2VjcmV0S2V5IiwiYnl0ZURhbmNlQ29uZmlnQ29tcG9uZW50IiwiYnl0ZWRhbmNlVXJsIiwiYnl0ZWRhbmNlQXBpS2V5IiwiYWxpYmFiYUNvbmZpZ0NvbXBvbmVudCIsImFsaWJhYmFVcmwiLCJhbGliYWJhQXBpS2V5IiwibW9vbnNob3RDb25maWdDb21wb25lbnQiLCJtb29uc2hvdFVybCIsIm1vb25zaG90QXBpS2V5IiwiZGVlcHNlZWtDb25maWdDb21wb25lbnQiLCJkZWVwc2Vla1VybCIsImRlZXBzZWVrQXBpS2V5IiwiWEFJQ29uZmlnQ29tcG9uZW50IiwieGFpVXJsIiwieGFpQXBpS2V5IiwiY2hhdGdsbUNvbmZpZ0NvbXBvbmVudCIsImNoYXRnbG1VcmwiLCJjaGF0Z2xtQXBpS2V5Iiwic2lsaWNvbmZsb3dDb25maWdDb21wb25lbnQiLCJzaWxpY29uZmxvd1VybCIsInNpbGljb25mbG93QXBpS2V5Iiwic3RhYmlsaXR5Q29uZmlnQ29tcG9uZW50Iiwic3RhYmlsaXR5VXJsIiwic3RhYmlsaXR5QXBpS2V5IiwibGZseXRla0NvbmZpZ0NvbXBvbmVudCIsImlmbHl0ZWtVcmwiLCJpZmx5dGVrQXBpS2V5IiwiQXBpU2VjcmV0IiwiaWZseXRla0FwaVNlY3JldCIsImRhdGEtdGF1cmktZHJhZy1yZWdpb24iLCJDbG9zZSIsIm9uRW1vamlDbGljayIsImF2YXRhciIsIm9wZW4iLCJ0YWJJbmRleCIsIlVwZGF0ZSIsIlZlcnNpb24iLCJJc0NoZWNraW5nIiwiRm91bmRVcGRhdGUiLCJJc0xhdGVzdCIsIkdvVG9VcGRhdGUiLCJDaGVja1VwZGF0ZSIsIlNlbmRLZXkiLCJzdWJtaXRLZXkiLCJ2YWx1ZXMiLCJ0aGVtZSIsIkxhbmciLCJOYW1lIiwibGFuZyIsIkZvbnRTaXplIiwiZm9udFNpemUiLCJtaW4iLCJtYXgiLCJzdGVwIiwiTnVtYmVyIiwicGFyc2VJbnQiLCJGb250RmFtaWx5IiwiZm9udEZhbWlseSIsIkF1dG9HZW5lcmF0ZVRpdGxlIiwiZW5hYmxlQXV0b0dlbmVyYXRlVGl0bGUiLCJTZW5kUHJldmlld0J1YmJsZSIsInNlbmRQcmV2aWV3QnViYmxlIiwiTWFzayIsIkFydGlmYWN0cyIsImVuYWJsZUFydGlmYWN0cyIsIkNvZGVGb2xkIiwiZW5hYmxlQ29kZUZvbGQiLCJkYXRhLXRlc3RpZCIsIm1vZGVsQ29uZmlnIiwidXBkYXRlciJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/components/settings.tsx\n"));
/***/ })
});