8062a09f59436a091f2169df587816985b4942425d1726ad3861cd954f2427fb.json 248 KB

1
  1. {"ast":null,"code":"import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.typed-array.to-reversed.js\";\nimport \"core-js/modules/es.typed-array.to-sorted.js\";\nimport \"core-js/modules/es.typed-array.with.js\";\nimport \"./index.less\";\nimport \"./origin.less\";\nimport \"./square.less\";\nimport TabList from \"../../components/TabList\";\nimport Tabs from \"../../components/Tabs\";\nimport SearchBar from \"../../components/SearchBar\";\nimport Dropdown from \"./components/DropDown\";\nimport TableComponent from \"./components/TableComponent\";\nimport BenchDetail from \"../../components/BenchDetail\";\nimport StatusBar from \"../../components/StatusBar\";\n//import { benchList } from './api'\nimport THREE from \"three\";\nimport { uwbMain } from \"../../uwb-sample\";\nimport { mapState } from \"vuex\";\nimport ImageList from \"./components/ImageList\";\nimport webSocket from \"../../service/ws\";\nimport bus from \"../../service/bus\";\nimport { FBXLoader } from \"../../FBXLoader.js\";\nimport SearchBarMain from \"../../components/SearchBarMain\";\nconst ws = new webSocket();\nlet that = null;\nlet wsArray = [];\nlet wsArrayLength = 0;\nfor (var iR = 0; iR < 50; iR++) {\n const wsRemote = new webSocket();\n wsRemote.open().then(res => {\n // console.log(\"res\", res);\n });\n wsArray.push(wsRemote);\n}\nexport default {\n components: {\n StatusBar,\n TabList,\n SearchBar,\n Dropdown,\n TableComponent,\n BenchDetail,\n ImageList,\n SearchBarMain,\n Tabs\n },\n data() {\n return {\n inputValue: \"\",\n isDetailVisible: false,\n isRemoteBtnVisible: false,\n isShowPlanList: false,\n isShowCaseList: false,\n isShowAutoCaseList: false,\n isShowCaseDetail: false,\n isShowCaseCommit: false,\n isShowIssueList: true,\n isShowIssueDetail: false,\n isShowAutoCaseCommit: false,\n taskName: \"\",\n planName: \"\",\n caseName: \"\",\n caseProject: \"\",\n caseActive: \"\",\n caseFunction: \"\",\n caseSubFunction: \"\",\n caseMarket: \"\",\n caseLanguage: \"\",\n caseContent: \"\",\n isShowTaskList: true,\n benchDisplayVisible: false,\n mainSnapshot: \"\",\n currentBench: {},\n readyCount: 10,\n occupiedCount: 5,\n offlineCount: 3,\n previousSelectedBenchList: [],\n selectedBenchList: [],\n renderBenchList: true,\n filters: [],\n currentCase: null,\n currentIssue: null,\n currentPlanId: null,\n currentPlanName: null,\n currentCaseIndex: 0,\n tabs: [{\n title: \"实时\",\n list: []\n }, {\n title: \"历史\",\n list: []\n }, {\n title: \"告警\",\n list: []\n }, {\n title: \"报表\",\n list: []\n }, {\n title: \"管理\",\n list: []\n }],\n tableData: [{\n benchname: \"Bench 1\",\n project: \"Project A\",\n carline: \"Carline A\",\n market: \"Market A\",\n sw: \"SW 1\",\n status: \"Status A\"\n }, {\n benchname: \"Bench 2\",\n project: \"Project B\",\n carline: \"Carline B\",\n market: \"Market B\",\n sw: \"SW 2\",\n status: \"Status B\"\n }\n // ...\n ],\n\n currentPage: 1,\n pageSize: 5,\n benchId: \"219\",\n mainSnapshot: \"\",\n timer: 0,\n platform: null,\n connetedBenchId: \"\",\n displayTapMode: false,\n controlCursorPosition: {},\n ifBmBenchTrailUpperCursorTap: false,\n benchLog: [],\n trailCursorPosition: {},\n audioName: \"\",\n ifBmBenchTrailUpperCursorSwipe: false,\n ifBmBenchTrailUpperCursorPress: false,\n ifBmBenchTrailUpperCursor: false,\n controlStartPoint: {},\n ifShowLogBox: false,\n filterData: {\n keyword: \"\",\n currentPage: 1,\n pageSize: 10,\n status: [4, 3, 5, 0, 2, 6],\n types: [],\n \"basic attributes\": [],\n ips: [],\n orderBy: \"desc\",\n orderkey: \"id\"\n },\n benchImgUpper: \"\",\n benchImgUpperMap: {},\n currentScreen: \"upper\",\n benchDisplayLowerVisible: false,\n benchImgLower: \"\",\n benchImgLowerMap: {},\n isPlaying: false,\n isRecording: false,\n loopSendAudioTime: null,\n sendAudioString: \"\",\n vadThreshold: 0,\n recStream: null,\n paAc: null,\n paSource: null,\n paScriptNode: null,\n sempleRateMultiple: null,\n recordSuperposeArr: [],\n sempleRateHandlingThreshold: null,\n playAudioBenchList: [],\n isConnected: false,\n currentBenchId: 0,\n gridItems: [1, 2, 3, 4, 5, 6, 7, 8, 9],\n timerIdMap: {\n num: 0\n },\n timerId: 0,\n autoPlanResultInterval: 0,\n remoteBenchList: [],\n waterdotrefresh: false,\n selectedBenchId: 0,\n benchDetail: {},\n mouseBenchDetail: {}\n };\n },\n computed: {\n // tabClass(){\n // return 'ordinary';\n // },\n tabClass() {\n return this.currentBench.type == 2 ? \"short\" : \"long\";\n },\n ...mapState({\n isOpen: state => {\n return state.common.isOpen;\n },\n mouseX: state => {\n return state.benchList.mouseoverx;\n },\n mouseY: state => {\n return state.benchList.mouseovery;\n },\n mouseStatus: state => {\n return state.benchList.mouseoverstatus;\n },\n mouseBenchId: state => {\n return state.benchList.mouseoverbenchid;\n },\n images: state => {\n console.log(state.benchList.benchImgList, \"imageList\");\n return state.benchList.benchImgList;\n },\n isOpenSquare: state => {\n return state.common.isOpenSquare;\n },\n isOpen3d: state => {\n return state.common.isOpen3d;\n },\n benchList: state => {\n return state.benchList.benchList;\n },\n taskList: state => {\n return state.taskList.taskList;\n },\n planList: state => {\n console.log(state.planList.planList, \"planList==============\");\n let planList = state.planList.planList.concat(state.planList.autoPlanList);\n planList = planList.sort((p1, p2) => p1.id - p2.id);\n return planList;\n },\n autoPlanList: state => {\n return state.planList.autoPlanList;\n },\n caseList: state => {\n return state.caseList.caseList;\n },\n autoCaseList: state => {\n return state.caseList.autoCaseList;\n },\n issueList: state => {\n return state.issueList.issueList;\n },\n autoTaskStatus: state => {\n return state.caseList.autoTaskStatusMap[state.caseList.currentTaskIndex];\n },\n filterBenchList: state => {\n return state.benchList.filterBenchList.sort((a, b) => {\n let i = 0;\n let j = 0;\n for (let m = 0; m < a.MU_SW.length; m++) {\n i += a.MU_SW.charCodeAt(m);\n }\n for (let n = 0; n < b.MU_SW.length; n++) {\n j += b.MU_SW.charCodeAt(n);\n }\n return i - j;\n });\n },\n autoTaskStatusMap: state => {\n return state.caseList.autoTaskStatusMap;\n },\n autoTaskPercentMap: state => {\n return state.caseList.autoTaskPercentMap;\n }\n })\n },\n created() {\n // uwbMain(\"player\", window.innerWidth, window.innerHeight, \"panorama\");\n ws.open().then(res => {\n // console.log(\"res\", res);\n });\n window.handleListClick = this.handleListClick;\n window.handleBenchClick = this.handleBenchClick;\n window.handleClickTask = this.handleClickTask.bind(this);\n window.selectRowPlan = this.selectRowPlan.bind(this);\n window.selectRowCase = this.selectRowCase.bind(this);\n window.selectRowIssue = this.selectRowIssue.bind(this);\n window.handleListDbClick = this.handleListDbClick;\n window.showBenchPos = this.showBenchPos;\n window.handleClickImg = this.handleClickImg;\n let that = this;\n window.bmMapItemSelect = this.bmMapItemSelect.bind(this);\n window.bmMapItemUnSelect = this.bmMapItemUnSelect.bind(this);\n window.handleClickIssue = this.handleClickIssue.bind(this);\n window.selectBench = this.selectBench.bind(this);\n that.$store.dispatch(\"taskList/clearTaskList\");\n that.$store.dispatch(\"taskList/fetchTaskList\", {\n page_num: 1,\n page_size: 1000\n });\n window.bmMapItemActivate = this.bmMapItemActivate;\n // 调用定时器方法,返回定时器id,用于按条件清空\n that.timerId = that.myInterval(count => {\n // console.log(count)\n this.$store.dispatch(\"benchList/fetchBenchList\");\n if (!this.waterdotrefresh) {\n this.waterdotrefresh = true;\n window.getsqlData(window.sdkInstance, window.uwbInstance, true);\n }\n this.refreshBenchStatus();\n if (count > 30000) {\n console.log(\"end\");\n that.clearMyInterval(that.timerId);\n }\n }, 10000);\n setTimeout(() => {\n this.$store.dispatch(\"benchList/fetchBenchList\");\n if (!this.waterdotrefresh) {\n window.getsqlData(window.sdkInstance, window.uwbInstance, false);\n }\n this.refreshBenchStatus();\n }, 2000);\n this.$store.dispatch(\"issueList/fetchIssueList\", {\n bench_id: null,\n page_num: 1,\n page_size: 10,\n processor: 0,\n ticket_status: 0,\n ticket_type: 0\n });\n },\n async mounted() {\n that = this;\n //this.getBenchList();\n console.log(this.benchList, \"benchList\");\n this.tabs[0].list = this.benchList;\n this.tabs[1].list = this.taskList;\n this.tabs[2].list = this.issueList;\n let mapDom = document.getElementsByClassName(\"ordinary-map\")[0];\n let style = getComputedStyle(mapDom);\n let width = parseFloat(style.width);\n let height = parseFloat(style.height);\n let ratio = 1.8;\n window.renderWidth = width * ratio;\n window.renderHeight = height * ratio;\n sessionStorage.setItem('3dMode', 0);\n debugger;\n uwbMain('player', width * ratio, height * ratio, \"floorplan\");\n // window.sdkInstance.sceneRenderer.updateScreenSize(width * ratio, height * ratio);\n setTimeout(() => {\n var element = document.getElementById('house-player');\n element.style.marginLeft = (width - width * ratio) / 2 + 'px';\n element.style.marginTop = (height - height * ratio) / 2 + 'px';\n }, 3500);\n setTimeout(() => {\n let self = this;\n var objRBL = this.remoteBenchList;\n if (objRBL) {\n console.log(\"objRBL\", objRBL);\n wsArrayLength = objRBL.length;\n for (var iW = 0; iW < objRBL.length; iW++) {\n var i = JSON.parse(JSON.stringify(iW));\n let benchId = JSON.parse(JSON.stringify(objRBL[i]));\n setTimeout(() => {\n console.log(\"connect bench\", benchId);\n wsArray[i]?.connectBench({\n bench_id: String(benchId)\n }).then(res => {\n console.log(\"connect bench success\", benchId);\n self.getBenchImage(benchId, 1, wsArray[i], () => {});\n }).catch(err => {\n console.log(\"connect bench failed\", benchId);\n this.$message({\n message: \"This bench is offline\",\n // message: \"\",\n type: \"warning\"\n });\n });\n }, iW * 2000);\n }\n }\n }, 3000);\n bus.on(\"newLog\", param => {\n if (param.action) {\n this.benchLog.unshift(param);\n // document.getElementsByClassName(\"bmLogBottom\")[0].scrollIntoView();\n if (Object.keys(param.action).length != 0) {\n // console.log(\"actionType\", param.action.actionType);\n let position = param.action.pos;\n // console.log(\"position\", position);\n if (param.action.actionType == \"swipe on\") {\n this.ifBmBenchTrailUpperCursorSwipe = true;\n this.trailCursorPosition.left = position[0] / 1540 * 100;\n this.trailCursorPosition.top = position[1] / 720 * 100;\n setTimeout(() => {\n this.trailCursorPosition.left = (position[0] + position[2]) / 1540 * 100;\n this.trailCursorPosition.top = (position[1] + position[3]) / 720 * 100;\n }, 800);\n setTimeout(() => {\n this.ifBmBenchTrailUpperCursorSwipe = false;\n }, 2000);\n } else if (param.action.actionType == \"tap on\") {\n this.ifBmBenchTrailUpperCursorTap = true;\n setTimeout(() => {\n this.ifBmBenchTrailUpperCursorTap = false;\n }, 1500);\n this.trailCursorPosition.left = \"calc(\" + position[0] * 2 / 1540 * 100 + \"% - 1vh)\";\n this.trailCursorPosition.top = \"calc(\" + position[1] * 2 / 720 * 100 + \"% - 1vh)\";\n } else if (param.action.actionType == \"longPress on\") {\n this.ifBmBenchTrailUpperCursorPress = true;\n setTimeout(() => {\n this.ifBmBenchTrailUpperCursorPress = false;\n }, 1500);\n this.trailCursorPosition.left = position[0] * 2 / 1540 * 100;\n this.trailCursorPosition.top = position[1] * 2 / 720 * 100;\n } else if (param.action.actionType == \"audio\") {\n // console.log(\"newLog\", param);\n let fileName = param.action.file_name;\n console.log(\"audiofileName\", fileName);\n this.audioName = fileName;\n bus.emit(\"planAudioEmit\");\n }\n }\n }\n if (this.benchLog.length > 100) {\n this.benchLog.pop();\n }\n });\n bus.on(\"switchScreen\", param => {\n this.currentScreen = param.currentScreen;\n });\n bus.on(\"goHome\", () => {\n this.isConnected = false;\n this.$store.dispatch(\"common/setSquareStatus\", false);\n this.$store.dispatch(\"common/setConnectedStatus\", false);\n });\n {\n this.autoPlanResultInterval = setInterval(() => {\n let autoCurrentTaskData = window.localStorage.getItem(\"autoCurrentTaskData\");\n let autoCurrentTaskName = window.localStorage.getItem(\"autoCurrentTaskName\");\n autoCurrentTaskData = JSON.parse(autoCurrentTaskData);\n autoCurrentTaskName = JSON.parse(autoCurrentTaskName);\n if (autoCurrentTaskData) {\n for (let planId in autoCurrentTaskData) {\n let planExecId = autoCurrentTaskData[planId];\n if (autoCurrentTaskName) {\n let planName = autoCurrentTaskName[planId];\n if (planName) {\n this.$store.dispatch(\"caseList/fetchAutoCaseList\", {\n planId: planId,\n planName: planName\n });\n }\n }\n this.$store.dispatch(\"caseList/setPlanExecId\", planExecId);\n this.$store.dispatch('caseList/getAutoPlanResult', {\n planId,\n planExecId\n });\n }\n }\n }, 5000);\n }\n },\n methods: {\n changeCurrentBench(benchId) {\n this.isDetailVisible = false;\n if (this.isOpen3d) {\n this.$store.dispatch(\"common/toggle3dStatus\");\n }\n this.selectBench(benchId);\n },\n myInterval(callback, interval) {\n // 每设置一次定时器,num++ 代表系统中有num个自定义的定时器\n this.timerIdMap.num++;\n // 第 num 个定时器的id\n let intervalId = \"id\" + this.timerIdMap.num;\n this.timerIdMap[intervalId] = true;\n // 循环次数\n let count = 0;\n let startTime = Date.now();\n let loop = () => {\n // 系统map中不存在这个id,就停止循环\n if (!this.timerIdMap[intervalId]) {\n return;\n }\n if (Date.now() > startTime + interval * (count + 1)) {\n count++;\n callback(count);\n }\n window.requestAnimationFrame(loop);\n };\n loop();\n return intervalId;\n },\n // 清空定时器,删除全局的定时器id map\n clearMyInterval(intervalId) {\n delete this.timerIdMap[intervalId];\n },\n turnToNextManualCase() {},\n clickBackToTaskList() {\n this.isShowPlanList = false;\n this.isShowTaskList = true;\n // this.planList = [];\n },\n\n clickBackToCaseList() {\n this.isShowCaseCommit = false;\n this.isShowCaseList = true;\n },\n submitManualCase(item) {\n console.log(this.currentCase, \"manualcasedetail============\");\n this.isShowCaseCommit = true;\n this.isShowCaseDetail = false;\n },\n clickBackToIssueList() {\n this.isShowIssueList = true;\n this.isShowIssueDetail = false;\n },\n clickBackToPlan() {\n this.isShowCaseDetail = false;\n if (sessionStorage.getItem(\"autoCase\") == 0) {\n this.isShowCaseList = true;\n } else {\n this.isShowAutoCaseList = true;\n }\n },\n submitAutoCase() {\n if (this.autoTaskStatus == 'waiting' || this.autoTaskStatus == 'running') {\n this.$store.dispatch('caseList/cancelPlan');\n this.clickBackToTaskList();\n this.isShowAutoCaseList = false;\n return;\n }\n this.isShowAutoCaseList = false;\n this.isShowAutoCaseCommit = true;\n },\n clickBackToAutoCaseList() {\n this.isShowAutoCaseList = true;\n this.isShowAutoCaseCommit = false;\n },\n selectRowPlan(id, auto, name) {\n console.log(id, \"selectrowdata\");\n debugger;\n if (!auto || auto == \"undefined\" || auto == \"false\") {\n this.currentPlanId = id;\n this.currentPlanName = name;\n this.$store.dispatch(\"caseList/fetchCaseList\", {\n uuid: id,\n page_num: 1,\n page_size: 100\n });\n this.isShowCaseList = true;\n sessionStorage.setItem(\"autoCase\", 0);\n this.$store.dispatch(\"caseList/setCurrentTask\", id);\n } else {\n if (id == 109) id = 222;\n this.currentPlanId = id;\n this.currentPlanName = name;\n this.$store.dispatch(\"caseList/setCurrentPlanId\", id);\n this.$store.dispatch(\"caseList/fetchAutoCaseList\", {\n planId: id,\n planName: name\n });\n this.isShowAutoCaseList = true;\n this.$store.dispatch(\"caseList/setCurrentTask\", id);\n sessionStorage.setItem(\"autoCase\", 1);\n }\n this.$store.dispatch(\"common/fetchOptionList\");\n this.isShowPlanList = false;\n this.planName = name;\n },\n selectRowCase(row) {\n this.isShowCaseList = false;\n this.isShowCaseDetail = true;\n this.caseName = row.m_id;\n this.caseProject = row.precondition;\n //this.caseActive =,\n this.caseFunction = row.action;\n this.caseSubFunction = row.expectation;\n this.caseMarket = row.market;\n this.caseLanguage = row.language;\n this.currentCase = row;\n for (let i = 0; i < this.caseList.length; i++) {\n if (this.caseList[i].case_no == row.case_no) {\n this.currentCaseIndex = i;\n break;\n }\n }\n //this.caseContent =,\n },\n\n turnNextCase() {\n this.currentCaseIndex++;\n if (this.currentCaseIndex == this.caseList.length) {\n this.isShowCaseList = true;\n this.isShowCaseCommit = false;\n } else {\n this.currentCase = this.caseList[this.currentCaseIndex];\n this.caseName = this.currentCase.m_id;\n this.caseProject = this.currentCase.precondition;\n //this.caseActive =,\n this.caseFunction = this.currentCase.action;\n this.caseSubFunction = this.currentCase.expectation;\n this.caseMarket = this.currentCase.market;\n this.caseLanguage = this.currentCase.language;\n this.isShowCaseCommit = false;\n this.isShowCaseDetail = true;\n }\n },\n selectRowIssue(id) {\n let row = this.issueList.find(i => i.id == id);\n this.isShowIssueList = false;\n this.isShowIssueDetail = true;\n this.currentIssue = row;\n console.log(row, \"==============issue============\");\n },\n clickBackToPlanList() {\n this.isShowPlanList = true;\n this.isShowCaseList = false;\n this.caseList = [];\n },\n clickBackToAutoPlanList() {\n this.isShowPlanList = true;\n this.isShowAutoCaseList = false;\n this.$store.dispatch('caseList/clearAutoCaseList');\n },\n bmMapItemUnSelect() {\n let items = document.getElementsByClassName(\"item-box\");\n for (var index = 0; index < items.length; index++) {\n items[index].style.background = \"#00000032\";\n let title = items[index].getElementsByClassName(\"item-title\");\n console.log(\"textContent\", title[0].textContent);\n let itemOther = this.benchList.find(b => parseInt(b.id) == parseInt(title[0].textContent));\n itemOther.selected = false;\n itemOther.scale = 1;\n }\n },\n onFocus() {\n this.$store.dispatch(\"common/setIsOpen\", true);\n this.$store.dispatch('benchList/filterBenchList', {\n type: 'status',\n value: 'Status'\n });\n this.$store.dispatch('benchList/filterBenchList', {\n type: 'project',\n value: 'Project'\n });\n this.$store.dispatch('benchList/filterBenchList', {\n type: 'carline',\n value: 'Carline'\n });\n this.$store.dispatch('benchList/filterBenchList', {\n type: 'variant',\n value: 'Variant'\n });\n this.$store.dispatch('benchList/filterBenchList', {\n type: 'cluster',\n value: 'Cluster'\n });\n this.$store.dispatch('benchList/filterBenchList', {\n type: 'market',\n value: 'Market'\n });\n this.$store.dispatch('benchList/setFilterBenchFlag', true);\n },\n onBlur(e) {\n console.log(\"=====----====\", e.target.classList);\n if (Array.prototype.indexOf.call(e.target.classList, \"ordinary-left\") > -1) {\n this.$store.dispatch(\"common/setIsOpen\", false);\n }\n },\n onInput(value) {\n this.inputValue = value;\n this.$store.dispatch('benchList/filterBenchList', {\n type: 'name',\n value: value\n });\n this.$store.dispatch('benchList/setFilterBenchFlag', true);\n },\n onClickOutside() {\n if (this.$refs.searchbar.$el.contains(event.target) || this.$refs.dropdown.$el.contains(event.target)) {\n return;\n }\n this.$store.dispatch(\"common/setIsOpen\", false);\n },\n handleClickTask(taskId, auto) {\n let task = that.taskList.find(t => t.id == taskId);\n // 获取手动测试plan列表\n let manualList = task.plan_list[1];\n // 获取自动测试plan列表\n let autoList = task.plan_list[2];\n autoList.forEach(at => {\n that.$store.dispatch(\"planList/fetchPlanDetail\", {\n planId: at < 100 ? at + 101 : at\n });\n });\n that.isShowPlanList = true;\n that.isShowTaskList = false;\n this.$store.commit(\"planList/setAutoPlanList\", autoList);\n this.$store.commit(\"planList/setPlanList\", manualList);\n that.taskName = task.name;\n this.$nextTick(() => {\n that.$store.dispatch(\"planList/clearPlanList\");\n that.$store.dispatch(\"planList/fetchPlanList\", {\n page_num: 1,\n page_size: 10000\n });\n });\n console.log(task, \"任务详情\");\n },\n handleClickIssue(issueId) {\n console.log(issueId, \"issueid\");\n },\n showBenchPos(benchList) {\n console.log(\"benchList\", benchList);\n for (var item of benchList) {\n var currentBench = this.benchList.find(b => b.id == item.benchId);\n if (currentBench) {\n //console.log('currentBench',currentBench);\n currentBench.left = item.x - 548 + 48;\n currentBench.top = item.y - 137 - 150 + 11;\n currentBench.benchId = item.benchId;\n currentBench.benchType = item.benchType;\n console.log('item.benchImg', item.benchImg);\n currentBench.image = require(\"../../assets/bench_img/\" + item.benchImg);\n if (currentBench.benchType == 2) {\n //currentBench.image = require(\"../../assets/mechine2.png\");\n } else {\n //currentBench.image = require(\"../../assets/mechine.png\");\n }\n }\n }\n this.renderBenchList = false;\n setTimeout(() => {\n this.renderBenchList = true;\n }, 10);\n },\n planBack() {\n that.isShowPlanList = false;\n that.isShowTaskList = true;\n },\n taskRender(item) {\n return `<div class=\"item-box\" onClick=\"handleClickTask('${item.uuid || item.id}', '${item.auto}')\">\n <div class=\"left\">\n <div style=\"\">\n <div class=\"item-title\">${item.name}</div>\n <div class=\"item-description\">${item.description}</div>\n </div>\n <div class=\"item-time\">\n <div class=\"time\">${item.start_time}</div>\n to\n <div class=\"time\"> ${item.end_time}</div>\n </div>\n <div class=\"item-tag\">\n <div class=\"tag\">${item.processor_name}</div>\n <div class=\"tag\">${item.sw}</div>\n </div>\n </div>\n <div class=\"taskBtn\" onClick=\"handleClickTask('${item.uuid || item.id}', '${item.auto}')\">To Do</div>\n </div>`;\n },\n planRender(item) {\n console.log(item, \"plan\", this.autoTaskStatusMap[item.id]);\n return `<div onClick=\"selectRowPlan('${item.uuid || item.id}', '${item.auto}', '${item.name}')\" class=\"item-box\" style=\"display:${!item.auto && !item.uuid ? \"none\" : \"flex\"};align-items: top; justify-content: space-between;color: #fff;\">\n <div class=\"left\">\n <div style=\"display:flex;align-items: center;\">\n <div class=\"item-title\">${item.name}</div>\n <div class=\"process-percent\" style=\"margin-left: 10px; width: 80px\">\n <div style=\"width: ${this.autoTaskPercentMap[item.id] || 0}%; height: 10px; border-radius: 10px;background-image: linear-gradient(-90deg,transparent 0px,#95d475 50px,#95d475)\" }\"></div>\n </div>\n <div style=\"width:40px;color:#fff;font-size: 12px;padding-left: 3px\">${Number(this.autoTaskPercentMap[item.id] || 0).toFixed(1) || 0}%</div>\n <div class=\"task-auto\" style=\"display:${item.auto ? \"block\" : \"none\"}\">Auto</div>\n </div>\n </div>\n <div style=\"width: unset; padding: 0 10px;\" class=\"taskBtn ${this.autoTaskStatusMap[item.id] || 'ready'}\">${this.autoTaskStatusMap[item.id] || 'ready'}</div>\n </div>`;\n },\n issueRender(item) {\n return `<div class=\"item-box\" style=\"display:flex; align-items: center;justify-content: space-between;\" onClick=\"selectRowIssue('${item.uuid || item.id}')\">\n <div class=\"left\">\n <div style=\"display:flex;align-items: center;\">\n <div class=\"item-title\" style=\"width: 20vw; white-space: nowrap; overflow:hidden; text-overflow: ellipsis;\">${item.ticket_title}</div>\n <div class=\"${\"status\" + item.ticket_status}\"></div>\n </div>\n <div class=\"item-tag\">\n <div class=\"tag\">${item.creator}</div>\n <div class=\"tag\">${item.create_time}</div>\n </div>\n </div>\n <div class=\"${item.checked ? \"el-icon-circle-check\" : \"uncheck\"}\"></div>\n </div>`;\n },\n closeDetail() {\n this.isDetailVisible = false;\n },\n rowClassName() {\n return \"row-class\";\n },\n getImgList(objRBL) {\n console.log(\"zmg3\", objRBL);\n let benchId = objRBL.pop();\n if (benchId == null) {\n console.log(\"zmg2\");\n setTimeout(() => {\n let href = window.location.href;\n if (href.indexOf(\"benchid=\") != -1) {\n let benchid = href.substring(href.indexOf(\"benchid=\") + 8);\n let remoteBenchList = this.remoteBenchList;\n console.log(\"benchid\", benchid);\n console.log(\"item == benchId\", remoteBenchList.find(item => item == benchid));\n if (remoteBenchList.find(item => item == benchid)) {\n this.selectBench(parseInt(benchid));\n }\n }\n }, 200);\n return;\n }\n let self = this;\n console.log(\"benchId\", benchId);\n ws.connectBench({\n bench_id: String(benchId)\n }).then(res => {\n ws.getImage(String(benchId), 1).then(res => {\n self.$store.dispatch(\"benchList/setBenchImgList\", {\n benchId,\n img: res.data.data\n });\n self.getImgList(objRBL);\n });\n }).catch(err => {\n console.log(\"connect bench failed\", benchId);\n self.$message({\n message: \"This bench is offline\",\n // message: \"\",\n type: \"warning\"\n });\n });\n },\n gotoGrid() {\n this.$router.push({\n path: \"/squarePage\"\n });\n },\n itemRender(item) {\n // console.log(item, 'bench---item')\n\n //item.image = require(\"../../assets/mechine.png\");\n //item.image = require(\"../../assets/bench_img/\"+item.benchImg);\n /*return `\n <div class=\"item-box\">\n <div class=\"item-image\"><img src=\"${item.image}\" alt=\"${item.title}\"></div>\n <div class=\"item-right\">\n <div class=\"item-title\">\n <span onClick=\"handleListClick(${item.id})\">${item.id}</span>\n <span onClick=\"selectBench(${item.id})\" class=\"el-icon-s-platform ${item.status}\"></span>\n </div>\n <div class=\"item-text\">\n <div class=\"item-description\">Automation Lab-7E</div>\n <div class=\"item-description\">${item.name}</div>\n <div class=\"item-tag\">\n <div class=\"tag\">${item.Market}</div>\n <div class=\"tag\">${item.Platform}</div>\n <div class=\"tag\">${item.Project}</div>\n <div class=\"tag\">${item.Carline}</div>\n <div class=\"tag\">${item.Cluster}</div>\n </div>\n <div class=\"item-tag\">\n <div class=\"tag\">${item.MU_SW}</div>\n <div class=\"tag\">${item.Variant}</div>\n <div class=\"tag\">${item.ip}</div>\n </div>\n </div>\n </div>\n </div>`;*/\n return `\n <div onDblClick=\"handleListDbClick(${item.id})\" data-index=\"${item.id}\" onClick=\"handleListClick(${item.id})\" class=\"item-box\">\n <div class=\"item-image\"><img src=\"${item.image}\" alt=\"${item.title}\"></div>\n <div class=\"item-right\">\n <div class=\"item-text\">\n <div class=\"item-title\">${item.name}\n <span onClick=\"selectBench(${item.id})\" class=\"el-icon-monitor ${item.status}\"></span>\n </div>\n <div class=\"item-description\">Automation Lab-7E</div>\n <div class=\"item-tag\">\n <div class=\"tag\" title=\"Market\">${item.Market}</div>\n <div class=\"tag\" title=\"Platform\">${item.Platform}</div>\n <div class=\"tag\" title=\"Project\">${item.Project}</div>\n <div class=\"tag\" title=\"Carline\">${item.Carline}</div>\n <div class=\"tag\" title=\"Cluster\">${item.Cluster}</div>\n <div class=\"tag\" title=\"MU_SW\">${item.MU_SW}</div>\n <div class=\"tag\" title=\"Variant\">${item.Variant}</div>\n </div>\n </div>\n </div>\n </div>`;\n },\n handleImageClick(index) {\n this.selectBench(parseInt(this.images[index + 5 * (this.currentPage - 1)].alt));\n this.handleListClick(parseInt(this.images[index + 5 * (this.currentPage - 1)].alt));\n },\n prevPage() {\n if (this.currentPage > 1) {\n this.currentPage--;\n }\n },\n nextPage() {\n if (this.currentPage < Math.ceil(this.images.length / this.pageSize)) {\n this.currentPage++;\n }\n },\n handleInfoDblClick(benchId) {\n console.log(\"handleInfoDblClick\", benchId);\n this.currentBench = this.benchList.find(b => b.id == benchId);\n this.isDetailVisible = true;\n },\n getImage() {},\n dataCallBack(data) {\n switch (data.method) {\n case \"get_image\":\n this.handleGetImageData(data.data.data);\n break;\n }\n console.log(data);\n },\n handleGetImageData(data) {\n this.mainSnapshot = \"data:image/jpeg;base64,\" + data;\n },\n selectBench(benchId) {\n // 全屏选择bench\n this.saveSelectedBenchToLs(benchId);\n var i = JSON.parse(JSON.stringify(wsArrayLength));\n let self = this;\n wsArrayLength++;\n setTimeout(() => {\n console.log(\"connect bench\", benchId);\n wsArray[i]?.connectBench({\n bench_id: String(benchId)\n }).then(res => {\n console.log(\"connect bench success\", benchId);\n self.getBenchImage(benchId, 1, wsArray[i], () => {});\n this.currentBench = this.benchList.find(b => b.id == benchId) || {};\n this.remoteBenchList.push(benchId);\n this.$store.dispatch(\"common/setGoHome\", false);\n let nList = Array.from(new Set(this.remoteBenchList));\n let len = nList.length;\n if (len > 9) {\n setTimeout(() => {\n let square = document.querySelector('.square-map');\n if (square) {\n square.scrollTo(0, 10000);\n }\n }, 1000);\n }\n }).catch(err => {\n console.log(\"connect bench failed\", benchId);\n this.$message({\n message: \"This bench is offline\",\n // message: \"\",\n type: \"warning\"\n });\n });\n }, 200);\n // 非全屏选择bench\n var objRBL = this.remoteBenchList;\n if (objRBL && objRBL.length > 0) {\n var bExist = false;\n for (var i = 0; i < objRBL.length; i++) {\n if (objRBL[i] == benchId) {\n bExist = true;\n } else {}\n }\n if (bExist == false) {\n objRBL.push(benchId);\n this.remoteBenchList.push(benchId);\n this.$store.dispatch('benchList/addRemoteBenchList', benchId);\n }\n } else {\n var rml = [];\n rml.push(benchId);\n this.remoteBenchList.push(benchId);\n this.$store.dispatch('benchList/addRemoteBenchList', benchId);\n }\n console.log(\"benchList\", this.benchList);\n let bench = this.benchList.find(b => b.id == benchId);\n console.log(\"selectedBench\", bench);\n if (this.previousSelectedBenchList.length) {\n this.selectedBenchList = JSON.parse(JSON.stringify(this.previousSelectedBenchList));\n }\n this.previousSelectedBenchList = [];\n this.platform = null;\n this.benchList.forEach(b => b.selected = false);\n bench.selected = !bench.selected;\n if (bench.selected) {\n this.currentBench = bench;\n bench.benchId = \"'\" + bench.benchId + \"'\";\n this.selectedBenchList.push(bench);\n console.log(\"selected\", this.selectedBenchList);\n // this.images = this.selectedBenchList.map((s) => {\n // return {\n // url: \"\",\n // alt: s.name,\n // };\n // });\n } else {\n for (let i in this.selectedBenchList) {\n if (this.selectedBenchList[i].id == bench.id) {\n this.selectedBenchList.splice(i, 1);\n // this.images = this.selectedBenchList.map((s) => {\n // return {\n // url: \"\",\n // alt: s.name,\n // };\n // });\n break;\n }\n }\n }\n if (this.selectedBenchList.length == 0) {\n nextTick(() => {\n self.initBmInfoNsChart();\n });\n } else {\n self.bmMapItemActivate(bench.id, wsArray[i]);\n }\n },\n bmMapItemActivate(benchId, ws) {\n let self = this;\n if (this.selectedBenchList.length == 0) {\n this.$message({\n message: \"Please select a bench to activate.\",\n // message: \"\",\n type: \"warning\"\n });\n return;\n }\n this.selectedBenchList = [this.selectedBenchList[0]];\n console.log(\"selectedBenchList[0]\", this.selectedBenchList);\n let key = 0;\n for (let i in this.benchList) {\n this.benchList[i].selected = false;\n }\n for (let i in this.benchList) {\n if (this.benchList[i].id == benchId) {\n this.benchList[i].selected = true;\n key = i;\n break;\n }\n }\n this.benchList[key].acitveAnimation = true;\n //let benchId = this.benchList[key].benchId;\n this.benchList[key].benchId = benchId;\n let screenType = this.benchList[key].Display;\n this.connetedBenchId = String(benchId);\n // this.connectedBenchData = this.benchList[key];\n setTimeout(() => {\n console.log(\"connect bench\", benchId);\n ws.connectBench({\n bench_id: String(benchId)\n }).then(res => {\n self.isConnected = true;\n this.$store.dispatch(\"common/setConnectedStatus\", true);\n console.log(\"connect bench success\");\n this.currentScreen = \"upper\";\n self.setSendAudioBus(benchId);\n self.getBenchImage(benchId, 1, ws, () => {\n if (this.benchList[key].acitveAnimation) {\n this.benchList[key].acitveAnimation = false;\n this.benchDisplayVisible = true;\n }\n });\n if (screenType == \"DUO\") {\n self.getBenchImage(String(benchId), 2, ws, () => {\n if (this.connetedBenchId) {\n this.benchDisplayLowerVisible = true;\n }\n });\n } else {\n this.benchDisplayLowerVisible = false;\n }\n }).catch(err => {\n console.log(\"connect bench failed\");\n this.benchList[key].acitveAnimation = false;\n this.$message({\n message: \"This bench is offline\",\n // message: \"\",\n type: \"warning\"\n });\n });\n }, 300);\n },\n switchScreen() {\n if (this.currentScreen == \"upper\") {\n this.currentScreen = \"lower\";\n } else {\n this.currentScreen = \"upper\";\n }\n console.log(\"this.currentScreen\", this.currentScreen);\n },\n singleFingerTouch(id, x, y, screenType) {\n let self = this;\n ws.singleFingerTouch(id, x, y, screenType).then(res => {});\n },\n singleFingerDrag(id, x1, y1, x2, y2, screenType) {\n let self = this;\n ws.singleFingerDrag(id, x1, y1, x2, y2, screenType).then(res => {});\n },\n singleFingerLongTouch(id, x, y, duration, screenType) {\n let self = this;\n ws.singleFingerLongTouch(id, x, y, duration, screenType).then(res => {});\n },\n controlCursorMouseDown(e) {\n let self = this;\n if (this.displayTapMode) {\n // console.log(\"e\", e);\n this.controlCursorPosition.left = e.offsetX;\n this.controlCursorPosition.top = e.offsetY;\n this.controlStartPoint.x = e.offsetX;\n this.controlStartPoint.y = e.offsetY;\n this.controlStartPoint.time = Date.now();\n this.ifBmBenchTrailUpperCursor = true;\n }\n },\n controlCursorMouseMove(e) {\n let self = this;\n if (this.displayTapMode && this.ifBmBenchTrailUpperCursor) {\n this.controlCursorPosition.left = e.offsetX;\n this.controlCursorPosition.top = e.offsetY;\n }\n },\n controlCursorMouseOut(e) {\n this.ifBmBenchTrailUpperCursor = false;\n },\n controlCursorMouseUp(e, screenType = 1) {\n let self = this;\n if (this.currentScreen == \"upper\") {\n screenType = 1;\n } else if (this.currentScreen == \"lower\") {\n screenType = 2;\n }\n if (this.displayTapMode) {\n this.ifBmBenchTrailUpperCursor = false;\n if (Math.abs(this.controlStartPoint.x - e.offsetX) < 30 && Math.abs(this.controlStartPoint.y - e.offsetY) < 30 && Date.now() - this.controlStartPoint.time < 500) {\n self.singleFingerOperation(e, \"tap\", screenType);\n } else if (Math.abs(this.controlStartPoint.x - e.offsetX) > 30 || Math.abs(this.controlStartPoint.y - e.offsetY) > 30) {\n // console.log(\"controlStartPoint\", controlStartPoint);\n self.singleFingerOperation(e, \"swipe\", screenType, this.controlStartPoint);\n } else if (Date.now() - this.controlStartPoint.time > 500) {\n self.singleFingerOperation(e, \"longPress\", screenType, this.controlStartPoint);\n }\n }\n },\n singleFingerOperation(e, operation, screenType, startPoint = {}) {\n let self = this;\n console.log(\"singleFingerOperation\", e, operation, screenType);\n if (this.displayTapMode) {\n let width = this.$refs.bmBenchRef.width;\n let height = this.$refs.bmBenchRef.height;\n let offsetX = e.offsetX;\n let offsetY = e.offsetY;\n let screenWidth = this.currentScreen == \"upper\" ? 1540 : 1280;\n let screenHeight = this.currentScreen == \"upper\" ? 720 : 720;\n let x = Math.round(screenWidth * (offsetX / width));\n let y = Math.round(screenHeight * (offsetY / height));\n let x1 = 0;\n let y1 = 0;\n if (startPoint != {}) {\n x1 = Math.round(screenWidth * (startPoint.x / width));\n y1 = Math.round(screenHeight * (startPoint.y / height));\n }\n\n // console.log(\"x\", x);\n // console.log(\"y\", y);\n\n // console.log(\"x1\", x1);\n // console.log(\"y1\", y1);\n let operationDesc = \"\";\n if (operation == \"tap\") {\n console.log(\"selected\", this.connetedBenchId, x, y);\n self.singleFingerTouch(this.connetedBenchId, x, y, screenType);\n // tap on lower x: 48 y: 292\n operationDesc = \"tap on \" + (screenType == 1 ? \"upper \" : \"lower \") + (\"x: \" + x + \" y: \" + y);\n } else if (operation == \"swipe\") {\n self.singleFingerDrag(this.connetedBenchId, x1, y1, x, y, screenType);\n operationDesc = \"swipe on \" + (screenType == 1 ? \"upper \" : \"lower \") + (\"x1: \" + x1 + \" y1: \" + y1 + \" x: \" + x + \" y: \" + y);\n } else if (operation == \"longPress\") {\n self.singleFingerLongTouch(this.connetedBenchId, x, y, Date.now() - startPoint.time, screenType);\n operationDesc = \"longPress on \" + (screenType == 1 ? \"upper \" : \"lower \") + (\"x: \" + x + \" y: \" + y);\n }\n this.benchLog.push({\n bench_id: this.connetedBenchId,\n data: operationDesc,\n levelStr: \"DEBUG\",\n startTime: self.getNowDate()\n });\n }\n },\n getNowDate() {\n var myDate = new Date();\n var year = myDate.getFullYear(); //获取当前年\n var mon = myDate.getMonth() + 1; //获取当前月\n var date = myDate.getDate(); //获取当前日\n var hours = myDate.getHours(); //获取当前小时\n var minutes = myDate.getMinutes(); //获取当前分钟\n var seconds = myDate.getSeconds(); //获取当前秒\n var now = year + \"-\" + mon + \"-\" + date + \"T\" + hours + \":\" + minutes + \":\" + seconds;\n return now;\n },\n initBmInfoNsChart() {\n let self = this;\n let seriesData = [0, 0, 0];\n for (let i in this.benchList) {\n if (this.benchList[i].status == 5 || this.benchList[i].status == 6) {\n seriesData[1]++;\n } else if (this.benchList[i].status == 2 || this.benchList[i].status == 3) {\n seriesData[2]++;\n } else {\n seriesData[0]++;\n }\n }\n console.log(\"seriesData\", seriesData);\n var option = {\n tooltip: {\n trigger: \"axis\",\n axisPointer: {\n type: \"shadow\"\n }\n },\n grid: {\n left: 0,\n right: \"20\",\n bottom: 0,\n top: 0,\n containLabel: true\n },\n xAxis: {\n type: \"value\",\n axisLabel: {\n show: false\n },\n splitLine: {\n show: false\n }\n // axisLine: {\n // show: false,\n // },\n // axisTick: {\n // show: false, //刻度线\n // },\n },\n\n yAxis: {\n type: \"category\",\n data: [\"Offline\", \"Occupied\", \"Ready\"],\n axisLine: {\n show: false,\n lineStyle: {\n color: \"#7F7F7F\"\n }\n },\n axisTick: {\n show: false //刻度线\n }\n // axisLine: {\n // },\n },\n\n series: [{\n type: \"bar\",\n barWidth: \"50%\",\n data: seriesData,\n itemStyle: {\n color: function (params) {\n // 给出颜色组\n var colorList = [\"#b1b3b8\", \"#79bbff\", \"#95d475\"];\n return colorList[params.dataIndex];\n }\n },\n showBackground: false,\n backgroundStyle: {\n color: \"rgba(180, 180, 180, 0.2)\"\n },\n label: {\n show: true,\n position: \"right\",\n color: \"#7F7F7F\"\n }\n }]\n };\n bmInfoNsChartStorage = echarts.init(document.getElementsByClassName(\"bmInfoNsChart\")[0]);\n bmInfoNsChartStorage.setOption(option);\n },\n backToMap() {\n let self = this;\n ws.unsubscribeBenchStatus({\n bench_id: this.connetedBenchId\n }).then(res => {\n console.log(\"unsubscribeBenchStatus\", res);\n });\n this.connetedBenchId = \"\";\n setTimeout(() => {\n this.benchDisplayVisible = false;\n this.ifShowLogBox = false;\n }, 600);\n },\n tagSearch(field, value) {\n let self = this;\n this.selectedBenchList = [];\n for (let i in this.benchList) {\n this.benchList[i].selected = false;\n if (this.benchList[i][field] == value) {\n this.benchList[i].selected = true;\n this.benchList[i].benchId = \"'\" + this.benchList[i].benchId + \"'\";\n this.selectedBenchList.push(this.benchList[i]);\n // this.images = this.selectedBenchList.map((s) => {\n // return {\n // url: \"\",\n // alt: s.name,\n // };\n // });\n }\n }\n },\n\n selectAllBench() {\n let self = this;\n console.log('this.benchList===', this.benchList.length);\n if (this.selectedBenchList.length == this.benchList.length) {\n this.selectedBenchList = [];\n this.previousSelectedBenchList = [];\n for (let i in this.benchList) {\n this.benchList[i].selected = false;\n }\n self.nextTick(() => {\n self.initBmInfoNsChart();\n });\n } else {\n this.selectedBenchList = [];\n for (let i in this.benchList) {\n this.benchList[i].selected = true;\n this.selectedBenchList.push(this.benchList[i]);\n // this.images = this.selectedBenchList.map((s) => {\n // return {\n // url: \"\",\n // alt: s.name,\n // };\n // });\n }\n }\n },\n\n tapModeControl() {\n this.displayTapMode = !this.displayTapMode;\n },\n getBenchDetail(id, index) {\n let self = this;\n let getBenchParam = {\n id\n };\n srv.getBenchDetail(getBenchParam).then(res => {\n // console.log(\"res\", res);\n this.benchList[index].status = res.data.data.status;\n }).catch(err => {\n console.error(err);\n });\n },\n showLogBox() {\n let self = this;\n if (this.ifShowLogBox) {\n ws.unsubscribeBenchStatus({\n bench_id: this.connetedBenchId\n }).then(res => {\n console.log(\"unsubscribeBenchStatus\", res);\n });\n } else {\n ws.subscribeBenchStatus({\n bench_id: this.connetedBenchId\n }).then(res => {\n console.log(\"subscribeBenchStatus\", res);\n });\n }\n this.benchLog = [];\n this.ifShowLogBox = !this.ifShowLogBox;\n },\n connectAudioDevice(type) {\n let self = this;\n ws.connect_audio_device({\n benchId: String(this.connetedBenchId)\n }).then(res => {\n console.log(\"connect_audio_device_res\", res);\n if (type == \"playAudio\") {\n this.isRecording = !this.isRecording;\n self.recordAudio();\n } else if (type == \"collectAudio\") {\n self.collectAudio();\n }\n }, rej => {});\n },\n recordAudio(data) {\n let self = this;\n // console.log(\"selectedBenchList.value[0]\", this.selectedBenchList[0]);\n let channel = 1;\n this.vadThreshold = 0;\n if (this.isRecording) {\n this.playAudioBenchList.push(this.connetedBenchId);\n // this.changePlayAudioBenchList(params);\n navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;\n if (navigator.mediaDevices.getUserMedia) {\n // 支持getUserMedia\n navigator.mediaDevices.getUserMedia({\n video: false,\n audio: true\n }).then(stream => {\n this.recStream = stream;\n this.paAc = new AudioContext({\n sampleRate: 8000\n });\n this.paSource = this.paAc.createMediaStreamSource(stream);\n\n //构造参数依次为缓冲区大小,输入通道数,输出通道数\n this.paScriptNode = this.paAc.createScriptProcessor(1024, channel, 2);\n this.sempleRateMultiple = this.paAc.sampleRate / 8000;\n this.paScriptNode.onaudioprocess = function (e) {\n for (let i = 0; i < channel; i++) {\n let data = e.inputBuffer.getChannelData(i);\n self.recordSuperposeArr.push.apply(self.recordSuperposeArr, data);\n if (self.sempleRateHandlingThreshold < self.sempleRateMultiple - 1) {\n self.sempleRateHandlingThreshold++;\n } else {\n let arr = [];\n for (let a = 0; a < self.recordSuperposeArr.length; a = a + self.sempleRateMultiple) {\n arr.push(self.recordSuperposeArr[a]);\n }\n self.recordSuperposeArr = arr.splice(0, 1024);\n self.recordSuperposeArr = new Float32Array(self.recordSuperposeArr);\n if (Math.abs(self.recordSuperposeArr[0]) < 0.003) {\n self.vadThreshold++;\n } else {\n self.vadThreshold = 0;\n }\n if (self.vadThreshold <= 20) {\n let dataU8 = new Uint8Array(self.recordSuperposeArr.buffer);\n let string = \"\";\n for (let i = 0; i < dataU8.length; i++) {\n string = string + String.fromCharCode(dataU8[i]);\n }\n ws.play_audio({\n data: string,\n benchIds: self.playAudioBenchList\n }).then(res => {}, rej => {});\n }\n self.sempleRateHandlingThreshold = 0;\n self.recordSuperposeArr = [];\n }\n }\n };\n this.paScriptNode.connect(this.paAc.destination);\n this.paSource.connect(this.paScriptNode);\n }).catch(err => {\n console.log(\"err: \" + err);\n });\n } else {\n // 不支持getUserMedia\n console.log(\"Environment not supported\");\n }\n } else {\n // this.changePlayAudioBenchList(params);\n this.playAudioBenchList = [];\n self.stopRecord();\n this.ifConnectedAudioDevice = false;\n ws.stop_play_audio({\n benchId: this.connetedBenchId\n }).then(res => {\n // console.log(\"res\", res);\n }, rej => {\n // console.log(\"rej\", rej);\n });\n // $bus.$emit(\"stopPlayAudio\", {\n // benchId: params.benchId,\n // });\n // }\n }\n },\n\n stopRecord() {\n let self = this;\n if (!this.isRecording) {\n this.recStream.getTracks().forEach(function (track) {\n track.stop();\n });\n this.paScriptNode.disconnect(this.paAc.destination);\n this.paSource.disconnect(this.paScriptNode);\n this.paAc.close();\n }\n },\n collectAudio() {\n let self = this;\n this.isPlaying = !this.isPlaying;\n if (this.isPlaying) {\n ws.collect_audio({\n benchId: String(this.connetedBenchId)\n }).then(res => {}, rej => {});\n } else {\n ws.stop_collect_audio({\n benchId: String(this.connetedBenchId)\n }).then(res => {}, rej => {});\n this.loopSendAudioTime = 0;\n this.sendAudioString = \"\";\n }\n },\n setSendAudioBus(benchId) {\n let self = this;\n bus.on(\"sendAudio\" + benchId, data => {\n self.sendAudioTransformCode(data.data, true);\n this.loopSendAudioTime++;\n this.sendAudioTimer = setTimeout(() => {\n this.loopSendAudioTime = 5;\n self.sendAudioTransformCode(\"\", false);\n }, 500);\n });\n },\n sendAudioTransformCode(data, fill) {\n let dataU8 = [];\n let dataF32 = [];\n let arr = [];\n let self = this;\n this.sendAudioString += data;\n if (this.loopSendAudioTime > 4) {\n arr = this.sendAudioString.split(\"\");\n for (let i = 0; i < arr.length; i++) {\n dataU8[i] = arr[i].charCodeAt();\n }\n dataU8 = new Uint8Array(dataU8);\n dataF32 = new Float32Array(dataU8.buffer);\n if (!fill) {\n // console.log(\"dataF32-\", dataF32);\n let newDataF32 = new Float32Array(5120);\n for (let i = 0; i < 5120; i++) {\n if (i < dataF32.length) {\n newDataF32[i] = dataF32[i];\n } else {\n newDataF32[i] = 0;\n }\n }\n dataF32 = newDataF32;\n // console.log(\"dataF32+\", dataF32);\n }\n\n self.pcPlayAudio(dataF32, 1, 8000);\n this.sendAudioString = \"\";\n this.loopSendAudioTime = 0;\n }\n if (fill) {\n clearTimeout(this.sendAudioTimer);\n }\n },\n pcPlayAudio(data, channels, sampleRate) {\n let self = this;\n var audioCtx = new (window.AudioContext || window.webkitAudioContext)({\n sampleRate: sampleRate\n });\n var myArrayBuffer = audioCtx.createBuffer(channels, data.length, sampleRate);\n for (let channel = 0; channel < channels; channel++) {\n var nowBuffering = myArrayBuffer.getChannelData(channel);\n for (let i = 0; i < data.length; i++) {\n if (i < data.length) {\n nowBuffering[i] = data[i];\n } else {\n nowBuffering[i] = 0;\n }\n }\n }\n\n // console.log(\"audioCtx\", audioCtx);\n // console.log(\"nowBuffering\", nowBuffering);\n\n var source = audioCtx.createBufferSource();\n source.buffer = myArrayBuffer;\n source.connect(audioCtx.destination);\n source.start();\n },\n pressPtt() {\n let self = this;\n ws.press_ptt({\n benchId: String(this.connetedBenchId)\n }).then(res => {}, rej => {});\n },\n bmMapItemSelect(key) {\n let self = this;\n if (this.previousSelectedBenchList.length) {\n this.selectedBenchList = JSON.parse(JSON.stringify(this.previousSelectedBenchList));\n }\n this.previousSelectedBenchList = [];\n this.platform = null;\n this.benchList.forEach(b => b.selected = false);\n this.benchList[key].selected = !this.benchList[key].selected;\n if (this.benchList[key].selected) {\n this.currentBench = this.benchList[key];\n this.selectedBenchList.push(this.benchList[key]);\n // this.images = this.selectedBenchList.map((s) => {\n // return {\n // url: \"\",\n // alt: s.name,\n // };\n // });\n } else {\n for (let i in this.selectedBenchList) {\n if (this.selectedBenchList[i].id == this.benchList[key].id) {\n this.selectedBenchList.splice(i, 1);\n // this.images = this.selectedBenchList.map((s) => {\n // return {\n // url: \"\",\n // alt: s.name,\n // };\n // });\n break;\n }\n }\n }\n if (this.selectedBenchList.length == 0) {\n nextTick(() => {\n self.initBmInfoNsChart();\n });\n }\n },\n clickBenchList() {\n // window.location.href = \"/squarePage?m=8b934420_ZJUb_b6f9\";\n this.$store.dispatch(\"common/setSquareStatus\", true);\n },\n disconnectBench() {\n ws.disconnectBench({\n bench_id: String(this.connetedBenchId)\n }).then(res => {\n var remoteBenchList = this.remoteBenchList;\n let newRemoteBenchList = remoteBenchList.filter(item => {\n return item != this.connetedBenchId;\n });\n while (this.remoteBenchList.length) {\n this.remoteBenchList.pop();\n this.$store.dispatch('benchList/popRemoteBenchList');\n this.$store.dispatch(\"common/setSquareStatus\", true);\n }\n newRemoteBenchList.forEach(e => {\n this.remoteBenchList.push(e);\n this.$store.dispatch('benchList/addRemoteBenchList', e);\n });\n this.$store.dispatch(\"benchList/removeBenchImgList\", {\n benchId: this.connetedBenchId\n });\n this.getImgList(newRemoteBenchList);\n this.connetedBenchId = \"\";\n this.currentBench = {};\n this.benchDisplayVisible = false;\n this.benchDisplayLowerVisible = false;\n this.isConnected = false;\n this.$store.dispatch(\"common/setConnectedStatus\", false);\n });\n },\n sleep(delay) {\n var start = new Date().getTime();\n while (new Date().getTime() - start < delay) {\n continue;\n }\n },\n saveSelectedBenchToLs(benchId) {\n var objRBL = this.remoteBenchList;\n if (objRBL && objRBL.length > 0) {\n var bExist = false;\n for (var i = 0; i < objRBL.length; i++) {\n if (objRBL[i] == benchId) {\n bExist = true;\n } else {}\n }\n if (bExist == false) {\n objRBL.push(benchId);\n this.remoteBenchList.push(benchId);\n this.$store.dispatch('benchList/addRemoteBenchList', benchId);\n }\n } else {\n var rml = [];\n rml.push(benchId);\n this.remoteBenchList.push(benchId);\n this.$store.dispatch('benchList/addRemoteBenchList', benchId);\n }\n },\n handleListClick(benchId, itemtype) {\n this.$store.dispatch(\"common/setGoHome\", false);\n if (itemtype == 2) {\n return;\n }\n try {\n for (let key in window.waterMap) {\n if (key == benchId) {\n window.waterMap[key].scale.set(1.3, 1.3, 1.3);\n } else {\n window.waterMap[key].scale.set(1, 1, 1);\n }\n }\n } catch (e) {}\n console.log(\"benchId\", benchId);\n let selectedBench = this.benchList.find(i => i.benchId == benchId);\n bus.emit(\"benchInfoVisible\", selectedBench);\n this.$nextTick(() => {\n if (benchId == this.currentBench.benchId) {\n let items = document.getElementsByClassName(\"grid-item-background\");\n for (var index = 0; index < items.length; index++) {\n items[index].style.background = \"#000000\";\n }\n return;\n }\n let items = document.getElementsByClassName(\"grid-item-background\");\n for (var index = 0; index < items.length; index++) {\n items[index].style.background = \"#000000\";\n if (this.images[index].alt == benchId) {\n console.log(\"equal\");\n items[index].style.background = \"#ffffff\";\n }\n }\n });\n\n //this.currentBench = this.benchList.find(b => b.id == benchId);\n //this.isDetailVisible = true;\n this.$nextTick(() => {\n //this.$refs.benchdetail.init(benchId);\n //this.benchList.forEach(element =>\n //{\n // element.style = \"{background: rgba(0, 0, 0, 1)}\"\n //});\n // if (benchId == this.currentBench.id &&this.currentBench.selected) {\n // this.currentBench.selected = false;\n // this.currentBench.scale = 1;\n // this.currentBench = {};\n // let items = document.getElementsByClassName(\"item-box\");\n // for (var index = 0; index < items.length; index++) {\n // items[index].style.background = \"#00000032\";\n // }\n // return;\n // }\n let items = document.getElementsByClassName(\"item-box\");\n for (var index = 0; index < items.length; index++) {\n items[index].style.background = \"#00000032\";\n // console.log(\"textContent\", title[0].textContent);\n let itemOther = this.benchList.find(b => b.id == items[index].dataset.index);\n if (itemOther) {\n itemOther.selected = false;\n }\n if (benchId == items[index].dataset.index) {\n items[index].style.background = \"#000000C0\";\n this.selectedBenchId = benchId;\n }\n }\n // console.log('this.currentBench', this.currentBench);\n // bus.emit(\"benchInfoVisible\", this.currentBench);\n });\n },\n\n handleBenchClick(benchId, showRemoteButton) {\n this.currentBench = this.benchList.find(b => b.id == benchId);\n this.benchDetail = this.benchList.find(b => b.id == benchId);\n this.isRemoteBtnVisible = showRemoteButton;\n this.isDetailVisible = true;\n },\n handleListDbClick(benchId, itemtype) {\n //this.currentBench = this.benchList.find(b => b.id == benchId);\n //this.isDetailVisible = true;\n this.$nextTick(() => {\n //this.$refs.benchdetail.init(benchId);\n //this.benchList.forEach(element =>\n //{\n // element.style = \"{background: rgba(0, 0, 0, 1)}\"\n //});\n this.benchDetail = this.benchList.find(b => b.id == benchId);\n //this.currentBench.style = \"{background: rgba(0, 0, 0, 1)}\"\n console.log(\"current bench\", this.benchDetail);\n this.isRemoteBtnVisible = true;\n this.isDetailVisible = true;\n });\n },\n getBenchImage(benchId, screenType, wsRemote, func) {\n let self = this;\n setTimeout(() => {\n wsRemote.getImage(String(benchId), screenType).then(res => {\n console.log(\"getImageRes\", res);\n // let screen = screenType == 1 ? \"upper\" : \"lower\";\n func();\n if (screenType == 1) {\n self.benchImgUpper = \"data:image/png;base64,\" + res.data.data;\n self.benchImgUpperMap[benchId] = \"data:image/png;base64,\" + res.data.data;\n bus.emit(\"benchImgChange\", {\n benchImgUpper: self.benchImgUpper\n });\n } else {\n self.benchImgLower = \"data:image/png;base64,\" + res.data.data;\n self.benchImgLowerMap[benchId] = \"data:image/png;base64,\" + res.data.data;\n bus.emit(\"benchImgChange\", {\n benchImgLower: self.benchImgLower\n });\n }\n // let screen = res.data.screen_type;\n //self.getBenchImage(benchId, screenType, wsRemote, func);\n if (benchId == this.connetedBenchId) {\n //self.getBenchImage(benchId, screenType, wsRemote, func);\n this.$store.dispatch(\"benchList/setBenchImgList\", {\n benchId,\n img: res.data.data\n });\n }\n setTimeout(() => {\n self.getBenchImageSub(benchId, screenType, wsRemote, func);\n }, 500);\n });\n }, 500);\n },\n getBenchImageSub(benchId, screenType, wsRemote, func) {\n let self = this;\n if (benchId == this.connetedBenchId) {\n wsRemote.getImage(String(benchId), screenType).then(res => {\n console.log(\"getImageRes\", res);\n // let screen = screenType == 1 ? \"upper\" : \"lower\";\n //func();\n {\n if (screenType == 1) {\n self.benchImgUpper = \"data:image/png;base64,\" + res.data.data;\n self.benchImgUpperMap[benchId] = \"data:image/png;base64,\" + res.data.data;\n bus.emit(\"benchImgChange\", {\n benchImgUpper: self.benchImgUpper\n });\n } else {\n self.benchImgLower = \"data:image/png;base64,\" + res.data.data;\n self.benchImgLowerMap[benchId] = \"data:image/png;base64,\" + res.data.data;\n bus.emit(\"benchImgChange\", {\n benchImgLower: self.benchImgLower\n });\n }\n }\n setTimeout(() => {\n self.getBenchImageSub(benchId, screenType, wsRemote, func);\n }, 100);\n });\n } else {\n setTimeout(() => {\n self.getBenchImageSub(benchId, screenType, wsRemote, func);\n }, 500);\n }\n },\n handleDblClickImg(benchId) {\n this.benchImgUpper = this.benchImgUpperMap[benchId];\n this.benchImgLower = this.benchImgLowerMap[benchId];\n this.$store.dispatch(\"common/setSquareStatus\", false);\n this.selectBench(benchId);\n },\n handleClickImg(benchId, indexParam) {\n this.selectedBenchId = benchId;\n this.$nextTick(() => {\n if (benchId == this.currentBenchId) {\n benchId = 0;\n let items = document.getElementsByClassName(\"grid-item-background\");\n for (var index = 0; index < items.length; index++) {\n items[index].style.background = \"#000000\";\n }\n return;\n }\n this.currentBenchId = benchId;\n let items = document.getElementsByClassName(\"grid-item-background\");\n for (var index = 0; index < items.length; index++) {\n items[index].style.background = \"#000000\";\n if (index == indexParam) {\n console.log(\"equal\");\n items[index].style.background = \"#ffffff\";\n }\n }\n });\n this.$nextTick(() => {\n if (benchId == this.currentBench.id && this.currentBench.selected == true) {\n this.currentBench.selected = false;\n this.currentBench.scale = 1;\n this.currentBench = {};\n let items = document.getElementsByClassName(\"item-box\");\n for (var index = 0; index < items.length; index++) {\n items[index].style.background = \"#00000032\";\n }\n return;\n }\n let items = document.getElementsByClassName(\"item-box\");\n for (var index = 0; index < items.length; index++) {\n items[index].style.background = \"#00000032\";\n let title = items[index].getElementsByClassName(\"item-title\");\n console.log(\"textContent\", title[0].textContent);\n let itemOther = this.benchList.find(b => parseInt(b.id) == parseInt(title[0].textContent) || b.id == benchId);\n itemOther.selected = false;\n if (items[index].dataset.index == benchId) {\n items[index].style.background = \"#000000C0\";\n this.currentBench = this.benchList.find(b => b.id == benchId);\n this.currentBench.selected = true;\n }\n }\n this.$store.dispatch('benchList/setCurrentBench', this.currentBench);\n });\n },\n handleCloseImg(benchId) {\n this.connetedBenchId = benchId;\n this.disconnectBench();\n console.log(\"benchId\", benchId, this.connetedBenchId);\n var objRBL = this.remoteBenchList;\n if (objRBL) {\n for (var i = 0; i < objRBL.length; i++) {\n if (parseInt(objRBL[i]) == parseInt(benchId)) {\n console.log(\"images\", this.images);\n for (var ii = 0; ii < this.images.length; ii++) {\n if (parseInt(this.images[ii].alt) == parseInt(benchId)) {\n this.images.splice(ii, 1);\n console.log(\"images\", this.images);\n break;\n }\n }\n //delete objRBL[i];\n objRBL.splice(i, 1);\n console.log(\"objRBL\", objRBL);\n while (this.remoteBenchList.length) {\n this.remoteBenchList.pop();\n this.$store.dispatch('benchList/popRemoteBenchList');\n this.$store.dispatch(\"common/setSquareStatus\", true);\n }\n objRBL.forEach(e => {\n this.remoteBenchList.push(e);\n this.$store.dispatch('benchList/addRemoteBenchList', e);\n });\n return;\n }\n }\n }\n },\n getAutoPlanResult(key) {},\n refreshBenchStatus() {\n var readyCount = 0;\n var occupiedCount = 0;\n var offlineCount = 0;\n console.log(\"this.benchList\", this.benchList.length);\n this.benchList.forEach(element => {\n //console.log('element',element);\n if (element.status == \"ready\") {\n readyCount++;\n } else if (element.status == \"error\") {\n offlineCount++;\n } else if (element.status == \"offline\") {\n offlineCount++;\n } else {\n occupiedCount++;\n }\n });\n this.readyCount = readyCount;\n this.offlineCount = offlineCount;\n this.occupiedCount = occupiedCount;\n }\n },\n watch: {\n benchDisplayVisible(newValue, oldValue) {\n bus.emit(\"benchDisplayVisible\", {\n benchDisplayVisible: newValue,\n benchInfo: this.selectedBenchList[0]\n });\n },\n benchDisplayLowerVisible(newValue, oldValue) {\n bus.emit(\"benchDisplayLowerVisibleChange\", {\n benchDisplayLowerVisible: newValue\n });\n },\n benchList(newValue, oldValue) {\n console.log(\"newValue\", newValue);\n var objRBL = this.remoteBenchList;\n console.log(\"zmg1\", objRBL);\n var objRBLReverse = [];\n if (objRBL) {\n for (; objRBL.length > 0;) {\n objRBLReverse.push(objRBL.pop());\n }\n }\n if (objRBLReverse.length > 0) {\n setTimeout(() => {\n this.getImgList(objRBLReverse);\n }, 300);\n }\n },\n isOpen3d(newValue, oldValue) {\n // if (!newValue) {\n // this.$nextTick(() => {\n // let mapDom = document.getElementsByClassName(\"ordinary-map\")[0];\n // let style = getComputedStyle(mapDom);\n // let width = parseFloat(style.width);\n // let height = parseFloat(style.height);\n // uwbMain('playersmall', width, height, \"floorplan\");\n // })\n // } else {\n // uwbMain('player', window.innerWidth, window.innerHeight, \"panorama\");\n // }\n },\n autoPlanList() {\n this.autoPlanList.forEach(m => {\n this.$store.dispatch('caseList/getAllAutoPlanStatus', {\n planId: m.id,\n planName: m.name\n });\n });\n },\n mouseBenchId(newValue, oldValue) {\n let bench = this.benchList.find(b => b.benchId == newValue);\n if (bench) {\n this.mouseBenchDetail = bench;\n } else {\n this.mouseBenchDetail = {};\n }\n }\n }\n};","map":{"version":3,"names":["TabList","Tabs","SearchBar","Dropdown","TableComponent","BenchDetail","StatusBar","THREE","uwbMain","mapState","ImageList","webSocket","bus","FBXLoader","SearchBarMain","ws","that","wsArray","wsArrayLength","iR","wsRemote","open","then","res","push","components","data","inputValue","isDetailVisible","isRemoteBtnVisible","isShowPlanList","isShowCaseList","isShowAutoCaseList","isShowCaseDetail","isShowCaseCommit","isShowIssueList","isShowIssueDetail","isShowAutoCaseCommit","taskName","planName","caseName","caseProject","caseActive","caseFunction","caseSubFunction","caseMarket","caseLanguage","caseContent","isShowTaskList","benchDisplayVisible","mainSnapshot","currentBench","readyCount","occupiedCount","offlineCount","previousSelectedBenchList","selectedBenchList","renderBenchList","filters","currentCase","currentIssue","currentPlanId","currentPlanName","currentCaseIndex","tabs","title","list","tableData","benchname","project","carline","market","sw","status","currentPage","pageSize","benchId","timer","platform","connetedBenchId","displayTapMode","controlCursorPosition","ifBmBenchTrailUpperCursorTap","benchLog","trailCursorPosition","audioName","ifBmBenchTrailUpperCursorSwipe","ifBmBenchTrailUpperCursorPress","ifBmBenchTrailUpperCursor","controlStartPoint","ifShowLogBox","filterData","keyword","types","ips","orderBy","orderkey","benchImgUpper","benchImgUpperMap","currentScreen","benchDisplayLowerVisible","benchImgLower","benchImgLowerMap","isPlaying","isRecording","loopSendAudioTime","sendAudioString","vadThreshold","recStream","paAc","paSource","paScriptNode","sempleRateMultiple","recordSuperposeArr","sempleRateHandlingThreshold","playAudioBenchList","isConnected","currentBenchId","gridItems","timerIdMap","num","timerId","autoPlanResultInterval","remoteBenchList","waterdotrefresh","selectedBenchId","benchDetail","mouseBenchDetail","computed","tabClass","type","isOpen","state","common","mouseX","benchList","mouseoverx","mouseY","mouseovery","mouseStatus","mouseoverstatus","mouseBenchId","mouseoverbenchid","images","console","log","benchImgList","isOpenSquare","isOpen3d","taskList","planList","concat","autoPlanList","sort","p1","p2","id","caseList","autoCaseList","issueList","autoTaskStatus","autoTaskStatusMap","currentTaskIndex","filterBenchList","a","b","i","j","m","MU_SW","length","charCodeAt","n","autoTaskPercentMap","created","window","handleListClick","handleBenchClick","handleClickTask","bind","selectRowPlan","selectRowCase","selectRowIssue","handleListDbClick","showBenchPos","handleClickImg","bmMapItemSelect","bmMapItemUnSelect","handleClickIssue","selectBench","$store","dispatch","page_num","page_size","bmMapItemActivate","myInterval","count","getsqlData","sdkInstance","uwbInstance","refreshBenchStatus","clearMyInterval","setTimeout","bench_id","processor","ticket_status","ticket_type","mounted","mapDom","document","getElementsByClassName","style","getComputedStyle","width","parseFloat","height","ratio","renderWidth","renderHeight","sessionStorage","setItem","element","getElementById","marginLeft","marginTop","self","objRBL","iW","JSON","parse","stringify","connectBench","String","getBenchImage","catch","err","$message","message","on","param","action","unshift","Object","keys","position","pos","actionType","left","top","fileName","file_name","emit","pop","setInterval","autoCurrentTaskData","localStorage","getItem","autoCurrentTaskName","planId","planExecId","methods","changeCurrentBench","callback","interval","intervalId","startTime","Date","now","loop","requestAnimationFrame","turnToNextManualCase","clickBackToTaskList","clickBackToCaseList","submitManualCase","item","clickBackToIssueList","clickBackToPlan","submitAutoCase","clickBackToAutoCaseList","auto","name","uuid","row","m_id","precondition","expectation","language","case_no","turnNextCase","find","clickBackToPlanList","clickBackToAutoPlanList","items","index","background","textContent","itemOther","parseInt","selected","scale","onFocus","value","onBlur","e","target","classList","Array","prototype","indexOf","call","onInput","onClickOutside","$refs","searchbar","$el","contains","event","dropdown","taskId","task","t","manualList","plan_list","autoList","forEach","at","commit","$nextTick","issueId","x","y","benchType","benchImg","image","require","planBack","taskRender","description","start_time","end_time","processor_name","planRender","Number","toFixed","issueRender","ticket_title","creator","create_time","checked","closeDetail","rowClassName","getImgList","href","location","benchid","substring","getImage","img","gotoGrid","$router","path","itemRender","Market","Platform","Project","Carline","Cluster","Variant","handleImageClick","alt","prevPage","nextPage","Math","ceil","handleInfoDblClick","dataCallBack","method","handleGetImageData","saveSelectedBenchToLs","nList","from","Set","len","square","querySelector","scrollTo","bExist","rml","bench","splice","nextTick","initBmInfoNsChart","key","acitveAnimation","screenType","Display","setSendAudioBus","switchScreen","singleFingerTouch","singleFingerDrag","x1","y1","x2","y2","singleFingerLongTouch","duration","controlCursorMouseDown","offsetX","offsetY","time","controlCursorMouseMove","controlCursorMouseOut","controlCursorMouseUp","abs","singleFingerOperation","operation","startPoint","bmBenchRef","screenWidth","screenHeight","round","operationDesc","levelStr","getNowDate","myDate","year","getFullYear","mon","getMonth","date","getDate","hours","getHours","minutes","getMinutes","seconds","getSeconds","seriesData","option","tooltip","trigger","axisPointer","grid","right","bottom","containLabel","xAxis","axisLabel","show","splitLine","yAxis","axisLine","lineStyle","color","axisTick","series","barWidth","itemStyle","params","colorList","dataIndex","showBackground","backgroundStyle","label","bmInfoNsChartStorage","echarts","init","setOption","backToMap","unsubscribeBenchStatus","tagSearch","field","selectAllBench","tapModeControl","getBenchDetail","getBenchParam","srv","error","showLogBox","subscribeBenchStatus","connectAudioDevice","connect_audio_device","recordAudio","collectAudio","rej","channel","navigator","getUserMedia","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","mediaDevices","video","audio","stream","AudioContext","sampleRate","createMediaStreamSource","createScriptProcessor","onaudioprocess","inputBuffer","getChannelData","apply","arr","Float32Array","dataU8","Uint8Array","buffer","string","fromCharCode","play_audio","benchIds","connect","destination","stopRecord","ifConnectedAudioDevice","stop_play_audio","getTracks","track","stop","disconnect","close","collect_audio","stop_collect_audio","sendAudioTransformCode","sendAudioTimer","fill","dataF32","split","newDataF32","pcPlayAudio","clearTimeout","channels","audioCtx","webkitAudioContext","myArrayBuffer","createBuffer","nowBuffering","source","createBufferSource","start","pressPtt","press_ptt","clickBenchList","disconnectBench","newRemoteBenchList","filter","sleep","delay","getTime","itemtype","waterMap","set","selectedBench","dataset","showRemoteButton","func","getBenchImageSub","handleDblClickImg","indexParam","handleCloseImg","ii","getAutoPlanResult","watch","newValue","oldValue","benchInfo","objRBLReverse"],"sources":["src/views/ordinaryPage/index.vue"],"sourcesContent":["<template>\n <div>\n <Tabs :tabs=\"tabs\" style=\"width: 350px\"/>\n <div class=\"container\" v-show=\"isOpen3d\" key=\"container\">\n <SearchBarMain />\n <div class=\"vr-bg\" id=\"vr-bg-container\"></div>\n <div id=\"player\" style=\"width: 100%; height: 100%\"></div>\n </div>\n <div\n class=\"ordinary-container\"\n key=\"ordinary-container\"\n v-show=\"!isOpen3d\"\n @click=\"onBlur\"\n >\n <div class=\"ordinary-left\">\n <SearchBar\n class=\"search-container\"\n v-model=\"inputValue\"\n @focus=\"onFocus\"\n @input=\"onInput\"\n @blur=\"onBlur\"\n ref=\"searchbar\"\n />\n <div class=\"square-map\" v-show=\"isOpenSquare && !isOpen\">\n <el-row>\n <el-col v-for=\"(item, index) in images\" :key=\"item\" :span=\"8\">\n <div\n class=\"grid-item-background\"\n :style=\"{\n backgroundColor: item.alt == selectedBenchId ? '#fff': '#000'\n }\n \"\n >\n <div class=\"grid-item\">\n <img\n :src=\"item.url\"\n @dblclick=\"handleDblClickImg(item.alt)\"\n @click=\"handleClickImg(item.alt, index)\"\n />\n </div>\n <div class=\"grid-item-close\">\n <img\n width=\"30px\"\n src=\"../../images/closeremotebench.png\"\n @click=\"handleCloseImg(item.alt)\"\n />\n </div>\n </div>\n </el-col>\n </el-row>\n </div>\n <div class=\"filter-bench-list\" v-show=\"isOpen\" z-index=\"9999\">\n <dropdown :is-open=\"isOpen\" ref=\"dropdown\">\n <template v-slot:table>\n <table-component\n :data=\"filterBenchList\"\n :filters=\"filters\"\n :row-class-name=\"rowClassName\"\n ></table-component>\n </template>\n </dropdown>\n </div>\n <div\n v-show=\"!isConnected && !isOpenSquare && !isOpen\"\n class=\"ordinary-map-container\"\n z-index=\"9998\"\n >\n <div class=\"ordinary-map\" id=\"ordinary-map\">\n <!-- <img src=\"../../images/map.png\" /> -->\n <div class=\"vr-bg\" id=\"vr-bg-container\"></div>\n <div id=\"playersmall\">\n <div\n v-for=\"(item, key) in benchList\"\n :key=\"key\"\n class=\"bmMapItem el-icon-location\"\n :style=\"{\n left: item.left + 'px',\n top: item.top + 'px', \n }\"\n :class=\"item.status\"\n @mouseover=\"bmMapItemSelect(key)\"\n >\n <Transition v-if=\"item.selected\">\n <template>\n <div\n class=\"bmMapItemInfo\"\n :class=\"{\n bmMapItemInfoSelected: item.selected,\n }\"\n >\n <span>\n {{ item.name }}\n </span>\n <span style=\"display: flex; align-items: center\">\n {{ item.Project }}\n </span>\n <div style=\"width: 100%\">\n <span\n class=\"bmInfoMsSlideNameStatus\"\n :class=\"{\n ['bmInfoMsSlideNameStatus ' + item.status]: true,\n }\"\n ></span>\n </div>\n <!-- <div class=\"bmMapItemInfoAfter\"></div> -->\n </div>\n </template>\n </Transition>\n </div>\n </div>\n <div class=\"ordinary-map-ex\">\n <div class=\"square-count\">\n <status-bar\n :ready=\"readyCount\"\n :occupied=\"occupiedCount\"\n :offline=\"offlineCount\"\n ></status-bar>\n </div>\n <!-- <div class=\"bench-list\">\n <div class=\"bench-list-buttons\" @click=\"clickBenchList\">\n My Bench List\n </div>\n </div> -->\n </div>\n </div>\n\n <div class=\"ordinary-map-hidden\" v-show=\"false\">\n <div class=\"ordinary-map-blocker\" id=\"ordinary-map-blocker\">\n </div>\n </div>\n </div>\n <div v-show=\"isConnected && !isOpenSquare && !isOpen\" class=\"origin-map\">\n <Transition name=\"slide\">\n <div class=\"bmMap\" v-if=\"false\">\n <dropdown :is-open=\"isOpen\" ref=\"dropdown\">\n <template v-slot:table>\n <table-component\n :data=\"benchList\"\n :filters=\"filters\"\n :row-class-name=\"rowClassName\"\n ></table-component>\n </template>\n </dropdown>\n <div class=\"bmMapImage\">\n <div\n v-for=\"(item, key) in benchList\"\n :key=\"key\"\n class=\"bmMapItem el-icon-location\"\n :style=\"{\n left: item.left + '%',\n top: item.top + '%',\n }\"\n :class=\"item.status\"\n @click=\"bmMapItemSelect(key)\"\n >\n <Transition v-if=\"item.selected\">\n <template>\n <div\n class=\"bmMapItemInfo\"\n :class=\"{\n bmMapItemInfoSelected: item.selected,\n }\"\n >\n <span>\n {{ item.name }}\n </span>\n <span style=\"display: flex; align-items: center\">\n {{ item.Project }}\n </span>\n <div style=\"width: 100%\">\n <span\n class=\"bmInfoMsSlideNameStatus\"\n :class=\"{\n ['bmInfoMsSlideNameStatus ' + item.status]: true,\n }\"\n ></span>\n </div>\n <!-- <div class=\"bmMapItemInfoAfter\"></div> -->\n </div>\n </template>\n </Transition>\n </div>\n </div>\n </div>\n </Transition>\n <Transition name=\"slide\">\n <div class=\"bmBench\" v-if=\"benchDisplayVisible\">\n <div class=\"bmBenchBox\">\n <img\n class=\"bmBenchImg bmBenchImgUpper\"\n ref=\"bmBenchRef\"\n :src=\"\n currentScreen == 'upper' ? benchImgUpper : benchImgLower\n \"\n alt=\"\"\n />\n <div\n @mousedown=\"controlCursorMouseDown\"\n @mousemove=\"controlCursorMouseMove\"\n @mouseleave=\"controlCursorMouseOut\"\n @mouseup=\"controlCursorMouseUp\"\n class=\"bmBenchTrailUpper\"\n >\n <Transition>\n <div\n v-if=\"ifBmBenchTrailUpperCursorTap\"\n class=\"bmBenchTrailUpperCursorTap\"\n :style=\"{\n left: trailCursorPosition.left,\n top: trailCursorPosition.top,\n }\"\n ></div>\n </Transition>\n <Transition>\n <div\n v-if=\"ifBmBenchTrailUpperCursorSwipe\"\n class=\"bmBenchTrailUpperCursorSwipe\"\n :style=\"{\n left: 'calc(' + trailCursorPosition.left + '% - 1vh)',\n top: 'calc(' + trailCursorPosition.top + '% - 1vh)',\n }\"\n ></div>\n </Transition>\n <Transition>\n <div\n v-if=\"ifBmBenchTrailUpperCursorSwipe\"\n class=\"bmBenchTrailUpperCursorSwipe bmBenchTrailUpperCursorSwipe2\"\n :style=\"{\n left:\n 'calc(' + trailCursorPosition.left + '% - 0.75vh)',\n top: 'calc(' + trailCursorPosition.top + '% - 0.75vh)',\n }\"\n ></div>\n </Transition>\n <Transition>\n <div\n v-if=\"ifBmBenchTrailUpperCursorSwipe\"\n class=\"bmBenchTrailUpperCursorSwipe bmBenchTrailUpperCursorSwipe3\"\n :style=\"{\n left: 'calc(' + trailCursorPosition.left + '% - 0.5vh)',\n top: 'calc(' + trailCursorPosition.top + '% - 0.5vh)',\n }\"\n ></div>\n </Transition>\n <Transition>\n <div\n v-if=\"ifBmBenchTrailUpperCursorPress\"\n class=\"bmBenchTrailUpperCursorPress\"\n :style=\"{\n left: 'calc(' + trailCursorPosition.left + '% - 1vh)',\n top: 'calc(' + trailCursorPosition.top + '% - 1vh)',\n }\"\n ></div>\n </Transition>\n <Transition>\n <div\n v-if=\"ifBmBenchTrailUpperCursor\"\n class=\"bmBenchTrailUpperCursor\"\n :style=\"{\n left:\n 'calc(' + controlCursorPosition.left + 'px - 1vh)',\n top: 'calc(' + controlCursorPosition.top + 'px - 1vh)',\n }\"\n ></div>\n </Transition>\n </div>\n </div>\n </div>\n </Transition>\n <img :src=\"mainSnapshot\" />\n </div>\n <image-list\n v-show=\"isConnected && !isOpenSquare && !isOpen\"\n :images=\"images\"\n :page-size=\"pageSize\"\n :current-page=\"currentPage\"\n :current-bench=\"connetedBenchId\"\n @handleImageClick=\"handleImageClick\"\n @prev-page=\"prevPage\"\n @next-page=\"nextPage\"\n class=\"image-container\"\n />\n <el-row v-show=\"isConnected && !isOpenSquare && !isOpen\" class=\"bench-button\">\n <el-col :span=\"5\" class=\"btn-item\" style=\"text-align: center\">{{\n currentBench && currentBench.name\n }}</el-col>\n <el-col\n :span=\"3\"\n class=\"btn-item\"\n :class=\"{ benchBtnActive: isPlaying }\"\n >\n <img\n @click=\"connectAudioDevice('collectAudio')\"\n src=\"../../images/sound.png\"\n />\n </el-col>\n <el-col\n :span=\"3\"\n class=\"btn-item\"\n :class=\"{ benchBtnActive: isRecording }\"\n >\n <img\n @click=\"connectAudioDevice('playAudio')\"\n src=\"../../images/mic.png\"\n />\n </el-col>\n <el-col\n :span=\"3\"\n class=\"btn-item\"\n :class=\"{ benchBtnActive: displayTapMode }\"\n >\n <img @click=\"tapModeControl\" src=\"../../images/pointer.png\" />\n </el-col>\n <el-col :span=\"3\" class=\"btn-item\" v-show=\"false\">\n <img @click=\"showLogBox\" src=\"../../images/book.png\" />\n </el-col>\n <el-col :span=\"3\" class=\"btn-item\">\n <img @click=\"pressPtt\" src=\"../../images/robot.png\" />\n </el-col>\n <!-- <el-col :span=\"3\" class=\"btn-item\" @click=\"clickBenchList\">\n <img @click=\"gotoGrid\" src=\"../../images/grid.png\" />\n </el-col> -->\n <el-col :span=\"3\" class=\"btn-item\">\n <img @click=\"disconnectBench\" src=\"../../images/disconnect.png\" />\n </el-col>\n </el-row>\n </div>\n\n <div class=\"origin-right\">\n <!-- <div class=\"square-count\" v-show=\"!currentBench.selected && isOpenSquare\">\n <status-bar\n :ready=\"readyCount\"\n :occupied=\"occupiedCount\"\n :offline=\"offlineCount\"\n ></status-bar>\n </div> -->\n <!-- <div\n class=\"origin-basic\"\n v-show=\"currentBench.type == 2 && !isOpenSquare\"\n @dblclick=\"handleInfoDblClick(currentBench.benchId)\"\n >\n <h2 @click=\"bmMapItemActivate\">{{ currentBench.name }} 🔗</h2>\n <div class=\"originBasicRow\">\n <div>\n <span>Location:</span>\n <span>Automation Lab-7E</span>\n </div>\n <div>\n <span>MU_SW</span>\n <span>{{ currentBench.MU_SW }}</span>\n </div>\n </div>\n <div class=\"originBasicRow\">\n <div>\n <span>Cluster</span>\n <span>{{ currentBench.Cluster }}</span>\n </div>\n <div>\n <span>Market</span>\n <span>{{ currentBench.Market }}</span>\n </div>\n </div>\n <div class=\"originBasicRow\">\n <div>\n <span>Box IP</span>\n <span>{{ currentBench.ip }}</span>\n </div>\n <div>\n <span>Box Version</span>\n <span>{{ currentBench.equipment?.version }}</span>\n </div>\n </div>\n </div> -->\n <!-- <div\n class=\"secondScreen\"\n v-if=\"benchDisplayLowerVisible && !isOpenSquare\"\n @click=\"switchScreen\"\n >\n <img\n class=\"bmBenchImg bmBenchImgLower\"\n :src=\"currentScreen == 'upper' ? benchImgLower : benchImgUpper\"\n alt=\"\"\n />\n </div> -->\n <!--<div\n class=\"origin-basic backgroundBox\"\n v-show=\"currentBench.type == 2\"\n @dblclick=\"handleInfoDblClick(currentBench.benchId)\"\n >\n <h2 @click=\"bmMapItemActivate\">{{ currentBench.name }} 🔗</h2>\n <div class=\"originBasicRow\">\n <div>\n <span>Location:</span>\n <span>Automation Lab-7E</span>\n </div>\n <div>\n <span>MU_SW</span>\n <span>{{ currentBench.MU_SW }}</span>\n </div>\n </div>\n <div class=\"originBasicRow\">\n <div>\n <span>Cluster</span>\n <span>{{ currentBench.Cluster }}</span>\n </div>\n <div>\n <span>Market</span>\n <span>{{ currentBench.Market }}</span>\n </div>\n </div>\n <div class=\"originBasicRow\">\n <div>\n <span>Box IP</span>\n <span>{{ currentBench.ip }}</span>\n </div>\n <div>\n <span>Box Version</span>\n <span>{{ currentBench.equipment?.version }}</span>\n </div>\n </div>\n </div>\n <div\n class=\"secondScreen\"\n v-if=\"benchDisplayLowerVisible\"\n @click=\"switchScreen\"\n >\n <img\n class=\"bmBenchImg bmBenchImgLower\"\n :src=\"currentScreen == 'upper' ? benchImgLower : benchImgUpper\"\n alt=\"\"\n />\n </div>-->\n <div class=\"ordinary-list\">\n <TabList\n :tabs=\"tabs\"\n :itemRender=\"itemRender\"\n :planRender=\"planRender\"\n :taskRender=\"taskRender\"\n :issueRender=\"issueRender\"\n :planList=\"planList\"\n :caseList=\"caseList\"\n :autoCaseList=\"autoCaseList\"\n :is-show-auto-case-list=\"isShowAutoCaseList\"\n :planName=\"planName\"\n :taskName=\"taskName\"\n :caseName=\"caseName\"\n :is-show-plan-list=\"isShowPlanList\"\n :is-show-task-list=\"isShowTaskList\"\n :is-show-case-commit=\"isShowCaseCommit\"\n :is-show-case-list=\"isShowCaseList\"\n :is-show-case-detail=\"isShowCaseDetail\"\n :clickBackToTaskList=\"clickBackToTaskList\"\n :clickBackToPlanList=\"clickBackToPlanList\"\n :selectRowPlan=\"selectRowPlan\"\n :caseProject=\"caseProject\"\n :currentCase=\"currentCase\"\n :caseActive=\"caseActive\"\n :caseFunction=\"caseFunction\"\n caseContent=\"caseContent\"\n :isShowAutoCaseCommit=\"isShowAutoCaseCommit\"\n @turnNextCase=\"turnNextCase\"\n :caseSubFunction=\"caseSubFunction\"\n :caseMarket=\"caseMarket\"\n :caseLanguage=\"caseLanguage\"\n :selectRowCase=\"selectRowCase\"\n :clickBackToAutoPlanList=\"clickBackToAutoPlanList\"\n :tabClass=\"tabClass\"\n :planBack=\"planBack\"\n :clickBackToPlan=\"clickBackToPlan\"\n :submitManualCase=\"submitManualCase\"\n :clickBackToCaseList=\"clickBackToCaseList\"\n :isShowIssueList=\"isShowIssueList\"\n :isShowIssueDetail=\"isShowIssueDetail\"\n :currentIssue=\"currentIssue\"\n :currentPlanId=\"currentPlanId\"\n :currentPlanName=\"currentPlanName\"\n :submitAutoCase=\"submitAutoCase\"\n :clickBackToAutoCaseList=\"clickBackToAutoCaseList\"\n :clickBackToIssueList=\"clickBackToIssueList\"\n :benchDisplayLowerVisible=\"benchDisplayLowerVisible\"\n :currentScreen=\"currentScreen\"\n :benchImgLower=\"benchImgLower\"\n :benchImgUpper=\"benchImgUpper\"\n :readyCount=\"readyCount\"\n :occupiedCount=\"occupiedCount\"\n :offlineCount=\"offlineCount\"\n ></TabList>\n </div>\n </div>\n </div>\n <bench-detail\n :is-detail-visible=\"isDetailVisible\"\n :is-remote-btn-visible=\"isRemoteBtnVisible\"\n :closeDetail=\"closeDetail\"\n ref=\"benchdetail\"\n :bench=\"benchDetail\"\n @changeCurrentBench=\"changeCurrentBench\"\n />\n <!-- <div v-show=\"mouseStatus\" class=\"mouse-flow bmMapItem el-icon-location\" :style=\"{ left: mouseX+'px', top: mouseY+'px' }\">\n <div class=\"mouse-flow-title\">{{ mouseBenchDetail.name }}</div>\n <div class=\"mouse-flow-dep\">{{ mouseBenchDetail.Platform }}</div>\n <div class=\"mouse-flow-status\" :class=\"mouseBenchDetail.status\"></div>\n </div> -->\n <div\n class=\"bmMapItemInfoWater\"\n v-show=\"mouseStatus\"\n :class=\"{\n bmMapItemInfoSelected: mouseStatus,\n }\"\n :style=\"{ left: mouseX+'px', top: mouseY+'px' }\"\n >\n <span>\n {{ mouseBenchDetail.name }}\n </span>\n <span style=\"display: flex; align-items: center\">\n {{ mouseBenchDetail.Project }}\n </span>\n <div style=\"width: 100%\">\n <span\n class=\"bmInfoMsSlideNameStatus\"\n :class=\"{\n ['bmInfoMsSlideNameStatus ' + mouseBenchDetail.status]: true,\n }\"\n ></span>\n </div>\n <!-- <div class=\"bmMapItemInfoAfter\"></div> -->\n </div>\n </div>\n</template>\n<script>\nimport \"./index.less\";\nimport \"./origin.less\";\nimport \"./square.less\";\nimport TabList from \"../../components/TabList\";\nimport Tabs from \"../../components/Tabs\"\nimport SearchBar from \"../../components/SearchBar\";\nimport Dropdown from \"./components/DropDown\";\nimport TableComponent from \"./components/TableComponent\";\nimport BenchDetail from \"../../components/BenchDetail\";\nimport StatusBar from \"../../components/StatusBar\";\n//import { benchList } from './api'\nimport THREE from \"three\";\nimport { uwbMain } from \"../../uwb-sample\";\nimport { mapState } from \"vuex\";\n\nimport ImageList from \"./components/ImageList\";\nimport webSocket from \"../../service/ws\";\nimport bus from \"../../service/bus\";\n\nimport { FBXLoader } from \"../../FBXLoader.js\";\nimport SearchBarMain from \"../../components/SearchBarMain\";\n\nconst ws = new webSocket();\nlet that = null;\nlet wsArray = [];\nlet wsArrayLength = 0;\nfor (var iR = 0; iR < 50; iR++) {\n const wsRemote = new webSocket();\n\n wsRemote.open().then((res) => {\n // console.log(\"res\", res);\n });\n wsArray.push(wsRemote);\n}\n\nexport default {\n components: {\n StatusBar,\n TabList,\n SearchBar,\n Dropdown,\n TableComponent,\n BenchDetail,\n ImageList,\n SearchBarMain,\n Tabs\n },\n data() {\n return {\n inputValue: \"\",\n isDetailVisible: false,\n isRemoteBtnVisible: false,\n isShowPlanList: false,\n isShowCaseList: false,\n isShowAutoCaseList: false,\n isShowCaseDetail: false,\n isShowCaseCommit: false,\n isShowIssueList: true,\n isShowIssueDetail: false,\n isShowAutoCaseCommit: false,\n taskName: \"\",\n planName: \"\",\n caseName: \"\",\n caseProject: \"\",\n caseActive: \"\",\n caseFunction: \"\",\n caseSubFunction: \"\",\n caseMarket: \"\",\n caseLanguage: \"\",\n caseContent: \"\",\n isShowTaskList: true,\n benchDisplayVisible: false,\n mainSnapshot: \"\",\n currentBench: {},\n readyCount: 10,\n occupiedCount: 5,\n offlineCount: 3,\n previousSelectedBenchList: [],\n selectedBenchList: [],\n renderBenchList: true,\n filters: [],\n currentCase: null,\n currentIssue: null,\n currentPlanId: null,\n currentPlanName: null,\n currentCaseIndex: 0,\n tabs: [\n {\n title: \"实时\",\n list: [\n ],\n },\n {\n title: \"历史\",\n list: [\n \n ],\n },\n {\n title: \"告警\",\n list: [\n \n ],\n },\n {\n title: \"报表\",\n list: [\n \n ],\n },\n {\n title: \"管理\",\n list: [\n \n ],\n },\n ],\n tableData: [\n {\n benchname: \"Bench 1\",\n project: \"Project A\",\n carline: \"Carline A\",\n market: \"Market A\",\n sw: \"SW 1\",\n status: \"Status A\",\n },\n {\n benchname: \"Bench 2\",\n project: \"Project B\",\n carline: \"Carline B\",\n market: \"Market B\",\n sw: \"SW 2\",\n status: \"Status B\",\n },\n // ...\n ],\n\n currentPage: 1,\n pageSize: 5,\n benchId: \"219\",\n mainSnapshot: \"\",\n timer: 0,\n platform: null,\n connetedBenchId: \"\",\n displayTapMode: false,\n controlCursorPosition: {},\n ifBmBenchTrailUpperCursorTap: false,\n benchLog: [],\n trailCursorPosition: {},\n audioName: \"\",\n ifBmBenchTrailUpperCursorSwipe: false,\n ifBmBenchTrailUpperCursorPress: false,\n ifBmBenchTrailUpperCursor: false,\n controlStartPoint: {},\n ifShowLogBox: false,\n filterData: {\n keyword: \"\",\n currentPage: 1,\n pageSize: 10,\n status: [4, 3, 5, 0, 2, 6],\n types: [],\n \"basic attributes\": [],\n ips: [],\n orderBy: \"desc\",\n orderkey: \"id\",\n },\n benchImgUpper: \"\",\n benchImgUpperMap: {},\n currentScreen: \"upper\",\n benchDisplayLowerVisible: false,\n benchImgLower: \"\",\n benchImgLowerMap: {},\n isPlaying: false,\n isRecording: false,\n loopSendAudioTime: null,\n sendAudioString: \"\",\n vadThreshold: 0,\n recStream: null,\n paAc: null,\n paSource: null,\n paScriptNode: null,\n sempleRateMultiple: null,\n recordSuperposeArr: [],\n sempleRateHandlingThreshold: null,\n playAudioBenchList: [],\n isConnected: false,\n currentBenchId: 0,\n gridItems: [1, 2, 3, 4, 5, 6, 7, 8, 9],\n timerIdMap: { num: 0 },\n timerId: 0,\n autoPlanResultInterval: 0,\n remoteBenchList: [],\n waterdotrefresh: false,\n selectedBenchId: 0,\n benchDetail: {},\n mouseBenchDetail: {}\n };\n },\n computed: {\n // tabClass(){\n // return 'ordinary';\n // },\n tabClass() {\n return this.currentBench.type == 2 ? \"short\" : \"long\";\n },\n ...mapState({\n isOpen: (state) => {\n return state.common.isOpen\n },\n mouseX: (state) => {\n return state.benchList.mouseoverx\n },\n mouseY: (state) => {\n return state.benchList.mouseovery\n },\n mouseStatus: (state) => {\n return state.benchList.mouseoverstatus\n },\n mouseBenchId: (state) => {\n return state.benchList.mouseoverbenchid\n },\n images: (state) => {\n console.log(state.benchList.benchImgList, \"imageList\");\n return state.benchList.benchImgList;\n },\n isOpenSquare: (state) => {\n return state.common.isOpenSquare;\n },\n isOpen3d: (state) => {\n return state.common.isOpen3d;\n },\n benchList: (state) => {\n return state.benchList.benchList;\n },\n taskList: (state) => {\n return state.taskList.taskList;\n },\n planList: (state) => {\n console.log(state.planList.planList, \"planList==============\");\n let planList = state.planList.planList.concat(\n state.planList.autoPlanList\n );\n planList = planList.sort((p1, p2) => p1.id - p2.id);\n return planList;\n },\n autoPlanList: (state) => {\n return state.planList.autoPlanList;\n },\n caseList: (state) => {\n return state.caseList.caseList;\n },\n autoCaseList: (state) => {\n return state.caseList.autoCaseList;\n },\n issueList: (state) => {\n return state.issueList.issueList;\n },\n autoTaskStatus: (state) => {\n return state.caseList.autoTaskStatusMap[state.caseList.currentTaskIndex];\n },\n filterBenchList: (state) => {\n return state.benchList.filterBenchList.sort((a, b) => {\n let i = 0;\n let j = 0;\n for (let m = 0; m < a.MU_SW.length; m++) {\n i += a.MU_SW.charCodeAt(m);\n }\n for (let n = 0; n < b.MU_SW.length; n++) {\n j += b.MU_SW.charCodeAt(n);\n }\n return i - j;\n });\n },\n autoTaskStatusMap: (state) => {\n return state.caseList.autoTaskStatusMap\n },\n autoTaskPercentMap: (state) => {\n return state.caseList.autoTaskPercentMap\n }\n }),\n },\n created() {\n // uwbMain(\"player\", window.innerWidth, window.innerHeight, \"panorama\");\n ws.open().then((res) => {\n // console.log(\"res\", res);\n });\n window.handleListClick = this.handleListClick;\n window.handleBenchClick = this.handleBenchClick;\n window.handleClickTask = this.handleClickTask.bind(this);\n window.selectRowPlan = this.selectRowPlan.bind(this);\n window.selectRowCase = this.selectRowCase.bind(this);\n window.selectRowIssue = this.selectRowIssue.bind(this);\n window.handleListDbClick = this.handleListDbClick;\n window.showBenchPos = this.showBenchPos;\n window.handleClickImg = this.handleClickImg;\n let that = this;\n window.bmMapItemSelect = this.bmMapItemSelect.bind(this);\n window.bmMapItemUnSelect = this.bmMapItemUnSelect.bind(this);\n window.handleClickIssue = this.handleClickIssue.bind(this);\n window.selectBench = this.selectBench.bind(this);\n that.$store.dispatch(\"taskList/clearTaskList\");\n that.$store.dispatch(\"taskList/fetchTaskList\", {\n page_num: 1,\n page_size: 1000,\n });\n\n window.bmMapItemActivate = this.bmMapItemActivate;\n // 调用定时器方法,返回定时器id,用于按条件清空\n that.timerId = that.myInterval((count) => {\n // console.log(count)\n this.$store.dispatch(\"benchList/fetchBenchList\");\n if (!this.waterdotrefresh) {\n this.waterdotrefresh = true;\n window.getsqlData(window.sdkInstance, window.uwbInstance,true)\n }\n this.refreshBenchStatus()\n if (count > 30000) {\n console.log(\"end\");\n that.clearMyInterval(that.timerId);\n }\n }, 10000);\n\n setTimeout(() => {\n this.$store.dispatch(\"benchList/fetchBenchList\");\n if (!this.waterdotrefresh) {\n window.getsqlData(window.sdkInstance, window.uwbInstance,false)\n }\n this.refreshBenchStatus()\n },2000)\n\n this.$store.dispatch(\"issueList/fetchIssueList\", {\n bench_id: null,\n page_num: 1,\n page_size: 10,\n processor: 0,\n ticket_status: 0,\n ticket_type: 0,\n });\n },\n async mounted() {\n that = this;\n //this.getBenchList();\n console.log(this.benchList, \"benchList\");\n this.tabs[0].list = this.benchList;\n this.tabs[1].list = this.taskList;\n this.tabs[2].list = this.issueList;\n let mapDom = document.getElementsByClassName(\"ordinary-map\")[0];\n let style = getComputedStyle(mapDom);\n let width = parseFloat(style.width);\n let height = parseFloat(style.height);\n let ratio = 1.8;\n window.renderWidth = width * ratio;\n window.renderHeight = height * ratio;\n sessionStorage.setItem('3dMode', 0)\n debugger\n uwbMain('player', width * ratio, height * ratio, \"floorplan\");\n // window.sdkInstance.sceneRenderer.updateScreenSize(width * ratio, height * ratio);\n setTimeout(() => {\n var element = document.getElementById('house-player');\n element.style.marginLeft = ((width - (width * ratio)) / 2) + 'px';\n element.style.marginTop = ((height - (height * ratio)) / 2) + 'px';\n }, 3500)\n\n setTimeout(() => {\n let self = this;\n\n var objRBL = this.remoteBenchList;\n if (objRBL) {\n console.log(\"objRBL\", objRBL);\n wsArrayLength = objRBL.length;\n for (var iW = 0; iW < objRBL.length; iW++) {\n var i = JSON.parse(JSON.stringify(iW));\n let benchId = JSON.parse(JSON.stringify(objRBL[i]));\n setTimeout(() => {\n console.log(\"connect bench\", benchId);\n wsArray[i]\n ?.connectBench({ bench_id: String(benchId) })\n .then((res) => {\n console.log(\"connect bench success\", benchId);\n self.getBenchImage(benchId, 1, wsArray[i], () => {});\n })\n .catch((err) => {\n console.log(\"connect bench failed\", benchId);\n this.$message({\n message: \"This bench is offline\",\n // message: \"\",\n type: \"warning\",\n });\n });\n }, iW * 2000);\n }\n }\n }, 3000);\n\n bus.on(\"newLog\", (param) => {\n if (param.action) {\n this.benchLog.unshift(param);\n // document.getElementsByClassName(\"bmLogBottom\")[0].scrollIntoView();\n if (Object.keys(param.action).length != 0) {\n // console.log(\"actionType\", param.action.actionType);\n let position = param.action.pos;\n // console.log(\"position\", position);\n if (param.action.actionType == \"swipe on\") {\n this.ifBmBenchTrailUpperCursorSwipe = true;\n this.trailCursorPosition.left = (position[0] / 1540) * 100;\n this.trailCursorPosition.top = (position[1] / 720) * 100;\n setTimeout(() => {\n this.trailCursorPosition.left =\n ((position[0] + position[2]) / 1540) * 100;\n this.trailCursorPosition.top =\n ((position[1] + position[3]) / 720) * 100;\n }, 800);\n setTimeout(() => {\n this.ifBmBenchTrailUpperCursorSwipe = false;\n }, 2000);\n } else if (param.action.actionType == \"tap on\") {\n this.ifBmBenchTrailUpperCursorTap = true;\n setTimeout(() => {\n this.ifBmBenchTrailUpperCursorTap = false;\n }, 1500);\n this.trailCursorPosition.left =\n \"calc(\" + ((position[0] * 2) / 1540) * 100 + \"% - 1vh)\";\n this.trailCursorPosition.top =\n \"calc(\" + ((position[1] * 2) / 720) * 100 + \"% - 1vh)\";\n } else if (param.action.actionType == \"longPress on\") {\n this.ifBmBenchTrailUpperCursorPress = true;\n setTimeout(() => {\n this.ifBmBenchTrailUpperCursorPress = false;\n }, 1500);\n this.trailCursorPosition.left = ((position[0] * 2) / 1540) * 100;\n this.trailCursorPosition.top = ((position[1] * 2) / 720) * 100;\n } else if (param.action.actionType == \"audio\") {\n // console.log(\"newLog\", param);\n let fileName = param.action.file_name;\n console.log(\"audiofileName\", fileName);\n this.audioName = fileName;\n bus.emit(\"planAudioEmit\");\n }\n }\n }\n\n if (this.benchLog.length > 100) {\n this.benchLog.pop();\n }\n });\n bus.on(\"switchScreen\", (param) => {\n this.currentScreen = param.currentScreen;\n });\n bus.on(\"goHome\", () => {\n this.isConnected = false;\n this.$store.dispatch(\"common/setSquareStatus\", false);\n this.$store.dispatch(\"common/setConnectedStatus\", false);\n });\n\n \n {\n this.autoPlanResultInterval = setInterval(() => {\n let autoCurrentTaskData = window.localStorage.getItem(\"autoCurrentTaskData\");\n let autoCurrentTaskName = window.localStorage.getItem(\"autoCurrentTaskName\");\n autoCurrentTaskData = JSON.parse(autoCurrentTaskData);\n autoCurrentTaskName = JSON.parse(autoCurrentTaskName);\n if (autoCurrentTaskData) {\n for (let planId in autoCurrentTaskData) {\n let planExecId = autoCurrentTaskData[planId];\n if (autoCurrentTaskName) {\n let planName = autoCurrentTaskName[planId];\n if (planName) {\n this.$store.dispatch(\"caseList/fetchAutoCaseList\", {\n planId: planId,\n planName: planName\n });\n }\n }\n \n this.$store.dispatch(\"caseList/setPlanExecId\", planExecId);\n this.$store.dispatch('caseList/getAutoPlanResult',{planId, planExecId});\n }\n }\n }, 5000);\n }\n },\n methods: {\n changeCurrentBench(benchId) {\n this.isDetailVisible = false;\n if (this.isOpen3d) {\n this.$store.dispatch(\"common/toggle3dStatus\");\n }\n this.selectBench(benchId);\n },\n myInterval(callback, interval) {\n // 每设置一次定时器,num++ 代表系统中有num个自定义的定时器\n this.timerIdMap.num++;\n // 第 num 个定时器的id\n let intervalId = \"id\" + this.timerIdMap.num;\n this.timerIdMap[intervalId] = true;\n // 循环次数\n let count = 0;\n\n let startTime = Date.now();\n let loop = () => {\n // 系统map中不存在这个id,就停止循环\n if (!this.timerIdMap[intervalId]) {\n return;\n }\n if (Date.now() > startTime + interval * (count + 1)) {\n count++;\n callback(count);\n }\n window.requestAnimationFrame(loop);\n };\n loop();\n return intervalId;\n },\n // 清空定时器,删除全局的定时器id map\n clearMyInterval(intervalId) {\n delete this.timerIdMap[intervalId];\n },\n turnToNextManualCase() {},\n clickBackToTaskList() {\n this.isShowPlanList = false;\n this.isShowTaskList = true;\n // this.planList = [];\n },\n clickBackToCaseList() {\n this.isShowCaseCommit = false;\n this.isShowCaseList = true;\n },\n submitManualCase(item) {\n console.log(this.currentCase, \"manualcasedetail============\");\n this.isShowCaseCommit = true;\n this.isShowCaseDetail = false;\n },\n clickBackToIssueList() {\n this.isShowIssueList = true;\n this.isShowIssueDetail = false;\n },\n clickBackToPlan() {\n this.isShowCaseDetail = false;\n if (sessionStorage.getItem(\"autoCase\") == 0) {\n this.isShowCaseList = true;\n } else {\n this.isShowAutoCaseList = true;\n }\n },\n submitAutoCase() {\n if (this.autoTaskStatus == 'waiting' || this.autoTaskStatus == 'running') {\n this.$store.dispatch('caseList/cancelPlan');\n this.clickBackToTaskList()\n this.isShowAutoCaseList = false;\n return\n }\n this.isShowAutoCaseList = false;\n this.isShowAutoCaseCommit = true;\n },\n clickBackToAutoCaseList() {\n this.isShowAutoCaseList = true;\n this.isShowAutoCaseCommit = false;\n },\n selectRowPlan(id, auto, name) {\n console.log(id, \"selectrowdata\");\n debugger\n if (!auto || auto == \"undefined\" || auto == \"false\") {\n this.currentPlanId = id;\n this.currentPlanName = name;\n this.$store.dispatch(\"caseList/fetchCaseList\", {\n uuid: id,\n page_num: 1,\n page_size: 100,\n });\n this.isShowCaseList = true;\n sessionStorage.setItem(\"autoCase\", 0);\n this.$store.dispatch(\"caseList/setCurrentTask\", id);\n } else {\n if (id == 109) id = 222;\n this.currentPlanId = id;\n this.currentPlanName = name;\n this.$store.dispatch(\"caseList/setCurrentPlanId\", id);\n this.$store.dispatch(\"caseList/fetchAutoCaseList\", {\n planId: id,\n planName: name\n });\n this.isShowAutoCaseList = true;\n this.$store.dispatch(\"caseList/setCurrentTask\", id);\n sessionStorage.setItem(\"autoCase\", 1);\n }\n\n this.$store.dispatch(\"common/fetchOptionList\");\n\n this.isShowPlanList = false;\n\n this.planName = name;\n },\n selectRowCase(row) {\n this.isShowCaseList = false;\n this.isShowCaseDetail = true;\n\n this.caseName = row.m_id;\n this.caseProject = row.precondition;\n //this.caseActive =,\n this.caseFunction = row.action;\n this.caseSubFunction = row.expectation;\n this.caseMarket = row.market;\n this.caseLanguage = row.language;\n this.currentCase = row;\n\n for (let i = 0; i < this.caseList.length; i++) {\n if (this.caseList[i].case_no == row.case_no) {\n this.currentCaseIndex = i;\n break;\n }\n }\n //this.caseContent =,\n },\n turnNextCase() {\n this.currentCaseIndex++;\n if (this.currentCaseIndex == this.caseList.length) {\n this.isShowCaseList = true;\n this.isShowCaseCommit = false;\n } else {\n this.currentCase = this.caseList[this.currentCaseIndex];\n this.caseName = this.currentCase.m_id;\n this.caseProject = this.currentCase.precondition;\n //this.caseActive =,\n this.caseFunction = this.currentCase.action;\n this.caseSubFunction = this.currentCase.expectation;\n this.caseMarket = this.currentCase.market;\n this.caseLanguage = this.currentCase.language;\n this.isShowCaseCommit = false;\n this.isShowCaseDetail = true;\n }\n },\n selectRowIssue(id) {\n let row = this.issueList.find((i) => i.id == id);\n this.isShowIssueList = false;\n this.isShowIssueDetail = true;\n this.currentIssue = row;\n console.log(row, \"==============issue============\");\n },\n clickBackToPlanList() {\n this.isShowPlanList = true;\n this.isShowCaseList = false;\n this.caseList = [];\n },\n clickBackToAutoPlanList() {\n this.isShowPlanList = true;\n this.isShowAutoCaseList = false;\n this.$store.dispatch('caseList/clearAutoCaseList');\n },\n bmMapItemUnSelect() {\n let items = document.getElementsByClassName(\"item-box\");\n for (var index = 0; index < items.length; index++) {\n items[index].style.background = \"#00000032\";\n let title = items[index].getElementsByClassName(\"item-title\");\n console.log(\"textContent\", title[0].textContent);\n let itemOther = this.benchList.find(\n (b) => parseInt(b.id) == parseInt(title[0].textContent)\n );\n itemOther.selected = false;\n itemOther.scale = 1;\n }\n },\n onFocus() {\n this.$store.dispatch(\"common/setIsOpen\", true);\n this.$store.dispatch('benchList/filterBenchList', {type: 'status', value: 'Status'});\n this.$store.dispatch('benchList/filterBenchList', {type: 'project', value: 'Project'});\n this.$store.dispatch('benchList/filterBenchList', {type: 'carline', value: 'Carline'});\n this.$store.dispatch('benchList/filterBenchList', {type: 'variant', value: 'Variant'});\n this.$store.dispatch('benchList/filterBenchList', {type: 'cluster', value: 'Cluster'});\n this.$store.dispatch('benchList/filterBenchList', {type: 'market', value: 'Market'});\n this.$store.dispatch('benchList/setFilterBenchFlag', true);\n },\n onBlur(e) {\n console.log(\"=====----====\", e.target.classList);\n if (\n Array.prototype.indexOf.call(e.target.classList, \"ordinary-left\") > -1\n ) {\n this.$store.dispatch(\"common/setIsOpen\", false);\n }\n },\n onInput(value) {\n this.inputValue = value;\n this.$store.dispatch('benchList/filterBenchList', {type: 'name', value: value});\n this.$store.dispatch('benchList/setFilterBenchFlag', true);\n },\n onClickOutside() {\n if (\n this.$refs.searchbar.$el.contains(event.target) ||\n this.$refs.dropdown.$el.contains(event.target)\n ) {\n return;\n }\n this.$store.dispatch(\"common/setIsOpen\", false);\n },\n handleClickTask(taskId, auto) {\n let task = that.taskList.find((t) => t.id == taskId);\n // 获取手动测试plan列表\n let manualList = task.plan_list[1];\n // 获取自动测试plan列表\n let autoList = task.plan_list[2];\n autoList.forEach((at) => {\n that.$store.dispatch(\"planList/fetchPlanDetail\", {\n planId: at < 100 ? at + 101 : at,\n });\n });\n that.isShowPlanList = true;\n that.isShowTaskList = false;\n this.$store.commit(\"planList/setAutoPlanList\", autoList);\n this.$store.commit(\"planList/setPlanList\", manualList);\n that.taskName = task.name;\n this.$nextTick(() => {\n that.$store.dispatch(\"planList/clearPlanList\");\n that.$store.dispatch(\"planList/fetchPlanList\", {\n page_num: 1,\n page_size: 10000,\n });\n });\n console.log(task, \"任务详情\");\n },\n handleClickIssue(issueId) {\n console.log(issueId, \"issueid\");\n },\n showBenchPos(benchList) {\n console.log(\"benchList\", benchList);\n for (var item of benchList) {\n var currentBench = this.benchList.find((b) => b.id == item.benchId);\n if (currentBench) {\n //console.log('currentBench',currentBench);\n currentBench.left = item.x - 548 + 48;\n currentBench.top = item.y - 137 - 150 + 11;\n currentBench.benchId = item.benchId;\n currentBench.benchType = item.benchType;\n console.log('item.benchImg',item.benchImg);\n currentBench.image = require(\"../../assets/bench_img/\"+item.benchImg);\n if (currentBench.benchType == 2) {\n //currentBench.image = require(\"../../assets/mechine2.png\");\n } else {\n //currentBench.image = require(\"../../assets/mechine.png\");\n }\n }\n }\n this.renderBenchList = false;\n setTimeout(() => {\n this.renderBenchList = true;\n }, 10);\n },\n planBack() {\n that.isShowPlanList = false;\n that.isShowTaskList = true;\n },\n taskRender(item) {\n return `<div class=\"item-box\" onClick=\"handleClickTask('${\n item.uuid || item.id\n }', '${item.auto}')\">\n <div class=\"left\">\n <div style=\"\">\n <div class=\"item-title\">${item.name}</div>\n <div class=\"item-description\">${item.description}</div>\n </div>\n <div class=\"item-time\">\n <div class=\"time\">${item.start_time}</div>\n to\n <div class=\"time\"> ${item.end_time}</div>\n </div>\n <div class=\"item-tag\">\n <div class=\"tag\">${item.processor_name}</div>\n <div class=\"tag\">${item.sw}</div>\n </div>\n </div>\n <div class=\"taskBtn\" onClick=\"handleClickTask('${\n item.uuid || item.id\n }', '${item.auto}')\">To Do</div>\n </div>`;\n },\n planRender(item) {\n console.log(item, \"plan\", this.autoTaskStatusMap[item.id]);\n \n return `<div onClick=\"selectRowPlan('${item.uuid || item.id}', '${\n item.auto\n }', '${item.name}')\" class=\"item-box\" style=\"display:${\n !item.auto && !item.uuid ? \"none\" : \"flex\"\n };align-items: top; justify-content: space-between;color: #fff;\">\n <div class=\"left\">\n <div style=\"display:flex;align-items: center;\">\n <div class=\"item-title\">${item.name}</div>\n <div class=\"process-percent\" style=\"margin-left: 10px; width: 80px\">\n <div style=\"width: ${this.autoTaskPercentMap[item.id] || 0}%; height: 10px; border-radius: 10px;background-image: linear-gradient(-90deg,transparent 0px,#95d475 50px,#95d475)\" }\"></div>\n </div>\n <div style=\"width:40px;color:#fff;font-size: 12px;padding-left: 3px\">${Number(this.autoTaskPercentMap[item.id] || 0).toFixed(1) || 0}%</div>\n <div class=\"task-auto\" style=\"display:${\n item.auto ? \"block\" : \"none\"\n }\">Auto</div>\n </div>\n </div>\n <div style=\"width: unset; padding: 0 10px;\" class=\"taskBtn ${this.autoTaskStatusMap[item.id] || 'ready'}\">${this.autoTaskStatusMap[item.id] || 'ready'}</div>\n </div>`;\n },\n issueRender(item) {\n return `<div class=\"item-box\" style=\"display:flex; align-items: center;justify-content: space-between;\" onClick=\"selectRowIssue('${\n item.uuid || item.id\n }')\">\n <div class=\"left\">\n <div style=\"display:flex;align-items: center;\">\n <div class=\"item-title\" style=\"width: 20vw; white-space: nowrap; overflow:hidden; text-overflow: ellipsis;\">${item.ticket_title}</div>\n <div class=\"${\"status\" + item.ticket_status}\"></div>\n </div>\n <div class=\"item-tag\">\n <div class=\"tag\">${item.creator}</div>\n <div class=\"tag\">${item.create_time}</div>\n </div>\n </div>\n <div class=\"${\n item.checked ? \"el-icon-circle-check\" : \"uncheck\"\n }\"></div>\n </div>`;\n },\n closeDetail() {\n this.isDetailVisible = false;\n },\n rowClassName() {\n return \"row-class\";\n },\n getImgList(objRBL) {\n console.log(\"zmg3\", objRBL);\n let benchId = objRBL.pop();\n if (benchId == null) {\n console.log(\"zmg2\");\n setTimeout(() => {\n let href = window.location.href;\n if (href.indexOf(\"benchid=\") != -1) {\n let benchid = href.substring(href.indexOf(\"benchid=\") + 8);\n let remoteBenchList = this.remoteBenchList;\n console.log(\"benchid\", benchid);\n console.log(\n \"item == benchId\",\n remoteBenchList.find((item) => item == benchid)\n );\n if (remoteBenchList.find((item) => item == benchid)) {\n this.selectBench(parseInt(benchid));\n }\n }\n }, 200);\n return;\n }\n let self = this;\n\n console.log(\"benchId\", benchId);\n ws.connectBench({ bench_id: String(benchId) })\n .then((res) => {\n ws.getImage(String(benchId), 1).then((res) => {\n self.$store.dispatch(\"benchList/setBenchImgList\", {\n benchId,\n img: res.data.data,\n });\n self.getImgList(objRBL);\n });\n })\n .catch((err) => {\n console.log(\"connect bench failed\", benchId);\n self.$message({\n message: \"This bench is offline\",\n // message: \"\",\n type: \"warning\",\n });\n });\n },\n gotoGrid() {\n this.$router.push({\n path: \"/squarePage\",\n });\n },\n itemRender(item) {\n // console.log(item, 'bench---item')\n\n //item.image = require(\"../../assets/mechine.png\");\n //item.image = require(\"../../assets/bench_img/\"+item.benchImg);\n /*return `\n <div class=\"item-box\">\n <div class=\"item-image\"><img src=\"${item.image}\" alt=\"${item.title}\"></div>\n <div class=\"item-right\">\n <div class=\"item-title\">\n <span onClick=\"handleListClick(${item.id})\">${item.id}</span>\n <span onClick=\"selectBench(${item.id})\" class=\"el-icon-s-platform ${item.status}\"></span>\n </div>\n <div class=\"item-text\">\n <div class=\"item-description\">Automation Lab-7E</div>\n <div class=\"item-description\">${item.name}</div>\n <div class=\"item-tag\">\n <div class=\"tag\">${item.Market}</div>\n <div class=\"tag\">${item.Platform}</div>\n <div class=\"tag\">${item.Project}</div>\n <div class=\"tag\">${item.Carline}</div>\n <div class=\"tag\">${item.Cluster}</div>\n </div>\n <div class=\"item-tag\">\n <div class=\"tag\">${item.MU_SW}</div>\n <div class=\"tag\">${item.Variant}</div>\n <div class=\"tag\">${item.ip}</div>\n </div>\n </div>\n </div>\n </div>`;*/\n return `\n <div onDblClick=\"handleListDbClick(${item.id})\" data-index=\"${item.id}\" onClick=\"handleListClick(${item.id})\" class=\"item-box\">\n <div class=\"item-image\"><img src=\"${item.image}\" alt=\"${item.title}\"></div>\n <div class=\"item-right\">\n <div class=\"item-text\">\n <div class=\"item-title\">${item.name}\n <span onClick=\"selectBench(${item.id})\" class=\"el-icon-monitor ${item.status}\"></span>\n </div>\n <div class=\"item-description\">Automation Lab-7E</div>\n <div class=\"item-tag\">\n <div class=\"tag\" title=\"Market\">${item.Market}</div>\n <div class=\"tag\" title=\"Platform\">${item.Platform}</div>\n <div class=\"tag\" title=\"Project\">${item.Project}</div>\n <div class=\"tag\" title=\"Carline\">${item.Carline}</div>\n <div class=\"tag\" title=\"Cluster\">${item.Cluster}</div>\n <div class=\"tag\" title=\"MU_SW\">${item.MU_SW}</div>\n <div class=\"tag\" title=\"Variant\">${item.Variant}</div>\n </div>\n </div>\n </div>\n </div>`;\n },\n handleImageClick(index) {\n this.selectBench(\n parseInt(this.images[index + 5 * (this.currentPage - 1)].alt)\n );\n this.handleListClick(parseInt(this.images[index + 5 * (this.currentPage - 1)].alt))\n },\n prevPage() {\n if (this.currentPage > 1) {\n this.currentPage--;\n }\n },\n nextPage() {\n if (this.currentPage < Math.ceil(this.images.length / this.pageSize)) {\n this.currentPage++;\n }\n },\n handleInfoDblClick(benchId) {\n console.log(\"handleInfoDblClick\", benchId);\n this.currentBench = this.benchList.find((b) => b.id == benchId);\n\n this.isDetailVisible = true;\n },\n getImage() {},\n dataCallBack(data) {\n switch (data.method) {\n case \"get_image\":\n this.handleGetImageData(data.data.data);\n break;\n }\n console.log(data);\n },\n handleGetImageData(data) {\n this.mainSnapshot = \"data:image/jpeg;base64,\" + data;\n },\n selectBench(benchId) {\n // 全屏选择bench\n this.saveSelectedBenchToLs(benchId);\n\n var i = JSON.parse(JSON.stringify(wsArrayLength));\n let self = this;\n wsArrayLength++;\n setTimeout(() => {\n console.log(\"connect bench\", benchId);\n wsArray[i]\n ?.connectBench({ bench_id: String(benchId) })\n .then((res) => {\n console.log(\"connect bench success\", benchId);\n self.getBenchImage(benchId, 1, wsArray[i], () => {});\n this.currentBench = this.benchList.find((b) => b.id == benchId) || {};\n this.remoteBenchList.push(benchId)\n this.$store.dispatch(\"common/setGoHome\", false);\n let nList = Array.from(new Set(this.remoteBenchList));\n let len = nList.length;\n if (len > 9) {\n setTimeout(() => {\n let square = document.querySelector('.square-map');\n if (square) {\n square.scrollTo(0, 10000)\n }\n }, 1000)\n }\n })\n .catch((err) => {\n console.log(\"connect bench failed\", benchId);\n this.$message({\n message: \"This bench is offline\",\n // message: \"\",\n type: \"warning\",\n });\n });\n }, 200);\n // 非全屏选择bench\n var objRBL = this.remoteBenchList;\n if (objRBL && objRBL.length > 0) {\n var bExist = false;\n for (var i = 0; i < objRBL.length; i++) {\n if (objRBL[i] == benchId) {\n bExist = true;\n } else {\n }\n }\n if (bExist == false) {\n objRBL.push(benchId);\n this.remoteBenchList.push(benchId)\n this.$store.dispatch('benchList/addRemoteBenchList', benchId);\n }\n } else {\n var rml = [];\n rml.push(benchId);\n this.remoteBenchList.push(benchId)\n this.$store.dispatch('benchList/addRemoteBenchList', benchId);\n }\n\n console.log(\"benchList\", this.benchList);\n let bench = this.benchList.find((b) => b.id == benchId);\n console.log(\"selectedBench\", bench);\n if (this.previousSelectedBenchList.length) {\n this.selectedBenchList = JSON.parse(\n JSON.stringify(this.previousSelectedBenchList)\n );\n }\n this.previousSelectedBenchList = [];\n this.platform = null;\n this.benchList.forEach((b) => (b.selected = false));\n bench.selected = !bench.selected;\n if (bench.selected) {\n this.currentBench = bench;\n bench.benchId = \"'\" + bench.benchId + \"'\";\n this.selectedBenchList.push(bench);\n console.log(\"selected\", this.selectedBenchList);\n // this.images = this.selectedBenchList.map((s) => {\n // return {\n // url: \"\",\n // alt: s.name,\n // };\n // });\n } else {\n for (let i in this.selectedBenchList) {\n if (this.selectedBenchList[i].id == bench.id) {\n this.selectedBenchList.splice(i, 1);\n // this.images = this.selectedBenchList.map((s) => {\n // return {\n // url: \"\",\n // alt: s.name,\n // };\n // });\n break;\n }\n }\n }\n if (this.selectedBenchList.length == 0) {\n nextTick(() => {\n self.initBmInfoNsChart();\n });\n } else {\n self.bmMapItemActivate(bench.id, wsArray[i]);\n }\n },\n bmMapItemActivate(benchId, ws) {\n let self = this;\n if (this.selectedBenchList.length == 0) {\n this.$message({\n message: \"Please select a bench to activate.\",\n // message: \"\",\n type: \"warning\",\n });\n return;\n }\n this.selectedBenchList = [this.selectedBenchList[0]];\n console.log(\"selectedBenchList[0]\", this.selectedBenchList);\n let key = 0;\n for (let i in this.benchList) {\n this.benchList[i].selected = false;\n }\n for (let i in this.benchList) {\n if (this.benchList[i].id == benchId) {\n this.benchList[i].selected = true;\n key = i;\n break;\n }\n }\n this.benchList[key].acitveAnimation = true;\n //let benchId = this.benchList[key].benchId;\n this.benchList[key].benchId = benchId;\n let screenType = this.benchList[key].Display;\n this.connetedBenchId = String(benchId);\n // this.connectedBenchData = this.benchList[key];\n setTimeout(() => {\n console.log(\"connect bench\", benchId);\n ws.connectBench({ bench_id: String(benchId) })\n .then((res) => {\n self.isConnected = true;\n this.$store.dispatch(\"common/setConnectedStatus\", true);\n console.log(\"connect bench success\");\n this.currentScreen = \"upper\";\n self.setSendAudioBus(benchId);\n self.getBenchImage(benchId, 1, ws, () => {\n if (this.benchList[key].acitveAnimation) {\n this.benchList[key].acitveAnimation = false;\n this.benchDisplayVisible = true;\n }\n });\n if (screenType == \"DUO\") {\n self.getBenchImage(String(benchId), 2, ws, () => {\n if (this.connetedBenchId) {\n this.benchDisplayLowerVisible = true;\n }\n });\n } else {\n this.benchDisplayLowerVisible = false;\n }\n })\n .catch((err) => {\n console.log(\"connect bench failed\");\n this.benchList[key].acitveAnimation = false;\n this.$message({\n message: \"This bench is offline\",\n // message: \"\",\n type: \"warning\",\n });\n });\n }, 300);\n },\n switchScreen() {\n if (this.currentScreen == \"upper\") {\n this.currentScreen = \"lower\";\n } else {\n this.currentScreen = \"upper\";\n }\n console.log(\"this.currentScreen\", this.currentScreen);\n },\n singleFingerTouch(id, x, y, screenType) {\n let self = this;\n ws.singleFingerTouch(id, x, y, screenType).then((res) => {});\n },\n singleFingerDrag(id, x1, y1, x2, y2, screenType) {\n let self = this;\n ws.singleFingerDrag(id, x1, y1, x2, y2, screenType).then((res) => {});\n },\n singleFingerLongTouch(id, x, y, duration, screenType) {\n let self = this;\n ws.singleFingerLongTouch(id, x, y, duration, screenType).then(\n (res) => {}\n );\n },\n controlCursorMouseDown(e) {\n let self = this;\n if (this.displayTapMode) {\n // console.log(\"e\", e);\n this.controlCursorPosition.left = e.offsetX;\n this.controlCursorPosition.top = e.offsetY;\n this.controlStartPoint.x = e.offsetX;\n this.controlStartPoint.y = e.offsetY;\n this.controlStartPoint.time = Date.now();\n this.ifBmBenchTrailUpperCursor = true;\n }\n },\n\n controlCursorMouseMove(e) {\n let self = this;\n if (this.displayTapMode && this.ifBmBenchTrailUpperCursor) {\n this.controlCursorPosition.left = e.offsetX;\n this.controlCursorPosition.top = e.offsetY;\n }\n },\n\n controlCursorMouseOut(e) {\n this.ifBmBenchTrailUpperCursor = false;\n },\n controlCursorMouseUp(e, screenType = 1) {\n let self = this;\n if (this.currentScreen == \"upper\") {\n screenType = 1;\n } else if (this.currentScreen == \"lower\") {\n screenType = 2;\n }\n if (this.displayTapMode) {\n this.ifBmBenchTrailUpperCursor = false;\n if (\n Math.abs(this.controlStartPoint.x - e.offsetX) < 30 &&\n Math.abs(this.controlStartPoint.y - e.offsetY) < 30 &&\n Date.now() - this.controlStartPoint.time < 500\n ) {\n self.singleFingerOperation(e, \"tap\", screenType);\n } else if (\n Math.abs(this.controlStartPoint.x - e.offsetX) > 30 ||\n Math.abs(this.controlStartPoint.y - e.offsetY) > 30\n ) {\n // console.log(\"controlStartPoint\", controlStartPoint);\n self.singleFingerOperation(\n e,\n \"swipe\",\n screenType,\n this.controlStartPoint\n );\n } else if (Date.now() - this.controlStartPoint.time > 500) {\n self.singleFingerOperation(\n e,\n \"longPress\",\n screenType,\n this.controlStartPoint\n );\n }\n }\n },\n singleFingerOperation(e, operation, screenType, startPoint = {}) {\n let self = this;\n console.log(\"singleFingerOperation\", e, operation, screenType);\n if (this.displayTapMode) {\n let width = this.$refs.bmBenchRef.width;\n let height = this.$refs.bmBenchRef.height;\n\n let offsetX = e.offsetX;\n let offsetY = e.offsetY;\n\n let screenWidth = this.currentScreen == \"upper\" ? 1540 : 1280;\n let screenHeight = this.currentScreen == \"upper\" ? 720 : 720;\n\n let x = Math.round(screenWidth * (offsetX / width));\n let y = Math.round(screenHeight * (offsetY / height));\n\n let x1 = 0;\n let y1 = 0;\n if (startPoint != {}) {\n x1 = Math.round(screenWidth * (startPoint.x / width));\n y1 = Math.round(screenHeight * (startPoint.y / height));\n }\n\n // console.log(\"x\", x);\n // console.log(\"y\", y);\n\n // console.log(\"x1\", x1);\n // console.log(\"y1\", y1);\n let operationDesc = \"\";\n if (operation == \"tap\") {\n console.log(\"selected\", this.connetedBenchId, x, y);\n self.singleFingerTouch(this.connetedBenchId, x, y, screenType);\n // tap on lower x: 48 y: 292\n operationDesc =\n \"tap on \" +\n (screenType == 1 ? \"upper \" : \"lower \") +\n (\"x: \" + x + \" y: \" + y);\n } else if (operation == \"swipe\") {\n self.singleFingerDrag(this.connetedBenchId, x1, y1, x, y, screenType);\n operationDesc =\n \"swipe on \" +\n (screenType == 1 ? \"upper \" : \"lower \") +\n (\"x1: \" + x1 + \" y1: \" + y1 + \" x: \" + x + \" y: \" + y);\n } else if (operation == \"longPress\") {\n self.singleFingerLongTouch(\n this.connetedBenchId,\n x,\n y,\n Date.now() - startPoint.time,\n screenType\n );\n operationDesc =\n \"longPress on \" +\n (screenType == 1 ? \"upper \" : \"lower \") +\n (\"x: \" + x + \" y: \" + y);\n }\n this.benchLog.push({\n bench_id: this.connetedBenchId,\n data: operationDesc,\n levelStr: \"DEBUG\",\n startTime: self.getNowDate(),\n });\n }\n },\n getNowDate() {\n var myDate = new Date();\n var year = myDate.getFullYear(); //获取当前年\n var mon = myDate.getMonth() + 1; //获取当前月\n var date = myDate.getDate(); //获取当前日\n var hours = myDate.getHours(); //获取当前小时\n var minutes = myDate.getMinutes(); //获取当前分钟\n var seconds = myDate.getSeconds(); //获取当前秒\n var now =\n year +\n \"-\" +\n mon +\n \"-\" +\n date +\n \"T\" +\n hours +\n \":\" +\n minutes +\n \":\" +\n seconds;\n return now;\n },\n initBmInfoNsChart() {\n let self = this;\n let seriesData = [0, 0, 0];\n for (let i in this.benchList) {\n if (this.benchList[i].status == 5 || this.benchList[i].status == 6) {\n seriesData[1]++;\n } else if (\n this.benchList[i].status == 2 ||\n this.benchList[i].status == 3\n ) {\n seriesData[2]++;\n } else {\n seriesData[0]++;\n }\n }\n console.log(\"seriesData\", seriesData);\n var option = {\n tooltip: {\n trigger: \"axis\",\n axisPointer: {\n type: \"shadow\",\n },\n },\n grid: {\n left: 0,\n right: \"20\",\n bottom: 0,\n top: 0,\n containLabel: true,\n },\n xAxis: {\n type: \"value\",\n axisLabel: {\n show: false,\n },\n splitLine: {\n show: false,\n },\n // axisLine: {\n // show: false,\n // },\n // axisTick: {\n // show: false, //刻度线\n // },\n },\n yAxis: {\n type: \"category\",\n data: [\"Offline\", \"Occupied\", \"Ready\"],\n axisLine: {\n show: false,\n lineStyle: {\n color: \"#7F7F7F\",\n },\n },\n axisTick: {\n show: false, //刻度线\n },\n // axisLine: {\n // },\n },\n series: [\n {\n type: \"bar\",\n barWidth: \"50%\",\n data: seriesData,\n itemStyle: {\n color: function (params) {\n // 给出颜色组\n var colorList = [\"#b1b3b8\", \"#79bbff\", \"#95d475\"];\n return colorList[params.dataIndex];\n },\n },\n showBackground: false,\n backgroundStyle: {\n color: \"rgba(180, 180, 180, 0.2)\",\n },\n label: {\n show: true,\n position: \"right\",\n color: \"#7F7F7F\",\n },\n },\n ],\n };\n bmInfoNsChartStorage = echarts.init(\n document.getElementsByClassName(\"bmInfoNsChart\")[0]\n );\n bmInfoNsChartStorage.setOption(option);\n },\n\n backToMap() {\n let self = this;\n ws.unsubscribeBenchStatus({ bench_id: this.connetedBenchId }).then(\n (res) => {\n console.log(\"unsubscribeBenchStatus\", res);\n }\n );\n this.connetedBenchId = \"\";\n setTimeout(() => {\n this.benchDisplayVisible = false;\n this.ifShowLogBox = false;\n }, 600);\n },\n\n tagSearch(field, value) {\n let self = this;\n this.selectedBenchList = [];\n for (let i in this.benchList) {\n this.benchList[i].selected = false;\n if (this.benchList[i][field] == value) {\n this.benchList[i].selected = true;\n this.benchList[i].benchId = \"'\" + this.benchList[i].benchId + \"'\";\n this.selectedBenchList.push(this.benchList[i]);\n // this.images = this.selectedBenchList.map((s) => {\n // return {\n // url: \"\",\n // alt: s.name,\n // };\n // });\n }\n }\n },\n\n selectAllBench() {\n let self = this;\n console.log('this.benchList===', this.benchList.length)\n if (this.selectedBenchList.length == this.benchList.length) {\n this.selectedBenchList = [];\n this.previousSelectedBenchList = [];\n for (let i in this.benchList) {\n this.benchList[i].selected = false;\n }\n self.nextTick(() => {\n self.initBmInfoNsChart();\n });\n } else {\n this.selectedBenchList = [];\n for (let i in this.benchList) {\n this.benchList[i].selected = true;\n this.selectedBenchList.push(this.benchList[i]);\n // this.images = this.selectedBenchList.map((s) => {\n // return {\n // url: \"\",\n // alt: s.name,\n // };\n // });\n }\n }\n },\n tapModeControl() {\n this.displayTapMode = !this.displayTapMode;\n },\n getBenchDetail(id, index) {\n let self = this;\n let getBenchParam = { id };\n srv\n .getBenchDetail(getBenchParam)\n .then((res) => {\n // console.log(\"res\", res);\n this.benchList[index].status = res.data.data.status;\n })\n .catch((err) => {\n console.error(err);\n });\n },\n showLogBox() {\n let self = this;\n if (this.ifShowLogBox) {\n ws.unsubscribeBenchStatus({ bench_id: this.connetedBenchId }).then(\n (res) => {\n console.log(\"unsubscribeBenchStatus\", res);\n }\n );\n } else {\n ws.subscribeBenchStatus({ bench_id: this.connetedBenchId }).then(\n (res) => {\n console.log(\"subscribeBenchStatus\", res);\n }\n );\n }\n this.benchLog = [];\n this.ifShowLogBox = !this.ifShowLogBox;\n },\n connectAudioDevice(type) {\n let self = this;\n ws.connect_audio_device({\n benchId: String(this.connetedBenchId),\n }).then(\n (res) => {\n console.log(\"connect_audio_device_res\", res);\n if (type == \"playAudio\") {\n this.isRecording = !this.isRecording;\n self.recordAudio();\n } else if (type == \"collectAudio\") {\n self.collectAudio();\n }\n },\n (rej) => {}\n );\n },\n recordAudio(data) {\n let self = this;\n // console.log(\"selectedBenchList.value[0]\", this.selectedBenchList[0]);\n let channel = 1;\n\n this.vadThreshold = 0;\n if (this.isRecording) {\n this.playAudioBenchList.push(this.connetedBenchId);\n // this.changePlayAudioBenchList(params);\n navigator.getUserMedia =\n navigator.getUserMedia ||\n navigator.webkitGetUserMedia ||\n navigator.mozGetUserMedia ||\n navigator.msGetUserMedia;\n if (navigator.mediaDevices.getUserMedia) {\n // 支持getUserMedia\n navigator.mediaDevices\n .getUserMedia({\n video: false,\n audio: true,\n })\n .then((stream) => {\n this.recStream = stream;\n this.paAc = new AudioContext({\n sampleRate: 8000,\n });\n this.paSource = this.paAc.createMediaStreamSource(stream);\n\n //构造参数依次为缓冲区大小,输入通道数,输出通道数\n this.paScriptNode = this.paAc.createScriptProcessor(\n 1024,\n channel,\n 2\n );\n\n this.sempleRateMultiple = this.paAc.sampleRate / 8000;\n this.paScriptNode.onaudioprocess = function (e) {\n for (let i = 0; i < channel; i++) {\n let data = e.inputBuffer.getChannelData(i);\n\n self.recordSuperposeArr.push.apply(\n self.recordSuperposeArr,\n data\n );\n if (\n self.sempleRateHandlingThreshold <\n self.sempleRateMultiple - 1\n ) {\n self.sempleRateHandlingThreshold++;\n } else {\n let arr = [];\n\n for (\n let a = 0;\n a < self.recordSuperposeArr.length;\n a = a + self.sempleRateMultiple\n ) {\n arr.push(self.recordSuperposeArr[a]);\n }\n\n self.recordSuperposeArr = arr.splice(0, 1024);\n\n self.recordSuperposeArr = new Float32Array(\n self.recordSuperposeArr\n );\n if (Math.abs(self.recordSuperposeArr[0]) < 0.003) {\n self.vadThreshold++;\n } else {\n self.vadThreshold = 0;\n }\n if (self.vadThreshold <= 20) {\n let dataU8 = new Uint8Array(\n self.recordSuperposeArr.buffer\n );\n let string = \"\";\n for (let i = 0; i < dataU8.length; i++) {\n string = string + String.fromCharCode(dataU8[i]);\n }\n\n ws.play_audio({\n data: string,\n benchIds: self.playAudioBenchList,\n }).then(\n (res) => {},\n (rej) => {}\n );\n }\n self.sempleRateHandlingThreshold = 0;\n self.recordSuperposeArr = [];\n }\n }\n };\n this.paScriptNode.connect(this.paAc.destination);\n this.paSource.connect(this.paScriptNode);\n })\n .catch((err) => {\n console.log(\"err: \" + err);\n });\n } else {\n // 不支持getUserMedia\n console.log(\"Environment not supported\");\n }\n } else {\n // this.changePlayAudioBenchList(params);\n this.playAudioBenchList = [];\n self.stopRecord();\n this.ifConnectedAudioDevice = false;\n ws.stop_play_audio({\n benchId: this.connetedBenchId,\n }).then(\n (res) => {\n // console.log(\"res\", res);\n },\n (rej) => {\n // console.log(\"rej\", rej);\n }\n );\n // $bus.$emit(\"stopPlayAudio\", {\n // benchId: params.benchId,\n // });\n // }\n }\n },\n\n stopRecord() {\n let self = this;\n if (!this.isRecording) {\n this.recStream.getTracks().forEach(function (track) {\n track.stop();\n });\n this.paScriptNode.disconnect(this.paAc.destination);\n this.paSource.disconnect(this.paScriptNode);\n this.paAc.close();\n }\n },\n collectAudio() {\n let self = this;\n this.isPlaying = !this.isPlaying;\n if (this.isPlaying) {\n ws.collect_audio({\n benchId: String(this.connetedBenchId),\n }).then(\n (res) => {},\n (rej) => {}\n );\n } else {\n ws.stop_collect_audio({\n benchId: String(this.connetedBenchId),\n }).then(\n (res) => {},\n (rej) => {}\n );\n this.loopSendAudioTime = 0;\n this.sendAudioString = \"\";\n }\n },\n\n setSendAudioBus(benchId) {\n let self = this;\n bus.on(\"sendAudio\" + benchId, (data) => {\n self.sendAudioTransformCode(data.data, true);\n this.loopSendAudioTime++;\n\n this.sendAudioTimer = setTimeout(() => {\n this.loopSendAudioTime = 5;\n self.sendAudioTransformCode(\"\", false);\n }, 500);\n });\n },\n\n sendAudioTransformCode(data, fill) {\n let dataU8 = [];\n let dataF32 = [];\n let arr = [];\n let self = this;\n this.sendAudioString += data;\n if (this.loopSendAudioTime > 4) {\n arr = this.sendAudioString.split(\"\");\n for (let i = 0; i < arr.length; i++) {\n dataU8[i] = arr[i].charCodeAt();\n }\n dataU8 = new Uint8Array(dataU8);\n dataF32 = new Float32Array(dataU8.buffer);\n if (!fill) {\n // console.log(\"dataF32-\", dataF32);\n let newDataF32 = new Float32Array(5120);\n for (let i = 0; i < 5120; i++) {\n if (i < dataF32.length) {\n newDataF32[i] = dataF32[i];\n } else {\n newDataF32[i] = 0;\n }\n }\n dataF32 = newDataF32;\n // console.log(\"dataF32+\", dataF32);\n }\n self.pcPlayAudio(dataF32, 1, 8000);\n\n this.sendAudioString = \"\";\n this.loopSendAudioTime = 0;\n }\n if (fill) {\n clearTimeout(this.sendAudioTimer);\n }\n },\n\n pcPlayAudio(data, channels, sampleRate) {\n let self = this;\n var audioCtx = new (window.AudioContext || window.webkitAudioContext)({\n sampleRate: sampleRate,\n });\n\n var myArrayBuffer = audioCtx.createBuffer(\n channels,\n data.length,\n sampleRate\n );\n\n for (let channel = 0; channel < channels; channel++) {\n var nowBuffering = myArrayBuffer.getChannelData(channel);\n for (let i = 0; i < data.length; i++) {\n if (i < data.length) {\n nowBuffering[i] = data[i];\n } else {\n nowBuffering[i] = 0;\n }\n }\n }\n\n // console.log(\"audioCtx\", audioCtx);\n // console.log(\"nowBuffering\", nowBuffering);\n\n var source = audioCtx.createBufferSource();\n source.buffer = myArrayBuffer;\n source.connect(audioCtx.destination);\n source.start();\n },\n\n pressPtt() {\n let self = this;\n ws.press_ptt({\n benchId: String(this.connetedBenchId),\n }).then(\n (res) => {},\n (rej) => {}\n );\n },\n bmMapItemSelect(key) {\n let self = this;\n if (this.previousSelectedBenchList.length) {\n this.selectedBenchList = JSON.parse(\n JSON.stringify(this.previousSelectedBenchList)\n );\n }\n this.previousSelectedBenchList = [];\n this.platform = null;\n this.benchList.forEach((b) => (b.selected = false));\n this.benchList[key].selected = !this.benchList[key].selected;\n if (this.benchList[key].selected) {\n this.currentBench = this.benchList[key];\n this.selectedBenchList.push(this.benchList[key]);\n // this.images = this.selectedBenchList.map((s) => {\n // return {\n // url: \"\",\n // alt: s.name,\n // };\n // });\n } else {\n for (let i in this.selectedBenchList) {\n if (this.selectedBenchList[i].id == this.benchList[key].id) {\n this.selectedBenchList.splice(i, 1);\n // this.images = this.selectedBenchList.map((s) => {\n // return {\n // url: \"\",\n // alt: s.name,\n // };\n // });\n break;\n }\n }\n }\n if (this.selectedBenchList.length == 0) {\n nextTick(() => {\n self.initBmInfoNsChart();\n });\n }\n },\n clickBenchList() {\n // window.location.href = \"/squarePage?m=8b934420_ZJUb_b6f9\";\n this.$store.dispatch(\"common/setSquareStatus\", true);\n },\n disconnectBench() {\n ws.disconnectBench({ bench_id: String(this.connetedBenchId) }).then(\n (res) => {\n var remoteBenchList = this.remoteBenchList;\n let newRemoteBenchList = remoteBenchList.filter((item) => {\n return item != this.connetedBenchId;\n });\n while(this.remoteBenchList.length) {\n this.remoteBenchList.pop();\n this.$store.dispatch('benchList/popRemoteBenchList')\n this.$store.dispatch(\"common/setSquareStatus\", true);\n }\n newRemoteBenchList.forEach(e => {\n this.remoteBenchList.push(e);\n this.$store.dispatch('benchList/addRemoteBenchList', e)\n })\n this.$store.dispatch(\"benchList/removeBenchImgList\", {\n benchId: this.connetedBenchId,\n });\n this.getImgList(newRemoteBenchList);\n\n this.connetedBenchId = \"\";\n this.currentBench = {};\n this.benchDisplayVisible = false;\n this.benchDisplayLowerVisible = false;\n this.isConnected = false;\n this.$store.dispatch(\"common/setConnectedStatus\", false);\n }\n );\n },\n\n sleep(delay) {\n var start = new Date().getTime();\n while (new Date().getTime() - start < delay) {\n continue;\n }\n },\n saveSelectedBenchToLs(benchId) {\n var objRBL = this.remoteBenchList;\n if (objRBL && objRBL.length > 0) {\n var bExist = false;\n for (var i = 0; i < objRBL.length; i++) {\n if (objRBL[i] == benchId) {\n bExist = true;\n } else {\n }\n }\n if (bExist == false) {\n objRBL.push(benchId);\n this.remoteBenchList.push(benchId)\n this.$store.dispatch('benchList/addRemoteBenchList', benchId)\n }\n } else {\n var rml = [];\n rml.push(benchId);\n this.remoteBenchList.push(benchId);\n this.$store.dispatch('benchList/addRemoteBenchList', benchId)\n }\n },\n handleListClick(benchId, itemtype) {\n this.$store.dispatch(\"common/setGoHome\", false);\n \n if (itemtype == 2) {\n return;\n }\n try{\n for(let key in window.waterMap) {\n if (key == benchId) {\n window.waterMap[key].scale.set(1.3, 1.3, 1.3);\n } else {\n window.waterMap[key].scale.set(1, 1, 1);\n }\n }\n } catch (e) {\n\n }\n console.log(\"benchId\", benchId);\n let selectedBench = this.benchList.find((i) => i.benchId == benchId);\n bus.emit(\"benchInfoVisible\", selectedBench);\n this.$nextTick(() => {\n if (benchId == this.currentBench.benchId) {\n let items = document.getElementsByClassName(\"grid-item-background\");\n for (var index = 0; index < items.length; index++) {\n items[index].style.background = \"#000000\";\n }\n return;\n }\n let items = document.getElementsByClassName(\"grid-item-background\");\n for (var index = 0; index < items.length; index++) {\n items[index].style.background = \"#000000\";\n if (this.images[index].alt == benchId) {\n console.log(\"equal\");\n items[index].style.background = \"#ffffff\";\n }\n }\n });\n\n //this.currentBench = this.benchList.find(b => b.id == benchId);\n //this.isDetailVisible = true;\n this.$nextTick(() => {\n //this.$refs.benchdetail.init(benchId);\n //this.benchList.forEach(element =>\n //{\n // element.style = \"{background: rgba(0, 0, 0, 1)}\"\n //});\n // if (benchId == this.currentBench.id &&this.currentBench.selected) {\n // this.currentBench.selected = false;\n // this.currentBench.scale = 1;\n // this.currentBench = {};\n // let items = document.getElementsByClassName(\"item-box\");\n // for (var index = 0; index < items.length; index++) {\n // items[index].style.background = \"#00000032\";\n // }\n // return;\n // }\n let items = document.getElementsByClassName(\"item-box\");\n for (var index = 0; index < items.length; index++) {\n items[index].style.background = \"#00000032\";\n // console.log(\"textContent\", title[0].textContent);\n let itemOther = this.benchList.find(\n (b) => b.id == items[index].dataset.index\n );\n if (itemOther) {\n itemOther.selected = false;\n }\n if (benchId == items[index].dataset.index) {\n items[index].style.background = \"#000000C0\";\n this.selectedBenchId = benchId\n }\n }\n // console.log('this.currentBench', this.currentBench);\n // bus.emit(\"benchInfoVisible\", this.currentBench);\n });\n },\n handleBenchClick(benchId, showRemoteButton) {\n this.currentBench = this.benchList.find((b) => b.id == benchId);\n this.benchDetail = this.benchList.find((b) => b.id == benchId);\n this.isRemoteBtnVisible = showRemoteButton;\n this.isDetailVisible = true;\n },\n handleListDbClick(benchId, itemtype) {\n //this.currentBench = this.benchList.find(b => b.id == benchId);\n //this.isDetailVisible = true;\n this.$nextTick(() => {\n //this.$refs.benchdetail.init(benchId);\n //this.benchList.forEach(element =>\n //{\n // element.style = \"{background: rgba(0, 0, 0, 1)}\"\n //});\n this.benchDetail = this.benchList.find((b) => b.id == benchId);\n //this.currentBench.style = \"{background: rgba(0, 0, 0, 1)}\"\n console.log(\"current bench\", this.benchDetail);\n this.isRemoteBtnVisible = true;\n this.isDetailVisible = true;\n });\n },\n getBenchImage(benchId, screenType, wsRemote, func) {\n let self = this;\n setTimeout(() => {\n wsRemote.getImage(String(benchId), screenType).then((res) => {\n console.log(\"getImageRes\", res);\n // let screen = screenType == 1 ? \"upper\" : \"lower\";\n func();\n if (screenType == 1) {\n self.benchImgUpper = \"data:image/png;base64,\" + res.data.data;\n self.benchImgUpperMap[benchId] =\n \"data:image/png;base64,\" + res.data.data;\n bus.emit(\"benchImgChange\", { benchImgUpper: self.benchImgUpper });\n } else {\n self.benchImgLower = \"data:image/png;base64,\" + res.data.data;\n self.benchImgLowerMap[benchId] =\n \"data:image/png;base64,\" + res.data.data;\n bus.emit(\"benchImgChange\", { benchImgLower: self.benchImgLower });\n }\n // let screen = res.data.screen_type;\n //self.getBenchImage(benchId, screenType, wsRemote, func);\n if (benchId == this.connetedBenchId) {\n //self.getBenchImage(benchId, screenType, wsRemote, func);\n this.$store.dispatch(\"benchList/setBenchImgList\", {\n benchId,\n img: res.data.data,\n });\n }\n setTimeout(()=>{\n self.getBenchImageSub(benchId, screenType, wsRemote, func);\n },500)\n });\n }, 500);\n },\n getBenchImageSub(benchId, screenType, wsRemote, func) {\n let self = this;\n if (benchId == this.connetedBenchId) {\n wsRemote.getImage(String(benchId), screenType).then((res) => {\n console.log(\"getImageRes\", res);\n // let screen = screenType == 1 ? \"upper\" : \"lower\";\n //func();\n {\n if (screenType == 1) {\n self.benchImgUpper = \"data:image/png;base64,\" + res.data.data;\n self.benchImgUpperMap[benchId] =\n \"data:image/png;base64,\" + res.data.data;\n bus.emit(\"benchImgChange\", { benchImgUpper: self.benchImgUpper });\n } else {\n self.benchImgLower = \"data:image/png;base64,\" + res.data.data;\n self.benchImgLowerMap[benchId] =\n \"data:image/png;base64,\" + res.data.data;\n bus.emit(\"benchImgChange\", { benchImgLower: self.benchImgLower });\n }\n }\n setTimeout(() => {\n self.getBenchImageSub(benchId, screenType, wsRemote, func);\n }, 100)\n\n });\n\n\n }\n else {\n setTimeout(() => {\n self.getBenchImageSub(benchId, screenType, wsRemote, func);\n }, 500)\n }\n\n },\n handleDblClickImg(benchId) {\n this.benchImgUpper = this.benchImgUpperMap[benchId];\n this.benchImgLower = this.benchImgLowerMap[benchId];\n this.$store.dispatch(\"common/setSquareStatus\", false);\n this.selectBench(benchId);\n },\n handleClickImg(benchId, indexParam) {\n this.selectedBenchId = benchId;\n this.$nextTick(() => {\n if (benchId == this.currentBenchId) {\n benchId = 0;\n let items = document.getElementsByClassName(\"grid-item-background\");\n for (var index = 0; index < items.length; index++) {\n items[index].style.background = \"#000000\";\n }\n return;\n }\n this.currentBenchId = benchId;\n let items = document.getElementsByClassName(\"grid-item-background\");\n for (var index = 0; index < items.length; index++) {\n items[index].style.background = \"#000000\";\n if (index == indexParam) {\n console.log(\"equal\");\n items[index].style.background = \"#ffffff\";\n }\n }\n });\n this.$nextTick(() => {\n if (\n benchId == this.currentBench.id &&\n this.currentBench.selected == true\n ) {\n this.currentBench.selected = false;\n this.currentBench.scale = 1;\n this.currentBench = {};\n let items = document.getElementsByClassName(\"item-box\");\n for (var index = 0; index < items.length; index++) {\n items[index].style.background = \"#00000032\";\n }\n return;\n }\n let items = document.getElementsByClassName(\"item-box\");\n for (var index = 0; index < items.length; index++) {\n items[index].style.background = \"#00000032\";\n let title = items[index].getElementsByClassName(\"item-title\");\n console.log(\"textContent\", title[0].textContent);\n let itemOther = this.benchList.find(\n (b) => parseInt(b.id) == parseInt(title[0].textContent) || b.id == benchId\n );\n itemOther.selected = false;\n if(items[index].dataset.index == benchId){\n items[index].style.background = \"#000000C0\";\n this.currentBench = this.benchList.find((b) => b.id == benchId);\n this.currentBench.selected = true;\n }\n }\n \n this.$store.dispatch('benchList/setCurrentBench', this.currentBench);\n });\n },\n handleCloseImg(benchId) {\n this.connetedBenchId = benchId;\n this.disconnectBench()\n console.log(\"benchId\", benchId, this.connetedBenchId);\n var objRBL = this.remoteBenchList;\n if (objRBL) {\n for (var i = 0; i < objRBL.length; i++) {\n if (parseInt(objRBL[i]) == parseInt(benchId)) {\n console.log(\"images\", this.images);\n\n for (var ii = 0; ii < this.images.length; ii++) {\n if (parseInt(this.images[ii].alt) == parseInt(benchId)) {\n this.images.splice(ii, 1);\n console.log(\"images\", this.images);\n break;\n }\n }\n //delete objRBL[i];\n objRBL.splice(i, 1);\n console.log(\"objRBL\", objRBL);\n while(this.remoteBenchList.length) {\n this.remoteBenchList.pop();\n this.$store.dispatch('benchList/popRemoteBenchList')\n this.$store.dispatch(\"common/setSquareStatus\", true);\n }\n\n objRBL.forEach(e => {\n this.remoteBenchList.push(e)\n this.$store.dispatch('benchList/addRemoteBenchList', e)\n })\n\n return;\n }\n }\n }\n },\n getAutoPlanResult(key) {},\n refreshBenchStatus() {\n var readyCount = 0;\n var occupiedCount = 0;\n var offlineCount = 0;\n console.log(\"this.benchList\", this.benchList.length);\n this.benchList.forEach((element) => {\n //console.log('element',element);\n if (element.status == \"ready\") {\n readyCount++;\n } else if (element.status == \"error\") {\n offlineCount++;\n } else if (element.status == \"offline\") {\n offlineCount++;\n } else {\n occupiedCount++;\n }\n });\n this.readyCount = readyCount;\n this.offlineCount = offlineCount;\n this.occupiedCount = occupiedCount;\n }\n },\n watch: {\n benchDisplayVisible(newValue, oldValue) {\n bus.emit(\"benchDisplayVisible\", {\n benchDisplayVisible: newValue,\n benchInfo: this.selectedBenchList[0],\n });\n },\n benchDisplayLowerVisible(newValue, oldValue) {\n bus.emit(\"benchDisplayLowerVisibleChange\", {\n benchDisplayLowerVisible: newValue,\n });\n },\n benchList(newValue, oldValue) {\n console.log(\"newValue\", newValue);\n var objRBL = this.remoteBenchList;\n console.log(\"zmg1\", objRBL);\n var objRBLReverse = [];\n if(objRBL)\n {\n for (; objRBL.length > 0; ) {\n objRBLReverse.push(objRBL.pop());\n }\n }\n if (objRBLReverse.length > 0) {\n setTimeout(() => {\n this.getImgList(objRBLReverse);\n }, 300);\n }\n },\n isOpen3d(newValue, oldValue) {\n // if (!newValue) {\n // this.$nextTick(() => {\n // let mapDom = document.getElementsByClassName(\"ordinary-map\")[0];\n // let style = getComputedStyle(mapDom);\n // let width = parseFloat(style.width);\n // let height = parseFloat(style.height);\n // uwbMain('playersmall', width, height, \"floorplan\");\n // })\n // } else {\n // uwbMain('player', window.innerWidth, window.innerHeight, \"panorama\");\n // }\n },\n autoPlanList() {\n this.autoPlanList.forEach(m => {\n this.$store.dispatch('caseList/getAllAutoPlanStatus', {\n planId: m.id,\n planName: m.name\n })\n })\n },\n mouseBenchId(newValue, oldValue) {\n let bench = this.benchList.find(b => b.benchId == newValue);\n if (bench) {\n this.mouseBenchDetail = bench;\n } else {\n this.mouseBenchDetail = {};\n }\n }\n },\n};\n</script>\n\n\n<style scoped>\n/* .benchMapBox {\n margin-top: 30px;\n} */\n\n.benchMapBox :deep() .el-scrollbar__bar {\n display: none;\n}\n\n.bmContent {\n background-image: linear-gradient(60deg, #16182a 30%, #2d3049);\n border-radius: 10px;\n /* height: 1800px; */\n margin-top: 30px;\n margin-bottom: 30px;\n min-height: 426px;\n}\n\n.bmMap {\n /* height: 500px; */\n position: absolute;\n height: 10%;\n width: 100%;\n /* padding: 5px 10px; */\n box-sizing: border-box;\n}\n\n.bmMap\n :deep()\n .el-radio-button__original-radio:checked\n + .el-radio-button__inner {\n background-color: #474c79;\n}\n.bmMap\n :deep()\n .el-radio-button__original-radio:checked\n + .el-radio-button__inner\n span {\n color: #fff;\n}\n.bmMap :deep() .el-radio-button__inner {\n background-color: #383c6b;\n border: none;\n box-shadow: none;\n}\n.bmMap :deep() .el-radio-button__inner span {\n color: #ccc;\n}\n.bmMap :deep() .el-radio-button__inner span:hover {\n color: #eee;\n}\n\n.bmMapImage {\n position: relative;\n height: 100%;\n width: 100%;\n /* border: 1px solid #fff; */\n background-color: rgba(255, 255, 255, 0.04);\n border-radius: 6px;\n}\n\n.bmMapItem {\n position: absolute;\n height: 70px;\n width: 70px;\n cursor: pointer;\n}\n\n.bmMapItemNormal {\n position: absolute;\n height: 100%;\n width: 100%;\n background-color: #16182a;\n /* box-shadow: 0 0 0 3px #393e6d inset; */\n box-sizing: border-box;\n z-index: 2;\n}\n\n.bmMapItemInfo {\n position: absolute;\n height: 100%;\n width: 120px;\n box-sizing: border-box;\n padding: 3px;\n display: flex;\n justify-content: center;\n align-items: flex-start;\n flex-direction: column;\n font-size: 12px;\n z-index: 6;\n user-select: none;\n /* background: #183153; */\n overflow: hidden;\n border: none;\n color: #ccc;\n border-radius: 10px;\n left: 30px;\n padding-left: 10px;\n background: rgba(117, 117, 117, 0.8);\n}\n\n.bmMapItemInfoWater {\n position: absolute;\n width: 120px;\n box-sizing: border-box;\n padding: 3px;\n display: flex;\n justify-content: center;\n align-items: flex-start;\n flex-direction: column;\n font-size: 12px;\n z-index: 6;\n user-select: none;\n /* background: #183153; */\n overflow: hidden;\n border: none;\n color: #ccc;\n border-radius: 10px;\n left: 30px;\n padding-left: 10px;\n background: rgba(117, 117, 117, 0.8);\n}\n\n.bmMapItemInfoAfter {\n width: 0%;\n height: 100%;\n background: rgba(117, 117, 117, 0.8);\n position: absolute;\n transition: all 0.2s ease-in-out;\n right: 0;\n}\n\n.bmMapItemInfoSelected > .bmMapItemInfoAfter {\n right: auto;\n left: 0;\n width: 100%;\n}\n\n.bmMapItemInfo span {\n z-index: 20;\n transition: all 0.2s ease-in-out;\n}\n\n.bmMapItemInfo span + span {\n margin-top: 5px;\n}\n\n.bmMapItemInfoSelected > span {\n color: #ccc;\n animation: scaleUp 0.2s ease-in-out;\n}\n\n@keyframes scaleUp {\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(0.95);\n }\n\n 100% {\n transform: scale(1);\n }\n}\n\n.bmMapItemInfo span:nth-child(1) {\n font-weight: bold;\n}\n\n.bmMapItemInfo span:nth-child(2) {\n opacity: 0.8;\n}\n\n.bmMapItemSelected {\n position: absolute;\n height: 100%;\n width: 100%;\n overflow: hidden;\n z-index: 4;\n}\n\n.bmMapItemSelected::before {\n content: \" \";\n position: absolute;\n height: 100%;\n width: 100%;\n background: linear-gradient(\n 90deg,\n transparent,\n #ff3f99,\n #3e88ff,\n transparent\n );\n /* transform: scale(5); */\n animation: rotation_9018 3000ms infinite linear;\n filter: blur(9px);\n}\n\n@keyframes rotation_9018 {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.bmMapItemSelectedContent {\n position: absolute;\n height: calc(100% - 6px);\n width: calc(100% - 6px);\n top: 3px;\n left: 3px;\n background-color: #16182a;\n}\n\n.bmMapItemSelectedContent::before {\n content: \" \";\n height: 28px;\n width: 8px;\n position: absolute;\n background: white;\n left: 50%;\n top: 50%;\n transform: translateX(-50%) translateY(-50%);\n filter: blur(12px);\n}\n\n.bmBench {\n width: 100%;\n /* height: 300px; */\n padding: 25px 0;\n box-sizing: border-box;\n}\n\n.bmBenchBox {\n font-size: 0;\n /* margin-top: 5px; */\n position: relative;\n display: flex;\n justify-content: center;\n}\n\n.bmBenchImg {\n /* width: 100%;\n height: 285px; */\n /* width: 100%; */\n height: 100%;\n border-radius: 6px;\n}\n\n.bmBenchTrailUpper {\n position: absolute;\n /* height: 285px; */\n height: 100%;\n width: 100%;\n z-index: 20;\n left: 0;\n top: 0;\n}\n\n.bmBenchTrailUpperCursorTap {\n position: absolute;\n height: 2vh;\n width: 2vh;\n background-color: rgba(255, 255, 255, 0.8);\n border-radius: 50%;\n left: 30%;\n top: 0;\n animation: bmBenchTrailUpperCursorTapAnimation 0.75s linear 0s 1;\n}\n\n@keyframes bmBenchTrailUpperCursorTapAnimation {\n 0% {\n transform: scale(1);\n }\n 25% {\n transform: scale(1);\n opacity: 1;\n }\n 40% {\n transform: scale(0.6);\n opacity: 0.6;\n }\n 50% {\n transform: scale(0.6);\n opacity: 0.6;\n }\n 55% {\n transform: scale(1);\n opacity: 1;\n }\n 100% {\n transform: scale(1);\n }\n}\n\n.bmBenchTrailUpperCursorSwipe {\n position: absolute;\n height: 2vh;\n width: 2vh;\n background-color: rgba(255, 255, 255, 0.8);\n border-radius: 50%;\n transition: all 1s;\n}\n\n.bmBenchTrailUpperCursorSwipe2 {\n height: 1.5vh;\n width: 1.5vh;\n transition: all 1s 0.05s;\n}\n\n.bmBenchTrailUpperCursorSwipe3 {\n height: 1vh;\n width: 1vh;\n transition: all 1s 0.1s;\n}\n\n.bmBenchTrailUpperCursorPress {\n position: absolute;\n height: 2vh;\n width: 2vh;\n background-color: rgba(255, 255, 255, 0.8);\n border-radius: 50%;\n left: 30%;\n top: 0;\n animation: bmBenchTrailUpperCursorPressAnimation 2s linear 0s 1;\n}\n\n@keyframes bmBenchTrailUpperCursorPressAnimation {\n 0% {\n transform: scale(1);\n }\n 12% {\n transform: scale(1);\n opacity: 1;\n }\n 21% {\n transform: scale(0.6);\n opacity: 0.6;\n }\n 70% {\n transform: scale(0.6);\n opacity: 0.6;\n }\n 73% {\n transform: scale(1);\n opacity: 1;\n }\n 100% {\n transform: scale(1);\n }\n}\n\n.bmBenchTrailUpperCursor {\n position: absolute;\n height: 2vh;\n width: 2vh;\n background-color: rgba(255, 255, 255, 0.6);\n /* border: 1vh solid rgba(255, 255, 255, 0.6); */\n border-radius: 50%;\n left: 30%;\n top: 0;\n pointer-events: none;\n animation: bmBenchTrailUpperCursorAnimation 1s linear 0s 1;\n box-sizing: border-box;\n}\n\n@keyframes bmBenchTrailUpperCursorAnimation {\n 0% {\n border: 1vh solid rgba(255, 255, 255, 0.4);\n }\n 40% {\n border: 0vh solid rgba(255, 255, 255, 0.4);\n }\n 100% {\n border: 0vh solid rgba(255, 255, 255, 0.4);\n }\n}\n\n.bmInfo {\n min-height: 126px;\n border-bottom: 1px solid #444358;\n padding-bottom: 15px;\n}\n\n.bmInfoNotSelected,\n.bmInfoOneSelected {\n padding: 0 15px 0 25px;\n}\n\n.bmInfoNsTitle,\n.bmInfoOsTitle {\n display: flex;\n justify-content: space-between;\n align-items: center;\n height: 80px;\n}\n\n.bmInfoNsInfo,\n.bmInfoOsInfo {\n display: flex;\n flex-direction: column;\n}\n\n.bmInfoNsInfo > span:nth-child(1),\n.bmInfoOsInfo > span:nth-child(1) {\n /* font-weight: bold; */\n font-size: 18px;\n display: flex;\n align-items: center;\n /* justify-content: center; */\n}\n\n.bmInfoNsInfo > span:nth-child(2),\n.bmInfoOsInfo > span:nth-child(2) {\n font-size: 12px;\n opacity: 0.4;\n margin-top: 10px;\n /* padding-bottom: 15px; */\n letter-spacing: 1px;\n font-weight: lighter;\n}\n\n.bmInfoNsChart {\n height: 50px;\n width: 200px;\n}\n\n.bmInfoOsImg {\n background-image: url(../../assets/benchImage.png);\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n height: 100%;\n width: 120px;\n}\n\n.bmInfoOsImgA3NF-01 {\n background-image: url(../../assets/bench_img/a3nf_01.jpg) !important;\n}\n\n.bmInfoOsImgA3NF-02 {\n background-image: url(../../assets/bench_img/a3nf_02.jpg) !important;\n}\n\n.bmInfoOsImgB9PA-01 {\n background-image: url(../../assets/bench_img/B9PA_01.jpg) !important;\n}\n\n.bmInfoOsImgB9PA-02 {\n background-image: url(../../assets/bench_img/B9PA_01.jpg) !important;\n}\n\n.bmInfoOsImgB9PA-04 {\n background-image: url(../../assets/bench_img/B9PA_04.jpg) !important;\n}\n\n.bmInfoOsImgCBEV-01 {\n background-image: url(../../assets/bench_img/CBEV_01.jpg) !important;\n}\n\n.bmInfoOsImgQ3NF-01 {\n background-image: url(../../assets/bench_img/Q3nf_01.jpg) !important;\n}\n\n.bmInfoOsImgH-JP-02 {\n background-image: url(../../assets/bench_img/meb-jp2.jpg) !important;\n}\n\n.bmInfoOsImgP-CN-01 {\n background-image: url(../../assets/bench_img/MEB-P-CN_01.jpg) !important;\n}\n\n.bmInfoOsImgH-CN-01 {\n background-image: url(../../assets/bench_img/meb-H_CN_01.jpg) !important;\n}\n\n.bmInfoOsImgP-TW-01 {\n background-image: url(../../assets/bench_img/meb-h-CN_02.jpg) !important;\n}\n\n.bmInfoOsImgH-JP-01 {\n background-image: url(../../assets/bench_img/meb-jp1.jpg) !important;\n}\n\n.bmInfoOsImgD5 {\n background-image: url(../../assets/bench_img/Q7PA_01.jpg) !important;\n}\n\n.bmInfoOsImgQ6-01 {\n background-image: url(../../assets/bench_img/Q6-01.jpg) !important;\n}\n\n.bmInfoOsImgQ6-02 {\n background-image: url(../../assets/bench_img/Q6-02.jpg) !important;\n}\n\n.bmInfoNsTag,\n.bmInfoOsTag {\n display: flex;\n padding: 10px 0;\n}\n\n.bmInfoTagItem {\n height: 26px;\n padding: 4px 14px;\n background-color: #25293c;\n font-size: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 13px;\n box-sizing: border-box;\n color: #d0cece;\n margin-right: 10px;\n cursor: pointer;\n user-select: none;\n}\n\n.bmInfoTagItem:hover {\n background-color: #2d3249;\n}\n\n.bmInfoTagItem:active {\n background-color: #333a53;\n}\n\n.bmInfoMsSlide {\n height: 120px;\n width: 200px;\n /* background-color: #3e88ff; */\n background-image: url(../../assets/benchImage.png);\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n cursor: pointer;\n position: relative;\n}\n\n.bmInfoMsSlideName {\n position: absolute;\n background-color: rgba(23, 25, 43, 0.5);\n font-size: 12px;\n padding: 1px 8px;\n border-radius: 9px;\n left: 3px;\n top: 3px;\n box-sizing: border-box;\n /* text-align: center; */\n backdrop-filter: blur(1px);\n text-shadow: 0 0 10px #000;\n display: flex;\n justify-content: center;\n align-items: center;\n user-select: none;\n}\n\n.bmInfoMsSlideNameStatus {\n float: right;\n}\n\n.bmInfoMsSlideNameStatus,\n.bmInfoMsSlideNameStatus4 {\n height: 12px;\n width: 12px;\n border: 3px solid #b1b3b8;\n border-radius: 50%;\n box-sizing: border-box;\n margin-right: 6px;\n}\n\n.bmInfoMsSlideNameStatus2,\n.bmInfoMsSlideNameStatus3 {\n border: 3px solid #95d475;\n}\n\n/* .bmInfoMsSlideNameStatus4 {\n border: 3px solid #f89898;\n} */\n\n.bmInfoMsSlideNameStatus5,\n.bmInfoMsSlideNameStatus6 {\n border: 3px solid #79bbff;\n}\n\n.bmInfoMultipleSelected {\n position: relative;\n padding: 4px 14px;\n}\n\n.bmInfoMsPagination {\n position: absolute;\n z-index: 10;\n left: 50%;\n /* top: 60px; */\n height: 16px;\n width: auto;\n /* padding: 0 10px; */\n border-radius: 10px;\n transform: translateX(-50%);\n background-color: rgba(255, 255, 255, 0.3);\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.bmInfoMsPagination :deep() span:nth-child(1) {\n margin-left: 10px;\n}\n\n.bmInfoMsPagination :deep() span:last-child {\n margin-right: 10px;\n}\n\n.bmBtn {\n padding: 15px 15px 15px 25px;\n display: flex;\n align-items: center;\n}\n\n.bmBtnItem {\n cursor: pointer;\n height: 24px;\n width: 24px;\n border-radius: 3px;\n margin-right: 20px;\n transition: all 0.2s;\n color: #aaa;\n}\n\n/* .bmBtnItem :deep() path {\n color: #aaa;\n} */\n\n.bmBtnItem:hover {\n background-color: rgba(255, 255, 255, 0.2);\n filter: brightness(1.5);\n}\n\n.bmBtnItem:active {\n background-color: rgba(255, 255, 255, 0.3);\n}\n\n.bmBtnItemMonitor,\n.bmBtnMapLocation {\n background-image: linear-gradient(\n 60deg,\n rgb(253 46 91 / 70%) 40%,\n rgb(254 129 130 / 70%)\n );\n color: #ccc;\n}\n\n.bmBtnItemSelectAll {\n /* position: relative; */\n margin-right: 20px;\n display: flex;\n align-items: center;\n}\n\n.bmBtnItemSelectAll > .bmBtnItem {\n margin-right: 5px;\n}\n\n.bmBtnItemSelectAllNum {\n /* position: absolute; */\n /* right: 20px; */\n font-size: 12px;\n color: rgba(226, 228, 243, 0.6);\n}\n\n.bmBtnItemActive {\n filter: drop-shadow(0 0 2px rgb(255, 255, 255)) brightness(1.5);\n font-size: 20px;\n}\n\n.bmLog {\n padding: 5px 25px 20px 25px;\n}\n\n.bmLogBox {\n padding: 15px;\n border: 2px solid #31344a;\n border-radius: 17px;\n box-sizing: border-box;\n background-color: #31344a80;\n /* max-height: 200px; */\n height: 200px;\n overflow-y: scroll;\n /* max-height: 200px; */\n}\n\n.bmLogItem {\n line-height: 22px;\n margin: 6px 0px;\n padding: 0 6px;\n width: 100%;\n box-sizing: border-box;\n font-size: 14px;\n word-wrap: break-word;\n}\n.bmLogItemDebug {\n color: rgb(115, 201, 255);\n}\n.bmLogItemInfo {\n color: rgb(81, 230, 93);\n}\n.bmLogItemWarning {\n color: rgb(228, 230, 81);\n}\n.bmLogItemError {\n color: rgb(255, 113, 113);\n}\n/* .origin-basic {\n padding: 15px 20px;\n color: #fff;\n font-size: 12px;\n} */\n.origin-basic div {\n margin-bottom: 5px;\n}\n.origin-basic div span {\n margin-right: 12px;\n}\n.origin-basic h2 {\n cursor: pointer;\n font-size: 14px;\n margin-bottom: 10px;\n}\n.origin-map {\n background-color: rgba(117, 117, 117, 0.8);\n}\n.ready {\n color: #65c94c00 !important;\n font-size: 30px;\n}\n.running {\n color: #478bc300 !important;\n font-size: 30px;\n}\n.occupied {\n color: #478bc300 !important;\n font-size: 30px;\n}\n.offline {\n color: #cdd0cf00 !important;\n font-size: 30px;\n}\n/*.offline {\n color: red !important;\n font-size: 30px;\n}*/\n.bmInfoMsSlideNameStatus.ready {\n color: #65c94c !important;\n border: 3px solid #65c94c;\n font-size: 30px;\n}\n.bmInfoMsSlideNameStatus.occupied {\n color: #478bc3 !important;\n border: 3px solid #478bc3;\n font-size: 30px;\n}\n.bmInfoMsSlideNameStatus.offline {\n color: #cdd0cf !important;\n border: 3px solid #cdd0cf;\n font-size: 30px;\n}\n.bmInfoMsSlideNameStatus.offline {\n color: red !important;\n border: 3px solid red;\n font-size: 30px;\n}\n</style>\n\n<style scoped>\n/* .benchMapBox {\n margin-top: 30px;\n} */\n\n.benchMapBox :deep() .el-scrollbar__bar {\n display: none;\n}\n\n.bmContent {\n background-image: linear-gradient(60deg, #16182a 30%, #2d3049);\n border-radius: 10px;\n /* height: 1800px; */\n margin-top: 30px;\n margin-bottom: 30px;\n min-height: 426px;\n}\n\n.bmMap {\n /* height: 500px; */\n width: 100%;\n /* padding: 5px 10px; */\n box-sizing: border-box;\n}\n\n.bmMap\n :deep()\n .el-radio-button__original-radio:checked\n + .el-radio-button__inner {\n background-color: #474c79;\n}\n.bmMap\n :deep()\n .el-radio-button__original-radio:checked\n + .el-radio-button__inner\n span {\n color: #fff;\n}\n.bmMap :deep() .el-radio-button__inner {\n background-color: #383c6b;\n border: none;\n box-shadow: none;\n}\n.bmMap :deep() .el-radio-button__inner span {\n color: #ccc;\n}\n.bmMap :deep() .el-radio-button__inner span:hover {\n color: #eee;\n}\n\n.bmMapImage {\n position: relative;\n width: 100%;\n\n /* border: 1px solid #fff; */\n background-color: rgba(255, 255, 255, 0.04);\n border-radius: 6px;\n}\n\n.bmMapItem {\n position: absolute;\n height: 30px;\n width: 30px;\n cursor: pointer;\n}\n\n.bmMapItemNormal {\n position: absolute;\n height: 100%;\n width: 100%;\n background-color: #16182a;\n /* box-shadow: 0 0 0 3px #393e6d inset; */\n box-sizing: border-box;\n z-index: 2;\n}\n\n.bmMapItemInfo {\n position: absolute;\n height: 233%;\n width: 120px;\n box-sizing: border-box;\n padding: 3px;\n display: flex;\n justify-content: center;\n align-items: flex-start;\n flex-direction: column;\n font-size: 12px;\n z-index: 6;\n user-select: none;\n /* background: #183153; */\n overflow: hidden;\n border: none;\n color: #ccc;\n border-radius: 10px;\n left: 30px;\n padding-left: 10px;\n background: rgba(117, 117, 117, 0.8);\n}\n\n.bmMapItemInfoWater {\n position: absolute;\n width: 120px;\n box-sizing: border-box;\n padding: 3px;\n display: flex;\n justify-content: center;\n align-items: flex-start;\n flex-direction: column;\n font-size: 12px;\n z-index: 6;\n user-select: none;\n /* background: #183153; */\n overflow: hidden;\n border: none;\n color: #ccc;\n border-radius: 10px;\n left: 30px;\n padding-left: 10px;\n background: rgba(117, 117, 117, 0.8);\n}\n\n.bmMapItemInfoAfter {\n width: 0%;\n height: 100%;\n background: rgba(117, 117, 117, 0.8);\n position: absolute;\n transition: all 0.2s ease-in-out;\n right: 0;\n}\n\n.bmMapItemInfoSelected > .bmMapItemInfoAfter {\n right: auto;\n left: 0;\n width: 100%;\n}\n\n.bmMapItemInfo span {\n z-index: 20;\n transition: all 0.2s ease-in-out;\n}\n\n.bmMapItemInfo span + span {\n margin-top: 5px;\n}\n\n.bmMapItemInfoSelected > span {\n color: #ccc;\n animation: scaleUp 0.2s ease-in-out;\n}\n\n@keyframes scaleUp {\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(0.95);\n }\n\n 100% {\n transform: scale(1);\n }\n}\n\n.bmMapItemInfo span:nth-child(1) {\n font-weight: bold;\n}\n\n.bmMapItemInfo span:nth-child(2) {\n opacity: 0.8;\n}\n\n.bmMapItemSelected {\n position: absolute;\n height: 100%;\n width: 100%;\n overflow: hidden;\n z-index: 4;\n}\n\n.bmMapItemSelected::before {\n content: \" \";\n position: absolute;\n height: 100%;\n width: 100%;\n background: linear-gradient(\n 90deg,\n transparent,\n #ff3f99,\n #3e88ff,\n transparent\n );\n /* transform: scale(5); */\n animation: rotation_9018 3000ms infinite linear;\n filter: blur(9px);\n}\n\n@keyframes rotation_9018 {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.bmMapItemSelectedContent {\n position: absolute;\n height: calc(100% - 6px);\n width: calc(100% - 6px);\n top: 3px;\n left: 3px;\n background-color: #16182a;\n}\n\n.bmMapItemSelectedContent::before {\n content: \" \";\n height: 28px;\n width: 8px;\n position: absolute;\n background: white;\n left: 50%;\n top: 50%;\n transform: translateX(-50%) translateY(-50%);\n filter: blur(12px);\n}\n\n.bmBench {\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n}\n\n.bmBenchBox {\n font-size: 0;\n /* margin-top: 5px; */\n position: relative;\n display: flex;\n justify-content: center;\n background-color: #000;\n height: 100%;\n}\n\n.bmBenchImg {\n /* width: 100%;\n height: 285px; */\n width: 100%;\n background-color: #000;\n /* padding: 80px; */\n height: 100%;\n border-radius: 6px;\n height: 100%;\n}\n\n.bmBenchTrailUpper {\n position: absolute;\n /* height: 285px; */\n height: 100%;\n width: 100%;\n z-index: 20;\n left: 0;\n top: 0;\n}\n\n.bmBenchTrailUpperCursorTap {\n position: absolute;\n height: 2vh;\n width: 2vh;\n background-color: rgba(255, 255, 255, 0.8);\n border-radius: 50%;\n left: 30%;\n top: 0;\n animation: bmBenchTrailUpperCursorTapAnimation 0.75s linear 0s 1;\n}\n\n@keyframes bmBenchTrailUpperCursorTapAnimation {\n 0% {\n transform: scale(1);\n }\n 25% {\n transform: scale(1);\n opacity: 1;\n }\n 40% {\n transform: scale(0.6);\n opacity: 0.6;\n }\n 50% {\n transform: scale(0.6);\n opacity: 0.6;\n }\n 55% {\n transform: scale(1);\n opacity: 1;\n }\n 100% {\n transform: scale(1);\n }\n}\n\n.bmBenchTrailUpperCursorSwipe {\n position: absolute;\n height: 2vh;\n width: 2vh;\n background-color: rgba(255, 255, 255, 0.8);\n border-radius: 50%;\n transition: all 1s;\n}\n\n.bmBenchTrailUpperCursorSwipe2 {\n height: 1.5vh;\n width: 1.5vh;\n transition: all 1s 0.05s;\n}\n\n.bmBenchTrailUpperCursorSwipe3 {\n height: 1vh;\n width: 1vh;\n transition: all 1s 0.1s;\n}\n\n.bmBenchTrailUpperCursorPress {\n position: absolute;\n height: 2vh;\n width: 2vh;\n background-color: rgba(255, 255, 255, 0.8);\n border-radius: 50%;\n left: 30%;\n top: 0;\n animation: bmBenchTrailUpperCursorPressAnimation 2s linear 0s 1;\n}\n\n@keyframes bmBenchTrailUpperCursorPressAnimation {\n 0% {\n transform: scale(1);\n }\n 12% {\n transform: scale(1);\n opacity: 1;\n }\n 21% {\n transform: scale(0.6);\n opacity: 0.6;\n }\n 70% {\n transform: scale(0.6);\n opacity: 0.6;\n }\n 73% {\n transform: scale(1);\n opacity: 1;\n }\n 100% {\n transform: scale(1);\n }\n}\n\n.bmBenchTrailUpperCursor {\n position: absolute;\n height: 2vh;\n width: 2vh;\n background-color: rgba(255, 255, 255, 0.6);\n /* border: 1vh solid rgba(255, 255, 255, 0.6); */\n border-radius: 50%;\n left: 30%;\n top: 0;\n pointer-events: none;\n animation: bmBenchTrailUpperCursorAnimation 1s linear 0s 1;\n box-sizing: border-box;\n}\n\n@keyframes bmBenchTrailUpperCursorAnimation {\n 0% {\n border: 1vh solid rgba(255, 255, 255, 0.4);\n }\n 40% {\n border: 0vh solid rgba(255, 255, 255, 0.4);\n }\n 100% {\n border: 0vh solid rgba(255, 255, 255, 0.4);\n }\n}\n\n.bmInfo {\n min-height: 126px;\n border-bottom: 1px solid #444358;\n padding-bottom: 15px;\n}\n\n.bmInfoNotSelected,\n.bmInfoOneSelected {\n padding: 0 15px 0 25px;\n}\n\n.bmInfoNsTitle,\n.bmInfoOsTitle {\n display: flex;\n justify-content: space-between;\n align-items: center;\n height: 80px;\n}\n\n.bmInfoNsInfo,\n.bmInfoOsInfo {\n display: flex;\n flex-direction: column;\n}\n\n.bmInfoNsInfo > span:nth-child(1),\n.bmInfoOsInfo > span:nth-child(1) {\n /* font-weight: bold; */\n font-size: 18px;\n display: flex;\n align-items: center;\n /* justify-content: center; */\n}\n\n.bmInfoNsInfo > span:nth-child(2),\n.bmInfoOsInfo > span:nth-child(2) {\n font-size: 12px;\n opacity: 0.4;\n margin-top: 10px;\n /* padding-bottom: 15px; */\n letter-spacing: 1px;\n font-weight: lighter;\n}\n\n.bmInfoNsChart {\n height: 50px;\n width: 200px;\n}\n\n.bmInfoOsImg {\n background-image: url(../../assets/benchImage.png);\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n height: 100%;\n width: 120px;\n}\n\n.bmInfoOsImgA3NF-01 {\n background-image: url(../../assets/bench_img/a3nf_01.jpg) !important;\n}\n\n.bmInfoOsImgA3NF-02 {\n background-image: url(../../assets/bench_img/a3nf_02.jpg) !important;\n}\n\n.bmInfoOsImgB9PA-01 {\n background-image: url(../../assets/bench_img/B9PA_01.jpg) !important;\n}\n\n.bmInfoOsImgB9PA-02 {\n background-image: url(../../assets/bench_img/B9PA_01.jpg) !important;\n}\n\n.bmInfoOsImgB9PA-04 {\n background-image: url(../../assets/bench_img/B9PA_04.jpg) !important;\n}\n\n.bmInfoOsImgCBEV-01 {\n background-image: url(../../assets/bench_img/CBEV_01.jpg) !important;\n}\n\n.bmInfoOsImgQ3NF-01 {\n background-image: url(../../assets/bench_img/Q3nf_01.jpg) !important;\n}\n\n.bmInfoOsImgH-JP-02 {\n background-image: url(../../assets/bench_img/meb-jp2.jpg) !important;\n}\n\n.bmInfoOsImgP-CN-01 {\n background-image: url(../../assets/bench_img/MEB-P-CN_01.jpg) !important;\n}\n\n.bmInfoOsImgH-CN-01 {\n background-image: url(../../assets/bench_img/meb-H_CN_01.jpg) !important;\n}\n\n.bmInfoOsImgP-TW-01 {\n background-image: url(../../assets/bench_img/meb-h-CN_02.jpg) !important;\n}\n\n.bmInfoOsImgH-JP-01 {\n background-image: url(../../assets/bench_img/meb-jp1.jpg) !important;\n}\n\n.bmInfoOsImgD5 {\n background-image: url(../../assets/bench_img/Q7PA_01.jpg) !important;\n}\n\n.bmInfoOsImgQ6-01 {\n background-image: url(../../assets/bench_img/Q6-01.jpg) !important;\n}\n\n.bmInfoOsImgQ6-02 {\n background-image: url(../../assets/bench_img/Q6-02.jpg) !important;\n}\n\n.bmInfoNsTag,\n.bmInfoOsTag {\n display: flex;\n padding: 10px 0;\n}\n\n.bmInfoTagItem {\n height: 26px;\n padding: 4px 14px;\n background-color: #25293c;\n font-size: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 13px;\n box-sizing: border-box;\n color: #d0cece;\n margin-right: 10px;\n cursor: pointer;\n user-select: none;\n}\n\n.bmInfoTagItem:hover {\n background-color: #2d3249;\n}\n\n.bmInfoTagItem:active {\n background-color: #333a53;\n}\n\n.bmInfoMsSlide {\n height: 120px;\n width: 200px;\n /* background-color: #3e88ff; */\n background-image: url(../../assets/benchImage.png);\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n cursor: pointer;\n position: relative;\n}\n\n.bmInfoMsSlideName {\n position: absolute;\n background-color: rgba(23, 25, 43, 0.5);\n font-size: 12px;\n padding: 1px 8px;\n border-radius: 9px;\n left: 3px;\n top: 3px;\n box-sizing: border-box;\n /* text-align: center; */\n backdrop-filter: blur(1px);\n text-shadow: 0 0 10px #000;\n display: flex;\n justify-content: center;\n align-items: center;\n user-select: none;\n}\n\n.bmInfoMsSlideNameStatus {\n float: right;\n}\n\n.bmInfoMsSlideNameStatus,\n.bmInfoMsSlideNameStatus4 {\n height: 12px;\n width: 12px;\n border: 3px solid #b1b3b8;\n border-radius: 50%;\n box-sizing: border-box;\n margin-right: 6px;\n}\n\n.bmInfoMsSlideNameStatus2,\n.bmInfoMsSlideNameStatus3 {\n border: 3px solid #95d475;\n}\n\n/* .bmInfoMsSlideNameStatus4 {\n border: 3px solid #f89898;\n} */\n\n.bmInfoMsSlideNameStatus5,\n.bmInfoMsSlideNameStatus6 {\n border: 3px solid #79bbff;\n}\n\n.bmInfoMultipleSelected {\n position: relative;\n padding: 4px 14px;\n}\n\n.bmInfoMsPagination {\n position: absolute;\n z-index: 10;\n left: 50%;\n /* top: 60px; */\n height: 16px;\n width: auto;\n /* padding: 0 10px; */\n border-radius: 10px;\n transform: translateX(-50%);\n background-color: rgba(255, 255, 255, 0.3);\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.bmInfoMsPagination :deep() span:nth-child(1) {\n margin-left: 10px;\n}\n\n.bmInfoMsPagination :deep() span:last-child {\n margin-right: 10px;\n}\n\n.bmBtn {\n padding: 15px 15px 15px 25px;\n display: flex;\n align-items: center;\n}\n\n.bmBtnItem {\n cursor: pointer;\n height: 24px;\n width: 24px;\n border-radius: 3px;\n margin-right: 20px;\n transition: all 0.2s;\n color: #aaa;\n}\n\n/* .bmBtnItem :deep() path {\n color: #aaa;\n} */\n\n.bmBtnItem:hover {\n background-color: rgba(255, 255, 255, 0.2);\n filter: brightness(1.5);\n}\n\n.bmBtnItem:active {\n background-color: rgba(255, 255, 255, 0.3);\n}\n\n.bmBtnItemMonitor,\n.bmBtnMapLocation {\n background-image: linear-gradient(\n 60deg,\n rgb(253 46 91 / 70%) 40%,\n rgb(254 129 130 / 70%)\n );\n color: #ccc;\n}\n\n.bmBtnItemSelectAll {\n /* position: relative; */\n margin-right: 20px;\n display: flex;\n align-items: center;\n}\n\n.bmBtnItemSelectAll > .bmBtnItem {\n margin-right: 5px;\n}\n\n.bmBtnItemSelectAllNum {\n /* position: absolute; */\n /* right: 20px; */\n font-size: 12px;\n color: rgba(226, 228, 243, 0.6);\n}\n\n.bmBtnItemActive {\n filter: drop-shadow(0 0 2px rgb(255, 255, 255)) brightness(1.5);\n font-size: 20px;\n}\n\n.bmLog {\n padding: 5px 25px 20px 25px;\n}\n\n.bmLogBox {\n padding: 15px;\n border: 2px solid #31344a;\n border-radius: 17px;\n box-sizing: border-box;\n background-color: #31344a80;\n /* max-height: 200px; */\n height: 200px;\n overflow-y: scroll;\n /* max-height: 200px; */\n}\n\n.bmLogItem {\n line-height: 22px;\n margin: 6px 0px;\n padding: 0 6px;\n width: 100%;\n box-sizing: border-box;\n font-size: 14px;\n word-wrap: break-word;\n}\n.bmLogItemDebug {\n color: rgb(115, 201, 255);\n}\n.bmLogItemInfo {\n color: rgb(81, 230, 93);\n}\n.bmLogItemWarning {\n color: rgb(228, 230, 81);\n}\n.bmLogItemError {\n color: rgb(255, 113, 113);\n}\n.origin-basic {\n padding: 15px 20px;\n color: #fff;\n font-size: 12px;\n}\n.origin-basic div {\n margin-bottom: 10px;\n}\n.origin-basic div span {\n margin-right: 12px;\n}\n.origin-basic h2 {\n cursor: pointer;\n font-size: 14px;\n margin-bottom: 10px;\n}\n.originBasicRow {\n display: flex;\n margin-bottom: 0 !important;\n}\n.originBasicRow > div {\n width: 100%;\n}\n.ready {\n color: #65c94c00 !important;\n font-size: 30px;\n}\n.occupied {\n color: #478bc300 !important;\n font-size: 30px;\n}\n.offline {\n color: #cdd0cf00 !important;\n font-size: 30px;\n}\n.offline {\n color: #ff000000 !important;\n font-size: 30px;\n}\n.bmInfoMsSlideNameStatus.ready {\n color: #65c94c !important;\n border: 3px solid #65c94c;\n font-size: 30px;\n}\n.bmInfoMsSlideNameStatus.occupied {\n color: #478bc3 !important;\n border: 3px solid #478bc3;\n font-size: 30px;\n}\n.bmInfoMsSlideNameStatus.offline {\n color: #cdd0cf !important;\n border: 3px solid #cdd0cf;\n font-size: 30px;\n}\n.bmInfoMsSlideNameStatus.offline {\n color: red !important;\n border: 3px solid red;\n font-size: 30px;\n}\n\n.secondScreen {\n width: 26.36vw;\n height: 26.38vh;\n margin-left: 1.56vw;\n margin-bottom: 2.13vh;\n border-radius: 2.08vw;\n overflow: hidden;\n}\n\n.benchBtnActive {\n filter: brightness(5) drop-shadow(0 2px 3px rgb(255, 255, 255));\n}\n\n.grid-item-background{\n height: 20vh;\n width: calc(100% - 10px);\n border-radius: 10px;\n margin: 0 auto 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n}\n.mouse-flow {\n position: absolute;\n z-index: 99999;\n display: flex;\n flex-direction: column;\n width: 100px;\n color: #fff;\n border-radius: 10px;\n background-color: rgba(0, 0, 0, 0.8)\n}\n.mouse-flow-title {\n font-size: 14px;\n}\n.mouse-flow-dep {\n font-size: 12px;\n}\n.mouse-flow-status {\n width: 10px;\n height: 10px;\n float: right;\n border-radius: 100%;\n}\n.ready {\n background-color: #65c94c00 !important;\n}\n.occupied {\n background-color: #478bc300 !important;\n}\n.offline {\n background-color: #cdd0cf00 !important;\n}\n.error {\n background-color: #ff000000 !important;\n}\n</style>"],"mappings":";;;;AAkhBA;AACA;AACA;AACA,OAAAA,OAAA;AACA,OAAAC,IAAA;AACA,OAAAC,SAAA;AACA,OAAAC,QAAA;AACA,OAAAC,cAAA;AACA,OAAAC,WAAA;AACA,OAAAC,SAAA;AACA;AACA,OAAAC,KAAA;AACA,SAAAC,OAAA;AACA,SAAAC,QAAA;AAEA,OAAAC,SAAA;AACA,OAAAC,SAAA;AACA,OAAAC,GAAA;AAEA,SAAAC,SAAA;AACA,OAAAC,aAAA;AAEA,MAAAC,EAAA,OAAAJ,SAAA;AACA,IAAAK,IAAA;AACA,IAAAC,OAAA;AACA,IAAAC,aAAA;AACA,SAAAC,EAAA,MAAAA,EAAA,OAAAA,EAAA;EACA,MAAAC,QAAA,OAAAT,SAAA;EAEAS,QAAA,CAAAC,IAAA,GAAAC,IAAA,CAAAC,GAAA;IACA;EAAA,CACA;EACAN,OAAA,CAAAO,IAAA,CAAAJ,QAAA;AACA;AAEA;EACAK,UAAA;IACAnB,SAAA;IACAN,OAAA;IACAE,SAAA;IACAC,QAAA;IACAC,cAAA;IACAC,WAAA;IACAK,SAAA;IACAI,aAAA;IACAb;EACA;EACAyB,KAAA;IACA;MACAC,UAAA;MACAC,eAAA;MACAC,kBAAA;MACAC,cAAA;MACAC,cAAA;MACAC,kBAAA;MACAC,gBAAA;MACAC,gBAAA;MACAC,eAAA;MACAC,iBAAA;MACAC,oBAAA;MACAC,QAAA;MACAC,QAAA;MACAC,QAAA;MACAC,WAAA;MACAC,UAAA;MACAC,YAAA;MACAC,eAAA;MACAC,UAAA;MACAC,YAAA;MACAC,WAAA;MACAC,cAAA;MACAC,mBAAA;MACAC,YAAA;MACAC,YAAA;MACAC,UAAA;MACAC,aAAA;MACAC,YAAA;MACAC,yBAAA;MACAC,iBAAA;MACAC,eAAA;MACAC,OAAA;MACAC,WAAA;MACAC,YAAA;MACAC,aAAA;MACAC,eAAA;MACAC,gBAAA;MACAC,IAAA,GACA;QACAC,KAAA;QACAC,IAAA;MAEA,GACA;QACAD,KAAA;QACAC,IAAA;MAGA,GACA;QACAD,KAAA;QACAC,IAAA;MAGA,GACA;QACAD,KAAA;QACAC,IAAA;MAGA,GACA;QACAD,KAAA;QACAC,IAAA;MAGA,EACA;MACAC,SAAA,GACA;QACAC,SAAA;QACAC,OAAA;QACAC,OAAA;QACAC,MAAA;QACAC,EAAA;QACAC,MAAA;MACA,GACA;QACAL,SAAA;QACAC,OAAA;QACAC,OAAA;QACAC,MAAA;QACAC,EAAA;QACAC,MAAA;MACA;MACA;MAAA,CACA;;MAEAC,WAAA;MACAC,QAAA;MACAC,OAAA;MACA1B,YAAA;MACA2B,KAAA;MACAC,QAAA;MACAC,eAAA;MACAC,cAAA;MACAC,qBAAA;MACAC,4BAAA;MACAC,QAAA;MACAC,mBAAA;MACAC,SAAA;MACAC,8BAAA;MACAC,8BAAA;MACAC,yBAAA;MACAC,iBAAA;MACAC,YAAA;MACAC,UAAA;QACAC,OAAA;QACAlB,WAAA;QACAC,QAAA;QACAF,MAAA;QACAoB,KAAA;QACA;QACAC,GAAA;QACAC,OAAA;QACAC,QAAA;MACA;MACAC,aAAA;MACAC,gBAAA;MACAC,aAAA;MACAC,wBAAA;MACAC,aAAA;MACAC,gBAAA;MACAC,SAAA;MACAC,WAAA;MACAC,iBAAA;MACAC,eAAA;MACAC,YAAA;MACAC,SAAA;MACAC,IAAA;MACAC,QAAA;MACAC,YAAA;MACAC,kBAAA;MACAC,kBAAA;MACAC,2BAAA;MACAC,kBAAA;MACAC,WAAA;MACAC,cAAA;MACAC,SAAA;MACAC,UAAA;QAAAC,GAAA;MAAA;MACAC,OAAA;MACAC,sBAAA;MACAC,eAAA;MACAC,eAAA;MACAC,eAAA;MACAC,WAAA;MACAC,gBAAA;IACA;EACA;EACAC,QAAA;IACA;IACA;IACA;IACAC,SAAA;MACA,YAAA9E,YAAA,CAAA+E,IAAA;IACA;IACA,GAAAzH,QAAA;MACA0H,MAAA,EAAAC,KAAA;QACA,OAAAA,KAAA,CAAAC,MAAA,CAAAF,MAAA;MACA;MACAG,MAAA,EAAAF,KAAA;QACA,OAAAA,KAAA,CAAAG,SAAA,CAAAC,UAAA;MACA;MACAC,MAAA,EAAAL,KAAA;QACA,OAAAA,KAAA,CAAAG,SAAA,CAAAG,UAAA;MACA;MACAC,WAAA,EAAAP,KAAA;QACA,OAAAA,KAAA,CAAAG,SAAA,CAAAK,eAAA;MACA;MACAC,YAAA,EAAAT,KAAA;QACA,OAAAA,KAAA,CAAAG,SAAA,CAAAO,gBAAA;MACA;MACAC,MAAA,EAAAX,KAAA;QACAY,OAAA,CAAAC,GAAA,CAAAb,KAAA,CAAAG,SAAA,CAAAW,YAAA;QACA,OAAAd,KAAA,CAAAG,SAAA,CAAAW,YAAA;MACA;MACAC,YAAA,EAAAf,KAAA;QACA,OAAAA,KAAA,CAAAC,MAAA,CAAAc,YAAA;MACA;MACAC,QAAA,EAAAhB,KAAA;QACA,OAAAA,KAAA,CAAAC,MAAA,CAAAe,QAAA;MACA;MACAb,SAAA,EAAAH,KAAA;QACA,OAAAA,KAAA,CAAAG,SAAA,CAAAA,SAAA;MACA;MACAc,QAAA,EAAAjB,KAAA;QACA,OAAAA,KAAA,CAAAiB,QAAA,CAAAA,QAAA;MACA;MACAC,QAAA,EAAAlB,KAAA;QACAY,OAAA,CAAAC,GAAA,CAAAb,KAAA,CAAAkB,QAAA,CAAAA,QAAA;QACA,IAAAA,QAAA,GAAAlB,KAAA,CAAAkB,QAAA,CAAAA,QAAA,CAAAC,MAAA,CACAnB,KAAA,CAAAkB,QAAA,CAAAE,YACA;QACAF,QAAA,GAAAA,QAAA,CAAAG,IAAA,EAAAC,EAAA,EAAAC,EAAA,KAAAD,EAAA,CAAAE,EAAA,GAAAD,EAAA,CAAAC,EAAA;QACA,OAAAN,QAAA;MACA;MACAE,YAAA,EAAApB,KAAA;QACA,OAAAA,KAAA,CAAAkB,QAAA,CAAAE,YAAA;MACA;MACAK,QAAA,EAAAzB,KAAA;QACA,OAAAA,KAAA,CAAAyB,QAAA,CAAAA,QAAA;MACA;MACAC,YAAA,EAAA1B,KAAA;QACA,OAAAA,KAAA,CAAAyB,QAAA,CAAAC,YAAA;MACA;MACAC,SAAA,EAAA3B,KAAA;QACA,OAAAA,KAAA,CAAA2B,SAAA,CAAAA,SAAA;MACA;MACAC,cAAA,EAAA5B,KAAA;QACA,OAAAA,KAAA,CAAAyB,QAAA,CAAAI,iBAAA,CAAA7B,KAAA,CAAAyB,QAAA,CAAAK,gBAAA;MACA;MACAC,eAAA,EAAA/B,KAAA;QACA,OAAAA,KAAA,CAAAG,SAAA,CAAA4B,eAAA,CAAAV,IAAA,EAAAW,CAAA,EAAAC,CAAA;UACA,IAAAC,CAAA;UACA,IAAAC,CAAA;UACA,SAAAC,CAAA,MAAAA,CAAA,GAAAJ,CAAA,CAAAK,KAAA,CAAAC,MAAA,EAAAF,CAAA;YACAF,CAAA,IAAAF,CAAA,CAAAK,KAAA,CAAAE,UAAA,CAAAH,CAAA;UACA;UACA,SAAAI,CAAA,MAAAA,CAAA,GAAAP,CAAA,CAAAI,KAAA,CAAAC,MAAA,EAAAE,CAAA;YACAL,CAAA,IAAAF,CAAA,CAAAI,KAAA,CAAAE,UAAA,CAAAC,CAAA;UACA;UACA,OAAAN,CAAA,GAAAC,CAAA;QACA;MACA;MACAN,iBAAA,EAAA7B,KAAA;QACA,OAAAA,KAAA,CAAAyB,QAAA,CAAAI,iBAAA;MACA;MACAY,kBAAA,EAAAzC,KAAA;QACA,OAAAA,KAAA,CAAAyB,QAAA,CAAAgB,kBAAA;MACA;IACA;EACA;EACAC,QAAA;IACA;IACA/J,EAAA,CAAAM,IAAA,GAAAC,IAAA,CAAAC,GAAA;MACA;IAAA,CACA;IACAwJ,MAAA,CAAAC,eAAA,QAAAA,eAAA;IACAD,MAAA,CAAAE,gBAAA,QAAAA,gBAAA;IACAF,MAAA,CAAAG,eAAA,QAAAA,eAAA,CAAAC,IAAA;IACAJ,MAAA,CAAAK,aAAA,QAAAA,aAAA,CAAAD,IAAA;IACAJ,MAAA,CAAAM,aAAA,QAAAA,aAAA,CAAAF,IAAA;IACAJ,MAAA,CAAAO,cAAA,QAAAA,cAAA,CAAAH,IAAA;IACAJ,MAAA,CAAAQ,iBAAA,QAAAA,iBAAA;IACAR,MAAA,CAAAS,YAAA,QAAAA,YAAA;IACAT,MAAA,CAAAU,cAAA,QAAAA,cAAA;IACA,IAAAzK,IAAA;IACA+J,MAAA,CAAAW,eAAA,QAAAA,eAAA,CAAAP,IAAA;IACAJ,MAAA,CAAAY,iBAAA,QAAAA,iBAAA,CAAAR,IAAA;IACAJ,MAAA,CAAAa,gBAAA,QAAAA,gBAAA,CAAAT,IAAA;IACAJ,MAAA,CAAAc,WAAA,QAAAA,WAAA,CAAAV,IAAA;IACAnK,IAAA,CAAA8K,MAAA,CAAAC,QAAA;IACA/K,IAAA,CAAA8K,MAAA,CAAAC,QAAA;MACAC,QAAA;MACAC,SAAA;IACA;IAEAlB,MAAA,CAAAmB,iBAAA,QAAAA,iBAAA;IACA;IACAlL,IAAA,CAAAyG,OAAA,GAAAzG,IAAA,CAAAmL,UAAA,CAAAC,KAAA;MACA;MACA,KAAAN,MAAA,CAAAC,QAAA;MACA,UAAAnE,eAAA;QACA,KAAAA,eAAA;QACAmD,MAAA,CAAAsB,UAAA,CAAAtB,MAAA,CAAAuB,WAAA,EAAAvB,MAAA,CAAAwB,WAAA;MACA;MACA,KAAAC,kBAAA;MACA,IAAAJ,KAAA;QACApD,OAAA,CAAAC,GAAA;QACAjI,IAAA,CAAAyL,eAAA,CAAAzL,IAAA,CAAAyG,OAAA;MACA;IACA;IAEAiF,UAAA;MACA,KAAAZ,MAAA,CAAAC,QAAA;MACA,UAAAnE,eAAA;QACAmD,MAAA,CAAAsB,UAAA,CAAAtB,MAAA,CAAAuB,WAAA,EAAAvB,MAAA,CAAAwB,WAAA;MACA;MACA,KAAAC,kBAAA;IACA;IAEA,KAAAV,MAAA,CAAAC,QAAA;MACAY,QAAA;MACAX,QAAA;MACAC,SAAA;MACAW,SAAA;MACAC,aAAA;MACAC,WAAA;IACA;EACA;EACA,MAAAC,QAAA;IACA/L,IAAA;IACA;IACAgI,OAAA,CAAAC,GAAA,MAAAV,SAAA;IACA,KAAAvE,IAAA,IAAAE,IAAA,QAAAqE,SAAA;IACA,KAAAvE,IAAA,IAAAE,IAAA,QAAAmF,QAAA;IACA,KAAArF,IAAA,IAAAE,IAAA,QAAA6F,SAAA;IACA,IAAAiD,MAAA,GAAAC,QAAA,CAAAC,sBAAA;IACA,IAAAC,KAAA,GAAAC,gBAAA,CAAAJ,MAAA;IACA,IAAAK,KAAA,GAAAC,UAAA,CAAAH,KAAA,CAAAE,KAAA;IACA,IAAAE,MAAA,GAAAD,UAAA,CAAAH,KAAA,CAAAI,MAAA;IACA,IAAAC,KAAA;IACAzC,MAAA,CAAA0C,WAAA,GAAAJ,KAAA,GAAAG,KAAA;IACAzC,MAAA,CAAA2C,YAAA,GAAAH,MAAA,GAAAC,KAAA;IACAG,cAAA,CAAAC,OAAA;IACA;IACApN,OAAA,WAAA6M,KAAA,GAAAG,KAAA,EAAAD,MAAA,GAAAC,KAAA;IACA;IACAd,UAAA;MACA,IAAAmB,OAAA,GAAAZ,QAAA,CAAAa,cAAA;MACAD,OAAA,CAAAV,KAAA,CAAAY,UAAA,IAAAV,KAAA,GAAAA,KAAA,GAAAG,KAAA;MACAK,OAAA,CAAAV,KAAA,CAAAa,SAAA,IAAAT,MAAA,GAAAA,MAAA,GAAAC,KAAA;IACA;IAEAd,UAAA;MACA,IAAAuB,IAAA;MAEA,IAAAC,MAAA,QAAAvG,eAAA;MACA,IAAAuG,MAAA;QACAlF,OAAA,CAAAC,GAAA,WAAAiF,MAAA;QACAhN,aAAA,GAAAgN,MAAA,CAAAxD,MAAA;QACA,SAAAyD,EAAA,MAAAA,EAAA,GAAAD,MAAA,CAAAxD,MAAA,EAAAyD,EAAA;UACA,IAAA7D,CAAA,GAAA8D,IAAA,CAAAC,KAAA,CAAAD,IAAA,CAAAE,SAAA,CAAAH,EAAA;UACA,IAAAvJ,OAAA,GAAAwJ,IAAA,CAAAC,KAAA,CAAAD,IAAA,CAAAE,SAAA,CAAAJ,MAAA,CAAA5D,CAAA;UACAoC,UAAA;YACA1D,OAAA,CAAAC,GAAA,kBAAArE,OAAA;YACA3D,OAAA,CAAAqJ,CAAA,GACAiE,YAAA;cAAA5B,QAAA,EAAA6B,MAAA,CAAA5J,OAAA;YAAA,GACAtD,IAAA,CAAAC,GAAA;cACAyH,OAAA,CAAAC,GAAA,0BAAArE,OAAA;cACAqJ,IAAA,CAAAQ,aAAA,CAAA7J,OAAA,KAAA3D,OAAA,CAAAqJ,CAAA;YACA,GACAoE,KAAA,CAAAC,GAAA;cACA3F,OAAA,CAAAC,GAAA,yBAAArE,OAAA;cACA,KAAAgK,QAAA;gBACAC,OAAA;gBACA;gBACA3G,IAAA;cACA;YACA;UACA,GAAAiG,EAAA;QACA;MACA;IACA;IAEAvN,GAAA,CAAAkO,EAAA,WAAAC,KAAA;MACA,IAAAA,KAAA,CAAAC,MAAA;QACA,KAAA7J,QAAA,CAAA8J,OAAA,CAAAF,KAAA;QACA;QACA,IAAAG,MAAA,CAAAC,IAAA,CAAAJ,KAAA,CAAAC,MAAA,EAAAtE,MAAA;UACA;UACA,IAAA0E,QAAA,GAAAL,KAAA,CAAAC,MAAA,CAAAK,GAAA;UACA;UACA,IAAAN,KAAA,CAAAC,MAAA,CAAAM,UAAA;YACA,KAAAhK,8BAAA;YACA,KAAAF,mBAAA,CAAAmK,IAAA,GAAAH,QAAA;YACA,KAAAhK,mBAAA,CAAAoK,GAAA,GAAAJ,QAAA;YACA1C,UAAA;cACA,KAAAtH,mBAAA,CAAAmK,IAAA,GACA,CAAAH,QAAA,MAAAA,QAAA;cACA,KAAAhK,mBAAA,CAAAoK,GAAA,GACA,CAAAJ,QAAA,MAAAA,QAAA;YACA;YACA1C,UAAA;cACA,KAAApH,8BAAA;YACA;UACA,WAAAyJ,KAAA,CAAAC,MAAA,CAAAM,UAAA;YACA,KAAApK,4BAAA;YACAwH,UAAA;cACA,KAAAxH,4BAAA;YACA;YACA,KAAAE,mBAAA,CAAAmK,IAAA,GACA,UAAAH,QAAA;YACA,KAAAhK,mBAAA,CAAAoK,GAAA,GACA,UAAAJ,QAAA;UACA,WAAAL,KAAA,CAAAC,MAAA,CAAAM,UAAA;YACA,KAAA/J,8BAAA;YACAmH,UAAA;cACA,KAAAnH,8BAAA;YACA;YACA,KAAAH,mBAAA,CAAAmK,IAAA,GAAAH,QAAA;YACA,KAAAhK,mBAAA,CAAAoK,GAAA,GAAAJ,QAAA;UACA,WAAAL,KAAA,CAAAC,MAAA,CAAAM,UAAA;YACA;YACA,IAAAG,QAAA,GAAAV,KAAA,CAAAC,MAAA,CAAAU,SAAA;YACA1G,OAAA,CAAAC,GAAA,kBAAAwG,QAAA;YACA,KAAApK,SAAA,GAAAoK,QAAA;YACA7O,GAAA,CAAA+O,IAAA;UACA;QACA;MACA;MAEA,SAAAxK,QAAA,CAAAuF,MAAA;QACA,KAAAvF,QAAA,CAAAyK,GAAA;MACA;IACA;IACAhP,GAAA,CAAAkO,EAAA,iBAAAC,KAAA;MACA,KAAA5I,aAAA,GAAA4I,KAAA,CAAA5I,aAAA;IACA;IACAvF,GAAA,CAAAkO,EAAA;MACA,KAAA1H,WAAA;MACA,KAAA0E,MAAA,CAAAC,QAAA;MACA,KAAAD,MAAA,CAAAC,QAAA;IACA;IAGA;MACA,KAAArE,sBAAA,GAAAmI,WAAA;QACA,IAAAC,mBAAA,GAAA/E,MAAA,CAAAgF,YAAA,CAAAC,OAAA;QACA,IAAAC,mBAAA,GAAAlF,MAAA,CAAAgF,YAAA,CAAAC,OAAA;QACAF,mBAAA,GAAA1B,IAAA,CAAAC,KAAA,CAAAyB,mBAAA;QACAG,mBAAA,GAAA7B,IAAA,CAAAC,KAAA,CAAA4B,mBAAA;QACA,IAAAH,mBAAA;UACA,SAAAI,MAAA,IAAAJ,mBAAA;YACA,IAAAK,UAAA,GAAAL,mBAAA,CAAAI,MAAA;YACA,IAAAD,mBAAA;cACA,IAAA1N,QAAA,GAAA0N,mBAAA,CAAAC,MAAA;cACA,IAAA3N,QAAA;gBACA,KAAAuJ,MAAA,CAAAC,QAAA;kBACAmE,MAAA,EAAAA,MAAA;kBACA3N,QAAA,EAAAA;gBACA;cACA;YACA;YAEA,KAAAuJ,MAAA,CAAAC,QAAA,2BAAAoE,UAAA;YACA,KAAArE,MAAA,CAAAC,QAAA;cAAAmE,MAAA;cAAAC;YAAA;UACA;QACA;MACA;IACA;EACA;EACAC,OAAA;IACAC,mBAAAzL,OAAA;MACA,KAAAhD,eAAA;MACA,SAAAwH,QAAA;QACA,KAAA0C,MAAA,CAAAC,QAAA;MACA;MACA,KAAAF,WAAA,CAAAjH,OAAA;IACA;IACAuH,WAAAmE,QAAA,EAAAC,QAAA;MACA;MACA,KAAAhJ,UAAA,CAAAC,GAAA;MACA;MACA,IAAAgJ,UAAA,eAAAjJ,UAAA,CAAAC,GAAA;MACA,KAAAD,UAAA,CAAAiJ,UAAA;MACA;MACA,IAAApE,KAAA;MAEA,IAAAqE,SAAA,GAAAC,IAAA,CAAAC,GAAA;MACA,IAAAC,IAAA,GAAAA,CAAA;QACA;QACA,UAAArJ,UAAA,CAAAiJ,UAAA;UACA;QACA;QACA,IAAAE,IAAA,CAAAC,GAAA,KAAAF,SAAA,GAAAF,QAAA,IAAAnE,KAAA;UACAA,KAAA;UACAkE,QAAA,CAAAlE,KAAA;QACA;QACArB,MAAA,CAAA8F,qBAAA,CAAAD,IAAA;MACA;MACAA,IAAA;MACA,OAAAJ,UAAA;IACA;IACA;IACA/D,gBAAA+D,UAAA;MACA,YAAAjJ,UAAA,CAAAiJ,UAAA;IACA;IACAM,qBAAA;IACAC,oBAAA;MACA,KAAAjP,cAAA;MACA,KAAAkB,cAAA;MACA;IACA;;IACAgO,oBAAA;MACA,KAAA9O,gBAAA;MACA,KAAAH,cAAA;IACA;IACAkP,iBAAAC,IAAA;MACAlI,OAAA,CAAAC,GAAA,MAAAtF,WAAA;MACA,KAAAzB,gBAAA;MACA,KAAAD,gBAAA;IACA;IACAkP,qBAAA;MACA,KAAAhP,eAAA;MACA,KAAAC,iBAAA;IACA;IACAgP,gBAAA;MACA,KAAAnP,gBAAA;MACA,IAAA0L,cAAA,CAAAqC,OAAA;QACA,KAAAjO,cAAA;MACA;QACA,KAAAC,kBAAA;MACA;IACA;IACAqP,eAAA;MACA,SAAArH,cAAA,sBAAAA,cAAA;QACA,KAAA8B,MAAA,CAAAC,QAAA;QACA,KAAAgF,mBAAA;QACA,KAAA/O,kBAAA;QACA;MACA;MACA,KAAAA,kBAAA;MACA,KAAAK,oBAAA;IACA;IACAiP,wBAAA;MACA,KAAAtP,kBAAA;MACA,KAAAK,oBAAA;IACA;IACA+I,cAAAxB,EAAA,EAAA2H,IAAA,EAAAC,IAAA;MACAxI,OAAA,CAAAC,GAAA,CAAAW,EAAA;MACA;MACA,KAAA2H,IAAA,IAAAA,IAAA,mBAAAA,IAAA;QACA,KAAA1N,aAAA,GAAA+F,EAAA;QACA,KAAA9F,eAAA,GAAA0N,IAAA;QACA,KAAA1F,MAAA,CAAAC,QAAA;UACA0F,IAAA,EAAA7H,EAAA;UACAoC,QAAA;UACAC,SAAA;QACA;QACA,KAAAlK,cAAA;QACA4L,cAAA,CAAAC,OAAA;QACA,KAAA9B,MAAA,CAAAC,QAAA,4BAAAnC,EAAA;MACA;QACA,IAAAA,EAAA,SAAAA,EAAA;QACA,KAAA/F,aAAA,GAAA+F,EAAA;QACA,KAAA9F,eAAA,GAAA0N,IAAA;QACA,KAAA1F,MAAA,CAAAC,QAAA,8BAAAnC,EAAA;QACA,KAAAkC,MAAA,CAAAC,QAAA;UACAmE,MAAA,EAAAtG,EAAA;UACArH,QAAA,EAAAiP;QACA;QACA,KAAAxP,kBAAA;QACA,KAAA8J,MAAA,CAAAC,QAAA,4BAAAnC,EAAA;QACA+D,cAAA,CAAAC,OAAA;MACA;MAEA,KAAA9B,MAAA,CAAAC,QAAA;MAEA,KAAAjK,cAAA;MAEA,KAAAS,QAAA,GAAAiP,IAAA;IACA;IACAnG,cAAAqG,GAAA;MACA,KAAA3P,cAAA;MACA,KAAAE,gBAAA;MAEA,KAAAO,QAAA,GAAAkP,GAAA,CAAAC,IAAA;MACA,KAAAlP,WAAA,GAAAiP,GAAA,CAAAE,YAAA;MACA;MACA,KAAAjP,YAAA,GAAA+O,GAAA,CAAA1C,MAAA;MACA,KAAApM,eAAA,GAAA8O,GAAA,CAAAG,WAAA;MACA,KAAAhP,UAAA,GAAA6O,GAAA,CAAAnN,MAAA;MACA,KAAAzB,YAAA,GAAA4O,GAAA,CAAAI,QAAA;MACA,KAAAnO,WAAA,GAAA+N,GAAA;MAEA,SAAApH,CAAA,MAAAA,CAAA,QAAAT,QAAA,CAAAa,MAAA,EAAAJ,CAAA;QACA,SAAAT,QAAA,CAAAS,CAAA,EAAAyH,OAAA,IAAAL,GAAA,CAAAK,OAAA;UACA,KAAAhO,gBAAA,GAAAuG,CAAA;UACA;QACA;MACA;MACA;IACA;;IACA0H,aAAA;MACA,KAAAjO,gBAAA;MACA,SAAAA,gBAAA,SAAA8F,QAAA,CAAAa,MAAA;QACA,KAAA3I,cAAA;QACA,KAAAG,gBAAA;MACA;QACA,KAAAyB,WAAA,QAAAkG,QAAA,MAAA9F,gBAAA;QACA,KAAAvB,QAAA,QAAAmB,WAAA,CAAAgO,IAAA;QACA,KAAAlP,WAAA,QAAAkB,WAAA,CAAAiO,YAAA;QACA;QACA,KAAAjP,YAAA,QAAAgB,WAAA,CAAAqL,MAAA;QACA,KAAApM,eAAA,QAAAe,WAAA,CAAAkO,WAAA;QACA,KAAAhP,UAAA,QAAAc,WAAA,CAAAY,MAAA;QACA,KAAAzB,YAAA,QAAAa,WAAA,CAAAmO,QAAA;QACA,KAAA5P,gBAAA;QACA,KAAAD,gBAAA;MACA;IACA;IACAqJ,eAAA1B,EAAA;MACA,IAAA8H,GAAA,QAAA3H,SAAA,CAAAkI,IAAA,CAAA3H,CAAA,IAAAA,CAAA,CAAAV,EAAA,IAAAA,EAAA;MACA,KAAAzH,eAAA;MACA,KAAAC,iBAAA;MACA,KAAAwB,YAAA,GAAA8N,GAAA;MACA1I,OAAA,CAAAC,GAAA,CAAAyI,GAAA;IACA;IACAQ,oBAAA;MACA,KAAApQ,cAAA;MACA,KAAAC,cAAA;MACA,KAAA8H,QAAA;IACA;IACAsI,wBAAA;MACA,KAAArQ,cAAA;MACA,KAAAE,kBAAA;MACA,KAAA8J,MAAA,CAAAC,QAAA;IACA;IACAJ,kBAAA;MACA,IAAAyG,KAAA,GAAAnF,QAAA,CAAAC,sBAAA;MACA,SAAAmF,KAAA,MAAAA,KAAA,GAAAD,KAAA,CAAA1H,MAAA,EAAA2H,KAAA;QACAD,KAAA,CAAAC,KAAA,EAAAlF,KAAA,CAAAmF,UAAA;QACA,IAAArO,KAAA,GAAAmO,KAAA,CAAAC,KAAA,EAAAnF,sBAAA;QACAlE,OAAA,CAAAC,GAAA,gBAAAhF,KAAA,IAAAsO,WAAA;QACA,IAAAC,SAAA,QAAAjK,SAAA,CAAA0J,IAAA,CACA5H,CAAA,IAAAoI,QAAA,CAAApI,CAAA,CAAAT,EAAA,KAAA6I,QAAA,CAAAxO,KAAA,IAAAsO,WAAA,CACA;QACAC,SAAA,CAAAE,QAAA;QACAF,SAAA,CAAAG,KAAA;MACA;IACA;IACAC,QAAA;MACA,KAAA9G,MAAA,CAAAC,QAAA;MACA,KAAAD,MAAA,CAAAC,QAAA;QAAA7D,IAAA;QAAA2K,KAAA;MAAA;MACA,KAAA/G,MAAA,CAAAC,QAAA;QAAA7D,IAAA;QAAA2K,KAAA;MAAA;MACA,KAAA/G,MAAA,CAAAC,QAAA;QAAA7D,IAAA;QAAA2K,KAAA;MAAA;MACA,KAAA/G,MAAA,CAAAC,QAAA;QAAA7D,IAAA;QAAA2K,KAAA;MAAA;MACA,KAAA/G,MAAA,CAAAC,QAAA;QAAA7D,IAAA;QAAA2K,KAAA;MAAA;MACA,KAAA/G,MAAA,CAAAC,QAAA;QAAA7D,IAAA;QAAA2K,KAAA;MAAA;MACA,KAAA/G,MAAA,CAAAC,QAAA;IACA;IACA+G,OAAAC,CAAA;MACA/J,OAAA,CAAAC,GAAA,kBAAA8J,CAAA,CAAAC,MAAA,CAAAC,SAAA;MACA,IACAC,KAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAN,CAAA,CAAAC,MAAA,CAAAC,SAAA,yBACA;QACA,KAAAnH,MAAA,CAAAC,QAAA;MACA;IACA;IACAuH,QAAAT,KAAA;MACA,KAAAlR,UAAA,GAAAkR,KAAA;MACA,KAAA/G,MAAA,CAAAC,QAAA;QAAA7D,IAAA;QAAA2K,KAAA,EAAAA;MAAA;MACA,KAAA/G,MAAA,CAAAC,QAAA;IACA;IACAwH,eAAA;MACA,IACA,KAAAC,KAAA,CAAAC,SAAA,CAAAC,GAAA,CAAAC,QAAA,CAAAC,KAAA,CAAAZ,MAAA,KACA,KAAAQ,KAAA,CAAAK,QAAA,CAAAH,GAAA,CAAAC,QAAA,CAAAC,KAAA,CAAAZ,MAAA,GACA;QACA;MACA;MACA,KAAAlH,MAAA,CAAAC,QAAA;IACA;IACAb,gBAAA4I,MAAA,EAAAvC,IAAA;MACA,IAAAwC,IAAA,GAAA/S,IAAA,CAAAqI,QAAA,CAAA4I,IAAA,CAAA+B,CAAA,IAAAA,CAAA,CAAApK,EAAA,IAAAkK,MAAA;MACA;MACA,IAAAG,UAAA,GAAAF,IAAA,CAAAG,SAAA;MACA;MACA,IAAAC,QAAA,GAAAJ,IAAA,CAAAG,SAAA;MACAC,QAAA,CAAAC,OAAA,CAAAC,EAAA;QACArT,IAAA,CAAA8K,MAAA,CAAAC,QAAA;UACAmE,MAAA,EAAAmE,EAAA,SAAAA,EAAA,SAAAA;QACA;MACA;MACArT,IAAA,CAAAc,cAAA;MACAd,IAAA,CAAAgC,cAAA;MACA,KAAA8I,MAAA,CAAAwI,MAAA,6BAAAH,QAAA;MACA,KAAArI,MAAA,CAAAwI,MAAA,yBAAAL,UAAA;MACAjT,IAAA,CAAAsB,QAAA,GAAAyR,IAAA,CAAAvC,IAAA;MACA,KAAA+C,SAAA;QACAvT,IAAA,CAAA8K,MAAA,CAAAC,QAAA;QACA/K,IAAA,CAAA8K,MAAA,CAAAC,QAAA;UACAC,QAAA;UACAC,SAAA;QACA;MACA;MACAjD,OAAA,CAAAC,GAAA,CAAA8K,IAAA;IACA;IACAnI,iBAAA4I,OAAA;MACAxL,OAAA,CAAAC,GAAA,CAAAuL,OAAA;IACA;IACAhJ,aAAAjD,SAAA;MACAS,OAAA,CAAAC,GAAA,cAAAV,SAAA;MACA,SAAA2I,IAAA,IAAA3I,SAAA;QACA,IAAApF,YAAA,QAAAoF,SAAA,CAAA0J,IAAA,CAAA5H,CAAA,IAAAA,CAAA,CAAAT,EAAA,IAAAsH,IAAA,CAAAtM,OAAA;QACA,IAAAzB,YAAA;UACA;UACAA,YAAA,CAAAoM,IAAA,GAAA2B,IAAA,CAAAuD,CAAA;UACAtR,YAAA,CAAAqM,GAAA,GAAA0B,IAAA,CAAAwD,CAAA;UACAvR,YAAA,CAAAyB,OAAA,GAAAsM,IAAA,CAAAtM,OAAA;UACAzB,YAAA,CAAAwR,SAAA,GAAAzD,IAAA,CAAAyD,SAAA;UACA3L,OAAA,CAAAC,GAAA,kBAAAiI,IAAA,CAAA0D,QAAA;UACAzR,YAAA,CAAA0R,KAAA,GAAAC,OAAA,6BAAA5D,IAAA,CAAA0D,QAAA;UACA,IAAAzR,YAAA,CAAAwR,SAAA;YACA;UAAA,CACA;YACA;UAAA;QAEA;MACA;MACA,KAAAlR,eAAA;MACAiJ,UAAA;QACA,KAAAjJ,eAAA;MACA;IACA;IACAsR,SAAA;MACA/T,IAAA,CAAAc,cAAA;MACAd,IAAA,CAAAgC,cAAA;IACA;IACAgS,WAAA9D,IAAA;MACA,0DACAA,IAAA,CAAAO,IAAA,IAAAP,IAAA,CAAAtH,EACA,OAAAsH,IAAA,CAAAK,IAAA;AACA;AACA;AACA,8CAAAL,IAAA,CAAAM,IAAA;AACA,oDAAAN,IAAA,CAAA+D,WAAA;AACA;AACA;AACA,0CAAA/D,IAAA,CAAAgE,UAAA;AACA;AACA,2CAAAhE,IAAA,CAAAiE,QAAA;AACA;AACA;AACA,yCAAAjE,IAAA,CAAAkE,cAAA;AACA,yCAAAlE,IAAA,CAAA1M,EAAA;AACA;AACA;AACA,+DACA0M,IAAA,CAAAO,IAAA,IAAAP,IAAA,CAAAtH,EACA,OAAAsH,IAAA,CAAAK,IAAA;AACA;IACA;IACA8D,WAAAnE,IAAA;MACAlI,OAAA,CAAAC,GAAA,CAAAiI,IAAA,eAAAjH,iBAAA,CAAAiH,IAAA,CAAAtH,EAAA;MAEA,uCAAAsH,IAAA,CAAAO,IAAA,IAAAP,IAAA,CAAAtH,EAAA,OACAsH,IAAA,CAAAK,IACA,OAAAL,IAAA,CAAAM,IAAA,uCACA,CAAAN,IAAA,CAAAK,IAAA,KAAAL,IAAA,CAAAO,IAAA,kBACA;AACA;AACA;AACA,8CAAAP,IAAA,CAAAM,IAAA;AACA;AACA,gDAAA3G,kBAAA,CAAAqG,IAAA,CAAAtH,EAAA;AACA;AACA,2FAAA0L,MAAA,MAAAzK,kBAAA,CAAAqG,IAAA,CAAAtH,EAAA,QAAA2L,OAAA;AACA,4DACArE,IAAA,CAAAK,IAAA,mBACA;AACA;AACA;AACA,gFAAAtH,iBAAA,CAAAiH,IAAA,CAAAtH,EAAA,sBAAAK,iBAAA,CAAAiH,IAAA,CAAAtH,EAAA;AACA;IACA;IACA4L,YAAAtE,IAAA;MACA,mIACAA,IAAA,CAAAO,IAAA,IAAAP,IAAA,CAAAtH,EACA;AACA;AACA;AACA,kIAAAsH,IAAA,CAAAuE,YAAA;AACA,6CAAAvE,IAAA,CAAArE,aAAA;AACA;AACA;AACA,yCAAAqE,IAAA,CAAAwE,OAAA;AACA,yCAAAxE,IAAA,CAAAyE,WAAA;AACA;AACA;AACA,4BACAzE,IAAA,CAAA0E,OAAA,qCACA;AACA;IACA;IACAC,YAAA;MACA,KAAAjU,eAAA;IACA;IACAkU,aAAA;MACA;IACA;IACAC,WAAA7H,MAAA;MACAlF,OAAA,CAAAC,GAAA,SAAAiF,MAAA;MACA,IAAAtJ,OAAA,GAAAsJ,MAAA,CAAA0B,GAAA;MACA,IAAAhL,OAAA;QACAoE,OAAA,CAAAC,GAAA;QACAyD,UAAA;UACA,IAAAsJ,IAAA,GAAAjL,MAAA,CAAAkL,QAAA,CAAAD,IAAA;UACA,IAAAA,IAAA,CAAA5C,OAAA;YACA,IAAA8C,OAAA,GAAAF,IAAA,CAAAG,SAAA,CAAAH,IAAA,CAAA5C,OAAA;YACA,IAAAzL,eAAA,QAAAA,eAAA;YACAqB,OAAA,CAAAC,GAAA,YAAAiN,OAAA;YACAlN,OAAA,CAAAC,GAAA,CACA,mBACAtB,eAAA,CAAAsK,IAAA,CAAAf,IAAA,IAAAA,IAAA,IAAAgF,OAAA,CACA;YACA,IAAAvO,eAAA,CAAAsK,IAAA,CAAAf,IAAA,IAAAA,IAAA,IAAAgF,OAAA;cACA,KAAArK,WAAA,CAAA4G,QAAA,CAAAyD,OAAA;YACA;UACA;QACA;QACA;MACA;MACA,IAAAjI,IAAA;MAEAjF,OAAA,CAAAC,GAAA,YAAArE,OAAA;MACA7D,EAAA,CAAAwN,YAAA;QAAA5B,QAAA,EAAA6B,MAAA,CAAA5J,OAAA;MAAA,GACAtD,IAAA,CAAAC,GAAA;QACAR,EAAA,CAAAqV,QAAA,CAAA5H,MAAA,CAAA5J,OAAA,MAAAtD,IAAA,CAAAC,GAAA;UACA0M,IAAA,CAAAnC,MAAA,CAAAC,QAAA;YACAnH,OAAA;YACAyR,GAAA,EAAA9U,GAAA,CAAAG,IAAA,CAAAA;UACA;UACAuM,IAAA,CAAA8H,UAAA,CAAA7H,MAAA;QACA;MACA,GACAQ,KAAA,CAAAC,GAAA;QACA3F,OAAA,CAAAC,GAAA,yBAAArE,OAAA;QACAqJ,IAAA,CAAAW,QAAA;UACAC,OAAA;UACA;UACA3G,IAAA;QACA;MACA;IACA;IACAoO,SAAA;MACA,KAAAC,OAAA,CAAA/U,IAAA;QACAgV,IAAA;MACA;IACA;IACAC,WAAAvF,IAAA;MACA;;MAEA;MACA;MACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACA;AACA,uDAAAA,IAAA,CAAAtH,EAAA,kBAAAsH,IAAA,CAAAtH,EAAA,8BAAAsH,IAAA,CAAAtH,EAAA;AACA,sDAAAsH,IAAA,CAAA2D,KAAA,UAAA3D,IAAA,CAAAjN,KAAA;AACA;AACA;AACA,oDAAAiN,IAAA,CAAAM,IAAA;AACA,yDAAAN,IAAA,CAAAtH,EAAA,6BAAAsH,IAAA,CAAAzM,MAAA;AACA;AACA;AACA;AACA,gEAAAyM,IAAA,CAAAwF,MAAA;AACA,kEAAAxF,IAAA,CAAAyF,QAAA;AACA,iEAAAzF,IAAA,CAAA0F,OAAA;AACA,iEAAA1F,IAAA,CAAA2F,OAAA;AACA,iEAAA3F,IAAA,CAAA4F,OAAA;AACA,+DAAA5F,IAAA,CAAAzG,KAAA;AACA,iEAAAyG,IAAA,CAAA6F,OAAA;AACA;AACA;AACA;AACA;IACA;IACAC,iBAAA3E,KAAA;MACA,KAAAxG,WAAA,CACA4G,QAAA,MAAA1J,MAAA,CAAAsJ,KAAA,aAAA3N,WAAA,OAAAuS,GAAA,CACA;MACA,KAAAjM,eAAA,CAAAyH,QAAA,MAAA1J,MAAA,CAAAsJ,KAAA,aAAA3N,WAAA,OAAAuS,GAAA;IACA;IACAC,SAAA;MACA,SAAAxS,WAAA;QACA,KAAAA,WAAA;MACA;IACA;IACAyS,SAAA;MACA,SAAAzS,WAAA,GAAA0S,IAAA,CAAAC,IAAA,MAAAtO,MAAA,CAAA2B,MAAA,QAAA/F,QAAA;QACA,KAAAD,WAAA;MACA;IACA;IACA4S,mBAAA1S,OAAA;MACAoE,OAAA,CAAAC,GAAA,uBAAArE,OAAA;MACA,KAAAzB,YAAA,QAAAoF,SAAA,CAAA0J,IAAA,CAAA5H,CAAA,IAAAA,CAAA,CAAAT,EAAA,IAAAhF,OAAA;MAEA,KAAAhD,eAAA;IACA;IACAwU,SAAA;IACAmB,aAAA7V,IAAA;MACA,QAAAA,IAAA,CAAA8V,MAAA;QACA;UACA,KAAAC,kBAAA,CAAA/V,IAAA,CAAAA,IAAA,CAAAA,IAAA;UACA;MACA;MACAsH,OAAA,CAAAC,GAAA,CAAAvH,IAAA;IACA;IACA+V,mBAAA/V,IAAA;MACA,KAAAwB,YAAA,+BAAAxB,IAAA;IACA;IACAmK,YAAAjH,OAAA;MACA;MACA,KAAA8S,qBAAA,CAAA9S,OAAA;MAEA,IAAA0F,CAAA,GAAA8D,IAAA,CAAAC,KAAA,CAAAD,IAAA,CAAAE,SAAA,CAAApN,aAAA;MACA,IAAA+M,IAAA;MACA/M,aAAA;MACAwL,UAAA;QACA1D,OAAA,CAAAC,GAAA,kBAAArE,OAAA;QACA3D,OAAA,CAAAqJ,CAAA,GACAiE,YAAA;UAAA5B,QAAA,EAAA6B,MAAA,CAAA5J,OAAA;QAAA,GACAtD,IAAA,CAAAC,GAAA;UACAyH,OAAA,CAAAC,GAAA,0BAAArE,OAAA;UACAqJ,IAAA,CAAAQ,aAAA,CAAA7J,OAAA,KAAA3D,OAAA,CAAAqJ,CAAA;UACA,KAAAnH,YAAA,QAAAoF,SAAA,CAAA0J,IAAA,CAAA5H,CAAA,IAAAA,CAAA,CAAAT,EAAA,IAAAhF,OAAA;UACA,KAAA+C,eAAA,CAAAnG,IAAA,CAAAoD,OAAA;UACA,KAAAkH,MAAA,CAAAC,QAAA;UACA,IAAA4L,KAAA,GAAAzE,KAAA,CAAA0E,IAAA,KAAAC,GAAA,MAAAlQ,eAAA;UACA,IAAAmQ,GAAA,GAAAH,KAAA,CAAAjN,MAAA;UACA,IAAAoN,GAAA;YACApL,UAAA;cACA,IAAAqL,MAAA,GAAA9K,QAAA,CAAA+K,aAAA;cACA,IAAAD,MAAA;gBACAA,MAAA,CAAAE,QAAA;cACA;YACA;UACA;QACA,GACAvJ,KAAA,CAAAC,GAAA;UACA3F,OAAA,CAAAC,GAAA,yBAAArE,OAAA;UACA,KAAAgK,QAAA;YACAC,OAAA;YACA;YACA3G,IAAA;UACA;QACA;MACA;MACA;MACA,IAAAgG,MAAA,QAAAvG,eAAA;MACA,IAAAuG,MAAA,IAAAA,MAAA,CAAAxD,MAAA;QACA,IAAAwN,MAAA;QACA,SAAA5N,CAAA,MAAAA,CAAA,GAAA4D,MAAA,CAAAxD,MAAA,EAAAJ,CAAA;UACA,IAAA4D,MAAA,CAAA5D,CAAA,KAAA1F,OAAA;YACAsT,MAAA;UACA,QACA;QACA;QACA,IAAAA,MAAA;UACAhK,MAAA,CAAA1M,IAAA,CAAAoD,OAAA;UACA,KAAA+C,eAAA,CAAAnG,IAAA,CAAAoD,OAAA;UACA,KAAAkH,MAAA,CAAAC,QAAA,iCAAAnH,OAAA;QACA;MACA;QACA,IAAAuT,GAAA;QACAA,GAAA,CAAA3W,IAAA,CAAAoD,OAAA;QACA,KAAA+C,eAAA,CAAAnG,IAAA,CAAAoD,OAAA;QACA,KAAAkH,MAAA,CAAAC,QAAA,iCAAAnH,OAAA;MACA;MAEAoE,OAAA,CAAAC,GAAA,mBAAAV,SAAA;MACA,IAAA6P,KAAA,QAAA7P,SAAA,CAAA0J,IAAA,CAAA5H,CAAA,IAAAA,CAAA,CAAAT,EAAA,IAAAhF,OAAA;MACAoE,OAAA,CAAAC,GAAA,kBAAAmP,KAAA;MACA,SAAA7U,yBAAA,CAAAmH,MAAA;QACA,KAAAlH,iBAAA,GAAA4K,IAAA,CAAAC,KAAA,CACAD,IAAA,CAAAE,SAAA,MAAA/K,yBAAA,CACA;MACA;MACA,KAAAA,yBAAA;MACA,KAAAuB,QAAA;MACA,KAAAyD,SAAA,CAAA6L,OAAA,CAAA/J,CAAA,IAAAA,CAAA,CAAAqI,QAAA;MACA0F,KAAA,CAAA1F,QAAA,IAAA0F,KAAA,CAAA1F,QAAA;MACA,IAAA0F,KAAA,CAAA1F,QAAA;QACA,KAAAvP,YAAA,GAAAiV,KAAA;QACAA,KAAA,CAAAxT,OAAA,SAAAwT,KAAA,CAAAxT,OAAA;QACA,KAAApB,iBAAA,CAAAhC,IAAA,CAAA4W,KAAA;QACApP,OAAA,CAAAC,GAAA,kBAAAzF,iBAAA;QACA;QACA;QACA;QACA;QACA;QACA;MACA;QACA,SAAA8G,CAAA,SAAA9G,iBAAA;UACA,SAAAA,iBAAA,CAAA8G,CAAA,EAAAV,EAAA,IAAAwO,KAAA,CAAAxO,EAAA;YACA,KAAApG,iBAAA,CAAA6U,MAAA,CAAA/N,CAAA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;UACA;QACA;MACA;MACA,SAAA9G,iBAAA,CAAAkH,MAAA;QACA4N,QAAA;UACArK,IAAA,CAAAsK,iBAAA;QACA;MACA;QACAtK,IAAA,CAAA/B,iBAAA,CAAAkM,KAAA,CAAAxO,EAAA,EAAA3I,OAAA,CAAAqJ,CAAA;MACA;IACA;IACA4B,kBAAAtH,OAAA,EAAA7D,EAAA;MACA,IAAAkN,IAAA;MACA,SAAAzK,iBAAA,CAAAkH,MAAA;QACA,KAAAkE,QAAA;UACAC,OAAA;UACA;UACA3G,IAAA;QACA;QACA;MACA;MACA,KAAA1E,iBAAA,SAAAA,iBAAA;MACAwF,OAAA,CAAAC,GAAA,8BAAAzF,iBAAA;MACA,IAAAgV,GAAA;MACA,SAAAlO,CAAA,SAAA/B,SAAA;QACA,KAAAA,SAAA,CAAA+B,CAAA,EAAAoI,QAAA;MACA;MACA,SAAApI,CAAA,SAAA/B,SAAA;QACA,SAAAA,SAAA,CAAA+B,CAAA,EAAAV,EAAA,IAAAhF,OAAA;UACA,KAAA2D,SAAA,CAAA+B,CAAA,EAAAoI,QAAA;UACA8F,GAAA,GAAAlO,CAAA;UACA;QACA;MACA;MACA,KAAA/B,SAAA,CAAAiQ,GAAA,EAAAC,eAAA;MACA;MACA,KAAAlQ,SAAA,CAAAiQ,GAAA,EAAA5T,OAAA,GAAAA,OAAA;MACA,IAAA8T,UAAA,QAAAnQ,SAAA,CAAAiQ,GAAA,EAAAG,OAAA;MACA,KAAA5T,eAAA,GAAAyJ,MAAA,CAAA5J,OAAA;MACA;MACA8H,UAAA;QACA1D,OAAA,CAAAC,GAAA,kBAAArE,OAAA;QACA7D,EAAA,CAAAwN,YAAA;UAAA5B,QAAA,EAAA6B,MAAA,CAAA5J,OAAA;QAAA,GACAtD,IAAA,CAAAC,GAAA;UACA0M,IAAA,CAAA7G,WAAA;UACA,KAAA0E,MAAA,CAAAC,QAAA;UACA/C,OAAA,CAAAC,GAAA;UACA,KAAA9C,aAAA;UACA8H,IAAA,CAAA2K,eAAA,CAAAhU,OAAA;UACAqJ,IAAA,CAAAQ,aAAA,CAAA7J,OAAA,KAAA7D,EAAA;YACA,SAAAwH,SAAA,CAAAiQ,GAAA,EAAAC,eAAA;cACA,KAAAlQ,SAAA,CAAAiQ,GAAA,EAAAC,eAAA;cACA,KAAAxV,mBAAA;YACA;UACA;UACA,IAAAyV,UAAA;YACAzK,IAAA,CAAAQ,aAAA,CAAAD,MAAA,CAAA5J,OAAA,MAAA7D,EAAA;cACA,SAAAgE,eAAA;gBACA,KAAAqB,wBAAA;cACA;YACA;UACA;YACA,KAAAA,wBAAA;UACA;QACA,GACAsI,KAAA,CAAAC,GAAA;UACA3F,OAAA,CAAAC,GAAA;UACA,KAAAV,SAAA,CAAAiQ,GAAA,EAAAC,eAAA;UACA,KAAA7J,QAAA;YACAC,OAAA;YACA;YACA3G,IAAA;UACA;QACA;MACA;IACA;IACA2Q,aAAA;MACA,SAAA1S,aAAA;QACA,KAAAA,aAAA;MACA;QACA,KAAAA,aAAA;MACA;MACA6C,OAAA,CAAAC,GAAA,4BAAA9C,aAAA;IACA;IACA2S,kBAAAlP,EAAA,EAAA6K,CAAA,EAAAC,CAAA,EAAAgE,UAAA;MACA,IAAAzK,IAAA;MACAlN,EAAA,CAAA+X,iBAAA,CAAAlP,EAAA,EAAA6K,CAAA,EAAAC,CAAA,EAAAgE,UAAA,EAAApX,IAAA,CAAAC,GAAA;IACA;IACAwX,iBAAAnP,EAAA,EAAAoP,EAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAT,UAAA;MACA,IAAAzK,IAAA;MACAlN,EAAA,CAAAgY,gBAAA,CAAAnP,EAAA,EAAAoP,EAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAT,UAAA,EAAApX,IAAA,CAAAC,GAAA;IACA;IACA6X,sBAAAxP,EAAA,EAAA6K,CAAA,EAAAC,CAAA,EAAA2E,QAAA,EAAAX,UAAA;MACA,IAAAzK,IAAA;MACAlN,EAAA,CAAAqY,qBAAA,CAAAxP,EAAA,EAAA6K,CAAA,EAAAC,CAAA,EAAA2E,QAAA,EAAAX,UAAA,EAAApX,IAAA,CACAC,GAAA,MACA;IACA;IACA+X,uBAAAvG,CAAA;MACA,IAAA9E,IAAA;MACA,SAAAjJ,cAAA;QACA;QACA,KAAAC,qBAAA,CAAAsK,IAAA,GAAAwD,CAAA,CAAAwG,OAAA;QACA,KAAAtU,qBAAA,CAAAuK,GAAA,GAAAuD,CAAA,CAAAyG,OAAA;QACA,KAAA/T,iBAAA,CAAAgP,CAAA,GAAA1B,CAAA,CAAAwG,OAAA;QACA,KAAA9T,iBAAA,CAAAiP,CAAA,GAAA3B,CAAA,CAAAyG,OAAA;QACA,KAAA/T,iBAAA,CAAAgU,IAAA,GAAA/I,IAAA,CAAAC,GAAA;QACA,KAAAnL,yBAAA;MACA;IACA;IAEAkU,uBAAA3G,CAAA;MACA,IAAA9E,IAAA;MACA,SAAAjJ,cAAA,SAAAQ,yBAAA;QACA,KAAAP,qBAAA,CAAAsK,IAAA,GAAAwD,CAAA,CAAAwG,OAAA;QACA,KAAAtU,qBAAA,CAAAuK,GAAA,GAAAuD,CAAA,CAAAyG,OAAA;MACA;IACA;IAEAG,sBAAA5G,CAAA;MACA,KAAAvN,yBAAA;IACA;IACAoU,qBAAA7G,CAAA,EAAA2F,UAAA;MACA,IAAAzK,IAAA;MACA,SAAA9H,aAAA;QACAuS,UAAA;MACA,gBAAAvS,aAAA;QACAuS,UAAA;MACA;MACA,SAAA1T,cAAA;QACA,KAAAQ,yBAAA;QACA,IACA4R,IAAA,CAAAyC,GAAA,MAAApU,iBAAA,CAAAgP,CAAA,GAAA1B,CAAA,CAAAwG,OAAA,UACAnC,IAAA,CAAAyC,GAAA,MAAApU,iBAAA,CAAAiP,CAAA,GAAA3B,CAAA,CAAAyG,OAAA,UACA9I,IAAA,CAAAC,GAAA,UAAAlL,iBAAA,CAAAgU,IAAA,QACA;UACAxL,IAAA,CAAA6L,qBAAA,CAAA/G,CAAA,SAAA2F,UAAA;QACA,WACAtB,IAAA,CAAAyC,GAAA,MAAApU,iBAAA,CAAAgP,CAAA,GAAA1B,CAAA,CAAAwG,OAAA,UACAnC,IAAA,CAAAyC,GAAA,MAAApU,iBAAA,CAAAiP,CAAA,GAAA3B,CAAA,CAAAyG,OAAA,QACA;UACA;UACAvL,IAAA,CAAA6L,qBAAA,CACA/G,CAAA,EACA,SACA2F,UAAA,EACA,KAAAjT,iBACA;QACA,WAAAiL,IAAA,CAAAC,GAAA,UAAAlL,iBAAA,CAAAgU,IAAA;UACAxL,IAAA,CAAA6L,qBAAA,CACA/G,CAAA,EACA,aACA2F,UAAA,EACA,KAAAjT,iBACA;QACA;MACA;IACA;IACAqU,sBAAA/G,CAAA,EAAAgH,SAAA,EAAArB,UAAA,EAAAsB,UAAA;MACA,IAAA/L,IAAA;MACAjF,OAAA,CAAAC,GAAA,0BAAA8J,CAAA,EAAAgH,SAAA,EAAArB,UAAA;MACA,SAAA1T,cAAA;QACA,IAAAqI,KAAA,QAAAmG,KAAA,CAAAyG,UAAA,CAAA5M,KAAA;QACA,IAAAE,MAAA,QAAAiG,KAAA,CAAAyG,UAAA,CAAA1M,MAAA;QAEA,IAAAgM,OAAA,GAAAxG,CAAA,CAAAwG,OAAA;QACA,IAAAC,OAAA,GAAAzG,CAAA,CAAAyG,OAAA;QAEA,IAAAU,WAAA,QAAA/T,aAAA;QACA,IAAAgU,YAAA,QAAAhU,aAAA;QAEA,IAAAsO,CAAA,GAAA2C,IAAA,CAAAgD,KAAA,CAAAF,WAAA,IAAAX,OAAA,GAAAlM,KAAA;QACA,IAAAqH,CAAA,GAAA0C,IAAA,CAAAgD,KAAA,CAAAD,YAAA,IAAAX,OAAA,GAAAjM,MAAA;QAEA,IAAAyL,EAAA;QACA,IAAAC,EAAA;QACA,IAAAe,UAAA;UACAhB,EAAA,GAAA5B,IAAA,CAAAgD,KAAA,CAAAF,WAAA,IAAAF,UAAA,CAAAvF,CAAA,GAAApH,KAAA;UACA4L,EAAA,GAAA7B,IAAA,CAAAgD,KAAA,CAAAD,YAAA,IAAAH,UAAA,CAAAtF,CAAA,GAAAnH,MAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA,IAAA8M,aAAA;QACA,IAAAN,SAAA;UACA/Q,OAAA,CAAAC,GAAA,kBAAAlE,eAAA,EAAA0P,CAAA,EAAAC,CAAA;UACAzG,IAAA,CAAA6K,iBAAA,MAAA/T,eAAA,EAAA0P,CAAA,EAAAC,CAAA,EAAAgE,UAAA;UACA;UACA2B,aAAA,GACA,aACA3B,UAAA,gCACA,QAAAjE,CAAA,YAAAC,CAAA;QACA,WAAAqF,SAAA;UACA9L,IAAA,CAAA8K,gBAAA,MAAAhU,eAAA,EAAAiU,EAAA,EAAAC,EAAA,EAAAxE,CAAA,EAAAC,CAAA,EAAAgE,UAAA;UACA2B,aAAA,GACA,eACA3B,UAAA,gCACA,SAAAM,EAAA,aAAAC,EAAA,YAAAxE,CAAA,YAAAC,CAAA;QACA,WAAAqF,SAAA;UACA9L,IAAA,CAAAmL,qBAAA,CACA,KAAArU,eAAA,EACA0P,CAAA,EACAC,CAAA,EACAhE,IAAA,CAAAC,GAAA,KAAAqJ,UAAA,CAAAP,IAAA,EACAf,UACA;UACA2B,aAAA,GACA,mBACA3B,UAAA,gCACA,QAAAjE,CAAA,YAAAC,CAAA;QACA;QACA,KAAAvP,QAAA,CAAA3D,IAAA;UACAmL,QAAA,OAAA5H,eAAA;UACArD,IAAA,EAAA2Y,aAAA;UACAC,QAAA;UACA7J,SAAA,EAAAxC,IAAA,CAAAsM,UAAA;QACA;MACA;IACA;IACAA,WAAA;MACA,IAAAC,MAAA,OAAA9J,IAAA;MACA,IAAA+J,IAAA,GAAAD,MAAA,CAAAE,WAAA;MACA,IAAAC,GAAA,GAAAH,MAAA,CAAAI,QAAA;MACA,IAAAC,IAAA,GAAAL,MAAA,CAAAM,OAAA;MACA,IAAAC,KAAA,GAAAP,MAAA,CAAAQ,QAAA;MACA,IAAAC,OAAA,GAAAT,MAAA,CAAAU,UAAA;MACA,IAAAC,OAAA,GAAAX,MAAA,CAAAY,UAAA;MACA,IAAAzK,GAAA,GACA8J,IAAA,GACA,MACAE,GAAA,GACA,MACAE,IAAA,GACA,MACAE,KAAA,GACA,MACAE,OAAA,GACA,MACAE,OAAA;MACA,OAAAxK,GAAA;IACA;IACA4H,kBAAA;MACA,IAAAtK,IAAA;MACA,IAAAoN,UAAA;MACA,SAAA/Q,CAAA,SAAA/B,SAAA;QACA,SAAAA,SAAA,CAAA+B,CAAA,EAAA7F,MAAA,cAAA8D,SAAA,CAAA+B,CAAA,EAAA7F,MAAA;UACA4W,UAAA;QACA,WACA,KAAA9S,SAAA,CAAA+B,CAAA,EAAA7F,MAAA,SACA,KAAA8D,SAAA,CAAA+B,CAAA,EAAA7F,MAAA,OACA;UACA4W,UAAA;QACA;UACAA,UAAA;QACA;MACA;MACArS,OAAA,CAAAC,GAAA,eAAAoS,UAAA;MACA,IAAAC,MAAA;QACAC,OAAA;UACAC,OAAA;UACAC,WAAA;YACAvT,IAAA;UACA;QACA;QACAwT,IAAA;UACAnM,IAAA;UACAoM,KAAA;UACAC,MAAA;UACApM,GAAA;UACAqM,YAAA;QACA;QACAC,KAAA;UACA5T,IAAA;UACA6T,SAAA;YACAC,IAAA;UACA;UACAC,SAAA;YACAD,IAAA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;QACA;;QACAE,KAAA;UACAhU,IAAA;UACAxG,IAAA;UACAya,QAAA;YACAH,IAAA;YACAI,SAAA;cACAC,KAAA;YACA;UACA;UACAC,QAAA;YACAN,IAAA;UACA;UACA;UACA;QACA;;QACAO,MAAA,GACA;UACArU,IAAA;UACAsU,QAAA;UACA9a,IAAA,EAAA2Z,UAAA;UACAoB,SAAA;YACAJ,KAAA,WAAAA,CAAAK,MAAA;cACA;cACA,IAAAC,SAAA;cACA,OAAAA,SAAA,CAAAD,MAAA,CAAAE,SAAA;YACA;UACA;UACAC,cAAA;UACAC,eAAA;YACAT,KAAA;UACA;UACAU,KAAA;YACAf,IAAA;YACA5M,QAAA;YACAiN,KAAA;UACA;QACA;MAEA;MACAW,oBAAA,GAAAC,OAAA,CAAAC,IAAA,CACAjQ,QAAA,CAAAC,sBAAA,oBACA;MACA8P,oBAAA,CAAAG,SAAA,CAAA7B,MAAA;IACA;IAEA8B,UAAA;MACA,IAAAnP,IAAA;MACAlN,EAAA,CAAAsc,sBAAA;QAAA1Q,QAAA,OAAA5H;MAAA,GAAAzD,IAAA,CACAC,GAAA;QACAyH,OAAA,CAAAC,GAAA,2BAAA1H,GAAA;MACA,CACA;MACA,KAAAwD,eAAA;MACA2H,UAAA;QACA,KAAAzJ,mBAAA;QACA,KAAAyC,YAAA;MACA;IACA;IAEA4X,UAAAC,KAAA,EAAA1K,KAAA;MACA,IAAA5E,IAAA;MACA,KAAAzK,iBAAA;MACA,SAAA8G,CAAA,SAAA/B,SAAA;QACA,KAAAA,SAAA,CAAA+B,CAAA,EAAAoI,QAAA;QACA,SAAAnK,SAAA,CAAA+B,CAAA,EAAAiT,KAAA,KAAA1K,KAAA;UACA,KAAAtK,SAAA,CAAA+B,CAAA,EAAAoI,QAAA;UACA,KAAAnK,SAAA,CAAA+B,CAAA,EAAA1F,OAAA,cAAA2D,SAAA,CAAA+B,CAAA,EAAA1F,OAAA;UACA,KAAApB,iBAAA,CAAAhC,IAAA,MAAA+G,SAAA,CAAA+B,CAAA;UACA;UACA;UACA;UACA;UACA;UACA;QACA;MACA;IACA;;IAEAkT,eAAA;MACA,IAAAvP,IAAA;MACAjF,OAAA,CAAAC,GAAA,2BAAAV,SAAA,CAAAmC,MAAA;MACA,SAAAlH,iBAAA,CAAAkH,MAAA,SAAAnC,SAAA,CAAAmC,MAAA;QACA,KAAAlH,iBAAA;QACA,KAAAD,yBAAA;QACA,SAAA+G,CAAA,SAAA/B,SAAA;UACA,KAAAA,SAAA,CAAA+B,CAAA,EAAAoI,QAAA;QACA;QACAzE,IAAA,CAAAqK,QAAA;UACArK,IAAA,CAAAsK,iBAAA;QACA;MACA;QACA,KAAA/U,iBAAA;QACA,SAAA8G,CAAA,SAAA/B,SAAA;UACA,KAAAA,SAAA,CAAA+B,CAAA,EAAAoI,QAAA;UACA,KAAAlP,iBAAA,CAAAhC,IAAA,MAAA+G,SAAA,CAAA+B,CAAA;UACA;UACA;UACA;UACA;UACA;UACA;QACA;MACA;IACA;;IACAmT,eAAA;MACA,KAAAzY,cAAA,SAAAA,cAAA;IACA;IACA0Y,eAAA9T,EAAA,EAAAyI,KAAA;MACA,IAAApE,IAAA;MACA,IAAA0P,aAAA;QAAA/T;MAAA;MACAgU,GAAA,CACAF,cAAA,CAAAC,aAAA,EACArc,IAAA,CAAAC,GAAA;QACA;QACA,KAAAgH,SAAA,CAAA8J,KAAA,EAAA5N,MAAA,GAAAlD,GAAA,CAAAG,IAAA,CAAAA,IAAA,CAAA+C,MAAA;MACA,GACAiK,KAAA,CAAAC,GAAA;QACA3F,OAAA,CAAA6U,KAAA,CAAAlP,GAAA;MACA;IACA;IACAmP,WAAA;MACA,IAAA7P,IAAA;MACA,SAAAvI,YAAA;QACA3E,EAAA,CAAAsc,sBAAA;UAAA1Q,QAAA,OAAA5H;QAAA,GAAAzD,IAAA,CACAC,GAAA;UACAyH,OAAA,CAAAC,GAAA,2BAAA1H,GAAA;QACA,CACA;MACA;QACAR,EAAA,CAAAgd,oBAAA;UAAApR,QAAA,OAAA5H;QAAA,GAAAzD,IAAA,CACAC,GAAA;UACAyH,OAAA,CAAAC,GAAA,yBAAA1H,GAAA;QACA,CACA;MACA;MACA,KAAA4D,QAAA;MACA,KAAAO,YAAA,SAAAA,YAAA;IACA;IACAsY,mBAAA9V,IAAA;MACA,IAAA+F,IAAA;MACAlN,EAAA,CAAAkd,oBAAA;QACArZ,OAAA,EAAA4J,MAAA,MAAAzJ,eAAA;MACA,GAAAzD,IAAA,CACAC,GAAA;QACAyH,OAAA,CAAAC,GAAA,6BAAA1H,GAAA;QACA,IAAA2G,IAAA;UACA,KAAA1B,WAAA,SAAAA,WAAA;UACAyH,IAAA,CAAAiQ,WAAA;QACA,WAAAhW,IAAA;UACA+F,IAAA,CAAAkQ,YAAA;QACA;MACA,GACAC,GAAA,MACA;IACA;IACAF,YAAAxc,IAAA;MACA,IAAAuM,IAAA;MACA;MACA,IAAAoQ,OAAA;MAEA,KAAA1X,YAAA;MACA,SAAAH,WAAA;QACA,KAAAW,kBAAA,CAAA3F,IAAA,MAAAuD,eAAA;QACA;QACAuZ,SAAA,CAAAC,YAAA,GACAD,SAAA,CAAAC,YAAA,IACAD,SAAA,CAAAE,kBAAA,IACAF,SAAA,CAAAG,eAAA,IACAH,SAAA,CAAAI,cAAA;QACA,IAAAJ,SAAA,CAAAK,YAAA,CAAAJ,YAAA;UACA;UACAD,SAAA,CAAAK,YAAA,CACAJ,YAAA;YACAK,KAAA;YACAC,KAAA;UACA,GACAvd,IAAA,CAAAwd,MAAA;YACA,KAAAlY,SAAA,GAAAkY,MAAA;YACA,KAAAjY,IAAA,OAAAkY,YAAA;cACAC,UAAA;YACA;YACA,KAAAlY,QAAA,QAAAD,IAAA,CAAAoY,uBAAA,CAAAH,MAAA;;YAEA;YACA,KAAA/X,YAAA,QAAAF,IAAA,CAAAqY,qBAAA,CACA,MACAb,OAAA,EACA,CACA;YAEA,KAAArX,kBAAA,QAAAH,IAAA,CAAAmY,UAAA;YACA,KAAAjY,YAAA,CAAAoY,cAAA,aAAApM,CAAA;cACA,SAAAzI,CAAA,MAAAA,CAAA,GAAA+T,OAAA,EAAA/T,CAAA;gBACA,IAAA5I,IAAA,GAAAqR,CAAA,CAAAqM,WAAA,CAAAC,cAAA,CAAA/U,CAAA;gBAEA2D,IAAA,CAAAhH,kBAAA,CAAAzF,IAAA,CAAA8d,KAAA,CACArR,IAAA,CAAAhH,kBAAA,EACAvF,IACA;gBACA,IACAuM,IAAA,CAAA/G,2BAAA,GACA+G,IAAA,CAAAjH,kBAAA,MACA;kBACAiH,IAAA,CAAA/G,2BAAA;gBACA;kBACA,IAAAqY,GAAA;kBAEA,KACA,IAAAnV,CAAA,MACAA,CAAA,GAAA6D,IAAA,CAAAhH,kBAAA,CAAAyD,MAAA,EACAN,CAAA,GAAAA,CAAA,GAAA6D,IAAA,CAAAjH,kBAAA,EACA;oBACAuY,GAAA,CAAA/d,IAAA,CAAAyM,IAAA,CAAAhH,kBAAA,CAAAmD,CAAA;kBACA;kBAEA6D,IAAA,CAAAhH,kBAAA,GAAAsY,GAAA,CAAAlH,MAAA;kBAEApK,IAAA,CAAAhH,kBAAA,OAAAuY,YAAA,CACAvR,IAAA,CAAAhH,kBACA;kBACA,IAAAmQ,IAAA,CAAAyC,GAAA,CAAA5L,IAAA,CAAAhH,kBAAA;oBACAgH,IAAA,CAAAtH,YAAA;kBACA;oBACAsH,IAAA,CAAAtH,YAAA;kBACA;kBACA,IAAAsH,IAAA,CAAAtH,YAAA;oBACA,IAAA8Y,MAAA,OAAAC,UAAA,CACAzR,IAAA,CAAAhH,kBAAA,CAAA0Y,MACA;oBACA,IAAAC,MAAA;oBACA,SAAAtV,CAAA,MAAAA,CAAA,GAAAmV,MAAA,CAAA/U,MAAA,EAAAJ,CAAA;sBACAsV,MAAA,GAAAA,MAAA,GAAApR,MAAA,CAAAqR,YAAA,CAAAJ,MAAA,CAAAnV,CAAA;oBACA;oBAEAvJ,EAAA,CAAA+e,UAAA;sBACApe,IAAA,EAAAke,MAAA;sBACAG,QAAA,EAAA9R,IAAA,CAAA9G;oBACA,GAAA7F,IAAA,CACAC,GAAA,QACA6c,GAAA,MACA;kBACA;kBACAnQ,IAAA,CAAA/G,2BAAA;kBACA+G,IAAA,CAAAhH,kBAAA;gBACA;cACA;YACA;YACA,KAAAF,YAAA,CAAAiZ,OAAA,MAAAnZ,IAAA,CAAAoZ,WAAA;YACA,KAAAnZ,QAAA,CAAAkZ,OAAA,MAAAjZ,YAAA;UACA,GACA2H,KAAA,CAAAC,GAAA;YACA3F,OAAA,CAAAC,GAAA,WAAA0F,GAAA;UACA;QACA;UACA;UACA3F,OAAA,CAAAC,GAAA;QACA;MACA;QACA;QACA,KAAA9B,kBAAA;QACA8G,IAAA,CAAAiS,UAAA;QACA,KAAAC,sBAAA;QACApf,EAAA,CAAAqf,eAAA;UACAxb,OAAA,OAAAG;QACA,GAAAzD,IAAA,CACAC,GAAA;UACA;QAAA,CACA,EACA6c,GAAA;UACA;QAAA,CAEA;QACA;QACA;QACA;QACA;MACA;IACA;;IAEA8B,WAAA;MACA,IAAAjS,IAAA;MACA,UAAAzH,WAAA;QACA,KAAAI,SAAA,CAAAyZ,SAAA,GAAAjM,OAAA,WAAAkM,KAAA;UACAA,KAAA,CAAAC,IAAA;QACA;QACA,KAAAxZ,YAAA,CAAAyZ,UAAA,MAAA3Z,IAAA,CAAAoZ,WAAA;QACA,KAAAnZ,QAAA,CAAA0Z,UAAA,MAAAzZ,YAAA;QACA,KAAAF,IAAA,CAAA4Z,KAAA;MACA;IACA;IACAtC,aAAA;MACA,IAAAlQ,IAAA;MACA,KAAA1H,SAAA,SAAAA,SAAA;MACA,SAAAA,SAAA;QACAxF,EAAA,CAAA2f,aAAA;UACA9b,OAAA,EAAA4J,MAAA,MAAAzJ,eAAA;QACA,GAAAzD,IAAA,CACAC,GAAA,QACA6c,GAAA,MACA;MACA;QACArd,EAAA,CAAA4f,kBAAA;UACA/b,OAAA,EAAA4J,MAAA,MAAAzJ,eAAA;QACA,GAAAzD,IAAA,CACAC,GAAA,QACA6c,GAAA,MACA;QACA,KAAA3X,iBAAA;QACA,KAAAC,eAAA;MACA;IACA;IAEAkS,gBAAAhU,OAAA;MACA,IAAAqJ,IAAA;MACArN,GAAA,CAAAkO,EAAA,eAAAlK,OAAA,EAAAlD,IAAA;QACAuM,IAAA,CAAA2S,sBAAA,CAAAlf,IAAA,CAAAA,IAAA;QACA,KAAA+E,iBAAA;QAEA,KAAAoa,cAAA,GAAAnU,UAAA;UACA,KAAAjG,iBAAA;UACAwH,IAAA,CAAA2S,sBAAA;QACA;MACA;IACA;IAEAA,uBAAAlf,IAAA,EAAAof,IAAA;MACA,IAAArB,MAAA;MACA,IAAAsB,OAAA;MACA,IAAAxB,GAAA;MACA,IAAAtR,IAAA;MACA,KAAAvH,eAAA,IAAAhF,IAAA;MACA,SAAA+E,iBAAA;QACA8Y,GAAA,QAAA7Y,eAAA,CAAAsa,KAAA;QACA,SAAA1W,CAAA,MAAAA,CAAA,GAAAiV,GAAA,CAAA7U,MAAA,EAAAJ,CAAA;UACAmV,MAAA,CAAAnV,CAAA,IAAAiV,GAAA,CAAAjV,CAAA,EAAAK,UAAA;QACA;QACA8U,MAAA,OAAAC,UAAA,CAAAD,MAAA;QACAsB,OAAA,OAAAvB,YAAA,CAAAC,MAAA,CAAAE,MAAA;QACA,KAAAmB,IAAA;UACA;UACA,IAAAG,UAAA,OAAAzB,YAAA;UACA,SAAAlV,CAAA,MAAAA,CAAA,SAAAA,CAAA;YACA,IAAAA,CAAA,GAAAyW,OAAA,CAAArW,MAAA;cACAuW,UAAA,CAAA3W,CAAA,IAAAyW,OAAA,CAAAzW,CAAA;YACA;cACA2W,UAAA,CAAA3W,CAAA;YACA;UACA;UACAyW,OAAA,GAAAE,UAAA;UACA;QACA;;QACAhT,IAAA,CAAAiT,WAAA,CAAAH,OAAA;QAEA,KAAAra,eAAA;QACA,KAAAD,iBAAA;MACA;MACA,IAAAqa,IAAA;QACAK,YAAA,MAAAN,cAAA;MACA;IACA;IAEAK,YAAAxf,IAAA,EAAA0f,QAAA,EAAApC,UAAA;MACA,IAAA/Q,IAAA;MACA,IAAAoT,QAAA,QAAAtW,MAAA,CAAAgU,YAAA,IAAAhU,MAAA,CAAAuW,kBAAA;QACAtC,UAAA,EAAAA;MACA;MAEA,IAAAuC,aAAA,GAAAF,QAAA,CAAAG,YAAA,CACAJ,QAAA,EACA1f,IAAA,CAAAgJ,MAAA,EACAsU,UACA;MAEA,SAAAX,OAAA,MAAAA,OAAA,GAAA+C,QAAA,EAAA/C,OAAA;QACA,IAAAoD,YAAA,GAAAF,aAAA,CAAAlC,cAAA,CAAAhB,OAAA;QACA,SAAA/T,CAAA,MAAAA,CAAA,GAAA5I,IAAA,CAAAgJ,MAAA,EAAAJ,CAAA;UACA,IAAAA,CAAA,GAAA5I,IAAA,CAAAgJ,MAAA;YACA+W,YAAA,CAAAnX,CAAA,IAAA5I,IAAA,CAAA4I,CAAA;UACA;YACAmX,YAAA,CAAAnX,CAAA;UACA;QACA;MACA;;MAEA;MACA;;MAEA,IAAAoX,MAAA,GAAAL,QAAA,CAAAM,kBAAA;MACAD,MAAA,CAAA/B,MAAA,GAAA4B,aAAA;MACAG,MAAA,CAAA1B,OAAA,CAAAqB,QAAA,CAAApB,WAAA;MACAyB,MAAA,CAAAE,KAAA;IACA;IAEAC,SAAA;MACA,IAAA5T,IAAA;MACAlN,EAAA,CAAA+gB,SAAA;QACAld,OAAA,EAAA4J,MAAA,MAAAzJ,eAAA;MACA,GAAAzD,IAAA,CACAC,GAAA,QACA6c,GAAA,MACA;IACA;IACA1S,gBAAA8M,GAAA;MACA,IAAAvK,IAAA;MACA,SAAA1K,yBAAA,CAAAmH,MAAA;QACA,KAAAlH,iBAAA,GAAA4K,IAAA,CAAAC,KAAA,CACAD,IAAA,CAAAE,SAAA,MAAA/K,yBAAA,CACA;MACA;MACA,KAAAA,yBAAA;MACA,KAAAuB,QAAA;MACA,KAAAyD,SAAA,CAAA6L,OAAA,CAAA/J,CAAA,IAAAA,CAAA,CAAAqI,QAAA;MACA,KAAAnK,SAAA,CAAAiQ,GAAA,EAAA9F,QAAA,SAAAnK,SAAA,CAAAiQ,GAAA,EAAA9F,QAAA;MACA,SAAAnK,SAAA,CAAAiQ,GAAA,EAAA9F,QAAA;QACA,KAAAvP,YAAA,QAAAoF,SAAA,CAAAiQ,GAAA;QACA,KAAAhV,iBAAA,CAAAhC,IAAA,MAAA+G,SAAA,CAAAiQ,GAAA;QACA;QACA;QACA;QACA;QACA;QACA;MACA;QACA,SAAAlO,CAAA,SAAA9G,iBAAA;UACA,SAAAA,iBAAA,CAAA8G,CAAA,EAAAV,EAAA,SAAArB,SAAA,CAAAiQ,GAAA,EAAA5O,EAAA;YACA,KAAApG,iBAAA,CAAA6U,MAAA,CAAA/N,CAAA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;UACA;QACA;MACA;MACA,SAAA9G,iBAAA,CAAAkH,MAAA;QACA4N,QAAA;UACArK,IAAA,CAAAsK,iBAAA;QACA;MACA;IACA;IACAwJ,eAAA;MACA;MACA,KAAAjW,MAAA,CAAAC,QAAA;IACA;IACAiW,gBAAA;MACAjhB,EAAA,CAAAihB,eAAA;QAAArV,QAAA,EAAA6B,MAAA,MAAAzJ,eAAA;MAAA,GAAAzD,IAAA,CACAC,GAAA;QACA,IAAAoG,eAAA,QAAAA,eAAA;QACA,IAAAsa,kBAAA,GAAAta,eAAA,CAAAua,MAAA,CAAAhR,IAAA;UACA,OAAAA,IAAA,SAAAnM,eAAA;QACA;QACA,YAAA4C,eAAA,CAAA+C,MAAA;UACA,KAAA/C,eAAA,CAAAiI,GAAA;UACA,KAAA9D,MAAA,CAAAC,QAAA;UACA,KAAAD,MAAA,CAAAC,QAAA;QACA;QACAkW,kBAAA,CAAA7N,OAAA,CAAArB,CAAA;UACA,KAAApL,eAAA,CAAAnG,IAAA,CAAAuR,CAAA;UACA,KAAAjH,MAAA,CAAAC,QAAA,iCAAAgH,CAAA;QACA;QACA,KAAAjH,MAAA,CAAAC,QAAA;UACAnH,OAAA,OAAAG;QACA;QACA,KAAAgR,UAAA,CAAAkM,kBAAA;QAEA,KAAAld,eAAA;QACA,KAAA5B,YAAA;QACA,KAAAF,mBAAA;QACA,KAAAmD,wBAAA;QACA,KAAAgB,WAAA;QACA,KAAA0E,MAAA,CAAAC,QAAA;MACA,CACA;IACA;IAEAoW,MAAAC,KAAA;MACA,IAAAR,KAAA,OAAAlR,IAAA,GAAA2R,OAAA;MACA,WAAA3R,IAAA,GAAA2R,OAAA,KAAAT,KAAA,GAAAQ,KAAA;QACA;MACA;IACA;IACA1K,sBAAA9S,OAAA;MACA,IAAAsJ,MAAA,QAAAvG,eAAA;MACA,IAAAuG,MAAA,IAAAA,MAAA,CAAAxD,MAAA;QACA,IAAAwN,MAAA;QACA,SAAA5N,CAAA,MAAAA,CAAA,GAAA4D,MAAA,CAAAxD,MAAA,EAAAJ,CAAA;UACA,IAAA4D,MAAA,CAAA5D,CAAA,KAAA1F,OAAA;YACAsT,MAAA;UACA,QACA;QACA;QACA,IAAAA,MAAA;UACAhK,MAAA,CAAA1M,IAAA,CAAAoD,OAAA;UACA,KAAA+C,eAAA,CAAAnG,IAAA,CAAAoD,OAAA;UACA,KAAAkH,MAAA,CAAAC,QAAA,iCAAAnH,OAAA;QACA;MACA;QACA,IAAAuT,GAAA;QACAA,GAAA,CAAA3W,IAAA,CAAAoD,OAAA;QACA,KAAA+C,eAAA,CAAAnG,IAAA,CAAAoD,OAAA;QACA,KAAAkH,MAAA,CAAAC,QAAA,iCAAAnH,OAAA;MACA;IACA;IACAoG,gBAAApG,OAAA,EAAA0d,QAAA;MACA,KAAAxW,MAAA,CAAAC,QAAA;MAEA,IAAAuW,QAAA;QACA;MACA;MACA;QACA,SAAA9J,GAAA,IAAAzN,MAAA,CAAAwX,QAAA;UACA,IAAA/J,GAAA,IAAA5T,OAAA;YACAmG,MAAA,CAAAwX,QAAA,CAAA/J,GAAA,EAAA7F,KAAA,CAAA6P,GAAA;UACA;YACAzX,MAAA,CAAAwX,QAAA,CAAA/J,GAAA,EAAA7F,KAAA,CAAA6P,GAAA;UACA;QACA;MACA,SAAAzP,CAAA,GAEA;MACA/J,OAAA,CAAAC,GAAA,YAAArE,OAAA;MACA,IAAA6d,aAAA,QAAAla,SAAA,CAAA0J,IAAA,CAAA3H,CAAA,IAAAA,CAAA,CAAA1F,OAAA,IAAAA,OAAA;MACAhE,GAAA,CAAA+O,IAAA,qBAAA8S,aAAA;MACA,KAAAlO,SAAA;QACA,IAAA3P,OAAA,SAAAzB,YAAA,CAAAyB,OAAA;UACA,IAAAwN,KAAA,GAAAnF,QAAA,CAAAC,sBAAA;UACA,SAAAmF,KAAA,MAAAA,KAAA,GAAAD,KAAA,CAAA1H,MAAA,EAAA2H,KAAA;YACAD,KAAA,CAAAC,KAAA,EAAAlF,KAAA,CAAAmF,UAAA;UACA;UACA;QACA;QACA,IAAAF,KAAA,GAAAnF,QAAA,CAAAC,sBAAA;QACA,SAAAmF,KAAA,MAAAA,KAAA,GAAAD,KAAA,CAAA1H,MAAA,EAAA2H,KAAA;UACAD,KAAA,CAAAC,KAAA,EAAAlF,KAAA,CAAAmF,UAAA;UACA,SAAAvJ,MAAA,CAAAsJ,KAAA,EAAA4E,GAAA,IAAArS,OAAA;YACAoE,OAAA,CAAAC,GAAA;YACAmJ,KAAA,CAAAC,KAAA,EAAAlF,KAAA,CAAAmF,UAAA;UACA;QACA;MACA;;MAEA;MACA;MACA,KAAAiC,SAAA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,IAAAnC,KAAA,GAAAnF,QAAA,CAAAC,sBAAA;QACA,SAAAmF,KAAA,MAAAA,KAAA,GAAAD,KAAA,CAAA1H,MAAA,EAAA2H,KAAA;UACAD,KAAA,CAAAC,KAAA,EAAAlF,KAAA,CAAAmF,UAAA;UACA;UACA,IAAAE,SAAA,QAAAjK,SAAA,CAAA0J,IAAA,CACA5H,CAAA,IAAAA,CAAA,CAAAT,EAAA,IAAAwI,KAAA,CAAAC,KAAA,EAAAqQ,OAAA,CAAArQ,KACA;UACA,IAAAG,SAAA;YACAA,SAAA,CAAAE,QAAA;UACA;UACA,IAAA9N,OAAA,IAAAwN,KAAA,CAAAC,KAAA,EAAAqQ,OAAA,CAAArQ,KAAA;YACAD,KAAA,CAAAC,KAAA,EAAAlF,KAAA,CAAAmF,UAAA;YACA,KAAAzK,eAAA,GAAAjD,OAAA;UACA;QACA;QACA;QACA;MACA;IACA;;IACAqG,iBAAArG,OAAA,EAAA+d,gBAAA;MACA,KAAAxf,YAAA,QAAAoF,SAAA,CAAA0J,IAAA,CAAA5H,CAAA,IAAAA,CAAA,CAAAT,EAAA,IAAAhF,OAAA;MACA,KAAAkD,WAAA,QAAAS,SAAA,CAAA0J,IAAA,CAAA5H,CAAA,IAAAA,CAAA,CAAAT,EAAA,IAAAhF,OAAA;MACA,KAAA/C,kBAAA,GAAA8gB,gBAAA;MACA,KAAA/gB,eAAA;IACA;IACA2J,kBAAA3G,OAAA,EAAA0d,QAAA;MACA;MACA;MACA,KAAA/N,SAAA;QACA;QACA;QACA;QACA;QACA;QACA,KAAAzM,WAAA,QAAAS,SAAA,CAAA0J,IAAA,CAAA5H,CAAA,IAAAA,CAAA,CAAAT,EAAA,IAAAhF,OAAA;QACA;QACAoE,OAAA,CAAAC,GAAA,uBAAAnB,WAAA;QACA,KAAAjG,kBAAA;QACA,KAAAD,eAAA;MACA;IACA;IACA6M,cAAA7J,OAAA,EAAA8T,UAAA,EAAAtX,QAAA,EAAAwhB,IAAA;MACA,IAAA3U,IAAA;MACAvB,UAAA;QACAtL,QAAA,CAAAgV,QAAA,CAAA5H,MAAA,CAAA5J,OAAA,GAAA8T,UAAA,EAAApX,IAAA,CAAAC,GAAA;UACAyH,OAAA,CAAAC,GAAA,gBAAA1H,GAAA;UACA;UACAqhB,IAAA;UACA,IAAAlK,UAAA;YACAzK,IAAA,CAAAhI,aAAA,8BAAA1E,GAAA,CAAAG,IAAA,CAAAA,IAAA;YACAuM,IAAA,CAAA/H,gBAAA,CAAAtB,OAAA,IACA,2BAAArD,GAAA,CAAAG,IAAA,CAAAA,IAAA;YACAd,GAAA,CAAA+O,IAAA;cAAA1J,aAAA,EAAAgI,IAAA,CAAAhI;YAAA;UACA;YACAgI,IAAA,CAAA5H,aAAA,8BAAA9E,GAAA,CAAAG,IAAA,CAAAA,IAAA;YACAuM,IAAA,CAAA3H,gBAAA,CAAA1B,OAAA,IACA,2BAAArD,GAAA,CAAAG,IAAA,CAAAA,IAAA;YACAd,GAAA,CAAA+O,IAAA;cAAAtJ,aAAA,EAAA4H,IAAA,CAAA5H;YAAA;UACA;UACA;UACA;UACA,IAAAzB,OAAA,SAAAG,eAAA;YACA;YACA,KAAA+G,MAAA,CAAAC,QAAA;cACAnH,OAAA;cACAyR,GAAA,EAAA9U,GAAA,CAAAG,IAAA,CAAAA;YACA;UACA;UACAgL,UAAA;YACAuB,IAAA,CAAA4U,gBAAA,CAAAje,OAAA,EAAA8T,UAAA,EAAAtX,QAAA,EAAAwhB,IAAA;UACA;QACA;MACA;IACA;IACAC,iBAAAje,OAAA,EAAA8T,UAAA,EAAAtX,QAAA,EAAAwhB,IAAA;MACA,IAAA3U,IAAA;MACA,IAAArJ,OAAA,SAAAG,eAAA;QACA3D,QAAA,CAAAgV,QAAA,CAAA5H,MAAA,CAAA5J,OAAA,GAAA8T,UAAA,EAAApX,IAAA,CAAAC,GAAA;UACAyH,OAAA,CAAAC,GAAA,gBAAA1H,GAAA;UACA;UACA;UACA;YACA,IAAAmX,UAAA;cACAzK,IAAA,CAAAhI,aAAA,8BAAA1E,GAAA,CAAAG,IAAA,CAAAA,IAAA;cACAuM,IAAA,CAAA/H,gBAAA,CAAAtB,OAAA,IACA,2BAAArD,GAAA,CAAAG,IAAA,CAAAA,IAAA;cACAd,GAAA,CAAA+O,IAAA;gBAAA1J,aAAA,EAAAgI,IAAA,CAAAhI;cAAA;YACA;cACAgI,IAAA,CAAA5H,aAAA,8BAAA9E,GAAA,CAAAG,IAAA,CAAAA,IAAA;cACAuM,IAAA,CAAA3H,gBAAA,CAAA1B,OAAA,IACA,2BAAArD,GAAA,CAAAG,IAAA,CAAAA,IAAA;cACAd,GAAA,CAAA+O,IAAA;gBAAAtJ,aAAA,EAAA4H,IAAA,CAAA5H;cAAA;YACA;UACA;UACAqG,UAAA;YACAuB,IAAA,CAAA4U,gBAAA,CAAAje,OAAA,EAAA8T,UAAA,EAAAtX,QAAA,EAAAwhB,IAAA;UACA;QAEA;MAGA,OACA;QACAlW,UAAA;UACAuB,IAAA,CAAA4U,gBAAA,CAAAje,OAAA,EAAA8T,UAAA,EAAAtX,QAAA,EAAAwhB,IAAA;QACA;MACA;IAEA;IACAE,kBAAAle,OAAA;MACA,KAAAqB,aAAA,QAAAC,gBAAA,CAAAtB,OAAA;MACA,KAAAyB,aAAA,QAAAC,gBAAA,CAAA1B,OAAA;MACA,KAAAkH,MAAA,CAAAC,QAAA;MACA,KAAAF,WAAA,CAAAjH,OAAA;IACA;IACA6G,eAAA7G,OAAA,EAAAme,UAAA;MACA,KAAAlb,eAAA,GAAAjD,OAAA;MACA,KAAA2P,SAAA;QACA,IAAA3P,OAAA,SAAAyC,cAAA;UACAzC,OAAA;UACA,IAAAwN,KAAA,GAAAnF,QAAA,CAAAC,sBAAA;UACA,SAAAmF,KAAA,MAAAA,KAAA,GAAAD,KAAA,CAAA1H,MAAA,EAAA2H,KAAA;YACAD,KAAA,CAAAC,KAAA,EAAAlF,KAAA,CAAAmF,UAAA;UACA;UACA;QACA;QACA,KAAAjL,cAAA,GAAAzC,OAAA;QACA,IAAAwN,KAAA,GAAAnF,QAAA,CAAAC,sBAAA;QACA,SAAAmF,KAAA,MAAAA,KAAA,GAAAD,KAAA,CAAA1H,MAAA,EAAA2H,KAAA;UACAD,KAAA,CAAAC,KAAA,EAAAlF,KAAA,CAAAmF,UAAA;UACA,IAAAD,KAAA,IAAA0Q,UAAA;YACA/Z,OAAA,CAAAC,GAAA;YACAmJ,KAAA,CAAAC,KAAA,EAAAlF,KAAA,CAAAmF,UAAA;UACA;QACA;MACA;MACA,KAAAiC,SAAA;QACA,IACA3P,OAAA,SAAAzB,YAAA,CAAAyG,EAAA,IACA,KAAAzG,YAAA,CAAAuP,QAAA,UACA;UACA,KAAAvP,YAAA,CAAAuP,QAAA;UACA,KAAAvP,YAAA,CAAAwP,KAAA;UACA,KAAAxP,YAAA;UACA,IAAAiP,KAAA,GAAAnF,QAAA,CAAAC,sBAAA;UACA,SAAAmF,KAAA,MAAAA,KAAA,GAAAD,KAAA,CAAA1H,MAAA,EAAA2H,KAAA;YACAD,KAAA,CAAAC,KAAA,EAAAlF,KAAA,CAAAmF,UAAA;UACA;UACA;QACA;QACA,IAAAF,KAAA,GAAAnF,QAAA,CAAAC,sBAAA;QACA,SAAAmF,KAAA,MAAAA,KAAA,GAAAD,KAAA,CAAA1H,MAAA,EAAA2H,KAAA;UACAD,KAAA,CAAAC,KAAA,EAAAlF,KAAA,CAAAmF,UAAA;UACA,IAAArO,KAAA,GAAAmO,KAAA,CAAAC,KAAA,EAAAnF,sBAAA;UACAlE,OAAA,CAAAC,GAAA,gBAAAhF,KAAA,IAAAsO,WAAA;UACA,IAAAC,SAAA,QAAAjK,SAAA,CAAA0J,IAAA,CACA5H,CAAA,IAAAoI,QAAA,CAAApI,CAAA,CAAAT,EAAA,KAAA6I,QAAA,CAAAxO,KAAA,IAAAsO,WAAA,KAAAlI,CAAA,CAAAT,EAAA,IAAAhF,OACA;UACA4N,SAAA,CAAAE,QAAA;UACA,IAAAN,KAAA,CAAAC,KAAA,EAAAqQ,OAAA,CAAArQ,KAAA,IAAAzN,OAAA;YACAwN,KAAA,CAAAC,KAAA,EAAAlF,KAAA,CAAAmF,UAAA;YACA,KAAAnP,YAAA,QAAAoF,SAAA,CAAA0J,IAAA,CAAA5H,CAAA,IAAAA,CAAA,CAAAT,EAAA,IAAAhF,OAAA;YACA,KAAAzB,YAAA,CAAAuP,QAAA;UACA;QACA;QAEA,KAAA5G,MAAA,CAAAC,QAAA,mCAAA5I,YAAA;MACA;IACA;IACA6f,eAAApe,OAAA;MACA,KAAAG,eAAA,GAAAH,OAAA;MACA,KAAAod,eAAA;MACAhZ,OAAA,CAAAC,GAAA,YAAArE,OAAA,OAAAG,eAAA;MACA,IAAAmJ,MAAA,QAAAvG,eAAA;MACA,IAAAuG,MAAA;QACA,SAAA5D,CAAA,MAAAA,CAAA,GAAA4D,MAAA,CAAAxD,MAAA,EAAAJ,CAAA;UACA,IAAAmI,QAAA,CAAAvE,MAAA,CAAA5D,CAAA,MAAAmI,QAAA,CAAA7N,OAAA;YACAoE,OAAA,CAAAC,GAAA,gBAAAF,MAAA;YAEA,SAAAka,EAAA,MAAAA,EAAA,QAAAla,MAAA,CAAA2B,MAAA,EAAAuY,EAAA;cACA,IAAAxQ,QAAA,MAAA1J,MAAA,CAAAka,EAAA,EAAAhM,GAAA,KAAAxE,QAAA,CAAA7N,OAAA;gBACA,KAAAmE,MAAA,CAAAsP,MAAA,CAAA4K,EAAA;gBACAja,OAAA,CAAAC,GAAA,gBAAAF,MAAA;gBACA;cACA;YACA;YACA;YACAmF,MAAA,CAAAmK,MAAA,CAAA/N,CAAA;YACAtB,OAAA,CAAAC,GAAA,WAAAiF,MAAA;YACA,YAAAvG,eAAA,CAAA+C,MAAA;cACA,KAAA/C,eAAA,CAAAiI,GAAA;cACA,KAAA9D,MAAA,CAAAC,QAAA;cACA,KAAAD,MAAA,CAAAC,QAAA;YACA;YAEAmC,MAAA,CAAAkG,OAAA,CAAArB,CAAA;cACA,KAAApL,eAAA,CAAAnG,IAAA,CAAAuR,CAAA;cACA,KAAAjH,MAAA,CAAAC,QAAA,iCAAAgH,CAAA;YACA;YAEA;UACA;QACA;MACA;IACA;IACAmQ,kBAAA1K,GAAA;IACAhM,mBAAA;MACA,IAAApJ,UAAA;MACA,IAAAC,aAAA;MACA,IAAAC,YAAA;MACA0F,OAAA,CAAAC,GAAA,wBAAAV,SAAA,CAAAmC,MAAA;MACA,KAAAnC,SAAA,CAAA6L,OAAA,CAAAvG,OAAA;QACA;QACA,IAAAA,OAAA,CAAApJ,MAAA;UACArB,UAAA;QACA,WAAAyK,OAAA,CAAApJ,MAAA;UACAnB,YAAA;QACA,WAAAuK,OAAA,CAAApJ,MAAA;UACAnB,YAAA;QACA;UACAD,aAAA;QACA;MACA;MACA,KAAAD,UAAA,GAAAA,UAAA;MACA,KAAAE,YAAA,GAAAA,YAAA;MACA,KAAAD,aAAA,GAAAA,aAAA;IACA;EACA;EACA8f,KAAA;IACAlgB,oBAAAmgB,QAAA,EAAAC,QAAA;MACAziB,GAAA,CAAA+O,IAAA;QACA1M,mBAAA,EAAAmgB,QAAA;QACAE,SAAA,OAAA9f,iBAAA;MACA;IACA;IACA4C,yBAAAgd,QAAA,EAAAC,QAAA;MACAziB,GAAA,CAAA+O,IAAA;QACAvJ,wBAAA,EAAAgd;MACA;IACA;IACA7a,UAAA6a,QAAA,EAAAC,QAAA;MACAra,OAAA,CAAAC,GAAA,aAAAma,QAAA;MACA,IAAAlV,MAAA,QAAAvG,eAAA;MACAqB,OAAA,CAAAC,GAAA,SAAAiF,MAAA;MACA,IAAAqV,aAAA;MACA,IAAArV,MAAA,EACA;QACA,OAAAA,MAAA,CAAAxD,MAAA;UACA6Y,aAAA,CAAA/hB,IAAA,CAAA0M,MAAA,CAAA0B,GAAA;QACA;MACA;MACA,IAAA2T,aAAA,CAAA7Y,MAAA;QACAgC,UAAA;UACA,KAAAqJ,UAAA,CAAAwN,aAAA;QACA;MACA;IACA;IACAna,SAAAga,QAAA,EAAAC,QAAA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IAAA,CACA;IACA7Z,aAAA;MACA,KAAAA,YAAA,CAAA4K,OAAA,CAAA5J,CAAA;QACA,KAAAsB,MAAA,CAAAC,QAAA;UACAmE,MAAA,EAAA1F,CAAA,CAAAZ,EAAA;UACArH,QAAA,EAAAiI,CAAA,CAAAgH;QACA;MACA;IACA;IACA3I,aAAAua,QAAA,EAAAC,QAAA;MACA,IAAAjL,KAAA,QAAA7P,SAAA,CAAA0J,IAAA,CAAA5H,CAAA,IAAAA,CAAA,CAAAzF,OAAA,IAAAwe,QAAA;MACA,IAAAhL,KAAA;QACA,KAAArQ,gBAAA,GAAAqQ,KAAA;MACA;QACA,KAAArQ,gBAAA;MACA;IACA;EACA;AACA"},"metadata":{},"sourceType":"module","externalDependencies":[]}