{"version":3,"file":"MchOmsAssets/js/UtilityJs.0d55749f13.js","sources":["webpack:///./src/Common/Utility.js"],"sourcesContent":["'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.search.js\";\nimport \"core-js/modules/es.string.split.js\";\nimport \"core-js/modules/es.string.replace.js\";\nimport \"core-js/modules/es.object.assign.js\";\nimport \"core-js/modules/es.array.concat.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.regexp.to-string.js\";\nimport \"core-js/modules/es.number.to-fixed.js\";\nimport \"core-js/modules/es.number.constructor.js\";\nimport \"core-js/modules/es.array.slice.js\";\nimport \"core-js/modules/es.regexp.constructor.js\";\nimport \"core-js/modules/es.array.splice.js\";\nimport \"core-js/modules/web.dom-collections.for-each.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\nimport ListViewRequest from \"@/Common/ListViewRequest.js\";\nimport FormViewRequest from \"@/Common/FormViewRequest.js\";\nimport Vue from 'vue';\nimport Configuration from \"./Configuration\";\nimport apiService from '@/Common/ApiService';\nimport NavigationService from '@/Common/NavigationService'; //import moment from \"moment\";\n\nvar Utility = {\n vue: new Vue(),\n HasServerError: false,\n LastModifyTime: new Date(),\n Nav: null,\n SerialNumber: 0,\n Session: {},\n Argument: {},\n Bag: {},\n RecordMoveButtonClick: null,\n //#region Job\n PrepareJob: function PrepareJob(vueComponent, responseData, finishHandler) {\n var jobId;\n var path;\n path = location.pathname + location.search;\n\n if (responseData.ValueSet.JobId != null) {\n Utility.SaveBag(\"JobId_\" + path, responseData.ValueSet.JobId);\n }\n },\n RemoveJob: function RemoveJob(vueComponent, jobId) {\n var bags;\n var bagName, bagValue;\n var i;\n bags = this.GetAllBags();\n\n for (i = 0; i < bags.length; i++) {\n bagName = bags[i].Name;\n bagValue = bags[i].Value;\n\n if (bagName.indexOf(\"JobId_\") == 0 && bagValue == jobId) {\n this.ClearBag(bagName);\n break;\n }\n }\n },\n //#endregion\n CreateListViewRequest: function CreateListViewRequest(vueComponent) {},\n LoadListViewResponse: function LoadListViewResponse(vueComponent, responseData, detailCacheData) {\n var data;\n var equal = false;\n var i = 0;\n this.ProcessIso8601Text(vueComponent, responseData);\n data = vueComponent.$data;\n\n if (responseData.Paging != null) {\n data.Paging = responseData.Paging;\n }\n\n data.OrderBy = responseData.OrderBy;\n data.CheckedAll = false;\n\n if (responseData.AttributeSet != null) {\n if (data.AttributeSet == null) {\n data.AttributeSet = {};\n }\n\n this.SetNotNullAttributes(vueComponent, data.AttributeSet, responseData.AttributeSet);\n }\n\n if (responseData.Query != null) {\n if (data.Query == null) {\n data.Query = {};\n }\n\n this.SetNotNullAttributes(vueComponent, data.Query, responseData.Query);\n\n if (responseData.Query.AttributeSet != null) {\n for (var colunName in data.Query.AttributeSet) {\n var newAttributObj = {};\n var attributeObj = void 0;\n attributeObj = data.Query.AttributeSet[colunName];\n\n for (var propertyName in attributeObj) {\n newAttributObj[propertyName] = attributeObj[propertyName];\n } //end for (var propertyName in attributeObj) {\n\n\n data.Query.AttributeSet[colunName] = newAttributObj;\n } //end for (var colunName in data.Query.AttributeSet) {\n\n }\n } //end if (responseData.Query != null) {\n\n\n if (responseData.ValueSet != null) {\n this.SetNotNullAttributes(vueComponent, data.ValueSet, responseData.ValueSet);\n\n if (responseData.AttributeSet != null) {\n for (var colunName in data.AttributeSet) {\n var _newAttributObj = {};\n\n var _attributeObj = void 0;\n\n _attributeObj = data.AttributeSet[colunName];\n\n for (var propertyName in _attributeObj) {\n _newAttributObj[propertyName] = _attributeObj[propertyName];\n } //end for (var propertyName in attributeObj) {\n\n\n data.AttributeSet[colunName] = _newAttributObj;\n } //end for (var colunName in data.Query.AttributeSet) {\n\n }\n }\n\n if (responseData.Rows != null) {\n data.Rows.length = 0;\n this.PrepareSeqNo(responseData);\n\n for (i = 0; i < responseData.Rows.length; i++) {\n responseData.Rows[i].Checked = false;\n data.Rows.push(responseData.Rows[i]);\n }\n }\n\n if (detailCacheData != null) {\n for (i = 0; i < responseData.Rows.length; i++) {\n equal = this.CompareValueSet(detailCacheData.ValueSet, responseData.Rows[i].ValueSet);\n\n if (equal) {\n responseData.Rows[i].LastDetail = true;\n } else {\n responseData.Rows[i].LastDetail = false;\n }\n }\n\n setTimeout(function () {\n this.ClearLastDetailAttribute(vueComponent);\n }.bind(this), 1200);\n }\n },\n PrepareSeqNo: function PrepareSeqNo(responseData) {\n var i;\n var baseNo;\n baseNo = responseData.Paging.RecordPerPage * (responseData.Paging.CurrentPageNumber - 1);\n\n for (i = 0; i < responseData.Rows.length; i++) {\n responseData.Rows[i].ValueSet.SeqNo = baseNo + i + 1;\n }\n },\n ClearLastDetailAttribute: function ClearLastDetailAttribute(vueComponent) {\n var trElements;\n var i;\n trElements = document.querySelectorAll(\"TR.LastDetail\");\n\n for (i = 0; i < trElements.length; i++) {\n trElements[i].classList.remove(\"LastDetail\");\n }\n },\n CompareValueSet: function CompareValueSet(detailValueSet, listValueSet) {\n var equal = true;\n var propertyName;\n var count = 0;\n\n for (propertyName in listValueSet) {\n if (detailValueSet.hasOwnProperty(propertyName)) {\n if (Utility.IsDateObject(detailValueSet[propertyName])) {\n if (this.GetDateText(listValueSet[propertyName]) == detailValueSet[propertyName]) {\n count++;\n } else {\n break;\n }\n } else if (listValueSet[propertyName] == detailValueSet[propertyName]) {\n count++;\n } else {\n equal = false;\n break;\n }\n }\n\n if (count >= 5) {\n break;\n }\n }\n\n return equal;\n },\n GetQueryStringListBySearchPath: function GetQueryStringListBySearchPath(searchPath) {\n var queryStringList = [];\n var tokens, pair;\n var queryStringName, queryStringValue;\n var i;\n tokens = searchPath.split(\"&\");\n\n for (i = 0; i < tokens.length; ++i) {\n pair = tokens[i].split('=', 2);\n queryStringName = \"\";\n queryStringValue = \"\";\n\n if (pair.length == 1) {\n queryStringName = pair[0];\n } else {\n queryStringName = pair[0];\n queryStringValue = pair[1];\n queryStringValue = decodeURIComponent(queryStringValue.replace(/\\+/g, \" \"));\n }\n\n queryStringList.push({\n Name: queryStringName,\n Value: queryStringValue\n });\n }\n\n return queryStringList;\n },\n GetSingleShotQueryStringList: function GetSingleShotQueryStringList(queryStringList) {\n var singleShotQueryStringList = [];\n var i;\n\n for (i = 0; i < queryStringList.length; i++) {\n if (queryStringList[i].Name.indexOf(\"..\") == 0) {\n singleShotQueryStringList.push(queryStringList[i]);\n }\n }\n\n return singleShotQueryStringList;\n },\n GetNonSingleShotQueryStringList: function GetNonSingleShotQueryStringList(queryStringList) {\n var nonSingleShotQueryStringList = [];\n var i;\n\n for (i = 0; i < queryStringList.length; i++) {\n if (queryStringList[i].Name.indexOf(\"..\") < 0) {\n nonSingleShotQueryStringList.push(queryStringList[i]);\n }\n }\n\n return nonSingleShotQueryStringList;\n },\n RenderSearchPathWithoutSingleShot: function RenderSearchPathWithoutSingleShot(queryStringList) {\n var newSearchPath = \"\";\n var singleShotQueryStringList = [];\n var nonSingleShotQueryStringList = [];\n var i;\n singleShotQueryStringList = this.GetSingleShotQueryStringList(queryStringList);\n\n if (singleShotQueryStringList.length > 0) {\n nonSingleShotQueryStringList = this.GetNonSingleShotQueryStringList(queryStringList);\n } else {\n nonSingleShotQueryStringList = queryStringList;\n }\n\n for (i = 0; i < nonSingleShotQueryStringList.length; i++) {\n newSearchPath = nonSingleShotQueryStringList[i].Name + \"=\" + nonSingleShotQueryStringList[i].Value;\n\n if (i < nonSingleShotQueryStringList.length - 1) {\n newSearchPath += \"&\";\n }\n }\n\n return newSearchPath;\n },\n PrepareListViewRequest: function PrepareListViewRequest(vueComponent) {\n var listViewRequest = new ListViewRequest();\n var data;\n var dateText;\n var queryStringList;\n var singleShotQueryStringList;\n var singleShotTargetName;\n var nonSingleShotPath,\n nonSingleShotSearchPath = \"\";\n var dateTimeText;\n var dateObject;\n var i;\n data = vueComponent.$data;\n\n if (data.FirstQuery == null) {\n data.FirstQuery = true;\n } else {\n data.FirstQuery = false;\n }\n\n if (this.Nav == null) {\n this.Nav = new NavigationService(vueComponent);\n }\n\n if (this.Nav.MatchLastPath()) {\n var pathInfo;\n pathInfo = this.Nav.PeekPath();\n vueComponent.$args = pathInfo.Argument;\n }\n\n listViewRequest.FirstQuery = data.FirstQuery;\n listViewRequest.SourcePagePath = vueComponent.$route.path;\n Object.assign(listViewRequest.Query, data.Query);\n queryStringList = this.GetQueryStringListBySearchPath(window.location.search.substr(1));\n singleShotQueryStringList = this.GetSingleShotQueryStringList(queryStringList);\n\n if (singleShotQueryStringList.length > 0) {\n for (i = 0; i < singleShotQueryStringList.length; i++) {\n if (singleShotQueryStringList[i].Name.indexOf(\"...\") == 0) {\n singleShotTargetName = singleShotQueryStringList[i].Name.replace(\"...\", \"\");\n this.SaveBag(singleShotTargetName, singleShotQueryStringList[i].Value);\n } else if (singleShotQueryStringList[i].Name.indexOf(\"..\") == 0) {\n singleShotTargetName = singleShotQueryStringList[i].Name.replace(\"..\", \"\");\n listViewRequest.Query.ValueSet[singleShotTargetName] = singleShotQueryStringList[i].Value;\n }\n }\n\n nonSingleShotSearchPath = this.RenderSearchPathWithoutSingleShot(queryStringList);\n\n if (nonSingleShotSearchPath != \"\") {\n nonSingleShotPath = window.location.pathname + \"?\" + nonSingleShotSearchPath;\n } else {\n nonSingleShotPath = window.location.pathname;\n }\n\n vueComponent.$router.push(nonSingleShotPath);\n }\n\n for (i in data.Query.ValueSet) {\n if (data.Query.ValueSet[i] == \"\") {\n data.Query.ValueSet[i] = null;\n }\n\n if (data.Query.ValueSet[i] != null && data.Query.ValueSet[i] != \"\") {\n if (typeof data.Query.ValueSet[i].getMonth == \"function\") {\n dateTimeText = this.GetDateTimeText(data.Query.ValueSet[i]);\n dateObject = new Date(dateTimeText); //dateText = moment(data.Query.ValueSet[i]).format(\"YYYY/MM/DD HH:mm:ss\");\n //dateText = dateText.replace(\" 00:00:00\", \"\");\n //data.Query.ValueSet[i] = dateText;\n\n data.Query.ValueSet[i] = dateObject;\n } else if (typeof data.Query.ValueSet[i] == \"string\") {\n data.Query.ValueSet[i] = data.Query.ValueSet[i].replace(/^\\s+|\\s+$/g, '');\n }\n\n if (typeof data.Query.ValueSet[i] == \"string\" && data.Query.AttributeSet[i] != null && (data.Query.AttributeSet[i].DataType == \"Date\" || data.Query.AttributeSet[i].DataType == \"DateTime\")) {\n data.Query.ValueSet[i] = new Date(data.Query.ValueSet[i]);\n }\n }\n }\n\n listViewRequest.OrderBy = data.OrderBy;\n\n if (data.Paging != null) {\n listViewRequest.Paging.RecordPerPage = data.Paging.RecordPerPage;\n listViewRequest.Paging.CurrentPageNumber = data.Paging.CurrentPageNumber;\n listViewRequest.Paging.TotalCount = data.Paging.TotalCount;\n }\n\n for (i = 0; i < data.Rows.length; i++) {\n if (data.Rows[i].Checked == true) {\n listViewRequest.SelectedRows.push(data.Rows[i]);\n }\n\n listViewRequest.SelectedRowsFromRequest = listViewRequest.SelectedRows;\n }\n\n this.ProcessRquestDateObject(vueComponent, listViewRequest);\n return listViewRequest;\n },\n ProcessResponseData: function ProcessResponseData(responseData) {\n var propertyName;\n var propertyValue;\n var i;\n\n for (propertyName in responseData) {\n propertyValue = responseData[propertyName];\n\n if (propertyValue != null) {\n if (propertyName == \"AttributeSet\" || propertyName == \"ValueSet\" || propertyName == \"SelectedRow\") {\n if (Array.isArray(propertyValue)) {\n responseData[propertyName] = this.ConvertResponseArrayToDictionary(propertyValue);\n }\n } else if (_typeof(propertyValue) == \"object\") {\n if (Array.isArray(propertyValue)) {\n for (i = 0; i < propertyValue.length; i++) {\n this.ProcessResponseData(propertyValue[i]);\n }\n } else {\n this.ProcessResponseData(propertyValue);\n }\n } else if ((propertyValue + \"\").indexOf(\"/Date(\") == 0) {\n responseData[propertyName] = ToJavaScriptDate(propertyValue);\n }\n }\n }\n },\n ResetSortOrder: function ResetSortOrder(vueComponent, orderBy) {\n var tdElements;\n var i;\n vueComponent.LastSortColumnName = null;\n vueComponent.LastSortOrder = null;\n vueComponent.OrderBy = orderBy;\n tdElements = vueComponent.$el.querySelectorAll(\".ListTable TD.ASC,.ListTable TD.DESC\");\n\n for (i = 0; i < tdElements.length; i++) {\n tdElements[i].classList.remove(\"ASC\");\n tdElements[i].classList.remove(\"DESC\");\n }\n },\n PrepareListTable: function PrepareListTable(vueComponent) {\n var listTableElements, listTableElement;\n var headerCellElements;\n var firstRowCellElements;\n var lastSortElement;\n var listViewRequest = {};\n var columnName, sortOrder;\n var headerTdElement;\n var i, j;\n vueComponent.$forceUpdate();\n listTableElements = vueComponent.$el.querySelectorAll(\".ListTable\");\n\n for (i = 0; i < listTableElements.length; i++) {\n listTableElement = listTableElements[i];\n headerCellElements = listTableElement.querySelectorAll(\"TR.Header > Td\");\n firstRowCellElements = listTableElement.querySelectorAll(\"TR.Row:nth-child(2) > Td\");\n\n for (j = 0; j < headerCellElements.length; j++) {\n columnName = headerCellElements[j].getAttribute(\"Name\");\n\n if (columnName == null || columnName == \"\") {\n if (firstRowCellElements.length > 0) {\n columnName = firstRowCellElements[j].getAttribute(\"Name\");\n\n if (columnName != null && columnName != \"\") {\n headerCellElements[j].setAttribute(\"Name\", columnName);\n }\n }\n }\n\n if (columnName != null && columnName != \"\") {\n headerCellElements[j].style.cursor = \"pointer\";\n headerCellElements[j].addEventListener(\"click\", function (e) {\n headerTdElement = Utility.GetParentElementByTagName(e.target, \"TD\");\n lastSortElement = listTableElement.querySelector(\"TR.Header > Td.ASC,TR.Header > Td.DESC\");\n\n if (lastSortElement != null) {\n lastSortElement.classList.remove(\"ASC\");\n lastSortElement.classList.remove(\"DESC\");\n }\n\n columnName = Utility.GetParentElementByTagName(e.target, \"TD\").getAttribute(\"Name\");\n\n if (vueComponent.LastSortColumnName == columnName) {\n if (vueComponent.LastSortOrder == null) {\n sortOrder = \"ASC\";\n } else if (vueComponent.LastSortOrder == \"ASC\") {\n sortOrder = \"DESC\";\n } else {\n sortOrder = \"ASC\";\n }\n } else {\n sortOrder = \"ASC\";\n }\n\n headerTdElement.classList.add(sortOrder);\n listViewRequest = Utility.PrepareListViewRequest(vueComponent);\n listViewRequest.Paging.CurrentPageNumber = 1;\n listViewRequest.OrderBy = \"\".concat(columnName, \" \").concat(sortOrder);\n vueComponent.LastSortColumnName = columnName;\n vueComponent.LastSortOrder = sortOrder;\n vueComponent.QueryList(listViewRequest);\n });\n }\n }\n }\n },\n ToJavaScriptDate: function ToJavaScriptDate(value) {\n var pattern = /Date\\(([^)]+)\\)/;\n var results = pattern.exec(value);\n var dt = new Date(parseFloat(results[1]));\n return dt;\n },\n //要把所有日期物件 轉為字串\n ProcessRquestDateObject: function ProcessRquestDateObject(vueComponent, targetObject) {\n var propertyName;\n var propertyValue = null;\n\n if (targetObject != null) {\n for (propertyName in targetObject) {\n propertyValue = targetObject[propertyName];\n\n if (propertyValue != null) {\n if (this.IsDateObject(propertyValue)) {\n targetObject[propertyName] = this.GetDateTimeText(propertyValue);\n } else if (_typeof(propertyValue) == \"object\") {\n if (Array.isArray(propertyValue)) {//Do Nothing\n } else {\n this.ProcessRquestDateObject(vueComponent, targetObject[propertyName]);\n }\n } //end if (typeof (propertyValue) == \"string\" && this.IsIso8601Text(propertyValue)) {\n\n } //end if (propertyValue != null) {\n\n } //end for (propertyName in targetObject) {\n\n }\n } //end ProcessRquestDateObject(vueComponent, targetObject) {\n ,\n ConvertResponseArrayToDictionary: function ConvertResponseArrayToDictionary(responseArray) {\n var dictionaryObject = {};\n var elementName;\n var elementValue;\n var i;\n\n for (i = 0; i < responseArray.length; i++) {\n elementName = responseArray[i].Key;\n\n if (_typeof(responseArray[i].Value) != \"object\") {\n elementValue = responseArray[i].Value;\n } else {\n elementValue = responseArray[i].Value;\n }\n\n if ((elementValue + \"\").indexOf(\"/Date(\") == 0) {\n elementValue = this.ToJavaScriptDate(elementValue);\n }\n\n dictionaryObject[elementName] = elementValue;\n }\n\n return dictionaryObject;\n },\n ProcessIso8601Text: function ProcessIso8601Text(vueComponent, targetObject) {\n var propertyName;\n var propertyValue = null;\n\n if (targetObject != null) {\n for (propertyName in targetObject) {\n propertyValue = targetObject[propertyName];\n\n if (propertyValue != null) {\n if (typeof propertyValue == \"string\" && this.IsIso8601Text(propertyValue)) {\n //把 ISO 8601 的字串轉換為日期物件\n targetObject[propertyName] = this.ConvertIso8601TextToDate(propertyValue);\n } else if (_typeof(propertyValue) == \"object\") {\n if (Array.isArray(propertyValue)) {//Do Nothing\n } else {\n this.ProcessIso8601Text(vueComponent, targetObject[propertyName]);\n }\n } //end if (typeof (propertyValue) == \"string\" && this.IsIso8601Text(propertyValue)) {\n\n } //end if (propertyValue != null) {\n\n } //end for (propertyName in targetObject) {\n\n }\n } //end ProcessIso8601Text(vueComponent, targetObject) {\n ,\n SetNotNullAttributes: function SetNotNullAttributes(vueComponent, targetObject, sourceObject) {\n var propertyName;\n\n for (propertyName in sourceObject) {\n if (sourceObject[propertyName] != null) {\n if (_typeof(sourceObject[propertyName]) == \"object\") {\n if (typeof sourceObject[propertyName].getMonth == \"function\") {\n //JavaScript 日期 物件\n //targetObject[propertyName] = sourceObject[propertyName];\n vueComponent.$set(targetObject, propertyName, sourceObject[propertyName]);\n } else if (Array.isArray(sourceObject[propertyName])) {\n //targetObject[propertyName] = sourceObject[propertyName];\n vueComponent.$set(targetObject, propertyName, sourceObject[propertyName]);\n } else {\n if (targetObject[propertyName] == null) {\n targetObject[propertyName] = {};\n }\n\n this.SetNotNullAttributes(vueComponent, targetObject[propertyName], sourceObject[propertyName]);\n }\n } else {\n if (sourceObject.AttributeSet == null || propertyName != \"ValidationMessage\" && propertyName != \"Success\") {\n //targetObject[propertyName] = sourceObject[propertyName];\n if (targetObject != null) {\n vueComponent.$set(targetObject, propertyName, sourceObject[propertyName]);\n }\n }\n }\n } else {//do nothing\n }\n } //end for (propertyName in sourceObject) {\n\n } //end SetNotNullAttributes(vueComponent,targetObject, sourceObject) {\n ,\n IsDateObject: function IsDateObject(dateObj) {\n var isDateObject = false;\n\n if (dateObj != null && _typeof(dateObj) == \"object\" && typeof dateObj.getMonth == \"function\") {\n isDateObject = true;\n }\n\n return isDateObject;\n },\n OnCheckAllButtonClick: function OnCheckAllButtonClick(vueComponent) {\n var data;\n var i = 0;\n data = vueComponent.$data;\n\n if (data.CheckedAll == true) {\n for (i = 0; i < data.Rows.length; i++) {\n data.Rows[i].Checked = true;\n }\n } else {\n for (i = 0; i < data.Rows.length; i++) {\n data.Rows[i].Checked = false;\n }\n }\n } //end OnCheckAllButtonClick: function (data) {\n ,\n SaveSession: function SaveSession(sessionName, sessionObject) {\n this.Session[sessionName] = sessionObject;\n },\n GetAllSessions: function GetAllSessions() {\n var sessions = [];\n\n for (var sessionName in this.Session) {\n sessions.push({\n Name: sessionName,\n Value: this.Session[sessionName]\n });\n }\n\n return sessions;\n },\n //#region Cookies\n GetCookie: function GetCookie(vueComponent, cookieName) {\n var cookieValue = null;\n cookieValue = vueComponent.$cookies.get(cookieName);\n return cookieValue;\n },\n SaveCookie: function SaveCookie(vueComponent, cookieName, cookieValue) {\n vueComponent.$cookies.set(cookieName, cookieValue);\n },\n //#endregion\n //#region Session\n GetSession: function GetSession(sessionName) {\n var sessionObject = null;\n sessionObject = this.Session[sessionName];\n return sessionObject;\n },\n ClearSession: function ClearSession(sessionName) {\n var sessionObject = null;\n\n if (sessionName == null || sessionName == \"\") {\n alert(\"Utility.ClearSession() , sessionName is null\");\n throw \"sessionName is null\";\n }\n\n this.Session[sessionName] = null;\n delete this.Session[sessionName];\n },\n ClearAllSessions: function ClearAllSessions() {\n var sessionObject = null;\n this.Session = {};\n },\n //#endregion\n SetArgument: function SetArgument(argumentName, argumentValue) {\n this.Argument[argumentName] = argumentValue;\n },\n GetArgument: function GetArgument(argumentName) {\n var argumentValue = null;\n argumentValue = this.Argument[argumentName];\n this.Argument = {};\n return argumentValue;\n },\n //#region Bags\n CheckBags: function CheckBags() {\n var bagUpdateTimeText;\n var bagUpdateTime;\n var currDateTime;\n bagUpdateTimeText = localStorage.getItem(\"BagUpdateTime\");\n\n if (bagUpdateTimeText == null) {\n this.ClearAllBags();\n } else {\n bagUpdateTime = new Date(bagUpdateTimeText);\n currDateTime = new Date(); //console.log(\"(currDateTime - bagUpdateTime)=\" + (currDateTime - bagUpdateTime));\n\n if (currDateTime - bagUpdateTime >= 120 * 1000) {\n console.log(\"Bags Expired\");\n this.ClearAllBags();\n }\n }\n },\n SaveBag: function SaveBag(bagName, bagValue) {\n this.CheckBags();\n localStorage.setItem(\"Bag_\" + bagName, bagValue);\n this.ModifyBagUpdateTime();\n },\n ModifyBagUpdateTime: function ModifyBagUpdateTime() {\n var dateTimeText = this.GetDateTimeText();\n localStorage.setItem(\"BagUpdateTime\", dateTimeText);\n },\n GetBagSet: function GetBagSet() {\n var bagSet = {};\n var bags;\n var bagName, bagValue;\n var i;\n bags = this.GetAllBags();\n bagSet = {};\n\n for (i = 0; i < bags.length; i++) {\n bagName = bags[i].Name;\n bagValue = bags[i].Value;\n bagSet[bagName] = bagValue;\n }\n\n return bagSet;\n },\n GetAllBags: function GetAllBags() {\n var bags = [];\n var keyName;\n var bagName, bagValue;\n var i;\n this.CheckBags();\n\n for (i = 0; i < localStorage.length; i++) {\n keyName = localStorage.key(i);\n\n if (keyName.indexOf(\"Bag_\") == 0) {\n bagName = keyName.replace(\"Bag_\", \"\");\n bagValue = localStorage.getItem(keyName);\n bags.push({\n Name: bagName,\n Value: bagValue\n });\n }\n }\n\n return bags;\n },\n GetBag: function GetBag(bagName) {\n var bagValue = null;\n this.CheckBags();\n bagValue = localStorage.getItem(\"Bag_\" + bagName);\n return bagValue;\n },\n ClearBag: function ClearBag(bagName) {\n if (bagName == null || bagName == \"\") {\n alert(\"Utility.ClearBag() , bagName is null\");\n throw \"bagName is null\";\n }\n\n localStorage.removeItem(\"Bag_\" + bagName);\n },\n ClearAllBags: function ClearAllBags() {\n var keyName;\n var i;\n\n for (i = localStorage.length - 1; i >= 0; i--) {\n keyName = localStorage.key(i);\n\n if (keyName.indexOf(\"Bag_\") == 0) {\n localStorage.removeItem(keyName);\n }\n }\n },\n //#endregion\n //#region LongBags\n CheckLongBags: function CheckLongBags() {\n var bagUpdateTimeText;\n var bagUpdateTime;\n var currDateTime;\n bagUpdateTimeText = localStorage.getItem(\"LongBagUpdateTime\");\n\n if (bagUpdateTimeText == null) {\n this.ClearAllBags();\n } else {\n bagUpdateTime = new Date(bagUpdateTimeText);\n currDateTime = new Date(); //console.log(\"(currDateTime - bagUpdateTime)=\" + (currDateTime - bagUpdateTime));\n\n if (currDateTime - bagUpdateTime >= 10 * 24 * 60 * 60 * 1000) {\n //保留 10 天內的瀏覽紀錄\n console.log(\"Long Bags Expired\");\n this.ClearAllBags();\n }\n }\n },\n SaveLongBag: function SaveLongBag(bagName, bagValue) {\n this.CheckBags();\n localStorage.setItem(\"LongBag_\" + bagName, bagValue);\n this.ModifyBagUpdateTime();\n },\n ModifyLongBagUpdateTime: function ModifyLongBagUpdateTime() {\n var dateTimeText = this.GetDateTimeText();\n localStorage.setItem(\"LongBagUpdateTime\", dateTimeText);\n },\n GetLongBagSet: function GetLongBagSet() {\n var bagSet = {};\n var bags;\n var bagName, bagValue;\n var i;\n bags = this.GetAllLongBags();\n bagSet = {};\n\n for (i = 0; i < bags.length; i++) {\n bagName = bags[i].Name;\n bagValue = bags[i].Value;\n bagSet[bagName] = bagValue;\n }\n\n return bagSet;\n },\n GetAllLongBags: function GetAllLongBags() {\n var bags = [];\n var keyName;\n var bagName, bagValue;\n var i;\n this.CheckBags();\n\n for (i = 0; i < localStorage.length; i++) {\n keyName = localStorage.key(i);\n\n if (keyName.indexOf(\"LongBag_\") == 0) {\n bagName = keyName.replace(\"LongBag_\", \"\");\n bagValue = localStorage.getItem(keyName);\n bags.push({\n Name: bagName,\n Value: bagValue\n });\n }\n }\n\n return bags;\n },\n GetLongBag: function GetLongBag(bagName) {\n var bagValue = null;\n this.CheckLongBags();\n bagValue = localStorage.getItem(\"LongBag_\" + bagName);\n return bagValue;\n },\n CleaLongBag: function CleaLongBag(bagName) {\n if (bagName == null || bagName == \"\") {\n alert(\"Utility.CleaLongBag() , bagName is null\");\n throw \"bagName is null\";\n }\n\n localStorage.removeItem(\"LongBag_\" + bagName);\n },\n ClearAllLongBags: function ClearAllLongBags() {\n var keyName;\n var i;\n\n for (i = localStorage.length - 1; i >= 0; i--) {\n keyName = localStorage.key(i);\n\n if (keyName.indexOf(\"LongBag_\") == 0) {\n localStorage.removeItem(keyName);\n }\n }\n },\n //#endregion\n GetValueText: function GetValueText(vueComponent, columnName) {\n var valueText = \"\";\n var valueSet, attributeSet;\n var columnValue;\n var options;\n var i;\n valueSet = vueComponent.ValueSet;\n attributeSet = vueComponent.AttributeSet;\n columnValue = valueSet[columnName];\n valueText = columnValue;\n\n if (attributeSet != null && attributeSet[columnName] != null && attributeSet[columnName].Options != null) {\n options = attributeSet[columnName].Options;\n\n for (i = 0; i < options.length; i++) {\n if (options[i].Value == columnValue) {\n valueText = options[i].Text;\n break;\n }\n }\n }\n\n return valueText;\n },\n GetBaseUrl: function GetBaseUrl() {\n var baseUrl = \"\";\n\n if (location.port == 8080 || location.port == 8081) {\n baseUrl = Configuration.BaseUrl;\n } else {\n baseUrl = window.location.protocol + \"//\" + window.location.host;\n }\n\n return baseUrl;\n },\n PrepareFormViewRequest: function PrepareFormViewRequest(vueComponent, extraPropertyName) {\n var formViewRequest = new FormViewRequest();\n var dateText;\n var queryStringList, singleShotQueryStringList;\n var singleShotTargetName;\n var nonSingleShotSearchPath;\n var nonSingleShotPath;\n var data;\n var i;\n data = vueComponent.$data;\n\n if (data.FirstQuery == null) {\n data.FirstQuery = true;\n } else {\n data.FirstQuery = false;\n }\n\n formViewRequest.FirstQuery = data.FirstQuery;\n formViewRequest.SourcePagePath = vueComponent.$route.path;\n Object.assign(formViewRequest.ValueSet, data.ValueSet); //#region SingShotQueryString\n\n queryStringList = this.GetQueryStringListBySearchPath(window.location.search.substr(1));\n singleShotQueryStringList = this.GetSingleShotQueryStringList(queryStringList);\n\n if (singleShotQueryStringList.length > 0) {\n for (i = 0; i < singleShotQueryStringList.length; i++) {\n if (singleShotQueryStringList[i].Name.indexOf(\"...\") == 0) {\n singleShotTargetName = singleShotQueryStringList[i].Name.replace(\"...\", \"\");\n this.SaveBag(singleShotTargetName, singleShotQueryStringList[i].Value);\n } else if (singleShotQueryStringList[i].Name.indexOf(\"..\") == 0) {\n singleShotTargetName = singleShotQueryStringList[i].Name.replace(\"..\", \"\");\n formViewRequest.ValueSet[singleShotTargetName] = singleShotQueryStringList[i].Value;\n }\n }\n\n nonSingleShotSearchPath = this.RenderSearchPathWithoutSingleShot(queryStringList);\n\n if (nonSingleShotSearchPath != \"\") {\n nonSingleShotPath = window.location.pathname + \"?\" + nonSingleShotSearchPath;\n } else {\n nonSingleShotPath = window.location.pathname;\n }\n\n vueComponent.$router.push(nonSingleShotPath);\n } //#endregion\n\n\n for (i in formViewRequest.ValueSet) {\n if (formViewRequest.ValueSet[i] === \"\" || formViewRequest.ValueSet[i] == null) {\n formViewRequest.ValueSet[i] = null;\n }\n }\n\n if (vueComponent.$route.query.Action != null) {\n formViewRequest.Action = vueComponent.$route.query.Action;\n }\n\n if (vueComponent.$data.Rows != null) {\n formViewRequest.Rows = vueComponent.$data.Rows;\n }\n\n if (extraPropertyName != null && vueComponent.$data[extraPropertyName] != null) {\n formViewRequest[extraPropertyName] = vueComponent.$data[extraPropertyName];\n } //把所有日期物件轉為字串\n\n\n this.ProcessRquestDateObject(vueComponent, formViewRequest);\n return formViewRequest;\n },\n LoadFormViewResponse: function LoadFormViewResponse(vueComponent, responseData) {\n var data;\n var columnName;\n var propertyName;\n var i;\n data = vueComponent.$data;\n\n if (responseData.Rows != null) {\n for (i = 0; i < responseData.Rows.length; i++) {\n responseData.Rows[i].ValueSet.SeqNo = i + 1;\n }\n }\n\n this.ProcessIso8601Text(vueComponent, responseData);\n this.SetNotNullAttributes(vueComponent, data, responseData);\n\n if (responseData.AttributeSet != null) {\n for (var colunName in data.AttributeSet) {\n var newAttributObj = {};\n var attributeObj = void 0;\n attributeObj = data.AttributeSet[colunName];\n\n for (propertyName in attributeObj) {\n newAttributObj[propertyName] = attributeObj[propertyName];\n } //end for (var propertyName in attributeObj) {\n\n\n data.AttributeSet[colunName] = newAttributObj;\n } //end for (var colunName in data.Query.AttributeSet) {\n\n }\n },\n //ConvertIso8601TextToDate(dateText) {\n // let dateObject = null;\n // let formattedDateText;\n // formattedDateText = moment(dateText).format(\"YYYY/MM/DD HH:mm:ss\");\n // formattedDateText = dateText.replace(\" 00:00:00\", \"\");\n // dateObject = new Date(formattedDateText);\n // return dateObject;\n //},\n ConvertIso8601TextToDate: function ConvertIso8601TextToDate(iso8601DateText) {\n var dateObject;\n var dateTime;\n var dateTimeText;\n dateTime = new Date(iso8601DateText);\n dateTimeText = this.GetDateTimeText(dateTime);\n dateObject = new Date(dateTimeText);\n return dateObject;\n },\n IsIso8601Text: function IsIso8601Text(dateText) {\n var isIso8601 = false;\n var iso8601Regex = /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?(Z)?$/;\n\n if (dateText != null) {\n if (typeof dateText == \"string\" && dateText.length > 10 && dateText.indexOf(\"T\") > 0) {\n //isIso8601 = moment(dateText, moment.ISO_8601).isValid();\n isIso8601 = iso8601Regex.test(dateText);\n }\n }\n\n return isIso8601;\n },\n ShowServerError: function ShowServerError(errorMessage) {\n this.HasServerError = true;\n document.body.insertAdjacentHTML(\"AfterBegin\", \"
\" + errorMessage + \"
\");\n },\n GenerateSerialNumber: function GenerateSerialNumber() {\n this.SerialNumber++;\n return this.SerialNumber;\n },\n GenerateUniqueId: function GenerateUniqueId() {\n var uniqueId = \"\";\n uniqueId = Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1) + Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1) + Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n return uniqueId;\n },\n OnDataModify: function OnDataModify() {\n this.LastModifyTime = new Date();\n },\n HasSingleShot: function HasSingleShot() {\n var hasSingleShot = false;\n\n if (window.location.href.indexOf(\"..\") > 0) {\n hasSingleShot = true;\n }\n\n return hasSingleShot;\n },\n NeedReQuery: function NeedReQuery(listResponseData) {\n var needReQuery = false;\n var currDateTime = new Date();\n\n if (listResponseData.CreateTime == null) {\n alert(\"listResponseData.CreateTime is null\");\n return;\n }\n\n if (window.location.href.indexOf(\"..\") > 0) {\n needReQuery = true;\n } else if (this.LastModifyTime > listResponseData.CreateTime) {\n needReQuery = true;\n } else if (currDateTime - listResponseData.CreateTime >= 5000) {\n needReQuery = true;\n }\n\n return needReQuery;\n },\n Confirm: function Confirm(vueComponent, description, confirmHandler) {\n var count = 0;\n var i;\n vueComponent.$modal.show(\"ConfirmDialog\", {\n Description: description,\n ConfirmHandler: confirmHandler\n });\n return;\n },\n ConfirmDelete: function ConfirmDelete(vueComponent, confirmHandler) {\n var count = 0;\n var i;\n\n for (i = 0; i < vueComponent.Rows.length; i++) {\n if (vueComponent.Rows[i].Checked == true) {\n count++;\n }\n }\n\n if (count > 0) {\n vueComponent.$modal.show(\"ConfirmDialog\", {\n Description: \"確認刪除所選之 \" + count + \" 筆資料?!\",\n ConfirmHandler: confirmHandler\n });\n }\n },\n ShowLoadingPicture: function ShowLoadingPicture(vueComponent) {\n if (vueComponent == null) {\n vueComponent = this.vueComponent;\n }\n\n if (vueComponent.$bus != null) {\n vueComponent.$bus.$emit(\"ShowLoading\");\n }\n },\n HideLoadingPicture: function HideLoadingPicture(vueComponent) {\n if (vueComponent == null) {\n vueComponent = this.vueComponent;\n }\n\n if (vueComponent.$bus != null) {\n vueComponent.$bus.$emit(\"HideLoading\");\n }\n },\n ShowSaveSuccess: function ShowSaveSuccess(vueComponent) {\n this.ShowMessage(vueComponent, \"儲存成功\", 1000);\n },\n ShowDeleteSuccess: function ShowDeleteSuccess(vueComponent) {\n this.ShowMessage(vueComponent, \"刪除成功\", 1000);\n },\n ShowMessage: function ShowMessage(vueComponent, description, duration) {\n vueComponent.$bus.$emit(\"ShowMessage\", {\n Description: description,\n Duration: duration\n });\n },\n ShowValidationMessage: function ShowValidationMessage(vueComponent, message, duration) {\n if (duration == null) {\n duration = 2000;\n }\n\n this.ShowMessage(vueComponent, \"
\" + message + \"
\", duration);\n },\n HideMessage: function HideMessage(vueComponent) {\n vueComponent.$bus.$emit(\"HideMessage\");\n },\n GetBrowserWidth: function GetBrowserWidth() {\n var width;\n width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\n return width;\n },\n GetBrowserHeight: function GetBrowserHeight() {\n var height;\n height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\n return height;\n },\n GetClientLeft: function GetClientLeft(element) {\n var clientTop = element.offsetLeft;\n\n while (element.tagName != \"BODY\") {\n if (element == null) {\n break;\n }\n\n element = element.offsetParent;\n\n if (element == null) {\n break;\n }\n\n clientTop += element.offsetLeft;\n }\n\n return clientTop;\n },\n GetClientTop: function GetClientTop(element) {\n var clientTop = element.offsetTop;\n\n while (element.tagName != \"BODY\") {\n element = element.offsetParent;\n\n if (element == null) {\n break;\n }\n\n clientTop += element.offsetTop;\n\n if (element == null) {\n break;\n }\n\n if (window.getComputedStyle(element).getPropertyValue(\"position\") == \"absolute\") {\n break;\n } else if (window.getComputedStyle(element, null).getPropertyValue(\"position\") == \"fixed\") {\n clientTop += this.GetScrollTop();\n break;\n }\n }\n\n return clientTop;\n },\n GetScrollTop: function GetScrollTop() {\n var scrollTop = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop;\n return scrollTop;\n },\n GetDateText: function GetDateText(dateTime) {\n var dateStr;\n var year, month, day;\n var hour, minute, second;\n\n if (dateTime == null) {\n return \"\";\n } else {\n dateTime = new Date(dateTime);\n }\n\n month = dateTime.getMonth() + 1;\n day = dateTime.getDate();\n if (month.toString().length == 1) month = \"0\" + month;\n if (day.toString().length == 1) day = \"0\" + day;\n hour = dateTime.getHours();\n minute = dateTime.getMinutes();\n second = dateTime.getSeconds();\n if (hour.toString().length == 1) hour = \"0\" + hour;\n if (minute.toString().length == 1) minute = \"0\" + minute;\n if (second.toString().length == 1) second = \"0\" + second;\n if ((year = dateTime.getYear()) < 200) year += 1900;\n dateStr = year + \"/\" + month + \"/\" + day;\n return dateStr;\n },\n GetDateTimeText: function GetDateTimeText(dateTime) {\n var dateStr;\n var year, month, day;\n var hour, minute, second;\n if (dateTime == null) dateTime = new Date();else if (_typeof(dateTime) == \"object\") dateTime = dateTime;else dateTime = new Date(dateTime);\n month = dateTime.getMonth() + 1;\n day = dateTime.getDate();\n if (month.toString().length == 1) month = \"0\" + month;\n if (day.toString().length == 1) day = \"0\" + day;\n hour = dateTime.getHours();\n minute = dateTime.getMinutes();\n second = dateTime.getSeconds();\n if (hour.toString().length == 1) hour = \"0\" + hour;\n if (minute.toString().length == 1) minute = \"0\" + minute;\n if (second.toString().length == 1) second = \"0\" + second;\n if ((year = dateTime.getYear()) < 200) year += 1900;\n dateStr = year + \"/\" + month + \"/\" + day + \" \" + hour + \":\" + minute + \":\" + second;\n return dateStr;\n },\n GetWeekDayText: function GetWeekDayText(dateTime) {\n var weekday = new Array(7);\n var weekDayText;\n if (dateTime == null) dateTime = new Date();else if (_typeof(dateTime) == \"object\") dateTime = dateTime;else dateTime = new Date(dateTime); //PROBLEM : 應該要用英文 並結合 Word\n\n weekday[0] = \"星期天\";\n weekday[1] = \"星期一\";\n weekday[2] = \"星期二\";\n weekday[3] = \"星期三\";\n weekday[4] = \"星期四\";\n weekday[5] = \"星期五\";\n weekday[6] = \"星期六\";\n weekDayText = weekday[dateTime.getDay()];\n return weekDayText;\n },\n IsImageFile: function IsImageFile(filePath) {\n var allowedExtension = ['jpeg', 'jpg', 'png', 'gif', 'bmp'];\n var fileExtension = filePath.split('.').pop().toLowerCase();\n var isImage = false;\n\n for (var index in allowedExtension) {\n if (fileExtension === allowedExtension[index]) {\n isImage = true;\n break;\n }\n }\n\n return isImage;\n },\n IsIE: function IsIE() {\n var isIE = false;\n var isIE10 = false;\n var isIE11 = false;\n isIE10 = navigator.appName == \"Microsoft Internet Explorer\" ? true : false;\n\n if (isIE10) {\n isIE = true;\n } else {\n isIE11 = !!window.MSStream;\n\n if (isIE11) {\n isIE = true;\n }\n }\n\n return isIE;\n },\n GetBranchNo: function GetBranchNo() {\n var branchNo;\n var systemUser;\n branchNo = localStorage.getItem(\"BranchNo\");\n systemUser = JSON.parse(localStorage.getItem(\"SystemUser\"));\n\n if (systemUser == null) {\n branchNo = this.vue.$cookies.get(\"BranchNo\");\n } else {\n branchNo = systemUser.BranchNo;\n }\n\n if (branchNo == null) {\n branchNo = 1;\n }\n\n if (typeof branchNo == \"string\") {\n branchNo = parseInt(branchNo);\n }\n\n return branchNo;\n },\n GetSystemUserNo: function GetSystemUserNo() {\n var systemUserNo;\n var systemUser = null;\n systemUser = JSON.parse(localStorage.getItem(\"SystemUser\"));\n\n if (systemUser != null) {\n systemUserNo = systemUser.SystemUserNo;\n }\n\n return systemUserNo;\n },\n GetCurrencyFormatText: function GetCurrencyFormatText(amount) {\n var decimalCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var decimal = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \".\";\n var thousands = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \",\";\n\n try {\n if (amount == \"\" || isNaN(amount)) {\n return amount;\n }\n\n decimalCount = Math.abs(decimalCount);\n decimalCount = isNaN(decimalCount) ? 2 : decimalCount;\n var negativeSign = amount < 0 ? \"-\" : \"\";\n var i = parseInt(amount = Math.abs(Number(amount) || 0).toFixed(decimalCount)).toString();\n var j = i.length > 3 ? i.length % 3 : 0;\n return negativeSign + (j ? i.substr(0, j) + thousands : '') + i.substr(j).replace(/(\\d{3})(?=\\d)/g, \"$1\" + thousands) + (decimalCount ? decimal + Math.abs(amount - i).toFixed(decimalCount).slice(2) : \"\");\n } catch (e) {\n console.log(e);\n }\n },\n GotoLink: function GotoLink(vueComponent, url) {\n var anchorElement;\n var anchorName;\n var clientTop;\n var tokens;\n tokens = url.split(\"#\");\n\n if (tokens.length >= 2) {\n anchorName = tokens[1];\n vueComponent.$router.push(url);\n setTimeout(function () {\n anchorElement = document.querySelector(\"A[name='\".concat(anchorName, \"']\"));\n\n if (anchorElement != null) {\n this.ScrollToAnchor(anchorName);\n } else {\n setTimeout(function () {\n this.ScrollToAnchor(anchorName);\n }.bind(this), 1000);\n }\n }.bind(this), 200);\n } else {\n vueComponent.$router.push(url);\n }\n },\n GoTo: function GoTo(path, argument) {\n this.Nav.GoTo(path, argument);\n },\n Goto: function Goto(path, argument) {\n var currPath;\n currPath = window.location.pathname + window.location.search;\n\n if (!this.Nav.MatchLastPath()) {\n this.Nav.PushPath({\n Path: currPath\n });\n }\n\n this.Nav.GoTo(path, argument);\n },\n GoToWithoutPushPath: function GoToWithoutPushPath(path) {\n this.vueComponent.$router.push(path);\n },\n GoBack: function GoBack() {\n this.Nav.GoBack();\n },\n ScrollToAnchor: function ScrollToAnchor(anchorName) {\n var anchorElement;\n var clientTop;\n anchorElement = document.querySelector(\"A[name='\".concat(anchorName, \"']\"));\n\n if (anchorElement != null) {\n clientTop = this.GetClientTop(anchorElement);\n clientTop -= 30;\n window.scrollTo(0, clientTop);\n }\n },\n IsInteger: function IsInteger(val) {\n var isInteger = false;\n\n if (val == \"\" || isNaN(val)) {\n return isInteger = false;\n } else {\n isInteger = true;\n }\n\n return isInteger;\n },\n GetQueryString: function GetQueryString(name, url) {\n var regex;\n var results;\n\n if (!url) {\n url = window.location.href;\n }\n\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\n regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)');\n results = regex.exec(url);\n if (!results) return null;\n if (!results[2]) return '';\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n },\n GetCenterWindowLayout: function GetCenterWindowLayout(width, height) {\n var layout = new WindowLayout();\n var browserWidth, browserHeight;\n browserWidth = this.GetBrowserWidth();\n browserHeight = this.GetBrowserHeight(); // layout.X = ((screen.width / 2) - (width / 2));\n // layout.Y = ((screen.height / 2) - (height / 2));\n\n layout.X = browserWidth / 2 - width / 2;\n layout.Y = browserHeight / 2 + this.GetScrollTop() - height / 2;\n layout.Width = width;\n layout.Height = height;\n return layout;\n },\n IsMobile: function IsMobile() {\n var isMobile = /iphone|ipod|android|blackberry|fennec/.test(navigator.userAgent.toLowerCase());\n return isMobile;\n },\n GetParentElementByTagName: function GetParentElementByTagName(element, tagName) {\n var parentElement = null;\n parentElement = element;\n\n while (parentElement != null) {\n if (parentElement.tagName == tagName) {\n break;\n }\n\n parentElement = parentElement.parentElement;\n }\n\n return parentElement;\n },\n GetParentElementByClassName: function GetParentElementByClassName(element, className) {\n var parentElement = null;\n parentElement = element;\n\n while (parentElement != null) {\n if (parentElement.classList.contains(className)) {\n break;\n }\n\n parentElement = parentElement.parentElement;\n }\n\n return parentElement;\n },\n PrepareScriptSrc: function PrepareScriptSrc(scriptSrc) {\n var element;\n var i;\n\n for (i = 0; i < document.head.children.length; i++) {\n element = document.head.children[i];\n\n if (element.tagName == \"SCRIPT\") {\n if (element.getAttribute(\"src\") == scriptSrc) {\n return;\n }\n }\n }\n\n element = document.createElement(\"script\");\n element.setAttribute(\"src\", scriptSrc);\n document.head.appendChild(element);\n },\n RemoveArrayElement: function RemoveArrayElement(array, elm) {\n var index = array.indexOf(elm);\n\n if (index > -1) {\n array.splice(index, 1);\n }\n },\n SetPrefixTdColSpan: function SetPrefixTdColSpan(prfixTdElement) {\n var tableElement;\n var rowElement, tdElement;\n var colSpan = 0;\n var display;\n var i;\n tableElement = this.GetParentElementByTagName(prfixTdElement, \"TABLE\");\n\n if (tableElement != null) {\n rowElement = tableElement.rows[0];\n\n for (i = 0; i < rowElement.cells.length; i++) {\n tdElement = rowElement.cells[i];\n display = window.getComputedStyle(tdElement, null).getPropertyValue(\"display\");\n\n if (display != \"none\") {\n colSpan++;\n }\n }\n\n colSpan -= 1;\n prfixTdElement.colSpan = colSpan;\n }\n },\n Print: function Print() {\n document.querySelector(\".MenuContainer\").style.display = \"none\";\n window.print();\n setTimeout(function () {\n document.querySelector(\".MenuContainer\").style.display = \"\";\n }, 1000);\n },\n AddToShoppingCart: function AddToShoppingCart(productNo, variationNo) {\n var _this = this;\n\n var formViewRequest = {\n ValueSet: {}\n };\n formViewRequest.ValueSet.ProductNo = productNo;\n formViewRequest.ValueSet.ProductVariationNo = variationNo;\n this.ShowLoadingPicture(this.TopVueComponent);\n apiService.Post(\"/api/ShoppingCart/AddToShoppingCart\", formViewRequest).then(function (responseData) {\n _this.HideLoadingPicture(_this.TopVueComponent);\n\n if (responseData.Success == true) {\n _this.ShowMessage(_this.TopVueComponent, \"已加入購物車\");\n } else {\n _this.ShowValidationMessage(_this.TopVueComponent, responseData.ValidationMessage);\n }\n }).catch(function (error) {\n _this.HideLoadingPicture(_this.TopVueComponent);\n\n alert(error);\n });\n },\n ResetImagesForRwd: function ResetImagesForRwd() {\n var imgElements;\n imgElements = document.querySelectorAll(\".MainContainer IMG\");\n imgElements.forEach(function (img) {\n if ((img.style.maxWidth == null || img.style.maxWidth == \"\") && img.style.width != null && img.style.width != \"\" && img.style.width != \"100%\") {\n img.style.maxWidth = img.style.width;\n img.style.width = \"100%\";\n img.style.height = \"auto\";\n }\n });\n },\n PrepareImagesOrientation: function PrepareImagesOrientation(containerElement) {\n var imgElements = new Array();\n var deviceWidth = 1;\n var imgElement, dataSrc;\n var i;\n\n if (containerElement == null) {\n containerElement = document.body;\n }\n\n if (document.querySelectorAll == null) {\n imgElements = document.getElementsByTagName(\"img\");\n } else {\n imgElements = containerElement.querySelectorAll(\"IMG[src]\");\n }\n\n for (i = 0; i < imgElements.length; i++) {\n dataSrc = imgElements[i].getAttribute(\"src\") + \"\";\n imgElement = imgElements[i];\n\n if (imgElement.getAttribute(\"HasBindLoadEvent\") == null) {\n if (imgElement.complete && imgElement.naturalHeight !== 0) {\n //Image is Loaded\n this.SetImageElementOrientation(imgElement);\n imgElement.setAttribute(\"HasBindLoadEvent\", \"true\");\n continue;\n } else {\n imgElement.addEventListener(\"load\", function () {\n var imgElement = this;\n this.SetImageElementOrientation(imgElement);\n imgElement.setAttribute(\"HasBindLoadEvent\", \"true\");\n }.bind(imgElement));\n }\n }\n }\n },\n ResetImagesOrientation: function ResetImagesOrientation(containerElement) {\n var imgElements = new Array();\n var deviceWidth = 1;\n var imgElement, dataSrc;\n var i;\n\n if (containerElement == null) {\n containerElement = document.body;\n }\n\n if (document.querySelectorAll == null) {\n imgElements = document.getElementsByTagName(\"img\");\n } else {\n imgElements = containerElement.querySelectorAll(\"IMG[src]\");\n }\n\n for (i = 0; i < imgElements.length; i++) {\n dataSrc = imgElements[i].getAttribute(\"src\") + \"\";\n imgElement = imgElements[i];\n this.SetImageElementOrientation(imgElement);\n }\n },\n SetImageElementOrientation: function SetImageElementOrientation(imgElement) {\n var containerWidth = 100,\n containerHeight = 100;\n imgElement.setAttribute(\"LoadWidth\", imgElement.width);\n imgElement.setAttribute(\"LoadHeight\", imgElement.height);\n imgElement.setAttribute(\"LoadSrc\", imgElement.src);\n\n try {\n if (imgElement.parentElement.classList.contains(\"PictureContainer\")) {\n if (imgElement.parentElement.clientWidth >= 40 && imgElement.parentElement.clientHeight >= 40) {\n containerWidth = imgElement.parentElement.clientWidth;\n containerHeight = imgElement.parentElement.clientHeight;\n }\n }\n\n if (imgElement.width / imgElement.height > containerWidth / containerHeight) {\n if (imgElement.classList.contains(\"Portrait\")) {\n imgElement.classList.remove(\"Portrait\");\n }\n\n if (!imgElement.classList.contains(\"Landscape\")) {\n imgElement.classList.add(\"Landscape\");\n }\n } else {\n if (imgElement.classList.contains(\"Landscape\")) {\n imgElement.classList.remove(\"Landscape\");\n }\n\n if (!imgElement.classList.contains(\"Portrait\")) {\n imgElement.classList.add(\"Portrait\");\n }\n }\n } catch (ex) {\n alert(ex);\n }\n },\n StripHtml: function StripHtml(html) {\n var tmp = document.createElement(\"DIV\");\n tmp.innerHTML = html;\n return tmp.textContent || tmp.innerText || \"\";\n },\n install: function install(Vue, options) {\n Object.defineProperty(Vue.prototype, '$util', {\n get: function get() {\n if (this.$_util == null) {\n this.$_util = Utility;\n this.$_util.Nav = new NavigationService(this);\n this.$_util.vueComponent = this;\n }\n\n return this.$_util;\n }\n });\n }\n}; //end var Utility = {\n\nUtility.TopVueComponent = null;\nUtility.CheckBags(); //每十秒更新一次 BagUpdateTime\n\nsetInterval(function () {\n Utility.ModifyBagUpdateTime();\n}, 1000 * 5);\nsetTimeout(function () {\n Utility.ModifyLongBagUpdateTime();\n}, 1000);\n\nvar WindowLayout = function WindowLayout() {\n this.X = 0;\n this.Y = 0;\n this.Width = 0;\n this.Height = 0;\n};\n\nexport default Utility;"],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;AACA;AACA;AACA;AACA;;;;A","sourceRoot":""}