- Redesigned card display with 2.5:3.5 aspect ratio and image-only view - Added infinite scroll to replace pagination - Implemented authentic card back placeholders for MTG, Pokemon, and Lorcana - Added rarity-based particle effects with tiered intensity (mythic/enchanted/rare/uncommon) - Enhanced hover details panel with structured card information - Fixed search functionality with debouncing and Enter key support - Improved filter system with working TCG, rarity, set, and price filters - Added favorite system for cards in both hover and detail views - Updated card detail page with comprehensive metadata and actions - Fixed API filtering with proper Vercel Postgres implementation - Added particle animations and rarity glow effects - Improved overall UX with better visual hierarchy and interactions
277 lines
No EOL
407 KiB
JavaScript
277 lines
No EOL
407 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 = "pages/cards";
|
|
exports.ids = ["pages/cards"];
|
|
exports.modules = {
|
|
|
|
/***/ "(pages-dir-node)/./components/Layout.js":
|
|
/*!******************************!*\
|
|
!*** ./components/Layout.js ***!
|
|
\******************************/
|
|
/***/ ((__unused_webpack___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 */ Layout)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/router */ \"(pages-dir-node)/./node_modules/next/router.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/link */ \"(pages-dir-node)/./node_modules/next/link.js\");\n/* harmony import */ var _lib_theme_context__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../lib/theme-context */ \"(pages-dir-node)/./lib/theme-context.js\");\n\n\n\n\n\nfunction Layout({ children, user = {\n email: 'me@randallstillwell.com',\n role: 'user'\n} }) {\n const router = (0,next_router__WEBPACK_IMPORTED_MODULE_2__.useRouter)();\n const { theme, toggleTheme } = (0,_lib_theme_context__WEBPACK_IMPORTED_MODULE_4__.useTheme)();\n const [searchQuery, setSearchQuery] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const navigation = [\n {\n name: 'Dashboard',\n href: '/dashboard',\n icon: 'grid',\n active: router.pathname === '/dashboard'\n },\n {\n name: 'My Collection',\n href: '/collections',\n icon: 'collection',\n active: router.pathname === '/collections',\n badge: '247'\n },\n {\n name: 'Cards',\n href: '/cards',\n icon: 'card',\n active: router.pathname === '/cards'\n },\n {\n name: 'Decks',\n href: '/decks',\n icon: 'deck',\n active: router.pathname === '/decks',\n badge: '12'\n },\n {\n name: 'Analytics',\n href: '/analytics',\n icon: 'analytics',\n active: router.pathname === '/analytics'\n },\n {\n name: 'Community',\n href: '/community',\n icon: 'community',\n active: router.pathname === '/community'\n },\n {\n name: 'Settings',\n href: '/settings',\n icon: 'settings',\n active: router.pathname === '/settings'\n },\n {\n name: 'Logout',\n href: '/logout',\n icon: 'logout',\n active: router.pathname === '/logout'\n }\n ];\n const getIcon = (iconName)=>{\n const icons = {\n grid: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M4 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2V6zM14 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V6zM4 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2v-2zM14 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2v-2z\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 26,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 25,\n columnNumber: 9\n }, this),\n collection: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 31,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 30,\n columnNumber: 9\n }, this),\n card: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M3 10h18M7 15h1m4 0h1m-7 4h12a3 3 0 003-3V8a3 3 0 00-3-3H6a3 3 0 00-3 3v8a3 3 0 003 3z\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 36,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 35,\n columnNumber: 9\n }, this),\n deck: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 41,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 40,\n columnNumber: 9\n }, this),\n analytics: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 46,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 45,\n columnNumber: 9\n }, this),\n community: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197m13.5-9a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 51,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 50,\n columnNumber: 9\n }, this),\n settings: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 56,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M15 12a3 3 0 11-6 0 3 3 0 016 0z\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 57,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 55,\n columnNumber: 9\n }, this),\n logout: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 62,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 61,\n columnNumber: 9\n }, this)\n };\n return icons[iconName] || icons.grid;\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex h-screen\",\n style: {\n backgroundColor: 'var(--bg-primary)'\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-64 shadow-lg\",\n style: {\n backgroundColor: 'var(--bg-secondary)',\n borderRight: '1px solid var(--border)'\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center mb-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-10 h-10 logo-container mr-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white font-bold text-sm\",\n children: \"TCG\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 76,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 75,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-xl font-bold\",\n style: {\n color: 'var(--text-primary)'\n },\n children: \"TCG Vault\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 78,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 74,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"space-y-2\",\n children: navigation.map((item)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_3__, {\n href: item.href,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `flex items-center justify-between px-4 py-3 rounded-2xl transition-all duration-200 cursor-pointer ${item.active ? 'shadow-lg' : 'hover:shadow-md'}`,\n style: {\n backgroundColor: item.active ? 'var(--bg-tertiary)' : 'transparent',\n color: item.active ? 'var(--text-primary)' : 'var(--text-secondary)'\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"mr-3\",\n children: getIcon(item.icon)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 96,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium\",\n children: item.name\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 97,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 95,\n columnNumber: 19\n }, this),\n item.badge && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"px-2 py-1 text-xs rounded-full font-medium\",\n style: {\n backgroundColor: 'var(--accent-purple)',\n color: 'white'\n },\n children: item.badge\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 100,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 84,\n columnNumber: 17\n }, this)\n }, item.name, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 83,\n columnNumber: 15\n }, this))\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 81,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-4 left-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-10 h-10 logo-container\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white font-bold text-sm\",\n children: \"N\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 114,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 113,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 112,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 73,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 72,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"p-6\",\n style: {\n backgroundColor: 'var(--bg-secondary)',\n borderBottom: '1px solid var(--border)'\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 max-w-2xl\",\n children: /*#__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)(\"input\", {\n type: \"text\",\n placeholder: \"Search cards, decks, or collections...\",\n className: \"search-bar pr-12\",\n value: searchQuery,\n onChange: (e)=>setSearchQuery(e.target.value)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 128,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-y-0 right-0 flex items-center pr-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm\",\n style: {\n color: 'var(--text-secondary)'\n },\n children: \"⌘F\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 136,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 135,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-y-0 left-0 flex items-center pl-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-5 w-5\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n style: {\n color: 'var(--text-secondary)'\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 140,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 139,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 138,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 127,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 126,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: toggleTheme,\n className: \"theme-toggle\",\n children: theme === 'light' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 154,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 153,\n columnNumber: 19\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 158,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 157,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 148,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"header-icon\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M3 8l7.89 4.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 164,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 163,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 162,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"header-icon\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M15 17h5l-5 5v-5zM4.5 19.5L9 15m0 0l-4.5-4.5M9 15v5\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 169,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 168,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 167,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-right\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm font-medium\",\n style: {\n color: 'var(--text-primary)'\n },\n children: user.email\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 174,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs\",\n style: {\n color: 'var(--text-secondary)'\n },\n children: user.role\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 175,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 173,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-10 w-10 logo-container\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white text-sm font-medium\",\n children: user.email.charAt(0).toUpperCase()\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 178,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 177,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 172,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 147,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 124,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 123,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"flex-1 overflow-auto\",\n children: children\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 188,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 121,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 70,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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akUsNEVBQUNDO29EQUFLQyxlQUFjO29EQUFRQyxnQkFBZTtvREFBUUMsYUFBYTtvREFBR0MsR0FBRTs7Ozs7Ozs7Ozs7Ozs7OztzREFHekUsOERBQUNROzRDQUFJaEIsV0FBVTs7OERBQ2IsOERBQUNnQjtvREFBSWhCLFdBQVU7O3NFQUNiLDhEQUFDcUM7NERBQUVyQyxXQUFVOzREQUFzQmlCLE9BQU87Z0VBQUVLLE9BQU87NERBQXNCO3NFQUFJMUMsS0FBS0MsS0FBSzs7Ozs7O3NFQUN2Riw4REFBQ3dEOzREQUFFckMsV0FBVTs0REFBVWlCLE9BQU87Z0VBQUVLLE9BQU87NERBQXdCO3NFQUFJMUMsS0FBS0UsSUFBSTs7Ozs7Ozs7Ozs7OzhEQUU5RSw4REFBQ2tDO29EQUFJaEIsV0FBVTs4REFDYiw0RUFBQ29CO3dEQUFLcEIsV0FBVTtrRUFDYnBCLEtBQUtDLEtBQUssQ0FBQ3lELE1BQU0sQ0FBQyxHQUFHQyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tDQVM3Qyw4REFBQ0M7d0JBQUt4QyxXQUFVO2tDQUNickI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUtYIiwic291cmNlcyI6WyIvVXNlcnMvcnN0aWxsdy9Eb2N1bWVudHMvdGNnLXZhdWx0L2NvbXBvbmVudHMvTGF5b3V0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlUm91dGVyIH0gZnJvbSAnbmV4dC9yb3V0ZXInO1xuaW1wb3J0IExpbmsgZnJvbSAnbmV4dC9saW5rJztcbmltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSAnLi4vbGliL3RoZW1lLWNvbnRleHQnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMYXlvdXQoeyBjaGlsZHJlbiwgdXNlciA9IHsgZW1haWw6ICdtZUByYW5kYWxsc3RpbGx3ZWxsLmNvbScsIHJvbGU6ICd1c2VyJyB9IH0pIHtcbiAgY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKCk7XG4gIGNvbnN0IHsgdGhlbWUsIHRvZ2dsZVRoZW1lIH0gPSB1c2VUaGVtZSgpO1xuICBjb25zdCBbc2VhcmNoUXVlcnksIHNldFNlYXJjaFF1ZXJ5XSA9IHVzZVN0YXRlKCcnKTtcblxuICBjb25zdCBuYXZpZ2F0aW9uID0gW1xuICAgIHsgbmFtZTogJ0Rhc2hib2FyZCcsIGhyZWY6ICcvZGFzaGJvYXJkJywgaWNvbjogJ2dyaWQnLCBhY3RpdmU6IHJvdXRlci5wYXRobmFtZSA9PT0gJy9kYXNoYm9hcmQnIH0sXG4gICAgeyBuYW1lOiAnTXkgQ29sbGVjdGlvbicsIGhyZWY6ICcvY29sbGVjdGlvbnMnLCBpY29uOiAnY29sbGVjdGlvbicsIGFjdGl2ZTogcm91dGVyLnBhdGhuYW1lID09PSAnL2NvbGxlY3Rpb25zJywgYmFkZ2U6ICcyNDcnIH0sXG4gICAgeyBuYW1lOiAnQ2FyZHMnLCBocmVmOiAnL2NhcmRzJywgaWNvbjogJ2NhcmQnLCBhY3RpdmU6IHJvdXRlci5wYXRobmFtZSA9PT0gJy9jYXJkcycgfSxcbiAgICB7IG5hbWU6ICdEZWNrcycsIGhyZWY6ICcvZGVja3MnLCBpY29uOiAnZGVjaycsIGFjdGl2ZTogcm91dGVyLnBhdGhuYW1lID09PSAnL2RlY2tzJywgYmFkZ2U6ICcxMicgfSxcbiAgICB7IG5hbWU6ICdBbmFseXRpY3MnLCBocmVmOiAnL2FuYWx5dGljcycsIGljb246ICdhbmFseXRpY3MnLCBhY3RpdmU6IHJvdXRlci5wYXRobmFtZSA9PT0gJy9hbmFseXRpY3MnIH0sXG4gICAgeyBuYW1lOiAnQ29tbXVuaXR5JywgaHJlZjogJy9jb21tdW5pdHknLCBpY29uOiAnY29tbXVuaXR5JywgYWN0aXZlOiByb3V0ZXIucGF0aG5hbWUgPT09ICcvY29tbXVuaXR5JyB9LFxuICAgIHsgbmFtZTogJ1NldHRpbmdzJywgaHJlZjogJy9zZXR0aW5ncycsIGljb246ICdzZXR0aW5ncycsIGFjdGl2ZTogcm91dGVyLnBhdGhuYW1lID09PSAnL3NldHRpbmdzJyB9LFxuICAgIHsgbmFtZTogJ0xvZ291dCcsIGhyZWY6ICcvbG9nb3V0JywgaWNvbjogJ2xvZ291dCcsIGFjdGl2ZTogcm91dGVyLnBhdGhuYW1lID09PSAnL2xvZ291dCcgfVxuICBdO1xuXG4gIGNvbnN0IGdldEljb24gPSAoaWNvbk5hbWUpID0+IHtcbiAgICBjb25zdCBpY29ucyA9IHtcbiAgICAgIGdyaWQ6IChcbiAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJoLTYgdy02XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZVdpZHRoPXsyfSBkPVwiTTQgNmEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAySDZhMiAyIDAgMDEtMi0yVjZ6TTE0IDZhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMnYyYTIgMiAwIDAxLTIgMmgtMmEyIDIgMCAwMS0yLTJWNnpNNCAxNmEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAySDZhMiAyIDAgMDEtMi0ydi0yek0xNCAxNmEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAyaC0yYTIgMiAwIDAxLTItMnYtMnpcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICksXG4gICAgICBjb2xsZWN0aW9uOiAoXG4gICAgICAgIDxzdmcgY2xhc3NOYW1lPVwiaC02IHctNlwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk0yMCA3bC04LTQtOCA0bTE2IDBsLTggNG04LTR2MTBsLTggNG0wLTEwTDQgN204IDR2MTBNNCA3djEwbDggNFwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgKSxcbiAgICAgIGNhcmQ6IChcbiAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJoLTYgdy02XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZVdpZHRoPXsyfSBkPVwiTTMgMTBoMThNNyAxNWgxbTQgMGgxbS03IDRoMTJhMyAzIDAgMDAzLTNWOGEzIDMgMCAwMC0zLTNINmEzIDMgMCAwMC0zIDN2OGEzIDMgMCAwMDMgM3pcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICksXG4gICAgICBkZWNrOiAoXG4gICAgICAgIDxzdmcgY2xhc3NOYW1lPVwiaC02IHctNlwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk0xOSAxMUg1bTE0IDBhMiAyIDAgMDEyIDJ2NmEyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJ2LTZhMiAyIDAgMDEyLTJtMTQgMFY5YTIgMiAwIDAwLTItMk01IDExVjlhMiAyIDAgMDEyLTJtMCAwVjVhMiAyIDAgMDEyLTJoNmEyIDIgMCAwMTIgMnYyTTcgN2gxMFwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgKSxcbiAgICAgIGFuYWx5dGljczogKFxuICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cImgtNiB3LTZcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNOSAxOXYtNmEyIDIgMCAwMC0yLTJINWEyIDIgMCAwMC0yIDJ2NmEyIDIgMCAwMDIgMmgyYTIgMiAwIDAwMi0yem0wIDBWOWEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjEwbS02IDBhMiAyIDAgMDAyIDJoMmEyIDIgMCAwMDItMm0wIDBWNWEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjE0YTIgMiAwIDAxLTIgMmgtMmEyIDIgMCAwMS0yLTJ6XCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICApLFxuICAgICAgY29tbXVuaXR5OiAoXG4gICAgICAgIDxzdmcgY2xhc3NOYW1lPVwiaC02IHctNlwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk0xMiA0LjM1NGE0IDQgMCAxMTAgNS4yOTJNMTUgMjFIM3YtMWE2IDYgMCAwMTEyIDB2MXptMCAwaDZ2LTFhNiA2IDAgMDAtOS01LjE5N20xMy41LTlhMi41IDIuNSAwIDExLTUgMCAyLjUgMi41IDAgMDE1IDB6XCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICApLFxuICAgICAgc2V0dGluZ3M6IChcbiAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJoLTYgdy02XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZVdpZHRoPXsyfSBkPVwiTTEwLjMyNSA0LjMxN2MuNDI2LTEuNzU2IDIuOTI0LTEuNzU2IDMuMzUgMGExLjcyNCAxLjcyNCAwIDAwMi41NzMgMS4wNjZjMS41NDMtLjk0IDMuMzEuODI2IDIuMzcgMi4zN2ExLjcyNCAxLjcyNCAwIDAwMS4wNjUgMi41NzJjMS43NTYuNDI2IDEuNzU2IDIuOTI0IDAgMy4zNWExLjcyNCAxLjcyNCAwIDAwLTEuMDY2IDIuNTczYy45NCAxLjU0My0uODI2IDMuMzEtMi4zNyAyLjM3YTEuNzI0IDEuNzI0IDAgMDAtMi41NzIgMS4wNjVjLS40MjYgMS43NTYtMi45MjQgMS43NTYtMy4zNSAwYTEuNzI0IDEuNzI0IDAgMDAtMi41NzMtMS4wNjZjLTEuNTQzLjk0LTMuMzEtLjgyNi0yLjM3LTIuMzdhMS43MjQgMS43MjQgMCAwMC0xLjA2NS0yLjU3MmMtMS43NTYtLjQyNi0xLjc1Ni0yLjkyNCAwLTMuMzVhMS43MjQgMS43MjQgMCAwMDEuMDY2LTIuNTczYy0uOTQtMS41NDMuODI2LTMuMzEgMi4zNy0yLjM3Ljk5Ni42MDggMi4yOTYuMDcgMi41NzItMS4wNjV6XCIgLz5cbiAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTUgMTJhMyAzIDAgMTEtNiAwIDMgMyAwIDAxNiAwelwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgKSxcbiAgICAgIGxvZ291dDogKFxuICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cImgtNiB3LTZcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTcgMTZsNC00bTAgMGwtNC00bTQgNEg3bTYgNHYxYTMgMyAwIDAxLTMgM0g2YTMgMyAwIDAxLTMtM1Y3YTMgMyAwIDAxMy0zaDRhMyAzIDAgMDEzIDN2MVwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgKVxuICAgIH07XG4gICAgcmV0dXJuIGljb25zW2ljb25OYW1lXSB8fCBpY29ucy5ncmlkO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGgtc2NyZWVuXCIgc3R5bGU9e3sgYmFja2dyb3VuZENvbG9yOiAndmFyKC0tYmctcHJpbWFyeSknIH19PlxuICAgICAgey8qIExlZnQgU2lkZWJhciAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy02NCBzaGFkb3ctbGdcIiBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6ICd2YXIoLS1iZy1zZWNvbmRhcnkpJywgYm9yZGVyUmlnaHQ6ICcxcHggc29saWQgdmFyKC0tYm9yZGVyKScgfX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC00XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBtYi04XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMTAgaC0xMCBsb2dvLWNvbnRhaW5lciBtci0zXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtd2hpdGUgZm9udC1ib2xkIHRleHQtc21cIj5UQ0c8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LXhsIGZvbnQtYm9sZFwiIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tdGV4dC1wcmltYXJ5KScgfX0+VENHIFZhdWx0PC9oMT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBcbiAgICAgICAgICA8bmF2IGNsYXNzTmFtZT1cInNwYWNlLXktMlwiPlxuICAgICAgICAgICAge25hdmlnYXRpb24ubWFwKChpdGVtKSA9PiAoXG4gICAgICAgICAgICAgIDxMaW5rIGtleT17aXRlbS5uYW1lfSBocmVmPXtpdGVtLmhyZWZ9PlxuICAgICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtNCBweS0zIHJvdW5kZWQtMnhsIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMCBjdXJzb3ItcG9pbnRlciAke1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmFjdGl2ZSBcbiAgICAgICAgICAgICAgICAgICAgICA/ICdzaGFkb3ctbGcnIFxuICAgICAgICAgICAgICAgICAgICAgIDogJ2hvdmVyOnNoYWRvdy1tZCdcbiAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpdGVtLmFjdGl2ZSA/ICd2YXIoLS1iZy10ZXJ0aWFyeSknIDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IGl0ZW0uYWN0aXZlID8gJ3ZhcigtLXRleHQtcHJpbWFyeSknIDogJ3ZhcigtLXRleHQtc2Vjb25kYXJ5KSdcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtci0zXCI+e2dldEljb24oaXRlbS5pY29uKX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtXCI+e2l0ZW0ubmFtZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIHtpdGVtLmJhZGdlICYmIChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHgtMiBweS0xIHRleHQteHMgcm91bmRlZC1mdWxsIGZvbnQtbWVkaXVtXCJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6ICd2YXIoLS1hY2NlbnQtcHVycGxlKScsIGNvbG9yOiAnd2hpdGUnIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7aXRlbS5iYWRnZX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9uYXY+XG4gICAgICAgICAgXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBib3R0b20tNCBsZWZ0LTRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0xMCBoLTEwIGxvZ28tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtd2hpdGUgZm9udC1ib2xkIHRleHQtc21cIj5OPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBNYWluIENvbnRlbnQgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgIHsvKiBUb3AgSGVhZGVyICovfVxuICAgICAgICA8aGVhZGVyIGNsYXNzTmFtZT1cInAtNlwiIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogJ3ZhcigtLWJnLXNlY29uZGFyeSknLCBib3JkZXJCb3R0b206ICcxcHggc29saWQgdmFyKC0tYm9yZGVyKScgfX0+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgIHsvKiBTZWFyY2ggQmFyICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgbWF4LXctMnhsXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGNhcmRzLCBkZWNrcywgb3IgY29sbGVjdGlvbnMuLi5cIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic2VhcmNoLWJhciBwci0xMlwiXG4gICAgICAgICAgICAgICAgICB2YWx1ZT17c2VhcmNoUXVlcnl9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFNlYXJjaFF1ZXJ5KGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQteS0wIHJpZ2h0LTAgZmxleCBpdGVtcy1jZW50ZXIgcHItNFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbVwiIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tdGV4dC1zZWNvbmRhcnkpJyB9fT7ijJhGPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQteS0wIGxlZnQtMCBmbGV4IGl0ZW1zLWNlbnRlciBwbC00XCI+XG4gICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cImgtNSB3LTVcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLXRleHQtc2Vjb25kYXJ5KScgfX0+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk0yMSAyMWwtNi02bTItNWE3IDcgMCAxMS0xNCAwIDcgNyAwIDAxMTQgMHpcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIHsvKiBSaWdodCBTaWRlICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTRcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXt0b2dnbGVUaGVtZX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0aGVtZS10b2dnbGVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3RoZW1lID09PSAnbGlnaHQnID8gKFxuICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJoLTYgdy02XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk0yMC4zNTQgMTUuMzU0QTkgOSAwIDAxOC42NDYgMy42NDYgOS4wMDMgOS4wMDMgMCAwMDEyIDIxYTkuMDAzIDkuMDAzIDAgMDA4LjM1NC01LjY0NnpcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwiaC02IHctNlwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTIgM3YxbTAgMTZ2MW05LTloLTFNNCAxMkgzbTE1LjM2NCA2LjM2NGwtLjcwNy0uNzA3TTYuMzQzIDYuMzQzbC0uNzA3LS43MDdtMTIuNzI4IDBsLS43MDcuNzA3TTYuMzQzIDE3LjY1N2wtLjcwNy43MDdNMTYgMTJhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAwelwiIC8+XG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJoZWFkZXItaWNvblwiPlxuICAgICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwiaC02IHctNlwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZVdpZHRoPXsyfSBkPVwiTTMgOGw3Ljg5IDQuMjZhMiAyIDAgMDAyLjIyIDBMMjEgOE01IDE5aDE0YTIgMiAwIDAwMi0yVjdhMiAyIDAgMDAtMi0ySDVhMiAyIDAgMDAtMiAydjEwYTIgMiAwIDAwMiAyelwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cImhlYWRlci1pY29uXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJoLTYgdy02XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTUgMTdoNWwtNSA1di01ek00LjUgMTkuNUw5IDE1bTAgMGwtNC41LTQuNU05IDE1djVcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1tZWRpdW1cIiBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLXRleHQtcHJpbWFyeSknIH19Pnt1c2VyLmVtYWlsfTwvcD5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHNcIiBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLXRleHQtc2Vjb25kYXJ5KScgfX0+e3VzZXIucm9sZX08L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLTEwIHctMTAgbG9nby1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtd2hpdGUgdGV4dC1zbSBmb250LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICB7dXNlci5lbWFpbC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgey8qIFBhZ2UgQ29udGVudCAqL31cbiAgICAgICAgPG1haW4gY2xhc3NOYW1lPVwiZmxleC0xIG92ZXJmbG93LWF1dG9cIj5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvbWFpbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufSAiXSwibmFtZXMiOlsidXNlU3RhdGUiLCJ1c2VSb3V0ZXIiLCJMaW5rIiwidXNlVGhlbWUiLCJMYXlvdXQiLCJjaGlsZHJlbiIsInVzZXIiLCJlbWFpbCIsInJvbGUiLCJyb3V0ZXIiLCJ0aGVtZSIsInRvZ2dsZVRoZW1lIiwic2VhcmNoUXVlcnkiLCJzZXRTZWFyY2hRdWVyeSIsIm5hdmlnYXRpb24iLCJuYW1lIiwiaHJlZiIsImljb24iLCJhY3RpdmUiLCJwYXRobmFtZSIsImJhZGdlIiwiZ2V0SWNvbiIsImljb25OYW1lIiwiaWNvbnMiLCJncmlkIiwic3ZnIiwiY2xhc3NOYW1lIiwiZmlsbCIsInN0cm9rZSIsInZpZXdCb3giLCJwYXRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwic3Ryb2tlV2lkdGgiLCJkIiwiY29sbGVjdGlvbiIsImNhcmQiLCJkZWNrIiwiYW5hbHl0aWNzIiwiY29tbXVuaXR5Iiwic2V0dGluZ3MiLCJsb2dvdXQiLCJkaXYiLCJzdHlsZSIsImJhY2tncm91bmRDb2xvciIsImJvcmRlclJpZ2h0Iiwic3BhbiIsImgxIiwiY29sb3IiLCJuYXYiLCJtYXAiLCJpdGVtIiwiaGVhZGVyIiwiYm9yZGVyQm90dG9tIiwiaW5wdXQiLCJ0eXBlIiwicGxhY2Vob2xkZXIiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwiZSIsInRhcmdldCIsImJ1dHRvbiIsIm9uQ2xpY2siLCJwIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJtYWluIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(pages-dir-node)/./components/Layout.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(pages-dir-node)/./lib/auth-context.js":
|
|
/*!*****************************!*\
|
|
!*** ./lib/auth-context.js ***!
|
|
\*****************************/
|
|
/***/ ((__unused_webpack___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 */ AuthProvider: () => (/* binding */ AuthProvider),\n/* harmony export */ useAuth: () => (/* binding */ useAuth)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n\n\nconst AuthContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)();\nfunction AuthProvider({ children }) {\n const [user, setUser] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"AuthProvider.useEffect\": ()=>{\n // Check for existing token on app load\n const token = localStorage.getItem('token');\n if (token) {\n // Verify token and set user\n verifyToken(token);\n } else {\n setLoading(false);\n }\n }\n }[\"AuthProvider.useEffect\"], []);\n const verifyToken = async (token)=>{\n try {\n const response = await fetch('/api/auth/verify', {\n headers: {\n 'Authorization': `Bearer ${token}`\n }\n });\n if (response.ok) {\n const userData = await response.json();\n setUser(userData.user);\n } else {\n localStorage.removeItem('token');\n }\n } catch (error) {\n console.error('Token verification failed:', error);\n localStorage.removeItem('token');\n } finally{\n setLoading(false);\n }\n };\n const login = async (email, password)=>{\n try {\n const response = await fetch('/api/auth/login', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n email,\n password\n })\n });\n const data = await response.json();\n if (response.ok) {\n localStorage.setItem('token', data.token);\n setUser(data.user);\n return {\n success: true\n };\n } else {\n return {\n success: false,\n error: data.error\n };\n }\n } catch (error) {\n return {\n success: false,\n error: 'Network error'\n };\n }\n };\n const register = async (email, password)=>{\n try {\n const response = await fetch('/api/auth/register', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n email,\n password\n })\n });\n const data = await response.json();\n if (response.ok) {\n localStorage.setItem('token', data.token);\n setUser(data.user);\n return {\n success: true\n };\n } else {\n return {\n success: false,\n error: data.error\n };\n }\n } catch (error) {\n return {\n success: false,\n error: 'Network error'\n };\n }\n };\n const logout = ()=>{\n localStorage.removeItem('token');\n setUser(null);\n };\n const value = {\n user,\n loading,\n login,\n register,\n logout\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(AuthContext.Provider, {\n value: value,\n children: children\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/lib/auth-context.js\",\n lineNumber: 104,\n columnNumber: 5\n }, this);\n}\nfunction useAuth() {\n const context = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(AuthContext);\n if (!context) {\n throw new Error('useAuth must be used within an AuthProvider');\n }\n return context;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL2xpYi9hdXRoLWNvbnRleHQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBdUU7QUFFdkUsTUFBTUksNEJBQWNKLG9EQUFhQTtBQUUxQixTQUFTSyxhQUFhLEVBQUVDLFFBQVEsRUFBRTtJQUN2QyxNQUFNLENBQUNDLE1BQU1DLFFBQVEsR0FBR04sK0NBQVFBLENBQUM7SUFDakMsTUFBTSxDQUFDTyxTQUFTQyxXQUFXLEdBQUdSLCtDQUFRQSxDQUFDO0lBRXZDQyxnREFBU0E7a0NBQUM7WUFDUix1Q0FBdUM7WUFDdkMsTUFBTVEsUUFBUUMsYUFBYUMsT0FBTyxDQUFDO1lBQ25DLElBQUlGLE9BQU87Z0JBQ1QsNEJBQTRCO2dCQUM1QkcsWUFBWUg7WUFDZCxPQUFPO2dCQUNMRCxXQUFXO1lBQ2I7UUFDRjtpQ0FBRyxFQUFFO0lBRUwsTUFBTUksY0FBYyxPQUFPSDtRQUN6QixJQUFJO1lBQ0YsTUFBTUksV0FBVyxNQUFNQyxNQUFNLG9CQUFvQjtnQkFDL0NDLFNBQVM7b0JBQ1AsaUJBQWlCLENBQUMsT0FBTyxFQUFFTixPQUFPO2dCQUNwQztZQUNGO1lBRUEsSUFBSUksU0FBU0csRUFBRSxFQUFFO2dCQUNmLE1BQU1DLFdBQVcsTUFBTUosU0FBU0ssSUFBSTtnQkFDcENaLFFBQVFXLFNBQVNaLElBQUk7WUFDdkIsT0FBTztnQkFDTEssYUFBYVMsVUFBVSxDQUFDO1lBQzFCO1FBQ0YsRUFBRSxPQUFPQyxPQUFPO1lBQ2RDLFFBQVFELEtBQUssQ0FBQyw4QkFBOEJBO1lBQzVDVixhQUFhUyxVQUFVLENBQUM7UUFDMUIsU0FBVTtZQUNSWCxXQUFXO1FBQ2I7SUFDRjtJQUVBLE1BQU1jLFFBQVEsT0FBT0MsT0FBT0M7UUFDMUIsSUFBSTtZQUNGLE1BQU1YLFdBQVcsTUFBTUMsTUFBTSxtQkFBbUI7Z0JBQzlDVyxRQUFRO2dCQUNSVixTQUFTO29CQUNQLGdCQUFnQjtnQkFDbEI7Z0JBQ0FXLE1BQU1DLEtBQUtDLFNBQVMsQ0FBQztvQkFBRUw7b0JBQU9DO2dCQUFTO1lBQ3pDO1lBRUEsTUFBTUssT0FBTyxNQUFNaEIsU0FBU0ssSUFBSTtZQUVoQyxJQUFJTCxTQUFTRyxFQUFFLEVBQUU7Z0JBQ2ZOLGFBQWFvQixPQUFPLENBQUMsU0FBU0QsS0FBS3BCLEtBQUs7Z0JBQ3hDSCxRQUFRdUIsS0FBS3hCLElBQUk7Z0JBQ2pCLE9BQU87b0JBQUUwQixTQUFTO2dCQUFLO1lBQ3pCLE9BQU87Z0JBQ0wsT0FBTztvQkFBRUEsU0FBUztvQkFBT1gsT0FBT1MsS0FBS1QsS0FBSztnQkFBQztZQUM3QztRQUNGLEVBQUUsT0FBT0EsT0FBTztZQUNkLE9BQU87Z0JBQUVXLFNBQVM7Z0JBQU9YLE9BQU87WUFBZ0I7UUFDbEQ7SUFDRjtJQUVBLE1BQU1ZLFdBQVcsT0FBT1QsT0FBT0M7UUFDN0IsSUFBSTtZQUNGLE1BQU1YLFdBQVcsTUFBTUMsTUFBTSxzQkFBc0I7Z0JBQ2pEVyxRQUFRO2dCQUNSVixTQUFTO29CQUNQLGdCQUFnQjtnQkFDbEI7Z0JBQ0FXLE1BQU1DLEtBQUtDLFNBQVMsQ0FBQztvQkFBRUw7b0JBQU9DO2dCQUFTO1lBQ3pDO1lBRUEsTUFBTUssT0FBTyxNQUFNaEIsU0FBU0ssSUFBSTtZQUVoQyxJQUFJTCxTQUFTRyxFQUFFLEVBQUU7Z0JBQ2ZOLGFBQWFvQixPQUFPLENBQUMsU0FBU0QsS0FBS3BCLEtBQUs7Z0JBQ3hDSCxRQUFRdUIsS0FBS3hCLElBQUk7Z0JBQ2pCLE9BQU87b0JBQUUwQixTQUFTO2dCQUFLO1lBQ3pCLE9BQU87Z0JBQ0wsT0FBTztvQkFBRUEsU0FBUztvQkFBT1gsT0FBT1MsS0FBS1QsS0FBSztnQkFBQztZQUM3QztRQUNGLEVBQUUsT0FBT0EsT0FBTztZQUNkLE9BQU87Z0JBQUVXLFNBQVM7Z0JBQU9YLE9BQU87WUFBZ0I7UUFDbEQ7SUFDRjtJQUVBLE1BQU1hLFNBQVM7UUFDYnZCLGFBQWFTLFVBQVUsQ0FBQztRQUN4QmIsUUFBUTtJQUNWO0lBRUEsTUFBTTRCLFFBQVE7UUFDWjdCO1FBQ0FFO1FBQ0FlO1FBQ0FVO1FBQ0FDO0lBQ0Y7SUFFQSxxQkFDRSw4REFBQy9CLFlBQVlpQyxRQUFRO1FBQUNELE9BQU9BO2tCQUMxQjlCOzs7Ozs7QUFHUDtBQUVPLFNBQVNnQztJQUNkLE1BQU1DLFVBQVV0QyxpREFBVUEsQ0FBQ0c7SUFDM0IsSUFBSSxDQUFDbUMsU0FBUztRQUNaLE1BQU0sSUFBSUMsTUFBTTtJQUNsQjtJQUNBLE9BQU9EO0FBQ1QiLCJzb3VyY2VzIjpbIi9Vc2Vycy9yc3RpbGx3L0RvY3VtZW50cy90Y2ctdmF1bHQvbGliL2F1dGgtY29udGV4dC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0LCB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBBdXRoQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIEF1dGhQcm92aWRlcih7IGNoaWxkcmVuIH0pIHtcbiAgY29uc3QgW3VzZXIsIHNldFVzZXJdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKHRydWUpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gQ2hlY2sgZm9yIGV4aXN0aW5nIHRva2VuIG9uIGFwcCBsb2FkXG4gICAgY29uc3QgdG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9rZW4nKTtcbiAgICBpZiAodG9rZW4pIHtcbiAgICAgIC8vIFZlcmlmeSB0b2tlbiBhbmQgc2V0IHVzZXJcbiAgICAgIHZlcmlmeVRva2VuKHRva2VuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgfVxuICB9LCBbXSk7XG5cbiAgY29uc3QgdmVyaWZ5VG9rZW4gPSBhc3luYyAodG9rZW4pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgnL2FwaS9hdXRoL3ZlcmlmeScsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke3Rva2VufWBcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBcbiAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICBjb25zdCB1c2VyRGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICAgICAgc2V0VXNlcih1c2VyRGF0YS51c2VyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd0b2tlbicpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdUb2tlbiB2ZXJpZmljYXRpb24gZmFpbGVkOicsIGVycm9yKTtcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd0b2tlbicpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgbG9naW4gPSBhc3luYyAoZW1haWwsIHBhc3N3b3JkKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goJy9hcGkvYXV0aC9sb2dpbicsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9LFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGVtYWlsLCBwYXNzd29yZCB9KSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuXG4gICAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Rva2VuJywgZGF0YS50b2tlbik7XG4gICAgICAgIHNldFVzZXIoZGF0YS51c2VyKTtcbiAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiBkYXRhLmVycm9yIH07XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogJ05ldHdvcmsgZXJyb3InIH07XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHJlZ2lzdGVyID0gYXN5bmMgKGVtYWlsLCBwYXNzd29yZCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKCcvYXBpL2F1dGgvcmVnaXN0ZXInLCB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBlbWFpbCwgcGFzc3dvcmQgfSksXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcblxuICAgICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0b2tlbicsIGRhdGEudG9rZW4pO1xuICAgICAgICBzZXRVc2VyKGRhdGEudXNlcik7XG4gICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogZGF0YS5lcnJvciB9O1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSwgZXJyb3I6ICdOZXR3b3JrIGVycm9yJyB9O1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBsb2dvdXQgPSAoKSA9PiB7XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3Rva2VuJyk7XG4gICAgc2V0VXNlcihudWxsKTtcbiAgfTtcblxuICBjb25zdCB2YWx1ZSA9IHtcbiAgICB1c2VyLFxuICAgIGxvYWRpbmcsXG4gICAgbG9naW4sXG4gICAgcmVnaXN0ZXIsXG4gICAgbG9nb3V0LFxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEF1dGhDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9BdXRoQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUF1dGgoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KEF1dGhDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VBdXRoIG11c3QgYmUgdXNlZCB3aXRoaW4gYW4gQXV0aFByb3ZpZGVyJyk7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59ICJdLCJuYW1lcyI6WyJjcmVhdGVDb250ZXh0IiwidXNlQ29udGV4dCIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiQXV0aENvbnRleHQiLCJBdXRoUHJvdmlkZXIiLCJjaGlsZHJlbiIsInVzZXIiLCJzZXRVc2VyIiwibG9hZGluZyIsInNldExvYWRpbmciLCJ0b2tlbiIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJ2ZXJpZnlUb2tlbiIsInJlc3BvbnNlIiwiZmV0Y2giLCJoZWFkZXJzIiwib2siLCJ1c2VyRGF0YSIsImpzb24iLCJyZW1vdmVJdGVtIiwiZXJyb3IiLCJjb25zb2xlIiwibG9naW4iLCJlbWFpbCIsInBhc3N3b3JkIiwibWV0aG9kIiwiYm9keSIsIkpTT04iLCJzdHJpbmdpZnkiLCJkYXRhIiwic2V0SXRlbSIsInN1Y2Nlc3MiLCJyZWdpc3RlciIsImxvZ291dCIsInZhbHVlIiwiUHJvdmlkZXIiLCJ1c2VBdXRoIiwiY29udGV4dCIsIkVycm9yIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(pages-dir-node)/./lib/auth-context.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(pages-dir-node)/./lib/theme-context.js":
|
|
/*!******************************!*\
|
|
!*** ./lib/theme-context.js ***!
|
|
\******************************/
|
|
/***/ ((__unused_webpack___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 */ ThemeProvider: () => (/* binding */ ThemeProvider),\n/* harmony export */ useTheme: () => (/* binding */ useTheme)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n\n\nconst ThemeContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)();\nfunction ThemeProvider({ children }) {\n const [theme, setTheme] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('light');\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"ThemeProvider.useEffect\": ()=>{\n // Check for saved theme preference or default to light\n const savedTheme = localStorage.getItem('theme') || 'light';\n setTheme(savedTheme);\n document.documentElement.setAttribute('data-theme', savedTheme);\n }\n }[\"ThemeProvider.useEffect\"], []);\n const toggleTheme = ()=>{\n const newTheme = theme === 'light' ? 'dark' : 'light';\n setTheme(newTheme);\n localStorage.setItem('theme', newTheme);\n document.documentElement.setAttribute('data-theme', newTheme);\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(ThemeContext.Provider, {\n value: {\n theme,\n toggleTheme\n },\n children: children\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/lib/theme-context.js\",\n lineNumber: 23,\n columnNumber: 5\n }, this);\n}\nfunction useTheme() {\n const context = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(ThemeContext);\n if (context === undefined) {\n throw new Error('useTheme must be used within a ThemeProvider');\n }\n return context;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL2xpYi90aGVtZS1jb250ZXh0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQXVFO0FBRXZFLE1BQU1JLDZCQUFlSixvREFBYUE7QUFFM0IsU0FBU0ssY0FBYyxFQUFFQyxRQUFRLEVBQUU7SUFDeEMsTUFBTSxDQUFDQyxPQUFPQyxTQUFTLEdBQUdMLCtDQUFRQSxDQUFDO0lBRW5DRCxnREFBU0E7bUNBQUM7WUFDUix1REFBdUQ7WUFDdkQsTUFBTU8sYUFBYUMsYUFBYUMsT0FBTyxDQUFDLFlBQVk7WUFDcERILFNBQVNDO1lBQ1RHLFNBQVNDLGVBQWUsQ0FBQ0MsWUFBWSxDQUFDLGNBQWNMO1FBQ3REO2tDQUFHLEVBQUU7SUFFTCxNQUFNTSxjQUFjO1FBQ2xCLE1BQU1DLFdBQVdULFVBQVUsVUFBVSxTQUFTO1FBQzlDQyxTQUFTUTtRQUNUTixhQUFhTyxPQUFPLENBQUMsU0FBU0Q7UUFDOUJKLFNBQVNDLGVBQWUsQ0FBQ0MsWUFBWSxDQUFDLGNBQWNFO0lBQ3REO0lBRUEscUJBQ0UsOERBQUNaLGFBQWFjLFFBQVE7UUFBQ0MsT0FBTztZQUFFWjtZQUFPUTtRQUFZO2tCQUNoRFQ7Ozs7OztBQUdQO0FBRU8sU0FBU2M7SUFDZCxNQUFNQyxVQUFVcEIsaURBQVVBLENBQUNHO0lBQzNCLElBQUlpQixZQUFZQyxXQUFXO1FBQ3pCLE1BQU0sSUFBSUMsTUFBTTtJQUNsQjtJQUNBLE9BQU9GO0FBQ1QiLCJzb3VyY2VzIjpbIi9Vc2Vycy9yc3RpbGx3L0RvY3VtZW50cy90Y2ctdmF1bHQvbGliL3RoZW1lLWNvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgVGhlbWVDb250ZXh0ID0gY3JlYXRlQ29udGV4dCgpO1xuXG5leHBvcnQgZnVuY3Rpb24gVGhlbWVQcm92aWRlcih7IGNoaWxkcmVuIH0pIHtcbiAgY29uc3QgW3RoZW1lLCBzZXRUaGVtZV0gPSB1c2VTdGF0ZSgnbGlnaHQnKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBzYXZlZCB0aGVtZSBwcmVmZXJlbmNlIG9yIGRlZmF1bHQgdG8gbGlnaHRcbiAgICBjb25zdCBzYXZlZFRoZW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RoZW1lJykgfHwgJ2xpZ2h0JztcbiAgICBzZXRUaGVtZShzYXZlZFRoZW1lKTtcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLXRoZW1lJywgc2F2ZWRUaGVtZSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCB0b2dnbGVUaGVtZSA9ICgpID0+IHtcbiAgICBjb25zdCBuZXdUaGVtZSA9IHRoZW1lID09PSAnbGlnaHQnID8gJ2RhcmsnIDogJ2xpZ2h0JztcbiAgICBzZXRUaGVtZShuZXdUaGVtZSk7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3RoZW1lJywgbmV3VGhlbWUpO1xuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGhlbWUnLCBuZXdUaGVtZSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8VGhlbWVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt7IHRoZW1lLCB0b2dnbGVUaGVtZSB9fT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L1RoZW1lQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVRoZW1lKCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xuICBpZiAoY29udGV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VUaGVtZSBtdXN0IGJlIHVzZWQgd2l0aGluIGEgVGhlbWVQcm92aWRlcicpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufSAiXSwibmFtZXMiOlsiY3JlYXRlQ29udGV4dCIsInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIlRoZW1lQ29udGV4dCIsIlRoZW1lUHJvdmlkZXIiLCJjaGlsZHJlbiIsInRoZW1lIiwic2V0VGhlbWUiLCJzYXZlZFRoZW1lIiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50Iiwic2V0QXR0cmlidXRlIiwidG9nZ2xlVGhlbWUiLCJuZXdUaGVtZSIsInNldEl0ZW0iLCJQcm92aWRlciIsInZhbHVlIiwidXNlVGhlbWUiLCJjb250ZXh0IiwidW5kZWZpbmVkIiwiRXJyb3IiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./lib/theme-context.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(pages-dir-node)/./node_modules/next/dist/build/webpack/loaders/next-route-loader/index.js?kind=PAGES&page=%2Fcards&preferredRegion=&absolutePagePath=.%2Fpages%2Fcards.js&absoluteAppPath=private-next-pages%2F_app&absoluteDocumentPath=private-next-pages%2F_document&middlewareConfigBase64=e30%3D!":
|
|
/*!**********************************************************************************************************************************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/next/dist/build/webpack/loaders/next-route-loader/index.js?kind=PAGES&page=%2Fcards&preferredRegion=&absolutePagePath=.%2Fpages%2Fcards.js&absoluteAppPath=private-next-pages%2F_app&absoluteDocumentPath=private-next-pages%2F_document&middlewareConfigBase64=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 */ config: () => (/* binding */ config),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ getServerSideProps: () => (/* binding */ getServerSideProps),\n/* harmony export */ getStaticPaths: () => (/* binding */ getStaticPaths),\n/* harmony export */ getStaticProps: () => (/* binding */ getStaticProps),\n/* harmony export */ handler: () => (/* binding */ handler),\n/* harmony export */ reportWebVitals: () => (/* binding */ reportWebVitals),\n/* harmony export */ routeModule: () => (/* binding */ routeModule),\n/* harmony export */ unstable_getServerProps: () => (/* binding */ unstable_getServerProps),\n/* harmony export */ unstable_getServerSideProps: () => (/* binding */ unstable_getServerSideProps),\n/* harmony export */ unstable_getStaticParams: () => (/* binding */ unstable_getStaticParams),\n/* harmony export */ unstable_getStaticPaths: () => (/* binding */ unstable_getStaticPaths),\n/* harmony export */ unstable_getStaticProps: () => (/* binding */ unstable_getStaticProps)\n/* harmony export */ });\n/* harmony import */ var next_dist_server_route_modules_pages_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/server/route-modules/pages/module.compiled */ \"(pages-dir-node)/./node_modules/next/dist/server/route-modules/pages/module.compiled.js\");\n/* harmony import */ var next_dist_server_route_modules_pages_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_route_modules_pages_module_compiled__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/dist/server/route-kind */ \"(pages-dir-node)/./node_modules/next/dist/server/route-kind.js\");\n/* harmony import */ var next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/dist/server/lib/trace/constants */ \"(pages-dir-node)/./node_modules/next/dist/server/lib/trace/constants.js\");\n/* harmony import */ var next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/dist/server/lib/trace/tracer */ \"(pages-dir-node)/./node_modules/next/dist/server/lib/trace/tracer.js\");\n/* harmony import */ var next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var next_dist_shared_lib_router_utils_format_url__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! next/dist/shared/lib/router/utils/format-url */ \"next/dist/shared/lib/router/utils/format-url\");\n/* harmony import */ var next_dist_shared_lib_router_utils_format_url__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_router_utils_format_url__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! next/dist/server/request-meta */ \"(pages-dir-node)/./node_modules/next/dist/server/request-meta.js\");\n/* harmony import */ var next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var next_dist_server_app_render_interop_default__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! next/dist/server/app-render/interop-default */ \"(pages-dir-node)/./node_modules/next/dist/server/app-render/interop-default.js\");\n/* harmony import */ var next_dist_server_instrumentation_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! next/dist/server/instrumentation/utils */ \"(pages-dir-node)/./node_modules/next/dist/server/instrumentation/utils.js\");\n/* harmony import */ var next_dist_shared_lib_page_path_normalize_data_path__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! next/dist/shared/lib/page-path/normalize-data-path */ \"next/dist/shared/lib/page-path/normalize-data-path\");\n/* harmony import */ var next_dist_shared_lib_page_path_normalize_data_path__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_page_path_normalize_data_path__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! next/dist/server/response-cache */ \"(pages-dir-node)/./node_modules/next/dist/server/response-cache/index.js\");\n/* harmony import */ var next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! next/dist/build/templates/helpers */ \"(pages-dir-node)/./node_modules/next/dist/build/templates/helpers.js\");\n/* harmony import */ var private_next_pages_document__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! private-next-pages/_document */ \"(pages-dir-node)/./node_modules/next/dist/pages/_document.js\");\n/* harmony import */ var private_next_pages_document__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(private_next_pages_document__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var private_next_pages_app__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! private-next-pages/_app */ \"(pages-dir-node)/./pages/_app.js\");\n/* harmony import */ var _pages_cards_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./pages/cards.js */ \"(pages-dir-node)/./pages/cards.js\");\n/* harmony import */ var next_dist_server_lib_cache_control__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! next/dist/server/lib/cache-control */ \"(pages-dir-node)/./node_modules/next/dist/server/lib/cache-control.js\");\n/* harmony import */ var next_dist_shared_lib_utils__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! next/dist/shared/lib/utils */ \"next/dist/shared/lib/utils\");\n/* harmony import */ var next_dist_shared_lib_utils__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_utils__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var next_dist_lib_redirect_status__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! next/dist/lib/redirect-status */ \"(pages-dir-node)/./node_modules/next/dist/lib/redirect-status.js\");\n/* harmony import */ var next_dist_lib_redirect_status__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(next_dist_lib_redirect_status__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! next/dist/lib/constants */ \"(pages-dir-node)/./node_modules/next/dist/lib/constants.js\");\n/* harmony import */ var next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! next/dist/server/send-payload */ \"(pages-dir-node)/./node_modules/next/dist/server/send-payload.js\");\n/* harmony import */ var next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! next/dist/server/render-result */ \"(pages-dir-node)/./node_modules/next/dist/server/render-result.js\");\n/* harmony import */ var next_dist_server_response_cache_utils__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! next/dist/server/response-cache/utils */ \"(pages-dir-node)/./node_modules/next/dist/server/response-cache/utils.js\");\n/* harmony import */ var next_dist_server_response_cache_utils__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_response_cache_utils__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! next/dist/shared/lib/no-fallback-error.external */ \"next/dist/shared/lib/no-fallback-error.external\");\n/* harmony import */ var next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_21__);\n/* harmony import */ var next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! next/dist/client/components/redirect-status-code */ \"(pages-dir-node)/./node_modules/next/dist/client/components/redirect-status-code.js\");\n/* harmony import */ var next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_22__);\n/* harmony import */ var next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! next/dist/shared/lib/router/utils/is-bot */ \"next/dist/shared/lib/router/utils/is-bot\");\n/* harmony import */ var next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_23__);\n/* harmony import */ var next_dist_shared_lib_router_utils_add_path_prefix__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! next/dist/shared/lib/router/utils/add-path-prefix */ \"next/dist/shared/lib/router/utils/add-path-prefix\");\n/* harmony import */ var next_dist_shared_lib_router_utils_add_path_prefix__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_router_utils_add_path_prefix__WEBPACK_IMPORTED_MODULE_24__);\n/* harmony import */ var next_dist_shared_lib_router_utils_remove_trailing_slash__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! next/dist/shared/lib/router/utils/remove-trailing-slash */ \"next/dist/shared/lib/router/utils/remove-trailing-slash\");\n/* harmony import */ var next_dist_shared_lib_router_utils_remove_trailing_slash__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_router_utils_remove_trailing_slash__WEBPACK_IMPORTED_MODULE_25__);\n\n\n\n\n\n\n\n\n\n\n\n// Import the app and document modules.\n\n\n// Import the userland code.\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Re-export the component (should be the default export).\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_10__.hoist)(_pages_cards_js__WEBPACK_IMPORTED_MODULE_13__, 'default'));\n// Re-export methods.\nconst getStaticProps = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_10__.hoist)(_pages_cards_js__WEBPACK_IMPORTED_MODULE_13__, 'getStaticProps');\nconst getStaticPaths = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_10__.hoist)(_pages_cards_js__WEBPACK_IMPORTED_MODULE_13__, 'getStaticPaths');\nconst getServerSideProps = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_10__.hoist)(_pages_cards_js__WEBPACK_IMPORTED_MODULE_13__, 'getServerSideProps');\nconst config = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_10__.hoist)(_pages_cards_js__WEBPACK_IMPORTED_MODULE_13__, 'config');\nconst reportWebVitals = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_10__.hoist)(_pages_cards_js__WEBPACK_IMPORTED_MODULE_13__, 'reportWebVitals');\n// Re-export legacy methods.\nconst unstable_getStaticProps = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_10__.hoist)(_pages_cards_js__WEBPACK_IMPORTED_MODULE_13__, 'unstable_getStaticProps');\nconst unstable_getStaticPaths = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_10__.hoist)(_pages_cards_js__WEBPACK_IMPORTED_MODULE_13__, 'unstable_getStaticPaths');\nconst unstable_getStaticParams = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_10__.hoist)(_pages_cards_js__WEBPACK_IMPORTED_MODULE_13__, 'unstable_getStaticParams');\nconst unstable_getServerProps = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_10__.hoist)(_pages_cards_js__WEBPACK_IMPORTED_MODULE_13__, 'unstable_getServerProps');\nconst unstable_getServerSideProps = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_10__.hoist)(_pages_cards_js__WEBPACK_IMPORTED_MODULE_13__, 'unstable_getServerSideProps');\n// Create and export the route module that will be consumed.\nconst routeModule = new next_dist_server_route_modules_pages_module_compiled__WEBPACK_IMPORTED_MODULE_0__.PagesRouteModule({\n definition: {\n kind: next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.PAGES,\n page: \"/cards\",\n pathname: \"/cards\",\n // The following aren't used in production.\n bundlePath: '',\n filename: ''\n },\n distDir: \".next\" || 0,\n projectDir: false || '',\n components: {\n // default export might not exist when optimized for data only\n App: private_next_pages_app__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n Document: (private_next_pages_document__WEBPACK_IMPORTED_MODULE_11___default())\n },\n userland: _pages_cards_js__WEBPACK_IMPORTED_MODULE_13__\n});\nasync function handler(req, res, ctx) {\n var _serverFilesManifest_config_experimental, _serverFilesManifest_config;\n let srcPage = \"/cards\";\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (false) {} else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/';\n }\n const multiZoneDraftMode = \"false\";\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode\n });\n if (!prepareResult) {\n res.statusCode = 400;\n res.end('Bad Request');\n ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());\n return;\n }\n const { buildId, query, params, parsedUrl, originalQuery, originalPathname, buildManifest, nextFontManifest, serverFilesManifest, reactLoadableManifest, prerenderManifest, isDraftMode, isOnDemandRevalidate, revalidateOnlyGenerated, locale, locales, defaultLocale, routerServerContext, nextConfig, resolvedPathname } = prepareResult;\n const isExperimentalCompile = serverFilesManifest == null ? void 0 : (_serverFilesManifest_config = serverFilesManifest.config) == null ? void 0 : (_serverFilesManifest_config_experimental = _serverFilesManifest_config.experimental) == null ? void 0 : _serverFilesManifest_config_experimental.isExperimentalCompile;\n const hasServerProps = Boolean(getServerSideProps);\n const hasStaticProps = Boolean(getStaticProps);\n const hasStaticPaths = Boolean(getStaticPaths);\n const hasGetInitialProps = Boolean((_pages_cards_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"] || _pages_cards_js__WEBPACK_IMPORTED_MODULE_13__).getInitialProps);\n const isAmp = query.amp && config.amp;\n let cacheKey = null;\n let isIsrFallback = false;\n let isNextDataRequest = prepareResult.isNextDataRequest && (hasStaticProps || hasServerProps);\n const is404Page = srcPage === '/404';\n const is500Page = srcPage === '/500';\n const isErrorPage = srcPage === '/_error';\n if (!routeModule.isDev && !isDraftMode && hasStaticProps) {\n cacheKey = `${locale ? `/${locale}` : ''}${(srcPage === '/' || resolvedPathname === '/') && locale ? '' : resolvedPathname}${isAmp ? '.amp' : ''}`;\n if (is404Page || is500Page || isErrorPage) {\n cacheKey = `${locale ? `/${locale}` : ''}${srcPage}${isAmp ? '.amp' : ''}`;\n }\n // ensure /index and / is normalized to one key\n cacheKey = cacheKey === '/index' ? '/' : cacheKey;\n }\n if (hasStaticPaths && !isDraftMode) {\n const decodedPathname = (0,next_dist_shared_lib_router_utils_remove_trailing_slash__WEBPACK_IMPORTED_MODULE_25__.removeTrailingSlash)(locale ? (0,next_dist_shared_lib_router_utils_add_path_prefix__WEBPACK_IMPORTED_MODULE_24__.addPathPrefix)(resolvedPathname, `/${locale}`) : resolvedPathname);\n const isPrerendered = Boolean(prerenderManifest.routes[decodedPathname]) || prerenderManifest.notFoundRoutes.includes(decodedPathname);\n const prerenderInfo = prerenderManifest.dynamicRoutes[srcPage];\n if (prerenderInfo) {\n if (prerenderInfo.fallback === false && !isPrerendered) {\n throw new next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_21__.NoFallbackError();\n }\n if (typeof prerenderInfo.fallback === 'string' && !isPrerendered && !isNextDataRequest) {\n isIsrFallback = true;\n }\n }\n }\n // When serving a bot request, we want to serve a blocking render and not\n // the prerendered page. This ensures that the correct content is served\n // to the bot in the head.\n if (isIsrFallback && (0,next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_23__.isBot)(req.headers['user-agent'] || '') || (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_5__.getRequestMeta)(req, 'minimalMode')) {\n isIsrFallback = false;\n }\n const tracer = (0,next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__.getTracer)();\n const activeSpan = tracer.getActiveScopeSpan();\n try {\n const method = req.method || 'GET';\n const resolvedUrl = (0,next_dist_shared_lib_router_utils_format_url__WEBPACK_IMPORTED_MODULE_4__.formatUrl)({\n pathname: nextConfig.trailingSlash ? parsedUrl.pathname : (0,next_dist_shared_lib_router_utils_remove_trailing_slash__WEBPACK_IMPORTED_MODULE_25__.removeTrailingSlash)(parsedUrl.pathname || '/'),\n // make sure to only add query values from original URL\n query: hasStaticProps ? {} : originalQuery\n });\n const publicRuntimeConfig = (routerServerContext == null ? void 0 : routerServerContext.publicRuntimeConfig) || nextConfig.publicRuntimeConfig;\n const handleResponse = async (span)=>{\n const responseGenerator = async ({ previousCacheEntry })=>{\n var _previousCacheEntry_value;\n const doRender = async ()=>{\n try {\n var _nextConfig_i18n, _nextConfig_experimental_amp, _nextConfig_experimental_amp1;\n return await routeModule.render(req, res, {\n query: hasStaticProps && !isExperimentalCompile ? {\n ...params,\n ...isAmp ? {\n amp: query.amp\n } : {}\n } : {\n ...query,\n ...params\n },\n params,\n page: srcPage,\n renderContext: {\n isDraftMode,\n isFallback: isIsrFallback,\n developmentNotFoundSourcePage: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_5__.getRequestMeta)(req, 'developmentNotFoundSourcePage')\n },\n sharedContext: {\n buildId,\n customServer: Boolean(routerServerContext == null ? void 0 : routerServerContext.isCustomServer) || undefined,\n deploymentId: false\n },\n renderOpts: {\n params,\n routeModule,\n page: srcPage,\n pageConfig: config || {},\n Component: (0,next_dist_server_app_render_interop_default__WEBPACK_IMPORTED_MODULE_6__.interopDefault)(_pages_cards_js__WEBPACK_IMPORTED_MODULE_13__),\n ComponentMod: _pages_cards_js__WEBPACK_IMPORTED_MODULE_13__,\n getStaticProps,\n getStaticPaths,\n getServerSideProps,\n supportsDynamicResponse: !hasStaticProps,\n buildManifest,\n nextFontManifest,\n reactLoadableManifest,\n assetPrefix: nextConfig.assetPrefix,\n strictNextHead: nextConfig.experimental.strictNextHead ?? true,\n previewProps: prerenderManifest.preview,\n images: nextConfig.images,\n nextConfigOutput: nextConfig.output,\n optimizeCss: Boolean(nextConfig.experimental.optimizeCss),\n nextScriptWorkers: Boolean(nextConfig.experimental.nextScriptWorkers),\n domainLocales: (_nextConfig_i18n = nextConfig.i18n) == null ? void 0 : _nextConfig_i18n.domains,\n crossOrigin: nextConfig.crossOrigin,\n multiZoneDraftMode,\n basePath: nextConfig.basePath,\n canonicalBase: nextConfig.amp.canonicalBase || '',\n ampOptimizerConfig: (_nextConfig_experimental_amp = nextConfig.experimental.amp) == null ? void 0 : _nextConfig_experimental_amp.optimizer,\n disableOptimizedLoading: nextConfig.experimental.disableOptimizedLoading,\n largePageDataBytes: nextConfig.experimental.largePageDataBytes,\n // Only the `publicRuntimeConfig` key is exposed to the client side\n // It'll be rendered as part of __NEXT_DATA__ on the client side\n runtimeConfig: Object.keys(publicRuntimeConfig).length > 0 ? publicRuntimeConfig : undefined,\n isExperimentalCompile,\n experimental: {\n clientTraceMetadata: nextConfig.experimental.clientTraceMetadata || []\n },\n locale,\n locales,\n defaultLocale,\n setIsrStatus: routerServerContext == null ? void 0 : routerServerContext.setIsrStatus,\n isNextDataRequest: isNextDataRequest && (hasServerProps || hasStaticProps),\n resolvedUrl,\n // For getServerSideProps and getInitialProps we need to ensure we use the original URL\n // and not the resolved URL to prevent a hydration mismatch on\n // asPath\n resolvedAsPath: hasServerProps || hasGetInitialProps ? (0,next_dist_shared_lib_router_utils_format_url__WEBPACK_IMPORTED_MODULE_4__.formatUrl)({\n // we use the original URL pathname less the _next/data prefix if\n // present\n pathname: isNextDataRequest ? (0,next_dist_shared_lib_page_path_normalize_data_path__WEBPACK_IMPORTED_MODULE_8__.normalizeDataPath)(originalPathname) : originalPathname,\n query: originalQuery\n }) : resolvedUrl,\n isOnDemandRevalidate,\n ErrorDebug: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_5__.getRequestMeta)(req, 'PagesErrorDebug'),\n err: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_5__.getRequestMeta)(req, 'invokeError'),\n dev: routeModule.isDev,\n // needed for experimental.optimizeCss feature\n distDir: `${routeModule.projectDir}/${routeModule.distDir}`,\n ampSkipValidation: (_nextConfig_experimental_amp1 = nextConfig.experimental.amp) == null ? void 0 : _nextConfig_experimental_amp1.skipValidation,\n ampValidator: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_5__.getRequestMeta)(req, 'ampValidator')\n }\n }).then((renderResult)=>{\n const { metadata } = renderResult;\n let cacheControl = metadata.cacheControl;\n if ('isNotFound' in metadata && metadata.isNotFound) {\n return {\n value: null,\n cacheControl\n };\n }\n // Handle `isRedirect`.\n if (metadata.isRedirect) {\n return {\n value: {\n kind: next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_9__.CachedRouteKind.REDIRECT,\n props: metadata.pageData ?? metadata.flightData\n },\n cacheControl\n };\n }\n return {\n value: {\n kind: next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_9__.CachedRouteKind.PAGES,\n html: renderResult,\n pageData: renderResult.metadata.pageData,\n headers: renderResult.metadata.headers,\n status: renderResult.metadata.statusCode\n },\n cacheControl\n };\n }).finally(()=>{\n if (!span) return;\n span.setAttributes({\n 'http.status_code': res.statusCode,\n 'next.rsc': false\n });\n const rootSpanAttributes = tracer.getRootSpanAttributes();\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return;\n }\n if (rootSpanAttributes.get('next.span_type') !== next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_2__.BaseServerSpan.handleRequest) {\n console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`);\n return;\n }\n const route = rootSpanAttributes.get('next.route');\n if (route) {\n const name = `${method} ${route}`;\n span.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name\n });\n span.updateName(name);\n } else {\n span.updateName(`${method} ${req.url}`);\n }\n });\n } catch (err) {\n // if this is a background revalidate we need to report\n // the request error here as it won't be bubbled\n if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) {\n await routeModule.onRequestError(req, err, {\n routerKind: 'Pages Router',\n routePath: srcPage,\n routeType: 'render',\n revalidateReason: (0,next_dist_server_instrumentation_utils__WEBPACK_IMPORTED_MODULE_7__.getRevalidateReason)({\n isRevalidate: hasStaticProps,\n isOnDemandRevalidate\n })\n }, routerServerContext);\n }\n throw err;\n }\n };\n // if we've already generated this page we no longer\n // serve the fallback\n if (previousCacheEntry) {\n isIsrFallback = false;\n }\n if (isIsrFallback) {\n const fallbackResponse = await routeModule.getResponseCache(req).get(routeModule.isDev ? null : locale ? `/${locale}${srcPage}` : srcPage, async ({ previousCacheEntry: previousFallbackCacheEntry = null })=>{\n if (!routeModule.isDev) {\n return (0,next_dist_server_response_cache_utils__WEBPACK_IMPORTED_MODULE_20__.toResponseCacheEntry)(previousFallbackCacheEntry);\n }\n return doRender();\n }, {\n routeKind: next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.PAGES,\n isFallback: true,\n isRoutePPREnabled: false,\n isOnDemandRevalidate: false,\n incrementalCache: await routeModule.getIncrementalCache(req, nextConfig, prerenderManifest),\n waitUntil: ctx.waitUntil\n });\n if (fallbackResponse) {\n // Remove the cache control from the response to prevent it from being\n // used in the surrounding cache.\n delete fallbackResponse.cacheControl;\n fallbackResponse.isMiss = true;\n return fallbackResponse;\n }\n }\n if (!(0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_5__.getRequestMeta)(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) {\n res.statusCode = 404;\n // on-demand revalidate always sets this header\n res.setHeader('x-nextjs-cache', 'REVALIDATED');\n res.end('This page could not be found');\n return null;\n }\n if (isIsrFallback && (previousCacheEntry == null ? void 0 : (_previousCacheEntry_value = previousCacheEntry.value) == null ? void 0 : _previousCacheEntry_value.kind) === next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_9__.CachedRouteKind.PAGES) {\n return {\n value: {\n kind: next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_9__.CachedRouteKind.PAGES,\n html: new next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_19__[\"default\"](Buffer.from(previousCacheEntry.value.html), {\n contentType: 'text/html;utf-8',\n metadata: {\n statusCode: previousCacheEntry.value.status,\n headers: previousCacheEntry.value.headers\n }\n }),\n pageData: {},\n status: previousCacheEntry.value.status,\n headers: previousCacheEntry.value.headers\n },\n cacheControl: {\n revalidate: 0,\n expire: undefined\n }\n };\n }\n return doRender();\n };\n const result = await routeModule.handleResponse({\n cacheKey,\n req,\n nextConfig,\n routeKind: next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.PAGES,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n waitUntil: ctx.waitUntil,\n responseGenerator: responseGenerator,\n prerenderManifest\n });\n // if we got a cache hit this wasn't an ISR fallback\n // but it wasn't generated during build so isn't in the\n // prerender-manifest\n if (isIsrFallback && !(result == null ? void 0 : result.isMiss)) {\n isIsrFallback = false;\n }\n // response is finished is no cache entry\n if (!result) {\n return;\n }\n if (hasStaticProps && !(0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_5__.getRequestMeta)(req, 'minimalMode')) {\n res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : result.isMiss ? 'MISS' : result.isStale ? 'STALE' : 'HIT');\n }\n let cacheControl;\n if (!hasStaticProps || isIsrFallback) {\n if (!res.getHeader('Cache-Control')) {\n cacheControl = {\n revalidate: 0,\n expire: undefined\n };\n }\n } else if (is404Page) {\n const notFoundRevalidate = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_5__.getRequestMeta)(req, 'notFoundRevalidate');\n cacheControl = {\n revalidate: typeof notFoundRevalidate === 'undefined' ? 0 : notFoundRevalidate,\n expire: undefined\n };\n } else if (is500Page) {\n cacheControl = {\n revalidate: 0,\n expire: undefined\n };\n } else if (result.cacheControl) {\n // If the cache entry has a cache control with a revalidate value that's\n // a number, use it.\n if (typeof result.cacheControl.revalidate === 'number') {\n var _result_cacheControl;\n if (result.cacheControl.revalidate < 1) {\n throw Object.defineProperty(new Error(`Invalid revalidate configuration provided: ${result.cacheControl.revalidate} < 1`), \"__NEXT_ERROR_CODE\", {\n value: \"E22\",\n enumerable: false,\n configurable: true\n });\n }\n cacheControl = {\n revalidate: result.cacheControl.revalidate,\n expire: ((_result_cacheControl = result.cacheControl) == null ? void 0 : _result_cacheControl.expire) ?? nextConfig.expireTime\n };\n } else {\n // revalidate: false\n cacheControl = {\n revalidate: next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_17__.CACHE_ONE_YEAR,\n expire: undefined\n };\n }\n }\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (cacheControl && !res.getHeader('Cache-Control')) {\n res.setHeader('Cache-Control', (0,next_dist_server_lib_cache_control__WEBPACK_IMPORTED_MODULE_14__.getCacheControlHeader)(cacheControl));\n }\n // notFound: true case\n if (!result.value) {\n var _result_cacheControl1;\n // add revalidate metadata before rendering 404 page\n // so that we can use this as source of truth for the\n // cache-control header instead of what the 404 page returns\n // for the revalidate value\n (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_5__.addRequestMeta)(req, 'notFoundRevalidate', (_result_cacheControl1 = result.cacheControl) == null ? void 0 : _result_cacheControl1.revalidate);\n res.statusCode = 404;\n if (isNextDataRequest) {\n res.end('{\"notFound\":true}');\n return;\n }\n // TODO: should route-module itself handle rendering the 404\n if (routerServerContext == null ? void 0 : routerServerContext.render404) {\n await routerServerContext.render404(req, res, parsedUrl, false);\n } else {\n res.end('This page could not be found');\n }\n return;\n }\n if (result.value.kind === next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_9__.CachedRouteKind.REDIRECT) {\n if (isNextDataRequest) {\n res.setHeader('content-type', 'application/json');\n res.end(JSON.stringify(result.value.props));\n return;\n } else {\n const handleRedirect = (pageData)=>{\n const redirect = {\n destination: pageData.pageProps.__N_REDIRECT,\n statusCode: pageData.pageProps.__N_REDIRECT_STATUS,\n basePath: pageData.pageProps.__N_REDIRECT_BASE_PATH\n };\n const statusCode = (0,next_dist_lib_redirect_status__WEBPACK_IMPORTED_MODULE_16__.getRedirectStatus)(redirect);\n const { basePath } = nextConfig;\n if (basePath && redirect.basePath !== false && redirect.destination.startsWith('/')) {\n redirect.destination = `${basePath}${redirect.destination}`;\n }\n if (redirect.destination.startsWith('/')) {\n redirect.destination = (0,next_dist_shared_lib_utils__WEBPACK_IMPORTED_MODULE_15__.normalizeRepeatedSlashes)(redirect.destination);\n }\n res.statusCode = statusCode;\n res.setHeader('Location', redirect.destination);\n if (statusCode === next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_22__.RedirectStatusCode.PermanentRedirect) {\n res.setHeader('Refresh', `0;url=${redirect.destination}`);\n }\n res.end(redirect.destination);\n };\n await handleRedirect(result.value.props);\n return null;\n }\n }\n if (result.value.kind !== next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_9__.CachedRouteKind.PAGES) {\n throw Object.defineProperty(new Error(`Invariant: received non-pages cache entry in pages handler`), \"__NEXT_ERROR_CODE\", {\n value: \"E695\",\n enumerable: false,\n configurable: true\n });\n }\n // In dev, we should not cache pages for any reason.\n if (routeModule.isDev) {\n res.setHeader('Cache-Control', 'no-store, must-revalidate');\n }\n // Draft mode should never be cached\n if (isDraftMode) {\n res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate');\n }\n // when invoking _error before pages/500 we don't actually\n // send the _error response\n if ((0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_5__.getRequestMeta)(req, 'customErrorRender') || isErrorPage && (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_5__.getRequestMeta)(req, 'minimalMode') && res.statusCode === 500) {\n return null;\n }\n await (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_18__.sendRenderResult)({\n req,\n res,\n // If we are rendering the error page it's not a data request\n // anymore\n result: isNextDataRequest && !isErrorPage && !is500Page ? new next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_19__[\"default\"](Buffer.from(JSON.stringify(result.value.pageData)), {\n contentType: 'application/json',\n metadata: result.value.html.metadata\n }) : result.value.html,\n generateEtags: nextConfig.generateEtags,\n poweredByHeader: nextConfig.poweredByHeader,\n cacheControl: routeModule.isDev ? undefined : cacheControl,\n type: isNextDataRequest ? 'json' : 'html'\n });\n };\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (activeSpan) {\n await handleResponse();\n } else {\n await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_2__.BaseServerSpan.handleRequest, {\n spanName: `${method} ${req.url}`,\n kind: next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__.SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url\n }\n }, handleResponse));\n }\n } catch (err) {\n await routeModule.onRequestError(req, err, {\n routerKind: 'Pages Router',\n routePath: srcPage,\n routeType: 'render',\n revalidateReason: (0,next_dist_server_instrumentation_utils__WEBPACK_IMPORTED_MODULE_7__.getRevalidateReason)({\n isRevalidate: hasStaticProps,\n isOnDemandRevalidate\n })\n }, routerServerContext);\n // rethrow so that we can handle serving error page\n throw err;\n }\n}\n\n//# sourceMappingURL=pages.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL25leHQtcm91dGUtbG9hZGVyL2luZGV4LmpzP2tpbmQ9UEFHRVMmcGFnZT0lMkZjYXJkcyZwcmVmZXJyZWRSZWdpb249JmFic29sdXRlUGFnZVBhdGg9LiUyRnBhZ2VzJTJGY2FyZHMuanMmYWJzb2x1dGVBcHBQYXRoPXByaXZhdGUtbmV4dC1wYWdlcyUyRl9hcHAmYWJzb2x1dGVEb2N1bWVudFBhdGg9cHJpdmF0ZS1uZXh0LXBhZ2VzJTJGX2RvY3VtZW50Jm1pZGRsZXdhcmVDb25maWdCYXNlNjQ9ZTMwJTNEISIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBd0Y7QUFDaEM7QUFDYztBQUNFO0FBQ0M7QUFDTTtBQUNGO0FBQ0E7QUFDVTtBQUNyQjtBQUNSO0FBQzFEO0FBQ3lEO0FBQ1Y7QUFDL0M7QUFDNkM7QUFDOEI7QUFDTDtBQUNKO0FBQ1Q7QUFDUTtBQUNQO0FBQ21CO0FBQ0s7QUFDSTtBQUNyQjtBQUNpQjtBQUNZO0FBQzlGO0FBQ0EsaUVBQWUseUVBQUssQ0FBQyw2Q0FBUSxZQUFZLEVBQUM7QUFDMUM7QUFDTyx1QkFBdUIseUVBQUssQ0FBQyw2Q0FBUTtBQUNyQyx1QkFBdUIseUVBQUssQ0FBQyw2Q0FBUTtBQUNyQywyQkFBMkIseUVBQUssQ0FBQyw2Q0FBUTtBQUN6QyxlQUFlLHlFQUFLLENBQUMsNkNBQVE7QUFDN0Isd0JBQXdCLHlFQUFLLENBQUMsNkNBQVE7QUFDN0M7QUFDTyxnQ0FBZ0MseUVBQUssQ0FBQyw2Q0FBUTtBQUM5QyxnQ0FBZ0MseUVBQUssQ0FBQyw2Q0FBUTtBQUM5QyxpQ0FBaUMseUVBQUssQ0FBQyw2Q0FBUTtBQUMvQyxnQ0FBZ0MseUVBQUssQ0FBQyw2Q0FBUTtBQUM5QyxvQ0FBb0MseUVBQUssQ0FBQyw2Q0FBUTtBQUN6RDtB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QUFDQTtBQUNBLGdCQUFnQiw2RUFBYyw2Q0FBNkMsNkVBQWM7QUFDekY7QUFDQTtBQUNBLGtCQUFrQixnRkFBZ0I7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4RUFBOEUsdUVBQVk7QUFDMUY7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWLDZFQUE2RSxnRkFBYztBQUMzRixpQ0FBaUMsUUFBUSxFQUFFLFFBQVE7QUFDbkQsMEJBQTBCLHVFQUFRO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLDJGQUFtQjtBQUNqRDtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhZ2VzUm91dGVNb2R1bGUgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL3BhZ2VzL21vZHVsZS5jb21waWxlZFwiO1xuaW1wb3J0IHsgUm91dGVLaW5kIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvcm91dGUta2luZFwiO1xuaW1wb3J0IHsgQmFzZVNlcnZlclNwYW4gfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9saWIvdHJhY2UvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBnZXRUcmFjZXIsIFNwYW5LaW5kIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvbGliL3RyYWNlL3RyYWNlclwiO1xuaW1wb3J0IHsgZm9ybWF0VXJsIH0gZnJvbSBcIm5leHQvZGlzdC9zaGFyZWQvbGliL3JvdXRlci91dGlscy9mb3JtYXQtdXJsXCI7XG5pbXBvcnQgeyBhZGRSZXF1ZXN0TWV0YSwgZ2V0UmVxdWVzdE1ldGEgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9yZXF1ZXN0LW1ldGFcIjtcbmltcG9ydCB7IGludGVyb3BEZWZhdWx0IH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvYXBwLXJlbmRlci9pbnRlcm9wLWRlZmF1bHRcIjtcbmltcG9ydCB7IGdldFJldmFsaWRhdGVSZWFzb24gfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9pbnN0cnVtZW50YXRpb24vdXRpbHNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZURhdGFQYXRoIH0gZnJvbSBcIm5leHQvZGlzdC9zaGFyZWQvbGliL3BhZ2UtcGF0aC9ub3JtYWxpemUtZGF0YS1wYXRoXCI7XG5pbXBvcnQgeyBDYWNoZWRSb3V0ZUtpbmQgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9yZXNwb25zZS1jYWNoZVwiO1xuaW1wb3J0IHsgaG9pc3QgfSBmcm9tIFwibmV4dC9kaXN0L2J1aWxkL3RlbXBsYXRlcy9oZWxwZXJzXCI7XG4vLyBJbXBvcnQgdGhlIGFwcCBhbmQgZG9jdW1lbnQgbW9kdWxlcy5cbmltcG9ydCAqIGFzIGRvY3VtZW50IGZyb20gXCJwcml2YXRlLW5leHQtcGFnZXMvX2RvY3VtZW50XCI7XG5pbXBvcnQgKiBhcyBhcHAgZnJvbSBcInByaXZhdGUtbmV4dC1wYWdlcy9fYXBwXCI7XG4vLyBJbXBvcnQgdGhlIHVzZXJsYW5kIGNvZGUuXG5pbXBvcnQgKiBhcyB1c2VybGFuZCBmcm9tIFwiLi9wYWdlcy9jYXJkcy5qc1wiO1xuaW1wb3J0IHsgZ2V0Q2FjaGVDb250cm9sSGVhZGVyIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvbGliL2NhY2hlLWNvbnRyb2xcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZVJlcGVhdGVkU2xhc2hlcyB9IGZyb20gXCJuZXh0L2Rpc3Qvc2hhcmVkL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgZ2V0UmVkaXJlY3RTdGF0dXMgfSBmcm9tIFwibmV4dC9kaXN0L2xpYi9yZWRpcmVjdC1zdGF0dXNcIjtcbmltcG9ydCB7IENBQ0hFX09ORV9ZRUFSIH0gZnJvbSBcIm5leHQvZGlzdC9saWIvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBzZW5kUmVuZGVyUmVzdWx0IH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvc2VuZC1wYXlsb2FkXCI7XG5pbXBvcnQgUmVuZGVyUmVzdWx0IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL3JlbmRlci1yZXN1bHRcIjtcbmltcG9ydCB7IHRvUmVzcG9uc2VDYWNoZUVudHJ5IH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvcmVzcG9uc2UtY2FjaGUvdXRpbHNcIjtcbmltcG9ydCB7IE5vRmFsbGJhY2tFcnJvciB9IGZyb20gXCJuZXh0L2Rpc3Qvc2hhcmVkL2xpYi9uby1mYWxsYmFjay1lcnJvci5leHRlcm5hbFwiO1xuaW1wb3J0IHsgUmVkaXJlY3RTdGF0dXNDb2RlIH0gZnJvbSBcIm5leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9yZWRpcmVjdC1zdGF0dXMtY29kZVwiO1xuaW1wb3J0IHsgaXNCb3QgfSBmcm9tIFwibmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2lzLWJvdFwiO1xuaW1wb3J0IHsgYWRkUGF0aFByZWZpeCB9IGZyb20gXCJuZXh0L2Rpc3Qvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvYWRkLXBhdGgtcHJlZml4XCI7XG5pbXBvcnQgeyByZW1vdmVUcmFpbGluZ1NsYXNoIH0gZnJvbSBcIm5leHQvZGlzdC9zaGFyZWQvbGliL3JvdXRlci91dGlscy9yZW1vdmUtdHJhaWxpbmctc2xhc2hcIjtcbi8vIFJlLWV4cG9ydCB0aGUgY29tcG9uZW50IChzaG91bGQgYmUgdGhlIGRlZmF1bHQgZXhwb3J0KS5cbmV4cG9ydCBkZWZhdWx0IGhvaXN0KHVzZXJsYW5kLCAnZGVmYXVsdCcpO1xuLy8gUmUtZXhwb3J0IG1ldGhvZHMuXG5leHBvcnQgY29uc3QgZ2V0U3RhdGljUHJvcHMgPSBob2lzdCh1c2VybGFuZCwgJ2dldFN0YXRpY1Byb3BzJyk7XG5leHBvcnQgY29uc3QgZ2V0U3RhdGljUGF0aHMgPSBob2lzdCh1c2VybGFuZCwgJ2dldFN0YXRpY1BhdGhzJyk7XG5leHBvcnQgY29uc3QgZ2V0U2VydmVyU2lkZVByb3BzID0gaG9pc3QodXNlcmxhbmQsICdnZXRTZXJ2ZXJTaWRlUHJvcHMnKTtcbmV4cG9ydCBjb25zdCBjb25maWcgPSBob2lzdCh1c2VybGFuZCwgJ2NvbmZpZycpO1xuZXhwb3J0IGNvbnN0IHJlcG9ydFdlYlZpdGFscyA9IGhvaXN0KHVzZXJsYW5kLCAncmVwb3J0V2ViVml0YWxzJyk7XG4vLyBSZS1leHBvcnQgbGVnYWN5IG1ldGhvZHMuXG5leHBvcnQgY29uc3QgdW5zdGFibGVfZ2V0U3RhdGljUHJvcHMgPSBob2lzdCh1c2VybGFuZCwgJ3Vuc3RhYmxlX2dldFN0YXRpY1Byb3BzJyk7XG5leHBvcnQgY29uc3QgdW5zdGFibGVfZ2V0U3RhdGljUGF0aHMgPSBob2lzdCh1c2VybGFuZCwgJ3Vuc3RhYmxlX2dldFN0YXRpY1BhdGhzJyk7XG5leHBvcnQgY29uc3QgdW5zdGFibGVfZ2V0U3RhdGljUGFyYW1zID0gaG9pc3QodXNlcmxhbmQsICd1bnN0YWJsZV9nZXRTdGF0aWNQYXJhbXMnKTtcbmV4cG9ydCBjb25zdCB1bnN0YWJsZV9nZXRTZXJ2ZXJQcm9wcyA9IGhvaXN0KHVzZXJsYW5kLCAndW5zdGFibGVfZ2V0U2VydmVyUHJvcHMnKTtcbmV4cG9ydCBjb25zdCB1bnN0YWJsZV9nZXRTZXJ2ZXJTaWRlUHJvcHMgPSBob2lzdCh1c2VybGFuZCwgJ3Vuc3RhYmxlX2dldFNlcnZlclNpZGVQcm9wcycpO1xuLy8gQ3JlYXRlIGFuZCBleHBvcnQgdGhlIHJvdXRlIG1vZHVsZSB0aGF0IHdpbGwgYmUgY29uc3VtZWQuXG5leHBvcnQgY29uc3Qgcm91dGVNb2R1bGUgPSBuZXcgUGFnZXNSb3V0ZU1vZHVsZSh7XG4gICAgZGVmaW5pdGlvbjoge1xuICAgICAgICBraW5kOiBSb3V0ZUtpbmQuUEFHRVMsXG4gICAgICAgIHBhZ2U6IFwiL2NhcmRzXCIsXG4gICAgICAgIHBhdGhuYW1lOiBcIi9jYXJkc1wiLFxuICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGFyZW4ndCB1c2VkIGluIHByb2R1Y3Rpb24uXG4gICAgICAgIGJ1bmRsZVBhdGg6ICcnLFxuICAgICAgICBmaWxlbmFtZTogJydcbiAgICB9LFxuICAgIGRpc3REaXI6IHByb2Nlc3MuZW52Ll9fTkVYVF9SRUxBVElWRV9ESVNUX0RJUiB8fCAnJyxcbiAgICBwcm9qZWN0RGlyOiBwcm9jZXNzLmVudi5fX05FWFRfUkVMQVRJVkVfUFJPSkVDVF9ESVIgfHwgJycsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICAvLyBkZWZhdWx0IGV4cG9ydCBtaWdodCBub3QgZXhpc3Qgd2hlbiBvcHRpbWl6ZWQgZm9yIGRhdGEgb25seVxuICAgICAgICBBcHA6IGFwcC5kZWZhdWx0LFxuICAgICAgICBEb2N1bWVudDogZG9jdW1lbnQuZGVmYXVsdFxuICAgIH0sXG4gICAgdXNlcmxhbmRcbn0pO1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIocmVxLCByZXMsIGN0eCkge1xuICAgIHZhciBfc2VydmVyRmlsZXNNYW5pZmVzdF9jb25maWdfZXhwZXJpbWVudGFsLCBfc2VydmVyRmlsZXNNYW5pZmVzdF9jb25maWc7XG4gICAgbGV0IHNyY1BhZ2UgPSBcIi9jYXJkc1wiO1xuICAgIC8vIHR1cmJvcGFjayBkb2Vzbid0IG5vcm1hbGl6ZSBgL2luZGV4YCBpbiB0aGUgcGFnZSBuYW1lXG4gICAgLy8gc28gd2UgbmVlZCB0byB0byBwcm9jZXNzIGR5bmFtaWMgcm91dGVzIHByb3Blcmx5XG4gICAgLy8gVE9ETzogZml4IHR1cmJvcGFjayBwcm92aWRpbmcgZGlmZmVyaW5nIHZhbHVlIGZyb20gd2VicGFja1xuICAgIGlmIChwcm9jZXNzLmVudi5UVVJCT1BBQ0spIHtcbiAgICAgICAgc3JjUGFnZSA9IHNyY1BhZ2UucmVwbGFjZSgvXFwvaW5kZXgkLywgJycpIHx8ICcvJztcbiAgICB9IGVsc2UgaWYgKHNyY1BhZ2UgPT09ICcvaW5kZXgnKSB7XG4gICAgICAgIC8vIHdlIGFsd2F5cyBub3JtYWxpemUgL2luZGV4IHNwZWNpZmljYWxseVxuICAgICAgICBzcmNQYWdlID0gJy8nO1xuICAgIH1cbiAgICBjb25zdCBtdWx0aVpvbmVEcmFmdE1vZGUgPSBwcm9jZXNzLmVudi5fX05FWFRfTVVMVElfWk9ORV9EUkFGVF9NT0RFO1xuICAgIGNvbnN0IHByZXBhcmVSZXN1bHQgPSBhd2FpdCByb3V0ZU1vZHVsZS5wcmVwYXJlKHJlcSwgcmVzLCB7XG4gICAgICAgIHNyY1BhZ2UsXG4gICAgICAgIG11bHRpWm9uZURyYWZ0TW9kZVxuICAgIH0pO1xuICAgIGlmICghcHJlcGFyZVJlc3VsdCkge1xuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMDtcbiAgICAgICAgcmVzLmVuZCgnQmFkIFJlcXVlc3QnKTtcbiAgICAgICAgY3R4LndhaXRVbnRpbCA9PSBudWxsID8gdm9pZCAwIDogY3R4LndhaXRVbnRpbC5jYWxsKGN0eCwgUHJvbWlzZS5yZXNvbHZlKCkpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHsgYnVpbGRJZCwgcXVlcnksIHBhcmFtcywgcGFyc2VkVXJsLCBvcmlnaW5hbFF1ZXJ5LCBvcmlnaW5hbFBhdGhuYW1lLCBidWlsZE1hbmlmZXN0LCBuZXh0Rm9udE1hbmlmZXN0LCBzZXJ2ZXJGaWxlc01hbmlmZXN0LCByZWFjdExvYWRhYmxlTWFuaWZlc3QsIHByZXJlbmRlck1hbmlmZXN0LCBpc0RyYWZ0TW9kZSwgaXNPbkRlbWFuZFJldmFsaWRhdGUsIHJldmFsaWRhdGVPbmx5R2VuZXJhdGVkLCBsb2NhbGUsIGxvY2FsZXMsIGRlZmF1bHRMb2NhbGUsIHJvdXRlclNlcnZlckNvbnRleHQsIG5leHRDb25maWcsIHJlc29sdmVkUGF0aG5hbWUgfSA9IHByZXBhcmVSZXN1bHQ7XG4gICAgY29uc3QgaXNFeHBlcmltZW50YWxDb21waWxlID0gc2VydmVyRmlsZXNNYW5pZmVzdCA9PSBudWxsID8gdm9pZCAwIDogKF9zZXJ2ZXJGaWxlc01hbmlmZXN0X2NvbmZpZyA9IHNlcnZlckZpbGVzTWFuaWZlc3QuY29uZmlnKSA9PSBudWxsID8gdm9pZCAwIDogKF9zZXJ2ZXJGaWxlc01hbmlmZXN0X2NvbmZpZ19leHBlcmltZW50YWwgPSBfc2VydmVyRmlsZXNNYW5pZmVzdF9jb25maWcuZXhwZXJpbWVudGFsKSA9PSBudWxsID8gdm9pZCAwIDogX3NlcnZlckZpbGVzTWFuaWZlc3RfY29uZmlnX2V4cGVyaW1lbnRhbC5pc0V4cGVyaW1lbnRhbENvbXBpbGU7XG4gICAgY29uc3QgaGFzU2VydmVyUHJvcHMgPSBCb29sZWFuKGdldFNlcnZlclNpZGVQcm9wcyk7XG4gICAgY29uc3QgaGFzU3RhdGljUHJvcHMgPSBCb29sZWFuKGdldFN0YXRpY1Byb3BzKTtcbiAgICBjb25zdCBoYXNTdGF0aWNQYXRocyA9IEJvb2xlYW4oZ2V0U3RhdGljUGF0aHMpO1xuICAgIGNvbnN0IGhhc0dldEluaXRpYWxQcm9wcyA9IEJvb2xlYW4oKHVzZXJsYW5kLmRlZmF1bHQgfHwgdXNlcmxhbmQpLmdldEluaXRpYWxQcm9wcyk7XG4gICAgY29uc3QgaXNBbXAgPSBxdWVyeS5hbXAgJiYgY29uZmlnLmFtcDtcbiAgICBsZXQgY2FjaGVLZXkgPSBudWxsO1xuICAgIGxldCBpc0lzckZhbGxiYWNrID0gZmFsc2U7XG4gICAgbGV0IGlzTmV4dERhdGFSZXF1ZXN0ID0gcHJlcGFyZVJlc3VsdC5pc05leHREYXRhUmVxdWVzdCAmJiAoaGFzU3RhdGljUHJvcHMgfHwgaGFzU2VydmVyUHJvcHMpO1xuICAgIGNvbnN0IGlzNDA0UGFnZSA9IHNyY1BhZ2UgPT09ICcvNDA0JztcbiAgICBjb25zdCBpczUwMFBhZ2UgPSBzcmNQYWdlID09PSAnLzUwMCc7XG4gICAgY29uc3QgaXNFcnJvclBhZ2UgPSBzcmNQYWdlID09PSAnL19lcnJvcic7XG4gICAgaWYgKCFyb3V0ZU1vZHVsZS5pc0RldiAmJiAhaXNEcmFmdE1vZGUgJiYgaGFzU3RhdGljUHJvcHMpIHtcbiAgICAgICAgY2FjaGVLZXkgPSBgJHtsb2NhbGUgPyBgLyR7bG9jYWxlfWAgOiAnJ30keyhzcmNQYWdlID09PSAnLycgfHwgcmVzb2x2ZWRQYXRobmFtZSA9PT0gJy8nKSAmJiBsb2NhbGUgPyAnJyA6IHJlc29sdmVkUGF0aG5hbWV9JHtpc0FtcCA/ICcuYW1wJyA6ICcnfWA7XG4gICAgICAgIGlmIChpczQwNFBhZ2UgfHwgaXM1MDBQYWdlIHx8IGlzRXJyb3JQYWdlKSB7XG4gICAgICAgICAgICBjYWNoZUtleSA9IGAke2xvY2FsZSA/IGAvJHtsb2NhbGV9YCA6ICcnfSR7c3JjUGFnZX0ke2lzQW1wID8gJy5hbXAnIDogJyd9YDtcbiAgICAgICAgfVxuICAgICAgICAvLyBlbnN1cmUgL2luZGV4IGFuZCAvIGlzIG5vcm1hbGl6ZWQgdG8gb25lIGtleVxuICAgICAgICBjYWNoZUtleSA9IGNhY2hlS2V5ID09PSAnL2luZGV4JyA/ICcvJyA6IGNhY2hlS2V5O1xuICAgIH1cbiAgICBpZiAoaGFzU3RhdGljUGF0aHMgJiYgIWlzRHJhZnRNb2RlKSB7XG4gICAgICAgIGNvbnN0IGRlY29kZWRQYXRobmFtZSA9IHJlbW92ZVRyYWlsaW5nU2xhc2gobG9jYWxlID8gYWRkUGF0aFByZWZpeChyZXNvbHZlZFBhdGhuYW1lLCBgLyR7bG9jYWxlfWApIDogcmVzb2x2ZWRQYXRobmFtZSk7XG4gICAgICAgIGNvbnN0IGlzUHJlcmVuZGVyZWQgPSBCb29sZWFuKHByZXJlbmRlck1hbmlmZXN0LnJvdXRlc1tkZWNvZGVkUGF0aG5hbWVdKSB8fCBwcmVyZW5kZXJNYW5pZmVzdC5ub3RGb3VuZFJvdXRlcy5pbmNsdWRlcyhkZWNvZGVkUGF0aG5hbWUpO1xuICAgICAgICBjb25zdCBwcmVyZW5kZXJJbmZvID0gcHJlcmVuZGVyTWFuaWZlc3QuZHluYW1pY1JvdXRlc1tzcmNQYWdlXTtcbiAgICAgICAgaWYgKHByZXJlbmRlckluZm8pIHtcbiAgICAgICAgICAgIGlmIChwcmVyZW5kZXJJbmZvLmZhbGxiYWNrID09PSBmYWxzZSAmJiAhaXNQcmVyZW5kZXJlZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb0ZhbGxiYWNrRXJyb3IoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJlcmVuZGVySW5mby5mYWxsYmFjayA9PT0gJ3N0cmluZycgJiYgIWlzUHJlcmVuZGVyZWQgJiYgIWlzTmV4dERhdGFSZXF1ZXN0KSB7XG4gICAgICAgICAgICAgICAgaXNJc3JGYWxsYmFjayA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gV2hlbiBzZXJ2aW5nIGEgYm90IHJlcXVlc3QsIHdlIHdhbnQgdG8gc2VydmUgYSBibG9ja2luZyByZW5kZXIgYW5kIG5vdFxuICAgIC8vIHRoZSBwcmVyZW5kZXJlZCBwYWdlLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgY29ycmVjdCBjb250ZW50IGlzIHNlcnZlZFxuICAgIC8vIHRvIHRoZSBib3QgaW4gdGhlIGhlYWQuXG4gICAgaWYgKGlzSXNyRmFsbGJhY2sgJiYgaXNCb3QocmVxLmhlYWRlcnNbJ3VzZXItYWdlbnQnXSB8fCAnJykgfHwgZ2V0UmVxdWVzdE1ldGEocmVxLCAnbWluaW1hbE1vZGUnKSkge1xuICAgICAgICBpc0lzckZhbGxiYWNrID0gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHRyYWNlciA9IGdldFRyYWNlcigpO1xuICAgIGNvbnN0IGFjdGl2ZVNwYW4gPSB0cmFjZXIuZ2V0QWN0aXZlU2NvcGVTcGFuKCk7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbWV0aG9kID0gcmVxLm1ldGhvZCB8fCAnR0VUJztcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRVcmwgPSBmb3JtYXRVcmwoe1xuICAgICAgICAgICAgcGF0aG5hbWU6IG5leHRDb25maWcudHJhaWxpbmdTbGFzaCA/IHBhcnNlZFVybC5wYXRobmFtZSA6IHJlbW92ZVRyYWlsaW5nU2xhc2gocGFyc2VkVXJsLnBhdGhuYW1lIHx8ICcvJyksXG4gICAgICAgICAgICAvLyBtYWtlIHN1cmUgdG8gb25seSBhZGQgcXVlcnkgdmFsdWVzIGZyb20gb3JpZ2luYWwgVVJMXG4gICAgICAgICAgICBxdWVyeTogaGFzU3RhdGljUHJvcHMgPyB7fSA6IG9yaWdpbmFsUXVlcnlcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHB1YmxpY1J1bnRpbWVDb25maWcgPSAocm91dGVyU2VydmVyQ29udGV4dCA9PSBudWxsID8gdm9pZCAwIDogcm91dGVyU2VydmVyQ29udGV4dC5wdWJsaWNSdW50aW1lQ29uZmlnKSB8fCBuZXh0Q29uZmlnLnB1YmxpY1J1bnRpbWVDb25maWc7XG4gICAgICAgIGNvbnN0IGhhbmRsZVJlc3BvbnNlID0gYXN5bmMgKHNwYW4pPT57XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZUdlbmVyYXRvciA9IGFzeW5jICh7IHByZXZpb3VzQ2FjaGVFbnRyeSB9KT0+e1xuICAgICAgICAgICAgICAgIHZhciBfcHJldmlvdXNDYWNoZUVudHJ5X3ZhbHVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRvUmVuZGVyID0gYXN5bmMgKCk9PntcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfbmV4dENvbmZpZ19pMThuLCBfbmV4dENvbmZpZ19leHBlcmltZW50YWxfYW1wLCBfbmV4dENvbmZpZ19leHBlcmltZW50YWxfYW1wMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCByb3V0ZU1vZHVsZS5yZW5kZXIocmVxLCByZXMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeTogaGFzU3RhdGljUHJvcHMgJiYgIWlzRXhwZXJpbWVudGFsQ29tcGlsZSA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pc0FtcCA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtcDogcXVlcnkuYW1wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiB7fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wYXJhbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBzcmNQYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlckNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEcmFmdE1vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRmFsbGJhY2s6IGlzSXNyRmFsbGJhY2ssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50Tm90Rm91bmRTb3VyY2VQYWdlOiBnZXRSZXF1ZXN0TWV0YShyZXEsICdkZXZlbG9wbWVudE5vdEZvdW5kU291cmNlUGFnZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWRDb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbVNlcnZlcjogQm9vbGVhbihyb3V0ZXJTZXJ2ZXJDb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiByb3V0ZXJTZXJ2ZXJDb250ZXh0LmlzQ3VzdG9tU2VydmVyKSB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGxveW1lbnRJZDogcHJvY2Vzcy5lbnYuTkVYVF9ERVBMT1lNRU5UX0lEXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJPcHRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVNb2R1bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IHNyY1BhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VDb25maWc6IGNvbmZpZyB8fCB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9uZW50OiBpbnRlcm9wRGVmYXVsdCh1c2VybGFuZCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBvbmVudE1vZDogdXNlcmxhbmQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFN0YXRpY1Byb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRTdGF0aWNQYXRocyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U2VydmVyU2lkZVByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c0R5bmFtaWNSZXNwb25zZTogIWhhc1N0YXRpY1Byb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZE1hbmlmZXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0Rm9udE1hbmlmZXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFjdExvYWRhYmxlTWFuaWZlc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0UHJlZml4OiBuZXh0Q29uZmlnLmFzc2V0UHJlZml4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3ROZXh0SGVhZDogbmV4dENvbmZpZy5leHBlcmltZW50YWwuc3RyaWN0TmV4dEhlYWQgPz8gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlld1Byb3BzOiBwcmVyZW5kZXJNYW5pZmVzdC5wcmV2aWV3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IG5leHRDb25maWcuaW1hZ2VzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0Q29uZmlnT3V0cHV0OiBuZXh0Q29uZmlnLm91dHB1dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemVDc3M6IEJvb2xlYW4obmV4dENvbmZpZy5leHBlcmltZW50YWwub3B0aW1pemVDc3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0U2NyaXB0V29ya2VyczogQm9vbGVhbihuZXh0Q29uZmlnLmV4cGVyaW1lbnRhbC5uZXh0U2NyaXB0V29ya2VycyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbkxvY2FsZXM6IChfbmV4dENvbmZpZ19pMThuID0gbmV4dENvbmZpZy5pMThuKSA9PSBudWxsID8gdm9pZCAwIDogX25leHRDb25maWdfaTE4bi5kb21haW5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcm9zc09yaWdpbjogbmV4dENvbmZpZy5jcm9zc09yaWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlab25lRHJhZnRNb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlUGF0aDogbmV4dENvbmZpZy5iYXNlUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fub25pY2FsQmFzZTogbmV4dENvbmZpZy5hbXAuY2Fub25pY2FsQmFzZSB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1wT3B0aW1pemVyQ29uZmlnOiAoX25leHRDb25maWdfZXhwZXJpbWVudGFsX2FtcCA9IG5leHRDb25maWcuZXhwZXJpbWVudGFsLmFtcCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9uZXh0Q29uZmlnX2V4cGVyaW1lbnRhbF9hbXAub3B0aW1pemVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlT3B0aW1pemVkTG9hZGluZzogbmV4dENvbmZpZy5leHBlcmltZW50YWwuZGlzYWJsZU9wdGltaXplZExvYWRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhcmdlUGFnZURhdGFCeXRlczogbmV4dENvbmZpZy5leHBlcmltZW50YWwubGFyZ2VQYWdlRGF0YUJ5dGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IHRoZSBgcHVibGljUnVudGltZUNvbmZpZ2Aga2V5IGlzIGV4cG9zZWQgdG8gdGhlIGNsaWVudCBzaWRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEl0J2xsIGJlIHJlbmRlcmVkIGFzIHBhcnQgb2YgX19ORVhUX0RBVEFfXyBvbiB0aGUgY2xpZW50IHNpZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVudGltZUNvbmZpZzogT2JqZWN0LmtleXMocHVibGljUnVudGltZUNvbmZpZykubGVuZ3RoID4gMCA/IHB1YmxpY1J1bnRpbWVDb25maWcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRXhwZXJpbWVudGFsQ29tcGlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRUcmFjZU1ldGFkYXRhOiBuZXh0Q29uZmlnLmV4cGVyaW1lbnRhbC5jbGllbnRUcmFjZU1ldGFkYXRhIHx8IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdExvY2FsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNyU3RhdHVzOiByb3V0ZXJTZXJ2ZXJDb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiByb3V0ZXJTZXJ2ZXJDb250ZXh0LnNldElzclN0YXR1cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOZXh0RGF0YVJlcXVlc3Q6IGlzTmV4dERhdGFSZXF1ZXN0ICYmIChoYXNTZXJ2ZXJQcm9wcyB8fCBoYXNTdGF0aWNQcm9wcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3IgZ2V0U2VydmVyU2lkZVByb3BzIGFuZCBnZXRJbml0aWFsUHJvcHMgd2UgbmVlZCB0byBlbnN1cmUgd2UgdXNlIHRoZSBvcmlnaW5hbCBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIG5vdCB0aGUgcmVzb2x2ZWQgVVJMIHRvIHByZXZlbnQgYSBoeWRyYXRpb24gbWlzbWF0Y2ggb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNQYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXNQYXRoOiBoYXNTZXJ2ZXJQcm9wcyB8fCBoYXNHZXRJbml0aWFsUHJvcHMgPyBmb3JtYXRVcmwoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgdXNlIHRoZSBvcmlnaW5hbCBVUkwgcGF0aG5hbWUgbGVzcyB0aGUgX25leHQvZGF0YSBwcmVmaXggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByZXNlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lOiBpc05leHREYXRhUmVxdWVzdCA/IG5vcm1hbGl6ZURhdGFQYXRoKG9yaWdpbmFsUGF0aG5hbWUpIDogb3JpZ2luYWxQYXRobmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBvcmlnaW5hbFF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogcmVzb2x2ZWRVcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzT25EZW1hbmRSZXZhbGlkYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnJvckRlYnVnOiBnZXRSZXF1ZXN0TWV0YShyZXEsICdQYWdlc0Vycm9yRGVidWcnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyOiBnZXRSZXF1ZXN0TWV0YShyZXEsICdpbnZva2VFcnJvcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXY6IHJvdXRlTW9kdWxlLmlzRGV2LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuZWVkZWQgZm9yIGV4cGVyaW1lbnRhbC5vcHRpbWl6ZUNzcyBmZWF0dXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3REaXI6IGAke3JvdXRlTW9kdWxlLnByb2plY3REaXJ9LyR7cm91dGVNb2R1bGUuZGlzdERpcn1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbXBTa2lwVmFsaWRhdGlvbjogKF9uZXh0Q29uZmlnX2V4cGVyaW1lbnRhbF9hbXAxID0gbmV4dENvbmZpZy5leHBlcmltZW50YWwuYW1wKSA9PSBudWxsID8gdm9pZCAwIDogX25leHRDb25maWdfZXhwZXJpbWVudGFsX2FtcDEuc2tpcFZhbGlkYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtcFZhbGlkYXRvcjogZ2V0UmVxdWVzdE1ldGEocmVxLCAnYW1wVmFsaWRhdG9yJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KS50aGVuKChyZW5kZXJSZXN1bHQpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBtZXRhZGF0YSB9ID0gcmVuZGVyUmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjYWNoZUNvbnRyb2wgPSBtZXRhZGF0YS5jYWNoZUNvbnRyb2w7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdpc05vdEZvdW5kJyBpbiBtZXRhZGF0YSAmJiBtZXRhZGF0YS5pc05vdEZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgYGlzUmVkaXJlY3RgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZXRhZGF0YS5pc1JlZGlyZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6IENhY2hlZFJvdXRlS2luZC5SRURJUkVDVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogbWV0YWRhdGEucGFnZURhdGEgPz8gbWV0YWRhdGEuZmxpZ2h0RGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZDogQ2FjaGVkUm91dGVLaW5kLlBBR0VTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbDogcmVuZGVyUmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZURhdGE6IHJlbmRlclJlc3VsdC5tZXRhZGF0YS5wYWdlRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHJlbmRlclJlc3VsdC5tZXRhZGF0YS5oZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiByZW5kZXJSZXN1bHQubWV0YWRhdGEuc3RhdHVzQ29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSkuZmluYWxseSgoKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3BhbikgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYW4uc2V0QXR0cmlidXRlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdodHRwLnN0YXR1c19jb2RlJzogcmVzLnN0YXR1c0NvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXh0LnJzYyc6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm9vdFNwYW5BdHRyaWJ1dGVzID0gdHJhY2VyLmdldFJvb3RTcGFuQXR0cmlidXRlcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIHdlcmUgdW5hYmxlIHRvIGdldCBhdHRyaWJ1dGVzLCBwcm9iYWJseSBPVEVMIGlzIG5vdCBlbmFibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyb290U3BhbkF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocm9vdFNwYW5BdHRyaWJ1dGVzLmdldCgnbmV4dC5zcGFuX3R5cGUnKSAhPT0gQmFzZVNlcnZlclNwYW4uaGFuZGxlUmVxdWVzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFVuZXhwZWN0ZWQgcm9vdCBzcGFuIHR5cGUgJyR7cm9vdFNwYW5BdHRyaWJ1dGVzLmdldCgnbmV4dC5zcGFuX3R5cGUnKX0nLiBQbGVhc2UgcmVwb3J0IHRoaXMgTmV4dC5qcyBpc3N1ZSBodHRwczovL2dpdGh1Yi5jb20vdmVyY2VsL25leHQuanNgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByb3V0ZSA9IHJvb3RTcGFuQXR0cmlidXRlcy5nZXQoJ25leHQucm91dGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocm91dGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IGAke21ldGhvZH0gJHtyb3V0ZX1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25leHQucm91dGUnOiByb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdodHRwLnJvdXRlJzogcm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV4dC5zcGFuX25hbWUnOiBuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFuLnVwZGF0ZU5hbWUobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bhbi51cGRhdGVOYW1lKGAke21ldGhvZH0gJHtyZXEudXJsfWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoaXMgaXMgYSBiYWNrZ3JvdW5kIHJldmFsaWRhdGUgd2UgbmVlZCB0byByZXBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSByZXF1ZXN0IGVycm9yIGhlcmUgYXMgaXQgd29uJ3QgYmUgYnViYmxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzQ2FjaGVFbnRyeSA9PSBudWxsID8gdm9pZCAwIDogcHJldmlvdXNDYWNoZUVudHJ5LmlzU3RhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCByb3V0ZU1vZHVsZS5vblJlcXVlc3RFcnJvcihyZXEsIGVyciwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXJLaW5kOiAnUGFnZXMgUm91dGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVQYXRoOiBzcmNQYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZVR5cGU6ICdyZW5kZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZhbGlkYXRlUmVhc29uOiBnZXRSZXZhbGlkYXRlUmVhc29uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmV2YWxpZGF0ZTogaGFzU3RhdGljUHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc09uRGVtYW5kUmV2YWxpZGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHJvdXRlclNlcnZlckNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAvLyBpZiB3ZSd2ZSBhbHJlYWR5IGdlbmVyYXRlZCB0aGlzIHBhZ2Ugd2Ugbm8gbG9uZ2VyXG4gICAgICAgICAgICAgICAgLy8gc2VydmUgdGhlIGZhbGxiYWNrXG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzQ2FjaGVFbnRyeSkge1xuICAgICAgICAgICAgICAgICAgICBpc0lzckZhbGxiYWNrID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpc0lzckZhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZhbGxiYWNrUmVzcG9uc2UgPSBhd2FpdCByb3V0ZU1vZHVsZS5nZXRSZXNwb25zZUNhY2hlKHJlcSkuZ2V0KHJvdXRlTW9kdWxlLmlzRGV2ID8gbnVsbCA6IGxvY2FsZSA/IGAvJHtsb2NhbGV9JHtzcmNQYWdlfWAgOiBzcmNQYWdlLCBhc3luYyAoeyBwcmV2aW91c0NhY2hlRW50cnk6IHByZXZpb3VzRmFsbGJhY2tDYWNoZUVudHJ5ID0gbnVsbCB9KT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyb3V0ZU1vZHVsZS5pc0Rldikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0b1Jlc3BvbnNlQ2FjaGVFbnRyeShwcmV2aW91c0ZhbGxiYWNrQ2FjaGVFbnRyeSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZG9SZW5kZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVLaW5kOiBSb3V0ZUtpbmQuUEFHRVMsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0ZhbGxiYWNrOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNSb3V0ZVBQUkVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNPbkRlbWFuZFJldmFsaWRhdGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50YWxDYWNoZTogYXdhaXQgcm91dGVNb2R1bGUuZ2V0SW5jcmVtZW50YWxDYWNoZShyZXEsIG5leHRDb25maWcsIHByZXJlbmRlck1hbmlmZXN0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRVbnRpbDogY3R4LndhaXRVbnRpbFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgY2FjaGUgY29udHJvbCBmcm9tIHRoZSByZXNwb25zZSB0byBwcmV2ZW50IGl0IGZyb20gYmVpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgaW4gdGhlIHN1cnJvdW5kaW5nIGNhY2hlLlxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZhbGxiYWNrUmVzcG9uc2UuY2FjaGVDb250cm9sO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2tSZXNwb25zZS5pc01pc3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbGxiYWNrUmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFnZXRSZXF1ZXN0TWV0YShyZXEsICdtaW5pbWFsTW9kZScpICYmIGlzT25EZW1hbmRSZXZhbGlkYXRlICYmIHJldmFsaWRhdGVPbmx5R2VuZXJhdGVkICYmICFwcmV2aW91c0NhY2hlRW50cnkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XG4gICAgICAgICAgICAgICAgICAgIC8vIG9uLWRlbWFuZCByZXZhbGlkYXRlIGFsd2F5cyBzZXRzIHRoaXMgaGVhZGVyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ3gtbmV4dGpzLWNhY2hlJywgJ1JFVkFMSURBVEVEJyk7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5lbmQoJ1RoaXMgcGFnZSBjb3VsZCBub3QgYmUgZm91bmQnKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpc0lzckZhbGxiYWNrICYmIChwcmV2aW91c0NhY2hlRW50cnkgPT0gbnVsbCA/IHZvaWQgMCA6IChfcHJldmlvdXNDYWNoZUVudHJ5X3ZhbHVlID0gcHJldmlvdXNDYWNoZUVudHJ5LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX3ByZXZpb3VzQ2FjaGVFbnRyeV92YWx1ZS5raW5kKSA9PT0gQ2FjaGVkUm91dGVLaW5kLlBBR0VTKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6IENhY2hlZFJvdXRlS2luZC5QQUdFUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sOiBuZXcgUmVuZGVyUmVzdWx0KEJ1ZmZlci5mcm9tKHByZXZpb3VzQ2FjaGVFbnRyeS52YWx1ZS5odG1sKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50VHlwZTogJ3RleHQvaHRtbDt1dGYtOCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNDb2RlOiBwcmV2aW91c0NhY2hlRW50cnkudmFsdWUuc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogcHJldmlvdXNDYWNoZUVudHJ5LnZhbHVlLmhlYWRlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VEYXRhOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHByZXZpb3VzQ2FjaGVFbnRyeS52YWx1ZS5zdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogcHJldmlvdXNDYWNoZUVudHJ5LnZhbHVlLmhlYWRlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZUNvbnRyb2w6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZhbGlkYXRlOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyZTogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBkb1JlbmRlcigpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJvdXRlTW9kdWxlLmhhbmRsZVJlc3BvbnNlKHtcbiAgICAgICAgICAgICAgICBjYWNoZUtleSxcbiAgICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgICAgbmV4dENvbmZpZyxcbiAgICAgICAgICAgICAgICByb3V0ZUtpbmQ6IFJvdXRlS2luZC5QQUdFUyxcbiAgICAgICAgICAgICAgICBpc09uRGVtYW5kUmV2YWxpZGF0ZSxcbiAgICAgICAgICAgICAgICByZXZhbGlkYXRlT25seUdlbmVyYXRlZCxcbiAgICAgICAgICAgICAgICB3YWl0VW50aWw6IGN0eC53YWl0VW50aWwsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VHZW5lcmF0b3I6IHJlc3BvbnNlR2VuZXJhdG9yLFxuICAgICAgICAgICAgICAgIHByZXJlbmRlck1hbmlmZXN0XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIGlmIHdlIGdvdCBhIGNhY2hlIGhpdCB0aGlzIHdhc24ndCBhbiBJU1IgZmFsbGJhY2tcbiAgICAgICAgICAgIC8vIGJ1dCBpdCB3YXNuJ3QgZ2VuZXJhdGVkIGR1cmluZyBidWlsZCBzbyBpc24ndCBpbiB0aGVcbiAgICAgICAgICAgIC8vIHByZXJlbmRlci1tYW5pZmVzdFxuICAgICAgICAgICAgaWYgKGlzSXNyRmFsbGJhY2sgJiYgIShyZXN1bHQgPT0gbnVsbCA/IHZvaWQgMCA6IHJlc3VsdC5pc01pc3MpKSB7XG4gICAgICAgICAgICAgICAgaXNJc3JGYWxsYmFjayA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gcmVzcG9uc2UgaXMgZmluaXNoZWQgaXMgbm8gY2FjaGUgZW50cnlcbiAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhhc1N0YXRpY1Byb3BzICYmICFnZXRSZXF1ZXN0TWV0YShyZXEsICdtaW5pbWFsTW9kZScpKSB7XG4gICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcigneC1uZXh0anMtY2FjaGUnLCBpc09uRGVtYW5kUmV2YWxpZGF0ZSA/ICdSRVZBTElEQVRFRCcgOiByZXN1bHQuaXNNaXNzID8gJ01JU1MnIDogcmVzdWx0LmlzU3RhbGUgPyAnU1RBTEUnIDogJ0hJVCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGNhY2hlQ29udHJvbDtcbiAgICAgICAgICAgIGlmICghaGFzU3RhdGljUHJvcHMgfHwgaXNJc3JGYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGlmICghcmVzLmdldEhlYWRlcignQ2FjaGUtQ29udHJvbCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlQ29udHJvbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldmFsaWRhdGU6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBpcmU6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM0MDRQYWdlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm90Rm91bmRSZXZhbGlkYXRlID0gZ2V0UmVxdWVzdE1ldGEocmVxLCAnbm90Rm91bmRSZXZhbGlkYXRlJyk7XG4gICAgICAgICAgICAgICAgY2FjaGVDb250cm9sID0ge1xuICAgICAgICAgICAgICAgICAgICByZXZhbGlkYXRlOiB0eXBlb2Ygbm90Rm91bmRSZXZhbGlkYXRlID09PSAndW5kZWZpbmVkJyA/IDAgOiBub3RGb3VuZFJldmFsaWRhdGUsXG4gICAgICAgICAgICAgICAgICAgIGV4cGlyZTogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM1MDBQYWdlKSB7XG4gICAgICAgICAgICAgICAgY2FjaGVDb250cm9sID0ge1xuICAgICAgICAgICAgICAgICAgICByZXZhbGlkYXRlOiAwLFxuICAgICAgICAgICAgICAgICAgICBleHBpcmU6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdC5jYWNoZUNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY2FjaGUgZW50cnkgaGFzIGEgY2FjaGUgY29udHJvbCB3aXRoIGEgcmV2YWxpZGF0ZSB2YWx1ZSB0aGF0J3NcbiAgICAgICAgICAgICAgICAvLyBhIG51bWJlciwgdXNlIGl0LlxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmVzdWx0LmNhY2hlQ29udHJvbC5yZXZhbGlkYXRlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX3Jlc3VsdF9jYWNoZUNvbnRyb2w7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuY2FjaGVDb250cm9sLnJldmFsaWRhdGUgPCAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKGBJbnZhbGlkIHJldmFsaWRhdGUgY29uZmlndXJhdGlvbiBwcm92aWRlZDogJHtyZXN1bHQuY2FjaGVDb250cm9sLnJldmFsaWRhdGV9IDwgMWApLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMjJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlQ29udHJvbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldmFsaWRhdGU6IHJlc3VsdC5jYWNoZUNvbnRyb2wucmV2YWxpZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyZTogKChfcmVzdWx0X2NhY2hlQ29udHJvbCA9IHJlc3VsdC5jYWNoZUNvbnRyb2wpID09IG51bGwgPyB2b2lkIDAgOiBfcmVzdWx0X2NhY2hlQ29udHJvbC5leHBpcmUpID8/IG5leHRDb25maWcuZXhwaXJlVGltZVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHJldmFsaWRhdGU6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIGNhY2hlQ29udHJvbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldmFsaWRhdGU6IENBQ0hFX09ORV9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwaXJlOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJZiBjYWNoZSBjb250cm9sIGlzIGFscmVhZHkgc2V0IG9uIHRoZSByZXNwb25zZSB3ZSBkb24ndFxuICAgICAgICAgICAgLy8gb3ZlcnJpZGUgaXQgdG8gYWxsb3cgdXNlcnMgdG8gY3VzdG9taXplIGl0IHZpYSBuZXh0LmNvbmZpZ1xuICAgICAgICAgICAgaWYgKGNhY2hlQ29udHJvbCAmJiAhcmVzLmdldEhlYWRlcignQ2FjaGUtQ29udHJvbCcpKSB7XG4gICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ2FjaGUtQ29udHJvbCcsIGdldENhY2hlQ29udHJvbEhlYWRlcihjYWNoZUNvbnRyb2wpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIG5vdEZvdW5kOiB0cnVlIGNhc2VcbiAgICAgICAgICAgIGlmICghcmVzdWx0LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9yZXN1bHRfY2FjaGVDb250cm9sMTtcbiAgICAgICAgICAgICAgICAvLyBhZGQgcmV2YWxpZGF0ZSBtZXRhZGF0YSBiZWZvcmUgcmVuZGVyaW5nIDQwNCBwYWdlXG4gICAgICAgICAgICAgICAgLy8gc28gdGhhdCB3ZSBjYW4gdXNlIHRoaXMgYXMgc291cmNlIG9mIHRydXRoIGZvciB0aGVcbiAgICAgICAgICAgICAgICAvLyBjYWNoZS1jb250cm9sIGhlYWRlciBpbnN0ZWFkIG9mIHdoYXQgdGhlIDQwNCBwYWdlIHJldHVybnNcbiAgICAgICAgICAgICAgICAvLyBmb3IgdGhlIHJldmFsaWRhdGUgdmFsdWVcbiAgICAgICAgICAgICAgICBhZGRSZXF1ZXN0TWV0YShyZXEsICdub3RGb3VuZFJldmFsaWRhdGUnLCAoX3Jlc3VsdF9jYWNoZUNvbnRyb2wxID0gcmVzdWx0LmNhY2hlQ29udHJvbCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9yZXN1bHRfY2FjaGVDb250cm9sMS5yZXZhbGlkYXRlKTtcbiAgICAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcbiAgICAgICAgICAgICAgICBpZiAoaXNOZXh0RGF0YVJlcXVlc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzLmVuZCgne1wibm90Rm91bmRcIjp0cnVlfScpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFRPRE86IHNob3VsZCByb3V0ZS1tb2R1bGUgaXRzZWxmIGhhbmRsZSByZW5kZXJpbmcgdGhlIDQwNFxuICAgICAgICAgICAgICAgIGlmIChyb3V0ZXJTZXJ2ZXJDb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiByb3V0ZXJTZXJ2ZXJDb250ZXh0LnJlbmRlcjQwNCkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCByb3V0ZXJTZXJ2ZXJDb250ZXh0LnJlbmRlcjQwNChyZXEsIHJlcywgcGFyc2VkVXJsLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzLmVuZCgnVGhpcyBwYWdlIGNvdWxkIG5vdCBiZSBmb3VuZCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlLmtpbmQgPT09IENhY2hlZFJvdXRlS2luZC5SRURJUkVDVCkge1xuICAgICAgICAgICAgICAgIGlmIChpc05leHREYXRhUmVxdWVzdCkge1xuICAgICAgICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdjb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xuICAgICAgICAgICAgICAgICAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KHJlc3VsdC52YWx1ZS5wcm9wcykpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlUmVkaXJlY3QgPSAocGFnZURhdGEpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWRpcmVjdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbjogcGFnZURhdGEucGFnZVByb3BzLl9fTl9SRURJUkVDVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNDb2RlOiBwYWdlRGF0YS5wYWdlUHJvcHMuX19OX1JFRElSRUNUX1NUQVRVUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlUGF0aDogcGFnZURhdGEucGFnZVByb3BzLl9fTl9SRURJUkVDVF9CQVNFX1BBVEhcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGF0dXNDb2RlID0gZ2V0UmVkaXJlY3RTdGF0dXMocmVkaXJlY3QpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBiYXNlUGF0aCB9ID0gbmV4dENvbmZpZztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlUGF0aCAmJiByZWRpcmVjdC5iYXNlUGF0aCAhPT0gZmFsc2UgJiYgcmVkaXJlY3QuZGVzdGluYXRpb24uc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3QuZGVzdGluYXRpb24gPSBgJHtiYXNlUGF0aH0ke3JlZGlyZWN0LmRlc3RpbmF0aW9ufWA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVkaXJlY3QuZGVzdGluYXRpb24uc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3QuZGVzdGluYXRpb24gPSBub3JtYWxpemVSZXBlYXRlZFNsYXNoZXMocmVkaXJlY3QuZGVzdGluYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignTG9jYXRpb24nLCByZWRpcmVjdC5kZXN0aW5hdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzQ29kZSA9PT0gUmVkaXJlY3RTdGF0dXNDb2RlLlBlcm1hbmVudFJlZGlyZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignUmVmcmVzaCcsIGAwO3VybD0ke3JlZGlyZWN0LmRlc3RpbmF0aW9ufWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmVuZChyZWRpcmVjdC5kZXN0aW5hdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGhhbmRsZVJlZGlyZWN0KHJlc3VsdC52YWx1ZS5wcm9wcyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXN1bHQudmFsdWUua2luZCAhPT0gQ2FjaGVkUm91dGVLaW5kLlBBR0VTKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcihgSW52YXJpYW50OiByZWNlaXZlZCBub24tcGFnZXMgY2FjaGUgZW50cnkgaW4gcGFnZXMgaGFuZGxlcmApLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTY5NVwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJbiBkZXYsIHdlIHNob3VsZCBub3QgY2FjaGUgcGFnZXMgZm9yIGFueSByZWFzb24uXG4gICAgICAgICAgICBpZiAocm91dGVNb2R1bGUuaXNEZXYpIHtcbiAgICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDYWNoZS1Db250cm9sJywgJ25vLXN0b3JlLCBtdXN0LXJldmFsaWRhdGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIERyYWZ0IG1vZGUgc2hvdWxkIG5ldmVyIGJlIGNhY2hlZFxuICAgICAgICAgICAgaWYgKGlzRHJhZnRNb2RlKSB7XG4gICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ2FjaGUtQ29udHJvbCcsICdwcml2YXRlLCBuby1jYWNoZSwgbm8tc3RvcmUsIG1heC1hZ2U9MCwgbXVzdC1yZXZhbGlkYXRlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB3aGVuIGludm9raW5nIF9lcnJvciBiZWZvcmUgcGFnZXMvNTAwIHdlIGRvbid0IGFjdHVhbGx5XG4gICAgICAgICAgICAvLyBzZW5kIHRoZSBfZXJyb3IgcmVzcG9uc2VcbiAgICAgICAgICAgIGlmIChnZXRSZXF1ZXN0TWV0YShyZXEsICdjdXN0b21FcnJvclJlbmRlcicpIHx8IGlzRXJyb3JQYWdlICYmIGdldFJlcXVlc3RNZXRhKHJlcSwgJ21pbmltYWxNb2RlJykgJiYgcmVzLnN0YXR1c0NvZGUgPT09IDUwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgc2VuZFJlbmRlclJlc3VsdCh7XG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgIHJlcyxcbiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgcmVuZGVyaW5nIHRoZSBlcnJvciBwYWdlIGl0J3Mgbm90IGEgZGF0YSByZXF1ZXN0XG4gICAgICAgICAgICAgICAgLy8gYW55bW9yZVxuICAgICAgICAgICAgICAgIHJlc3VsdDogaXNOZXh0RGF0YVJlcXVlc3QgJiYgIWlzRXJyb3JQYWdlICYmICFpczUwMFBhZ2UgPyBuZXcgUmVuZGVyUmVzdWx0KEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KHJlc3VsdC52YWx1ZS5wYWdlRGF0YSkpLCB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhOiByZXN1bHQudmFsdWUuaHRtbC5tZXRhZGF0YVxuICAgICAgICAgICAgICAgIH0pIDogcmVzdWx0LnZhbHVlLmh0bWwsXG4gICAgICAgICAgICAgICAgZ2VuZXJhdGVFdGFnczogbmV4dENvbmZpZy5nZW5lcmF0ZUV0YWdzLFxuICAgICAgICAgICAgICAgIHBvd2VyZWRCeUhlYWRlcjogbmV4dENvbmZpZy5wb3dlcmVkQnlIZWFkZXIsXG4gICAgICAgICAgICAgICAgY2FjaGVDb250cm9sOiByb3V0ZU1vZHVsZS5pc0RldiA/IHVuZGVmaW5lZCA6IGNhY2hlQ29udHJvbCxcbiAgICAgICAgICAgICAgICB0eXBlOiBpc05leHREYXRhUmVxdWVzdCA/ICdqc29uJyA6ICdodG1sJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIC8vIFRPRE86IGFjdGl2ZVNwYW4gY29kZSBwYXRoIGlzIGZvciB3aGVuIHdyYXBwZWQgYnlcbiAgICAgICAgLy8gbmV4dC1zZXJ2ZXIgY2FuIGJlIHJlbW92ZWQgd2hlbiB0aGlzIGlzIG5vIGxvbmdlciB1c2VkXG4gICAgICAgIGlmIChhY3RpdmVTcGFuKSB7XG4gICAgICAgICAgICBhd2FpdCBoYW5kbGVSZXNwb25zZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgdHJhY2VyLndpdGhQcm9wYWdhdGVkQ29udGV4dChyZXEuaGVhZGVycywgKCk9PnRyYWNlci50cmFjZShCYXNlU2VydmVyU3Bhbi5oYW5kbGVSZXF1ZXN0LCB7XG4gICAgICAgICAgICAgICAgICAgIHNwYW5OYW1lOiBgJHttZXRob2R9ICR7cmVxLnVybH1gLFxuICAgICAgICAgICAgICAgICAgICBraW5kOiBTcGFuS2luZC5TRVJWRVIsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdodHRwLm1ldGhvZCc6IG1ldGhvZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICdodHRwLnRhcmdldCc6IHJlcS51cmxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIGhhbmRsZVJlc3BvbnNlKSk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgYXdhaXQgcm91dGVNb2R1bGUub25SZXF1ZXN0RXJyb3IocmVxLCBlcnIsIHtcbiAgICAgICAgICAgIHJvdXRlcktpbmQ6ICdQYWdlcyBSb3V0ZXInLFxuICAgICAgICAgICAgcm91dGVQYXRoOiBzcmNQYWdlLFxuICAgICAgICAgICAgcm91dGVUeXBlOiAncmVuZGVyJyxcbiAgICAgICAgICAgIHJldmFsaWRhdGVSZWFzb246IGdldFJldmFsaWRhdGVSZWFzb24oe1xuICAgICAgICAgICAgICAgIGlzUmV2YWxpZGF0ZTogaGFzU3RhdGljUHJvcHMsXG4gICAgICAgICAgICAgICAgaXNPbkRlbWFuZFJldmFsaWRhdGVcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sIHJvdXRlclNlcnZlckNvbnRleHQpO1xuICAgICAgICAvLyByZXRocm93IHNvIHRoYXQgd2UgY2FuIGhhbmRsZSBzZXJ2aW5nIGVycm9yIHBhZ2VcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGFnZXMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./node_modules/next/dist/build/webpack/loaders/next-route-loader/index.js?kind=PAGES&page=%2Fcards&preferredRegion=&absolutePagePath=.%2Fpages%2Fcards.js&absoluteAppPath=private-next-pages%2F_app&absoluteDocumentPath=private-next-pages%2F_document&middlewareConfigBase64=e30%3D!\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(pages-dir-node)/./pages/_app.js":
|
|
/*!***********************!*\
|
|
!*** ./pages/_app.js ***!
|
|
\***********************/
|
|
/***/ ((__unused_webpack___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 */ App)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var _styles_globals_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../styles/globals.css */ \"(pages-dir-node)/./styles/globals.css\");\n/* harmony import */ var _lib_auth_context_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../lib/auth-context.js */ \"(pages-dir-node)/./lib/auth-context.js\");\n/* harmony import */ var _lib_theme_context_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../lib/theme-context.js */ \"(pages-dir-node)/./lib/theme-context.js\");\n\n\n\n\nfunction App({ Component, pageProps }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_lib_theme_context_js__WEBPACK_IMPORTED_MODULE_3__.ThemeProvider, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_lib_auth_context_js__WEBPACK_IMPORTED_MODULE_2__.AuthProvider, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Component, {\n ...pageProps\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/_app.js\",\n lineNumber: 9,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/_app.js\",\n lineNumber: 8,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/_app.js\",\n lineNumber: 7,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3BhZ2VzL19hcHAuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQStCO0FBQ3VCO0FBQ0U7QUFFekMsU0FBU0UsSUFBSSxFQUFFQyxTQUFTLEVBQUVDLFNBQVMsRUFBRTtJQUNsRCxxQkFDRSw4REFBQ0gsZ0VBQWFBO2tCQUNaLDRFQUFDRCw4REFBWUE7c0JBQ1gsNEVBQUNHO2dCQUFXLEdBQUdDLFNBQVM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJaEMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9yc3RpbGx3L0RvY3VtZW50cy90Y2ctdmF1bHQvcGFnZXMvX2FwcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4uL3N0eWxlcy9nbG9iYWxzLmNzcyc7XG5pbXBvcnQgeyBBdXRoUHJvdmlkZXIgfSBmcm9tICcuLi9saWIvYXV0aC1jb250ZXh0LmpzJztcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIgfSBmcm9tICcuLi9saWIvdGhlbWUtY29udGV4dC5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFwcCh7IENvbXBvbmVudCwgcGFnZVByb3BzIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8VGhlbWVQcm92aWRlcj5cbiAgICAgIDxBdXRoUHJvdmlkZXI+XG4gICAgICAgIDxDb21wb25lbnQgey4uLnBhZ2VQcm9wc30gLz5cbiAgICAgIDwvQXV0aFByb3ZpZGVyPlxuICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgKTtcbn0gIl0sIm5hbWVzIjpbIkF1dGhQcm92aWRlciIsIlRoZW1lUHJvdmlkZXIiLCJBcHAiLCJDb21wb25lbnQiLCJwYWdlUHJvcHMiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./pages/_app.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(pages-dir-node)/./pages/cards.js":
|
|
/*!************************!*\
|
|
!*** ./pages/cards.js ***!
|
|
\************************/
|
|
/***/ ((__unused_webpack___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 */ Cards)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/router */ \"(pages-dir-node)/./node_modules/next/router.js\");\n/* harmony import */ var _components_Layout__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/Layout */ \"(pages-dir-node)/./components/Layout.js\");\n\n\n\n\nfunction Cards() {\n const router = (0,next_router__WEBPACK_IMPORTED_MODULE_2__.useRouter)();\n const user = {\n email: 'me@randallstillwell.com',\n role: 'user'\n };\n const [cards, setCards] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [loadingMore, setLoadingMore] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [searchQuery, setSearchQuery] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const [selectedTCG, setSelectedTCG] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('all');\n const [selectedRarity, setSelectedRarity] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('all');\n const [selectedSet, setSelectedSet] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('all');\n const [selectedValueRange, setSelectedValueRange] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('all');\n const [viewMode, setViewMode] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('grid'); // grid or list\n const [pagination, setPagination] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n page: 1,\n limit: 50,\n total: 0,\n pages: 0\n });\n const [filters, setFilters] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n games: [],\n rarities: [],\n sets: []\n });\n const [hasMore, setHasMore] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const loadingMoreRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(false);\n const hasMoreRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(true);\n // Fetch cards from database\n const fetchCards = async (isLoadMore = false)=>{\n try {\n if (isLoadMore) {\n setLoadingMore(true);\n loadingMoreRef.current = true;\n } else {\n setLoading(true);\n }\n const params = new URLSearchParams({\n query: searchQuery,\n game: selectedTCG,\n rarity: selectedRarity,\n set: selectedSet,\n minPrice: selectedValueRange === 'under-50' ? '0' : selectedValueRange === '50-100' ? '50' : selectedValueRange === '100-500' ? '100' : selectedValueRange === '500-1000' ? '500' : selectedValueRange === 'over-1000' ? '1000' : '',\n maxPrice: selectedValueRange === '50-100' ? '100' : selectedValueRange === '100-500' ? '500' : selectedValueRange === '500-1000' ? '1000' : '',\n page: pagination.page.toString(),\n limit: pagination.limit.toString()\n });\n const response = await fetch(`/api/cards/search?${params}`);\n const data = await response.json();\n if (data.success) {\n if (isLoadMore) {\n setCards((prevCards)=>[\n ...prevCards,\n ...data.cards\n ]);\n } else {\n setCards(data.cards);\n }\n setPagination(data.pagination);\n setFilters(data.filters);\n const hasMoreCards = data.pagination.page < data.pagination.pages;\n setHasMore(hasMoreCards);\n hasMoreRef.current = hasMoreCards;\n } else {\n console.error('Failed to fetch cards:', data.error);\n if (!isLoadMore) {\n setCards([]);\n }\n }\n } catch (error) {\n console.error('Error fetching cards:', error);\n if (!isLoadMore) {\n setCards([]);\n }\n } finally{\n setLoading(false);\n setLoadingMore(false);\n loadingMoreRef.current = false;\n }\n };\n // Initial load\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Cards.useEffect\": ()=>{\n setPagination({\n \"Cards.useEffect\": (prev)=>({\n ...prev,\n page: 1\n })\n }[\"Cards.useEffect\"]);\n setCards([]);\n setHasMore(true);\n hasMoreRef.current = true;\n fetchCards(false);\n }\n }[\"Cards.useEffect\"], [\n selectedTCG,\n selectedRarity,\n selectedSet,\n selectedValueRange\n ]);\n // Handle search with debounce\n const [searchTimeout, setSearchTimeout] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const handleSearchChange = (value)=>{\n setSearchQuery(value);\n // Clear existing timeout\n if (searchTimeout) {\n clearTimeout(searchTimeout);\n }\n // Set new timeout for search\n const newTimeout = setTimeout(()=>{\n setPagination((prev)=>({\n ...prev,\n page: 1\n }));\n setCards([]);\n setHasMore(true);\n hasMoreRef.current = true;\n fetchCards(false);\n }, 500); // 500ms delay\n setSearchTimeout(newTimeout);\n };\n // Cleanup timeout on unmount\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Cards.useEffect\": ()=>{\n return ({\n \"Cards.useEffect\": ()=>{\n if (searchTimeout) {\n clearTimeout(searchTimeout);\n }\n }\n })[\"Cards.useEffect\"];\n }\n }[\"Cards.useEffect\"], [\n searchTimeout\n ]);\n // Load more cards\n const loadMoreCards = async ()=>{\n if (!loadingMoreRef.current && hasMoreRef.current) {\n const nextPage = pagination.page + 1;\n setPagination((prev)=>({\n ...prev,\n page: nextPage\n }));\n // Use the next page number directly in the fetch\n try {\n setLoadingMore(true);\n loadingMoreRef.current = true;\n const params = new URLSearchParams({\n query: searchQuery,\n game: selectedTCG,\n rarity: selectedRarity,\n set: selectedSet,\n minPrice: selectedValueRange === 'under-50' ? '0' : selectedValueRange === '50-100' ? '50' : selectedValueRange === '100-500' ? '100' : selectedValueRange === '500-1000' ? '500' : selectedValueRange === 'over-1000' ? '1000' : '',\n maxPrice: selectedValueRange === '50-100' ? '100' : selectedValueRange === '100-500' ? '500' : selectedValueRange === '500-1000' ? '1000' : '',\n page: nextPage.toString(),\n limit: pagination.limit.toString()\n });\n const response = await fetch(`/api/cards/search?${params}`);\n const data = await response.json();\n if (data.success) {\n setCards((prevCards)=>[\n ...prevCards,\n ...data.cards\n ]);\n setPagination(data.pagination);\n setFilters(data.filters);\n const hasMoreCards = data.pagination.page < data.pagination.pages;\n setHasMore(hasMoreCards);\n hasMoreRef.current = hasMoreCards;\n } else {\n console.error('Failed to fetch more cards:', data.error);\n }\n } catch (error) {\n console.error('Error fetching more cards:', error);\n } finally{\n setLoadingMore(false);\n loadingMoreRef.current = false;\n }\n }\n };\n // Update refs when state changes\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Cards.useEffect\": ()=>{\n hasMoreRef.current = hasMore;\n loadingMoreRef.current = loadingMore;\n }\n }[\"Cards.useEffect\"], [\n hasMore,\n loadingMore\n ]);\n // Intersection Observer for infinite scroll\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Cards.useEffect\": ()=>{\n const observer = new IntersectionObserver({\n \"Cards.useEffect\": (entries)=>{\n entries.forEach({\n \"Cards.useEffect\": (entry)=>{\n if (entry.isIntersecting && hasMoreRef.current && !loadingMoreRef.current) {\n loadMoreCards();\n }\n }\n }[\"Cards.useEffect\"]);\n }\n }[\"Cards.useEffect\"], {\n rootMargin: '50px',\n threshold: 0.1\n });\n const setupObserver = {\n \"Cards.useEffect.setupObserver\": ()=>{\n const sentinel = document.getElementById('infinite-scroll-sentinel');\n if (sentinel) {\n observer.observe(sentinel);\n } else {\n setTimeout(setupObserver, 100);\n }\n }\n }[\"Cards.useEffect.setupObserver\"];\n setupObserver();\n return ({\n \"Cards.useEffect\": ()=>{\n const sentinel = document.getElementById('infinite-scroll-sentinel');\n if (sentinel) {\n observer.unobserve(sentinel);\n }\n }\n })[\"Cards.useEffect\"];\n }\n }[\"Cards.useEffect\"], []);\n const getRarityColor = (rarity)=>{\n // Map database rarity values to colors\n const rarityColorMap = {\n 'common': '#6B7280',\n 'uncommon': '#10B981',\n 'rare': '#F59E0B',\n 'mythic': '#FFD700',\n 'holographic': '#FF6B6B',\n 'enchanted': '#A855F7',\n 'secret rare': '#FF6B6B',\n 'ultra rare': '#A855F7'\n };\n return rarityColorMap[rarity?.toLowerCase()] || '#6B7280';\n };\n const tcgOptions = [\n {\n value: 'MTG',\n label: 'Magic: The Gathering',\n color: 'purple',\n icon: '🔮'\n },\n {\n value: 'Pokemon',\n label: 'Pokemon',\n color: 'blue',\n icon: '⚡'\n },\n {\n value: 'Lorcana',\n label: 'Disney Lorcana',\n color: 'pink',\n icon: '✨'\n }\n ];\n const rarityOptions = [\n {\n value: 'all',\n label: 'All Rarities'\n },\n {\n value: 'common',\n label: 'Common'\n },\n {\n value: 'uncommon',\n label: 'Uncommon'\n },\n {\n value: 'rare',\n label: 'Rare'\n },\n {\n value: 'mythic',\n label: 'Mythic'\n },\n {\n value: 'enchanted',\n label: 'Enchanted'\n },\n ...filters.rarities.filter((rarity)=>![\n 'all',\n 'common',\n 'uncommon',\n 'rare',\n 'mythic',\n 'enchanted'\n ].includes(rarity)).map((rarity)=>({\n value: rarity,\n label: rarity,\n color: getRarityColor(rarity)\n }))\n ];\n const setOptions = [\n {\n value: 'all',\n label: 'All Sets'\n },\n ...filters.sets.map((set)=>({\n value: set,\n label: set\n }))\n ];\n const valueRangeOptions = [\n {\n value: 'all',\n label: 'All Values'\n },\n {\n value: 'under-50',\n label: 'Under $50'\n },\n {\n value: '50-100',\n label: '$50 - $100'\n },\n {\n value: '100-500',\n label: '$100 - $500'\n },\n {\n value: '500-1000',\n label: '$500 - $1,000'\n },\n {\n value: 'over-1000',\n label: 'Over $1,000'\n }\n ];\n const formatCurrency = (amount)=>{\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD'\n }).format(amount);\n };\n const getRarityLabel = (rarity)=>{\n const rarityOption = rarityOptions.find((option)=>option.value === rarity);\n return rarityOption ? rarityOption.label : rarity;\n };\n if (loading && cards.length === 0) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Layout__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n user: user,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-center min-h-screen\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"animate-spin rounded-full h-32 w-32 border-b-2\",\n style: {\n borderColor: 'var(--text-accent)'\n }\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 307,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 306,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 305,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Layout__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n user: user,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-6\",\n style: {\n backgroundColor: 'var(--bg-secondary)',\n borderBottom: '1px solid var(--border)'\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between\",\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)(\"h1\", {\n className: \"text-3xl font-bold mb-2\",\n style: {\n color: 'var(--text-primary)'\n },\n children: \"Cards\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 319,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-lg\",\n style: {\n color: 'var(--text-secondary)'\n },\n children: \"Browse and manage your card collection\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 322,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 318,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setViewMode('grid'),\n className: `p-2 rounded-xl transition-all duration-200 ${viewMode === 'grid' ? 'shadow-lg' : 'hover:shadow-md'}`,\n style: {\n backgroundColor: viewMode === 'grid' ? 'var(--bg-tertiary)' : 'transparent',\n color: viewMode === 'grid' ? 'var(--text-primary)' : 'var(--text-secondary)'\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M4 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2V6zM14 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V6zM4 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2v-2zM14 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2v-2z\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 340,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 339,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 327,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setViewMode('list'),\n className: `p-2 rounded-xl transition-all duration-200 ${viewMode === 'list' ? 'shadow-lg' : 'hover:shadow-md'}`,\n style: {\n backgroundColor: viewMode === 'list' ? 'var(--bg-tertiary)' : 'transparent',\n color: viewMode === 'list' ? 'var(--text-primary)' : 'var(--text-secondary)'\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M4 6h16M4 10h16M4 14h16M4 18h16\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 356,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 355,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 343,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 326,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 317,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 316,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-6\",\n style: {\n backgroundColor: 'var(--bg-secondary)'\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold mb-3\",\n style: {\n color: 'var(--text-primary)'\n },\n children: \"Quick Filters\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 366,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-wrap gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSelectedTCG('all'),\n className: `px-4 py-2 rounded-xl font-medium transition-all duration-200 ${selectedTCG === 'all' ? 'shadow-lg' : 'hover:shadow-md'}`,\n style: {\n backgroundColor: selectedTCG === 'all' ? 'var(--bg-tertiary)' : 'transparent',\n color: selectedTCG === 'all' ? 'var(--text-primary)' : 'var(--text-secondary)',\n border: '1px solid var(--border)'\n },\n children: \"All Games\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 370,\n columnNumber: 13\n }, this),\n tcgOptions.map((option)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSelectedTCG(option.value),\n className: `px-4 py-2 rounded-xl font-medium transition-all duration-200 flex items-center gap-2 ${selectedTCG === option.value ? 'shadow-lg' : 'hover:shadow-md'}`,\n style: {\n backgroundColor: selectedTCG === option.value ? 'var(--bg-tertiary)' : 'transparent',\n color: selectedTCG === option.value ? 'var(--text-primary)' : 'var(--text-secondary)',\n border: '1px solid var(--border)'\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: option.icon\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 400,\n columnNumber: 17\n }, this),\n option.label\n ]\n }, option.value, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 386,\n columnNumber: 15\n }, this))\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 369,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 365,\n columnNumber: 9\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-4 gap-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-sm font-medium mb-2\",\n style: {\n color: 'var(--text-primary)'\n },\n children: \"Search\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 410,\n columnNumber: 13\n }, this),\n /*#__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)(\"input\", {\n type: \"text\",\n placeholder: \"Search cards...\",\n className: \"search-bar w-full pr-12\",\n value: searchQuery,\n onChange: (e)=>handleSearchChange(e.target.value),\n onKeyPress: (e)=>{\n if (e.key === 'Enter') {\n setPagination((prev)=>({\n ...prev,\n page: 1\n }));\n setCards([]);\n setHasMore(true);\n hasMoreRef.current = true;\n fetchCards(false);\n }\n }\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 414,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n setPagination((prev)=>({\n ...prev,\n page: 1\n }));\n setCards([]);\n setHasMore(true);\n hasMoreRef.current = true;\n fetchCards(false);\n },\n className: \"absolute right-2 top-1/2 transform -translate-y-1/2 p-2 rounded-lg hover:bg-opacity-20 transition-all duration-200\",\n style: {\n backgroundColor: 'var(--bg-tertiary)'\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-4 h-4\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 442,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 441,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 430,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 413,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 409,\n columnNumber: 11\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-sm font-medium mb-2\",\n style: {\n color: 'var(--text-primary)'\n },\n children: \"Rarity\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 448,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"select\", {\n value: selectedRarity,\n onChange: (e)=>setSelectedRarity(e.target.value),\n className: \"input-field w-full\",\n children: rarityOptions.map((option)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: option.value,\n children: option.label\n }, option.value, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 457,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 451,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 447,\n columnNumber: 11\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-sm font-medium mb-2\",\n style: {\n color: 'var(--text-primary)'\n },\n children: \"Set\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 464,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"select\", {\n value: selectedSet,\n onChange: (e)=>setSelectedSet(e.target.value),\n className: \"input-field w-full\",\n children: setOptions.map((option)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: option.value,\n children: option.label\n }, option.value, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 473,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 467,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 463,\n columnNumber: 11\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-sm font-medium mb-2\",\n style: {\n color: 'var(--text-primary)'\n },\n children: \"Value Range\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 480,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"select\", {\n value: selectedValueRange,\n onChange: (e)=>setSelectedValueRange(e.target.value),\n className: \"input-field w-full\",\n children: valueRangeOptions.map((option)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: option.value,\n children: option.label\n }, option.value, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 489,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 483,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 479,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 408,\n columnNumber: 9\n }, this),\n (selectedTCG !== 'all' || selectedRarity !== 'all' || selectedSet !== 'all' || selectedValueRange !== 'all') && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-wrap gap-2\",\n children: [\n selectedTCG !== 'all' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"px-3 py-1 rounded-full text-sm font-medium\",\n style: {\n backgroundColor: 'var(--bg-tertiary)',\n color: 'var(--text-primary)',\n border: '1px solid var(--border)'\n },\n children: [\n tcgOptions.find((opt)=>opt.value === selectedTCG)?.label,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSelectedTCG('all'),\n className: \"ml-2 hover:opacity-70\",\n children: \"\\xd7\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 508,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 502,\n columnNumber: 17\n }, this),\n selectedRarity !== 'all' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"px-3 py-1 rounded-full text-sm font-medium\",\n style: {\n backgroundColor: 'var(--bg-tertiary)',\n color: 'var(--text-primary)',\n border: '1px solid var(--border)'\n },\n children: [\n rarityOptions.find((opt)=>opt.value === selectedRarity)?.label,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSelectedRarity('all'),\n className: \"ml-2 hover:opacity-70\",\n children: \"\\xd7\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 523,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 517,\n columnNumber: 17\n }, this),\n selectedSet !== 'all' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"px-3 py-1 rounded-full text-sm font-medium\",\n style: {\n backgroundColor: 'var(--bg-tertiary)',\n color: 'var(--text-primary)',\n border: '1px solid var(--border)'\n },\n children: [\n setOptions.find((opt)=>opt.value === selectedSet)?.label,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSelectedSet('all'),\n className: \"ml-2 hover:opacity-70\",\n children: \"\\xd7\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 538,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 532,\n columnNumber: 17\n }, this),\n selectedValueRange !== 'all' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"px-3 py-1 rounded-full text-sm font-medium\",\n style: {\n backgroundColor: 'var(--bg-tertiary)',\n color: 'var(--text-primary)',\n border: '1px solid var(--border)'\n },\n children: [\n valueRangeOptions.find((opt)=>opt.value === selectedValueRange)?.label,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSelectedValueRange('all'),\n className: \"ml-2 hover:opacity-70\",\n children: \"\\xd7\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 553,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 547,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n setSelectedTCG('all');\n setSelectedRarity('all');\n setSelectedSet('all');\n setSelectedValueRange('all');\n },\n className: \"px-3 py-1 rounded-full text-sm font-medium hover:opacity-70\",\n style: {\n color: 'var(--text-accent)',\n border: '1px solid var(--border)'\n },\n children: \"Clear All\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 561,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 500,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 499,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 364,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-6 pb-64\",\n children: cards.length === 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center py-12\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-6xl mb-4\",\n children: \"\\uD83C\\uDCCF\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 583,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-xl font-semibold mb-2\",\n style: {\n color: 'var(--text-primary)'\n },\n children: \"No cards found\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 584,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mb-6\",\n style: {\n color: 'var(--text-secondary)'\n },\n children: \"Try adjusting your search or filters\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 587,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 582,\n columnNumber: 11\n }, this) : /*#__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)(\"div\", {\n className: viewMode === 'grid' ? 'grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6 2xl:grid-cols-8 gap-6 p-6' : 'space-y-4',\n children: cards.map((card)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n onClick: ()=>router.push(`/card/${card.id}`),\n className: \"flex justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Card3D, {\n card: card,\n viewMode: viewMode,\n getRarityLabel: getRarityLabel,\n getRarityColor: getRarityColor\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 596,\n columnNumber: 19\n }, this)\n }, card.id, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 595,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 593,\n columnNumber: 13\n }, this),\n loadingMore && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center py-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"animate-spin rounded-full h-8 w-8 border-b-2\",\n style: {\n borderColor: 'var(--text-accent)'\n }\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 610,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n style: {\n color: 'var(--text-secondary)'\n },\n children: \"Loading more cards...\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 611,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 609,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 608,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n id: \"infinite-scroll-sentinel\",\n className: \"h-4 w-full\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 617,\n columnNumber: 13\n }, this),\n hasMore && !loadingMore && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center py-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: loadMoreCards,\n className: \"px-6 py-3 bg-gradient-to-r from-blue-500 to-purple-600 text-white rounded-lg hover:from-blue-600 hover:to-purple-700 transition-all duration-200 shadow-lg hover:shadow-xl\",\n children: \"Load More Cards\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 622,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 621,\n columnNumber: 15\n }, this),\n !hasMore && cards.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center py-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n style: {\n color: 'var(--text-secondary)'\n },\n children: \"No more cards to load\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 634,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 633,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 580,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 314,\n columnNumber: 5\n }, this);\n}\n// 3D Card Component\nfunction Card3D({ card, viewMode, getRarityLabel, getRarityColor }) {\n const [isHovered, setIsHovered] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [cardPosition, setCardPosition] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n });\n const [isFavorited, setIsFavorited] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const handleMouseMove = (e)=>{\n const rect = e.currentTarget.getBoundingClientRect();\n setCardPosition({\n x: rect.left,\n y: rect.top,\n width: rect.width,\n height: rect.height\n });\n };\n const handleMouseLeave = ()=>{\n setIsHovered(false);\n };\n const handleMouseEnter = ()=>{\n setIsHovered(true);\n };\n const getTCGColor = (game)=>{\n const colors = {\n 'MTG': '#8B5CF6',\n 'Pokemon': '#3B82F6',\n 'Lorcana': '#EC4899' // pink\n };\n return colors[game] || '#6B7280';\n };\n const getSetColor = (setName)=>{\n // Generate a consistent color based on set name\n const hash = setName.split('').reduce((a, b)=>{\n a = (a << 5) - a + b.charCodeAt(0);\n return a & a;\n }, 0);\n const hue = Math.abs(hash) % 360;\n return `hsl(${hue}, 70%, 60%)`;\n };\n const formatCurrency = (amount)=>{\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD'\n }).format(amount);\n };\n const getRarityGradient = (rarity)=>{\n const gradients = {\n common: 'from-gray-400 to-gray-500',\n uncommon: 'from-green-400 to-emerald-500',\n rare: 'from-yellow-400 to-orange-500',\n mythic: 'from-yellow-400 to-orange-500',\n holographic: 'from-red-400 to-pink-500',\n enchanted: 'from-purple-400 to-indigo-500',\n ultra: 'from-blue-400 to-cyan-500'\n };\n return gradients[rarity] || 'from-gray-400 to-gray-500';\n };\n const getRarityGlow = (rarity)=>{\n const glows = {\n common: '0 0 15px rgba(156, 163, 175, 0.4)',\n uncommon: '0 0 15px rgba(34, 197, 94, 0.4)',\n rare: '0 0 20px rgba(251, 191, 36, 0.5)',\n mythic: '0 0 20px rgba(255, 215, 0, 0.4), 0 0 40px rgba(255, 215, 0, 0.2), 0 0 60px rgba(255, 215, 0, 0.1)',\n holographic: '0 0 25px rgba(239, 68, 68, 0.6)',\n enchanted: '0 0 20px rgba(168, 85, 247, 0.4), 0 0 40px rgba(168, 85, 247, 0.2), 0 0 60px rgba(168, 85, 247, 0.1)',\n ultra: '0 0 25px rgba(59, 130, 246, 0.6)'\n };\n return glows[rarity] || '0 0 15px rgba(156, 163, 175, 0.4)';\n };\n if (viewMode === 'list') {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card hover:shadow-xl transition-all duration-300 cursor-pointer\",\n style: {\n transition: 'all 0.3s ease'\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-16 h-24 rounded-lg overflow-hidden\",\n style: {\n background: `linear-gradient(135deg, ${getRarityGradient(card.rarity).replace('from-', '').replace('to-', '')})`,\n boxShadow: `0 4px 8px rgba(0, 0, 0, 0.3)`\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex items-center justify-center text-white font-bold text-xs\",\n children: card.game\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 735,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 731,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold mb-1\",\n style: {\n color: 'var(--text-primary)'\n },\n children: card.name\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 740,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm mb-2\",\n style: {\n color: 'var(--text-secondary)'\n },\n children: [\n card.set_name,\n \" • \",\n getRarityLabel(card.rarity)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 743,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs\",\n style: {\n color: 'var(--text-secondary)'\n },\n children: card.oracle_text || card.card_type\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 746,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 739,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-right\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-lg font-bold gradient-text-purple\",\n children: formatCurrency(card.current_price || 0)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 751,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"px-2 py-1 text-xs rounded-full text-white font-medium\",\n style: {\n backgroundColor: getRarityColor(card.rarity)\n },\n children: getRarityLabel(card.rarity)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 754,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 750,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 730,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 724,\n columnNumber: 7\n }, this);\n }\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: \"relative cursor-pointer transition-transform duration-300 hover:scale-105\",\n style: {\n width: '100%',\n maxWidth: '200px',\n aspectRatio: '5/7',\n boxShadow: getRarityGlow(card.rarity),\n borderRadius: '12px',\n border: `2px solid ${getRarityColor(card.rarity)}20`,\n overflow: 'hidden'\n },\n onMouseMove: handleMouseMove,\n onMouseLeave: handleMouseLeave,\n onMouseEnter: handleMouseEnter,\n children: [\n card.rarity !== 'common' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 pointer-events-none overflow-hidden\",\n children: (()=>{\n const rarityConfig = {\n 'mythic': {\n particleCount: 16,\n sparkleCount: 10,\n particleColor: '#FFD700',\n sparkleColor: '#FFA500',\n glowColor: '#FFD700'\n },\n 'enchanted': {\n particleCount: 14,\n sparkleCount: 8,\n particleColor: '#A855F7',\n sparkleColor: '#EC4899',\n glowColor: '#A855F7'\n },\n 'rare': {\n particleCount: 10,\n sparkleCount: 6,\n particleColor: '#3B82F6',\n sparkleColor: '#60A5FA',\n glowColor: '#3B82F6'\n },\n 'uncommon': {\n particleCount: 6,\n sparkleCount: 4,\n particleColor: '#10B981',\n sparkleColor: '#34D399',\n glowColor: '#10B981'\n }\n };\n const config = rarityConfig[card.rarity];\n if (!config) return null;\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)(\"div\", {\n className: \"absolute inset-0\",\n children: [\n ...Array(config.particleCount)\n ].map((_, i)=>{\n // Position particles around the card edges\n let left, top;\n const edgeIndex = i % 4; // 4 edges\n const positionOnEdge = Math.floor(i / 4);\n if (edgeIndex === 0) {\n // Top edge\n left = `${10 + positionOnEdge * 20}%`;\n top = '2%';\n } else if (edgeIndex === 1) {\n // Right edge\n left = '98%';\n top = `${10 + positionOnEdge * 20}%`;\n } else if (edgeIndex === 2) {\n // Bottom edge\n left = `${10 + positionOnEdge * 20}%`;\n top = '98%';\n } else {\n // Left edge\n left = '2%';\n top = `${10 + positionOnEdge * 20}%`;\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute w-1 h-1 rounded-full\",\n style: {\n left,\n top,\n backgroundColor: config.particleColor,\n animation: `edgeFloat ${4 + i * 0.3}s ease-in-out infinite`,\n animationDelay: `${i * 0.2}s`,\n opacity: 0.7,\n filter: 'blur(1px)',\n boxShadow: `0 0 8px ${config.particleColor}, 0 0 16px ${config.particleColor}, 0 0 24px ${config.particleColor}`,\n mixBlendMode: 'screen'\n }\n }, i, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 852,\n columnNumber: 27\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 826,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0\",\n children: [\n ...Array(config.sparkleCount)\n ].map((_, i)=>{\n // Position sparkles in the corners and edge centers\n let left, top;\n if (i < 2) {\n // Top corners\n left = i === 0 ? '5%' : '95%';\n top = '5%';\n } else if (i < 4) {\n // Bottom corners\n left = i === 2 ? '5%' : '95%';\n top = '95%';\n } else if (i < 6) {\n // Edge centers\n left = i === 4 ? '50%' : '50%';\n top = i === 4 ? '5%' : '95%';\n } else {\n // Side centers\n left = i === 6 ? '5%' : '95%';\n top = '50%';\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute w-0.5 h-0.5\",\n style: {\n left,\n top,\n backgroundColor: config.sparkleColor,\n animation: `sparkle ${2 + i * 0.4}s ease-in-out infinite`,\n animationDelay: `${i * 0.2}s`,\n opacity: 0.9,\n filter: 'blur(0.5px)',\n boxShadow: `0 0 4px ${config.sparkleColor}, 0 0 8px ${config.sparkleColor}`,\n mixBlendMode: 'screen'\n }\n }, `sparkle-${i}`, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 895,\n columnNumber: 27\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 872,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 rounded-lg\",\n style: {\n background: `radial-gradient(circle at 50% 50%, ${config.glowColor}20 0%, ${config.glowColor}10 40%, transparent 70%)`,\n animation: 'aura 4s ease-in-out infinite',\n mixBlendMode: 'screen'\n }\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 915,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true);\n })()\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 786,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full\",\n children: [\n card.image_url ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: card.image_url,\n alt: card.name,\n className: \"w-full h-full object-cover\",\n onError: (e)=>{\n e.target.style.display = 'none';\n e.target.nextSibling.style.display = 'flex';\n }\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 931,\n columnNumber: 13\n }, this) : null,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-full h-full ${!card.image_url ? 'block' : 'hidden'}`,\n style: {\n borderRadius: '10px'\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(CardBack, {\n game: card.game\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 947,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 943,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 929,\n columnNumber: 9\n }, this),\n card.quantity > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"px-3 py-1 text-xs font-bold text-white shadow-lg\",\n style: {\n backgroundColor: 'var(--text-accent)',\n borderRadius: '8px 8px 0 0',\n borderTop: '2px solid var(--text-accent)',\n borderLeft: '2px solid var(--text-accent)',\n borderRight: '2px solid var(--text-accent)',\n transform: 'translateY(2px)'\n },\n children: card.quantity\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 954,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 953,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-2 right-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: (e)=>{\n e.stopPropagation();\n setIsFavorited(!isFavorited);\n },\n className: `p-2 rounded-full transition-all duration-200 shadow-lg ${isFavorited ? 'bg-red-500 bg-opacity-80 text-white' : 'bg-white bg-opacity-20 backdrop-blur-sm hover:bg-opacity-30'}`,\n children: isFavorited ? '❤️' : '🤍'\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 972,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 971,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 769,\n columnNumber: 9\n }, this),\n isHovered && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"fixed z-50 bg-black bg-opacity-90 text-white p-4 rounded-lg shadow-2xl max-w-sm\",\n style: {\n left: cardPosition.x + cardPosition.width,\n top: cardPosition.y,\n pointerEvents: 'none',\n minHeight: cardPosition.height,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center'\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-bold text-white mb-1\",\n children: card.name\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1005,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1004,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 gap-3\",\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)(\"div\", {\n className: \"text-xs font-bold text-white mb-1\",\n children: \"TCG\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1011,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white\",\n children: card.game\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1012,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1010,\n columnNumber: 15\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)(\"div\", {\n className: \"text-xs font-bold text-white mb-1\",\n children: \"Set\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1015,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white\",\n children: card.set_name\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1016,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1014,\n columnNumber: 15\n }, this),\n card.type && /*#__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 font-bold text-white mb-1\",\n children: \"Type\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1020,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white flex items-center gap-1\",\n children: [\n card.game === 'Pokemon' && card.type === 'Lightning' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-yellow-400\",\n children: \"⚡\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1023,\n columnNumber: 23\n }, this),\n card.type\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1021,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1019,\n columnNumber: 17\n }, this),\n card.hp && /*#__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 font-bold text-white mb-1\",\n children: \"HP\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1031,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white\",\n children: card.hp\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1032,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1030,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1009,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 gap-3\",\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)(\"div\", {\n className: \"text-xs font-bold text-white mb-1\",\n children: \"Card type\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1040,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white\",\n children: card.card_type || 'Card'\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1041,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1039,\n columnNumber: 15\n }, this),\n card.form && /*#__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 font-bold text-white mb-1\",\n children: \"Form\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1045,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white\",\n children: card.form\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1046,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1044,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1038,\n columnNumber: 13\n }, this),\n card.mana_cost && /*#__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 font-bold text-white mb-1\",\n children: \"Cost to Play\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1054,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white\",\n children: card.mana_cost\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1055,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1053,\n columnNumber: 15\n }, this),\n card.game === 'Pokemon' && card.form && card.form.includes('V') && /*#__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 font-bold text-white mb-1\",\n children: \"Card rule\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1062,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white leading-relaxed\",\n children: \"V rule: When your Pok\\xe9mon V is Knocked Out, your opponent takes 2 Prize cards.\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1063,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1061,\n columnNumber: 15\n }, this),\n card.oracle_text && /*#__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 font-bold text-white mb-1\",\n children: \"Card Text\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1072,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white leading-relaxed\",\n children: card.oracle_text\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1073,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1071,\n columnNumber: 15\n }, this),\n card.flavor_text && /*#__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 font-bold text-white mb-1\",\n children: \"Quote\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1080,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white italic leading-relaxed\",\n children: [\n '\"',\n card.flavor_text,\n '\"'\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1081,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1079,\n columnNumber: 15\n }, this),\n card.current_price && /*#__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 font-bold text-white mb-1\",\n children: \"Current Price\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1088,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white\",\n children: formatCurrency(card.current_price)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1089,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1087,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 gap-3\",\n children: [\n card.weakness && /*#__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 font-bold text-white mb-1\",\n children: \"Weaknesses\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1097,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white flex items-center gap-1\",\n children: [\n card.game === 'Pokemon' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-500\",\n children: \"\\uD83D\\uDC4A\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1100,\n columnNumber: 23\n }, this),\n card.weakness\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1098,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1096,\n columnNumber: 17\n }, this),\n card.retreat_cost && /*#__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 font-bold text-white mb-1\",\n children: \"Retreat\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1108,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white flex items-center gap-1\",\n children: [\n card.game === 'Pokemon' && /*#__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)(\"span\", {\n className: \"text-gray-400\",\n children: \"⭐\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1112,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-400\",\n children: \"⭐\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1113,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true),\n card.retreat_cost\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1109,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1107,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1094,\n columnNumber: 13\n }, this),\n card.decks && card.decks.length > 0 || card.collections && card.collections.length > 0 && /*#__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 font-bold text-white mb-1\",\n children: \"Included In\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1125,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white\",\n children: [\n card.decks && card.decks.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-semibold\",\n children: \"Decks:\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1129,\n columnNumber: 23\n }, this),\n \" \",\n card.decks.join(', ')\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1128,\n columnNumber: 21\n }, this),\n card.collections && card.collections.length > 0 && /*#__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)(\"span\", {\n className: \"font-semibold\",\n children: \"Collections:\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1134,\n columnNumber: 23\n }, this),\n \" \",\n card.collections.join(', ')\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1133,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1126,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1124,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1002,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 990,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 767,\n columnNumber: 5\n }, this);\n}\n// Card Back Component for placeholders\nfunction CardBack({ game }) {\n const getCardBackImage = ()=>{\n switch(game){\n case 'MTG':\n return 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjE0MyIgdmlld0JveD0iMCAwIDIwMCAxNDMiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIyMDAiIGhlaWdodD0iMTQzIiBmaWxsPSIjOEI0NTEzIi8+CjxyZWN0IHg9IjEwIiB5PSIxMCIgd2lkdGg9IjE4MCIgaGVpZ2h0PSIxMjMiIGZpbGw9IiNBMDUyMkQiIHJ4PSI4Ii8+Cjx0ZXh0IHg9IjEwMCIgeT0iMzAiIGZvbnQtZmFtaWx5PSJBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIyNCIgZm9udC13ZWlnaHQ9ImJvbGQiIGZpbGw9IiM0QTkwRTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiPk1BR0lDPC90ZXh0Pgo8dGV4dCB4PSIxMDAiIHk9IjQ1IiBmb250LWZhbWlseT0iQXJpYWwsIHNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTIiIGZpbGw9IndoaXRlIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5UaGUgR2F0aGVyaW5nPC90ZXh0Pgo8Y2lyY2xlIGN4PSI3MCIgY3k9IjcwIiByPSI0IiBmaWxsPSJ3aGl0ZSIvPgo8Y2lyY2xlIGN4PSIxMzAiIGN4PSI3MCIgcj0iNCIgZmlsbD0iI0Y1OTlFMEIiLz4KPGNpcmNsZSBjeD0iMTAwIiBjeT0iODAiIHI9IjQiIGZpbGw9IiM0QTkwRTIiLz4KPGNpcmNsZSBjeD0iNzAiIGN5PSI5MCIgcj0iNCIgZmlsbD0iIzEwQjk4MSIvPgo8Y2lyY2xlIGN4PSIxMzAiIGN5PSI5MCIgcj0iNCIgZmlsbD0iYmxhY2siLz4KPHRleHQgeD0iMTAwIiB5PSIxMjAiIGZvbnQtZmFtaWx5PSJBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMCIgZm9udC13ZWlnaHQ9ImJvbGQiIGZpbGw9IiMyMEIyQUEiIHRleHQtYW5jaG9yPSJtaWRkbGUiPkRFQ0tNQVNURVI8L3RleHQ+Cjwvc3ZnPgo=';\n case 'Pokemon':\n return 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjE0MyIgdmlld0JveD0iMCAwIDIwMCAxNDMiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIyMDAiIGhlaWdodD0iMTQzIiBmaWxsPSIjRkY2QjZCIi8+CjxyZWN0IHg9IjEwIiB5PSIxMCIgd2lkdGg9IjE4MCIgaGVpZ2h0PSIxMjMiIGZpbGw9IiNGRjhFOEUiIHJ4PSI4Ii8+Cjx0ZXh0IHg9IjEwMCIgeT0iMzAiIGZvbnQtZmFtaWx5PSJBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIyNCIgZm9udC13ZWlnaHQ9ImJvbGQiIGZpbGw9IiNGRkQ3MDAiIHRleHQtYW5jaG9yPSJtaWRkbGUiPlBPS0VNT048L3RleHQ+Cjx0ZXh0IHg9IjEwMCIgeT0iNDUiIGZvbnQtZmFtaWx5PSJBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMiIgZmlsbD0id2hpdGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiPlRyYWRpbmcgQ2FyZCBHYW1lPC90ZXh0Pgo8Y2lyY2xlIGN4PSIxMDAiIGN5PSI3MCIgcj0iMjAiIGZpbGw9IndoaXRlIi8+Cjx0ZXh0IHg9IjEwMCIgeT0iNzgiIGZvbnQtZmFtaWx5PSJBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIyNCIgZmlsbD0iIzFGN0Y3RiIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pePPC90ZXh0Pgo8dGV4dCB4PSIxMDAiIHk9IjEyMCIgZm9udC1mYW1pbHk9IkFyaWFsLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjEwIiBmb250LXdlaWdodD0iYm9sZCIgZmlsbD0iI0ZGRDcwMCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+R0FNRSBGUkVBSzwvdGV4dD4KPC9zdmc+Cg==';\n case 'Lorcana':\n return 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjE0MyIgdmlld0JveD0iMCAwIDIwMCAxNDMiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIyMDAiIGhlaWdodD0iMTQzIiBmaWxsPSIjRUM0ODk5Ii8+CjxyZWN0IHg9IjEwIiB5PSIxMCIgd2lkdGg9IjE4MCIgaGVpZ2h0PSIxMjMiIGZpbGw9IiNGNDcyQjYiIHJ4PSI4Ii8+Cjx0ZXh0IHg9IjEwMCIgeT0iMzAiIGZvbnQtZmFtaWx5PSJBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIyNCIgZm9udC13ZWlnaHQ9ImJvbGQiIGZpbGw9IiNGQkJGMjQiIHRleHQtYW5jaG9yPSJtaWRkbGUiPkRJU05FWTwvdGV4dD4KPHRleHQgeD0iMTAwIiB5PSI0NSIgZm9udC1mYW1pbHk9IkFyaWFsLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjEyIiBmaWxsPSJ3aGl0ZSIgdGV4dC1hbmNob3I9Im1pZGRsZSI+TG9yY2FuYTwvdGV4dD4KPGNpcmNsZSBjeD0iMTAwIiBjeT0iNzAiIHI9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8dGV4dCB4PSIxMDAiIHk9Ijc4IiBmb250LWZhbWlseT0iQXJpYWwsIHNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMjQiIGZpbGw9IiMxRjdGN0YiIHRleHQtYW5jaG9yPSJtaWRkbGUiPvCfkqQ8L3RleHQ+Cjx0ZXh0IHg9IjEwMCIgeT0iMTIwIiBmb250LWZhbWlseT0iQXJpYWwsIHNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTAiIGZvbnQtd2VpZ2h0PSJib2xkIiBmaWxsPSIjRjU5RTBCIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5SQVZFTlNERVJHPzwvdGV4dD4KPC9zdmc+Cg==';\n default:\n return 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjE0MyIgdmlld0JveD0iMCAwIDIwMCAxNDMiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIyMDAiIGhlaWdodD0iMTQzIiBmaWxsPSIjNkI3MjgwIi8+CjxyZWN0IHg9IjEwIiB5PSIxMCIgd2lkdGg9IjE4MCIgaGVpZ2h0PSIxMjMiIGZpbGw9IiM5Q0EzQUYiIHJ4PSI4Ii8+Cjx0ZXh0IHg9IjEwMCIgeT0iMzAiIGZvbnQtZmFtaWx5PSJBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIyNCIgZm9udC13ZWlnaHQ9ImJvbGQiIGZpbGw9IndoaXRlIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5UQ0c8L3RleHQ+Cjx0ZXh0IHg9IjEwMCIgeT0iNDUiIGZvbnQtZmFtaWx5PSJBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMiIgZmlsbD0id2hpdGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiPlRyYWRpbmcgQ2FyZDwvdGV4dD4KPGNpcmNsZSBjeD0iMTAwIiBjeT0iNzAiIHI9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8dGV4dCB4PSIxMDAiIHk9Ijc4IiBmb250LWZhbWlseT0iQXJpYWwsIHNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMjQiIGZpbGw9IiMxRjdGN0YiIHRleHQtYW5jaG9yPSJtaWRkbGUiPvCfkqQ8L3RleHQ+Cjx0ZXh0IHg9IjEwMCIgeT0iMTIwIiBmb250LWZhbWlseT0iQXJpYWwsIHNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTAiIGZvbnQtd2VpZ2h0PSJib2xkIiBmaWxsPSIjNkI3MjgwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5DQVJEPC90ZXh0Pgo8L3N2Zz4K';\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full rounded-lg overflow-hidden\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: getCardBackImage(),\n alt: `${game} card back`,\n className: \"w-full h-full object-cover\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1164,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1163,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3BhZ2VzL2NhcmRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFvRDtBQUNaO0FBQ0U7QUFFM0IsU0FBU0s7SUFDdEIsTUFBTUMsU0FBU0gsc0RBQVNBO0lBQ3hCLE1BQU1JLE9BQU87UUFDWEMsT0FBTztRQUNQQyxNQUFNO0lBQ1I7SUFFQSxNQUFNLENBQUNDLE9BQU9DLFNBQVMsR0FBR1gsK0NBQVFBLENBQUMsRUFBRTtJQUNyQyxNQUFNLENBQUNZLFNBQVNDLFdBQVcsR0FBR2IsK0NBQVFBLENBQUM7SUFDdkMsTUFBTSxDQUFDYyxhQUFhQyxlQUFlLEdBQUdmLCtDQUFRQSxDQUFDO0lBQy9DLE1BQU0sQ0FBQ2dCLGFBQWFDLGVBQWUsR0FBR2pCLCtDQUFRQSxDQUFDO0lBQy9DLE1BQU0sQ0FBQ2tCLGFBQWFDLGVBQWUsR0FBR25CLCtDQUFRQSxDQUFDO0lBQy9DLE1BQU0sQ0FBQ29CLGdCQUFnQkMsa0JBQWtCLEdBQUdyQiwrQ0FBUUEsQ0FBQztJQUNyRCxNQUFNLENBQUNzQixhQUFhQyxlQUFlLEdBQUd2QiwrQ0FBUUEsQ0FBQztJQUMvQyxNQUFNLENBQUN3QixvQkFBb0JDLHNCQUFzQixHQUFHekIsK0NBQVFBLENBQUM7SUFDN0QsTUFBTSxDQUFDMEIsVUFBVUMsWUFBWSxHQUFHM0IsK0NBQVFBLENBQUMsU0FBUyxlQUFlO0lBQ2pFLE1BQU0sQ0FBQzRCLFlBQVlDLGNBQWMsR0FBRzdCLCtDQUFRQSxDQUFDO1FBQzNDOEIsTUFBTTtRQUNOQyxPQUFPO1FBQ1BDLE9BQU87UUFDUEMsT0FBTztJQUNUO0lBQ0EsTUFBTSxDQUFDQyxTQUFTQyxXQUFXLEdBQUduQywrQ0FBUUEsQ0FBQztRQUNyQ29DLE9BQU8sRUFBRTtRQUNUQyxVQUFVLEVBQUU7UUFDWkMsTUFBTSxFQUFFO0lBQ1Y7SUFDQSxNQUFNLENBQUNDLFNBQVNDLFdBQVcsR0FBR3hDLCtDQUFRQSxDQUFDO0lBQ3ZDLE1BQU15QyxpQkFBaUJ2Qyw2Q0FBTUEsQ0FBQztJQUM5QixNQUFNd0MsYUFBYXhDLDZDQUFNQSxDQUFDO0lBRTFCLDRCQUE0QjtJQUM1QixNQUFNeUMsYUFBYSxPQUFPQyxhQUFhLEtBQUs7UUFDMUMsSUFBSTtZQUNGLElBQUlBLFlBQVk7Z0JBQ2Q3QixlQUFlO2dCQUNmMEIsZUFBZUksT0FBTyxHQUFHO1lBQzNCLE9BQU87Z0JBQ0xoQyxXQUFXO1lBQ2I7WUFFQSxNQUFNaUMsU0FBUyxJQUFJQyxnQkFBZ0I7Z0JBQ2pDQyxPQUFPaEM7Z0JBQ1BpQyxNQUFNL0I7Z0JBQ05nQyxRQUFROUI7Z0JBQ1IrQixLQUFLN0I7Z0JBQ0w4QixVQUFVNUIsdUJBQXVCLGFBQWEsTUFDckNBLHVCQUF1QixXQUFXLE9BQ2xDQSx1QkFBdUIsWUFBWSxRQUNuQ0EsdUJBQXVCLGFBQWEsUUFDcENBLHVCQUF1QixjQUFjLFNBQVM7Z0JBQ3ZENkIsVUFBVTdCLHVCQUF1QixXQUFXLFFBQ25DQSx1QkFBdUIsWUFBWSxRQUNuQ0EsdUJBQXVCLGFBQWEsU0FBUztnQkFDdERNLE1BQU1GLFdBQVdFLElBQUksQ0FBQ3dCLFFBQVE7Z0JBQzlCdkIsT0FBT0gsV0FBV0csS0FBSyxDQUFDdUIsUUFBUTtZQUNsQztZQUVBLE1BQU1DLFdBQVcsTUFBTUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFVixRQUFRO1lBQzFELE1BQU1XLE9BQU8sTUFBTUYsU0FBU0csSUFBSTtZQUVoQyxJQUFJRCxLQUFLRSxPQUFPLEVBQUU7Z0JBR2hCLElBQUlmLFlBQVk7b0JBQ2RqQyxTQUFTaUQsQ0FBQUEsWUFBYTsrQkFBSUE7K0JBQWNILEtBQUsvQyxLQUFLO3lCQUFDO2dCQUNyRCxPQUFPO29CQUNMQyxTQUFTOEMsS0FBSy9DLEtBQUs7Z0JBQ3JCO2dCQUNBbUIsY0FBYzRCLEtBQUs3QixVQUFVO2dCQUM3Qk8sV0FBV3NCLEtBQUt2QixPQUFPO2dCQUN2QixNQUFNMkIsZUFBZUosS0FBSzdCLFVBQVUsQ0FBQ0UsSUFBSSxHQUFHMkIsS0FBSzdCLFVBQVUsQ0FBQ0ssS0FBSztnQkFDakVPLFdBQVdxQjtnQkFDWG5CLFdBQVdHLE9BQU8sR0FBR2dCO1lBQ3ZCLE9BQU87Z0JBQ0xDLFFBQVFDLEtBQUssQ0FBQywwQkFBMEJOLEtBQUtNLEtBQUs7Z0JBQ2xELElBQUksQ0FBQ25CLFlBQVk7b0JBQ2ZqQyxTQUFTLEVBQUU7Z0JBQ2I7WUFDRjtRQUNGLEVBQUUsT0FBT29ELE9BQU87WUFDZEQsUUFBUUMsS0FBSyxDQUFDLHlCQUF5QkE7WUFDdkMsSUFBSSxDQUFDbkIsWUFBWTtnQkFDZmpDLFNBQVMsRUFBRTtZQUNiO1FBQ0YsU0FBVTtZQUNSRSxXQUFXO1lBQ1hFLGVBQWU7WUFDZjBCLGVBQWVJLE9BQU8sR0FBRztRQUMzQjtJQUNGO0lBRUEsZUFBZTtJQUNmNUMsZ0RBQVNBOzJCQUFDO1lBQ1I0QjttQ0FBY21DLENBQUFBLE9BQVM7d0JBQUUsR0FBR0EsSUFBSTt3QkFBRWxDLE1BQU07b0JBQUU7O1lBQzFDbkIsU0FBUyxFQUFFO1lBQ1g2QixXQUFXO1lBQ1hFLFdBQVdHLE9BQU8sR0FBRztZQUNyQkYsV0FBVztRQUNiOzBCQUFHO1FBQUN6QjtRQUFhRTtRQUFnQkU7UUFBYUU7S0FBbUI7SUFFakUsOEJBQThCO0lBQzlCLE1BQU0sQ0FBQ3lDLGVBQWVDLGlCQUFpQixHQUFHbEUsK0NBQVFBLENBQUM7SUFFbkQsTUFBTW1FLHFCQUFxQixDQUFDQztRQUMxQm5ELGVBQWVtRDtRQUVmLHlCQUF5QjtRQUN6QixJQUFJSCxlQUFlO1lBQ2pCSSxhQUFhSjtRQUNmO1FBRUEsNkJBQTZCO1FBQzdCLE1BQU1LLGFBQWFDLFdBQVc7WUFDNUIxQyxjQUFjbUMsQ0FBQUEsT0FBUztvQkFBRSxHQUFHQSxJQUFJO29CQUFFbEMsTUFBTTtnQkFBRTtZQUMxQ25CLFNBQVMsRUFBRTtZQUNYNkIsV0FBVztZQUNYRSxXQUFXRyxPQUFPLEdBQUc7WUFDckJGLFdBQVc7UUFDYixHQUFHLE1BQU0sY0FBYztRQUV2QnVCLGlCQUFpQkk7SUFDbkI7SUFFQSw2QkFBNkI7SUFDN0JyRSxnREFBU0E7MkJBQUM7WUFDUjttQ0FBTztvQkFDTCxJQUFJZ0UsZUFBZTt3QkFDakJJLGFBQWFKO29CQUNmO2dCQUNGOztRQUNGOzBCQUFHO1FBQUNBO0tBQWM7SUFFbEIsa0JBQWtCO0lBQ2xCLE1BQU1PLGdCQUFnQjtRQUdwQixJQUFJLENBQUMvQixlQUFlSSxPQUFPLElBQUlILFdBQVdHLE9BQU8sRUFBRTtZQUNqRCxNQUFNNEIsV0FBVzdDLFdBQVdFLElBQUksR0FBRztZQUVuQ0QsY0FBY21DLENBQUFBLE9BQVM7b0JBQUUsR0FBR0EsSUFBSTtvQkFBRWxDLE1BQU0yQztnQkFBUztZQUVqRCxpREFBaUQ7WUFDakQsSUFBSTtnQkFDRjFELGVBQWU7Z0JBQ2YwQixlQUFlSSxPQUFPLEdBQUc7Z0JBRXpCLE1BQU1DLFNBQVMsSUFBSUMsZ0JBQWdCO29CQUNqQ0MsT0FBT2hDO29CQUNQaUMsTUFBTS9CO29CQUNOZ0MsUUFBUTlCO29CQUNSK0IsS0FBSzdCO29CQUNMOEIsVUFBVTVCLHVCQUF1QixhQUFhLE1BQ3JDQSx1QkFBdUIsV0FBVyxPQUNsQ0EsdUJBQXVCLFlBQVksUUFDbkNBLHVCQUF1QixhQUFhLFFBQ3BDQSx1QkFBdUIsY0FBYyxTQUFTO29CQUN2RDZCLFVBQVU3Qix1QkFBdUIsV0FBVyxRQUNuQ0EsdUJBQXVCLFlBQVksUUFDbkNBLHVCQUF1QixhQUFhLFNBQVM7b0JBQ3RETSxNQUFNMkMsU0FBU25CLFFBQVE7b0JBQ3ZCdkIsT0FBT0gsV0FBV0csS0FBSyxDQUFDdUIsUUFBUTtnQkFDbEM7Z0JBRUEsTUFBTUMsV0FBVyxNQUFNQyxNQUFNLENBQUMsa0JBQWtCLEVBQUVWLFFBQVE7Z0JBQzFELE1BQU1XLE9BQU8sTUFBTUYsU0FBU0csSUFBSTtnQkFFaEMsSUFBSUQsS0FBS0UsT0FBTyxFQUFFO29CQUVoQmhELFNBQVNpRCxDQUFBQSxZQUFhOytCQUFJQTsrQkFBY0gsS0FBSy9DLEtBQUs7eUJBQUM7b0JBQ25EbUIsY0FBYzRCLEtBQUs3QixVQUFVO29CQUM3Qk8sV0FBV3NCLEtBQUt2QixPQUFPO29CQUN2QixNQUFNMkIsZUFBZUosS0FBSzdCLFVBQVUsQ0FBQ0UsSUFBSSxHQUFHMkIsS0FBSzdCLFVBQVUsQ0FBQ0ssS0FBSztvQkFDakVPLFdBQVdxQjtvQkFDWG5CLFdBQVdHLE9BQU8sR0FBR2dCO2dCQUN2QixPQUFPO29CQUNMQyxRQUFRQyxLQUFLLENBQUMsK0JBQStCTixLQUFLTSxLQUFLO2dCQUN6RDtZQUNGLEVBQUUsT0FBT0EsT0FBTztnQkFDZEQsUUFBUUMsS0FBSyxDQUFDLDhCQUE4QkE7WUFDOUMsU0FBVTtnQkFDUmhELGVBQWU7Z0JBQ2YwQixlQUFlSSxPQUFPLEdBQUc7WUFDM0I7UUFDRjtJQUNGO0lBRUEsaUNBQWlDO0lBQ2pDNUMsZ0RBQVNBOzJCQUFDO1lBQ1J5QyxXQUFXRyxPQUFPLEdBQUdOO1lBQ3JCRSxlQUFlSSxPQUFPLEdBQUcvQjtRQUMzQjswQkFBRztRQUFDeUI7UUFBU3pCO0tBQVk7SUFFekIsNENBQTRDO0lBQzVDYixnREFBU0E7MkJBQUM7WUFDUixNQUFNeUUsV0FBVyxJQUFJQzttQ0FDbkIsQ0FBQ0M7b0JBQ0NBLFFBQVFDLE9BQU87MkNBQUMsQ0FBQ0M7NEJBQ2YsSUFBSUEsTUFBTUMsY0FBYyxJQUFJckMsV0FBV0csT0FBTyxJQUFJLENBQUNKLGVBQWVJLE9BQU8sRUFBRTtnQ0FDekUyQjs0QkFDRjt3QkFDRjs7Z0JBQ0Y7a0NBQ0E7Z0JBQ0VRLFlBQVk7Z0JBQ1pDLFdBQVc7WUFDYjtZQUdGLE1BQU1DO2lEQUFnQjtvQkFDcEIsTUFBTUMsV0FBV0MsU0FBU0MsY0FBYyxDQUFDO29CQUN6QyxJQUFJRixVQUFVO3dCQUNaVCxTQUFTWSxPQUFPLENBQUNIO29CQUNuQixPQUFPO3dCQUNMWixXQUFXVyxlQUFlO29CQUM1QjtnQkFDRjs7WUFFQUE7WUFFQTttQ0FBTztvQkFDTCxNQUFNQyxXQUFXQyxTQUFTQyxjQUFjLENBQUM7b0JBQ3pDLElBQUlGLFVBQVU7d0JBQ1pULFNBQVNhLFNBQVMsQ0FBQ0o7b0JBQ3JCO2dCQUNGOztRQUNGOzBCQUFHLEVBQUU7SUFFTCxNQUFNSyxpQkFBaUIsQ0FBQ3RDO1FBQ3RCLHVDQUF1QztRQUN2QyxNQUFNdUMsaUJBQWlCO1lBQ3JCLFVBQVU7WUFDVixZQUFZO1lBQ1osUUFBUTtZQUNSLFVBQVU7WUFDVixlQUFlO1lBQ2YsYUFBYTtZQUNiLGVBQWU7WUFDZixjQUFjO1FBQ2hCO1FBQ0EsT0FBT0EsY0FBYyxDQUFDdkMsUUFBUXdDLGNBQWMsSUFBSTtJQUNsRDtJQUVBLE1BQU1DLGFBQWE7UUFDakI7WUFBRXZCLE9BQU87WUFBT3dCLE9BQU87WUFBd0JDLE9BQU87WUFBVUMsTUFBTTtRQUFLO1FBQzNFO1lBQUUxQixPQUFPO1lBQVd3QixPQUFPO1lBQVdDLE9BQU87WUFBUUMsTUFBTTtRQUFJO1FBQy9EO1lBQUUxQixPQUFPO1lBQVd3QixPQUFPO1lBQWtCQyxPQUFPO1lBQVFDLE1BQU07UUFBSTtLQUN2RTtJQUVELE1BQU1DLGdCQUFnQjtRQUNwQjtZQUFFM0IsT0FBTztZQUFPd0IsT0FBTztRQUFlO1FBQ3RDO1lBQUV4QixPQUFPO1lBQVV3QixPQUFPO1FBQVM7UUFDbkM7WUFBRXhCLE9BQU87WUFBWXdCLE9BQU87UUFBVztRQUN2QztZQUFFeEIsT0FBTztZQUFRd0IsT0FBTztRQUFPO1FBQy9CO1lBQUV4QixPQUFPO1lBQVV3QixPQUFPO1FBQVM7UUFDbkM7WUFBRXhCLE9BQU87WUFBYXdCLE9BQU87UUFBWTtXQUN0QzFELFFBQVFHLFFBQVEsQ0FBQzJELE1BQU0sQ0FBQzlDLENBQUFBLFNBQ3pCLENBQUM7Z0JBQUM7Z0JBQU87Z0JBQVU7Z0JBQVk7Z0JBQVE7Z0JBQVU7YUFBWSxDQUFDK0MsUUFBUSxDQUFDL0MsU0FDdkVnRCxHQUFHLENBQUNoRCxDQUFBQSxTQUFXO2dCQUNma0IsT0FBT2xCO2dCQUNQMEMsT0FBTzFDO2dCQUNQMkMsT0FBT0wsZUFBZXRDO1lBQ3hCO0tBQ0Q7SUFFRCxNQUFNaUQsYUFBYTtRQUNqQjtZQUFFL0IsT0FBTztZQUFPd0IsT0FBTztRQUFXO1dBQy9CMUQsUUFBUUksSUFBSSxDQUFDNEQsR0FBRyxDQUFDL0MsQ0FBQUEsTUFBUTtnQkFDMUJpQixPQUFPakI7Z0JBQ1B5QyxPQUFPekM7WUFDVDtLQUNEO0lBRUQsTUFBTWlELG9CQUFvQjtRQUN4QjtZQUFFaEMsT0FBTztZQUFPd0IsT0FBTztRQUFhO1FBQ3BDO1lBQUV4QixPQUFPO1lBQVl3QixPQUFPO1FBQVk7UUFDeEM7WUFBRXhCLE9BQU87WUFBVXdCLE9BQU87UUFBYTtRQUN2QztZQUFFeEIsT0FBTztZQUFXd0IsT0FBTztRQUFjO1FBQ3pDO1lBQUV4QixPQUFPO1lBQVl3QixPQUFPO1FBQWdCO1FBQzVDO1lBQUV4QixPQUFPO1lBQWF3QixPQUFPO1FBQWM7S0FDNUM7SUFJRCxNQUFNUyxpQkFBaUIsQ0FBQ0M7UUFDdEIsT0FBTyxJQUFJQyxLQUFLQyxZQUFZLENBQUMsU0FBUztZQUNwQ0MsT0FBTztZQUNQQyxVQUFVO1FBQ1osR0FBR0MsTUFBTSxDQUFDTDtJQUNaO0lBRUEsTUFBTU0saUJBQWlCLENBQUMxRDtRQUN0QixNQUFNMkQsZUFBZWQsY0FBY2UsSUFBSSxDQUFDQyxDQUFBQSxTQUFVQSxPQUFPM0MsS0FBSyxLQUFLbEI7UUFDbkUsT0FBTzJELGVBQWVBLGFBQWFqQixLQUFLLEdBQUcxQztJQUM3QztJQUlBLElBQUl0QyxXQUFXRixNQUFNc0csTUFBTSxLQUFLLEdBQUc7UUFDakMscUJBQ0UsOERBQUM1RywwREFBTUE7WUFBQ0csTUFBTUE7c0JBQ1osNEVBQUMwRztnQkFBSUMsV0FBVTswQkFDYiw0RUFBQ0Q7b0JBQUlDLFdBQVU7b0JBQWlEVCxPQUFPO3dCQUFFVSxhQUFhO29CQUFxQjs7Ozs7Ozs7Ozs7Ozs7OztJQUluSDtJQUVBLHFCQUNFLDhEQUFDL0csMERBQU1BO1FBQUNHLE1BQU1BOzswQkFFWiw4REFBQzBHO2dCQUFJQyxXQUFVO2dCQUFNVCxPQUFPO29CQUFFVyxpQkFBaUI7b0JBQXVCQyxjQUFjO2dCQUEwQjswQkFDNUcsNEVBQUNKO29CQUFJQyxXQUFVOztzQ0FDYiw4REFBQ0Q7OzhDQUNDLDhEQUFDSztvQ0FBR0osV0FBVTtvQ0FBMEJULE9BQU87d0NBQUVaLE9BQU87b0NBQXNCOzhDQUFHOzs7Ozs7OENBR2pGLDhEQUFDMEI7b0NBQUVMLFdBQVU7b0NBQVVULE9BQU87d0NBQUVaLE9BQU87b0NBQXdCOzhDQUFHOzs7Ozs7Ozs7Ozs7c0NBSXBFLDhEQUFDb0I7NEJBQUlDLFdBQVU7OzhDQUNiLDhEQUFDTTtvQ0FDQ0MsU0FBUyxJQUFNOUYsWUFBWTtvQ0FDM0J1RixXQUFXLENBQUMsMkNBQTJDLEVBQ3JEeEYsYUFBYSxTQUNULGNBQ0EsbUJBQ0o7b0NBQ0YrRSxPQUFPO3dDQUNMVyxpQkFBaUIxRixhQUFhLFNBQVMsdUJBQXVCO3dDQUM5RG1FLE9BQU9uRSxhQUFhLFNBQVMsd0JBQXdCO29DQUN2RDs4Q0FFQSw0RUFBQ2dHO3dDQUFJUixXQUFVO3dDQUFVUyxNQUFLO3dDQUFPQyxRQUFPO3dDQUFlQyxTQUFRO2tEQUNqRSw0RUFBQ0M7NENBQUtDLGVBQWM7NENBQVFDLGdCQUFlOzRDQUFRQyxhQUFhOzRDQUFHQyxHQUFFOzs7Ozs7Ozs7Ozs7Ozs7OzhDQUd6RSw4REFBQ1Y7b0NBQ0NDLFNBQVMsSUFBTTlGLFlBQVk7b0NBQzNCdUYsV0FBVyxDQUFDLDJDQUEyQyxFQUNyRHhGLGFBQWEsU0FDVCxjQUNBLG1CQUNKO29DQUNGK0UsT0FBTzt3Q0FDTFcsaUJBQWlCMUYsYUFBYSxTQUFTLHVCQUF1Qjt3Q0FDOURtRSxPQUFPbkUsYUFBYSxTQUFTLHdCQUF3QjtvQ0FDdkQ7OENBRUEsNEVBQUNnRzt3Q0FBSVIsV0FBVTt3Q0FBVVMsTUFBSzt3Q0FBT0MsUUFBTzt3Q0FBZUMsU0FBUTtrREFDakUsNEVBQUNDOzRDQUFLQyxlQUFjOzRDQUFRQyxnQkFBZTs0Q0FBUUMsYUFBYTs0Q0FBR0MsR0FBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQVEvRSw4REFBQ2pCO2dCQUFJQyxXQUFVO2dCQUFNVCxPQUFPO29CQUFFVyxpQkFBaUI7Z0JBQXNCOztrQ0FDbkUsOERBQUNIO3dCQUFJQyxXQUFVOzswQ0FDYiw4REFBQ2lCO2dDQUFHakIsV0FBVTtnQ0FBNkJULE9BQU87b0NBQUVaLE9BQU87Z0NBQXNCOzBDQUFHOzs7Ozs7MENBR3BGLDhEQUFDb0I7Z0NBQUlDLFdBQVU7O2tEQUNiLDhEQUFDTTt3Q0FDQ0MsU0FBUyxJQUFNdEcsZUFBZTt3Q0FDOUIrRixXQUFXLENBQUMsNkRBQTZELEVBQ3ZFaEcsZ0JBQWdCLFFBQ1osY0FDQSxtQkFDSjt3Q0FDRnVGLE9BQU87NENBQ0xXLGlCQUFpQmxHLGdCQUFnQixRQUFRLHVCQUF1Qjs0Q0FDaEUyRSxPQUFPM0UsZ0JBQWdCLFFBQVEsd0JBQXdCOzRDQUN2RGtILFFBQVE7d0NBQ1Y7a0RBQ0Q7Ozs7OztvQ0FHQXpDLFdBQVdPLEdBQUcsQ0FBQ2EsQ0FBQUEsdUJBQ2QsOERBQUNTOzRDQUVDQyxTQUFTLElBQU10RyxlQUFlNEYsT0FBTzNDLEtBQUs7NENBQzFDOEMsV0FBVyxDQUFDLHFGQUFxRixFQUMvRmhHLGdCQUFnQjZGLE9BQU8zQyxLQUFLLEdBQ3hCLGNBQ0EsbUJBQ0o7NENBQ0ZxQyxPQUFPO2dEQUNMVyxpQkFBaUJsRyxnQkFBZ0I2RixPQUFPM0MsS0FBSyxHQUFHLHVCQUF1QjtnREFDdkV5QixPQUFPM0UsZ0JBQWdCNkYsT0FBTzNDLEtBQUssR0FBRyx3QkFBd0I7Z0RBQzlEZ0UsUUFBUTs0Q0FDVjs7OERBRUEsOERBQUNDOzhEQUFNdEIsT0FBT2pCLElBQUk7Ozs7OztnREFDakJpQixPQUFPbkIsS0FBSzs7MkNBZFJtQixPQUFPM0MsS0FBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7a0NBcUJ6Qiw4REFBQzZDO3dCQUFJQyxXQUFVOzswQ0FDYiw4REFBQ0Q7O2tEQUNDLDhEQUFDckI7d0NBQU1zQixXQUFVO3dDQUFpQ1QsT0FBTzs0Q0FBRVosT0FBTzt3Q0FBc0I7a0RBQUc7Ozs7OztrREFHM0YsOERBQUNvQjt3Q0FBSUMsV0FBVTs7MERBQ2IsOERBQUNvQjtnREFDQ0MsTUFBSztnREFDTEMsYUFBWTtnREFDWnRCLFdBQVU7Z0RBQ1Y5QyxPQUFPcEQ7Z0RBQ1B5SCxVQUFVLENBQUNDLElBQU12RSxtQkFBbUJ1RSxFQUFFQyxNQUFNLENBQUN2RSxLQUFLO2dEQUNsRHdFLFlBQVksQ0FBQ0Y7b0RBQ1gsSUFBSUEsRUFBRUcsR0FBRyxLQUFLLFNBQVM7d0RBQ3JCaEgsY0FBY21DLENBQUFBLE9BQVM7Z0VBQUUsR0FBR0EsSUFBSTtnRUFBRWxDLE1BQU07NERBQUU7d0RBQzFDbkIsU0FBUyxFQUFFO3dEQUNYNkIsV0FBVzt3REFDWEUsV0FBV0csT0FBTyxHQUFHO3dEQUNyQkYsV0FBVztvREFDYjtnREFDRjs7Ozs7OzBEQUVGLDhEQUFDNkU7Z0RBQ0NDLFNBQVM7b0RBQ1A1RixjQUFjbUMsQ0FBQUEsT0FBUzs0REFBRSxHQUFHQSxJQUFJOzREQUFFbEMsTUFBTTt3REFBRTtvREFDMUNuQixTQUFTLEVBQUU7b0RBQ1g2QixXQUFXO29EQUNYRSxXQUFXRyxPQUFPLEdBQUc7b0RBQ3JCRixXQUFXO2dEQUNiO2dEQUNBdUUsV0FBVTtnREFDVlQsT0FBTztvREFBRVcsaUJBQWlCO2dEQUFxQjswREFFL0MsNEVBQUNNO29EQUFJUixXQUFVO29EQUFVUyxNQUFLO29EQUFPQyxRQUFPO29EQUFlQyxTQUFROzhEQUNqRSw0RUFBQ0M7d0RBQUtDLGVBQWM7d0RBQVFDLGdCQUFlO3dEQUFRQyxhQUFhO3dEQUFHQyxHQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBDQUs3RSw4REFBQ2pCOztrREFDQyw4REFBQ3JCO3dDQUFNc0IsV0FBVTt3Q0FBaUNULE9BQU87NENBQUVaLE9BQU87d0NBQXNCO2tEQUFHOzs7Ozs7a0RBRzNGLDhEQUFDaUQ7d0NBQ0MxRSxPQUFPaEQ7d0NBQ1BxSCxVQUFVLENBQUNDLElBQU1ySCxrQkFBa0JxSCxFQUFFQyxNQUFNLENBQUN2RSxLQUFLO3dDQUNqRDhDLFdBQVU7a0RBRVRuQixjQUFjRyxHQUFHLENBQUNhLENBQUFBLHVCQUNqQiw4REFBQ0E7Z0RBQTBCM0MsT0FBTzJDLE9BQU8zQyxLQUFLOzBEQUMzQzJDLE9BQU9uQixLQUFLOytDQURGbUIsT0FBTzNDLEtBQUs7Ozs7Ozs7Ozs7Ozs7Ozs7MENBTS9CLDhEQUFDNkM7O2tEQUNDLDhEQUFDckI7d0NBQU1zQixXQUFVO3dDQUFpQ1QsT0FBTzs0Q0FBRVosT0FBTzt3Q0FBc0I7a0RBQUc7Ozs7OztrREFHM0YsOERBQUNpRDt3Q0FDQzFFLE9BQU85Qzt3Q0FDUG1ILFVBQVUsQ0FBQ0MsSUFBTW5ILGVBQWVtSCxFQUFFQyxNQUFNLENBQUN2RSxLQUFLO3dDQUM5QzhDLFdBQVU7a0RBRVRmLFdBQVdELEdBQUcsQ0FBQ2EsQ0FBQUEsdUJBQ2QsOERBQUNBO2dEQUEwQjNDLE9BQU8yQyxPQUFPM0MsS0FBSzswREFDM0MyQyxPQUFPbkIsS0FBSzsrQ0FERm1CLE9BQU8zQyxLQUFLOzs7Ozs7Ozs7Ozs7Ozs7OzBDQU0vQiw4REFBQzZDOztrREFDQyw4REFBQ3JCO3dDQUFNc0IsV0FBVTt3Q0FBaUNULE9BQU87NENBQUVaLE9BQU87d0NBQXNCO2tEQUFHOzs7Ozs7a0RBRzNGLDhEQUFDaUQ7d0NBQ0MxRSxPQUFPNUM7d0NBQ1BpSCxVQUFVLENBQUNDLElBQU1qSCxzQkFBc0JpSCxFQUFFQyxNQUFNLENBQUN2RSxLQUFLO3dDQUNyRDhDLFdBQVU7a0RBRVRkLGtCQUFrQkYsR0FBRyxDQUFDYSxDQUFBQSx1QkFDckIsOERBQUNBO2dEQUEwQjNDLE9BQU8yQyxPQUFPM0MsS0FBSzswREFDM0MyQyxPQUFPbkIsS0FBSzsrQ0FERm1CLE9BQU8zQyxLQUFLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29CQVMvQmxELENBQUFBLGdCQUFnQixTQUFTRSxtQkFBbUIsU0FBU0UsZ0JBQWdCLFNBQVNFLHVCQUF1QixLQUFJLG1CQUN6Ryw4REFBQ3lGO3dCQUFJQyxXQUFVO2tDQUNiLDRFQUFDRDs0QkFBSUMsV0FBVTs7Z0NBQ1poRyxnQkFBZ0IsdUJBQ2YsOERBQUNtSDtvQ0FBS25CLFdBQVU7b0NBQTZDVCxPQUFPO3dDQUNsRVcsaUJBQWlCO3dDQUNqQnZCLE9BQU87d0NBQ1B1QyxRQUFRO29DQUNWOzt3Q0FDR3pDLFdBQVdtQixJQUFJLENBQUNpQyxDQUFBQSxNQUFPQSxJQUFJM0UsS0FBSyxLQUFLbEQsY0FBYzBFO3NEQUNwRCw4REFBQzRCOzRDQUNDQyxTQUFTLElBQU10RyxlQUFlOzRDQUM5QitGLFdBQVU7c0RBQ1g7Ozs7Ozs7Ozs7OztnQ0FLSjlGLG1CQUFtQix1QkFDbEIsOERBQUNpSDtvQ0FBS25CLFdBQVU7b0NBQTZDVCxPQUFPO3dDQUNsRVcsaUJBQWlCO3dDQUNqQnZCLE9BQU87d0NBQ1B1QyxRQUFRO29DQUNWOzt3Q0FDR3JDLGNBQWNlLElBQUksQ0FBQ2lDLENBQUFBLE1BQU9BLElBQUkzRSxLQUFLLEtBQUtoRCxpQkFBaUJ3RTtzREFDMUQsOERBQUM0Qjs0Q0FDQ0MsU0FBUyxJQUFNcEcsa0JBQWtCOzRDQUNqQzZGLFdBQVU7c0RBQ1g7Ozs7Ozs7Ozs7OztnQ0FLSjVGLGdCQUFnQix1QkFDZiw4REFBQytHO29DQUFLbkIsV0FBVTtvQ0FBNkNULE9BQU87d0NBQ2xFVyxpQkFBaUI7d0NBQ2pCdkIsT0FBTzt3Q0FDUHVDLFFBQVE7b0NBQ1Y7O3dDQUNHakMsV0FBV1csSUFBSSxDQUFDaUMsQ0FBQUEsTUFBT0EsSUFBSTNFLEtBQUssS0FBSzlDLGNBQWNzRTtzREFDcEQsOERBQUM0Qjs0Q0FDQ0MsU0FBUyxJQUFNbEcsZUFBZTs0Q0FDOUIyRixXQUFVO3NEQUNYOzs7Ozs7Ozs7Ozs7Z0NBS0oxRix1QkFBdUIsdUJBQ3RCLDhEQUFDNkc7b0NBQUtuQixXQUFVO29DQUE2Q1QsT0FBTzt3Q0FDbEVXLGlCQUFpQjt3Q0FDakJ2QixPQUFPO3dDQUNQdUMsUUFBUTtvQ0FDVjs7d0NBQ0doQyxrQkFBa0JVLElBQUksQ0FBQ2lDLENBQUFBLE1BQU9BLElBQUkzRSxLQUFLLEtBQUs1QyxxQkFBcUJvRTtzREFDbEUsOERBQUM0Qjs0Q0FDQ0MsU0FBUyxJQUFNaEcsc0JBQXNCOzRDQUNyQ3lGLFdBQVU7c0RBQ1g7Ozs7Ozs7Ozs7Ozs4Q0FLTCw4REFBQ007b0NBQ0NDLFNBQVM7d0NBQ1B0RyxlQUFlO3dDQUNmRSxrQkFBa0I7d0NBQ2xCRSxlQUFlO3dDQUNmRSxzQkFBc0I7b0NBQ3hCO29DQUNBeUYsV0FBVTtvQ0FBOERULE9BQU87d0NBQzdFWixPQUFPO3dDQUNQdUMsUUFBUTtvQ0FDVjs4Q0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBU2IsOERBQUNuQjtnQkFBSUMsV0FBVTswQkFDSnhHLE1BQU1zRyxNQUFNLEtBQUssa0JBQ3hCLDhEQUFDQztvQkFBSUMsV0FBVTs7c0NBQ2IsOERBQUNEOzRCQUFJQyxXQUFVO3NDQUFnQjs7Ozs7O3NDQUMvQiw4REFBQ2lCOzRCQUFHakIsV0FBVTs0QkFBNkJULE9BQU87Z0NBQUVaLE9BQU87NEJBQXNCO3NDQUFHOzs7Ozs7c0NBR3BGLDhEQUFDMEI7NEJBQUVMLFdBQVU7NEJBQU9ULE9BQU87Z0NBQUVaLE9BQU87NEJBQXdCO3NDQUFHOzs7Ozs7Ozs7Ozt5Q0FLakU7O3NDQUNFLDhEQUFDb0I7NEJBQUlDLFdBQVd4RixhQUFhLFNBQVMsMkdBQTJHO3NDQUM5SWhCLE1BQU13RixHQUFHLENBQUM4QyxDQUFBQSxxQkFDVCw4REFBQy9CO29DQUFrQlEsU0FBUyxJQUFNbkgsT0FBTzJJLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRUQsS0FBS0UsRUFBRSxFQUFFO29DQUFHaEMsV0FBVTs4Q0FDM0UsNEVBQUNpQzt3Q0FDQ0gsTUFBTUE7d0NBQ050SCxVQUFVQTt3Q0FDVmtGLGdCQUFnQkE7d0NBQ2hCcEIsZ0JBQWdCQTs7Ozs7O21DQUxWd0QsS0FBS0UsRUFBRTs7Ozs7Ozs7Ozt3QkFZcEJwSSw2QkFDQyw4REFBQ21HOzRCQUFJQyxXQUFVO3NDQUNiLDRFQUFDRDtnQ0FBSUMsV0FBVTs7a0RBQ2IsOERBQUNEO3dDQUFJQyxXQUFVO3dDQUErQ1QsT0FBTzs0Q0FBRVUsYUFBYTt3Q0FBcUI7Ozs7OztrREFDekcsOERBQUNrQjt3Q0FBSzVCLE9BQU87NENBQUVaLE9BQU87d0NBQXdCO2tEQUFHOzs7Ozs7Ozs7Ozs7Ozs7OztzQ0FNdkQsOERBQUNvQjs0QkFBSWlDLElBQUc7NEJBQTJCaEMsV0FBVTs7Ozs7O3dCQUc1QzNFLFdBQVcsQ0FBQ3pCLDZCQUNYLDhEQUFDbUc7NEJBQUlDLFdBQVU7c0NBQ2IsNEVBQUNNO2dDQUNDQyxTQUFTakQ7Z0NBQ1QwQyxXQUFVOzBDQUNYOzs7Ozs7Ozs7Ozt3QkFPSixDQUFDM0UsV0FBVzdCLE1BQU1zRyxNQUFNLEdBQUcsbUJBQzFCLDhEQUFDQzs0QkFBSUMsV0FBVTtzQ0FDYiw0RUFBQ21CO2dDQUFLNUIsT0FBTztvQ0FBRVosT0FBTztnQ0FBd0I7MENBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVVqRTtBQUVBLG9CQUFvQjtBQUNwQixTQUFTc0QsT0FBTyxFQUFFSCxJQUFJLEVBQUV0SCxRQUFRLEVBQUVrRixjQUFjLEVBQUVwQixjQUFjLEVBQUU7SUFDaEUsTUFBTSxDQUFDNEQsV0FBV0MsYUFBYSxHQUFHckosK0NBQVFBLENBQUM7SUFDM0MsTUFBTSxDQUFDc0osY0FBY0MsZ0JBQWdCLEdBQUd2SiwrQ0FBUUEsQ0FBQztRQUFFd0osR0FBRztRQUFHQyxHQUFHO1FBQUdDLE9BQU87UUFBR0MsUUFBUTtJQUFFO0lBQ25GLE1BQU0sQ0FBQ0MsYUFBYUMsZUFBZSxHQUFHN0osK0NBQVFBLENBQUM7SUFFL0MsTUFBTThKLGtCQUFrQixDQUFDcEI7UUFDdkIsTUFBTXFCLE9BQU9yQixFQUFFc0IsYUFBYSxDQUFDQyxxQkFBcUI7UUFDbERWLGdCQUFnQjtZQUNkQyxHQUFHTyxLQUFLRyxJQUFJO1lBQ1pULEdBQUdNLEtBQUtJLEdBQUc7WUFDWFQsT0FBT0ssS0FBS0wsS0FBSztZQUNqQkMsUUFBUUksS0FBS0osTUFBTTtRQUNyQjtJQUNGO0lBRUEsTUFBTVMsbUJBQW1CO1FBQ3ZCZixhQUFhO0lBQ2Y7SUFFQSxNQUFNZ0IsbUJBQW1CO1FBQ3ZCaEIsYUFBYTtJQUNmO0lBRUEsTUFBTWlCLGNBQWMsQ0FBQ3JIO1FBQ25CLE1BQU1zSCxTQUFTO1lBQ2IsT0FBTztZQUNQLFdBQVc7WUFDWCxXQUFXLFVBQVUsT0FBTztRQUM5QjtRQUNBLE9BQU9BLE1BQU0sQ0FBQ3RILEtBQUssSUFBSTtJQUN6QjtJQUVBLE1BQU11SCxjQUFjLENBQUNDO1FBQ25CLGdEQUFnRDtRQUNoRCxNQUFNQyxPQUFPRCxRQUFRRSxLQUFLLENBQUMsSUFBSUMsTUFBTSxDQUFDLENBQUNDLEdBQUdDO1lBQ3hDRCxJQUFJLENBQUVBLEtBQUssS0FBS0EsSUFBS0MsRUFBRUMsVUFBVSxDQUFDO1lBQ2xDLE9BQU9GLElBQUlBO1FBQ2IsR0FBRztRQUNILE1BQU1HLE1BQU1DLEtBQUtDLEdBQUcsQ0FBQ1IsUUFBUTtRQUM3QixPQUFPLENBQUMsSUFBSSxFQUFFTSxJQUFJLFdBQVcsQ0FBQztJQUNoQztJQUVBLE1BQU0zRSxpQkFBaUIsQ0FBQ0M7UUFDdEIsT0FBTyxJQUFJQyxLQUFLQyxZQUFZLENBQUMsU0FBUztZQUNwQ0MsT0FBTztZQUNQQyxVQUFVO1FBQ1osR0FBR0MsTUFBTSxDQUFDTDtJQUNaO0lBRUEsTUFBTTZFLG9CQUFvQixDQUFDakk7UUFDekIsTUFBTWtJLFlBQVk7WUFDaEJDLFFBQVE7WUFDUkMsVUFBVTtZQUNWQyxNQUFNO1lBQ05DLFFBQVE7WUFDUkMsYUFBYTtZQUNiQyxXQUFXO1lBQ1hDLE9BQU87UUFDVDtRQUNBLE9BQU9QLFNBQVMsQ0FBQ2xJLE9BQU8sSUFBSTtJQUM5QjtJQUVBLE1BQU0wSSxnQkFBZ0IsQ0FBQzFJO1FBQ3JCLE1BQU0ySSxRQUFRO1lBQ1pSLFFBQVE7WUFDUkMsVUFBVTtZQUNWQyxNQUFNO1lBQ05DLFFBQVE7WUFDUkMsYUFBYTtZQUNiQyxXQUFXO1lBQ1hDLE9BQU87UUFDVDtRQUNBLE9BQU9FLEtBQUssQ0FBQzNJLE9BQU8sSUFBSTtJQUMxQjtJQUVBLElBQUl4QixhQUFhLFFBQVE7UUFDdkIscUJBQ0UsOERBQUN1RjtZQUNDQyxXQUFVO1lBQ1ZULE9BQU87Z0JBQ0xxRixZQUFZO1lBQ2Q7c0JBRUEsNEVBQUM3RTtnQkFBSUMsV0FBVTs7a0NBQ2IsOERBQUNEO3dCQUFJQyxXQUFVO3dCQUF1Q1QsT0FBTzs0QkFDM0RzRixZQUFZLENBQUMsd0JBQXdCLEVBQUVaLGtCQUFrQm5DLEtBQUs5RixNQUFNLEVBQUU4SSxPQUFPLENBQUMsU0FBUyxJQUFJQSxPQUFPLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQzs0QkFDaEhDLFdBQVcsQ0FBQyw0QkFBNEIsQ0FBQzt3QkFDM0M7a0NBQ0UsNEVBQUNoRjs0QkFBSUMsV0FBVTtzQ0FDWjhCLEtBQUsvRixJQUFJOzs7Ozs7Ozs7OztrQ0FHZCw4REFBQ2dFO3dCQUFJQyxXQUFVOzswQ0FDYiw4REFBQ2lCO2dDQUFHakIsV0FBVTtnQ0FBNkJULE9BQU87b0NBQUVaLE9BQU87Z0NBQXNCOzBDQUM5RW1ELEtBQUtrRCxJQUFJOzs7Ozs7MENBRVosOERBQUMzRTtnQ0FBRUwsV0FBVTtnQ0FBZVQsT0FBTztvQ0FBRVosT0FBTztnQ0FBd0I7O29DQUNqRW1ELEtBQUttRCxRQUFRO29DQUFDO29DQUFJdkYsZUFBZW9DLEtBQUs5RixNQUFNOzs7Ozs7OzBDQUUvQyw4REFBQ3FFO2dDQUFFTCxXQUFVO2dDQUFVVCxPQUFPO29DQUFFWixPQUFPO2dDQUF3QjswQ0FDNURtRCxLQUFLb0QsV0FBVyxJQUFJcEQsS0FBS3FELFNBQVM7Ozs7Ozs7Ozs7OztrQ0FHdkMsOERBQUNwRjt3QkFBSUMsV0FBVTs7MENBQ2IsOERBQUNLO2dDQUFFTCxXQUFVOzBDQUNWYixlQUFlMkMsS0FBS3NELGFBQWEsSUFBSTs7Ozs7OzBDQUV4Qyw4REFBQ2pFO2dDQUNDbkIsV0FBVTtnQ0FDVlQsT0FBTztvQ0FBRVcsaUJBQWlCNUIsZUFBZXdELEtBQUs5RixNQUFNO2dDQUFFOzBDQUVyRDBELGVBQWVvQyxLQUFLOUYsTUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFNdkM7SUFFQSxxQkFDRSw4REFBQytEO1FBQUlDLFdBQVU7OzBCQUVYLDhEQUFDRDtnQkFDQ0MsV0FBVTtnQkFDVlQsT0FBTztvQkFDTGlELE9BQU87b0JBQ1A2QyxVQUFVO29CQUNWQyxhQUFhO29CQUNiUCxXQUFXTCxjQUFjNUMsS0FBSzlGLE1BQU07b0JBQ3BDdUosY0FBYztvQkFDZHJFLFFBQVEsQ0FBQyxVQUFVLEVBQUU1QyxlQUFld0QsS0FBSzlGLE1BQU0sRUFBRSxFQUFFLENBQUM7b0JBQ3BEd0osVUFBVTtnQkFDWjtnQkFDQUMsYUFBYTdDO2dCQUNiOEMsY0FBY3hDO2dCQUNkeUMsY0FBY3hDOztvQkFHYnJCLEtBQUs5RixNQUFNLEtBQUssMEJBQ2YsOERBQUMrRDt3QkFBSUMsV0FBVTtrQ0FFWixDQUFDOzRCQUNBLE1BQU00RixlQUFlO2dDQUNuQixVQUFVO29DQUNSQyxlQUFlO29DQUNmQyxjQUFjO29DQUNkQyxlQUFlO29DQUNmQyxjQUFjO29DQUNkQyxXQUFXO2dDQUNiO2dDQUNBLGFBQWE7b0NBQ1hKLGVBQWU7b0NBQ2ZDLGNBQWM7b0NBQ2RDLGVBQWU7b0NBQ2ZDLGNBQWM7b0NBQ2RDLFdBQVc7Z0NBQ2I7Z0NBQ0EsUUFBUTtvQ0FDTkosZUFBZTtvQ0FDZkMsY0FBYztvQ0FDZEMsZUFBZTtvQ0FDZkMsY0FBYztvQ0FDZEMsV0FBVztnQ0FDYjtnQ0FDQSxZQUFZO29DQUNWSixlQUFlO29DQUNmQyxjQUFjO29DQUNkQyxlQUFlO29DQUNmQyxjQUFjO29DQUNkQyxXQUFXO2dDQUNiOzRCQUNGOzRCQUVBLE1BQU1DLFNBQVNOLFlBQVksQ0FBQzlELEtBQUs5RixNQUFNLENBQUM7NEJBQ3hDLElBQUksQ0FBQ2tLLFFBQVEsT0FBTzs0QkFFcEIscUJBQ0U7O2tEQUVFLDhEQUFDbkc7d0NBQUlDLFdBQVU7a0RBQ1o7K0NBQUltRyxNQUFNRCxPQUFPTCxhQUFhO3lDQUFFLENBQUM3RyxHQUFHLENBQUMsQ0FBQ29ILEdBQUdDOzRDQUN4QywyQ0FBMkM7NENBQzNDLElBQUlyRCxNQUFNQzs0Q0FDVixNQUFNcUQsWUFBWUQsSUFBSSxHQUFHLFVBQVU7NENBQ25DLE1BQU1FLGlCQUFpQnhDLEtBQUt5QyxLQUFLLENBQUNILElBQUk7NENBRXRDLElBQUlDLGNBQWMsR0FBRztnREFDbkIsV0FBVztnREFDWHRELE9BQU8sR0FBRyxLQUFNdUQsaUJBQWlCLEdBQUksQ0FBQyxDQUFDO2dEQUN2Q3RELE1BQU07NENBQ1IsT0FBTyxJQUFJcUQsY0FBYyxHQUFHO2dEQUMxQixhQUFhO2dEQUNidEQsT0FBTztnREFDUEMsTUFBTSxHQUFHLEtBQU1zRCxpQkFBaUIsR0FBSSxDQUFDLENBQUM7NENBQ3hDLE9BQU8sSUFBSUQsY0FBYyxHQUFHO2dEQUMxQixjQUFjO2dEQUNkdEQsT0FBTyxHQUFHLEtBQU11RCxpQkFBaUIsR0FBSSxDQUFDLENBQUM7Z0RBQ3ZDdEQsTUFBTTs0Q0FDUixPQUFPO2dEQUNMLFlBQVk7Z0RBQ1pELE9BQU87Z0RBQ1BDLE1BQU0sR0FBRyxLQUFNc0QsaUJBQWlCLEdBQUksQ0FBQyxDQUFDOzRDQUN4Qzs0Q0FFQSxxQkFDRSw4REFBQ3hHO2dEQUVDQyxXQUFVO2dEQUNWVCxPQUFPO29EQUNMeUQ7b0RBQ0FDO29EQUNBL0MsaUJBQWlCZ0csT0FBT0gsYUFBYTtvREFDckNVLFdBQVcsQ0FBQyxVQUFVLEVBQUUsSUFBSUosSUFBSSxJQUFJLHNCQUFzQixDQUFDO29EQUMzREssZ0JBQWdCLEdBQUdMLElBQUksSUFBSSxDQUFDLENBQUM7b0RBQzdCTSxTQUFTO29EQUNUN0gsUUFBUTtvREFDUmlHLFdBQVcsQ0FBQyxRQUFRLEVBQUVtQixPQUFPSCxhQUFhLENBQUMsV0FBVyxFQUFFRyxPQUFPSCxhQUFhLENBQUMsV0FBVyxFQUFFRyxPQUFPSCxhQUFhLEVBQUU7b0RBQ2hIYSxjQUFjO2dEQUNoQjsrQ0FaS1A7Ozs7O3dDQWVYOzs7Ozs7a0RBSUYsOERBQUN0Rzt3Q0FBSUMsV0FBVTtrREFDWjsrQ0FBSW1HLE1BQU1ELE9BQU9KLFlBQVk7eUNBQUUsQ0FBQzlHLEdBQUcsQ0FBQyxDQUFDb0gsR0FBR0M7NENBQ3ZDLG9EQUFvRDs0Q0FDcEQsSUFBSXJELE1BQU1DOzRDQUNWLElBQUlvRCxJQUFJLEdBQUc7Z0RBQ1QsY0FBYztnREFDZHJELE9BQU9xRCxNQUFNLElBQUksT0FBTztnREFDeEJwRCxNQUFNOzRDQUNSLE9BQU8sSUFBSW9ELElBQUksR0FBRztnREFDaEIsaUJBQWlCO2dEQUNqQnJELE9BQU9xRCxNQUFNLElBQUksT0FBTztnREFDeEJwRCxNQUFNOzRDQUNSLE9BQU8sSUFBSW9ELElBQUksR0FBRztnREFDaEIsZUFBZTtnREFDZnJELE9BQU9xRCxNQUFNLElBQUksUUFBUTtnREFDekJwRCxNQUFNb0QsTUFBTSxJQUFJLE9BQU87NENBQ3pCLE9BQU87Z0RBQ0wsZUFBZTtnREFDZnJELE9BQU9xRCxNQUFNLElBQUksT0FBTztnREFDeEJwRCxNQUFNOzRDQUNSOzRDQUVBLHFCQUNFLDhEQUFDbEQ7Z0RBRUNDLFdBQVU7Z0RBQ1ZULE9BQU87b0RBQ0x5RDtvREFDQUM7b0RBQ0EvQyxpQkFBaUJnRyxPQUFPRixZQUFZO29EQUNwQ1MsV0FBVyxDQUFDLFFBQVEsRUFBRSxJQUFJSixJQUFJLElBQUksc0JBQXNCLENBQUM7b0RBQ3pESyxnQkFBZ0IsR0FBR0wsSUFBSSxJQUFJLENBQUMsQ0FBQztvREFDN0JNLFNBQVM7b0RBQ1Q3SCxRQUFRO29EQUNSaUcsV0FBVyxDQUFDLFFBQVEsRUFBRW1CLE9BQU9GLFlBQVksQ0FBQyxVQUFVLEVBQUVFLE9BQU9GLFlBQVksRUFBRTtvREFDM0VZLGNBQWM7Z0RBQ2hCOytDQVpLLENBQUMsUUFBUSxFQUFFUCxHQUFHOzs7Ozt3Q0FlekI7Ozs7OztrREFJRiw4REFBQ3RHO3dDQUNDQyxXQUFVO3dDQUNWVCxPQUFPOzRDQUNMc0YsWUFBWSxDQUFDLG1DQUFtQyxFQUFFcUIsT0FBT0QsU0FBUyxDQUFDLE9BQU8sRUFBRUMsT0FBT0QsU0FBUyxDQUFDLHdCQUF3QixDQUFDOzRDQUN0SFEsV0FBVzs0Q0FDWEcsY0FBYzt3Q0FDaEI7Ozs7Ozs7O3dCQUlSOzs7Ozs7a0NBSU4sOERBQUM3Rzt3QkFBSUMsV0FBVTs7NEJBQ1o4QixLQUFLK0UsU0FBUyxpQkFDYiw4REFBQ0M7Z0NBQ0NDLEtBQUtqRixLQUFLK0UsU0FBUztnQ0FDbkJHLEtBQUtsRixLQUFLa0QsSUFBSTtnQ0FDZGhGLFdBQVU7Z0NBQ1ZpSCxTQUFTLENBQUN6RjtvQ0FDUkEsRUFBRUMsTUFBTSxDQUFDbEMsS0FBSyxDQUFDMkgsT0FBTyxHQUFHO29DQUN6QjFGLEVBQUVDLE1BQU0sQ0FBQzBGLFdBQVcsQ0FBQzVILEtBQUssQ0FBQzJILE9BQU8sR0FBRztnQ0FDdkM7Ozs7O3VDQUVBOzBDQUdKLDhEQUFDbkg7Z0NBQ0NDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQzhCLEtBQUsrRSxTQUFTLEdBQUcsVUFBVSxVQUFVO2dDQUNsRXRILE9BQU87b0NBQUVnRyxjQUFjO2dDQUFPOzBDQUU5Qiw0RUFBQzZCO29DQUFTckwsTUFBTStGLEtBQUsvRixJQUFJOzs7Ozs7Ozs7Ozs7Ozs7OztvQkFLNUIrRixLQUFLdUYsUUFBUSxHQUFHLG1CQUNmLDhEQUFDdEg7d0JBQUlDLFdBQVU7a0NBQ2IsNEVBQUNEOzRCQUNDQyxXQUFVOzRCQUNWVCxPQUFPO2dDQUNMVyxpQkFBaUI7Z0NBQ2pCcUYsY0FBYztnQ0FDZCtCLFdBQVc7Z0NBQ1hDLFlBQVk7Z0NBQ1pDLGFBQWE7Z0NBQ2JDLFdBQVc7NEJBQ2I7c0NBRUMzRixLQUFLdUYsUUFBUTs7Ozs7Ozs7Ozs7a0NBTXBCLDhEQUFDdEg7d0JBQUlDLFdBQVU7a0NBQ2IsNEVBQUNNOzRCQUNDQyxTQUFTLENBQUNpQjtnQ0FDUkEsRUFBRWtHLGVBQWU7Z0NBQ2pCL0UsZUFBZSxDQUFDRDs0QkFDbEI7NEJBQ0ExQyxXQUFXLENBQUMsdURBQXVELEVBQ2pFMEMsY0FDSSx3Q0FDQSwrREFDSjtzQ0FFREEsY0FBYyxPQUFPOzs7Ozs7Ozs7Ozs7Ozs7OztZQU0zQlIsMkJBQ0MsOERBQUNuQztnQkFDQ0MsV0FBVTtnQkFDVlQsT0FBTztvQkFDTHlELE1BQU1aLGFBQWFFLENBQUMsR0FBR0YsYUFBYUksS0FBSztvQkFDekNTLEtBQUtiLGFBQWFHLENBQUM7b0JBQ25Cb0YsZUFBZTtvQkFDZkMsV0FBV3hGLGFBQWFLLE1BQU07b0JBQzlCeUUsU0FBUztvQkFDVFcsZUFBZTtvQkFDZkMsZ0JBQWdCO2dCQUNsQjswQkFFQSw0RUFBQy9IO29CQUFJQyxXQUFVOztzQ0FFYiw4REFBQ0Q7c0NBQ0MsNEVBQUNBO2dDQUFJQyxXQUFVOzBDQUFxQzhCLEtBQUtrRCxJQUFJOzs7Ozs7Ozs7OztzQ0FJL0QsOERBQUNqRjs0QkFBSUMsV0FBVTs7OENBQ2IsOERBQUNEOztzREFDQyw4REFBQ0E7NENBQUlDLFdBQVU7c0RBQW9DOzs7Ozs7c0RBQ25ELDhEQUFDRDs0Q0FBSUMsV0FBVTtzREFBc0I4QixLQUFLL0YsSUFBSTs7Ozs7Ozs7Ozs7OzhDQUVoRCw4REFBQ2dFOztzREFDQyw4REFBQ0E7NENBQUlDLFdBQVU7c0RBQW9DOzs7Ozs7c0RBQ25ELDhEQUFDRDs0Q0FBSUMsV0FBVTtzREFBc0I4QixLQUFLbUQsUUFBUTs7Ozs7Ozs7Ozs7O2dDQUVuRG5ELEtBQUtULElBQUksa0JBQ1IsOERBQUN0Qjs7c0RBQ0MsOERBQUNBOzRDQUFJQyxXQUFVO3NEQUFvQzs7Ozs7O3NEQUNuRCw4REFBQ0Q7NENBQUlDLFdBQVU7O2dEQUNaOEIsS0FBSy9GLElBQUksS0FBSyxhQUFhK0YsS0FBS1QsSUFBSSxLQUFLLDZCQUN4Qyw4REFBQ0Y7b0RBQUtuQixXQUFVOzhEQUFrQjs7Ozs7O2dEQUVuQzhCLEtBQUtULElBQUk7Ozs7Ozs7Ozs7Ozs7Z0NBSWZTLEtBQUtpRyxFQUFFLGtCQUNOLDhEQUFDaEk7O3NEQUNDLDhEQUFDQTs0Q0FBSUMsV0FBVTtzREFBb0M7Ozs7OztzREFDbkQsOERBQUNEOzRDQUFJQyxXQUFVO3NEQUFzQjhCLEtBQUtpRyxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7c0NBTWxELDhEQUFDaEk7NEJBQUlDLFdBQVU7OzhDQUNiLDhEQUFDRDs7c0RBQ0MsOERBQUNBOzRDQUFJQyxXQUFVO3NEQUFvQzs7Ozs7O3NEQUNuRCw4REFBQ0Q7NENBQUlDLFdBQVU7c0RBQXNCOEIsS0FBS3FELFNBQVMsSUFBSTs7Ozs7Ozs7Ozs7O2dDQUV4RHJELEtBQUtrRyxJQUFJLGtCQUNSLDhEQUFDakk7O3NEQUNDLDhEQUFDQTs0Q0FBSUMsV0FBVTtzREFBb0M7Ozs7OztzREFDbkQsOERBQUNEOzRDQUFJQyxXQUFVO3NEQUFzQjhCLEtBQUtrRyxJQUFJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7d0JBTW5EbEcsS0FBS21HLFNBQVMsa0JBQ2IsOERBQUNsSTs7OENBQ0MsOERBQUNBO29DQUFJQyxXQUFVOzhDQUFvQzs7Ozs7OzhDQUNuRCw4REFBQ0Q7b0NBQUlDLFdBQVU7OENBQXNCOEIsS0FBS21HLFNBQVM7Ozs7Ozs7Ozs7Ozt3QkFLdERuRyxLQUFLL0YsSUFBSSxLQUFLLGFBQWErRixLQUFLa0csSUFBSSxJQUFJbEcsS0FBS2tHLElBQUksQ0FBQ2pKLFFBQVEsQ0FBQyxzQkFDMUQsOERBQUNnQjs7OENBQ0MsOERBQUNBO29DQUFJQyxXQUFVOzhDQUFvQzs7Ozs7OzhDQUNuRCw4REFBQ0Q7b0NBQUlDLFdBQVU7OENBQXFDOzs7Ozs7Ozs7Ozs7d0JBT3ZEOEIsS0FBS29ELFdBQVcsa0JBQ2YsOERBQUNuRjs7OENBQ0MsOERBQUNBO29DQUFJQyxXQUFVOzhDQUFvQzs7Ozs7OzhDQUNuRCw4REFBQ0Q7b0NBQUlDLFdBQVU7OENBQXNDOEIsS0FBS29ELFdBQVc7Ozs7Ozs7Ozs7Ozt3QkFLeEVwRCxLQUFLb0csV0FBVyxrQkFDZiw4REFBQ25JOzs4Q0FDQyw4REFBQ0E7b0NBQUlDLFdBQVU7OENBQW9DOzs7Ozs7OENBQ25ELDhEQUFDRDtvQ0FBSUMsV0FBVTs7d0NBQTRDO3dDQUFFOEIsS0FBS29HLFdBQVc7d0NBQUM7Ozs7Ozs7Ozs7Ozs7d0JBS2pGcEcsS0FBS3NELGFBQWEsa0JBQ2pCLDhEQUFDckY7OzhDQUNDLDhEQUFDQTtvQ0FBSUMsV0FBVTs4Q0FBb0M7Ozs7Ozs4Q0FDbkQsOERBQUNEO29DQUFJQyxXQUFVOzhDQUFzQmIsZUFBZTJDLEtBQUtzRCxhQUFhOzs7Ozs7Ozs7Ozs7c0NBSzFFLDhEQUFDckY7NEJBQUlDLFdBQVU7O2dDQUNaOEIsS0FBS3FHLFFBQVEsa0JBQ1osOERBQUNwSTs7c0RBQ0MsOERBQUNBOzRDQUFJQyxXQUFVO3NEQUFvQzs7Ozs7O3NEQUNuRCw4REFBQ0Q7NENBQUlDLFdBQVU7O2dEQUNaOEIsS0FBSy9GLElBQUksS0FBSywyQkFDYiw4REFBQ29GO29EQUFLbkIsV0FBVTs4REFBZTs7Ozs7O2dEQUVoQzhCLEtBQUtxRyxRQUFROzs7Ozs7Ozs7Ozs7O2dDQUluQnJHLEtBQUtzRyxZQUFZLGtCQUNoQiw4REFBQ3JJOztzREFDQyw4REFBQ0E7NENBQUlDLFdBQVU7c0RBQW9DOzs7Ozs7c0RBQ25ELDhEQUFDRDs0Q0FBSUMsV0FBVTs7Z0RBQ1o4QixLQUFLL0YsSUFBSSxLQUFLLDJCQUNiOztzRUFDRSw4REFBQ29GOzREQUFLbkIsV0FBVTtzRUFBZ0I7Ozs7OztzRUFDaEMsOERBQUNtQjs0REFBS25CLFdBQVU7c0VBQWdCOzs7Ozs7OztnREFHbkM4QixLQUFLc0csWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QkFPeEJ0RyxLQUFLdUcsS0FBSyxJQUFJdkcsS0FBS3VHLEtBQUssQ0FBQ3ZJLE1BQU0sR0FBRyxLQUFNLEtBQU13SSxXQUFXLElBQUl4RyxLQUFLd0csV0FBVyxDQUFDeEksTUFBTSxHQUFHLG1CQUN2Riw4REFBQ0M7OzhDQUNDLDhEQUFDQTtvQ0FBSUMsV0FBVTs4Q0FBb0M7Ozs7Ozs4Q0FDbkQsOERBQUNEO29DQUFJQyxXQUFVOzt3Q0FDWjhCLEtBQUt1RyxLQUFLLElBQUl2RyxLQUFLdUcsS0FBSyxDQUFDdkksTUFBTSxHQUFHLG1CQUNqQyw4REFBQ0M7NENBQUlDLFdBQVU7OzhEQUNiLDhEQUFDbUI7b0RBQUtuQixXQUFVOzhEQUFnQjs7Ozs7O2dEQUFhO2dEQUFFOEIsS0FBS3VHLEtBQUssQ0FBQ0UsSUFBSSxDQUFDOzs7Ozs7O3dDQUdsRXpHLEtBQUt3RyxXQUFXLElBQUl4RyxLQUFLd0csV0FBVyxDQUFDeEksTUFBTSxHQUFHLG1CQUM3Qyw4REFBQ0M7OzhEQUNDLDhEQUFDb0I7b0RBQUtuQixXQUFVOzhEQUFnQjs7Ozs7O2dEQUFtQjtnREFBRThCLEtBQUt3RyxXQUFXLENBQUNDLElBQUksQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV2pHO0FBRUEsdUNBQXVDO0FBQ3ZDLFNBQVNuQixTQUFTLEVBQUVyTCxJQUFJLEVBQUU7SUFDeEIsTUFBTXlNLG1CQUFtQjtRQUN2QixPQUFRek07WUFDTixLQUFLO2dCQUNILE9BQU87WUFDVCxLQUFLO2dCQUNILE9BQU87WUFDVCxLQUFLO2dCQUNILE9BQU87WUFDVDtnQkFDRSxPQUFPO1FBQ1g7SUFDRjtJQUVBLHFCQUNFLDhEQUFDZ0U7UUFBSUMsV0FBVTtrQkFDYiw0RUFBQzhHO1lBQ0NDLEtBQUt5QjtZQUNMeEIsS0FBSyxHQUFHakwsS0FBSyxVQUFVLENBQUM7WUFDeEJpRSxXQUFVOzs7Ozs7Ozs7OztBQUlsQiIsInNvdXJjZXMiOlsiL1VzZXJzL3JzdGlsbHcvRG9jdW1lbnRzL3RjZy12YXVsdC9wYWdlcy9jYXJkcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VSb3V0ZXIgfSBmcm9tICduZXh0L3JvdXRlcic7XG5pbXBvcnQgTGF5b3V0IGZyb20gJy4uL2NvbXBvbmVudHMvTGF5b3V0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ2FyZHMoKSB7XG4gIGNvbnN0IHJvdXRlciA9IHVzZVJvdXRlcigpO1xuICBjb25zdCB1c2VyID0ge1xuICAgIGVtYWlsOiAnbWVAcmFuZGFsbHN0aWxsd2VsbC5jb20nLFxuICAgIHJvbGU6ICd1c2VyJ1xuICB9O1xuXG4gIGNvbnN0IFtjYXJkcywgc2V0Q2FyZHNdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3QgW2xvYWRpbmdNb3JlLCBzZXRMb2FkaW5nTW9yZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzZWFyY2hRdWVyeSwgc2V0U2VhcmNoUXVlcnldID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBbc2VsZWN0ZWRUQ0csIHNldFNlbGVjdGVkVENHXSA9IHVzZVN0YXRlKCdhbGwnKTtcbiAgY29uc3QgW3NlbGVjdGVkUmFyaXR5LCBzZXRTZWxlY3RlZFJhcml0eV0gPSB1c2VTdGF0ZSgnYWxsJyk7XG4gIGNvbnN0IFtzZWxlY3RlZFNldCwgc2V0U2VsZWN0ZWRTZXRdID0gdXNlU3RhdGUoJ2FsbCcpO1xuICBjb25zdCBbc2VsZWN0ZWRWYWx1ZVJhbmdlLCBzZXRTZWxlY3RlZFZhbHVlUmFuZ2VdID0gdXNlU3RhdGUoJ2FsbCcpO1xuICBjb25zdCBbdmlld01vZGUsIHNldFZpZXdNb2RlXSA9IHVzZVN0YXRlKCdncmlkJyk7IC8vIGdyaWQgb3IgbGlzdFxuICBjb25zdCBbcGFnaW5hdGlvbiwgc2V0UGFnaW5hdGlvbl0gPSB1c2VTdGF0ZSh7XG4gICAgcGFnZTogMSxcbiAgICBsaW1pdDogNTAsXG4gICAgdG90YWw6IDAsXG4gICAgcGFnZXM6IDBcbiAgfSk7XG4gIGNvbnN0IFtmaWx0ZXJzLCBzZXRGaWx0ZXJzXSA9IHVzZVN0YXRlKHtcbiAgICBnYW1lczogW10sXG4gICAgcmFyaXRpZXM6IFtdLFxuICAgIHNldHM6IFtdXG4gIH0pO1xuICBjb25zdCBbaGFzTW9yZSwgc2V0SGFzTW9yZV0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3QgbG9hZGluZ01vcmVSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBoYXNNb3JlUmVmID0gdXNlUmVmKHRydWUpO1xuXG4gIC8vIEZldGNoIGNhcmRzIGZyb20gZGF0YWJhc2VcbiAgY29uc3QgZmV0Y2hDYXJkcyA9IGFzeW5jIChpc0xvYWRNb3JlID0gZmFsc2UpID0+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKGlzTG9hZE1vcmUpIHtcbiAgICAgICAgc2V0TG9hZGluZ01vcmUodHJ1ZSk7XG4gICAgICAgIGxvYWRpbmdNb3JlUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiBzZWFyY2hRdWVyeSxcbiAgICAgICAgZ2FtZTogc2VsZWN0ZWRUQ0csXG4gICAgICAgIHJhcml0eTogc2VsZWN0ZWRSYXJpdHksXG4gICAgICAgIHNldDogc2VsZWN0ZWRTZXQsXG4gICAgICAgIG1pblByaWNlOiBzZWxlY3RlZFZhbHVlUmFuZ2UgPT09ICd1bmRlci01MCcgPyAnMCcgOiBcbiAgICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZVJhbmdlID09PSAnNTAtMTAwJyA/ICc1MCcgOiBcbiAgICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZVJhbmdlID09PSAnMTAwLTUwMCcgPyAnMTAwJyA6IFxuICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlUmFuZ2UgPT09ICc1MDAtMTAwMCcgPyAnNTAwJyA6IFxuICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlUmFuZ2UgPT09ICdvdmVyLTEwMDAnID8gJzEwMDAnIDogJycsXG4gICAgICAgIG1heFByaWNlOiBzZWxlY3RlZFZhbHVlUmFuZ2UgPT09ICc1MC0xMDAnID8gJzEwMCcgOiBcbiAgICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZVJhbmdlID09PSAnMTAwLTUwMCcgPyAnNTAwJyA6IFxuICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlUmFuZ2UgPT09ICc1MDAtMTAwMCcgPyAnMTAwMCcgOiAnJyxcbiAgICAgICAgcGFnZTogcGFnaW5hdGlvbi5wYWdlLnRvU3RyaW5nKCksXG4gICAgICAgIGxpbWl0OiBwYWdpbmF0aW9uLmxpbWl0LnRvU3RyaW5nKClcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAvYXBpL2NhcmRzL3NlYXJjaD8ke3BhcmFtc31gKTtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG5cbiAgICAgIGlmIChkYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgXG4gICAgICAgIFxuICAgICAgICBpZiAoaXNMb2FkTW9yZSkge1xuICAgICAgICAgIHNldENhcmRzKHByZXZDYXJkcyA9PiBbLi4ucHJldkNhcmRzLCAuLi5kYXRhLmNhcmRzXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0Q2FyZHMoZGF0YS5jYXJkcyk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0UGFnaW5hdGlvbihkYXRhLnBhZ2luYXRpb24pO1xuICAgICAgICBzZXRGaWx0ZXJzKGRhdGEuZmlsdGVycyk7XG4gICAgICAgIGNvbnN0IGhhc01vcmVDYXJkcyA9IGRhdGEucGFnaW5hdGlvbi5wYWdlIDwgZGF0YS5wYWdpbmF0aW9uLnBhZ2VzO1xuICAgICAgICBzZXRIYXNNb3JlKGhhc01vcmVDYXJkcyk7XG4gICAgICAgIGhhc01vcmVSZWYuY3VycmVudCA9IGhhc01vcmVDYXJkcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCBjYXJkczonLCBkYXRhLmVycm9yKTtcbiAgICAgICAgaWYgKCFpc0xvYWRNb3JlKSB7XG4gICAgICAgICAgc2V0Q2FyZHMoW10pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGNhcmRzOicsIGVycm9yKTtcbiAgICAgIGlmICghaXNMb2FkTW9yZSkge1xuICAgICAgICBzZXRDYXJkcyhbXSk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgICAgc2V0TG9hZGluZ01vcmUoZmFsc2UpO1xuICAgICAgbG9hZGluZ01vcmVSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICAvLyBJbml0aWFsIGxvYWRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRQYWdpbmF0aW9uKHByZXYgPT4gKHsgLi4ucHJldiwgcGFnZTogMSB9KSk7XG4gICAgc2V0Q2FyZHMoW10pO1xuICAgIHNldEhhc01vcmUodHJ1ZSk7XG4gICAgaGFzTW9yZVJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICBmZXRjaENhcmRzKGZhbHNlKTtcbiAgfSwgW3NlbGVjdGVkVENHLCBzZWxlY3RlZFJhcml0eSwgc2VsZWN0ZWRTZXQsIHNlbGVjdGVkVmFsdWVSYW5nZV0pO1xuXG4gIC8vIEhhbmRsZSBzZWFyY2ggd2l0aCBkZWJvdW5jZVxuICBjb25zdCBbc2VhcmNoVGltZW91dCwgc2V0U2VhcmNoVGltZW91dF0gPSB1c2VTdGF0ZShudWxsKTtcbiAgXG4gIGNvbnN0IGhhbmRsZVNlYXJjaENoYW5nZSA9ICh2YWx1ZSkgPT4ge1xuICAgIHNldFNlYXJjaFF1ZXJ5KHZhbHVlKTtcbiAgICBcbiAgICAvLyBDbGVhciBleGlzdGluZyB0aW1lb3V0XG4gICAgaWYgKHNlYXJjaFRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dChzZWFyY2hUaW1lb3V0KTtcbiAgICB9XG4gICAgXG4gICAgLy8gU2V0IG5ldyB0aW1lb3V0IGZvciBzZWFyY2hcbiAgICBjb25zdCBuZXdUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZXRQYWdpbmF0aW9uKHByZXYgPT4gKHsgLi4ucHJldiwgcGFnZTogMSB9KSk7XG4gICAgICBzZXRDYXJkcyhbXSk7XG4gICAgICBzZXRIYXNNb3JlKHRydWUpO1xuICAgICAgaGFzTW9yZVJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgIGZldGNoQ2FyZHMoZmFsc2UpO1xuICAgIH0sIDUwMCk7IC8vIDUwMG1zIGRlbGF5XG4gICAgXG4gICAgc2V0U2VhcmNoVGltZW91dChuZXdUaW1lb3V0KTtcbiAgfTtcblxuICAvLyBDbGVhbnVwIHRpbWVvdXQgb24gdW5tb3VudFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoc2VhcmNoVGltZW91dCkge1xuICAgICAgICBjbGVhclRpbWVvdXQoc2VhcmNoVGltZW91dCk7XG4gICAgICB9XG4gICAgfTtcbiAgfSwgW3NlYXJjaFRpbWVvdXRdKTtcblxuICAvLyBMb2FkIG1vcmUgY2FyZHNcbiAgY29uc3QgbG9hZE1vcmVDYXJkcyA9IGFzeW5jICgpID0+IHtcblxuICAgIFxuICAgIGlmICghbG9hZGluZ01vcmVSZWYuY3VycmVudCAmJiBoYXNNb3JlUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNvbnN0IG5leHRQYWdlID0gcGFnaW5hdGlvbi5wYWdlICsgMTtcblxuICAgICAgc2V0UGFnaW5hdGlvbihwcmV2ID0+ICh7IC4uLnByZXYsIHBhZ2U6IG5leHRQYWdlIH0pKTtcbiAgICAgIFxuICAgICAgLy8gVXNlIHRoZSBuZXh0IHBhZ2UgbnVtYmVyIGRpcmVjdGx5IGluIHRoZSBmZXRjaFxuICAgICAgdHJ5IHtcbiAgICAgICAgc2V0TG9hZGluZ01vcmUodHJ1ZSk7XG4gICAgICAgIGxvYWRpbmdNb3JlUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICBcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7XG4gICAgICAgICAgcXVlcnk6IHNlYXJjaFF1ZXJ5LFxuICAgICAgICAgIGdhbWU6IHNlbGVjdGVkVENHLFxuICAgICAgICAgIHJhcml0eTogc2VsZWN0ZWRSYXJpdHksXG4gICAgICAgICAgc2V0OiBzZWxlY3RlZFNldCxcbiAgICAgICAgICBtaW5QcmljZTogc2VsZWN0ZWRWYWx1ZVJhbmdlID09PSAndW5kZXItNTAnID8gJzAnIDogXG4gICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZVJhbmdlID09PSAnNTAtMTAwJyA/ICc1MCcgOiBcbiAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlUmFuZ2UgPT09ICcxMDAtNTAwJyA/ICcxMDAnIDogXG4gICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZVJhbmdlID09PSAnNTAwLTEwMDAnID8gJzUwMCcgOiBcbiAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlUmFuZ2UgPT09ICdvdmVyLTEwMDAnID8gJzEwMDAnIDogJycsXG4gICAgICAgICAgbWF4UHJpY2U6IHNlbGVjdGVkVmFsdWVSYW5nZSA9PT0gJzUwLTEwMCcgPyAnMTAwJyA6IFxuICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWVSYW5nZSA9PT0gJzEwMC01MDAnID8gJzUwMCcgOiBcbiAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlUmFuZ2UgPT09ICc1MDAtMTAwMCcgPyAnMTAwMCcgOiAnJyxcbiAgICAgICAgICBwYWdlOiBuZXh0UGFnZS50b1N0cmluZygpLFxuICAgICAgICAgIGxpbWl0OiBwYWdpbmF0aW9uLmxpbWl0LnRvU3RyaW5nKClcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgL2FwaS9jYXJkcy9zZWFyY2g/JHtwYXJhbXN9YCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG5cbiAgICAgICAgaWYgKGRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgIFxuICAgICAgICAgIHNldENhcmRzKHByZXZDYXJkcyA9PiBbLi4ucHJldkNhcmRzLCAuLi5kYXRhLmNhcmRzXSk7XG4gICAgICAgICAgc2V0UGFnaW5hdGlvbihkYXRhLnBhZ2luYXRpb24pO1xuICAgICAgICAgIHNldEZpbHRlcnMoZGF0YS5maWx0ZXJzKTtcbiAgICAgICAgICBjb25zdCBoYXNNb3JlQ2FyZHMgPSBkYXRhLnBhZ2luYXRpb24ucGFnZSA8IGRhdGEucGFnaW5hdGlvbi5wYWdlcztcbiAgICAgICAgICBzZXRIYXNNb3JlKGhhc01vcmVDYXJkcyk7XG4gICAgICAgICAgaGFzTW9yZVJlZi5jdXJyZW50ID0gaGFzTW9yZUNhcmRzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCBtb3JlIGNhcmRzOicsIGRhdGEuZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBtb3JlIGNhcmRzOicsIGVycm9yKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHNldExvYWRpbmdNb3JlKGZhbHNlKTtcbiAgICAgICAgbG9hZGluZ01vcmVSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAvLyBVcGRhdGUgcmVmcyB3aGVuIHN0YXRlIGNoYW5nZXNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBoYXNNb3JlUmVmLmN1cnJlbnQgPSBoYXNNb3JlO1xuICAgIGxvYWRpbmdNb3JlUmVmLmN1cnJlbnQgPSBsb2FkaW5nTW9yZTtcbiAgfSwgW2hhc01vcmUsIGxvYWRpbmdNb3JlXSk7XG5cbiAgLy8gSW50ZXJzZWN0aW9uIE9ic2VydmVyIGZvciBpbmZpbml0ZSBzY3JvbGxcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihcbiAgICAgIChlbnRyaWVzKSA9PiB7XG4gICAgICAgIGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcgJiYgaGFzTW9yZVJlZi5jdXJyZW50ICYmICFsb2FkaW5nTW9yZVJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBsb2FkTW9yZUNhcmRzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHJvb3RNYXJnaW46ICc1MHB4JyxcbiAgICAgICAgdGhyZXNob2xkOiAwLjFcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3Qgc2V0dXBPYnNlcnZlciA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHNlbnRpbmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luZmluaXRlLXNjcm9sbC1zZW50aW5lbCcpO1xuICAgICAgaWYgKHNlbnRpbmVsKSB7XG4gICAgICAgIG9ic2VydmVyLm9ic2VydmUoc2VudGluZWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0VGltZW91dChzZXR1cE9ic2VydmVyLCAxMDApO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBzZXR1cE9ic2VydmVyKCk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29uc3Qgc2VudGluZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5maW5pdGUtc2Nyb2xsLXNlbnRpbmVsJyk7XG4gICAgICBpZiAoc2VudGluZWwpIHtcbiAgICAgICAgb2JzZXJ2ZXIudW5vYnNlcnZlKHNlbnRpbmVsKTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgY29uc3QgZ2V0UmFyaXR5Q29sb3IgPSAocmFyaXR5KSA9PiB7XG4gICAgLy8gTWFwIGRhdGFiYXNlIHJhcml0eSB2YWx1ZXMgdG8gY29sb3JzXG4gICAgY29uc3QgcmFyaXR5Q29sb3JNYXAgPSB7XG4gICAgICAnY29tbW9uJzogJyM2QjcyODAnLFxuICAgICAgJ3VuY29tbW9uJzogJyMxMEI5ODEnLFxuICAgICAgJ3JhcmUnOiAnI0Y1OUUwQicsXG4gICAgICAnbXl0aGljJzogJyNGRkQ3MDAnLFxuICAgICAgJ2hvbG9ncmFwaGljJzogJyNGRjZCNkInLFxuICAgICAgJ2VuY2hhbnRlZCc6ICcjQTg1NUY3JyxcbiAgICAgICdzZWNyZXQgcmFyZSc6ICcjRkY2QjZCJyxcbiAgICAgICd1bHRyYSByYXJlJzogJyNBODU1RjcnXG4gICAgfTtcbiAgICByZXR1cm4gcmFyaXR5Q29sb3JNYXBbcmFyaXR5Py50b0xvd2VyQ2FzZSgpXSB8fCAnIzZCNzI4MCc7XG4gIH07XG5cbiAgY29uc3QgdGNnT3B0aW9ucyA9IFtcbiAgICB7IHZhbHVlOiAnTVRHJywgbGFiZWw6ICdNYWdpYzogVGhlIEdhdGhlcmluZycsIGNvbG9yOiAncHVycGxlJywgaWNvbjogJ/CflK4nIH0sXG4gICAgeyB2YWx1ZTogJ1Bva2Vtb24nLCBsYWJlbDogJ1Bva2Vtb24nLCBjb2xvcjogJ2JsdWUnLCBpY29uOiAn4pqhJyB9LFxuICAgIHsgdmFsdWU6ICdMb3JjYW5hJywgbGFiZWw6ICdEaXNuZXkgTG9yY2FuYScsIGNvbG9yOiAncGluaycsIGljb246ICfinKgnIH1cbiAgXTtcblxuICBjb25zdCByYXJpdHlPcHRpb25zID0gW1xuICAgIHsgdmFsdWU6ICdhbGwnLCBsYWJlbDogJ0FsbCBSYXJpdGllcycgfSxcbiAgICB7IHZhbHVlOiAnY29tbW9uJywgbGFiZWw6ICdDb21tb24nIH0sXG4gICAgeyB2YWx1ZTogJ3VuY29tbW9uJywgbGFiZWw6ICdVbmNvbW1vbicgfSxcbiAgICB7IHZhbHVlOiAncmFyZScsIGxhYmVsOiAnUmFyZScgfSxcbiAgICB7IHZhbHVlOiAnbXl0aGljJywgbGFiZWw6ICdNeXRoaWMnIH0sXG4gICAgeyB2YWx1ZTogJ2VuY2hhbnRlZCcsIGxhYmVsOiAnRW5jaGFudGVkJyB9LFxuICAgIC4uLmZpbHRlcnMucmFyaXRpZXMuZmlsdGVyKHJhcml0eSA9PiBcbiAgICAgICFbJ2FsbCcsICdjb21tb24nLCAndW5jb21tb24nLCAncmFyZScsICdteXRoaWMnLCAnZW5jaGFudGVkJ10uaW5jbHVkZXMocmFyaXR5KVxuICAgICkubWFwKHJhcml0eSA9PiAoe1xuICAgICAgdmFsdWU6IHJhcml0eSxcbiAgICAgIGxhYmVsOiByYXJpdHksXG4gICAgICBjb2xvcjogZ2V0UmFyaXR5Q29sb3IocmFyaXR5KVxuICAgIH0pKVxuICBdO1xuXG4gIGNvbnN0IHNldE9wdGlvbnMgPSBbXG4gICAgeyB2YWx1ZTogJ2FsbCcsIGxhYmVsOiAnQWxsIFNldHMnIH0sXG4gICAgLi4uZmlsdGVycy5zZXRzLm1hcChzZXQgPT4gKHtcbiAgICAgIHZhbHVlOiBzZXQsXG4gICAgICBsYWJlbDogc2V0XG4gICAgfSkpXG4gIF07XG5cbiAgY29uc3QgdmFsdWVSYW5nZU9wdGlvbnMgPSBbXG4gICAgeyB2YWx1ZTogJ2FsbCcsIGxhYmVsOiAnQWxsIFZhbHVlcycgfSxcbiAgICB7IHZhbHVlOiAndW5kZXItNTAnLCBsYWJlbDogJ1VuZGVyICQ1MCcgfSxcbiAgICB7IHZhbHVlOiAnNTAtMTAwJywgbGFiZWw6ICckNTAgLSAkMTAwJyB9LFxuICAgIHsgdmFsdWU6ICcxMDAtNTAwJywgbGFiZWw6ICckMTAwIC0gJDUwMCcgfSxcbiAgICB7IHZhbHVlOiAnNTAwLTEwMDAnLCBsYWJlbDogJyQ1MDAgLSAkMSwwMDAnIH0sXG4gICAgeyB2YWx1ZTogJ292ZXItMTAwMCcsIGxhYmVsOiAnT3ZlciAkMSwwMDAnIH1cbiAgXTtcblxuXG5cbiAgY29uc3QgZm9ybWF0Q3VycmVuY3kgPSAoYW1vdW50KSA9PiB7XG4gICAgcmV0dXJuIG5ldyBJbnRsLk51bWJlckZvcm1hdCgnZW4tVVMnLCB7XG4gICAgICBzdHlsZTogJ2N1cnJlbmN5JyxcbiAgICAgIGN1cnJlbmN5OiAnVVNEJ1xuICAgIH0pLmZvcm1hdChhbW91bnQpO1xuICB9O1xuXG4gIGNvbnN0IGdldFJhcml0eUxhYmVsID0gKHJhcml0eSkgPT4ge1xuICAgIGNvbnN0IHJhcml0eU9wdGlvbiA9IHJhcml0eU9wdGlvbnMuZmluZChvcHRpb24gPT4gb3B0aW9uLnZhbHVlID09PSByYXJpdHkpO1xuICAgIHJldHVybiByYXJpdHlPcHRpb24gPyByYXJpdHlPcHRpb24ubGFiZWwgOiByYXJpdHk7XG4gIH07XG5cblxuXG4gIGlmIChsb2FkaW5nICYmIGNhcmRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAoXG4gICAgICA8TGF5b3V0IHVzZXI9e3VzZXJ9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIG1pbi1oLXNjcmVlblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYW5pbWF0ZS1zcGluIHJvdW5kZWQtZnVsbCBoLTMyIHctMzIgYm9yZGVyLWItMlwiIHN0eWxlPXt7IGJvcmRlckNvbG9yOiAndmFyKC0tdGV4dC1hY2NlbnQpJyB9fT48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L0xheW91dD5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8TGF5b3V0IHVzZXI9e3VzZXJ9PlxuICAgICAgey8qIEhlYWRlciAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC02XCIgc3R5bGU9e3sgYmFja2dyb3VuZENvbG9yOiAndmFyKC0tYmctc2Vjb25kYXJ5KScsIGJvcmRlckJvdHRvbTogJzFweCBzb2xpZCB2YXIoLS1ib3JkZXIpJyB9fT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRleHQtM3hsIGZvbnQtYm9sZCBtYi0yXCIgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS10ZXh0LXByaW1hcnkpJyB9fT5cbiAgICAgICAgICAgICAgQ2FyZHNcbiAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWxnXCIgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS10ZXh0LXNlY29uZGFyeSknIH19PlxuICAgICAgICAgICAgICBCcm93c2UgYW5kIG1hbmFnZSB5b3VyIGNhcmQgY29sbGVjdGlvblxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBzcGFjZS14LTRcIj5cbiAgICAgICAgICAgIDxidXR0b24gXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFZpZXdNb2RlKCdncmlkJyl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YHAtMiByb3VuZGVkLXhsIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMCAke1xuICAgICAgICAgICAgICAgIHZpZXdNb2RlID09PSAnZ3JpZCcgXG4gICAgICAgICAgICAgICAgICA/ICdzaGFkb3ctbGcnIFxuICAgICAgICAgICAgICAgICAgOiAnaG92ZXI6c2hhZG93LW1kJ1xuICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHZpZXdNb2RlID09PSAnZ3JpZCcgPyAndmFyKC0tYmctdGVydGlhcnkpJyA6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgY29sb3I6IHZpZXdNb2RlID09PSAnZ3JpZCcgPyAndmFyKC0tdGV4dC1wcmltYXJ5KScgOiAndmFyKC0tdGV4dC1zZWNvbmRhcnkpJ1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cImgtNiB3LTZcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNNCA2YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJ2MmEyIDIgMCAwMS0yIDJINmEyIDIgMCAwMS0yLTJWNnpNMTQgNmEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAyaC0yYTIgMiAwIDAxLTItMlY2ek00IDE2YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJ2MmEyIDIgMCAwMS0yIDJINmEyIDIgMCAwMS0yLTJ2LTJ6TTE0IDE2YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJ2MmEyIDIgMCAwMS0yIDJoLTJhMiAyIDAgMDEtMi0ydi0yelwiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIFxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRWaWV3TW9kZSgnbGlzdCcpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2BwLTIgcm91bmRlZC14bCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDAgJHtcbiAgICAgICAgICAgICAgICB2aWV3TW9kZSA9PT0gJ2xpc3QnIFxuICAgICAgICAgICAgICAgICAgPyAnc2hhZG93LWxnJyBcbiAgICAgICAgICAgICAgICAgIDogJ2hvdmVyOnNoYWRvdy1tZCdcbiAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB2aWV3TW9kZSA9PT0gJ2xpc3QnID8gJ3ZhcigtLWJnLXRlcnRpYXJ5KScgOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgIGNvbG9yOiB2aWV3TW9kZSA9PT0gJ2xpc3QnID8gJ3ZhcigtLXRleHQtcHJpbWFyeSknIDogJ3ZhcigtLXRleHQtc2Vjb25kYXJ5KSdcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJoLTYgdy02XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZVdpZHRoPXsyfSBkPVwiTTQgNmgxNk00IDEwaDE2TTQgMTRoMTZNNCAxOGgxNlwiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBRdWljayBGaWx0ZXJzICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTZcIiBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6ICd2YXIoLS1iZy1zZWNvbmRhcnkpJyB9fT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi00XCI+XG4gICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZCBtYi0zXCIgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS10ZXh0LXByaW1hcnkpJyB9fT5cbiAgICAgICAgICAgIFF1aWNrIEZpbHRlcnNcbiAgICAgICAgICA8L2gzPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LXdyYXAgZ2FwLTNcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2VsZWN0ZWRUQ0coJ2FsbCcpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2BweC00IHB5LTIgcm91bmRlZC14bCBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDAgJHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFRDRyA9PT0gJ2FsbCcgXG4gICAgICAgICAgICAgICAgICA/ICdzaGFkb3ctbGcnIFxuICAgICAgICAgICAgICAgICAgOiAnaG92ZXI6c2hhZG93LW1kJ1xuICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHNlbGVjdGVkVENHID09PSAnYWxsJyA/ICd2YXIoLS1iZy10ZXJ0aWFyeSknIDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICBjb2xvcjogc2VsZWN0ZWRUQ0cgPT09ICdhbGwnID8gJ3ZhcigtLXRleHQtcHJpbWFyeSknIDogJ3ZhcigtLXRleHQtc2Vjb25kYXJ5KScsXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkIHZhcigtLWJvcmRlciknXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEFsbCBHYW1lc1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB7dGNnT3B0aW9ucy5tYXAob3B0aW9uID0+IChcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGtleT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNlbGVjdGVkVENHKG9wdGlvbi52YWx1ZSl9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcHgtNCBweS0yIHJvdW5kZWQteGwgZm9udC1tZWRpdW0gdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yICR7XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZFRDRyA9PT0gb3B0aW9uLnZhbHVlIFxuICAgICAgICAgICAgICAgICAgICA/ICdzaGFkb3ctbGcnIFxuICAgICAgICAgICAgICAgICAgICA6ICdob3ZlcjpzaGFkb3ctbWQnXG4gICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogc2VsZWN0ZWRUQ0cgPT09IG9wdGlvbi52YWx1ZSA/ICd2YXIoLS1iZy10ZXJ0aWFyeSknIDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiBzZWxlY3RlZFRDRyA9PT0gb3B0aW9uLnZhbHVlID8gJ3ZhcigtLXRleHQtcHJpbWFyeSknIDogJ3ZhcigtLXRleHQtc2Vjb25kYXJ5KScsXG4gICAgICAgICAgICAgICAgICBib3JkZXI6ICcxcHggc29saWQgdmFyKC0tYm9yZGVyKSdcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4+e29wdGlvbi5pY29ufTwvc3Bhbj5cbiAgICAgICAgICAgICAgICB7b3B0aW9uLmxhYmVsfVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7LyogQWR2YW5jZWQgRmlsdGVycyAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy00IGdhcC00XCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIG1iLTJcIiBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLXRleHQtcHJpbWFyeSknIH19PlxuICAgICAgICAgICAgICBTZWFyY2hcbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBjYXJkcy4uLlwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic2VhcmNoLWJhciB3LWZ1bGwgcHItMTJcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXtzZWFyY2hRdWVyeX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZVNlYXJjaENoYW5nZShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgb25LZXlQcmVzcz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICBzZXRQYWdpbmF0aW9uKHByZXYgPT4gKHsgLi4ucHJldiwgcGFnZTogMSB9KSk7XG4gICAgICAgICAgICAgICAgICAgIHNldENhcmRzKFtdKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0SGFzTW9yZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaGFzTW9yZVJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hDYXJkcyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIHNldFBhZ2luYXRpb24ocHJldiA9PiAoeyAuLi5wcmV2LCBwYWdlOiAxIH0pKTtcbiAgICAgICAgICAgICAgICAgIHNldENhcmRzKFtdKTtcbiAgICAgICAgICAgICAgICAgIHNldEhhc01vcmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICBoYXNNb3JlUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgZmV0Y2hDYXJkcyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSByaWdodC0yIHRvcC0xLzIgdHJhbnNmb3JtIC10cmFuc2xhdGUteS0xLzIgcC0yIHJvdW5kZWQtbGcgaG92ZXI6Ymctb3BhY2l0eS0yMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDBcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogJ3ZhcigtLWJnLXRlcnRpYXJ5KScgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwidy00IGgtNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZVdpZHRoPXsyfSBkPVwiTTIxIDIxbC02LTZtMi01YTcgNyAwIDExLTE0IDAgNyA3IDAgMDExNCAwelwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIG1iLTJcIiBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLXRleHQtcHJpbWFyeSknIH19PlxuICAgICAgICAgICAgICBSYXJpdHlcbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgIHZhbHVlPXtzZWxlY3RlZFJhcml0eX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWxlY3RlZFJhcml0eShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImlucHV0LWZpZWxkIHctZnVsbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtyYXJpdHlPcHRpb25zLm1hcChvcHRpb24gPT4gKFxuICAgICAgICAgICAgICAgIDxvcHRpb24ga2V5PXtvcHRpb24udmFsdWV9IHZhbHVlPXtvcHRpb24udmFsdWV9PlxuICAgICAgICAgICAgICAgICAge29wdGlvbi5sYWJlbH1cbiAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImJsb2NrIHRleHQtc20gZm9udC1tZWRpdW0gbWItMlwiIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tdGV4dC1wcmltYXJ5KScgfX0+XG4gICAgICAgICAgICAgIFNldFxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgdmFsdWU9e3NlbGVjdGVkU2V0fVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFNlbGVjdGVkU2V0KGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5wdXQtZmllbGQgdy1mdWxsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3NldE9wdGlvbnMubWFwKG9wdGlvbiA9PiAoXG4gICAgICAgICAgICAgICAgPG9wdGlvbiBrZXk9e29wdGlvbi52YWx1ZX0gdmFsdWU9e29wdGlvbi52YWx1ZX0+XG4gICAgICAgICAgICAgICAgICB7b3B0aW9uLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiYmxvY2sgdGV4dC1zbSBmb250LW1lZGl1bSBtYi0yXCIgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS10ZXh0LXByaW1hcnkpJyB9fT5cbiAgICAgICAgICAgICAgVmFsdWUgUmFuZ2VcbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgIHZhbHVlPXtzZWxlY3RlZFZhbHVlUmFuZ2V9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0U2VsZWN0ZWRWYWx1ZVJhbmdlKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5wdXQtZmllbGQgdy1mdWxsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3ZhbHVlUmFuZ2VPcHRpb25zLm1hcChvcHRpb24gPT4gKFxuICAgICAgICAgICAgICAgIDxvcHRpb24ga2V5PXtvcHRpb24udmFsdWV9IHZhbHVlPXtvcHRpb24udmFsdWV9PlxuICAgICAgICAgICAgICAgICAge29wdGlvbi5sYWJlbH1cbiAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgey8qIEFjdGl2ZSBGaWx0ZXJzIERpc3BsYXkgKi99XG4gICAgICAgIHsoc2VsZWN0ZWRUQ0cgIT09ICdhbGwnIHx8IHNlbGVjdGVkUmFyaXR5ICE9PSAnYWxsJyB8fCBzZWxlY3RlZFNldCAhPT0gJ2FsbCcgfHwgc2VsZWN0ZWRWYWx1ZVJhbmdlICE9PSAnYWxsJykgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMlwiPlxuICAgICAgICAgICAgICB7c2VsZWN0ZWRUQ0cgIT09ICdhbGwnICYmIChcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJweC0zIHB5LTEgcm91bmRlZC1mdWxsIHRleHQtc20gZm9udC1tZWRpdW1cIiBzdHlsZT17eyBcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3ZhcigtLWJnLXRlcnRpYXJ5KScsIFxuICAgICAgICAgICAgICAgICAgY29sb3I6ICd2YXIoLS10ZXh0LXByaW1hcnkpJyxcbiAgICAgICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCB2YXIoLS1ib3JkZXIpJ1xuICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAge3RjZ09wdGlvbnMuZmluZChvcHQgPT4gb3B0LnZhbHVlID09PSBzZWxlY3RlZFRDRyk/LmxhYmVsfVxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2VsZWN0ZWRUQ0coJ2FsbCcpfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtbC0yIGhvdmVyOm9wYWNpdHktNzBcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICDDl1xuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7c2VsZWN0ZWRSYXJpdHkgIT09ICdhbGwnICYmIChcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJweC0zIHB5LTEgcm91bmRlZC1mdWxsIHRleHQtc20gZm9udC1tZWRpdW1cIiBzdHlsZT17eyBcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3ZhcigtLWJnLXRlcnRpYXJ5KScsIFxuICAgICAgICAgICAgICAgICAgY29sb3I6ICd2YXIoLS10ZXh0LXByaW1hcnkpJyxcbiAgICAgICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCB2YXIoLS1ib3JkZXIpJ1xuICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAge3Jhcml0eU9wdGlvbnMuZmluZChvcHQgPT4gb3B0LnZhbHVlID09PSBzZWxlY3RlZFJhcml0eSk/LmxhYmVsfVxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2VsZWN0ZWRSYXJpdHkoJ2FsbCcpfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtbC0yIGhvdmVyOm9wYWNpdHktNzBcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICDDl1xuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7c2VsZWN0ZWRTZXQgIT09ICdhbGwnICYmIChcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJweC0zIHB5LTEgcm91bmRlZC1mdWxsIHRleHQtc20gZm9udC1tZWRpdW1cIiBzdHlsZT17eyBcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3ZhcigtLWJnLXRlcnRpYXJ5KScsIFxuICAgICAgICAgICAgICAgICAgY29sb3I6ICd2YXIoLS10ZXh0LXByaW1hcnkpJyxcbiAgICAgICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCB2YXIoLS1ib3JkZXIpJ1xuICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAge3NldE9wdGlvbnMuZmluZChvcHQgPT4gb3B0LnZhbHVlID09PSBzZWxlY3RlZFNldCk/LmxhYmVsfVxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2VsZWN0ZWRTZXQoJ2FsbCcpfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtbC0yIGhvdmVyOm9wYWNpdHktNzBcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICDDl1xuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7c2VsZWN0ZWRWYWx1ZVJhbmdlICE9PSAnYWxsJyAmJiAoXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHgtMyBweS0xIHJvdW5kZWQtZnVsbCB0ZXh0LXNtIGZvbnQtbWVkaXVtXCIgc3R5bGU9e3sgXG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd2YXIoLS1iZy10ZXJ0aWFyeSknLCBcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAndmFyKC0tdGV4dC1wcmltYXJ5KScsXG4gICAgICAgICAgICAgICAgICBib3JkZXI6ICcxcHggc29saWQgdmFyKC0tYm9yZGVyKSdcbiAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgIHt2YWx1ZVJhbmdlT3B0aW9ucy5maW5kKG9wdCA9PiBvcHQudmFsdWUgPT09IHNlbGVjdGVkVmFsdWVSYW5nZSk/LmxhYmVsfVxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2VsZWN0ZWRWYWx1ZVJhbmdlKCdhbGwnKX1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibWwtMiBob3ZlcjpvcGFjaXR5LTcwXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgw5dcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZFRDRygnYWxsJyk7XG4gICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZFJhcml0eSgnYWxsJyk7XG4gICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZFNldCgnYWxsJyk7XG4gICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZFZhbHVlUmFuZ2UoJ2FsbCcpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHgtMyBweS0xIHJvdW5kZWQtZnVsbCB0ZXh0LXNtIGZvbnQtbWVkaXVtIGhvdmVyOm9wYWNpdHktNzBcIiBzdHlsZT17eyBcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAndmFyKC0tdGV4dC1hY2NlbnQpJyxcbiAgICAgICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCB2YXIoLS1ib3JkZXIpJ1xuICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgIENsZWFyIEFsbFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBDYXJkcyBEaXNwbGF5ICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTYgcGItNjRcIj5cbiAgICAgICAgICAgICAgICB7Y2FyZHMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgcHktMTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC02eGwgbWItNFwiPvCfg488L2Rpdj5cbiAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgbWItMlwiIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tdGV4dC1wcmltYXJ5KScgfX0+XG4gICAgICAgICAgICAgIE5vIGNhcmRzIGZvdW5kXG4gICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibWItNlwiIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tdGV4dC1zZWNvbmRhcnkpJyB9fT5cbiAgICAgICAgICAgICAgVHJ5IGFkanVzdGluZyB5b3VyIHNlYXJjaCBvciBmaWx0ZXJzXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXt2aWV3TW9kZSA9PT0gJ2dyaWQnID8gJ2dyaWQgZ3JpZC1jb2xzLTIgc206Z3JpZC1jb2xzLTMgbWQ6Z3JpZC1jb2xzLTQgbGc6Z3JpZC1jb2xzLTUgeGw6Z3JpZC1jb2xzLTYgMnhsOmdyaWQtY29scy04IGdhcC02IHAtNicgOiAnc3BhY2UteS00J30+XG4gICAgICAgICAgICAgIHtjYXJkcy5tYXAoY2FyZCA9PiAoXG4gICAgICAgICAgICAgICAgPGRpdiBrZXk9e2NhcmQuaWR9IG9uQ2xpY2s9eygpID0+IHJvdXRlci5wdXNoKGAvY2FyZC8ke2NhcmQuaWR9YCl9IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxDYXJkM0QgXG4gICAgICAgICAgICAgICAgICAgIGNhcmQ9e2NhcmR9IFxuICAgICAgICAgICAgICAgICAgICB2aWV3TW9kZT17dmlld01vZGV9XG4gICAgICAgICAgICAgICAgICAgIGdldFJhcml0eUxhYmVsPXtnZXRSYXJpdHlMYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgZ2V0UmFyaXR5Q29sb3I9e2dldFJhcml0eUNvbG9yfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgey8qIEluZmluaXRlIFNjcm9sbCBMb2FkaW5nIEluZGljYXRvciAqL31cbiAgICAgICAgICAgIHtsb2FkaW5nTW9yZSAmJiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBweS04XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTNcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYW5pbWF0ZS1zcGluIHJvdW5kZWQtZnVsbCBoLTggdy04IGJvcmRlci1iLTJcIiBzdHlsZT17eyBib3JkZXJDb2xvcjogJ3ZhcigtLXRleHQtYWNjZW50KScgfX0+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLXRleHQtc2Vjb25kYXJ5KScgfX0+TG9hZGluZyBtb3JlIGNhcmRzLi4uPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHsvKiBJbmZpbml0ZSBTY3JvbGwgU2VudGluZWwgKi99XG4gICAgICAgICAgICA8ZGl2IGlkPVwiaW5maW5pdGUtc2Nyb2xsLXNlbnRpbmVsXCIgY2xhc3NOYW1lPVwiaC00IHctZnVsbFwiIC8+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHsvKiBMb2FkIE1vcmUgQnV0dG9uICovfVxuICAgICAgICAgICAge2hhc01vcmUgJiYgIWxvYWRpbmdNb3JlICYmIChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktY2VudGVyIHB5LThcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtsb2FkTW9yZUNhcmRzfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHgtNiBweS0zIGJnLWdyYWRpZW50LXRvLXIgZnJvbS1ibHVlLTUwMCB0by1wdXJwbGUtNjAwIHRleHQtd2hpdGUgcm91bmRlZC1sZyBob3Zlcjpmcm9tLWJsdWUtNjAwIGhvdmVyOnRvLXB1cnBsZS03MDAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwIHNoYWRvdy1sZyBob3ZlcjpzaGFkb3cteGxcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIExvYWQgTW9yZSBDYXJkc1xuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHsvKiBFbmQgb2YgcmVzdWx0cyBpbmRpY2F0b3IgKi99XG4gICAgICAgICAgICB7IWhhc01vcmUgJiYgY2FyZHMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBweS04XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgY29sb3I6ICd2YXIoLS10ZXh0LXNlY29uZGFyeSknIH19Pk5vIG1vcmUgY2FyZHMgdG8gbG9hZDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgXG5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvTGF5b3V0PlxuICApO1xufVxuXG4vLyAzRCBDYXJkIENvbXBvbmVudFxuZnVuY3Rpb24gQ2FyZDNEKHsgY2FyZCwgdmlld01vZGUsIGdldFJhcml0eUxhYmVsLCBnZXRSYXJpdHlDb2xvciB9KSB7XG4gIGNvbnN0IFtpc0hvdmVyZWQsIHNldElzSG92ZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtjYXJkUG9zaXRpb24sIHNldENhcmRQb3NpdGlvbl0gPSB1c2VTdGF0ZSh7IHg6IDAsIHk6IDAsIHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSk7XG4gIGNvbnN0IFtpc0Zhdm9yaXRlZCwgc2V0SXNGYXZvcml0ZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGhhbmRsZU1vdXNlTW92ZSA9IChlKSA9PiB7XG4gICAgY29uc3QgcmVjdCA9IGUuY3VycmVudFRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBzZXRDYXJkUG9zaXRpb24oe1xuICAgICAgeDogcmVjdC5sZWZ0LFxuICAgICAgeTogcmVjdC50b3AsXG4gICAgICB3aWR0aDogcmVjdC53aWR0aCxcbiAgICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVNb3VzZUxlYXZlID0gKCkgPT4ge1xuICAgIHNldElzSG92ZXJlZChmYWxzZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTW91c2VFbnRlciA9ICgpID0+IHtcbiAgICBzZXRJc0hvdmVyZWQodHJ1ZSk7XG4gIH07XG5cbiAgY29uc3QgZ2V0VENHQ29sb3IgPSAoZ2FtZSkgPT4ge1xuICAgIGNvbnN0IGNvbG9ycyA9IHtcbiAgICAgICdNVEcnOiAnIzhCNUNGNicsIC8vIHB1cnBsZVxuICAgICAgJ1Bva2Vtb24nOiAnIzNCODJGNicsIC8vIGJsdWVcbiAgICAgICdMb3JjYW5hJzogJyNFQzQ4OTknIC8vIHBpbmtcbiAgICB9O1xuICAgIHJldHVybiBjb2xvcnNbZ2FtZV0gfHwgJyM2QjcyODAnO1xuICB9O1xuXG4gIGNvbnN0IGdldFNldENvbG9yID0gKHNldE5hbWUpID0+IHtcbiAgICAvLyBHZW5lcmF0ZSBhIGNvbnNpc3RlbnQgY29sb3IgYmFzZWQgb24gc2V0IG5hbWVcbiAgICBjb25zdCBoYXNoID0gc2V0TmFtZS5zcGxpdCgnJykucmVkdWNlKChhLCBiKSA9PiB7XG4gICAgICBhID0gKChhIDw8IDUpIC0gYSkgKyBiLmNoYXJDb2RlQXQoMCk7XG4gICAgICByZXR1cm4gYSAmIGE7XG4gICAgfSwgMCk7XG4gICAgY29uc3QgaHVlID0gTWF0aC5hYnMoaGFzaCkgJSAzNjA7XG4gICAgcmV0dXJuIGBoc2woJHtodWV9LCA3MCUsIDYwJSlgO1xuICB9O1xuXG4gIGNvbnN0IGZvcm1hdEN1cnJlbmN5ID0gKGFtb3VudCkgPT4ge1xuICAgIHJldHVybiBuZXcgSW50bC5OdW1iZXJGb3JtYXQoJ2VuLVVTJywge1xuICAgICAgc3R5bGU6ICdjdXJyZW5jeScsXG4gICAgICBjdXJyZW5jeTogJ1VTRCdcbiAgICB9KS5mb3JtYXQoYW1vdW50KTtcbiAgfTtcblxuICBjb25zdCBnZXRSYXJpdHlHcmFkaWVudCA9IChyYXJpdHkpID0+IHtcbiAgICBjb25zdCBncmFkaWVudHMgPSB7XG4gICAgICBjb21tb246ICdmcm9tLWdyYXktNDAwIHRvLWdyYXktNTAwJyxcbiAgICAgIHVuY29tbW9uOiAnZnJvbS1ncmVlbi00MDAgdG8tZW1lcmFsZC01MDAnLFxuICAgICAgcmFyZTogJ2Zyb20teWVsbG93LTQwMCB0by1vcmFuZ2UtNTAwJyxcbiAgICAgIG15dGhpYzogJ2Zyb20teWVsbG93LTQwMCB0by1vcmFuZ2UtNTAwJyxcbiAgICAgIGhvbG9ncmFwaGljOiAnZnJvbS1yZWQtNDAwIHRvLXBpbmstNTAwJyxcbiAgICAgIGVuY2hhbnRlZDogJ2Zyb20tcHVycGxlLTQwMCB0by1pbmRpZ28tNTAwJyxcbiAgICAgIHVsdHJhOiAnZnJvbS1ibHVlLTQwMCB0by1jeWFuLTUwMCdcbiAgICB9O1xuICAgIHJldHVybiBncmFkaWVudHNbcmFyaXR5XSB8fCAnZnJvbS1ncmF5LTQwMCB0by1ncmF5LTUwMCc7XG4gIH07XG5cbiAgY29uc3QgZ2V0UmFyaXR5R2xvdyA9IChyYXJpdHkpID0+IHtcbiAgICBjb25zdCBnbG93cyA9IHtcbiAgICAgIGNvbW1vbjogJzAgMCAxNXB4IHJnYmEoMTU2LCAxNjMsIDE3NSwgMC40KScsXG4gICAgICB1bmNvbW1vbjogJzAgMCAxNXB4IHJnYmEoMzQsIDE5NywgOTQsIDAuNCknLFxuICAgICAgcmFyZTogJzAgMCAyMHB4IHJnYmEoMjUxLCAxOTEsIDM2LCAwLjUpJyxcbiAgICAgIG15dGhpYzogJzAgMCAyMHB4IHJnYmEoMjU1LCAyMTUsIDAsIDAuNCksIDAgMCA0MHB4IHJnYmEoMjU1LCAyMTUsIDAsIDAuMiksIDAgMCA2MHB4IHJnYmEoMjU1LCAyMTUsIDAsIDAuMSknLFxuICAgICAgaG9sb2dyYXBoaWM6ICcwIDAgMjVweCByZ2JhKDIzOSwgNjgsIDY4LCAwLjYpJyxcbiAgICAgIGVuY2hhbnRlZDogJzAgMCAyMHB4IHJnYmEoMTY4LCA4NSwgMjQ3LCAwLjQpLCAwIDAgNDBweCByZ2JhKDE2OCwgODUsIDI0NywgMC4yKSwgMCAwIDYwcHggcmdiYSgxNjgsIDg1LCAyNDcsIDAuMSknLFxuICAgICAgdWx0cmE6ICcwIDAgMjVweCByZ2JhKDU5LCAxMzAsIDI0NiwgMC42KSdcbiAgICB9O1xuICAgIHJldHVybiBnbG93c1tyYXJpdHldIHx8ICcwIDAgMTVweCByZ2JhKDE1NiwgMTYzLCAxNzUsIDAuNCknO1xuICB9O1xuXG4gIGlmICh2aWV3TW9kZSA9PT0gJ2xpc3QnKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgXG4gICAgICAgIGNsYXNzTmFtZT1cImNhcmQgaG92ZXI6c2hhZG93LXhsIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgdHJhbnNpdGlvbjogJ2FsbCAwLjNzIGVhc2UnXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC00XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTE2IGgtMjQgcm91bmRlZC1sZyBvdmVyZmxvdy1oaWRkZW5cIiBzdHlsZT17eyBcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAke2dldFJhcml0eUdyYWRpZW50KGNhcmQucmFyaXR5KS5yZXBsYWNlKCdmcm9tLScsICcnKS5yZXBsYWNlKCd0by0nLCAnJyl9KWAsXG4gICAgICAgICAgICBib3hTaGFkb3c6IGAwIDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjMpYFxuICAgICAgICAgIH19PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtd2hpdGUgZm9udC1ib2xkIHRleHQteHNcIj5cbiAgICAgICAgICAgICAge2NhcmQuZ2FtZX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+XG4gICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIG1iLTFcIiBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLXRleHQtcHJpbWFyeSknIH19PlxuICAgICAgICAgICAgICB7Y2FyZC5uYW1lfVxuICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gbWItMlwiIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tdGV4dC1zZWNvbmRhcnkpJyB9fT5cbiAgICAgICAgICAgICAge2NhcmQuc2V0X25hbWV9IOKAoiB7Z2V0UmFyaXR5TGFiZWwoY2FyZC5yYXJpdHkpfVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14c1wiIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tdGV4dC1zZWNvbmRhcnkpJyB9fT5cbiAgICAgICAgICAgICAge2NhcmQub3JhY2xlX3RleHQgfHwgY2FyZC5jYXJkX3R5cGV9XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXJpZ2h0XCI+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtYm9sZCBncmFkaWVudC10ZXh0LXB1cnBsZVwiPlxuICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3koY2FyZC5jdXJyZW50X3ByaWNlIHx8IDApfVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHNwYW4gXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInB4LTIgcHktMSB0ZXh0LXhzIHJvdW5kZWQtZnVsbCB0ZXh0LXdoaXRlIGZvbnQtbWVkaXVtXCJcbiAgICAgICAgICAgICAgc3R5bGU9e3sgYmFja2dyb3VuZENvbG9yOiBnZXRSYXJpdHlDb2xvcihjYXJkLnJhcml0eSkgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2dldFJhcml0eUxhYmVsKGNhcmQucmFyaXR5KX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgIHsvKiBDYXJkIENvbnRhaW5lciB3aXRoIHByb3BlciByYXRpbyBhbmQgcmFyaXR5IGdsb3cgKi99XG4gICAgICAgIDxkaXYgXG4gICAgICAgICAgY2xhc3NOYW1lPVwicmVsYXRpdmUgY3Vyc29yLXBvaW50ZXIgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIGhvdmVyOnNjYWxlLTEwNVwiXG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICBtYXhXaWR0aDogJzIwMHB4JyxcbiAgICAgICAgICAgIGFzcGVjdFJhdGlvOiAnNS83JyxcbiAgICAgICAgICAgIGJveFNoYWRvdzogZ2V0UmFyaXR5R2xvdyhjYXJkLnJhcml0eSksXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6ICcxMnB4JyxcbiAgICAgICAgICAgIGJvcmRlcjogYDJweCBzb2xpZCAke2dldFJhcml0eUNvbG9yKGNhcmQucmFyaXR5KX0yMGAsXG4gICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbidcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uTW91c2VNb3ZlPXtoYW5kbGVNb3VzZU1vdmV9XG4gICAgICAgICAgb25Nb3VzZUxlYXZlPXtoYW5kbGVNb3VzZUxlYXZlfVxuICAgICAgICAgIG9uTW91c2VFbnRlcj17aGFuZGxlTW91c2VFbnRlcn1cbiAgICAgICAgPlxuICAgICAgICAgIHsvKiBQYXJ0aWNsZSBFZmZlY3RzIGZvciBBbGwgUmFyaXRpZXMgKi99XG4gICAgICAgICAge2NhcmQucmFyaXR5ICE9PSAnY29tbW9uJyAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgcG9pbnRlci1ldmVudHMtbm9uZSBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgey8qIEdldCBwYXJ0aWNsZSBjb3VudCBhbmQgY29sb3JzIGJhc2VkIG9uIHJhcml0eSAqL31cbiAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmFyaXR5Q29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgJ215dGhpYyc6IHsgXG4gICAgICAgICAgICAgICAgICAgIHBhcnRpY2xlQ291bnQ6IDE2LCBcbiAgICAgICAgICAgICAgICAgICAgc3BhcmtsZUNvdW50OiAxMCxcbiAgICAgICAgICAgICAgICAgICAgcGFydGljbGVDb2xvcjogJyNGRkQ3MDAnLFxuICAgICAgICAgICAgICAgICAgICBzcGFya2xlQ29sb3I6ICcjRkZBNTAwJyxcbiAgICAgICAgICAgICAgICAgICAgZ2xvd0NvbG9yOiAnI0ZGRDcwMCdcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAnZW5jaGFudGVkJzogeyBcbiAgICAgICAgICAgICAgICAgICAgcGFydGljbGVDb3VudDogMTQsIFxuICAgICAgICAgICAgICAgICAgICBzcGFya2xlQ291bnQ6IDgsXG4gICAgICAgICAgICAgICAgICAgIHBhcnRpY2xlQ29sb3I6ICcjQTg1NUY3JyxcbiAgICAgICAgICAgICAgICAgICAgc3BhcmtsZUNvbG9yOiAnI0VDNDg5OScsXG4gICAgICAgICAgICAgICAgICAgIGdsb3dDb2xvcjogJyNBODU1RjcnXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgJ3JhcmUnOiB7IFxuICAgICAgICAgICAgICAgICAgICBwYXJ0aWNsZUNvdW50OiAxMCwgXG4gICAgICAgICAgICAgICAgICAgIHNwYXJrbGVDb3VudDogNixcbiAgICAgICAgICAgICAgICAgICAgcGFydGljbGVDb2xvcjogJyMzQjgyRjYnLFxuICAgICAgICAgICAgICAgICAgICBzcGFya2xlQ29sb3I6ICcjNjBBNUZBJyxcbiAgICAgICAgICAgICAgICAgICAgZ2xvd0NvbG9yOiAnIzNCODJGNidcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAndW5jb21tb24nOiB7IFxuICAgICAgICAgICAgICAgICAgICBwYXJ0aWNsZUNvdW50OiA2LCBcbiAgICAgICAgICAgICAgICAgICAgc3BhcmtsZUNvdW50OiA0LFxuICAgICAgICAgICAgICAgICAgICBwYXJ0aWNsZUNvbG9yOiAnIzEwQjk4MScsXG4gICAgICAgICAgICAgICAgICAgIHNwYXJrbGVDb2xvcjogJyMzNEQzOTknLFxuICAgICAgICAgICAgICAgICAgICBnbG93Q29sb3I6ICcjMTBCOTgxJ1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgY29uc3QgY29uZmlnID0gcmFyaXR5Q29uZmlnW2NhcmQucmFyaXR5XTtcbiAgICAgICAgICAgICAgICBpZiAoIWNvbmZpZykgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIHsvKiBGbG9hdGluZyBQYXJ0aWNsZXMgLSBFZGdlIGZyYW1pbmcgKi99XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHtbLi4uQXJyYXkoY29uZmlnLnBhcnRpY2xlQ291bnQpXS5tYXAoKF8sIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBvc2l0aW9uIHBhcnRpY2xlcyBhcm91bmQgdGhlIGNhcmQgZWRnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsZWZ0LCB0b3A7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZGdlSW5kZXggPSBpICUgNDsgLy8gNCBlZGdlc1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb25PbkVkZ2UgPSBNYXRoLmZsb29yKGkgLyA0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2VJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AgZWRnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gYCR7MTAgKyAocG9zaXRpb25PbkVkZ2UgKiAyMCl9JWA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvcCA9ICcyJSc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVkZ2VJbmRleCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSaWdodCBlZGdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSAnOTglJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wID0gYCR7MTAgKyAocG9zaXRpb25PbkVkZ2UgKiAyMCl9JWA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVkZ2VJbmRleCA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20gZWRnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gYCR7MTAgKyAocG9zaXRpb25PbkVkZ2UgKiAyMCl9JWA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvcCA9ICc5OCUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGVmdCBlZGdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSAnMiUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0b3AgPSBgJHsxMCArIChwb3NpdGlvbk9uRWRnZSAqIDIwKX0lYDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSB3LTEgaC0xIHJvdW5kZWQtZnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbmZpZy5wYXJ0aWNsZUNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBgZWRnZUZsb2F0ICR7NCArIGkgKiAwLjN9cyBlYXNlLWluLW91dCBpbmZpbml0ZWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb25EZWxheTogYCR7aSAqIDAuMn1zYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogJ2JsdXIoMXB4KScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3hTaGFkb3c6IGAwIDAgOHB4ICR7Y29uZmlnLnBhcnRpY2xlQ29sb3J9LCAwIDAgMTZweCAke2NvbmZpZy5wYXJ0aWNsZUNvbG9yfSwgMCAwIDI0cHggJHtjb25maWcucGFydGljbGVDb2xvcn1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWl4QmxlbmRNb2RlOiAnc2NyZWVuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHsvKiBTcGFya2xlIEVmZmVjdHMgLSBDb3JuZXIgaGlnaGxpZ2h0cyAqL31cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAge1suLi5BcnJheShjb25maWcuc3BhcmtsZUNvdW50KV0ubWFwKChfLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBQb3NpdGlvbiBzcGFya2xlcyBpbiB0aGUgY29ybmVycyBhbmQgZWRnZSBjZW50ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGVmdCwgdG9wO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvcCBjb3JuZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBpID09PSAwID8gJzUlJyA6ICc5NSUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0b3AgPSAnNSUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpIDwgNCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20gY29ybmVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gaSA9PT0gMiA/ICc1JScgOiAnOTUlJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wID0gJzk1JSc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGkgPCA2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVkZ2UgY2VudGVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gaSA9PT0gNCA/ICc1MCUnIDogJzUwJSc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvcCA9IGkgPT09IDQgPyAnNSUnIDogJzk1JSc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaWRlIGNlbnRlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IGkgPT09IDYgPyAnNSUnIDogJzk1JSc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvcCA9ICc1MCUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgc3BhcmtsZS0ke2l9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSB3LTAuNSBoLTAuNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbmZpZy5zcGFya2xlQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IGBzcGFya2xlICR7MiArIGkgKiAwLjR9cyBlYXNlLWluLW91dCBpbmZpbml0ZWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb25EZWxheTogYCR7aSAqIDAuMn1zYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuOSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogJ2JsdXIoMC41cHgpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveFNoYWRvdzogYDAgMCA0cHggJHtjb25maWcuc3BhcmtsZUNvbG9yfSwgMCAwIDhweCAke2NvbmZpZy5zcGFya2xlQ29sb3J9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1peEJsZW5kTW9kZTogJ3NjcmVlbidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB7LyogUmFyaXR5IEF1cmEgLSBCbGVuZCB3aXRoIG92ZXJhbGwgZ2xvdyAqL31cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIHJvdW5kZWQtbGdcIlxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCAke2NvbmZpZy5nbG93Q29sb3J9MjAgMCUsICR7Y29uZmlnLmdsb3dDb2xvcn0xMCA0MCUsIHRyYW5zcGFyZW50IDcwJSlgLFxuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiAnYXVyYSA0cyBlYXNlLWluLW91dCBpbmZpbml0ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBtaXhCbGVuZE1vZGU6ICdzY3JlZW4nXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICB7LyogQ2FyZCBJbWFnZSAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsXCI+XG4gICAgICAgICAge2NhcmQuaW1hZ2VfdXJsID8gKFxuICAgICAgICAgICAgPGltZyBcbiAgICAgICAgICAgICAgc3JjPXtjYXJkLmltYWdlX3VybH0gXG4gICAgICAgICAgICAgIGFsdD17Y2FyZC5uYW1lfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIG9iamVjdC1jb3ZlclwiXG4gICAgICAgICAgICAgIG9uRXJyb3I9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgZS50YXJnZXQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgICAgICBlLnRhcmdldC5uZXh0U2libGluZy5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICBcbiAgICAgICAgICB7LyogQ2FyZCBCYWNrIHBsYWNlaG9sZGVyIHdoZW4gbm8gaW1hZ2UgKi99XG4gICAgICAgICAgPGRpdiBcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YHctZnVsbCBoLWZ1bGwgJHshY2FyZC5pbWFnZV91cmwgPyAnYmxvY2snIDogJ2hpZGRlbid9YH1cbiAgICAgICAgICAgIHN0eWxlPXt7IGJvcmRlclJhZGl1czogJzEwcHgnIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPENhcmRCYWNrIGdhbWU9e2NhcmQuZ2FtZX0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgey8qIE93bmVkIFF1YW50aXR5IENoaXAgLSBPbmx5IHNob3cgaWYgb3duZWQgKi99XG4gICAgICAgIHtjYXJkLnF1YW50aXR5ID4gMCAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTBcIj5cbiAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInB4LTMgcHktMSB0ZXh0LXhzIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIHNoYWRvdy1sZ1wiXG4gICAgICAgICAgICAgIHN0eWxlPXt7IFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3ZhcigtLXRleHQtYWNjZW50KScsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnOHB4IDhweCAwIDAnLFxuICAgICAgICAgICAgICAgIGJvcmRlclRvcDogJzJweCBzb2xpZCB2YXIoLS10ZXh0LWFjY2VudCknLFxuICAgICAgICAgICAgICAgIGJvcmRlckxlZnQ6ICcycHggc29saWQgdmFyKC0tdGV4dC1hY2NlbnQpJyxcbiAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogJzJweCBzb2xpZCB2YXIoLS10ZXh0LWFjY2VudCknLFxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMnB4KSdcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2NhcmQucXVhbnRpdHl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cblxuICAgICAgICB7LyogRmF2b3JpdGUgQnV0dG9uICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0yIHJpZ2h0LTJcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICBzZXRJc0Zhdm9yaXRlZCghaXNGYXZvcml0ZWQpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YHAtMiByb3VuZGVkLWZ1bGwgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwIHNoYWRvdy1sZyAke1xuICAgICAgICAgICAgICBpc0Zhdm9yaXRlZCBcbiAgICAgICAgICAgICAgICA/ICdiZy1yZWQtNTAwIGJnLW9wYWNpdHktODAgdGV4dC13aGl0ZScgXG4gICAgICAgICAgICAgICAgOiAnYmctd2hpdGUgYmctb3BhY2l0eS0yMCBiYWNrZHJvcC1ibHVyLXNtIGhvdmVyOmJnLW9wYWNpdHktMzAnXG4gICAgICAgICAgICB9YH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aXNGYXZvcml0ZWQgPyAn4p2k77iPJyA6ICfwn6SNJ31cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIEhvdmVyIERldGFpbHMgUGFuZWwgKi99XG4gICAgICB7aXNIb3ZlcmVkICYmIChcbiAgICAgICAgPGRpdiBcbiAgICAgICAgICBjbGFzc05hbWU9XCJmaXhlZCB6LTUwIGJnLWJsYWNrIGJnLW9wYWNpdHktOTAgdGV4dC13aGl0ZSBwLTQgcm91bmRlZC1sZyBzaGFkb3ctMnhsIG1heC13LXNtXCJcbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgbGVmdDogY2FyZFBvc2l0aW9uLnggKyBjYXJkUG9zaXRpb24ud2lkdGgsXG4gICAgICAgICAgICB0b3A6IGNhcmRQb3NpdGlvbi55LFxuICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiBjYXJkUG9zaXRpb24uaGVpZ2h0LFxuICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcidcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTNcIj5cbiAgICAgICAgICAgIHsvKiBDYXJkIFRpdGxlICovfVxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIG1iLTFcIj57Y2FyZC5uYW1lfTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIHsvKiBUb3AgU2VjdGlvbiAtIFRDRywgU2V0LCBUeXBlLCBIUCBpbiAyeDIgZ3JpZCAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMiBnYXAtM1wiPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LWJvbGQgdGV4dC13aGl0ZSBtYi0xXCI+VENHPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtd2hpdGVcIj57Y2FyZC5nYW1lfTwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1ib2xkIHRleHQtd2hpdGUgbWItMVwiPlNldDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXdoaXRlXCI+e2NhcmQuc2V0X25hbWV9PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB7Y2FyZC50eXBlICYmIChcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIG1iLTFcIj5UeXBlPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC13aGl0ZSBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICB7Y2FyZC5nYW1lID09PSAnUG9rZW1vbicgJiYgY2FyZC50eXBlID09PSAnTGlnaHRuaW5nJyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC15ZWxsb3ctNDAwXCI+4pqhPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICB7Y2FyZC50eXBlfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHtjYXJkLmhwICYmIChcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIG1iLTFcIj5IUDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtd2hpdGVcIj57Y2FyZC5ocH08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7LyogQ2FyZCBUeXBlIGFuZCBGb3JtICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0yIGdhcC0zXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIG1iLTFcIj5DYXJkIHR5cGU8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC13aGl0ZVwiPntjYXJkLmNhcmRfdHlwZSB8fCAnQ2FyZCd9PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB7Y2FyZC5mb3JtICYmIChcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIG1iLTFcIj5Gb3JtPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC13aGl0ZVwiPntjYXJkLmZvcm19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgey8qIENvc3QgdG8gUGxheSAqL31cbiAgICAgICAgICAgIHtjYXJkLm1hbmFfY29zdCAmJiAoXG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIG1iLTFcIj5Db3N0IHRvIFBsYXk8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC13aGl0ZVwiPntjYXJkLm1hbmFfY29zdH08L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7LyogQ2FyZCBSdWxlIFNlY3Rpb24gKi99XG4gICAgICAgICAgICB7Y2FyZC5nYW1lID09PSAnUG9rZW1vbicgJiYgY2FyZC5mb3JtICYmIGNhcmQuZm9ybS5pbmNsdWRlcygnVicpICYmIChcbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1ib2xkIHRleHQtd2hpdGUgbWItMVwiPkNhcmQgcnVsZTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXdoaXRlIGxlYWRpbmctcmVsYXhlZFwiPlxuICAgICAgICAgICAgICAgICAgViBydWxlOiBXaGVuIHlvdXIgUG9rw6ltb24gViBpcyBLbm9ja2VkIE91dCwgeW91ciBvcHBvbmVudCB0YWtlcyAyIFByaXplIGNhcmRzLlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHsvKiBBYmlsaXRpZXMvQXR0YWNrcy9Nb3ZlcyBTZWN0aW9uICovfVxuICAgICAgICAgICAge2NhcmQub3JhY2xlX3RleHQgJiYgKFxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LWJvbGQgdGV4dC13aGl0ZSBtYi0xXCI+Q2FyZCBUZXh0PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtd2hpdGUgbGVhZGluZy1yZWxheGVkXCI+e2NhcmQub3JhY2xlX3RleHR9PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgey8qIFF1b3RlIFNlY3Rpb24gKi99XG4gICAgICAgICAgICB7Y2FyZC5mbGF2b3JfdGV4dCAmJiAoXG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIG1iLTFcIj5RdW90ZTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXdoaXRlIGl0YWxpYyBsZWFkaW5nLXJlbGF4ZWRcIj5cIntjYXJkLmZsYXZvcl90ZXh0fVwiPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgey8qIEN1cnJlbnQgUHJpY2UgKi99XG4gICAgICAgICAgICB7Y2FyZC5jdXJyZW50X3ByaWNlICYmIChcbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1ib2xkIHRleHQtd2hpdGUgbWItMVwiPkN1cnJlbnQgUHJpY2U8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC13aGl0ZVwiPntmb3JtYXRDdXJyZW5jeShjYXJkLmN1cnJlbnRfcHJpY2UpfTwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHsvKiBCb3R0b20gU2VjdGlvbiAtIFdlYWtuZXNzZXMgYW5kIFJldHJlYXQgKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTNcIj5cbiAgICAgICAgICAgICAge2NhcmQud2Vha25lc3MgJiYgKFxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1ib2xkIHRleHQtd2hpdGUgbWItMVwiPldlYWtuZXNzZXM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXdoaXRlIGZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIHtjYXJkLmdhbWUgPT09ICdQb2tlbW9uJyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1yZWQtNTAwXCI+8J+Rijwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAge2NhcmQud2Vha25lc3N9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge2NhcmQucmV0cmVhdF9jb3N0ICYmIChcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIG1iLTFcIj5SZXRyZWF0PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC13aGl0ZSBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICB7Y2FyZC5nYW1lID09PSAnUG9rZW1vbicgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNDAwXCI+4q2QPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTQwMFwiPuKtkDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAge2NhcmQucmV0cmVhdF9jb3N0fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgey8qIERlY2tzIGFuZCBDb2xsZWN0aW9ucyAqL31cbiAgICAgICAgICAgIHsoY2FyZC5kZWNrcyAmJiBjYXJkLmRlY2tzLmxlbmd0aCA+IDApIHx8IChjYXJkLmNvbGxlY3Rpb25zICYmIGNhcmQuY29sbGVjdGlvbnMubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LWJvbGQgdGV4dC13aGl0ZSBtYi0xXCI+SW5jbHVkZWQgSW48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC13aGl0ZVwiPlxuICAgICAgICAgICAgICAgICAge2NhcmQuZGVja3MgJiYgY2FyZC5kZWNrcy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1zZW1pYm9sZFwiPkRlY2tzOjwvc3Bhbj4ge2NhcmQuZGVja3Muam9pbignLCAnKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAge2NhcmQuY29sbGVjdGlvbnMgJiYgY2FyZC5jb2xsZWN0aW9ucy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmb250LXNlbWlib2xkXCI+Q29sbGVjdGlvbnM6PC9zcGFuPiB7Y2FyZC5jb2xsZWN0aW9ucy5qb2luKCcsICcpfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufSBcblxuLy8gQ2FyZCBCYWNrIENvbXBvbmVudCBmb3IgcGxhY2Vob2xkZXJzXG5mdW5jdGlvbiBDYXJkQmFjayh7IGdhbWUgfSkge1xuICBjb25zdCBnZXRDYXJkQmFja0ltYWdlID0gKCkgPT4ge1xuICAgIHN3aXRjaCAoZ2FtZSkge1xuICAgICAgY2FzZSAnTVRHJzpcbiAgICAgICAgcmV0dXJuICdkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUIzYVdSMGFEMGlNakF3SWlCb1pXbG5hSFE5SWpFME15SWdkbWxsZDBKdmVEMGlNQ0F3SURJd01DQXhORE1pSUdacGJHdzlJbTV2Ym1VaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJK0NqeHlaV04wSUhkcFpIUm9QU0l5TURBaUlHaGxhV2RvZEQwaU1UUXpJaUJtYVd4c1BTSWpPRUkwTlRFeklpOCtDanh5WldOMElIZzlJakV3SWlCNVBTSXhNQ0lnZDJsa2RHZzlJakU0TUNJZ2FHVnBaMmgwUFNJeE1qTWlJR1pwYkd3OUlpTkJNRFV5TWtRaUlISjRQU0k0SWk4K0NqeDBaWGgwSUhnOUlqRXdNQ0lnZVQwaU16QWlJR1p2Ym5RdFptRnRhV3g1UFNKQmNtbGhiQ3dnYzJGdWN5MXpaWEpwWmlJZ1ptOXVkQzF6YVhwbFBTSXlOQ0lnWm05dWRDMTNaV2xuYUhROUltSnZiR1FpSUdacGJHdzlJaU0wUVRrd1JUSWlJSFJsZUhRdFlXNWphRzl5UFNKdGFXUmtiR1VpUGsxQlIwbERQQzkwWlhoMFBnbzhkR1Y0ZENCNFBTSXhNREFpSUhrOUlqUTFJaUJtYjI1MExXWmhiV2xzZVQwaVFYSnBZV3dzSUhOaGJuTXRjMlZ5YVdZaUlHWnZiblF0YzJsNlpUMGlNVElpSUdacGJHdzlJbmRvYVhSbElpQjBaWGgwTFdGdVkyaHZjajBpYldsa1pHeGxJajVVYUdVZ1IyRjBhR1Z5YVc1blBDOTBaWGgwUGdvOFkybHlZMnhsSUdONFBTSTNNQ0lnWTNrOUlqY3dJaUJ5UFNJMElpQm1hV3hzUFNKM2FHbDBaU0l2UGdvOFkybHlZMnhsSUdONFBTSXhNekFpSUdONFBTSTNNQ0lnY2owaU5DSWdabWxzYkQwaUkwWTFPVGxGTUVJaUx6NEtQR05wY21Oc1pTQmplRDBpTVRBd0lpQmplVDBpT0RBaUlISTlJalFpSUdacGJHdzlJaU0wUVRrd1JUSWlMejRLUEdOcGNtTnNaU0JqZUQwaU56QWlJR041UFNJNU1DSWdjajBpTkNJZ1ptbHNiRDBpSXpFd1FqazRNU0l2UGdvOFkybHlZMnhsSUdONFBTSXhNekFpSUdONVBTSTVNQ0lnY2owaU5DSWdabWxzYkQwaVlteGhZMnNpTHo0S1BIUmxlSFFnZUQwaU1UQXdJaUI1UFNJeE1qQWlJR1p2Ym5RdFptRnRhV3g1UFNKQmNtbGhiQ3dnYzJGdWN5MXpaWEpwWmlJZ1ptOXVkQzF6YVhwbFBTSXhNQ0lnWm05dWRDMTNaV2xuYUhROUltSnZiR1FpSUdacGJHdzlJaU15TUVJeVFVRWlJSFJsZUhRdFlXNWphRzl5UFNKdGFXUmtiR1VpUGtSRlEwdE5RVk5VUlZJOEwzUmxlSFErQ2p3dmMzWm5QZ289JztcbiAgICAgIGNhc2UgJ1Bva2Vtb24nOlxuICAgICAgICByZXR1cm4gJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjNhV1IwYUQwaU1qQXdJaUJvWldsbmFIUTlJakUwTXlJZ2RtbGxkMEp2ZUQwaU1DQXdJREl3TUNBeE5ETWlJR1pwYkd3OUltNXZibVVpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUkrQ2p4eVpXTjBJSGRwWkhSb1BTSXlNREFpSUdobGFXZG9kRDBpTVRReklpQm1hV3hzUFNJalJrWTJRalpDSWk4K0NqeHlaV04wSUhnOUlqRXdJaUI1UFNJeE1DSWdkMmxrZEdnOUlqRTRNQ0lnYUdWcFoyaDBQU0l4TWpNaUlHWnBiR3c5SWlOR1JqaEZPRVVpSUhKNFBTSTRJaTgrQ2p4MFpYaDBJSGc5SWpFd01DSWdlVDBpTXpBaUlHWnZiblF0Wm1GdGFXeDVQU0pCY21saGJDd2djMkZ1Y3kxelpYSnBaaUlnWm05dWRDMXphWHBsUFNJeU5DSWdabTl1ZEMxM1pXbG5hSFE5SW1KdmJHUWlJR1pwYkd3OUlpTkdSa1EzTURBaUlIUmxlSFF0WVc1amFHOXlQU0p0YVdSa2JHVWlQbEJQUzBWTlQwNDhMM1JsZUhRK0NqeDBaWGgwSUhnOUlqRXdNQ0lnZVQwaU5EVWlJR1p2Ym5RdFptRnRhV3g1UFNKQmNtbGhiQ3dnYzJGdWN5MXpaWEpwWmlJZ1ptOXVkQzF6YVhwbFBTSXhNaUlnWm1sc2JEMGlkMmhwZEdVaUlIUmxlSFF0WVc1amFHOXlQU0p0YVdSa2JHVWlQbFJ5WVdScGJtY2dRMkZ5WkNCSFlXMWxQQzkwWlhoMFBnbzhZMmx5WTJ4bElHTjRQU0l4TURBaUlHTjVQU0kzTUNJZ2NqMGlNakFpSUdacGJHdzlJbmRvYVhSbElpOCtDangwWlhoMElIZzlJakV3TUNJZ2VUMGlOemdpSUdadmJuUXRabUZ0YVd4NVBTSkJjbWxoYkN3Z2MyRnVjeTF6WlhKcFppSWdabTl1ZEMxemFYcGxQU0l5TkNJZ1ptbHNiRDBpSXpGR04wWTNSaUlnZEdWNGRDMWhibU5vYjNJOUltMXBaR1JzWlNJKzRwZVBQQzkwWlhoMFBnbzhkR1Y0ZENCNFBTSXhNREFpSUhrOUlqRXlNQ0lnWm05dWRDMW1ZVzFwYkhrOUlrRnlhV0ZzTENCellXNXpMWE5sY21sbUlpQm1iMjUwTFhOcGVtVTlJakV3SWlCbWIyNTBMWGRsYVdkb2REMGlZbTlzWkNJZ1ptbHNiRDBpSTBaR1JEY3dNQ0lnZEdWNGRDMWhibU5vYjNJOUltMXBaR1JzWlNJK1IwRk5SU0JHVWtWQlN6d3ZkR1Y0ZEQ0S1BDOXpkbWMrQ2c9PSc7XG4gICAgICBjYXNlICdMb3JjYW5hJzpcbiAgICAgICAgcmV0dXJuICdkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUIzYVdSMGFEMGlNakF3SWlCb1pXbG5hSFE5SWpFME15SWdkbWxsZDBKdmVEMGlNQ0F3SURJd01DQXhORE1pSUdacGJHdzlJbTV2Ym1VaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJK0NqeHlaV04wSUhkcFpIUm9QU0l5TURBaUlHaGxhV2RvZEQwaU1UUXpJaUJtYVd4c1BTSWpSVU0wT0RrNUlpOCtDanh5WldOMElIZzlJakV3SWlCNVBTSXhNQ0lnZDJsa2RHZzlJakU0TUNJZ2FHVnBaMmgwUFNJeE1qTWlJR1pwYkd3OUlpTkdORGN5UWpZaUlISjRQU0k0SWk4K0NqeDBaWGgwSUhnOUlqRXdNQ0lnZVQwaU16QWlJR1p2Ym5RdFptRnRhV3g1UFNKQmNtbGhiQ3dnYzJGdWN5MXpaWEpwWmlJZ1ptOXVkQzF6YVhwbFBTSXlOQ0lnWm05dWRDMTNaV2xuYUhROUltSnZiR1FpSUdacGJHdzlJaU5HUWtKR01qUWlJSFJsZUhRdFlXNWphRzl5UFNKdGFXUmtiR1VpUGtSSlUwNUZXVHd2ZEdWNGRENEtQSFJsZUhRZ2VEMGlNVEF3SWlCNVBTSTBOU0lnWm05dWRDMW1ZVzFwYkhrOUlrRnlhV0ZzTENCellXNXpMWE5sY21sbUlpQm1iMjUwTFhOcGVtVTlJakV5SWlCbWFXeHNQU0ozYUdsMFpTSWdkR1Y0ZEMxaGJtTm9iM0k5SW0xcFpHUnNaU0krVEc5eVkyRnVZVHd2ZEdWNGRENEtQR05wY21Oc1pTQmplRDBpTVRBd0lpQmplVDBpTnpBaUlISTlJakl3SWlCbWFXeHNQU0ozYUdsMFpTSXZQZ284ZEdWNGRDQjRQU0l4TURBaUlIazlJamM0SWlCbWIyNTBMV1poYldsc2VUMGlRWEpwWVd3c0lITmhibk10YzJWeWFXWWlJR1p2Ym5RdGMybDZaVDBpTWpRaUlHWnBiR3c5SWlNeFJqZEdOMFlpSUhSbGVIUXRZVzVqYUc5eVBTSnRhV1JrYkdVaVB2Q2ZrcVE4TDNSbGVIUStDangwWlhoMElIZzlJakV3TUNJZ2VUMGlNVEl3SWlCbWIyNTBMV1poYldsc2VUMGlRWEpwWVd3c0lITmhibk10YzJWeWFXWWlJR1p2Ym5RdGMybDZaVDBpTVRBaUlHWnZiblF0ZDJWcFoyaDBQU0ppYjJ4a0lpQm1hV3hzUFNJalJqVTVSVEJDSWlCMFpYaDBMV0Z1WTJodmNqMGliV2xrWkd4bElqNVNRVlpGVGxORVJWSkhQend2ZEdWNGRENEtQQzl6ZG1jK0NnPT0nO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUIzYVdSMGFEMGlNakF3SWlCb1pXbG5hSFE5SWpFME15SWdkbWxsZDBKdmVEMGlNQ0F3SURJd01DQXhORE1pSUdacGJHdzlJbTV2Ym1VaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJK0NqeHlaV04wSUhkcFpIUm9QU0l5TURBaUlHaGxhV2RvZEQwaU1UUXpJaUJtYVd4c1BTSWpOa0kzTWpnd0lpOCtDanh5WldOMElIZzlJakV3SWlCNVBTSXhNQ0lnZDJsa2RHZzlJakU0TUNJZ2FHVnBaMmgwUFNJeE1qTWlJR1pwYkd3OUlpTTVRMEV6UVVZaUlISjRQU0k0SWk4K0NqeDBaWGgwSUhnOUlqRXdNQ0lnZVQwaU16QWlJR1p2Ym5RdFptRnRhV3g1UFNKQmNtbGhiQ3dnYzJGdWN5MXpaWEpwWmlJZ1ptOXVkQzF6YVhwbFBTSXlOQ0lnWm05dWRDMTNaV2xuYUhROUltSnZiR1FpSUdacGJHdzlJbmRvYVhSbElpQjBaWGgwTFdGdVkyaHZjajBpYldsa1pHeGxJajVVUTBjOEwzUmxlSFErQ2p4MFpYaDBJSGc5SWpFd01DSWdlVDBpTkRVaUlHWnZiblF0Wm1GdGFXeDVQU0pCY21saGJDd2djMkZ1Y3kxelpYSnBaaUlnWm05dWRDMXphWHBsUFNJeE1pSWdabWxzYkQwaWQyaHBkR1VpSUhSbGVIUXRZVzVqYUc5eVBTSnRhV1JrYkdVaVBsUnlZV1JwYm1jZ1EyRnlaRHd2ZEdWNGRENEtQR05wY21Oc1pTQmplRDBpTVRBd0lpQmplVDBpTnpBaUlISTlJakl3SWlCbWFXeHNQU0ozYUdsMFpTSXZQZ284ZEdWNGRDQjRQU0l4TURBaUlIazlJamM0SWlCbWIyNTBMV1poYldsc2VUMGlRWEpwWVd3c0lITmhibk10YzJWeWFXWWlJR1p2Ym5RdGMybDZaVDBpTWpRaUlHWnBiR3c5SWlNeFJqZEdOMFlpSUhSbGVIUXRZVzVqYUc5eVBTSnRhV1JrYkdVaVB2Q2ZrcVE4TDNSbGVIUStDangwWlhoMElIZzlJakV3TUNJZ2VUMGlNVEl3SWlCbWIyNTBMV1poYldsc2VUMGlRWEpwWVd3c0lITmhibk10YzJWeWFXWWlJR1p2Ym5RdGMybDZaVDBpTVRBaUlHWnZiblF0ZDJWcFoyaDBQU0ppYjJ4a0lpQm1hV3hzUFNJak5rSTNNamd3SWlCMFpYaDBMV0Z1WTJodmNqMGliV2xrWkd4bElqNURRVkpFUEM5MFpYaDBQZ284TDNOMlp6NEsnO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCByb3VuZGVkLWxnIG92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgPGltZyBcbiAgICAgICAgc3JjPXtnZXRDYXJkQmFja0ltYWdlKCl9IFxuICAgICAgICBhbHQ9e2Ake2dhbWV9IGNhcmQgYmFja2B9XG4gICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgb2JqZWN0LWNvdmVyXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICk7XG59ICJdLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZVJvdXRlciIsIkxheW91dCIsIkNhcmRzIiwicm91dGVyIiwidXNlciIsImVtYWlsIiwicm9sZSIsImNhcmRzIiwic2V0Q2FyZHMiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsImxvYWRpbmdNb3JlIiwic2V0TG9hZGluZ01vcmUiLCJzZWFyY2hRdWVyeSIsInNldFNlYXJjaFF1ZXJ5Iiwic2VsZWN0ZWRUQ0ciLCJzZXRTZWxlY3RlZFRDRyIsInNlbGVjdGVkUmFyaXR5Iiwic2V0U2VsZWN0ZWRSYXJpdHkiLCJzZWxlY3RlZFNldCIsInNldFNlbGVjdGVkU2V0Iiwic2VsZWN0ZWRWYWx1ZVJhbmdlIiwic2V0U2VsZWN0ZWRWYWx1ZVJhbmdlIiwidmlld01vZGUiLCJzZXRWaWV3TW9kZSIsInBhZ2luYXRpb24iLCJzZXRQYWdpbmF0aW9uIiwicGFnZSIsImxpbWl0IiwidG90YWwiLCJwYWdlcyIsImZpbHRlcnMiLCJzZXRGaWx0ZXJzIiwiZ2FtZXMiLCJyYXJpdGllcyIsInNldHMiLCJoYXNNb3JlIiwic2V0SGFzTW9yZSIsImxvYWRpbmdNb3JlUmVmIiwiaGFzTW9yZVJlZiIsImZldGNoQ2FyZHMiLCJpc0xvYWRNb3JlIiwiY3VycmVudCIsInBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsInF1ZXJ5IiwiZ2FtZSIsInJhcml0eSIsInNldCIsIm1pblByaWNlIiwibWF4UHJpY2UiLCJ0b1N0cmluZyIsInJlc3BvbnNlIiwiZmV0Y2giLCJkYXRhIiwianNvbiIsInN1Y2Nlc3MiLCJwcmV2Q2FyZHMiLCJoYXNNb3JlQ2FyZHMiLCJjb25zb2xlIiwiZXJyb3IiLCJwcmV2Iiwic2VhcmNoVGltZW91dCIsInNldFNlYXJjaFRpbWVvdXQiLCJoYW5kbGVTZWFyY2hDaGFuZ2UiLCJ2YWx1ZSIsImNsZWFyVGltZW91dCIsIm5ld1RpbWVvdXQiLCJzZXRUaW1lb3V0IiwibG9hZE1vcmVDYXJkcyIsIm5leHRQYWdlIiwib2JzZXJ2ZXIiLCJJbnRlcnNlY3Rpb25PYnNlcnZlciIsImVudHJpZXMiLCJmb3JFYWNoIiwiZW50cnkiLCJpc0ludGVyc2VjdGluZyIsInJvb3RNYXJnaW4iLCJ0aHJlc2hvbGQiLCJzZXR1cE9ic2VydmVyIiwic2VudGluZWwiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwib2JzZXJ2ZSIsInVub2JzZXJ2ZSIsImdldFJhcml0eUNvbG9yIiwicmFyaXR5Q29sb3JNYXAiLCJ0b0xvd2VyQ2FzZSIsInRjZ09wdGlvbnMiLCJsYWJlbCIsImNvbG9yIiwiaWNvbiIsInJhcml0eU9wdGlvbnMiLCJmaWx0ZXIiLCJpbmNsdWRlcyIsIm1hcCIsInNldE9wdGlvbnMiLCJ2YWx1ZVJhbmdlT3B0aW9ucyIsImZvcm1hdEN1cnJlbmN5IiwiYW1vdW50IiwiSW50bCIsIk51bWJlckZvcm1hdCIsInN0eWxlIiwiY3VycmVuY3kiLCJmb3JtYXQiLCJnZXRSYXJpdHlMYWJlbCIsInJhcml0eU9wdGlvbiIsImZpbmQiLCJvcHRpb24iLCJsZW5ndGgiLCJkaXYiLCJjbGFzc05hbWUiLCJib3JkZXJDb2xvciIsImJhY2tncm91bmRDb2xvciIsImJvcmRlckJvdHRvbSIsImgxIiwicCIsImJ1dHRvbiIsIm9uQ2xpY2siLCJzdmciLCJmaWxsIiwic3Ryb2tlIiwidmlld0JveCIsInBhdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJzdHJva2VXaWR0aCIsImQiLCJoMyIsImJvcmRlciIsInNwYW4iLCJpbnB1dCIsInR5cGUiLCJwbGFjZWhvbGRlciIsIm9uQ2hhbmdlIiwiZSIsInRhcmdldCIsIm9uS2V5UHJlc3MiLCJrZXkiLCJzZWxlY3QiLCJvcHQiLCJjYXJkIiwicHVzaCIsImlkIiwiQ2FyZDNEIiwiaXNIb3ZlcmVkIiwic2V0SXNIb3ZlcmVkIiwiY2FyZFBvc2l0aW9uIiwic2V0Q2FyZFBvc2l0aW9uIiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsImlzRmF2b3JpdGVkIiwic2V0SXNGYXZvcml0ZWQiLCJoYW5kbGVNb3VzZU1vdmUiLCJyZWN0IiwiY3VycmVudFRhcmdldCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImxlZnQiLCJ0b3AiLCJoYW5kbGVNb3VzZUxlYXZlIiwiaGFuZGxlTW91c2VFbnRlciIsImdldFRDR0NvbG9yIiwiY29sb3JzIiwiZ2V0U2V0Q29sb3IiLCJzZXROYW1lIiwiaGFzaCIsInNwbGl0IiwicmVkdWNlIiwiYSIsImIiLCJjaGFyQ29kZUF0IiwiaHVlIiwiTWF0aCIsImFicyIsImdldFJhcml0eUdyYWRpZW50IiwiZ3JhZGllbnRzIiwiY29tbW9uIiwidW5jb21tb24iLCJyYXJlIiwibXl0aGljIiwiaG9sb2dyYXBoaWMiLCJlbmNoYW50ZWQiLCJ1bHRyYSIsImdldFJhcml0eUdsb3ciLCJnbG93cyIsInRyYW5zaXRpb24iLCJiYWNrZ3JvdW5kIiwicmVwbGFjZSIsImJveFNoYWRvdyIsIm5hbWUiLCJzZXRfbmFtZSIsIm9yYWNsZV90ZXh0IiwiY2FyZF90eXBlIiwiY3VycmVudF9wcmljZSIsIm1heFdpZHRoIiwiYXNwZWN0UmF0aW8iLCJib3JkZXJSYWRpdXMiLCJvdmVyZmxvdyIsIm9uTW91c2VNb3ZlIiwib25Nb3VzZUxlYXZlIiwib25Nb3VzZUVudGVyIiwicmFyaXR5Q29uZmlnIiwicGFydGljbGVDb3VudCIsInNwYXJrbGVDb3VudCIsInBhcnRpY2xlQ29sb3IiLCJzcGFya2xlQ29sb3IiLCJnbG93Q29sb3IiLCJjb25maWciLCJBcnJheSIsIl8iLCJpIiwiZWRnZUluZGV4IiwicG9zaXRpb25PbkVkZ2UiLCJmbG9vciIsImFuaW1hdGlvbiIsImFuaW1hdGlvbkRlbGF5Iiwib3BhY2l0eSIsIm1peEJsZW5kTW9kZSIsImltYWdlX3VybCIsImltZyIsInNyYyIsImFsdCIsIm9uRXJyb3IiLCJkaXNwbGF5IiwibmV4dFNpYmxpbmciLCJDYXJkQmFjayIsInF1YW50aXR5IiwiYm9yZGVyVG9wIiwiYm9yZGVyTGVmdCIsImJvcmRlclJpZ2h0IiwidHJhbnNmb3JtIiwic3RvcFByb3BhZ2F0aW9uIiwicG9pbnRlckV2ZW50cyIsIm1pbkhlaWdodCIsImZsZXhEaXJlY3Rpb24iLCJqdXN0aWZ5Q29udGVudCIsImhwIiwiZm9ybSIsIm1hbmFfY29zdCIsImZsYXZvcl90ZXh0Iiwid2Vha25lc3MiLCJyZXRyZWF0X2Nvc3QiLCJkZWNrcyIsImNvbGxlY3Rpb25zIiwiam9pbiIsImdldENhcmRCYWNrSW1hZ2UiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./pages/cards.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(pages-dir-node)/./styles/globals.css":
|
|
/*!****************************!*\
|
|
!*** ./styles/globals.css ***!
|
|
\****************************/
|
|
/***/ (() => {
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "fs":
|
|
/*!*********************!*\
|
|
!*** external "fs" ***!
|
|
\*********************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
module.exports = require("fs");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "next/dist/compiled/next-server/pages.runtime.dev.js":
|
|
/*!**********************************************************************!*\
|
|
!*** external "next/dist/compiled/next-server/pages.runtime.dev.js" ***!
|
|
\**********************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
module.exports = require("next/dist/compiled/next-server/pages.runtime.dev.js");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "next/dist/shared/lib/no-fallback-error.external":
|
|
/*!******************************************************************!*\
|
|
!*** external "next/dist/shared/lib/no-fallback-error.external" ***!
|
|
\******************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
module.exports = require("next/dist/shared/lib/no-fallback-error.external");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "next/dist/shared/lib/page-path/normalize-data-path":
|
|
/*!*********************************************************************!*\
|
|
!*** external "next/dist/shared/lib/page-path/normalize-data-path" ***!
|
|
\*********************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
module.exports = require("next/dist/shared/lib/page-path/normalize-data-path");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "next/dist/shared/lib/router/utils/add-path-prefix":
|
|
/*!********************************************************************!*\
|
|
!*** external "next/dist/shared/lib/router/utils/add-path-prefix" ***!
|
|
\********************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
module.exports = require("next/dist/shared/lib/router/utils/add-path-prefix");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "next/dist/shared/lib/router/utils/format-url":
|
|
/*!***************************************************************!*\
|
|
!*** external "next/dist/shared/lib/router/utils/format-url" ***!
|
|
\***************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
module.exports = require("next/dist/shared/lib/router/utils/format-url");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "next/dist/shared/lib/router/utils/is-bot":
|
|
/*!***********************************************************!*\
|
|
!*** external "next/dist/shared/lib/router/utils/is-bot" ***!
|
|
\***********************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
module.exports = require("next/dist/shared/lib/router/utils/is-bot");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "next/dist/shared/lib/router/utils/remove-trailing-slash":
|
|
/*!**************************************************************************!*\
|
|
!*** external "next/dist/shared/lib/router/utils/remove-trailing-slash" ***!
|
|
\**************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
module.exports = require("next/dist/shared/lib/router/utils/remove-trailing-slash");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "next/dist/shared/lib/utils":
|
|
/*!*********************************************!*\
|
|
!*** external "next/dist/shared/lib/utils" ***!
|
|
\*********************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
module.exports = require("next/dist/shared/lib/utils");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "path":
|
|
/*!***********************!*\
|
|
!*** external "path" ***!
|
|
\***********************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
module.exports = require("path");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "react":
|
|
/*!************************!*\
|
|
!*** external "react" ***!
|
|
\************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
module.exports = require("react");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "react-dom":
|
|
/*!****************************!*\
|
|
!*** external "react-dom" ***!
|
|
\****************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
module.exports = require("react-dom");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "react/jsx-dev-runtime":
|
|
/*!****************************************!*\
|
|
!*** external "react/jsx-dev-runtime" ***!
|
|
\****************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
module.exports = require("react/jsx-dev-runtime");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "react/jsx-runtime":
|
|
/*!************************************!*\
|
|
!*** external "react/jsx-runtime" ***!
|
|
\************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
module.exports = require("react/jsx-runtime");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "stream":
|
|
/*!*************************!*\
|
|
!*** external "stream" ***!
|
|
\*************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
module.exports = require("stream");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "zlib":
|
|
/*!***********************!*\
|
|
!*** external "zlib" ***!
|
|
\***********************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
module.exports = require("zlib");
|
|
|
|
/***/ })
|
|
|
|
};
|
|
;
|
|
|
|
// 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"], () => (__webpack_exec__("(pages-dir-node)/./node_modules/next/dist/build/webpack/loaders/next-route-loader/index.js?kind=PAGES&page=%2Fcards&preferredRegion=&absolutePagePath=.%2Fpages%2Fcards.js&absoluteAppPath=private-next-pages%2F_app&absoluteDocumentPath=private-next-pages%2F_document&middlewareConfigBase64=e30%3D!")));
|
|
module.exports = __webpack_exports__;
|
|
|
|
})(); |