CampFireID/.next/static/webpack/app/page.d8b7c52af685fb68.hot-update.js
degradin 22cc9ef144 SSR Fixes
Добавили динамический импорт Telegram Web App SDK с помощью import(), чтобы он загружался только на клиенте
Добавили состояние загрузки и компонент Spinner для лучшего UX
Исправили типы в компонентах:
Используем IShopItem вместо собственного интерфейса ShopItem
Создали тип SafeUser, который исключает свойства mongoose Document из типа пользователя
Добавили безопасную проверку на наличие пользователя в данных Telegram WebApp
2025-03-16 11:37:54 +03:00

22 lines
30 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/page",{
/***/ "(app-pages-browser)/./app/components/MainApp.tsx":
/*!************************************!*\
!*** ./app/components/MainApp.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 */ MainApp: function() { return /* binding */ MainApp; }\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 _chakra_ui_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @chakra-ui/react */ \"(app-pages-browser)/./node_modules/@chakra-ui/react/dist/esm/toast/use-toast.mjs\");\n/* harmony import */ var _chakra_ui_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @chakra-ui/react */ \"(app-pages-browser)/./node_modules/@chakra-ui/react/dist/esm/center/center.mjs\");\n/* harmony import */ var _chakra_ui_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @chakra-ui/react */ \"(app-pages-browser)/./node_modules/@chakra-ui/react/dist/esm/spinner/spinner.mjs\");\n/* harmony import */ var _chakra_ui_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @chakra-ui/react */ \"(app-pages-browser)/./node_modules/@chakra-ui/react/dist/esm/container/container.mjs\");\n/* harmony import */ var _chakra_ui_react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @chakra-ui/react */ \"(app-pages-browser)/./node_modules/@chakra-ui/react/dist/esm/tabs/tabs.mjs\");\n/* harmony import */ var _chakra_ui_react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @chakra-ui/react */ \"(app-pages-browser)/./node_modules/@chakra-ui/react/dist/esm/tabs/tab-list.mjs\");\n/* harmony import */ var _chakra_ui_react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @chakra-ui/react */ \"(app-pages-browser)/./node_modules/@chakra-ui/react/dist/esm/tabs/tab.mjs\");\n/* harmony import */ var _chakra_ui_react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @chakra-ui/react */ \"(app-pages-browser)/./node_modules/@chakra-ui/react/dist/esm/tabs/tab-panels.mjs\");\n/* harmony import */ var _chakra_ui_react__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @chakra-ui/react */ \"(app-pages-browser)/./node_modules/@chakra-ui/react/dist/esm/tabs/tab-panel.mjs\");\n/* harmony import */ var _UserProfile__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./UserProfile */ \"(app-pages-browser)/./app/components/UserProfile.tsx\");\n/* harmony import */ var _Shop__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Shop */ \"(app-pages-browser)/./app/components/Shop.tsx\");\n/* harmony import */ var _TransferBalance__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./TransferBalance */ \"(app-pages-browser)/./app/components/TransferBalance.tsx\");\n/* harmony import */ var _utils_api__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/api */ \"(app-pages-browser)/./app/utils/api.ts\");\n/* __next_internal_client_entry_do_not_use__ MainApp auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\n\nfunction MainApp() {\n _s();\n const [user, setUser] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [shopItems, setShopItems] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [isLoading, setIsLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const toast = (0,_chakra_ui_react__WEBPACK_IMPORTED_MODULE_6__.useToast)();\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const initApp = async ()=>{\n try {\n var _WebApp_initDataUnsafe_user, _WebApp_initDataUnsafe_user1;\n setIsLoading(true);\n // Динамически импортируем SDK только на клиенте\n const WebApp = (await __webpack_require__.e(/*! import() */ \"_app-pages-browser_node_modules_twa-dev_sdk_dist_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @twa-dev/sdk */ \"(app-pages-browser)/./node_modules/@twa-dev/sdk/dist/index.js\"))).default;\n const initData = WebApp.initData;\n if (!initData) {\n throw new Error(\"Приложение должно быть открыто в Telegram\");\n }\n // Авторизуем пользователя\n const authData = await _utils_api__WEBPACK_IMPORTED_MODULE_5__.auth(((_WebApp_initDataUnsafe_user = WebApp.initDataUnsafe.user) === null || _WebApp_initDataUnsafe_user === void 0 ? void 0 : _WebApp_initDataUnsafe_user.id.toString()) || \"\", ((_WebApp_initDataUnsafe_user1 = WebApp.initDataUnsafe.user) === null || _WebApp_initDataUnsafe_user1 === void 0 ? void 0 : _WebApp_initDataUnsafe_user1.username) || \"\");\n setUser(authData.user);\n // Загружаем предметы магазина\n const items = await _utils_api__WEBPACK_IMPORTED_MODULE_5__.getShopItems();\n setShopItems(items);\n } catch (error) {\n toast({\n title: \"Ошибка инициализации\",\n description: error.message,\n status: \"error\",\n duration: 5000,\n isClosable: true\n });\n } finally{\n setIsLoading(false);\n }\n };\n initApp();\n }, []);\n const handlePurchase = async (itemId)=>{\n try {\n const result = await _utils_api__WEBPACK_IMPORTED_MODULE_5__.purchaseItem(itemId);\n setUser(result.user);\n toast({\n title: \"Покупка успешна!\",\n status: \"success\",\n duration: 3000,\n isClosable: true\n });\n } catch (error) {\n var _error_response_data, _error_response;\n toast({\n title: \"Ошибка покупки\",\n description: ((_error_response = error.response) === null || _error_response === void 0 ? void 0 : (_error_response_data = _error_response.data) === null || _error_response_data === void 0 ? void 0 : _error_response_data.error) || \"Произошла ошибка\",\n status: \"error\",\n duration: 3000,\n isClosable: true\n });\n }\n };\n const handleTransfer = async (recipientUsername, amount)=>{\n try {\n const result = await _utils_api__WEBPACK_IMPORTED_MODULE_5__.transferBalance(recipientUsername, amount);\n setUser((prev)=>prev ? {\n ...prev,\n balance: result.balance\n } : null);\n toast({\n title: \"Перевод выполнен\",\n status: \"success\",\n duration: 3000,\n isClosable: true\n });\n } catch (error) {\n var _error_response_data, _error_response;\n toast({\n title: \"Ошибка перевода\",\n description: ((_error_response = error.response) === null || _error_response === void 0 ? void 0 : (_error_response_data = _error_response.data) === null || _error_response_data === void 0 ? void 0 : _error_response_data.error) || \"Произошла ошибка\",\n status: \"error\",\n duration: 3000,\n isClosable: true\n });\n }\n };\n if (isLoading) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_7__.Center, {\n h: \"100vh\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_8__.Spinner, {\n size: \"xl\"\n }, void 0, false, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 103,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 102,\n columnNumber: 7\n }, this);\n }\n if (!user) {\n return null;\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_9__.Container, {\n maxW: \"container.xl\",\n py: 8,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_10__.Tabs, {\n isFitted: true,\n variant: \"enclosed\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_11__.TabList, {\n mb: \"1em\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_12__.Tab, {\n children: \"Профиль\"\n }, void 0, false, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 116,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_12__.Tab, {\n children: \"Магазин\"\n }, void 0, false, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 117,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_12__.Tab, {\n children: \"Перевод\"\n }, void 0, false, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 118,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 115,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_13__.TabPanels, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_14__.TabPanel, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_UserProfile__WEBPACK_IMPORTED_MODULE_2__.UserProfile, {\n username: user.username,\n level: user.level,\n experience: user.experience,\n balance: user.balance,\n achievements: user.achievements\n }, void 0, false, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 123,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 122,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_14__.TabPanel, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_Shop__WEBPACK_IMPORTED_MODULE_3__.Shop, {\n items: shopItems,\n userBalance: user.balance,\n onPurchase: handlePurchase\n }, void 0, false, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 133,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 132,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_14__.TabPanel, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_TransferBalance__WEBPACK_IMPORTED_MODULE_4__.TransferBalance, {\n userBalance: user.balance,\n onTransfer: handleTransfer\n }, void 0, false, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 141,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 140,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 121,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 114,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 113,\n columnNumber: 5\n }, this);\n}\n_s(MainApp, \"IEXrtNKSe8D5fD7ZVaLv3no0tNk=\", false, function() {\n return [\n _chakra_ui_react__WEBPACK_IMPORTED_MODULE_6__.useToast\n ];\n});\n_c = MainApp;\nvar _c;\n$RefreshReg$(_c, \"MainApp\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9jb21wb25lbnRzL01haW5BcHAudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbUQ7QUFDOEQ7QUFDckU7QUFDZDtBQUNzQjtBQUNoQjtBQU03QixTQUFTZ0I7O0lBQ2QsTUFBTSxDQUFDQyxNQUFNQyxRQUFRLEdBQUdoQiwrQ0FBUUEsQ0FBa0I7SUFDbEQsTUFBTSxDQUFDaUIsV0FBV0MsYUFBYSxHQUFHbEIsK0NBQVFBLENBQWMsRUFBRTtJQUMxRCxNQUFNLENBQUNtQixXQUFXQyxhQUFhLEdBQUdwQiwrQ0FBUUEsQ0FBQztJQUMzQyxNQUFNcUIsUUFBUWQsMERBQVFBO0lBRXRCUixnREFBU0EsQ0FBQztRQUNSLE1BQU11QixVQUFVO1lBQ2QsSUFBSTtvQkFZQUMsNkJBQ0FBO2dCQVpGSCxhQUFhO2dCQUNiLGdEQUFnRDtnQkFDaEQsTUFBTUcsU0FBUyxDQUFDLE1BQU0sMk9BQXFCLEVBQUdDLE9BQU87Z0JBRXJELE1BQU1DLFdBQVdGLE9BQU9FLFFBQVE7Z0JBQ2hDLElBQUksQ0FBQ0EsVUFBVTtvQkFDYixNQUFNLElBQUlDLE1BQU07Z0JBQ2xCO2dCQUVBLDBCQUEwQjtnQkFDMUIsTUFBTUMsV0FBVyxNQUFNZCw0Q0FBUSxDQUM3QlUsRUFBQUEsOEJBQUFBLE9BQU9NLGNBQWMsQ0FBQ2QsSUFBSSxjQUExQlEsa0RBQUFBLDRCQUE0Qk8sRUFBRSxDQUFDQyxRQUFRLE9BQU0sSUFDN0NSLEVBQUFBLCtCQUFBQSxPQUFPTSxjQUFjLENBQUNkLElBQUksY0FBMUJRLG1EQUFBQSw2QkFBNEJTLFFBQVEsS0FBSTtnQkFFMUNoQixRQUFRVyxTQUFTWixJQUFJO2dCQUVyQiw4QkFBOEI7Z0JBQzlCLE1BQU1rQixRQUFRLE1BQU1wQixvREFBZ0I7Z0JBQ3BDSyxhQUFhZTtZQUNmLEVBQUUsT0FBT0UsT0FBWTtnQkFDbkJkLE1BQU07b0JBQ0plLE9BQU87b0JBQ1BDLGFBQWFGLE1BQU1HLE9BQU87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bnRzL01haW5BcHAudHN4P2NmMDciXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xyXG5cclxuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCB7IENvbnRhaW5lciwgVGFicywgVGFiTGlzdCwgVGFiUGFuZWxzLCBUYWIsIFRhYlBhbmVsLCB1c2VUb2FzdCwgU3Bpbm5lciwgQ2VudGVyIH0gZnJvbSAnQGNoYWtyYS11aS9yZWFjdCc7XHJcbmltcG9ydCB7IFVzZXJQcm9maWxlIH0gZnJvbSAnLi9Vc2VyUHJvZmlsZSc7XHJcbmltcG9ydCB7IFNob3AgfSBmcm9tICcuL1Nob3AnO1xyXG5pbXBvcnQgeyBUcmFuc2ZlckJhbGFuY2UgfSBmcm9tICcuL1RyYW5zZmVyQmFsYW5jZSc7XHJcbmltcG9ydCAqIGFzIGFwaSBmcm9tICcuLi91dGlscy9hcGknO1xyXG5pbXBvcnQgeyBJVXNlciB9IGZyb20gJy4uLy4uL2JhY2tlbmQvbW9kZWxzL1VzZXInO1xyXG5pbXBvcnQgeyBJU2hvcEl0ZW0gfSBmcm9tICcuLi8uLi9iYWNrZW5kL21vZGVscy9TaG9wSXRlbSc7XHJcblxyXG50eXBlIFNhZmVVc2VyID0gT21pdDxJVXNlciwga2V5b2YgRG9jdW1lbnQ+O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE1haW5BcHAoKSB7XHJcbiAgY29uc3QgW3VzZXIsIHNldFVzZXJdID0gdXNlU3RhdGU8U2FmZVVzZXIgfCBudWxsPihudWxsKTtcclxuICBjb25zdCBbc2hvcEl0ZW1zLCBzZXRTaG9wSXRlbXNdID0gdXNlU3RhdGU8SVNob3BJdGVtW10+KFtdKTtcclxuICBjb25zdCBbaXNMb2FkaW5nLCBzZXRJc0xvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSk7XHJcbiAgY29uc3QgdG9hc3QgPSB1c2VUb2FzdCgpO1xyXG5cclxuICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc3QgaW5pdEFwcCA9IGFzeW5jICgpID0+IHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBzZXRJc0xvYWRpbmcodHJ1ZSk7XHJcbiAgICAgICAgLy8g0JTQuNC90LDQvNC40YfQtdGB0LrQuCDQuNC80L/QvtGA0YLQuNGA0YPQtdC8IFNESyDRgtC+0LvRjNC60L4g0L3QsCDQutC70LjQtdC90YLQtVxyXG4gICAgICAgIGNvbnN0IFdlYkFwcCA9IChhd2FpdCBpbXBvcnQoJ0B0d2EtZGV2L3NkaycpKS5kZWZhdWx0O1xyXG4gICAgICAgIFxyXG4gICAgICAgIGNvbnN0IGluaXREYXRhID0gV2ViQXBwLmluaXREYXRhO1xyXG4gICAgICAgIGlmICghaW5pdERhdGEpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcign0J/RgNC40LvQvtC20LXQvdC40LUg0LTQvtC70LbQvdC+INCx0YvRgtGMINC+0YLQutGA0YvRgtC+INCyIFRlbGVncmFtJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDQkNCy0YLQvtGA0LjQt9GD0LXQvCDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y9cclxuICAgICAgICBjb25zdCBhdXRoRGF0YSA9IGF3YWl0IGFwaS5hdXRoKFxyXG4gICAgICAgICAgV2ViQXBwLmluaXREYXRhVW5zYWZlLnVzZXI/LmlkLnRvU3RyaW5nKCkgfHwgJycsXHJcbiAgICAgICAgICBXZWJBcHAuaW5pdERhdGFVbnNhZmUudXNlcj8udXNlcm5hbWUgfHwgJydcclxuICAgICAgICApO1xyXG4gICAgICAgIHNldFVzZXIoYXV0aERhdGEudXNlcik7XHJcblxyXG4gICAgICAgIC8vINCX0LDQs9GA0YPQttCw0LXQvCDQv9GA0LXQtNC80LXRgtGLINC80LDQs9Cw0LfQuNC90LBcclxuICAgICAgICBjb25zdCBpdGVtcyA9IGF3YWl0IGFwaS5nZXRTaG9wSXRlbXMoKTtcclxuICAgICAgICBzZXRTaG9wSXRlbXMoaXRlbXMpO1xyXG4gICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgdG9hc3Qoe1xyXG4gICAgICAgICAgdGl0bGU6ICfQntGI0LjQsdC60LAg0LjQvdC40YbQuNCw0LvQuNC30LDRhtC40LgnLFxyXG4gICAgICAgICAgZGVzY3JpcHRpb246IGVycm9yLm1lc3NhZ2UsXHJcbiAgICAgICAgICBzdGF0dXM6ICdlcnJvcicsXHJcbiAgICAgICAgICBkdXJhdGlvbjogNTAwMCxcclxuICAgICAgICAgIGlzQ2xvc2FibGU6IHRydWUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBpbml0QXBwKCk7XHJcbiAgfSwgW10pO1xyXG5cclxuICBjb25zdCBoYW5kbGVQdXJjaGFzZSA9IGFzeW5jIChpdGVtSWQ6IHN0cmluZykgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXBpLnB1cmNoYXNlSXRlbShpdGVtSWQpO1xyXG4gICAgICBzZXRVc2VyKHJlc3VsdC51c2VyKTtcclxuICAgICAgdG9hc3Qoe1xyXG4gICAgICAgIHRpdGxlOiAn0J/QvtC60YPQv9C60LAg0YPRgdC/0LXRiNC90LAhJyxcclxuICAgICAgICBzdGF0dXM6ICdzdWNjZXNzJyxcclxuICAgICAgICBkdXJhdGlvbjogMzAwMCxcclxuICAgICAgICBpc0Nsb3NhYmxlOiB0cnVlLFxyXG4gICAgICB9KTtcclxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgdG9hc3Qoe1xyXG4gICAgICAgIHRpdGxlOiAn0J7RiNC40LHQutCwINC/0L7QutGD0L/QutC4JyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogZXJyb3IucmVzcG9uc2U/LmRhdGE/LmVycm9yIHx8ICfQn9GA0L7QuNC30L7RiNC70LAg0L7RiNC40LHQutCwJyxcclxuICAgICAgICBzdGF0dXM6ICdlcnJvcicsXHJcbiAgICAgICAgZHVyYXRpb246IDMwMDAsXHJcbiAgICAgICAgaXNDbG9zYWJsZTogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgaGFuZGxlVHJhbnNmZXIgPSBhc3luYyAocmVjaXBpZW50VXNlcm5hbWU6IHN0cmluZywgYW1vdW50OiBudW1iZXIpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwaS50cmFuc2ZlckJhbGFuY2UocmVjaXBpZW50VXNlcm5hbWUsIGFtb3VudCk7XHJcbiAgICAgIHNldFVzZXIocHJldiA9PiBwcmV2ID8geyAuLi5wcmV2LCBiYWxhbmNlOiByZXN1bHQuYmFsYW5jZSB9IDogbnVsbCk7XHJcbiAgICAgIHRvYXN0KHtcclxuICAgICAgICB0aXRsZTogJ9Cf0LXRgNC10LLQvtC0INCy0YvQv9C+0LvQvdC10L0nLFxyXG4gICAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLFxyXG4gICAgICAgIGR1cmF0aW9uOiAzMDAwLFxyXG4gICAgICAgIGlzQ2xvc2FibGU6IHRydWUsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xyXG4gICAgICB0b2FzdCh7XHJcbiAgICAgICAgdGl0bGU6ICfQntGI0LjQsdC60LAg0L/QtdGA0LXQstC+0LTQsCcsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IGVycm9yLnJlc3BvbnNlPy5kYXRhPy5lcnJvciB8fCAn0J/RgNC+0LjQt9C+0YjQu9CwINC+0YjQuNCx0LrQsCcsXHJcbiAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxyXG4gICAgICAgIGR1cmF0aW9uOiAzMDAwLFxyXG4gICAgICAgIGlzQ2xvc2FibGU6IHRydWUsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGlmIChpc0xvYWRpbmcpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxDZW50ZXIgaD1cIjEwMHZoXCI+XHJcbiAgICAgICAgPFNwaW5uZXIgc2l6ZT1cInhsXCIgLz5cclxuICAgICAgPC9DZW50ZXI+XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaWYgKCF1c2VyKSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8Q29udGFpbmVyIG1heFc9XCJjb250YWluZXIueGxcIiBweT17OH0+XHJcbiAgICAgIDxUYWJzIGlzRml0dGVkIHZhcmlhbnQ9XCJlbmNsb3NlZFwiPlxyXG4gICAgICAgIDxUYWJMaXN0IG1iPVwiMWVtXCI+XHJcbiAgICAgICAgICA8VGFiPtCf0YDQvtGE0LjQu9GMPC9UYWI+XHJcbiAgICAgICAgICA8VGFiPtCc0LDQs9Cw0LfQuNC9PC9UYWI+XHJcbiAgICAgICAgICA8VGFiPtCf0LXRgNC10LLQvtC0PC9UYWI+XHJcbiAgICAgICAgPC9UYWJMaXN0PlxyXG5cclxuICAgICAgICA8VGFiUGFuZWxzPlxyXG4gICAgICAgICAgPFRhYlBhbmVsPlxyXG4gICAgICAgICAgICA8VXNlclByb2ZpbGVcclxuICAgICAgICAgICAgICB1c2VybmFtZT17dXNlci51c2VybmFtZX1cclxuICAgICAgICAgICAgICBsZXZlbD17dXNlci5sZXZlbH1cclxuICAgICAgICAgICAgICBleHBlcmllbmNlPXt1c2VyLmV4cGVyaWVuY2V9XHJcbiAgICAgICAgICAgICAgYmFsYW5jZT17dXNlci5iYWxhbmNlfVxyXG4gICAgICAgICAgICAgIGFjaGlldmVtZW50cz17dXNlci5hY2hpZXZlbWVudHN9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L1RhYlBhbmVsPlxyXG5cclxuICAgICAgICAgIDxUYWJQYW5lbD5cclxuICAgICAgICAgICAgPFNob3BcclxuICAgICAgICAgICAgICBpdGVtcz17c2hvcEl0ZW1zfVxyXG4gICAgICAgICAgICAgIHVzZXJCYWxhbmNlPXt1c2VyLmJhbGFuY2V9XHJcbiAgICAgICAgICAgICAgb25QdXJjaGFzZT17aGFuZGxlUHVyY2hhc2V9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L1RhYlBhbmVsPlxyXG5cclxuICAgICAgICAgIDxUYWJQYW5lbD5cclxuICAgICAgICAgICAgPFRyYW5zZmVyQmFsYW5jZVxyXG4gICAgICAgICAgICAgIHVzZXJCYWxhbmNlPXt1c2VyLmJhbGFuY2V9XHJcbiAgICAgICAgICAgICAgb25UcmFuc2Zlcj17aGFuZGxlVHJhbnNmZXJ9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L1RhYlBhbmVsPlxyXG4gICAgICAgIDwvVGFiUGFuZWxzPlxyXG4gICAgICA8L1RhYnM+XHJcbiAgICA8L0NvbnRhaW5lcj5cclxuICApO1xyXG59ICJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiQ29udGFpbmVyIiwiVGFicyIsIlRhYkxpc3QiLCJUYWJQYW5lbHMiLCJUYWIiLCJUYWJQYW5lbCIsInVzZVRvYXN0IiwiU3Bpbm5lciIsIkNlbnRlciIsIlVzZXJQcm9maWxlIiwiU2hvcCIsIlRyYW5zZmVyQmFsYW5jZSIsImFwaSIsIk1haW5BcHAiLCJ1c2VyIiwic2V0VXNlciIsInNob3BJdGVtcyIsInNldFNob3BJdGVtcyIsImlzTG9hZGluZyIsInNldElzTG9hZGluZyIsInRvYXN0IiwiaW5pdEFwcCIsIldlYkFwcCIsImRlZmF1bHQiLCJpbml0RGF0YSIsIkVycm9yIiwiYXV0aERhdGEiLCJhdXRoIiwiaW5pdERhdGFVbnNhZmUiLCJpZCIsInRvU3RyaW5nIiwidXNlcm5hbWUiLCJpdGVtcyIsImdldFNob3BJdGVtcyIsImVycm9yIiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsIm1lc3NhZ2UiLCJzdGF0dXMiLCJkdXJhdGlvbiIsImlzQ2xvc2FibGUiLCJoYW5kbGVQdXJjaGFzZSIsIml0ZW1JZCIsInJlc3VsdCIsInB1cmNoYXNlSXRlbSIsInJlc3BvbnNlIiwiZGF0YSIsImhhbmRsZVRyYW5zZmVyIiwicmVjaXBpZW50VXNlcm5hbWUiLCJhbW91bnQiLCJ0cmFuc2ZlckJhbGFuY2UiLCJwcmV2IiwiYmFsYW5jZSIsImgiLCJzaXplIiwibWF4VyIsInB5IiwiaXNGaXR0ZWQiLCJ2YXJpYW50IiwibWIiLCJsZXZlbCIsImV4cGVyaWVuY2UiLCJhY2hpZXZlbWVudHMiLCJ1c2VyQmFsYW5jZSIsIm9uUHVyY2hhc2UiLCJvblRyYW5zZmVyIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/components/MainApp.tsx\n"));
/***/ })
});