Files
FranciaOcupada/client/.next/server/app/page.js
Resistencia Dev b11186943b
Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 8s
chore: Limpiar archivos basura de git y actualizar .gitignore
2025-12-22 18:59:03 +01:00

489 lines
516 KiB
JavaScript

/*
* 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/).
*/
(() => {
var exports = {};
exports.id = "app/page";
exports.ids = ["app/page"];
exports.modules = {
/***/ "../../client/components/action-async-storage.external":
/*!*******************************************************************************!*\
!*** external "next/dist/client/components/action-async-storage.external.js" ***!
\*******************************************************************************/
/***/ ((module) => {
"use strict";
module.exports = require("next/dist/client/components/action-async-storage.external.js");
/***/ }),
/***/ "./request-async-storage.external":
/*!*****************************************************************************!*\
!*** external "next/dist/client/components/request-async-storage.external" ***!
\*****************************************************************************/
/***/ ((module) => {
"use strict";
module.exports = require("next/dist/client/components/request-async-storage.external");
/***/ }),
/***/ "../../client/components/request-async-storage.external":
/*!********************************************************************************!*\
!*** external "next/dist/client/components/request-async-storage.external.js" ***!
\********************************************************************************/
/***/ ((module) => {
"use strict";
module.exports = require("next/dist/client/components/request-async-storage.external.js");
/***/ }),
/***/ "./static-generation-async-storage.external":
/*!***************************************************************************************!*\
!*** external "next/dist/client/components/static-generation-async-storage.external" ***!
\***************************************************************************************/
/***/ ((module) => {
"use strict";
module.exports = require("next/dist/client/components/static-generation-async-storage.external");
/***/ }),
/***/ "../../client/components/static-generation-async-storage.external":
/*!******************************************************************************************!*\
!*** external "next/dist/client/components/static-generation-async-storage.external.js" ***!
\******************************************************************************************/
/***/ ((module) => {
"use strict";
module.exports = require("next/dist/client/components/static-generation-async-storage.external.js");
/***/ }),
/***/ "next/dist/compiled/next-server/app-page.runtime.dev.js":
/*!*************************************************************************!*\
!*** external "next/dist/compiled/next-server/app-page.runtime.dev.js" ***!
\*************************************************************************/
/***/ ((module) => {
"use strict";
module.exports = require("next/dist/compiled/next-server/app-page.runtime.dev.js");
/***/ }),
/***/ "buffer":
/*!*************************!*\
!*** external "buffer" ***!
\*************************/
/***/ ((module) => {
"use strict";
module.exports = require("buffer");
/***/ }),
/***/ "child_process":
/*!********************************!*\
!*** external "child_process" ***!
\********************************/
/***/ ((module) => {
"use strict";
module.exports = require("child_process");
/***/ }),
/***/ "crypto":
/*!*************************!*\
!*** external "crypto" ***!
\*************************/
/***/ ((module) => {
"use strict";
module.exports = require("crypto");
/***/ }),
/***/ "events":
/*!*************************!*\
!*** external "events" ***!
\*************************/
/***/ ((module) => {
"use strict";
module.exports = require("events");
/***/ }),
/***/ "fs":
/*!*********************!*\
!*** external "fs" ***!
\*********************/
/***/ ((module) => {
"use strict";
module.exports = require("fs");
/***/ }),
/***/ "http":
/*!***********************!*\
!*** external "http" ***!
\***********************/
/***/ ((module) => {
"use strict";
module.exports = require("http");
/***/ }),
/***/ "https":
/*!************************!*\
!*** external "https" ***!
\************************/
/***/ ((module) => {
"use strict";
module.exports = require("https");
/***/ }),
/***/ "net":
/*!**********************!*\
!*** external "net" ***!
\**********************/
/***/ ((module) => {
"use strict";
module.exports = require("net");
/***/ }),
/***/ "os":
/*!*********************!*\
!*** external "os" ***!
\*********************/
/***/ ((module) => {
"use strict";
module.exports = require("os");
/***/ }),
/***/ "path":
/*!***********************!*\
!*** external "path" ***!
\***********************/
/***/ ((module) => {
"use strict";
module.exports = require("path");
/***/ }),
/***/ "stream":
/*!*************************!*\
!*** external "stream" ***!
\*************************/
/***/ ((module) => {
"use strict";
module.exports = require("stream");
/***/ }),
/***/ "tls":
/*!**********************!*\
!*** external "tls" ***!
\**********************/
/***/ ((module) => {
"use strict";
module.exports = require("tls");
/***/ }),
/***/ "tty":
/*!**********************!*\
!*** external "tty" ***!
\**********************/
/***/ ((module) => {
"use strict";
module.exports = require("tty");
/***/ }),
/***/ "url":
/*!**********************!*\
!*** external "url" ***!
\**********************/
/***/ ((module) => {
"use strict";
module.exports = require("url");
/***/ }),
/***/ "util":
/*!***********************!*\
!*** external "util" ***!
\***********************/
/***/ ((module) => {
"use strict";
module.exports = require("util");
/***/ }),
/***/ "zlib":
/*!***********************!*\
!*** external "zlib" ***!
\***********************/
/***/ ((module) => {
"use strict";
module.exports = require("zlib");
/***/ }),
/***/ "?32c4":
/*!****************************!*\
!*** bufferutil (ignored) ***!
\****************************/
/***/ (() => {
/* (ignored) */
/***/ }),
/***/ "?66e9":
/*!********************************!*\
!*** utf-8-validate (ignored) ***!
\********************************/
/***/ (() => {
/* (ignored) */
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2Fapp%2Fclient%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2Fapp%2Fclient&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!":
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2Fapp%2Fclient%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2Fapp%2Fclient&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D! ***!
\******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GlobalError: () => (/* reexport default from dynamic */ next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2___default.a),\n/* harmony export */ __next_app__: () => (/* binding */ __next_app__),\n/* harmony export */ originalPathname: () => (/* binding */ originalPathname),\n/* harmony export */ pages: () => (/* binding */ pages),\n/* harmony export */ routeModule: () => (/* binding */ routeModule),\n/* harmony export */ tree: () => (/* binding */ tree)\n/* harmony export */ });\n/* harmony import */ var next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/server/future/route-modules/app-page/module.compiled */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/module.compiled.js?5bc9\");\n/* harmony import */ var next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/dist/server/future/route-kind */ \"(rsc)/./node_modules/next/dist/server/future/route-kind.js\");\n/* harmony import */ var next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/dist/client/components/error-boundary */ \"(rsc)/./node_modules/next/dist/client/components/error-boundary.js\");\n/* harmony import */ var next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/dist/server/app-render/entry-base */ \"(rsc)/./node_modules/next/dist/server/app-render/entry-base.js\");\n/* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__) if([\"default\",\"tree\",\"pages\",\"GlobalError\",\"originalPathname\",\"__next_app__\",\"routeModule\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\"TURBOPACK { transition: next-ssr }\";\n\n\n// We inject the tree and pages here so that we can use them in the route\n// module.\nconst tree = {\n children: [\n '',\n {\n children: ['__PAGE__', {}, {\n page: [() => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./src/app/page.tsx */ \"(rsc)/./src/app/page.tsx\")), \"/app/client/src/app/page.tsx\"],\n \n }]\n },\n {\n 'layout': [() => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./src/app/layout.tsx */ \"(rsc)/./src/app/layout.tsx\")), \"/app/client/src/app/layout.tsx\"],\n'not-found': [() => Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! next/dist/client/components/not-found-error */ \"(rsc)/./node_modules/next/dist/client/components/not-found-error.js\", 23)), \"next/dist/client/components/not-found-error\"],\n \n }\n ]\n }.children;\nconst pages = [\"/app/client/src/app/page.tsx\"];\n\n\nconst __next_app_require__ = __webpack_require__\nconst __next_app_load_chunk__ = () => Promise.resolve()\nconst originalPathname = \"/page\";\nconst __next_app__ = {\n require: __next_app_require__,\n loadChunk: __next_app_load_chunk__\n};\n\n// Create and export the route module that will be consumed.\nconst routeModule = new next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__.AppPageRouteModule({\n definition: {\n kind: next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_PAGE,\n page: \"/page\",\n pathname: \"/\",\n // The following aren't used in production.\n bundlePath: \"\",\n filename: \"\",\n appPaths: []\n },\n userland: {\n loaderTree: tree\n }\n});\n\n//# sourceMappingURL=app-page.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWFwcC1sb2FkZXIuanM/bmFtZT1hcHAlMkZwYWdlJnBhZ2U9JTJGcGFnZSZhcHBQYXRocz0lMkZwYWdlJnBhZ2VQYXRoPXByaXZhdGUtbmV4dC1hcHAtZGlyJTJGcGFnZS50c3gmYXBwRGlyPSUyRmFwcCUyRmNsaWVudCUyRnNyYyUyRmFwcCZwYWdlRXh0ZW5zaW9ucz10c3gmcGFnZUV4dGVuc2lvbnM9dHMmcGFnZUV4dGVuc2lvbnM9anN4JnBhZ2VFeHRlbnNpb25zPWpzJnJvb3REaXI9JTJGYXBwJTJGY2xpZW50JmlzRGV2PXRydWUmdHNjb25maWdQYXRoPXRzY29uZmlnLmpzb24mYmFzZVBhdGg9JmFzc2V0UHJlZml4PSZuZXh0Q29uZmlnT3V0cHV0PSZwcmVmZXJyZWRSZWdpb249Jm1pZGRsZXdhcmVDb25maWc9ZTMwJTNEISIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsYUFBYSxzQkFBc0I7QUFDaUU7QUFDckM7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDLHVCQUF1QixnSkFBaUU7QUFDeEY7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EseUJBQXlCLG9KQUFtRTtBQUM1RixvQkFBb0IsME5BQWdGO0FBQ3BHO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUN1QjtBQUM2RDtBQUNwRiw2QkFBNkIsbUJBQW1CO0FBQ2hEO0FBQ087QUFDQTtBQUNQO0FBQ0E7QUFDQTtBQUN1RDtBQUN2RDtBQUNPLHdCQUF3Qiw4R0FBa0I7QUFDakQ7QUFDQSxjQUFjLHlFQUFTO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVzaXN0ZW5jaWEtY2xpZW50Lz85MjBkIl0sInNvdXJjZXNDb250ZW50IjpbIlwiVFVSQk9QQUNLIHsgdHJhbnNpdGlvbjogbmV4dC1zc3IgfVwiO1xuaW1wb3J0IHsgQXBwUGFnZVJvdXRlTW9kdWxlIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvZnV0dXJlL3JvdXRlLW1vZHVsZXMvYXBwLXBhZ2UvbW9kdWxlLmNvbXBpbGVkXCI7XG5pbXBvcnQgeyBSb3V0ZUtpbmQgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9mdXR1cmUvcm91dGUta2luZFwiO1xuLy8gV2UgaW5qZWN0IHRoZSB0cmVlIGFuZCBwYWdlcyBoZXJlIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGVtIGluIHRoZSByb3V0ZVxuLy8gbW9kdWxlLlxuY29uc3QgdHJlZSA9IHtcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgJycsXG4gICAgICAgIHtcbiAgICAgICAgY2hpbGRyZW46IFsnX19QQUdFX18nLCB7fSwge1xuICAgICAgICAgIHBhZ2U6IFsoKSA9PiBpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9hcHAvY2xpZW50L3NyYy9hcHAvcGFnZS50c3hcIiksIFwiL2FwcC9jbGllbnQvc3JjL2FwcC9wYWdlLnRzeFwiXSxcbiAgICAgICAgICBcbiAgICAgICAgfV1cbiAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgJ2xheW91dCc6IFsoKSA9PiBpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9hcHAvY2xpZW50L3NyYy9hcHAvbGF5b3V0LnRzeFwiKSwgXCIvYXBwL2NsaWVudC9zcmMvYXBwL2xheW91dC50c3hcIl0sXG4nbm90LWZvdW5kJzogWygpID0+IGltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwibmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1lcnJvclwiKSwgXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbm90LWZvdW5kLWVycm9yXCJdLFxuICAgICAgICBcbiAgICAgIH1cbiAgICAgIF1cbiAgICAgIH0uY2hpbGRyZW47XG5jb25zdCBwYWdlcyA9IFtcIi9hcHAvY2xpZW50L3NyYy9hcHAvcGFnZS50c3hcIl07XG5leHBvcnQgeyB0cmVlLCBwYWdlcyB9O1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBHbG9iYWxFcnJvciB9IGZyb20gXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvZXJyb3ItYm91bmRhcnlcIjtcbmNvbnN0IF9fbmV4dF9hcHBfcmVxdWlyZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfX1xuY29uc3QgX19uZXh0X2FwcF9sb2FkX2NodW5rX18gPSAoKSA9PiBQcm9taXNlLnJlc29sdmUoKVxuZXhwb3J0IGNvbnN0IG9yaWdpbmFsUGF0aG5hbWUgPSBcIi9wYWdlXCI7XG5leHBvcnQgY29uc3QgX19uZXh0X2FwcF9fID0ge1xuICAgIHJlcXVpcmU6IF9fbmV4dF9hcHBfcmVxdWlyZV9fLFxuICAgIGxvYWRDaHVuazogX19uZXh0X2FwcF9sb2FkX2NodW5rX19cbn07XG5leHBvcnQgKiBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2VudHJ5LWJhc2VcIjtcbi8vIENyZWF0ZSBhbmQgZXhwb3J0IHRoZSByb3V0ZSBtb2R1bGUgdGhhdCB3aWxsIGJlIGNvbnN1bWVkLlxuZXhwb3J0IGNvbnN0IHJvdXRlTW9kdWxlID0gbmV3IEFwcFBhZ2VSb3V0ZU1vZHVsZSh7XG4gICAgZGVmaW5pdGlvbjoge1xuICAgICAgICBraW5kOiBSb3V0ZUtpbmQuQVBQX1BBR0UsXG4gICAgICAgIHBhZ2U6IFwiL3BhZ2VcIixcbiAgICAgICAgcGF0aG5hbWU6IFwiL1wiLFxuICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGFyZW4ndCB1c2VkIGluIHByb2R1Y3Rpb24uXG4gICAgICAgIGJ1bmRsZVBhdGg6IFwiXCIsXG4gICAgICAgIGZpbGVuYW1lOiBcIlwiLFxuICAgICAgICBhcHBQYXRoczogW11cbiAgICB9LFxuICAgIHVzZXJsYW5kOiB7XG4gICAgICAgIGxvYWRlclRyZWU6IHRyZWVcbiAgICB9XG59KTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXBwLXBhZ2UuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2Fapp%2Fclient%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2Fapp%2Fclient&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!\n");
/***/ }),
/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fapp%2Fclient%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js&modules=%2Fapp%2Fclient%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js&modules=%2Fapp%2Fclient%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js&modules=%2Fapp%2Fclient%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js&modules=%2Fapp%2Fclient%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js&modules=%2Fapp%2Fclient%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fstatic-generation-searchparams-bailout-provider.js&server=true!":
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fapp%2Fclient%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js&modules=%2Fapp%2Fclient%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js&modules=%2Fapp%2Fclient%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js&modules=%2Fapp%2Fclient%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js&modules=%2Fapp%2Fclient%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js&modules=%2Fapp%2Fclient%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fstatic-generation-searchparams-bailout-provider.js&server=true! ***!
\**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/app-router.js */ \"(ssr)/./node_modules/next/dist/client/components/app-router.js\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/error-boundary.js */ \"(ssr)/./node_modules/next/dist/client/components/error-boundary.js\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/layout-router.js */ \"(ssr)/./node_modules/next/dist/client/components/layout-router.js\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/not-found-boundary.js */ \"(ssr)/./node_modules/next/dist/client/components/not-found-boundary.js\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/render-from-template-context.js */ \"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/static-generation-searchparams-bailout-provider.js */ \"(ssr)/./node_modules/next/dist/client/components/static-generation-searchparams-bailout-provider.js\", 23))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTJGYXBwJTJGY2xpZW50JTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGYXBwLXJvdXRlci5qcyZtb2R1bGVzPSUyRmFwcCUyRmNsaWVudCUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRmVycm9yLWJvdW5kYXJ5LmpzJm1vZHVsZXM9JTJGYXBwJTJGY2xpZW50JTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGbGF5b3V0LXJvdXRlci5qcyZtb2R1bGVzPSUyRmFwcCUyRmNsaWVudCUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRm5vdC1mb3VuZC1ib3VuZGFyeS5qcyZtb2R1bGVzPSUyRmFwcCUyRmNsaWVudCUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRnJlbmRlci1mcm9tLXRlbXBsYXRlLWNvbnRleHQuanMmbW9kdWxlcz0lMkZhcHAlMkZjbGllbnQlMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZzdGF0aWMtZ2VuZXJhdGlvbi1zZWFyY2hwYXJhbXMtYmFpbG91dC1wcm92aWRlci5qcyZzZXJ2ZXI9dHJ1ZSEiLCJtYXBwaW5ncyI6IkFBQUEsa09BQXVHO0FBQ3ZHLDBPQUEyRztBQUMzRyx3T0FBMEc7QUFDMUcsa1BBQStHO0FBQy9HLHNRQUF5SDtBQUN6SCIsInNvdXJjZXMiOlsid2VicGFjazovL3Jlc2lzdGVuY2lhLWNsaWVudC8/YzA0ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9hcHAvY2xpZW50L25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYXBwLXJvdXRlci5qc1wiKTtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL2FwcC9jbGllbnQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9lcnJvci1ib3VuZGFyeS5qc1wiKTtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL2FwcC9jbGllbnQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9sYXlvdXQtcm91dGVyLmpzXCIpO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvYXBwL2NsaWVudC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1ib3VuZGFyeS5qc1wiKTtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL2FwcC9jbGllbnQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9yZW5kZXItZnJvbS10ZW1wbGF0ZS1jb250ZXh0LmpzXCIpO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvYXBwL2NsaWVudC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3N0YXRpYy1nZW5lcmF0aW9uLXNlYXJjaHBhcmFtcy1iYWlsb3V0LXByb3ZpZGVyLmpzXCIpIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fapp%2Fclient%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js&modules=%2Fapp%2Fclient%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js&modules=%2Fapp%2Fclient%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js&modules=%2Fapp%2Fclient%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js&modules=%2Fapp%2Fclient%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js&modules=%2Fapp%2Fclient%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fstatic-generation-searchparams-bailout-provider.js&server=true!\n");
/***/ }),
/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fapp%2Fclient%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%22path%22%3A%22src%2Fapp%2Flayout.tsx%22%2C%22import%22%3A%22Inter%22%2C%22arguments%22%3A%5B%7B%22subsets%22%3A%5B%22latin%22%5D%7D%5D%2C%22variableName%22%3A%22inter%22%7D&modules=%2Fapp%2Fclient%2Fsrc%2Fapp%2Fglobals.css&server=true!":
/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fapp%2Fclient%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%22path%22%3A%22src%2Fapp%2Flayout.tsx%22%2C%22import%22%3A%22Inter%22%2C%22arguments%22%3A%5B%7B%22subsets%22%3A%5B%22latin%22%5D%7D%5D%2C%22variableName%22%3A%22inter%22%7D&modules=%2Fapp%2Fclient%2Fsrc%2Fapp%2Fglobals.css&server=true! ***!
\***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (() => {
/***/ }),
/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fapp%2Fclient%2Fsrc%2Fapp%2Fpage.tsx&server=true!":
/*!*****************************************************************************************************************************************************!*\
!*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fapp%2Fclient%2Fsrc%2Fapp%2Fpage.tsx&server=true! ***!
\*****************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./src/app/page.tsx */ \"(ssr)/./src/app/page.tsx\"))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTJGYXBwJTJGY2xpZW50JTJGc3JjJTJGYXBwJTJGcGFnZS50c3gmc2VydmVyPXRydWUhIiwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVzaXN0ZW5jaWEtY2xpZW50Lz8yOWE3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL2FwcC9jbGllbnQvc3JjL2FwcC9wYWdlLnRzeFwiKSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fapp%2Fclient%2Fsrc%2Fapp%2Fpage.tsx&server=true!\n");
/***/ }),
/***/ "(ssr)/./src/app/page.tsx":
/*!**************************!*\
!*** ./src/app/page.tsx ***!
\**************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Home)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _hooks_useSocket__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../hooks/useSocket */ \"(ssr)/./src/hooks/useSocket.ts\");\n/* harmony import */ var _hooks_useSessionStorage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../hooks/useSessionStorage */ \"(ssr)/./src/hooks/useSessionStorage.ts\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! framer-motion */ \"(ssr)/./node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! framer-motion */ \"(ssr)/./node_modules/framer-motion/dist/es/render/dom/motion.mjs\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! next/image */ \"(ssr)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _components_GameBoard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../components/GameBoard */ \"(ssr)/./src/components/GameBoard.tsx\");\n/* harmony import */ var _components_LogoutButton__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../components/LogoutButton */ \"(ssr)/./src/components/LogoutButton.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\n\n\n\n\n// Constantes de apellidos\nconst SURNAMES = [\n // Franceses\n \"Dubois\",\n \"Leroy\",\n \"Moreau\",\n \"Petit\",\n \"Lefebvre\",\n \"Michel\",\n \"Durand\",\n // Británicos\n \"Smith\",\n \"Jones\",\n \"Williams\",\n \"Brown\",\n \"Taylor\",\n \"Wilson\",\n \"Evans\",\n // Americanos\n \"Miller\",\n \"Davis\",\n \"Garcia\",\n \"Rodriguez\",\n \"Martinez\",\n \"Hernandez\"\n];\nfunction Home() {\n const { isConnected, gameState, roomsList, actions, socket } = (0,_hooks_useSocket__WEBPACK_IMPORTED_MODULE_2__.useSocket)();\n const { session, saveSession, updateSession, clearSession } = (0,_hooks_useSessionStorage__WEBPACK_IMPORTED_MODULE_3__.useSessionStorage)();\n // Estados locales de UI\n const [view, setView] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"login\");\n const [playerName, setPlayerName] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n // El apellido se genera al loguearse\n const [fullPlayerName, setFullPlayerName] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n // UI Create/Join\n const [showCreateModal, setShowCreateModal] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [createConfig, setCreateConfig] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n maxPlayers: 5,\n password: \"\"\n });\n const [passwordPromptRoomId, setPasswordPromptRoomId] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [joinPassword, setJoinPassword] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [hasReconnected, setHasReconnected] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n // Restaurar sesión al cargar - SOLO UNA VEZ\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (session && isConnected && !hasReconnected) {\n setPlayerName(session.playerName);\n setFullPlayerName(session.fullPlayerName);\n setView(session.currentView);\n // Si había una partida activa, intentar reconectar\n if (session.roomId && session.currentView === \"game\") {\n actions.reconnectSession({\n playerName: session.fullPlayerName,\n roomId: session.roomId\n });\n } else if (session.currentView === \"lobby\") {\n actions.refreshRooms();\n }\n setHasReconnected(true);\n }\n }, [\n session,\n isConnected,\n hasReconnected,\n actions,\n setPlayerName,\n setFullPlayerName,\n setView,\n setHasReconnected\n ]);\n // Efecto para cambiar a vista de juego cuando el servidor nos une\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (gameState?.roomId) {\n setView(\"game\");\n // Guardar en sesión\n updateSession({\n currentView: \"game\",\n roomId: gameState.roomId\n });\n } else if (view === \"game\" && !gameState) {\n // Si estábamos en juego y volvemos a null, volver al lobby\n // Pero solo si no estamos esperando una reconexión inicial\n if (hasReconnected) {\n setView(\"lobby\");\n updateSession({\n currentView: \"lobby\",\n roomId: undefined\n });\n }\n }\n }, [\n gameState,\n view,\n hasReconnected,\n updateSession,\n setView\n ]);\n // Listener para errores de socket que deben expulsar al lobby\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (!socket) return;\n const handleError = (msg)=>{\n if (msg === \"La partida ya no existe\" || msg === \"No se pudo reconectar a la partida\") {\n setView(\"lobby\");\n updateSession({\n currentView: \"lobby\",\n roomId: undefined\n });\n }\n };\n socket.on(\"error\", handleError);\n return ()=>{\n socket.off(\"error\", handleError);\n };\n }, [\n socket,\n updateSession,\n setView\n ]);\n const handleLogin = (e)=>{\n e.preventDefault();\n if (playerName) {\n // Generar apellido aleatorio\n const randomSurname = SURNAMES[Math.floor(Math.random() * SURNAMES.length)];\n const fullName = `${playerName} ${randomSurname}`;\n setFullPlayerName(fullName);\n // Guardar sesión\n saveSession({\n playerName,\n fullPlayerName: fullName,\n currentView: \"lobby\"\n });\n setView(\"lobby\");\n actions.refreshRooms();\n }\n };\n const handleLogout = ()=>{\n clearSession();\n setView(\"login\");\n setPlayerName(\"\");\n setFullPlayerName(\"\");\n // Si está en una partida, salir\n if (gameState?.roomId) {\n actions.leaveGame();\n }\n };\n const handleCreateGame = (e)=>{\n e.preventDefault();\n actions.createGame(fullPlayerName, createConfig.maxPlayers, createConfig.password);\n setShowCreateModal(false);\n };\n const requestJoinGame = (room)=>{\n if (room.isPrivate) {\n setPasswordPromptRoomId(room.id);\n setJoinPassword(\"\");\n } else {\n actions.joinGame(room.id, fullPlayerName);\n }\n };\n const submitJoinPassword = ()=>{\n if (passwordPromptRoomId) {\n actions.joinGame(passwordPromptRoomId, fullPlayerName, joinPassword);\n setPasswordPromptRoomId(null);\n }\n };\n // --- RENDER DE JUEGO O SALA DE ESPERA ---\n if (view === \"game\" && gameState && socket) {\n // ¿Estamos en fase de lobby dentro de la partida?\n if (gameState.phase === \"lobby\") {\n const isHost = gameState.hostId === socket.id;\n // Podríamos obtener maxPlayers del array players si no lo tenemos en gameState,\n // pero lo ideal sería tenerlo. Por ahora asumimos que si ya estamos dentro,\n // sabemos cuantos somos.\n // NOTA: GameState no tiene maxPlayers explicitamente, pero podemos deducirlo o añadirlo.\n // Por simplicidad, usaremos el length para validar minimo.\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"relative min-h-screen flex flex-col items-center justify-center overflow-hidden bg-zinc-900 font-mono text-gray-200\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 z-0 opacity-40\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_4___default()), {\n src: \"/assets/images/ui/bg_game.png\",\n alt: \"War Room\",\n fill: true,\n className: \"object-cover\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 160,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-black/70\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 161,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 159,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"z-10 bg-black/80 p-8 rounded border border-white/20 max-w-2xl w-full mx-4 backdrop-blur-md\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-3xl font-bold text-yellow-500 mb-2 uppercase tracking-widest\",\n children: \"Sala de Espera\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 166,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xl font-bold text-white mb-1\",\n children: gameState.roomName\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 167,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-400\",\n children: \"Operaci\\xf3n en curso. Esperando activaci\\xf3n...\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 168,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 165,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 gap-4 mb-8\",\n children: gameState.players.map((player)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white/5 p-3 rounded flex items-center gap-3 border border-white/10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-3 h-3 rounded-full ${player.id === socket.id ? \"bg-green-500 shadow-green-500/50 shadow-lg\" : \"bg-gray-500\"}`\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 174,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: player.id === socket.id ? \"font-bold text-white\" : \"text-gray-300\",\n children: player.name\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 175,\n columnNumber: 37\n }, this),\n player.id === gameState.hostId && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[10px] bg-yellow-900/50 text-yellow-500 px-2 py-0.5 rounded ml-auto\",\n children: \"HOST\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 179,\n columnNumber: 41\n }, this)\n ]\n }, player.id, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 173,\n columnNumber: 33\n }, this))\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 171,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center gap-4 border-t border-white/10 pt-6\",\n children: isHost ? /*#__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)(\"p\", {\n className: \"text-sm text-gray-400 mb-2\",\n children: [\n \"Jugadores: \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white font-bold\",\n children: gameState.players.length\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 190,\n columnNumber: 52\n }, this),\n gameState.players.length < 5 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-400 ml-2\",\n children: \"(M\\xednimo 5 requeridos)\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 191,\n columnNumber: 74\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 189,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>actions.startGame(),\n disabled: gameState.players.length < 5,\n className: \"w-full max-w-md bg-yellow-600 hover:bg-yellow-500 disabled:bg-gray-700 disabled:cursor-not-allowed text-white font-bold py-4 rounded uppercase tracking-[0.2em] transition-all shadow-lg\",\n children: \"INICIAR MISI\\xd3N\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 193,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center animate-pulse\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-yellow-500 font-bold uppercase tracking-wider\",\n children: \"Esperando al Comandante...\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 203,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-gray-500 mt-2\",\n children: \"La misi\\xf3n comenzar\\xe1 cuando el l\\xedder d\\xe9 la orden.\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 204,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 202,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 186,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 164,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 158,\n columnNumber: 17\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_GameBoard__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n gameState: gameState,\n currentPlayerId: socket.id || \"\",\n actions: actions,\n fullPlayerName: fullPlayerName\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 214,\n columnNumber: 13\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"relative min-h-screen flex flex-col items-center overflow-hidden bg-zinc-900 font-mono text-gray-200\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 z-0 opacity-40\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_4___default()), {\n src: \"/assets/images/ui/bg_lobby.png\",\n alt: \"Lobby Background\",\n fill: true,\n className: \"object-cover\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 228,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-gradient-to-t from-black via-black/50 to-transparent\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 234,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 227,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"z-10 w-full p-4 flex justify-between items-center max-w-6xl\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_4___default()), {\n src: \"/assets/images/ui/logo.png\",\n alt: \"Logo\",\n width: 150,\n height: 50,\n className: \"object-contain filter drop-shadow hidden md:block\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 240,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl font-bold tracking-widest uppercase text-yellow-600\",\n children: \"Francia Ocupada\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 241,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 239,\n columnNumber: 17\n }, this),\n view === \"lobby\" && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3 bg-black/50 px-4 py-2 rounded border border-white/10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-gray-400\",\n children: \"AGENTE:\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 248,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-bold text-yellow-500\",\n children: fullPlayerName\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 249,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 247,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_LogoutButton__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n onClick: handleLogout\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 251,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 246,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 238,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"z-10 w-full flex-1 flex flex-col items-center justify-center p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_7__.AnimatePresence, {\n mode: \"wait\",\n children: [\n view === \"login\" && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.form, {\n initial: {\n opacity: 0,\n y: 20\n },\n animate: {\n opacity: 1,\n y: 0\n },\n exit: {\n opacity: 0,\n y: -20\n },\n onSubmit: handleLogin,\n className: \"bg-black/80 p-8 rounded border border-white/20 shadow-2xl max-w-md w-full backdrop-blur-md\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xl text-center mb-6 uppercase tracking-[0.2em] text-white\",\n children: \"Identificaci\\xf3n\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 269,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"text-xs uppercase text-gray-500 block mb-1\",\n children: \"Nombre en Clave\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 273,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n required: true,\n value: playerName,\n onChange: (e)=>setPlayerName(e.target.value),\n className: \"w-full bg-white/10 border border-white/20 p-3 rounded text-white focus:outline-none focus:border-yellow-500 transition-colors\",\n placeholder: \"Ej: Agente\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 274,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 272,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"submit\",\n className: \"w-full bg-yellow-700 hover:bg-yellow-600 text-white font-bold py-3 mt-4 rounded uppercase tracking-wider transition-all\",\n children: \"Acceder al Cuartel\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 284,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 271,\n columnNumber: 29\n }, this)\n ]\n }, \"login-form\", true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 261,\n columnNumber: 25\n }, this),\n view === \"lobby\" && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.div, {\n initial: {\n opacity: 0\n },\n animate: {\n opacity: 1\n },\n exit: {\n opacity: 0\n },\n className: \"w-full max-w-5xl\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-end mb-6 border-b border-white/20 pb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-3xl font-light text-white\",\n children: \"MISIONES ACTIVAS\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 305,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-400 text-sm mt-1\",\n children: \"Selecciona una operaci\\xf3n o inicia una nueva.\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 306,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 304,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setShowCreateModal(true),\n className: \"bg-blue-800 hover:bg-blue-700 text-white px-6 py-2 rounded uppercase text-sm font-bold tracking-wider shadow-lg border border-blue-600 transition-all\",\n children: \"+ Crear Operaci\\xf3n\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 308,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 303,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\",\n children: roomsList.length === 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"col-span-full py-20 text-center text-gray-500 bg-black/30 rounded border border-white/5 border-dashed\",\n children: \"No hay misiones activas en este momento.\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 318,\n columnNumber: 37\n }, this) : roomsList.map((room)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.div, {\n initial: {\n scale: 0.95,\n opacity: 0\n },\n animate: {\n scale: 1,\n opacity: 1\n },\n className: \"bg-black/60 border border-white/10 p-5 rounded hover:border-yellow-700/50 transition-colors group relative overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 right-0 p-2\",\n children: room.isPrivate ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n title: \"Privada\",\n className: \"text-red-400\",\n children: \"\\uD83D\\uDD12\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 331,\n columnNumber: 53\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n title: \"P\\xfablica\",\n className: \"text-green-400/50\",\n children: \"\\uD83D\\uDD13\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 333,\n columnNumber: 53\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 329,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-xl font-bold text-yellow-500 mb-1 group-hover:text-yellow-400 transition-colors\",\n children: room.name\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 337,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-400 mb-4 flex gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"bg-white/10 px-2 py-0.5 rounded textxs\",\n children: \"HOST:\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 342,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white\",\n children: [\n room.hostId.substring(0, 6),\n \"...\"\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 345,\n columnNumber: 49\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 341,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center mt-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-end gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-3xl font-bold text-white\",\n children: room.currentPlayers\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 350,\n columnNumber: 53\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-gray-500 mb-1\",\n children: [\n \"/ \",\n room.maxPlayers\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 351,\n columnNumber: 53\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 349,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n disabled: room.currentPlayers >= room.maxPlayers || room.status !== \"waiting\",\n onClick: ()=>requestJoinGame(room),\n className: \"bg-white/10 hover:bg-white/20 text-white px-4 py-2 rounded text-xs uppercase font-bold transition-colors disabled:opacity-30 disabled:cursor-not-allowed\",\n children: room.status === \"playing\" ? \"EN CURSO\" : room.currentPlayers >= room.maxPlayers ? \"LLENA\" : \"UNIRSE\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 354,\n columnNumber: 49\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 348,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0 h-1 bg-yellow-900/40 w-full\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-full bg-yellow-600 transition-all duration-500\",\n style: {\n width: `${room.currentPlayers / room.maxPlayers * 100}%`\n }\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 365,\n columnNumber: 49\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 364,\n columnNumber: 45\n }, this)\n ]\n }, room.id, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 323,\n columnNumber: 41\n }, this))\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 316,\n columnNumber: 29\n }, this)\n ]\n }, \"lobby-list\", true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 296,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 257,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 256,\n columnNumber: 13\n }, this),\n showCreateModal && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"fixed inset-0 z-50 flex items-center justify-center bg-black/80 backdrop-blur-sm\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.div, {\n initial: {\n scale: 0.9\n },\n animate: {\n scale: 1\n },\n className: \"bg-zinc-800 p-6 rounded border border-white/20 w-full max-w-sm shadow-2xl\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-bold text-white mb-4 uppercase\",\n children: \"Configurar Operaci\\xf3n\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 388,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n onSubmit: handleCreateGame,\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-xs uppercase text-gray-400 mb-1\",\n children: \"N\\xba Jugadores\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 391,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"select\", {\n value: createConfig.maxPlayers,\n onChange: (e)=>setCreateConfig({\n ...createConfig,\n maxPlayers: Number(e.target.value)\n }),\n className: \"w-full bg-black/40 border border-white/10 p-2 rounded text-white\",\n children: [\n 5,\n 6,\n 7,\n 8,\n 9,\n 10\n ].map((n)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: n,\n children: [\n n,\n \" Jugadores\"\n ]\n }, n, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 398,\n columnNumber: 41\n }, this))\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 392,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 390,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-xs uppercase text-gray-400 mb-1\",\n children: \"Contrase\\xf1a (Opcional)\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 403,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"password\",\n value: createConfig.password,\n onChange: (e)=>setCreateConfig({\n ...createConfig,\n password: e.target.value\n }),\n className: \"w-full bg-black/40 border border-white/10 p-2 rounded text-white font-mono\",\n placeholder: \"Dejar vac\\xedo para p\\xfablica\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 404,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 402,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-2 mt-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setShowCreateModal(false),\n className: \"flex-1 py-2 text-gray-400 hover:text-white transition-colors\",\n children: \"Cancelar\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 413,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"submit\",\n className: \"flex-1 py-2 bg-yellow-700 hover:bg-yellow-600 text-white rounded font-bold uppercase\",\n children: \"Crear\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 414,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 412,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 389,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 384,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 383,\n columnNumber: 17\n }, this),\n passwordPromptRoomId && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"fixed inset-0 z-50 flex items-center justify-center bg-black/80 backdrop-blur-sm\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.div, {\n initial: {\n scale: 0.9\n },\n animate: {\n scale: 1\n },\n className: \"bg-zinc-800 p-6 rounded border border-red-900/50 w-full max-w-sm shadow-2xl\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-bold text-red-400 mb-2 uppercase flex items-center gap-2\",\n children: \"\\uD83D\\uDD12 Acceso Restringido\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 428,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-gray-400 mb-4\",\n children: \"Esta operaci\\xf3n es clasificada. Introduce la clave de acceso.\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 431,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"password\",\n autoFocus: true,\n value: joinPassword,\n onChange: (e)=>setJoinPassword(e.target.value),\n onKeyDown: (e)=>e.key === \"Enter\" && submitJoinPassword(),\n className: \"w-full bg-black/40 border border-red-900/30 p-2 rounded text-white font-mono mb-4 focus:border-red-500 outline-none\",\n placeholder: \"Clave de acceso...\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 433,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setPasswordPromptRoomId(null),\n className: \"flex-1 py-2 text-gray-400 hover:text-white\",\n children: \"Cancelar\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 444,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: submitJoinPassword,\n className: \"flex-1 py-2 bg-red-900 hover:bg-red-800 text-white rounded font-bold uppercase\",\n children: \"Acceder\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 445,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 443,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 424,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 423,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-2 right-4 text-[10px] text-gray-600 font-mono\",\n children: isConnected ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-green-900\",\n children: \"● CONEXI\\xd3N SEGURA\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 452,\n columnNumber: 32\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-900\",\n children: \"● BUSCANDO SE\\xd1AL...\"\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 452,\n columnNumber: 92\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 451,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/app/page.tsx\",\n lineNumber: 224,\n columnNumber: 9\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Ozs7OztZQVExSXRDLHNDQUNHLDhEQUFDdUM7Z0JBQUlELFdBQVU7MEJBQ1gsNEVBQUNsRSxpREFBTUEsQ0FBQ21FLEdBQUc7b0JBQ1BzQixTQUFTO3dCQUFFYyxPQUFPO29CQUFJO29CQUFHWCxTQUFTO3dCQUFFVyxPQUFPO29CQUFFO29CQUM3Q3JDLFdBQVU7O3NDQUVWLDhEQUFDdUM7NEJBQUd2QyxXQUFVO3NDQUF3RTs7Ozs7O3NDQUd0Riw4REFBQ007NEJBQUVOLFdBQVU7c0NBQTZCOzs7Ozs7c0NBRTFDLDhEQUFDOEI7NEJBQ0dNLE1BQUs7NEJBQ0xZLFNBQVM7NEJBQ1RoQixPQUFPcEU7NEJBQ1BxRSxVQUFVdkQsQ0FBQUEsSUFBS2IsZ0JBQWdCYSxFQUFFd0QsTUFBTSxDQUFDRixLQUFLOzRCQUM3Q2lCLFdBQVd2RSxDQUFBQSxJQUFLQSxFQUFFd0UsR0FBRyxLQUFLLFdBQVd2RDs0QkFDckNLLFdBQVU7NEJBQ1ZtQyxhQUFZOzs7Ozs7c0NBR2hCLDhEQUFDbEM7NEJBQUlELFdBQVU7OzhDQUNYLDhEQUFDYTtvQ0FBT0MsU0FBUyxJQUFNbkQsd0JBQXdCO29DQUFPcUMsV0FBVTs4Q0FBNkM7Ozs7Ozs4Q0FDN0csOERBQUNhO29DQUFPQyxTQUFTbkI7b0NBQW9CSyxXQUFVOzhDQUFpRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBTWhKLDhEQUFDQztnQkFBSUQsV0FBVTswQkFDVjNELDRCQUFjLDhEQUFDc0U7b0JBQUtYLFdBQVU7OEJBQWlCOzs7Ozt5Q0FBMkIsOERBQUNXO29CQUFLWCxXQUFVOzhCQUFlOzs7Ozs7Ozs7Ozs7Ozs7OztBQUkxSCIsInNvdXJjZXMiOlsid2VicGFjazovL3Jlc2lzdGVuY2lhLWNsaWVudC8uL3NyYy9hcHAvcGFnZS50c3g/ZjY4YSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VTb2NrZXQgfSBmcm9tICcuLi9ob29rcy91c2VTb2NrZXQnO1xuaW1wb3J0IHsgdXNlU2Vzc2lvblN0b3JhZ2UgfSBmcm9tICcuLi9ob29rcy91c2VTZXNzaW9uU3RvcmFnZSc7XG5pbXBvcnQgeyBtb3Rpb24sIEFuaW1hdGVQcmVzZW5jZSB9IGZyb20gJ2ZyYW1lci1tb3Rpb24nO1xuaW1wb3J0IEltYWdlIGZyb20gJ25leHQvaW1hZ2UnO1xuaW1wb3J0IEdhbWVCb2FyZCBmcm9tICcuLi9jb21wb25lbnRzL0dhbWVCb2FyZCc7XG5pbXBvcnQgTG9nb3V0QnV0dG9uIGZyb20gJy4uL2NvbXBvbmVudHMvTG9nb3V0QnV0dG9uJztcbmltcG9ydCB7IEdhbWVSb29tIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3R5cGVzJztcblxuLy8gQ29uc3RhbnRlcyBkZSBhcGVsbGlkb3NcbmNvbnN0IFNVUk5BTUVTID0gW1xuICAgIC8vIEZyYW5jZXNlc1xuICAgICdEdWJvaXMnLCAnTGVyb3knLCAnTW9yZWF1JywgJ1BldGl0JywgJ0xlZmVidnJlJywgJ01pY2hlbCcsICdEdXJhbmQnLFxuICAgIC8vIEJyaXTDoW5pY29zXG4gICAgJ1NtaXRoJywgJ0pvbmVzJywgJ1dpbGxpYW1zJywgJ0Jyb3duJywgJ1RheWxvcicsICdXaWxzb24nLCAnRXZhbnMnLFxuICAgIC8vIEFtZXJpY2Fub3NcbiAgICAnTWlsbGVyJywgJ0RhdmlzJywgJ0dhcmNpYScsICdSb2RyaWd1ZXonLCAnTWFydGluZXonLCAnSGVybmFuZGV6J1xuXTtcblxudHlwZSBWaWV3U3RhdGUgPSAnbG9naW4nIHwgJ2xvYmJ5JyB8ICdnYW1lJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gSG9tZSgpIHtcbiAgICBjb25zdCB7IGlzQ29ubmVjdGVkLCBnYW1lU3RhdGUsIHJvb21zTGlzdCwgYWN0aW9ucywgc29ja2V0IH0gPSB1c2VTb2NrZXQoKTtcbiAgICBjb25zdCB7IHNlc3Npb24sIHNhdmVTZXNzaW9uLCB1cGRhdGVTZXNzaW9uLCBjbGVhclNlc3Npb24gfSA9IHVzZVNlc3Npb25TdG9yYWdlKCk7XG5cbiAgICAvLyBFc3RhZG9zIGxvY2FsZXMgZGUgVUlcbiAgICBjb25zdCBbdmlldywgc2V0Vmlld10gPSB1c2VTdGF0ZTxWaWV3U3RhdGU+KCdsb2dpbicpO1xuICAgIGNvbnN0IFtwbGF5ZXJOYW1lLCBzZXRQbGF5ZXJOYW1lXSA9IHVzZVN0YXRlKCcnKTtcbiAgICAvLyBFbCBhcGVsbGlkbyBzZSBnZW5lcmEgYWwgbG9ndWVhcnNlXG4gICAgY29uc3QgW2Z1bGxQbGF5ZXJOYW1lLCBzZXRGdWxsUGxheWVyTmFtZV0gPSB1c2VTdGF0ZSgnJyk7XG5cbiAgICAvLyBVSSBDcmVhdGUvSm9pblxuICAgIGNvbnN0IFtzaG93Q3JlYXRlTW9kYWwsIHNldFNob3dDcmVhdGVNb2RhbF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2NyZWF0ZUNvbmZpZywgc2V0Q3JlYXRlQ29uZmlnXSA9IHVzZVN0YXRlKHsgbWF4UGxheWVyczogNSwgcGFzc3dvcmQ6ICcnIH0pO1xuXG4gICAgY29uc3QgW3Bhc3N3b3JkUHJvbXB0Um9vbUlkLCBzZXRQYXNzd29yZFByb21wdFJvb21JZF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgICBjb25zdCBbam9pblBhc3N3b3JkLCBzZXRKb2luUGFzc3dvcmRdID0gdXNlU3RhdGUoJycpO1xuICAgIGNvbnN0IFtoYXNSZWNvbm5lY3RlZCwgc2V0SGFzUmVjb25uZWN0ZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gICAgLy8gUmVzdGF1cmFyIHNlc2nDs24gYWwgY2FyZ2FyIC0gU09MTyBVTkEgVkVaXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHNlc3Npb24gJiYgaXNDb25uZWN0ZWQgJiYgIWhhc1JlY29ubmVjdGVkKSB7XG4gICAgICAgICAgICBzZXRQbGF5ZXJOYW1lKHNlc3Npb24ucGxheWVyTmFtZSk7XG4gICAgICAgICAgICBzZXRGdWxsUGxheWVyTmFtZShzZXNzaW9uLmZ1bGxQbGF5ZXJOYW1lKTtcbiAgICAgICAgICAgIHNldFZpZXcoc2Vzc2lvbi5jdXJyZW50Vmlldyk7XG5cbiAgICAgICAgICAgIC8vIFNpIGhhYsOtYSB1bmEgcGFydGlkYSBhY3RpdmEsIGludGVudGFyIHJlY29uZWN0YXJcbiAgICAgICAgICAgIGlmIChzZXNzaW9uLnJvb21JZCAmJiBzZXNzaW9uLmN1cnJlbnRWaWV3ID09PSAnZ2FtZScpIHtcbiAgICAgICAgICAgICAgICBhY3Rpb25zLnJlY29ubmVjdFNlc3Npb24oeyBwbGF5ZXJOYW1lOiBzZXNzaW9uLmZ1bGxQbGF5ZXJOYW1lLCByb29tSWQ6IHNlc3Npb24ucm9vbUlkIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzZXNzaW9uLmN1cnJlbnRWaWV3ID09PSAnbG9iYnknKSB7XG4gICAgICAgICAgICAgICAgYWN0aW9ucy5yZWZyZXNoUm9vbXMoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2V0SGFzUmVjb25uZWN0ZWQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9LCBbc2Vzc2lvbiwgaXNDb25uZWN0ZWQsIGhhc1JlY29ubmVjdGVkLCBhY3Rpb25zLCBzZXRQbGF5ZXJOYW1lLCBzZXRGdWxsUGxheWVyTmFtZSwgc2V0Vmlldywgc2V0SGFzUmVjb25uZWN0ZWRdKTtcblxuICAgIC8vIEVmZWN0byBwYXJhIGNhbWJpYXIgYSB2aXN0YSBkZSBqdWVnbyBjdWFuZG8gZWwgc2Vydmlkb3Igbm9zIHVuZVxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChnYW1lU3RhdGU/LnJvb21JZCkge1xuICAgICAgICAgICAgc2V0VmlldygnZ2FtZScpO1xuICAgICAgICAgICAgLy8gR3VhcmRhciBlbiBzZXNpw7NuXG4gICAgICAgICAgICB1cGRhdGVTZXNzaW9uKHsgY3VycmVudFZpZXc6ICdnYW1lJywgcm9vbUlkOiBnYW1lU3RhdGUucm9vbUlkIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHZpZXcgPT09ICdnYW1lJyAmJiAhZ2FtZVN0YXRlKSB7XG4gICAgICAgICAgICAvLyBTaSBlc3TDoWJhbW9zIGVuIGp1ZWdvIHkgdm9sdmVtb3MgYSBudWxsLCB2b2x2ZXIgYWwgbG9iYnlcbiAgICAgICAgICAgIC8vIFBlcm8gc29sbyBzaSBubyBlc3RhbW9zIGVzcGVyYW5kbyB1bmEgcmVjb25leGnDs24gaW5pY2lhbFxuICAgICAgICAgICAgaWYgKGhhc1JlY29ubmVjdGVkKSB7XG4gICAgICAgICAgICAgICAgc2V0VmlldygnbG9iYnknKTtcbiAgICAgICAgICAgICAgICB1cGRhdGVTZXNzaW9uKHsgY3VycmVudFZpZXc6ICdsb2JieScsIHJvb21JZDogdW5kZWZpbmVkIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW2dhbWVTdGF0ZSwgdmlldywgaGFzUmVjb25uZWN0ZWQsIHVwZGF0ZVNlc3Npb24sIHNldFZpZXddKTtcblxuICAgIC8vIExpc3RlbmVyIHBhcmEgZXJyb3JlcyBkZSBzb2NrZXQgcXVlIGRlYmVuIGV4cHVsc2FyIGFsIGxvYmJ5XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFzb2NrZXQpIHJldHVybjtcblxuICAgICAgICBjb25zdCBoYW5kbGVFcnJvciA9IChtc2c6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgaWYgKG1zZyA9PT0gJ0xhIHBhcnRpZGEgeWEgbm8gZXhpc3RlJyB8fCBtc2cgPT09ICdObyBzZSBwdWRvIHJlY29uZWN0YXIgYSBsYSBwYXJ0aWRhJykge1xuICAgICAgICAgICAgICAgIHNldFZpZXcoJ2xvYmJ5Jyk7XG4gICAgICAgICAgICAgICAgdXBkYXRlU2Vzc2lvbih7IGN1cnJlbnRWaWV3OiAnbG9iYnknLCByb29tSWQ6IHVuZGVmaW5lZCB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBzb2NrZXQub24oJ2Vycm9yJywgaGFuZGxlRXJyb3IpO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgc29ja2V0Lm9mZignZXJyb3InLCBoYW5kbGVFcnJvcik7XG4gICAgICAgIH07XG4gICAgfSwgW3NvY2tldCwgdXBkYXRlU2Vzc2lvbiwgc2V0Vmlld10pO1xuXG4gICAgY29uc3QgaGFuZGxlTG9naW4gPSAoZTogUmVhY3QuRm9ybUV2ZW50KSA9PiB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKHBsYXllck5hbWUpIHtcbiAgICAgICAgICAgIC8vIEdlbmVyYXIgYXBlbGxpZG8gYWxlYXRvcmlvXG4gICAgICAgICAgICBjb25zdCByYW5kb21TdXJuYW1lID0gU1VSTkFNRVNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogU1VSTkFNRVMubGVuZ3RoKV07XG4gICAgICAgICAgICBjb25zdCBmdWxsTmFtZSA9IGAke3BsYXllck5hbWV9ICR7cmFuZG9tU3VybmFtZX1gO1xuICAgICAgICAgICAgc2V0RnVsbFBsYXllck5hbWUoZnVsbE5hbWUpO1xuXG4gICAgICAgICAgICAvLyBHdWFyZGFyIHNlc2nDs25cbiAgICAgICAgICAgIHNhdmVTZXNzaW9uKHtcbiAgICAgICAgICAgICAgICBwbGF5ZXJOYW1lLFxuICAgICAgICAgICAgICAgIGZ1bGxQbGF5ZXJOYW1lOiBmdWxsTmFtZSxcbiAgICAgICAgICAgICAgICBjdXJyZW50VmlldzogJ2xvYmJ5J1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHNldFZpZXcoJ2xvYmJ5Jyk7XG4gICAgICAgICAgICBhY3Rpb25zLnJlZnJlc2hSb29tcygpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUxvZ291dCA9ICgpID0+IHtcbiAgICAgICAgY2xlYXJTZXNzaW9uKCk7XG4gICAgICAgIHNldFZpZXcoJ2xvZ2luJyk7XG4gICAgICAgIHNldFBsYXllck5hbWUoJycpO1xuICAgICAgICBzZXRGdWxsUGxheWVyTmFtZSgnJyk7XG4gICAgICAgIC8vIFNpIGVzdMOhIGVuIHVuYSBwYXJ0aWRhLCBzYWxpclxuICAgICAgICBpZiAoZ2FtZVN0YXRlPy5yb29tSWQpIHtcbiAgICAgICAgICAgIGFjdGlvbnMubGVhdmVHYW1lKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlQ3JlYXRlR2FtZSA9IChlOiBSZWFjdC5Gb3JtRXZlbnQpID0+IHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBhY3Rpb25zLmNyZWF0ZUdhbWUoZnVsbFBsYXllck5hbWUsIGNyZWF0ZUNvbmZpZy5tYXhQbGF5ZXJzLCBjcmVhdGVDb25maWcucGFzc3dvcmQpO1xuICAgICAgICBzZXRTaG93Q3JlYXRlTW9kYWwoZmFsc2UpO1xuICAgIH07XG5cbiAgICBjb25zdCByZXF1ZXN0Sm9pbkdhbWUgPSAocm9vbTogR2FtZVJvb20pID0+IHtcbiAgICAgICAgaWYgKHJvb20uaXNQcml2YXRlKSB7XG4gICAgICAgICAgICBzZXRQYXNzd29yZFByb21wdFJvb21JZChyb29tLmlkKTtcbiAgICAgICAgICAgIHNldEpvaW5QYXNzd29yZCgnJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhY3Rpb25zLmpvaW5HYW1lKHJvb20uaWQsIGZ1bGxQbGF5ZXJOYW1lKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBzdWJtaXRKb2luUGFzc3dvcmQgPSAoKSA9PiB7XG4gICAgICAgIGlmIChwYXNzd29yZFByb21wdFJvb21JZCkge1xuICAgICAgICAgICAgYWN0aW9ucy5qb2luR2FtZShwYXNzd29yZFByb21wdFJvb21JZCwgZnVsbFBsYXllck5hbWUsIGpvaW5QYXNzd29yZCk7XG4gICAgICAgICAgICBzZXRQYXNzd29yZFByb21wdFJvb21JZChudWxsKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvLyAtLS0gUkVOREVSIERFIEpVRUdPIE8gU0FMQSBERSBFU1BFUkEgLS0tXG4gICAgaWYgKHZpZXcgPT09ICdnYW1lJyAmJiBnYW1lU3RhdGUgJiYgc29ja2V0KSB7XG4gICAgICAgIC8vIMK/RXN0YW1vcyBlbiBmYXNlIGRlIGxvYmJ5IGRlbnRybyBkZSBsYSBwYXJ0aWRhP1xuICAgICAgICBpZiAoZ2FtZVN0YXRlLnBoYXNlID09PSAnbG9iYnknKSB7XG4gICAgICAgICAgICBjb25zdCBpc0hvc3QgPSBnYW1lU3RhdGUuaG9zdElkID09PSBzb2NrZXQuaWQ7XG4gICAgICAgICAgICAvLyBQb2Ryw61hbW9zIG9idGVuZXIgbWF4UGxheWVycyBkZWwgYXJyYXkgcGxheWVycyBzaSBubyBsbyB0ZW5lbW9zIGVuIGdhbWVTdGF0ZSxcbiAgICAgICAgICAgIC8vIHBlcm8gbG8gaWRlYWwgc2Vyw61hIHRlbmVybG8uIFBvciBhaG9yYSBhc3VtaW1vcyBxdWUgc2kgeWEgZXN0YW1vcyBkZW50cm8sXG4gICAgICAgICAgICAvLyBzYWJlbW9zIGN1YW50b3Mgc29tb3MuXG4gICAgICAgICAgICAvLyBOT1RBOiBHYW1lU3RhdGUgbm8gdGllbmUgbWF4UGxheWVycyBleHBsaWNpdGFtZW50ZSwgcGVybyBwb2RlbW9zIGRlZHVjaXJsbyBvIGHDsWFkaXJsby5cbiAgICAgICAgICAgIC8vIFBvciBzaW1wbGljaWRhZCwgdXNhcmVtb3MgZWwgbGVuZ3RoIHBhcmEgdmFsaWRhciBtaW5pbW8uXG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPG1haW4gY2xhc3NOYW1lPVwicmVsYXRpdmUgbWluLWgtc2NyZWVuIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIG92ZXJmbG93LWhpZGRlbiBiZy16aW5jLTkwMCBmb250LW1vbm8gdGV4dC1ncmF5LTIwMFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgei0wIG9wYWNpdHktNDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZSBzcmM9XCIvYXNzZXRzL2ltYWdlcy91aS9iZ19nYW1lLnBuZ1wiIGFsdD1cIldhciBSb29tXCIgZmlsbCBjbGFzc05hbWU9XCJvYmplY3QtY292ZXJcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIGJnLWJsYWNrLzcwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ6LTEwIGJnLWJsYWNrLzgwIHAtOCByb3VuZGVkIGJvcmRlciBib3JkZXItd2hpdGUvMjAgbWF4LXctMnhsIHctZnVsbCBteC00IGJhY2tkcm9wLWJsdXItbWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgbWItOFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LTN4bCBmb250LWJvbGQgdGV4dC15ZWxsb3ctNTAwIG1iLTIgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVzdFwiPlNhbGEgZGUgRXNwZXJhPC9oMj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhsIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIG1iLTFcIj57Z2FtZVN0YXRlLnJvb21OYW1lfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNDAwXCI+T3BlcmFjacOzbiBlbiBjdXJzby4gRXNwZXJhbmRvIGFjdGl2YWNpw7NuLi4uPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMiBnYXAtNCBtYi04XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2dhbWVTdGF0ZS5wbGF5ZXJzLm1hcChwbGF5ZXIgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17cGxheWVyLmlkfSBjbGFzc05hbWU9XCJiZy13aGl0ZS81IHAtMyByb3VuZGVkIGZsZXggaXRlbXMtY2VudGVyIGdhcC0zIGJvcmRlciBib3JkZXItd2hpdGUvMTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy0zIGgtMyByb3VuZGVkLWZ1bGwgJHtwbGF5ZXIuaWQgPT09IHNvY2tldC5pZCA/ICdiZy1ncmVlbi01MDAgc2hhZG93LWdyZWVuLTUwMC81MCBzaGFkb3ctbGcnIDogJ2JnLWdyYXktNTAwJ31gfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtwbGF5ZXIuaWQgPT09IHNvY2tldC5pZCA/ICdmb250LWJvbGQgdGV4dC13aGl0ZScgOiAndGV4dC1ncmF5LTMwMCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwbGF5ZXIubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwbGF5ZXIuaWQgPT09IGdhbWVTdGF0ZS5ob3N0SWQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtWzEwcHhdIGJnLXllbGxvdy05MDAvNTAgdGV4dC15ZWxsb3ctNTAwIHB4LTIgcHktMC41IHJvdW5kZWQgbWwtYXV0b1wiPkhPU1Q8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogUmVsbGVuYXIgaHVlY29zIHZhY8Otb3MgdmlzdWFsbWVudGUgc2kgcXVpc2llcmFtb3MgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAtNCBib3JkZXItdCBib3JkZXItd2hpdGUvMTAgcHQtNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpc0hvc3QgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS00MDAgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEp1Z2Fkb3JlczogPHNwYW4gY2xhc3NOYW1lPVwidGV4dC13aGl0ZSBmb250LWJvbGRcIj57Z2FtZVN0YXRlLnBsYXllcnMubGVuZ3RofTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Z2FtZVN0YXRlLnBsYXllcnMubGVuZ3RoIDwgNSAmJiA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXJlZC00MDAgbWwtMlwiPihNw61uaW1vIDUgcmVxdWVyaWRvcyk8L3NwYW4+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGFjdGlvbnMuc3RhcnRHYW1lKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2dhbWVTdGF0ZS5wbGF5ZXJzLmxlbmd0aCA8IDV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIG1heC13LW1kIGJnLXllbGxvdy02MDAgaG92ZXI6YmcteWVsbG93LTUwMCBkaXNhYmxlZDpiZy1ncmF5LTcwMCBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgdGV4dC13aGl0ZSBmb250LWJvbGQgcHktNCByb3VuZGVkIHVwcGVyY2FzZSB0cmFja2luZy1bMC4yZW1dIHRyYW5zaXRpb24tYWxsIHNoYWRvdy1sZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5JQ0lBUiBNSVNJw5NOXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBhbmltYXRlLXB1bHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXllbGxvdy01MDAgZm9udC1ib2xkIHVwcGVyY2FzZSB0cmFja2luZy13aWRlclwiPkVzcGVyYW5kbyBhbCBDb21hbmRhbnRlLi4uPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LWdyYXktNTAwIG10LTJcIj5MYSBtaXNpw7NuIGNvbWVuemFyw6EgY3VhbmRvIGVsIGzDrWRlciBkw6kgbGEgb3JkZW4uPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbWFpbj5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEdhbWVCb2FyZFxuICAgICAgICAgICAgICAgIGdhbWVTdGF0ZT17Z2FtZVN0YXRlfVxuICAgICAgICAgICAgICAgIGN1cnJlbnRQbGF5ZXJJZD17c29ja2V0LmlkIHx8ICcnfVxuICAgICAgICAgICAgICAgIGFjdGlvbnM9e2FjdGlvbnN9XG4gICAgICAgICAgICAgICAgZnVsbFBsYXllck5hbWU9e2Z1bGxQbGF5ZXJOYW1lfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8bWFpbiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBtaW4taC1zY3JlZW4gZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuIGJnLXppbmMtOTAwIGZvbnQtbW9ubyB0ZXh0LWdyYXktMjAwXCI+XG5cbiAgICAgICAgICAgIHsvKiBGT05ETyBDT03Dmk4gTE9CQlkvTE9HSU4gKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgei0wIG9wYWNpdHktNDBcIj5cbiAgICAgICAgICAgICAgICA8SW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgc3JjPVwiL2Fzc2V0cy9pbWFnZXMvdWkvYmdfbG9iYnkucG5nXCJcbiAgICAgICAgICAgICAgICAgICAgYWx0PVwiTG9iYnkgQmFja2dyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvdmVyXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCBiZy1ncmFkaWVudC10by10IGZyb20tYmxhY2sgdmlhLWJsYWNrLzUwIHRvLXRyYW5zcGFyZW50XCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7LyogSEVBREVSIC8gTE9HTyAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiei0xMCB3LWZ1bGwgcC00IGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBtYXgtdy02eGxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxJbWFnZSBzcmM9XCIvYXNzZXRzL2ltYWdlcy91aS9sb2dvLnBuZ1wiIGFsdD1cIkxvZ29cIiB3aWR0aD17MTUwfSBoZWlnaHQ9ezUwfSBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpbiBmaWx0ZXIgZHJvcC1zaGFkb3cgaGlkZGVuIG1kOmJsb2NrXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRleHQtMnhsIGZvbnQtYm9sZCB0cmFja2luZy13aWRlc3QgdXBwZXJjYXNlIHRleHQteWVsbG93LTYwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRnJhbmNpYSBPY3VwYWRhXG4gICAgICAgICAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAge3ZpZXcgPT09ICdsb2JieScgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0zIGJnLWJsYWNrLzUwIHB4LTQgcHktMiByb3VuZGVkIGJvcmRlciBib3JkZXItd2hpdGUvMTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1ncmF5LTQwMFwiPkFHRU5URTo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1ib2xkIHRleHQteWVsbG93LTUwMFwiPntmdWxsUGxheWVyTmFtZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxMb2dvdXRCdXR0b24gb25DbGljaz17aGFuZGxlTG9nb3V0fSAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiei0xMCB3LWZ1bGwgZmxleC0xIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHAtNFwiPlxuICAgICAgICAgICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cIndhaXRcIj5cblxuICAgICAgICAgICAgICAgICAgICB7LyogLS0tIFBBTlRBTExBIERFIExPR0lOIC0tLSAqL31cbiAgICAgICAgICAgICAgICAgICAge3ZpZXcgPT09ICdsb2dpbicgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPG1vdGlvbi5mb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PVwibG9naW4tZm9ybVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwLCB5OiAyMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgeTogMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCwgeTogLTIwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZUxvZ2lufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLWJsYWNrLzgwIHAtOCByb3VuZGVkIGJvcmRlciBib3JkZXItd2hpdGUvMjAgc2hhZG93LTJ4bCBtYXgtdy1tZCB3LWZ1bGwgYmFja2Ryb3AtYmx1ci1tZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQteGwgdGV4dC1jZW50ZXIgbWItNiB1cHBlcmNhc2UgdHJhY2tpbmctWzAuMmVtXSB0ZXh0LXdoaXRlXCI+SWRlbnRpZmljYWNpw7NuPC9oMj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwidGV4dC14cyB1cHBlcmNhc2UgdGV4dC1ncmF5LTUwMCBibG9jayBtYi0xXCI+Tm9tYnJlIGVuIENsYXZlPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3BsYXllck5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2UgPT4gc2V0UGxheWVyTmFtZShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLXdoaXRlLzEwIGJvcmRlciBib3JkZXItd2hpdGUvMjAgcC0zIHJvdW5kZWQgdGV4dC13aGl0ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6Ym9yZGVyLXllbGxvdy01MDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRWo6IEFnZW50ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIEFQRUxMSURPIEVMSU1JTkFETyAtIFNFIEdFTkVSQSBBVVRPTcOBVElDQU1FTlRFICovfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLXllbGxvdy03MDAgaG92ZXI6YmcteWVsbG93LTYwMCB0ZXh0LXdoaXRlIGZvbnQtYm9sZCBweS0zIG10LTQgcm91bmRlZCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXIgdHJhbnNpdGlvbi1hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY2NlZGVyIGFsIEN1YXJ0ZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21vdGlvbi5mb3JtPlxuICAgICAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgICAgIHsvKiAtLS0gUEFOVEFMTEEgREUgTE9CQlkgKExJU1RBIERFIFNBTEFTKSAtLS0gKi99XG4gICAgICAgICAgICAgICAgICAgIHt2aWV3ID09PSAnbG9iYnknICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PVwibG9iYnktbGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIG1heC13LTV4bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1lbmQgbWItNiBib3JkZXItYiBib3JkZXItd2hpdGUvMjAgcGItNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQtM3hsIGZvbnQtbGlnaHQgdGV4dC13aGl0ZVwiPk1JU0lPTkVTIEFDVElWQVM8L2gyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTQwMCB0ZXh0LXNtIG10LTFcIj5TZWxlY2Npb25hIHVuYSBvcGVyYWNpw7NuIG8gaW5pY2lhIHVuYSBudWV2YS48L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93Q3JlYXRlTW9kYWwodHJ1ZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1ibHVlLTgwMCBob3ZlcjpiZy1ibHVlLTcwMCB0ZXh0LXdoaXRlIHB4LTYgcHktMiByb3VuZGVkIHVwcGVyY2FzZSB0ZXh0LXNtIGZvbnQtYm9sZCB0cmFja2luZy13aWRlciBzaGFkb3ctbGcgYm9yZGVyIGJvcmRlci1ibHVlLTYwMCB0cmFuc2l0aW9uLWFsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgQ3JlYXIgT3BlcmFjacOzblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiBsZzpncmlkLWNvbHMtMyBnYXAtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cm9vbXNMaXN0Lmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNwYW4tZnVsbCBweS0yMCB0ZXh0LWNlbnRlciB0ZXh0LWdyYXktNTAwIGJnLWJsYWNrLzMwIHJvdW5kZWQgYm9yZGVyIGJvcmRlci13aGl0ZS81IGJvcmRlci1kYXNoZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBObyBoYXkgbWlzaW9uZXMgYWN0aXZhcyBlbiBlc3RlIG1vbWVudG8uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb21zTGlzdC5tYXAoKHJvb20pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3Jvb20uaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWw9e3sgc2NhbGU6IDAuOTUsIG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZT17eyBzY2FsZTogMSwgb3BhY2l0eTogMSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1ibGFjay82MCBib3JkZXIgYm9yZGVyLXdoaXRlLzEwIHAtNSByb3VuZGVkIGhvdmVyOmJvcmRlci15ZWxsb3ctNzAwLzUwIHRyYW5zaXRpb24tY29sb3JzIGdyb3VwIHJlbGF0aXZlIG92ZXJmbG93LWhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0wIHJpZ2h0LTAgcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cm9vbS5pc1ByaXZhdGUgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9XCJQcml2YWRhXCIgY2xhc3NOYW1lPVwidGV4dC1yZWQtNDAwXCI+8J+Ukjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9XCJQw7pibGljYVwiIGNsYXNzTmFtZT1cInRleHQtZ3JlZW4tNDAwLzUwXCI+8J+Ukzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LXhsIGZvbnQtYm9sZCB0ZXh0LXllbGxvdy01MDAgbWItMSBncm91cC1ob3Zlcjp0ZXh0LXllbGxvdy00MDAgdHJhbnNpdGlvbi1jb2xvcnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyb29tLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS00MDAgbWItNCBmbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJiZy13aGl0ZS8xMCBweC0yIHB5LTAuNSByb3VuZGVkIHRleHR4c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhPU1Q6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlXCI+e3Jvb20uaG9zdElkLnN1YnN0cmluZygwLCA2KX0uLi48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIG10LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1lbmQgZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LTN4bCBmb250LWJvbGQgdGV4dC13aGl0ZVwiPntyb29tLmN1cnJlbnRQbGF5ZXJzfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS01MDAgbWItMVwiPi8ge3Jvb20ubWF4UGxheWVyc308L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtyb29tLmN1cnJlbnRQbGF5ZXJzID49IHJvb20ubWF4UGxheWVycyB8fCByb29tLnN0YXR1cyAhPT0gJ3dhaXRpbmcnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHJlcXVlc3RKb2luR2FtZShyb29tKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy13aGl0ZS8xMCBob3ZlcjpiZy13aGl0ZS8yMCB0ZXh0LXdoaXRlIHB4LTQgcHktMiByb3VuZGVkIHRleHQteHMgdXBwZXJjYXNlIGZvbnQtYm9sZCB0cmFuc2l0aW9uLWNvbG9ycyBkaXNhYmxlZDpvcGFjaXR5LTMwIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Jvb20uc3RhdHVzID09PSAncGxheWluZycgPyAnRU4gQ1VSU08nIDogKHJvb20uY3VycmVudFBsYXllcnMgPj0gcm9vbS5tYXhQbGF5ZXJzID8gJ0xMRU5BJyA6ICdVTklSU0UnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogQmFycmEgZGUgcHJvZ3Jlc28gdmlzdWFsICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCBoLTEgYmcteWVsbG93LTkwMC80MCB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLWZ1bGwgYmcteWVsbG93LTYwMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiBgJHsocm9vbS5jdXJyZW50UGxheWVycyAvIHJvb20ubWF4UGxheWVycykgKiAxMDB9JWAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9BbmltYXRlUHJlc2VuY2U+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgey8qIC0tLSBNT0RBTEVTIC0tLSAqL31cblxuICAgICAgICAgICAgey8qIE1vZGFsIENyZWFyICovfVxuICAgICAgICAgICAge3Nob3dDcmVhdGVNb2RhbCAmJiAoXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaXhlZCBpbnNldC0wIHotNTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctYmxhY2svODAgYmFja2Ryb3AtYmx1ci1zbVwiPlxuICAgICAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbD17eyBzY2FsZTogMC45IH19IGFuaW1hdGU9e3sgc2NhbGU6IDEgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLXppbmMtODAwIHAtNiByb3VuZGVkIGJvcmRlciBib3JkZXItd2hpdGUvMjAgdy1mdWxsIG1heC13LXNtIHNoYWRvdy0yeGxcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LWJvbGQgdGV4dC13aGl0ZSBtYi00IHVwcGVyY2FzZVwiPkNvbmZpZ3VyYXIgT3BlcmFjacOzbjwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlQ3JlYXRlR2FtZX0gY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImJsb2NrIHRleHQteHMgdXBwZXJjYXNlIHRleHQtZ3JheS00MDAgbWItMVwiPk7CuiBKdWdhZG9yZXM8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Y3JlYXRlQ29uZmlnLm1heFBsYXllcnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ZSA9PiBzZXRDcmVhdGVDb25maWcoeyAuLi5jcmVhdGVDb25maWcsIG1heFBsYXllcnM6IE51bWJlcihlLnRhcmdldC52YWx1ZSkgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgYmctYmxhY2svNDAgYm9yZGVyIGJvcmRlci13aGl0ZS8xMCBwLTIgcm91bmRlZCB0ZXh0LXdoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1s1LCA2LCA3LCA4LCA5LCAxMF0ubWFwKG4gPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24ga2V5PXtufSB2YWx1ZT17bn0+e259IEp1Z2Fkb3Jlczwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXhzIHVwcGVyY2FzZSB0ZXh0LWdyYXktNDAwIG1iLTFcIj5Db250cmFzZcOxYSAoT3BjaW9uYWwpPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2NyZWF0ZUNvbmZpZy5wYXNzd29yZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtlID0+IHNldENyZWF0ZUNvbmZpZyh7IC4uLmNyZWF0ZUNvbmZpZywgcGFzc3dvcmQ6IGUudGFyZ2V0LnZhbHVlIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLWJsYWNrLzQwIGJvcmRlciBib3JkZXItd2hpdGUvMTAgcC0yIHJvdW5kZWQgdGV4dC13aGl0ZSBmb250LW1vbm9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJEZWphciB2YWPDrW8gcGFyYSBww7pibGljYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0yIG10LTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17KCkgPT4gc2V0U2hvd0NyZWF0ZU1vZGFsKGZhbHNlKX0gY2xhc3NOYW1lPVwiZmxleC0xIHB5LTIgdGV4dC1ncmF5LTQwMCBob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzXCI+Q2FuY2VsYXI8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwiZmxleC0xIHB5LTIgYmcteWVsbG93LTcwMCBob3ZlcjpiZy15ZWxsb3ctNjAwIHRleHQtd2hpdGUgcm91bmRlZCBmb250LWJvbGQgdXBwZXJjYXNlXCI+Q3JlYXI8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgey8qIE1vZGFsIFBhc3N3b3JkICovfVxuICAgICAgICAgICAge3Bhc3N3b3JkUHJvbXB0Um9vbUlkICYmIChcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpeGVkIGluc2V0LTAgei01MCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1ibGFjay84MCBiYWNrZHJvcC1ibHVyLXNtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsPXt7IHNjYWxlOiAwLjkgfX0gYW5pbWF0ZT17eyBzY2FsZTogMSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctemluYy04MDAgcC02IHJvdW5kZWQgYm9yZGVyIGJvcmRlci1yZWQtOTAwLzUwIHctZnVsbCBtYXgtdy1zbSBzaGFkb3ctMnhsXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1ib2xkIHRleHQtcmVkLTQwMCBtYi0yIHVwcGVyY2FzZSBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIPCflJIgQWNjZXNvIFJlc3RyaW5naWRvXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LWdyYXktNDAwIG1iLTRcIj5Fc3RhIG9wZXJhY2nDs24gZXMgY2xhc2lmaWNhZGEuIEludHJvZHVjZSBsYSBjbGF2ZSBkZSBhY2Nlc28uPC9wPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtqb2luUGFzc3dvcmR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2UgPT4gc2V0Sm9pblBhc3N3b3JkKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249e2UgPT4gZS5rZXkgPT09ICdFbnRlcicgJiYgc3VibWl0Sm9pblBhc3N3b3JkKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLWJsYWNrLzQwIGJvcmRlciBib3JkZXItcmVkLTkwMC8zMCBwLTIgcm91bmRlZCB0ZXh0LXdoaXRlIGZvbnQtbW9ubyBtYi00IGZvY3VzOmJvcmRlci1yZWQtNTAwIG91dGxpbmUtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJDbGF2ZSBkZSBhY2Nlc28uLi5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBzZXRQYXNzd29yZFByb21wdFJvb21JZChudWxsKX0gY2xhc3NOYW1lPVwiZmxleC0xIHB5LTIgdGV4dC1ncmF5LTQwMCBob3Zlcjp0ZXh0LXdoaXRlXCI+Q2FuY2VsYXI8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG9uQ2xpY2s9e3N1Ym1pdEpvaW5QYXNzd29yZH0gY2xhc3NOYW1lPVwiZmxleC0xIHB5LTIgYmctcmVkLTkwMCBob3ZlcjpiZy1yZWQtODAwIHRleHQtd2hpdGUgcm91bmRlZCBmb250LWJvbGQgdXBwZXJjYXNlXCI+QWNjZWRlcjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTIgcmlnaHQtNCB0ZXh0LVsxMHB4XSB0ZXh0LWdyYXktNjAwIGZvbnQtbW9ub1wiPlxuICAgICAgICAgICAgICAgIHtpc0Nvbm5lY3RlZCA/IDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JlZW4tOTAwXCI+4pePIENPTkVYScOTTiBTRUdVUkE8L3NwYW4+IDogPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1yZWQtOTAwXCI+4pePIEJVU0NBTkRPIFNFw5FBTC4uLjwvc3Bhbj59XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9tYWluPlxuICAgICk7XG59XG4iXSwibmFtZXMiOlsidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJ1c2VTb2NrZXQiLCJ1c2VTZXNzaW9uU3RvcmFnZSIsIm1vdGlvbiIsIkFuaW1hdGVQcmVzZW5jZSIsIkltYWdlIiwiR2FtZUJvYXJkIiwiTG9nb3V0QnV0dG9uIiwiU1VSTkFNRVMiLCJIb21lIiwiaXNDb25uZWN0ZWQiLCJnYW1lU3RhdGUiLCJyb29tc0xpc3QiLCJhY3Rpb25zIiwic29ja2V0Iiwic2Vzc2lvbiIsInNhdmVTZXNzaW9uIiwidXBkYXRlU2Vzc2lvbiIsImNsZWFyU2Vzc2lvbiIsInZpZXciLCJzZXRWaWV3IiwicGxheWVyTmFtZSIsInNldFBsYXllck5hbWUiLCJmdWxsUGxheWVyTmFtZSIsInNldEZ1bGxQbGF5ZXJOYW1lIiwic2hvd0NyZWF0ZU1vZGFsIiwic2V0U2hvd0NyZWF0ZU1vZGFsIiwiY3JlYXRlQ29uZmlnIiwic2V0Q3JlYXRlQ29uZmlnIiwibWF4UGxheWVycyIsInBhc3N3b3JkIiwicGFzc3dvcmRQcm9tcHRSb29tSWQiLCJzZXRQYXNzd29yZFByb21wdFJvb21JZCIsImpvaW5QYXNzd29yZCIsInNldEpvaW5QYXNzd29yZCIsImhhc1JlY29ubmVjdGVkIiwic2V0SGFzUmVjb25uZWN0ZWQiLCJjdXJyZW50VmlldyIsInJvb21JZCIsInJlY29ubmVjdFNlc3Npb24iLCJyZWZyZXNoUm9vbXMiLCJ1bmRlZmluZWQiLCJoYW5kbGVFcnJvciIsIm1zZyIsIm9uIiwib2ZmIiwiaGFuZGxlTG9naW4iLCJlIiwicHJldmVudERlZmF1bHQiLCJyYW5kb21TdXJuYW1lIiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwibGVuZ3RoIiwiZnVsbE5hbWUiLCJoYW5kbGVMb2dvdXQiLCJsZWF2ZUdhbWUiLCJoYW5kbGVDcmVhdGVHYW1lIiwiY3JlYXRlR2FtZSIsInJlcXVlc3RKb2luR2FtZSIsInJvb20iLCJpc1ByaXZhdGUiLCJpZCIsImpvaW5HYW1lIiwic3VibWl0Sm9pblBhc3N3b3JkIiwicGhhc2UiLCJpc0hvc3QiLCJob3N0SWQiLCJtYWluIiwiY2xhc3NOYW1lIiwiZGl2Iiwic3JjIiwiYWx0IiwiZmlsbCIsImgyIiwicCIsInJvb21OYW1lIiwicGxheWVycyIsIm1hcCIsInBsYXllciIsInNwYW4iLCJuYW1lIiwiYnV0dG9uIiwib25DbGljayIsInN0YXJ0R2FtZSIsImRpc2FibGVkIiwiY3VycmVudFBsYXllcklkIiwid2lkdGgiLCJoZWlnaHQiLCJoMSIsIm1vZGUiLCJmb3JtIiwiaW5pdGlhbCIsIm9wYWNpdHkiLCJ5IiwiYW5pbWF0ZSIsImV4aXQiLCJvblN1Ym1pdCIsImxhYmVsIiwiaW5wdXQiLCJyZXF1aXJlZCIsInZhbHVlIiwib25DaGFuZ2UiLCJ0YXJnZXQiLCJwbGFjZWhvbGRlciIsInR5cGUiLCJzY2FsZSIsInRpdGxlIiwiaDMiLCJzdWJzdHJpbmciLCJjdXJyZW50UGxheWVycyIsInN0YXR1cyIsInN0eWxlIiwic2VsZWN0IiwiTnVtYmVyIiwibiIsIm9wdGlvbiIsImF1dG9Gb2N1cyIsIm9uS2V5RG93biIsImtleSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./src/app/page.tsx\n");
/***/ }),
/***/ "(ssr)/./src/components/ExitGameButton.tsx":
/*!*******************************************!*\
!*** ./src/components/ExitGameButton.tsx ***!
\*******************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ExitGameButton)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! framer-motion */ \"(ssr)/./node_modules/framer-motion/dist/es/render/dom/motion.mjs\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nfunction ExitGameButton({ onExit, playerName }) {\n const [showConfirm, setShowConfirm] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const handleConfirmExit = ()=>{\n setShowConfirm(false);\n onExit();\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)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.button, {\n onClick: ()=>setShowConfirm(true),\n whileHover: {\n scale: 1.05\n },\n whileTap: {\n scale: 0.95\n },\n className: \"fixed top-4 right-0 z-50 bg-gradient-to-l from-green-600 to-green-700 hover:from-green-500 hover:to-green-600 text-white rounded-l-lg px-2 py-3 shadow-lg border-2 border-green-500 border-r-0 transition-all hover:shadow-green-500/50\",\n title: \"Volver al lobby\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 3,\n stroke: \"currentColor\",\n className: \"w-4 h-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M2.25 12l8.954-8.955c.44-.439 1.152-.439 1.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/ExitGameButton.tsx\",\n lineNumber: 34,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/ExitGameButton.tsx\",\n lineNumber: 26,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/ExitGameButton.tsx\",\n lineNumber: 19,\n columnNumber: 13\n }, this),\n showConfirm && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"fixed inset-0 z-[100] flex items-center justify-center bg-black/80 backdrop-blur-sm\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n scale: 0.9,\n opacity: 0\n },\n animate: {\n scale: 1,\n opacity: 1\n },\n className: \"bg-zinc-900 p-6 rounded-lg border border-red-700/50 w-full max-w-md mx-4 shadow-2xl\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-xl font-bold text-red-400 mb-4 uppercase flex items-center gap-2\",\n children: \"⚠️ Abandonar Partida\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/ExitGameButton.tsx\",\n lineNumber: 50,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-300 mb-2\",\n children: \"\\xbfEst\\xe1s seguro de que quieres abandonar la partida?\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/ExitGameButton.tsx\",\n lineNumber: 53,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-400 mb-6\",\n children: \"La partida se cerrar\\xe1 para todos los jugadores y se perder\\xe1 todo el progreso.\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/ExitGameButton.tsx\",\n lineNumber: 56,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setShowConfirm(false),\n className: \"flex-1 py-3 bg-gray-700 hover:bg-gray-600 text-white rounded font-bold uppercase text-sm transition-colors\",\n children: \"Cancelar\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/ExitGameButton.tsx\",\n lineNumber: 61,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleConfirmExit,\n className: \"flex-1 py-3 bg-red-900 hover:bg-red-800 text-white rounded font-bold uppercase text-sm transition-colors\",\n children: \"Salir\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/ExitGameButton.tsx\",\n lineNumber: 67,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/ExitGameButton.tsx\",\n lineNumber: 60,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/ExitGameButton.tsx\",\n lineNumber: 45,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/ExitGameButton.tsx\",\n lineNumber: 44,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9zcmMvY29tcG9uZW50cy9FeGl0R2FtZUJ1dHRvbi50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUF1QztBQUNOO0FBT2xCLFNBQVNFLGVBQWUsRUFBRUMsTUFBTSxFQUFFQyxVQUFVLEVBQXVCO0lBQzlFLE1BQU0sQ0FBQ0MsYUFBYUMsZUFBZSxHQUFHTCwrQ0FBUUEsQ0FBQztJQUUvQyxNQUFNTSxvQkFBb0I7UUFDdEJELGVBQWU7UUFDZkg7SUFDSjtJQUVBLHFCQUNJOzswQkFDSSw4REFBQ0gsaURBQU1BLENBQUNRLE1BQU07Z0JBQ1ZDLFNBQVMsSUFBTUgsZUFBZTtnQkFDOUJJLFlBQVk7b0JBQUVDLE9BQU87Z0JBQUs7Z0JBQzFCQyxVQUFVO29CQUFFRCxPQUFPO2dCQUFLO2dCQUN4QkUsV0FBVTtnQkFDVkMsT0FBTTswQkFFTiw0RUFBQ0M7b0JBQ0dDLE9BQU07b0JBQ05DLE1BQUs7b0JBQ0xDLFNBQVE7b0JBQ1JDLGFBQWE7b0JBQ2JDLFFBQU87b0JBQ1BQLFdBQVU7OEJBRVYsNEVBQUNRO3dCQUNHQyxlQUFjO3dCQUNkQyxnQkFBZTt3QkFDZkMsR0FBRTs7Ozs7Ozs7Ozs7Ozs7OztZQU1ibkIsNkJBQ0csOERBQUNvQjtnQkFBSVosV0FBVTswQkFDWCw0RUFBQ2IsaURBQU1BLENBQUN5QixHQUFHO29CQUNQQyxTQUFTO3dCQUFFZixPQUFPO3dCQUFLZ0IsU0FBUztvQkFBRTtvQkFDbENDLFNBQVM7d0JBQUVqQixPQUFPO3dCQUFHZ0IsU0FBUztvQkFBRTtvQkFDaENkLFdBQVU7O3NDQUVWLDhEQUFDZ0I7NEJBQUdoQixXQUFVO3NDQUF3RTs7Ozs7O3NDQUd0Riw4REFBQ2lCOzRCQUFFakIsV0FBVTtzQ0FBcUI7Ozs7OztzQ0FHbEMsOERBQUNpQjs0QkFBRWpCLFdBQVU7c0NBQTZCOzs7Ozs7c0NBSTFDLDhEQUFDWTs0QkFBSVosV0FBVTs7OENBQ1gsOERBQUNMO29DQUNHQyxTQUFTLElBQU1ILGVBQWU7b0NBQzlCTyxXQUFVOzhDQUNiOzs7Ozs7OENBR0QsOERBQUNMO29DQUNHQyxTQUFTRjtvQ0FDVE0sV0FBVTs4Q0FDYjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVM3QiIsInNvdXJjZXMiOlsid2VicGFjazovL3Jlc2lzdGVuY2lhLWNsaWVudC8uL3NyYy9jb21wb25lbnRzL0V4aXRHYW1lQnV0dG9uLnRzeD9mYWZkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1vdGlvbiB9IGZyb20gJ2ZyYW1lci1tb3Rpb24nO1xuaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmludGVyZmFjZSBFeGl0R2FtZUJ1dHRvblByb3BzIHtcbiAgICBvbkV4aXQ6ICgpID0+IHZvaWQ7XG4gICAgcGxheWVyTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBFeGl0R2FtZUJ1dHRvbih7IG9uRXhpdCwgcGxheWVyTmFtZSB9OiBFeGl0R2FtZUJ1dHRvblByb3BzKSB7XG4gICAgY29uc3QgW3Nob3dDb25maXJtLCBzZXRTaG93Q29uZmlybV0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgICBjb25zdCBoYW5kbGVDb25maXJtRXhpdCA9ICgpID0+IHtcbiAgICAgICAgc2V0U2hvd0NvbmZpcm0oZmFsc2UpO1xuICAgICAgICBvbkV4aXQoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICAgIDxtb3Rpb24uYnV0dG9uXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2hvd0NvbmZpcm0odHJ1ZSl9XG4gICAgICAgICAgICAgICAgd2hpbGVIb3Zlcj17eyBzY2FsZTogMS4wNSB9fVxuICAgICAgICAgICAgICAgIHdoaWxlVGFwPXt7IHNjYWxlOiAwLjk1IH19XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZml4ZWQgdG9wLTQgcmlnaHQtMCB6LTUwIGJnLWdyYWRpZW50LXRvLWwgZnJvbS1ncmVlbi02MDAgdG8tZ3JlZW4tNzAwIGhvdmVyOmZyb20tZ3JlZW4tNTAwIGhvdmVyOnRvLWdyZWVuLTYwMCB0ZXh0LXdoaXRlIHJvdW5kZWQtbC1sZyBweC0yIHB5LTMgc2hhZG93LWxnIGJvcmRlci0yIGJvcmRlci1ncmVlbi01MDAgYm9yZGVyLXItMCB0cmFuc2l0aW9uLWFsbCBob3ZlcjpzaGFkb3ctZ3JlZW4tNTAwLzUwXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIlZvbHZlciBhbCBsb2JieVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezN9XG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctNCBoLTRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi4yNSAxMmw4Ljk1NC04Ljk1NWMuNDQtLjQzOSAxLjE1Mi0uNDM5IDEuNTkxIDBMMjEuNzUgMTJNNC41IDkuNzV2MTAuMTI1YzAgLjYyMS41MDQgMS4xMjUgMS4xMjUgMS4xMjVIOS43NXYtNC44NzVjMC0uNjIxLjUwNC0xLjEyNSAxLjEyNS0xLjEyNWgyLjI1Yy42MjEgMCAxLjEyNS41MDQgMS4xMjUgMS4xMjVWMjFoNC4xMjVjLjYyMSAwIDEuMTI1LS41MDQgMS4xMjUtMS4xMjVWOS43NU04LjI1IDIxaDguMjVcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9tb3Rpb24uYnV0dG9uPlxuXG4gICAgICAgICAgICB7LyogTW9kYWwgZGUgY29uZmlybWFjacOzbiAqL31cbiAgICAgICAgICAgIHtzaG93Q29uZmlybSAmJiAoXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaXhlZCBpbnNldC0wIHotWzEwMF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctYmxhY2svODAgYmFja2Ryb3AtYmx1ci1zbVwiPlxuICAgICAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbD17eyBzY2FsZTogMC45LCBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlPXt7IHNjYWxlOiAxLCBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy16aW5jLTkwMCBwLTYgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXJlZC03MDAvNTAgdy1mdWxsIG1heC13LW1kIG14LTQgc2hhZG93LTJ4bFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LXhsIGZvbnQtYm9sZCB0ZXh0LXJlZC00MDAgbWItNCB1cHBlcmNhc2UgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICDimqDvuI8gQWJhbmRvbmFyIFBhcnRpZGFcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktMzAwIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICDCv0VzdMOhcyBzZWd1cm8gZGUgcXVlIHF1aWVyZXMgYWJhbmRvbmFyIGxhIHBhcnRpZGE/XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS00MDAgbWItNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhIHBhcnRpZGEgc2UgY2VycmFyw6EgcGFyYSB0b2RvcyBsb3MganVnYWRvcmVzIHkgc2UgcGVyZGVyw6EgdG9kbyBlbCBwcm9ncmVzby5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93Q29uZmlybShmYWxzZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgtMSBweS0zIGJnLWdyYXktNzAwIGhvdmVyOmJnLWdyYXktNjAwIHRleHQtd2hpdGUgcm91bmRlZCBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtc20gdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNvbmZpcm1FeGl0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4LTEgcHktMyBiZy1yZWQtOTAwIGhvdmVyOmJnLXJlZC04MDAgdGV4dC13aGl0ZSByb3VuZGVkIGZvbnQtYm9sZCB1cHBlcmNhc2UgdGV4dC1zbSB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYWxpclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICk7XG59XG4iXSwibmFtZXMiOlsibW90aW9uIiwidXNlU3RhdGUiLCJFeGl0R2FtZUJ1dHRvbiIsIm9uRXhpdCIsInBsYXllck5hbWUiLCJzaG93Q29uZmlybSIsInNldFNob3dDb25maXJtIiwiaGFuZGxlQ29uZmlybUV4aXQiLCJidXR0b24iLCJvbkNsaWNrIiwid2hpbGVIb3ZlciIsInNjYWxlIiwid2hpbGVUYXAiLCJjbGFzc05hbWUiLCJ0aXRsZSIsInN2ZyIsInhtbG5zIiwiZmlsbCIsInZpZXdCb3giLCJzdHJva2VXaWR0aCIsInN0cm9rZSIsInBhdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJkIiwiZGl2IiwiaW5pdGlhbCIsIm9wYWNpdHkiLCJhbmltYXRlIiwiaDMiLCJwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./src/components/ExitGameButton.tsx\n");
/***/ }),
/***/ "(ssr)/./src/components/GameBoard.tsx":
/*!**************************************!*\
!*** ./src/components/GameBoard.tsx ***!
\**************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ GameBoard)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! framer-motion */ \"(ssr)/./node_modules/framer-motion/dist/es/render/dom/motion.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! framer-motion */ \"(ssr)/./node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/image */ \"(ssr)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _shared_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../shared/types */ \"(ssr)/../shared/types.ts\");\n/* harmony import */ var _MissionReveal__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./MissionReveal */ \"(ssr)/./src/components/MissionReveal.tsx\");\n/* harmony import */ var _MissionResult__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./MissionResult */ \"(ssr)/./src/components/MissionResult.tsx\");\n/* harmony import */ var _VictoryScreen__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./VictoryScreen */ \"(ssr)/./src/components/VictoryScreen.tsx\");\n/* harmony import */ var _ExitGameButton__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ExitGameButton */ \"(ssr)/./src/components/ExitGameButton.tsx\");\n\n\n\n\n\n\n\n\n\nfunction GameBoard({ gameState, currentPlayerId, actions, fullPlayerName }) {\n const [selectedTeam, setSelectedTeam] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n // Hooks para FASE REVEAL ROLE\n const [revealCard, setRevealCard] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n // Orden aleatorio de cartas de misión (se genera una vez)\n const [cardOrder] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(()=>Math.random() > 0.5);\n // Track del voto de misión del jugador\n const [missionVote, setMissionVote] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [expandedMission, setExpandedMission] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n // Estado para controlar el colapso del panel de jugadores\n const [isPlayersCollapsed, setIsPlayersCollapsed] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n // Estado para controlar el colapso del historial de misiones\n const [isHistoryCollapsed, setIsHistoryCollapsed] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n // Timer para avanzar automáticamente en REVEAL_ROLE\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (gameState.phase === \"reveal_role\") {\n const timer = setTimeout(()=>{\n actions.finishReveal();\n }, 10000);\n return ()=>clearTimeout(timer);\n }\n }, [\n gameState.phase,\n actions\n ]);\n // Reset missionVote cuando cambia la fase\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (gameState.phase !== _shared_types__WEBPACK_IMPORTED_MODULE_3__.GamePhase.MISSION) {\n setMissionVote(null);\n }\n }, [\n gameState.phase\n ]);\n // Reset selectedTeam cuando no estamos en TEAM_BUILDING o cambia el líder\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (gameState.phase !== _shared_types__WEBPACK_IMPORTED_MODULE_3__.GamePhase.TEAM_BUILDING) {\n setSelectedTeam([]);\n }\n }, [\n gameState.phase,\n gameState.currentLeaderId\n ]);\n // Estado para controlar cuándo mostrar el tablero\n const [showBoard, setShowBoard] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n // Mostrar tablero durante MISSION_RESULT\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (gameState.phase === _shared_types__WEBPACK_IMPORTED_MODULE_3__.GamePhase.MISSION_RESULT) {\n setShowBoard(true);\n } else {\n setShowBoard(false);\n }\n }, [\n gameState.phase\n ]);\n const currentPlayer = gameState.players.find((p)=>p.id === currentPlayerId);\n const isLeader = gameState.currentLeaderId === currentPlayerId; // FIX: Usar currentLeaderId del estado\n const config = _shared_types__WEBPACK_IMPORTED_MODULE_3__.GAME_CONFIG[gameState.players.length];\n const currentQuestSize = config?.quests[gameState.currentRound - 1];\n // Manejar selección de equipo\n const toggleTeamSelection = (playerId)=>{\n if (selectedTeam.includes(playerId)) {\n setSelectedTeam(selectedTeam.filter((id)=>id !== playerId));\n } else {\n if (selectedTeam.length < currentQuestSize) {\n setSelectedTeam([\n ...selectedTeam,\n playerId\n ]);\n }\n }\n };\n const handleMissionVote = (vote)=>{\n setMissionVote(vote);\n actions.voteMission(vote);\n };\n // Coordenadas porcentuales de los hexágonos de misión en el mapa\n const missionCoords = [\n {\n left: \"18%\",\n top: \"60%\"\n },\n {\n left: \"25%\",\n top: \"18%\"\n },\n {\n left: \"50%\",\n top: \"75%\"\n },\n {\n left: \"50%\",\n top: \"30%\"\n },\n {\n left: \"80%\",\n top: \"45%\"\n }\n ];\n // Nombres de las misiones\n const missionNames = [\n \"Sabotaje en el Tren\",\n \"Rescate del Prisionero\",\n \"Destrucci\\xf3n del Puente\",\n \"Robo de Documentos\",\n \"Asalto al Cuartel General\"\n ];\n // --- UI/Efectos para FASES TEMPRANAS ---\n const isHost = gameState.hostId === currentPlayerId;\n // FASE INTRO\n if (gameState.phase === \"intro\") {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-full h-screen flex flex-col items-center justify-center bg-black overflow-hidden text-white\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 z-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: \"/assets/images/ui/bg_intro.png\",\n alt: \"Battlefield\",\n fill: true,\n className: \"object-cover\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 122,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-black/40\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 123,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 121,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"z-10 text-[2.55rem] font-bold uppercase tracking-[0.3em] mb-8 text-yellow-500 drop-shadow-lg text-center\",\n children: \"Traici\\xf3n en Par\\xeds\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 126,\n columnNumber: 17\n }, this),\n isHost && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"audio\", {\n src: \"/assets/audio/Intro.ogg\",\n autoPlay: true,\n onEnded: ()=>actions.finishIntro()\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 132,\n columnNumber: 21\n }, this),\n isHost && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>actions.finishIntro(),\n className: \"z-10 bg-white/20 hover:bg-white/40 border border-white px-6 py-2 rounded text-sm uppercase tracking-widest backdrop-blur-sm transition-all\",\n children: \"Omitir Introducci\\xf3n\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 140,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 120,\n columnNumber: 13\n }, this);\n }\n // FASE REVEAL ROLE NO HOOKS HERE\n if (gameState.phase === \"reveal_role\") {\n // Determinar imagen basada en el rol\n // Mapeo actualizado: \n // Marlene -> good_merlin.png\n // Capitán Philippe -> good_percival.png\n // Partisano -> good_soldier_X.png (random)\n // Francotirador -> evil_assassin.png\n // Agente Doble -> evil_morgana.png\n // Comandante Schmidt -> evil_mordred.png\n // Infiltrado -> evil_oberon.png\n // Colaboracionista -> evil_minion_X.png\n let roleImage = \"/assets/images/characters/good_soldier_1.png\"; // Default\n const role = currentPlayer?.role;\n if (role === \"marlene\") roleImage = \"/assets/images/characters/good_merlin.png\";\n else if (role === \"francotirador\") roleImage = \"/assets/images/characters/evil_assassin.png\";\n else if (role === \"capitan_philippe\") roleImage = \"/assets/images/characters/good_percival.png\";\n else if (role === \"agente_doble\") roleImage = \"/assets/images/characters/evil_morgana.png\";\n else if (role === \"comandante_schmidt\") roleImage = \"/assets/images/characters/evil_mordred.png\";\n else if (role === \"infiltrado\") roleImage = \"/assets/images/characters/evil_oberon.png\";\n else if (role === \"partisano\") {\n // Random soldier 1-5\n const idx = currentPlayerId.charCodeAt(0) % 5 + 1;\n roleImage = `/assets/images/characters/good_soldier_${idx}.png`;\n } else if (role === \"colaboracionista\") {\n // Random minion 1-3\n const idx = currentPlayerId.charCodeAt(0) % 3 + 1;\n roleImage = `/assets/images/characters/evil_minion_${idx}.png`;\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-full h-screen flex flex-col items-center justify-center bg-black overflow-hidden text-white font-mono\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 z-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: \"/assets/images/ui/bg_roll_call.png\",\n alt: \"Resistance HQ\",\n fill: true,\n className: \"object-cover\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 189,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-black/70\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 190,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 188,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"z-10 flex flex-col items-center gap-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-2xl uppercase tracking-[0.2em] text-gray-300\",\n children: \"Tu Identidad Secreta\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 194,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-400 mb-4 animate-pulse\",\n children: \"Desliza hacia arriba para revelar\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 198,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-64 h-96 perspective-1000\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 w-full h-full rounded-xl overflow-hidden shadow-2xl border-4 border-yellow-600 bg-gray-900 flex items-center justify-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: roleImage,\n alt: \"Role\",\n fill: true,\n className: \"object-cover\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 205,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 w-full bg-black/80 text-center py-2 font-bold text-yellow-500 uppercase\",\n children: role?.replace(\"_\", \" \")\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 211,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 204,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.div, {\n drag: \"y\",\n dragConstraints: {\n top: -300,\n bottom: 0\n },\n dragElastic: 0.5,\n dragSnapToOrigin: true,\n whileHover: {\n scale: 1.02\n },\n whileTap: {\n scale: 0.98,\n cursor: \"grabbing\"\n },\n className: \"absolute inset-0 w-full h-full rounded-xl overflow-hidden shadow-2xl z-20 cursor-grab active:cursor-grabbing hover:ring-2 hover:ring-white/50 transition-all\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: \"/assets/images/characters/card_back.png\",\n alt: \"Card Back\",\n fill: true,\n className: \"object-cover pointer-events-none\" // Importante: pointer-events-none en la imagen para que no capture el drag\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 226,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 217,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 202,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 193,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 186,\n columnNumber: 13\n }, this);\n }\n // FASE ROLL CALL\n if (gameState.phase === \"roll_call\") {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-full h-screen flex flex-col bg-black overflow-hidden text-white font-mono\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 z-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: \"/assets/images/ui/bg_roll_call.png\",\n alt: \"Resistance HQ\",\n fill: true,\n className: \"object-cover\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 248,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-black/70\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 249,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 247,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative z-10 w-full h-[20vh] flex items-center justify-center px-4 border-b border-gray-600/50 bg-black/20 backdrop-blur-sm\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-2xl md:text-3xl lg:text-4xl text-center uppercase tracking-[0.2em] text-gray-300 drop-shadow-lg\",\n children: \"Pasando Lista...\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 254,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 253,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative z-10 w-full flex-1 overflow-y-auto p-4 flex flex-col items-center\",\n children: [\n isHost && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"audio\", {\n src: \"/assets/audio/Rondas.mp3\",\n autoPlay: true,\n onEnded: ()=>actions.finishRollCall()\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 262,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full max-w-6xl grid grid-cols-3 md:grid-cols-4 lg:grid-cols-5 gap-3 md:gap-8 justify-items-center content-center py-4\",\n children: gameState.players.map((p, i)=>{\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.div, {\n initial: {\n opacity: 0,\n scale: 0.8\n },\n animate: {\n opacity: 1,\n scale: 1\n },\n transition: {\n delay: i * 0.3\n },\n className: \"flex flex-col items-center gap-1 md:gap-3 w-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-20 h-20 md:w-32 md:h-32 rounded-full border-2 md:border-4 border-gray-400 overflow-hidden relative shadow-2xl bg-black\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: `/assets/images/characters/${p.avatar}`,\n alt: \"Avatar\",\n fill: true,\n className: \"object-cover grayscale contrast-125\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 281,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 280,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-black/80 px-2 py-0.5 md:px-4 md:py-1 rounded border border-white/20 text-xs md:text-xl font-bold text-yellow-500 uppercase text-center w-full truncate max-w-[120px] md:max-w-none\",\n children: p.name\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 289,\n columnNumber: 37\n }, this)\n ]\n }, p.id, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 272,\n columnNumber: 33\n }, this);\n })\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 269,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 260,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 244,\n columnNumber: 13\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-full h-screen flex flex-col overflow-hidden\",\n children: [\n gameState.phase !== _shared_types__WEBPACK_IMPORTED_MODULE_3__.GamePhase.ALLIED_WIN && gameState.phase !== _shared_types__WEBPACK_IMPORTED_MODULE_3__.GamePhase.NAZIS_WIN && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ExitGameButton__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n onExit: ()=>actions.leaveGame(),\n playerName: fullPlayerName\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 305,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 z-0 opacity-40\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: gameState.phase === _shared_types__WEBPACK_IMPORTED_MODULE_3__.GamePhase.ALLIED_WIN ? \"/assets/images/tokens/mission_success.png\" : gameState.phase === _shared_types__WEBPACK_IMPORTED_MODULE_3__.GamePhase.NAZIS_WIN ? \"/assets/images/tokens/mission_fail.png\" : \"/assets/images/ui/bg_game.png\",\n alt: \"Game Background\",\n fill: true,\n className: \"object-cover\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 313,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-black/60\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 325,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 312,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative z-10 w-full flex flex-col items-center pb-32\",\n children: [\n gameState.phase !== _shared_types__WEBPACK_IMPORTED_MODULE_3__.GamePhase.ALLIED_WIN && gameState.phase !== _shared_types__WEBPACK_IMPORTED_MODULE_3__.GamePhase.NAZIS_WIN && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-full max-w-5xl aspect-video mt-4 shadow-2xl border-4 border-gray-800 rounded-lg overflow-hidden bg-[#2a2a2a]\",\n children: gameState.phase === _shared_types__WEBPACK_IMPORTED_MODULE_3__.GamePhase.ASSASSIN_PHASE ? /* IMAGEN LASTSHOT PARA ASSASSIN_PHASE */ /*#__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)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: \"/assets/images/tokens/lastshot.jpg\",\n alt: \"Last Shot\",\n fill: true,\n className: \"object-cover\",\n priority: true\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 338,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-black/40\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 346,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-1/3 left-0 right-0 flex flex-col items-center z-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-5xl font-bold text-red-600 mb-2 drop-shadow-[0_4px_8px_rgba(0,0,0,0.9)]\",\n children: \"\\xa1\\xdaLTIMA OPORTUNIDAD!\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 350,\n columnNumber: 37\n }, this),\n currentPlayer?.role === \"francotirador\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xl text-white drop-shadow-[0_2px_4px_rgba(0,0,0,0.9)] font-bold\",\n children: [\n \"Francotirador, elige a qui\\xe9n crees que es \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-yellow-400\",\n children: \"MARLENE\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 355,\n columnNumber: 87\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 354,\n columnNumber: 41\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xl text-gray-300 drop-shadow-[0_2px_4px_rgba(0,0,0,0.9)] font-bold\",\n children: \"El Francotirador est\\xe1 decidiendo...\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 358,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 349,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true) : showBoard ? /*#__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)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: \"/assets/images/ui/board_map.jpg\",\n alt: \"Tactical Map\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 367,\n columnNumber: 33\n }, this),\n missionCoords.map((coord, idx)=>{\n const result = gameState.questResults[idx];\n const isCurrent = gameState.currentRound === idx + 1;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute w-[10%] aspect-square flex items-center justify-center\",\n style: {\n left: coord.left,\n top: coord.top,\n transform: \"translate(-50%, -50%)\"\n },\n children: [\n isCurrent && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.div, {\n layoutId: \"round-marker\",\n className: \"absolute inset-0 z-10\",\n initial: {\n scale: 1.5,\n opacity: 0\n },\n animate: {\n scale: 1,\n opacity: 1\n },\n transition: {\n type: \"spring\",\n stiffness: 300,\n damping: 20\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: \"/assets/images/tokens/marker_round.png\",\n alt: \"Current Round\",\n fill: true,\n className: \"object-contain drop-shadow-lg\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 398,\n columnNumber: 53\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 391,\n columnNumber: 49\n }, this),\n result === true && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.div, {\n initial: {\n scale: 0\n },\n animate: {\n scale: 1\n },\n className: \"absolute inset-0 z-20 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[80%] h-[80%] relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: \"/assets/images/tokens/marker_score_blue.png\",\n alt: \"Success\",\n fill: true,\n className: \"object-contain drop-shadow-lg\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 414,\n columnNumber: 57\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 413,\n columnNumber: 53\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 409,\n columnNumber: 49\n }, this),\n result === false && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.div, {\n initial: {\n scale: 0\n },\n animate: {\n scale: 1\n },\n className: \"absolute inset-0 z-20 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[80%] h-[80%] relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: \"/assets/images/tokens/marker_score_red.png\",\n alt: \"Fail\",\n fill: true,\n className: \"object-contain drop-shadow-lg\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 424,\n columnNumber: 57\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 423,\n columnNumber: 53\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 419,\n columnNumber: 49\n }, this)\n ]\n }, idx, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 380,\n columnNumber: 41\n }, this);\n })\n ]\n }, void 0, true) : /* CARTA DE MISIÓN CON TÍTULO */ /*#__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)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: `/assets/images/missions/mission${gameState.currentRound}.png`,\n alt: `Mission ${gameState.currentRound}`,\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 435,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-4 left-0 right-0 flex flex-col items-center z-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-4xl font-bold text-white drop-shadow-[0_4px_8px_rgba(0,0,0,0.8)] mb-2 uppercase tracking-wider\",\n children: [\n \"Misi\\xf3n \",\n gameState.currentRound\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 443,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-2xl font-semibold text-yellow-400 drop-shadow-[0_4px_8px_rgba(0,0,0,0.8)] uppercase tracking-wide\",\n children: missionNames[gameState.currentRound - 1]\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 446,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 442,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 334,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 w-full max-w-6xl relative mt-4 px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_9__.AnimatePresence, {\n mode: \"wait\",\n children: [\n gameState.phase === \"vote_leader\" && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.div, {\n initial: {\n opacity: 0,\n scale: 0.9\n },\n animate: {\n opacity: 1,\n scale: 1\n },\n className: \"flex flex-col items-center gap-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-black/80 p-4 rounded text-white text-center border border-yellow-500/50 relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-xl font-mono mb-2 text-yellow-500 uppercase tracking-widest\",\n children: \"Confirmar L\\xedder\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 468,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mb-2\",\n children: [\n \"\\xbfAceptas a \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-yellow-400\",\n children: gameState.players.find((p)=>p.id === gameState.currentLeaderId)?.name\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 472,\n columnNumber: 52\n }, this),\n \" como L\\xedder?\"\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 471,\n columnNumber: 37\n }, this),\n !gameState.leaderVotes?.[currentPlayerId] && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(VotingTimer, {}, gameState.currentLeaderId, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 477,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 467,\n columnNumber: 33\n }, this),\n gameState.leaderVotes?.[currentPlayerId] === undefined ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>actions.voteLeader(true),\n className: \"group\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-32 h-32 bg-white rounded-lg shadow-xl flex items-center justify-center border-4 border-transparent group-hover:border-green-500 transition-all transform group-hover:-translate-y-4 relative overflow-hidden\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: \"/assets/images/tokens/accept_leader.png\",\n alt: \"Accept Leader\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 485,\n columnNumber: 49\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 484,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"block text-center text-white mt-2 font-bold bg-green-600 px-2 rounded uppercase tracking-widest\",\n children: \"ACEPTAR\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 487,\n columnNumber: 45\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 483,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>actions.voteLeader(false),\n className: \"group\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-32 h-32 bg-white rounded-lg shadow-xl flex items-center justify-center border-4 border-transparent group-hover:border-red-500 transition-all transform group-hover:-translate-y-4 relative overflow-hidden\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: \"/assets/images/tokens/deny_leader.png\",\n alt: \"Deny Leader\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 491,\n columnNumber: 49\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 490,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"block text-center text-white mt-2 font-bold bg-red-600 px-2 rounded uppercase tracking-widest\",\n children: \"RECHAZAR\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 493,\n columnNumber: 45\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 489,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 482,\n columnNumber: 37\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-white text-xl font-mono animate-pulse bg-black/50 px-6 py-3 rounded-full border border-white/20\",\n children: \"VOTO REGISTRADO. ESPERANDO AL RESTO...\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 497,\n columnNumber: 37\n }, this)\n ]\n }, \"vote-leader\", true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 461,\n columnNumber: 29\n }, this),\n gameState.phase === _shared_types__WEBPACK_IMPORTED_MODULE_3__.GamePhase.TEAM_BUILDING && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.div, {\n initial: {\n opacity: 0,\n y: 20\n },\n animate: {\n opacity: 1,\n y: 0\n },\n exit: {\n opacity: 0,\n y: -20\n },\n className: \"flex flex-col items-center gap-6 w-full max-w-4xl\",\n children: [\n !isLeader && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-yellow-600/90 text-black p-2 rounded-lg shadow-xl border-4 border-yellow-400 w-full text-center mb-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-center gap-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs uppercase tracking-wider font-bold\",\n children: \"L\\xedder Actual\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 519,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xl font-bold\",\n children: gameState.players.find((p)=>p.id === gameState.currentLeaderId)?.name || \"Desconocido\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 520,\n columnNumber: 49\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 518,\n columnNumber: 45\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 517,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 516,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-paper-bg text-black p-4 md:p-6 rounded shadow-2xl w-full text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xl md:text-2xl font-bold font-mono mb-2 uppercase text-resistance-blue\",\n children: isLeader ? \"\\uD83C\\uDFAF TU TURNO: ELIGE TU EQUIPO\" : \"⏳ ESPERANDO AL L\\xcdDER...\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 531,\n columnNumber: 37\n }, this),\n isLeader && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mb-4 font-serif italic text-gray-700\",\n children: [\n \"Se necesitan \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-bold text-red-700 text-xl\",\n children: [\n currentQuestSize,\n \" agentes\"\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 536,\n columnNumber: 58\n }, this),\n \" para la misi\\xf3n #\",\n gameState.currentRound,\n \".\"\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 535,\n columnNumber: 41\n }, this),\n isLeader && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-4 text-lg font-bold\",\n children: [\n \"Seleccionados: \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: selectedTeam.length === currentQuestSize ? \"text-green-600\" : \"text-orange-600\",\n children: [\n selectedTeam.length,\n \" / \",\n currentQuestSize\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 543,\n columnNumber: 60\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 542,\n columnNumber: 41\n }, this),\n isLeader && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>actions.proposeTeam(selectedTeam),\n disabled: selectedTeam.length !== currentQuestSize,\n className: \"w-full bg-resistance-blue text-white font-bold py-3 px-4 rounded hover:bg-blue-900 transition-colors disabled:opacity-50 disabled:cursor-not-allowed uppercase tracking-widest shadow-lg\",\n children: selectedTeam.length === currentQuestSize ? \"✓ CONFIRMAR EQUIPO\" : `Selecciona ${currentQuestSize - selectedTeam.length} más`\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 550,\n columnNumber: 41\n }, this),\n !isLeader && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-gray-600 animate-pulse\",\n children: \"El l\\xedder est\\xe1 seleccionando el equipo de misi\\xf3n...\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 560,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 530,\n columnNumber: 33\n }, this)\n ]\n }, \"team-building\", true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 506,\n columnNumber: 29\n }, this),\n gameState.phase === _shared_types__WEBPACK_IMPORTED_MODULE_3__.GamePhase.VOTING_TEAM && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.div, {\n initial: {\n scale: 0.8,\n opacity: 0\n },\n animate: {\n scale: 1,\n opacity: 1\n },\n className: \"flex flex-col items-center gap-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-black/80 p-4 rounded text-white text-center border border-white/20\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-xl font-mono mb-2 text-yellow-500\",\n children: \"PROPUESTA DE MISI\\xd3N\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 577,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-2 justify-center\",\n children: gameState.proposedTeam.map((id)=>{\n const p = gameState.players.find((pl)=>pl.id === id);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white/10 px-3 py-1 rounded text-sm\",\n children: p?.name\n }, id, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 582,\n columnNumber: 49\n }, this);\n })\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 578,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 576,\n columnNumber: 33\n }, this),\n gameState.teamVotes[currentPlayerId] === undefined ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>actions.voteTeam(true),\n className: \"group\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-32 h-48 bg-white rounded-lg shadow-xl flex flex-col items-center justify-center border-2 border-blue-500 group-hover:border-blue-400 group-hover:shadow-blue-500/50 transition-all transform group-hover:-translate-y-4 relative overflow-hidden p-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-blue-600 font-bold text-sm uppercase tracking-wider mb-1 z-10\",\n children: \"\\xc9xito\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 594,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-full h-full flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: \"/assets/images/tokens/vote_approve.png\",\n alt: \"Approve\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 596,\n columnNumber: 53\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 595,\n columnNumber: 49\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 593,\n columnNumber: 45\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 592,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>actions.voteTeam(false),\n className: \"group\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-32 h-48 bg-white rounded-lg shadow-xl flex flex-col items-center justify-center border-2 border-red-500 group-hover:border-red-400 group-hover:shadow-red-500/50 transition-all transform group-hover:-translate-y-4 relative overflow-hidden p-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-600 font-bold text-sm uppercase tracking-wider mb-1 z-10\",\n children: \"Fracaso\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 602,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-full h-full flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: \"/assets/images/tokens/vote_reject.png\",\n alt: \"Reject\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 604,\n columnNumber: 53\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 603,\n columnNumber: 49\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 601,\n columnNumber: 45\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 600,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 591,\n columnNumber: 37\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-white text-xl font-mono animate-pulse\",\n children: \"VOTO REGISTRADO. ESPERANDO AL RESTO... ```\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 610,\n columnNumber: 37\n }, this)\n ]\n }, \"voting\", true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 570,\n columnNumber: 29\n }, this),\n gameState.phase === _shared_types__WEBPACK_IMPORTED_MODULE_3__.GamePhase.MISSION && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.div, {\n className: \"fixed inset-0 flex items-start justify-center bg-black/90 z-50 pt-20\",\n initial: {\n opacity: 0\n },\n animate: {\n opacity: 1\n },\n children: gameState.proposedTeam.includes(currentPlayerId) ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center gap-4 w-full max-w-6xl px-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-4xl md:text-5xl font-bold text-white mb-2 drop-shadow-2xl text-center uppercase tracking-wider animate-pulse\",\n children: \"\\uD83C\\uDFAF REALIZA LA MISI\\xd3N\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 628,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-white text-xl mb-2 text-center\",\n children: \"Elige si quieres un \\xe9xito o un fracaso\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 631,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-12 flex-wrap justify-center\",\n children: cardOrder ? /*#__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)(\"button\", {\n onClick: ()=>handleMissionVote(true),\n className: `group transition-opacity ${missionVote === true ? \"opacity-100\" : \"opacity-50\"}`,\n disabled: missionVote !== null,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.div, {\n className: \"w-32 h-48 bg-gradient-to-br from-blue-600 to-blue-900 rounded-2xl shadow-2xl border-4 border-blue-400 flex flex-col items-center justify-center p-4 transform transition-all hover:scale-110 hover:rotate-3 hover:shadow-blue-500/50\",\n whileHover: {\n scale: 1.1,\n rotate: 3\n },\n whileTap: {\n scale: 0.95\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: \"/assets/images/tokens/vote_approve.png\",\n alt: \"Success\",\n width: 80,\n height: 80,\n className: \"drop-shadow-2xl\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 650,\n columnNumber: 61\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"mt-2 text-white font-bold text-lg tracking-widest uppercase\",\n children: \"\\xc9XITO\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 651,\n columnNumber: 61\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 645,\n columnNumber: 57\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 640,\n columnNumber: 53\n }, this),\n currentPlayer?.faction === _shared_types__WEBPACK_IMPORTED_MODULE_3__.Faction.ALEMANES && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>handleMissionVote(false),\n className: `group transition-opacity ${missionVote === false ? \"opacity-100\" : \"opacity-50\"}`,\n disabled: missionVote !== null,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.div, {\n className: \"w-32 h-48 bg-gradient-to-br from-red-600 to-red-900 rounded-2xl shadow-2xl border-4 border-red-400 flex flex-col items-center justify-center p-4 transform transition-all hover:scale-110 hover:-rotate-3 hover:shadow-red-500/50\",\n whileHover: {\n scale: 1.1,\n rotate: -3\n },\n whileTap: {\n scale: 0.95\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: \"/assets/images/tokens/vote_reject.png\",\n alt: \"Fail\",\n width: 80,\n height: 80,\n className: \"drop-shadow-2xl\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 667,\n columnNumber: 65\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"mt-2 text-white font-bold text-lg tracking-widest uppercase\",\n children: \"SABOTAJE\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 668,\n columnNumber: 65\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 662,\n columnNumber: 61\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 657,\n columnNumber: 57\n }, this)\n ]\n }, void 0, true) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n currentPlayer?.faction === _shared_types__WEBPACK_IMPORTED_MODULE_3__.Faction.ALEMANES && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>handleMissionVote(false),\n className: `group transition-opacity ${missionVote === false ? \"opacity-100\" : \"opacity-50\"}`,\n disabled: missionVote !== null,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.div, {\n className: \"w-32 h-48 bg-gradient-to-br from-red-600 to-red-900 rounded-2xl shadow-2xl border-4 border-red-400 flex flex-col items-center justify-center p-4 transform transition-all hover:scale-110 hover:-rotate-3 hover:shadow-red-500/50\",\n whileHover: {\n scale: 1.1,\n rotate: -3\n },\n whileTap: {\n scale: 0.95\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: \"/assets/images/tokens/vote_reject.png\",\n alt: \"Fail\",\n width: 80,\n height: 80,\n className: \"drop-shadow-2xl\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 687,\n columnNumber: 65\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"mt-2 text-white font-bold text-lg tracking-widest uppercase\",\n children: \"SABOTAJE\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 688,\n columnNumber: 65\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 682,\n columnNumber: 61\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 677,\n columnNumber: 57\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>handleMissionVote(true),\n className: `group transition-opacity ${missionVote === true ? \"opacity-100\" : \"opacity-50\"}`,\n disabled: missionVote !== null,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.div, {\n className: \"w-32 h-48 bg-gradient-to-br from-blue-600 to-blue-900 rounded-2xl shadow-2xl border-4 border-blue-400 flex flex-col items-center justify-center p-4 transform transition-all hover:scale-110 hover:rotate-3 hover:shadow-blue-500/50\",\n whileHover: {\n scale: 1.1,\n rotate: 3\n },\n whileTap: {\n scale: 0.95\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: \"/assets/images/tokens/vote_approve.png\",\n alt: \"Success\",\n width: 80,\n height: 80,\n className: \"drop-shadow-2xl\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 704,\n columnNumber: 61\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"mt-2 text-white font-bold text-lg tracking-widest uppercase\",\n children: \"\\xc9XITO\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 705,\n columnNumber: 61\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 699,\n columnNumber: 57\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 694,\n columnNumber: 53\n }, this)\n ]\n }, void 0, true)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 636,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 627,\n columnNumber: 37\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-white text-3xl font-mono bg-black/70 p-8 rounded-xl border-2 border-white/20 text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"animate-pulse mb-4 text-5xl\",\n children: \"⏳\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 714,\n columnNumber: 41\n }, this),\n \"La misi\\xf3n est\\xe1 en curso...\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 715,\n columnNumber: 67\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-lg text-gray-400 mt-2 block\",\n children: \"Esperando a que el equipo complete su votaci\\xf3n.\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 716,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 713,\n columnNumber: 37\n }, this)\n }, \"mission\", false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 620,\n columnNumber: 29\n }, this),\n gameState.phase === \"mission_reveal\" && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_MissionReveal__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n votes: gameState.revealedVotes || [],\n onFinished: ()=>actions.finishMissionReveal()\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 724,\n columnNumber: 29\n }, this),\n gameState.phase === \"mission_result\" && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_MissionResult__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n gameState: gameState,\n isHost: isHost,\n onContinue: ()=>isHost && actions.finishMissionResult()\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 732,\n columnNumber: 29\n }, this),\n gameState.phase === _shared_types__WEBPACK_IMPORTED_MODULE_3__.GamePhase.ASSASSIN_PHASE && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.div, {\n className: \"w-full flex flex-col items-center gap-6\",\n initial: {\n opacity: 0,\n y: 20\n },\n animate: {\n opacity: 1,\n y: 0\n },\n children: [\n currentPlayer?.role === \"francotirador\" && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4 max-w-4xl\",\n children: gameState.players.filter((p)=>p.faction === _shared_types__WEBPACK_IMPORTED_MODULE_3__.Faction.ALIADOS) // Solo jugadores Aliados\n .map((player)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.button, {\n onClick: ()=>actions.assassinKill(player.id),\n className: \"bg-black/60 hover:bg-red-600/70 border-2 border-white/30 hover:border-red-500 p-3 rounded-lg transition-all backdrop-blur-sm flex flex-col items-center gap-2\",\n whileHover: {\n scale: 1.05\n },\n whileTap: {\n scale: 0.95\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-20 h-20 rounded-full border-2 border-white/50 overflow-hidden bg-black relative shadow-xl\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: `/assets/images/characters/${player.avatar}`,\n alt: player.name,\n fill: true,\n className: \"object-cover\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 759,\n columnNumber: 57\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 758,\n columnNumber: 53\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-white font-bold text-sm drop-shadow-[0_2px_4px_rgba(0,0,0,0.8)]\",\n children: player.name\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 766,\n columnNumber: 53\n }, this)\n ]\n }, player.id, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 751,\n columnNumber: 49\n }, this))\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 747,\n columnNumber: 37\n }, this),\n currentPlayer?.role !== \"francotirador\" && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-white text-xl font-mono bg-black/50 px-6 py-3 rounded-full border border-white/20 animate-pulse\",\n children: \"El Francotirador est\\xe1 decidiendo...\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 773,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 741,\n columnNumber: 29\n }, this),\n gameState.phase === _shared_types__WEBPACK_IMPORTED_MODULE_3__.GamePhase.NAZIS_WIN && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_VictoryScreen__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n gameState: gameState,\n isHost: isHost,\n onRestart: ()=>actions.restartGame(),\n onFinalize: ()=>actions.finalizeGame()\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 782,\n columnNumber: 29\n }, this),\n gameState.phase === _shared_types__WEBPACK_IMPORTED_MODULE_3__.GamePhase.ALLIED_WIN && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_VictoryScreen__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n gameState: gameState,\n isHost: isHost,\n onRestart: ()=>actions.restartGame(),\n onFinalize: ()=>actions.finalizeGame()\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 792,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 457,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 456,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.div, {\n className: \"fixed bottom-0 left-0 right-0 z-50 bg-black/80 border-t border-white/10 backdrop-blur-md\",\n initial: false,\n animate: {\n y: isPlayersCollapsed ? \"100%\" : \"0%\"\n },\n transition: {\n type: \"spring\",\n stiffness: 300,\n damping: 30\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute -top-10 left-1/2 transform -translate-x-1/2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setIsPlayersCollapsed(!isPlayersCollapsed),\n className: \"bg-gradient-to-b from-yellow-600 to-yellow-700 hover:from-yellow-500 hover:to-yellow-600 text-white rounded-t-lg px-6 py-2 shadow-lg border-2 border-yellow-500 border-b-0 transition-all hover:shadow-yellow-500/50 flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.svg, {\n xmlns: \"http://www.w3.org/2000/svg\",\n className: \"h-5 w-5\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n stroke: \"currentColor\",\n animate: {\n rotate: isPlayersCollapsed ? 180 : 0\n },\n transition: {\n duration: 0.3\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 3,\n d: \"M19 9l-7 7-7-7\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 827,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 818,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-bold uppercase tracking-wider\",\n children: isPlayersCollapsed ? \"Mostrar\" : \"Ocultar\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 829,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 814,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 813,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full px-4 py-2 flex flex-wrap items-center justify-center gap-4\",\n children: gameState.players.map((player)=>{\n const isSelected = selectedTeam.includes(player.id);\n const isMe = player.id === currentPlayerId;\n // Avatar logic\n const avatarSrc = `/assets/images/characters/${player.avatar}`;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n onClick: ()=>isLeader && gameState.phase === _shared_types__WEBPACK_IMPORTED_MODULE_3__.GamePhase.TEAM_BUILDING && toggleTeamSelection(player.id),\n className: `\n relative flex flex-col items-center cursor-pointer transition-all duration-300 group\n ${isSelected ? \"scale-110 z-10\" : \"scale-100 opacity-70 hover:opacity-100 hover:scale-105\"}\n `,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative rounded-full border-2 overflow-hidden shadow-lg bg-black transition-all w-16 h-16 ${isSelected ? 'border-yellow-400 ring-4 ring-yellow-400/30 shadow-yellow-400/20' : 'border-gray-500 group-hover:border-gray-300'} ${gameState.currentLeaderId === player.id ? 'ring-2 ring-white' : ''} \",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: avatarSrc,\n alt: player.name,\n fill: true,\n className: \"object-cover\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 857,\n columnNumber: 41\n }, this),\n gameState.currentLeaderId === player.id && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 right-0 bg-yellow-500 rounded-full p-1 w-6 h-6 flex items-center justify-center text-[10px] text-black font-bold border border-white z-20 shadow-sm\",\n children: \"L\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 866,\n columnNumber: 45\n }, this),\n gameState.proposedTeam.includes(player.id) && (gameState.phase === _shared_types__WEBPACK_IMPORTED_MODULE_3__.GamePhase.VOTING_TEAM || gameState.phase === _shared_types__WEBPACK_IMPORTED_MODULE_3__.GamePhase.MISSION || gameState.phase === \"mission_reveal\" || gameState.phase === \"mission_result\") && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 left-0 bg-green-500 rounded-full p-1 w-6 h-6 flex items-center justify-center text-xs text-white font-bold border border-white z-20\",\n children: \"⭐\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 878,\n columnNumber: 49\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 853,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `\n mt-1 text-xs font-mono px-2 py-0.5 rounded shadow-sm whitespace-nowrap max-w-[100px] truncate\n ${isMe ? \"bg-blue-600 text-white font-bold\" : \"bg-black/60 text-gray-300 border border-white/10\"}\n `,\n children: player.name\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 885,\n columnNumber: 37\n }, this)\n ]\n }, player.id, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 844,\n columnNumber: 33\n }, this);\n })\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 835,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 804,\n columnNumber: 17\n }, this),\n gameState.missionHistory.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.div, {\n className: \"fixed top-[60px] right-0 z-50\",\n initial: false,\n animate: {\n x: isHistoryCollapsed ? \"0%\" : \"0%\"\n },\n transition: {\n type: \"spring\",\n stiffness: 300,\n damping: 30\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.button, {\n onClick: ()=>setIsHistoryCollapsed(!isHistoryCollapsed),\n className: \"absolute top-0 bg-gradient-to-l from-yellow-600 to-yellow-700 hover:from-yellow-500 hover:to-yellow-600 text-white rounded-l-lg px-2 py-3 shadow-lg border-2 border-yellow-500 border-r-0 transition-all hover:shadow-yellow-500/50 flex items-center\",\n initial: false,\n animate: {\n right: isHistoryCollapsed ? \"0px\" : \"100%\"\n },\n transition: {\n type: \"spring\",\n stiffness: 300,\n damping: 30\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.svg, {\n xmlns: \"http://www.w3.org/2000/svg\",\n className: \"h-4 w-4\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n stroke: \"currentColor\",\n animate: {\n rotate: isHistoryCollapsed ? 0 : 180\n },\n transition: {\n duration: 0.3\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 3,\n d: \"M15 19l-7-7 7-7\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 926,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 917,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 908,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_8__.motion.div, {\n className: \"bg-black/80 p-3 rounded-lg border border-white/20 backdrop-blur-sm\",\n initial: false,\n animate: {\n x: isHistoryCollapsed ? \"100%\" : \"0%\"\n },\n transition: {\n type: \"spring\",\n stiffness: 300,\n damping: 30\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[10px] text-gray-400 uppercase mb-2 text-center font-bold tracking-wider\",\n children: \"Historial\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 939,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-2\",\n children: gameState.missionHistory.map((mission, idx)=>{\n const isExpanded = expandedMission === idx;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 rounded-full flex items-center justify-center text-xs font-bold border-2 cursor-pointer transition-all hover:scale-110 ${mission.isSuccess ? \"bg-blue-600 border-blue-400 text-white\" : \"bg-red-600 border-red-400 text-white\"} ${isExpanded ? \"ring-2 ring-yellow-400 relative z-[60]\" : \"\"}`,\n title: `Misión ${mission.round}: ${mission.isSuccess ? \"\\xc9xito\" : \"Fracaso\"} (${mission.successes}✓ ${mission.fails}✗)`,\n onClick: (e)=>{\n e.stopPropagation();\n console.log(\"Click en misi\\xf3n\", idx);\n setExpandedMission((prev)=>prev === idx ? null : idx);\n },\n children: mission.round\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 946,\n columnNumber: 45\n }, this),\n isExpanded && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-10 right-0 bg-black/95 p-2 rounded border border-white/30 min-w-max z-[100]\",\n children: mission.team.map((playerId)=>{\n const player = gameState.players.find((p)=>p.id === playerId);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white whitespace-nowrap\",\n children: player?.name || playerId\n }, playerId, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 967,\n columnNumber: 61\n }, this);\n })\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 963,\n columnNumber: 49\n }, this)\n ]\n }, idx, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 945,\n columnNumber: 41\n }, this);\n })\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 940,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 931,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 899,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 329,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 302,\n columnNumber: 9\n }, this);\n}\n// Subcomponente para el Timer de Votación (solo visual, el servidor controla el timeout real)\nfunction VotingTimer() {\n const [timeLeft, setTimeLeft] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(10);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (timeLeft <= 0) {\n return; // El servidor se encargará de forzar la resolución\n }\n const interval = setInterval(()=>setTimeLeft((t)=>t - 1), 1000);\n return ()=>clearInterval(interval);\n }, [\n timeLeft\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"fixed top-5 left-5 bg-red-600/80 text-white w-16 h-16 rounded-full flex items-center justify-center border-4 border-red-400 animate-pulse text-2xl font-bold font-mono\",\n children: timeLeft\n }, void 0, false, {\n fileName: \"/app/client/src/components/GameBoard.tsx\",\n lineNumber: 999,\n columnNumber: 9\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QVMsR0FBRyxhQUFVLFVBQVUsRUFBRSxFQUFFRixRQUFRSyxTQUFTLENBQUMsRUFBRSxFQUFFTCxRQUFRTSxLQUFLLENBQUMsRUFBRSxDQUFDO3dEQUN0SHBHLFNBQVMsQ0FBQ3FHOzREQUNOQSxFQUFFQyxlQUFlOzREQUNqQkMsUUFBUUMsR0FBRyxDQUFDLHNCQUFtQnJHOzREQUMvQnRELG1CQUFtQjRKLENBQUFBLE9BQVFBLFNBQVN0RyxNQUFNLE9BQU9BO3dEQUNyRDtrRUFFQzJGLFFBQVFJLEtBQUs7Ozs7OztvREFJakJILDRCQUNHLDhEQUFDMUc7d0RBQUlDLFdBQVU7a0VBQ1Z3RyxRQUFRWSxJQUFJLENBQUN6RixHQUFHLENBQUMsQ0FBQ3hDOzREQUNmLE1BQU0rRixTQUFTekksVUFBVStCLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDQyxDQUFBQSxJQUFLQSxFQUFFQyxFQUFFLEtBQUtROzREQUNwRCxxQkFDSSw4REFBQ1k7Z0VBQW1CQyxXQUFVOzBFQUN6QmtGLFFBQVEvQyxRQUFRaEQ7K0RBRFhBOzs7Ozt3REFJbEI7Ozs7Ozs7K0NBMUJGMEI7Ozs7O3dDQStCbEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFoQztBQUVBLDhGQUE4RjtBQUM5RixTQUFTNEM7SUFDTCxNQUFNLENBQUM0RCxVQUFVQyxZQUFZLEdBQUcxTCwrQ0FBUUEsQ0FBQztJQUV6Q0MsZ0RBQVNBLENBQUM7UUFDTixJQUFJd0wsWUFBWSxHQUFHO1lBQ2YsUUFBUSxtREFBbUQ7UUFDL0Q7UUFDQSxNQUFNRSxXQUFXQyxZQUFZLElBQU1GLFlBQVlHLENBQUFBLElBQUtBLElBQUksSUFBSTtRQUM1RCxPQUFPLElBQU1DLGNBQWNIO0lBQy9CLEdBQUc7UUFBQ0Y7S0FBUztJQUViLHFCQUNJLDhEQUFDdEg7UUFBSUMsV0FBVTtrQkFDVnFIOzs7Ozs7QUFHYiIsInNvdXJjZXMiOlsid2VicGFjazovL3Jlc2lzdGVuY2lhLWNsaWVudC8uL3NyYy9jb21wb25lbnRzL0dhbWVCb2FyZC50c3g/ZjRhYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgbW90aW9uLCBBbmltYXRlUHJlc2VuY2UgfSBmcm9tICdmcmFtZXItbW90aW9uJztcbmltcG9ydCBJbWFnZSBmcm9tICduZXh0L2ltYWdlJztcbmltcG9ydCB7IEdhbWVTdGF0ZSwgR2FtZVBoYXNlLCBQbGF5ZXIsIEdBTUVfQ09ORklHLCBGYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3R5cGVzJztcbmltcG9ydCBNaXNzaW9uUmV2ZWFsIGZyb20gJy4vTWlzc2lvblJldmVhbCc7XG5pbXBvcnQgTWlzc2lvblJlc3VsdCBmcm9tICcuL01pc3Npb25SZXN1bHQnO1xuaW1wb3J0IFZpY3RvcnlTY3JlZW4gZnJvbSAnLi9WaWN0b3J5U2NyZWVuJztcbmltcG9ydCBFeGl0R2FtZUJ1dHRvbiBmcm9tICcuL0V4aXRHYW1lQnV0dG9uJztcblxuaW50ZXJmYWNlIEdhbWVCb2FyZFByb3BzIHtcbiAgICBnYW1lU3RhdGU6IEdhbWVTdGF0ZTtcbiAgICBjdXJyZW50UGxheWVySWQ6IHN0cmluZztcbiAgICBhY3Rpb25zOiBhbnk7XG4gICAgZnVsbFBsYXllck5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gR2FtZUJvYXJkKHsgZ2FtZVN0YXRlLCBjdXJyZW50UGxheWVySWQsIGFjdGlvbnMsIGZ1bGxQbGF5ZXJOYW1lIH06IEdhbWVCb2FyZFByb3BzKSB7XG4gICAgY29uc3QgW3NlbGVjdGVkVGVhbSwgc2V0U2VsZWN0ZWRUZWFtXSA9IHVzZVN0YXRlPHN0cmluZ1tdPihbXSk7XG5cbiAgICAvLyBIb29rcyBwYXJhIEZBU0UgUkVWRUFMIFJPTEVcbiAgICBjb25zdCBbcmV2ZWFsQ2FyZCwgc2V0UmV2ZWFsQ2FyZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgICAvLyBPcmRlbiBhbGVhdG9yaW8gZGUgY2FydGFzIGRlIG1pc2nDs24gKHNlIGdlbmVyYSB1bmEgdmV6KVxuICAgIGNvbnN0IFtjYXJkT3JkZXJdID0gdXNlU3RhdGUoKCkgPT4gTWF0aC5yYW5kb20oKSA+IDAuNSk7XG5cbiAgICAvLyBUcmFjayBkZWwgdm90byBkZSBtaXNpw7NuIGRlbCBqdWdhZG9yXG4gICAgY29uc3QgW21pc3Npb25Wb3RlLCBzZXRNaXNzaW9uVm90ZV0gPSB1c2VTdGF0ZTxib29sZWFuIHwgbnVsbD4obnVsbCk7XG4gICAgY29uc3QgW2V4cGFuZGVkTWlzc2lvbiwgc2V0RXhwYW5kZWRNaXNzaW9uXSA9IHVzZVN0YXRlPG51bWJlciB8IG51bGw+KG51bGwpO1xuXG4gICAgLy8gRXN0YWRvIHBhcmEgY29udHJvbGFyIGVsIGNvbGFwc28gZGVsIHBhbmVsIGRlIGp1Z2Fkb3Jlc1xuICAgIGNvbnN0IFtpc1BsYXllcnNDb2xsYXBzZWQsIHNldElzUGxheWVyc0NvbGxhcHNlZF0gPSB1c2VTdGF0ZSh0cnVlKTtcblxuICAgIC8vIEVzdGFkbyBwYXJhIGNvbnRyb2xhciBlbCBjb2xhcHNvIGRlbCBoaXN0b3JpYWwgZGUgbWlzaW9uZXNcbiAgICBjb25zdCBbaXNIaXN0b3J5Q29sbGFwc2VkLCBzZXRJc0hpc3RvcnlDb2xsYXBzZWRdID0gdXNlU3RhdGUodHJ1ZSk7XG5cblxuICAgIC8vIFRpbWVyIHBhcmEgYXZhbnphciBhdXRvbcOhdGljYW1lbnRlIGVuIFJFVkVBTF9ST0xFXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGdhbWVTdGF0ZS5waGFzZSA9PT0gJ3JldmVhbF9yb2xlJyBhcyBhbnkpIHtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgYWN0aW9ucy5maW5pc2hSZXZlYWwoKTtcbiAgICAgICAgICAgIH0sIDEwMDAwKTtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICB9XG4gICAgfSwgW2dhbWVTdGF0ZS5waGFzZSwgYWN0aW9uc10pO1xuXG4gICAgLy8gUmVzZXQgbWlzc2lvblZvdGUgY3VhbmRvIGNhbWJpYSBsYSBmYXNlXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGdhbWVTdGF0ZS5waGFzZSAhPT0gR2FtZVBoYXNlLk1JU1NJT04pIHtcbiAgICAgICAgICAgIHNldE1pc3Npb25Wb3RlKG51bGwpO1xuICAgICAgICB9XG4gICAgfSwgW2dhbWVTdGF0ZS5waGFzZV0pO1xuXG4gICAgLy8gUmVzZXQgc2VsZWN0ZWRUZWFtIGN1YW5kbyBubyBlc3RhbW9zIGVuIFRFQU1fQlVJTERJTkcgbyBjYW1iaWEgZWwgbMOtZGVyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGdhbWVTdGF0ZS5waGFzZSAhPT0gR2FtZVBoYXNlLlRFQU1fQlVJTERJTkcpIHtcbiAgICAgICAgICAgIHNldFNlbGVjdGVkVGVhbShbXSk7XG4gICAgICAgIH1cbiAgICB9LCBbZ2FtZVN0YXRlLnBoYXNlLCBnYW1lU3RhdGUuY3VycmVudExlYWRlcklkXSk7XG5cbiAgICAvLyBFc3RhZG8gcGFyYSBjb250cm9sYXIgY3XDoW5kbyBtb3N0cmFyIGVsIHRhYmxlcm9cbiAgICBjb25zdCBbc2hvd0JvYXJkLCBzZXRTaG93Qm9hcmRdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gICAgLy8gTW9zdHJhciB0YWJsZXJvIGR1cmFudGUgTUlTU0lPTl9SRVNVTFRcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoZ2FtZVN0YXRlLnBoYXNlID09PSBHYW1lUGhhc2UuTUlTU0lPTl9SRVNVTFQpIHtcbiAgICAgICAgICAgIHNldFNob3dCb2FyZCh0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldFNob3dCb2FyZChmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9LCBbZ2FtZVN0YXRlLnBoYXNlXSk7XG5cblxuICAgIGNvbnN0IGN1cnJlbnRQbGF5ZXIgPSBnYW1lU3RhdGUucGxheWVycy5maW5kKHAgPT4gcC5pZCA9PT0gY3VycmVudFBsYXllcklkKTtcbiAgICBjb25zdCBpc0xlYWRlciA9IGdhbWVTdGF0ZS5jdXJyZW50TGVhZGVySWQgPT09IGN1cnJlbnRQbGF5ZXJJZDsgLy8gRklYOiBVc2FyIGN1cnJlbnRMZWFkZXJJZCBkZWwgZXN0YWRvXG4gICAgY29uc3QgY29uZmlnID0gR0FNRV9DT05GSUdbZ2FtZVN0YXRlLnBsYXllcnMubGVuZ3RoIGFzIGtleW9mIHR5cGVvZiBHQU1FX0NPTkZJR107XG4gICAgY29uc3QgY3VycmVudFF1ZXN0U2l6ZSA9IGNvbmZpZz8ucXVlc3RzW2dhbWVTdGF0ZS5jdXJyZW50Um91bmQgLSAxXTtcblxuICAgIC8vIE1hbmVqYXIgc2VsZWNjacOzbiBkZSBlcXVpcG9cbiAgICBjb25zdCB0b2dnbGVUZWFtU2VsZWN0aW9uID0gKHBsYXllcklkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkVGVhbS5pbmNsdWRlcyhwbGF5ZXJJZCkpIHtcbiAgICAgICAgICAgIHNldFNlbGVjdGVkVGVhbShzZWxlY3RlZFRlYW0uZmlsdGVyKGlkID0+IGlkICE9PSBwbGF5ZXJJZCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkVGVhbS5sZW5ndGggPCBjdXJyZW50UXVlc3RTaXplKSB7XG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRUZWFtKFsuLi5zZWxlY3RlZFRlYW0sIHBsYXllcklkXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlTWlzc2lvblZvdGUgPSAodm90ZTogYm9vbGVhbikgPT4ge1xuICAgICAgICBzZXRNaXNzaW9uVm90ZSh2b3RlKTtcbiAgICAgICAgYWN0aW9ucy52b3RlTWlzc2lvbih2b3RlKTtcbiAgICB9O1xuXG5cbiAgICAvLyBDb29yZGVuYWRhcyBwb3JjZW50dWFsZXMgZGUgbG9zIGhleMOhZ29ub3MgZGUgbWlzacOzbiBlbiBlbCBtYXBhXG4gICAgY29uc3QgbWlzc2lvbkNvb3JkcyA9IFtcbiAgICAgICAgeyBsZWZ0OiAnMTglJywgdG9wOiAnNjAlJyB9LCAvLyBNaXNpw7NuIDEgLSBBYmFqbyBpenF1aWVyZGFcbiAgICAgICAgeyBsZWZ0OiAnMjUlJywgdG9wOiAnMTglJyB9LCAvLyBNaXNpw7NuIDIgLSBBcnJpYmEgaXpxdWllcmRhXG4gICAgICAgIHsgbGVmdDogJzUwJScsIHRvcDogJzc1JScgfSwgLy8gTWlzacOzbiAzIC0gQWJham8gY2VudHJvXG4gICAgICAgIHsgbGVmdDogJzUwJScsIHRvcDogJzMwJScgfSwgLy8gTWlzacOzbiA0IC0gQ2VudHJvXG4gICAgICAgIHsgbGVmdDogJzgwJScsIHRvcDogJzQ1JScgfSwgLy8gTWlzacOzbiA1IC0gRGVyZWNoYVxuICAgIF07XG5cbiAgICAvLyBOb21icmVzIGRlIGxhcyBtaXNpb25lc1xuICAgIGNvbnN0IG1pc3Npb25OYW1lcyA9IFtcbiAgICAgICAgJ1NhYm90YWplIGVuIGVsIFRyZW4nLFxuICAgICAgICAnUmVzY2F0ZSBkZWwgUHJpc2lvbmVybycsXG4gICAgICAgICdEZXN0cnVjY2nDs24gZGVsIFB1ZW50ZScsXG4gICAgICAgICdSb2JvIGRlIERvY3VtZW50b3MnLFxuICAgICAgICAnQXNhbHRvIGFsIEN1YXJ0ZWwgR2VuZXJhbCdcbiAgICBdO1xuXG4gICAgLy8gLS0tIFVJL0VmZWN0b3MgcGFyYSBGQVNFUyBURU1QUkFOQVMgLS0tXG4gICAgY29uc3QgaXNIb3N0ID0gZ2FtZVN0YXRlLmhvc3RJZCA9PT0gY3VycmVudFBsYXllcklkO1xuXG4gICAgLy8gRkFTRSBJTlRST1xuICAgIGlmIChnYW1lU3RhdGUucGhhc2UgPT09ICdpbnRybycgYXMgYW55KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHctZnVsbCBoLXNjcmVlbiBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1ibGFjayBvdmVyZmxvdy1oaWRkZW4gdGV4dC13aGl0ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCB6LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgPEltYWdlIHNyYz1cIi9hc3NldHMvaW1hZ2VzL3VpL2JnX2ludHJvLnBuZ1wiIGFsdD1cIkJhdHRsZWZpZWxkXCIgZmlsbCBjbGFzc05hbWU9XCJvYmplY3QtY292ZXJcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgYmctYmxhY2svNDBcIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cInotMTAgdGV4dC1bMi41NXJlbV0gZm9udC1ib2xkIHVwcGVyY2FzZSB0cmFja2luZy1bMC4zZW1dIG1iLTggdGV4dC15ZWxsb3ctNTAwIGRyb3Atc2hhZG93LWxnIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIFRyYWljacOzbiBlbiBQYXLDrXNcbiAgICAgICAgICAgICAgICA8L2gxPlxuXG4gICAgICAgICAgICAgICAgey8qIEF1ZGlvIEF1dG8tUGxheSAtIFNvbG8gcGFyYSBlbCBob3N0ICovfVxuICAgICAgICAgICAgICAgIHtpc0hvc3QgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8YXVkaW9cbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cIi9hc3NldHMvYXVkaW8vSW50cm8ub2dnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9QbGF5XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkVuZGVkPXsoKSA9PiBhY3Rpb25zLmZpbmlzaEludHJvKCl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgIHtpc0hvc3QgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBhY3Rpb25zLmZpbmlzaEludHJvKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ6LTEwIGJnLXdoaXRlLzIwIGhvdmVyOmJnLXdoaXRlLzQwIGJvcmRlciBib3JkZXItd2hpdGUgcHgtNiBweS0yIHJvdW5kZWQgdGV4dC1zbSB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0IGJhY2tkcm9wLWJsdXItc20gdHJhbnNpdGlvbi1hbGxcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBPbWl0aXIgSW50cm9kdWNjacOzblxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRkFTRSBSRVZFQUwgUk9MRSBOTyBIT09LUyBIRVJFXG5cbiAgICBpZiAoZ2FtZVN0YXRlLnBoYXNlID09PSAncmV2ZWFsX3JvbGUnIGFzIGFueSkge1xuICAgICAgICAvLyBEZXRlcm1pbmFyIGltYWdlbiBiYXNhZGEgZW4gZWwgcm9sXG4gICAgICAgIC8vIE1hcGVvIGFjdHVhbGl6YWRvOiBcbiAgICAgICAgLy8gTWFybGVuZSAtPiBnb29kX21lcmxpbi5wbmdcbiAgICAgICAgLy8gQ2FwaXTDoW4gUGhpbGlwcGUgLT4gZ29vZF9wZXJjaXZhbC5wbmdcbiAgICAgICAgLy8gUGFydGlzYW5vIC0+IGdvb2Rfc29sZGllcl9YLnBuZyAocmFuZG9tKVxuICAgICAgICAvLyBGcmFuY290aXJhZG9yIC0+IGV2aWxfYXNzYXNzaW4ucG5nXG4gICAgICAgIC8vIEFnZW50ZSBEb2JsZSAtPiBldmlsX21vcmdhbmEucG5nXG4gICAgICAgIC8vIENvbWFuZGFudGUgU2NobWlkdCAtPiBldmlsX21vcmRyZWQucG5nXG4gICAgICAgIC8vIEluZmlsdHJhZG8gLT4gZXZpbF9vYmVyb24ucG5nXG4gICAgICAgIC8vIENvbGFib3JhY2lvbmlzdGEgLT4gZXZpbF9taW5pb25fWC5wbmdcblxuICAgICAgICBsZXQgcm9sZUltYWdlID0gJy9hc3NldHMvaW1hZ2VzL2NoYXJhY3RlcnMvZ29vZF9zb2xkaWVyXzEucG5nJzsgLy8gRGVmYXVsdFxuXG4gICAgICAgIGNvbnN0IHJvbGUgPSBjdXJyZW50UGxheWVyPy5yb2xlO1xuICAgICAgICBpZiAocm9sZSA9PT0gJ21hcmxlbmUnKSByb2xlSW1hZ2UgPSAnL2Fzc2V0cy9pbWFnZXMvY2hhcmFjdGVycy9nb29kX21lcmxpbi5wbmcnO1xuICAgICAgICBlbHNlIGlmIChyb2xlID09PSAnZnJhbmNvdGlyYWRvcicpIHJvbGVJbWFnZSA9ICcvYXNzZXRzL2ltYWdlcy9jaGFyYWN0ZXJzL2V2aWxfYXNzYXNzaW4ucG5nJztcbiAgICAgICAgZWxzZSBpZiAocm9sZSA9PT0gJ2NhcGl0YW5fcGhpbGlwcGUnKSByb2xlSW1hZ2UgPSAnL2Fzc2V0cy9pbWFnZXMvY2hhcmFjdGVycy9nb29kX3BlcmNpdmFsLnBuZyc7XG4gICAgICAgIGVsc2UgaWYgKHJvbGUgPT09ICdhZ2VudGVfZG9ibGUnKSByb2xlSW1hZ2UgPSAnL2Fzc2V0cy9pbWFnZXMvY2hhcmFjdGVycy9ldmlsX21vcmdhbmEucG5nJztcbiAgICAgICAgZWxzZSBpZiAocm9sZSA9PT0gJ2NvbWFuZGFudGVfc2NobWlkdCcpIHJvbGVJbWFnZSA9ICcvYXNzZXRzL2ltYWdlcy9jaGFyYWN0ZXJzL2V2aWxfbW9yZHJlZC5wbmcnO1xuICAgICAgICBlbHNlIGlmIChyb2xlID09PSAnaW5maWx0cmFkbycpIHJvbGVJbWFnZSA9ICcvYXNzZXRzL2ltYWdlcy9jaGFyYWN0ZXJzL2V2aWxfb2Jlcm9uLnBuZyc7XG4gICAgICAgIGVsc2UgaWYgKHJvbGUgPT09ICdwYXJ0aXNhbm8nKSB7XG4gICAgICAgICAgICAvLyBSYW5kb20gc29sZGllciAxLTVcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IChjdXJyZW50UGxheWVySWQuY2hhckNvZGVBdCgwKSAlIDUpICsgMTtcbiAgICAgICAgICAgIHJvbGVJbWFnZSA9IGAvYXNzZXRzL2ltYWdlcy9jaGFyYWN0ZXJzL2dvb2Rfc29sZGllcl8ke2lkeH0ucG5nYDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChyb2xlID09PSAnY29sYWJvcmFjaW9uaXN0YScpIHtcbiAgICAgICAgICAgIC8vIFJhbmRvbSBtaW5pb24gMS0zXG4gICAgICAgICAgICBjb25zdCBpZHggPSAoY3VycmVudFBsYXllcklkLmNoYXJDb2RlQXQoMCkgJSAzKSArIDE7XG4gICAgICAgICAgICByb2xlSW1hZ2UgPSBgL2Fzc2V0cy9pbWFnZXMvY2hhcmFjdGVycy9ldmlsX21pbmlvbl8ke2lkeH0ucG5nYDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHctZnVsbCBoLXNjcmVlbiBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1ibGFjayBvdmVyZmxvdy1oaWRkZW4gdGV4dC13aGl0ZSBmb250LW1vbm9cIj5cbiAgICAgICAgICAgICAgICB7LyogRk9ORE8gKE1pc21vIHF1ZSBSb2xsIENhbGwpICovfVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCB6LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgPEltYWdlIHNyYz1cIi9hc3NldHMvaW1hZ2VzL3VpL2JnX3JvbGxfY2FsbC5wbmdcIiBhbHQ9XCJSZXNpc3RhbmNlIEhRXCIgZmlsbCBjbGFzc05hbWU9XCJvYmplY3QtY292ZXJcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgYmctYmxhY2svNzBcIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ6LTEwIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC04XCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCB1cHBlcmNhc2UgdHJhY2tpbmctWzAuMmVtXSB0ZXh0LWdyYXktMzAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBUdSBJZGVudGlkYWQgU2VjcmV0YVxuICAgICAgICAgICAgICAgICAgICA8L2gyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTQwMCBtYi00IGFuaW1hdGUtcHVsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIERlc2xpemEgaGFjaWEgYXJyaWJhIHBhcmEgcmV2ZWxhclxuICAgICAgICAgICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSB3LTY0IGgtOTYgcGVyc3BlY3RpdmUtMTAwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgey8qIENhcnRhIFJldmVsYWRhIChGb25kbykgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgdy1mdWxsIGgtZnVsbCByb3VuZGVkLXhsIG92ZXJmbG93LWhpZGRlbiBzaGFkb3ctMnhsIGJvcmRlci00IGJvcmRlci15ZWxsb3ctNjAwIGJnLWdyYXktOTAwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17cm9sZUltYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJSb2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY292ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBib3R0b20tMCB3LWZ1bGwgYmctYmxhY2svODAgdGV4dC1jZW50ZXIgcHktMiBmb250LWJvbGQgdGV4dC15ZWxsb3ctNTAwIHVwcGVyY2FzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cm9sZT8ucmVwbGFjZSgnXycsICcgJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgey8qIFJldmVyc28gZGUgQ2FydGEgKERyYWdnYWJsZSkgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWc9XCJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFnQ29uc3RyYWludHM9e3sgdG9wOiAtMzAwLCBib3R0b206IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFnRWxhc3RpYz17MC41fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdTbmFwVG9PcmlnaW49e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGVIb3Zlcj17eyBzY2FsZTogMS4wMiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlVGFwPXt7IHNjYWxlOiAwLjk4LCBjdXJzb3I6ICdncmFiYmluZycgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIHctZnVsbCBoLWZ1bGwgcm91bmRlZC14bCBvdmVyZmxvdy1oaWRkZW4gc2hhZG93LTJ4bCB6LTIwIGN1cnNvci1ncmFiIGFjdGl2ZTpjdXJzb3ItZ3JhYmJpbmcgaG92ZXI6cmluZy0yIGhvdmVyOnJpbmctd2hpdGUvNTAgdHJhbnNpdGlvbi1hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCIvYXNzZXRzL2ltYWdlcy9jaGFyYWN0ZXJzL2NhcmRfYmFjay5wbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJDYXJkIEJhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb3ZlciBwb2ludGVyLWV2ZW50cy1ub25lXCIgLy8gSW1wb3J0YW50ZTogcG9pbnRlci1ldmVudHMtbm9uZSBlbiBsYSBpbWFnZW4gcGFyYSBxdWUgbm8gY2FwdHVyZSBlbCBkcmFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRkFTRSBST0xMIENBTExcbiAgICBpZiAoZ2FtZVN0YXRlLnBoYXNlID09PSAncm9sbF9jYWxsJyBhcyBhbnkpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgdy1mdWxsIGgtc2NyZWVuIGZsZXggZmxleC1jb2wgYmctYmxhY2sgb3ZlcmZsb3ctaGlkZGVuIHRleHQtd2hpdGUgZm9udC1tb25vXCI+XG5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCB6LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgPEltYWdlIHNyYz1cIi9hc3NldHMvaW1hZ2VzL3VpL2JnX3JvbGxfY2FsbC5wbmdcIiBhbHQ9XCJSZXNpc3RhbmNlIEhRXCIgZmlsbCBjbGFzc05hbWU9XCJvYmplY3QtY292ZXJcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgYmctYmxhY2svNzBcIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgey8qIC0tLSAxLiBTRUNDScOTTiBTVVBFUklPUjogVMONVFVMTyAoMjAtMjUlIGFsdHVyYSkgLS0tICovfVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgei0xMCB3LWZ1bGwgaC1bMjB2aF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHgtNCBib3JkZXItYiBib3JkZXItZ3JheS02MDAvNTAgYmctYmxhY2svMjAgYmFja2Ryb3AtYmx1ci1zbVwiPlxuICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC0yeGwgbWQ6dGV4dC0zeGwgbGc6dGV4dC00eGwgdGV4dC1jZW50ZXIgdXBwZXJjYXNlIHRyYWNraW5nLVswLjJlbV0gdGV4dC1ncmF5LTMwMCBkcm9wLXNoYWRvdy1sZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgUGFzYW5kbyBMaXN0YS4uLlxuICAgICAgICAgICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgey8qIC0tLSAyLiBTRUNDScOTTiBJTkZFUklPUjogSlVHQURPUkVTIChSZXN0byBkZSBhbHR1cmEpIC0tLSAqL31cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHotMTAgdy1mdWxsIGZsZXgtMSBvdmVyZmxvdy15LWF1dG8gcC00IGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIHtpc0hvc3QgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGF1ZGlvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiL2Fzc2V0cy9hdWRpby9Sb25kYXMubXAzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvUGxheVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRW5kZWQ9eygpID0+IGFjdGlvbnMuZmluaXNoUm9sbENhbGwoKX0gLy8gSG9zdCBhdmFuemEgY3VhbmRvIGFjYWJhIGF1ZGlvXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIG1heC13LTZ4bCBncmlkIGdyaWQtY29scy0zIG1kOmdyaWQtY29scy00IGxnOmdyaWQtY29scy01IGdhcC0zIG1kOmdhcC04IGp1c3RpZnktaXRlbXMtY2VudGVyIGNvbnRlbnQtY2VudGVyIHB5LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtnYW1lU3RhdGUucGxheWVycy5tYXAoKHAsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtwLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwLCBzY2FsZTogMC44IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHNjYWxlOiAxIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IGRlbGF5OiBpICogMC4zIH19IC8vIEFwYXJlY2VuIHVubyBhIHVub1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgZ2FwLTEgbWQ6Z2FwLTMgdy1mdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIEF2YXRhciBSZXNwb25zaXZlICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTIwIGgtMjAgbWQ6dy0zMiBtZDpoLTMyIHJvdW5kZWQtZnVsbCBib3JkZXItMiBtZDpib3JkZXItNCBib3JkZXItZ3JheS00MDAgb3ZlcmZsb3ctaGlkZGVuIHJlbGF0aXZlIHNoYWRvdy0yeGwgYmctYmxhY2tcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtgL2Fzc2V0cy9pbWFnZXMvY2hhcmFjdGVycy8ke3AuYXZhdGFyfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIkF2YXRhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvdmVyIGdyYXlzY2FsZSBjb250cmFzdC0xMjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBOb21icmUgUmVzcG9uc2l2ZSAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctYmxhY2svODAgcHgtMiBweS0wLjUgbWQ6cHgtNCBtZDpweS0xIHJvdW5kZWQgYm9yZGVyIGJvcmRlci13aGl0ZS8yMCB0ZXh0LXhzIG1kOnRleHQteGwgZm9udC1ib2xkIHRleHQteWVsbG93LTUwMCB1cHBlcmNhc2UgdGV4dC1jZW50ZXIgdy1mdWxsIHRydW5jYXRlIG1heC13LVsxMjBweF0gbWQ6bWF4LXctbm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHctZnVsbCBoLXNjcmVlbiBmbGV4IGZsZXgtY29sIG92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICAgICAgey8qIEJvdMOzbiBkZSBTYWxpciBkZSBsYSBQYXJ0aWRhIC0gTm8gbW9zdHJhciBlbiBwYW50YWxsYXMgZGUgdmljdG9yaWEgKi99XG4gICAgICAgICAgICB7Z2FtZVN0YXRlLnBoYXNlICE9PSBHYW1lUGhhc2UuQUxMSUVEX1dJTiAmJiBnYW1lU3RhdGUucGhhc2UgIT09IEdhbWVQaGFzZS5OQVpJU19XSU4gJiYgKFxuICAgICAgICAgICAgICAgIDxFeGl0R2FtZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBvbkV4aXQ9eygpID0+IGFjdGlvbnMubGVhdmVHYW1lKCl9XG4gICAgICAgICAgICAgICAgICAgIHBsYXllck5hbWU9e2Z1bGxQbGF5ZXJOYW1lfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7LyogRm9uZG8gKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgei0wIG9wYWNpdHktNDBcIj5cbiAgICAgICAgICAgICAgICA8SW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgc3JjPXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdhbWVTdGF0ZS5waGFzZSA9PT0gR2FtZVBoYXNlLkFMTElFRF9XSU5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiL2Fzc2V0cy9pbWFnZXMvdG9rZW5zL21pc3Npb25fc3VjY2Vzcy5wbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZ2FtZVN0YXRlLnBoYXNlID09PSBHYW1lUGhhc2UuTkFaSVNfV0lOXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCIvYXNzZXRzL2ltYWdlcy90b2tlbnMvbWlzc2lvbl9mYWlsLnBuZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCIvYXNzZXRzL2ltYWdlcy91aS9iZ19nYW1lLnBuZ1wiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYWx0PVwiR2FtZSBCYWNrZ3JvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbFxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY292ZXJcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIGJnLWJsYWNrLzYwXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7LyogQ29udGVuZWRvciBwcmluY2lwYWwgKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHotMTAgdy1mdWxsIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIHBiLTMyXCI+XG5cbiAgICAgICAgICAgICAgICB7LyogLS0tIE1BUEEgVMOBQ1RJQ08gKFRBQkxFUk8pIE8gQ0FSVEEgREUgTUlTScOTTiBPIEFTU0FTU0lOX1BIQVNFIC0tLSAqL31cbiAgICAgICAgICAgICAgICB7LyogTm8gbW9zdHJhciBlbCB0YWJsZXJvIGVuIGZhc2VzIGRlIHZpY3RvcmlhICovfVxuICAgICAgICAgICAgICAgIHtnYW1lU3RhdGUucGhhc2UgIT09IEdhbWVQaGFzZS5BTExJRURfV0lOICYmIGdhbWVTdGF0ZS5waGFzZSAhPT0gR2FtZVBoYXNlLk5BWklTX1dJTiAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgdy1mdWxsIG1heC13LTV4bCBhc3BlY3QtdmlkZW8gbXQtNCBzaGFkb3ctMnhsIGJvcmRlci00IGJvcmRlci1ncmF5LTgwMCByb3VuZGVkLWxnIG92ZXJmbG93LWhpZGRlbiBiZy1bIzJhMmEyYV1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtnYW1lU3RhdGUucGhhc2UgPT09IEdhbWVQaGFzZS5BU1NBU1NJTl9QSEFTRSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTUFHRU4gTEFTVFNIT1QgUEFSQSBBU1NBU1NJTl9QSEFTRSAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiL2Fzc2V0cy9pbWFnZXMvdG9rZW5zL2xhc3RzaG90LmpwZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJMYXN0IFNob3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvdmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBPdmVybGF5IG9zY3VybyBwYXJhIG1lam9yYXIgbGVnaWJpbGlkYWQgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCBiZy1ibGFjay80MFwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFTDrXR1bG8gc29icmUgbGEgaW1hZ2VuIC0gY2VudHJhZG8gdmVydGljYWxtZW50ZSAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMS8zIGxlZnQtMCByaWdodC0wIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIHotMTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LTV4bCBmb250LWJvbGQgdGV4dC1yZWQtNjAwIG1iLTIgZHJvcC1zaGFkb3ctWzBfNHB4XzhweF9yZ2JhKDAsMCwwLDAuOSldXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgwqHDmkxUSU1BIE9QT1JUVU5JREFEIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjdXJyZW50UGxheWVyPy5yb2xlID09PSAnZnJhbmNvdGlyYWRvcicgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14bCB0ZXh0LXdoaXRlIGRyb3Atc2hhZG93LVswXzJweF80cHhfcmdiYSgwLDAsMCwwLjkpXSBmb250LWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbmNvdGlyYWRvciwgZWxpZ2UgYSBxdWnDqW4gY3JlZXMgcXVlIGVzIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteWVsbG93LTQwMFwiPk1BUkxFTkU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhsIHRleHQtZ3JheS0zMDAgZHJvcC1zaGFkb3ctWzBfMnB4XzRweF9yZ2JhKDAsMCwwLDAuOSldIGZvbnQtYm9sZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbCBGcmFuY290aXJhZG9yIGVzdMOhIGRlY2lkaWVuZG8uLi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiBzaG93Qm9hcmQgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFRBQkxFUk8gQ09OIFRPS0VOUyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCIvYXNzZXRzL2ltYWdlcy91aS9ib2FyZF9tYXAuanBnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlRhY3RpY2FsIE1hcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFRPS0VOUyBTT0JSRSBFTCBNQVBBICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bWlzc2lvbkNvb3Jkcy5tYXAoKGNvb3JkLCBpZHgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGdhbWVTdGF0ZS5xdWVzdFJlc3VsdHNbaWR4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzQ3VycmVudCA9IGdhbWVTdGF0ZS5jdXJyZW50Um91bmQgPT09IGlkeCArIDE7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2lkeH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdy1bMTAlXSBhc3BlY3Qtc3F1YXJlIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IGNvb3JkLmxlZnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGNvb3JkLnRvcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZSgtNTAlLCAtNTAlKSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBNYXJjYWRvciBkZSBSb25kYSBBY3R1YWwgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpc0N1cnJlbnQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRJZD1cInJvdW5kLW1hcmtlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCB6LTEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsPXt7IHNjYWxlOiAxLjUsIG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlPXt7IHNjYWxlOiAxLCBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbj17eyB0eXBlOiBcInNwcmluZ1wiLCBzdGlmZm5lc3M6IDMwMCwgZGFtcGluZzogMjAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiL2Fzc2V0cy9pbWFnZXMvdG9rZW5zL21hcmtlcl9yb3VuZC5wbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJDdXJyZW50IFJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpbiBkcm9wLXNoYWRvdy1sZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogUmVzdWx0YWRvIGRlIE1pc2nDs24gKMOJeGl0by9GcmFjYXNvKSAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Jlc3VsdCA9PT0gdHJ1ZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWw9e3sgc2NhbGU6IDAgfX0gYW5pbWF0ZT17eyBzY2FsZTogMSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgei0yMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LVs4MCVdIGgtWzgwJV0gcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlIHNyYz1cIi9hc3NldHMvaW1hZ2VzL3Rva2Vucy9tYXJrZXJfc2NvcmVfYmx1ZS5wbmdcIiBhbHQ9XCJTdWNjZXNzXCIgZmlsbCBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpbiBkcm9wLXNoYWRvdy1sZ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXN1bHQgPT09IGZhbHNlICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbD17eyBzY2FsZTogMCB9fSBhbmltYXRlPXt7IHNjYWxlOiAxIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCB6LTIwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctWzgwJV0gaC1bODAlXSByZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2Ugc3JjPVwiL2Fzc2V0cy9pbWFnZXMvdG9rZW5zL21hcmtlcl9zY29yZV9yZWQucG5nXCIgYWx0PVwiRmFpbFwiIGZpbGwgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW4gZHJvcC1zaGFkb3ctbGdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENBUlRBIERFIE1JU0nDk04gQ09OIFTDjVRVTE8gKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17YC9hc3NldHMvaW1hZ2VzL21pc3Npb25zL21pc3Npb24ke2dhbWVTdGF0ZS5jdXJyZW50Um91bmR9LnBuZ2B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9e2BNaXNzaW9uICR7Z2FtZVN0YXRlLmN1cnJlbnRSb3VuZH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogVMOtdHVsbyB5IHN1YnTDrXR1bG8gc29icmUgbGEgY2FydGEgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLTQgbGVmdC0wIHJpZ2h0LTAgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgei0xMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQtNHhsIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIGRyb3Atc2hhZG93LVswXzRweF84cHhfcmdiYSgwLDAsMCwwLjgpXSBtYi0yIHVwcGVyY2FzZSB0cmFja2luZy13aWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pc2nDs24ge2dhbWVTdGF0ZS5jdXJyZW50Um91bmR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtMnhsIGZvbnQtc2VtaWJvbGQgdGV4dC15ZWxsb3ctNDAwIGRyb3Atc2hhZG93LVswXzRweF84cHhfcmdiYSgwLDAsMCwwLjgpXSB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttaXNzaW9uTmFtZXNbZ2FtZVN0YXRlLmN1cnJlbnRSb3VuZCAtIDFdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgey8qIC0tLSDDgVJFQSBERSBKVUVHTyAoQ0FSVEFTIFkgQUNDSU9ORVMpIC0tLSAqL31cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSB3LWZ1bGwgbWF4LXctNnhsIHJlbGF0aXZlIG10LTQgcHgtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8QW5pbWF0ZVByZXNlbmNlIG1vZGU9XCJ3YWl0XCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBGQVNFOiBWT1RBQ0nDk04gREUgTMONREVSICovfVxuICAgICAgICAgICAgICAgICAgICAgICAge2dhbWVTdGF0ZS5waGFzZSA9PT0gJ3ZvdGVfbGVhZGVyJyBhcyBhbnkgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1cInZvdGUtbGVhZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwLCBzY2FsZTogMC45IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgc2NhbGU6IDEgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgZ2FwLTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1ibGFjay84MCBwLTQgcm91bmRlZCB0ZXh0LXdoaXRlIHRleHQtY2VudGVyIGJvcmRlciBib3JkZXIteWVsbG93LTUwMC81MCByZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQteGwgZm9udC1tb25vIG1iLTIgdGV4dC15ZWxsb3ctNTAwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maXJtYXIgTMOtZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIMK/QWNlcHRhcyBhIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteWVsbG93LTQwMFwiPntnYW1lU3RhdGUucGxheWVycy5maW5kKHAgPT4gcC5pZCA9PT0gZ2FtZVN0YXRlLmN1cnJlbnRMZWFkZXJJZCk/Lm5hbWV9PC9zcGFuPiBjb21vIEzDrWRlcj9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogVGltZXIgdmlzdWFsIChzb2xvIG11ZXN0cmEgZWwgdGllbXBvLCBlbCBzZXJ2aWRvciBjb250cm9sYSBlbCB0aW1lb3V0KSAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHshZ2FtZVN0YXRlLmxlYWRlclZvdGVzPy5bY3VycmVudFBsYXllcklkXSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZvdGluZ1RpbWVyIGtleT17Z2FtZVN0YXRlLmN1cnJlbnRMZWFkZXJJZH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtnYW1lU3RhdGUubGVhZGVyVm90ZXM/LltjdXJyZW50UGxheWVySWRdID09PSB1bmRlZmluZWQgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZ2FwLThcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG9uQ2xpY2s9eygpID0+IGFjdGlvbnMudm90ZUxlYWRlcih0cnVlKX0gY2xhc3NOYW1lPVwiZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMyIGgtMzIgYmctd2hpdGUgcm91bmRlZC1sZyBzaGFkb3cteGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYm9yZGVyLTQgYm9yZGVyLXRyYW5zcGFyZW50IGdyb3VwLWhvdmVyOmJvcmRlci1ncmVlbi01MDAgdHJhbnNpdGlvbi1hbGwgdHJhbnNmb3JtIGdyb3VwLWhvdmVyOi10cmFuc2xhdGUteS00IHJlbGF0aXZlIG92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlIHNyYz1cIi9hc3NldHMvaW1hZ2VzL3Rva2Vucy9hY2NlcHRfbGVhZGVyLnBuZ1wiIGFsdD1cIkFjY2VwdCBMZWFkZXJcIiBmaWxsIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImJsb2NrIHRleHQtY2VudGVyIHRleHQtd2hpdGUgbXQtMiBmb250LWJvbGQgYmctZ3JlZW4tNjAwIHB4LTIgcm91bmRlZCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0XCI+QUNFUFRBUjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG9uQ2xpY2s9eygpID0+IGFjdGlvbnMudm90ZUxlYWRlcihmYWxzZSl9IGNsYXNzTmFtZT1cImdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zMiBoLTMyIGJnLXdoaXRlIHJvdW5kZWQtbGcgc2hhZG93LXhsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJvcmRlci00IGJvcmRlci10cmFuc3BhcmVudCBncm91cC1ob3Zlcjpib3JkZXItcmVkLTUwMCB0cmFuc2l0aW9uLWFsbCB0cmFuc2Zvcm0gZ3JvdXAtaG92ZXI6LXRyYW5zbGF0ZS15LTQgcmVsYXRpdmUgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2Ugc3JjPVwiL2Fzc2V0cy9pbWFnZXMvdG9rZW5zL2RlbnlfbGVhZGVyLnBuZ1wiIGFsdD1cIkRlbnkgTGVhZGVyXCIgZmlsbCBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJibG9jayB0ZXh0LWNlbnRlciB0ZXh0LXdoaXRlIG10LTIgZm9udC1ib2xkIGJnLXJlZC02MDAgcHgtMiByb3VuZGVkIHVwcGVyY2FzZSB0cmFja2luZy13aWRlc3RcIj5SRUNIQVpBUjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlIHRleHQteGwgZm9udC1tb25vIGFuaW1hdGUtcHVsc2UgYmctYmxhY2svNTAgcHgtNiBweS0zIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLXdoaXRlLzIwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVk9UTyBSRUdJU1RSQURPLiBFU1BFUkFORE8gQUwgUkVTVE8uLi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBGQVNFOiBDT05TVFJVQ0NJw5NOIERFIEVRVUlQTyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgIHtnYW1lU3RhdGUucGhhc2UgPT09IEdhbWVQaGFzZS5URUFNX0JVSUxESU5HICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9XCJ0ZWFtLWJ1aWxkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwLCB5OiAyMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCB5OiAtMjAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgZ2FwLTYgdy1mdWxsIG1heC13LTR4bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogSW5mb3JtYWNpw7NuIGRlbCBsw61kZXIgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBJbmZvcm1hY2nDs24gZGVsIGzDrWRlciAtIFNPTE8gcGFyYSBOTyBsw61kZXJlcyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyFpc0xlYWRlciAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXllbGxvdy02MDAvOTAgdGV4dC1ibGFjayBwLTIgcm91bmRlZC1sZyBzaGFkb3cteGwgYm9yZGVyLTQgYm9yZGVyLXllbGxvdy00MDAgdy1mdWxsIHRleHQtY2VudGVyIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVyIGZvbnQtYm9sZFwiPkzDrWRlciBBY3R1YWw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14bCBmb250LWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Z2FtZVN0YXRlLnBsYXllcnMuZmluZChwID0+IHAuaWQgPT09IGdhbWVTdGF0ZS5jdXJyZW50TGVhZGVySWQpPy5uYW1lIHx8ICdEZXNjb25vY2lkbyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogTWVuc2FqZSBwYXJhIGVsIGzDrWRlciBvIHBhcmEgbG9zIGRlbcOhcyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIE1lbnNhamUgcGFyYSBlbCBsw61kZXIgbyBwYXJhIGxvcyBkZW3DoXMgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctcGFwZXItYmcgdGV4dC1ibGFjayBwLTQgbWQ6cC02IHJvdW5kZWQgc2hhZG93LTJ4bCB3LWZ1bGwgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LXhsIG1kOnRleHQtMnhsIGZvbnQtYm9sZCBmb250LW1vbm8gbWItMiB1cHBlcmNhc2UgdGV4dC1yZXNpc3RhbmNlLWJsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXNMZWFkZXIgPyAn8J+OryBUVSBUVVJOTzogRUxJR0UgVFUgRVFVSVBPJyA6ICfij7MgRVNQRVJBTkRPIEFMIEzDjURFUi4uLid9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lzTGVhZGVyICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtYi00IGZvbnQtc2VyaWYgaXRhbGljIHRleHQtZ3JheS03MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2UgbmVjZXNpdGFuIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtYm9sZCB0ZXh0LXJlZC03MDAgdGV4dC14bFwiPntjdXJyZW50UXVlc3RTaXplfSBhZ2VudGVzPC9zcGFuPiBwYXJhIGxhIG1pc2nDs24gI3tnYW1lU3RhdGUuY3VycmVudFJvdW5kfS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogQ29udGFkb3IgZGUgc2VsZWNjaW9uYWRvcyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xlYWRlciAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi00IHRleHQtbGcgZm9udC1ib2xkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjY2lvbmFkb3M6IDxzcGFuIGNsYXNzTmFtZT17c2VsZWN0ZWRUZWFtLmxlbmd0aCA9PT0gY3VycmVudFF1ZXN0U2l6ZSA/ICd0ZXh0LWdyZWVuLTYwMCcgOiAndGV4dC1vcmFuZ2UtNjAwJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0ZWRUZWFtLmxlbmd0aH0gLyB7Y3VycmVudFF1ZXN0U2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lzTGVhZGVyICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGFjdGlvbnMucHJvcG9zZVRlYW0oc2VsZWN0ZWRUZWFtKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3NlbGVjdGVkVGVhbS5sZW5ndGggIT09IGN1cnJlbnRRdWVzdFNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBiZy1yZXNpc3RhbmNlLWJsdWUgdGV4dC13aGl0ZSBmb250LWJvbGQgcHktMyBweC00IHJvdW5kZWQgaG92ZXI6YmctYmx1ZS05MDAgdHJhbnNpdGlvbi1jb2xvcnMgZGlzYWJsZWQ6b3BhY2l0eS01MCBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVzdCBzaGFkb3ctbGdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkVGVhbS5sZW5ndGggPT09IGN1cnJlbnRRdWVzdFNpemUgPyAn4pyTIENPTkZJUk1BUiBFUVVJUE8nIDogYFNlbGVjY2lvbmEgJHtjdXJyZW50UXVlc3RTaXplIC0gc2VsZWN0ZWRUZWFtLmxlbmd0aH0gbcOhc2B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IWlzTGVhZGVyICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtZ3JheS02MDAgYW5pbWF0ZS1wdWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbCBsw61kZXIgZXN0w6Egc2VsZWNjaW9uYW5kbyBlbCBlcXVpcG8gZGUgbWlzacOzbi4uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgey8qIEZBU0U6IFZPVEFDScOTTiBERSBFUVVJUE8gKi99XG4gICAgICAgICAgICAgICAgICAgICAgICB7Z2FtZVN0YXRlLnBoYXNlID09PSBHYW1lUGhhc2UuVk9USU5HX1RFQU0gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1cInZvdGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWw9e3sgc2NhbGU6IDAuOCwgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlPXt7IHNjYWxlOiAxLCBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC02XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctYmxhY2svODAgcC00IHJvdW5kZWQgdGV4dC13aGl0ZSB0ZXh0LWNlbnRlciBib3JkZXIgYm9yZGVyLXdoaXRlLzIwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC14bCBmb250LW1vbm8gbWItMiB0ZXh0LXllbGxvdy01MDBcIj5QUk9QVUVTVEEgREUgTUlTScOTTjwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZ2FwLTIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Z2FtZVN0YXRlLnByb3Bvc2VkVGVhbS5tYXAoaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwID0gZ2FtZVN0YXRlLnBsYXllcnMuZmluZChwbCA9PiBwbC5pZCA9PT0gaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2lkfSBjbGFzc05hbWU9XCJiZy13aGl0ZS8xMCBweC0zIHB5LTEgcm91bmRlZCB0ZXh0LXNtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3A/Lm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Z2FtZVN0YXRlLnRlYW1Wb3Rlc1tjdXJyZW50UGxheWVySWRdID09PSB1bmRlZmluZWQgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZ2FwLThcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG9uQ2xpY2s9eygpID0+IGFjdGlvbnMudm90ZVRlYW0odHJ1ZSl9IGNsYXNzTmFtZT1cImdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zMiBoLTQ4IGJnLXdoaXRlIHJvdW5kZWQtbGcgc2hhZG93LXhsIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJvcmRlci0yIGJvcmRlci1ibHVlLTUwMCBncm91cC1ob3Zlcjpib3JkZXItYmx1ZS00MDAgZ3JvdXAtaG92ZXI6c2hhZG93LWJsdWUtNTAwLzUwIHRyYW5zaXRpb24tYWxsIHRyYW5zZm9ybSBncm91cC1ob3ZlcjotdHJhbnNsYXRlLXktNCByZWxhdGl2ZSBvdmVyZmxvdy1oaWRkZW4gcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWJsdWUtNjAwIGZvbnQtYm9sZCB0ZXh0LXNtIHVwcGVyY2FzZSB0cmFja2luZy13aWRlciBtYi0xIHotMTBcIj7DiXhpdG88L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHctZnVsbCBoLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2Ugc3JjPVwiL2Fzc2V0cy9pbWFnZXMvdG9rZW5zL3ZvdGVfYXBwcm92ZS5wbmdcIiBhbHQ9XCJBcHByb3ZlXCIgZmlsbCBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBhY3Rpb25zLnZvdGVUZWFtKGZhbHNlKX0gY2xhc3NOYW1lPVwiZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMyIGgtNDggYmctd2hpdGUgcm91bmRlZC1sZyBzaGFkb3cteGwgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYm9yZGVyLTIgYm9yZGVyLXJlZC01MDAgZ3JvdXAtaG92ZXI6Ym9yZGVyLXJlZC00MDAgZ3JvdXAtaG92ZXI6c2hhZG93LXJlZC01MDAvNTAgdHJhbnNpdGlvbi1hbGwgdHJhbnNmb3JtIGdyb3VwLWhvdmVyOi10cmFuc2xhdGUteS00IHJlbGF0aXZlIG92ZXJmbG93LWhpZGRlbiBwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtcmVkLTYwMCBmb250LWJvbGQgdGV4dC1zbSB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXIgbWItMSB6LTEwXCI+RnJhY2Fzbzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgdy1mdWxsIGgtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZSBzcmM9XCIvYXNzZXRzL2ltYWdlcy90b2tlbnMvdm90ZV9yZWplY3QucG5nXCIgYWx0PVwiUmVqZWN0XCIgZmlsbCBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC13aGl0ZSB0ZXh0LXhsIGZvbnQtbW9ubyBhbmltYXRlLXB1bHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVk9UTyBSRUdJU1RSQURPLiBFU1BFUkFORE8gQUwgUkVTVE8uLi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBGQVNFOiBNSVNJw5NOICovfVxuICAgICAgICAgICAgICAgICAgICAgICAge2dhbWVTdGF0ZS5waGFzZSA9PT0gR2FtZVBoYXNlLk1JU1NJT04gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1cIm1pc3Npb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmaXhlZCBpbnNldC0wIGZsZXggaXRlbXMtc3RhcnQganVzdGlmeS1jZW50ZXIgYmctYmxhY2svOTAgei01MCBwdC0yMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtnYW1lU3RhdGUucHJvcG9zZWRUZWFtLmluY2x1ZGVzKGN1cnJlbnRQbGF5ZXJJZCkgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC00IHctZnVsbCBtYXgtdy02eGwgcHgtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LTR4bCBtZDp0ZXh0LTV4bCBmb250LWJvbGQgdGV4dC13aGl0ZSBtYi0yIGRyb3Atc2hhZG93LTJ4bCB0ZXh0LWNlbnRlciB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXIgYW5pbWF0ZS1wdWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDwn46vIFJFQUxJWkEgTEEgTUlTScOTTlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC13aGl0ZSB0ZXh0LXhsIG1iLTIgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxpZ2Ugc2kgcXVpZXJlcyB1biDDqXhpdG8gbyB1biBmcmFjYXNvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIENhcnRhcyBlbiBvcmRlbiBhbGVhdG9yaW8gKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0xMiBmbGV4LXdyYXAganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NhcmRPcmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIENhcnRhIGRlIMOJeGl0byBwcmltZXJvICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlTWlzc2lvblZvdGUodHJ1ZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGdyb3VwIHRyYW5zaXRpb24tb3BhY2l0eSAke21pc3Npb25Wb3RlID09PSB0cnVlID8gJ29wYWNpdHktMTAwJyA6ICdvcGFjaXR5LTUwJ31gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17bWlzc2lvblZvdGUgIT09IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy0zMiBoLTQ4IGJnLWdyYWRpZW50LXRvLWJyIGZyb20tYmx1ZS02MDAgdG8tYmx1ZS05MDAgcm91bmRlZC0yeGwgc2hhZG93LTJ4bCBib3JkZXItNCBib3JkZXItYmx1ZS00MDAgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC00IHRyYW5zZm9ybSB0cmFuc2l0aW9uLWFsbCBob3ZlcjpzY2FsZS0xMTAgaG92ZXI6cm90YXRlLTMgaG92ZXI6c2hhZG93LWJsdWUtNTAwLzUwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlSG92ZXI9e3sgc2NhbGU6IDEuMSwgcm90YXRlOiAzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZVRhcD17eyBzY2FsZTogMC45NSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2Ugc3JjPVwiL2Fzc2V0cy9pbWFnZXMvdG9rZW5zL3ZvdGVfYXBwcm92ZS5wbmdcIiBhbHQ9XCJTdWNjZXNzXCIgd2lkdGg9ezgwfSBoZWlnaHQ9ezgwfSBjbGFzc05hbWU9XCJkcm9wLXNoYWRvdy0yeGxcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibXQtMiB0ZXh0LXdoaXRlIGZvbnQtYm9sZCB0ZXh0LWxnIHRyYWNraW5nLXdpZGVzdCB1cHBlcmNhc2VcIj7DiVhJVE88L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBDYXJ0YSBkZSBTYWJvdGFqZSBzZWd1bmRvIChzb2xvIHBhcmEgYWxlbWFuZXMpICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjdXJyZW50UGxheWVyPy5mYWN0aW9uID09PSBGYWN0aW9uLkFMRU1BTkVTICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlTWlzc2lvblZvdGUoZmFsc2UpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgZ3JvdXAgdHJhbnNpdGlvbi1vcGFjaXR5ICR7bWlzc2lvblZvdGUgPT09IGZhbHNlID8gJ29wYWNpdHktMTAwJyA6ICdvcGFjaXR5LTUwJ31gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e21pc3Npb25Wb3RlICE9PSBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctMzIgaC00OCBiZy1ncmFkaWVudC10by1iciBmcm9tLXJlZC02MDAgdG8tcmVkLTkwMCByb3VuZGVkLTJ4bCBzaGFkb3ctMnhsIGJvcmRlci00IGJvcmRlci1yZWQtNDAwIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHAtNCB0cmFuc2Zvcm0gdHJhbnNpdGlvbi1hbGwgaG92ZXI6c2NhbGUtMTEwIGhvdmVyOi1yb3RhdGUtMyBob3ZlcjpzaGFkb3ctcmVkLTUwMC81MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGVIb3Zlcj17eyBzY2FsZTogMS4xLCByb3RhdGU6IC0zIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGVUYXA9e3sgc2NhbGU6IDAuOTUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2Ugc3JjPVwiL2Fzc2V0cy9pbWFnZXMvdG9rZW5zL3ZvdGVfcmVqZWN0LnBuZ1wiIGFsdD1cIkZhaWxcIiB3aWR0aD17ODB9IGhlaWdodD17ODB9IGNsYXNzTmFtZT1cImRyb3Atc2hhZG93LTJ4bFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibXQtMiB0ZXh0LXdoaXRlIGZvbnQtYm9sZCB0ZXh0LWxnIHRyYWNraW5nLXdpZGVzdCB1cHBlcmNhc2VcIj5TQUJPVEFKRTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogQ2FydGEgZGUgU2Fib3RhamUgcHJpbWVybyAoc29sbyBwYXJhIGFsZW1hbmVzKSAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y3VycmVudFBsYXllcj8uZmFjdGlvbiA9PT0gRmFjdGlvbi5BTEVNQU5FUyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZU1pc3Npb25Wb3RlKGZhbHNlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGdyb3VwIHRyYW5zaXRpb24tb3BhY2l0eSAke21pc3Npb25Wb3RlID09PSBmYWxzZSA/ICdvcGFjaXR5LTEwMCcgOiAnb3BhY2l0eS01MCd9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXttaXNzaW9uVm90ZSAhPT0gbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTMyIGgtNDggYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1yZWQtNjAwIHRvLXJlZC05MDAgcm91bmRlZC0yeGwgc2hhZG93LTJ4bCBib3JkZXItNCBib3JkZXItcmVkLTQwMCBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBwLTQgdHJhbnNmb3JtIHRyYW5zaXRpb24tYWxsIGhvdmVyOnNjYWxlLTExMCBob3Zlcjotcm90YXRlLTMgaG92ZXI6c2hhZG93LXJlZC01MDAvNTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlSG92ZXI9e3sgc2NhbGU6IDEuMSwgcm90YXRlOiAtMyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlVGFwPXt7IHNjYWxlOiAwLjk1IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlIHNyYz1cIi9hc3NldHMvaW1hZ2VzL3Rva2Vucy92b3RlX3JlamVjdC5wbmdcIiBhbHQ9XCJGYWlsXCIgd2lkdGg9ezgwfSBoZWlnaHQ9ezgwfSBjbGFzc05hbWU9XCJkcm9wLXNoYWRvdy0yeGxcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm10LTIgdGV4dC13aGl0ZSBmb250LWJvbGQgdGV4dC1sZyB0cmFja2luZy13aWRlc3QgdXBwZXJjYXNlXCI+U0FCT1RBSkU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogQ2FydGEgZGUgw4l4aXRvIHNlZ3VuZG8gKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVNaXNzaW9uVm90ZSh0cnVlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgZ3JvdXAgdHJhbnNpdGlvbi1vcGFjaXR5ICR7bWlzc2lvblZvdGUgPT09IHRydWUgPyAnb3BhY2l0eS0xMDAnIDogJ29wYWNpdHktNTAnfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXttaXNzaW9uVm90ZSAhPT0gbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTMyIGgtNDggYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1ibHVlLTYwMCB0by1ibHVlLTkwMCByb3VuZGVkLTJ4bCBzaGFkb3ctMnhsIGJvcmRlci00IGJvcmRlci1ibHVlLTQwMCBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBwLTQgdHJhbnNmb3JtIHRyYW5zaXRpb24tYWxsIGhvdmVyOnNjYWxlLTExMCBob3Zlcjpyb3RhdGUtMyBob3ZlcjpzaGFkb3ctYmx1ZS01MDAvNTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGVIb3Zlcj17eyBzY2FsZTogMS4xLCByb3RhdGU6IDMgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlVGFwPXt7IHNjYWxlOiAwLjk1IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZSBzcmM9XCIvYXNzZXRzL2ltYWdlcy90b2tlbnMvdm90ZV9hcHByb3ZlLnBuZ1wiIGFsdD1cIlN1Y2Nlc3NcIiB3aWR0aD17ODB9IGhlaWdodD17ODB9IGNsYXNzTmFtZT1cImRyb3Atc2hhZG93LTJ4bFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtdC0yIHRleHQtd2hpdGUgZm9udC1ib2xkIHRleHQtbGcgdHJhY2tpbmctd2lkZXN0IHVwcGVyY2FzZVwiPsOJWElUTzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC13aGl0ZSB0ZXh0LTN4bCBmb250LW1vbm8gYmctYmxhY2svNzAgcC04IHJvdW5kZWQteGwgYm9yZGVyLTIgYm9yZGVyLXdoaXRlLzIwIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhbmltYXRlLXB1bHNlIG1iLTQgdGV4dC01eGxcIj7ij7M8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYSBtaXNpw7NuIGVzdMOhIGVuIGN1cnNvLi4uPGJyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1sZyB0ZXh0LWdyYXktNDAwIG10LTIgYmxvY2tcIj5Fc3BlcmFuZG8gYSBxdWUgZWwgZXF1aXBvIGNvbXBsZXRlIHN1IHZvdGFjacOzbi48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7LyogRkFTRTogUkVWRUxBQ0nDk04gREUgQ0FSVEFTICovfVxuICAgICAgICAgICAgICAgICAgICAgICAge2dhbWVTdGF0ZS5waGFzZSA9PT0gJ21pc3Npb25fcmV2ZWFsJyBhcyBhbnkgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxNaXNzaW9uUmV2ZWFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvdGVzPXtnYW1lU3RhdGUucmV2ZWFsZWRWb3RlcyB8fCBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25GaW5pc2hlZD17KCkgPT4gYWN0aW9ucy5maW5pc2hNaXNzaW9uUmV2ZWFsKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBGQVNFOiBSRVNVTFRBRE8gREUgTUlTScOTTiAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgIHtnYW1lU3RhdGUucGhhc2UgPT09ICdtaXNzaW9uX3Jlc3VsdCcgYXMgYW55ICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TWlzc2lvblJlc3VsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYW1lU3RhdGU9e2dhbWVTdGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNIb3N0PXtpc0hvc3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ29udGludWU9eygpID0+IGlzSG9zdCAmJiBhY3Rpb25zLmZpbmlzaE1pc3Npb25SZXN1bHQoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgey8qIEZBU0U6IEFTRVNJTk8gKEZSQU5DT1RJUkFET1IpICovfVxuICAgICAgICAgICAgICAgICAgICAgICAge2dhbWVTdGF0ZS5waGFzZSA9PT0gR2FtZVBoYXNlLkFTU0FTU0lOX1BIQVNFICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgZ2FwLTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHk6IDIwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgeTogMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRQbGF5ZXI/LnJvbGUgPT09ICdmcmFuY290aXJhZG9yJyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTIgbWQ6Z3JpZC1jb2xzLTMgbGc6Z3JpZC1jb2xzLTQgZ2FwLTQgbWF4LXctNHhsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2dhbWVTdGF0ZS5wbGF5ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIocCA9PiBwLmZhY3Rpb24gPT09IEZhY3Rpb24uQUxJQURPUykgLy8gU29sbyBqdWdhZG9yZXMgQWxpYWRvc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKHBsYXllciA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bW90aW9uLmJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17cGxheWVyLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGFjdGlvbnMuYXNzYXNzaW5LaWxsKHBsYXllci5pZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctYmxhY2svNjAgaG92ZXI6YmctcmVkLTYwMC83MCBib3JkZXItMiBib3JkZXItd2hpdGUvMzAgaG92ZXI6Ym9yZGVyLXJlZC01MDAgcC0zIHJvdW5kZWQtbGcgdHJhbnNpdGlvbi1hbGwgYmFja2Ryb3AtYmx1ci1zbSBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGVIb3Zlcj17eyBzY2FsZTogMS4wNSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlVGFwPXt7IHNjYWxlOiAwLjk1IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTIwIGgtMjAgcm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci13aGl0ZS81MCBvdmVyZmxvdy1oaWRkZW4gYmctYmxhY2sgcmVsYXRpdmUgc2hhZG93LXhsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtgL2Fzc2V0cy9pbWFnZXMvY2hhcmFjdGVycy8ke3BsYXllci5hdmF0YXJ9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD17cGxheWVyLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY292ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtd2hpdGUgZm9udC1ib2xkIHRleHQtc20gZHJvcC1zaGFkb3ctWzBfMnB4XzRweF9yZ2JhKDAsMCwwLDAuOCldXCI+e3BsYXllci5uYW1lfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbW90aW9uLmJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y3VycmVudFBsYXllcj8ucm9sZSAhPT0gJ2ZyYW5jb3RpcmFkb3InICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC13aGl0ZSB0ZXh0LXhsIGZvbnQtbW9ubyBiZy1ibGFjay81MCBweC02IHB5LTMgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItd2hpdGUvMjAgYW5pbWF0ZS1wdWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsIEZyYW5jb3RpcmFkb3IgZXN0w6EgZGVjaWRpZW5kby4uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgey8qIEZBU0U6IFZJQ1RPUklBIE5BWklTICovfVxuICAgICAgICAgICAgICAgICAgICAgICAge2dhbWVTdGF0ZS5waGFzZSA9PT0gR2FtZVBoYXNlLk5BWklTX1dJTiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpY3RvcnlTY3JlZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FtZVN0YXRlPXtnYW1lU3RhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzSG9zdD17aXNIb3N0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlc3RhcnQ9eygpID0+IGFjdGlvbnMucmVzdGFydEdhbWUoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25GaW5hbGl6ZT17KCkgPT4gYWN0aW9ucy5maW5hbGl6ZUdhbWUoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgey8qIEZBU0U6IFZJQ1RPUklBIEFMSUFET1MgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICB7Z2FtZVN0YXRlLnBoYXNlID09PSBHYW1lUGhhc2UuQUxMSUVEX1dJTiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpY3RvcnlTY3JlZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FtZVN0YXRlPXtnYW1lU3RhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzSG9zdD17aXNIb3N0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlc3RhcnQ9eygpID0+IGFjdGlvbnMucmVzdGFydEdhbWUoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25GaW5hbGl6ZT17KCkgPT4gYWN0aW9ucy5maW5hbGl6ZUdhbWUoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICA8L0FuaW1hdGVQcmVzZW5jZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIHsvKiBKVUdBRE9SRVMgLSBQT1NJQ0lPTkFET1MgQUJTT0xVVEFNRU5URSBFTiBFTCBGT05ETyAqL31cbiAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmaXhlZCBib3R0b20tMCBsZWZ0LTAgcmlnaHQtMCB6LTUwIGJnLWJsYWNrLzgwIGJvcmRlci10IGJvcmRlci13aGl0ZS8xMCBiYWNrZHJvcC1ibHVyLW1kXCJcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgIGFuaW1hdGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHk6IGlzUGxheWVyc0NvbGxhcHNlZCA/ICcxMDAlJyA6ICcwJSdcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbj17eyB0eXBlOiBcInNwcmluZ1wiLCBzdGlmZm5lc3M6IDMwMCwgZGFtcGluZzogMzAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHsvKiBCb3TDs24gZGUgY29sYXBzby9leHBhbnNpw7NuICovfVxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIC10b3AtMTAgbGVmdC0xLzIgdHJhbnNmb3JtIC10cmFuc2xhdGUteC0xLzJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc1BsYXllcnNDb2xsYXBzZWQoIWlzUGxheWVyc0NvbGxhcHNlZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctZ3JhZGllbnQtdG8tYiBmcm9tLXllbGxvdy02MDAgdG8teWVsbG93LTcwMCBob3Zlcjpmcm9tLXllbGxvdy01MDAgaG92ZXI6dG8teWVsbG93LTYwMCB0ZXh0LXdoaXRlIHJvdW5kZWQtdC1sZyBweC02IHB5LTIgc2hhZG93LWxnIGJvcmRlci0yIGJvcmRlci15ZWxsb3ctNTAwIGJvcmRlci1iLTAgdHJhbnNpdGlvbi1hbGwgaG92ZXI6c2hhZG93LXllbGxvdy01MDAvNTAgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtb3Rpb24uc3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTUgdy01XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZT17eyByb3RhdGU6IGlzUGxheWVyc0NvbGxhcHNlZCA/IDE4MCA6IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4zIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezN9IGQ9XCJNMTkgOWwtNyA3LTctN1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tb3Rpb24uc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1ib2xkIHVwcGVyY2FzZSB0cmFja2luZy13aWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXNQbGF5ZXJzQ29sbGFwc2VkID8gJ01vc3RyYXInIDogJ09jdWx0YXInfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBweC00IHB5LTIgZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Z2FtZVN0YXRlLnBsYXllcnMubWFwKChwbGF5ZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkID0gc2VsZWN0ZWRUZWFtLmluY2x1ZGVzKHBsYXllci5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNNZSA9IHBsYXllci5pZCA9PT0gY3VycmVudFBsYXllcklkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXZhdGFyIGxvZ2ljXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXZhdGFyU3JjID0gYC9hc3NldHMvaW1hZ2VzL2NoYXJhY3RlcnMvJHtwbGF5ZXIuYXZhdGFyfWA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3BsYXllci5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGlzTGVhZGVyICYmIGdhbWVTdGF0ZS5waGFzZSA9PT0gR2FtZVBoYXNlLlRFQU1fQlVJTERJTkcgJiYgdG9nZ2xlVGVhbVNlbGVjdGlvbihwbGF5ZXIuaWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZSBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlciB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgZ3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aXNTZWxlY3RlZCA/ICdzY2FsZS0xMTAgei0xMCcgOiAnc2NhbGUtMTAwIG9wYWNpdHktNzAgaG92ZXI6b3BhY2l0eS0xMDAgaG92ZXI6c2NhbGUtMTA1J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIEF2YXRhciAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgcm91bmRlZC1mdWxsIGJvcmRlci0yIG92ZXJmbG93LWhpZGRlbiBzaGFkb3ctbGcgYmctYmxhY2sgdHJhbnNpdGlvbi1hbGwgdy0xNiBoLTE2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpc1NlbGVjdGVkID8gJ2JvcmRlci15ZWxsb3ctNDAwIHJpbmctNCByaW5nLXllbGxvdy00MDAvMzAgc2hhZG93LXllbGxvdy00MDAvMjAnIDogJ2JvcmRlci1ncmF5LTUwMCBncm91cC1ob3Zlcjpib3JkZXItZ3JheS0zMDAnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7Z2FtZVN0YXRlLmN1cnJlbnRMZWFkZXJJZCA9PT0gcGxheWVyLmlkID8gJ3JpbmctMiByaW5nLXdoaXRlJyA6ICcnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17YXZhdGFyU3JjfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9e3BsYXllci5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb3ZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBJY29ubyBkZSBMw61kZXIgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2dhbWVTdGF0ZS5jdXJyZW50TGVhZGVySWQgPT09IHBsYXllci5pZCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTAgcmlnaHQtMCBiZy15ZWxsb3ctNTAwIHJvdW5kZWQtZnVsbCBwLTEgdy02IGgtNiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LVsxMHB4XSB0ZXh0LWJsYWNrIGZvbnQtYm9sZCBib3JkZXIgYm9yZGVyLXdoaXRlIHotMjAgc2hhZG93LXNtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogSWNvbm8gZGUgTWllbWJybyBkZWwgRXF1aXBvIGRlIE1pc2nDs24gKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2dhbWVTdGF0ZS5wcm9wb3NlZFRlYW0uaW5jbHVkZXMocGxheWVyLmlkKSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhbWVTdGF0ZS5waGFzZSA9PT0gR2FtZVBoYXNlLlZPVElOR19URUFNIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhbWVTdGF0ZS5waGFzZSA9PT0gR2FtZVBoYXNlLk1JU1NJT04gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FtZVN0YXRlLnBoYXNlID09PSAnbWlzc2lvbl9yZXZlYWwnIGFzIGFueSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYW1lU3RhdGUucGhhc2UgPT09ICdtaXNzaW9uX3Jlc3VsdCcgYXMgYW55XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0wIGxlZnQtMCBiZy1ncmVlbi01MDAgcm91bmRlZC1mdWxsIHAtMSB3LTYgaC02IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQteHMgdGV4dC13aGl0ZSBmb250LWJvbGQgYm9yZGVyIGJvcmRlci13aGl0ZSB6LTIwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4q2QXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogTm9tYnJlICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdC0xIHRleHQteHMgZm9udC1tb25vIHB4LTIgcHktMC41IHJvdW5kZWQgc2hhZG93LXNtIHdoaXRlc3BhY2Utbm93cmFwIG1heC13LVsxMDBweF0gdHJ1bmNhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aXNNZSA/ICdiZy1ibHVlLTYwMCB0ZXh0LXdoaXRlIGZvbnQtYm9sZCcgOiAnYmctYmxhY2svNjAgdGV4dC1ncmF5LTMwMCBib3JkZXIgYm9yZGVyLXdoaXRlLzEwJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3BsYXllci5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cblxuICAgICAgICAgICAgICAgIHsvKiBISVNUw5NSSUNPIERFIE1JU0lPTkVTIChFc3F1aW5hIHN1cGVyaW9yIGRlcmVjaGEpICovfVxuICAgICAgICAgICAgICAgIHtnYW1lU3RhdGUubWlzc2lvbkhpc3RvcnkubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmaXhlZCB0b3AtWzYwcHhdIHJpZ2h0LTAgei01MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBpc0hpc3RvcnlDb2xsYXBzZWQgPyAnMCUnIDogJzAlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgdHlwZTogXCJzcHJpbmdcIiwgc3RpZmZuZXNzOiAzMDAsIGRhbXBpbmc6IDMwIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBCb3TDs24gZGUgY29sYXBzby9leHBhbnNpw7NuICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgPG1vdGlvbi5idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0hpc3RvcnlDb2xsYXBzZWQoIWlzSGlzdG9yeUNvbGxhcHNlZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLTAgYmctZ3JhZGllbnQtdG8tbCBmcm9tLXllbGxvdy02MDAgdG8teWVsbG93LTcwMCBob3Zlcjpmcm9tLXllbGxvdy01MDAgaG92ZXI6dG8teWVsbG93LTYwMCB0ZXh0LXdoaXRlIHJvdW5kZWQtbC1sZyBweC0yIHB5LTMgc2hhZG93LWxnIGJvcmRlci0yIGJvcmRlci15ZWxsb3ctNTAwIGJvcmRlci1yLTAgdHJhbnNpdGlvbi1hbGwgaG92ZXI6c2hhZG93LXllbGxvdy01MDAvNTAgZmxleCBpdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IGlzSGlzdG9yeUNvbGxhcHNlZCA/ICcwcHgnIDogJzEwMCUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IHR5cGU6IFwic3ByaW5nXCIsIHN0aWZmbmVzczogMzAwLCBkYW1waW5nOiAzMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtb3Rpb24uc3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTQgdy00XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZT17eyByb3RhdGU6IGlzSGlzdG9yeUNvbGxhcHNlZCA/IDAgOiAxODAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4zIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezN9IGQ9XCJNMTUgMTlsLTctNyA3LTdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbW90aW9uLnN2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbW90aW9uLmJ1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgey8qIFBhbmVsIGRlbCBoaXN0b3JpYWwgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLWJsYWNrLzgwIHAtMyByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItd2hpdGUvMjAgYmFja2Ryb3AtYmx1ci1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBpc0hpc3RvcnlDb2xsYXBzZWQgPyAnMTAwJScgOiAnMCUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IHR5cGU6IFwic3ByaW5nXCIsIHN0aWZmbmVzczogMzAwLCBkYW1waW5nOiAzMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1bMTBweF0gdGV4dC1ncmF5LTQwMCB1cHBlcmNhc2UgbWItMiB0ZXh0LWNlbnRlciBmb250LWJvbGQgdHJhY2tpbmctd2lkZXJcIj5IaXN0b3JpYWw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2dhbWVTdGF0ZS5taXNzaW9uSGlzdG9yeS5tYXAoKG1pc3Npb24sIGlkeCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNFeHBhbmRlZCA9IGV4cGFuZGVkTWlzc2lvbiA9PT0gaWR4O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpZHh9IGNsYXNzTmFtZT1cInJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHctOCBoLTggcm91bmRlZC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQteHMgZm9udC1ib2xkIGJvcmRlci0yIGN1cnNvci1wb2ludGVyIHRyYW5zaXRpb24tYWxsIGhvdmVyOnNjYWxlLTExMCAke21pc3Npb24uaXNTdWNjZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnYmctYmx1ZS02MDAgYm9yZGVyLWJsdWUtNDAwIHRleHQtd2hpdGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnYmctcmVkLTYwMCBib3JkZXItcmVkLTQwMCB0ZXh0LXdoaXRlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gJHtpc0V4cGFuZGVkID8gJ3JpbmctMiByaW5nLXllbGxvdy00MDAgcmVsYXRpdmUgei1bNjBdJyA6ICcnfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17YE1pc2nDs24gJHttaXNzaW9uLnJvdW5kfTogJHttaXNzaW9uLmlzU3VjY2VzcyA/ICfDiXhpdG8nIDogJ0ZyYWNhc28nfSAoJHttaXNzaW9uLnN1Y2Nlc3Nlc33inJMgJHttaXNzaW9uLmZhaWxzfeKclylgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDbGljayBlbiBtaXNpw7NuJywgaWR4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFeHBhbmRlZE1pc3Npb24ocHJldiA9PiBwcmV2ID09PSBpZHggPyBudWxsIDogaWR4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttaXNzaW9uLnJvdW5kfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogTGlzdGEgZGUgcGFydGljaXBhbnRlcyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lzRXhwYW5kZWQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMTAgcmlnaHQtMCBiZy1ibGFjay85NSBwLTIgcm91bmRlZCBib3JkZXIgYm9yZGVyLXdoaXRlLzMwIG1pbi13LW1heCB6LVsxMDBdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge21pc3Npb24udGVhbS5tYXAoKHBsYXllcklkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBsYXllciA9IGdhbWVTdGF0ZS5wbGF5ZXJzLmZpbmQocCA9PiBwLmlkID09PSBwbGF5ZXJJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17cGxheWVySWR9IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC13aGl0ZSB3aGl0ZXNwYWNlLW5vd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwbGF5ZXI/Lm5hbWUgfHwgcGxheWVySWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59XG5cbi8vIFN1YmNvbXBvbmVudGUgcGFyYSBlbCBUaW1lciBkZSBWb3RhY2nDs24gKHNvbG8gdmlzdWFsLCBlbCBzZXJ2aWRvciBjb250cm9sYSBlbCB0aW1lb3V0IHJlYWwpXG5mdW5jdGlvbiBWb3RpbmdUaW1lcigpIHtcbiAgICBjb25zdCBbdGltZUxlZnQsIHNldFRpbWVMZWZ0XSA9IHVzZVN0YXRlKDEwKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICh0aW1lTGVmdCA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47IC8vIEVsIHNlcnZpZG9yIHNlIGVuY2FyZ2Fyw6EgZGUgZm9yemFyIGxhIHJlc29sdWNpw7NuXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiBzZXRUaW1lTGVmdCh0ID0+IHQgLSAxKSwgMTAwMCk7XG4gICAgICAgIHJldHVybiAoKSA9PiBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICB9LCBbdGltZUxlZnRdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZml4ZWQgdG9wLTUgbGVmdC01IGJnLXJlZC02MDAvODAgdGV4dC13aGl0ZSB3LTE2IGgtMTYgcm91bmRlZC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJvcmRlci00IGJvcmRlci1yZWQtNDAwIGFuaW1hdGUtcHVsc2UgdGV4dC0yeGwgZm9udC1ib2xkIGZvbnQtbW9ub1wiPlxuICAgICAgICAgICAge3RpbWVMZWZ0fVxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufVxuIl0sIm5hbWVzIjpbInVzZVN0YXRlIiwidXNlRWZmZWN0IiwibW90aW9uIiwiQW5pbWF0ZVByZXNlbmNlIiwiSW1hZ2UiLCJHYW1lUGhhc2UiLCJHQU1FX0NPTkZJRyIsIkZhY3Rpb24iLCJNaXNzaW9uUmV2ZWFsIiwiTWlzc2lvblJlc3VsdCIsIlZpY3RvcnlTY3JlZW4iLCJFeGl0R2FtZUJ1dHRvbiIsIkdhbWVCb2FyZCIsImdhbWVTdGF0ZSIsImN1cnJlbnRQbGF5ZXJJZCIsImFjdGlvbnMiLCJmdWxsUGxheWVyTmFtZSIsInNlbGVjdGVkVGVhbSIsInNldFNlbGVjdGVkVGVhbSIsInJldmVhbENhcmQiLCJzZXRSZXZlYWxDYXJkIiwiY2FyZE9yZGVyIiwiTWF0aCIsInJhbmRvbSIsIm1pc3Npb25Wb3RlIiwic2V0TWlzc2lvblZvdGUiLCJleHBhbmRlZE1pc3Npb24iLCJzZXRFeHBhbmRlZE1pc3Npb24iLCJpc1BsYXllcnNDb2xsYXBzZWQiLCJzZXRJc1BsYXllcnNDb2xsYXBzZWQiLCJpc0hpc3RvcnlDb2xsYXBzZWQiLCJzZXRJc0hpc3RvcnlDb2xsYXBzZWQiLCJwaGFzZSIsInRpbWVyIiwic2V0VGltZW91dCIsImZpbmlzaFJldmVhbCIsImNsZWFyVGltZW91dCIsIk1JU1NJT04iLCJURUFNX0JVSUxESU5HIiwiY3VycmVudExlYWRlcklkIiwic2hvd0JvYXJkIiwic2V0U2hvd0JvYXJkIiwiTUlTU0lPTl9SRVNVTFQiLCJjdXJyZW50UGxheWVyIiwicGxheWVycyIsImZpbmQiLCJwIiwiaWQiLCJpc0xlYWRlciIsImNvbmZpZyIsImxlbmd0aCIsImN1cnJlbnRRdWVzdFNpemUiLCJxdWVzdHMiLCJjdXJyZW50Um91bmQiLCJ0b2dnbGVUZWFtU2VsZWN0aW9uIiwicGxheWVySWQiLCJpbmNsdWRlcyIsImZpbHRlciIsImhhbmRsZU1pc3Npb25Wb3RlIiwidm90ZSIsInZvdGVNaXNzaW9uIiwibWlzc2lvbkNvb3JkcyIsImxlZnQiLCJ0b3AiLCJtaXNzaW9uTmFtZXMiLCJpc0hvc3QiLCJob3N0SWQiLCJkaXYiLCJjbGFzc05hbWUiLCJzcmMiLCJhbHQiLCJmaWxsIiwiaDEiLCJhdWRpbyIsImF1dG9QbGF5Iiwib25FbmRlZCIsImZpbmlzaEludHJvIiwiYnV0dG9uIiwib25DbGljayIsInJvbGVJbWFnZSIsInJvbGUiLCJpZHgiLCJjaGFyQ29kZUF0IiwiaDIiLCJyZXBsYWNlIiwiZHJhZyIsImRyYWdDb25zdHJhaW50cyIsImJvdHRvbSIsImRyYWdFbGFzdGljIiwiZHJhZ1NuYXBUb09yaWdpbiIsIndoaWxlSG92ZXIiLCJzY2FsZSIsIndoaWxlVGFwIiwiY3Vyc29yIiwiZmluaXNoUm9sbENhbGwiLCJtYXAiLCJpIiwiaW5pdGlhbCIsIm9wYWNpdHkiLCJhbmltYXRlIiwidHJhbnNpdGlvbiIsImRlbGF5IiwiYXZhdGFyIiwibmFtZSIsIkFMTElFRF9XSU4iLCJOQVpJU19XSU4iLCJvbkV4aXQiLCJsZWF2ZUdhbWUiLCJwbGF5ZXJOYW1lIiwiQVNTQVNTSU5fUEhBU0UiLCJwcmlvcml0eSIsInNwYW4iLCJjb29yZCIsInJlc3VsdCIsInF1ZXN0UmVzdWx0cyIsImlzQ3VycmVudCIsInN0eWxlIiwidHJhbnNmb3JtIiwibGF5b3V0SWQiLCJ0eXBlIiwic3RpZmZuZXNzIiwiZGFtcGluZyIsImgzIiwibW9kZSIsImxlYWRlclZvdGVzIiwiVm90aW5nVGltZXIiLCJ1bmRlZmluZWQiLCJ2b3RlTGVhZGVyIiwieSIsImV4aXQiLCJwcm9wb3NlVGVhbSIsImRpc2FibGVkIiwiVk9USU5HX1RFQU0iLCJwcm9wb3NlZFRlYW0iLCJwbCIsInRlYW1Wb3RlcyIsInZvdGVUZWFtIiwicm90YXRlIiwid2lkdGgiLCJoZWlnaHQiLCJmYWN0aW9uIiwiQUxFTUFORVMiLCJiciIsInZvdGVzIiwicmV2ZWFsZWRWb3RlcyIsIm9uRmluaXNoZWQiLCJmaW5pc2hNaXNzaW9uUmV2ZWFsIiwib25Db250aW51ZSIsImZpbmlzaE1pc3Npb25SZXN1bHQiLCJBTElBRE9TIiwicGxheWVyIiwiYXNzYXNzaW5LaWxsIiwib25SZXN0YXJ0IiwicmVzdGFydEdhbWUiLCJvbkZpbmFsaXplIiwiZmluYWxpemVHYW1lIiwic3ZnIiwieG1sbnMiLCJ2aWV3Qm94Iiwic3Ryb2tlIiwiZHVyYXRpb24iLCJwYXRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwic3Ryb2tlV2lkdGgiLCJkIiwiaXNTZWxlY3RlZCIsImlzTWUiLCJhdmF0YXJTcmMiLCJtaXNzaW9uSGlzdG9yeSIsIngiLCJyaWdodCIsIm1pc3Npb24iLCJpc0V4cGFuZGVkIiwiaXNTdWNjZXNzIiwidGl0bGUiLCJyb3VuZCIsInN1Y2Nlc3NlcyIsImZhaWxzIiwiZSIsInN0b3BQcm9wYWdhdGlvbiIsImNvbnNvbGUiLCJsb2ciLCJwcmV2IiwidGVhbSIsInRpbWVMZWZ0Iiwic2V0VGltZUxlZnQiLCJpbnRlcnZhbCIsInNldEludGVydmFsIiwidCIsImNsZWFySW50ZXJ2YWwiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./src/components/GameBoard.tsx\n");
/***/ }),
/***/ "(ssr)/./src/components/LogoutButton.tsx":
/*!*****************************************!*\
!*** ./src/components/LogoutButton.tsx ***!
\*****************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ LogoutButton)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! framer-motion */ \"(ssr)/./node_modules/framer-motion/dist/es/render/dom/motion.mjs\");\n\n\nfunction LogoutButton({ onClick }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_1__.motion.button, {\n onClick: onClick,\n whileHover: {\n scale: 1.05\n },\n whileTap: {\n scale: 0.95\n },\n className: \"bg-red-900/80 hover:bg-red-800 text-white p-2 rounded-full border border-red-700/50 backdrop-blur-sm shadow-lg transition-all\",\n title: \"Salir del juego\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 2.5,\n stroke: \"currentColor\",\n className: \"w-5 h-5\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M5.636 5.636a9 9 0 1012.728 0M12 3v9\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/LogoutButton.tsx\",\n lineNumber: 24,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/LogoutButton.tsx\",\n lineNumber: 16,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/LogoutButton.tsx\",\n lineNumber: 9,\n columnNumber: 9\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9zcmMvY29tcG9uZW50cy9Mb2dvdXRCdXR0b24udHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQXVDO0FBTXhCLFNBQVNDLGFBQWEsRUFBRUMsT0FBTyxFQUFxQjtJQUMvRCxxQkFDSSw4REFBQ0YsaURBQU1BLENBQUNHLE1BQU07UUFDVkQsU0FBU0E7UUFDVEUsWUFBWTtZQUFFQyxPQUFPO1FBQUs7UUFDMUJDLFVBQVU7WUFBRUQsT0FBTztRQUFLO1FBQ3hCRSxXQUFVO1FBQ1ZDLE9BQU07a0JBRU4sNEVBQUNDO1lBQ0dDLE9BQU07WUFDTkMsTUFBSztZQUNMQyxTQUFRO1lBQ1JDLGFBQWE7WUFDYkMsUUFBTztZQUNQUCxXQUFVO3NCQUVWLDRFQUFDUTtnQkFDR0MsZUFBYztnQkFDZEMsZ0JBQWU7Z0JBQ2ZDLEdBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLdEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZXNpc3RlbmNpYS1jbGllbnQvLi9zcmMvY29tcG9uZW50cy9Mb2dvdXRCdXR0b24udHN4P2VmMjciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbW90aW9uIH0gZnJvbSAnZnJhbWVyLW1vdGlvbic7XG5cbmludGVyZmFjZSBMb2dvdXRCdXR0b25Qcm9wcyB7XG4gICAgb25DbGljazogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTG9nb3V0QnV0dG9uKHsgb25DbGljayB9OiBMb2dvdXRCdXR0b25Qcm9wcykge1xuICAgIHJldHVybiAoXG4gICAgICAgIDxtb3Rpb24uYnV0dG9uXG4gICAgICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICAgICAgd2hpbGVIb3Zlcj17eyBzY2FsZTogMS4wNSB9fVxuICAgICAgICAgICAgd2hpbGVUYXA9e3sgc2NhbGU6IDAuOTUgfX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLXJlZC05MDAvODAgaG92ZXI6YmctcmVkLTgwMCB0ZXh0LXdoaXRlIHAtMiByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1yZWQtNzAwLzUwIGJhY2tkcm9wLWJsdXItc20gc2hhZG93LWxnIHRyYW5zaXRpb24tYWxsXCJcbiAgICAgICAgICAgIHRpdGxlPVwiU2FsaXIgZGVsIGp1ZWdvXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17Mi41fVxuICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy01IGgtNVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNNS42MzYgNS42MzZhOSA5IDAgMTAxMi43MjggME0xMiAzdjlcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9tb3Rpb24uYnV0dG9uPlxuICAgICk7XG59XG4iXSwibmFtZXMiOlsibW90aW9uIiwiTG9nb3V0QnV0dG9uIiwib25DbGljayIsImJ1dHRvbiIsIndoaWxlSG92ZXIiLCJzY2FsZSIsIndoaWxlVGFwIiwiY2xhc3NOYW1lIiwidGl0bGUiLCJzdmciLCJ4bWxucyIsImZpbGwiLCJ2aWV3Qm94Iiwic3Ryb2tlV2lkdGgiLCJzdHJva2UiLCJwYXRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwiZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./src/components/LogoutButton.tsx\n");
/***/ }),
/***/ "(ssr)/./src/components/MissionResult.tsx":
/*!******************************************!*\
!*** ./src/components/MissionResult.tsx ***!
\******************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ MissionResult)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! framer-motion */ \"(ssr)/./node_modules/framer-motion/dist/es/render/dom/motion.mjs\");\n\n\nfunction MissionResult({ gameState, onContinue, isHost }) {\n // Obtener la última misión del historial\n const lastMission = gameState.missionHistory[gameState.missionHistory.length - 1];\n if (!lastMission) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"fixed inset-0 flex items-center justify-center bg-black/90 z-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-white text-2xl\",\n children: \"Cargando resultado...\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/MissionResult.tsx\",\n lineNumber: 17,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/MissionResult.tsx\",\n lineNumber: 16,\n columnNumber: 13\n }, this);\n }\n const { successes, fails, isSuccess } = lastMission;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_1__.motion.div, {\n className: \"fixed inset-0 flex flex-col items-center justify-center bg-transparent z-50 pt-8\",\n initial: {\n opacity: 0\n },\n animate: {\n opacity: 1\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_1__.motion.h2, {\n className: `text-3xl sm:text-4xl md:text-5xl lg:text-6xl xl:text-7xl font-bold mb-8 whitespace-nowrap px-4 ${isSuccess ? \"text-blue-500\" : \"text-red-500\"}`,\n initial: {\n scale: 0\n },\n animate: {\n scale: 1\n },\n transition: {\n type: \"spring\",\n stiffness: 200,\n delay: 0.2\n },\n children: isSuccess ? \"\\xa1MISI\\xd3N EXITOSA!\" : \"MISI\\xd3N FALLIDA\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/MissionResult.tsx\",\n lineNumber: 30,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_1__.motion.div, {\n className: \"text-white text-3xl mb-8 bg-black/50 p-6 rounded-xl\",\n initial: {\n y: 50,\n opacity: 0\n },\n animate: {\n y: 0,\n opacity: 1\n },\n transition: {\n delay: 0.5\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mb-2\",\n children: [\n \"✓ \\xc9xitos: \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-blue-400 font-bold\",\n children: successes\n }, void 0, false, {\n fileName: \"/app/client/src/components/MissionResult.tsx\",\n lineNumber: 45,\n columnNumber: 47\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/MissionResult.tsx\",\n lineNumber: 45,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: [\n \"✗ Sabotajes: \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-400 font-bold\",\n children: fails\n }, void 0, false, {\n fileName: \"/app/client/src/components/MissionResult.tsx\",\n lineNumber: 46,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/MissionResult.tsx\",\n lineNumber: 46,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/MissionResult.tsx\",\n lineNumber: 39,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_1__.motion.div, {\n className: \"text-white text-xl mb-8\",\n initial: {\n opacity: 0\n },\n animate: {\n opacity: 1\n },\n transition: {\n delay: 1\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: [\n \"Misi\\xf3n \",\n gameState.currentRound,\n \" de 5\"\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/MissionResult.tsx\",\n lineNumber: 55,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-400 text-sm mt-2\",\n children: [\n \"Resistencia: \",\n gameState.missionHistory.filter((m)=>m.isSuccess).length,\n \" | Esp\\xedas: \",\n gameState.missionHistory.filter((m)=>!m.isSuccess).length\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/MissionResult.tsx\",\n lineNumber: 56,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/MissionResult.tsx\",\n lineNumber: 49,\n columnNumber: 13\n }, this),\n isHost ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_1__.motion.button, {\n onClick: onContinue,\n className: \"bg-gradient-to-r from-yellow-600 to-yellow-700 hover:from-yellow-500 hover:to-yellow-600 text-white font-bold py-4 px-8 rounded-lg text-lg shadow-lg transform transition-all hover:scale-105\",\n initial: {\n y: 50,\n opacity: 0\n },\n animate: {\n y: 0,\n opacity: 1\n },\n transition: {\n delay: 1.5\n },\n whileHover: {\n scale: 1.05\n },\n whileTap: {\n scale: 0.95\n },\n children: \"CONTINUAR →\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/MissionResult.tsx\",\n lineNumber: 63,\n columnNumber: 17\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_1__.motion.div, {\n className: \"text-white text-lg font-mono bg-black/50 px-6 py-3 rounded-full border border-white/20 animate-pulse\",\n initial: {\n y: 50,\n opacity: 0\n },\n animate: {\n y: 0,\n opacity: 1\n },\n transition: {\n delay: 1.5\n },\n children: \"Esperando al comandante...\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/MissionResult.tsx\",\n lineNumber: 75,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/MissionResult.tsx\",\n lineNumber: 25,\n columnNumber: 9\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9zcmMvY29tcG9uZW50cy9NaXNzaW9uUmVzdWx0LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUF1QztBQVN4QixTQUFTQyxjQUFjLEVBQUVDLFNBQVMsRUFBRUMsVUFBVSxFQUFFQyxNQUFNLEVBQXNCO0lBQ3ZGLHlDQUF5QztJQUN6QyxNQUFNQyxjQUFjSCxVQUFVSSxjQUFjLENBQUNKLFVBQVVJLGNBQWMsQ0FBQ0MsTUFBTSxHQUFHLEVBQUU7SUFFakYsSUFBSSxDQUFDRixhQUFhO1FBQ2QscUJBQ0ksOERBQUNHO1lBQUlDLFdBQVU7c0JBQ1gsNEVBQUNDO2dCQUFFRCxXQUFVOzBCQUFzQjs7Ozs7Ozs7Ozs7SUFHL0M7SUFFQSxNQUFNLEVBQUVFLFNBQVMsRUFBRUMsS0FBSyxFQUFFQyxTQUFTLEVBQUUsR0FBR1I7SUFFeEMscUJBQ0ksOERBQUNMLGlEQUFNQSxDQUFDUSxHQUFHO1FBQ1BDLFdBQVU7UUFDVkssU0FBUztZQUFFQyxTQUFTO1FBQUU7UUFDdEJDLFNBQVM7WUFBRUQsU0FBUztRQUFFOzswQkFFdEIsOERBQUNmLGlEQUFNQSxDQUFDaUIsRUFBRTtnQkFDTlIsV0FBVyxDQUFDLCtGQUErRixFQUFFSSxZQUFZLGtCQUFrQixlQUFlLENBQUM7Z0JBQzNKQyxTQUFTO29CQUFFSSxPQUFPO2dCQUFFO2dCQUNwQkYsU0FBUztvQkFBRUUsT0FBTztnQkFBRTtnQkFDcEJDLFlBQVk7b0JBQUVDLE1BQU07b0JBQVVDLFdBQVc7b0JBQUtDLE9BQU87Z0JBQUk7MEJBRXhEVCxZQUFZLDJCQUFxQjs7Ozs7OzBCQUd0Qyw4REFBQ2IsaURBQU1BLENBQUNRLEdBQUc7Z0JBQ1BDLFdBQVU7Z0JBQ1ZLLFNBQVM7b0JBQUVTLEdBQUc7b0JBQUlSLFNBQVM7Z0JBQUU7Z0JBQzdCQyxTQUFTO29CQUFFTyxHQUFHO29CQUFHUixTQUFTO2dCQUFFO2dCQUM1QkksWUFBWTtvQkFBRUcsT0FBTztnQkFBSTs7a0NBRXpCLDhEQUFDWjt3QkFBRUQsV0FBVTs7NEJBQU87MENBQVUsOERBQUNlO2dDQUFLZixXQUFVOzBDQUEyQkU7Ozs7Ozs7Ozs7OztrQ0FDekUsOERBQUNEOzs0QkFBRTswQ0FBYSw4REFBQ2M7Z0NBQUtmLFdBQVU7MENBQTBCRzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQUc5RCw4REFBQ1osaURBQU1BLENBQUNRLEdBQUc7Z0JBQ1BDLFdBQVU7Z0JBQ1ZLLFNBQVM7b0JBQUVDLFNBQVM7Z0JBQUU7Z0JBQ3RCQyxTQUFTO29CQUFFRCxTQUFTO2dCQUFFO2dCQUN0QkksWUFBWTtvQkFBRUcsT0FBTztnQkFBRTs7a0NBRXZCLDhEQUFDWjs7NEJBQUU7NEJBQVFSLFVBQVV1QixZQUFZOzRCQUFDOzs7Ozs7O2tDQUNsQyw4REFBQ2Y7d0JBQUVELFdBQVU7OzRCQUE2Qjs0QkFDeEJQLFVBQVVJLGNBQWMsQ0FBQ29CLE1BQU0sQ0FBQ0MsQ0FBQUEsSUFBS0EsRUFBRWQsU0FBUyxFQUFFTixNQUFNOzRCQUFDOzRCQUM5REwsVUFBVUksY0FBYyxDQUFDb0IsTUFBTSxDQUFDQyxDQUFBQSxJQUFLLENBQUNBLEVBQUVkLFNBQVMsRUFBRU4sTUFBTTs7Ozs7Ozs7Ozs7OztZQUl6RUgsdUJBQ0csOERBQUNKLGlEQUFNQSxDQUFDNEIsTUFBTTtnQkFDVkMsU0FBUzFCO2dCQUNUTSxXQUFVO2dCQUNWSyxTQUFTO29CQUFFUyxHQUFHO29CQUFJUixTQUFTO2dCQUFFO2dCQUM3QkMsU0FBUztvQkFBRU8sR0FBRztvQkFBR1IsU0FBUztnQkFBRTtnQkFDNUJJLFlBQVk7b0JBQUVHLE9BQU87Z0JBQUk7Z0JBQ3pCUSxZQUFZO29CQUFFWixPQUFPO2dCQUFLO2dCQUMxQmEsVUFBVTtvQkFBRWIsT0FBTztnQkFBSzswQkFDM0I7Ozs7O3FDQUlELDhEQUFDbEIsaURBQU1BLENBQUNRLEdBQUc7Z0JBQ1BDLFdBQVU7Z0JBQ1ZLLFNBQVM7b0JBQUVTLEdBQUc7b0JBQUlSLFNBQVM7Z0JBQUU7Z0JBQzdCQyxTQUFTO29CQUFFTyxHQUFHO29CQUFHUixTQUFTO2dCQUFFO2dCQUM1QkksWUFBWTtvQkFBRUcsT0FBTztnQkFBSTswQkFDNUI7Ozs7Ozs7Ozs7OztBQU1qQiIsInNvdXJjZXMiOlsid2VicGFjazovL3Jlc2lzdGVuY2lhLWNsaWVudC8uL3NyYy9jb21wb25lbnRzL01pc3Npb25SZXN1bHQudHN4PzE4MDkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbW90aW9uIH0gZnJvbSAnZnJhbWVyLW1vdGlvbic7XG5pbXBvcnQgeyBHYW1lU3RhdGUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdHlwZXMnO1xuXG5pbnRlcmZhY2UgTWlzc2lvblJlc3VsdFByb3BzIHtcbiAgICBnYW1lU3RhdGU6IEdhbWVTdGF0ZTtcbiAgICBvbkNvbnRpbnVlOiAoKSA9PiB2b2lkO1xuICAgIGlzSG9zdDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTWlzc2lvblJlc3VsdCh7IGdhbWVTdGF0ZSwgb25Db250aW51ZSwgaXNIb3N0IH06IE1pc3Npb25SZXN1bHRQcm9wcykge1xuICAgIC8vIE9idGVuZXIgbGEgw7psdGltYSBtaXNpw7NuIGRlbCBoaXN0b3JpYWxcbiAgICBjb25zdCBsYXN0TWlzc2lvbiA9IGdhbWVTdGF0ZS5taXNzaW9uSGlzdG9yeVtnYW1lU3RhdGUubWlzc2lvbkhpc3RvcnkubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoIWxhc3RNaXNzaW9uKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpeGVkIGluc2V0LTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctYmxhY2svOTAgei01MFwiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtd2hpdGUgdGV4dC0yeGxcIj5DYXJnYW5kbyByZXN1bHRhZG8uLi48L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IHN1Y2Nlc3NlcywgZmFpbHMsIGlzU3VjY2VzcyB9ID0gbGFzdE1pc3Npb247XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiZml4ZWQgaW5zZXQtMCBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy10cmFuc3BhcmVudCB6LTUwIHB0LThcIlxuICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEgfX1cbiAgICAgICAgPlxuICAgICAgICAgICAgPG1vdGlvbi5oMlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHRleHQtM3hsIHNtOnRleHQtNHhsIG1kOnRleHQtNXhsIGxnOnRleHQtNnhsIHhsOnRleHQtN3hsIGZvbnQtYm9sZCBtYi04IHdoaXRlc3BhY2Utbm93cmFwIHB4LTQgJHtpc1N1Y2Nlc3MgPyAndGV4dC1ibHVlLTUwMCcgOiAndGV4dC1yZWQtNTAwJ31gfVxuICAgICAgICAgICAgICAgIGluaXRpYWw9e3sgc2NhbGU6IDAgfX1cbiAgICAgICAgICAgICAgICBhbmltYXRlPXt7IHNjYWxlOiAxIH19XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbj17eyB0eXBlOiAnc3ByaW5nJywgc3RpZmZuZXNzOiAyMDAsIGRlbGF5OiAwLjIgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7aXNTdWNjZXNzID8gJ8KhTUlTScOTTiBFWElUT1NBIScgOiAnTUlTScOTTiBGQUxMSURBJ31cbiAgICAgICAgICAgIDwvbW90aW9uLmgyPlxuXG4gICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtd2hpdGUgdGV4dC0zeGwgbWItOCBiZy1ibGFjay81MCBwLTYgcm91bmRlZC14bFwiXG4gICAgICAgICAgICAgICAgaW5pdGlhbD17eyB5OiA1MCwgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgICAgIGFuaW1hdGU9e3sgeTogMCwgb3BhY2l0eTogMSB9fVxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZGVsYXk6IDAuNSB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm1iLTJcIj7inJMgw4l4aXRvczogPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ibHVlLTQwMCBmb250LWJvbGRcIj57c3VjY2Vzc2VzfTwvc3Bhbj48L3A+XG4gICAgICAgICAgICAgICAgPHA+4pyXIFNhYm90YWplczogPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1yZWQtNDAwIGZvbnQtYm9sZFwiPntmYWlsc308L3NwYW4+PC9wPlxuICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuXG4gICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtd2hpdGUgdGV4dC14bCBtYi04XCJcbiAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IGRlbGF5OiAxIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHA+TWlzacOzbiB7Z2FtZVN0YXRlLmN1cnJlbnRSb3VuZH0gZGUgNTwvcD5cbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNDAwIHRleHQtc20gbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICBSZXNpc3RlbmNpYToge2dhbWVTdGF0ZS5taXNzaW9uSGlzdG9yeS5maWx0ZXIobSA9PiBtLmlzU3VjY2VzcykubGVuZ3RofSB8XG4gICAgICAgICAgICAgICAgICAgIEVzcMOtYXM6IHtnYW1lU3RhdGUubWlzc2lvbkhpc3RvcnkuZmlsdGVyKG0gPT4gIW0uaXNTdWNjZXNzKS5sZW5ndGh9XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuXG4gICAgICAgICAgICB7aXNIb3N0ID8gKFxuICAgICAgICAgICAgICAgIDxtb3Rpb24uYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uQ29udGludWV9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLWdyYWRpZW50LXRvLXIgZnJvbS15ZWxsb3ctNjAwIHRvLXllbGxvdy03MDAgaG92ZXI6ZnJvbS15ZWxsb3ctNTAwIGhvdmVyOnRvLXllbGxvdy02MDAgdGV4dC13aGl0ZSBmb250LWJvbGQgcHktNCBweC04IHJvdW5kZWQtbGcgdGV4dC1sZyBzaGFkb3ctbGcgdHJhbnNmb3JtIHRyYW5zaXRpb24tYWxsIGhvdmVyOnNjYWxlLTEwNVwiXG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWw9e3sgeTogNTAsIG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZT17eyB5OiAwLCBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZGVsYXk6IDEuNSB9fVxuICAgICAgICAgICAgICAgICAgICB3aGlsZUhvdmVyPXt7IHNjYWxlOiAxLjA1IH19XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlVGFwPXt7IHNjYWxlOiAwLjk1IH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBDT05USU5VQVIg4oaSXG4gICAgICAgICAgICAgICAgPC9tb3Rpb24uYnV0dG9uPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlIHRleHQtbGcgZm9udC1tb25vIGJnLWJsYWNrLzUwIHB4LTYgcHktMyByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci13aGl0ZS8yMCBhbmltYXRlLXB1bHNlXCJcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbD17eyB5OiA1MCwgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgICAgICAgICBhbmltYXRlPXt7IHk6IDAsIG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbj17eyBkZWxheTogMS41IH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBFc3BlcmFuZG8gYWwgY29tYW5kYW50ZS4uLlxuICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICl9XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICApO1xufVxuIl0sIm5hbWVzIjpbIm1vdGlvbiIsIk1pc3Npb25SZXN1bHQiLCJnYW1lU3RhdGUiLCJvbkNvbnRpbnVlIiwiaXNIb3N0IiwibGFzdE1pc3Npb24iLCJtaXNzaW9uSGlzdG9yeSIsImxlbmd0aCIsImRpdiIsImNsYXNzTmFtZSIsInAiLCJzdWNjZXNzZXMiLCJmYWlscyIsImlzU3VjY2VzcyIsImluaXRpYWwiLCJvcGFjaXR5IiwiYW5pbWF0ZSIsImgyIiwic2NhbGUiLCJ0cmFuc2l0aW9uIiwidHlwZSIsInN0aWZmbmVzcyIsImRlbGF5IiwieSIsInNwYW4iLCJjdXJyZW50Um91bmQiLCJmaWx0ZXIiLCJtIiwiYnV0dG9uIiwib25DbGljayIsIndoaWxlSG92ZXIiLCJ3aGlsZVRhcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./src/components/MissionResult.tsx\n");
/***/ }),
/***/ "(ssr)/./src/components/MissionReveal.tsx":
/*!******************************************!*\
!*** ./src/components/MissionReveal.tsx ***!
\******************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ MissionReveal)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! framer-motion */ \"(ssr)/./node_modules/framer-motion/dist/es/render/dom/motion.mjs\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/image */ \"(ssr)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n\nfunction MissionReveal({ votes, onFinished }) {\n // Timer de seguridad: 5 segundos y avanza\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const timer = setTimeout(()=>{\n if (onFinished) onFinished();\n }, 5000);\n return ()=>clearTimeout(timer);\n }, [\n onFinished\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.motion.div, {\n className: \"fixed inset-0 flex flex-col items-center justify-center bg-black/95 z-50 pointer-events-auto\",\n initial: {\n opacity: 0\n },\n animate: {\n opacity: 1\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-3xl font-bold text-white mb-12 uppercase tracking-widest drop-shadow-lg text-center\",\n children: \"Resultado de la misi\\xf3n\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/MissionReveal.tsx\",\n lineNumber: 26,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-4 justify-center mb-12 flex-wrap max-w-[90vw]\",\n children: votes.map((vote, idx)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.motion.div, {\n className: \"w-32 h-48 rounded-xl flex items-center justify-center shadow-2xl relative overflow-hidden\",\n initial: {\n scale: 0,\n rotateY: 180\n },\n animate: {\n scale: 1,\n rotateY: 0\n },\n transition: {\n delay: idx * 0.3,\n type: \"spring\",\n stiffness: 200,\n damping: 20\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: vote ? \"/assets/images/tokens/vote_approve.png\" : \"/assets/images/tokens/vote_reject.png\",\n alt: vote ? \"\\xc9xito\" : \"Sabotaje\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/MissionReveal.tsx\",\n lineNumber: 44,\n columnNumber: 25\n }, this)\n }, idx, false, {\n fileName: \"/app/client/src/components/MissionReveal.tsx\",\n lineNumber: 32,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/app/client/src/components/MissionReveal.tsx\",\n lineNumber: 30,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.motion.div, {\n className: \"text-white text-xl font-mono mt-8 text-center\",\n initial: {\n opacity: 0\n },\n animate: {\n opacity: 1\n },\n transition: {\n delay: votes.length * 0.3 + 0.5\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"animate-pulse\",\n children: \"Analizando resultado estrat\\xe9gico...\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/MissionReveal.tsx\",\n lineNumber: 60,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/MissionReveal.tsx\",\n lineNumber: 54,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/MissionReveal.tsx\",\n lineNumber: 21,\n columnNumber: 9\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9zcmMvY29tcG9uZW50cy9NaXNzaW9uUmV2ZWFsLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBdUM7QUFDTDtBQUNIO0FBT2hCLFNBQVNHLGNBQWMsRUFBRUMsS0FBSyxFQUFFQyxVQUFVLEVBQXNCO0lBQzNFLDBDQUEwQztJQUMxQ0osZ0RBQVNBLENBQUM7UUFDTixNQUFNSyxRQUFRQyxXQUFXO1lBQ3JCLElBQUlGLFlBQVlBO1FBQ3BCLEdBQUc7UUFFSCxPQUFPLElBQU1HLGFBQWFGO0lBQzlCLEdBQUc7UUFBQ0Q7S0FBVztJQUVmLHFCQUNJLDhEQUFDTCxpREFBTUEsQ0FBQ1MsR0FBRztRQUNQQyxXQUFVO1FBQ1ZDLFNBQVM7WUFBRUMsU0FBUztRQUFFO1FBQ3RCQyxTQUFTO1lBQUVELFNBQVM7UUFBRTs7MEJBRXRCLDhEQUFDRTtnQkFBR0osV0FBVTswQkFBMkY7Ozs7OzswQkFJekcsOERBQUNEO2dCQUFJQyxXQUFVOzBCQUNWTixNQUFNVyxHQUFHLENBQUMsQ0FBQ0MsTUFBTUMsb0JBQ2QsOERBQUNqQixpREFBTUEsQ0FBQ1MsR0FBRzt3QkFFUEMsV0FBVTt3QkFDVkMsU0FBUzs0QkFBRU8sT0FBTzs0QkFBR0MsU0FBUzt3QkFBSTt3QkFDbENOLFNBQVM7NEJBQUVLLE9BQU87NEJBQUdDLFNBQVM7d0JBQUU7d0JBQ2hDQyxZQUFZOzRCQUNSQyxPQUFPSixNQUFNOzRCQUNiSyxNQUFNOzRCQUNOQyxXQUFXOzRCQUNYQyxTQUFTO3dCQUNiO2tDQUVBLDRFQUFDdEIsbURBQUtBOzRCQUNGdUIsS0FBS1QsT0FBTywyQ0FBMkM7NEJBQ3ZEVSxLQUFLVixPQUFPLGFBQVU7NEJBQ3RCVyxJQUFJOzRCQUNKakIsV0FBVTs7Ozs7O3VCQWZUTzs7Ozs7Ozs7OzswQkFxQmpCLDhEQUFDakIsaURBQU1BLENBQUNTLEdBQUc7Z0JBQ1BDLFdBQVU7Z0JBQ1ZDLFNBQVM7b0JBQUVDLFNBQVM7Z0JBQUU7Z0JBQ3RCQyxTQUFTO29CQUFFRCxTQUFTO2dCQUFFO2dCQUN0QlEsWUFBWTtvQkFBRUMsT0FBT2pCLE1BQU13QixNQUFNLEdBQUcsTUFBTTtnQkFBSTswQkFFOUMsNEVBQUNDO29CQUFLbkIsV0FBVTs4QkFBZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSWhEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVzaXN0ZW5jaWEtY2xpZW50Ly4vc3JjL2NvbXBvbmVudHMvTWlzc2lvblJldmVhbC50c3g/Nzk2ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtb3Rpb24gfSBmcm9tICdmcmFtZXItbW90aW9uJztcbmltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBJbWFnZSBmcm9tICduZXh0L2ltYWdlJztcblxuaW50ZXJmYWNlIE1pc3Npb25SZXZlYWxQcm9wcyB7XG4gICAgdm90ZXM6IGJvb2xlYW5bXTtcbiAgICBvbkZpbmlzaGVkPzogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTWlzc2lvblJldmVhbCh7IHZvdGVzLCBvbkZpbmlzaGVkIH06IE1pc3Npb25SZXZlYWxQcm9wcykge1xuICAgIC8vIFRpbWVyIGRlIHNlZ3VyaWRhZDogNSBzZWd1bmRvcyB5IGF2YW56YVxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAob25GaW5pc2hlZCkgb25GaW5pc2hlZCgpO1xuICAgICAgICB9LCA1MDAwKTtcblxuICAgICAgICByZXR1cm4gKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICB9LCBbb25GaW5pc2hlZF0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImZpeGVkIGluc2V0LTAgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctYmxhY2svOTUgei01MCBwb2ludGVyLWV2ZW50cy1hdXRvXCJcbiAgICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxIH19XG4gICAgICAgID5cbiAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LTN4bCBmb250LWJvbGQgdGV4dC13aGl0ZSBtYi0xMiB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0IGRyb3Atc2hhZG93LWxnIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgUmVzdWx0YWRvIGRlIGxhIG1pc2nDs25cbiAgICAgICAgICAgIDwvaDI+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtNCBqdXN0aWZ5LWNlbnRlciBtYi0xMiBmbGV4LXdyYXAgbWF4LXctWzkwdnddXCI+XG4gICAgICAgICAgICAgICAge3ZvdGVzLm1hcCgodm90ZSwgaWR4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2lkeH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctMzIgaC00OCByb3VuZGVkLXhsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNoYWRvdy0yeGwgcmVsYXRpdmUgb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWw9e3sgc2NhbGU6IDAsIHJvdGF0ZVk6IDE4MCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZT17eyBzY2FsZTogMSwgcm90YXRlWTogMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbj17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5OiBpZHggKiAwLjMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzcHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlmZm5lc3M6IDIwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYW1waW5nOiAyMFxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXt2b3RlID8gJy9hc3NldHMvaW1hZ2VzL3Rva2Vucy92b3RlX2FwcHJvdmUucG5nJyA6ICcvYXNzZXRzL2ltYWdlcy90b2tlbnMvdm90ZV9yZWplY3QucG5nJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9e3ZvdGUgPyAnw4l4aXRvJyA6ICdTYWJvdGFqZSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtd2hpdGUgdGV4dC14bCBmb250LW1vbm8gbXQtOCB0ZXh0LWNlbnRlclwiXG4gICAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbj17eyBkZWxheTogdm90ZXMubGVuZ3RoICogMC4zICsgMC41IH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYW5pbWF0ZS1wdWxzZVwiPkFuYWxpemFuZG8gcmVzdWx0YWRvIGVzdHJhdMOpZ2ljby4uLjwvc3Bhbj5cbiAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICk7XG59XG4iXSwibmFtZXMiOlsibW90aW9uIiwidXNlRWZmZWN0IiwiSW1hZ2UiLCJNaXNzaW9uUmV2ZWFsIiwidm90ZXMiLCJvbkZpbmlzaGVkIiwidGltZXIiLCJzZXRUaW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwiZGl2IiwiY2xhc3NOYW1lIiwiaW5pdGlhbCIsIm9wYWNpdHkiLCJhbmltYXRlIiwiaDIiLCJtYXAiLCJ2b3RlIiwiaWR4Iiwic2NhbGUiLCJyb3RhdGVZIiwidHJhbnNpdGlvbiIsImRlbGF5IiwidHlwZSIsInN0aWZmbmVzcyIsImRhbXBpbmciLCJzcmMiLCJhbHQiLCJmaWxsIiwibGVuZ3RoIiwic3BhbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./src/components/MissionReveal.tsx\n");
/***/ }),
/***/ "(ssr)/./src/components/VictoryScreen.tsx":
/*!******************************************!*\
!*** ./src/components/VictoryScreen.tsx ***!
\******************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ VictoryScreen)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! framer-motion */ \"(ssr)/./node_modules/framer-motion/dist/es/render/dom/motion.mjs\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _shared_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../shared/types */ \"(ssr)/../shared/types.ts\");\n\n\n\n\nfunction VictoryScreen({ gameState, isHost, onRestart, onFinalize }) {\n const [timeLeft, setTimeLeft] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(30);\n const isNazisWin = gameState.winner === _shared_types__WEBPACK_IMPORTED_MODULE_2__.Faction.ALEMANES;\n // Timer de 30 segundos\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const timer = setInterval(()=>{\n setTimeLeft((prev)=>{\n if (prev <= 1) {\n // Se acabó el tiempo, finalizar automáticamente\n onFinalize();\n return 0;\n }\n return prev - 1;\n });\n }, 1000);\n return ()=>clearInterval(timer);\n }, [\n onFinalize\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.motion.div, {\n className: \"fixed inset-0 flex flex-col items-center justify-center z-50 relative\",\n initial: {\n opacity: 0\n },\n animate: {\n opacity: 1\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.motion.div, {\n className: \"text-center mb-12 relative z-10\",\n initial: {\n scale: 0\n },\n animate: {\n scale: 1\n },\n transition: {\n type: \"spring\",\n stiffness: 200,\n delay: 0.2\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: `text-[4rem] md:text-[4.5rem] font-bold mb-4 drop-shadow-[0_4px_8px_rgba(0,0,0,0.9)] ${isNazisWin ? \"text-red-600\" : \"text-blue-500\"}`,\n children: isNazisWin ? \"\\xa1VICTORIA NAZI!\" : \"\\xa1VICTORIA ALIADA!\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/VictoryScreen.tsx\",\n lineNumber: 46,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-3xl text-white drop-shadow-[0_4px_8px_rgba(0,0,0,0.9)] font-bold\",\n children: isNazisWin ? \"Los Nazis han conquistado Francia\" : \"La Resistencia ha triunfado\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/VictoryScreen.tsx\",\n lineNumber: 49,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/VictoryScreen.tsx\",\n lineNumber: 40,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.motion.div, {\n className: \"bg-black/70 p-8 rounded-xl border-2 border-white/30 mb-8 max-w-2xl relative z-10 backdrop-blur-sm\",\n initial: {\n y: 50,\n opacity: 0\n },\n animate: {\n y: 0,\n opacity: 1\n },\n transition: {\n delay: 0.5\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 gap-6 text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-300 text-sm uppercase mb-2 font-bold\",\n children: \"Misiones Exitosas\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/VictoryScreen.tsx\",\n lineNumber: 63,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-4xl font-bold text-blue-400\",\n children: gameState.questResults.filter((r)=>r === true).length\n }, void 0, false, {\n fileName: \"/app/client/src/components/VictoryScreen.tsx\",\n lineNumber: 64,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/VictoryScreen.tsx\",\n lineNumber: 62,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-300 text-sm uppercase mb-2 font-bold\",\n children: \"Misiones Fracasadas\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/VictoryScreen.tsx\",\n lineNumber: 69,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-4xl font-bold text-red-400\",\n children: gameState.questResults.filter((r)=>r === false).length\n }, void 0, false, {\n fileName: \"/app/client/src/components/VictoryScreen.tsx\",\n lineNumber: 70,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/VictoryScreen.tsx\",\n lineNumber: 68,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/VictoryScreen.tsx\",\n lineNumber: 61,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/components/VictoryScreen.tsx\",\n lineNumber: 55,\n columnNumber: 13\n }, this),\n isHost ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.motion.div, {\n className: \"flex flex-col items-center gap-4 relative z-10\",\n initial: {\n y: 50,\n opacity: 0\n },\n animate: {\n y: 0,\n opacity: 1\n },\n transition: {\n delay: 1\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-yellow-400 font-bold text-2xl mb-2 drop-shadow-[0_2px_4px_rgba(0,0,0,0.9)] bg-black/50 px-6 py-2 rounded-full\",\n children: [\n \"⏱️ Tiempo restante: \",\n timeLeft,\n \"s\"\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/VictoryScreen.tsx\",\n lineNumber: 85,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.motion.button, {\n onClick: onRestart,\n className: \"bg-green-600 hover:bg-green-500 text-white font-bold py-3 px-6 rounded-xl text-lg shadow-2xl border-2 border-green-400\",\n whileHover: {\n scale: 1.1\n },\n whileTap: {\n scale: 0.95\n },\n children: \"\\uD83D\\uDD04 NUEVA PARTIDA\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/VictoryScreen.tsx\",\n lineNumber: 89,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.motion.button, {\n onClick: onFinalize,\n className: \"bg-red-600 hover:bg-red-500 text-white font-bold py-3 px-6 rounded-xl text-lg shadow-2xl border-2 border-red-400\",\n whileHover: {\n scale: 1.1\n },\n whileTap: {\n scale: 0.95\n },\n children: \"❌ TERMINAR\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/VictoryScreen.tsx\",\n lineNumber: 97,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/VictoryScreen.tsx\",\n lineNumber: 88,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-white text-base mt-2 bg-black/60 px-6 py-2 rounded-full drop-shadow-[0_2px_4px_rgba(0,0,0,0.9)]\",\n children: \"Si no decides, la partida terminar\\xe1 autom\\xe1ticamente\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/VictoryScreen.tsx\",\n lineNumber: 106,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/VictoryScreen.tsx\",\n lineNumber: 79,\n columnNumber: 17\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.motion.div, {\n className: \"text-center relative z-10\",\n initial: {\n y: 50,\n opacity: 0\n },\n animate: {\n y: 0,\n opacity: 1\n },\n transition: {\n delay: 1\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-white text-2xl font-mono bg-black/50 px-8 py-4 rounded-full border border-white/20 animate-pulse\",\n children: \"Esperando decisi\\xf3n del comandante...\"\n }, void 0, false, {\n fileName: \"/app/client/src/components/VictoryScreen.tsx\",\n lineNumber: 117,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-500 text-sm mt-4\",\n children: [\n \"Tiempo restante: \",\n timeLeft,\n \"s\"\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/VictoryScreen.tsx\",\n lineNumber: 120,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/VictoryScreen.tsx\",\n lineNumber: 111,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/client/src/components/VictoryScreen.tsx\",\n lineNumber: 34,\n columnNumber: 9\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9zcmMvY29tcG9uZW50cy9WaWN0b3J5U2NyZWVuLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUF1QztBQUNLO0FBRWU7QUFTNUMsU0FBU0ksY0FBYyxFQUFFQyxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsU0FBUyxFQUFFQyxVQUFVLEVBQXNCO0lBQ2xHLE1BQU0sQ0FBQ0MsVUFBVUMsWUFBWSxHQUFHVCwrQ0FBUUEsQ0FBQztJQUN6QyxNQUFNVSxhQUFhTixVQUFVTyxNQUFNLEtBQUtULGtEQUFPQSxDQUFDVSxRQUFRO0lBRXhELHVCQUF1QjtJQUN2QlgsZ0RBQVNBLENBQUM7UUFDTixNQUFNWSxRQUFRQyxZQUFZO1lBQ3RCTCxZQUFZTSxDQUFBQTtnQkFDUixJQUFJQSxRQUFRLEdBQUc7b0JBQ1gsZ0RBQWdEO29CQUNoRFI7b0JBQ0EsT0FBTztnQkFDWDtnQkFDQSxPQUFPUSxPQUFPO1lBQ2xCO1FBQ0osR0FBRztRQUVILE9BQU8sSUFBTUMsY0FBY0g7SUFDL0IsR0FBRztRQUFDTjtLQUFXO0lBRWYscUJBQ0ksOERBQUNSLGlEQUFNQSxDQUFDa0IsR0FBRztRQUNQQyxXQUFVO1FBQ1ZDLFNBQVM7WUFBRUMsU0FBUztRQUFFO1FBQ3RCQyxTQUFTO1lBQUVELFNBQVM7UUFBRTs7MEJBR3RCLDhEQUFDckIsaURBQU1BLENBQUNrQixHQUFHO2dCQUNQQyxXQUFVO2dCQUNWQyxTQUFTO29CQUFFRyxPQUFPO2dCQUFFO2dCQUNwQkQsU0FBUztvQkFBRUMsT0FBTztnQkFBRTtnQkFDcEJDLFlBQVk7b0JBQUVDLE1BQU07b0JBQVVDLFdBQVc7b0JBQUtDLE9BQU87Z0JBQUk7O2tDQUV6RCw4REFBQ0M7d0JBQUdULFdBQVcsQ0FBQyxvRkFBb0YsRUFBRVIsYUFBYSxpQkFBaUIsZ0JBQWdCLENBQUM7a0NBQ2hKQSxhQUFhLHVCQUFvQjs7Ozs7O2tDQUV0Qyw4REFBQ2tCO3dCQUFFVixXQUFVO2tDQUNSUixhQUFhLHNDQUFzQzs7Ozs7Ozs7Ozs7OzBCQUs1RCw4REFBQ1gsaURBQU1BLENBQUNrQixHQUFHO2dCQUNQQyxXQUFVO2dCQUNWQyxTQUFTO29CQUFFVSxHQUFHO29CQUFJVCxTQUFTO2dCQUFFO2dCQUM3QkMsU0FBUztvQkFBRVEsR0FBRztvQkFBR1QsU0FBUztnQkFBRTtnQkFDNUJHLFlBQVk7b0JBQUVHLE9BQU87Z0JBQUk7MEJBRXpCLDRFQUFDVDtvQkFBSUMsV0FBVTs7c0NBQ1gsOERBQUNEOzs4Q0FDRyw4REFBQ1c7b0NBQUVWLFdBQVU7OENBQWlEOzs7Ozs7OENBQzlELDhEQUFDVTtvQ0FBRVYsV0FBVTs4Q0FDUmQsVUFBVTBCLFlBQVksQ0FBQ0MsTUFBTSxDQUFDQyxDQUFBQSxJQUFLQSxNQUFNLE1BQU1DLE1BQU07Ozs7Ozs7Ozs7OztzQ0FHOUQsOERBQUNoQjs7OENBQ0csOERBQUNXO29DQUFFVixXQUFVOzhDQUFpRDs7Ozs7OzhDQUM5RCw4REFBQ1U7b0NBQUVWLFdBQVU7OENBQ1JkLFVBQVUwQixZQUFZLENBQUNDLE1BQU0sQ0FBQ0MsQ0FBQUEsSUFBS0EsTUFBTSxPQUFPQyxNQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQU90RTVCLHVCQUNHLDhEQUFDTixpREFBTUEsQ0FBQ2tCLEdBQUc7Z0JBQ1BDLFdBQVU7Z0JBQ1ZDLFNBQVM7b0JBQUVVLEdBQUc7b0JBQUlULFNBQVM7Z0JBQUU7Z0JBQzdCQyxTQUFTO29CQUFFUSxHQUFHO29CQUFHVCxTQUFTO2dCQUFFO2dCQUM1QkcsWUFBWTtvQkFBRUcsT0FBTztnQkFBRTs7a0NBRXZCLDhEQUFDRTt3QkFBRVYsV0FBVTs7NEJBQXFIOzRCQUN6R1Y7NEJBQVM7Ozs7Ozs7a0NBRWxDLDhEQUFDUzt3QkFBSUMsV0FBVTs7MENBQ1gsOERBQUNuQixpREFBTUEsQ0FBQ21DLE1BQU07Z0NBQ1ZDLFNBQVM3QjtnQ0FDVFksV0FBVTtnQ0FDVmtCLFlBQVk7b0NBQUVkLE9BQU87Z0NBQUk7Z0NBQ3pCZSxVQUFVO29DQUFFZixPQUFPO2dDQUFLOzBDQUMzQjs7Ozs7OzBDQUdELDhEQUFDdkIsaURBQU1BLENBQUNtQyxNQUFNO2dDQUNWQyxTQUFTNUI7Z0NBQ1RXLFdBQVU7Z0NBQ1ZrQixZQUFZO29DQUFFZCxPQUFPO2dDQUFJO2dDQUN6QmUsVUFBVTtvQ0FBRWYsT0FBTztnQ0FBSzswQ0FDM0I7Ozs7Ozs7Ozs7OztrQ0FJTCw4REFBQ007d0JBQUVWLFdBQVU7a0NBQXVHOzs7Ozs7Ozs7OztxQ0FLeEgsOERBQUNuQixpREFBTUEsQ0FBQ2tCLEdBQUc7Z0JBQ1BDLFdBQVU7Z0JBQ1ZDLFNBQVM7b0JBQUVVLEdBQUc7b0JBQUlULFNBQVM7Z0JBQUU7Z0JBQzdCQyxTQUFTO29CQUFFUSxHQUFHO29CQUFHVCxTQUFTO2dCQUFFO2dCQUM1QkcsWUFBWTtvQkFBRUcsT0FBTztnQkFBRTs7a0NBRXZCLDhEQUFDRTt3QkFBRVYsV0FBVTtrQ0FBd0c7Ozs7OztrQ0FHckgsOERBQUNVO3dCQUFFVixXQUFVOzs0QkFBNkI7NEJBQ3BCVjs0QkFBUzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU1uRCIsInNvdXJjZXMiOlsid2VicGFjazovL3Jlc2lzdGVuY2lhLWNsaWVudC8uL3NyYy9jb21wb25lbnRzL1ZpY3RvcnlTY3JlZW4udHN4PzAxMmMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbW90aW9uIH0gZnJvbSAnZnJhbWVyLW1vdGlvbic7XG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IEltYWdlIGZyb20gJ25leHQvaW1hZ2UnO1xuaW1wb3J0IHsgR2FtZVN0YXRlLCBGYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3R5cGVzJztcblxuaW50ZXJmYWNlIFZpY3RvcnlTY3JlZW5Qcm9wcyB7XG4gICAgZ2FtZVN0YXRlOiBHYW1lU3RhdGU7XG4gICAgaXNIb3N0OiBib29sZWFuO1xuICAgIG9uUmVzdGFydDogKCkgPT4gdm9pZDtcbiAgICBvbkZpbmFsaXplOiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBWaWN0b3J5U2NyZWVuKHsgZ2FtZVN0YXRlLCBpc0hvc3QsIG9uUmVzdGFydCwgb25GaW5hbGl6ZSB9OiBWaWN0b3J5U2NyZWVuUHJvcHMpIHtcbiAgICBjb25zdCBbdGltZUxlZnQsIHNldFRpbWVMZWZ0XSA9IHVzZVN0YXRlKDMwKTtcbiAgICBjb25zdCBpc05hemlzV2luID0gZ2FtZVN0YXRlLndpbm5lciA9PT0gRmFjdGlvbi5BTEVNQU5FUztcblxuICAgIC8vIFRpbWVyIGRlIDMwIHNlZ3VuZG9zXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgdGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lTGVmdChwcmV2ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocHJldiA8PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNlIGFjYWLDsyBlbCB0aWVtcG8sIGZpbmFsaXphciBhdXRvbcOhdGljYW1lbnRlXG4gICAgICAgICAgICAgICAgICAgIG9uRmluYWxpemUoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2IC0gMTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCAxMDAwKTtcblxuICAgICAgICByZXR1cm4gKCkgPT4gY2xlYXJJbnRlcnZhbCh0aW1lcik7XG4gICAgfSwgW29uRmluYWxpemVdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJmaXhlZCBpbnNldC0wIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHotNTAgcmVsYXRpdmVcIlxuICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEgfX1cbiAgICAgICAgPlxuICAgICAgICAgICAgey8qIFTDrXR1bG8gZGUgdmljdG9yaWEgKi99XG4gICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtY2VudGVyIG1iLTEyIHJlbGF0aXZlIHotMTBcIlxuICAgICAgICAgICAgICAgIGluaXRpYWw9e3sgc2NhbGU6IDAgfX1cbiAgICAgICAgICAgICAgICBhbmltYXRlPXt7IHNjYWxlOiAxIH19XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbj17eyB0eXBlOiAnc3ByaW5nJywgc3RpZmZuZXNzOiAyMDAsIGRlbGF5OiAwLjIgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aDEgY2xhc3NOYW1lPXtgdGV4dC1bNHJlbV0gbWQ6dGV4dC1bNC41cmVtXSBmb250LWJvbGQgbWItNCBkcm9wLXNoYWRvdy1bMF80cHhfOHB4X3JnYmEoMCwwLDAsMC45KV0gJHtpc05hemlzV2luID8gJ3RleHQtcmVkLTYwMCcgOiAndGV4dC1ibHVlLTUwMCd9YH0+XG4gICAgICAgICAgICAgICAgICAgIHtpc05hemlzV2luID8gJ8KhVklDVE9SSUEgTkFaSSEnIDogJ8KhVklDVE9SSUEgQUxJQURBISd9XG4gICAgICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LTN4bCB0ZXh0LXdoaXRlIGRyb3Atc2hhZG93LVswXzRweF84cHhfcmdiYSgwLDAsMCwwLjkpXSBmb250LWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAge2lzTmF6aXNXaW4gPyAnTG9zIE5hemlzIGhhbiBjb25xdWlzdGFkbyBGcmFuY2lhJyA6ICdMYSBSZXNpc3RlbmNpYSBoYSB0cml1bmZhZG8nfVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cblxuICAgICAgICAgICAgey8qIEluZm9ybWFjacOzbiBkZWwganVlZ28gKi99XG4gICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLWJsYWNrLzcwIHAtOCByb3VuZGVkLXhsIGJvcmRlci0yIGJvcmRlci13aGl0ZS8zMCBtYi04IG1heC13LTJ4bCByZWxhdGl2ZSB6LTEwIGJhY2tkcm9wLWJsdXItc21cIlxuICAgICAgICAgICAgICAgIGluaXRpYWw9e3sgeTogNTAsIG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgICAgICBhbmltYXRlPXt7IHk6IDAsIG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IGRlbGF5OiAwLjUgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTYgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS0zMDAgdGV4dC1zbSB1cHBlcmNhc2UgbWItMiBmb250LWJvbGRcIj5NaXNpb25lcyBFeGl0b3NhczwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtNHhsIGZvbnQtYm9sZCB0ZXh0LWJsdWUtNDAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2dhbWVTdGF0ZS5xdWVzdFJlc3VsdHMuZmlsdGVyKHIgPT4gciA9PT0gdHJ1ZSkubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS0zMDAgdGV4dC1zbSB1cHBlcmNhc2UgbWItMiBmb250LWJvbGRcIj5NaXNpb25lcyBGcmFjYXNhZGFzPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC00eGwgZm9udC1ib2xkIHRleHQtcmVkLTQwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtnYW1lU3RhdGUucXVlc3RSZXN1bHRzLmZpbHRlcihyID0+IHIgPT09IGZhbHNlKS5sZW5ndGh9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuXG4gICAgICAgICAgICB7LyogQm90b25lcyBwYXJhIGVsIGhvc3QgKi99XG4gICAgICAgICAgICB7aXNIb3N0ID8gKFxuICAgICAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC00IHJlbGF0aXZlIHotMTBcIlxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsPXt7IHk6IDUwLCBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICAgICAgICAgIGFuaW1hdGU9e3sgeTogMCwgb3BhY2l0eTogMSB9fVxuICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IGRlbGF5OiAxIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXllbGxvdy00MDAgZm9udC1ib2xkIHRleHQtMnhsIG1iLTIgZHJvcC1zaGFkb3ctWzBfMnB4XzRweF9yZ2JhKDAsMCwwLDAuOSldIGJnLWJsYWNrLzUwIHB4LTYgcHktMiByb3VuZGVkLWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIOKPse+4jyBUaWVtcG8gcmVzdGFudGU6IHt0aW1lTGVmdH1zXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC02XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bW90aW9uLmJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uUmVzdGFydH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1ncmVlbi02MDAgaG92ZXI6YmctZ3JlZW4tNTAwIHRleHQtd2hpdGUgZm9udC1ib2xkIHB5LTMgcHgtNiByb3VuZGVkLXhsIHRleHQtbGcgc2hhZG93LTJ4bCBib3JkZXItMiBib3JkZXItZ3JlZW4tNDAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZUhvdmVyPXt7IHNjYWxlOiAxLjEgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZVRhcD17eyBzY2FsZTogMC45NSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIPCflIQgTlVFVkEgUEFSVElEQVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tb3Rpb24uYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1vdGlvbi5idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkZpbmFsaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLXJlZC02MDAgaG92ZXI6YmctcmVkLTUwMCB0ZXh0LXdoaXRlIGZvbnQtYm9sZCBweS0zIHB4LTYgcm91bmRlZC14bCB0ZXh0LWxnIHNoYWRvdy0yeGwgYm9yZGVyLTIgYm9yZGVyLXJlZC00MDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlSG92ZXI9e3sgc2NhbGU6IDEuMSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlVGFwPXt7IHNjYWxlOiAwLjk1IH19XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg4p2MIFRFUk1JTkFSXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21vdGlvbi5idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlIHRleHQtYmFzZSBtdC0yIGJnLWJsYWNrLzYwIHB4LTYgcHktMiByb3VuZGVkLWZ1bGwgZHJvcC1zaGFkb3ctWzBfMnB4XzRweF9yZ2JhKDAsMCwwLDAuOSldXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBTaSBubyBkZWNpZGVzLCBsYSBwYXJ0aWRhIHRlcm1pbmFyw6EgYXV0b23DoXRpY2FtZW50ZVxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciByZWxhdGl2ZSB6LTEwXCJcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbD17eyB5OiA1MCwgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgICAgICAgICBhbmltYXRlPXt7IHk6IDAsIG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbj17eyBkZWxheTogMSB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC13aGl0ZSB0ZXh0LTJ4bCBmb250LW1vbm8gYmctYmxhY2svNTAgcHgtOCBweS00IHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLXdoaXRlLzIwIGFuaW1hdGUtcHVsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEVzcGVyYW5kbyBkZWNpc2nDs24gZGVsIGNvbWFuZGFudGUuLi5cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNTAwIHRleHQtc20gbXQtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgVGllbXBvIHJlc3RhbnRlOiB7dGltZUxlZnR9c1xuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICk7XG59XG4iXSwibmFtZXMiOlsibW90aW9uIiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJGYWN0aW9uIiwiVmljdG9yeVNjcmVlbiIsImdhbWVTdGF0ZSIsImlzSG9zdCIsIm9uUmVzdGFydCIsIm9uRmluYWxpemUiLCJ0aW1lTGVmdCIsInNldFRpbWVMZWZ0IiwiaXNOYXppc1dpbiIsIndpbm5lciIsIkFMRU1BTkVTIiwidGltZXIiLCJzZXRJbnRlcnZhbCIsInByZXYiLCJjbGVhckludGVydmFsIiwiZGl2IiwiY2xhc3NOYW1lIiwiaW5pdGlhbCIsIm9wYWNpdHkiLCJhbmltYXRlIiwic2NhbGUiLCJ0cmFuc2l0aW9uIiwidHlwZSIsInN0aWZmbmVzcyIsImRlbGF5IiwiaDEiLCJwIiwieSIsInF1ZXN0UmVzdWx0cyIsImZpbHRlciIsInIiLCJsZW5ndGgiLCJidXR0b24iLCJvbkNsaWNrIiwid2hpbGVIb3ZlciIsIndoaWxlVGFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./src/components/VictoryScreen.tsx\n");
/***/ }),
/***/ "(ssr)/./src/hooks/useSessionStorage.ts":
/*!****************************************!*\
!*** ./src/hooks/useSessionStorage.ts ***!
\****************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useSessionStorage: () => (/* binding */ useSessionStorage)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction useSessionStorage() {\n const [session, setSession] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n // Cargar sesión al iniciar\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{\n const savedSession = localStorage.getItem(\"resistencia_session\");\n if (savedSession) {\n try {\n const parsed = JSON.parse(savedSession);\n setSession(parsed);\n } catch (e) {\n console.error(\"Error parsing session:\", e);\n localStorage.removeItem(\"resistencia_session\");\n }\n }\n }, []);\n // Guardar sesión\n const saveSession = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((data)=>{\n localStorage.setItem(\"resistencia_session\", JSON.stringify(data));\n setSession(data);\n }, []);\n // Actualizar sesión parcialmente\n const updateSession = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((partial)=>{\n setSession((prev)=>{\n if (!prev) return null;\n const updated = {\n ...prev,\n ...partial\n };\n localStorage.setItem(\"resistencia_session\", JSON.stringify(updated));\n return updated;\n });\n }, []);\n // Limpiar sesión\n const clearSession = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(()=>{\n localStorage.removeItem(\"resistencia_session\");\n setSession(null);\n }, []);\n return {\n session,\n saveSession,\n updateSession,\n clearSession\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9zcmMvaG9va3MvdXNlU2Vzc2lvblN0b3JhZ2UudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXlEO0FBU2xELFNBQVNHO0lBQ1osTUFBTSxDQUFDQyxTQUFTQyxXQUFXLEdBQUdMLCtDQUFRQSxDQUFxQjtJQUUzRCwyQkFBMkI7SUFDM0JDLGdEQUFTQSxDQUFDO1FBQ04sTUFBTUssZUFBZUMsYUFBYUMsT0FBTyxDQUFDO1FBQzFDLElBQUlGLGNBQWM7WUFDZCxJQUFJO2dCQUNBLE1BQU1HLFNBQVNDLEtBQUtDLEtBQUssQ0FBQ0w7Z0JBQzFCRCxXQUFXSTtZQUNmLEVBQUUsT0FBT0csR0FBRztnQkFDUkMsUUFBUUMsS0FBSyxDQUFDLDBCQUEwQkY7Z0JBQ3hDTCxhQUFhUSxVQUFVLENBQUM7WUFDNUI7UUFDSjtJQUNKLEdBQUcsRUFBRTtJQUVMLGlCQUFpQjtJQUNqQixNQUFNQyxjQUFjZCxrREFBV0EsQ0FBQyxDQUFDZTtRQUM3QlYsYUFBYVcsT0FBTyxDQUFDLHVCQUF1QlIsS0FBS1MsU0FBUyxDQUFDRjtRQUMzRFosV0FBV1k7SUFDZixHQUFHLEVBQUU7SUFFTCxpQ0FBaUM7SUFDakMsTUFBTUcsZ0JBQWdCbEIsa0RBQVdBLENBQUMsQ0FBQ21CO1FBQy9CaEIsV0FBV2lCLENBQUFBO1lBQ1AsSUFBSSxDQUFDQSxNQUFNLE9BQU87WUFDbEIsTUFBTUMsVUFBVTtnQkFBRSxHQUFHRCxJQUFJO2dCQUFFLEdBQUdELE9BQU87WUFBQztZQUN0Q2QsYUFBYVcsT0FBTyxDQUFDLHVCQUF1QlIsS0FBS1MsU0FBUyxDQUFDSTtZQUMzRCxPQUFPQTtRQUNYO0lBQ0osR0FBRyxFQUFFO0lBRUwsaUJBQWlCO0lBQ2pCLE1BQU1DLGVBQWV0QixrREFBV0EsQ0FBQztRQUM3QkssYUFBYVEsVUFBVSxDQUFDO1FBQ3hCVixXQUFXO0lBQ2YsR0FBRyxFQUFFO0lBRUwsT0FBTztRQUNIRDtRQUNBWTtRQUNBSTtRQUNBSTtJQUNKO0FBQ0oiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZXNpc3RlbmNpYS1jbGllbnQvLi9zcmMvaG9va3MvdXNlU2Vzc2lvblN0b3JhZ2UudHM/ZTczNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcblxuaW50ZXJmYWNlIFNlc3Npb25EYXRhIHtcbiAgICBwbGF5ZXJOYW1lOiBzdHJpbmc7XG4gICAgZnVsbFBsYXllck5hbWU6IHN0cmluZztcbiAgICBjdXJyZW50VmlldzogJ2xvZ2luJyB8ICdsb2JieScgfCAnZ2FtZSc7XG4gICAgcm9vbUlkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlU2Vzc2lvblN0b3JhZ2UoKSB7XG4gICAgY29uc3QgW3Nlc3Npb24sIHNldFNlc3Npb25dID0gdXNlU3RhdGU8U2Vzc2lvbkRhdGEgfCBudWxsPihudWxsKTtcblxuICAgIC8vIENhcmdhciBzZXNpw7NuIGFsIGluaWNpYXJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCBzYXZlZFNlc3Npb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncmVzaXN0ZW5jaWFfc2Vzc2lvbicpO1xuICAgICAgICBpZiAoc2F2ZWRTZXNzaW9uKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2Uoc2F2ZWRTZXNzaW9uKTtcbiAgICAgICAgICAgICAgICBzZXRTZXNzaW9uKHBhcnNlZCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyBzZXNzaW9uOicsIGUpO1xuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdyZXNpc3RlbmNpYV9zZXNzaW9uJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbXSk7XG5cbiAgICAvLyBHdWFyZGFyIHNlc2nDs25cbiAgICBjb25zdCBzYXZlU2Vzc2lvbiA9IHVzZUNhbGxiYWNrKChkYXRhOiBTZXNzaW9uRGF0YSkgPT4ge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgncmVzaXN0ZW5jaWFfc2Vzc2lvbicsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgICAgICAgc2V0U2Vzc2lvbihkYXRhKTtcbiAgICB9LCBbXSk7XG5cbiAgICAvLyBBY3R1YWxpemFyIHNlc2nDs24gcGFyY2lhbG1lbnRlXG4gICAgY29uc3QgdXBkYXRlU2Vzc2lvbiA9IHVzZUNhbGxiYWNrKChwYXJ0aWFsOiBQYXJ0aWFsPFNlc3Npb25EYXRhPikgPT4ge1xuICAgICAgICBzZXRTZXNzaW9uKHByZXYgPT4ge1xuICAgICAgICAgICAgaWYgKCFwcmV2KSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWQgPSB7IC4uLnByZXYsIC4uLnBhcnRpYWwgfTtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdyZXNpc3RlbmNpYV9zZXNzaW9uJywgSlNPTi5zdHJpbmdpZnkodXBkYXRlZCkpO1xuICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZWQ7XG4gICAgICAgIH0pO1xuICAgIH0sIFtdKTtcblxuICAgIC8vIExpbXBpYXIgc2VzacOzblxuICAgIGNvbnN0IGNsZWFyU2Vzc2lvbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3Jlc2lzdGVuY2lhX3Nlc3Npb24nKTtcbiAgICAgICAgc2V0U2Vzc2lvbihudWxsKTtcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBzZXNzaW9uLFxuICAgICAgICBzYXZlU2Vzc2lvbixcbiAgICAgICAgdXBkYXRlU2Vzc2lvbixcbiAgICAgICAgY2xlYXJTZXNzaW9uXG4gICAgfTtcbn1cbiJdLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInVzZUNhbGxiYWNrIiwidXNlU2Vzc2lvblN0b3JhZ2UiLCJzZXNzaW9uIiwic2V0U2Vzc2lvbiIsInNhdmVkU2Vzc2lvbiIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJwYXJzZWQiLCJKU09OIiwicGFyc2UiLCJlIiwiY29uc29sZSIsImVycm9yIiwicmVtb3ZlSXRlbSIsInNhdmVTZXNzaW9uIiwiZGF0YSIsInNldEl0ZW0iLCJzdHJpbmdpZnkiLCJ1cGRhdGVTZXNzaW9uIiwicGFydGlhbCIsInByZXYiLCJ1cGRhdGVkIiwiY2xlYXJTZXNzaW9uIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./src/hooks/useSessionStorage.ts\n");
/***/ }),
/***/ "(ssr)/./src/hooks/useSocket.ts":
/*!********************************!*\
!*** ./src/hooks/useSocket.ts ***!
\********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useSocket: () => (/* binding */ useSocket)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var socket_io_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! socket.io-client */ \"(ssr)/./node_modules/socket.io-client/build/esm-debug/index.js\");\n\n\nconst SOCKET_URL = \"http://192.168.1.131:4000\" || 0;\nconst useSocket = ()=>{\n const [socket, setSocket] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n const [gameState, setGameState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n const [isConnected, setIsConnected] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n const [roomsList, setRoomsList] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{\n const socketInstance = (0,socket_io_client__WEBPACK_IMPORTED_MODULE_1__.io)(SOCKET_URL);\n socketInstance.on(\"connect\", ()=>{\n console.log(\"[SOCKET] Conectado exitosamente\");\n setIsConnected(true);\n });\n socketInstance.on(\"disconnect\", ()=>{\n console.log(\"[SOCKET] Desconectado del servidor\");\n setIsConnected(false);\n });\n socketInstance.on(\"game_state\", (newState)=>{\n setGameState(newState);\n });\n socketInstance.on(\"rooms_list\", (rooms)=>{\n setRoomsList(rooms);\n });\n socketInstance.on(\"game_joined\", ({ state })=>{\n setGameState(state);\n });\n socketInstance.on(\"error\", (msg)=>{\n console.error(\"[SOCKET ERROR]\", msg);\n // Evitamos alert() por ser mala práctica en producción y disparar linters\n });\n socketInstance.on(\"game_finalized\", ()=>{\n setGameState(null);\n });\n socketInstance.on(\"player_left_game\", ({ playerName })=>{\n console.log(`[INFO] Agente ${playerName} fuera de combate.`);\n });\n setSocket(socketInstance);\n return ()=>{\n socketInstance.disconnect();\n };\n }, []);\n const actions = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({\n createGame: (hostName, maxPlayers, password)=>{\n socket?.emit(\"create_game\", {\n hostName,\n maxPlayers,\n password\n });\n },\n joinGame: (roomId, playerName, password)=>{\n socket?.emit(\"join_game\", {\n roomId,\n playerName,\n password\n });\n },\n refreshRooms: ()=>{\n socket?.emit(\"get_rooms\");\n },\n startGame: ()=>{\n socket?.emit(\"start_game\", {\n roomId: gameState?.roomId\n });\n },\n proposeTeam: (teamIds)=>{\n socket?.emit(\"propose_team\", {\n roomId: gameState?.roomId,\n teamIds\n });\n },\n voteTeam: (approve)=>{\n socket?.emit(\"vote_team\", {\n roomId: gameState?.roomId,\n approve\n });\n },\n voteMission: (success)=>{\n socket?.emit(\"vote_mission\", {\n roomId: gameState?.roomId,\n success\n });\n },\n voteLeader: (approve)=>socket?.emit(\"vote_leader\", {\n roomId: gameState?.roomId,\n approve\n }),\n assassinKill: (targetId)=>{\n socket?.emit(\"assassin_kill\", {\n roomId: gameState?.roomId,\n targetId\n });\n },\n leaveGame: ()=>{\n socket?.emit(\"leave_game\", {\n roomId: gameState?.roomId\n });\n },\n reconnectSession: (sessionData)=>{\n socket?.emit(\"reconnect_session\", sessionData);\n },\n finishIntro: ()=>socket?.emit(\"finish_intro\", {\n roomId: gameState?.roomId\n }),\n finishReveal: ()=>socket?.emit(\"finish_reveal\", {\n roomId: gameState?.roomId\n }),\n finishRollCall: ()=>socket?.emit(\"finish_roll_call\", {\n roomId: gameState?.roomId\n }),\n finishMissionReveal: ()=>socket?.emit(\"finish_reveal\", {\n roomId: gameState?.roomId\n }),\n finishMissionResult: ()=>socket?.emit(\"finish_mission_result\", {\n roomId: gameState?.roomId\n }),\n restartGame: ()=>socket?.emit(\"restart_game\", {\n roomId: gameState?.roomId\n }),\n finalizeGame: ()=>socket?.emit(\"finalize_game\", {\n roomId: gameState?.roomId\n })\n }), [\n socket,\n gameState?.roomId\n ]);\n return {\n socket,\n isConnected,\n gameState,\n roomsList,\n actions\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LENBQUNDO2dCQUNmeEMsUUFBUXdCLEtBQUsscUJBQXFCZ0I7WUFDdEM7WUFDQUMsYUFBYSxJQUFNekMsUUFBUXdCLEtBQUssZ0JBQWdCO29CQUFFRSxRQUFReEIsV0FBV3dCO2dCQUFPO1lBQzVFZ0IsY0FBYyxJQUFNMUMsUUFBUXdCLEtBQUssaUJBQWlCO29CQUFFRSxRQUFReEIsV0FBV3dCO2dCQUFPO1lBQzlFaUIsZ0JBQWdCLElBQU0zQyxRQUFRd0IsS0FBSyxvQkFBb0I7b0JBQUVFLFFBQVF4QixXQUFXd0I7Z0JBQU87WUFDbkZrQixxQkFBcUIsSUFBTTVDLFFBQVF3QixLQUFLLGlCQUFpQjtvQkFBRUUsUUFBUXhCLFdBQVd3QjtnQkFBTztZQUNyRm1CLHFCQUFxQixJQUFNN0MsUUFBUXdCLEtBQUsseUJBQXlCO29CQUFFRSxRQUFReEIsV0FBV3dCO2dCQUFPO1lBQzdGb0IsYUFBYSxJQUFNOUMsUUFBUXdCLEtBQUssZ0JBQWdCO29CQUFFRSxRQUFReEIsV0FBV3dCO2dCQUFPO1lBQzVFcUIsY0FBYyxJQUFNL0MsUUFBUXdCLEtBQUssaUJBQWlCO29CQUFFRSxRQUFReEIsV0FBV3dCO2dCQUFPO1FBQ2xGLElBQUk7UUFBQzFCO1FBQVFFLFdBQVd3QjtLQUFPO0lBRS9CLE9BQU87UUFDSDFCO1FBQ0FJO1FBQ0FGO1FBQ0FJO1FBQ0FhO0lBQ0o7QUFDSixFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVzaXN0ZW5jaWEtY2xpZW50Ly4vc3JjL2hvb2tzL3VzZVNvY2tldC50cz8wNDY5Il0sInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSwgdXNlTWVtbywgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpbywgU29ja2V0IH0gZnJvbSAnc29ja2V0LmlvLWNsaWVudCc7XG5pbXBvcnQgeyBHYW1lU3RhdGUsIEdhbWVSb29tIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3R5cGVzJztcblxuY29uc3QgU09DS0VUX1VSTCA9IHByb2Nlc3MuZW52Lk5FWFRfUFVCTElDX0FQSV9VUkwgfHwgJ2h0dHA6Ly9sb2NhbGhvc3Q6NDAwMCc7XG5cbmV4cG9ydCBjb25zdCB1c2VTb2NrZXQgPSAoKSA9PiB7XG4gICAgY29uc3QgW3NvY2tldCwgc2V0U29ja2V0XSA9IHVzZVN0YXRlPFNvY2tldCB8IG51bGw+KG51bGwpO1xuICAgIGNvbnN0IFtnYW1lU3RhdGUsIHNldEdhbWVTdGF0ZV0gPSB1c2VTdGF0ZTxHYW1lU3RhdGUgfCBudWxsPihudWxsKTtcbiAgICBjb25zdCBbaXNDb25uZWN0ZWQsIHNldElzQ29ubmVjdGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbcm9vbXNMaXN0LCBzZXRSb29tc0xpc3RdID0gdXNlU3RhdGU8R2FtZVJvb21bXT4oW10pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3Qgc29ja2V0SW5zdGFuY2UgPSBpbyhTT0NLRVRfVVJMKTtcblxuICAgICAgICBzb2NrZXRJbnN0YW5jZS5vbignY29ubmVjdCcsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbU09DS0VUXSBDb25lY3RhZG8gZXhpdG9zYW1lbnRlJyk7XG4gICAgICAgICAgICBzZXRJc0Nvbm5lY3RlZCh0cnVlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc29ja2V0SW5zdGFuY2Uub24oJ2Rpc2Nvbm5lY3QnLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnW1NPQ0tFVF0gRGVzY29uZWN0YWRvIGRlbCBzZXJ2aWRvcicpO1xuICAgICAgICAgICAgc2V0SXNDb25uZWN0ZWQoZmFsc2UpO1xuICAgICAgICB9KTtcblxuICAgICAgICBzb2NrZXRJbnN0YW5jZS5vbignZ2FtZV9zdGF0ZScsIChuZXdTdGF0ZTogR2FtZVN0YXRlKSA9PiB7XG4gICAgICAgICAgICBzZXRHYW1lU3RhdGUobmV3U3RhdGUpO1xuICAgICAgICB9KTtcblxuICAgICAgICBzb2NrZXRJbnN0YW5jZS5vbigncm9vbXNfbGlzdCcsIChyb29tczogR2FtZVJvb21bXSkgPT4ge1xuICAgICAgICAgICAgc2V0Um9vbXNMaXN0KHJvb21zKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc29ja2V0SW5zdGFuY2Uub24oJ2dhbWVfam9pbmVkJywgKHsgc3RhdGUgfTogeyByb29tSWQ6IHN0cmluZywgc3RhdGU6IEdhbWVTdGF0ZSB9KSA9PiB7XG4gICAgICAgICAgICBzZXRHYW1lU3RhdGUoc3RhdGUpO1xuICAgICAgICB9KTtcblxuICAgICAgICBzb2NrZXRJbnN0YW5jZS5vbignZXJyb3InLCAobXNnOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tTT0NLRVQgRVJST1JdJywgbXNnKTtcbiAgICAgICAgICAgIC8vIEV2aXRhbW9zIGFsZXJ0KCkgcG9yIHNlciBtYWxhIHByw6FjdGljYSBlbiBwcm9kdWNjacOzbiB5IGRpc3BhcmFyIGxpbnRlcnNcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc29ja2V0SW5zdGFuY2Uub24oJ2dhbWVfZmluYWxpemVkJywgKCkgPT4ge1xuICAgICAgICAgICAgc2V0R2FtZVN0YXRlKG51bGwpO1xuICAgICAgICB9KTtcblxuICAgICAgICBzb2NrZXRJbnN0YW5jZS5vbigncGxheWVyX2xlZnRfZ2FtZScsICh7IHBsYXllck5hbWUgfTogeyBwbGF5ZXJOYW1lOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYFtJTkZPXSBBZ2VudGUgJHtwbGF5ZXJOYW1lfSBmdWVyYSBkZSBjb21iYXRlLmApO1xuICAgICAgICB9KTtcblxuICAgICAgICBzZXRTb2NrZXQoc29ja2V0SW5zdGFuY2UpO1xuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBzb2NrZXRJbnN0YW5jZS5kaXNjb25uZWN0KCk7XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xuXG4gICAgY29uc3QgYWN0aW9ucyA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICAgICAgY3JlYXRlR2FtZTogKGhvc3ROYW1lOiBzdHJpbmcsIG1heFBsYXllcnM6IG51bWJlciwgcGFzc3dvcmQ/OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHNvY2tldD8uZW1pdCgnY3JlYXRlX2dhbWUnLCB7IGhvc3ROYW1lLCBtYXhQbGF5ZXJzLCBwYXNzd29yZCB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgam9pbkdhbWU6IChyb29tSWQ6IHN0cmluZywgcGxheWVyTmFtZTogc3RyaW5nLCBwYXNzd29yZD86IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgc29ja2V0Py5lbWl0KCdqb2luX2dhbWUnLCB7IHJvb21JZCwgcGxheWVyTmFtZSwgcGFzc3dvcmQgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlZnJlc2hSb29tczogKCkgPT4ge1xuICAgICAgICAgICAgc29ja2V0Py5lbWl0KCdnZXRfcm9vbXMnKTtcbiAgICAgICAgfSxcbiAgICAgICAgc3RhcnRHYW1lOiAoKSA9PiB7XG4gICAgICAgICAgICBzb2NrZXQ/LmVtaXQoJ3N0YXJ0X2dhbWUnLCB7IHJvb21JZDogZ2FtZVN0YXRlPy5yb29tSWQgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHByb3Bvc2VUZWFtOiAodGVhbUlkczogc3RyaW5nW10pID0+IHtcbiAgICAgICAgICAgIHNvY2tldD8uZW1pdCgncHJvcG9zZV90ZWFtJywgeyByb29tSWQ6IGdhbWVTdGF0ZT8ucm9vbUlkLCB0ZWFtSWRzIH0pO1xuICAgICAgICB9LFxuICAgICAgICB2b3RlVGVhbTogKGFwcHJvdmU6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgIHNvY2tldD8uZW1pdCgndm90ZV90ZWFtJywgeyByb29tSWQ6IGdhbWVTdGF0ZT8ucm9vbUlkLCBhcHByb3ZlIH0pO1xuICAgICAgICB9LFxuICAgICAgICB2b3RlTWlzc2lvbjogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgIHNvY2tldD8uZW1pdCgndm90ZV9taXNzaW9uJywgeyByb29tSWQ6IGdhbWVTdGF0ZT8ucm9vbUlkLCBzdWNjZXNzIH0pO1xuICAgICAgICB9LFxuICAgICAgICB2b3RlTGVhZGVyOiAoYXBwcm92ZTogYm9vbGVhbikgPT4gc29ja2V0Py5lbWl0KCd2b3RlX2xlYWRlcicsIHsgcm9vbUlkOiBnYW1lU3RhdGU/LnJvb21JZCwgYXBwcm92ZSB9KSxcbiAgICAgICAgYXNzYXNzaW5LaWxsOiAodGFyZ2V0SWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgc29ja2V0Py5lbWl0KCdhc3Nhc3Npbl9raWxsJywgeyByb29tSWQ6IGdhbWVTdGF0ZT8ucm9vbUlkLCB0YXJnZXRJZCB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgbGVhdmVHYW1lOiAoKSA9PiB7XG4gICAgICAgICAgICBzb2NrZXQ/LmVtaXQoJ2xlYXZlX2dhbWUnLCB7IHJvb21JZDogZ2FtZVN0YXRlPy5yb29tSWQgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlY29ubmVjdFNlc3Npb246IChzZXNzaW9uRGF0YTogeyBwbGF5ZXJOYW1lOiBzdHJpbmc7IHJvb21JZD86IHN0cmluZyB9KSA9PiB7XG4gICAgICAgICAgICBzb2NrZXQ/LmVtaXQoJ3JlY29ubmVjdF9zZXNzaW9uJywgc2Vzc2lvbkRhdGEpO1xuICAgICAgICB9LFxuICAgICAgICBmaW5pc2hJbnRybzogKCkgPT4gc29ja2V0Py5lbWl0KCdmaW5pc2hfaW50cm8nLCB7IHJvb21JZDogZ2FtZVN0YXRlPy5yb29tSWQgfSksXG4gICAgICAgIGZpbmlzaFJldmVhbDogKCkgPT4gc29ja2V0Py5lbWl0KCdmaW5pc2hfcmV2ZWFsJywgeyByb29tSWQ6IGdhbWVTdGF0ZT8ucm9vbUlkIH0pLFxuICAgICAgICBmaW5pc2hSb2xsQ2FsbDogKCkgPT4gc29ja2V0Py5lbWl0KCdmaW5pc2hfcm9sbF9jYWxsJywgeyByb29tSWQ6IGdhbWVTdGF0ZT8ucm9vbUlkIH0pLFxuICAgICAgICBmaW5pc2hNaXNzaW9uUmV2ZWFsOiAoKSA9PiBzb2NrZXQ/LmVtaXQoJ2ZpbmlzaF9yZXZlYWwnLCB7IHJvb21JZDogZ2FtZVN0YXRlPy5yb29tSWQgfSksXG4gICAgICAgIGZpbmlzaE1pc3Npb25SZXN1bHQ6ICgpID0+IHNvY2tldD8uZW1pdCgnZmluaXNoX21pc3Npb25fcmVzdWx0JywgeyByb29tSWQ6IGdhbWVTdGF0ZT8ucm9vbUlkIH0pLFxuICAgICAgICByZXN0YXJ0R2FtZTogKCkgPT4gc29ja2V0Py5lbWl0KCdyZXN0YXJ0X2dhbWUnLCB7IHJvb21JZDogZ2FtZVN0YXRlPy5yb29tSWQgfSksXG4gICAgICAgIGZpbmFsaXplR2FtZTogKCkgPT4gc29ja2V0Py5lbWl0KCdmaW5hbGl6ZV9nYW1lJywgeyByb29tSWQ6IGdhbWVTdGF0ZT8ucm9vbUlkIH0pXG4gICAgfSksIFtzb2NrZXQsIGdhbWVTdGF0ZT8ucm9vbUlkXSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBzb2NrZXQsXG4gICAgICAgIGlzQ29ubmVjdGVkLFxuICAgICAgICBnYW1lU3RhdGUsXG4gICAgICAgIHJvb21zTGlzdCxcbiAgICAgICAgYWN0aW9uc1xuICAgIH07XG59O1xuIl0sIm5hbWVzIjpbInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidXNlTWVtbyIsImlvIiwiU09DS0VUX1VSTCIsInByb2Nlc3MiLCJlbnYiLCJORVhUX1BVQkxJQ19BUElfVVJMIiwidXNlU29ja2V0Iiwic29ja2V0Iiwic2V0U29ja2V0IiwiZ2FtZVN0YXRlIiwic2V0R2FtZVN0YXRlIiwiaXNDb25uZWN0ZWQiLCJzZXRJc0Nvbm5lY3RlZCIsInJvb21zTGlzdCIsInNldFJvb21zTGlzdCIsInNvY2tldEluc3RhbmNlIiwib24iLCJjb25zb2xlIiwibG9nIiwibmV3U3RhdGUiLCJyb29tcyIsInN0YXRlIiwibXNnIiwiZXJyb3IiLCJwbGF5ZXJOYW1lIiwiZGlzY29ubmVjdCIsImFjdGlvbnMiLCJjcmVhdGVHYW1lIiwiaG9zdE5hbWUiLCJtYXhQbGF5ZXJzIiwicGFzc3dvcmQiLCJlbWl0Iiwiam9pbkdhbWUiLCJyb29tSWQiLCJyZWZyZXNoUm9vbXMiLCJzdGFydEdhbWUiLCJwcm9wb3NlVGVhbSIsInRlYW1JZHMiLCJ2b3RlVGVhbSIsImFwcHJvdmUiLCJ2b3RlTWlzc2lvbiIsInN1Y2Nlc3MiLCJ2b3RlTGVhZGVyIiwiYXNzYXNzaW5LaWxsIiwidGFyZ2V0SWQiLCJsZWF2ZUdhbWUiLCJyZWNvbm5lY3RTZXNzaW9uIiwic2Vzc2lvbkRhdGEiLCJmaW5pc2hJbnRybyIsImZpbmlzaFJldmVhbCIsImZpbmlzaFJvbGxDYWxsIiwiZmluaXNoTWlzc2lvblJldmVhbCIsImZpbmlzaE1pc3Npb25SZXN1bHQiLCJyZXN0YXJ0R2FtZSIsImZpbmFsaXplR2FtZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./src/hooks/useSocket.ts\n");
/***/ }),
/***/ "(ssr)/../shared/types.ts":
/*!**************************!*\
!*** ../shared/types.ts ***!
\**************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Faction: () => (/* binding */ Faction),\n/* harmony export */ GAME_CONFIG: () => (/* binding */ GAME_CONFIG),\n/* harmony export */ GamePhase: () => (/* binding */ GamePhase),\n/* harmony export */ Role: () => (/* binding */ Role)\n/* harmony export */ });\nvar Role;\n(function(Role) {\n // Bando Aliado (Resistencia Francesa)\n Role[\"MARLENE\"] = \"marlene\";\n Role[\"CAPITAN_PHILIPPE\"] = \"capitan_philippe\";\n Role[\"PARTISANO\"] = \"partisano\";\n // Bando Alemán (Ocupación Nazi)\n Role[\"COMANDANTE_SCHMIDT\"] = \"comandante_schmidt\";\n Role[\"FRANCOTIRADOR\"] = \"francotirador\";\n Role[\"AGENTE_DOBLE\"] = \"agente_doble\";\n Role[\"INFILTRADO\"] = \"infiltrado\";\n Role[\"COLABORACIONISTA\"] = \"colaboracionista\";\n})(Role || (Role = {}));\nvar Faction;\n(function(Faction) {\n Faction[\"ALIADOS\"] = \"aliados\";\n Faction[\"ALEMANES\"] = \"alemanes\";\n})(Faction || (Faction = {}));\nvar GamePhase;\n(function(GamePhase) {\n GamePhase[\"LOBBY\"] = \"lobby\";\n GamePhase[\"INTRO\"] = \"intro\";\n GamePhase[\"REVEAL_ROLE\"] = \"reveal_role\";\n GamePhase[\"ROLL_CALL\"] = \"roll_call\";\n GamePhase[\"VOTE_LEADER\"] = \"vote_leader\";\n GamePhase[\"TEAM_BUILDING\"] = \"team_building\";\n GamePhase[\"VOTING_TEAM\"] = \"voting_team\";\n GamePhase[\"MISSION\"] = \"mission\";\n GamePhase[\"MISSION_REVEAL\"] = \"mission_reveal\";\n GamePhase[\"MISSION_RESULT\"] = \"mission_result\";\n GamePhase[\"ASSASSIN_PHASE\"] = \"assassin_phase\";\n GamePhase[\"NAZIS_WIN\"] = \"nazis_win\";\n GamePhase[\"ALLIED_WIN\"] = \"allied_win\";\n GamePhase[\"GAME_OVER\"] = \"game_over\";\n})(GamePhase || (GamePhase = {}));\n// Configuración de jugadores por partida (según tus reglas)\nconst GAME_CONFIG = {\n 5: {\n good: 3,\n evil: 2,\n quests: [\n 2,\n 3,\n 2,\n 3,\n 3\n ]\n },\n 6: {\n good: 4,\n evil: 2,\n quests: [\n 2,\n 3,\n 4,\n 3,\n 4\n ]\n },\n 7: {\n good: 4,\n evil: 3,\n quests: [\n 2,\n 3,\n 3,\n 4,\n 4\n ]\n },\n 8: {\n good: 5,\n evil: 3,\n quests: [\n 3,\n 4,\n 4,\n 5,\n 5\n ]\n },\n 9: {\n good: 6,\n evil: 3,\n quests: [\n 3,\n 4,\n 4,\n 5,\n 5\n ]\n },\n 10: {\n good: 6,\n evil: 4,\n quests: [\n 3,\n 4,\n 4,\n 5,\n 5\n ]\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi4vc2hhcmVkL3R5cGVzLnRzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O1VBQVlBO0lBQ1Isc0NBQXNDOzs7O0lBS3RDLGdDQUFnQzs7Ozs7O0dBTnhCQSxTQUFBQTs7VUFjQUM7OztHQUFBQSxZQUFBQTs7VUFLQUM7Ozs7Ozs7Ozs7Ozs7OztHQUFBQSxjQUFBQTtBQTBFWiw0REFBNEQ7QUFDckQsTUFBTUMsY0FBYztJQUN2QixHQUFHO1FBQUVDLE1BQU07UUFBR0MsTUFBTTtRQUFHQyxRQUFRO1lBQUM7WUFBRztZQUFHO1lBQUc7WUFBRztTQUFFO0lBQUM7SUFDL0MsR0FBRztRQUFFRixNQUFNO1FBQUdDLE1BQU07UUFBR0MsUUFBUTtZQUFDO1lBQUc7WUFBRztZQUFHO1lBQUc7U0FBRTtJQUFDO0lBQy9DLEdBQUc7UUFBRUYsTUFBTTtRQUFHQyxNQUFNO1FBQUdDLFFBQVE7WUFBQztZQUFHO1lBQUc7WUFBRztZQUFHO1NBQUU7SUFBQztJQUMvQyxHQUFHO1FBQUVGLE1BQU07UUFBR0MsTUFBTTtRQUFHQyxRQUFRO1lBQUM7WUFBRztZQUFHO1lBQUc7WUFBRztTQUFFO0lBQUM7SUFDL0MsR0FBRztRQUFFRixNQUFNO1FBQUdDLE1BQU07UUFBR0MsUUFBUTtZQUFDO1lBQUc7WUFBRztZQUFHO1lBQUc7U0FBRTtJQUFDO0lBQy9DLElBQUk7UUFBRUYsTUFBTTtRQUFHQyxNQUFNO1FBQUdDLFFBQVE7WUFBQztZQUFHO1lBQUc7WUFBRztZQUFHO1NBQUU7SUFBQztBQUNwRCxFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVzaXN0ZW5jaWEtY2xpZW50Ly4uL3NoYXJlZC90eXBlcy50cz84MTEwIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFJvbGUge1xuICAgIC8vIEJhbmRvIEFsaWFkbyAoUmVzaXN0ZW5jaWEgRnJhbmNlc2EpXG4gICAgTUFSTEVORSA9ICdtYXJsZW5lJywgICAgICAgICAgICAgICAgICAgIC8vIEFnZW50ZSBkZSBpbnRlbGlnZW5jaWEgKGFudGVzIE1lcmxpbilcbiAgICBDQVBJVEFOX1BISUxJUFBFID0gJ2NhcGl0YW5fcGhpbGlwcGUnLCAgLy8gT2ZpY2lhbCBxdWUgY29ub2NlIGEgTWFybGVuZSAoYW50ZXMgUGVyY2l2YWwpXG4gICAgUEFSVElTQU5PID0gJ3BhcnRpc2FubycsICAgICAgICAgICAgICAgIC8vIE1pZW1icm8gbGVhbCBkZSBsYSByZXNpc3RlbmNpYSAoYW50ZXMgTG95YWwgU2VydmFudClcblxuICAgIC8vIEJhbmRvIEFsZW3DoW4gKE9jdXBhY2nDs24gTmF6aSlcbiAgICBDT01BTkRBTlRFX1NDSE1JRFQgPSAnY29tYW5kYW50ZV9zY2htaWR0JywgLy8gT2ZpY2lhbCBuYXppIG9jdWx0byAoYW50ZXMgTW9yZHJlZClcbiAgICBGUkFOQ09USVJBRE9SID0gJ2ZyYW5jb3RpcmFkb3InLCAgICAgICAgICAgLy8gUHVlZGUgZWxpbWluYXIgYSBNYXJsZW5lIChhbnRlcyBBc3Nhc3NpbilcbiAgICBBR0VOVEVfRE9CTEUgPSAnYWdlbnRlX2RvYmxlJywgICAgICAgICAgICAvLyBTZSBoYWNlIHBhc2FyIHBvciBNYXJsZW5lIChhbnRlcyBNb3JnYW5hKVxuICAgIElORklMVFJBRE8gPSAnaW5maWx0cmFkbycsICAgICAgICAgICAgICAgICAvLyBFc3DDrWEgc29saXRhcmlvIChhbnRlcyBPYmVyb24pXG4gICAgQ09MQUJPUkFDSU9OSVNUQSA9ICdjb2xhYm9yYWNpb25pc3RhJywgICAgIC8vIEVzcMOtYSBnZW7DqXJpY28gKGFudGVzIE1pbmlvbi9TcHkpXG59XG5cbmV4cG9ydCBlbnVtIEZhY3Rpb24ge1xuICAgIEFMSUFET1MgPSAnYWxpYWRvcycsICAgICAgLy8gQW50ZXMgUkVTSVNUQU5DRVxuICAgIEFMRU1BTkVTID0gJ2FsZW1hbmVzJywgICAgLy8gQW50ZXMgU1BJRVNcbn1cblxuZXhwb3J0IGVudW0gR2FtZVBoYXNlIHtcbiAgICBMT0JCWSA9ICdsb2JieScsXG4gICAgSU5UUk8gPSAnaW50cm8nLFxuICAgIFJFVkVBTF9ST0xFID0gJ3JldmVhbF9yb2xlJyxcbiAgICBST0xMX0NBTEwgPSAncm9sbF9jYWxsJyxcbiAgICBWT1RFX0xFQURFUiA9ICd2b3RlX2xlYWRlcicsICAgICAvLyBWb3RhciBzaSBzZSBhY2VwdGEgYWwgbMOtZGVyXG4gICAgVEVBTV9CVUlMRElORyA9ICd0ZWFtX2J1aWxkaW5nJywgLy8gTMOtZGVyIHByb3BvbmUgZXF1aXBvXG4gICAgVk9USU5HX1RFQU0gPSAndm90aW5nX3RlYW0nLCAgICAgLy8gVG9kb3Mgdm90YW4gc2kgYXBydWViYW4gZWwgZXF1aXBvXG4gICAgTUlTU0lPTiA9ICdtaXNzaW9uJywgICAgICAgICAgICAgLy8gTG9zIGVsZWdpZG9zIHZvdGFuIMOpeGl0by9mcmFjYXNvXG4gICAgTUlTU0lPTl9SRVZFQUwgPSAnbWlzc2lvbl9yZXZlYWwnLCAvLyBNb3N0cmFyIGNhcnRhcyB1bmEgYSB1bmFcbiAgICBNSVNTSU9OX1JFU1VMVCA9ICdtaXNzaW9uX3Jlc3VsdCcsIC8vIFBhbnRhbGxhIGRlIHJlc3VtZW5cbiAgICBBU1NBU1NJTl9QSEFTRSA9ICdhc3Nhc3Npbl9waGFzZScsIC8vIFNpIGdhbmEgZWwgYmllbiwgZWwgYXNlc2lubyBpbnRlbnRhIG1hdGFyIGEgTWFybGVuZVxuICAgIE5BWklTX1dJTiA9ICduYXppc193aW4nLCAgICAgICAgIC8vIFBhbnRhbGxhIGRlIHZpY3RvcmlhIGRlIGxvcyBOYXppc1xuICAgIEFMTElFRF9XSU4gPSAnYWxsaWVkX3dpbicsICAgICAgIC8vIFBhbnRhbGxhIGRlIHZpY3RvcmlhIGRlIGxvcyBBbGlhZG9zXG4gICAgR0FNRV9PVkVSID0gJ2dhbWVfb3ZlcicsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxheWVyIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBhdmF0YXI6IHN0cmluZzsgLy8gQXZhdGFyIHBlcnNpc3RlbnRlXG4gICAgcm9sZT86IFJvbGU7XG4gICAgZmFjdGlvbj86IEZhY3Rpb247XG4gICAgaXNMZWFkZXI6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWlzc2lvblJlc3VsdCB7XG4gICAgc3VjY2Vzc2VzOiBudW1iZXI7XG4gICAgZmFpbHM6IG51bWJlcjtcbiAgICBpc1N1Y2Nlc3M6IGJvb2xlYW47XG59XG5cbi8vIFJlZ2lzdHJvIGRlIHVuYSBtaXNpw7NuIGNvbXBsZXRhZGFcbmV4cG9ydCBpbnRlcmZhY2UgTWlzc2lvblJlY29yZCB7XG4gICAgcm91bmQ6IG51bWJlcjtcbiAgICB0ZWFtOiBzdHJpbmdbXTsgICAgICAgICAgIC8vIElEcyBkZSBsb3MgcGFydGljaXBhbnRlc1xuICAgIHZvdGVzOiBib29sZWFuW107ICAgICAgICAgLy8gVm90b3MgKGJhcmFqYWRvcylcbiAgICBzdWNjZXNzZXM6IG51bWJlcjtcbiAgICBmYWlsczogbnVtYmVyO1xuICAgIGlzU3VjY2VzczogYm9vbGVhbjtcbiAgICBsZWFkZXJJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdhbWVTdGF0ZSB7XG4gICAgcm9vbUlkOiBzdHJpbmc7XG4gICAgcm9vbU5hbWU6IHN0cmluZztcbiAgICBwaGFzZTogR2FtZVBoYXNlO1xuICAgIHBsYXllcnM6IFBsYXllcltdO1xuICAgIGhvc3RJZDogc3RyaW5nO1xuXG4gICAgY3VycmVudFJvdW5kOiBudW1iZXI7XG4gICAgZmFpbGVkVm90ZXNDb3VudDogbnVtYmVyO1xuICAgIHF1ZXN0UmVzdWx0czogKGJvb2xlYW4gfCBudWxsKVtdO1xuXG4gICAgY3VycmVudExlYWRlcklkOiBzdHJpbmc7XG5cbiAgICAvLyBWb3RhY2nDs24gZGUgTMOtZGVyXG4gICAgbGVhZGVyVm90ZXM6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4gfCBudWxsPjtcblxuICAgIC8vIFNlbGVjY2nDs24gZGUgRXF1aXBvIChNaXNpw7NuKVxuICAgIHByb3Bvc2VkVGVhbTogc3RyaW5nW107XG4gICAgdGVhbVZvdGVzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgLy8gVm90b3MgZGUgYXByb2JhY2nDs24gZGVsIGVxdWlwbyAoaWRKdWdhZG9yIC0+IGFwcnVlYmEvcmVjaGF6YSlcbiAgICBtaXNzaW9uVm90ZXM6IGJvb2xlYW5bXTsgICAvLyBWb3RvcyBhbsOzbmltb3MgZGUgbGEgbWlzacOzbiAow6l4aXRvL2ZyYWNhc28pXG5cbiAgICAvLyBIaXN0w7NyaWNvIGRlIG1pc2lvbmVzXG4gICAgbWlzc2lvbkhpc3Rvcnk6IE1pc3Npb25SZWNvcmRbXTtcblxuICAgIC8vIFBhcmEgbGEgYW5pbWFjacOzbiBkZSByZXZlbGFjacOzbiBkZSBjYXJ0YXNcbiAgICByZXZlYWxlZFZvdGVzOiBib29sZWFuW107ICAvLyBWb3RvcyBxdWUgc2UgdmFuIG1vc3RyYW5kbyB1bm8gYSB1bm9cblxuICAgIHdpbm5lcj86IEZhY3Rpb247XG4gICAgaGlzdG9yeTogc3RyaW5nW107IC8vIExvZyBkZSBhY2Npb25lcyBwYXJhIG1vc3RyYXIgZW4gcGFudGFsbGFcbn1cblxuLy8gQ29uZmlndXJhY2nDs24gZGUganVnYWRvcmVzIHBvciBwYXJ0aWRhIChzZWfDum4gdHVzIHJlZ2xhcylcbmV4cG9ydCBjb25zdCBHQU1FX0NPTkZJRyA9IHtcbiAgICA1OiB7IGdvb2Q6IDMsIGV2aWw6IDIsIHF1ZXN0czogWzIsIDMsIDIsIDMsIDNdIH0sXG4gICAgNjogeyBnb29kOiA0LCBldmlsOiAyLCBxdWVzdHM6IFsyLCAzLCA0LCAzLCA0XSB9LFxuICAgIDc6IHsgZ29vZDogNCwgZXZpbDogMywgcXVlc3RzOiBbMiwgMywgMywgNCwgNF0gfSwgLy8gTm90YTogNHRhIG1pc2nDs24gcmVxdWllcmUgMiBmYWxsb3NcbiAgICA4OiB7IGdvb2Q6IDUsIGV2aWw6IDMsIHF1ZXN0czogWzMsIDQsIDQsIDUsIDVdIH0sXG4gICAgOTogeyBnb29kOiA2LCBldmlsOiAzLCBxdWVzdHM6IFszLCA0LCA0LCA1LCA1XSB9LFxuICAgIDEwOiB7IGdvb2Q6IDYsIGV2aWw6IDQsIHF1ZXN0czogWzMsIDQsIDQsIDUsIDVdIH0sXG59O1xuXG4vLyAtLS0gTlVFVk9TIFRJUE9TIFBBUkEgRUwgTE9CQlkgLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgR2FtZVJvb20ge1xuICAgIGlkOiBzdHJpbmc7ICAgICAgICAgIC8vIElEIGludGVybm8gw7puaWNvICh1dWlkKVxuICAgIG5hbWU6IHN0cmluZzsgICAgICAgIC8vIE5vbWJyZSBkZSBtaXNpw7NuIChlajogT3BlcmFjacOzbiBPdmVybG9yZClcbiAgICBob3N0SWQ6IHN0cmluZzsgICAgICAvLyBJRCBkZWwgY3JlYWRvclxuICAgIGN1cnJlbnRQbGF5ZXJzOiBudW1iZXI7XG4gICAgbWF4UGxheWVyczogbnVtYmVyO1xuICAgIGlzUHJpdmF0ZTogYm9vbGVhbjsgIC8vIFNpIHRpZW5lIGNvbnRyYXNlw7FhXG4gICAgc3RhdHVzOiAnd2FpdGluZycgfCAncGxheWluZycgfCAnZmluaXNoZWQnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUdhbWVQYXlsb2FkIHtcbiAgICBob3N0TmFtZTogc3RyaW5nO1xuICAgIG1heFBsYXllcnM6IG51bWJlcjtcbiAgICBwYXNzd29yZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKb2luR2FtZVBheWxvYWQge1xuICAgIHJvb21JZDogc3RyaW5nOyAvLyBQdWVkZSBzZXIgZWwgSUQgbnVtw6lyaWNvIGludGVybm8gbyBsbyBxdWUgdXNlbW9zXG4gICAgcGxheWVyTmFtZTogc3RyaW5nO1xuICAgIHBhc3N3b3JkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvYmJ5TGlzdHMge1xuICAgIHJvb21zOiBHYW1lUm9vbVtdO1xufVxuIl0sIm5hbWVzIjpbIlJvbGUiLCJGYWN0aW9uIiwiR2FtZVBoYXNlIiwiR0FNRV9DT05GSUciLCJnb29kIiwiZXZpbCIsInF1ZXN0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/../shared/types.ts\n");
/***/ }),
/***/ "(rsc)/./src/app/globals.css":
/*!*****************************!*\
!*** ./src/app/globals.css ***!
\*****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (\"955ec95b3e6f\");\nif (false) {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9zcmMvYXBwL2dsb2JhbHMuY3NzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxpRUFBZSxjQUFjO0FBQzdCLElBQUksS0FBVSxFQUFFLEVBQXVCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVzaXN0ZW5jaWEtY2xpZW50Ly4vc3JjL2FwcC9nbG9iYWxzLmNzcz9jMTA2Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IFwiOTU1ZWM5NWIzZTZmXCJcbmlmIChtb2R1bGUuaG90KSB7IG1vZHVsZS5ob3QuYWNjZXB0KCkgfVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./src/app/globals.css\n");
/***/ }),
/***/ "(rsc)/./src/app/layout.tsx":
/*!****************************!*\
!*** ./src/app/layout.tsx ***!
\****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ RootLayout),\n/* harmony export */ metadata: () => (/* binding */ metadata)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(rsc)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_font_google_target_css_path_src_app_layout_tsx_import_Inter_arguments_subsets_latin_variableName_inter___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"} */ \"(rsc)/./node_modules/next/font/google/target.css?{\\\"path\\\":\\\"src/app/layout.tsx\\\",\\\"import\\\":\\\"Inter\\\",\\\"arguments\\\":[{\\\"subsets\\\":[\\\"latin\\\"]}],\\\"variableName\\\":\\\"inter\\\"}\");\n/* harmony import */ var next_font_google_target_css_path_src_app_layout_tsx_import_Inter_arguments_subsets_latin_variableName_inter___WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_font_google_target_css_path_src_app_layout_tsx_import_Inter_arguments_subsets_latin_variableName_inter___WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _globals_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./globals.css */ \"(rsc)/./src/app/globals.css\");\n\n\n\nconst metadata = {\n title: \"Francia Ocupada: WWII\",\n description: \"Juego de deducci\\xf3n social ambientado en la Segunda Guerra Mundial\"\n};\nfunction RootLayout({ children }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"html\", {\n lang: \"es\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"body\", {\n className: (next_font_google_target_css_path_src_app_layout_tsx_import_Inter_arguments_subsets_latin_variableName_inter___WEBPACK_IMPORTED_MODULE_2___default().className),\n children: children\n }, void 0, false, {\n fileName: \"/app/client/src/app/layout.tsx\",\n lineNumber: 19,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/app/client/src/app/layout.tsx\",\n lineNumber: 18,\n columnNumber: 9\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9zcmMvYXBwL2xheW91dC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFJTUE7QUFGZ0I7QUFJZixNQUFNQyxXQUFxQjtJQUM5QkMsT0FBTztJQUNQQyxhQUFhO0FBQ2pCLEVBQUM7QUFFYyxTQUFTQyxXQUFXLEVBQy9CQyxRQUFRLEVBR1g7SUFDRyxxQkFDSSw4REFBQ0M7UUFBS0MsTUFBSztrQkFDUCw0RUFBQ0M7WUFBS0MsV0FBV1QsK0pBQWU7c0JBQUdLOzs7Ozs7Ozs7OztBQUcvQyIsInNvdXJjZXMiOlsid2VicGFjazovL3Jlc2lzdGVuY2lhLWNsaWVudC8uL3NyYy9hcHAvbGF5b3V0LnRzeD81N2E5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTWV0YWRhdGEgfSBmcm9tICduZXh0J1xuaW1wb3J0IHsgSW50ZXIgfSBmcm9tICduZXh0L2ZvbnQvZ29vZ2xlJ1xuaW1wb3J0ICcuL2dsb2JhbHMuY3NzJ1xuXG5jb25zdCBpbnRlciA9IEludGVyKHsgc3Vic2V0czogWydsYXRpbiddIH0pXG5cbmV4cG9ydCBjb25zdCBtZXRhZGF0YTogTWV0YWRhdGEgPSB7XG4gICAgdGl0bGU6ICdGcmFuY2lhIE9jdXBhZGE6IFdXSUknLFxuICAgIGRlc2NyaXB0aW9uOiAnSnVlZ28gZGUgZGVkdWNjacOzbiBzb2NpYWwgYW1iaWVudGFkbyBlbiBsYSBTZWd1bmRhIEd1ZXJyYSBNdW5kaWFsJyxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUm9vdExheW91dCh7XG4gICAgY2hpbGRyZW4sXG59OiB7XG4gICAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZVxufSkge1xuICAgIHJldHVybiAoXG4gICAgICAgIDxodG1sIGxhbmc9XCJlc1wiPlxuICAgICAgICAgICAgPGJvZHkgY2xhc3NOYW1lPXtpbnRlci5jbGFzc05hbWV9PntjaGlsZHJlbn08L2JvZHk+XG4gICAgICAgIDwvaHRtbD5cbiAgICApXG59XG4iXSwibmFtZXMiOlsiaW50ZXIiLCJtZXRhZGF0YSIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJSb290TGF5b3V0IiwiY2hpbGRyZW4iLCJodG1sIiwibGFuZyIsImJvZHkiLCJjbGFzc05hbWUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./src/app/layout.tsx\n");
/***/ }),
/***/ "(rsc)/./src/app/page.tsx":
/*!**************************!*\
!*** ./src/app/page.tsx ***!
\**************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ $$typeof: () => (/* binding */ $$typeof),
/* harmony export */ __esModule: () => (/* binding */ __esModule),
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js");
const proxy = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/app/client/src/app/page.tsx`)
// Accessing the __esModule property and exporting $$typeof are required here.
// The __esModule getter forces the proxy target to create the default export
// and the $$typeof value is for rendering logic to determine if the module
// is a client boundary.
const { __esModule, $$typeof } = proxy;
const __default__ = proxy.default;
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__default__);
/***/ })
};
;
// load runtime
var __webpack_require__ = require("../webpack-runtime.js");
__webpack_require__.C(exports);
var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
var __webpack_exports__ = __webpack_require__.X(0, ["vendor-chunks/next","vendor-chunks/@swc","vendor-chunks/framer-motion","vendor-chunks/ws","vendor-chunks/engine.io-client","vendor-chunks/socket.io-client","vendor-chunks/socket.io-parser","vendor-chunks/xmlhttprequest-ssl","vendor-chunks/engine.io-parser","vendor-chunks/@socket.io","vendor-chunks/ms","vendor-chunks/supports-color","vendor-chunks/has-flag"], () => (__webpack_exec__("(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2Fapp%2Fclient%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2Fapp%2Fclient&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!")));
module.exports = __webpack_exports__;
})();