"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/dashboard/contracts/[id]/page",{ /***/ "(app-pages-browser)/./src/app/dashboard/contracts/[id]/page.js": /*!**************************************************!*\ !*** ./src/app/dashboard/contracts/[id]/page.js ***! \**************************************************/ /***/ (function(module, __webpack_exports__, __webpack_require__) { eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ ContractDetailPage; }\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 next_navigation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/navigation */ \"(app-pages-browser)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _layout__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../layout */ \"(app-pages-browser)/./src/app/dashboard/layout.js\");\n/* harmony import */ var _lib_auth_client__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/lib/auth-client */ \"(app-pages-browser)/./src/lib/auth-client.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$(), _s1 = $RefreshSig$();\n\n\n\n\nfunction ContractDetailPage() {\n _s();\n const router = (0,next_navigation__WEBPACK_IMPORTED_MODULE_2__.useRouter)();\n const params = (0,next_navigation__WEBPACK_IMPORTED_MODULE_2__.useParams)();\n const user = (0,_layout__WEBPACK_IMPORTED_MODULE_3__.useUser)();\n const contractId = params.id;\n const [contract, setContract] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [toast, setToast] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n // Approval state\n const [opinion, setOpinion] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [approving, setApproving] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n // Resubmit state\n const [editing, setEditing] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [editForm, setEditForm] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({});\n const [editFiles, setEditFiles] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [editDragging, setEditDragging] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const editFileInputRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const [resubmitting, setResubmitting] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n // Partners for resubmit\n const [partners, setPartners] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [supervisors, setSupervisors] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [partnerSearch, setPartnerSearch] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [selectedPartnerName, setSelectedPartnerName] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [partnerDropdownOpen, setPartnerDropdownOpen] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const partnerRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const showToast = function(message) {\n let type = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : \"success\";\n setToast({\n message,\n type\n });\n setTimeout(()=>setToast(null), 3000);\n };\n const fetchContract = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(async ()=>{\n try {\n const res = await (0,_lib_auth_client__WEBPACK_IMPORTED_MODULE_4__.authFetch)(\"/api/contracts/\".concat(contractId));\n const data = await res.json();\n if (!res.ok) {\n showToast(data.error || \"加载失败\", \"error\");\n return;\n }\n setContract(data.contract || data);\n } catch (err) {\n showToast(\"加载合同详情失败\", \"error\");\n } finally{\n setLoading(false);\n }\n }, [\n contractId\n ]);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n fetchContract();\n }, [\n fetchContract\n ]);\n // Load partners and supervisors for resubmit\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (editing) {\n (0,_lib_auth_client__WEBPACK_IMPORTED_MODULE_4__.authFetch)(\"/api/partners\").then((r)=>r.json()).then((data)=>setPartners(data.partners || data || [])).catch(()=>{});\n (0,_lib_auth_client__WEBPACK_IMPORTED_MODULE_4__.authFetch)(\"/api/users\").then((r)=>r.json()).then((data)=>{\n const list = (data || []).filter((u)=>u.role === \"supervisor\" && u.status === 1);\n setSupervisors(list);\n }).catch(()=>{});\n }\n }, [\n editing\n ]);\n // Close partner dropdown on outside click\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const handleClick = (e1)=>{\n if (partnerRef.current && !partnerRef.current.contains(e1.target)) {\n setPartnerDropdownOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handleClick);\n return ()=>document.removeEventListener(\"mousedown\", handleClick);\n }, []);\n const formatDate = (dateStr)=>{\n if (!dateStr) return \"-\";\n const d = new Date(dateStr);\n return d.toLocaleDateString(\"zh-CN\", {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\"\n });\n };\n const formatDateTime = (dateStr)=>{\n if (!dateStr) return \"\";\n const d = new Date(dateStr);\n return d.toLocaleString(\"zh-CN\", {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\"\n });\n };\n const formatCurrency = (amount)=>{\n if (amount === null || amount === undefined) return \"-\";\n return Number(amount).toLocaleString(\"zh-CN\", {\n style: \"currency\",\n currency: \"CNY\"\n });\n };\n // Can current user approve?\n const canApprove = ()=>{\n if (!contract || !user) return false;\n const { status, department_id } = contract;\n const { role, department_id: userDeptId } = user;\n if (status === \"pending_supervisor\" && role === \"supervisor\" && userDeptId === department_id) return true;\n if (status === \"pending_finance\" && role === \"finance\") return true;\n if (status === \"pending_secretary\" && role === \"secretary\") return true;\n return false;\n };\n // Can resubmit?\n const canResubmit = ()=>{\n if (!contract || !user) return false;\n return contract.status === \"rejected\" && user.id === contract.creator_id;\n };\n // Approve/Reject\n const handleApproval = async (approved)=>{\n setApproving(true);\n try {\n const res = await (0,_lib_auth_client__WEBPACK_IMPORTED_MODULE_4__.authFetch)(\"/api/contracts/\".concat(contractId, \"/approve\"), {\n method: \"POST\",\n body: JSON.stringify({\n approved,\n opinion\n })\n });\n const data = await res.json();\n if (!res.ok) {\n showToast(data.error || \"操作失败\", \"error\");\n } else {\n showToast(approved ? \"已通过审批\" : \"已驳回\");\n setOpinion(\"\");\n fetchContract();\n }\n } catch (err) {\n showToast(\"操作失败,请重试\", \"error\");\n } finally{\n setApproving(false);\n }\n };\n // Start editing for resubmit\n const startEditing = ()=>{\n let start = \"\";\n let end = \"\";\n if (contract.contract_years && contract.contract_years.includes(\" ~ \")) {\n const parts = contract.contract_years.split(\" ~ \");\n start = parts[0] || \"\";\n end = parts[1] || \"\";\n }\n setEditForm({\n project_name: contract.project_name || \"\",\n project_leader: contract.project_leader || \"\",\n sign_date: contract.sign_date ? contract.sign_date.substring(0, 10) : \"\",\n partner_id: contract.partner_id || \"\",\n contract_content: contract.contract_content || \"\",\n cooperate_start: start,\n cooperate_end: end,\n contract_amount: contract.contract_amount || \"\",\n estimated_profit: contract.estimated_profit || \"\",\n payment_type: contract.payment_type || \"receive\"\n });\n setSelectedPartnerName(contract.partner_name || \"\");\n setPartnerSearch(contract.partner_name || \"\");\n setEditing(true);\n };\n const handleEditChange = (field, value)=>{\n setEditForm((prev)=>{\n const updated = {\n ...prev,\n [field]: value\n };\n if (field === \"payment_type\" && value === \"pay\") {\n updated.estimated_profit = \"\";\n }\n return updated;\n });\n };\n // Resubmit\n const handleResubmit = async ()=>{\n var _editForm_project_name;\n if (!((_editForm_project_name = editForm.project_name) === null || _editForm_project_name === void 0 ? void 0 : _editForm_project_name.trim())) {\n showToast(\"请输入项目名称\", \"error\");\n return;\n }\n if (!editForm.partner_id) {\n showToast(\"请选择合作单位\", \"error\");\n return;\n }\n if (!editForm.contract_amount || Number(editForm.contract_amount) <= 0) {\n showToast(\"请输入合同金额\", \"error\");\n return;\n }\n if (!editForm.cooperate_start || !editForm.cooperate_end) {\n showToast(\"请选择完整的合作时间范围\", \"error\");\n return;\n }\n if (editForm.cooperate_start > editForm.cooperate_end) {\n showToast(\"合作开始时间不能晚于结束时间\", \"error\");\n return;\n }\n setResubmitting(true);\n try {\n const body = {\n project_name: editForm.project_name,\n project_leader: editForm.project_leader || null,\n sign_date: editForm.sign_date || null,\n partner_id: editForm.partner_id,\n contract_content: editForm.contract_content || null,\n contract_years: editForm.cooperate_start && editForm.cooperate_end ? \"\".concat(editForm.cooperate_start, \" ~ \").concat(editForm.cooperate_end) : null,\n contract_amount: Number(editForm.contract_amount),\n estimated_profit: editForm.estimated_profit === \"\" || editForm.estimated_profit === null || editForm.estimated_profit === undefined ? null : Number(editForm.estimated_profit),\n payment_type: editForm.payment_type\n };\n const res = await (0,_lib_auth_client__WEBPACK_IMPORTED_MODULE_4__.authFetch)(\"/api/contracts/\".concat(contractId), {\n method: \"PUT\",\n body: JSON.stringify(body)\n });\n const data = await res.json();\n if (!res.ok) {\n showToast(data.error || \"重新提交失败\", \"error\");\n } else {\n // Upload new files if any\n for (const file of editFiles){\n const formData = new FormData();\n formData.append(\"file\", file);\n formData.append(\"contract_id\", contractId);\n await (0,_lib_auth_client__WEBPACK_IMPORTED_MODULE_4__.authFetch)(\"/api/upload\", {\n method: \"POST\",\n body: formData\n });\n }\n showToast(\"已重新提交审批\");\n setEditing(false);\n setEditFiles([]);\n fetchContract();\n }\n } catch (err) {\n showToast(\"提交失败,请重试\", \"error\");\n } finally{\n setResubmitting(false);\n }\n };\n const editFilteredPartners = partners.filter((p)=>(p.name || \"\").toLowerCase().includes(partnerSearch.toLowerCase()));\n const selectPartner = (partner)=>{\n setEditForm((prev)=>({\n ...prev,\n partner_id: partner.id\n }));\n setSelectedPartnerName(partner.name);\n setPartnerSearch(partner.name);\n setPartnerDropdownOpen(false);\n };\n // File handling for resubmit\n const handleEditFiles = (newFiles)=>{\n setEditFiles((prev)=>[\n ...prev,\n ...Array.from(newFiles)\n ]);\n };\n const formatFileSize = (bytes)=>{\n if (bytes < 1024) return bytes + \" B\";\n if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(1) + \" KB\";\n return (bytes / (1024 * 1024)).toFixed(1) + \" MB\";\n };\n // Timeline step state\n const getStepState = (stepIndex)=>{\n if (!contract) return \"pending\";\n const { status, supervisor_approved, finance_approved, secretary_approved } = contract;\n switch(stepIndex){\n case 0:\n return \"completed\";\n case 1:\n if (supervisor_approved === 1) return \"completed\";\n if (supervisor_approved === 0) return \"rejected\";\n if (status === \"pending_supervisor\") return \"current\";\n if ([\n \"pending_finance\",\n \"pending_secretary\",\n \"approved\"\n ].includes(status)) return \"completed\";\n return \"pending\";\n case 2:\n if (finance_approved === 1) return \"completed\";\n if (finance_approved === 0) return \"rejected\";\n if (status === \"pending_finance\") return \"current\";\n if ([\n \"pending_secretary\",\n \"approved\"\n ].includes(status)) return \"completed\";\n return \"pending\";\n case 3:\n if (secretary_approved === 1) return \"completed\";\n if (secretary_approved === 0) return \"rejected\";\n if (status === \"pending_secretary\") return \"current\";\n if (status === \"approved\") return \"completed\";\n return \"pending\";\n default:\n return \"pending\";\n }\n };\n const getLineState = (stepIndex)=>{\n const currentState = getStepState(stepIndex);\n const nextState = getStepState(stepIndex + 1);\n if (currentState === \"completed\" && nextState === \"completed\") return \"completed\";\n if (currentState === \"completed\" && nextState === \"current\") return \"active\";\n return \"\";\n };\n const getStepIcon = (state)=>{\n switch(state){\n case \"completed\":\n return \"✓\";\n case \"rejected\":\n return \"✕\";\n case \"current\":\n return \"⋯\";\n default:\n return \"\";\n }\n };\n const timelineSteps = [\n {\n label: \"提交\",\n approver: contract === null || contract === void 0 ? void 0 : contract.creator_name,\n time: contract === null || contract === void 0 ? void 0 : contract.created_at\n },\n {\n label: \"初审\",\n approver: contract === null || contract === void 0 ? void 0 : contract.supervisor_name,\n time: contract === null || contract === void 0 ? void 0 : contract.supervisor_time\n },\n {\n label: \"财务审核\",\n approver: contract === null || contract === void 0 ? void 0 : contract.finance_name,\n time: contract === null || contract === void 0 ? void 0 : contract.finance_time\n },\n {\n label: \"终审\",\n approver: contract === null || contract === void 0 ? void 0 : contract.secretary_name,\n time: contract === null || contract === void 0 ? void 0 : contract.secretary_time\n }\n ];\n if (loading) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"loading-overlay\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"loading-spinner\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 348,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 347,\n columnNumber: 7\n }, this);\n }\n if (!contract) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"empty-state\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"empty-state-icon\",\n children: \"\\uD83D\\uDCCB\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 356,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"empty-state-text\",\n children: \"合同不存在或已被删除\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 357,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"btn btn-primary\",\n style: {\n marginTop: 16\n },\n onClick: ()=>router.push(\"/dashboard/contracts\"),\n children: \"返回列表\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 358,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 355,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"animate-fadeIn\",\n children: [\n toast && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"toast-container\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"toast toast-\".concat(toast.type),\n children: [\n toast.type === \"success\" ? \"✅\" : \"❌\",\n \" \",\n toast.message\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 370,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 369,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"page-header\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"page-title\",\n children: contract.project_name\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 379,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"page-subtitle\",\n children: [\n \"合同编号:\",\n contract.contract_no || contract.id\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 380,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 378,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n display: \"flex\",\n gap: 12\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"status-badge status-\".concat(contract.status),\n children: _lib_auth_client__WEBPACK_IMPORTED_MODULE_4__.STATUS_NAMES[contract.status] || contract.status\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 383,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"btn btn-outline\",\n onClick: ()=>router.push(\"/dashboard/contracts\"),\n children: \"← 返回列表\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 386,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 382,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 377,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card\",\n style: {\n marginBottom: 20\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card-header\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"card-title\",\n children: \"\\uD83D\\uDCCA 审批流程\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 395,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 394,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card-body\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"approval-timeline\",\n children: timelineSteps.map((step, index)=>{\n const state = getStepState(index);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n display: \"flex\",\n alignItems: \"center\"\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"timeline-step\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"timeline-dot \".concat(state),\n children: state === \"pending\" ? index + 1 : getStepIcon(state)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 404,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"timeline-label\",\n children: step.label\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 407,\n columnNumber: 21\n }, this),\n (state === \"completed\" || state === \"rejected\") && step.approver && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"timeline-info\",\n children: [\n step.approver,\n step.time && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 411,\n columnNumber: 39\n }, this),\n step.time && formatDateTime(step.time)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 409,\n columnNumber: 23\n }, this),\n state === \"current\" && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"timeline-info\",\n style: {\n color: \"var(--primary)\"\n },\n children: \"等待审批中...\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 416,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 403,\n columnNumber: 19\n }, this),\n index < timelineSteps.length - 1 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"timeline-line \".concat(getLineState(index))\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 422,\n columnNumber: 21\n }, this)\n ]\n }, index, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 402,\n columnNumber: 17\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 398,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 397,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 393,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card\",\n style: {\n marginBottom: 20\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card-header\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"card-title\",\n children: \"\\uD83D\\uDCCB 合同详情\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 434,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 433,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card-body\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-grid\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-item\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-label\",\n children: \"项目名称\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 439,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-value\",\n children: contract.project_name || \"-\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 440,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 438,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-item\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-label\",\n children: \"项目负责人\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 443,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-value\",\n children: contract.project_leader || \"-\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 444,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 442,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-item\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-label\",\n children: \"合作单位\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 447,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-value\",\n children: contract.partner_name || \"-\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 448,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 446,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-item\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-label\",\n children: \"签订时间\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 451,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-value\",\n children: formatDate(contract.sign_date)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 452,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 450,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-item\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-label\",\n children: \"合同金额\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 455,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-value\",\n style: {\n color: \"var(--primary)\",\n fontWeight: 700,\n fontSize: 18\n },\n children: formatCurrency(contract.contract_amount)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 456,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 454,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-item\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-label\",\n children: \"合作期限\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 467,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-value\",\n children: contract.contract_years || \"-\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 468,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 466,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-item\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-label\",\n children: \"收付款类型\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 471,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-value\",\n children: contract.payment_type === \"receive\" ? \"收款\" : contract.payment_type === \"pay\" ? \"付款\" : \"-\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 472,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 470,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-item\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-label\",\n children: \"提交人\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 475,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-value\",\n children: contract.creator_name || \"-\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 476,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 474,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-item\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-label\",\n children: \"所属部门\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 479,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-value\",\n children: contract.department_name || \"-\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 480,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 478,\n columnNumber: 13\n }, this),\n contract.contract_content && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-item full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-label\",\n children: \"合同内容\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 484,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"detail-value\",\n style: {\n whiteSpace: \"pre-wrap\",\n lineHeight: 1.8\n },\n children: contract.contract_content\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 485,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 483,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 437,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 436,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 432,\n columnNumber: 7\n }, this),\n contract.opinions && contract.opinions.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card\",\n style: {\n marginBottom: 20\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card-header\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"card-title\",\n children: \"\\uD83D\\uDCAC 审批意见\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 498,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 497,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card-body\",\n children: contract.opinions.map((op, idx)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n padding: \"12px 16px\",\n background: op.approved ? \"var(--success-light)\" : \"var(--danger-light)\",\n borderRadius: \"var(--radius-md)\",\n marginBottom: 8,\n borderLeft: \"3px solid \".concat(op.approved ? \"var(--success)\" : \"var(--danger)\")\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n display: \"flex\",\n justifyContent: \"space-between\",\n marginBottom: 4\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n style: {\n fontWeight: 600,\n fontSize: 14\n },\n children: [\n op.approver_name,\n \" (\",\n _lib_auth_client__WEBPACK_IMPORTED_MODULE_4__.ROLE_NAMES[op.role] || op.role,\n \")\"\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 510,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n style: {\n fontSize: 12,\n color: \"var(--gray-500)\"\n },\n children: formatDateTime(op.created_at)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 513,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 509,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n fontSize: 14,\n color: \"var(--text-dark-secondary)\"\n },\n children: [\n op.approved ? \"✅ 通过\" : \"❌ 驳回\",\n op.opinion && \" — \".concat(op.opinion)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 517,\n columnNumber: 17\n }, this)\n ]\n }, idx, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 502,\n columnNumber: 15\n }, this))\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 500,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 496,\n columnNumber: 9\n }, this),\n contract.attachments && contract.attachments.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card\",\n style: {\n marginBottom: 20\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card-header\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"card-title\",\n children: \"\\uD83D\\uDCCE 附件文件\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 531,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 530,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card-body\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"file-list\",\n style: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: 16\n },\n children: contract.attachments.map((file, idx)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(AttachmentPreviewItem, {\n file: file\n }, idx, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 536,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 534,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 533,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"style\", {\n dangerouslySetInnerHTML: {\n __html: \"\\n .excel-table-container table {\\n border-collapse: collapse;\\n width: 100%;\\n font-size: 13px;\\n background: white;\\n }\\n .excel-table-container th, .excel-table-container td {\\n border: 1px solid var(--gray-200);\\n padding: 6px 10px;\\n text-align: left;\\n }\\n .excel-table-container tr:nth-child(even) {\\n background-color: var(--gray-50);\\n }\\n .docx-render-container .docx-preview-rendered {\\n font-family: inherit !important;\\n }\\n \"\n }\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 541,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 529,\n columnNumber: 9\n }, this),\n canApprove() && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card\",\n style: {\n marginBottom: 20\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card-header\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"card-title\",\n children: \"✍️ 审批操作\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 567,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 566,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card-body\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"form-group\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"form-label\",\n children: \"审批意见\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 571,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"textarea\", {\n className: \"form-textarea\",\n placeholder: \"请输入审批意见(可选)...\",\n value: opinion,\n onChange: (e1)=>setOpinion(e1.target.value),\n rows: 3\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 572,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 570,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n display: \"flex\",\n gap: 12\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"btn btn-success\",\n disabled: approving,\n onClick: ()=>handleApproval(true),\n children: approving ? \"处理中...\" : \"✅ 通过\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 581,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"btn btn-danger\",\n disabled: approving,\n onClick: ()=>handleApproval(false),\n children: approving ? \"处理中...\" : \"❌ 驳回\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 588,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 580,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 569,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 565,\n columnNumber: 9\n }, this),\n canResubmit() && !editing && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card\",\n style: {\n marginBottom: 20\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card-body\",\n style: {\n textAlign: \"center\",\n padding: 32\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n fontSize: 48,\n marginBottom: 12\n },\n children: \"\\uD83D\\uDCDD\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 604,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n style: {\n color: \"var(--gray-500)\",\n marginBottom: 16\n },\n children: \"该合同已被驳回,您可以修改后重新提交\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 605,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"btn btn-primary\",\n onClick: startEditing,\n children: \"修改并重新提交\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 606,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 603,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 602,\n columnNumber: 9\n }, this),\n canResubmit() && editing && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card\",\n style: {\n marginBottom: 20\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card-header\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"card-title\",\n children: \"\\uD83D\\uDCDD 修改合同信息\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 617,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 616,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card-body\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(2, 1fr)\",\n gap: 20\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"form-group\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"form-label\",\n children: [\n \"项目名称 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"required\",\n children: \"*\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 622,\n columnNumber: 52\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 622,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n className: \"form-input\",\n value: editForm.project_name,\n onChange: (e1)=>handleEditChange(\"project_name\", e1.target.value)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 623,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 621,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"form-group\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"form-label\",\n children: \"项目负责人\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 631,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"select\", {\n className: \"form-select\",\n value: editForm.project_leader,\n onChange: (e1)=>handleEditChange(\"project_leader\", e1.target.value),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: \"\",\n children: \"-- 请选择部门主管 --\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 637,\n columnNumber: 19\n }, this),\n supervisors.map((s)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: s.real_name,\n children: [\n s.real_name,\n \" (\",\n s.department_name || \"无部门\",\n \")\"\n ]\n }, s.id, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 639,\n columnNumber: 21\n }, this))\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 632,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 630,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"form-group\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"form-label\",\n children: \"签订时间\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 646,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"date\",\n className: \"form-input\",\n value: editForm.sign_date,\n onChange: (e1)=>handleEditChange(\"sign_date\", e1.target.value)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 647,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 645,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"form-group\",\n ref: partnerRef,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"form-label\",\n children: [\n \"合作单位 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"required\",\n children: \"*\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 655,\n columnNumber: 52\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 655,\n columnNumber: 17\n }, this),\n editForm.partner_id ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"selected-partner-card animate-fadeIn\",\n style: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n padding: \"10px 14px\",\n background: \"var(--gray-50)\",\n border: \"1.5px solid var(--gray-200)\",\n borderRadius: \"var(--radius-md)\"\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n style: {\n fontWeight: 600,\n fontSize: 14\n },\n children: [\n \"\\uD83C\\uDFE2 \",\n selectedPartnerName\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 666,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n className: \"btn btn-ghost btn-sm\",\n style: {\n color: \"var(--danger)\",\n padding: \"4px 8px\"\n },\n onClick: ()=>{\n setEditForm((prev)=>({\n ...prev,\n partner_id: \"\"\n }));\n setSelectedPartnerName(\"\");\n setPartnerSearch(\"\");\n setPartnerDropdownOpen(true);\n },\n children: \"重新选择\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 667,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 657,\n columnNumber: 19\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"search-select\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n className: \"search-select-input\",\n placeholder: \"搜索合作单位...\",\n value: partnerSearch,\n onChange: (e1)=>{\n setPartnerSearch(e1.target.value);\n setPartnerDropdownOpen(true);\n },\n onFocus: ()=>setPartnerDropdownOpen(true)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 683,\n columnNumber: 21\n }, this),\n partnerDropdownOpen && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"search-select-dropdown\",\n children: editFilteredPartners.length > 0 ? editFilteredPartners.map((p)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"search-select-option \".concat(editForm.partner_id === p.id ? \"selected\" : \"\"),\n onClick: ()=>selectPartner(p),\n children: p.name\n }, p.id, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 698,\n columnNumber: 29\n }, this)) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"search-select-empty\",\n children: [\n \"未找到?\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: \"/dashboard/partners\",\n onClick: (e1)=>{\n e1.preventDefault();\n router.push(\"/dashboard/partners\");\n },\n children: \"前往添加合作单位\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 709,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 707,\n columnNumber: 27\n }, this)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 695,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 682,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 654,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"form-group\",\n style: {\n gridColumn: \"1 / -1\"\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"form-label\",\n children: \"合同内容\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 720,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"textarea\", {\n className: \"form-textarea\",\n value: editForm.contract_content,\n onChange: (e1)=>handleEditChange(\"contract_content\", e1.target.value),\n rows: 4\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 721,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 719,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"form-group\",\n style: {\n gridColumn: \"1 / -1\"\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"form-label\",\n children: [\n \"合作期限 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"required\",\n children: \"*\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 729,\n columnNumber: 52\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 729,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: 12,\n maxWidth: 400\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"date\",\n className: \"form-input\",\n value: editForm.cooperate_start,\n onChange: handleEditChange(\"cooperate_start\", e.target.value)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 731,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n style: {\n color: \"var(--gray-400)\"\n },\n children: \"至\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 737,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"date\",\n className: \"form-input\",\n value: editForm.cooperate_end,\n onChange: handleEditChange(\"cooperate_end\", e.target.value)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 738,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 730,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 728,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"form-group\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"form-label\",\n children: [\n \"合同金额(元)\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"required\",\n children: \"*\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 747,\n columnNumber: 54\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 747,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n className: \"form-input\",\n min: \"0\",\n step: \"0.01\",\n value: editForm.contract_amount,\n onChange: (e1)=>handleEditChange(\"contract_amount\", e1.target.value)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 748,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 746,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"form-group\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"form-label\",\n children: \"预估利润(元)\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 758,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n className: \"form-input\",\n placeholder: editForm.payment_type === \"pay\" ? \"付款合同无利润\" : \"请输入预估利润\",\n min: \"0\",\n step: \"0.01\",\n value: editForm.estimated_profit,\n onChange: (e1)=>handleEditChange(\"estimated_profit\", e1.target.value),\n disabled: editForm.payment_type === \"pay\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 759,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 757,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"form-group\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"form-label\",\n children: \"收款/付款\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 771,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n display: \"flex\",\n gap: 24,\n marginTop: 8\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n cursor: \"pointer\",\n fontSize: 14\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"radio\",\n name: \"edit_payment_type\",\n value: \"receive\",\n checked: editForm.payment_type === \"receive\",\n onChange: (e1)=>handleEditChange(\"payment_type\", e1.target.value),\n style: {\n accentColor: \"var(--primary)\"\n }\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 774,\n columnNumber: 21\n }, this),\n \"收款\"\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 773,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n cursor: \"pointer\",\n fontSize: 14\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"radio\",\n name: \"edit_payment_type\",\n value: \"pay\",\n checked: editForm.payment_type === \"pay\",\n onChange: (e1)=>handleEditChange(\"payment_type\", e1.target.value),\n style: {\n accentColor: \"var(--primary)\"\n }\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 785,\n columnNumber: 21\n }, this),\n \"付款\"\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 784,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 772,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 770,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 620,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"form-group\",\n style: {\n marginTop: 12\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"form-label\",\n children: \"追加附件\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 801,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"upload-area \".concat(editDragging ? \"dragging\" : \"\"),\n onDragOver: (e1)=>{\n e1.preventDefault();\n setEditDragging(true);\n },\n onDragLeave: (e1)=>{\n e1.preventDefault();\n setEditDragging(false);\n },\n onDrop: (e1)=>{\n e1.preventDefault();\n setEditDragging(false);\n handleEditFiles(e1.dataTransfer.files);\n },\n onClick: ()=>{\n var _editFileInputRef_current;\n return (_editFileInputRef_current = editFileInputRef.current) === null || _editFileInputRef_current === void 0 ? void 0 : _editFileInputRef_current.click();\n },\n style: {\n padding: 20\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"upload-text\",\n children: \"\\uD83D\\uDCC1 点击或拖拽文件上传\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 810,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n ref: editFileInputRef,\n type: \"file\",\n multiple: true,\n style: {\n display: \"none\"\n },\n onChange: (e1)=>{\n if (e1.target.files.length > 0) {\n handleEditFiles(e1.target.files);\n e1.target.value = \"\";\n }\n }\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 811,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 802,\n columnNumber: 15\n }, this),\n editFiles.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"file-list\",\n children: editFiles.map((file, idx)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"file-item\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"file-item-name\",\n children: [\n \"\\uD83D\\uDCC4 \",\n file.name,\n \" (\",\n formatFileSize(file.size),\n \")\"\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 828,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n className: \"file-item-remove\",\n onClick: ()=>setEditFiles((prev)=>prev.filter((_, i)=>i !== idx)),\n children: \"✕\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 829,\n columnNumber: 23\n }, this)\n ]\n }, idx, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 827,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 825,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 800,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n display: \"flex\",\n gap: 12,\n marginTop: 20\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"btn btn-ghost\",\n onClick: ()=>setEditing(false),\n children: \"取消\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 843,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"btn btn-primary\",\n disabled: resubmitting,\n onClick: handleResubmit,\n children: resubmitting ? \"提交中...\" : \"✨ 修改并重新提交\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 846,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 842,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 619,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 615,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 366,\n columnNumber: 5\n }, this);\n}\n_s(ContractDetailPage, \"jRu9SXFN3Jz8oeWjHV+ObHQpXfw=\", false, function() {\n return [\n next_navigation__WEBPACK_IMPORTED_MODULE_2__.useRouter,\n next_navigation__WEBPACK_IMPORTED_MODULE_2__.useParams,\n _layout__WEBPACK_IMPORTED_MODULE_3__.useUser\n ];\n});\n_c = ContractDetailPage;\nfunction AttachmentPreviewItem(param) {\n let { file } = param;\n _s1();\n const originalPath = file.file_path || file.path || file.url || \"\";\n const ext = originalPath.split(\".\").pop().toLowerCase();\n let path = originalPath;\n if (path.startsWith(\"/uploads/attachments/\")) {\n const fileName = path.replace(\"/uploads/attachments/\", \"\");\n path = \"/api/upload?file=\".concat(fileName);\n }\n const isImage = [\n \"png\",\n \"jpg\",\n \"jpeg\",\n \"gif\",\n \"webp\",\n \"bmp\"\n ].includes(ext);\n const isPdf = ext === \"pdf\";\n const isWord = ext === \"docx\";\n const isExcel = [\n \"xlsx\",\n \"xls\"\n ].includes(ext);\n const isText = [\n \"txt\",\n \"csv\",\n \"log\",\n \"json\"\n ].includes(ext);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [error, setError] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [textVal, setTextVal] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [excelHtml, setExcelHtml] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const containerRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n // Helper to load external scripts\n const loadScript = (src)=>{\n return new Promise((resolve, reject)=>{\n if (document.querySelector('script[src=\"'.concat(src, '\"]'))) {\n resolve();\n return;\n }\n const script = document.createElement(\"script\");\n script.src = src;\n script.onload = ()=>resolve();\n script.onerror = (err)=>reject(err);\n document.body.appendChild(script);\n });\n };\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n let active = true;\n const fetchAndRender = async ()=>{\n if (isWord) {\n setLoading(true);\n setError(null);\n try {\n // Load JSZip and docx-preview\n await loadScript(\"https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js\");\n await loadScript(\"https://unpkg.com/docx-preview@0.1.15/dist/docx-preview.min.js\");\n const res = await fetch(path);\n if (!res.ok) throw new Error(\"无法加载文档文件\");\n const blob = await res.blob();\n if (active && containerRef.current && window.docx) {\n containerRef.current.innerHTML = \"\";\n await window.docx.renderAsync(blob, containerRef.current, null, {\n className: \"docx-preview-rendered\",\n inWrapper: false\n });\n }\n } catch (err) {\n console.error(err);\n if (active) setError(\"Word 文档解析失败,请点击下载查看\");\n } finally{\n if (active) setLoading(false);\n }\n } else if (isExcel) {\n setLoading(true);\n setError(null);\n try {\n await loadScript(\"https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js\");\n const res = await fetch(path);\n if (!res.ok) throw new Error(\"无法加载表格文件\");\n const arrayBuffer = await res.arrayBuffer();\n if (active && window.XLSX) {\n const workbook = window.XLSX.read(new Uint8Array(arrayBuffer), {\n type: \"array\"\n });\n const sheetName = workbook.SheetNames[0];\n const sheet = workbook.Sheets[sheetName];\n const html = window.XLSX.utils.sheet_to_html(sheet);\n setExcelHtml(html);\n }\n } catch (err) {\n console.error(err);\n if (active) setError(\"Excel 表格解析失败,请点击下载查看\");\n } finally{\n if (active) setLoading(false);\n }\n } else if (isText) {\n setLoading(true);\n setError(null);\n try {\n const res = await fetch(path);\n if (!res.ok) throw new Error(\"无法加载文本内容\");\n const text = await res.text();\n if (active) setTextVal(text);\n } catch (err) {\n console.error(err);\n if (active) setError(\"文本读取失败,请点击下载查看\");\n } finally{\n if (active) setLoading(false);\n }\n }\n };\n fetchAndRender();\n return ()=>{\n active = false;\n };\n }, [\n path,\n isWord,\n isExcel,\n isText\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n borderBottom: \"1px solid var(--gray-100)\",\n paddingBottom: 16,\n lastChild: {\n borderBottom: \"none\"\n }\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"file-item\",\n style: {\n marginBottom: 8,\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\"\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"file-item-name\",\n style: {\n fontWeight: 500\n },\n children: [\n \"\\uD83D\\uDCC4 \",\n file.original_name || file.file_name || file.name || \"附件\"\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 972,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: path,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"btn btn-sm btn-outline\",\n children: \"下载\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 975,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 971,\n columnNumber: 7\n }, this),\n loading && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n padding: 12,\n fontSize: 13,\n color: \"var(--gray-500)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"loading-spinner-sm\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 988,\n columnNumber: 11\n }, this),\n \" 正在渲染预览中...\"\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 987,\n columnNumber: 9\n }, this),\n error && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n padding: 10,\n fontSize: 13,\n color: \"var(--red-500)\",\n background: \"var(--red-50)\"\n },\n children: [\n \"⚠️ \",\n error\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 992,\n columnNumber: 9\n }, this),\n !loading && !error && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n isImage && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"file-preview animate-fadeIn\",\n style: {\n marginTop: 10,\n padding: 10,\n background: \"var(--gray-50)\",\n border: \"1px solid var(--gray-200)\",\n borderRadius: \"var(--radius-md)\",\n textAlign: \"center\"\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: path,\n alt: file.file_name,\n style: {\n maxWidth: \"100%\",\n maxHeight: 400,\n borderRadius: 4,\n objectFit: \"contain\"\n }\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 1009,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 1001,\n columnNumber: 13\n }, this),\n isPdf && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"file-preview animate-fadeIn\",\n style: {\n marginTop: 10,\n padding: 10,\n background: \"var(--gray-50)\",\n border: \"1px solid var(--gray-200)\",\n borderRadius: \"var(--radius-md)\"\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"iframe\", {\n src: path,\n title: file.file_name,\n style: {\n width: \"100%\",\n height: 600,\n border: \"none\",\n borderRadius: 4\n }\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 1024,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 1017,\n columnNumber: 13\n }, this),\n isWord && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"file-preview animate-fadeIn\",\n style: {\n marginTop: 10,\n padding: \"20px 40px\",\n background: \"white\",\n border: \"1px solid var(--gray-200)\",\n borderRadius: \"var(--radius-md)\",\n maxHeight: 600,\n overflowY: \"auto\",\n boxShadow: \"inset 0 0 10px rgba(0,0,0,0.05)\"\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n ref: containerRef,\n className: \"docx-render-container\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 1042,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 1032,\n columnNumber: 13\n }, this),\n isExcel && excelHtml && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"file-preview animate-fadeIn\",\n style: {\n marginTop: 10,\n padding: 16,\n background: \"white\",\n border: \"1px solid var(--gray-200)\",\n borderRadius: \"var(--radius-md)\",\n maxHeight: 500,\n overflow: \"auto\",\n boxShadow: \"inset 0 0 10px rgba(0,0,0,0.05)\"\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n dangerouslySetInnerHTML: {\n __html: excelHtml\n },\n className: \"excel-table-container\",\n style: {\n overflowX: \"auto\"\n }\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 1056,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 1046,\n columnNumber: 13\n }, this),\n isText && textVal && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"file-preview animate-fadeIn\",\n style: {\n marginTop: 10,\n padding: 16,\n background: \"var(--gray-50)\",\n border: \"1px solid var(--gray-200)\",\n borderRadius: \"var(--radius-md)\",\n maxHeight: 400,\n overflowY: \"auto\"\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"pre\", {\n style: {\n margin: 0,\n whiteSpace: \"pre-wrap\",\n fontFamily: \"monospace\",\n fontSize: 13,\n color: \"var(--gray-800)\",\n lineHeight: 1.6\n },\n children: textVal\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 1073,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 1064,\n columnNumber: 13\n }, this),\n !isImage && !isPdf && !isWord && !isExcel && !isText && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n fontSize: 12,\n color: \"var(--gray-400)\",\n marginTop: 4\n },\n children: \"提示:此格式文件暂不支持直接预览,请点击下载查看。\"\n }, void 0, false, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 1084,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true)\n ]\n }, void 0, true, {\n fileName: \"/Users/gandanxiangzhao/Desktop/合同流转审批系统/src/app/dashboard/contracts/[id]/page.js\",\n lineNumber: 970,\n columnNumber: 5\n }, this);\n}\n_s1(AttachmentPreviewItem, \"h9/3PC+Y99J69iFZWiUbBKa7l+Y=\");\n_c1 = AttachmentPreviewItem;\nvar _c, _c1;\n$RefreshReg$(_c, \"ContractDetailPage\");\n$RefreshReg$(_c1, \"AttachmentPreviewItem\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9hcHAvZGFzaGJvYXJkL2NvbnRyYWN0cy9baWRdL3BhZ2UuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQ2lFO0FBQ1Y7QUFDaEI7QUFDaUM7QUFFekQsU0FBU1U7O0lBQ3RCLE1BQU1DLFNBQVNQLDBEQUFTQTtJQUN4QixNQUFNUSxTQUFTUCwwREFBU0E7SUFDeEIsTUFBTVEsT0FBT1AsZ0RBQU9BO0lBQ3BCLE1BQU1RLGFBQWFGLE9BQU9HLEVBQUU7SUFFNUIsTUFBTSxDQUFDQyxVQUFVQyxZQUFZLEdBQUdqQiwrQ0FBUUEsQ0FBQztJQUN6QyxNQUFNLENBQUNrQixTQUFTQyxXQUFXLEdBQUduQiwrQ0FBUUEsQ0FBQztJQUN2QyxNQUFNLENBQUNvQixPQUFPQyxTQUFTLEdBQUdyQiwrQ0FBUUEsQ0FBQztJQUVuQyxpQkFBaUI7SUFDakIsTUFBTSxDQUFDc0IsU0FBU0MsV0FBVyxHQUFHdkIsK0NBQVFBLENBQUM7SUFDdkMsTUFBTSxDQUFDd0IsV0FBV0MsYUFBYSxHQUFHekIsK0NBQVFBLENBQUM7SUFFM0MsaUJBQWlCO0lBQ2pCLE1BQU0sQ0FBQzBCLFNBQVNDLFdBQVcsR0FBRzNCLCtDQUFRQSxDQUFDO0lBQ3ZDLE1BQU0sQ0FBQzRCLFVBQVVDLFlBQVksR0FBRzdCLCtDQUFRQSxDQUFDLENBQUM7SUFDMUMsTUFBTSxDQUFDOEIsV0FBV0MsYUFBYSxHQUFHL0IsK0NBQVFBLENBQUMsRUFBRTtJQUM3QyxNQUFNLENBQUNnQyxjQUFjQyxnQkFBZ0IsR0FBR2pDLCtDQUFRQSxDQUFDO0lBQ2pELE1BQU1rQyxtQkFBbUJoQyw2Q0FBTUEsQ0FBQztJQUNoQyxNQUFNLENBQUNpQyxjQUFjQyxnQkFBZ0IsR0FBR3BDLCtDQUFRQSxDQUFDO0lBRWpELHdCQUF3QjtJQUN4QixNQUFNLENBQUNxQyxVQUFVQyxZQUFZLEdBQUd0QywrQ0FBUUEsQ0FBQyxFQUFFO0lBQzNDLE1BQU0sQ0FBQ3VDLGFBQWFDLGVBQWUsR0FB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LFNBQVM7NEJBQ1RDLFlBQVk7NEJBQ1p1QixRQUFROzRCQUNSdEIsY0FBYzs0QkFDZDBHLFdBQVc7NEJBQ1hNLFdBQVc7d0JBQ2I7a0NBQ0UsNEVBQUNJOzRCQUFJaE8sT0FBTztnQ0FDVmlPLFFBQVE7Z0NBQ1I1SCxZQUFZO2dDQUNaNkgsWUFBWTtnQ0FDWi9ILFVBQVU7Z0NBQ1ZILE9BQU87Z0NBQ1BNLFlBQVk7NEJBQ2Q7c0NBQUlnRTs7Ozs7Ozs7Ozs7b0JBR1AsQ0FBQ04sV0FBVyxDQUFDQyxTQUFTLENBQUNDLFVBQVUsQ0FBQ0MsV0FBVyxDQUFDQyx3QkFDN0MsOERBQUN0Rjt3QkFBSTlFLE9BQU87NEJBQUVtRyxVQUFVOzRCQUFJSCxPQUFPOzRCQUFtQmYsV0FBVzt3QkFBRTtrQ0FBRzs7Ozs7Ozs7Ozs7Ozs7QUFRbEY7SUF2T1NpQztNQUFBQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9zcmMvYXBwL2Rhc2hib2FyZC9jb250cmFjdHMvW2lkXS9wYWdlLmpzPzRkYjAiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVJvdXRlciwgdXNlUGFyYW1zIH0gZnJvbSAnbmV4dC9uYXZpZ2F0aW9uJztcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi9sYXlvdXQnO1xuaW1wb3J0IHsgYXV0aEZldGNoLCBTVEFUVVNfTkFNRVMsIFJPTEVfTkFNRVMgfSBmcm9tICdAL2xpYi9hdXRoLWNsaWVudCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENvbnRyYWN0RGV0YWlsUGFnZSgpIHtcbiAgY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKCk7XG4gIGNvbnN0IHBhcmFtcyA9IHVzZVBhcmFtcygpO1xuICBjb25zdCB1c2VyID0gdXNlVXNlcigpO1xuICBjb25zdCBjb250cmFjdElkID0gcGFyYW1zLmlkO1xuXG4gIGNvbnN0IFtjb250cmFjdCwgc2V0Q29udHJhY3RdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbdG9hc3QsIHNldFRvYXN0XSA9IHVzZVN0YXRlKG51bGwpO1xuXG4gIC8vIEFwcHJvdmFsIHN0YXRlXG4gIGNvbnN0IFtvcGluaW9uLCBzZXRPcGluaW9uXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgW2FwcHJvdmluZywgc2V0QXBwcm92aW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICAvLyBSZXN1Ym1pdCBzdGF0ZVxuICBjb25zdCBbZWRpdGluZywgc2V0RWRpdGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtlZGl0Rm9ybSwgc2V0RWRpdEZvcm1dID0gdXNlU3RhdGUoe30pO1xuICBjb25zdCBbZWRpdEZpbGVzLCBzZXRFZGl0RmlsZXNdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbZWRpdERyYWdnaW5nLCBzZXRFZGl0RHJhZ2dpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBlZGl0RmlsZUlucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBbcmVzdWJtaXR0aW5nLCBzZXRSZXN1Ym1pdHRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIC8vIFBhcnRuZXJzIGZvciByZXN1Ym1pdFxuICBjb25zdCBbcGFydG5lcnMsIHNldFBhcnRuZXJzXSA9IHVzZVN0YXRlKFtdKTtcbiAgY29uc3QgW3N1cGVydmlzb3JzLCBzZXRTdXBlcnZpc29yc10gPSB1c2VTdGF0ZShbXSk7XG4gIGNvbnN0IFtwYXJ0bmVyU2VhcmNoLCBzZXRQYXJ0bmVyU2VhcmNoXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgW3NlbGVjdGVkUGFydG5lck5hbWUsIHNldFNlbGVjdGVkUGFydG5lck5hbWVdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBbcGFydG5lckRyb3Bkb3duT3Blbiwgc2V0UGFydG5lckRyb3Bkb3duT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHBhcnRuZXJSZWYgPSB1c2VSZWYobnVsbCk7XG5cbiAgY29uc3Qgc2hvd1RvYXN0ID0gKG1lc3NhZ2UsIHR5cGUgPSAnc3VjY2VzcycpID0+IHtcbiAgICBzZXRUb2FzdCh7IG1lc3NhZ2UsIHR5cGUgfSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiBzZXRUb2FzdChudWxsKSwgMzAwMCk7XG4gIH07XG5cbiAgY29uc3QgZmV0Y2hDb250cmFjdCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYXV0aEZldGNoKGAvYXBpL2NvbnRyYWN0cy8ke2NvbnRyYWN0SWR9YCk7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTtcbiAgICAgIGlmICghcmVzLm9rKSB7XG4gICAgICAgIHNob3dUb2FzdChkYXRhLmVycm9yIHx8ICfliqDovb3lpLHotKUnLCAnZXJyb3InKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc2V0Q29udHJhY3QoZGF0YS5jb250cmFjdCB8fCBkYXRhKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNob3dUb2FzdCgn5Yqg6L295ZCI5ZCM6K+m5oOF5aSx6LSlJywgJ2Vycm9yJyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgIH1cbiAgfSwgW2NvbnRyYWN0SWRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoQ29udHJhY3QoKTtcbiAgfSwgW2ZldGNoQ29udHJhY3RdKTtcblxuICAvLyBMb2FkIHBhcnRuZXJzIGFuZCBzdXBlcnZpc29ycyBmb3IgcmVzdWJtaXRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZWRpdGluZykge1xuICAgICAgYXV0aEZldGNoKCcvYXBpL3BhcnRuZXJzJylcbiAgICAgICAgLnRoZW4ociA9PiByLmpzb24oKSlcbiAgICAgICAgLnRoZW4oZGF0YSA9PiBzZXRQYXJ0bmVycyhkYXRhLnBhcnRuZXJzIHx8IGRhdGEgfHwgW10pKVxuICAgICAgICAuY2F0Y2goKCkgPT4ge30pO1xuXG4gICAgICBhdXRoRmV0Y2goJy9hcGkvdXNlcnMnKVxuICAgICAgICAudGhlbihyID0+IHIuanNvbigpKVxuICAgICAgICAudGhlbihkYXRhID0+IHtcbiAgICAgICAgICBjb25zdCBsaXN0ID0gKGRhdGEgfHwgW10pLmZpbHRlcih1ID0+IHUucm9sZSA9PT0gJ3N1cGVydmlzb3InICYmIHUuc3RhdHVzID09PSAxKTtcbiAgICAgICAgICBzZXRTdXBlcnZpc29ycyhsaXN0KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKCgpID0+IHt9KTtcbiAgICB9XG4gIH0sIFtlZGl0aW5nXSk7XG5cbiAgLy8gQ2xvc2UgcGFydG5lciBkcm9wZG93biBvbiBvdXRzaWRlIGNsaWNrXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZSkgPT4ge1xuICAgICAgaWYgKHBhcnRuZXJSZWYuY3VycmVudCAmJiAhcGFydG5lclJlZi5jdXJyZW50LmNvbnRhaW5zKGUudGFyZ2V0KSkge1xuICAgICAgICBzZXRQYXJ0bmVyRHJvcGRvd25PcGVuKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrKTtcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2spO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgZm9ybWF0RGF0ZSA9IChkYXRlU3RyKSA9PiB7XG4gICAgaWYgKCFkYXRlU3RyKSByZXR1cm4gJy0nO1xuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShkYXRlU3RyKTtcbiAgICByZXR1cm4gZC50b0xvY2FsZURhdGVTdHJpbmcoJ3poLUNOJywgeyB5ZWFyOiAnbnVtZXJpYycsIG1vbnRoOiAnMi1kaWdpdCcsIGRheTogJzItZGlnaXQnIH0pO1xuICB9O1xuXG4gIGNvbnN0IGZvcm1hdERhdGVUaW1lID0gKGRhdGVTdHIpID0+IHtcbiAgICBpZiAoIWRhdGVTdHIpIHJldHVybiAnJztcbiAgICBjb25zdCBkID0gbmV3IERhdGUoZGF0ZVN0cik7XG4gICAgcmV0dXJuIGQudG9Mb2NhbGVTdHJpbmcoJ3poLUNOJywge1xuICAgICAgeWVhcjogJ251bWVyaWMnLCBtb250aDogJzItZGlnaXQnLCBkYXk6ICcyLWRpZ2l0JyxcbiAgICAgIGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCdcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBmb3JtYXRDdXJyZW5jeSA9IChhbW91bnQpID0+IHtcbiAgICBpZiAoYW1vdW50ID09PSBudWxsIHx8IGFtb3VudCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJy0nO1xuICAgIHJldHVybiBOdW1iZXIoYW1vdW50KS50b0xvY2FsZVN0cmluZygnemgtQ04nLCB7IHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ0NOWScgfSk7XG4gIH07XG5cbiAgLy8gQ2FuIGN1cnJlbnQgdXNlciBhcHByb3ZlP1xuICBjb25zdCBjYW5BcHByb3ZlID0gKCkgPT4ge1xuICAgIGlmICghY29udHJhY3QgfHwgIXVzZXIpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCB7IHN0YXR1cywgZGVwYXJ0bWVudF9pZCB9ID0gY29udHJhY3Q7XG4gICAgY29uc3QgeyByb2xlLCBkZXBhcnRtZW50X2lkOiB1c2VyRGVwdElkIH0gPSB1c2VyO1xuICAgIGlmIChzdGF0dXMgPT09ICdwZW5kaW5nX3N1cGVydmlzb3InICYmIHJvbGUgPT09ICdzdXBlcnZpc29yJyAmJiB1c2VyRGVwdElkID09PSBkZXBhcnRtZW50X2lkKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoc3RhdHVzID09PSAncGVuZGluZ19maW5hbmNlJyAmJiByb2xlID09PSAnZmluYW5jZScpIHJldHVybiB0cnVlO1xuICAgIGlmIChzdGF0dXMgPT09ICdwZW5kaW5nX3NlY3JldGFyeScgJiYgcm9sZSA9PT0gJ3NlY3JldGFyeScpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICAvLyBDYW4gcmVzdWJtaXQ/XG4gIGNvbnN0IGNhblJlc3VibWl0ID0gKCkgPT4ge1xuICAgIGlmICghY29udHJhY3QgfHwgIXVzZXIpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gY29udHJhY3Quc3RhdHVzID09PSAncmVqZWN0ZWQnICYmIHVzZXIuaWQgPT09IGNvbnRyYWN0LmNyZWF0b3JfaWQ7XG4gIH07XG5cbiAgLy8gQXBwcm92ZS9SZWplY3RcbiAgY29uc3QgaGFuZGxlQXBwcm92YWwgPSBhc3luYyAoYXBwcm92ZWQpID0+IHtcbiAgICBzZXRBcHByb3ZpbmcodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGF1dGhGZXRjaChgL2FwaS9jb250cmFjdHMvJHtjb250cmFjdElkfS9hcHByb3ZlYCwge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBhcHByb3ZlZCwgb3BpbmlvbiB9KSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlcy5qc29uKCk7XG4gICAgICBpZiAoIXJlcy5vaykge1xuICAgICAgICBzaG93VG9hc3QoZGF0YS5lcnJvciB8fCAn5pON5L2c5aSx6LSlJywgJ2Vycm9yJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaG93VG9hc3QoYXBwcm92ZWQgPyAn5bey6YCa6L+H5a6h5om5JyA6ICflt7LpqbPlm54nKTtcbiAgICAgICAgc2V0T3BpbmlvbignJyk7XG4gICAgICAgIGZldGNoQ29udHJhY3QoKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNob3dUb2FzdCgn5pON5L2c5aSx6LSl77yM6K+36YeN6K+VJywgJ2Vycm9yJyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldEFwcHJvdmluZyhmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIC8vIFN0YXJ0IGVkaXRpbmcgZm9yIHJlc3VibWl0XG4gIGNvbnN0IHN0YXJ0RWRpdGluZyA9ICgpID0+IHtcbiAgICBsZXQgc3RhcnQgPSAnJztcbiAgICBsZXQgZW5kID0gJyc7XG4gICAgaWYgKGNvbnRyYWN0LmNvbnRyYWN0X3llYXJzICYmIGNvbnRyYWN0LmNvbnRyYWN0X3llYXJzLmluY2x1ZGVzKCcgfiAnKSkge1xuICAgICAgY29uc3QgcGFydHMgPSBjb250cmFjdC5jb250cmFjdF95ZWFycy5zcGxpdCgnIH4gJyk7XG4gICAgICBzdGFydCA9IHBhcnRzWzBdIHx8ICcnO1xuICAgICAgZW5kID0gcGFydHNbMV0gfHwgJyc7XG4gICAgfVxuXG4gICAgc2V0RWRpdEZvcm0oe1xuICAgICAgcHJvamVjdF9uYW1lOiBjb250cmFjdC5wcm9qZWN0X25hbWUgfHwgJycsXG4gICAgICBwcm9qZWN0X2xlYWRlcjogY29udHJhY3QucHJvamVjdF9sZWFkZXIgfHwgJycsXG4gICAgICBzaWduX2RhdGU6IGNvbnRyYWN0LnNpZ25fZGF0ZSA/IGNvbnRyYWN0LnNpZ25fZGF0ZS5zdWJzdHJpbmcoMCwgMTApIDogJycsXG4gICAgICBwYXJ0bmVyX2lkOiBjb250cmFjdC5wYXJ0bmVyX2lkIHx8ICcnLFxuICAgICAgY29udHJhY3RfY29udGVudDogY29udHJhY3QuY29udHJhY3RfY29udGVudCB8fCAnJyxcbiAgICAgIGNvb3BlcmF0ZV9zdGFydDogc3RhcnQsXG4gICAgICBjb29wZXJhdGVfZW5kOiBlbmQsXG4gICAgICBjb250cmFjdF9hbW91bnQ6IGNvbnRyYWN0LmNvbnRyYWN0X2Ftb3VudCB8fCAnJyxcbiAgICAgIGVzdGltYXRlZF9wcm9maXQ6IGNvbnRyYWN0LmVzdGltYXRlZF9wcm9maXQgfHwgJycsXG4gICAgICBwYXltZW50X3R5cGU6IGNvbnRyYWN0LnBheW1lbnRfdHlwZSB8fCAncmVjZWl2ZScsXG4gICAgfSk7XG4gICAgc2V0U2VsZWN0ZWRQYXJ0bmVyTmFtZShjb250cmFjdC5wYXJ0bmVyX25hbWUgfHwgJycpO1xuICAgIHNldFBhcnRuZXJTZWFyY2goY29udHJhY3QucGFydG5lcl9uYW1lIHx8ICcnKTtcbiAgICBzZXRFZGl0aW5nKHRydWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUVkaXRDaGFuZ2UgPSAoZmllbGQsIHZhbHVlKSA9PiB7XG4gICAgc2V0RWRpdEZvcm0ocHJldiA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVkID0geyAuLi5wcmV2LCBbZmllbGRdOiB2YWx1ZSB9O1xuICAgICAgaWYgKGZpZWxkID09PSAncGF5bWVudF90eXBlJyAmJiB2YWx1ZSA9PT0gJ3BheScpIHtcbiAgICAgICAgdXBkYXRlZC5lc3RpbWF0ZWRfcHJvZml0ID0gJyc7XG4gICAgICB9XG4gICAgICByZXR1cm4gdXBkYXRlZDtcbiAgICB9KTtcbiAgfTtcblxuICAvLyBSZXN1Ym1pdFxuICBjb25zdCBoYW5kbGVSZXN1Ym1pdCA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWVkaXRGb3JtLnByb2plY3RfbmFtZT8udHJpbSgpKSB7XG4gICAgICBzaG93VG9hc3QoJ+ivt+i+k+WFpemhueebruWQjeensCcsICdlcnJvcicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWVkaXRGb3JtLnBhcnRuZXJfaWQpIHtcbiAgICAgIHNob3dUb2FzdCgn6K+36YCJ5oup5ZCI5L2c5Y2V5L2NJywgJ2Vycm9yJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghZWRpdEZvcm0uY29udHJhY3RfYW1vdW50IHx8IE51bWJlcihlZGl0Rm9ybS5jb250cmFjdF9hbW91bnQpIDw9IDApIHtcbiAgICAgIHNob3dUb2FzdCgn6K+36L6T5YWl5ZCI5ZCM6YeR6aKdJywgJ2Vycm9yJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghZWRpdEZvcm0uY29vcGVyYXRlX3N0YXJ0IHx8ICFlZGl0Rm9ybS5jb29wZXJhdGVfZW5kKSB7XG4gICAgICBzaG93VG9hc3QoJ+ivt+mAieaLqeWujOaVtOeahOWQiOS9nOaXtumXtOiMg+WbtCcsICdlcnJvcicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZWRpdEZvcm0uY29vcGVyYXRlX3N0YXJ0ID4gZWRpdEZvcm0uY29vcGVyYXRlX2VuZCkge1xuICAgICAgc2hvd1RvYXN0KCflkIjkvZzlvIDlp4vml7bpl7TkuI3og73mmZrkuo7nu5PmnZ/ml7bpl7QnLCAnZXJyb3InKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXRSZXN1Ym1pdHRpbmcodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICAgIHByb2plY3RfbmFtZTogZWRpdEZvcm0ucHJvamVjdF9uYW1lLFxuICAgICAgICBwcm9qZWN0X2xlYWRlcjogZWRpdEZvcm0ucHJvamVjdF9sZWFkZXIgfHwgbnVsbCxcbiAgICAgICAgc2lnbl9kYXRlOiBlZGl0Rm9ybS5zaWduX2RhdGUgfHwgbnVsbCxcbiAgICAgICAgcGFydG5lcl9pZDogZWRpdEZvcm0ucGFydG5lcl9pZCxcbiAgICAgICAgY29udHJhY3RfY29udGVudDogZWRpdEZvcm0uY29udHJhY3RfY29udGVudCB8fCBudWxsLFxuICAgICAgICBjb250cmFjdF95ZWFyczogZWRpdEZvcm0uY29vcGVyYXRlX3N0YXJ0ICYmIGVkaXRGb3JtLmNvb3BlcmF0ZV9lbmQgPyBgJHtlZGl0Rm9ybS5jb29wZXJhdGVfc3RhcnR9IH4gJHtlZGl0Rm9ybS5jb29wZXJhdGVfZW5kfWAgOiBudWxsLFxuICAgICAgICBjb250cmFjdF9hbW91bnQ6IE51bWJlcihlZGl0Rm9ybS5jb250cmFjdF9hbW91bnQpLFxuICAgICAgICBlc3RpbWF0ZWRfcHJvZml0OiBlZGl0Rm9ybS5lc3RpbWF0ZWRfcHJvZml0ID09PSAnJyB8fCBlZGl0Rm9ybS5lc3RpbWF0ZWRfcHJvZml0ID09PSBudWxsIHx8IGVkaXRGb3JtLmVzdGltYXRlZF9wcm9maXQgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBOdW1iZXIoZWRpdEZvcm0uZXN0aW1hdGVkX3Byb2ZpdCksXG4gICAgICAgIHBheW1lbnRfdHlwZTogZWRpdEZvcm0ucGF5bWVudF90eXBlLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYXV0aEZldGNoKGAvYXBpL2NvbnRyYWN0cy8ke2NvbnRyYWN0SWR9YCwge1xuICAgICAgICBtZXRob2Q6ICdQVVQnLFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShib2R5KSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlcy5qc29uKCk7XG4gICAgICBpZiAoIXJlcy5vaykge1xuICAgICAgICBzaG93VG9hc3QoZGF0YS5lcnJvciB8fCAn6YeN5paw5o+Q5Lqk5aSx6LSlJywgJ2Vycm9yJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBVcGxvYWQgbmV3IGZpbGVzIGlmIGFueVxuICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZWRpdEZpbGVzKSB7XG4gICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcbiAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2NvbnRyYWN0X2lkJywgY29udHJhY3RJZCk7XG4gICAgICAgICAgYXdhaXQgYXV0aEZldGNoKCcvYXBpL3VwbG9hZCcsIHsgbWV0aG9kOiAnUE9TVCcsIGJvZHk6IGZvcm1EYXRhIH0pO1xuICAgICAgICB9XG4gICAgICAgIHNob3dUb2FzdCgn5bey6YeN5paw5o+Q5Lqk5a6h5om5Jyk7XG4gICAgICAgIHNldEVkaXRpbmcoZmFsc2UpO1xuICAgICAgICBzZXRFZGl0RmlsZXMoW10pO1xuICAgICAgICBmZXRjaENvbnRyYWN0KCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzaG93VG9hc3QoJ+aPkOS6pOWksei0pe+8jOivt+mHjeivlScsICdlcnJvcicpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRSZXN1Ym1pdHRpbmcoZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBlZGl0RmlsdGVyZWRQYXJ0bmVycyA9IHBhcnRuZXJzLmZpbHRlcihwID0+XG4gICAgKHAubmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhwYXJ0bmVyU2VhcmNoLnRvTG93ZXJDYXNlKCkpXG4gICk7XG5cbiAgY29uc3Qgc2VsZWN0UGFydG5lciA9IChwYXJ0bmVyKSA9PiB7XG4gICAgc2V0RWRpdEZvcm0ocHJldiA9PiAoeyAuLi5wcmV2LCBwYXJ0bmVyX2lkOiBwYXJ0bmVyLmlkIH0pKTtcbiAgICBzZXRTZWxlY3RlZFBhcnRuZXJOYW1lKHBhcnRuZXIubmFtZSk7XG4gICAgc2V0UGFydG5lclNlYXJjaChwYXJ0bmVyLm5hbWUpO1xuICAgIHNldFBhcnRuZXJEcm9wZG93bk9wZW4oZmFsc2UpO1xuICB9O1xuXG4gIC8vIEZpbGUgaGFuZGxpbmcgZm9yIHJlc3VibWl0XG4gIGNvbnN0IGhhbmRsZUVkaXRGaWxlcyA9IChuZXdGaWxlcykgPT4ge1xuICAgIHNldEVkaXRGaWxlcyhwcmV2ID0+IFsuLi5wcmV2LCAuLi5BcnJheS5mcm9tKG5ld0ZpbGVzKV0pO1xuICB9O1xuXG4gIGNvbnN0IGZvcm1hdEZpbGVTaXplID0gKGJ5dGVzKSA9PiB7XG4gICAgaWYgKGJ5dGVzIDwgMTAyNCkgcmV0dXJuIGJ5dGVzICsgJyBCJztcbiAgICBpZiAoYnl0ZXMgPCAxMDI0ICogMTAyNCkgcmV0dXJuIChieXRlcyAvIDEwMjQpLnRvRml4ZWQoMSkgKyAnIEtCJztcbiAgICByZXR1cm4gKGJ5dGVzIC8gKDEwMjQgKiAxMDI0KSkudG9GaXhlZCgxKSArICcgTUInO1xuICB9O1xuXG4gIC8vIFRpbWVsaW5lIHN0ZXAgc3RhdGVcbiAgY29uc3QgZ2V0U3RlcFN0YXRlID0gKHN0ZXBJbmRleCkgPT4ge1xuICAgIGlmICghY29udHJhY3QpIHJldHVybiAncGVuZGluZyc7XG4gICAgY29uc3QgeyBzdGF0dXMsIHN1cGVydmlzb3JfYXBwcm92ZWQsIGZpbmFuY2VfYXBwcm92ZWQsIHNlY3JldGFyeV9hcHByb3ZlZCB9ID0gY29udHJhY3Q7XG5cbiAgICBzd2l0Y2ggKHN0ZXBJbmRleCkge1xuICAgICAgY2FzZSAwOiAvLyDmj5DkuqRcbiAgICAgICAgcmV0dXJuICdjb21wbGV0ZWQnO1xuICAgICAgY2FzZSAxOiAvLyDliJ3lrqFcbiAgICAgICAgaWYgKHN1cGVydmlzb3JfYXBwcm92ZWQgPT09IDEpIHJldHVybiAnY29tcGxldGVkJztcbiAgICAgICAgaWYgKHN1cGVydmlzb3JfYXBwcm92ZWQgPT09IDApIHJldHVybiAncmVqZWN0ZWQnO1xuICAgICAgICBpZiAoc3RhdHVzID09PSAncGVuZGluZ19zdXBlcnZpc29yJykgcmV0dXJuICdjdXJyZW50JztcbiAgICAgICAgaWYgKFsncGVuZGluZ19maW5hbmNlJywgJ3BlbmRpbmdfc2VjcmV0YXJ5JywgJ2FwcHJvdmVkJ10uaW5jbHVkZXMoc3RhdHVzKSkgcmV0dXJuICdjb21wbGV0ZWQnO1xuICAgICAgICByZXR1cm4gJ3BlbmRpbmcnO1xuICAgICAgY2FzZSAyOiAvLyDotKLliqHlrqHmoLhcbiAgICAgICAgaWYgKGZpbmFuY2VfYXBwcm92ZWQgPT09IDEpIHJldHVybiAnY29tcGxldGVkJztcbiAgICAgICAgaWYgKGZpbmFuY2VfYXBwcm92ZWQgPT09IDApIHJldHVybiAncmVqZWN0ZWQnO1xuICAgICAgICBpZiAoc3RhdHVzID09PSAncGVuZGluZ19maW5hbmNlJykgcmV0dXJuICdjdXJyZW50JztcbiAgICAgICAgaWYgKFsncGVuZGluZ19zZWNyZXRhcnknLCAnYXBwcm92ZWQnXS5pbmNsdWRlcyhzdGF0dXMpKSByZXR1cm4gJ2NvbXBsZXRlZCc7XG4gICAgICAgIHJldHVybiAncGVuZGluZyc7XG4gICAgICBjYXNlIDM6IC8vIOe7iOWuoVxuICAgICAgICBpZiAoc2VjcmV0YXJ5X2FwcHJvdmVkID09PSAxKSByZXR1cm4gJ2NvbXBsZXRlZCc7XG4gICAgICAgIGlmIChzZWNyZXRhcnlfYXBwcm92ZWQgPT09IDApIHJldHVybiAncmVqZWN0ZWQnO1xuICAgICAgICBpZiAoc3RhdHVzID09PSAncGVuZGluZ19zZWNyZXRhcnknKSByZXR1cm4gJ2N1cnJlbnQnO1xuICAgICAgICBpZiAoc3RhdHVzID09PSAnYXBwcm92ZWQnKSByZXR1cm4gJ2NvbXBsZXRlZCc7XG4gICAgICAgIHJldHVybiAncGVuZGluZyc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ3BlbmRpbmcnO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBnZXRMaW5lU3RhdGUgPSAoc3RlcEluZGV4KSA9PiB7XG4gICAgY29uc3QgY3VycmVudFN0YXRlID0gZ2V0U3RlcFN0YXRlKHN0ZXBJbmRleCk7XG4gICAgY29uc3QgbmV4dFN0YXRlID0gZ2V0U3RlcFN0YXRlKHN0ZXBJbmRleCArIDEpO1xuICAgIGlmIChjdXJyZW50U3RhdGUgPT09ICdjb21wbGV0ZWQnICYmIG5leHRTdGF0ZSA9PT0gJ2NvbXBsZXRlZCcpIHJldHVybiAnY29tcGxldGVkJztcbiAgICBpZiAoY3VycmVudFN0YXRlID09PSAnY29tcGxldGVkJyAmJiBuZXh0U3RhdGUgPT09ICdjdXJyZW50JykgcmV0dXJuICdhY3RpdmUnO1xuICAgIHJldHVybiAnJztcbiAgfTtcblxuICBjb25zdCBnZXRTdGVwSWNvbiA9IChzdGF0ZSkgPT4ge1xuICAgIHN3aXRjaCAoc3RhdGUpIHtcbiAgICAgIGNhc2UgJ2NvbXBsZXRlZCc6IHJldHVybiAn4pyTJztcbiAgICAgIGNhc2UgJ3JlamVjdGVkJzogcmV0dXJuICfinJUnO1xuICAgICAgY2FzZSAnY3VycmVudCc6IHJldHVybiAn4ouvJztcbiAgICAgIGRlZmF1bHQ6IHJldHVybiAnJztcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgdGltZWxpbmVTdGVwcyA9IFtcbiAgICB7XG4gICAgICBsYWJlbDogJ+aPkOS6pCcsXG4gICAgICBhcHByb3ZlcjogY29udHJhY3Q/LmNyZWF0b3JfbmFtZSxcbiAgICAgIHRpbWU6IGNvbnRyYWN0Py5jcmVhdGVkX2F0LFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICfliJ3lrqEnLFxuICAgICAgYXBwcm92ZXI6IGNvbnRyYWN0Py5zdXBlcnZpc29yX25hbWUsXG4gICAgICB0aW1lOiBjb250cmFjdD8uc3VwZXJ2aXNvcl90aW1lLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICfotKLliqHlrqHmoLgnLFxuICAgICAgYXBwcm92ZXI6IGNvbnRyYWN0Py5maW5hbmNlX25hbWUsXG4gICAgICB0aW1lOiBjb250cmFjdD8uZmluYW5jZV90aW1lLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICfnu4jlrqEnLFxuICAgICAgYXBwcm92ZXI6IGNvbnRyYWN0Py5zZWNyZXRhcnlfbmFtZSxcbiAgICAgIHRpbWU6IGNvbnRyYWN0Py5zZWNyZXRhcnlfdGltZSxcbiAgICB9LFxuICBdO1xuXG4gIGlmIChsb2FkaW5nKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibG9hZGluZy1vdmVybGF5XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibG9hZGluZy1zcGlubmVyXCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgaWYgKCFjb250cmFjdCkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImVtcHR5LXN0YXRlXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZW1wdHktc3RhdGUtaWNvblwiPvCfk4s8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJlbXB0eS1zdGF0ZS10ZXh0XCI+5ZCI5ZCM5LiN5a2Y5Zyo5oiW5bey6KKr5Yig6ZmkPC9kaXY+XG4gICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwiYnRuIGJ0bi1wcmltYXJ5XCIgc3R5bGU9e3sgbWFyZ2luVG9wOiAxNiB9fSBvbkNsaWNrPXsoKSA9PiByb3V0ZXIucHVzaCgnL2Rhc2hib2FyZC9jb250cmFjdHMnKX0+XG4gICAgICAgICAg6L+U5Zue5YiX6KGoXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJhbmltYXRlLWZhZGVJblwiPlxuICAgICAgey8qIFRvYXN0ICovfVxuICAgICAge3RvYXN0ICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0b2FzdC1jb250YWluZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHRvYXN0IHRvYXN0LSR7dG9hc3QudHlwZX1gfT5cbiAgICAgICAgICAgIHt0b2FzdC50eXBlID09PSAnc3VjY2VzcycgPyAn4pyFJyA6ICfinYwnfSB7dG9hc3QubWVzc2FnZX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuXG4gICAgICB7LyogSGVhZGVyICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYWdlLWhlYWRlclwiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJwYWdlLXRpdGxlXCI+e2NvbnRyYWN0LnByb2plY3RfbmFtZX08L2gxPlxuICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInBhZ2Utc3VidGl0bGVcIj7lkIjlkIznvJblj7fvvJp7Y29udHJhY3QuY29udHJhY3Rfbm8gfHwgY29udHJhY3QuaWR9PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGdhcDogMTIgfX0+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgc3RhdHVzLWJhZGdlIHN0YXR1cy0ke2NvbnRyYWN0LnN0YXR1c31gfT5cbiAgICAgICAgICAgIHtTVEFUVVNfTkFNRVNbY29udHJhY3Quc3RhdHVzXSB8fCBjb250cmFjdC5zdGF0dXN9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwiYnRuIGJ0bi1vdXRsaW5lXCIgb25DbGljaz17KCkgPT4gcm91dGVyLnB1c2goJy9kYXNoYm9hcmQvY29udHJhY3RzJyl9PlxuICAgICAgICAgICAg4oaQIOi/lOWbnuWIl+ihqFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogQXBwcm92YWwgVGltZWxpbmUgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmRcIiBzdHlsZT17eyBtYXJnaW5Cb3R0b206IDIwIH19PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmQtaGVhZGVyXCI+XG4gICAgICAgICAgPGgzIGNsYXNzTmFtZT1cImNhcmQtdGl0bGVcIj7wn5OKIOWuoeaJuea1geeoizwvaDM+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmQtYm9keVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXBwcm92YWwtdGltZWxpbmVcIj5cbiAgICAgICAgICAgIHt0aW1lbGluZVN0ZXBzLm1hcCgoc3RlcCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSBnZXRTdGVwU3RhdGUoaW5kZXgpO1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpbmRleH0gc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJyB9fT5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGltZWxpbmUtc3RlcFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHRpbWVsaW5lLWRvdCAke3N0YXRlfWB9PlxuICAgICAgICAgICAgICAgICAgICAgIHtzdGF0ZSA9PT0gJ3BlbmRpbmcnID8gKGluZGV4ICsgMSkgOiBnZXRTdGVwSWNvbihzdGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpbWVsaW5lLWxhYmVsXCI+e3N0ZXAubGFiZWx9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIHsoc3RhdGUgPT09ICdjb21wbGV0ZWQnIHx8IHN0YXRlID09PSAncmVqZWN0ZWQnKSAmJiBzdGVwLmFwcHJvdmVyICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpbWVsaW5lLWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtzdGVwLmFwcHJvdmVyfVxuICAgICAgICAgICAgICAgICAgICAgICAge3N0ZXAudGltZSAmJiA8YnIgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICB7c3RlcC50aW1lICYmIGZvcm1hdERhdGVUaW1lKHN0ZXAudGltZSl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIHtzdGF0ZSA9PT0gJ2N1cnJlbnQnICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpbWVsaW5lLWluZm9cIiBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLXByaW1hcnkpJyB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIOetieW+heWuoeaJueS4rS4uLlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB7aW5kZXggPCB0aW1lbGluZVN0ZXBzLmxlbmd0aCAtIDEgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHRpbWVsaW5lLWxpbmUgJHtnZXRMaW5lU3RhdGUoaW5kZXgpfWB9PjwvZGl2PlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogQ29udHJhY3QgRGV0YWlscyAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZFwiIHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogMjAgfX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZC1oZWFkZXJcIj5cbiAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwiY2FyZC10aXRsZVwiPvCfk4sg5ZCI5ZCM6K+m5oOFPC9oMz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZC1ib2R5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZXRhaWwtZ3JpZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZXRhaWwtaXRlbVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRldGFpbC1sYWJlbFwiPumhueebruWQjeensDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRldGFpbC12YWx1ZVwiPntjb250cmFjdC5wcm9qZWN0X25hbWUgfHwgJy0nfTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRldGFpbC1pdGVtXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGV0YWlsLWxhYmVsXCI+6aG555uu6LSf6LSj5Lq6PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGV0YWlsLXZhbHVlXCI+e2NvbnRyYWN0LnByb2plY3RfbGVhZGVyIHx8ICctJ308L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZXRhaWwtaXRlbVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRldGFpbC1sYWJlbFwiPuWQiOS9nOWNleS9jTwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRldGFpbC12YWx1ZVwiPntjb250cmFjdC5wYXJ0bmVyX25hbWUgfHwgJy0nfTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRldGFpbC1pdGVtXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGV0YWlsLWxhYmVsXCI+562+6K6i5pe26Ze0PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGV0YWlsLXZhbHVlXCI+e2Zvcm1hdERhdGUoY29udHJhY3Quc2lnbl9kYXRlKX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZXRhaWwtaXRlbVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRldGFpbC1sYWJlbFwiPuWQiOWQjOmHkeminTwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRldGFpbC12YWx1ZVwiIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tcHJpbWFyeSknLCBmb250V2VpZ2h0OiA3MDAsIGZvbnRTaXplOiAxOCB9fT5cbiAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3koY29udHJhY3QuY29udHJhY3RfYW1vdW50KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIHsvKiA8ZGl2IGNsYXNzTmFtZT1cImRldGFpbC1pdGVtXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGV0YWlsLWxhYmVsXCI+6aKE5Lyw5Yip5ramPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGV0YWlsLXZhbHVlXCI+XG4gICAgICAgICAgICAgICAge2NvbnRyYWN0LnBheW1lbnRfdHlwZSA9PT0gJ3BheScgPyAnLScgOiBmb3JtYXRDdXJyZW5jeShjb250cmFjdC5lc3RpbWF0ZWRfcHJvZml0KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj4gKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRldGFpbC1pdGVtXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGV0YWlsLWxhYmVsXCI+5ZCI5L2c5pyf6ZmQPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGV0YWlsLXZhbHVlXCI+e2NvbnRyYWN0LmNvbnRyYWN0X3llYXJzIHx8ICctJ308L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZXRhaWwtaXRlbVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRldGFpbC1sYWJlbFwiPuaUtuS7mOasvuexu+WeizwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRldGFpbC12YWx1ZVwiPntjb250cmFjdC5wYXltZW50X3R5cGUgPT09ICdyZWNlaXZlJyA/ICfmlLbmrL4nIDogY29udHJhY3QucGF5bWVudF90eXBlID09PSAncGF5JyA/ICfku5jmrL4nIDogJy0nfTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRldGFpbC1pdGVtXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGV0YWlsLWxhYmVsXCI+5o+Q5Lqk5Lq6PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGV0YWlsLXZhbHVlXCI+e2NvbnRyYWN0LmNyZWF0b3JfbmFtZSB8fCAnLSd9PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGV0YWlsLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZXRhaWwtbGFiZWxcIj7miYDlsZ7pg6jpl6g8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZXRhaWwtdmFsdWVcIj57Y29udHJhY3QuZGVwYXJ0bWVudF9uYW1lIHx8ICctJ308L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAge2NvbnRyYWN0LmNvbnRyYWN0X2NvbnRlbnQgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRldGFpbC1pdGVtIGZ1bGxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRldGFpbC1sYWJlbFwiPuWQiOWQjOWGheWuuTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGV0YWlsLXZhbHVlXCIgc3R5bGU9e3sgd2hpdGVTcGFjZTogJ3ByZS13cmFwJywgbGluZUhlaWdodDogMS44IH19PlxuICAgICAgICAgICAgICAgICAge2NvbnRyYWN0LmNvbnRyYWN0X2NvbnRlbnR9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIEFwcHJvdmFsIE9waW5pb25zICovfVxuICAgICAge2NvbnRyYWN0Lm9waW5pb25zICYmIGNvbnRyYWN0Lm9waW5pb25zLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmRcIiBzdHlsZT17eyBtYXJnaW5Cb3R0b206IDIwIH19PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZC1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJjYXJkLXRpdGxlXCI+8J+SrCDlrqHmibnmhI/op4E8L2gzPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZC1ib2R5XCI+XG4gICAgICAgICAgICB7Y29udHJhY3Qub3BpbmlvbnMubWFwKChvcCwgaWR4KSA9PiAoXG4gICAgICAgICAgICAgIDxkaXYga2V5PXtpZHh9IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogJzEycHggMTZweCcsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogb3AuYXBwcm92ZWQgPyAndmFyKC0tc3VjY2Vzcy1saWdodCknIDogJ3ZhcigtLWRhbmdlci1saWdodCknLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJ3ZhcigtLXJhZGl1cy1tZCknLFxuICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbTogOCxcbiAgICAgICAgICAgICAgICBib3JkZXJMZWZ0OiBgM3B4IHNvbGlkICR7b3AuYXBwcm92ZWQgPyAndmFyKC0tc3VjY2VzcyknIDogJ3ZhcigtLWRhbmdlciknfWAsXG4gICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLCBtYXJnaW5Cb3R0b206IDQgfX0+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBmb250V2VpZ2h0OiA2MDAsIGZvbnRTaXplOiAxNCB9fT5cbiAgICAgICAgICAgICAgICAgICAge29wLmFwcHJvdmVyX25hbWV9ICh7Uk9MRV9OQU1FU1tvcC5yb2xlXSB8fCBvcC5yb2xlfSlcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGZvbnRTaXplOiAxMiwgY29sb3I6ICd2YXIoLS1ncmF5LTUwMCknIH19PlxuICAgICAgICAgICAgICAgICAgICB7Zm9ybWF0RGF0ZVRpbWUob3AuY3JlYXRlZF9hdCl9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBmb250U2l6ZTogMTQsIGNvbG9yOiAndmFyKC0tdGV4dC1kYXJrLXNlY29uZGFyeSknIH19PlxuICAgICAgICAgICAgICAgICAge29wLmFwcHJvdmVkID8gJ+KchSDpgJrov4cnIDogJ+KdjCDpqbPlm54nfVxuICAgICAgICAgICAgICAgICAge29wLm9waW5pb24gJiYgYCDigJQgJHtvcC5vcGluaW9ufWB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cblxuICAgICAgey8qIEF0dGFjaG1lbnRzICovfVxuICAgICAge2NvbnRyYWN0LmF0dGFjaG1lbnRzICYmIGNvbnRyYWN0LmF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmRcIiBzdHlsZT17eyBtYXJnaW5Cb3R0b206IDIwIH19PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZC1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJjYXJkLXRpdGxlXCI+8J+TjiDpmYTku7bmlofku7Y8L2gzPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZC1ib2R5XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbGUtbGlzdFwiIHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGdhcDogMTYgfX0+XG4gICAgICAgICAgICAgIHtjb250cmFjdC5hdHRhY2htZW50cy5tYXAoKGZpbGUsIGlkeCkgPT4gKFxuICAgICAgICAgICAgICAgIDxBdHRhY2htZW50UHJldmlld0l0ZW0ga2V5PXtpZHh9IGZpbGU9e2ZpbGV9IC8+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgey8qIEN1c3RvbSBnbG9iYWwgQ1NTIGZvciBFeGNlbCBwcmV2aWV3cyAqL31cbiAgICAgICAgICA8c3R5bGUgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3sgX19odG1sOiBgXG4gICAgICAgICAgICAuZXhjZWwtdGFibGUtY29udGFpbmVyIHRhYmxlIHtcbiAgICAgICAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuZXhjZWwtdGFibGUtY29udGFpbmVyIHRoLCAuZXhjZWwtdGFibGUtY29udGFpbmVyIHRkIHtcbiAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZ3JheS0yMDApO1xuICAgICAgICAgICAgICBwYWRkaW5nOiA2cHggMTBweDtcbiAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5leGNlbC10YWJsZS1jb250YWluZXIgdHI6bnRoLWNoaWxkKGV2ZW4pIHtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZ3JheS01MCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuZG9jeC1yZW5kZXItY29udGFpbmVyIC5kb2N4LXByZXZpZXctcmVuZGVyZWQge1xuICAgICAgICAgICAgICBmb250LWZhbWlseTogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGB9fSAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHsvKiBBcHByb3ZhbCBBY3Rpb24gKi99XG4gICAgICB7Y2FuQXBwcm92ZSgpICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYXJkXCIgc3R5bGU9e3sgbWFyZ2luQm90dG9tOiAyMCB9fT5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmQtaGVhZGVyXCI+XG4gICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwiY2FyZC10aXRsZVwiPuKcje+4jyDlrqHmibnmk43kvZw8L2gzPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZC1ib2R5XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImZvcm0tbGFiZWxcIj7lrqHmibnmhI/op4E8L2xhYmVsPlxuICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmb3JtLXRleHRhcmVhXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpeWuoeaJueaEj+inge+8iOWPr+mAie+8iS4uLlwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e29waW5pb259XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e2UgPT4gc2V0T3BpbmlvbihlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgcm93cz17M31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGdhcDogMTIgfX0+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJidG4gYnRuLXN1Y2Nlc3NcIlxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXthcHByb3Zpbmd9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlQXBwcm92YWwodHJ1ZSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7YXBwcm92aW5nID8gJ+WkhOeQhuS4rS4uLicgOiAn4pyFIOmAmui/hyd9XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYnRuIGJ0bi1kYW5nZXJcIlxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXthcHByb3Zpbmd9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlQXBwcm92YWwoZmFsc2UpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2FwcHJvdmluZyA/ICflpITnkIbkuK0uLi4nIDogJ+KdjCDpqbPlm54nfVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHsvKiBSZXN1Ym1pdCBBcmVhICovfVxuICAgICAge2NhblJlc3VibWl0KCkgJiYgIWVkaXRpbmcgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmRcIiBzdHlsZT17eyBtYXJnaW5Cb3R0b206IDIwIH19PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZC1ib2R5XCIgc3R5bGU9e3sgdGV4dEFsaWduOiAnY2VudGVyJywgcGFkZGluZzogMzIgfX0+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGZvbnRTaXplOiA0OCwgbWFyZ2luQm90dG9tOiAxMiB9fT7wn5OdPC9kaXY+XG4gICAgICAgICAgICA8cCBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLWdyYXktNTAwKScsIG1hcmdpbkJvdHRvbTogMTYgfX0+6K+l5ZCI5ZCM5bey6KKr6amz5Zue77yM5oKo5Y+v5Lul5L+u5pS55ZCO6YeN5paw5o+Q5LqkPC9wPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJidG4gYnRuLXByaW1hcnlcIiBvbkNsaWNrPXtzdGFydEVkaXRpbmd9PlxuICAgICAgICAgICAgICDkv67mlLnlubbph43mlrDmj5DkuqRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHsvKiBSZXN1Ym1pdCBFZGl0IEZvcm0gKi99XG4gICAgICB7Y2FuUmVzdWJtaXQoKSAmJiBlZGl0aW5nICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYXJkXCIgc3R5bGU9e3sgbWFyZ2luQm90dG9tOiAyMCB9fT5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmQtaGVhZGVyXCI+XG4gICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwiY2FyZC10aXRsZVwiPvCfk50g5L+u5pS55ZCI5ZCM5L+h5oGvPC9oMz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmQtYm9keVwiPlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZ3JpZCcsIGdyaWRUZW1wbGF0ZUNvbHVtbnM6ICdyZXBlYXQoMiwgMWZyKScsIGdhcDogMjAgfX0+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJmb3JtLWxhYmVsXCI+6aG555uu5ZCN56ewIDxzcGFuIGNsYXNzTmFtZT1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZm9ybS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICB2YWx1ZT17ZWRpdEZvcm0ucHJvamVjdF9uYW1lfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2UgPT4gaGFuZGxlRWRpdENoYW5nZSgncHJvamVjdF9uYW1lJywgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiZm9ybS1sYWJlbFwiPumhueebrui0n+i0o+S6ujwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZm9ybS1zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2VkaXRGb3JtLnByb2plY3RfbGVhZGVyfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2UgPT4gaGFuZGxlRWRpdENoYW5nZSgncHJvamVjdF9sZWFkZXInLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPi0tIOivt+mAieaLqemDqOmXqOS4u+euoSAtLTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAge3N1cGVydmlzb3JzLm1hcChzID0+IChcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBrZXk9e3MuaWR9IHZhbHVlPXtzLnJlYWxfbmFtZX0+XG4gICAgICAgICAgICAgICAgICAgICAge3MucmVhbF9uYW1lfSAoe3MuZGVwYXJ0bWVudF9uYW1lIHx8ICfml6Dpg6jpl6gnfSlcbiAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJmb3JtLWxhYmVsXCI+562+6K6i5pe26Ze0PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJkYXRlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZvcm0taW5wdXRcIlxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2VkaXRGb3JtLnNpZ25fZGF0ZX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtlID0+IGhhbmRsZUVkaXRDaGFuZ2UoJ3NpZ25fZGF0ZScsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb3JtLWdyb3VwXCIgcmVmPXtwYXJ0bmVyUmVmfT5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiZm9ybS1sYWJlbFwiPuWQiOS9nOWNleS9jSA8c3BhbiBjbGFzc05hbWU9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cbiAgICAgICAgICAgICAgICB7ZWRpdEZvcm0ucGFydG5lcl9pZCA/IChcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2VsZWN0ZWQtcGFydG5lci1jYXJkIGFuaW1hdGUtZmFkZUluXCIgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJzEwcHggMTRweCcsXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1ncmF5LTUwKScsXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJzEuNXB4IHNvbGlkIHZhcigtLWdyYXktMjAwKScsXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJ3ZhcigtLXJhZGl1cy1tZCknLFxuICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGZvbnRXZWlnaHQ6IDYwMCwgZm9udFNpemU6IDE0IH19PvCfj6Ige3NlbGVjdGVkUGFydG5lck5hbWV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYnRuIGJ0bi1naG9zdCBidG4tc21cIlxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tZGFuZ2VyKScsIHBhZGRpbmc6ICc0cHggOHB4JyB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEVkaXRGb3JtKHByZXYgPT4gKHsgLi4ucHJldiwgcGFydG5lcl9pZDogJycgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRQYXJ0bmVyTmFtZSgnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRQYXJ0bmVyU2VhcmNoKCcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFBhcnRuZXJEcm9wZG93bk9wZW4odHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIOmHjeaWsOmAieaLqVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNlYXJjaC1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInNlYXJjaC1zZWxlY3QtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi5pCc57Si5ZCI5L2c5Y2V5L2NLi4uXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17cGFydG5lclNlYXJjaH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRQYXJ0bmVyU2VhcmNoKGUudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFBhcnRuZXJEcm9wZG93bk9wZW4odHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkZvY3VzPXsoKSA9PiBzZXRQYXJ0bmVyRHJvcGRvd25PcGVuKHRydWUpfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICB7cGFydG5lckRyb3Bkb3duT3BlbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzZWFyY2gtc2VsZWN0LWRyb3Bkb3duXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZWRpdEZpbHRlcmVkUGFydG5lcnMubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdEZpbHRlcmVkUGFydG5lcnMubWFwKHAgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17cC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHNlYXJjaC1zZWxlY3Qtb3B0aW9uICR7ZWRpdEZvcm0ucGFydG5lcl9pZCA9PT0gcC5pZCA/ICdzZWxlY3RlZCcgOiAnJ31gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2VsZWN0UGFydG5lcihwKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cC5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzZWFyY2gtc2VsZWN0LWVtcHR5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg5pyq5om+5Yiw77yfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIi9kYXNoYm9hcmQvcGFydG5lcnNcIiBvbkNsaWNrPXtlID0+IHsgZS5wcmV2ZW50RGVmYXVsdCgpOyByb3V0ZXIucHVzaCgnL2Rhc2hib2FyZC9wYXJ0bmVycycpOyB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOWJjeW+gOa3u+WKoOWQiOS9nOWNleS9jVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9ybS1ncm91cFwiIHN0eWxlPXt7IGdyaWRDb2x1bW46ICcxIC8gLTEnIH19PlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJmb3JtLWxhYmVsXCI+5ZCI5ZCM5YaF5a65PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZvcm0tdGV4dGFyZWFcIlxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2VkaXRGb3JtLmNvbnRyYWN0X2NvbnRlbnR9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ZSA9PiBoYW5kbGVFZGl0Q2hhbmdlKCdjb250cmFjdF9jb250ZW50JywgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgcm93cz17NH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb3JtLWdyb3VwXCIgc3R5bGU9e3sgZ3JpZENvbHVtbjogJzEgLyAtMScgfX0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImZvcm0tbGFiZWxcIj7lkIjkvZzmnJ/pmZAgPHNwYW4gY2xhc3NOYW1lPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBnYXA6IDEyLCBtYXhXaWR0aDogNDAwIH19PlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJkYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZm9ybS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtlZGl0Rm9ybS5jb29wZXJhdGVfc3RhcnR9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVFZGl0Q2hhbmdlKCdjb29wZXJhdGVfc3RhcnQnLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgY29sb3I6ICd2YXIoLS1ncmF5LTQwMCknIH19PuiHszwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZvcm0taW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17ZWRpdEZvcm0uY29vcGVyYXRlX2VuZH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUVkaXRDaGFuZ2UoJ2Nvb3BlcmF0ZV9lbmQnLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImZvcm0tbGFiZWxcIj7lkIjlkIzph5Hpop3vvIjlhYPvvIk8c3BhbiBjbGFzc05hbWU9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZm9ybS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICBtaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgIHN0ZXA9XCIwLjAxXCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtlZGl0Rm9ybS5jb250cmFjdF9hbW91bnR9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ZSA9PiBoYW5kbGVFZGl0Q2hhbmdlKCdjb250cmFjdF9hbW91bnQnLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJmb3JtLWxhYmVsXCI+6aKE5Lyw5Yip5ram77yI5YWD77yJPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZm9ybS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17ZWRpdEZvcm0ucGF5bWVudF90eXBlID09PSAncGF5JyA/ICfku5jmrL7lkIjlkIzml6DliKnmtqYnIDogJ+ivt+i+k+WFpemihOS8sOWIqea2pid9XG4gICAgICAgICAgICAgICAgICBtaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgIHN0ZXA9XCIwLjAxXCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtlZGl0Rm9ybS5lc3RpbWF0ZWRfcHJvZml0fVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2UgPT4gaGFuZGxlRWRpdENoYW5nZSgnZXN0aW1hdGVkX3Byb2ZpdCcsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtlZGl0Rm9ybS5wYXltZW50X3R5cGUgPT09ICdwYXknfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiZm9ybS1sYWJlbFwiPuaUtuasvi/ku5jmrL48L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBnYXA6IDI0LCBtYXJnaW5Ub3A6IDggfX0+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJywgZ2FwOiA2LCBjdXJzb3I6ICdwb2ludGVyJywgZm9udFNpemU6IDE0IH19PlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJlZGl0X3BheW1lbnRfdHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJyZWNlaXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtlZGl0Rm9ybS5wYXltZW50X3R5cGUgPT09ICdyZWNlaXZlJ31cbiAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ZSA9PiBoYW5kbGVFZGl0Q2hhbmdlKCdwYXltZW50X3R5cGUnLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgYWNjZW50Q29sb3I6ICd2YXIoLS1wcmltYXJ5KScgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAg5pS25qy+XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicsIGdhcDogNiwgY3Vyc29yOiAncG9pbnRlcicsIGZvbnRTaXplOiAxNCB9fT5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZWRpdF9wYXltZW50X3R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwicGF5XCJcbiAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtlZGl0Rm9ybS5wYXltZW50X3R5cGUgPT09ICdwYXknfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtlID0+IGhhbmRsZUVkaXRDaGFuZ2UoJ3BheW1lbnRfdHlwZScsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBhY2NlbnRDb2xvcjogJ3ZhcigtLXByaW1hcnkpJyB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICDku5jmrL5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIHsvKiBGaWxlIHVwbG9hZCBmb3IgcmVzdWJtaXQgKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvcm0tZ3JvdXBcIiBzdHlsZT17eyBtYXJnaW5Ub3A6IDEyIH19PlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiZm9ybS1sYWJlbFwiPui/veWKoOmZhOS7tjwvbGFiZWw+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2B1cGxvYWQtYXJlYSAke2VkaXREcmFnZ2luZyA/ICdkcmFnZ2luZycgOiAnJ31gfVxuICAgICAgICAgICAgICAgIG9uRHJhZ092ZXI9e2UgPT4geyBlLnByZXZlbnREZWZhdWx0KCk7IHNldEVkaXREcmFnZ2luZyh0cnVlKTsgfX1cbiAgICAgICAgICAgICAgICBvbkRyYWdMZWF2ZT17ZSA9PiB7IGUucHJldmVudERlZmF1bHQoKTsgc2V0RWRpdERyYWdnaW5nKGZhbHNlKTsgfX1cbiAgICAgICAgICAgICAgICBvbkRyb3A9e2UgPT4geyBlLnByZXZlbnREZWZhdWx0KCk7IHNldEVkaXREcmFnZ2luZyhmYWxzZSk7IGhhbmRsZUVkaXRGaWxlcyhlLmRhdGFUcmFuc2Zlci5maWxlcyk7IH19XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gZWRpdEZpbGVJbnB1dFJlZi5jdXJyZW50Py5jbGljaygpfVxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IHBhZGRpbmc6IDIwIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInVwbG9hZC10ZXh0XCI+8J+TgSDngrnlh7vmiJbmi5bmi73mlofku7bkuIrkvKA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHJlZj17ZWRpdEZpbGVJbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgICAgICAgIG11bHRpcGxlXG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiAnbm9uZScgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0LmZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVFZGl0RmlsZXMoZS50YXJnZXQuZmlsZXMpO1xuICAgICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0LnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIHtlZGl0RmlsZXMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWxlLWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgIHtlZGl0RmlsZXMubWFwKChmaWxlLCBpZHgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2lkeH0gY2xhc3NOYW1lPVwiZmlsZS1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZmlsZS1pdGVtLW5hbWVcIj7wn5OEIHtmaWxlLm5hbWV9ICh7Zm9ybWF0RmlsZVNpemUoZmlsZS5zaXplKX0pPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmlsZS1pdGVtLXJlbW92ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRFZGl0RmlsZXMocHJldiA9PiBwcmV2LmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaWR4KSl9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAg4pyVXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGdhcDogMTIsIG1hcmdpblRvcDogMjAgfX0+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwiYnRuIGJ0bi1naG9zdFwiIG9uQ2xpY2s9eygpID0+IHNldEVkaXRpbmcoZmFsc2UpfT5cbiAgICAgICAgICAgICAgICDlj5bmtohcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtyZXN1Ym1pdHRpbmd9XG4gICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlUmVzdWJtaXR9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7cmVzdWJtaXR0aW5nID8gJ+aPkOS6pOS4rS4uLicgOiAn4pyoIOS/ruaUueW5tumHjeaWsOaPkOS6pCd9XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gQXR0YWNobWVudFByZXZpZXdJdGVtKHsgZmlsZSB9KSB7XG4gIGNvbnN0IG9yaWdpbmFsUGF0aCA9IGZpbGUuZmlsZV9wYXRoIHx8IGZpbGUucGF0aCB8fCBmaWxlLnVybCB8fCAnJztcbiAgY29uc3QgZXh0ID0gb3JpZ2luYWxQYXRoLnNwbGl0KCcuJykucG9wKCkudG9Mb3dlckNhc2UoKTtcbiAgXG4gIGxldCBwYXRoID0gb3JpZ2luYWxQYXRoO1xuICBpZiAocGF0aC5zdGFydHNXaXRoKCcvdXBsb2Fkcy9hdHRhY2htZW50cy8nKSkge1xuICAgIGNvbnN0IGZpbGVOYW1lID0gcGF0aC5yZXBsYWNlKCcvdXBsb2Fkcy9hdHRhY2htZW50cy8nLCAnJyk7XG4gICAgcGF0aCA9IGAvYXBpL3VwbG9hZD9maWxlPSR7ZmlsZU5hbWV9YDtcbiAgfVxuXG4gIGNvbnN0IGlzSW1hZ2UgPSBbJ3BuZycsICdqcGcnLCAnanBlZycsICdnaWYnLCAnd2VicCcsICdibXAnXS5pbmNsdWRlcyhleHQpO1xuICBjb25zdCBpc1BkZiA9IGV4dCA9PT0gJ3BkZic7XG4gIGNvbnN0IGlzV29yZCA9IGV4dCA9PT0gJ2RvY3gnO1xuICBjb25zdCBpc0V4Y2VsID0gWyd4bHN4JywgJ3hscyddLmluY2x1ZGVzKGV4dCk7XG4gIGNvbnN0IGlzVGV4dCA9IFsndHh0JywgJ2NzdicsICdsb2cnLCAnanNvbiddLmluY2x1ZGVzKGV4dCk7XG5cbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbdGV4dFZhbCwgc2V0VGV4dFZhbF0gPSB1c2VTdGF0ZSgnJyk7XG4gIGNvbnN0IFtleGNlbEh0bWwsIHNldEV4Y2VsSHRtbF0gPSB1c2VTdGF0ZSgnJyk7XG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZihudWxsKTtcblxuICAvLyBIZWxwZXIgdG8gbG9hZCBleHRlcm5hbCBzY3JpcHRzXG4gIGNvbnN0IGxvYWRTY3JpcHQgPSAoc3JjKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBzY3JpcHRbc3JjPVwiJHtzcmN9XCJdYCkpIHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgIHNjcmlwdC5zcmMgPSBzcmM7XG4gICAgICBzY3JpcHQub25sb2FkID0gKCkgPT4gcmVzb2x2ZSgpO1xuICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoZXJyKSA9PiByZWplY3QoZXJyKTtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCBhY3RpdmUgPSB0cnVlO1xuICAgIGNvbnN0IGZldGNoQW5kUmVuZGVyID0gYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKGlzV29yZCkge1xuICAgICAgICBzZXRMb2FkaW5nKHRydWUpO1xuICAgICAgICBzZXRFcnJvcihudWxsKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBMb2FkIEpTWmlwIGFuZCBkb2N4LXByZXZpZXdcbiAgICAgICAgICBhd2FpdCBsb2FkU2NyaXB0KCdodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9qc3ppcC8zLjEwLjEvanN6aXAubWluLmpzJyk7XG4gICAgICAgICAgYXdhaXQgbG9hZFNjcmlwdCgnaHR0cHM6Ly91bnBrZy5jb20vZG9jeC1wcmV2aWV3QDAuMS4xNS9kaXN0L2RvY3gtcHJldmlldy5taW4uanMnKTtcbiAgICAgICAgICBcbiAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChwYXRoKTtcbiAgICAgICAgICBpZiAoIXJlcy5vaykgdGhyb3cgbmV3IEVycm9yKCfml6Dms5XliqDovb3mlofmoaPmlofku7YnKTtcbiAgICAgICAgICBjb25zdCBibG9iID0gYXdhaXQgcmVzLmJsb2IoKTtcbiAgICAgICAgICBcbiAgICAgICAgICBpZiAoYWN0aXZlICYmIGNvbnRhaW5lclJlZi5jdXJyZW50ICYmIHdpbmRvdy5kb2N4KSB7XG4gICAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudC5pbm5lckhUTUwgPSAnJztcbiAgICAgICAgICAgIGF3YWl0IHdpbmRvdy5kb2N4LnJlbmRlckFzeW5jKGJsb2IsIGNvbnRhaW5lclJlZi5jdXJyZW50LCBudWxsLCB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJkb2N4LXByZXZpZXctcmVuZGVyZWRcIixcbiAgICAgICAgICAgICAgaW5XcmFwcGVyOiBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgaWYgKGFjdGl2ZSkgc2V0RXJyb3IoJ1dvcmQg5paH5qGj6Kej5p6Q5aSx6LSl77yM6K+354K55Ye75LiL6L295p+l55yLJyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKGFjdGl2ZSkgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNFeGNlbCkge1xuICAgICAgICBzZXRMb2FkaW5nKHRydWUpO1xuICAgICAgICBzZXRFcnJvcihudWxsKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBsb2FkU2NyaXB0KCdodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy94bHN4LzAuMTguNS94bHN4LmZ1bGwubWluLmpzJyk7XG4gICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2gocGF0aCk7XG4gICAgICAgICAgaWYgKCFyZXMub2spIHRocm93IG5ldyBFcnJvcign5peg5rOV5Yqg6L296KGo5qC85paH5Lu2Jyk7XG4gICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCByZXMuYXJyYXlCdWZmZXIoKTtcbiAgICAgICAgICBcbiAgICAgICAgICBpZiAoYWN0aXZlICYmIHdpbmRvdy5YTFNYKSB7XG4gICAgICAgICAgICBjb25zdCB3b3JrYm9vayA9IHdpbmRvdy5YTFNYLnJlYWQobmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpLCB7IHR5cGU6ICdhcnJheScgfSk7XG4gICAgICAgICAgICBjb25zdCBzaGVldE5hbWUgPSB3b3JrYm9vay5TaGVldE5hbWVzWzBdO1xuICAgICAgICAgICAgY29uc3Qgc2hlZXQgPSB3b3JrYm9vay5TaGVldHNbc2hlZXROYW1lXTtcbiAgICAgICAgICAgIGNvbnN0IGh0bWwgPSB3aW5kb3cuWExTWC51dGlscy5zaGVldF90b19odG1sKHNoZWV0KTtcbiAgICAgICAgICAgIHNldEV4Y2VsSHRtbChodG1sKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICBpZiAoYWN0aXZlKSBzZXRFcnJvcignRXhjZWwg6KGo5qC86Kej5p6Q5aSx6LSl77yM6K+354K55Ye75LiL6L295p+l55yLJyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKGFjdGl2ZSkgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNUZXh0KSB7XG4gICAgICAgIHNldExvYWRpbmcodHJ1ZSk7XG4gICAgICAgIHNldEVycm9yKG51bGwpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKHBhdGgpO1xuICAgICAgICAgIGlmICghcmVzLm9rKSB0aHJvdyBuZXcgRXJyb3IoJ+aXoOazleWKoOi9veaWh+acrOWGheWuuScpO1xuICAgICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXMudGV4dCgpO1xuICAgICAgICAgIGlmIChhY3RpdmUpIHNldFRleHRWYWwodGV4dCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICBpZiAoYWN0aXZlKSBzZXRFcnJvcign5paH5pys6K+75Y+W5aSx6LSl77yM6K+354K55Ye75LiL6L295p+l55yLJyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKGFjdGl2ZSkgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZmV0Y2hBbmRSZW5kZXIoKTtcbiAgICByZXR1cm4gKCkgPT4geyBhY3RpdmUgPSBmYWxzZTsgfTtcbiAgfSwgW3BhdGgsIGlzV29yZCwgaXNFeGNlbCwgaXNUZXh0XSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHN0eWxlPXt7IGJvcmRlckJvdHRvbTogJzFweCBzb2xpZCB2YXIoLS1ncmF5LTEwMCknLCBwYWRkaW5nQm90dG9tOiAxNiwgbGFzdENoaWxkOiB7IGJvcmRlckJvdHRvbTogJ25vbmUnIH0gfX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbGUtaXRlbVwiIHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogOCwgZGlzcGxheTogJ2ZsZXgnLCBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLCBhbGlnbkl0ZW1zOiAnY2VudGVyJyB9fT5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZmlsZS1pdGVtLW5hbWVcIiBzdHlsZT17eyBmb250V2VpZ2h0OiA1MDAgfX0+XG4gICAgICAgICAg8J+ThCB7ZmlsZS5vcmlnaW5hbF9uYW1lIHx8IGZpbGUuZmlsZV9uYW1lIHx8IGZpbGUubmFtZSB8fCAn6ZmE5Lu2J31cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8YVxuICAgICAgICAgIGhyZWY9e3BhdGh9XG4gICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICBjbGFzc05hbWU9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lXCJcbiAgICAgICAgPlxuICAgICAgICAgIOS4i+i9vVxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICAgIFxuICAgICAgey8qIExvYWRpbmcgJiBFcnJvciBTdGF0ZXMgKi99XG4gICAgICB7bG9hZGluZyAmJiAoXG4gICAgICAgIDxkaXYgc3R5bGU9e3sgcGFkZGluZzogMTIsIGZvbnRTaXplOiAxMywgY29sb3I6ICd2YXIoLS1ncmF5LTUwMCknLCBkaXNwbGF5OiAnZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBnYXA6IDggfX0+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibG9hZGluZy1zcGlubmVyLXNtXCI+PC9zcGFuPiDmraPlnKjmuLLmn5PpooTop4jkuK0uLi5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAge2Vycm9yICYmIChcbiAgICAgICAgPGRpdiBzdHlsZT17eyBwYWRkaW5nOiAxMCwgZm9udFNpemU6IDEzLCBjb2xvcjogJ3ZhcigtLXJlZC01MDApJywgYmFja2dyb3VuZDogJ3ZhcigtLXJlZC01MCknIH19PlxuICAgICAgICAgIOKaoO+4jyB7ZXJyb3J9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cblxuICAgICAgey8qIFByZXZpZXcgQXJlYSAqL31cbiAgICAgIHshbG9hZGluZyAmJiAhZXJyb3IgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIHtpc0ltYWdlICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmlsZS1wcmV2aWV3IGFuaW1hdGUtZmFkZUluXCIgc3R5bGU9e3tcbiAgICAgICAgICAgICAgbWFyZ2luVG9wOiAxMCxcbiAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1ncmF5LTUwKScsXG4gICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCB2YXIoLS1ncmF5LTIwMCknLFxuICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICd2YXIoLS1yYWRpdXMtbWQpJyxcbiAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJ1xuICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBzcmM9e3BhdGh9XG4gICAgICAgICAgICAgICAgYWx0PXtmaWxlLmZpbGVfbmFtZX1cbiAgICAgICAgICAgICAgICBzdHlsZT17eyBtYXhXaWR0aDogJzEwMCUnLCBtYXhIZWlnaHQ6IDQwMCwgYm9yZGVyUmFkaXVzOiA0LCBvYmplY3RGaXQ6ICdjb250YWluJyB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNQZGYgJiYgKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWxlLXByZXZpZXcgYW5pbWF0ZS1mYWRlSW5cIiBzdHlsZT17e1xuICAgICAgICAgICAgICBtYXJnaW5Ub3A6IDEwLFxuICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWdyYXktNTApJyxcbiAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkIHZhcigtLWdyYXktMjAwKScsXG4gICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJ3ZhcigtLXJhZGl1cy1tZCknXG4gICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgPGlmcmFtZVxuICAgICAgICAgICAgICAgIHNyYz17cGF0aH1cbiAgICAgICAgICAgICAgICB0aXRsZT17ZmlsZS5maWxlX25hbWV9XG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiA2MDAsIGJvcmRlcjogJ25vbmUnLCBib3JkZXJSYWRpdXM6IDQgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzV29yZCAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbGUtcHJldmlldyBhbmltYXRlLWZhZGVJblwiIHN0eWxlPXt7XG4gICAgICAgICAgICAgIG1hcmdpblRvcDogMTAsXG4gICAgICAgICAgICAgIHBhZGRpbmc6ICcyMHB4IDQwcHgnLFxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAnd2hpdGUnLFxuICAgICAgICAgICAgICBib3JkZXI6ICcxcHggc29saWQgdmFyKC0tZ3JheS0yMDApJyxcbiAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAndmFyKC0tcmFkaXVzLW1kKScsXG4gICAgICAgICAgICAgIG1heEhlaWdodDogNjAwLFxuICAgICAgICAgICAgICBvdmVyZmxvd1k6ICdhdXRvJyxcbiAgICAgICAgICAgICAgYm94U2hhZG93OiAnaW5zZXQgMCAwIDEwcHggcmdiYSgwLDAsMCwwLjA1KSdcbiAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICA8ZGl2IHJlZj17Y29udGFpbmVyUmVmfSBjbGFzc05hbWU9XCJkb2N4LXJlbmRlci1jb250YWluZXJcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNFeGNlbCAmJiBleGNlbEh0bWwgJiYgKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWxlLXByZXZpZXcgYW5pbWF0ZS1mYWRlSW5cIiBzdHlsZT17e1xuICAgICAgICAgICAgICBtYXJnaW5Ub3A6IDEwLFxuICAgICAgICAgICAgICBwYWRkaW5nOiAxNixcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3doaXRlJyxcbiAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkIHZhcigtLWdyYXktMjAwKScsXG4gICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJ3ZhcigtLXJhZGl1cy1tZCknLFxuICAgICAgICAgICAgICBtYXhIZWlnaHQ6IDUwMCxcbiAgICAgICAgICAgICAgb3ZlcmZsb3c6ICdhdXRvJyxcbiAgICAgICAgICAgICAgYm94U2hhZG93OiAnaW5zZXQgMCAwIDEwcHggcmdiYSgwLDAsMCwwLjA1KSdcbiAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogZXhjZWxIdG1sIH19IFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImV4Y2VsLXRhYmxlLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgb3ZlcmZsb3dYOiAnYXV0bycgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzVGV4dCAmJiB0ZXh0VmFsICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmlsZS1wcmV2aWV3IGFuaW1hdGUtZmFkZUluXCIgc3R5bGU9e3tcbiAgICAgICAgICAgICAgbWFyZ2luVG9wOiAxMCxcbiAgICAgICAgICAgICAgcGFkZGluZzogMTYsXG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1ncmF5LTUwKScsXG4gICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCB2YXIoLS1ncmF5LTIwMCknLFxuICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICd2YXIoLS1yYWRpdXMtbWQpJyxcbiAgICAgICAgICAgICAgbWF4SGVpZ2h0OiA0MDAsXG4gICAgICAgICAgICAgIG92ZXJmbG93WTogJ2F1dG8nXG4gICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgPHByZSBzdHlsZT17e1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCxcbiAgICAgICAgICAgICAgICB3aGl0ZVNwYWNlOiAncHJlLXdyYXAnLFxuICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk6ICdtb25vc3BhY2UnLFxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxMyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ3ZhcigtLWdyYXktODAwKScsXG4gICAgICAgICAgICAgICAgbGluZUhlaWdodDogMS42XG4gICAgICAgICAgICAgIH19Pnt0ZXh0VmFsfTwvcHJlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7IWlzSW1hZ2UgJiYgIWlzUGRmICYmICFpc1dvcmQgJiYgIWlzRXhjZWwgJiYgIWlzVGV4dCAmJiAoXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGZvbnRTaXplOiAxMiwgY29sb3I6ICd2YXIoLS1ncmF5LTQwMCknLCBtYXJnaW5Ub3A6IDQgfX0+XG4gICAgICAgICAgICAgIOaPkOekuu+8muatpOagvOW8j+aWh+S7tuaaguS4jeaUr+aMgeebtOaOpemihOiniO+8jOivt+eCueWHu+S4i+i9veafpeeci+OAglxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuIl0sIm5hbWVzIjpbInVzZVN0YXRlIiwidXNlRWZmZWN0IiwidXNlUmVmIiwidXNlQ2FsbGJhY2siLCJ1c2VSb3V0ZXIiLCJ1c2VQYXJhbXMiLCJ1c2VVc2VyIiwiYXV0aEZldGNoIiwiU1RBVFVTX05BTUVTIiwiUk9MRV9OQU1FUyIsIkNvbnRyYWN0RGV0YWlsUGFnZSIsInJvdXRlciIsInBhcmFtcyIsInVzZXIiLCJjb250cmFjdElkIiwiaWQiLCJjb250cmFjdCIsInNldENvbnRyYWN0IiwibG9hZGluZyIsInNldExvYWRpbmciLCJ0b2FzdCIsInNldFRvYXN0Iiwib3BpbmlvbiIsInNldE9waW5pb24iLCJhcHByb3ZpbmciLCJzZXRBcHByb3ZpbmciLCJlZGl0aW5nIiwic2V0RWRpdGluZyIsImVkaXRGb3JtIiwic2V0RWRpdEZvcm0iLCJlZGl0RmlsZXMiLCJzZXRFZGl0RmlsZXMiLCJlZGl0RHJhZ2dpbmciLCJzZXRFZGl0RHJhZ2dpbmciLCJlZGl0RmlsZUlucHV0UmVmIiwicmVzdWJtaXR0aW5nIiwic2V0UmVzdWJtaXR0aW5nIiwicGFydG5lcnMiLCJzZXRQYXJ0bmVycyIsInN1cGVydmlzb3JzIiwic2V0U3VwZXJ2aXNvcnMiLCJwYXJ0bmVyU2VhcmNoIiwic2V0UGFydG5lclNlYXJjaCIsInNlbGVjdGVkUGFydG5lck5hbWUiLCJzZXRTZWxlY3RlZFBhcnRuZXJOYW1lIiwicGFydG5lckRyb3Bkb3duT3BlbiIsInNldFBhcnRuZXJEcm9wZG93bk9wZW4iLCJwYXJ0bmVyUmVmIiwic2hvd1RvYXN0IiwibWVzc2FnZSIsInR5cGUiLCJzZXRUaW1lb3V0IiwiZmV0Y2hDb250cmFjdCIsInJlcyIsImRhdGEiLCJqc29uIiwib2siLCJlcnJvciIsImVyciIsInRoZW4iLCJyIiwiY2F0Y2giLCJsaXN0IiwiZmlsdGVyIiwidSIsInJvbGUiLCJzdGF0dXMiLCJoYW5kbGVDbGljayIsImUiLCJjdXJyZW50IiwiY29udGFpbnMiLCJ0YXJnZXQiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiZm9ybWF0RGF0ZSIsImRhdGVTdHIiLCJkIiwiRGF0ZSIsInRvTG9jYWxlRGF0ZVN0cmluZyIsInllYXIiLCJtb250aCIsImRheSIsImZvcm1hdERhdGVUaW1lIiwidG9Mb2NhbGVTdHJpbmciLCJob3VyIiwibWludXRlIiwiZm9ybWF0Q3VycmVuY3kiLCJhbW91bnQiLCJ1bmRlZmluZWQiLCJOdW1iZXIiLCJzdHlsZSIsImN1cnJlbmN5IiwiY2FuQXBwcm92ZSIsImRlcGFydG1lbnRfaWQiLCJ1c2VyRGVwdElkIiwiY2FuUmVzdWJtaXQiLCJjcmVhdG9yX2lkIiwiaGFuZGxlQXBwcm92YWwiLCJhcHByb3ZlZCIsIm1ldGhvZCIsImJvZHkiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhcnRFZGl0aW5nIiwic3RhcnQiLCJlbmQiLCJjb250cmFjdF95ZWFycyIsImluY2x1ZGVzIiwicGFydHMiLCJzcGxpdCIsInByb2plY3RfbmFtZSIsInByb2plY3RfbGVhZGVyIiwic2lnbl9kYXRlIiwic3Vic3RyaW5nIiwicGFydG5lcl9pZCIsImNvbnRyYWN0X2NvbnRlbnQiLCJjb29wZXJhdGVfc3RhcnQiLCJjb29wZXJhdGVfZW5kIiwiY29udHJhY3RfYW1vdW50IiwiZXN0aW1hdGVkX3Byb2ZpdCIsInBheW1lbnRfdHlwZSIsInBhcnRuZXJfbmFtZSIsImhhbmRsZUVkaXRDaGFuZ2UiLCJmaWVsZCIsInZhbHVlIiwicHJldiIsInVwZGF0ZWQiLCJoYW5kbGVSZXN1Ym1pdCIsInRyaW0iLCJmaWxlIiwiZm9ybURhdGEiLCJGb3JtRGF0YSIsImFwcGVuZCIsImVkaXRGaWx0ZXJlZFBhcnRuZXJzIiwicCIsIm5hbWUiLCJ0b0xvd2VyQ2FzZSIsInNlbGVjdFBhcnRuZXIiLCJwYXJ0bmVyIiwiaGFuZGxlRWRpdEZpbGVzIiwibmV3RmlsZXMiLCJBcnJheSIsImZyb20iLCJmb3JtYXRGaWxlU2l6ZSIsImJ5dGVzIiwidG9GaXhlZCIsImdldFN0ZXBTdGF0ZSIsInN0ZXBJbmRleCIsInN1cGVydmlzb3JfYXBwcm92ZWQiLCJmaW5hbmNlX2FwcHJvdmVkIiwic2VjcmV0YXJ5X2FwcHJvdmVkIiwiZ2V0TGluZVN0YXRlIiwiY3VycmVudFN0YXRlIiwibmV4dFN0YXRlIiwiZ2V0U3RlcEljb24iLCJzdGF0ZSIsInRpbWVsaW5lU3RlcHMiLCJsYWJlbCIsImFwcHJvdmVyIiwiY3JlYXRvcl9uYW1lIiwidGltZSIsImNyZWF0ZWRfYXQiLCJzdXBlcnZpc29yX25hbWUiLCJzdXBlcnZpc29yX3RpbWUiLCJmaW5hbmNlX25hbWUiLCJmaW5hbmNlX3RpbWUiLCJzZWNyZXRhcnlfbmFtZSIsInNlY3JldGFyeV90aW1lIiwiZGl2IiwiY2xhc3NOYW1lIiwiYnV0dG9uIiwibWFyZ2luVG9wIiwib25DbGljayIsInB1c2giLCJoMSIsImNvbnRyYWN0X25vIiwiZGlzcGxheSIsImdhcCIsInNwYW4iLCJtYXJnaW5Cb3R0b20iLCJoMyIsIm1hcCIsInN0ZXAiLCJpbmRleCIsImFsaWduSXRlbXMiLCJiciIsImNvbG9yIiwibGVuZ3RoIiwiZm9udFdlaWdodCIsImZvbnRTaXplIiwiZGVwYXJ0bWVudF9uYW1lIiwid2hpdGVTcGFjZSIsImxpbmVIZWlnaHQiLCJvcGluaW9ucyIsIm9wIiwiaWR4IiwicGFkZGluZyIsImJhY2tncm91bmQiLCJib3JkZXJSYWRpdXMiLCJib3JkZXJMZWZ0IiwianVzdGlmeUNvbnRlbnQiLCJhcHByb3Zlcl9uYW1lIiwiYXR0YWNobWVudHMiLCJmbGV4RGlyZWN0aW9uIiwiQXR0YWNobWVudFByZXZpZXdJdGVtIiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJfX2h0bWwiLCJ0ZXh0YXJlYSIsInBsYWNlaG9sZGVyIiwib25DaGFuZ2UiLCJyb3dzIiwiZGlzYWJsZWQiLCJ0ZXh0QWxpZ24iLCJncmlkVGVtcGxhdGVDb2x1bW5zIiwiaW5wdXQiLCJzZWxlY3QiLCJvcHRpb24iLCJzIiwicmVhbF9uYW1lIiwicmVmIiwiYm9yZGVyIiwib25Gb2N1cyIsImEiLCJocmVmIiwicHJldmVudERlZmF1bHQiLCJncmlkQ29sdW1uIiwibWF4V2lkdGgiLCJtaW4iLCJjdXJzb3IiLCJjaGVja2VkIiwiYWNjZW50Q29sb3IiLCJvbkRyYWdPdmVyIiwib25EcmFnTGVhdmUiLCJvbkRyb3AiLCJkYXRhVHJhbnNmZXIiLCJmaWxlcyIsImNsaWNrIiwibXVsdGlwbGUiLCJzaXplIiwiXyIsImkiLCJvcmlnaW5hbFBhdGgiLCJmaWxlX3BhdGgiLCJwYXRoIiwidXJsIiwiZXh0IiwicG9wIiwic3RhcnRzV2l0aCIsImZpbGVOYW1lIiwicmVwbGFjZSIsImlzSW1hZ2UiLCJpc1BkZiIsImlzV29yZCIsImlzRXhjZWwiLCJpc1RleHQiLCJzZXRFcnJvciIsInRleHRWYWwiLCJzZXRUZXh0VmFsIiwiZXhjZWxIdG1sIiwic2V0RXhjZWxIdG1sIiwiY29udGFpbmVyUmVmIiwibG9hZFNjcmlwdCIsInNyYyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicXVlcnlTZWxlY3RvciIsInNjcmlwdCIsImNyZWF0ZUVsZW1lbnQiLCJvbmxvYWQiLCJvbmVycm9yIiwiYXBwZW5kQ2hpbGQiLCJhY3RpdmUiLCJmZXRjaEFuZFJlbmRlciIsImZldGNoIiwiRXJyb3IiLCJibG9iIiwid2luZG93IiwiZG9jeCIsImlubmVySFRNTCIsInJlbmRlckFzeW5jIiwiaW5XcmFwcGVyIiwiY29uc29sZSIsImFycmF5QnVmZmVyIiwiWExTWCIsIndvcmtib29rIiwicmVhZCIsIlVpbnQ4QXJyYXkiLCJzaGVldE5hbWUiLCJTaGVldE5hbWVzIiwic2hlZXQiLCJTaGVldHMiLCJodG1sIiwidXRpbHMiLCJzaGVldF90b19odG1sIiwidGV4dCIsImJvcmRlckJvdHRvbSIsInBhZGRpbmdCb3R0b20iLCJsYXN0Q2hpbGQiLCJvcmlnaW5hbF9uYW1lIiwiZmlsZV9uYW1lIiwicmVsIiwiaW1nIiwiYWx0IiwibWF4SGVpZ2h0Iiwib2JqZWN0Rml0IiwiaWZyYW1lIiwidGl0bGUiLCJ3aWR0aCIsImhlaWdodCIsIm92ZXJmbG93WSIsImJveFNoYWRvdyIsIm92ZXJmbG93Iiwib3ZlcmZsb3dYIiwicHJlIiwibWFyZ2luIiwiZm9udEZhbWlseSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/app/dashboard/contracts/[id]/page.js\n")); /***/ }) });