"use strict"; /* * ATTENTION: An "eval-source-map" devtool has been used. * This devtool is neither made for production nor for readable output files. * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) * or disable the default devtool with "devtool: false". * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). */ self["webpackHotUpdate_N_E"]("app/page",{ /***/ "(app-pages-browser)/./src/app/page.tsx": /*!**************************!*\ !*** ./src/app/page.tsx ***! \**************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Dashboard)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! framer-motion */ \"(app-pages-browser)/./node_modules/framer-motion/dist/es/render/components/motion/proxy.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! framer-motion */ \"(app-pages-browser)/./node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs\");\n/* harmony import */ var _barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=Line,LineChart,ResponsiveContainer!=!recharts */ \"(app-pages-browser)/./node_modules/recharts/es6/component/ResponsiveContainer.js\");\n/* harmony import */ var _barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! __barrel_optimize__?names=Line,LineChart,ResponsiveContainer!=!recharts */ \"(app-pages-browser)/./node_modules/recharts/es6/chart/LineChart.js\");\n/* harmony import */ var _barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! __barrel_optimize__?names=Line,LineChart,ResponsiveContainer!=!recharts */ \"(app-pages-browser)/./node_modules/recharts/es6/cartesian/Line.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/server.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/external-link.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/clock.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/refresh-cw.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/settings.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/trash-2.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/layout-dashboard.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/monitor.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/triangle-alert.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/history.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/activity.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/chevron-right.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/chevron-left.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/search.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/plus.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/bell.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/circle-check.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/zap.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$(), _s1 = $RefreshSig$();\n\n\n\n\n// Mock data generator for sparklines\nconst generateSparklineData = (points, isUp)=>{\n return Array.from({\n length: points\n }, (_, i)=>({\n value: isUp ? 80 + Math.random() * 20 : Math.random() * 30,\n time: i\n }));\n};\n// Components\nconst SidebarItem = (param)=>{\n let { item, isActive, isCollapsed, onClick } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.button, {\n onClick: onClick,\n whileHover: {\n x: 2\n },\n whileTap: {\n scale: 0.98\n },\n className: \"w-full flex items-center gap-3 px-3 py-2.5 rounded-lg transition-all duration-200 \".concat(isActive ? \"bg-emerald-500/10 text-emerald-400 border border-emerald-500/20\" : \"text-slate-400 hover:text-slate-100 hover:bg-slate-800/50\"),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"flex-shrink-0\",\n children: item.icon\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 96,\n columnNumber: 5\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.AnimatePresence, {\n mode: \"wait\",\n children: !isCollapsed && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.span, {\n initial: {\n opacity: 0,\n width: 0\n },\n animate: {\n opacity: 1,\n width: \"auto\"\n },\n exit: {\n opacity: 0,\n width: 0\n },\n className: \"text-sm font-medium whitespace-nowrap overflow-hidden\",\n children: item.label\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 99,\n columnNumber: 9\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 97,\n columnNumber: 5\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 86,\n columnNumber: 3\n }, undefined);\n};\n_c = SidebarItem;\nconst MetricCard = (param)=>{\n let { title, value, subtitle, icon: Icon, color, data, trend } = param;\n const colorClasses = {\n emerald: \"from-emerald-500/20 to-emerald-500/5 border-emerald-500/20\",\n blue: \"from-blue-500/20 to-blue-500/5 border-blue-500/20\",\n purple: \"from-purple-500/20 to-purple-500/5 border-purple-500/20\",\n amber: \"from-amber-500/20 to-amber-500/5 border-amber-500/20\"\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n whileHover: {\n y: -4,\n transition: {\n duration: 0.2\n }\n },\n className: \"relative overflow-hidden rounded-xl border bg-gradient-to-br p-5 \".concat(colorClasses[color], \" backdrop-blur-sm\"),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start 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)(\"p\", {\n className: \"text-slate-400 text-sm font-medium mb-1\",\n children: title\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 143,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-3xl font-bold text-white\",\n children: value\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 144,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2 mt-2\",\n children: [\n trend && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs \".concat(trend === \"up\" ? \"text-emerald-400\" : trend === \"down\" ? \"text-red-400\" : \"text-slate-400\"),\n children: trend === \"up\" ? \"↑\" : trend === \"down\" ? \"↓\" : \"→\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 147,\n columnNumber: 15\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-slate-500 text-xs\",\n children: subtitle\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 151,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 145,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 142,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-2.5 rounded-lg bg-\".concat(color, \"-500/10\"),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Icon, {\n className: \"w-5 h-5 text-\".concat(color, \"-400\"),\n style: {\n color: color === \"emerald\" ? \"#34d399\" : color === \"blue\" ? \"#60a5fa\" : color === \"purple\" ? \"#a78bfa\" : \"#fbbf24\"\n }\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 155,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 154,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 141,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 h-12\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_4__.ResponsiveContainer, {\n width: \"100%\",\n height: \"100%\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_5__.LineChart, {\n data: data,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_6__.Line, {\n type: \"monotone\",\n dataKey: \"value\",\n stroke: color === \"emerald\" ? \"#34d399\" : color === \"blue\" ? \"#60a5fa\" : color === \"purple\" ? \"#a78bfa\" : \"#fbbf24\",\n strokeWidth: 2,\n dot: false\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 162,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 161,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 160,\n columnNumber: 9\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 159,\n columnNumber: 7\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 137,\n columnNumber: 5\n }, undefined);\n};\n_c1 = MetricCard;\nconst ServiceCard = (param)=>{\n let { app, status, onDelete } = param;\n _s();\n const [isHovered, setIsHovered] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const sparklineData = generateSparklineData(12, status.isUp);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n layout: true,\n initial: {\n opacity: 0,\n scale: 0.95\n },\n animate: {\n opacity: 1,\n scale: 1\n },\n exit: {\n opacity: 0,\n scale: 0.95\n },\n whileHover: {\n y: -2\n },\n onHoverStart: ()=>setIsHovered(true),\n onHoverEnd: ()=>setIsHovered(false),\n className: \"group relative bg-slate-900/50 border border-slate-800 rounded-xl p-5 hover:border-slate-700 transition-all duration-300\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 left-4 right-4 h-0.5 rounded-full \".concat(status.isUp ? \"bg-emerald-500\" : \"bg-red-500\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 200,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-between mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-10 h-10 rounded-lg flex items-center justify-center \".concat(status.isUp ? \"bg-emerald-500/10\" : \"bg-red-500/10\"),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"w-5 h-5 \".concat(status.isUp ? \"text-emerald-400\" : \"text-red-400\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 205,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 204,\n columnNumber: 11\n }, undefined),\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)(\"h3\", {\n className: \"font-semibold text-white flex items-center gap-2\",\n children: [\n app.name,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: app.url,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"text-slate-500 hover:text-emerald-400 transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"w-3.5 h-3.5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 211,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 210,\n columnNumber: 15\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 208,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-slate-500\",\n children: [\n \"Port \",\n app.port\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 214,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 207,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 203,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium border \".concat(status.isUp ? \"bg-emerald-500/10 border-emerald-500/20 text-emerald-400\" : \"bg-red-500/10 border-red-500/20 text-red-400\"),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"relative flex h-1.5 w-1.5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"animate-ping absolute inline-flex h-full w-full rounded-full opacity-75 \".concat(status.isUp ? \"bg-emerald-400\" : \"bg-red-400\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 224,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"relative inline-flex rounded-full h-1.5 w-1.5 \".concat(status.isUp ? \"bg-emerald-500\" : \"bg-red-500\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 225,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 223,\n columnNumber: 11\n }, undefined),\n status.isUp ? \"Operational\" : \"Down\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 218,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 202,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-1.5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-slate-400\",\n children: \"Uptime\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 236,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-semibold text-white\",\n children: [\n status.uptime,\n \"%\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 237,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 235,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-1.5 w-full bg-slate-800 rounded-full overflow-hidden\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n width: 0\n },\n animate: {\n width: \"\".concat(status.uptime, \"%\")\n },\n transition: {\n duration: 1,\n delay: 0.2\n },\n className: \"h-full rounded-full \".concat(status.uptime > 95 ? \"bg-emerald-500\" : status.uptime > 80 ? \"bg-amber-500\" : \"bg-red-500\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 240,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 239,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 234,\n columnNumber: 9\n }, undefined),\n /*#__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)(\"span\", {\n className: \"text-xs text-slate-400\",\n children: \"Response Time\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 251,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-lg font-semibold text-white\",\n children: status.avgResponseTime > 0 ? \"\".concat(status.avgResponseTime, \"ms\") : \"—\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 252,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 250,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-10 -mx-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_4__.ResponsiveContainer, {\n width: \"100%\",\n height: \"100%\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_5__.LineChart, {\n data: sparklineData,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_6__.Line, {\n type: \"monotone\",\n dataKey: \"value\",\n stroke: status.isUp ? \"#34d399\" : \"#f87171\",\n strokeWidth: 1.5,\n dot: false\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 261,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 260,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 259,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 258,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between text-xs text-slate-500\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n className: \"w-3 h-3\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 275,\n columnNumber: 13\n }, undefined),\n status.latest ? new Date(status.latest.timestamp).toLocaleTimeString() : \"Never\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 274,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.AnimatePresence, {\n children: isHovered && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0,\n x: 10\n },\n animate: {\n opacity: 1,\n x: 0\n },\n exit: {\n opacity: 0,\n x: 10\n },\n className: \"flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"p-1.5 text-slate-400 hover:text-white hover:bg-slate-800 rounded transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"w-3.5 h-3.5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 289,\n columnNumber: 19\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 288,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"p-1.5 text-slate-400 hover:text-white hover:bg-slate-800 rounded transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n className: \"w-3.5 h-3.5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 292,\n columnNumber: 19\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 291,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: onDelete,\n className: \"p-1.5 text-slate-400 hover:text-red-400 hover:bg-red-500/10 rounded transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n className: \"w-3.5 h-3.5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 298,\n columnNumber: 19\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 294,\n columnNumber: 17\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 282,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 280,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 273,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 232,\n columnNumber: 7\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 189,\n columnNumber: 5\n }, undefined);\n};\n_s(ServiceCard, \"FPQn8a98tPjpohC7NUYORQR8GJE=\");\n_c2 = ServiceCard;\nfunction Dashboard() {\n _s1();\n const [apps, setApps] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [status, setStatus] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [sidebarCollapsed, setSidebarCollapsed] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [activeNav, setActiveNav] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"overview\");\n const [showAddModal, setShowAddModal] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [newApp, setNewApp] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n name: \"\",\n url: \"http://localhost:\",\n port: 3000,\n enabled: true\n });\n const navItems = [\n {\n id: \"overview\",\n label: \"Overview\",\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 324,\n columnNumber: 48\n }, this)\n },\n {\n id: \"services\",\n label: \"Monitored Services\",\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 325,\n columnNumber: 58\n }, this)\n },\n {\n id: \"incidents\",\n label: \"Incidents\",\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 326,\n columnNumber: 50\n }, this)\n },\n {\n id: \"history\",\n label: \"History / Logs\",\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 327,\n columnNumber: 53\n }, this)\n },\n {\n id: \"settings\",\n label: \"Settings\",\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 328,\n columnNumber: 48\n }, this)\n }\n ];\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Dashboard.useEffect\": ()=>{\n fetchData();\n const interval = setInterval(fetchData, 30000);\n return ({\n \"Dashboard.useEffect\": ()=>clearInterval(interval)\n })[\"Dashboard.useEffect\"];\n }\n }[\"Dashboard.useEffect\"], []);\n async function fetchData() {\n try {\n const res = await fetch(\"/api/monitor\");\n const data = await res.json();\n setApps(data.apps || []);\n setStatus(data.status || []);\n } catch (err) {\n console.error(\"Failed to fetch data:\", err);\n } finally{\n setLoading(false);\n }\n }\n async function addApp(e) {\n e.preventDefault();\n if (!newApp.name || !newApp.url) return;\n await fetch(\"/api/monitor\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n action: \"addApp\",\n app: newApp\n })\n });\n setShowAddModal(false);\n setNewApp({\n name: \"\",\n url: \"http://localhost:\",\n port: 3000,\n enabled: true\n });\n fetchData();\n }\n async function deleteApp(id) {\n if (!confirm(\"Delete this monitor?\")) return;\n await fetch(\"/api/monitor\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n action: \"deleteApp\",\n id\n })\n });\n fetchData();\n }\n function getAppStatus(appId) {\n const appStatus = status.filter((s)=>s.appId === appId);\n const latest = appStatus[appStatus.length - 1];\n const isUp = (latest === null || latest === void 0 ? void 0 : latest.status) === \"up\";\n const uptime = appStatus.length > 0 ? Math.round(appStatus.filter((s)=>s.status === \"up\").length / appStatus.length * 100) : 100;\n const avgResponseTime = appStatus.length > 0 ? Math.round(appStatus.filter((s)=>s.responseTime).reduce((acc, s)=>acc + (s.responseTime || 0), 0) / appStatus.filter((s)=>s.responseTime).length) || 0 : 0;\n return {\n latest,\n isUp,\n uptime,\n avgResponseTime\n };\n }\n const stats = {\n total: apps.length,\n online: apps.filter((app)=>getAppStatus(app.id).isUp).length,\n offline: apps.filter((app)=>!getAppStatus(app.id).isUp).length,\n avgUptime: apps.length > 0 ? Math.round(apps.reduce((acc, app)=>acc + getAppStatus(app.id).uptime, 0) / apps.length) : 0,\n avgResponseTime: apps.length > 0 ? Math.round(apps.reduce((acc, app)=>acc + getAppStatus(app.id).avgResponseTime, 0) / apps.length) : 0,\n incidents: status.filter((s)=>s.status === \"down\").length\n };\n const allUp = stats.online === stats.total && stats.total > 0;\n // Generate sparkline data for metrics\n const servicesData = generateSparklineData(20, true);\n const uptimeData = generateSparklineData(20, true);\n const responseData = generateSparklineData(20, true).map((d)=>({\n ...d,\n value: d.value * 2\n }));\n const incidentsData = generateSparklineData(20, false);\n if (loading) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-slate-950 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0\n },\n animate: {\n opacity: 1\n },\n className: \"flex flex-col items-center gap-4\",\n children: [\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)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n animate: {\n rotate: 360\n },\n transition: {\n duration: 2,\n repeat: Infinity,\n ease: \"linear\"\n },\n className: \"w-12 h-12 rounded-xl bg-gradient-to-br from-emerald-500 to-cyan-500\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 416,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 w-12 h-12 rounded-xl bg-gradient-to-br from-emerald-500 to-cyan-500 blur-xl opacity-50\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 421,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 415,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-slate-400\",\n children: \"Loading dashboard...\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 423,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 410,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 409,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-slate-950 text-slate-100 flex\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.aside, {\n initial: false,\n animate: {\n width: sidebarCollapsed ? 72 : 240\n },\n className: \"fixed left-0 top-0 bottom-0 bg-slate-900/80 backdrop-blur-xl border-r border-slate-800 z-50 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-16 flex items-center px-4 border-b border-slate-800\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-8 h-8 rounded-lg bg-gradient-to-br from-emerald-500 to-cyan-500 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n className: \"w-4 h-4 text-white\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 440,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 439,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.AnimatePresence, {\n mode: \"wait\",\n children: !sidebarCollapsed && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.span, {\n initial: {\n opacity: 0,\n width: 0\n },\n animate: {\n opacity: 1,\n width: \"auto\"\n },\n exit: {\n opacity: 0,\n width: 0\n },\n className: \"ml-3 font-bold text-lg whitespace-nowrap overflow-hidden\",\n children: \"Heartbeat\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 444,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 442,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 438,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"flex-1 p-3 space-y-1\",\n children: navItems.map((item)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SidebarItem, {\n item: item,\n isActive: activeNav === item.id,\n isCollapsed: sidebarCollapsed,\n onClick: ()=>setActiveNav(item.id)\n }, item.id, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 459,\n columnNumber: 13\n }, this))\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 457,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-3 border-t border-slate-800\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSidebarCollapsed(!sidebarCollapsed),\n className: \"w-full flex items-center justify-center p-2 text-slate-400 hover:text-white hover:bg-slate-800/50 rounded-lg transition-colors\",\n children: sidebarCollapsed ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 475,\n columnNumber: 33\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 475,\n columnNumber: 72\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 471,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 470,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 432,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"flex-1 min-h-screen transition-all duration-300\",\n style: {\n marginLeft: sidebarCollapsed ? 72 : 240\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"h-16 bg-slate-900/50 backdrop-blur-sm border-b border-slate-800 sticky top-0 z-40 px-6 flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2 px-3 py-1.5 rounded-full border \".concat(allUp ? \"bg-emerald-500/10 border-emerald-500/20\" : \"bg-amber-500/10 border-amber-500/20\"),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"relative flex h-2 w-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"animate-ping absolute inline-flex h-full w-full rounded-full opacity-75 \".concat(allUp ? \"bg-emerald-400\" : \"bg-amber-400\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 495,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"relative inline-flex rounded-full h-2 w-2 \".concat(allUp ? \"bg-emerald-500\" : \"bg-amber-500\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 496,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 494,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-medium \".concat(allUp ? \"text-emerald-400\" : \"text-amber-400\"),\n children: allUp ? \"All Systems Operational\" : \"\".concat(stats.offline, \" Service\").concat(stats.offline > 1 ? 's' : '', \" Down\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 498,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-slate-500 text-xs\",\n children: [\n \"• Updated \",\n new Date().toLocaleTimeString()\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 501,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 489,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 488,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\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)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_20__[\"default\"], {\n className: \"w-4 h-4 absolute left-3 top-1/2 -translate-y-1/2 text-slate-500\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 509,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n placeholder: \"Search...\",\n className: \"w-64 bg-slate-800/50 border border-slate-700 rounded-lg pl-10 pr-4 py-2 text-sm text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none transition-colors\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 510,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 508,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setShowAddModal(true),\n className: \"flex items-center gap-2 px-4 py-2 bg-emerald-600 hover:bg-emerald-500 text-white rounded-lg text-sm font-medium transition-colors\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_21__[\"default\"], {\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 522,\n columnNumber: 15\n }, this),\n \"Add Monitor\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 518,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: fetchData,\n className: \"p-2 text-slate-400 hover:text-white hover:bg-slate-800 rounded-lg transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 531,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 527,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"p-2 text-slate-400 hover:text-white hover:bg-slate-800 rounded-lg transition-colors relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_22__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 536,\n columnNumber: 15\n }, this),\n stats.incidents > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"absolute top-1 right-1 w-2 h-2 bg-red-500 rounded-full\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 538,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 535,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-9 h-9 rounded-full bg-gradient-to-br from-emerald-500 to-cyan-500 flex items-center justify-center text-white font-medium text-sm\",\n children: \"MB\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 543,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 506,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 486,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-6 space-y-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(MetricCard, {\n title: \"Services Online\",\n value: \"\".concat(stats.online, \"/\").concat(stats.total),\n subtitle: allUp ? \"All healthy\" : \"\".concat(stats.offline, \" down\"),\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n color: \"emerald\",\n data: servicesData,\n trend: \"up\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 553,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(MetricCard, {\n title: \"Average Uptime\",\n value: \"\".concat(stats.avgUptime, \"%\"),\n subtitle: \"Last 30 days\",\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_23__[\"default\"],\n color: \"blue\",\n data: uptimeData,\n trend: \"up\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 562,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(MetricCard, {\n title: \"Avg Response Time\",\n value: \"\".concat(stats.avgResponseTime, \"ms\"),\n subtitle: \"Across all services\",\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_24__[\"default\"],\n color: \"purple\",\n data: responseData,\n trend: stats.avgResponseTime < 200 ? \"up\" : \"down\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 571,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(MetricCard, {\n title: \"Total Incidents\",\n value: stats.incidents,\n subtitle: \"Last 24 hours\",\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n color: \"amber\",\n data: incidentsData,\n trend: stats.incidents === 0 ? \"up\" : \"down\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 580,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 552,\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)(\"div\", {\n className: \"flex items-center justify-between mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-lg font-semibold text-white\",\n children: \"Monitored Services\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 594,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-slate-500\",\n children: [\n stats.total,\n \" services\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 595,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 593,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n layout: true,\n className: \"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.AnimatePresence, {\n mode: \"popLayout\",\n children: apps.map((app)=>{\n const appStatus = getAppStatus(app.id);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(ServiceCard, {\n app: app,\n status: appStatus,\n onDelete: ()=>deleteApp(app.id)\n }, app.id, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 606,\n columnNumber: 21\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 602,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 598,\n columnNumber: 13\n }, this),\n apps.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0,\n y: 20\n },\n animate: {\n opacity: 1,\n y: 0\n },\n className: \"text-center py-16 bg-slate-900/30 rounded-xl border border-dashed border-slate-800\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-16 h-16 bg-slate-800 rounded-2xl flex items-center justify-center mx-auto mb-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n className: \"w-8 h-8 text-slate-600\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 624,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 623,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold text-white mb-2\",\n children: \"No monitors yet\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 626,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-slate-500 mb-4\",\n children: \"Start monitoring your services\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 627,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setShowAddModal(true),\n className: \"px-4 py-2 bg-emerald-600 hover:bg-emerald-500 text-white rounded-lg transition-colors\",\n children: \"Add Your First Monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 628,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 618,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 592,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 550,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 481,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.AnimatePresence, {\n children: showAddModal && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0\n },\n animate: {\n opacity: 1\n },\n exit: {\n opacity: 0\n },\n className: \"fixed inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center z-50 p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0,\n scale: 0.95,\n y: 20\n },\n animate: {\n opacity: 1,\n scale: 1,\n y: 0\n },\n exit: {\n opacity: 0,\n scale: 0.95,\n y: 20\n },\n className: \"bg-slate-900 border border-slate-800 rounded-xl p-6 w-full max-w-md shadow-2xl\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xl font-bold text-white mb-2\",\n children: \"Add New Monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 655,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-slate-400 text-sm mb-6\",\n children: \"Configure a new service to monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 656,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n onSubmit: addApp,\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-slate-300 mb-2\",\n children: \"Service Name\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 660,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: newApp.name,\n onChange: (e)=>setNewApp({\n ...newApp,\n name: e.target.value\n }),\n className: \"w-full bg-slate-800/50 border border-slate-700 rounded-lg px-4 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none transition-colors\",\n placeholder: \"My Service\",\n required: true\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 661,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 659,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 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 text-slate-300 mb-2\",\n children: \"URL\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 673,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"url\",\n value: newApp.url,\n onChange: (e)=>setNewApp({\n ...newApp,\n url: e.target.value\n }),\n className: \"w-full bg-slate-800/50 border border-slate-700 rounded-lg px-4 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none transition-colors\",\n placeholder: \"http://localhost:3000\",\n required: true\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 674,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 672,\n columnNumber: 19\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 text-slate-300 mb-2\",\n children: \"Port\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 684,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n value: newApp.port,\n onChange: (e)=>setNewApp({\n ...newApp,\n port: parseInt(e.target.value)\n }),\n className: \"w-full bg-slate-800/50 border border-slate-700 rounded-lg px-4 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none transition-colors\",\n required: true\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 685,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 683,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 671,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-3 pt-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setShowAddModal(false),\n className: \"flex-1 px-4 py-2.5 border border-slate-700 rounded-lg text-slate-300 hover:bg-slate-800 transition-colors\",\n children: \"Cancel\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 696,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"submit\",\n className: \"flex-1 px-4 py-2.5 bg-emerald-600 hover:bg-emerald-500 text-white rounded-lg font-medium transition-colors\",\n children: \"Add Monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 703,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 695,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 658,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 649,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 643,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 641,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 430,\n columnNumber: 5\n }, this);\n}\n_s1(Dashboard, \"oWLErnwVJVcXRzhBAYwsceDoLkg=\");\n_c3 = Dashboard;\nvar _c, _c1, _c2, _c3;\n$RefreshReg$(_c, \"SidebarItem\");\n$RefreshReg$(_c1, \"MetricCard\");\n$RefreshReg$(_c2, \"ServiceCard\");\n$RefreshReg$(_c3, \"Dashboard\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9hcHAvcGFnZS50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbUQ7QUFDSztBQU10QztBQXlCSTtBQTZCdEIscUNBQXFDO0FBQ3JDLE1BQU0wQix3QkFBd0IsQ0FBQ0MsUUFBZ0JDO0lBQzdDLE9BQU9DLE1BQU1DLElBQUksQ0FBQztRQUFFQyxRQUFRSjtJQUFPLEdBQUcsQ0FBQ0ssR0FBR0MsSUFBTztZQUMvQ0MsT0FBT04sT0FDSCxLQUFLTyxLQUFLQyxNQUFNLEtBQUssS0FDckJELEtBQUtDLE1BQU0sS0FBSztZQUNwQkMsTUFBTUo7UUFDUjtBQUNGO0FBRUEsYUFBYTtBQUNiLE1BQU1LLGNBQWM7UUFBQyxFQUNuQkMsSUFBSSxFQUNKQyxRQUFRLEVBQ1JDLFdBQVcsRUFDWEMsT0FBTyxFQU1SO3lCQUNDLDhEQUFDdkMsaURBQU1BLENBQUN3QyxNQUFNO1FBQ1pELFNBQVNBO1FBQ1RFLFlBQVk7WUFBRUMsR0FBRztRQUFFO1FBQ25CQyxVQUFVO1lBQUVDLE9BQU87UUFBSztRQUN4QkMsV0FBVyxxRkFJVixPQUhDUixXQUNJLG9FQUNBOzswQkFHTiw4REFBQ1M7Z0JBQUtELFdBQVU7MEJBQWlCVCxLQUFLVyxJQUFJOzs7Ozs7MEJBQzFDLDhEQUFDOUMsMERBQWVBO2dCQUFDK0MsTUFBSzswQkFDbkIsQ0FBQ1YsNkJBQ0EsOERBQUN0QyxpREFBTUEsQ0FBQzhDLElBQUk7b0JBQ1ZHLFNBQVM7d0JBQUVDLFNBQVM7d0JBQUdDLE9BQU87b0JBQUU7b0JBQ2hDQyxTQUFTO3dCQUFFRixTQUFTO3dCQUFHQyxPQUFPO29CQUFPO29CQUNyQ0UsTUFBTTt3QkFBRUgsU0FBUzt3QkFBR0MsT0FBTztvQkFBRTtvQkFDN0JOLFdBQVU7OEJBRVRULEtBQUtrQixLQUFLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7S0E5QmZuQjtBQXFDTixNQUFNb0IsYUFBYTtRQUFDLEVBQ2xCQyxLQUFLLEVBQ0x6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V25CO0lBeFp3QjJEO01BQUFBIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivc3JjL2FwcC9wYWdlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IG1vdGlvbiwgQW5pbWF0ZVByZXNlbmNlIH0gZnJvbSBcImZyYW1lci1tb3Rpb25cIjtcbmltcG9ydCB7XG4gIExpbmVDaGFydCxcbiAgTGluZSxcbiAgUmVzcG9uc2l2ZUNvbnRhaW5lcixcbiAgWUF4aXMsXG59IGZyb20gXCJyZWNoYXJ0c1wiO1xuaW1wb3J0IHtcbiAgQWN0aXZpdHksXG4gIFBsdXMsXG4gIFJlZnJlc2hDdyxcbiAgVHJhc2gyLFxuICBFeHRlcm5hbExpbmssXG4gIFNlYXJjaCxcbiAgQmVsbCxcbiAgU2V0dGluZ3MsXG4gIENoZXZyb25MZWZ0LFxuICBDaGV2cm9uUmlnaHQsXG4gIExheW91dERhc2hib2FyZCxcbiAgTW9uaXRvcixcbiAgQWxlcnRUcmlhbmdsZSxcbiAgSGlzdG9yeSxcbiAgTW9yZVZlcnRpY2FsLFxuICBDaGVja0NpcmNsZTIsXG4gIFhDaXJjbGUsXG4gIEFsZXJ0Q2lyY2xlLFxuICBDbG9jayxcbiAgWmFwLFxuICBUcmVuZGluZ1VwLFxuICBTZXJ2ZXIsXG4gIE1lbnUsXG59IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuLy8gVHlwZXNcbmludGVyZmFjZSBBcHAge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICBwb3J0OiBudW1iZXI7XG4gIHBhdGg6IHN0cmluZztcbiAgY29tbWFuZDogc3RyaW5nO1xuICBjYXRlZ29yeTogc3RyaW5nO1xuICBjb2xvcjogc3RyaW5nO1xuICBlbmFibGVkOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgU3RhdHVzRW50cnkge1xuICBhcHBJZDogc3RyaW5nO1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgc3RhdHVzOiBcInVwXCIgfCBcImRvd25cIjtcbiAgcmVzcG9uc2VUaW1lPzogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgTmF2SXRlbSB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGljb246IFJlYWN0LlJlYWN0Tm9kZTtcbn1cblxuLy8gTW9jayBkYXRhIGdlbmVyYXRvciBmb3Igc3BhcmtsaW5lc1xuY29uc3QgZ2VuZXJhdGVTcGFya2xpbmVEYXRhID0gKHBvaW50czogbnVtYmVyLCBpc1VwOiBib29sZWFuKSA9PiB7XG4gIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBwb2ludHMgfSwgKF8sIGkpID0+ICh7XG4gICAgdmFsdWU6IGlzVXAgXG4gICAgICA/IDgwICsgTWF0aC5yYW5kb20oKSAqIDIwIFxuICAgICAgOiBNYXRoLnJhbmRvbSgpICogMzAsXG4gICAgdGltZTogaSxcbiAgfSkpO1xufTtcblxuLy8gQ29tcG9uZW50c1xuY29uc3QgU2lkZWJhckl0ZW0gPSAoeyBcbiAgaXRlbSwgXG4gIGlzQWN0aXZlLCBcbiAgaXNDb2xsYXBzZWQsIFxuICBvbkNsaWNrIFxufTogeyBcbiAgaXRlbTogTmF2SXRlbTsgXG4gIGlzQWN0aXZlOiBib29sZWFuOyBcbiAgaXNDb2xsYXBzZWQ6IGJvb2xlYW47XG4gIG9uQ2xpY2s6ICgpID0+IHZvaWQ7XG59KSA9PiAoXG4gIDxtb3Rpb24uYnV0dG9uXG4gICAgb25DbGljaz17b25DbGlja31cbiAgICB3aGlsZUhvdmVyPXt7IHg6IDIgfX1cbiAgICB3aGlsZVRhcD17eyBzY2FsZTogMC45OCB9fVxuICAgIGNsYXNzTmFtZT17YHctZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyBweC0zIHB5LTIuNSByb3VuZGVkLWxnIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMCAke1xuICAgICAgaXNBY3RpdmUgXG4gICAgICAgID8gXCJiZy1lbWVyYWxkLTUwMC8xMCB0ZXh0LWVtZXJhbGQtNDAwIGJvcmRlciBib3JkZXItZW1lcmFsZC01MDAvMjBcIiBcbiAgICAgICAgOiBcInRleHQtc2xhdGUtNDAwIGhvdmVyOnRleHQtc2xhdGUtMTAwIGhvdmVyOmJnLXNsYXRlLTgwMC81MFwiXG4gICAgfWB9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJmbGV4LXNocmluay0wXCI+e2l0ZW0uaWNvbn08L3NwYW4+XG4gICAgPEFuaW1hdGVQcmVzZW5jZSBtb2RlPVwid2FpdFwiPlxuICAgICAgeyFpc0NvbGxhcHNlZCAmJiAoXG4gICAgICAgIDxtb3Rpb24uc3BhblxuICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCwgd2lkdGg6IDAgfX1cbiAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHdpZHRoOiBcImF1dG9cIiB9fVxuICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCwgd2lkdGg6IDAgfX1cbiAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHdoaXRlc3BhY2Utbm93cmFwIG92ZXJmbG93LWhpZGRlblwiXG4gICAgICAgID5cbiAgICAgICAgICB7aXRlbS5sYWJlbH1cbiAgICAgICAgPC9tb3Rpb24uc3Bhbj5cbiAgICAgICl9XG4gICAgPC9BbmltYXRlUHJlc2VuY2U+XG4gIDwvbW90aW9uLmJ1dHRvbj5cbik7XG5cbmNvbnN0IE1ldHJpY0NhcmQgPSAoeyBcbiAgdGl0bGUsIFxuICB2YWx1ZSwgXG4gIHN1YnRpdGxlLCBcbiAgaWNvbjogSWNvbiwgXG4gIGNvbG9yLCBcbiAgZGF0YSxcbiAgdHJlbmQgXG59OiB7IFxuICB0aXRsZTogc3RyaW5nOyBcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlcjsgXG4gIHN1YnRpdGxlOiBzdHJpbmc7XG4gIGljb246IGFueTtcbiAgY29sb3I6IHN0cmluZztcbiAgZGF0YTogYW55W107XG4gIHRyZW5kPzogXCJ1cFwiIHwgXCJkb3duXCIgfCBcIm5ldXRyYWxcIjtcbn0pID0+IHtcbiAgY29uc3QgY29sb3JDbGFzc2VzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIGVtZXJhbGQ6IFwiZnJvbS1lbWVyYWxkLTUwMC8yMCB0by1lbWVyYWxkLTUwMC81IGJvcmRlci1lbWVyYWxkLTUwMC8yMFwiLFxuICAgIGJsdWU6IFwiZnJvbS1ibHVlLTUwMC8yMCB0by1ibHVlLTUwMC81IGJvcmRlci1ibHVlLTUwMC8yMFwiLFxuICAgIHB1cnBsZTogXCJmcm9tLXB1cnBsZS01MDAvMjAgdG8tcHVycGxlLTUwMC81IGJvcmRlci1wdXJwbGUtNTAwLzIwXCIsXG4gICAgYW1iZXI6IFwiZnJvbS1hbWJlci01MDAvMjAgdG8tYW1iZXItNTAwLzUgYm9yZGVyLWFtYmVyLTUwMC8yMFwiLFxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPG1vdGlvbi5kaXZcbiAgICAgIHdoaWxlSG92ZXI9e3sgeTogLTQsIHRyYW5zaXRpb246IHsgZHVyYXRpb246IDAuMiB9IH19XG4gICAgICBjbGFzc05hbWU9e2ByZWxhdGl2ZSBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC14bCBib3JkZXIgYmctZ3JhZGllbnQtdG8tYnIgcC01ICR7Y29sb3JDbGFzc2VzW2NvbG9yXX0gYmFja2Ryb3AtYmx1ci1zbWB9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc2xhdGUtNDAwIHRleHQtc20gZm9udC1tZWRpdW0gbWItMVwiPnt0aXRsZX08L3A+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC0zeGwgZm9udC1ib2xkIHRleHQtd2hpdGVcIj57dmFsdWV9PC9wPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgbXQtMlwiPlxuICAgICAgICAgICAge3RyZW5kICYmIChcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgdGV4dC14cyAke3RyZW5kID09PSBcInVwXCIgPyBcInRleHQtZW1lcmFsZC00MDBcIiA6IHRyZW5kID09PSBcImRvd25cIiA/IFwidGV4dC1yZWQtNDAwXCIgOiBcInRleHQtc2xhdGUtNDAwXCJ9YH0+XG4gICAgICAgICAgICAgICAge3RyZW5kID09PSBcInVwXCIgPyBcIuKGkVwiIDogdHJlbmQgPT09IFwiZG93blwiID8gXCLihpNcIiA6IFwi4oaSXCJ9IFxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbGF0ZS01MDAgdGV4dC14c1wiPntzdWJ0aXRsZX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHAtMi41IHJvdW5kZWQtbGcgYmctJHtjb2xvcn0tNTAwLzEwYH0+XG4gICAgICAgICAgPEljb24gY2xhc3NOYW1lPXtgdy01IGgtNSB0ZXh0LSR7Y29sb3J9LTQwMGB9IHN0eWxlPXt7IGNvbG9yOiBjb2xvciA9PT0gXCJlbWVyYWxkXCIgPyBcIiMzNGQzOTlcIiA6IGNvbG9yID09PSBcImJsdWVcIiA/IFwiIzYwYTVmYVwiIDogY29sb3IgPT09IFwicHVycGxlXCIgPyBcIiNhNzhiZmFcIiA6IFwiI2ZiYmYyNFwiIH19IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICBcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtNCBoLTEyXCI+XG4gICAgICAgIDxSZXNwb25zaXZlQ29udGFpbmVyIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIj5cbiAgICAgICAgICA8TGluZUNoYXJ0IGRhdGE9e2RhdGF9PlxuICAgICAgICAgICAgPExpbmVcbiAgICAgICAgICAgICAgdHlwZT1cIm1vbm90b25lXCJcbiAgICAgICAgICAgICAgZGF0YUtleT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgc3Ryb2tlPXtjb2xvciA9PT0gXCJlbWVyYWxkXCIgPyBcIiMzNGQzOTlcIiA6IGNvbG9yID09PSBcImJsdWVcIiA/IFwiIzYwYTVmYVwiIDogY29sb3IgPT09IFwicHVycGxlXCIgPyBcIiNhNzhiZmFcIiA6IFwiI2ZiYmYyNFwifVxuICAgICAgICAgICAgICBzdHJva2VXaWR0aD17Mn1cbiAgICAgICAgICAgICAgZG90PXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9MaW5lQ2hhcnQ+XG4gICAgICAgIDwvUmVzcG9uc2l2ZUNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbW90aW9uLmRpdj5cbiAgKTtcbn07XG5cbmNvbnN0IFNlcnZpY2VDYXJkID0gKHsgXG4gIGFwcCwgXG4gIHN0YXR1cywgXG4gIG9uRGVsZXRlIFxufTogeyBcbiAgYXBwOiBBcHA7IFxuICBzdGF0dXM6IHsgaXNVcDogYm9vbGVhbjsgdXB0aW1lOiBudW1iZXI7IGF2Z1Jlc3BvbnNlVGltZTogbnVtYmVyOyBsYXRlc3Q/OiBTdGF0dXNFbnRyeSB9OyBcbiAgb25EZWxldGU6ICgpID0+IHZvaWQ7XG59KSA9PiB7XG4gIGNvbnN0IFtpc0hvdmVyZWQsIHNldElzSG92ZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHNwYXJrbGluZURhdGEgPSBnZW5lcmF0ZVNwYXJrbGluZURhdGEoMTIsIHN0YXR1cy5pc1VwKTtcblxuICByZXR1cm4gKFxuICAgIDxtb3Rpb24uZGl2XG4gICAgICBsYXlvdXRcbiAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCwgc2NhbGU6IDAuOTUgfX1cbiAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgc2NhbGU6IDEgfX1cbiAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCwgc2NhbGU6IDAuOTUgfX1cbiAgICAgIHdoaWxlSG92ZXI9e3sgeTogLTIgfX1cbiAgICAgIG9uSG92ZXJTdGFydD17KCkgPT4gc2V0SXNIb3ZlcmVkKHRydWUpfVxuICAgICAgb25Ib3ZlckVuZD17KCkgPT4gc2V0SXNIb3ZlcmVkKGZhbHNlKX1cbiAgICAgIGNsYXNzTmFtZT1cImdyb3VwIHJlbGF0aXZlIGJnLXNsYXRlLTkwMC81MCBib3JkZXIgYm9yZGVyLXNsYXRlLTgwMCByb3VuZGVkLXhsIHAtNSBob3Zlcjpib3JkZXItc2xhdGUtNzAwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMFwiXG4gICAgPlxuICAgICAgey8qIFN0YXR1cyBJbmRpY2F0b3IgTGluZSAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYWJzb2x1dGUgdG9wLTAgbGVmdC00IHJpZ2h0LTQgaC0wLjUgcm91bmRlZC1mdWxsICR7c3RhdHVzLmlzVXAgPyBcImJnLWVtZXJhbGQtNTAwXCIgOiBcImJnLXJlZC01MDBcIn1gfSAvPlxuICAgICAgXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtc3RhcnQganVzdGlmeS1iZXR3ZWVuIG1iLTRcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy0xMCBoLTEwIHJvdW5kZWQtbGcgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgJHtzdGF0dXMuaXNVcCA/IFwiYmctZW1lcmFsZC01MDAvMTBcIiA6IFwiYmctcmVkLTUwMC8xMFwifWB9PlxuICAgICAgICAgICAgPFNlcnZlciBjbGFzc05hbWU9e2B3LTUgaC01ICR7c3RhdHVzLmlzVXAgPyBcInRleHQtZW1lcmFsZC00MDBcIiA6IFwidGV4dC1yZWQtNDAwXCJ9YH0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGQgdGV4dC13aGl0ZSBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICB7YXBwLm5hbWV9XG4gICAgICAgICAgICAgIDxhIGhyZWY9e2FwcC51cmx9IHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIiBjbGFzc05hbWU9XCJ0ZXh0LXNsYXRlLTUwMCBob3Zlcjp0ZXh0LWVtZXJhbGQtNDAwIHRyYW5zaXRpb24tY29sb3JzXCI+XG4gICAgICAgICAgICAgICAgPEV4dGVybmFsTGluayBjbGFzc05hbWU9XCJ3LTMuNSBoLTMuNVwiIC8+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtc2xhdGUtNTAwXCI+UG9ydCB7YXBwLnBvcnR9PC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgcHgtMi41IHB5LTEgcm91bmRlZC1mdWxsIHRleHQteHMgZm9udC1tZWRpdW0gYm9yZGVyICR7XG4gICAgICAgICAgc3RhdHVzLmlzVXAgXG4gICAgICAgICAgICA/IFwiYmctZW1lcmFsZC01MDAvMTAgYm9yZGVyLWVtZXJhbGQtNTAwLzIwIHRleHQtZW1lcmFsZC00MDBcIiBcbiAgICAgICAgICAgIDogXCJiZy1yZWQtNTAwLzEwIGJvcmRlci1yZWQtNTAwLzIwIHRleHQtcmVkLTQwMFwiXG4gICAgICAgIH1gfT5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBmbGV4IGgtMS41IHctMS41XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2BhbmltYXRlLXBpbmcgYWJzb2x1dGUgaW5saW5lLWZsZXggaC1mdWxsIHctZnVsbCByb3VuZGVkLWZ1bGwgb3BhY2l0eS03NSAke3N0YXR1cy5pc1VwID8gXCJiZy1lbWVyYWxkLTQwMFwiIDogXCJiZy1yZWQtNDAwXCJ9YH0+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgcmVsYXRpdmUgaW5saW5lLWZsZXggcm91bmRlZC1mdWxsIGgtMS41IHctMS41ICR7c3RhdHVzLmlzVXAgPyBcImJnLWVtZXJhbGQtNTAwXCIgOiBcImJnLXJlZC01MDBcIn1gfT48L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIHtzdGF0dXMuaXNVcCA/IFwiT3BlcmF0aW9uYWxcIiA6IFwiRG93blwifVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogTWV0cmljcyAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XG4gICAgICAgIHsvKiBVcHRpbWUgKi99XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItMS41XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtc2xhdGUtNDAwXCI+VXB0aW1lPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtd2hpdGVcIj57c3RhdHVzLnVwdGltZX0lPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC0xLjUgdy1mdWxsIGJnLXNsYXRlLTgwMCByb3VuZGVkLWZ1bGwgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICA8bW90aW9uLmRpdiBcbiAgICAgICAgICAgICAgaW5pdGlhbD17eyB3aWR0aDogMCB9fVxuICAgICAgICAgICAgICBhbmltYXRlPXt7IHdpZHRoOiBgJHtzdGF0dXMudXB0aW1lfSVgIH19XG4gICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDEsIGRlbGF5OiAwLjIgfX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgaC1mdWxsIHJvdW5kZWQtZnVsbCAke3N0YXR1cy51cHRpbWUgPiA5NSA/IFwiYmctZW1lcmFsZC01MDBcIiA6IHN0YXR1cy51cHRpbWUgPiA4MCA/IFwiYmctYW1iZXItNTAwXCIgOiBcImJnLXJlZC01MDBcIn1gfSBcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBSZXNwb25zZSBUaW1lICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1zbGF0ZS00MDBcIj5SZXNwb25zZSBUaW1lPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlXCI+XG4gICAgICAgICAgICB7c3RhdHVzLmF2Z1Jlc3BvbnNlVGltZSA+IDAgPyBgJHtzdGF0dXMuYXZnUmVzcG9uc2VUaW1lfW1zYCA6IFwi4oCUXCJ9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7LyogU3BhcmtsaW5lICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtMTAgLW14LTFcIj5cbiAgICAgICAgICA8UmVzcG9uc2l2ZUNvbnRhaW5lciB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCI+XG4gICAgICAgICAgICA8TGluZUNoYXJ0IGRhdGE9e3NwYXJrbGluZURhdGF9PlxuICAgICAgICAgICAgICA8TGluZVxuICAgICAgICAgICAgICAgIHR5cGU9XCJtb25vdG9uZVwiXG4gICAgICAgICAgICAgICAgZGF0YUtleT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICBzdHJva2U9e3N0YXR1cy5pc1VwID8gXCIjMzRkMzk5XCIgOiBcIiNmODcxNzFcIn1cbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17MS41fVxuICAgICAgICAgICAgICAgIGRvdD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0xpbmVDaGFydD5cbiAgICAgICAgICA8L1Jlc3BvbnNpdmVDb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBMYXN0IENoZWNrZWQgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHRleHQteHMgdGV4dC1zbGF0ZS01MDBcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMVwiPlxuICAgICAgICAgICAgPENsb2NrIGNsYXNzTmFtZT1cInctMyBoLTNcIiAvPlxuICAgICAgICAgICAge3N0YXR1cy5sYXRlc3QgPyBuZXcgRGF0ZShzdGF0dXMubGF0ZXN0LnRpbWVzdGFtcCkudG9Mb2NhbGVUaW1lU3RyaW5nKCkgOiBcIk5ldmVyXCJ9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIFxuICAgICAgICAgIHsvKiBIb3ZlciBBY3Rpb25zICovfVxuICAgICAgICAgIDxBbmltYXRlUHJlc2VuY2U+XG4gICAgICAgICAgICB7aXNIb3ZlcmVkICYmIChcbiAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHg6IDEwIH19XG4gICAgICAgICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxLCB4OiAwIH19XG4gICAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCB4OiAxMCB9fVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwicC0xLjUgdGV4dC1zbGF0ZS00MDAgaG92ZXI6dGV4dC13aGl0ZSBob3ZlcjpiZy1zbGF0ZS04MDAgcm91bmRlZCB0cmFuc2l0aW9uLWNvbG9yc1wiPlxuICAgICAgICAgICAgICAgICAgPFJlZnJlc2hDdyBjbGFzc05hbWU9XCJ3LTMuNSBoLTMuNVwiIC8+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJwLTEuNSB0ZXh0LXNsYXRlLTQwMCBob3Zlcjp0ZXh0LXdoaXRlIGhvdmVyOmJnLXNsYXRlLTgwMCByb3VuZGVkIHRyYW5zaXRpb24tY29sb3JzXCI+XG4gICAgICAgICAgICAgICAgICA8U2V0dGluZ3MgY2xhc3NOYW1lPVwidy0zLjUgaC0zLjVcIiAvPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkRlbGV0ZX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInAtMS41IHRleHQtc2xhdGUtNDAwIGhvdmVyOnRleHQtcmVkLTQwMCBob3ZlcjpiZy1yZWQtNTAwLzEwIHJvdW5kZWQgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxUcmFzaDIgY2xhc3NOYW1lPVwidy0zLjUgaC0zLjVcIiAvPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbW90aW9uLmRpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhc2hib2FyZCgpIHtcbiAgY29uc3QgW2FwcHMsIHNldEFwcHNdID0gdXNlU3RhdGU8QXBwW10+KFtdKTtcbiAgY29uc3QgW3N0YXR1cywgc2V0U3RhdHVzXSA9IHVzZVN0YXRlPFN0YXR1c0VudHJ5W10+KFtdKTtcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFtzaWRlYmFyQ29sbGFwc2VkLCBzZXRTaWRlYmFyQ29sbGFwc2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2FjdGl2ZU5hdiwgc2V0QWN0aXZlTmF2XSA9IHVzZVN0YXRlKFwib3ZlcnZpZXdcIik7XG4gIGNvbnN0IFtzaG93QWRkTW9kYWwsIHNldFNob3dBZGRNb2RhbF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtuZXdBcHAsIHNldE5ld0FwcF0gPSB1c2VTdGF0ZTxQYXJ0aWFsPEFwcD4+KHtcbiAgICBuYW1lOiBcIlwiLFxuICAgIHVybDogXCJodHRwOi8vbG9jYWxob3N0OlwiLFxuICAgIHBvcnQ6IDMwMDAsXG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgfSk7XG5cbiAgY29uc3QgbmF2SXRlbXM6IE5hdkl0ZW1bXSA9IFtcbiAgICB7IGlkOiBcIm92ZXJ2aWV3XCIsIGxhYmVsOiBcIk92ZXJ2aWV3XCIsIGljb246IDxMYXlvdXREYXNoYm9hcmQgY2xhc3NOYW1lPVwidy01IGgtNVwiIC8+IH0sXG4gICAgeyBpZDogXCJzZXJ2aWNlc1wiLCBsYWJlbDogXCJNb25pdG9yZWQgU2VydmljZXNcIiwgaWNvbjogPE1vbml0b3IgY2xhc3NOYW1lPVwidy01IGgtNVwiIC8+IH0sXG4gICAgeyBpZDogXCJpbmNpZGVudHNcIiwgbGFiZWw6IFwiSW5jaWRlbnRzXCIsIGljb246IDxBbGVydFRyaWFuZ2xlIGNsYXNzTmFtZT1cInctNSBoLTVcIiAvPiB9LFxuICAgIHsgaWQ6IFwiaGlzdG9yeVwiLCBsYWJlbDogXCJIaXN0b3J5IC8gTG9nc1wiLCBpY29uOiA8SGlzdG9yeSBjbGFzc05hbWU9XCJ3LTUgaC01XCIgLz4gfSxcbiAgICB7IGlkOiBcInNldHRpbmdzXCIsIGxhYmVsOiBcIlNldHRpbmdzXCIsIGljb246IDxTZXR0aW5ncyBjbGFzc05hbWU9XCJ3LTUgaC01XCIgLz4gfSxcbiAgXTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoRGF0YSgpO1xuICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoZmV0Y2hEYXRhLCAzMDAwMCk7XG4gICAgcmV0dXJuICgpID0+IGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICB9LCBbXSk7XG5cbiAgYXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChcIi9hcGkvbW9uaXRvclwiKTtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXMuanNvbigpO1xuICAgICAgc2V0QXBwcyhkYXRhLmFwcHMgfHwgW10pO1xuICAgICAgc2V0U3RhdHVzKGRhdGEuc3RhdHVzIHx8IFtdKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gZmV0Y2ggZGF0YTpcIiwgZXJyKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gYWRkQXBwKGU6IFJlYWN0LkZvcm1FdmVudCkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoIW5ld0FwcC5uYW1lIHx8ICFuZXdBcHAudXJsKSByZXR1cm47XG4gICAgYXdhaXQgZmV0Y2goXCIvYXBpL21vbml0b3JcIiwge1xuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgYWN0aW9uOiBcImFkZEFwcFwiLCBhcHA6IG5ld0FwcCB9KSxcbiAgICB9KTtcbiAgICBzZXRTaG93QWRkTW9kYWwoZmFsc2UpO1xuICAgIHNldE5ld0FwcCh7IG5hbWU6IFwiXCIsIHVybDogXCJodHRwOi8vbG9jYWxob3N0OlwiLCBwb3J0OiAzMDAwLCBlbmFibGVkOiB0cnVlIH0pO1xuICAgIGZldGNoRGF0YSgpO1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZGVsZXRlQXBwKGlkOiBzdHJpbmcpIHtcbiAgICBpZiAoIWNvbmZpcm0oXCJEZWxldGUgdGhpcyBtb25pdG9yP1wiKSkgcmV0dXJuO1xuICAgIGF3YWl0IGZldGNoKFwiL2FwaS9tb25pdG9yXCIsIHtcbiAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGFjdGlvbjogXCJkZWxldGVBcHBcIiwgaWQgfSksXG4gICAgfSk7XG4gICAgZmV0Y2hEYXRhKCk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRBcHBTdGF0dXMoYXBwSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGFwcFN0YXR1cyA9IHN0YXR1cy5maWx0ZXIoKHMpID0+IHMuYXBwSWQgPT09IGFwcElkKTtcbiAgICBjb25zdCBsYXRlc3QgPSBhcHBTdGF0dXNbYXBwU3RhdHVzLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IGlzVXAgPSBsYXRlc3Q/LnN0YXR1cyA9PT0gXCJ1cFwiO1xuICAgIGNvbnN0IHVwdGltZSA9IGFwcFN0YXR1cy5sZW5ndGggPiAwIFxuICAgICAgPyBNYXRoLnJvdW5kKChhcHBTdGF0dXMuZmlsdGVyKHMgPT4gcy5zdGF0dXMgPT09IFwidXBcIikubGVuZ3RoIC8gYXBwU3RhdHVzLmxlbmd0aCkgKiAxMDApXG4gICAgICA6IDEwMDtcbiAgICBjb25zdCBhdmdSZXNwb25zZVRpbWUgPSBhcHBTdGF0dXMubGVuZ3RoID4gMFxuICAgICAgPyBNYXRoLnJvdW5kKGFwcFN0YXR1cy5maWx0ZXIocyA9PiBzLnJlc3BvbnNlVGltZSkucmVkdWNlKChhY2MsIHMpID0+IGFjYyArIChzLnJlc3BvbnNlVGltZSB8fCAwKSwgMCkgLyBhcHBTdGF0dXMuZmlsdGVyKHMgPT4gcy5yZXNwb25zZVRpbWUpLmxlbmd0aCkgfHwgMFxuICAgICAgOiAwO1xuICAgIHJldHVybiB7IGxhdGVzdCwgaXNVcCwgdXB0aW1lLCBhdmdSZXNwb25zZVRpbWUgfTtcbiAgfVxuXG4gIGNvbnN0IHN0YXRzID0ge1xuICAgIHRvdGFsOiBhcHBzLmxlbmd0aCxcbiAgICBvbmxpbmU6IGFwcHMuZmlsdGVyKChhcHApID0+IGdldEFwcFN0YXR1cyhhcHAuaWQpLmlzVXApLmxlbmd0aCxcbiAgICBvZmZsaW5lOiBhcHBzLmZpbHRlcigoYXBwKSA9PiAhZ2V0QXBwU3RhdHVzKGFwcC5pZCkuaXNVcCkubGVuZ3RoLFxuICAgIGF2Z1VwdGltZTogYXBwcy5sZW5ndGggPiAwIFxuICAgICAgPyBNYXRoLnJvdW5kKGFwcHMucmVkdWNlKChhY2MsIGFwcCkgPT4gYWNjICsgZ2V0QXBwU3RhdHVzKGFwcC5pZCkudXB0aW1lLCAwKSAvIGFwcHMubGVuZ3RoKVxuICAgICAgOiAwLFxuICAgIGF2Z1Jlc3BvbnNlVGltZTogYXBwcy5sZW5ndGggPiAwXG4gICAgICA/IE1hdGgucm91bmQoYXBwcy5yZWR1Y2UoKGFjYywgYXBwKSA9PiBhY2MgKyBnZXRBcHBTdGF0dXMoYXBwLmlkKS5hdmdSZXNwb25zZVRpbWUsIDApIC8gYXBwcy5sZW5ndGgpXG4gICAgICA6IDAsXG4gICAgaW5jaWRlbnRzOiBzdGF0dXMuZmlsdGVyKHMgPT4gcy5zdGF0dXMgPT09IFwiZG93blwiKS5sZW5ndGgsXG4gIH07XG5cbiAgY29uc3QgYWxsVXAgPSBzdGF0cy5vbmxpbmUgPT09IHN0YXRzLnRvdGFsICYmIHN0YXRzLnRvdGFsID4gMDtcblxuICAvLyBHZW5lcmF0ZSBzcGFya2xpbmUgZGF0YSBmb3IgbWV0cmljc1xuICBjb25zdCBzZXJ2aWNlc0RhdGEgPSBnZW5lcmF0ZVNwYXJrbGluZURhdGEoMjAsIHRydWUpO1xuICBjb25zdCB1cHRpbWVEYXRhID0gZ2VuZXJhdGVTcGFya2xpbmVEYXRhKDIwLCB0cnVlKTtcbiAgY29uc3QgcmVzcG9uc2VEYXRhID0gZ2VuZXJhdGVTcGFya2xpbmVEYXRhKDIwLCB0cnVlKS5tYXAoZCA9PiAoeyAuLi5kLCB2YWx1ZTogZC52YWx1ZSAqIDIgfSkpO1xuICBjb25zdCBpbmNpZGVudHNEYXRhID0gZ2VuZXJhdGVTcGFya2xpbmVEYXRhKDIwLCBmYWxzZSk7XG5cbiAgaWYgKGxvYWRpbmcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtaW4taC1zY3JlZW4gYmctc2xhdGUtOTUwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgZ2FwLTRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxuICAgICAgICAgICAgPG1vdGlvbi5kaXYgXG4gICAgICAgICAgICAgIGFuaW1hdGU9e3sgcm90YXRlOiAzNjAgfX1cbiAgICAgICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMiwgcmVwZWF0OiBJbmZpbml0eSwgZWFzZTogXCJsaW5lYXJcIiB9fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTEyIGgtMTIgcm91bmRlZC14bCBiZy1ncmFkaWVudC10by1iciBmcm9tLWVtZXJhbGQtNTAwIHRvLWN5YW4tNTAwXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgdy0xMiBoLTEyIHJvdW5kZWQteGwgYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1lbWVyYWxkLTUwMCB0by1jeWFuLTUwMCBibHVyLXhsIG9wYWNpdHktNTBcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc2xhdGUtNDAwXCI+TG9hZGluZyBkYXNoYm9hcmQuLi48L3A+XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLXNsYXRlLTk1MCB0ZXh0LXNsYXRlLTEwMCBmbGV4XCI+XG4gICAgICB7LyogQ29sbGFwc2libGUgU2lkZWJhciAqL31cbiAgICAgIDxtb3Rpb24uYXNpZGVcbiAgICAgICAgaW5pdGlhbD17ZmFsc2V9XG4gICAgICAgIGFuaW1hdGU9e3sgd2lkdGg6IHNpZGViYXJDb2xsYXBzZWQgPyA3MiA6IDI0MCB9fVxuICAgICAgICBjbGFzc05hbWU9XCJmaXhlZCBsZWZ0LTAgdG9wLTAgYm90dG9tLTAgYmctc2xhdGUtOTAwLzgwIGJhY2tkcm9wLWJsdXIteGwgYm9yZGVyLXIgYm9yZGVyLXNsYXRlLTgwMCB6LTUwIGZsZXggZmxleC1jb2xcIlxuICAgICAgPlxuICAgICAgICB7LyogTG9nbyBBcmVhICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtMTYgZmxleCBpdGVtcy1jZW50ZXIgcHgtNCBib3JkZXItYiBib3JkZXItc2xhdGUtODAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTggaC04IHJvdW5kZWQtbGcgYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1lbWVyYWxkLTUwMCB0by1jeWFuLTUwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgPEFjdGl2aXR5IGNsYXNzTmFtZT1cInctNCBoLTQgdGV4dC13aGl0ZVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPEFuaW1hdGVQcmVzZW5jZSBtb2RlPVwid2FpdFwiPlxuICAgICAgICAgICAgeyFzaWRlYmFyQ29sbGFwc2VkICYmIChcbiAgICAgICAgICAgICAgPG1vdGlvbi5zcGFuXG4gICAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwLCB3aWR0aDogMCB9fVxuICAgICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgd2lkdGg6IFwiYXV0b1wiIH19XG4gICAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCB3aWR0aDogMCB9fVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm1sLTMgZm9udC1ib2xkIHRleHQtbGcgd2hpdGVzcGFjZS1ub3dyYXAgb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEhlYXJ0YmVhdFxuICAgICAgICAgICAgICA8L21vdGlvbi5zcGFuPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0FuaW1hdGVQcmVzZW5jZT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgey8qIE5hdmlnYXRpb24gKi99XG4gICAgICAgIDxuYXYgY2xhc3NOYW1lPVwiZmxleC0xIHAtMyBzcGFjZS15LTFcIj5cbiAgICAgICAgICB7bmF2SXRlbXMubWFwKChpdGVtKSA9PiAoXG4gICAgICAgICAgICA8U2lkZWJhckl0ZW1cbiAgICAgICAgICAgICAga2V5PXtpdGVtLmlkfVxuICAgICAgICAgICAgICBpdGVtPXtpdGVtfVxuICAgICAgICAgICAgICBpc0FjdGl2ZT17YWN0aXZlTmF2ID09PSBpdGVtLmlkfVxuICAgICAgICAgICAgICBpc0NvbGxhcHNlZD17c2lkZWJhckNvbGxhcHNlZH1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QWN0aXZlTmF2KGl0ZW0uaWQpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9uYXY+XG5cbiAgICAgICAgey8qIENvbGxhcHNlIEJ1dHRvbiAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTMgYm9yZGVyLXQgYm9yZGVyLXNsYXRlLTgwMFwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNpZGViYXJDb2xsYXBzZWQoIXNpZGViYXJDb2xsYXBzZWQpfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHAtMiB0ZXh0LXNsYXRlLTQwMCBob3Zlcjp0ZXh0LXdoaXRlIGhvdmVyOmJnLXNsYXRlLTgwMC81MCByb3VuZGVkLWxnIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2lkZWJhckNvbGxhcHNlZCA/IDxDaGV2cm9uUmlnaHQgY2xhc3NOYW1lPVwidy01IGgtNVwiIC8+IDogPENoZXZyb25MZWZ0IGNsYXNzTmFtZT1cInctNSBoLTVcIiAvPn1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21vdGlvbi5hc2lkZT5cblxuICAgICAgey8qIE1haW4gQ29udGVudCAqL31cbiAgICAgIDxtYWluIFxuICAgICAgICBjbGFzc05hbWU9XCJmbGV4LTEgbWluLWgtc2NyZWVuIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMFwiXG4gICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IHNpZGViYXJDb2xsYXBzZWQgPyA3MiA6IDI0MCB9fVxuICAgICAgPlxuICAgICAgICB7LyogVG9wIE5hdmJhciAqL31cbiAgICAgICAgPGhlYWRlciBjbGFzc05hbWU9XCJoLTE2IGJnLXNsYXRlLTkwMC81MCBiYWNrZHJvcC1ibHVyLXNtIGJvcmRlci1iIGJvcmRlci1zbGF0ZS04MDAgc3RpY2t5IHRvcC0wIHotNDAgcHgtNiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICB7LyogR2xvYmFsIFN0YXR1cyBCYW5uZXIgKi99XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBweC0zIHB5LTEuNSByb3VuZGVkLWZ1bGwgYm9yZGVyICR7XG4gICAgICAgICAgICAgIGFsbFVwIFxuICAgICAgICAgICAgICAgID8gXCJiZy1lbWVyYWxkLTUwMC8xMCBib3JkZXItZW1lcmFsZC01MDAvMjBcIiBcbiAgICAgICAgICAgICAgICA6IFwiYmctYW1iZXItNTAwLzEwIGJvcmRlci1hbWJlci01MDAvMjBcIlxuICAgICAgICAgICAgfWB9PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2ByZWxhdGl2ZSBmbGV4IGgtMiB3LTJgfT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2BhbmltYXRlLXBpbmcgYWJzb2x1dGUgaW5saW5lLWZsZXggaC1mdWxsIHctZnVsbCByb3VuZGVkLWZ1bGwgb3BhY2l0eS03NSAke2FsbFVwID8gXCJiZy1lbWVyYWxkLTQwMFwiIDogXCJiZy1hbWJlci00MDBcIn1gfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgcmVsYXRpdmUgaW5saW5lLWZsZXggcm91bmRlZC1mdWxsIGgtMiB3LTIgJHthbGxVcCA/IFwiYmctZW1lcmFsZC01MDBcIiA6IFwiYmctYW1iZXItNTAwXCJ9YH0+PC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YHRleHQtc20gZm9udC1tZWRpdW0gJHthbGxVcCA/IFwidGV4dC1lbWVyYWxkLTQwMFwiIDogXCJ0ZXh0LWFtYmVyLTQwMFwifWB9PlxuICAgICAgICAgICAgICAgIHthbGxVcCA/IFwiQWxsIFN5c3RlbXMgT3BlcmF0aW9uYWxcIiA6IGAke3N0YXRzLm9mZmxpbmV9IFNlcnZpY2Uke3N0YXRzLm9mZmxpbmUgPiAxID8gJ3MnIDogJyd9IERvd25gfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc2xhdGUtNTAwIHRleHQteHNcIj7igKIgVXBkYXRlZCB7bmV3IERhdGUoKS50b0xvY2FsZVRpbWVTdHJpbmcoKX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIHsvKiBSaWdodCBTaWRlIEFjdGlvbnMgKi99XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgICAgey8qIFNlYXJjaCAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgPFNlYXJjaCBjbGFzc05hbWU9XCJ3LTQgaC00IGFic29sdXRlIGxlZnQtMyB0b3AtMS8yIC10cmFuc2xhdGUteS0xLzIgdGV4dC1zbGF0ZS01MDBcIiAvPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctNjQgYmctc2xhdGUtODAwLzUwIGJvcmRlciBib3JkZXItc2xhdGUtNzAwIHJvdW5kZWQtbGcgcGwtMTAgcHItNCBweS0yIHRleHQtc20gdGV4dC13aGl0ZSBwbGFjZWhvbGRlci1zbGF0ZS01MDAgZm9jdXM6Ym9yZGVyLWVtZXJhbGQtNTAwLzUwIGZvY3VzOm91dGxpbmUtbm9uZSB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgey8qIEFkZCBNb25pdG9yICovfVxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93QWRkTW9kYWwodHJ1ZSl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHB4LTQgcHktMiBiZy1lbWVyYWxkLTYwMCBob3ZlcjpiZy1lbWVyYWxkLTUwMCB0ZXh0LXdoaXRlIHJvdW5kZWQtbGcgdGV4dC1zbSBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxQbHVzIGNsYXNzTmFtZT1cInctNCBoLTRcIiAvPlxuICAgICAgICAgICAgICBBZGQgTW9uaXRvclxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIHsvKiBSZWZyZXNoICovfVxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBvbkNsaWNrPXtmZXRjaERhdGF9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInAtMiB0ZXh0LXNsYXRlLTQwMCBob3Zlcjp0ZXh0LXdoaXRlIGhvdmVyOmJnLXNsYXRlLTgwMCByb3VuZGVkLWxnIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFJlZnJlc2hDdyBjbGFzc05hbWU9XCJ3LTUgaC01XCIgLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICB7LyogTm90aWZpY2F0aW9ucyAqL31cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwicC0yIHRleHQtc2xhdGUtNDAwIGhvdmVyOnRleHQtd2hpdGUgaG92ZXI6Ymctc2xhdGUtODAwIHJvdW5kZWQtbGcgdHJhbnNpdGlvbi1jb2xvcnMgcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgPEJlbGwgY2xhc3NOYW1lPVwidy01IGgtNVwiIC8+XG4gICAgICAgICAgICAgIHtzdGF0cy5pbmNpZGVudHMgPiAwICYmIChcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMSByaWdodC0xIHctMiBoLTIgYmctcmVkLTUwMCByb3VuZGVkLWZ1bGxcIiAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIHsvKiBBdmF0YXIgKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctOSBoLTkgcm91bmRlZC1mdWxsIGJnLWdyYWRpZW50LXRvLWJyIGZyb20tZW1lcmFsZC01MDAgdG8tY3lhbi01MDAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LW1lZGl1bSB0ZXh0LXNtXCI+XG4gICAgICAgICAgICAgIE1CXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgey8qIERhc2hib2FyZCBDb250ZW50ICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInAtNiBzcGFjZS15LTZcIj5cbiAgICAgICAgICB7LyogS1BJIFJvdyAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgc206Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTQgZ2FwLTRcIj5cbiAgICAgICAgICAgIDxNZXRyaWNDYXJkXG4gICAgICAgICAgICAgIHRpdGxlPVwiU2VydmljZXMgT25saW5lXCJcbiAgICAgICAgICAgICAgdmFsdWU9e2Ake3N0YXRzLm9ubGluZX0vJHtzdGF0cy50b3RhbH1gfVxuICAgICAgICAgICAgICBzdWJ0aXRsZT17YWxsVXAgPyBcIkFsbCBoZWFsdGh5XCIgOiBgJHtzdGF0cy5vZmZsaW5lfSBkb3duYH1cbiAgICAgICAgICAgICAgaWNvbj17U2VydmVyfVxuICAgICAgICAgICAgICBjb2xvcj1cImVtZXJhbGRcIlxuICAgICAgICAgICAgICBkYXRhPXtzZXJ2aWNlc0RhdGF9XG4gICAgICAgICAgICAgIHRyZW5kPVwidXBcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxNZXRyaWNDYXJkXG4gICAgICAgICAgICAgIHRpdGxlPVwiQXZlcmFnZSBVcHRpbWVcIlxuICAgICAgICAgICAgICB2YWx1ZT17YCR7c3RhdHMuYXZnVXB0aW1lfSVgfVxuICAgICAgICAgICAgICBzdWJ0aXRsZT1cIkxhc3QgMzAgZGF5c1wiXG4gICAgICAgICAgICAgIGljb249e0NoZWNrQ2lyY2xlMn1cbiAgICAgICAgICAgICAgY29sb3I9XCJibHVlXCJcbiAgICAgICAgICAgICAgZGF0YT17dXB0aW1lRGF0YX1cbiAgICAgICAgICAgICAgdHJlbmQ9XCJ1cFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPE1ldHJpY0NhcmRcbiAgICAgICAgICAgICAgdGl0bGU9XCJBdmcgUmVzcG9uc2UgVGltZVwiXG4gICAgICAgICAgICAgIHZhbHVlPXtgJHtzdGF0cy5hdmdSZXNwb25zZVRpbWV9bXNgfVxuICAgICAgICAgICAgICBzdWJ0aXRsZT1cIkFjcm9zcyBhbGwgc2VydmljZXNcIlxuICAgICAgICAgICAgICBpY29uPXtaYXB9XG4gICAgICAgICAgICAgIGNvbG9yPVwicHVycGxlXCJcbiAgICAgICAgICAgICAgZGF0YT17cmVzcG9uc2VEYXRhfVxuICAgICAgICAgICAgICB0cmVuZD17c3RhdHMuYXZnUmVzcG9uc2VUaW1lIDwgMjAwID8gXCJ1cFwiIDogXCJkb3duXCJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPE1ldHJpY0NhcmRcbiAgICAgICAgICAgICAgdGl0bGU9XCJUb3RhbCBJbmNpZGVudHNcIlxuICAgICAgICAgICAgICB2YWx1ZT17c3RhdHMuaW5jaWRlbnRzfVxuICAgICAgICAgICAgICBzdWJ0aXRsZT1cIkxhc3QgMjQgaG91cnNcIlxuICAgICAgICAgICAgICBpY29uPXtBbGVydFRyaWFuZ2xlfVxuICAgICAgICAgICAgICBjb2xvcj1cImFtYmVyXCJcbiAgICAgICAgICAgICAgZGF0YT17aW5jaWRlbnRzRGF0YX1cbiAgICAgICAgICAgICAgdHJlbmQ9e3N0YXRzLmluY2lkZW50cyA9PT0gMCA/IFwidXBcIiA6IFwiZG93blwifVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIHsvKiBTZXJ2aWNlcyBHcmlkICovfVxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYi00XCI+XG4gICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC13aGl0ZVwiPk1vbml0b3JlZCBTZXJ2aWNlczwvaDI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1zbGF0ZS01MDBcIj57c3RhdHMudG90YWx9IHNlcnZpY2VzPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDxtb3Rpb24uZGl2IFxuICAgICAgICAgICAgICBsYXlvdXRcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiB4bDpncmlkLWNvbHMtMyBnYXAtNFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cInBvcExheW91dFwiPlxuICAgICAgICAgICAgICAgIHthcHBzLm1hcCgoYXBwKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBhcHBTdGF0dXMgPSBnZXRBcHBTdGF0dXMoYXBwLmlkKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxTZXJ2aWNlQ2FyZFxuICAgICAgICAgICAgICAgICAgICAgIGtleT17YXBwLmlkfVxuICAgICAgICAgICAgICAgICAgICAgIGFwcD17YXBwfVxuICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz17YXBwU3RhdHVzfVxuICAgICAgICAgICAgICAgICAgICAgIG9uRGVsZXRlPXsoKSA9PiBkZWxldGVBcHAoYXBwLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuXG4gICAgICAgICAgICB7YXBwcy5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCwgeTogMjAgfX1cbiAgICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBweS0xNiBiZy1zbGF0ZS05MDAvMzAgcm91bmRlZC14bCBib3JkZXIgYm9yZGVyLWRhc2hlZCBib3JkZXItc2xhdGUtODAwXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0xNiBoLTE2IGJnLXNsYXRlLTgwMCByb3VuZGVkLTJ4bCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBteC1hdXRvIG1iLTRcIj5cbiAgICAgICAgICAgICAgICAgIDxNb25pdG9yIGNsYXNzTmFtZT1cInctOCBoLTggdGV4dC1zbGF0ZS02MDBcIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC13aGl0ZSBtYi0yXCI+Tm8gbW9uaXRvcnMgeWV0PC9oMz5cbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNsYXRlLTUwMCBtYi00XCI+U3RhcnQgbW9uaXRvcmluZyB5b3VyIHNlcnZpY2VzPC9wPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dBZGRNb2RhbCh0cnVlKX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInB4LTQgcHktMiBiZy1lbWVyYWxkLTYwMCBob3ZlcjpiZy1lbWVyYWxkLTUwMCB0ZXh0LXdoaXRlIHJvdW5kZWQtbGcgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIEFkZCBZb3VyIEZpcnN0IE1vbml0b3JcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21haW4+XG5cbiAgICAgIHsvKiBBZGQgTW9uaXRvciBNb2RhbCAqL31cbiAgICAgIDxBbmltYXRlUHJlc2VuY2U+XG4gICAgICAgIHtzaG93QWRkTW9kYWwgJiYgKFxuICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJmaXhlZCBpbnNldC0wIGJnLWJsYWNrLzYwIGJhY2tkcm9wLWJsdXItc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgei01MCBwLTRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCwgc2NhbGU6IDAuOTUsIHk6IDIwIH19XG4gICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgc2NhbGU6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCBzY2FsZTogMC45NSwgeTogMjAgfX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctc2xhdGUtOTAwIGJvcmRlciBib3JkZXItc2xhdGUtODAwIHJvdW5kZWQteGwgcC02IHctZnVsbCBtYXgtdy1tZCBzaGFkb3ctMnhsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQteGwgZm9udC1ib2xkIHRleHQtd2hpdGUgbWItMlwiPkFkZCBOZXcgTW9uaXRvcjwvaDI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc2xhdGUtNDAwIHRleHQtc20gbWItNlwiPkNvbmZpZ3VyZSBhIG5ldyBzZXJ2aWNlIHRvIG1vbml0b3I8L3A+XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICA8Zm9ybSBvblN1Ym1pdD17YWRkQXBwfSBjbGFzc05hbWU9XCJzcGFjZS15LTRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImJsb2NrIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1zbGF0ZS0zMDAgbWItMlwiPlNlcnZpY2UgTmFtZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bmV3QXBwLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0TmV3QXBwKHsgLi4ubmV3QXBwLCBuYW1lOiBlLnRhcmdldC52YWx1ZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLXNsYXRlLTgwMC81MCBib3JkZXIgYm9yZGVyLXNsYXRlLTcwMCByb3VuZGVkLWxnIHB4LTQgcHktMi41IHRleHQtd2hpdGUgcGxhY2Vob2xkZXItc2xhdGUtNTAwIGZvY3VzOmJvcmRlci1lbWVyYWxkLTUwMC81MCBmb2N1czpvdXRsaW5lLW5vbmUgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk15IFNlcnZpY2VcIlxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtc2xhdGUtMzAwIG1iLTJcIj5VUkw8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bmV3QXBwLnVybH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldE5ld0FwcCh7IC4uLm5ld0FwcCwgdXJsOiBlLnRhcmdldC52YWx1ZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgYmctc2xhdGUtODAwLzUwIGJvcmRlciBib3JkZXItc2xhdGUtNzAwIHJvdW5kZWQtbGcgcHgtNCBweS0yLjUgdGV4dC13aGl0ZSBwbGFjZWhvbGRlci1zbGF0ZS01MDAgZm9jdXM6Ym9yZGVyLWVtZXJhbGQtNTAwLzUwIGZvY3VzOm91dGxpbmUtbm9uZSB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJodHRwOi8vbG9jYWxob3N0OjMwMDBcIlxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtc2xhdGUtMzAwIG1iLTJcIj5Qb3J0PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e25ld0FwcC5wb3J0fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0TmV3QXBwKHsgLi4ubmV3QXBwLCBwb3J0OiBwYXJzZUludChlLnRhcmdldC52YWx1ZSkgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLXNsYXRlLTgwMC81MCBib3JkZXIgYm9yZGVyLXNsYXRlLTcwMCByb3VuZGVkLWxnIHB4LTQgcHktMi41IHRleHQtd2hpdGUgcGxhY2Vob2xkZXItc2xhdGUtNTAwIGZvY3VzOmJvcmRlci1lbWVyYWxkLTUwMC81MCBmb2N1czpvdXRsaW5lLW5vbmUgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtMyBwdC00XCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93QWRkTW9kYWwoZmFsc2UpfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4LTEgcHgtNCBweS0yLjUgYm9yZGVyIGJvcmRlci1zbGF0ZS03MDAgcm91bmRlZC1sZyB0ZXh0LXNsYXRlLTMwMCBob3ZlcjpiZy1zbGF0ZS04MDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleC0xIHB4LTQgcHktMi41IGJnLWVtZXJhbGQtNjAwIGhvdmVyOmJnLWVtZXJhbGQtNTAwIHRleHQtd2hpdGUgcm91bmRlZC1sZyBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEFkZCBNb25pdG9yXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuICAgIDwvZGl2PlxuICApO1xufSJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwibW90aW9uIiwiQW5pbWF0ZVByZXNlbmNlIiwiTGluZUNoYXJ0IiwiTGluZSIsIlJlc3BvbnNpdmVDb250YWluZXIiLCJBY3Rpdml0eSIsIlBsdXMiLCJSZWZyZXNoQ3ciLCJUcmFzaDIiLCJFeHRlcm5hbExpbmsiLCJTZWFyY2giLCJCZWxsIiwiU2V0dGluZ3MiLCJDaGV2cm9uTGVmdCIsIkNoZXZyb25SaWdodCIsIkxheW91dERhc2hib2FyZCIsIk1vbml0b3IiLCJBbGVydFRyaWFuZ2xlIiwiSGlzdG9yeSIsIkNoZWNrQ2lyY2xlMiIsIkNsb2NrIiwiWmFwIiwiU2VydmVyIiwiZ2VuZXJhdGVTcGFya2xpbmVEYXRhIiwicG9pbnRzIiwiaXNVcCIsIkFycmF5IiwiZnJvbSIsImxlbmd0aCIsIl8iLCJpIiwidmFsdWUiLCJNYXRoIiwicmFuZG9tIiwidGltZSIsIlNpZGViYXJJdGVtIiwiaXRlbSIsImlzQWN0aXZlIiwiaXNDb2xsYXBzZWQiLCJvbkNsaWNrIiwiYnV0dG9uIiwid2hpbGVIb3ZlciIsIngiLCJ3aGlsZVRhcCIsInNjYWxlIiwiY2xhc3NOYW1lIiwic3BhbiIsImljb24iLCJtb2RlIiwiaW5pdGlhbCIsIm9wYWNpdHkiLCJ3aWR0aCIsImFuaW1hdGUiLCJleGl0IiwibGFiZWwiLCJNZXRyaWNDYXJkIiwidGl0bGUiLCJzdWJ0aXRsZSIsIkljb24iLCJjb2xvciIsImRhdGEiLCJ0cmVuZCIsImNvbG9yQ2xhc3NlcyIsImVtZXJhbGQiLCJibHVlIiwicHVycGxlIiwiYW1iZXIiLCJkaXYiLCJ5IiwidHJhbnNpdGlvbiIsImR1cmF0aW9uIiwicCIsInN0eWxlIiwiaGVpZ2h0IiwidHlwZSIsImRhdGFLZXkiLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsImRvdCIsIlNlcnZpY2VDYXJkIiwiYXBwIiwic3RhdHVzIiwib25EZWxldGUiLCJpc0hvdmVyZWQiLCJzZXRJc0hvdmVyZWQiLCJzcGFya2xpbmVEYXRhIiwibGF5b3V0Iiwib25Ib3ZlclN0YXJ0Iiwib25Ib3ZlckVuZCIsImgzIiwibmFtZSIsImEiLCJocmVmIiwidXJsIiwidGFyZ2V0IiwicmVsIiwicG9ydCIsInVwdGltZSIsImRlbGF5IiwiYXZnUmVzcG9uc2VUaW1lIiwibGF0ZXN0IiwiRGF0ZSIsInRpbWVzdGFtcCIsInRvTG9jYWxlVGltZVN0cmluZyIsIkRhc2hib2FyZCIsImFwcHMiLCJzZXRBcHBzIiwic2V0U3RhdHVzIiwibG9hZGluZyIsInNldExvYWRpbmciLCJzaWRlYmFyQ29sbGFwc2VkIiwic2V0U2lkZWJhckNvbGxhcHNlZCIsImFjdGl2ZU5hdiIsInNldEFjdGl2ZU5hdiIsInNob3dBZGRNb2RhbCIsInNldFNob3dBZGRNb2RhbCIsIm5ld0FwcCIsInNldE5ld0FwcCIsImVuYWJsZWQiLCJuYXZJdGVtcyIsImlkIiwiZmV0Y2hEYXRhIiwiaW50ZXJ2YWwiLCJzZXRJbnRlcnZhbCIsImNsZWFySW50ZXJ2YWwiLCJyZXMiLCJmZXRjaCIsImpzb24iLCJlcnIiLCJjb25zb2xlIiwiZXJyb3IiLCJhZGRBcHAiLCJlIiwicHJldmVudERlZmF1bHQiLCJtZXRob2QiLCJoZWFkZXJzIiwiYm9keSIsIkpTT04iLCJzdHJpbmdpZnkiLCJhY3Rpb24iLCJkZWxldGVBcHAiLCJjb25maXJtIiwiZ2V0QXBwU3RhdHVzIiwiYXBwSWQiLCJhcHBTdGF0dXMiLCJmaWx0ZXIiLCJzIiwicm91bmQiLCJyZXNwb25zZVRpbWUiLCJyZWR1Y2UiLCJhY2MiLCJzdGF0cyIsInRvdGFsIiwib25saW5lIiwib2ZmbGluZSIsImF2Z1VwdGltZSIsImluY2lkZW50cyIsImFsbFVwIiwic2VydmljZXNEYXRhIiwidXB0aW1lRGF0YSIsInJlc3BvbnNlRGF0YSIsIm1hcCIsImQiLCJpbmNpZGVudHNEYXRhIiwicm90YXRlIiwicmVwZWF0IiwiSW5maW5pdHkiLCJlYXNlIiwiYXNpZGUiLCJuYXYiLCJtYWluIiwibWFyZ2luTGVmdCIsImhlYWRlciIsImlucHV0IiwicGxhY2Vob2xkZXIiLCJoMiIsImZvcm0iLCJvblN1Ym1pdCIsIm9uQ2hhbmdlIiwicmVxdWlyZWQiLCJwYXJzZUludCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/app/page.tsx\n")); /***/ }) });