File manager - Edit - /home/c14075/dragmet-ural.ru/www/bitrix/modules/calendar/install/js/calendar/resourcebooking/dist/resourcebooking.bundle.js.map
Back
{"version":3,"file":"resourcebooking.bundle.js","sources":["../src/viewcontrolabstract.js","../src/viewdropdownselect.js","../src/controls/userselector.js","../src/controls/resourceselector.js","../src/controls/serviceselector.js","../src/controls/durationselector.js","../src/controls/dateselector.js","../src/controls/timeselector.js","../src/controls/statusinformer.js","../src/livefieldcontroller.js","../src/translit.js","../src/bookingutil.js","../src/fieldviewcontrollerabstract.js","../src/fieldviewcontrolleredit.js","../src/fieldviewcontrollerpreview.js","../src/controls/selectinput.js","../src/resourcebooking.js"],"sourcesContent":["import {Loc, Dom, Tag} from \"./resourcebooking\";\n\nexport class ViewControlAbstract\n{\n\tconstructor(params)\n\t{\n\t\tif (new.target === ViewControlAbstract)\n\t\t{\n\t\t\tthrow new TypeError(\"Cannot construct Abstract instances directly\");\n\t\t}\n\n\t\tthis.name = null;\n\t\tthis.classNames = {\n\t\t\twrap: params.wrapClassName || 'calendar-resbook-webform-block',\n\t\t\tinnerWrap: 'calendar-resbook-webform-block-inner',\n\t\t\ttitle: 'calendar-resbook-webform-block-title',\n\t\t\tfield: 'calendar-resbook-webform-block-field'\n\t\t};\n\n\t\tthis.DOM = {\n\t\t\touterWrap: params.outerWrap,\n\t\t\twrap: null,\n\t\t\tdataWrap: null,\n\t\t\tinnerWrap: null,\n\t\t\tlabelWrap: null\n\t\t};\n\t\tthis.data = params.data;\n\t\tthis.shown = false;\n\t}\n\n\tisDisplayed()\n\t{\n\t\treturn this.data.show !== 'N';\n\t}\n\n\tisShown()\n\t{\n\t\treturn this.shown;\n\t}\n\n\tdisplay()\n\t{\n\t\tthis.DOM.wrap = this.DOM.outerWrap.appendChild(Dom.create(\"div\", {props : { className : this.classNames.wrap}}));\n\n\t\tthis.DOM.dataWrap = this.DOM.wrap.appendChild(Tag.render`<div data-bx-resource-data-wrap=\"Y\"></div>`);\n\n\t\tif (this.isDisplayed())\n\t\t{\n\t\t\tthis.show({animation: false});\n\t\t}\n\t}\n\n\trefresh(data)\n\t{\n\t\tthis.refreshLabel(data);\n\t\tthis.data = data;\n\n\t\tif (this.setDataConfig())\n\t\t{\n\t\t\tif (this.isDisplayed())\n\t\t\t{\n\t\t\t\tthis.show({animation: true});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.hide({animation: true});\n\t\t\t}\n\t\t}\n\t\tthis.data = data;\n\t}\n\n\tsetDataConfig()\n\t{\n\t\treturn true;\n\t}\n\n\trefreshLabel(data)\n\t{\n\t\tif (this.data.label !== data.label)\n\t\t{\n\t\t\tDom.adjust(this.DOM.labelWrap, {text: data.label});\n\t\t}\n\t}\n\n\tshow()\n\t{\n\t\tif (this.DOM.innerWrap)\n\t\t{\n\t\t\tthis.hide();\n\t\t}\n\n\t\tthis.DOM.innerWrap = this.DOM.wrap.appendChild(Dom.create(\"div\", {props : { className : this.classNames.innerWrap}}));\n\n\t\tif (this.data.label || this.label)\n\t\t{\n\t\t\tthis.DOM.labelWrap = this.DOM.innerWrap.appendChild(Dom.create(\"div\", {props : { className : this.classNames.title}, text: this.data.label || this.label}));\n\t\t}\n\t\tthis.DOM.controlWrap = this.DOM.innerWrap.appendChild(Dom.create(\"div\", {props : { className : this.classNames.field}}));\n\t\tthis.displayControl();\n\t\tthis.shown = true;\n\t}\n\n\thide()\n\t{\n\t\tDom.remove(this.DOM.innerWrap);\n\t\tthis.DOM.innerWrap = null;\n\t\tthis.shown = false;\n\t}\n\n\tdisplayControl()\n\t{\n\t}\n\n\tshowWarning(errorMessage)\n\t{\n\t\tif (this.shown && this.DOM.wrap && this.DOM.innerWrap)\n\t\t{\n\t\t\tDom.addClass(this.DOM.wrap, \"calendar-resbook-webform-block-error\");\n\t\t\tthis.displayErrorText(errorMessage || Loc.getMessage('WEBF_RES_BOOKING_REQUIRED_WARNING'));\n\t\t}\n\t}\n\n\thideWarning()\n\t{\n\t\tif (this.DOM.wrap)\n\t\t{\n\t\t\tDom.removeClass(this.DOM.wrap, \"calendar-resbook-webform-block-error\");\n\t\t\tif (this.DOM.errorTextWrap)\n\t\t\t{\n\t\t\t\tDom.remove(this.DOM.errorTextWrap);\n\t\t\t}\n\t\t}\n\t}\n\n\tdisplayErrorText(errorMessage)\n\t{\n\t\tif (this.DOM.errorTextWrap)\n\t\t{\n\t\t\tDom.remove(this.DOM.errorTextWrap);\n\t\t}\n\t\tthis.DOM.errorTextWrap = this.DOM.innerWrap.appendChild(Dom.create(\"span\", {props : { className : 'calendar-resbook-webform-block-error-text'}, text: errorMessage}));\n\t}\n}\n\n\n","import {Type, Loc, Dom, Event, Text, BookingUtil, MenuManager} from \"./resourcebooking\";\n\nexport class ViewDropDownSelect\n{\n\tconstructor(params)\n\t{\n\t\tthis.id = 'viewform-dropdown-select-' + Math.round(Math.random() * 100000);\n\t\tthis.DOM = {\n\t\t\twrap: params.wrap\n\t\t};\n\t\tthis.maxHeight = params.maxHeight;\n\t\tthis.selectAllMessage = Loc.getMessage('WEBF_RES_SELECT_ALL');\n\t\tthis.setSettings(params);\n\t}\n\n\tbuild()\n\t{\n\t\tthis.DOM.select = this.DOM.wrap.appendChild(Dom.create(\"div\", {\n\t\t\tattrs: {\n\t\t\t\tclassName: \"calendar-resbook-webform-block-input calendar-resbook-webform-block-input-dropdown\"\n\t\t\t},\n\t\t\tevents: {click: this.openPopup.bind(this)}\n\t\t}));\n\n\t\tthis.setSelectedValues(this.selected);\n\t}\n\n\tsetSettings(params)\n\t{\n\t\tthis.handleChangesCallback = Type.isFunction(params.handleChangesCallback) ? params.handleChangesCallback : null;\n\t\tthis.values = params.values;\n\t\tthis.selected = !Type.isArray(params.selected) ? [params.selected] : params.selected;\n\t\tthis.multiple = params.multiple;\n\t}\n\n\topenPopup()\n\t{\n\t\tif (this.isPopupShown())\n\t\t{\n\t\t\treturn this.closePopup();\n\t\t}\n\n\t\tlet menuItems = [];\n\t\tthis.values.forEach(function(item)\n\t\t{\n\t\t\tlet className = 'menu-popup-no-icon';\n\t\t\tif (Type.isArray(this.selected) && this.selected.includes(parseInt(item.id)))\n\t\t\t{\n\t\t\t\tclassName += ' menu-item-selected';\n\t\t\t}\n\n\t\t\tmenuItems.push({\n\t\t\t\tid: item.id,\n\t\t\t\tclassName: className,\n\t\t\t\ttext: Text.encode(item.title),\n\t\t\t\tonclick: this.menuItemClick.bind(this)\n\t\t\t});\n\t\t}, this);\n\n\t\tif (this.multiple && menuItems.length <= 1)\n\t\t{\n\t\t\tthis.multiple = false;\n\t\t}\n\n\t\tif (this.multiple)\n\t\t{\n\t\t\tmenuItems.push({\n\t\t\t\tid: 'select-all',\n\t\t\t\ttext: this.selectAllMessage,\n\t\t\t\tonclick: this.selectAllItemClick.bind(this)\n\t\t\t});\n\t\t}\n\n\t\tthis.popup = MenuManager.create(\n\t\t\tthis.id,\n\t\t\tthis.DOM.select,\n\t\t\tmenuItems,\n\t\t\t{\n\t\t\t\tclassName: 'calendar-resbook-form-popup' + (this.multiple ? ' popup-window-resource-select' : ''),\n\t\t\t\tcloseByEsc : true,\n\t\t\t\tautoHide : !this.multiple,\n\t\t\t\toffsetTop: 0,\n\t\t\t\toffsetLeft: 0,\n\t\t\t\tcacheable: false\n\t\t\t}\n\t\t);\n\n\t\tthis.popup.show(true);\n\t\tthis.popupContainer = this.popup.popupWindow.popupContainer;\n\t\tthis.popupContainer.style.width = parseInt(this.DOM.select.offsetWidth) + 'px';\n\n\t\tif (this.multiple)\n\t\t{\n\t\t\tthis.popup.menuItems.forEach(function(menuItem)\n\t\t\t{\n\t\t\t\tlet checked;\n\t\t\t\tif (menuItem.id === 'select-all')\n\t\t\t\t{\n\t\t\t\t\tthis.selectAllChecked = !this.values.find(function(value){\n\t\t\t\t\t\treturn !this.selected.find(function(itemId){return itemId === value.id});\n\t\t\t\t\t},this);\n\n\t\t\t\t\tmenuItem.layout.item.className = 'menu-popup-item menu-popup-item-resource-all';\n\t\t\t\t\tmenuItem.layout.item.innerHTML = '<div class=\"menu-popup-item-inner\">' +\n\t\t\t\t\t\t'<div class=\"menu-popup-item-resource\">' +\n\t\t\t\t\t\t'<input class=\"menu-popup-item-resource-checkbox menu-popup-item-all-resources-checkbox\" type=\"checkbox\"' + (this.selectAllChecked ? 'checked=\"checked\"' : '') + ' id=\"' + menuItem.id + '\">' +\n\t\t\t\t\t\t'<label class=\"menu-popup-item-text\" for=\"' + menuItem.id + '\">' + menuItem.text + '</label>' +\n\t\t\t\t\t\t'</div>' +\n\t\t\t\t\t\t'</div>';\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tchecked = this.selected.find(function(itemId){return itemId === menuItem.id});\n\n\t\t\t\t\tmenuItem.layout.item.className = 'menu-popup-item';\n\t\t\t\t\tmenuItem.layout.item.innerHTML = '<div class=\"menu-popup-item-inner\">' +\n\t\t\t\t\t\t'<div class=\"menu-popup-item-resource\">' +\n\t\t\t\t\t\t'<input class=\"menu-popup-item-resource-checkbox\" type=\"checkbox\"' + (checked ? 'checked=\"checked\"' : '') + ' id=\"' + menuItem.id + '\">' +\n\t\t\t\t\t\t'<label class=\"menu-popup-item-text\" for=\"' + menuItem.id + '\">' + menuItem.text + '</label>' +\n\t\t\t\t\t\t'</div>' +\n\t\t\t\t\t\t'</div>';\n\t\t\t\t}\n\t\t\t}, this);\n\n\t\t\tEvent.unbind(document, 'click', this.handleClick.bind(this));\n\t\t\tsetTimeout(function(){\n\t\t\t\tEvent.bind(document, 'click', this.handleClick.bind(this));\n\t\t\t}.bind(this), 50);\n\t\t}\n\t}\n\n\tclosePopup()\n\t{\n\t\tif (this.isPopupShown())\n\t\t{\n\t\t\tthis.popup.close();\n\t\t\tif (this.multiple)\n\t\t\t{\n\t\t\t\tEvent.unbind(document, 'click', this.handleClick.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\n\tisPopupShown()\n\t{\n\t\treturn this.popup && this.popup.popupWindow &&\n\t\t\tthis.popup.popupWindow.isShown && this.popup.popupWindow.isShown() &&\n\t\t\tthis.popup.popupWindow.popupContainer &&\n\t\t\tDom.isShown(this.popup.popupWindow.popupContainer);\n\t}\n\n\tmenuItemClick(e, menuItem)\n\t{\n\t\tlet\n\t\t\tselectAllcheckbox,\n\t\t\ttarget = e.target || e.srcElement,\n\t\t\tfoundValue, checkbox;\n\n\n\t\tif (this.multiple)\n\t\t{\n\t\t\tfoundValue = this.values.find(function(value){return value.id == menuItem.id;});\n\t\t\tcheckbox = menuItem.layout.item.querySelector('.menu-popup-item-resource-checkbox');\n\n\t\t\tif (foundValue && target && (Dom.hasClass(target, \"menu-popup-item\") || Dom.hasClass(target, \"menu-popup-item-resource-checkbox\") || Dom.hasClass(target, \"menu-popup-item-inner\")))\n\t\t\t{\n\t\t\t\tif (!Dom.hasClass(target, \"menu-popup-item-resource-checkbox\"))\n\t\t\t\t{\n\t\t\t\t\tcheckbox.checked = !checkbox.checked;\n\t\t\t\t}\n\n\t\t\t\tif (checkbox.checked)\n\t\t\t\t{\n\t\t\t\t\tthis.selectItem(foundValue);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.deselectItem(foundValue);\n\t\t\t\t\tselectAllcheckbox = this.popupContainer.querySelector('.menu-popup-item-all-resources-checkbox');\n\t\t\t\t\tthis.selectAllChecked = false;\n\t\t\t\t\tif (selectAllcheckbox)\n\t\t\t\t\t{\n\t\t\t\t\t\tselectAllcheckbox.checked = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.setSelectedValues(this.selected);\n\t\t\t\tthis.handleControlChanges();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.setSelectedValues([menuItem.id]);\n\t\t\tthis.handleControlChanges();\n\t\t\tthis.closePopup();\n\t\t}\n\t}\n\n\tselectItem(value)\n\t{\n\t\tif (!this.selected.includes(value.id))\n\t\t{\n\t\t\tthis.selected.push(value.id);\n\t\t}\n\t}\n\n\tdeselectItem(value)\n\t{\n\t\tlet index = this.selected.indexOf(parseInt(value.id));\n\t\tif (index >= 0)\n\t\t{\n\t\t\tthis.selected = this.selected.slice(0, index).concat(this.selected.slice(index + 1));\n\t\t}\n\t}\n\n\tselectAllItemClick(e, menuItem)\n\t{\n\t\tlet target = e.target || e.srcElement;\n\t\tif (target && (Dom.hasClass(target, \"menu-popup-item\") || Dom.hasClass(target, \"menu-popup-item-resource-checkbox\")))\n\t\t{\n\t\t\tlet checkbox = menuItem.layout.item.querySelector('.menu-popup-item-resource-checkbox');\n\n\t\t\tif (Dom.hasClass(target, \"menu-popup-item\"))\n\t\t\t{\n\t\t\t\tcheckbox.checked = !checkbox.checked;\n\t\t\t}\n\n\t\t\tlet i, checkboxes = this.popupContainer.querySelectorAll('input.menu-popup-item-resource-checkbox');\n\t\t\tthis.selectAllChecked = checkbox.checked;\n\n\t\t\tfor (i = 0; i < checkboxes.length; i++)\n\t\t\t{\n\t\t\t\tcheckboxes[i].checked = this.selectAllChecked;\n\t\t\t}\n\t\t\tthis.selected = [];\n\t\t\tif (this.selectAllChecked)\n\t\t\t{\n\t\t\t\tthis.values.forEach(function(value){this.selected.push(value.id);}, this);\n\t\t\t}\n\t\t\tthis.setSelectedValues(this.selected);\n\t\t\tthis.handleControlChanges();\n\t\t}\n\t}\n\n\thandleClick(e)\n\t{\n\t\tif (this.isPopupShown() && !this.popupContainer.contains(e.target || e.srcElement))\n\t\t{\n\t\t\tthis.closePopup({animation: true});\n\t\t}\n\t\tthis.handleControlChanges();\n\t}\n\n\tgetSelectedValues()\n\t{\n\t\treturn this.selected;\n\t}\n\n\tsetSelectedValues(values)\n\t{\n\t\tlet i,\n\t\t\tfoundValue,\n\t\t\ttextValues = [],\n\t\t\tselectedValues = [];\n\n\t\tfor (i = 0; i < values.length; i++)\n\t\t{\n\t\t\tfoundValue = this.values.find(function(value){return value.id === values[i];});\n\t\t\tif (foundValue)\n\t\t\t{\n\t\t\t\ttextValues.push(foundValue.title);\n\t\t\t\tselectedValues.push(foundValue.id);\n\t\t\t}\n\t\t}\n\n\t\tthis.selected = selectedValues;\n\t\tDom.adjust(this.DOM.select, {text: textValues.length ? textValues.join(', ') : Loc.getMessage('USER_TYPE_RESOURCE_LIST_PLACEHOLDER')});\n\t}\n\n\thandleControlChanges()\n\t{\n\t\tif (this.handleChangesCallback)\n\t\t{\n\t\t\tthis.handleChangesCallback(this.getSelectedValues());\n\t\t}\n\t}\n}\n","import {Type} from \"../resourcebooking\";\nimport {ViewControlAbstract} from \"../viewcontrolabstract\";\nimport {ViewDropDownSelect} from \"../viewdropdownselect\";\n\nexport class UserSelector extends ViewControlAbstract\n{\n\tconstructor(params)\n\t{\n\t\tsuper(params);\n\n\t\tthis.name = 'UserSelector';\n\t\tthis.data = params.data || {};\n\t\tthis.userList = [];\n\t\tthis.userIndex = {};\n\n\t\tthis.values = [];\n\t\tthis.defaultMode = 'auto';\n\t\tthis.previewMode = params.previewMode === undefined;\n\t\tthis.autoSelectDefaultValue = params.autoSelectDefaultValue;\n\t\tthis.changeValueCallback = params.changeValueCallback;\n\n\t\tthis.handleSettingsData(this.data, params.userIndex);\n\t}\n\n\tdisplayControl()\n\t{\n\t\tthis.selectedValue = this.getSelectedUser();\n\t\tthis.dropdownSelect = new ViewDropDownSelect({\n\t\t\twrap: this.DOM.controlWrap,\n\t\t\tvalues: this.userList,\n\t\t\tselected: this.selectedValue,\n\t\t\thandleChangesCallback: this.handleChanges.bind(this)\n\t\t});\n\t\tthis.dropdownSelect.build();\n\t}\n\n\trefresh(data, userIndex)\n\t{\n\t\tthis.refreshLabel(data);\n\t\tthis.data = data;\n\t\tthis.handleSettingsData(this.data, userIndex);\n\t\tthis.selectedValue = this.getSelectedUser();\n\n\t\tif (this.dropdownSelect)\n\t\t{\n\t\t\tthis.dropdownSelect.setSettings({\n\t\t\t\tvalues: this.userList,\n\t\t\t\tselected: this.selectedValue\n\t\t\t});\n\t\t}\n\n\t\tif (this.setDataConfig())\n\t\t{\n\t\t\tif (this.isDisplayed())\n\t\t\t{\n\t\t\t\tthis.show({animation: true});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.hide({animation: true});\n\t\t\t}\n\t\t}\n\t}\n\n\thandleSettingsData(data, userIndex)\n\t{\n\t\tif (Type.isPlainObject(userIndex))\n\t\t{\n\t\t\tfor (let id in userIndex)\n\t\t\t{\n\t\t\t\tif (userIndex.hasOwnProperty(id))\n\t\t\t\t{\n\t\t\t\t\tthis.userIndex[id] = userIndex[id];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.defaultMode = this.data.defaultMode === 'none' ? 'none' : 'auto';\n\t\tlet dataValue = [];\n\t\tthis.userList = [];\n\t\tif (this.data.value)\n\t\t{\n\t\t\tlet dataValueRaw = Type.isArray(this.data.value) ? this.data.value : this.data.value.split('|');\n\t\t\tdataValueRaw.forEach(function(id)\n\t\t\t{\n\t\t\t\tid = parseInt(id);\n\t\t\t\tif (id > 0)\n\t\t\t\t{\n\t\t\t\t\tdataValue.push(id);\n\t\t\t\t\tif (this.userIndex[id])\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.userList.push({\n\t\t\t\t\t\t\tid: id,\n\t\t\t\t\t\t\ttitle: this.userIndex[id].displayName\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this);\n\t\t}\n\t\tthis.values = dataValue;\n\t}\n\n\tgetSelectedUser()\n\t{\n\t\tlet selected = null;\n\t\tif (this.dropdownSelect)\n\t\t{\n\t\t\tselected = this.dropdownSelect.getSelectedValues();\n\t\t\tselected = (Type.isArray(selected) && selected.length) ? selected[0] : null;\n\t\t}\n\n\t\tif (!selected && this.previewMode\n\t\t\t&& this.data.defaultMode === 'auto'\n\t\t\t&& this.userList && this.userList[0])\n\t\t{\n\t\t\tselected = this.userList[0].id;\n\t\t}\n\n\t\tif (!selected && this.autoSelectDefaultValue)\n\t\t{\n\t\t\tselected = this.autoSelectDefaultValue;\n\t\t}\n\n\t\treturn selected;\n\t}\n\n\tsetSelectedUser(userId)\n\t{\n\t\tif (this.dropdownSelect)\n\t\t{\n\t\t\tthis.dropdownSelect.setSelectedValues([userId]);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.autoSelectDefaultValue = parseInt(userId);\n\t\t}\n\t}\n\n\thandleChanges(selectedValues)\n\t{\n\t\tif (!this.previewMode && Type.isFunction(this.changeValueCallback))\n\t\t{\n\t\t\tthis.changeValueCallback(selectedValues[0] || null);\n\t\t}\n\t}\n}","import {Type} from \"../resourcebooking\";\nimport {ViewControlAbstract} from \"../viewcontrolabstract\";\nimport {ViewDropDownSelect} from \"../viewdropdownselect\";\n\nexport class ResourceSelector extends ViewControlAbstract\n{\n\tconstructor(params)\n\t{\n\t\tsuper(params);\n\t\tthis.name = 'ResourceSelector';\n\t\tthis.data = params.data;\n\t\tthis.allResourceList = params.resourceList;\n\t\tthis.autoSelectDefaultValue = params.autoSelectDefaultValue;\n\t\tthis.changeValueCallback = params.changeValueCallback;\n\t\tthis.handleSettingsData(params.data);\n\t}\n\n\thandleSettingsData(data)\n\t{\n\t\tif (!Type.isArray(data.value))\n\t\t{\n\t\t\tlet dataValue = [];\n\t\t\tif (data.value)\n\t\t\t{\n\t\t\t\tdata.value.split('|').forEach(function(id)\n\t\t\t\t{\n\t\t\t\t\tif (parseInt(id) > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tdataValue.push(parseInt(id))\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.data.value = dataValue;\n\t\t}\n\n\t\tthis.resourceList = [];\n\t\tif (Type.isArray(this.allResourceList) && Type.isArray(this.data.value))\n\t\t{\n\t\t\tthis.allResourceList.forEach(function(item)\n\t\t\t{\n\t\t\t\tif (this.data.value.includes(parseInt(item.id)))\n\t\t\t\t{\n\t\t\t\t\tthis.resourceList.push(item);\n\t\t\t\t}\n\t\t\t}, this);\n\t\t}\n\n\t\tthis.setSelectedValues(this.getSelectedValues());\n\t}\n\n\tdisplayControl()\n\t{\n\t\tthis.dropdownSelect = new ViewDropDownSelect({\n\t\t\twrap: this.DOM.controlWrap,\n\t\t\tvalues: this.resourceList,\n\t\t\tselected: this.selectedValues,\n\t\t\tmultiple: this.data.multiple === 'Y',\n\t\t\thandleChangesCallback: this.changeValueCallback\n\t\t});\n\t\tthis.dropdownSelect.build();\n\t}\n\n\trefresh(data)\n\t{\n\t\tthis.refreshLabel(data);\n\t\tthis.data = data;\n\t\tthis.handleSettingsData(this.data);\n\t\tthis.setSelectedValues(this.getSelectedValues());\n\n\t\tif (this.dropdownSelect)\n\t\t{\n\t\t\tthis.dropdownSelect.setSettings({\n\t\t\t\tvalues: this.resourceList,\n\t\t\t\tselected: this.selectedValues,\n\t\t\t\tmultiple: this.data.multiple === 'Y'\n\t\t\t});\n\t\t}\n\n\t\tif (this.setDataConfig())\n\t\t{\n\t\t\tif (this.isDisplayed())\n\t\t\t{\n\t\t\t\tthis.show({animation: true});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.hide({animation: true});\n\t\t\t}\n\t\t}\n\t}\n\n\tgetSelectedValues()\n\t{\n\t\tlet selected = null;\n\n\t\tif (this.dropdownSelect)\n\t\t{\n\t\t\tselected = this.dropdownSelect.getSelectedValues();\n\t\t}\n\n\t\tif (!selected && this.autoSelectDefaultValue)\n\t\t{\n\t\t\tselected = [this.autoSelectDefaultValue];\n\t\t}\n\n\t\tif (!selected && this.data.defaultMode === 'auto')\n\t\t{\n\t\t\tif (this.resourceList && this.resourceList[0])\n\t\t\t{\n\t\t\t\tselected = [this.resourceList[0].id];\n\t\t\t}\n\t\t}\n\n\t\treturn selected;\n\t}\n\n\tsetSelectedValues(selectedValues)\n\t{\n\t\tthis.selectedValues = selectedValues;\n\t}\n\n\tsetSelectedResource(id)\n\t{\n\t\tif (this.dropdownSelect)\n\t\t{\n\t\t\tthis.dropdownSelect.setSelectedValues([id]);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.autoSelectDefaultValue = parseInt(id);\n\t\t\tthis.selectedValues = [id];\n\t\t}\n\t}\n}","import {Type, BookingUtil} from \"../resourcebooking\";\nimport {ViewControlAbstract} from \"../viewcontrolabstract\";\nimport {ViewDropDownSelect} from \"../viewdropdownselect\";\n\nexport class ServiceSelector extends ViewControlAbstract\n{\n\tconstructor(params)\n\t{\n\t\tsuper(params);\n\t\tthis.name = 'ServiceSelector';\n\t\tthis.data = params.data;\n\t\tthis.serviceList = [];\n\n\t\tthis.allServiceList = [];\n\t\tif (Type.isArray(params.serviceList))\n\t\t{\n\t\t\tparams.serviceList.forEach((service) => {\n\t\t\t\tif (Type.isString(name))\n\t\t\t\t{\n\t\t\t\t\tservice.name = service.name.trim();\n\t\t\t\t}\n\t\t\t\tthis.allServiceList.push(service);\n\t\t\t})\n\t\t}\n\t\tthis.values = [];\n\t\tthis.changeValueCallback = Type.isFunction(params.changeValueCallback) ? params.changeValueCallback : null;\n\t\tif (params.selectedValue)\n\t\t{\n\t\t\tthis.setSelectedService(params.selectedValue);\n\t\t}\n\t\tthis.handleSettingsData(this.data);\n\t}\n\n\tdisplayControl()\n\t{\n\t\tthis.dropdownSelect = new ViewDropDownSelect({\n\t\t\twrap: this.DOM.controlWrap,\n\t\t\tvalues: this.serviceList,\n\t\t\tselected: this.getSelectedService(),\n\t\t\thandleChangesCallback: function (selectedValues)\n\t\t\t{\n\t\t\t\tif (selectedValues && selectedValues[0])\n\t\t\t\t{\n\t\t\t\t\tthis.setSelectedService(selectedValues[0]);\n\t\t\t\t\tif (this.changeValueCallback)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.changeValueCallback();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}.bind(this)\n\t\t});\n\t\tthis.dropdownSelect.build();\n\t}\n\n\trefresh(data)\n\t{\n\t\tthis.refreshLabel(data);\n\t\tthis.data = data;\n\n\t\tthis.handleSettingsData(this.data);\n\n\t\tif (this.dropdownSelect)\n\t\t{\n\t\t\tthis.dropdownSelect.setSettings({\n\t\t\t\tvalues: this.serviceList,\n\t\t\t\tselected: this.getSelectedService()\n\t\t\t});\n\t\t}\n\n\t\tif (this.setDataConfig())\n\t\t{\n\t\t\tif (this.isDisplayed())\n\t\t\t{\n\t\t\t\tthis.show({animation: true});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.hide({animation: true});\n\t\t\t}\n\t\t}\n\t}\n\n\thandleSettingsData()\n\t{\n\t\tthis.serviceIndex = {};\n\t\tif (Type.isArray(this.allServiceList))\n\t\t{\n\t\t\tthis.allServiceList.forEach(function(service)\n\t\t\t{\n\t\t\t\tif (Type.isPlainObject(service)\n\t\t\t\t\t&& Type.isString(service.name)\n\t\t\t\t\t&& service.name.trim() !== '')\n\t\t\t\t{\n\t\t\t\t\tthis.serviceIndex[this.prepareServiceId(service.name)] = service;\n\t\t\t\t}\n\t\t\t}, this);\n\t\t}\n\n\t\tthis.serviceList = [];\n\t\tif (this.data.value)\n\t\t{\n\t\t\tlet dataValueRaw = Type.isArray(this.data.value) ? this.data.value : this.data.value.split('|');\n\t\t\tdataValueRaw.forEach(function(id)\n\t\t\t{\n\t\t\t\tlet service = this.serviceIndex[this.prepareServiceId(id)];\n\t\t\t\tif (Type.isPlainObject(service)\n\t\t\t\t\t&& Type.isString(service.name)\n\t\t\t\t\t&& service.name.trim() !== '')\n\t\t\t\t{\n\t\t\t\t\tthis.serviceList.push({\n\t\t\t\t\t\tid: this.prepareServiceId(service.name),\n\t\t\t\t\t\ttitle: service.name + ' - ' + BookingUtil.getDurationLabel(service.duration)\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, this);\n\t\t}\n\t}\n\n\tsetSelectedService(serviceName)\n\t{\n\t\tthis.selectedService = serviceName;\n\t}\n\n\tgetSelectedService(getMeta)\n\t{\n\t\treturn getMeta !== true ? (this.selectedService || null) : (this.serviceIndex[this.prepareServiceId(this.selectedService)] || null);\n\t}\n\n\tprepareServiceId(str)\n\t{\n\t\treturn BookingUtil.translit(str);\n\t}\n}\n","import {Type, Dom, BookingUtil, SelectInput} from \"../resourcebooking\";\nimport {ViewControlAbstract} from \"../viewcontrolabstract\";\n\nexport class DurationSelector extends ViewControlAbstract\n{\n\tconstructor(params)\n\t{\n\t\tsuper(params);\n\t\tthis.name = 'DurationSelector';\n\t\tthis.data = params.data;\n\t\tthis.durationList = BookingUtil.getDurationList(params.fullDay);\n\t\tthis.changeValueCallback = params.changeValueCallback;\n\t\tthis.defaultValue = params.defaultValue || this.data.defaultValue;\n\t\tthis.handleSettingsData(params.data);\n\t}\n\n\thandleSettingsData()\n\t{\n\t\tthis.durationItems = [];\n\t\tif (Type.isArray(this.durationList))\n\t\t{\n\t\t\tthis.durationList.forEach(function(item)\n\t\t\t{\n\t\t\t\tthis.durationItems.push({\n\t\t\t\t\tid: item.value,\n\t\t\t\t\ttitle: item.label\n\t\t\t\t});\n\t\t\t}, this);\n\t\t}\n\t}\n\n\tdisplayControl()\n\t{\n\t\tthis.DOM.durationInput = this.DOM.controlWrap.appendChild(Dom.create('INPUT', {\n\t\t\tattrs: {\n\t\t\t\tvalue: this.data.defaultValue || null,\n\t\t\t\ttype: 'text'\n\t\t\t},\n\t\t\tprops: {className: 'calendar-resbook-webform-block-input calendar-resbook-webform-block-input-dropdown'}\n\t\t}));\n\n\t\tthis.durationControl = new SelectInput({\n\t\t\tinput: this.DOM.durationInput,\n\t\t\tvalues: this.durationList,\n\t\t\tvalue: this.data.defaultValue || null,\n\t\t\teditable: this.data.manualInput === 'Y',\n\t\t\tdefaultValue: this.defaultValue,\n\t\t\tsetFirstIfNotFound: true,\n\t\t\tonChangeCallback: this.changeValueCallback\n\t\t});\n\t}\n\n\trefresh(data)\n\t{\n\t\tthis.refreshLabel(data);\n\t\tthis.data = data;\n\t\tthis.handleSettingsData(this.data);\n\n\t\tif (this.setDataConfig())\n\t\t{\n\t\t\tif (this.isDisplayed())\n\t\t\t{\n\t\t\t\tthis.show({animation: true});\n\t\t\t\tif (this.durationControl)\n\t\t\t\t{\n\t\t\t\t\tthis.durationControl.setValue(this.data.defaultValue || null);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.hide({animation: true});\n\t\t\t}\n\t\t}\n\t}\n\n\tgetSelectedValue()\n\t{\n\t\tlet duration = null;\n\t\tif (this.durationControl)\n\t\t{\n\t\t\tduration = BookingUtil.parseDuration(this.durationControl.getValue());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tduration = parseInt(this.defaultValue);\n\t\t}\n\t\treturn duration;\n\t}\n}","import {Type, Loc, Dom, Event, Tag, Browser, BookingUtil} from \"../resourcebooking\";\nimport {ViewControlAbstract} from \"../viewcontrolabstract\";\n\nexport class DateSelector extends ViewControlAbstract\n{\n\tconstructor(params)\n\t{\n\t\tsuper(params);\n\t\tthis.DOM = {\n\t\t\touterWrap: params.outerWrap,\n\t\t\twrap: null\n\t\t};\n\t\tthis.data = params.data || {};\n\t\tthis.changeValueCallback = params.changeValueCallback;\n\t\tthis.requestDataCallback = params.requestDataCallback;\n\t\tthis.previewMode = params.previewMode === undefined;\n\t\tthis.allowOverbooking = params.allowOverbooking;\n\t\tthis.setDataConfig();\n\t\tthis.displayed = true;\n\t}\n\n\tdisplay(params)\n\t{\n\t\tparams = params || {};\n\t\tthis.setDateIndex(params.availableDateIndex);\n\t\tthis.setCurrentDate(params.selectedValue);\n\n\t\tthis.DOM.wrap = this.DOM.outerWrap.appendChild(Tag.render`<div class=\"calendar-resbook-webform-block\"></div>`);\n\n\t\tthis.DOM.innerWrap = this.DOM.wrap.appendChild(Tag.render`<div class=\"calendar-resbook-webform-block-inner\"></div>`);\n\t\tif (this.data.label)\n\t\t{\n\t\t\tthis.DOM.labelWrap = this.DOM.innerWrap.appendChild(Dom.create(\"div\", {props : { className : 'calendar-resbook-webform-block-title'}, text: this.data.label + '*'}));\n\t\t}\n\t\tthis.displayControl();\n\t\tthis.shown = true;\n\t}\n\n\trefresh(data, params)\n\t{\n\t\tparams = params || {};\n\t\tthis.setDateIndex(params.availableDateIndex);\n\t\tthis.setCurrentDate(params.selectedValue);\n\n\t\tthis.data = data;\n\t\tDom.adjust(this.DOM.labelWrap, {text: this.data.label + '*'});\n\n\t\tif (this.setDataConfig())\n\t\t{\n\t\t\tDom.remove(this.DOM.controlWrap);\n\t\t\tthis.displayControl();\n\t\t}\n\n\t\tif (this.style === 'line')\n\t\t{\n\t\t\tthis.lineDateControl.refreshDateAvailability();\n\t\t}\n\t}\n\n\tsetDataConfig()\n\t{\n\t\tlet\n\t\t\tstyle = this.data.style === 'line' ? 'line' : 'popup', // line|popup\n\t\t\tstart = this.data.start === 'today' ? 'today' : 'free',\n\t\t\tconfigWasChanged = this.style !== style || this.start !== start;\n\n\t\tthis.style = style;\n\t\tthis.start = start;\n\n\t\treturn configWasChanged;\n\t}\n\n\thide()\n\t{\n\t\tDom.remove(this.DOM.innerWrap);\n\t\tthis.DOM.innerWrap = null;\n\t}\n\n\tdisplayControl()\n\t{\n\t\tthis.DOM.controlWrap = this.DOM.innerWrap.appendChild(Tag.render`<div class=\"calendar-resbook-webform-block-date\"></div>`);\n\n\t\tif (this.style === 'popup')\n\t\t{\n\t\t\tthis.DOM.controlWrap.className = 'calendar-resbook-webform-block-calendar';\n\t\t\tthis.popupSateControl = new PopupDateSelector(\n\t\t\t\t{\n\t\t\t\t\twrap: this.DOM.controlWrap,\n\t\t\t\t\tisDateAvailable: this.isDateAvailable.bind(this),\n\t\t\t\t\tonChange: function(value)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.onChange(value);\n\t\t\t\t\t}.bind(this)\n\t\t\t\t});\n\t\t\tthis.popupSateControl.build();\n\t\t\tthis.popupSateControl.setValue(this.getValue());\n\t\t}\n\t\telse if (this.style === 'line')\n\t\t{\n\t\t\tthis.DOM.controlWrap.className = 'calendar-resbook-webform-block-date';\n\t\t\tthis.lineDateControl = new LineDateSelector(\n\t\t\t\t{\n\t\t\t\t\twrap: this.DOM.controlWrap,\n\t\t\t\t\tisDateAvailable: this.isDateAvailable.bind(this),\n\t\t\t\t\tonChange: this.onChange.bind(this)\n\t\t\t\t}\n\t\t\t);\n\t\t\tthis.lineDateControl.build();\n\t\t\tthis.lineDateControl.setValue(this.getValue());\n\t\t}\n\t}\n\n\tsetCurrentDate(date)\n\t{\n\t\tif (Type.isDate(date))\n\t\t{\n\t\t\tthis.currentDate = date;\n\t\t}\n\t}\n\n\tsetDateIndex(availableDateIndex)\n\t{\n\t\tif (Type.isPlainObject(availableDateIndex))\n\t\t{\n\t\t\tthis.availableDateIndex = availableDateIndex;\n\t\t}\n\t}\n\n\tisDateLoaded(date)\n\t{\n\t\tif (Type.isDate(date) && !this.isItPastDate(date) && this.availableDateIndex)\n\t\t{\n\t\t\tif (this.availableDateIndex[BookingUtil.formatDate(null, date)] !== undefined)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (Type.isFunction(this.requestDataCallback))\n\t\t\t{\n\t\t\t\tthis.requestDataCallback({date: date});\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tisDateAvailable(date)\n\t{\n\t\tif (this.previewMode || this.allowOverbooking)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tif (Type.isDate(date) && !this.isItPastDate(date) && this.availableDateIndex)\n\t\t{\n\t\t\tlet dateKey = BookingUtil.formatDate(null, date);\n\t\t\tif (this.availableDateIndex[dateKey] === undefined)\n\t\t\t{\n\t\t\t\tif (Type.isFunction(this.requestDataCallback))\n\t\t\t\t{\n\t\t\t\t\tthis.requestDataCallback({date: date});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn this.availableDateIndex[dateKey];\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tisItPastDate(date)\n\t{\n\t\tif (Type.isDate(date))\n\t\t{\n\t\t\tlet\n\t\t\t\tnowDate = new Date(),\n\t\t\t\tcheckDate = new Date(date.getTime());\n\n\t\t\tnowDate.setHours(0, 0, 0, 0);\n\t\t\tcheckDate.setHours(0, 0, 0, 0);\n\n\t\t\treturn checkDate.getTime() < nowDate.getTime();\n\t\t}\n\t\treturn false;\n\t}\n\n\trefreshCurrentValue()\n\t{\n\t\tthis.onChange(this.getDisplayedValue());\n\t}\n\n\tgetDisplayedValue()\n\t{\n\t\treturn this.style === 'popup' ? this.popupSateControl.getValue() : this.lineDateControl.getValue();;\n\t}\n\n\tonChange(date)\n\t{\n\t\tif (Type.isFunction(this.changeValueCallback))\n\t\t{\n\t\t\tlet realDate = date;\n\t\t\tif (!Type.isDate(realDate))\n\t\t\t{\n\t\t\t\trealDate = this.getDisplayedValue();\n\t\t\t}\n\t\t\tthis.setCurrentDate(date);\n\t\t\tthis.changeValueCallback(date, realDate, this.isDateAvailable(realDate));\n\t\t}\n\t}\n\n\tgetValue()\n\t{\n\t\tif (!this.currentDate)\n\t\t{\n\t\t\tthis.currentDate = new Date();\n\t\t}\n\t\treturn this.currentDate;\n\t}\n}\n\n\nclass PopupDateSelector\n{\n\tstatic externalDatePickerIsEnabled = null;\n\n\tconstructor(params)\n\t{\n\t\tthis.DOM = {\n\t\t\touterWrap: params.wrap,\n\t\t\twrap: null\n\t\t};\n\t\tthis.value = null;\n\t\tthis.datePicker = null;\n\t\tthis.isDateAvailable = Type.isFunction(params.isDateAvailable) ? params.isDateAvailable : function(){return true};\n\t\tthis.onChange = Type.isFunction(params.onChange) ? params.onChange : function(){};\n\t}\n\n\tbuild()\n\t{\n\t\tthis.DOM.wrap = this.DOM.outerWrap.appendChild(Dom.create(\"div\", {\n\t\t\tprops : { className : 'calendar-resbook-webform-block-strip'},\n\t\t\tevents: {click: this.handleClick.bind(this)}\n\t\t}));\n\n\t\tthis.DOM.valueInput = this.DOM.wrap.appendChild(Tag.render`<input type=\"hidden\" \nvalue=\"\"/>`);\n\n\t\tthis.DOM.previousArrow = this.DOM.wrap.appendChild(Tag.render`<span class=\"calendar-resbook-webform-block-strip-arrow calendar-resbook-webform-block-strip-arrow-prev\" data-bx-resbook-date-meta=\"previous\"/>`);\n\n\t\tthis.DOM.stateWrap = this.DOM.wrap.appendChild(Tag.render`<span class=\"calendar-resbook-webform-block-strip-text\" data-bx-resbook-date-meta=\"calendar\"/>`);\n\n\t\tthis.DOM.stateWrapDate = this.DOM.stateWrap.appendChild(Tag.render`<span class=\"calendar-resbook-webform-block-strip-date\"/>`);\n\t\tthis.DOM.stateWrapDay = this.DOM.stateWrap.appendChild(Tag.render`<span class=\"calendar-resbook-webform-block-strip-day\"/>`);\n\n\t\tthis.DOM.nextArrow = this.DOM.wrap.appendChild(Tag.render`<span class=\"calendar-resbook-webform-block-strip-arrow calendar-resbook-webform-block-strip-arrow-next\" data-bx-resbook-date-meta=\"next\"/>`);\n\t}\n\n\tgetValue()\n\t{\n\t\treturn this.value;\n\t}\n\n\tsetValue(dateValue)\n\t{\n\t\tthis.value = dateValue;\n\t\tDom.adjust(this.DOM.stateWrapDate, {text: BookingUtil.formatDate(Loc.getMessage('WEBF_RES_DATE_FORMAT_DATE_LINE'), dateValue)});\n\t\tDom.adjust(this.DOM.stateWrapDay, {text: BookingUtil.formatDate(Loc.getMessage('WEBF_RES_DATE_FORMAT_DAY_LINE'), dateValue)});\n\n\t\tif (!this.isDateAvailable(dateValue) || !Type.isDate(dateValue))\n\t\t{\n\t\t\tthis.onChange(false);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.onChange(this.value);\n\t\t}\n\t}\n\n\thandleClick(e)\n\t{\n\t\tlet\n\t\t\tdateValue,\n\t\t\ttarget = e.target || e.srcElement;\n\n\t\tif (target.hasAttribute('data-bx-resbook-date-meta') ||\n\t\t\t(target = target.closest('[data-bx-resbook-date-meta]')))\n\t\t{\n\t\t\tlet dateMeta = target.getAttribute('data-bx-resbook-date-meta');\n\t\t\tif (dateMeta === 'previous')\n\t\t\t{\n\t\t\t\tdateValue = this.getValue();\n\t\t\t\tdateValue.setDate(dateValue.getDate() - 1);\n\t\t\t\tthis.setValue(dateValue);\n\t\t\t}\n\t\t\telse if (dateMeta === 'next')\n\t\t\t{\n\t\t\t\tdateValue = this.getValue();\n\t\t\t\tdateValue.setDate(dateValue.getDate() + 1);\n\t\t\t\tthis.setValue(dateValue);\n\t\t\t}\n\t\t\telse if (dateMeta === 'calendar')\n\t\t\t{\n\t\t\t\tthis.openCalendarPopup();\n\t\t\t}\n\t\t}\n\t}\n\n\topenCalendarPopup()\n\t{\n\t\tthis.DOM.valueInput.value = BookingUtil.formatDate(null, this.getValue().getTime() / 1000);\n\n\t\tif (PopupDateSelector.isExternalDatePickerEnabled())\n\t\t{\n\t\t\tthis.openExternalDatePicker();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.openBxCalendar();\n\t\t}\n\t}\n\n\topenBxCalendar()\n\t{\n\t\tBX.calendar({node: this.DOM.stateWrap, field: this.DOM.valueInput, bTime: false});\n\t\tif (BX.calendar.get().popup)\n\t\t{\n\t\t\tBookingUtil.unbindCustomEvent(BX.calendar.get().popup, 'onPopupClose', this.handleCalendarClose.bind(this));\n\t\t\tBookingUtil.bindCustomEvent(BX.calendar.get().popup, 'onPopupClose', this.handleCalendarClose.bind(this));\n\t\t}\n\t}\n\n\thandleCalendarClose()\n\t{\n\t\tthis.setValue(BookingUtil.parseDate(this.DOM.valueInput.value));\n\t}\n\n\tstatic isExternalDatePickerEnabled()\n\t{\n\t\tif (Type.isNull(PopupDateSelector.externalDatePickerIsEnabled))\n\t\t{\n\t\t\tPopupDateSelector.externalDatePickerIsEnabled = !!(window.BX && BX.UI && BX.UI.Vue && BX.UI.Vue.Components && BX.UI.Vue.Components.DatePick);\n\t\t}\n\n\t\treturn PopupDateSelector.externalDatePickerIsEnabled;\n\t}\n\n\topenExternalDatePicker()\n\t{\n\t\tif (Type.isNull(this.datePicker))\n\t\t{\n\t\t\tthis.datePicker = new BX.UI.Vue.Components.DatePick(\n\t\t\t\t{\n\t\t\t\t\tnode: this.DOM.stateWrap,\n\t\t\t\t\thasTime: false,\n\t\t\t\t\tevents: {\n\t\t\t\t\t\tchange: function(value){\n\t\t\t\t\t\t\tthis.DOM.valueInput.value = value;\n\t\t\t\t\t\t\tthis.handleCalendarClose();\n\t\t\t\t\t\t}.bind(this)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tthis.datePicker.value = this.DOM.valueInput.value;\n\t\tthis.datePicker.toggle();\n\t}\n}\n\n\n\nclass LineDateSelector\n{\n\tconstructor(params)\n\t{\n\t\tparams = params || {};\n\t\tthis.DOM = {\n\t\t\touterWrap: params.wrap,\n\t\t\twrap: null\n\t\t};\n\t\tthis.value = null;\n\t\tthis.isDateAvailable = Type.isFunction(params.isDateAvailable) ? params.isDateAvailable : function(){return true};\n\t\tthis.onChange = Type.isFunction(params.onChange) ? params.onChange : function(){};\n\t\tthis.DAYS_DISPLAY_SIZE = 30;\n\t\tthis.DOM.dayNodes = {};\n\t\tthis.dayNodeIndex = {};\n\t}\n\n\tbuild()\n\t{\n\t\tthis.DOM.monthTitle = this.DOM.outerWrap.appendChild(Dom.create(\"span\", {\n\t\t\tprops : { className : 'calendar-resbook-webform-block-date-month'}\n\t\t}));\n\n\t\tthis.DOM.wrap = this.DOM.outerWrap.appendChild(Dom.create(\"div\", {\n\t\t\tprops : { className : 'calendar-resbook-webform-block-date-range'},\n\t\t\tevents: {click: this.handleClick.bind(this)}\n\t\t}));\n\n\t\tthis.DOM.controlStaticWrap = this.DOM.wrap.appendChild(Tag.render`<div class=\"calendar-resbook-webform-block-date-range-static-wrap\" \n></div>`);\n\t\tthis.DOM.controlInnerWrap = this.DOM.controlStaticWrap.appendChild(Tag.render`<div class=\"calendar-resbook-webform-block-date-range-inner-wrap\" \n></div>`);\n\t\tthis.DOM.valueInput = this.DOM.wrap.appendChild(Tag.render`<input type=\"hidden\" \nvalue=\"\"/>`);\n\n\t\tthis.fillDays();\n\t\tthis.initCustomScroll();\n\t}\n\n\tfillDays()\n\t{\n\t\tlet\n\t\t\ti,\n\t\t\tstartDate = this.getStartLoadDate(),\n\t\t\tdate = new Date(startDate.getTime());\n\n\t\tfor (i = 0; i < this.DAYS_DISPLAY_SIZE; i++)\n\t\t{\n\t\t\tthis.addDateSlot(date);\n\t\t\tdate.setDate(date.getDate() + 1);\n\t\t}\n\n\t\tthis.innerWidth = parseInt(this.DOM.controlInnerWrap.offsetWidth);\n\t}\n\n\taddDateSlot(date)\n\t{\n\t\tlet dateCode = BookingUtil.formatDate('Y-m-d', date.getTime() / 1000);\n\t\tthis.dayNodeIndex[dateCode] = new Date(date.getTime());\n\t\tthis.DOM.dayNodes[dateCode] = this.DOM.controlInnerWrap.appendChild(Dom.create(\"div\", {\n\t\t\tattrs : {\n\t\t\t\tclassName : 'calendar-resbook-webform-block-date-item' + (this.isDateAvailable(date) ? '' : ' calendar-resbook-webform-block-date-item-off'),\n\t\t\t\t'data-bx-resbook-date-meta' : dateCode\n\t\t\t},\n\t\t\thtml: '<div class=\"calendar-resbook-webform-block-date-item-inner\">' +\n\t\t\t\t'<span class=\"calendar-resbook-webform-block-date-number\">' +\n\t\t\t\tBookingUtil.formatDate(Loc.getMessage('WEBF_RES_DATE_FORMAT_DATE'), date) +\n\t\t\t\t'</span>' +\n\t\t\t\t'<span class=\"calendar-resbook-webform-block-date-day\">' +\n\t\t\t\tBookingUtil.formatDate(Loc.getMessage('WEBF_RES_DATE_FORMAT_DAY_OF_THE_WEEK'), date) +\n\t\t\t\t'</span>' +\n\t\t\t\t'</div>'\n\t\t}));\n\t}\n\n\trefreshDateAvailability()\n\t{\n\t\tfor (let dateCode in this.DOM.dayNodes)\n\t\t{\n\t\t\tif (this.DOM.dayNodes.hasOwnProperty(dateCode))\n\t\t\t{\n\t\t\t\tif (this.isDateAvailable(this.dayNodeIndex[dateCode]))\n\t\t\t\t{\n\t\t\t\t\tDom.removeClass(this.DOM.dayNodes[dateCode], 'calendar-resbook-webform-block-date-item-off');\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tDom.addClass(this.DOM.dayNodes[dateCode], 'calendar-resbook-webform-block-date-item-off');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\thandleClick(e)\n\t{\n\t\tlet\n\t\t\tdateValue,\n\t\t\ttarget = e.target || e.srcElement;\n\n\t\tif (target.hasAttribute('data-bx-resbook-date-meta') ||\n\t\t\t(target = target.closest('[data-bx-resbook-date-meta]')))\n\t\t{\n\t\t\tlet dateMeta = target.getAttribute('data-bx-resbook-date-meta');\n\t\t\tif (dateMeta && (dateValue = BookingUtil.parseDate(dateMeta, false, 'YYYY-MM-DD')))\n\t\t\t{\n\t\t\t\tthis.setValue(dateValue);\n\t\t\t}\n\t\t}\n\t}\n\n\tsetValue(dateValue)\n\t{\n\t\tif (Type.isDate(dateValue))\n\t\t{\n\t\t\tthis.value = dateValue;\n\t\t\tlet dayNode = this.getDayNode(dateValue);\n\t\t\tif (dayNode)\n\t\t\t{\n\t\t\t\tthis.setSelected(dayNode);\n\t\t\t}\n\t\t\tthis.onChange(this.value);\n\t\t}\n\t}\n\n\tgetValue()\n\t{\n\t\treturn this.value;\n\t}\n\n\tgetDayNode(dateValue)\n\t{\n\t\tlet dateCode = BookingUtil.formatDate('Y-m-d', dateValue.getTime() / 1000);\n\t\tif (this.DOM.dayNodes[dateCode])\n\t\t{\n\t\t\treturn this.DOM.dayNodes[dateCode];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.fillDays(dateValue);\n\t\t\tif (this.DOM.dayNodes[dateCode])\n\t\t\t{\n\t\t\t\treturn this.DOM.dayNodes[dateCode];\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tsetSelected(dayNode)\n\t{\n\t\tif (this.currentSelected)\n\t\t{\n\t\t\tDom.removeClass(this.currentSelected, 'calendar-resbook-webform-block-date-item-select');\n\t\t}\n\t\tthis.currentSelected = dayNode;\n\t\tDom.addClass(dayNode, 'calendar-resbook-webform-block-date-item-select');\n\t}\n\n\tgetStartLoadDate()\n\t{\n\t\tif (!this.startLoadDate)\n\t\t{\n\t\t\tthis.startLoadDate = new Date();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.startLoadDate.setDate(this.startLoadDate.getDate() + this.DAYS_DISPLAY_SIZE);\n\t\t}\n\t\treturn this.startLoadDate;\n\t}\n\n\tinitCustomScroll()\n\t{\n\t\tlet arrowWrap = this.DOM.wrap.appendChild(Tag.render`<div class=\"calendar-resbook-webform-block-arrow-container\" \n></div>`);\n\n\t\tthis.DOM.leftArrow = arrowWrap.appendChild(Dom.create(\"span\",\n\t\t\t{\n\t\t\t\tprops : {className : 'calendar-resbook-webform-block-arrow calendar-resbook-webform-block-arrow-prev'},\n\t\t\t\tevents: {click: this.handlePreletrowClick.bind(this)}\n\t\t\t}));\n\t\tthis.DOM.rightArrow = arrowWrap.appendChild(Dom.create(\"span\",\n\t\t\t{\n\t\t\t\tprops : { className : 'calendar-resbook-webform-block-arrow calendar-resbook-webform-block-arrow-next'},\n\t\t\t\tevents: {click: this.handleNextArrowClick.bind(this)}\n\t\t\t}));\n\n\t\tthis.outerWidth = parseInt(this.DOM.controlStaticWrap.offsetWidth);\n\t\tthis.innerWidth = parseInt(this.DOM.controlInnerWrap.offsetWidth);\n\n\t\tif ('onwheel' in document)\n\t\t{\n\t\t\tEvent.bind(this.DOM.controlStaticWrap, \"wheel\", this.mousewheelScrollHandler.bind(this));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tEvent.bind(this.DOM.controlStaticWrap, \"mousewheel\", this.mousewheelScrollHandler.bind(this));\n\t\t}\n\n\t\tthis.checkScrollPosition();\n\t}\n\n\thandleNextArrowClick()\n\t{\n\t\tthis.DOM.controlStaticWrap.scrollLeft = this.DOM.controlStaticWrap.scrollLeft + 100;\n\t\tthis.checkScrollPosition();\n\t}\n\n\thandlePreletrowClick()\n\t{\n\t\tthis.DOM.controlStaticWrap.scrollLeft = Math.max(this.DOM.controlStaticWrap.scrollLeft - 100, 0);\n\t\tthis.checkScrollPosition();\n\t}\n\n\tmousewheelScrollHandler(e)\n\t{\n\t\te = e || window.event;\n\t\tlet delta = e.deltaY || e.detail || e.wheelDelta;\n\t\tif (Math.abs(delta) > 0)\n\t\t{\n\t\t\tif (!Browser.isMac())\n\t\t\t{\n\t\t\t\tdelta = delta * 3;\n\t\t\t}\n\t\t\tthis.DOM.controlStaticWrap.scrollLeft = Math.max(this.DOM.controlStaticWrap.scrollLeft + delta, 0);\n\t\t\tthis.checkScrollPosition();\n\n\t\t\tif(e.stopPropagation)\n\t\t\t{\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tcheckScrollPosition()\n\t{\n\t\tif (this.outerWidth <= this.innerWidth)\n\t\t{\n\t\t\tthis.DOM.leftArrow.style.display = this.DOM.controlStaticWrap.scrollLeft === 0 ? 'none' : '';\n\t\t\t//this.DOM.rightArrow.style.display = (this.innerWidth - this.outerWidth - 4 <= this.DOM.controlStaticWrap.scrollLeft) ? 'none' : '';\n\t\t\tif (this.innerWidth - this.outerWidth - 4 <= this.DOM.controlStaticWrap.scrollLeft)\n\t\t\t{\n\t\t\t\tthis.fillDays();\n\t\t\t}\n\t\t}\n\n\t\tthis.updateMonthTitle();\n\t}\n\n\tupdateMonthTitle()\n\t{\n\t\tif (!this.dayNodeOuterWidth)\n\t\t{\n\t\t\tthis.dayNodeOuterWidth = this.DOM.controlInnerWrap.childNodes[1].offsetLeft - this.DOM.controlInnerWrap.childNodes[0].offsetLeft;\n\t\t\tif (!this.dayNodeOuterWidth)\n\t\t\t{\n\t\t\t\treturn setTimeout(this.updateMonthTitle.bind(this), 100);\n\t\t\t}\n\t\t}\n\n\t\tlet\n\t\t\tmonthFrom, monthTo, dateMeta, dateValue,\n\t\t\tfirstDayNodeIndex = Math.floor(this.DOM.controlStaticWrap.scrollLeft / this.dayNodeOuterWidth),\n\t\t\tlastDayNodeIndex = Math.floor((this.DOM.controlStaticWrap.scrollLeft + this.outerWidth) / this.dayNodeOuterWidth);\n\n\t\tif (this.DOM.controlInnerWrap.childNodes[firstDayNodeIndex])\n\t\t{\n\t\t\tdateMeta = this.DOM.controlInnerWrap.childNodes[firstDayNodeIndex].getAttribute('data-bx-resbook-date-meta');\n\t\t\tif (dateMeta && (dateValue = BookingUtil.parseDate(dateMeta, false, 'YYYY-MM-DD')))\n\t\t\t{\n\t\t\t\tmonthFrom = monthTo = BookingUtil.formatDate('f', dateValue);\n\t\t\t}\n\t\t}\n\n\t\tif (this.DOM.controlInnerWrap.childNodes[lastDayNodeIndex])\n\t\t{\n\t\t\tdateMeta = this.DOM.controlInnerWrap.childNodes[lastDayNodeIndex].getAttribute('data-bx-resbook-date-meta');\n\t\t\tif (dateMeta && (dateValue = BookingUtil.parseDate(dateMeta, false, 'YYYY-MM-DD')))\n\t\t\t{\n\t\t\t\tmonthTo = BookingUtil.formatDate('f', dateValue);\n\t\t\t}\n\t\t}\n\n\t\tif (monthFrom && monthTo)\n\t\t{\n\t\t\tDom.adjust(this.DOM.monthTitle, {text: monthTo === monthFrom ? monthFrom : monthFrom + ' - ' + monthTo});\n\t\t}\n\t}\n}","import {Type, Loc, Dom, Event, Tag, Browser, BookingUtil, MenuManager} from \"../resourcebooking\";\nimport {ViewControlAbstract} from \"../viewcontrolabstract\";\n\nexport class TimeSelector extends ViewControlAbstract\n{\n\tconstructor(params)\n\t{\n\t\tsuper(params);\n\t\tthis.DOM = {\n\t\t\touterWrap: params.outerWrap,\n\t\t\twrap: null\n\t\t};\n\n\t\tthis.data = params.data || {};\n\t\tthis.setDataConfig();\n\n\t\tthis.timeFrom = this.data.timeFrom || params.timeFrom || 7;\n\t\tif (params.timeFrom !== undefined)\n\t\t{\n\t\t\tthis.timeFrom = params.timeFrom;\n\t\t}\n\t\tthis.timeTo = this.data.timeTo || 20;\n\t\tif (params.timeTo !== undefined)\n\t\t{\n\t\t\tthis.timeTo = params.timeTo;\n\t\t}\n\t\tthis.SLOTS_ROW_AMOUNT = 6;\n\t\tthis.id = 'time-selector-' + Math.round(Math.random() * 1000);\n\t\tthis.popupSelectId = this.id + '-select-popup';\n\n\t\tthis.previewMode = params.previewMode === undefined;\n\t\tthis.changeValueCallback = params.changeValueCallback;\n\t\tthis.timezone = params.timezone;\n\t\tthis.timezoneOffset = params.timezoneOffset;\n\t\tthis.timezoneOffsetLabel = params.timezoneOffsetLabel;\n\t\tthis.timeMidday = 12;\n\t\tthis.timeEvening = 17;\n\t\tthis.displayed = true;\n\t}\n\n\tsetDataConfig()\n\t{\n\t\tlet\n\t\t\tstyle = this.data.style === 'select' ? 'select' : 'slots', // select|slots\n\t\t\tshowOnlyFree = this.data.showOnlyFree !== 'N',\n\t\t\tshowFinishTime = this.data.showFinishTime === 'Y',\n\t\t\tscale = parseInt(this.data.scale || 30),\n\t\t\tconfigWasChanged = this.style !== style || this.showOnlyFree !== showOnlyFree || this.showFinishTime !== showFinishTime || this.scale !== scale;\n\n\t\tthis.style = style;\n\t\tthis.showOnlyFree = showOnlyFree;\n\t\tthis.showFinishTime = showFinishTime;\n\t\tthis.scale = scale;\n\n\t\treturn configWasChanged;\n\t}\n\n\tdisplay()\n\t{\n\t\tthis.DOM.wrap = this.DOM.outerWrap.appendChild(Tag.render`<div class=\"calendar-resbook-webform-block\"></div>`);\n\t\tthis.DOM.innerWrap = this.DOM.wrap.appendChild(Tag.render`<div class=\"calendar-resbook-webform-block-inner\"></div>`);\n\t\tif (this.data.label)\n\t\t{\n\t\t\tthis.DOM.labelWrap = this.DOM.innerWrap.appendChild(Dom.create(\"div\", {\n\t\t\t\tprops: {className: 'calendar-resbook-webform-block-title'},\n\t\t\t\ttext: this.data.label + '*'\n\t\t\t}));\n\n\t\t\tif (this.timezone)\n\t\t\t{\n\t\t\t\tthis.DOM.timezoneLabelWrap = this.DOM.labelWrap.appendChild(Tag.render`<div class=\"calendar-resbook-webform-block-title-timezone\"></div>`);\n\t\t\t\tDom.adjust(this.DOM.timezoneLabelWrap, {html: Loc.getMessage('USER_TYPE_RESOURCE_TIMEZONE').replace('#TIMEZONE#', this.timezone + ' ' + this.timezoneOffsetLabel)});\n\t\t\t}\n\t\t}\n\n\t\tthis.displayControl();\n\t\tthis.setValue(this.getValue());\n\t\tthis.shown = true;\n\t}\n\n\trefresh(data, params)\n\t{\n\t\tparams = params || {};\n\t\tthis.setSlotIndex(params.slotIndex);\n\t\tthis.currentDate = params.currentDate || new Date();\n\t\tthis.data = data;\n\n\t\tif (!this.isShown())\n\t\t{\n\t\t\tthis.setDataConfig();\n\t\t\tthis.display();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (this.DOM.labelWrap && this.data.label)\n\t\t\t{\n\t\t\t\tDom.adjust(this.DOM.labelWrap, {text: this.data.label + '*'});\n\t\t\t}\n\n\t\t\tif (this.timezone)\n\t\t\t{\n\t\t\t\tif (!this.DOM.timezoneLabelWrap\n\t\t\t\t\t|| !this.DOM.labelWrap.contains(this.DOM.timezoneLabelWrap))\n\t\t\t\t{\n\t\t\t\t\tthis.DOM.timezoneLabelWrap = this.DOM.labelWrap.appendChild(Tag.render`<div class=\"calendar-resbook-webform-block-title-timezone\"></div>`);\n\n\t\t\t\t}\n\t\t\t\tDom.adjust(this.DOM.timezoneLabelWrap, {html: Loc.getMessage('USER_TYPE_RESOURCE_TIMEZONE').replace('#TIMEZONE#', this.timezone + ' ' + this.timezoneOffsetLabel)});\n\t\t\t}\n\n\t\t\tif (this.setDataConfig() || params.slotIndex || params.selectedValue)\n\t\t\t{\n\t\t\t\tDom.remove(this.DOM.controlWrap);\n\t\t\t\tthis.displayControl();\n\t\t\t}\n\t\t}\n\n\t\tthis.setCurrentValue(params.selectedValue || this.getValue());\n\t}\n\n\tsetSlotIndex(slotIndex)\n\t{\n\t\tif (Type.isPlainObject(slotIndex))\n\t\t{\n\t\t\tthis.availableSlotIndex = slotIndex;\n\t\t}\n\t}\n\n\tsetCurrentValue(timeValue)\n\t{\n\t\tif (timeValue && (this.previewMode || this.availableSlotIndex[timeValue]))\n\t\t{\n\t\t\tthis.setValue(timeValue);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.setValue(null);\n\t\t}\n\t}\n\n\tshowEmptyWarning()\n\t{\n\t\tif (this.DOM.labelWrap)\n\t\t{\n\t\t\tthis.DOM.labelWrap.style.display = 'none';\n\t\t}\n\n\t\tif (!this.DOM.warningWrap)\n\t\t{\n\t\t\tthis.DOM.warningTextNode = Tag.render`<span class=\"calendar-resbook-webform-block-notice-date\"/>`;\n\n\t\t\tthis.DOM.warningWrap = this.DOM.innerWrap.appendChild(Dom.create(\"div\", {\n\t\t\t\tprops: {className: 'calendar-resbook-webform-block-notice'},\n\t\t\t\tchildren: [\n\t\t\t\t\tTag.render`<span class=\"calendar-resbook-webform-block-notice-icon\"/>`,\n\t\t\t\t\tthis.DOM.warningTextNode,\n\t\t\t\t\tDom.create(\"span\", {\n\t\t\t\t\t\tprops: {className: 'calendar-resbook-webform-block-notice-detail'},\n\t\t\t\t\t\ttext: Loc.getMessage('WEBF_RES_BOOKING_BUSY_DAY_WARNING')\n\t\t\t\t\t})\n\t\t\t\t]\n\t\t\t}));\n\t\t}\n\n\t\tif (this.DOM.warningWrap)\n\t\t{\n\t\t\tDom.adjust(this.DOM.warningTextNode, {text: BookingUtil.formatDate(Loc.getMessage('WEBF_RES_BUSY_DAY_DATE_FORMAT'), this.currentDate)});\n\t\t\tthis.DOM.warningWrap.style.display = '';\n\n\t\t\tthis.noSlotsAvailable = true;\n\t\t}\n\t}\n\n\thideEmptyWarning()\n\t{\n\t\tthis.noSlotsAvailable = false;\n\t\tif (this.DOM.labelWrap)\n\t\t{\n\t\t\tthis.DOM.labelWrap.style.display = '';\n\t\t}\n\t\tif (this.DOM.warningWrap)\n\t\t{\n\t\t\tthis.DOM.warningWrap.style.display = 'none';\n\t\t}\n\t}\n\n\tdisplayControl()\n\t{\n\t\tlet slotsInfo = this.getSlotsInfo();\n\t\tthis.slots = slotsInfo.slots;\n\n\t\tif (!slotsInfo.freeSlotsCount)\n\t\t{\n\t\t\tthis.showEmptyWarning();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.hideEmptyWarning();\n\t\t\tif (this.style === 'select')\n\t\t\t{\n\t\t\t\tthis.createSelectControl();\n\t\t\t}\n\t\t\telse if (this.style === 'slots')\n\t\t\t{\n\t\t\t\tthis.createSlotsControl();\n\t\t\t}\n\t\t}\n\t}\n\n\thide()\n\t{\n\t\tif (this.DOM.innerWrap)\n\t\t{\n\t\t\tthis.DOM.innerWrap.style.display = 'none';\n\t\t}\n\t}\n\n\tshow()\n\t{\n\t\tif (this.DOM.innerWrap)\n\t\t{\n\t\t\tthis.DOM.innerWrap.style.display = '';\n\t\t}\n\t}\n\n\tcreateSlotsControl()\n\t{\n\t\tif (this.DOM.controlWrap)\n\t\t{\n\t\t\tDom.remove(this.DOM.controlWrap);\n\t\t}\n\n\t\tthis.DOM.controlWrap = this.DOM.innerWrap.appendChild(\n\t\t\tDom.create(\"div\", {\n\t\t\t\tprops: {className: 'calendar-resbook-webform-block-time'},\n\t\t\t\tevents: {click: this.handleClick.bind(this)}\n\t\t\t}));\n\n\t\tif (!this.showFinishTime && !BookingUtil.isAmPmMode())\n\t\t{\n\t\t\tDom.addClass(this.DOM.controlWrap, 'calendar-resbook-webform-block-time-sm');\n\t\t}\n\t\telse if (!this.showFinishTime && BookingUtil.isAmPmMode())\n\t\t{\n\t\t\tDom.addClass(this.DOM.controlWrap, 'calendar-resbook-webform-block-time-md');\n\t\t}\n\t\telse if (BookingUtil.isAmPmMode())\n\t\t{\n\t\t\tDom.addClass(this.DOM.controlWrap, 'calendar-resbook-webform-block-time-lg');\n\t\t}\n\n\t\tthis.DOM.controlStaticWrap = this.DOM.controlWrap.appendChild(Tag.render`<div class=\"calendar-resbook-webform-block-time-static-wrap\"></div>`);\n\t\tthis.DOM.controlInnerWrap = this.DOM.controlStaticWrap.appendChild(Tag.render`<div class=\"calendar-resbook-webform-block-time-inner-wrap\"></div>`);\n\n\t\tlet\n\t\t\titemsInColumn,\n\t\t\tmaxColumnNumber = 3,\n\t\t\tparts = {},\n\t\t\titemNumber = 0,\n\t\t\tinnerWrap;\n\n\t\t// FilterSlots\n\t\tthis.slots.forEach(function(slot)\n\t\t{\n\t\t\tif (!parts[slot.partOfTheDay])\n\t\t\t{\n\t\t\t\tparts[slot.partOfTheDay] = {\n\t\t\t\t\titems: []\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tparts[slot.partOfTheDay].items.push(slot);\n\t\t});\n\n\t\tthis.slots.forEach(function(slot)\n\t\t{\n\t\t\tif (!parts[slot.partOfTheDay].wrap)\n\t\t\t{\n\t\t\t\titemNumber = 0;\n\t\t\t\titemsInColumn = 6;\n\t\t\t\tparts[slot.partOfTheDay].wrap = Dom.create(\"div\", {\n\t\t\t\t\tprops: {className: 'calendar-resbook-webform-block-col'},\n\t\t\t\t\thtml: '<span class=\"calendar-resbook-webform-block-col-title\">'\n\t\t\t\t\t\t+ Loc.getMessage('WEBF_RES_PART_OF_THE_DAY_' + slot.partOfTheDay.toUpperCase())\n\t\t\t\t\t\t+ '</span>'\n\t\t\t\t});\n\n\t\t\t\tparts[slot.partOfTheDay].itemsWrap = parts[slot.partOfTheDay].wrap.appendChild(Tag.render`<div class=\"calendar-resbook-webform-block-col-list\"></div>`);\n\n\t\t\t\tif (parts[slot.partOfTheDay].items.length > maxColumnNumber * itemsInColumn)\n\t\t\t\t{\n\t\t\t\t\titemsInColumn = Math.ceil(parts[slot.partOfTheDay].items.length / maxColumnNumber);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (itemNumber % itemsInColumn === 0)\n\t\t\t{\n\t\t\t\tinnerWrap = parts[slot.partOfTheDay].itemsWrap.appendChild(Tag.render`<div class=\"calendar-resbook-webform-block-col-list-inner\"></div>`);\n\t\t\t}\n\n\t\t\tif (innerWrap && (!slot.booked || !this.showOnlyFree))\n\t\t\t{\n\t\t\t\tinnerWrap.appendChild(Dom.create(\"div\", {\n\t\t\t\t\tattrs: {\n\t\t\t\t\t\t'data-bx-resbook-time-meta': 'slot' + (slot.booked ? '-off' : ''),\n\t\t\t\t\t\t'data-bx-resbook-slot': slot.time.toString(),\n\t\t\t\t\t\tclassName: 'calendar-resbook-webform-block-col-item'\n\t\t\t\t\t\t\t+ (slot.selected ? ' calendar-resbook-webform-block-col-item-select' : '')\n\t\t\t\t\t\t\t+ (slot.booked ? ' calendar-resbook-webform-block-col-item-off' : '')\n\t\t\t\t\t},\n\t\t\t\t\thtml: '<div class=\"calendar-resbook-webform-block-col-item-inner\">' + '<span class=\"calendar-resbook-webform-block-col-time\">' + slot.fromTime + '</span>' + (this.showFinishTime ? '- <span class=\"calendar-resbook-webform-block-col-time calendar-resbook-webform-block-col-time-end\">' + slot.toTime + '</span>' : ''\n\t\t\t\t\t) + '</div>'\n\t\t\t\t}));\n\t\t\t\titemNumber++;\n\t\t\t}\n\n\t\t\tparts[slot.partOfTheDay].itemsAmount = itemNumber;\n\t\t}, this);\n\n\t\tlet k;\n\t\tfor (k in parts)\n\t\t{\n\t\t\tif (parts.hasOwnProperty(k) && parts[k].itemsAmount > 0)\n\t\t\t{\n\t\t\t\tthis.DOM.controlInnerWrap.appendChild(parts[k].wrap);\n\t\t\t}\n\t\t}\n\n\t\tthis.initCustomScrollForSlots();\n\t}\n\n\tcreateSelectControl()\n\t{\n\t\tif (this.DOM.controlWrap)\n\t\t{\n\t\t\tDom.remove(this.DOM.controlWrap);\n\t\t}\n\n\t\tthis.DOM.controlWrap = this.DOM.innerWrap.appendChild(Dom.create(\"div\", {\n\t\t\tprops: {className: 'calendar-resbook-webform-block-field'},\n\t\t\tevents: {click: this.handleClick.bind(this)}\n\t\t}));\n\n\t\tthis.DOM.timeSelectWrap = this.DOM.controlWrap.appendChild(Dom.create(\"div\", {\n\t\t\tprops: {className: 'calendar-resbook-webform-block-strip'}\n\t\t}));\n\t\tthis.DOM.valueInput = this.DOM.timeSelectWrap.appendChild(Dom.create(\"input\", {\n\t\t\tattrs: {\n\t\t\t\ttype: 'hidden',\n\t\t\t\tvalue: ''\n\t\t\t}\n\t\t}));\n\n\t\tthis.DOM.previousArrow = this.DOM.timeSelectWrap.appendChild(Dom.create(\"span\", {\n\t\t\tattrs: {\n\t\t\t\tclassName: 'calendar-resbook-webform-block-strip-arrow calendar-resbook-webform-block-strip-arrow-prev',\n\t\t\t\t'data-bx-resbook-time-meta': 'previous'\n\t\t\t}\n\t\t}));\n\n\t\tthis.DOM.stateWrap = this.DOM.timeSelectWrap.appendChild(Dom.create(\"span\", {\n\t\t\tattrs: {\n\t\t\t\tclassName: 'calendar-resbook-webform-block-strip-text',\n\t\t\t\t'data-bx-resbook-time-meta': 'select'\n\t\t\t}\n\t\t}));\n\t\tthis.DOM.stateWrap = this.DOM.stateWrap.appendChild(Dom.create(\"span\", {props: {className: 'calendar-resbook-webform-block-strip-date'}}));\n\n\t\tthis.DOM.nextArrow = this.DOM.timeSelectWrap.appendChild(Dom.create(\"span\", {\n\t\t\tattrs: {\n\t\t\t\tclassName: 'calendar-resbook-webform-block-strip-arrow calendar-resbook-webform-block-strip-arrow-next',\n\t\t\t\t'data-bx-resbook-time-meta': 'next'\n\t\t\t}\n\t\t}));\n\n\t\tthis.setValue(this.getValue());\n\t}\n\n\tsetValue(value)\n\t{\n\t\tlet slot = this.getSlotByTime(value);\n\t\tif (slot)\n\t\t{\n\t\t\tif (this.style === 'select' && Type.isDomNode(this.DOM.stateWrap))\n\t\t\t{\n\t\t\t\tDom.adjust(this.DOM.stateWrap, {text: this.getTimeTextBySlot(slot)});\n\t\t\t}\n\t\t\telse if (this.style === 'slots')\n\t\t\t{\n\t\t\t\tthis.setSelected(this.getSlotNode(slot.time));\n\t\t\t}\n\t\t\tthis.value = slot.time;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.value = null;\n\t\t}\n\n\t\tif (!this.previewMode && Type.isFunction(this.changeValueCallback))\n\t\t{\n\t\t\tthis.changeValueCallback(this.value);\n\t\t}\n\t}\n\n\tgetValue()\n\t{\n\t\tif (!this.value && (this.previewMode || this.style === 'select'))\n\t\t{\n\t\t\tthis.value = this.slots[0].time;\n\t\t}\n\t\treturn this.value;\n\t}\n\n\thasAvailableSlots()\n\t{\n\t\treturn !this.noSlotsAvailable;\n\t}\n\n\tgetTimeTextBySlot(slot)\n\t{\n\t\treturn slot.fromTime + (this.showFinishTime ? ' - ' + slot.toTime : '');\n\t}\n\n\tgetSlotByTime(time)\n\t{\n\t\treturn Type.isArray(this.slots) ? this.slots.find(function(slot){return parseInt(slot.time) === parseInt(time);}) : null;\n\t}\n\n\thandleClick(e)\n\t{\n\t\tlet target = e.target || e.srcElement;\n\t\tif (target.hasAttribute('data-bx-resbook-time-meta') ||\n\t\t\t(target = target.closest('[data-bx-resbook-time-meta]')))\n\t\t{\n\t\t\tlet meta = target.getAttribute('data-bx-resbook-time-meta');\n\t\t\tif (this.style === 'select')\n\t\t\t{\n\t\t\t\tif (meta === 'previous')\n\t\t\t\t{\n\t\t\t\t\tthis.setValue(this.getValue() - this.scale);\n\t\t\t\t}\n\t\t\t\telse if (meta === 'next')\n\t\t\t\t{\n\t\t\t\t\tthis.setValue(this.getValue() + this.scale);\n\t\t\t\t}\n\t\t\t\telse if (meta === 'select')\n\t\t\t\t{\n\t\t\t\t\tthis.openSelectPopup();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (meta === 'slot')\n\t\t\t{\n\t\t\t\tthis.setValue(parseInt(target.getAttribute('data-bx-resbook-slot')));\n\t\t\t}\n\t\t}\n\t}\n\n\tgetSlotsInfo()\n\t{\n\t\tlet\n\t\t\tslots = [], slot,\n\t\t\tfreeSlotsCount = 0,\n\t\t\tfinishTime, hourFrom, minFrom,\n\t\t\thourTo, minTo,\n\t\t\tpart = 'morning',\n\t\t\tnum = 0,\n\t\t\ttime = this.timeFrom * 60;\n\n\t\twhile (time < this.timeTo * 60)\n\t\t{\n\t\t\tif (time >= this.timeEvening * 60)\n\t\t\t{\n\t\t\t\tpart = 'evening';\n\t\t\t}\n\t\t\telse if (time >= this.timeMidday * 60)\n\t\t\t{\n\t\t\t\tpart = 'afternoon';\n\t\t\t}\n\n\t\t\thourFrom = Math.floor(time / 60);\n\t\t\tminFrom = (time) - hourFrom * 60;\n\t\t\tfinishTime = time + this.scale;\n\t\t\thourTo = Math.floor(finishTime / 60);\n\t\t\tminTo = (finishTime) - hourTo * 60;\n\n\t\t\tslot = {\n\t\t\t\ttime: time,\n\t\t\t\tfromTime: BookingUtil.formatTime(hourFrom, minFrom),\n\t\t\t\ttoTime: BookingUtil.formatTime(hourTo, minTo),\n\t\t\t\tpartOfTheDay: part\n\t\t\t};\n\n\t\t\tif (this.previewMode)\n\t\t\t{\n\t\t\t\tif (!num)\n\t\t\t\t{\n\t\t\t\t\tslot.selected = true;\n\t\t\t\t}\n\t\t\t\telse if (Math.round(Math.random() * 10) <= 3)\n\t\t\t\t{\n\t\t\t\t\tslot.booked = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if(this.availableSlotIndex)\n\t\t\t{\n\t\t\t\tslot.booked = !this.availableSlotIndex[time];\n\t\t\t}\n\n\t\t\tif (!slot.booked)\n\t\t\t{\n\t\t\t\tfreeSlotsCount++;\n\t\t\t}\n\n\t\t\tslots.push(slot);\n\t\t\ttime += this.scale;\n\t\t\tnum++;\n\t\t}\n\n\t\treturn {\n\t\t\tslots: slots,\n\t\t\tfreeSlotsCount: freeSlotsCount\n\t\t};\n\t}\n\n\tinitCustomScrollForSlots()\n\t{\n\t\tlet arrowWrap = this.DOM.controlWrap.appendChild(Tag.render`<div class=\"calendar-resbook-webform-block-arrow-container\" />`);\n\n\t\t\tthis.DOM.leftArrow = arrowWrap.appendChild(Dom.create(\"span\",\n\t\t\t{\n\t\t\t\tprops : {className : 'calendar-resbook-webform-block-arrow calendar-resbook-webform-block-arrow-prev'},\n\t\t\t\tevents: {click: this.handlePreletrowClick.bind(this)}\n\t\t\t}));\n\t\tthis.DOM.rightArrow = arrowWrap.appendChild(Dom.create(\"span\",\n\t\t\t{\n\t\t\t\tprops : { className : 'calendar-resbook-webform-block-arrow calendar-resbook-webform-block-arrow-next'},\n\t\t\t\tevents: {click: this.handleNextArrowClick.bind(this)}\n\t\t\t}));\n\n\t\tthis.outerWidth = parseInt(this.DOM.controlStaticWrap.offsetWidth);\n\t\tthis.innerWidth = parseInt(this.DOM.controlInnerWrap.offsetWidth);\n\n\t\tif ('onwheel' in document)\n\t\t\tEvent.bind(this.DOM.controlStaticWrap, \"wheel\", this.mousewheelScrollHandler.bind(this));\n\t\telse\n\t\t\tEvent.bind(this.DOM.controlStaticWrap, \"mousewheel\", this.mousewheelScrollHandler.bind(this));\n\n\t\tthis.checkSlotsScroll();\n\t}\n\n\thandleNextArrowClick()\n\t{\n\t\tthis.DOM.controlStaticWrap.scrollLeft = this.DOM.controlStaticWrap.scrollLeft + 100;\n\t\tthis.checkSlotsScroll();\n\t}\n\n\thandlePreletrowClick()\n\t{\n\t\tthis.DOM.controlStaticWrap.scrollLeft = Math.max(this.DOM.controlStaticWrap.scrollLeft - 100, 0);\n\t\tthis.checkSlotsScroll();\n\t}\n\n\tmousewheelScrollHandler(e)\n\t{\n\t\te = e || window.event;\n\t\tlet delta = e.deltaY || e.detail || e.wheelDelta;\n\t\tif (Math.abs(delta) > 0)\n\t\t{\n\t\t\tif (!Browser.isMac())\n\t\t\t{\n\t\t\t\tdelta = delta * 5;\n\t\t\t}\n\t\t\tthis.DOM.controlStaticWrap.scrollLeft = Math.max(this.DOM.controlStaticWrap.scrollLeft + delta, 0);\n\t\t\tthis.checkSlotsScroll();\n\t\t\tif(e.stopPropagation)\n\t\t\t{\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tcheckSlotsScroll()\n\t{\n\t\tif (this.outerWidth <= this.innerWidth)\n\t\t{\n\t\t\tthis.DOM.leftArrow.style.display = this.DOM.controlStaticWrap.scrollLeft ? '' : 'none';\n\t\t\tif (this.innerWidth - this.outerWidth - 4 <= this.DOM.controlStaticWrap.scrollLeft)\n\t\t\t{\n\t\t\t\tthis.DOM.rightArrow.style.display = 'none';\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.DOM.rightArrow.style.display = '';\n\t\t\t}\n\t\t}\n\t}\n\n\topenSelectPopup()\n\t{\n\t\tif (this.isSelectPopupShown())\n\t\t{\n\t\t\treturn this.closeSelectPopup();\n\t\t}\n\n\t\tthis.popup = MenuManager.create(\n\t\t\tthis.popupSelectId,\n\t\t\tthis.DOM.stateWrap,\n\t\t\tthis.getTimeSelectItems(),\n\t\t\t{\n\t\t\t\tclassName: \"calendar-resbook-time-select-popup\"\t,\n\t\t\t\tangle: true,\n\t\t\t\tcloseByEsc : true,\n\t\t\t\tautoHide : true,\n\t\t\t\toffsetTop: 5,\n\t\t\t\toffsetLeft: 10,\n\t\t\t\tcacheable: false\n\t\t\t}\n\t\t);\n\n\t\tthis.popup.show(true);\n\t}\n\n\tcloseSelectPopup()\n\t{\n\t\tif (this.isSelectPopupShown())\n\t\t{\n\t\t\tthis.popup.close();\n\t\t\tEvent.unbind(document, 'click', this.handleClick.bind(this));\n\t\t}\n\t}\n\n\tisSelectPopupShown()\n\t{\n\t\treturn this.popup && this.popup.popupWindow &&\n\t\t\tthis.popup.popupWindow.isShown && this.popup.popupWindow.isShown();\n\t}\n\n\tgetTimeSelectItems()\n\t{\n\t\tlet menuItems = [];\n\t\tthis.slots.forEach(function(slot)\n\t\t{\n\t\t\tif (this.showOnlyFree && slot.booked)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet className = 'menu-popup-no-icon';\n\t\t\tif (slot.booked)\n\t\t\t{\n\t\t\t\tclassName += ' menu-item-booked';\n\t\t\t}\n\t\t\tif (slot.selected)\n\t\t\t{\n\t\t\t\tclassName += ' menu-item-selected';\n\t\t\t}\n\n\t\t\tmenuItems.push(\n\t\t\t\t{\n\t\t\t\t\tclassName: className,\n\t\t\t\t\ttext: this.getTimeTextBySlot(slot),\n\t\t\t\t\tdataset: {\n\t\t\t\t\t\tvalue: slot.time,\n\t\t\t\t\t\tbooked: !!slot.booked\n\t\t\t\t\t},\n\t\t\t\t\tonclick: this.menuItemClick.bind(this)\n\t\t\t\t}\n\t\t\t);\n\t\t}, this);\n\t\treturn menuItems;\n\t}\n\n\tmenuItemClick(e, menuItem)\n\t{\n\t\tif (menuItem && menuItem.dataset && menuItem.dataset.value)\n\t\t{\n\t\t\tif (!menuItem.dataset.booked)\n\t\t\t{\n\t\t\t\tthis.setValue(menuItem.dataset.value);\n\t\t\t}\n\t\t}\n\t\tthis.closeSelectPopup();\n\t}\n\n\tgetSlotNode(time)\n\t{\n\t\tlet i, slotNodes = this.DOM.controlInnerWrap.querySelectorAll('.calendar-resbook-webform-block-col-item');\n\t\tfor (i = 0; i < slotNodes.length; i++)\n\t\t{\n\t\t\tif (parseInt(slotNodes[i].getAttribute('data-bx-resbook-slot')) === parseInt(time))\n\t\t\t{\n\t\t\t\treturn slotNodes[i];\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tsetSelected(slotNode)\n\t{\n\t\tif (Type.isDomNode(slotNode))\n\t\t{\n\t\t\tif (this.currentSelected)\n\t\t\t{\n\t\t\t\tDom.removeClass(this.currentSelected, 'calendar-resbook-webform-block-col-item-select');\n\t\t\t}\n\t\t\tthis.currentSelected = slotNode;\n\t\t\tDom.addClass(slotNode, 'calendar-resbook-webform-block-col-item-select');\n\t\t}\n\t}\n}\n\n","import {Loc, Dom, Tag, BookingUtil} from \"../resourcebooking\";\n\nexport class StatusInformer\n{\n\tconstructor(params)\n\t{\n\t\tthis.DOM = {\n\t\t\touterWrap: params.outerWrap\n\t\t};\n\t\tthis.timezone = params.timezone;\n\t\tthis.timezoneOffsetLabel = params.timezoneOffsetLabel;\n\t\tthis.shown = false;\n\t\tthis.built = false;\n\t}\n\n\tisShown()\n\t{\n\t\treturn this.shown;\n\t}\n\n\tbuild()\n\t{\n\t\tthis.DOM.wrap = this.DOM.outerWrap.appendChild(Tag.render`<div class=\"calendar-resbook-webform-block-result\" style=\"display: none\" \n></div>`);\n\t\tthis.DOM.innerWrap = this.DOM.wrap.appendChild(Tag.render`<div class=\"calendar-resbook-webform-block-result-inner\"></div>`);\n\t\tthis.DOM.labelWrap = this.DOM.innerWrap.appendChild(Dom.create(\"span\", {props : { className : 'calendar-resbook-webform-block-result-text'}, text: Loc.getMessage('WEBF_RES_BOOKING_STATUS_LABEL')}));\n\t\tthis.DOM.statusWrap = this.DOM.innerWrap.appendChild(Tag.render`<div class=\"calendar-resbook-webform-block-result-value\"></div>`);\n\t\tthis.DOM.statusTimezone = this.DOM.innerWrap.appendChild(Dom.create(\"span\", {props: {className: 'calendar-resbook-webform-block-result-timezone'}, text: this.timezoneOffsetLabel || '', style: {display: 'none'}}));\n\t\tthis.built = true;\n\t}\n\n\trefresh(params)\n\t{\n\t\tif (!this.built)\n\t\t{\n\t\t\tthis.build();\n\t\t}\n\n\t\tif (!this.isShown())\n\t\t{\n\t\t\tthis.show();\n\t\t}\n\n\t\tif (params.dateFrom)\n\t\t{\n\t\t\tthis.DOM.labelWrap.style.display = '';\n\t\t\tDom.removeClass(this.DOM.wrap, 'calendar-resbook-webform-block-result-error');\n\t\t\tif (this.timezone)\n\t\t\t{\n\t\t\t\tthis.DOM.statusTimezone.style.display = '';\n\t\t\t}\n\t\t\tDom.adjust(this.DOM.statusWrap, {text: this.getStatusText(params)});\n\t\t}\n\t\telse if (!params.dateFrom && params.fullDay)\n\t\t{\n\t\t\tthis.DOM.labelWrap.style.display = 'none';\n\t\t\tthis.DOM.statusTimezone.style.display = 'none';\n\t\t\tDom.addClass(this.DOM.wrap, 'calendar-resbook-webform-block-result-error');\n\t\t\tDom.adjust(this.DOM.statusWrap, {text: Loc.getMessage('WEBF_RES_BOOKING_STATUS_DATE_IS_NOT_AVAILABLE')});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.DOM.labelWrap.style.display = 'none';\n\t\t\tthis.DOM.statusTimezone.style.display = 'none';\n\t\t\tDom.removeClass(this.DOM.wrap, 'calendar-resbook-webform-block-result-error');\n\t\t\tDom.adjust(this.DOM.statusWrap, {text: Loc.getMessage('WEBF_RES_BOOKING_STATUS_NO_TIME_SELECTED')});\n\t\t}\n\t}\n\n\tgetStatusText(params)\n\t{\n\t\tlet\n\t\t\tdateFrom = params.dateFrom,\n\t\t\tdateTo = new Date(dateFrom.getTime() + params.duration * 60 * 1000 + (params.fullDay ? -1 : 0)),\n\t\t\ttext = '';\n\n\t\tif (params.fullDay)\n\t\t{\n\t\t\tif (BookingUtil.formatDate('Y-m-d', dateFrom.getTime() / 1000) === BookingUtil.formatDate('Y-m-d', dateTo.getTime() / 1000))\n\t\t\t{\n\t\t\t\ttext = BookingUtil.formatDate(Loc.getMessage('WEBF_RES_DATE_FORMAT_STATUS'), dateFrom);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\ttext = Loc.getMessage('WEBF_RES_DATE_FORMAT_FROM_TO')\n\t\t\t\t\t.replace('#DATE_FROM#', BookingUtil.formatDate(Loc.getMessage('WEBF_RES_DATE_FORMAT_STATUS_SHORT'), dateFrom))\n\t\t\t\t\t.replace('#DATE_TO#', BookingUtil.formatDate(Loc.getMessage('WEBF_RES_DATE_FORMAT_STATUS_SHORT'), dateTo));\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (BookingUtil.formatDate('Y-m-d', dateFrom.getTime() / 1000) === BookingUtil.formatDate('Y-m-d', dateTo.getTime() / 1000))\n\t\t\t{\n\t\t\t\ttext = BookingUtil.formatDate(Loc.getMessage('WEBF_RES_DATE_FORMAT_STATUS'), dateFrom)\n\t\t\t\t\t+ ' '\n\t\t\t\t\t+ Loc.getMessage('WEBF_RES_TIME_FORMAT_FROM_TO')\n\t\t\t\t\t\t.replace('#TIME_FROM#', BookingUtil.formatTime(dateFrom.getHours(), dateFrom.getMinutes()))\n\t\t\t\t\t\t.replace('#TIME_TO#', BookingUtil.formatTime(dateTo.getHours(), dateTo.getMinutes()));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\ttext = Loc.getMessage('WEBF_RES_DATE_FORMAT_FROM_TO')\n\t\t\t\t\t.replace('#DATE_FROM#', BookingUtil.formatDate(Loc.getMessage('WEBF_RES_DATE_FORMAT_STATUS_SHORT'), dateFrom) + ' '+ BookingUtil.formatTime(dateFrom.getHours(), dateFrom.getMinutes()))\n\t\t\t\t\t.replace('#DATE_TO#', BookingUtil.formatDate(Loc.getMessage('WEBF_RES_DATE_FORMAT_STATUS_SHORT'), dateTo) + ' '+ BookingUtil.formatTime(dateTo.getHours(), dateTo.getMinutes()));\n\t\t\t}\n\t\t}\n\n\t\treturn text;\n\t}\n\n\thide()\n\t{\n\t\tif (this.built && this.shown)\n\t\t{\n\t\t\tthis.DOM.wrap.style.display = 'none';\n\t\t\tthis.shown = false;\n\t\t}\n\t}\n\n\tshow()\n\t{\n\t\tif (this.built && !this.shown)\n\t\t{\n\t\t\tthis.DOM.wrap.style.display = '';\n\t\t\tthis.shown = true;\n\t\t}\n\t}\n\n\tsetError(message)\n\t{\n\t\tif (this.DOM.labelWrap)\n\t\t{\n\t\t\tthis.DOM.labelWrap.style.display = 'none';\n\t\t}\n\t\tDom.addClass(this.DOM.wrap, 'calendar-resbook-webform-block-result-error');\n\t\tDom.adjust(this.DOM.statusWrap, {text: message});\n\t}\n\n\tisErrorSet()\n\t{\n\t\treturn this.shown && Dom.hasClass(this.DOM.wrap, 'calendar-resbook-webform-block-result-error');\n\t}\n}","import {Type, Loc, Dom, Tag, Text, BookingUtil} from \"./resourcebooking\";\nimport {EventEmitter, BaseEvent} from 'main.core.events';\nimport {UserSelector} from \"./controls/userselector\";\nimport {ResourceSelector} from \"./controls/resourceselector\";\nimport {ServiceSelector} from \"./controls/serviceselector\";\nimport {DurationSelector} from \"./controls/durationselector\";\nimport {DateSelector} from \"./controls/dateselector\";\nimport {TimeSelector} from \"./controls/timeselector\";\nimport {StatusInformer} from \"./controls/statusinformer\";\n\nexport class LiveFieldController extends EventEmitter\n{\n\tconstructor(params)\n\t{\n\t\tsuper(params);\n\t\tthis.setEventNamespace('BX.Calendar.LiveFieldController');\n\t\tthis.params = params;\n\t\tthis.actionAgent = params.actionAgent || BX.ajax.runAction;\n\t\tthis.timeFrom = params.timeFrom || 7;\n\t\tthis.timeTo = params.timeTo || 20;\n\t\tthis.inputName = params.field.name + '[]';\n\t\tthis.DATE_FORMAT = BookingUtil.getDateFormat();\n\t\tthis.DATETIME_FORMAT = BookingUtil.getDateTimeFormat();\n\t\tthis.userIndex = null;\n\t\tthis.timezoneOffset = null;\n\t\tthis.timezoneOffsetLabel = null;\n\t\tthis.userFieldParams = null;\n\t\tthis.loadedDates = [];\n\n\t\tthis.externalSiteContext = Type.isFunction(params.actionAgent);\n\n\t\tthis.accessibility = {\n\t\t\tuser : {},\n\t\t\tresource: {}\n\t\t};\n\t\tthis.busySlotMatrix = {\n\t\t\tuser : {},\n\t\t\tresource: {}\n\t\t};\n\n\t\tthis.DOM = {\n\t\t\twrap: this.params.wrap,\n\t\t\tvalueInputs: []\n\t\t};\n\t}\n\n\tinit()\n\t{\n\t\tconst settingsData = this.getSettingsData();\n\t\tif (!settingsData.users || !settingsData.resources)\n\t\t{\n\t\t\tthrow new Error('Can\\'t init resourcebooking field, because \\'settings_data\\' parameter is not provided or has incorrect structure');\n\t\t\treturn;\n\t\t}\n\t\tthis.scale = parseInt(settingsData.time && settingsData.time.scale ? settingsData.time.scale : 60, 10);\n\n\t\tthis.DOM.outerWrap = this.DOM.wrap.appendChild(Tag.render`<div class=\"calendar-resbook-webform-wrapper\"></div>`);\n\n\t\tthis.showMainLoader();\n\t\tthis.requireFormData().then(()=>{\n\t\t\tthis.hideMainLoader();\n\t\t\tthis.buildFormControls();\n\t\t\tthis.onChangeValues();\n\t\t});\n\t}\n\n\tcheck()\n\t{\n\t\tlet result = true;\n\n\t\tif (this.usersDisplayed() && !this.getSelectedUser())\n\t\t{\n\t\t\tthis.userControl.showWarning();\n\t\t\tresult = false;\n\t\t}\n\n\t\tif (result && this.resourcesDisplayed() && !this.getSelectedResources())\n\t\t{\n\t\t\tthis.resourceControl.showWarning();\n\t\t\tresult = false;\n\t\t}\n\n\t\tif (result && !this.getCurrentDuration())\n\t\t{\n\t\t\tif (this.durationControl)\n\t\t\t{\n\t\t\t\tthis.durationControl.showWarning();\n\t\t\t}\n\t\t\telse if (this.serviceControl)\n\t\t\t{\n\t\t\t\tthis.serviceControl.showWarning();\n\t\t\t}\n\t\t\tresult = false;\n\t\t}\n\n\t\tif (result\n\t\t\t&& (\n\t\t\t\t!this.dateControl.getValue()\n\t\t\t\t|| this.statusControl.isErrorSet()\n\t\t\t)\n\t\t)\n\t\t{\n\t\t\tthis.dateControl.showWarning();\n\t\t\tresult = false;\n\t\t}\n\n\t\tif (result && this.timeSelectorDisplayed() && !this.timeControl.getValue())\n\t\t{\n\t\t\tthis.timeControl.showWarning();\n\t\t\tresult = false;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tbuildFormControls()\n\t{\n\t\tthis.DOM.innerWrap = this.DOM.outerWrap.appendChild(Tag.render`<div class=\"calendar-resbook-webform-inner\"></div>`);\n\t\tthis.DOM.inputsWrap = this.DOM.innerWrap.appendChild(Tag.render`<div></div>`);\n\n\t\tif (!this.getFieldParams())\n\t\t{\n\t\t\tthis.statusControl = new StatusInformer({\n\t\t\t\touterWrap: this.DOM.innerWrap\n\t\t\t});\n\t\t\tthis.statusControl.refresh({});\n\t\t\tthis.statusControl.setError('[UF_NOT_FOUND] ' + Loc.getMessage('WEBF_RES_BOOKING_UF_WARNING'));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (this.externalSiteContext && BX.ZIndexManager)\n\t\t\t{\n\t\t\t\tconst stack = BX.ZIndexManager.getOrAddStack(document.body);\n\t\t\t\tstack.baseIndex = 100000;\n\t\t\t\tstack.sort();\n\t\t\t}\n\n\t\t\tthis.preparaAutoSelectValues();\n\t\t\tthis.displayUsersControl();\n\t\t\tthis.displayResourcesControl();\n\t\t\tthis.displayServicesControl();\n\t\t\tthis.displayDurationControl();\n\t\t\tthis.displayDateTimeControl();\n\n\t\t\tif (this.selectedUserId || this.selectedResourceId)\n\t\t\t{\n\t\t\t\tthis.refreshControlsState();\n\t\t\t}\n\t\t}\n\t}\n\n\trefreshControlsState()\n\t{\n\t\tif (this.selectorCanBeShown('resources')\n\t\t\t&& this.resourceControl\n\t\t\t&& !this.resourceControl.isShown())\n\t\t{\n\t\t\tthis.resourceControl.display();\n\t\t}\n\n\t\t// Show services\n\t\tif (this.selectorCanBeShown('services')\n\t\t\t&& this.serviceControl\n\t\t\t&& !this.serviceControl.isShown())\n\t\t{\n\t\t\tthis.serviceControl.display();\n\t\t}\n\n\t\t// Show duration\n\t\tif (this.selectorCanBeShown('duration')\n\t\t\t&& this.durationControl\n\t\t\t&& !this.durationControl.isShown())\n\t\t{\n\t\t\tthis.durationControl.display();\n\t\t}\n\n\t\tlet settingsData = this.getSettingsData();\n\t\t// Show date & time control\n\t\tif (this.selectorCanBeShown('date') && this.dateControl)\n\t\t{\n\t\t\tif (this.dateControl.isShown())\n\t\t\t{\n\t\t\t\tthis.dateControl.refresh(\n\t\t\t\t\tsettingsData.date,\n\t\t\t\t\t{\n\t\t\t\t\t\tavailableDateIndex: this.getAvailableDateIndex({\n\t\t\t\t\t\t\tresources: this.getSelectedResources(),\n\t\t\t\t\t\t\tuser: this.getSelectedUser(),\n\t\t\t\t\t\t\tduration: this.getCurrentDuration()\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tif (this.timeControl)\n\t\t\t\t{\n\t\t\t\t\tthis.timeControl.refresh(\n\t\t\t\t\t\tsettingsData.time,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tslotIndex: this.getSlotIndex({date: this.dateControl.getValue()}),\n\t\t\t\t\t\t\tcurrentDate: this.dateControl.getValue()\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tlet startValue;\n\t\t\t\tif (settingsData.date.start === 'free')\n\t\t\t\t{\n\t\t\t\t\tstartValue = this.getFreeDate({\n\t\t\t\t\t\tresources: this.getSelectedResources(),\n\t\t\t\t\t\tuser: this.getSelectedUser(),\n\t\t\t\t\t\tduration: this.getCurrentDuration()\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tstartValue = new Date();\n\t\t\t\t}\n\n\t\t\t\tthis.dateControl.display({\n\t\t\t\t\tselectedValue: startValue,\n\t\t\t\t\tavailableDateIndex: this.getAvailableDateIndex({\n\t\t\t\t\t\tresources: this.getSelectedResources(),\n\t\t\t\t\t\tuser: this.getSelectedUser(),\n\t\t\t\t\t\tduration: this.getCurrentDuration()\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tthis.updateStatusControl();\n\t\tthis.onChangeValues();\n\t\tBookingUtil.fireCustomEvent(window, 'crmWebFormFireResize');\n\t}\n\n\tonChangeValues()\n\t{\n\t\tlet\n\t\t\tallValuesValue = [],\n\t\t\tdateFromValue = '',\n\t\t\tdateFrom = this.getCurrentDate(),\n\t\t\tduration = this.getCurrentDuration() * 60,// Duration in minutes\n\t\t\tserviceName = this.getCurrentServiceName(),\n\t\t\tentries = [];\n\n\t\t// Clear inputs\n\t\tDom.clean(this.DOM.inputsWrap);\n\n\t\tthis.DOM.valueInputs = [];\n\n\t\tif (Type.isDate(dateFrom) && !this.statusControl.isErrorSet())\n\t\t{\n\t\t\tlet resources = this.getSelectedResources();\n\t\t\tif (Type.isArray(resources))\n\t\t\t{\n\t\t\t\tresources.forEach(function(resourceId)\n\t\t\t\t{\n\t\t\t\t\tentries = entries.concat({type: 'resource', id: resourceId});\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tlet selectedUser = this.getSelectedUser();\n\t\t\tif (selectedUser)\n\t\t\t{\n\t\t\t\tentries = entries.concat({type: 'user', id: selectedUser});\n\t\t\t}\n\n\t\t\tdateFromValue = BookingUtil.formatDate(this.DATETIME_FORMAT, dateFrom.getTime() / 1000);\n\n\t\t\tentries.forEach(function(entry)\n\t\t\t{\n\t\t\t\tlet value = entry.type + '|' + entry.id + '|' + dateFromValue + '|' + duration + '|' + serviceName;\n\t\t\t\tallValuesValue.push(value);\n\n\t\t\t\tthis.DOM.valueInputs.push(this.DOM.inputsWrap.appendChild(\n\t\t\t\t\tTag.render`\n\t\t\t\t\t<input \n\t\t\t\t\t\tname=\"${Text.encode(this.inputName)}\"\n\t\t\t\t\t\tvalue=\"${Text.encode(value)}\" \n\t\t\t\t\t\ttype=\"hidden\"\n\t\t\t\t\t\t>\n\t\t\t\t\t`\n\t\t\t\t));\n\t\t\t}, this);\n\t\t}\n\n\t\tif (!entries.length)\n\t\t{\n\t\t\tallValuesValue.push('empty');\n\t\t\tthis.DOM.valueInputs.push(this.DOM.inputsWrap.appendChild(\n\t\t\t\tTag.render`\n\t\t\t\t\t<input \n\t\t\t\t\t\tname=\"${Text.encode(this.inputName)}\"\n\t\t\t\t\t\tvalue=\"empty\" \n\t\t\t\t\t\ttype=\"hidden\"\n\t\t\t\t\t\t>\n\t\t\t\t\t`\n\t\t\t));\n\t\t}\n\n\t\tthis.emit('change', allValuesValue);\n\t}\n\n\tshowMainLoader()\n\t{\n\t\tif (this.DOM.wrap)\n\t\t{\n\t\t\tthis.hideMainLoader();\n\t\t\tlet loaderWrap = Tag.render`<div class=\"calendar-resbook-webform-wrapper-loader-wrap\"></div>`;\n\t\t\tloaderWrap.appendChild(BookingUtil.getLoader(160));\n\t\t\tthis.DOM.mainLoader = this.DOM.outerWrap.appendChild(loaderWrap);\n\t\t}\n\t}\n\n\thideMainLoader()\n\t{\n\t\tDom.remove(this.DOM.mainLoader);\n\t}\n\n\tshowStatusLoader()\n\t{\n\t\tthis.showMainLoader();\n\t}\n\n\thideStatusLoader()\n\t{\n\t\tthis.hideMainLoader();\n\t}\n\n\trequestAccessibilityData(params)\n\t{\n\t\tif (!this.requestedFormData)\n\t\t{\n\t\t\tthis.showStatusLoader();\n\n\t\t\tthis.requestedFormData = true;\n\t\t\tlet formDataParams = {\n\t\t\t\tfrom: params.date\n\t\t\t};\n\n\t\t\tthis.requireFormData(formDataParams).then(() => {\n\t\t\t\tthis.hideStatusLoader();\n\t\t\t\tthis.refreshControlsState();\n\t\t\t\tthis.dateControl.refreshCurrentValue();\n\t\t\t\tthis.onChangeValues();\n\t\t\t\tthis.requestedFormData = false;\n\t\t\t});\n\t\t}\n\t}\n\n\trequireFormData(params)\n\t{\n\t\tparams = Type.isPlainObject(params) ? params : {};\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet\n\t\t\t\tdata = {\n\t\t\t\t\tsettingsData: this.getSettingsData() || null\n\t\t\t\t};\n\n\t\t\tif (!this.userFieldParams)\n\t\t\t{\n\t\t\t\tdata.fieldName = this.params.field.entity_field_name;\n\t\t\t}\n\n\t\t\tlet\n\t\t\t\tdateFrom = Type.isDate(params.from) ? params.from : new Date(),\n\t\t\t\tdateTo;\n\n\t\t\tif (Type.isDate(params.to))\n\t\t\t{\n\t\t\t\tdateTo = params.to;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tdateTo = new Date(dateFrom.getTime());\n\t\t\t\tdateTo.setDate(dateFrom.getDate() + 60);\n\t\t\t}\n\n\t\t\tdata.from = BookingUtil.formatDate(this.DATE_FORMAT, dateFrom);\n\t\t\tdata.to = BookingUtil.formatDate(this.DATE_FORMAT, dateTo);\n\n\t\t\tthis.setLoadedDataLimits(dateFrom, dateTo);\n\n\t\t\tthis.actionAgent('calendar.api.resourcebookingajax.getfillformdata', {\n\t\t\t\tdata: data\n\t\t\t}).then((response) => {\n\t\t\t\t\tif (!Type.isPlainObject(response) || !response.data)\n\t\t\t\t\t{\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif (Type.isNumber(response.data.timezoneOffset))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.timezoneOffset = response.data.timezoneOffset;\n\t\t\t\t\t\t\tthis.timezoneOffsetLabel = response.data.timezoneOffsetLabel;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (response.data.workTimeStart !== undefined && response.data.workTimeEnd !== undefined)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.timeFrom = parseInt(response.data.workTimeStart);\n\t\t\t\t\t\t\tthis.timeTo = parseInt(response.data.workTimeEnd);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (response.data.fieldSettings)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.userFieldParams = response.data.fieldSettings;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (response.data.userIndex)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.userIndex = response.data.userIndex;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.handleAccessibilityData(response.data.usersAccessibility, 'user');\n\t\t\t\t\t\tthis.handleAccessibilityData(response.data.resourcesAccessibility, 'resource');\n\n\t\t\t\t\t\tresolve(response.data);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t(response) => {\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t});\n\t}\n\n\tsetLoadedDataLimits(from, to)\n\t{\n\t\tthis.loadedDataFrom = Type.isDate(from) ? from : BookingUtil.parseDate(from);\n\t\tthis.loadedDataTo = Type.isDate(to) ? to : BookingUtil.parseDate(to);\n\n\t\tthis.loadedDates = this.loadedDates || [];\n\t\tthis.loadedDatesIndex = this.loadedDatesIndex || {};\n\n\t\tlet\n\t\t\tdateKey,\n\t\t\tdate = new Date(this.loadedDataFrom.getTime());\n\n\t\twhile (true)\n\t\t{\n\t\t\tdateKey = BookingUtil.formatDate(this.DATE_FORMAT, date);\n\t\t\tthis.loadedDatesIndex[dateKey] = this.loadedDates.length;\n\t\t\tthis.loadedDates.push({\n\t\t\t\tkey: BookingUtil.formatDate(this.DATE_FORMAT, date),\n\t\t\t\tslots: {},\n\t\t\t\tslotsCount: {}\n\t\t\t});\n\t\t\tdate.setDate(date.getDate() + 1);\n\n\t\t\tif (date.getTime() > this.loadedDataTo.getTime())\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tfillDataIndex(date, time, entityType, entityId)\n\t{\n\t\tlet dateIndex = this.loadedDatesIndex[date];\n\t\tif (this.loadedDates[dateIndex])\n\t\t{\n\t\t\tif (!this.loadedDates[dateIndex].slots[time])\n\t\t\t{\n\t\t\t\tthis.loadedDates[dateIndex].slots[time] = {};\n\t\t\t}\n\t\t\tif (this.loadedDates[dateIndex].slotsCount[entityType + entityId] === undefined)\n\t\t\t{\n\t\t\t\tthis.loadedDates[dateIndex].slotsCount[entityType + entityId] = 0;\n\t\t\t}\n\t\t\tthis.loadedDates[dateIndex].slots[time][entityType + entityId] = true;\n\t\t\tthis.loadedDates[dateIndex].slotsCount[entityType + entityId]++;\n\t\t}\n\t}\n\n\thandleAccessibilityData(data, entityType)\n\t{\n\t\tif (Type.isPlainObject(data) && (entityType === 'user' || entityType === 'resource'))\n\t\t{\n\t\t\t// For each entry which has accessibility entries\n\t\t\tfor (let entityId in data)\n\t\t\t{\n\t\t\t\tif (data.hasOwnProperty(entityId))\n\t\t\t\t{\n\t\t\t\t\tdata[entityId].forEach(function(entry)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (!entry.from)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tentry.from = BookingUtil.parseDate(entry.dateFrom);\n\t\t\t\t\t\t\tif (entry.from)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tentry.from.setSeconds(0,0);\n\t\t\t\t\t\t\t\tentry.fromTimestamp = entry.from.getTime();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!entry.to)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tentry.to = BookingUtil.parseDate(entry.dateTo);\n\t\t\t\t\t\t\tif (entry.to)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (entry.fullDay)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tentry.to.setHours(23, 59, 0, 0);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tentry.to.setSeconds(0, 0);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tentry.toTimestamp = entry.to.getTime();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (entry.from && entry.to)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.fillBusySlotMatrix(entry, entityType, entityId);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.accessibility[entityType] = BookingUtil.mergeEx(this.accessibility[entityType], data);\n\t\t}\n\t}\n\n\tfillBusySlotMatrix(entry, entityType, entityId)\n\t{\n\t\tif (!this.busySlotMatrix[entityType][entityId])\n\t\t{\n\t\t\tthis.busySlotMatrix[entityType][entityId] = {};\n\t\t}\n\n\t\tlet\n\t\t\tfromDate = new Date(entry.from.getTime()),\n\t\t\tdateKey = BookingUtil.formatDate(this.DATE_FORMAT, fromDate),\n\t\t\tdateToKey = BookingUtil.formatDate(this.DATE_FORMAT, entry.to),\n\t\t\ttimeValueFrom = fromDate.getHours() * 60 + fromDate.getMinutes(),\n\t\t\tduration = Math.round((entry.toTimestamp - entry.fromTimestamp) / 60000), // in minutes\n\t\t\ttimeValueTo = timeValueFrom + duration,\n\t\t\tslots = this.getTimeSlots(),\n\t\t\tcount = 0,\n\t\t\ti;\n\n\t\tif (duration > 0)\n\t\t{\n\t\t\twhile (true)\n\t\t\t{\n\t\t\t\tif (!this.busySlotMatrix[entityType][entityId][dateKey])\n\t\t\t\t{\n\t\t\t\t\tthis.busySlotMatrix[entityType][entityId][dateKey] = {};\n\t\t\t\t}\n\n\t\t\t\tfor (i = 0; i < slots.length; i++)\n\t\t\t\t{\n\t\t\t\t\tif (timeValueFrom < (slots[i].time + this.scale) && timeValueTo > slots[i].time)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.busySlotMatrix[entityType][entityId][dateKey][slots[i].time] = true;\n\t\t\t\t\t\tthis.fillDataIndex(dateKey, slots[i].time, entityType, entityId);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (dateKey === dateToKey)\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tfromDate.setDate(fromDate.getDate() + 1);\n\t\t\t\t\tdateKey = BookingUtil.formatDate(this.DATE_FORMAT, fromDate);\n\t\t\t\t\ttimeValueFrom = 0;\n\t\t\t\t\tif (dateKey === dateToKey)\n\t\t\t\t\t{\n\t\t\t\t\t\ttimeValueTo = entry.to.getHours() * 60 + entry.to.getMinutes();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\ttimeValueTo = 1440; // end of the day - 24 hours\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcount++;\n\t\t\t\tif (count > 10000) // emergency exit\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tgetCaption()\n\t{\n\t\treturn this.params.field.caption;\n\t}\n\n\tgetSettingsData()\n\t{\n\t\treturn this.params.field.settings_data || {};\n\t}\n\n\tgetUserIndex()\n\t{\n\t\treturn this.userIndex;\n\t}\n\n\tgetFieldParams()\n\t{\n\t\treturn this.userFieldParams;\n\t}\n\n\tgetSettings()\n\t{\n\t\treturn {\n\t\t\tcaption: this.getCaption(),\n\t\t\tdata: this.getSettingsData()\n\t\t};\n\t}\n\n\tisUserSelectorInAutoMode()\n\t{\n\t\treturn this.usersDisplayed() && this.getSettingsData().users.show === \"N\";\n\t}\n\n\tisResourceSelectorInAutoMode()\n\t{\n\t\treturn this.resourcesDisplayed() && this.getSettingsData().resources.show === \"N\";\n\t}\n\n\tautoAdjustUserSelector()\n\t{\n\t\tlet\n\t\t\tcurrentDate = this.dateControl.getValue(),\n\t\t\ttimeValue = this.timeControl.getValue();\n\n\t\tif (Type.isDate(currentDate) && timeValue)\n\t\t{\n\t\t\tlet i, loadedDate = this.loadedDates[this.loadedDatesIndex[BookingUtil.formatDate(this.DATE_FORMAT, currentDate)]];\n\t\t\tif (loadedDate.slots[timeValue])\n\t\t\t{\n\t\t\t\tfor (i = 0; i < this.userControl.values.length; i++)\n\t\t\t\t{\n\t\t\t\t\tif (!loadedDate.slots[timeValue]['user' + this.userControl.values[i]])\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.userControl.setSelectedUser(this.userControl.values[i]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tautoAdjustResourceSelector()\n\t{\n\t\tlet\n\t\t\tcurrentDate = this.dateControl.getValue(),\n\t\t\ttimeValue = this.timeControl.getValue();\n\n\t\tif (Type.isDate(currentDate) && timeValue)\n\t\t{\n\t\t\tlet\n\t\t\t\ti, id,\n\t\t\t\tloadedDate = this.loadedDates[this.loadedDatesIndex[BookingUtil.formatDate(this.DATE_FORMAT, currentDate)]];\n\n\t\t\tif (loadedDate.slots[timeValue])\n\t\t\t{\n\t\t\t\tfor (i = 0; i < this.resourceControl.resourceList.length; i++)\n\t\t\t\t{\n\t\t\t\t\tid = parseInt(this.resourceControl.resourceList[i].id);\n\t\t\t\t\tif (!loadedDate.slots[timeValue]['resource' + id])\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.resourceControl.setSelectedResource(id);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpreparaAutoSelectValues ()\n\t{\n\t\tlet\n\t\t\tsettingsData = this.getSettingsData(),\n\t\t\tautoSelectUser = this.usersDisplayed() && (settingsData.users.defaultMode === 'auto' || settingsData.users.show === \"N\"),\n\t\t\tautoSelectResource = this.resourcesDisplayed() && (settingsData.resources.defaultMode === 'auto' || settingsData.resources.show === \"N\"),\n\t\t\tautoSelectDate = settingsData.date.start === 'free',\n\t\t\tmaxStepsAuto = 60,\n\t\t\tdate, i;\n\n\t\tthis.selectedUserId = false;\n\t\tthis.selectedResourceId = false;\n\n\t\tdate = new Date();\n\t\t// Walk through each date searching for free space\n\t\tfor (i = 0; i <= maxStepsAuto; i++)\n\t\t{\n\t\t\tthis.getFreeEntitiesForDate(date, {\n\t\t\t\tautoSelectUser: autoSelectUser,\n\t\t\t\tautoSelectResource: autoSelectResource,\n\t\t\t\tslotsAmount: this.getDefaultDurationSlotsAmount()\n\t\t\t});\n\n\t\t\tif ((this.selectedUserId || !autoSelectUser)\n\t\t\t\t&&\n\t\t\t\t(this.selectedResourceId || !autoSelectResource))\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (!autoSelectDate)\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdate.setDate(date.getDate() + 1);\n\t\t}\n\t}\n\n\tgetFreeEntitiesForDate(date, params)\n\t{\n\t\tlet\n\t\t\tsettingsData = this.getSettingsData(),\n\t\t\tslotsAmount = params.slotsAmount || 1,\n\t\t\ti, userList, resList;\n\n\t\tif (params.autoSelectUser)\n\t\t{\n\t\t\tuserList = this.getUsersValue();\n\t\t\tfor (i = 0; i < userList.length; i++)\n\t\t\t{\n\t\t\t\tif (this.checkSlotsForDate(date, slotsAmount, {\n\t\t\t\t\tuser: parseInt(userList[i])\n\t\t\t\t}))\n\t\t\t\t{\n\t\t\t\t\tthis.selectedUserId = parseInt(userList[i]);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (params.autoSelectResource)\n\t\t{\n\t\t\tresList = this.getResourceValue();\n\t\t\tfor (i = 0; i < resList.length; i++)\n\t\t\t{\n\t\t\t\tif (this.checkSlotsForDate(date, slotsAmount, {\n\t\t\t\t\tresources: [parseInt(resList[i])],\n\t\t\t\t\tuser: this.selectedUserId || null\n\t\t\t\t}))\n\t\t\t\t{\n\t\t\t\t\tthis.selectedResourceId = parseInt(resList[i]);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tdisplayUsersControl()\n\t{\n\t\tif (this.usersDisplayed())\n\t\t{\n\t\t\tthis.userControl = new UserSelector({\n\t\t\t\touterWrap: this.DOM.innerWrap,\n\t\t\t\tdata: this.getSettingsData().users,\n\t\t\t\tuserIndex: this.getUserIndex(),\n\t\t\t\tpreviewMode: false,\n\t\t\t\tautoSelectDefaultValue: this.selectedUserId,\n\t\t\t\tchangeValueCallback: function(userId)\n\t\t\t\t{\n\t\t\t\t\tthis.emit('BX.Calendar.Resourcebooking.LiveFieldController:userChanged', new BaseEvent({data: {userId: userId}}));\n\t\t\t\t\tthis.refreshControlsState();\n\t\t\t\t}.bind(this)\n\t\t\t});\n\t\t\tthis.userControl.display();\n\t\t}\n\t}\n\n\tdisplayResourcesControl()\n\t{\n\t\tlet\n\t\t\tvalueIndex = {},\n\t\t\tdataValue = [],\n\t\t\tfieldParams = this.getFieldParams(),\n\t\t\tsettingsData = this.getSettingsData();\n\n\t\tif (this.resourcesDisplayed())\n\t\t{\n\t\t\tthis.getResourceValue().forEach(function(id)\n\t\t\t{\n\t\t\t\tid = parseInt(id);\n\t\t\t\tif (id > 0)\n\t\t\t\t{\n\t\t\t\t\tvalueIndex[id] = true;\n\t\t\t\t\tdataValue.push(id);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tlet resourceList = [];\n\t\t\tfieldParams.SELECTED_RESOURCES.forEach(function(res)\n\t\t\t{\n\t\t\t\tres.id = parseInt(res.id);\n\t\t\t\tif (valueIndex[res.id])\n\t\t\t\t{\n\t\t\t\t\tresourceList.push(res);\n\t\t\t\t}\n\t\t\t}, this);\n\n\t\t\tthis.resourceControl = new ResourceSelector({\n\t\t\t\touterWrap: this.DOM.innerWrap,\n\t\t\t\tdata: {\n\t\t\t\t\tshow: settingsData.resources.show,\n\t\t\t\t\tdefaultMode: settingsData.resources.defaultMode,\n\t\t\t\t\tlabel: settingsData.resources.label,\n\t\t\t\t\tmultiple: settingsData.resources.multiple,\n\t\t\t\t\tvalue: settingsData.resources.value\n\t\t\t\t},\n\t\t\t\tresourceList: resourceList,\n\t\t\t\tautoSelectDefaultValue: this.selectedResourceId,\n\t\t\t\tchangeValueCallback: function()\n\t\t\t\t{\n\t\t\t\t\tthis.emit('BX.Calendar.Resourcebooking.LiveFieldController:resourceChanged');\n\t\t\t\t\tthis.refreshControlsState();\n\t\t\t\t}.bind(this)\n\t\t\t});\n\n\t\t\tif (this.selectorCanBeShown('resources'))\n\t\t\t{\n\t\t\t\tthis.resourceControl.display();\n\t\t\t}\n\t\t}\n\t}\n\n\tdisplayServicesControl()\n\t{\n\t\tlet\n\t\t\tfieldParams = this.getFieldParams(),\n\t\t\tsettingsData = this.getSettingsData();\n\n\t\tif (fieldParams.USE_SERVICES === 'Y' && settingsData.services.value)\n\t\t{\n\t\t\tlet dataValueRaw = this.getServicesValue();\n\n\t\t\tthis.serviceControl = new ServiceSelector({\n\t\t\t\touterWrap: this.DOM.innerWrap,\n\t\t\t\tdata: settingsData.services,\n\t\t\t\tserviceList: fieldParams.SERVICE_LIST,\n\t\t\t\tselectedValue: dataValueRaw.length > 0 ? dataValueRaw[0] : null,\n\t\t\t\tchangeValueCallback: function()\n\t\t\t\t{\n\t\t\t\t\tthis.emit('BX.Calendar.Resourcebooking.LiveFieldController:serviceChanged');\n\t\t\t\t\tthis.refreshControlsState();\n\t\t\t\t}.bind(this)\n\t\t\t});\n\n\t\t\tif (this.selectorCanBeShown('services'))\n\t\t\t{\n\t\t\t\tthis.serviceControl.display();\n\t\t\t}\n\t\t}\n\t}\n\n\tdisplayDurationControl()\n\t{\n\t\tlet\n\t\t\tfieldParams = this.getFieldParams(),\n\t\t\tsettingsData = this.getSettingsData();\n\n\t\tif (!this.serviceControl)\n\t\t{\n\t\t\tthis.durationControl = new DurationSelector({\n\t\t\t\touterWrap: this.DOM.innerWrap,\n\t\t\t\tdata: settingsData.duration,\n\t\t\t\tfullDay: fieldParams.FULL_DAY === 'Y',\n\t\t\t\tchangeValueCallback: function()\n\t\t\t\t{\n\t\t\t\t\tthis.emit('BX.Calendar.Resourcebooking.LiveFieldController:durationChanged');\n\t\t\t\t\tthis.refreshControlsState();\n\t\t\t\t}.bind(this)\n\t\t\t});\n\n\t\t\tif (this.selectorCanBeShown('duration'))\n\t\t\t{\n\t\t\t\tthis.durationControl.display();\n\t\t\t}\n\t\t}\n\t}\n\n\tdisplayDateTimeControl()\n\t{\n\t\tlet\n\t\t\ttimezone = false,\n\t\t\tstartValue = null,\n\t\t\tsettingsData = this.getSettingsData(),\n\t\t\tfieldParams = this.getFieldParams();\n\n\t\tthis.dateControl = new DateSelector({\n\t\t\touterWrap: this.DOM.innerWrap,\n\t\t\tdata: settingsData.date,\n\t\t\tpreviewMode: false,\n\t\t\tallowOverbooking: fieldParams.ALLOW_OVERBOOKING === \"Y\",\n\t\t\tchangeValueCallback: this.handleDateChanging.bind(this),\n\t\t\trequestDataCallback: this.requestAccessibilityData.bind(this)\n\t\t});\n\n\t\tif (this.timeSelectorDisplayed())\n\t\t{\n\t\t\tif (fieldParams.USE_USER_TIMEZONE === 'N')\n\t\t\t{\n\t\t\t\tlet userTimezoneOffset = -(new Date).getTimezoneOffset()*60;\n\t\t\t\tif (userTimezoneOffset !== this.timezoneOffset)\n\t\t\t\t{\n\t\t\t\t\ttimezone = fieldParams.TIMEZONE;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.timeControl = new TimeSelector({\n\t\t\t\touterWrap: this.DOM.innerWrap,\n\t\t\t\tdata: settingsData.time,\n\t\t\t\tpreviewMode: false,\n\t\t\t\tchangeValueCallback: this.handleSelectedDateTimeChanging.bind(this),\n\t\t\t\ttimeFrom: this.timeFrom,\n\t\t\t\ttimeTo: this.timeTo,\n\t\t\t\ttimezone: timezone,\n\t\t\t\ttimezoneOffset: this.timezoneOffset,\n\t\t\t\ttimezoneOffsetLabel: this.timezoneOffsetLabel\n\t\t\t});\n\t\t}\n\n\t\tthis.statusControl = new StatusInformer({\n\t\t\touterWrap: this.DOM.innerWrap,\n\t\t\ttimezone: timezone,\n\t\t\ttimezoneOffsetLabel: this.timezoneOffsetLabel\n\t\t});\n\n\t\tif (this.selectorCanBeShown('date'))\n\t\t{\n\t\t\tthis.statusControl.show();\n\t\t\tif (settingsData.date.start === 'free')\n\t\t\t{\n\t\t\t\tstartValue = this.getFreeDate({\n\t\t\t\t\tresources: this.getSelectedResources(),\n\t\t\t\t\tuser: this.getSelectedUser(),\n\t\t\t\t\tduration: this.getCurrentDuration()\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.dateControl.display({\n\t\t\t\tselectedValue: startValue\n\t\t\t});\n\n\t\t\tif (this.timeControl && !this.timeControl.isShown())\n\t\t\t{\n\t\t\t\tthis.timeControl.display();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.statusControl.hide();\n\t\t}\n\t}\n\n\thandleDateChanging(date, realDate)\n\t{\n\t\tthis.emit('BX.Calendar.Resourcebooking.LiveFieldController:dateChanged');\n\n\t\tif (this.timeSelectorDisplayed())\n\t\t{\n\t\t\tif (realDate)\n\t\t\t{\n\t\t\t\tthis.timeControl.show();\n\t\t\t\tlet\n\t\t\t\t\ttimeValueFrom,\n\t\t\t\t\tcurrentDate = this.getCurrentDate();\n\n\t\t\t\tif (currentDate)\n\t\t\t\t{\n\t\t\t\t\ttimeValueFrom = currentDate.getHours() * 60 + currentDate.getMinutes();\n\t\t\t\t}\n\n\t\t\t\tthis.timeControl.refresh(\n\t\t\t\t\tthis.getSettingsData().time,\n\t\t\t\t\t{\n\t\t\t\t\t\tslotIndex: this.getSlotIndex({date: realDate}),\n\t\t\t\t\t\tcurrentDate: realDate,\n\t\t\t\t\t\tselectedValue: timeValueFrom\n\t\t\t\t\t});\n\n\t\t\t\t// this.timeControl.refresh(\n\t\t\t\t// \tthis.getSettingsData().time,\n\t\t\t\t// \t{\n\t\t\t\t// \t\tslotIndex: this.getAvailableSlotIndex({\n\t\t\t\t// \t\t\tdate: realDate,\n\t\t\t\t// \t\t\tresources: this.getSelectedResources(),\n\t\t\t\t// \t\t\tuser: this.getSelectedUser(),\n\t\t\t\t// \t\t\tduration: this.getCurrentDuration()\n\t\t\t\t// \t\t}),\n\t\t\t\t// \t\tcurrentDate: realDate,\n\t\t\t\t// \t\tselectedValue: timeValueFrom\n\t\t\t\t// \t});\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.handleSelectedDateTimeChanging(null, true);\n\t\t}\n\t\tthis.onChangeValues();\n\t}\n\n\thandleSelectedDateTimeChanging(value, useTimeout)\n\t{\n\t\tif (useTimeout !== false)\n\t\t{\n\t\t\tif (this.updateTimeStatusTimeout)\n\t\t\t{\n\t\t\t\tthis.updateTimeStatusTimeout = clearTimeout(this.updateTimeStatusTimeout);\n\t\t\t}\n\t\t\tthis.updateTimeStatusTimeout = setTimeout(function(){\n\t\t\t\tthis.handleSelectedDateTimeChanging(value, false);\n\t\t\t}.bind(this), 100);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (this.isUserSelectorInAutoMode())\n\t\t\t{\n\t\t\t\tthis.autoAdjustUserSelector();\n\t\t\t}\n\t\t\tif (this.isResourceSelectorInAutoMode())\n\t\t\t{\n\t\t\t\tthis.autoAdjustResourceSelector();\n\t\t\t}\n\n\t\t\tthis.updateStatusControl();\n\t\t\tBookingUtil.fireCustomEvent(window, 'crmWebFormFireResize');\n\t\t}\n\t\tthis.onChangeValues();\n\t}\n\n\tupdateStatusControl()\n\t{\n\t\tif (this.statusControl && this.selectorCanBeShown('date'))\n\t\t{\n\t\t\tlet currentDate = this.getCurrentDate();\n\t\t\tif (this.dateControl.isItPastDate(currentDate))\n\t\t\t{\n\t\t\t\tthis.statusControl.setError(Loc.getMessage('WEBF_RES_BOOKING_PAST_DATE_WARNING'));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (this.timeSelectorDisplayed())\n\t\t\t\t{\n\t\t\t\t\tif (this.timeControl.hasAvailableSlots())\n\t\t\t\t\t{\n\t\t\t\t\t\tlet timeValue = this.timeControl.getValue();\n\t\t\t\t\t\tthis.statusControl.refresh({\n\t\t\t\t\t\t\tdateFrom: timeValue ? currentDate : null,\n\t\t\t\t\t\t\tduration: timeValue ? this.getCurrentDuration() : null,\n\t\t\t\t\t\t\tfullDay: false\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.statusControl.hide();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.statusControl.refresh({\n\t\t\t\t\t\tdateFrom: this.dateControl.isDateAvailable(currentDate) ? currentDate : null,\n\t\t\t\t\t\tduration: this.getCurrentDuration(),\n\t\t\t\t\t\tfullDay: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tgetFreeDate(params)\n\t{\n\t\tlet\n\t\t\tslotsAmount = Math.ceil(params.duration / this.scale),\n\t\t\tfreeDate = null,\n\t\t\tdate = this.loadedDataFrom;\n\n\t\t// Walk through each date searching for free space\n\t\twhile (true)\n\t\t{\n\t\t\tif (this.checkSlotsForDate(date, slotsAmount, {\n\t\t\t\tresources: params.resources,\n\t\t\t\tuser: params.user\n\t\t\t}))\n\t\t\t{\n\t\t\t\tfreeDate = date;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tdate.setDate(date.getDate() + 1);\n\t\t\tif (date.getTime() >= this.loadedDataTo.getTime())\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn freeDate;\n\t}\n\n\tgetAvailableDateIndex(params)\n\t{\n\t\tlet\n\t\t\tuserIsFree, resourcesAreFree,\n\t\t\tdateIndex = {};\n\n\t\tif (this.timeSelectorDisplayed())\n\t\t{\n\t\t\tlet slotsAmount = Math.ceil(params.duration / this.scale);\n\n\t\t\tthis.loadedDates.forEach(function(date)\n\t\t\t{\n\t\t\t\tdateIndex[date.key] = this.checkSlotsForDate(date.key, slotsAmount, {\n\t\t\t\t\tresources: params.resources,\n\t\t\t\t\tuser: params.user\n\t\t\t\t});\n\t\t\t}, this);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tlet\n\t\t\t\ti, daysGap, date, j,\n\t\t\t\tuserKey = params.user ? 'user' + params.user : null,\n\t\t\t\tdaysAmount = Math.ceil(params.duration / 1440);\n\n\t\t\tdaysGap = 1;\n\t\t\tfor (i = this.loadedDates.length; i--; i >= 0)\n\t\t\t{\n\t\t\t\tuserIsFree = true;\n\t\t\t\tresourcesAreFree = true;\n\t\t\t\tdate = this.loadedDates[i];\n\n\t\t\t\tif (userKey)\n\t\t\t\t{\n\t\t\t\t\t// All day is free for user\n\t\t\t\t\tuserIsFree = !date.slotsCount[userKey];\n\t\t\t\t}\n\n\t\t\t\tif (userIsFree && params.resources && params.resources.length > 0)\n\t\t\t\t{\n\t\t\t\t\tfor (j = 0; j < params.resources.length; j++)\n\t\t\t\t\t{\n\t\t\t\t\t\tresourcesAreFree = resourcesAreFree && !date.slotsCount['resource' + params.resources[j]];\n\t\t\t\t\t\tif (!resourcesAreFree)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (userIsFree && resourcesAreFree)\n\t\t\t\t{\n\t\t\t\t\tdaysGap++;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tdaysGap = 0;\n\t\t\t\t}\n\n\t\t\t\tdateIndex[date.key] = userIsFree && resourcesAreFree && daysAmount <= daysGap;\n\t\t\t}\n\t\t}\n\n\t\treturn dateIndex;\n\t}\n\n\tgetSlotIndex(params)\n\t{\n\t\tif (params.date)\n\t\t{\n\t\t\tparams.date = this.dateControl.getValue();\n\t\t}\n\n\t\tlet slotIndex = {};\n\t\tif (Type.isDate(params.date))\n\t\t{\n\t\t\tif (this.getFieldParams().ALLOW_OVERBOOKING !== \"Y\"\n\t\t\t\t&& (this.isUserSelectorInAutoMode() || this.isResourceSelectorInAutoMode()))\n\t\t\t{\n\t\t\t\tconst fieldParams = this.getFieldParams();\n\t\t\t\tlet\n\t\t\t\t\tfreeSlot,\n\t\t\t\t\ti, j, time,\n\t\t\t\t\tslotGap = 1,\n\t\t\t\t\ttodayNowTime = 0,\n\t\t\t\t\ttimeSlots = this.getTimeSlots(),\n\t\t\t\t\tdateKey = BookingUtil.formatDate(this.DATE_FORMAT, params.date),\n\t\t\t\t\tloadedDate = this.loadedDates[this.loadedDatesIndex[dateKey]],\n\t\t\t\t\tslotsAmount = Math.ceil(this.getCurrentDuration() / this.scale);\n\n\t\t\t\tif (this.checkIsTodayDate(dateKey))\n\t\t\t\t{\n\t\t\t\t\tconst today = new Date();\n\t\t\t\t\tconst deltaOffset = fieldParams.USE_USER_TIMEZONE === 'N'\n\t\t\t\t\t\t? today.getTimezoneOffset() * 60 + this.timezoneOffset:\n\t\t\t\t\t\t0;\n\t\t\t\t\ttodayNowTime = today.getHours() * 60 + today.getMinutes() + (deltaOffset / 60);\n\t\t\t\t}\n\n\t\t\t\t// Prefill slotIndex\n\t\t\t\ttimeSlots.forEach(function(slot){slotIndex[slot.time] = true;}, this);\n\n\t\t\t\tif (this.isUserSelectorInAutoMode())\n\t\t\t\t{\n\t\t\t\t\tconst userList = this.getUsersValue();\n\n\t\t\t\t\tfor (i = timeSlots.length; i--; i >= 0)\n\t\t\t\t\t{\n\t\t\t\t\t\ttime = timeSlots[i].time;\n\t\t\t\t\t\tfreeSlot = false;\n\n\t\t\t\t\t\tif (todayNowTime && time < todayNowTime)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tslotIndex[time] = false;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor (j = 0; j < userList.length; j++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (!loadedDate.slots[time]\n\t\t\t\t\t\t\t\t|| !loadedDate.slots[time]['user' + userList[j]])\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfreeSlot = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tslotIndex[time] = slotIndex[time] && freeSlot && slotsAmount <= slotGap;\n\t\t\t\t\t\tslotGap = freeSlot ? slotGap + 1 : 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.isResourceSelectorInAutoMode())\n\t\t\t\t{\n\t\t\t\t\tconst resList = this.getResourceValue();\n\t\t\t\t\tfor (i = timeSlots.length; i--; i >= 0)\n\t\t\t\t\t{\n\t\t\t\t\t\ttime = timeSlots[i].time;\n\t\t\t\t\t\tfreeSlot = false;\n\n\t\t\t\t\t\tif (todayNowTime && time < todayNowTime)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tslotIndex[time] = false;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor (j = 0; j < resList.length; j++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (!loadedDate.slots[time]\n\t\t\t\t\t\t\t\t|| !loadedDate.slots[time]['resource' + resList[j]])\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfreeSlot = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tslotIndex[time] = slotIndex[time] && freeSlot && slotsAmount <= slotGap;\n\t\t\t\t\t\tslotGap = freeSlot ? slotGap + 1 : 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tslotIndex = this.getAvailableSlotIndex({\n\t\t\t\t\tdate: params.date || this.dateControl.getValue(),\n\t\t\t\t\tresources: this.getSelectedResources(),\n\t\t\t\t\tuser: this.getSelectedUser(),\n\t\t\t\t\tduration: this.getCurrentDuration()\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\treturn slotIndex;\n\t}\n\n\tgetAvailableSlotIndex(params)\n\t{\n\t\tlet todayNowTime = 0;\n\t\tconst fieldParams = this.getFieldParams();\n\t\tlet\n\t\t\tdateKey, loadedDate, i, j, time,\n\t\t\tslotGap,\n\t\t\tuserKey = params.user ? 'user' + params.user : null,\n\t\t\tslotsAmount = Math.ceil(params.duration / this.scale),\n\t\t\tuserIsFree, resourcesAreFree,\n\t\t\ttimeSlots = this.getTimeSlots(),\n\t\t\tallowOverbooking = fieldParams.ALLOW_OVERBOOKING === \"Y\",\n\t\t\tslotIndex = {};\n\n\t\t// Prefill slotIndex\n\t\ttimeSlots.forEach(function(slot){slotIndex[slot.time] = true;}, this);\n\n\t\tif (Type.isDate(params.date))\n\t\t{\n\t\t\tdateKey = BookingUtil.formatDate(this.DATE_FORMAT, params.date);\n\t\t\tloadedDate = this.loadedDates[this.loadedDatesIndex[dateKey]];\n\t\t\tslotGap = 1;\n\n\t\t\tif (this.checkIsTodayDate(dateKey))\n\t\t\t{\n\t\t\t\tconst today = new Date();\n\t\t\t\tconst deltaOffset = fieldParams.USE_USER_TIMEZONE === 'N'\n\t\t\t\t\t? today.getTimezoneOffset() * 60 + this.timezoneOffset:\n\t\t\t\t\t0;\n\t\t\t\ttodayNowTime = today.getHours() * 60 + today.getMinutes() + (deltaOffset / 60);\n\t\t\t}\n\n\t\t\tfor (i = timeSlots.length; i--; i >= 0)\n\t\t\t{\n\t\t\t\ttime = timeSlots[i].time;\n\t\t\t\tif (todayNowTime && time < todayNowTime)\n\t\t\t\t{\n\t\t\t\t\tslotIndex[time] = false;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (allowOverbooking)\n\t\t\t\t{\n\t\t\t\t\tslotIndex[time] = slotsAmount <= slotGap;\n\t\t\t\t\tslotGap++;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tuserIsFree = true;\n\t\t\t\t\tresourcesAreFree = true;\n\n\t\t\t\t\tif (userKey)\n\t\t\t\t\t{\n\t\t\t\t\t\t// Time is free for user\n\t\t\t\t\t\tuserIsFree = !loadedDate.slots[time] || !loadedDate.slots[time][userKey];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (params.resources && params.resources.length > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tfor (j = 0; j < params.resources.length; j++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tresourcesAreFree = resourcesAreFree && (!loadedDate.slots[time] || !loadedDate.slots[time]['resource' + params.resources[j]]);\n\n\t\t\t\t\t\t\tif (!resourcesAreFree)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tslotIndex[time] = userIsFree && resourcesAreFree && slotsAmount <= slotGap;\n\n\t\t\t\t\tif (userIsFree && resourcesAreFree)\n\t\t\t\t\t{\n\t\t\t\t\t\tslotGap++;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tslotGap = 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn slotIndex;\n\t}\n\n\tcheckSlotsForDate(date, slotsAmount, params)\n\t{\n\t\tlet\n\t\t\tuserIsFree = true,\n\t\t\tresourcesAreFree = true,\n\t\t\tdateKey = Type.isDate(date) ? BookingUtil.formatDate(this.DATE_FORMAT, date) : date;\n\n\t\tparams = params || {};\n\t\tif (this.usersDisplayed() && params.user)\n\t\t{\n\t\t\tif (this.busySlotMatrix.user[params.user]\n\t\t\t\t&& !this.entityHasSlotsForDate({\n\t\t\t\t\tentityType: 'user',\n\t\t\t\t\tentityId: params.user,\n\t\t\t\t\tdateKey: dateKey,\n\t\t\t\t\tslotsAmount: slotsAmount\n\t\t\t\t})\n\t\t\t)\n\t\t\t{\n\t\t\t\tuserIsFree = false;\n\t\t\t}\n\t\t}\n\n\t\tif (this.resourcesDisplayed() && userIsFree\n\t\t\t&& Type.isArray(params.resources) && params.resources.length > 0)\n\t\t{\n\t\t\tparams.resources.forEach(function(resourceId)\n\t\t\t{\n\t\t\t\tif (resourcesAreFree\n\t\t\t\t\t&& this.busySlotMatrix.resource[resourceId]\n\t\t\t\t\t&& !this.entityHasSlotsForDate({\n\t\t\t\t\t\tentityType: 'resource',\n\t\t\t\t\t\tentityId: resourceId,\n\t\t\t\t\t\tdateKey: dateKey,\n\t\t\t\t\t\tslotsAmount: slotsAmount\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\tresourcesAreFree = false;\n\t\t\t\t}\n\t\t\t}, this);\n\t\t}\n\n\t\treturn userIsFree && resourcesAreFree;\n\t}\n\n\tentityHasSlotsForDate(params)\n\t{\n\t\tlet\n\t\t\tbusySlotList,\n\t\t\tslots, i,\n\t\t\tfreeSlotCount = 0,\n\t\t\thasFreeSlots = false;\n\n\t\tif (this.busySlotMatrix[params.entityType][params.entityId] &&\n\t\t\tthis.busySlotMatrix[params.entityType][params.entityId][params.dateKey])\n\t\t{\n\t\t\tbusySlotList = this.busySlotMatrix[params.entityType][params.entityId][params.dateKey];\n\t\t\tslots = this.getTimeSlots();\n\t\t\tfor (i = 0; i < slots.length; i++)\n\t\t\t{\n\t\t\t\tif (!busySlotList[slots[i].time])\n\t\t\t\t{\n\t\t\t\t\tfreeSlotCount++;\n\t\t\t\t\tif (freeSlotCount >= params.slotsAmount)\n\t\t\t\t\t{\n\t\t\t\t\t\thasFreeSlots = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tfreeSlotCount = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\thasFreeSlots = true;\n\t\t}\n\n\t\treturn hasFreeSlots;\n\t}\n\n\tgetSelectedResources()\n\t{\n\t\tlet result = null;\n\t\tif (this.resourceControl)\n\t\t{\n\t\t\tresult = this.resourceControl.getSelectedValues();\n\t\t\tif (Type.isArray(result) && !result.length)\n\t\t\t{\n\t\t\t\tresult = null;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\n\tgetSelectedUser()\n\t{\n\t\tlet result = null;\n\t\tif (this.userControl)\n\t\t{\n\t\t\tresult = this.userControl.getSelectedUser();\n\t\t}\n\t\treturn result;\n\t}\n\n\tgetCurrentDuration()\n\t{\n\t\tlet result = null;\n\t\tif (this.durationControl)\n\t\t{\n\t\t\tresult = this.durationControl.getSelectedValue();\n\t\t}\n\t\telse if (this.serviceControl)\n\t\t{\n\t\t\tlet service = this.serviceControl.getSelectedService(true);\n\t\t\tif (service && service.duration)\n\t\t\t{\n\t\t\t\tresult = parseInt(service.duration);\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tgetDefaultDurationSlotsAmount()\n\t{\n\t\tlet\n\t\t\tsettingsData = this.getSettingsData(),\n\t\t\tfieldParams = this.getFieldParams(),\n\t\t\tduration, i, slotsAmount;\n\n\t\tif (fieldParams.USE_SERVICES === 'Y' && settingsData.services.value)\n\t\t{\n\t\t\tconst services = this.getServicesValue();\n\t\t\tif (Type.isArray(fieldParams.SERVICE_LIST) && services.length > 0)\n\t\t\t{\n\t\t\t\tfor (i = 0; i < fieldParams.SERVICE_LIST.length; i++)\n\t\t\t\t{\n\t\t\t\t\tif (BookingUtil.translit(fieldParams.SERVICE_LIST[i].name) === services[0])\n\t\t\t\t\t{\n\t\t\t\t\t\tduration = parseInt(fieldParams.SERVICE_LIST[i].duration);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tduration = parseInt(settingsData.duration.defaultValue);\n\t\t}\n\n\t\tslotsAmount = Math.ceil(duration / this.scale);\n\t\treturn slotsAmount;\n\t}\n\n\tgetCurrentServiceName()\n\t{\n\t\tlet result = '';\n\t\tif (this.serviceControl)\n\t\t{\n\t\t\tlet service = this.serviceControl.getSelectedService(true);\n\t\t\tif (service && service.name)\n\t\t\t{\n\t\t\t\tresult = service.name;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tgetCurrentDate()\n\t{\n\t\tlet result = null;\n\t\tif (this.dateControl && this.dateControl.isShown())\n\t\t{\n\t\t\tresult = this.dateControl.getValue();\n\t\t\tif (this.timeSelectorDisplayed())\n\t\t\t{\n\t\t\t\tlet\n\t\t\t\t\thour, min,\n\t\t\t\t\ttimeValue = this.timeControl.getValue();\n\n\t\t\t\tif (timeValue)\n\t\t\t\t{\n\t\t\t\t\thour = Math.floor(timeValue / 60);\n\t\t\t\t\tmin = timeValue - hour * 60;\n\t\t\t\t\tresult.setHours(hour, min, 0, 0);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult.setHours(0, 0, 0, 0);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tgetTimeSlots()\n\t{\n\t\tif (!this.slots)\n\t\t{\n\t\t\tthis.slots = [];\n\t\t\tlet slot;\n\t\t\tlet finishTime, hourFrom, hourTo;\n\t\t\tlet minTo, minFrom;\n\t\t\tlet num = 0;\n\t\t\tlet time = this.timeFrom * 60;\n\n\t\t\twhile (time < this.timeTo * 60)\n\t\t\t{\n\t\t\t\thourFrom = Math.floor(time / 60);\n\t\t\t\tminFrom = (time) - hourFrom * 60;\n\t\t\t\tfinishTime = time + this.scale;\n\t\t\t\thourTo = Math.floor(finishTime / 60);\n\t\t\t\tminTo = (finishTime) - hourTo * 60;\n\n\t\t\t\tslot = {\n\t\t\t\t\ttime: time\n\t\t\t\t};\n\n\t\t\t\tthis.slots.push(slot);\n\t\t\t\ttime += this.scale;\n\t\t\t\tnum++;\n\t\t\t}\n\t\t}\n\t\treturn this.slots;\n\t}\n\n\tusersDisplayed()\n\t{\n\t\tif (this.useUsers === undefined)\n\t\t{\n\t\t\tthis.useUsers = this.getFieldParams()['USE_USERS'] === 'Y';\n\t\t}\n\t\treturn this.useUsers;\n\t}\n\n\tresourcesDisplayed()\n\t{\n\t\tif (this.useResources === undefined)\n\t\t{\n\t\t\tlet fieldParams = this.getFieldParams();\n\t\t\tthis.useResources = !!(fieldParams.USE_RESOURCES === 'Y'\n\t\t\t\t&& fieldParams.SELECTED_RESOURCES);\n\t\t}\n\t\treturn this.useResources;\n\t}\n\n\ttimeSelectorDisplayed()\n\t{\n\t\tif (this.useTime === undefined)\n\t\t{\n\t\t\tthis.useTime = this.getFieldParams().FULL_DAY !== 'Y';\n\t\t}\n\t\treturn this.useTime;\n\t}\n\n\tselectorCanBeShown(type)\n\t{\n\t\tlet result = false;\n\t\tif (type === 'resources')\n\t\t{\n\t\t\tif (this.resourcesDisplayed() && !this.usersDisplayed())\n\t\t\t{\n\t\t\t\tresult = true;\n\t\t\t}\n\t\t\telse if (this.usersDisplayed())\n\t\t\t{\n\t\t\t\tresult = this.getSelectedUser();\n\t\t\t}\n\t\t}\n\t\telse if (type === 'date' || type === 'services' || type === 'duration')\n\t\t{\n\t\t\tif (this.usersDisplayed() && this.resourcesDisplayed())\n\t\t\t{\n\t\t\t\tresult = this.getSelectedUser() && this.getSelectedResources();\n\t\t\t}\n\t\t\telse if (this.usersDisplayed())\n\t\t\t{\n\t\t\t\tresult = this.getSelectedUser();\n\t\t\t}\n\t\t\telse if (this.resourcesDisplayed())\n\t\t\t{\n\t\t\t\tresult = this.getSelectedResources();\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tcheckIsTodayDate(dateKey)\n\t{\n\t\tif (!this.todayDateKey)\n\t\t{\n\t\t\tlet today = new Date();\n\t\t\tthis.todayDateKey = BookingUtil.formatDate(this.DATE_FORMAT, today);\n\t\t}\n\t\treturn this.todayDateKey === dateKey;\n\t}\n\n\tgetResourceValue()\n\t{\n\t\tconst settingsData = this.getSettingsData();\n\t\tlet value = [];\n\t\tif (Type.isArray(settingsData.resources.value))\n\t\t{\n\t\t\tvalue = settingsData.resources.value;\n\t\t}\n\t\telse if (Type.isString(settingsData.resources.value))\n\t\t{\n\t\t\tvalue = settingsData.resources.value.split('|');\n\t\t}\n\t\treturn value;\n\t}\n\n\tgetUsersValue()\n\t{\n\t\tconst settingsData = this.getSettingsData();\n\t\tlet value = [];\n\t\tif (Type.isArray(settingsData.users.value))\n\t\t{\n\t\t\tvalue = settingsData.users.value;\n\t\t}\n\t\telse if (Type.isString(settingsData.users.value))\n\t\t{\n\t\t\tvalue = settingsData.users.value.split('|');\n\t\t}\n\t\treturn value;\n\t}\n\n\tgetServicesValue()\n\t{\n\t\tconst settingsData = this.getSettingsData();\n\t\tlet value = [];\n\t\tif (Type.isArray(settingsData.services.value))\n\t\t{\n\t\t\tvalue = settingsData.services.value;\n\t\t}\n\t\telse if (Type.isString(settingsData.services.value))\n\t\t{\n\t\t\tvalue = settingsData.services.value.split('|');\n\t\t}\n\t\treturn value;\n\t}\n}","import {Loc} from \"./resourcebooking\";\n\nexport class Translit\n{\n\tstatic replacementCharTable = null;\n\n\tstatic run (str)\n\t{\n\t\tlet\n\t\t\treplaceChar = '_',\n\t\t\tregexpEnChars = /[A-Z0-9]/i,\n\t\t\tregexpSpace = /\\s/,\n\t\t\tmaxLength = 100,\n\t\t\tlen = str.length,\n\t\t\tresult = '',\n\t\t\tlastNewChar = '',\n\t\t\ti;\n\n\t\tfor (i = 0; i < len; i++)\n\t\t{\n\t\t\tlet\n\t\t\t\tnewChar,\n\t\t\t\tchr = str.charAt(i);\n\n\t\t\tif (regexpEnChars.test(chr))\n\t\t\t{\n\t\t\t\tnewChar = chr;\n\t\t\t}\n\t\t\telse if (regexpSpace.test(chr))\n\t\t\t{\n\t\t\t\tif (i > 0 && lastNewChar !== replaceChar)\n\t\t\t\t{\n\t\t\t\t\tnewChar = replaceChar;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tnewChar = '';\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tnewChar = Translit.getChar(chr);\n\n\t\t\t\tif (newChar === null)\n\t\t\t\t{\n\t\t\t\t\tif (i > 0 && i !== len - 1 && lastNewChar !== replaceChar)\n\t\t\t\t\t{\n\t\t\t\t\t\tnewChar = replaceChar;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tnewChar = '';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (null != newChar && newChar.length > 0)\n\t\t\t{\n\t\t\t\tnewChar = newChar.toLowerCase();\n\t\t\t\tresult += newChar;\n\t\t\t\tlastNewChar = newChar;\n\t\t\t}\n\n\t\t\tif (result.length >= maxLength)\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tstatic generateReplacementCharTable()\n\t{\n\t\tlet\n\t\t\tseparator = ',',\n\t\t\tcharTableFrom = (Loc.getMessage('TRANSLIT_FROM') || '').split(separator),\n\t\t\tcharTableTo = (Loc.getMessage('TRANSLIT_TO') || '').split(separator),\n\t\t\ti, len;\n\n\t\tTranslit.replacementCharTable = [];\n\t\tfor (i = 0, len = charTableFrom.length; i < len; i++)\n\t\t{\n\t\t\tTranslit.replacementCharTable[i] = [charTableFrom[i], charTableTo[i]];\n\t\t}\n\t}\n\n\tstatic getChar(chr)\n\t{\n\t\tif (Translit.replacementCharTable === null)\n\t\t{\n\t\t\tTranslit.generateReplacementCharTable();\n\t\t}\n\n\t\tfor (let i = 0, len = Translit.replacementCharTable.length; i < len; i++)\n\t\t{\n\t\t\tif (chr === Translit.replacementCharTable[i][0])\n\t\t\t{\n\t\t\t\treturn Translit.replacementCharTable[i][1];\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n}","import {Type, Loc, Tag, Runtime, CoreDate} from \"./resourcebooking\";\nimport {Translit} from \"./translit\";\n\nexport class BookingUtil {\n\tstatic simpleTimeList = null;\n\tstatic DAY_LENGTH = 86400000;\n\tstatic TIME_FORMAT = null;\n\tstatic TIME_FORMAT_SHORT = null;\n\tstatic DATE_FORMAT = null;\n\tstatic DATETIME_FORMAT = null;\n\n\tstatic getDateFormat()\n\t{\n\t\tif (Type.isNull(BookingUtil.DATE_FORMAT))\n\t\t{\n\t\t\tBookingUtil.DATE_FORMAT = CoreDate.convertBitrixFormat(Loc.getMessage(\"FORMAT_DATE\"));\n\t\t}\n\t\treturn BookingUtil.DATE_FORMAT;\n\t}\n\n\tstatic getDateTimeFormat()\n\t{\n\t\tif (Type.isNull(BookingUtil.DATETIME_FORMAT))\n\t\t{\n\t\t\tBookingUtil.DATETIME_FORMAT = CoreDate.convertBitrixFormat(Loc.getMessage(\"FORMAT_DATETIME\"));\n\t\t}\n\t\treturn BookingUtil.DATETIME_FORMAT;\n\t}\n\n\tstatic getTimeFormat()\n\t{\n\t\tif (Type.isNull(BookingUtil.TIME_FORMAT))\n\t\t{\n\t\t\tlet DATETIME_FORMAT = BookingUtil.getDateTimeFormat();\n\t\t\tlet DATE_FORMAT = BookingUtil.getDateFormat();\n\n\t\t\tif ((DATETIME_FORMAT.substr(0, DATE_FORMAT.length) === DATE_FORMAT))\n\t\t\t{\n\t\t\t\tBookingUtil.TIME_FORMAT = DATETIME_FORMAT.substr(DATE_FORMAT.length).trim();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tBookingUtil.TIME_FORMAT = CoreDate.convertBitrixFormat(CoreDate.isAmPmMode() ? 'H:MI:SS T' : 'HH:MI:SS');\n\t\t\t}\n\n\t\t\tBookingUtil.TIME_FORMAT_SHORT = BookingUtil.TIME_FORMAT.replace(':s', '');\n\t\t}\n\n\t\treturn BookingUtil.TIME_FORMAT;\n\t}\n\n\tstatic getTimeFormatShort()\n\t{\n\t\tif (Type.isNull(BookingUtil.TIME_FORMAT_SHORT))\n\t\t{\n\t\t\tBookingUtil.TIME_FORMAT_SHORT = BookingUtil.getTimeFormat().replace(':s', '');\n\t\t}\n\t\treturn BookingUtil.TIME_FORMAT_SHORT;\n\t}\n\n\tstatic formatDate(format, timestamp, now, utc)\n\t{\n\t\tif (format === null)\n\t\t{\n\t\t\tformat = BookingUtil.getDateFormat();\n\t\t}\n\n\t\tif (Type.isDate(timestamp))\n\t\t{\n\t\t\ttimestamp = timestamp.getTime() / 1000;\n\t\t}\n\n\t\treturn CoreDate.format(format, timestamp, now, utc);\n\t}\n\n\tstatic parseDate(str, bUTC, formatDate, formatDatetime)\n\t{\n\t\treturn CoreDate.parse(str, bUTC, formatDate, formatDatetime);\n\t}\n\n\tstatic formatTime(h, m)\n\t{\n\t\tlet d = new Date();\n\t\td.setHours(h, m, 0);\n\t\treturn CoreDate.format(BookingUtil.getTimeFormatShort(), d.getTime() / 1000);\n\t};\n\n\tstatic translit(str)\n\t{\n\t\treturn Type.isString(str) ? Translit.run(str).replace(/[^a-z0-9_]/ig, \"_\") : str;\n\t}\n\n\tstatic getLoader(size, className)\n\t{\n\t\treturn Tag.render`\n\t\t<div class=\"${className || 'calendar-loader'}\">\n\t\t\t<svg class=\"calendar-loader-circular\"\n\t\t\t\tstyle=\"width:${parseInt(size)}px; height:${parseInt(size)}px;\"\n\t\t\t\tviewBox=\"25 25 50 50\">\n\t\t\t\t\t<circle class=\"calendar-loader-path\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke-miterlimit=\"10\"/>\n\t\t\t\t\t<circle class=\"calendar-loader-inner-path\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke-miterlimit=\"10\"/>\n\t\t\t</svg>\n\t\t</div>\n`;\n\t};\n\n\tstatic fireCustomEvent(eventObject, eventName, eventParams, secureParams)\n\t{\n\t\tif (window.BX && Type.isFunction(BX.onCustomEvent))\n\t\t{\n\t\t\treturn BX.onCustomEvent(eventObject, eventName, eventParams, secureParams);\n\t\t}\n\t}\n\n\tstatic bindCustomEvent(eventObject, eventName, eventHandler)\n\t{\n\t\tif (window.BX && Type.isFunction(BX.addCustomEvent))\n\t\t{\n\t\t\treturn BX.addCustomEvent(eventObject, eventName, eventHandler);\n\t\t}\n\t}\n\n\tstatic unbindCustomEvent(eventObject, eventName, eventHandler)\n\t{\n\t\tif (window.BX && Type.isFunction(BX.removeCustomEvent))\n\t\t{\n\t\t\treturn BX.removeCustomEvent(eventObject, eventName, eventHandler);\n\t\t}\n\t}\n\n\tstatic isAmPmMode()\n\t{\n\t\treturn CoreDate.isAmPmMode();\n\t}\n\n\tstatic mergeEx()\n\t{\n\t\tlet arg = Array.prototype.slice.call(arguments);\n\t\tif(arg.length < 2)\n\t\t{\n\t\t\treturn {};\n\t\t}\n\n\t\tlet result = arg.shift();\n\t\tfor (let i = 0; i < arg.length; i++)\n\t\t{\n\t\t\tfor (let k in arg[i])\n\t\t\t{\n\t\t\t\tif (typeof arg[i] === \"undefined\" || arg[i] == null || !arg[i].hasOwnProperty(k))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (Type.isPlainObject(arg[i][k]) && Type.isPlainObject(result[k]))\n\t\t\t\t{\n\t\t\t\t\tBookingUtil.mergeEx(result[k], arg[i][k]);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tresult[k] = Type.isPlainObject(arg[i][k]) ? Runtime.clone(arg[i][k]) : arg[i][k];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\tstatic getDurationList(fullDay)\n\t{\n\t\tlet\n\t\t\tvalues = [5, 10, 15, 20, 25, 30, 40, 45, 50, 60, 90,\n\t\t\t\t120, 180, 240, 300, 360,\n\t\t\t\t1440, 1440 * 2, 1440 * 3, 1440 * 4, 1440 * 5, 1440 * 6, 1440 * 7, 1440 * 10],\n\t\t\tval, i, res = [];\n\n\t\tfor (i = 0; i < values.length; i++)\n\t\t{\n\t\t\tval = values[i];\n\t\t\tif (fullDay && val % 1440 !== 0)\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tres.push({\n\t\t\t\tvalue: val,\n\t\t\t\tlabel: BookingUtil.getDurationLabel(val)\n\t\t\t});\n\t\t}\n\t\treturn res;\n\t}\n\n\tstatic getDurationLabel(val)\n\t{\n\t\tlet label;\n\t\tif (val % 1440 === 0) // Days\n\t\t{\n\t\t\tlabel = Loc.getMessage('USER_TYPE_DURATION_X_DAY').replace('#NUM#', val / 1440);\n\t\t}\n\t\telse if (val % 60 === 0 && val !== 60) // Hours\n\t\t{\n\t\t\tlabel = Loc.getMessage('USER_TYPE_DURATION_X_HOUR').replace('#NUM#', val / 60);\n\t\t}\n\t\t// Minutes\n\t\telse\n\t\t{\n\t\t\tlabel = Loc.getMessage('USER_TYPE_DURATION_X_MIN').replace('#NUM#', val);\n\t\t}\n\t\treturn label\n\t}\n\n\tstatic parseDuration(value)\n\t{\n\t\tlet\n\t\t\tstringValue = value,\n\t\t\tnumValue = parseInt(value),\n\t\t\tparsed = false,\n\t\t\tdayRegexp = new RegExp('(\\\\d)\\\\s*(' + Loc.getMessage('USER_TYPE_DURATION_REGEXP_DAY') + ').*', 'ig'),\n\t\t\thourRegexp = new RegExp('(\\\\d)\\\\s*(' + Loc.getMessage('USER_TYPE_DURATION_REGEXP_HOUR') + ').*', 'ig');\n\n\t\tvalue = value.replace(dayRegexp, function(str, num){parsed = true;return num;});\n\t\t// It's days\n\t\tif (parsed)\n\t\t{\n\t\t\tvalue = numValue * 1440;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvalue = stringValue.replace(hourRegexp, function(str, num){parsed = true;return num;});\n\t\t\t// It's hours\n\t\t\tif (parsed)\n\t\t\t{\n\t\t\t\tvalue = numValue * 60;\n\t\t\t}\n\t\t\telse // Minutes\n\t\t\t{\n\t\t\t\tvalue = numValue;\n\t\t\t}\n\t\t}\n\n\t\treturn parseInt(value) || 0;\n\t}\n\n\tstatic getSimpleTimeList()\n\t{\n\t\tif (Type.isNull(BookingUtil.simpleTimeList))\n\t\t{\n\t\t\tlet i, res = [];\n\t\t\tfor (i = 0; i < 24; i++)\n\t\t\t{\n\t\t\t\tres.push({value: i * 60, label: this.formatTime(i, 0)});\n\t\t\t\tres.push({value: i * 60 + 30, label: this.formatTime(i, 30)});\n\t\t\t}\n\t\t\tBookingUtil.simpleTimeList = res;\n\t\t}\n\t\treturn BookingUtil.simpleTimeList;\n\t}\n\n\tstatic adaptTimeValue(timeValue)\n\t{\n\t\ttimeValue = parseInt(timeValue.h * 60) + parseInt(timeValue.m);\n\t\tlet\n\t\t\ttimeList = BookingUtil.getSimpleTimeList(),\n\t\t\tdiff = 24 * 60,\n\t\t\tind = false,\n\t\t\ti;\n\n\t\tfor (i = 0; i < timeList.length; i++)\n\t\t{\n\t\t\tif (Math.abs(timeList[i].value - timeValue) < diff)\n\t\t\t{\n\t\t\t\tdiff = Math.abs(timeList[i].value - timeValue);\n\t\t\t\tind = i;\n\t\t\t\tif (diff <= 15)\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn timeList[ind || 0];\n\t}\n\n\tstatic getDayLength()\n\t{\n\t\treturn BookingUtil.DAY_LENGTH;\n\t}\n\n\tstatic showLimitationPopup()\n\t{\n\t\tif (top.BX.getClass(\"BX.UI.InfoHelper\"))\n\t\t{\n\t\t\ttop.BX.UI.InfoHelper.show('limit_crm_booking');\n\t\t}\n\t};\n}","import {Type, Loc, Dom, Event} from \"./resourcebooking\";\nimport {UserSelector} from \"./controls/userselector\";\nimport {ResourceSelector} from \"./controls/resourceselector\";\nimport {ServiceSelector} from \"./controls/serviceselector\";\nimport {DurationSelector} from \"./controls/durationselector\";\nimport {DateSelector} from \"./controls/dateselector\";\nimport {TimeSelector} from \"./controls/timeselector\";\n\nexport class FieldViewControllerAbstract extends Event.EventEmitter\n{\n\tconstructor(params)\n\t{\n\t\tsuper(params);\n\t\tthis.settings = params.settings || {};\n\t\tthis.showTitle = params.displayTitle !== false;\n\t\tthis.title = params.title || '';\n\t\tthis.DOM = {\n\t\t\twrap: params.wrap // outer wrap of the form\n\t\t};\n\t}\n\n\tbuild()\n\t{\n\t\tthis.controls = {};\n\t\t// inner wrap\n\t\tthis.DOM.outerWrap = this.DOM.wrap.appendChild(Dom.create(\"div\", {props : { className : 'calendar-resbook-webform-wrapper calendar-resbook-webform-wrapper-form'}}));\n\t\tthis.DOM.innerWrap = this.DOM.outerWrap.appendChild(Dom.create(\"div\", {props : { className : 'calendar-resbook-webform-inner'}}));\n\n\t\tif (this.settings.userfieldSettings.useUsers || this.settings.userfieldSettings.useResources)\n\t\t{\n\t\t\tthis.displayTitle();\n\t\t\tthis.displayUsersControl();\n\t\t\tthis.displayResourcesControl();\n\t\t\tthis.displayServicesControl();\n\t\t\tthis.displayDurationControl();\n\t\t\tthis.displayDateControl();\n\t\t\tthis.displayTimeControl();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.displayWarning(Loc.getMessage('WEBF_RES_BOOKING_WARNING'));\n\t\t}\n\t}\n\n\tdestroy()\n\t{\n\t\tDom.remove(this.DOM.outerWrap);\n\t}\n\n\tdisplayTitle()\n\t{\n\t\tif (this.showTitle)\n\t\t{\n\t\t\tthis.DOM.titleWrap = this.DOM.innerWrap\n\t\t\t\t.appendChild(Dom.create(\"div\", {props:{className:'calendar-resbook-webform-title'}}))\n\t\t\t\t.appendChild(Dom.create(\"div\", {props:{className:'calendar-resbook-webform-title-text'}}));\n\t\t\tthis.updateTitle(this.title);\n\t\t}\n\t}\n\n\tupdateTitle(title)\n\t{\n\t\tif (this.showTitle)\n\t\t{\n\t\t\tthis.title = title;\n\t\t\tDom.adjust(this.DOM.titleWrap, {text: this.title});\n\t\t}\n\t}\n\n\tdisplayWarning(message)\n\t{\n\t\tthis.DOM.warningWrap = this.DOM.innerWrap\n\t\t\t.appendChild(Dom.create(\"div\", {\n\t\t\t\tprops:{className:'ui-alert ui-alert-warning ui-alert-text-center ui-alert-icon-warning'},\n\t\t\t\tstyle: {marginBottom: 0},\n\t\t\t\thtml: '<span class=\"ui-alert-message\">' + message + '</span>'\n\t\t\t}));\n\t}\n\n\tdisplayUsersControl()\n\t{\n\t\tif (this.settings.userfieldSettings.useUsers)\n\t\t{\n\t\t\tif (this.settings.data.users.value === null\n\t\t\t\t&& Type.isArray(this.settings.userfieldSettings.users))\n\t\t\t{\n\t\t\t\tthis.settings.data.users.value = this.settings.userfieldSettings.users;\n\t\t\t}\n\n\t\t\tthis.controls.users = new UserSelector({\n\t\t\t\touterWrap: this.DOM.innerWrap,\n\t\t\t\tdata: this.settings.data.users,\n\t\t\t\tuserIndex: this.settings.userfieldSettings.userIndex\n\t\t\t});\n\t\t\tthis.controls.users.display();\n\t\t}\n\t}\n\n\tdisplayResourcesControl()\n\t{\n\t\tif (this.settings.userfieldSettings.useResources)\n\t\t{\n\t\t\tif (this.settings.data.resources.value === null\n\t\t\t\t&& Type.isArray(this.settings.userfieldSettings.resources))\n\t\t\t{\n\t\t\t\tthis.settings.data.resources.value = [];\n\t\t\t\tthis.settings.userfieldSettings.resources.forEach(function(res)\n\t\t\t\t{\n\t\t\t\t\tthis.settings.data.resources.value.push(parseInt(res.id));\n\t\t\t\t}, this);\n\t\t\t}\n\n\t\t\tthis.controls.resources = new ResourceSelector({\n\t\t\t\touterWrap: this.DOM.innerWrap,\n\t\t\t\tdata: this.settings.data.resources,\n\t\t\t\tresourceList: this.settings.userfieldSettings.resources\n\t\t\t});\n\t\t\tthis.controls.resources.display();\n\t\t}\n\t}\n\n\tdisplayServicesControl()\n\t{\n\t\tif (this.settings.userfieldSettings.useServices)\n\t\t{\n\t\t\tif (this.settings.data.services.value === null\n\t\t\t\t&& Type.isArray(this.settings.userfieldSettings.services))\n\t\t\t{\n\t\t\t\tthis.settings.data.services.value = [];\n\t\t\t\tthis.settings.userfieldSettings.services.forEach(function(serv)\n\t\t\t\t{\n\t\t\t\t\tthis.settings.data.services.value.push(serv.name);\n\t\t\t\t}, this);\n\t\t\t}\n\n\t\t\tthis.controls.services = new ServiceSelector({\n\t\t\t\touterWrap: this.DOM.innerWrap,\n\t\t\t\tdata: this.settings.data.services,\n\t\t\t\tserviceList: this.settings.userfieldSettings.services\n\t\t\t});\n\t\t\tthis.controls.services.display();\n\t\t}\n\t}\n\n\tdisplayDurationControl()\n\t{\n\t\tif (!this.settings.userfieldSettings.useServices)\n\t\t{\n\t\t\tthis.controls.duration = new DurationSelector({\n\t\t\t\touterWrap: this.DOM.innerWrap,\n\t\t\t\tdata: this.settings.data.duration,\n\t\t\t\tfullDay: this.settings.userfieldSettings.fullDay\n\t\t\t});\n\t\t\tthis.controls.duration.display();\n\t\t}\n\t}\n\n\tdisplayDateControl()\n\t{\n\t\tthis.controls.date = new DateSelector({\n\t\t\touterWrap: this.DOM.innerWrap,\n\t\t\tdata: this.settings.data.date\n\t\t});\n\t\tthis.controls.date.display();\n\t}\n\n\tdisplayTimeControl()\n\t{\n\t\tif (!this.settings.userfieldSettings.fullDay)\n\t\t{\n\t\t\tthis.controls.time = new TimeSelector({\n\t\t\t\touterWrap: this.DOM.innerWrap,\n\t\t\t\tdata: this.settings.data.time\n\t\t\t});\n\t\t\tthis.controls.time.display();\n\t\t}\n\t}\n\n\trefreshLayout(settingsData)\n\t{\n\t\tfor (let k in this.controls)\n\t\t{\n\t\t\tif (this.controls.hasOwnProperty(k) && Type.isFunction(this.controls[k].refresh))\n\t\t\t{\n\t\t\t\tthis.controls[k].refresh(settingsData[k] || this.settings.data[k]);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetInnerWrap()\n\t{\n\t\treturn this.DOM.innerWrap;\n\t}\n\n\tgetOuterWrap()\n\t{\n\t\treturn this.DOM.outerWrap;\n\t}\n}\n\n\n\n\n\n\n","import {FieldViewControllerAbstract} from \"./fieldviewcontrollerabstract\";\nexport class FieldViewControllerEdit extends FieldViewControllerAbstract\n{\n\tconstructor(params)\n\t{\n\t\tsuper(params);\n\t}\n}","import {FieldViewControllerAbstract} from \"./fieldviewcontrollerabstract\";\nexport class FieldViewControllerPreview extends FieldViewControllerAbstract\n{\n\tconstructor(params)\n\t{\n\t\tsuper(params);\n\t}\n\n\tbuild()\n\t{\n\t\tsuper.build();\n\t\tthis.DOM.outerWrap.className = 'calendar-resbook-webform-wrapper calendar-resbook-webform-wrapper-preview calendar-resbook-webform-wrapper-dark';\n\t}\n}","import {Type, Dom, Event, BookingUtil, MenuManager} from \"../resourcebooking\";\n\nexport class SelectInput extends Event.EventEmitter\n{\n\tconstructor(params)\n\t{\n\t\tsuper(params);\n\n\t\tthis.id = params.id || 'bx-select-input-' + Math.round(Math.random() * 1000000);\n\n\t\tif (Type.isFunction(params.getValues))\n\t\t{\n\t\t\tthis.getValues = params.getValues;\n\t\t\tthis.values = this.getValues();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.values = params.values || false;\n\t\t}\n\n\t\tthis.input = params.input;\n\t\tthis.defaultValue = params.defaultValue || '';\n\t\tthis.openTitle = params.openTitle || '';\n\t\tthis.className = params.className || '';\n\t\tthis.currentValue = params.value;\n\t\tthis.currentValueIndex = params.valueIndex;\n\t\tthis.onChangeCallback = Type.isFunction(params.onChangeCallback) ? params.onChangeCallback : null;\n\t\tthis.onAfterMenuOpen = params.onAfterMenuOpen || null;\n\t\tthis.zIndex = params.zIndex || 1200;\n\t\tthis.disabled = params.disabled;\n\t\tthis.editable = params.editable !== false;\n\t\tthis.setFirstIfNotFound = !!params.setFirstIfNotFound;\n\n\t\tif (this.onChangeCallback)\n\t\t{\n\t\t\tEvent.bind(this.input, 'change', this.onChangeCallback);\n\t\t\tEvent.bind(this.input, 'keyup', this.onChangeCallback);\n\t\t}\n\n\t\tthis.curInd = false;\n\n\t\tif (Type.isArray(this.values))\n\t\t{\n\t\t\tEvent.bind(this.input, 'click', this.onClick.bind(this));\n\n\t\t\tif (this.editable)\n\t\t\t{\n\t\t\t\tEvent.bind(this.input, 'focus', this.onFocus.bind(this));\n\t\t\t\tEvent.bind(this.input, 'blur', this.onBlur.bind(this));\n\t\t\t\tEvent.bind(this.input, 'keyup', this.onKeyup.bind(this));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tEvent.bind(this.input, 'focus', function(){this.input.blur();}.bind(this));\n\t\t\t}\n\n\t\t\tif (this.currentValueIndex === undefined && this.currentValue !== undefined)\n\t\t\t{\n\t\t\t\tthis.currentValueIndex = -1;\n\t\t\t\tfor (let i = 0; i < this.values.length; i++)\n\t\t\t\t{\n\t\t\t\t\tif (parseInt(this.values[i].value) === parseInt(this.currentValue))\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.currentValueIndex = i;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.currentValueIndex === -1)\n\t\t\t\t{\n\t\t\t\t\tthis.currentValueIndex = this.setFirstIfNotFound ? 0 : undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (this.currentValueIndex !== undefined && this.values[this.currentValueIndex])\n\t\t{\n\t\t\tthis.input.value = this.values[this.currentValueIndex].label;\n\t\t}\n\t}\n\n\tshowPopup()\n\t{\n\t\tif (this.getValues)\n\t\t{\n\t\t\tthis.values = this.getValues();\n\t\t}\n\n\t\tif (this.shown || this.disabled || !this.values.length)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tlet\n\t\t\tind = 0,\n\t\t\tj = 0,\n\t\t\tmenuItems = [],\n\t\t\ti,\n\t\t\t_this = this;\n\n\t\tfor (i = 0; i < this.values.length; i++)\n\t\t{\n\t\t\tif (this.values[i].delimiter)\n\t\t\t{\n\t\t\t\tmenuItems.push(this.values[i]);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif ((this.currentValue && this.values[i] && this.values[i].value === this.currentValue.value)\n\t\t\t\t\t|| this.input.value === this.values[i].label)\n\t\t\t\t{\n\t\t\t\t\tind = j;\n\t\t\t\t}\n\n\t\t\t\tmenuItems.push({\n\t\t\t\t\tid: this.values[i].value + '_' + i,\n\t\t\t\t\ttext: this.values[i].label,\n\t\t\t\t\tonclick: this.values[i].callback || (function (value, label)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn function ()\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t_this.input.value = label;\n\t\t\t\t\t\t\t_this.popupMenu.close();\n\t\t\t\t\t\t\t_this.onChange(value, label);\n\t\t\t\t\t\t}\n\t\t\t\t\t})(this.values[i].value, this.values[i].labelRaw || this.values[i].label)\n\t\t\t\t});\n\t\t\t\tj++;\n\t\t\t}\n\t\t}\n\n\t\tthis.popupMenu = MenuManager.create(\n\t\t\tthis.id,\n\t\t\tthis.input,\n\t\t\tmenuItems,\n\t\t\t{\n\t\t\t\tcloseByEsc : true,\n\t\t\t\tautoHide : true,\n\t\t\t\tzIndex: this.zIndex,\n\t\t\t\toffsetTop: 0,\n\t\t\t\toffsetLeft: 0,\n\t\t\t\tcacheable: false\n\t\t\t}\n\t\t);\n\n\t\tif (!BX.browser.IsFirefox())\n\t\t{\n\t\t\tthis.popupMenu.popupWindow.setMinWidth(this.input.offsetWidth);\n\t\t}\n\n\t\tthis.popupMenu.popupWindow.setMaxWidth(300);\n\n\t\tlet menuContainer = this.popupMenu.layout.menuContainer;\n\t\tDom.addClass(this.popupMenu.layout.menuContainer, 'calendar-resourcebook-select-popup');\n\t\tthis.popupMenu.show();\n\n\t\tlet menuItem = this.popupMenu.menuItems[ind];\n\t\tif (menuItem && menuItem.layout)\n\t\t{\n\t\t\tmenuContainer.scrollTop = menuItem.layout.item.offsetTop - 2;\n\t\t}\n\n\t\tBookingUtil.bindCustomEvent(this.popupMenu.popupWindow, 'onPopupClose', function(){this.shown = false;}.bind(this));\n\n\t\tthis.input.select();\n\n\t\tif (Type.isFunction(this.onAfterMenuOpen))\n\t\t{\n\t\t\tthis.onAfterMenuOpen(ind, this.popupMenu);\n\t\t}\n\n\t\tthis.shown = true;\n\t}\n\n\tclosePopup()\n\t{\n\t\tMenuManager.destroy(this.id);\n\t\tthis.shown = false;\n\t}\n\n\tonFocus()\n\t{\n\t\tsetTimeout(function(){\n\t\t\tif (!this.shown)\n\t\t\t{\n\t\t\t\tthis.showPopup();\n\t\t\t}\n\t\t}.bind(this), 200);\n\t}\n\n\tonClick()\n\t{\n\t\tif (this.shown)\n\t\t{\n\t\t\tthis.closePopup();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.showPopup();\n\t\t}\n\t}\n\n\tonBlur()\n\t{\n\t\tsetTimeout(this.closePopup.bind(this), 200);\n\t}\n\n\tonKeyup()\n\t{\n\t\tsetTimeout(this.closePopup.bind(this), 50);\n\t}\n\n\tonChange(value)\n\t{\n\t\tlet val = this.input.value;\n\t\tthis.emit('BX.Calendar.Resourcebooking.SelectInput:changed', new Event.BaseEvent({data: {selectinput: this, value: val, realValue: value}}));\n\t\tif (this.onChangeCallback)\n\t\t{\n\t\t\tthis.onChangeCallback({value: val, realValue: value});\n\t\t}\n\t}\n\n\tdestroy()\n\t{\n\t\tif (this.onChangeCallback)\n\t\t{\n\t\t\tEvent.unbind(this.input, 'change', this.onChangeCallback);\n\t\t\tEvent.unbind(this.input, 'keyup', this.onChangeCallback);\n\t\t}\n\n\t\tEvent.unbind(this.input, 'click', this.onClick.bind(this));\n\t\tEvent.unbind(this.input, 'focus', this.onFocus.bind(this));\n\t\tEvent.unbind(this.input, 'blur', this.onBlur.bind(this));\n\t\tEvent.unbind(this.input, 'keyup', this.onKeyup.bind(this));\n\n\t\tif (this.popupMenu)\n\t\t{\n\t\t\tthis.popupMenu.close();\n\t\t}\n\n\t\tMenuManager.destroy(this.id);\n\t\tthis.shown = false;\n\t}\n\n\tsetValue(value)\n\t{\n\t\tthis.input.value = value;\n\t\tif (Type.isArray(this.values))\n\t\t{\n\t\t\tlet currentValueIndex = -1;\n\t\t\tfor (let i = 0; i < this.values.length; i++)\n\t\t\t{\n\t\t\t\tif (this.values[i].value === value)\n\t\t\t\t{\n\t\t\t\t\tcurrentValueIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (currentValueIndex !== -1)\n\t\t\t{\n\t\t\t\tthis.input.value = this.values[currentValueIndex].label;\n\t\t\t\tthis.currentValueIndex = currentValueIndex;\n\t\t\t}\n\t\t}\n\t}\n\n\tgetValue()\n\t{\n\t\treturn this.input.value;\n\t}\n}","// @flow\n'use strict';\nimport { Type, Loc, Dom, Event, Tag, Browser, Text, Runtime } from 'main.core';\nimport {LiveFieldController} from './livefieldcontroller.js';\nimport {BookingUtil} from \"./bookingutil\";\nimport {FieldViewControllerEdit} from \"./fieldviewcontrolleredit\";\nimport {FieldViewControllerPreview} from \"./fieldviewcontrollerpreview\";\nimport {SelectInput} from \"./controls/selectinput\";\nimport \"main.date\";\nimport './css/resourcebooking.css';\nimport {PopupManager, MenuManager} from 'main.popup';\n\nimport {BaseEvent, EventEmitter } from 'main.core.events';\nlet CoreDate = window.BX && BX.Main && BX.Main.Date ? BX.Main.Date : null;\nexport {CoreDate};\nexport {Type, Loc, Dom, Event, Tag, Browser, Text, Runtime, PopupManager, MenuManager};\nexport {BaseEvent, EventEmitter};\nexport {BookingUtil, FieldViewControllerEdit, FieldViewControllerPreview, SelectInput};\n\nexport class Resourcebooking\n{\n\tstatic getLiveField(params)\n\t{\n\t\tif (!params.wrap || !Type.isDomNode(params.wrap))\n\t\t{\n\t\t\tthrow new Error('The argument \"params.wrap\" must be a DOM node');\n\t\t}\n\t\tif (Type.isNull(CoreDate))\n\t\t{\n\t\t\tthrow new Error('The error occured during Date extention loading');\n\t\t}\n\n\t\tlet liveFieldController = new LiveFieldController(params);\n\t\tliveFieldController.init();\n\t\treturn liveFieldController;\n\t}\n\n\tstatic getPreviewField(params)\n\t{\n\t}\n}\n"],"names":["ViewControlAbstract","constructor","params","new","target","TypeError","name","classNames","wrap","wrapClassName","innerWrap","title","field","DOM","outerWrap","dataWrap","labelWrap","data","shown","isDisplayed","show","isShown","display","appendChild","Dom","create","props","className","Tag","render","animation","refresh","refreshLabel","setDataConfig","hide","label","adjust","text","controlWrap","displayControl","remove","showWarning","errorMessage","addClass","displayErrorText","Loc","getMessage","hideWarning","removeClass","errorTextWrap","ViewDropDownSelect","id","Math","round","random","maxHeight","selectAllMessage","setSettings","build","select","attrs","events","click","openPopup","bind","setSelectedValues","selected","handleChangesCallback","Type","isFunction","values","isArray","multiple","isPopupShown","closePopup","menuItems","forEach","item","includes","parseInt","push","Text","encode","onclick","menuItemClick","length","selectAllItemClick","popup","MenuManager","closeByEsc","autoHide","offsetTop","offsetLeft","cacheable","popupContainer","popupWindow","style","width","offsetWidth","menuItem","checked","selectAllChecked","find","value","itemId","layout","innerHTML","Event","unbind","document","handleClick","setTimeout","close","e","selectAllcheckbox","srcElement","foundValue","checkbox","querySelector","hasClass","selectItem","deselectItem","handleControlChanges","index","indexOf","slice","concat","i","checkboxes","querySelectorAll","contains","getSelectedValues","textValues","selectedValues","join","UserSelector","userList","userIndex","defaultMode","previewMode","undefined","autoSelectDefaultValue","changeValueCallback","handleSettingsData","selectedValue","getSelectedUser","dropdownSelect","handleChanges","isPlainObject","hasOwnProperty","dataValue","dataValueRaw","split","displayName","setSelectedUser","userId","ResourceSelector","allResourceList","resourceList","setSelectedResource","ServiceSelector","serviceList","allServiceList","service","isString","trim","setSelectedService","getSelectedService","serviceIndex","prepareServiceId","BookingUtil","getDurationLabel","duration","serviceName","selectedService","getMeta","str","translit","DurationSelector","durationList","getDurationList","fullDay","defaultValue","durationItems","durationInput","type","durationControl","SelectInput","input","editable","manualInput","setFirstIfNotFound","onChangeCallback","setValue","getSelectedValue","parseDuration","getValue","DateSelector","requestDataCallback","allowOverbooking","displayed","setDateIndex","availableDateIndex","setCurrentDate","lineDateControl","refreshDateAvailability","start","configWasChanged","popupSateControl","PopupDateSelector","isDateAvailable","onChange","LineDateSelector","date","isDate","currentDate","isDateLoaded","isItPastDate","formatDate","dateKey","nowDate","Date","checkDate","getTime","setHours","refreshCurrentValue","getDisplayedValue","realDate","datePicker","valueInput","previousArrow","stateWrap","stateWrapDate","stateWrapDay","nextArrow","dateValue","hasAttribute","closest","dateMeta","getAttribute","setDate","getDate","openCalendarPopup","isExternalDatePickerEnabled","openExternalDatePicker","openBxCalendar","BX","calendar","node","bTime","get","unbindCustomEvent","handleCalendarClose","bindCustomEvent","parseDate","isNull","externalDatePickerIsEnabled","window","UI","Vue","Components","DatePick","hasTime","change","toggle","DAYS_DISPLAY_SIZE","dayNodes","dayNodeIndex","monthTitle","controlStaticWrap","controlInnerWrap","fillDays","initCustomScroll","startDate","getStartLoadDate","addDateSlot","innerWidth","dateCode","html","dayNode","getDayNode","setSelected","currentSelected","startLoadDate","arrowWrap","leftArrow","handlePreletrowClick","rightArrow","handleNextArrowClick","outerWidth","mousewheelScrollHandler","checkScrollPosition","scrollLeft","max","event","delta","deltaY","detail","wheelDelta","abs","Browser","isMac","stopPropagation","preventDefault","updateMonthTitle","dayNodeOuterWidth","childNodes","monthFrom","monthTo","firstDayNodeIndex","floor","lastDayNodeIndex","TimeSelector","timeFrom","timeTo","SLOTS_ROW_AMOUNT","popupSelectId","timezone","timezoneOffset","timezoneOffsetLabel","timeMidday","timeEvening","showOnlyFree","showFinishTime","scale","timezoneLabelWrap","replace","setSlotIndex","slotIndex","setCurrentValue","availableSlotIndex","timeValue","showEmptyWarning","warningWrap","warningTextNode","children","noSlotsAvailable","hideEmptyWarning","slotsInfo","getSlotsInfo","slots","freeSlotsCount","createSelectControl","createSlotsControl","isAmPmMode","itemsInColumn","maxColumnNumber","parts","itemNumber","slot","partOfTheDay","items","toUpperCase","itemsWrap","ceil","booked","time","toString","fromTime","toTime","itemsAmount","k","initCustomScrollForSlots","timeSelectWrap","getSlotByTime","isDomNode","getTimeTextBySlot","getSlotNode","hasAvailableSlots","meta","openSelectPopup","finishTime","hourFrom","minFrom","hourTo","minTo","part","num","formatTime","checkSlotsScroll","isSelectPopupShown","closeSelectPopup","getTimeSelectItems","angle","dataset","slotNodes","slotNode","StatusInformer","built","statusWrap","statusTimezone","dateFrom","getStatusText","dateTo","getHours","getMinutes","setError","message","isErrorSet","LiveFieldController","EventEmitter","setEventNamespace","actionAgent","ajax","runAction","inputName","DATE_FORMAT","getDateFormat","DATETIME_FORMAT","getDateTimeFormat","userFieldParams","loadedDates","externalSiteContext","accessibility","user","resource","busySlotMatrix","valueInputs","init","settingsData","getSettingsData","users","resources","Error","showMainLoader","requireFormData","then","hideMainLoader","buildFormControls","onChangeValues","check","result","usersDisplayed","userControl","resourcesDisplayed","getSelectedResources","resourceControl","getCurrentDuration","serviceControl","dateControl","statusControl","timeSelectorDisplayed","timeControl","inputsWrap","getFieldParams","ZIndexManager","stack","getOrAddStack","body","baseIndex","sort","preparaAutoSelectValues","displayUsersControl","displayResourcesControl","displayServicesControl","displayDurationControl","displayDateTimeControl","selectedUserId","selectedResourceId","refreshControlsState","selectorCanBeShown","getAvailableDateIndex","getSlotIndex","startValue","getFreeDate","updateStatusControl","fireCustomEvent","allValuesValue","dateFromValue","getCurrentDate","getCurrentServiceName","entries","clean","resourceId","selectedUser","entry","emit","loaderWrap","getLoader","mainLoader","showStatusLoader","hideStatusLoader","requestAccessibilityData","requestedFormData","formDataParams","from","Promise","resolve","reject","fieldName","entity_field_name","to","setLoadedDataLimits","response","isNumber","workTimeStart","workTimeEnd","fieldSettings","handleAccessibilityData","usersAccessibility","resourcesAccessibility","loadedDataFrom","loadedDataTo","loadedDatesIndex","key","slotsCount","fillDataIndex","entityType","entityId","dateIndex","setSeconds","fromTimestamp","toTimestamp","fillBusySlotMatrix","mergeEx","fromDate","dateToKey","timeValueFrom","timeValueTo","getTimeSlots","count","getCaption","caption","settings_data","getUserIndex","getSettings","isUserSelectorInAutoMode","isResourceSelectorInAutoMode","autoAdjustUserSelector","loadedDate","autoAdjustResourceSelector","autoSelectUser","autoSelectResource","autoSelectDate","maxStepsAuto","getFreeEntitiesForDate","slotsAmount","getDefaultDurationSlotsAmount","resList","getUsersValue","checkSlotsForDate","getResourceValue","BaseEvent","valueIndex","fieldParams","SELECTED_RESOURCES","res","USE_SERVICES","services","getServicesValue","SERVICE_LIST","FULL_DAY","ALLOW_OVERBOOKING","handleDateChanging","USE_USER_TIMEZONE","userTimezoneOffset","getTimezoneOffset","TIMEZONE","handleSelectedDateTimeChanging","useTimeout","updateTimeStatusTimeout","clearTimeout","freeDate","userIsFree","resourcesAreFree","daysGap","j","userKey","daysAmount","freeSlot","slotGap","todayNowTime","timeSlots","checkIsTodayDate","today","deltaOffset","getAvailableSlotIndex","entityHasSlotsForDate","busySlotList","freeSlotCount","hasFreeSlots","hour","min","useUsers","useResources","USE_RESOURCES","useTime","todayDateKey","Translit","run","replaceChar","regexpEnChars","regexpSpace","maxLength","len","lastNewChar","newChar","chr","charAt","test","getChar","toLowerCase","generateReplacementCharTable","separator","charTableFrom","charTableTo","replacementCharTable","CoreDate","convertBitrixFormat","getTimeFormat","TIME_FORMAT","substr","TIME_FORMAT_SHORT","getTimeFormatShort","format","timestamp","now","utc","bUTC","formatDatetime","parse","h","m","d","size","eventObject","eventName","eventParams","secureParams","onCustomEvent","eventHandler","addCustomEvent","removeCustomEvent","arg","Array","prototype","call","arguments","shift","Runtime","clone","val","stringValue","numValue","parsed","dayRegexp","RegExp","hourRegexp","getSimpleTimeList","simpleTimeList","adaptTimeValue","timeList","diff","ind","getDayLength","DAY_LENGTH","showLimitationPopup","top","getClass","InfoHelper","FieldViewControllerAbstract","settings","showTitle","displayTitle","controls","userfieldSettings","displayDateControl","displayTimeControl","displayWarning","destroy","titleWrap","updateTitle","marginBottom","useServices","serv","refreshLayout","getInnerWrap","getOuterWrap","FieldViewControllerEdit","FieldViewControllerPreview","getValues","openTitle","currentValue","currentValueIndex","onAfterMenuOpen","zIndex","disabled","curInd","onClick","onFocus","onBlur","onKeyup","blur","showPopup","_this","delimiter","callback","popupMenu","labelRaw","browser","IsFirefox","setMinWidth","setMaxWidth","menuContainer","scrollTop","selectinput","realValue","Main","Resourcebooking","getLiveField","liveFieldController","getPreviewField"],"mappings":";;;;;;CAEO,MAAMA,mBAAN,CACP;GACCC,WAAW,CAACC,MAAD,EACX;KACC,IAAIC,GAAG,CAACC,MAAJ,KAAeJ,mBAAnB,EACA;OACC,MAAM,IAAIK,SAAJ,CAAc,8CAAd,CAAN;;;KAGD,KAAKC,IAAL,GAAY,IAAZ;KACA,KAAKC,UAAL,GAAkB;OACjBC,IAAI,EAAEN,MAAM,CAACO,aAAP,IAAwB,gCADb;OAEjBC,SAAS,EAAE,sCAFM;OAGjBC,KAAK,EAAE,sCAHU;OAIjBC,KAAK,EAAE;MAJR;KAOA,KAAKC,GAAL,GAAW;OACVC,SAAS,EAAEZ,MAAM,CAACY,SADR;OAEVN,IAAI,EAAE,IAFI;OAGVO,QAAQ,EAAE,IAHA;OAIVL,SAAS,EAAE,IAJD;OAKVM,SAAS,EAAE;MALZ;KAOA,KAAKC,IAAL,GAAYf,MAAM,CAACe,IAAnB;KACA,KAAKC,KAAL,GAAa,KAAb;;;GAGDC,WAAW,GACX;KACC,OAAO,KAAKF,IAAL,CAAUG,IAAV,KAAmB,GAA1B;;;GAGDC,OAAO,GACP;KACC,OAAO,KAAKH,KAAZ;;;GAGDI,OAAO,GACP;KACC,KAAKT,GAAL,CAASL,IAAT,GAAgB,KAAKK,GAAL,CAASC,SAAT,CAAmBS,WAAnB,CAA+BC,aAAG,CAACC,MAAJ,CAAW,KAAX,EAAkB;OAACC,KAAK,EAAG;SAAEC,SAAS,EAAG,KAAKpB,UAAL,CAAgBC;;MAAzD,CAA/B,CAAhB;KAEA,KAAKK,GAAL,CAASE,QAAT,GAAoB,KAAKF,GAAL,CAASL,IAAT,CAAce,WAAd,CAA0BK,aAAG,CAACC,MAA9B,cAAqC,4CAArC,GAApB;;KAEA,IAAI,KAAKV,WAAL,EAAJ,EACA;OACC,KAAKC,IAAL,CAAU;SAACU,SAAS,EAAE;QAAtB;;;;GAIFC,OAAO,CAACd,IAAD,EACP;KACC,KAAKe,YAAL,CAAkBf,IAAlB;KACA,KAAKA,IAAL,GAAYA,IAAZ;;KAEA,IAAI,KAAKgB,aAAL,EAAJ,EACA;OACC,IAAI,KAAKd,WAAL,EAAJ,EACA;SACC,KAAKC,IAAL,CAAU;WAACU,SAAS,EAAE;UAAtB;QAFD,MAKA;SACC,KAAKI,IAAL,CAAU;WAACJ,SAAS,EAAE;UAAtB;;;;KAGF,KAAKb,IAAL,GAAYA,IAAZ;;;GAGDgB,aAAa,GACb;KACC,OAAO,IAAP;;;GAGDD,YAAY,CAACf,IAAD,EACZ;KACC,IAAI,KAAKA,IAAL,CAAUkB,KAAV,KAAoBlB,IAAI,CAACkB,KAA7B,EACA;OACCX,aAAG,CAACY,MAAJ,CAAW,KAAKvB,GAAL,CAASG,SAApB,EAA+B;SAACqB,IAAI,EAAEpB,IAAI,CAACkB;QAA3C;;;;GAIFf,IAAI,GACJ;KACC,IAAI,KAAKP,GAAL,CAASH,SAAb,EACA;OACC,KAAKwB,IAAL;;;KAGD,KAAKrB,GAAL,CAASH,SAAT,GAAqB,KAAKG,GAAL,CAASL,IAAT,CAAce,WAAd,CAA0BC,aAAG,CAACC,MAAJ,CAAW,KAAX,EAAkB;OAACC,KAAK,EAAG;SAAEC,SAAS,EAAG,KAAKpB,UAAL,CAAgBG;;MAAzD,CAA1B,CAArB;;KAEA,IAAI,KAAKO,IAAL,CAAUkB,KAAV,IAAmB,KAAKA,KAA5B,EACA;OACC,KAAKtB,GAAL,CAASG,SAAT,GAAqB,KAAKH,GAAL,CAASH,SAAT,CAAmBa,WAAnB,CAA+BC,aAAG,CAACC,MAAJ,CAAW,KAAX,EAAkB;SAACC,KAAK,EAAG;WAAEC,SAAS,EAAG,KAAKpB,UAAL,CAAgBI;UAAvC;SAA+C0B,IAAI,EAAE,KAAKpB,IAAL,CAAUkB,KAAV,IAAmB,KAAKA;QAA/F,CAA/B,CAArB;;;KAED,KAAKtB,GAAL,CAASyB,WAAT,GAAuB,KAAKzB,GAAL,CAASH,SAAT,CAAmBa,WAAnB,CAA+BC,aAAG,CAACC,MAAJ,CAAW,KAAX,EAAkB;OAACC,KAAK,EAAG;SAAEC,SAAS,EAAG,KAAKpB,UAAL,CAAgBK;;MAAzD,CAA/B,CAAvB;KACA,KAAK2B,cAAL;KACA,KAAKrB,KAAL,GAAa,IAAb;;;GAGDgB,IAAI,GACJ;KACCV,aAAG,CAACgB,MAAJ,CAAW,KAAK3B,GAAL,CAASH,SAApB;KACA,KAAKG,GAAL,CAASH,SAAT,GAAqB,IAArB;KACA,KAAKQ,KAAL,GAAa,KAAb;;;GAGDqB,cAAc,GACd;;GAGAE,WAAW,CAACC,YAAD,EACX;KACC,IAAI,KAAKxB,KAAL,IAAc,KAAKL,GAAL,CAASL,IAAvB,IAA+B,KAAKK,GAAL,CAASH,SAA5C,EACA;OACCc,aAAG,CAACmB,QAAJ,CAAa,KAAK9B,GAAL,CAASL,IAAtB,EAA4B,sCAA5B;OACA,KAAKoC,gBAAL,CAAsBF,YAAY,IAAIG,aAAG,CAACC,UAAJ,CAAe,mCAAf,CAAtC;;;;GAIFC,WAAW,GACX;KACC,IAAI,KAAKlC,GAAL,CAASL,IAAb,EACA;OACCgB,aAAG,CAACwB,WAAJ,CAAgB,KAAKnC,GAAL,CAASL,IAAzB,EAA+B,sCAA/B;;OACA,IAAI,KAAKK,GAAL,CAASoC,aAAb,EACA;SACCzB,aAAG,CAACgB,MAAJ,CAAW,KAAK3B,GAAL,CAASoC,aAApB;;;;;GAKHL,gBAAgB,CAACF,YAAD,EAChB;KACC,IAAI,KAAK7B,GAAL,CAASoC,aAAb,EACA;OACCzB,aAAG,CAACgB,MAAJ,CAAW,KAAK3B,GAAL,CAASoC,aAApB;;;KAED,KAAKpC,GAAL,CAASoC,aAAT,GAAyB,KAAKpC,GAAL,CAASH,SAAT,CAAmBa,WAAnB,CAA+BC,aAAG,CAACC,MAAJ,CAAW,MAAX,EAAmB;OAACC,KAAK,EAAG;SAAEC,SAAS,EAAG;QAAvB;OAAqEU,IAAI,EAAEK;MAA9F,CAA/B,CAAzB;;;CAzIF;;CCDO,MAAMQ,kBAAN,CACP;GACCjD,WAAW,CAACC,MAAD,EACX;KACC,KAAKiD,EAAL,GAAU,8BAA8BC,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgB,MAA3B,CAAxC;KACA,KAAKzC,GAAL,GAAW;OACVL,IAAI,EAAEN,MAAM,CAACM;MADd;KAGA,KAAK+C,SAAL,GAAiBrD,MAAM,CAACqD,SAAxB;KACA,KAAKC,gBAAL,GAAwBX,aAAG,CAACC,UAAJ,CAAe,qBAAf,CAAxB;KACA,KAAKW,WAAL,CAAiBvD,MAAjB;;;GAGDwD,KAAK,GACL;KACC,KAAK7C,GAAL,CAAS8C,MAAT,GAAkB,KAAK9C,GAAL,CAASL,IAAT,CAAce,WAAd,CAA0BC,aAAG,CAACC,MAAJ,CAAW,KAAX,EAAkB;OAC7DmC,KAAK,EAAE;SACNjC,SAAS,EAAE;QAFiD;OAI7DkC,MAAM,EAAE;SAACC,KAAK,EAAE,KAAKC,SAAL,CAAeC,IAAf,CAAoB,IAApB;;MAJ2B,CAA1B,CAAlB;KAOA,KAAKC,iBAAL,CAAuB,KAAKC,QAA5B;;;GAGDT,WAAW,CAACvD,MAAD,EACX;KACC,KAAKiE,qBAAL,GAA6BC,cAAI,CAACC,UAAL,CAAgBnE,MAAM,CAACiE,qBAAvB,IAAgDjE,MAAM,CAACiE,qBAAvD,GAA+E,IAA5G;KACA,KAAKG,MAAL,GAAcpE,MAAM,CAACoE,MAArB;KACA,KAAKJ,QAAL,GAAgB,CAACE,cAAI,CAACG,OAAL,CAAarE,MAAM,CAACgE,QAApB,CAAD,GAAiC,CAAChE,MAAM,CAACgE,QAAR,CAAjC,GAAqDhE,MAAM,CAACgE,QAA5E;KACA,KAAKM,QAAL,GAAgBtE,MAAM,CAACsE,QAAvB;;;GAGDT,SAAS,GACT;KACC,IAAI,KAAKU,YAAL,EAAJ,EACA;OACC,OAAO,KAAKC,UAAL,EAAP;;;KAGD,IAAIC,SAAS,GAAG,EAAhB;KACA,KAAKL,MAAL,CAAYM,OAAZ,CAAoB,UAASC,IAAT,EACpB;OACC,IAAIlD,SAAS,GAAG,oBAAhB;;OACA,IAAIyC,cAAI,CAACG,OAAL,CAAa,KAAKL,QAAlB,KAA+B,KAAKA,QAAL,CAAcY,QAAd,CAAuBC,QAAQ,CAACF,IAAI,CAAC1B,EAAN,CAA/B,CAAnC,EACA;SACCxB,SAAS,IAAI,qBAAb;;;OAGDgD,SAAS,CAACK,IAAV,CAAe;SACd7B,EAAE,EAAE0B,IAAI,CAAC1B,EADK;SAEdxB,SAAS,EAAEA,SAFG;SAGdU,IAAI,EAAE4C,cAAI,CAACC,MAAL,CAAYL,IAAI,CAAClE,KAAjB,CAHQ;SAIdwE,OAAO,EAAE,KAAKC,aAAL,CAAmBpB,IAAnB,CAAwB,IAAxB;QAJV;MARD,EAcG,IAdH;;KAgBA,IAAI,KAAKQ,QAAL,IAAiBG,SAAS,CAACU,MAAV,IAAoB,CAAzC,EACA;OACC,KAAKb,QAAL,GAAgB,KAAhB;;;KAGD,IAAI,KAAKA,QAAT,EACA;OACCG,SAAS,CAACK,IAAV,CAAe;SACd7B,EAAE,EAAE,YADU;SAEdd,IAAI,EAAE,KAAKmB,gBAFG;SAGd2B,OAAO,EAAE,KAAKG,kBAAL,CAAwBtB,IAAxB,CAA6B,IAA7B;QAHV;;;KAOD,KAAKuB,KAAL,GAAaC,sBAAW,CAAC/D,MAAZ,CACZ,KAAK0B,EADO,EAEZ,KAAKtC,GAAL,CAAS8C,MAFG,EAGZgB,SAHY,EAIZ;OACChD,SAAS,EAAE,iCAAiC,KAAK6C,QAAL,GAAgB,+BAAhB,GAAkD,EAAnF,CADZ;OAECiB,UAAU,EAAG,IAFd;OAGCC,QAAQ,EAAG,CAAC,KAAKlB,QAHlB;OAICmB,SAAS,EAAE,CAJZ;OAKCC,UAAU,EAAE,CALb;OAMCC,SAAS,EAAE;MAVA,CAAb;KAcA,KAAKN,KAAL,CAAWnE,IAAX,CAAgB,IAAhB;KACA,KAAK0E,cAAL,GAAsB,KAAKP,KAAL,CAAWQ,WAAX,CAAuBD,cAA7C;KACA,KAAKA,cAAL,CAAoBE,KAApB,CAA0BC,KAA1B,GAAkClB,QAAQ,CAAC,KAAKlE,GAAL,CAAS8C,MAAT,CAAgBuC,WAAjB,CAAR,GAAwC,IAA1E;;KAEA,IAAI,KAAK1B,QAAT,EACA;OACC,KAAKe,KAAL,CAAWZ,SAAX,CAAqBC,OAArB,CAA6B,UAASuB,QAAT,EAC7B;SACC,IAAIC,OAAJ;;SACA,IAAID,QAAQ,CAAChD,EAAT,KAAgB,YAApB,EACA;WACC,KAAKkD,gBAAL,GAAwB,CAAC,KAAK/B,MAAL,CAAYgC,IAAZ,CAAiB,UAASC,KAAT,EAAe;aACxD,OAAO,CAAC,KAAKrC,QAAL,CAAcoC,IAAd,CAAmB,UAASE,MAAT,EAAgB;eAAC,OAAOA,MAAM,KAAKD,KAAK,CAACpD,EAAxB;cAApC,CAAR;YADwB,EAEvB,IAFuB,CAAzB;WAIAgD,QAAQ,CAACM,MAAT,CAAgB5B,IAAhB,CAAqBlD,SAArB,GAAiC,8CAAjC;WACAwE,QAAQ,CAACM,MAAT,CAAgB5B,IAAhB,CAAqB6B,SAArB,GAAiC,wCAChC,wCADgC,GAEhC,yGAFgC,IAE6E,KAAKL,gBAAL,GAAwB,mBAAxB,GAA8C,EAF3H,IAEiI,OAFjI,GAE2IF,QAAQ,CAAChD,EAFpJ,GAEyJ,IAFzJ,GAGhC,2CAHgC,GAGcgD,QAAQ,CAAChD,EAHvB,GAG4B,IAH5B,GAGmCgD,QAAQ,CAAC9D,IAH5C,GAGmD,UAHnD,GAIhC,QAJgC,GAKhC,QALD;UAPD,MAeA;WACC+D,OAAO,GAAG,KAAKlC,QAAL,CAAcoC,IAAd,CAAmB,UAASE,MAAT,EAAgB;aAAC,OAAOA,MAAM,KAAKL,QAAQ,CAAChD,EAA3B;YAApC,CAAV;WAEAgD,QAAQ,CAACM,MAAT,CAAgB5B,IAAhB,CAAqBlD,SAArB,GAAiC,iBAAjC;WACAwE,QAAQ,CAACM,MAAT,CAAgB5B,IAAhB,CAAqB6B,SAArB,GAAiC,wCAChC,wCADgC,GAEhC,kEAFgC,IAEsCN,OAAO,GAAG,mBAAH,GAAyB,EAFtE,IAE4E,OAF5E,GAEsFD,QAAQ,CAAChD,EAF/F,GAEoG,IAFpG,GAGhC,2CAHgC,GAGcgD,QAAQ,CAAChD,EAHvB,GAG4B,IAH5B,GAGmCgD,QAAQ,CAAC9D,IAH5C,GAGmD,UAHnD,GAIhC,QAJgC,GAKhC,QALD;;QAtBF,EA6BG,IA7BH;OA+BAsE,eAAK,CAACC,MAAN,CAAaC,QAAb,EAAuB,OAAvB,EAAgC,KAAKC,WAAL,CAAiB9C,IAAjB,CAAsB,IAAtB,CAAhC;OACA+C,UAAU,CAAC,YAAU;SACpBJ,eAAK,CAAC3C,IAAN,CAAW6C,QAAX,EAAqB,OAArB,EAA8B,KAAKC,WAAL,CAAiB9C,IAAjB,CAAsB,IAAtB,CAA9B;QADU,CAETA,IAFS,CAEJ,IAFI,CAAD,EAEI,EAFJ,CAAV;;;;GAMFU,UAAU,GACV;KACC,IAAI,KAAKD,YAAL,EAAJ,EACA;OACC,KAAKc,KAAL,CAAWyB,KAAX;;OACA,IAAI,KAAKxC,QAAT,EACA;SACCmC,eAAK,CAACC,MAAN,CAAaC,QAAb,EAAuB,OAAvB,EAAgC,KAAKC,WAAL,CAAiB9C,IAAjB,CAAsB,IAAtB,CAAhC;;;;;GAKHS,YAAY,GACZ;KACC,OAAO,KAAKc,KAAL,IAAc,KAAKA,KAAL,CAAWQ,WAAzB,IACN,KAAKR,KAAL,CAAWQ,WAAX,CAAuB1E,OADjB,IAC4B,KAAKkE,KAAL,CAAWQ,WAAX,CAAuB1E,OAAvB,EAD5B,IAEN,KAAKkE,KAAL,CAAWQ,WAAX,CAAuBD,cAFjB,IAGNtE,aAAG,CAACH,OAAJ,CAAY,KAAKkE,KAAL,CAAWQ,WAAX,CAAuBD,cAAnC,CAHD;;;GAMDV,aAAa,CAAC6B,CAAD,EAAId,QAAJ,EACb;KACC,IACCe,iBADD;SAEC9G,MAAM,GAAG6G,CAAC,CAAC7G,MAAF,IAAY6G,CAAC,CAACE,UAFxB;SAGCC,UAHD;SAGaC,QAHb;;KAMA,IAAI,KAAK7C,QAAT,EACA;OACC4C,UAAU,GAAG,KAAK9C,MAAL,CAAYgC,IAAZ,CAAiB,UAASC,KAAT,EAAe;SAAC,OAAOA,KAAK,CAACpD,EAAN,IAAYgD,QAAQ,CAAChD,EAA5B;QAAjC,CAAb;OACAkE,QAAQ,GAAGlB,QAAQ,CAACM,MAAT,CAAgB5B,IAAhB,CAAqByC,aAArB,CAAmC,oCAAnC,CAAX;;OAEA,IAAIF,UAAU,IAAIhH,MAAd,KAAyBoB,aAAG,CAAC+F,QAAJ,CAAanH,MAAb,EAAqB,iBAArB,KAA2CoB,aAAG,CAAC+F,QAAJ,CAAanH,MAAb,EAAqB,mCAArB,CAA3C,IAAwGoB,aAAG,CAAC+F,QAAJ,CAAanH,MAAb,EAAqB,uBAArB,CAAjI,CAAJ,EACA;SACC,IAAI,CAACoB,aAAG,CAAC+F,QAAJ,CAAanH,MAAb,EAAqB,mCAArB,CAAL,EACA;WACCiH,QAAQ,CAACjB,OAAT,GAAmB,CAACiB,QAAQ,CAACjB,OAA7B;;;SAGD,IAAIiB,QAAQ,CAACjB,OAAb,EACA;WACC,KAAKoB,UAAL,CAAgBJ,UAAhB;UAFD,MAKA;WACC,KAAKK,YAAL,CAAkBL,UAAlB;WACAF,iBAAiB,GAAG,KAAKpB,cAAL,CAAoBwB,aAApB,CAAkC,yCAAlC,CAApB;WACA,KAAKjB,gBAAL,GAAwB,KAAxB;;WACA,IAAIa,iBAAJ,EACA;aACCA,iBAAiB,CAACd,OAAlB,GAA4B,KAA5B;;;;SAGF,KAAKnC,iBAAL,CAAuB,KAAKC,QAA5B;SACA,KAAKwD,oBAAL;;MA3BF,MA+BA;OACC,KAAKzD,iBAAL,CAAuB,CAACkC,QAAQ,CAAChD,EAAV,CAAvB;OACA,KAAKuE,oBAAL;OACA,KAAKhD,UAAL;;;;GAIF8C,UAAU,CAACjB,KAAD,EACV;KACC,IAAI,CAAC,KAAKrC,QAAL,CAAcY,QAAd,CAAuByB,KAAK,CAACpD,EAA7B,CAAL,EACA;OACC,KAAKe,QAAL,CAAcc,IAAd,CAAmBuB,KAAK,CAACpD,EAAzB;;;;GAIFsE,YAAY,CAAClB,KAAD,EACZ;KACC,IAAIoB,KAAK,GAAG,KAAKzD,QAAL,CAAc0D,OAAd,CAAsB7C,QAAQ,CAACwB,KAAK,CAACpD,EAAP,CAA9B,CAAZ;;KACA,IAAIwE,KAAK,IAAI,CAAb,EACA;OACC,KAAKzD,QAAL,GAAgB,KAAKA,QAAL,CAAc2D,KAAd,CAAoB,CAApB,EAAuBF,KAAvB,EAA8BG,MAA9B,CAAqC,KAAK5D,QAAL,CAAc2D,KAAd,CAAoBF,KAAK,GAAG,CAA5B,CAArC,CAAhB;;;;GAIFrC,kBAAkB,CAAC2B,CAAD,EAAId,QAAJ,EAClB;KACC,IAAI/F,MAAM,GAAG6G,CAAC,CAAC7G,MAAF,IAAY6G,CAAC,CAACE,UAA3B;;KACA,IAAI/G,MAAM,KAAKoB,aAAG,CAAC+F,QAAJ,CAAanH,MAAb,EAAqB,iBAArB,KAA2CoB,aAAG,CAAC+F,QAAJ,CAAanH,MAAb,EAAqB,mCAArB,CAAhD,CAAV,EACA;OACC,IAAIiH,QAAQ,GAAGlB,QAAQ,CAACM,MAAT,CAAgB5B,IAAhB,CAAqByC,aAArB,CAAmC,oCAAnC,CAAf;;OAEA,IAAI9F,aAAG,CAAC+F,QAAJ,CAAanH,MAAb,EAAqB,iBAArB,CAAJ,EACA;SACCiH,QAAQ,CAACjB,OAAT,GAAmB,CAACiB,QAAQ,CAACjB,OAA7B;;;OAGD,IAAI2B,CAAJ;WAAOC,UAAU,GAAG,KAAKlC,cAAL,CAAoBmC,gBAApB,CAAqC,yCAArC,CAApB;OACA,KAAK5B,gBAAL,GAAwBgB,QAAQ,CAACjB,OAAjC;;OAEA,KAAK2B,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGC,UAAU,CAAC3C,MAA3B,EAAmC0C,CAAC,EAApC,EACA;SACCC,UAAU,CAACD,CAAD,CAAV,CAAc3B,OAAd,GAAwB,KAAKC,gBAA7B;;;OAED,KAAKnC,QAAL,GAAgB,EAAhB;;OACA,IAAI,KAAKmC,gBAAT,EACA;SACC,KAAK/B,MAAL,CAAYM,OAAZ,CAAoB,UAAS2B,KAAT,EAAe;WAAC,KAAKrC,QAAL,CAAcc,IAAd,CAAmBuB,KAAK,CAACpD,EAAzB;UAApC,EAAoE,IAApE;;;OAED,KAAKc,iBAAL,CAAuB,KAAKC,QAA5B;OACA,KAAKwD,oBAAL;;;;GAIFZ,WAAW,CAACG,CAAD,EACX;KACC,IAAI,KAAKxC,YAAL,MAAuB,CAAC,KAAKqB,cAAL,CAAoBoC,QAApB,CAA6BjB,CAAC,CAAC7G,MAAF,IAAY6G,CAAC,CAACE,UAA3C,CAA5B,EACA;OACC,KAAKzC,UAAL,CAAgB;SAAC5C,SAAS,EAAE;QAA5B;;;KAED,KAAK4F,oBAAL;;;GAGDS,iBAAiB,GACjB;KACC,OAAO,KAAKjE,QAAZ;;;GAGDD,iBAAiB,CAACK,MAAD,EACjB;KACC,IAAIyD,CAAJ;SACCX,UADD;SAECgB,UAAU,GAAG,EAFd;SAGCC,cAAc,GAAG,EAHlB;;KAKA,KAAKN,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGzD,MAAM,CAACe,MAAvB,EAA+B0C,CAAC,EAAhC,EACA;OACCX,UAAU,GAAG,KAAK9C,MAAL,CAAYgC,IAAZ,CAAiB,UAASC,KAAT,EAAe;SAAC,OAAOA,KAAK,CAACpD,EAAN,KAAamB,MAAM,CAACyD,CAAD,CAA1B;QAAjC,CAAb;;OACA,IAAIX,UAAJ,EACA;SACCgB,UAAU,CAACpD,IAAX,CAAgBoC,UAAU,CAACzG,KAA3B;SACA0H,cAAc,CAACrD,IAAf,CAAoBoC,UAAU,CAACjE,EAA/B;;;;KAIF,KAAKe,QAAL,GAAgBmE,cAAhB;KACA7G,aAAG,CAACY,MAAJ,CAAW,KAAKvB,GAAL,CAAS8C,MAApB,EAA4B;OAACtB,IAAI,EAAE+F,UAAU,CAAC/C,MAAX,GAAoB+C,UAAU,CAACE,IAAX,CAAgB,IAAhB,CAApB,GAA4CzF,aAAG,CAACC,UAAJ,CAAe,qCAAf;MAA/E;;;GAGD4E,oBAAoB,GACpB;KACC,IAAI,KAAKvD,qBAAT,EACA;OACC,KAAKA,qBAAL,CAA2B,KAAKgE,iBAAL,EAA3B;;;;CAvRH;;CCCO,MAAMI,YAAN,SAA2BvI,mBAA3B,CACP;GACCC,WAAW,CAACC,MAAD,EACX;KACC,MAAMA,MAAN;KAEA,KAAKI,IAAL,GAAY,cAAZ;KACA,KAAKW,IAAL,GAAYf,MAAM,CAACe,IAAP,IAAe,EAA3B;KACA,KAAKuH,QAAL,GAAgB,EAAhB;KACA,KAAKC,SAAL,GAAiB,EAAjB;KAEA,KAAKnE,MAAL,GAAc,EAAd;KACA,KAAKoE,WAAL,GAAmB,MAAnB;KACA,KAAKC,WAAL,GAAmBzI,MAAM,CAACyI,WAAP,KAAuBC,SAA1C;KACA,KAAKC,sBAAL,GAA8B3I,MAAM,CAAC2I,sBAArC;KACA,KAAKC,mBAAL,GAA2B5I,MAAM,CAAC4I,mBAAlC;KAEA,KAAKC,kBAAL,CAAwB,KAAK9H,IAA7B,EAAmCf,MAAM,CAACuI,SAA1C;;;GAGDlG,cAAc,GACd;KACC,KAAKyG,aAAL,GAAqB,KAAKC,eAAL,EAArB;KACA,KAAKC,cAAL,GAAsB,IAAIhG,kBAAJ,CAAuB;OAC5C1C,IAAI,EAAE,KAAKK,GAAL,CAASyB,WAD6B;OAE5CgC,MAAM,EAAE,KAAKkE,QAF+B;OAG5CtE,QAAQ,EAAE,KAAK8E,aAH6B;OAI5C7E,qBAAqB,EAAE,KAAKgF,aAAL,CAAmBnF,IAAnB,CAAwB,IAAxB;MAJF,CAAtB;KAMA,KAAKkF,cAAL,CAAoBxF,KAApB;;;GAGD3B,OAAO,CAACd,IAAD,EAAOwH,SAAP,EACP;KACC,KAAKzG,YAAL,CAAkBf,IAAlB;KACA,KAAKA,IAAL,GAAYA,IAAZ;KACA,KAAK8H,kBAAL,CAAwB,KAAK9H,IAA7B,EAAmCwH,SAAnC;KACA,KAAKO,aAAL,GAAqB,KAAKC,eAAL,EAArB;;KAEA,IAAI,KAAKC,cAAT,EACA;OACC,KAAKA,cAAL,CAAoBzF,WAApB,CAAgC;SAC/Ba,MAAM,EAAE,KAAKkE,QADkB;SAE/BtE,QAAQ,EAAE,KAAK8E;QAFhB;;;KAMD,IAAI,KAAK/G,aAAL,EAAJ,EACA;OACC,IAAI,KAAKd,WAAL,EAAJ,EACA;SACC,KAAKC,IAAL,CAAU;WAACU,SAAS,EAAE;UAAtB;QAFD,MAKA;SACC,KAAKI,IAAL,CAAU;WAACJ,SAAS,EAAE;UAAtB;;;;;GAKHiH,kBAAkB,CAAC9H,IAAD,EAAOwH,SAAP,EAClB;KACC,IAAIrE,cAAI,CAACgF,aAAL,CAAmBX,SAAnB,CAAJ,EACA;OACC,KAAK,IAAItF,EAAT,IAAesF,SAAf,EACA;SACC,IAAIA,SAAS,CAACY,cAAV,CAAyBlG,EAAzB,CAAJ,EACA;WACC,KAAKsF,SAAL,CAAetF,EAAf,IAAqBsF,SAAS,CAACtF,EAAD,CAA9B;;;;;KAKH,KAAKuF,WAAL,GAAmB,KAAKzH,IAAL,CAAUyH,WAAV,KAA0B,MAA1B,GAAmC,MAAnC,GAA4C,MAA/D;KACA,IAAIY,SAAS,GAAG,EAAhB;KACA,KAAKd,QAAL,GAAgB,EAAhB;;KACA,IAAI,KAAKvH,IAAL,CAAUsF,KAAd,EACA;OACC,IAAIgD,YAAY,GAAGnF,cAAI,CAACG,OAAL,CAAa,KAAKtD,IAAL,CAAUsF,KAAvB,IAAgC,KAAKtF,IAAL,CAAUsF,KAA1C,GAAkD,KAAKtF,IAAL,CAAUsF,KAAV,CAAgBiD,KAAhB,CAAsB,GAAtB,CAArE;OACAD,YAAY,CAAC3E,OAAb,CAAqB,UAASzB,EAAT,EACrB;SACCA,EAAE,GAAG4B,QAAQ,CAAC5B,EAAD,CAAb;;SACA,IAAIA,EAAE,GAAG,CAAT,EACA;WACCmG,SAAS,CAACtE,IAAV,CAAe7B,EAAf;;WACA,IAAI,KAAKsF,SAAL,CAAetF,EAAf,CAAJ,EACA;aACC,KAAKqF,QAAL,CAAcxD,IAAd,CAAmB;eAClB7B,EAAE,EAAEA,EADc;eAElBxC,KAAK,EAAE,KAAK8H,SAAL,CAAetF,EAAf,EAAmBsG;cAF3B;;;QARH,EAcG,IAdH;;;KAgBD,KAAKnF,MAAL,GAAcgF,SAAd;;;GAGDL,eAAe,GACf;KACC,IAAI/E,QAAQ,GAAG,IAAf;;KACA,IAAI,KAAKgF,cAAT,EACA;OACChF,QAAQ,GAAG,KAAKgF,cAAL,CAAoBf,iBAApB,EAAX;OACAjE,QAAQ,GAAIE,cAAI,CAACG,OAAL,CAAaL,QAAb,KAA0BA,QAAQ,CAACmB,MAApC,GAA8CnB,QAAQ,CAAC,CAAD,CAAtD,GAA4D,IAAvE;;;KAGD,IAAI,CAACA,QAAD,IAAa,KAAKyE,WAAlB,IACA,KAAK1H,IAAL,CAAUyH,WAAV,KAA0B,MAD1B,IAEA,KAAKF,QAFL,IAEiB,KAAKA,QAAL,CAAc,CAAd,CAFrB,EAGA;OACCtE,QAAQ,GAAG,KAAKsE,QAAL,CAAc,CAAd,EAAiBrF,EAA5B;;;KAGD,IAAI,CAACe,QAAD,IAAa,KAAK2E,sBAAtB,EACA;OACC3E,QAAQ,GAAG,KAAK2E,sBAAhB;;;KAGD,OAAO3E,QAAP;;;GAGDwF,eAAe,CAACC,MAAD,EACf;KACC,IAAI,KAAKT,cAAT,EACA;OACC,KAAKA,cAAL,CAAoBjF,iBAApB,CAAsC,CAAC0F,MAAD,CAAtC;MAFD,MAKA;OACC,KAAKd,sBAAL,GAA8B9D,QAAQ,CAAC4E,MAAD,CAAtC;;;;GAIFR,aAAa,CAACd,cAAD,EACb;KACC,IAAI,CAAC,KAAKM,WAAN,IAAqBvE,cAAI,CAACC,UAAL,CAAgB,KAAKyE,mBAArB,CAAzB,EACA;OACC,KAAKA,mBAAL,CAAyBT,cAAc,CAAC,CAAD,CAAd,IAAqB,IAA9C;;;;CAzIH;;CCDO,MAAMuB,gBAAN,SAA+B5J,mBAA/B,CACP;GACCC,WAAW,CAACC,MAAD,EACX;KACC,MAAMA,MAAN;KACA,KAAKI,IAAL,GAAY,kBAAZ;KACA,KAAKW,IAAL,GAAYf,MAAM,CAACe,IAAnB;KACA,KAAK4I,eAAL,GAAuB3J,MAAM,CAAC4J,YAA9B;KACA,KAAKjB,sBAAL,GAA8B3I,MAAM,CAAC2I,sBAArC;KACA,KAAKC,mBAAL,GAA2B5I,MAAM,CAAC4I,mBAAlC;KACA,KAAKC,kBAAL,CAAwB7I,MAAM,CAACe,IAA/B;;;GAGD8H,kBAAkB,CAAC9H,IAAD,EAClB;KACC,IAAI,CAACmD,cAAI,CAACG,OAAL,CAAatD,IAAI,CAACsF,KAAlB,CAAL,EACA;OACC,IAAI+C,SAAS,GAAG,EAAhB;;OACA,IAAIrI,IAAI,CAACsF,KAAT,EACA;SACCtF,IAAI,CAACsF,KAAL,CAAWiD,KAAX,CAAiB,GAAjB,EAAsB5E,OAAtB,CAA8B,UAASzB,EAAT,EAC9B;WACC,IAAI4B,QAAQ,CAAC5B,EAAD,CAAR,GAAe,CAAnB,EACA;aACCmG,SAAS,CAACtE,IAAV,CAAeD,QAAQ,CAAC5B,EAAD,CAAvB;;UAJF;;;OAQD,KAAKlC,IAAL,CAAUsF,KAAV,GAAkB+C,SAAlB;;;KAGD,KAAKQ,YAAL,GAAoB,EAApB;;KACA,IAAI1F,cAAI,CAACG,OAAL,CAAa,KAAKsF,eAAlB,KAAsCzF,cAAI,CAACG,OAAL,CAAa,KAAKtD,IAAL,CAAUsF,KAAvB,CAA1C,EACA;OACC,KAAKsD,eAAL,CAAqBjF,OAArB,CAA6B,UAASC,IAAT,EAC7B;SACC,IAAI,KAAK5D,IAAL,CAAUsF,KAAV,CAAgBzB,QAAhB,CAAyBC,QAAQ,CAACF,IAAI,CAAC1B,EAAN,CAAjC,CAAJ,EACA;WACC,KAAK2G,YAAL,CAAkB9E,IAAlB,CAAuBH,IAAvB;;QAJF,EAMG,IANH;;;KASD,KAAKZ,iBAAL,CAAuB,KAAKkE,iBAAL,EAAvB;;;GAGD5F,cAAc,GACd;KACC,KAAK2G,cAAL,GAAsB,IAAIhG,kBAAJ,CAAuB;OAC5C1C,IAAI,EAAE,KAAKK,GAAL,CAASyB,WAD6B;OAE5CgC,MAAM,EAAE,KAAKwF,YAF+B;OAG5C5F,QAAQ,EAAE,KAAKmE,cAH6B;OAI5C7D,QAAQ,EAAE,KAAKvD,IAAL,CAAUuD,QAAV,KAAuB,GAJW;OAK5CL,qBAAqB,EAAE,KAAK2E;MALP,CAAtB;KAOA,KAAKI,cAAL,CAAoBxF,KAApB;;;GAGD3B,OAAO,CAACd,IAAD,EACP;KACC,KAAKe,YAAL,CAAkBf,IAAlB;KACA,KAAKA,IAAL,GAAYA,IAAZ;KACA,KAAK8H,kBAAL,CAAwB,KAAK9H,IAA7B;KACA,KAAKgD,iBAAL,CAAuB,KAAKkE,iBAAL,EAAvB;;KAEA,IAAI,KAAKe,cAAT,EACA;OACC,KAAKA,cAAL,CAAoBzF,WAApB,CAAgC;SAC/Ba,MAAM,EAAE,KAAKwF,YADkB;SAE/B5F,QAAQ,EAAE,KAAKmE,cAFgB;SAG/B7D,QAAQ,EAAE,KAAKvD,IAAL,CAAUuD,QAAV,KAAuB;QAHlC;;;KAOD,IAAI,KAAKvC,aAAL,EAAJ,EACA;OACC,IAAI,KAAKd,WAAL,EAAJ,EACA;SACC,KAAKC,IAAL,CAAU;WAACU,SAAS,EAAE;UAAtB;QAFD,MAKA;SACC,KAAKI,IAAL,CAAU;WAACJ,SAAS,EAAE;UAAtB;;;;;GAKHqG,iBAAiB,GACjB;KACC,IAAIjE,QAAQ,GAAG,IAAf;;KAEA,IAAI,KAAKgF,cAAT,EACA;OACChF,QAAQ,GAAG,KAAKgF,cAAL,CAAoBf,iBAApB,EAAX;;;KAGD,IAAI,CAACjE,QAAD,IAAa,KAAK2E,sBAAtB,EACA;OACC3E,QAAQ,GAAG,CAAC,KAAK2E,sBAAN,CAAX;;;KAGD,IAAI,CAAC3E,QAAD,IAAa,KAAKjD,IAAL,CAAUyH,WAAV,KAA0B,MAA3C,EACA;OACC,IAAI,KAAKoB,YAAL,IAAqB,KAAKA,YAAL,CAAkB,CAAlB,CAAzB,EACA;SACC5F,QAAQ,GAAG,CAAC,KAAK4F,YAAL,CAAkB,CAAlB,EAAqB3G,EAAtB,CAAX;;;;KAIF,OAAOe,QAAP;;;GAGDD,iBAAiB,CAACoE,cAAD,EACjB;KACC,KAAKA,cAAL,GAAsBA,cAAtB;;;GAGD0B,mBAAmB,CAAC5G,EAAD,EACnB;KACC,IAAI,KAAK+F,cAAT,EACA;OACC,KAAKA,cAAL,CAAoBjF,iBAApB,CAAsC,CAACd,EAAD,CAAtC;MAFD,MAKA;OACC,KAAK0F,sBAAL,GAA8B9D,QAAQ,CAAC5B,EAAD,CAAtC;OACA,KAAKkF,cAAL,GAAsB,CAAClF,EAAD,CAAtB;;;;CA7HH;;CCDO,MAAM6G,eAAN,SAA8BhK,mBAA9B,CACP;GACCC,WAAW,CAACC,MAAD,EACX;KACC,MAAMA,MAAN;KACA,KAAKI,IAAL,GAAY,iBAAZ;KACA,KAAKW,IAAL,GAAYf,MAAM,CAACe,IAAnB;KACA,KAAKgJ,WAAL,GAAmB,EAAnB;KAEA,KAAKC,cAAL,GAAsB,EAAtB;;KACA,IAAI9F,cAAI,CAACG,OAAL,CAAarE,MAAM,CAAC+J,WAApB,CAAJ,EACA;OACC/J,MAAM,CAAC+J,WAAP,CAAmBrF,OAAnB,CAA4BuF,OAAD,IAAa;SACvC,IAAI/F,cAAI,CAACgG,QAAL,CAAc9J,IAAd,CAAJ,EACA;WACC6J,OAAO,CAAC7J,IAAR,GAAe6J,OAAO,CAAC7J,IAAR,CAAa+J,IAAb,EAAf;;;SAED,KAAKH,cAAL,CAAoBlF,IAApB,CAAyBmF,OAAzB;QALD;;;KAQD,KAAK7F,MAAL,GAAc,EAAd;KACA,KAAKwE,mBAAL,GAA2B1E,cAAI,CAACC,UAAL,CAAgBnE,MAAM,CAAC4I,mBAAvB,IAA8C5I,MAAM,CAAC4I,mBAArD,GAA2E,IAAtG;;KACA,IAAI5I,MAAM,CAAC8I,aAAX,EACA;OACC,KAAKsB,kBAAL,CAAwBpK,MAAM,CAAC8I,aAA/B;;;KAED,KAAKD,kBAAL,CAAwB,KAAK9H,IAA7B;;;GAGDsB,cAAc,GACd;KACC,KAAK2G,cAAL,GAAsB,IAAIhG,kBAAJ,CAAuB;OAC5C1C,IAAI,EAAE,KAAKK,GAAL,CAASyB,WAD6B;OAE5CgC,MAAM,EAAE,KAAK2F,WAF+B;OAG5C/F,QAAQ,EAAE,KAAKqG,kBAAL,EAHkC;OAI5CpG,qBAAqB,EAAE,UAAUkE,cAAV,EACvB;SACC,IAAIA,cAAc,IAAIA,cAAc,CAAC,CAAD,CAApC,EACA;WACC,KAAKiC,kBAAL,CAAwBjC,cAAc,CAAC,CAAD,CAAtC;;WACA,IAAI,KAAKS,mBAAT,EACA;aACC,KAAKA,mBAAL;;;QAPoB,CAUrB9E,IAVqB,CAUhB,IAVgB;MAJF,CAAtB;KAgBA,KAAKkF,cAAL,CAAoBxF,KAApB;;;GAGD3B,OAAO,CAACd,IAAD,EACP;KACC,KAAKe,YAAL,CAAkBf,IAAlB;KACA,KAAKA,IAAL,GAAYA,IAAZ;KAEA,KAAK8H,kBAAL,CAAwB,KAAK9H,IAA7B;;KAEA,IAAI,KAAKiI,cAAT,EACA;OACC,KAAKA,cAAL,CAAoBzF,WAApB,CAAgC;SAC/Ba,MAAM,EAAE,KAAK2F,WADkB;SAE/B/F,QAAQ,EAAE,KAAKqG,kBAAL;QAFX;;;KAMD,IAAI,KAAKtI,aAAL,EAAJ,EACA;OACC,IAAI,KAAKd,WAAL,EAAJ,EACA;SACC,KAAKC,IAAL,CAAU;WAACU,SAAS,EAAE;UAAtB;QAFD,MAKA;SACC,KAAKI,IAAL,CAAU;WAACJ,SAAS,EAAE;UAAtB;;;;;GAKHiH,kBAAkB,GAClB;KACC,KAAKyB,YAAL,GAAoB,EAApB;;KACA,IAAIpG,cAAI,CAACG,OAAL,CAAa,KAAK2F,cAAlB,CAAJ,EACA;OACC,KAAKA,cAAL,CAAoBtF,OAApB,CAA4B,UAASuF,OAAT,EAC5B;SACC,IAAI/F,cAAI,CAACgF,aAAL,CAAmBe,OAAnB,KACA/F,cAAI,CAACgG,QAAL,CAAcD,OAAO,CAAC7J,IAAtB,CADA,IAEA6J,OAAO,CAAC7J,IAAR,CAAa+J,IAAb,OAAwB,EAF5B,EAGA;WACC,KAAKG,YAAL,CAAkB,KAAKC,gBAAL,CAAsBN,OAAO,CAAC7J,IAA9B,CAAlB,IAAyD6J,OAAzD;;QANF,EAQG,IARH;;;KAWD,KAAKF,WAAL,GAAmB,EAAnB;;KACA,IAAI,KAAKhJ,IAAL,CAAUsF,KAAd,EACA;OACC,IAAIgD,YAAY,GAAGnF,cAAI,CAACG,OAAL,CAAa,KAAKtD,IAAL,CAAUsF,KAAvB,IAAgC,KAAKtF,IAAL,CAAUsF,KAA1C,GAAkD,KAAKtF,IAAL,CAAUsF,KAAV,CAAgBiD,KAAhB,CAAsB,GAAtB,CAArE;OACAD,YAAY,CAAC3E,OAAb,CAAqB,UAASzB,EAAT,EACrB;SACC,IAAIgH,OAAO,GAAG,KAAKK,YAAL,CAAkB,KAAKC,gBAAL,CAAsBtH,EAAtB,CAAlB,CAAd;;SACA,IAAIiB,cAAI,CAACgF,aAAL,CAAmBe,OAAnB,KACA/F,cAAI,CAACgG,QAAL,CAAcD,OAAO,CAAC7J,IAAtB,CADA,IAEA6J,OAAO,CAAC7J,IAAR,CAAa+J,IAAb,OAAwB,EAF5B,EAGA;WACC,KAAKJ,WAAL,CAAiBjF,IAAjB,CAAsB;aACrB7B,EAAE,EAAE,KAAKsH,gBAAL,CAAsBN,OAAO,CAAC7J,IAA9B,CADiB;aAErBK,KAAK,EAAEwJ,OAAO,CAAC7J,IAAR,GAAe,KAAf,GAAuBoK,cAAW,CAACC,gBAAZ,CAA6BR,OAAO,CAACS,QAArC;YAF/B;;QAPF,EAYG,IAZH;;;;GAgBFN,kBAAkB,CAACO,WAAD,EAClB;KACC,KAAKC,eAAL,GAAuBD,WAAvB;;;GAGDN,kBAAkB,CAACQ,OAAD,EAClB;KACC,OAAOA,OAAO,KAAK,IAAZ,GAAoB,KAAKD,eAAL,IAAwB,IAA5C,GAAqD,KAAKN,YAAL,CAAkB,KAAKC,gBAAL,CAAsB,KAAKK,eAA3B,CAAlB,KAAkE,IAA9H;;;GAGDL,gBAAgB,CAACO,GAAD,EAChB;KACC,OAAON,cAAW,CAACO,QAAZ,CAAqBD,GAArB,CAAP;;;CA7HF;;CCFO,MAAME,gBAAN,SAA+BlL,mBAA/B,CACP;GACCC,WAAW,CAACC,MAAD,EACX;KACC,MAAMA,MAAN;KACA,KAAKI,IAAL,GAAY,kBAAZ;KACA,KAAKW,IAAL,GAAYf,MAAM,CAACe,IAAnB;KACA,KAAKkK,YAAL,GAAoBT,cAAW,CAACU,eAAZ,CAA4BlL,MAAM,CAACmL,OAAnC,CAApB;KACA,KAAKvC,mBAAL,GAA2B5I,MAAM,CAAC4I,mBAAlC;KACA,KAAKwC,YAAL,GAAoBpL,MAAM,CAACoL,YAAP,IAAuB,KAAKrK,IAAL,CAAUqK,YAArD;KACA,KAAKvC,kBAAL,CAAwB7I,MAAM,CAACe,IAA/B;;;GAGD8H,kBAAkB,GAClB;KACC,KAAKwC,aAAL,GAAqB,EAArB;;KACA,IAAInH,cAAI,CAACG,OAAL,CAAa,KAAK4G,YAAlB,CAAJ,EACA;OACC,KAAKA,YAAL,CAAkBvG,OAAlB,CAA0B,UAASC,IAAT,EAC1B;SACC,KAAK0G,aAAL,CAAmBvG,IAAnB,CAAwB;WACvB7B,EAAE,EAAE0B,IAAI,CAAC0B,KADc;WAEvB5F,KAAK,EAAEkE,IAAI,CAAC1C;UAFb;QAFD,EAMG,IANH;;;;GAUFI,cAAc,GACd;KACC,KAAK1B,GAAL,CAAS2K,aAAT,GAAyB,KAAK3K,GAAL,CAASyB,WAAT,CAAqBf,WAArB,CAAiCC,aAAG,CAACC,MAAJ,CAAW,OAAX,EAAoB;OAC7EmC,KAAK,EAAE;SACN2C,KAAK,EAAE,KAAKtF,IAAL,CAAUqK,YAAV,IAA0B,IAD3B;SAENG,IAAI,EAAE;QAHsE;OAK7E/J,KAAK,EAAE;SAACC,SAAS,EAAE;;MALsC,CAAjC,CAAzB;KAQA,KAAK+J,eAAL,GAAuB,IAAIC,cAAJ,CAAgB;OACtCC,KAAK,EAAE,KAAK/K,GAAL,CAAS2K,aADsB;OAEtClH,MAAM,EAAE,KAAK6G,YAFyB;OAGtC5E,KAAK,EAAE,KAAKtF,IAAL,CAAUqK,YAAV,IAA0B,IAHK;OAItCO,QAAQ,EAAE,KAAK5K,IAAL,CAAU6K,WAAV,KAA0B,GAJE;OAKtCR,YAAY,EAAE,KAAKA,YALmB;OAMtCS,kBAAkB,EAAE,IANkB;OAOtCC,gBAAgB,EAAE,KAAKlD;MAPD,CAAvB;;;GAWD/G,OAAO,CAACd,IAAD,EACP;KACC,KAAKe,YAAL,CAAkBf,IAAlB;KACA,KAAKA,IAAL,GAAYA,IAAZ;KACA,KAAK8H,kBAAL,CAAwB,KAAK9H,IAA7B;;KAEA,IAAI,KAAKgB,aAAL,EAAJ,EACA;OACC,IAAI,KAAKd,WAAL,EAAJ,EACA;SACC,KAAKC,IAAL,CAAU;WAACU,SAAS,EAAE;UAAtB;;SACA,IAAI,KAAK4J,eAAT,EACA;WACC,KAAKA,eAAL,CAAqBO,QAArB,CAA8B,KAAKhL,IAAL,CAAUqK,YAAV,IAA0B,IAAxD;;QALF,MASA;SACC,KAAKpJ,IAAL,CAAU;WAACJ,SAAS,EAAE;UAAtB;;;;;GAKHoK,gBAAgB,GAChB;KACC,IAAItB,QAAQ,GAAG,IAAf;;KACA,IAAI,KAAKc,eAAT,EACA;OACCd,QAAQ,GAAGF,cAAW,CAACyB,aAAZ,CAA0B,KAAKT,eAAL,CAAqBU,QAArB,EAA1B,CAAX;MAFD,MAKA;OACCxB,QAAQ,GAAG7F,QAAQ,CAAC,KAAKuG,YAAN,CAAnB;;;KAED,OAAOV,QAAP;;;CAlFF;;;;;;;;;;;;;;;;CCDO,MAAMyB,YAAN,SAA2BrM,mBAA3B,CACP;GACCC,WAAW,CAACC,MAAD,EACX;KACC,MAAMA,MAAN;KACA,KAAKW,GAAL,GAAW;OACVC,SAAS,EAAEZ,MAAM,CAACY,SADR;OAEVN,IAAI,EAAE;MAFP;KAIA,KAAKS,IAAL,GAAYf,MAAM,CAACe,IAAP,IAAe,EAA3B;KACA,KAAK6H,mBAAL,GAA2B5I,MAAM,CAAC4I,mBAAlC;KACA,KAAKwD,mBAAL,GAA2BpM,MAAM,CAACoM,mBAAlC;KACA,KAAK3D,WAAL,GAAmBzI,MAAM,CAACyI,WAAP,KAAuBC,SAA1C;KACA,KAAK2D,gBAAL,GAAwBrM,MAAM,CAACqM,gBAA/B;KACA,KAAKtK,aAAL;KACA,KAAKuK,SAAL,GAAiB,IAAjB;;;GAGDlL,OAAO,CAACpB,MAAD,EACP;KACCA,MAAM,GAAGA,MAAM,IAAI,EAAnB;KACA,KAAKuM,YAAL,CAAkBvM,MAAM,CAACwM,kBAAzB;KACA,KAAKC,cAAL,CAAoBzM,MAAM,CAAC8I,aAA3B;KAEA,KAAKnI,GAAL,CAASL,IAAT,GAAgB,KAAKK,GAAL,CAASC,SAAT,CAAmBS,WAAnB,CAA+BK,aAAG,CAACC,MAAnC,oBAA0C,oDAA1C,GAAhB;KAEA,KAAKhB,GAAL,CAASH,SAAT,GAAqB,KAAKG,GAAL,CAASL,IAAT,CAAce,WAAd,CAA0BK,aAAG,CAACC,MAA9B,kBAAqC,0DAArC,GAArB;;KACA,IAAI,KAAKZ,IAAL,CAAUkB,KAAd,EACA;OACC,KAAKtB,GAAL,CAASG,SAAT,GAAqB,KAAKH,GAAL,CAASH,SAAT,CAAmBa,WAAnB,CAA+BC,aAAG,CAACC,MAAJ,CAAW,KAAX,EAAkB;SAACC,KAAK,EAAG;WAAEC,SAAS,EAAG;UAAvB;SAAgEU,IAAI,EAAE,KAAKpB,IAAL,CAAUkB,KAAV,GAAkB;QAA1G,CAA/B,CAArB;;;KAED,KAAKI,cAAL;KACA,KAAKrB,KAAL,GAAa,IAAb;;;GAGDa,OAAO,CAACd,IAAD,EAAOf,MAAP,EACP;KACCA,MAAM,GAAGA,MAAM,IAAI,EAAnB;KACA,KAAKuM,YAAL,CAAkBvM,MAAM,CAACwM,kBAAzB;KACA,KAAKC,cAAL,CAAoBzM,MAAM,CAAC8I,aAA3B;KAEA,KAAK/H,IAAL,GAAYA,IAAZ;KACAO,aAAG,CAACY,MAAJ,CAAW,KAAKvB,GAAL,CAASG,SAApB,EAA+B;OAACqB,IAAI,EAAE,KAAKpB,IAAL,CAAUkB,KAAV,GAAkB;MAAxD;;KAEA,IAAI,KAAKF,aAAL,EAAJ,EACA;OACCT,aAAG,CAACgB,MAAJ,CAAW,KAAK3B,GAAL,CAASyB,WAApB;OACA,KAAKC,cAAL;;;KAGD,IAAI,KAAKyD,KAAL,KAAe,MAAnB,EACA;OACC,KAAK4G,eAAL,CAAqBC,uBAArB;;;;GAIF5K,aAAa,GACb;KACC,IACC+D,KAAK,GAAG,KAAK/E,IAAL,CAAU+E,KAAV,KAAoB,MAApB,GAA6B,MAA7B,GAAsC,OAD/C;;KAEC8G,KAAK,GAAG,KAAK7L,IAAL,CAAU6L,KAAV,KAAoB,OAApB,GAA8B,OAA9B,GAAwC,MAFjD;SAGCC,gBAAgB,GAAG,KAAK/G,KAAL,KAAeA,KAAf,IAAwB,KAAK8G,KAAL,KAAeA,KAH3D;KAKA,KAAK9G,KAAL,GAAaA,KAAb;KACA,KAAK8G,KAAL,GAAaA,KAAb;KAEA,OAAOC,gBAAP;;;GAGD7K,IAAI,GACJ;KACCV,aAAG,CAACgB,MAAJ,CAAW,KAAK3B,GAAL,CAASH,SAApB;KACA,KAAKG,GAAL,CAASH,SAAT,GAAqB,IAArB;;;GAGD6B,cAAc,GACd;KACC,KAAK1B,GAAL,CAASyB,WAAT,GAAuB,KAAKzB,GAAL,CAASH,SAAT,CAAmBa,WAAnB,CAA+BK,aAAG,CAACC,MAAnC,kBAA0C,yDAA1C,GAAvB;;KAEA,IAAI,KAAKmE,KAAL,KAAe,OAAnB,EACA;OACC,KAAKnF,GAAL,CAASyB,WAAT,CAAqBX,SAArB,GAAiC,yCAAjC;OACA,KAAKqL,gBAAL,GAAwB,IAAIC,iBAAJ,CACvB;SACCzM,IAAI,EAAE,KAAKK,GAAL,CAASyB,WADhB;SAEC4K,eAAe,EAAE,KAAKA,eAAL,CAAqBlJ,IAArB,CAA0B,IAA1B,CAFlB;SAGCmJ,QAAQ,EAAE,UAAS5G,KAAT,EACV;WACC,KAAK4G,QAAL,CAAc5G,KAAd;UAFS,CAGRvC,IAHQ,CAGH,IAHG;QAJY,CAAxB;OASA,KAAKgJ,gBAAL,CAAsBtJ,KAAtB;OACA,KAAKsJ,gBAAL,CAAsBf,QAAtB,CAA+B,KAAKG,QAAL,EAA/B;MAbD,MAeK,IAAI,KAAKpG,KAAL,KAAe,MAAnB,EACL;OACC,KAAKnF,GAAL,CAASyB,WAAT,CAAqBX,SAArB,GAAiC,qCAAjC;OACA,KAAKiL,eAAL,GAAuB,IAAIQ,gBAAJ,CACtB;SACC5M,IAAI,EAAE,KAAKK,GAAL,CAASyB,WADhB;SAEC4K,eAAe,EAAE,KAAKA,eAAL,CAAqBlJ,IAArB,CAA0B,IAA1B,CAFlB;SAGCmJ,QAAQ,EAAE,KAAKA,QAAL,CAAcnJ,IAAd,CAAmB,IAAnB;QAJW,CAAvB;OAOA,KAAK4I,eAAL,CAAqBlJ,KAArB;OACA,KAAKkJ,eAAL,CAAqBX,QAArB,CAA8B,KAAKG,QAAL,EAA9B;;;;GAIFO,cAAc,CAACU,IAAD,EACd;KACC,IAAIjJ,cAAI,CAACkJ,MAAL,CAAYD,IAAZ,CAAJ,EACA;OACC,KAAKE,WAAL,GAAmBF,IAAnB;;;;GAIFZ,YAAY,CAACC,kBAAD,EACZ;KACC,IAAItI,cAAI,CAACgF,aAAL,CAAmBsD,kBAAnB,CAAJ,EACA;OACC,KAAKA,kBAAL,GAA0BA,kBAA1B;;;;GAIFc,YAAY,CAACH,IAAD,EACZ;KACC,IAAIjJ,cAAI,CAACkJ,MAAL,CAAYD,IAAZ,KAAqB,CAAC,KAAKI,YAAL,CAAkBJ,IAAlB,CAAtB,IAAiD,KAAKX,kBAA1D,EACA;OACC,IAAI,KAAKA,kBAAL,CAAwBhC,cAAW,CAACgD,UAAZ,CAAuB,IAAvB,EAA6BL,IAA7B,CAAxB,MAAgEzE,SAApE,EACA;SACC,OAAO,IAAP;;;OAGD,IAAIxE,cAAI,CAACC,UAAL,CAAgB,KAAKiI,mBAArB,CAAJ,EACA;SACC,KAAKA,mBAAL,CAAyB;WAACe,IAAI,EAAEA;UAAhC;;;;KAGF,OAAO,KAAP;;;GAGDH,eAAe,CAACG,IAAD,EACf;KACC,IAAI,KAAK1E,WAAL,IAAoB,KAAK4D,gBAA7B,EACA;OACC,OAAO,IAAP;;;KAGD,IAAInI,cAAI,CAACkJ,MAAL,CAAYD,IAAZ,KAAqB,CAAC,KAAKI,YAAL,CAAkBJ,IAAlB,CAAtB,IAAiD,KAAKX,kBAA1D,EACA;OACC,IAAIiB,OAAO,GAAGjD,cAAW,CAACgD,UAAZ,CAAuB,IAAvB,EAA6BL,IAA7B,CAAd;;OACA,IAAI,KAAKX,kBAAL,CAAwBiB,OAAxB,MAAqC/E,SAAzC,EACA;SACC,IAAIxE,cAAI,CAACC,UAAL,CAAgB,KAAKiI,mBAArB,CAAJ,EACA;WACC,KAAKA,mBAAL,CAAyB;aAACe,IAAI,EAAEA;YAAhC;;;SAED,OAAO,KAAP;QAND,MASA;SACC,OAAO,KAAKX,kBAAL,CAAwBiB,OAAxB,CAAP;;;;KAGF,OAAO,KAAP;;;GAGDF,YAAY,CAACJ,IAAD,EACZ;KACC,IAAIjJ,cAAI,CAACkJ,MAAL,CAAYD,IAAZ,CAAJ,EACA;OACC,IACCO,OAAO,GAAG,IAAIC,IAAJ,EADX;WAECC,SAAS,GAAG,IAAID,IAAJ,CAASR,IAAI,CAACU,OAAL,EAAT,CAFb;OAIAH,OAAO,CAACI,QAAR,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B;OACAF,SAAS,CAACE,QAAV,CAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,CAA5B;OAEA,OAAOF,SAAS,CAACC,OAAV,KAAsBH,OAAO,CAACG,OAAR,EAA7B;;;KAED,OAAO,KAAP;;;GAGDE,mBAAmB,GACnB;KACC,KAAKd,QAAL,CAAc,KAAKe,iBAAL,EAAd;;;GAGDA,iBAAiB,GACjB;KACC,OAAO,KAAKlI,KAAL,KAAe,OAAf,GAAyB,KAAKgH,gBAAL,CAAsBZ,QAAtB,EAAzB,GAA4D,KAAKQ,eAAL,CAAqBR,QAArB,EAAnE;;;GAGDe,QAAQ,CAACE,IAAD,EACR;KACC,IAAIjJ,cAAI,CAACC,UAAL,CAAgB,KAAKyE,mBAArB,CAAJ,EACA;OACC,IAAIqF,QAAQ,GAAGd,IAAf;;OACA,IAAI,CAACjJ,cAAI,CAACkJ,MAAL,CAAYa,QAAZ,CAAL,EACA;SACCA,QAAQ,GAAG,KAAKD,iBAAL,EAAX;;;OAED,KAAKvB,cAAL,CAAoBU,IAApB;OACA,KAAKvE,mBAAL,CAAyBuE,IAAzB,EAA+Bc,QAA/B,EAAyC,KAAKjB,eAAL,CAAqBiB,QAArB,CAAzC;;;;GAIF/B,QAAQ,GACR;KACC,IAAI,CAAC,KAAKmB,WAAV,EACA;OACC,KAAKA,WAAL,GAAmB,IAAIM,IAAJ,EAAnB;;;KAED,OAAO,KAAKN,WAAZ;;;CArNF;;CA0NA,MAAMN,iBAAN,CACA;GAGChN,WAAW,CAACC,MAAD,EACX;KACC,KAAKW,GAAL,GAAW;OACVC,SAAS,EAAEZ,MAAM,CAACM,IADR;OAEVA,IAAI,EAAE;MAFP;KAIA,KAAK+F,KAAL,GAAa,IAAb;KACA,KAAK6H,UAAL,GAAkB,IAAlB;KACA,KAAKlB,eAAL,GAAuB9I,cAAI,CAACC,UAAL,CAAgBnE,MAAM,CAACgN,eAAvB,IAA0ChN,MAAM,CAACgN,eAAjD,GAAmE,YAAU;OAAC,OAAO,IAAP;MAArG;KACA,KAAKC,QAAL,GAAgB/I,cAAI,CAACC,UAAL,CAAgBnE,MAAM,CAACiN,QAAvB,IAAmCjN,MAAM,CAACiN,QAA1C,GAAqD,YAAU,EAA/E;;;GAGDzJ,KAAK,GACL;KACC,KAAK7C,GAAL,CAASL,IAAT,GAAgB,KAAKK,GAAL,CAASC,SAAT,CAAmBS,WAAnB,CAA+BC,aAAG,CAACC,MAAJ,CAAW,KAAX,EAAkB;OAChEC,KAAK,EAAG;SAAEC,SAAS,EAAG;QAD0C;OAEhEkC,MAAM,EAAE;SAACC,KAAK,EAAE,KAAKgD,WAAL,CAAiB9C,IAAjB,CAAsB,IAAtB;;MAF8B,CAA/B,CAAhB;KAKA,KAAKnD,GAAL,CAASwN,UAAT,GAAsB,KAAKxN,GAAL,CAASL,IAAT,CAAce,WAAd,CAA0BK,aAAG,CAACC,MAA9B,kBAAqC;WAArC,GAAtB;KAGA,KAAKhB,GAAL,CAASyN,aAAT,GAAyB,KAAKzN,GAAL,CAASL,IAAT,CAAce,WAAd,CAA0BK,aAAG,CAACC,MAA9B,kBAAqC,iJAArC,GAAzB;KAEA,KAAKhB,GAAL,CAAS0N,SAAT,GAAqB,KAAK1N,GAAL,CAASL,IAAT,CAAce,WAAd,CAA0BK,aAAG,CAACC,MAA9B,kBAAqC,gGAArC,GAArB;KAEA,KAAKhB,GAAL,CAAS2N,aAAT,GAAyB,KAAK3N,GAAL,CAAS0N,SAAT,CAAmBhN,WAAnB,CAA+BK,aAAG,CAACC,MAAnC,kBAA0C,2DAA1C,GAAzB;KACA,KAAKhB,GAAL,CAAS4N,YAAT,GAAwB,KAAK5N,GAAL,CAAS0N,SAAT,CAAmBhN,WAAnB,CAA+BK,aAAG,CAACC,MAAnC,kBAA0C,0DAA1C,GAAxB;KAEA,KAAKhB,GAAL,CAAS6N,SAAT,GAAqB,KAAK7N,GAAL,CAASL,IAAT,CAAce,WAAd,CAA0BK,aAAG,CAACC,MAA9B,kBAAqC,6IAArC,GAArB;;;GAGDuK,QAAQ,GACR;KACC,OAAO,KAAK7F,KAAZ;;;GAGD0F,QAAQ,CAAC0C,SAAD,EACR;KACC,KAAKpI,KAAL,GAAaoI,SAAb;KACAnN,aAAG,CAACY,MAAJ,CAAW,KAAKvB,GAAL,CAAS2N,aAApB,EAAmC;OAACnM,IAAI,EAAEqI,cAAW,CAACgD,UAAZ,CAAuB7K,aAAG,CAACC,UAAJ,CAAe,gCAAf,CAAvB,EAAyE6L,SAAzE;MAA1C;KACAnN,aAAG,CAACY,MAAJ,CAAW,KAAKvB,GAAL,CAAS4N,YAApB,EAAkC;OAACpM,IAAI,EAAEqI,cAAW,CAACgD,UAAZ,CAAuB7K,aAAG,CAACC,UAAJ,CAAe,+BAAf,CAAvB,EAAwE6L,SAAxE;MAAzC;;KAEA,IAAI,CAAC,KAAKzB,eAAL,CAAqByB,SAArB,CAAD,IAAoC,CAACvK,cAAI,CAACkJ,MAAL,CAAYqB,SAAZ,CAAzC,EACA;OACC,KAAKxB,QAAL,CAAc,KAAd;MAFD,MAKA;OACC,KAAKA,QAAL,CAAc,KAAK5G,KAAnB;;;;GAIFO,WAAW,CAACG,CAAD,EACX;KACC,IACC0H,SADD;SAECvO,MAAM,GAAG6G,CAAC,CAAC7G,MAAF,IAAY6G,CAAC,CAACE,UAFxB;;KAIA,IAAI/G,MAAM,CAACwO,YAAP,CAAoB,2BAApB,MACFxO,MAAM,GAAGA,MAAM,CAACyO,OAAP,CAAe,6BAAf,CADP,CAAJ,EAEA;OACC,IAAIC,QAAQ,GAAG1O,MAAM,CAAC2O,YAAP,CAAoB,2BAApB,CAAf;;OACA,IAAID,QAAQ,KAAK,UAAjB,EACA;SACCH,SAAS,GAAG,KAAKvC,QAAL,EAAZ;SACAuC,SAAS,CAACK,OAAV,CAAkBL,SAAS,CAACM,OAAV,KAAsB,CAAxC;SACA,KAAKhD,QAAL,CAAc0C,SAAd;QAJD,MAMK,IAAIG,QAAQ,KAAK,MAAjB,EACL;SACCH,SAAS,GAAG,KAAKvC,QAAL,EAAZ;SACAuC,SAAS,CAACK,OAAV,CAAkBL,SAAS,CAACM,OAAV,KAAsB,CAAxC;SACA,KAAKhD,QAAL,CAAc0C,SAAd;QAJI,MAMA,IAAIG,QAAQ,KAAK,UAAjB,EACL;SACC,KAAKI,iBAAL;;;;;GAKHA,iBAAiB,GACjB;KACC,KAAKrO,GAAL,CAASwN,UAAT,CAAoB9H,KAApB,GAA4BmE,cAAW,CAACgD,UAAZ,CAAuB,IAAvB,EAA6B,KAAKtB,QAAL,GAAgB2B,OAAhB,KAA4B,IAAzD,CAA5B;;KAEA,IAAId,iBAAiB,CAACkC,2BAAlB,EAAJ,EACA;OACC,KAAKC,sBAAL;MAFD,MAKA;OACC,KAAKC,cAAL;;;;GAIFA,cAAc,GACd;KACCC,EAAE,CAACC,QAAH,CAAY;OAACC,IAAI,EAAE,KAAK3O,GAAL,CAAS0N,SAAhB;OAA2B3N,KAAK,EAAE,KAAKC,GAAL,CAASwN,UAA3C;OAAuDoB,KAAK,EAAE;MAA1E;;KACA,IAAIH,EAAE,CAACC,QAAH,CAAYG,GAAZ,GAAkBnK,KAAtB,EACA;OACCmF,cAAW,CAACiF,iBAAZ,CAA8BL,EAAE,CAACC,QAAH,CAAYG,GAAZ,GAAkBnK,KAAhD,EAAuD,cAAvD,EAAuE,KAAKqK,mBAAL,CAAyB5L,IAAzB,CAA8B,IAA9B,CAAvE;OACA0G,cAAW,CAACmF,eAAZ,CAA4BP,EAAE,CAACC,QAAH,CAAYG,GAAZ,GAAkBnK,KAA9C,EAAqD,cAArD,EAAqE,KAAKqK,mBAAL,CAAyB5L,IAAzB,CAA8B,IAA9B,CAArE;;;;GAIF4L,mBAAmB,GACnB;KACC,KAAK3D,QAAL,CAAcvB,cAAW,CAACoF,SAAZ,CAAsB,KAAKjP,GAAL,CAASwN,UAAT,CAAoB9H,KAA1C,CAAd;;;GAGiC,OAA3B4I,2BAA2B,GAClC;KACC,IAAI/K,cAAI,CAAC2L,MAAL,CAAY9C,iBAAiB,CAAC+C,2BAA9B,CAAJ,EACA;OACC/C,iBAAiB,CAAC+C,2BAAlB,GAAgD,CAAC,EAAEC,MAAM,CAACX,EAAP,IAAaA,EAAE,CAACY,EAAhB,IAAsBZ,EAAE,CAACY,EAAH,CAAMC,GAA5B,IAAmCb,EAAE,CAACY,EAAH,CAAMC,GAAN,CAAUC,UAA7C,IAA2Dd,EAAE,CAACY,EAAH,CAAMC,GAAN,CAAUC,UAAV,CAAqBC,QAAlF,CAAjD;;;KAGD,OAAOpD,iBAAiB,CAAC+C,2BAAzB;;;GAGDZ,sBAAsB,GACtB;KACC,IAAIhL,cAAI,CAAC2L,MAAL,CAAY,KAAK3B,UAAjB,CAAJ,EACA;OACC,KAAKA,UAAL,GAAkB,IAAIkB,EAAE,CAACY,EAAH,CAAMC,GAAN,CAAUC,UAAV,CAAqBC,QAAzB,CACjB;SACCb,IAAI,EAAE,KAAK3O,GAAL,CAAS0N,SADhB;SAEC+B,OAAO,EAAE,KAFV;SAGCzM,MAAM,EAAE;WACP0M,MAAM,EAAE,UAAShK,KAAT,EAAe;aACtB,KAAK1F,GAAL,CAASwN,UAAT,CAAoB9H,KAApB,GAA4BA,KAA5B;aACA,KAAKqJ,mBAAL;YAFO,CAGN5L,IAHM,CAGD,IAHC;;QALO,CAAlB;;;KAcD,KAAKoK,UAAL,CAAgB7H,KAAhB,GAAwB,KAAK1F,GAAL,CAASwN,UAAT,CAAoB9H,KAA5C;KACA,KAAK6H,UAAL,CAAgBoC,MAAhB;;;CA/IF;;CADMvD,kBAEE+C,8BAA8B;;CAoJtC,MAAM5C,gBAAN,CACA;GACCnN,WAAW,CAACC,MAAD,EACX;KACCA,MAAM,GAAGA,MAAM,IAAI,EAAnB;KACA,KAAKW,GAAL,GAAW;OACVC,SAAS,EAAEZ,MAAM,CAACM,IADR;OAEVA,IAAI,EAAE;MAFP;KAIA,KAAK+F,KAAL,GAAa,IAAb;KACA,KAAK2G,eAAL,GAAuB9I,cAAI,CAACC,UAAL,CAAgBnE,MAAM,CAACgN,eAAvB,IAA0ChN,MAAM,CAACgN,eAAjD,GAAmE,YAAU;OAAC,OAAO,IAAP;MAArG;KACA,KAAKC,QAAL,GAAgB/I,cAAI,CAACC,UAAL,CAAgBnE,MAAM,CAACiN,QAAvB,IAAmCjN,MAAM,CAACiN,QAA1C,GAAqD,YAAU,EAA/E;KACA,KAAKsD,iBAAL,GAAyB,EAAzB;KACA,KAAK5P,GAAL,CAAS6P,QAAT,GAAoB,EAApB;KACA,KAAKC,YAAL,GAAoB,EAApB;;;GAGDjN,KAAK,GACL;KACC,KAAK7C,GAAL,CAAS+P,UAAT,GAAsB,KAAK/P,GAAL,CAASC,SAAT,CAAmBS,WAAnB,CAA+BC,aAAG,CAACC,MAAJ,CAAW,MAAX,EAAmB;OACvEC,KAAK,EAAG;SAAEC,SAAS,EAAG;;MAD8B,CAA/B,CAAtB;KAIA,KAAKd,GAAL,CAASL,IAAT,GAAgB,KAAKK,GAAL,CAASC,SAAT,CAAmBS,WAAnB,CAA+BC,aAAG,CAACC,MAAJ,CAAW,KAAX,EAAkB;OAChEC,KAAK,EAAG;SAAEC,SAAS,EAAG;QAD0C;OAEhEkC,MAAM,EAAE;SAACC,KAAK,EAAE,KAAKgD,WAAL,CAAiB9C,IAAjB,CAAsB,IAAtB;;MAF8B,CAA/B,CAAhB;KAKA,KAAKnD,GAAL,CAASgQ,iBAAT,GAA6B,KAAKhQ,GAAL,CAASL,IAAT,CAAce,WAAd,CAA0BK,aAAG,CAACC,MAA9B,oBAAqC;QAArC,GAA7B;KAEA,KAAKhB,GAAL,CAASiQ,gBAAT,GAA4B,KAAKjQ,GAAL,CAASgQ,iBAAT,CAA2BtP,WAA3B,CAAuCK,aAAG,CAACC,MAA3C,oBAAkD;QAAlD,GAA5B;KAEA,KAAKhB,GAAL,CAASwN,UAAT,GAAsB,KAAKxN,GAAL,CAASL,IAAT,CAAce,WAAd,CAA0BK,aAAG,CAACC,MAA9B,oBAAqC;WAArC,GAAtB;KAGA,KAAKkP,QAAL;KACA,KAAKC,gBAAL;;;GAGDD,QAAQ,GACR;KACC,IACChJ,CADD;SAECkJ,SAAS,GAAG,KAAKC,gBAAL,EAFb;SAGC7D,IAAI,GAAG,IAAIQ,IAAJ,CAASoD,SAAS,CAAClD,OAAV,EAAT,CAHR;;KAKA,KAAKhG,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG,KAAK0I,iBAArB,EAAwC1I,CAAC,EAAzC,EACA;OACC,KAAKoJ,WAAL,CAAiB9D,IAAjB;OACAA,IAAI,CAAC2B,OAAL,CAAa3B,IAAI,CAAC4B,OAAL,KAAiB,CAA9B;;;KAGD,KAAKmC,UAAL,GAAkBrM,QAAQ,CAAC,KAAKlE,GAAL,CAASiQ,gBAAT,CAA0B5K,WAA3B,CAA1B;;;GAGDiL,WAAW,CAAC9D,IAAD,EACX;KACC,IAAIgE,QAAQ,GAAG3G,cAAW,CAACgD,UAAZ,CAAuB,OAAvB,EAAgCL,IAAI,CAACU,OAAL,KAAiB,IAAjD,CAAf;KACA,KAAK4C,YAAL,CAAkBU,QAAlB,IAA8B,IAAIxD,IAAJ,CAASR,IAAI,CAACU,OAAL,EAAT,CAA9B;KACA,KAAKlN,GAAL,CAAS6P,QAAT,CAAkBW,QAAlB,IAA8B,KAAKxQ,GAAL,CAASiQ,gBAAT,CAA0BvP,WAA1B,CAAsCC,aAAG,CAACC,MAAJ,CAAW,KAAX,EAAkB;OACrFmC,KAAK,EAAG;SACPjC,SAAS,EAAG,8CAA8C,KAAKuL,eAAL,CAAqBG,IAArB,IAA6B,EAA7B,GAAkC,+CAAhF,CADL;SAEP,6BAA8BgE;QAHsD;OAKrFC,IAAI,EAAE,iEACL,2DADK,GAEL5G,cAAW,CAACgD,UAAZ,CAAuB7K,aAAG,CAACC,UAAJ,CAAe,2BAAf,CAAvB,EAAoEuK,IAApE,CAFK,GAGL,SAHK,GAIL,wDAJK,GAKL3C,cAAW,CAACgD,UAAZ,CAAuB7K,aAAG,CAACC,UAAJ,CAAe,sCAAf,CAAvB,EAA+EuK,IAA/E,CALK,GAML,SANK,GAOL;MAZkE,CAAtC,CAA9B;;;GAgBDR,uBAAuB,GACvB;KACC,KAAK,IAAIwE,QAAT,IAAqB,KAAKxQ,GAAL,CAAS6P,QAA9B,EACA;OACC,IAAI,KAAK7P,GAAL,CAAS6P,QAAT,CAAkBrH,cAAlB,CAAiCgI,QAAjC,CAAJ,EACA;SACC,IAAI,KAAKnE,eAAL,CAAqB,KAAKyD,YAAL,CAAkBU,QAAlB,CAArB,CAAJ,EACA;WACC7P,aAAG,CAACwB,WAAJ,CAAgB,KAAKnC,GAAL,CAAS6P,QAAT,CAAkBW,QAAlB,CAAhB,EAA6C,8CAA7C;UAFD,MAKA;WACC7P,aAAG,CAACmB,QAAJ,CAAa,KAAK9B,GAAL,CAAS6P,QAAT,CAAkBW,QAAlB,CAAb,EAA0C,8CAA1C;;;;;;GAMJvK,WAAW,CAACG,CAAD,EACX;KACC,IACC0H,SADD;SAECvO,MAAM,GAAG6G,CAAC,CAAC7G,MAAF,IAAY6G,CAAC,CAACE,UAFxB;;KAIA,IAAI/G,MAAM,CAACwO,YAAP,CAAoB,2BAApB,MACFxO,MAAM,GAAGA,MAAM,CAACyO,OAAP,CAAe,6BAAf,CADP,CAAJ,EAEA;OACC,IAAIC,QAAQ,GAAG1O,MAAM,CAAC2O,YAAP,CAAoB,2BAApB,CAAf;;OACA,IAAID,QAAQ,KAAKH,SAAS,GAAGjE,cAAW,CAACoF,SAAZ,CAAsBhB,QAAtB,EAAgC,KAAhC,EAAuC,YAAvC,CAAjB,CAAZ,EACA;SACC,KAAK7C,QAAL,CAAc0C,SAAd;;;;;GAKH1C,QAAQ,CAAC0C,SAAD,EACR;KACC,IAAIvK,cAAI,CAACkJ,MAAL,CAAYqB,SAAZ,CAAJ,EACA;OACC,KAAKpI,KAAL,GAAaoI,SAAb;OACA,IAAI4C,OAAO,GAAG,KAAKC,UAAL,CAAgB7C,SAAhB,CAAd;;OACA,IAAI4C,OAAJ,EACA;SACC,KAAKE,WAAL,CAAiBF,OAAjB;;;OAED,KAAKpE,QAAL,CAAc,KAAK5G,KAAnB;;;;GAIF6F,QAAQ,GACR;KACC,OAAO,KAAK7F,KAAZ;;;GAGDiL,UAAU,CAAC7C,SAAD,EACV;KACC,IAAI0C,QAAQ,GAAG3G,cAAW,CAACgD,UAAZ,CAAuB,OAAvB,EAAgCiB,SAAS,CAACZ,OAAV,KAAsB,IAAtD,CAAf;;KACA,IAAI,KAAKlN,GAAL,CAAS6P,QAAT,CAAkBW,QAAlB,CAAJ,EACA;OACC,OAAO,KAAKxQ,GAAL,CAAS6P,QAAT,CAAkBW,QAAlB,CAAP;MAFD,MAKA;OACC,KAAKN,QAAL,CAAcpC,SAAd;;OACA,IAAI,KAAK9N,GAAL,CAAS6P,QAAT,CAAkBW,QAAlB,CAAJ,EACA;SACC,OAAO,KAAKxQ,GAAL,CAAS6P,QAAT,CAAkBW,QAAlB,CAAP;;;;KAGF,OAAO,IAAP;;;GAGDI,WAAW,CAACF,OAAD,EACX;KACC,IAAI,KAAKG,eAAT,EACA;OACClQ,aAAG,CAACwB,WAAJ,CAAgB,KAAK0O,eAArB,EAAsC,iDAAtC;;;KAED,KAAKA,eAAL,GAAuBH,OAAvB;KACA/P,aAAG,CAACmB,QAAJ,CAAa4O,OAAb,EAAsB,iDAAtB;;;GAGDL,gBAAgB,GAChB;KACC,IAAI,CAAC,KAAKS,aAAV,EACA;OACC,KAAKA,aAAL,GAAqB,IAAI9D,IAAJ,EAArB;MAFD,MAKA;OACC,KAAK8D,aAAL,CAAmB3C,OAAnB,CAA2B,KAAK2C,aAAL,CAAmB1C,OAAnB,KAA+B,KAAKwB,iBAA/D;;;KAED,OAAO,KAAKkB,aAAZ;;;GAGDX,gBAAgB,GAChB;KACC,IAAIY,SAAS,GAAG,KAAK/Q,GAAL,CAASL,IAAT,CAAce,WAAd,CAA0BK,aAAG,CAACC,MAA9B,oBAAqC;QAArC,GAAhB;KAGA,KAAKhB,GAAL,CAASgR,SAAT,GAAqBD,SAAS,CAACrQ,WAAV,CAAsBC,aAAG,CAACC,MAAJ,CAAW,MAAX,EAC1C;OACCC,KAAK,EAAG;SAACC,SAAS,EAAG;QADtB;OAECkC,MAAM,EAAE;SAACC,KAAK,EAAE,KAAKgO,oBAAL,CAA0B9N,IAA1B,CAA+B,IAA/B;;MAHyB,CAAtB,CAArB;KAKA,KAAKnD,GAAL,CAASkR,UAAT,GAAsBH,SAAS,CAACrQ,WAAV,CAAsBC,aAAG,CAACC,MAAJ,CAAW,MAAX,EAC3C;OACCC,KAAK,EAAG;SAAEC,SAAS,EAAG;QADvB;OAECkC,MAAM,EAAE;SAACC,KAAK,EAAE,KAAKkO,oBAAL,CAA0BhO,IAA1B,CAA+B,IAA/B;;MAH0B,CAAtB,CAAtB;KAMA,KAAKiO,UAAL,GAAkBlN,QAAQ,CAAC,KAAKlE,GAAL,CAASgQ,iBAAT,CAA2B3K,WAA5B,CAA1B;KACA,KAAKkL,UAAL,GAAkBrM,QAAQ,CAAC,KAAKlE,GAAL,CAASiQ,gBAAT,CAA0B5K,WAA3B,CAA1B;;KAEA,IAAI,aAAaW,QAAjB,EACA;OACCF,eAAK,CAAC3C,IAAN,CAAW,KAAKnD,GAAL,CAASgQ,iBAApB,EAAuC,OAAvC,EAAgD,KAAKqB,uBAAL,CAA6BlO,IAA7B,CAAkC,IAAlC,CAAhD;MAFD,MAKA;OACC2C,eAAK,CAAC3C,IAAN,CAAW,KAAKnD,GAAL,CAASgQ,iBAApB,EAAuC,YAAvC,EAAqD,KAAKqB,uBAAL,CAA6BlO,IAA7B,CAAkC,IAAlC,CAArD;;;KAGD,KAAKmO,mBAAL;;;GAGDH,oBAAoB,GACpB;KACC,KAAKnR,GAAL,CAASgQ,iBAAT,CAA2BuB,UAA3B,GAAwC,KAAKvR,GAAL,CAASgQ,iBAAT,CAA2BuB,UAA3B,GAAwC,GAAhF;KACA,KAAKD,mBAAL;;;GAGDL,oBAAoB,GACpB;KACC,KAAKjR,GAAL,CAASgQ,iBAAT,CAA2BuB,UAA3B,GAAwChP,IAAI,CAACiP,GAAL,CAAS,KAAKxR,GAAL,CAASgQ,iBAAT,CAA2BuB,UAA3B,GAAwC,GAAjD,EAAsD,CAAtD,CAAxC;KACA,KAAKD,mBAAL;;;GAGDD,uBAAuB,CAACjL,CAAD,EACvB;KACCA,CAAC,GAAGA,CAAC,IAAIgJ,MAAM,CAACqC,KAAhB;KACA,IAAIC,KAAK,GAAGtL,CAAC,CAACuL,MAAF,IAAYvL,CAAC,CAACwL,MAAd,IAAwBxL,CAAC,CAACyL,UAAtC;;KACA,IAAItP,IAAI,CAACuP,GAAL,CAASJ,KAAT,IAAkB,CAAtB,EACA;OACC,IAAI,CAACK,iBAAO,CAACC,KAAR,EAAL,EACA;SACCN,KAAK,GAAGA,KAAK,GAAG,CAAhB;;;OAED,KAAK1R,GAAL,CAASgQ,iBAAT,CAA2BuB,UAA3B,GAAwChP,IAAI,CAACiP,GAAL,CAAS,KAAKxR,GAAL,CAASgQ,iBAAT,CAA2BuB,UAA3B,GAAwCG,KAAjD,EAAwD,CAAxD,CAAxC;OACA,KAAKJ,mBAAL;;OAEA,IAAGlL,CAAC,CAAC6L,eAAL,EACA;SACC7L,CAAC,CAAC8L,cAAF;SACA9L,CAAC,CAAC6L,eAAF;;;OAED,OAAO,KAAP;;;;GAIFX,mBAAmB,GACnB;KACC,IAAI,KAAKF,UAAL,IAAmB,KAAKb,UAA5B,EACA;OACC,KAAKvQ,GAAL,CAASgR,SAAT,CAAmB7L,KAAnB,CAAyB1E,OAAzB,GAAmC,KAAKT,GAAL,CAASgQ,iBAAT,CAA2BuB,UAA3B,KAA0C,CAA1C,GAA8C,MAA9C,GAAuD,EAA1F,CADD;;OAGC,IAAI,KAAKhB,UAAL,GAAkB,KAAKa,UAAvB,GAAoC,CAApC,IAAyC,KAAKpR,GAAL,CAASgQ,iBAAT,CAA2BuB,UAAxE,EACA;SACC,KAAKrB,QAAL;;;;KAIF,KAAKiC,gBAAL;;;GAGDA,gBAAgB,GAChB;KACC,IAAI,CAAC,KAAKC,iBAAV,EACA;OACC,KAAKA,iBAAL,GAAyB,KAAKpS,GAAL,CAASiQ,gBAAT,CAA0BoC,UAA1B,CAAqC,CAArC,EAAwCtN,UAAxC,GAAqD,KAAK/E,GAAL,CAASiQ,gBAAT,CAA0BoC,UAA1B,CAAqC,CAArC,EAAwCtN,UAAtH;;OACA,IAAI,CAAC,KAAKqN,iBAAV,EACA;SACC,OAAOlM,UAAU,CAAC,KAAKiM,gBAAL,CAAsBhP,IAAtB,CAA2B,IAA3B,CAAD,EAAmC,GAAnC,CAAjB;;;;KAIF,IACCmP,SADD;SACYC,OADZ;SACqBtE,QADrB;SAC+BH,SAD/B;SAEC0E,iBAAiB,GAAGjQ,IAAI,CAACkQ,KAAL,CAAW,KAAKzS,GAAL,CAASgQ,iBAAT,CAA2BuB,UAA3B,GAAwC,KAAKa,iBAAxD,CAFrB;SAGCM,gBAAgB,GAAGnQ,IAAI,CAACkQ,KAAL,CAAW,CAAC,KAAKzS,GAAL,CAASgQ,iBAAT,CAA2BuB,UAA3B,GAAwC,KAAKH,UAA9C,IAA4D,KAAKgB,iBAA5E,CAHpB;;KAKA,IAAI,KAAKpS,GAAL,CAASiQ,gBAAT,CAA0BoC,UAA1B,CAAqCG,iBAArC,CAAJ,EACA;OACCvE,QAAQ,GAAG,KAAKjO,GAAL,CAASiQ,gBAAT,CAA0BoC,UAA1B,CAAqCG,iBAArC,EAAwDtE,YAAxD,CAAqE,2BAArE,CAAX;;OACA,IAAID,QAAQ,KAAKH,SAAS,GAAGjE,cAAW,CAACoF,SAAZ,CAAsBhB,QAAtB,EAAgC,KAAhC,EAAuC,YAAvC,CAAjB,CAAZ,EACA;SACCqE,SAAS,GAAGC,OAAO,GAAG1I,cAAW,CAACgD,UAAZ,CAAuB,GAAvB,EAA4BiB,SAA5B,CAAtB;;;;KAIF,IAAI,KAAK9N,GAAL,CAASiQ,gBAAT,CAA0BoC,UAA1B,CAAqCK,gBAArC,CAAJ,EACA;OACCzE,QAAQ,GAAG,KAAKjO,GAAL,CAASiQ,gBAAT,CAA0BoC,UAA1B,CAAqCK,gBAArC,EAAuDxE,YAAvD,CAAoE,2BAApE,CAAX;;OACA,IAAID,QAAQ,KAAKH,SAAS,GAAGjE,cAAW,CAACoF,SAAZ,CAAsBhB,QAAtB,EAAgC,KAAhC,EAAuC,YAAvC,CAAjB,CAAZ,EACA;SACCsE,OAAO,GAAG1I,cAAW,CAACgD,UAAZ,CAAuB,GAAvB,EAA4BiB,SAA5B,CAAV;;;;KAIF,IAAIwE,SAAS,IAAIC,OAAjB,EACA;OACC5R,aAAG,CAACY,MAAJ,CAAW,KAAKvB,GAAL,CAAS+P,UAApB,EAAgC;SAACvO,IAAI,EAAE+Q,OAAO,KAAKD,SAAZ,GAAwBA,SAAxB,GAAoCA,SAAS,GAAG,KAAZ,GAAoBC;QAA/F;;;;CA7RH;;;;;;;;;;;;;;CClXO,MAAMI,YAAN,SAA2BxT,mBAA3B,CACP;GACCC,WAAW,CAACC,MAAD,EACX;KACC,MAAMA,MAAN;KACA,KAAKW,GAAL,GAAW;OACVC,SAAS,EAAEZ,MAAM,CAACY,SADR;OAEVN,IAAI,EAAE;MAFP;KAKA,KAAKS,IAAL,GAAYf,MAAM,CAACe,IAAP,IAAe,EAA3B;KACA,KAAKgB,aAAL;KAEA,KAAKwR,QAAL,GAAgB,KAAKxS,IAAL,CAAUwS,QAAV,IAAsBvT,MAAM,CAACuT,QAA7B,IAAyC,CAAzD;;KACA,IAAIvT,MAAM,CAACuT,QAAP,KAAoB7K,SAAxB,EACA;OACC,KAAK6K,QAAL,GAAgBvT,MAAM,CAACuT,QAAvB;;;KAED,KAAKC,MAAL,GAAc,KAAKzS,IAAL,CAAUyS,MAAV,IAAoB,EAAlC;;KACA,IAAIxT,MAAM,CAACwT,MAAP,KAAkB9K,SAAtB,EACA;OACC,KAAK8K,MAAL,GAAcxT,MAAM,CAACwT,MAArB;;;KAED,KAAKC,gBAAL,GAAwB,CAAxB;KACA,KAAKxQ,EAAL,GAAU,mBAAmBC,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgB,IAA3B,CAA7B;KACA,KAAKsQ,aAAL,GAAqB,KAAKzQ,EAAL,GAAU,eAA/B;KAEA,KAAKwF,WAAL,GAAmBzI,MAAM,CAACyI,WAAP,KAAuBC,SAA1C;KACA,KAAKE,mBAAL,GAA2B5I,MAAM,CAAC4I,mBAAlC;KACA,KAAK+K,QAAL,GAAgB3T,MAAM,CAAC2T,QAAvB;KACA,KAAKC,cAAL,GAAsB5T,MAAM,CAAC4T,cAA7B;KACA,KAAKC,mBAAL,GAA2B7T,MAAM,CAAC6T,mBAAlC;KACA,KAAKC,UAAL,GAAkB,EAAlB;KACA,KAAKC,WAAL,GAAmB,EAAnB;KACA,KAAKzH,SAAL,GAAiB,IAAjB;;;GAGDvK,aAAa,GACb;KACC,IACC+D,KAAK,GAAG,KAAK/E,IAAL,CAAU+E,KAAV,KAAoB,QAApB,GAA+B,QAA/B,GAA0C,OADnD;;KAECkO,YAAY,GAAG,KAAKjT,IAAL,CAAUiT,YAAV,KAA2B,GAF3C;SAGCC,cAAc,GAAG,KAAKlT,IAAL,CAAUkT,cAAV,KAA6B,GAH/C;SAICC,KAAK,GAAGrP,QAAQ,CAAC,KAAK9D,IAAL,CAAUmT,KAAV,IAAmB,EAApB,CAJjB;SAKCrH,gBAAgB,GAAG,KAAK/G,KAAL,KAAeA,KAAf,IAAwB,KAAKkO,YAAL,KAAsBA,YAA9C,IAA8D,KAAKC,cAAL,KAAwBA,cAAtF,IAAwG,KAAKC,KAAL,KAAeA,KAL3I;KAOA,KAAKpO,KAAL,GAAaA,KAAb;KACA,KAAKkO,YAAL,GAAoBA,YAApB;KACA,KAAKC,cAAL,GAAsBA,cAAtB;KACA,KAAKC,KAAL,GAAaA,KAAb;KAEA,OAAOrH,gBAAP;;;GAGDzL,OAAO,GACP;KACC,KAAKT,GAAL,CAASL,IAAT,GAAgB,KAAKK,GAAL,CAASC,SAAT,CAAmBS,WAAnB,CAA+BK,aAAG,CAACC,MAAnC,oBAA0C,oDAA1C,GAAhB;KACA,KAAKhB,GAAL,CAASH,SAAT,GAAqB,KAAKG,GAAL,CAASL,IAAT,CAAce,WAAd,CAA0BK,aAAG,CAACC,MAA9B,sBAAqC,0DAArC,GAArB;;KACA,IAAI,KAAKZ,IAAL,CAAUkB,KAAd,EACA;OACC,KAAKtB,GAAL,CAASG,SAAT,GAAqB,KAAKH,GAAL,CAASH,SAAT,CAAmBa,WAAnB,CAA+BC,aAAG,CAACC,MAAJ,CAAW,KAAX,EAAkB;SACrEC,KAAK,EAAE;WAACC,SAAS,EAAE;UADkD;SAErEU,IAAI,EAAE,KAAKpB,IAAL,CAAUkB,KAAV,GAAkB;QAF2B,CAA/B,CAArB;;OAKA,IAAI,KAAK0R,QAAT,EACA;SACC,KAAKhT,GAAL,CAASwT,iBAAT,GAA6B,KAAKxT,GAAL,CAASG,SAAT,CAAmBO,WAAnB,CAA+BK,aAAG,CAACC,MAAnC,sBAA0C,mEAA1C,GAA7B;SACAL,aAAG,CAACY,MAAJ,CAAW,KAAKvB,GAAL,CAASwT,iBAApB,EAAuC;WAAC/C,IAAI,EAAEzO,aAAG,CAACC,UAAJ,CAAe,6BAAf,EAA8CwR,OAA9C,CAAsD,YAAtD,EAAoE,KAAKT,QAAL,GAAgB,GAAhB,GAAsB,KAAKE,mBAA/F;UAA9C;;;;KAIF,KAAKxR,cAAL;KACA,KAAK0J,QAAL,CAAc,KAAKG,QAAL,EAAd;KACA,KAAKlL,KAAL,GAAa,IAAb;;;GAGDa,OAAO,CAACd,IAAD,EAAOf,MAAP,EACP;KACCA,MAAM,GAAGA,MAAM,IAAI,EAAnB;KACA,KAAKqU,YAAL,CAAkBrU,MAAM,CAACsU,SAAzB;KACA,KAAKjH,WAAL,GAAmBrN,MAAM,CAACqN,WAAP,IAAsB,IAAIM,IAAJ,EAAzC;KACA,KAAK5M,IAAL,GAAYA,IAAZ;;KAEA,IAAI,CAAC,KAAKI,OAAL,EAAL,EACA;OACC,KAAKY,aAAL;OACA,KAAKX,OAAL;MAHD,MAMA;OACC,IAAI,KAAKT,GAAL,CAASG,SAAT,IAAsB,KAAKC,IAAL,CAAUkB,KAApC,EACA;SACCX,aAAG,CAACY,MAAJ,CAAW,KAAKvB,GAAL,CAASG,SAApB,EAA+B;WAACqB,IAAI,EAAE,KAAKpB,IAAL,CAAUkB,KAAV,GAAkB;UAAxD;;;OAGD,IAAI,KAAK0R,QAAT,EACA;SACC,IAAI,CAAC,KAAKhT,GAAL,CAASwT,iBAAV,IACA,CAAC,KAAKxT,GAAL,CAASG,SAAT,CAAmBkH,QAAnB,CAA4B,KAAKrH,GAAL,CAASwT,iBAArC,CADL,EAEA;WACC,KAAKxT,GAAL,CAASwT,iBAAT,GAA6B,KAAKxT,GAAL,CAASG,SAAT,CAAmBO,WAAnB,CAA+BK,aAAG,CAACC,MAAnC,sBAA0C,mEAA1C,GAA7B;;;SAGDL,aAAG,CAACY,MAAJ,CAAW,KAAKvB,GAAL,CAASwT,iBAApB,EAAuC;WAAC/C,IAAI,EAAEzO,aAAG,CAACC,UAAJ,CAAe,6BAAf,EAA8CwR,OAA9C,CAAsD,YAAtD,EAAoE,KAAKT,QAAL,GAAgB,GAAhB,GAAsB,KAAKE,mBAA/F;UAA9C;;;OAGD,IAAI,KAAK9R,aAAL,MAAwB/B,MAAM,CAACsU,SAA/B,IAA4CtU,MAAM,CAAC8I,aAAvD,EACA;SACCxH,aAAG,CAACgB,MAAJ,CAAW,KAAK3B,GAAL,CAASyB,WAApB;SACA,KAAKC,cAAL;;;;KAIF,KAAKkS,eAAL,CAAqBvU,MAAM,CAAC8I,aAAP,IAAwB,KAAKoD,QAAL,EAA7C;;;GAGDmI,YAAY,CAACC,SAAD,EACZ;KACC,IAAIpQ,cAAI,CAACgF,aAAL,CAAmBoL,SAAnB,CAAJ,EACA;OACC,KAAKE,kBAAL,GAA0BF,SAA1B;;;;GAIFC,eAAe,CAACE,SAAD,EACf;KACC,IAAIA,SAAS,KAAK,KAAKhM,WAAL,IAAoB,KAAK+L,kBAAL,CAAwBC,SAAxB,CAAzB,CAAb,EACA;OACC,KAAK1I,QAAL,CAAc0I,SAAd;MAFD,MAKA;OACC,KAAK1I,QAAL,CAAc,IAAd;;;;GAIF2I,gBAAgB,GAChB;KACC,IAAI,KAAK/T,GAAL,CAASG,SAAb,EACA;OACC,KAAKH,GAAL,CAASG,SAAT,CAAmBgF,KAAnB,CAAyB1E,OAAzB,GAAmC,MAAnC;;;KAGD,IAAI,CAAC,KAAKT,GAAL,CAASgU,WAAd,EACA;OACC,KAAKhU,GAAL,CAASiU,eAAT,GAA2BlT,aAAG,CAACC,MAA/B,sBAAsC,4DAAtC;OAEA,KAAKhB,GAAL,CAASgU,WAAT,GAAuB,KAAKhU,GAAL,CAASH,SAAT,CAAmBa,WAAnB,CAA+BC,aAAG,CAACC,MAAJ,CAAW,KAAX,EAAkB;SACvEC,KAAK,EAAE;WAACC,SAAS,EAAE;UADoD;SAEvEoT,QAAQ,EAAE,CACTnT,aAAG,CAACC,MADK,sBACE,4DADF,IAET,KAAKhB,GAAL,CAASiU,eAFA,EAGTtT,aAAG,CAACC,MAAJ,CAAW,MAAX,EAAmB;WAClBC,KAAK,EAAE;aAACC,SAAS,EAAE;YADD;WAElBU,IAAI,EAAEQ,aAAG,CAACC,UAAJ,CAAe,mCAAf;UAFP,CAHS;QAF2C,CAA/B,CAAvB;;;KAaD,IAAI,KAAKjC,GAAL,CAASgU,WAAb,EACA;OACCrT,aAAG,CAACY,MAAJ,CAAW,KAAKvB,GAAL,CAASiU,eAApB,EAAqC;SAACzS,IAAI,EAAEqI,cAAW,CAACgD,UAAZ,CAAuB7K,aAAG,CAACC,UAAJ,CAAe,+BAAf,CAAvB,EAAwE,KAAKyK,WAA7E;QAA5C;OACA,KAAK1M,GAAL,CAASgU,WAAT,CAAqB7O,KAArB,CAA2B1E,OAA3B,GAAqC,EAArC;OAEA,KAAK0T,gBAAL,GAAwB,IAAxB;;;;GAIFC,gBAAgB,GAChB;KACC,KAAKD,gBAAL,GAAwB,KAAxB;;KACA,IAAI,KAAKnU,GAAL,CAASG,SAAb,EACA;OACC,KAAKH,GAAL,CAASG,SAAT,CAAmBgF,KAAnB,CAAyB1E,OAAzB,GAAmC,EAAnC;;;KAED,IAAI,KAAKT,GAAL,CAASgU,WAAb,EACA;OACC,KAAKhU,GAAL,CAASgU,WAAT,CAAqB7O,KAArB,CAA2B1E,OAA3B,GAAqC,MAArC;;;;GAIFiB,cAAc,GACd;KACC,IAAI2S,SAAS,GAAG,KAAKC,YAAL,EAAhB;KACA,KAAKC,KAAL,GAAaF,SAAS,CAACE,KAAvB;;KAEA,IAAI,CAACF,SAAS,CAACG,cAAf,EACA;OACC,KAAKT,gBAAL;MAFD,MAKA;OACC,KAAKK,gBAAL;;OACA,IAAI,KAAKjP,KAAL,KAAe,QAAnB,EACA;SACC,KAAKsP,mBAAL;QAFD,MAIK,IAAI,KAAKtP,KAAL,KAAe,OAAnB,EACL;SACC,KAAKuP,kBAAL;;;;;GAKHrT,IAAI,GACJ;KACC,IAAI,KAAKrB,GAAL,CAASH,SAAb,EACA;OACC,KAAKG,GAAL,CAASH,SAAT,CAAmBsF,KAAnB,CAAyB1E,OAAzB,GAAmC,MAAnC;;;;GAIFF,IAAI,GACJ;KACC,IAAI,KAAKP,GAAL,CAASH,SAAb,EACA;OACC,KAAKG,GAAL,CAASH,SAAT,CAAmBsF,KAAnB,CAAyB1E,OAAzB,GAAmC,EAAnC;;;;GAIFiU,kBAAkB,GAClB;KACC,IAAI,KAAK1U,GAAL,CAASyB,WAAb,EACA;OACCd,aAAG,CAACgB,MAAJ,CAAW,KAAK3B,GAAL,CAASyB,WAApB;;;KAGD,KAAKzB,GAAL,CAASyB,WAAT,GAAuB,KAAKzB,GAAL,CAASH,SAAT,CAAmBa,WAAnB,CACtBC,aAAG,CAACC,MAAJ,CAAW,KAAX,EAAkB;OACjBC,KAAK,EAAE;SAACC,SAAS,EAAE;QADF;OAEjBkC,MAAM,EAAE;SAACC,KAAK,EAAE,KAAKgD,WAAL,CAAiB9C,IAAjB,CAAsB,IAAtB;;MAFjB,CADsB,CAAvB;;KAMA,IAAI,CAAC,KAAKmQ,cAAN,IAAwB,CAACzJ,cAAW,CAAC8K,UAAZ,EAA7B,EACA;OACChU,aAAG,CAACmB,QAAJ,CAAa,KAAK9B,GAAL,CAASyB,WAAtB,EAAmC,wCAAnC;MAFD,MAIK,IAAI,CAAC,KAAK6R,cAAN,IAAwBzJ,cAAW,CAAC8K,UAAZ,EAA5B,EACL;OACChU,aAAG,CAACmB,QAAJ,CAAa,KAAK9B,GAAL,CAASyB,WAAtB,EAAmC,wCAAnC;MAFI,MAIA,IAAIoI,cAAW,CAAC8K,UAAZ,EAAJ,EACL;OACChU,aAAG,CAACmB,QAAJ,CAAa,KAAK9B,GAAL,CAASyB,WAAtB,EAAmC,wCAAnC;;;KAGD,KAAKzB,GAAL,CAASgQ,iBAAT,GAA6B,KAAKhQ,GAAL,CAASyB,WAAT,CAAqBf,WAArB,CAAiCK,aAAG,CAACC,MAArC,sBAA4C,qEAA5C,GAA7B;KACA,KAAKhB,GAAL,CAASiQ,gBAAT,GAA4B,KAAKjQ,GAAL,CAASgQ,iBAAT,CAA2BtP,WAA3B,CAAuCK,aAAG,CAACC,MAA3C,sBAAkD,oEAAlD,GAA5B;KAEA,IACC4T,aADD;SAECC,eAAe,GAAG,CAFnB;SAGCC,KAAK,GAAG,EAHT;SAICC,UAAU,GAAG,CAJd;SAKClV,SALD,CA5BD;;KAoCC,KAAK0U,KAAL,CAAWxQ,OAAX,CAAmB,UAASiR,IAAT,EACnB;OACC,IAAI,CAACF,KAAK,CAACE,IAAI,CAACC,YAAN,CAAV,EACA;SACCH,KAAK,CAACE,IAAI,CAACC,YAAN,CAAL,GAA2B;WAC1BC,KAAK,EAAE;UADR;;;OAKDJ,KAAK,CAACE,IAAI,CAACC,YAAN,CAAL,CAAyBC,KAAzB,CAA+B/Q,IAA/B,CAAoC6Q,IAApC;MATD;KAYA,KAAKT,KAAL,CAAWxQ,OAAX,CAAmB,UAASiR,IAAT,EACnB;OACC,IAAI,CAACF,KAAK,CAACE,IAAI,CAACC,YAAN,CAAL,CAAyBtV,IAA9B,EACA;SACCoV,UAAU,GAAG,CAAb;SACAH,aAAa,GAAG,CAAhB;SACAE,KAAK,CAACE,IAAI,CAACC,YAAN,CAAL,CAAyBtV,IAAzB,GAAgCgB,aAAG,CAACC,MAAJ,CAAW,KAAX,EAAkB;WACjDC,KAAK,EAAE;aAACC,SAAS,EAAE;YAD8B;WAEjD2P,IAAI,EAAE,4DACHzO,aAAG,CAACC,UAAJ,CAAe,8BAA8B+S,IAAI,CAACC,YAAL,CAAkBE,WAAlB,EAA7C,CADG,GAEH;UAJ4B,CAAhC;SAOAL,KAAK,CAACE,IAAI,CAACC,YAAN,CAAL,CAAyBG,SAAzB,GAAqCN,KAAK,CAACE,IAAI,CAACC,YAAN,CAAL,CAAyBtV,IAAzB,CAA8Be,WAA9B,CAA0CK,aAAG,CAACC,MAA9C,sBAAqD,6DAArD,GAArC;;SAEA,IAAI8T,KAAK,CAACE,IAAI,CAACC,YAAN,CAAL,CAAyBC,KAAzB,CAA+B1Q,MAA/B,GAAwCqQ,eAAe,GAAGD,aAA9D,EACA;WACCA,aAAa,GAAGrS,IAAI,CAAC8S,IAAL,CAAUP,KAAK,CAACE,IAAI,CAACC,YAAN,CAAL,CAAyBC,KAAzB,CAA+B1Q,MAA/B,GAAwCqQ,eAAlD,CAAhB;;;;OAIF,IAAIE,UAAU,GAAGH,aAAb,KAA+B,CAAnC,EACA;SACC/U,SAAS,GAAGiV,KAAK,CAACE,IAAI,CAACC,YAAN,CAAL,CAAyBG,SAAzB,CAAmC1U,WAAnC,CAA+CK,aAAG,CAACC,MAAnD,wBAA0D,mEAA1D,GAAZ;;;OAGD,IAAInB,SAAS,KAAK,CAACmV,IAAI,CAACM,MAAN,IAAgB,CAAC,KAAKjC,YAA3B,CAAb,EACA;SACCxT,SAAS,CAACa,WAAV,CAAsBC,aAAG,CAACC,MAAJ,CAAW,KAAX,EAAkB;WACvCmC,KAAK,EAAE;aACN,6BAA6B,UAAUiS,IAAI,CAACM,MAAL,GAAc,MAAd,GAAuB,EAAjC,CADvB;aAEN,wBAAwBN,IAAI,CAACO,IAAL,CAAUC,QAAV,EAFlB;aAGN1U,SAAS,EAAE,6CACPkU,IAAI,CAAC3R,QAAL,GAAgB,iDAAhB,GAAoE,EAD7D,KAEP2R,IAAI,CAACM,MAAL,GAAc,8CAAd,GAA+D,EAFxD;YAJ2B;WAQvC7E,IAAI,EAAE,gEAAgE,wDAAhE,GAA2HuE,IAAI,CAACS,QAAhI,GAA2I,SAA3I,IAAwJ,KAAKnC,cAAL,GAAsB,yGAAyG0B,IAAI,CAACU,MAA9G,GAAuH,SAA7I,GAAyJ,EAAjT,IACF;UATiB,CAAtB;SAWAX,UAAU;;;OAGXD,KAAK,CAACE,IAAI,CAACC,YAAN,CAAL,CAAyBU,WAAzB,GAAuCZ,UAAvC;MA1CD,EA2CG,IA3CH;KA6CA,IAAIa,CAAJ;;KACA,KAAKA,CAAL,IAAUd,KAAV,EACA;OACC,IAAIA,KAAK,CAACtM,cAAN,CAAqBoN,CAArB,KAA2Bd,KAAK,CAACc,CAAD,CAAL,CAASD,WAAT,GAAuB,CAAtD,EACA;SACC,KAAK3V,GAAL,CAASiQ,gBAAT,CAA0BvP,WAA1B,CAAsCoU,KAAK,CAACc,CAAD,CAAL,CAASjW,IAA/C;;;;KAIF,KAAKkW,wBAAL;;;GAGDpB,mBAAmB,GACnB;KACC,IAAI,KAAKzU,GAAL,CAASyB,WAAb,EACA;OACCd,aAAG,CAACgB,MAAJ,CAAW,KAAK3B,GAAL,CAASyB,WAApB;;;KAGD,KAAKzB,GAAL,CAASyB,WAAT,GAAuB,KAAKzB,GAAL,CAASH,SAAT,CAAmBa,WAAnB,CAA+BC,aAAG,CAACC,MAAJ,CAAW,KAAX,EAAkB;OACvEC,KAAK,EAAE;SAACC,SAAS,EAAE;QADoD;OAEvEkC,MAAM,EAAE;SAACC,KAAK,EAAE,KAAKgD,WAAL,CAAiB9C,IAAjB,CAAsB,IAAtB;;MAFqC,CAA/B,CAAvB;KAKA,KAAKnD,GAAL,CAAS8V,cAAT,GAA0B,KAAK9V,GAAL,CAASyB,WAAT,CAAqBf,WAArB,CAAiCC,aAAG,CAACC,MAAJ,CAAW,KAAX,EAAkB;OAC5EC,KAAK,EAAE;SAACC,SAAS,EAAE;;MADuC,CAAjC,CAA1B;KAGA,KAAKd,GAAL,CAASwN,UAAT,GAAsB,KAAKxN,GAAL,CAAS8V,cAAT,CAAwBpV,WAAxB,CAAoCC,aAAG,CAACC,MAAJ,CAAW,OAAX,EAAoB;OAC7EmC,KAAK,EAAE;SACN6H,IAAI,EAAE,QADA;SAENlF,KAAK,EAAE;;MAHiD,CAApC,CAAtB;KAOA,KAAK1F,GAAL,CAASyN,aAAT,GAAyB,KAAKzN,GAAL,CAAS8V,cAAT,CAAwBpV,WAAxB,CAAoCC,aAAG,CAACC,MAAJ,CAAW,MAAX,EAAmB;OAC/EmC,KAAK,EAAE;SACNjC,SAAS,EAAE,4FADL;SAEN,6BAA6B;;MAH8B,CAApC,CAAzB;KAOA,KAAKd,GAAL,CAAS0N,SAAT,GAAqB,KAAK1N,GAAL,CAAS8V,cAAT,CAAwBpV,WAAxB,CAAoCC,aAAG,CAACC,MAAJ,CAAW,MAAX,EAAmB;OAC3EmC,KAAK,EAAE;SACNjC,SAAS,EAAE,2CADL;SAEN,6BAA6B;;MAH0B,CAApC,CAArB;KAMA,KAAKd,GAAL,CAAS0N,SAAT,GAAqB,KAAK1N,GAAL,CAAS0N,SAAT,CAAmBhN,WAAnB,CAA+BC,aAAG,CAACC,MAAJ,CAAW,MAAX,EAAmB;OAACC,KAAK,EAAE;SAACC,SAAS,EAAE;;MAAvC,CAA/B,CAArB;KAEA,KAAKd,GAAL,CAAS6N,SAAT,GAAqB,KAAK7N,GAAL,CAAS8V,cAAT,CAAwBpV,WAAxB,CAAoCC,aAAG,CAACC,MAAJ,CAAW,MAAX,EAAmB;OAC3EmC,KAAK,EAAE;SACNjC,SAAS,EAAE,4FADL;SAEN,6BAA6B;;MAH0B,CAApC,CAArB;KAOA,KAAKsK,QAAL,CAAc,KAAKG,QAAL,EAAd;;;GAGDH,QAAQ,CAAC1F,KAAD,EACR;KACC,IAAIsP,IAAI,GAAG,KAAKe,aAAL,CAAmBrQ,KAAnB,CAAX;;KACA,IAAIsP,IAAJ,EACA;OACC,IAAI,KAAK7P,KAAL,KAAe,QAAf,IAA2B5B,cAAI,CAACyS,SAAL,CAAe,KAAKhW,GAAL,CAAS0N,SAAxB,CAA/B,EACA;SACC/M,aAAG,CAACY,MAAJ,CAAW,KAAKvB,GAAL,CAAS0N,SAApB,EAA+B;WAAClM,IAAI,EAAE,KAAKyU,iBAAL,CAAuBjB,IAAvB;UAAtC;QAFD,MAIK,IAAI,KAAK7P,KAAL,KAAe,OAAnB,EACL;SACC,KAAKyL,WAAL,CAAiB,KAAKsF,WAAL,CAAiBlB,IAAI,CAACO,IAAtB,CAAjB;;;OAED,KAAK7P,KAAL,GAAasP,IAAI,CAACO,IAAlB;MAVD,MAaA;OACC,KAAK7P,KAAL,GAAa,IAAb;;;KAGD,IAAI,CAAC,KAAKoC,WAAN,IAAqBvE,cAAI,CAACC,UAAL,CAAgB,KAAKyE,mBAArB,CAAzB,EACA;OACC,KAAKA,mBAAL,CAAyB,KAAKvC,KAA9B;;;;GAIF6F,QAAQ,GACR;KACC,IAAI,CAAC,KAAK7F,KAAN,KAAgB,KAAKoC,WAAL,IAAoB,KAAK3C,KAAL,KAAe,QAAnD,CAAJ,EACA;OACC,KAAKO,KAAL,GAAa,KAAK6O,KAAL,CAAW,CAAX,EAAcgB,IAA3B;;;KAED,OAAO,KAAK7P,KAAZ;;;GAGDyQ,iBAAiB,GACjB;KACC,OAAO,CAAC,KAAKhC,gBAAb;;;GAGD8B,iBAAiB,CAACjB,IAAD,EACjB;KACC,OAAOA,IAAI,CAACS,QAAL,IAAiB,KAAKnC,cAAL,GAAsB,QAAQ0B,IAAI,CAACU,MAAnC,GAA4C,EAA7D,CAAP;;;GAGDK,aAAa,CAACR,IAAD,EACb;KACC,OAAOhS,cAAI,CAACG,OAAL,CAAa,KAAK6Q,KAAlB,IAA2B,KAAKA,KAAL,CAAW9O,IAAX,CAAgB,UAASuP,IAAT,EAAc;OAAC,OAAO9Q,QAAQ,CAAC8Q,IAAI,CAACO,IAAN,CAAR,KAAwBrR,QAAQ,CAACqR,IAAD,CAAvC;MAA/B,CAA3B,GAA6G,IAApH;;;GAGDtP,WAAW,CAACG,CAAD,EACX;KACC,IAAI7G,MAAM,GAAG6G,CAAC,CAAC7G,MAAF,IAAY6G,CAAC,CAACE,UAA3B;;KACA,IAAI/G,MAAM,CAACwO,YAAP,CAAoB,2BAApB,MACFxO,MAAM,GAAGA,MAAM,CAACyO,OAAP,CAAe,6BAAf,CADP,CAAJ,EAEA;OACC,IAAIoI,IAAI,GAAG7W,MAAM,CAAC2O,YAAP,CAAoB,2BAApB,CAAX;;OACA,IAAI,KAAK/I,KAAL,KAAe,QAAnB,EACA;SACC,IAAIiR,IAAI,KAAK,UAAb,EACA;WACC,KAAKhL,QAAL,CAAc,KAAKG,QAAL,KAAkB,KAAKgI,KAArC;UAFD,MAIK,IAAI6C,IAAI,KAAK,MAAb,EACL;WACC,KAAKhL,QAAL,CAAc,KAAKG,QAAL,KAAkB,KAAKgI,KAArC;UAFI,MAIA,IAAI6C,IAAI,KAAK,QAAb,EACL;WACC,KAAKC,eAAL;;QAZF,MAeK,IAAID,IAAI,KAAK,MAAb,EACL;SACC,KAAKhL,QAAL,CAAclH,QAAQ,CAAC3E,MAAM,CAAC2O,YAAP,CAAoB,sBAApB,CAAD,CAAtB;;;;;GAKHoG,YAAY,GACZ;KACC,IACCC,KAAK,GAAG,EADT;SACaS,IADb;SAECR,cAAc,GAAG,CAFlB;SAGC8B,UAHD;SAGaC,QAHb;SAGuBC,OAHvB;SAICC,MAJD;SAISC,KAJT;SAKCC,IAAI,GAAG,SALR;SAMCC,GAAG,GAAG,CANP;SAOCrB,IAAI,GAAG,KAAK3C,QAAL,GAAgB,EAPxB;;KASA,OAAO2C,IAAI,GAAG,KAAK1C,MAAL,GAAc,EAA5B,EACA;OACC,IAAI0C,IAAI,IAAI,KAAKnC,WAAL,GAAmB,EAA/B,EACA;SACCuD,IAAI,GAAG,SAAP;QAFD,MAIK,IAAIpB,IAAI,IAAI,KAAKpC,UAAL,GAAkB,EAA9B,EACL;SACCwD,IAAI,GAAG,WAAP;;;OAGDJ,QAAQ,GAAGhU,IAAI,CAACkQ,KAAL,CAAW8C,IAAI,GAAG,EAAlB,CAAX;OACAiB,OAAO,GAAIjB,IAAD,GAASgB,QAAQ,GAAG,EAA9B;OACAD,UAAU,GAAGf,IAAI,GAAG,KAAKhC,KAAzB;OACAkD,MAAM,GAAGlU,IAAI,CAACkQ,KAAL,CAAW6D,UAAU,GAAG,EAAxB,CAAT;OACAI,KAAK,GAAIJ,UAAD,GAAeG,MAAM,GAAG,EAAhC;OAEAzB,IAAI,GAAG;SACNO,IAAI,EAAEA,IADA;SAENE,QAAQ,EAAE5L,cAAW,CAACgN,UAAZ,CAAuBN,QAAvB,EAAiCC,OAAjC,CAFJ;SAGNd,MAAM,EAAE7L,cAAW,CAACgN,UAAZ,CAAuBJ,MAAvB,EAA+BC,KAA/B,CAHF;SAINzB,YAAY,EAAE0B;QAJf;;OAOA,IAAI,KAAK7O,WAAT,EACA;SACC,IAAI,CAAC8O,GAAL,EACA;WACC5B,IAAI,CAAC3R,QAAL,GAAgB,IAAhB;UAFD,MAIK,IAAId,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgB,EAA3B,KAAkC,CAAtC,EACL;WACCuS,IAAI,CAACM,MAAL,GAAc,IAAd;;QARF,MAWK,IAAG,KAAKzB,kBAAR,EACL;SACCmB,IAAI,CAACM,MAAL,GAAc,CAAC,KAAKzB,kBAAL,CAAwB0B,IAAxB,CAAf;;;OAGD,IAAI,CAACP,IAAI,CAACM,MAAV,EACA;SACCd,cAAc;;;OAGfD,KAAK,CAACpQ,IAAN,CAAW6Q,IAAX;OACAO,IAAI,IAAI,KAAKhC,KAAb;OACAqD,GAAG;;;KAGJ,OAAO;OACNrC,KAAK,EAAEA,KADD;OAENC,cAAc,EAAEA;MAFjB;;;GAMDqB,wBAAwB,GACxB;KACC,IAAI9E,SAAS,GAAG,KAAK/Q,GAAL,CAASyB,WAAT,CAAqBf,WAArB,CAAiCK,aAAG,CAACC,MAArC,wBAA4C,gEAA5C,GAAhB;KAEC,KAAKhB,GAAL,CAASgR,SAAT,GAAqBD,SAAS,CAACrQ,WAAV,CAAsBC,aAAG,CAACC,MAAJ,CAAW,MAAX,EAC3C;OACCC,KAAK,EAAG;SAACC,SAAS,EAAG;QADtB;OAECkC,MAAM,EAAE;SAACC,KAAK,EAAE,KAAKgO,oBAAL,CAA0B9N,IAA1B,CAA+B,IAA/B;;MAH0B,CAAtB,CAArB;KAKD,KAAKnD,GAAL,CAASkR,UAAT,GAAsBH,SAAS,CAACrQ,WAAV,CAAsBC,aAAG,CAACC,MAAJ,CAAW,MAAX,EAC3C;OACCC,KAAK,EAAG;SAAEC,SAAS,EAAG;QADvB;OAECkC,MAAM,EAAE;SAACC,KAAK,EAAE,KAAKkO,oBAAL,CAA0BhO,IAA1B,CAA+B,IAA/B;;MAH0B,CAAtB,CAAtB;KAMA,KAAKiO,UAAL,GAAkBlN,QAAQ,CAAC,KAAKlE,GAAL,CAASgQ,iBAAT,CAA2B3K,WAA5B,CAA1B;KACA,KAAKkL,UAAL,GAAkBrM,QAAQ,CAAC,KAAKlE,GAAL,CAASiQ,gBAAT,CAA0B5K,WAA3B,CAA1B;KAEA,IAAI,aAAaW,QAAjB,EACCF,eAAK,CAAC3C,IAAN,CAAW,KAAKnD,GAAL,CAASgQ,iBAApB,EAAuC,OAAvC,EAAgD,KAAKqB,uBAAL,CAA6BlO,IAA7B,CAAkC,IAAlC,CAAhD,EADD,KAGC2C,eAAK,CAAC3C,IAAN,CAAW,KAAKnD,GAAL,CAASgQ,iBAApB,EAAuC,YAAvC,EAAqD,KAAKqB,uBAAL,CAA6BlO,IAA7B,CAAkC,IAAlC,CAArD;KAED,KAAK2T,gBAAL;;;GAGD3F,oBAAoB,GACpB;KACC,KAAKnR,GAAL,CAASgQ,iBAAT,CAA2BuB,UAA3B,GAAwC,KAAKvR,GAAL,CAASgQ,iBAAT,CAA2BuB,UAA3B,GAAwC,GAAhF;KACA,KAAKuF,gBAAL;;;GAGD7F,oBAAoB,GACpB;KACC,KAAKjR,GAAL,CAASgQ,iBAAT,CAA2BuB,UAA3B,GAAwChP,IAAI,CAACiP,GAAL,CAAS,KAAKxR,GAAL,CAASgQ,iBAAT,CAA2BuB,UAA3B,GAAwC,GAAjD,EAAsD,CAAtD,CAAxC;KACA,KAAKuF,gBAAL;;;GAGDzF,uBAAuB,CAACjL,CAAD,EACvB;KACCA,CAAC,GAAGA,CAAC,IAAIgJ,MAAM,CAACqC,KAAhB;KACA,IAAIC,KAAK,GAAGtL,CAAC,CAACuL,MAAF,IAAYvL,CAAC,CAACwL,MAAd,IAAwBxL,CAAC,CAACyL,UAAtC;;KACA,IAAItP,IAAI,CAACuP,GAAL,CAASJ,KAAT,IAAkB,CAAtB,EACA;OACC,IAAI,CAACK,iBAAO,CAACC,KAAR,EAAL,EACA;SACCN,KAAK,GAAGA,KAAK,GAAG,CAAhB;;;OAED,KAAK1R,GAAL,CAASgQ,iBAAT,CAA2BuB,UAA3B,GAAwChP,IAAI,CAACiP,GAAL,CAAS,KAAKxR,GAAL,CAASgQ,iBAAT,CAA2BuB,UAA3B,GAAwCG,KAAjD,EAAwD,CAAxD,CAAxC;OACA,KAAKoF,gBAAL;;OACA,IAAG1Q,CAAC,CAAC6L,eAAL,EACA;SACC7L,CAAC,CAAC8L,cAAF;SACA9L,CAAC,CAAC6L,eAAF;;;OAED,OAAO,KAAP;;;;GAIF6E,gBAAgB,GAChB;KACC,IAAI,KAAK1F,UAAL,IAAmB,KAAKb,UAA5B,EACA;OACC,KAAKvQ,GAAL,CAASgR,SAAT,CAAmB7L,KAAnB,CAAyB1E,OAAzB,GAAmC,KAAKT,GAAL,CAASgQ,iBAAT,CAA2BuB,UAA3B,GAAwC,EAAxC,GAA6C,MAAhF;;OACA,IAAI,KAAKhB,UAAL,GAAkB,KAAKa,UAAvB,GAAoC,CAApC,IAAyC,KAAKpR,GAAL,CAASgQ,iBAAT,CAA2BuB,UAAxE,EACA;SACC,KAAKvR,GAAL,CAASkR,UAAT,CAAoB/L,KAApB,CAA0B1E,OAA1B,GAAoC,MAApC;QAFD,MAKA;SACC,KAAKT,GAAL,CAASkR,UAAT,CAAoB/L,KAApB,CAA0B1E,OAA1B,GAAoC,EAApC;;;;;GAKH4V,eAAe,GACf;KACC,IAAI,KAAKU,kBAAL,EAAJ,EACA;OACC,OAAO,KAAKC,gBAAL,EAAP;;;KAGD,KAAKtS,KAAL,GAAaC,sBAAW,CAAC/D,MAAZ,CACZ,KAAKmS,aADO,EAEZ,KAAK/S,GAAL,CAAS0N,SAFG,EAGZ,KAAKuJ,kBAAL,EAHY,EAIZ;OACCnW,SAAS,EAAE,oCADZ;OAECoW,KAAK,EAAE,IAFR;OAGCtS,UAAU,EAAG,IAHd;OAICC,QAAQ,EAAG,IAJZ;OAKCC,SAAS,EAAE,CALZ;OAMCC,UAAU,EAAE,EANb;OAOCC,SAAS,EAAE;MAXA,CAAb;KAeA,KAAKN,KAAL,CAAWnE,IAAX,CAAgB,IAAhB;;;GAGDyW,gBAAgB,GAChB;KACC,IAAI,KAAKD,kBAAL,EAAJ,EACA;OACC,KAAKrS,KAAL,CAAWyB,KAAX;OACAL,eAAK,CAACC,MAAN,CAAaC,QAAb,EAAuB,OAAvB,EAAgC,KAAKC,WAAL,CAAiB9C,IAAjB,CAAsB,IAAtB,CAAhC;;;;GAIF4T,kBAAkB,GAClB;KACC,OAAO,KAAKrS,KAAL,IAAc,KAAKA,KAAL,CAAWQ,WAAzB,IACN,KAAKR,KAAL,CAAWQ,WAAX,CAAuB1E,OADjB,IAC4B,KAAKkE,KAAL,CAAWQ,WAAX,CAAuB1E,OAAvB,EADnC;;;GAIDyW,kBAAkB,GAClB;KACC,IAAInT,SAAS,GAAG,EAAhB;KACA,KAAKyQ,KAAL,CAAWxQ,OAAX,CAAmB,UAASiR,IAAT,EACnB;OACC,IAAI,KAAK3B,YAAL,IAAqB2B,IAAI,CAACM,MAA9B,EACA;SACC;;;OAED,IAAIxU,SAAS,GAAG,oBAAhB;;OACA,IAAIkU,IAAI,CAACM,MAAT,EACA;SACCxU,SAAS,IAAI,mBAAb;;;OAED,IAAIkU,IAAI,CAAC3R,QAAT,EACA;SACCvC,SAAS,IAAI,qBAAb;;;OAGDgD,SAAS,CAACK,IAAV,CACC;SACCrD,SAAS,EAAEA,SADZ;SAECU,IAAI,EAAE,KAAKyU,iBAAL,CAAuBjB,IAAvB,CAFP;SAGCmC,OAAO,EAAE;WACRzR,KAAK,EAAEsP,IAAI,CAACO,IADJ;WAERD,MAAM,EAAE,CAAC,CAACN,IAAI,CAACM;UALjB;SAOChR,OAAO,EAAE,KAAKC,aAAL,CAAmBpB,IAAnB,CAAwB,IAAxB;QARX;MAhBD,EA2BG,IA3BH;KA4BA,OAAOW,SAAP;;;GAGDS,aAAa,CAAC6B,CAAD,EAAId,QAAJ,EACb;KACC,IAAIA,QAAQ,IAAIA,QAAQ,CAAC6R,OAArB,IAAgC7R,QAAQ,CAAC6R,OAAT,CAAiBzR,KAArD,EACA;OACC,IAAI,CAACJ,QAAQ,CAAC6R,OAAT,CAAiB7B,MAAtB,EACA;SACC,KAAKlK,QAAL,CAAc9F,QAAQ,CAAC6R,OAAT,CAAiBzR,KAA/B;;;;KAGF,KAAKsR,gBAAL;;;GAGDd,WAAW,CAACX,IAAD,EACX;KACC,IAAIrO,CAAJ;SAAOkQ,SAAS,GAAG,KAAKpX,GAAL,CAASiQ,gBAAT,CAA0B7I,gBAA1B,CAA2C,0CAA3C,CAAnB;;KACA,KAAKF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGkQ,SAAS,CAAC5S,MAA1B,EAAkC0C,CAAC,EAAnC,EACA;OACC,IAAIhD,QAAQ,CAACkT,SAAS,CAAClQ,CAAD,CAAT,CAAagH,YAAb,CAA0B,sBAA1B,CAAD,CAAR,KAAgEhK,QAAQ,CAACqR,IAAD,CAA5E,EACA;SACC,OAAO6B,SAAS,CAAClQ,CAAD,CAAhB;;;;KAGF,OAAO,IAAP;;;GAGD0J,WAAW,CAACyG,QAAD,EACX;KACC,IAAI9T,cAAI,CAACyS,SAAL,CAAeqB,QAAf,CAAJ,EACA;OACC,IAAI,KAAKxG,eAAT,EACA;SACClQ,aAAG,CAACwB,WAAJ,CAAgB,KAAK0O,eAArB,EAAsC,gDAAtC;;;OAED,KAAKA,eAAL,GAAuBwG,QAAvB;OACA1W,aAAG,CAACmB,QAAJ,CAAauV,QAAb,EAAuB,gDAAvB;;;;CA/rBH;;;;;;CCFO,MAAMC,cAAN,CACP;GACClY,WAAW,CAACC,MAAD,EACX;KACC,KAAKW,GAAL,GAAW;OACVC,SAAS,EAAEZ,MAAM,CAACY;MADnB;KAGA,KAAK+S,QAAL,GAAgB3T,MAAM,CAAC2T,QAAvB;KACA,KAAKE,mBAAL,GAA2B7T,MAAM,CAAC6T,mBAAlC;KACA,KAAK7S,KAAL,GAAa,KAAb;KACA,KAAKkX,KAAL,GAAa,KAAb;;;GAGD/W,OAAO,GACP;KACC,OAAO,KAAKH,KAAZ;;;GAGDwC,KAAK,GACL;KACC,KAAK7C,GAAL,CAASL,IAAT,GAAgB,KAAKK,GAAL,CAASC,SAAT,CAAmBS,WAAnB,CAA+BK,aAAG,CAACC,MAAnC,oBAA0C;QAA1C,GAAhB;KAEA,KAAKhB,GAAL,CAASH,SAAT,GAAqB,KAAKG,GAAL,CAASL,IAAT,CAAce,WAAd,CAA0BK,aAAG,CAACC,MAA9B,sBAAqC,iEAArC,GAArB;KACA,KAAKhB,GAAL,CAASG,SAAT,GAAqB,KAAKH,GAAL,CAASH,SAAT,CAAmBa,WAAnB,CAA+BC,aAAG,CAACC,MAAJ,CAAW,MAAX,EAAmB;OAACC,KAAK,EAAG;SAAEC,SAAS,EAAG;QAAvB;OAAsEU,IAAI,EAAEQ,aAAG,CAACC,UAAJ,CAAe,+BAAf;MAA/F,CAA/B,CAArB;KACA,KAAKjC,GAAL,CAASwX,UAAT,GAAsB,KAAKxX,GAAL,CAASH,SAAT,CAAmBa,WAAnB,CAA+BK,aAAG,CAACC,MAAnC,sBAA0C,iEAA1C,GAAtB;KACA,KAAKhB,GAAL,CAASyX,cAAT,GAA0B,KAAKzX,GAAL,CAASH,SAAT,CAAmBa,WAAnB,CAA+BC,aAAG,CAACC,MAAJ,CAAW,MAAX,EAAmB;OAACC,KAAK,EAAE;SAACC,SAAS,EAAE;QAApB;OAAuEU,IAAI,EAAE,KAAK0R,mBAAL,IAA4B,EAAzG;OAA6G/N,KAAK,EAAE;SAAC1E,OAAO,EAAE;;MAAjJ,CAA/B,CAA1B;KACA,KAAK8W,KAAL,GAAa,IAAb;;;GAGDrW,OAAO,CAAC7B,MAAD,EACP;KACC,IAAI,CAAC,KAAKkY,KAAV,EACA;OACC,KAAK1U,KAAL;;;KAGD,IAAI,CAAC,KAAKrC,OAAL,EAAL,EACA;OACC,KAAKD,IAAL;;;KAGD,IAAIlB,MAAM,CAACqY,QAAX,EACA;OACC,KAAK1X,GAAL,CAASG,SAAT,CAAmBgF,KAAnB,CAAyB1E,OAAzB,GAAmC,EAAnC;OACAE,aAAG,CAACwB,WAAJ,CAAgB,KAAKnC,GAAL,CAASL,IAAzB,EAA+B,6CAA/B;;OACA,IAAI,KAAKqT,QAAT,EACA;SACC,KAAKhT,GAAL,CAASyX,cAAT,CAAwBtS,KAAxB,CAA8B1E,OAA9B,GAAwC,EAAxC;;;OAEDE,aAAG,CAACY,MAAJ,CAAW,KAAKvB,GAAL,CAASwX,UAApB,EAAgC;SAAChW,IAAI,EAAE,KAAKmW,aAAL,CAAmBtY,MAAnB;QAAvC;MARD,MAUK,IAAI,CAACA,MAAM,CAACqY,QAAR,IAAoBrY,MAAM,CAACmL,OAA/B,EACL;OACC,KAAKxK,GAAL,CAASG,SAAT,CAAmBgF,KAAnB,CAAyB1E,OAAzB,GAAmC,MAAnC;OACA,KAAKT,GAAL,CAASyX,cAAT,CAAwBtS,KAAxB,CAA8B1E,OAA9B,GAAwC,MAAxC;OACAE,aAAG,CAACmB,QAAJ,CAAa,KAAK9B,GAAL,CAASL,IAAtB,EAA4B,6CAA5B;OACAgB,aAAG,CAACY,MAAJ,CAAW,KAAKvB,GAAL,CAASwX,UAApB,EAAgC;SAAChW,IAAI,EAAEQ,aAAG,CAACC,UAAJ,CAAe,+CAAf;QAAvC;MALI,MAQL;OACC,KAAKjC,GAAL,CAASG,SAAT,CAAmBgF,KAAnB,CAAyB1E,OAAzB,GAAmC,MAAnC;OACA,KAAKT,GAAL,CAASyX,cAAT,CAAwBtS,KAAxB,CAA8B1E,OAA9B,GAAwC,MAAxC;OACAE,aAAG,CAACwB,WAAJ,CAAgB,KAAKnC,GAAL,CAASL,IAAzB,EAA+B,6CAA/B;OACAgB,aAAG,CAACY,MAAJ,CAAW,KAAKvB,GAAL,CAASwX,UAApB,EAAgC;SAAChW,IAAI,EAAEQ,aAAG,CAACC,UAAJ,CAAe,0CAAf;QAAvC;;;;GAIF0V,aAAa,CAACtY,MAAD,EACb;KACC,IACCqY,QAAQ,GAAGrY,MAAM,CAACqY,QADnB;SAECE,MAAM,GAAG,IAAI5K,IAAJ,CAAS0K,QAAQ,CAACxK,OAAT,KAAqB7N,MAAM,CAAC0K,QAAP,GAAkB,EAAlB,GAAuB,IAA5C,IAAoD1K,MAAM,CAACmL,OAAP,GAAiB,CAAC,CAAlB,GAAsB,CAA1E,CAAT,CAFV;SAGChJ,IAAI,GAAG,EAHR;;KAKA,IAAInC,MAAM,CAACmL,OAAX,EACA;OACC,IAAIX,cAAW,CAACgD,UAAZ,CAAuB,OAAvB,EAAgC6K,QAAQ,CAACxK,OAAT,KAAqB,IAArD,MAA+DrD,cAAW,CAACgD,UAAZ,CAAuB,OAAvB,EAAgC+K,MAAM,CAAC1K,OAAP,KAAmB,IAAnD,CAAnE,EACA;SACC1L,IAAI,GAAGqI,cAAW,CAACgD,UAAZ,CAAuB7K,aAAG,CAACC,UAAJ,CAAe,6BAAf,CAAvB,EAAsEyV,QAAtE,CAAP;QAFD,MAKA;SACClW,IAAI,GAAGQ,aAAG,CAACC,UAAJ,CAAe,8BAAf,EACLwR,OADK,CACG,aADH,EACkB5J,cAAW,CAACgD,UAAZ,CAAuB7K,aAAG,CAACC,UAAJ,CAAe,mCAAf,CAAvB,EAA4EyV,QAA5E,CADlB,EAELjE,OAFK,CAEG,WAFH,EAEgB5J,cAAW,CAACgD,UAAZ,CAAuB7K,aAAG,CAACC,UAAJ,CAAe,mCAAf,CAAvB,EAA4E2V,MAA5E,CAFhB,CAAP;;MARF,MAcA;OACC,IAAI/N,cAAW,CAACgD,UAAZ,CAAuB,OAAvB,EAAgC6K,QAAQ,CAACxK,OAAT,KAAqB,IAArD,MAA+DrD,cAAW,CAACgD,UAAZ,CAAuB,OAAvB,EAAgC+K,MAAM,CAAC1K,OAAP,KAAmB,IAAnD,CAAnE,EACA;SACC1L,IAAI,GAAGqI,cAAW,CAACgD,UAAZ,CAAuB7K,aAAG,CAACC,UAAJ,CAAe,6BAAf,CAAvB,EAAsEyV,QAAtE,IACJ,GADI,GAEJ1V,aAAG,CAACC,UAAJ,CAAe,8BAAf,EACAwR,OADA,CACQ,aADR,EACuB5J,cAAW,CAACgN,UAAZ,CAAuBa,QAAQ,CAACG,QAAT,EAAvB,EAA4CH,QAAQ,CAACI,UAAT,EAA5C,CADvB,EAEArE,OAFA,CAEQ,WAFR,EAEqB5J,cAAW,CAACgN,UAAZ,CAAuBe,MAAM,CAACC,QAAP,EAAvB,EAA0CD,MAAM,CAACE,UAAP,EAA1C,CAFrB,CAFH;QAFD,MASA;SACCtW,IAAI,GAAGQ,aAAG,CAACC,UAAJ,CAAe,8BAAf,EACLwR,OADK,CACG,aADH,EACkB5J,cAAW,CAACgD,UAAZ,CAAuB7K,aAAG,CAACC,UAAJ,CAAe,mCAAf,CAAvB,EAA4EyV,QAA5E,IAAwF,GAAxF,GAA6F7N,cAAW,CAACgN,UAAZ,CAAuBa,QAAQ,CAACG,QAAT,EAAvB,EAA4CH,QAAQ,CAACI,UAAT,EAA5C,CAD/G,EAELrE,OAFK,CAEG,WAFH,EAEgB5J,cAAW,CAACgD,UAAZ,CAAuB7K,aAAG,CAACC,UAAJ,CAAe,mCAAf,CAAvB,EAA4E2V,MAA5E,IAAsF,GAAtF,GAA2F/N,cAAW,CAACgN,UAAZ,CAAuBe,MAAM,CAACC,QAAP,EAAvB,EAA0CD,MAAM,CAACE,UAAP,EAA1C,CAF3G,CAAP;;;;KAMF,OAAOtW,IAAP;;;GAGDH,IAAI,GACJ;KACC,IAAI,KAAKkW,KAAL,IAAc,KAAKlX,KAAvB,EACA;OACC,KAAKL,GAAL,CAASL,IAAT,CAAcwF,KAAd,CAAoB1E,OAApB,GAA8B,MAA9B;OACA,KAAKJ,KAAL,GAAa,KAAb;;;;GAIFE,IAAI,GACJ;KACC,IAAI,KAAKgX,KAAL,IAAc,CAAC,KAAKlX,KAAxB,EACA;OACC,KAAKL,GAAL,CAASL,IAAT,CAAcwF,KAAd,CAAoB1E,OAApB,GAA8B,EAA9B;OACA,KAAKJ,KAAL,GAAa,IAAb;;;;GAIF0X,QAAQ,CAACC,OAAD,EACR;KACC,IAAI,KAAKhY,GAAL,CAASG,SAAb,EACA;OACC,KAAKH,GAAL,CAASG,SAAT,CAAmBgF,KAAnB,CAAyB1E,OAAzB,GAAmC,MAAnC;;;KAEDE,aAAG,CAACmB,QAAJ,CAAa,KAAK9B,GAAL,CAASL,IAAtB,EAA4B,6CAA5B;KACAgB,aAAG,CAACY,MAAJ,CAAW,KAAKvB,GAAL,CAASwX,UAApB,EAAgC;OAAChW,IAAI,EAAEwW;MAAvC;;;GAGDC,UAAU,GACV;KACC,OAAO,KAAK5X,KAAL,IAAcM,aAAG,CAAC+F,QAAJ,CAAa,KAAK1G,GAAL,CAASL,IAAtB,EAA4B,6CAA5B,CAArB;;;CAzIF;;;;;;;;;CCOO,MAAMuY,mBAAN,SAAkCC,6BAAlC,CACP;GACC/Y,WAAW,CAACC,MAAD,EACX;KACC,MAAMA,MAAN;KACA,KAAK+Y,iBAAL,CAAuB,iCAAvB;KACA,KAAK/Y,MAAL,GAAcA,MAAd;KACA,KAAKgZ,WAAL,GAAmBhZ,MAAM,CAACgZ,WAAP,IAAsB5J,EAAE,CAAC6J,IAAH,CAAQC,SAAjD;KACA,KAAK3F,QAAL,GAAgBvT,MAAM,CAACuT,QAAP,IAAmB,CAAnC;KACA,KAAKC,MAAL,GAAcxT,MAAM,CAACwT,MAAP,IAAiB,EAA/B;KACA,KAAK2F,SAAL,GAAiBnZ,MAAM,CAACU,KAAP,CAAaN,IAAb,GAAoB,IAArC;KACA,KAAKgZ,WAAL,GAAmB5O,cAAW,CAAC6O,aAAZ,EAAnB;KACA,KAAKC,eAAL,GAAuB9O,cAAW,CAAC+O,iBAAZ,EAAvB;KACA,KAAKhR,SAAL,GAAiB,IAAjB;KACA,KAAKqL,cAAL,GAAsB,IAAtB;KACA,KAAKC,mBAAL,GAA2B,IAA3B;KACA,KAAK2F,eAAL,GAAuB,IAAvB;KACA,KAAKC,WAAL,GAAmB,EAAnB;KAEA,KAAKC,mBAAL,GAA2BxV,cAAI,CAACC,UAAL,CAAgBnE,MAAM,CAACgZ,WAAvB,CAA3B;KAEA,KAAKW,aAAL,GAAqB;OACpBC,IAAI,EAAG,EADa;OAEpBC,QAAQ,EAAE;MAFX;KAIA,KAAKC,cAAL,GAAsB;OACrBF,IAAI,EAAG,EADc;OAErBC,QAAQ,EAAE;MAFX;KAKA,KAAKlZ,GAAL,GAAW;OACVL,IAAI,EAAE,KAAKN,MAAL,CAAYM,IADR;OAEVyZ,WAAW,EAAE;MAFd;;;GAMDC,IAAI,GACJ;KACC,MAAMC,YAAY,GAAG,KAAKC,eAAL,EAArB;;KACA,IAAI,CAACD,YAAY,CAACE,KAAd,IAAuB,CAACF,YAAY,CAACG,SAAzC,EACA;OACC,MAAM,IAAIC,KAAJ,CAAU,mHAAV,CAAN;OACA;;;KAED,KAAKnG,KAAL,GAAarP,QAAQ,CAACoV,YAAY,CAAC/D,IAAb,IAAqB+D,YAAY,CAAC/D,IAAb,CAAkBhC,KAAvC,GAA+C+F,YAAY,CAAC/D,IAAb,CAAkBhC,KAAjE,GAAyE,EAA1E,EAA8E,EAA9E,CAArB;KAEA,KAAKvT,GAAL,CAASC,SAAT,GAAqB,KAAKD,GAAL,CAASL,IAAT,CAAce,WAAd,CAA0BK,aAAG,CAACC,MAA9B,oBAAqC,sDAArC,GAArB;KAEA,KAAK2Y,cAAL;KACA,KAAKC,eAAL,GAAuBC,IAAvB,CAA4B,MAAI;OAC/B,KAAKC,cAAL;OACA,KAAKC,iBAAL;OACA,KAAKC,cAAL;MAHD;;;GAODC,KAAK,GACL;KACC,IAAIC,MAAM,GAAG,IAAb;;KAEA,IAAI,KAAKC,cAAL,MAAyB,CAAC,KAAK/R,eAAL,EAA9B,EACA;OACC,KAAKgS,WAAL,CAAiBxY,WAAjB;OACAsY,MAAM,GAAG,KAAT;;;KAGD,IAAIA,MAAM,IAAI,KAAKG,kBAAL,EAAV,IAAuC,CAAC,KAAKC,oBAAL,EAA5C,EACA;OACC,KAAKC,eAAL,CAAqB3Y,WAArB;OACAsY,MAAM,GAAG,KAAT;;;KAGD,IAAIA,MAAM,IAAI,CAAC,KAAKM,kBAAL,EAAf,EACA;OACC,IAAI,KAAK3P,eAAT,EACA;SACC,KAAKA,eAAL,CAAqBjJ,WAArB;QAFD,MAIK,IAAI,KAAK6Y,cAAT,EACL;SACC,KAAKA,cAAL,CAAoB7Y,WAApB;;;OAEDsY,MAAM,GAAG,KAAT;;;KAGD,IAAIA,MAAM,KAER,CAAC,KAAKQ,WAAL,CAAiBnP,QAAjB,EAAD,IACG,KAAKoP,aAAL,CAAmB1C,UAAnB,EAHK,CAAV,EAMA;OACC,KAAKyC,WAAL,CAAiB9Y,WAAjB;OACAsY,MAAM,GAAG,KAAT;;;KAGD,IAAIA,MAAM,IAAI,KAAKU,qBAAL,EAAV,IAA0C,CAAC,KAAKC,WAAL,CAAiBtP,QAAjB,EAA/C,EACA;OACC,KAAKsP,WAAL,CAAiBjZ,WAAjB;OACAsY,MAAM,GAAG,KAAT;;;KAGD,OAAOA,MAAP;;;GAGDH,iBAAiB,GACjB;KACC,KAAK/Z,GAAL,CAASH,SAAT,GAAqB,KAAKG,GAAL,CAASC,SAAT,CAAmBS,WAAnB,CAA+BK,aAAG,CAACC,MAAnC,sBAA0C,oDAA1C,GAArB;KACA,KAAKhB,GAAL,CAAS8a,UAAT,GAAsB,KAAK9a,GAAL,CAASH,SAAT,CAAmBa,WAAnB,CAA+BK,aAAG,CAACC,MAAnC,sBAA0C,aAA1C,GAAtB;;KAEA,IAAI,CAAC,KAAK+Z,cAAL,EAAL,EACA;OACC,KAAKJ,aAAL,GAAqB,IAAIrD,cAAJ,CAAmB;SACvCrX,SAAS,EAAE,KAAKD,GAAL,CAASH;QADA,CAArB;OAGA,KAAK8a,aAAL,CAAmBzZ,OAAnB,CAA2B,EAA3B;OACA,KAAKyZ,aAAL,CAAmB5C,QAAnB,CAA4B,oBAAoB/V,aAAG,CAACC,UAAJ,CAAe,6BAAf,CAAhD;MAND,MASA;OACC,IAAI,KAAK8W,mBAAL,IAA4BtK,EAAE,CAACuM,aAAnC,EACA;SACC,MAAMC,KAAK,GAAGxM,EAAE,CAACuM,aAAH,CAAiBE,aAAjB,CAA+BlV,QAAQ,CAACmV,IAAxC,CAAd;SACAF,KAAK,CAACG,SAAN,GAAkB,MAAlB;SACAH,KAAK,CAACI,IAAN;;;OAGD,KAAKC,uBAAL;OACA,KAAKC,mBAAL;OACA,KAAKC,uBAAL;OACA,KAAKC,sBAAL;OACA,KAAKC,sBAAL;OACA,KAAKC,sBAAL;;OAEA,IAAI,KAAKC,cAAL,IAAuB,KAAKC,kBAAhC,EACA;SACC,KAAKC,oBAAL;;;;;GAKHA,oBAAoB,GACpB;KACC,IAAI,KAAKC,kBAAL,CAAwB,WAAxB,KACA,KAAKxB,eADL,IAEA,CAAC,KAAKA,eAAL,CAAqB/Z,OAArB,EAFL,EAGA;OACC,KAAK+Z,eAAL,CAAqB9Z,OAArB;MALF;;;KASC,IAAI,KAAKsb,kBAAL,CAAwB,UAAxB,KACA,KAAKtB,cADL,IAEA,CAAC,KAAKA,cAAL,CAAoBja,OAApB,EAFL,EAGA;OACC,KAAKia,cAAL,CAAoBha,OAApB;MAbF;;;KAiBC,IAAI,KAAKsb,kBAAL,CAAwB,UAAxB,KACA,KAAKlR,eADL,IAEA,CAAC,KAAKA,eAAL,CAAqBrK,OAArB,EAFL,EAGA;OACC,KAAKqK,eAAL,CAAqBpK,OAArB;;;KAGD,IAAI6Y,YAAY,GAAG,KAAKC,eAAL,EAAnB,CAxBD;;KA0BC,IAAI,KAAKwC,kBAAL,CAAwB,MAAxB,KAAmC,KAAKrB,WAA5C,EACA;OACC,IAAI,KAAKA,WAAL,CAAiBla,OAAjB,EAAJ,EACA;SACC,KAAKka,WAAL,CAAiBxZ,OAAjB,CACCoY,YAAY,CAAC9M,IADd,EAEC;WACCX,kBAAkB,EAAE,KAAKmQ,qBAAL,CAA2B;aAC9CvC,SAAS,EAAE,KAAKa,oBAAL,EADmC;aAE9CrB,IAAI,EAAE,KAAK7Q,eAAL,EAFwC;aAG9C2B,QAAQ,EAAE,KAAKyQ,kBAAL;YAHS;UAHtB;;SAWA,IAAI,KAAKK,WAAT,EACA;WACC,KAAKA,WAAL,CAAiB3Z,OAAjB,CACCoY,YAAY,CAAC/D,IADd,EAEC;aACC5B,SAAS,EAAE,KAAKsI,YAAL,CAAkB;eAACzP,IAAI,EAAE,KAAKkO,WAAL,CAAiBnP,QAAjB;cAAzB,CADZ;aAECmB,WAAW,EAAE,KAAKgO,WAAL,CAAiBnP,QAAjB;YAJf;;QAfF,MAwBA;SACC,IAAI2Q,UAAJ;;SACA,IAAI5C,YAAY,CAAC9M,IAAb,CAAkBP,KAAlB,KAA4B,MAAhC,EACA;WACCiQ,UAAU,GAAG,KAAKC,WAAL,CAAiB;aAC7B1C,SAAS,EAAE,KAAKa,oBAAL,EADkB;aAE7BrB,IAAI,EAAE,KAAK7Q,eAAL,EAFuB;aAG7B2B,QAAQ,EAAE,KAAKyQ,kBAAL;YAHE,CAAb;UAFD,MASA;WACC0B,UAAU,GAAG,IAAIlP,IAAJ,EAAb;;;SAGD,KAAK0N,WAAL,CAAiBja,OAAjB,CAAyB;WACxB0H,aAAa,EAAE+T,UADS;WAExBrQ,kBAAkB,EAAE,KAAKmQ,qBAAL,CAA2B;aAC9CvC,SAAS,EAAE,KAAKa,oBAAL,EADmC;aAE9CrB,IAAI,EAAE,KAAK7Q,eAAL,EAFwC;aAG9C2B,QAAQ,EAAE,KAAKyQ,kBAAL;YAHS;UAFrB;;;;KAWF,KAAK4B,mBAAL;KACA,KAAKpC,cAAL;KACAnQ,cAAW,CAACwS,eAAZ,CAA4BjN,MAA5B,EAAoC,sBAApC;;;GAGD4K,cAAc,GACd;KACC,IACCsC,cAAc,GAAG,EADlB;SAECC,aAAa,GAAG,EAFjB;SAGC7E,QAAQ,GAAG,KAAK8E,cAAL,EAHZ;SAICzS,QAAQ,GAAG,KAAKyQ,kBAAL,KAA4B,EAJxC;;KAKCxQ,WAAW,GAAG,KAAKyS,qBAAL,EALf;SAMCC,OAAO,GAAG,EANX,CADD;;KAUC/b,aAAG,CAACgc,KAAJ,CAAU,KAAK3c,GAAL,CAAS8a,UAAnB;KAEA,KAAK9a,GAAL,CAASoZ,WAAT,GAAuB,EAAvB;;KAEA,IAAI7V,cAAI,CAACkJ,MAAL,CAAYiL,QAAZ,KAAyB,CAAC,KAAKiD,aAAL,CAAmB1C,UAAnB,EAA9B,EACA;OACC,IAAIwB,SAAS,GAAG,KAAKa,oBAAL,EAAhB;;OACA,IAAI/W,cAAI,CAACG,OAAL,CAAa+V,SAAb,CAAJ,EACA;SACCA,SAAS,CAAC1V,OAAV,CAAkB,UAAS6Y,UAAT,EAClB;WACCF,OAAO,GAAGA,OAAO,CAACzV,MAAR,CAAe;aAAC2D,IAAI,EAAE,UAAP;aAAmBtI,EAAE,EAAEsa;YAAtC,CAAV;UAFD;;;OAMD,IAAIC,YAAY,GAAG,KAAKzU,eAAL,EAAnB;;OACA,IAAIyU,YAAJ,EACA;SACCH,OAAO,GAAGA,OAAO,CAACzV,MAAR,CAAe;WAAC2D,IAAI,EAAE,MAAP;WAAetI,EAAE,EAAEua;UAAlC,CAAV;;;OAGDN,aAAa,GAAG1S,cAAW,CAACgD,UAAZ,CAAuB,KAAK8L,eAA5B,EAA6CjB,QAAQ,CAACxK,OAAT,KAAqB,IAAlE,CAAhB;OAEAwP,OAAO,CAAC3Y,OAAR,CAAgB,UAAS+Y,KAAT,EAChB;SACC,IAAIpX,KAAK,GAAGoX,KAAK,CAAClS,IAAN,GAAa,GAAb,GAAmBkS,KAAK,CAACxa,EAAzB,GAA8B,GAA9B,GAAoCia,aAApC,GAAoD,GAApD,GAA0DxS,QAA1D,GAAqE,GAArE,GAA2EC,WAAvF;SACAsS,cAAc,CAACnY,IAAf,CAAoBuB,KAApB;SAEA,KAAK1F,GAAL,CAASoZ,WAAT,CAAqBjV,IAArB,CAA0B,KAAKnE,GAAL,CAAS8a,UAAT,CAAoBpa,WAApB,CACzBK,aAAG,CAACC,MADqB,sBACd;;cADc,CAGY;eAHZ,CAII;;;MAJJ,GAGhBoD,cAAI,CAACC,MAAL,CAAY,KAAKmU,SAAjB,CAHgB,EAIfpU,cAAI,CAACC,MAAL,CAAYqB,KAAZ,CAJe,EAA1B;QALD,EAcG,IAdH;;;KAiBD,IAAI,CAACgX,OAAO,CAAClY,MAAb,EACA;OACC8X,cAAc,CAACnY,IAAf,CAAoB,OAApB;OACA,KAAKnE,GAAL,CAASoZ,WAAT,CAAqBjV,IAArB,CAA0B,KAAKnE,GAAL,CAAS8a,UAAT,CAAoBpa,WAApB,CACzBK,aAAG,CAACC,MADqB,sBACd;;cADc,CAGa;;;;MAHb,GAGfoD,cAAI,CAACC,MAAL,CAAY,KAAKmU,SAAjB,CAHe,EAA1B;;;KAWD,KAAKuE,IAAL,CAAU,QAAV,EAAoBT,cAApB;;;GAGD3C,cAAc,GACd;KACC,IAAI,KAAK3Z,GAAL,CAASL,IAAb,EACA;OACC,KAAKma,cAAL;OACA,IAAIkD,UAAU,GAAGjc,aAAG,CAACC,MAAP,sBAAc,kEAAd,EAAd;OACAgc,UAAU,CAACtc,WAAX,CAAuBmJ,cAAW,CAACoT,SAAZ,CAAsB,GAAtB,CAAvB;OACA,KAAKjd,GAAL,CAASkd,UAAT,GAAsB,KAAKld,GAAL,CAASC,SAAT,CAAmBS,WAAnB,CAA+Bsc,UAA/B,CAAtB;;;;GAIFlD,cAAc,GACd;KACCnZ,aAAG,CAACgB,MAAJ,CAAW,KAAK3B,GAAL,CAASkd,UAApB;;;GAGDC,gBAAgB,GAChB;KACC,KAAKxD,cAAL;;;GAGDyD,gBAAgB,GAChB;KACC,KAAKtD,cAAL;;;GAGDuD,wBAAwB,CAAChe,MAAD,EACxB;KACC,IAAI,CAAC,KAAKie,iBAAV,EACA;OACC,KAAKH,gBAAL;OAEA,KAAKG,iBAAL,GAAyB,IAAzB;OACA,IAAIC,cAAc,GAAG;SACpBC,IAAI,EAAEne,MAAM,CAACmN;QADd;OAIA,KAAKoN,eAAL,CAAqB2D,cAArB,EAAqC1D,IAArC,CAA0C,MAAM;SAC/C,KAAKuD,gBAAL;SACA,KAAKtB,oBAAL;SACA,KAAKpB,WAAL,CAAiBtN,mBAAjB;SACA,KAAK4M,cAAL;SACA,KAAKsD,iBAAL,GAAyB,KAAzB;QALD;;;;GAUF1D,eAAe,CAACva,MAAD,EACf;KACCA,MAAM,GAAGkE,cAAI,CAACgF,aAAL,CAAmBlJ,MAAnB,IAA6BA,MAA7B,GAAsC,EAA/C;KAEA,OAAO,IAAIoe,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;OACvC,IACCvd,IAAI,GAAG;SACNkZ,YAAY,EAAE,KAAKC,eAAL,MAA0B;QAF1C;;OAKA,IAAI,CAAC,KAAKV,eAAV,EACA;SACCzY,IAAI,CAACwd,SAAL,GAAiB,KAAKve,MAAL,CAAYU,KAAZ,CAAkB8d,iBAAnC;;;OAGD,IACCnG,QAAQ,GAAGnU,cAAI,CAACkJ,MAAL,CAAYpN,MAAM,CAACme,IAAnB,IAA2Bne,MAAM,CAACme,IAAlC,GAAyC,IAAIxQ,IAAJ,EADrD;WAEC4K,MAFD;;OAIA,IAAIrU,cAAI,CAACkJ,MAAL,CAAYpN,MAAM,CAACye,EAAnB,CAAJ,EACA;SACClG,MAAM,GAAGvY,MAAM,CAACye,EAAhB;QAFD,MAKA;SACClG,MAAM,GAAG,IAAI5K,IAAJ,CAAS0K,QAAQ,CAACxK,OAAT,EAAT,CAAT;SACA0K,MAAM,CAACzJ,OAAP,CAAeuJ,QAAQ,CAACtJ,OAAT,KAAqB,EAApC;;;OAGDhO,IAAI,CAACod,IAAL,GAAY3T,cAAW,CAACgD,UAAZ,CAAuB,KAAK4L,WAA5B,EAAyCf,QAAzC,CAAZ;OACAtX,IAAI,CAAC0d,EAAL,GAAUjU,cAAW,CAACgD,UAAZ,CAAuB,KAAK4L,WAA5B,EAAyCb,MAAzC,CAAV;OAEA,KAAKmG,mBAAL,CAAyBrG,QAAzB,EAAmCE,MAAnC;OAEA,KAAKS,WAAL,CAAiB,kDAAjB,EAAqE;SACpEjY,IAAI,EAAEA;QADP,EAEGyZ,IAFH,CAESmE,QAAD,IAAc;SACpB,IAAI,CAACza,cAAI,CAACgF,aAAL,CAAmByV,QAAnB,CAAD,IAAiC,CAACA,QAAQ,CAAC5d,IAA/C,EACA;WACCsd,OAAO,CAACM,QAAD,CAAP;UAFD,MAKA;WACC,IAAIza,cAAI,CAAC0a,QAAL,CAAcD,QAAQ,CAAC5d,IAAT,CAAc6S,cAA5B,CAAJ,EACA;aACC,KAAKA,cAAL,GAAsB+K,QAAQ,CAAC5d,IAAT,CAAc6S,cAApC;aACA,KAAKC,mBAAL,GAA2B8K,QAAQ,CAAC5d,IAAT,CAAc8S,mBAAzC;;;WAGD,IAAI8K,QAAQ,CAAC5d,IAAT,CAAc8d,aAAd,KAAgCnW,SAAhC,IAA6CiW,QAAQ,CAAC5d,IAAT,CAAc+d,WAAd,KAA8BpW,SAA/E,EACA;aACC,KAAK6K,QAAL,GAAgB1O,QAAQ,CAAC8Z,QAAQ,CAAC5d,IAAT,CAAc8d,aAAf,CAAxB;aACA,KAAKrL,MAAL,GAAc3O,QAAQ,CAAC8Z,QAAQ,CAAC5d,IAAT,CAAc+d,WAAf,CAAtB;;;WAGD,IAAIH,QAAQ,CAAC5d,IAAT,CAAcge,aAAlB,EACA;aACC,KAAKvF,eAAL,GAAuBmF,QAAQ,CAAC5d,IAAT,CAAcge,aAArC;;;WAED,IAAIJ,QAAQ,CAAC5d,IAAT,CAAcwH,SAAlB,EACA;aACC,KAAKA,SAAL,GAAiBoW,QAAQ,CAAC5d,IAAT,CAAcwH,SAA/B;;;WAGD,KAAKyW,uBAAL,CAA6BL,QAAQ,CAAC5d,IAAT,CAAcke,kBAA3C,EAA+D,MAA/D;WACA,KAAKD,uBAAL,CAA6BL,QAAQ,CAAC5d,IAAT,CAAcme,sBAA3C,EAAmE,UAAnE;WAEAb,OAAO,CAACM,QAAQ,CAAC5d,IAAV,CAAP;;QAjCH,EAoCE4d,QAAD,IAAc;SACbN,OAAO,CAACM,QAAD,CAAP;QArCF;MA9BM,CAAP;;;GAwEDD,mBAAmB,CAACP,IAAD,EAAOM,EAAP,EACnB;KACC,KAAKU,cAAL,GAAsBjb,cAAI,CAACkJ,MAAL,CAAY+Q,IAAZ,IAAoBA,IAApB,GAA2B3T,cAAW,CAACoF,SAAZ,CAAsBuO,IAAtB,CAAjD;KACA,KAAKiB,YAAL,GAAoBlb,cAAI,CAACkJ,MAAL,CAAYqR,EAAZ,IAAkBA,EAAlB,GAAuBjU,cAAW,CAACoF,SAAZ,CAAsB6O,EAAtB,CAA3C;KAEA,KAAKhF,WAAL,GAAmB,KAAKA,WAAL,IAAoB,EAAvC;KACA,KAAK4F,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,EAAjD;KAEA,IACC5R,OADD;SAECN,IAAI,GAAG,IAAIQ,IAAJ,CAAS,KAAKwR,cAAL,CAAoBtR,OAApB,EAAT,CAFR;;KAIA,OAAO,IAAP,EACA;OACCJ,OAAO,GAAGjD,cAAW,CAACgD,UAAZ,CAAuB,KAAK4L,WAA5B,EAAyCjM,IAAzC,CAAV;OACA,KAAKkS,gBAAL,CAAsB5R,OAAtB,IAAiC,KAAKgM,WAAL,CAAiBtU,MAAlD;OACA,KAAKsU,WAAL,CAAiB3U,IAAjB,CAAsB;SACrBwa,GAAG,EAAE9U,cAAW,CAACgD,UAAZ,CAAuB,KAAK4L,WAA5B,EAAyCjM,IAAzC,CADgB;SAErB+H,KAAK,EAAE,EAFc;SAGrBqK,UAAU,EAAE;QAHb;OAKApS,IAAI,CAAC2B,OAAL,CAAa3B,IAAI,CAAC4B,OAAL,KAAiB,CAA9B;;OAEA,IAAI5B,IAAI,CAACU,OAAL,KAAiB,KAAKuR,YAAL,CAAkBvR,OAAlB,EAArB,EACA;SACC;;;;;GAKH2R,aAAa,CAACrS,IAAD,EAAO+I,IAAP,EAAauJ,UAAb,EAAyBC,QAAzB,EACb;KACC,IAAIC,SAAS,GAAG,KAAKN,gBAAL,CAAsBlS,IAAtB,CAAhB;;KACA,IAAI,KAAKsM,WAAL,CAAiBkG,SAAjB,CAAJ,EACA;OACC,IAAI,CAAC,KAAKlG,WAAL,CAAiBkG,SAAjB,EAA4BzK,KAA5B,CAAkCgB,IAAlC,CAAL,EACA;SACC,KAAKuD,WAAL,CAAiBkG,SAAjB,EAA4BzK,KAA5B,CAAkCgB,IAAlC,IAA0C,EAA1C;;;OAED,IAAI,KAAKuD,WAAL,CAAiBkG,SAAjB,EAA4BJ,UAA5B,CAAuCE,UAAU,GAAGC,QAApD,MAAkEhX,SAAtE,EACA;SACC,KAAK+Q,WAAL,CAAiBkG,SAAjB,EAA4BJ,UAA5B,CAAuCE,UAAU,GAAGC,QAApD,IAAgE,CAAhE;;;OAED,KAAKjG,WAAL,CAAiBkG,SAAjB,EAA4BzK,KAA5B,CAAkCgB,IAAlC,EAAwCuJ,UAAU,GAAGC,QAArD,IAAiE,IAAjE;OACA,KAAKjG,WAAL,CAAiBkG,SAAjB,EAA4BJ,UAA5B,CAAuCE,UAAU,GAAGC,QAApD;;;;GAIFV,uBAAuB,CAACje,IAAD,EAAO0e,UAAP,EACvB;KACC,IAAIvb,cAAI,CAACgF,aAAL,CAAmBnI,IAAnB,MAA6B0e,UAAU,KAAK,MAAf,IAAyBA,UAAU,KAAK,UAArE,CAAJ,EACA;;OAEC,KAAK,IAAIC,QAAT,IAAqB3e,IAArB,EACA;SACC,IAAIA,IAAI,CAACoI,cAAL,CAAoBuW,QAApB,CAAJ,EACA;WACC3e,IAAI,CAAC2e,QAAD,CAAJ,CAAehb,OAAf,CAAuB,UAAS+Y,KAAT,EACvB;aACC,IAAI,CAACA,KAAK,CAACU,IAAX,EACA;eACCV,KAAK,CAACU,IAAN,GAAa3T,cAAW,CAACoF,SAAZ,CAAsB6N,KAAK,CAACpF,QAA5B,CAAb;;eACA,IAAIoF,KAAK,CAACU,IAAV,EACA;iBACCV,KAAK,CAACU,IAAN,CAAWyB,UAAX,CAAsB,CAAtB,EAAwB,CAAxB;iBACAnC,KAAK,CAACoC,aAAN,GAAsBpC,KAAK,CAACU,IAAN,CAAWtQ,OAAX,EAAtB;;;;aAIF,IAAI,CAAC4P,KAAK,CAACgB,EAAX,EACA;eACChB,KAAK,CAACgB,EAAN,GAAWjU,cAAW,CAACoF,SAAZ,CAAsB6N,KAAK,CAAClF,MAA5B,CAAX;;eACA,IAAIkF,KAAK,CAACgB,EAAV,EACA;iBACC,IAAIhB,KAAK,CAACtS,OAAV,EACA;mBACCsS,KAAK,CAACgB,EAAN,CAAS3Q,QAAT,CAAkB,EAAlB,EAAsB,EAAtB,EAA0B,CAA1B,EAA6B,CAA7B;kBAFD,MAKA;mBACC2P,KAAK,CAACgB,EAAN,CAASmB,UAAT,CAAoB,CAApB,EAAuB,CAAvB;;;iBAEDnC,KAAK,CAACqC,WAAN,GAAoBrC,KAAK,CAACgB,EAAN,CAAS5Q,OAAT,EAApB;;;;aAIF,IAAI4P,KAAK,CAACU,IAAN,IAAcV,KAAK,CAACgB,EAAxB,EACA;eACC,KAAKsB,kBAAL,CAAwBtC,KAAxB,EAA+BgC,UAA/B,EAA2CC,QAA3C;;YA/BF,EAiCG,IAjCH;;;;OAoCF,KAAK/F,aAAL,CAAmB8F,UAAnB,IAAiCjV,cAAW,CAACwV,OAAZ,CAAoB,KAAKrG,aAAL,CAAmB8F,UAAnB,CAApB,EAAoD1e,IAApD,CAAjC;;;;GAIFgf,kBAAkB,CAACtC,KAAD,EAAQgC,UAAR,EAAoBC,QAApB,EAClB;KACC,IAAI,CAAC,KAAK5F,cAAL,CAAoB2F,UAApB,EAAgCC,QAAhC,CAAL,EACA;OACC,KAAK5F,cAAL,CAAoB2F,UAApB,EAAgCC,QAAhC,IAA4C,EAA5C;;;KAGD,IACCO,QAAQ,GAAG,IAAItS,IAAJ,CAAS8P,KAAK,CAACU,IAAN,CAAWtQ,OAAX,EAAT,CADZ;SAECJ,OAAO,GAAGjD,cAAW,CAACgD,UAAZ,CAAuB,KAAK4L,WAA5B,EAAyC6G,QAAzC,CAFX;SAGCC,SAAS,GAAG1V,cAAW,CAACgD,UAAZ,CAAuB,KAAK4L,WAA5B,EAAyCqE,KAAK,CAACgB,EAA/C,CAHb;SAIC0B,aAAa,GAAGF,QAAQ,CAACzH,QAAT,KAAsB,EAAtB,GAA2ByH,QAAQ,CAACxH,UAAT,EAJ5C;SAKC/N,QAAQ,GAAGxH,IAAI,CAACC,KAAL,CAAW,CAACsa,KAAK,CAACqC,WAAN,GAAoBrC,KAAK,CAACoC,aAA3B,IAA4C,KAAvD,CALZ;;KAMCO,WAAW,GAAGD,aAAa,GAAGzV,QAN/B;SAOCwK,KAAK,GAAG,KAAKmL,YAAL,EAPT;SAQCC,KAAK,GAAG,CART;SASCzY,CATD;;KAWA,IAAI6C,QAAQ,GAAG,CAAf,EACA;OACC,OAAO,IAAP,EACA;SACC,IAAI,CAAC,KAAKoP,cAAL,CAAoB2F,UAApB,EAAgCC,QAAhC,EAA0CjS,OAA1C,CAAL,EACA;WACC,KAAKqM,cAAL,CAAoB2F,UAApB,EAAgCC,QAAhC,EAA0CjS,OAA1C,IAAqD,EAArD;;;SAGD,KAAK5F,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGqN,KAAK,CAAC/P,MAAtB,EAA8B0C,CAAC,EAA/B,EACA;WACC,IAAIsY,aAAa,GAAIjL,KAAK,CAACrN,CAAD,CAAL,CAASqO,IAAT,GAAgB,KAAKhC,KAAtC,IAAgDkM,WAAW,GAAGlL,KAAK,CAACrN,CAAD,CAAL,CAASqO,IAA3E,EACA;aACC,KAAK4D,cAAL,CAAoB2F,UAApB,EAAgCC,QAAhC,EAA0CjS,OAA1C,EAAmDyH,KAAK,CAACrN,CAAD,CAAL,CAASqO,IAA5D,IAAoE,IAApE;aACA,KAAKsJ,aAAL,CAAmB/R,OAAnB,EAA4ByH,KAAK,CAACrN,CAAD,CAAL,CAASqO,IAArC,EAA2CuJ,UAA3C,EAAuDC,QAAvD;;;;SAIF,IAAIjS,OAAO,KAAKyS,SAAhB,EACA;WACC;UAFD,MAKA;WACCD,QAAQ,CAACnR,OAAT,CAAiBmR,QAAQ,CAAClR,OAAT,KAAqB,CAAtC;WACAtB,OAAO,GAAGjD,cAAW,CAACgD,UAAZ,CAAuB,KAAK4L,WAA5B,EAAyC6G,QAAzC,CAAV;WACAE,aAAa,GAAG,CAAhB;;WACA,IAAI1S,OAAO,KAAKyS,SAAhB,EACA;aACCE,WAAW,GAAG3C,KAAK,CAACgB,EAAN,CAASjG,QAAT,KAAsB,EAAtB,GAA2BiF,KAAK,CAACgB,EAAN,CAAShG,UAAT,EAAzC;YAFD,MAKA;aACC2H,WAAW,GAAG,IAAd,CADD;;;;SAKDE,KAAK;;SACL,IAAIA,KAAK,GAAG,KAAZ;WACA;aACC;;;;;;GAMJC,UAAU,GACV;KACC,OAAO,KAAKvgB,MAAL,CAAYU,KAAZ,CAAkB8f,OAAzB;;;GAGDtG,eAAe,GACf;KACC,OAAO,KAAKla,MAAL,CAAYU,KAAZ,CAAkB+f,aAAlB,IAAmC,EAA1C;;;GAGDC,YAAY,GACZ;KACC,OAAO,KAAKnY,SAAZ;;;GAGDmT,cAAc,GACd;KACC,OAAO,KAAKlC,eAAZ;;;GAGDmH,WAAW,GACX;KACC,OAAO;OACNH,OAAO,EAAE,KAAKD,UAAL,EADH;OAENxf,IAAI,EAAE,KAAKmZ,eAAL;MAFP;;;GAMD0G,wBAAwB,GACxB;KACC,OAAO,KAAK9F,cAAL,MAAyB,KAAKZ,eAAL,GAAuBC,KAAvB,CAA6BjZ,IAA7B,KAAsC,GAAtE;;;GAGD2f,4BAA4B,GAC5B;KACC,OAAO,KAAK7F,kBAAL,MAA6B,KAAKd,eAAL,GAAuBE,SAAvB,CAAiClZ,IAAjC,KAA0C,GAA9E;;;GAGD4f,sBAAsB,GACtB;KACC,IACCzT,WAAW,GAAG,KAAKgO,WAAL,CAAiBnP,QAAjB,EADf;SAECuI,SAAS,GAAG,KAAK+G,WAAL,CAAiBtP,QAAjB,EAFb;;KAIA,IAAIhI,cAAI,CAACkJ,MAAL,CAAYC,WAAZ,KAA4BoH,SAAhC,EACA;OACC,IAAI5M,CAAJ;WAAOkZ,UAAU,GAAG,KAAKtH,WAAL,CAAiB,KAAK4F,gBAAL,CAAsB7U,cAAW,CAACgD,UAAZ,CAAuB,KAAK4L,WAA5B,EAAyC/L,WAAzC,CAAtB,CAAjB,CAApB;;OACA,IAAI0T,UAAU,CAAC7L,KAAX,CAAiBT,SAAjB,CAAJ,EACA;SACC,KAAK5M,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG,KAAKkT,WAAL,CAAiB3W,MAAjB,CAAwBe,MAAxC,EAAgD0C,CAAC,EAAjD,EACA;WACC,IAAI,CAACkZ,UAAU,CAAC7L,KAAX,CAAiBT,SAAjB,EAA4B,SAAS,KAAKsG,WAAL,CAAiB3W,MAAjB,CAAwByD,CAAxB,CAArC,CAAL,EACA;aACC,KAAKkT,WAAL,CAAiBvR,eAAjB,CAAiC,KAAKuR,WAAL,CAAiB3W,MAAjB,CAAwByD,CAAxB,CAAjC;aACA;;;;;;;GAOLmZ,0BAA0B,GAC1B;KACC,IACC3T,WAAW,GAAG,KAAKgO,WAAL,CAAiBnP,QAAjB,EADf;SAECuI,SAAS,GAAG,KAAK+G,WAAL,CAAiBtP,QAAjB,EAFb;;KAIA,IAAIhI,cAAI,CAACkJ,MAAL,CAAYC,WAAZ,KAA4BoH,SAAhC,EACA;OACC,IACC5M,CADD;WACI5E,EADJ;WAEC8d,UAAU,GAAG,KAAKtH,WAAL,CAAiB,KAAK4F,gBAAL,CAAsB7U,cAAW,CAACgD,UAAZ,CAAuB,KAAK4L,WAA5B,EAAyC/L,WAAzC,CAAtB,CAAjB,CAFd;;OAIA,IAAI0T,UAAU,CAAC7L,KAAX,CAAiBT,SAAjB,CAAJ,EACA;SACC,KAAK5M,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG,KAAKqT,eAAL,CAAqBtR,YAArB,CAAkCzE,MAAlD,EAA0D0C,CAAC,EAA3D,EACA;WACC5E,EAAE,GAAG4B,QAAQ,CAAC,KAAKqW,eAAL,CAAqBtR,YAArB,CAAkC/B,CAAlC,EAAqC5E,EAAtC,CAAb;;WACA,IAAI,CAAC8d,UAAU,CAAC7L,KAAX,CAAiBT,SAAjB,EAA4B,aAAaxR,EAAzC,CAAL,EACA;aACC,KAAKiY,eAAL,CAAqBrR,mBAArB,CAAyC5G,EAAzC;aACA;;;;;;;GAOLgZ,uBAAuB,GACvB;KACC,IACChC,YAAY,GAAG,KAAKC,eAAL,EADhB;SAEC+G,cAAc,GAAG,KAAKnG,cAAL,OAA0Bb,YAAY,CAACE,KAAb,CAAmB3R,WAAnB,KAAmC,MAAnC,IAA6CyR,YAAY,CAACE,KAAb,CAAmBjZ,IAAnB,KAA4B,GAAnG,CAFlB;SAGCggB,kBAAkB,GAAG,KAAKlG,kBAAL,OAA8Bf,YAAY,CAACG,SAAb,CAAuB5R,WAAvB,KAAuC,MAAvC,IAAiDyR,YAAY,CAACG,SAAb,CAAuBlZ,IAAvB,KAAgC,GAA/G,CAHtB;SAICigB,cAAc,GAAGlH,YAAY,CAAC9M,IAAb,CAAkBP,KAAlB,KAA4B,MAJ9C;SAKCwU,YAAY,GAAG,EALhB;SAMCjU,IAND;SAMOtF,CANP;KAQA,KAAK0U,cAAL,GAAsB,KAAtB;KACA,KAAKC,kBAAL,GAA0B,KAA1B;KAEArP,IAAI,GAAG,IAAIQ,IAAJ,EAAP,CAZD;;KAcC,KAAK9F,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAIuZ,YAAjB,EAA+BvZ,CAAC,EAAhC,EACA;OACC,KAAKwZ,sBAAL,CAA4BlU,IAA5B,EAAkC;SACjC8T,cAAc,EAAEA,cADiB;SAEjCC,kBAAkB,EAAEA,kBAFa;SAGjCI,WAAW,EAAE,KAAKC,6BAAL;QAHd;;OAMA,IAAI,CAAC,KAAKhF,cAAL,IAAuB,CAAC0E,cAAzB,MAEF,KAAKzE,kBAAL,IAA2B,CAAC0E,kBAF1B,CAAJ,EAGA;SACC;;;OAGD,IAAI,CAACC,cAAL,EACA;SACC;;;OAEDhU,IAAI,CAAC2B,OAAL,CAAa3B,IAAI,CAAC4B,OAAL,KAAiB,CAA9B;;;;GAIFsS,sBAAsB,CAAClU,IAAD,EAAOnN,MAAP,EACtB;KACC,IACCia,YAAY,GAAG,KAAKC,eAAL,EADhB;SAECoH,WAAW,GAAGthB,MAAM,CAACshB,WAAP,IAAsB,CAFrC;SAGCzZ,CAHD;SAGIS,QAHJ;SAGckZ,OAHd;;KAKA,IAAIxhB,MAAM,CAACihB,cAAX,EACA;OACC3Y,QAAQ,GAAG,KAAKmZ,aAAL,EAAX;;OACA,KAAK5Z,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGS,QAAQ,CAACnD,MAAzB,EAAiC0C,CAAC,EAAlC,EACA;SACC,IAAI,KAAK6Z,iBAAL,CAAuBvU,IAAvB,EAA6BmU,WAA7B,EAA0C;WAC7C1H,IAAI,EAAE/U,QAAQ,CAACyD,QAAQ,CAACT,CAAD,CAAT;UADX,CAAJ,EAGA;WACC,KAAK0U,cAAL,GAAsB1X,QAAQ,CAACyD,QAAQ,CAACT,CAAD,CAAT,CAA9B;WACA;;;;;KAKH,IAAI7H,MAAM,CAACkhB,kBAAX,EACA;OACCM,OAAO,GAAG,KAAKG,gBAAL,EAAV;;OACA,KAAK9Z,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG2Z,OAAO,CAACrc,MAAxB,EAAgC0C,CAAC,EAAjC,EACA;SACC,IAAI,KAAK6Z,iBAAL,CAAuBvU,IAAvB,EAA6BmU,WAA7B,EAA0C;WAC7ClH,SAAS,EAAE,CAACvV,QAAQ,CAAC2c,OAAO,CAAC3Z,CAAD,CAAR,CAAT,CADkC;WAE7C+R,IAAI,EAAE,KAAK2C,cAAL,IAAuB;UAF1B,CAAJ,EAIA;WACC,KAAKC,kBAAL,GAA0B3X,QAAQ,CAAC2c,OAAO,CAAC3Z,CAAD,CAAR,CAAlC;WACA;;;;;;GAMJqU,mBAAmB,GACnB;KACC,IAAI,KAAKpB,cAAL,EAAJ,EACA;OACC,KAAKC,WAAL,GAAmB,IAAI1S,YAAJ,CAAiB;SACnCzH,SAAS,EAAE,KAAKD,GAAL,CAASH,SADe;SAEnCO,IAAI,EAAE,KAAKmZ,eAAL,GAAuBC,KAFM;SAGnC5R,SAAS,EAAE,KAAKmY,YAAL,EAHwB;SAInCjY,WAAW,EAAE,KAJsB;SAKnCE,sBAAsB,EAAE,KAAK4T,cALM;SAMnC3T,mBAAmB,EAAE,UAASa,MAAT,EACrB;WACC,KAAKiU,IAAL,CAAU,6DAAV,EAAyE,IAAIkE,0BAAJ,CAAc;aAAC7gB,IAAI,EAAE;eAAC0I,MAAM,EAAEA;;YAA9B,CAAzE;WACA,KAAKgT,oBAAL;UAHoB,CAInB3Y,IAJmB,CAId,IAJc;QANH,CAAnB;OAYA,KAAKiX,WAAL,CAAiB3Z,OAAjB;;;;GAIF+a,uBAAuB,GACvB;KACC,IACC0F,UAAU,GAAG,EADd;SAECzY,AACA0Y,WAAW,GAAG,KAAKpG,cAAL,EAHf;SAICzB,YAAY,GAAG,KAAKC,eAAL,EAJhB;;KAMA,IAAI,KAAKc,kBAAL,EAAJ,EACA;OACC,KAAK2G,gBAAL,GAAwBjd,OAAxB,CAAgC,UAASzB,EAAT,EAChC;SACCA,EAAE,GAAG4B,QAAQ,CAAC5B,EAAD,CAAb;;SACA,IAAIA,EAAE,GAAG,CAAT,EACA;WACC4e,UAAU,CAAC5e,EAAD,CAAV,GAAiB,IAAjB;;QALF;OAUA,IAAI2G,YAAY,GAAG,EAAnB;OACAkY,WAAW,CAACC,kBAAZ,CAA+Brd,OAA/B,CAAuC,UAASsd,GAAT,EACvC;SACCA,GAAG,CAAC/e,EAAJ,GAAS4B,QAAQ,CAACmd,GAAG,CAAC/e,EAAL,CAAjB;;SACA,IAAI4e,UAAU,CAACG,GAAG,CAAC/e,EAAL,CAAd,EACA;WACC2G,YAAY,CAAC9E,IAAb,CAAkBkd,GAAlB;;QALF,EAOG,IAPH;OASA,KAAK9G,eAAL,GAAuB,IAAIxR,gBAAJ,CAAqB;SAC3C9I,SAAS,EAAE,KAAKD,GAAL,CAASH,SADuB;SAE3CO,IAAI,EAAE;WACLG,IAAI,EAAE+Y,YAAY,CAACG,SAAb,CAAuBlZ,IADxB;WAELsH,WAAW,EAAEyR,YAAY,CAACG,SAAb,CAAuB5R,WAF/B;WAGLvG,KAAK,EAAEgY,YAAY,CAACG,SAAb,CAAuBnY,KAHzB;WAILqC,QAAQ,EAAE2V,YAAY,CAACG,SAAb,CAAuB9V,QAJ5B;WAKL+B,KAAK,EAAE4T,YAAY,CAACG,SAAb,CAAuB/T;UAPY;SAS3CuD,YAAY,EAAEA,YAT6B;SAU3CjB,sBAAsB,EAAE,KAAK6T,kBAVc;SAW3C5T,mBAAmB,EAAE,YACrB;WACC,KAAK8U,IAAL,CAAU,iEAAV;WACA,KAAKjB,oBAAL;UAHoB,CAInB3Y,IAJmB,CAId,IAJc;QAXC,CAAvB;;OAkBA,IAAI,KAAK4Y,kBAAL,CAAwB,WAAxB,CAAJ,EACA;SACC,KAAKxB,eAAL,CAAqB9Z,OAArB;;;;;GAKHgb,sBAAsB,GACtB;KACC,IACC0F,WAAW,GAAG,KAAKpG,cAAL,EADf;SAECzB,YAAY,GAAG,KAAKC,eAAL,EAFhB;;KAIA,IAAI4H,WAAW,CAACG,YAAZ,KAA6B,GAA7B,IAAoChI,YAAY,CAACiI,QAAb,CAAsB7b,KAA9D,EACA;OACC,IAAIgD,YAAY,GAAG,KAAK8Y,gBAAL,EAAnB;OAEA,KAAK/G,cAAL,GAAsB,IAAItR,eAAJ,CAAoB;SACzClJ,SAAS,EAAE,KAAKD,GAAL,CAASH,SADqB;SAEzCO,IAAI,EAAEkZ,YAAY,CAACiI,QAFsB;SAGzCnY,WAAW,EAAE+X,WAAW,CAACM,YAHgB;SAIzCtZ,aAAa,EAAEO,YAAY,CAAClE,MAAb,GAAsB,CAAtB,GAA0BkE,YAAY,CAAC,CAAD,CAAtC,GAA4C,IAJlB;SAKzCT,mBAAmB,EAAE,YACrB;WACC,KAAK8U,IAAL,CAAU,gEAAV;WACA,KAAKjB,oBAAL;UAHoB,CAInB3Y,IAJmB,CAId,IAJc;QALA,CAAtB;;OAYA,IAAI,KAAK4Y,kBAAL,CAAwB,UAAxB,CAAJ,EACA;SACC,KAAKtB,cAAL,CAAoBha,OAApB;;;;;GAKHib,sBAAsB,GACtB;KACC,IACCyF,WAAW,GAAG,KAAKpG,cAAL,EADf;SAECzB,YAAY,GAAG,KAAKC,eAAL,EAFhB;;KAIA,IAAI,CAAC,KAAKkB,cAAV,EACA;OACC,KAAK5P,eAAL,GAAuB,IAAIR,gBAAJ,CAAqB;SAC3CpK,SAAS,EAAE,KAAKD,GAAL,CAASH,SADuB;SAE3CO,IAAI,EAAEkZ,YAAY,CAACvP,QAFwB;SAG3CS,OAAO,EAAE2W,WAAW,CAACO,QAAZ,KAAyB,GAHS;SAI3CzZ,mBAAmB,EAAE,YACrB;WACC,KAAK8U,IAAL,CAAU,iEAAV;WACA,KAAKjB,oBAAL;UAHoB,CAInB3Y,IAJmB,CAId,IAJc;QAJC,CAAvB;;OAWA,IAAI,KAAK4Y,kBAAL,CAAwB,UAAxB,CAAJ,EACA;SACC,KAAKlR,eAAL,CAAqBpK,OAArB;;;;;GAKHkb,sBAAsB,GACtB;KACC,IACC3I,QAAQ,GAAG,KADZ;SAECkJ,UAAU,GAAG,IAFd;SAGC5C,YAAY,GAAG,KAAKC,eAAL,EAHhB;SAIC4H,WAAW,GAAG,KAAKpG,cAAL,EAJf;KAMA,KAAKL,WAAL,GAAmB,IAAIlP,YAAJ,CAAiB;OACnCvL,SAAS,EAAE,KAAKD,GAAL,CAASH,SADe;OAEnCO,IAAI,EAAEkZ,YAAY,CAAC9M,IAFgB;OAGnC1E,WAAW,EAAE,KAHsB;OAInC4D,gBAAgB,EAAEyV,WAAW,CAACQ,iBAAZ,KAAkC,GAJjB;OAKnC1Z,mBAAmB,EAAE,KAAK2Z,kBAAL,CAAwBze,IAAxB,CAA6B,IAA7B,CALc;OAMnCsI,mBAAmB,EAAE,KAAK4R,wBAAL,CAA8Bla,IAA9B,CAAmC,IAAnC;MANH,CAAnB;;KASA,IAAI,KAAKyX,qBAAL,EAAJ,EACA;OACC,IAAIuG,WAAW,CAACU,iBAAZ,KAAkC,GAAtC,EACA;SACC,IAAIC,kBAAkB,GAAG,CAAE,IAAI9U,IAAJ,EAAD,CAAW+U,iBAAX,EAAD,GAAgC,EAAzD;;SACA,IAAID,kBAAkB,KAAK,KAAK7O,cAAhC,EACA;WACCD,QAAQ,GAAGmO,WAAW,CAACa,QAAvB;;;;OAIF,KAAKnH,WAAL,GAAmB,IAAIlI,YAAJ,CAAiB;SACnC1S,SAAS,EAAE,KAAKD,GAAL,CAASH,SADe;SAEnCO,IAAI,EAAEkZ,YAAY,CAAC/D,IAFgB;SAGnCzN,WAAW,EAAE,KAHsB;SAInCG,mBAAmB,EAAE,KAAKga,8BAAL,CAAoC9e,IAApC,CAAyC,IAAzC,CAJc;SAKnCyP,QAAQ,EAAE,KAAKA,QALoB;SAMnCC,MAAM,EAAE,KAAKA,MANsB;SAOnCG,QAAQ,EAAEA,QAPyB;SAQnCC,cAAc,EAAE,KAAKA,cARc;SASnCC,mBAAmB,EAAE,KAAKA;QATR,CAAnB;;;KAaD,KAAKyH,aAAL,GAAqB,IAAIrD,cAAJ,CAAmB;OACvCrX,SAAS,EAAE,KAAKD,GAAL,CAASH,SADmB;OAEvCmT,QAAQ,EAAEA,QAF6B;OAGvCE,mBAAmB,EAAE,KAAKA;MAHN,CAArB;;KAMA,IAAI,KAAK6I,kBAAL,CAAwB,MAAxB,CAAJ,EACA;OACC,KAAKpB,aAAL,CAAmBpa,IAAnB;;OACA,IAAI+Y,YAAY,CAAC9M,IAAb,CAAkBP,KAAlB,KAA4B,MAAhC,EACA;SACCiQ,UAAU,GAAG,KAAKC,WAAL,CAAiB;WAC7B1C,SAAS,EAAE,KAAKa,oBAAL,EADkB;WAE7BrB,IAAI,EAAE,KAAK7Q,eAAL,EAFuB;WAG7B2B,QAAQ,EAAE,KAAKyQ,kBAAL;UAHE,CAAb;;;OAOD,KAAKE,WAAL,CAAiBja,OAAjB,CAAyB;SACxB0H,aAAa,EAAE+T;QADhB;;OAIA,IAAI,KAAKrB,WAAL,IAAoB,CAAC,KAAKA,WAAL,CAAiBra,OAAjB,EAAzB,EACA;SACC,KAAKqa,WAAL,CAAiBpa,OAAjB;;MAlBF,MAsBA;OACC,KAAKka,aAAL,CAAmBtZ,IAAnB;;;;GAIFugB,kBAAkB,CAACpV,IAAD,EAAOc,QAAP,EAClB;KACC,KAAKyP,IAAL,CAAU,6DAAV;;KAEA,IAAI,KAAKnC,qBAAL,EAAJ,EACA;OACC,IAAItN,QAAJ,EACA;SACC,KAAKuN,WAAL,CAAiBta,IAAjB;SACA,IACCif,aADD;aAEC9S,WAAW,GAAG,KAAK8P,cAAL,EAFf;;SAIA,IAAI9P,WAAJ,EACA;WACC8S,aAAa,GAAG9S,WAAW,CAACmL,QAAZ,KAAyB,EAAzB,GAA8BnL,WAAW,CAACoL,UAAZ,EAA9C;;;SAGD,KAAK+C,WAAL,CAAiB3Z,OAAjB,CACC,KAAKqY,eAAL,GAAuBhE,IADxB,EAEC;WACC5B,SAAS,EAAE,KAAKsI,YAAL,CAAkB;aAACzP,IAAI,EAAEc;YAAzB,CADZ;WAECZ,WAAW,EAAEY,QAFd;WAGCnF,aAAa,EAAEqX;UALjB,EAXD;;;;;;;;;;;;;MAHD,MAqCA;OACC,KAAKyC,8BAAL,CAAoC,IAApC,EAA0C,IAA1C;;;KAED,KAAKjI,cAAL;;;GAGDiI,8BAA8B,CAACvc,KAAD,EAAQwc,UAAR,EAC9B;KACC,IAAIA,UAAU,KAAK,KAAnB,EACA;OACC,IAAI,KAAKC,uBAAT,EACA;SACC,KAAKA,uBAAL,GAA+BC,YAAY,CAAC,KAAKD,uBAAN,CAA3C;;;OAED,KAAKA,uBAAL,GAA+Bjc,UAAU,CAAC,YAAU;SACnD,KAAK+b,8BAAL,CAAoCvc,KAApC,EAA2C,KAA3C;QADyC,CAExCvC,IAFwC,CAEnC,IAFmC,CAAD,EAE3B,GAF2B,CAAzC;MAND,MAWA;OACC,IAAI,KAAK8c,wBAAL,EAAJ,EACA;SACC,KAAKE,sBAAL;;;OAED,IAAI,KAAKD,4BAAL,EAAJ,EACA;SACC,KAAKG,0BAAL;;;OAGD,KAAKjE,mBAAL;OACAvS,cAAW,CAACwS,eAAZ,CAA4BjN,MAA5B,EAAoC,sBAApC;;;KAED,KAAK4K,cAAL;;;GAGDoC,mBAAmB,GACnB;KACC,IAAI,KAAKzB,aAAL,IAAsB,KAAKoB,kBAAL,CAAwB,MAAxB,CAA1B,EACA;OACC,IAAIrP,WAAW,GAAG,KAAK8P,cAAL,EAAlB;;OACA,IAAI,KAAK9B,WAAL,CAAiB9N,YAAjB,CAA8BF,WAA9B,CAAJ,EACA;SACC,KAAKiO,aAAL,CAAmB5C,QAAnB,CAA4B/V,aAAG,CAACC,UAAJ,CAAe,oCAAf,CAA5B;QAFD,MAKA;SACC,IAAI,KAAK2Y,qBAAL,EAAJ,EACA;WACC,IAAI,KAAKC,WAAL,CAAiB1E,iBAAjB,EAAJ,EACA;aACC,IAAIrC,SAAS,GAAG,KAAK+G,WAAL,CAAiBtP,QAAjB,EAAhB;aACA,KAAKoP,aAAL,CAAmBzZ,OAAnB,CAA2B;eAC1BwW,QAAQ,EAAE5D,SAAS,GAAGpH,WAAH,GAAiB,IADV;eAE1B3C,QAAQ,EAAE+J,SAAS,GAAG,KAAK0G,kBAAL,EAAH,GAA+B,IAFxB;eAG1BhQ,OAAO,EAAE;cAHV;YAHD,MAUA;aACC,KAAKmQ,aAAL,CAAmBtZ,IAAnB;;UAbF,MAiBA;WACC,KAAKsZ,aAAL,CAAmBzZ,OAAnB,CAA2B;aAC1BwW,QAAQ,EAAE,KAAKgD,WAAL,CAAiBrO,eAAjB,CAAiCK,WAAjC,IAAgDA,WAAhD,GAA8D,IAD9C;aAE1B3C,QAAQ,EAAE,KAAKyQ,kBAAL,EAFgB;aAG1BhQ,OAAO,EAAE;YAHV;;;;;;GAUJ2R,WAAW,CAAC9c,MAAD,EACX;KACC,IACCshB,WAAW,GAAGpe,IAAI,CAAC8S,IAAL,CAAUhW,MAAM,CAAC0K,QAAP,GAAkB,KAAKwJ,KAAjC,CADf;SAEC8O,QAAQ,GAAG,IAFZ;SAGC7V,IAAI,GAAG,KAAKgS,cAHb,CADD;;KAOC,OAAO,IAAP,EACA;OACC,IAAI,KAAKuC,iBAAL,CAAuBvU,IAAvB,EAA6BmU,WAA7B,EAA0C;SAC7ClH,SAAS,EAAEpa,MAAM,CAACoa,SAD2B;SAE7CR,IAAI,EAAE5Z,MAAM,CAAC4Z;QAFV,CAAJ,EAIA;SACCoJ,QAAQ,GAAG7V,IAAX;SACA;;;OAGDA,IAAI,CAAC2B,OAAL,CAAa3B,IAAI,CAAC4B,OAAL,KAAiB,CAA9B;;OACA,IAAI5B,IAAI,CAACU,OAAL,MAAkB,KAAKuR,YAAL,CAAkBvR,OAAlB,EAAtB,EACA;SACC;;;;KAIF,OAAOmV,QAAP;;;GAGDrG,qBAAqB,CAAC3c,MAAD,EACrB;KACC,IACCijB,UADD;SACaC,gBADb;SAECvD,SAAS,GAAG,EAFb;;KAIA,IAAI,KAAKpE,qBAAL,EAAJ,EACA;OACC,IAAI+F,WAAW,GAAGpe,IAAI,CAAC8S,IAAL,CAAUhW,MAAM,CAAC0K,QAAP,GAAkB,KAAKwJ,KAAjC,CAAlB;OAEA,KAAKuF,WAAL,CAAiB/U,OAAjB,CAAyB,UAASyI,IAAT,EACzB;SACCwS,SAAS,CAACxS,IAAI,CAACmS,GAAN,CAAT,GAAsB,KAAKoC,iBAAL,CAAuBvU,IAAI,CAACmS,GAA5B,EAAiCgC,WAAjC,EAA8C;WACnElH,SAAS,EAAEpa,MAAM,CAACoa,SADiD;WAEnER,IAAI,EAAE5Z,MAAM,CAAC4Z;UAFQ,CAAtB;QAFD,EAMG,IANH;MAJD,MAaA;OACC,IACC/R,CADD;WACIsb,OADJ;WACahW,IADb;WACmBiW,CADnB;WAECC,OAAO,GAAGrjB,MAAM,CAAC4Z,IAAP,GAAc,SAAS5Z,MAAM,CAAC4Z,IAA9B,GAAqC,IAFhD;WAGC0J,UAAU,GAAGpgB,IAAI,CAAC8S,IAAL,CAAUhW,MAAM,CAAC0K,QAAP,GAAkB,IAA5B,CAHd;OAKAyY,OAAO,GAAG,CAAV;;OACA,KAAKtb,CAAC,GAAG,KAAK4R,WAAL,CAAiBtU,MAA1B,EAAkC0C,CAAC,EAAnC,EAAuCA,CAAC,IAAI,CAA5C,EACA;SACCob,UAAU,GAAG,IAAb;SACAC,gBAAgB,GAAG,IAAnB;SACA/V,IAAI,GAAG,KAAKsM,WAAL,CAAiB5R,CAAjB,CAAP;;SAEA,IAAIwb,OAAJ,EACA;;WAECJ,UAAU,GAAG,CAAC9V,IAAI,CAACoS,UAAL,CAAgB8D,OAAhB,CAAd;;;SAGD,IAAIJ,UAAU,IAAIjjB,MAAM,CAACoa,SAArB,IAAkCpa,MAAM,CAACoa,SAAP,CAAiBjV,MAAjB,GAA0B,CAAhE,EACA;WACC,KAAKie,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGpjB,MAAM,CAACoa,SAAP,CAAiBjV,MAAjC,EAAyCie,CAAC,EAA1C,EACA;aACCF,gBAAgB,GAAGA,gBAAgB,IAAI,CAAC/V,IAAI,CAACoS,UAAL,CAAgB,aAAavf,MAAM,CAACoa,SAAP,CAAiBgJ,CAAjB,CAA7B,CAAxC;;aACA,IAAI,CAACF,gBAAL,EACA;eACC;;;;;SAKH,IAAID,UAAU,IAAIC,gBAAlB,EACA;WACCC,OAAO;UAFR,MAKA;WACCA,OAAO,GAAG,CAAV;;;SAGDxD,SAAS,CAACxS,IAAI,CAACmS,GAAN,CAAT,GAAsB2D,UAAU,IAAIC,gBAAd,IAAkCI,UAAU,IAAIH,OAAtE;;;;KAIF,OAAOxD,SAAP;;;GAGD/C,YAAY,CAAC5c,MAAD,EACZ;KACC,IAAIA,MAAM,CAACmN,IAAX,EACA;OACCnN,MAAM,CAACmN,IAAP,GAAc,KAAKkO,WAAL,CAAiBnP,QAAjB,EAAd;;;KAGD,IAAIoI,SAAS,GAAG,EAAhB;;KACA,IAAIpQ,cAAI,CAACkJ,MAAL,CAAYpN,MAAM,CAACmN,IAAnB,CAAJ,EACA;OACC,IAAI,KAAKuO,cAAL,GAAsB4G,iBAAtB,KAA4C,GAA5C,KACC,KAAK1B,wBAAL,MAAmC,KAAKC,4BAAL,EADpC,CAAJ,EAEA;SACC,MAAMiB,WAAW,GAAG,KAAKpG,cAAL,EAApB;SACA,IACC6H,QADD;aAEC1b,CAFD;aAEIub,CAFJ;aAEOlN,IAFP;aAGCsN,OAAO,GAAG,CAHX;aAICC,YAAY,GAAG,CAJhB;aAKCC,SAAS,GAAG,KAAKrD,YAAL,EALb;aAMC5S,OAAO,GAAGjD,cAAW,CAACgD,UAAZ,CAAuB,KAAK4L,WAA5B,EAAyCpZ,MAAM,CAACmN,IAAhD,CANX;aAOC4T,UAAU,GAAG,KAAKtH,WAAL,CAAiB,KAAK4F,gBAAL,CAAsB5R,OAAtB,CAAjB,CAPd;aAQC6T,WAAW,GAAGpe,IAAI,CAAC8S,IAAL,CAAU,KAAKmF,kBAAL,KAA4B,KAAKjH,KAA3C,CARf;;SAUA,IAAI,KAAKyP,gBAAL,CAAsBlW,OAAtB,CAAJ,EACA;WACC,MAAMmW,KAAK,GAAG,IAAIjW,IAAJ,EAAd;WACA,MAAMkW,WAAW,GAAG/B,WAAW,CAACU,iBAAZ,KAAkC,GAAlC,GACjBoB,KAAK,CAAClB,iBAAN,KAA4B,EAA5B,GAAiC,KAAK9O,cADrB,GAEnB,CAFD;WAGA6P,YAAY,GAAGG,KAAK,CAACpL,QAAN,KAAmB,EAAnB,GAAwBoL,KAAK,CAACnL,UAAN,EAAxB,GAA8CoL,WAAW,GAAG,EAA3E;UAlBF;;;SAsBCH,SAAS,CAAChf,OAAV,CAAkB,UAASiR,IAAT,EAAc;WAACrB,SAAS,CAACqB,IAAI,CAACO,IAAN,CAAT,GAAuB,IAAvB;UAAjC,EAAgE,IAAhE;;SAEA,IAAI,KAAK0K,wBAAL,EAAJ,EACA;WACC,MAAMtY,QAAQ,GAAG,KAAKmZ,aAAL,EAAjB;;WAEA,KAAK5Z,CAAC,GAAG6b,SAAS,CAACve,MAAnB,EAA2B0C,CAAC,EAA5B,EAAgCA,CAAC,IAAI,CAArC,EACA;aACCqO,IAAI,GAAGwN,SAAS,CAAC7b,CAAD,CAAT,CAAaqO,IAApB;aACAqN,QAAQ,GAAG,KAAX;;aAEA,IAAIE,YAAY,IAAIvN,IAAI,GAAGuN,YAA3B,EACA;eACCnP,SAAS,CAAC4B,IAAD,CAAT,GAAkB,KAAlB;eACA;;;aAGD,KAAKkN,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG9a,QAAQ,CAACnD,MAAzB,EAAiCie,CAAC,EAAlC,EACA;eACC,IAAI,CAACrC,UAAU,CAAC7L,KAAX,CAAiBgB,IAAjB,CAAD,IACA,CAAC6K,UAAU,CAAC7L,KAAX,CAAiBgB,IAAjB,EAAuB,SAAS5N,QAAQ,CAAC8a,CAAD,CAAxC,CADL,EAEA;iBACCG,QAAQ,GAAG,IAAX;iBACA;;;;aAIFjP,SAAS,CAAC4B,IAAD,CAAT,GAAkB5B,SAAS,CAAC4B,IAAD,CAAT,IAAmBqN,QAAnB,IAA+BjC,WAAW,IAAIkC,OAAhE;aACAA,OAAO,GAAGD,QAAQ,GAAGC,OAAO,GAAG,CAAb,GAAiB,CAAnC;;;;SAIF,IAAI,KAAK3C,4BAAL,EAAJ,EACA;WACC,MAAMW,OAAO,GAAG,KAAKG,gBAAL,EAAhB;;WACA,KAAK9Z,CAAC,GAAG6b,SAAS,CAACve,MAAnB,EAA2B0C,CAAC,EAA5B,EAAgCA,CAAC,IAAI,CAArC,EACA;aACCqO,IAAI,GAAGwN,SAAS,CAAC7b,CAAD,CAAT,CAAaqO,IAApB;aACAqN,QAAQ,GAAG,KAAX;;aAEA,IAAIE,YAAY,IAAIvN,IAAI,GAAGuN,YAA3B,EACA;eACCnP,SAAS,CAAC4B,IAAD,CAAT,GAAkB,KAAlB;eACA;;;aAGD,KAAKkN,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG5B,OAAO,CAACrc,MAAxB,EAAgCie,CAAC,EAAjC,EACA;eACC,IAAI,CAACrC,UAAU,CAAC7L,KAAX,CAAiBgB,IAAjB,CAAD,IACA,CAAC6K,UAAU,CAAC7L,KAAX,CAAiBgB,IAAjB,EAAuB,aAAasL,OAAO,CAAC4B,CAAD,CAA3C,CADL,EAEA;iBACCG,QAAQ,GAAG,IAAX;iBACA;;;;aAGFjP,SAAS,CAAC4B,IAAD,CAAT,GAAkB5B,SAAS,CAAC4B,IAAD,CAAT,IAAmBqN,QAAnB,IAA+BjC,WAAW,IAAIkC,OAAhE;aACAA,OAAO,GAAGD,QAAQ,GAAGC,OAAO,GAAG,CAAb,GAAiB,CAAnC;;;QAhFH,MAqFA;SACClP,SAAS,GAAI,KAAKwP,qBAAL,CAA2B;WACvC3W,IAAI,EAAEnN,MAAM,CAACmN,IAAP,IAAe,KAAKkO,WAAL,CAAiBnP,QAAjB,EADkB;WAEvCkO,SAAS,EAAE,KAAKa,oBAAL,EAF4B;WAGvCrB,IAAI,EAAE,KAAK7Q,eAAL,EAHiC;WAIvC2B,QAAQ,EAAE,KAAKyQ,kBAAL;UAJE,CAAb;;;;KASF,OAAO7G,SAAP;;;GAGDwP,qBAAqB,CAAC9jB,MAAD,EACrB;KACC,IAAIyjB,YAAY,GAAG,CAAnB;KACA,MAAM3B,WAAW,GAAG,KAAKpG,cAAL,EAApB;KACA,IACCjO,OADD;SACUsT,UADV;SACsBlZ,CADtB;SACyBub,CADzB;SAC4BlN,IAD5B;SAECsN,OAFD;SAGCH,OAAO,GAAGrjB,MAAM,CAAC4Z,IAAP,GAAc,SAAS5Z,MAAM,CAAC4Z,IAA9B,GAAqC,IAHhD;SAIC0H,WAAW,GAAGpe,IAAI,CAAC8S,IAAL,CAAUhW,MAAM,CAAC0K,QAAP,GAAkB,KAAKwJ,KAAjC,CAJf;SAKC+O,UALD;SAKaC,gBALb;SAMCQ,SAAS,GAAG,KAAKrD,YAAL,EANb;SAOChU,gBAAgB,GAAGyV,WAAW,CAACQ,iBAAZ,KAAkC,GAPtD;SAQChO,SAAS,GAAG,EARb,CAHD;;KAcCoP,SAAS,CAAChf,OAAV,CAAkB,UAASiR,IAAT,EAAc;OAACrB,SAAS,CAACqB,IAAI,CAACO,IAAN,CAAT,GAAuB,IAAvB;MAAjC,EAAgE,IAAhE;;KAEA,IAAIhS,cAAI,CAACkJ,MAAL,CAAYpN,MAAM,CAACmN,IAAnB,CAAJ,EACA;OACCM,OAAO,GAAGjD,cAAW,CAACgD,UAAZ,CAAuB,KAAK4L,WAA5B,EAAyCpZ,MAAM,CAACmN,IAAhD,CAAV;OACA4T,UAAU,GAAG,KAAKtH,WAAL,CAAiB,KAAK4F,gBAAL,CAAsB5R,OAAtB,CAAjB,CAAb;OACA+V,OAAO,GAAG,CAAV;;OAEA,IAAI,KAAKG,gBAAL,CAAsBlW,OAAtB,CAAJ,EACA;SACC,MAAMmW,KAAK,GAAG,IAAIjW,IAAJ,EAAd;SACA,MAAMkW,WAAW,GAAG/B,WAAW,CAACU,iBAAZ,KAAkC,GAAlC,GACjBoB,KAAK,CAAClB,iBAAN,KAA4B,EAA5B,GAAiC,KAAK9O,cADrB,GAEnB,CAFD;SAGA6P,YAAY,GAAGG,KAAK,CAACpL,QAAN,KAAmB,EAAnB,GAAwBoL,KAAK,CAACnL,UAAN,EAAxB,GAA8CoL,WAAW,GAAG,EAA3E;;;OAGD,KAAKhc,CAAC,GAAG6b,SAAS,CAACve,MAAnB,EAA2B0C,CAAC,EAA5B,EAAgCA,CAAC,IAAI,CAArC,EACA;SACCqO,IAAI,GAAGwN,SAAS,CAAC7b,CAAD,CAAT,CAAaqO,IAApB;;SACA,IAAIuN,YAAY,IAAIvN,IAAI,GAAGuN,YAA3B,EACA;WACCnP,SAAS,CAAC4B,IAAD,CAAT,GAAkB,KAAlB;WACA;;;SAGD,IAAI7J,gBAAJ,EACA;WACCiI,SAAS,CAAC4B,IAAD,CAAT,GAAkBoL,WAAW,IAAIkC,OAAjC;WACAA,OAAO;UAHR,MAMA;WACCP,UAAU,GAAG,IAAb;WACAC,gBAAgB,GAAG,IAAnB;;WAEA,IAAIG,OAAJ,EACA;;aAECJ,UAAU,GAAG,CAAClC,UAAU,CAAC7L,KAAX,CAAiBgB,IAAjB,CAAD,IAA2B,CAAC6K,UAAU,CAAC7L,KAAX,CAAiBgB,IAAjB,EAAuBmN,OAAvB,CAAzC;;;WAGD,IAAIrjB,MAAM,CAACoa,SAAP,IAAoBpa,MAAM,CAACoa,SAAP,CAAiBjV,MAAjB,GAA0B,CAAlD,EACA;aACC,KAAKie,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGpjB,MAAM,CAACoa,SAAP,CAAiBjV,MAAjC,EAAyCie,CAAC,EAA1C,EACA;eACCF,gBAAgB,GAAGA,gBAAgB,KAAK,CAACnC,UAAU,CAAC7L,KAAX,CAAiBgB,IAAjB,CAAD,IAA2B,CAAC6K,UAAU,CAAC7L,KAAX,CAAiBgB,IAAjB,EAAuB,aAAalW,MAAM,CAACoa,SAAP,CAAiBgJ,CAAjB,CAApC,CAAjC,CAAnC;;eAEA,IAAI,CAACF,gBAAL,EACA;iBACC;;;;;WAIH5O,SAAS,CAAC4B,IAAD,CAAT,GAAkB+M,UAAU,IAAIC,gBAAd,IAAkC5B,WAAW,IAAIkC,OAAnE;;WAEA,IAAIP,UAAU,IAAIC,gBAAlB,EACA;aACCM,OAAO;YAFR,MAKA;aACCA,OAAO,GAAG,CAAV;;;;;;KAKJ,OAAOlP,SAAP;;;GAGDoN,iBAAiB,CAACvU,IAAD,EAAOmU,WAAP,EAAoBthB,MAApB,EACjB;KACC,IACCijB,UAAU,GAAG,IADd;SAECC,gBAAgB,GAAG,IAFpB;SAGCzV,OAAO,GAAGvJ,cAAI,CAACkJ,MAAL,CAAYD,IAAZ,IAAoB3C,cAAW,CAACgD,UAAZ,CAAuB,KAAK4L,WAA5B,EAAyCjM,IAAzC,CAApB,GAAqEA,IAHhF;KAKAnN,MAAM,GAAGA,MAAM,IAAI,EAAnB;;KACA,IAAI,KAAK8a,cAAL,MAAyB9a,MAAM,CAAC4Z,IAApC,EACA;OACC,IAAI,KAAKE,cAAL,CAAoBF,IAApB,CAAyB5Z,MAAM,CAAC4Z,IAAhC,KACA,CAAC,KAAKmK,qBAAL,CAA2B;SAC9BtE,UAAU,EAAE,MADkB;SAE9BC,QAAQ,EAAE1f,MAAM,CAAC4Z,IAFa;SAG9BnM,OAAO,EAAEA,OAHqB;SAI9B6T,WAAW,EAAEA;QAJV,CADL,EAQA;SACC2B,UAAU,GAAG,KAAb;;;;KAIF,IAAI,KAAKjI,kBAAL,MAA6BiI,UAA7B,IACA/e,cAAI,CAACG,OAAL,CAAarE,MAAM,CAACoa,SAApB,CADA,IACkCpa,MAAM,CAACoa,SAAP,CAAiBjV,MAAjB,GAA2B,CADjE,EAEA;OACCnF,MAAM,CAACoa,SAAP,CAAiB1V,OAAjB,CAAyB,UAAS6Y,UAAT,EACzB;SACC,IAAI2F,gBAAgB,IAChB,KAAKpJ,cAAL,CAAoBD,QAApB,CAA6B0D,UAA7B,CADA,IAEA,CAAC,KAAKwG,qBAAL,CAA2B;WAC9BtE,UAAU,EAAE,UADkB;WAE9BC,QAAQ,EAAEnC,UAFoB;WAG9B9P,OAAO,EAAEA,OAHqB;WAI9B6T,WAAW,EAAEA;UAJV,CAFL,EASA;WACC4B,gBAAgB,GAAG,KAAnB;;QAZF,EAcG,IAdH;;;KAiBD,OAAOD,UAAU,IAAIC,gBAArB;;;GAGDa,qBAAqB,CAAC/jB,MAAD,EACrB;KACC,IACCgkB,YADD;SAEC9O,KAFD;SAEQrN,CAFR;SAGCoc,aAAa,GAAG,CAHjB;SAICC,YAAY,GAAG,KAJhB;;KAMA,IAAI,KAAKpK,cAAL,CAAoB9Z,MAAM,CAACyf,UAA3B,EAAuCzf,MAAM,CAAC0f,QAA9C,KACH,KAAK5F,cAAL,CAAoB9Z,MAAM,CAACyf,UAA3B,EAAuCzf,MAAM,CAAC0f,QAA9C,EAAwD1f,MAAM,CAACyN,OAA/D,CADD,EAEA;OACCuW,YAAY,GAAG,KAAKlK,cAAL,CAAoB9Z,MAAM,CAACyf,UAA3B,EAAuCzf,MAAM,CAAC0f,QAA9C,EAAwD1f,MAAM,CAACyN,OAA/D,CAAf;OACAyH,KAAK,GAAG,KAAKmL,YAAL,EAAR;;OACA,KAAKxY,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGqN,KAAK,CAAC/P,MAAtB,EAA8B0C,CAAC,EAA/B,EACA;SACC,IAAI,CAACmc,YAAY,CAAC9O,KAAK,CAACrN,CAAD,CAAL,CAASqO,IAAV,CAAjB,EACA;WACC+N,aAAa;;WACb,IAAIA,aAAa,IAAIjkB,MAAM,CAACshB,WAA5B,EACA;aACC4C,YAAY,GAAG,IAAf;aACA;;UANF,MAUA;WACCD,aAAa,GAAG,CAAhB;;;MAlBH,MAuBA;OACCC,YAAY,GAAG,IAAf;;;KAGD,OAAOA,YAAP;;;GAGDjJ,oBAAoB,GACpB;KACC,IAAIJ,MAAM,GAAG,IAAb;;KACA,IAAI,KAAKK,eAAT,EACA;OACCL,MAAM,GAAG,KAAKK,eAAL,CAAqBjT,iBAArB,EAAT;;OACA,IAAI/D,cAAI,CAACG,OAAL,CAAawW,MAAb,KAAwB,CAACA,MAAM,CAAC1V,MAApC,EACA;SACC0V,MAAM,GAAG,IAAT;;;;KAGF,OAAOA,MAAP;;;GAID9R,eAAe,GACf;KACC,IAAI8R,MAAM,GAAG,IAAb;;KACA,IAAI,KAAKE,WAAT,EACA;OACCF,MAAM,GAAG,KAAKE,WAAL,CAAiBhS,eAAjB,EAAT;;;KAED,OAAO8R,MAAP;;;GAGDM,kBAAkB,GAClB;KACC,IAAIN,MAAM,GAAG,IAAb;;KACA,IAAI,KAAKrP,eAAT,EACA;OACCqP,MAAM,GAAG,KAAKrP,eAAL,CAAqBQ,gBAArB,EAAT;MAFD,MAIK,IAAI,KAAKoP,cAAT,EACL;OACC,IAAInR,OAAO,GAAG,KAAKmR,cAAL,CAAoB/Q,kBAApB,CAAuC,IAAvC,CAAd;;OACA,IAAIJ,OAAO,IAAIA,OAAO,CAACS,QAAvB,EACA;SACCmQ,MAAM,GAAGhW,QAAQ,CAACoF,OAAO,CAACS,QAAT,CAAjB;;;;KAGF,OAAOmQ,MAAP;;;GAGD0G,6BAA6B,GAC7B;KACC,IACCtH,YAAY,GAAG,KAAKC,eAAL,EADhB;SAEC4H,WAAW,GAAG,KAAKpG,cAAL,EAFf;SAGChR,QAHD;SAGW7C,CAHX;SAGcyZ,WAHd;;KAKA,IAAIQ,WAAW,CAACG,YAAZ,KAA6B,GAA7B,IAAoChI,YAAY,CAACiI,QAAb,CAAsB7b,KAA9D,EACA;OACC,MAAM6b,QAAQ,GAAG,KAAKC,gBAAL,EAAjB;;OACA,IAAIje,cAAI,CAACG,OAAL,CAAayd,WAAW,CAACM,YAAzB,KAA0CF,QAAQ,CAAC/c,MAAT,GAAkB,CAAhE,EACA;SACC,KAAK0C,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGia,WAAW,CAACM,YAAZ,CAAyBjd,MAAzC,EAAiD0C,CAAC,EAAlD,EACA;WACC,IAAI2C,cAAW,CAACO,QAAZ,CAAqB+W,WAAW,CAACM,YAAZ,CAAyBva,CAAzB,EAA4BzH,IAAjD,MAA2D8hB,QAAQ,CAAC,CAAD,CAAvE,EACA;aACCxX,QAAQ,GAAG7F,QAAQ,CAACid,WAAW,CAACM,YAAZ,CAAyBva,CAAzB,EAA4B6C,QAA7B,CAAnB;aACA;;;;MAVJ,MAgBA;OACCA,QAAQ,GAAG7F,QAAQ,CAACoV,YAAY,CAACvP,QAAb,CAAsBU,YAAvB,CAAnB;;;KAGDkW,WAAW,GAAGpe,IAAI,CAAC8S,IAAL,CAAUtL,QAAQ,GAAG,KAAKwJ,KAA1B,CAAd;KACA,OAAOoN,WAAP;;;GAGDlE,qBAAqB,GACrB;KACC,IAAIvC,MAAM,GAAG,EAAb;;KACA,IAAI,KAAKO,cAAT,EACA;OACC,IAAInR,OAAO,GAAG,KAAKmR,cAAL,CAAoB/Q,kBAApB,CAAuC,IAAvC,CAAd;;OACA,IAAIJ,OAAO,IAAIA,OAAO,CAAC7J,IAAvB,EACA;SACCya,MAAM,GAAG5Q,OAAO,CAAC7J,IAAjB;;;;KAGF,OAAOya,MAAP;;;GAGDsC,cAAc,GACd;KACC,IAAItC,MAAM,GAAG,IAAb;;KACA,IAAI,KAAKQ,WAAL,IAAoB,KAAKA,WAAL,CAAiBla,OAAjB,EAAxB,EACA;OACC0Z,MAAM,GAAG,KAAKQ,WAAL,CAAiBnP,QAAjB,EAAT;;OACA,IAAI,KAAKqP,qBAAL,EAAJ,EACA;SACC,IACC4I,IADD;aACOC,GADP;aAEC3P,SAAS,GAAG,KAAK+G,WAAL,CAAiBtP,QAAjB,EAFb;;SAIA,IAAIuI,SAAJ,EACA;WACC0P,IAAI,GAAGjhB,IAAI,CAACkQ,KAAL,CAAWqB,SAAS,GAAG,EAAvB,CAAP;WACA2P,GAAG,GAAG3P,SAAS,GAAG0P,IAAI,GAAG,EAAzB;WACAtJ,MAAM,CAAC/M,QAAP,CAAgBqW,IAAhB,EAAsBC,GAAtB,EAA2B,CAA3B,EAA8B,CAA9B;;QAVF,MAcA;SACCvJ,MAAM,CAAC/M,QAAP,CAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB;;;;KAIF,OAAO+M,MAAP;;;GAGDwF,YAAY,GACZ;KACC,IAAI,CAAC,KAAKnL,KAAV,EACA;OACC,KAAKA,KAAL,GAAa,EAAb;OACA,IAAIS,IAAJ;OACA,IAAIsB,UAAJ;OAGA,IAAIf,IAAI,GAAG,KAAK3C,QAAL,GAAgB,EAA3B;;OAEA,OAAO2C,IAAI,GAAG,KAAK1C,MAAL,GAAc,EAA5B,EACA;SAGCyD,UAAU,GAAGf,IAAI,GAAG,KAAKhC,KAAzB;SAIAyB,IAAI,GAAG;WACNO,IAAI,EAAEA;UADP;SAIA,KAAKhB,KAAL,CAAWpQ,IAAX,CAAgB6Q,IAAhB;SACAO,IAAI,IAAI,KAAKhC,KAAb;;;;KAIF,OAAO,KAAKgB,KAAZ;;;GAGD4F,cAAc,GACd;KACC,IAAI,KAAKuJ,QAAL,KAAkB3b,SAAtB,EACA;OACC,KAAK2b,QAAL,GAAgB,KAAK3I,cAAL,GAAsB,WAAtB,MAAuC,GAAvD;;;KAED,OAAO,KAAK2I,QAAZ;;;GAGDrJ,kBAAkB,GAClB;KACC,IAAI,KAAKsJ,YAAL,KAAsB5b,SAA1B,EACA;OACC,IAAIoZ,WAAW,GAAG,KAAKpG,cAAL,EAAlB;OACA,KAAK4I,YAAL,GAAoB,CAAC,EAAExC,WAAW,CAACyC,aAAZ,KAA8B,GAA9B,IACnBzC,WAAW,CAACC,kBADK,CAArB;;;KAGD,OAAO,KAAKuC,YAAZ;;;GAGD/I,qBAAqB,GACrB;KACC,IAAI,KAAKiJ,OAAL,KAAiB9b,SAArB,EACA;OACC,KAAK8b,OAAL,GAAe,KAAK9I,cAAL,GAAsB2G,QAAtB,KAAmC,GAAlD;;;KAED,OAAO,KAAKmC,OAAZ;;;GAGD9H,kBAAkB,CAACnR,IAAD,EAClB;KACC,IAAIsP,MAAM,GAAG,KAAb;;KACA,IAAItP,IAAI,KAAK,WAAb,EACA;OACC,IAAI,KAAKyP,kBAAL,MAA6B,CAAC,KAAKF,cAAL,EAAlC,EACA;SACCD,MAAM,GAAG,IAAT;QAFD,MAIK,IAAI,KAAKC,cAAL,EAAJ,EACL;SACCD,MAAM,GAAG,KAAK9R,eAAL,EAAT;;MARF,MAWK,IAAIwC,IAAI,KAAK,MAAT,IAAmBA,IAAI,KAAK,UAA5B,IAA0CA,IAAI,KAAK,UAAvD,EACL;OACC,IAAI,KAAKuP,cAAL,MAAyB,KAAKE,kBAAL,EAA7B,EACA;SACCH,MAAM,GAAG,KAAK9R,eAAL,MAA0B,KAAKkS,oBAAL,EAAnC;QAFD,MAIK,IAAI,KAAKH,cAAL,EAAJ,EACL;SACCD,MAAM,GAAG,KAAK9R,eAAL,EAAT;QAFI,MAIA,IAAI,KAAKiS,kBAAL,EAAJ,EACL;SACCH,MAAM,GAAG,KAAKI,oBAAL,EAAT;;;;KAGF,OAAOJ,MAAP;;;GAGD8I,gBAAgB,CAAClW,OAAD,EAChB;KACC,IAAI,CAAC,KAAKgX,YAAV,EACA;OACC,IAAIb,KAAK,GAAG,IAAIjW,IAAJ,EAAZ;OACA,KAAK8W,YAAL,GAAoBja,cAAW,CAACgD,UAAZ,CAAuB,KAAK4L,WAA5B,EAAyCwK,KAAzC,CAApB;;;KAED,OAAO,KAAKa,YAAL,KAAsBhX,OAA7B;;;GAGDkU,gBAAgB,GAChB;KACC,MAAM1H,YAAY,GAAG,KAAKC,eAAL,EAArB;KACA,IAAI7T,KAAK,GAAG,EAAZ;;KACA,IAAInC,cAAI,CAACG,OAAL,CAAa4V,YAAY,CAACG,SAAb,CAAuB/T,KAApC,CAAJ,EACA;OACCA,KAAK,GAAG4T,YAAY,CAACG,SAAb,CAAuB/T,KAA/B;MAFD,MAIK,IAAInC,cAAI,CAACgG,QAAL,CAAc+P,YAAY,CAACG,SAAb,CAAuB/T,KAArC,CAAJ,EACL;OACCA,KAAK,GAAG4T,YAAY,CAACG,SAAb,CAAuB/T,KAAvB,CAA6BiD,KAA7B,CAAmC,GAAnC,CAAR;;;KAED,OAAOjD,KAAP;;;GAGDob,aAAa,GACb;KACC,MAAMxH,YAAY,GAAG,KAAKC,eAAL,EAArB;KACA,IAAI7T,KAAK,GAAG,EAAZ;;KACA,IAAInC,cAAI,CAACG,OAAL,CAAa4V,YAAY,CAACE,KAAb,CAAmB9T,KAAhC,CAAJ,EACA;OACCA,KAAK,GAAG4T,YAAY,CAACE,KAAb,CAAmB9T,KAA3B;MAFD,MAIK,IAAInC,cAAI,CAACgG,QAAL,CAAc+P,YAAY,CAACE,KAAb,CAAmB9T,KAAjC,CAAJ,EACL;OACCA,KAAK,GAAG4T,YAAY,CAACE,KAAb,CAAmB9T,KAAnB,CAAyBiD,KAAzB,CAA+B,GAA/B,CAAR;;;KAED,OAAOjD,KAAP;;;GAGD8b,gBAAgB,GAChB;KACC,MAAMlI,YAAY,GAAG,KAAKC,eAAL,EAArB;KACA,IAAI7T,KAAK,GAAG,EAAZ;;KACA,IAAInC,cAAI,CAACG,OAAL,CAAa4V,YAAY,CAACiI,QAAb,CAAsB7b,KAAnC,CAAJ,EACA;OACCA,KAAK,GAAG4T,YAAY,CAACiI,QAAb,CAAsB7b,KAA9B;MAFD,MAIK,IAAInC,cAAI,CAACgG,QAAL,CAAc+P,YAAY,CAACiI,QAAb,CAAsB7b,KAApC,CAAJ,EACL;OACCA,KAAK,GAAG4T,YAAY,CAACiI,QAAb,CAAsB7b,KAAtB,CAA4BiD,KAA5B,CAAkC,GAAlC,CAAR;;;KAED,OAAOjD,KAAP;;;CA5pDF;;CCTO,MAAMqe,QAAN,CACP;GAGW,OAAHC,GAAG,CAAE7Z,GAAF,EACV;KACC,IACC8Z,WAAW,GAAG,GADf;SAECC,aAAa,GAAG,WAFjB;SAGCC,WAAW,GAAG,IAHf;SAICC,SAAS,GAAG,GAJb;SAKCC,GAAG,GAAGla,GAAG,CAAC3F,MALX;SAMC0V,MAAM,GAAG,EANV;SAOCoK,WAAW,GAAG,EAPf;SAQCpd,CARD;;KAUA,KAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGmd,GAAhB,EAAqBnd,CAAC,EAAtB,EACA;OACC,IACCqd,OADD;WAECC,GAAG,GAAGra,GAAG,CAACsa,MAAJ,CAAWvd,CAAX,CAFP;;OAIA,IAAIgd,aAAa,CAACQ,IAAd,CAAmBF,GAAnB,CAAJ,EACA;SACCD,OAAO,GAAGC,GAAV;QAFD,MAIK,IAAIL,WAAW,CAACO,IAAZ,CAAiBF,GAAjB,CAAJ,EACL;SACC,IAAItd,CAAC,GAAG,CAAJ,IAASod,WAAW,KAAKL,WAA7B,EACA;WACCM,OAAO,GAAGN,WAAV;UAFD,MAKA;WACCM,OAAO,GAAG,EAAV;;QARG,MAYL;SACCA,OAAO,GAAGR,QAAQ,CAACY,OAAT,CAAiBH,GAAjB,CAAV;;SAEA,IAAID,OAAO,KAAK,IAAhB,EACA;WACC,IAAIrd,CAAC,GAAG,CAAJ,IAASA,CAAC,KAAKmd,GAAG,GAAG,CAArB,IAA0BC,WAAW,KAAKL,WAA9C,EACA;aACCM,OAAO,GAAGN,WAAV;YAFD,MAKA;aACCM,OAAO,GAAG,EAAV;;;;;OAKH,IAAI,QAAQA,OAAR,IAAmBA,OAAO,CAAC/f,MAAR,GAAiB,CAAxC,EACA;SACC+f,OAAO,GAAGA,OAAO,CAACK,WAAR,EAAV;SACA1K,MAAM,IAAIqK,OAAV;SACAD,WAAW,GAAGC,OAAd;;;OAGD,IAAIrK,MAAM,CAAC1V,MAAP,IAAiB4f,SAArB,EACA;SACC;;;;KAIF,OAAOlK,MAAP;;;GAGkC,OAA5B2K,4BAA4B,GACnC;KACC,IACCC,SAAS,GAAG,GADb;SAECC,aAAa,GAAG,CAAC/iB,aAAG,CAACC,UAAJ,CAAe,eAAf,KAAmC,EAApC,EAAwC0G,KAAxC,CAA8Cmc,SAA9C,CAFjB;SAGCE,WAAW,GAAG,CAAChjB,aAAG,CAACC,UAAJ,CAAe,aAAf,KAAiC,EAAlC,EAAsC0G,KAAtC,CAA4Cmc,SAA5C,CAHf;SAIC5d,CAJD;SAIImd,GAJJ;KAMAN,QAAQ,CAACkB,oBAAT,GAAgC,EAAhC;;KACA,KAAK/d,CAAC,GAAG,CAAJ,EAAOmd,GAAG,GAAGU,aAAa,CAACvgB,MAAhC,EAAwC0C,CAAC,GAAGmd,GAA5C,EAAiDnd,CAAC,EAAlD,EACA;OACC6c,QAAQ,CAACkB,oBAAT,CAA8B/d,CAA9B,IAAmC,CAAC6d,aAAa,CAAC7d,CAAD,CAAd,EAAmB8d,WAAW,CAAC9d,CAAD,CAA9B,CAAnC;;;;GAIY,OAAPyd,OAAO,CAACH,GAAD,EACd;KACC,IAAIT,QAAQ,CAACkB,oBAAT,KAAkC,IAAtC,EACA;OACClB,QAAQ,CAACc,4BAAT;;;KAGD,KAAK,IAAI3d,CAAC,GAAG,CAAR,EAAWmd,GAAG,GAAGN,QAAQ,CAACkB,oBAAT,CAA8BzgB,MAApD,EAA4D0C,CAAC,GAAGmd,GAAhE,EAAqEnd,CAAC,EAAtE,EACA;OACC,IAAIsd,GAAG,KAAKT,QAAQ,CAACkB,oBAAT,CAA8B/d,CAA9B,EAAiC,CAAjC,CAAZ,EACA;SACC,OAAO6c,QAAQ,CAACkB,oBAAT,CAA8B/d,CAA9B,EAAiC,CAAjC,CAAP;;;;KAIF,OAAO,IAAP;;;CAnGF;CADa6c,SAELkB,uBAAuB;;;;CCDxB,MAAMpb,cAAN,CAAkB;GAQJ,OAAb6O,aAAa,GACpB;KACC,IAAInV,cAAI,CAAC2L,MAAL,CAAYrF,cAAW,CAAC4O,WAAxB,CAAJ,EACA;OACC5O,cAAW,CAAC4O,WAAZ,GAA0ByM,QAAQ,CAACC,mBAAT,CAA6BnjB,aAAG,CAACC,UAAJ,CAAe,aAAf,CAA7B,CAA1B;;;KAED,OAAO4H,cAAW,CAAC4O,WAAnB;;;GAGuB,OAAjBG,iBAAiB,GACxB;KACC,IAAIrV,cAAI,CAAC2L,MAAL,CAAYrF,cAAW,CAAC8O,eAAxB,CAAJ,EACA;OACC9O,cAAW,CAAC8O,eAAZ,GAA8BuM,QAAQ,CAACC,mBAAT,CAA6BnjB,aAAG,CAACC,UAAJ,CAAe,iBAAf,CAA7B,CAA9B;;;KAED,OAAO4H,cAAW,CAAC8O,eAAnB;;;GAGmB,OAAbyM,aAAa,GACpB;KACC,IAAI7hB,cAAI,CAAC2L,MAAL,CAAYrF,cAAW,CAACwb,WAAxB,CAAJ,EACA;OACC,IAAI1M,eAAe,GAAG9O,cAAW,CAAC+O,iBAAZ,EAAtB;OACA,IAAIH,WAAW,GAAG5O,cAAW,CAAC6O,aAAZ,EAAlB;;OAEA,IAAKC,eAAe,CAAC2M,MAAhB,CAAuB,CAAvB,EAA0B7M,WAAW,CAACjU,MAAtC,MAAkDiU,WAAvD,EACA;SACC5O,cAAW,CAACwb,WAAZ,GAA0B1M,eAAe,CAAC2M,MAAhB,CAAuB7M,WAAW,CAACjU,MAAnC,EAA2CgF,IAA3C,EAA1B;QAFD,MAKA;SACCK,cAAW,CAACwb,WAAZ,GAA0BH,QAAQ,CAACC,mBAAT,CAA6BD,QAAQ,CAACvQ,UAAT,KAAwB,WAAxB,GAAsC,UAAnE,CAA1B;;;OAGD9K,cAAW,CAAC0b,iBAAZ,GAAgC1b,cAAW,CAACwb,WAAZ,CAAwB5R,OAAxB,CAAgC,IAAhC,EAAsC,EAAtC,CAAhC;;;KAGD,OAAO5J,cAAW,CAACwb,WAAnB;;;GAGwB,OAAlBG,kBAAkB,GACzB;KACC,IAAIjiB,cAAI,CAAC2L,MAAL,CAAYrF,cAAW,CAAC0b,iBAAxB,CAAJ,EACA;OACC1b,cAAW,CAAC0b,iBAAZ,GAAgC1b,cAAW,CAACub,aAAZ,GAA4B3R,OAA5B,CAAoC,IAApC,EAA0C,EAA1C,CAAhC;;;KAED,OAAO5J,cAAW,CAAC0b,iBAAnB;;;GAGgB,OAAV1Y,UAAU,CAAC4Y,MAAD,EAASC,SAAT,EAAoBC,GAApB,EAAyBC,GAAzB,EACjB;KACC,IAAIH,MAAM,KAAK,IAAf,EACA;OACCA,MAAM,GAAG5b,cAAW,CAAC6O,aAAZ,EAAT;;;KAGD,IAAInV,cAAI,CAACkJ,MAAL,CAAYiZ,SAAZ,CAAJ,EACA;OACCA,SAAS,GAAGA,SAAS,CAACxY,OAAV,KAAsB,IAAlC;;;KAGD,OAAOgY,QAAQ,CAACO,MAAT,CAAgBA,MAAhB,EAAwBC,SAAxB,EAAmCC,GAAnC,EAAwCC,GAAxC,CAAP;;;GAGe,OAAT3W,SAAS,CAAC9E,GAAD,EAAM0b,IAAN,EAAYhZ,UAAZ,EAAwBiZ,cAAxB,EAChB;KACC,OAAOZ,QAAQ,CAACa,KAAT,CAAe5b,GAAf,EAAoB0b,IAApB,EAA0BhZ,UAA1B,EAAsCiZ,cAAtC,CAAP;;;GAGgB,OAAVjP,UAAU,CAACmP,CAAD,EAAIC,CAAJ,EACjB;KACC,IAAIC,CAAC,GAAG,IAAIlZ,IAAJ,EAAR;KACAkZ,CAAC,CAAC/Y,QAAF,CAAW6Y,CAAX,EAAcC,CAAd,EAAiB,CAAjB;KACA,OAAOf,QAAQ,CAACO,MAAT,CAAgB5b,cAAW,CAAC2b,kBAAZ,EAAhB,EAAkDU,CAAC,CAAChZ,OAAF,KAAc,IAAhE,CAAP;;;GAGc,OAAR9C,QAAQ,CAACD,GAAD,EACf;KACC,OAAO5G,cAAI,CAACgG,QAAL,CAAcY,GAAd,IAAqB4Z,QAAQ,CAACC,GAAT,CAAa7Z,GAAb,EAAkBsJ,OAAlB,CAA0B,cAA1B,EAA0C,GAA1C,CAArB,GAAsEtJ,GAA7E;;;GAGe,OAAT8S,SAAS,CAACkJ,IAAD,EAAOrlB,SAAP,EAChB;KACC,OAAOC,aAAG,CAACC,MAAX,oBAAkB;gBAAlB,CAC6C;;mBAD7C,CAGgC,cAHhC,CAG4D;;;;;;AAM9D,CATE,GACcF,SAAS,IAAI,iBAD3B,EAGiBoD,QAAQ,CAACiiB,IAAD,CAHzB,EAG6CjiB,QAAQ,CAACiiB,IAAD,CAHrD;;;GAYqB,OAAf9J,eAAe,CAAC+J,WAAD,EAAcC,SAAd,EAAyBC,WAAzB,EAAsCC,YAAtC,EACtB;KACC,IAAInX,MAAM,CAACX,EAAP,IAAalL,cAAI,CAACC,UAAL,CAAgBiL,EAAE,CAAC+X,aAAnB,CAAjB,EACA;OACC,OAAO/X,EAAE,CAAC+X,aAAH,CAAiBJ,WAAjB,EAA8BC,SAA9B,EAAyCC,WAAzC,EAAsDC,YAAtD,CAAP;;;;GAIoB,OAAfvX,eAAe,CAACoX,WAAD,EAAcC,SAAd,EAAyBI,YAAzB,EACtB;KACC,IAAIrX,MAAM,CAACX,EAAP,IAAalL,cAAI,CAACC,UAAL,CAAgBiL,EAAE,CAACiY,cAAnB,CAAjB,EACA;OACC,OAAOjY,EAAE,CAACiY,cAAH,CAAkBN,WAAlB,EAA+BC,SAA/B,EAA0CI,YAA1C,CAAP;;;;GAIsB,OAAjB3X,iBAAiB,CAACsX,WAAD,EAAcC,SAAd,EAAyBI,YAAzB,EACxB;KACC,IAAIrX,MAAM,CAACX,EAAP,IAAalL,cAAI,CAACC,UAAL,CAAgBiL,EAAE,CAACkY,iBAAnB,CAAjB,EACA;OACC,OAAOlY,EAAE,CAACkY,iBAAH,CAAqBP,WAArB,EAAkCC,SAAlC,EAA6CI,YAA7C,CAAP;;;;GAIe,OAAV9R,UAAU,GACjB;KACC,OAAOuQ,QAAQ,CAACvQ,UAAT,EAAP;;;GAGa,OAAP0K,OAAO,GACd;KACC,IAAIuH,GAAG,GAAGC,KAAK,CAACC,SAAN,CAAgB9f,KAAhB,CAAsB+f,IAAtB,CAA2BC,SAA3B,CAAV;;KACA,IAAGJ,GAAG,CAACpiB,MAAJ,GAAa,CAAhB,EACA;OACC,OAAO,EAAP;;;KAGD,IAAI0V,MAAM,GAAG0M,GAAG,CAACK,KAAJ,EAAb;;KACA,KAAK,IAAI/f,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0f,GAAG,CAACpiB,MAAxB,EAAgC0C,CAAC,EAAjC,EACA;OACC,KAAK,IAAI0O,CAAT,IAAcgR,GAAG,CAAC1f,CAAD,CAAjB,EACA;SACC,IAAI,OAAO0f,GAAG,CAAC1f,CAAD,CAAV,KAAkB,WAAlB,IAAiC0f,GAAG,CAAC1f,CAAD,CAAH,IAAU,IAA3C,IAAmD,CAAC0f,GAAG,CAAC1f,CAAD,CAAH,CAAOsB,cAAP,CAAsBoN,CAAtB,CAAxD,EACA;WACC;;;SAGD,IAAIrS,cAAI,CAACgF,aAAL,CAAmBqe,GAAG,CAAC1f,CAAD,CAAH,CAAO0O,CAAP,CAAnB,KAAiCrS,cAAI,CAACgF,aAAL,CAAmB2R,MAAM,CAACtE,CAAD,CAAzB,CAArC,EACA;WACC/L,cAAW,CAACwV,OAAZ,CAAoBnF,MAAM,CAACtE,CAAD,CAA1B,EAA+BgR,GAAG,CAAC1f,CAAD,CAAH,CAAO0O,CAAP,CAA/B;UAFD,MAKA;WACCsE,MAAM,CAACtE,CAAD,CAAN,GAAYrS,cAAI,CAACgF,aAAL,CAAmBqe,GAAG,CAAC1f,CAAD,CAAH,CAAO0O,CAAP,CAAnB,IAAgCsR,iBAAO,CAACC,KAAR,CAAcP,GAAG,CAAC1f,CAAD,CAAH,CAAO0O,CAAP,CAAd,CAAhC,GAA2DgR,GAAG,CAAC1f,CAAD,CAAH,CAAO0O,CAAP,CAAvE;;;;;KAKH,OAAOsE,MAAP;;;GAGqB,OAAf3P,eAAe,CAACC,OAAD,EACtB;KACC,IACC/G,MAAM,GAAG,CAAC,CAAD,EAAI,EAAJ,EAAQ,EAAR,EAAY,EAAZ,EAAgB,EAAhB,EAAoB,EAApB,EAAwB,EAAxB,EAA4B,EAA5B,EAAgC,EAAhC,EAAoC,EAApC,EAAwC,EAAxC,EACR,GADQ,EACH,GADG,EACE,GADF,EACO,GADP,EACY,GADZ,EAER,IAFQ,EAEF,OAAO,CAFL,EAEQ,OAAO,CAFf,EAEkB,OAAO,CAFzB,EAE4B,OAAO,CAFnC,EAEsC,OAAO,CAF7C,EAEgD,OAAO,CAFvD,EAE0D,OAAO,EAFjE,CADV;SAIC2jB,GAJD;SAIMlgB,CAJN;SAISma,GAAG,GAAG,EAJf;;KAMA,KAAKna,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGzD,MAAM,CAACe,MAAvB,EAA+B0C,CAAC,EAAhC,EACA;OACCkgB,GAAG,GAAG3jB,MAAM,CAACyD,CAAD,CAAZ;;OACA,IAAIsD,OAAO,IAAI4c,GAAG,GAAG,IAAN,KAAe,CAA9B,EACA;SACC;;;OAGD/F,GAAG,CAACld,IAAJ,CAAS;SACRuB,KAAK,EAAE0hB,GADC;SAER9lB,KAAK,EAAEuI,cAAW,CAACC,gBAAZ,CAA6Bsd,GAA7B;QAFR;;;KAKD,OAAO/F,GAAP;;;GAGsB,OAAhBvX,gBAAgB,CAACsd,GAAD,EACvB;KACC,IAAI9lB,KAAJ;;KACA,IAAI8lB,GAAG,GAAG,IAAN,KAAe,CAAnB;OACA;SACC9lB,KAAK,GAAGU,aAAG,CAACC,UAAJ,CAAe,0BAAf,EAA2CwR,OAA3C,CAAmD,OAAnD,EAA4D2T,GAAG,GAAG,IAAlE,CAAR;QAFD,MAIK,IAAIA,GAAG,GAAG,EAAN,KAAa,CAAb,IAAkBA,GAAG,KAAK,EAA9B;OACL;SACC9lB,KAAK,GAAGU,aAAG,CAACC,UAAJ,CAAe,2BAAf,EAA4CwR,OAA5C,CAAoD,OAApD,EAA6D2T,GAAG,GAAG,EAAnE,CAAR;QAFI;UAML;OACC9lB,KAAK,GAAGU,aAAG,CAACC,UAAJ,CAAe,0BAAf,EAA2CwR,OAA3C,CAAmD,OAAnD,EAA4D2T,GAA5D,CAAR;;;KAED,OAAO9lB,KAAP;;;GAGmB,OAAbgK,aAAa,CAAC5F,KAAD,EACpB;KACC,IACC2hB,WAAW,GAAG3hB,KADf;SAEC4hB,QAAQ,GAAGpjB,QAAQ,CAACwB,KAAD,CAFpB;SAGC6hB,MAAM,GAAG,KAHV;SAICC,SAAS,GAAG,IAAIC,MAAJ,CAAW,eAAezlB,aAAG,CAACC,UAAJ,CAAe,+BAAf,CAAf,GAAiE,KAA5E,EAAmF,IAAnF,CAJb;SAKCylB,UAAU,GAAG,IAAID,MAAJ,CAAW,eAAezlB,aAAG,CAACC,UAAJ,CAAe,gCAAf,CAAf,GAAkE,KAA7E,EAAoF,IAApF,CALd;KAOAyD,KAAK,GAAGA,KAAK,CAAC+N,OAAN,CAAc+T,SAAd,EAAyB,UAASrd,GAAT,EAAcyM,GAAd,EAAkB;OAAC2Q,MAAM,GAAG,IAAT;OAAc,OAAO3Q,GAAP;MAA1D,CAAR,CARD;;KAUC,IAAI2Q,MAAJ,EACA;OACC7hB,KAAK,GAAG4hB,QAAQ,GAAG,IAAnB;MAFD,MAKA;OACC5hB,KAAK,GAAG2hB,WAAW,CAAC5T,OAAZ,CAAoBiU,UAApB,EAAgC,UAASvd,GAAT,EAAcyM,GAAd,EAAkB;SAAC2Q,MAAM,GAAG,IAAT;SAAc,OAAO3Q,GAAP;QAAjE,CAAR,CADD;;OAGC,IAAI2Q,MAAJ,EACA;SACC7hB,KAAK,GAAG4hB,QAAQ,GAAG,EAAnB;QAFD;SAKA;WACC5hB,KAAK,GAAG4hB,QAAR;;;;KAIF,OAAOpjB,QAAQ,CAACwB,KAAD,CAAR,IAAmB,CAA1B;;;GAGuB,OAAjBiiB,iBAAiB,GACxB;KACC,IAAIpkB,cAAI,CAAC2L,MAAL,CAAYrF,cAAW,CAAC+d,cAAxB,CAAJ,EACA;OACC,IAAI1gB,CAAJ;WAAOma,GAAG,GAAG,EAAb;;OACA,KAAKna,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG,EAAhB,EAAoBA,CAAC,EAArB,EACA;SACCma,GAAG,CAACld,IAAJ,CAAS;WAACuB,KAAK,EAAEwB,CAAC,GAAG,EAAZ;WAAgB5F,KAAK,EAAE,KAAKuV,UAAL,CAAgB3P,CAAhB,EAAmB,CAAnB;UAAhC;SACAma,GAAG,CAACld,IAAJ,CAAS;WAACuB,KAAK,EAAEwB,CAAC,GAAG,EAAJ,GAAS,EAAjB;WAAqB5F,KAAK,EAAE,KAAKuV,UAAL,CAAgB3P,CAAhB,EAAmB,EAAnB;UAArC;;;OAED2C,cAAW,CAAC+d,cAAZ,GAA6BvG,GAA7B;;;KAED,OAAOxX,cAAW,CAAC+d,cAAnB;;;GAGoB,OAAdC,cAAc,CAAC/T,SAAD,EACrB;KACCA,SAAS,GAAG5P,QAAQ,CAAC4P,SAAS,CAACkS,CAAV,GAAc,EAAf,CAAR,GAA6B9hB,QAAQ,CAAC4P,SAAS,CAACmS,CAAX,CAAjD;KACA,IACC6B,QAAQ,GAAGje,cAAW,CAAC8d,iBAAZ,EADZ;SAECI,IAAI,GAAG,KAAK,EAFb;SAGCC,GAAG,GAAG,KAHP;SAIC9gB,CAJD;;KAMA,KAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG4gB,QAAQ,CAACtjB,MAAzB,EAAiC0C,CAAC,EAAlC,EACA;OACC,IAAI3E,IAAI,CAACuP,GAAL,CAASgW,QAAQ,CAAC5gB,CAAD,CAAR,CAAYxB,KAAZ,GAAoBoO,SAA7B,IAA0CiU,IAA9C,EACA;SACCA,IAAI,GAAGxlB,IAAI,CAACuP,GAAL,CAASgW,QAAQ,CAAC5gB,CAAD,CAAR,CAAYxB,KAAZ,GAAoBoO,SAA7B,CAAP;SACAkU,GAAG,GAAG9gB,CAAN;;SACA,IAAI6gB,IAAI,IAAI,EAAZ,EACA;WACC;;;;;KAKH,OAAOD,QAAQ,CAACE,GAAG,IAAI,CAAR,CAAf;;;GAGkB,OAAZC,YAAY,GACnB;KACC,OAAOpe,cAAW,CAACqe,UAAnB;;;GAGyB,OAAnBC,mBAAmB,GAC1B;KACC,IAAIC,GAAG,CAAC3Z,EAAJ,CAAO4Z,QAAP,CAAgB,kBAAhB,CAAJ,EACA;OACCD,GAAG,CAAC3Z,EAAJ,CAAOY,EAAP,CAAUiZ,UAAV,CAAqB/nB,IAArB,CAA0B,mBAA1B;;;;CAhSsB;AAAZsJ,gBACL+d,iBAAiB;AADZ/d,gBAELqe,aAAa;AAFRre,gBAGLwb,cAAc;AAHTxb,gBAIL0b,oBAAoB;AAJf1b,gBAKL4O,cAAc;AALT5O,gBAML8O,kBAAkB;;CCDnB,MAAM4P,2BAAN,SAA0CziB,eAAK,CAACqS,YAAhD,CACP;GACC/Y,WAAW,CAACC,MAAD,EACX;KACC,MAAMA,MAAN;KACA,KAAKmpB,QAAL,GAAgBnpB,MAAM,CAACmpB,QAAP,IAAmB,EAAnC;KACA,KAAKC,SAAL,GAAiBppB,MAAM,CAACqpB,YAAP,KAAwB,KAAzC;KACA,KAAK5oB,KAAL,GAAaT,MAAM,CAACS,KAAP,IAAgB,EAA7B;KACA,KAAKE,GAAL,GAAW;OACVL,IAAI,EAAEN,MAAM,CAACM,IADH;;MAAX;;;GAKDkD,KAAK,GACL;KACC,KAAK8lB,QAAL,GAAgB,EAAhB,CADD;;KAGC,KAAK3oB,GAAL,CAASC,SAAT,GAAqB,KAAKD,GAAL,CAASL,IAAT,CAAce,WAAd,CAA0BC,aAAG,CAACC,MAAJ,CAAW,KAAX,EAAkB;OAACC,KAAK,EAAG;SAAEC,SAAS,EAAG;;MAAzC,CAA1B,CAArB;KACA,KAAKd,GAAL,CAASH,SAAT,GAAqB,KAAKG,GAAL,CAASC,SAAT,CAAmBS,WAAnB,CAA+BC,aAAG,CAACC,MAAJ,CAAW,KAAX,EAAkB;OAACC,KAAK,EAAG;SAAEC,SAAS,EAAG;;MAAzC,CAA/B,CAArB;;KAEA,IAAI,KAAK0nB,QAAL,CAAcI,iBAAd,CAAgClF,QAAhC,IAA4C,KAAK8E,QAAL,CAAcI,iBAAd,CAAgCjF,YAAhF,EACA;OACC,KAAK+E,YAAL;OACA,KAAKnN,mBAAL;OACA,KAAKC,uBAAL;OACA,KAAKC,sBAAL;OACA,KAAKC,sBAAL;OACA,KAAKmN,kBAAL;OACA,KAAKC,kBAAL;MARD,MAWA;OACC,KAAKC,cAAL,CAAoB/mB,aAAG,CAACC,UAAJ,CAAe,0BAAf,CAApB;;;;GAIF+mB,OAAO,GACP;KACCroB,aAAG,CAACgB,MAAJ,CAAW,KAAK3B,GAAL,CAASC,SAApB;;;GAGDyoB,YAAY,GACZ;KACC,IAAI,KAAKD,SAAT,EACA;OACC,KAAKzoB,GAAL,CAASipB,SAAT,GAAqB,KAAKjpB,GAAL,CAASH,SAAT,CACnBa,WADmB,CACPC,aAAG,CAACC,MAAJ,CAAW,KAAX,EAAkB;SAACC,KAAK,EAAC;WAACC,SAAS,EAAC;;QAApC,CADO,EAEnBJ,WAFmB,CAEPC,aAAG,CAACC,MAAJ,CAAW,KAAX,EAAkB;SAACC,KAAK,EAAC;WAACC,SAAS,EAAC;;QAApC,CAFO,CAArB;OAGA,KAAKooB,WAAL,CAAiB,KAAKppB,KAAtB;;;;GAIFopB,WAAW,CAACppB,KAAD,EACX;KACC,IAAI,KAAK2oB,SAAT,EACA;OACC,KAAK3oB,KAAL,GAAaA,KAAb;OACAa,aAAG,CAACY,MAAJ,CAAW,KAAKvB,GAAL,CAASipB,SAApB,EAA+B;SAACznB,IAAI,EAAE,KAAK1B;QAA3C;;;;GAIFipB,cAAc,CAAC/Q,OAAD,EACd;KACC,KAAKhY,GAAL,CAASgU,WAAT,GAAuB,KAAKhU,GAAL,CAASH,SAAT,CACrBa,WADqB,CACTC,aAAG,CAACC,MAAJ,CAAW,KAAX,EAAkB;OAC9BC,KAAK,EAAC;SAACC,SAAS,EAAC;QADa;OAE9BqE,KAAK,EAAE;SAACgkB,YAAY,EAAE;QAFQ;OAG9B1Y,IAAI,EAAE,oCAAoCuH,OAApC,GAA8C;MAHxC,CADS,CAAvB;;;GAQDuD,mBAAmB,GACnB;KACC,IAAI,KAAKiN,QAAL,CAAcI,iBAAd,CAAgClF,QAApC,EACA;OACC,IAAI,KAAK8E,QAAL,CAAcpoB,IAAd,CAAmBoZ,KAAnB,CAAyB9T,KAAzB,KAAmC,IAAnC,IACAnC,cAAI,CAACG,OAAL,CAAa,KAAK8kB,QAAL,CAAcI,iBAAd,CAAgCpP,KAA7C,CADJ,EAEA;SACC,KAAKgP,QAAL,CAAcpoB,IAAd,CAAmBoZ,KAAnB,CAAyB9T,KAAzB,GAAiC,KAAK8iB,QAAL,CAAcI,iBAAd,CAAgCpP,KAAjE;;;OAGD,KAAKmP,QAAL,CAAcnP,KAAd,GAAsB,IAAI9R,YAAJ,CAAiB;SACtCzH,SAAS,EAAE,KAAKD,GAAL,CAASH,SADkB;SAEtCO,IAAI,EAAE,KAAKooB,QAAL,CAAcpoB,IAAd,CAAmBoZ,KAFa;SAGtC5R,SAAS,EAAE,KAAK4gB,QAAL,CAAcI,iBAAd,CAAgChhB;QAHtB,CAAtB;OAKA,KAAK+gB,QAAL,CAAcnP,KAAd,CAAoB/Y,OAApB;;;;GAIF+a,uBAAuB,GACvB;KACC,IAAI,KAAKgN,QAAL,CAAcI,iBAAd,CAAgCjF,YAApC,EACA;OACC,IAAI,KAAK6E,QAAL,CAAcpoB,IAAd,CAAmBqZ,SAAnB,CAA6B/T,KAA7B,KAAuC,IAAvC,IACAnC,cAAI,CAACG,OAAL,CAAa,KAAK8kB,QAAL,CAAcI,iBAAd,CAAgCnP,SAA7C,CADJ,EAEA;SACC,KAAK+O,QAAL,CAAcpoB,IAAd,CAAmBqZ,SAAnB,CAA6B/T,KAA7B,GAAqC,EAArC;SACA,KAAK8iB,QAAL,CAAcI,iBAAd,CAAgCnP,SAAhC,CAA0C1V,OAA1C,CAAkD,UAASsd,GAAT,EAClD;WACC,KAAKmH,QAAL,CAAcpoB,IAAd,CAAmBqZ,SAAnB,CAA6B/T,KAA7B,CAAmCvB,IAAnC,CAAwCD,QAAQ,CAACmd,GAAG,CAAC/e,EAAL,CAAhD;UAFD,EAGG,IAHH;;;OAMD,KAAKqmB,QAAL,CAAclP,SAAd,GAA0B,IAAI1Q,gBAAJ,CAAqB;SAC9C9I,SAAS,EAAE,KAAKD,GAAL,CAASH,SAD0B;SAE9CO,IAAI,EAAE,KAAKooB,QAAL,CAAcpoB,IAAd,CAAmBqZ,SAFqB;SAG9CxQ,YAAY,EAAE,KAAKuf,QAAL,CAAcI,iBAAd,CAAgCnP;QAHrB,CAA1B;OAKA,KAAKkP,QAAL,CAAclP,SAAd,CAAwBhZ,OAAxB;;;;GAIFgb,sBAAsB,GACtB;KACC,IAAI,KAAK+M,QAAL,CAAcI,iBAAd,CAAgCQ,WAApC,EACA;OACC,IAAI,KAAKZ,QAAL,CAAcpoB,IAAd,CAAmBmhB,QAAnB,CAA4B7b,KAA5B,KAAsC,IAAtC,IACAnC,cAAI,CAACG,OAAL,CAAa,KAAK8kB,QAAL,CAAcI,iBAAd,CAAgCrH,QAA7C,CADJ,EAEA;SACC,KAAKiH,QAAL,CAAcpoB,IAAd,CAAmBmhB,QAAnB,CAA4B7b,KAA5B,GAAoC,EAApC;SACA,KAAK8iB,QAAL,CAAcI,iBAAd,CAAgCrH,QAAhC,CAAyCxd,OAAzC,CAAiD,UAASslB,IAAT,EACjD;WACC,KAAKb,QAAL,CAAcpoB,IAAd,CAAmBmhB,QAAnB,CAA4B7b,KAA5B,CAAkCvB,IAAlC,CAAuCklB,IAAI,CAAC5pB,IAA5C;UAFD,EAGG,IAHH;;;OAMD,KAAKkpB,QAAL,CAAcpH,QAAd,GAAyB,IAAIpY,eAAJ,CAAoB;SAC5ClJ,SAAS,EAAE,KAAKD,GAAL,CAASH,SADwB;SAE5CO,IAAI,EAAE,KAAKooB,QAAL,CAAcpoB,IAAd,CAAmBmhB,QAFmB;SAG5CnY,WAAW,EAAE,KAAKof,QAAL,CAAcI,iBAAd,CAAgCrH;QAHrB,CAAzB;OAKA,KAAKoH,QAAL,CAAcpH,QAAd,CAAuB9gB,OAAvB;;;;GAIFib,sBAAsB,GACtB;KACC,IAAI,CAAC,KAAK8M,QAAL,CAAcI,iBAAd,CAAgCQ,WAArC,EACA;OACC,KAAKT,QAAL,CAAc5e,QAAd,GAAyB,IAAIM,gBAAJ,CAAqB;SAC7CpK,SAAS,EAAE,KAAKD,GAAL,CAASH,SADyB;SAE7CO,IAAI,EAAE,KAAKooB,QAAL,CAAcpoB,IAAd,CAAmB2J,QAFoB;SAG7CS,OAAO,EAAE,KAAKge,QAAL,CAAcI,iBAAd,CAAgCpe;QAHjB,CAAzB;OAKA,KAAKme,QAAL,CAAc5e,QAAd,CAAuBtJ,OAAvB;;;;GAIFooB,kBAAkB,GAClB;KACC,KAAKF,QAAL,CAAcnc,IAAd,GAAqB,IAAIhB,YAAJ,CAAiB;OACrCvL,SAAS,EAAE,KAAKD,GAAL,CAASH,SADiB;OAErCO,IAAI,EAAE,KAAKooB,QAAL,CAAcpoB,IAAd,CAAmBoM;MAFL,CAArB;KAIA,KAAKmc,QAAL,CAAcnc,IAAd,CAAmB/L,OAAnB;;;GAGDqoB,kBAAkB,GAClB;KACC,IAAI,CAAC,KAAKN,QAAL,CAAcI,iBAAd,CAAgCpe,OAArC,EACA;OACC,KAAKme,QAAL,CAAcpT,IAAd,GAAqB,IAAI5C,YAAJ,CAAiB;SACrC1S,SAAS,EAAE,KAAKD,GAAL,CAASH,SADiB;SAErCO,IAAI,EAAE,KAAKooB,QAAL,CAAcpoB,IAAd,CAAmBmV;QAFL,CAArB;OAIA,KAAKoT,QAAL,CAAcpT,IAAd,CAAmB9U,OAAnB;;;;GAIF6oB,aAAa,CAAChQ,YAAD,EACb;KACC,KAAK,IAAI1D,CAAT,IAAc,KAAK+S,QAAnB,EACA;OACC,IAAI,KAAKA,QAAL,CAAcngB,cAAd,CAA6BoN,CAA7B,KAAmCrS,cAAI,CAACC,UAAL,CAAgB,KAAKmlB,QAAL,CAAc/S,CAAd,EAAiB1U,OAAjC,CAAvC,EACA;SACC,KAAKynB,QAAL,CAAc/S,CAAd,EAAiB1U,OAAjB,CAAyBoY,YAAY,CAAC1D,CAAD,CAAZ,IAAmB,KAAK4S,QAAL,CAAcpoB,IAAd,CAAmBwV,CAAnB,CAA5C;;;;;GAKH2T,YAAY,GACZ;KACC,OAAO,KAAKvpB,GAAL,CAASH,SAAhB;;;GAGD2pB,YAAY,GACZ;KACC,OAAO,KAAKxpB,GAAL,CAASC,SAAhB;;;CA3LF;;CCRO,MAAMwpB,uBAAN,SAAsClB,2BAAtC,CACP;GACCnpB,WAAW,CAACC,MAAD,EACX;KACC,MAAMA,MAAN;;;CAHF;;CCDO,MAAMqqB,0BAAN,SAAyCnB,2BAAzC,CACP;GACCnpB,WAAW,CAACC,MAAD,EACX;KACC,MAAMA,MAAN;;;GAGDwD,KAAK,GACL;KACC,MAAMA,KAAN;KACA,KAAK7C,GAAL,CAASC,SAAT,CAAmBa,SAAnB,GAA+B,iHAA/B;;;CATF;;CCAO,MAAMgK,cAAN,SAA0BhF,eAAK,CAACqS,YAAhC,CACP;GACC/Y,WAAW,CAACC,MAAD,EACX;KACC,MAAMA,MAAN;KAEA,KAAKiD,EAAL,GAAUjD,MAAM,CAACiD,EAAP,IAAa,qBAAqBC,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgB,OAA3B,CAA5C;;KAEA,IAAIc,cAAI,CAACC,UAAL,CAAgBnE,MAAM,CAACsqB,SAAvB,CAAJ,EACA;OACC,KAAKA,SAAL,GAAiBtqB,MAAM,CAACsqB,SAAxB;OACA,KAAKlmB,MAAL,GAAc,KAAKkmB,SAAL,EAAd;MAHD,MAMA;OACC,KAAKlmB,MAAL,GAAcpE,MAAM,CAACoE,MAAP,IAAiB,KAA/B;;;KAGD,KAAKsH,KAAL,GAAa1L,MAAM,CAAC0L,KAApB;KACA,KAAKN,YAAL,GAAoBpL,MAAM,CAACoL,YAAP,IAAuB,EAA3C;KACA,KAAKmf,SAAL,GAAiBvqB,MAAM,CAACuqB,SAAP,IAAoB,EAArC;KACA,KAAK9oB,SAAL,GAAiBzB,MAAM,CAACyB,SAAP,IAAoB,EAArC;KACA,KAAK+oB,YAAL,GAAoBxqB,MAAM,CAACqG,KAA3B;KACA,KAAKokB,iBAAL,GAAyBzqB,MAAM,CAAC6hB,UAAhC;KACA,KAAK/V,gBAAL,GAAwB5H,cAAI,CAACC,UAAL,CAAgBnE,MAAM,CAAC8L,gBAAvB,IAA2C9L,MAAM,CAAC8L,gBAAlD,GAAqE,IAA7F;KACA,KAAK4e,eAAL,GAAuB1qB,MAAM,CAAC0qB,eAAP,IAA0B,IAAjD;KACA,KAAKC,MAAL,GAAc3qB,MAAM,CAAC2qB,MAAP,IAAiB,IAA/B;KACA,KAAKC,QAAL,GAAgB5qB,MAAM,CAAC4qB,QAAvB;KACA,KAAKjf,QAAL,GAAgB3L,MAAM,CAAC2L,QAAP,KAAoB,KAApC;KACA,KAAKE,kBAAL,GAA0B,CAAC,CAAC7L,MAAM,CAAC6L,kBAAnC;;KAEA,IAAI,KAAKC,gBAAT,EACA;OACCrF,eAAK,CAAC3C,IAAN,CAAW,KAAK4H,KAAhB,EAAuB,QAAvB,EAAiC,KAAKI,gBAAtC;OACArF,eAAK,CAAC3C,IAAN,CAAW,KAAK4H,KAAhB,EAAuB,OAAvB,EAAgC,KAAKI,gBAArC;;;KAGD,KAAK+e,MAAL,GAAc,KAAd;;KAEA,IAAI3mB,cAAI,CAACG,OAAL,CAAa,KAAKD,MAAlB,CAAJ,EACA;OACCqC,eAAK,CAAC3C,IAAN,CAAW,KAAK4H,KAAhB,EAAuB,OAAvB,EAAgC,KAAKof,OAAL,CAAahnB,IAAb,CAAkB,IAAlB,CAAhC;;OAEA,IAAI,KAAK6H,QAAT,EACA;SACClF,eAAK,CAAC3C,IAAN,CAAW,KAAK4H,KAAhB,EAAuB,OAAvB,EAAgC,KAAKqf,OAAL,CAAajnB,IAAb,CAAkB,IAAlB,CAAhC;SACA2C,eAAK,CAAC3C,IAAN,CAAW,KAAK4H,KAAhB,EAAuB,MAAvB,EAA+B,KAAKsf,MAAL,CAAYlnB,IAAZ,CAAiB,IAAjB,CAA/B;SACA2C,eAAK,CAAC3C,IAAN,CAAW,KAAK4H,KAAhB,EAAuB,OAAvB,EAAgC,KAAKuf,OAAL,CAAannB,IAAb,CAAkB,IAAlB,CAAhC;QAJD,MAOA;SACC2C,eAAK,CAAC3C,IAAN,CAAW,KAAK4H,KAAhB,EAAuB,OAAvB,EAAgC,YAAU;WAAC,KAAKA,KAAL,CAAWwf,IAAX;UAAX,CAA+BpnB,IAA/B,CAAoC,IAApC,CAAhC;;;OAGD,IAAI,KAAK2mB,iBAAL,KAA2B/hB,SAA3B,IAAwC,KAAK8hB,YAAL,KAAsB9hB,SAAlE,EACA;SACC,KAAK+hB,iBAAL,GAAyB,CAAC,CAA1B;;SACA,KAAK,IAAI5iB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKzD,MAAL,CAAYe,MAAhC,EAAwC0C,CAAC,EAAzC,EACA;WACC,IAAIhD,QAAQ,CAAC,KAAKT,MAAL,CAAYyD,CAAZ,EAAexB,KAAhB,CAAR,KAAmCxB,QAAQ,CAAC,KAAK2lB,YAAN,CAA/C,EACA;aACC,KAAKC,iBAAL,GAAyB5iB,CAAzB;aACA;;;;SAIF,IAAI,KAAK4iB,iBAAL,KAA2B,CAAC,CAAhC,EACA;WACC,KAAKA,iBAAL,GAAyB,KAAK5e,kBAAL,GAA0B,CAA1B,GAA8BnD,SAAvD;;;;;KAKH,IAAI,KAAK+hB,iBAAL,KAA2B/hB,SAA3B,IAAwC,KAAKtE,MAAL,CAAY,KAAKqmB,iBAAjB,CAA5C,EACA;OACC,KAAK/e,KAAL,CAAWrF,KAAX,GAAmB,KAAKjC,MAAL,CAAY,KAAKqmB,iBAAjB,EAAoCxoB,KAAvD;;;;GAIFkpB,SAAS,GACT;KACC,IAAI,KAAKb,SAAT,EACA;OACC,KAAKlmB,MAAL,GAAc,KAAKkmB,SAAL,EAAd;;;KAGD,IAAI,KAAKtpB,KAAL,IAAc,KAAK4pB,QAAnB,IAA+B,CAAC,KAAKxmB,MAAL,CAAYe,MAAhD,EACA;OACC;;;KAGD,IACCwjB,GAAG,GAAG,CADP;SAECvF,CAAC,GAAG,CAFL;SAGC3e,SAAS,GAAG,EAHb;SAICoD,CAJD;SAKCujB,KAAK,GAAG,IALT;;KAOA,KAAKvjB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG,KAAKzD,MAAL,CAAYe,MAA5B,EAAoC0C,CAAC,EAArC,EACA;OACC,IAAI,KAAKzD,MAAL,CAAYyD,CAAZ,EAAewjB,SAAnB,EACA;SACC5mB,SAAS,CAACK,IAAV,CAAe,KAAKV,MAAL,CAAYyD,CAAZ,CAAf;QAFD,MAKA;SACC,IAAK,KAAK2iB,YAAL,IAAqB,KAAKpmB,MAAL,CAAYyD,CAAZ,CAArB,IAAuC,KAAKzD,MAAL,CAAYyD,CAAZ,EAAexB,KAAf,KAAyB,KAAKmkB,YAAL,CAAkBnkB,KAAnF,IACA,KAAKqF,KAAL,CAAWrF,KAAX,KAAqB,KAAKjC,MAAL,CAAYyD,CAAZ,EAAe5F,KADxC,EAEA;WACC0mB,GAAG,GAAGvF,CAAN;;;SAGD3e,SAAS,CAACK,IAAV,CAAe;WACd7B,EAAE,EAAE,KAAKmB,MAAL,CAAYyD,CAAZ,EAAexB,KAAf,GAAuB,GAAvB,GAA6BwB,CADnB;WAEd1F,IAAI,EAAE,KAAKiC,MAAL,CAAYyD,CAAZ,EAAe5F,KAFP;WAGdgD,OAAO,EAAE,KAAKb,MAAL,CAAYyD,CAAZ,EAAeyjB,QAAf,IAA4B,UAAUjlB,KAAV,EAAiBpE,KAAjB,EACrC;aACC,OAAO,YACP;eACCmpB,KAAK,CAAC1f,KAAN,CAAYrF,KAAZ,GAAoBpE,KAApB;;eACAmpB,KAAK,CAACG,SAAN,CAAgBzkB,KAAhB;;eACAskB,KAAK,CAACne,QAAN,CAAe5G,KAAf,EAAsBpE,KAAtB;cAJD;YAFmC,CAQjC,KAAKmC,MAAL,CAAYyD,CAAZ,EAAexB,KARkB,EAQX,KAAKjC,MAAL,CAAYyD,CAAZ,EAAe2jB,QAAf,IAA2B,KAAKpnB,MAAL,CAAYyD,CAAZ,EAAe5F,KAR/B;UAHrC;SAaAmhB,CAAC;;;;KAIH,KAAKmI,SAAL,GAAiBjmB,sBAAW,CAAC/D,MAAZ,CAChB,KAAK0B,EADW,EAEhB,KAAKyI,KAFW,EAGhBjH,SAHgB,EAIhB;OACCc,UAAU,EAAG,IADd;OAECC,QAAQ,EAAG,IAFZ;OAGCmlB,MAAM,EAAE,KAAKA,MAHd;OAICllB,SAAS,EAAE,CAJZ;OAKCC,UAAU,EAAE,CALb;OAMCC,SAAS,EAAE;MAVI,CAAjB;;KAcA,IAAI,CAACyJ,EAAE,CAACqc,OAAH,CAAWC,SAAX,EAAL,EACA;OACC,KAAKH,SAAL,CAAe1lB,WAAf,CAA2B8lB,WAA3B,CAAuC,KAAKjgB,KAAL,CAAW1F,WAAlD;;;KAGD,KAAKulB,SAAL,CAAe1lB,WAAf,CAA2B+lB,WAA3B,CAAuC,GAAvC;KAEA,IAAIC,aAAa,GAAG,KAAKN,SAAL,CAAehlB,MAAf,CAAsBslB,aAA1C;KACAvqB,aAAG,CAACmB,QAAJ,CAAa,KAAK8oB,SAAL,CAAehlB,MAAf,CAAsBslB,aAAnC,EAAkD,oCAAlD;KACA,KAAKN,SAAL,CAAerqB,IAAf;KAEA,IAAI+E,QAAQ,GAAG,KAAKslB,SAAL,CAAe9mB,SAAf,CAAyBkkB,GAAzB,CAAf;;KACA,IAAI1iB,QAAQ,IAAIA,QAAQ,CAACM,MAAzB,EACA;OACCslB,aAAa,CAACC,SAAd,GAA0B7lB,QAAQ,CAACM,MAAT,CAAgB5B,IAAhB,CAAqBc,SAArB,GAAiC,CAA3D;;;KAGD+E,cAAW,CAACmF,eAAZ,CAA4B,KAAK4b,SAAL,CAAe1lB,WAA3C,EAAwD,cAAxD,EAAwE,YAAU;OAAC,KAAK7E,KAAL,GAAa,KAAb;MAAX,CAAgC8C,IAAhC,CAAqC,IAArC,CAAxE;KAEA,KAAK4H,KAAL,CAAWjI,MAAX;;KAEA,IAAIS,cAAI,CAACC,UAAL,CAAgB,KAAKumB,eAArB,CAAJ,EACA;OACC,KAAKA,eAAL,CAAqB/B,GAArB,EAA0B,KAAK4C,SAA/B;;;KAGD,KAAKvqB,KAAL,GAAa,IAAb;;;GAGDwD,UAAU,GACV;KACCc,sBAAW,CAACqkB,OAAZ,CAAoB,KAAK1mB,EAAzB;KACA,KAAKjC,KAAL,GAAa,KAAb;;;GAGD+pB,OAAO,GACP;KACClkB,UAAU,CAAC,YAAU;OACpB,IAAI,CAAC,KAAK7F,KAAV,EACA;SACC,KAAKmqB,SAAL;;MAHS,CAKTrnB,IALS,CAKJ,IALI,CAAD,EAKI,GALJ,CAAV;;;GAQDgnB,OAAO,GACP;KACC,IAAI,KAAK9pB,KAAT,EACA;OACC,KAAKwD,UAAL;MAFD,MAKA;OACC,KAAK2mB,SAAL;;;;GAIFH,MAAM,GACN;KACCnkB,UAAU,CAAC,KAAKrC,UAAL,CAAgBV,IAAhB,CAAqB,IAArB,CAAD,EAA6B,GAA7B,CAAV;;;GAGDmnB,OAAO,GACP;KACCpkB,UAAU,CAAC,KAAKrC,UAAL,CAAgBV,IAAhB,CAAqB,IAArB,CAAD,EAA6B,EAA7B,CAAV;;;GAGDmJ,QAAQ,CAAC5G,KAAD,EACR;KACC,IAAI0hB,GAAG,GAAG,KAAKrc,KAAL,CAAWrF,KAArB;KACA,KAAKqX,IAAL,CAAU,iDAAV,EAA6D,IAAIjX,eAAK,CAACmb,SAAV,CAAoB;OAAC7gB,IAAI,EAAE;SAACgrB,WAAW,EAAE,IAAd;SAAoB1lB,KAAK,EAAE0hB,GAA3B;SAAgCiE,SAAS,EAAE3lB;;MAAtE,CAA7D;;KACA,IAAI,KAAKyF,gBAAT,EACA;OACC,KAAKA,gBAAL,CAAsB;SAACzF,KAAK,EAAE0hB,GAAR;SAAaiE,SAAS,EAAE3lB;QAA9C;;;;GAIFsjB,OAAO,GACP;KACC,IAAI,KAAK7d,gBAAT,EACA;OACCrF,eAAK,CAACC,MAAN,CAAa,KAAKgF,KAAlB,EAAyB,QAAzB,EAAmC,KAAKI,gBAAxC;OACArF,eAAK,CAACC,MAAN,CAAa,KAAKgF,KAAlB,EAAyB,OAAzB,EAAkC,KAAKI,gBAAvC;;;KAGDrF,eAAK,CAACC,MAAN,CAAa,KAAKgF,KAAlB,EAAyB,OAAzB,EAAkC,KAAKof,OAAL,CAAahnB,IAAb,CAAkB,IAAlB,CAAlC;KACA2C,eAAK,CAACC,MAAN,CAAa,KAAKgF,KAAlB,EAAyB,OAAzB,EAAkC,KAAKqf,OAAL,CAAajnB,IAAb,CAAkB,IAAlB,CAAlC;KACA2C,eAAK,CAACC,MAAN,CAAa,KAAKgF,KAAlB,EAAyB,MAAzB,EAAiC,KAAKsf,MAAL,CAAYlnB,IAAZ,CAAiB,IAAjB,CAAjC;KACA2C,eAAK,CAACC,MAAN,CAAa,KAAKgF,KAAlB,EAAyB,OAAzB,EAAkC,KAAKuf,OAAL,CAAannB,IAAb,CAAkB,IAAlB,CAAlC;;KAEA,IAAI,KAAKynB,SAAT,EACA;OACC,KAAKA,SAAL,CAAezkB,KAAf;;;KAGDxB,sBAAW,CAACqkB,OAAZ,CAAoB,KAAK1mB,EAAzB;KACA,KAAKjC,KAAL,GAAa,KAAb;;;GAGD+K,QAAQ,CAAC1F,KAAD,EACR;KACC,KAAKqF,KAAL,CAAWrF,KAAX,GAAmBA,KAAnB;;KACA,IAAInC,cAAI,CAACG,OAAL,CAAa,KAAKD,MAAlB,CAAJ,EACA;OACC,IAAIqmB,iBAAiB,GAAG,CAAC,CAAzB;;OACA,KAAK,IAAI5iB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKzD,MAAL,CAAYe,MAAhC,EAAwC0C,CAAC,EAAzC,EACA;SACC,IAAI,KAAKzD,MAAL,CAAYyD,CAAZ,EAAexB,KAAf,KAAyBA,KAA7B,EACA;WACCokB,iBAAiB,GAAG5iB,CAApB;WACA;;;;OAIF,IAAI4iB,iBAAiB,KAAK,CAAC,CAA3B,EACA;SACC,KAAK/e,KAAL,CAAWrF,KAAX,GAAmB,KAAKjC,MAAL,CAAYqmB,iBAAZ,EAA+BxoB,KAAlD;SACA,KAAKwoB,iBAAL,GAAyBA,iBAAzB;;;;;GAKHve,QAAQ,GACR;KACC,OAAO,KAAKR,KAAL,CAAWrF,KAAlB;;;CA1QF;;KCUIwf,QAAQ,GAAG9V,MAAM,CAACX,EAAP,IAAaA,EAAE,CAAC6c,IAAhB,IAAwB7c,EAAE,CAAC6c,IAAH,CAAQte,IAAhC,GAAuCyB,EAAE,CAAC6c,IAAH,CAAQte,IAA/C,GAAsD,IAArE;AACA,CAKO,MAAMue,eAAN,CACP;GACoB,OAAZC,YAAY,CAACnsB,MAAD,EACnB;KACC,IAAI,CAACA,MAAM,CAACM,IAAR,IAAgB,CAAC4D,cAAI,CAACyS,SAAL,CAAe3W,MAAM,CAACM,IAAtB,CAArB,EACA;OACC,MAAM,IAAI+Z,KAAJ,CAAU,+CAAV,CAAN;;;KAED,IAAInW,cAAI,CAAC2L,MAAL,CAAYgW,QAAZ,CAAJ,EACA;OACC,MAAM,IAAIxL,KAAJ,CAAU,iDAAV,CAAN;;;KAGD,IAAI+R,mBAAmB,GAAG,IAAIvT,mBAAJ,CAAwB7Y,MAAxB,CAA1B;KACAosB,mBAAmB,CAACpS,IAApB;KACA,OAAOoS,mBAAP;;;GAGqB,OAAfC,eAAe,CAACrsB,MAAD,EACtB;;CAlBD;;;;;;;;;;;;;;;;;;;;;;;;;"}
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.29 |
proxy
|
phpinfo
|
Settings