@syncfusion/ej2-ribbon 29.1.39 → 30.1.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +2 -0
- package/dist/ej2-ribbon.umd.min.js +2 -2
- package/dist/ej2-ribbon.umd.min.js.map +1 -1
- package/dist/es6/ej2-ribbon.es2015.js +62 -37
- package/dist/es6/ej2-ribbon.es2015.js.map +1 -1
- package/dist/es6/ej2-ribbon.es5.js +68 -43
- package/dist/es6/ej2-ribbon.es5.js.map +1 -1
- package/dist/global/ej2-ribbon.min.js +2 -2
- package/dist/global/ej2-ribbon.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +19 -54
- package/src/ribbon/base/ribbon.js +12 -7
- package/src/ribbon/items/ribbon-gallery.d.ts +1 -0
- package/src/ribbon/items/ribbon-gallery.js +16 -13
- package/src/ribbon/items/ribbon-groupbutton.js +32 -20
- package/src/ribbon/modules/ribbon-filemenu.js +8 -3
- package/styles/bds-lite.css +224 -213
- package/styles/bds.css +227 -213
- package/styles/bootstrap-dark-lite.css +224 -213
- package/styles/bootstrap-dark.css +227 -213
- package/styles/bootstrap-lite.css +224 -213
- package/styles/bootstrap.css +227 -213
- package/styles/bootstrap4-lite.css +224 -213
- package/styles/bootstrap4.css +227 -213
- package/styles/bootstrap5-dark-lite.css +224 -213
- package/styles/bootstrap5-dark.css +227 -213
- package/styles/bootstrap5-lite.css +224 -213
- package/styles/bootstrap5.3-lite.css +224 -213
- package/styles/bootstrap5.3.css +227 -213
- package/styles/bootstrap5.css +227 -213
- package/styles/fabric-dark-lite.css +224 -213
- package/styles/fabric-dark.css +227 -213
- package/styles/fabric-lite.css +224 -213
- package/styles/fabric.css +227 -213
- package/styles/fluent-dark-lite.css +224 -213
- package/styles/fluent-dark.css +227 -213
- package/styles/fluent-lite.css +224 -213
- package/styles/fluent.css +227 -213
- package/styles/fluent2-lite.css +225 -214
- package/styles/fluent2.css +228 -214
- package/styles/highcontrast-light-lite.css +224 -213
- package/styles/highcontrast-light.css +227 -213
- package/styles/highcontrast-lite.css +224 -213
- package/styles/highcontrast.css +227 -213
- package/styles/material-dark-lite.css +224 -213
- package/styles/material-dark.css +227 -213
- package/styles/material-lite.css +224 -213
- package/styles/material.css +227 -213
- package/styles/material3-dark-lite.css +224 -213
- package/styles/material3-dark.css +227 -213
- package/styles/material3-lite.css +224 -213
- package/styles/material3.css +227 -213
- package/styles/ribbon/_bds-definition.scss +1 -1
- package/styles/ribbon/_bigger.scss +4 -0
- package/styles/ribbon/_bootstrap-dark-definition.scss +1 -1
- package/styles/ribbon/_bootstrap-definition.scss +1 -1
- package/styles/ribbon/_bootstrap4-definition.scss +1 -1
- package/styles/ribbon/_bootstrap5-definition.scss +1 -1
- package/styles/ribbon/_bootstrap5.3-definition.scss +1 -1
- package/styles/ribbon/_fabric-dark-definition.scss +1 -1
- package/styles/ribbon/_fabric-definition.scss +1 -1
- package/styles/ribbon/_fluent-definition.scss +1 -1
- package/styles/ribbon/_fluent2-definition.scss +2 -2
- package/styles/ribbon/_fusionnew-definition.scss +1 -1
- package/styles/ribbon/_highcontrast-definition.scss +1 -1
- package/styles/ribbon/_highcontrast-light-definition.scss +1 -1
- package/styles/ribbon/_layout.scss +13 -1
- package/styles/ribbon/_material-dark-definition.scss +1 -1
- package/styles/ribbon/_material-definition.scss +1 -1
- package/styles/ribbon/_material3-definition.scss +1 -1
- package/styles/ribbon/_tailwind-definition.scss +1 -1
- package/styles/ribbon/_tailwind3-definition.scss +2 -2
- package/styles/ribbon/_theme.scss +40 -33
- package/styles/ribbon/bds.css +227 -213
- package/styles/ribbon/bootstrap-dark.css +227 -213
- package/styles/ribbon/bootstrap.css +227 -213
- package/styles/ribbon/bootstrap4.css +227 -213
- package/styles/ribbon/bootstrap5-dark.css +227 -213
- package/styles/ribbon/bootstrap5.3.css +227 -213
- package/styles/ribbon/bootstrap5.css +227 -213
- package/styles/ribbon/fabric-dark.css +227 -213
- package/styles/ribbon/fabric.css +227 -213
- package/styles/ribbon/fluent-dark.css +227 -213
- package/styles/ribbon/fluent.css +227 -213
- package/styles/ribbon/fluent2.css +228 -214
- package/styles/ribbon/highcontrast-light.css +227 -213
- package/styles/ribbon/highcontrast.css +227 -213
- package/styles/ribbon/material-dark.css +227 -213
- package/styles/ribbon/material.css +227 -213
- package/styles/ribbon/material3-dark.css +227 -213
- package/styles/ribbon/material3.css +227 -213
- package/styles/ribbon/tailwind-dark.css +227 -213
- package/styles/ribbon/tailwind.css +227 -213
- package/styles/ribbon/tailwind3.css +228 -214
- package/styles/tailwind-dark-lite.css +224 -213
- package/styles/tailwind-dark.css +227 -213
- package/styles/tailwind-lite.css +224 -213
- package/styles/tailwind.css +227 -213
- package/styles/tailwind3-lite.css +225 -214
- package/styles/tailwind3.css +228 -214
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ej2-ribbon.umd.min.js","sources":["../src/ribbon/base/interface.js","../src/ribbon/models/ribbon-button-settings.js","../src/ribbon/models/ribbon-checkbox-settings.js","../src/ribbon/models/ribbon-colorpicker-settings.js","../src/ribbon/models/ribbon-combobox-settings.js","../src/ribbon/models/ribbon-dropdown-settings.js","../src/ribbon/models/ribbon-splitbutton-settings.js","../src/ribbon/models/ribbon-tooltip.js","../src/ribbon/models/ribbon-group-button-item.js","../src/ribbon/models/ribbon-group-button-settings.js","../src/ribbon/models/ribbon-gallery-item.js","../src/ribbon/models/ribbon-gallery-group.js","../src/ribbon/models/ribbon-gallery-settings.js","../src/ribbon/models/ribbon-item.js","../src/ribbon/models/ribbon-collection.js","../src/ribbon/models/ribbon-group.js","../src/ribbon/models/ribbon-tab.js","../src/ribbon/models/ribbon-file-menu-settings.js","../src/ribbon/models/ribbon-back-button.js","../src/ribbon/models/ribbon-backstage-item.js","../src/ribbon/models/ribbon-back-stage-settings.js","../src/ribbon/models/ribbon-contextual-tab-settings.js","../src/ribbon/base/constant.js","../src/ribbon/items/ribbon-button.js","../src/ribbon/items/ribbon-checkbox.js","../src/ribbon/items/ribbon-colorpicker.js","../src/ribbon/items/ribbon-combobox.js","../src/ribbon/items/ribbon-dropdown.js","../src/ribbon/items/ribbon-splitbutton.js","../src/ribbon/base/utils.js","../src/ribbon/items/ribbon-groupbutton.js","../src/ribbon/items/ribbon-gallery.js","../src/ribbon/base/ribbon.js","../src/ribbon/modules/ribbon-filemenu.js","../src/ribbon/modules/ribbon-backstage.js","../src/ribbon/modules/ribbon-contextualtab.js","../src/ribbon/modules/ribbon-keytip.js"],"sourcesContent":["/**\n * Defines the layout types of ribbon.\n */\nexport var RibbonLayout;\n(function (RibbonLayout) {\n /**\n * Displays the ribbon tab content in classic layout.\n */\n RibbonLayout[\"Classic\"] = \"Classic\";\n /**\n * Displays the ribbon tab content in simplified layout.\n */\n RibbonLayout[\"Simplified\"] = \"Simplified\";\n})(RibbonLayout || (RibbonLayout = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var ItemOrientation;\n(function (ItemOrientation) {\n /**\n * Displays the collection of items in rows.\n */\n ItemOrientation[\"Row\"] = \"Row\";\n /**\n * Displays the collection of items in column.\n */\n ItemOrientation[\"Column\"] = \"Column\";\n})(ItemOrientation || (ItemOrientation = {}));\n/**\n * Defines the current size of the ribbon item in normal mode.\n *\n * @aspNumberEnum\n */\nexport var RibbonItemSize;\n(function (RibbonItemSize) {\n /**\n * The item appears with large icon and text at the bottom.\n */\n RibbonItemSize[RibbonItemSize[\"Large\"] = 4] = \"Large\";\n /**\n * The item appears with small icon and text at the right.\n */\n RibbonItemSize[RibbonItemSize[\"Medium\"] = 2] = \"Medium\";\n /**\n * The item appears with small icon only.\n */\n RibbonItemSize[RibbonItemSize[\"Small\"] = 1] = \"Small\";\n})(RibbonItemSize || (RibbonItemSize = {}));\n/**\n * Defines how to show an item in ribbon simplified layout.\n *\n * @aspNumberEnum\n */\nexport var DisplayMode;\n(function (DisplayMode) {\n /**\n * The item appears in the classic layout group.\n */\n DisplayMode[DisplayMode[\"Classic\"] = 4] = \"Classic\";\n /**\n * The item appears in the simplified layout group.\n */\n DisplayMode[DisplayMode[\"Simplified\"] = 2] = \"Simplified\";\n /**\n * The item appears in overflow popup.\n */\n DisplayMode[DisplayMode[\"Overflow\"] = 1] = \"Overflow\";\n /**\n * The item appears in classic layout group, simplified layout group, and overflow popup based on ribbon overflow state.\n */\n DisplayMode[DisplayMode[\"Auto\"] = 7] = \"Auto\";\n})(DisplayMode || (DisplayMode = {}));\n/**\n * Defines the type of the ribbon item.\n */\nexport var RibbonItemType;\n(function (RibbonItemType) {\n /**\n * Renders button as ribbon item.\n */\n RibbonItemType[\"Button\"] = \"Button\";\n /**\n * Renders checkbox as ribbon item.\n */\n RibbonItemType[\"CheckBox\"] = \"CheckBox\";\n /**\n * Renders color picker as ribbon item.\n */\n RibbonItemType[\"ColorPicker\"] = \"ColorPicker\";\n /**\n * Renders combobox as ribbon item.\n */\n RibbonItemType[\"ComboBox\"] = \"ComboBox\";\n /**\n * Renders dropdownbutton as ribbon item.\n */\n RibbonItemType[\"DropDown\"] = \"DropDown\";\n /**\n * Renders splitbutton as ribbon item.\n */\n RibbonItemType[\"SplitButton\"] = \"SplitButton\";\n /**\n * Renders the group button content as ribbon item.\n */\n RibbonItemType[\"GroupButton\"] = \"GroupButton\";\n /**\n * Renders the gallery as ribbon item.\n */\n RibbonItemType[\"Gallery\"] = \"Gallery\";\n /**\n * Renders the template content as ribbon item.\n */\n RibbonItemType[\"Template\"] = \"Template\";\n})(RibbonItemType || (RibbonItemType = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var RibbonGroupButtonSelection;\n(function (RibbonGroupButtonSelection) {\n /**\n * Allows selecting single button from button group.\n */\n RibbonGroupButtonSelection[\"Single\"] = \"Single\";\n /**\n * Allows selecting multiple buttons from button group.\n */\n RibbonGroupButtonSelection[\"Multiple\"] = \"Multiple\";\n})(RibbonGroupButtonSelection || (RibbonGroupButtonSelection = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon button item.\n */\nvar RibbonButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonButtonSettings, _super);\n function RibbonButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isToggle\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isPrimary\", void 0);\n __decorate([\n Property({})\n ], RibbonButtonSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"clicked\", void 0);\n return RibbonButtonSettings;\n}(ChildProperty));\nexport { RibbonButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon checkbox item.\n */\nvar RibbonCheckBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonCheckBoxSettings, _super);\n function RibbonCheckBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of checkbox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCheckBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonCheckBoxSettings.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RibbonCheckBoxSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property({})\n ], RibbonCheckBoxSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"change\", void 0);\n return RibbonCheckBoxSettings;\n}(ChildProperty));\nexport { RibbonCheckBoxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon color picker.\n */\nvar RibbonColorPickerSettings = /** @class */ (function (_super) {\n __extends(RibbonColorPickerSettings, _super);\n function RibbonColorPickerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of colorpicker.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonColorPickerSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(10)\n ], RibbonColorPickerSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"label\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"enableOpacity\", void 0);\n __decorate([\n Property('Palette')\n ], RibbonColorPickerSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"modeSwitcher\", void 0);\n __decorate([\n Property(false)\n ], RibbonColorPickerSettings.prototype, \"noColor\", void 0);\n __decorate([\n Property(null)\n ], RibbonColorPickerSettings.prototype, \"presetColors\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"showButtons\", void 0);\n __decorate([\n Property('#008000ff')\n ], RibbonColorPickerSettings.prototype, \"value\", void 0);\n __decorate([\n Property({})\n ], RibbonColorPickerSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeTileRender\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"select\", void 0);\n return RibbonColorPickerSettings;\n}(ChildProperty));\nexport { RibbonColorPickerSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '@syncfusion/ej2-dropdowns';\n/**\n * Defines the ribbon combobox item.\n */\nvar RibbonComboBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonComboBoxSettings, _super);\n function RibbonComboBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of combobox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonComboBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonComboBoxSettings.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"autofill\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property([])\n ], RibbonComboBoxSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], RibbonComboBoxSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('Contains')\n ], RibbonComboBoxSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"index\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], RibbonComboBoxSettings.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], RibbonComboBoxSettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], RibbonComboBoxSettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"showClearButton\", void 0);\n __decorate([\n Property('None')\n ], RibbonComboBoxSettings.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"value\", void 0);\n __decorate([\n Property('150px')\n ], RibbonComboBoxSettings.prototype, \"width\", void 0);\n __decorate([\n Property({})\n ], RibbonComboBoxSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"select\", void 0);\n return RibbonComboBoxSettings;\n}(ChildProperty));\nexport { RibbonComboBoxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon DropDownButton item.\n */\nvar RibbonDropDownSettings = /** @class */ (function (_super) {\n __extends(RibbonDropDownSettings, _super);\n function RibbonDropDownSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonDropDownSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonDropDownSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"target\", void 0);\n __decorate([\n Property(false)\n ], RibbonDropDownSettings.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Property({})\n ], RibbonDropDownSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"select\", void 0);\n return RibbonDropDownSettings;\n}(ChildProperty));\nexport { RibbonDropDownSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon SplitButton item.\n */\nvar RibbonSplitButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonSplitButtonSettings, _super);\n function RibbonSplitButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonSplitButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonSplitButtonSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"target\", void 0);\n __decorate([\n Property({})\n ], RibbonSplitButtonSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"select\", void 0);\n return RibbonSplitButtonSettings;\n}(ChildProperty));\nexport { RibbonSplitButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon tooltip.\n */\nvar RibbonTooltip = /** @class */ (function (_super) {\n __extends(RibbonTooltip, _super);\n function RibbonTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"title\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"iconCss\", void 0);\n return RibbonTooltip;\n}(ChildProperty));\nexport { RibbonTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonItem = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonItem, _super);\n function RibbonGroupButtonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of group button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroupButtonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"keyTip\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonGroupButtonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroupButtonItem.prototype, \"selected\", void 0);\n __decorate([\n Property({})\n ], RibbonGroupButtonItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"beforeClick\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"click\", void 0);\n return RibbonGroupButtonItem;\n}(ChildProperty));\nexport { RibbonGroupButtonItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroupButtonItem } from './ribbon-group-button-item';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonSettings, _super);\n function RibbonGroupButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonGroupButtonSettings.prototype, \"header\", void 0);\n __decorate([\n Property('Single')\n ], RibbonGroupButtonSettings.prototype, \"selection\", void 0);\n __decorate([\n Collection([], RibbonGroupButtonItem)\n ], RibbonGroupButtonSettings.prototype, \"items\", void 0);\n return RibbonGroupButtonSettings;\n}(ChildProperty));\nexport { RibbonGroupButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon gallery item.\n */\nvar RibbonGalleryItem = /** @class */ (function (_super) {\n __extends(RibbonGalleryItem, _super);\n function RibbonGalleryItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property({})\n ], RibbonGalleryItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonGalleryItem.prototype, \"disabled\", void 0);\n return RibbonGalleryItem;\n}(ChildProperty));\nexport { RibbonGalleryItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGalleryItem } from './ribbon-gallery-item';\n/**\n * Defines the ribbon gallery group.\n */\nvar RibbonGalleryGroup = /** @class */ (function (_super) {\n __extends(RibbonGalleryGroup, _super);\n function RibbonGalleryGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], RibbonGalleryItem)\n ], RibbonGalleryGroup.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryGroup.prototype, \"header\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGalleryGroup.prototype, \"itemWidth\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGalleryGroup.prototype, \"itemHeight\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryGroup.prototype, \"cssClass\", void 0);\n return RibbonGalleryGroup;\n}(ChildProperty));\nexport { RibbonGalleryGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property, Event } from '@syncfusion/ej2-base';\nimport { RibbonGalleryGroup } from './ribbon-gallery-group';\n/**\n * Defines the ribbon gallery settings.\n */\nvar RibbonGallerySettings = /** @class */ (function (_super) {\n __extends(RibbonGallerySettings, _super);\n function RibbonGallerySettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], RibbonGalleryGroup)\n ], RibbonGallerySettings.prototype, \"groups\", void 0);\n __decorate([\n Property(3)\n ], RibbonGallerySettings.prototype, \"itemCount\", void 0);\n __decorate([\n Property(null)\n ], RibbonGallerySettings.prototype, \"selectedItemIndex\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGallerySettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGallerySettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property('')\n ], RibbonGallerySettings.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], RibbonGallerySettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"itemHover\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"beforeSelect\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"select\", void 0);\n return RibbonGallerySettings;\n}(ChildProperty));\nexport { RibbonGallerySettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Complex, Property } from '@syncfusion/ej2-base';\nimport { RibbonItemSize, DisplayMode } from '../base/interface';\nimport { RibbonButtonSettings } from './ribbon-button-settings';\nimport { RibbonCheckBoxSettings } from './ribbon-checkbox-settings';\nimport { RibbonColorPickerSettings } from './ribbon-colorpicker-settings';\nimport { RibbonComboBoxSettings } from './ribbon-combobox-settings';\nimport { RibbonDropDownSettings } from './ribbon-dropdown-settings';\nimport { RibbonSplitButtonSettings } from './ribbon-splitbutton-settings';\nimport { RibbonTooltip } from './ribbon-tooltip';\nimport { RibbonGroupButtonSettings } from './ribbon-group-button-settings';\nimport { RibbonGallerySettings } from './ribbon-gallery-settings';\n/**\n * Defines the ribbon item.\n */\nvar RibbonItem = /** @class */ (function (_super) {\n __extends(RibbonItem, _super);\n function RibbonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of item.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"keyTip\", void 0);\n __decorate([\n Property(RibbonItemSize.Medium)\n ], RibbonItem.prototype, \"activeSize\", void 0);\n __decorate([\n Property(RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n ], RibbonItem.prototype, \"allowedSizes\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Button')\n ], RibbonItem.prototype, \"type\", void 0);\n __decorate([\n Property(DisplayMode.Auto)\n ], RibbonItem.prototype, \"displayOptions\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Complex({}, RibbonButtonSettings)\n ], RibbonItem.prototype, \"buttonSettings\", void 0);\n __decorate([\n Complex({}, RibbonDropDownSettings)\n ], RibbonItem.prototype, \"dropDownSettings\", void 0);\n __decorate([\n Complex({}, RibbonCheckBoxSettings)\n ], RibbonItem.prototype, \"checkBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonColorPickerSettings)\n ], RibbonItem.prototype, \"colorPickerSettings\", void 0);\n __decorate([\n Complex({}, RibbonComboBoxSettings)\n ], RibbonItem.prototype, \"comboBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonSplitButtonSettings)\n ], RibbonItem.prototype, \"splitButtonSettings\", void 0);\n __decorate([\n Complex({}, RibbonGroupButtonSettings)\n ], RibbonItem.prototype, \"groupButtonSettings\", void 0);\n __decorate([\n Complex({}, RibbonGallerySettings)\n ], RibbonItem.prototype, \"gallerySettings\", void 0);\n return RibbonItem;\n}(ChildProperty));\nexport { RibbonItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonItem } from './ribbon-item';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCollection = /** @class */ (function (_super) {\n __extends(RibbonCollection, _super);\n function RibbonCollection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of collection.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCollection.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonItem)\n ], RibbonCollection.prototype, \"items\", void 0);\n return RibbonCollection;\n}(ChildProperty));\nexport { RibbonCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonCollection } from './ribbon-collection';\n/**\n * Defines the ribbon group.\n */\nvar RibbonGroup = /** @class */ (function (_super) {\n __extends(RibbonGroup, _super);\n function RibbonGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Group.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroup.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"launcherIconKeyTip\", void 0);\n __decorate([\n Collection([], RibbonCollection)\n ], RibbonGroup.prototype, \"collections\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"isCollapsed\", void 0);\n __decorate([\n Property(true)\n ], RibbonGroup.prototype, \"isCollapsible\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"enableGroupOverflow\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"groupIconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"header\", void 0);\n __decorate([\n Property('Column')\n ], RibbonGroup.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"overflowHeader\", void 0);\n __decorate([\n Property(0)\n ], RibbonGroup.prototype, \"priority\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"showLauncherIcon\", void 0);\n return RibbonGroup;\n}(ChildProperty));\nexport { RibbonGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroup } from './ribbon-group';\n/**\n * Defines the ribbon tab.\n */\nvar RibbonTab = /** @class */ (function (_super) {\n __extends(RibbonTab, _super);\n function RibbonTab() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonTab.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonGroup)\n ], RibbonTab.prototype, \"groups\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"header\", void 0);\n return RibbonTab;\n}(ChildProperty));\nexport { RibbonTab };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Event, Complex, Collection } from '@syncfusion/ej2-base';\nimport { MenuAnimationSettings, MenuItem } from '@syncfusion/ej2-navigations';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar FileMenuSettings = /** @class */ (function (_super) {\n __extends(FileMenuSettings, _super);\n function FileMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of FileMenu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n FileMenuSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], FileMenuSettings.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"visible\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], FileMenuSettings.prototype, \"menuItems\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Complex({}, MenuAnimationSettings)\n ], FileMenuSettings.prototype, \"animationSettings\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], FileMenuSettings.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"select\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"keyTip\", void 0);\n return FileMenuSettings;\n}(ChildProperty));\nexport { FileMenuSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageBackButton = /** @class */ (function (_super) {\n __extends(BackstageBackButton, _super);\n function BackstageBackButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property(true)\n ], BackstageBackButton.prototype, \"visible\", void 0);\n return BackstageBackButton;\n}(ChildProperty));\nexport { BackstageBackButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Event } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageItem = /** @class */ (function (_super) {\n __extends(BackstageItem, _super);\n function BackstageItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"separator\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"isFooter\", void 0);\n __decorate([\n Event()\n ], BackstageItem.prototype, \"backStageItemClick\", void 0);\n return BackstageItem;\n}(ChildProperty));\nexport { BackstageItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Complex, Collection } from '@syncfusion/ej2-base';\nimport { BackstageBackButton } from './ribbon-back-button';\nimport { BackstageItem } from './ribbon-backstage-item';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar BackStageMenu = /** @class */ (function (_super) {\n __extends(BackStageMenu, _super);\n function BackStageMenu() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Backstage Menu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n BackStageMenu.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], BackStageMenu.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackStageMenu.prototype, \"keyTip\", void 0);\n __decorate([\n Property(false)\n ], BackStageMenu.prototype, \"visible\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], BackStageMenu.prototype, \"target\", void 0);\n __decorate([\n Complex({}, BackstageBackButton)\n ], BackStageMenu.prototype, \"backButton\", void 0);\n __decorate([\n Collection([], BackstageItem)\n ], BackStageMenu.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], BackStageMenu.prototype, \"template\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], BackStageMenu.prototype, \"ribbonTooltipSettings\", void 0);\n return BackStageMenu;\n}(ChildProperty));\nexport { BackStageMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Collection } from '@syncfusion/ej2-base';\nimport { RibbonTab } from './ribbon-tab';\n/**\n * Defines the ribbon contextual tab.\n */\nvar RibbonContextualTabSettings = /** @class */ (function (_super) {\n __extends(RibbonContextualTabSettings, _super);\n function RibbonContextualTabSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of contextual tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonContextualTabSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonContextualTabSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], RibbonContextualTabSettings.prototype, \"isSelected\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], RibbonContextualTabSettings.prototype, \"tabs\", void 0);\n return RibbonContextualTabSettings;\n}(ChildProperty));\nexport { RibbonContextualTabSettings };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var ITEM_VERTICAL_CENTER = 'e-ribbon-vertical-center';\n/** @hidden */\nexport var EXPAND_COLLAPSE_ICON = 'e-icons e-drop-icon';\n/** @hidden */\nexport var BACKSTAGE_CLOSE_ICON = 'e-icons e-arrow-left';\n/** @hidden */\nexport var OVERFLOW_ICON = 'e-icons e-more-horizontal-1';\n/** @hidden */\nexport var VERTICAL_DDB = 'e-vertical';\n/** @hidden */\nexport var DISABLED_CSS = 'e-disabled';\n/** @hidden */\nexport var RTL_CSS = 'e-rtl';\n/** @hidden */\nexport var RIBBON_HOVER = 'e-ribbon-hover';\n/** @hidden */\nexport var RIBBON_CONTROL = 'e-ribbon-control';\n/** @hidden */\nexport var RIBBON_POPUP_CONTROL = 'e-ribbon-popup-control';\n/** @hidden */\nexport var RIBBON_POPUP_OPEN = 'e-ribbon-open';\n/** @hidden */\nexport var RIBBON_KEYTIP = 'e-ribbon-keytip';\n/** @hidden */\nexport var SPACE = ' ';\n/** @hidden */\nexport var HORIZONTAL_SCROLLBAR = 'e-hscroll-bar';\n/** @hidden */\nexport var HIDE_CSS = 'e-ribbon-hide';\n/** @hidden */\nexport var RIBBON_TAB = 'e-ribbon-tab';\n/** @hidden */\nexport var RIBBON_CONTEXTUAL_TAB = 'e-ribbon-contextual-tab';\n/** @hidden */\nexport var RIBBON_TAB_ACTIVE = 'e-ribbon-active';\n/** @hidden */\nexport var RIBBON_TAB_ITEM = 'e-ribbon-tab-item';\n/** @hidden */\nexport var RIBBON_COLLAPSE_BUTTON = 'e-ribbon-collapse-btn';\n/** @hidden */\nexport var RIBBON_EXPAND_BUTTON = 'e-ribbon-expand-btn';\n/** @hidden */\nexport var RIBBON_COLLAPSIBLE = 'e-ribbon-collapsible';\n/** @hidden */\nexport var RIBBON_OVERALL_OF_BUTTON = 'e-ribbon-overall-of-btn';\n/** @hidden */\nexport var RIBBON_GROUP_OF_BUTTON = 'e-ribbon-group-of-btn';\n/** @hidden */\nexport var RIBBON_OVERFLOW_TARGET = 'e-ribbon-overflow-target';\n/** @hidden */\nexport var RIBBON_OVERFLOW = 'e-ribbon-overflow';\n/** @hidden */\nexport var TAB_CONTENT = 'e-content';\n/** @hidden */\nexport var RIBBON_MINIMIZE = 'e-ribbon-minimize';\n/** @hidden */\nexport var RIBBON_GROUP = 'e-ribbon-group';\n/** @hidden */\nexport var RIBBON_SINGLE_BUTTON_SELECTION = 'e-ribbon-single-selection';\n/** @hidden */\nexport var RIBBON_MULTIPLE_BUTTON_SELECTION = 'e-ribbon-multiple-selection';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON = 'e-ribbon-group-button';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_OVERFLOW_POPUP = 'e-ribbon-group-button-overflow-popup';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_CONTENT = 'e-ribbon-group-button-content';\n/** @hidden */\nexport var RIBBON_GROUP_CONTAINER = 'e-ribbon-group-container';\n/** @hidden */\nexport var RIBBON_OF_TAB_CONTAINER = 'e-ribbon-of-tab';\n/** @hidden */\nexport var RIBBON_OF_GROUP_CONTAINER = 'e-ribbon-of-group-container';\n/** @hidden */\nexport var RIBBON_GROUP_CONTENT = 'e-ribbon-group-content';\n/** @hidden */\nexport var RIBBON_GROUP_HEADER = 'e-ribbon-group-header';\n/** @hidden */\nexport var RIBBON_OVERFLOW_HEADER = 'e-ribbon-overflow-header';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW = 'e-ribbon-group-overflow';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW_DDB = 'e-ribbon-group-overflow-ddb';\n/** @hidden */\nexport var RIBBON_LAUNCHER = 'e-ribbon-launcher';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON_ELE = 'e-ribbon-launcher-icon';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON = 'e-icons e-launcher';\n/** @hidden */\nexport var RIBBON_COLLECTION = 'e-ribbon-collection';\n/** @hidden */\nexport var RIBBON_ITEM = 'e-ribbon-item';\n/** @hidden */\nexport var RIBBON_ROW = 'e-ribbon-row';\n/** @hidden */\nexport var RIBBON_COLUMN = 'e-ribbon-column';\n/** @hidden */\nexport var RIBBON_LARGE_ITEM = 'e-ribbon-large-item';\n/** @hidden */\nexport var RIBBON_MEDIUM_ITEM = 'e-ribbon-medium-item';\n/** @hidden */\nexport var RIBBON_SMALL_ITEM = 'e-ribbon-small-item';\n/** @hidden */\nexport var RIBBON_CONTENT_HEIGHT = 'e-ribbon-content-height';\n/** @hidden */\nexport var DROPDOWNBUTTON = 'e-dropdown-btn';\n/** @hidden */\nexport var DROPDOWNBUTTON_HIDE = 'e-caret-hide';\n/** @hidden */\nexport var RIBBON_TEMPLATE = 'e-ribbon-template';\n/** @hidden */\nexport var RIBBON_HELP_TEMPLATE = 'e-ribbon-help-template';\n/** @hidden */\nexport var RIBBON_TOOLTIP = 'e-ribbon-tooltip';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TARGET = 'e-ribbon-tooltip-target';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TITLE = 'e-ribbon-tooltip-title';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTENT = 'e-ribbon-tooltip-content';\n/** @hidden */\nexport var RIBBON_TOOLTIP_ICON = 'e-ribbon-tooltip-icon';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTAINER = 'e-ribbon-tooltip-container';\n/** @hidden */\nexport var RIBBON_TEXT_CONTAINER = 'e-ribbon-text-container';\n/** @hidden */\nexport var RIBBON_SIMPLIFIED_MODE = 'e-ribbon-simplified-mode';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP = 'e-ribbon-backstage-popup';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_OPEN = 'e-ribbon-backstage-open';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_CONTENT = 'e-ribbon-backstage-content';\n/** @hidden */\nexport var RIBBON_SELECTED_CONTENT = 'e-ribbon-selected-content';\n/** @hidden */\nexport var RIBBON_BACKSTAGE = 'e-ribbon-backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU = 'e-ribbon-backstage-menu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEMPLATE = 'e-ribbon-backstage-template';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_WRAPPER = 'e-ribbon-backstage-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_ITEMS_WRAPPER = 'e-ribbon-backstage-items-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEXT_MENU = 'e-blankicon';\n/** @hidden */\nexport var TAB_ID = '_tab';\n/** @hidden */\nexport var GROUP_ID = '_group';\n/** @hidden */\nexport var COLLECTION_ID = '_collection';\n/** @hidden */\nexport var ITEM_ID = '_item';\n/** @hidden */\nexport var COLLAPSE_BUTTON_ID = '_collapsebutton';\n/** @hidden */\nexport var OVRLOF_BUTTON_ID = '_sim_ovrl_overflow';\n/** @hidden */\nexport var GROUPOF_BUTTON_ID = '_sim_grp_overflow';\n/** @hidden */\nexport var HEADER_ID = '_header';\n/** @hidden */\nexport var LAUNCHER_ID = '_launcher';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var CONTAINER_ID = '_container';\n/** @hidden */\nexport var OVERFLOW_ID = '_overflow';\n/** @hidden */\nexport var DROPDOWN_ID = '_dropdown';\n/** @hidden */\nexport var RIBBON_FILE_MENU_ID = '_filemenu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_ID = '_backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP_ID = '_backstagepopup';\n/** @hidden */\nexport var RIBBON_FILE_MENU_LIST = '_filemenulist';\n/** @hidden */\nexport var RIBBON_MENU_LIST = '_menulist';\n/** @hidden */\nexport var RIBBON_FOOTER_MENU_LIST = '_footermenulist';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_ID = '_helppanetemplate';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_ID = '_grpbtn';\n/** @hidden */\nexport var RIBBON_KEYTIP_ID = '_keytip';\n/** @hidden */\nexport var RIBBON_FILE_MENU_WIDTH = '--fileMenuWidth';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_WIDTH = '--helpTemplateWidth';\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RibbonItemSize, setCustomAttributes } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_POPUP_CONTROL, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonButton = /** @class */ (function () {\n function RibbonButton(parent) {\n this.parent = parent;\n }\n RibbonButton.prototype.getModuleName = function () {\n return 'ribbonButton';\n };\n RibbonButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates button.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.createButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var btnSettings = item.buttonSettings;\n new Button({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n iconCss: btnSettings.iconCss,\n disabled: item.disabled,\n cssClass: (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (btnSettings.cssClass ? btnSettings.cssClass : '')).trim(),\n content: item.activeSize === RibbonItemSize.Small ? '' : btnSettings.content,\n isPrimary: btnSettings.isPrimary,\n isToggle: btnSettings.isToggle,\n created: btnSettings.created\n }, buttonEle);\n if (btnSettings.htmlAttributes) {\n if (btnSettings.htmlAttributes.id) {\n delete btnSettings.htmlAttributes.id;\n }\n setCustomAttributes(buttonEle, btnSettings.htmlAttributes);\n }\n buttonEle.onclick = function (e) {\n if (btnSettings.clicked) {\n btnSettings.clicked.call(_this, e);\n }\n };\n if (btnSettings.content) {\n buttonEle.setAttribute('aria-label', btnSettings.content);\n }\n else {\n buttonEle.setAttribute('aria-label', 'button');\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n buttonEle.setAttribute('data-control', item.type.toString());\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({ cssClass: buttonObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n var buttonObj = getComponent(buttonEle, Button);\n var cssClass = buttonObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n buttonObj.setProperties({ cssClass: cssClass.join(SPACE) });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the button.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonButton.prototype.click = function (controlId) {\n var buttonEle = getItemElement(this.parent, controlId);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n if (!buttonObj.disabled) {\n buttonObj.click();\n }\n };\n /**\n * Updates the button properties.\n *\n * @param {RibbonButtonSettingsModel} prop - Gets the button property.\n * @param {string} id - Gets the ID of button item.\n * @returns {void}\n */\n RibbonButton.prototype.updateButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.buttonSettings, prop);\n var buttonEle = getItemElement(this.parent, id, itemProp);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n if (prop.isToggle) {\n buttonEle.classList.add('e-active');\n }\n if (prop.cssClass) {\n prop.cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n buttonEle.setAttribute('aria-label', prop.content);\n }\n delete prop.clicked;\n buttonObj.setProperties(prop);\n };\n /**\n * Updates the button size.\n *\n * @param {HTMLElement} element - Gets the button element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.updateButtonSize = function (element, item) {\n var buttonObj = getComponent(element, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : item.buttonSettings.content\n });\n };\n return RibbonButton;\n}());\nexport { RibbonButton };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCheckBox = /** @class */ (function () {\n function RibbonCheckBox(parent) {\n this.parent = parent;\n }\n RibbonCheckBox.prototype.getModuleName = function () {\n return 'ribbonCheckBox';\n };\n RibbonCheckBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the check box.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.createCheckBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var checkBoxSettings = item.checkBoxSettings;\n if (checkBoxSettings.htmlAttributes) {\n if (checkBoxSettings.htmlAttributes.id) {\n delete checkBoxSettings.htmlAttributes.id;\n }\n }\n new CheckBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n checked: checkBoxSettings.checked,\n cssClass: (RIBBON_CONTROL + SPACE + (checkBoxSettings.cssClass ? checkBoxSettings.cssClass : '')).trim(),\n label: checkBoxSettings.label,\n labelPosition: checkBoxSettings.labelPosition,\n disabled: item.disabled,\n created: checkBoxSettings.created,\n htmlAttributes: checkBoxSettings.htmlAttributes,\n change: function (e) {\n if (checkBoxSettings.change) {\n checkBoxSettings.change.call(_this, e);\n }\n }\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.cssClass = checkBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n var checkBoxObj = getComponent(inputEle, CheckBox);\n var cssClass = checkBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n checkBoxObj.cssClass = cssClass.join(SPACE);\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the Checkbox.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonCheckBox.prototype.click = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n if (!inputEle) {\n return;\n }\n var checkBoxObj = getComponent(inputEle, CheckBox);\n if (!checkBoxObj.disabled) {\n checkBoxObj.click();\n }\n };\n /**\n * Updates the checkbox.\n *\n * @param {RibbonCheckBoxSettingsModel} prop - Gets the checkbox property.\n * @param {string} id - Gets the ID of checkbox.\n * @returns {void}\n */\n RibbonCheckBox.prototype.updateCheckBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.change;\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.setProperties(prop);\n };\n return RibbonCheckBox;\n}());\nexport { RibbonCheckBox };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { ColorPicker } from '@syncfusion/ej2-inputs';\nimport { getItem, getItemElement, setCustomAttributes } from '../base/index';\nimport { RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonColorPicker = /** @class */ (function () {\n function RibbonColorPicker(parent) {\n this.parent = parent;\n }\n RibbonColorPicker.prototype.getModuleName = function () {\n return 'ribbonColorPicker';\n };\n RibbonColorPicker.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the colorpicker.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.createColorPicker = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var colorPickerSettings = item.colorPickerSettings;\n var colorPicker = new ColorPicker({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n columns: colorPickerSettings.columns,\n cssClass: (RIBBON_CONTROL + SPACE + (colorPickerSettings.cssClass ? colorPickerSettings.cssClass : '')).trim(),\n disabled: item.disabled,\n enableOpacity: colorPickerSettings.enableOpacity,\n mode: colorPickerSettings.mode,\n modeSwitcher: colorPickerSettings.modeSwitcher,\n noColor: colorPickerSettings.noColor,\n presetColors: colorPickerSettings.presetColors,\n showButtons: colorPickerSettings.showButtons,\n value: colorPickerSettings.value,\n beforeClose: function () {\n colorPicker.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.beforeClose) {\n colorPickerSettings.beforeClose.call(_this);\n }\n },\n beforeOpen: colorPickerSettings.beforeOpen,\n beforeTileRender: colorPickerSettings.beforeTileRender,\n created: colorPickerSettings.created,\n change: function (e) {\n colorPickerSettings.value = e.value.toString();\n if (colorPickerSettings.change) {\n colorPickerSettings.change.call(_this, e);\n }\n },\n open: function () {\n colorPicker.element.parentElement.classList.add(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.open) {\n colorPickerSettings.open.call(_this);\n }\n },\n select: colorPickerSettings.select\n }, inputEle);\n if (colorPickerSettings.htmlAttributes) {\n if (colorPickerSettings.htmlAttributes.id) {\n delete colorPickerSettings.htmlAttributes.id;\n }\n setCustomAttributes(inputEle, colorPickerSettings.htmlAttributes);\n }\n var wrapper = colorPicker.element.parentElement;\n EventHandler.add(wrapper, 'mouseenter', this.toggleWrapperHover.bind(this, wrapper, true), this);\n EventHandler.add(wrapper, 'mouseleave', this.toggleWrapperHover.bind(this, wrapper, false), this);\n };\n RibbonColorPicker.prototype.toggleWrapperHover = function (wrapper, isAdd) {\n if (isAdd) {\n wrapper.classList.add(RIBBON_HOVER);\n }\n else {\n wrapper.classList.remove(RIBBON_HOVER);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var colorPickerSettings = item.colorPickerSettings;\n if (colorPickerSettings.label && this.parent.activeLayout === 'Simplified') {\n var label = this.parent.createElement('div', {\n className: 'e-ribbon-colorpicker-label',\n id: item.id + '_label',\n innerHTML: colorPickerSettings.label\n });\n itemEle.insertBefore(label, itemEle.firstChild);\n }\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n colorPickerEle.setAttribute('data-control', item.type.toString());\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n colorPickerObj.setProperties({ cssClass: colorPickerObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n var splitBtn = colorPickerObj['splitBtn'];\n var target;\n colorPickerObj.beforeClose = function (e) {\n target = e.event ? e.event.target : null;\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n splitBtn.close = function () {\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var colorPickerSettings = item.colorPickerSettings;\n if (colorPickerSettings.label) {\n var label = itemEle.querySelector('#' + item.id + '_label');\n if (label) {\n label.remove();\n }\n }\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n var cssClass = colorPickerObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n colorPickerObj.setProperties({ cssClass: cssClass.join(SPACE) });\n var splitBtn = colorPickerObj['splitBtn'];\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n splitBtn.close = null;\n colorPickerObj.beforeClose = function () {\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n };\n RibbonColorPicker.prototype.getColorPickerObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ColorPicker) : null;\n };\n /**\n * Gets color value in specified type.\n *\n * @param {string} controlId -Gets the control ID.\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @returns {string} - Returns string.\n */\n RibbonColorPicker.prototype.getValue = function (controlId, value, type) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n return colorPickerObj ? colorPickerObj.getValue(value, type) : '';\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @param {string} controlId - set the id of the control.\n * @returns {void} - Returns void.\n */\n RibbonColorPicker.prototype.toggle = function (controlId) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n if (!colorPickerObj) {\n return;\n }\n if (!colorPickerObj.disabled) {\n colorPickerObj.toggle();\n }\n };\n /**\n * Updates the colorpicker properties.\n *\n * @param {RibbonColorPickerSettingsModel} prop - Gets the colorpicker property.\n * @param {string} id - Gets the ID of colorpicker.\n * @returns {void}\n */\n RibbonColorPicker.prototype.updateColorPicker = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.beforeClose;\n delete prop.open;\n var colorPickerObj = getComponent(inputEle, ColorPicker);\n colorPickerObj.setProperties(prop);\n };\n /**\n * @param {HTMLElement} element - Gets the colorpicker element to be destroyed.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.unwireColorPickerEvents = function (element) {\n var colorPickerObj = getComponent(element, ColorPicker);\n var wrapper = colorPickerObj.element.parentElement;\n EventHandler.remove(wrapper, 'mouseenter', this.toggleWrapperHover);\n EventHandler.remove(wrapper, 'mouseleave', this.toggleWrapperHover);\n };\n return RibbonColorPicker;\n}());\nexport { RibbonColorPicker };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { ComboBox } from '@syncfusion/ej2-dropdowns';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonComboBox = /** @class */ (function () {\n function RibbonComboBox(parent) {\n this.parent = parent;\n }\n RibbonComboBox.prototype.getModuleName = function () {\n return 'ribbonComboBox';\n };\n RibbonComboBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the combobox.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.createComboBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.htmlAttributes) {\n if (comboBoxSettings.htmlAttributes.id) {\n delete comboBoxSettings.htmlAttributes.id;\n }\n }\n new ComboBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n allowCustom: false,\n floatLabelType: 'Never',\n ignoreAccent: true,\n ignoreCase: true,\n allowFiltering: comboBoxSettings.allowFiltering,\n autofill: comboBoxSettings.autofill,\n cssClass: (RIBBON_CONTROL + SPACE + (comboBoxSettings.cssClass ? comboBoxSettings.cssClass : '')).trim(),\n dataSource: comboBoxSettings.dataSource,\n enabled: !item.disabled,\n fields: comboBoxSettings.fields,\n filterType: comboBoxSettings.filterType,\n footerTemplate: comboBoxSettings.footerTemplate,\n groupTemplate: comboBoxSettings.groupTemplate,\n headerTemplate: comboBoxSettings.headerTemplate,\n index: comboBoxSettings.index,\n itemTemplate: comboBoxSettings.itemTemplate,\n noRecordsTemplate: comboBoxSettings.noRecordsTemplate,\n placeholder: comboBoxSettings.placeholder,\n popupHeight: comboBoxSettings.popupHeight,\n popupWidth: comboBoxSettings.popupWidth,\n showClearButton: comboBoxSettings.showClearButton,\n sortOrder: comboBoxSettings.sortOrder,\n text: comboBoxSettings.text,\n value: comboBoxSettings.value,\n width: comboBoxSettings.width,\n beforeOpen: comboBoxSettings.beforeOpen,\n open: comboBoxSettings.open,\n htmlAttributes: comboBoxSettings.htmlAttributes,\n close: function (e) {\n if (comboBoxSettings.close) {\n comboBoxSettings.close.call(_this, e);\n }\n },\n filtering: comboBoxSettings.filtering,\n change: comboBoxSettings.change,\n select: comboBoxSettings.select,\n created: comboBoxSettings.created\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label && this.parent.activeLayout === 'Simplified') {\n var label = this.parent.createElement('div', {\n className: 'e-ribbon-combobox-label',\n id: item.id + '_label',\n innerHTML: comboBoxSettings.label\n });\n itemEle.insertBefore(label, itemEle.firstChild);\n }\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties({ cssClass: comboBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n comboBoxObj.close = function (e) {\n var target = e.event ? e.event.target : null;\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label) {\n var label = itemEle.querySelector('#' + item.id + '_label');\n if (label) {\n label.remove();\n }\n }\n var inputEle = itemEle.querySelector('#' + item.id);\n var comboBoxObj = getComponent(inputEle, ComboBox);\n var cssClass = comboBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n comboBoxObj.setProperties({ cssClass: cssClass.join(SPACE) });\n comboBoxObj.close = function (e) {\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n };\n };\n RibbonComboBox.prototype.getComboBoxObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ComboBox) : null;\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {string } controlId - set the id of the control in which methods needs to be called.\n * @param {Object[] } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n RibbonComboBox.prototype.filter = function (controlId, dataSource, query, fields) {\n this.getComboBoxObj(controlId).filter(dataSource, query, fields);\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.hidePopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.hidePopup();\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.showPopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.showPopup();\n };\n /**\n * Updates the combobox properties.\n *\n * @param {RibbonComboBoxSettingsModel} prop - Gets the combobox property.\n * @param {string} id - Gets the ID of combobox.\n * @returns {void}\n */\n RibbonComboBox.prototype.updateComboBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.comboBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.close;\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties(prop);\n };\n return RibbonComboBox;\n}());\nexport { RibbonComboBox };\n","import { closest, getComponent, isNullOrUndefined, merge, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { getItem, getItemElement, RibbonItemSize, createTooltip, setCustomAttributes } from '../base/index';\nimport { DROPDOWN_ID, ITEM_VERTICAL_CENTER, OVERFLOW_ID, RIBBON_CONTROL, RIBBON_GROUP_OVERFLOW_DDB, RIBBON_POPUP_CONTROL, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonDropDown = /** @class */ (function () {\n function RibbonDropDown(parent) {\n this.parent = parent;\n }\n RibbonDropDown.prototype.getModuleName = function () {\n return 'ribbonDropDown';\n };\n RibbonDropDown.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createDropDown = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var dropDownSettings = item.dropDownSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (dropDownSettings.cssClass ?\n dropDownSettings.cssClass : '')).trim();\n new DropDownButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: dropDownSettings.closeActionEvents,\n content: item.activeSize === RibbonItemSize.Small ? '' : dropDownSettings.content,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: dropDownSettings.iconCss,\n items: dropDownSettings.items,\n target: dropDownSettings.target,\n createPopupOnClick: dropDownSettings.createPopupOnClick,\n beforeClose: function (e) {\n if (dropDownSettings.beforeClose) {\n dropDownSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: dropDownSettings.beforeItemRender,\n beforeOpen: dropDownSettings.beforeOpen,\n close: function (e) {\n if (dropDownSettings.close) {\n dropDownSettings.close.call(_this, e);\n }\n },\n created: dropDownSettings.created,\n open: dropDownSettings.open,\n select: dropDownSettings.select\n }).appendTo(buttonEle);\n if (dropDownSettings.htmlAttributes) {\n if (dropDownSettings.htmlAttributes.id) {\n delete dropDownSettings.htmlAttributes.id;\n }\n setCustomAttributes(buttonEle, dropDownSettings.htmlAttributes);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n dropdownElement.setAttribute('data-control', item.type.toString());\n var dropdown = getComponent(dropdownElement, DropDownButton);\n dropdown.cssClass = dropdown.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n dropdown.dataBind();\n var target;\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var cssClass = dropdown.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n dropdown.cssClass = cssClass.join(SPACE);\n dropdown.dataBind();\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n };\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n };\n };\n /**\n * Creates Overflow DropDown.\n *\n * @param {string} id - Gets the ID of the dropdown item.\n * @param {string} name - Gets the name of the dropdown item.\n * @param {string} iconCss - Gets the icon of the dropdown item.\n * @param {HTMLElement} groupEle - Gets the overflow group element.\n * @param {HTMLElement} overflowEle - Gets the overflow element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createOverFlowDropDown = function (id, name, iconCss, groupEle, overflowEle, enableRtl) {\n var _this = this;\n this.enableRtl = enableRtl;\n var buttonEle = this.parent.createElement('button', {\n id: id + OVERFLOW_ID + DROPDOWN_ID\n });\n groupEle.setAttribute('tabindex', '0');\n overflowEle.appendChild(buttonEle);\n var dropdown = new DropDownButton({\n iconCss: iconCss,\n target: groupEle,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n cssClass: VERTICAL_DDB + SPACE + RIBBON_GROUP_OVERFLOW_DDB,\n iconPosition: 'Top',\n content: name,\n beforeClose: function (args) {\n args.cancel = !isNullOrUndefined(args.event && closest(args.event.target, '.' + RIBBON_POPUP_CONTROL));\n }\n }, buttonEle);\n createTooltip(groupEle, this.parent);\n buttonEle.onclick = buttonEle.onkeydown = function () { _this.itemIndex = 0; };\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n groupEle.onkeydown = function (e) { _this.keyActionHandler(e, groupEle), _this; };\n return dropdown;\n };\n RibbonDropDown.prototype.keyActionHandler = function (e, target) {\n var controlElements = Array.prototype.slice.call(target.querySelectorAll('.e-control'));\n var templateElements = Array.prototype.slice.call(target.querySelectorAll('.e-ribbon-template'));\n var items = controlElements.concat(templateElements);\n var comboBoxElements = target.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < items.length; i++) {\n if (items[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (items[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.itemIndex = i;\n }\n }\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-last-item') || e.target.classList.contains('e-ribbon-first-item')) {\n if (e.key === 'ArrowRight' || (!e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, !this.enableRtl, items);\n }\n if (e.key === 'ArrowLeft' || (e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, this.enableRtl, items);\n }\n }\n };\n RibbonDropDown.prototype.handleNavigation = function (e, enableRtl, items) {\n if (!(items[0].classList.contains('e-ribbon-first-item'))) {\n items[0].classList.add('e-ribbon-first-item');\n }\n if (!(items[items.length - 1].classList.contains('e-ribbon-last-item'))) {\n items[items.length - 1].classList.add('e-ribbon-last-item');\n }\n if (enableRtl) {\n if (this.itemIndex === 0 && items[parseInt(this.itemIndex.toString(), 10)].classList.contains('e-ribbon-first-item')) {\n this.updateItemIndex(e, items, true);\n }\n if (!e.target.classList.contains('e-combobox') && !e.target.classList.contains('e-ribbon-last-item') &&\n !e.target.classList.contains('e-ribbon-group-container') && (e.target.classList.contains('e-ribbon-first-item')\n || this.itemIndex !== 0) && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template'))) {\n this.itemIndex++;\n this.updateItemIndex(e, items, true);\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n else {\n if (!e.target.classList.contains('e-combobox') && this.itemIndex !== 0) {\n this.itemIndex--;\n this.updateItemIndex(e, items, false);\n }\n if (e.target.classList.contains('e-ribbon-first-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-combobox') && (e.key === 'Tab')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n }\n }\n };\n RibbonDropDown.prototype.focusLauncherIcon = function (e, items) {\n var groupContainer = items[parseInt(this.itemIndex.toString(), 10)].closest('.e-ribbon-group-container');\n var launcherIconEle;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n return true;\n }\n else {\n return false;\n }\n };\n RibbonDropDown.prototype.updateItemIndex = function (e, items, enableRtl) {\n var ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = 0;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = items.length - 1;\n }\n }\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(this.itemIndex.toString(), 10)].focus();\n };\n /**\n * Removes Overflow DropDown.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowDropDown = function (dropdownElement) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdownElement.parentElement.parentElement.insertBefore(dropdown.target, dropdownElement.parentElement);\n dropdown.destroy();\n remove(dropdownElement);\n };\n /**\n * Gets DropDown item element.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @param {string} id - Gets the ID of ribbon DropDown element.\n * @returns {HTMLElement} - Returns the DropDown item element.\n * @hidden\n */\n RibbonDropDown.prototype.getDDBItemElement = function (dropdownElement, id) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var dropDownPopup = dropdown.dropDown.element;\n return dropDownPopup.querySelector('#' + id);\n };\n /**\n * Gets Overflow DropDown Popup.\n *\n * @param {itemProps} itemProp - Gets the property of ribbon item.\n * @param {HTMLElement} contentEle - Gets the content element.\n * @returns {HTMLElement} - Returns the Overflow DropDown Popup.\n * @hidden\n */\n RibbonDropDown.prototype.getOverflowDropDownPopup = function (itemProp, contentEle) {\n var dropdownElement = contentEle.querySelector('#' + this.parent.tabs[itemProp.tabIndex].groups[itemProp.groupIndex].id + OVERFLOW_ID + DROPDOWN_ID);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n return dropdown.dropDown.element;\n };\n RibbonDropDown.prototype.getDropDownObj = function (controlId) {\n var dropDownEle = getItemElement(this.parent, controlId);\n return dropDownEle ? getComponent(dropDownEle, DropDownButton) : null;\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the DropDown items.\n * @param {string} text - Gets the text of the dropdown item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonDropDown.prototype.addItems = function (controlId, Items, text) {\n this.getDropDownObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonDropDown.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getDropDownObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonDropDown.prototype.toggle = function (controlId) {\n var dropdownObj = this.getDropDownObj(controlId);\n if (!dropdownObj) {\n return;\n }\n if (!dropdownObj.disabled) {\n dropdownObj.toggle();\n }\n };\n /**\n * Updates the dropdown.\n *\n * @param {RibbonDropDownSettingsModel} prop - Gets the dropdown property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonDropDown.prototype.updateDropDown = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.dropDownSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, DropDownButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.close;\n delete prop.beforeClose;\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n }\n control.setProperties(prop);\n };\n /**\n * Updated DropDown size\n *\n * @param {HTMLElement} element - Gets the dropdown element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.updateDropDownSize = function (element, item) {\n var control = getComponent(element, DropDownButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n control.setProperties({ content: item.activeSize === RibbonItemSize.Small ? '' : item.dropDownSettings.content });\n };\n return RibbonDropDown;\n}());\nexport { RibbonDropDown };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { getItem, getItemElement, RibbonItemSize, setCustomAttributes } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonSplitButton = /** @class */ (function () {\n function RibbonSplitButton(parent) {\n this.parent = parent;\n }\n RibbonSplitButton.prototype.getModuleName = function () {\n return 'ribbonSplitButton';\n };\n RibbonSplitButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates SplitButton.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.createSplitButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var splitButtonSettings = item.splitButtonSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (splitButtonSettings.cssClass ?\n splitButtonSettings.cssClass : '')).trim();\n var splitbutton = new SplitButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: splitButtonSettings.closeActionEvents,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: splitButtonSettings.iconCss,\n items: splitButtonSettings.items,\n target: splitButtonSettings.target,\n beforeClose: function (e) {\n if (splitButtonSettings.beforeClose) {\n splitButtonSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: splitButtonSettings.beforeItemRender,\n beforeOpen: splitButtonSettings.beforeOpen,\n close: function () {\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.close) {\n splitButtonSettings.close.call(_this);\n }\n },\n created: splitButtonSettings.created,\n open: function () {\n splitbutton['wrapper'].classList.add(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.open) {\n splitButtonSettings.open.call(_this);\n }\n },\n select: splitButtonSettings.select,\n click: function (e) {\n if (splitButtonSettings.click) {\n splitButtonSettings.click.call(_this, e);\n }\n }\n }, buttonEle);\n if (splitButtonSettings.htmlAttributes) {\n if (splitButtonSettings.htmlAttributes.id) {\n delete splitButtonSettings.htmlAttributes.id;\n }\n setCustomAttributes(buttonEle, splitButtonSettings.htmlAttributes);\n }\n var dropdownEle = buttonEle.parentElement.querySelector('.e-dropdown-btn');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n this.setContent(item, splitbutton);\n var wrapper = splitbutton['wrapper'];\n EventHandler.add(wrapper, 'mouseenter', function () { wrapper.classList.add(RIBBON_HOVER); }, this);\n EventHandler.add(wrapper, 'mouseleave', function () { wrapper.classList.remove(RIBBON_HOVER); }, this);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n splitButtonEle.setAttribute('data-control', item.type.toString());\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n splitbutton.cssClass = splitbutton.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n splitbutton.dataBind();\n var dropdownEle = splitButtonEle.parentElement.querySelector('.e-dropdown-btn');\n var ddbId = dropdownEle.getAttribute('id');\n var popupEle = document.querySelector('#' + ddbId + '-popup');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n popupEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.preventDefault();\n splitbutton['wrapper'].classList.remove('e-ribbon-open');\n popupEle.querySelector('.e-focused').click();\n }\n };\n var target;\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n var cssClass = splitbutton.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n splitbutton.cssClass = cssClass.join(SPACE);\n splitbutton.dataBind();\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n };\n };\n RibbonSplitButton.prototype.setContent = function (item, control) {\n control['primaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Medium) ? item.splitButtonSettings.content : '' });\n control['secondaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Large) ? item.splitButtonSettings.content : '' });\n };\n RibbonSplitButton.prototype.getSplitButtonObj = function (controlId) {\n var splitButtonEle = getItemElement(this.parent, controlId);\n return getComponent(splitButtonEle, SplitButton);\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the SplitButton items.\n * @param {string} text - Gets the text of the splitbutton item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonSplitButton.prototype.addItems = function (controlId, Items, text) {\n this.getSplitButtonObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonSplitButton.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getSplitButtonObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonSplitButton.prototype.toggle = function (controlId) {\n var splitBtnObj = this.getSplitButtonObj(controlId);\n if (!splitBtnObj) {\n return;\n }\n if (!splitBtnObj.disabled) {\n splitBtnObj.toggle();\n }\n };\n /**\n * Updates the splitbutton.\n *\n * @param {RibbonSplitButtonSettingsModel} prop - Gets the splitbutton property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonSplitButton.prototype.updateSplitButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.splitButtonSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, SplitButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.open;\n delete prop.click;\n delete prop.close;\n delete prop.beforeClose;\n control.setProperties(prop);\n if (prop.content) {\n this.setContent(itemProp.item, control);\n }\n };\n /**\n * Updated SplitButton size\n *\n * @param {HTMLElement} element - Gets the splibutton element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.updateSplitButtonSize = function (element, item) {\n var control = getComponent(element, SplitButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n this.setContent(item, control);\n };\n return RibbonSplitButton;\n}());\nexport { RibbonSplitButton };\n","import { compile, getComponent, select, addClass } from '@syncfusion/ej2-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport * as constants from './constant';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Gets index value.\n *\n * @param {Array} arr - Gets the array to find index.\n * @param {boolean} condition - Defines whether index matches with the value.\n * @returns {number} - Gets the index value.\n * @hidden\n */\nexport function getIndex(arr, condition) {\n for (var i = 0; i < arr.length; i++) {\n if (condition(arr[parseInt(i.toString(), 10)], i)) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Gets template content based on the template property value.\n *\n * @param {string | HTMLElement| Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\nexport function getTemplateFunction(template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n}\n/**\n * Gets the ribbon item\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @param {RibbonItemType} type - Gets the type of the item.\n * @returns {itemProps} - Gets the ribbon item.\n * @hidden\n */\nexport function getItem(tabs, id, type) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n var item = collection.items[parseInt(l.toString(), 10)];\n if ((id && item.id === id) || (type && item.type === type)) {\n return {\n item: item, collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k, itemIndex: l\n };\n }\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon collection.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon collection.\n * @hidden\n */\nexport function getCollection(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n if (collection.id === id) {\n return {\n collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k\n };\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon group.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon group.\n * @hidden\n */\nexport function getGroup(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n if (group.id === id) {\n return {\n group: group, tabIndex: i, groupIndex: j\n };\n }\n }\n }\n return null;\n}\n/**\n * @param {HTMLElement} element - Gets the element to be destroyed.\n * @param {string} moduleName - Gets the module name.\n * @returns {void}\n * @hidden\n */\nexport function destroyControl(element, moduleName) {\n var control = getComponent(element, moduleName);\n control.destroy();\n}\n/**\n * Updates common properties.\n *\n * @param {HTMLElement} element - Gets the element to be updated.\n * @param {string} moduleName - Gets the module name.\n * @param {commonProperties} commonProp - Gets the common properties to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateCommonProperty(element, moduleName, commonProp) {\n var control = getComponent(element, moduleName);\n control.setProperties(commonProp);\n}\n/**\n * Updates disabled control.\n *\n * @param {HTMLElement} element - Gets the element to be disabled.\n * @param {string} moduleName - Gets the module name.\n * @param {boolean} disable - Defines whether the control to be disabled or not.\n * @returns {void}\n * @hidden\n */\nexport function updateControlDisabled(element, moduleName, disable) {\n var control = getComponent(element, moduleName);\n control.setProperties(moduleName === 'combobox' ? { enabled: !disable } : { disabled: disable });\n}\n/**\n * Gets the ribbon item element.\n *\n * @param {Ribbon} parent - Gets the parent element.\n * @param {string} id - Gets the ID of the item.\n * @param {itemProps} itemProp - Gets the ribbon item.\n * @returns {HTMLElement} - Gets the ribbon item element.\n * @hidden\n */\nexport function getItemElement(parent, id, itemProp) {\n if (!itemProp) {\n itemProp = getItem(parent.tabs, id);\n if (!itemProp) {\n return null;\n }\n }\n var contentEle = parent.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML === '') {\n return null;\n }\n if (parent.activeLayout === RibbonLayout.Classic) {\n if (itemProp.item.displayOptions & DisplayMode.Classic) {\n contentEle = (itemProp.group.isCollapsed) ? parent.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle)\n : contentEle;\n return contentEle.querySelector('#' + id);\n }\n else {\n return null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n var ele = (itemProp.item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + itemProp.item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n var dropdown = itemProp.group.enableGroupOverflow ?\n getComponent(contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID), DropDownButton)\n : parent.overflowDDB;\n ele = dropdown.target.querySelector('#' + itemProp.item.id);\n }\n return ele;\n }\n}\n/**\n * @param {RibbonTooltipModel} tooltip - Gets the property of tooltip.\n * @returns {boolean} - Gets whether the tooltip is present or not.\n * @hidden\n */\nexport function isTooltipPresent(tooltip) {\n return (tooltip.content || tooltip.iconCss || tooltip.title || tooltip.id || tooltip.cssClass) ? true : false;\n}\n/**\n * Sets content for tooltip.\n *\n * @param {TooltipEventArgs} args - Gets the argument of tooltip.\n * @param {Tooltip} tooltip - Gets the tooltip to set the content.\n * @param {ribbonTooltipData} tooltipData - Gets the tooltip data.\n * @returns {void}\n * @hidden\n */\nexport function setToolTipContent(args, tooltip, tooltipData) {\n var targetId = args.target.getAttribute('id');\n var dataObj = tooltipData.filter(function (e) { return e.id === targetId; })[0];\n var data = dataObj.data;\n var content = tooltip.createElement('div', {\n id: data.id ? constants.RIBBON_TOOLTIP_CONTAINER + '_' + data.id : constants.RIBBON_TOOLTIP_CONTAINER\n });\n tooltip.element.append(content);\n if (data.title) {\n var header = tooltip.createElement('div', {\n innerHTML: data.title,\n className: constants.RIBBON_TOOLTIP_TITLE\n });\n content.appendChild(header);\n }\n var textContainer = tooltip.createElement('div', {\n className: constants.RIBBON_TEXT_CONTAINER\n });\n content.appendChild(textContainer);\n if (data.iconCss) {\n var customCss = tooltip.createElement('div', {\n className: data.iconCss + ' ' + constants.RIBBON_TOOLTIP_ICON\n });\n textContainer.appendChild(customCss);\n }\n if (data.content) {\n var tooltipContent = tooltip.createElement('div', {\n innerHTML: data.content,\n className: constants.RIBBON_TOOLTIP_CONTENT\n });\n textContainer.appendChild(tooltipContent);\n }\n tooltip.setProperties({\n content: content,\n cssClass: data.cssClass ? data.cssClass + ' ' + constants.RIBBON_TOOLTIP : constants.RIBBON_TOOLTIP\n });\n}\n/**\n * Creates tooltip.\n *\n * @param {HTMLElement} element - Gets the element to add tooltip.\n * @param {Ribbon} ribbon - Gets the ribbon.\n * @returns {void}\n * @hidden\n */\nexport function createTooltip(element, ribbon) {\n var ribbonTooltip = new Tooltip({\n target: '.' + constants.RIBBON_TOOLTIP_TARGET,\n beforeRender: beforeTooltipRender.bind(this),\n windowCollision: true\n });\n ribbonTooltip.appendTo(element);\n /**\n * @param {TooltipEventArgs} args - Gets the tooltip argument.\n * @returns {void}\n * @hidden\n */\n function beforeTooltipRender(args) {\n setToolTipContent(args, ribbonTooltip, ribbon.tooltipData);\n }\n}\n/**\n * Destroys tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be destroyed.\n * @returns {void}\n * @hidden\n */\nexport function destroyTooltip(element) {\n var control = getComponent(element, Tooltip);\n control.destroy();\n}\n/**\n * Updates tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be Updated.\n * @param {commonProperties} prop - Gets the property to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateTooltipProp(element, prop) {\n var control = getComponent(element, Tooltip);\n control.setProperties(prop);\n}\n/**\n * Sets the HTML attributes of an element\n *\n * @param {HTMLElement} element - The HTML element for which attributes are to be updated.\n * @param {commonProperties} attributes - An object containing key-value pairs of attributes to be updated.\n * @returns {void}\n * @hidden\n */\nexport function setCustomAttributes(element, attributes) {\n for (var key in attributes) {\n if (key === 'class') {\n var elementClass = attributes['class'].replace(/\\s+/g, ' ').trim();\n if (elementClass) {\n addClass([element], elementClass.split(' '));\n }\n }\n else if (key === 'style') {\n var prevStyles = element.getAttribute('style') || '';\n var value = \"\" + prevStyles + attributes[\"\" + key];\n element.setAttribute(\"\" + key, value);\n }\n else {\n element.setAttribute(key, attributes[\"\" + key]);\n }\n }\n}\n","import { EventHandler, getComponent, remove } from '@syncfusion/ej2-base';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { RibbonGroupButtonSelection, RibbonItemSize } from '../base/interface';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { createTooltip, isTooltipPresent, setCustomAttributes } from '../base/utils';\nimport { Tooltip } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonGroupButton = /** @class */ (function () {\n function RibbonGroupButton(parent) {\n this.parent = parent;\n this.isSelected = false;\n }\n RibbonGroupButton.prototype.getModuleName = function () {\n return 'ribbonGroupButton';\n };\n RibbonGroupButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates Group Button\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.createGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n this.count = 0;\n var btnContainerEle = this.parent.createElement('div', {\n id: item.id + constants.RIBBON_GROUP_BUTTON_ID,\n className: 'e-btn-group'\n });\n itemElement.appendChild(btnContainerEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if ((groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss)) {\n var groupButtonEle = this.parent.createElement('button', {\n id: item.id + constants.RIBBON_GROUP_BUTTON_ID + i,\n className: constants.RIBBON_GROUP_BUTTON\n });\n btnContainerEle.appendChild(groupButtonEle);\n new Button({\n iconCss: groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss,\n disabled: item.disabled,\n enableRtl: this.parent.enableRtl,\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left'\n }, groupButtonEle);\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].htmlAttributes) {\n setCustomAttributes(groupButtonEle, groupBtnSettings.items[parseInt(i.toString(), 10)].htmlAttributes);\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].content) {\n groupButtonEle.classList.add(constants.RIBBON_GROUP_BUTTON_CONTENT);\n groupButtonEle.setAttribute('aria-label', groupBtnSettings.items[parseInt(i.toString(), 10)].content);\n }\n else {\n groupButtonEle.setAttribute('aria-label', 'groupbuttonitem');\n }\n var buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n btnContainerEle.classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n else {\n btnContainerEle.classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].selected) {\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n buttonEle.classList.add('e-active');\n }\n else {\n if (this.count < 1) {\n buttonEle.classList.add('e-active');\n this.count++;\n }\n }\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings &&\n isTooltipPresent(groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings)) {\n groupButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({\n id: groupButtonEle.id, data: groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings\n });\n }\n EventHandler.add(buttonEle, 'click', this.groupButtonClicked.bind(this, i, item, groupBtnSettings), this);\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = void 0;\n var activeEleCount = 0;\n var count = 0;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n !this.isSelected && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n else if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else {\n dropdownIcon = null;\n }\n }\n }\n while (count < item.groupButtonSettings.items.length && !this.isSelected && !dropdownIcon) {\n if (item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n count++;\n }\n var dropdown = new DropDownButton({\n iconCss: dropdownIcon,\n target: btnContainerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n btnContainerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(btnContainerEle, this.parent);\n this.isSelected = false;\n }\n };\n RibbonGroupButton.prototype.groupButtonClicked = function (itemIndex, item, grpBtnSettings) {\n var previousItems = [];\n var selectingItems = [];\n var selectedItems = [];\n var groupButtonEle;\n var dropdown;\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n previousItems.push(grpBtnSettings.items[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (!(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n selectingItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs = {\n cancel: false, previousItems: previousItems, selectingItems: selectingItems\n };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n else {\n if (grpBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_MULTIPLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.remove('e-active');\n grpBtnSettings.items[parseInt(j.toString(), 10)].\n setProperties({ selected: false }, true);\n }\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].setProperties({ selected: true }, true);\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active') && this.parent.activeLayout === 'Simplified') {\n this.grpBtnIndex = itemIndex;\n groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({\n iconCss: grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss\n });\n }\n }\n else {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_SINGLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].\n setProperties({ selected: true }, true);\n }\n else {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].\n setProperties({ selected: false }, true);\n }\n var activeEleCount = 0;\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active') && this.parent.activeLayout === 'Simplified' && n !== itemIndex) {\n this.isSelected = true;\n activeEleCount++;\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = null;\n var itemsCount = 0;\n groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n if (!this.isSelected) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss;\n }\n }\n else {\n if (activeEleCount === 1 && !(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(n.toString(), 10)].iconCss;\n }\n }\n }\n }\n while (itemsCount < grpBtnSettings.items.length && !dropdownIcon) {\n if (grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n dropdown.setProperties({ iconCss: dropdownIcon });\n this.grpBtnIndex = itemIndex;\n }\n this.isSelected = false;\n }\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n selectedItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs_1 = { previousItems: previousItems, selectedItems: selectedItems };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click.call(this, eventArgs_1);\n }\n }\n };\n /**\n * updates group button in mode switching\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.switchGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var dropdownIcon = null;\n var activeEleCount = 0;\n var itemsCount = 0;\n if (this.parent.activeLayout === 'Simplified') {\n var containerEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (activeEleCount > 1) {\n dropdownIcon = null;\n }\n }\n }\n }\n while (itemsCount < groupBtnSettings.items.length && !dropdownIcon) {\n if (groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n var dropdown = new DropDownButton({\n iconCss: dropdownIcon,\n target: containerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n containerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(containerEle, this.parent);\n }\n else {\n var groupButtonEle = itemElement.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n itemElement.appendChild(dropdown.target);\n if (groupButtonEle) {\n dropdown.destroy();\n remove(groupButtonEle);\n }\n }\n };\n RibbonGroupButton.prototype.handleFocusState = function (item, itemElement) {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n var defaultSelectedBtn = document.querySelector('#' + item.id + '_grpbtn').querySelector('.' + constants.RIBBON_GROUP_BUTTON + '.e-active');\n if (defaultSelectedBtn) {\n defaultSelectedBtn.focus();\n }\n else {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n }\n this.grpBtnIndex = 0;\n }\n };\n RibbonGroupButton.prototype.addGroupButtonHeader = function (itemID, groupBtnSettings, popupEle) {\n var groupButtonHeader = this.parent.createElement('div', {\n className: 'e-ribbon-groupbutton-header',\n id: itemID + constants.HEADER_ID,\n innerHTML: groupBtnSettings.header\n });\n popupEle.insertBefore(groupButtonHeader, popupEle.firstChild);\n };\n RibbonGroupButton.prototype.handleGroupButtonNavigation = function (e, item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n var isOverflowPopup = false;\n if (this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n isOverflowPopup = true;\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var groupBtnSettings = item.groupButtonSettings;\n if ((e.key === 'ArrowRight' && !isOverflowPopup) || (e.key === 'ArrowDown' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowDown' && isOverflowPopup)) {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n else if ((e.key === 'ArrowLeft' && !isOverflowPopup) || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var isIconOnly = true;\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({ cssClass: dropdown.cssClass + constants.SPACE + constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP, content: groupBtnSettings.header ? groupBtnSettings.header : '' });\n var targetEle = dropdown.target;\n if (targetEle.children.length) {\n for (var i = 0; i < targetEle.children.length; i++) {\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].content) {\n isIconOnly = false;\n break;\n }\n }\n if (isIconOnly) {\n targetEle.classList.add('e-icon-btn');\n }\n }\n targetEle.onclick = function () {\n if (_this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n dropdown.toggle();\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n if (targetEle.classList.contains('e-icon-btn')) {\n targetEle.classList.remove('e-icon-btn');\n }\n var cssClass = dropdown.cssClass.split(constants.SPACE);\n cssClass = cssClass.filter(function (value) { return value !== constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP; });\n dropdown.setProperties({ cssClass: cssClass.join(constants.SPACE), content: '' });\n }\n };\n /**\n * Removes DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.destroyDropDown = function (item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdown.destroy();\n remove(groupButtonEle);\n }\n };\n /**\n * Updates the group button size.\n *\n * @param {HTMLElement} itemElement - Gets the group button container element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.updateGroupButtonSize = function (itemElement, item) {\n var groupBtnSettings = item.groupButtonSettings;\n var buttonEle;\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (this.parent.activeLayout === 'Classic') {\n buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n else {\n buttonEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n if (buttonEle) {\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content\n });\n }\n }\n };\n return RibbonGroupButton;\n}());\nexport { RibbonGroupButton };\n","import { append, getComponent, remove, formatUnit, isNullOrUndefined, setValue } from '@syncfusion/ej2-base';\nimport { getItem, getTemplateFunction, setCustomAttributes } from '../base/index';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport * as constants from '../base/constant';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonGallery = /** @class */ (function () {\n function RibbonGallery(parent) {\n this.count = 0;\n this.isAdded = false;\n this.galleryItemsIndex = 0;\n this.registeredTemplate = {};\n this.parent = parent;\n var ref = 'viewContainerRef';\n setValue('registeredTemplate', this.registeredTemplate, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setValue(ref, this.parent[\"\" + ref], this);\n }\n RibbonGallery.prototype.getModuleName = function () {\n return 'ribbonGallery';\n };\n RibbonGallery.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates gallery.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.createGallery = function (item, itemEle) {\n var _this = this;\n var gallerySettings = item.gallerySettings;\n this.renderGalleryItems(gallerySettings, false, item.id, itemEle);\n var buttonEle = this.parent.createElement('button', {\n id: item.id + '_popupButton',\n className: 'e-ribbon-gallery-button e-icons e-drop-icon'\n });\n buttonEle.setAttribute('aria-label', 'gallerydropdownbutton');\n itemEle.appendChild(buttonEle);\n this.createPopup(item, buttonEle);\n buttonEle.onclick = function (args) {\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n if (popupEle) {\n var popup = getComponent(popupEle, Popup);\n if (popupEle.classList.contains('e-popup-close')) {\n _this.showPopup(popup, popupEle, args, gallerySettings, item.id);\n }\n else {\n _this.hidePopup(popup, popupEle, args, gallerySettings, item.id);\n }\n }\n };\n document.onclick = function (args) {\n var popupEle = document.querySelectorAll('.e-ribbon-gallery-popup.e-popup-open');\n var popupID;\n var itemProp;\n for (var i = 0; i < popupEle.length; i++) {\n var popup = getComponent(popupEle[parseInt(i.toString(), 10)], Popup);\n if (args.target.classList.contains('e-ribbon-gallery-button')) {\n popupID = (popupEle[parseInt(i.toString(), 10)].id).replace(/_galleryPopup/g, '');\n if ((args.target.id).replace(/_popupButton/g, '') !== popupID) {\n itemProp = getItem(_this.parent.tabs, popupID);\n _this.hidePopup(popup, popupEle[parseInt(i.toString(), 10)], args, itemProp.item.gallerySettings, popupID);\n break;\n }\n }\n else {\n popupID = (popupEle[parseInt(i.toString(), 10)].id).replace(/_galleryPopup/g, '');\n itemProp = getItem(_this.parent.tabs, popupID);\n _this.hidePopup(popup, popupEle[parseInt(i.toString(), 10)], args, itemProp.item.gallerySettings, popupID);\n break;\n }\n }\n };\n };\n RibbonGallery.prototype.renderGalleryItems = function (gallerySettings, isPopup, id, itemEle) {\n var _this = this;\n var galleryContainerEle;\n var galleryEle;\n var itemProp = getItem(this.parent.tabs, id);\n if (itemProp && itemProp.group) {\n itemProp.group.isCollapsible = false;\n }\n var galleryWrapper = this.parent.createElement('div', {\n className: 'e-ribbon-gallery-wrapper',\n id: id + '_galleryWrapper'\n });\n if (!isPopup) {\n itemEle.appendChild(galleryWrapper);\n }\n var _loop_1 = function (i) {\n var isHeightDefined = false;\n galleryContainerEle = this_1.parent.createElement('ol', {\n className: 'e-ribbon-gallery-container',\n id: id + '_galleryContainer' + i\n });\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n isHeightDefined = true;\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].cssClass) {\n galleryContainerEle.classList.add(gallerySettings.groups[parseInt(i.toString(), 10)].cssClass);\n }\n var _loop_2 = function (j) {\n galleryEle = this_1.parent.createElement('li', {\n className: 'e-ribbon-gallery-item',\n id: (isPopup ? 'popup_' : '') + galleryContainerEle.id + '_gallery' + j,\n attrs: { 'tabindex': '0' }\n });\n var itemEventArgs = { name: 'beforeItemRender', item: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)] };\n if (gallerySettings.beforeItemRender) {\n gallerySettings.beforeItemRender.call(this_1, itemEventArgs);\n }\n galleryContainerEle.appendChild(galleryEle);\n if (gallerySettings.selectedItemIndex && gallerySettings.selectedItemIndex === this_1.count) {\n galleryEle.classList.add('e-ribbon-gallery-selected');\n }\n else {\n if (!gallerySettings.selectedItemIndex && this_1.count === 0) {\n galleryEle.classList.add('e-ribbon-gallery-selected');\n gallerySettings.selectedItemIndex = this_1.count;\n }\n }\n this_1.count = this_1.count + 1;\n galleryEle.onclick = function (e) {\n _this.setActiveState(e.currentTarget, gallerySettings, id, true, e, isPopup);\n };\n galleryEle.onkeydown = function (e) {\n if (e.key === 'Enter' || e.key === ' ') {\n _this.setActiveState(e.currentTarget, gallerySettings, id, true, e, isPopup);\n }\n };\n galleryEle.onmouseover = function (e) {\n var hoverEventArgs = { event: e, name: 'itemHover', item: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)] };\n if (gallerySettings.itemHover) {\n gallerySettings.itemHover.call(_this, hoverEventArgs);\n }\n };\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth && gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth !== 'auto') {\n galleryEle.style.width = gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth + 'px';\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n galleryEle.style.height = gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight + 'px';\n galleryEle.style.paddingTop = '0px';\n galleryEle.style.paddingBottom = '0px';\n if (this_1.parent.activeLayout !== 'Simplified' && !isPopup) {\n galleryContainerEle.style.flexFlow = 'wrap';\n }\n }\n if ((!gallerySettings.template && !gallerySettings.popupTemplate) ||\n ((gallerySettings.template && !gallerySettings.popupTemplate) && isPopup) ||\n ((gallerySettings.popupTemplate && !gallerySettings.template) && !isPopup)) {\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].htmlAttributes) {\n setCustomAttributes(galleryEle, gallerySettings.groups[parseInt(i.toString(), 10)]\n .items[parseInt(j.toString(), 10)].htmlAttributes);\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss) {\n var iconEle = this_1.parent.createElement('span', {\n className: 'e-ribbon-gallery-icons' + ' ' + gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss\n });\n galleryEle.appendChild(iconEle);\n if (this_1.parent.activeLayout === 'Simplified' && !isPopup) {\n iconEle.classList.add('e-hidden');\n }\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].content) {\n galleryEle.appendChild(this_1.parent.createElement('span', {\n innerHTML: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].content,\n className: 'e-ribbon-gallery-text'\n }));\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].disabled) {\n galleryEle.classList.add('e-disabled');\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].cssClass) {\n galleryEle.classList.add(gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].cssClass);\n }\n }\n if (gallerySettings.template && !isPopup) {\n this_1.createGalleryTemplate(galleryEle, gallerySettings, id, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)]);\n }\n if (gallerySettings.popupTemplate && isPopup) {\n this_1.createGalleryPopupTemplate(galleryEle, gallerySettings, id, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)]);\n }\n if ((!isPopup && !isHeightDefined && (gallerySettings.itemCount === this_1.count))) {\n galleryWrapper.appendChild(galleryContainerEle);\n this_1.isAdded = true;\n return \"break\";\n }\n };\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n var state_2 = _loop_2(j);\n if (state_2 === \"break\")\n break;\n }\n if (this_1.isAdded && !isPopup) {\n return \"break\";\n }\n if (!isPopup) {\n galleryWrapper.appendChild(galleryContainerEle);\n }\n else {\n itemEle.appendChild(galleryContainerEle);\n }\n if (isPopup && gallerySettings.groups[parseInt(i.toString(), 10)].header) {\n var headerEle = (this_1.parent.createElement('div', {\n className: 'e-ribbon-gallery-header',\n innerHTML: gallerySettings.groups[parseInt(i.toString(), 10)].header\n }));\n itemEle.insertBefore(headerEle, galleryContainerEle);\n }\n };\n var this_1 = this;\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n this.count = 0;\n this.isAdded = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.portals = this.parent.portals.concat(this['portals']);\n this.parent['renderReactTemplates']();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this['portals'] = undefined;\n }\n };\n RibbonGallery.prototype.setWrapperWidth = function (itemCount, galleryWrapper, gallerySettings, itemID) {\n var count = 1;\n var itemsWidth = 0;\n var isWidthApplied = false;\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (itemCount >= count) {\n var galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + i + '_gallery' + j);\n if (galleryItemEle) {\n itemsWidth += galleryItemEle.offsetWidth;\n var itemStyles = window.getComputedStyle(galleryItemEle);\n if (itemStyles) {\n var paddingWidth = parseFloat(itemStyles.paddingLeft) + parseFloat(itemStyles.paddingRight);\n if (!(isNullOrUndefined(paddingWidth))) {\n itemsWidth += paddingWidth;\n }\n var marginWidth = parseFloat(itemStyles.marginLeft) + parseFloat(itemStyles.marginRight);\n if (!(isNullOrUndefined(marginWidth))) {\n itemsWidth += marginWidth;\n }\n }\n }\n }\n else {\n isWidthApplied = true;\n break;\n }\n count++;\n }\n if (isWidthApplied) {\n break;\n }\n }\n if (itemsWidth > 0) {\n galleryWrapper.style.width = itemsWidth + 'px';\n }\n };\n /**\n * Checks the gallery items height.\n *\n * @param {HTMLElement} activeContent - Gets the current active content.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.checkAvailableHeight = function (activeContent) {\n var galleryWrapperItems = activeContent.querySelectorAll('.e-ribbon-gallery-wrapper');\n for (var n = 0; n < galleryWrapperItems.length; n++) {\n var count = 0;\n var simplifiedItemsCount = 0;\n var isHeight = false;\n var galleryWrapper = galleryWrapperItems[parseInt(n.toString(), 10)];\n var itemID = galleryWrapper.id.replace(/_galleryWrapper/g, '');\n var galleryWrapperHeight = galleryWrapper.offsetHeight;\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemProp) {\n this.setWrapperWidth(itemProp.item.gallerySettings.itemCount, galleryWrapper, itemProp.item.gallerySettings, itemID);\n for (var i = 0; i < itemProp.item.gallerySettings.groups.length; i++) {\n for (var j = 0; j < itemProp.item.gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n var galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + i + '_gallery' + j);\n if (galleryItemEle) {\n if (this.parent.activeLayout === 'Classic') {\n if (galleryItemEle.classList.contains('e-hidden')) {\n galleryItemEle.classList.remove('e-hidden');\n }\n if (!isHeight) {\n var itemsValues = 0;\n var itemStyles = window.getComputedStyle(galleryItemEle);\n if (itemStyles) {\n var marginWidth = parseFloat(itemStyles.marginTop) + parseFloat(itemStyles.marginBottom);\n if (!(isNullOrUndefined(marginWidth))) {\n itemsValues += marginWidth;\n }\n }\n count++;\n if (itemProp.item.gallerySettings.itemCount === count) {\n count = 0;\n if (galleryWrapperHeight >= (galleryItemEle.offsetHeight + itemsValues)) {\n galleryWrapperHeight -= (galleryItemEle.offsetHeight + itemsValues);\n }\n else {\n isHeight = true;\n galleryItemEle.remove();\n }\n }\n else if (galleryWrapperHeight < (galleryItemEle.offsetHeight + itemsValues)) {\n isHeight = true;\n galleryItemEle.remove();\n }\n }\n else {\n galleryItemEle.remove();\n }\n }\n else {\n simplifiedItemsCount++;\n if (simplifiedItemsCount > itemProp.item.gallerySettings.itemCount) {\n galleryItemEle.classList.add('e-hidden');\n }\n }\n }\n }\n }\n }\n }\n };\n /**\n * Checks the popup collision.\n *\n * @param {Popup} popup - Gets the popup.\n * @param {HTMLElement} popupEle - Gets the popup element.\n * @param {number} offsetValue - Gets the offset value of gallery popup button.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.checkCollision = function (popup, popupEle, offsetValue) {\n if (offsetValue === void 0) { offsetValue = 0; }\n var paddingWidth = 0;\n var marginWidth = 0;\n if (popupEle) {\n var windowWidth = window.innerWidth;\n var screenWidth = offsetValue === 0 ? windowWidth : Math.abs(windowWidth - (windowWidth - offsetValue));\n var paddingStyles = window.getComputedStyle(popupEle);\n if (paddingStyles) {\n paddingWidth = parseFloat(paddingStyles.paddingLeft) + parseFloat(paddingStyles.paddingRight);\n if (!(isNullOrUndefined(paddingWidth))) {\n screenWidth = screenWidth - paddingWidth;\n }\n }\n var popupContainerItems = popupEle.querySelectorAll('.e-ribbon-gallery-container');\n if (popup.width !== 'auto') {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'wrap';\n });\n }\n var isCollideOccurs = false;\n for (var i = 0; i < popupContainerItems.length; i++) {\n var itemsWidth = 0;\n for (var j = 0; j < popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item').length; j++) {\n var popupItemStyles = window.getComputedStyle(popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item')[parseInt(j.toString(), 10)]);\n if (popupItemStyles) {\n marginWidth = parseFloat(popupItemStyles.marginLeft) + parseFloat(popupItemStyles.marginRight);\n if (!(isNullOrUndefined(marginWidth))) {\n itemsWidth += marginWidth;\n }\n }\n itemsWidth += Math.round(parseFloat(popupItemStyles.width));\n if (((screenWidth <= itemsWidth) && popup.width === 'auto') || ((popup.width !== 'auto') && (screenWidth <= parseInt(popup.width.toString(), 10)) && (screenWidth <= itemsWidth))) {\n popupEle.style.width = ((itemsWidth + Math.abs(paddingWidth - marginWidth)) - Math.round(parseFloat(popupItemStyles.width))) + 'px';\n isCollideOccurs = true;\n break;\n }\n }\n if (isCollideOccurs) {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'wrap';\n });\n if (popup.height === 'auto') {\n this.setGalleryPopupHeight(popupEle, parseFloat(paddingStyles.height), parseFloat(paddingStyles.top));\n }\n break;\n }\n }\n if (!isCollideOccurs) {\n if (popup.width === 'auto') {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'nowrap';\n });\n popupEle.style.width = 'auto';\n }\n else {\n popupEle.style.width = (popup.width).toString();\n }\n if (popup.height === 'auto') {\n this.setGalleryPopupHeight(popupEle, parseFloat(paddingStyles.height), parseFloat(paddingStyles.top));\n }\n }\n }\n };\n RibbonGallery.prototype.setGalleryPopupHeight = function (popupEle, popupHeight, popupTop) {\n if (window.innerHeight < popupHeight || window.innerHeight < Math.round(popupHeight + popupTop)) {\n popupEle.style.height = (window.innerHeight - popupTop) + 'px';\n }\n else {\n popupEle.style.height = 'auto';\n }\n };\n RibbonGallery.prototype.createPopup = function (item, buttonEle) {\n var popupContainer = this.parent.createElement('div', {\n className: 'e-ribbon-popup-container',\n id: item.id + '_popupContainer'\n });\n this.renderGalleryItems(item.gallerySettings, true, item.id, popupContainer);\n var gallerypopupElement = this.parent.createElement('div', {\n className: 'e-ribbon-gallery-popup',\n id: item.id + '_galleryPopup'\n });\n document.body.append(gallerypopupElement);\n var galleryPopup = new Popup(gallerypopupElement, {\n relateTo: buttonEle,\n content: popupContainer,\n collision: { X: 'fit', Y: 'flip' },\n actionOnScroll: 'hide',\n targetType: 'relative',\n position: { X: 'left', Y: 'bottom' },\n enableRtl: this.parent.enableRtl,\n width: item.gallerySettings.popupWidth,\n height: item.gallerySettings.popupHeight\n });\n galleryPopup.hide();\n };\n /**\n * Updates gallery in mode switching.\n *\n * @param {string} activeLayout - Gets the current active layout.\n * @param {string} itemID - Gets the ribbon item id.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.switchGalleryItems = function (activeLayout, itemID) {\n var itemEle = this.parent.element.querySelector('#' + itemID + constants.CONTAINER_ID);\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemEle) {\n var galleryIcons = itemEle.querySelectorAll('.e-ribbon-gallery-icons');\n var galleryContainer = itemEle.querySelectorAll('.e-ribbon-gallery-container');\n if (galleryIcons.length) {\n for (var i = 0; i < galleryIcons.length; i++) {\n if (activeLayout === 'Simplified') {\n galleryIcons[parseInt(i.toString(), 10)].classList.add('e-hidden');\n }\n else {\n galleryIcons[parseInt(i.toString(), 10)].classList.remove('e-hidden');\n }\n }\n }\n if (galleryContainer.length && itemProp) {\n for (var n = 0; n < itemProp.item.gallerySettings.groups.length; n++) {\n for (var i = 0; i < galleryContainer.length; i++) {\n if (itemProp.item.gallerySettings.groups[parseInt(n.toString(), 10)].itemHeight && itemProp.item.gallerySettings.groups[parseInt(n.toString(), 10)].itemHeight !== 'auto') {\n if (itemID + '_galleryContainer' + n === galleryContainer[parseInt(i.toString(), 10)].id) {\n if (activeLayout === 'Simplified') {\n galleryContainer[parseInt(i.toString(), 10)].style.flexFlow = 'nowrap';\n }\n else {\n galleryContainer[parseInt(i.toString(), 10)].style.flexFlow = 'wrap';\n }\n }\n }\n }\n }\n }\n var activeContent = this.parent.tabObj.element.querySelector('#' + this.parent.tabs[this.parent.selectedTab].id + constants.CONTENT_ID);\n if (activeContent) {\n this.checkAvailableHeight(activeContent);\n }\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.addOverFlowEvents = function (item, itemEle) {\n var _this = this;\n if (itemEle.closest('.e-ribbon-overflow-target')) {\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n if (itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.contains('e-disabled')) {\n buttonEle.classList.add('e-disabled');\n }\n itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.add('e-hidden');\n itemEle.querySelectorAll('.e-ribbon-gallery-container').forEach(function (ele) {\n ele.classList.add('e-hidden');\n });\n var popupButton = itemEle.querySelector('#' + item.id + '_popupButton');\n if (popupButton) {\n popupButton.classList.add('e-hidden');\n }\n var itemProp = getItem(this.parent.tabs, item.id);\n var iconCss = itemProp && itemProp.group.groupIconCss ? itemProp.group.groupIconCss : '';\n var content = itemProp && itemProp.group.header ? itemProp.group.header : '';\n if (!iconCss) {\n for (var i = 0; i < item.gallerySettings.groups.length; i++) {\n for (var j = 0; j < item.gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (item.gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss) {\n iconCss = item.gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss;\n break;\n }\n }\n if (iconCss) {\n break;\n }\n }\n }\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n var popupContainerEle_1 = document.querySelector('#' + item.id + '_galleryPopup .e-ribbon-popup-container');\n var dropdown = new DropDownButton({\n iconCss: iconCss,\n content: content,\n target: popupContainerEle_1,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-gallery-dropdown',\n disabled: item.disabled,\n open: function () {\n _this.setFoucsToFirstItem(popupContainerEle_1, true, item.id);\n },\n beforeClose: function (args) {\n var isCancelled = _this.popupEvents(args.event, item.gallerySettings, 'popupClose', false);\n if (isCancelled) {\n args.cancel = true;\n }\n }\n }, buttonEle);\n if (popup.width !== 'auto') {\n dropdown.dropDown.width = formatUnit(popup.width);\n }\n if (popup.height !== 'auto') {\n dropdown.dropDown.height = formatUnit(popup.height);\n dropdown.dropDown.element.style.height = (popup.height).toString();\n }\n }\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.removeOverFlowEvents = function (item, itemEle) {\n var popupButton = itemEle.querySelector('#' + item.id + '_popupButton');\n if (popupButton) {\n popupButton.classList.remove('e-hidden');\n }\n itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.remove('e-hidden');\n itemEle.querySelectorAll('.e-ribbon-gallery-container').forEach(function (ele) {\n ele.classList.remove('e-hidden');\n });\n var galleryDDBEle = document.querySelector('#' + item.id);\n if (galleryDDBEle) {\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n var dropdown = getComponent(galleryDDBEle, DropDownButton);\n popupEle.appendChild(dropdown.target);\n dropdown.destroy();\n remove(galleryDDBEle);\n }\n };\n RibbonGallery.prototype.setActiveState = function (galleryEle, gallerySettings, itemID, isInteracted, event, isPopup) {\n var previousItem;\n var currentItem;\n var itemEle = document.querySelector('#' + itemID + constants.CONTAINER_ID);\n var selctedGalleryItem = Array.prototype.slice.call(itemEle.querySelectorAll('.e-ribbon-gallery-selected'));\n var popupEle = document.querySelector('#' + itemID + '_popupContainer');\n var popupGalleryItem = Array.prototype.slice.call(popupEle.querySelectorAll('.e-ribbon-gallery-selected'));\n if (popupGalleryItem.length) {\n selctedGalleryItem = selctedGalleryItem.concat(popupGalleryItem);\n }\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (selctedGalleryItem[0].id === itemID + '_galleryContainer' + i + '_gallery' + j) {\n previousItem = gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)];\n }\n if (galleryEle.id === (isPopup ? 'popup_' : '') + itemID + '_galleryContainer' + i + '_gallery' + j) {\n currentItem = gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)];\n }\n }\n }\n var galleryItem = document.getElementById(galleryEle.id);\n var galleryItemPopup;\n var selectingEventArgs = { cancel: false, name: 'beforeSelect', previousItem: previousItem, currentItem: currentItem, isInteracted: isInteracted, event: event };\n if (gallerySettings.beforeSelect) {\n gallerySettings.beforeSelect.call(this, selectingEventArgs);\n }\n if (selectingEventArgs.cancel) {\n return;\n }\n else {\n for (var i = 0; i < selctedGalleryItem.length; i++) {\n selctedGalleryItem[parseInt(i.toString(), 10)].classList.remove('e-ribbon-gallery-selected');\n }\n if (!galleryItem.id.startsWith('popup_')) {\n galleryItemPopup = document.getElementById('popup_' + galleryEle.id);\n }\n else if (document.getElementById(galleryItem.id.slice(6))) {\n galleryItemPopup = document.getElementById(galleryItem.id.slice(6));\n }\n if (galleryItemPopup) {\n galleryItemPopup.classList.add('e-ribbon-gallery-selected');\n }\n galleryItem.classList.add('e-ribbon-gallery-selected');\n var selectedEventArgs = { previousItem: previousItem, currentItem: currentItem, name: 'select', isInteracted: isInteracted, event: event };\n var galleryPopupItems = document.querySelectorAll('#' + itemID + '_popupContainer .e-ribbon-gallery-item');\n for (var i = 0; i < galleryPopupItems.length; i++) {\n if (galleryPopupItems[parseInt(i.toString(), 10)].id === galleryEle.id) {\n gallerySettings.selectedItemIndex = i;\n break;\n }\n }\n if (gallerySettings.select) {\n gallerySettings.select.call(this, selectedEventArgs);\n }\n }\n };\n RibbonGallery.prototype.popupEvents = function (args, gallerySettings, name, isOpen) {\n var popupEventArgs = { cancel: false, event: args, name: name };\n if (isOpen && gallerySettings.popupOpen) {\n gallerySettings.popupOpen.call(this, popupEventArgs);\n }\n else if (!isOpen && gallerySettings.popupClose) {\n gallerySettings.popupClose.call(this, popupEventArgs);\n }\n if (popupEventArgs.cancel) {\n return true;\n }\n return false;\n };\n RibbonGallery.prototype.showPopup = function (popup, popupEle, args, gallerySettings, itemID) {\n var isCancelled = this.popupEvents(args, gallerySettings, 'popupOpen', true);\n if (isCancelled) {\n return;\n }\n popup.show();\n this.checkCollision(popup, popupEle);\n var buttonEle = document.querySelector('#' + itemID + '_popupButton');\n buttonEle.classList.add('e-gallery-button-active');\n var buttonPosition = buttonEle.getBoundingClientRect();\n if (popupEle.offsetWidth > buttonPosition.left) {\n this.checkCollision(popup, popupEle, buttonPosition.left);\n }\n var offsetX = Math.abs((popupEle.offsetWidth - buttonPosition.left)) + buttonEle.offsetWidth;\n popupEle.style.left = offsetX + 'px';\n popupEle.style.top = popupEle.getBoundingClientRect().top + 2 + 'px';\n this.setFoucsToFirstItem(popupEle, false, itemID, popup, gallerySettings);\n };\n RibbonGallery.prototype.hidePopup = function (popup, popupEle, args, gallerySettings, itemID) {\n var isCancelled = this.popupEvents(args, gallerySettings, 'popupClose', false);\n if (isCancelled) {\n return;\n }\n popup.hide();\n var buttonEle = document.querySelector('#' + itemID + '_popupButton');\n buttonEle.classList.remove('e-gallery-button-active');\n };\n /**\n * Shows a specific gallery popup in the ribbon.\n *\n * @param {string} id - Gets the ribbon item id.\n * @returns {void}\n */\n RibbonGallery.prototype.showGalleryPopup = function (id) {\n var itemProp = getItem(this.parent.tabs, id);\n var popupEle = document.querySelector('#' + id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n this.showPopup(popup, popupEle, null, itemProp.item.gallerySettings, id);\n };\n /**\n * Hides a specific gallery popup in the ribbon.\n *\n * @param {string} id - Gets the ribbon item id.\n * @returns {void}\n */\n RibbonGallery.prototype.hideGalleryPopup = function (id) {\n var itemProp = getItem(this.parent.tabs, id);\n var popupEle = document.querySelector('#' + id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n this.hidePopup(popup, popupEle, null, itemProp.item.gallerySettings, id);\n };\n RibbonGallery.prototype.setFoucsToFirstItem = function (popupEle, isDropdown, itemID, popup, gallerySettings) {\n var _this = this;\n popupEle.querySelectorAll('.e-ribbon-gallery-item')[0].focus();\n this.galleryItemsIndex = 0;\n popupEle.onkeydown = function (e) {\n _this.handleGalleryPopupNavigation(e, popupEle, isDropdown, itemID, popup, gallerySettings);\n };\n };\n RibbonGallery.prototype.handleGalleryPopupNavigation = function (e, popupEle, isDropdown, itemID, popup, gallerySettings) {\n var galleryPopupEle = popupEle.querySelectorAll('.e-ribbon-gallery-item');\n if (galleryPopupEle) {\n if (e.key === 'Home') {\n this.galleryItemsIndex = 0;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n else if (e.key === 'End') {\n this.galleryItemsIndex = galleryPopupEle.length - 1;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n else if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n this.galleryItemsIndex++;\n if (this.galleryItemsIndex !== galleryPopupEle.length) {\n if (galleryPopupEle && (galleryPopupEle[this.galleryItemsIndex])) {\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else {\n this.galleryItemsIndex = 0;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n if (this.galleryItemsIndex !== 0) {\n this.galleryItemsIndex--;\n if (galleryPopupEle && (galleryPopupEle[this.galleryItemsIndex])) {\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else {\n this.galleryItemsIndex = galleryPopupEle.length - 1;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else if ((e.key === 'Enter' || e.code === 'Space') || (e.key === 'Escape' && !isDropdown)) {\n this.hidePopup(popup, popupEle, e, gallerySettings, itemID);\n }\n }\n };\n RibbonGallery.prototype.createGalleryTemplate = function (galleryItemEle, gallerySettings, id, items) {\n galleryItemEle.classList.add('e-ribbon-gallery-template');\n var templateName = 'ribbon' + id + 'galleryTemplate';\n this.parent['clearTemplate']([templateName]);\n var templateFunction = getTemplateFunction(gallerySettings.template);\n if (items.disabled) {\n galleryItemEle.classList.add('e-disabled');\n }\n if (items.cssClass) {\n galleryItemEle.classList.add(items.cssClass);\n }\n append(templateFunction({ items: items }, this, templateName, (id + 'galleryTemplate'), this.parent.isStringTemplate, null, null, this.parent), galleryItemEle);\n };\n RibbonGallery.prototype.createGalleryPopupTemplate = function (galleryItemEle, gallerySettings, id, items) {\n galleryItemEle.classList.add('e-ribbon-gallery-popup-template');\n var templateName = 'ribbon' + id + 'galleryPopupTemplate';\n this.parent['clearTemplate']([templateName]);\n var templateFunction = getTemplateFunction(gallerySettings.popupTemplate);\n if (items.disabled) {\n galleryItemEle.classList.add('e-disabled');\n }\n if (items.cssClass) {\n galleryItemEle.classList.add(items.cssClass);\n }\n append(templateFunction({ items: items }, this, templateName, (id + 'galleryPopupTemplate'), this.parent.isStringTemplate, null, null, this.parent), galleryItemEle);\n };\n return RibbonGallery;\n}());\nexport { RibbonGallery };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { addClass, append, Event, Collection, Complex, Component, EventHandler, formatUnit, getInstance, getComponent, getUniqueID, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, NotifyPropertyChanges, Property, remove, removeClass } from '@syncfusion/ej2-base';\nimport { Tab, TabAnimationSettings, HScroll, Toolbar } from '@syncfusion/ej2-navigations';\nimport { RibbonTab, FileMenuSettings, BackStageMenu, RibbonContextualTabSettings } from '../models/index';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport { ItemOrientation, RibbonItemSize, RibbonItemType } from './interface';\nimport { RibbonButton, RibbonComboBox, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonGroupButton } from '../items/index';\nimport { destroyControl, getCollection, getGroup, getIndex, getItem, getItemElement, updateCommonProperty, updateControlDisabled, isTooltipPresent, getTemplateFunction, createTooltip, destroyTooltip, updateTooltipProp } from './utils';\nimport * as constants from './constant';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { DropDownButton, SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n * The Ribbon Component is a structured layout to manage tools with tabs and groups.\n */\nvar Ribbon = /** @class */ (function (_super) {\n __extends(Ribbon, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {RibbonModel} options - Specifies the ribbon model\n * @param {string|HTMLDivElement} element - Specifies the target element\n */\n function Ribbon(options, element) {\n var _this = this;\n Ribbon_1.Inject(RibbonButton, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonComboBox, RibbonGroupButton);\n _this = _super.call(this, options, element) || this;\n return _this;\n }\n Ribbon_1 = Ribbon;\n /**\n * Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Ribbon.prototype.render = function () {\n this.initialize();\n };\n Ribbon.prototype.preRender = function () {\n this.keysPress = '';\n this.idIndex = 0;\n this.tooltipData = [];\n this.initialPropsData = {};\n this.hiddenElements = {};\n this.keyTipElements = {};\n this.hiddenGroups = [];\n this.itemsModel = [];\n this.targetTabs = {};\n this.isAddRemove = false;\n this.isUpdateItems = false;\n this.keyConfigs = {\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n tab: 'tab',\n shiftTab: 'shift+tab'\n };\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Ribbon.prototype.getPersistData = function () {\n return this.addOnPersist(['activeLayout']);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Ribbon.prototype.getModuleName = function () {\n return 'ribbon';\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n Ribbon.prototype.requiredModules = function () {\n var modules = [];\n modules.push({ member: 'ribbonButton', args: [this], name: 'RibbonButton' }, { member: 'ribbonDropDown', args: [this], name: 'RibbonDropDown' }, { member: 'ribbonSplitButton', args: [this], name: 'RibbonSplitButton' }, { member: 'ribbonCheckBox', args: [this], name: 'RibbonCheckBox' }, { member: 'ribbonComboBox', args: [this], name: 'RibbonComboBox' }, { member: 'ribbonGroupButton', args: [this], name: 'RibbonGroupButton' });\n var canInjectColorPickerModule = getItem(this.tabs, null, RibbonItemType.ColorPicker);\n var canInjectGalleryModule = getItem(this.tabs, null, RibbonItemType.Gallery);\n if (canInjectColorPickerModule) {\n modules.push({ member: 'ribbonColorPicker', args: [this], name: 'RibbonColorPicker' });\n }\n if (canInjectGalleryModule) {\n modules.push({ member: 'ribbonGallery', args: [this], name: 'RibbonGallery' });\n }\n if (this.backStageMenu.visible || this.backStageMenu.items.length) {\n modules.push({ member: 'ribbonBackstage', args: [this], name: 'RibbonBackstage' });\n }\n if (this.fileMenu.visible || this.fileMenu.menuItems.length) {\n modules.push({ member: 'ribbonFileMenu', args: [this], name: 'RibbonFileMenu' });\n }\n if (this.contextualTabs.length) {\n modules.push({ member: 'ribbonContextualTab', args: [this], name: 'RibbonContextualTab' });\n }\n if (this.enableKeyTips) {\n modules.push({ member: 'ribbonKeyTip', args: [this], name: 'RibbonKeyTip' });\n }\n return modules;\n };\n Ribbon.prototype.initialize = function () {\n this.element.id = this.element.id || getUniqueID('e-' + this.getModuleName());\n addClass([this.element], ['e-rbn'].concat((this.cssClass ? this.cssClass.split(constants.SPACE) : [])));\n if (this.enableRtl) {\n this.element.classList.add(constants.RTL_CSS);\n }\n this.element.style.width = formatUnit(this.width);\n this.renderTabs();\n if (this.ribbonContextualTabModule) {\n this.ribbonContextualTabModule.addContextualTabs();\n }\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.createFileMenu(this.fileMenu);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.createBackStage(this.backStageMenu);\n }\n this.createHelpPaneTemplate();\n var toolbar = this.tabObj['tbObj'];\n toolbar.refreshOverflow();\n this.addTabOverflowKeyTip();\n createTooltip(this.element, this);\n this.isKeytipOpen = false;\n this.wireEvents();\n this.wireKeyboardEvent();\n this.currentControlIndex = 0;\n };\n Ribbon.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n EventHandler.add(document.body, 'keydown', this.keytipActionHandler, this);\n EventHandler.add(document, 'mousedown', this.mouseEventHandler, this);\n EventHandler.add(document, 'scroll', this.mouseEventHandler, this);\n };\n Ribbon.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleRibbon = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Ribbon.prototype.keyActionHandler = function (e) {\n if (((e.key === 'Tab') && (!(e.target.classList.contains('e-tab-wrap')) && !(e.target.classList.contains('e-combobox'))))) {\n e.preventDefault();\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var controlElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-control'));\n var templateElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-template'));\n var galleryElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-gallery-item'));\n var ribbonControls = controlElements.concat(templateElements, galleryElements);\n var comboBoxElements = activeContent.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < ribbonControls.length; i++) {\n if (ribbonControls[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (ribbonControls[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.currentControlIndex = i;\n }\n }\n }\n }\n if (this.currentControlIndex === 0) {\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-collapse-btn') || e.target.classList.contains('e-ribbon-last-item') ||\n e.target.classList.contains('e-ribbon-first-item') || e.target.classList.contains('e-ribbon-group-of-btn') ||\n e.target.classList.contains('e-ribbon-overall-of-btn') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-gallery-item')) {\n switch (e.action) {\n case 'rightarrow':\n this.handleNavigation(e, !this.enableRtl, ribbonControls);\n break;\n case 'leftarrow':\n this.handleNavigation(e, this.enableRtl, ribbonControls);\n break;\n case 'tab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex < ribbonControls.length - 1) {\n this.currentControlIndex++;\n }\n }\n break;\n case 'shiftTab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex > 0) {\n this.currentControlIndex--;\n }\n }\n else {\n this.tabObj.element.querySelector('.e-toolbar-item.e-active').querySelector('.e-tab-wrap').focus();\n this.currentControlIndex = 0;\n }\n }\n }\n };\n Ribbon.prototype.handleNavigation = function (e, enableRtl, ribbonControls) {\n var groupContainer;\n var prevGroupId;\n if (enableRtl) {\n if (this.currentControlIndex < ribbonControls.length - 1 && ribbonControls[this.currentControlIndex + 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex++;\n }\n }\n else {\n if (this.currentControlIndex > 0 && ribbonControls[this.currentControlIndex - 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex--;\n }\n }\n if ((!enableRtl && (this.currentControlIndex > 0)) || (enableRtl && (this.currentControlIndex < ribbonControls.length - 1))) {\n if (!e.target.classList.contains('e-combobox') && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-gallery-item')) && !e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n this.currentControlIndex++;\n }\n else {\n var prevGroupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (prevGroupContainer) {\n prevGroupId = prevGroupContainer.getAttribute('id');\n }\n this.currentControlIndex--;\n }\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n if (((enableRtl && this.currentControlIndex === ribbonControls.length - 1) ||\n (!enableRtl && this.currentControlIndex === 0))) {\n if (ribbonControls[this.currentControlIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n break;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n enableRtl ? this.currentControlIndex++ : this.currentControlIndex--;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (this.activeLayout === 'Classic') {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (enableRtl) {\n var launcherIconEle = void 0;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n var items = groupContainer.querySelectorAll('.e-ribbon-item');\n var elem = items[items.length - 1].querySelector('.e-control');\n if (elem) {\n elem.classList.add('e-ribbon-last-item');\n }\n }\n }\n else {\n if (groupContainer) {\n var groupContainerId = groupContainer.getAttribute('id');\n if (prevGroupId !== groupContainerId) {\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n ribbonControls[parseInt((this.currentControlIndex + 1).toString(), 10)].classList.add('e-ribbon-first-item');\n }\n }\n }\n }\n }\n else {\n if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-first-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-first-item');\n }\n else if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n }\n }\n else {\n if (this.activeLayout === 'Classic') {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n if (this.activeLayout === 'Simplified') {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if (enableRtl && (overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n }\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n else {\n this.currentControlIndex--;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (!enableRtl && e.target.classList.contains('e-ribbon-first-item')) {\n groupContainer = ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n if (enableRtl) {\n this.currentControlIndex++;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentControlIndex;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-collapse-btn')) {\n if (enableRtl) {\n this.currentControlIndex = 0;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n else {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if ((overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex--;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n }\n if (this.activeLayout === 'Simplified' && e.target.classList.contains('e-ribbon-overall-of-btn')) {\n if (enableRtl) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n };\n Ribbon.prototype.resizeHandler = function () {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n if (this.scrollModule) {\n var scrollEle = this.tabObj.element.querySelector('.' + constants.HORIZONTAL_SCROLLBAR);\n this.scrollModule.scrollStep = scrollEle.offsetWidth;\n }\n if (this.activeLayout === 'Simplified') {\n var activePopup = document.querySelectorAll('.e-ribbon .e-dropdown-btn.e-active, .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active');\n if (activePopup.length) {\n for (var i = 0; i < activePopup.length; i++) {\n var dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);\n dropDownBtn.toggle();\n }\n }\n }\n var galleryPopupEle = document.querySelector('.e-ribbon-gallery-popup.e-popup-open');\n if (galleryPopupEle) {\n var popup = getComponent(galleryPopupEle, Popup);\n popup.hide();\n }\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n };\n Ribbon.prototype.mouseEventHandler = function () {\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n };\n Ribbon.prototype.keytipActionHandler = function (e) {\n if (this.enableKeyTips) {\n var isKeyTipPresent = false;\n var keyPress = e.key;\n if (e.altKey && e.key === 'Meta') {\n var activePopup = document.querySelectorAll('.e-ribbon .e-dropdown-btn.e-active, .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active');\n if (activePopup.length) {\n for (var i = 0; i < activePopup.length; i++) {\n var dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);\n dropDownBtn.toggle();\n }\n this.ribbonKeyTipModule.removeKeytip();\n }\n else {\n if (!this.isKeytipOpen) {\n var backstagePopup = document.querySelector('.e-ribbon-backstage-popup');\n if (backstagePopup && backstagePopup.classList.contains('e-popup-open')) {\n this.ribbonBackstageModule.hideBackstage();\n }\n this.ribbonKeyTipModule.createKeytip('tab');\n }\n else {\n this.ribbonKeyTipModule.removeKeytip();\n }\n }\n }\n else if (e.key === 'Escape' || e.key === 'Tab' || e.key === 'ArrowLeft' || e.key === 'ArrowUp' || e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n this.ribbonKeyTipModule.removeKeytip(e.key);\n }\n else {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n if (keyTipItems) {\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML.toLowerCase() === keyPress) {\n isKeyTipPresent = true;\n this.ribbonKeyTipModule.keytipPress(keyPress);\n break;\n }\n }\n if (!isKeyTipPresent) {\n this.checkKeyTipPresent(keyPress, this.keysPress.length);\n }\n }\n }\n }\n };\n Ribbon.prototype.checkKeyTipPresent = function (keyTip, length) {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML.length > 1 && keyTipItem.innerHTML[parseInt(length.toString(), 10)].toLowerCase() === keyTip) {\n this.keysPress += keyTip;\n this.ribbonKeyTipModule.keytipPress(this.keysPress);\n this.removeKeytip(this.keysPress);\n break;\n }\n }\n };\n Ribbon.prototype.removeKeytip = function (keyTip) {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML[0].toLowerCase() !== keyTip && keyTip !== '') {\n remove(keyTipItem);\n }\n }\n };\n Ribbon.prototype.addKeyTip = function (tabIndex, keyTip, id, type) {\n if (this.keyTipElements && this.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n var isKeyTipExist = false;\n if (!(this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type])) {\n this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type] = [];\n }\n if (Object.keys(this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type]).length) {\n var keytipData = this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type];\n for (var i = 0; i < Object.keys(this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type]).length; i++) {\n if (keytipData[parseInt(i.toString(), 10)].id === id) {\n isKeyTipExist = true;\n }\n }\n if (!isKeyTipExist) {\n this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type].\n push({ id: id, type: type, keyTip: keyTip });\n }\n }\n else {\n this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type].push({ id: id, type: type, keyTip: keyTip });\n }\n }\n };\n Ribbon.prototype.renderTabs = function () {\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal = this.checkID(this.tabsInternal, 'tab', this.element.id);\n this.setProperties({ tabs: this.tabsInternal }, true);\n var tabEle = this.createElement('div', {\n id: this.element.id + constants.TAB_ID\n });\n this.element.appendChild(tabEle);\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n this.tabObj = new Tab({\n cssClass: constants.RIBBON_TAB,\n selectedItem: this.selectedTab,\n overflowMode: 'Popup',\n width: this.width,\n items: tabItems,\n enableRtl: this.enableRtl,\n created: this.tabCreated.bind(this),\n selected: this.ribbonTabSelected.bind(this),\n selecting: this.ribbonTabSelecting.bind(this),\n animation: this.tabAnimation\n });\n this.tabObj.appendTo(tabEle);\n //Set the width value as \"0px\" with unit for proper calculation.\n this.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, '0px');\n this.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n var toolbar = getComponent(toolbarEle, Toolbar);\n toolbar.setProperties({ width: 'calc(100% - var(--fileMenuWidth) - var(--helpTemplateWidth))' });\n this.element.classList[this.isMinimized ? 'add' : 'remove'](constants.RIBBON_MINIMIZE);\n };\n Ribbon.prototype.minimize = function (val) {\n var _this = this;\n if (val === this.isMinimized) {\n return;\n }\n var eventArgs = { cancel: false };\n this.trigger(val ? 'ribbonCollapsing' : 'ribbonExpanding', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.setProperties({ isMinimized: val }, true);\n _this.element.classList.toggle(constants.RIBBON_MINIMIZE, _this.isMinimized);\n //to overwrite inline styles from hscroll\n _this.tabObj.element.querySelector('.e-content').style.display = val ? 'none' : 'block';\n if (!val) {\n _this.refreshLayout();\n }\n });\n };\n Ribbon.prototype.toggleLayout = function (args) {\n this.setProperties({ activeLayout: this.activeLayout === 'Simplified' ? 'Classic' : 'Simplified' }, true);\n this.switchLayout();\n var eventArgs = { activeLayout: this.activeLayout, event: args };\n this.trigger('ribbonLayoutSwitched', eventArgs);\n };\n Ribbon.prototype.tabCreated = function () {\n if (!this.hideLayoutSwitcher) {\n this.addExpandCollapse();\n }\n this.renderInitialTab(this.selectedTab);\n };\n Ribbon.prototype.ribbonTabSelected = function (e) {\n e.preventFocus = true;\n this.isAddRemove = false;\n var selectedTabId = e.selectedItem.getAttribute('data-id');\n var selectedIndex = getIndex(this.tabs, (function (tab) { return (tab.id === selectedTabId); }));\n selectedIndex = selectedIndex === -1 ? this.selectedTab : selectedIndex;\n var selectedContent = this.tabObj.items[parseInt(selectedIndex.toString(), 10)].content;\n if ((!selectedContent.querySelector('.' + constants.RIBBON_GROUP)) && (this.tabs[parseInt(selectedIndex.toString(), 10)].groups.length !== 0)) {\n var elements = this.createGroups(this.tabs[parseInt(selectedIndex.toString(), 10)].groups, selectedIndex);\n append(elements, selectedContent);\n }\n var isContextual = this.isContextualTab(selectedTabId);\n this.updateSelectedState(selectedTabId);\n var eventArgs = { previousIndex: this.selectedTab, selectedIndex: selectedIndex, isContextual: isContextual };\n this.setProperties({ selectedTab: selectedIndex }, true);\n this.calculateHiddenElementsWidth(selectedIndex);\n if (this.isUpdateItems) {\n for (var i = 0; i < this.itemsModel.length; i++) {\n var item = this.itemsModel[parseInt(i.toString(), 10)];\n if (this.selectedTab === this.targetTabs[item.id]) {\n this.updateItem(item);\n this.itemsModel.splice(i, 1);\n i--;\n }\n }\n if (this.itemsModel.length === 0) {\n this.isUpdateItems = false;\n }\n }\n if (this.ribbonGalleryModule) {\n this.ribbonGalleryModule.checkAvailableHeight(e.selectedContent.firstChild);\n }\n this.checkOverflow(selectedIndex, selectedContent);\n if (this.activeLayout === 'Simplified' && this.overflowDDB) {\n var overflowTarget = this.overflowDDB.target;\n var ofTabContainer = overflowTarget.querySelector('.' + constants.RIBBON_TAB_ACTIVE);\n if (ofTabContainer) {\n ofTabContainer.classList.remove(constants.RIBBON_TAB_ACTIVE);\n }\n var activeTab = overflowTarget.querySelector('#' + selectedTabId + constants.OVERFLOW_ID);\n if (activeTab) {\n activeTab.classList.add(constants.RIBBON_TAB_ACTIVE);\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n this.checkOverflowHiddenItems(false, selectedIndex);\n }\n else {\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n this.trigger('tabSelected', eventArgs);\n };\n Ribbon.prototype.updateSelectedState = function (tabID) {\n if (this.contextualTabs.length) {\n for (var i = 0; i < this.contextualTabs.length; i++) {\n var isSelected = false;\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id === tabID) {\n isSelected = true;\n break;\n }\n }\n this.contextualTabs[parseInt(i.toString(), 10)].\n setProperties({ isSelected: isSelected }, true);\n }\n }\n };\n Ribbon.prototype.checkOverflow = function (tabIndex, activeContent) {\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n var isOverFlow = tabContent.offsetWidth < activeContent.offsetWidth;\n if (isOverFlow && !this.scrollModule) {\n if (this.activeLayout === 'Classic') {\n // Defines whether the shrinking is breaked due to insufficient space.\n var isBreak = false;\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, true);\n if (!isBreak && (tabContent.offsetWidth < activeContent.offsetWidth)) {\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, false);\n }\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createOverflowDropdown(tabIndex, tabContent, activeContent);\n }\n }\n else {\n this.checkSimplifiedItemShrinking(tabIndex, tabContent, activeContent);\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createSimplfiedOverflow(tabContent, activeContent, tabIndex);\n }\n }\n //Adds Scroll if the tabwidth is less the content width even after adding overflow dropdown.\n if ((tabContent.offsetWidth < activeContent.offsetWidth) && (!this.scrollModule)) {\n this.scrollModule = new HScroll({\n enableRtl: this.enableRtl\n }, this.tabObj.element.querySelector('.' + constants.TAB_CONTENT));\n }\n }\n else if (!isOverFlow) {\n this.destroyScroll();\n if (this.activeLayout === 'Classic') {\n var isBreak = false;\n isBreak = this.removeOverflowDropdown(tabContent, activeContent, false, tabIndex);\n //Check for expanding small items to medium items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, true);\n }\n //Check for expanding medium items to large items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, false);\n }\n }\n else {\n this.removeSimplfiedOverflow(tabContent, activeContent, tabIndex);\n if (tabContent.offsetWidth > activeContent.offsetWidth) {\n this.checkSimplifiedItemExpanding(tabIndex, tabContent, activeContent);\n }\n }\n }\n this.addTabOverflowKeyTip();\n };\n Ribbon.prototype.addTabOverflowKeyTip = function () {\n var tabOverflow = this.tabObj.element.querySelector('#_nav');\n if (tabOverflow) {\n this.keyTipElements['taboverflow'] = [];\n this.keyTipElements['taboverflow'].push({ id: tabOverflow.id, type: 'taboverflow', keyTip: '00' });\n }\n else {\n delete (this.keyTipElements['taboverflow']);\n }\n };\n Ribbon.prototype.checkSimplifiedItemShrinking = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Medium) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n itemContainer.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.checkSimplifiedItemExpanding = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth > activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth > activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Small) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var valString = itemContainer.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (tabContent.offsetWidth > value)) {\n itemContainer.removeAttribute('data-medium-width');\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.createSimplfiedOverflow = function (tabContent, activeContent, tabIndex) {\n var orderedGroups = this.getGroupResizeOrder(true, tabIndex);\n var isEmptyCollection;\n for (var i = 0; ((i < orderedGroups.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n var isGroupUpdated = false;\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = group.collections.length; ((j >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); j--) {\n var collection = group.collections[parseInt((j - 1).toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n var itemContainer = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n var groupHidden = false;\n var itemHidden = false;\n var isAllItemHidden = false;\n var isEmptyCollection_1 = false;\n var groupItems = void 0;\n if (groupEle.classList.contains('e-hidden') || groupEle.classList.contains('e-hide-group')) {\n groupItems = groupEle.querySelectorAll('.e-ribbon-item.e-hidden');\n if (groupItems.length) {\n for (var i_1 = 0; i_1 < groupItems.length; i_1++) {\n groupItems[parseInt(i_1.toString(), 10)].classList.remove('e-hidden');\n }\n }\n if (groupEle.classList.contains('e-hide-group')) {\n isAllItemHidden = true;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n if (this.hiddenGroups.indexOf(groupEle.id) !== -1) {\n this.hiddenGroups.splice(this.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n else {\n groupHidden = true;\n groupEle.classList.remove('e-hidden');\n }\n if (!isGroupUpdated) {\n this.calculateOverflowItemsWidth(groupEle.offsetWidth, false, tabIndex);\n this.calculateMediumDataWidth(groupEle.offsetWidth, tabIndex, false);\n isGroupUpdated = true;\n }\n }\n else {\n if (itemContainer.classList.contains('e-hidden')) {\n itemHidden = true;\n itemContainer.classList.remove('e-hidden');\n if (groupEle.classList.contains('e-ribbon-emptyCollection')) {\n isEmptyCollection_1 = true;\n groupEle.classList.remove('e-ribbon-emptyCollection');\n }\n this.calculateOverflowItemsWidth(itemContainer.offsetWidth, false, tabIndex);\n this.calculateMediumDataWidth(itemContainer.offsetWidth, tabIndex, false);\n }\n }\n itemContainer.setAttribute('data-simplified-width', (activeContent.offsetWidth).toString());\n if (itemHidden) {\n itemContainer.classList.add('e-hidden');\n }\n if (groupItems && groupItems.length) {\n for (var i_2 = 0; i_2 < groupItems.length; i_2++) {\n groupItems[parseInt(i_2.toString(), 10)].classList.add('e-hidden');\n }\n }\n if (groupHidden) {\n groupEle.classList.add('e-hidden');\n }\n if (isAllItemHidden) {\n groupEle.classList.add('e-hide-group');\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n if (isEmptyCollection_1) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemContainer, groupContainer, true);\n if (item.activeSize === RibbonItemSize.Small) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, true);\n }\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n var itemsLength = groupEle.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength && !group.enableGroupOverflow) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n if (isEmptyCollection) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n this.checkOverflowHiddenItems(group.enableGroupOverflow, tabIndex, group.id);\n }\n };\n Ribbon.prototype.checkEmptyCollection = function (itemsLength) {\n var isEmptyCollection = true;\n for (var i = 0; i < itemsLength.length; i++) {\n if (!(itemsLength[parseInt(i.toString(), 10)].classList.contains('e-hidden'))) {\n isEmptyCollection = false;\n break;\n }\n }\n return isEmptyCollection;\n };\n Ribbon.prototype.updatePopupItems = function (item, itemEle, isGroupOF, isMenu) {\n var _this = this;\n var dropdown = getComponent(itemEle.querySelector('#' + item.id), (item.type === RibbonItemType.DropDown || item.type === RibbonItemType.Gallery || item.type === RibbonItemType.GroupButton) ? DropDownButton : SplitButton);\n var dropDownPopup = dropdown.dropDown;\n // popup is on right if (isGroupOF && isMenu)\n // The position is reversed if RTL is enabled.\n // isRight = ((isGroupOF && isMenu) && !this.enableRtl ) || (!(isGroupOF && isMenu) && this.enableRtl) ==> (isGroupOF && isMenu) !== this.enableRtl\n var isLeft = (isGroupOF && isMenu) === this.enableRtl;\n if (dropDownPopup) {\n dropDownPopup.setProperties({ position: { X: isLeft ? 'left' : 'right', Y: isMenu ? 'top' : 'bottom' } }, true);\n if (isMenu) {\n dropdown.beforeOpen = function () {\n if (isLeft) {\n if (item.type === RibbonItemType.Gallery && _this.ribbonGalleryModule) {\n _this.ribbonGalleryModule.checkCollision(dropDownPopup, dropDownPopup.element);\n }\n dropDownPopup.element.style.setProperty('visibility', 'hidden');\n dropDownPopup.element.style.setProperty('display', 'block');\n dropDownPopup.setProperties({ offsetX: -1 * dropDownPopup.element.offsetWidth });\n dropDownPopup.element.style.removeProperty('display');\n dropDownPopup.element.style.removeProperty('visibility');\n }\n };\n }\n else {\n dropDownPopup.setProperties({ offsetX: 0 }, true);\n dropdown.beforeOpen = null;\n }\n }\n };\n Ribbon.prototype.removeSimplfiedOverflow = function (tabContent, activeContent, tabIndex, isClear) {\n if (isClear === void 0) { isClear = false; }\n var orderedGroups = this.getGroupResizeOrder(false, tabIndex);\n var flag = true;\n var isEmptyCollection;\n for (var i = 0; ((i < orderedGroups.length) && flag); i++) {\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (group.enableGroupOverflow) {\n var overflowDDBEle = tabContent.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n else {\n overflowDDB = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n for (var j = 0; ((j < group.collections.length) && flag); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n // eslint-disable-next-line max-len\n for (var k = 0; ((k < collection.items.length) && flag && !isClear && (tabContent.offsetWidth > activeContent.offsetWidth)); k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemContainer = void 0;\n if (overflowtarget) {\n itemContainer = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n var width = parseInt(itemContainer.getAttribute('data-simplified-width'), 10);\n var groupItemEle = tabContent.querySelector('#' + group.id);\n if (itemContainer.classList.contains('e-hidden') || groupItemEle.classList.contains('e-hidden')) {\n width = Math.abs(width - activeContent.offsetWidth);\n }\n if (!isClear && (tabContent.offsetWidth < width)) {\n flag = false;\n break;\n }\n var groupEle = tabContent.querySelector('#' + collection.id);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, false);\n }\n groupEle.append(itemContainer);\n if (itemContainer.classList.contains('e-hidden') || groupItemEle.classList.contains('e-hidden')) {\n itemContainer.setAttribute('data-simplified-width', width.toString());\n var isGroupHidden = false;\n var widthDifference = 0;\n if (itemContainer.classList.contains('e-hidden')) {\n itemContainer.classList.remove('e-hidden');\n if (groupItemEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n widthDifference = this.checkWidthDifference(itemContainer, groupItemEle);\n }\n width = itemContainer.offsetWidth + widthDifference;\n itemContainer.classList.add('e-hidden');\n }\n this.calculateOverflowItemsWidth(width, true, tabIndex);\n this.calculateMediumDataWidth(width, tabIndex, true);\n if (isGroupHidden) {\n groupItemEle.classList.add('e-hide-group');\n groupItemEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n this.removeOverflowEvent(item, itemContainer);\n if (item.allowedSizes & RibbonItemSize.Small) {\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemContainer.querySelector('#' + item.id), item);\n }\n var groupElement = tabContent.querySelector('#' + group.id);\n var itemEle = groupElement.querySelector('.' + constants.RIBBON_ITEM);\n if (groupElement.classList.contains('e-ribbon-emptyCollection') && itemEle !== null) {\n var itemsLength = groupElement.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n if (!isEmptyCollection) {\n groupElement.classList.remove('e-ribbon-emptyCollection');\n }\n }\n }\n }\n }\n }\n if (overflowDDB) {\n if (group.enableGroupOverflow) {\n if (overflowtarget.childElementCount === 0 ||\n (overflowtarget.childElementCount === 1 && this.isHeaderVisible(overflowtarget, group.id))) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n else {\n var ofGroupContainer = overflowtarget.querySelector('#' + group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = overflowtarget.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n }\n }\n for (var i = 0; i < orderedGroups.length; i++) {\n this.checkOverflowHiddenItems(orderedGroups[parseInt(i.toString(), 10)].enableGroupOverflow, tabIndex, orderedGroups[parseInt(i.toString(), 10)].id);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n if (overflowEle.childElementCount === 0) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n }\n };\n Ribbon.prototype.checkOverflowHiddenItems = function (isGroupOF, tabIndex, groupId) {\n if (isGroupOF) {\n var overflowDDB = document.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (overflowDDB) {\n var overflowButton = getInstance(overflowDDB, DropDownButton);\n var overflowBtnTarget = overflowButton.target;\n var itemEle = overflowBtnTarget.querySelectorAll('.e-ribbon-item');\n var isHidden = true;\n for (var i = 0; i < itemEle.length; i++) {\n if (!(itemEle[parseInt(i.toString(), 10)].classList.contains('e-hidden'))) {\n isHidden = false;\n break;\n }\n }\n overflowButton.element.classList[isHidden ? 'add' : 'remove']('e-hidden');\n }\n }\n else {\n if (this.overflowDDB) {\n var isGroupHidden = true;\n var isItemHidden = void 0;\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n for (var k = 0; k < ofTabContainer.children.length; k++) {\n isItemHidden = true;\n var overflowTab = ofTabContainer.children[parseInt(k.toString(), 10)];\n var groupTabContainer = overflowTab.querySelectorAll('.e-ribbon-item');\n for (var n = 0; n < groupTabContainer.length; n++) {\n if (!(groupTabContainer[parseInt(n.toString(), 10)].classList.contains('e-hidden'))) {\n isItemHidden = false;\n break;\n }\n }\n overflowTab.classList[isItemHidden ? 'add' : 'remove']('e-hide-group');\n if (!(overflowTab.classList.contains('e-hide-group')) && !(overflowTab.classList.contains('e-hidden'))) {\n isGroupHidden = false;\n }\n }\n this.overflowDDB.element.classList[isGroupHidden ? 'add' : 'remove'](constants.HIDE_CSS);\n }\n }\n }\n };\n Ribbon.prototype.createOverflowPopup = function (item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer, isResize) {\n var overflowButton;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupId);\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n if (isGroupOF) {\n var overflowDDB = groupContainer.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (!overflowDDB) {\n overflowButton = this.addOverflowButton(groupId + constants.GROUPOF_BUTTON_ID, isGroupOF);\n overflowButton.element.classList.add(constants.RIBBON_GROUP_OF_BUTTON);\n groupContainer.appendChild(overflowButton.element);\n }\n else {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n this.addKeyTip(tabIndex, '0' + (itemProp.groupIndex + 1), overflowButton.element.id, 'grpofbtn');\n overflowtarget = overflowButton.target;\n var overflowBtnTarget = overflowButton.target;\n var headerEle = overflowBtnTarget.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID);\n if (!headerEle) {\n if (itemProp.group.overflowHeader) {\n var groupHeader_1 = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID,\n innerHTML: itemProp.group.overflowHeader\n });\n overflowBtnTarget.append(groupHeader_1);\n }\n }\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n overflowBtnTarget.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n overflowBtnTarget.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n overflowBtnTarget.classList.add('e-hide-group');\n }\n }\n if (isResize) {\n overflowBtnTarget.insertBefore(itemEle, overflowBtnTarget.querySelector('.' + constants.RIBBON_ITEM));\n }\n else {\n overflowBtnTarget.append(itemEle);\n }\n }\n else {\n if (!this.overflowDDB) {\n this.overflowDDB = this.addOverflowButton(this.tabObj.element.id + constants.OVRLOF_BUTTON_ID, isGroupOF);\n this.tabObj.element.insertBefore(this.overflowDDB.element, this.collapseButton);\n this.overflowDDB.element.classList.add(constants.RIBBON_OVERALL_OF_BUTTON);\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n else {\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' +\n this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var ofGroupContainer = overflowEle.querySelector('#' + groupId + constants.CONTAINER_ID);\n if (!ofGroupContainer) {\n ofGroupContainer = itemProp.group.overflowHeader ? this.createGroupContainer(groupId, itemProp.group.overflowHeader) : this.createGroupContainer(groupId, groupHeader);\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n ofGroupContainer.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n ofGroupContainer.classList.add('e-hide-group');\n }\n }\n ofTabContainer.append(ofGroupContainer);\n }\n if (isResize) {\n ofGroupContainer.insertBefore(itemEle, ofGroupContainer.querySelector('.' + constants.RIBBON_ITEM));\n }\n else {\n ofGroupContainer.append(itemEle);\n }\n }\n else {\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n }\n overflowButton = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n if (itemEle !== null) {\n this.addOverflowEvents(item, itemEle, overflowButton);\n }\n if (overflowtarget) {\n if (item.keyTip) {\n this.addKeyTip(tabIndex, item.keyTip, item.id, 'popupitem');\n }\n }\n };\n Ribbon.prototype.addOverflowEvents = function (item, itemEle, overflowButton) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'Gallery':\n if (this.activeLayout === 'Simplified') {\n this.ribbonGalleryModule.addOverFlowEvents(item, itemEle);\n }\n break;\n case 'GroupButton':\n if (this.activeLayout === 'Simplified') {\n this.ribbonGroupButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n }\n }\n };\n Ribbon.prototype.createOfTabContainer = function (groupId, groupHeader, itemEle, tabIndex) {\n var ofTabContainer = this.createElement('div', {\n id: this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID,\n className: constants.RIBBON_OF_TAB_CONTAINER\n });\n var overflowtarget = this.overflowDDB.target;\n overflowtarget.append(ofTabContainer);\n var itemProp = getGroup(this.tabs, groupId);\n var ofGroupContainer = itemProp.group.overflowHeader ?\n this.createGroupContainer(groupId, itemProp.group.overflowHeader) : this.createGroupContainer(groupId, groupHeader);\n ofGroupContainer.append(itemEle);\n ofTabContainer.append(ofGroupContainer);\n if (tabIndex === this.selectedTab) {\n ofTabContainer.classList.add(constants.RIBBON_TAB_ACTIVE);\n }\n var groupEle = document.querySelector('#' + groupId);\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n ofGroupContainer.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n ofGroupContainer.classList.add('e-hide-group');\n }\n }\n };\n Ribbon.prototype.checkGroupShrinking = function (tabIndex, tabContent, activeContent, isLarge) {\n var isOverFlow = true;\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = (tab.groups.length - 1); (isOverFlow && (j >= 0)); j--) {\n // eslint-disable-next-line max-len\n isBreak = isLarge ? this.checkLargeToMedium(tabIndex, tab, j, tabContent, activeContent) : this.checkMediumToSmall(tabIndex, tab, j, tabContent, activeContent);\n isOverFlow = !isBreak && (tabContent.offsetWidth < activeContent.offsetWidth);\n }\n return isBreak;\n };\n Ribbon.prototype.checkValidCollectionLength = function (collections) {\n var count = 0;\n for (var i = 0; i < collections.length; i++) {\n var items = collections[parseInt(i.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n count++;\n break;\n }\n }\n if (count > 1) {\n return false;\n }\n }\n return count === 1;\n };\n Ribbon.prototype.checkClassicCollection = function (collections, n, isIncrement) {\n var items = collections[parseInt(n.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n return n;\n }\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === collections.length) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n };\n Ribbon.prototype.checkClassicItem = function (items, n, isIncrement) {\n var item = items[parseInt(n.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n return n;\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === items.length) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n };\n Ribbon.prototype.checkLargeToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var canReduceCollection = function (collection) {\n return (collection.items.length === 1) && canReduceItem(collection.items[0]);\n };\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Large);\n };\n var createShrinkEle = function (id, firstItem, start, end) {\n var shrinkEle = _this.createElement('div', {\n className: 'e-ribbon-shrink' + constants.SPACE + constants.RIBBON_ROW,\n id: id + '_shrink_container' + start,\n attrs: { 'data-start': start.toString(), 'data-end': end.toString() }\n });\n firstItem.parentElement.insertBefore(shrinkEle, firstItem);\n if (!shouldSkip) {\n shrinkEle.setAttribute('data-large-width', activeContent.offsetWidth.toString());\n }\n return shrinkEle;\n };\n var moveItemToColumn = function (start, end) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[0];\n var firstItem = activeContent.querySelector('#' + collection.items[parseInt(start.toString(), 10)].id + constants.CONTAINER_ID);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + collection.id + '_shrink_container' + start) :\n createShrinkEle(collection.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (!(item.displayOptions & DisplayMode.Classic)) {\n continue;\n }\n var ele = activeContent.querySelector('#' + item.id + constants.CONTAINER_ID);\n shrinkEle.appendChild(ele);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton && _this.activeLayout === 'Classic') {\n _this.setItemSize(ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID), item);\n }\n else {\n _this.setItemSize(ele.querySelector('#' + item.id), item);\n }\n }\n };\n var moveCollectionToColumn = function (start, end) {\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n var firstItem = activeContent.querySelector('#' + group.collections[parseInt(start.toString(), 10)].id);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + group.id + '_shrink_container' + start) :\n createShrinkEle(group.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n var ele = activeContent.querySelector('#' + collection.id);\n shrinkEle.appendChild(ele);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton && _this.activeLayout === 'Classic') {\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID), collection.items[0]);\n }\n else {\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id), collection.items[0]);\n }\n }\n };\n var orientation = group.orientation;\n if (orientation === ItemOrientation.Column) {\n for (var k = (group.collections.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second collection\n k = this.checkClassicCollection(group.collections, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(k.toString(), 10)])) {\n l = this.checkClassicCollection(group.collections, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n if (m >= 0) {\n m = this.checkClassicCollection(group.collections, m, false);\n }\n //Checks the element rendered at position n-2\n if ((m >= 0) && canReduceCollection(group.collections[parseInt(m.toString(), 10)])) {\n moveCollectionToColumn(m, k);\n }\n else {\n moveCollectionToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n var collection = group.collections[0];\n for (var k = (collection.items.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second item\n k = this.checkClassicItem(collection.items, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceItem(collection.items[parseInt(k.toString(), 10)])) {\n l = this.checkClassicItem(collection.items, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceItem(collection.items[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n //Checks the element rendered at position n-2\n if (m >= 0) {\n m = this.checkClassicItem(collection.items, m, false);\n }\n if ((m >= 0) && canReduceItem(collection.items[parseInt(m.toString(), 10)])) {\n moveItemToColumn(m, k);\n }\n else {\n moveItemToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToSmall = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Small) && (item.activeSize === RibbonItemSize.Medium);\n };\n var reduceItemsToSmall = function (collectionIndex, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n var reduce = function (i) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_1 = activeContent.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_1 = activeContent.querySelector('#' + item.id + '_grpbtn');\n }\n _this.setItemSize(ele_1, item);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var reduceCollectionsToSmall = function (index, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n if (!shouldSkip) {\n shrinkColumns[parseInt(index.toString(), 10)].setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n var reduce = function (i) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n var ele_2 = activeContent.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton) {\n ele_2 = activeContent.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_2, collection.items[0]);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var setWidth = function (id) {\n if (!shouldSkip) {\n var ele_3 = activeContent.querySelector('#' + id);\n ele_3.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n };\n if (orientation === ItemOrientation.Column) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var start = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var l = this.checkClassicCollection(group.collections, start + 1, false); //next valid item\n if (canReduceItem(group.collections[parseInt(start.toString(), 10)].items[0])\n && canReduceItem(group.collections[parseInt(l.toString(), 10)].items[0])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n reduceCollectionsToSmall(k, start, end);\n }\n else if (canReduceItem(group.collections[parseInt(end.toString(), 10)].items[0])) {\n reduceCollectionsToSmall(k, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var classicItems = [];\n for (var i = 0; i < collection.items.length; i++) {\n if (collection.items[parseInt(i.toString(), 10)].displayOptions & DisplayMode.Classic) {\n classicItems.push(i);\n }\n }\n //If items length is 1 then, it would have been already check for shrinked column\n if ((classicItems.length > 1)) {\n if (canReduceItem(collection.items[classicItems[0]]) && canReduceItem(collection.items[classicItems[1]])) {\n if (classicItems.length === 2) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[1]);\n }\n else if (canReduceItem(collection.items[classicItems[2]])) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[2], classicItems[1]);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, false); //next valid item\n if (canReduceItem(group.collections[0].items[parseInt(start.toString(), 10)])\n && canReduceItem(group.collections[0].items[parseInt(l.toString(), 10)])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end);\n }\n else if (canReduceItem(group.collections[0].items[parseInt(end.toString(), 10)])) {\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = (collection.items.length - 1); l >= 0; l--) {\n l = this.checkClassicItem(collection.items, l, false);\n if (l < 0) {\n continue;\n }\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canReduceItem(item)) {\n if (item.type !== RibbonItemType.GroupButton) {\n setWidth(item.id);\n }\n else {\n setWidth(item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n reduceItemsToSmall(k, l, l);\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkGroupExpanding = function (tabIndex, tabContent, activeContent, isSmall) {\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = 0; (!isBreak && (j < tab.groups.length)); j++) {\n isBreak = isSmall ? this.checkSmallToMedium(tabIndex, tab, j, tabContent, activeContent, false, true) :\n this.checkMediumToLarge(tabIndex, tab, j, tabContent, activeContent, false, true);\n }\n return isBreak;\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.checkSmallToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canExpandItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Small);\n };\n var expandItemToMedium = function (collectionIndex, index, parentEle) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n var item = collection.items[parseInt(index.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_4 = parentEle.id === item.id ? parentEle : parentEle.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_4 = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_4, item);\n }\n };\n var expandCollectionsToMedium = function (i) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections;\n var item = collections[parseInt(i.toString(), 10)].items[0];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_5 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id);\n collections[parseInt(i.toString(), 10)].items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_5 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_5, collections[parseInt(i.toString(), 10)].items[0]);\n }\n };\n if (orientation === ItemOrientation.Row) {\n // collection length is 1, then the it wll be covered in shrinked columns\n if (!this.checkValidCollectionLength(group.collections)) {\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n l = this.checkClassicItem(collection.items, l, true);\n if (l === collection.items.length) {\n continue;\n }\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canExpandItem(item)) {\n var itemEle = activeContent.querySelector('#' + item.id);\n if (item.type === 'GroupButton') {\n itemEle = activeContent.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemToMedium(k, l, itemEle);\n if (!shouldSkip || shouldClear) {\n itemEle.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n }\n }\n }\n else {\n for (var k = 0; k < group.collections.length; k++) {\n //If items length is 1 then, it will be handled in shrinked column\n if ((group.collections[parseInt(k.toString(), 10)].items.length > 1)) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var itemEle = activeContent.querySelector('#' + collection.id);\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n var classicItems = [];\n for (var i = 0; i < collection.items.length; i++) {\n if (collection.items[parseInt(i.toString(), 10)].displayOptions & DisplayMode.Classic) {\n classicItems.push(i);\n }\n }\n if ((classicItems.length > 1) && value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemToMedium(k, classicItems[0], itemEle);\n expandItemToMedium(k, classicItems[1], itemEle);\n if (classicItems.length === 3) {\n expandItemToMedium(k, classicItems[2], itemEle);\n }\n if (!shouldSkip || shouldClear) {\n itemEle.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n }\n if (shrinkColumns.length > 0) {\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, true); //next valid item\n expandItemToMedium(0, start, shrinkColumn);\n expandItemToMedium(0, l, shrinkColumn);\n // if l == end, then l is the last item, else L is the middle item. If l is middle then call the method for end.\n if (l !== end) {\n expandItemToMedium(0, end, shrinkColumn);\n }\n }\n else {\n var m = this.checkClassicCollection(group.collections, start + 1, true); //next valid item\n expandCollectionsToMedium(start);\n expandCollectionsToMedium(m);\n if (m !== end) {\n expandCollectionsToMedium(end);\n }\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToLarge = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n if (shrinkColumns.length === 0) {\n return false;\n }\n var expandItemsToLarge = function (start, end, parentEle, middle) {\n var items = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections[0].items;\n var reduce = function (i) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var container = parentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele_6 = container.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Large }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_6 = container.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_6, item);\n parentEle.insertAdjacentElement('beforebegin', container);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n var expandCollectionsToLarge = function (start, end, parentEle, middle) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections;\n var reduce = function (i) {\n var collection = collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n var collectionEle = parentEle.querySelector('#' + collection.id);\n var ele_7 = collectionEle.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Large }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton) {\n ele_7 = collectionEle.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_7, collection.items[0]);\n parentEle.insertAdjacentElement('beforebegin', collectionEle);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-large-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, true); //next valid item\n if (l === end) {\n expandItemsToLarge(start, end, shrinkColumn);\n }\n else {\n expandItemsToLarge(start, end, shrinkColumn, l);\n }\n }\n else {\n var m = this.checkClassicCollection(group.collections, start + 1, true); //next valid item\n if (m === end) {\n expandCollectionsToLarge(start, end, shrinkColumn);\n }\n else {\n expandCollectionsToLarge(start, end, shrinkColumn, m);\n }\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-large-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n return false;\n };\n Ribbon.prototype.handleContentSize = function (itemEle, isRemoveOverflow) {\n var itemContainer = itemEle.closest('.' + constants.RIBBON_GROUP_CONTENT);\n if (isRemoveOverflow) {\n itemContainer.classList.add(constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT);\n }\n };\n Ribbon.prototype.setItemSize = function (itemEle, item) {\n if (itemEle) {\n var itemContainer = itemEle.closest('.' + constants.RIBBON_ITEM);\n if (item.type === RibbonItemType.Button) {\n this.ribbonButtonModule.updateButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.DropDown) {\n this.ribbonDropDownModule.updateDropDownSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.SplitButton) {\n this.ribbonSplitButtonModule.updateSplitButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.Template) {\n remove(itemEle);\n this.createTemplateContent(item, itemContainer);\n }\n else if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.updateGroupButtonSize(itemEle, item);\n }\n itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT, constants.RIBBON_LARGE_ITEM, constants.RIBBON_MEDIUM_ITEM, constants.RIBBON_SMALL_ITEM);\n if (item.activeSize === RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.add((item.activeSize === RibbonItemSize.Medium) ?\n constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n }\n };\n Ribbon.prototype.createOverflowDropdown = function (tabIndex, tabContent, activeContent) {\n var collapseOrder = this.getGroupResizeOrder(true, tabIndex);\n if (collapseOrder.length === 0) {\n return;\n }\n var _loop_1 = function (i) {\n var group = collapseOrder[parseInt(i.toString(), 10)];\n var groupEle = this_1.tabObj.element.querySelector('#' + group.id);\n groupEle.setAttribute('data-expanded-width', activeContent.offsetWidth.toString());\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupOverFlow = this_1.createElement('div', {\n className: constants.RIBBON_GROUP_OVERFLOW + constants.SPACE + constants.RIBBON_LARGE_ITEM,\n id: group.id + constants.OVERFLOW_ID + constants.CONTAINER_ID\n });\n groupEle.insertBefore(groupOverFlow, groupContainer);\n var groupIndex = getIndex(this_1.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n var tab = this_1.tabs[parseInt(tabIndex.toString(), 10)];\n //Expanding the items in the group to their original expanded state\n this_1.checkSmallToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n this_1.checkMediumToLarge(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n var dropdown = this_1.ribbonDropDownModule.createOverFlowDropDown(group.id, group.header, group.groupIconCss, groupContainer, groupOverFlow, this_1.enableRtl);\n if (group.keyTip) {\n var overflowDDB = group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID;\n this_1.addKeyTip(tabIndex, group.keyTip, overflowDDB, 'grpoverflow');\n }\n this_1.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: true }, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupContainer.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_1.handleContentSize(itemEle);\n this_1.addOverflowEvents(item, itemEle, dropdown);\n }\n var overflowDDB = document.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var overflowButton = getInstance(overflowDDB, DropDownButton);\n if (overflowButton) {\n var overflowtarget = overflowButton.target;\n if (overflowtarget) {\n if (this_1.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n if (item.type === RibbonItemType.GroupButton) {\n for (var i_3 = 0; i_3 < item.groupButtonSettings.items.length; i_3++) {\n if (item.groupButtonSettings.items[parseInt(i_3.toString(), 10)].keyTip) {\n this_1.addKeyTip(tabIndex, item.groupButtonSettings.items[parseInt(i_3.toString(), 10)].keyTip, item.id + (constants.RIBBON_GROUP_BUTTON_ID + i_3), 'grpoverflowpopup');\n }\n }\n }\n if (item.keyTip) {\n this_1.addKeyTip(tabIndex, item.keyTip, item.id, 'grpoverflowpopup');\n }\n }\n }\n }\n }\n }\n };\n var this_1 = this;\n for (var i = 0; ((i < collapseOrder.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n _loop_1(i);\n }\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.removeOverflowDropdown = function (tabContent, activeContent, isClear, tabIndex) {\n if (isClear === void 0) { isClear = false; }\n var expandOrder = this.getGroupResizeOrder(false, tabIndex);\n if (expandOrder.length === 0) {\n return false;\n }\n var _loop_2 = function (i) {\n var group = expandOrder[parseInt(i.toString(), 10)];\n var groupEle = this_2.tabObj.element.querySelector('#' + group.id);\n if (!groupEle) {\n return \"break\";\n } //to handle the rerendering of tabcontrol when a ribbon tab is added/removed\n var width = parseInt(groupEle.getAttribute('data-expanded-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n return { value: true };\n }\n this_2.removeDropdown(group.id);\n var groupIndex = getIndex(this_2.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n this_2.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: false }, true);\n var tab = this_2.tabs[parseInt(tabIndex.toString(), 10)];\n //Shrinking the items in the group to their previous shrinked state (before moving to dropdown)\n this_2.checkLargeToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n this_2.checkMediumToSmall(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_2.handleContentSize(itemEle, true);\n this_2.removeOverflowEvent(item, itemEle);\n }\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < expandOrder.length; i++) {\n var state_1 = _loop_2(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n if (state_1 === \"break\")\n break;\n }\n return false;\n };\n Ribbon.prototype.removeDropdown = function (groupId) {\n var dropdownElement = this.tabObj.element.querySelector('#' + groupId + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n if (dropdownElement) {\n var groupOverFlow = dropdownElement.parentElement;\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n remove(groupOverFlow);\n }\n };\n Ribbon.prototype.getGroupResizeOrder = function (isCollapse, tabIndex) {\n var _this = this;\n var groups = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n groups = groups.filter(function (e) {\n // (isUndefined(e.isCollapsible) || e.isCollapsible) => check whethe rhte item is collapsible\n // if a isCollapsed property is undefined, then it is considered collapsible and included in collapsible list\n // ((isCollapse && !e.isCollapsed)||(!isCollapse && e.isCollapsed)) => isCollapse !== e.isCollapsed\n return (_this.activeLayout === 'Classic') ? (isUndefined(e.isCollapsible) || e.isCollapsible) && ((isCollapse &&\n isUndefined(e.isCollapsed)) || (!isUndefined(e.isCollapsed) && (isCollapse !== e.isCollapsed))) : true;\n });\n //sort the collapsible groups based on the priority\n groups.sort(function (a, b) { return a.priority - b.priority; });\n //reverse the sorted array to return the array in descending order while collapsing.\n return isCollapse ? groups.reverse() : groups;\n };\n Ribbon.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Ribbon.prototype.clearOverflowDropDown = function (index) {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(index.toString(), 10)].id + constants.CONTENT_ID);\n if (!activeContent) {\n return;\n }\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n this.removeSimplfiedOverflow(activeContent, tabContent, index, true);\n }\n else {\n this.removeOverflowDropdown(activeContent, tabContent, true, index);\n }\n };\n Ribbon.prototype.isContextualTab = function (tabID) {\n var isContextual = false;\n if (this.contextualTabs.length) {\n for (var i = 0; i < this.contextualTabs.length; i++) {\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id === tabID) {\n isContextual = true;\n break;\n }\n }\n }\n }\n return isContextual;\n };\n Ribbon.prototype.ribbonTabSelecting = function (e) {\n var _this = this;\n this.currentControlIndex = 0;\n var nextTabId = e.selectingItem ? e.selectingItem.getAttribute('data-id') : null;\n var previousTabId = e.previousItem.getAttribute('data-id');\n var nextIndex = getIndex(this.tabs, (function (tab) { return (tab.id === nextTabId); }));\n var isContextual = this.isContextualTab(nextTabId);\n var previousIndex = getIndex(this.tabs, (function (tab) { return (tab.id === previousTabId); }));\n nextIndex = nextIndex === -1 ? this.selectedTab : nextIndex;\n var eventArgs = {\n cancel: e.cancel, isInteracted: e.isInteracted, previousIndex: previousIndex,\n selectedIndex: nextIndex, isContextual: isContextual\n };\n this.trigger('tabSelecting', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.destroyScroll();\n if (!_this.isAddRemove && (previousIndex !== -1)) {\n _this.clearOverflowDropDown(previousIndex);\n }\n var selectedTabContent = _this.tabObj.items[parseInt(nextIndex.toString(), 10)].content;\n if ((!selectedTabContent.querySelector('.' + constants.RIBBON_GROUP)) && (_this.tabs[parseInt(nextIndex.toString(), 10)].groups.length !== 0)) {\n var elements = _this.createGroups(_this.tabs[parseInt(nextIndex.toString(), 10)].groups, nextIndex);\n append(elements, selectedTabContent);\n }\n });\n };\n Ribbon.prototype.createTabItems = function (tabs) {\n var _this = this;\n var tabItems = [];\n var _loop_3 = function (i) {\n var ribbonTab = tabs[parseInt(i.toString(), 10)];\n var header = this_3.createElement('span', {\n innerHTML: ribbonTab.header,\n id: ribbonTab.id + constants.HEADER_ID\n });\n var tabIndex = getIndex(this_3.tabs, (function (tab) { return (tab.id === ribbonTab.id); }));\n if (ribbonTab.keyTip) {\n if (!this_3.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n this_3.keyTipElements[parseInt(tabIndex.toString(), 10)] = {};\n }\n this_3.addKeyTip(tabIndex, ribbonTab.keyTip, ribbonTab.id, 'tab');\n }\n header.onclick = function () { _this.minimize(false); };\n header.ondblclick = function () { _this.minimize(true); };\n var tab = { header: { text: header }, id: ribbonTab.id, cssClass: ribbonTab.cssClass };\n var content = this_3.createElement('div', {\n className: tab.cssClass,\n id: ribbonTab.id + constants.CONTENT_ID\n });\n content.classList.add(constants.RIBBON_TAB_ITEM);\n tab.content = content;\n tabItems.push(tab);\n };\n var this_3 = this;\n for (var i = 0; i < tabs.length; i++) {\n _loop_3(i);\n }\n return tabItems;\n };\n Ribbon.prototype.renderInitialTab = function (index) {\n var elements = this.createGroups(this.tabs[parseInt(index.toString(), 10)].groups, index);\n var content = this.tabObj.items[parseInt(index.toString(), 10)].content;\n append(elements, content);\n if (this.activeLayout === 'Simplified') {\n this.element.classList.add(constants.RIBBON_SIMPLIFIED_MODE);\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n if (this.ribbonGalleryModule) {\n this.ribbonGalleryModule.checkAvailableHeight(activeContent);\n }\n this.checkOverflow(this.selectedTab, activeContent);\n };\n Ribbon.prototype.addOverflowButton = function (btnId, isGroupOF) {\n var _this = this;\n var overflowButton = this.createElement('button', {\n id: btnId\n });\n var overflowTarget = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_TARGET,\n attrs: { 'tabindex': '0' }\n });\n var overflowDDB = new DropDownButton({\n iconCss: constants.OVERFLOW_ICON,\n cssClass: constants.DROPDOWNBUTTON_HIDE + constants.SPACE + constants.RIBBON_GROUP_OVERFLOW_DDB,\n target: overflowTarget,\n locale: this.locale,\n enableRtl: this.enableRtl,\n enablePersistence: this.enablePersistence,\n beforeOpen: function (args) {\n var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n _this.trigger('overflowPopupOpen', eventArgs, function (ribbonArgs) {\n if (ribbonArgs.cancel) {\n args.cancel = true;\n }\n });\n },\n beforeClose: function (args) {\n var ele = args.event ? closest(args.event.target, '.' + constants.RIBBON_POPUP_CONTROL) : null;\n var groupButtonEle = args.event ? closest(args.event.target, '.e-ribbon-group-button-overflow-popup') : null;\n var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n _this.trigger('overflowPopupClose', eventArgs, function (ribbonArgs) {\n if (ele || ribbonArgs.cancel || groupButtonEle) {\n args.cancel = true;\n }\n });\n }\n }, overflowButton);\n this.element.classList.add(constants.RIBBON_OVERFLOW);\n createTooltip(overflowTarget, this);\n if (!isGroupOF) {\n this.keyTipElements['overflowbtn'] = [];\n this.keyTipElements['overflowbtn'].push({ id: btnId, type: 'overflowbtn', keyTip: '00' });\n }\n var isGroupOf;\n overflowButton.onkeydown = overflowButton.onclick = function () { _this.itemIndex = -1; isGroupOf = overflowButton.classList.contains('e-ribbon-overall-of-btn') ? false : true; };\n overflowTarget.onkeydown = function (e) { return (_this.upDownKeyHandler(e, overflowTarget, isGroupOf), _this); };\n return overflowDDB;\n };\n Ribbon.prototype.upDownKeyHandler = function (e, target, isGroupOf) {\n var items;\n if (isGroupOf) {\n items = target.getElementsByClassName('e-ribbon-item');\n }\n else {\n var currentList = target.querySelector('.e-ribbon-of-tab.e-ribbon-active');\n items = currentList.getElementsByClassName('e-ribbon-item');\n }\n var control = items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-control');\n var comboBoxEle = control && control.classList.contains('e-combobox') ?\n items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-combobox') : null;\n var ribbonItem;\n var templateEle;\n if (comboBoxEle === null || (e.key === 'Tab') || this.itemIndex < 0) {\n if (e.key === 'ArrowDown' || (!e.shiftKey && e.key === 'Tab')) {\n if ((!this.itemIndex && this.itemIndex !== 0) || this.itemIndex < 0 || this.itemIndex === items.length - 1) {\n this.itemIndex = 0;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n if (comboBoxEle && e.key === 'Tab') {\n e.preventDefault();\n var item = items[this.itemIndex].querySelector('.e-control');\n if (item) {\n item.focus();\n }\n }\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n else if (this.itemIndex < items.length - 1 && this.itemIndex >= 0) {\n this.itemIndex++;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n if (templateEle) {\n templateEle.focus();\n }\n }\n else if (e.key === 'ArrowUp' || (e.shiftKey && e.key === 'Tab')) {\n if (comboBoxEle === null || (e.key === 'Tab')) {\n if (!this.itemIndex || this.itemIndex === -1) {\n this.itemIndex = items.length - 1;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n if (comboBoxEle && (e.shiftKey && e.key === 'Tab')) {\n e.preventDefault();\n var item = items[this.itemIndex].querySelector('.e-control');\n if (item) {\n item.focus();\n }\n }\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n else if (this.itemIndex <= items.length - 1 && this.itemIndex > 0) {\n this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n if (templateEle) {\n templateEle.focus();\n }\n }\n }\n target.setAttribute('index', this.itemIndex.toString());\n }\n var currentItemIndex = parseInt(target.getAttribute('index'), 10);\n var itemType = '';\n var controlItem = items[parseInt(currentItemIndex.toString(), 10)] ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control') : null;\n if (controlItem) {\n itemType = controlItem.getAttribute('data-control');\n }\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === ' ' || e.key === 'Tab') {\n if (itemType === 'ColorPicker') {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-split-colorpicker').focus();\n }\n else {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var elem = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n if (elem) {\n elem.focus();\n }\n }\n if (e.key === ' ' && (itemType === 'CheckBox')) {\n var checkBoxEle = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n var checkBox = getComponent(checkBoxEle, CheckBox);\n this.itemIndex = -1;\n checkBox.click();\n }\n }\n if (((itemType === 'SplitButton') && (e.key === 'ArrowRight' || e.key === 'ArrowLeft'))) {\n if (e.key === 'ArrowRight') {\n if (this.enableRtl) {\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n else {\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus();\n }\n }\n if (e.key === 'ArrowLeft') {\n if (this.enableRtl) {\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus();\n }\n else {\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n }\n }\n if (e.key === 'Enter') {\n this.itemIndex = -1;\n }\n };\n Ribbon.prototype.findDisabledItem = function (ribbonItem, items, isIncrease) {\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (isIncrease) {\n if (this.itemIndex === items.length - 1 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = -1;\n }\n }\n else {\n if (this.itemIndex === 0 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = items.length;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n isIncrease ? this.itemIndex++ : this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n };\n Ribbon.prototype.removeOverflowButton = function (overflowDDB) {\n if (overflowDDB) {\n var btnEle = overflowDDB.element;\n destroyTooltip(overflowDDB.target);\n overflowDDB.destroy();\n btnEle.remove();\n }\n };\n Ribbon.prototype.removeOverflowEvent = function (item, itemEle) {\n if (itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'Gallery':\n this.ribbonGalleryModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n }\n }\n };\n Ribbon.prototype.createGroupContainer = function (groupId, groupHeader) {\n var ofGroupContainer = this.createElement('div', {\n className: constants.RIBBON_OF_GROUP_CONTAINER,\n id: groupId + constants.CONTAINER_ID\n });\n var ofGroupHeader = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.HEADER_ID,\n innerHTML: groupHeader\n });\n ofGroupContainer.append(ofGroupHeader);\n return ofGroupContainer;\n };\n Ribbon.prototype.addExpandCollapse = function () {\n var _this = this;\n this.collapseButton = this.createElement('span', {\n className: constants.RIBBON_COLLAPSE_BUTTON + constants.SPACE + constants.EXPAND_COLLAPSE_ICON,\n id: this.tabObj.element.id + constants.COLLAPSE_BUTTON_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Layout Switcher', 'role': 'button' }\n });\n this.collapseButton.onclick = function (e) { _this.toggleLayout(e); };\n this.collapseButton.onkeydown = function (e) {\n if (e.key === 'Enter') {\n _this.toggleLayout(e);\n }\n };\n this.element.classList.add(constants.RIBBON_COLLAPSIBLE);\n if (this.activeLayout === 'Simplified') {\n this.collapseButton.classList.add(constants.RIBBON_EXPAND_BUTTON);\n }\n this.tabObj.element.appendChild(this.collapseButton);\n if (this.layoutSwitcherKeyTip) {\n this.keyTipElements['collapse'] = [];\n this.keyTipElements['collapse'].push({ id: this.collapseButton.id, type: 'collapse', keyTip: this.layoutSwitcherKeyTip });\n }\n };\n Ribbon.prototype.removeExpandCollapse = function () {\n var _this = this;\n var index = getIndex(this.tooltipData, function (e) { return e.id === _this.collapseButton.id; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n this.element.classList.remove(constants.RIBBON_COLLAPSIBLE);\n remove(this.tabObj.element.querySelector('.' + constants.RIBBON_COLLAPSE_BUTTON));\n this.collapseButton = null;\n };\n Ribbon.prototype.reRenderTabs = function (tabs) {\n this.destroyScroll();\n this.checkID(this.tabs, 'tab', this.element.id);\n for (var _i = 0, _a = Object.keys(tabs); _i < _a.length; _i++) {\n var key = _a[_i];\n var index = parseInt(key, 10);\n var tab = tabs[parseInt(index.toString(), 10)];\n var isNewTab = false;\n for (var j = 0; j < (this.tabObj.items.length); j++) {\n if (this.tabs[parseInt(index.toString(), 10)].id === this.tabObj.items[parseInt(j.toString(), 10)].id) {\n isNewTab = true;\n break;\n }\n }\n if (!isNewTab) {\n this.destroyTabItems(this.tabsInternal);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n if (this.selectedTab >= this.tabs.length) {\n this.selectedTab = this.tabs.length - 1;\n }\n this.tabObj.setProperties({ items: tabItems, selectedItem: this.selectedTab });\n break;\n }\n else {\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n if (groups) {\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n this.tabObj.items[parseInt(index.toString(), 10)].header.text.innerText = ribbonTab.header;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabObj.items[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabObj.items[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabObj.items[parseInt(index.toString(), 10)].cssClass);\n }\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _b = 0, groups_1 = groups; _b < groups_1.length; _b++) {\n var group = groups_1[_b];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _c = 0, _d = group.collections; _c < _d.length; _c++) {\n var collection = _d[_c];\n for (var _e = 0, _f = collection.items; _e < _f.length; _e++) {\n var item = _f[_e];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n }\n }\n }\n if (this.tabsInternal !== this.tabs) {\n this.tabsInternal = this.tabs;\n var tabItems = this.createTabItems(this.tabs);\n if (this.selectedTab >= this.tabs.length) {\n this.selectedTab = this.tabs.length - 1;\n }\n this.tabObj.setProperties({ items: tabItems, selectedItem: this.selectedTab });\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n };\n Ribbon.prototype.switchLayout = function () {\n this.currentControlIndex = 0;\n this.destroyScroll();\n this.collapseButton.classList.toggle(constants.RIBBON_EXPAND_BUTTON, this.activeLayout === 'Simplified');\n this.element.classList.toggle(constants.RIBBON_SIMPLIFIED_MODE, this.activeLayout === 'Simplified');\n for (var i = 0; i <= (this.tabs.length - 1); i++) {\n var tabIndex = i;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n for (var i_4 = 0; i_4 < groupList.length; i_4++) {\n var group = groupList[parseInt(i_4.toString(), 10)];\n var alignType = groupList[parseInt(i_4.toString(), 10)].orientation;\n if (group.isCollapsed) {\n group.setProperties({ isCollapsed: false }, true);\n this.removeDropdown(group.id);\n }\n else {\n this.checkSmallToMedium(tabIndex, tab, i_4, tabContent, activeContent, true, false);\n this.checkMediumToLarge(tabIndex, tab, i_4, tabContent, activeContent, true, false);\n }\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var shrinkColumns = groupContainer.querySelectorAll('.' + 'e-ribbon-shrink');\n for (var i_5 = 0; i_5 < shrinkColumns.length; i_5++) {\n shrinkColumns[parseInt(i_5.toString(), 10)].remove();\n }\n var groupHeader = groupContainer.querySelector('#' + group.id + constants.HEADER_ID);\n groupHeader.remove();\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n groupContent.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n groupContent.classList.remove(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n groupCollection.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && (item.displayOptions === DisplayMode.Classic)) {\n k++;\n var itemEle_1 = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele = itemEle_1.querySelector('#' + item.id);\n this.destroyFunction(item, ele);\n itemEle_1.remove();\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var size = ((item.allowedSizes === RibbonItemSize.Large) ||\n (item.allowedSizes & RibbonItemSize.Medium)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n size = (!(item.displayOptions & DisplayMode.Simplified) && (item.displayOptions & DisplayMode.Overflow))\n ? RibbonItemSize.Medium : size;\n var itemEle = void 0;\n if (!(item.displayOptions & DisplayMode.Classic)) {\n itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer)[0];\n if (item.displayOptions & DisplayMode.Simplified) {\n groupCollection.append(itemEle);\n }\n }\n else {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)) {\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, true);\n }\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n item.setProperties({ activeSize: size }, true);\n if (itemEle) {\n var ele = itemEle.querySelector('#' + item.id);\n this.setItemSize(ele, item);\n }\n }\n if (item.type === RibbonItemType.Gallery) {\n this.ribbonGalleryModule.switchGalleryItems(this.activeLayout, item.id);\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n }\n else {\n this.element.classList.remove(constants.RIBBON_OVERFLOW);\n for (var i_6 = 0; i_6 < groupList.length; i_6++) {\n var group = groupList[parseInt(i_6.toString(), 10)];\n var alignType = groupList[parseInt(i_6.toString(), 10)].orientation;\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n if (alignType === 'Row') {\n groupContent.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n groupContent.classList.add(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (!group.enableGroupOverflow) {\n overflowDDB = this.overflowDDB;\n if (overflowDDB) {\n overflowtarget = this.overflowDDB.target;\n }\n }\n else {\n var overflowDDBEle = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n if (alignType === 'Column') {\n groupCollection.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && !(item.displayOptions & DisplayMode.Classic)) {\n k++;\n var itemEle = void 0;\n if ((item.displayOptions & DisplayMode.Simplified) || (item.displayOptions & DisplayMode.Overflow)) {\n if (item.displayOptions & DisplayMode.Simplified) {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n else {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (itemEle !== null) {\n var ele_8 = itemEle.querySelector('#' + item.id);\n this.destroyFunction(item, ele_8);\n itemEle.remove();\n }\n }\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n if (!(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) {\n var itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex)[0];\n groupCollection.append(itemEle);\n }\n else {\n var itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (!itemEle && overflowtarget) {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, false);\n }\n this.removeOverflowEvent(item, itemEle);\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n if (itemEle) {\n groupCollection.append(itemEle);\n }\n }\n var ele = groupContainer.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = groupContainer.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n var itemsize = (item.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (item.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: itemsize }, true);\n this.setItemSize(ele, item);\n if (item.type === RibbonItemType.Gallery) {\n this.ribbonGalleryModule.switchGalleryItems(this.activeLayout, item.id);\n }\n }\n if (group.enableGroupOverflow && overflowDDB) {\n if (overflowtarget.childElementCount === 0 ||\n (overflowtarget.childElementCount === 1 && this.isHeaderVisible(overflowtarget, group.id))) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n }\n }\n }\n if (this.selectedTab === tabIndex) {\n this.checkOverflow(tabIndex, activeContent);\n }\n }\n }\n if (this.activeLayout === 'Classic') {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.createLauncherIcon = function (groupId, groupContainer, tabIndex) {\n var _this = this;\n var launcherIcon = this.createElement('div', {\n className: constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss ? this.launcherIconCss : constants.RIBBON_LAUNCHER_ICON),\n id: groupId + constants.LAUNCHER_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Launcher Icon', 'role': 'button' }\n });\n groupContainer.appendChild(launcherIcon);\n groupContainer.classList.add(constants.RIBBON_LAUNCHER);\n EventHandler.add(launcherIcon, 'click', this.launcherIconClicked.bind(this, groupId), this);\n EventHandler.add(launcherIcon, 'keydown', function (e) {\n if (e.key === 'Enter') {\n _this.launcherIconClicked(groupId);\n }\n }, this);\n var itemProp = getGroup(this.tabs, groupId);\n if (itemProp.group.launcherIconKeyTip) {\n this.addKeyTip(tabIndex, itemProp.group.launcherIconKeyTip, launcherIcon.id, 'launcher');\n }\n };\n Ribbon.prototype.launcherIconClicked = function (id) {\n var eventArgs = { groupId: id };\n this.trigger('launcherIconClick', eventArgs);\n };\n Ribbon.prototype.createGroups = function (groupList, tabIndex) {\n var groupElements = [];\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n var alignType = group.orientation;\n var groupEle = this.createElement('div', {\n className: group.cssClass,\n id: group.id\n });\n groupEle.classList.add(constants.RIBBON_GROUP);\n groupElements.push(groupEle);\n var groupContainer = this.createElement('div', {\n className: group.cssClass,\n id: group.id + constants.CONTAINER_ID\n });\n groupContainer.classList.add(constants.RIBBON_GROUP_CONTAINER);\n groupEle.appendChild(groupContainer);\n var groupContent = this.createElement('div', {\n className: this.activeLayout === 'Simplified' ? constants.RIBBON_GROUP_CONTENT : (constants.RIBBON_GROUP_CONTENT + constants.SPACE + constants.RIBBON_CONTENT_HEIGHT),\n id: group.id + constants.CONTENT_ID\n });\n groupContent.classList.add(((alignType === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n groupContainer.appendChild(groupContent);\n if (this.activeLayout === 'Classic') {\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n }\n if (group.showLauncherIcon) {\n this.createLauncherIcon(group.id, groupContainer, tabIndex);\n }\n var elements = this.createCollection(group.collections, group.orientation, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer);\n append(elements, groupContent);\n var isItemsHidden = true;\n for (var j = 0; j < elements.length; j++) {\n if (isItemsHidden) {\n for (var k = 0; k < elements[parseInt(j.toString(), 10)].children.length; k++) {\n if (!(elements[parseInt(j.toString(), 10)].children[parseInt(k.toString(), 10)].classList.contains('e-hidden'))) {\n isItemsHidden = false;\n break;\n }\n }\n }\n }\n if (isItemsHidden) {\n groupEle.classList.add('e-hide-group');\n }\n if ((this.activeLayout === 'Simplified') && !(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (initialProps) {\n if (initialProps.hiddenGroups && initialProps.hiddenGroups.length) {\n this.updateGroupProps('hiddenGroups', initialProps, groupEle);\n }\n if (initialProps.disabledGroups && initialProps.disabledGroups.length) {\n this.updateGroupProps('disabledGroups', initialProps, groupEle);\n }\n }\n }\n if (this.initialPropsData[parseInt(tabIndex.toString(), 10)]) {\n delete this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n return groupElements;\n };\n Ribbon.prototype.updateGroupProps = function (key, initialProps, groupEle) {\n // eslint-disable-next-line\n var groupIndex = initialProps[key].indexOf(groupEle.id);\n if (groupIndex !== -1) {\n if (key === 'hiddenGroups') {\n groupEle.classList.add('e-hidden');\n }\n else {\n groupEle.classList.add('e-disabled');\n }\n }\n };\n Ribbon.prototype.validateItemSize = function () {\n for (var k = 0; k < this.tabs.length; k++) {\n var groupList = this.tabs[parseInt(k.toString(), 10)].groups;\n for (var l = 0; l < groupList.length; l++) {\n var collectionList = groupList[parseInt(l.toString(), 10)].collections;\n var alignType = groupList[parseInt(l.toString(), 10)].orientation;\n for (var i = 0; i < collectionList.length; i++) {\n var items = collectionList[parseInt(i.toString(), 10)].items;\n for (var j = 0; j < items.length; j++) {\n var ribbonitem = items[parseInt(j.toString(), 10)];\n if (!ribbonitem.allowedSizes || (ribbonitem.allowedSizes === 0)) {\n ribbonitem.setProperties({\n allowedSizes: (RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n }, true);\n }\n if ((ribbonitem.type === 'ColorPicker') && (ribbonitem.allowedSizes !== RibbonItemSize.Small)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Small }, true);\n }\n else if ((ribbonitem.type === 'ComboBox' || ribbonitem.type === 'CheckBox') &&\n (ribbonitem.allowedSizes !== RibbonItemSize.Medium)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Medium }, true);\n }\n else if (((alignType === 'Column') && (items.length > 1)) || ((alignType === 'Row') && (collectionList.length > 1))) {\n if (ribbonitem.allowedSizes & RibbonItemSize.Large) {\n // To remove large size, perform 'and' with 011(3).\n var sizeVal = ribbonitem.allowedSizes & (RibbonItemSize.Small | RibbonItemSize.Medium);\n sizeVal = sizeVal ? sizeVal : RibbonItemSize.Medium;\n ribbonitem.setProperties({ allowedSizes: sizeVal }, true);\n }\n }\n var itemsize = (ribbonitem.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (ribbonitem.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonitem.setProperties({ activeSize: itemsize }, true);\n }\n }\n }\n }\n };\n Ribbon.prototype.createCollection = function (collectionList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var collectionElements = [];\n for (var i = 0; i < collectionList.length; i++) {\n var collection = collectionList[parseInt(i.toString(), 10)];\n var collectionEle = this.createElement('div', {\n className: collection.cssClass,\n id: collection.id\n });\n collectionEle.classList.add(constants.RIBBON_COLLECTION);\n collectionEle.classList.add(((alignType !== 'Column') || (this.activeLayout === 'Simplified')) ?\n constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n collectionElements.push(collectionEle);\n var elements = this.createItems(collection.items, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer);\n append(elements, collectionEle);\n if ((alignType === 'Row') && (i === 2)) {\n break;\n }\n }\n return collectionElements;\n };\n Ribbon.prototype.createRibbonItem = function (item, itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.createButton(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.createDropDown(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.createSplitButton(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.createCheckBox(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.createColorPicker(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.createComboBox(item, itemEle);\n break;\n case 'Template':\n this.createTemplateContent(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.createGroupButton(item, itemEle);\n break;\n case 'Gallery':\n this.ribbonGalleryModule.createGallery(item, itemEle);\n break;\n }\n };\n Ribbon.prototype.createItems = function (itemList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var _a;\n var itemElements = [];\n for (var i = 0; i < itemList.length; i++) {\n var item = itemList[parseInt(i.toString(), 10)];\n //To stop rendering of items with simplified mode position type as none\n var flag = true;\n while (flag &&\n (((this.activeLayout === 'Simplified') && !(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) ||\n ((this.activeLayout === 'Classic') && !(item.displayOptions & DisplayMode.Classic)))) {\n i++;\n if (i < itemList.length) {\n item = itemList[parseInt(i.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var itemEle = this.createElement('div', {\n className: item.cssClass,\n id: item.id + constants.CONTAINER_ID\n });\n (_a = itemEle.classList).add.apply(_a, [constants.RIBBON_ITEM].concat((item.disabled ? [constants.DISABLED_CSS] : [])));\n // To avoid undefined items condition is added\n if (item.ribbonTooltipSettings && isTooltipPresent(item.ribbonTooltipSettings)) {\n itemEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemEle.id, data: item.ribbonTooltipSettings });\n }\n if (item.type === RibbonItemType.GroupButton) {\n for (var i_7 = 0; i_7 < item.groupButtonSettings.items.length; i_7++) {\n if (this.keyTipElements[parseInt(tabIndex.toString(), 10)] &&\n item.groupButtonSettings.items[parseInt(i_7.toString(), 10)].keyTip) {\n this.addKeyTip(tabIndex, item.groupButtonSettings.items[parseInt(i_7.toString(), 10)].keyTip, item.id + (constants.RIBBON_GROUP_BUTTON_ID + i_7), 'item');\n }\n }\n }\n if (item.keyTip) {\n if (item.type === RibbonItemType.Gallery) {\n this.addKeyTip(tabIndex, item.keyTip, (item.id + '_popupButton'), 'item');\n }\n else {\n this.addKeyTip(tabIndex, item.keyTip, item.id, 'item');\n }\n }\n var size = item.activeSize;\n if (!(item.type === RibbonItemType.Gallery)) {\n if (this.activeLayout === 'Simplified') {\n size = ((item.allowedSizes === RibbonItemSize.Large) || (item.allowedSizes & RibbonItemSize.Medium) ||\n (item.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemEle.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemEle.classList.add((size & RibbonItemSize.Medium) ? constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n }\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (initialProps && initialProps.hiddenItems && initialProps.hiddenItems.length) {\n var itemIndex = initialProps.hiddenItems.indexOf(item.id);\n if (itemIndex !== -1) {\n itemEle.classList.add('e-hidden');\n }\n }\n this.createRibbonItem(item, itemEle);\n if ((this.activeLayout === 'Simplified') && ((item.displayOptions === DisplayMode.Overflow) || (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)))) {\n this.createOverflowPopup(item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, isGroupOF, true);\n }\n }\n else {\n // For normal mode and Simplified mode position type as Group and Auto\n itemElements.push(itemEle);\n }\n if ((alignType === 'Column') && (i === 2)) {\n break;\n }\n }\n return itemElements;\n };\n Ribbon.prototype.createHelpPaneTemplate = function () {\n if (this.helpPaneTemplate) {\n var templateName = 'helpPaneTemplate';\n this.clearTemplate([templateName]);\n this.ribbonTempEle = this.createElement('div', {\n className: constants.RIBBON_HELP_TEMPLATE,\n id: this.element.id + constants.RIBBON_HELP_PANE_TEMPLATE_ID\n });\n var templateFunction = getTemplateFunction(this.helpPaneTemplate);\n append(templateFunction({}, this, templateName, 'helpPaneTemplate', this.isStringTemplate), this.ribbonTempEle);\n var tabEle = this.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n toolbarEle.after(this.ribbonTempEle);\n tabEle.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, this.ribbonTempEle.offsetWidth + 'px');\n this.renderReactTemplates();\n }\n };\n Ribbon.prototype.createTemplateContent = function (item, itemElement) {\n var itemEle = this.createElement('div', {\n className: item.cssClass ? (constants.RIBBON_TEMPLATE + constants.SPACE + item.cssClass) : constants.RIBBON_TEMPLATE,\n id: item.id,\n attrs: { 'tabindex': '-1' }\n });\n if (item.disabled) {\n itemEle.classList.add(constants.DISABLED_CSS);\n itemEle.setAttribute('disabled', '');\n }\n itemElement.appendChild(itemEle);\n this.renderItemTemplate(item, itemEle);\n };\n Ribbon.prototype.renderItemTemplate = function (item, itemElement) {\n var templateName = 'ribbon' + item.id + 'itemTemplate';\n this.clearTemplate([templateName]);\n var templateFunction = getTemplateFunction(item.itemTemplate);\n append(templateFunction({ activeSize: RibbonItemSize[item.activeSize] }, this, templateName, (item.id + 'itemTemplate'), this.isStringTemplate), itemElement);\n this.renderReactTemplates();\n };\n Ribbon.prototype.checkID = function (list, type, initId) {\n var key = type === 'tab' ? constants.TAB_ID : type === 'group' ? constants.GROUP_ID :\n type === 'collection' ? constants.COLLECTION_ID : constants.ITEM_ID;\n for (var i = 0; i < list.length; i++) {\n var listitem = list[parseInt(i.toString(), 10)];\n if (!listitem.id) {\n var htmlAttrID = void 0;\n if (type === 'item') {\n htmlAttrID = this.hasHtmlAtrrID(listitem);\n }\n listitem.setProperties({ id: htmlAttrID ? htmlAttrID : initId + key + (this.idIndex++) }, true);\n }\n switch (type) {\n case 'tab':\n listitem.setProperties({ groups: this.checkID(listitem.groups, 'group', listitem.id) }, true);\n break;\n case 'group':\n listitem.setProperties({ collections: this.checkID(listitem.collections, 'collection', listitem.id) }, true);\n break;\n case 'collection':\n listitem.setProperties({ items: this.checkID(listitem.items, 'item', listitem.id) }, true);\n break;\n default:\n break;\n }\n }\n return list;\n };\n Ribbon.prototype.hasHtmlAtrrID = function (listItem) {\n var id = '';\n if (listItem.buttonSettings.htmlAttributes.id) {\n id = listItem.buttonSettings.htmlAttributes.id;\n }\n else if (listItem.checkBoxSettings.htmlAttributes.id) {\n id = listItem.checkBoxSettings.htmlAttributes.id;\n }\n else if (listItem.colorPickerSettings.htmlAttributes.id) {\n id = listItem.colorPickerSettings.htmlAttributes.id;\n }\n else if (listItem.comboBoxSettings.htmlAttributes.id) {\n id = listItem.comboBoxSettings.htmlAttributes.id;\n }\n else if (listItem.dropDownSettings.htmlAttributes.id) {\n id = listItem.dropDownSettings.htmlAttributes.id;\n }\n else if (listItem.splitButtonSettings.htmlAttributes.id) {\n id = listItem.splitButtonSettings.htmlAttributes.id;\n }\n return id;\n };\n Ribbon.prototype.updateCommonProperty = function (commonProp) {\n this.tabObj.setProperties(commonProp);\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.setCommonProperties(commonProp);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.setCommonProperties(commonProp);\n }\n for (var i = 0; i < this.tabs.length; i++) {\n var tab = this.tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n if (contentEle.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n if (dropdown) {\n updateTooltipProp(dropdown.target, commonProp);\n dropdown.setProperties(commonProp);\n }\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : item.type === RibbonItemType.GroupButton ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id);\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n if (item.type === 'DropDown') {\n this.updatePopupItems(item, dropdown.target, group.enableGroupOverflow, true);\n }\n }\n }\n if (ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName !== 'template') {\n if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i_8 = 0; i_8 < item.groupButtonSettings.items.length; i_8++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_8);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateCommonProperty(ele, 'dropdown-btn', commonProp);\n for (var i_9 = 0; i_9 < item.groupButtonSettings.items.length; i_9++) {\n var btnEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_9);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else {\n updateCommonProperty(ele, moduleName, commonProp);\n }\n }\n else if (!isNullOrUndefined(commonProp.enableRtl)) {\n ele.classList.toggle(constants.RTL_CSS, commonProp.enableRtl);\n }\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.removeLauncherIcon = function (groupId, dropdownElement, contentEle) {\n var containerId = groupId + constants.CONTAINER_ID;\n var containerEle = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, containerId) : contentEle.querySelector('#' + containerId);\n if (containerEle) {\n containerEle.classList.remove(constants.RIBBON_LAUNCHER);\n var launcherIcon = containerEle.querySelector('#' + groupId + constants.LAUNCHER_ID);\n remove(launcherIcon);\n }\n };\n Ribbon.prototype.destroyTabItems = function (tabs) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n if (group.showLauncherIcon) {\n this.removeLauncherIcon(group.id, dropdownElement, contentEle);\n }\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) :\n contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id +\n constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (item.type === RibbonItemType.Gallery) {\n ele = contentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + item.id) : null;\n if (item.type === RibbonItemType.Gallery) {\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id + constants.CONTAINER_ID) : null;\n }\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown ? dropdown.target.querySelector('#' + item.id) : null;\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if ((this.activeLayout === RibbonLayout.Classic) && dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n else if ((this.activeLayout === RibbonLayout.Simplified) && group.enableGroupOverflow && dropdownElement) {\n this.removeOverflowButton(dropdown);\n }\n }\n }\n if (this.overflowDDB) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.destroyFunction = function (item, ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName === 'colorpicker') {\n this.ribbonColorPickerModule.unwireColorPickerEvents(ele);\n }\n else if (moduleName === 'group-btn') {\n if (this.activeLayout === 'Classic') {\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (btnEle) {\n destroyControl(btnEle, 'btn');\n }\n }\n }\n else {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n var _loop_4 = function (i) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings) {\n var groupButtonID_1 = item.id + constants.RIBBON_GROUP_BUTTON_ID + i;\n var index = getIndex(this_4.tooltipData, function (e) { return e.id === groupButtonID_1; });\n if (index !== -1) {\n this_4.tooltipData.splice(index, 1);\n }\n }\n };\n var this_4 = this;\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n _loop_4(i);\n }\n }\n else if (moduleName === 'gallery') {\n if (ele.closest('.e-ribbon-overflow-target')) {\n destroyControl(ele, 'dropdown-btn');\n var galleryPopupEle = Array.prototype.slice.call(document.querySelectorAll('#' + item.id + '_galleryPopup'));\n galleryPopupEle.concat(Array.prototype.slice.call(document.querySelectorAll('#' + item.id + '-popup')));\n for (var i = 0; i < galleryPopupEle.length; i++) {\n galleryPopupEle[parseInt(i.toString(), 10)].remove();\n }\n var galleryPopupBtn = document.querySelector('#' + item.id + '_popupButton');\n if (galleryPopupBtn) {\n galleryPopupBtn.remove();\n }\n var galleryWrapper = document.querySelector('#' + item.id + '_galleryWrapper');\n if (galleryWrapper) {\n galleryWrapper.remove();\n }\n }\n else {\n var galleryEle = ele.querySelectorAll('.e-ribbon-gallery-item');\n var galleryPopupBtn = ele.parentElement.querySelector('#' + item.id + '_popupButton');\n if (galleryPopupBtn) {\n galleryPopupBtn.remove();\n }\n for (var i = 0; i < galleryEle.length; i++) {\n galleryEle[parseInt(i.toString(), 10)].remove();\n }\n var galleryPopupEle = document.querySelectorAll('#' + item.id + '_galleryPopup');\n for (var i = 0; i < galleryPopupEle.length; i++) {\n galleryPopupEle[parseInt(i.toString(), 10)].remove();\n }\n }\n }\n else if (moduleName !== 'template') {\n destroyControl(ele, moduleName);\n }\n if (item.ribbonTooltipSettings) {\n var index = getIndex(this.tooltipData, function (e) { return e.id === item.id + constants.CONTAINER_ID; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n }\n if (item.type === 'GroupButton') {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n };\n /**\n * Gets the item module name.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n Ribbon.prototype.getItemModuleName = function (item) {\n switch (item.type) {\n case 'Button':\n return 'btn';\n case 'DropDown':\n return 'dropdown-btn';\n case 'SplitButton':\n return 'split-btn';\n case 'CheckBox':\n return 'checkbox';\n case 'ColorPicker':\n return 'colorpicker';\n case 'ComboBox':\n return 'combobox';\n case 'GroupButton':\n return 'group-btn';\n case 'Gallery':\n return 'gallery';\n default:\n return 'template';\n }\n };\n Ribbon.prototype.clearOverflowResize = function () {\n this.destroyScroll();\n this.clearOverflowDropDown(this.selectedTab);\n var tab = this.tabs[this.selectedTab];\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n for (var j = 0; (j < tab.groups.length); j++) {\n this.checkSmallToMedium(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n this.checkMediumToLarge(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n }\n };\n /**\n * Refreshes the layout.\n *\n * @returns {void}\n */\n Ribbon.prototype.refreshLayout = function () {\n this.resizeHandler();\n };\n /**\n * Selects the tab\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.selectTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n this.setProperties({ selectedTab: index });\n };\n /**\n * Shows a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be shown.\n * @param {boolean} isContextual - The boolean if the rendering is contextual.\n * @returns {void}\n */\n Ribbon.prototype.showTab = function (tabId, isContextual) {\n if (isContextual === void 0) { isContextual = false; }\n this.showHideTab(tabId, false, isContextual);\n };\n /**\n * Hides a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be hidden.\n * @param {boolean} isContextual - The boolean if the rendering is contextual.\n * @returns {void}\n */\n Ribbon.prototype.hideTab = function (tabId, isContextual) {\n if (isContextual === void 0) { isContextual = false; }\n this.showHideTab(tabId, true, isContextual);\n };\n Ribbon.prototype.showHideTab = function (tabId, value, isContextual) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n this.tabObj.hideTab(index, value);\n if (isContextual) {\n var contextualTab_1;\n var tabEle = this.tabObj.element;\n for (var i = 0; i < this.contextualTabs.length; i++) {\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (tabId === this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id) {\n contextualTab_1 = this.contextualTabs[parseInt(i.toString(), 10)];\n }\n }\n }\n if (contextualTab_1) {\n var isTabHidden = true;\n var _loop_5 = function (i) {\n var index_1 = getIndex(this_5.tabs, function (e) {\n return e.id === contextualTab_1.tabs[parseInt(i.toString(), 10)].id;\n });\n if (index_1 !== -1) {\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(index_1.toString(), 10)];\n if (!(toolbarEle.classList.contains('e-hidden'))) {\n isTabHidden = false;\n }\n }\n };\n var this_5 = this;\n for (var i = 0; i < contextualTab_1.tabs.length; i++) {\n _loop_5(i);\n }\n if (isTabHidden) {\n contextualTab_1.setProperties({ visible: false }, true);\n }\n else {\n contextualTab_1.setProperties({ visible: true }, true);\n }\n }\n }\n };\n /**\n * Enables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableTab = function (tabId) {\n this.enableDisableTab(tabId, true);\n };\n /**\n * Disables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableTab = function (tabId) {\n this.enableDisableTab(tabId, false);\n };\n Ribbon.prototype.enableDisableTab = function (tabId, value) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var tbItems = this.tabObj.items[parseInt(index.toString(), 10)].content;\n this.tabObj.element.querySelector('#' + tabId + constants.HEADER_ID).classList[value ? 'remove' : 'add']('e-disabled');\n tbItems.classList[value ? 'remove' : 'add']('e-disabled');\n this.tabObj.enableTab(index, value);\n };\n /**\n * Adds the ribbon tab.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model\n * @param {string} targetId - Gets the ID of the target tab to add the new tab.\n * @param {boolean} isAfter - Defines whether the tab is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addTab = function (tab, targetId, isAfter) {\n var index = targetId ? getIndex(this.tabs, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? this.tabs.length : (index + (isAfter ? 1 : 0));\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 0, tab);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.checkID([this.tabs[parseInt(index.toString(), 10)]], 'tab', this.element.id);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItem = this.createTabItems([tab]);\n this.tabObj.addTab(tabItem, index);\n };\n /**\n * Removes the ribbon tab.\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.removeTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n if (groups && (contentEle.innerHTML !== '')) {\n for (var _i = 0, groups_2 = groups; _i < groups_2.length; _i++) {\n var group = groups_2[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id +\n constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 1);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.tabObj.removeTab(index);\n };\n /**\n * Adds the ribbon group.\n *\n * @param {string} tabId - Gets the tab ID.\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @param {string} targetId - Gets the ID of the target group to add the new group.\n * @param {boolean} isAfter - Defines whether the group is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addGroup = function (tabId, group, targetId, isAfter) {\n var tabIndex = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (tabIndex === -1) {\n return;\n }\n if (this.selectedTab === tabIndex) {\n this.clearOverflowResize();\n }\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var ribbonGroups = tab.groups.slice();\n var index = targetId ? getIndex(ribbonGroups, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonGroups.length : (index + (isAfter ? 1 : 0));\n ribbonGroups.splice(index, 0, group);\n tab.setProperties({ groups: ribbonGroups }, true);\n this.checkID([tab.groups[parseInt(index.toString(), 10)]], 'group', tabId);\n this.validateItemSize();\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var element = this.createGroups([tab.groups[parseInt(index.toString(), 10)]], tabIndex)[0];\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.append(element);\n }\n }\n if (this.selectedTab === tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon group.\n *\n * @param {string} groupId -Gets the group ID.\n * @returns {void}\n */\n Ribbon.prototype.removeGroup = function (groupId) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount\n === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n var groupEle = contentEle.querySelector('#' + groupId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroups = this.tabs[itemProp.tabIndex].groups.slice();\n ribbonGroups.splice(itemProp.groupIndex, 1);\n this.tabs[itemProp.tabIndex].setProperties({ groups: ribbonGroups }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n Ribbon.prototype.isHeaderVisible = function (headerEle, groupID) {\n return headerEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID) ? true : false;\n };\n /**\n * Hides a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideGroup = function (groupID) {\n this.showHideGroup(groupID, true);\n };\n /**\n * Shows a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showGroup = function (groupID) {\n this.showHideGroup(groupID, false);\n };\n Ribbon.prototype.showHideGroup = function (groupID, isHidden) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n if (groupEle) {\n this.updateHiddenElements(itemProp.tabIndex, isHidden ? 'hideGroup' : 'showGroup', groupID, isHidden, groupEle);\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, groupID, 'hiddenGroups', isHidden);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n if (isHidden) {\n overflowtarget.classList.add('e-hidden');\n }\n else {\n overflowtarget.classList.remove('e-hidden');\n }\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n if (isHidden) {\n grpContainer.classList.add('e-hidden');\n }\n else {\n grpContainer.classList.remove('e-hidden');\n }\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n Ribbon.prototype.updateHiddenElements = function (tabIndex, key, id, isHidden, element, group) {\n if (isHidden) {\n if (!(element.classList.contains('e-hidden'))) {\n this.checkHiddenElements(key, id, tabIndex);\n element.classList.add('e-hidden');\n if (key === 'hideItem') {\n this.checkHiddenItems(group, isHidden, tabIndex);\n }\n this.calculateHiddenElementsWidth(tabIndex);\n }\n }\n else {\n if (element.classList.contains('e-hidden')) {\n this.checkHiddenElements(key, id, tabIndex);\n element.classList.remove('e-hidden');\n this.calculateHiddenElementsWidth(tabIndex);\n if (key === 'showItem') {\n this.checkHiddenItems(group, isHidden, tabIndex);\n }\n }\n }\n };\n Ribbon.prototype.checkHiddenElements = function (key, id, tabIndex) {\n if (this.activeLayout === 'Simplified') {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (!hiddenProps) {\n this.hiddenElements[parseInt(tabIndex.toString(), 10)] = {};\n hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n }\n if (hiddenProps) {\n if (!hiddenProps[\"\" + key]) {\n hiddenProps[\"\" + key] = [];\n }\n if (hiddenProps[\"\" + key].length) {\n var index = hiddenProps[\"\" + key].indexOf(id);\n if (index === -1) {\n hiddenProps[\"\" + key].push(id);\n }\n }\n else {\n hiddenProps[\"\" + key].push(id);\n }\n }\n }\n };\n Ribbon.prototype.updateItemsSimplifiedWidth = function (tabIndex, key) {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (hiddenProps && hiddenProps[\"\" + key] && hiddenProps[\"\" + key].length) {\n var _loop_6 = function (i) {\n var contentEle = this_6.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var hiddenEle;\n var groupEle = void 0;\n var isGroupHidden = false;\n var widthDifference = 0;\n if (key === 'hideGroup' || key === 'showGroup') {\n hiddenEle = contentEle.querySelector('#' + hiddenProps[\"\" + key][parseInt(i.toString(), 10)]);\n }\n else {\n hiddenEle = contentEle.querySelector('#' + hiddenProps[\"\" + key][parseInt(i.toString(), 10)] + constants.CONTAINER_ID);\n }\n if (hiddenEle) {\n if (key === 'hideGroup' || key === 'hideItem') {\n var isHidden = false;\n if (hiddenEle.classList.contains('e-hidden')) {\n isHidden = true;\n hiddenEle.classList.remove('e-hidden');\n }\n if (key === 'hideItem') {\n groupEle = hiddenEle.closest('.e-ribbon-group');\n if (groupEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n widthDifference = this_6.checkWidthDifference(hiddenEle, groupEle);\n }\n }\n this_6.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, true, tabIndex);\n this_6.calculateMediumDataWidth(hiddenEle.offsetWidth + widthDifference, tabIndex, true);\n if (isHidden) {\n hiddenEle.classList.add('e-hidden');\n }\n }\n else {\n if (key === 'showItem') {\n groupEle = hiddenEle.closest('.e-ribbon-group');\n if (groupEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n if (this_6.hiddenGroups.indexOf(groupEle.id) !== -1) {\n this_6.hiddenGroups.splice(this_6.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n else {\n if (this_6.hiddenGroups.indexOf(groupEle.id) !== -1) {\n var hiddenItems = groupEle.querySelectorAll('.e-ribbon-item:not(.e-hidden)');\n hiddenItems.forEach(function (item) {\n if (item.id !== hiddenEle.id) {\n item.classList.add('e-hidden');\n }\n });\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n hiddenItems.forEach(function (item) {\n if (item.id !== hiddenEle.id) {\n item.classList.remove('e-hidden');\n }\n });\n this_6.hiddenGroups.splice(this_6.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n }\n this_6.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, false, tabIndex);\n this_6.calculateMediumDataWidth(hiddenEle.offsetWidth + widthDifference, tabIndex, false);\n }\n if (isGroupHidden) {\n groupEle.classList.add('e-hide-group');\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n var index = hiddenProps[\"\" + key].indexOf(hiddenProps[\"\" + key][parseInt(i.toString(), 10)]);\n if (index !== -1) {\n hiddenProps[\"\" + key].splice(index, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_6 = this, out_i_1;\n for (var i = 0; i < hiddenProps[\"\" + key].length; i++) {\n _loop_6(i);\n i = out_i_1;\n }\n }\n };\n Ribbon.prototype.checkWidthDifference = function (hiddenEle, groupEle) {\n var widthDifference = 0;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n if (this.hiddenGroups.length) {\n if (this.hiddenGroups.indexOf(groupEle.id) === -1) {\n this.hiddenGroups.push(groupEle.id);\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n }\n }\n else {\n this.hiddenGroups.push(groupEle.id);\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n }\n return widthDifference;\n };\n Ribbon.prototype.calculateHiddenElementsWidth = function (tabIndex) {\n if (tabIndex === this.selectedTab && this.activeLayout === 'Simplified') {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (hiddenProps) {\n for (var i = 0; i < Object.keys(hiddenProps).length; i++) {\n this.updateItemsSimplifiedWidth(tabIndex, Object.keys(hiddenProps)[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n Ribbon.prototype.calculateMediumDataWidth = function (hiddenWidth, tabIndex, isHidden) {\n if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var mediumDataItems = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-item'));\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n var selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n for (var i = 0; i < overflowItems.length; i++) {\n var ofTab = overflowItems[parseInt(i.toString(), 10)].closest('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (selectedOFTab && ofTab && selectedOFTab.id === ofTab.id && overflowItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {\n mediumDataItems.push(overflowItems[parseInt(i.toString(), 10)]);\n }\n }\n }\n var groupOFButton = activeContent.querySelectorAll('.e-ribbon-group-of-btn');\n for (var i = 0; i < groupOFButton.length; i++) {\n var overflowButton = getInstance(groupOFButton[parseInt(i.toString(), 10)], DropDownButton);\n var overflowBtnTarget = overflowButton.target;\n var overflowItems = overflowBtnTarget.querySelectorAll('.e-ribbon-item');\n for (var i_10 = 0; i_10 < overflowItems.length; i_10++) {\n if (overflowItems[parseInt(i_10.toString(), 10)].hasAttribute('data-medium-width')) {\n mediumDataItems.push(overflowItems[parseInt(i_10.toString(), 10)]);\n }\n }\n }\n for (var i = 0; i < mediumDataItems.length; i++) {\n if (mediumDataItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {\n var previousWidth = parseInt(mediumDataItems[parseInt(i.toString(), 10)].getAttribute('data-medium-width'), 10);\n mediumDataItems[parseInt(i.toString(), 10)].setAttribute('data-medium-width', isHidden ? (previousWidth - hiddenWidth).toString() : (previousWidth + hiddenWidth).toString());\n }\n }\n }\n };\n Ribbon.prototype.calculateOverflowItemsWidth = function (hiddenItem, isHidden, tabIndex) {\n if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n if (group.enableGroupOverflow) {\n var groupContainer = document.querySelector('#' + group.id);\n var overflowButton = void 0;\n var overflowDDB = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDB) {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n if (overflowButton) {\n var overflowEle = overflowButton.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n for (var i_11 = 0; i_11 < overflowItems.length; i_11++) {\n var previousWidth = parseInt(overflowItems[parseInt(i_11.toString(), 10)].getAttribute('data-simplified-width'), 10);\n if (previousWidth) {\n overflowItems[parseInt(i_11.toString(), 10)].setAttribute('data-simplified-width', isHidden ? (previousWidth - hiddenItem).toString() : (previousWidth + hiddenItem).toString());\n }\n }\n }\n }\n }\n }\n if (this.overflowDDB) {\n var selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n var overflowEle = this.overflowDDB.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n for (var i = 0; i < overflowItems.length; i++) {\n var ofTab = overflowItems[parseInt(i.toString(), 10)].closest('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (selectedOFTab && ofTab && selectedOFTab.id === ofTab.id) {\n var previousWidth = parseInt(overflowItems[parseInt(i.toString(), 10)].getAttribute('data-simplified-width'), 10);\n if (previousWidth) {\n overflowItems[parseInt(i.toString(), 10)].setAttribute('data-simplified-width', isHidden ? (previousWidth - hiddenItem).toString() : (previousWidth + hiddenItem).toString());\n }\n }\n }\n }\n };\n /**\n * Disables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableGroup = function (groupID) {\n this.enableDisableGroup(groupID, true);\n };\n /**\n * Enables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableGroup = function (groupID) {\n this.enableDisableGroup(groupID, false);\n };\n Ribbon.prototype.enableDisableGroup = function (groupID, isDisabled) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n if (groupEle) {\n if (isDisabled) {\n groupEle.classList.add('e-disabled');\n }\n else {\n groupEle.classList.remove('e-disabled');\n }\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, groupID, 'disabledGroups', isDisabled);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n if (isDisabled) {\n overflowtarget.classList.add('e-disabled');\n }\n else {\n overflowtarget.classList.remove('e-disabled');\n }\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n if (isDisabled) {\n grpContainer.classList.add('e-disabled');\n }\n else {\n grpContainer.classList.remove('e-disabled');\n }\n }\n }\n }\n };\n /**\n * adds the ribbon collection.\n *\n * @param {string} groupId - Gets the ribbon group ID.\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @param {string} targetId - Gets the ID of the target collection to add the new collection.\n * @param {boolean} isAfter - Defines whether the collection is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addCollection = function (groupId, collection, targetId, isAfter) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Row') && (itemProp.group.collections.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonCollections = itemProp.group.collections.slice();\n var index = targetId ? getIndex(ribbonCollections, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonCollections.length : (index + (isAfter ? 1 : 0));\n ribbonCollections.splice(index, 0, collection);\n itemProp.group.setProperties({ collections: ribbonCollections }, true);\n this.checkID([itemProp.group.collections[parseInt(index.toString(), 10)]], 'collection', groupId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var collection_1 = itemProp.group.collections[parseInt(index.toString(), 10)];\n var element = this.createCollection([collection_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.querySelector('#' + groupId + constants.CONTENT_ID).append(element);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon collection.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @returns {void}\n */\n Ribbon.prototype.removeCollection = function (collectionId) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n var groupEle = contentEle.querySelector('#' + collectionId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroup = itemProp.group;\n var ribbonCollections = ribbonGroup.collections.slice();\n ribbonCollections.splice(itemProp.collectionIndex, 1);\n ribbonGroup.setProperties({ collections: ribbonCollections }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Adds ribbon item.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {string} targetId - Gets the ID of the target item to add the new item.\n * @param {boolean} isAfter - Defines whether the item is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addItem = function (collectionId, item, targetId, isAfter) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Column') && (itemProp.collection.items.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonItems = itemProp.collection.items.slice();\n var index = targetId ? getIndex(ribbonItems, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonItems.length : (index + (isAfter ? 1 : 0));\n ribbonItems.splice(index, 0, item);\n itemProp.collection.setProperties({ items: ribbonItems }, true);\n this.checkID([itemProp.collection.items[parseInt(index.toString(), 10)]], 'item', collectionId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (contentEle.innerHTML !== '') {\n var item_1 = itemProp.collection.items[parseInt(index.toString(), 10)];\n var element = this.createItems([item_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.closest('.' + constants.RIBBON_ITEM).insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n if (element) {\n contentEle.querySelector('#' + collectionId).append(element);\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.removeItem = function (itemId) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n var item = itemProp.item;\n this.removeItemElement(contentEle, item, dropdown);\n }\n var ribbonCollection = itemProp.collection;\n var ribbonItems = ribbonCollection.items;\n ribbonItems.splice(itemProp.itemIndex, 1);\n ribbonCollection.setProperties({ items: ribbonItems }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Hides a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideItem = function (itemId) {\n this.showHideItem(itemId, true);\n };\n /**\n * Shows a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showItem = function (itemId) {\n this.showHideItem(itemId, false);\n };\n Ribbon.prototype.showHideItem = function (itemId, isHidden) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n this.updateHiddenElements(itemProp.tabIndex, isHidden ? 'hideItem' : 'showItem', itemId, isHidden, itemEle, itemProp.group);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, itemId, 'hiddenItems', isHidden);\n }\n };\n Ribbon.prototype.updateInitialProps = function (tabIndex, id, key, isInsert) {\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (!initialProps) {\n this.initialPropsData[parseInt(tabIndex.toString(), 10)] = {};\n initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n if (initialProps) {\n if (!initialProps[\"\" + key]) {\n initialProps[\"\" + key] = [];\n }\n var itemIndex = initialProps[\"\" + key].indexOf(id);\n if (isInsert) {\n if (itemIndex === -1) {\n initialProps[\"\" + key].push(id);\n }\n }\n else {\n if (itemIndex !== -1) {\n initialProps[\"\" + key].splice(itemIndex, 1);\n }\n if (initialProps[\"\" + key].length === 0) {\n delete initialProps[\"\" + key];\n }\n if (Object.keys(initialProps).length === 0) {\n delete this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n }\n }\n };\n Ribbon.prototype.checkHiddenItems = function (group, isHidden, tabIndex) {\n var isItemsHidden = true;\n var isEmptyCollection;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var groupEle = contentEle.querySelector('#' + group.id);\n if (isHidden) {\n for (var i = 0; i < group.collections.length; i++) {\n if (isItemsHidden) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n for (var j = 0; j < collection.items.length; j++) {\n var item = collection.items[parseInt(j.toString(), 10)];\n var itemEle = void 0;\n if (item.type === 'GroupButton') {\n var itemProp = getItem(this.tabs, item.id);\n itemEle = getItemElement(this, item.id + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n itemEle = getItemElement(this, item.id);\n }\n var itemContainer = itemEle ? itemEle.closest('.e-ribbon-item') : null;\n if (!(itemContainer.classList.contains('e-hidden'))) {\n isItemsHidden = false;\n break;\n }\n }\n }\n }\n if (isItemsHidden) {\n groupEle.classList.add('e-hide-group');\n this.checkOverflowItems(isHidden, contentEle, group.enableGroupOverflow, tabIndex, group.id);\n }\n }\n else {\n groupEle.classList.remove('e-hide-group');\n this.checkOverflowItems(isHidden, contentEle, group.enableGroupOverflow, tabIndex, group.id);\n }\n if (this.activeLayout === 'Simplified' && !group.enableGroupOverflow) {\n var itemsLength = groupEle.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n groupEle.classList[isEmptyCollection ? 'add' : 'remove']('e-ribbon-emptyCollection');\n }\n }\n };\n Ribbon.prototype.checkOverflowItems = function (isHidden, contentEle, isGroupOF, tabIndex, groupID) {\n var overflowDDB;\n var overflowtarget;\n if (isGroupOF) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n if (isHidden) {\n overflowtarget.classList.add('e-hide-group');\n }\n else {\n overflowtarget.classList.remove('e-hide-group');\n }\n }\n }\n else {\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n if (isHidden) {\n grpContainer.classList.add('e-hide-group');\n }\n else {\n grpContainer.classList.remove('e-hide-group');\n }\n }\n }\n }\n }\n };\n /**\n * tab - Gets the ribbon tab to be updated. The id of the tab is a required property. Other properties are optional.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model.\n * @returns {void}\n */\n Ribbon.prototype.updateTab = function (tab) {\n var tabId = tab.id;\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n if (groups && (contentEle.innerHTML !== '')) {\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabs[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n }\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _i = 0, groups_3 = groups; _i < groups_3.length; _i++) {\n var group = groups_3[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id +\n constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML === '') {\n // Check whether group is passed by the user and sets the updated values.\n if (tab.groups) {\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n if (this.selectedTab === index) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (tab.cssClass) {\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n tabEle.querySelector('#' + tabId + constants.HEADER_ID).innerText = ribbonTab.header;\n }\n }\n };\n /**\n * group - Gets the ribbon group to be updated. The id of the group is a required property. Other properties are optional.\n *\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @returns {void}\n */\n Ribbon.prototype.updateGroup = function (group) {\n var groupId = group.id;\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var dropdownElement;\n var dropdown;\n if (contentEle.innerHTML !== '') {\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (group.cssClass) {\n if (itemProp.group.cssClass) {\n groupEle.classList.remove(itemProp.group.cssClass);\n if (groupContainer) {\n groupContainer.classList.remove(itemProp.group.cssClass);\n }\n }\n }\n // Check whether collections or orientation is passed by the user, and if it is, then remove the old values.\n if (group.collections || group.orientation) {\n if (itemProp.group.collections || itemProp.group.orientation) {\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n var collectionElements = groupEle.querySelectorAll('.e-ribbon-collection');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n collectionElements.forEach(function (collectionEle) { collectionEle.remove(); });\n if (group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n var removeCss = groupContent.classList.value.match(/(e-ribbon-[column|row]+)/g);\n if (removeCss) {\n removeClass([groupContent], removeCss);\n }\n }\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount\n === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n }\n var ribbongroup = itemProp.group;\n ribbongroup.setProperties(group, true);\n ribbongroup.setProperties({ collections: this.checkID(ribbongroup.collections, 'collection', ribbongroup.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n // Check whether showLauncherIcon or orientation is passed by the user and sets the updated values.\n if (group.showLauncherIcon) {\n this.createLauncherIcon(ribbongroup.id, groupContainer, itemProp.tabIndex);\n }\n // Check whether collections or orientation is passed by the user and sets the updated values.\n if (group.collections || group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n groupContent.classList.add(((ribbongroup.orientation === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n var elements = this.createCollection(ribbongroup.collections, ribbongroup.orientation, ribbongroup.id, ribbongroup.header, ribbongroup.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, groupContent);\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (group.cssClass) {\n groupEle.classList.add(ribbongroup.cssClass);\n if (groupContainer) {\n groupContainer.classList.add(ribbongroup.cssClass);\n }\n }\n // Check whether header is passed by the user and sets the updated values.\n if (group.header) {\n if (this.activeLayout === RibbonLayout.Simplified && !group.enableGroupOverflow) {\n var overflowHeader = dropdown.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n else if (this.activeLayout === RibbonLayout.Classic && !ribbongroup.isCollapsed) {\n groupEle.querySelector('.e-ribbon-group-header').innerText = ribbongroup.header;\n }\n else if (this.activeLayout === RibbonLayout.Classic && ribbongroup.isCollapsed) {\n var overflowEle = groupEle.querySelector('#' + ribbongroup.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n // need to set instance for dropdown\n var dropDownBtn = getInstance(overflowEle, DropDownButton);\n var overflowHeader = dropDownBtn.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n }\n }\n };\n /**\n * collection - Gets the ribbon collection to be updated. The id of the collection is a required property. Other properties are optional.\n *\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @returns {void}\n */\n Ribbon.prototype.updateCollection = function (collection) {\n var collectionId = collection.id;\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var collectionEle = contentEle.querySelector('#' + collectionId);\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (collection.cssClass) {\n if (itemProp.collection.cssClass) {\n collectionEle.classList.remove(itemProp.collection.cssClass);\n }\n }\n if (collection.items) {\n if (itemProp.collection.items) {\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n }\n }\n var ribboncollection = itemProp.collection;\n ribboncollection.setProperties(collection, true);\n ribboncollection.setProperties({ items: this.checkID(ribboncollection.items, 'item', ribboncollection.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n if (collection.items) {\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var elements = this.createItems(ribboncollection.items, itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, collectionEle);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (collection.cssClass) {\n collectionEle.classList.add(ribboncollection.cssClass);\n }\n };\n /**\n * item - Gets the ribbon item to be updated. The id of the item is a required property. Other properties are optional.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n */\n Ribbon.prototype.updateItem = function (item) {\n var itemId = item.id;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + itemProp.group.id);\n if (groupEle) {\n var groupContainer = groupEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var itemContainer = null;\n var itemEle = null;\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (contentEle.innerHTML !== '') {\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n if (this.activeLayout === RibbonLayout.Simplified && itemProp.item.displayOptions === DisplayMode.Overflow) {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = dropdown.target.querySelector('#' + itemId);\n if (item.displayOptions && item.displayOptions !== DisplayMode.Overflow) {\n var collectionEle = groupContainer.querySelector('#' + itemProp.collection.id);\n if (collectionEle) {\n collectionEle.appendChild(itemContainer);\n }\n }\n }\n else {\n itemContainer = groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = contentEle.querySelector('#' + itemId);\n if (!itemContainer) {\n itemContainer = dropdown ? dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID) : groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n }\n if (!itemEle) {\n itemEle = dropdown ? dropdown.target.querySelector('#' + itemId) : contentEle.querySelector('#' + itemId);\n }\n if (itemProp.item.type === 'Gallery') {\n if (!itemEle) {\n itemEle = contentEle.querySelector('#' + itemId + '_galleryWrapper');\n }\n }\n if (itemProp.item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Classic) {\n itemEle = contentEle.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (this.activeLayout === RibbonLayout.Simplified && item.displayOptions === DisplayMode.Overflow) {\n this.createOverflowPopup(itemProp.item, itemProp.tabIndex, itemProp.group.enableGroupOverflow, itemProp.group.id, itemProp.group.header, itemContainer, groupContainer);\n if ((itemProp.item.type === RibbonItemType.DropDown) || (itemProp.item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(itemProp.item, itemContainer, itemProp.group.enableGroupOverflow, true);\n }\n }\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (item.cssClass) {\n if (itemProp.item.cssClass) {\n itemContainer.classList.remove(itemProp.item.cssClass);\n }\n }\n this.destroyFunction(itemProp.item, itemEle);\n itemEle.remove();\n var removeCss = itemContainer.classList.value.match(/(e-ribbon-[large|medium|small]+-item)/g);\n if (removeCss) {\n removeClass([itemContainer], removeCss);\n }\n }\n var ribbonItem = itemProp.item;\n ribbonItem.setProperties(item, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n // To avoid undefined items condition is added\n if (ribbonItem.ribbonTooltipSettings && isTooltipPresent(ribbonItem.ribbonTooltipSettings)) {\n itemContainer.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemContainer.id, data: ribbonItem.ribbonTooltipSettings });\n }\n var size = ribbonItem.activeSize;\n if (this.activeLayout === 'Simplified') {\n size = ((ribbonItem.allowedSizes === RibbonItemSize.Large) || (ribbonItem.allowedSizes & RibbonItemSize.Medium) ||\n (ribbonItem.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonItem.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n if (size & RibbonItemSize.Medium) {\n itemContainer.classList.add(constants.RIBBON_MEDIUM_ITEM);\n }\n else {\n itemContainer.classList.add(constants.RIBBON_SMALL_ITEM);\n }\n }\n this.createRibbonItem(ribbonItem, itemContainer);\n if (itemProp.item.type === 'Gallery' && document.querySelector('#' + itemId + '_container').closest('.e-ribbon-overflow-target') && item.displayOptions !== DisplayMode.Overflow) {\n this.createOverflowPopup(itemProp.item, itemProp.tabIndex, itemProp.group.enableGroupOverflow, itemProp.group.id, itemProp.group.header, itemContainer, groupContainer);\n }\n if (this.activeLayout === 'Simplified' && itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 ||\n (dropdown.target.childElementCount === 1 &&\n this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n if (item.cssClass) {\n itemContainer.classList.add(ribbonItem.cssClass);\n }\n if (!(ribbonItem.disabled) && itemContainer.classList.contains(constants.DISABLED_CSS)) {\n itemContainer.classList.remove(constants.DISABLED_CSS);\n }\n this.enableDisableItem(ribbonItem.id, ribbonItem.disabled);\n }\n }\n else {\n this.isUpdateItems = true;\n this.itemsModel.push(item);\n this.targetTabs[item.id] = itemProp.tabIndex;\n }\n };\n Ribbon.prototype.removeItemElement = function (contentEle, item, dropdown) {\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id) : null;\n if (item.type === 'GroupButton') {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n if (item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Simplified) {\n document.getElementById(item.id + constants.CONTAINER_ID).remove();\n }\n else {\n ele.closest('#' + item.id + constants.CONTAINER_ID).remove();\n }\n }\n };\n /**\n * Enables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.enableItem = function (itemId) {\n this.enableDisableItem(itemId, false);\n };\n /**\n * Disables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.disableItem = function (itemId) {\n this.enableDisableItem(itemId, true);\n };\n /**\n * Gets the Ribbon item model associated with the specified item ID.\n *\n * @param {string} itemId - The unique ID of the Ribbon item.\n * @returns {RibbonItemModel} - Returns the Ribbon item model.\n */\n Ribbon.prototype.getItem = function (itemId) {\n return getItem(this.tabs, itemId).item;\n };\n Ribbon.prototype.enableDisableItem = function (itemId, isDisabled) {\n var isUpdated = false;\n var isOverflow = false;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n itemProp.item.setProperties({ disabled: isDisabled }, true);\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else if (itemProp.item.type === 'Gallery') {\n ele = document.querySelector('#' + itemId);\n if (!ele) {\n ele = document.querySelector('#' + itemId + '_galleryWrapper');\n }\n else {\n isOverflow = true;\n }\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n var moduleName = this.getItemModuleName(itemProp.item);\n isUpdated = isDisabled ? !itemEle.classList.contains(constants.DISABLED_CSS) :\n itemEle.classList.contains(constants.DISABLED_CSS);\n if (moduleName !== 'template') {\n if (isUpdated) {\n if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateControlDisabled(ele, 'dropdown-btn', isDisabled);\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = document.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else if (moduleName === 'gallery') {\n ele.classList.toggle(constants.DISABLED_CSS, isDisabled);\n document.getElementById(itemId + '_popupButton').classList.toggle(constants.DISABLED_CSS, isDisabled);\n if (isOverflow) {\n var galleryEle = document.getElementById(itemId + '_galleryWrapper');\n galleryEle.classList.toggle(constants.DISABLED_CSS, isDisabled);\n }\n }\n else {\n updateControlDisabled(ele, moduleName, isDisabled);\n }\n }\n }\n else {\n ele.classList.toggle(constants.DISABLED_CSS, isDisabled);\n ele.toggleAttribute('disabled', isDisabled);\n }\n itemEle.classList.toggle(constants.DISABLED_CSS, itemProp.item.disabled);\n }\n };\n Ribbon.prototype.unwireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n EventHandler.remove(document.body, 'keydown', this.keytipActionHandler);\n EventHandler.remove(document, 'mousedown', this.mouseEventHandler);\n EventHandler.remove(document, 'scroll', this.mouseEventHandler);\n };\n Ribbon.prototype.destroy = function () {\n this.keyboardModuleRibbon.destroy();\n this.keyboardModuleRibbon = null;\n destroyTooltip(this.element);\n if (this.refreshing) {\n this.clearOverflowDropDown(this.selectedTab);\n }\n this.destroyTabItems(this.tabs);\n if (!this.hideLayoutSwitcher) {\n this.removeExpandCollapse();\n }\n this.collapseButton = undefined;\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n }\n _super.prototype.destroy.call(this);\n this.tabObj.destroy();\n this.tabObj = undefined;\n this.initialPropsData = {};\n this.hiddenGroups = [];\n this.hiddenElements = {};\n this.keyTipElements = {};\n this.itemsModel = [];\n this.targetTabs = {};\n remove(this.element.querySelector('#' + this.element.id + constants.TAB_ID));\n this.element.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.element.style.removeProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH);\n this.element.style.removeProperty('width');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(constants.SPACE));\n }\n this.element.classList.remove(constants.RTL_CSS, constants.RIBBON_SIMPLIFIED_MODE, constants.RIBBON_OVERFLOW, constants.RIBBON_COLLAPSIBLE, constants.RIBBON_MINIMIZE, 'e-rbn');\n this.unwireEvents();\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RibbonModel} newProp - Specifies new properties\n * @param {RibbonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Ribbon.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _a, _b;\n for (var _i = 0, _c = Object.keys(newProp); _i < _c.length; _i++) {\n var prop = _c[_i];\n switch (prop) {\n case 'activeLayout':\n this.switchLayout();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n (_a = this.element.classList).remove.apply(_a, oldProp.cssClass.split(constants.SPACE));\n }\n if (newProp.cssClass) {\n (_b = this.element.classList).add.apply(_b, newProp.cssClass.split(constants.SPACE));\n }\n break;\n case 'isMinimized':\n this.element.classList.toggle(constants.RIBBON_MINIMIZE, this.isMinimized);\n this.tabObj.element.querySelector('.e-content').style.display = this.isMinimized ? 'none' : 'block';\n if (!this.isMinimized) {\n this.refreshLayout();\n }\n break;\n case 'locale':\n this.updateCommonProperty({ locale: this.locale });\n break;\n case 'enablePersistence':\n this.updateCommonProperty({ enablePersistence: this.enablePersistence });\n break;\n case 'enableRtl':\n this.element.classList.toggle(constants.RTL_CSS, this.enableRtl);\n this.updateCommonProperty({ enableRtl: newProp.enableRtl });\n if (this.scrollModule) {\n this.scrollModule.setProperties({ enableRtl: newProp.enableRtl });\n }\n break;\n case 'launcherIconCss':\n for (var i = 0; i < this.tabs.length; i++) {\n var tabContent = this.tabObj.items[parseInt(i.toString(), 10)].content;\n var tab = this.tabs[parseInt(i.toString(), 10)];\n if (tabContent.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _d = 0, _e = tab.groups; _d < _e.length; _d++) {\n var group = _e[_d];\n if (group.showLauncherIcon) {\n var className = constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss || constants.RIBBON_LAUNCHER_ICON);\n if (group.isCollapsed) {\n var element = tabContent.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var dropdown = getComponent(element, DropDownButton);\n var launcherIconEle = dropdown.target.querySelector('#' + group.id + constants.LAUNCHER_ID);\n launcherIconEle.className = className;\n }\n else {\n var element = tabContent.querySelector('#' + group.id + constants.LAUNCHER_ID);\n element.className = className;\n }\n }\n }\n }\n }\n break;\n case 'selectedTab': {\n var tabEle = this.tabObj.element;\n var toolbarItem = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(newProp.selectedTab.toString(), 10)];\n if (!(toolbarItem.classList.contains('e-hidden') || toolbarItem.classList.contains('e-disable'))) {\n this.tabObj.setProperties({ selectedItem: newProp.selectedTab });\n }\n break;\n }\n case 'tabAnimation':\n this.tabObj.setProperties({ animation: newProp.tabAnimation });\n break;\n case 'tabs':\n this.reRenderTabs(newProp.tabs);\n break;\n case 'contextualTabs':\n for (var i = 0; i < this.contextualTabs.length; i++) {\n if (newProp.contextualTabs[parseInt(i.toString(), 10)]) {\n this.ribbonContextualTabModule.updateContextualTabs(newProp.contextualTabs[parseInt(i.toString(), 10)], this.contextualTabs[parseInt(i.toString(), 10)]);\n }\n }\n break;\n case 'width':\n this.element.style.width = formatUnit(newProp.width);\n this.refreshLayout();\n break;\n case 'fileMenu': {\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.updateFileMenu(this.fileMenu);\n }\n var toolbarEle = this.tabObj['tbObj'];\n toolbarEle.refreshOverflow();\n break;\n }\n case 'backStageMenu': {\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.updateBackStageMenu(this.backStageMenu);\n }\n var toolbarElement = this.tabObj['tbObj'];\n toolbarElement.refreshOverflow();\n break;\n }\n case 'helpPaneTemplate': {\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n this.tabObj.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n }\n if (this.helpPaneTemplate) {\n this.createHelpPaneTemplate();\n }\n var toolbar_1 = this.tabObj['tbObj'];\n toolbar_1.refreshOverflow();\n break;\n }\n case 'hideLayoutSwitcher':\n if (this.hideLayoutSwitcher) {\n this.removeExpandCollapse();\n }\n else {\n this.addExpandCollapse();\n }\n break;\n }\n }\n };\n var Ribbon_1;\n __decorate([\n Property('Classic')\n ], Ribbon.prototype, \"activeLayout\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"enableKeyTips\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"layoutSwitcherKeyTip\", void 0);\n __decorate([\n Complex({}, FileMenuSettings)\n ], Ribbon.prototype, \"fileMenu\", void 0);\n __decorate([\n Complex({}, BackStageMenu)\n ], Ribbon.prototype, \"backStageMenu\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"launcherIconCss\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"isMinimized\", void 0);\n __decorate([\n Property('en-us')\n ], Ribbon.prototype, \"locale\", void 0);\n __decorate([\n Property(0)\n ], Ribbon.prototype, \"selectedTab\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Ribbon.prototype, \"tabAnimation\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], Ribbon.prototype, \"tabs\", void 0);\n __decorate([\n Collection([], RibbonContextualTabSettings)\n ], Ribbon.prototype, \"contextualTabs\", void 0);\n __decorate([\n Property('100%')\n ], Ribbon.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"helpPaneTemplate\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"hideLayoutSwitcher\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelecting\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelected\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonExpanding\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonCollapsing\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonLayoutSwitched\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"launcherIconClick\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"overflowPopupOpen\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"overflowPopupClose\", void 0);\n Ribbon = Ribbon_1 = __decorate([\n NotifyPropertyChanges\n ], Ribbon);\n return Ribbon;\n}(Component));\nexport { Ribbon };\n","import { EventHandler, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex, isTooltipPresent } from '../base/index';\nimport * as constants from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonFileMenu = /** @class */ (function () {\n function RibbonFileMenu(parent) {\n this.parent = parent;\n }\n RibbonFileMenu.prototype.getModuleName = function () {\n return 'ribbonFileMenu';\n };\n RibbonFileMenu.prototype.destroy = function () {\n if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates File Menu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.createFileMenu = function (fileMenuOptions) {\n var _this = this;\n if (!fileMenuOptions.visible) {\n return;\n }\n this.ddbElement = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.ddbElement, toolbarEle);\n this.fileMenuDDB = new DropDownButton({\n content: fileMenuOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-file-menu e-caret-hide',\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.ddbElement.offsetWidth + 'px');\n },\n beforeClose: this.ddbBeforeEvent.bind(this, false),\n beforeOpen: this.ddbBeforeEvent.bind(this, true),\n close: this.ddbAfterEvent.bind(this, false),\n open: this.ddbAfterEvent.bind(this, true)\n }, this.ddbElement);\n if (this.parent.fileMenu.popupTemplate) {\n this.fileMenuDDB.setProperties({ target: this.parent.fileMenu.popupTemplate });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n this.parent.tabObj.refreshActiveTabBorder();\n this.addFileMenuTooltip(fileMenuOptions);\n this.addFileMenuKeytip();\n };\n RibbonFileMenu.prototype.addFileMenuTooltip = function (fileMenuOptions) {\n if (isTooltipPresent(fileMenuOptions.ribbonTooltipSettings)) {\n this.ddbElement.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.ddbElement.id, data: fileMenuOptions.ribbonTooltipSettings });\n }\n };\n RibbonFileMenu.prototype.addFileMenuKeytip = function () {\n if (this.parent.fileMenu.keyTip) {\n this.parent.keyTipElements['filemenu'] = [];\n this.parent.keyTipElements['filemenu'].push({ id: this.ddbElement.id, type: 'filemenu', keyTip: this.parent.fileMenu.keyTip });\n }\n };\n RibbonFileMenu.prototype.ddbBeforeEvent = function (isOpen, args) {\n //args.event is null when dropdown button is closed using a method call\n if (!isOpen && args.event && args.event.target.closest('.e-ribbon-menu')) {\n args.cancel = true;\n }\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = { cancel: args.cancel, element: args.element, event: args.event };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.ddbAfterEvent = function (isOpen, args) {\n var element = isOpen ? this.fileMenuDDB.target : this.fileMenuDDB.element;\n element.focus();\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element };\n event.call(this, eventArgs);\n }\n };\n //Clone RibbonMenuItems before assigning to avoid reference issues.\n RibbonFileMenu.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n itemsList.push({\n iconCss: item.iconCss,\n id: item.id,\n separator: item.separator,\n text: item.text,\n url: item.url,\n items: this.cloneMenuItem(item.items)\n });\n }\n return itemsList;\n };\n RibbonFileMenu.prototype.createRibbonMenu = function (menuOptions) {\n var _this = this;\n var ulElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_LIST\n });\n this.fileMenuDDB.setProperties({ target: ulElem });\n this.menuctrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-menu',\n animationSettings: menuOptions.animationSettings,\n items: this.cloneMenuItem(menuOptions.menuItems),\n showItemOnClick: menuOptions.showItemOnClick,\n template: menuOptions.itemTemplate,\n beforeClose: this.menuBeforeEvent.bind(this, false),\n beforeOpen: this.menuBeforeEvent.bind(this, true),\n beforeItemRender: this.beforeItemRender.bind(this),\n onClose: this.menuAfterEvent.bind(this, false),\n onOpen: this.menuAfterEvent.bind(this, true),\n select: this.menuSelect.bind(this)\n }, ulElem);\n EventHandler.add(ulElem, 'keydown', function (e) {\n if (e.key === 'Tab') {\n _this.fileMenuDDB.toggle();\n }\n }, this);\n };\n RibbonFileMenu.prototype.menuBeforeEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = {\n cancel: args.cancel, element: args.element, event: args.event,\n items: args.items, parentItem: args.parentItem\n };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.menuAfterEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element, items: args.items, parentItem: args.parentItem };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.beforeItemRender = function (args) {\n var event = this.parent.fileMenu.beforeItemRender;\n if (event) {\n var eventArgs = { element: args.element, item: args.item };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.menuSelect = function (args) {\n var event = this.parent.fileMenu.select;\n if (event) {\n var eventArgs = { element: args.element, item: args.item, event: args.event };\n event.call(this, eventArgs);\n if (!args.element.classList.contains('e-menu-caret-icon')) {\n this.fileMenuDDB.toggle();\n }\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.setCommonProperties = function (commonProp) {\n if (this.fileMenuDDB) {\n this.fileMenuDDB.setProperties(commonProp);\n if (this.menuctrl) {\n this.menuctrl.setProperties(commonProp);\n }\n }\n };\n /**\n * Update FileMenu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.updateFileMenu = function (fileMenuOptions) {\n if (fileMenuOptions.visible) {\n if (this.fileMenuDDB) {\n if (fileMenuOptions.text) {\n this.fileMenuDDB.setProperties({\n content: fileMenuOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.ddbElement.offsetWidth + 'px');\n }\n if (fileMenuOptions.popupTemplate) {\n if (this.menuctrl) {\n this.destroyMenu();\n }\n this.fileMenuDDB.setProperties({ target: fileMenuOptions.popupTemplate });\n }\n else {\n if (this.menuctrl) {\n this.menuctrl.setProperties({\n animationSettings: fileMenuOptions.animationSettings,\n items: this.cloneMenuItem(fileMenuOptions.menuItems),\n showItemOnClick: fileMenuOptions.showItemOnClick,\n template: fileMenuOptions.itemTemplate\n });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n }\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n this.addFileMenuTooltip(fileMenuOptions);\n this.addFileMenuKeytip();\n }\n else {\n this.createFileMenu(fileMenuOptions);\n }\n }\n else if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonFileMenu.prototype.destroyMenu = function () {\n if (this.menuctrl) {\n this.menuctrl.destroy();\n this.menuctrl = null;\n }\n };\n RibbonFileMenu.prototype.destroyDDB = function () {\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.fileMenuDDB.destroy();\n this.fileMenuDDB = null;\n remove(this.ddbElement);\n this.ddbElement = null;\n };\n RibbonFileMenu.prototype.removeFileMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.ddbElement.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n RibbonFileMenu.prototype.removeFileMenuKeytip = function () {\n var _this = this;\n if (this.parent.keyTipElements['filemenu']) {\n var index = getIndex(this.parent.keyTipElements['filemenu'], function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.parent.keyTipElements['filemenu'].splice(index, 1);\n }\n }\n };\n /**\n * Add items to FileMenu.\n *\n * @param {MenuItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.addItems = function (items, target, isAfter, isUniqueId) {\n if (isAfter) {\n this.menuctrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuctrl.insertBefore(items, target, isUniqueId);\n }\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Remove items from FileMenu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.removeItems = function (items, isUniqueId) {\n this.menuctrl.removeItems(items, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Enable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be enabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.enableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, true, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Disable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be disabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.disableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, false, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Update items in FileMenu.\n *\n * @param {MenuItem} item - Gets the item to be updated.\n * @param {boolean} id - Gets the id of the item to be updated.\n * @param {boolean} isUniqueId - Gets whether the id provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.setItem = function (item, id, isUniqueId) {\n this.menuctrl.setItem(item, id, isUniqueId);\n this.menuctrl.refresh();\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n return RibbonFileMenu;\n}());\nexport { RibbonFileMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { remove, append, Component, EventHandler } from '@syncfusion/ej2-base';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex } from '../base/index';\nimport { getTemplateFunction, isTooltipPresent } from '../base/utils';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonBackstage = /** @class */ (function (_super) {\n __extends(RibbonBackstage, _super);\n function RibbonBackstage(parent) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n return _this;\n }\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.render = function () {\n // render code\n };\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.preRender = function () {\n // pre render code\n };\n RibbonBackstage.prototype.getPersistData = function () {\n return '';\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.onPropertyChanged = function () {\n // onProperty changes code\n };\n RibbonBackstage.prototype.getModuleName = function () {\n return 'ribbonBackstage';\n };\n RibbonBackstage.prototype.destroy = function () {\n if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates Backstage Menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.createBackStage = function (backStageOptions) {\n var _this = this;\n if (!backStageOptions.visible) {\n return;\n }\n this.backstageButtonEle = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.backstageButtonEle, toolbarEle);\n this.backstageButton = new Button({\n content: backStageOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE,\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.backstageButtonEle.offsetWidth + 'px');\n }\n }, this.backstageButtonEle);\n this.createBackStagePopup(backStageOptions);\n if (this.parent.backStageMenu.template) {\n this.createBackStageTemplate(this.parent.backStageMenu.template);\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n if (this.menuCtrl) {\n this.checkMenuItems(this.menuCtrl.items);\n }\n if (this.footerMenuCtrl) {\n this.checkMenuItems(this.footerMenuCtrl.items);\n }\n }\n this.backstageButtonEle.onclick = function (e) {\n e.stopPropagation();\n _this.showBackstage();\n _this.popupHTMLElement.classList.add(constants.RIBBON_BACKSTAGE_OPEN);\n var menuItem = _this.menuWrapper.querySelector('.e-menu-item.e-selected');\n if (menuItem) {\n menuItem.classList.remove('e-selected');\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (!item.isFooter && _this.menuCtrl.items[0].text === item.text) {\n var firstMenuEle = _this.popupHTMLElement.querySelector('#' + _this.menuCtrl.items[0].id);\n if (firstMenuEle) {\n firstMenuEle.classList.add('e-selected');\n firstMenuEle.focus();\n _this.menuIndex = 0;\n _this.isCloseBtn = false;\n }\n _this.createBackStageContent(_this.menuCtrl.items[0].id, item.content);\n break;\n }\n else {\n continue;\n }\n }\n };\n this.parent.tabObj.refreshActiveTabBorder();\n this.addBackStageMenuTooltip(backStageOptions);\n this.addBackStageMenuKeyTip(backStageOptions);\n EventHandler.add(document, 'click', this.onClickEvent, this);\n };\n RibbonBackstage.prototype.onClickEvent = function (e) {\n var targetEle = e.target;\n if (this.popupHTMLElement.contains(targetEle)) {\n return;\n }\n else {\n this.hideBackstage();\n }\n };\n RibbonBackstage.prototype.addBackStageMenuTooltip = function (backStageOptions) {\n if (isTooltipPresent(backStageOptions.ribbonTooltipSettings)) {\n this.backstageButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.backstageButtonEle.id, data: backStageOptions.ribbonTooltipSettings });\n }\n };\n RibbonBackstage.prototype.addBackStageMenuKeyTip = function (backStageOptions) {\n if (backStageOptions.keyTip) {\n if (!(this.parent.keyTipElements['backstage'])) {\n this.parent.keyTipElements['backstage'] = [];\n }\n this.parent.keyTipElements['backstage'].push({ id: this.backstageButtonEle.id, type: 'backstage', keyTip: backStageOptions.keyTip });\n }\n if (backStageOptions.items && backStageOptions.items.length) {\n if (!(this.parent.keyTipElements['backstageMenu'])) {\n this.parent.keyTipElements['backstageMenu'] = [];\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n if (backStageOptions.items[parseInt(i.toString(), 10)].keyTip) {\n this.parent.keyTipElements['backstageMenu'].push({ id: backStageOptions.items[parseInt(i.toString(), 10)].id, type: 'backstageMenu', keyTip: backStageOptions.items[parseInt(i.toString(), 10)].keyTip });\n }\n }\n }\n };\n RibbonBackstage.prototype.checkMenuItems = function (backStageItems) {\n for (var i = 0; i < backStageItems.length; i++) {\n var item = backStageItems[parseInt(i.toString(), 10)];\n if (!item.iconCss) {\n var menuItemEle = this.popupHTMLElement.querySelector('#' + item.id);\n menuItemEle.classList.add(constants.RIBBON_BACKSTAGE_TEXT_MENU);\n }\n }\n };\n RibbonBackstage.prototype.createBackStagePopup = function (backStageOptions) {\n var _this = this;\n this.popupHTMLElement = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_POPUP_ID,\n className: constants.RIBBON_BACKSTAGE_POPUP\n });\n var targetEle;\n if (backStageOptions.target) {\n targetEle = backStageOptions.target instanceof HTMLElement ? backStageOptions.target :\n document.querySelector(backStageOptions.target);\n targetEle.appendChild(this.popupHTMLElement);\n }\n else {\n this.parent.element.appendChild(this.popupHTMLElement);\n }\n this.popupEle = new Popup(this.popupHTMLElement, {\n height: backStageOptions.height,\n width: backStageOptions.width,\n relateTo: backStageOptions.target || this.parent.element,\n enableRtl: this.parent.enableRtl\n });\n if (this.parent.enableRtl) {\n this.updatePopupPositionOnRtl(this.parent.enableRtl);\n }\n this.hideBackstage();\n EventHandler.add(this.popupHTMLElement, 'keyup', function (e) {\n if (e.code === 'Escape') {\n _this.hideBackstage();\n }\n _this.handleNavigation(e);\n }, this);\n };\n RibbonBackstage.prototype.handleNavigation = function (e) {\n var closeBtnEle = this.popupHTMLElement.querySelector('.e-ribbon-close-btn');\n var menuItems = this.popupHTMLElement.querySelectorAll('.e-menu-item');\n var arrowUp = e.key === 'ArrowUp';\n var arrowDown = e.key === 'ArrowDown';\n if (arrowUp || arrowDown) {\n if ((arrowUp && this.menuIndex > 0) || (arrowDown && this.menuIndex < menuItems.length - 1 && !this.isCloseBtn)) {\n this.menuIndex = arrowUp ? this.menuIndex - 1 : this.menuIndex + 1;\n }\n else {\n if (closeBtnEle && !this.isCloseBtn) {\n closeBtnEle.focus();\n this.isCloseBtn = true;\n }\n else {\n this.menuIndex = arrowUp ? menuItems.length - 1 : 0;\n this.isCloseBtn = false;\n }\n }\n for (var i = 0; i < menuItems.length; i++) {\n menuItems[parseInt(i.toString(), 10)].classList.remove('e-focused');\n }\n if (!this.isCloseBtn) {\n if (arrowUp && menuItems[this.menuIndex].classList.contains('e-separator')) {\n this.menuIndex--;\n }\n else if (arrowDown && menuItems[this.menuIndex].classList.contains('e-separator')) {\n this.menuIndex++;\n }\n menuItems[this.menuIndex].classList.add('e-focused');\n menuItems[this.menuIndex].focus();\n }\n }\n };\n RibbonBackstage.prototype.updatePopupPositionOnRtl = function (enableRtl) {\n var popupStyle = this.popupHTMLElement.style;\n if (enableRtl) {\n popupStyle.right = popupStyle.left;\n popupStyle.left = 'unset';\n }\n else {\n popupStyle.left = popupStyle.right;\n popupStyle.right = 'unset';\n }\n };\n RibbonBackstage.prototype.createBackstageMenu = function (menuOptions, isFooter) {\n var _this = this;\n var wrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_wrapper');\n if (!wrapperEle) {\n this.menuWrapper = this.parent.createElement('div', {\n id: this.parent.element.id + '_wrapper',\n className: constants.RIBBON_BACKSTAGE_MENU_WRAPPER\n });\n this.popupHTMLElement.appendChild(this.menuWrapper);\n }\n if (menuOptions.backButton.visible && !isFooter) {\n var closeBtnEle = this.parent.createElement('button', {\n id: this.parent.element.id + '_close',\n className: 'e-ribbon-close-btn'\n });\n this.closeBtn = new Button({\n content: menuOptions.backButton.text,\n iconCss: menuOptions.backButton.iconCss ? menuOptions.backButton.iconCss : constants.BACKSTAGE_CLOSE_ICON,\n enableRtl: this.parent.enableRtl\n }, closeBtnEle);\n this.menuWrapper.append(closeBtnEle);\n closeBtnEle.onclick = function () {\n _this.popupHTMLElement.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n _this.hideBackstage();\n _this.isBackButtonClicked = true;\n };\n }\n var itemsWrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_itemswrapper');\n if (!itemsWrapperEle) {\n this.itemsWrapperEle = this.parent.createElement('div', {\n id: this.parent.element.id + '_itemswrapper',\n className: constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER\n });\n this.menuWrapper.append(this.itemsWrapperEle);\n }\n var ulFooterElem;\n if (isFooter) {\n ulFooterElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FOOTER_MENU_LIST\n });\n this.itemsWrapperEle.appendChild(ulFooterElem);\n }\n else {\n this.ulMenuElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_MENU_LIST\n });\n this.itemsWrapperEle.appendChild(this.ulMenuElem);\n }\n if (!isFooter) {\n this.menuCtrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE_MENU,\n items: this.cloneMenuItem(menuOptions.items),\n select: this.menuSelect.bind(this, menuOptions)\n }, this.ulMenuElem);\n }\n else {\n this.footerMenuCtrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE_MENU,\n items: this.cloneFooterMenuItem(menuOptions.items),\n select: this.menuSelect.bind(this, menuOptions)\n }, ulFooterElem);\n }\n };\n RibbonBackstage.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n continue;\n }\n else {\n itemsList.push({\n id: item.id,\n iconCss: item.iconCss,\n separator: item.separator,\n text: item.text\n });\n }\n }\n return itemsList;\n };\n RibbonBackstage.prototype.cloneFooterMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (!item.isFooter) {\n continue;\n }\n else {\n itemsList.push({\n id: item.id,\n iconCss: item.iconCss,\n separator: item.separator,\n text: item.text\n });\n }\n }\n return itemsList;\n };\n RibbonBackstage.prototype.createBackStageContent = function (itemId, content) {\n var templateName = 'backstageContent';\n this.clearTemplate([templateName]);\n if (!this.backstageContentEle) {\n this.backstageContentEle = this.parent.createElement('div', {\n id: itemId + constants.CONTENT_ID,\n className: constants.RIBBON_BACKSTAGE_CONTENT\n });\n }\n else {\n this.backstageContentEle.innerHTML = '';\n this.backstageContentEle.id = itemId + constants.CONTENT_ID;\n }\n var templateFunction = getTemplateFunction(content);\n append(templateFunction({}, this, templateName, 'backstageContent', this.parent.isStringTemplate), this.backstageContentEle);\n if (content) {\n this.popupHTMLElement.append(this.backstageContentEle);\n }\n this.renderReactTemplates();\n return templateFunction;\n };\n RibbonBackstage.prototype.createBackStageTemplate = function (template) {\n var templateName = 'backstageTemplate';\n this.clearTemplate([templateName]);\n this.backstageTempEle = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID + '_template',\n className: constants.RIBBON_BACKSTAGE_TEMPLATE\n });\n var templateFunction = getTemplateFunction(template);\n append(templateFunction({}, this, templateName, 'backstageTemplate', this.parent.isStringTemplate), this.backstageTempEle);\n this.popupHTMLElement.append(this.backstageTempEle);\n this.renderReactTemplates();\n return templateFunction;\n };\n RibbonBackstage.prototype.menuSelect = function (menuOptions, args) {\n for (var i = 0; i < menuOptions.items.length; i++) {\n var item = menuOptions.items[parseInt(i.toString(), 10)];\n if (item.text === args.item.text) {\n this.contentItem = item;\n this.menuIndex = i;\n break;\n }\n }\n this.createBackStageContent(args.item.id, this.contentItem.content);\n var eventArgs = { cancel: false, target: args.element,\n item: this.contentItem, isBackButton: this.isBackButtonClicked };\n if (this.contentItem.backStageItemClick) {\n this.contentItem.backStageItemClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.setCommonProperties = function (commonProp) {\n if (this.backstageButton) {\n this.backstageButton.setProperties(commonProp);\n if (this.popupEle) {\n this.popupEle.setProperties(commonProp);\n if (this.popupHTMLElement) {\n this.updatePopupPositionOnRtl(commonProp.enableRtl);\n }\n if (this.menuCtrl) {\n this.menuCtrl.setProperties(commonProp);\n if (this.closeBtn) {\n this.closeBtn.setProperties(commonProp);\n }\n }\n if (this.footerMenuCtrl) {\n this.footerMenuCtrl.setProperties(commonProp);\n }\n }\n }\n };\n /**\n * Update Backstage menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage menu.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.updateBackStageMenu = function (backStageOptions) {\n if (backStageOptions.visible) {\n if (this.backstageButton) {\n if (backStageOptions.text) {\n this.backstageButton.setProperties({\n content: backStageOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.backstageButtonEle.offsetWidth + 'px');\n }\n if (this.popupEle) {\n this.popupEle.setProperties({\n height: backStageOptions.height,\n width: backStageOptions.width,\n target: backStageOptions.target || this.parent.element\n });\n }\n if (backStageOptions.template) {\n if (this.backstageTempEle) {\n remove(this.backstageTempEle);\n this.backstageTempEle = null;\n }\n this.createBackStageTemplate(backStageOptions.template);\n }\n else {\n if (this.menuCtrl) {\n this.menuCtrl.setProperties({\n items: this.cloneMenuItem(backStageOptions.items)\n });\n }\n if (this.footerMenuCtrl) {\n this.footerMenuCtrl.setProperties({\n items: this.cloneFooterMenuItem(backStageOptions.items)\n });\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n }\n }\n this.removeBackstageMenuTooltip();\n this.removeBackstageMenuKeyTip();\n this.addBackStageMenuTooltip(backStageOptions);\n this.addBackStageMenuKeyTip(backStageOptions);\n }\n else {\n this.createBackStage(backStageOptions);\n }\n }\n else if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonBackstage.prototype.destroyMenu = function () {\n if (this.menuCtrl) {\n this.menuCtrl.destroy();\n this.menuCtrl = null;\n }\n };\n RibbonBackstage.prototype.destroyDDB = function () {\n this.removeBackstageMenuTooltip();\n this.removeBackstageMenuKeyTip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.backstageButton.destroy();\n this.backstageButton = null;\n remove(this.backstageButtonEle);\n this.backstageButtonEle = null;\n EventHandler.remove(document, 'click', this.onClickEvent);\n };\n RibbonBackstage.prototype.removeBackstageMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.backstageButtonEle.id; });\n if (index !== -1) {\n this.backstageButtonEle.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n RibbonBackstage.prototype.removeBackstageMenuKeyTip = function () {\n var _this = this;\n if (this.parent.keyTipElements['backstage'] && this.parent.keyTipElements['backstage'].length) {\n var index = getIndex(this.parent.keyTipElements['backstage'], function (e) { return e.id === _this.backstageButtonEle.id; });\n if (index !== -1) {\n this.parent.keyTipElements['backstage'].splice(index, 1);\n }\n }\n if (this.parent.keyTipElements['backstageMenu'] && this.parent.keyTipElements['backstageMenu'].length) {\n for (var i = 0; i < this.parent.keyTipElements['backstageMenu'].length; i++) {\n this.parent.keyTipElements['backstageMenu'].splice(i, 1);\n i--;\n }\n }\n };\n /**\n * Add items to Backstage Menu.\n *\n * @param {BackstageItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.addBackstageItems = function (items, target, isAfter, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n if (isAfter) {\n this.footerMenuCtrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.footerMenuCtrl.insertBefore(items, target, isUniqueId);\n }\n }\n else {\n if (isAfter) {\n this.menuCtrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuCtrl.insertBefore(items, target, isUniqueId);\n }\n }\n }\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n var backStageOptions = this.parent.backStageMenu;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n for (var i_1 = 0; i_1 < backstageItems.length; i_1++) {\n var item1 = backstageItems[parseInt(i_1.toString(), 10)];\n if (item.text === item1.text) {\n item1.content = item.content;\n break;\n }\n }\n }\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Remove items from Backstage Menu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.removeBackstageItems = function (items, isUniqueId) {\n this.menuCtrl.removeItems(items, isUniqueId);\n this.footerMenuCtrl.removeItems(items, isUniqueId);\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Renders the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.showBackstage = function () {\n this.popupEle.show();\n };\n /**\n * Hides the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.hideBackstage = function () {\n if (this.popupEle.element.classList.contains(constants.RIBBON_BACKSTAGE_OPEN)) {\n this.popupEle.element.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n }\n this.popupEle.hide();\n };\n return RibbonBackstage;\n}(Component));\nexport { RibbonBackstage };\n","import * as constants from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon contextual tab.\n */\nvar RibbonContextualTab = /** @class */ (function () {\n function RibbonContextualTab(parent) {\n this.parent = parent;\n }\n RibbonContextualTab.prototype.getModuleName = function () {\n return 'ribbonContextualTab';\n };\n RibbonContextualTab.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates Contextual tab.\n *\n * @returns {void}\n * @hidden\n */\n RibbonContextualTab.prototype.addContextualTabs = function () {\n var isSelected = false;\n for (var n = 0; n < this.parent.contextualTabs.length; n++) {\n for (var i = 0; i < this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs.length; i++) {\n this.parent.addTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[parseInt(i.toString(), 10)]);\n var index = this.parent.tabs.length - 1;\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(index.toString(), 10)];\n toolbarEle.classList.add(constants.RIBBON_CONTEXTUAL_TAB);\n toolbarEle.classList.add('e-hidden');\n if (this.parent.contextualTabs[parseInt(n.toString(), 10)].visible) {\n this.parent.showTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[parseInt(i.toString(), 10)].id, true);\n if (this.parent.contextualTabs[parseInt(n.toString(), 10)].isSelected && !isSelected) {\n this.parent.selectTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[0].id);\n isSelected = true;\n }\n }\n }\n }\n };\n /**\n * Updates Contextual tab.\n *\n * @param {RibbonContextualTabSettingsModel} newProp - Specifies new properties.\n * @param {RibbonContextualTabSettingsModel} contextualTab - Gets the property of contextual tab.\n * @returns {void}\n * @hidden\n */\n RibbonContextualTab.prototype.updateContextualTabs = function (newProp, contextualTab) {\n if (!(isNullOrUndefined(newProp.visible))) {\n for (var i = 0; i < contextualTab.tabs.length; i++) {\n if (newProp.visible) {\n this.parent.showTab(contextualTab.tabs[parseInt(i.toString(), 10)].id, true);\n }\n else {\n this.parent.hideTab(contextualTab.tabs[parseInt(i.toString(), 10)].id, true);\n }\n }\n }\n if (!(isNullOrUndefined(newProp.isSelected))) {\n if (newProp.isSelected && contextualTab.visible) {\n this.parent.selectTab(contextualTab.tabs[0].id);\n }\n else {\n var tabEle = this.parent.tabObj.element;\n for (var i = 0; i < this.parent.tabs.length; i++) {\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(i.toString(), 10)];\n if (!(toolbarEle.classList.contains('e-hidden') || toolbarEle.classList.contains('e-disable'))) {\n this.parent.selectTab(this.parent.tabs[parseInt(i.toString(), 10)].id);\n break;\n }\n }\n }\n }\n if (newProp.tabs) {\n var _loop_1 = function (key) {\n var index = parseInt(key, 10);\n var tab = this_1.parent.tabs.filter(function (e) {\n return e.id === contextualTab.tabs[parseInt(index.toString(), 10)].id;\n })[0];\n this_1.parent.updateTab(tab);\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp.tabs); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n }\n };\n return RibbonContextualTab;\n}());\nexport { RibbonContextualTab };\n","import { getGroup, getItem } from '../base/utils';\nimport { getIndex } from '../base/index';\nimport * as constants from '../base/constant';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { getInstance, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the keytip of Ribbon.\n */\nvar RibbonKeyTip = /** @class */ (function () {\n function RibbonKeyTip(parent) {\n this.isKeytipPopupOpen = false;\n this.parent = parent;\n }\n RibbonKeyTip.prototype.getModuleName = function () {\n return 'ribbonKeyTip';\n };\n RibbonKeyTip.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the keytips.\n *\n * @param {string} key - get's the keytip type.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.createKeytip = function (key) {\n if (this.parent.keyTipElements) {\n var keytipData = void 0;\n if (key === 'tab') {\n for (var i = 0; i < this.parent.tabs.length; i++) {\n if (this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n keytipData = this.parent.keyTipElements[parseInt(i.toString(), 10)][\"\" + key];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'tab', 'center', 'bottom', true);\n }\n }\n if (this.parent.keyTipElements['filemenu']) {\n keytipData = this.parent.keyTipElements['filemenu'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'filemenu');\n }\n if (this.parent.keyTipElements['backstage']) {\n keytipData = this.parent.keyTipElements['backstage'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'backstage');\n }\n if (this.parent.keyTipElements['collapse']) {\n keytipData = this.parent.keyTipElements['collapse'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'collapse');\n }\n if (this.parent.keyTipElements['taboverflow']) {\n keytipData = this.parent.keyTipElements['taboverflow'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'taboverflow');\n }\n }\n else if (key === 'popupitem') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['popupitem']) {\n var popupKeyTipData = this.parent.keyTipElements[this.parent.selectedTab]['popupitem'];\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['popupitem']).length; i++) {\n this.createKeyTipElement((popupKeyTipData[parseInt(i.toString(), 10)].id), popupKeyTipData[parseInt(i.toString(), 10)].keyTip, 'popupitem', 'left', 'top', false, true);\n }\n }\n }\n else if (key === 'backstageMenu') {\n if (this.parent.keyTipElements['backstageMenu']) {\n var backstageKeyTipData = this.parent.keyTipElements['backstageMenu'];\n for (var i = 0; i < Object.keys(this.parent.keyTipElements['backstageMenu']).length; i++) {\n this.createKeyTipElement((backstageKeyTipData[parseInt(i.toString(), 10)].id), backstageKeyTipData[parseInt(i.toString(), 10)].keyTip, 'backstageMenu', 'left', 'center');\n }\n }\n }\n else if (key === 'grpoverflowpopup' && this.parent.activeLayout === 'Classic') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpoverflowpopup']) {\n this.calculateItemPosition(key);\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['launcher']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['launcher']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['launcher'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'launcher', 'center', 'bottom', false, true);\n }\n }\n }\n else {\n this.calculateItemPosition(key);\n if (this.parent.activeLayout === 'Classic') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['launcher']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['launcher']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['launcher'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'launcher');\n }\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'grpoverflow');\n }\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n if (this.parent.keyTipElements['overflowbtn']) {\n keytipData = this.parent.keyTipElements['overflowbtn'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'overflowbtn');\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'grpofbtn');\n }\n }\n }\n }\n }\n };\n RibbonKeyTip.prototype.calculateItemPosition = function (key, isMethod, keyTip) {\n if (isMethod === void 0) { isMethod = false; }\n var xOffset;\n var yOffset;\n var keytipData = this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)][\"\" + key];\n if (keytipData) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)][\"\" + key]).length; i++) {\n if ((isMethod && (keytipData[parseInt(i.toString(), 10)].keyTip === keyTip)) || !isMethod) {\n var itemID = keytipData[parseInt(i.toString(), 10)].id;\n if (keytipData[parseInt(i.toString(), 10)].id.indexOf('_grpbtn') !== -1) {\n itemID = keytipData[parseInt(i.toString(), 10)].id.replace(/_grpbtn\\d+/, '');\n }\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemProp && itemProp.group.orientation === 'Column' && itemProp.collection.items.length > 1 && this.parent.activeLayout !== 'Simplified') {\n if (itemProp.itemIndex === 0) {\n xOffset = 'center';\n yOffset = 'top';\n }\n else if (itemProp.itemIndex === 1) {\n xOffset = 'center';\n yOffset = 'center';\n }\n else {\n xOffset = 'center';\n yOffset = 'bottom';\n }\n }\n else if (itemProp && itemProp.group.orientation === 'Row' && itemProp.group.collections.length > 1 && this.parent.activeLayout !== 'Simplified') {\n if (itemProp.collectionIndex === 0) {\n xOffset = 'center';\n yOffset = 'top';\n }\n else {\n xOffset = 'center';\n yOffset = 'bottom';\n }\n }\n if (key === 'item') {\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, key, xOffset, yOffset);\n }\n else {\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, key, xOffset, yOffset, false, true);\n }\n }\n }\n }\n };\n RibbonKeyTip.prototype.createKeyTipElement = function (id, keyTip, type, xOffset, yOffset, isTab, isPopUpItem) {\n if (xOffset === void 0) { xOffset = 'center'; }\n if (yOffset === void 0) { yOffset = 'bottom'; }\n if (isTab === void 0) { isTab = false; }\n if (isPopUpItem === void 0) { isPopUpItem = false; }\n var keyEle = document.querySelector('#' + id);\n var isPopUpPresent = false;\n var splitBtnID;\n if (isTab) {\n keyEle = document.querySelector('#' + id + constants.HEADER_ID);\n }\n if (keyEle) {\n if (keyEle.closest('.e-ribbon-group-overflow-ddb')) {\n isPopUpPresent = true;\n }\n if ((isTab && isPopUpItem) && keyEle.closest('.e-toolbar-pop')) {\n isPopUpPresent = true;\n }\n if (keyEle.closest('.e-split-btn-wrapper')) {\n var splitBtn = keyEle.closest('.e-split-btn-wrapper');\n splitBtnID = splitBtn.closest('.e-ribbon-item').id;\n }\n else {\n if (keyEle.closest('.e-colorpicker-wrapper')) {\n keyEle = keyEle.closest('.e-colorpicker-wrapper');\n splitBtnID = keyEle.closest('.e-ribbon-item').id;\n }\n }\n }\n if ((keyEle && keyEle.offsetParent) || (isTab && isPopUpItem)) {\n if ((isPopUpItem && isPopUpPresent) || !isPopUpItem) {\n var keytipElement = this.parent.createElement('div', {\n className: constants.RIBBON_KEYTIP,\n id: id + constants.RIBBON_KEYTIP_ID,\n attrs: { role: 'dialog', 'aria-label': 'ribbon-keytip' }\n });\n document.body.append(keytipElement);\n var keytipPopup = new Popup(keytipElement, {\n relateTo: '#' + (isTab ? id + constants.HEADER_ID : splitBtnID ? splitBtnID : id),\n content: keyTip,\n collision: { X: 'fit', Y: 'flip' },\n targetType: 'relative',\n position: { X: xOffset, Y: yOffset },\n enableRtl: this.parent.enableRtl,\n actionOnScroll: 'hide'\n });\n keytipPopup.show();\n this.calculateKeyTipPosition(keyEle, keytipElement, type, yOffset);\n this.parent.isKeytipOpen = true;\n }\n }\n };\n RibbonKeyTip.prototype.calculateKeyTipPosition = function (itemEle, keytipElement, type, yOffset) {\n var position = itemEle.getBoundingClientRect();\n if (type === 'backstageMenu') {\n keytipElement.style.top = position.top + ((keytipElement.offsetHeight) / 2) + 'px';\n keytipElement.style.left = position.left + (itemEle.offsetWidth / 5) + 'px';\n }\n else {\n if (type !== 'popupitem') {\n keytipElement.style.left = position.left + (position.width - keytipElement.offsetWidth) / 2 + 'px';\n }\n }\n if (type === 'filemenu' || type === 'backstage') {\n keytipElement.style.top = position.top + ((itemEle.offsetHeight - (itemEle.offsetHeight / 3)) + (keytipElement.offsetHeight / 6)) + 'px';\n }\n else if ((type === 'item' && yOffset === 'top')) {\n keytipElement.style.top = (position.top - (itemEle.offsetHeight) / 2) + 'px';\n }\n };\n /**\n * Performs keytip action.\n *\n * @param {string} keyPress - Gets the keytip text.\n * @param {boolean} isMethod - Gets the isMethod.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.keytipPress = function (keyPress, isMethod) {\n var _this = this;\n if (isMethod === void 0) { isMethod = false; }\n this.isKeytipPresent = false;\n for (var i = 0; ((i < Object.keys(this.parent.keyTipElements).length) && !this.isKeytipPresent); i++) {\n if (this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n for (var j = 0; ((j < Object.keys(this.parent.keyTipElements[parseInt(i.toString(), 10)]).length) &&\n !this.isKeytipPresent); j++) {\n var keytipData = this.parent.keyTipElements[parseInt(i.toString(), 10)][Object.\n keys(this.parent.keyTipElements[parseInt(i.toString(), 10)])[parseInt(j.toString(), 10)]];\n for (var k = 0; ((k < Object.keys(keytipData).length) && !this.isKeytipPresent); k++) {\n if (keyPress.toUpperCase() === keytipData[parseInt(k.toString(), 10)].keyTip) {\n var keyTipElement = document.querySelector('#' + keytipData[parseInt(k.toString(), 10)].id + constants.RIBBON_KEYTIP_ID);\n if (keyTipElement || isMethod) {\n this.isKeytipPresent = true;\n this.removeKeytip();\n if (keytipData[parseInt(k.toString(), 10)].type === 'tab') {\n if (i !== this.parent.selectedTab) {\n this.parent.tabObj.select(i);\n setTimeout(function () {\n var tabOverflow = _this.parent.tabObj.element.querySelector('.e-nav-active');\n if (tabOverflow) {\n tabOverflow.click();\n }\n _this.createKeytip('item');\n }, 600);\n }\n else {\n this.createKeytip('item');\n }\n }\n else {\n if (keytipData[parseInt(k.toString(), 10)].type === 'item' || keytipData[parseInt(k.toString(), 10)].type === 'grpoverflowpopup' || keytipData[parseInt(k.toString(), 10)].type === 'popupitem') {\n if (document.getElementById(keytipData[parseInt(k.toString(), 10)].id) && document.getElementById(keytipData[parseInt(k.toString(), 10)].id).classList.contains('e-ribbon-group-button')) {\n document.getElementById(keytipData[parseInt(k.toString(), 10)].id).click();\n }\n else {\n var itemProp = void 0;\n if ((keytipData[parseInt(k.toString(), 10)].id).indexOf('_popupButton') !== -1) {\n var galleryID = keytipData[parseInt(k.toString(), 10)].id.replace(/_popupButton/g, '');\n itemProp = getItem(this.parent.tabs, galleryID);\n }\n else {\n itemProp = getItem(this.parent.tabs, keytipData[parseInt(k.toString(), 10)].id);\n }\n if (!isMethod || (isMethod && itemProp.tabIndex === this.parent.selectedTab)) {\n this.clickItems(itemProp, keytipData, k, false, isMethod);\n }\n }\n }\n else if (keytipData[parseInt(k.toString(), 10)].type === 'grpoverflow' || keytipData[parseInt(k.toString(), 10)].type === 'grpofbtn' || keytipData[parseInt(k.toString(), 10)].type === 'launcher') {\n var keyEle = document.querySelector('#' + keytipData[parseInt(k.toString(), 10)].id);\n this.removeKeytip();\n if (keyEle) {\n var groupID = keytipData[parseInt(k.toString(), 10)].id;\n if (isMethod) {\n if (keytipData[parseInt(k.toString(), 10)].id.indexOf('_launcher') !== -1 || keytipData[parseInt(k.toString(), 10)].id.indexOf('_sim_grp_overflow') !== -1 || keytipData[parseInt(k.toString(), 10)].id.indexOf('_overflow_dropdown') !== -1) {\n groupID = keytipData[parseInt(k.toString(), 10)].id.replace(/_launcher|_sim_grp_overflow|_overflow_dropdown/g, '');\n var itemProp = getGroup(this.parent.tabs, groupID);\n if (itemProp.tabIndex === this.parent.selectedTab) {\n this.clickItems(itemProp, keytipData, k, true, isMethod, keyEle);\n }\n }\n }\n else {\n this.clickItems(null, keytipData, k, true, isMethod, keyEle);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (this.parent.keyTipElements) {\n this.commonItemsKeyTipPress(keyPress, Object.keys(this.parent.keyTipElements)[parseInt(i.toString(), 10)], isMethod);\n }\n }\n }\n };\n RibbonKeyTip.prototype.clickItems = function (itemProp, keytipData, k, isGroupItems, isMethod, keyEle) {\n if (isGroupItems) {\n keyEle.click();\n if (!(keytipData[parseInt(k.toString(), 10)].type === 'launcher')) {\n this.isKeytipPopupOpen = true;\n if (keytipData[parseInt(k.toString(), 10)].type === 'grpoverflow') {\n this.createKeytip('grpoverflowpopup');\n }\n else {\n this.createKeytip('popupitem');\n }\n }\n }\n else {\n var itemID = keytipData[parseInt(k.toString(), 10)].id;\n if (document.querySelector('#' + itemID) && isMethod) {\n if (this.parent.activeLayout === 'Simplified') {\n if (document.querySelector('#' + itemID).closest('#' + itemProp.group.id + '_sim_grp_overflow-popup') && document.querySelector('#' + itemID).closest('#' + itemProp.group.id + '_sim_grp_overflow-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + itemProp.group.id + '_sim_grp_overflow').click();\n }\n else if (document.querySelector('#' + itemID).closest('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID + '-popup') && document.querySelector('#' + itemID).closest('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID + '-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID).click();\n }\n }\n else {\n if (document.querySelector('#' + itemID).closest('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID + '-popup') && document.querySelector('#' + itemID).closest('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID + '-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID).click();\n }\n }\n }\n var itemType = this.parent.getItemModuleName(itemProp.item);\n switch (itemType) {\n case 'btn':\n this.parent.ribbonButtonModule.click(itemID);\n break;\n case 'dropdown-btn':\n this.parent.ribbonDropDownModule.toggle(itemID);\n break;\n case 'split-btn':\n this.parent.ribbonSplitButtonModule.toggle(itemID);\n break;\n case 'checkbox':\n this.parent.ribbonCheckBoxModule.click(itemID);\n break;\n case 'colorpicker':\n this.parent.ribbonColorPickerModule.toggle(itemID);\n break;\n case 'combobox': {\n var itemEle_1 = document.querySelector('#' + itemID);\n if (this.isInteractableElement(itemEle_1)) {\n setTimeout(function () {\n itemEle_1.focus();\n }, 100);\n }\n break;\n }\n case 'gallery': {\n var galleryEle = document.querySelector('#' + itemID);\n if (this.isInteractableElement(galleryEle)) {\n galleryEle.click();\n }\n break;\n }\n case 'template': {\n var templateEle = document.querySelector('#' + itemID);\n if (this.isInteractableElement(templateEle)) {\n templateEle.focus();\n }\n break;\n }\n case 'group-btn': {\n var itemElement = document.querySelector('#' + itemID);\n if (this.isInteractableElement(itemElement)) {\n var item = getInstance(itemElement, DropDownButton);\n item.toggle();\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n if (itemProp.item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip) {\n this.createKeyTipElement(itemID + (constants.RIBBON_GROUP_BUTTON_ID + i), itemProp.item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip, 'item');\n }\n }\n }\n break;\n }\n }\n }\n };\n RibbonKeyTip.prototype.isInteractableElement = function (element) {\n return element && !element.closest('.e-ribbon-item').classList.contains('e-disabled');\n };\n RibbonKeyTip.prototype.commonItemsKeyTipPress = function (keyPress, key, isMethod) {\n var _this = this;\n if (this.parent.keyTipElements[\"\" + key]) {\n var isKeyPressed = false;\n var keytipData = this.parent.keyTipElements[\"\" + key];\n var keyEle = void 0;\n var keytipElement = void 0;\n if (keytipData) {\n if (key === 'backstageMenu') {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[\"\" + key]).length; i++) {\n if (keytipData[parseInt(i.toString(), 10)].keyTip === keyPress.toUpperCase()) {\n keyEle = document.querySelector('#' + keytipData[parseInt(i.toString(), 10)].id);\n keytipElement = document.querySelector('#' + keyEle.id + constants.RIBBON_KEYTIP_ID);\n if (keytipElement || isMethod) {\n isKeyPressed = true;\n if (isMethod && document.querySelector('.e-ribbon-backstage-popup').classList.contains('e-popup-close')) {\n this.parent.tabObj.element.querySelector('.e-ribbon-backstage').click();\n }\n break;\n }\n }\n }\n }\n else {\n if (keytipData[0] && keytipData[0].keyTip === keyPress.toUpperCase()) {\n keyEle = document.querySelector('#' + keytipData[0].id);\n keytipElement = document.querySelector('#' + keytipData[0].id + constants.RIBBON_KEYTIP_ID);\n if (keytipElement || isMethod) {\n isKeyPressed = true;\n }\n }\n }\n }\n if (isKeyPressed) {\n this.removeKeytip();\n this.isKeytipPresent = true;\n if (keyEle) {\n keyEle.click();\n if (key === 'backstage') {\n this.createKeytip('backstageMenu');\n }\n else if (key === 'overflowbtn') {\n this.isKeytipPopupOpen = true;\n this.createKeytip('popupitem');\n }\n else if (key === 'taboverflow') {\n setTimeout(function () {\n for (var i = 0; i < Object.keys(_this.parent.keyTipElements).length; i++) {\n if (_this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n var keytipData_1 = _this.parent.keyTipElements[parseInt(i.toString(), 10)]['tab'];\n _this.createKeyTipElement((keytipData_1[0].id), keytipData_1[0].keyTip, 'tab', 'center', 'bottom', true, true);\n }\n }\n }, 600);\n }\n }\n }\n }\n };\n /**\n * Removes the keytip.\n *\n * @param {string} key - Gets the keyboard key element.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.removeKeytip = function (key) {\n var _this = this;\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n var isKeyTipExist = false;\n this.parent.keysPress = '';\n var _loop_1 = function (i) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (key === 'Escape' && this_1.parent.keyTipElements && this_1.parent.keyTipElements[this_1.parent.selectedTab]) {\n for (var j = 0; j < Object.keys(this_1.parent.keyTipElements[this_1.parent.selectedTab]).length; j++) {\n var keyText = (Object.keys(this_1.parent.keyTipElements[parseInt(this_1.parent.selectedTab.toString(), 10)]))[parseInt(j.toString(), 10)];\n var keyTipElement = this_1.parent.keyTipElements[parseInt(this_1.parent.selectedTab.toString(), 10)];\n var index = getIndex(keyTipElement[\"\" + keyText], function (e) {\n return e.id +\n constants.RIBBON_KEYTIP_ID === keyTipItems[parseInt(i.toString(), 10)].id;\n });\n if (index !== -1) {\n if ((keyText === 'item' && !(this_1.isKeytipPopupOpen)) || (keyText === 'grpoverflow' && this_1.parent.activeLayout === 'Classic')) {\n this_1.createKeytip('tab');\n key = '';\n isKeyTipExist = true;\n break;\n }\n else if (this_1.isKeytipPopupOpen) {\n if ((keyText === 'popupitem' && this_1.parent.activeLayout === 'Simplified') || (keyText === 'grpoverflowpopup' && this_1.parent.activeLayout === 'Classic')) {\n this_1.createKeytip('item');\n key = '';\n isKeyTipExist = true;\n break;\n }\n }\n }\n }\n for (var n = 0; n < Object.keys(this_1.parent.keyTipElements).length; n++) {\n if (this_1.parent.keyTipElements[parseInt(n.toString(), 10)]) {\n var keytipData = this_1.parent.keyTipElements[parseInt(n.toString(), 10)]['tab'];\n for (var j = 0; j < Object.keys(keytipData).length; j++) {\n if (keyTipItem.id === keytipData[0].id + constants.RIBBON_KEYTIP_ID) {\n if (document.querySelector('#' + keytipData[0].id + constants.HEADER_ID).closest('.e-toolbar-pop')) {\n var tabOverflow = this_1.parent.tabObj.element.querySelector('.e-nav-active');\n tabOverflow.click();\n setTimeout(function () {\n _this.createKeytip('tab');\n }, 600);\n key = '';\n isKeyTipExist = true;\n break;\n }\n }\n }\n if (isKeyTipExist) {\n break;\n }\n }\n }\n if (!isKeyTipExist && this_1.parent.keyTipElements['backstageMenu']) {\n var index = getIndex(this_1.parent.keyTipElements['backstageMenu'], function (e) { return e.id + constants.RIBBON_KEYTIP_ID === keyTipItems[parseInt(i.toString(), 10)].id; });\n if (index !== -1) {\n this_1.createKeytip('tab');\n key = '';\n isKeyTipExist = true;\n }\n }\n }\n if (keyTipItem) {\n remove(keyTipItem);\n }\n };\n var this_1 = this;\n for (var i = 0; i < keyTipItems.length; i++) {\n _loop_1(i);\n }\n this.isKeytipPopupOpen = false;\n if (!isKeyTipExist) {\n this.parent.isKeytipOpen = false;\n }\n };\n /**\n * Shows the Keytip dynamically.\n *\n * @param {string} keyAction - Item for which the tooltip is to be shown.\n * @returns {void}\n */\n RibbonKeyTip.prototype.showKeyTips = function (keyAction) {\n if (this.parent.enableKeyTips) {\n if (keyAction) {\n this.keytipPress(keyAction, true);\n }\n else {\n this.createKeytip('tab');\n }\n }\n };\n /**\n * Hides the Keytip dynamically.\n *\n * @returns {void}\n */\n RibbonKeyTip.prototype.hideKeyTips = function () {\n this.removeKeytip();\n };\n return RibbonKeyTip;\n}());\nexport { RibbonKeyTip };\n"],"names":["RibbonLayout","ItemOrientation","RibbonItemSize","DisplayMode","RibbonItemType","RibbonGroupButtonSelection","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","_super","__extends","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","RibbonButtonSettings","ChildProperty","setProperties","prop","muteOnChange","call","Property","Event","apply","RibbonCheckBoxSettings","RibbonColorPickerSettings","RibbonComboBoxSettings","Complex","text","value","iconCss","groupBy","FieldSettings","RibbonDropDownSettings","Collection","Item","RibbonSplitButtonSettings","RibbonTooltip","RibbonGroupButtonItem","RibbonGroupButtonSettings","RibbonGalleryItem","RibbonGalleryGroup","RibbonGallerySettings","RibbonItem","Medium","Small","Large","Auto","RibbonCollection","RibbonGroup","RibbonTab","FileMenuSettings","MenuItem","MenuAnimationSettings","BackstageBackButton","BackstageItem","BackStageMenu","RibbonContextualTabSettings","ITEM_VERTICAL_CENTER","EXPAND_COLLAPSE_ICON","BACKSTAGE_CLOSE_ICON","OVERFLOW_ICON","VERTICAL_DDB","DISABLED_CSS","RTL_CSS","RIBBON_HOVER","RIBBON_CONTROL","RIBBON_POPUP_CONTROL","RIBBON_POPUP_OPEN","RIBBON_KEYTIP","SPACE","HORIZONTAL_SCROLLBAR","HIDE_CSS","RIBBON_TAB","RIBBON_CONTEXTUAL_TAB","RIBBON_TAB_ACTIVE","RIBBON_TAB_ITEM","RIBBON_COLLAPSE_BUTTON","RIBBON_EXPAND_BUTTON","RIBBON_COLLAPSIBLE","RIBBON_OVERALL_OF_BUTTON","RIBBON_GROUP_OF_BUTTON","RIBBON_OVERFLOW_TARGET","RIBBON_OVERFLOW","TAB_CONTENT","RIBBON_MINIMIZE","RIBBON_GROUP","RIBBON_SINGLE_BUTTON_SELECTION","RIBBON_MULTIPLE_BUTTON_SELECTION","RIBBON_GROUP_BUTTON","RIBBON_GROUP_BUTTON_OVERFLOW_POPUP","RIBBON_GROUP_BUTTON_CONTENT","RIBBON_GROUP_CONTAINER","RIBBON_OF_TAB_CONTAINER","RIBBON_OF_GROUP_CONTAINER","RIBBON_GROUP_CONTENT","RIBBON_GROUP_HEADER","RIBBON_OVERFLOW_HEADER","RIBBON_GROUP_OVERFLOW","RIBBON_GROUP_OVERFLOW_DDB","RIBBON_LAUNCHER","RIBBON_LAUNCHER_ICON_ELE","RIBBON_LAUNCHER_ICON","RIBBON_COLLECTION","RIBBON_ITEM","RIBBON_ROW","RIBBON_COLUMN","RIBBON_LARGE_ITEM","RIBBON_MEDIUM_ITEM","RIBBON_SMALL_ITEM","RIBBON_CONTENT_HEIGHT","DROPDOWNBUTTON_HIDE","RIBBON_TEMPLATE","RIBBON_HELP_TEMPLATE","RIBBON_TOOLTIP","RIBBON_TOOLTIP_TARGET","RIBBON_TOOLTIP_TITLE","RIBBON_TOOLTIP_CONTENT","RIBBON_TOOLTIP_ICON","RIBBON_TOOLTIP_CONTAINER","RIBBON_TEXT_CONTAINER","RIBBON_SIMPLIFIED_MODE","RIBBON_BACKSTAGE_POPUP","RIBBON_BACKSTAGE_OPEN","RIBBON_BACKSTAGE_CONTENT","RIBBON_BACKSTAGE","RIBBON_BACKSTAGE_MENU","RIBBON_BACKSTAGE_TEMPLATE","RIBBON_BACKSTAGE_MENU_WRAPPER","RIBBON_BACKSTAGE_ITEMS_WRAPPER","RIBBON_BACKSTAGE_TEXT_MENU","TAB_ID","COLLECTION_ID","COLLAPSE_BUTTON_ID","OVRLOF_BUTTON_ID","GROUPOF_BUTTON_ID","HEADER_ID","LAUNCHER_ID","CONTENT_ID","CONTAINER_ID","OVERFLOW_ID","DROPDOWN_ID","RIBBON_FILE_MENU_ID","RIBBON_BACKSTAGE_MENU_ID","RIBBON_BACKSTAGE_POPUP_ID","RIBBON_FILE_MENU_LIST","RIBBON_MENU_LIST","RIBBON_FOOTER_MENU_LIST","RIBBON_HELP_PANE_TEMPLATE_ID","RIBBON_GROUP_BUTTON_ID","RIBBON_KEYTIP_ID","RIBBON_FILE_MENU_WIDTH","RIBBON_HELP_PANE_TEMPLATE_WIDTH","RibbonButton","getModuleName","destroy","parent","createButton","item","itemEle","_this","buttonEle","createElement","id","btnSettings","appendChild","buttonSettings","Button","locale","enableRtl","enablePersistence","iconPosition","activeSize","disabled","cssClass","trim","content","isPrimary","isToggle","created","htmlAttributes","setCustomAttributes","onclick","e","clicked","setAttribute","addOverFlowEvents","overflowButton","querySelector","buttonObj","type","toString","getComponent","element","classList","contains","toggle","removeOverFlowEvents","split","filter","join","click","controlId","getItemElement","updateButton","itemProp","getItem","tabs","merge","add","updateButtonSize","RibbonCheckBox","createCheckBox","inputEle","checkBoxSettings","CheckBox","checked","label","labelPosition","change","checkBoxObj","dataBind","updateCheckBox","RibbonColorPicker","createColorPicker","colorPickerSettings","colorPicker","ColorPicker","columns","enableOpacity","mode","modeSwitcher","noColor","presetColors","showButtons","beforeClose","parentElement","remove","beforeOpen","beforeTileRender","open","select","wrapper","EventHandler","toggleWrapperHover","bind","isAdd","colorPickerEle","activeLayout","className","innerHTML","insertBefore","firstChild","colorPickerObj","splitBtn","event","close","closest","getColorPickerObj","getValue","updateColorPicker","unwireColorPickerEvents","RibbonComboBox","createComboBox","comboBoxSettings","ComboBox","allowCustom","floatLabelType","ignoreAccent","ignoreCase","allowFiltering","autofill","dataSource","enabled","fields","filterType","footerTemplate","groupTemplate","headerTemplate","index","itemTemplate","noRecordsTemplate","placeholder","popupHeight","popupWidth","showClearButton","sortOrder","width","filtering","comboBoxObj","getComboBoxObj","query","hidePopup","showPopup","updateComboBox","RibbonDropDown","createDropDown","dropDownSettings","DropDownButton","closeActionEvents","items","createPopupOnClick","beforeItemRender","appendTo","dropdownElement","dropdown","createOverFlowDropDown","name","groupEle","overflowEle","args","cancel","isNullOrUndefined","createTooltip","onkeydown","itemIndex","keyActionHandler","comboBoxEle","controlElements","slice","querySelectorAll","templateElements","concat","comboBoxElements","parseInt","shiftKey","handleNavigation","updateItemIndex","focusLauncherIcon","launcherIconEle","groupContainer","preventDefault","focus","ribbonItem","removeOverFlowDropDown","Tooltip","getDDBItemElement","dropDown","getOverflowDropDownPopup","contentEle","tabIndex","groups","groupIndex","getDropDownObj","dropDownEle","addItems","Items","removeItems","isUniqueId","dropdownObj","updateDropDown","btnEle","control","updateDropDownSize","push","RibbonSplitButton","createSplitButton","splitButtonSettings","splitbutton","SplitButton","dropdownEle","stopImmediatePropagation","setContent","splitButtonEle","ddbId","getAttribute","popupEle","document","getSplitButtonObj","splitBtnObj","updateSplitButton","updateSplitButtonSize","getIndex","arr","condition","getTemplateFunction","template","compile","tempEle","tagName","outerHTML","tab","j","group","k","collections","collection","l","collectionIndex","getCollection","getGroup","destroyControl","moduleName","updateCommonProperty","commonProp","updateControlDisabled","disable","tabObj","Classic","displayOptions","ribbonDropDownModule","Simplified","enableGroupOverflow","constants.GROUPOF_BUTTON_ID","overflowDDB","isTooltipPresent","tooltip","title","setToolTipContent","tooltipData","tooltipContent","targetId","data","constants.RIBBON_TOOLTIP_CONTAINER","textContainer","append","header","constants.RIBBON_TOOLTIP_TITLE","constants.RIBBON_TEXT_CONTAINER","customCss","constants.RIBBON_TOOLTIP_ICON","constants.RIBBON_TOOLTIP_CONTENT","constants.RIBBON_TOOLTIP","ribbon","ribbonTooltip","constants.RIBBON_TOOLTIP_TARGET","beforeRender","windowCollision","destroyTooltip","updateTooltipProp","attributes","elementClass","replace","addClass","RibbonGroupButton","createGroupButton","itemElement","groupBtnSettings","groupButtonSettings","btnContainerEle","count","constants.RIBBON_GROUP_BUTTON_ID","groupButtonEle","constants.RIBBON_GROUP_BUTTON","constants.RIBBON_GROUP_BUTTON_CONTENT","selection","Single","constants.RIBBON_SINGLE_BUTTON_SELECTION","constants.RIBBON_MULTIPLE_BUTTON_SELECTION","selected","Multiple","ribbonTooltipSettings","groupButtonClicked","dropdownIcon","activeEleCount","isSelected","dropDownPopup","addGroupButtonHeader","handleFocusState","handleGroupButtonNavigation","grpBtnSettings","previousItems","selectingItems","selectedItems","eventArgs","beforeClick","grpBtnIndex","n","itemsCount","eventArgs_1","switchGroupButton","containerEle","itemID","groupButtonHeader","constants.HEADER_ID","targetEle","isOverflowPopup","constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP","isIconOnly","constants.SPACE","children","destroyDropDown","updateGroupButtonSize","RibbonGallery","createGallery","gallerySettings","renderGalleryItems","createPopup","popup","Popup","popupID","isPopup","galleryContainerEle","galleryEle","galleryWrapper","isCollapsible","_loop_1","headerEle","isHeightDefined","this_1","itemHeight","attrs","tabindex","itemEventArgs","selectedItemIndex","setActiveState","currentTarget","onmouseover","hoverEventArgs","itemHover","itemWidth","style","height","paddingTop","paddingBottom","flexFlow","popupTemplate","iconEle","createGalleryTemplate","createGalleryPopupTemplate","itemCount","isAdded","isReact","portals","undefined","setWrapperWidth","itemsWidth","isWidthApplied","marginWidth","galleryItemEle","offsetWidth","itemStyles","window","getComputedStyle","paddingWidth","parseFloat","paddingLeft","paddingRight","marginLeft","marginRight","checkAvailableHeight","activeContent","galleryWrapperItems","simplifiedItemsCount","isHeight","galleryWrapperHeight","offsetHeight","itemsValues","marginTop","marginBottom","checkCollision","offsetValue","windowWidth","innerWidth","screenWidth","Math","abs","paddingStyles","popupContainerItems","isCollideOccurs","forEach","ele","popupItemStyles","round","setGalleryPopupHeight","top","popupTop","innerHeight","popupContainer","gallerypopupElement","body","relateTo","collision","X","Y","actionOnScroll","targetType","position","hide","switchGalleryItems","constants.CONTAINER_ID","galleryIcons","galleryContainer","selectedTab","constants.CONTENT_ID","popupButton","groupIconCss","popupContainerEle_1","setFoucsToFirstItem","popupEvents","formatUnit","galleryDDBEle","isInteracted","previousItem","currentItem","selctedGalleryItem","popupGalleryItem","galleryItemPopup","galleryItem","getElementById","selectingEventArgs","beforeSelect","startsWith","selectedEventArgs","galleryPopupItems","isOpen","popupEventArgs","popupOpen","popupClose","offsetX","show","buttonPosition","getBoundingClientRect","left","showGalleryPopup","hideGalleryPopup","isDropdown","galleryItemsIndex","handleGalleryPopupNavigation","galleryPopupEle","code","templateName","templateFunction","isStringTemplate","registeredTemplate","ref","setValue","Ribbon_1","Ribbon","Component","render","initialize","preRender","keysPress","idIndex","initialPropsData","hiddenElements","keyTipElements","hiddenGroups","itemsModel","targetTabs","isAddRemove","isUpdateItems","keyConfigs","leftarrow","rightarrow","shiftTab","getPersistData","addOnPersist","requiredModules","modules","canInjectColorPickerModule","member","canInjectGalleryModule","Gallery","backStageMenu","visible","fileMenu","menuItems","contextualTabs","enableKeyTips","getUniqueID","constants.RTL_CSS","renderTabs","ribbonContextualTabModule","addContextualTabs","ribbonFileMenuModule","createFileMenu","ribbonBackstageModule","createBackStage","createHelpPaneTemplate","refreshOverflow","addTabOverflowKeyTip","isKeytipOpen","wireEvents","wireKeyboardEvent","currentControlIndex","resizeHandler","keytipActionHandler","mouseEventHandler","keyboardModuleRibbon","KeyboardEvents","keyAction","eventName","galleryElements","ribbonControls","action","prevGroupId","prevGroupContainer","constants.RIBBON_GROUP_CONTAINER","elem","checkOverflow","scrollModule","scrollEle","constants.HORIZONTAL_SCROLLBAR","scrollStep","activePopup","getInstance","ribbonKeyTipModule","removeKeytip","isKeyTipPresent","keyPress","altKey","backstagePopup","hideBackstage","createKeytip","keyTipItems","toLowerCase","keytipPress","checkKeyTipPresent","keyTip","keyTipItem","addKeyTip","isKeyTipExist","keys","keytipData","tabsInternal","checkID","tabEle","constants.TAB_ID","tabItems","validateItemSize","createTabItems","toolbarEle","Tab","constants.RIBBON_TAB","selectedItem","overflowMode","tabCreated","ribbonTabSelected","selecting","ribbonTabSelecting","animation","tabAnimation","setProperty","constants.RIBBON_FILE_MENU_WIDTH","constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH","Toolbar","isMinimized","constants.RIBBON_MINIMIZE","minimize","val","trigger","display","refreshLayout","toggleLayout","switchLayout","hideLayoutSwitcher","addExpandCollapse","renderInitialTab","preventFocus","selectedTabId","selectedIndex","selectedContent","isContextual","constants.RIBBON_GROUP","elements","createGroups","isContextualTab","updateSelectedState","previousIndex","calculateHiddenElementsWidth","updateItem","splice","ribbonGalleryModule","ofTabContainer","overflowTarget","constants.RIBBON_TAB_ACTIVE","activeTab","constants.OVERFLOW_ID","constants.HIDE_CSS","checkOverflowHiddenItems","tabID","isBreak","tabContent","constants.TAB_CONTENT","isOverFlow","checkGroupShrinking","createOverflowDropdown","checkSimplifiedItemShrinking","createSimplfiedOverflow","HScroll","destroyScroll","removeOverflowDropdown","checkGroupExpanding","removeSimplfiedOverflow","checkSimplifiedItemExpanding","tabOverflow","itemContainer","allowedSizes","setItemSize","valString","removeAttribute","orderedGroups","getGroupResizeOrder","isGroupUpdated","collectionEle","Overflow","groupHidden","itemHidden","isAllItemHidden","isEmptyCollection_1","groupItems","i_1","indexOf","calculateOverflowItemsWidth","calculateMediumDataWidth","i_2","createOverflowPopup","DropDown","GroupButton","updatePopupItems","constants.RIBBON_ITEM","itemsLength","checkEmptyCollection","isEmptyCollection","isGroupOF","isMenu","isLeft","removeProperty","isClear","flag","overflowtarget","overflowDDBEle","ofGroupContainer","groupItemEle","groupElement","isGroupHidden","widthDifference","checkWidthDifference","removeOverflowEvent","childElementCount","isHeaderVisible","removeOverflowButton","groupId","isHidden","isItemHidden","overflowTab","groupTabContainer","groupHeader","isResize","addOverflowButton","constants.RIBBON_GROUP_OF_BUTTON","overflowBtnTarget","overflowHeader","groupHeader_1","constants.RIBBON_OVERFLOW_HEADER","createGroupContainer","createOfTabContainer","constants.OVRLOF_BUTTON_ID","collapseButton","constants.RIBBON_OVERALL_OF_BUTTON","addOverflowEvents","ribbonButtonModule","ribbonSplitButtonModule","ribbonCheckBoxModule","ribbonColorPickerModule","ribbonComboBoxModule","ribbonGroupButtonModule","constants.RIBBON_OF_TAB_CONTAINER","isLarge","checkLargeToMedium","checkMediumToSmall","checkValidCollectionLength","ind","checkClassicCollection","isIncrement","checkClassicItem","shouldSkip","isCollapsed","canReduceCollection","canReduceItem","createShrinkEle","firstItem","start","end","shrinkEle","constants.RIBBON_ROW","data-start","data-end","moveItemToColumn","moveCollectionToColumn","orientation","Column","m","shrinkColumns","reduceItemsToSmall","middle","reduce","ele_1","reduceCollectionsToSmall","ele_2","setWidth","classicItems","shrinkColumn","isSmall","checkSmallToMedium","checkMediumToLarge","shouldClear","expandItemToMedium","parentEle","ele_4","expandCollectionsToMedium","ele_5","Row","expandItemsToLarge","container","ele_6","insertAdjacentElement","expandCollectionsToLarge","ele_7","handleContentSize","isRemoveOverflow","constants.RIBBON_GROUP_CONTENT","constants.RIBBON_CONTENT_HEIGHT","Template","createTemplateContent","constants.RIBBON_LARGE_ITEM","constants.RIBBON_MEDIUM_ITEM","constants.RIBBON_SMALL_ITEM","collapseOrder","groupOverFlow","constants.RIBBON_GROUP_OVERFLOW","constants.DROPDOWN_ID","i_3","expandOrder","this_2","state_1","removeDropdown","isCollapse","isUndefined","sort","a","priority","reverse","clearOverflowDropDown","nextTabId","selectingItem","previousTabId","nextIndex","selectedTabContent","this_3","_loop_3","ribbonTab","ondblclick","constants.RIBBON_TAB_ITEM","constants.RIBBON_SIMPLIFIED_MODE","btnId","isGroupOf","constants.RIBBON_OVERFLOW_TARGET","constants.OVERFLOW_ICON","constants.DROPDOWNBUTTON_HIDE","constants.RIBBON_GROUP_OVERFLOW_DDB","ribbonArgs","constants.RIBBON_POPUP_CONTROL","constants.RIBBON_OVERFLOW","upDownKeyHandler","getElementsByClassName","currentItemIndex","findDisabledItem","templateEle","itemType","controlItem","checkBoxEle","checkBox","isIncrease","constants.RIBBON_OF_GROUP_CONTAINER","ofGroupHeader","constants.RIBBON_COLLAPSE_BUTTON","constants.EXPAND_COLLAPSE_ICON","constants.COLLAPSE_BUTTON_ID","aria-label","role","constants.RIBBON_COLLAPSIBLE","constants.RIBBON_EXPAND_BUTTON","layoutSwitcherKeyTip","removeExpandCollapse","reRenderTabs","_i","_a","isNewTab","destroyTabItems","innerText","_b","groups_1","_c","_d","_e","_f","destroyFunction","groupList","i_4","alignType","i_5","groupContent","constants.RIBBON_COLUMN","groupCollection","itemList","itemEle_1","size","createItems","i_6","constants.RIBBON_GROUP_HEADER","ele_8","itemsize","createLauncherIcon","launcherIcon","constants.RIBBON_LAUNCHER_ICON_ELE","launcherIconCss","constants.RIBBON_LAUNCHER_ICON","constants.LAUNCHER_ID","constants.RIBBON_LAUNCHER","launcherIconClicked","launcherIconKeyTip","groupElements","showLauncherIcon","createCollection","isItemsHidden","initialProps","updateGroupProps","disabledGroups","collectionList","ribbonitem","sizeVal","collectionElements","constants.RIBBON_COLLECTION","createRibbonItem","itemElements","constants.DISABLED_CSS","i_7","hiddenItems","helpPaneTemplate","clearTemplate","ribbonTempEle","constants.RIBBON_HELP_TEMPLATE","constants.RIBBON_HELP_PANE_TEMPLATE_ID","after","renderReactTemplates","constants.RIBBON_TEMPLATE","renderItemTemplate","list","initId","constants.COLLECTION_ID","htmlAttrID","listitem","hasHtmlAtrrID","listItem","setCommonProperties","getItemModuleName","i_8","i_9","removeLauncherIcon","containerId","this_4","_loop_4","groupButtonID_1","galleryPopupBtn","clearOverflowResize","selectTab","tabId","showTab","showHideTab","hideTab","contextualTab_1","isTabHidden","this_5","_loop_5","index_1","enableTab","enableDisableTab","disableTab","tbItems","addTab","isAfter","tabItem","removeTab","groups_2","addGroup","ribbonGroups","removeGroup","removeItemElement","groupID","hideGroup","showHideGroup","showGroup","grpContainer","updateHiddenElements","updateInitialProps","checkHiddenElements","checkHiddenItems","hiddenProps","updateItemsSimplifiedWidth","out_i_1","this_6","_loop_6","hiddenEle","hiddenWidth","mediumDataItems","overflowItems","selectedOFTab","ofTab","hasAttribute","groupOFButton","i_10","previousWidth","hiddenItem","i_11","disableGroup","enableDisableGroup","enableGroup","isDisabled","addCollection","ribbonCollections","collection_1","removeCollection","collectionId","ribbonGroup","addItem","ribbonItems","item_1","removeItem","itemId","ribbonCollection","hideItem","showHideItem","showItem","isInsert","checkOverflowItems","updateTab","groups_3","updateGroup","removeCss","match","removeClass","ribbongroup","updateCollection","ribboncollection","enableDisableItem","enableItem","disableItem","isOverflow","isUpdated","toggleAttribute","unwireEvents","refreshing","onPropertyChanged","newProp","oldProp","toolbarItem","updateContextualTabs","updateFileMenu","updateBackStageMenu","TabAnimationSettings","NotifyPropertyChanges","options","Inject","RibbonFileMenu","fileMenuDDB","destroyDDB","fileMenuOptions","ddbElement","constants.RIBBON_FILE_MENU_ID","ddbBeforeEvent","ddbAfterEvent","createRibbonMenu","refreshActiveTabBorder","addFileMenuTooltip","addFileMenuKeytip","cloneMenuItem","itemsList","separator","url","menuOptions","ulElem","constants.RIBBON_FILE_MENU_LIST","menuctrl","Menu","animationSettings","showItemOnClick","menuBeforeEvent","onClose","menuAfterEvent","onOpen","menuSelect","parentItem","destroyMenu","removeFileMenuTooltip","removeFileMenuKeytip","insertAfter","enableItems","disableItems","setItem","refresh","RibbonBackstage","backstageButton","backStageOptions","backstageButtonEle","constants.RIBBON_BACKSTAGE_MENU_ID","constants.RIBBON_BACKSTAGE","createBackStagePopup","createBackStageTemplate","footerItemCount","isFooter","createBackstageMenu","menuCtrl","checkMenuItems","footerMenuCtrl","stopPropagation","showBackstage","popupHTMLElement","constants.RIBBON_BACKSTAGE_OPEN","menuItem","menuWrapper","firstMenuEle","menuIndex","isCloseBtn","createBackStageContent","addBackStageMenuTooltip","addBackStageMenuKeyTip","onClickEvent","backStageItems","constants.RIBBON_BACKSTAGE_TEXT_MENU","constants.RIBBON_BACKSTAGE_POPUP_ID","constants.RIBBON_BACKSTAGE_POPUP","HTMLElement","updatePopupPositionOnRtl","closeBtnEle","arrowUp","arrowDown","popupStyle","right","ulFooterElem","constants.RIBBON_BACKSTAGE_MENU_WRAPPER","backButton","closeBtn","constants.BACKSTAGE_CLOSE_ICON","isBackButtonClicked","itemsWrapperEle","constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER","constants.RIBBON_FOOTER_MENU_LIST","ulMenuElem","constants.RIBBON_MENU_LIST","constants.RIBBON_BACKSTAGE_MENU","cloneFooterMenuItem","backstageContentEle","constants.RIBBON_BACKSTAGE_CONTENT","backstageTempEle","constants.RIBBON_BACKSTAGE_TEMPLATE","contentItem","isBackButton","backStageItemClick","removeBackstageMenuTooltip","removeBackstageMenuKeyTip","addBackstageItems","backstageItems","item1","removeBackstageItems","RibbonContextualTab","constants.RIBBON_CONTEXTUAL_TAB","contextualTab","RibbonKeyTip","createKeyTipElement","popupKeyTipData","backstageKeyTipData","calculateItemPosition","isMethod","xOffset","yOffset","isTab","isPopUpItem","splitBtnID","keyEle","isPopUpPresent","offsetParent","keytipElement","constants.RIBBON_KEYTIP","constants.RIBBON_KEYTIP_ID","calculateKeyTipPosition","isKeytipPresent","toUpperCase","setTimeout","galleryID","clickItems","commonItemsKeyTipPress","isGroupItems","isKeytipPopupOpen","isInteractableElement","isKeyPressed","keytipData_1","keyText","showKeyTips","hideKeyTips"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ej2-ribbon.umd.min.js","sources":["../src/ribbon/base/interface.js","../src/ribbon/models/ribbon-button-settings.js","../src/ribbon/models/ribbon-checkbox-settings.js","../src/ribbon/models/ribbon-colorpicker-settings.js","../src/ribbon/models/ribbon-combobox-settings.js","../src/ribbon/models/ribbon-dropdown-settings.js","../src/ribbon/models/ribbon-splitbutton-settings.js","../src/ribbon/models/ribbon-tooltip.js","../src/ribbon/models/ribbon-group-button-item.js","../src/ribbon/models/ribbon-group-button-settings.js","../src/ribbon/models/ribbon-gallery-item.js","../src/ribbon/models/ribbon-gallery-group.js","../src/ribbon/models/ribbon-gallery-settings.js","../src/ribbon/models/ribbon-item.js","../src/ribbon/models/ribbon-collection.js","../src/ribbon/models/ribbon-group.js","../src/ribbon/models/ribbon-tab.js","../src/ribbon/models/ribbon-file-menu-settings.js","../src/ribbon/models/ribbon-back-button.js","../src/ribbon/models/ribbon-backstage-item.js","../src/ribbon/models/ribbon-back-stage-settings.js","../src/ribbon/models/ribbon-contextual-tab-settings.js","../src/ribbon/base/constant.js","../src/ribbon/items/ribbon-button.js","../src/ribbon/items/ribbon-checkbox.js","../src/ribbon/items/ribbon-colorpicker.js","../src/ribbon/items/ribbon-combobox.js","../src/ribbon/items/ribbon-dropdown.js","../src/ribbon/items/ribbon-splitbutton.js","../src/ribbon/base/utils.js","../src/ribbon/items/ribbon-groupbutton.js","../src/ribbon/items/ribbon-gallery.js","../src/ribbon/base/ribbon.js","../src/ribbon/modules/ribbon-filemenu.js","../src/ribbon/modules/ribbon-backstage.js","../src/ribbon/modules/ribbon-contextualtab.js","../src/ribbon/modules/ribbon-keytip.js"],"sourcesContent":["/**\n * Defines the layout types of ribbon.\n */\nexport var RibbonLayout;\n(function (RibbonLayout) {\n /**\n * Displays the ribbon tab content in classic layout.\n */\n RibbonLayout[\"Classic\"] = \"Classic\";\n /**\n * Displays the ribbon tab content in simplified layout.\n */\n RibbonLayout[\"Simplified\"] = \"Simplified\";\n})(RibbonLayout || (RibbonLayout = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var ItemOrientation;\n(function (ItemOrientation) {\n /**\n * Displays the collection of items in rows.\n */\n ItemOrientation[\"Row\"] = \"Row\";\n /**\n * Displays the collection of items in column.\n */\n ItemOrientation[\"Column\"] = \"Column\";\n})(ItemOrientation || (ItemOrientation = {}));\n/**\n * Defines the current size of the ribbon item in normal mode.\n *\n * @aspNumberEnum\n */\nexport var RibbonItemSize;\n(function (RibbonItemSize) {\n /**\n * The item appears with large icon and text at the bottom.\n */\n RibbonItemSize[RibbonItemSize[\"Large\"] = 4] = \"Large\";\n /**\n * The item appears with small icon and text at the right.\n */\n RibbonItemSize[RibbonItemSize[\"Medium\"] = 2] = \"Medium\";\n /**\n * The item appears with small icon only.\n */\n RibbonItemSize[RibbonItemSize[\"Small\"] = 1] = \"Small\";\n})(RibbonItemSize || (RibbonItemSize = {}));\n/**\n * Defines how to show an item in ribbon simplified layout.\n *\n * @aspNumberEnum\n */\nexport var DisplayMode;\n(function (DisplayMode) {\n /**\n * The item appears in the classic layout group.\n */\n DisplayMode[DisplayMode[\"Classic\"] = 4] = \"Classic\";\n /**\n * The item appears in the simplified layout group.\n */\n DisplayMode[DisplayMode[\"Simplified\"] = 2] = \"Simplified\";\n /**\n * The item appears in overflow popup.\n */\n DisplayMode[DisplayMode[\"Overflow\"] = 1] = \"Overflow\";\n /**\n * The item appears in classic layout group, simplified layout group, and overflow popup based on ribbon overflow state.\n */\n DisplayMode[DisplayMode[\"Auto\"] = 7] = \"Auto\";\n})(DisplayMode || (DisplayMode = {}));\n/**\n * Defines the type of the ribbon item.\n */\nexport var RibbonItemType;\n(function (RibbonItemType) {\n /**\n * Renders button as ribbon item.\n */\n RibbonItemType[\"Button\"] = \"Button\";\n /**\n * Renders checkbox as ribbon item.\n */\n RibbonItemType[\"CheckBox\"] = \"CheckBox\";\n /**\n * Renders color picker as ribbon item.\n */\n RibbonItemType[\"ColorPicker\"] = \"ColorPicker\";\n /**\n * Renders combobox as ribbon item.\n */\n RibbonItemType[\"ComboBox\"] = \"ComboBox\";\n /**\n * Renders dropdownbutton as ribbon item.\n */\n RibbonItemType[\"DropDown\"] = \"DropDown\";\n /**\n * Renders splitbutton as ribbon item.\n */\n RibbonItemType[\"SplitButton\"] = \"SplitButton\";\n /**\n * Renders the group button content as ribbon item.\n */\n RibbonItemType[\"GroupButton\"] = \"GroupButton\";\n /**\n * Renders the gallery as ribbon item.\n */\n RibbonItemType[\"Gallery\"] = \"Gallery\";\n /**\n * Renders the template content as ribbon item.\n */\n RibbonItemType[\"Template\"] = \"Template\";\n})(RibbonItemType || (RibbonItemType = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var RibbonGroupButtonSelection;\n(function (RibbonGroupButtonSelection) {\n /**\n * Allows selecting single button from button group.\n */\n RibbonGroupButtonSelection[\"Single\"] = \"Single\";\n /**\n * Allows selecting multiple buttons from button group.\n */\n RibbonGroupButtonSelection[\"Multiple\"] = \"Multiple\";\n})(RibbonGroupButtonSelection || (RibbonGroupButtonSelection = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon button item.\n */\nvar RibbonButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonButtonSettings, _super);\n function RibbonButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isToggle\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isPrimary\", void 0);\n __decorate([\n Property({})\n ], RibbonButtonSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"clicked\", void 0);\n return RibbonButtonSettings;\n}(ChildProperty));\nexport { RibbonButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon checkbox item.\n */\nvar RibbonCheckBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonCheckBoxSettings, _super);\n function RibbonCheckBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of checkbox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCheckBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonCheckBoxSettings.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RibbonCheckBoxSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property({})\n ], RibbonCheckBoxSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"change\", void 0);\n return RibbonCheckBoxSettings;\n}(ChildProperty));\nexport { RibbonCheckBoxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon color picker.\n */\nvar RibbonColorPickerSettings = /** @class */ (function (_super) {\n __extends(RibbonColorPickerSettings, _super);\n function RibbonColorPickerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of colorpicker.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonColorPickerSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(10)\n ], RibbonColorPickerSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"label\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"enableOpacity\", void 0);\n __decorate([\n Property('Palette')\n ], RibbonColorPickerSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"modeSwitcher\", void 0);\n __decorate([\n Property(false)\n ], RibbonColorPickerSettings.prototype, \"noColor\", void 0);\n __decorate([\n Property(null)\n ], RibbonColorPickerSettings.prototype, \"presetColors\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"showButtons\", void 0);\n __decorate([\n Property('#008000ff')\n ], RibbonColorPickerSettings.prototype, \"value\", void 0);\n __decorate([\n Property({})\n ], RibbonColorPickerSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeTileRender\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"select\", void 0);\n return RibbonColorPickerSettings;\n}(ChildProperty));\nexport { RibbonColorPickerSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '@syncfusion/ej2-dropdowns';\n/**\n * Defines the ribbon combobox item.\n */\nvar RibbonComboBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonComboBoxSettings, _super);\n function RibbonComboBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of combobox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonComboBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonComboBoxSettings.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"autofill\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property([])\n ], RibbonComboBoxSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], RibbonComboBoxSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('Contains')\n ], RibbonComboBoxSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"index\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], RibbonComboBoxSettings.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], RibbonComboBoxSettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], RibbonComboBoxSettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"showClearButton\", void 0);\n __decorate([\n Property('None')\n ], RibbonComboBoxSettings.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"value\", void 0);\n __decorate([\n Property('150px')\n ], RibbonComboBoxSettings.prototype, \"width\", void 0);\n __decorate([\n Property({})\n ], RibbonComboBoxSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"select\", void 0);\n return RibbonComboBoxSettings;\n}(ChildProperty));\nexport { RibbonComboBoxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon DropDownButton item.\n */\nvar RibbonDropDownSettings = /** @class */ (function (_super) {\n __extends(RibbonDropDownSettings, _super);\n function RibbonDropDownSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonDropDownSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonDropDownSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"target\", void 0);\n __decorate([\n Property(false)\n ], RibbonDropDownSettings.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Property({})\n ], RibbonDropDownSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"select\", void 0);\n return RibbonDropDownSettings;\n}(ChildProperty));\nexport { RibbonDropDownSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon SplitButton item.\n */\nvar RibbonSplitButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonSplitButtonSettings, _super);\n function RibbonSplitButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonSplitButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonSplitButtonSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"target\", void 0);\n __decorate([\n Property({})\n ], RibbonSplitButtonSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"select\", void 0);\n return RibbonSplitButtonSettings;\n}(ChildProperty));\nexport { RibbonSplitButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon tooltip.\n */\nvar RibbonTooltip = /** @class */ (function (_super) {\n __extends(RibbonTooltip, _super);\n function RibbonTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"title\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"iconCss\", void 0);\n return RibbonTooltip;\n}(ChildProperty));\nexport { RibbonTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonItem = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonItem, _super);\n function RibbonGroupButtonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of group button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroupButtonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"keyTip\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonGroupButtonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroupButtonItem.prototype, \"selected\", void 0);\n __decorate([\n Property({})\n ], RibbonGroupButtonItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"beforeClick\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"click\", void 0);\n return RibbonGroupButtonItem;\n}(ChildProperty));\nexport { RibbonGroupButtonItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroupButtonItem } from './ribbon-group-button-item';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonSettings, _super);\n function RibbonGroupButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonGroupButtonSettings.prototype, \"header\", void 0);\n __decorate([\n Property('Single')\n ], RibbonGroupButtonSettings.prototype, \"selection\", void 0);\n __decorate([\n Collection([], RibbonGroupButtonItem)\n ], RibbonGroupButtonSettings.prototype, \"items\", void 0);\n return RibbonGroupButtonSettings;\n}(ChildProperty));\nexport { RibbonGroupButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon gallery item.\n */\nvar RibbonGalleryItem = /** @class */ (function (_super) {\n __extends(RibbonGalleryItem, _super);\n function RibbonGalleryItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property({})\n ], RibbonGalleryItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonGalleryItem.prototype, \"disabled\", void 0);\n return RibbonGalleryItem;\n}(ChildProperty));\nexport { RibbonGalleryItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGalleryItem } from './ribbon-gallery-item';\n/**\n * Defines the ribbon gallery group.\n */\nvar RibbonGalleryGroup = /** @class */ (function (_super) {\n __extends(RibbonGalleryGroup, _super);\n function RibbonGalleryGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], RibbonGalleryItem)\n ], RibbonGalleryGroup.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryGroup.prototype, \"header\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGalleryGroup.prototype, \"itemWidth\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGalleryGroup.prototype, \"itemHeight\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryGroup.prototype, \"cssClass\", void 0);\n return RibbonGalleryGroup;\n}(ChildProperty));\nexport { RibbonGalleryGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property, Event } from '@syncfusion/ej2-base';\nimport { RibbonGalleryGroup } from './ribbon-gallery-group';\n/**\n * Defines the ribbon gallery settings.\n */\nvar RibbonGallerySettings = /** @class */ (function (_super) {\n __extends(RibbonGallerySettings, _super);\n function RibbonGallerySettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], RibbonGalleryGroup)\n ], RibbonGallerySettings.prototype, \"groups\", void 0);\n __decorate([\n Property(3)\n ], RibbonGallerySettings.prototype, \"itemCount\", void 0);\n __decorate([\n Property(null)\n ], RibbonGallerySettings.prototype, \"selectedItemIndex\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGallerySettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGallerySettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property('')\n ], RibbonGallerySettings.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], RibbonGallerySettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"itemHover\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"beforeSelect\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"select\", void 0);\n return RibbonGallerySettings;\n}(ChildProperty));\nexport { RibbonGallerySettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Complex, Property } from '@syncfusion/ej2-base';\nimport { RibbonItemSize, DisplayMode } from '../base/interface';\nimport { RibbonButtonSettings } from './ribbon-button-settings';\nimport { RibbonCheckBoxSettings } from './ribbon-checkbox-settings';\nimport { RibbonColorPickerSettings } from './ribbon-colorpicker-settings';\nimport { RibbonComboBoxSettings } from './ribbon-combobox-settings';\nimport { RibbonDropDownSettings } from './ribbon-dropdown-settings';\nimport { RibbonSplitButtonSettings } from './ribbon-splitbutton-settings';\nimport { RibbonTooltip } from './ribbon-tooltip';\nimport { RibbonGroupButtonSettings } from './ribbon-group-button-settings';\nimport { RibbonGallerySettings } from './ribbon-gallery-settings';\n/**\n * Defines the ribbon item.\n */\nvar RibbonItem = /** @class */ (function (_super) {\n __extends(RibbonItem, _super);\n function RibbonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of item.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"keyTip\", void 0);\n __decorate([\n Property(RibbonItemSize.Medium)\n ], RibbonItem.prototype, \"activeSize\", void 0);\n __decorate([\n Property(RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n ], RibbonItem.prototype, \"allowedSizes\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Button')\n ], RibbonItem.prototype, \"type\", void 0);\n __decorate([\n Property(DisplayMode.Auto)\n ], RibbonItem.prototype, \"displayOptions\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Complex({}, RibbonButtonSettings)\n ], RibbonItem.prototype, \"buttonSettings\", void 0);\n __decorate([\n Complex({}, RibbonDropDownSettings)\n ], RibbonItem.prototype, \"dropDownSettings\", void 0);\n __decorate([\n Complex({}, RibbonCheckBoxSettings)\n ], RibbonItem.prototype, \"checkBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonColorPickerSettings)\n ], RibbonItem.prototype, \"colorPickerSettings\", void 0);\n __decorate([\n Complex({}, RibbonComboBoxSettings)\n ], RibbonItem.prototype, \"comboBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonSplitButtonSettings)\n ], RibbonItem.prototype, \"splitButtonSettings\", void 0);\n __decorate([\n Complex({}, RibbonGroupButtonSettings)\n ], RibbonItem.prototype, \"groupButtonSettings\", void 0);\n __decorate([\n Complex({}, RibbonGallerySettings)\n ], RibbonItem.prototype, \"gallerySettings\", void 0);\n return RibbonItem;\n}(ChildProperty));\nexport { RibbonItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonItem } from './ribbon-item';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCollection = /** @class */ (function (_super) {\n __extends(RibbonCollection, _super);\n function RibbonCollection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of collection.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCollection.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonItem)\n ], RibbonCollection.prototype, \"items\", void 0);\n return RibbonCollection;\n}(ChildProperty));\nexport { RibbonCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonCollection } from './ribbon-collection';\n/**\n * Defines the ribbon group.\n */\nvar RibbonGroup = /** @class */ (function (_super) {\n __extends(RibbonGroup, _super);\n function RibbonGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Group.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroup.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"launcherIconKeyTip\", void 0);\n __decorate([\n Collection([], RibbonCollection)\n ], RibbonGroup.prototype, \"collections\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"isCollapsed\", void 0);\n __decorate([\n Property(true)\n ], RibbonGroup.prototype, \"isCollapsible\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"enableGroupOverflow\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"groupIconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"header\", void 0);\n __decorate([\n Property('Column')\n ], RibbonGroup.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"overflowHeader\", void 0);\n __decorate([\n Property(0)\n ], RibbonGroup.prototype, \"priority\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"showLauncherIcon\", void 0);\n return RibbonGroup;\n}(ChildProperty));\nexport { RibbonGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroup } from './ribbon-group';\n/**\n * Defines the ribbon tab.\n */\nvar RibbonTab = /** @class */ (function (_super) {\n __extends(RibbonTab, _super);\n function RibbonTab() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonTab.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonGroup)\n ], RibbonTab.prototype, \"groups\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"header\", void 0);\n return RibbonTab;\n}(ChildProperty));\nexport { RibbonTab };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Event, Complex, Collection } from '@syncfusion/ej2-base';\nimport { MenuAnimationSettings, MenuItem } from '@syncfusion/ej2-navigations';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar FileMenuSettings = /** @class */ (function (_super) {\n __extends(FileMenuSettings, _super);\n function FileMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of FileMenu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n FileMenuSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], FileMenuSettings.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"visible\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], FileMenuSettings.prototype, \"menuItems\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Complex({}, MenuAnimationSettings)\n ], FileMenuSettings.prototype, \"animationSettings\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], FileMenuSettings.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"select\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"keyTip\", void 0);\n return FileMenuSettings;\n}(ChildProperty));\nexport { FileMenuSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageBackButton = /** @class */ (function (_super) {\n __extends(BackstageBackButton, _super);\n function BackstageBackButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property(true)\n ], BackstageBackButton.prototype, \"visible\", void 0);\n return BackstageBackButton;\n}(ChildProperty));\nexport { BackstageBackButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Event } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageItem = /** @class */ (function (_super) {\n __extends(BackstageItem, _super);\n function BackstageItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"separator\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"isFooter\", void 0);\n __decorate([\n Event()\n ], BackstageItem.prototype, \"backStageItemClick\", void 0);\n return BackstageItem;\n}(ChildProperty));\nexport { BackstageItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Complex, Collection } from '@syncfusion/ej2-base';\nimport { BackstageBackButton } from './ribbon-back-button';\nimport { BackstageItem } from './ribbon-backstage-item';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar BackStageMenu = /** @class */ (function (_super) {\n __extends(BackStageMenu, _super);\n function BackStageMenu() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Backstage Menu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n BackStageMenu.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], BackStageMenu.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackStageMenu.prototype, \"keyTip\", void 0);\n __decorate([\n Property(false)\n ], BackStageMenu.prototype, \"visible\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], BackStageMenu.prototype, \"target\", void 0);\n __decorate([\n Complex({}, BackstageBackButton)\n ], BackStageMenu.prototype, \"backButton\", void 0);\n __decorate([\n Collection([], BackstageItem)\n ], BackStageMenu.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], BackStageMenu.prototype, \"template\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], BackStageMenu.prototype, \"ribbonTooltipSettings\", void 0);\n return BackStageMenu;\n}(ChildProperty));\nexport { BackStageMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Collection } from '@syncfusion/ej2-base';\nimport { RibbonTab } from './ribbon-tab';\n/**\n * Defines the ribbon contextual tab.\n */\nvar RibbonContextualTabSettings = /** @class */ (function (_super) {\n __extends(RibbonContextualTabSettings, _super);\n function RibbonContextualTabSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of contextual tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonContextualTabSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonContextualTabSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], RibbonContextualTabSettings.prototype, \"isSelected\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], RibbonContextualTabSettings.prototype, \"tabs\", void 0);\n return RibbonContextualTabSettings;\n}(ChildProperty));\nexport { RibbonContextualTabSettings };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var ITEM_VERTICAL_CENTER = 'e-ribbon-vertical-center';\n/** @hidden */\nexport var EXPAND_COLLAPSE_ICON = 'e-icons e-drop-icon';\n/** @hidden */\nexport var BACKSTAGE_CLOSE_ICON = 'e-icons e-arrow-left';\n/** @hidden */\nexport var OVERFLOW_ICON = 'e-icons e-more-horizontal-1';\n/** @hidden */\nexport var VERTICAL_DDB = 'e-vertical';\n/** @hidden */\nexport var DISABLED_CSS = 'e-disabled';\n/** @hidden */\nexport var RTL_CSS = 'e-rtl';\n/** @hidden */\nexport var RIBBON_HOVER = 'e-ribbon-hover';\n/** @hidden */\nexport var RIBBON_CONTROL = 'e-ribbon-control';\n/** @hidden */\nexport var RIBBON_POPUP_CONTROL = 'e-ribbon-popup-control';\n/** @hidden */\nexport var RIBBON_POPUP_OPEN = 'e-ribbon-open';\n/** @hidden */\nexport var RIBBON_KEYTIP = 'e-ribbon-keytip';\n/** @hidden */\nexport var SPACE = ' ';\n/** @hidden */\nexport var HORIZONTAL_SCROLLBAR = 'e-hscroll-bar';\n/** @hidden */\nexport var HIDE_CSS = 'e-ribbon-hide';\n/** @hidden */\nexport var RIBBON_TAB = 'e-ribbon-tab';\n/** @hidden */\nexport var RIBBON_CONTEXTUAL_TAB = 'e-ribbon-contextual-tab';\n/** @hidden */\nexport var RIBBON_TAB_ACTIVE = 'e-ribbon-active';\n/** @hidden */\nexport var RIBBON_TAB_ITEM = 'e-ribbon-tab-item';\n/** @hidden */\nexport var RIBBON_COLLAPSE_BUTTON = 'e-ribbon-collapse-btn';\n/** @hidden */\nexport var RIBBON_EXPAND_BUTTON = 'e-ribbon-expand-btn';\n/** @hidden */\nexport var RIBBON_COLLAPSIBLE = 'e-ribbon-collapsible';\n/** @hidden */\nexport var RIBBON_OVERALL_OF_BUTTON = 'e-ribbon-overall-of-btn';\n/** @hidden */\nexport var RIBBON_GROUP_OF_BUTTON = 'e-ribbon-group-of-btn';\n/** @hidden */\nexport var RIBBON_OVERFLOW_TARGET = 'e-ribbon-overflow-target';\n/** @hidden */\nexport var RIBBON_OVERFLOW = 'e-ribbon-overflow';\n/** @hidden */\nexport var TAB_CONTENT = 'e-content';\n/** @hidden */\nexport var RIBBON_MINIMIZE = 'e-ribbon-minimize';\n/** @hidden */\nexport var RIBBON_GROUP = 'e-ribbon-group';\n/** @hidden */\nexport var RIBBON_SINGLE_BUTTON_SELECTION = 'e-ribbon-single-selection';\n/** @hidden */\nexport var RIBBON_MULTIPLE_BUTTON_SELECTION = 'e-ribbon-multiple-selection';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON = 'e-ribbon-group-button';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_OVERFLOW_POPUP = 'e-ribbon-group-button-overflow-popup';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_CONTENT = 'e-ribbon-group-button-content';\n/** @hidden */\nexport var RIBBON_GROUP_CONTAINER = 'e-ribbon-group-container';\n/** @hidden */\nexport var RIBBON_OF_TAB_CONTAINER = 'e-ribbon-of-tab';\n/** @hidden */\nexport var RIBBON_OF_GROUP_CONTAINER = 'e-ribbon-of-group-container';\n/** @hidden */\nexport var RIBBON_GROUP_CONTENT = 'e-ribbon-group-content';\n/** @hidden */\nexport var RIBBON_GROUP_HEADER = 'e-ribbon-group-header';\n/** @hidden */\nexport var RIBBON_OVERFLOW_HEADER = 'e-ribbon-overflow-header';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW = 'e-ribbon-group-overflow';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW_DDB = 'e-ribbon-group-overflow-ddb';\n/** @hidden */\nexport var RIBBON_LAUNCHER = 'e-ribbon-launcher';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON_ELE = 'e-ribbon-launcher-icon';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON = 'e-icons e-launcher';\n/** @hidden */\nexport var RIBBON_COLLECTION = 'e-ribbon-collection';\n/** @hidden */\nexport var RIBBON_ITEM = 'e-ribbon-item';\n/** @hidden */\nexport var RIBBON_ROW = 'e-ribbon-row';\n/** @hidden */\nexport var RIBBON_COLUMN = 'e-ribbon-column';\n/** @hidden */\nexport var RIBBON_LARGE_ITEM = 'e-ribbon-large-item';\n/** @hidden */\nexport var RIBBON_MEDIUM_ITEM = 'e-ribbon-medium-item';\n/** @hidden */\nexport var RIBBON_SMALL_ITEM = 'e-ribbon-small-item';\n/** @hidden */\nexport var RIBBON_CONTENT_HEIGHT = 'e-ribbon-content-height';\n/** @hidden */\nexport var DROPDOWNBUTTON = 'e-dropdown-btn';\n/** @hidden */\nexport var DROPDOWNBUTTON_HIDE = 'e-caret-hide';\n/** @hidden */\nexport var RIBBON_TEMPLATE = 'e-ribbon-template';\n/** @hidden */\nexport var RIBBON_HELP_TEMPLATE = 'e-ribbon-help-template';\n/** @hidden */\nexport var RIBBON_TOOLTIP = 'e-ribbon-tooltip';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TARGET = 'e-ribbon-tooltip-target';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TITLE = 'e-ribbon-tooltip-title';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTENT = 'e-ribbon-tooltip-content';\n/** @hidden */\nexport var RIBBON_TOOLTIP_ICON = 'e-ribbon-tooltip-icon';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTAINER = 'e-ribbon-tooltip-container';\n/** @hidden */\nexport var RIBBON_TEXT_CONTAINER = 'e-ribbon-text-container';\n/** @hidden */\nexport var RIBBON_SIMPLIFIED_MODE = 'e-ribbon-simplified-mode';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP = 'e-ribbon-backstage-popup';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_OPEN = 'e-ribbon-backstage-open';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_CONTENT = 'e-ribbon-backstage-content';\n/** @hidden */\nexport var RIBBON_SELECTED_CONTENT = 'e-ribbon-selected-content';\n/** @hidden */\nexport var RIBBON_BACKSTAGE = 'e-ribbon-backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU = 'e-ribbon-backstage-menu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEMPLATE = 'e-ribbon-backstage-template';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_WRAPPER = 'e-ribbon-backstage-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_ITEMS_WRAPPER = 'e-ribbon-backstage-items-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEXT_MENU = 'e-blankicon';\n/** @hidden */\nexport var TAB_ID = '_tab';\n/** @hidden */\nexport var GROUP_ID = '_group';\n/** @hidden */\nexport var COLLECTION_ID = '_collection';\n/** @hidden */\nexport var ITEM_ID = '_item';\n/** @hidden */\nexport var COLLAPSE_BUTTON_ID = '_collapsebutton';\n/** @hidden */\nexport var OVRLOF_BUTTON_ID = '_sim_ovrl_overflow';\n/** @hidden */\nexport var GROUPOF_BUTTON_ID = '_sim_grp_overflow';\n/** @hidden */\nexport var HEADER_ID = '_header';\n/** @hidden */\nexport var LAUNCHER_ID = '_launcher';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var CONTAINER_ID = '_container';\n/** @hidden */\nexport var OVERFLOW_ID = '_overflow';\n/** @hidden */\nexport var DROPDOWN_ID = '_dropdown';\n/** @hidden */\nexport var RIBBON_FILE_MENU_ID = '_filemenu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_ID = '_backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP_ID = '_backstagepopup';\n/** @hidden */\nexport var RIBBON_FILE_MENU_LIST = '_filemenulist';\n/** @hidden */\nexport var RIBBON_MENU_LIST = '_menulist';\n/** @hidden */\nexport var RIBBON_FOOTER_MENU_LIST = '_footermenulist';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_ID = '_helppanetemplate';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_ID = '_grpbtn';\n/** @hidden */\nexport var RIBBON_KEYTIP_ID = '_keytip';\n/** @hidden */\nexport var RIBBON_FILE_MENU_WIDTH = '--fileMenuWidth';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_WIDTH = '--helpTemplateWidth';\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RibbonItemSize, setCustomAttributes } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_POPUP_CONTROL, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonButton = /** @class */ (function () {\n function RibbonButton(parent) {\n this.parent = parent;\n }\n RibbonButton.prototype.getModuleName = function () {\n return 'ribbonButton';\n };\n RibbonButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates button.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.createButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var btnSettings = item.buttonSettings;\n new Button({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n iconCss: btnSettings.iconCss,\n disabled: item.disabled,\n cssClass: (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (btnSettings.cssClass ? btnSettings.cssClass : '')).trim(),\n content: item.activeSize === RibbonItemSize.Small ? '' : btnSettings.content,\n isPrimary: btnSettings.isPrimary,\n isToggle: btnSettings.isToggle,\n created: btnSettings.created\n }, buttonEle);\n if (btnSettings.htmlAttributes) {\n if (btnSettings.htmlAttributes.id) {\n delete btnSettings.htmlAttributes.id;\n }\n setCustomAttributes(buttonEle, btnSettings.htmlAttributes);\n }\n buttonEle.onclick = function (e) {\n if (btnSettings.clicked) {\n btnSettings.clicked.call(_this, e);\n }\n };\n if (btnSettings.content) {\n buttonEle.setAttribute('aria-label', btnSettings.content);\n }\n else {\n buttonEle.setAttribute('aria-label', 'button');\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n buttonEle.setAttribute('data-control', item.type.toString());\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({ cssClass: buttonObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n var buttonObj = getComponent(buttonEle, Button);\n var cssClass = buttonObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n buttonObj.setProperties({ cssClass: cssClass.join(SPACE) });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the button.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonButton.prototype.click = function (controlId) {\n var buttonEle = getItemElement(this.parent, controlId);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n if (!buttonObj.disabled) {\n buttonObj.click();\n }\n };\n /**\n * Updates the button properties.\n *\n * @param {RibbonButtonSettingsModel} prop - Gets the button property.\n * @param {string} id - Gets the ID of button item.\n * @returns {void}\n */\n RibbonButton.prototype.updateButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.buttonSettings, prop);\n var buttonEle = getItemElement(this.parent, id, itemProp);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n if (prop.isToggle) {\n buttonEle.classList.add('e-active');\n }\n if (prop.cssClass) {\n prop.cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n buttonEle.setAttribute('aria-label', prop.content);\n }\n delete prop.clicked;\n buttonObj.setProperties(prop);\n };\n /**\n * Updates the button size.\n *\n * @param {HTMLElement} element - Gets the button element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.updateButtonSize = function (element, item) {\n var buttonObj = getComponent(element, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : item.buttonSettings.content\n });\n };\n return RibbonButton;\n}());\nexport { RibbonButton };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCheckBox = /** @class */ (function () {\n function RibbonCheckBox(parent) {\n this.parent = parent;\n }\n RibbonCheckBox.prototype.getModuleName = function () {\n return 'ribbonCheckBox';\n };\n RibbonCheckBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the check box.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.createCheckBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var checkBoxSettings = item.checkBoxSettings;\n if (checkBoxSettings.htmlAttributes) {\n if (checkBoxSettings.htmlAttributes.id) {\n delete checkBoxSettings.htmlAttributes.id;\n }\n }\n new CheckBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n checked: checkBoxSettings.checked,\n cssClass: (RIBBON_CONTROL + SPACE + (checkBoxSettings.cssClass ? checkBoxSettings.cssClass : '')).trim(),\n label: checkBoxSettings.label,\n labelPosition: checkBoxSettings.labelPosition,\n disabled: item.disabled,\n created: checkBoxSettings.created,\n htmlAttributes: checkBoxSettings.htmlAttributes,\n change: function (e) {\n if (checkBoxSettings.change) {\n checkBoxSettings.change.call(_this, e);\n }\n }\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.cssClass = checkBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n var checkBoxObj = getComponent(inputEle, CheckBox);\n var cssClass = checkBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n checkBoxObj.cssClass = cssClass.join(SPACE);\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the Checkbox.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonCheckBox.prototype.click = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n if (!inputEle) {\n return;\n }\n var checkBoxObj = getComponent(inputEle, CheckBox);\n if (!checkBoxObj.disabled) {\n checkBoxObj.click();\n }\n };\n /**\n * Updates the checkbox.\n *\n * @param {RibbonCheckBoxSettingsModel} prop - Gets the checkbox property.\n * @param {string} id - Gets the ID of checkbox.\n * @returns {void}\n */\n RibbonCheckBox.prototype.updateCheckBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.change;\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.setProperties(prop);\n };\n return RibbonCheckBox;\n}());\nexport { RibbonCheckBox };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { ColorPicker } from '@syncfusion/ej2-inputs';\nimport { getItem, getItemElement, setCustomAttributes } from '../base/index';\nimport { RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonColorPicker = /** @class */ (function () {\n function RibbonColorPicker(parent) {\n this.parent = parent;\n }\n RibbonColorPicker.prototype.getModuleName = function () {\n return 'ribbonColorPicker';\n };\n RibbonColorPicker.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the colorpicker.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.createColorPicker = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var colorPickerSettings = item.colorPickerSettings;\n var colorPicker = new ColorPicker({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n columns: colorPickerSettings.columns,\n cssClass: (RIBBON_CONTROL + SPACE + (colorPickerSettings.cssClass ? colorPickerSettings.cssClass : '')).trim(),\n disabled: item.disabled,\n enableOpacity: colorPickerSettings.enableOpacity,\n mode: colorPickerSettings.mode,\n modeSwitcher: colorPickerSettings.modeSwitcher,\n noColor: colorPickerSettings.noColor,\n presetColors: colorPickerSettings.presetColors,\n showButtons: colorPickerSettings.showButtons,\n value: colorPickerSettings.value,\n beforeClose: function () {\n colorPicker.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.beforeClose) {\n colorPickerSettings.beforeClose.call(_this);\n }\n },\n beforeOpen: colorPickerSettings.beforeOpen,\n beforeTileRender: colorPickerSettings.beforeTileRender,\n created: colorPickerSettings.created,\n change: function (e) {\n colorPickerSettings.value = e.value.toString();\n if (colorPickerSettings.change) {\n colorPickerSettings.change.call(_this, e);\n }\n },\n open: function () {\n colorPicker.element.parentElement.classList.add(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.open) {\n colorPickerSettings.open.call(_this);\n }\n },\n select: colorPickerSettings.select\n }, inputEle);\n if (colorPickerSettings.htmlAttributes) {\n if (colorPickerSettings.htmlAttributes.id) {\n delete colorPickerSettings.htmlAttributes.id;\n }\n setCustomAttributes(inputEle, colorPickerSettings.htmlAttributes);\n }\n var wrapper = colorPicker.element.parentElement;\n EventHandler.add(wrapper, 'mouseenter', this.toggleWrapperHover.bind(this, wrapper, true), this);\n EventHandler.add(wrapper, 'mouseleave', this.toggleWrapperHover.bind(this, wrapper, false), this);\n };\n RibbonColorPicker.prototype.toggleWrapperHover = function (wrapper, isAdd) {\n if (isAdd) {\n wrapper.classList.add(RIBBON_HOVER);\n }\n else {\n wrapper.classList.remove(RIBBON_HOVER);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var colorPickerSettings = item.colorPickerSettings;\n if (colorPickerSettings.label && this.parent.activeLayout === 'Simplified') {\n var label = this.parent.createElement('div', {\n className: 'e-ribbon-colorpicker-label',\n id: item.id + '_label',\n innerHTML: colorPickerSettings.label\n });\n itemEle.insertBefore(label, itemEle.firstChild);\n }\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n colorPickerEle.setAttribute('data-control', item.type.toString());\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n colorPickerObj.setProperties({ cssClass: colorPickerObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n var splitBtn = colorPickerObj['splitBtn'];\n var target;\n colorPickerObj.beforeClose = function (e) {\n target = e.event ? e.event.target : null;\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n splitBtn.close = function () {\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var colorPickerSettings = item.colorPickerSettings;\n if (colorPickerSettings.label) {\n var label = itemEle.querySelector('#' + item.id + '_label');\n if (label) {\n label.remove();\n }\n }\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n var cssClass = colorPickerObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n colorPickerObj.setProperties({ cssClass: cssClass.join(SPACE) });\n var splitBtn = colorPickerObj['splitBtn'];\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n splitBtn.close = null;\n colorPickerObj.beforeClose = function () {\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n };\n RibbonColorPicker.prototype.getColorPickerObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ColorPicker) : null;\n };\n /**\n * Gets color value in specified type.\n *\n * @param {string} controlId -Gets the control ID.\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @returns {string} - Returns string.\n */\n RibbonColorPicker.prototype.getValue = function (controlId, value, type) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n return colorPickerObj ? colorPickerObj.getValue(value, type) : '';\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @param {string} controlId - set the id of the control.\n * @returns {void} - Returns void.\n */\n RibbonColorPicker.prototype.toggle = function (controlId) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n if (!colorPickerObj) {\n return;\n }\n if (!colorPickerObj.disabled) {\n colorPickerObj.toggle();\n }\n };\n /**\n * Updates the colorpicker properties.\n *\n * @param {RibbonColorPickerSettingsModel} prop - Gets the colorpicker property.\n * @param {string} id - Gets the ID of colorpicker.\n * @returns {void}\n */\n RibbonColorPicker.prototype.updateColorPicker = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.beforeClose;\n delete prop.open;\n var colorPickerObj = getComponent(inputEle, ColorPicker);\n colorPickerObj.setProperties(prop);\n };\n /**\n * @param {HTMLElement} element - Gets the colorpicker element to be destroyed.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.unwireColorPickerEvents = function (element) {\n var colorPickerObj = getComponent(element, ColorPicker);\n var wrapper = colorPickerObj.element.parentElement;\n EventHandler.remove(wrapper, 'mouseenter', this.toggleWrapperHover);\n EventHandler.remove(wrapper, 'mouseleave', this.toggleWrapperHover);\n };\n return RibbonColorPicker;\n}());\nexport { RibbonColorPicker };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { ComboBox } from '@syncfusion/ej2-dropdowns';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonComboBox = /** @class */ (function () {\n function RibbonComboBox(parent) {\n this.parent = parent;\n }\n RibbonComboBox.prototype.getModuleName = function () {\n return 'ribbonComboBox';\n };\n RibbonComboBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the combobox.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.createComboBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.htmlAttributes) {\n if (comboBoxSettings.htmlAttributes.id) {\n delete comboBoxSettings.htmlAttributes.id;\n }\n }\n new ComboBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n allowCustom: false,\n floatLabelType: 'Never',\n ignoreAccent: true,\n ignoreCase: true,\n allowFiltering: comboBoxSettings.allowFiltering,\n autofill: comboBoxSettings.autofill,\n cssClass: (RIBBON_CONTROL + SPACE + (comboBoxSettings.cssClass ? comboBoxSettings.cssClass : '')).trim(),\n dataSource: comboBoxSettings.dataSource,\n enabled: !item.disabled,\n fields: comboBoxSettings.fields,\n filterType: comboBoxSettings.filterType,\n footerTemplate: comboBoxSettings.footerTemplate,\n groupTemplate: comboBoxSettings.groupTemplate,\n headerTemplate: comboBoxSettings.headerTemplate,\n index: comboBoxSettings.index,\n itemTemplate: comboBoxSettings.itemTemplate,\n noRecordsTemplate: comboBoxSettings.noRecordsTemplate,\n placeholder: comboBoxSettings.placeholder,\n popupHeight: comboBoxSettings.popupHeight,\n popupWidth: comboBoxSettings.popupWidth,\n showClearButton: comboBoxSettings.showClearButton,\n sortOrder: comboBoxSettings.sortOrder,\n text: comboBoxSettings.text,\n value: comboBoxSettings.value,\n width: comboBoxSettings.width,\n beforeOpen: comboBoxSettings.beforeOpen,\n open: comboBoxSettings.open,\n htmlAttributes: comboBoxSettings.htmlAttributes,\n close: function (e) {\n if (comboBoxSettings.close) {\n comboBoxSettings.close.call(_this, e);\n }\n },\n filtering: comboBoxSettings.filtering,\n change: comboBoxSettings.change,\n select: comboBoxSettings.select,\n created: comboBoxSettings.created\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label && this.parent.activeLayout === 'Simplified') {\n var label = this.parent.createElement('div', {\n className: 'e-ribbon-combobox-label',\n id: item.id + '_label',\n innerHTML: comboBoxSettings.label\n });\n itemEle.insertBefore(label, itemEle.firstChild);\n }\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties({ cssClass: comboBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n comboBoxObj.close = function (e) {\n var target = e.event ? e.event.target : null;\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label) {\n var label = itemEle.querySelector('#' + item.id + '_label');\n if (label) {\n label.remove();\n }\n }\n var inputEle = itemEle.querySelector('#' + item.id);\n var comboBoxObj = getComponent(inputEle, ComboBox);\n var cssClass = comboBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n comboBoxObj.setProperties({ cssClass: cssClass.join(SPACE) });\n comboBoxObj.close = function (e) {\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n };\n };\n RibbonComboBox.prototype.getComboBoxObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ComboBox) : null;\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {string } controlId - set the id of the control in which methods needs to be called.\n * @param {Object[] } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n RibbonComboBox.prototype.filter = function (controlId, dataSource, query, fields) {\n this.getComboBoxObj(controlId).filter(dataSource, query, fields);\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.hidePopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.hidePopup();\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.showPopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.showPopup();\n };\n /**\n * Updates the combobox properties.\n *\n * @param {RibbonComboBoxSettingsModel} prop - Gets the combobox property.\n * @param {string} id - Gets the ID of combobox.\n * @returns {void}\n */\n RibbonComboBox.prototype.updateComboBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.comboBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.close;\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties(prop);\n };\n return RibbonComboBox;\n}());\nexport { RibbonComboBox };\n","import { closest, getComponent, isNullOrUndefined, merge, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { getItem, getItemElement, RibbonItemSize, createTooltip, setCustomAttributes } from '../base/index';\nimport { DROPDOWN_ID, ITEM_VERTICAL_CENTER, OVERFLOW_ID, RIBBON_CONTROL, RIBBON_GROUP_OVERFLOW_DDB, RIBBON_POPUP_CONTROL, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonDropDown = /** @class */ (function () {\n function RibbonDropDown(parent) {\n this.parent = parent;\n }\n RibbonDropDown.prototype.getModuleName = function () {\n return 'ribbonDropDown';\n };\n RibbonDropDown.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createDropDown = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var dropDownSettings = item.dropDownSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (dropDownSettings.cssClass ?\n dropDownSettings.cssClass : '')).trim();\n new DropDownButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: dropDownSettings.closeActionEvents,\n content: item.activeSize === RibbonItemSize.Small ? '' : dropDownSettings.content,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: dropDownSettings.iconCss,\n items: dropDownSettings.items,\n target: dropDownSettings.target,\n createPopupOnClick: dropDownSettings.createPopupOnClick,\n beforeClose: function (e) {\n if (dropDownSettings.beforeClose) {\n dropDownSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: dropDownSettings.beforeItemRender,\n beforeOpen: dropDownSettings.beforeOpen,\n close: function (e) {\n if (dropDownSettings.close) {\n dropDownSettings.close.call(_this, e);\n }\n },\n created: dropDownSettings.created,\n open: dropDownSettings.open,\n select: dropDownSettings.select\n }).appendTo(buttonEle);\n if (dropDownSettings.htmlAttributes) {\n if (dropDownSettings.htmlAttributes.id) {\n delete dropDownSettings.htmlAttributes.id;\n }\n setCustomAttributes(buttonEle, dropDownSettings.htmlAttributes);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n dropdownElement.setAttribute('data-control', item.type.toString());\n var dropdown = getComponent(dropdownElement, DropDownButton);\n dropdown.cssClass = dropdown.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n dropdown.dataBind();\n var target;\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var cssClass = dropdown.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n dropdown.cssClass = cssClass.join(SPACE);\n dropdown.dataBind();\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n };\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n };\n };\n /**\n * Creates Overflow DropDown.\n *\n * @param {string} id - Gets the ID of the dropdown item.\n * @param {string} name - Gets the name of the dropdown item.\n * @param {string} iconCss - Gets the icon of the dropdown item.\n * @param {HTMLElement} groupEle - Gets the overflow group element.\n * @param {HTMLElement} overflowEle - Gets the overflow element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createOverFlowDropDown = function (id, name, iconCss, groupEle, overflowEle, enableRtl) {\n var _this = this;\n this.enableRtl = enableRtl;\n var buttonEle = this.parent.createElement('button', {\n id: id + OVERFLOW_ID + DROPDOWN_ID\n });\n groupEle.setAttribute('tabindex', '0');\n overflowEle.appendChild(buttonEle);\n var dropdown = new DropDownButton({\n iconCss: iconCss,\n target: groupEle,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n cssClass: VERTICAL_DDB + SPACE + RIBBON_GROUP_OVERFLOW_DDB,\n iconPosition: 'Top',\n content: name,\n beforeClose: function (args) {\n args.cancel = !isNullOrUndefined(args.event && closest(args.event.target, '.' + RIBBON_POPUP_CONTROL));\n }\n }, buttonEle);\n createTooltip(groupEle, this.parent);\n buttonEle.onclick = buttonEle.onkeydown = function () { _this.itemIndex = 0; };\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n groupEle.onkeydown = function (e) { _this.keyActionHandler(e, groupEle), _this; };\n return dropdown;\n };\n RibbonDropDown.prototype.keyActionHandler = function (e, target) {\n var controlElements = Array.prototype.slice.call(target.querySelectorAll('.e-control'));\n var templateElements = Array.prototype.slice.call(target.querySelectorAll('.e-ribbon-template'));\n var items = controlElements.concat(templateElements);\n var comboBoxElements = target.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < items.length; i++) {\n if (items[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (items[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.itemIndex = i;\n }\n }\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-last-item') || e.target.classList.contains('e-ribbon-first-item')) {\n if (e.key === 'ArrowRight' || (!e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, !this.enableRtl, items);\n }\n if (e.key === 'ArrowLeft' || (e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, this.enableRtl, items);\n }\n }\n };\n RibbonDropDown.prototype.handleNavigation = function (e, enableRtl, items) {\n if (!(items[0].classList.contains('e-ribbon-first-item'))) {\n items[0].classList.add('e-ribbon-first-item');\n }\n if (!(items[items.length - 1].classList.contains('e-ribbon-last-item'))) {\n items[items.length - 1].classList.add('e-ribbon-last-item');\n }\n if (enableRtl) {\n if (this.itemIndex === 0 && items[parseInt(this.itemIndex.toString(), 10)].classList.contains('e-ribbon-first-item')) {\n this.updateItemIndex(e, items, true);\n }\n if (!e.target.classList.contains('e-combobox') && !e.target.classList.contains('e-ribbon-last-item') &&\n !e.target.classList.contains('e-ribbon-group-container') && (e.target.classList.contains('e-ribbon-first-item')\n || this.itemIndex !== 0) && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template'))) {\n this.itemIndex++;\n this.updateItemIndex(e, items, true);\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n else {\n if (!e.target.classList.contains('e-combobox') && this.itemIndex !== 0) {\n this.itemIndex--;\n this.updateItemIndex(e, items, false);\n }\n if (e.target.classList.contains('e-ribbon-first-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-combobox') && (e.key === 'Tab')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n }\n }\n };\n RibbonDropDown.prototype.focusLauncherIcon = function (e, items) {\n var groupContainer = items[parseInt(this.itemIndex.toString(), 10)].closest('.e-ribbon-group-container');\n var launcherIconEle;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n return true;\n }\n else {\n return false;\n }\n };\n RibbonDropDown.prototype.updateItemIndex = function (e, items, enableRtl) {\n var ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = 0;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = items.length - 1;\n }\n }\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(this.itemIndex.toString(), 10)].focus();\n };\n /**\n * Removes Overflow DropDown.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowDropDown = function (dropdownElement) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdownElement.parentElement.parentElement.insertBefore(dropdown.target, dropdownElement.parentElement);\n dropdown.destroy();\n remove(dropdownElement);\n };\n /**\n * Gets DropDown item element.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @param {string} id - Gets the ID of ribbon DropDown element.\n * @returns {HTMLElement} - Returns the DropDown item element.\n * @hidden\n */\n RibbonDropDown.prototype.getDDBItemElement = function (dropdownElement, id) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var dropDownPopup = dropdown.dropDown.element;\n return dropDownPopup.querySelector('#' + id);\n };\n /**\n * Gets Overflow DropDown Popup.\n *\n * @param {itemProps} itemProp - Gets the property of ribbon item.\n * @param {HTMLElement} contentEle - Gets the content element.\n * @returns {HTMLElement} - Returns the Overflow DropDown Popup.\n * @hidden\n */\n RibbonDropDown.prototype.getOverflowDropDownPopup = function (itemProp, contentEle) {\n var dropdownElement = contentEle.querySelector('#' + this.parent.tabs[itemProp.tabIndex].groups[itemProp.groupIndex].id + OVERFLOW_ID + DROPDOWN_ID);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n return dropdown.dropDown.element;\n };\n RibbonDropDown.prototype.getDropDownObj = function (controlId) {\n var dropDownEle = getItemElement(this.parent, controlId);\n return dropDownEle ? getComponent(dropDownEle, DropDownButton) : null;\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the DropDown items.\n * @param {string} text - Gets the text of the dropdown item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonDropDown.prototype.addItems = function (controlId, Items, text) {\n this.getDropDownObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonDropDown.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getDropDownObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonDropDown.prototype.toggle = function (controlId) {\n var dropdownObj = this.getDropDownObj(controlId);\n if (!dropdownObj) {\n return;\n }\n if (!dropdownObj.disabled) {\n dropdownObj.toggle();\n }\n };\n /**\n * Updates the dropdown.\n *\n * @param {RibbonDropDownSettingsModel} prop - Gets the dropdown property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonDropDown.prototype.updateDropDown = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.dropDownSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, DropDownButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.close;\n delete prop.beforeClose;\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n }\n control.setProperties(prop);\n };\n /**\n * Updated DropDown size\n *\n * @param {HTMLElement} element - Gets the dropdown element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.updateDropDownSize = function (element, item) {\n var control = getComponent(element, DropDownButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n control.setProperties({ content: item.activeSize === RibbonItemSize.Small ? '' : item.dropDownSettings.content });\n };\n return RibbonDropDown;\n}());\nexport { RibbonDropDown };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { getItem, getItemElement, RibbonItemSize, setCustomAttributes } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonSplitButton = /** @class */ (function () {\n function RibbonSplitButton(parent) {\n this.parent = parent;\n }\n RibbonSplitButton.prototype.getModuleName = function () {\n return 'ribbonSplitButton';\n };\n RibbonSplitButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates SplitButton.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.createSplitButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var splitButtonSettings = item.splitButtonSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (splitButtonSettings.cssClass ?\n splitButtonSettings.cssClass : '')).trim();\n var splitbutton = new SplitButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: splitButtonSettings.closeActionEvents,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: splitButtonSettings.iconCss,\n items: splitButtonSettings.items,\n target: splitButtonSettings.target,\n beforeClose: function (e) {\n if (splitButtonSettings.beforeClose) {\n splitButtonSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: splitButtonSettings.beforeItemRender,\n beforeOpen: splitButtonSettings.beforeOpen,\n close: function () {\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.close) {\n splitButtonSettings.close.call(_this);\n }\n },\n created: splitButtonSettings.created,\n open: function () {\n splitbutton['wrapper'].classList.add(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.open) {\n splitButtonSettings.open.call(_this);\n }\n },\n select: splitButtonSettings.select,\n click: function (e) {\n if (splitButtonSettings.click) {\n splitButtonSettings.click.call(_this, e);\n }\n }\n }, buttonEle);\n if (splitButtonSettings.htmlAttributes) {\n if (splitButtonSettings.htmlAttributes.id) {\n delete splitButtonSettings.htmlAttributes.id;\n }\n setCustomAttributes(buttonEle, splitButtonSettings.htmlAttributes);\n }\n var dropdownEle = buttonEle.parentElement.querySelector('.e-dropdown-btn');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n this.setContent(item, splitbutton);\n var wrapper = splitbutton['wrapper'];\n EventHandler.add(wrapper, 'mouseenter', function () { wrapper.classList.add(RIBBON_HOVER); }, this);\n EventHandler.add(wrapper, 'mouseleave', function () { wrapper.classList.remove(RIBBON_HOVER); }, this);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n splitButtonEle.setAttribute('data-control', item.type.toString());\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n splitbutton.cssClass = splitbutton.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n splitbutton.dataBind();\n var dropdownEle = splitButtonEle.parentElement.querySelector('.e-dropdown-btn');\n var ddbId = dropdownEle.getAttribute('id');\n var popupEle = document.querySelector('#' + ddbId + '-popup');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n popupEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.preventDefault();\n splitbutton['wrapper'].classList.remove('e-ribbon-open');\n popupEle.querySelector('.e-focused').click();\n }\n };\n var target;\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n var cssClass = splitbutton.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n splitbutton.cssClass = cssClass.join(SPACE);\n splitbutton.dataBind();\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n };\n };\n RibbonSplitButton.prototype.setContent = function (item, control) {\n control['primaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Medium) ? item.splitButtonSettings.content : '' });\n control['secondaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Large) ? item.splitButtonSettings.content : '' });\n };\n RibbonSplitButton.prototype.getSplitButtonObj = function (controlId) {\n var splitButtonEle = getItemElement(this.parent, controlId);\n return getComponent(splitButtonEle, SplitButton);\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the SplitButton items.\n * @param {string} text - Gets the text of the splitbutton item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonSplitButton.prototype.addItems = function (controlId, Items, text) {\n this.getSplitButtonObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonSplitButton.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getSplitButtonObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonSplitButton.prototype.toggle = function (controlId) {\n var splitBtnObj = this.getSplitButtonObj(controlId);\n if (!splitBtnObj) {\n return;\n }\n if (!splitBtnObj.disabled) {\n splitBtnObj.toggle();\n }\n };\n /**\n * Updates the splitbutton.\n *\n * @param {RibbonSplitButtonSettingsModel} prop - Gets the splitbutton property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonSplitButton.prototype.updateSplitButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.splitButtonSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, SplitButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.open;\n delete prop.click;\n delete prop.close;\n delete prop.beforeClose;\n control.setProperties(prop);\n if (prop.content) {\n this.setContent(itemProp.item, control);\n }\n };\n /**\n * Updated SplitButton size\n *\n * @param {HTMLElement} element - Gets the splibutton element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.updateSplitButtonSize = function (element, item) {\n var control = getComponent(element, SplitButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n this.setContent(item, control);\n };\n return RibbonSplitButton;\n}());\nexport { RibbonSplitButton };\n","import { compile, getComponent, select, addClass } from '@syncfusion/ej2-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport * as constants from './constant';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Gets index value.\n *\n * @param {Array} arr - Gets the array to find index.\n * @param {boolean} condition - Defines whether index matches with the value.\n * @returns {number} - Gets the index value.\n * @hidden\n */\nexport function getIndex(arr, condition) {\n for (var i = 0; i < arr.length; i++) {\n if (condition(arr[parseInt(i.toString(), 10)], i)) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Gets template content based on the template property value.\n *\n * @param {string | HTMLElement| Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\nexport function getTemplateFunction(template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n}\n/**\n * Gets the ribbon item\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @param {RibbonItemType} type - Gets the type of the item.\n * @returns {itemProps} - Gets the ribbon item.\n * @hidden\n */\nexport function getItem(tabs, id, type) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n var item = collection.items[parseInt(l.toString(), 10)];\n if ((id && item.id === id) || (type && item.type === type)) {\n return {\n item: item, collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k, itemIndex: l\n };\n }\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon collection.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon collection.\n * @hidden\n */\nexport function getCollection(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n if (collection.id === id) {\n return {\n collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k\n };\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon group.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon group.\n * @hidden\n */\nexport function getGroup(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n if (group.id === id) {\n return {\n group: group, tabIndex: i, groupIndex: j\n };\n }\n }\n }\n return null;\n}\n/**\n * @param {HTMLElement} element - Gets the element to be destroyed.\n * @param {string} moduleName - Gets the module name.\n * @returns {void}\n * @hidden\n */\nexport function destroyControl(element, moduleName) {\n var control = getComponent(element, moduleName);\n control.destroy();\n}\n/**\n * Updates common properties.\n *\n * @param {HTMLElement} element - Gets the element to be updated.\n * @param {string} moduleName - Gets the module name.\n * @param {commonProperties} commonProp - Gets the common properties to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateCommonProperty(element, moduleName, commonProp) {\n var control = getComponent(element, moduleName);\n control.setProperties(commonProp);\n}\n/**\n * Updates disabled control.\n *\n * @param {HTMLElement} element - Gets the element to be disabled.\n * @param {string} moduleName - Gets the module name.\n * @param {boolean} disable - Defines whether the control to be disabled or not.\n * @returns {void}\n * @hidden\n */\nexport function updateControlDisabled(element, moduleName, disable) {\n var control = getComponent(element, moduleName);\n control.setProperties(moduleName === 'combobox' ? { enabled: !disable } : { disabled: disable });\n}\n/**\n * Gets the ribbon item element.\n *\n * @param {Ribbon} parent - Gets the parent element.\n * @param {string} id - Gets the ID of the item.\n * @param {itemProps} itemProp - Gets the ribbon item.\n * @returns {HTMLElement} - Gets the ribbon item element.\n * @hidden\n */\nexport function getItemElement(parent, id, itemProp) {\n if (!itemProp) {\n itemProp = getItem(parent.tabs, id);\n if (!itemProp) {\n return null;\n }\n }\n var contentEle = parent.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML === '') {\n return null;\n }\n if (parent.activeLayout === RibbonLayout.Classic) {\n if (itemProp.item.displayOptions & DisplayMode.Classic) {\n contentEle = (itemProp.group.isCollapsed) ? parent.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle)\n : contentEle;\n return contentEle.querySelector('#' + id);\n }\n else {\n return null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n var ele = (itemProp.item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + itemProp.item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n var dropdown = itemProp.group.enableGroupOverflow ?\n getComponent(contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID), DropDownButton)\n : parent.overflowDDB;\n ele = dropdown.target.querySelector('#' + itemProp.item.id);\n }\n return ele;\n }\n}\n/**\n * @param {RibbonTooltipModel} tooltip - Gets the property of tooltip.\n * @returns {boolean} - Gets whether the tooltip is present or not.\n * @hidden\n */\nexport function isTooltipPresent(tooltip) {\n return (tooltip.content || tooltip.iconCss || tooltip.title || tooltip.id || tooltip.cssClass) ? true : false;\n}\n/**\n * Sets content for tooltip.\n *\n * @param {TooltipEventArgs} args - Gets the argument of tooltip.\n * @param {Tooltip} tooltip - Gets the tooltip to set the content.\n * @param {ribbonTooltipData} tooltipData - Gets the tooltip data.\n * @returns {void}\n * @hidden\n */\nexport function setToolTipContent(args, tooltip, tooltipData) {\n var targetId = args.target.getAttribute('id');\n var dataObj = tooltipData.filter(function (e) { return e.id === targetId; })[0];\n var data = dataObj.data;\n var content = tooltip.createElement('div', {\n id: data.id ? constants.RIBBON_TOOLTIP_CONTAINER + '_' + data.id : constants.RIBBON_TOOLTIP_CONTAINER\n });\n tooltip.element.append(content);\n if (data.title) {\n var header = tooltip.createElement('div', {\n innerHTML: data.title,\n className: constants.RIBBON_TOOLTIP_TITLE\n });\n content.appendChild(header);\n }\n var textContainer = tooltip.createElement('div', {\n className: constants.RIBBON_TEXT_CONTAINER\n });\n content.appendChild(textContainer);\n if (data.iconCss) {\n var customCss = tooltip.createElement('div', {\n className: data.iconCss + ' ' + constants.RIBBON_TOOLTIP_ICON\n });\n textContainer.appendChild(customCss);\n }\n if (data.content) {\n var tooltipContent = tooltip.createElement('div', {\n innerHTML: data.content,\n className: constants.RIBBON_TOOLTIP_CONTENT\n });\n textContainer.appendChild(tooltipContent);\n }\n tooltip.setProperties({\n content: content,\n cssClass: data.cssClass ? data.cssClass + ' ' + constants.RIBBON_TOOLTIP : constants.RIBBON_TOOLTIP\n });\n}\n/**\n * Creates tooltip.\n *\n * @param {HTMLElement} element - Gets the element to add tooltip.\n * @param {Ribbon} ribbon - Gets the ribbon.\n * @returns {void}\n * @hidden\n */\nexport function createTooltip(element, ribbon) {\n var ribbonTooltip = new Tooltip({\n target: '.' + constants.RIBBON_TOOLTIP_TARGET,\n beforeRender: beforeTooltipRender.bind(this),\n windowCollision: true\n });\n ribbonTooltip.appendTo(element);\n /**\n * @param {TooltipEventArgs} args - Gets the tooltip argument.\n * @returns {void}\n * @hidden\n */\n function beforeTooltipRender(args) {\n setToolTipContent(args, ribbonTooltip, ribbon.tooltipData);\n }\n}\n/**\n * Destroys tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be destroyed.\n * @returns {void}\n * @hidden\n */\nexport function destroyTooltip(element) {\n var control = getComponent(element, Tooltip);\n control.destroy();\n}\n/**\n * Updates tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be Updated.\n * @param {commonProperties} prop - Gets the property to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateTooltipProp(element, prop) {\n var control = getComponent(element, Tooltip);\n control.setProperties(prop);\n}\n/**\n * Sets the HTML attributes of an element\n *\n * @param {HTMLElement} element - The HTML element for which attributes are to be updated.\n * @param {commonProperties} attributes - An object containing key-value pairs of attributes to be updated.\n * @returns {void}\n * @hidden\n */\nexport function setCustomAttributes(element, attributes) {\n for (var key in attributes) {\n if (key === 'class') {\n var elementClass = attributes['class'].replace(/\\s+/g, ' ').trim();\n if (elementClass) {\n addClass([element], elementClass.split(' '));\n }\n }\n else if (key === 'style') {\n var prevStyles = element.getAttribute('style') || '';\n var value = \"\" + prevStyles + attributes[\"\" + key];\n element.setAttribute(\"\" + key, value);\n }\n else {\n element.setAttribute(key, attributes[\"\" + key]);\n }\n }\n}\n","import { EventHandler, getComponent, remove } from '@syncfusion/ej2-base';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { RibbonGroupButtonSelection, RibbonItemSize } from '../base/interface';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { createTooltip, isTooltipPresent, setCustomAttributes } from '../base/utils';\nimport { Tooltip } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonGroupButton = /** @class */ (function () {\n function RibbonGroupButton(parent) {\n this.grpBtnIndex = 0;\n this.parent = parent;\n this.isSelected = false;\n }\n RibbonGroupButton.prototype.getModuleName = function () {\n return 'ribbonGroupButton';\n };\n RibbonGroupButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates Group Button\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.createGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n this.count = 0;\n var btnContainerEle = this.parent.createElement('div', {\n id: item.id + constants.RIBBON_GROUP_BUTTON_ID,\n className: 'e-btn-group'\n });\n itemElement.appendChild(btnContainerEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if ((groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss)) {\n var groupButtonEle = this.parent.createElement('button', {\n id: item.id + constants.RIBBON_GROUP_BUTTON_ID + i,\n className: constants.RIBBON_GROUP_BUTTON\n });\n btnContainerEle.appendChild(groupButtonEle);\n new Button({\n iconCss: groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss,\n disabled: item.disabled,\n enableRtl: this.parent.enableRtl,\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left'\n }, groupButtonEle);\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].htmlAttributes) {\n setCustomAttributes(groupButtonEle, groupBtnSettings.items[parseInt(i.toString(), 10)].htmlAttributes);\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].content) {\n groupButtonEle.classList.add(constants.RIBBON_GROUP_BUTTON_CONTENT);\n groupButtonEle.setAttribute('aria-label', groupBtnSettings.items[parseInt(i.toString(), 10)].content);\n }\n else {\n groupButtonEle.setAttribute('aria-label', 'groupbuttonitem');\n }\n var buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n btnContainerEle.classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n else {\n btnContainerEle.classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].selected) {\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n buttonEle.classList.add('e-active');\n }\n else {\n if (this.count < 1) {\n buttonEle.classList.add('e-active');\n this.count++;\n }\n }\n this.grpBtnIndex = i;\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings &&\n isTooltipPresent(groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings)) {\n groupButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({\n id: groupButtonEle.id, data: groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings\n });\n }\n EventHandler.add(buttonEle, 'click', this.groupButtonClicked.bind(this, i, item, groupBtnSettings), this);\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = void 0;\n var activeEleCount = 0;\n var count = 0;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n !this.isSelected && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n else if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else {\n dropdownIcon = null;\n }\n }\n }\n while (count < item.groupButtonSettings.items.length && !this.isSelected && !dropdownIcon) {\n if (item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n count++;\n }\n var dropdown = new DropDownButton({\n iconCss: dropdownIcon,\n target: btnContainerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n btnContainerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(btnContainerEle, this.parent);\n this.isSelected = false;\n }\n };\n RibbonGroupButton.prototype.groupButtonClicked = function (itemIndex, item, grpBtnSettings) {\n var previousItems = [];\n var selectingItems = [];\n var selectedItems = [];\n var groupButtonEle = document.querySelector('#' + item.id);\n var dropdown;\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n previousItems.push(grpBtnSettings.items[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (!(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n selectingItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs = {\n cancel: false, previousItems: previousItems, selectingItems: selectingItems\n };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n else {\n if (grpBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_MULTIPLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.remove('e-active');\n grpBtnSettings.items[parseInt(j.toString(), 10)].\n setProperties({ selected: false }, true);\n }\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].setProperties({ selected: true }, true);\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active') && this.parent.activeLayout === 'Simplified') {\n this.grpBtnIndex = itemIndex;\n dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({\n iconCss: grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss\n });\n }\n }\n else {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_SINGLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].\n setProperties({ selected: true }, true);\n }\n else {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].\n setProperties({ selected: false }, true);\n }\n var activeEleCount = 0;\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active') && this.parent.activeLayout === 'Simplified' && n !== itemIndex) {\n this.isSelected = true;\n activeEleCount++;\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = null;\n var itemsCount = 0;\n dropdown = getComponent(groupButtonEle, DropDownButton);\n if (!this.isSelected) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss;\n }\n }\n else {\n if (activeEleCount === 1 && !(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(n.toString(), 10)].iconCss;\n }\n }\n }\n }\n while (itemsCount < grpBtnSettings.items.length && !dropdownIcon) {\n if (grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n dropdown.setProperties({ iconCss: dropdownIcon });\n this.grpBtnIndex = itemIndex;\n }\n this.isSelected = false;\n }\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n selectedItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs_1 = { previousItems: previousItems, selectedItems: selectedItems };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click.call(this, eventArgs_1);\n }\n if (this.parent.activeLayout === 'Simplified' && groupButtonEle) {\n dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.toggle();\n }\n }\n };\n /**\n * updates group button in mode switching\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.switchGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var dropdownIcon = null;\n var activeEleCount = 0;\n var itemsCount = 0;\n if (this.parent.activeLayout === 'Simplified') {\n var containerEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (activeEleCount > 1) {\n dropdownIcon = null;\n }\n }\n }\n }\n while (itemsCount < groupBtnSettings.items.length && !dropdownIcon) {\n if (groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n var dropdown = new DropDownButton({\n iconCss: dropdownIcon,\n target: containerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n containerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(containerEle, this.parent);\n }\n else {\n var groupButtonEle = itemElement.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n itemElement.appendChild(dropdown.target);\n if (groupButtonEle) {\n dropdown.destroy();\n remove(groupButtonEle);\n }\n }\n };\n RibbonGroupButton.prototype.handleFocusState = function (item, itemElement) {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n var defaultSelectedBtn = document.querySelector('#' + item.id + '_grpbtn').querySelector('.' + constants.RIBBON_GROUP_BUTTON + '.e-active');\n if (defaultSelectedBtn) {\n defaultSelectedBtn.focus();\n }\n else {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n }\n }\n };\n RibbonGroupButton.prototype.addGroupButtonHeader = function (itemID, groupBtnSettings, popupEle) {\n var groupButtonHeader = this.parent.createElement('div', {\n className: 'e-ribbon-groupbutton-header',\n id: itemID + constants.HEADER_ID,\n innerHTML: groupBtnSettings.header\n });\n popupEle.insertBefore(groupButtonHeader, popupEle.firstChild);\n };\n RibbonGroupButton.prototype.handleGroupButtonNavigation = function (e, item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n var isOverflowPopup = false;\n if (this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n isOverflowPopup = true;\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var groupBtnSettings = item.groupButtonSettings;\n if ((e.key === 'ArrowRight' && !isOverflowPopup) || (e.key === 'ArrowDown' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowDown' && isOverflowPopup)) {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n else if ((e.key === 'ArrowLeft' && !isOverflowPopup) || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var isIconOnly = true;\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({ cssClass: dropdown.cssClass + constants.SPACE + constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP, content: groupBtnSettings.header ? groupBtnSettings.header : '' });\n var targetEle_1 = dropdown.target;\n if (targetEle_1.children.length) {\n for (var i = 0; i < targetEle_1.children.length; i++) {\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].content) {\n isIconOnly = false;\n break;\n }\n }\n if (isIconOnly) {\n targetEle_1.classList.add('e-icon-btn');\n }\n }\n targetEle_1.onclick = function () {\n if (_this.parent.activeLayout === 'Simplified' && targetEle_1.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n }\n var overflowGroupButtonEle = itemEle.querySelector('#' + item.id + '_grpbtn');\n if (this.parent.activeLayout === 'Classic' && overflowGroupButtonEle) {\n overflowGroupButtonEle.onclick = function () {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n };\n }\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n if (targetEle.classList.contains('e-icon-btn')) {\n targetEle.classList.remove('e-icon-btn');\n }\n var cssClass = dropdown.cssClass.split(constants.SPACE);\n cssClass = cssClass.filter(function (value) { return value !== constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP; });\n dropdown.setProperties({ cssClass: cssClass.join(constants.SPACE), content: '' });\n }\n };\n /**\n * Removes DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.destroyDropDown = function (item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdown.destroy();\n remove(groupButtonEle);\n }\n };\n /**\n * Updates the group button size.\n *\n * @param {HTMLElement} itemElement - Gets the group button container element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.updateGroupButtonSize = function (itemElement, item) {\n var groupBtnSettings = item.groupButtonSettings;\n var buttonEle;\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (this.parent.activeLayout === 'Classic') {\n buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n else {\n buttonEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n if (buttonEle) {\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content\n });\n }\n }\n };\n return RibbonGroupButton;\n}());\nexport { RibbonGroupButton };\n","import { append, getComponent, remove, formatUnit, isNullOrUndefined, setValue } from '@syncfusion/ej2-base';\nimport { getItem, getTemplateFunction, setCustomAttributes } from '../base/index';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport * as constants from '../base/constant';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonGallery = /** @class */ (function () {\n function RibbonGallery(parent) {\n this.count = 0;\n this.isAdded = false;\n this.galleryItemsIndex = 0;\n this.registeredTemplate = {};\n this.parent = parent;\n var ref = 'viewContainerRef';\n setValue('registeredTemplate', this.registeredTemplate, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setValue(ref, this.parent[\"\" + ref], this);\n }\n RibbonGallery.prototype.getModuleName = function () {\n return 'ribbonGallery';\n };\n RibbonGallery.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates gallery.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.createGallery = function (item, itemEle) {\n var _this = this;\n var gallerySettings = item.gallerySettings;\n this.renderGalleryItems(gallerySettings, false, item.id, itemEle);\n var buttonEle = this.parent.createElement('button', {\n id: item.id + '_popupButton',\n className: 'e-ribbon-gallery-button e-icons e-drop-icon'\n });\n buttonEle.setAttribute('aria-label', 'gallerydropdownbutton');\n itemEle.appendChild(buttonEle);\n this.createPopup(item, buttonEle);\n buttonEle.onclick = function (args) {\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n if (popupEle) {\n var popup = getComponent(popupEle, Popup);\n if (popupEle.classList.contains('e-popup-close')) {\n _this.showPopup(popup, popupEle, args, gallerySettings, item.id);\n }\n else {\n _this.hidePopup(popup, popupEle, args, gallerySettings, item.id);\n }\n }\n };\n document.onclick = function (args) {\n var popupEle = document.querySelectorAll('.e-ribbon-gallery-popup.e-popup-open');\n var popupID;\n var itemProp;\n for (var i = 0; i < popupEle.length; i++) {\n var popup = getComponent(popupEle[parseInt(i.toString(), 10)], Popup);\n if (args.target.classList.contains('e-ribbon-gallery-button')) {\n popupID = (popupEle[parseInt(i.toString(), 10)].id).replace(/_galleryPopup/g, '');\n if ((args.target.id).replace(/_popupButton/g, '') !== popupID) {\n itemProp = getItem(_this.parent.tabs, popupID);\n _this.hidePopup(popup, popupEle[parseInt(i.toString(), 10)], args, itemProp.item.gallerySettings, popupID);\n break;\n }\n }\n else {\n popupID = (popupEle[parseInt(i.toString(), 10)].id).replace(/_galleryPopup/g, '');\n itemProp = getItem(_this.parent.tabs, popupID);\n _this.hidePopup(popup, popupEle[parseInt(i.toString(), 10)], args, itemProp.item.gallerySettings, popupID);\n break;\n }\n }\n };\n };\n RibbonGallery.prototype.renderGalleryItems = function (gallerySettings, isPopup, id, itemEle) {\n var _this = this;\n var galleryContainerEle;\n var galleryEle;\n var itemProp = getItem(this.parent.tabs, id);\n if (itemProp && itemProp.group) {\n itemProp.group.isCollapsible = false;\n }\n var galleryWrapper = this.parent.createElement('div', {\n className: 'e-ribbon-gallery-wrapper',\n id: id + '_galleryWrapper'\n });\n if (!isPopup) {\n itemEle.appendChild(galleryWrapper);\n }\n var _loop_1 = function (i) {\n var isHeightDefined = false;\n galleryContainerEle = this_1.parent.createElement('ol', {\n className: 'e-ribbon-gallery-container',\n id: id + '_galleryContainer' + i\n });\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n isHeightDefined = true;\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].cssClass) {\n galleryContainerEle.classList.add(gallerySettings.groups[parseInt(i.toString(), 10)].cssClass);\n }\n var _loop_2 = function (j) {\n galleryEle = this_1.parent.createElement('li', {\n className: 'e-ribbon-gallery-item',\n id: (isPopup ? 'popup_' : '') + galleryContainerEle.id + '_gallery' + j,\n attrs: { 'tabindex': '0' }\n });\n var itemEventArgs = { name: 'beforeItemRender', item: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)] };\n if (gallerySettings.beforeItemRender) {\n gallerySettings.beforeItemRender.call(this_1, itemEventArgs);\n }\n galleryContainerEle.appendChild(galleryEle);\n if (gallerySettings.selectedItemIndex && gallerySettings.selectedItemIndex === this_1.count) {\n galleryEle.classList.add('e-ribbon-gallery-selected');\n }\n else {\n if (!gallerySettings.selectedItemIndex && this_1.count === 0) {\n galleryEle.classList.add('e-ribbon-gallery-selected');\n gallerySettings.selectedItemIndex = this_1.count;\n }\n }\n this_1.count = this_1.count + 1;\n galleryEle.onclick = function (e) {\n _this.setActiveState(e.currentTarget, gallerySettings, id, true, e, isPopup);\n };\n galleryEle.onkeydown = function (e) {\n if (e.key === 'Enter' || e.key === ' ') {\n _this.setActiveState(e.currentTarget, gallerySettings, id, true, e, isPopup);\n }\n };\n galleryEle.onmouseover = function (e) {\n var hoverEventArgs = { event: e, name: 'itemHover', item: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)] };\n if (gallerySettings.itemHover) {\n gallerySettings.itemHover.call(_this, hoverEventArgs);\n }\n };\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth && gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth !== 'auto') {\n galleryEle.style.width = gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth + 'px';\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n galleryEle.style.height = gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight + 'px';\n if (this_1.parent.activeLayout !== 'Simplified' && !isPopup) {\n galleryContainerEle.style.flexFlow = 'wrap';\n }\n }\n if ((!gallerySettings.template && !gallerySettings.popupTemplate) ||\n ((gallerySettings.template && !gallerySettings.popupTemplate) && isPopup) ||\n ((gallerySettings.popupTemplate && !gallerySettings.template) && !isPopup)) {\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].htmlAttributes) {\n setCustomAttributes(galleryEle, gallerySettings.groups[parseInt(i.toString(), 10)]\n .items[parseInt(j.toString(), 10)].htmlAttributes);\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss) {\n var iconEle = this_1.parent.createElement('span', {\n className: 'e-ribbon-gallery-icons' + ' ' + gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss\n });\n galleryEle.appendChild(iconEle);\n if (this_1.parent.activeLayout === 'Simplified' && !isPopup) {\n iconEle.classList.add('e-hidden');\n }\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].content) {\n galleryEle.appendChild(this_1.parent.createElement('span', {\n innerHTML: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].content,\n className: 'e-ribbon-gallery-text'\n }));\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].disabled) {\n galleryEle.classList.add('e-disabled');\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].cssClass) {\n galleryEle.classList.add(gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].cssClass);\n }\n }\n if (gallerySettings.template && !isPopup) {\n this_1.createGalleryTemplate(galleryEle, gallerySettings, id, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)]);\n }\n if (gallerySettings.popupTemplate && isPopup) {\n this_1.createGalleryPopupTemplate(galleryEle, gallerySettings, id, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)]);\n }\n if ((!isPopup && !isHeightDefined && (gallerySettings.itemCount === this_1.count))) {\n galleryWrapper.appendChild(galleryContainerEle);\n this_1.isAdded = true;\n return \"break\";\n }\n };\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n var state_2 = _loop_2(j);\n if (state_2 === \"break\")\n break;\n }\n if (this_1.isAdded && !isPopup) {\n return \"break\";\n }\n if (!isPopup) {\n galleryWrapper.appendChild(galleryContainerEle);\n }\n else {\n itemEle.appendChild(galleryContainerEle);\n }\n if (isPopup && gallerySettings.groups[parseInt(i.toString(), 10)].header) {\n var headerEle = (this_1.parent.createElement('div', {\n className: 'e-ribbon-gallery-header',\n innerHTML: gallerySettings.groups[parseInt(i.toString(), 10)].header\n }));\n itemEle.insertBefore(headerEle, galleryContainerEle);\n }\n };\n var this_1 = this;\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n this.count = 0;\n this.isAdded = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.portals = this.parent.portals.concat(this['portals']);\n this.parent['renderReactTemplates']();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this['portals'] = undefined;\n }\n };\n RibbonGallery.prototype.setWrapperWidth = function (itemCount, galleryWrapper, gallerySettings, itemID) {\n var count = 1;\n var itemsWidth = 0;\n var isWidthApplied = false;\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (itemCount >= count) {\n var galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + i + '_gallery' + j);\n if (galleryItemEle) {\n itemsWidth += galleryItemEle.offsetWidth;\n var itemStyles = window.getComputedStyle(galleryItemEle);\n if (itemStyles) {\n var paddingWidth = parseFloat(itemStyles.paddingLeft) + parseFloat(itemStyles.paddingRight);\n if (!(isNullOrUndefined(paddingWidth))) {\n itemsWidth += paddingWidth;\n }\n var marginWidth = parseFloat(itemStyles.marginLeft) + parseFloat(itemStyles.marginRight);\n if (!(isNullOrUndefined(marginWidth))) {\n itemsWidth += marginWidth;\n }\n }\n }\n }\n else {\n isWidthApplied = true;\n break;\n }\n count++;\n }\n if (isWidthApplied) {\n break;\n }\n }\n if (itemsWidth > 0) {\n galleryWrapper.style.width = itemsWidth + 'px';\n }\n };\n RibbonGallery.prototype.setWrapperStyle = function (popup, popupContainerItems) {\n if (popup.width !== 'auto') {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'wrap';\n });\n }\n };\n /**\n * Checks the gallery items height.\n *\n * @param {HTMLElement} activeContent - Gets the current active content.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.checkAvailableHeight = function (activeContent) {\n var galleryWrapperItems = activeContent.querySelectorAll('.e-ribbon-gallery-wrapper');\n for (var n = 0; n < galleryWrapperItems.length; n++) {\n var count = 0;\n var simplifiedItemsCount = 0;\n var isHeight = false;\n var galleryWrapper = galleryWrapperItems[parseInt(n.toString(), 10)];\n var itemID = galleryWrapper.id.replace(/_galleryWrapper/g, '');\n var galleryWrapperHeight = galleryWrapper.offsetHeight;\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemProp) {\n this.setWrapperWidth(itemProp.item.gallerySettings.itemCount, galleryWrapper, itemProp.item.gallerySettings, itemID);\n for (var i = 0; i < itemProp.item.gallerySettings.groups.length; i++) {\n for (var j = 0; j < itemProp.item.gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n var galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + i + '_gallery' + j);\n if (galleryItemEle) {\n if (this.parent.activeLayout === 'Classic') {\n if (galleryItemEle.classList.contains('e-hidden')) {\n galleryItemEle.classList.remove('e-hidden');\n }\n if (!isHeight) {\n var itemsValues = 0;\n var itemStyles = window.getComputedStyle(galleryItemEle);\n if (itemStyles) {\n var marginWidth = parseFloat(itemStyles.marginTop) + parseFloat(itemStyles.marginBottom);\n if (!(isNullOrUndefined(marginWidth))) {\n itemsValues += marginWidth;\n }\n }\n count++;\n if (itemProp.item.gallerySettings.itemCount === count) {\n count = 0;\n if (galleryWrapperHeight >= (galleryItemEle.offsetHeight + itemsValues)) {\n galleryWrapperHeight -= (galleryItemEle.offsetHeight + itemsValues);\n }\n else {\n isHeight = true;\n galleryItemEle.remove();\n }\n }\n else if (galleryWrapperHeight < (galleryItemEle.offsetHeight + itemsValues)) {\n isHeight = true;\n galleryItemEle.remove();\n }\n }\n else {\n galleryItemEle.remove();\n }\n }\n else {\n simplifiedItemsCount++;\n if (simplifiedItemsCount > itemProp.item.gallerySettings.itemCount) {\n galleryItemEle.classList.add('e-hidden');\n }\n }\n }\n }\n }\n }\n }\n };\n /**\n * Checks the popup collision.\n *\n * @param {Popup} popup - Gets the popup.\n * @param {HTMLElement} popupEle - Gets the popup element.\n * @param {number} offsetValue - Gets the offset value of gallery popup button.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.checkCollision = function (popup, popupEle, offsetValue) {\n if (offsetValue === void 0) { offsetValue = 0; }\n var paddingWidth = 0;\n var marginWidth = 0;\n if (popupEle) {\n var windowWidth = window.innerWidth;\n var screenWidth = offsetValue === 0 ? windowWidth : Math.abs(windowWidth - (windowWidth - offsetValue));\n var paddingStyles = window.getComputedStyle(popupEle);\n if (paddingStyles) {\n paddingWidth = parseFloat(paddingStyles.paddingLeft) + parseFloat(paddingStyles.paddingRight);\n if (!(isNullOrUndefined(paddingWidth))) {\n screenWidth = screenWidth - paddingWidth;\n }\n }\n var popupContainerItems = popupEle.querySelectorAll('.e-ribbon-gallery-container');\n this.setWrapperStyle(popup, popupContainerItems);\n var isCollideOccurs = false;\n for (var i = 0; i < popupContainerItems.length; i++) {\n var itemsWidth = 0;\n for (var j = 0; j < popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item').length; j++) {\n var popupItemStyles = window.getComputedStyle(popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item')[parseInt(j.toString(), 10)]);\n if (popupItemStyles) {\n marginWidth = parseFloat(popupItemStyles.marginLeft) + parseFloat(popupItemStyles.marginRight);\n if (!(isNullOrUndefined(marginWidth))) {\n itemsWidth += marginWidth;\n }\n }\n itemsWidth += Math.round(parseFloat(popupItemStyles.width));\n if (((screenWidth <= itemsWidth) && popup.width === 'auto') || ((popup.width !== 'auto') && (screenWidth <= parseInt(popup.width.toString(), 10)) && (screenWidth <= itemsWidth))) {\n popupEle.style.width = ((itemsWidth + Math.abs(paddingWidth - marginWidth)) - Math.round(parseFloat(popupItemStyles.width))) + 'px';\n isCollideOccurs = true;\n break;\n }\n }\n if (isCollideOccurs) {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'wrap';\n });\n if (popup.height === 'auto') {\n this.setGalleryPopupHeight(popupEle, parseFloat(paddingStyles.height), parseFloat(paddingStyles.top));\n }\n break;\n }\n }\n if (!isCollideOccurs) {\n if (popup.width === 'auto') {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'nowrap';\n });\n popupEle.style.width = 'auto';\n }\n else {\n popupEle.style.width = (popup.width).toString();\n }\n if (popup.height === 'auto') {\n this.setGalleryPopupHeight(popupEle, parseFloat(paddingStyles.height), parseFloat(paddingStyles.top));\n }\n }\n }\n };\n RibbonGallery.prototype.setGalleryPopupHeight = function (popupEle, popupHeight, popupTop) {\n if (window.innerHeight < popupHeight || window.innerHeight < Math.round(popupHeight + popupTop)) {\n popupEle.style.height = (window.innerHeight - popupTop) + 'px';\n }\n else {\n popupEle.style.height = 'auto';\n }\n };\n RibbonGallery.prototype.createPopup = function (item, buttonEle) {\n var popupContainer = this.parent.createElement('div', {\n className: 'e-ribbon-popup-container',\n id: item.id + '_popupContainer'\n });\n this.renderGalleryItems(item.gallerySettings, true, item.id, popupContainer);\n var gallerypopupElement = this.parent.createElement('div', {\n className: 'e-ribbon-gallery-popup',\n id: item.id + '_galleryPopup'\n });\n document.body.append(gallerypopupElement);\n var galleryPopup = new Popup(gallerypopupElement, {\n relateTo: buttonEle,\n content: popupContainer,\n collision: { X: 'fit', Y: 'flip' },\n actionOnScroll: 'hide',\n targetType: 'relative',\n position: { X: 'left', Y: 'bottom' },\n enableRtl: this.parent.enableRtl,\n width: item.gallerySettings.popupWidth,\n height: item.gallerySettings.popupHeight\n });\n galleryPopup.hide();\n };\n /**\n * Updates gallery in mode switching.\n *\n * @param {string} activeLayout - Gets the current active layout.\n * @param {string} itemID - Gets the ribbon item id.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.switchGalleryItems = function (activeLayout, itemID) {\n var itemEle = this.parent.element.querySelector('#' + itemID + constants.CONTAINER_ID);\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemEle) {\n var galleryIcons = itemEle.querySelectorAll('.e-ribbon-gallery-icons');\n var galleryContainer = itemEle.querySelectorAll('.e-ribbon-gallery-container');\n if (galleryIcons.length) {\n for (var i = 0; i < galleryIcons.length; i++) {\n if (activeLayout === 'Simplified') {\n galleryIcons[parseInt(i.toString(), 10)].classList.add('e-hidden');\n }\n else {\n galleryIcons[parseInt(i.toString(), 10)].classList.remove('e-hidden');\n }\n }\n }\n if (galleryContainer.length && itemProp) {\n for (var n = 0; n < itemProp.item.gallerySettings.groups.length; n++) {\n for (var i = 0; i < galleryContainer.length; i++) {\n if (itemProp.item.gallerySettings.groups[parseInt(n.toString(), 10)].itemHeight && itemProp.item.gallerySettings.groups[parseInt(n.toString(), 10)].itemHeight !== 'auto') {\n if (itemID + '_galleryContainer' + n === galleryContainer[parseInt(i.toString(), 10)].id) {\n if (activeLayout === 'Simplified') {\n galleryContainer[parseInt(i.toString(), 10)].style.flexFlow = 'nowrap';\n }\n else {\n galleryContainer[parseInt(i.toString(), 10)].style.flexFlow = 'wrap';\n }\n }\n }\n }\n }\n }\n var activeContent = this.parent.tabObj.element.querySelector('#' + this.parent.tabs[this.parent.selectedTab].id + constants.CONTENT_ID);\n if (activeContent) {\n this.checkAvailableHeight(activeContent);\n }\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.addOverFlowEvents = function (item, itemEle) {\n var _this = this;\n if (itemEle.closest('.e-ribbon-overflow-target')) {\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n if (itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.contains('e-disabled')) {\n buttonEle.classList.add('e-disabled');\n }\n itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.add('e-hidden');\n itemEle.querySelectorAll('.e-ribbon-gallery-container').forEach(function (ele) {\n ele.classList.add('e-hidden');\n });\n var popupButton = itemEle.querySelector('#' + item.id + '_popupButton');\n if (popupButton) {\n popupButton.classList.add('e-hidden');\n }\n var itemProp = getItem(this.parent.tabs, item.id);\n var iconCss = itemProp && itemProp.group.groupIconCss ? itemProp.group.groupIconCss : '';\n var content = itemProp && itemProp.group.header ? itemProp.group.header : '';\n if (!iconCss) {\n for (var i = 0; i < item.gallerySettings.groups.length; i++) {\n for (var j = 0; j < item.gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (item.gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss) {\n iconCss = item.gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss;\n break;\n }\n }\n if (iconCss) {\n break;\n }\n }\n }\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n var popup_1 = getComponent(popupEle, Popup);\n var popupContainerEle_1 = document.querySelector('#' + item.id + '_galleryPopup .e-ribbon-popup-container');\n var dropdown = new DropDownButton({\n iconCss: iconCss,\n content: content,\n target: popupContainerEle_1,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-gallery-dropdown',\n disabled: item.disabled,\n open: function () {\n var popupContainerItems = popupContainerEle_1.querySelectorAll('.e-ribbon-gallery-container');\n _this.setWrapperStyle(popup_1, popupContainerItems);\n _this.setFoucsToFirstItem(popupContainerEle_1, true, item.id);\n },\n beforeClose: function (args) {\n var isCancelled = _this.popupEvents(args.event, item.gallerySettings, 'popupClose', false);\n if (isCancelled) {\n args.cancel = true;\n }\n }\n }, buttonEle);\n if (popup_1.width !== 'auto') {\n dropdown.dropDown.width = formatUnit(popup_1.width);\n }\n if (popup_1.height !== 'auto') {\n dropdown.dropDown.height = formatUnit(popup_1.height);\n dropdown.dropDown.element.style.height = (popup_1.height).toString();\n }\n }\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.removeOverFlowEvents = function (item, itemEle) {\n var popupButton = itemEle.querySelector('#' + item.id + '_popupButton');\n if (popupButton) {\n popupButton.classList.remove('e-hidden');\n }\n itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.remove('e-hidden');\n itemEle.querySelectorAll('.e-ribbon-gallery-container').forEach(function (ele) {\n ele.classList.remove('e-hidden');\n });\n var galleryDDBEle = document.querySelector('#' + item.id);\n if (galleryDDBEle) {\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n var dropdown = getComponent(galleryDDBEle, DropDownButton);\n popupEle.appendChild(dropdown.target);\n dropdown.destroy();\n remove(galleryDDBEle);\n }\n };\n RibbonGallery.prototype.setActiveState = function (galleryEle, gallerySettings, itemID, isInteracted, event, isPopup) {\n var previousItem;\n var currentItem;\n var itemEle = document.querySelector('#' + itemID + constants.CONTAINER_ID);\n var selctedGalleryItem = Array.prototype.slice.call(itemEle.querySelectorAll('.e-ribbon-gallery-selected'));\n var popupEle = document.querySelector('#' + itemID + '_popupContainer');\n var popupGalleryItem = Array.prototype.slice.call(popupEle.querySelectorAll('.e-ribbon-gallery-selected'));\n if (popupGalleryItem.length) {\n selctedGalleryItem = selctedGalleryItem.concat(popupGalleryItem);\n }\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (selctedGalleryItem[0].id === itemID + '_galleryContainer' + i + '_gallery' + j) {\n previousItem = gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)];\n }\n if (galleryEle.id === (isPopup ? 'popup_' : '') + itemID + '_galleryContainer' + i + '_gallery' + j) {\n currentItem = gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)];\n }\n }\n }\n var galleryItem = document.getElementById(galleryEle.id);\n var galleryItemPopup;\n var selectingEventArgs = { cancel: false, name: 'beforeSelect', previousItem: previousItem, currentItem: currentItem, isInteracted: isInteracted, event: event };\n if (gallerySettings.beforeSelect) {\n gallerySettings.beforeSelect.call(this, selectingEventArgs);\n }\n if (selectingEventArgs.cancel) {\n return;\n }\n else {\n for (var i = 0; i < selctedGalleryItem.length; i++) {\n selctedGalleryItem[parseInt(i.toString(), 10)].classList.remove('e-ribbon-gallery-selected');\n }\n if (!galleryItem.id.startsWith('popup_')) {\n galleryItemPopup = document.getElementById('popup_' + galleryEle.id);\n }\n else if (document.getElementById(galleryItem.id.slice(6))) {\n galleryItemPopup = document.getElementById(galleryItem.id.slice(6));\n }\n if (galleryItemPopup) {\n galleryItemPopup.classList.add('e-ribbon-gallery-selected');\n }\n galleryItem.classList.add('e-ribbon-gallery-selected');\n var selectedEventArgs = { previousItem: previousItem, currentItem: currentItem, name: 'select', isInteracted: isInteracted, event: event };\n var galleryPopupItems = document.querySelectorAll('#' + itemID + '_popupContainer .e-ribbon-gallery-item');\n for (var i = 0; i < galleryPopupItems.length; i++) {\n if (galleryPopupItems[parseInt(i.toString(), 10)].id === galleryEle.id) {\n gallerySettings.selectedItemIndex = i;\n break;\n }\n }\n if (gallerySettings.select) {\n gallerySettings.select.call(this, selectedEventArgs);\n }\n }\n };\n RibbonGallery.prototype.popupEvents = function (args, gallerySettings, name, isOpen) {\n var popupEventArgs = { cancel: false, event: args, name: name };\n if (isOpen && gallerySettings.popupOpen) {\n gallerySettings.popupOpen.call(this, popupEventArgs);\n }\n else if (!isOpen && gallerySettings.popupClose) {\n gallerySettings.popupClose.call(this, popupEventArgs);\n }\n if (popupEventArgs.cancel) {\n return true;\n }\n return false;\n };\n RibbonGallery.prototype.showPopup = function (popup, popupEle, args, gallerySettings, itemID) {\n var isCancelled = this.popupEvents(args, gallerySettings, 'popupOpen', true);\n if (isCancelled) {\n return;\n }\n popup.show();\n this.checkCollision(popup, popupEle);\n var buttonEle = document.querySelector('#' + itemID + '_popupButton');\n buttonEle.classList.add('e-gallery-button-active');\n var buttonPosition = buttonEle.getBoundingClientRect();\n if (popupEle.offsetWidth > buttonPosition.left) {\n this.checkCollision(popup, popupEle, buttonPosition.left);\n }\n var offsetX = Math.abs((popupEle.offsetWidth - buttonPosition.left)) + buttonEle.offsetWidth;\n popupEle.style.left = offsetX + 'px';\n popupEle.style.top = popupEle.getBoundingClientRect().top + 2 + 'px';\n this.setFoucsToFirstItem(popupEle, false, itemID, popup, gallerySettings);\n };\n RibbonGallery.prototype.hidePopup = function (popup, popupEle, args, gallerySettings, itemID) {\n var isCancelled = this.popupEvents(args, gallerySettings, 'popupClose', false);\n if (isCancelled) {\n return;\n }\n popup.hide();\n var buttonEle = document.querySelector('#' + itemID + '_popupButton');\n buttonEle.classList.remove('e-gallery-button-active');\n };\n /**\n * Shows a specific gallery popup in the ribbon.\n *\n * @param {string} id - Gets the ribbon item id.\n * @returns {void}\n */\n RibbonGallery.prototype.showGalleryPopup = function (id) {\n var itemProp = getItem(this.parent.tabs, id);\n var popupEle = document.querySelector('#' + id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n this.showPopup(popup, popupEle, null, itemProp.item.gallerySettings, id);\n };\n /**\n * Hides a specific gallery popup in the ribbon.\n *\n * @param {string} id - Gets the ribbon item id.\n * @returns {void}\n */\n RibbonGallery.prototype.hideGalleryPopup = function (id) {\n var itemProp = getItem(this.parent.tabs, id);\n var popupEle = document.querySelector('#' + id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n this.hidePopup(popup, popupEle, null, itemProp.item.gallerySettings, id);\n };\n RibbonGallery.prototype.setFoucsToFirstItem = function (popupEle, isDropdown, itemID, popup, gallerySettings) {\n var _this = this;\n popupEle.querySelectorAll('.e-ribbon-gallery-item')[0].focus();\n this.galleryItemsIndex = 0;\n popupEle.onkeydown = function (e) {\n _this.handleGalleryPopupNavigation(e, popupEle, isDropdown, itemID, popup, gallerySettings);\n };\n };\n RibbonGallery.prototype.handleGalleryPopupNavigation = function (e, popupEle, isDropdown, itemID, popup, gallerySettings) {\n var galleryPopupEle = popupEle.querySelectorAll('.e-ribbon-gallery-item');\n if (galleryPopupEle) {\n if (e.key === 'Home') {\n this.galleryItemsIndex = 0;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n else if (e.key === 'End') {\n this.galleryItemsIndex = galleryPopupEle.length - 1;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n else if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n this.galleryItemsIndex++;\n if (this.galleryItemsIndex !== galleryPopupEle.length) {\n if (galleryPopupEle && (galleryPopupEle[this.galleryItemsIndex])) {\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else {\n this.galleryItemsIndex = 0;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n if (this.galleryItemsIndex !== 0) {\n this.galleryItemsIndex--;\n if (galleryPopupEle && (galleryPopupEle[this.galleryItemsIndex])) {\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else {\n this.galleryItemsIndex = galleryPopupEle.length - 1;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else if ((e.key === 'Enter' || e.code === 'Space') || (e.key === 'Escape' && !isDropdown)) {\n this.hidePopup(popup, popupEle, e, gallerySettings, itemID);\n }\n }\n };\n RibbonGallery.prototype.createGalleryTemplate = function (galleryItemEle, gallerySettings, id, items) {\n galleryItemEle.classList.add('e-ribbon-gallery-template');\n var templateName = 'ribbon' + id + 'galleryTemplate';\n this.parent['clearTemplate']([templateName]);\n var templateFunction = getTemplateFunction(gallerySettings.template);\n if (items.disabled) {\n galleryItemEle.classList.add('e-disabled');\n }\n if (items.cssClass) {\n galleryItemEle.classList.add(items.cssClass);\n }\n append(templateFunction({ items: items }, this, templateName, (id + 'galleryTemplate'), this.parent.isStringTemplate, null, null, this.parent), galleryItemEle);\n };\n RibbonGallery.prototype.createGalleryPopupTemplate = function (galleryItemEle, gallerySettings, id, items) {\n galleryItemEle.classList.add('e-ribbon-gallery-popup-template');\n var templateName = 'ribbon' + id + 'galleryPopupTemplate';\n this.parent['clearTemplate']([templateName]);\n var templateFunction = getTemplateFunction(gallerySettings.popupTemplate);\n if (items.disabled) {\n galleryItemEle.classList.add('e-disabled');\n }\n if (items.cssClass) {\n galleryItemEle.classList.add(items.cssClass);\n }\n append(templateFunction({ items: items }, this, templateName, (id + 'galleryPopupTemplate'), this.parent.isStringTemplate, null, null, this.parent), galleryItemEle);\n };\n return RibbonGallery;\n}());\nexport { RibbonGallery };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { addClass, append, Event, Collection, Complex, Component, EventHandler, formatUnit, getInstance, getComponent, getUniqueID, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, NotifyPropertyChanges, Property, remove, removeClass } from '@syncfusion/ej2-base';\nimport { Tab, TabAnimationSettings, HScroll, Toolbar } from '@syncfusion/ej2-navigations';\nimport { RibbonTab, FileMenuSettings, BackStageMenu, RibbonContextualTabSettings } from '../models/index';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport { ItemOrientation, RibbonItemSize, RibbonItemType } from './interface';\nimport { RibbonButton, RibbonComboBox, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonGroupButton } from '../items/index';\nimport { destroyControl, getCollection, getGroup, getIndex, getItem, getItemElement, updateCommonProperty, updateControlDisabled, isTooltipPresent, getTemplateFunction, createTooltip, destroyTooltip, updateTooltipProp } from './utils';\nimport * as constants from './constant';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { DropDownButton, SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n * The Ribbon Component is a structured layout to manage tools with tabs and groups.\n */\nvar Ribbon = /** @class */ (function (_super) {\n __extends(Ribbon, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {RibbonModel} options - Specifies the ribbon model\n * @param {string|HTMLDivElement} element - Specifies the target element\n */\n function Ribbon(options, element) {\n var _this = this;\n Ribbon_1.Inject(RibbonButton, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonComboBox, RibbonGroupButton);\n _this = _super.call(this, options, element) || this;\n return _this;\n }\n Ribbon_1 = Ribbon;\n /**\n * Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Ribbon.prototype.render = function () {\n this.initialize();\n };\n Ribbon.prototype.preRender = function () {\n this.keysPress = '';\n this.idIndex = 0;\n this.tooltipData = [];\n this.initialPropsData = {};\n this.hiddenElements = {};\n this.keyTipElements = {};\n this.hiddenGroups = [];\n this.itemsModel = [];\n this.targetTabs = {};\n this.isAddRemove = false;\n this.isUpdateItems = false;\n this.keyConfigs = {\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n tab: 'tab',\n shiftTab: 'shift+tab'\n };\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Ribbon.prototype.getPersistData = function () {\n return this.addOnPersist(['activeLayout']);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Ribbon.prototype.getModuleName = function () {\n return 'ribbon';\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n Ribbon.prototype.requiredModules = function () {\n var modules = [];\n modules.push({ member: 'ribbonButton', args: [this], name: 'RibbonButton' }, { member: 'ribbonDropDown', args: [this], name: 'RibbonDropDown' }, { member: 'ribbonSplitButton', args: [this], name: 'RibbonSplitButton' }, { member: 'ribbonCheckBox', args: [this], name: 'RibbonCheckBox' }, { member: 'ribbonComboBox', args: [this], name: 'RibbonComboBox' }, { member: 'ribbonGroupButton', args: [this], name: 'RibbonGroupButton' });\n var canInjectColorPickerModule = getItem(this.tabs, null, RibbonItemType.ColorPicker);\n var canInjectGalleryModule = getItem(this.tabs, null, RibbonItemType.Gallery);\n if (canInjectColorPickerModule) {\n modules.push({ member: 'ribbonColorPicker', args: [this], name: 'RibbonColorPicker' });\n }\n if (canInjectGalleryModule) {\n modules.push({ member: 'ribbonGallery', args: [this], name: 'RibbonGallery' });\n }\n if (this.backStageMenu.visible || this.backStageMenu.items.length) {\n modules.push({ member: 'ribbonBackstage', args: [this], name: 'RibbonBackstage' });\n }\n if (this.fileMenu.visible || this.fileMenu.menuItems.length) {\n modules.push({ member: 'ribbonFileMenu', args: [this], name: 'RibbonFileMenu' });\n }\n if (this.contextualTabs.length) {\n modules.push({ member: 'ribbonContextualTab', args: [this], name: 'RibbonContextualTab' });\n }\n if (this.enableKeyTips) {\n modules.push({ member: 'ribbonKeyTip', args: [this], name: 'RibbonKeyTip' });\n }\n return modules;\n };\n Ribbon.prototype.initialize = function () {\n this.element.id = this.element.id || getUniqueID('e-' + this.getModuleName());\n addClass([this.element], ['e-rbn'].concat((this.cssClass ? this.cssClass.split(constants.SPACE) : [])));\n if (this.enableRtl) {\n this.element.classList.add(constants.RTL_CSS);\n }\n this.element.style.width = formatUnit(this.width);\n this.renderTabs();\n if (this.ribbonContextualTabModule) {\n this.ribbonContextualTabModule.addContextualTabs();\n }\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.createFileMenu(this.fileMenu);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.createBackStage(this.backStageMenu);\n }\n this.createHelpPaneTemplate();\n var toolbar = this.tabObj['tbObj'];\n toolbar.refreshOverflow();\n this.addTabOverflowKeyTip();\n createTooltip(this.element, this);\n this.isKeytipOpen = false;\n this.wireEvents();\n this.wireKeyboardEvent();\n this.currentControlIndex = 0;\n };\n Ribbon.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n EventHandler.add(document.body, 'keydown', this.keytipActionHandler, this);\n EventHandler.add(document, 'mousedown', this.mouseEventHandler, this);\n EventHandler.add(document, 'scroll', this.mouseEventHandler, this);\n };\n Ribbon.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleRibbon = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Ribbon.prototype.keyActionHandler = function (e) {\n if (((e.key === 'Tab') && (!(e.target.classList.contains('e-tab-wrap')) && !(e.target.classList.contains('e-combobox'))))) {\n e.preventDefault();\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var controlElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-control'));\n var templateElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-template'));\n var galleryElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-gallery-item'));\n var ribbonControls = controlElements.concat(templateElements, galleryElements);\n var comboBoxElements = activeContent.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < ribbonControls.length; i++) {\n if (ribbonControls[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (ribbonControls[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.currentControlIndex = i;\n }\n }\n }\n }\n if (this.currentControlIndex === 0) {\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-collapse-btn') || e.target.classList.contains('e-ribbon-last-item') ||\n e.target.classList.contains('e-ribbon-first-item') || e.target.classList.contains('e-ribbon-group-of-btn') ||\n e.target.classList.contains('e-ribbon-overall-of-btn') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-gallery-item')) {\n switch (e.action) {\n case 'rightarrow':\n this.handleNavigation(e, !this.enableRtl, ribbonControls);\n break;\n case 'leftarrow':\n this.handleNavigation(e, this.enableRtl, ribbonControls);\n break;\n case 'tab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex < ribbonControls.length - 1) {\n this.currentControlIndex++;\n }\n }\n break;\n case 'shiftTab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex > 0) {\n this.currentControlIndex--;\n }\n }\n else {\n this.tabObj.element.querySelector('.e-toolbar-item.e-active').querySelector('.e-tab-wrap').focus();\n this.currentControlIndex = 0;\n }\n }\n }\n };\n Ribbon.prototype.handleNavigation = function (e, enableRtl, ribbonControls) {\n var groupContainer;\n var prevGroupId;\n if (enableRtl) {\n if (this.currentControlIndex < ribbonControls.length - 1 && ribbonControls[this.currentControlIndex + 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex++;\n }\n }\n else {\n if (this.currentControlIndex > 0 && ribbonControls[this.currentControlIndex - 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex--;\n }\n }\n if ((!enableRtl && (this.currentControlIndex > 0)) || (enableRtl && (this.currentControlIndex < ribbonControls.length - 1))) {\n if (!e.target.classList.contains('e-combobox') && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-gallery-item')) && !e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n this.currentControlIndex++;\n }\n else {\n var prevGroupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (prevGroupContainer) {\n prevGroupId = prevGroupContainer.getAttribute('id');\n }\n this.currentControlIndex--;\n }\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n if (((enableRtl && this.currentControlIndex === ribbonControls.length - 1) ||\n (!enableRtl && this.currentControlIndex === 0))) {\n if (ribbonControls[this.currentControlIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n break;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n enableRtl ? this.currentControlIndex++ : this.currentControlIndex--;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (this.activeLayout === 'Classic') {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (enableRtl) {\n var launcherIconEle = void 0;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n var items = groupContainer.querySelectorAll('.e-ribbon-item');\n var elem = items[items.length - 1].querySelector('.e-control');\n if (elem) {\n elem.classList.add('e-ribbon-last-item');\n }\n }\n }\n else {\n if (groupContainer) {\n var groupContainerId = groupContainer.getAttribute('id');\n if (prevGroupId !== groupContainerId) {\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n ribbonControls[parseInt((this.currentControlIndex + 1).toString(), 10)].classList.add('e-ribbon-first-item');\n }\n }\n }\n }\n }\n else {\n if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-first-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-first-item');\n }\n else if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n }\n }\n else {\n if (this.activeLayout === 'Classic') {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n if (this.activeLayout === 'Simplified') {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if (enableRtl && (overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n }\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n else {\n this.currentControlIndex--;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (!enableRtl && e.target.classList.contains('e-ribbon-first-item')) {\n groupContainer = ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n if (enableRtl) {\n this.currentControlIndex++;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentControlIndex;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-collapse-btn')) {\n if (enableRtl) {\n this.currentControlIndex = 0;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n else {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if ((overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex--;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n }\n if (this.activeLayout === 'Simplified' && e.target.classList.contains('e-ribbon-overall-of-btn')) {\n if (enableRtl) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n };\n Ribbon.prototype.resizeHandler = function () {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n if (this.scrollModule) {\n var scrollEle = this.tabObj.element.querySelector('.' + constants.HORIZONTAL_SCROLLBAR);\n this.scrollModule.scrollStep = scrollEle.offsetWidth;\n }\n if (this.activeLayout === 'Simplified') {\n var activePopup = document.querySelectorAll('.e-ribbon .e-dropdown-btn.e-active, .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active');\n if (activePopup.length) {\n for (var i = 0; i < activePopup.length; i++) {\n var dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);\n dropDownBtn.toggle();\n }\n }\n }\n var galleryPopupEle = document.querySelector('.e-ribbon-gallery-popup.e-popup-open');\n if (galleryPopupEle) {\n var popup = getComponent(galleryPopupEle, Popup);\n popup.hide();\n }\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n };\n Ribbon.prototype.mouseEventHandler = function () {\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n };\n Ribbon.prototype.keytipActionHandler = function (e) {\n if (this.enableKeyTips) {\n var isKeyTipPresent = false;\n var keyPress = e.key;\n if (e.altKey && e.key === 'Meta') {\n var activePopup = document.querySelectorAll('.e-ribbon .e-dropdown-btn.e-active, .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active');\n if (activePopup.length) {\n for (var i = 0; i < activePopup.length; i++) {\n var dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);\n dropDownBtn.toggle();\n }\n this.ribbonKeyTipModule.removeKeytip();\n }\n else {\n if (!this.isKeytipOpen) {\n var backstagePopup = document.querySelector('.e-ribbon-backstage-popup');\n if (backstagePopup && backstagePopup.classList.contains('e-popup-open')) {\n this.ribbonBackstageModule.hideBackstage();\n }\n this.ribbonKeyTipModule.createKeytip('tab');\n }\n else {\n this.ribbonKeyTipModule.removeKeytip();\n }\n }\n }\n else if (e.key === 'Escape' || e.key === 'Tab' || e.key === 'ArrowLeft' || e.key === 'ArrowUp' || e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n this.ribbonKeyTipModule.removeKeytip(e.key);\n }\n else {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n if (keyTipItems) {\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML.toLowerCase() === keyPress) {\n isKeyTipPresent = true;\n this.ribbonKeyTipModule.keytipPress(keyPress);\n break;\n }\n }\n if (!isKeyTipPresent) {\n this.checkKeyTipPresent(keyPress, this.keysPress.length);\n }\n }\n }\n }\n };\n Ribbon.prototype.checkKeyTipPresent = function (keyTip, length) {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML.length > 1 && keyTipItem.innerHTML[parseInt(length.toString(), 10)].toLowerCase() === keyTip) {\n this.keysPress += keyTip;\n this.ribbonKeyTipModule.keytipPress(this.keysPress);\n this.removeKeytip(this.keysPress);\n break;\n }\n }\n };\n Ribbon.prototype.removeKeytip = function (keyTip) {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML[0].toLowerCase() !== keyTip && keyTip !== '') {\n remove(keyTipItem);\n }\n }\n };\n Ribbon.prototype.addKeyTip = function (tabIndex, keyTip, id, type) {\n if (this.keyTipElements && this.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n var isKeyTipExist = false;\n if (!(this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type])) {\n this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type] = [];\n }\n if (Object.keys(this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type]).length) {\n var keytipData = this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type];\n for (var i = 0; i < Object.keys(this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type]).length; i++) {\n if (keytipData[parseInt(i.toString(), 10)].id === id) {\n isKeyTipExist = true;\n }\n }\n if (!isKeyTipExist) {\n this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type].\n push({ id: id, type: type, keyTip: keyTip });\n }\n }\n else {\n this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type].push({ id: id, type: type, keyTip: keyTip });\n }\n }\n };\n Ribbon.prototype.renderTabs = function () {\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal = this.checkID(this.tabsInternal, 'tab', this.element.id);\n this.setProperties({ tabs: this.tabsInternal }, true);\n var tabEle = this.createElement('div', {\n id: this.element.id + constants.TAB_ID\n });\n this.element.appendChild(tabEle);\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n this.tabObj = new Tab({\n cssClass: constants.RIBBON_TAB,\n selectedItem: this.selectedTab,\n overflowMode: 'Popup',\n width: this.width,\n items: tabItems,\n enableRtl: this.enableRtl,\n created: this.tabCreated.bind(this),\n selected: this.ribbonTabSelected.bind(this),\n selecting: this.ribbonTabSelecting.bind(this),\n animation: this.tabAnimation\n });\n this.tabObj.appendTo(tabEle);\n //Set the width value as \"0px\" with unit for proper calculation.\n this.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, '0px');\n this.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n var toolbar = getComponent(toolbarEle, Toolbar);\n toolbar.setProperties({ width: 'calc(100% - var(--fileMenuWidth) - var(--helpTemplateWidth))' });\n this.element.classList[this.isMinimized ? 'add' : 'remove'](constants.RIBBON_MINIMIZE);\n };\n Ribbon.prototype.minimize = function (val) {\n var _this = this;\n if (val === this.isMinimized) {\n return;\n }\n var eventArgs = { cancel: false };\n this.trigger(val ? 'ribbonCollapsing' : 'ribbonExpanding', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.setProperties({ isMinimized: val }, true);\n _this.element.classList.toggle(constants.RIBBON_MINIMIZE, _this.isMinimized);\n //to overwrite inline styles from hscroll\n _this.tabObj.element.querySelector('.e-content').style.display = val ? 'none' : 'block';\n if (!val) {\n _this.refreshLayout();\n }\n });\n };\n Ribbon.prototype.toggleLayout = function (args) {\n this.setProperties({ activeLayout: this.activeLayout === 'Simplified' ? 'Classic' : 'Simplified' }, true);\n this.switchLayout();\n var eventArgs = { activeLayout: this.activeLayout, event: args };\n this.trigger('ribbonLayoutSwitched', eventArgs);\n };\n Ribbon.prototype.tabCreated = function () {\n if (!this.hideLayoutSwitcher) {\n this.addExpandCollapse();\n }\n this.renderInitialTab(this.selectedTab);\n };\n Ribbon.prototype.ribbonTabSelected = function (e) {\n e.preventFocus = true;\n this.isAddRemove = false;\n var selectedTabId = e.selectedItem.getAttribute('data-id');\n var selectedIndex = getIndex(this.tabs, (function (tab) { return (tab.id === selectedTabId); }));\n selectedIndex = selectedIndex === -1 ? this.selectedTab : selectedIndex;\n var selectedContent = this.tabObj.items[parseInt(selectedIndex.toString(), 10)].content;\n if ((!selectedContent.querySelector('.' + constants.RIBBON_GROUP)) && (this.tabs[parseInt(selectedIndex.toString(), 10)].groups.length !== 0)) {\n var elements = this.createGroups(this.tabs[parseInt(selectedIndex.toString(), 10)].groups, selectedIndex);\n append(elements, selectedContent);\n }\n var isContextual = this.isContextualTab(selectedTabId);\n this.updateSelectedState(selectedTabId);\n var eventArgs = { previousIndex: this.selectedTab, selectedIndex: selectedIndex, isContextual: isContextual };\n this.setProperties({ selectedTab: selectedIndex }, true);\n this.calculateHiddenElementsWidth(selectedIndex);\n if (this.isUpdateItems) {\n for (var i = 0; i < this.itemsModel.length; i++) {\n var item = this.itemsModel[parseInt(i.toString(), 10)];\n if (this.selectedTab === this.targetTabs[item.id]) {\n this.updateItem(item);\n this.itemsModel.splice(i, 1);\n i--;\n }\n }\n if (this.itemsModel.length === 0) {\n this.isUpdateItems = false;\n }\n }\n if (this.ribbonGalleryModule) {\n this.ribbonGalleryModule.checkAvailableHeight(e.selectedContent.firstChild);\n }\n this.checkOverflow(selectedIndex, selectedContent);\n if (this.activeLayout === 'Simplified' && this.overflowDDB) {\n var overflowTarget = this.overflowDDB.target;\n var ofTabContainer = overflowTarget.querySelector('.' + constants.RIBBON_TAB_ACTIVE);\n if (ofTabContainer) {\n ofTabContainer.classList.remove(constants.RIBBON_TAB_ACTIVE);\n }\n var activeTab = overflowTarget.querySelector('#' + selectedTabId + constants.OVERFLOW_ID);\n if (activeTab) {\n activeTab.classList.add(constants.RIBBON_TAB_ACTIVE);\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n this.checkOverflowHiddenItems(false, selectedIndex);\n }\n else {\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n this.trigger('tabSelected', eventArgs);\n };\n Ribbon.prototype.updateSelectedState = function (tabID) {\n if (this.contextualTabs.length) {\n for (var i = 0; i < this.contextualTabs.length; i++) {\n var isSelected = false;\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id === tabID) {\n isSelected = true;\n break;\n }\n }\n this.contextualTabs[parseInt(i.toString(), 10)].\n setProperties({ isSelected: isSelected }, true);\n }\n }\n };\n Ribbon.prototype.checkOverflow = function (tabIndex, activeContent) {\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n var isOverFlow = tabContent.offsetWidth < activeContent.offsetWidth;\n if (isOverFlow && !this.scrollModule) {\n if (this.activeLayout === 'Classic') {\n // Defines whether the shrinking is breaked due to insufficient space.\n var isBreak = false;\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, true);\n if (!isBreak && (tabContent.offsetWidth < activeContent.offsetWidth)) {\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, false);\n }\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createOverflowDropdown(tabIndex, tabContent, activeContent);\n }\n }\n else {\n this.checkSimplifiedItemShrinking(tabIndex, tabContent, activeContent);\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createSimplfiedOverflow(tabContent, activeContent, tabIndex);\n }\n }\n //Adds Scroll if the tabwidth is less the content width even after adding overflow dropdown.\n if ((tabContent.offsetWidth < activeContent.offsetWidth) && (!this.scrollModule)) {\n this.scrollModule = new HScroll({\n enableRtl: this.enableRtl\n }, this.tabObj.element.querySelector('.' + constants.TAB_CONTENT));\n }\n }\n else if (!isOverFlow) {\n this.destroyScroll();\n if (this.activeLayout === 'Classic') {\n var isBreak = false;\n isBreak = this.removeOverflowDropdown(tabContent, activeContent, false, tabIndex);\n //Check for expanding small items to medium items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, true);\n }\n //Check for expanding medium items to large items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, false);\n }\n }\n else {\n this.removeSimplfiedOverflow(tabContent, activeContent, tabIndex);\n if (tabContent.offsetWidth > activeContent.offsetWidth) {\n this.checkSimplifiedItemExpanding(tabIndex, tabContent, activeContent);\n }\n }\n }\n this.addTabOverflowKeyTip();\n };\n Ribbon.prototype.addTabOverflowKeyTip = function () {\n var tabOverflow = this.tabObj.element.querySelector('#_nav');\n if (tabOverflow) {\n this.keyTipElements['taboverflow'] = [];\n this.keyTipElements['taboverflow'].push({ id: tabOverflow.id, type: 'taboverflow', keyTip: '00' });\n }\n else {\n delete (this.keyTipElements['taboverflow']);\n }\n };\n Ribbon.prototype.checkSimplifiedItemShrinking = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Medium) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n itemContainer.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.checkSimplifiedItemExpanding = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth > activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth > activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Small) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var valString = itemContainer.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (tabContent.offsetWidth > value)) {\n itemContainer.removeAttribute('data-medium-width');\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.createSimplfiedOverflow = function (tabContent, activeContent, tabIndex) {\n var orderedGroups = this.getGroupResizeOrder(true, tabIndex);\n var isEmptyCollection;\n for (var i = 0; ((i < orderedGroups.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n var isGroupUpdated = false;\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = group.collections.length; ((j >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); j--) {\n var collection = group.collections[parseInt((j - 1).toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n var itemContainer = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n var groupHidden = false;\n var itemHidden = false;\n var isAllItemHidden = false;\n var isEmptyCollection_1 = false;\n var groupItems = void 0;\n if (groupEle.classList.contains('e-hidden') || groupEle.classList.contains('e-hide-group')) {\n groupItems = groupEle.querySelectorAll('.e-ribbon-item.e-hidden');\n if (groupItems.length) {\n for (var i_1 = 0; i_1 < groupItems.length; i_1++) {\n groupItems[parseInt(i_1.toString(), 10)].classList.remove('e-hidden');\n }\n }\n if (groupEle.classList.contains('e-hide-group')) {\n isAllItemHidden = true;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n if (this.hiddenGroups.indexOf(groupEle.id) !== -1) {\n this.hiddenGroups.splice(this.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n else {\n groupHidden = true;\n groupEle.classList.remove('e-hidden');\n }\n if (!isGroupUpdated) {\n this.calculateOverflowItemsWidth(groupEle.offsetWidth, false, tabIndex);\n this.calculateMediumDataWidth(groupEle.offsetWidth, tabIndex, false);\n isGroupUpdated = true;\n }\n }\n else {\n if (itemContainer.classList.contains('e-hidden')) {\n itemHidden = true;\n itemContainer.classList.remove('e-hidden');\n if (groupEle.classList.contains('e-ribbon-emptyCollection')) {\n isEmptyCollection_1 = true;\n groupEle.classList.remove('e-ribbon-emptyCollection');\n }\n this.calculateOverflowItemsWidth(itemContainer.offsetWidth, false, tabIndex);\n this.calculateMediumDataWidth(itemContainer.offsetWidth, tabIndex, false);\n }\n }\n itemContainer.setAttribute('data-simplified-width', (activeContent.offsetWidth).toString());\n if (itemHidden) {\n itemContainer.classList.add('e-hidden');\n }\n if (groupItems && groupItems.length) {\n for (var i_2 = 0; i_2 < groupItems.length; i_2++) {\n groupItems[parseInt(i_2.toString(), 10)].classList.add('e-hidden');\n }\n }\n if (groupHidden) {\n groupEle.classList.add('e-hidden');\n }\n if (isAllItemHidden) {\n groupEle.classList.add('e-hide-group');\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n if (isEmptyCollection_1) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemContainer, groupContainer, true);\n if (item.activeSize === RibbonItemSize.Small) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, true);\n }\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n var itemsLength = groupEle.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength && !group.enableGroupOverflow) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n if (isEmptyCollection) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n this.checkOverflowHiddenItems(group.enableGroupOverflow, tabIndex, group.id);\n }\n };\n Ribbon.prototype.checkEmptyCollection = function (itemsLength) {\n var isEmptyCollection = true;\n for (var i = 0; i < itemsLength.length; i++) {\n if (!(itemsLength[parseInt(i.toString(), 10)].classList.contains('e-hidden'))) {\n isEmptyCollection = false;\n break;\n }\n }\n return isEmptyCollection;\n };\n Ribbon.prototype.updatePopupItems = function (item, itemEle, isGroupOF, isMenu) {\n var _this = this;\n var dropdown = getComponent(itemEle.querySelector('#' + item.id), (item.type === RibbonItemType.DropDown || item.type === RibbonItemType.Gallery || item.type === RibbonItemType.GroupButton) ? DropDownButton : SplitButton);\n var dropDownPopup = dropdown.dropDown;\n // popup is on right if (isGroupOF && isMenu)\n // The position is reversed if RTL is enabled.\n // isRight = ((isGroupOF && isMenu) && !this.enableRtl ) || (!(isGroupOF && isMenu) && this.enableRtl) ==> (isGroupOF && isMenu) !== this.enableRtl\n var isLeft = (isGroupOF && isMenu) === this.enableRtl;\n if (dropDownPopup) {\n dropDownPopup.setProperties({ position: { X: isLeft ? 'left' : 'right', Y: isMenu ? 'top' : 'bottom' } }, true);\n if (isMenu) {\n dropdown.beforeOpen = function (e) {\n if (isLeft) {\n if (item.type === RibbonItemType.Gallery && _this.ribbonGalleryModule) {\n _this.ribbonGalleryModule.checkCollision(dropDownPopup, dropDownPopup.element);\n }\n dropDownPopup.element.style.setProperty('visibility', 'hidden');\n dropDownPopup.element.style.setProperty('display', 'block');\n dropDownPopup.setProperties({ offsetX: -1 * dropDownPopup.element.offsetWidth });\n dropDownPopup.element.style.removeProperty('display');\n dropDownPopup.element.style.removeProperty('visibility');\n }\n if (item.splitButtonSettings.beforeOpen) {\n item.splitButtonSettings.beforeOpen.call(_this, e);\n }\n if (item.dropDownSettings.beforeOpen) {\n item.dropDownSettings.beforeOpen.call(_this, e);\n }\n };\n }\n else {\n dropDownPopup.setProperties({ offsetX: 0 }, true);\n dropdown.beforeOpen = null;\n }\n }\n };\n Ribbon.prototype.removeSimplfiedOverflow = function (tabContent, activeContent, tabIndex, isClear) {\n if (isClear === void 0) { isClear = false; }\n var orderedGroups = this.getGroupResizeOrder(false, tabIndex);\n var flag = true;\n var isEmptyCollection;\n for (var i = 0; ((i < orderedGroups.length) && flag); i++) {\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (group.enableGroupOverflow) {\n var overflowDDBEle = tabContent.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n else {\n overflowDDB = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n for (var j = 0; ((j < group.collections.length) && flag); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n // eslint-disable-next-line max-len\n for (var k = 0; ((k < collection.items.length) && flag && !isClear && (tabContent.offsetWidth > activeContent.offsetWidth)); k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemContainer = void 0;\n if (overflowtarget) {\n itemContainer = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n var width = parseInt(itemContainer.getAttribute('data-simplified-width'), 10);\n var groupItemEle = tabContent.querySelector('#' + group.id);\n if (itemContainer.classList.contains('e-hidden') || groupItemEle.classList.contains('e-hidden')) {\n width = Math.abs(width - activeContent.offsetWidth);\n }\n if (!isClear && (tabContent.offsetWidth < width)) {\n flag = false;\n break;\n }\n var groupEle = tabContent.querySelector('#' + collection.id);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, false);\n }\n groupEle.append(itemContainer);\n if (itemContainer.classList.contains('e-hidden') || groupItemEle.classList.contains('e-hidden')) {\n itemContainer.setAttribute('data-simplified-width', width.toString());\n var isGroupHidden = false;\n var widthDifference = 0;\n if (itemContainer.classList.contains('e-hidden')) {\n itemContainer.classList.remove('e-hidden');\n if (groupItemEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n widthDifference = this.checkWidthDifference(itemContainer, groupItemEle);\n }\n width = itemContainer.offsetWidth + widthDifference;\n itemContainer.classList.add('e-hidden');\n }\n this.calculateOverflowItemsWidth(width, true, tabIndex);\n this.calculateMediumDataWidth(width, tabIndex, true);\n if (isGroupHidden) {\n groupItemEle.classList.add('e-hide-group');\n groupItemEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n this.removeOverflowEvent(item, itemContainer);\n if (item.allowedSizes & RibbonItemSize.Small) {\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemContainer.querySelector('#' + item.id), item);\n }\n var groupElement = tabContent.querySelector('#' + group.id);\n var itemEle = groupElement.querySelector('.' + constants.RIBBON_ITEM);\n if (groupElement.classList.contains('e-ribbon-emptyCollection') && itemEle !== null) {\n var itemsLength = groupElement.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n if (!isEmptyCollection) {\n groupElement.classList.remove('e-ribbon-emptyCollection');\n }\n }\n }\n }\n }\n }\n if (overflowDDB) {\n if (group.enableGroupOverflow) {\n if (overflowtarget.childElementCount === 0 ||\n (overflowtarget.childElementCount === 1 && this.isHeaderVisible(overflowtarget, group.id))) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n else {\n var ofGroupContainer = overflowtarget.querySelector('#' + group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = overflowtarget.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n }\n }\n for (var i = 0; i < orderedGroups.length; i++) {\n this.checkOverflowHiddenItems(orderedGroups[parseInt(i.toString(), 10)].enableGroupOverflow, tabIndex, orderedGroups[parseInt(i.toString(), 10)].id);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n if (overflowEle.childElementCount === 0) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n }\n };\n Ribbon.prototype.checkOverflowHiddenItems = function (isGroupOF, tabIndex, groupId) {\n if (isGroupOF) {\n var overflowDDB = document.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (overflowDDB) {\n var overflowButton = getInstance(overflowDDB, DropDownButton);\n var overflowBtnTarget = overflowButton.target;\n var itemEle = overflowBtnTarget.querySelectorAll('.e-ribbon-item');\n var isHidden = true;\n for (var i = 0; i < itemEle.length; i++) {\n if (!(itemEle[parseInt(i.toString(), 10)].classList.contains('e-hidden'))) {\n isHidden = false;\n break;\n }\n }\n overflowButton.element.classList[isHidden ? 'add' : 'remove']('e-hidden');\n }\n }\n else {\n if (this.overflowDDB) {\n var isGroupHidden = true;\n var isItemHidden = void 0;\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n for (var k = 0; k < ofTabContainer.children.length; k++) {\n isItemHidden = true;\n var overflowTab = ofTabContainer.children[parseInt(k.toString(), 10)];\n var groupTabContainer = overflowTab.querySelectorAll('.e-ribbon-item');\n for (var n = 0; n < groupTabContainer.length; n++) {\n if (!(groupTabContainer[parseInt(n.toString(), 10)].classList.contains('e-hidden'))) {\n isItemHidden = false;\n break;\n }\n }\n overflowTab.classList[isItemHidden ? 'add' : 'remove']('e-hide-group');\n if (!(overflowTab.classList.contains('e-hide-group')) && !(overflowTab.classList.contains('e-hidden'))) {\n isGroupHidden = false;\n }\n }\n this.overflowDDB.element.classList[isGroupHidden ? 'add' : 'remove'](constants.HIDE_CSS);\n }\n }\n }\n };\n Ribbon.prototype.createOverflowPopup = function (item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer, isResize) {\n var overflowButton;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupId);\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n if (isGroupOF) {\n var overflowDDB = groupContainer.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (!overflowDDB) {\n overflowButton = this.addOverflowButton(groupId + constants.GROUPOF_BUTTON_ID, isGroupOF);\n overflowButton.element.classList.add(constants.RIBBON_GROUP_OF_BUTTON);\n groupContainer.appendChild(overflowButton.element);\n }\n else {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n this.addKeyTip(tabIndex, '0' + (itemProp.groupIndex + 1), overflowButton.element.id, 'grpofbtn');\n overflowtarget = overflowButton.target;\n var overflowBtnTarget = overflowButton.target;\n var headerEle = overflowBtnTarget.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID);\n if (!headerEle) {\n if (itemProp.group.overflowHeader) {\n var groupHeader_1 = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID,\n innerHTML: itemProp.group.overflowHeader\n });\n overflowBtnTarget.append(groupHeader_1);\n }\n }\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n overflowBtnTarget.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n overflowBtnTarget.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n overflowBtnTarget.classList.add('e-hide-group');\n }\n }\n if (isResize) {\n overflowBtnTarget.insertBefore(itemEle, overflowBtnTarget.querySelector('.' + constants.RIBBON_ITEM));\n }\n else {\n overflowBtnTarget.append(itemEle);\n }\n }\n else {\n if (!this.overflowDDB) {\n this.overflowDDB = this.addOverflowButton(this.tabObj.element.id + constants.OVRLOF_BUTTON_ID, isGroupOF);\n this.tabObj.element.insertBefore(this.overflowDDB.element, this.collapseButton);\n this.overflowDDB.element.classList.add(constants.RIBBON_OVERALL_OF_BUTTON);\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n else {\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' +\n this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var ofGroupContainer = overflowEle.querySelector('#' + groupId + constants.CONTAINER_ID);\n if (!ofGroupContainer) {\n ofGroupContainer = itemProp.group.overflowHeader ? this.createGroupContainer(groupId, itemProp.group.overflowHeader) : this.createGroupContainer(groupId, groupHeader);\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n ofGroupContainer.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n ofGroupContainer.classList.add('e-hide-group');\n }\n }\n ofTabContainer.append(ofGroupContainer);\n }\n if (isResize) {\n ofGroupContainer.insertBefore(itemEle, ofGroupContainer.querySelector('.' + constants.RIBBON_ITEM));\n }\n else {\n ofGroupContainer.append(itemEle);\n }\n }\n else {\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n }\n overflowButton = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n if (itemEle !== null) {\n this.addOverflowEvents(item, itemEle, overflowButton);\n }\n if (overflowtarget) {\n if (item.keyTip) {\n this.addKeyTip(tabIndex, item.keyTip, item.id, 'popupitem');\n }\n }\n };\n Ribbon.prototype.addOverflowEvents = function (item, itemEle, overflowButton) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'Gallery':\n if (this.activeLayout === 'Simplified') {\n this.ribbonGalleryModule.addOverFlowEvents(item, itemEle);\n }\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n }\n };\n Ribbon.prototype.createOfTabContainer = function (groupId, groupHeader, itemEle, tabIndex) {\n var ofTabContainer = this.createElement('div', {\n id: this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID,\n className: constants.RIBBON_OF_TAB_CONTAINER\n });\n var overflowtarget = this.overflowDDB.target;\n overflowtarget.append(ofTabContainer);\n var itemProp = getGroup(this.tabs, groupId);\n var ofGroupContainer = itemProp.group.overflowHeader ?\n this.createGroupContainer(groupId, itemProp.group.overflowHeader) : this.createGroupContainer(groupId, groupHeader);\n ofGroupContainer.append(itemEle);\n ofTabContainer.append(ofGroupContainer);\n if (tabIndex === this.selectedTab) {\n ofTabContainer.classList.add(constants.RIBBON_TAB_ACTIVE);\n }\n var groupEle = document.querySelector('#' + groupId);\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n ofGroupContainer.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n ofGroupContainer.classList.add('e-hide-group');\n }\n }\n };\n Ribbon.prototype.checkGroupShrinking = function (tabIndex, tabContent, activeContent, isLarge) {\n var isOverFlow = true;\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = (tab.groups.length - 1); (isOverFlow && (j >= 0)); j--) {\n // eslint-disable-next-line max-len\n isBreak = isLarge ? this.checkLargeToMedium(tabIndex, tab, j, tabContent, activeContent) : this.checkMediumToSmall(tabIndex, tab, j, tabContent, activeContent);\n isOverFlow = !isBreak && (tabContent.offsetWidth < activeContent.offsetWidth);\n }\n return isBreak;\n };\n Ribbon.prototype.checkValidCollectionLength = function (collections) {\n var count = 0;\n for (var i = 0; i < collections.length; i++) {\n var items = collections[parseInt(i.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n count++;\n break;\n }\n }\n if (count > 1) {\n return false;\n }\n }\n return count === 1;\n };\n Ribbon.prototype.checkClassicCollection = function (collections, n, isIncrement) {\n var items = collections[parseInt(n.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n return n;\n }\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === collections.length) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n };\n Ribbon.prototype.checkClassicItem = function (items, n, isIncrement) {\n var item = items[parseInt(n.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n return n;\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === items.length) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n };\n Ribbon.prototype.checkLargeToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var canReduceCollection = function (collection) {\n return (collection.items.length === 1) && canReduceItem(collection.items[0]);\n };\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Large);\n };\n var createShrinkEle = function (id, firstItem, start, end) {\n var shrinkEle = _this.createElement('div', {\n className: 'e-ribbon-shrink' + constants.SPACE + constants.RIBBON_ROW,\n id: id + '_shrink_container' + start,\n attrs: { 'data-start': start.toString(), 'data-end': end.toString() }\n });\n firstItem.parentElement.insertBefore(shrinkEle, firstItem);\n if (!shouldSkip) {\n shrinkEle.setAttribute('data-large-width', activeContent.offsetWidth.toString());\n }\n return shrinkEle;\n };\n var moveItemToColumn = function (start, end) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[0];\n var firstItem = activeContent.querySelector('#' + collection.items[parseInt(start.toString(), 10)].id + constants.CONTAINER_ID);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + collection.id + '_shrink_container' + start) :\n createShrinkEle(collection.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (!(item.displayOptions & DisplayMode.Classic)) {\n continue;\n }\n var ele = activeContent.querySelector('#' + item.id + constants.CONTAINER_ID);\n shrinkEle.appendChild(ele);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton && _this.activeLayout === 'Classic') {\n _this.setItemSize(ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID), item);\n }\n else {\n _this.setItemSize(ele.querySelector('#' + item.id), item);\n }\n }\n };\n var moveCollectionToColumn = function (start, end) {\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n var firstItem = activeContent.querySelector('#' + group.collections[parseInt(start.toString(), 10)].id);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + group.id + '_shrink_container' + start) :\n createShrinkEle(group.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n var ele = activeContent.querySelector('#' + collection.id);\n shrinkEle.appendChild(ele);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton && _this.activeLayout === 'Classic') {\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID), collection.items[0]);\n }\n else {\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id), collection.items[0]);\n }\n }\n };\n var orientation = group.orientation;\n if (orientation === ItemOrientation.Column) {\n for (var k = (group.collections.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second collection\n k = this.checkClassicCollection(group.collections, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(k.toString(), 10)])) {\n l = this.checkClassicCollection(group.collections, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n if (m >= 0) {\n m = this.checkClassicCollection(group.collections, m, false);\n }\n //Checks the element rendered at position n-2\n if ((m >= 0) && canReduceCollection(group.collections[parseInt(m.toString(), 10)])) {\n moveCollectionToColumn(m, k);\n }\n else {\n moveCollectionToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n var collection = group.collections[0];\n for (var k = (collection.items.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second item\n k = this.checkClassicItem(collection.items, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceItem(collection.items[parseInt(k.toString(), 10)])) {\n l = this.checkClassicItem(collection.items, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceItem(collection.items[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n //Checks the element rendered at position n-2\n if (m >= 0) {\n m = this.checkClassicItem(collection.items, m, false);\n }\n if ((m >= 0) && canReduceItem(collection.items[parseInt(m.toString(), 10)])) {\n moveItemToColumn(m, k);\n }\n else {\n moveItemToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToSmall = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Small) && (item.activeSize === RibbonItemSize.Medium);\n };\n var reduceItemsToSmall = function (collectionIndex, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n var reduce = function (i) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_1 = activeContent.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_1 = activeContent.querySelector('#' + item.id + '_grpbtn');\n }\n _this.setItemSize(ele_1, item);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var reduceCollectionsToSmall = function (index, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n if (!shouldSkip) {\n shrinkColumns[parseInt(index.toString(), 10)].setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n var reduce = function (i) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n var ele_2 = activeContent.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton) {\n ele_2 = activeContent.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_2, collection.items[0]);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var setWidth = function (id) {\n if (!shouldSkip) {\n var ele_3 = activeContent.querySelector('#' + id);\n ele_3.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n };\n if (orientation === ItemOrientation.Column) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var start = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var l = this.checkClassicCollection(group.collections, start + 1, false); //next valid item\n if (canReduceItem(group.collections[parseInt(start.toString(), 10)].items[0])\n && canReduceItem(group.collections[parseInt(l.toString(), 10)].items[0])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n reduceCollectionsToSmall(k, start, end);\n }\n else if (canReduceItem(group.collections[parseInt(end.toString(), 10)].items[0])) {\n reduceCollectionsToSmall(k, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var classicItems = [];\n for (var i = 0; i < collection.items.length; i++) {\n if (collection.items[parseInt(i.toString(), 10)].displayOptions & DisplayMode.Classic) {\n classicItems.push(i);\n }\n }\n //If items length is 1 then, it would have been already check for shrinked column\n if ((classicItems.length > 1)) {\n if (canReduceItem(collection.items[classicItems[0]]) && canReduceItem(collection.items[classicItems[1]])) {\n if (classicItems.length === 2) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[1]);\n }\n else if (canReduceItem(collection.items[classicItems[2]])) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[2], classicItems[1]);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, false); //next valid item\n if (canReduceItem(group.collections[0].items[parseInt(start.toString(), 10)])\n && canReduceItem(group.collections[0].items[parseInt(l.toString(), 10)])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end);\n }\n else if (canReduceItem(group.collections[0].items[parseInt(end.toString(), 10)])) {\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = (collection.items.length - 1); l >= 0; l--) {\n l = this.checkClassicItem(collection.items, l, false);\n if (l < 0) {\n continue;\n }\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canReduceItem(item)) {\n if (item.type !== RibbonItemType.GroupButton) {\n setWidth(item.id);\n }\n else {\n setWidth(item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n reduceItemsToSmall(k, l, l);\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkGroupExpanding = function (tabIndex, tabContent, activeContent, isSmall) {\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = 0; (!isBreak && (j < tab.groups.length)); j++) {\n isBreak = isSmall ? this.checkSmallToMedium(tabIndex, tab, j, tabContent, activeContent, false, true) :\n this.checkMediumToLarge(tabIndex, tab, j, tabContent, activeContent, false, true);\n }\n return isBreak;\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.checkSmallToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canExpandItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Small);\n };\n var expandItemToMedium = function (collectionIndex, index, parentEle) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n var item = collection.items[parseInt(index.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_4 = parentEle.id === item.id ? parentEle : parentEle.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_4 = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_4, item);\n }\n };\n var expandCollectionsToMedium = function (i) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections;\n var item = collections[parseInt(i.toString(), 10)].items[0];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_5 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id);\n collections[parseInt(i.toString(), 10)].items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_5 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_5, collections[parseInt(i.toString(), 10)].items[0]);\n }\n };\n if (orientation === ItemOrientation.Row) {\n // collection length is 1, then the it wll be covered in shrinked columns\n if (!this.checkValidCollectionLength(group.collections)) {\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n l = this.checkClassicItem(collection.items, l, true);\n if (l === collection.items.length) {\n continue;\n }\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canExpandItem(item)) {\n var itemEle = activeContent.querySelector('#' + item.id);\n if (item.type === 'GroupButton') {\n itemEle = activeContent.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemToMedium(k, l, itemEle);\n if (!shouldSkip || shouldClear) {\n itemEle.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n }\n }\n }\n else {\n for (var k = 0; k < group.collections.length; k++) {\n //If items length is 1 then, it will be handled in shrinked column\n if ((group.collections[parseInt(k.toString(), 10)].items.length > 1)) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var itemEle = activeContent.querySelector('#' + collection.id);\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n var classicItems = [];\n for (var i = 0; i < collection.items.length; i++) {\n if (collection.items[parseInt(i.toString(), 10)].displayOptions & DisplayMode.Classic) {\n classicItems.push(i);\n }\n }\n if ((classicItems.length > 1) && value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemToMedium(k, classicItems[0], itemEle);\n expandItemToMedium(k, classicItems[1], itemEle);\n if (classicItems.length === 3) {\n expandItemToMedium(k, classicItems[2], itemEle);\n }\n if (!shouldSkip || shouldClear) {\n itemEle.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n }\n if (shrinkColumns.length > 0) {\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, true); //next valid item\n expandItemToMedium(0, start, shrinkColumn);\n expandItemToMedium(0, l, shrinkColumn);\n // if l == end, then l is the last item, else L is the middle item. If l is middle then call the method for end.\n if (l !== end) {\n expandItemToMedium(0, end, shrinkColumn);\n }\n }\n else {\n var m = this.checkClassicCollection(group.collections, start + 1, true); //next valid item\n expandCollectionsToMedium(start);\n expandCollectionsToMedium(m);\n if (m !== end) {\n expandCollectionsToMedium(end);\n }\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToLarge = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n if (shrinkColumns.length === 0) {\n return false;\n }\n var expandItemsToLarge = function (start, end, parentEle, middle) {\n var items = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections[0].items;\n var reduce = function (i) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var container = parentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele_6 = container.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Large }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_6 = container.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_6, item);\n parentEle.insertAdjacentElement('beforebegin', container);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n var expandCollectionsToLarge = function (start, end, parentEle, middle) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections;\n var reduce = function (i) {\n var collection = collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n var collectionEle = parentEle.querySelector('#' + collection.id);\n var ele_7 = collectionEle.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Large }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton) {\n ele_7 = collectionEle.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_7, collection.items[0]);\n parentEle.insertAdjacentElement('beforebegin', collectionEle);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-large-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, true); //next valid item\n if (l === end) {\n expandItemsToLarge(start, end, shrinkColumn);\n }\n else {\n expandItemsToLarge(start, end, shrinkColumn, l);\n }\n }\n else {\n var m = this.checkClassicCollection(group.collections, start + 1, true); //next valid item\n if (m === end) {\n expandCollectionsToLarge(start, end, shrinkColumn);\n }\n else {\n expandCollectionsToLarge(start, end, shrinkColumn, m);\n }\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-large-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n return false;\n };\n Ribbon.prototype.handleContentSize = function (itemEle, isRemoveOverflow) {\n var itemContainer = itemEle.closest('.' + constants.RIBBON_GROUP_CONTENT);\n if (isRemoveOverflow) {\n itemContainer.classList.add(constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT);\n }\n };\n Ribbon.prototype.setItemSize = function (itemEle, item) {\n if (itemEle) {\n var itemContainer = itemEle.closest('.' + constants.RIBBON_ITEM);\n if (item.type === RibbonItemType.Button) {\n this.ribbonButtonModule.updateButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.DropDown) {\n this.ribbonDropDownModule.updateDropDownSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.SplitButton) {\n this.ribbonSplitButtonModule.updateSplitButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.Template) {\n remove(itemEle);\n this.createTemplateContent(item, itemContainer);\n }\n else if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.updateGroupButtonSize(itemEle, item);\n }\n itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT, constants.RIBBON_LARGE_ITEM, constants.RIBBON_MEDIUM_ITEM, constants.RIBBON_SMALL_ITEM);\n if (item.activeSize === RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.add((item.activeSize === RibbonItemSize.Medium) ?\n constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n }\n };\n Ribbon.prototype.createOverflowDropdown = function (tabIndex, tabContent, activeContent) {\n var collapseOrder = this.getGroupResizeOrder(true, tabIndex);\n if (collapseOrder.length === 0) {\n return;\n }\n var _loop_1 = function (i) {\n var group = collapseOrder[parseInt(i.toString(), 10)];\n var groupEle = this_1.tabObj.element.querySelector('#' + group.id);\n groupEle.setAttribute('data-expanded-width', activeContent.offsetWidth.toString());\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupOverFlow = this_1.createElement('div', {\n className: constants.RIBBON_GROUP_OVERFLOW + constants.SPACE + constants.RIBBON_LARGE_ITEM,\n id: group.id + constants.OVERFLOW_ID + constants.CONTAINER_ID\n });\n groupEle.insertBefore(groupOverFlow, groupContainer);\n var groupIndex = getIndex(this_1.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n var tab = this_1.tabs[parseInt(tabIndex.toString(), 10)];\n //Expanding the items in the group to their original expanded state\n this_1.checkSmallToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n this_1.checkMediumToLarge(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n var dropdown = this_1.ribbonDropDownModule.createOverFlowDropDown(group.id, group.header, group.groupIconCss, groupContainer, groupOverFlow, this_1.enableRtl);\n if (group.keyTip) {\n var overflowDDB = group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID;\n this_1.addKeyTip(tabIndex, group.keyTip, overflowDDB, 'grpoverflow');\n }\n this_1.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: true }, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupContainer.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_1.handleContentSize(itemEle);\n this_1.addOverflowEvents(item, itemEle, dropdown);\n }\n var overflowDDB = document.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var overflowButton = getInstance(overflowDDB, DropDownButton);\n if (overflowButton) {\n var overflowtarget = overflowButton.target;\n if (overflowtarget) {\n if (this_1.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n if (item.type === RibbonItemType.GroupButton) {\n for (var i_3 = 0; i_3 < item.groupButtonSettings.items.length; i_3++) {\n if (item.groupButtonSettings.items[parseInt(i_3.toString(), 10)].keyTip) {\n this_1.addKeyTip(tabIndex, item.groupButtonSettings.items[parseInt(i_3.toString(), 10)].keyTip, item.id + (constants.RIBBON_GROUP_BUTTON_ID + i_3), 'grpoverflowpopup');\n }\n }\n }\n if (item.keyTip) {\n this_1.addKeyTip(tabIndex, item.keyTip, item.id, 'grpoverflowpopup');\n }\n }\n }\n }\n }\n }\n };\n var this_1 = this;\n for (var i = 0; ((i < collapseOrder.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n _loop_1(i);\n }\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.removeOverflowDropdown = function (tabContent, activeContent, isClear, tabIndex) {\n if (isClear === void 0) { isClear = false; }\n var expandOrder = this.getGroupResizeOrder(false, tabIndex);\n if (expandOrder.length === 0) {\n return false;\n }\n var _loop_2 = function (i) {\n var group = expandOrder[parseInt(i.toString(), 10)];\n var groupEle = this_2.tabObj.element.querySelector('#' + group.id);\n if (!groupEle) {\n return \"break\";\n } //to handle the rerendering of tabcontrol when a ribbon tab is added/removed\n var width = parseInt(groupEle.getAttribute('data-expanded-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n return { value: true };\n }\n this_2.removeDropdown(group.id);\n var groupIndex = getIndex(this_2.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n this_2.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: false }, true);\n var tab = this_2.tabs[parseInt(tabIndex.toString(), 10)];\n //Shrinking the items in the group to their previous shrinked state (before moving to dropdown)\n this_2.checkLargeToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n this_2.checkMediumToSmall(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_2.handleContentSize(itemEle, true);\n this_2.removeOverflowEvent(item, itemEle);\n }\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < expandOrder.length; i++) {\n var state_1 = _loop_2(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n if (state_1 === \"break\")\n break;\n }\n return false;\n };\n Ribbon.prototype.removeDropdown = function (groupId) {\n var dropdownElement = this.tabObj.element.querySelector('#' + groupId + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n if (dropdownElement) {\n var groupOverFlow = dropdownElement.parentElement;\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n remove(groupOverFlow);\n }\n };\n Ribbon.prototype.getGroupResizeOrder = function (isCollapse, tabIndex) {\n var _this = this;\n var groups = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n groups = groups.filter(function (e) {\n // (isUndefined(e.isCollapsible) || e.isCollapsible) => check whethe rhte item is collapsible\n // if a isCollapsed property is undefined, then it is considered collapsible and included in collapsible list\n // ((isCollapse && !e.isCollapsed)||(!isCollapse && e.isCollapsed)) => isCollapse !== e.isCollapsed\n return (_this.activeLayout === 'Classic') ? (isUndefined(e.isCollapsible) || e.isCollapsible) && ((isCollapse &&\n isUndefined(e.isCollapsed)) || (!isUndefined(e.isCollapsed) && (isCollapse !== e.isCollapsed))) : true;\n });\n //sort the collapsible groups based on the priority\n groups.sort(function (a, b) { return a.priority - b.priority; });\n //reverse the sorted array to return the array in descending order while collapsing.\n return isCollapse ? groups.reverse() : groups;\n };\n Ribbon.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Ribbon.prototype.clearOverflowDropDown = function (index) {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(index.toString(), 10)].id + constants.CONTENT_ID);\n if (!activeContent) {\n return;\n }\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n this.removeSimplfiedOverflow(activeContent, tabContent, index, true);\n }\n else {\n this.removeOverflowDropdown(activeContent, tabContent, true, index);\n }\n };\n Ribbon.prototype.isContextualTab = function (tabID) {\n var isContextual = false;\n if (this.contextualTabs.length) {\n for (var i = 0; i < this.contextualTabs.length; i++) {\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id === tabID) {\n isContextual = true;\n break;\n }\n }\n }\n }\n return isContextual;\n };\n Ribbon.prototype.ribbonTabSelecting = function (e) {\n var _this = this;\n this.currentControlIndex = 0;\n var nextTabId = e.selectingItem ? e.selectingItem.getAttribute('data-id') : null;\n var previousTabId = e.previousItem.getAttribute('data-id');\n var nextIndex = getIndex(this.tabs, (function (tab) { return (tab.id === nextTabId); }));\n var isContextual = this.isContextualTab(nextTabId);\n var previousIndex = getIndex(this.tabs, (function (tab) { return (tab.id === previousTabId); }));\n nextIndex = nextIndex === -1 ? this.selectedTab : nextIndex;\n var eventArgs = {\n cancel: e.cancel, isInteracted: e.isInteracted, previousIndex: previousIndex,\n selectedIndex: nextIndex, isContextual: isContextual\n };\n this.trigger('tabSelecting', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.destroyScroll();\n if (!_this.isAddRemove && (previousIndex !== -1)) {\n _this.clearOverflowDropDown(previousIndex);\n }\n var selectedTabContent = _this.tabObj.items[parseInt(nextIndex.toString(), 10)].content;\n if ((!selectedTabContent.querySelector('.' + constants.RIBBON_GROUP)) && (_this.tabs[parseInt(nextIndex.toString(), 10)].groups.length !== 0)) {\n var elements = _this.createGroups(_this.tabs[parseInt(nextIndex.toString(), 10)].groups, nextIndex);\n append(elements, selectedTabContent);\n }\n });\n };\n Ribbon.prototype.createTabItems = function (tabs) {\n var _this = this;\n var tabItems = [];\n var _loop_3 = function (i) {\n var ribbonTab = tabs[parseInt(i.toString(), 10)];\n var header = this_3.createElement('span', {\n innerHTML: ribbonTab.header,\n id: ribbonTab.id + constants.HEADER_ID\n });\n var tabIndex = getIndex(this_3.tabs, (function (tab) { return (tab.id === ribbonTab.id); }));\n if (ribbonTab.keyTip) {\n if (!this_3.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n this_3.keyTipElements[parseInt(tabIndex.toString(), 10)] = {};\n }\n this_3.addKeyTip(tabIndex, ribbonTab.keyTip, ribbonTab.id, 'tab');\n }\n header.onclick = function () { _this.minimize(false); };\n header.ondblclick = function () { _this.minimize(true); };\n var tab = { header: { text: header }, id: ribbonTab.id, cssClass: ribbonTab.cssClass };\n var content = this_3.createElement('div', {\n className: tab.cssClass,\n id: ribbonTab.id + constants.CONTENT_ID\n });\n content.classList.add(constants.RIBBON_TAB_ITEM);\n tab.content = content;\n tabItems.push(tab);\n };\n var this_3 = this;\n for (var i = 0; i < tabs.length; i++) {\n _loop_3(i);\n }\n return tabItems;\n };\n Ribbon.prototype.renderInitialTab = function (index) {\n var elements = this.createGroups(this.tabs[parseInt(index.toString(), 10)].groups, index);\n var content = this.tabObj.items[parseInt(index.toString(), 10)].content;\n append(elements, content);\n if (this.activeLayout === 'Simplified') {\n this.element.classList.add(constants.RIBBON_SIMPLIFIED_MODE);\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n if (this.ribbonGalleryModule) {\n this.ribbonGalleryModule.checkAvailableHeight(activeContent);\n }\n this.checkOverflow(this.selectedTab, activeContent);\n };\n Ribbon.prototype.addOverflowButton = function (btnId, isGroupOF) {\n var _this = this;\n var overflowButton = this.createElement('button', {\n id: btnId\n });\n var overflowTarget = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_TARGET,\n attrs: { 'tabindex': '0' }\n });\n var overFlowCss = this.cssClass ? constants.SPACE + this.cssClass : '';\n var overflowDDB = new DropDownButton({\n iconCss: constants.OVERFLOW_ICON,\n cssClass: constants.DROPDOWNBUTTON_HIDE + constants.SPACE + constants.RIBBON_GROUP_OVERFLOW_DDB + overFlowCss,\n target: overflowTarget,\n locale: this.locale,\n enableRtl: this.enableRtl,\n enablePersistence: this.enablePersistence,\n beforeOpen: function (args) {\n var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n _this.trigger('overflowPopupOpen', eventArgs, function (ribbonArgs) {\n if (ribbonArgs.cancel) {\n args.cancel = true;\n }\n });\n },\n beforeClose: function (args) {\n var ele = args.event ? closest(args.event.target, '.' + constants.RIBBON_POPUP_CONTROL) : null;\n var groupButtonEle = args.event ? closest(args.event.target, '.e-ribbon-group-button-overflow-popup') : null;\n var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n _this.trigger('overflowPopupClose', eventArgs, function (ribbonArgs) {\n if (ele || ribbonArgs.cancel || groupButtonEle) {\n args.cancel = true;\n }\n });\n }\n }, overflowButton);\n this.element.classList.add(constants.RIBBON_OVERFLOW);\n createTooltip(overflowTarget, this);\n if (!isGroupOF) {\n this.keyTipElements['overflowbtn'] = [];\n this.keyTipElements['overflowbtn'].push({ id: btnId, type: 'overflowbtn', keyTip: '00' });\n }\n var isGroupOf;\n overflowButton.onkeydown = overflowButton.onclick = function () { _this.itemIndex = -1; isGroupOf = overflowButton.classList.contains('e-ribbon-overall-of-btn') ? false : true; };\n overflowTarget.onkeydown = function (e) { return (_this.upDownKeyHandler(e, overflowTarget, isGroupOf), _this); };\n return overflowDDB;\n };\n Ribbon.prototype.upDownKeyHandler = function (e, target, isGroupOf) {\n var items;\n if (isGroupOf) {\n items = target.getElementsByClassName('e-ribbon-item');\n }\n else {\n var currentList = target.querySelector('.e-ribbon-of-tab.e-ribbon-active');\n items = currentList.getElementsByClassName('e-ribbon-item');\n }\n var control = items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-control');\n var comboBoxEle = control && control.classList.contains('e-combobox') ?\n items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-combobox') : null;\n var ribbonItem;\n var templateEle;\n if (comboBoxEle === null || (e.key === 'Tab') || this.itemIndex < 0) {\n if (e.key === 'ArrowDown' || (!e.shiftKey && e.key === 'Tab')) {\n if ((!this.itemIndex && this.itemIndex !== 0) || this.itemIndex < 0 || this.itemIndex === items.length - 1) {\n this.itemIndex = 0;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n if (comboBoxEle && e.key === 'Tab') {\n e.preventDefault();\n var item = items[this.itemIndex].querySelector('.e-control');\n if (item) {\n item.focus();\n }\n }\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n else if (this.itemIndex < items.length - 1 && this.itemIndex >= 0) {\n this.itemIndex++;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n if (templateEle) {\n templateEle.focus();\n }\n }\n else if (e.key === 'ArrowUp' || (e.shiftKey && e.key === 'Tab')) {\n if (comboBoxEle === null || (e.key === 'Tab')) {\n if (!this.itemIndex || this.itemIndex === -1) {\n this.itemIndex = items.length - 1;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n if (comboBoxEle && (e.shiftKey && e.key === 'Tab')) {\n e.preventDefault();\n var item = items[this.itemIndex].querySelector('.e-control');\n if (item) {\n item.focus();\n }\n }\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n else if (this.itemIndex <= items.length - 1 && this.itemIndex > 0) {\n this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n if (templateEle) {\n templateEle.focus();\n }\n }\n }\n target.setAttribute('index', this.itemIndex.toString());\n }\n var currentItemIndex = parseInt(target.getAttribute('index'), 10);\n var itemType = '';\n var controlItem = items[parseInt(currentItemIndex.toString(), 10)] ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control') : null;\n if (controlItem) {\n itemType = controlItem.getAttribute('data-control');\n }\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === ' ' || e.key === 'Tab') {\n if (itemType === 'ColorPicker') {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-split-colorpicker').focus();\n }\n else {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var elem = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n if (elem) {\n elem.focus();\n }\n }\n if (e.key === ' ' && (itemType === 'CheckBox')) {\n var checkBoxEle = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n var checkBox = getComponent(checkBoxEle, CheckBox);\n this.itemIndex = -1;\n checkBox.click();\n }\n }\n if (((itemType === 'SplitButton') && (e.key === 'ArrowRight' || e.key === 'ArrowLeft'))) {\n if (e.key === 'ArrowRight') {\n if (this.enableRtl) {\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n else {\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus();\n }\n }\n if (e.key === 'ArrowLeft') {\n if (this.enableRtl) {\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus();\n }\n else {\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n }\n }\n if (e.key === 'Enter') {\n this.itemIndex = -1;\n }\n };\n Ribbon.prototype.findDisabledItem = function (ribbonItem, items, isIncrease) {\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (isIncrease) {\n if (this.itemIndex === items.length - 1 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = -1;\n }\n }\n else {\n if (this.itemIndex === 0 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = items.length;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n isIncrease ? this.itemIndex++ : this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n };\n Ribbon.prototype.removeOverflowButton = function (overflowDDB) {\n if (overflowDDB) {\n var btnEle = overflowDDB.element;\n destroyTooltip(overflowDDB.target);\n overflowDDB.destroy();\n btnEle.remove();\n }\n };\n Ribbon.prototype.removeOverflowEvent = function (item, itemEle) {\n if (itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'Gallery':\n this.ribbonGalleryModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n }\n }\n };\n Ribbon.prototype.createGroupContainer = function (groupId, groupHeader) {\n var ofGroupContainer = this.createElement('div', {\n className: constants.RIBBON_OF_GROUP_CONTAINER,\n id: groupId + constants.CONTAINER_ID\n });\n var ofGroupHeader = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.HEADER_ID,\n innerHTML: groupHeader\n });\n ofGroupContainer.append(ofGroupHeader);\n return ofGroupContainer;\n };\n Ribbon.prototype.addExpandCollapse = function () {\n var _this = this;\n this.collapseButton = this.createElement('span', {\n className: constants.RIBBON_COLLAPSE_BUTTON + constants.SPACE + constants.EXPAND_COLLAPSE_ICON,\n id: this.tabObj.element.id + constants.COLLAPSE_BUTTON_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Layout Switcher', 'role': 'button' }\n });\n this.collapseButton.onclick = function (e) { _this.toggleLayout(e); };\n this.collapseButton.onkeydown = function (e) {\n if (e.key === 'Enter') {\n _this.toggleLayout(e);\n }\n };\n this.element.classList.add(constants.RIBBON_COLLAPSIBLE);\n if (this.activeLayout === 'Simplified') {\n this.collapseButton.classList.add(constants.RIBBON_EXPAND_BUTTON);\n }\n this.tabObj.element.appendChild(this.collapseButton);\n if (this.layoutSwitcherKeyTip) {\n this.keyTipElements['collapse'] = [];\n this.keyTipElements['collapse'].push({ id: this.collapseButton.id, type: 'collapse', keyTip: this.layoutSwitcherKeyTip });\n }\n };\n Ribbon.prototype.removeExpandCollapse = function () {\n var _this = this;\n var index = getIndex(this.tooltipData, function (e) { return e.id === _this.collapseButton.id; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n this.element.classList.remove(constants.RIBBON_COLLAPSIBLE);\n remove(this.tabObj.element.querySelector('.' + constants.RIBBON_COLLAPSE_BUTTON));\n this.collapseButton = null;\n };\n Ribbon.prototype.reRenderTabs = function (tabs) {\n this.destroyScroll();\n this.checkID(this.tabs, 'tab', this.element.id);\n for (var _i = 0, _a = Object.keys(tabs); _i < _a.length; _i++) {\n var key = _a[_i];\n var index = parseInt(key, 10);\n var tab = tabs[parseInt(index.toString(), 10)];\n var isNewTab = false;\n for (var j = 0; j < (this.tabObj.items.length); j++) {\n if (this.tabs[parseInt(index.toString(), 10)].id === this.tabObj.items[parseInt(j.toString(), 10)].id) {\n isNewTab = true;\n break;\n }\n }\n if (!isNewTab) {\n this.destroyTabItems(this.tabsInternal);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n if (this.selectedTab >= this.tabs.length) {\n this.selectedTab = this.tabs.length - 1;\n }\n this.tabObj.setProperties({ items: tabItems, selectedItem: this.selectedTab });\n break;\n }\n else {\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n if (groups) {\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n this.tabObj.items[parseInt(index.toString(), 10)].header.text.innerText = ribbonTab.header;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabObj.items[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabObj.items[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabObj.items[parseInt(index.toString(), 10)].cssClass);\n }\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _b = 0, groups_1 = groups; _b < groups_1.length; _b++) {\n var group = groups_1[_b];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _c = 0, _d = group.collections; _c < _d.length; _c++) {\n var collection = _d[_c];\n for (var _e = 0, _f = collection.items; _e < _f.length; _e++) {\n var item = _f[_e];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n }\n }\n }\n if (this.tabsInternal !== this.tabs) {\n this.tabsInternal = this.tabs;\n var tabItems = this.createTabItems(this.tabs);\n if (this.selectedTab >= this.tabs.length) {\n this.selectedTab = this.tabs.length - 1;\n }\n this.tabObj.setProperties({ items: tabItems, selectedItem: this.selectedTab });\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n };\n Ribbon.prototype.switchLayout = function () {\n this.currentControlIndex = 0;\n this.destroyScroll();\n this.collapseButton.classList.toggle(constants.RIBBON_EXPAND_BUTTON, this.activeLayout === 'Simplified');\n this.element.classList.toggle(constants.RIBBON_SIMPLIFIED_MODE, this.activeLayout === 'Simplified');\n for (var i = 0; i <= (this.tabs.length - 1); i++) {\n var tabIndex = i;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n for (var i_4 = 0; i_4 < groupList.length; i_4++) {\n var group = groupList[parseInt(i_4.toString(), 10)];\n var alignType = groupList[parseInt(i_4.toString(), 10)].orientation;\n if (group.isCollapsed) {\n group.setProperties({ isCollapsed: false }, true);\n this.removeDropdown(group.id);\n }\n else {\n this.checkSmallToMedium(tabIndex, tab, i_4, tabContent, activeContent, true, false);\n this.checkMediumToLarge(tabIndex, tab, i_4, tabContent, activeContent, true, false);\n }\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var shrinkColumns = groupContainer.querySelectorAll('.' + 'e-ribbon-shrink');\n for (var i_5 = 0; i_5 < shrinkColumns.length; i_5++) {\n shrinkColumns[parseInt(i_5.toString(), 10)].remove();\n }\n var groupHeader = groupContainer.querySelector('#' + group.id + constants.HEADER_ID);\n groupHeader.remove();\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n groupContent.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n groupContent.classList.remove(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n groupCollection.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && (item.displayOptions === DisplayMode.Classic)) {\n k++;\n var itemEle_1 = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele = itemEle_1.querySelector('#' + item.id);\n this.destroyFunction(item, ele);\n itemEle_1.remove();\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var size = ((item.allowedSizes === RibbonItemSize.Large) ||\n (item.allowedSizes & RibbonItemSize.Medium)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n size = (!(item.displayOptions & DisplayMode.Simplified) && (item.displayOptions & DisplayMode.Overflow))\n ? RibbonItemSize.Medium : size;\n var itemEle = void 0;\n if (!(item.displayOptions & DisplayMode.Classic)) {\n itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer)[0];\n if (item.displayOptions & DisplayMode.Simplified) {\n groupCollection.append(itemEle);\n }\n }\n else {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)) {\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, true);\n }\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n item.setProperties({ activeSize: size }, true);\n if (itemEle) {\n var ele = itemEle.querySelector('#' + item.id);\n this.setItemSize(ele, item);\n }\n }\n if (item.type === RibbonItemType.Gallery) {\n this.ribbonGalleryModule.switchGalleryItems(this.activeLayout, item.id);\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n }\n else {\n this.element.classList.remove(constants.RIBBON_OVERFLOW);\n for (var i_6 = 0; i_6 < groupList.length; i_6++) {\n var group = groupList[parseInt(i_6.toString(), 10)];\n var alignType = groupList[parseInt(i_6.toString(), 10)].orientation;\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n if (alignType === 'Row') {\n groupContent.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n groupContent.classList.add(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (!group.enableGroupOverflow) {\n overflowDDB = this.overflowDDB;\n if (overflowDDB) {\n overflowtarget = this.overflowDDB.target;\n }\n }\n else {\n var overflowDDBEle = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n if (alignType === 'Column') {\n groupCollection.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && !(item.displayOptions & DisplayMode.Classic)) {\n k++;\n var itemEle = void 0;\n if ((item.displayOptions & DisplayMode.Simplified) || (item.displayOptions & DisplayMode.Overflow)) {\n if (item.displayOptions & DisplayMode.Simplified) {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n else {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (itemEle !== null) {\n var ele_8 = itemEle.querySelector('#' + item.id);\n this.destroyFunction(item, ele_8);\n itemEle.remove();\n }\n }\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n if (!(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) {\n var itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex)[0];\n groupCollection.append(itemEle);\n }\n else {\n var itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (!itemEle && overflowtarget) {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, false);\n }\n this.removeOverflowEvent(item, itemEle);\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n if (itemEle) {\n groupCollection.append(itemEle);\n }\n }\n var ele = groupContainer.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = groupContainer.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n var itemsize = (item.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (item.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: itemsize }, true);\n this.setItemSize(ele, item);\n if (item.type === RibbonItemType.Gallery) {\n this.ribbonGalleryModule.switchGalleryItems(this.activeLayout, item.id);\n }\n }\n if (group.enableGroupOverflow && overflowDDB) {\n if (overflowtarget.childElementCount === 0 ||\n (overflowtarget.childElementCount === 1 && this.isHeaderVisible(overflowtarget, group.id))) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n }\n }\n }\n if (this.selectedTab === tabIndex) {\n this.checkOverflow(tabIndex, activeContent);\n }\n }\n }\n if (this.activeLayout === 'Classic') {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.createLauncherIcon = function (groupId, groupContainer, tabIndex) {\n var _this = this;\n var launcherIcon = this.createElement('div', {\n className: constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss ? this.launcherIconCss : constants.RIBBON_LAUNCHER_ICON),\n id: groupId + constants.LAUNCHER_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Launcher Icon', 'role': 'button' }\n });\n groupContainer.appendChild(launcherIcon);\n groupContainer.classList.add(constants.RIBBON_LAUNCHER);\n EventHandler.add(launcherIcon, 'click', this.launcherIconClicked.bind(this, groupId), this);\n EventHandler.add(launcherIcon, 'keydown', function (e) {\n if (e.key === 'Enter') {\n _this.launcherIconClicked(groupId);\n }\n }, this);\n var itemProp = getGroup(this.tabs, groupId);\n if (itemProp.group.launcherIconKeyTip) {\n this.addKeyTip(tabIndex, itemProp.group.launcherIconKeyTip, launcherIcon.id, 'launcher');\n }\n };\n Ribbon.prototype.launcherIconClicked = function (id) {\n var eventArgs = { groupId: id };\n this.trigger('launcherIconClick', eventArgs);\n };\n Ribbon.prototype.createGroups = function (groupList, tabIndex) {\n var groupElements = [];\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n var alignType = group.orientation;\n var groupEle = this.createElement('div', {\n className: group.cssClass,\n id: group.id\n });\n groupEle.classList.add(constants.RIBBON_GROUP);\n groupElements.push(groupEle);\n var groupContainer = this.createElement('div', {\n className: group.cssClass,\n id: group.id + constants.CONTAINER_ID\n });\n groupContainer.classList.add(constants.RIBBON_GROUP_CONTAINER);\n groupEle.appendChild(groupContainer);\n var groupContent = this.createElement('div', {\n className: this.activeLayout === 'Simplified' ? constants.RIBBON_GROUP_CONTENT : (constants.RIBBON_GROUP_CONTENT + constants.SPACE + constants.RIBBON_CONTENT_HEIGHT),\n id: group.id + constants.CONTENT_ID\n });\n groupContent.classList.add(((alignType === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n groupContainer.appendChild(groupContent);\n if (this.activeLayout === 'Classic') {\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n }\n if (group.showLauncherIcon) {\n this.createLauncherIcon(group.id, groupContainer, tabIndex);\n }\n var elements = this.createCollection(group.collections, group.orientation, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer);\n append(elements, groupContent);\n var isItemsHidden = true;\n for (var j = 0; j < elements.length; j++) {\n if (isItemsHidden) {\n for (var k = 0; k < elements[parseInt(j.toString(), 10)].children.length; k++) {\n if (!(elements[parseInt(j.toString(), 10)].children[parseInt(k.toString(), 10)].classList.contains('e-hidden'))) {\n isItemsHidden = false;\n break;\n }\n }\n }\n }\n if (isItemsHidden) {\n groupEle.classList.add('e-hide-group');\n }\n if ((this.activeLayout === 'Simplified') && !(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (initialProps) {\n if (initialProps.hiddenGroups && initialProps.hiddenGroups.length) {\n this.updateGroupProps('hiddenGroups', initialProps, groupEle);\n }\n if (initialProps.disabledGroups && initialProps.disabledGroups.length) {\n this.updateGroupProps('disabledGroups', initialProps, groupEle);\n }\n }\n }\n if (this.initialPropsData[parseInt(tabIndex.toString(), 10)]) {\n delete this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n return groupElements;\n };\n Ribbon.prototype.updateGroupProps = function (key, initialProps, groupEle) {\n // eslint-disable-next-line\n var groupIndex = initialProps[key].indexOf(groupEle.id);\n if (groupIndex !== -1) {\n if (key === 'hiddenGroups') {\n groupEle.classList.add('e-hidden');\n }\n else {\n groupEle.classList.add('e-disabled');\n }\n }\n };\n Ribbon.prototype.validateItemSize = function () {\n for (var k = 0; k < this.tabs.length; k++) {\n var groupList = this.tabs[parseInt(k.toString(), 10)].groups;\n for (var l = 0; l < groupList.length; l++) {\n var collectionList = groupList[parseInt(l.toString(), 10)].collections;\n var alignType = groupList[parseInt(l.toString(), 10)].orientation;\n for (var i = 0; i < collectionList.length; i++) {\n var items = collectionList[parseInt(i.toString(), 10)].items;\n for (var j = 0; j < items.length; j++) {\n var ribbonitem = items[parseInt(j.toString(), 10)];\n if (!ribbonitem.allowedSizes || (ribbonitem.allowedSizes === 0)) {\n ribbonitem.setProperties({\n allowedSizes: (RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n }, true);\n }\n if ((ribbonitem.type === 'ColorPicker') && (ribbonitem.allowedSizes !== RibbonItemSize.Small)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Small }, true);\n }\n else if ((ribbonitem.type === 'ComboBox' || ribbonitem.type === 'CheckBox') &&\n (ribbonitem.allowedSizes !== RibbonItemSize.Medium)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Medium }, true);\n }\n else if (((alignType === 'Column') && (items.length > 1)) || ((alignType === 'Row') && (collectionList.length > 1))) {\n if (ribbonitem.allowedSizes & RibbonItemSize.Large) {\n // To remove large size, perform 'and' with 011(3).\n var sizeVal = ribbonitem.allowedSizes & (RibbonItemSize.Small | RibbonItemSize.Medium);\n sizeVal = sizeVal ? sizeVal : RibbonItemSize.Medium;\n ribbonitem.setProperties({ allowedSizes: sizeVal }, true);\n }\n }\n var itemsize = (ribbonitem.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (ribbonitem.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonitem.setProperties({ activeSize: itemsize }, true);\n }\n }\n }\n }\n };\n Ribbon.prototype.createCollection = function (collectionList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var collectionElements = [];\n for (var i = 0; i < collectionList.length; i++) {\n var collection = collectionList[parseInt(i.toString(), 10)];\n var collectionEle = this.createElement('div', {\n className: collection.cssClass,\n id: collection.id\n });\n collectionEle.classList.add(constants.RIBBON_COLLECTION);\n collectionEle.classList.add(((alignType !== 'Column') || (this.activeLayout === 'Simplified')) ?\n constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n collectionElements.push(collectionEle);\n var elements = this.createItems(collection.items, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer);\n append(elements, collectionEle);\n if ((alignType === 'Row') && (i === 2)) {\n break;\n }\n }\n return collectionElements;\n };\n Ribbon.prototype.createRibbonItem = function (item, itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.createButton(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.createDropDown(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.createSplitButton(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.createCheckBox(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.createColorPicker(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.createComboBox(item, itemEle);\n break;\n case 'Template':\n this.createTemplateContent(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.createGroupButton(item, itemEle);\n break;\n case 'Gallery':\n this.ribbonGalleryModule.createGallery(item, itemEle);\n break;\n }\n };\n Ribbon.prototype.createItems = function (itemList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var _a;\n var itemElements = [];\n for (var i = 0; i < itemList.length; i++) {\n var item = itemList[parseInt(i.toString(), 10)];\n //To stop rendering of items with simplified mode position type as none\n var flag = true;\n while (flag &&\n (((this.activeLayout === 'Simplified') && !(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) ||\n ((this.activeLayout === 'Classic') && !(item.displayOptions & DisplayMode.Classic)))) {\n i++;\n if (i < itemList.length) {\n item = itemList[parseInt(i.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var itemEle = this.createElement('div', {\n className: item.cssClass,\n id: item.id + constants.CONTAINER_ID\n });\n (_a = itemEle.classList).add.apply(_a, [constants.RIBBON_ITEM].concat((item.disabled ? [constants.DISABLED_CSS] : [])));\n // To avoid undefined items condition is added\n if (item.ribbonTooltipSettings && isTooltipPresent(item.ribbonTooltipSettings)) {\n itemEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemEle.id, data: item.ribbonTooltipSettings });\n }\n if (item.type === RibbonItemType.GroupButton) {\n for (var i_7 = 0; i_7 < item.groupButtonSettings.items.length; i_7++) {\n if (this.keyTipElements[parseInt(tabIndex.toString(), 10)] &&\n item.groupButtonSettings.items[parseInt(i_7.toString(), 10)].keyTip) {\n this.addKeyTip(tabIndex, item.groupButtonSettings.items[parseInt(i_7.toString(), 10)].keyTip, item.id + (constants.RIBBON_GROUP_BUTTON_ID + i_7), 'item');\n }\n }\n }\n if (item.keyTip) {\n if (item.type === RibbonItemType.Gallery) {\n this.addKeyTip(tabIndex, item.keyTip, (item.id + '_popupButton'), 'item');\n }\n else {\n this.addKeyTip(tabIndex, item.keyTip, item.id, 'item');\n }\n }\n var size = item.activeSize;\n if (!(item.type === RibbonItemType.Gallery)) {\n if (this.activeLayout === 'Simplified') {\n size = ((item.allowedSizes === RibbonItemSize.Large) || (item.allowedSizes & RibbonItemSize.Medium) ||\n (item.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemEle.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemEle.classList.add((size & RibbonItemSize.Medium) ? constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n }\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (initialProps && initialProps.hiddenItems && initialProps.hiddenItems.length) {\n var itemIndex = initialProps.hiddenItems.indexOf(item.id);\n if (itemIndex !== -1) {\n itemEle.classList.add('e-hidden');\n }\n }\n this.createRibbonItem(item, itemEle);\n if ((this.activeLayout === 'Simplified') && ((item.displayOptions === DisplayMode.Overflow) || (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)))) {\n this.createOverflowPopup(item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, isGroupOF, true);\n }\n }\n else {\n // For normal mode and Simplified mode position type as Group and Auto\n itemElements.push(itemEle);\n }\n if ((alignType === 'Column') && (i === 2)) {\n break;\n }\n }\n return itemElements;\n };\n Ribbon.prototype.createHelpPaneTemplate = function () {\n if (this.helpPaneTemplate) {\n var templateName = 'helpPaneTemplate';\n this.clearTemplate([templateName]);\n this.ribbonTempEle = this.createElement('div', {\n className: constants.RIBBON_HELP_TEMPLATE,\n id: this.element.id + constants.RIBBON_HELP_PANE_TEMPLATE_ID\n });\n var templateFunction = getTemplateFunction(this.helpPaneTemplate);\n append(templateFunction({}, this, templateName, 'helpPaneTemplate', this.isStringTemplate), this.ribbonTempEle);\n var tabEle = this.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n toolbarEle.after(this.ribbonTempEle);\n tabEle.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, this.ribbonTempEle.offsetWidth + 'px');\n this.renderReactTemplates();\n }\n };\n Ribbon.prototype.createTemplateContent = function (item, itemElement) {\n var itemEle = this.createElement('div', {\n className: item.cssClass ? (constants.RIBBON_TEMPLATE + constants.SPACE + item.cssClass) : constants.RIBBON_TEMPLATE,\n id: item.id,\n attrs: { 'tabindex': '-1' }\n });\n if (item.disabled) {\n itemEle.classList.add(constants.DISABLED_CSS);\n itemEle.setAttribute('disabled', '');\n }\n itemElement.appendChild(itemEle);\n this.renderItemTemplate(item, itemEle);\n };\n Ribbon.prototype.renderItemTemplate = function (item, itemElement) {\n var templateName = 'ribbon' + item.id + 'itemTemplate';\n this.clearTemplate([templateName]);\n var templateFunction = getTemplateFunction(item.itemTemplate);\n append(templateFunction({ activeSize: RibbonItemSize[item.activeSize] }, this, templateName, (item.id + 'itemTemplate'), this.isStringTemplate), itemElement);\n this.renderReactTemplates();\n };\n Ribbon.prototype.checkID = function (list, type, initId) {\n var key = type === 'tab' ? constants.TAB_ID : type === 'group' ? constants.GROUP_ID :\n type === 'collection' ? constants.COLLECTION_ID : constants.ITEM_ID;\n for (var i = 0; i < list.length; i++) {\n var listitem = list[parseInt(i.toString(), 10)];\n if (!listitem.id) {\n var htmlAttrID = void 0;\n if (type === 'item') {\n htmlAttrID = this.hasHtmlAtrrID(listitem);\n }\n listitem.setProperties({ id: htmlAttrID ? htmlAttrID : initId + key + (this.idIndex++) }, true);\n }\n switch (type) {\n case 'tab':\n listitem.setProperties({ groups: this.checkID(listitem.groups, 'group', listitem.id) }, true);\n break;\n case 'group':\n listitem.setProperties({ collections: this.checkID(listitem.collections, 'collection', listitem.id) }, true);\n break;\n case 'collection':\n listitem.setProperties({ items: this.checkID(listitem.items, 'item', listitem.id) }, true);\n break;\n default:\n break;\n }\n }\n return list;\n };\n Ribbon.prototype.hasHtmlAtrrID = function (listItem) {\n var id = '';\n if (listItem.buttonSettings.htmlAttributes.id) {\n id = listItem.buttonSettings.htmlAttributes.id;\n }\n else if (listItem.checkBoxSettings.htmlAttributes.id) {\n id = listItem.checkBoxSettings.htmlAttributes.id;\n }\n else if (listItem.colorPickerSettings.htmlAttributes.id) {\n id = listItem.colorPickerSettings.htmlAttributes.id;\n }\n else if (listItem.comboBoxSettings.htmlAttributes.id) {\n id = listItem.comboBoxSettings.htmlAttributes.id;\n }\n else if (listItem.dropDownSettings.htmlAttributes.id) {\n id = listItem.dropDownSettings.htmlAttributes.id;\n }\n else if (listItem.splitButtonSettings.htmlAttributes.id) {\n id = listItem.splitButtonSettings.htmlAttributes.id;\n }\n return id;\n };\n Ribbon.prototype.updateCommonProperty = function (commonProp) {\n this.tabObj.setProperties(commonProp);\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.setCommonProperties(commonProp);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.setCommonProperties(commonProp);\n }\n for (var i = 0; i < this.tabs.length; i++) {\n var tab = this.tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n if (contentEle.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n if (dropdown) {\n updateTooltipProp(dropdown.target, commonProp);\n dropdown.setProperties(commonProp);\n }\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : item.type === RibbonItemType.GroupButton ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id);\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n if (item.type === 'DropDown') {\n this.updatePopupItems(item, dropdown.target, group.enableGroupOverflow, true);\n }\n }\n }\n if (ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName !== 'template') {\n if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i_8 = 0; i_8 < item.groupButtonSettings.items.length; i_8++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_8);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateCommonProperty(ele, 'dropdown-btn', commonProp);\n for (var i_9 = 0; i_9 < item.groupButtonSettings.items.length; i_9++) {\n var btnEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_9);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else {\n updateCommonProperty(ele, moduleName, commonProp);\n }\n }\n else if (!isNullOrUndefined(commonProp.enableRtl)) {\n ele.classList.toggle(constants.RTL_CSS, commonProp.enableRtl);\n }\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.removeLauncherIcon = function (groupId, dropdownElement, contentEle) {\n var containerId = groupId + constants.CONTAINER_ID;\n var containerEle = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, containerId) : contentEle.querySelector('#' + containerId);\n if (containerEle) {\n containerEle.classList.remove(constants.RIBBON_LAUNCHER);\n var launcherIcon = containerEle.querySelector('#' + groupId + constants.LAUNCHER_ID);\n remove(launcherIcon);\n }\n };\n Ribbon.prototype.destroyTabItems = function (tabs) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n if (group.showLauncherIcon) {\n this.removeLauncherIcon(group.id, dropdownElement, contentEle);\n }\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) :\n contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id +\n constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (item.type === RibbonItemType.Gallery) {\n ele = contentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + item.id) : null;\n if (item.type === RibbonItemType.Gallery) {\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id + constants.CONTAINER_ID) : null;\n }\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown ? dropdown.target.querySelector('#' + item.id) : null;\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if ((this.activeLayout === RibbonLayout.Classic) && dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n else if ((this.activeLayout === RibbonLayout.Simplified) && group.enableGroupOverflow && dropdownElement) {\n this.removeOverflowButton(dropdown);\n }\n }\n }\n if (this.overflowDDB) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.destroyFunction = function (item, ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName === 'colorpicker') {\n this.ribbonColorPickerModule.unwireColorPickerEvents(ele);\n }\n else if (moduleName === 'group-btn') {\n if (this.activeLayout === 'Classic') {\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (btnEle) {\n destroyControl(btnEle, 'btn');\n }\n }\n }\n else {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n var _loop_4 = function (i) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings) {\n var groupButtonID_1 = item.id + constants.RIBBON_GROUP_BUTTON_ID + i;\n var index = getIndex(this_4.tooltipData, function (e) { return e.id === groupButtonID_1; });\n if (index !== -1) {\n this_4.tooltipData.splice(index, 1);\n }\n }\n };\n var this_4 = this;\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n _loop_4(i);\n }\n }\n else if (moduleName === 'gallery') {\n if (ele.closest('.e-ribbon-overflow-target')) {\n destroyControl(ele, 'dropdown-btn');\n var galleryPopupEle = Array.prototype.slice.call(document.querySelectorAll('#' + item.id + '_galleryPopup'));\n galleryPopupEle.concat(Array.prototype.slice.call(document.querySelectorAll('#' + item.id + '-popup')));\n for (var i = 0; i < galleryPopupEle.length; i++) {\n galleryPopupEle[parseInt(i.toString(), 10)].remove();\n }\n var galleryPopupBtn = document.querySelector('#' + item.id + '_popupButton');\n if (galleryPopupBtn) {\n galleryPopupBtn.remove();\n }\n var galleryWrapper = document.querySelector('#' + item.id + '_galleryWrapper');\n if (galleryWrapper) {\n galleryWrapper.remove();\n }\n }\n else {\n var galleryEle = ele.querySelectorAll('.e-ribbon-gallery-item');\n var galleryPopupBtn = ele.parentElement.querySelector('#' + item.id + '_popupButton');\n if (galleryPopupBtn) {\n galleryPopupBtn.remove();\n }\n for (var i = 0; i < galleryEle.length; i++) {\n galleryEle[parseInt(i.toString(), 10)].remove();\n }\n var galleryPopupEle = document.querySelectorAll('#' + item.id + '_galleryPopup');\n for (var i = 0; i < galleryPopupEle.length; i++) {\n galleryPopupEle[parseInt(i.toString(), 10)].remove();\n }\n }\n }\n else if (moduleName !== 'template') {\n destroyControl(ele, moduleName);\n }\n if (item.ribbonTooltipSettings) {\n var index = getIndex(this.tooltipData, function (e) { return e.id === item.id + constants.CONTAINER_ID; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n }\n if (item.type === 'GroupButton') {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n };\n /**\n * Gets the item module name.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n Ribbon.prototype.getItemModuleName = function (item) {\n switch (item.type) {\n case 'Button':\n return 'btn';\n case 'DropDown':\n return 'dropdown-btn';\n case 'SplitButton':\n return 'split-btn';\n case 'CheckBox':\n return 'checkbox';\n case 'ColorPicker':\n return 'colorpicker';\n case 'ComboBox':\n return 'combobox';\n case 'GroupButton':\n return 'group-btn';\n case 'Gallery':\n return 'gallery';\n default:\n return 'template';\n }\n };\n Ribbon.prototype.clearOverflowResize = function () {\n this.destroyScroll();\n this.clearOverflowDropDown(this.selectedTab);\n var tab = this.tabs[this.selectedTab];\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n for (var j = 0; (j < tab.groups.length); j++) {\n this.checkSmallToMedium(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n this.checkMediumToLarge(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n }\n };\n /**\n * Refreshes the layout.\n *\n * @returns {void}\n */\n Ribbon.prototype.refreshLayout = function () {\n this.resizeHandler();\n };\n /**\n * Selects the tab\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.selectTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n this.setProperties({ selectedTab: index });\n };\n /**\n * Shows a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be shown.\n * @param {boolean} isContextual - The boolean if the rendering is contextual.\n * @returns {void}\n */\n Ribbon.prototype.showTab = function (tabId, isContextual) {\n if (isContextual === void 0) { isContextual = false; }\n this.showHideTab(tabId, false, isContextual);\n };\n /**\n * Hides a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be hidden.\n * @param {boolean} isContextual - The boolean if the rendering is contextual.\n * @returns {void}\n */\n Ribbon.prototype.hideTab = function (tabId, isContextual) {\n if (isContextual === void 0) { isContextual = false; }\n this.showHideTab(tabId, true, isContextual);\n };\n Ribbon.prototype.showHideTab = function (tabId, value, isContextual) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n this.tabObj.hideTab(index, value);\n if (isContextual) {\n var contextualTab_1;\n var tabEle = this.tabObj.element;\n for (var i = 0; i < this.contextualTabs.length; i++) {\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (tabId === this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id) {\n contextualTab_1 = this.contextualTabs[parseInt(i.toString(), 10)];\n }\n }\n }\n if (contextualTab_1) {\n var isTabHidden = true;\n var _loop_5 = function (i) {\n var index_1 = getIndex(this_5.tabs, function (e) {\n return e.id === contextualTab_1.tabs[parseInt(i.toString(), 10)].id;\n });\n if (index_1 !== -1) {\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(index_1.toString(), 10)];\n if (!(toolbarEle.classList.contains('e-hidden'))) {\n isTabHidden = false;\n }\n }\n };\n var this_5 = this;\n for (var i = 0; i < contextualTab_1.tabs.length; i++) {\n _loop_5(i);\n }\n if (isTabHidden) {\n contextualTab_1.setProperties({ visible: false }, true);\n }\n else {\n contextualTab_1.setProperties({ visible: true }, true);\n }\n }\n }\n };\n /**\n * Enables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableTab = function (tabId) {\n this.enableDisableTab(tabId, true);\n };\n /**\n * Disables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableTab = function (tabId) {\n this.enableDisableTab(tabId, false);\n };\n Ribbon.prototype.enableDisableTab = function (tabId, value) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var tbItems = this.tabObj.items[parseInt(index.toString(), 10)].content;\n this.tabObj.element.querySelector('#' + tabId + constants.HEADER_ID).classList[value ? 'remove' : 'add']('e-disabled');\n tbItems.classList[value ? 'remove' : 'add']('e-disabled');\n this.tabObj.enableTab(index, value);\n };\n /**\n * Adds the ribbon tab.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model\n * @param {string} targetId - Gets the ID of the target tab to add the new tab.\n * @param {boolean} isAfter - Defines whether the tab is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addTab = function (tab, targetId, isAfter) {\n var index = targetId ? getIndex(this.tabs, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? this.tabs.length : (index + (isAfter ? 1 : 0));\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 0, tab);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.checkID([this.tabs[parseInt(index.toString(), 10)]], 'tab', this.element.id);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItem = this.createTabItems([tab]);\n this.tabObj.addTab(tabItem, index);\n };\n /**\n * Removes the ribbon tab.\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.removeTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n if (groups && (contentEle.innerHTML !== '')) {\n for (var _i = 0, groups_2 = groups; _i < groups_2.length; _i++) {\n var group = groups_2[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id +\n constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 1);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.tabObj.removeTab(index);\n };\n /**\n * Adds the ribbon group.\n *\n * @param {string} tabId - Gets the tab ID.\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @param {string} targetId - Gets the ID of the target group to add the new group.\n * @param {boolean} isAfter - Defines whether the group is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addGroup = function (tabId, group, targetId, isAfter) {\n var tabIndex = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (tabIndex === -1) {\n return;\n }\n if (this.selectedTab === tabIndex) {\n this.clearOverflowResize();\n }\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var ribbonGroups = tab.groups.slice();\n var index = targetId ? getIndex(ribbonGroups, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonGroups.length : (index + (isAfter ? 1 : 0));\n ribbonGroups.splice(index, 0, group);\n tab.setProperties({ groups: ribbonGroups }, true);\n this.checkID([tab.groups[parseInt(index.toString(), 10)]], 'group', tabId);\n this.validateItemSize();\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var element = this.createGroups([tab.groups[parseInt(index.toString(), 10)]], tabIndex)[0];\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.append(element);\n }\n }\n if (this.selectedTab === tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon group.\n *\n * @param {string} groupId -Gets the group ID.\n * @returns {void}\n */\n Ribbon.prototype.removeGroup = function (groupId) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount\n === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n var groupEle = contentEle.querySelector('#' + groupId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroups = this.tabs[itemProp.tabIndex].groups.slice();\n ribbonGroups.splice(itemProp.groupIndex, 1);\n this.tabs[itemProp.tabIndex].setProperties({ groups: ribbonGroups }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n Ribbon.prototype.isHeaderVisible = function (headerEle, groupID) {\n return headerEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID) ? true : false;\n };\n /**\n * Hides a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideGroup = function (groupID) {\n this.showHideGroup(groupID, true);\n };\n /**\n * Shows a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showGroup = function (groupID) {\n this.showHideGroup(groupID, false);\n };\n Ribbon.prototype.showHideGroup = function (groupID, isHidden) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n if (groupEle) {\n this.updateHiddenElements(itemProp.tabIndex, isHidden ? 'hideGroup' : 'showGroup', groupID, isHidden, groupEle);\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, groupID, 'hiddenGroups', isHidden);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n if (isHidden) {\n overflowtarget.classList.add('e-hidden');\n }\n else {\n overflowtarget.classList.remove('e-hidden');\n }\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n if (isHidden) {\n grpContainer.classList.add('e-hidden');\n }\n else {\n grpContainer.classList.remove('e-hidden');\n }\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n Ribbon.prototype.updateHiddenElements = function (tabIndex, key, id, isHidden, element, group) {\n if (isHidden) {\n if (!(element.classList.contains('e-hidden'))) {\n this.checkHiddenElements(key, id, tabIndex);\n element.classList.add('e-hidden');\n if (key === 'hideItem') {\n this.checkHiddenItems(group, isHidden, tabIndex);\n }\n this.calculateHiddenElementsWidth(tabIndex);\n }\n }\n else {\n if (element.classList.contains('e-hidden')) {\n this.checkHiddenElements(key, id, tabIndex);\n element.classList.remove('e-hidden');\n this.calculateHiddenElementsWidth(tabIndex);\n if (key === 'showItem') {\n this.checkHiddenItems(group, isHidden, tabIndex);\n }\n }\n }\n };\n Ribbon.prototype.checkHiddenElements = function (key, id, tabIndex) {\n if (this.activeLayout === 'Simplified') {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (!hiddenProps) {\n this.hiddenElements[parseInt(tabIndex.toString(), 10)] = {};\n hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n }\n if (hiddenProps) {\n if (!hiddenProps[\"\" + key]) {\n hiddenProps[\"\" + key] = [];\n }\n if (hiddenProps[\"\" + key].length) {\n var index = hiddenProps[\"\" + key].indexOf(id);\n if (index === -1) {\n hiddenProps[\"\" + key].push(id);\n }\n }\n else {\n hiddenProps[\"\" + key].push(id);\n }\n }\n }\n };\n Ribbon.prototype.updateItemsSimplifiedWidth = function (tabIndex, key) {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (hiddenProps && hiddenProps[\"\" + key] && hiddenProps[\"\" + key].length) {\n var _loop_6 = function (i) {\n var contentEle = this_6.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var hiddenEle;\n var groupEle = void 0;\n var isGroupHidden = false;\n var widthDifference = 0;\n if (key === 'hideGroup' || key === 'showGroup') {\n hiddenEle = contentEle.querySelector('#' + hiddenProps[\"\" + key][parseInt(i.toString(), 10)]);\n }\n else {\n hiddenEle = contentEle.querySelector('#' + hiddenProps[\"\" + key][parseInt(i.toString(), 10)] + constants.CONTAINER_ID);\n }\n if (hiddenEle) {\n if (key === 'hideGroup' || key === 'hideItem') {\n var isHidden = false;\n if (hiddenEle.classList.contains('e-hidden')) {\n isHidden = true;\n hiddenEle.classList.remove('e-hidden');\n }\n if (key === 'hideItem') {\n groupEle = hiddenEle.closest('.e-ribbon-group');\n if (groupEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n widthDifference = this_6.checkWidthDifference(hiddenEle, groupEle);\n }\n }\n this_6.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, true, tabIndex);\n this_6.calculateMediumDataWidth(hiddenEle.offsetWidth + widthDifference, tabIndex, true);\n if (isHidden) {\n hiddenEle.classList.add('e-hidden');\n }\n }\n else {\n if (key === 'showItem') {\n groupEle = hiddenEle.closest('.e-ribbon-group');\n if (groupEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n if (this_6.hiddenGroups.indexOf(groupEle.id) !== -1) {\n this_6.hiddenGroups.splice(this_6.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n else {\n if (this_6.hiddenGroups.indexOf(groupEle.id) !== -1) {\n var hiddenItems = groupEle.querySelectorAll('.e-ribbon-item:not(.e-hidden)');\n hiddenItems.forEach(function (item) {\n if (item.id !== hiddenEle.id) {\n item.classList.add('e-hidden');\n }\n });\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n hiddenItems.forEach(function (item) {\n if (item.id !== hiddenEle.id) {\n item.classList.remove('e-hidden');\n }\n });\n this_6.hiddenGroups.splice(this_6.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n }\n this_6.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, false, tabIndex);\n this_6.calculateMediumDataWidth(hiddenEle.offsetWidth + widthDifference, tabIndex, false);\n }\n if (isGroupHidden) {\n groupEle.classList.add('e-hide-group');\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n var index = hiddenProps[\"\" + key].indexOf(hiddenProps[\"\" + key][parseInt(i.toString(), 10)]);\n if (index !== -1) {\n hiddenProps[\"\" + key].splice(index, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_6 = this, out_i_1;\n for (var i = 0; i < hiddenProps[\"\" + key].length; i++) {\n _loop_6(i);\n i = out_i_1;\n }\n }\n };\n Ribbon.prototype.checkWidthDifference = function (hiddenEle, groupEle) {\n var widthDifference = 0;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n if (this.hiddenGroups.length) {\n if (this.hiddenGroups.indexOf(groupEle.id) === -1) {\n this.hiddenGroups.push(groupEle.id);\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n }\n }\n else {\n this.hiddenGroups.push(groupEle.id);\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n }\n return widthDifference;\n };\n Ribbon.prototype.calculateHiddenElementsWidth = function (tabIndex) {\n if (tabIndex === this.selectedTab && this.activeLayout === 'Simplified') {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (hiddenProps) {\n for (var i = 0; i < Object.keys(hiddenProps).length; i++) {\n this.updateItemsSimplifiedWidth(tabIndex, Object.keys(hiddenProps)[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n Ribbon.prototype.calculateMediumDataWidth = function (hiddenWidth, tabIndex, isHidden) {\n if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var mediumDataItems = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-item'));\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n var selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n for (var i = 0; i < overflowItems.length; i++) {\n var ofTab = overflowItems[parseInt(i.toString(), 10)].closest('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (selectedOFTab && ofTab && selectedOFTab.id === ofTab.id && overflowItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {\n mediumDataItems.push(overflowItems[parseInt(i.toString(), 10)]);\n }\n }\n }\n var groupOFButton = activeContent.querySelectorAll('.e-ribbon-group-of-btn');\n for (var i = 0; i < groupOFButton.length; i++) {\n var overflowButton = getInstance(groupOFButton[parseInt(i.toString(), 10)], DropDownButton);\n var overflowBtnTarget = overflowButton.target;\n var overflowItems = overflowBtnTarget.querySelectorAll('.e-ribbon-item');\n for (var i_10 = 0; i_10 < overflowItems.length; i_10++) {\n if (overflowItems[parseInt(i_10.toString(), 10)].hasAttribute('data-medium-width')) {\n mediumDataItems.push(overflowItems[parseInt(i_10.toString(), 10)]);\n }\n }\n }\n for (var i = 0; i < mediumDataItems.length; i++) {\n if (mediumDataItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {\n var previousWidth = parseInt(mediumDataItems[parseInt(i.toString(), 10)].getAttribute('data-medium-width'), 10);\n mediumDataItems[parseInt(i.toString(), 10)].setAttribute('data-medium-width', isHidden ? (previousWidth - hiddenWidth).toString() : (previousWidth + hiddenWidth).toString());\n }\n }\n }\n };\n Ribbon.prototype.calculateOverflowItemsWidth = function (hiddenItem, isHidden, tabIndex) {\n if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n if (group.enableGroupOverflow) {\n var groupContainer = document.querySelector('#' + group.id);\n var overflowButton = void 0;\n var overflowDDB = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDB) {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n if (overflowButton) {\n var overflowEle = overflowButton.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n for (var i_11 = 0; i_11 < overflowItems.length; i_11++) {\n var previousWidth = parseInt(overflowItems[parseInt(i_11.toString(), 10)].getAttribute('data-simplified-width'), 10);\n if (previousWidth) {\n overflowItems[parseInt(i_11.toString(), 10)].setAttribute('data-simplified-width', isHidden ? (previousWidth - hiddenItem).toString() : (previousWidth + hiddenItem).toString());\n }\n }\n }\n }\n }\n }\n if (this.overflowDDB) {\n var selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n var overflowEle = this.overflowDDB.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n for (var i = 0; i < overflowItems.length; i++) {\n var ofTab = overflowItems[parseInt(i.toString(), 10)].closest('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (selectedOFTab && ofTab && selectedOFTab.id === ofTab.id) {\n var previousWidth = parseInt(overflowItems[parseInt(i.toString(), 10)].getAttribute('data-simplified-width'), 10);\n if (previousWidth) {\n overflowItems[parseInt(i.toString(), 10)].setAttribute('data-simplified-width', isHidden ? (previousWidth - hiddenItem).toString() : (previousWidth + hiddenItem).toString());\n }\n }\n }\n }\n };\n /**\n * Disables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableGroup = function (groupID) {\n this.enableDisableGroup(groupID, true);\n };\n /**\n * Enables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableGroup = function (groupID) {\n this.enableDisableGroup(groupID, false);\n };\n Ribbon.prototype.enableDisableGroup = function (groupID, isDisabled) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n if (groupEle) {\n if (isDisabled) {\n groupEle.classList.add('e-disabled');\n }\n else {\n groupEle.classList.remove('e-disabled');\n }\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, groupID, 'disabledGroups', isDisabled);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n if (isDisabled) {\n overflowtarget.classList.add('e-disabled');\n }\n else {\n overflowtarget.classList.remove('e-disabled');\n }\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n if (isDisabled) {\n grpContainer.classList.add('e-disabled');\n }\n else {\n grpContainer.classList.remove('e-disabled');\n }\n }\n }\n }\n };\n /**\n * adds the ribbon collection.\n *\n * @param {string} groupId - Gets the ribbon group ID.\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @param {string} targetId - Gets the ID of the target collection to add the new collection.\n * @param {boolean} isAfter - Defines whether the collection is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addCollection = function (groupId, collection, targetId, isAfter) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Row') && (itemProp.group.collections.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonCollections = itemProp.group.collections.slice();\n var index = targetId ? getIndex(ribbonCollections, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonCollections.length : (index + (isAfter ? 1 : 0));\n ribbonCollections.splice(index, 0, collection);\n itemProp.group.setProperties({ collections: ribbonCollections }, true);\n this.checkID([itemProp.group.collections[parseInt(index.toString(), 10)]], 'collection', groupId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var collection_1 = itemProp.group.collections[parseInt(index.toString(), 10)];\n var element = this.createCollection([collection_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.querySelector('#' + groupId + constants.CONTENT_ID).append(element);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon collection.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @returns {void}\n */\n Ribbon.prototype.removeCollection = function (collectionId) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n var groupEle = contentEle.querySelector('#' + collectionId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroup = itemProp.group;\n var ribbonCollections = ribbonGroup.collections.slice();\n ribbonCollections.splice(itemProp.collectionIndex, 1);\n ribbonGroup.setProperties({ collections: ribbonCollections }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Adds ribbon item.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {string} targetId - Gets the ID of the target item to add the new item.\n * @param {boolean} isAfter - Defines whether the item is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addItem = function (collectionId, item, targetId, isAfter) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Column') && (itemProp.collection.items.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonItems = itemProp.collection.items.slice();\n var index = targetId ? getIndex(ribbonItems, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonItems.length : (index + (isAfter ? 1 : 0));\n ribbonItems.splice(index, 0, item);\n itemProp.collection.setProperties({ items: ribbonItems }, true);\n this.checkID([itemProp.collection.items[parseInt(index.toString(), 10)]], 'item', collectionId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (contentEle.innerHTML !== '') {\n var item_1 = itemProp.collection.items[parseInt(index.toString(), 10)];\n var element = this.createItems([item_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.closest('.' + constants.RIBBON_ITEM).insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n if (element) {\n contentEle.querySelector('#' + collectionId).append(element);\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.removeItem = function (itemId) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n var item = itemProp.item;\n this.removeItemElement(contentEle, item, dropdown);\n }\n var ribbonCollection = itemProp.collection;\n var ribbonItems = ribbonCollection.items;\n ribbonItems.splice(itemProp.itemIndex, 1);\n ribbonCollection.setProperties({ items: ribbonItems }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Hides a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideItem = function (itemId) {\n this.showHideItem(itemId, true);\n };\n /**\n * Shows a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showItem = function (itemId) {\n this.showHideItem(itemId, false);\n };\n Ribbon.prototype.showHideItem = function (itemId, isHidden) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n this.updateHiddenElements(itemProp.tabIndex, isHidden ? 'hideItem' : 'showItem', itemId, isHidden, itemEle, itemProp.group);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, itemId, 'hiddenItems', isHidden);\n }\n };\n Ribbon.prototype.updateInitialProps = function (tabIndex, id, key, isInsert) {\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (!initialProps) {\n this.initialPropsData[parseInt(tabIndex.toString(), 10)] = {};\n initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n if (initialProps) {\n if (!initialProps[\"\" + key]) {\n initialProps[\"\" + key] = [];\n }\n var itemIndex = initialProps[\"\" + key].indexOf(id);\n if (isInsert) {\n if (itemIndex === -1) {\n initialProps[\"\" + key].push(id);\n }\n }\n else {\n if (itemIndex !== -1) {\n initialProps[\"\" + key].splice(itemIndex, 1);\n }\n if (initialProps[\"\" + key].length === 0) {\n delete initialProps[\"\" + key];\n }\n if (Object.keys(initialProps).length === 0) {\n delete this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n }\n }\n };\n Ribbon.prototype.checkHiddenItems = function (group, isHidden, tabIndex) {\n var isItemsHidden = true;\n var isEmptyCollection;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var groupEle = contentEle.querySelector('#' + group.id);\n if (isHidden) {\n for (var i = 0; i < group.collections.length; i++) {\n if (isItemsHidden) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n for (var j = 0; j < collection.items.length; j++) {\n var item = collection.items[parseInt(j.toString(), 10)];\n var itemEle = void 0;\n if (item.type === 'GroupButton') {\n var itemProp = getItem(this.tabs, item.id);\n itemEle = getItemElement(this, item.id + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n itemEle = getItemElement(this, item.id);\n }\n var itemContainer = itemEle ? itemEle.closest('.e-ribbon-item') : null;\n if (!(itemContainer.classList.contains('e-hidden'))) {\n isItemsHidden = false;\n break;\n }\n }\n }\n }\n if (isItemsHidden) {\n groupEle.classList.add('e-hide-group');\n this.checkOverflowItems(isHidden, contentEle, group.enableGroupOverflow, tabIndex, group.id);\n }\n }\n else {\n groupEle.classList.remove('e-hide-group');\n this.checkOverflowItems(isHidden, contentEle, group.enableGroupOverflow, tabIndex, group.id);\n }\n if (this.activeLayout === 'Simplified' && !group.enableGroupOverflow) {\n var itemsLength = groupEle.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n groupEle.classList[isEmptyCollection ? 'add' : 'remove']('e-ribbon-emptyCollection');\n }\n }\n };\n Ribbon.prototype.checkOverflowItems = function (isHidden, contentEle, isGroupOF, tabIndex, groupID) {\n var overflowDDB;\n var overflowtarget;\n if (isGroupOF) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n if (isHidden) {\n overflowtarget.classList.add('e-hide-group');\n }\n else {\n overflowtarget.classList.remove('e-hide-group');\n }\n }\n }\n else {\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n if (isHidden) {\n grpContainer.classList.add('e-hide-group');\n }\n else {\n grpContainer.classList.remove('e-hide-group');\n }\n }\n }\n }\n }\n };\n /**\n * tab - Gets the ribbon tab to be updated. The id of the tab is a required property. Other properties are optional.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model.\n * @returns {void}\n */\n Ribbon.prototype.updateTab = function (tab) {\n var tabId = tab.id;\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n if (groups && (contentEle.innerHTML !== '')) {\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabs[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n }\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _i = 0, groups_3 = groups; _i < groups_3.length; _i++) {\n var group = groups_3[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id +\n constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML === '') {\n // Check whether group is passed by the user and sets the updated values.\n if (tab.groups) {\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n if (this.selectedTab === index) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (tab.cssClass) {\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n tabEle.querySelector('#' + tabId + constants.HEADER_ID).innerText = ribbonTab.header;\n }\n }\n };\n /**\n * group - Gets the ribbon group to be updated. The id of the group is a required property. Other properties are optional.\n *\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @returns {void}\n */\n Ribbon.prototype.updateGroup = function (group) {\n var groupId = group.id;\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var dropdownElement;\n var dropdown;\n if (contentEle.innerHTML !== '') {\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (group.cssClass) {\n if (itemProp.group.cssClass) {\n groupEle.classList.remove(itemProp.group.cssClass);\n if (groupContainer) {\n groupContainer.classList.remove(itemProp.group.cssClass);\n }\n }\n }\n // Check whether collections or orientation is passed by the user, and if it is, then remove the old values.\n if (group.collections || group.orientation) {\n if (itemProp.group.collections || itemProp.group.orientation) {\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n var collectionElements = groupEle.querySelectorAll('.e-ribbon-collection');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n collectionElements.forEach(function (collectionEle) { collectionEle.remove(); });\n if (group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n var removeCss = groupContent.classList.value.match(/(e-ribbon-[column|row]+)/g);\n if (removeCss) {\n removeClass([groupContent], removeCss);\n }\n }\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount\n === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n }\n var ribbongroup = itemProp.group;\n ribbongroup.setProperties(group, true);\n ribbongroup.setProperties({ collections: this.checkID(ribbongroup.collections, 'collection', ribbongroup.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n // Check whether showLauncherIcon or orientation is passed by the user and sets the updated values.\n if (group.showLauncherIcon) {\n this.createLauncherIcon(ribbongroup.id, groupContainer, itemProp.tabIndex);\n }\n // Check whether collections or orientation is passed by the user and sets the updated values.\n if (group.collections || group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n groupContent.classList.add(((ribbongroup.orientation === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n var elements = this.createCollection(ribbongroup.collections, ribbongroup.orientation, ribbongroup.id, ribbongroup.header, ribbongroup.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, groupContent);\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (group.cssClass) {\n groupEle.classList.add(ribbongroup.cssClass);\n if (groupContainer) {\n groupContainer.classList.add(ribbongroup.cssClass);\n }\n }\n // Check whether header is passed by the user and sets the updated values.\n if (group.header) {\n if (this.activeLayout === RibbonLayout.Simplified && !group.enableGroupOverflow) {\n var overflowHeader = dropdown.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n else if (this.activeLayout === RibbonLayout.Classic && !ribbongroup.isCollapsed) {\n groupEle.querySelector('.e-ribbon-group-header').innerText = ribbongroup.header;\n }\n else if (this.activeLayout === RibbonLayout.Classic && ribbongroup.isCollapsed) {\n var overflowEle = groupEle.querySelector('#' + ribbongroup.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n // need to set instance for dropdown\n var dropDownBtn = getInstance(overflowEle, DropDownButton);\n var overflowHeader = dropDownBtn.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n }\n }\n };\n /**\n * collection - Gets the ribbon collection to be updated. The id of the collection is a required property. Other properties are optional.\n *\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @returns {void}\n */\n Ribbon.prototype.updateCollection = function (collection) {\n var collectionId = collection.id;\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var collectionEle = contentEle.querySelector('#' + collectionId);\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (collection.cssClass) {\n if (itemProp.collection.cssClass) {\n collectionEle.classList.remove(itemProp.collection.cssClass);\n }\n }\n if (collection.items) {\n if (itemProp.collection.items) {\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n }\n }\n var ribboncollection = itemProp.collection;\n ribboncollection.setProperties(collection, true);\n ribboncollection.setProperties({ items: this.checkID(ribboncollection.items, 'item', ribboncollection.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n if (collection.items) {\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var elements = this.createItems(ribboncollection.items, itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, collectionEle);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (collection.cssClass) {\n collectionEle.classList.add(ribboncollection.cssClass);\n }\n };\n /**\n * item - Gets the ribbon item to be updated. The id of the item is a required property. Other properties are optional.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n */\n Ribbon.prototype.updateItem = function (item) {\n var itemId = item.id;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + itemProp.group.id);\n if (groupEle) {\n var groupContainer = groupEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var itemContainer = null;\n var itemEle = null;\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (contentEle.innerHTML !== '') {\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n if (this.activeLayout === RibbonLayout.Simplified && itemProp.item.displayOptions === DisplayMode.Overflow) {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = dropdown.target.querySelector('#' + itemId);\n if (item.displayOptions && item.displayOptions !== DisplayMode.Overflow) {\n var collectionEle = groupContainer.querySelector('#' + itemProp.collection.id);\n if (collectionEle) {\n collectionEle.appendChild(itemContainer);\n }\n }\n }\n else {\n itemContainer = groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = contentEle.querySelector('#' + itemId);\n if (!itemContainer) {\n itemContainer = dropdown ? dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID) : groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n }\n if (!itemEle) {\n itemEle = dropdown ? dropdown.target.querySelector('#' + itemId) : contentEle.querySelector('#' + itemId);\n }\n if (itemProp.item.type === 'Gallery') {\n if (!itemEle) {\n itemEle = contentEle.querySelector('#' + itemId + '_galleryWrapper');\n }\n }\n if (itemProp.item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Classic) {\n itemEle = contentEle.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (this.activeLayout === RibbonLayout.Simplified && item.displayOptions === DisplayMode.Overflow) {\n this.createOverflowPopup(itemProp.item, itemProp.tabIndex, itemProp.group.enableGroupOverflow, itemProp.group.id, itemProp.group.header, itemContainer, groupContainer);\n if ((itemProp.item.type === RibbonItemType.DropDown) || (itemProp.item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(itemProp.item, itemContainer, itemProp.group.enableGroupOverflow, true);\n }\n }\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (item.cssClass) {\n if (itemProp.item.cssClass) {\n itemContainer.classList.remove(itemProp.item.cssClass);\n }\n }\n this.destroyFunction(itemProp.item, itemEle);\n itemEle.remove();\n var removeCss = itemContainer.classList.value.match(/(e-ribbon-[large|medium|small]+-item)/g);\n if (removeCss) {\n removeClass([itemContainer], removeCss);\n }\n }\n var ribbonItem = itemProp.item;\n ribbonItem.setProperties(item, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n // To avoid undefined items condition is added\n if (ribbonItem.ribbonTooltipSettings && isTooltipPresent(ribbonItem.ribbonTooltipSettings)) {\n itemContainer.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemContainer.id, data: ribbonItem.ribbonTooltipSettings });\n }\n var size = ribbonItem.activeSize;\n if (this.activeLayout === 'Simplified') {\n size = ((ribbonItem.allowedSizes === RibbonItemSize.Large) || (ribbonItem.allowedSizes & RibbonItemSize.Medium) ||\n (ribbonItem.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonItem.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n if (size & RibbonItemSize.Medium) {\n itemContainer.classList.add(constants.RIBBON_MEDIUM_ITEM);\n }\n else {\n itemContainer.classList.add(constants.RIBBON_SMALL_ITEM);\n }\n }\n this.createRibbonItem(ribbonItem, itemContainer);\n if (itemProp.item.type === 'Gallery' && document.querySelector('#' + itemId + '_container').closest('.e-ribbon-overflow-target') && item.displayOptions !== DisplayMode.Overflow) {\n this.createOverflowPopup(itemProp.item, itemProp.tabIndex, itemProp.group.enableGroupOverflow, itemProp.group.id, itemProp.group.header, itemContainer, groupContainer);\n }\n if (this.activeLayout === 'Simplified' && itemProp.group.enableGroupOverflow && dropdown) {\n if (dropdown.target.childElementCount === 0 ||\n (dropdown.target.childElementCount === 1 &&\n this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n if (item.cssClass) {\n itemContainer.classList.add(ribbonItem.cssClass);\n }\n if (!(ribbonItem.disabled) && itemContainer.classList.contains(constants.DISABLED_CSS)) {\n itemContainer.classList.remove(constants.DISABLED_CSS);\n }\n this.enableDisableItem(ribbonItem.id, ribbonItem.disabled);\n }\n }\n else {\n this.isUpdateItems = true;\n this.itemsModel.push(item);\n this.targetTabs[item.id] = itemProp.tabIndex;\n }\n };\n Ribbon.prototype.removeItemElement = function (contentEle, item, dropdown) {\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id) : null;\n if (item.type === 'GroupButton') {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n if (item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Simplified) {\n document.getElementById(item.id + constants.CONTAINER_ID).remove();\n }\n else {\n ele.closest('#' + item.id + constants.CONTAINER_ID).remove();\n }\n }\n };\n /**\n * Enables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.enableItem = function (itemId) {\n this.enableDisableItem(itemId, false);\n };\n /**\n * Disables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.disableItem = function (itemId) {\n this.enableDisableItem(itemId, true);\n };\n /**\n * Gets the Ribbon item model associated with the specified item ID.\n *\n * @param {string} itemId - The unique ID of the Ribbon item.\n * @returns {RibbonItemModel} - Returns the Ribbon item model.\n */\n Ribbon.prototype.getItem = function (itemId) {\n return getItem(this.tabs, itemId).item;\n };\n Ribbon.prototype.enableDisableItem = function (itemId, isDisabled) {\n var isUpdated = false;\n var isOverflow = false;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n itemProp.item.setProperties({ disabled: isDisabled }, true);\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else if (itemProp.item.type === 'Gallery') {\n ele = document.querySelector('#' + itemId);\n if (!ele) {\n ele = document.querySelector('#' + itemId + '_galleryWrapper');\n }\n else {\n isOverflow = true;\n }\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n var moduleName = this.getItemModuleName(itemProp.item);\n isUpdated = isDisabled ? !itemEle.classList.contains(constants.DISABLED_CSS) :\n itemEle.classList.contains(constants.DISABLED_CSS);\n if (moduleName !== 'template') {\n if (isUpdated) {\n if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateControlDisabled(ele, 'dropdown-btn', isDisabled);\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = document.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else if (moduleName === 'gallery') {\n ele.classList.toggle(constants.DISABLED_CSS, isDisabled);\n document.getElementById(itemId + '_popupButton').classList.toggle(constants.DISABLED_CSS, isDisabled);\n if (isOverflow) {\n var galleryEle = document.getElementById(itemId + '_galleryWrapper');\n galleryEle.classList.toggle(constants.DISABLED_CSS, isDisabled);\n }\n }\n else {\n updateControlDisabled(ele, moduleName, isDisabled);\n }\n }\n }\n else {\n ele.classList.toggle(constants.DISABLED_CSS, isDisabled);\n ele.toggleAttribute('disabled', isDisabled);\n }\n itemEle.classList.toggle(constants.DISABLED_CSS, itemProp.item.disabled);\n }\n };\n Ribbon.prototype.unwireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n EventHandler.remove(document.body, 'keydown', this.keytipActionHandler);\n EventHandler.remove(document, 'mousedown', this.mouseEventHandler);\n EventHandler.remove(document, 'scroll', this.mouseEventHandler);\n };\n Ribbon.prototype.destroy = function () {\n this.keyboardModuleRibbon.destroy();\n this.keyboardModuleRibbon = null;\n destroyTooltip(this.element);\n if (this.refreshing) {\n this.clearOverflowDropDown(this.selectedTab);\n }\n this.destroyTabItems(this.tabs);\n if (!this.hideLayoutSwitcher) {\n this.removeExpandCollapse();\n }\n this.collapseButton = undefined;\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n }\n _super.prototype.destroy.call(this);\n this.tabObj.destroy();\n this.tabObj = undefined;\n this.initialPropsData = {};\n this.hiddenGroups = [];\n this.hiddenElements = {};\n this.keyTipElements = {};\n this.itemsModel = [];\n this.targetTabs = {};\n remove(this.element.querySelector('#' + this.element.id + constants.TAB_ID));\n this.element.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.element.style.removeProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH);\n this.element.style.removeProperty('width');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(constants.SPACE));\n }\n this.element.classList.remove(constants.RTL_CSS, constants.RIBBON_SIMPLIFIED_MODE, constants.RIBBON_OVERFLOW, constants.RIBBON_COLLAPSIBLE, constants.RIBBON_MINIMIZE, 'e-rbn');\n this.unwireEvents();\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RibbonModel} newProp - Specifies new properties\n * @param {RibbonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Ribbon.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _a, _b;\n for (var _i = 0, _c = Object.keys(newProp); _i < _c.length; _i++) {\n var prop = _c[_i];\n switch (prop) {\n case 'activeLayout':\n this.switchLayout();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n (_a = this.element.classList).remove.apply(_a, oldProp.cssClass.split(constants.SPACE));\n }\n if (newProp.cssClass) {\n (_b = this.element.classList).add.apply(_b, newProp.cssClass.split(constants.SPACE));\n }\n break;\n case 'isMinimized':\n this.element.classList.toggle(constants.RIBBON_MINIMIZE, this.isMinimized);\n this.tabObj.element.querySelector('.e-content').style.display = this.isMinimized ? 'none' : 'block';\n if (!this.isMinimized) {\n this.refreshLayout();\n }\n break;\n case 'locale':\n this.updateCommonProperty({ locale: this.locale });\n break;\n case 'enablePersistence':\n this.updateCommonProperty({ enablePersistence: this.enablePersistence });\n break;\n case 'enableRtl':\n this.element.classList.toggle(constants.RTL_CSS, this.enableRtl);\n this.updateCommonProperty({ enableRtl: newProp.enableRtl });\n if (this.scrollModule) {\n this.scrollModule.setProperties({ enableRtl: newProp.enableRtl });\n }\n break;\n case 'launcherIconCss':\n for (var i = 0; i < this.tabs.length; i++) {\n var tabContent = this.tabObj.items[parseInt(i.toString(), 10)].content;\n var tab = this.tabs[parseInt(i.toString(), 10)];\n if (tabContent.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _d = 0, _e = tab.groups; _d < _e.length; _d++) {\n var group = _e[_d];\n if (group.showLauncherIcon) {\n var className = constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss || constants.RIBBON_LAUNCHER_ICON);\n if (group.isCollapsed) {\n var element = tabContent.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var dropdown = getComponent(element, DropDownButton);\n var launcherIconEle = dropdown.target.querySelector('#' + group.id + constants.LAUNCHER_ID);\n launcherIconEle.className = className;\n }\n else {\n var element = tabContent.querySelector('#' + group.id + constants.LAUNCHER_ID);\n element.className = className;\n }\n }\n }\n }\n }\n break;\n case 'selectedTab': {\n var tabEle = this.tabObj.element;\n var toolbarItem = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(newProp.selectedTab.toString(), 10)];\n if (!(toolbarItem.classList.contains('e-hidden') || toolbarItem.classList.contains('e-disable'))) {\n this.tabObj.setProperties({ selectedItem: newProp.selectedTab });\n }\n break;\n }\n case 'tabAnimation':\n this.tabObj.setProperties({ animation: newProp.tabAnimation });\n break;\n case 'tabs':\n this.reRenderTabs(newProp.tabs);\n break;\n case 'contextualTabs':\n for (var i = 0; i < this.contextualTabs.length; i++) {\n if (newProp.contextualTabs[parseInt(i.toString(), 10)]) {\n this.ribbonContextualTabModule.updateContextualTabs(newProp.contextualTabs[parseInt(i.toString(), 10)], this.contextualTabs[parseInt(i.toString(), 10)]);\n }\n }\n break;\n case 'width':\n this.element.style.width = formatUnit(newProp.width);\n this.refreshLayout();\n break;\n case 'fileMenu': {\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.updateFileMenu(this.fileMenu);\n }\n var toolbarEle = this.tabObj['tbObj'];\n toolbarEle.refreshOverflow();\n break;\n }\n case 'backStageMenu': {\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.updateBackStageMenu(this.backStageMenu);\n }\n var toolbarElement = this.tabObj['tbObj'];\n toolbarElement.refreshOverflow();\n break;\n }\n case 'helpPaneTemplate': {\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n this.tabObj.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n }\n if (this.helpPaneTemplate) {\n this.createHelpPaneTemplate();\n }\n var toolbar_1 = this.tabObj['tbObj'];\n toolbar_1.refreshOverflow();\n break;\n }\n case 'hideLayoutSwitcher':\n if (this.hideLayoutSwitcher) {\n this.removeExpandCollapse();\n }\n else {\n this.addExpandCollapse();\n }\n break;\n }\n }\n };\n var Ribbon_1;\n __decorate([\n Property('Classic')\n ], Ribbon.prototype, \"activeLayout\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"enableKeyTips\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"layoutSwitcherKeyTip\", void 0);\n __decorate([\n Complex({}, FileMenuSettings)\n ], Ribbon.prototype, \"fileMenu\", void 0);\n __decorate([\n Complex({}, BackStageMenu)\n ], Ribbon.prototype, \"backStageMenu\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"launcherIconCss\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"isMinimized\", void 0);\n __decorate([\n Property('en-us')\n ], Ribbon.prototype, \"locale\", void 0);\n __decorate([\n Property(0)\n ], Ribbon.prototype, \"selectedTab\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Ribbon.prototype, \"tabAnimation\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], Ribbon.prototype, \"tabs\", void 0);\n __decorate([\n Collection([], RibbonContextualTabSettings)\n ], Ribbon.prototype, \"contextualTabs\", void 0);\n __decorate([\n Property('100%')\n ], Ribbon.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"helpPaneTemplate\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"hideLayoutSwitcher\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelecting\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelected\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonExpanding\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonCollapsing\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonLayoutSwitched\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"launcherIconClick\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"overflowPopupOpen\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"overflowPopupClose\", void 0);\n Ribbon = Ribbon_1 = __decorate([\n NotifyPropertyChanges\n ], Ribbon);\n return Ribbon;\n}(Component));\nexport { Ribbon };\n","import { EventHandler, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex, isTooltipPresent } from '../base/index';\nimport * as constants from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonFileMenu = /** @class */ (function () {\n function RibbonFileMenu(parent) {\n this.parent = parent;\n }\n RibbonFileMenu.prototype.getModuleName = function () {\n return 'ribbonFileMenu';\n };\n RibbonFileMenu.prototype.destroy = function () {\n if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates File Menu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.createFileMenu = function (fileMenuOptions) {\n var _this = this;\n if (!fileMenuOptions.visible) {\n return;\n }\n this.ddbElement = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.ddbElement, toolbarEle);\n this.fileMenuDDB = new DropDownButton({\n content: fileMenuOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-file-menu e-caret-hide',\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.ddbElement.offsetWidth + 'px');\n },\n beforeClose: this.ddbBeforeEvent.bind(this, false),\n beforeOpen: this.ddbBeforeEvent.bind(this, true),\n close: this.ddbAfterEvent.bind(this, false),\n open: this.ddbAfterEvent.bind(this, true)\n }, this.ddbElement);\n if (this.parent.fileMenu.popupTemplate) {\n this.fileMenuDDB.setProperties({ target: this.parent.fileMenu.popupTemplate });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n this.parent.tabObj.refreshActiveTabBorder();\n this.addFileMenuTooltip(fileMenuOptions);\n this.addFileMenuKeytip();\n };\n RibbonFileMenu.prototype.addFileMenuTooltip = function (fileMenuOptions) {\n if (isTooltipPresent(fileMenuOptions.ribbonTooltipSettings)) {\n this.ddbElement.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.ddbElement.id, data: fileMenuOptions.ribbonTooltipSettings });\n }\n };\n RibbonFileMenu.prototype.addFileMenuKeytip = function () {\n if (this.parent.fileMenu.keyTip) {\n this.parent.keyTipElements['filemenu'] = [];\n this.parent.keyTipElements['filemenu'].push({ id: this.ddbElement.id, type: 'filemenu', keyTip: this.parent.fileMenu.keyTip });\n }\n };\n RibbonFileMenu.prototype.ddbBeforeEvent = function (isOpen, args) {\n //args.event is null when dropdown button is closed using a method call\n if (!isOpen && args.event && args.event.target.closest('.e-ribbon-menu')) {\n args.cancel = true;\n }\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = { cancel: args.cancel, element: args.element, event: args.event };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.ddbAfterEvent = function (isOpen, args) {\n var element = isOpen ? this.fileMenuDDB.target : this.fileMenuDDB.element;\n element.focus();\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element };\n event.call(this, eventArgs);\n }\n };\n //Clone RibbonMenuItems before assigning to avoid reference issues.\n RibbonFileMenu.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n itemsList.push({\n iconCss: item.iconCss,\n id: item.id,\n separator: item.separator,\n text: item.text,\n url: item.url,\n items: this.cloneMenuItem(item.items)\n });\n }\n return itemsList;\n };\n RibbonFileMenu.prototype.createRibbonMenu = function (menuOptions) {\n var _this = this;\n var ulElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_LIST\n });\n this.fileMenuDDB.setProperties({ target: ulElem });\n this.menuctrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-menu',\n animationSettings: menuOptions.animationSettings,\n items: this.cloneMenuItem(menuOptions.menuItems),\n showItemOnClick: menuOptions.showItemOnClick,\n template: menuOptions.itemTemplate,\n beforeClose: this.menuBeforeEvent.bind(this, false),\n beforeOpen: this.menuBeforeEvent.bind(this, true),\n beforeItemRender: this.beforeItemRender.bind(this),\n onClose: this.menuAfterEvent.bind(this, false),\n onOpen: this.menuAfterEvent.bind(this, true),\n select: this.menuSelect.bind(this)\n }, ulElem);\n EventHandler.add(ulElem, 'keydown', function (e) {\n if (e.key === 'Tab') {\n _this.fileMenuDDB.toggle();\n }\n }, this);\n };\n RibbonFileMenu.prototype.menuBeforeEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = {\n cancel: args.cancel, element: args.element, event: args.event,\n items: args.items, parentItem: args.parentItem\n };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.menuAfterEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element, items: args.items, parentItem: args.parentItem };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.beforeItemRender = function (args) {\n var event = this.parent.fileMenu.beforeItemRender;\n if (event) {\n var eventArgs = { element: args.element, item: args.item };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.menuSelect = function (args) {\n var event = this.parent.fileMenu.select;\n if (event) {\n var eventArgs = { element: args.element, item: args.item, event: args.event };\n event.call(this, eventArgs);\n }\n var menuOpen = !!args.element.closest('.e-ribbon-menu.e-popup-open');\n var fileTriggerOpen = !!args.element.closest('.e-ribbon-file-menu.e-popup-open');\n var fileMenuOpen = !!document.querySelector('.e-ribbon-file-menu.e-popup-open');\n // True if the file trigger was clicked open, or if the ribbon menu is open and the file menu popup is actually present\n var isMenuOpen = fileTriggerOpen || (menuOpen && fileMenuOpen);\n if (!args.element.classList.contains('e-menu-caret-icon') && isMenuOpen) {\n this.fileMenuDDB.toggle();\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.setCommonProperties = function (commonProp) {\n if (this.fileMenuDDB) {\n this.fileMenuDDB.setProperties(commonProp);\n if (this.menuctrl) {\n this.menuctrl.setProperties(commonProp);\n }\n }\n };\n /**\n * Update FileMenu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.updateFileMenu = function (fileMenuOptions) {\n if (fileMenuOptions.visible) {\n if (this.fileMenuDDB) {\n if (fileMenuOptions.text) {\n this.fileMenuDDB.setProperties({\n content: fileMenuOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.ddbElement.offsetWidth + 'px');\n }\n if (fileMenuOptions.popupTemplate) {\n if (this.menuctrl) {\n this.destroyMenu();\n }\n this.fileMenuDDB.setProperties({ target: fileMenuOptions.popupTemplate });\n }\n else {\n if (this.menuctrl) {\n this.menuctrl.setProperties({\n animationSettings: fileMenuOptions.animationSettings,\n items: this.cloneMenuItem(fileMenuOptions.menuItems),\n showItemOnClick: fileMenuOptions.showItemOnClick,\n template: fileMenuOptions.itemTemplate\n });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n }\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n this.addFileMenuTooltip(fileMenuOptions);\n this.addFileMenuKeytip();\n }\n else {\n this.createFileMenu(fileMenuOptions);\n }\n }\n else if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonFileMenu.prototype.destroyMenu = function () {\n if (this.menuctrl) {\n this.menuctrl.destroy();\n this.menuctrl = null;\n }\n };\n RibbonFileMenu.prototype.destroyDDB = function () {\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.fileMenuDDB.destroy();\n this.fileMenuDDB = null;\n remove(this.ddbElement);\n this.ddbElement = null;\n };\n RibbonFileMenu.prototype.removeFileMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.ddbElement.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n RibbonFileMenu.prototype.removeFileMenuKeytip = function () {\n var _this = this;\n if (this.parent.keyTipElements['filemenu']) {\n var index = getIndex(this.parent.keyTipElements['filemenu'], function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.parent.keyTipElements['filemenu'].splice(index, 1);\n }\n }\n };\n /**\n * Add items to FileMenu.\n *\n * @param {MenuItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.addItems = function (items, target, isAfter, isUniqueId) {\n if (isAfter) {\n this.menuctrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuctrl.insertBefore(items, target, isUniqueId);\n }\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Remove items from FileMenu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.removeItems = function (items, isUniqueId) {\n this.menuctrl.removeItems(items, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Enable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be enabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.enableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, true, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Disable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be disabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.disableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, false, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Update items in FileMenu.\n *\n * @param {MenuItem} item - Gets the item to be updated.\n * @param {boolean} id - Gets the id of the item to be updated.\n * @param {boolean} isUniqueId - Gets whether the id provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.setItem = function (item, id, isUniqueId) {\n this.menuctrl.setItem(item, id, isUniqueId);\n this.menuctrl.refresh();\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n return RibbonFileMenu;\n}());\nexport { RibbonFileMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { remove, append, Component, EventHandler } from '@syncfusion/ej2-base';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex } from '../base/index';\nimport { getTemplateFunction, isTooltipPresent } from '../base/utils';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonBackstage = /** @class */ (function (_super) {\n __extends(RibbonBackstage, _super);\n function RibbonBackstage(parent) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n return _this;\n }\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.render = function () {\n // render code\n };\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.preRender = function () {\n // pre render code\n };\n RibbonBackstage.prototype.getPersistData = function () {\n return '';\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.onPropertyChanged = function () {\n // onProperty changes code\n };\n RibbonBackstage.prototype.getModuleName = function () {\n return 'ribbonBackstage';\n };\n RibbonBackstage.prototype.destroy = function () {\n if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates Backstage Menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.createBackStage = function (backStageOptions) {\n var _this = this;\n if (!backStageOptions.visible) {\n return;\n }\n this.backstageButtonEle = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.backstageButtonEle, toolbarEle);\n this.backstageButton = new Button({\n content: backStageOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE,\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.backstageButtonEle.offsetWidth + 'px');\n }\n }, this.backstageButtonEle);\n this.createBackStagePopup(backStageOptions);\n if (this.parent.backStageMenu.template) {\n this.createBackStageTemplate(this.parent.backStageMenu.template);\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n if (this.menuCtrl) {\n this.checkMenuItems(this.menuCtrl.items);\n }\n if (this.footerMenuCtrl) {\n this.checkMenuItems(this.footerMenuCtrl.items);\n }\n }\n this.backstageButtonEle.onclick = function (e) {\n e.stopPropagation();\n _this.showBackstage();\n _this.popupHTMLElement.classList.add(constants.RIBBON_BACKSTAGE_OPEN);\n var menuItem = _this.menuWrapper.querySelector('.e-menu-item.e-selected');\n if (menuItem) {\n menuItem.classList.remove('e-selected');\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (!item.isFooter && _this.menuCtrl.items[0].text === item.text) {\n var firstMenuEle = _this.popupHTMLElement.querySelector('#' + _this.menuCtrl.items[0].id);\n if (firstMenuEle) {\n firstMenuEle.classList.add('e-selected');\n firstMenuEle.focus();\n _this.menuIndex = 0;\n _this.isCloseBtn = false;\n }\n _this.createBackStageContent(_this.menuCtrl.items[0].id, item.content);\n break;\n }\n else {\n continue;\n }\n }\n };\n this.parent.tabObj.refreshActiveTabBorder();\n this.addBackStageMenuTooltip(backStageOptions);\n this.addBackStageMenuKeyTip(backStageOptions);\n EventHandler.add(document, 'click', this.onClickEvent, this);\n };\n RibbonBackstage.prototype.onClickEvent = function (e) {\n var targetEle = e.target;\n if (this.popupHTMLElement.contains(targetEle)) {\n return;\n }\n else {\n this.hideBackstage();\n }\n };\n RibbonBackstage.prototype.addBackStageMenuTooltip = function (backStageOptions) {\n if (isTooltipPresent(backStageOptions.ribbonTooltipSettings)) {\n this.backstageButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.backstageButtonEle.id, data: backStageOptions.ribbonTooltipSettings });\n }\n };\n RibbonBackstage.prototype.addBackStageMenuKeyTip = function (backStageOptions) {\n if (backStageOptions.keyTip) {\n if (!(this.parent.keyTipElements['backstage'])) {\n this.parent.keyTipElements['backstage'] = [];\n }\n this.parent.keyTipElements['backstage'].push({ id: this.backstageButtonEle.id, type: 'backstage', keyTip: backStageOptions.keyTip });\n }\n if (backStageOptions.items && backStageOptions.items.length) {\n if (!(this.parent.keyTipElements['backstageMenu'])) {\n this.parent.keyTipElements['backstageMenu'] = [];\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n if (backStageOptions.items[parseInt(i.toString(), 10)].keyTip) {\n this.parent.keyTipElements['backstageMenu'].push({ id: backStageOptions.items[parseInt(i.toString(), 10)].id, type: 'backstageMenu', keyTip: backStageOptions.items[parseInt(i.toString(), 10)].keyTip });\n }\n }\n }\n };\n RibbonBackstage.prototype.checkMenuItems = function (backStageItems) {\n for (var i = 0; i < backStageItems.length; i++) {\n var item = backStageItems[parseInt(i.toString(), 10)];\n if (!item.iconCss) {\n var menuItemEle = this.popupHTMLElement.querySelector('#' + item.id);\n menuItemEle.classList.add(constants.RIBBON_BACKSTAGE_TEXT_MENU);\n }\n }\n };\n RibbonBackstage.prototype.createBackStagePopup = function (backStageOptions) {\n var _this = this;\n this.popupHTMLElement = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_POPUP_ID,\n className: constants.RIBBON_BACKSTAGE_POPUP\n });\n var targetEle;\n if (backStageOptions.target) {\n targetEle = backStageOptions.target instanceof HTMLElement ? backStageOptions.target :\n document.querySelector(backStageOptions.target);\n targetEle.appendChild(this.popupHTMLElement);\n }\n else {\n this.parent.element.appendChild(this.popupHTMLElement);\n }\n this.popupEle = new Popup(this.popupHTMLElement, {\n height: backStageOptions.height,\n width: backStageOptions.width,\n relateTo: backStageOptions.target || this.parent.element,\n enableRtl: this.parent.enableRtl\n });\n if (this.parent.enableRtl) {\n this.updatePopupPositionOnRtl(this.parent.enableRtl);\n }\n this.hideBackstage();\n EventHandler.add(this.popupHTMLElement, 'keyup', function (e) {\n if (e.code === 'Escape') {\n _this.hideBackstage();\n }\n _this.handleNavigation(e);\n }, this);\n };\n RibbonBackstage.prototype.handleNavigation = function (e) {\n var closeBtnEle = this.popupHTMLElement.querySelector('.e-ribbon-close-btn');\n var menuItems = this.popupHTMLElement.querySelectorAll('.e-menu-item');\n var arrowUp = e.key === 'ArrowUp';\n var arrowDown = e.key === 'ArrowDown';\n if (arrowUp || arrowDown) {\n if ((arrowUp && this.menuIndex > 0) || (arrowDown && this.menuIndex < menuItems.length - 1 && !this.isCloseBtn)) {\n this.menuIndex = arrowUp ? this.menuIndex - 1 : this.menuIndex + 1;\n }\n else {\n if (closeBtnEle && !this.isCloseBtn) {\n closeBtnEle.focus();\n this.isCloseBtn = true;\n }\n else {\n this.menuIndex = arrowUp ? menuItems.length - 1 : 0;\n this.isCloseBtn = false;\n }\n }\n for (var i = 0; i < menuItems.length; i++) {\n menuItems[parseInt(i.toString(), 10)].classList.remove('e-focused');\n }\n if (!this.isCloseBtn) {\n if (arrowUp && menuItems[this.menuIndex].classList.contains('e-separator')) {\n this.menuIndex--;\n }\n else if (arrowDown && menuItems[this.menuIndex].classList.contains('e-separator')) {\n this.menuIndex++;\n }\n menuItems[this.menuIndex].classList.add('e-focused');\n menuItems[this.menuIndex].focus();\n }\n }\n };\n RibbonBackstage.prototype.updatePopupPositionOnRtl = function (enableRtl) {\n var popupStyle = this.popupHTMLElement.style;\n if (enableRtl) {\n popupStyle.right = popupStyle.left;\n popupStyle.left = 'unset';\n }\n else {\n popupStyle.left = popupStyle.right;\n popupStyle.right = 'unset';\n }\n };\n RibbonBackstage.prototype.createBackstageMenu = function (menuOptions, isFooter) {\n var _this = this;\n var wrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_wrapper');\n if (!wrapperEle) {\n this.menuWrapper = this.parent.createElement('div', {\n id: this.parent.element.id + '_wrapper',\n className: constants.RIBBON_BACKSTAGE_MENU_WRAPPER\n });\n this.popupHTMLElement.appendChild(this.menuWrapper);\n }\n if (menuOptions.backButton.visible && !isFooter) {\n var closeBtnEle = this.parent.createElement('button', {\n id: this.parent.element.id + '_close',\n className: 'e-ribbon-close-btn'\n });\n this.closeBtn = new Button({\n content: menuOptions.backButton.text,\n iconCss: menuOptions.backButton.iconCss ? menuOptions.backButton.iconCss : constants.BACKSTAGE_CLOSE_ICON,\n enableRtl: this.parent.enableRtl\n }, closeBtnEle);\n this.menuWrapper.append(closeBtnEle);\n closeBtnEle.onclick = function () {\n _this.popupHTMLElement.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n _this.hideBackstage();\n _this.isBackButtonClicked = true;\n };\n }\n var itemsWrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_itemswrapper');\n if (!itemsWrapperEle) {\n this.itemsWrapperEle = this.parent.createElement('div', {\n id: this.parent.element.id + '_itemswrapper',\n className: constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER\n });\n this.menuWrapper.append(this.itemsWrapperEle);\n }\n var ulFooterElem;\n if (isFooter) {\n ulFooterElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FOOTER_MENU_LIST\n });\n this.itemsWrapperEle.appendChild(ulFooterElem);\n }\n else {\n this.ulMenuElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_MENU_LIST\n });\n this.itemsWrapperEle.appendChild(this.ulMenuElem);\n }\n if (!isFooter) {\n this.menuCtrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE_MENU,\n items: this.cloneMenuItem(menuOptions.items),\n select: this.menuSelect.bind(this, menuOptions)\n }, this.ulMenuElem);\n }\n else {\n this.footerMenuCtrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE_MENU,\n items: this.cloneFooterMenuItem(menuOptions.items),\n select: this.menuSelect.bind(this, menuOptions)\n }, ulFooterElem);\n }\n };\n RibbonBackstage.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n continue;\n }\n else {\n itemsList.push({\n id: item.id,\n iconCss: item.iconCss,\n separator: item.separator,\n text: item.text\n });\n }\n }\n return itemsList;\n };\n RibbonBackstage.prototype.cloneFooterMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (!item.isFooter) {\n continue;\n }\n else {\n itemsList.push({\n id: item.id,\n iconCss: item.iconCss,\n separator: item.separator,\n text: item.text\n });\n }\n }\n return itemsList;\n };\n RibbonBackstage.prototype.createBackStageContent = function (itemId, content) {\n var templateName = 'backstageContent';\n this.clearTemplate([templateName]);\n if (!this.backstageContentEle) {\n this.backstageContentEle = this.parent.createElement('div', {\n id: itemId + constants.CONTENT_ID,\n className: constants.RIBBON_BACKSTAGE_CONTENT\n });\n }\n else {\n this.backstageContentEle.innerHTML = '';\n this.backstageContentEle.id = itemId + constants.CONTENT_ID;\n }\n var templateFunction = getTemplateFunction(content);\n append(templateFunction({}, this, templateName, 'backstageContent', this.parent.isStringTemplate), this.backstageContentEle);\n if (content) {\n this.popupHTMLElement.append(this.backstageContentEle);\n }\n this.renderReactTemplates();\n return templateFunction;\n };\n RibbonBackstage.prototype.createBackStageTemplate = function (template) {\n var templateName = 'backstageTemplate';\n this.clearTemplate([templateName]);\n this.backstageTempEle = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID + '_template',\n className: constants.RIBBON_BACKSTAGE_TEMPLATE\n });\n var templateFunction = getTemplateFunction(template);\n append(templateFunction({}, this, templateName, 'backstageTemplate', this.parent.isStringTemplate), this.backstageTempEle);\n this.popupHTMLElement.append(this.backstageTempEle);\n this.renderReactTemplates();\n return templateFunction;\n };\n RibbonBackstage.prototype.menuSelect = function (menuOptions, args) {\n for (var i = 0; i < menuOptions.items.length; i++) {\n var item = menuOptions.items[parseInt(i.toString(), 10)];\n if (item.text === args.item.text) {\n this.contentItem = item;\n this.menuIndex = i;\n break;\n }\n }\n this.createBackStageContent(args.item.id, this.contentItem.content);\n var eventArgs = { cancel: false, target: args.element,\n item: this.contentItem, isBackButton: this.isBackButtonClicked };\n if (this.contentItem.backStageItemClick) {\n this.contentItem.backStageItemClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.setCommonProperties = function (commonProp) {\n if (this.backstageButton) {\n this.backstageButton.setProperties(commonProp);\n if (this.popupEle) {\n this.popupEle.setProperties(commonProp);\n if (this.popupHTMLElement) {\n this.updatePopupPositionOnRtl(commonProp.enableRtl);\n }\n if (this.menuCtrl) {\n this.menuCtrl.setProperties(commonProp);\n if (this.closeBtn) {\n this.closeBtn.setProperties(commonProp);\n }\n }\n if (this.footerMenuCtrl) {\n this.footerMenuCtrl.setProperties(commonProp);\n }\n }\n }\n };\n /**\n * Update Backstage menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage menu.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.updateBackStageMenu = function (backStageOptions) {\n if (backStageOptions.visible) {\n if (this.backstageButton) {\n if (backStageOptions.text) {\n this.backstageButton.setProperties({\n content: backStageOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.backstageButtonEle.offsetWidth + 'px');\n }\n if (this.popupEle) {\n this.popupEle.setProperties({\n height: backStageOptions.height,\n width: backStageOptions.width,\n target: backStageOptions.target || this.parent.element\n });\n }\n if (backStageOptions.template) {\n if (this.backstageTempEle) {\n remove(this.backstageTempEle);\n this.backstageTempEle = null;\n }\n this.createBackStageTemplate(backStageOptions.template);\n }\n else {\n if (this.menuCtrl) {\n this.menuCtrl.setProperties({\n items: this.cloneMenuItem(backStageOptions.items)\n });\n }\n if (this.footerMenuCtrl) {\n this.footerMenuCtrl.setProperties({\n items: this.cloneFooterMenuItem(backStageOptions.items)\n });\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n }\n }\n this.removeBackstageMenuTooltip();\n this.removeBackstageMenuKeyTip();\n this.addBackStageMenuTooltip(backStageOptions);\n this.addBackStageMenuKeyTip(backStageOptions);\n }\n else {\n this.createBackStage(backStageOptions);\n }\n }\n else if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonBackstage.prototype.destroyMenu = function () {\n if (this.menuCtrl) {\n this.menuCtrl.destroy();\n this.menuCtrl = null;\n }\n };\n RibbonBackstage.prototype.destroyDDB = function () {\n this.removeBackstageMenuTooltip();\n this.removeBackstageMenuKeyTip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.backstageButton.destroy();\n this.backstageButton = null;\n remove(this.backstageButtonEle);\n this.backstageButtonEle = null;\n EventHandler.remove(document, 'click', this.onClickEvent);\n };\n RibbonBackstage.prototype.removeBackstageMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.backstageButtonEle.id; });\n if (index !== -1) {\n this.backstageButtonEle.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n RibbonBackstage.prototype.removeBackstageMenuKeyTip = function () {\n var _this = this;\n if (this.parent.keyTipElements['backstage'] && this.parent.keyTipElements['backstage'].length) {\n var index = getIndex(this.parent.keyTipElements['backstage'], function (e) { return e.id === _this.backstageButtonEle.id; });\n if (index !== -1) {\n this.parent.keyTipElements['backstage'].splice(index, 1);\n }\n }\n if (this.parent.keyTipElements['backstageMenu'] && this.parent.keyTipElements['backstageMenu'].length) {\n for (var i = 0; i < this.parent.keyTipElements['backstageMenu'].length; i++) {\n this.parent.keyTipElements['backstageMenu'].splice(i, 1);\n i--;\n }\n }\n };\n /**\n * Add items to Backstage Menu.\n *\n * @param {BackstageItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.addBackstageItems = function (items, target, isAfter, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n if (isAfter) {\n this.footerMenuCtrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.footerMenuCtrl.insertBefore(items, target, isUniqueId);\n }\n }\n else {\n if (isAfter) {\n this.menuCtrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuCtrl.insertBefore(items, target, isUniqueId);\n }\n }\n }\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n var backStageOptions = this.parent.backStageMenu;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n for (var i_1 = 0; i_1 < backstageItems.length; i_1++) {\n var item1 = backstageItems[parseInt(i_1.toString(), 10)];\n if (item.text === item1.text) {\n item1.content = item.content;\n break;\n }\n }\n }\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Remove items from Backstage Menu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.removeBackstageItems = function (items, isUniqueId) {\n this.menuCtrl.removeItems(items, isUniqueId);\n this.footerMenuCtrl.removeItems(items, isUniqueId);\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Renders the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.showBackstage = function () {\n this.popupEle.show();\n };\n /**\n * Hides the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.hideBackstage = function () {\n if (this.popupEle.element.classList.contains(constants.RIBBON_BACKSTAGE_OPEN)) {\n this.popupEle.element.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n }\n this.popupEle.hide();\n };\n return RibbonBackstage;\n}(Component));\nexport { RibbonBackstage };\n","import * as constants from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon contextual tab.\n */\nvar RibbonContextualTab = /** @class */ (function () {\n function RibbonContextualTab(parent) {\n this.parent = parent;\n }\n RibbonContextualTab.prototype.getModuleName = function () {\n return 'ribbonContextualTab';\n };\n RibbonContextualTab.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates Contextual tab.\n *\n * @returns {void}\n * @hidden\n */\n RibbonContextualTab.prototype.addContextualTabs = function () {\n var isSelected = false;\n for (var n = 0; n < this.parent.contextualTabs.length; n++) {\n for (var i = 0; i < this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs.length; i++) {\n this.parent.addTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[parseInt(i.toString(), 10)]);\n var index = this.parent.tabs.length - 1;\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(index.toString(), 10)];\n toolbarEle.classList.add(constants.RIBBON_CONTEXTUAL_TAB);\n toolbarEle.classList.add('e-hidden');\n if (this.parent.contextualTabs[parseInt(n.toString(), 10)].visible) {\n this.parent.showTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[parseInt(i.toString(), 10)].id, true);\n if (this.parent.contextualTabs[parseInt(n.toString(), 10)].isSelected && !isSelected) {\n this.parent.selectTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[0].id);\n isSelected = true;\n }\n }\n }\n }\n };\n /**\n * Updates Contextual tab.\n *\n * @param {RibbonContextualTabSettingsModel} newProp - Specifies new properties.\n * @param {RibbonContextualTabSettingsModel} contextualTab - Gets the property of contextual tab.\n * @returns {void}\n * @hidden\n */\n RibbonContextualTab.prototype.updateContextualTabs = function (newProp, contextualTab) {\n if (!(isNullOrUndefined(newProp.visible))) {\n for (var i = 0; i < contextualTab.tabs.length; i++) {\n if (newProp.visible) {\n this.parent.showTab(contextualTab.tabs[parseInt(i.toString(), 10)].id, true);\n }\n else {\n this.parent.hideTab(contextualTab.tabs[parseInt(i.toString(), 10)].id, true);\n }\n }\n }\n if (!(isNullOrUndefined(newProp.isSelected))) {\n if (newProp.isSelected && contextualTab.visible) {\n this.parent.selectTab(contextualTab.tabs[0].id);\n }\n else {\n var tabEle = this.parent.tabObj.element;\n for (var i = 0; i < this.parent.tabs.length; i++) {\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(i.toString(), 10)];\n if (!(toolbarEle.classList.contains('e-hidden') || toolbarEle.classList.contains('e-disable'))) {\n this.parent.selectTab(this.parent.tabs[parseInt(i.toString(), 10)].id);\n break;\n }\n }\n }\n }\n if (newProp.tabs) {\n var _loop_1 = function (key) {\n var index = parseInt(key, 10);\n var tab = this_1.parent.tabs.filter(function (e) {\n return e.id === contextualTab.tabs[parseInt(index.toString(), 10)].id;\n })[0];\n this_1.parent.updateTab(tab);\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp.tabs); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n }\n };\n return RibbonContextualTab;\n}());\nexport { RibbonContextualTab };\n","import { getGroup, getItem } from '../base/utils';\nimport { getIndex } from '../base/index';\nimport * as constants from '../base/constant';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { getInstance, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the keytip of Ribbon.\n */\nvar RibbonKeyTip = /** @class */ (function () {\n function RibbonKeyTip(parent) {\n this.isKeytipPopupOpen = false;\n this.parent = parent;\n }\n RibbonKeyTip.prototype.getModuleName = function () {\n return 'ribbonKeyTip';\n };\n RibbonKeyTip.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the keytips.\n *\n * @param {string} key - get's the keytip type.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.createKeytip = function (key) {\n if (this.parent.keyTipElements) {\n var keytipData = void 0;\n if (key === 'tab') {\n for (var i = 0; i < this.parent.tabs.length; i++) {\n if (this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n keytipData = this.parent.keyTipElements[parseInt(i.toString(), 10)][\"\" + key];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'tab', 'center', 'bottom', true);\n }\n }\n if (this.parent.keyTipElements['filemenu']) {\n keytipData = this.parent.keyTipElements['filemenu'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'filemenu');\n }\n if (this.parent.keyTipElements['backstage']) {\n keytipData = this.parent.keyTipElements['backstage'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'backstage');\n }\n if (this.parent.keyTipElements['collapse']) {\n keytipData = this.parent.keyTipElements['collapse'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'collapse');\n }\n if (this.parent.keyTipElements['taboverflow']) {\n keytipData = this.parent.keyTipElements['taboverflow'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'taboverflow');\n }\n }\n else if (key === 'popupitem') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['popupitem']) {\n var popupKeyTipData = this.parent.keyTipElements[this.parent.selectedTab]['popupitem'];\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['popupitem']).length; i++) {\n this.createKeyTipElement((popupKeyTipData[parseInt(i.toString(), 10)].id), popupKeyTipData[parseInt(i.toString(), 10)].keyTip, 'popupitem', 'left', 'top', false, true);\n }\n }\n }\n else if (key === 'backstageMenu') {\n if (this.parent.keyTipElements['backstageMenu']) {\n var backstageKeyTipData = this.parent.keyTipElements['backstageMenu'];\n for (var i = 0; i < Object.keys(this.parent.keyTipElements['backstageMenu']).length; i++) {\n this.createKeyTipElement((backstageKeyTipData[parseInt(i.toString(), 10)].id), backstageKeyTipData[parseInt(i.toString(), 10)].keyTip, 'backstageMenu', 'left', 'center');\n }\n }\n }\n else if (key === 'grpoverflowpopup' && this.parent.activeLayout === 'Classic') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpoverflowpopup']) {\n this.calculateItemPosition(key);\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['launcher']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['launcher']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['launcher'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'launcher', 'center', 'bottom', false, true);\n }\n }\n }\n else {\n this.calculateItemPosition(key);\n if (this.parent.activeLayout === 'Classic') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['launcher']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['launcher']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['launcher'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'launcher');\n }\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'grpoverflow');\n }\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n if (this.parent.keyTipElements['overflowbtn']) {\n keytipData = this.parent.keyTipElements['overflowbtn'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'overflowbtn');\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'grpofbtn');\n }\n }\n }\n }\n }\n };\n RibbonKeyTip.prototype.calculateItemPosition = function (key, isMethod, keyTip) {\n if (isMethod === void 0) { isMethod = false; }\n var xOffset;\n var yOffset;\n var keytipData = this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)][\"\" + key];\n if (keytipData) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)][\"\" + key]).length; i++) {\n if ((isMethod && (keytipData[parseInt(i.toString(), 10)].keyTip === keyTip)) || !isMethod) {\n var itemID = keytipData[parseInt(i.toString(), 10)].id;\n if (keytipData[parseInt(i.toString(), 10)].id.indexOf('_grpbtn') !== -1) {\n itemID = keytipData[parseInt(i.toString(), 10)].id.replace(/_grpbtn\\d+/, '');\n }\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemProp && itemProp.group.orientation === 'Column' && itemProp.collection.items.length > 1 && this.parent.activeLayout !== 'Simplified') {\n if (itemProp.itemIndex === 0) {\n xOffset = 'center';\n yOffset = 'top';\n }\n else if (itemProp.itemIndex === 1) {\n xOffset = 'center';\n yOffset = 'center';\n }\n else {\n xOffset = 'center';\n yOffset = 'bottom';\n }\n }\n else if (itemProp && itemProp.group.orientation === 'Row' && itemProp.group.collections.length > 1 && this.parent.activeLayout !== 'Simplified') {\n if (itemProp.collectionIndex === 0) {\n xOffset = 'center';\n yOffset = 'top';\n }\n else {\n xOffset = 'center';\n yOffset = 'bottom';\n }\n }\n if (key === 'item') {\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, key, xOffset, yOffset);\n }\n else {\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, key, xOffset, yOffset, false, true);\n }\n }\n }\n }\n };\n RibbonKeyTip.prototype.createKeyTipElement = function (id, keyTip, type, xOffset, yOffset, isTab, isPopUpItem) {\n if (xOffset === void 0) { xOffset = 'center'; }\n if (yOffset === void 0) { yOffset = 'bottom'; }\n if (isTab === void 0) { isTab = false; }\n if (isPopUpItem === void 0) { isPopUpItem = false; }\n var keyEle = document.querySelector('#' + id);\n var isPopUpPresent = false;\n var splitBtnID;\n if (isTab) {\n keyEle = document.querySelector('#' + id + constants.HEADER_ID);\n }\n if (keyEle) {\n if (keyEle.closest('.e-ribbon-group-overflow-ddb')) {\n isPopUpPresent = true;\n }\n if ((isTab && isPopUpItem) && keyEle.closest('.e-toolbar-pop')) {\n isPopUpPresent = true;\n }\n if (keyEle.closest('.e-split-btn-wrapper')) {\n var splitBtn = keyEle.closest('.e-split-btn-wrapper');\n splitBtnID = splitBtn.closest('.e-ribbon-item').id;\n }\n else {\n if (keyEle.closest('.e-colorpicker-wrapper')) {\n keyEle = keyEle.closest('.e-colorpicker-wrapper');\n splitBtnID = keyEle.closest('.e-ribbon-item').id;\n }\n }\n }\n if ((keyEle && keyEle.offsetParent) || (isTab && isPopUpItem)) {\n if ((isPopUpItem && isPopUpPresent) || !isPopUpItem) {\n var keytipElement = this.parent.createElement('div', {\n className: constants.RIBBON_KEYTIP,\n id: id + constants.RIBBON_KEYTIP_ID,\n attrs: { role: 'dialog', 'aria-label': 'ribbon-keytip' }\n });\n document.body.append(keytipElement);\n var keytipPopup = new Popup(keytipElement, {\n relateTo: '#' + (isTab ? id + constants.HEADER_ID : splitBtnID ? splitBtnID : id),\n content: keyTip,\n collision: { X: 'fit', Y: 'flip' },\n targetType: 'relative',\n position: { X: xOffset, Y: yOffset },\n enableRtl: this.parent.enableRtl,\n actionOnScroll: 'hide'\n });\n keytipPopup.show();\n this.calculateKeyTipPosition(keyEle, keytipElement, type, yOffset);\n this.parent.isKeytipOpen = true;\n }\n }\n };\n RibbonKeyTip.prototype.calculateKeyTipPosition = function (itemEle, keytipElement, type, yOffset) {\n var position = itemEle.getBoundingClientRect();\n if (type === 'backstageMenu') {\n keytipElement.style.top = position.top + ((keytipElement.offsetHeight) / 2) + 'px';\n keytipElement.style.left = position.left + (itemEle.offsetWidth / 5) + 'px';\n }\n else {\n if (type !== 'popupitem') {\n keytipElement.style.left = position.left + (position.width - keytipElement.offsetWidth) / 2 + 'px';\n }\n }\n if (type === 'filemenu' || type === 'backstage') {\n keytipElement.style.top = position.top + ((itemEle.offsetHeight - (itemEle.offsetHeight / 3)) + (keytipElement.offsetHeight / 6)) + 'px';\n }\n else if ((type === 'item' && yOffset === 'top')) {\n keytipElement.style.top = (position.top - (itemEle.offsetHeight) / 2) + 'px';\n }\n };\n /**\n * Performs keytip action.\n *\n * @param {string} keyPress - Gets the keytip text.\n * @param {boolean} isMethod - Gets the isMethod.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.keytipPress = function (keyPress, isMethod) {\n var _this = this;\n if (isMethod === void 0) { isMethod = false; }\n this.isKeytipPresent = false;\n for (var i = 0; ((i < Object.keys(this.parent.keyTipElements).length) && !this.isKeytipPresent); i++) {\n if (this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n for (var j = 0; ((j < Object.keys(this.parent.keyTipElements[parseInt(i.toString(), 10)]).length) &&\n !this.isKeytipPresent); j++) {\n var keytipData = this.parent.keyTipElements[parseInt(i.toString(), 10)][Object.\n keys(this.parent.keyTipElements[parseInt(i.toString(), 10)])[parseInt(j.toString(), 10)]];\n for (var k = 0; ((k < Object.keys(keytipData).length) && !this.isKeytipPresent); k++) {\n if (keyPress.toUpperCase() === keytipData[parseInt(k.toString(), 10)].keyTip) {\n var keyTipElement = document.querySelector('#' + keytipData[parseInt(k.toString(), 10)].id + constants.RIBBON_KEYTIP_ID);\n if (keyTipElement || isMethod) {\n this.isKeytipPresent = true;\n this.removeKeytip();\n if (keytipData[parseInt(k.toString(), 10)].type === 'tab') {\n if (i !== this.parent.selectedTab) {\n this.parent.tabObj.select(i);\n setTimeout(function () {\n var tabOverflow = _this.parent.tabObj.element.querySelector('.e-nav-active');\n if (tabOverflow) {\n tabOverflow.click();\n }\n _this.createKeytip('item');\n }, 600);\n }\n else {\n this.createKeytip('item');\n }\n }\n else {\n if (keytipData[parseInt(k.toString(), 10)].type === 'item' || keytipData[parseInt(k.toString(), 10)].type === 'grpoverflowpopup' || keytipData[parseInt(k.toString(), 10)].type === 'popupitem') {\n if (document.getElementById(keytipData[parseInt(k.toString(), 10)].id) && document.getElementById(keytipData[parseInt(k.toString(), 10)].id).classList.contains('e-ribbon-group-button')) {\n document.getElementById(keytipData[parseInt(k.toString(), 10)].id).click();\n }\n else {\n var itemProp = void 0;\n if ((keytipData[parseInt(k.toString(), 10)].id).indexOf('_popupButton') !== -1) {\n var galleryID = keytipData[parseInt(k.toString(), 10)].id.replace(/_popupButton/g, '');\n itemProp = getItem(this.parent.tabs, galleryID);\n }\n else {\n itemProp = getItem(this.parent.tabs, keytipData[parseInt(k.toString(), 10)].id);\n }\n if (!isMethod || (isMethod && itemProp.tabIndex === this.parent.selectedTab)) {\n this.clickItems(itemProp, keytipData, k, false, isMethod);\n }\n }\n }\n else if (keytipData[parseInt(k.toString(), 10)].type === 'grpoverflow' || keytipData[parseInt(k.toString(), 10)].type === 'grpofbtn' || keytipData[parseInt(k.toString(), 10)].type === 'launcher') {\n var keyEle = document.querySelector('#' + keytipData[parseInt(k.toString(), 10)].id);\n this.removeKeytip();\n if (keyEle) {\n var groupID = keytipData[parseInt(k.toString(), 10)].id;\n if (isMethod) {\n if (keytipData[parseInt(k.toString(), 10)].id.indexOf('_launcher') !== -1 || keytipData[parseInt(k.toString(), 10)].id.indexOf('_sim_grp_overflow') !== -1 || keytipData[parseInt(k.toString(), 10)].id.indexOf('_overflow_dropdown') !== -1) {\n groupID = keytipData[parseInt(k.toString(), 10)].id.replace(/_launcher|_sim_grp_overflow|_overflow_dropdown/g, '');\n var itemProp = getGroup(this.parent.tabs, groupID);\n if (itemProp.tabIndex === this.parent.selectedTab) {\n this.clickItems(itemProp, keytipData, k, true, isMethod, keyEle);\n }\n }\n }\n else {\n this.clickItems(null, keytipData, k, true, isMethod, keyEle);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (this.parent.keyTipElements) {\n this.commonItemsKeyTipPress(keyPress, Object.keys(this.parent.keyTipElements)[parseInt(i.toString(), 10)], isMethod);\n }\n }\n }\n };\n RibbonKeyTip.prototype.clickItems = function (itemProp, keytipData, k, isGroupItems, isMethod, keyEle) {\n if (isGroupItems) {\n keyEle.click();\n if (!(keytipData[parseInt(k.toString(), 10)].type === 'launcher')) {\n this.isKeytipPopupOpen = true;\n if (keytipData[parseInt(k.toString(), 10)].type === 'grpoverflow') {\n this.createKeytip('grpoverflowpopup');\n }\n else {\n this.createKeytip('popupitem');\n }\n }\n }\n else {\n var itemID = keytipData[parseInt(k.toString(), 10)].id;\n if (document.querySelector('#' + itemID) && isMethod) {\n if (this.parent.activeLayout === 'Simplified') {\n if (document.querySelector('#' + itemID).closest('#' + itemProp.group.id + '_sim_grp_overflow-popup') && document.querySelector('#' + itemID).closest('#' + itemProp.group.id + '_sim_grp_overflow-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + itemProp.group.id + '_sim_grp_overflow').click();\n }\n else if (document.querySelector('#' + itemID).closest('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID + '-popup') && document.querySelector('#' + itemID).closest('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID + '-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID).click();\n }\n }\n else {\n if (document.querySelector('#' + itemID).closest('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID + '-popup') && document.querySelector('#' + itemID).closest('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID + '-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID).click();\n }\n }\n }\n var itemType = this.parent.getItemModuleName(itemProp.item);\n switch (itemType) {\n case 'btn':\n this.parent.ribbonButtonModule.click(itemID);\n break;\n case 'dropdown-btn':\n this.parent.ribbonDropDownModule.toggle(itemID);\n break;\n case 'split-btn':\n this.parent.ribbonSplitButtonModule.toggle(itemID);\n break;\n case 'checkbox':\n this.parent.ribbonCheckBoxModule.click(itemID);\n break;\n case 'colorpicker':\n this.parent.ribbonColorPickerModule.toggle(itemID);\n break;\n case 'combobox': {\n var itemEle_1 = document.querySelector('#' + itemID);\n if (this.isInteractableElement(itemEle_1)) {\n setTimeout(function () {\n itemEle_1.focus();\n }, 100);\n }\n break;\n }\n case 'gallery': {\n var galleryEle = document.querySelector('#' + itemID);\n if (this.isInteractableElement(galleryEle)) {\n galleryEle.click();\n }\n break;\n }\n case 'template': {\n var templateEle = document.querySelector('#' + itemID);\n if (this.isInteractableElement(templateEle)) {\n templateEle.focus();\n }\n break;\n }\n case 'group-btn': {\n var itemElement = document.querySelector('#' + itemID);\n if (this.isInteractableElement(itemElement)) {\n var item = getInstance(itemElement, DropDownButton);\n item.toggle();\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n if (itemProp.item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip) {\n this.createKeyTipElement(itemID + (constants.RIBBON_GROUP_BUTTON_ID + i), itemProp.item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip, 'item');\n }\n }\n }\n break;\n }\n }\n }\n };\n RibbonKeyTip.prototype.isInteractableElement = function (element) {\n return element && !element.closest('.e-ribbon-item').classList.contains('e-disabled');\n };\n RibbonKeyTip.prototype.commonItemsKeyTipPress = function (keyPress, key, isMethod) {\n var _this = this;\n if (this.parent.keyTipElements[\"\" + key]) {\n var isKeyPressed = false;\n var keytipData = this.parent.keyTipElements[\"\" + key];\n var keyEle = void 0;\n var keytipElement = void 0;\n if (keytipData) {\n if (key === 'backstageMenu') {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[\"\" + key]).length; i++) {\n if (keytipData[parseInt(i.toString(), 10)].keyTip === keyPress.toUpperCase()) {\n keyEle = document.querySelector('#' + keytipData[parseInt(i.toString(), 10)].id);\n keytipElement = document.querySelector('#' + keyEle.id + constants.RIBBON_KEYTIP_ID);\n if (keytipElement || isMethod) {\n isKeyPressed = true;\n if (isMethod && document.querySelector('.e-ribbon-backstage-popup').classList.contains('e-popup-close')) {\n this.parent.tabObj.element.querySelector('.e-ribbon-backstage').click();\n }\n break;\n }\n }\n }\n }\n else {\n if (keytipData[0] && keytipData[0].keyTip === keyPress.toUpperCase()) {\n keyEle = document.querySelector('#' + keytipData[0].id);\n keytipElement = document.querySelector('#' + keytipData[0].id + constants.RIBBON_KEYTIP_ID);\n if (keytipElement || isMethod) {\n isKeyPressed = true;\n }\n }\n }\n }\n if (isKeyPressed) {\n this.removeKeytip();\n this.isKeytipPresent = true;\n if (keyEle) {\n keyEle.click();\n if (key === 'backstage') {\n this.createKeytip('backstageMenu');\n }\n else if (key === 'overflowbtn') {\n this.isKeytipPopupOpen = true;\n this.createKeytip('popupitem');\n }\n else if (key === 'taboverflow') {\n setTimeout(function () {\n for (var i = 0; i < Object.keys(_this.parent.keyTipElements).length; i++) {\n if (_this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n var keytipData_1 = _this.parent.keyTipElements[parseInt(i.toString(), 10)]['tab'];\n _this.createKeyTipElement((keytipData_1[0].id), keytipData_1[0].keyTip, 'tab', 'center', 'bottom', true, true);\n }\n }\n }, 600);\n }\n }\n }\n }\n };\n /**\n * Removes the keytip.\n *\n * @param {string} key - Gets the keyboard key element.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.removeKeytip = function (key) {\n var _this = this;\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n var isKeyTipExist = false;\n this.parent.keysPress = '';\n var _loop_1 = function (i) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (key === 'Escape' && this_1.parent.keyTipElements && this_1.parent.keyTipElements[this_1.parent.selectedTab]) {\n for (var j = 0; j < Object.keys(this_1.parent.keyTipElements[this_1.parent.selectedTab]).length; j++) {\n var keyText = (Object.keys(this_1.parent.keyTipElements[parseInt(this_1.parent.selectedTab.toString(), 10)]))[parseInt(j.toString(), 10)];\n var keyTipElement = this_1.parent.keyTipElements[parseInt(this_1.parent.selectedTab.toString(), 10)];\n var index = getIndex(keyTipElement[\"\" + keyText], function (e) {\n return e.id +\n constants.RIBBON_KEYTIP_ID === keyTipItems[parseInt(i.toString(), 10)].id;\n });\n if (index !== -1) {\n if ((keyText === 'item' && !(this_1.isKeytipPopupOpen)) || (keyText === 'grpoverflow' && this_1.parent.activeLayout === 'Classic')) {\n this_1.createKeytip('tab');\n key = '';\n isKeyTipExist = true;\n break;\n }\n else if (this_1.isKeytipPopupOpen) {\n if ((keyText === 'popupitem' && this_1.parent.activeLayout === 'Simplified') || (keyText === 'grpoverflowpopup' && this_1.parent.activeLayout === 'Classic')) {\n this_1.createKeytip('item');\n key = '';\n isKeyTipExist = true;\n break;\n }\n }\n }\n }\n for (var n = 0; n < Object.keys(this_1.parent.keyTipElements).length; n++) {\n if (this_1.parent.keyTipElements[parseInt(n.toString(), 10)]) {\n var keytipData = this_1.parent.keyTipElements[parseInt(n.toString(), 10)]['tab'];\n for (var j = 0; j < Object.keys(keytipData).length; j++) {\n if (keyTipItem.id === keytipData[0].id + constants.RIBBON_KEYTIP_ID) {\n if (document.querySelector('#' + keytipData[0].id + constants.HEADER_ID).closest('.e-toolbar-pop')) {\n var tabOverflow = this_1.parent.tabObj.element.querySelector('.e-nav-active');\n tabOverflow.click();\n setTimeout(function () {\n _this.createKeytip('tab');\n }, 600);\n key = '';\n isKeyTipExist = true;\n break;\n }\n }\n }\n if (isKeyTipExist) {\n break;\n }\n }\n }\n if (!isKeyTipExist && this_1.parent.keyTipElements['backstageMenu']) {\n var index = getIndex(this_1.parent.keyTipElements['backstageMenu'], function (e) { return e.id + constants.RIBBON_KEYTIP_ID === keyTipItems[parseInt(i.toString(), 10)].id; });\n if (index !== -1) {\n this_1.createKeytip('tab');\n key = '';\n isKeyTipExist = true;\n }\n }\n }\n if (keyTipItem) {\n remove(keyTipItem);\n }\n };\n var this_1 = this;\n for (var i = 0; i < keyTipItems.length; i++) {\n _loop_1(i);\n }\n this.isKeytipPopupOpen = false;\n if (!isKeyTipExist) {\n this.parent.isKeytipOpen = false;\n }\n };\n /**\n * Shows the Keytip dynamically.\n *\n * @param {string} keyAction - Item for which the tooltip is to be shown.\n * @returns {void}\n */\n RibbonKeyTip.prototype.showKeyTips = function (keyAction) {\n if (this.parent.enableKeyTips) {\n if (keyAction) {\n this.keytipPress(keyAction, true);\n }\n else {\n this.createKeytip('tab');\n }\n }\n };\n /**\n * Hides the Keytip dynamically.\n *\n * @returns {void}\n */\n RibbonKeyTip.prototype.hideKeyTips = function () {\n this.removeKeytip();\n };\n return RibbonKeyTip;\n}());\nexport { RibbonKeyTip };\n"],"names":["RibbonLayout","ItemOrientation","RibbonItemSize","DisplayMode","RibbonItemType","RibbonGroupButtonSelection","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","_super","__extends","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","RibbonButtonSettings","ChildProperty","setProperties","prop","muteOnChange","call","Property","Event","apply","RibbonCheckBoxSettings","RibbonColorPickerSettings","RibbonComboBoxSettings","Complex","text","value","iconCss","groupBy","FieldSettings","RibbonDropDownSettings","Collection","Item","RibbonSplitButtonSettings","RibbonTooltip","RibbonGroupButtonItem","RibbonGroupButtonSettings","RibbonGalleryItem","RibbonGalleryGroup","RibbonGallerySettings","RibbonItem","Medium","Small","Large","Auto","RibbonCollection","RibbonGroup","RibbonTab","FileMenuSettings","MenuItem","MenuAnimationSettings","BackstageBackButton","BackstageItem","BackStageMenu","RibbonContextualTabSettings","ITEM_VERTICAL_CENTER","EXPAND_COLLAPSE_ICON","BACKSTAGE_CLOSE_ICON","OVERFLOW_ICON","VERTICAL_DDB","DISABLED_CSS","RTL_CSS","RIBBON_HOVER","RIBBON_CONTROL","RIBBON_POPUP_CONTROL","RIBBON_POPUP_OPEN","RIBBON_KEYTIP","SPACE","HORIZONTAL_SCROLLBAR","HIDE_CSS","RIBBON_TAB","RIBBON_CONTEXTUAL_TAB","RIBBON_TAB_ACTIVE","RIBBON_TAB_ITEM","RIBBON_COLLAPSE_BUTTON","RIBBON_EXPAND_BUTTON","RIBBON_COLLAPSIBLE","RIBBON_OVERALL_OF_BUTTON","RIBBON_GROUP_OF_BUTTON","RIBBON_OVERFLOW_TARGET","RIBBON_OVERFLOW","TAB_CONTENT","RIBBON_MINIMIZE","RIBBON_GROUP","RIBBON_SINGLE_BUTTON_SELECTION","RIBBON_MULTIPLE_BUTTON_SELECTION","RIBBON_GROUP_BUTTON","RIBBON_GROUP_BUTTON_OVERFLOW_POPUP","RIBBON_GROUP_BUTTON_CONTENT","RIBBON_GROUP_CONTAINER","RIBBON_OF_TAB_CONTAINER","RIBBON_OF_GROUP_CONTAINER","RIBBON_GROUP_CONTENT","RIBBON_GROUP_HEADER","RIBBON_OVERFLOW_HEADER","RIBBON_GROUP_OVERFLOW","RIBBON_GROUP_OVERFLOW_DDB","RIBBON_LAUNCHER","RIBBON_LAUNCHER_ICON_ELE","RIBBON_LAUNCHER_ICON","RIBBON_COLLECTION","RIBBON_ITEM","RIBBON_ROW","RIBBON_COLUMN","RIBBON_LARGE_ITEM","RIBBON_MEDIUM_ITEM","RIBBON_SMALL_ITEM","RIBBON_CONTENT_HEIGHT","DROPDOWNBUTTON_HIDE","RIBBON_TEMPLATE","RIBBON_HELP_TEMPLATE","RIBBON_TOOLTIP","RIBBON_TOOLTIP_TARGET","RIBBON_TOOLTIP_TITLE","RIBBON_TOOLTIP_CONTENT","RIBBON_TOOLTIP_ICON","RIBBON_TOOLTIP_CONTAINER","RIBBON_TEXT_CONTAINER","RIBBON_SIMPLIFIED_MODE","RIBBON_BACKSTAGE_POPUP","RIBBON_BACKSTAGE_OPEN","RIBBON_BACKSTAGE_CONTENT","RIBBON_BACKSTAGE","RIBBON_BACKSTAGE_MENU","RIBBON_BACKSTAGE_TEMPLATE","RIBBON_BACKSTAGE_MENU_WRAPPER","RIBBON_BACKSTAGE_ITEMS_WRAPPER","RIBBON_BACKSTAGE_TEXT_MENU","TAB_ID","COLLECTION_ID","COLLAPSE_BUTTON_ID","OVRLOF_BUTTON_ID","GROUPOF_BUTTON_ID","HEADER_ID","LAUNCHER_ID","CONTENT_ID","CONTAINER_ID","OVERFLOW_ID","DROPDOWN_ID","RIBBON_FILE_MENU_ID","RIBBON_BACKSTAGE_MENU_ID","RIBBON_BACKSTAGE_POPUP_ID","RIBBON_FILE_MENU_LIST","RIBBON_MENU_LIST","RIBBON_FOOTER_MENU_LIST","RIBBON_HELP_PANE_TEMPLATE_ID","RIBBON_GROUP_BUTTON_ID","RIBBON_KEYTIP_ID","RIBBON_FILE_MENU_WIDTH","RIBBON_HELP_PANE_TEMPLATE_WIDTH","RibbonButton","getModuleName","destroy","parent","createButton","item","itemEle","_this","buttonEle","createElement","id","btnSettings","appendChild","buttonSettings","Button","locale","enableRtl","enablePersistence","iconPosition","activeSize","disabled","cssClass","trim","content","isPrimary","isToggle","created","htmlAttributes","setCustomAttributes","onclick","e","clicked","setAttribute","addOverFlowEvents","overflowButton","querySelector","buttonObj","type","toString","getComponent","element","classList","contains","toggle","removeOverFlowEvents","split","filter","join","click","controlId","getItemElement","updateButton","itemProp","getItem","tabs","merge","add","updateButtonSize","RibbonCheckBox","createCheckBox","inputEle","checkBoxSettings","CheckBox","checked","label","labelPosition","change","checkBoxObj","dataBind","updateCheckBox","RibbonColorPicker","createColorPicker","colorPickerSettings","colorPicker","ColorPicker","columns","enableOpacity","mode","modeSwitcher","noColor","presetColors","showButtons","beforeClose","parentElement","remove","beforeOpen","beforeTileRender","open","select","wrapper","EventHandler","toggleWrapperHover","bind","isAdd","colorPickerEle","activeLayout","className","innerHTML","insertBefore","firstChild","colorPickerObj","splitBtn","event","close","closest","getColorPickerObj","getValue","updateColorPicker","unwireColorPickerEvents","RibbonComboBox","createComboBox","comboBoxSettings","ComboBox","allowCustom","floatLabelType","ignoreAccent","ignoreCase","allowFiltering","autofill","dataSource","enabled","fields","filterType","footerTemplate","groupTemplate","headerTemplate","index","itemTemplate","noRecordsTemplate","placeholder","popupHeight","popupWidth","showClearButton","sortOrder","width","filtering","comboBoxObj","getComboBoxObj","query","hidePopup","showPopup","updateComboBox","RibbonDropDown","createDropDown","dropDownSettings","DropDownButton","closeActionEvents","items","createPopupOnClick","beforeItemRender","appendTo","dropdownElement","dropdown","createOverFlowDropDown","name","groupEle","overflowEle","args","cancel","isNullOrUndefined","createTooltip","onkeydown","itemIndex","keyActionHandler","comboBoxEle","controlElements","slice","querySelectorAll","templateElements","concat","comboBoxElements","parseInt","shiftKey","handleNavigation","updateItemIndex","focusLauncherIcon","launcherIconEle","groupContainer","preventDefault","focus","ribbonItem","removeOverFlowDropDown","Tooltip","getDDBItemElement","dropDown","getOverflowDropDownPopup","contentEle","tabIndex","groups","groupIndex","getDropDownObj","dropDownEle","addItems","Items","removeItems","isUniqueId","dropdownObj","updateDropDown","btnEle","control","updateDropDownSize","push","RibbonSplitButton","createSplitButton","splitButtonSettings","splitbutton","SplitButton","dropdownEle","stopImmediatePropagation","setContent","splitButtonEle","ddbId","getAttribute","popupEle","document","getSplitButtonObj","splitBtnObj","updateSplitButton","updateSplitButtonSize","getIndex","arr","condition","getTemplateFunction","template","compile","tempEle","tagName","outerHTML","tab","j","group","k","collections","collection","l","collectionIndex","getCollection","getGroup","destroyControl","moduleName","updateCommonProperty","commonProp","updateControlDisabled","disable","tabObj","Classic","displayOptions","ribbonDropDownModule","Simplified","enableGroupOverflow","constants.GROUPOF_BUTTON_ID","overflowDDB","isTooltipPresent","tooltip","title","setToolTipContent","tooltipData","tooltipContent","targetId","data","constants.RIBBON_TOOLTIP_CONTAINER","textContainer","append","header","constants.RIBBON_TOOLTIP_TITLE","constants.RIBBON_TEXT_CONTAINER","customCss","constants.RIBBON_TOOLTIP_ICON","constants.RIBBON_TOOLTIP_CONTENT","constants.RIBBON_TOOLTIP","ribbon","ribbonTooltip","constants.RIBBON_TOOLTIP_TARGET","beforeRender","windowCollision","destroyTooltip","updateTooltipProp","attributes","elementClass","replace","addClass","RibbonGroupButton","createGroupButton","itemElement","groupBtnSettings","groupButtonSettings","btnContainerEle","count","constants.RIBBON_GROUP_BUTTON_ID","groupButtonEle","constants.RIBBON_GROUP_BUTTON","constants.RIBBON_GROUP_BUTTON_CONTENT","selection","Single","constants.RIBBON_SINGLE_BUTTON_SELECTION","constants.RIBBON_MULTIPLE_BUTTON_SELECTION","selected","Multiple","grpBtnIndex","ribbonTooltipSettings","groupButtonClicked","dropdownIcon","activeEleCount","isSelected","dropDownPopup","addGroupButtonHeader","handleFocusState","handleGroupButtonNavigation","grpBtnSettings","previousItems","selectingItems","selectedItems","eventArgs","beforeClick","n","itemsCount","eventArgs_1","switchGroupButton","containerEle","itemID","groupButtonHeader","constants.HEADER_ID","targetEle","isOverflowPopup","constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP","isIconOnly","targetEle_1","constants.SPACE","children","overflowGroupButtonEle","destroyDropDown","updateGroupButtonSize","RibbonGallery","createGallery","gallerySettings","renderGalleryItems","createPopup","popup","Popup","popupID","isPopup","galleryContainerEle","galleryEle","galleryWrapper","isCollapsible","_loop_1","headerEle","isHeightDefined","this_1","itemHeight","attrs","tabindex","itemEventArgs","selectedItemIndex","setActiveState","currentTarget","onmouseover","hoverEventArgs","itemHover","itemWidth","style","height","flexFlow","popupTemplate","iconEle","createGalleryTemplate","createGalleryPopupTemplate","itemCount","isAdded","isReact","portals","undefined","setWrapperWidth","itemsWidth","isWidthApplied","marginWidth","galleryItemEle","offsetWidth","itemStyles","window","getComputedStyle","paddingWidth","parseFloat","paddingLeft","paddingRight","marginLeft","marginRight","setWrapperStyle","popupContainerItems","forEach","ele","checkAvailableHeight","activeContent","galleryWrapperItems","simplifiedItemsCount","isHeight","galleryWrapperHeight","offsetHeight","itemsValues","marginTop","marginBottom","checkCollision","offsetValue","windowWidth","innerWidth","screenWidth","Math","abs","paddingStyles","isCollideOccurs","popupItemStyles","round","setGalleryPopupHeight","top","popupTop","innerHeight","popupContainer","gallerypopupElement","body","relateTo","collision","X","Y","actionOnScroll","targetType","position","hide","switchGalleryItems","constants.CONTAINER_ID","galleryIcons","galleryContainer","selectedTab","constants.CONTENT_ID","popupButton","groupIconCss","popup_1","popupContainerEle_1","setFoucsToFirstItem","popupEvents","formatUnit","galleryDDBEle","isInteracted","previousItem","currentItem","selctedGalleryItem","popupGalleryItem","galleryItemPopup","galleryItem","getElementById","selectingEventArgs","beforeSelect","startsWith","selectedEventArgs","galleryPopupItems","isOpen","popupEventArgs","popupOpen","popupClose","offsetX","show","buttonPosition","getBoundingClientRect","left","showGalleryPopup","hideGalleryPopup","isDropdown","galleryItemsIndex","handleGalleryPopupNavigation","galleryPopupEle","code","templateName","templateFunction","isStringTemplate","registeredTemplate","ref","setValue","Ribbon_1","Ribbon","Component","render","initialize","preRender","keysPress","idIndex","initialPropsData","hiddenElements","keyTipElements","hiddenGroups","itemsModel","targetTabs","isAddRemove","isUpdateItems","keyConfigs","leftarrow","rightarrow","shiftTab","getPersistData","addOnPersist","requiredModules","modules","canInjectColorPickerModule","member","canInjectGalleryModule","Gallery","backStageMenu","visible","fileMenu","menuItems","contextualTabs","enableKeyTips","getUniqueID","constants.RTL_CSS","renderTabs","ribbonContextualTabModule","addContextualTabs","ribbonFileMenuModule","createFileMenu","ribbonBackstageModule","createBackStage","createHelpPaneTemplate","refreshOverflow","addTabOverflowKeyTip","isKeytipOpen","wireEvents","wireKeyboardEvent","currentControlIndex","resizeHandler","keytipActionHandler","mouseEventHandler","keyboardModuleRibbon","KeyboardEvents","keyAction","eventName","galleryElements","ribbonControls","action","prevGroupId","prevGroupContainer","constants.RIBBON_GROUP_CONTAINER","elem","checkOverflow","scrollModule","scrollEle","constants.HORIZONTAL_SCROLLBAR","scrollStep","activePopup","getInstance","ribbonKeyTipModule","removeKeytip","isKeyTipPresent","keyPress","altKey","backstagePopup","hideBackstage","createKeytip","keyTipItems","toLowerCase","keytipPress","checkKeyTipPresent","keyTip","keyTipItem","addKeyTip","isKeyTipExist","keys","keytipData","tabsInternal","checkID","tabEle","constants.TAB_ID","tabItems","validateItemSize","createTabItems","toolbarEle","Tab","constants.RIBBON_TAB","selectedItem","overflowMode","tabCreated","ribbonTabSelected","selecting","ribbonTabSelecting","animation","tabAnimation","setProperty","constants.RIBBON_FILE_MENU_WIDTH","constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH","Toolbar","isMinimized","constants.RIBBON_MINIMIZE","minimize","val","trigger","display","refreshLayout","toggleLayout","switchLayout","hideLayoutSwitcher","addExpandCollapse","renderInitialTab","preventFocus","selectedTabId","selectedIndex","selectedContent","isContextual","constants.RIBBON_GROUP","elements","createGroups","isContextualTab","updateSelectedState","previousIndex","calculateHiddenElementsWidth","updateItem","splice","ribbonGalleryModule","ofTabContainer","overflowTarget","constants.RIBBON_TAB_ACTIVE","activeTab","constants.OVERFLOW_ID","constants.HIDE_CSS","checkOverflowHiddenItems","tabID","isBreak","tabContent","constants.TAB_CONTENT","isOverFlow","checkGroupShrinking","createOverflowDropdown","checkSimplifiedItemShrinking","createSimplfiedOverflow","HScroll","destroyScroll","removeOverflowDropdown","checkGroupExpanding","removeSimplfiedOverflow","checkSimplifiedItemExpanding","tabOverflow","itemContainer","allowedSizes","setItemSize","valString","removeAttribute","orderedGroups","getGroupResizeOrder","isGroupUpdated","collectionEle","Overflow","groupHidden","itemHidden","isAllItemHidden","isEmptyCollection_1","groupItems","i_1","indexOf","calculateOverflowItemsWidth","calculateMediumDataWidth","i_2","createOverflowPopup","DropDown","GroupButton","updatePopupItems","constants.RIBBON_ITEM","itemsLength","checkEmptyCollection","isEmptyCollection","isGroupOF","isMenu","isLeft","removeProperty","isClear","flag","overflowtarget","overflowDDBEle","ofGroupContainer","groupItemEle","groupElement","isGroupHidden","widthDifference","checkWidthDifference","removeOverflowEvent","childElementCount","isHeaderVisible","removeOverflowButton","groupId","isHidden","isItemHidden","overflowTab","groupTabContainer","groupHeader","isResize","addOverflowButton","constants.RIBBON_GROUP_OF_BUTTON","overflowBtnTarget","overflowHeader","groupHeader_1","constants.RIBBON_OVERFLOW_HEADER","createGroupContainer","createOfTabContainer","constants.OVRLOF_BUTTON_ID","collapseButton","constants.RIBBON_OVERALL_OF_BUTTON","addOverflowEvents","ribbonButtonModule","ribbonSplitButtonModule","ribbonCheckBoxModule","ribbonColorPickerModule","ribbonComboBoxModule","ribbonGroupButtonModule","constants.RIBBON_OF_TAB_CONTAINER","isLarge","checkLargeToMedium","checkMediumToSmall","checkValidCollectionLength","ind","checkClassicCollection","isIncrement","checkClassicItem","shouldSkip","isCollapsed","canReduceCollection","canReduceItem","createShrinkEle","firstItem","start","end","shrinkEle","constants.RIBBON_ROW","data-start","data-end","moveItemToColumn","moveCollectionToColumn","orientation","Column","m","shrinkColumns","reduceItemsToSmall","middle","reduce","ele_1","reduceCollectionsToSmall","ele_2","setWidth","classicItems","shrinkColumn","isSmall","checkSmallToMedium","checkMediumToLarge","shouldClear","expandItemToMedium","parentEle","ele_4","expandCollectionsToMedium","ele_5","Row","expandItemsToLarge","container","ele_6","insertAdjacentElement","expandCollectionsToLarge","ele_7","handleContentSize","isRemoveOverflow","constants.RIBBON_GROUP_CONTENT","constants.RIBBON_CONTENT_HEIGHT","Template","createTemplateContent","constants.RIBBON_LARGE_ITEM","constants.RIBBON_MEDIUM_ITEM","constants.RIBBON_SMALL_ITEM","collapseOrder","groupOverFlow","constants.RIBBON_GROUP_OVERFLOW","constants.DROPDOWN_ID","i_3","expandOrder","this_2","state_1","removeDropdown","isCollapse","isUndefined","sort","a","priority","reverse","clearOverflowDropDown","nextTabId","selectingItem","previousTabId","nextIndex","selectedTabContent","this_3","_loop_3","ribbonTab","ondblclick","constants.RIBBON_TAB_ITEM","constants.RIBBON_SIMPLIFIED_MODE","btnId","isGroupOf","constants.RIBBON_OVERFLOW_TARGET","overFlowCss","constants.OVERFLOW_ICON","constants.DROPDOWNBUTTON_HIDE","constants.RIBBON_GROUP_OVERFLOW_DDB","ribbonArgs","constants.RIBBON_POPUP_CONTROL","constants.RIBBON_OVERFLOW","upDownKeyHandler","getElementsByClassName","currentItemIndex","findDisabledItem","templateEle","itemType","controlItem","checkBoxEle","checkBox","isIncrease","constants.RIBBON_OF_GROUP_CONTAINER","ofGroupHeader","constants.RIBBON_COLLAPSE_BUTTON","constants.EXPAND_COLLAPSE_ICON","constants.COLLAPSE_BUTTON_ID","aria-label","role","constants.RIBBON_COLLAPSIBLE","constants.RIBBON_EXPAND_BUTTON","layoutSwitcherKeyTip","removeExpandCollapse","reRenderTabs","_i","_a","isNewTab","destroyTabItems","innerText","_b","groups_1","_c","_d","_e","_f","destroyFunction","groupList","i_4","alignType","i_5","groupContent","constants.RIBBON_COLUMN","groupCollection","itemList","itemEle_1","size","createItems","i_6","constants.RIBBON_GROUP_HEADER","ele_8","itemsize","createLauncherIcon","launcherIcon","constants.RIBBON_LAUNCHER_ICON_ELE","launcherIconCss","constants.RIBBON_LAUNCHER_ICON","constants.LAUNCHER_ID","constants.RIBBON_LAUNCHER","launcherIconClicked","launcherIconKeyTip","groupElements","showLauncherIcon","createCollection","isItemsHidden","initialProps","updateGroupProps","disabledGroups","collectionList","ribbonitem","sizeVal","collectionElements","constants.RIBBON_COLLECTION","createRibbonItem","itemElements","constants.DISABLED_CSS","i_7","hiddenItems","helpPaneTemplate","clearTemplate","ribbonTempEle","constants.RIBBON_HELP_TEMPLATE","constants.RIBBON_HELP_PANE_TEMPLATE_ID","after","renderReactTemplates","constants.RIBBON_TEMPLATE","renderItemTemplate","list","initId","constants.COLLECTION_ID","htmlAttrID","listitem","hasHtmlAtrrID","listItem","setCommonProperties","getItemModuleName","i_8","i_9","removeLauncherIcon","containerId","this_4","_loop_4","groupButtonID_1","galleryPopupBtn","clearOverflowResize","selectTab","tabId","showTab","showHideTab","hideTab","contextualTab_1","isTabHidden","this_5","_loop_5","index_1","enableTab","enableDisableTab","disableTab","tbItems","addTab","isAfter","tabItem","removeTab","groups_2","addGroup","ribbonGroups","removeGroup","removeItemElement","groupID","hideGroup","showHideGroup","showGroup","grpContainer","updateHiddenElements","updateInitialProps","checkHiddenElements","checkHiddenItems","hiddenProps","updateItemsSimplifiedWidth","out_i_1","this_6","_loop_6","hiddenEle","hiddenWidth","mediumDataItems","overflowItems","selectedOFTab","ofTab","hasAttribute","groupOFButton","i_10","previousWidth","hiddenItem","i_11","disableGroup","enableDisableGroup","enableGroup","isDisabled","addCollection","ribbonCollections","collection_1","removeCollection","collectionId","ribbonGroup","addItem","ribbonItems","item_1","removeItem","itemId","ribbonCollection","hideItem","showHideItem","showItem","isInsert","checkOverflowItems","updateTab","groups_3","updateGroup","removeCss","match","removeClass","ribbongroup","updateCollection","ribboncollection","enableDisableItem","enableItem","disableItem","isOverflow","isUpdated","toggleAttribute","unwireEvents","refreshing","onPropertyChanged","newProp","oldProp","toolbarItem","updateContextualTabs","updateFileMenu","updateBackStageMenu","TabAnimationSettings","NotifyPropertyChanges","options","Inject","RibbonFileMenu","fileMenuDDB","destroyDDB","fileMenuOptions","ddbElement","constants.RIBBON_FILE_MENU_ID","ddbBeforeEvent","ddbAfterEvent","createRibbonMenu","refreshActiveTabBorder","addFileMenuTooltip","addFileMenuKeytip","cloneMenuItem","itemsList","separator","url","menuOptions","ulElem","constants.RIBBON_FILE_MENU_LIST","menuctrl","Menu","animationSettings","showItemOnClick","menuBeforeEvent","onClose","menuAfterEvent","onOpen","menuSelect","parentItem","menuOpen","fileTriggerOpen","fileMenuOpen","isMenuOpen","destroyMenu","removeFileMenuTooltip","removeFileMenuKeytip","insertAfter","enableItems","disableItems","setItem","refresh","RibbonBackstage","backstageButton","backStageOptions","backstageButtonEle","constants.RIBBON_BACKSTAGE_MENU_ID","constants.RIBBON_BACKSTAGE","createBackStagePopup","createBackStageTemplate","footerItemCount","isFooter","createBackstageMenu","menuCtrl","checkMenuItems","footerMenuCtrl","stopPropagation","showBackstage","popupHTMLElement","constants.RIBBON_BACKSTAGE_OPEN","menuItem","menuWrapper","firstMenuEle","menuIndex","isCloseBtn","createBackStageContent","addBackStageMenuTooltip","addBackStageMenuKeyTip","onClickEvent","backStageItems","constants.RIBBON_BACKSTAGE_TEXT_MENU","constants.RIBBON_BACKSTAGE_POPUP_ID","constants.RIBBON_BACKSTAGE_POPUP","HTMLElement","updatePopupPositionOnRtl","closeBtnEle","arrowUp","arrowDown","popupStyle","right","ulFooterElem","constants.RIBBON_BACKSTAGE_MENU_WRAPPER","backButton","closeBtn","constants.BACKSTAGE_CLOSE_ICON","isBackButtonClicked","itemsWrapperEle","constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER","constants.RIBBON_FOOTER_MENU_LIST","ulMenuElem","constants.RIBBON_MENU_LIST","constants.RIBBON_BACKSTAGE_MENU","cloneFooterMenuItem","backstageContentEle","constants.RIBBON_BACKSTAGE_CONTENT","backstageTempEle","constants.RIBBON_BACKSTAGE_TEMPLATE","contentItem","isBackButton","backStageItemClick","removeBackstageMenuTooltip","removeBackstageMenuKeyTip","addBackstageItems","backstageItems","item1","removeBackstageItems","RibbonContextualTab","constants.RIBBON_CONTEXTUAL_TAB","contextualTab","RibbonKeyTip","createKeyTipElement","popupKeyTipData","backstageKeyTipData","calculateItemPosition","isMethod","xOffset","yOffset","isTab","isPopUpItem","splitBtnID","keyEle","isPopUpPresent","offsetParent","keytipElement","constants.RIBBON_KEYTIP","constants.RIBBON_KEYTIP_ID","calculateKeyTipPosition","isKeytipPresent","toUpperCase","setTimeout","galleryID","clickItems","commonItemsKeyTipPress","isGroupItems","isKeytipPopupOpen","isInteractableElement","isKeyPressed","keytipData_1","keyText","showKeyTips","hideKeyTips"],"mappings":"suBAIWA,EASRA,iBAAiBA,eAAe,KALT,QAAI,UAI1BA,EAAyB,WAAI,cAMtBC,EASRA,oBAAoBA,kBAAkB,KALhB,IAAI,MAIzBA,EAAwB,OAAI,UAQrBC,EAaRA,mBAAmBA,iBAAiB,KATpBA,EAAsB,MAAI,GAAK,QAI9CA,EAAeA,EAAuB,OAAI,GAAK,SAI/CA,EAAeA,EAAsB,MAAI,GAAK,SAQvCC,EAiBRA,gBAAgBA,cAAc,KAbjBA,EAAqB,QAAI,GAAK,UAI1CA,EAAYA,EAAwB,WAAI,GAAK,aAI7CA,EAAYA,EAAsB,SAAI,GAAK,WAI3CA,EAAYA,EAAkB,KAAI,GAAK,QAMhCC,EAqCRA,mBAAmBA,iBAAiB,KAjCZ,OAAI,SAI3BA,EAAyB,SAAI,WAI7BA,EAA4B,YAAI,cAIhCA,EAAyB,SAAI,WAI7BA,EAAyB,SAAI,WAI7BA,EAA4B,YAAI,cAIhCA,EAA4B,YAAI,cAIhCA,EAAwB,QAAI,UAI5BA,EAAyB,SAAI,YAMtBC,EASRA,+BAA+BA,6BAA6B,KALxB,OAAI,SAIvCA,EAAqC,SAAI,WC7HrCC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GDDjC,ICHQF,EAsB4CS,EAvBhDC,EAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,EAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAKIM,GAAgDrB,EAuClDsB,gBAtCErB,EAAUoB,EAAsBrB,CAAM,EAUtCqB,EAAqBhB,UAAUkB,cAAgB,SAAUC,EAAMC,GAC3DzB,EAAOK,UAAUkB,cAAcG,KAAKvB,KAAMqB,EAAMC,CAAY,GAEhElB,EAAW,CACPoB,WAAS,EAAE,GACZN,EAAqBhB,UAAW,UAAW,KAAA,CAAM,EACpDE,EAAW,CACPoB,WAAS,EAAE,GACZN,EAAqBhB,UAAW,WAAY,KAAA,CAAM,EACrDE,EAAW,CACPoB,WAAS,EAAE,GACZN,EAAqBhB,UAAW,UAAW,KAAA,CAAM,EACpDE,EAAW,CACPoB,WAAS,CAAA,CAAK,GACfN,EAAqBhB,UAAW,WAAY,KAAA,CAAM,EACrDE,EAAW,CACPoB,WAAS,CAAA,CAAK,GACfN,EAAqBhB,UAAW,YAAa,KAAA,CAAM,EACtDE,EAAW,CACPoB,WAAS,EAAE,GACZN,EAAqBhB,UAAW,iBAAkB,KAAA,CAAM,EAC3DE,EAAW,CACPqB,WACDP,EAAqBhB,UAAW,UAAW,KAAA,CAAM,EACpDE,EAAW,CACPqB,WACDP,EAAqBhB,UAAW,UAAW,KAAA,CAAM,EAC7CgB,GApCP,SAASA,IACL,OAAkB,OAAXrB,GAAmBA,EAAO6B,MAAM1B,KAAMU,SAAS,GAAKV,KCzB3DZ,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,EAsB8CS,EAvBlDC,EAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,EAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAKIe,GAAkD9B,EAoCpDsB,gBAnCErB,EAAU6B,EAAwB9B,CAAM,EAaxCO,EAAW,CACPoB,WAAS,EAJbG,EAAuBzB,UAAUkB,cAAgB,SAAUC,EAAMC,GAC7DzB,EAAOK,UAAUkB,cAAcG,KAAKvB,KAAMqB,EAAMC,CAAY,GAG9C,GACfK,EAAuBzB,UAAW,UAAW,KAAA,CAAM,EACtDE,EAAW,CACPoB,WAAS,EAAE,GACZG,EAAuBzB,UAAW,WAAY,KAAA,CAAM,EACvDE,EAAW,CACPoB,WAAS,EAAE,GACZG,EAAuBzB,UAAW,QAAS,KAAA,CAAM,EACpDE,EAAW,CACPoB,WAAS,OAAO,GACjBG,EAAuBzB,UAAW,gBAAiB,KAAA,CAAM,EAC5DE,EAAW,CACPoB,WAAS,EAAE,GACZG,EAAuBzB,UAAW,iBAAkB,KAAA,CAAM,EAC7DE,EAAW,CACPqB,WACDE,EAAuBzB,UAAW,UAAW,KAAA,CAAM,EACtDE,EAAW,CACPqB,WACDE,EAAuBzB,UAAW,SAAU,KAAA,CAAM,EAC9CyB,GAjCP,SAASA,IACL,OAAkB,OAAX9B,GAAmBA,EAAO6B,MAAM1B,KAAMU,SAAS,GAAKV,KCzB3DZ,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,EAsBiDS,EAvBrDC,EAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,EAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAKIgB,GAAqD/B,EAqEvDsB,gBApEErB,EAAU8B,EAA2B/B,CAAM,EAU3C+B,EAA0B1B,UAAUkB,cAAgB,SAAUC,EAAMC,GAChEzB,EAAOK,UAAUkB,cAAcG,KAAKvB,KAAMqB,EAAMC,CAAY,GAEhElB,EAAW,CACPoB,WAAS,EAAE,GACZI,EAA0B1B,UAAW,UAAW,KAAA,CAAM,EACzDE,EAAW,CACPoB,WAAS,EAAE,GACZI,EAA0B1B,UAAW,WAAY,KAAA,CAAM,EAC1DE,EAAW,CACPoB,WAAS,EAAE,GACZI,EAA0B1B,UAAW,QAAS,KAAA,CAAM,EACvDE,EAAW,CACPoB,WAAS,CAAA,CAAI,GACdI,EAA0B1B,UAAW,gBAAiB,KAAA,CAAM,EAC/DE,EAAW,CACPoB,WAAS,SAAS,GACnBI,EAA0B1B,UAAW,OAAQ,KAAA,CAAM,EACtDE,EAAW,CACPoB,WAAS,CAAA,CAAI,GACdI,EAA0B1B,UAAW,eAAgB,KAAA,CAAM,EAC9DE,EAAW,CACPoB,WAAS,CAAA,CAAK,GACfI,EAA0B1B,UAAW,UAAW,KAAA,CAAM,EACzDE,EAAW,CACPoB,WAAS,IAAI,GACdI,EAA0B1B,UAAW,eAAgB,KAAA,CAAM,EAC9DE,EAAW,CACPoB,WAAS,CAAA,CAAI,GACdI,EAA0B1B,UAAW,cAAe,KAAA,CAAM,EAC7DE,EAAW,CACPoB,WAAS,WAAW,GACrBI,EAA0B1B,UAAW,QAAS,KAAA,CAAM,EACvDE,EAAW,CACPoB,WAAS,EAAE,GACZI,EAA0B1B,UAAW,iBAAkB,KAAA,CAAM,EAChEE,EAAW,CACPqB,WACDG,EAA0B1B,UAAW,cAAe,KAAA,CAAM,EAC7DE,EAAW,CACPqB,WACDG,EAA0B1B,UAAW,aAAc,KAAA,CAAM,EAC5DE,EAAW,CACPqB,WACDG,EAA0B1B,UAAW,mBAAoB,KAAA,CAAM,EAClEE,EAAW,CACPqB,WACDG,EAA0B1B,UAAW,UAAW,KAAA,CAAM,EACzDE,EAAW,CACPqB,WACDG,EAA0B1B,UAAW,SAAU,KAAA,CAAM,EACxDE,EAAW,CACPqB,WACDG,EAA0B1B,UAAW,OAAQ,KAAA,CAAM,EACtDE,EAAW,CACPqB,WACDG,EAA0B1B,UAAW,SAAU,KAAA,CAAM,EACjD0B,GAlEP,SAASA,IACL,OAAkB,OAAX/B,GAAmBA,EAAO6B,MAAM1B,KAAMU,SAAS,GAAKV,KCzB3DZ,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,EAuB8CS,EAxBlDC,EAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,EAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAMIiB,GAAkDhC,EAsGpDsB,gBArGErB,EAAU+B,EAAwBhC,CAAM,EAaxCO,EAAW,CACPoB,WAAS,EAJbK,EAAuB3B,UAAUkB,cAAgB,SAAUC,EAAMC,GAC7DzB,EAAOK,UAAUkB,cAAcG,KAAKvB,KAAMqB,EAAMC,CAAY,GAG9C,GACfO,EAAuB3B,UAAW,iBAAkB,KAAA,CAAM,EAC7DE,EAAW,CACPoB,WAAS,CAAA,CAAI,GACdK,EAAuB3B,UAAW,WAAY,KAAA,CAAM,EACvDE,EAAW,CACPoB,WAAS,EAAE,GACZK,EAAuB3B,UAAW,WAAY,KAAA,CAAM,EACvDE,EAAW,CACPoB,WAAS,EAAE,GACZK,EAAuB3B,UAAW,QAAS,KAAA,CAAM,EACpDE,EAAW,CACPoB,WAAS,EAAE,GACZK,EAAuB3B,UAAW,aAAc,KAAA,CAAM,EACzDE,EAAW,CACP0B,UAAQ,CAAEC,KAAM,KAAMC,MAAO,KAAMC,QAAS,KAAMC,QAAS,MAAQC,eAAa,GACjFN,EAAuB3B,UAAW,SAAU,KAAA,CAAM,EACrDE,EAAW,CACPoB,WAAS,UAAU,GACpBK,EAAuB3B,UAAW,aAAc,KAAA,CAAM,EACzDE,EAAW,CACPoB,WAAS,IAAI,GACdK,EAAuB3B,UAAW,iBAAkB,KAAA,CAAM,EAC7DE,EAAW,CACPoB,WAAS,IAAI,GACdK,EAAuB3B,UAAW,gBAAiB,KAAA,CAAM,EAC5DE,EAAW,CACPoB,WAAS,IAAI,GACdK,EAAuB3B,UAAW,iBAAkB,KAAA,CAAM,EAC7DE,EAAW,CACPoB,WAAS,IAAI,GACdK,EAAuB3B,UAAW,QAAS,KAAA,CAAM,EACpDE,EAAW,CACPoB,WAAS,IAAI,GACdK,EAAuB3B,UAAW,eAAgB,KAAA,CAAM,EAC3DE,EAAW,CACPoB,WAAS,kBAAkB,GAC5BK,EAAuB3B,UAAW,oBAAqB,KAAA,CAAM,EAChEE,EAAW,CACPoB,WAAS,IAAI,GACdK,EAAuB3B,UAAW,cAAe,KAAA,CAAM,EAC1DE,EAAW,CACPoB,WAAS,OAAO,GACjBK,EAAuB3B,UAAW,cAAe,KAAA,CAAM,EAC1DE,EAAW,CACPoB,WAAS,MAAM,GAChBK,EAAuB3B,UAAW,aAAc,KAAA,CAAM,EACzDE,EAAW,CACPoB,WAAS,CAAA,CAAI,GACdK,EAAuB3B,UAAW,kBAAmB,KAAA,CAAM,EAC9DE,EAAW,CACPoB,WAAS,MAAM,GAChBK,EAAuB3B,UAAW,YAAa,KAAA,CAAM,EACxDE,EAAW,CACPoB,WAAS,IAAI,GACdK,EAAuB3B,UAAW,OAAQ,KAAA,CAAM,EACnDE,EAAW,CACPoB,WAAS,IAAI,GACdK,EAAuB3B,UAAW,QAAS,KAAA,CAAM,EACpDE,EAAW,CACPoB,WAAS,OAAO,GACjBK,EAAuB3B,UAAW,QAAS,KAAA,CAAM,EACpDE,EAAW,CACPoB,WAAS,EAAE,GACZK,EAAuB3B,UAAW,iBAAkB,KAAA,CAAM,EAC7DE,EAAW,CACPqB,WACDI,EAAuB3B,UAAW,aAAc,KAAA,CAAM,EACzDE,EAAW,CACPqB,WACDI,EAAuB3B,UAAW,SAAU,KAAA,CAAM,EACrDE,EAAW,CACPqB,WACDI,EAAuB3B,UAAW,QAAS,KAAA,CAAM,EACpDE,EAAW,CACPqB,WACDI,EAAuB3B,UAAW,UAAW,KAAA,CAAM,EACtDE,EAAW,CACPqB,WACDI,EAAuB3B,UAAW,YAAa,KAAA,CAAM,EACxDE,EAAW,CACPqB,WACDI,EAAuB3B,UAAW,OAAQ,KAAA,CAAM,EACnDE,EAAW,CACPqB,WACDI,EAAuB3B,UAAW,SAAU,KAAA,CAAM,EAC9C2B,GAnGP,SAASA,IACL,OAAkB,OAAXhC,GAAmBA,EAAO6B,MAAM1B,KAAMU,SAAS,GAAKV,KC1B3DZ,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,EAuB8CS,EAxBlDC,EAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,EAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAMIwB,GAAkDvC,EA4DpDsB,gBA3DErB,EAAUsC,EAAwBvC,CAAM,EAUxCuC,EAAuBlC,UAAUkB,cAAgB,SAAUC,EAAMC,GAC7DzB,EAAOK,UAAUkB,cAAcG,KAAKvB,KAAMqB,EAAMC,CAAY,GAEhElB,EAAW,CACPoB,WAAS,EAAE,GACZY,EAAuBlC,UAAW,oBAAqB,KAAA,CAAM,EAChEE,EAAW,CACPoB,WAAS,EAAE,GACZY,EAAuBlC,UAAW,UAAW,KAAA,CAAM,EACtDE,EAAW,CACPoB,WAAS,EAAE,GACZY,EAAuBlC,UAAW,WAAY,KAAA,CAAM,EACvDE,EAAW,CACPoB,WAAS,EAAE,GACZY,EAAuBlC,UAAW,UAAW,KAAA,CAAM,EACtDE,EAAW,CACPiC,aAAW,GAAIC,MAAI,GACpBF,EAAuBlC,UAAW,QAAS,KAAA,CAAM,EACpDE,EAAW,CACPoB,WAAS,EAAE,GACZY,EAAuBlC,UAAW,SAAU,KAAA,CAAM,EACrDE,EAAW,CACPoB,WAAS,CAAA,CAAK,GACfY,EAAuBlC,UAAW,qBAAsB,KAAA,CAAM,EACjEE,EAAW,CACPoB,WAAS,EAAE,GACZY,EAAuBlC,UAAW,iBAAkB,KAAA,CAAM,EAC7DE,EAAW,CACPqB,WACDW,EAAuBlC,UAAW,cAAe,KAAA,CAAM,EAC1DE,EAAW,CACPqB,WACDW,EAAuBlC,UAAW,mBAAoB,KAAA,CAAM,EAC/DE,EAAW,CACPqB,WACDW,EAAuBlC,UAAW,aAAc,KAAA,CAAM,EACzDE,EAAW,CACPqB,WACDW,EAAuBlC,UAAW,QAAS,KAAA,CAAM,EACpDE,EAAW,CACPqB,WACDW,EAAuBlC,UAAW,UAAW,KAAA,CAAM,EACtDE,EAAW,CACPqB,WACDW,EAAuBlC,UAAW,OAAQ,KAAA,CAAM,EACnDE,EAAW,CACPqB,WACDW,EAAuBlC,UAAW,SAAU,KAAA,CAAM,EAC9CkC,GAzDP,SAASA,IACL,OAAkB,OAAXvC,GAAmBA,EAAO6B,MAAM1B,KAAMU,SAAS,GAAKV,KC1B3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAuBiDS,GAxBrDC,EAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAMI2B,GAAqD1C,GA4DvDsB,gBA3DErB,EAAUyC,EAA2B1C,EAAM,EAU3C0C,EAA0BrC,UAAUkB,cAAgB,SAAUC,EAAMC,GAChEzB,GAAOK,UAAUkB,cAAcG,KAAKvB,KAAMqB,EAAMC,CAAY,GAEhElB,EAAW,CACPoB,WAAS,EAAE,GACZe,EAA0BrC,UAAW,oBAAqB,KAAA,CAAM,EACnEE,EAAW,CACPoB,WAAS,EAAE,GACZe,EAA0BrC,UAAW,UAAW,KAAA,CAAM,EACzDE,EAAW,CACPoB,WAAS,EAAE,GACZe,EAA0BrC,UAAW,WAAY,KAAA,CAAM,EAC1DE,EAAW,CACPoB,WAAS,EAAE,GACZe,EAA0BrC,UAAW,UAAW,KAAA,CAAM,EACzDE,EAAW,CACPiC,aAAW,GAAIC,MAAI,GACpBC,EAA0BrC,UAAW,QAAS,KAAA,CAAM,EACvDE,EAAW,CACPoB,WAAS,EAAE,GACZe,EAA0BrC,UAAW,SAAU,KAAA,CAAM,EACxDE,EAAW,CACPoB,WAAS,EAAE,GACZe,EAA0BrC,UAAW,iBAAkB,KAAA,CAAM,EAChEE,EAAW,CACPqB,WACDc,EAA0BrC,UAAW,cAAe,KAAA,CAAM,EAC7DE,EAAW,CACPqB,WACDc,EAA0BrC,UAAW,mBAAoB,KAAA,CAAM,EAClEE,EAAW,CACPqB,WACDc,EAA0BrC,UAAW,aAAc,KAAA,CAAM,EAC5DE,EAAW,CACPqB,WACDc,EAA0BrC,UAAW,QAAS,KAAA,CAAM,EACvDE,EAAW,CACPqB,WACDc,EAA0BrC,UAAW,QAAS,KAAA,CAAM,EACvDE,EAAW,CACPqB,WACDc,EAA0BrC,UAAW,UAAW,KAAA,CAAM,EACzDE,EAAW,CACPqB,WACDc,EAA0BrC,UAAW,OAAQ,KAAA,CAAM,EACtDE,EAAW,CACPqB,WACDc,EAA0BrC,UAAW,SAAU,KAAA,CAAM,EACjDqC,GAzDP,SAASA,IACL,OAAkB,OAAX1C,IAAmBA,GAAO6B,MAAM1B,KAAMU,SAAS,GAAKV,KC1B3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAsBqCS,GAvBzCC,EAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAKI4B,GAAyC3C,GAqB3CsB,gBApBErB,EAAU0C,GAAe3C,EAAM,EAI/BO,GAAW,CACPoB,WAAS,EAAE,GACZgB,GAActC,UAAW,WAAY,KAAA,CAAM,EAC9CE,GAAW,CACPoB,WAAS,EAAE,GACZgB,GAActC,UAAW,KAAM,KAAA,CAAM,EACxCE,GAAW,CACPoB,WAAS,EAAE,GACZgB,GAActC,UAAW,QAAS,KAAA,CAAM,EAC3CE,GAAW,CACPoB,WAAS,EAAE,GACZgB,GAActC,UAAW,UAAW,KAAA,CAAM,EAC7CE,GAAW,CACPoB,WAAS,EAAE,GACZgB,GAActC,UAAW,UAAW,KAAA,CAAM,EACtCsC,IAlBP,SAASA,KACL,OAAkB,OAAX3C,IAAmBA,GAAO6B,MAAM1B,KAAMU,SAAS,GAAKV,KCzB3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAuB6CS,GAxBjDC,GAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAMI6B,IAAiD5C,GAuCnDsB,gBAtCErB,GAAU2C,GAAuB5C,EAAM,EAUvC4C,GAAsBvC,UAAUkB,cAAgB,SAAUC,EAAMC,GAC5DzB,GAAOK,UAAUkB,cAAcG,KAAKvB,KAAMqB,EAAMC,CAAY,GAEhElB,GAAW,CACPoB,WAAS,EAAE,GACZiB,GAAsBvC,UAAW,UAAW,KAAA,CAAM,EACrDE,GAAW,CACPoB,WAAS,EAAE,GACZiB,GAAsBvC,UAAW,UAAW,KAAA,CAAM,EACrDE,GAAW,CACPoB,WAAS,EAAE,GACZiB,GAAsBvC,UAAW,SAAU,KAAA,CAAM,EACpDE,GAAW,CACP0B,UAAQ,GAAIU,CAAa,GAC1BC,GAAsBvC,UAAW,wBAAyB,KAAA,CAAM,EACnEE,GAAW,CACPoB,WAAS,CAAA,CAAK,GACfiB,GAAsBvC,UAAW,WAAY,KAAA,CAAM,EACtDE,GAAW,CACPoB,WAAS,EAAE,GACZiB,GAAsBvC,UAAW,iBAAkB,KAAA,CAAM,EAC5DE,GAAW,CACPqB,WACDgB,GAAsBvC,UAAW,cAAe,KAAA,CAAM,EACzDE,GAAW,CACPqB,WACDgB,GAAsBvC,UAAW,QAAS,KAAA,CAAM,EAC5CuC,IApCP,SAASA,KACL,OAAkB,OAAX5C,IAAmBA,GAAO6B,MAAM1B,KAAMU,SAAS,GAAKV,KC1B3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAuBiDS,GAxBrDC,GAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAMI8B,IAAqD7C,GAevDsB,gBAdErB,GAAU4C,GAA2B7C,EAAM,EAI3CO,GAAW,CACPoB,WAAS,EAAE,GACZkB,GAA0BxC,UAAW,SAAU,KAAA,CAAM,EACxDE,GAAW,CACPoB,WAAS,QAAQ,GAClBkB,GAA0BxC,UAAW,YAAa,KAAA,CAAM,EAC3DE,GAAW,CACPiC,aAAW,GAAII,EAAqB,GACrCC,GAA0BxC,UAAW,QAAS,KAAA,CAAM,EAChDwC,IAZP,SAASA,KACL,OAAkB,OAAX7C,IAAmBA,GAAO6B,MAAM1B,KAAMU,SAAS,GAAKV,KC1B3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAsByCS,GAvB7CC,GAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAKI+B,IAA6C9C,GAqB/CsB,gBApBErB,GAAU6C,GAAmB9C,EAAM,EAInCO,GAAW,CACPoB,WAAS,EAAE,GACZmB,GAAkBzC,UAAW,UAAW,KAAA,CAAM,EACjDE,GAAW,CACPoB,WAAS,EAAE,GACZmB,GAAkBzC,UAAW,UAAW,KAAA,CAAM,EACjDE,GAAW,CACPoB,WAAS,EAAE,GACZmB,GAAkBzC,UAAW,iBAAkB,KAAA,CAAM,EACxDE,GAAW,CACPoB,WAAS,EAAE,GACZmB,GAAkBzC,UAAW,WAAY,KAAA,CAAM,EAClDE,GAAW,CACPoB,WAAS,CAAA,CAAK,GACfmB,GAAkBzC,UAAW,WAAY,KAAA,CAAM,EAC3CyC,IAlBP,SAASA,KACL,OAAkB,OAAX9C,IAAmBA,GAAO6B,MAAM1B,KAAMU,SAAS,GAAKV,KCzB3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAuB0CS,GAxB9CC,GAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAMIgC,IAA8C/C,GAqBhDsB,gBApBErB,GAAU8C,GAAoB/C,EAAM,EAIpCO,GAAW,CACPiC,aAAW,GAAIM,EAAiB,GACjCC,GAAmB1C,UAAW,QAAS,KAAA,CAAM,EAChDE,GAAW,CACPoB,WAAS,EAAE,GACZoB,GAAmB1C,UAAW,SAAU,KAAA,CAAM,EACjDE,GAAW,CACPoB,WAAS,MAAM,GAChBoB,GAAmB1C,UAAW,YAAa,KAAA,CAAM,EACpDE,GAAW,CACPoB,WAAS,MAAM,GAChBoB,GAAmB1C,UAAW,aAAc,KAAA,CAAM,EACrDE,GAAW,CACPoB,WAAS,EAAE,GACZoB,GAAmB1C,UAAW,WAAY,KAAA,CAAM,EAC5C0C,IAlBP,SAASA,KACL,OAAkB,OAAX/C,IAAmBA,GAAO6B,MAAM1B,KAAMU,SAAS,GAAKV,KC1B3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAuB6CS,GAxBjDC,GAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAMIiC,IAAiDhD,GA6CnDsB,gBA5CErB,GAAU+C,GAAuBhD,EAAM,EAIvCO,EAAW,CACPiC,aAAW,GAAIO,EAAkB,GAClCC,GAAsB3C,UAAW,SAAU,KAAA,CAAM,EACpDE,EAAW,CACPoB,WAAS,CAAC,GACXqB,GAAsB3C,UAAW,YAAa,KAAA,CAAM,EACvDE,EAAW,CACPoB,WAAS,IAAI,GACdqB,GAAsB3C,UAAW,oBAAqB,KAAA,CAAM,EAC/DE,EAAW,CACPoB,WAAS,MAAM,GAChBqB,GAAsB3C,UAAW,cAAe,KAAA,CAAM,EACzDE,EAAW,CACPoB,WAAS,MAAM,GAChBqB,GAAsB3C,UAAW,aAAc,KAAA,CAAM,EACxDE,EAAW,CACPoB,WAAS,EAAE,GACZqB,GAAsB3C,UAAW,WAAY,KAAA,CAAM,EACtDE,EAAW,CACPoB,WAAS,EAAE,GACZqB,GAAsB3C,UAAW,gBAAiB,KAAA,CAAM,EAC3DE,EAAW,CACPqB,WACDoB,GAAsB3C,UAAW,YAAa,KAAA,CAAM,EACvDE,EAAW,CACPqB,WACDoB,GAAsB3C,UAAW,aAAc,KAAA,CAAM,EACxDE,EAAW,CACPqB,WACDoB,GAAsB3C,UAAW,YAAa,KAAA,CAAM,EACvDE,EAAW,CACPqB,WACDoB,GAAsB3C,UAAW,mBAAoB,KAAA,CAAM,EAC9DE,EAAW,CACPqB,WACDoB,GAAsB3C,UAAW,eAAgB,KAAA,CAAM,EAC1DE,EAAW,CACPqB,WACDoB,GAAsB3C,UAAW,SAAU,KAAA,CAAM,EAC7C2C,IA1CP,SAASA,KACL,OAAkB,OAAXhD,IAAmBA,GAAO6B,MAAM1B,KAAMU,SAAS,GAAKV,KC1B3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAgCkCS,GAjCtCC,EAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAeIkC,GAAsCjD,GAqExCsB,gBApEErB,EAAUgD,EAAYjD,EAAM,EAU5BiD,EAAW5C,UAAUkB,cAAgB,SAAUC,EAAMC,GACjDzB,GAAOK,UAAUkB,cAAcG,KAAKvB,KAAMqB,EAAMC,CAAY,GAEhElB,EAAW,CACPoB,WAAS,EAAE,GACZsB,EAAW5C,UAAW,SAAU,KAAA,CAAM,EACzCE,EAAW,CACPoB,WAASxC,iBAAe+D,MAAM,GAC/BD,EAAW5C,UAAW,aAAc,KAAA,CAAM,EAC7CE,EAAW,CACPoB,WAASxC,iBAAegE,MAAQhE,iBAAe+D,OAAS/D,iBAAeiE,KAAK,GAC7EH,EAAW5C,UAAW,eAAgB,KAAA,CAAM,EAC/CE,EAAW,CACPoB,WAAS,EAAE,GACZsB,EAAW5C,UAAW,KAAM,KAAA,CAAM,EACrCE,EAAW,CACPoB,WAAS,EAAE,GACZsB,EAAW5C,UAAW,WAAY,KAAA,CAAM,EAC3CE,EAAW,CACPoB,WAAS,CAAA,CAAK,GACfsB,EAAW5C,UAAW,WAAY,KAAA,CAAM,EAC3CE,EAAW,CACPoB,WAAS,EAAE,GACZsB,EAAW5C,UAAW,eAAgB,KAAA,CAAM,EAC/CE,EAAW,CACPoB,WAAS,QAAQ,GAClBsB,EAAW5C,UAAW,OAAQ,KAAA,CAAM,EACvCE,EAAW,CACPoB,WAASvC,cAAYiE,IAAI,GAC1BJ,EAAW5C,UAAW,iBAAkB,KAAA,CAAM,EACjDE,EAAW,CACP0B,UAAQ,GAAIU,CAAa,GAC1BM,EAAW5C,UAAW,wBAAyB,KAAA,CAAM,EACxDE,EAAW,CACP0B,UAAQ,GAAIZ,CAAoB,GACjC4B,EAAW5C,UAAW,iBAAkB,KAAA,CAAM,EACjDE,EAAW,CACP0B,UAAQ,GAAIM,CAAsB,GACnCU,EAAW5C,UAAW,mBAAoB,KAAA,CAAM,EACnDE,EAAW,CACP0B,UAAQ,GAAIH,CAAsB,GACnCmB,EAAW5C,UAAW,mBAAoB,KAAA,CAAM,EACnDE,EAAW,CACP0B,UAAQ,GAAIF,CAAyB,GACtCkB,EAAW5C,UAAW,sBAAuB,KAAA,CAAM,EACtDE,EAAW,CACP0B,UAAQ,GAAID,CAAsB,GACnCiB,EAAW5C,UAAW,mBAAoB,KAAA,CAAM,EACnDE,EAAW,CACP0B,UAAQ,GAAIS,CAAyB,GACtCO,EAAW5C,UAAW,sBAAuB,KAAA,CAAM,EACtDE,EAAW,CACP0B,UAAQ,GAAIY,EAAyB,GACtCI,EAAW5C,UAAW,sBAAuB,KAAA,CAAM,EACtDE,EAAW,CACP0B,UAAQ,GAAIe,EAAqB,GAClCC,EAAW5C,UAAW,kBAAmB,KAAA,CAAM,EAC3C4C,GAlEP,SAASA,IACL,OAAkB,OAAXjD,IAAmBA,GAAO6B,MAAM1B,KAAMU,SAAS,GAAKV,KCnC3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAuBwCS,GAxB5CC,EAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAMIuC,GAA4CtD,GAwB9CsB,gBAvBErB,EAAUqD,GAAkBtD,EAAM,EAUlCsD,GAAiBjD,UAAUkB,cAAgB,SAAUC,EAAMC,GACvDzB,GAAOK,UAAUkB,cAAcG,KAAKvB,KAAMqB,EAAMC,CAAY,GAEhElB,GAAW,CACPoB,WAAS,EAAE,GACZ2B,GAAiBjD,UAAW,KAAM,KAAA,CAAM,EAC3CE,GAAW,CACPoB,WAAS,EAAE,GACZ2B,GAAiBjD,UAAW,WAAY,KAAA,CAAM,EACjDE,GAAW,CACPiC,aAAW,GAAIS,CAAU,GAC1BK,GAAiBjD,UAAW,QAAS,KAAA,CAAM,EACvCiD,IArBP,SAASA,KACL,OAAkB,OAAXtD,IAAmBA,GAAO6B,MAAM1B,KAAMU,SAAS,GAAKV,KC1B3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAuBmCS,GAxBvCC,GAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAMIwC,IAAuCvD,GAyDzCsB,gBAxDErB,GAAUsD,EAAavD,EAAM,EAU7BuD,EAAYlD,UAAUkB,cAAgB,SAAUC,EAAMC,GAClDzB,GAAOK,UAAUkB,cAAcG,KAAKvB,KAAMqB,EAAMC,CAAY,GAEhElB,EAAW,CACPoB,WAAS,EAAE,GACZ4B,EAAYlD,UAAW,SAAU,KAAA,CAAM,EAC1CE,EAAW,CACPoB,WAAS,EAAE,GACZ4B,EAAYlD,UAAW,qBAAsB,KAAA,CAAM,EACtDE,EAAW,CACPiC,aAAW,GAAIc,CAAgB,GAChCC,EAAYlD,UAAW,cAAe,KAAA,CAAM,EAC/CE,EAAW,CACPoB,WAAS,EAAE,GACZ4B,EAAYlD,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPoB,WAAS,EAAE,GACZ4B,EAAYlD,UAAW,KAAM,KAAA,CAAM,EACtCE,EAAW,CACPoB,WAAS,CAAA,CAAK,GACf4B,EAAYlD,UAAW,cAAe,KAAA,CAAM,EAC/CE,EAAW,CACPoB,WAAS,CAAA,CAAI,GACd4B,EAAYlD,UAAW,gBAAiB,KAAA,CAAM,EACjDE,EAAW,CACPoB,WAAS,CAAA,CAAK,GACf4B,EAAYlD,UAAW,sBAAuB,KAAA,CAAM,EACvDE,EAAW,CACPoB,WAAS,EAAE,GACZ4B,EAAYlD,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACPoB,WAAS,EAAE,GACZ4B,EAAYlD,UAAW,SAAU,KAAA,CAAM,EAC1CE,EAAW,CACPoB,WAAS,QAAQ,GAClB4B,EAAYlD,UAAW,cAAe,KAAA,CAAM,EAC/CE,EAAW,CACPoB,WAAS,EAAE,GACZ4B,EAAYlD,UAAW,iBAAkB,KAAA,CAAM,EAClDE,EAAW,CACPoB,WAAS,CAAC,GACX4B,EAAYlD,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPoB,WAAS,CAAA,CAAK,GACf4B,EAAYlD,UAAW,mBAAoB,KAAA,CAAM,EAC7CkD,GAtDP,SAASA,IACL,OAAkB,OAAXvD,IAAmBA,GAAO6B,MAAM1B,KAAMU,SAAS,GAAKV,KC1B3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAuBiCS,GAxBrCC,EAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAMIyC,GAAqCxD,GA8BvCsB,gBA7BErB,EAAUuD,GAAWxD,EAAM,EAU3BwD,GAAUnD,UAAUkB,cAAgB,SAAUC,EAAMC,GAChDzB,GAAOK,UAAUkB,cAAcG,KAAKvB,KAAMqB,EAAMC,CAAY,GAEhElB,GAAW,CACPoB,WAAS,EAAE,GACZ6B,GAAUnD,UAAW,SAAU,KAAA,CAAM,EACxCE,GAAW,CACPoB,WAAS,EAAE,GACZ6B,GAAUnD,UAAW,KAAM,KAAA,CAAM,EACpCE,GAAW,CACPoB,WAAS,EAAE,GACZ6B,GAAUnD,UAAW,WAAY,KAAA,CAAM,EAC1CE,GAAW,CACPiC,aAAW,GAAIe,EAAW,GAC3BC,GAAUnD,UAAW,SAAU,KAAA,CAAM,EACxCE,GAAW,CACPoB,WAAS,EAAE,GACZ6B,GAAUnD,UAAW,SAAU,KAAA,CAAM,EACjCmD,IA3BP,SAASA,KACL,OAAkB,OAAXxD,IAAmBA,GAAO6B,MAAM1B,KAAMU,SAAS,GAAKV,KC1B3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAwBwCS,GAzB5CC,GAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAOI0C,IAA4CzD,GA4D9CsB,gBA3DErB,GAAUwD,EAAkBzD,EAAM,EAUlCyD,EAAiBpD,UAAUkB,cAAgB,SAAUC,EAAMC,GACvDzB,GAAOK,UAAUkB,cAAcG,KAAKvB,KAAMqB,EAAMC,CAAY,GAEhElB,EAAW,CACPoB,WAAS,MAAM,GAChB8B,EAAiBpD,UAAW,OAAQ,KAAA,CAAM,EAC7CE,EAAW,CACPoB,WAAS,CAAA,CAAK,GACf8B,EAAiBpD,UAAW,UAAW,KAAA,CAAM,EAChDE,EAAW,CACPiC,aAAW,GAAIkB,UAAQ,GACxBD,EAAiBpD,UAAW,YAAa,KAAA,CAAM,EAClDE,EAAW,CACPoB,WAAS,CAAA,CAAK,GACf8B,EAAiBpD,UAAW,kBAAmB,KAAA,CAAM,EACxDE,EAAW,CACP0B,UAAQ,GAAI0B,uBAAqB,GAClCF,EAAiBpD,UAAW,oBAAqB,KAAA,CAAM,EAC1DE,EAAW,CACPoB,WAAS,EAAE,GACZ8B,EAAiBpD,UAAW,eAAgB,KAAA,CAAM,EACrDE,EAAW,CACPoB,WAAS,EAAE,GACZ8B,EAAiBpD,UAAW,gBAAiB,KAAA,CAAM,EACtDE,EAAW,CACP0B,UAAQ,GAAIU,CAAa,GAC1Bc,EAAiBpD,UAAW,wBAAyB,KAAA,CAAM,EAC9DE,EAAW,CACPqB,WACD6B,EAAiBpD,UAAW,cAAe,KAAA,CAAM,EACpDE,EAAW,CACPqB,WACD6B,EAAiBpD,UAAW,aAAc,KAAA,CAAM,EACnDE,EAAW,CACPqB,WACD6B,EAAiBpD,UAAW,mBAAoB,KAAA,CAAM,EACzDE,EAAW,CACPqB,WACD6B,EAAiBpD,UAAW,QAAS,KAAA,CAAM,EAC9CE,EAAW,CACPqB,WACD6B,EAAiBpD,UAAW,OAAQ,KAAA,CAAM,EAC7CE,EAAW,CACPqB,WACD6B,EAAiBpD,UAAW,SAAU,KAAA,CAAM,EAC/CE,EAAW,CACPoB,WAAS,EAAE,GACZ8B,EAAiBpD,UAAW,SAAU,KAAA,CAAM,EACxCoD,GAzDP,SAASA,IACL,OAAkB,OAAXzD,IAAmBA,GAAO6B,MAAM1B,KAAMU,SAAS,GAAKV,KC3B3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAsB2CS,GAvB/CC,EAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAKI6C,GAA+C5D,GAejDsB,gBAdErB,EAAU2D,GAAqB5D,EAAM,EAIrCO,GAAW,CACPoB,WAAS,EAAE,GACZiC,GAAoBvD,UAAW,OAAQ,KAAA,CAAM,EAChDE,GAAW,CACPoB,WAAS,EAAE,GACZiC,GAAoBvD,UAAW,UAAW,KAAA,CAAM,EACnDE,GAAW,CACPoB,WAAS,CAAA,CAAI,GACdiC,GAAoBvD,UAAW,UAAW,KAAA,CAAM,EAC5CuD,IAZP,SAASA,KACL,OAAkB,OAAX5D,IAAmBA,GAAO6B,MAAM1B,KAAMU,SAAS,GAAKV,KCzB3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAsBqCS,GAvBzCC,GAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAKI8C,IAAyC7D,GA8B3CsB,gBA7BErB,GAAU4D,GAAe7D,EAAM,EAI/BO,GAAW,CACPoB,WAAS,EAAE,GACZkC,GAAcxD,UAAW,OAAQ,KAAA,CAAM,EAC1CE,GAAW,CACPoB,WAAS,EAAE,GACZkC,GAAcxD,UAAW,KAAM,KAAA,CAAM,EACxCE,GAAW,CACPoB,WAAS,EAAE,GACZkC,GAAcxD,UAAW,SAAU,KAAA,CAAM,EAC5CE,GAAW,CACPoB,WAAS,EAAE,GACZkC,GAAcxD,UAAW,UAAW,KAAA,CAAM,EAC7CE,GAAW,CACPoB,WAAS,EAAE,GACZkC,GAAcxD,UAAW,UAAW,KAAA,CAAM,EAC7CE,GAAW,CACPoB,WAAS,CAAA,CAAK,GACfkC,GAAcxD,UAAW,YAAa,KAAA,CAAM,EAC/CE,GAAW,CACPoB,WAAS,CAAA,CAAK,GACfkC,GAAcxD,UAAW,WAAY,KAAA,CAAM,EAC9CE,GAAW,CACPqB,WACDiC,GAAcxD,UAAW,qBAAsB,KAAA,CAAM,EACjDwD,IA3BP,SAASA,KACL,OAAkB,OAAX7D,IAAmBA,GAAO6B,MAAM1B,KAAMU,SAAS,GAAKV,KCzB3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAyBqCS,GA1BzCC,GAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAQI+C,IAAyC9D,GA6C3CsB,gBA5CErB,GAAU6D,GAAe9D,EAAM,EAU/B8D,GAAczD,UAAUkB,cAAgB,SAAUC,EAAMC,GACpDzB,GAAOK,UAAUkB,cAAcG,KAAKvB,KAAMqB,EAAMC,CAAY,GAEhElB,GAAW,CACPoB,WAAS,MAAM,GAChBmC,GAAczD,UAAW,OAAQ,KAAA,CAAM,EAC1CE,GAAW,CACPoB,WAAS,EAAE,GACZmC,GAAczD,UAAW,SAAU,KAAA,CAAM,EAC5CE,GAAW,CACPoB,WAAS,CAAA,CAAK,GACfmC,GAAczD,UAAW,UAAW,KAAA,CAAM,EAC7CE,GAAW,CACPoB,WAAS,MAAM,GAChBmC,GAAczD,UAAW,SAAU,KAAA,CAAM,EAC5CE,GAAW,CACPoB,WAAS,MAAM,GAChBmC,GAAczD,UAAW,QAAS,KAAA,CAAM,EAC3CE,GAAW,CACPoB,WAAS,IAAI,GACdmC,GAAczD,UAAW,SAAU,KAAA,CAAM,EAC5CE,GAAW,CACP0B,UAAQ,GAAI2B,CAAmB,GAChCE,GAAczD,UAAW,aAAc,KAAA,CAAM,EAChDE,GAAW,CACPiC,aAAW,GAAIqB,EAAa,GAC7BC,GAAczD,UAAW,QAAS,KAAA,CAAM,EAC3CE,GAAW,CACPoB,WAAS,EAAE,GACZmC,GAAczD,UAAW,WAAY,KAAA,CAAM,EAC9CE,GAAW,CACP0B,UAAQ,GAAIU,CAAa,GAC1BmB,GAAczD,UAAW,wBAAyB,KAAA,CAAM,EACpDyD,IA1CP,SAASA,KACL,OAAkB,OAAX9D,IAAmBA,GAAO6B,MAAM1B,KAAMU,SAAS,GAAKV,KC5B3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAuBmDS,GAxBvDC,GAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAMIgD,IAAuD/D,GAwBzDsB,gBAvBErB,GAAU8D,GAA6B/D,EAAM,EAa7CO,GAAW,CACPoB,WAAS,EAJboC,GAA4B1D,UAAUkB,cAAgB,SAAUC,EAAMC,GAClEzB,GAAOK,UAAUkB,cAAcG,KAAKvB,KAAMqB,EAAMC,CAAY,GAG9C,GACfsC,GAA4B1D,UAAW,UAAW,KAAA,CAAM,EAC3DE,GAAW,CACPoB,WAAS,CAAA,CAAK,GACfoC,GAA4B1D,UAAW,aAAc,KAAA,CAAM,EAC9DE,GAAW,CACPiC,aAAW,GAAIgB,CAAS,GACzBO,GAA4B1D,UAAW,OAAQ,KAAA,CAAM,EACjD0D,IArBP,SAASA,KACL,OAAkB,OAAX/D,IAAmBA,GAAO6B,MAAM1B,KAAMU,SAAS,GAAKV,SCvBxD6D,GAAuB,2BAEvBC,GAAuB,sBAEvBC,GAAuB,uBAEvBC,GAAgB,8BAEhBC,GAAe,aAEfC,GAAe,aAEfC,GAAU,QAEVC,GAAe,iBAEfC,GAAiB,mBAEjBC,GAAuB,yBAEvBC,GAAoB,gBAEpBC,GAAgB,kBAEhBC,EAAQ,IAERC,GAAuB,gBAEvBC,GAAW,gBAEXC,GAAa,eAEbC,GAAwB,0BAExBC,GAAoB,kBAEpBC,GAAkB,oBAElBC,GAAyB,wBAEzBC,GAAuB,sBAEvBC,GAAqB,uBAErBC,GAA2B,0BAE3BC,GAAyB,wBAEzBC,GAAyB,2BAEzBC,GAAkB,oBAElBC,GAAc,YAEdC,GAAkB,oBAElBC,GAAe,iBAEfC,GAAiC,4BAEjCC,GAAmC,8BAEnCC,GAAsB,wBAEtBC,GAAqC,uCAErCC,GAA8B,gCAE9BC,GAAyB,2BAEzBC,GAA0B,kBAE1BC,GAA4B,8BAE5BC,GAAuB,yBAEvBC,GAAsB,wBAEtBC,GAAyB,2BAEzBC,GAAwB,0BAExBC,GAA4B,8BAE5BC,GAAkB,oBAElBC,GAA2B,yBAE3BC,GAAuB,qBAEvBC,GAAoB,sBAEpBC,GAAc,gBAEdC,GAAa,eAEbC,GAAgB,kBAEhBC,GAAoB,sBAEpBC,GAAqB,uBAErBC,GAAoB,sBAEpBC,GAAwB,0BAIxBC,GAAsB,eAEtBC,GAAkB,oBAElBC,GAAuB,yBAEvBC,GAAiB,mBAEjBC,GAAwB,0BAExBC,GAAuB,yBAEvBC,GAAyB,2BAEzBC,GAAsB,wBAEtBC,GAA2B,6BAE3BC,GAAwB,0BAExBC,GAAyB,2BAEzBC,GAAyB,2BAEzBC,GAAwB,0BAExBC,GAA2B,6BAI3BC,GAAmB,qBAEnBC,GAAwB,0BAExBC,GAA4B,8BAE5BC,GAAgC,6BAEhCC,GAAiC,mCAEjCC,GAA6B,cAE7BC,GAAS,OAITC,GAAgB,cAIhBC,GAAqB,kBAErBC,GAAmB,qBAEnBC,EAAoB,oBAEpBC,EAAY,UAEZC,GAAc,YAEdC,EAAa,WAEbC,EAAe,aAEfC,EAAc,YAEdC,GAAc,YAEdC,GAAsB,YAEtBC,GAA2B,aAE3BC,GAA4B,kBAE5BC,GAAwB,gBAExBC,GAAmB,YAEnBC,GAA0B,kBAE1BC,GAA+B,oBAE/BC,EAAyB,UAEzBC,GAAmB,UAEnBC,GAAyB,kBAEzBC,GAAkC,sBCjMzCC,IAIAA,GAAa1J,UAAU2J,cAAgB,WACnC,MAAO,gBAEXD,GAAa1J,UAAU4J,QAAU,WAC7B9J,KAAK+J,OAAS,MAUlBH,GAAa1J,UAAU8J,aAAe,SAAUC,EAAMC,GAClD,IAAIC,EAAQnK,KACRoK,EAAYpK,KAAK+J,OAAOM,cAAc,SAAU,CAChDC,GAAIL,EAAKK,GACZ,EAEGC,GADJL,EAAQM,YAAYJ,CAAS,EACXH,EAAKQ,gBACvB,IAAIC,SAAO,CACPC,OAAQ3K,KAAK+J,OAAOY,OACpBC,UAAW5K,KAAK+J,OAAOa,UACvBC,kBAAmB7K,KAAK+J,OAAOc,kBAC/BC,aAAcb,EAAKc,aAAe/L,iBAAeiE,MAAQ,MAAQ,OACjEhB,QAASsI,EAAYtI,QACrB+I,SAAUf,EAAKe,SACfC,UAAWpH,GAAuBY,EAAQJ,GAAiBI,GAAS8F,EAAYU,UAAkC,KAAKC,OACvHC,QAASlB,EAAKc,aAAe/L,iBAAegE,MAAQ,GAAKuH,EAAYY,QACrEC,UAAWb,EAAYa,UACvBC,SAAUd,EAAYc,SACtBC,QAASf,EAAYe,SACtBlB,CAAS,EACRG,EAAYgB,iBACRhB,EAAYgB,eAAejB,IAC3B,OAAOC,EAAYgB,eAAejB,GAEtCkB,GAAoBpB,EAAWG,EAAYgB,cAAc,GAE7DnB,EAAUqB,QAAU,SAAUC,GACtBnB,EAAYoB,SACZpB,EAAYoB,QAAQpK,KAAK4I,EAAOuB,CAAC,GAGrCnB,EAAYY,QACZf,EAAUwB,aAAa,aAAcrB,EAAYY,OAAO,EAGxDf,EAAUwB,aAAa,aAAc,QAAQ,GAYrDhC,GAAa1J,UAAU2L,kBAAoB,SAAU5B,EAAMC,EAAS4B,GAChE,IAAI3B,EAAQnK,KACRoK,EAAYF,EAAQ6B,cAAc,IAAM9B,EAAKK,EAAE,EAE/C0B,GADJ5B,EAAUwB,aAAa,eAAgB3B,EAAKgC,KAAKC,UAAU,EAC3CC,eAAa/B,EAAWM,QAAM,GAC9CsB,EAAU5K,cAAc,CAAE6J,SAAUe,EAAUf,SAAWxG,EAAQH,GAAsB,EACvF8F,EAAUqB,QAAU,SAAUC,GACtBzB,EAAKQ,eAAekB,SACpB1B,EAAKQ,eAAekB,QAAQpK,KAAK4I,EAAOuB,CAAC,EAEzCI,EAAeM,QAAQC,UAAUC,SAAS,UAAU,GACpDR,EAAeS,WAY3B3C,GAAa1J,UAAUsM,qBAAuB,SAAUvC,EAAMC,GAC1D,IAAIC,EAAQnK,KACRoK,EAAYF,EAAQ6B,cAAc,IAAM9B,EAAKK,EAAE,EAC/C0B,EAAYG,eAAa/B,EAAWM,QAAM,EAE9CO,GAAWA,EADIe,EAAUf,SAASwB,MAAMhI,CAAK,GACzBiI,OAAO,SAAU1K,GAAS,OAAOA,IAAUsC,GAAuB,EACtF0H,EAAU5K,cAAc,CAAE6J,SAAUA,EAAS0B,KAAKlI,CAAK,EAAG,EAC1D2F,EAAUqB,QAAU,SAAUC,GACtBzB,EAAKQ,eAAekB,SACpB1B,EAAKQ,eAAekB,QAAQpK,KAAK4I,EAAOuB,CAAC,IAUrD9B,GAAa1J,UAAU0M,MAAQ,SAAUC,GACrC,IAAIzC,EAAY0C,EAAe9M,KAAK+J,OAAQ8C,CAAS,EAChDzC,CAAAA,IAGD4B,EAAYG,eAAa/B,EAAWM,QAAM,GAC/BM,UACXgB,EAAUY,SAUlBhD,GAAa1J,UAAU6M,aAAe,SAAU1L,EAAMiJ,GAClD,IASI0B,EATAgB,EAAWC,EAAQjN,KAAK+J,OAAOmD,KAAM5C,CAAE,EACtC0C,IAGLG,QAAMH,EAAS/C,KAAKQ,eAAgBpJ,CAAI,EACpC+I,EAAY0C,EAAe9M,KAAK+J,OAAQO,EAAI0C,CAAQ,KAIpDhB,EAAYG,eAAa/B,EAAWM,QAAM,EAC1CrJ,EAAKgK,UACLjB,EAAUiC,UAAUe,IAAI,UAAU,EAElC/L,EAAK4J,WACL5J,EAAK4J,UAAYpH,GAAuBY,EAAQJ,GAAiBI,EAAQpD,EAAK4J,UAAUC,QAExF7J,EAAK8J,UACL9J,EAAK8J,QAAU6B,EAAS/C,KAAKc,aAAe/L,iBAAegE,MAAQ,GAAK3B,EAAK8J,QAC7Ef,EAAUwB,aAAa,aAAcvK,EAAK8J,OAAO,GAErD,OAAO9J,EAAKsK,QACZK,EAAU5K,cAAcC,CAAI,IAUhCuI,GAAa1J,UAAUmN,iBAAmB,SAAUjB,EAASnC,GACzCkC,eAAaC,EAAS1B,QAAM,EAClCtJ,cAAc,CACpB0J,aAAcb,EAAKc,aAAe/L,iBAAeiE,MAAQ,MAAQ,OACjEkI,QAASlB,EAAKc,aAAe/L,iBAAegE,MAAQ,GAAKiH,EAAKQ,eAAeU,QAChF,GAEEvB,IAlKP,SAASA,GAAaG,GAClB/J,KAAK+J,OAASA,ECClBuD,GAAepN,UAAU2J,cAAgB,WACrC,MAAO,kBAEXyD,GAAepN,UAAU4J,QAAU,WAC/B9J,KAAK+J,OAAS,MAUlBuD,GAAepN,UAAUqN,eAAiB,SAAUtD,EAAMC,GACtD,IAAIC,EAAQnK,KACRwN,EAAWxN,KAAK+J,OAAOM,cAAc,QAAS,CAC9CC,GAAIL,EAAKK,GACZ,EAEGmD,GADJvD,EAAQM,YAAYgD,CAAQ,EACLvD,EAAKwD,kBACxBA,EAAiBlC,gBACbkC,EAAiBlC,eAAejB,IAChC,OAAOmD,EAAiBlC,eAAejB,GAG/C,IAAIoD,WAAS,CACT/C,OAAQ3K,KAAK+J,OAAOY,OACpBC,UAAW5K,KAAK+J,OAAOa,UACvBC,kBAAmB7K,KAAK+J,OAAOc,kBAC/B8C,QAASF,EAAiBE,QAC1B1C,UAAW5G,GAAiBI,GAASgJ,EAAiBxC,UAAuC,KAAKC,OAClG0C,MAAOH,EAAiBG,MACxBC,cAAeJ,EAAiBI,cAChC7C,SAAUf,EAAKe,SACfM,QAASmC,EAAiBnC,QAC1BC,eAAgBkC,EAAiBlC,eACjCuC,OAAQ,SAAUpC,GACV+B,EAAiBK,QACjBL,EAAiBK,OAAOvM,KAAK4I,EAAOuB,CAAC,IAG9C8B,CAAQ,GAWfF,GAAepN,UAAU2L,kBAAoB,SAAU5B,EAAMC,EAAS4B,GAClE,IAAI3B,EAAQnK,KACRwN,EAAWtD,EAAQ6B,cAAc,IAAM9B,EAAKK,EAAE,EAE9CyD,GADJP,EAAS5B,aAAa,eAAgB3B,EAAKgC,KAAKC,UAAU,EACxCC,eAAaqB,EAAUE,UAAQ,GACjDK,EAAY9C,SAAW8C,EAAY9C,SAAWxG,EAAQH,GACtDyJ,EAAYC,WACZD,EAAYD,OAAS,SAAUpC,GACvBzB,EAAKwD,iBAAiBK,QACtB7D,EAAKwD,iBAAiBK,OAAOvM,KAAK4I,EAAOuB,CAAC,EAE1CI,EAAeM,QAAQC,UAAUC,SAAS,UAAU,GACpDR,EAAeS,WAY3Be,GAAepN,UAAUsM,qBAAuB,SAAUvC,EAAMC,GAC5D,IAAIC,EAAQnK,KACRwN,EAAWtD,EAAQ6B,cAAc,IAAM9B,EAAKK,EAAE,EAC9CyD,EAAc5B,eAAaqB,EAAUE,UAAQ,EAEjDzC,GAAWA,EADI8C,EAAY9C,SAASwB,MAAMhI,CAAK,GAC3BiI,OAAO,SAAU1K,GAAS,OAAOA,IAAUsC,GAAuB,EACtFyJ,EAAY9C,SAAWA,EAAS0B,KAAKlI,CAAK,EAC1CsJ,EAAYC,WACZD,EAAYD,OAAS,SAAUpC,GACvBzB,EAAKwD,iBAAiBK,QACtB7D,EAAKwD,iBAAiBK,OAAOvM,KAAK4I,EAAOuB,CAAC,IAUtD4B,GAAepN,UAAU0M,MAAQ,SAAUC,GACvC,IAAIW,EAAWV,EAAe9M,KAAK+J,OAAQ8C,CAAS,EAC/CW,CAAAA,IAGDO,EAAc5B,eAAaqB,EAAUE,UAAQ,GAChC1C,UACb+C,EAAYnB,SAUpBU,GAAepN,UAAU+N,eAAiB,SAAU5M,EAAMiJ,GACtD,IAAI0C,EAAWC,EAAQjN,KAAK+J,OAAOmD,KAAM5C,CAAE,EACtC0C,IAGLG,QAAMH,EAAS/C,KAAKwD,iBAAkBpM,CAAI,EACtCmM,EAAWV,EAAe9M,KAAK+J,OAAQO,EAAI0C,CAAQ,KAInD3L,EAAK4J,WACL5J,EAAK4J,UAAY5G,GAAiBI,EAAQpD,EAAK4J,UAAUC,QAE7D,OAAO7J,EAAKyM,OACM3B,eAAaqB,EAAUE,UAAQ,EACrCtM,cAAcC,CAAI,QArIlCiM,GAuIOA,GAtIP,SAASA,GAAevD,GACpB/J,KAAK+J,OAASA,ECGlBmE,GAAkBhO,UAAU2J,cAAgB,WACxC,MAAO,qBAEXqE,GAAkBhO,UAAU4J,QAAU,WAClC9J,KAAK+J,OAAS,MAUlBmE,GAAkBhO,UAAUiO,kBAAoB,SAAUlE,EAAMC,GAC5D,IAAIC,EAAQnK,KACRwN,EAAWxN,KAAK+J,OAAOM,cAAc,QAAS,CAC9CC,GAAIL,EAAKK,GACZ,EAEG8D,GADJlE,EAAQM,YAAYgD,CAAQ,EACFvD,EAAKmE,qBAC3BC,EAAc,IAAIC,cAAY,CAC9B3D,OAAQ3K,KAAK+J,OAAOY,OACpBC,UAAW5K,KAAK+J,OAAOa,UACvBC,kBAAmB7K,KAAK+J,OAAOc,kBAC/B0D,QAASH,EAAoBG,QAC7BtD,UAAW5G,GAAiBI,GAAS2J,EAAoBnD,UAA0C,KAAKC,OACxGF,SAAUf,EAAKe,SACfwD,cAAeJ,EAAoBI,cACnCC,KAAML,EAAoBK,KAC1BC,aAAcN,EAAoBM,aAClCC,QAASP,EAAoBO,QAC7BC,aAAcR,EAAoBQ,aAClCC,YAAaT,EAAoBS,YACjC7M,MAAOoM,EAAoBpM,MAC3B8M,YAAa,WACTT,EAAYjC,QAAQ2C,cAAc1C,UAAU2C,OAAOzK,EAAiB,EAChE6J,EAAoBU,aACpBV,EAAoBU,YAAYvN,KAAK4I,CAAK,GAGlD8E,WAAYb,EAAoBa,WAChCC,iBAAkBd,EAAoBc,iBACtC5D,QAAS8C,EAAoB9C,QAC7BwC,OAAQ,SAAUpC,GACd0C,EAAoBpM,MAAQ0J,EAAE1J,MAAMkK,WAChCkC,EAAoBN,QACpBM,EAAoBN,OAAOvM,KAAK4I,EAAOuB,CAAC,GAGhDyD,KAAM,WACFd,EAAYjC,QAAQ2C,cAAc1C,UAAUe,IAAI7I,EAAiB,EAC7D6J,EAAoBe,MACpBf,EAAoBe,KAAK5N,KAAK4I,CAAK,GAG3CiF,OAAQhB,EAAoBgB,QAC7B5B,CAAQ,EAOP6B,GANAjB,EAAoB7C,iBAChB6C,EAAoB7C,eAAejB,IACnC,OAAO8D,EAAoB7C,eAAejB,GAE9CkB,GAAoBgC,EAAUY,EAAoB7C,cAAc,GAEtD8C,EAAYjC,QAAQ2C,eAClCO,eAAalC,IAAIiC,EAAS,aAAcrP,KAAKuP,mBAAmBC,KAAKxP,KAAMqP,EAAS,CAAA,CAAI,EAAGrP,IAAI,EAC/FsP,eAAalC,IAAIiC,EAAS,aAAcrP,KAAKuP,mBAAmBC,KAAKxP,KAAMqP,EAAS,CAAA,CAAK,EAAGrP,IAAI,GAEpGkO,GAAkBhO,UAAUqP,mBAAqB,SAAUF,EAASI,GAC5DA,EACAJ,EAAQhD,UAAUe,IAAIhJ,EAAY,EAGlCiL,EAAQhD,UAAU2C,OAAO5K,EAAY,GAY7C8J,GAAkBhO,UAAU2L,kBAAoB,SAAU5B,EAAMC,EAAS4B,GACrE,IAgBIxL,EAhBA6J,EAAQnK,KACRoO,EAAsBnE,EAAKmE,oBAS3BsB,GARAtB,EAAoBR,OAAsC,eAA7B5N,KAAK+J,OAAO4F,eACrC/B,EAAQ5N,KAAK+J,OAAOM,cAAc,MAAO,CACzCuF,UAAW,6BACXtF,GAAIL,EAAKK,GAAK,SACduF,UAAWzB,EAAoBR,MAClC,EACD1D,EAAQ4F,aAAalC,EAAO1D,EAAQ6F,UAAU,GAE7B7F,EAAQ6B,cAAc,IAAM9B,EAAKK,EAAE,GAEpD0F,GADJN,EAAe9D,aAAa,eAAgB3B,EAAKgC,KAAKC,UAAU,EAC3CC,eAAauD,EAAgBpB,aAAW,GAGzD2B,GAFJD,EAAe5O,cAAc,CAAE6J,SAAU+E,EAAe/E,SAAWxG,EAAQH,GAAsB,EAElF0L,EAAyB,UAExCA,EAAelB,YAAc,SAAUpD,GACnCpL,EAASoL,EAAEwE,MAAQxE,EAAEwE,MAAM5P,OAAS,KACpC0P,EAAe5D,QAAQ2C,cAAc1C,UAAU2C,OAAOzK,EAAiB,EACnE0F,EAAKmE,oBAAoBU,aACzB7E,EAAKmE,oBAAoBU,YAAYvN,KAAK4I,CAAK,GAGvD8F,EAASE,MAAQ,WACT7P,GAAU,CAACA,EAAO8P,QAAQ,8BAA8B,GACpDtE,EAAeM,QAAQC,UAAUC,SAAS,UAAU,GACpDR,EAAeS,WAa/B2B,GAAkBhO,UAAUsM,qBAAuB,SAAUvC,EAAMC,GAC/D,IAAIC,EAAQnK,KAQR0P,GAPsBzF,EAAKmE,oBACPR,QAChBA,EAAQ1D,EAAQ6B,cAAc,IAAM9B,EAAKK,GAAK,QAAQ,IAEtDsD,EAAMoB,SAGO9E,EAAQ6B,cAAc,IAAM9B,EAAKK,EAAE,GACpD0F,EAAiB7D,eAAauD,EAAgBpB,aAAW,EAE7DrD,GAAWA,EADI+E,EAAe/E,SAASwB,MAAMhI,CAAK,GAC9BiI,OAAO,SAAU1K,GAAS,OAAOA,IAAUsC,GAAuB,EACtF0L,EAAe5O,cAAc,CAAE6J,SAAUA,EAAS0B,KAAKlI,CAAK,EAAG,EAChDuL,EAAyB,SAE/BG,MAAQ,KACjBH,EAAelB,YAAc,WACzBkB,EAAe5D,QAAQ2C,cAAc1C,UAAU2C,OAAOzK,EAAiB,EACnE0F,EAAKmE,oBAAoBU,aACzB7E,EAAKmE,oBAAoBU,YAAYvN,KAAK4I,CAAK,IAI3D+D,GAAkBhO,UAAUmQ,kBAAoB,SAAUxD,GAClDW,EAAWV,EAAe9M,KAAK+J,OAAQ8C,CAAS,EACpD,OAAOW,EAAWrB,eAAaqB,EAAUc,aAAW,EAAI,MAU5DJ,GAAkBhO,UAAUoQ,SAAW,SAAUzD,EAAW7K,EAAOiK,GAC3D+D,EAAiBhQ,KAAKqQ,kBAAkBxD,CAAS,EACrD,OAAOmD,EAAiBA,EAAeM,SAAStO,EAAOiK,CAAI,EAAI,IAQnEiC,GAAkBhO,UAAUqM,OAAS,SAAUM,GACvCmD,EAAiBhQ,KAAKqQ,kBAAkBxD,CAAS,EAChDmD,GAGAA,CAAAA,EAAehF,UAChBgF,EAAezD,UAUvB2B,GAAkBhO,UAAUqQ,kBAAoB,SAAUlP,EAAMiJ,GAC5D,IAAI0C,EAAWC,EAAQjN,KAAK+J,OAAOmD,KAAM5C,CAAE,EACtC0C,IAGLG,QAAMH,EAAS/C,KAAKwD,iBAAkBpM,CAAI,EACtCmM,EAAWV,EAAe9M,KAAK+J,OAAQO,EAAI0C,CAAQ,KAInD3L,EAAK4J,WACL5J,EAAK4J,UAAY5G,GAAiBI,EAAQpD,EAAK4J,UAAUC,QAE7D,OAAO7J,EAAKyN,YACZ,OAAOzN,EAAK8N,KACShD,eAAaqB,EAAUc,aAAW,EACxClN,cAAcC,CAAI,IAOrC6M,GAAkBhO,UAAUsQ,wBAA0B,SAAUpE,GAExDiD,EADiBlD,eAAaC,EAASkC,aAAW,EACzBlC,QAAQ2C,cACrCO,eAAaN,OAAOK,EAAS,aAAcrP,KAAKuP,kBAAkB,EAClED,eAAaN,OAAOK,EAAS,aAAcrP,KAAKuP,kBAAkB,GA3NtErB,GA6NOA,GA5NP,SAASA,GAAkBnE,GACvB/J,KAAK+J,OAASA,ECClB0G,GAAevQ,UAAU2J,cAAgB,WACrC,MAAO,kBAEX4G,GAAevQ,UAAU4J,QAAU,WAC/B9J,KAAK+J,OAAS,MAUlB0G,GAAevQ,UAAUwQ,eAAiB,SAAUzG,EAAMC,GACtD,IAAIC,EAAQnK,KACRwN,EAAWxN,KAAK+J,OAAOM,cAAc,QAAS,CAC9CC,GAAIL,EAAKK,GACZ,EAEGqG,GADJzG,EAAQM,YAAYgD,CAAQ,EACLvD,EAAK0G,kBACxBA,EAAiBpF,gBACboF,EAAiBpF,eAAejB,IAChC,OAAOqG,EAAiBpF,eAAejB,GAG/C,IAAIsG,WAAS,CACTjG,OAAQ3K,KAAK+J,OAAOY,OACpBC,UAAW5K,KAAK+J,OAAOa,UACvBC,kBAAmB7K,KAAK+J,OAAOc,kBAC/BgG,YAAa,CAAA,EACbC,eAAgB,QAChBC,aAAc,CAAA,EACdC,WAAY,CAAA,EACZC,eAAgBN,EAAiBM,eACjCC,SAAUP,EAAiBO,SAC3BjG,UAAW5G,GAAiBI,GAASkM,EAAiB1F,UAAuC,KAAKC,OAClGiG,WAAYR,EAAiBQ,WAC7BC,QAAS,CAACnH,EAAKe,SACfqG,OAAQV,EAAiBU,OACzBC,WAAYX,EAAiBW,WAC7BC,eAAgBZ,EAAiBY,eACjCC,cAAeb,EAAiBa,cAChCC,eAAgBd,EAAiBc,eACjCC,MAAOf,EAAiBe,MACxBC,aAAchB,EAAiBgB,aAC/BC,kBAAmBjB,EAAiBiB,kBACpCC,YAAalB,EAAiBkB,YAC9BC,YAAanB,EAAiBmB,YAC9BC,WAAYpB,EAAiBoB,WAC7BC,gBAAiBrB,EAAiBqB,gBAClCC,UAAWtB,EAAiBsB,UAC5BlQ,KAAM4O,EAAiB5O,KACvBC,MAAO2O,EAAiB3O,MACxBkQ,MAAOvB,EAAiBuB,MACxBjD,WAAY0B,EAAiB1B,WAC7BE,KAAMwB,EAAiBxB,KACvB5D,eAAgBoF,EAAiBpF,eACjC4E,MAAO,SAAUzE,GACTiF,EAAiBR,OACjBQ,EAAiBR,MAAM5O,KAAK4I,EAAOuB,CAAC,GAG5CyG,UAAWxB,EAAiBwB,UAC5BrE,OAAQ6C,EAAiB7C,OACzBsB,OAAQuB,EAAiBvB,OACzB9D,QAASqF,EAAiBrF,SAC3BkC,CAAQ,GAWfiD,GAAevQ,UAAU2L,kBAAoB,SAAU5B,EAAMC,EAAS4B,GAClE,IAAI3B,EAAQnK,KACR2Q,EAAmB1G,EAAK0G,iBASxBnD,GARAmD,EAAiB/C,OAAsC,eAA7B5N,KAAK+J,OAAO4F,eAClC/B,EAAQ5N,KAAK+J,OAAOM,cAAc,MAAO,CACzCuF,UAAW,0BACXtF,GAAIL,EAAKK,GAAK,SACduF,UAAWc,EAAiB/C,MAC/B,EACD1D,EAAQ4F,aAAalC,EAAO1D,EAAQ6F,UAAU,GAEnC7F,EAAQ6B,cAAc,IAAM9B,EAAKK,EAAE,GAE9C8H,GADJ5E,EAAS5B,aAAa,eAAgB3B,EAAKgC,KAAKC,UAAU,EACxCC,eAAaqB,EAAUoD,UAAQ,GACjDwB,EAAYhR,cAAc,CAAE6J,SAAUmH,EAAYnH,SAAWxG,EAAQH,GAAsB,EAC3F8N,EAAYjC,MAAQ,SAAUzE,GAC1B,IAAIpL,EAASoL,EAAEwE,MAAQxE,EAAEwE,MAAM5P,OAAS,KACpC2J,EAAK0G,iBAAiBR,OACtBlG,EAAK0G,iBAAiBR,MAAM5O,KAAK4I,EAAOuB,CAAC,EAEzCpL,GAAU,CAACA,EAAO8P,QAAQ,8BAA8B,GACpDtE,EAAeM,QAAQC,UAAUC,SAAS,UAAU,GACpDR,EAAeS,WAa/BkE,GAAevQ,UAAUsM,qBAAuB,SAAUvC,EAAMC,GAC5D,IAAIC,EAAQnK,KAQRwN,GAPmBvD,EAAK0G,iBACP/C,QACbA,EAAQ1D,EAAQ6B,cAAc,IAAM9B,EAAKK,GAAK,QAAQ,IAEtDsD,EAAMoB,SAGC9E,EAAQ6B,cAAc,IAAM9B,EAAKK,EAAE,GAC9C8H,EAAcjG,eAAaqB,EAAUoD,UAAQ,EAEjD3F,GAAWA,EADImH,EAAYnH,SAASwB,MAAMhI,CAAK,GAC3BiI,OAAO,SAAU1K,GAAS,OAAOA,IAAUsC,GAAuB,EACtF8N,EAAYhR,cAAc,CAAE6J,SAAUA,EAAS0B,KAAKlI,CAAK,EAAG,EAC5D2N,EAAYjC,MAAQ,SAAUzE,GACtBzB,EAAK0G,iBAAiBR,OACtBlG,EAAK0G,iBAAiBR,MAAM5O,KAAK4I,EAAOuB,CAAC,IAIrD+E,GAAevQ,UAAUmS,eAAiB,SAAUxF,GAC5CW,EAAWV,EAAe9M,KAAK+J,OAAQ8C,CAAS,EACpD,OAAOW,EAAWrB,eAAaqB,EAAUoD,UAAQ,EAAI,MAWzDH,GAAevQ,UAAUwM,OAAS,SAAUG,EAAWsE,EAAYmB,EAAOjB,GACtErR,KAAKqS,eAAexF,CAAS,EAAEH,OAAOyE,EAAYmB,EAAOjB,CAAM,GAQnEZ,GAAevQ,UAAUqS,UAAY,SAAU1F,GACvCuF,EAAcpS,KAAKqS,eAAexF,CAAS,EAC1CuF,GAGLA,EAAYG,aAQhB9B,GAAevQ,UAAUsS,UAAY,SAAU3F,GACvCuF,EAAcpS,KAAKqS,eAAexF,CAAS,EAC1CuF,GAGLA,EAAYI,aAShB/B,GAAevQ,UAAUuS,eAAiB,SAAUpR,EAAMiJ,GACtD,IAAI0C,EAAWC,EAAQjN,KAAK+J,OAAOmD,KAAM5C,CAAE,EACtC0C,IAGLG,QAAMH,EAAS/C,KAAK0G,iBAAkBtP,CAAI,EACtCmM,EAAWV,EAAe9M,KAAK+J,OAAQO,EAAI0C,CAAQ,KAInD3L,EAAK4J,WACL5J,EAAK4J,UAAY5G,GAAiBI,EAAQpD,EAAK4J,UAAUC,QAE7D,OAAO7J,EAAK8O,MACMhE,eAAaqB,EAAUoD,UAAQ,EACrCxP,cAAcC,CAAI,QAzMlCoP,GA2MOA,GA1MP,SAASA,GAAe1G,GACpB/J,KAAK+J,OAASA,ECIlB2I,EAAexS,UAAU2J,cAAgB,WACrC,MAAO,kBAEX6I,EAAexS,UAAU4J,QAAU,WAC/B9J,KAAK+J,OAAS,MAUlB2I,EAAexS,UAAUyS,eAAiB,SAAU1I,EAAMC,GACtD,IAAIC,EAAQnK,KACRoK,EAAYpK,KAAK+J,OAAOM,cAAc,SAAU,CAChDC,GAAIL,EAAKK,GACZ,EAEGsI,GADJ1I,EAAQM,YAAYJ,CAAS,EACNH,EAAK2I,kBACxB3H,GAAYpH,GAAuBY,EAAQJ,GAAiBI,GAASmO,EAAiB3H,UAC1D,KAAKC,OACrC,IAAI2H,iBAAe,CACflI,OAAQ3K,KAAK+J,OAAOY,OACpBC,UAAW5K,KAAK+J,OAAOa,UACvBC,kBAAmB7K,KAAK+J,OAAOc,kBAC/BC,aAAcb,EAAKc,aAAe/L,iBAAeiE,MAAQ,MAAQ,OACjE6P,kBAAmBF,EAAiBE,kBACpC3H,QAASlB,EAAKc,aAAe/L,iBAAegE,MAAQ,GAAK4P,EAAiBzH,QAC1EF,SAAUA,GAAahB,EAAKc,aAAe/L,iBAAeiE,MAAUwB,EAAQR,GAAgB,IAC5F+G,SAAUf,EAAKe,SACf/I,QAAS2Q,EAAiB3Q,QAC1B8Q,MAAOH,EAAiBG,MACxBzS,OAAQsS,EAAiBtS,OACzB0S,mBAAoBJ,EAAiBI,mBACrClE,YAAa,SAAUpD,GACfkH,EAAiB9D,aACjB8D,EAAiB9D,YAAYvN,KAAK4I,EAAOuB,CAAC,GAGlDuH,iBAAkBL,EAAiBK,iBACnChE,WAAY2D,EAAiB3D,WAC7BkB,MAAO,SAAUzE,GACTkH,EAAiBzC,OACjByC,EAAiBzC,MAAM5O,KAAK4I,EAAOuB,CAAC,GAG5CJ,QAASsH,EAAiBtH,QAC1B6D,KAAMyD,EAAiBzD,KACvBC,OAAQwD,EAAiBxD,OAC5B,EAAE8D,SAAS9I,CAAS,EACjBwI,EAAiBrH,iBACbqH,EAAiBrH,eAAejB,IAChC,OAAOsI,EAAiBrH,eAAejB,GAE3CkB,GAAoBpB,EAAWwI,EAAiBrH,cAAc,IAYtEmH,EAAexS,UAAU2L,kBAAoB,SAAU5B,EAAMC,EAAS4B,GAClE,IAMIxL,EANA6J,EAAQnK,KACRmT,EAAkBjJ,EAAQ6B,cAAc,IAAM9B,EAAKK,EAAE,EAErD8I,GADJD,EAAgBvH,aAAa,eAAgB3B,EAAKgC,KAAKC,UAAU,EAClDC,eAAagH,EAAiBN,gBAAc,GAC3DO,EAASnI,SAAWmI,EAASnI,SAAWxG,EAAQH,GAChD8O,EAASpF,WAEToF,EAAStE,YAAc,SAAUpD,GACzBzB,EAAK2I,iBAAiB9D,aACtB7E,EAAK2I,iBAAiB9D,YAAYvN,KAAK4I,EAAOuB,CAAC,EAEnDpL,EAASoL,EAAEwE,MAAQxE,EAAEwE,MAAM5P,OAAS,MAExC8S,EAASjD,MAAQ,SAAUzE,GACnBzB,EAAK2I,iBAAiBzC,OACtBlG,EAAK2I,iBAAiBzC,MAAM5O,KAAK4I,EAAOuB,CAAC,EAEzCpL,GAAU,CAACA,EAAO8P,QAAQ,8BAA8B,GACpDtE,EAAeM,QAAQC,UAAUC,SAAS,UAAU,GACpDR,EAAeS,WAa/BmG,EAAexS,UAAUsM,qBAAuB,SAAUvC,EAAMC,GAC5D,IAAIC,EAAQnK,KACRmT,EAAkBjJ,EAAQ6B,cAAc,IAAM9B,EAAKK,EAAE,EACrD8I,EAAWjH,eAAagH,EAAiBN,gBAAc,EAE3D5H,GAAWA,EADImI,EAASnI,SAASwB,MAAMhI,CAAK,GACxBiI,OAAO,SAAU1K,GAAS,OAAOA,IAAUsC,GAAuB,EACtF8O,EAASnI,SAAWA,EAAS0B,KAAKlI,CAAK,EACvC2O,EAASpF,WACToF,EAASjD,MAAQ,SAAUzE,GACnBzB,EAAK2I,iBAAiBzC,OACtBlG,EAAK2I,iBAAiBzC,MAAM5O,KAAK4I,EAAOuB,CAAC,GAGjD0H,EAAStE,YAAc,SAAUpD,GACzBzB,EAAK2I,iBAAiB9D,aACtB7E,EAAK2I,iBAAiB9D,YAAYvN,KAAK4I,EAAOuB,CAAC,IAe3DgH,EAAexS,UAAUmT,uBAAyB,SAAU/I,EAAIgJ,EAAMrR,EAASsR,EAAUC,EAAa5I,GAClG,IAAIT,EAAQnK,KAERoK,GADJpK,KAAK4K,UAAYA,EACD5K,KAAK+J,OAAOM,cAAc,SAAU,CAChDC,GAAIA,EAAKvB,EAAcC,GAC1B,GAGGoK,GAFJG,EAAS3H,aAAa,WAAY,GAAG,EACrC4H,EAAYhJ,YAAYJ,CAAS,EAClB,IAAIyI,iBAAe,CAC9B5Q,QAASA,EACT3B,OAAQiT,EACR5I,OAAQ3K,KAAK+J,OAAOY,OACpBC,UAAW5K,KAAK+J,OAAOa,UACvBC,kBAAmB7K,KAAK+J,OAAOc,kBAC/BI,SAAUhH,GAAeQ,EAAQ6B,GACjCwE,aAAc,MACdK,QAASmI,EACTxE,YAAa,SAAU2E,GACnBA,EAAKC,OAAS,CAACC,oBAAkBF,EAAKvD,OAASE,UAAQqD,EAAKvD,MAAM5P,OAAQ,IAAMgE,EAAoB,CAAC,IAE1G8F,CAAS,GAKZ,OAJAwJ,GAAcL,EAAUvT,KAAK+J,MAAM,EACnCK,EAAUqB,QAAUrB,EAAUyJ,UAAY,WAAc1J,EAAM2J,UAAY,GAE1EP,EAASM,UAAY,SAAUnI,GAAKvB,EAAM4J,iBAAiBrI,EAAG6H,CAAQ,GAC/DH,GAEXV,EAAexS,UAAU6T,iBAAmB,SAAUrI,EAAGpL,GACrD,IAII0T,EAJAC,EAAkBvU,MAAMQ,UAAUgU,MAAM3S,KAAKjB,EAAO6T,iBAAiB,YAAY,CAAC,EAClFC,EAAmB1U,MAAMQ,UAAUgU,MAAM3S,KAAKjB,EAAO6T,iBAAiB,oBAAoB,CAAC,EAC3FpB,EAAQkB,EAAgBI,OAAOD,CAAgB,EAC/CE,EAAmBhU,EAAO6T,iBAAiB,aAAa,EAE5D,GAAIG,EACA,IAAK,IAAItT,EAAI,EAAGA,EAAIsT,EAAiB3T,OAAQK,CAAC,GACtCsT,EAAiBC,SAASvT,EAAEkL,WAAY,EAAE,GAAGkE,QAAQ,gBAAgB,IACrE4D,EAAcM,EAAiBC,SAASvT,EAAEkL,WAAY,EAAE,IAIpE,GAAI8H,EACA,IAAShT,EAAI,EAAGA,EAAI+R,EAAMpS,OAAQK,CAAC,GAC3B+R,EAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGG,UAAUC,SAAS,YAAY,GAC7DyG,EAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGkE,QAAQ,gBAAgB,IAC1DpQ,KAAK8T,UAAY9S,IAK7B0K,EAAEpL,OAAO+L,UAAUC,SAAS,WAAW,GAAKZ,EAAEpL,OAAO+L,UAAUC,SAAS,mBAAmB,GAAKZ,EAAEpL,OAAO+L,UAAUC,SAAS,wBAAwB,GACpJZ,EAAEpL,OAAO+L,UAAUC,SAAS,oBAAoB,GAAKZ,EAAEpL,OAAO+L,UAAUC,SAAS,qBAAqB,KACxF,eAAVZ,EAAEnL,MAA0BmL,EAAE8I,UAAsB,QAAV9I,EAAEnL,MAC5CP,KAAKyU,iBAAiB/I,EAAG,CAAC1L,KAAK4K,UAAWmI,CAAK,EAErC,cAAVrH,EAAEnL,KAAwBmL,EAAE8I,UAAsB,QAAV9I,EAAEnL,MAC1CP,KAAKyU,iBAAiB/I,EAAG1L,KAAK4K,UAAWmI,CAAK,GAI1DL,EAAexS,UAAUuU,iBAAmB,SAAU/I,EAAGd,EAAWmI,GAC1DA,EAAM,GAAG1G,UAAUC,SAAS,qBAAsB,GACpDyG,EAAM,GAAG1G,UAAUe,IAAI,qBAAqB,EAE1C2F,EAAMA,EAAMpS,OAAS,GAAG0L,UAAUC,SAAS,oBAAqB,GAClEyG,EAAMA,EAAMpS,OAAS,GAAG0L,UAAUe,IAAI,oBAAoB,EAE1DxC,GACuB,IAAnB5K,KAAK8T,WAAmBf,EAAMwB,SAASvU,KAAK8T,UAAU5H,WAAY,EAAE,GAAGG,UAAUC,SAAS,qBAAqB,GAC/GtM,KAAK0U,gBAAgBhJ,EAAGqH,EAAO,CAAA,CAAI,EAElCrH,EAAEpL,OAAO+L,UAAUC,SAAS,YAAY,GAAMZ,EAAEpL,OAAO+L,UAAUC,SAAS,oBAAoB,GAC9FZ,EAAEpL,OAAO+L,UAAUC,SAAS,0BAA0B,GAAMZ,CAAAA,EAAEpL,OAAO+L,UAAUC,SAAS,qBAAqB,GACxF,IAAnBtM,KAAK8T,WAAqBpI,CAAAA,EAAEpL,OAAO+L,UAAUC,SAAS,WAAW,GAAKZ,CAAAA,EAAEpL,OAAO+L,UAAUC,SAAS,mBAAmB,IACxHtM,KAAK8T,SAAS,GACd9T,KAAK0U,gBAAgBhJ,EAAGqH,EAAO,CAAA,CAAI,GAEnCrH,EAAEpL,OAAO+L,UAAUC,SAAS,oBAAoB,GAEjCtM,CAAAA,KAAK2U,kBAAkBjJ,EAAGqH,CAAK,IAE1C/S,KAAK8T,UAAY,EACjB9T,KAAK0U,gBAAgBhJ,EAAGqH,EAAO,CAAA,CAAI,GAGvCrH,EAAEpL,OAAO+L,UAAUC,SAAS,wBAAwB,IACpDtM,KAAK8T,UAAY,EACjB9T,KAAK0U,gBAAgBhJ,EAAGqH,EAAO,CAAA,CAAI,KAIlCrH,EAAEpL,OAAO+L,UAAUC,SAAS,YAAY,GAAwB,IAAnBtM,KAAK8T,YACnD9T,KAAK8T,SAAS,GACd9T,KAAK0U,gBAAgBhJ,EAAGqH,EAAO,CAAA,CAAK,GAEpCrH,EAAEpL,OAAO+L,UAAUC,SAAS,qBAAqB,GAElCtM,CAAAA,KAAK2U,kBAAkBjJ,EAAGqH,CAAK,IAE1C/S,KAAK8T,UAAYf,EAAMpS,OAAS,EAChCX,KAAK0U,gBAAgBhJ,EAAGqH,EAAO,CAAA,CAAK,GAGxCrH,EAAEpL,OAAO+L,UAAUC,SAAS,wBAAwB,IACpDtM,KAAK8T,UAAYf,EAAMpS,OAAS,EAChCX,KAAK0U,gBAAgBhJ,EAAGqH,EAAO,CAAA,CAAK,IAGxCrH,EAAEpL,OAAO+L,UAAUC,SAAS,YAAY,GAAgB,QAAVZ,EAAEnL,MAC5CqK,EACI5K,KAAK8T,UAAYf,EAAMpS,OAAS,GAChCX,KAAK8T,SAAS,GAIG,EAAjB9T,KAAK8T,WACL9T,KAAK8T,SAAS,KAK9BpB,EAAexS,UAAUyU,kBAAoB,SAAUjJ,EAAGqH,GACtD,IACI6B,EADAC,EAAiB9B,EAAMwB,SAASvU,KAAK8T,UAAU5H,WAAY,EAAE,GAAGkE,QAAQ,2BAA2B,EAKvG,MAAIwE,CAAAA,EAFAA,EADAC,EACkBA,EAAe9I,cAAc,yBAAyB,EAExE6I,KACc,QAAVlJ,EAAEnL,KACFmL,EAAEoJ,iBAEND,EAAe9I,cAAc,yBAAyB,EAAEgJ,QACjD,CAAA,IAMfrC,EAAexS,UAAUwU,gBAAkB,SAAUhJ,EAAGqH,EAAOnI,GAE3D,IADA,IAAIoK,EAAajC,EAAM/S,KAAK8T,WAAW1D,QAAQ,gBAAgB,EACxD4E,GAAcA,EAAW3I,UAAUC,SAAS,YAAY,GAAG,CAC9D,GAAI1B,EACA,GAAI5K,KAAK8T,UAAYf,EAAMpS,OAAS,EAChCX,KAAK8T,SAAS,OAEb,CAGD,GADe9T,KAAK2U,kBAAkBjJ,EAAGqH,CAAK,EAE1C,MAEJ/S,KAAK8T,UAAY,OAIrB,GAAqB,EAAjB9T,KAAK8T,UACL9T,KAAK8T,SAAS,OAEb,CAGD,GADe9T,KAAK2U,kBAAkBjJ,EAAGqH,CAAK,EAE1C,MAEJ/S,KAAK8T,UAAYf,EAAMpS,OAAS,EAGxCqU,EAAajC,EAAM/S,KAAK8T,WAAW1D,QAAQ,gBAAgB,EAEjD,QAAV1E,EAAEnL,KACFmL,EAAEoJ,iBAEN/B,EAAMwB,SAASvU,KAAK8T,UAAU5H,WAAY,EAAE,GAAG6I,SASnDrC,EAAexS,UAAU+U,uBAAyB,SAAU9B,GACxD,IAAIC,EAAWjH,eAAagH,EAAiBN,gBAAc,EAC7C1G,eAAaiH,EAAS9S,OAAQ4U,SAAO,EAC3CpL,UACRqJ,EAAgBpE,cAAcA,cAAce,aAAasD,EAAS9S,OAAQ6S,EAAgBpE,aAAa,EACvGqE,EAAStJ,UACTkF,SAAOmE,CAAe,GAU1BT,EAAexS,UAAUiV,kBAAoB,SAAUhC,EAAiB7I,GAGpE,OAFe6B,eAAagH,EAAiBN,gBAAc,EAC9BuC,SAAShJ,QACjBL,cAAc,IAAMzB,CAAE,GAU/CoI,EAAexS,UAAUmV,yBAA2B,SAAUrI,EAAUsI,GAChEnC,EAAkBmC,EAAWvJ,cAAc,IAAM/L,KAAK+J,OAAOmD,KAAKF,EAASuI,UAAUC,OAAOxI,EAASyI,YAAYnL,GAAKvB,EAAcC,EAAW,EAEnJ,OADemD,eAAagH,EAAiBN,gBAAc,EAC3CuC,SAAShJ,SAE7BsG,EAAexS,UAAUwV,eAAiB,SAAU7I,GAC5C8I,EAAc7I,EAAe9M,KAAK+J,OAAQ8C,CAAS,EACvD,OAAO8I,EAAcxJ,eAAawJ,EAAa9C,gBAAc,EAAI,MAWrEH,EAAexS,UAAU0V,SAAW,SAAU/I,EAAWgJ,EAAO9T,GAC5D/B,KAAK0V,eAAe7I,CAAS,EAAE+I,SAASC,EAAO9T,CAAI,GAUvD2Q,EAAexS,UAAU4V,YAAc,SAAUjJ,EAAWgJ,EAAOE,GAC/D/V,KAAK0V,eAAe7I,CAAS,EAAEiJ,YAAYD,EAAOE,CAAU,GAQhErD,EAAexS,UAAUqM,OAAS,SAAUM,GACpCmJ,EAAchW,KAAK0V,eAAe7I,CAAS,EAC1CmJ,GAGAA,CAAAA,EAAYhL,UACbgL,EAAYzJ,UAUpBmG,EAAexS,UAAU+V,eAAiB,SAAU5U,EAAMiJ,GACtD,IAAI0C,EAAWC,EAAQjN,KAAK+J,OAAOmD,KAAM5C,CAAE,EACtC0C,IAGLG,QAAMH,EAAS/C,KAAK2I,iBAAkBvR,CAAI,EACtC6U,EAASpJ,EAAe9M,KAAK+J,OAAQO,EAAI0C,CAAQ,KAIjDmJ,EAAUhK,eAAa+J,EAAQrD,gBAAc,EAC7CxR,EAAK4J,WACL5J,EAAK4J,UAAY5G,GAAiBI,EAAQZ,GAAuBY,EAAQpD,EAAK4J,UAAUC,OACxF7J,EAAK4J,SAAW+B,EAAS/C,KAAKc,aAAe/L,iBAAeiE,OACvDgB,GAAeQ,EAAQpD,EAAK4J,UAAUC,OAAS7J,EAAK4J,SACzDkL,EAAQlL,SAAW5J,EAAK4J,UAE5B,OAAO5J,EAAK8O,MACZ,OAAO9O,EAAKyN,YACRzN,EAAK8J,UACL9J,EAAK8J,QAAU6B,EAAS/C,KAAKc,aAAe/L,iBAAegE,MAAQ,GAAK3B,EAAK8J,SAEjFgL,EAAQ/U,cAAcC,CAAI,IAU9BqR,EAAexS,UAAUkW,mBAAqB,SAAUhK,EAASnC,GAC7D,IAAIkM,EAAUhK,eAAaC,EAASyG,gBAAc,EAC9C5H,EAAWkL,EAAQlL,SAASwB,MAAMhI,CAAK,EACvCwF,EAAKc,aAAe/L,iBAAeiE,MACnCgI,EAASoL,KAAKpS,EAAY,EAG1BgH,EAAWA,EAASyB,OAAO,SAAU1K,GAAS,OAAOA,IAAUiC,GAAe,EAElFkS,EAAQlL,SAAWA,EAAS0B,KAAKlI,CAAK,EACtC0R,EAAQ/U,cAAc,CAAE0J,aAAcb,EAAKc,aAAe/L,iBAAeiE,MAAQ,MAAQ,OAAQ,EACjGkT,EAAQ/U,cAAc,CAAE+J,QAASlB,EAAKc,aAAe/L,iBAAegE,MAAQ,GAAKiH,EAAK2I,iBAAiBzH,QAAS,OAzbpHuH,GA2bOA,EA1bP,SAASA,EAAe3I,GACpB/J,KAAK+J,OAASA,ECClBuM,GAAkBpW,UAAU2J,cAAgB,WACxC,MAAO,qBAEXyM,GAAkBpW,UAAU4J,QAAU,WAClC9J,KAAK+J,OAAS,MAUlBuM,GAAkBpW,UAAUqW,kBAAoB,SAAUtM,EAAMC,GAC5D,IAAIC,EAAQnK,KACRoK,EAAYpK,KAAK+J,OAAOM,cAAc,SAAU,CAChDC,GAAIL,EAAKK,GACZ,EAEGkM,GADJtM,EAAQM,YAAYJ,CAAS,EACHH,EAAKuM,qBAC3BvL,GAAYpH,GAAuBY,EAAQJ,GAAiBI,GAAS+R,EAAoBvL,UAC1D,KAAKC,OACpCuL,EAAc,IAAIC,cAAY,CAC9B/L,OAAQ3K,KAAK+J,OAAOY,OACpBC,UAAW5K,KAAK+J,OAAOa,UACvBC,kBAAmB7K,KAAK+J,OAAOc,kBAC/BC,aAAcb,EAAKc,aAAe/L,iBAAeiE,MAAQ,MAAQ,OACjE6P,kBAAmB0D,EAAoB1D,kBACvC7H,SAAUA,GAAahB,EAAKc,aAAe/L,iBAAeiE,MAAUwB,EAAQR,GAAgB,IAC5F+G,SAAUf,EAAKe,SACf/I,QAASuU,EAAoBvU,QAC7B8Q,MAAOyD,EAAoBzD,MAC3BzS,OAAQkW,EAAoBlW,OAC5BwO,YAAa,SAAUpD,GACf8K,EAAoB1H,aACpB0H,EAAoB1H,YAAYvN,KAAK4I,EAAOuB,CAAC,GAGrDuH,iBAAkBuD,EAAoBvD,iBACtChE,WAAYuH,EAAoBvH,WAChCkB,MAAO,WACHsG,EAAqB,QAAEpK,UAAU2C,OAAOzK,EAAiB,EACrDiS,EAAoBrG,OACpBqG,EAAoBrG,MAAM5O,KAAK4I,CAAK,GAG5CmB,QAASkL,EAAoBlL,QAC7B6D,KAAM,WACFsH,EAAqB,QAAEpK,UAAUe,IAAI7I,EAAiB,EAClDiS,EAAoBrH,MACpBqH,EAAoBrH,KAAK5N,KAAK4I,CAAK,GAG3CiF,OAAQoH,EAAoBpH,OAC5BxC,MAAO,SAAUlB,GACT8K,EAAoB5J,OACpB4J,EAAoB5J,MAAMrL,KAAK4I,EAAOuB,CAAC,IAGhDtB,CAAS,EAORuM,GANAH,EAAoBjL,iBAChBiL,EAAoBjL,eAAejB,IACnC,OAAOkM,EAAoBjL,eAAejB,GAE9CkB,GAAoBpB,EAAWoM,EAAoBjL,cAAc,GAEnDnB,EAAU2E,cAAchD,cAAc,iBAAiB,GAQrEsD,GAPJsH,EAAY9C,UAAY,SAAUnI,GAChB,UAAVA,EAAEnL,MACFmL,EAAEkL,2BACFD,EAAY/J,UAGpB5M,KAAK6W,WAAW5M,EAAMwM,CAAW,EACnBA,EAAqB,SACnCnH,eAAalC,IAAIiC,EAAS,aAAc,WAAcA,EAAQhD,UAAUe,IAAIhJ,EAAY,GAAMpE,IAAI,EAClGsP,eAAalC,IAAIiC,EAAS,aAAc,WAAcA,EAAQhD,UAAU2C,OAAO5K,EAAY,GAAMpE,IAAI,GAWzGsW,GAAkBpW,UAAU2L,kBAAoB,SAAU5B,EAAMC,EAAS4B,GACrE,IAsBIxL,EAtBA6J,EAAQnK,KACR8W,EAAiB5M,EAAQ6B,cAAc,IAAM9B,EAAKK,EAAE,EAEpDmM,GADJK,EAAelL,aAAa,eAAgB3B,EAAKgC,KAAKC,UAAU,EAC9CC,eAAa2K,EAAgBJ,aAAW,GAGtDC,GAFJF,EAAYxL,SAAWwL,EAAYxL,SAAWxG,EAAQH,GACtDmS,EAAYzI,WACM8I,EAAe/H,cAAchD,cAAc,iBAAiB,GAC1EgL,EAAQJ,EAAYK,aAAa,IAAI,EACrCC,EAAWC,SAASnL,cAAc,IAAMgL,EAAQ,QAAQ,EAC5DJ,EAAY9C,UAAY,SAAUnI,GAChB,UAAVA,EAAEnL,MACFmL,EAAEkL,2BACFD,EAAY/J,UAGpBqK,EAASpD,UAAY,SAAUnI,GACb,UAAVA,EAAEnL,MACFmL,EAAEoJ,iBACF2B,EAAqB,QAAEpK,UAAU2C,OAAO,eAAe,EACvDiI,EAASlL,cAAc,YAAY,EAAEa,UAI7C6J,EAAY3H,YAAc,SAAUpD,GAC5BzB,EAAKuM,oBAAoB1H,aACzB7E,EAAKuM,oBAAoB1H,YAAYvN,KAAK4I,EAAOuB,CAAC,EAEtDpL,EAASoL,EAAEwE,MAAQxE,EAAEwE,MAAM5P,OAAS,MAExCmW,EAAY7J,MAAQ,SAAUlB,GACtBzB,EAAKuM,oBAAoB5J,OACzB3C,EAAKuM,oBAAoB5J,MAAMrL,KAAK4I,EAAOuB,CAAC,EAE5CI,EAAeM,QAAQC,UAAUC,SAAS,UAAU,GACpDR,EAAeS,UAGvBkK,EAAYtG,MAAQ,SAAUzE,GACtBzB,EAAKuM,oBAAoBrG,OACzBlG,EAAKuM,oBAAoBrG,MAAM5O,KAAK4I,EAAOuB,CAAC,EAEhD+K,EAAqB,QAAEpK,UAAU2C,OAAOzK,EAAiB,EACrDjE,GAAU,CAACA,EAAO8P,QAAQ,8BAA8B,GACpDtE,EAAeM,QAAQC,UAAUC,SAAS,UAAU,GACpDR,EAAeS,WAa/B+J,GAAkBpW,UAAUsM,qBAAuB,SAAUvC,EAAMC,GAC/D,IAAIC,EAAQnK,KACR8W,EAAiB5M,EAAQ6B,cAAc,IAAM9B,EAAKK,EAAE,EACpDmM,EAActK,eAAa2K,EAAgBJ,aAAW,EAE1DzL,GAAWA,EADIwL,EAAYxL,SAASwB,MAAMhI,CAAK,GAC3BiI,OAAO,SAAU1K,GAAS,OAAOA,IAAUsC,GAAuB,EACtFmS,EAAYxL,SAAWA,EAAS0B,KAAKlI,CAAK,EAC1CgS,EAAYzI,WACZyI,EAAY3H,YAAc,SAAUpD,GAC5BzB,EAAKuM,oBAAoB1H,aACzB7E,EAAKuM,oBAAoB1H,YAAYvN,KAAK4I,EAAOuB,CAAC,GAG1D+K,EAAY7J,MAAQ,SAAUlB,GACtBzB,EAAKuM,oBAAoB5J,OACzB3C,EAAKuM,oBAAoB5J,MAAMrL,KAAK4I,EAAOuB,CAAC,GAGpD+K,EAAYtG,MAAQ,SAAUzE,GACtBzB,EAAKuM,oBAAoBrG,OACzBlG,EAAKuM,oBAAoBrG,MAAM5O,KAAK4I,EAAOuB,CAAC,EAEhD+K,EAAqB,QAAEpK,UAAU2C,OAAOzK,EAAiB,IAGjE+R,GAAkBpW,UAAU2W,WAAa,SAAU5M,EAAMkM,GACrDA,EAAuB,cAAE/U,cAAc,CAAE+J,QAAUlB,EAAKc,aAAe/L,iBAAe+D,OAAUkH,EAAKuM,oBAAoBrL,QAAU,GAAI,EACvIgL,EAAyB,gBAAE/U,cAAc,CAAE+J,QAAUlB,EAAKc,aAAe/L,iBAAeiE,MAASgH,EAAKuM,oBAAoBrL,QAAU,GAAI,GAE5ImL,GAAkBpW,UAAUiX,kBAAoB,SAAUtK,GAClDiK,EAAiBhK,EAAe9M,KAAK+J,OAAQ8C,CAAS,EAC1D,OAAOV,eAAa2K,EAAgBJ,aAAW,GAWnDJ,GAAkBpW,UAAU0V,SAAW,SAAU/I,EAAWgJ,EAAO9T,GAC/D/B,KAAKmX,kBAAkBtK,CAAS,EAAE+I,SAASC,EAAO9T,CAAI,GAU1DuU,GAAkBpW,UAAU4V,YAAc,SAAUjJ,EAAWgJ,EAAOE,GAClE/V,KAAKmX,kBAAkBtK,CAAS,EAAEiJ,YAAYD,EAAOE,CAAU,GAQnEO,GAAkBpW,UAAUqM,OAAS,SAAUM,GACvCuK,EAAcpX,KAAKmX,kBAAkBtK,CAAS,EAC7CuK,GAGAA,CAAAA,EAAYpM,UACboM,EAAY7K,UAUpB+J,GAAkBpW,UAAUmX,kBAAoB,SAAUhW,EAAMiJ,GAC5D,IAAI0C,EAAWC,EAAQjN,KAAK+J,OAAOmD,KAAM5C,CAAE,EACtC0C,IAGLG,QAAMH,EAAS/C,KAAKuM,oBAAqBnV,CAAI,EACzC6U,EAASpJ,EAAe9M,KAAK+J,OAAQO,EAAI0C,CAAQ,KAIjDmJ,EAAUhK,eAAa+J,EAAQQ,aAAW,EAC1CrV,EAAK4J,WACL5J,EAAK4J,UAAY5G,GAAiBI,EAAQZ,GAAuBY,EAAQpD,EAAK4J,UAAUC,OACxF7J,EAAK4J,SAAW+B,EAAS/C,KAAKc,aAAe/L,iBAAeiE,OACvDgB,GAAeQ,EAAQpD,EAAK4J,UAAUC,OAAS7J,EAAK4J,SACzDkL,EAAQlL,SAAW5J,EAAK4J,UAE5B,OAAO5J,EAAK8N,KACZ,OAAO9N,EAAKuL,MACZ,OAAOvL,EAAK8O,MACZ,OAAO9O,EAAKyN,YACZqH,EAAQ/U,cAAcC,CAAI,EACtBA,EAAK8J,UACLnL,KAAK6W,WAAW7J,EAAS/C,KAAMkM,CAAO,GAW9CG,GAAkBpW,UAAUoX,sBAAwB,SAAUlL,EAASnC,GACnE,IAAIkM,EAAUhK,eAAaC,EAASsK,aAAW,EAC3CzL,EAAWkL,EAAQlL,SAASwB,MAAMhI,CAAK,EACvCwF,EAAKc,aAAe/L,iBAAeiE,MACnCgI,EAASoL,KAAKpS,EAAY,EAG1BgH,EAAWA,EAASyB,OAAO,SAAU1K,GAAS,OAAOA,IAAUiC,GAAe,EAElFkS,EAAQlL,SAAWA,EAAS0B,KAAKlI,CAAK,EACtC0R,EAAQ/U,cAAc,CAAE0J,aAAcb,EAAKc,aAAe/L,iBAAeiE,MAAQ,MAAQ,OAAQ,EACjGjD,KAAK6W,WAAW5M,EAAMkM,CAAO,OAjRjCG,GAmROA,GAlRP,SAASA,GAAkBvM,GACvB/J,KAAK+J,OAASA,ECIf,SAASwN,EAASC,EAAKC,GAC1B,IAAK,IAAIzW,EAAI,EAAGA,EAAIwW,EAAI7W,OAAQK,CAAC,GAC7B,GAAIyW,EAAUD,EAAIjD,SAASvT,EAAEkL,WAAY,EAAE,GAAIlL,CAAC,EAC5C,OAAOA,EAGf,MAAO,CAAC,CACZ,CAQO,SAAS0W,GAAoBC,GAChC,GAAwB,UAApB,OAAOA,EAmBP,OAAOC,UAAQD,CAAQ,EAlBvB,IAAIxM,EAAU,GACd,IACI,IAAI0M,EAAUzI,SAAOuI,CAAQ,EAGzBxM,EAFA0M,EAE8B,WAApBA,EAAQC,QAAuBD,EAAQhI,UAAYgI,EAAQE,UAG3DJ,EAGlB,MAAOjM,GACHP,EAAUwM,EAEd,OAAOC,UAAQzM,CAAO,CAM9B,CAUO,SAAS8B,EAAQC,EAAM5C,EAAI2B,GAC9B,IAAK,IAAIjL,EAAI,EAAGA,EAAIkM,EAAKvM,OAAQK,CAAC,GAE9B,IADA,IAAIgX,EAAM9K,EAAKqH,SAASvT,EAAEkL,WAAY,EAAE,GAC/B+L,EAAI,EAAGA,EAAID,EAAIxC,OAAO7U,OAAQsX,CAAC,GAEpC,IADA,IAAIC,EAAQF,EAAIxC,OAAOjB,SAAS0D,EAAE/L,WAAY,EAAE,GACvCiM,EAAI,EAAGA,EAAID,EAAME,YAAYzX,OAAQwX,CAAC,GAE3C,IADA,IAAIE,EAAaH,EAAME,YAAY7D,SAAS4D,EAAEjM,WAAY,EAAE,GACnDoM,EAAI,EAAGA,EAAID,EAAWtF,MAAMpS,OAAQ2X,CAAC,GAAI,CAC9C,IAAIrO,EAAOoO,EAAWtF,MAAMwB,SAAS+D,EAAEpM,WAAY,EAAE,GACrD,GAAK5B,GAAML,EAAKK,KAAOA,GAAQ2B,GAAQhC,EAAKgC,OAASA,EACjD,MAAO,CACHhC,KAAMA,EAAMoO,WAAYA,EAAYH,MAAOA,EAC3C3C,SAAUvU,EAAGyU,WAAYwC,EAAGM,gBAAiBJ,EAAGrE,UAAWwE,GAOnF,OAAO,IACX,CASO,SAASE,GAActL,EAAM5C,GAChC,IAAK,IAAItJ,EAAI,EAAGA,EAAIkM,EAAKvM,OAAQK,CAAC,GAE9B,IADA,IAAIgX,EAAM9K,EAAKqH,SAASvT,EAAEkL,WAAY,EAAE,GAC/B+L,EAAI,EAAGA,EAAID,EAAIxC,OAAO7U,OAAQsX,CAAC,GAEpC,IADA,IAAIC,EAAQF,EAAIxC,OAAOjB,SAAS0D,EAAE/L,WAAY,EAAE,GACvCiM,EAAI,EAAGA,EAAID,EAAME,YAAYzX,OAAQwX,CAAC,GAAI,CAC/C,IAAIE,EAAaH,EAAME,YAAY7D,SAAS4D,EAAEjM,WAAY,EAAE,GAC5D,GAAImM,EAAW/N,KAAOA,EAClB,MAAO,CACH+N,WAAYA,EAAYH,MAAOA,EAC/B3C,SAAUvU,EAAGyU,WAAYwC,EAAGM,gBAAiBJ,GAMjE,OAAO,IACX,CASO,SAASM,GAASvL,EAAM5C,GAC3B,IAAK,IAAItJ,EAAI,EAAGA,EAAIkM,EAAKvM,OAAQK,CAAC,GAE9B,IADA,IAAIgX,EAAM9K,EAAKqH,SAASvT,EAAEkL,WAAY,EAAE,GAC/B+L,EAAI,EAAGA,EAAID,EAAIxC,OAAO7U,OAAQsX,CAAC,GAAI,CACxC,IAAIC,EAAQF,EAAIxC,OAAOjB,SAAS0D,EAAE/L,WAAY,EAAE,GAChD,GAAIgM,EAAM5N,KAAOA,EACb,MAAO,CACH4N,MAAOA,EAAO3C,SAAUvU,EAAGyU,WAAYwC,GAKvD,OAAO,IACX,CAOO,SAASS,GAAetM,EAASuM,GACtBxM,eAAaC,EAASuM,CAAU,EACtC7O,SACZ,CAUO,SAAS8O,GAAqBxM,EAASuM,EAAYE,GACxC1M,eAAaC,EAASuM,CAAU,EACtCvX,cAAcyX,CAAU,CACpC,CAUO,SAASC,GAAsB1M,EAASuM,EAAYI,GACzC5M,eAAaC,EAASuM,CAAU,EACtCvX,cAA6B,aAAfuX,EAA4B,CAAEvH,QAAS,CAAC2H,GAAY,CAAE/N,SAAU+N,EAAS,CACnG,CAUO,SAASjM,EAAe/C,EAAQO,EAAI0C,GACvC,IAMIsI,EANJ,MAAI,EAACtI,EAAAA,GACUC,EAAQlD,EAAOmD,KAAM5C,CAAE,IAMT,MADzBgL,EAAavL,EAAOiP,OAAOjG,MAAM/F,EAASuI,UAAUpK,SACzC0E,UAJA,KAOX9F,EAAO4F,eAAiB7Q,eAAama,QACjCjM,EAAS/C,KAAKiP,eAAiBja,cAAYga,SAC3C3D,EAActI,EAASkL,MAAiB,YAAInO,EAAOoP,qBAAqB9D,yBAAyBrI,EAAUsI,CAAU,EAC/GA,GACYvJ,cAAc,IAAMzB,CAAE,EAGjC,MAKA0C,EAAS/C,KAAKiP,eAAiBja,cAAYma,WAClD9D,EAAWvJ,cAAc,IAAMiB,EAAS/C,KAAKK,EAAE,EAAI,QAGpC0C,EAASkL,MAAMmB,oBAC1BlN,eAAamJ,EAAWvJ,cAAc,IAAMiB,EAASkL,MAAM5N,GAAKgP,CAA2B,EAAGzG,gBAAc,EAC1G9I,EAAOwP,aACEjZ,OAAOyL,cAAc,IAAMiB,EAAS/C,KAAKK,EAAE,CAItE,CAMO,SAASkP,GAAiBC,GAC7B,MAAO,CAAA,EAACA,EAAQtO,SAAWsO,EAAQxX,SAAWwX,EAAQC,OAASD,EAAQnP,IAAMmP,EAAQxO,SACzF,CAUO,SAAS0O,GAAkBlG,EAAMgG,EAASG,GAC7C,IAyBQC,EAzBJC,EAAWrG,EAAKnT,OAAO0W,aAAa,IAAI,EAExC+C,EADUH,EAAYlN,OAAO,SAAUhB,GAAK,OAAOA,EAAEpB,KAAOwP,EAAW,EAAE,GAC1DC,KACf5O,EAAUsO,EAAQpP,cAAc,MAAO,CACvCC,GAAIyP,EAAKzP,GAAK0P,GAAqC,IAAMD,EAAKzP,GAAK0P,GACtE,EASGC,GARJR,EAAQrN,QAAQ8N,OAAO/O,CAAO,EAC1B4O,EAAKL,QACDS,EAASV,EAAQpP,cAAc,MAAO,CACtCwF,UAAWkK,EAAKL,MAChB9J,UAAWwK,GACd,EACDjP,EAAQX,YAAY2P,CAAM,GAEVV,EAAQpP,cAAc,MAAO,CAC7CuF,UAAWyK,GACd,GACDlP,EAAQX,YAAYyP,CAAa,EAC7BF,EAAK9X,UACDqY,EAAYb,EAAQpP,cAAc,MAAO,CACzCuF,UAAWmK,EAAK9X,QAAU,IAAMsY,GACnC,EACDN,EAAczP,YAAY8P,CAAS,GAEnCP,EAAK5O,UACD0O,EAAiBJ,EAAQpP,cAAc,MAAO,CAC9CwF,UAAWkK,EAAK5O,QAChByE,UAAW4K,GACd,EACDP,EAAczP,YAAYqP,CAAc,GAE5CJ,EAAQrY,cAAc,CAClB+J,QAASA,EACTF,SAAU8O,EAAK9O,SAAW8O,EAAK9O,SAAW,IAAMwP,GAA2BA,GAC9E,CACL,CASO,SAAS7G,GAAcxH,EAASsO,GACnC,IAAIC,EAAgB,IAAIzF,UAAQ,CAC5B5U,OAAQ,IAAMsa,GACdC,aASJ,SAA6BpH,GACzBkG,GAAkBlG,EAAMkH,EAAeD,EAAOd,WAAW,GAVvBpK,KAAKxP,IAAI,EAC3C8a,gBAAiB,CAAA,EACpB,EACDH,EAAczH,SAAS9G,CAAO,CASlC,CAQO,SAAS2O,GAAe3O,GACbD,eAAaC,EAAS8I,SAAO,EACnCpL,SACZ,CASO,SAASkR,GAAkB5O,EAAS/K,GACzB8K,eAAaC,EAAS8I,SAAO,EACnC9T,cAAcC,CAAI,CAC9B,CASO,SAASmK,GAAoBY,EAAS6O,GACzC,IAAK,IAAI1a,KAAO0a,EAAY,CACxB,IAQQjZ,EARI,UAARzB,GACI2a,EAAeD,EAAkB,MAAEE,QAAQ,OAAQ,GAAG,EAAEjQ,SAExDkQ,WAAS,CAAChP,GAAU8O,EAAazO,MAAM,GAAG,CAAC,EAGlC,UAARlM,GAEDyB,EAAQ,IADKoK,EAAQ4K,aAAa,OAAO,GAAK,IACpBiE,EAAW,GAAK1a,GAC9C6L,EAAQR,aAAa,GAAKrL,EAAKyB,CAAK,GAGpCoK,EAAQR,aAAarL,EAAK0a,EAAW,GAAK1a,EAAI,EAG1D,CC/TI8a,GAAkBnb,UAAU2J,cAAgB,WACxC,MAAO,qBAEXwR,GAAkBnb,UAAU4J,QAAU,WAClC9J,KAAK+J,OAAS,MAUlBsR,GAAkBnb,UAAUob,kBAAoB,SAAUrR,EAAMsR,GAC5D,IAAIpR,EAAQnK,KACRwb,EAAmBvR,EAAKwR,oBAExBC,GADJ1b,KAAK2b,MAAQ,EACS3b,KAAK+J,OAAOM,cAAc,MAAO,CACnDC,GAAIL,EAAKK,GAAKsR,EACdhM,UAAW,cACd,GACD2L,EAAY/Q,YAAYkR,CAAe,EACvC,IAAK,IAEOG,EAFH7a,EAAI,EAAGA,EAAIwa,EAAiBzI,MAAMpS,OAAQK,CAAC,GAC3Cwa,EAAiBzI,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAU,UACvD2P,EAAiB7b,KAAK+J,OAAOM,cAAc,SAAU,CACrDC,GAAIL,EAAKK,GAAKsR,EAAmC5a,EACjD4O,UAAWkM,GACd,EACDJ,EAAgBlR,YAAYqR,CAAc,EAC1C,IAAInR,SAAO,CACPzI,QAASuZ,EAAiBzI,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGjK,QAC5D+I,SAAUf,EAAKe,SACfJ,UAAW5K,KAAK+J,OAAOa,UACvBO,QAASlB,EAAKc,aAAe/L,iBAAegE,MAAQ,GAAKwY,EAAiBzI,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGf,QAC5GL,aAAcb,EAAKc,aAAe/L,iBAAeiE,MAAQ,MAAQ,QAClE4Y,CAAc,EACbL,EAAiBzI,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGX,gBACnDC,GAAoBqQ,EAAgBL,EAAiBzI,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGX,cAAc,EAErGiQ,EAAiBzI,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGf,SACnD0Q,EAAexP,UAAUe,IAAI2O,EAAqC,EAClEF,EAAejQ,aAAa,aAAc4P,EAAiBzI,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGf,OAAO,GAGpG0Q,EAAejQ,aAAa,aAAc,iBAAiB,EAE3DxB,EAAYmR,EAAYxP,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmC5a,CAAC,EAC1Fwa,EAAiBQ,YAAc7c,6BAA2B8c,OAC1DP,EAAgBrP,UAAUe,IAAI8O,EAAwC,EAGtER,EAAgBrP,UAAUe,IAAI+O,EAA0C,EAExEX,EAAiBzI,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGkQ,WAC/CZ,EAAiBQ,YAAc7c,6BAA2Bkd,SAC1DjS,EAAUiC,UAAUe,IAAI,UAAU,EAG9BpN,KAAK2b,MAAQ,IACbvR,EAAUiC,UAAUe,IAAI,UAAU,EAClCpN,KAAK2b,KAAK,IAGlB3b,KAAKsc,YAActb,GAEnBwa,EAAiBzI,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGqQ,uBACnD/C,GAAiBgC,EAAiBzI,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGqQ,qBAAqB,IACzFV,EAAexP,UAAUe,IAAIwN,EAA+B,EAC5D5a,KAAK+J,OAAO6P,YAAYvD,KAAK,CACzB/L,GAAIuR,EAAevR,GAAIyP,KAAMyB,EAAiBzI,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGqQ,sBACnF,GAELjN,eAAalC,IAAIhD,EAAW,QAASpK,KAAKwc,mBAAmBhN,KAAKxP,KAAMgB,EAAGiJ,EAAMuR,CAAgB,EAAGxb,IAAI,GAGhH,GAAiC,eAA7BA,KAAK+J,OAAO4F,aAA+B,CAC3C,IAAI8M,EAAe,KAAA,EACfC,EAAiB,EACjBf,EAAQ,EACRvR,EAAYpK,KAAK+J,OAAOM,cAAc,SAAU,CAChDC,GAAIL,EAAKK,GACZ,EACDiR,EAAY/Q,YAAYJ,CAAS,EACjC,IAASpJ,EAAI,EAAGA,EAAIwa,EAAiBzI,MAAMpS,OAAQK,CAAC,GAC5CiJ,EAAKwR,oBAAoB1I,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGkQ,UAC3D,CAACpc,KAAK2c,YAAcnB,EAAiBQ,YAAc7c,6BAA2B8c,QAC9EQ,EAAexS,EAAKwR,oBAAoB1I,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGjK,QAC1EjC,KAAK2c,WAAa,CAAA,GAEb1S,EAAKwR,oBAAoB1I,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGkQ,UAChEZ,EAAiBQ,YAAc7c,6BAA2Bkd,WAGtDI,EADmB,IADvBC,EAAAA,EAEmBzS,EAAKwR,oBAAoB1I,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGjK,QAG3D,MAI3B,KAAO0Z,EAAQ1R,EAAKwR,oBAAoB1I,MAAMpS,QAAU,CAACX,KAAK2c,YAAc,CAACF,GACrExS,EAAKwR,oBAAoB1I,MAAMwB,SAASoH,EAAMzP,WAAY,EAAE,GAAGjK,UAC/Dwa,EAAexS,EAAKwR,oBAAoB1I,MAAMwB,SAASoH,EAAMzP,WAAY,EAAE,GAAGjK,QAC9EjC,KAAK2c,WAAa,CAAA,GAEtBhB,CAAK,GAET,IAAIvI,EAAW,IAAIP,iBAAe,CAC9B5Q,QAASwa,EACTnc,OAAQob,EACR9Q,UAAW5K,KAAK+J,OAAOa,UACvBK,SAAU,iCACVD,SAAUf,EAAKe,UAChBZ,CAAS,EACRoR,EAAiBrB,SACbyC,EAAgBxJ,EAASgC,SAC7BpV,KAAK6c,qBAAqB5S,EAAKK,GAAIkR,EAAkBoB,EAAcxQ,OAAO,GAE9EhC,EAAUqB,QAAUrB,EAAUyJ,UAAY,WACtC1J,EAAM2S,iBAAiB7S,EAAMsR,CAAW,GAE5CG,EAAgB7H,UAAY,SAAUnI,GACA,eAA9BvB,EAAMJ,OAAO4F,cACbxF,EAAM4S,4BAA4BrR,EAAGzB,CAAI,GAGjD2J,GAAc8H,EAAiB1b,KAAK+J,MAAM,EAC1C/J,KAAK2c,WAAa,CAAA,IAG1BtB,GAAkBnb,UAAUsc,mBAAqB,SAAU1I,EAAW7J,EAAM+S,GAMxE,IALA,IAAIC,EAAgB,GAChBC,EAAiB,GACjBC,EAAgB,GAChBtB,EAAiB3E,SAASnL,cAAc,IAAM9B,EAAKK,EAAE,EAEhD2N,EAAI,EAAGA,EAAI+E,EAAejK,MAAMpS,OAAQsX,CAAC,GAC1Cf,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmC3D,CAAC,GACvEf,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmC3D,CAAC,EAAE5L,UAAUC,SAAS,UAAU,GAC1G2Q,EAAc5G,KAAK2G,EAAejK,MAAMwB,SAAS0D,EAAE/L,WAAY,EAAE,EAAE,EAIzEgL,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmC9H,CAAS,EAAEzH,UAAUC,SAAS,UAAW,GACrH4Q,EAAe7G,KAAK2G,EAAejK,MAAMwB,SAAST,EAAU5H,WAAY,EAAE,EAAE,EAE5EkR,EAAY,CACZ1J,OAAQ,CAAA,EAAOuJ,cAAeA,EAAeC,eAAgBA,GAKjE,GAHIF,EAAejK,MAAMwB,SAAST,EAAU5H,WAAY,EAAE,GAAGmR,aACzDL,EAAejK,MAAMwB,SAAST,EAAU5H,WAAY,EAAE,GAAGmR,YAAY9b,KAAKvB,KAAMod,CAAS,EAEzFA,CAAAA,EAAU1J,OAGT,CACD,GAAIsJ,EAAehB,YAAc7c,6BAA2B8c,OAAQ,CAC5D/E,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,CAAgC,EAAEvP,UAAUC,SAAS6P,EAA0C,IACtIjF,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,CAAgC,EAAEvP,UAAU2C,OAAOmN,EAA0C,EACpIjF,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,CAAgC,EAAEvP,UAAUe,IAAI8O,EAAwC,GAEnI,IAASjE,EAAI,EAAGA,EAAI+E,EAAejK,MAAMpS,OAAQsX,CAAC,GAC1Cf,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmC3D,CAAC,GAAKf,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmC3D,CAAC,EAAE5L,UAAUC,SAAS,UAAU,IAC1L4K,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmC3D,CAAC,EAAE5L,UAAU2C,OAAO,UAAU,EACxGgO,EAAejK,MAAMwB,SAAS0D,EAAE/L,WAAY,EAAE,GAC1C9K,cAAc,CAAEgb,SAAU,CAAA,GAAS,CAAA,CAAI,GAGnDlF,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmC9H,CAAS,EAAEzH,UAAUE,OAAO,UAAU,EAChHyQ,EAAejK,MAAMwB,SAAST,EAAU5H,WAAY,EAAE,GAAG9K,cAAc,CAAEgb,SAAU,CAAA,GAAQ,CAAA,CAAI,EAC3FlF,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmC9H,CAAS,EAAEzH,UAAUC,SAAS,UAAU,GAAkC,eAA7BtM,KAAK+J,OAAO4F,eACnI3P,KAAKsc,YAAcxI,GACnBV,EAAWjH,eAAa0P,EAAgBhJ,gBAAc,GAC7CzR,cAAc,CACnBa,QAAS+a,EAAejK,MAAMwB,SAAST,EAAU5H,WAAY,EAAE,GAAGjK,QACrE,OAGJ,CACGiV,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,CAAgC,EAAEvP,UAAUC,SAAS4P,EAAwC,IACpIhF,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,CAAgC,EAAEvP,UAAU2C,OAAOkN,EAAwC,EAClIhF,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,CAAgC,EAAEvP,UAAUe,IAAI+O,EAA0C,GAErIjF,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmC9H,CAAS,EAAEzH,UAAUE,OAAO,UAAU,EAC5G2K,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmC9H,CAAS,EAAEzH,UAAUC,SAAS,UAAU,EAClH0Q,EAAejK,MAAMwB,SAAST,EAAU5H,WAAY,EAAE,GAClD9K,cAAc,CAAEgb,SAAU,CAAA,GAAQ,CAAA,CAAI,EAG1CY,EAAejK,MAAMwB,SAAST,EAAU5H,WAAY,EAAE,GAClD9K,cAAc,CAAEgb,SAAU,CAAA,GAAS,CAAA,CAAI,EAG/C,IADA,IAAIM,EAAiB,EACZY,EAAI,EAAGA,EAAIN,EAAejK,MAAMpS,OAAQ2c,CAAC,GAC1CpG,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmC0B,CAAC,GAAKpG,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmC0B,CAAC,EAAEjR,UAAUC,SAAS,UAAU,GAAkC,eAA7BtM,KAAK+J,OAAO4F,cAAiC2N,IAAMxJ,IAClP9T,KAAK2c,WAAa,CAAA,EAClBD,CAAc,IAGtB,GAAiC,eAA7B1c,KAAK+J,OAAO4F,aAA+B,CAC3C,IAAI8M,EAAe,KACfc,EAAa,EACjBnK,EAAWjH,eAAa0P,EAAgBhJ,gBAAc,EACtD,GAAK7S,KAAK2c,YAMN,GAAuB,IAAnBD,GAAwB,CAAExF,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmC9H,CAAS,EAAEzH,UAAUC,SAAS,UAAW,EAC7I,IAASgR,EAAI,EAAGA,EAAIN,EAAejK,MAAMpS,OAAQ2c,CAAC,GAC1CpG,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmC0B,CAAC,GAAKpG,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmC0B,CAAC,EAAEjR,UAAUC,SAAS,UAAU,IAC1LmQ,EAAeO,EAAejK,MAAMwB,SAAS+I,EAAEpR,WAAY,EAAE,GAAGjK,cARxEiV,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmC9H,CAAS,EAAEzH,UAAUC,SAAS,UAAU,IAClHmQ,EAAeO,EAAejK,MAAMwB,SAAST,EAAU5H,WAAY,EAAE,GAAGjK,SAYhF,KAAOsb,EAAaP,EAAejK,MAAMpS,QAAU,CAAC8b,GAC5CO,EAAejK,MAAMwB,SAASgJ,EAAWrR,WAAY,EAAE,GAAGjK,UAC1Dwa,EAAeO,EAAejK,MAAMwB,SAASgJ,EAAWrR,WAAY,EAAE,GAAGjK,SAE7Esb,CAAU,GAEdnK,EAAShS,cAAc,CAAEa,QAASwa,EAAc,EAChDzc,KAAKsc,YAAcxI,EAEvB9T,KAAK2c,WAAa,CAAA,EAElBzF,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmC9H,CAAS,EAAEzH,UAAUC,SAAS,UAAU,GAClH6Q,EAAc9G,KAAK2G,EAAejK,MAAMwB,SAAST,EAAU5H,WAAY,EAAE,EAAE,EAE3EsR,EAAc,CAAEP,cAAeA,EAAeE,cAAeA,GAC7DH,EAAejK,MAAMwB,SAAST,EAAU5H,WAAY,EAAE,GAAGU,OACzDoQ,EAAejK,MAAMwB,SAAST,EAAU5H,WAAY,EAAE,GAAGU,MAAMrL,KAAKvB,KAAMwd,CAAW,EAExD,eAA7Bxd,KAAK+J,OAAO4F,cAAiCkM,IAC7CzI,EAAWjH,eAAa0P,EAAgBhJ,gBAAc,GAC7CtG,WAYrB8O,GAAkBnb,UAAUud,kBAAoB,SAAUxT,EAAMsR,GAC5D,IAAIpR,EAAQnK,KACRwb,EAAmBvR,EAAKwR,oBACxBgB,EAAe,KACfC,EAAiB,EACjBa,EAAa,EACjB,GAAiC,eAA7Bvd,KAAK+J,OAAO4F,aAA+B,CAC3C,IAAI+N,EAAenC,EAAYxP,cAAc,IAAM9B,EAAKK,GAAKsR,CAAgC,EACzFxR,EAAYpK,KAAK+J,OAAOM,cAAc,SAAU,CAChDC,GAAIL,EAAKK,GACZ,EACDiR,EAAY/Q,YAAYJ,CAAS,EACjC,IAAK,IAAIpJ,EAAI,EAAGA,EAAIwa,EAAiBzI,MAAMpS,OAAQK,CAAC,GAC5CkW,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmC5a,CAAC,IACvEkW,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmC5a,CAAC,EAAEqL,UAAUC,SAAS,UAAU,GAAKkP,EAAiBQ,YAAc7c,6BAA2B8c,OACzKQ,EAAejB,EAAiBzI,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGjK,QAE7DiV,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmC5a,CAAC,EAAEqL,UAAUC,SAAS,UAAU,GAAKkP,EAAiBQ,YAAc7c,6BAA2Bkd,WAEvJ,IADvBK,EAAAA,EAEID,EAAejB,EAAiBzI,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGjK,QAE5C,EAAjBya,IACLD,EAAe,QAK/B,KAAOc,EAAa/B,EAAiBzI,MAAMpS,QAAU,CAAC8b,GAC9CjB,EAAiBzI,MAAMwB,SAASgJ,EAAWrR,WAAY,EAAE,GAAGjK,UAC5Dwa,EAAejB,EAAiBzI,MAAMwB,SAASgJ,EAAWrR,WAAY,EAAE,GAAGjK,SAE/Esb,CAAU,GAEd,IAAInK,EAAW,IAAIP,iBAAe,CAC9B5Q,QAASwa,EACTnc,OAAQod,EACR9S,UAAW5K,KAAK+J,OAAOa,UACvBK,SAAU,iCACVD,SAAUf,EAAKe,UAChBZ,CAAS,EACRoR,EAAiBrB,SACbyC,EAAgBxJ,EAASgC,SAC7BpV,KAAK6c,qBAAqB5S,EAAKK,GAAIkR,EAAkBoB,EAAcxQ,OAAO,GAE9EhC,EAAUqB,QAAUrB,EAAUyJ,UAAY,WACtC1J,EAAM2S,iBAAiB7S,EAAMsR,CAAW,GAE5CmC,EAAa7J,UAAY,SAAUnI,GACG,eAA9BvB,EAAMJ,OAAO4F,cACbxF,EAAM4S,4BAA4BrR,EAAGzB,CAAI,GAGjD2J,GAAc8J,EAAc1d,KAAK+J,MAAM,MAEtC,CACD,IAAI8R,EAAiBN,EAAYxP,cAAc,IAAM9B,EAAKK,EAAE,EACxD8I,EAAWjH,eAAa0P,EAAgBhJ,gBAAc,EAC1D0I,EAAY/Q,YAAY4I,EAAS9S,MAAM,EACnCub,IACAzI,EAAStJ,UACTkF,SAAO6M,CAAc,KAIjCR,GAAkBnb,UAAU4c,iBAAmB,SAAU7S,EAAMsR,GACvDA,EAAYxP,cAAc,IAAM9B,EAAKK,EAAE,EAAE+B,UAAUC,SAAS,UAAU,IAC7C4K,SAASnL,cAAc,IAAM9B,EAAKK,GAAK,SAAS,EAAEyB,cAAc,IAAM+P,GAAgC,WAAW,GAKtI5E,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmC,CAAC,GAHxD7G,SAO/BsG,GAAkBnb,UAAU2c,qBAAuB,SAAUc,EAAQnC,EAAkBvE,GAC/E2G,EAAoB5d,KAAK+J,OAAOM,cAAc,MAAO,CACrDuF,UAAW,8BACXtF,GAAIqT,EAASE,EACbhO,UAAW2L,EAAiBrB,OAC/B,EACDlD,EAASnH,aAAa8N,EAAmB3G,EAASlH,UAAU,GAEhEsL,GAAkBnb,UAAU6c,4BAA8B,SAAUrR,EAAGzB,GACnE,IAAI4R,EAAiB3E,SAASnL,cAAc,IAAM9B,EAAKK,EAAE,EAErDwT,EADW3R,eAAa0P,EAAgBhJ,gBAAc,EACjCvS,OACrByd,EAAkB,CAAA,EAOlBvC,GAN6B,eAA7Bxb,KAAK+J,OAAO4F,cAAiCmO,EAAU1N,QAAQ,iCAAiC,EAAE/D,UAAUC,SAAS0R,EAA4C,IACjKD,EAAkB,CAAA,GAER,QAAVrS,EAAEnL,KACFmL,EAAEoJ,iBAEiB7K,EAAKwR,qBACb,eAAV/P,EAAEnL,KAAwB,CAACwd,GAA+B,cAAVrS,EAAEnL,KAAuBwd,GACtE,CAAC/d,KAAK+J,OAAOa,WAAwB,cAAVc,EAAEnL,KAAuBwd,GACpD/d,KAAKsc,WAAW,GACZtc,KAAKsc,YAAcd,EAAiBzI,MAAMpS,SAI1CX,KAAKsc,YAAc,IAKE,IAArBtc,KAAKsc,YACLtc,KAAKsc,YAAcd,EAAiBzI,MAAMpS,OAAS,EAInDX,KAAKsc,WAAW,GAChBpF,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAoC5b,KAAgB,WAAC,EAAE+U,UAItF,cAAVrJ,EAAEnL,KAAuB,CAACwd,GAA+B,YAAVrS,EAAEnL,KAAqBwd,KACxE,CAAC/d,KAAK+J,OAAOa,WAAwB,YAAVc,EAAEnL,KAAqBwd,EACzB,IAArB/d,KAAKsc,YACLtc,KAAKsc,YAAcd,EAAiBzI,MAAMpS,OAAS,EAInDX,KAAKsc,WAAW,IAKpBtc,KAAKsc,WAAW,GACZtc,KAAKsc,YAAcd,EAAiBzI,MAAMpS,SAI1CX,KAAKsc,YAAc,IACnBpF,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAoC5b,KAAgB,WAAC,EAAE+U,UAc9GsG,GAAkBnb,UAAU2L,kBAAoB,SAAU5B,EAAMC,EAAS4B,GACrE,IAAI3B,EAAQnK,KACRwb,EAAmBvR,EAAKwR,oBACxBwC,EAAa,CAAA,EACbpC,EAAiB3R,EAAQ6B,cAAc,IAAM9B,EAAKK,EAAE,EACxD,GAAIuR,EAAgB,CAChB,IAAIzI,EAAWjH,eAAa0P,EAAgBhJ,gBAAc,EAEtDqL,GADJ9K,EAAShS,cAAc,CAAE6J,SAAUmI,EAASnI,SAAWkT,EAAkBH,GAA8C7S,QAASqQ,EAAiBrB,QAAmC,GAAI,EACtK/G,EAAS9S,QAC3B,GAAI4d,EAAYE,SAASzd,OAAQ,CAC7B,IAAK,IAAIK,EAAI,EAAGA,EAAIkd,EAAYE,SAASzd,OAAQK,CAAC,GAC9C,GAAIwa,EAAiBzI,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGf,QAAS,CAC5D8S,EAAa,CAAA,EACb,MAGJA,GACAC,EAAY7R,UAAUe,IAAI,YAAY,EAG9C8Q,EAAYzS,QAAU,WACgB,eAA9BtB,EAAMJ,OAAO4F,cAAiCuO,EAAY9N,QAAQ,iCAAiC,EAAE/D,UAAUC,SAAS0R,EAA4C,GAChKlS,EAAeM,QAAQC,UAAUC,SAAS,UAAU,GACpDR,EAAeS,UAK3B8R,EAAyBnU,EAAQ6B,cAAc,IAAM9B,EAAKK,GAAK,SAAS,EAC3C,YAA7BtK,KAAK+J,OAAO4F,cAA8B0O,IAC1CA,EAAuB5S,QAAU,WACzBK,EAAeM,QAAQC,UAAUC,SAAS,UAAU,GACpDR,EAAeS,YAa/B8O,GAAkBnb,UAAUsM,qBAAuB,SAAUvC,EAAMC,GAC/D,IAAI2R,EAAiB3R,EAAQ6B,cAAc,IAAM9B,EAAKK,EAAE,EACpDuR,KAEIiC,GADA1K,EAAWjH,eAAa0P,EAAgBhJ,gBAAc,GACjCvS,QACX+L,UAAUC,SAAS,YAAY,GACzCwR,EAAUzR,UAAU2C,OAAO,YAAY,EAG3C/D,GAAWA,EADImI,EAASnI,SAASwB,MAAM0R,CAAe,GAClCzR,OAAO,SAAU1K,GAAS,OAAOA,IAAUgc,GAA+C,EAC9G5K,EAAShS,cAAc,CAAE6J,SAAUA,EAAS0B,KAAKwR,CAAe,EAAGhT,QAAS,GAAI,IAUxFkQ,GAAkBnb,UAAUoe,gBAAkB,SAAUrU,GACpD,IAEQmJ,EAFJyI,EAAiB3E,SAASnL,cAAc,IAAM9B,EAAKK,EAAE,EACrDuR,IACIzI,EAAWjH,eAAa0P,EAAgBhJ,gBAAc,EAC5C1G,eAAaiH,EAAS9S,OAAQ4U,SAAO,EAC3CpL,UACRsJ,EAAStJ,UACTkF,SAAO6M,CAAc,IAW7BR,GAAkBnb,UAAUqe,sBAAwB,SAAUhD,EAAatR,GAGvE,IAFA,IAIQG,EAJJoR,EAAmBvR,EAAKwR,oBAEnBza,EAAI,EAAGA,EAAIwa,EAAiBzI,MAAMpS,OAAQK,CAAC,IAO5CoJ,GAN6B,YAA7BpK,KAAK+J,OAAO4F,aACA4L,EAGArE,UAHYnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmC5a,CAAC,IAM1EmL,eAAa/B,EAAWM,QAAM,EACpCtJ,cAAc,CACpB0J,aAAcb,EAAKc,aAAe/L,iBAAeiE,MAAQ,MAAQ,OACjEkI,QAASlB,EAAKc,aAAe/L,iBAAegE,MAAQ,GAAKwY,EAAiBzI,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGf,QAC/G,OAxfbkQ,GA4fOA,GA3fP,SAASA,GAAkBtR,GACvB/J,KAAKsc,YAAc,EACnBtc,KAAK+J,OAASA,EACd/J,KAAK2c,WAAa,CAAA,ECMtB6B,EAActe,UAAU2J,cAAgB,WACpC,MAAO,iBAEX2U,EAActe,UAAU4J,QAAU,WAC9B9J,KAAK+J,OAAS,MAUlByU,EAActe,UAAUue,cAAgB,SAAUxU,EAAMC,GACpD,IAAIC,EAAQnK,KACR0e,EAAkBzU,EAAKyU,gBAEvBtU,GADJpK,KAAK2e,mBAAmBD,EAAiB,CAAA,EAAOzU,EAAKK,GAAIJ,CAAO,EAChDlK,KAAK+J,OAAOM,cAAc,SAAU,CAChDC,GAAIL,EAAKK,GAAK,eACdsF,UAAW,8CACd,GACDxF,EAAUwB,aAAa,aAAc,uBAAuB,EAC5D1B,EAAQM,YAAYJ,CAAS,EAC7BpK,KAAK4e,YAAY3U,EAAMG,CAAS,EAChCA,EAAUqB,QAAU,SAAUgI,GAC1B,IAEQoL,EAFJ5H,EAAWC,SAASnL,cAAc,IAAM9B,EAAKK,GAAK,eAAe,EACjE2M,IACI4H,EAAQ1S,eAAa8K,EAAU6H,OAAK,EACpC7H,EAAS5K,UAAUC,SAAS,eAAe,EAC3CnC,EAAMqI,UAAUqM,EAAO5H,EAAUxD,EAAMiL,EAAiBzU,EAAKK,EAAE,EAG/DH,EAAMoI,UAAUsM,EAAO5H,EAAUxD,EAAMiL,EAAiBzU,EAAKK,EAAE,IAI3E4M,SAASzL,QAAU,SAAUgI,GAIzB,IAHA,IACIsL,EACA/R,EAFAiK,EAAWC,SAAS/C,iBAAiB,sCAAsC,EAGtEnT,EAAI,EAAGA,EAAIiW,EAAStW,OAAQK,CAAC,GAAI,CACtC,IAAI6d,EAAQ1S,eAAa8K,EAAS1C,SAASvT,EAAEkL,WAAY,EAAE,GAAI4S,OAAK,EACpE,GAAIrL,CAAAA,EAAKnT,OAAO+L,UAAUC,SAAS,yBAAyB,EAQvD,CACDyS,EAAW9H,EAAS1C,SAASvT,EAAEkL,WAAY,EAAE,GAAK,GAAEiP,QAAQ,iBAAkB,EAAE,EAChFnO,EAAWC,EAAQ9C,EAAMJ,OAAOmD,KAAM6R,CAAO,EAC7C5U,EAAMoI,UAAUsM,EAAO5H,EAAS1C,SAASvT,EAAEkL,WAAY,EAAE,GAAIuH,EAAMzG,EAAS/C,KAAKyU,gBAAiBK,CAAO,EACzG,MAVA,GADAA,EAAW9H,EAAS1C,SAASvT,EAAEkL,WAAY,EAAE,GAAK,GAAEiP,QAAQ,iBAAkB,EAAE,EAC3E1H,EAAKnT,OAAS,GAAE6a,QAAQ,gBAAiB,EAAE,IAAM4D,EAAS,CAC3D/R,EAAWC,EAAQ9C,EAAMJ,OAAOmD,KAAM6R,CAAO,EAC7C5U,EAAMoI,UAAUsM,EAAO5H,EAAS1C,SAASvT,EAAEkL,WAAY,EAAE,GAAIuH,EAAMzG,EAAS/C,KAAKyU,gBAAiBK,CAAO,EACzG,UAYpBP,EAActe,UAAUye,mBAAqB,SAAUD,EAAiBM,EAAS1U,EAAIJ,GAuIjF,IAtIA,IACI+U,EACAC,EAFA/U,EAAQnK,KAGRgN,EAAWC,EAAQjN,KAAK+J,OAAOmD,KAAM5C,CAAE,EAIvC6U,GAHAnS,GAAYA,EAASkL,QACrBlL,EAASkL,MAAMkH,cAAgB,CAAA,GAEdpf,KAAK+J,OAAOM,cAAc,MAAO,CAClDuF,UAAW,2BACXtF,GAAIA,EAAK,kBACZ,GAIG+U,GAHCL,GACD9U,EAAQM,YAAY2U,CAAc,EAExB,SAAUne,GAiGpB,IAhGA,IA+GQse,EA/GJC,EAAkB,CAAA,EAgGbtH,GA/FTgH,EAAsBO,EAAOzV,OAAOM,cAAc,KAAM,CACpDuF,UAAW,6BACXtF,GAAIA,EAAK,oBAAsBtJ,EAClC,EACG0d,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAGuT,YAAgF,SAAlEf,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAGuT,aACpHF,EAAkB,CAAA,GAElBb,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAGjB,UACnDgU,EAAoB5S,UAAUe,IAAIsR,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAGjB,QAAQ,EAuFpF,GAAGgN,EAAIyG,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAMpS,QAEzD,UAvFN,SAAUsX,GACpBiH,EAAaM,EAAOzV,OAAOM,cAAc,KAAM,CAC3CuF,UAAW,wBACXtF,IAAK0U,EAAU,SAAW,IAAMC,EAAoB3U,GAAK,WAAa2N,EACtEyH,MAAO,CAAEC,SAAY,KACxB,EACD,IAAIC,EAAgB,CAAEtM,KAAM,mBAAoBrJ,KAAMyU,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAMwB,SAAS0D,EAAE/L,WAAY,EAAE,IAyExI,GAxEIwS,EAAgBzL,kBAChByL,EAAgBzL,iBAAiB1R,KAAKie,EAAQI,CAAa,EAE/DX,EAAoBzU,YAAY0U,CAAU,EACtCR,EAAgBmB,mBAAqBnB,EAAgBmB,oBAAsBL,EAAO7D,MAClFuD,EAAW7S,UAAUe,IAAI,2BAA2B,EAG/CsR,EAAgBmB,mBAAsC,IAAjBL,EAAO7D,QAC7CuD,EAAW7S,UAAUe,IAAI,2BAA2B,EACpDsR,EAAgBmB,kBAAoBL,EAAO7D,OAGnD6D,EAAO7D,MAAQ6D,EAAO7D,MAAQ,EAC9BuD,EAAWzT,QAAU,SAAUC,GAC3BvB,EAAM2V,eAAepU,EAAEqU,cAAerB,EAAiBpU,EAAI,CAAA,EAAMoB,EAAGsT,CAAO,GAE/EE,EAAWrL,UAAY,SAAUnI,GACf,UAAVA,EAAEnL,KAA6B,MAAVmL,EAAEnL,KACvB4J,EAAM2V,eAAepU,EAAEqU,cAAerB,EAAiBpU,EAAI,CAAA,EAAMoB,EAAGsT,CAAO,GAGnFE,EAAWc,YAAc,SAAUtU,GAC3BuU,EAAiB,CAAE/P,MAAOxE,EAAG4H,KAAM,YAAarJ,KAAMyU,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAMwB,SAAS0D,EAAE/L,WAAY,EAAE,IACxIwS,EAAgBwB,WAChBxB,EAAgBwB,UAAU3e,KAAK4I,EAAO8V,CAAc,GAGxDvB,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAGiU,WAA8E,SAAjEzB,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAGiU,YACnHjB,EAAWkB,MAAMlO,MAAQwM,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAGiU,UAAY,MAExFzB,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAGuT,YAAgF,SAAlEf,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAGuT,aACpHP,EAAWkB,MAAMC,OAAS3B,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAGuT,WAAa,KACvD,eAA/BD,EAAOzV,OAAO4F,cAAkCqP,IAChDC,EAAoBmB,MAAME,SAAW,UAGxC,CAAC5B,EAAgB/G,UAAY,CAAC+G,EAAgB6B,eAC7C7B,EAAgB/G,UAAY,CAAC+G,EAAgB6B,eAAkBvB,GAC/DN,EAAgB6B,eAAiB,CAAC7B,EAAgB/G,UAAa,CAACqH,KAC9DN,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAMwB,SAAS0D,EAAE/L,WAAY,EAAE,GAAGX,gBACrFC,GAAoB0T,EAAYR,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAC3E6G,MAAMwB,SAAS0D,EAAE/L,WAAY,EAAE,GAAGX,cAAc,EAErDmT,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAMwB,SAAS0D,EAAE/L,WAAY,EAAE,GAAGjK,UACjFue,EAAUhB,EAAOzV,OAAOM,cAAc,OAAQ,CAC9CuF,UAAW,0BAAiC8O,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAMwB,SAAS0D,EAAE/L,WAAY,EAAE,GAAGjK,QACpI,EACDid,EAAW1U,YAAYgW,CAAO,EACK,eAA/BhB,EAAOzV,OAAO4F,cAAkCqP,GAChDwB,EAAQnU,UAAUe,IAAI,UAAU,GAGpCsR,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAMwB,SAAS0D,EAAE/L,WAAY,EAAE,GAAGf,SACrF+T,EAAW1U,YAAYgV,EAAOzV,OAAOM,cAAc,OAAQ,CACvDwF,UAAW6O,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAMwB,SAAS0D,EAAE/L,WAAY,EAAE,GAAGf,QAChGyE,UAAW,wBACd,CAAC,EAEF8O,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAMwB,SAAS0D,EAAE/L,WAAY,EAAE,GAAGlB,UACrFkU,EAAW7S,UAAUe,IAAI,YAAY,EAErCsR,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAMwB,SAAS0D,EAAE/L,WAAY,EAAE,GAAGjB,WACrFiU,EAAW7S,UAAUe,IAAIsR,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAMwB,SAAS0D,EAAE/L,WAAY,EAAE,GAAGjB,QAAQ,EAG1HyT,EAAgB/G,UAAY,CAACqH,GAC7BQ,EAAOiB,sBAAsBvB,EAAYR,EAAiBpU,EAAIoU,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAMwB,SAAS0D,EAAE/L,WAAY,EAAE,EAAE,EAElJwS,EAAgB6B,eAAiBvB,GACjCQ,EAAOkB,2BAA2BxB,EAAYR,EAAiBpU,EAAIoU,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAMwB,SAAS0D,EAAE/L,WAAY,EAAE,EAAE,EAEtJ,CAAC8S,GAAW,CAACO,GAAoBb,EAAgBiC,YAAcnB,EAAO7D,MAGvE,OAFAwD,EAAe3U,YAAYyU,CAAmB,EAC9CO,EAAOoB,QAAU,CAAA,EACV,SAIW3I,CAAC,EAD0DA,CAAC,IAKtF,GAAIuH,EAAOoB,SAAW,CAAC5B,EACnB,MAAO,SAENA,EAID9U,EAHAiV,GAGQ3U,YAAYyU,CAAmB,EAEvCD,GAAWN,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAGiO,SAC1DmF,EAAaE,EAAOzV,OAAOM,cAAc,MAAO,CAChDuF,UAAW,0BACXC,UAAW6O,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAGiO,OAChE,EACFjQ,EAAQ4F,aAAawP,EAAWL,CAAmB,KAGvDO,EAASxf,KACJgB,EAAI,EAAGA,EAAI0d,EAAgBlJ,OAAO7U,QAEvB,UADF0e,EAAQre,CAAC,EADwBA,CAAC,IAKpDhB,KAAK2b,MAAQ,EACb3b,KAAK4gB,QAAU,CAAA,EAEX5gB,KAAK+J,OAAO8W,UAEZ7gB,KAAK+J,OAAO+W,QAAU9gB,KAAK+J,OAAO+W,QAAQzM,OAAOrU,KAAc,OAAC,EAChEA,KAAK+J,OAA6B,uBAElC/J,KAAc,QAAI+gB,KAAAA,IAG1BvC,EAActe,UAAU8gB,gBAAkB,SAAUL,EAAWxB,EAAgBT,EAAiBf,GAI5F,IAHA,IAAIhC,EAAQ,EACRsF,EAAa,EACbC,EAAiB,CAAA,EACZlgB,EAAI,EAAGA,EAAI0d,EAAgBlJ,OAAO7U,OAAQK,CAAC,GAAI,CACpD,IAAK,IAAIiX,EAAI,EAAGA,EAAIyG,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAMpS,OAAQsX,CAAC,GAAI,CACtF,GAAI0I,EAAahF,GAAbgF,GAiBC,CACDO,EAAiB,CAAA,EACjB,MAlBA,IASYC,EATRC,EAAiBjC,EAAepT,cAAc,IAAM4R,EAAS,oBAAsB3c,EAAI,WAAaiX,CAAC,EACrGmJ,IACAH,GAAcG,EAAeC,YACzBC,EAAaC,OAAOC,iBAAiBJ,CAAc,KAE/CK,EAAeC,WAAWJ,EAAWK,WAAW,EAAID,WAAWJ,EAAWM,YAAY,EACpFjO,oBAAkB8N,CAAa,IACjCR,GAAcQ,GAEdN,EAAcO,WAAWJ,EAAWO,UAAU,EAAIH,WAAWJ,EAAWQ,WAAW,EACjFnO,oBAAkBwN,CAAY,IAChCF,GAAcE,IAS9BxF,CAAK,GAET,GAAIuF,EACA,MAGS,EAAbD,IACA9B,EAAeiB,MAAMlO,MAAQ+O,EAAa,OAGlDzC,EAActe,UAAU6hB,gBAAkB,SAAUlD,EAAOmD,GACnC,SAAhBnD,EAAM3M,OACN8P,EAAoBC,QAAQ,SAAUC,GAClCA,EAAI9B,MAAME,SAAW,OACxB,GAUT9B,EAActe,UAAUiiB,qBAAuB,SAAUC,GAErD,IADA,IAAIC,EAAsBD,EAAcjO,iBAAiB,2BAA2B,EAC3EmJ,EAAI,EAAGA,EAAI+E,EAAoB1hB,OAAQ2c,CAAC,GAAI,CACjD,IAAI3B,EAAQ,EACR2G,EAAuB,EACvBC,EAAW,CAAA,EACXpD,EAAiBkD,EAAoB9N,SAAS+I,EAAEpR,WAAY,EAAE,GAC9DyR,EAASwB,EAAe7U,GAAG6Q,QAAQ,mBAAoB,EAAE,EACzDqH,EAAuBrD,EAAesD,aACtCzV,EAAWC,EAAQjN,KAAK+J,OAAOmD,KAAMyQ,CAAM,EAC/C,GAAI3Q,EAAU,CACVhN,KAAKghB,gBAAgBhU,EAAS/C,KAAKyU,gBAAgBiC,UAAWxB,EAAgBnS,EAAS/C,KAAKyU,gBAAiBf,CAAM,EACnH,IAAK,IAAI3c,EAAI,EAAGA,EAAIgM,EAAS/C,KAAKyU,gBAAgBlJ,OAAO7U,OAAQK,CAAC,GAC9D,IAAK,IAAIiX,EAAI,EAAGA,EAAIjL,EAAS/C,KAAKyU,gBAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAMpS,OAAQsX,CAAC,GAAI,CACpG,IAOgByK,EAGIvB,EAVhBC,EAAiBjC,EAAepT,cAAc,IAAM4R,EAAS,oBAAsB3c,EAAI,WAAaiX,CAAC,EACrGmJ,IACiC,YAA7BphB,KAAK+J,OAAO4F,cACRyR,EAAe/U,UAAUC,SAAS,UAAU,GAC5C8U,EAAe/U,UAAU2C,OAAO,UAAU,EAEzCuT,EA0BDnB,EAAepS,UAzBX0T,EAAc,GACdpB,EAAaC,OAAOC,iBAAiBJ,CAAc,KAE/CD,EAAcO,WAAWJ,EAAWqB,SAAS,EAAIjB,WAAWJ,EAAWsB,YAAY,EACjFjP,oBAAkBwN,CAAY,IAChCuB,GAAevB,IAGvBxF,CAAK,GACD3O,EAAS/C,KAAKyU,gBAAgBiC,YAAchF,GAC5CA,EAAQ,EACJ6G,GAAyBpB,EAAeqB,aAAeC,EACvDF,GAAyBpB,EAAeqB,aAAeC,GAGvDH,EAAW,CAAA,EACXnB,EAAepS,WAGdwT,EAAwBpB,EAAeqB,aAAeC,IAC3DH,EAAW,CAAA,EACXnB,EAAepS,YAQvBsT,EAAAA,EAC2BtV,EAAS/C,KAAKyU,gBAAgBiC,WACrDS,EAAe/U,UAAUe,IAAI,UAAU,OAkBvEoR,EAActe,UAAU2iB,eAAiB,SAAUhE,EAAO5H,EAAU6L,GAC5C,KAAA,IAAhBA,IAA0BA,EAAc,GAC5C,IAAIrB,EAAe,EACfN,EAAc,EAClB,GAAIlK,EAAU,CAaV,IAZA,IAAI8L,EAAcxB,OAAOyB,WACrBC,EAA8B,IAAhBH,EAAoBC,EAAcG,KAAKC,IAAIJ,GAAeA,EAAcD,EAAY,EAClGM,EAAgB7B,OAAOC,iBAAiBvK,CAAQ,EAOhD+K,GANAoB,IACA3B,EAAeC,WAAW0B,EAAczB,WAAW,EAAID,WAAW0B,EAAcxB,YAAY,EACtFjO,oBAAkB8N,CAAa,IACjCwB,GAA4BxB,IAGVxK,EAAS9C,iBAAiB,6BAA6B,GAE7EkP,GADJrjB,KAAK+hB,gBAAgBlD,EAAOmD,CAAmB,EACzB,CAAA,GACbhhB,EAAI,EAAGA,EAAIghB,EAAoBrhB,OAAQK,CAAC,GAAI,CAEjD,IADA,IAAIigB,EAAa,EACRhJ,EAAI,EAAGA,EAAI+J,EAAoBzN,SAASvT,EAAEkL,WAAY,EAAE,GAAGiI,iBAAiB,wBAAwB,EAAExT,OAAQsX,CAAC,GAAI,CACxH,IAAIqL,EAAkB/B,OAAOC,iBAAiBQ,EAAoBzN,SAASvT,EAAEkL,WAAY,EAAE,GAAGiI,iBAAiB,wBAAwB,EAAEI,SAAS0D,EAAE/L,WAAY,EAAE,EAAE,EAQpK,GAPIoX,IACAnC,EAAcO,WAAW4B,EAAgBzB,UAAU,EAAIH,WAAW4B,EAAgBxB,WAAW,EACvFnO,oBAAkBwN,CAAY,IAChCF,GAAcE,IAIhB8B,IADNhC,GAAciC,KAAKK,MAAM7B,WAAW4B,EAAgBpR,KAAK,CAAC,IACN,SAAhB2M,EAAM3M,OAAuC,SAAhB2M,EAAM3M,OAAsB+Q,GAAe1O,SAASsK,EAAM3M,MAAMhG,WAAY,EAAE,GAAO+W,GAAehC,EAAc,CAC/KhK,EAASmJ,MAAMlO,MAAU+O,EAAaiC,KAAKC,IAAI1B,EAAeN,CAAW,EAAK+B,KAAKK,MAAM7B,WAAW4B,EAAgBpR,KAAK,CAAC,EAAK,KAC/HmR,EAAkB,CAAA,EAClB,OAGR,GAAIA,EAAiB,CACjBrB,EAAoBC,QAAQ,SAAUC,GAClCA,EAAI9B,MAAME,SAAW,OACxB,EACoB,SAAjBzB,EAAMwB,QACNrgB,KAAKwjB,sBAAsBvM,EAAUyK,WAAW0B,EAAc/C,MAAM,EAAGqB,WAAW0B,EAAcK,GAAG,CAAC,EAExG,OAGHJ,IACmB,SAAhBxE,EAAM3M,OACN8P,EAAoBC,QAAQ,SAAUC,GAClCA,EAAI9B,MAAME,SAAW,SACxB,EACDrJ,EAASmJ,MAAMlO,MAAQ,QAGvB+E,EAASmJ,MAAMlO,MAAS2M,EAAW,MAAE3S,WAEpB,SAAjB2S,EAAMwB,QACNrgB,KAAKwjB,sBAAsBvM,EAAUyK,WAAW0B,EAAc/C,MAAM,EAAGqB,WAAW0B,EAAcK,GAAG,CAAC,KAKpHjF,EAActe,UAAUsjB,sBAAwB,SAAUvM,EAAUnF,EAAa4R,GACzEnC,OAAOoC,YAAc7R,GAAeyP,OAAOoC,YAAcT,KAAKK,MAAMzR,EAAc4R,CAAQ,EAC1FzM,EAASmJ,MAAMC,OAAUkB,OAAOoC,YAAcD,EAAY,KAG1DzM,EAASmJ,MAAMC,OAAS,QAGhC7B,EAActe,UAAU0e,YAAc,SAAU3U,EAAMG,GAClD,IAAIwZ,EAAiB5jB,KAAK+J,OAAOM,cAAc,MAAO,CAClDuF,UAAW,2BACXtF,GAAIL,EAAKK,GAAK,kBACjB,EAEGuZ,GADJ7jB,KAAK2e,mBAAmB1U,EAAKyU,gBAAiB,CAAA,EAAMzU,EAAKK,GAAIsZ,CAAc,EACjD5jB,KAAK+J,OAAOM,cAAc,MAAO,CACvDuF,UAAW,yBACXtF,GAAIL,EAAKK,GAAK,gBACjB,GACD4M,SAAS4M,KAAK5J,OAAO2J,CAAmB,EACrB,IAAI/E,QAAM+E,EAAqB,CAC9CE,SAAU3Z,EACVe,QAASyY,EACTI,UAAW,CAAEC,EAAG,MAAOC,EAAG,QAC1BC,eAAgB,OAChBC,WAAY,WACZC,SAAU,CAAEJ,EAAG,OAAQC,EAAG,UAC1BtZ,UAAW5K,KAAK+J,OAAOa,UACvBsH,MAAOjI,EAAKyU,gBAAgB3M,WAC5BsO,OAAQpW,EAAKyU,gBAAgB5M,YAChC,EACYwS,QAUjB9F,EAActe,UAAUqkB,mBAAqB,SAAU5U,EAAcgO,GACjE,IAAIzT,EAAUlK,KAAK+J,OAAOqC,QAAQL,cAAc,IAAM4R,EAAS6G,CAAsB,EACjFxX,EAAWC,EAAQjN,KAAK+J,OAAOmD,KAAMyQ,CAAM,EAC/C,GAAIzT,EAAS,CACT,IAAIua,EAAeva,EAAQiK,iBAAiB,yBAAyB,EACjEuQ,EAAmBxa,EAAQiK,iBAAiB,6BAA6B,EAC7E,GAAIsQ,EAAa9jB,OACb,IAAK,IAAIK,EAAI,EAAGA,EAAIyjB,EAAa9jB,OAAQK,CAAC,GACjB,eAAjB2O,EACA8U,EAAalQ,SAASvT,EAAEkL,WAAY,EAAE,GAAGG,UAAUe,IAAI,UAAU,EAGjEqX,EAAalQ,SAASvT,EAAEkL,WAAY,EAAE,GAAGG,UAAU2C,OAAO,UAAU,EAIhF,GAAI0V,EAAiB/jB,QAAUqM,EAC3B,IAAK,IAAIsQ,EAAI,EAAGA,EAAItQ,EAAS/C,KAAKyU,gBAAgBlJ,OAAO7U,OAAQ2c,CAAC,GAC9D,IAAStc,EAAI,EAAGA,EAAI0jB,EAAiB/jB,OAAQK,CAAC,GACtCgM,EAAS/C,KAAKyU,gBAAgBlJ,OAAOjB,SAAS+I,EAAEpR,WAAY,EAAE,GAAGuT,YAA8F,SAAhFzS,EAAS/C,KAAKyU,gBAAgBlJ,OAAOjB,SAAS+I,EAAEpR,WAAY,EAAE,GAAGuT,YAC5I9B,EAAS,oBAAsBL,IAAMoH,EAAiBnQ,SAASvT,EAAEkL,WAAY,EAAE,GAAG5B,KAE9Eoa,EAAiBnQ,SAASvT,EAAEkL,WAAY,EAAE,GAAGkU,MAAME,SADlC,eAAjB3Q,EAC8D,SAGA,QAOlFyS,EAAgBpiB,KAAK+J,OAAOiP,OAAO5M,QAAQL,cAAc,IAAM/L,KAAK+J,OAAOmD,KAAKlN,KAAK+J,OAAO4a,aAAara,GAAKsa,CAAoB,EAClIxC,GACApiB,KAAKmiB,qBAAqBC,CAAa,IAYnD5D,EAActe,UAAU2L,kBAAoB,SAAU5B,EAAMC,GACxD,IAAIC,EAAQnK,KACZ,GAAIkK,EAAQkG,QAAQ,2BAA2B,EAAG,CAC9C,IAAIhG,EAAYpK,KAAK+J,OAAOM,cAAc,SAAU,CAChDC,GAAIL,EAAKK,GACZ,EASGua,GARJ3a,EAAQM,YAAYJ,CAAS,EACzBF,EAAQ6B,cAAc,2BAA2B,EAAEM,UAAUC,SAAS,YAAY,GAClFlC,EAAUiC,UAAUe,IAAI,YAAY,EAExClD,EAAQ6B,cAAc,2BAA2B,EAAEM,UAAUe,IAAI,UAAU,EAC3ElD,EAAQiK,iBAAiB,6BAA6B,EAAE8N,QAAQ,SAAUC,GACtEA,EAAI7V,UAAUe,IAAI,UAAU,EAC/B,EACiBlD,EAAQ6B,cAAc,IAAM9B,EAAKK,GAAK,cAAc,GAIlE0C,GAHA6X,GACAA,EAAYxY,UAAUe,IAAI,UAAU,EAEzBH,EAAQjN,KAAK+J,OAAOmD,KAAMjD,EAAKK,EAAE,GAC5CrI,EAAU+K,GAAYA,EAASkL,MAAM4M,aAAe9X,EAASkL,MAAM4M,aAAe,GAClF3Z,EAAU6B,GAAYA,EAASkL,MAAMiC,OAASnN,EAASkL,MAAMiC,OAAS,GAC1E,GAAI,CAAClY,EACD,IAAK,IAAIjB,EAAI,EAAGA,EAAIiJ,EAAKyU,gBAAgBlJ,OAAO7U,OAAQK,CAAC,GAAI,CACzD,IAAK,IAAIiX,EAAI,EAAGA,EAAIhO,EAAKyU,gBAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAMpS,OAAQsX,CAAC,GACvF,GAAIhO,EAAKyU,gBAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAMwB,SAAS0D,EAAE/L,WAAY,EAAE,GAAGjK,QAAS,CACnGA,EAAUgI,EAAKyU,gBAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAMwB,SAAS0D,EAAE/L,WAAY,EAAE,GAAGjK,QACpG,MAGR,GAAIA,EACA,MAIZ,IAAIgV,EAAWC,SAASnL,cAAc,IAAM9B,EAAKK,GAAK,eAAe,EACjEya,EAAU5Y,eAAa8K,EAAU6H,OAAK,EACtCkG,EAAsB9N,SAASnL,cAAc,IAAM9B,EAAKK,GAAK,yCAAyC,EACtG8I,EAAW,IAAIP,iBAAe,CAC9B5Q,QAASA,EACTkJ,QAASA,EACT7K,OAAQ0kB,EACRpa,UAAW5K,KAAK+J,OAAOa,UACvBK,SAAU,4BACVD,SAAUf,EAAKe,SACfmE,KAAM,WACF,IAAI6S,EAAsBgD,EAAoB7Q,iBAAiB,6BAA6B,EAC5FhK,EAAM4X,gBAAgBgD,EAAS/C,CAAmB,EAClD7X,EAAM8a,oBAAoBD,EAAqB,CAAA,EAAM/a,EAAKK,EAAE,GAEhEwE,YAAa,SAAU2E,GACDtJ,EAAM+a,YAAYzR,EAAKvD,MAAOjG,EAAKyU,gBAAiB,aAAc,CAAA,CAAK,IAErFjL,EAAKC,OAAS,CAAA,KAGvBtJ,CAAS,EACU,SAAlB2a,EAAQ7S,QACRkB,EAASgC,SAASlD,MAAQiT,aAAWJ,EAAQ7S,KAAK,GAE/B,SAAnB6S,EAAQ1E,SACRjN,EAASgC,SAASiL,OAAS8E,aAAWJ,EAAQ1E,MAAM,EACpDjN,EAASgC,SAAShJ,QAAQgU,MAAMC,OAAU0E,EAAc,OAAE7Y,cAYtEsS,EAActe,UAAUsM,qBAAuB,SAAUvC,EAAMC,GAC3D,IAAI2a,EAAc3a,EAAQ6B,cAAc,IAAM9B,EAAKK,GAAK,cAAc,EAQlE8a,GAPAP,GACAA,EAAYxY,UAAU2C,OAAO,UAAU,EAE3C9E,EAAQ6B,cAAc,2BAA2B,EAAEM,UAAU2C,OAAO,UAAU,EAC9E9E,EAAQiK,iBAAiB,6BAA6B,EAAE8N,QAAQ,SAAUC,GACtEA,EAAI7V,UAAU2C,OAAO,UAAU,EAClC,EACmBkI,SAASnL,cAAc,IAAM9B,EAAKK,EAAE,GACpD8a,IACInO,EAAWC,SAASnL,cAAc,IAAM9B,EAAKK,GAAK,eAAe,EACjE8I,EAAWjH,eAAaiZ,EAAevS,gBAAc,EACzDoE,EAASzM,YAAY4I,EAAS9S,MAAM,EACpC8S,EAAStJ,UACTkF,SAAOoW,CAAa,IAG5B5G,EAActe,UAAU4f,eAAiB,SAAUZ,EAAYR,EAAiBf,EAAQ0H,EAAcnV,EAAO8O,GACzG,IAAIsG,EACAC,EACArb,EAAUgN,SAASnL,cAAc,IAAM4R,EAAS6G,CAAsB,EACtEgB,EAAqB9lB,MAAMQ,UAAUgU,MAAM3S,KAAK2I,EAAQiK,iBAAiB,4BAA4B,CAAC,EACtG8C,EAAWC,SAASnL,cAAc,IAAM4R,EAAS,iBAAiB,EAClE8H,EAAmB/lB,MAAMQ,UAAUgU,MAAM3S,KAAK0V,EAAS9C,iBAAiB,4BAA4B,CAAC,EACrGsR,EAAiB9kB,SACjB6kB,EAAqBA,EAAmBnR,OAAOoR,CAAgB,GAEnE,IAAK,IAAIzkB,EAAI,EAAGA,EAAI0d,EAAgBlJ,OAAO7U,OAAQK,CAAC,GAChD,IAAK,IAAIiX,EAAI,EAAGA,EAAIyG,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAMpS,OAAQsX,CAAC,GAC9EuN,EAAmB,GAAGlb,KAAOqT,EAAS,oBAAsB3c,EAAI,WAAaiX,IAC7EqN,EAAe5G,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAMwB,SAAS0D,EAAE/L,WAAY,EAAE,IAEjGgT,EAAW5U,MAAQ0U,EAAU,SAAW,IAAMrB,EAAS,oBAAsB3c,EAAI,WAAaiX,IAC9FsN,EAAc7G,EAAgBlJ,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAMwB,SAAS0D,EAAE/L,WAAY,EAAE,IAI5G,IACIwZ,EADAC,EAAczO,SAAS0O,eAAe1G,EAAW5U,EAAE,EAEnDub,EAAqB,CAAEnS,OAAQ,CAAA,EAAOJ,KAAM,eAAgBgS,aAAcA,EAAcC,YAAaA,EAAaF,aAAcA,EAAcnV,MAAOA,GAIzJ,GAHIwO,EAAgBoH,cAChBpH,EAAgBoH,aAAavkB,KAAKvB,KAAM6lB,CAAkB,EAE1DA,CAAAA,EAAmBnS,OAGlB,CACD,IAAS1S,EAAI,EAAGA,EAAIwkB,EAAmB7kB,OAAQK,CAAC,GAC5CwkB,EAAmBjR,SAASvT,EAAEkL,WAAY,EAAE,GAAGG,UAAU2C,OAAO,2BAA2B,EAE1F2W,EAAYrb,GAAGyb,WAAW,QAAQ,EAG9B7O,SAAS0O,eAAeD,EAAYrb,GAAG4J,MAAM,CAAC,CAAC,IACpDwR,EAAmBxO,SAAS0O,eAAeD,EAAYrb,GAAG4J,MAAM,CAAC,CAAC,GAHlEwR,EAAmBxO,SAAS0O,eAAe,SAAW1G,EAAW5U,EAAE,EAKnEob,GACAA,EAAiBrZ,UAAUe,IAAI,2BAA2B,EAE9DuY,EAAYtZ,UAAUe,IAAI,2BAA2B,EAGrD,IAFA,IAAI4Y,EAAoB,CAAEV,aAAcA,EAAcC,YAAaA,EAAajS,KAAM,SAAU+R,aAAcA,EAAcnV,MAAOA,GAC/H+V,EAAoB/O,SAAS/C,iBAAiB,IAAMwJ,EAAS,wCAAwC,EAChG3c,EAAI,EAAGA,EAAIilB,EAAkBtlB,OAAQK,CAAC,GAC3C,GAAIilB,EAAkB1R,SAASvT,EAAEkL,WAAY,EAAE,GAAG5B,KAAO4U,EAAW5U,GAAI,CACpEoU,EAAgBmB,kBAAoB7e,EACpC,MAGJ0d,EAAgBtP,QAChBsP,EAAgBtP,OAAO7N,KAAKvB,KAAMgmB,CAAiB,IAI/DxH,EAActe,UAAUglB,YAAc,SAAUzR,EAAMiL,EAAiBpL,EAAM4S,GACrEC,EAAiB,CAAEzS,OAAQ,CAAA,EAAOxD,MAAOuD,EAAMH,KAAMA,GAOzD,OANI4S,GAAUxH,EAAgB0H,UAC1B1H,EAAgB0H,UAAU7kB,KAAKvB,KAAMmmB,CAAc,EAE9C,CAACD,GAAUxH,EAAgB2H,YAChC3H,EAAgB2H,WAAW9kB,KAAKvB,KAAMmmB,CAAc,EAEpDA,CAAAA,CAAAA,EAAezS,QAKvB8K,EAActe,UAAUsS,UAAY,SAAUqM,EAAO5H,EAAUxD,EAAMiL,EAAiBf,GAClF,IAYI2I,EAZctmB,KAAKklB,YAAYzR,EAAMiL,EAAiB,YAAa,CAAA,CAAI,IAI3EG,EAAM0H,OACNvmB,KAAK6iB,eAAehE,EAAO5H,CAAQ,GAC/B7M,EAAY8M,SAASnL,cAAc,IAAM4R,EAAS,cAAc,GAC1DtR,UAAUe,IAAI,yBAAyB,EAC7CoZ,EAAiBpc,EAAUqc,wBAC3BxP,EAASoK,YAAcmF,EAAeE,MACtC1mB,KAAK6iB,eAAehE,EAAO5H,EAAUuP,EAAeE,IAAI,EAExDJ,EAAUpD,KAAKC,IAAKlM,EAASoK,YAAcmF,EAAeE,MAAStc,EAAUiX,YACjFpK,EAASmJ,MAAMsG,KAAOJ,EAAU,KAChCrP,EAASmJ,MAAMqD,IAAMxM,EAASwP,wBAAwBhD,IAAM,EAAI,KAChEzjB,KAAKilB,oBAAoBhO,EAAU,CAAA,EAAO0G,EAAQkB,EAAOH,CAAe,IAE5EF,EAActe,UAAUqS,UAAY,SAAUsM,EAAO5H,EAAUxD,EAAMiL,EAAiBf,GAChE3d,KAAKklB,YAAYzR,EAAMiL,EAAiB,aAAc,CAAA,CAAK,IAI7EG,EAAMyF,OACUpN,SAASnL,cAAc,IAAM4R,EAAS,cAAc,EAC1DtR,UAAU2C,OAAO,yBAAyB,IAQxDwP,EAActe,UAAUymB,iBAAmB,SAAUrc,GACjD,IAAI0C,EAAWC,EAAQjN,KAAK+J,OAAOmD,KAAM5C,CAAE,EACvC2M,EAAWC,SAASnL,cAAc,IAAMzB,EAAK,eAAe,EAC5DuU,EAAQ1S,eAAa8K,EAAU6H,OAAK,EACxC9e,KAAKwS,UAAUqM,EAAO5H,EAAU,KAAMjK,EAAS/C,KAAKyU,gBAAiBpU,CAAE,GAQ3EkU,EAActe,UAAU0mB,iBAAmB,SAAUtc,GACjD,IAAI0C,EAAWC,EAAQjN,KAAK+J,OAAOmD,KAAM5C,CAAE,EACvC2M,EAAWC,SAASnL,cAAc,IAAMzB,EAAK,eAAe,EAC5DuU,EAAQ1S,eAAa8K,EAAU6H,OAAK,EACxC9e,KAAKuS,UAAUsM,EAAO5H,EAAU,KAAMjK,EAAS/C,KAAKyU,gBAAiBpU,CAAE,GAE3EkU,EAActe,UAAU+kB,oBAAsB,SAAUhO,EAAU4P,EAAYlJ,EAAQkB,EAAOH,GACzF,IAAIvU,EAAQnK,KACZiX,EAAS9C,iBAAiB,wBAAwB,EAAE,GAAGY,QACvD/U,KAAK8mB,kBAAoB,EACzB7P,EAASpD,UAAY,SAAUnI,GAC3BvB,EAAM4c,6BAA6Brb,EAAGuL,EAAU4P,EAAYlJ,EAAQkB,EAAOH,CAAe,IAGlGF,EAActe,UAAU6mB,6BAA+B,SAAUrb,EAAGuL,EAAU4P,EAAYlJ,EAAQkB,EAAOH,GACrG,IAAIsI,EAAkB/P,EAAS9C,iBAAiB,wBAAwB,EACpE6S,IACc,SAAVtb,EAAEnL,KACFP,KAAK8mB,kBAAoB,EACzBE,EAAgBhnB,KAAK8mB,mBAAmB/R,SAEzB,QAAVrJ,EAAEnL,KACPP,KAAK8mB,kBAAoBE,EAAgBrmB,OAAS,EAClDqmB,EAAgBhnB,KAAK8mB,mBAAmB/R,SAEzB,eAAVrJ,EAAEnL,KAAkC,cAAVmL,EAAEnL,KACjCP,KAAK8mB,iBAAiB,GAClB9mB,KAAK8mB,oBAAsBE,EAAgBrmB,OACvCqmB,GAAoBA,EAAgBhnB,KAAK8mB,oBACzCE,EAAgBhnB,KAAK8mB,mBAAmB/R,SAI5C/U,KAAK8mB,kBAAoB,EACzBE,EAAgBhnB,KAAK8mB,mBAAmB/R,UAG7B,cAAVrJ,EAAEnL,KAAiC,YAAVmL,EAAEnL,IACD,IAA3BP,KAAK8mB,mBACL9mB,KAAK8mB,iBAAiB,GAClBE,GAAoBA,EAAgBhnB,KAAK8mB,oBACzCE,EAAgBhnB,KAAK8mB,mBAAmB/R,UAI5C/U,KAAK8mB,kBAAoBE,EAAgBrmB,OAAS,EAClDqmB,EAAgBhnB,KAAK8mB,mBAAmB/R,SAG5B,UAAVrJ,EAAEnL,KAA8B,UAAXmL,EAAEub,OAAgC,WAAVvb,EAAEnL,KAAqBsmB,IAC1E7mB,KAAKuS,UAAUsM,EAAO5H,EAAUvL,EAAGgT,EAAiBf,CAAM,IAItEa,EAActe,UAAUugB,sBAAwB,SAAUW,EAAgB1C,EAAiBpU,EAAIyI,GAC3FqO,EAAe/U,UAAUe,IAAI,2BAA2B,EACxD,IAAI8Z,EAAe,SAAW5c,EAAK,kBAE/B6c,GADJnnB,KAAK+J,OAAsB,cAAE,CAACmd,EAAa,EACpBxP,GAAoBgH,EAAgB/G,QAAQ,GAC/D5E,EAAM/H,UACNoW,EAAe/U,UAAUe,IAAI,YAAY,EAEzC2F,EAAM9H,UACNmW,EAAe/U,UAAUe,IAAI2F,EAAM9H,QAAQ,EAE/CiP,SAAOiN,EAAiB,CAAEpU,MAAOA,GAAS/S,KAAMknB,EAAe5c,EAAK,kBAAoBtK,KAAK+J,OAAOqd,iBAAkB,KAAM,KAAMpnB,KAAK+J,MAAM,EAAGqX,CAAc,GAElK5C,EAActe,UAAUwgB,2BAA6B,SAAUU,EAAgB1C,EAAiBpU,EAAIyI,GAChGqO,EAAe/U,UAAUe,IAAI,iCAAiC,EAC9D,IAAI8Z,EAAe,SAAW5c,EAAK,uBAE/B6c,GADJnnB,KAAK+J,OAAsB,cAAE,CAACmd,EAAa,EACpBxP,GAAoBgH,EAAgB6B,aAAa,GACpExN,EAAM/H,UACNoW,EAAe/U,UAAUe,IAAI,YAAY,EAEzC2F,EAAM9H,UACNmW,EAAe/U,UAAUe,IAAI2F,EAAM9H,QAAQ,EAE/CiP,SAAOiN,EAAiB,CAAEpU,MAAOA,GAAS/S,KAAMknB,EAAe5c,EAAK,uBAAyBtK,KAAK+J,OAAOqd,iBAAkB,KAAM,KAAMpnB,KAAK+J,MAAM,EAAGqX,CAAc,OArwBvK5C,GAuwBOA,EAtwBP,SAASA,EAAczU,GACnB/J,KAAK2b,MAAQ,EACb3b,KAAK4gB,QAAU,CAAA,EACf5gB,KAAK8mB,kBAAoB,EACzB9mB,KAAKqnB,mBAAqB,GAC1BrnB,KAAK+J,OAASA,EACVud,EAAM,mBACVC,WAAS,qBAAsBvnB,KAAKqnB,mBAAoBrnB,IAAI,EAE5DunB,WAASD,EAAKtnB,KAAK+J,OAAYud,GAAMtnB,IAAI,ECjBzCZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAiC8BS,GAs0J9B2nB,GAx2JJ1nB,GAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAgBI6mB,IAAkC5nB,GAs5JpC6nB,YAr5JE5nB,GAAU2nB,EAAQ5nB,EAAM,GAaxB2nB,GAAWC,GAOJvnB,UAAUynB,OAAS,WACtB3nB,KAAK4nB,cAETH,EAAOvnB,UAAU2nB,UAAY,WACzB7nB,KAAK8nB,UAAY,GACjB9nB,KAAK+nB,QAAU,EACf/nB,KAAK4Z,YAAc,GACnB5Z,KAAKgoB,iBAAmB,GACxBhoB,KAAKioB,eAAiB,GACtBjoB,KAAKkoB,eAAiB,GACtBloB,KAAKmoB,aAAe,GACpBnoB,KAAKooB,WAAa,GAClBpoB,KAAKqoB,WAAa,GAClBroB,KAAKsoB,YAAc,CAAA,EACnBtoB,KAAKuoB,cAAgB,CAAA,EACrBvoB,KAAKwoB,WAAa,CACdC,UAAW,YACXC,WAAY,aACZ1Q,IAAK,MACL2Q,SAAU,cAQlBlB,EAAOvnB,UAAU0oB,eAAiB,WAC9B,OAAO5oB,KAAK6oB,aAAa,CAAC,eAAe,GAQ7CpB,EAAOvnB,UAAU2J,cAAgB,WAC7B,MAAO,UAQX4d,EAAOvnB,UAAU4oB,gBAAkB,WAC/B,IAAIC,EAAU,GAEVC,GADJD,EAAQ1S,KAAK,CAAE4S,OAAQ,eAAgBxV,KAAM,CAACzT,MAAOsT,KAAM,gBAAkB,CAAE2V,OAAQ,iBAAkBxV,KAAM,CAACzT,MAAOsT,KAAM,kBAAoB,CAAE2V,OAAQ,oBAAqBxV,KAAM,CAACzT,MAAOsT,KAAM,qBAAuB,CAAE2V,OAAQ,iBAAkBxV,KAAM,CAACzT,MAAOsT,KAAM,kBAAoB,CAAE2V,OAAQ,iBAAkBxV,KAAM,CAACzT,MAAOsT,KAAM,kBAAoB,CAAE2V,OAAQ,oBAAqBxV,KAAM,CAACzT,MAAOsT,KAAM,oBAAqB,EAC1YrG,EAAQjN,KAAKkN,KAAM,KAAMhO,iBAAeoP,WAAW,GAChF4a,EAAyBjc,EAAQjN,KAAKkN,KAAM,KAAMhO,iBAAeiqB,OAAO,EAmB5E,OAlBIH,GACAD,EAAQ1S,KAAK,CAAE4S,OAAQ,oBAAqBxV,KAAM,CAACzT,MAAOsT,KAAM,oBAAqB,EAErF4V,GACAH,EAAQ1S,KAAK,CAAE4S,OAAQ,gBAAiBxV,KAAM,CAACzT,MAAOsT,KAAM,gBAAiB,GAE7EtT,KAAKopB,cAAcC,SAAWrpB,KAAKopB,cAAcrW,MAAMpS,SACvDooB,EAAQ1S,KAAK,CAAE4S,OAAQ,kBAAmBxV,KAAM,CAACzT,MAAOsT,KAAM,kBAAmB,GAEjFtT,KAAKspB,SAASD,SAAWrpB,KAAKspB,SAASC,UAAU5oB,SACjDooB,EAAQ1S,KAAK,CAAE4S,OAAQ,iBAAkBxV,KAAM,CAACzT,MAAOsT,KAAM,iBAAkB,EAE/EtT,KAAKwpB,eAAe7oB,QACpBooB,EAAQ1S,KAAK,CAAE4S,OAAQ,sBAAuBxV,KAAM,CAACzT,MAAOsT,KAAM,sBAAuB,EAEzFtT,KAAKypB,eACLV,EAAQ1S,KAAK,CAAE4S,OAAQ,eAAgBxV,KAAM,CAACzT,MAAOsT,KAAM,eAAgB,EAExEyV,GAEXtB,EAAOvnB,UAAU0nB,WAAa,WAC1B5nB,KAAKoM,QAAQ9B,GAAKtK,KAAKoM,QAAQ9B,IAAMof,cAAY,KAAO1pB,KAAK6J,eAAe,EAC5EuR,WAAS,CAACpb,KAAKoM,SAAU,CAAC,SAASiI,OAAQrU,KAAKiL,SAAWjL,KAAKiL,SAASwB,MAAM0R,CAAe,EAAI,GAAI,EAClGne,KAAK4K,WACL5K,KAAKoM,QAAQC,UAAUe,IAAIuc,EAAiB,EAEhD3pB,KAAKoM,QAAQgU,MAAMlO,MAAQiT,aAAWnlB,KAAKkS,KAAK,EAChDlS,KAAK4pB,aACD5pB,KAAK6pB,2BACL7pB,KAAK6pB,0BAA0BC,oBAE/B9pB,KAAK+pB,sBACL/pB,KAAK+pB,qBAAqBC,eAAehqB,KAAKspB,QAAQ,EAEtDtpB,KAAKiqB,uBACLjqB,KAAKiqB,sBAAsBC,gBAAgBlqB,KAAKopB,aAAa,EAEjEppB,KAAKmqB,yBACSnqB,KAAKgZ,OAAc,MACzBoR,kBACRpqB,KAAKqqB,uBACLzW,GAAc5T,KAAKoM,QAASpM,IAAI,EAChCA,KAAKsqB,aAAe,CAAA,EACpBtqB,KAAKuqB,aACLvqB,KAAKwqB,oBACLxqB,KAAKyqB,oBAAsB,GAE/BhD,EAAOvnB,UAAUqqB,WAAa,WAC1Bjb,eAAalC,IAAImU,OAAQ,SAAUvhB,KAAK0qB,cAAe1qB,IAAI,EAC3DsP,eAAalC,IAAI8J,SAAS4M,KAAM,UAAW9jB,KAAK2qB,oBAAqB3qB,IAAI,EACzEsP,eAAalC,IAAI8J,SAAU,YAAalX,KAAK4qB,kBAAmB5qB,IAAI,EACpEsP,eAAalC,IAAI8J,SAAU,SAAUlX,KAAK4qB,kBAAmB5qB,IAAI,GAErEynB,EAAOvnB,UAAUsqB,kBAAoB,WACjCxqB,KAAK6qB,qBAAuB,IAAIC,iBAAe9qB,KAAKoM,QAAS,CACzD2e,UAAW/qB,KAAK+T,iBAAiBvE,KAAKxP,IAAI,EAC1CwoB,WAAYxoB,KAAKwoB,WACjBwC,UAAW,UACd,GAELvD,EAAOvnB,UAAU6T,iBAAmB,SAAUrI,GAC1B,QAAVA,EAAEnL,KAAqBmL,EAAEpL,OAAO+L,UAAUC,SAAS,YAAa,GAAOZ,EAAEpL,OAAO+L,UAAUC,SAAS,YAAa,GAClHZ,EAAEoJ,iBAEN,IAMId,EANAoO,EAAgBpiB,KAAKgZ,OAAO5M,QAAQL,cAAc,IAAM/L,KAAKkN,KAAKlN,KAAK2kB,aAAara,GAAKsa,CAAoB,EAC7G3Q,EAAkBvU,MAAMQ,UAAUgU,MAAM3S,KAAK6gB,EAAcjO,iBAAiB,YAAY,CAAC,EACzFC,EAAmB1U,MAAMQ,UAAUgU,MAAM3S,KAAK6gB,EAAcjO,iBAAiB,oBAAoB,CAAC,EAClG8W,EAAkBvrB,MAAMQ,UAAUgU,MAAM3S,KAAK6gB,EAAcjO,iBAAiB,wBAAwB,CAAC,EACrG+W,EAAiBjX,EAAgBI,OAAOD,EAAkB6W,CAAe,EACzE3W,EAAmB8N,EAAcjO,iBAAiB,aAAa,EAEnE,GAAIG,EACA,IAAK,IAAItT,EAAI,EAAGA,EAAIsT,EAAiB3T,OAAQK,CAAC,GACtCsT,EAAiBC,SAASvT,EAAEkL,WAAY,EAAE,GAAGkE,QAAQ,gBAAgB,IACrE4D,EAAcM,EAAiBC,SAASvT,EAAEkL,WAAY,EAAE,IAIpE,GAAI8H,EACA,IAAShT,EAAI,EAAGA,EAAIkqB,EAAevqB,OAAQK,CAAC,GACpCkqB,EAAe3W,SAASvT,EAAEkL,WAAY,EAAE,GAAGG,UAAUC,SAAS,YAAY,GACtE4e,EAAe3W,SAASvT,EAAEkL,WAAY,EAAE,GAAGkE,QAAQ,gBAAgB,IACnEpQ,KAAKyqB,oBAAsBzpB,GAK3C,GAAiC,IAA7BhB,KAAKyqB,oBAEL,IADA,IAAIxgB,EAAOihB,EAAelrB,KAAKyqB,qBAAqBra,QAAQ,gBAAgB,EACrEnG,GAAQA,EAAKoC,UAAUC,SAAS,YAAY,GAC/CtM,KAAKyqB,mBAAmB,GACxBxgB,EAAOihB,EAAelrB,KAAKyqB,qBAAqBra,QAAQ,gBAAgB,EAGhF,GAAI1E,EAAEpL,OAAO+L,UAAUC,SAAS,WAAW,GAAKZ,EAAEpL,OAAO+L,UAAUC,SAAS,wBAAwB,GAChGZ,EAAEpL,OAAO+L,UAAUC,SAAS,uBAAuB,GAAKZ,EAAEpL,OAAO+L,UAAUC,SAAS,oBAAoB,GACxGZ,EAAEpL,OAAO+L,UAAUC,SAAS,qBAAqB,GAAKZ,EAAEpL,OAAO+L,UAAUC,SAAS,uBAAuB,GACzGZ,EAAEpL,OAAO+L,UAAUC,SAAS,yBAAyB,GAAKZ,EAAEpL,OAAO+L,UAAUC,SAAS,mBAAmB,GAAKZ,EAAEpL,OAAO+L,UAAUC,SAAS,uBAAuB,EACjK,OAAQZ,EAAEyf,QACN,IAAK,aACDnrB,KAAKyU,iBAAiB/I,EAAG,CAAC1L,KAAK4K,UAAWsgB,CAAc,EACxD,MACJ,IAAK,YACDlrB,KAAKyU,iBAAiB/I,EAAG1L,KAAK4K,UAAWsgB,CAAc,EACvD,MACJ,IAAK,MACGxf,EAAEpL,OAAO+L,UAAUC,SAAS,YAAY,GACpCtM,KAAKyqB,oBAAsBS,EAAevqB,OAAS,GACnDX,KAAKyqB,mBAAmB,GAGhC,MACJ,IAAK,WACG/e,EAAEpL,OAAO+L,UAAUC,SAAS,YAAY,EACT,EAA3BtM,KAAKyqB,qBACLzqB,KAAKyqB,mBAAmB,IAI5BzqB,KAAKgZ,OAAO5M,QAAQL,cAAc,0BAA0B,EAAEA,cAAc,aAAa,EAAEgJ,QAC3F/U,KAAKyqB,oBAAsB,KAK/ChD,EAAOvnB,UAAUuU,iBAAmB,SAAU/I,EAAGd,EAAWsgB,GACxD,IACIE,EAkIQtf,EAvHZ,GAVIlB,EACI5K,KAAKyqB,oBAAsBS,EAAevqB,OAAS,GAAKuqB,EAAelrB,KAAKyqB,oBAAsB,GAAGpe,UAAUC,SAAS,eAAe,GACvItM,KAAKyqB,mBAAmB,GAIG,EAA3BzqB,KAAKyqB,qBAA2BS,EAAelrB,KAAKyqB,oBAAsB,GAAGpe,UAAUC,SAAS,eAAe,GAC/GtM,KAAKyqB,mBAAmB,GAG3B,CAAC7f,GAAyC,EAA3B5K,KAAKyqB,qBAA8B7f,GAAc5K,KAAKyqB,oBAAsBS,EAAevqB,OAAS,GACpH,GAAI,CAAC+K,EAAEpL,OAAO+L,UAAUC,SAAS,YAAY,IAAMZ,EAAEpL,OAAO+L,UAAUC,SAAS,WAAW,GAAKZ,EAAEpL,OAAO+L,UAAUC,SAAS,mBAAmB,GAAKZ,EAAEpL,OAAO+L,UAAUC,SAAS,uBAAuB,IAAM,CAACZ,EAAEpL,OAAO+L,UAAUC,SAAS,oBAAoB,EAAG,CACxP1B,EACA5K,KAAKyqB,mBAAmB,KAGpBY,EAAqBH,EAAe3W,SAASvU,KAAKyqB,oBAAoBve,WAAY,EAAE,GAAGkE,QAAQ,IAAMkb,EAAgC,KAErIF,EAAcC,EAAmBrU,aAAa,IAAI,GAEtDhX,KAAKyqB,mBAAmB,IAG5B,IAXA,IAiCgBc,EAUI3W,EAlBhBC,EAfA5K,EAAOihB,EAAelrB,KAAKyqB,qBAAqBra,QAAQ,gBAAgB,EACrEnG,GAAQA,EAAKoC,UAAUC,SAAS,YAAY,GAAG,CAClD,IAAM1B,GAAa5K,KAAKyqB,sBAAwBS,EAAevqB,OAAS,GACnE,CAACiK,GAA0C,IAA7B5K,KAAKyqB,sBAChBS,EAAelrB,KAAKyqB,qBAAqBra,QAAQ,gBAAgB,EAAE/D,UAAUC,SAAS,YAAY,EAAG,CACrGtM,KAAKgZ,OAAO5M,QAAQL,cAAc,wBAAwB,EAAEgJ,QAC5D,MAIRnK,EAAY5K,KAAKyqB,mBAAmB,GAAKzqB,KAAKyqB,mBAAmB,GACjExgB,EAAOihB,EAAelrB,KAAKyqB,qBAAqBra,QAAQ,gBAAgB,EAE5E8a,EAAe3W,SAASvU,KAAKyqB,oBAAoBve,WAAY,EAAE,GAAG6I,QACxC,YAAtB/U,KAAK2P,cACLkF,EAAiBqW,EAAe3W,SAASvU,KAAKyqB,oBAAoBve,WAAY,EAAE,GAAGkE,QAAQ,IAAMkb,EAAgC,EAC7H1gB,GACIgK,EAAkB,KAAA,GAElBA,EADAC,EACkBA,EAAe9I,cAAc,yBAAyB,EAExE6I,KAEI2W,GADAxY,EAAQ8B,EAAeV,iBAAiB,gBAAgB,GAC3CpB,EAAMpS,OAAS,GAAGoL,cAAc,YAAY,IAEzDwf,EAAKlf,UAAUe,IAAI,oBAAoB,GAK3CyH,GAEIuW,IADmBvW,EAAemC,aAAa,IAAI,IAG/CpC,EADkBC,EAAe9I,cAAc,yBAAyB,IAExEmf,EAAe3W,UAAUvU,KAAKyqB,oBAAsB,GAAGve,WAAY,EAAE,GAAGG,UAAUe,IAAI,qBAAqB,GAOvH8d,EAAe3W,SAAUvU,KAAwB,oBAAEkM,WAAY,EAAE,GAAGG,UAAUC,SAAS,qBAAqB,EAC5G4e,EAAe3W,SAAUvU,KAAwB,oBAAEkM,WAAY,EAAE,GAAGG,UAAU2C,OAAO,qBAAqB,EAErGkc,EAAe3W,SAAUvU,KAAwB,oBAAEkM,WAAY,EAAE,GAAGG,UAAUC,SAAS,oBAAoB,GAChH4e,EAAe3W,SAAUvU,KAAwB,oBAAEkM,WAAY,EAAE,GAAGG,UAAU2C,OAAO,oBAAoB,OAM3F,YAAtBhP,KAAK2P,cACL3P,KAAKgZ,OAAO5M,QAAQL,cAAc,wBAAwB,EAAEgJ,QAEtC,eAAtB/U,KAAK2P,eACD7D,EAAiB9L,KAAKgZ,OAAO5M,QAAQL,cAAc,0BAA0B,GAC7EnB,GAAckB,GAAkB,CAACA,EAAeO,UAAUC,SAAS,eAAe,EAClFR,EAGA9L,KAAKgZ,OAAO5M,QAAQL,cAAc,wBAAwB,GAH3CgJ,SAsC3B,GA/BIrJ,EAAEpL,OAAO+L,UAAUC,SAAS,oBAAoB,IAC5C1B,GACAiK,EAAiBqW,EAAe3W,SAASvU,KAAKyqB,oBAAoBve,WAAY,EAAE,GAAGkE,QAAQ,IAAMkb,EAAgC,GAClHvf,cAAc,yBAAyB,GAGtD/L,KAAKyqB,mBAAmB,GACxBS,EAAe3W,SAASvU,KAAKyqB,oBAAoBve,WAAY,EAAE,KAJP6I,QAO5D,CAACnK,GAAac,EAAEpL,OAAO+L,UAAUC,SAAS,qBAAqB,IAG3DsI,GAFJC,EAAiBqW,EAAe3W,UAAUvU,KAAKyqB,oBAAsB,GAAGve,WAAY,EAAE,GAAGkE,QAAQ,IAAMkb,EAAgC,GAClGvf,cAAc,yBAAyB,IAExE8I,EAAe9I,cAAc,yBAAyB,EAAEgJ,QAG5DrJ,EAAEpL,OAAO+L,UAAUC,SAAS,wBAAwB,IAChD1B,GACA5K,KAAKyqB,mBAAmB,GACxBS,EAAe3W,SAASvU,KAAKyqB,oBAAoBve,WAAY,EAAE,GAAG6I,QAC9DmW,EAAe3W,UAAUvU,KAAKyqB,oBAAsB,GAAGve,WAAY,EAAE,GAAGG,UAAUC,SAAS,oBAAoB,GAC/G4e,EAAe3W,UAAUvU,KAAKyqB,oBAAsB,GAAGve,WAAY,EAAE,GAAGG,UAAU2C,OAAO,oBAAoB,IAKjHhP,KAAKyqB,oBACLS,EAAe3W,SAASvU,KAAKyqB,oBAAoBve,WAAY,EAAE,GAAG6I,UAGtErJ,EAAEpL,OAAO+L,UAAUC,SAAS,uBAAuB,EACnD,GAAI1B,EAAW,CACX5K,KAAKyqB,oBAAsB,EAE3B,IADA,IAAIzV,EAAakW,EAAelrB,KAAKyqB,qBAAqBra,QAAQ,gBAAgB,EAC3E4E,GAAcA,EAAW3I,UAAUC,SAAS,YAAY,GAC3DtM,KAAKyqB,mBAAmB,GACxBzV,EAAakW,EAAelrB,KAAKyqB,qBAAqBra,QAAQ,gBAAgB,EAElF8a,EAAe3W,SAASvU,KAAKyqB,oBAAoBve,WAAY,EAAE,GAAG6I,aAIlE,IAAKjJ,EADgB9L,KAAKgZ,OAAO5M,QAAQL,cAAc,0BAA0B,IAC1D,CAACD,EAAeO,UAAUC,SAAS,eAAe,EACrER,EAAeiJ,YAEd,CACD/U,KAAKyqB,oBAAsBS,EAAevqB,OAAS,EAEnD,IADIqU,EAAakW,EAAelrB,KAAKyqB,qBAAqBra,QAAQ,gBAAgB,EAC3E4E,GAAcA,EAAW3I,UAAUC,SAAS,YAAY,GAC3DtM,KAAKyqB,mBAAmB,GACxBzV,EAAakW,EAAelrB,KAAKyqB,qBAAqBra,QAAQ,gBAAgB,EAElF8a,EAAe3W,SAASvU,KAAKyqB,oBAAoBve,WAAY,EAAE,GAAG6I,QAIpD,eAAtB/U,KAAK2P,cAAiCjE,EAAEpL,OAAO+L,UAAUC,SAAS,yBAAyB,IACvF1B,EACA5K,KAAKgZ,OAAO5M,QAAQL,cAAc,wBAAwB,GAG1D/L,KAAKyqB,oBAAsBS,EAAevqB,OAAS,EACnDuqB,EAAe3W,SAASvU,KAAKyqB,oBAAoBve,WAAY,EAAE,KAJH6I,SAQxE0S,EAAOvnB,UAAUwqB,cAAgB,WAC7B,IAAItI,EAAgBpiB,KAAKgZ,OAAO5M,QAAQL,cAAc,IAAM/L,KAAKkN,KAAKlN,KAAK2kB,aAAara,GAAKsa,CAAoB,EAMjH,GALA5kB,KAAKwrB,cAAcxrB,KAAK2kB,YAAavC,CAAa,EAC9CpiB,KAAKyrB,eACDC,EAAY1rB,KAAKgZ,OAAO5M,QAAQL,cAAc,IAAM4f,EAA8B,EACtF3rB,KAAKyrB,aAAaG,WAAaF,EAAUrK,aAEnB,eAAtBrhB,KAAK2P,aAA+B,CACpC,IAAIkc,EAAc3U,SAAS/C,iBAAiB,2FAA2F,EACvI,GAAI0X,EAAYlrB,OACZ,IAAK,IAAIK,EAAI,EAAGA,EAAI6qB,EAAYlrB,OAAQK,CAAC,GACnB8qB,cAAYD,EAAYtX,SAASvT,EAAEkL,WAAY,EAAE,GAAI2G,gBAAc,EACzEtG,SAIpBya,EAAkB9P,SAASnL,cAAc,sCAAsC,EAC/Eib,GACY7a,eAAa6a,EAAiBlI,OAAK,EACzCwF,OAENtkB,KAAK+rB,oBAAsB/rB,KAAKypB,eAChCzpB,KAAK+rB,mBAAmBC,gBAGhCvE,EAAOvnB,UAAU0qB,kBAAoB,WAC7B5qB,KAAK+rB,oBAAsB/rB,KAAKypB,eAChCzpB,KAAK+rB,mBAAmBC,gBAGhCvE,EAAOvnB,UAAUyqB,oBAAsB,SAAUjf,GAC7C,GAAI1L,KAAKypB,cAAe,CACpB,IAAIwC,EAAkB,CAAA,EAClBC,EAAWxgB,EAAEnL,IACjB,GAAImL,EAAEygB,QAAoB,SAAVzgB,EAAEnL,IAAgB,CAC9B,IAUY6rB,EAVRP,EAAc3U,SAAS/C,iBAAiB,2FAA2F,EACvI,GAAI0X,EAAYlrB,OAAQ,CACpB,IAAK,IAAIK,EAAI,EAAGA,EAAI6qB,EAAYlrB,OAAQK,CAAC,GACnB8qB,cAAYD,EAAYtX,SAASvT,EAAEkL,WAAY,EAAE,GAAI2G,gBAAc,EACzEtG,SAEhBvM,KAAK+rB,mBAAmBC,oBAGnBhsB,KAAKsqB,aAQNtqB,KAAK+rB,mBAAmBC,iBAPpBI,EAAiBlV,SAASnL,cAAc,2BAA2B,IACjDqgB,EAAe/f,UAAUC,SAAS,cAAc,GAClEtM,KAAKiqB,sBAAsBoC,gBAE/BrsB,KAAK+rB,mBAAmBO,aAAa,KAAK,QAOjD,GAAc,WAAV5gB,EAAEnL,KAA8B,QAAVmL,EAAEnL,KAA2B,cAAVmL,EAAEnL,KAAiC,YAAVmL,EAAEnL,KAA+B,eAAVmL,EAAEnL,KAAkC,cAAVmL,EAAEnL,IAC1HP,KAAK+rB,mBAAmBC,aAAatgB,EAAEnL,GAAG,MAEzC,CACD,IAAIgsB,EAAcrV,SAAS/C,iBAAiB,kBAAkB,EAC9D,GAAIoY,EAAa,CACb,IAASvrB,EAAI,EAAGA,EAAIurB,EAAY5rB,OAAQK,CAAC,GAErC,GADiBurB,EAAYhY,SAASvT,EAAEkL,WAAY,EAAE,GACvC2D,UAAU2c,gBAAkBN,EAAU,CACjDD,EAAkB,CAAA,EAClBjsB,KAAK+rB,mBAAmBU,YAAYP,CAAQ,EAC5C,MAGHD,GACDjsB,KAAK0sB,mBAAmBR,EAAUlsB,KAAK8nB,UAAUnnB,MAAM,MAM3E8mB,EAAOvnB,UAAUwsB,mBAAqB,SAAUC,EAAQhsB,GAEpD,IADA,IAAI4rB,EAAcrV,SAAS/C,iBAAiB,kBAAkB,EACrDnT,EAAI,EAAGA,EAAIurB,EAAY5rB,OAAQK,CAAC,GAAI,CACzC,IAAI4rB,EAAaL,EAAYhY,SAASvT,EAAEkL,WAAY,EAAE,GACtD,GAAkC,EAA9B0gB,EAAW/c,UAAUlP,QAAcisB,EAAW/c,UAAU0E,SAAS5T,EAAOuL,WAAY,EAAE,GAAGsgB,gBAAkBG,EAAQ,CACnH3sB,KAAK8nB,WAAa6E,EAClB3sB,KAAK+rB,mBAAmBU,YAAYzsB,KAAK8nB,SAAS,EAClD9nB,KAAKgsB,aAAahsB,KAAK8nB,SAAS,EAChC,SAIZL,EAAOvnB,UAAU8rB,aAAe,SAAUW,GAEtC,IADA,IAAIJ,EAAcrV,SAAS/C,iBAAiB,kBAAkB,EACrDnT,EAAI,EAAGA,EAAIurB,EAAY5rB,OAAQK,CAAC,GAAI,CACzC,IAAI4rB,EAAaL,EAAYhY,SAASvT,EAAEkL,WAAY,EAAE,GAClD0gB,EAAW/c,UAAU,GAAG2c,gBAAkBG,GAAqB,KAAXA,GACpD3d,SAAO4d,CAAU,IAI7BnF,EAAOvnB,UAAU2sB,UAAY,SAAUtX,EAAUoX,EAAQriB,EAAI2B,GACzD,GAAIjM,KAAKkoB,gBAAkBloB,KAAKkoB,eAAe3T,SAASgB,EAASrJ,WAAY,EAAE,GAAI,CAC/E,IAAI4gB,EAAgB,CAAA,EAIpB,GAHM9sB,KAAKkoB,eAAe3T,SAASgB,EAASrJ,WAAY,EAAE,GAAG,GAAKD,KAC9DjM,KAAKkoB,eAAe3T,SAASgB,EAASrJ,WAAY,EAAE,GAAG,GAAKD,GAAQ,IAEpE1M,OAAOwtB,KAAK/sB,KAAKkoB,eAAe3T,SAASgB,EAASrJ,WAAY,EAAE,GAAG,GAAKD,EAAK,EAAEtL,OAAQ,CAEvF,IADA,IAAIqsB,EAAahtB,KAAKkoB,eAAe3T,SAASgB,EAASrJ,WAAY,EAAE,GAAG,GAAKD,GACpEjL,EAAI,EAAGA,EAAIzB,OAAOwtB,KAAK/sB,KAAKkoB,eAAe3T,SAASgB,EAASrJ,WAAY,EAAE,GAAG,GAAKD,EAAK,EAAEtL,OAAQK,CAAC,GACpGgsB,EAAWzY,SAASvT,EAAEkL,WAAY,EAAE,GAAG5B,KAAOA,IAC9CwiB,EAAgB,CAAA,GAGnBA,GACD9sB,KAAKkoB,eAAe3T,SAASgB,EAASrJ,WAAY,EAAE,GAAG,GAAKD,GACxDoK,KAAK,CAAE/L,GAAIA,EAAI2B,KAAMA,EAAM0gB,OAAQA,EAAQ,OAInD3sB,KAAKkoB,eAAe3T,SAASgB,EAASrJ,WAAY,EAAE,GAAG,GAAKD,GAAMoK,KAAK,CAAE/L,GAAIA,EAAI2B,KAAMA,EAAM0gB,OAAQA,EAAQ,IAIzHlF,EAAOvnB,UAAU0pB,WAAa,WAC1B5pB,KAAKitB,aAAejtB,KAAKkN,KAAKgH,QAC9BlU,KAAKitB,aAAejtB,KAAKktB,QAAQltB,KAAKitB,aAAc,MAAOjtB,KAAKoM,QAAQ9B,EAAE,EAC1EtK,KAAKoB,cAAc,CAAE8L,KAAMlN,KAAKitB,cAAgB,CAAA,CAAI,EACpD,IAAIE,EAASntB,KAAKqK,cAAc,MAAO,CACnCC,GAAItK,KAAKoM,QAAQ9B,GAAK8iB,GACzB,EAGGC,GAFJrtB,KAAKoM,QAAQ5B,YAAY2iB,CAAM,EAC/BntB,KAAKstB,mBACUttB,KAAKutB,eAAevtB,KAAKkN,IAAI,GAiBxCsgB,GAhBJxtB,KAAKgZ,OAAS,IAAIyU,MAAI,CAClBxiB,SAAUyiB,GACVC,aAAc3tB,KAAK2kB,YACnBiJ,aAAc,QACd1b,MAAOlS,KAAKkS,MACZa,MAAOsa,EACPziB,UAAW5K,KAAK4K,UAChBU,QAAStL,KAAK6tB,WAAWre,KAAKxP,IAAI,EAClCoc,SAAUpc,KAAK8tB,kBAAkBte,KAAKxP,IAAI,EAC1C+tB,UAAW/tB,KAAKguB,mBAAmBxe,KAAKxP,IAAI,EAC5CiuB,UAAWjuB,KAAKkuB,aACnB,EACDluB,KAAKgZ,OAAO9F,SAASia,CAAM,EAE3BntB,KAAKoM,QAAQgU,MAAM+N,YAAYC,GAAkC,KAAK,EACtEpuB,KAAKoM,QAAQgU,MAAM+N,YAAYE,GAA2C,KAAK,EAC9DlB,EAAOphB,cAAc,YAAY,GACpCI,eAAaqhB,EAAYc,SAAO,EACtCltB,cAAc,CAAE8Q,MAAO,+DAAgE,EAC/FlS,KAAKoM,QAAQC,UAAUrM,KAAKuuB,YAAc,MAAQ,UAAUC,EAAyB,GAEzF/G,EAAOvnB,UAAUuuB,SAAW,SAAUC,GAClC,IAAIvkB,EAAQnK,KACR0uB,IAAQ1uB,KAAKuuB,aAIjBvuB,KAAK2uB,QAAQD,EAAM,mBAAqB,kBADxB,CAAEhb,OAAQ,CAAA,GAC4C,SAAUD,GACxEA,EAAKC,SAGTvJ,EAAM/I,cAAc,CAAEmtB,YAAaG,GAAO,CAAA,CAAI,EAC9CvkB,EAAMiC,QAAQC,UAAUE,OAAOiiB,GAA2BrkB,EAAMokB,WAAW,EAE3EpkB,EAAM6O,OAAO5M,QAAQL,cAAc,YAAY,EAAEqU,MAAMwO,QAAUF,EAAM,OAAS,QAC3EA,IACDvkB,EAAM0kB,gBAEb,GAELpH,EAAOvnB,UAAU4uB,aAAe,SAAUrb,GACtCzT,KAAKoB,cAAc,CAAEuO,aAAoC,eAAtB3P,KAAK2P,aAAgC,UAAY,cAAgB,CAAA,CAAI,EACxG3P,KAAK+uB,eACD3R,EAAY,CAAEzN,aAAc3P,KAAK2P,aAAcO,MAAOuD,GAC1DzT,KAAK2uB,QAAQ,uBAAwBvR,CAAS,GAElDqK,EAAOvnB,UAAU2tB,WAAa,WACrB7tB,KAAKgvB,oBACNhvB,KAAKivB,oBAETjvB,KAAKkvB,iBAAiBlvB,KAAK2kB,WAAW,GAE1C8C,EAAOvnB,UAAU4tB,kBAAoB,SAAUpiB,GAC3CA,EAAEyjB,aAAe,CAAA,EACjBnvB,KAAKsoB,YAAc,CAAA,EACnB,IAAI8G,EAAgB1jB,EAAEiiB,aAAa3W,aAAa,SAAS,EAEzDqY,EAAkC,CAAC,KAAnBA,EADI9X,EAASvX,KAAKkN,cAAiB8K,GAAO,OAAQA,EAAI1N,KAAO8kB,CAAiB,IACvDpvB,KAAK2kB,YAAc0K,EACtDC,EAAkBtvB,KAAKgZ,OAAOjG,MAAMwB,SAAS8a,EAAcnjB,WAAY,EAAE,GAAGf,QAK5EokB,GAJED,EAAgBvjB,cAAc,IAAMyjB,EAAsB,GAA2E,IAApExvB,KAAKkN,KAAKqH,SAAS8a,EAAcnjB,WAAY,EAAE,GAAGsJ,OAAO7U,SACxH8uB,EAAWzvB,KAAK0vB,aAAa1vB,KAAKkN,KAAKqH,SAAS8a,EAAcnjB,WAAY,EAAE,GAAGsJ,OAAQ6Z,CAAa,EACxGnV,SAAOuV,EAAUH,CAAe,GAEjBtvB,KAAK2vB,gBAAgBP,CAAa,GAEjDhS,GADJpd,KAAK4vB,oBAAoBR,CAAa,EACtB,CAAES,cAAe7vB,KAAK2kB,YAAa0K,cAAeA,EAAeE,aAAcA,IAG/F,GAFAvvB,KAAKoB,cAAc,CAAEujB,YAAa0K,GAAiB,CAAA,CAAI,EACvDrvB,KAAK8vB,6BAA6BT,CAAa,EAC3CrvB,KAAKuoB,cAAe,CACpB,IAAK,IAAIvnB,EAAI,EAAGA,EAAIhB,KAAKooB,WAAWznB,OAAQK,CAAC,GAAI,CAC7C,IAAIiJ,EAAOjK,KAAKooB,WAAW7T,SAASvT,EAAEkL,WAAY,EAAE,GAChDlM,KAAK2kB,cAAgB3kB,KAAKqoB,WAAWpe,EAAKK,MAC1CtK,KAAK+vB,WAAW9lB,CAAI,EACpBjK,KAAKooB,WAAW4H,OAAOhvB,EAAG,CAAC,EAC3BA,CAAC,IAGsB,IAA3BhB,KAAKooB,WAAWznB,SAChBX,KAAKuoB,cAAgB,CAAA,GAGzBvoB,KAAKiwB,qBACLjwB,KAAKiwB,oBAAoB9N,qBAAqBzW,EAAE4jB,gBAAgBvf,UAAU,EAE9E/P,KAAKwrB,cAAc6D,EAAeC,CAAe,EACvB,eAAtBtvB,KAAK2P,cAAiC3P,KAAKuZ,eAEvC2W,GADAC,EAAiBnwB,KAAKuZ,YAAYjZ,QACFyL,cAAc,IAAMqkB,EAA2B,IAE/EF,EAAe7jB,UAAU2C,OAAOohB,EAA2B,GAE3DC,EAAYF,EAAepkB,cAAc,IAAMqjB,EAAgBkB,CAAqB,IAEpFD,EAAUhkB,UAAUe,IAAIgjB,EAA2B,EACnDpwB,KAAKuZ,YAAYnN,QAAQC,UAAU2C,OAAOuhB,EAAkB,EAC5DvwB,KAAKwwB,yBAAyB,CAAA,EAAOnB,CAAa,GAGlDrvB,KAAKuZ,YAAYnN,QAAQC,UAAUe,IAAImjB,EAAkB,GAGjEvwB,KAAK2uB,QAAQ,cAAevR,CAAS,GAEzCqK,EAAOvnB,UAAU0vB,oBAAsB,SAAUa,GAC7C,GAAIzwB,KAAKwpB,eAAe7oB,OACpB,IAAK,IAAIK,EAAI,EAAGA,EAAIhB,KAAKwpB,eAAe7oB,OAAQK,CAAC,GAAI,CAEjD,IADA,IAAI2b,EAAa,CAAA,EACR1E,EAAI,EAAGA,EAAIjY,KAAKwpB,eAAejV,SAASvT,EAAEkL,WAAY,EAAE,GAAGgB,KAAKvM,OAAQsX,CAAC,GAC9E,GAAIjY,KAAKwpB,eAAejV,SAASvT,EAAEkL,WAAY,EAAE,GAAGgB,KAAKqH,SAAS0D,EAAE/L,WAAY,EAAE,GAAG5B,KAAOmmB,EAAO,CAC/F9T,EAAa,CAAA,EACb,MAGR3c,KAAKwpB,eAAejV,SAASvT,EAAEkL,WAAY,EAAE,GACzC9K,cAAc,CAAEub,WAAYA,GAAc,CAAA,CAAI,IAI9D8K,EAAOvnB,UAAUsrB,cAAgB,SAAUjW,EAAU6M,GACjD,IA8BYsO,EA9BRC,EAAavO,EAAchS,QAAQ,IAAMwgB,EAAqB,EAC9DC,EAAaF,EAAWtP,YAAce,EAAcf,YACpDwP,GAAc,CAAC7wB,KAAKyrB,cACM,YAAtBzrB,KAAK2P,cAID,EADJ+gB,EAAU1wB,KAAK8wB,oBAAoBvb,EAAUob,EAAYvO,EAAe,EADpEsO,EAAU,CAAA,EAC8D,IAC3DC,EAAWtP,YAAce,EAAcf,cACpDqP,EAAU1wB,KAAK8wB,oBAAoBvb,EAAUob,EAAYvO,EAAe,CAAA,CAAK,GAE7EuO,EAAWtP,YAAce,EAAcf,aACvCrhB,KAAK+wB,uBAAuBxb,EAAUob,EAAYvO,CAAa,IAInEpiB,KAAKgxB,6BAA6Bzb,EAAUob,EAAYvO,CAAa,EACjEuO,EAAWtP,YAAce,EAAcf,aACvCrhB,KAAKixB,wBAAwBN,EAAYvO,EAAe7M,CAAQ,GAInEob,EAAWtP,YAAce,EAAcf,cAAkBrhB,KAAKyrB,eAC/DzrB,KAAKyrB,aAAe,IAAIyF,UAAQ,CAC5BtmB,UAAW5K,KAAK4K,WACjB5K,KAAKgZ,OAAO5M,QAAQL,cAAc,IAAM6kB,EAAqB,CAAC,IAG/DC,IACN7wB,KAAKmxB,gBACqB,YAAtBnxB,KAAK2P,aAQD,EAHA+gB,EADA,EAFJA,EAAU1wB,KAAKoxB,uBAAuBT,EAAYvO,EAD9CsO,EAAU,CAAA,EAC0Dnb,CAAQ,IAE/Dob,EAAWtP,YAAce,EAAcf,YAC1CrhB,KAAKqxB,oBAAoB9b,EAAUob,EAAYvO,EAAe,CAAA,CAAI,EAG3EsO,IAAYC,EAAWtP,YAAce,EAAcf,cACpDqP,EAAU1wB,KAAKqxB,oBAAoB9b,EAAUob,EAAYvO,EAAe,CAAA,CAAK,IAIjFpiB,KAAKsxB,wBAAwBX,EAAYvO,EAAe7M,CAAQ,EAC5Dob,EAAWtP,YAAce,EAAcf,aACvCrhB,KAAKuxB,6BAA6Bhc,EAAUob,EAAYvO,CAAa,IAIjFpiB,KAAKqqB,wBAET5C,EAAOvnB,UAAUmqB,qBAAuB,WACpC,IAAImH,EAAcxxB,KAAKgZ,OAAO5M,QAAQL,cAAc,OAAO,EACvDylB,GACAxxB,KAAKkoB,eAA4B,YAAI,GACrCloB,KAAKkoB,eAA4B,YAAE7R,KAAK,CAAE/L,GAAIknB,EAAYlnB,GAAI2B,KAAM,cAAe0gB,OAAQ,KAAM,GAGjG,OAAQ3sB,KAAKkoB,eAA6B,aAGlDT,EAAOvnB,UAAU8wB,6BAA+B,SAAUzb,EAAUob,EAAYvO,GAE5E,IADA,IAAIpK,EAAMhY,KAAKkN,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GAC3ClL,EAAKgX,EAAIxC,OAAO7U,OAAS,EAAU,GAALK,EAASA,CAAC,GAG7C,IAFA,IAAIkX,EAAQF,EAAIxC,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAC5C2I,EAAiB8b,EAAW5kB,cAAc,IAAMmM,EAAM5N,GAAKka,CAAsB,EAC5EvM,EAAI,EAAKA,EAAIC,EAAME,YAAYzX,QAAYgwB,EAAWtP,YAAce,EAAcf,YAAepJ,CAAC,GAEvG,IADA,IAAII,EAAaH,EAAME,YAAY7D,SAAS0D,EAAE/L,WAAY,EAAE,GACnDiM,EAAIE,EAAWtF,MAAMpS,OAAe,GAALwX,GAAYwY,EAAWtP,YAAce,EAAcf,YAAelJ,CAAC,GAAI,CAC3G,IAGQsZ,EAEIvnB,EALRD,EAAOoO,EAAWtF,MAAMoF,EAAI,GAC1BlO,EAAKynB,aAAe1yB,iBAAegE,OAAWiH,EAAKynB,aAAe1yB,iBAAe+D,QAC/EkH,EAAKc,aAAe/L,iBAAe+D,QAAYkH,EAAKiP,eAAiBja,cAAYma,aACjFqY,EAAgB5c,EAAe9I,cAAc,IAAM9B,EAAKK,GAAKka,CAAsB,KAE/Eta,EAAUunB,EAAc1lB,cAAc,IAAM9B,EAAKK,EAAE,EACvDmnB,EAAc7lB,aAAa,oBAAqBwW,EAAcf,YAAYnV,UAAU,EACpFjC,EAAK7I,cAAc,CAAE2J,WAAY/L,iBAAegE,OAAS,CAAA,CAAI,EAC7DhD,KAAK2xB,YAAYznB,EAASD,CAAI,KAOtDwd,EAAOvnB,UAAUqxB,6BAA+B,SAAUhc,EAAUob,EAAYvO,GAE5E,IADA,IAAIpK,EAAMhY,KAAKkN,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GAC3ClL,EAAKgX,EAAIxC,OAAO7U,OAAS,EAAU,GAALK,EAASA,CAAC,GAG7C,IAFA,IAAIkX,EAAQF,EAAIxC,OAAOjB,SAASvT,EAAEkL,WAAY,EAAE,GAC5C2I,EAAiB8b,EAAW5kB,cAAc,IAAMmM,EAAM5N,GAAKka,CAAsB,EAC5EvM,EAAI,EAAKA,EAAIC,EAAME,YAAYzX,QAAYgwB,EAAWtP,YAAce,EAAcf,YAAepJ,CAAC,GAEvG,IADA,IAAII,EAAaH,EAAME,YAAY7D,SAAS0D,EAAE/L,WAAY,EAAE,GACnDiM,EAAIE,EAAWtF,MAAMpS,OAAe,GAALwX,GAAYwY,EAAWtP,YAAce,EAAcf,YAAelJ,CAAC,GAAI,CAC3G,IAGQsZ,EAMQvnB,EATZD,EAAOoO,EAAWtF,MAAMoF,EAAI,GAC1BlO,EAAKynB,aAAe1yB,iBAAegE,OAAWiH,EAAKynB,aAAe1yB,iBAAe+D,QAC/EkH,EAAKc,aAAe/L,iBAAegE,OAAWiH,EAAKiP,eAAiBja,cAAYma,aAChFqY,EAAgB5c,EAAe9I,cAAc,IAAM9B,EAAKK,GAAKka,CAAsB,KAG/ExiB,GADA4vB,EAAYH,EAAcza,aAAa,mBAAmB,GACtCzC,SAASqd,EAAW,EAAE,EAAI,OACpCjB,EAAWtP,YAAcrf,IACnCyvB,EAAcI,gBAAgB,mBAAmB,EAC7C3nB,EAAUunB,EAAc1lB,cAAc,IAAM9B,EAAKK,EAAE,EACvDL,EAAK7I,cAAc,CAAE2J,WAAY/L,iBAAe+D,QAAU,CAAA,CAAI,EAC9D/C,KAAK2xB,YAAYznB,EAASD,CAAI,KAQ1Dwd,EAAOvnB,UAAU+wB,wBAA0B,SAAUN,EAAYvO,EAAe7M,GAG5E,IAFA,IAAIuc,EAAgB9xB,KAAK+xB,oBAAoB,CAAA,EAAMxc,CAAQ,EAElDvU,EAAI,EAAKA,EAAI8wB,EAAcnxB,QAAYgwB,EAAWtP,YAAce,EAAcf,YAAergB,CAAC,GAAI,CAKvG,IAJA,IAAIgxB,EAAiB,CAAA,EACjB9Z,EAAQ4Z,EAAcvd,SAASvT,EAAEkL,WAAY,EAAE,GAC/CqH,EAAWod,EAAW5kB,cAAc,IAAMmM,EAAM5N,EAAE,EAClDuK,EAAiBtB,EAASxH,cAAc,IAAMmM,EAAM5N,GAAKka,CAAsB,EAC1EvM,EAAIC,EAAME,YAAYzX,OAAe,GAALsX,GAAY0Y,EAAWtP,YAAce,EAAcf,YAAepJ,CAAC,GAGxG,IAFA,IAAII,EAAaH,EAAME,YAAY7D,UAAU0D,EAAI,GAAG/L,WAAY,EAAE,GAC9D+lB,EAAgB1e,EAASxH,cAAc,IAAMsM,EAAW/N,EAAE,EACrD6N,EAAIE,EAAWtF,MAAMpS,OAAe,GAALwX,GAAYwY,EAAWtP,YAAce,EAAcf,YAAelJ,CAAC,GAAI,CAC3G,IAAIlO,EAAOoO,EAAWtF,MAAMoF,EAAI,GAC5BsZ,EAAgBQ,EAAclmB,cAAc,IAAM9B,EAAKK,GAAKka,CAAsB,EACtF,IAAMva,EAAKiP,iBAAmBja,cAAYiE,MACrC+G,EAAKiP,kBAAoBja,cAAYma,WAAana,cAAYizB,YAAe,CAACve,oBAAkB8d,CAAa,EAAG,CACjH,IAAIU,EAAc,CAAA,EACdC,EAAa,CAAA,EACbC,EAAkB,CAAA,EAClBC,EAAsB,CAAA,EACtBC,EAAa,KAAA,EACjB,GAAIhf,EAASlH,UAAUC,SAAS,UAAU,GAAKiH,EAASlH,UAAUC,SAAS,cAAc,EAAG,CAExF,IADAimB,EAAahf,EAASY,iBAAiB,yBAAyB,GACjDxT,OACX,IAAK,IAAI6xB,EAAM,EAAGA,EAAMD,EAAW5xB,OAAQ6xB,CAAG,GAC1CD,EAAWhe,SAASie,EAAItmB,WAAY,EAAE,GAAGG,UAAU2C,OAAO,UAAU,EAGxEuE,EAASlH,UAAUC,SAAS,cAAc,GAC1C+lB,EAAkB,CAAA,EAClB9e,EAASlH,UAAU2C,OAAO,cAAc,EACxCuE,EAASlH,UAAU2C,OAAO,0BAA0B,EACL,CAAC,IAA5ChP,KAAKmoB,aAAasK,QAAQlf,EAASjJ,EAAE,GACrCtK,KAAKmoB,aAAa6H,OAAOhwB,KAAKmoB,aAAasK,QAAQlf,EAASjJ,EAAE,EAAG,CAAC,IAItE6nB,EAAc,CAAA,EACd5e,EAASlH,UAAU2C,OAAO,UAAU,GAEnCgjB,IACDhyB,KAAK0yB,4BAA4Bnf,EAAS8N,YAAa,CAAA,EAAO9L,CAAQ,EACtEvV,KAAK2yB,yBAAyBpf,EAAS8N,YAAa9L,EAAU,CAAA,CAAK,EACnEyc,EAAiB,CAAA,QAIjBP,EAAcplB,UAAUC,SAAS,UAAU,IAC3C8lB,EAAa,CAAA,EACbX,EAAcplB,UAAU2C,OAAO,UAAU,EACrCuE,EAASlH,UAAUC,SAAS,0BAA0B,IACtDgmB,EAAsB,CAAA,EACtB/e,EAASlH,UAAU2C,OAAO,0BAA0B,GAExDhP,KAAK0yB,4BAA4BjB,EAAcpQ,YAAa,CAAA,EAAO9L,CAAQ,EAC3EvV,KAAK2yB,yBAAyBlB,EAAcpQ,YAAa9L,EAAU,CAAA,CAAK,GAOhF,GAJAkc,EAAc7lB,aAAa,wBAA0BwW,EAAyB,YAAElW,UAAU,EACtFkmB,GACAX,EAAcplB,UAAUe,IAAI,UAAU,EAEtCmlB,GAAcA,EAAW5xB,OACzB,IAAK,IAAIiyB,EAAM,EAAGA,EAAML,EAAW5xB,OAAQiyB,CAAG,GAC1CL,EAAWhe,SAASqe,EAAI1mB,WAAY,EAAE,GAAGG,UAAUe,IAAI,UAAU,EAGrE+kB,GACA5e,EAASlH,UAAUe,IAAI,UAAU,EAEjCilB,IACA9e,EAASlH,UAAUe,IAAI,cAAc,EACrCmG,EAASlH,UAAUe,IAAI,0BAA0B,GAEjDklB,GACA/e,EAASlH,UAAUe,IAAI,0BAA0B,EAErDpN,KAAK6yB,oBAAoB5oB,EAAMsL,EAAU2C,EAAMmB,oBAAqBnB,EAAM5N,GAAI4N,EAAMiC,OAAQsX,EAAe5c,EAAgB,CAAA,CAAI,EAC3H5K,EAAKc,aAAe/L,iBAAegE,QAC/BkH,EAAUunB,EAAc1lB,cAAc,IAAM9B,EAAKK,EAAE,EACvDL,EAAK7I,cAAc,CAAE2J,WAAY/L,iBAAe+D,QAAU,CAAA,CAAI,EAC9D/C,KAAK2xB,YAAYznB,EAASD,CAAI,GAE7BA,EAAKgC,OAAS/M,iBAAe4zB,UAAc7oB,EAAKgC,OAAS/M,iBAAewX,aACxEzM,EAAKgC,OAAS/M,iBAAe6zB,aAAiB9oB,EAAKgC,OAAS/M,iBAAeiqB,SAC5EnpB,KAAKgzB,iBAAiB/oB,EAAMwnB,EAAevZ,EAAMmB,oBAAqB,CAAA,CAAI,GAKpFnB,EAAMmB,qBAAuB9F,EAASxH,cAAc,IAAMknB,EAAqB,GACjF1f,EAASlH,UAAUe,IAAI,0BAA0B,EAErD,IAAI8lB,EAAc3f,EAASY,iBAAiB,IAAM8e,EAAqB,EACnEC,GAAe,CAAChb,EAAMmB,qBACFrZ,KAAKmzB,qBAAqBD,CAAW,GAErD3f,EAASlH,UAAUe,IAAI,0BAA0B,EAGzDpN,KAAKwwB,yBAAyBtY,EAAMmB,oBAAqB9D,EAAU2C,EAAM5N,EAAE,IAGnFmd,EAAOvnB,UAAUizB,qBAAuB,SAAUD,GAE9C,IADA,IAAIE,EAAoB,CAAA,EACfpyB,EAAI,EAAGA,EAAIkyB,EAAYvyB,OAAQK,CAAC,GACrC,GAAI,CAAEkyB,EAAY3e,SAASvT,EAAEkL,WAAY,EAAE,GAAGG,UAAUC,SAAS,UAAW,EAAG,CAC3E8mB,EAAoB,CAAA,EACpB,MAGR,OAAOA,GAEX3L,EAAOvnB,UAAU8yB,iBAAmB,SAAU/oB,EAAMC,EAASmpB,EAAWC,GACpE,IAAInpB,EAAQnK,KACRoT,EAAWjH,eAAajC,EAAQ6B,cAAc,IAAM9B,EAAKK,EAAE,EAAIL,EAAKgC,OAAS/M,iBAAe4zB,UAAY7oB,EAAKgC,OAAS/M,iBAAeiqB,SAAWlf,EAAKgC,OAAS/M,iBAAe6zB,YAAelgB,iBAAiB6D,aAAW,EACxNkG,EAAgBxJ,EAASgC,SAIzBme,GAAUF,GAAaC,KAAYtzB,KAAK4K,UACxCgS,IACAA,EAAcxb,cAAc,CAAEijB,SAAU,CAAEJ,EAAGsP,EAAS,OAAS,QAASrP,EAAGoP,EAAS,MAAQ,WAAc,CAAA,CAAI,EAC1GA,EACAlgB,EAASnE,WAAa,SAAUvD,GACxB6nB,IACItpB,EAAKgC,OAAS/M,iBAAeiqB,SAAWhf,EAAM8lB,qBAC9C9lB,EAAM8lB,oBAAoBpN,eAAejG,EAAeA,EAAcxQ,OAAO,EAEjFwQ,EAAcxQ,QAAQgU,MAAM+N,YAAY,aAAc,QAAQ,EAC9DvR,EAAcxQ,QAAQgU,MAAM+N,YAAY,UAAW,OAAO,EAC1DvR,EAAcxb,cAAc,CAAEklB,QAAS,CAAC,EAAI1J,EAAcxQ,QAAQiV,YAAa,EAC/EzE,EAAcxQ,QAAQgU,MAAMoT,eAAe,SAAS,EACpD5W,EAAcxQ,QAAQgU,MAAMoT,eAAe,YAAY,GAEvDvpB,EAAKuM,oBAAoBvH,YACzBhF,EAAKuM,oBAAoBvH,WAAW1N,KAAK4I,EAAOuB,CAAC,EAEjDzB,EAAK2I,iBAAiB3D,YACtBhF,EAAK2I,iBAAiB3D,WAAW1N,KAAK4I,EAAOuB,CAAC,IAKtDkR,EAAcxb,cAAc,CAAEklB,QAAS,GAAK,CAAA,CAAI,EAChDlT,EAASnE,WAAa,QAIlCwY,EAAOvnB,UAAUoxB,wBAA0B,SAAUX,EAAYvO,EAAe7M,EAAUke,GACtE,KAAA,IAAZA,IAAsBA,EAAU,CAAA,GAIpC,IAHA,IAAI3B,EAAgB9xB,KAAK+xB,oBAAoB,CAAA,EAAOxc,CAAQ,EACxDme,EAAO,CAAA,EAEF1yB,EAAI,EAAKA,EAAI8wB,EAAcnxB,QAAW+yB,EAAO1yB,CAAC,GAAI,CACvD,IAAIkX,EAAQ4Z,EAAcvd,SAASvT,EAAEkL,WAAY,EAAE,GAC/CqN,EAAc,KAAA,EACdoa,EAAiB,KAAA,EACjBzb,EAAMmB,qBACFua,EAAiBjD,EAAW5kB,cAAc,IAAMmM,EAAM5N,GAAKgP,CAA2B,KAGtFqa,GADApa,EAAcuS,cAAY8H,EAAgB/gB,gBAAc,GAC3BvS,SAIjCiZ,EAAcvZ,KAAKuZ,YACnBoa,EAAiB3zB,KAAKuZ,YAAcvZ,KAAKuZ,YAAYjZ,OAAS,MAElE,IAAK,IAyEOuzB,EAzEH5b,EAAI,EAAKA,EAAIC,EAAME,YAAYzX,QAAW+yB,EAAOzb,CAAC,GAGvD,IAFA,IAAII,EAAaH,EAAME,YAAY7D,SAAS0D,EAAE/L,WAAY,EAAE,GAEnDiM,EAAI,EAAKA,EAAIE,EAAWtF,MAAMpS,QAAW+yB,GAAQ,CAACD,GAAY9C,EAAWtP,YAAce,EAAcf,YAAelJ,CAAC,GAAI,CAC9H,IAAIlO,EAAOoO,EAAWtF,MAAMwB,SAAS4D,EAAEjM,WAAY,EAAE,GACjDulB,EAAgB,KAAA,EAIpB,GAHIkC,IACAlC,EAAgBkC,EAAe5nB,cAAc,IAAM9B,EAAKK,GAAKka,CAAsB,IAEjFva,EAAKiP,iBAAmBja,cAAYiE,MACrC+G,EAAKiP,kBAAoBja,cAAYma,WAAana,cAAYizB,YAAe,CAACve,oBAAkB8d,CAAa,EAAG,CACjH,IAAIvf,EAAQqC,SAASkd,EAAcza,aAAa,uBAAuB,EAAG,EAAE,EACxE8c,EAAenD,EAAW5kB,cAAc,IAAMmM,EAAM5N,EAAE,EAI1D,IAHImnB,EAAcplB,UAAUC,SAAS,UAAU,GAAKwnB,EAAaznB,UAAUC,SAAS,UAAU,KAC1F4F,EAAQgR,KAAKC,IAAIjR,EAAQkQ,EAAcf,WAAW,GAElD,CAACoS,GAAY9C,EAAWtP,YAAcnP,EAAQ,CAC9CwhB,EAAO,CAAA,EACP,MAEJ,IAAIngB,EAAWod,EAAW5kB,cAAc,IAAMsM,EAAW/N,EAAE,EA+BvDypB,GA9BC9pB,EAAKgC,OAAS/M,iBAAe4zB,UAAc7oB,EAAKgC,OAAS/M,iBAAewX,aACxEzM,EAAKgC,OAAS/M,iBAAe6zB,aAAiB9oB,EAAKgC,OAAS/M,iBAAeiqB,SAC5EnpB,KAAKgzB,iBAAiB/oB,EAAMwnB,EAAevZ,EAAMmB,oBAAqB,CAAA,CAAK,EAE/E9F,EAAS2G,OAAOuX,CAAa,GACzBA,EAAcplB,UAAUC,SAAS,UAAU,GAAKwnB,EAAaznB,UAAUC,SAAS,UAAU,KAC1FmlB,EAAc7lB,aAAa,wBAAyBsG,EAAMhG,UAAU,EAChE8nB,EAAgB,CAAA,EAChBC,EAAkB,EAClBxC,EAAcplB,UAAUC,SAAS,UAAU,IAC3CmlB,EAAcplB,UAAU2C,OAAO,UAAU,EACrC8kB,EAAaznB,UAAUC,SAAS,cAAc,IAC9C0nB,EAAgB,CAAA,EAChBC,EAAkBj0B,KAAKk0B,qBAAqBzC,EAAeqC,CAAY,GAE3E5hB,EAAQuf,EAAcpQ,YAAc4S,EACpCxC,EAAcplB,UAAUe,IAAI,UAAU,GAE1CpN,KAAK0yB,4BAA4BxgB,EAAO,CAAA,EAAMqD,CAAQ,EACtDvV,KAAK2yB,yBAAyBzgB,EAAOqD,EAAU,CAAA,CAAI,EAC/Cye,KACAF,EAAaznB,UAAUe,IAAI,cAAc,EACzC0mB,EAAaznB,UAAUe,IAAI,0BAA0B,GAG7DpN,KAAKm0B,oBAAoBlqB,EAAMwnB,CAAa,EACxCxnB,EAAKynB,aAAe1yB,iBAAegE,QACnCiH,EAAK7I,cAAc,CAAE2J,WAAY/L,iBAAegE,OAAS,CAAA,CAAI,EAC7DhD,KAAK2xB,YAAYF,EAAc1lB,cAAc,IAAM9B,EAAKK,EAAE,EAAGL,CAAI,GAElD0mB,EAAW5kB,cAAc,IAAMmM,EAAM5N,EAAE,GACtDJ,EAAU6pB,EAAahoB,cAAc,IAAMknB,EAAqB,EAChEc,EAAa1nB,UAAUC,SAAS,0BAA0B,GAAiB,OAAZpC,IAC3DgpB,EAAca,EAAa5f,iBAAiB,IAAM8e,EAAqB,IAEvEG,CAAoBpzB,KAAKmzB,qBAAqBD,CAAW,GAErDa,EAAa1nB,UAAU2C,OAAO,0BAA0B,GAO5EuK,IACIrB,EAAMmB,qBACmC,IAArCsa,EAAeS,mBACuB,IAArCT,EAAeS,mBAA2Bp0B,KAAKq0B,gBAAgBV,EAAgBzb,EAAM5N,EAAE,IACxFtK,KAAKs0B,qBAAqB/a,CAAW,IAIrCsa,EAAmBF,EAAe5nB,cAAc,IAAMmM,EAAM5N,GAAKka,CAAsB,IAC5B,IAAvCqP,EAAiBO,mBACrCP,EAAiB7kB,UAEjBkhB,EAAiByD,EAAe5nB,cAAc,IAAM/L,KAAKkN,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GAAG5B,GAAKgmB,CAAqB,IACpE,IAArCJ,EAAekE,oBACjClE,EAAelhB,SACfhP,KAAKuZ,YAAYnN,QAAQC,UAAUe,IAAImjB,EAAkB,KAKzE,IAASvvB,EAAI,EAAGA,EAAI8wB,EAAcnxB,OAAQK,CAAC,GACvChB,KAAKwwB,yBAAyBsB,EAAcvd,SAASvT,EAAEkL,WAAY,EAAE,GAAGmN,oBAAqB9D,EAAUuc,EAAcvd,SAASvT,EAAEkL,WAAY,EAAE,GAAG5B,EAAE,EAEnJtK,KAAKuZ,aAEiC,IADpBvZ,KAAKuZ,YAAYjZ,OACnB8zB,oBACZp0B,KAAKs0B,qBAAqBt0B,KAAKuZ,WAAW,EAC1CvZ,KAAKuZ,YAAc,OAI/BkO,EAAOvnB,UAAUswB,yBAA2B,SAAU6C,EAAW9d,EAAUgf,GACvE,GAAIlB,EAAW,CACP9Z,EAAcrC,SAASnL,cAAc,IAAMwoB,EAAUjb,CAA2B,EACpF,GAAIC,EAAa,CAKb,IAJA,IAAIzN,EAAiBggB,cAAYvS,EAAa1G,gBAAc,EAExD3I,EADoB4B,EAAexL,OACP6T,iBAAiB,gBAAgB,EAC7DqgB,EAAW,CAAA,EACNxzB,EAAI,EAAGA,EAAIkJ,EAAQvJ,OAAQK,CAAC,GACjC,GAAI,CAAEkJ,EAAQqK,SAASvT,EAAEkL,WAAY,EAAE,GAAGG,UAAUC,SAAS,UAAW,EAAG,CACvEkoB,EAAW,CAAA,EACX,MAGR1oB,EAAeM,QAAQC,UAAUmoB,EAAW,MAAQ,UAAU,UAAU,QAI5E,GAAIx0B,KAAKuZ,YAAa,CAClB,IAAIya,EAAgB,CAAA,EAChBS,EAAe,KAAA,EAEfvE,EADclwB,KAAKuZ,YAAYjZ,OACFyL,cAAc,IAAM/L,KAAKkN,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GAAG5B,GAAKgmB,CAAqB,EAC5H,GAAIJ,EAAgB,CAChB,IAAK,IAAI/X,EAAI,EAAGA,EAAI+X,EAAe9R,SAASzd,OAAQwX,CAAC,GAAI,CAIrD,IAFA,IADAsc,EAAe,CAAA,EACXC,EAAcxE,EAAe9R,SAAS7J,SAAS4D,EAAEjM,WAAY,EAAE,GAC/DyoB,EAAoBD,EAAYvgB,iBAAiB,gBAAgB,EAC5DmJ,EAAI,EAAGA,EAAIqX,EAAkBh0B,OAAQ2c,CAAC,GAC3C,GAAI,CAAEqX,EAAkBpgB,SAAS+I,EAAEpR,WAAY,EAAE,GAAGG,UAAUC,SAAS,UAAW,EAAG,CACjFmoB,EAAe,CAAA,EACf,MAGRC,EAAYroB,UAAUooB,EAAe,MAAQ,UAAU,cAAc,EAC/DC,EAAYroB,UAAUC,SAAS,cAAe,GAAOooB,EAAYroB,UAAUC,SAAS,UAAW,IACjG0nB,EAAgB,CAAA,GAGxBh0B,KAAKuZ,YAAYnN,QAAQC,UAAU2nB,EAAgB,MAAQ,UAAUzD,EAAkB,KAKvG9I,EAAOvnB,UAAU2yB,oBAAsB,SAAU5oB,EAAMsL,EAAU8d,EAAWkB,EAASK,EAAa1qB,EAAS2K,EAAgBggB,GACvH,IAAI/oB,EAMIyN,EAsDQsa,EA1DZ7mB,EAAWyL,GAASzY,KAAKkN,KAAMqnB,CAAO,EAEtChhB,EADavT,KAAKgZ,OAAOjG,MAAMwB,SAASgB,EAASrJ,WAAY,EAAE,GAAGf,QAC5CY,cAAc,IAAMwoB,CAAO,EACjDlB,IACI9Z,EAAc1E,EAAe9I,cAAc,IAAMwoB,EAAUjb,CAA2B,GAOtFxN,EAAiBggB,cAAYvS,EAAa1G,gBAAc,IALxD/G,EAAiB9L,KAAK80B,kBAAkBP,EAAUjb,EAA6B+Z,CAAS,GACzEjnB,QAAQC,UAAUe,IAAI2nB,EAAgC,EACrElgB,EAAerK,YAAYsB,EAAeM,OAAO,GAKrDpM,KAAK6sB,UAAUtX,EAAU,KAAOvI,EAASyI,WAAa,GAAI3J,EAAeM,QAAQ9B,GAAI,UAAU,EAC/FqpB,EAAiB7nB,EAAexL,QAC5B00B,EAAoBlpB,EAAexL,QACLyL,cAAc,IAAMwoB,EAAUjb,EAA8BuE,CAAmB,GAEzG7Q,EAASkL,MAAM+c,iBACXC,EAAgBl1B,KAAKqK,cAAc,MAAO,CAC1CuF,UAAWulB,GACX7qB,GAAIiqB,EAAUjb,EAA8BuE,EAC5ChO,UAAW7C,EAASkL,MAAM+c,eAC7B,EACDD,EAAkB9a,OAAOgb,CAAa,GAG1C3hB,IACIA,EAASlH,UAAUC,SAAS,YAAY,GACxC0oB,EAAkB3oB,UAAUe,IAAI,YAAY,EAE5CmG,EAASlH,UAAUC,SAAS,UAAU,GACtC0oB,EAAkB3oB,UAAUe,IAAI,UAAU,EAE1CmG,EAASlH,UAAUC,SAAS,cAAc,IAC1C0oB,EAAkB3oB,UAAUe,IAAI,cAAc,EAGlDynB,EACAG,EAAkBllB,aAAa5F,EAAS8qB,EAAkBjpB,cAAc,IAAMknB,EAAqB,CAAC,EAGpG+B,EAAkB9a,OAAOhQ,CAAO,IAI/BlK,KAAKuZ,aAONvZ,KAAKuZ,YAAYnN,QAAQC,UAAU2C,OAAOuhB,EAAkB,GAExDL,GADA1c,EAAcxT,KAAKuZ,YAAYjZ,QACFyL,cAAc,IAC3C/L,KAAKkN,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GAAG5B,GAAKgmB,CAAqB,KAEnEuD,EAAmBrgB,EAAYzH,cAAc,IAAMwoB,EAAU/P,CAAsB,KAEnFqP,EAAmB7mB,EAASkL,MAAM+c,eAAiBj1B,KAAKo1B,qBAAqBb,EAASvnB,EAASkL,MAAM+c,cAAc,EAAIj1B,KAAKo1B,qBAAqBb,EAASK,CAAW,EACjKrhB,IACIA,EAASlH,UAAUC,SAAS,YAAY,GACxCunB,EAAiBxnB,UAAUe,IAAI,YAAY,EAE3CmG,EAASlH,UAAUC,SAAS,UAAU,GACtCunB,EAAiBxnB,UAAUe,IAAI,UAAU,EAEzCmG,EAASlH,UAAUC,SAAS,cAAc,IAC1CunB,EAAiBxnB,UAAUe,IAAI,cAAc,EAGrD8iB,EAAehW,OAAO2Z,CAAgB,GAEtCgB,EACAhB,EAAiB/jB,aAAa5F,EAAS2pB,EAAiB9nB,cAAc,IAAMknB,EAAqB,CAAC,EAGlGY,EAAiB3Z,OAAOhQ,CAAO,GAInClK,KAAKq1B,qBAAqBd,EAASK,EAAa1qB,EAASqL,CAAQ,IAnCrEvV,KAAKuZ,YAAcvZ,KAAK80B,kBAAkB90B,KAAKgZ,OAAO5M,QAAQ9B,GAAKgrB,GAA4BjC,CAAS,EACxGrzB,KAAKgZ,OAAO5M,QAAQ0D,aAAa9P,KAAKuZ,YAAYnN,QAASpM,KAAKu1B,cAAc,EAC9Ev1B,KAAKuZ,YAAYnN,QAAQC,UAAUe,IAAIooB,EAAkC,EACzEx1B,KAAKq1B,qBAAqBd,EAASK,EAAa1qB,EAASqL,CAAQ,GAmCrEzJ,EAAiB9L,KAAKuZ,YACtBoa,EAAiB3zB,KAAKuZ,YAAcvZ,KAAKuZ,YAAYjZ,OAAS,MAElD,OAAZ4J,GACAlK,KAAKy1B,kBAAkBxrB,EAAMC,EAAS4B,CAAc,EAEpD6nB,GACI1pB,EAAK0iB,QACL3sB,KAAK6sB,UAAUtX,EAAUtL,EAAK0iB,OAAQ1iB,EAAKK,GAAI,WAAW,GAItEmd,EAAOvnB,UAAUu1B,kBAAoB,SAAUxrB,EAAMC,EAAS4B,GAC1D,OAAQ7B,EAAKgC,MACT,IAAK,SACDjM,KAAK01B,mBAAmB7pB,kBAAkB5B,EAAMC,EAAS4B,CAAc,EACvE,MACJ,IAAK,WACD9L,KAAKmZ,qBAAqBtN,kBAAkB5B,EAAMC,EAAS4B,CAAc,EACzE,MACJ,IAAK,cACD9L,KAAK21B,wBAAwB9pB,kBAAkB5B,EAAMC,EAAS4B,CAAc,EAC5E,MACJ,IAAK,WACD9L,KAAK41B,qBAAqB/pB,kBAAkB5B,EAAMC,EAAS4B,CAAc,EACzE,MACJ,IAAK,cACD9L,KAAK61B,wBAAwBhqB,kBAAkB5B,EAAMC,EAAS4B,CAAc,EAC5E,MACJ,IAAK,WACD9L,KAAK81B,qBAAqBjqB,kBAAkB5B,EAAMC,EAAS4B,CAAc,EACzE,MACJ,IAAK,UACyB,eAAtB9L,KAAK2P,cACL3P,KAAKiwB,oBAAoBpkB,kBAAkB5B,EAAMC,CAAO,EAE5D,MACJ,IAAK,cACDlK,KAAK+1B,wBAAwBlqB,kBAAkB5B,EAAMC,EAAS4B,CAAc,IAIxF2b,EAAOvnB,UAAUm1B,qBAAuB,SAAUd,EAASK,EAAa1qB,EAASqL,GAC7E,IAAI2a,EAAiBlwB,KAAKqK,cAAc,MAAO,CAC3CC,GAAItK,KAAKkN,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GAAG5B,GAAKgmB,EACtD1gB,UAAWomB,GACd,EAGGhpB,GAFiBhN,KAAKuZ,YAAYjZ,OACvB4Z,OAAOgW,CAAc,EACrBzX,GAASzY,KAAKkN,KAAMqnB,CAAO,GACtCV,EAAmB7mB,EAASkL,MAAM+c,eAClCj1B,KAAKo1B,qBAAqBb,EAASvnB,EAASkL,MAAM+c,cAAc,EAAIj1B,KAAKo1B,qBAAqBb,EAASK,CAAW,EAMlHrhB,GALJsgB,EAAiB3Z,OAAOhQ,CAAO,EAC/BgmB,EAAehW,OAAO2Z,CAAgB,EAClCte,IAAavV,KAAK2kB,aAClBuL,EAAe7jB,UAAUe,IAAIgjB,EAA2B,EAE7ClZ,SAASnL,cAAc,IAAMwoB,CAAO,GAC/ChhB,IACIA,EAASlH,UAAUC,SAAS,YAAY,GACxCunB,EAAiBxnB,UAAUe,IAAI,YAAY,EAE3CmG,EAASlH,UAAUC,SAAS,UAAU,GACtCunB,EAAiBxnB,UAAUe,IAAI,UAAU,EAEzCmG,EAASlH,UAAUC,SAAS,cAAc,IAC1CunB,EAAiBxnB,UAAUe,IAAI,cAAc,GAIzDqa,EAAOvnB,UAAU4wB,oBAAsB,SAAUvb,EAAUob,EAAYvO,EAAe6T,GAIlF,IAHA,IAAIpF,EAAa,CAAA,EACbH,EAAU,CAAA,EACV1Y,EAAMhY,KAAKkN,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GAC3C+L,EAAKD,EAAIxC,OAAO7U,OAAS,EAAKkwB,GAAoB,GAAL5Y,EAAUA,CAAC,GAG7D4Y,EAAa,EADbH,EAAUuF,EAAUj2B,KAAKk2B,mBAAmB3gB,EAAUyC,EAAKC,EAAG0Y,EAAYvO,CAAa,EAAIpiB,KAAKm2B,mBAAmB5gB,EAAUyC,EAAKC,EAAG0Y,EAAYvO,CAAa,IACpIuO,EAAWtP,YAAce,EAAcf,YAErE,OAAOqP,GAEXjJ,EAAOvnB,UAAUk2B,2BAA6B,SAAUhe,GAEpD,IADA,IAAIuD,EAAQ,EACH3a,EAAI,EAAGA,EAAIoX,EAAYzX,OAAQK,CAAC,GAAI,CAEzC,IADA,IAAI+R,EAAQqF,EAAY7D,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAC3CsjB,EAAM,EAAGA,EAAMtjB,EAAMpS,OAAQ01B,CAAG,GACrC,GAAItjB,EAAMwB,SAAS8hB,EAAInqB,WAAY,EAAE,GAAGgN,eAAiBja,cAAYga,QAAS,CAC1E0C,CAAK,GACL,MAGR,GAAY,EAARA,EACA,MAAO,CAAA,EAGf,OAAiB,IAAVA,GAEX8L,EAAOvnB,UAAUo2B,uBAAyB,SAAUle,EAAakF,EAAGiZ,GAEhE,IADA,IAAIxjB,EAAQqF,EAAY7D,SAAS+I,EAAEpR,WAAY,EAAE,GAAG6G,MAC3CsjB,EAAM,EAAGA,EAAMtjB,EAAMpS,OAAQ01B,CAAG,GACrC,GAAItjB,EAAMwB,SAAS8hB,EAAInqB,WAAY,EAAE,GAAGgN,eAAiBja,cAAYga,QACjE,OAAOqE,EAIf,OADAA,EAAIiZ,EAAcjZ,EAAI,EAAIA,EAAI,EAC1BiZ,EACQjZ,IAAMlF,EAAYzX,OAAU2c,EAAItd,KAAKs2B,uBAAuBle,EAAakF,EAAGiZ,CAAW,EAGvFjZ,EAAI,EAAKA,EAAItd,KAAKs2B,uBAAuBle,EAAakF,EAAGiZ,CAAW,GAGpF9O,EAAOvnB,UAAUs2B,iBAAmB,SAAUzjB,EAAOuK,EAAGiZ,GAEpD,OADWxjB,EAAMwB,SAAS+I,EAAEpR,WAAY,EAAE,GACjCgN,eAAiBja,cAAYga,QAC3BqE,GAEXA,EAAIiZ,EAAcjZ,EAAI,EAAIA,EAAI,EAC1BiZ,EACQjZ,IAAMvK,EAAMpS,OAAU2c,EAAItd,KAAKw2B,iBAAiBzjB,EAAOuK,EAAGiZ,CAAW,EAGrEjZ,EAAI,EAAKA,EAAItd,KAAKw2B,iBAAiBzjB,EAAOuK,EAAGiZ,CAAW,IAGxE9O,EAAOvnB,UAAUg2B,mBAAqB,SAAU3gB,EAAUyC,EAAKvC,EAAYkb,EAAYvO,EAAeqU,GAClG,IAAItsB,EAAQnK,KAERkY,GADe,KAAA,IAAfue,IAAyBA,EAAa,CAAA,GAC9Bze,EAAIxC,OAAOjB,SAASkB,EAAWvJ,WAAY,EAAE,IACzD,GAAIgM,CAAAA,EAAMwe,aAAgBD,EAA1B,CAGA,IAAIE,EAAsB,SAAUte,GAChC,OAAoC,IAA5BA,EAAWtF,MAAMpS,QAAiBi2B,EAAcve,EAAWtF,MAAM,EAAE,GAE3E6jB,EAAgB,SAAU3sB,GAC1B,OAAQA,EAAKynB,aAAe1yB,iBAAe+D,QAAYkH,EAAKc,aAAe/L,iBAAeiE,OAE1F4zB,EAAkB,SAAUvsB,EAAIwsB,EAAWC,EAAOC,GAC9CC,EAAY9sB,EAAME,cAAc,MAAO,CACvCuF,UAAW,mBAAsCsnB,GACjD5sB,GAAIA,EAAK,oBAAsBysB,EAC/BrX,MAAO,CAAEyX,aAAcJ,EAAM7qB,WAAYkrB,WAAYJ,EAAI9qB,YAC5D,EAKD,OAJA4qB,EAAU/nB,cAAce,aAAamnB,EAAWH,CAAS,EACpDL,GACDQ,EAAUrrB,aAAa,mBAAoBwW,EAAcf,YAAYnV,UAAU,EAE5E+qB,GAEPI,EAAmB,SAAUN,EAAOC,GAMpC,IALA,IAAI3e,EAAalO,EAAM+C,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GACvDsJ,OAAOjB,SAASkB,EAAWvJ,WAAY,EAAE,GAAGkM,YAAY,GACzD0e,EAAY1U,EAAcrW,cAAc,IAAMsM,EAAWtF,MAAMwB,SAASwiB,EAAM7qB,WAAY,EAAE,GAAG5B,GAAKka,CAAsB,EAC1HyS,EAAYR,EAAarU,EAAcrW,cAAc,IAAMsM,EAAW/N,GAAK,oBAAsBysB,CAAK,EACtGF,EAAgBxe,EAAW/N,GAAIwsB,EAAWC,EAAOC,CAAG,EAC/Ch2B,EAAI+1B,EAAO/1B,GAAKg2B,EAAKh2B,CAAC,GAAI,CAC/B,IAIIkhB,EAJAjY,EAAOoO,EAAWtF,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAC/CjC,EAAKiP,eAAiBja,cAAYga,UAGpCiJ,EAAME,EAAcrW,cAAc,IAAM9B,EAAKK,GAAKka,CAAsB,EAC5EyS,EAAUzsB,YAAY0X,CAAG,EACzBjY,EAAK7I,cAAc,CAAE2J,WAAY/L,iBAAe+D,QAAU,CAAA,CAAI,EAC1DkH,EAAKgC,OAAS/M,iBAAe6zB,aAAsC,YAAvB5oB,EAAMwF,aAClDxF,EAAMwnB,YAAYzP,EAAInW,cAAc,IAAM9B,EAAKK,GAAKsR,CAAgC,EAAG3R,CAAI,EAG3FE,EAAMwnB,YAAYzP,EAAInW,cAAc,IAAM9B,EAAKK,EAAE,EAAGL,CAAI,KAIhEqtB,EAAyB,SAAUP,EAAOC,GAM1C,IALA,IAAI9e,EAAQ/N,EAAM+C,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GAClDsJ,OAAOjB,SAASkB,EAAWvJ,WAAY,EAAE,GAC1C4qB,EAAY1U,EAAcrW,cAAc,IAAMmM,EAAME,YAAY7D,SAASwiB,EAAM7qB,WAAY,EAAE,GAAG5B,EAAE,EAClG2sB,EAAYR,EAAarU,EAAcrW,cAAc,IAAMmM,EAAM5N,GAAK,oBAAsBysB,CAAK,EACjGF,EAAgB3e,EAAM5N,GAAIwsB,EAAWC,EAAOC,CAAG,EAC1Ch2B,EAAI+1B,EAAO/1B,GAAKg2B,EAAKh2B,CAAC,GAAI,CAC/B,IAAIqX,EAAaH,EAAME,YAAY7D,SAASvT,EAAEkL,WAAY,EAAE,GACxDgW,EAAME,EAAcrW,cAAc,IAAMsM,EAAW/N,EAAE,EACzD2sB,EAAUzsB,YAAY0X,CAAG,EACzB7J,EAAWtF,MAAM,GAAG3R,cAAc,CAAE2J,WAAY/L,iBAAe+D,QAAU,CAAA,CAAI,EACzEsV,EAAWtF,MAAM,GAAG9G,OAAS/M,iBAAe6zB,aAAsC,YAAvB5oB,EAAMwF,aACjExF,EAAMwnB,YAAYzP,EAAInW,cAAc,IAAMsM,EAAWtF,MAAM,GAAGzI,GAAKsR,CAAgC,EAAGvD,EAAWtF,MAAM,EAAE,EAGzH5I,EAAMwnB,YAAYzP,EAAInW,cAAc,IAAMsM,EAAWtF,MAAM,GAAGzI,EAAE,EAAG+N,EAAWtF,MAAM,EAAE,IAKlG,GADkBmF,EAAMqf,cACJx4B,kBAAgBy4B,OAChC,IAAK,IAAIrf,EAAKD,EAAME,YAAYzX,OAAS,EAAQ,EAAJwX,EAAOA,CAAC,GAAI,CAGrD,IAAIG,GADJH,EAAInY,KAAKs2B,uBAAuBpe,EAAME,YAAaD,EAAG,CAAA,CAAK,GAC/C,EAEZ,GAAU,GAALG,GAAWqe,EAAoBze,EAAME,YAAY7D,SAAS4D,EAAEjM,WAAY,EAAE,EAAE,EAG7E,GAAU,IAFVoM,EAAItY,KAAKs2B,uBAAuBpe,EAAME,YAAaE,EAAG,CAAA,CAAK,IAE3Cqe,EAAoBze,EAAME,YAAY7D,SAAS+D,EAAEpM,WAAY,EAAE,EAAE,GAa7E,GAPU,IAHNurB,EADK,IAALA,EADInf,EAAI,GAEJtY,KAAKs2B,uBAAuBpe,EAAME,YAAaqf,EAAG,CAAA,CAAK,EAG1DA,IAAWd,EAAoBze,EAAME,YAAY7D,SAASkjB,EAAEvrB,WAAY,EAAE,EAAE,EAC7EorB,EAAuBG,EAAGtf,CAAC,EAG3Bmf,EAAuBhf,EAAGH,CAAC,EAE/BA,EAAIsf,EACA,CAAChB,GAAe9F,EAAWtP,YAAce,EAAcf,YACvD,MAAO,CAAA,OAIXlJ,EAAIG,OAMhB,GAAItY,KAAKo2B,2BAA2Ble,EAAME,WAAW,EAEjD,IADA,IAAIC,EAAaH,EAAME,YAAY,GAC1BD,EAAKE,EAAWtF,MAAMpS,OAAS,EAAQ,EAAJwX,EAAOA,CAAC,GAAI,CAGpD,IAMYsf,EANRnf,GADJH,EAAInY,KAAKw2B,iBAAiBne,EAAWtF,MAAOoF,EAAG,CAAA,CAAK,GACxC,EAEZ,GAAU,GAALG,GAAWse,EAAcve,EAAWtF,MAAMwB,SAAS4D,EAAEjM,WAAY,EAAE,EAAE,EAGtE,GAAU,IAFVoM,EAAItY,KAAKw2B,iBAAiBne,EAAWtF,MAAOuF,EAAG,CAAA,CAAK,IAEpCse,EAAcve,EAAWtF,MAAMwB,SAAS+D,EAAEpM,WAAY,EAAE,EAAE,GAatE,GAPU,IAFNurB,EADK,IAALA,EAFInf,EAAI,GAGJtY,KAAKw2B,iBAAiBne,EAAWtF,MAAO0kB,EAAG,CAAA,CAAK,EAEnDA,IAAWb,EAAcve,EAAWtF,MAAMwB,SAASkjB,EAAEvrB,WAAY,EAAE,EAAE,EACtEmrB,EAAiBI,EAAGtf,CAAC,EAGrBkf,EAAiB/e,EAAGH,CAAC,EAEzBA,EAAIsf,EACA,CAAChB,GAAe9F,EAAWtP,YAAce,EAAcf,YACvD,MAAO,CAAA,OAIXlJ,EAAIG,GAMxB,MAAO,CAAA,GAEXmP,EAAOvnB,UAAUi2B,mBAAqB,SAAU5gB,EAAUyC,EAAKvC,EAAYkb,EAAYvO,EAAeqU,GAClG,IAAItsB,EAAQnK,KAERkY,GADe,KAAA,IAAfue,IAAyBA,EAAa,CAAA,GAC9Bze,EAAIxC,OAAOjB,SAASkB,EAAWvJ,WAAY,EAAE,IACzD,GAAIgM,CAAAA,EAAMwe,aAAgBD,EAA1B,CAGA,IAAIc,EAAcrf,EAAMqf,YAEpBG,EADMtV,EAAcrW,cAAc,IAAMmM,EAAM5N,EAAE,EAC5B6J,iBAAiB,kBAAuB,EAC5DyiB,EAAgB,SAAU3sB,GAC1B,OAAQA,EAAKynB,aAAe1yB,iBAAegE,OAAWiH,EAAKc,aAAe/L,iBAAe+D,QAEzF40B,EAAqB,SAAUpf,EAAiBwe,EAAOC,EAAKY,GAC7C,KAAA,IAAXA,IAAqBA,EAAS,MAGrB,SAATC,EAAmB72B,GACnB,IAEQ82B,GADJ7tB,EADOoO,EAAWtF,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,IAC5CgN,eAAiBja,cAAYga,UAC9B6e,EAAQ1V,EAAcrW,cAAc,IAAM9B,EAAKK,EAAE,EACrDL,EAAK7I,cAAc,CAAE2J,WAAY/L,iBAAegE,OAAS,CAAA,CAAI,EACzDiH,EAAKgC,OAAS/M,iBAAe6zB,cAC7B+E,EAAQ1V,EAAcrW,cAAc,IAAM9B,EAAKK,GAAK,SAAS,GAEjEH,EAAMwnB,YAAYmG,EAAO7tB,CAAI,GAVrC,IAAIoO,EAAalO,EAAM+C,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GACvDsJ,OAAOjB,SAASkB,EAAWvJ,WAAY,EAAE,GAAGkM,YAAY7D,SAASgE,EAAgBrM,WAAY,EAAE,GAYpG2rB,EAAOd,CAAK,EACRa,GACAC,EAAOD,CAAM,EAEjBC,EAAOb,CAAG,GAEVe,EAA2B,SAAUrmB,EAAOqlB,EAAOC,EAAKY,GACzC,KAAA,IAAXA,IAAqBA,EAAS,MAMrB,SAATC,EAAmB72B,GACnB,IAEQg3B,GADJ3f,EADaH,EAAME,YAAY7D,SAASvT,EAAEkL,WAAY,EAAE,IAC7C6G,MAAM,GAAGmG,eAAiBja,cAAYga,UAC7C+e,EAAQ5V,EAAcrW,cAAc,IAAMsM,EAAWtF,MAAM,GAAGzI,EAAE,EACpE+N,EAAWtF,MAAM,GAAG3R,cAAc,CAAE2J,WAAY/L,iBAAegE,OAAS,CAAA,CAAI,EACxEqV,EAAWtF,MAAM,GAAG9G,OAAS/M,iBAAe6zB,cAC5CiF,EAAQ5V,EAAcrW,cAAc,IAAMsM,EAAWtF,MAAM,GAAGzI,GAAKsR,CAAgC,GAEvGzR,EAAMwnB,YAAYqG,EAAO3f,EAAWtF,MAAM,EAAE,GAbpD,IAAImF,EAAQ/N,EAAM+C,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GAClDsJ,OAAOjB,SAASkB,EAAWvJ,WAAY,EAAE,GACzCuqB,GACDiB,EAAcnjB,SAAS7C,EAAMxF,WAAY,EAAE,GAAGN,aAAa,oBAAqBwW,EAAcf,YAAYnV,UAAU,EAaxH2rB,EAAOd,CAAK,EACRa,GACAC,EAAOD,CAAM,EAEjBC,EAAOb,CAAG,GAEViB,EAAW,SAAU3tB,GAChBmsB,GACWrU,EAAcrW,cAAc,IAAMzB,CAAE,EAC1CsB,aAAa,oBAAqBwW,EAAcf,YAAYnV,UAAU,GAGpF,GAAIqrB,IAAgBx4B,kBAAgBy4B,OAAQ,CACxC,GAA2B,EAAvBE,EAAc/2B,OACd,IAAK,IAAIwX,EAAKuf,EAAc/2B,OAAS,EAAS,GAALwX,EAAQA,CAAC,GAAI,CAClD,IAAI4e,EAAQxiB,SAASmjB,EAAcnjB,SAAS4D,EAAEjM,WAAY,EAAE,GAAG8K,aAAa,YAAY,EAAG,EAAE,EACzFggB,EAAMziB,SAASmjB,EAAcnjB,SAAS4D,EAAEjM,WAAY,EAAE,GAAG8K,aAAa,UAAU,EAAG,EAAE,EAErFsB,EAAItY,KAAKs2B,uBAAuBpe,EAAME,YAAa2e,EAAQ,EAAG,CAAA,CAAK,EACvE,GAAIH,EAAc1e,EAAME,YAAY7D,SAASwiB,EAAM7qB,WAAY,EAAE,GAAG6G,MAAM,EAAE,GACrE6jB,EAAc1e,EAAME,YAAY7D,SAAS+D,EAAEpM,WAAY,EAAE,GAAG6G,MAAM,EAAE,IACnEikB,IAAQ1e,EACRyf,EAAyB5f,EAAG4e,EAAOC,CAAG,EAEjCJ,EAAc1e,EAAME,YAAY7D,SAASyiB,EAAI9qB,WAAY,EAAE,GAAG6G,MAAM,EAAE,GAC3EglB,EAAyB5f,EAAG4e,EAAOC,EAAK1e,CAAC,EAEzC,CAACme,IAAe9F,EAAWtP,YAAce,EAAcf,YACvD,MAAO,CAAA,EAKvB,IAASlJ,EAAKD,EAAME,YAAYzX,OAAS,EAAS,GAALwX,EAAQA,CAAC,GAAI,CAGtD,IAFA,IAAIE,EAAaH,EAAME,YAAY7D,SAAS4D,EAAEjM,WAAY,EAAE,GACxDgsB,EAAe,GACVl3B,EAAI,EAAGA,EAAIqX,EAAWtF,MAAMpS,OAAQK,CAAC,GACtCqX,EAAWtF,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGgN,eAAiBja,cAAYga,SAC1Eif,EAAa7hB,KAAKrV,CAAC,EAI3B,GAA2B,EAAtBk3B,EAAav3B,QACVi2B,EAAcve,EAAWtF,MAAMmlB,EAAa,GAAG,GAAKtB,EAAcve,EAAWtF,MAAMmlB,EAAa,GAAG,IACvE,IAAxBA,EAAav3B,QACbs3B,EAAS5f,EAAW/N,EAAE,EACtBqtB,EAAmBxf,EAAG+f,EAAa,GAAIA,EAAa,EAAE,GAEjDtB,EAAcve,EAAWtF,MAAMmlB,EAAa,GAAG,IACpDD,EAAS5f,EAAW/N,EAAE,EACtBqtB,EAAmBxf,EAAG+f,EAAa,GAAIA,EAAa,GAAIA,EAAa,EAAE,GAEvE,CAACzB,IAAe9F,EAAWtP,YAAce,EAAcf,YACvD,MAAO,CAAA,QAOvB,GAAIrhB,KAAKo2B,2BAA2Ble,EAAME,WAAW,GACjD,GAA2B,EAAvBsf,EAAc/2B,OACd,IAASwX,EAAKuf,EAAc/2B,OAAS,EAAS,GAALwX,EAAQA,CAAC,GAAI,CAClD,IAAIggB,EAAeT,EAAcnjB,SAAS4D,EAAEjM,WAAY,EAAE,GACtD6qB,EAAQxiB,SAAS4jB,EAAanhB,aAAa,YAAY,EAAG,EAAE,EAC5DggB,EAAMziB,SAAS4jB,EAAanhB,aAAa,UAAU,EAAG,EAAE,EAExDqB,EAAaH,EAAME,YAAY,GAC/BE,EAAItY,KAAKw2B,iBAAiBne,EAAWtF,MAAOgkB,EAAQ,EAAG,CAAA,CAAK,EAChE,GAAIH,EAAc1e,EAAME,YAAY,GAAGrF,MAAMwB,SAASwiB,EAAM7qB,WAAY,EAAE,EAAE,GACrE0qB,EAAc1e,EAAME,YAAY,GAAGrF,MAAMwB,SAAS+D,EAAEpM,WAAY,EAAE,EAAE,IACnE8qB,IAAQ1e,GACR2f,EAASE,EAAa7tB,EAAE,EACxBqtB,EAAmB,EAAGZ,EAAOC,CAAG,GAE3BJ,EAAc1e,EAAME,YAAY,GAAGrF,MAAMwB,SAASyiB,EAAI9qB,WAAY,EAAE,EAAE,IAC3E+rB,EAASE,EAAa7tB,EAAE,EACxBqtB,EAAmB,EAAGZ,EAAOC,EAAK1e,CAAC,GAEnC,CAACme,IAAe9F,EAAWtP,YAAce,EAAcf,YACvD,MAAO,CAAA,QAOvB,IAASlJ,EAAKD,EAAME,YAAYzX,OAAS,EAAS,GAALwX,EAAQA,CAAC,GAElD,IAASG,GAAKD,EADGH,EAAME,YAAY7D,SAAS4D,EAAEjM,WAAY,EAAE,IACnC6G,MAAMpS,OAAS,EAAS,GAAL2X,EAAQA,CAAC,GAEjD,GAAIA,GADJA,EAAItY,KAAKw2B,iBAAiBne,EAAWtF,MAAOuF,EAAG,CAAA,CAAK,GAC5C,GAAR,CAGA,IAAIrO,EAAOoO,EAAWtF,MAAMwB,SAAS+D,EAAEpM,WAAY,EAAE,GACrD,GAAI0qB,EAAc3sB,CAAI,IACdA,EAAKgC,OAAS/M,iBAAe6zB,YAC7BkF,EAAShuB,EAAKK,EAAE,EAGhB2tB,EAAShuB,EAAKK,GAAKsR,CAAgC,EAEvD+b,EAAmBxf,EAAGG,EAAGA,CAAC,EACtB,CAACme,IAAe9F,EAAWtP,YAAce,EAAcf,YACvD,MAAO,CAAA,GAO/B,MAAO,CAAA,GAEXoG,EAAOvnB,UAAUmxB,oBAAsB,SAAU9b,EAAUob,EAAYvO,EAAegW,GAGlF,IAFA,IAAI1H,EAAU,CAAA,EACV1Y,EAAMhY,KAAKkN,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GAC3C+L,EAAI,EAAI,CAACyY,GAAYzY,EAAID,EAAIxC,OAAO7U,OAAUsX,CAAC,GACpDyY,EAAU0H,EAAUp4B,KAAKq4B,mBAAmB9iB,EAAUyC,EAAKC,EAAG0Y,EAAYvO,EAAe,CAAA,EAAO,CAAA,CAAI,EAChGpiB,KAAKs4B,mBAAmB/iB,EAAUyC,EAAKC,EAAG0Y,EAAYvO,EAAe,CAAA,EAAO,CAAA,CAAI,EAExF,OAAOsO,GAGXjJ,EAAOvnB,UAAUm4B,mBAAqB,SAAU9iB,EAAUyC,EAAKvC,EAAYkb,EAAYvO,EAAeqU,EAAY8B,GASrF,SAArBC,EAA+BjgB,EAAiB7G,EAAO+mB,IAGnDxuB,EAFaE,EAAM+C,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GACvDsJ,OAAOjB,SAASkB,EAAWvJ,WAAY,EAAE,GAAGkM,YAAY7D,SAASgE,EAAgBrM,WAAY,EAAE,GAC9E6G,MAAMwB,SAAS7C,EAAMxF,WAAY,EAAE,IAChDgN,eAAiBja,cAAYga,UAC9Byf,EAAQD,EAAUnuB,KAAOL,EAAKK,GAAKmuB,EAAYA,EAAU1sB,cAAc,IAAM9B,EAAKK,EAAE,EACxFL,EAAK7I,cAAc,CAAE2J,WAAY/L,iBAAe+D,QAAU,CAAA,CAAI,EAC1DkH,EAAKgC,OAAS/M,iBAAe6zB,cAC7B2F,EAAQxhB,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,CAAgC,GAEnFzR,EAAMwnB,YAAY+G,EAAOzuB,CAAI,GAGL,SAA5B0uB,EAAsC33B,GACtC,IAIQ43B,EAJJxgB,EAAcjO,EAAM+C,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GACxDsJ,OAAOjB,SAASkB,EAAWvJ,WAAY,EAAE,GAAGkM,YAC7CnO,EAAOmO,EAAY7D,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAM,GACrD9I,EAAKiP,eAAiBja,cAAYga,UAC9B2f,EAAQxW,EAAcrW,cAAc,IAAMqM,EAAY7D,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAM,GAAGzI,EAAE,EACjG8N,EAAY7D,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAM,GAAG3R,cAAc,CAAE2J,WAAY/L,iBAAe+D,QAAU,CAAA,CAAI,EACtGkH,EAAKgC,OAAS/M,iBAAe6zB,cAC7B6F,EAAQxW,EAAcrW,cAAc,IAAMqM,EAAY7D,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAM,GAAGzI,GAAKsR,CAAgC,GAEpIzR,EAAMwnB,YAAYiH,EAAOxgB,EAAY7D,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAAM,EAAE,GA/BjF,IAK8B9I,EAL1BE,EAAQnK,KACRkY,EAAQF,EAAIxC,OAAOjB,SAASkB,EAAWvJ,WAAY,EAAE,GACrDqrB,EAAcrf,EAAMqf,YAEpBG,EADMtV,EAAcrW,cAAc,IAAMmM,EAAM5N,EAAE,EAC5B6J,iBAAiB,kBAAuB,EA8BhE,GAAIojB,IAAgBx4B,kBAAgB85B,KAEhC,GAAI,CAAC74B,KAAKo2B,2BAA2Ble,EAAME,WAAW,EAClD,IAAK,IAAID,EAAI,EAAGA,EAAID,EAAME,YAAYzX,OAAQwX,CAAC,GAE3C,IADA,IAAIE,EAAaH,EAAME,YAAY7D,SAAS4D,EAAEjM,WAAY,EAAE,GACnDoM,EAAI,EAAGA,EAAID,EAAWtF,MAAMpS,OAAQ2X,CAAC,GAE1C,IADAA,EAAItY,KAAKw2B,iBAAiBne,EAAWtF,MAAOuF,EAAG,CAAA,CAAI,KACzCD,EAAWtF,MAAMpS,OAA3B,CAGA,IAAIsJ,EAAOoO,EAAWtF,MAAMwB,SAAS+D,EAAEpM,WAAY,EAAE,GACrD,IAxCcjC,EAwCIA,GAvCjBynB,aAAe1yB,iBAAe+D,QAAYkH,EAAKc,aAAe/L,iBAAegE,MAuCrD,CACrB,IAAIkH,EAAUkY,EAAcrW,cAAc,IAAM9B,EAAKK,EAAE,EAMvD,IAAItI,GADQ4vB,GAHR1nB,EADc,gBAAdD,EAAKgC,KACKmW,EAAcrW,cAAc,IAAM9B,EAAKK,GAAKsR,CAAgC,EAE1E1R,GAAQ8M,aAAa,mBAAmB,GAChCzC,SAASqd,EAAW,EAAE,EAAI,QACpC6E,GAAe9F,EAAWtP,YAAcrf,GAClDw2B,EAAmBrgB,EAAGG,EAAGpO,CAAO,EAC3BusB,GAAc8B,CAAAA,GACfruB,EAAQ2nB,gBAAgB,mBAAmB,OAG9C,GAAI7vB,EACL,MAAO,CAAA,SAQ3B,IAASmW,EAAI,EAAGA,EAAID,EAAME,YAAYzX,OAAQwX,CAAC,GAE3C,GAAkE,EAA7DD,EAAME,YAAY7D,SAAS4D,EAAEjM,WAAY,EAAE,GAAG6G,MAAMpS,OAAa,CAMlE,IALA,IAAI0X,EAAaH,EAAME,YAAY7D,SAAS4D,EAAEjM,WAAY,EAAE,GAGxDlK,GAAQ4vB,GADI1nB,EADFkY,EAAcrW,cAAc,IAAMsM,EAAW/N,EAAE,GACrC0M,aAAa,mBAAmB,GAChCzC,SAASqd,EAAW,EAAE,EAAI,KAC9CsG,EAAe,GACVl3B,EAAI,EAAGA,EAAIqX,EAAWtF,MAAMpS,OAAQK,CAAC,GACtCqX,EAAWtF,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGgN,eAAiBja,cAAYga,SAC1Eif,EAAa7hB,KAAKrV,CAAC,EAG3B,GAA2B,EAAtBk3B,EAAav3B,QAAeqB,IAAUy0B,GAAe9F,EAAWtP,YAAcrf,GAC/Ew2B,EAAmBrgB,EAAG+f,EAAa,GAAIhuB,CAAO,EAC9CsuB,EAAmBrgB,EAAG+f,EAAa,GAAIhuB,CAAO,EAClB,IAAxBguB,EAAav3B,QACb63B,EAAmBrgB,EAAG+f,EAAa,GAAIhuB,CAAO,EAE7CusB,GAAc8B,CAAAA,GACfruB,EAAQ2nB,gBAAgB,mBAAmB,OAG9C,GAAI7vB,EACL,MAAO,CAAA,EAKvB,GAA2B,EAAvB01B,EAAc/2B,OACd,IAASwX,EAAI,EAAGA,EAAIuf,EAAc/2B,OAAQwX,CAAC,GAAI,CAC3C,IACIyZ,EADAuG,EAAeT,EAAcnjB,SAAS4D,EAAEjM,WAAY,EAAE,GAG1D,IAAIlK,GADQ4vB,EADIuG,EAAanhB,aAAa,mBAAmB,GACrCzC,SAASqd,EAAW,EAAE,EAAI,QACpC6E,GAAe9F,EAAWtP,YAAcrf,GAAS,CAC3D,IAaQy1B,EAbJV,EAAQxiB,SAAS4jB,EAAanhB,aAAa,YAAY,EAAG,EAAE,EAC5DggB,EAAMziB,SAAS4jB,EAAanhB,aAAa,UAAU,EAAG,EAAE,EACxDugB,IAAgBx4B,kBAAgB85B,KAC5BxgB,EAAaH,EAAME,YAAY,GAC/BE,EAAItY,KAAKw2B,iBAAiBne,EAAWtF,MAAOgkB,EAAQ,EAAG,CAAA,CAAI,EAC/DyB,EAAmB,EAAGzB,EAAOoB,CAAY,EACzCK,EAAmB,EAAGlgB,EAAG6f,CAAY,EAEjC7f,IAAM0e,GACNwB,EAAmB,EAAGxB,EAAKmB,CAAY,IAIvCV,EAAIz3B,KAAKs2B,uBAAuBpe,EAAME,YAAa2e,EAAQ,EAAG,CAAA,CAAI,EACtE4B,EAA0B5B,CAAK,EAC/B4B,EAA0BlB,CAAC,EACvBA,IAAMT,GACN2B,EAA0B3B,CAAG,GAGhCP,GAAc8B,CAAAA,GACfJ,EAAatG,gBAAgB,mBAAmB,OAGnD,GAAI7vB,EACL,MAAO,CAAA,EAInB,MAAO,CAAA,GAEXylB,EAAOvnB,UAAUo4B,mBAAqB,SAAU/iB,EAAUyC,EAAKvC,EAAYkb,EAAYvO,EAAeqU,EAAY8B,GAC9G,IAAIpuB,EAAQnK,KACRkY,EAAQF,EAAIxC,OAAOjB,SAASkB,EAAWvJ,WAAY,EAAE,GACrDqrB,EAAcrf,EAAMqf,YAEpBG,EADMtV,EAAcrW,cAAc,IAAMmM,EAAM5N,EAAE,EAC5B6J,iBAAiB,kBAAuB,EAChE,GAA6B,IAAzBujB,EAAc/2B,OAqDlB,IAlDA,IAAIm4B,EAAqB,SAAU/B,EAAOC,EAAKyB,EAAWb,GAGzC,SAATC,EAAmB72B,GACnB,IAEQ+3B,EACAC,GAFJ/uB,EADO8I,EAAMwB,SAASvT,EAAEkL,WAAY,EAAE,IACjCgN,eAAiBja,cAAYga,UAE9B+f,GADAD,EAAYN,EAAU1sB,cAAc,IAAM9B,EAAKK,GAAKka,CAAsB,GACxDzY,cAAc,IAAM9B,EAAKK,EAAE,EACjDL,EAAK7I,cAAc,CAAE2J,WAAY/L,iBAAeiE,OAAS,CAAA,CAAI,EACzDgH,EAAKgC,OAAS/M,iBAAe6zB,cAC7BiG,EAAQD,EAAUhtB,cAAc,IAAM9B,EAAKK,GAAKsR,CAAgC,GAEpFzR,EAAMwnB,YAAYqH,EAAO/uB,CAAI,EAC7BwuB,EAAUQ,sBAAsB,cAAeF,CAAS,GAZhE,IAAIhmB,EAAQ5I,EAAM+C,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GACnDsJ,OAAOjB,SAASkB,EAAWvJ,WAAY,EAAE,GAAGkM,YAAY,GAAGrF,MAc/D8kB,EAAOd,CAAK,EACRa,GACAC,EAAOD,CAAM,EAEjBC,EAAOb,CAAG,EACLP,GAAc8B,CAAAA,GACfvpB,SAAOypB,CAAS,GAGpBS,EAA2B,SAAUnC,EAAOC,EAAKyB,EAAWb,GAG/C,SAATC,EAAmB72B,GACnB,IAEQixB,EACAkH,GAFJ9gB,EADaD,EAAY7D,SAASvT,EAAEkL,WAAY,EAAE,IACvC6G,MAAM,GAAGmG,eAAiBja,cAAYga,UAE7CkgB,GADAlH,EAAgBwG,EAAU1sB,cAAc,IAAMsM,EAAW/N,EAAE,GACrCyB,cAAc,IAAMsM,EAAWtF,MAAM,GAAGzI,EAAE,EACpE+N,EAAWtF,MAAM,GAAG3R,cAAc,CAAE2J,WAAY/L,iBAAeiE,OAAS,CAAA,CAAI,EACxEoV,EAAWtF,MAAM,GAAG9G,OAAS/M,iBAAe6zB,cAC5CoG,EAAQlH,EAAclmB,cAAc,IAAMsM,EAAWtF,MAAM,GAAGzI,GAAKsR,CAAgC,GAEvGzR,EAAMwnB,YAAYwH,EAAO9gB,EAAWtF,MAAM,EAAE,EAC5C0lB,EAAUQ,sBAAsB,cAAehH,CAAa,GAZpE,IAAI7Z,EAAcjO,EAAM+C,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GACzDsJ,OAAOjB,SAASkB,EAAWvJ,WAAY,EAAE,GAAGkM,YAchDyf,EAAOd,CAAK,EACRa,GACAC,EAAOD,CAAM,EAEjBC,EAAOb,CAAG,EACLP,GAAc8B,CAAAA,GACfvpB,SAAOypB,CAAS,GAGftgB,EAAI,EAAGA,EAAIuf,EAAc/2B,OAAQwX,CAAC,GAAI,CAC3C,IAAIggB,EAAeT,EAAcnjB,SAAS4D,EAAEjM,WAAY,EAAE,GACtD0lB,EAAYuG,EAAanhB,aAAa,kBAAkB,EACxDhV,EAAQ4vB,EAAYrd,SAASqd,EAAW,EAAE,EAAI,KAClD,GAAI5vB,IAAUy0B,GAAe9F,EAAWtP,YAAcrf,GAAS,CAC3D,IAaQy1B,EAbJV,EAAQxiB,SAAS4jB,EAAanhB,aAAa,YAAY,EAAG,EAAE,EAC5DggB,EAAMziB,SAAS4jB,EAAanhB,aAAa,UAAU,EAAG,EAAE,EACxDugB,IAAgBx4B,kBAAgB85B,KAC5BxgB,EAAaH,EAAME,YAAY,IAC/BE,EAAItY,KAAKw2B,iBAAiBne,EAAWtF,MAAOgkB,EAAQ,EAAG,CAAA,CAAI,KACrDC,EACN8B,EAAmB/B,EAAOC,EAAKmB,CAAY,EAG3CW,EAAmB/B,EAAOC,EAAKmB,EAAc7f,CAAC,IAI9Cmf,EAAIz3B,KAAKs2B,uBAAuBpe,EAAME,YAAa2e,EAAQ,EAAG,CAAA,CAAI,KAC5DC,EACNkC,EAAyBnC,EAAOC,EAAKmB,CAAY,EAGjDe,EAAyBnC,EAAOC,EAAKmB,EAAcV,CAAC,EAGvDhB,GAAc8B,CAAAA,GACfJ,EAAatG,gBAAgB,kBAAkB,OAGlD,GAAI7vB,EACL,MAAO,CAAA,EAGf,MAAO,CAAA,GAEXylB,EAAOvnB,UAAUk5B,kBAAoB,SAAUlvB,EAASmvB,GAChD5H,EAAgBvnB,EAAQkG,QAAQ,IAAMkpB,EAA8B,EACpED,EACA5H,EAAcplB,UAAUe,IAAImsB,EAA+B,EAG3D9H,EAAcplB,UAAU2C,OAAOuqB,EAA+B,GAGtE9R,EAAOvnB,UAAUyxB,YAAc,SAAUznB,EAASD,GAC9C,IACQwnB,EADJvnB,IACIunB,EAAgBvnB,EAAQkG,QAAQ,IAAM6iB,EAAqB,EAC3DhpB,EAAKgC,OAAS/M,iBAAewL,OAC7B1K,KAAK01B,mBAAmBroB,iBAAiBnD,EAASD,CAAI,EAEjDA,EAAKgC,OAAS/M,iBAAe4zB,SAClC9yB,KAAKmZ,qBAAqB/C,mBAAmBlM,EAASD,CAAI,EAErDA,EAAKgC,OAAS/M,iBAAewX,YAClC1W,KAAK21B,wBAAwBre,sBAAsBpN,EAASD,CAAI,EAE3DA,EAAKgC,OAAS/M,iBAAes6B,UAClCxqB,SAAO9E,CAAO,EACdlK,KAAKy5B,sBAAsBxvB,EAAMwnB,CAAa,GAEzCxnB,EAAKgC,OAAS/M,iBAAe6zB,aAClC/yB,KAAK+1B,wBAAwBxX,sBAAsBrU,EAASD,CAAI,EAEpEwnB,EAAcplB,UAAU2C,OAAOuqB,GAAiCG,GAA6BC,GAA8BC,EAA2B,EAClJ3vB,EAAKc,aAAe/L,iBAAeiE,MACnCwuB,EAAcplB,UAAUe,IAAIssB,GAA6BH,EAA+B,EAGxF9H,EAAcplB,UAAUe,IAAKnD,EAAKc,aAAe/L,iBAAe+D,OAC5D42B,GAA+BC,EAA2B,IAI1EnS,EAAOvnB,UAAU6wB,uBAAyB,SAAUxb,EAAUob,EAAYvO,GACtE,IAAIyX,EAAgB75B,KAAK+xB,oBAAoB,CAAA,EAAMxc,CAAQ,EAC3D,GAA6B,IAAzBskB,EAAcl5B,OA0DlB,IAvDA,IAsDI6e,EAASxf,KACJgB,EAAI,EAAKA,EAAI64B,EAAcl5B,QAAYgwB,EAAWtP,YAAce,EAAcf,YAAergB,CAAC,GACnGqe,CAxDU,SAAUre,GACpB,IAAIkX,EAAQ2hB,EAActlB,SAASvT,EAAEkL,WAAY,EAAE,GAC/CqH,EAAWiM,EAAOxG,OAAO5M,QAAQL,cAAc,IAAMmM,EAAM5N,EAAE,EAE7DuK,GADJtB,EAAS3H,aAAa,sBAAuBwW,EAAcf,YAAYnV,UAAU,EAC5DqH,EAASxH,cAAc,IAAMmM,EAAM5N,GAAKka,CAAsB,GAC/EsV,EAAgBta,EAAOnV,cAAc,MAAO,CAC5CuF,UAAWmqB,GAAkC5b,EAAkBub,GAC/DpvB,GAAI4N,EAAM5N,GAAKgmB,EAAwB9L,EAC1C,EAEG/O,GADJlC,EAASzD,aAAagqB,EAAejlB,CAAc,EAClC0C,EAASiI,EAAOtS,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GAAGsJ,OAAQ,SAAU9J,GAAK,OAAOA,EAAEpB,KAAO4N,EAAM5N,GAAK,GACvH0N,EAAMwH,EAAOtS,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GAIlDkH,GAFJoM,EAAO6Y,mBAAmB9iB,EAAUyC,EAAKvC,EAAYkb,EAAYvO,EAAe,CAAA,EAAM,CAAA,CAAK,EAC3F5C,EAAO8Y,mBAAmB/iB,EAAUyC,EAAKvC,EAAYkb,EAAYvO,EAAe,CAAA,EAAM,CAAA,CAAK,EAC5E5C,EAAOrG,qBAAqB9F,uBAAuB6E,EAAM5N,GAAI4N,EAAMiC,OAAQjC,EAAM4M,aAAcjQ,EAAgBilB,EAAeta,EAAO5U,SAAS,GACzJsN,EAAMyU,SACFpT,EAAcrB,EAAM5N,GAAKgmB,EAAwB0J,GACrDxa,EAAOqN,UAAUtX,EAAU2C,EAAMyU,OAAQpT,EAAa,aAAa,GAEvEiG,EAAOtS,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GACxCsJ,OAAOjB,SAASkB,EAAWvJ,WAAY,EAAE,GAAG9K,cAAc,CAAEs1B,YAAa,CAAA,GAAQ,CAAA,CAAI,EACzF,IAAK,IAAIze,EAAI,EAAGA,EAAIC,EAAME,YAAYzX,OAAQsX,CAAC,GAG3C,IAFA,IAAII,EAAaH,EAAME,YAAY7D,SAAS0D,EAAE/L,WAAY,EAAE,GACxD+lB,EAAgBpd,EAAe9I,cAAc,IAAMsM,EAAW/N,EAAE,EAC3D6N,EAAI,EAAGA,EAAIE,EAAWtF,MAAMpS,OAAQwX,CAAC,GAAI,CAC9C,IAAIlO,EAAOoO,EAAWtF,MAAMwB,SAAS4D,EAAEjM,WAAY,EAAE,GACjDhC,EAAU+nB,EAAclmB,cAAc,IAAM9B,EAAKK,GAAKka,CAAsB,EAK5EjL,GAJY,OAAZrP,IACAsV,EAAO4Z,kBAAkBlvB,CAAO,EAChCsV,EAAOiW,kBAAkBxrB,EAAMC,EAASkJ,CAAQ,GAElC8D,SAASnL,cAAc,IAAMmM,EAAM5N,GAAKgmB,EAAwB0J,EAAqB,GACnGluB,EAAiBggB,cAAYvS,EAAa1G,gBAAc,EAC5D,GAAI/G,EAAgB,CACZ6nB,EAAiB7nB,EAAexL,OACpC,GAAIqzB,GACInU,EAAO0I,eAAe3T,SAASgB,EAASrJ,WAAY,EAAE,GAAI,CAC1D,GAAIjC,EAAKgC,OAAS/M,iBAAe6zB,YAC7B,IAAK,IAAIkH,EAAM,EAAGA,EAAMhwB,EAAKwR,oBAAoB1I,MAAMpS,OAAQs5B,CAAG,GAC1DhwB,EAAKwR,oBAAoB1I,MAAMwB,SAAS0lB,EAAI/tB,WAAY,EAAE,GAAGygB,QAC7DnN,EAAOqN,UAAUtX,EAAUtL,EAAKwR,oBAAoB1I,MAAMwB,SAAS0lB,EAAI/tB,WAAY,EAAE,GAAGygB,OAAQ1iB,EAAKK,GAAMsR,EAAmCqe,EAAM,kBAAkB,EAI9KhwB,EAAK0iB,QACLnN,EAAOqN,UAAUtX,EAAUtL,EAAK0iB,OAAQ1iB,EAAKK,GAAI,kBAAkB,MAUnFtJ,CAAC,GAIjBymB,EAAOvnB,UAAUkxB,uBAAyB,SAAUT,EAAYvO,EAAeqR,EAASle,GACpE,KAAA,IAAZke,IAAsBA,EAAU,CAAA,GACpC,IAAIyG,EAAcl6B,KAAK+xB,oBAAoB,CAAA,EAAOxc,CAAQ,EAC1D,GAA2B,IAAvB2kB,EAAYv5B,OAmChB,IAhCA,IA+BIw5B,EAASn6B,KACJgB,EAAI,EAAGA,EAAIk5B,EAAYv5B,OAAQK,CAAC,GAAI,CACzC,IAAIo5B,EAjCM,SAAUp5B,GACpB,IAAIkX,EAAQgiB,EAAY3lB,SAASvT,EAAEkL,WAAY,EAAE,GAC7CqH,EAAW4mB,EAAOnhB,OAAO5M,QAAQL,cAAc,IAAMmM,EAAM5N,EAAE,EACjE,GAAI,CAACiJ,EACD,MAAO,QAEPrB,EAAQqC,SAAShB,EAASyD,aAAa,qBAAqB,EAAG,EAAE,EACrE,GAAI,CAACyc,GAAY9C,EAAWtP,YAAcnP,EACtC,MAAO,CAAElQ,MAAO,CAAA,GAEpBm4B,EAAOE,eAAeniB,EAAM5N,EAAE,EAC9B,IAAImL,EAAa8B,EAAS4iB,EAAOjtB,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GAAGsJ,OAAQ,SAAU9J,GAAK,OAAOA,EAAEpB,KAAO4N,EAAM5N,GAAK,EAGvH0N,GAFJmiB,EAAOjtB,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GACxCsJ,OAAOjB,SAASkB,EAAWvJ,WAAY,EAAE,GAAG9K,cAAc,CAAEs1B,YAAa,CAAA,GAAS,CAAA,CAAI,EAChFyD,EAAOjtB,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,IAEtDiuB,EAAOjE,mBAAmB3gB,EAAUyC,EAAKvC,EAAYkb,EAAYvO,EAAe,CAAA,CAAI,EACpF+X,EAAOhE,mBAAmB5gB,EAAUyC,EAAKvC,EAAYkb,EAAYvO,EAAe,CAAA,CAAI,EACpF,IAAK,IAAInK,EAAI,EAAGA,EAAIC,EAAME,YAAYzX,OAAQsX,CAAC,GAG3C,IAFA,IAAII,EAAaH,EAAME,YAAY7D,SAAS0D,EAAE/L,WAAY,EAAE,GACxD+lB,EAAgB1e,EAASxH,cAAc,IAAMsM,EAAW/N,EAAE,EACrD6N,EAAI,EAAGA,EAAIE,EAAWtF,MAAMpS,OAAQwX,CAAC,GAAI,CAC9C,IAAIlO,EAAOoO,EAAWtF,MAAMwB,SAAS4D,EAAEjM,WAAY,EAAE,GACjDhC,EAAU+nB,EAAclmB,cAAc,IAAM9B,EAAKK,GAAKka,CAAsB,EAChE,OAAZta,IACAiwB,EAAOf,kBAAkBlvB,EAAS,CAAA,CAAI,EACtCiwB,EAAOhG,oBAAoBlqB,EAAMC,CAAO,KAO9BlJ,CAAC,EACvB,GAAuB,UAAnB,OAAOo5B,EACP,OAAOA,EAAQp4B,MACnB,GAAgB,UAAZo4B,EACA,MAER,MAAO,CAAA,GAEX3S,EAAOvnB,UAAUm6B,eAAiB,SAAU9F,GACxC,IAEQuF,EAFJ3mB,EAAkBnT,KAAKgZ,OAAO5M,QAAQL,cAAc,IAAMwoB,EAAUjE,EAAwB0J,EAAqB,EACjH7mB,IACI2mB,EAAgB3mB,EAAgBpE,cACpC/O,KAAKmZ,qBAAqBlE,uBAAuB9B,CAAe,EAChEnE,SAAO8qB,CAAa,IAG5BrS,EAAOvnB,UAAU6xB,oBAAsB,SAAUuI,EAAY/kB,GACzD,IAAIpL,EAAQnK,KACRwV,EAASxV,KAAKkN,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GAAGsJ,OAW1D,OAFAA,EARSA,EAAO9I,OAAO,SAAUhB,GAI7B,MAA+B,YAAvBvB,EAAMwF,eAA+B4qB,cAAY7uB,EAAE0T,aAAa,GAAK1T,EAAE0T,iBAAoBkb,GAC/FC,cAAY7uB,EAAEgrB,WAAW,GAAO,CAAC6D,cAAY7uB,EAAEgrB,WAAW,GAAM4D,IAAe5uB,EAAEgrB,aACxF,GAEM8D,KAAK,SAAUC,EAAGn7B,GAAK,OAAOm7B,EAAEC,SAAWp7B,EAAEo7B,SAAW,EAExDJ,EAAa9kB,EAAOmlB,UAAYnlB,GAE3CiS,EAAOvnB,UAAUixB,cAAgB,WACzBnxB,KAAKyrB,eACLzrB,KAAKyrB,aAAa3hB,UAClB9J,KAAKyrB,aAAe,OAG5BhE,EAAOvnB,UAAU06B,sBAAwB,SAAUlpB,GAC/C,IAIIif,EAJAvO,EAAgBpiB,KAAKgZ,OAAO5M,QAAQL,cAAc,IAAM/L,KAAKkN,KAAKqH,SAAS7C,EAAMxF,WAAY,EAAE,GAAG5B,GAAKsa,CAAoB,EAC1HxC,IAGDuO,EAAavO,EAAchS,QAAQ,IAAMwgB,EAAqB,EACxC,eAAtB5wB,KAAK2P,aACL3P,KAAKsxB,wBAAwBlP,EAAeuO,EAAYjf,EAAO,CAAA,CAAI,EAGnE1R,KAAKoxB,uBAAuBhP,EAAeuO,EAAY,CAAA,EAAMjf,CAAK,IAG1E+V,EAAOvnB,UAAUyvB,gBAAkB,SAAUc,GACzC,IAAIlB,EAAe,CAAA,EACnB,GAAIvvB,KAAKwpB,eAAe7oB,OACpB,IAAK,IAAIK,EAAI,EAAGA,EAAIhB,KAAKwpB,eAAe7oB,OAAQK,CAAC,GAC7C,IAAK,IAAIiX,EAAI,EAAGA,EAAIjY,KAAKwpB,eAAejV,SAASvT,EAAEkL,WAAY,EAAE,GAAGgB,KAAKvM,OAAQsX,CAAC,GAC9E,GAAIjY,KAAKwpB,eAAejV,SAASvT,EAAEkL,WAAY,EAAE,GAAGgB,KAAKqH,SAAS0D,EAAE/L,WAAY,EAAE,GAAG5B,KAAOmmB,EAAO,CAC/FlB,EAAe,CAAA,EACf,MAKhB,OAAOA,GAEX9H,EAAOvnB,UAAU8tB,mBAAqB,SAAUtiB,GAC5C,IAAIvB,EAAQnK,KAER66B,GADJ76B,KAAKyqB,oBAAsB,EACX/e,EAAEovB,cAAgBpvB,EAAEovB,cAAc9jB,aAAa,SAAS,EAAI,MACxE+jB,EAAgBrvB,EAAE4Z,aAAatO,aAAa,SAAS,EACrDgkB,EAAYzjB,EAASvX,KAAKkN,cAAiB8K,GAAO,OAAQA,EAAI1N,KAAOuwB,CAAa,GAClFtL,EAAevvB,KAAK2vB,gBAAgBkL,CAAS,EAC7ChL,EAAgBtY,EAASvX,KAAKkN,cAAiB8K,GAAO,OAAQA,EAAI1N,KAAOywB,CAAiB,GAC9FC,EAA0B,CAAC,IAAfA,EAAmBh7B,KAAK2kB,YAAcqW,EAC9C5d,EAAY,CACZ1J,OAAQhI,EAAEgI,OAAQ2R,aAAc3Z,EAAE2Z,aAAcwK,cAAeA,EAC/DR,cAAe2L,EAAWzL,aAAcA,GAE5CvvB,KAAK2uB,QAAQ,eAAgBvR,EAAW,SAAU3J,GAC9C,IASQgc,EATJhc,EAAKC,SAGTvJ,EAAMgnB,gBACDhnB,EAAMme,aAAkC,CAAC,IAAnBuH,GACvB1lB,EAAMywB,sBAAsB/K,CAAa,GAEzCoL,EAAqB9wB,EAAM6O,OAAOjG,MAAMwB,SAASymB,EAAU9uB,WAAY,EAAE,GAAGf,SACvDY,cAAc,IAAMyjB,EAAsB,IAAwE,IAAjErlB,EAAM+C,KAAKqH,SAASymB,EAAU9uB,WAAY,EAAE,GAAGsJ,OAAO7U,SACxH8uB,EAAWtlB,EAAMulB,aAAavlB,EAAM+C,KAAKqH,SAASymB,EAAU9uB,WAAY,EAAE,GAAGsJ,OAAQwlB,CAAS,EAClG9gB,SAAOuV,EAAUwL,CAAkB,GAE1C,GAELxT,EAAOvnB,UAAUqtB,eAAiB,SAAUrgB,GA4BxC,IA3BA,IAAI/C,EAAQnK,KACRqtB,EAAW,GAyBX6N,EAASl7B,KACJgB,EAAI,EAAGA,EAAIkM,EAAKvM,OAAQK,CAAC,GAC9Bm6B,CA1BU,SAAUn6B,GACpB,IAAIo6B,EAAYluB,EAAKqH,SAASvT,EAAEkL,WAAY,EAAE,GAC1CiO,EAAS+gB,EAAO7wB,cAAc,OAAQ,CACtCwF,UAAWurB,EAAUjhB,OACrB7P,GAAI8wB,EAAU9wB,GAAKuT,EACtB,EACGtI,EAAWgC,EAAS2jB,EAAOhuB,cAAiB8K,GAAO,OAAQA,EAAI1N,KAAO8wB,EAAU9wB,EAAM,GAStF0N,GARAojB,EAAUzO,SACLuO,EAAOhT,eAAe3T,SAASgB,EAASrJ,WAAY,EAAE,KACvDgvB,EAAOhT,eAAe3T,SAASgB,EAASrJ,WAAY,EAAE,GAAK,IAE/DgvB,EAAOrO,UAAUtX,EAAU6lB,EAAUzO,OAAQyO,EAAU9wB,GAAI,KAAK,GAEpE6P,EAAO1O,QAAU,WAActB,EAAMskB,SAAS,CAAA,CAAK,GACnDtU,EAAOkhB,WAAa,WAAclxB,EAAMskB,SAAS,CAAA,CAAI,GAC3C,CAAEtU,OAAQ,CAAEpY,KAAMoY,GAAU7P,GAAI8wB,EAAU9wB,GAAIW,SAAUmwB,EAAUnwB,WACxEE,EAAU+vB,EAAO7wB,cAAc,MAAO,CACtCuF,UAAWoI,EAAI/M,SACfX,GAAI8wB,EAAU9wB,GAAKsa,EACtB,EACDzZ,EAAQkB,UAAUe,IAAIkuB,EAAyB,EAC/CtjB,EAAI7M,QAAUA,EACdkiB,EAAShX,KAAK2B,CAAG,GAIThX,CAAC,EAEb,OAAOqsB,GAEX5F,EAAOvnB,UAAUgvB,iBAAmB,SAAUxd,GAC1C,IAAI+d,EAAWzvB,KAAK0vB,aAAa1vB,KAAKkN,KAAKqH,SAAS7C,EAAMxF,WAAY,EAAE,GAAGsJ,OAAQ9D,CAAK,EACpFvG,EAAUnL,KAAKgZ,OAAOjG,MAAMwB,SAAS7C,EAAMxF,WAAY,EAAE,GAAGf,QAK5DiX,GAJJlI,SAAOuV,EAAUtkB,CAAO,EACE,eAAtBnL,KAAK2P,cACL3P,KAAKoM,QAAQC,UAAUe,IAAImuB,EAAgC,EAE3Cv7B,KAAKgZ,OAAO5M,QAAQL,cAAc,IAAM/L,KAAKkN,KAAKlN,KAAK2kB,aAAara,GAAKsa,CAAoB,GAC7G5kB,KAAKiwB,qBACLjwB,KAAKiwB,oBAAoB9N,qBAAqBC,CAAa,EAE/DpiB,KAAKwrB,cAAcxrB,KAAK2kB,YAAavC,CAAa,GAEtDqF,EAAOvnB,UAAU40B,kBAAoB,SAAU0G,EAAOnI,GAClD,IAyCIoI,EAzCAtxB,EAAQnK,KACR8L,EAAiB9L,KAAKqK,cAAc,SAAU,CAC9CC,GAAIkxB,EACP,EACGrL,EAAiBnwB,KAAKqK,cAAc,MAAO,CAC3CuF,UAAW8rB,GACXhc,MAAO,CAAEC,SAAY,KACxB,EACGgc,EAAc37B,KAAKiL,SAAWkT,EAAkBne,KAAKiL,SAAW,GAChEsO,EAAc,IAAI1G,iBAAe,CACjC5Q,QAAS25B,GACT3wB,SAAU4wB,GAAgC1d,EAAkB2d,GAAsCH,EAClGr7B,OAAQ6vB,EACRxlB,OAAQ3K,KAAK2K,OACbC,UAAW5K,KAAK4K,UAChBC,kBAAmB7K,KAAK6K,kBACxBoE,WAAY,SAAUwE,GAClB,IAAI2J,EAAY,CAAEhR,QAASqH,EAAKrH,QAAS8D,MAAOuD,EAAKvD,MAAOwD,OAAQD,EAAKC,QACzEvJ,EAAMwkB,QAAQ,oBAAqBvR,EAAW,SAAU2e,GAChDA,EAAWroB,SACXD,EAAKC,OAAS,CAAA,GAErB,GAEL5E,YAAa,SAAU2E,GACnB,IAAIyO,EAAMzO,EAAKvD,MAAQE,UAAQqD,EAAKvD,MAAM5P,OAAQ,IAAM07B,EAA8B,EAAI,KACtFngB,EAAiBpI,EAAKvD,MAAQE,UAAQqD,EAAKvD,MAAM5P,OAAQ,uCAAuC,EAAI,KACpG8c,EAAY,CAAEhR,QAASqH,EAAKrH,QAAS8D,MAAOuD,EAAKvD,MAAOwD,OAAQD,EAAKC,QACzEvJ,EAAMwkB,QAAQ,qBAAsBvR,EAAW,SAAU2e,IACjD7Z,GAAO6Z,EAAWroB,QAAUmI,KAC5BpI,EAAKC,OAAS,CAAA,GAErB,IAEN5H,CAAc,EAUjB,OATA9L,KAAKoM,QAAQC,UAAUe,IAAI6uB,EAAyB,EACpDroB,GAAcuc,EAAgBnwB,IAAI,EAC7BqzB,IACDrzB,KAAKkoB,eAA4B,YAAI,GACrCloB,KAAKkoB,eAA4B,YAAE7R,KAAK,CAAE/L,GAAIkxB,EAAOvvB,KAAM,cAAe0gB,OAAQ,KAAM,GAG5F7gB,EAAe+H,UAAY/H,EAAeL,QAAU,WAActB,EAAM2J,UAAY,CAAC,EAAG2nB,EAAY3vB,CAAAA,EAAeO,UAAUC,SAAS,yBAAyB,GAC/J6jB,EAAetc,UAAY,SAAUnI,GAAK,OAAQvB,EAAM+xB,iBAAiBxwB,EAAGykB,EAAgBsL,CAAS,EAAGtxB,GACjGoP,GAEXkO,EAAOvnB,UAAUg8B,iBAAmB,SAAUxwB,EAAGpL,EAAQm7B,GACrD,IAmFYlQ,EA3ERpV,GANApD,GADA0oB,EACQn7B,EAGUA,EAAOyL,cAAc,kCAAkC,GAH1DowB,uBAAuB,eAAe,GAMpC,CAACn8B,KAAK8T,WAAa9T,KAAK8T,UAAY,EAAK,EAAI9T,KAAK8T,WAAW/H,cAAc,YAAY,EACxGiI,EAAcmC,GAAWA,EAAQ9J,UAAUC,SAAS,YAAY,EAChEyG,EAAO,CAAC/S,KAAK8T,WAAa9T,KAAK8T,UAAY,EAAK,EAAI9T,KAAK8T,WAAW/H,cAAc,aAAa,EAAI,KAwDnGqwB,IArDgB,OAAhBpoB,GAAmC,QAAVtI,EAAEnL,KAAkBP,KAAK8T,UAAY,KAChD,cAAVpI,EAAEnL,KAAwB,CAACmL,EAAE8I,UAAsB,QAAV9I,EAAEnL,KACtC,CAACP,KAAK8T,WAAgC,IAAnB9T,KAAK8T,WAAoB9T,KAAK8T,UAAY,GAAK9T,KAAK8T,YAAcf,EAAMpS,OAAS,GACrGX,KAAK8T,UAAY,EACjBkB,EAAajC,EAAM/S,KAAK8T,WAAW1D,QAAQ,gBAAgB,EAC3DpQ,KAAKq8B,iBAAiBrnB,EAAYjC,EAAO,CAAA,CAAI,EACzCiB,GAAyB,QAAVtI,EAAEnL,MACjBmL,EAAEoJ,iBAEE7K,EADO8I,EAAM/S,KAAK8T,WAAW/H,cAAc,YAAY,IAEvD9B,EAAK8K,QAGbunB,EAAcvpB,EAAM/S,KAAK8T,WAAW/H,cAAc,oBAAoB,GAEjE/L,KAAK8T,UAAYf,EAAMpS,OAAS,GAAuB,GAAlBX,KAAK8T,YAC/C9T,KAAK8T,SAAS,GACdkB,EAAajC,EAAM/S,KAAK8T,WAAW1D,QAAQ,gBAAgB,EAC3DpQ,KAAKq8B,iBAAiBrnB,EAAYjC,EAAO,CAAA,CAAI,EAC7CupB,EAAcvpB,EAAM/S,KAAK8T,WAAW/H,cAAc,oBAAoB,GAEtEuwB,GACAA,EAAYvnB,SAGXrJ,EAAU,YAAVA,EAAEnL,KAAsBmL,EAAE8I,UAAsB,QAAV9I,EAAEnL,MACzB,OAAhByT,GAAmC,QAAVtI,EAAEnL,MACtBP,KAAK8T,WAAgC,CAAC,IAApB9T,KAAK8T,UAanB9T,KAAK8T,WAAaf,EAAMpS,OAAS,GAAsB,EAAjBX,KAAK8T,YAChD9T,KAAK8T,SAAS,GACdkB,EAAajC,EAAM/S,KAAK8T,WAAW1D,QAAQ,gBAAgB,EAC3DpQ,KAAKq8B,iBAAiBrnB,EAAYjC,EAAO,CAAA,CAAK,EAC9CupB,EAAcvpB,EAAM/S,KAAK8T,WAAW/H,cAAc,oBAAoB,IAhBtE/L,KAAK8T,UAAYf,EAAMpS,OAAS,EAChCqU,EAAajC,EAAM/S,KAAK8T,WAAW1D,QAAQ,gBAAgB,EAC3DpQ,KAAKq8B,iBAAiBrnB,EAAYjC,EAAO,CAAA,CAAK,EAC1CiB,GAAgBtI,EAAE8I,UAAsB,QAAV9I,EAAEnL,MAChCmL,EAAEoJ,iBAEE7K,EADO8I,EAAM/S,KAAK8T,WAAW/H,cAAc,YAAY,IAEvD9B,EAAK8K,QAGbunB,EAAcvpB,EAAM/S,KAAK8T,WAAW/H,cAAc,oBAAoB,GAQtEuwB,GACAA,EAAYvnB,SAIxBzU,EAAOsL,aAAa,QAAS5L,KAAK8T,UAAU5H,UAAU,GAEnCqI,SAASjU,EAAO0W,aAAa,OAAO,EAAG,EAAE,GAC5DulB,EAAW,GACXC,EAAczpB,EAAMwB,SAAS6nB,EAAiBlwB,WAAY,EAAE,GAAK6G,EAAMwB,SAAS6nB,EAAiBlwB,WAAY,EAAE,GAAGH,cAAc,YAAY,EAAI,KAChJywB,IACAD,EAAWC,EAAYxlB,aAAa,cAAc,GAExC,cAAVtL,EAAEnL,KAAiC,YAAVmL,EAAEnL,KAA+B,MAAVmL,EAAEnL,KAAyB,QAAVmL,EAAEnL,MAClD,gBAAbg8B,GACc,QAAV7wB,EAAEnL,KACFmL,EAAEoJ,iBAEN/B,EAAMwB,SAAS6nB,EAAiBlwB,WAAY,EAAE,GAAGH,cAAc,sBAAsB,EAAEgJ,UAGzE,QAAVrJ,EAAEnL,KACFmL,EAAEoJ,kBAEFyW,EAAOxY,EAAMwB,SAAS6nB,EAAiBlwB,WAAY,EAAE,GAAGH,cAAc,YAAY,IAElFwf,EAAKxW,SAGC,MAAVrJ,EAAEnL,KAA6B,aAAbg8B,IACdE,EAAc1pB,EAAMwB,SAAS6nB,EAAiBlwB,WAAY,EAAE,GAAGH,cAAc,YAAY,EACzF2wB,EAAWvwB,eAAaswB,EAAa/uB,UAAQ,EACjD1N,KAAK8T,UAAY,CAAC,EAClB4oB,EAAS9vB,UAGE,gBAAb2vB,GAA0C,eAAV7wB,EAAEnL,KAAkC,cAAVmL,EAAEnL,MAChD,eAAVmL,EAAEnL,MACEP,KAAK4K,UACLmI,EAAMwB,SAAS6nB,EAAiBlwB,WAAY,EAAE,GAAGH,cAAc,YAAY,EAG3EgH,EAAMwB,SAAS6nB,EAAiBlwB,WAAY,EAAE,GAAGH,cAAc,iBAAiB,GAHHgJ,QAMvE,cAAVrJ,EAAEnL,MACEP,KAAK4K,UACLmI,EAAMwB,SAAS6nB,EAAiBlwB,WAAY,EAAE,GAAGH,cAAc,iBAAiB,EAGhFgH,EAAMwB,SAAS6nB,EAAiBlwB,WAAY,EAAE,GAAGH,cAAc,YAAY,GAHOgJ,SAOhF,UAAVrJ,EAAEnL,MACFP,KAAK8T,UAAY,CAAC,IAG1B2T,EAAOvnB,UAAUm8B,iBAAmB,SAAUrnB,EAAYjC,EAAO4pB,GAC7D,KAAO3nB,GAAcA,EAAW3I,UAAUC,SAAS,YAAY,GACvDqwB,EACI38B,KAAK8T,YAAcf,EAAMpS,OAAS,GAAKoS,EAAM/S,KAAK8T,WAAW1D,QAAQ,gBAAgB,EAAE/D,UAAUC,SAAS,YAAY,IACtHtM,KAAK8T,UAAY,CAAC,GAIC,IAAnB9T,KAAK8T,WAAmBf,EAAM/S,KAAK8T,WAAW1D,QAAQ,gBAAgB,EAAE/D,UAAUC,SAAS,YAAY,IACvGtM,KAAK8T,UAAYf,EAAMpS,QAI/Bg8B,EAAa38B,KAAK8T,SAAS,GAAK9T,KAAK8T,SAAS,GAC9CkB,EAAajC,EAAM/S,KAAK8T,WAAW1D,QAAQ,gBAAgB,GAGnEqX,EAAOvnB,UAAUo0B,qBAAuB,SAAU/a,GAC9C,IACQrD,EADJqD,IACIrD,EAASqD,EAAYnN,QACzB2O,GAAexB,EAAYjZ,MAAM,EACjCiZ,EAAYzP,UACZoM,EAAOlH,WAGfyY,EAAOvnB,UAAUi0B,oBAAsB,SAAUlqB,EAAMC,GACnD,GAAIA,EACA,OAAQD,EAAKgC,MACT,IAAK,SACDjM,KAAK01B,mBAAmBlpB,qBAAqBvC,EAAMC,CAAO,EAC1D,MACJ,IAAK,WACDlK,KAAKmZ,qBAAqB3M,qBAAqBvC,EAAMC,CAAO,EAC5D,MACJ,IAAK,cACDlK,KAAK21B,wBAAwBnpB,qBAAqBvC,EAAMC,CAAO,EAC/D,MACJ,IAAK,WACDlK,KAAK41B,qBAAqBppB,qBAAqBvC,EAAMC,CAAO,EAC5D,MACJ,IAAK,cACDlK,KAAK61B,wBAAwBrpB,qBAAqBvC,EAAMC,CAAO,EAC/D,MACJ,IAAK,WACDlK,KAAK81B,qBAAqBtpB,qBAAqBvC,EAAMC,CAAO,EAC5D,MACJ,IAAK,UACDlK,KAAKiwB,oBAAoBzjB,qBAAqBvC,EAAMC,CAAO,EAC3D,MACJ,IAAK,cACDlK,KAAK+1B,wBAAwBvpB,qBAAqBvC,EAAMC,CAAO,IAK/Eud,EAAOvnB,UAAUk1B,qBAAuB,SAAUb,EAASK,GACvD,IAAIf,EAAmB7zB,KAAKqK,cAAc,MAAO,CAC7CuF,UAAWgtB,GACXtyB,GAAIiqB,EAAU/P,EACjB,EACGqY,EAAgB78B,KAAKqK,cAAc,MAAO,CAC1CuF,UAAWulB,GACX7qB,GAAIiqB,EAAU1W,EACdhO,UAAW+kB,EACd,EAED,OADAf,EAAiB3Z,OAAO2iB,CAAa,EAC9BhJ,GAEXpM,EAAOvnB,UAAU+uB,kBAAoB,WACjC,IAAI9kB,EAAQnK,KACZA,KAAKu1B,eAAiBv1B,KAAKqK,cAAc,OAAQ,CAC7CuF,UAAWktB,GAAmC3e,EAAkB4e,GAChEzyB,GAAItK,KAAKgZ,OAAO5M,QAAQ9B,GAAK0yB,GAC7Btd,MAAO,CAAEC,SAAY,IAAK1T,KAAQ,SAAUgxB,aAAc,kBAAmBC,KAAQ,UACxF,EACDl9B,KAAKu1B,eAAe9pB,QAAU,SAAUC,GAAKvB,EAAM2kB,aAAapjB,CAAC,GACjE1L,KAAKu1B,eAAe1hB,UAAY,SAAUnI,GACxB,UAAVA,EAAEnL,KACF4J,EAAM2kB,aAAapjB,CAAC,GAG5B1L,KAAKoM,QAAQC,UAAUe,IAAI+vB,EAA4B,EAC7B,eAAtBn9B,KAAK2P,cACL3P,KAAKu1B,eAAelpB,UAAUe,IAAIgwB,EAA8B,EAEpEp9B,KAAKgZ,OAAO5M,QAAQ5B,YAAYxK,KAAKu1B,cAAc,EAC/Cv1B,KAAKq9B,uBACLr9B,KAAKkoB,eAAyB,SAAI,GAClCloB,KAAKkoB,eAAyB,SAAE7R,KAAK,CAAE/L,GAAItK,KAAKu1B,eAAejrB,GAAI2B,KAAM,WAAY0gB,OAAQ3sB,KAAKq9B,qBAAsB,IAGhI5V,EAAOvnB,UAAUo9B,qBAAuB,WACpC,IAAInzB,EAAQnK,KACR0R,EAAQ6F,EAASvX,KAAK4Z,YAAa,SAAUlO,GAAK,OAAOA,EAAEpB,KAAOH,EAAMorB,eAAejrB,GAAK,EAClF,CAAC,IAAXoH,GACA1R,KAAK4Z,YAAYoW,OAAOte,EAAO,CAAC,EAEpC1R,KAAKoM,QAAQC,UAAU2C,OAAOmuB,EAA4B,EAC1DnuB,SAAOhP,KAAKgZ,OAAO5M,QAAQL,cAAc,IAAM+wB,EAAgC,CAAC,EAChF98B,KAAKu1B,eAAiB,MAE1B9N,EAAOvnB,UAAUq9B,aAAe,SAAUrwB,GACtClN,KAAKmxB,gBACLnxB,KAAKktB,QAAQltB,KAAKkN,KAAM,MAAOlN,KAAKoM,QAAQ9B,EAAE,EAC9C,IAAK,IAAIkzB,EAAK,EAAGC,EAAKl+B,OAAOwtB,KAAK7f,CAAI,EAAGswB,EAAKC,EAAG98B,OAAQ68B,CAAE,GAAI,CAK3D,IAJA,IAAIj9B,EAAMk9B,EAAGD,GACT9rB,EAAQ6C,SAAShU,EAAK,EAAE,EACxByX,EAAM9K,EAAKqH,SAAS7C,EAAMxF,WAAY,EAAE,GACxCwxB,EAAW,CAAA,EACNzlB,EAAI,EAAGA,EAAKjY,KAAKgZ,OAAOjG,MAAY,OAAGkF,CAAC,GAC7C,GAAIjY,KAAKkN,KAAKqH,SAAS7C,EAAMxF,WAAY,EAAE,GAAG5B,KAAOtK,KAAKgZ,OAAOjG,MAAMwB,SAAS0D,EAAE/L,WAAY,EAAE,GAAG5B,GAAI,CACnGozB,EAAW,CAAA,EACX,MAGR,GAAKA,CAAAA,EAAU,CACX19B,KAAK29B,gBAAgB39B,KAAKitB,YAAY,EACtCjtB,KAAKitB,aAAejtB,KAAKkN,KAAKgH,QAC9BlU,KAAKstB,mBACL,IAAID,EAAWrtB,KAAKutB,eAAevtB,KAAKkN,IAAI,EACxClN,KAAK2kB,aAAe3kB,KAAKkN,KAAKvM,SAC9BX,KAAK2kB,YAAc3kB,KAAKkN,KAAKvM,OAAS,GAE1CX,KAAKgZ,OAAO5X,cAAc,CAAE2R,MAAOsa,EAAUM,aAAc3tB,KAAK2kB,YAAa,EAC7E,MAGA,IAAInP,EAASxV,KAAKkN,KAAKqH,SAAS7C,EAAMxF,WAAY,EAAE,GAAGsJ,OACnD2X,EAASntB,KAAKgZ,OAAO5M,QACrBgvB,EAAYp7B,KAAKkN,KAAKqH,SAAS7C,EAAMxF,WAAY,EAAE,GAInDoJ,GAHJ8lB,EAAUh6B,cAAc4W,EAAK,CAAA,CAAI,EACjChY,KAAKoB,cAAc,CAAEoU,OAAQxV,KAAKktB,QAAQkO,EAAU5lB,OAAQ,QAAS4lB,EAAU9wB,EAAE,GAAK,CAAA,CAAI,EAC1FtK,KAAKstB,mBACYttB,KAAKgZ,OAAOjG,MAAMwB,SAAS7C,EAAMxF,WAAY,EAAE,GAAGf,SACnE,GAAIqK,IAEIwC,EAAImC,SACJna,KAAKgZ,OAAOjG,MAAMwB,SAAS7C,EAAMxF,WAAY,EAAE,GAAGiO,OAAOpY,KAAK67B,UAAYxC,EAAUjhB,QAGpFnC,EAAI/M,WACAjL,KAAKgZ,OAAOjG,MAAMwB,SAAS7C,EAAMxF,WAAY,EAAE,GAAGjB,WAClDqK,EAAWjJ,UAAU2C,OAAOhP,KAAKgZ,OAAOjG,MAAMwB,SAAS7C,EAAMxF,WAAY,EAAE,GAAGjB,QAAQ,EACtFkiB,EAAOphB,cAAc,WAAW,EAAEM,UAAU2C,OAAOhP,KAAKgZ,OAAOjG,MAAMwB,SAAS7C,EAAMxF,WAAY,EAAE,GAAGjB,QAAQ,GAEjHqK,EAAWjJ,UAAUe,IAAIguB,EAAUnwB,QAAQ,EAC3CkiB,EAAOphB,cAAc,WAAW,EAAEM,UAAUe,IAAIguB,EAAUnwB,QAAQ,GAGlE+M,EAAIxC,QAAQ,CACZ,IAAK,IAAIqoB,EAAK,EAAGC,EAAWtoB,EAAQqoB,EAAKC,EAASn9B,OAAQk9B,CAAE,GAAI,CAG5D,IAFA,IAAI3lB,EAAQ4lB,EAASD,GACjB1qB,EAAkB+E,EAAMwe,YAAcphB,EAAWvJ,cAAc,IAAMmM,EAAM5N,GAAKgmB,EAAwB0J,EAAqB,EAAI,KAC5H+D,EAAK,EAAGC,EAAK9lB,EAAME,YAAa2lB,EAAKC,EAAGr9B,OAAQo9B,CAAE,GAEvD,IADA,IACSE,EAAK,EAAGC,EADAF,EAAGD,GACahrB,MAAOkrB,EAAKC,EAAGv9B,OAAQs9B,CAAE,GAAI,CAC1D,IAAIh0B,EAAOi0B,EAAGD,GACV/b,EAAM/O,EAAkBnT,KAAKmZ,qBAAqBhE,kBAAkBhC,EAAiBlJ,EAAKK,EAAE,EAAIgL,EAAWvJ,cAAc,IAAM9B,EAAKK,EAAE,EACtI4X,GACAliB,KAAKm+B,gBAAgBl0B,EAAMiY,CAAG,EAItC/O,GACAnT,KAAKmZ,qBAAqBlE,uBAAuB9B,CAAe,EAGpDmC,EAAWnB,iBAAiB,iBAAiB,EAEnD8N,QAAQ,SAAU1O,GAAYA,EAASvE,SAAW,EAC5DygB,EAAWzvB,KAAK0vB,aAAa0L,EAAU5lB,OAAQ9D,CAAK,EACxDwI,SAAOuV,EAAUna,CAAU,GAKvCtV,KAAKitB,eAAiBjtB,KAAKkN,OAC3BlN,KAAKitB,aAAejtB,KAAKkN,KACrBmgB,EAAWrtB,KAAKutB,eAAevtB,KAAKkN,IAAI,EACxClN,KAAK2kB,aAAe3kB,KAAKkN,KAAKvM,SAC9BX,KAAK2kB,YAAc3kB,KAAKkN,KAAKvM,OAAS,GAE1CX,KAAKgZ,OAAO5X,cAAc,CAAE2R,MAAOsa,EAAUM,aAAc3tB,KAAK2kB,YAAa,GAEjF,IAAIvC,EAAgBpiB,KAAKgZ,OAAO5M,QAAQL,cAAc,IAAM/L,KAAKkN,KAAKlN,KAAK2kB,aAAara,GAAKsa,CAAoB,EACjH5kB,KAAKwrB,cAAcxrB,KAAK2kB,YAAavC,CAAa,GAEtDqF,EAAOvnB,UAAU6uB,aAAe,WAC5B/uB,KAAKyqB,oBAAsB,EAC3BzqB,KAAKmxB,gBACLnxB,KAAKu1B,eAAelpB,UAAUE,OAAO6wB,GAAsD,eAAtBp9B,KAAK2P,YAA6B,EACvG3P,KAAKoM,QAAQC,UAAUE,OAAOgvB,GAAwD,eAAtBv7B,KAAK2P,YAA6B,EAClG,IAAK,IAAI3O,EAAI,EAAGA,GAAMhB,KAAKkN,KAAKvM,OAAS,EAAIK,CAAC,GAAI,CAC9C,IAAIuU,EAAWvU,EAEf,GAA6B,KADZhB,KAAKgZ,OAAOjG,MAAMwB,SAASgB,EAASrJ,WAAY,EAAE,GAAGf,QACvD0E,UAAkB,CAC7B,IAAImI,EAAMhY,KAAKkN,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GAChDkyB,EAAYp+B,KAAKkN,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GAAGsJ,OACzD4M,EAAgBpiB,KAAKgZ,OAAO5M,QAAQL,cAAc,IAAM/L,KAAKkN,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GAAG5B,GAAKsa,CAAoB,EAC9H+L,EAAavO,EAAchS,QAAQ,IAAMwgB,EAAqB,EAClE,GAA0B,eAAtB5wB,KAAK2P,aACL,IAAK,IAAI0uB,EAAM,EAAGA,EAAMD,EAAUz9B,OAAQ09B,CAAG,GAAI,CAc7C,IAbA,IAAInmB,EAAQkmB,EAAU7pB,SAAS8pB,EAAInyB,WAAY,EAAE,GAC7CoyB,EAAYF,EAAU7pB,SAAS8pB,EAAInyB,WAAY,EAAE,GAAGqrB,YASpDhkB,GARA2E,EAAMwe,aACNxe,EAAM9W,cAAc,CAAEs1B,YAAa,CAAA,GAAS,CAAA,CAAI,EAChD12B,KAAKq6B,eAAeniB,EAAM5N,EAAE,IAG5BtK,KAAKq4B,mBAAmB9iB,EAAUyC,EAAKqmB,EAAK1N,EAAYvO,EAAe,CAAA,EAAM,CAAA,CAAK,EAClFpiB,KAAKs4B,mBAAmB/iB,EAAUyC,EAAKqmB,EAAK1N,EAAYvO,EAAe,CAAA,EAAM,CAAA,CAAK,GAEvEuO,EAAW5kB,cAAc,IAAMmM,EAAM5N,EAAE,GAElDotB,GAAgB7iB,EADCtB,EAASxH,cAAc,IAAMmM,EAAM5N,GAAKka,CAAsB,GAChDrQ,iBAAiB,kBAAuB,EAClEoqB,EAAM,EAAGA,EAAM7G,EAAc/2B,OAAQ49B,CAAG,GAC7C7G,EAAcnjB,SAASgqB,EAAIryB,WAAY,EAAE,GAAG8C,UAGhD4lB,EADkB/f,EAAe9I,cAAc,IAAMmM,EAAM5N,GAAKuT,CAAmB,GACvE7O,UAEZwvB,EADmB3pB,EAAe9I,cAAc,IAAMmM,EAAM5N,GAAKsa,CAAoB,GACxEvY,UAAU8O,QAAQ+b,GAAsBuH,EAAuB,EAC5ED,EAAanyB,UAAU2C,OAAOuqB,EAA+B,EAC7D,IAAK,IAAIthB,EAAI,EAAGA,EAAIC,EAAME,YAAYzX,OAAQsX,CAAC,GAAI,CAC/C,IAAII,EAAaH,EAAME,YAAY7D,SAAS0D,EAAE/L,WAAY,EAAE,IAE5DwyB,EADsB7pB,EAAe9I,cAAc,IAAMsM,EAAW/N,EAAE,GACtD+B,UAAU8O,QAAQ+b,GAAsBuH,EAAuB,EAC/E,IAAK,IAAItmB,EAAI,EAAGA,EAAIE,EAAWtF,MAAMpS,OAAQwX,CAAC,GAAI,CAI9C,IAHA,IAAIwmB,EAAWtmB,EAAWtF,MACtB9I,EAAOoO,EAAWtF,MAAMwB,SAAS4D,EAAEjM,WAAY,EAAE,GACjDwnB,EAAO,CAAA,EACJ,GAAWzpB,EAAKiP,iBAAmBja,cAAYga,SAAU,CAC5Dd,CAAC,GACD,IAAIymB,EAAY/pB,EAAe9I,cAAc,IAAM9B,EAAKK,GAAKka,CAAsB,EAC/EtC,EAAM0c,EAAU7yB,cAAc,IAAM9B,EAAKK,EAAE,EAC/CtK,KAAKm+B,gBAAgBl0B,EAAMiY,CAAG,EAC9B0c,EAAU5vB,SACNmJ,EAAIwmB,EAASh+B,OACbsJ,EAAO00B,EAASpqB,SAAS4D,EAAEjM,WAAY,EAAE,GAGzCwnB,EAAO,CAAA,EAGf,GAAI,CAACA,EACD,MAEJ,IAAImL,EAAS50B,EAAKynB,eAAiB1yB,iBAAeiE,OAC7CgH,EAAKynB,aAAe1yB,iBAAe+D,OAAW/D,iBAAe+D,OAAS/D,iBAAegE,MAC1F67B,EAAQ,EAAE50B,EAAKiP,eAAiBja,cAAYma,aAAgBnP,EAAKiP,eAAiBja,cAAYizB,SACxFlzB,iBAAe+D,OAAS87B,EAC1B30B,EAAU,KAAA,EACRD,EAAKiP,eAAiBja,cAAYga,SAOpC/O,EAAU2K,EAAe9I,cAAc,IAAM9B,EAAKK,GAAKka,CAAsB,EACzEva,EAAKiP,kBAAoBja,cAAYga,QAAUha,cAAYizB,YAC3DlyB,KAAK6yB,oBAAoB5oB,EAAMsL,EAAU2C,EAAMmB,oBAAqBnB,EAAM5N,GAAI4N,EAAMiC,OAAQjQ,EAAS2K,CAAc,EAC9G5K,EAAKgC,OAAS/M,iBAAe4zB,UAAc7oB,EAAKgC,OAAS/M,iBAAewX,aACxEzM,EAAKgC,OAAS/M,iBAAe6zB,aAAiB9oB,EAAKgC,OAAS/M,iBAAeiqB,SAC5EnpB,KAAKgzB,iBAAiB/oB,EAAMC,EAASgO,EAAMmB,oBAAqB,CAAA,CAAI,GAGxEpP,EAAKgC,OAAS/M,iBAAe6zB,aAC7B/yB,KAAK+1B,wBAAwBtY,kBAAkBxT,EAAMC,CAAO,EAEhED,EAAK7I,cAAc,CAAE2J,WAAY8zB,GAAQ,CAAA,CAAI,EACzC30B,IACIgY,EAAMhY,EAAQ6B,cAAc,IAAM9B,EAAKK,EAAE,EAC7CtK,KAAK2xB,YAAYzP,EAAKjY,CAAI,KApB9BC,EAAUlK,KAAK8+B,YAAY,CAAC70B,GAAOq0B,EAAWpmB,EAAM5N,GAAI4N,EAAMiC,OAAQjC,EAAMmB,oBAAqB9D,EAAUV,CAAc,EAAE,GACvH5K,EAAKiP,eAAiBja,cAAYma,YAClCslB,EAAgBxkB,OAAOhQ,CAAO,GAqBlCD,EAAKgC,OAAS/M,iBAAeiqB,SAC7BnpB,KAAKiwB,oBAAoB1L,mBAAmBvkB,KAAK2P,aAAc1F,EAAKK,EAAE,GAI5E4N,EAAMmB,qBAAuB9F,EAASxH,cAAc,IAAMknB,EAAqB,GACjF1f,EAASlH,UAAUe,IAAI,0BAA0B,MAIxD,CACDpN,KAAKoM,QAAQC,UAAU2C,OAAOitB,EAAyB,EACvD,IAAK,IAAI8C,EAAM,EAAGA,EAAMX,EAAUz9B,OAAQo+B,CAAG,GAAI,CAC7C,IAEIlqB,EAFAqD,EAAQkmB,EAAU7pB,SAASwqB,EAAI7yB,WAAY,EAAE,GAC7CoyB,EAAYF,EAAU7pB,SAASwqB,EAAI7yB,WAAY,EAAE,GAAGqrB,YAEpDiH,GAAe3pB,EADE8b,EAAW5kB,cAAc,IAAMmM,EAAM5N,GAAKka,CAAsB,GACnDzY,cAAc,IAAMmM,EAAM5N,GAAKsa,CAAoB,EACjFgQ,EAAc50B,KAAKqK,cAAc,MAAO,CACxCuF,UAAWovB,GACX10B,GAAI4N,EAAM5N,GAAKuT,EACfhO,UAAWqI,EAAMiC,OACpB,EACDtF,EAAerK,YAAYoqB,CAAW,EACpB,QAAd0J,GACAE,EAAanyB,UAAU8O,QAAQsjB,GAAyBvH,EAAoB,EAEhFsH,EAAanyB,UAAUe,IAAImsB,EAA+B,EAC1D,IAASthB,EAAI,EAAGA,EAAIC,EAAME,YAAYzX,OAAQsX,CAAC,GAAI,CAC/C,IASQ2b,EATJra,EAAc,KAAA,EACdoa,EAAiB,KAAA,EAcjBtb,GAbCH,EAAMmB,qBAOHua,EAAiB/e,EAAe9I,cAAc,IAAMmM,EAAM5N,GAAKgP,CAA2B,KAG1Fqa,GADApa,EAAcuS,cAAY8H,EAAgB/gB,gBAAc,GAC3BvS,SATjCiZ,EAAcvZ,KAAKuZ,eAEfoa,EAAiB3zB,KAAKuZ,YAAYjZ,QAUzB4X,EAAME,YAAY7D,SAAS0D,EAAE/L,WAAY,EAAE,IACxDwyB,EAAkB7pB,EAAe9I,cAAc,IAAMsM,EAAW/N,EAAE,EACpD,WAAdg0B,GACAI,EAAgBryB,UAAU8O,QAAQsjB,GAAyBvH,EAAoB,EAEnF,IAAS/e,EAAI,EAAGA,EAAIE,EAAWtF,MAAMpS,OAAQwX,CAAC,GAAI,CAI9C,IAHIwmB,EAAWtmB,EAAWtF,MACtB9I,EAAOoO,EAAWtF,MAAMwB,SAAS4D,EAAEjM,WAAY,EAAE,GACjDwnB,EAAO,CAAA,EACJ,GAAU,EAAEzpB,EAAKiP,eAAiBja,cAAYga,UAAU,CAC3Dd,CAAC,GACD,IASY8mB,EATR/0B,EAAU,KAAA,GACTD,EAAKiP,eAAiBja,cAAYma,YAAgBnP,EAAKiP,eAAiBja,cAAYizB,WAOrE,QALZhoB,GADAD,EAAKiP,eAAiBja,cAAYma,WACxBvE,EAGA8e,GAHe5nB,cAAc,IAAM9B,EAAKK,GAAKka,CAAsB,KAMzEya,EAAQ/0B,EAAQ6B,cAAc,IAAM9B,EAAKK,EAAE,EAC/CtK,KAAKm+B,gBAAgBl0B,EAAMg1B,CAAK,EAChC/0B,EAAQ8E,UAGZmJ,EAAIwmB,EAASh+B,OACbsJ,EAAO00B,EAASpqB,SAAS4D,EAAEjM,WAAY,EAAE,GAGzCwnB,EAAO,CAAA,EAGf,GAAI,CAACA,EACD,MAEEzpB,EAAKiP,gBAAkBja,cAAYma,WAAana,cAAYizB,WAM1D,EAAChoB,EADS2K,EAAe9I,cAAc,IAAM9B,EAAKK,GAAKka,CAAsB,IACjEmP,IACZzpB,EAAUypB,EAAe5nB,cAAc,IAAM9B,EAAKK,GAAKka,CAAsB,EACxEva,EAAKgC,OAAS/M,iBAAe4zB,UAAc7oB,EAAKgC,OAAS/M,iBAAewX,aACxEzM,EAAKgC,OAAS/M,iBAAe6zB,aAAiB9oB,EAAKgC,OAAS/M,iBAAeiqB,SAC5EnpB,KAAKgzB,iBAAiB/oB,EAAMC,EAASgO,EAAMmB,oBAAqB,CAAA,CAAK,EAEzErZ,KAAKm0B,oBAAoBlqB,EAAMC,CAAO,GAEtCD,EAAKgC,OAAS/M,iBAAe6zB,aAC7B/yB,KAAK+1B,wBAAwBtY,kBAAkBxT,EAAMC,CAAO,EAE5DA,GACAw0B,EAAgBxkB,OAAOhQ,CAAO,IAjB9BA,EAAUlK,KAAK8+B,YAAY,CAAC70B,GAAOq0B,EAAWpmB,EAAM5N,GAAI4N,EAAMiC,OAAQjC,EAAMmB,oBAAqB9D,CAAQ,EAAE,GAC/GmpB,EAAgBxkB,OAAOhQ,CAAO,GAmBlC,IAAIgY,EAAMrN,EAAe9I,cAAc,IAAM9B,EAAKK,EAAE,EAIhD40B,GAHAj1B,EAAKgC,OAAS/M,iBAAe6zB,cAC7B7Q,EAAMrN,EAAe9I,cAAc,IAAM9B,EAAKK,GAAKsR,CAAgC,GAEvE3R,EAAKynB,aAAe1yB,iBAAeiE,MAASjE,iBAAeiE,MACtEgH,EAAKynB,aAAe1yB,iBAAe+D,OAAU/D,iBAAe+D,OAAS/D,iBAAegE,OACzFiH,EAAK7I,cAAc,CAAE2J,WAAYm0B,GAAY,CAAA,CAAI,EACjDl/B,KAAK2xB,YAAYzP,EAAKjY,CAAI,EACtBA,EAAKgC,OAAS/M,iBAAeiqB,SAC7BnpB,KAAKiwB,oBAAoB1L,mBAAmBvkB,KAAK2P,aAAc1F,EAAKK,EAAE,EAG1E4N,EAAMmB,qBAAuBE,IACY,IAArCoa,EAAeS,mBACuB,IAArCT,EAAeS,mBAA2Bp0B,KAAKq0B,gBAAgBV,EAAgBzb,EAAM5N,EAAE,IACxFtK,KAAKs0B,qBAAqB/a,CAAW,IAMrDvZ,KAAK2kB,cAAgBpP,GACrBvV,KAAKwrB,cAAcjW,EAAU6M,CAAa,GAI5B,YAAtBpiB,KAAK2P,eACL3P,KAAKs0B,qBAAqBt0B,KAAKuZ,WAAW,EAC1CvZ,KAAKuZ,YAAc,OAG3BkO,EAAOvnB,UAAUi/B,mBAAqB,SAAU5K,EAAS1f,EAAgBU,GACrE,IAAIpL,EAAQnK,KACRo/B,EAAep/B,KAAKqK,cAAc,MAAO,CACzCuF,UAAWyvB,GAAqC,KAAOr/B,KAAKs/B,iBAAyCC,IACrGj1B,GAAIiqB,EAAUiL,GACd9f,MAAO,CAAEC,SAAY,IAAK1T,KAAQ,SAAUgxB,aAAc,gBAAiBC,KAAQ,UACtF,EASGlwB,GARJ6H,EAAerK,YAAY40B,CAAY,EACvCvqB,EAAexI,UAAUe,IAAIqyB,EAAyB,EACtDnwB,eAAalC,IAAIgyB,EAAc,QAASp/B,KAAK0/B,oBAAoBlwB,KAAKxP,KAAMu0B,CAAO,EAAGv0B,IAAI,EAC1FsP,eAAalC,IAAIgyB,EAAc,UAAW,SAAU1zB,GAClC,UAAVA,EAAEnL,KACF4J,EAAMu1B,oBAAoBnL,CAAO,GAEtCv0B,IAAI,EACQyY,GAASzY,KAAKkN,KAAMqnB,CAAO,GACtCvnB,EAASkL,MAAMynB,oBACf3/B,KAAK6sB,UAAUtX,EAAUvI,EAASkL,MAAMynB,mBAAoBP,EAAa90B,GAAI,UAAU,GAG/Fmd,EAAOvnB,UAAUw/B,oBAAsB,SAAUp1B,GAE7CtK,KAAK2uB,QAAQ,oBADG,CAAE4F,QAASjqB,EACgB,GAE/Cmd,EAAOvnB,UAAUwvB,aAAe,SAAU0O,EAAW7oB,GAEjD,IADA,IAAIqqB,EAAgB,GACX5+B,EAAI,EAAGA,EAAIo9B,EAAUz9B,OAAQK,CAAC,GAAI,CAmCvC,IAlCA,IAAIkX,EAAQkmB,EAAU7pB,SAASvT,EAAEkL,WAAY,EAAE,GAC3CoyB,EAAYpmB,EAAMqf,YAClBhkB,EAAWvT,KAAKqK,cAAc,MAAO,CACrCuF,UAAWsI,EAAMjN,SACjBX,GAAI4N,EAAM5N,GACb,EAGGuK,GAFJtB,EAASlH,UAAUe,IAAIoiB,EAAsB,EAC7CoQ,EAAcvpB,KAAK9C,CAAQ,EACNvT,KAAKqK,cAAc,MAAO,CAC3CuF,UAAWsI,EAAMjN,SACjBX,GAAI4N,EAAM5N,GAAKka,EAClB,GAGGga,GAFJ3pB,EAAexI,UAAUe,IAAIke,EAAgC,EAC7D/X,EAAS/I,YAAYqK,CAAc,EAChB7U,KAAKqK,cAAc,MAAO,CACzCuF,UAAiC,eAAtB5P,KAAK2P,aAAgC2pB,GAAkCA,GAAiCnb,EAAkBob,GACrIjvB,GAAI4N,EAAM5N,GAAKsa,EAClB,GAcG6K,GAbJ+O,EAAanyB,UAAUe,IAAoB,WAAdkxB,GAAkD,eAAtBt+B,KAAK2P,aAAkC8uB,GAA0BvH,EAAoB,EAC9IriB,EAAerK,YAAYg0B,CAAY,EACb,YAAtBx+B,KAAK2P,eACDilB,EAAc50B,KAAKqK,cAAc,MAAO,CACxCuF,UAAWovB,GACX10B,GAAI4N,EAAM5N,GAAKuT,EACfhO,UAAWqI,EAAMiC,OACpB,EACDtF,EAAerK,YAAYoqB,CAAW,GAEtC1c,EAAM2nB,kBACN7/B,KAAKm/B,mBAAmBjnB,EAAM5N,GAAIuK,EAAgBU,CAAQ,EAE/CvV,KAAK8/B,iBAAiB5nB,EAAME,YAAaF,EAAMqf,YAAarf,EAAM5N,GAAI4N,EAAMiC,OAAQjC,EAAMmB,oBAAqB9D,EAAUV,CAAc,GAElJkrB,GADJ7lB,SAAOuV,EAAU+O,CAAY,EACT,CAAA,GACXvmB,EAAI,EAAGA,EAAIwX,EAAS9uB,OAAQsX,CAAC,GAClC,GAAI8nB,EACA,IAAK,IAAI5nB,EAAI,EAAGA,EAAIsX,EAASlb,SAAS0D,EAAE/L,WAAY,EAAE,GAAGkS,SAASzd,OAAQwX,CAAC,GACvE,GAAI,CAAEsX,EAASlb,SAAS0D,EAAE/L,WAAY,EAAE,GAAGkS,SAAS7J,SAAS4D,EAAEjM,WAAY,EAAE,GAAGG,UAAUC,SAAS,UAAW,EAAG,CAC7GyzB,EAAgB,CAAA,EAChB,MAKZA,GACAxsB,EAASlH,UAAUe,IAAI,cAAc,EAEd,eAAtBpN,KAAK2P,cAAoCuI,EAAMmB,qBAAuB9F,EAASxH,cAAc,IAAMknB,EAAqB,GACzH1f,EAASlH,UAAUe,IAAI,0BAA0B,EAEjD4yB,EAAehgC,KAAKgoB,iBAAiBzT,SAASgB,EAASrJ,WAAY,EAAE,GACrE8zB,IACIA,EAAa7X,cAAgB6X,EAAa7X,aAAaxnB,QACvDX,KAAKigC,iBAAiB,eAAgBD,EAAczsB,CAAQ,EAE5DysB,EAAaE,iBAAkBF,EAAaE,eAAev/B,QAC3DX,KAAKigC,iBAAiB,iBAAkBD,EAAczsB,CAAQ,EAO1E,OAHIvT,KAAKgoB,iBAAiBzT,SAASgB,EAASrJ,WAAY,EAAE,IACtD,OAAOlM,KAAKgoB,iBAAiBzT,SAASgB,EAASrJ,WAAY,EAAE,GAE1D0zB,GAEXnY,EAAOvnB,UAAU+/B,iBAAmB,SAAU1/B,EAAKy/B,EAAczsB,GAG1C,CAAC,IADHysB,EAAaz/B,GAAKkyB,QAAQlf,EAASjJ,EAAE,IAEtC,iBAAR/J,EACAgT,EAASlH,UAAUe,IAAI,UAAU,EAGjCmG,EAASlH,UAAUe,IAAI,YAAY,IAI/Cqa,EAAOvnB,UAAUotB,iBAAmB,WAChC,IAAK,IAAInV,EAAI,EAAGA,EAAInY,KAAKkN,KAAKvM,OAAQwX,CAAC,GAEnC,IADA,IAAIimB,EAAYp+B,KAAKkN,KAAKqH,SAAS4D,EAAEjM,WAAY,EAAE,GAAGsJ,OAC7C8C,EAAI,EAAGA,EAAI8lB,EAAUz9B,OAAQ2X,CAAC,GAGnC,IAFA,IAAI6nB,EAAiB/B,EAAU7pB,SAAS+D,EAAEpM,WAAY,EAAE,GAAGkM,YACvDkmB,EAAYF,EAAU7pB,SAAS+D,EAAEpM,WAAY,EAAE,GAAGqrB,YAC7Cv2B,EAAI,EAAGA,EAAIm/B,EAAex/B,OAAQK,CAAC,GAExC,IADA,IAAI+R,EAAQotB,EAAe5rB,SAASvT,EAAEkL,WAAY,EAAE,GAAG6G,MAC9CkF,EAAI,EAAGA,EAAIlF,EAAMpS,OAAQsX,CAAC,GAAI,CACnC,IAAImoB,EAAartB,EAAMwB,SAAS0D,EAAE/L,WAAY,EAAE,GAqB5CgzB,GApBCkB,EAAW1O,cAA6C,IAA5B0O,EAAW1O,cACxC0O,EAAWh/B,cAAc,CACrBswB,aAAe1yB,iBAAegE,MAAQhE,iBAAe+D,OAAS/D,iBAAeiE,OAC9E,CAAA,CAAI,EAEc,gBAApBm9B,EAAWn0B,MAA4Bm0B,EAAW1O,eAAiB1yB,iBAAegE,MACnFo9B,EAAWh/B,cAAc,CAAEswB,aAAc1yB,iBAAegE,OAAS,CAAA,CAAI,EAE3C,aAApBo9B,EAAWn0B,MAA2C,aAApBm0B,EAAWn0B,MAClDm0B,EAAW1O,eAAiB1yB,iBAAe+D,QAGvB,WAAdu7B,GAA2C,EAAfvrB,EAAMpS,QAAgC,QAAd29B,GAAiD,EAAxB6B,EAAex/B,SAC/Fy/B,EAAW1O,aAAe1yB,iBAAeiE,QAGzCo9B,GAAUA,EADID,EAAW1O,cAAgB1yB,iBAAegE,MAAQhE,iBAAe+D,UACjD/D,iBAAe+D,OAC7Cq9B,EAAWh/B,cAAc,CAAEswB,aAAc2O,GAAW,CAAA,CAAI,GAP5DD,EAAWh/B,cAAc,CAAEswB,aAAc1yB,iBAAe+D,QAAU,CAAA,CAAI,EAU1Dq9B,EAAW1O,aAAe1yB,iBAAeiE,MAASjE,iBAAeiE,MAC5Em9B,EAAW1O,aAAe1yB,iBAAe+D,OAAU/D,iBAAe+D,OAAS/D,iBAAegE,OAC/Fo9B,EAAWh/B,cAAc,CAAE2J,WAAYm0B,GAAY,CAAA,CAAI,IAM3EzX,EAAOvnB,UAAU4/B,iBAAmB,SAAUK,EAAgB7B,EAAW/J,EAASK,EAAavB,EAAW9d,EAAUV,GAEhH,IADA,IAAIyrB,EAAqB,GAChBt/B,EAAI,EAAGA,EAAIm/B,EAAex/B,OAAQK,CAAC,GAAI,CAC5C,IAAIqX,EAAa8nB,EAAe5rB,SAASvT,EAAEkL,WAAY,EAAE,GACrD+lB,EAAgBjyB,KAAKqK,cAAc,MAAO,CAC1CuF,UAAWyI,EAAWpN,SACtBX,GAAI+N,EAAW/N,GAClB,EAKGmlB,GAJJwC,EAAc5lB,UAAUe,IAAImzB,EAA2B,EACvDtO,EAAc5lB,UAAUe,IAAoB,WAAdkxB,GAAkD,eAAtBt+B,KAAK2P,aAC3D8uB,GAA0BvH,EAAoB,EAClDoJ,EAAmBjqB,KAAK4b,CAAa,EACtBjyB,KAAK8+B,YAAYzmB,EAAWtF,MAAOurB,EAAW/J,EAASK,EAAavB,EAAW9d,EAAUV,CAAc,GAEtH,GADAqF,SAAOuV,EAAUwC,CAAa,EACX,QAAdqM,GAA+B,IAANt9B,EAC1B,MAGR,OAAOs/B,GAEX7Y,EAAOvnB,UAAUsgC,iBAAmB,SAAUv2B,EAAMC,GAChD,OAAQD,EAAKgC,MACT,IAAK,SACDjM,KAAK01B,mBAAmB1rB,aAAaC,EAAMC,CAAO,EAClD,MACJ,IAAK,WACDlK,KAAKmZ,qBAAqBxG,eAAe1I,EAAMC,CAAO,EACtD,MACJ,IAAK,cACDlK,KAAK21B,wBAAwBpf,kBAAkBtM,EAAMC,CAAO,EAC5D,MACJ,IAAK,WACDlK,KAAK41B,qBAAqBroB,eAAetD,EAAMC,CAAO,EACtD,MACJ,IAAK,cACDlK,KAAK61B,wBAAwB1nB,kBAAkBlE,EAAMC,CAAO,EAC5D,MACJ,IAAK,WACDlK,KAAK81B,qBAAqBplB,eAAezG,EAAMC,CAAO,EACtD,MACJ,IAAK,WACDlK,KAAKy5B,sBAAsBxvB,EAAMC,CAAO,EACxC,MACJ,IAAK,cACDlK,KAAK+1B,wBAAwBza,kBAAkBrR,EAAMC,CAAO,EAC5D,MACJ,IAAK,UACDlK,KAAKiwB,oBAAoBxR,cAAcxU,EAAMC,CAAO,IAIhEud,EAAOvnB,UAAU4+B,YAAc,SAAUH,EAAUL,EAAW/J,EAASK,EAAavB,EAAW9d,EAAUV,GAGrG,IAFA,IACI4rB,EAAe,GACVz/B,EAAI,EAAGA,EAAI29B,EAASh+B,OAAQK,CAAC,GAAI,CAItC,IAHA,IAAIiJ,EAAO00B,EAASpqB,SAASvT,EAAEkL,WAAY,EAAE,GAEzCwnB,EAAO,CAAA,EACJA,IACsB,eAAtB1zB,KAAK2P,cAAkC,EAAE1F,EAAKiP,gBAAkBja,cAAYma,WAAana,cAAYizB,YAC5E,YAAtBlyB,KAAK2P,cAA+B,EAAE1F,EAAKiP,eAAiBja,cAAYga,WAC9EjY,EAAAA,EACQ29B,EAASh+B,OACbsJ,EAAO00B,EAASpqB,SAASvT,EAAEkL,WAAY,EAAE,GAGzCwnB,EAAO,CAAA,EAGf,GAAI,CAACA,EACD,MAEJ,IAAIxpB,EAAUlK,KAAKqK,cAAc,MAAO,CACpCuF,UAAW3F,EAAKgB,SAChBX,GAAIL,EAAKK,GAAKka,EACjB,EAOD,IANCiZ,EAAKvzB,EAAQmC,WAAWe,IAAI1L,MAAM+7B,EAAI,CAACxK,IAAuB5e,OAAQpK,EAAKe,SAAW,CAAC01B,IAA0B,GAAI,EAElHz2B,EAAKsS,uBAAyB/C,GAAiBvP,EAAKsS,qBAAqB,IACzErS,EAAQmC,UAAUe,IAAIwN,EAA+B,EACrD5a,KAAK4Z,YAAYvD,KAAK,CAAE/L,GAAIJ,EAAQI,GAAIyP,KAAM9P,EAAKsS,sBAAuB,GAE1EtS,EAAKgC,OAAS/M,iBAAe6zB,YAC7B,IAAK,IAAI4N,EAAM,EAAGA,EAAM12B,EAAKwR,oBAAoB1I,MAAMpS,OAAQggC,CAAG,GAC1D3gC,KAAKkoB,eAAe3T,SAASgB,EAASrJ,WAAY,EAAE,IACpDjC,EAAKwR,oBAAoB1I,MAAMwB,SAASosB,EAAIz0B,WAAY,EAAE,GAAGygB,QAC7D3sB,KAAK6sB,UAAUtX,EAAUtL,EAAKwR,oBAAoB1I,MAAMwB,SAASosB,EAAIz0B,WAAY,EAAE,GAAGygB,OAAQ1iB,EAAKK,GAAMsR,EAAmC+kB,EAAM,MAAM,EAIhK12B,EAAK0iB,SACD1iB,EAAKgC,OAAS/M,iBAAeiqB,QAC7BnpB,KAAK6sB,UAAUtX,EAAUtL,EAAK0iB,OAAS1iB,EAAKK,GAAK,eAAiB,MAAM,EAGxEtK,KAAK6sB,UAAUtX,EAAUtL,EAAK0iB,OAAQ1iB,EAAKK,GAAI,MAAM,GAG7D,IAAIu0B,EAAO50B,EAAKc,WAcZi1B,GAbE/1B,EAAKgC,OAAS/M,iBAAeiqB,UACL,eAAtBnpB,KAAK2P,eACLkvB,EAAS50B,EAAKynB,eAAiB1yB,iBAAeiE,OAAWgH,EAAKynB,aAAe1yB,iBAAe+D,QACvFkH,EAAKiP,iBAAmBja,cAAYizB,SAAalzB,iBAAe+D,OAAS/D,iBAAegE,MAC7FiH,EAAK7I,cAAc,CAAE2J,WAAY8zB,GAAQ,CAAA,CAAI,GAE7CA,EAAO7/B,iBAAeiE,MACtBiH,EAAQmC,UAAUe,IAAIssB,GAA6BH,EAA+B,EAGlFrvB,EAAQmC,UAAUe,IAAKyxB,EAAO7/B,iBAAe+D,OAAU42B,GAA+BC,EAA2B,GAGtG55B,KAAKgoB,iBAAiBzT,SAASgB,EAASrJ,WAAY,EAAE,IAmBzE,GAlBI8zB,GAAgBA,EAAaY,aAAeZ,EAAaY,YAAYjgC,QAEnD,CAAC,IADHq/B,EAAaY,YAAYnO,QAAQxoB,EAAKK,EAAE,GAEpDJ,EAAQmC,UAAUe,IAAI,UAAU,EAGxCpN,KAAKwgC,iBAAiBv2B,EAAMC,CAAO,EACR,eAAtBlK,KAAK2P,cAAoC1F,EAAKiP,iBAAmBja,cAAYizB,UAAcjoB,EAAKiP,kBAAoBja,cAAYga,QAAUha,cAAYizB,UASvJuO,EAAapqB,KAAKnM,CAAO,GARzBlK,KAAK6yB,oBAAoB5oB,EAAMsL,EAAU8d,EAAWkB,EAASK,EAAa1qB,EAAS2K,CAAc,EAC5F5K,EAAKgC,OAAS/M,iBAAe4zB,UAAc7oB,EAAKgC,OAAS/M,iBAAewX,aACxEzM,EAAKgC,OAAS/M,iBAAe6zB,aAAiB9oB,EAAKgC,OAAS/M,iBAAeiqB,SAC5EnpB,KAAKgzB,iBAAiB/oB,EAAMC,EAASmpB,EAAW,CAAA,CAAI,GAOzC,WAAdiL,GAAkC,IAANt9B,EAC7B,MAGR,OAAOy/B,GAEXhZ,EAAOvnB,UAAUiqB,uBAAyB,WACtC,IACQjD,EAQAiG,EATJntB,KAAK6gC,mBAEL7gC,KAAK8gC,cAAc,CADf5Z,EAAe,mBACc,EACjClnB,KAAK+gC,cAAgB/gC,KAAKqK,cAAc,MAAO,CAC3CuF,UAAWoxB,GACX12B,GAAItK,KAAKoM,QAAQ9B,GAAK22B,GACzB,EACG9Z,EAAmBzP,GAAoB1X,KAAK6gC,gBAAgB,EAChE3mB,SAAOiN,EAAiB,GAAInnB,KAAMknB,EAAc,mBAAoBlnB,KAAKonB,gBAAgB,EAAGpnB,KAAK+gC,aAAa,GAC1G5T,EAASntB,KAAKgZ,OAAO5M,SACDL,cAAc,YAAY,EACvCm1B,MAAMlhC,KAAK+gC,aAAa,EACnC5T,EAAO/M,MAAM+N,YAAYE,GAA2CruB,KAAK+gC,cAAc1f,YAAc,IAAI,EACzGrhB,KAAKmhC,yBAGb1Z,EAAOvnB,UAAUu5B,sBAAwB,SAAUxvB,EAAMsR,GACrD,IAAIrR,EAAUlK,KAAKqK,cAAc,MAAO,CACpCuF,UAAW3F,EAAKgB,SAAYm2B,GAA4BjjB,EAAkBlU,EAAKgB,SAAYm2B,GAC3F92B,GAAIL,EAAKK,GACToV,MAAO,CAAEC,SAAY,MACxB,EACG1V,EAAKe,WACLd,EAAQmC,UAAUe,IAAIszB,EAAsB,EAC5Cx2B,EAAQ0B,aAAa,WAAY,EAAE,GAEvC2P,EAAY/Q,YAAYN,CAAO,EAC/BlK,KAAKqhC,mBAAmBp3B,EAAMC,CAAO,GAEzCud,EAAOvnB,UAAUmhC,mBAAqB,SAAUp3B,EAAMsR,GAClD,IAAI2L,EAAe,SAAWjd,EAAKK,GAAK,eAEpC6c,GADJnnB,KAAK8gC,cAAc,CAAC5Z,EAAa,EACVxP,GAAoBzN,EAAK0H,YAAY,GAC5DuI,SAAOiN,EAAiB,CAAEpc,WAAY/L,iBAAeiL,EAAKc,aAAe/K,KAAMknB,EAAejd,EAAKK,GAAK,eAAiBtK,KAAKonB,gBAAgB,EAAG7L,CAAW,EAC5Jvb,KAAKmhC,wBAET1Z,EAAOvnB,UAAUgtB,QAAU,SAAUoU,EAAMr1B,EAAMs1B,GAG7C,IAFA,IAAIhhC,EAAe,QAAT0L,EAAiBmhB,GAA4B,UAATnhB,EVrwFhC,SUswFD,eAATA,EAAwBu1B,GVlwFf,QUmwFJxgC,EAAI,EAAGA,EAAIsgC,EAAK3gC,OAAQK,CAAC,GAAI,CAClC,IAEQygC,EAFJC,EAAWJ,EAAK/sB,SAASvT,EAAEkL,WAAY,EAAE,GAQ7C,OAPKw1B,EAASp3B,KACNm3B,EAAa,KAAA,EACJ,SAATx1B,IACAw1B,EAAazhC,KAAK2hC,cAAcD,CAAQ,GAE5CA,EAAStgC,cAAc,CAAEkJ,GAAIm3B,GAA0BF,EAAShhC,EAAOP,KAAK+nB,OAAS,IAAK,CAAA,CAAI,GAE1F9b,GACJ,IAAK,MACDy1B,EAAStgC,cAAc,CAAEoU,OAAQxV,KAAKktB,QAAQwU,EAASlsB,OAAQ,QAASksB,EAASp3B,EAAE,GAAK,CAAA,CAAI,EAC5F,MACJ,IAAK,QACDo3B,EAAStgC,cAAc,CAAEgX,YAAapY,KAAKktB,QAAQwU,EAAStpB,YAAa,aAAcspB,EAASp3B,EAAE,GAAK,CAAA,CAAI,EAC3G,MACJ,IAAK,aACDo3B,EAAStgC,cAAc,CAAE2R,MAAO/S,KAAKktB,QAAQwU,EAAS3uB,MAAO,OAAQ2uB,EAASp3B,EAAE,GAAK,CAAA,CAAI,GAMrG,OAAOg3B,GAEX7Z,EAAOvnB,UAAUyhC,cAAgB,SAAUC,GACvC,IAAIt3B,EAAK,GAmBT,OAlBIs3B,EAASn3B,eAAec,eAAejB,GACvCA,EAAKs3B,EAASn3B,eAAec,eAAejB,GAEvCs3B,EAASn0B,iBAAiBlC,eAAejB,GAC9CA,EAAKs3B,EAASn0B,iBAAiBlC,eAAejB,GAEzCs3B,EAASxzB,oBAAoB7C,eAAejB,GACjDA,EAAKs3B,EAASxzB,oBAAoB7C,eAAejB,GAE5Cs3B,EAASjxB,iBAAiBpF,eAAejB,GAC9CA,EAAKs3B,EAASjxB,iBAAiBpF,eAAejB,GAEzCs3B,EAAShvB,iBAAiBrH,eAAejB,GAC9CA,EAAKs3B,EAAShvB,iBAAiBrH,eAAejB,GAEzCs3B,EAASprB,oBAAoBjL,eAAejB,KACjDA,EAAKs3B,EAASprB,oBAAoBjL,eAAejB,IAE9CA,GAEXmd,EAAOvnB,UAAU0Y,qBAAuB,SAAUC,GAC9C7Y,KAAKgZ,OAAO5X,cAAcyX,CAAU,EAChC7Y,KAAK+pB,sBACL/pB,KAAK+pB,qBAAqB8X,oBAAoBhpB,CAAU,EAExD7Y,KAAKiqB,uBACLjqB,KAAKiqB,sBAAsB4X,oBAAoBhpB,CAAU,EAE7D,IAAK,IAAI7X,EAAI,EAAGA,EAAIhB,KAAKkN,KAAKvM,OAAQK,CAAC,GAAI,CACvC,IAAIgX,EAAMhY,KAAKkN,KAAKqH,SAASvT,EAAEkL,WAAY,EAAE,GACzCoJ,EAAatV,KAAKgZ,OAAOjG,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGf,QAC/D,GAAImK,EAAWvJ,cAAc,IAAMyjB,EAAsB,EACrD,IAAK,IAAIgO,EAAK,EAAGC,EAAKzlB,EAAIxC,OAAQgoB,EAAKC,EAAG98B,OAAQ68B,CAAE,GAAI,CACpD,IAAItlB,EAAQulB,EAAGD,GACXrqB,EAAkB,KAAA,EAClBC,EAAW,KAAA,EACXpT,KAAK2P,eAAiB7Q,eAAama,QACnC9F,EAAkB+E,EAAMwe,YACpBphB,EAAWvJ,cAAc,IAAMmM,EAAM5N,GAAKgmB,EAAwB0J,EAAqB,EAAI,MAK/F5mB,GAFAD,EAAkB+E,EAAMmB,oBACpB/D,EAAWvJ,cAAc,IAAMmM,EAAM5N,GAAKgP,CAA2B,EAAI,MAChDnN,eAAagH,EAAiBN,gBAAc,EAAI7S,KAAKuZ,eAE9EyB,GAAkB5H,EAAS9S,OAAQuY,CAAU,EAC7CzF,EAAShS,cAAcyX,CAAU,GAGzC,IAAK,IAAIglB,EAAK,EAAGE,EAAK7lB,EAAME,YAAaylB,EAAKE,EAAGp9B,OAAQk9B,CAAE,GAEvD,IADA,IACSG,EAAK,EAAGC,EADAF,EAAGF,GACa9qB,MAAOirB,EAAKC,EAAGt9B,OAAQq9B,CAAE,GAAI,CAC1D,IAAI/zB,EAAOg0B,EAAGD,GACV9b,EAAM,KAiBV,GAhBIliB,KAAK2P,eAAiB7Q,eAAama,QAC/BhP,EAAKiP,eAAiBja,cAAYga,UAClCiJ,EAAM/O,EAAkBnT,KAAKmZ,qBAAqBhE,kBAAkBhC,EAAiBlJ,EAAKK,EAAE,EAAIL,EAAKgC,OAAS/M,iBAAe6zB,YAAczd,EAAWvJ,cAAc,IAAM9B,EAAKK,GAAKsR,CAAgC,EAAItG,EAAWvJ,cAAc,IAAM9B,EAAKK,EAAE,IAKlQ4X,EAAOjY,EAAKiP,eAAiBja,cAAYma,WAAc9D,EAAWvJ,cAAc,IAAM9B,EAAKK,EAAE,EAAI,QAG7F4X,EAAM9O,EAAS9S,OAAOyL,cAAc,IAAM9B,EAAKK,EAAE,EAC/B,aAAdL,EAAKgC,MACLjM,KAAKgzB,iBAAiB/oB,EAAMmJ,EAAS9S,OAAQ4X,EAAMmB,oBAAqB,CAAA,CAAI,GAIpF6I,EAAK,CACL,IAAIvJ,EAAa3Y,KAAK8hC,kBAAkB73B,CAAI,EAC5C,GAAmB,aAAf0O,EACA,GAAmB,cAAfA,GAAoD,YAAtB3Y,KAAK2P,aACnC,IAAK,IAAIoyB,EAAM,EAAGA,EAAM93B,EAAKwR,oBAAoB1I,MAAMpS,OAAQohC,CAAG,GAE9DnpB,GADasJ,EAAInW,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmCmmB,CAAG,EACxD,MAAOlpB,CAAU,OAGjD,GAAmB,cAAfF,GAAoD,eAAtB3Y,KAAK2P,aAA+B,CACvEiJ,GAAqBsJ,EAAK,eAAgBrJ,CAAU,EACpD,IAAK,IAAImpB,EAAM,EAAGA,EAAM/3B,EAAKwR,oBAAoB1I,MAAMpS,OAAQqhC,CAAG,GAE9DppB,GADa1B,SAASnL,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmComB,CAAG,EAC7D,MAAOnpB,CAAU,OAIlDD,GAAqBsJ,EAAKvJ,EAAYE,CAAU,OAG9ClF,oBAAkBkF,EAAWjO,SAAS,GAC5CsX,EAAI7V,UAAUE,OAAOod,GAAmB9Q,EAAWjO,SAAS,OAS5F6c,EAAOvnB,UAAU+hC,mBAAqB,SAAU1N,EAASphB,EAAiBmC,GACtE,IAAI4sB,EAAc3N,EAAU/P,EACxB9G,EAAevK,EAAkBnT,KAAKmZ,qBAAqBhE,kBAAkBhC,EAAiB+uB,CAAW,EAAI5sB,EAAWvJ,cAAc,IAAMm2B,CAAW,EACvJxkB,IACAA,EAAarR,UAAU2C,OAAOywB,EAAyB,EACnDL,EAAe1hB,EAAa3R,cAAc,IAAMwoB,EAAUiL,EAAqB,EACnFxwB,SAAOowB,CAAY,IAG3B3X,EAAOvnB,UAAUy9B,gBAAkB,SAAUzwB,GACzC,IAAK,IAAIlM,EAAI,EAAGA,EAAIkM,EAAKvM,OAAQK,CAAC,GAG9B,IAFA,IAAIgX,EAAM9K,EAAKqH,SAASvT,EAAEkL,WAAY,EAAE,GACpCoJ,EAAatV,KAAKgZ,OAAOjG,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGf,QACtDqyB,EAAK,EAAGC,EAAKzlB,EAAIxC,OAAQgoB,EAAKC,EAAG98B,OAAQ68B,CAAE,GAAI,CACpD,IAAItlB,EAAQulB,EAAGD,GACXrqB,EAAkB,KAAA,EAClBC,EAAW,KAAA,EACXpT,KAAK2P,eAAiB7Q,eAAama,SACnC9F,EAAkB+E,EAAMwe,YACpBphB,EAAWvJ,cAAc,IAAMmM,EAAM5N,GAAKgmB,EAAwB0J,EAAqB,EAAI,KAC3F9hB,EAAM2nB,kBACN7/B,KAAKiiC,mBAAmB/pB,EAAM5N,GAAI6I,EAAiBmC,CAAU,GAMjElC,GAFAD,EAAkB+E,EAAMmB,oBACpB/D,EAAWvJ,cAAc,IAAMmM,EAAM5N,GAAKgP,CAA2B,EAAI,MAChDnN,eAAagH,EAAiBN,gBAAc,EAAI7S,KAAKuZ,YAEtF,IAAK,IAAIskB,EAAK,EAAGE,EAAK7lB,EAAME,YAAaylB,EAAKE,EAAGp9B,OAAQk9B,CAAE,GAEvD,IADA,IACSG,EAAK,EAAGC,EADAF,EAAGF,GACa9qB,MAAOirB,EAAKC,EAAGt9B,OAAQq9B,CAAE,GAAI,CAC1D,IAAI/zB,EAAOg0B,EAAGD,GACV9b,EAAM,KAAA,EACNliB,KAAK2P,eAAiB7Q,eAAama,QAC/BhP,EAAKiP,eAAiBja,cAAYga,UAClCiJ,EAAM/O,EAAkBnT,KAAKmZ,qBAAqBhE,kBAAkBhC,EAAiBlJ,EAAKK,EAAE,EACxFgL,EAAWvJ,cAAc,IAAM9B,EAAKK,EAAE,EACtCL,EAAKgC,OAAS/M,iBAAe6zB,cAC7B7Q,EAAM/O,EAAkBnT,KAAKmZ,qBAAqBhE,kBAAkBhC,EAAiBlJ,EAAKK,GACtFsR,CAAgC,EAAItG,EAAWvJ,cAAc,IAAM9B,EAAKK,GAAKsR,CAAgC,GAEjH3R,EAAKgC,OAAS/M,iBAAeiqB,WAC7BjH,EAAM5M,EAAWvJ,cAAc,IAAM9B,EAAKK,GAAKka,CAAsB,IAM7EtC,EAAOjY,EAAKiP,eAAiBja,cAAYma,WACrC9D,EAAWvJ,cAAc,IAAM9B,EAAKK,EAAE,EAAI,KAKzC4X,GAHDA,EADAjY,EAAKgC,OAAS/M,iBAAeiqB,QACtBlf,EAAKiP,eAAiBja,cAAYma,WAAc9D,EAAWvJ,cAAc,IAAM9B,EAAKK,GAAKka,CAAsB,EAAI,KAGzHtC,KACK9O,EAAWA,EAAS9S,OAAOyL,cAAc,IAAM9B,EAAKK,EAAE,EAAI,OAGpE4X,GACAliB,KAAKm+B,gBAAgBl0B,EAAMiY,CAAG,EAIrCliB,KAAK2P,eAAiB7Q,eAAama,SAAY9F,EAChDnT,KAAKmZ,qBAAqBlE,uBAAuB9B,CAAe,EAE1DnT,KAAK2P,eAAiB7Q,eAAasa,YAAelB,EAAMmB,qBAAuBlG,GACrFnT,KAAKs0B,qBAAqBlhB,CAAQ,EAI1CpT,KAAKuZ,cACLvZ,KAAKs0B,qBAAqBt0B,KAAKuZ,WAAW,EAC1CvZ,KAAKuZ,YAAc,OAG3BkO,EAAOvnB,UAAUi+B,gBAAkB,SAAUl0B,EAAMiY,GAC/C,IAAIvJ,EAAa3Y,KAAK8hC,kBAAkB73B,CAAI,EAC5C,GAAmB,gBAAf0O,EACA3Y,KAAK61B,wBAAwBrlB,wBAAwB0R,CAAG,OAEvD,GAAmB,cAAfvJ,EAA4B,CACjC,GAA0B,YAAtB3Y,KAAK2P,aACL,IAAK,IAAI3O,EAAI,EAAGA,EAAIiJ,EAAKwR,oBAAoB1I,MAAMpS,OAAQK,CAAC,GAAI,CAC5D,IAAIkV,EAASgM,EAAInW,cAAc,IAAM9B,EAAKK,GAAKsR,EAAmC5a,CAAC,EAC/EkV,GACAwC,GAAexC,EAAQ,KAAK,OAKpClW,KAAK+1B,wBAAwBzX,gBAAgBrU,CAAI,EAYrD,IAVA,IASIk4B,EAASniC,KACJgB,EAAI,EAAGA,EAAIiJ,EAAKwR,oBAAoB1I,MAAMpS,OAAQK,CAAC,GACxDohC,CAXU,SAAUphC,GACpB,IACQqhC,EADJp4B,EAAKwR,oBAAoB1I,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGqQ,wBACvD8lB,EAAkBp4B,EAAKK,GAAKsR,EAAmC5a,EAErD,CAAC,KADX0Q,EAAQ6F,EAAS4qB,EAAOvoB,YAAa,SAAUlO,GAAK,OAAOA,EAAEpB,KAAO+3B,EAAkB,KAEtFF,EAAOvoB,YAAYoW,OAAOte,EAAO,CAAC,GAMlC1Q,CAAC,OAGZ,GAAmB,YAAf2X,EACL,GAAIuJ,EAAI9R,QAAQ,2BAA2B,EAAG,CAC1CsI,GAAewJ,EAAK,cAAc,GAElC8E,EADsBtnB,MAAMQ,UAAUgU,MAAM3S,KAAK2V,SAAS/C,iBAAiB,IAAMlK,EAAKK,GAAK,eAAe,CAAC,GAC3F+J,OAAO3U,MAAMQ,UAAUgU,MAAM3S,KAAK2V,SAAS/C,iBAAiB,IAAMlK,EAAKK,GAAK,QAAQ,CAAC,CAAC,EACtG,IAAStJ,EAAI,EAAGA,EAAIgmB,EAAgBrmB,OAAQK,CAAC,GACzCgmB,EAAgBzS,SAASvT,EAAEkL,WAAY,EAAE,GAAG8C,UAG5CszB,EADkBprB,SAASnL,cAAc,IAAM9B,EAAKK,GAAK,cAAc,IAEvEg4B,EAAgBtzB,SAFpB,IAIImQ,EAAiBjI,SAASnL,cAAc,IAAM9B,EAAKK,GAAK,iBAAiB,EACzE6U,GACAA,EAAenQ,aAGlB,CACD,IACIszB,EADApjB,EAAagD,EAAI/N,iBAAiB,wBAAwB,GAE1DmuB,EADkBpgB,EAAInT,cAAchD,cAAc,IAAM9B,EAAKK,GAAK,cAAc,IAEhFg4B,EAAgBtzB,SAEpB,IAAShO,EAAI,EAAGA,EAAIke,EAAWve,OAAQK,CAAC,GACpCke,EAAW3K,SAASvT,EAAEkL,WAAY,EAAE,GAAG8C,SAG3C,IADA,IAAIgY,EAAkB9P,SAAS/C,iBAAiB,IAAMlK,EAAKK,GAAK,eAAe,EACtEtJ,EAAI,EAAGA,EAAIgmB,EAAgBrmB,OAAQK,CAAC,GACzCgmB,EAAgBzS,SAASvT,EAAEkL,WAAY,EAAE,GAAG8C,aAIhC,aAAf2J,GACLD,GAAewJ,EAAKvJ,CAAU,EAE9B1O,EAAKsS,uBAES,CAAC,KADX7K,EAAQ6F,EAASvX,KAAK4Z,YAAa,SAAUlO,GAAK,OAAOA,EAAEpB,KAAOL,EAAKK,GAAKka,EAAyB,IAErGxkB,KAAK4Z,YAAYoW,OAAOte,EAAO,CAAC,EAGtB,gBAAdzH,EAAKgC,MACLjM,KAAK+1B,wBAAwBzX,gBAAgBrU,CAAI,GAUzDwd,EAAOvnB,UAAU4hC,kBAAoB,SAAU73B,GAC3C,OAAQA,EAAKgC,MACT,IAAK,SACD,MAAO,MACX,IAAK,WACD,MAAO,eACX,IAAK,cACD,MAAO,YACX,IAAK,WACD,MAAO,WACX,IAAK,cACD,MAAO,cACX,IAAK,WACD,MAAO,WACX,IAAK,cACD,MAAO,YACX,IAAK,UACD,MAAO,UACX,QACI,MAAO,aAGnBwb,EAAOvnB,UAAUqiC,oBAAsB,WACnCviC,KAAKmxB,gBACLnxB,KAAK46B,sBAAsB56B,KAAK2kB,WAAW,EAI3C,IAHA,IAAI3M,EAAMhY,KAAKkN,KAAKlN,KAAK2kB,aACrBvC,EAAgBpiB,KAAKgZ,OAAO5M,QAAQL,cAAc,IAAM/L,KAAKkN,KAAKlN,KAAK2kB,aAAara,GAAKsa,CAAoB,EAC7G+L,EAAavO,EAAchS,QAAQ,IAAMwgB,EAAqB,EACzD3Y,EAAI,EAAIA,EAAID,EAAIxC,OAAO7U,OAASsX,CAAC,GACtCjY,KAAKq4B,mBAAmBr4B,KAAK2kB,YAAa3M,EAAKC,EAAG0Y,EAAYvO,EAAe,CAAA,EAAM,CAAA,CAAI,EACvFpiB,KAAKs4B,mBAAmBt4B,KAAK2kB,YAAa3M,EAAKC,EAAG0Y,EAAYvO,EAAe,CAAA,EAAM,CAAA,CAAI,GAQ/FqF,EAAOvnB,UAAU2uB,cAAgB,WAC7B7uB,KAAK0qB,iBAQTjD,EAAOvnB,UAAUsiC,UAAY,SAAUC,GACnC,IAAI/wB,EAAQ6F,EAASvX,KAAKkN,KAAM,SAAUxB,GAAK,OAAOA,EAAEpB,KAAOm4B,EAAQ,EACvEziC,KAAKoB,cAAc,CAAEujB,YAAajT,EAAO,GAS7C+V,EAAOvnB,UAAUwiC,QAAU,SAAUD,EAAOlT,GAExCvvB,KAAK2iC,YAAYF,EAAO,CAAA,EADOlT,EAAV,KAAA,IAAjBA,EAA0C,CAAA,EACfA,CAAY,GAS/C9H,EAAOvnB,UAAU0iC,QAAU,SAAUH,EAAOlT,GAExCvvB,KAAK2iC,YAAYF,EAAO,CAAA,EADOlT,EAAV,KAAA,IAAjBA,EAA0C,CAAA,EAChBA,CAAY,GAE9C9H,EAAOvnB,UAAUyiC,YAAc,SAAUF,EAAOzgC,EAAOutB,GACnD,IAAI7d,EAAQ6F,EAASvX,KAAKkN,KAAM,SAAUxB,GAAK,OAAOA,EAAEpB,KAAOm4B,EAAQ,EACvE,GAAc,CAAC,IAAX/wB,IAGJ1R,KAAKgZ,OAAO4pB,QAAQlxB,EAAO1P,CAAK,EAC5ButB,GAAc,CAGd,IAFA,IAAIsT,EACA1V,EAASntB,KAAKgZ,OAAO5M,QAChBpL,EAAI,EAAGA,EAAIhB,KAAKwpB,eAAe7oB,OAAQK,CAAC,GAC7C,IAAK,IAAIiX,EAAI,EAAGA,EAAIjY,KAAKwpB,eAAejV,SAASvT,EAAEkL,WAAY,EAAE,GAAGgB,KAAKvM,OAAQsX,CAAC,GAC1EwqB,IAAUziC,KAAKwpB,eAAejV,SAASvT,EAAEkL,WAAY,EAAE,GAAGgB,KAAKqH,SAAS0D,EAAE/L,WAAY,EAAE,GAAG5B,KAC3Fu4B,EAAkB7iC,KAAKwpB,eAAejV,SAASvT,EAAEkL,WAAY,EAAE,IAI3E,GAAI22B,EAAiB,CAcjB,IAbA,IAAIC,EAAc,CAAA,EAYdC,EAAS/iC,KACJgB,EAAI,EAAGA,EAAI6hC,EAAgB31B,KAAKvM,OAAQK,CAAC,GAC9CgiC,CAbU,SAAUhiC,GACpB,IAAIiiC,EAAU1rB,EAASwrB,EAAO71B,KAAM,SAAUxB,GAC1C,OAAOA,EAAEpB,KAAOu4B,EAAgB31B,KAAKqH,SAASvT,EAAEkL,WAAY,EAAE,GAAG5B,GACpE,EACe,CAAC,IAAb24B,GACiB9V,EAAOhZ,iBAAiB,iBAAiB,EAAEI,SAAS0uB,EAAQ/2B,WAAY,EAAE,GAC1EG,UAAUC,SAAS,UAAW,IAC3Cw2B,EAAc,CAAA,IAMd9hC,CAAC,EAET8hC,EACAD,EAAgBzhC,cAAc,CAAEioB,QAAS,CAAA,GAAS,CAAA,CAAI,EAGtDwZ,EAAgBzhC,cAAc,CAAEioB,QAAS,CAAA,GAAQ,CAAA,CAAI,KAWrE5B,EAAOvnB,UAAUgjC,UAAY,SAAUT,GACnCziC,KAAKmjC,iBAAiBV,EAAO,CAAA,CAAI,GAQrChb,EAAOvnB,UAAUkjC,WAAa,SAAUX,GACpCziC,KAAKmjC,iBAAiBV,EAAO,CAAA,CAAK,GAEtChb,EAAOvnB,UAAUijC,iBAAmB,SAAUV,EAAOzgC,GACjD,IAIIqhC,EAJA3xB,EAAQ6F,EAASvX,KAAKkN,KAAM,SAAUxB,GAAK,OAAOA,EAAEpB,KAAOm4B,EAAQ,EACzD,CAAC,IAAX/wB,IAGA2xB,EAAUrjC,KAAKgZ,OAAOjG,MAAMwB,SAAS7C,EAAMxF,WAAY,EAAE,GAAGf,QAChEnL,KAAKgZ,OAAO5M,QAAQL,cAAc,IAAM02B,EAAQ5kB,CAAmB,EAAExR,UAAUrK,EAAQ,SAAW,OAAO,YAAY,EACrHqhC,EAAQh3B,UAAUrK,EAAQ,SAAW,OAAO,YAAY,EACxDhC,KAAKgZ,OAAOkqB,UAAUxxB,EAAO1P,CAAK,IAUtCylB,EAAOvnB,UAAUojC,OAAS,SAAUtrB,EAAK8B,EAAUypB,GAC/C,IACA7xB,EAAmB,CAAC,KAAXA,EADGoI,EAAWvC,EAASvX,KAAKkN,KAAM,SAAUxB,GAAK,OAAOA,EAAEpB,KAAOwP,EAAW,EAAI,CAAC,GACjE9Z,KAAKkN,KAAKvM,OAAU+Q,GAAS6xB,EAAU,EAAI,GAOhEC,GANJxjC,KAAKitB,aAAejtB,KAAKkN,KAAKgH,QAC9BlU,KAAKitB,aAAa+C,OAAOte,EAAO,EAAGsG,CAAG,EACtChY,KAAKoB,cAAc,CAAE8L,KAAMlN,KAAKitB,cAAgB,CAAA,CAAI,EACpDjtB,KAAKktB,QAAQ,CAACltB,KAAKkN,KAAKqH,SAAS7C,EAAMxF,WAAY,EAAE,IAAK,MAAOlM,KAAKoM,QAAQ9B,EAAE,EAChFtK,KAAKitB,aAAejtB,KAAKkN,KAAKgH,QAC9BlU,KAAKstB,mBACSttB,KAAKutB,eAAe,CAACvV,EAAI,GACvChY,KAAKgZ,OAAOsqB,OAAOE,EAAS9xB,CAAK,GAQrC+V,EAAOvnB,UAAUujC,UAAY,SAAUhB,GACnC,IAAI/wB,EAAQ6F,EAASvX,KAAKkN,KAAM,SAAUxB,GAAK,OAAOA,EAAEpB,KAAOm4B,EAAQ,EACvE,GAAc,CAAC,IAAX/wB,EAAJ,CAGA,IAAI4D,EAAatV,KAAKgZ,OAAOjG,MAAMwB,SAAS7C,EAAMxF,WAAY,EAAE,GAAGf,QAC/DqK,EAASxV,KAAKkN,KAAKqH,SAAS7C,EAAMxF,WAAY,EAAE,GAAGsJ,OACvD,GAAIA,GAAoC,KAAzBF,EAAWzF,UACtB,IAAK,IAAI2tB,EAAK,EAAGkG,EAAWluB,EAAQgoB,EAAKkG,EAAS/iC,OAAQ68B,CAAE,GAAI,CAG5D,IAFA,IAAItlB,EAAQwrB,EAASlG,GACjBrqB,EAAkB+E,EAAMwe,YAAcphB,EAAWvJ,cAAc,IAAMmM,EAAM5N,GAAKgmB,EAAwB0J,EAAqB,EAAI,KAC5HyD,EAAK,EAAGI,EAAK3lB,EAAME,YAAaqlB,EAAKI,EAAGl9B,OAAQ88B,CAAE,GAEvD,IADA,IACSM,EAAK,EAAGC,EADAH,EAAGJ,GACa1qB,MAAOgrB,EAAKC,EAAGr9B,OAAQo9B,CAAE,GAAI,CAC1D,IAAI9zB,EAAO+zB,EAAGD,GACV7b,EAAM/O,EAAkBnT,KAAKmZ,qBAAqBhE,kBAAkBhC,EAAiBlJ,EAAKK,EAAE,EAAIgL,EAAWvJ,cAAc,IAAM9B,EAAKK,EAAE,GAEtI4X,EADAjY,EAAKgC,OAAS/M,iBAAe6zB,aAAqC,YAAtB/yB,KAAK2P,aAC3CwD,EAAkBnT,KAAKmZ,qBAAqBhE,kBAAkBhC,EAAiBlJ,EAAKK,GACtFsR,CAAgC,EAAItG,EAAWvJ,cAAc,IAAM9B,EAAKK,GAAKsR,CAAgC,EAEjHsG,IACAliB,KAAKm+B,gBAAgBl0B,EAAMiY,CAAG,EAItC/O,GACAnT,KAAKmZ,qBAAqBlE,uBAAuB9B,CAAe,EAIxEzB,IAAU1R,KAAK2kB,cACf3kB,KAAKsoB,YAAc,CAAA,GAEvBtoB,KAAKitB,aAAejtB,KAAKkN,KAAKgH,QAC9BlU,KAAKitB,aAAa+C,OAAOte,EAAO,CAAC,EACjC1R,KAAKoB,cAAc,CAAE8L,KAAMlN,KAAKitB,cAAgB,CAAA,CAAI,EACpDjtB,KAAKgZ,OAAOyqB,UAAU/xB,CAAK,IAW/B+V,EAAOvnB,UAAUyjC,SAAW,SAAUlB,EAAOvqB,EAAO4B,EAAUypB,GAC1D,IAUA7xB,EAQQtF,EAEA0R,EApBJvI,EAAWgC,EAASvX,KAAKkN,KAAM,SAAUxB,GAAK,OAAOA,EAAEpB,KAAOm4B,EAAQ,EACzD,CAAC,IAAdltB,IAGAvV,KAAK2kB,cAAgBpP,GACrBvV,KAAKuiC,sBAGLqB,GADA5rB,EAAMhY,KAAKkN,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,IAC7BsJ,OAAOtB,QAE9BxC,EAAmB,CAAC,KAAXA,EADGoI,EAAWvC,EAASqsB,EAAc,SAAUl4B,GAAK,OAAOA,EAAEpB,KAAOwP,EAAW,EAAI,CAAC,GACpE8pB,EAAajjC,OAAU+Q,GAAS6xB,EAAU,EAAI,GACvEK,EAAa5T,OAAOte,EAAO,EAAGwG,CAAK,EACnCF,EAAI5W,cAAc,CAAEoU,OAAQouB,GAAgB,CAAA,CAAI,EAChD5jC,KAAKktB,QAAQ,CAAClV,EAAIxC,OAAOjB,SAAS7C,EAAMxF,WAAY,EAAE,IAAK,QAASu2B,CAAK,EACzEziC,KAAKstB,mBAGwB,MADzBhY,EAAatV,KAAKgZ,OAAOjG,MAAMwB,SAASgB,EAASrJ,WAAY,EAAE,GAAGf,SACvD0E,YACPzD,EAAUpM,KAAK0vB,aAAa,CAAC1X,EAAIxC,OAAOjB,SAAS7C,EAAMxF,WAAY,EAAE,IAAKqJ,CAAQ,EAAE,IAEpFuI,EAAYhE,EAAWxE,EAAWvJ,cAAc,IAAM+N,CAAQ,EAAI,MAElEgE,EAAUmb,sBAAsBsK,EAAU,WAAa,cAAen3B,CAAO,EAG7EkJ,EAAW4E,OAAO9N,CAAO,GAG7BpM,KAAK2kB,cAAgBpP,IACrBvV,KAAK6uB,iBASbpH,EAAOvnB,UAAU2jC,YAAc,SAAUtP,GACrC,IAAIvnB,EAAWyL,GAASzY,KAAKkN,KAAMqnB,CAAO,EAC1C,GAAKvnB,EAAL,CAGIhN,KAAK2kB,cAAgB3X,EAASuI,UAC9BvV,KAAKuiC,sBAGT,IAAIjtB,EAAatV,KAAKgZ,OAAOjG,MAAM/F,EAASuI,UAAUpK,QACtD,GAA6B,KAAzBmK,EAAWzF,UAAkB,CAC7B,IACIuD,EAAW,KAAA,EACXpG,EAASkL,MAAM2nB,kBACf7/B,KAAKiiC,mBAAmBj1B,EAASkL,MAAM5N,GAAI,KAAMgL,CAAU,EAE3DtV,KAAK2P,eAAiB7Q,eAAasa,aAGnChG,GAFAD,EAAkBnG,EAASkL,MAAMmB,oBAC7B/D,EAAWvJ,cAAc,IAAMiB,EAASkL,MAAM5N,GAAKgP,CAA2B,EAAI,MACzDnN,eAAagH,EAAiBN,gBAAc,EAAI7S,KAAKuZ,aAEtF,IAAK,IAAIikB,EAAK,EAAGC,EAAKzwB,EAASkL,MAAME,YAAaolB,EAAKC,EAAG98B,OAAQ68B,CAAE,GAEhE,IADA,IACSK,EAAK,EAAGE,EADAN,EAAGD,GACazqB,MAAO8qB,EAAKE,EAAGp9B,OAAQk9B,CAAE,GAAI,CAC1D,IAAI5zB,EAAO8zB,EAAGF,GACd79B,KAAK8jC,kBAAkBxuB,EAAYrL,EAAMmJ,CAAQ,EAGrDpT,KAAK2P,eAAiB7Q,eAAasa,aAC/BpM,EAASkL,MAAMmB,qBAC2B,IAAtCjG,EAAS9S,OAAO8zB,mBACZ,IADwChhB,EAAS9S,OAAO8zB,mBACnDp0B,KAAKq0B,gBAAgBjhB,EAAS9S,OAAQ0M,EAASkL,MAAM5N,EAAE,IAChEtK,KAAKs0B,qBAAqBlhB,CAAQ,IAIlCygB,EAAmBzgB,EAAS9S,OAAOyL,cAAc,IAAMiB,EAASkL,MAAM5N,GAAKka,CAAsB,IACtC,IAAvCqP,EAAiBO,mBACrCP,EAAiB7kB,UAEjBkhB,EAAiB9c,EAAS9S,OAAOyL,cAAc,IAAM/L,KAAKkN,KAAKqH,SAASvH,EAASuI,SAASrJ,WAAY,EAAE,GAAG5B,GAAKgmB,CAAqB,IAC9E,IAArCJ,EAAekE,mBACjClE,EAAelhB,WAI3B,IAAIuE,EAAW+B,EAAWvJ,cAAc,IAAMwoB,CAAO,EACjDhhB,GACAA,EAASvE,SAGb40B,EAAe5jC,KAAKkN,KAAKF,EAASuI,UAAUC,OAAOtB,QACvD0vB,EAAa5T,OAAOhjB,EAASyI,WAAY,CAAC,EAC1CzV,KAAKkN,KAAKF,EAASuI,UAAUnU,cAAc,CAAEoU,OAAQouB,GAAgB,CAAA,CAAI,EACrE5jC,KAAK2kB,cAAgB3X,EAASuI,UAC9BvV,KAAK6uB,kBAGbpH,EAAOvnB,UAAUm0B,gBAAkB,SAAU/U,EAAWykB,GACpD,MAAOzkB,CAAAA,CAAAA,EAAUvT,cAAc,IAAMg4B,EAAUzqB,EAA8BuE,CAAmB,GAQpG4J,EAAOvnB,UAAU8jC,UAAY,SAAUD,GACnC/jC,KAAKikC,cAAcF,EAAS,CAAA,CAAI,GAQpCtc,EAAOvnB,UAAUgkC,UAAY,SAAUH,GACnC/jC,KAAKikC,cAAcF,EAAS,CAAA,CAAK,GAErCtc,EAAOvnB,UAAU+jC,cAAgB,SAAUF,EAASvP,GAChD,IACIb,EAeIzD,EAiBIiU,EA/BRn3B,EAAWyL,GAASzY,KAAKkN,KAAM62B,CAAO,EACrC/2B,KAIDuG,GADA+B,EAAatV,KAAKgZ,OAAOjG,MAAM/F,EAASuI,UAAUpK,SAC5BY,cAAc,IAAMg4B,CAAO,GAEjD/jC,KAAKokC,qBAAqBp3B,EAASuI,SAAUif,EAAW,YAAc,YAAauP,EAASvP,EAAUjhB,CAAQ,EAG9GvT,KAAKqkC,mBAAmBr3B,EAASuI,SAAUwuB,EAAS,eAAgBvP,CAAQ,EAE5Ex0B,KAAKuZ,cAED2W,EADclwB,KAAKuZ,YAAYjZ,OACFyL,cAAc,IAAM/L,KAAKkN,KAAKqH,SAASvH,EAASuI,SAASrJ,WAAY,EAAE,GAAG5B,GAAKgmB,CAAqB,EACjItjB,EAASkL,MAAMmB,qBAIXsa,GAHAC,EAAiBte,EAAWvJ,cAAc,IAAMg4B,EAAUzqB,CAA2B,GAEvEwS,cAAY8H,EAAgB/gB,gBAAc,EAC3BvS,OAE7BqzB,KACIa,EACAb,EAAetnB,UAAUe,IAAI,UAAU,EAGvCumB,EAAetnB,UAAU2C,OAAO,UAAU,GAI7CkhB,IACDiU,EAAejU,EAAenkB,cAAc,IAAMg4B,EAAUvf,CAAsB,KAE9EgQ,EACA2P,EAAa93B,UAAUe,IAAI,UAAU,EAGrC+2B,EAAa93B,UAAU2C,OAAO,UAAU,IAKpDhP,KAAK2kB,cAAgB3X,EAASuI,WAC9BvV,KAAK6uB,iBAGbpH,EAAOvnB,UAAUkkC,qBAAuB,SAAU7uB,EAAUhV,EAAK+J,EAAIkqB,EAAUpoB,EAAS8L,GAChFsc,EACMpoB,EAAQC,UAAUC,SAAS,UAAW,IACxCtM,KAAKskC,oBAAoB/jC,EAAK+J,EAAIiL,CAAQ,EAC1CnJ,EAAQC,UAAUe,IAAI,UAAU,EACpB,aAAR7M,GACAP,KAAKukC,iBAAiBrsB,EAAOsc,EAAUjf,CAAQ,EAEnDvV,KAAK8vB,6BAA6Bva,CAAQ,GAI1CnJ,EAAQC,UAAUC,SAAS,UAAU,IACrCtM,KAAKskC,oBAAoB/jC,EAAK+J,EAAIiL,CAAQ,EAC1CnJ,EAAQC,UAAU2C,OAAO,UAAU,EACnChP,KAAK8vB,6BAA6Bva,CAAQ,EAC9B,aAARhV,IACAP,KAAKukC,iBAAiBrsB,EAAOsc,EAAUjf,CAAQ,GAK/DkS,EAAOvnB,UAAUokC,oBAAsB,SAAU/jC,EAAK+J,EAAIiL,GACtD,IACQivB,EADkB,eAAtBxkC,KAAK2P,gBACD60B,EAAcxkC,KAAKioB,eAAe1T,SAASgB,EAASrJ,WAAY,EAAE,MAElElM,KAAKioB,eAAe1T,SAASgB,EAASrJ,WAAY,EAAE,GAAK,GACzDs4B,EAAcxkC,KAAKioB,eAAe1T,SAASgB,EAASrJ,WAAY,EAAE,IAElEs4B,KACKA,EAAY,GAAKjkC,KAClBikC,EAAY,GAAKjkC,GAAO,IAExBikC,EAAY,GAAKjkC,GAAKI,QAER,CAAC,IADH6jC,EAAY,GAAKjkC,GAAKkyB,QAAQnoB,CAAE,GAM5Ck6B,EAAY,GAAKjkC,GAAK8V,KAAK/L,CAAE,IAK7Cmd,EAAOvnB,UAAUukC,2BAA6B,SAAUlvB,EAAUhV,GAC9D,IAAIikC,EAAcxkC,KAAKioB,eAAe1T,SAASgB,EAASrJ,WAAY,EAAE,GACtE,GAAIs4B,GAAeA,EAAY,GAAKjkC,IAAQikC,EAAY,GAAKjkC,GAAKI,OA+E9D,IA9EA,IA6EmB+jC,EAAfC,EAAS3kC,KACJgB,EAAI,EAAGA,EAAIwjC,EAAY,GAAKjkC,GAAKI,OAAQK,CAAC,GAC/C4jC,CA/EU,SAAU5jC,GACpB,IAAIsU,EAAaqvB,EAAO3rB,OAAOjG,MAAMwB,SAASgB,EAASrJ,WAAY,EAAE,GAAGf,QAEpEoI,EAAW,KAAA,EACXygB,EAAgB,CAAA,EAChBC,EAAkB,EAElB4Q,EADQ,cAARtkC,GAA+B,cAARA,EACX+U,EAAWvJ,cAAc,IAAMy4B,EAAY,GAAKjkC,GAAKgU,SAASvT,EAAEkL,WAAY,EAAE,EAAE,EAGhFoJ,EAAWvJ,cAAc,IAAMy4B,EAAY,GAAKjkC,GAAKgU,SAASvT,EAAEkL,WAAY,EAAE,GAAKsY,CAAsB,EA4DrH9S,GA1DAmzB,IACY,cAARtkC,GAA+B,aAARA,GACnBi0B,EAAW,CAAA,EACXqQ,EAAUx4B,UAAUC,SAAS,UAAU,IACvCkoB,EAAW,CAAA,EACXqQ,EAAUx4B,UAAU2C,OAAO,UAAU,GAE7B,aAARzO,IACAgT,EAAWsxB,EAAUz0B,QAAQ,iBAAiB,GACjC/D,UAAUC,SAAS,cAAc,IAC1C0nB,EAAgB,CAAA,EAChBC,EAAkB0Q,EAAOzQ,qBAAqB2Q,EAAWtxB,CAAQ,GAGzEoxB,EAAOjS,4BAA4BmS,EAAUxjB,YAAc4S,EAAiB,CAAA,EAAM1e,CAAQ,EAC1FovB,EAAOhS,yBAAyBkS,EAAUxjB,YAAc4S,EAAiB1e,EAAU,CAAA,CAAI,EACnFif,GACAqQ,EAAUx4B,UAAUe,IAAI,UAAU,IAI1B,aAAR7M,KAEIgT,EADOsxB,EAAUz0B,QAAQ,iBAAiB,GACjC/D,UAAUC,SAAS,cAAc,GAC1C0nB,EAAgB,CAAA,EAChBzgB,EAASlH,UAAU2C,OAAO,cAAc,EACxCuE,EAASlH,UAAU2C,OAAO,0BAA0B,EACpDilB,EAAkB/Q,KAAKC,IAAI0hB,EAAUxjB,YAAc9N,EAAS8N,WAAW,EACtB,CAAC,IAA9CsjB,EAAOxc,aAAasK,QAAQlf,EAASjJ,EAAE,GACvCq6B,EAAOxc,aAAa6H,OAAO2U,EAAOxc,aAAasK,QAAQlf,EAASjJ,EAAE,EAAG,CAAC,GAIzB,CAAC,IAA9Cq6B,EAAOxc,aAAasK,QAAQlf,EAASjJ,EAAE,KACnCs2B,EAAcrtB,EAASY,iBAAiB,+BAA+B,GAC/D8N,QAAQ,SAAUhY,GACtBA,EAAKK,KAAOu6B,EAAUv6B,IACtBL,EAAKoC,UAAUe,IAAI,UAAU,EAEpC,EACD6mB,EAAkB/Q,KAAKC,IAAI0hB,EAAUxjB,YAAc9N,EAAS8N,WAAW,EACvEuf,EAAY3e,QAAQ,SAAUhY,GACtBA,EAAKK,KAAOu6B,EAAUv6B,IACtBL,EAAKoC,UAAU2C,OAAO,UAAU,EAEvC,EACD21B,EAAOxc,aAAa6H,OAAO2U,EAAOxc,aAAasK,QAAQlf,EAASjJ,EAAE,EAAG,CAAC,IAIlFq6B,EAAOjS,4BAA4BmS,EAAUxjB,YAAc4S,EAAiB,CAAA,EAAO1e,CAAQ,EAC3FovB,EAAOhS,yBAAyBkS,EAAUxjB,YAAc4S,EAAiB1e,EAAU,CAAA,CAAK,GAExFye,KACAzgB,EAASlH,UAAUe,IAAI,cAAc,EACrCmG,EAASlH,UAAUe,IAAI,0BAA0B,GAG7Co3B,EAAY,GAAKjkC,GAAKkyB,QAAQ+R,EAAY,GAAKjkC,GAAKgU,SAASvT,EAAEkL,WAAY,EAAE,EAAE,GAC7E,CAAC,IAAXwF,IACA8yB,EAAY,GAAKjkC,GAAKyvB,OAAOte,EAAO,CAAC,EACrC1Q,CAAC,IAEL0jC,EAAU1jC,GAIFA,CAAC,EACTA,EAAI0jC,GAIhBjd,EAAOvnB,UAAUg0B,qBAAuB,SAAU2Q,EAAWtxB,GACzD,IAAI0gB,EAAkB,EAatB,OAZA1gB,EAASlH,UAAU2C,OAAO,cAAc,EACxCuE,EAASlH,UAAU2C,OAAO,0BAA0B,EAChDhP,KAAKmoB,aAAaxnB,QAC6B,CAAC,IAA5CX,KAAKmoB,aAAasK,QAAQlf,EAASjJ,EAAE,IAMzCtK,KAAKmoB,aAAa9R,KAAK9C,EAASjJ,EAAE,EAClC2pB,EAAkB/Q,KAAKC,IAAI0hB,EAAUxjB,YAAc9N,EAAS8N,WAAW,GAEpE4S,GAEXxM,EAAOvnB,UAAU4vB,6BAA+B,SAAUva,GACtD,GAAIA,IAAavV,KAAK2kB,aAAqC,eAAtB3kB,KAAK2P,aAA+B,CACrE,IAAI60B,EAAcxkC,KAAKioB,eAAe1T,SAASgB,EAASrJ,WAAY,EAAE,GACtE,GAAIs4B,EACA,IAAK,IAAIxjC,EAAI,EAAGA,EAAIzB,OAAOwtB,KAAKyX,CAAW,EAAE7jC,OAAQK,CAAC,GAClDhB,KAAKykC,2BAA2BlvB,EAAUhW,OAAOwtB,KAAKyX,CAAW,EAAEjwB,SAASvT,EAAEkL,WAAY,EAAE,EAAE,IAK9Gub,EAAOvnB,UAAUyyB,yBAA2B,SAAUmS,EAAavvB,EAAUif,GACzE,GAAIx0B,KAAK2kB,cAAgBpP,GAAkC,eAAtBvV,KAAK2P,aAA+B,CACrE,IAAIyS,EAAgBpiB,KAAKgZ,OAAO5M,QAAQL,cAAc,IAAM/L,KAAKkN,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GAAG5B,GAAKsa,CAAoB,EAC9HmgB,EAAkBrlC,MAAMQ,UAAUgU,MAAM3S,KAAK6gB,EAAcjO,iBAAiB,gBAAgB,CAAC,EACjG,GAAInU,KAAKuZ,YAIL,IAHA,IACIyrB,EADchlC,KAAKuZ,YAAYjZ,OACH6T,iBAAiB,gBAAgB,EAC7D8wB,EAAgB/tB,SAASnL,cAAc,IAAM/L,KAAKkN,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GAAG5B,GAAKgmB,CAAqB,EAC/GtvB,EAAI,EAAGA,EAAIgkC,EAAcrkC,OAAQK,CAAC,GAAI,CAC3C,IAAIkkC,EAAQF,EAAczwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGkE,QAAQ,IAAMpQ,KAAKkN,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GAAG5B,GAAKgmB,CAAqB,EACvI2U,GAAiBC,GAASD,EAAc36B,KAAO46B,EAAM56B,IAAM06B,EAAczwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGi5B,aAAa,mBAAmB,GACrIJ,EAAgB1uB,KAAK2uB,EAAczwB,SAASvT,EAAEkL,WAAY,EAAE,EAAE,EAK1E,IADA,IAAIk5B,EAAgBhjB,EAAcjO,iBAAiB,wBAAwB,EAClEnT,EAAI,EAAGA,EAAIokC,EAAczkC,OAAQK,CAAC,GAIvC,IAHA,IAEIgkC,EAFiBlZ,cAAYsZ,EAAc7wB,SAASvT,EAAEkL,WAAY,EAAE,GAAI2G,gBAAc,EACnDvS,OACD6T,iBAAiB,gBAAgB,EAC9DkxB,EAAO,EAAGA,EAAOL,EAAcrkC,OAAQ0kC,CAAI,GAC5CL,EAAczwB,SAAS8wB,EAAKn5B,WAAY,EAAE,GAAGi5B,aAAa,mBAAmB,GAC7EJ,EAAgB1uB,KAAK2uB,EAAczwB,SAAS8wB,EAAKn5B,WAAY,EAAE,EAAE,EAI7E,IAAK,IAEOo5B,EAFHtkC,EAAI,EAAGA,EAAI+jC,EAAgBpkC,OAAQK,CAAC,GACrC+jC,EAAgBxwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGi5B,aAAa,mBAAmB,IACxEG,EAAgB/wB,SAASwwB,EAAgBxwB,SAASvT,EAAEkL,WAAY,EAAE,GAAG8K,aAAa,mBAAmB,EAAG,EAAE,EAC9G+tB,EAAgBxwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGN,aAAa,qBAAqB4oB,EAAY8Q,EAAgBR,EAA2BQ,EAAgBR,GAA9B54B,UAAqD,KAK5Lub,EAAOvnB,UAAUwyB,4BAA8B,SAAU6S,EAAY/Q,EAAUjf,GAC3E,GAAIvV,KAAK2kB,cAAgBpP,GAAkC,eAAtBvV,KAAK2P,aAEtC,IADA,IAAIyuB,EAAYp+B,KAAKkN,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GAAGsJ,OACpDxU,EAAI,EAAGA,EAAIo9B,EAAUz9B,OAAQK,CAAC,GAAI,CACvC,IAAIkX,EAAQkmB,EAAU7pB,SAASvT,EAAEkL,WAAY,EAAE,GAC/C,GAAIgM,EAAMmB,oBAAqB,CAC3B,IACIvN,EAAiB,KAAA,EACjByN,EAFiBrC,SAASnL,cAAc,IAAMmM,EAAM5N,EAAE,EAEzByB,cAAc,IAAMmM,EAAM5N,GAAKgP,CAA2B,EAI3F,GAFIxN,EADAyN,EACiBuS,cAAYvS,EAAa1G,gBAAc,EAExD/G,EAGA,IAFA,IACIk5B,EADcl5B,EAAexL,OACD6T,iBAAiB,gBAAgB,EACxDqxB,EAAO,EAAGA,EAAOR,EAAcrkC,OAAQ6kC,CAAI,IAE5CF,EADgB/wB,SAASywB,EAAczwB,SAASixB,EAAKt5B,WAAY,EAAE,GAAG8K,aAAa,uBAAuB,EAAG,EAAE,IAE/GguB,EAAczwB,SAASixB,EAAKt5B,WAAY,EAAE,GAAGN,aAAa,yBAAyB4oB,EAAY8Q,EAAgBC,EAA0BD,EAAgBC,GAA9Br5B,UAAoD,GAOvM,GAAIlM,KAAKuZ,YAIL,IAHA,IAAI0rB,EAAgB/tB,SAASnL,cAAc,IAAM/L,KAAKkN,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GAAG5B,GAAKgmB,CAAqB,EAEpH0U,EADchlC,KAAKuZ,YAAYjZ,OACH6T,iBAAiB,gBAAgB,EACxDnT,EAAI,EAAGA,EAAIgkC,EAAcrkC,OAAQK,CAAC,GAAI,CAC3C,IAEQskC,EAFJJ,EAAQF,EAAczwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGkE,QAAQ,IAAMpQ,KAAKkN,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GAAG5B,GAAKgmB,CAAqB,EACvI2U,GAAiBC,GAASD,EAAc36B,KAAO46B,EAAM56B,KAEjDg7B,EADgB/wB,SAASywB,EAAczwB,SAASvT,EAAEkL,WAAY,EAAE,GAAG8K,aAAa,uBAAuB,EAAG,EAAE,IAE5GguB,EAAczwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGN,aAAa,yBAAyB4oB,EAAY8Q,EAAgBC,EAA0BD,EAAgBC,GAA9Br5B,UAAoD,IAYhMub,EAAOvnB,UAAUulC,aAAe,SAAU1B,GACtC/jC,KAAK0lC,mBAAmB3B,EAAS,CAAA,CAAI,GAQzCtc,EAAOvnB,UAAUylC,YAAc,SAAU5B,GACrC/jC,KAAK0lC,mBAAmB3B,EAAS,CAAA,CAAK,GAE1Ctc,EAAOvnB,UAAUwlC,mBAAqB,SAAU3B,EAAS6B,GACrD,IACIjS,EAoBIzD,EAiBIiU,EApCRn3B,EAAWyL,GAASzY,KAAKkN,KAAM62B,CAAO,EACrC/2B,KAIDuG,GADA+B,EAAatV,KAAKgZ,OAAOjG,MAAM/F,EAASuI,UAAUpK,SAC5BY,cAAc,IAAMg4B,CAAO,GAE7C6B,EACAryB,EAASlH,UAAUe,IAAI,YAAY,EAGnCmG,EAASlH,UAAU2C,OAAO,YAAY,EAI1ChP,KAAKqkC,mBAAmBr3B,EAASuI,SAAUwuB,EAAS,iBAAkB6B,CAAU,EAEhF5lC,KAAKuZ,eAED2W,EADclwB,KAAKuZ,YAAYjZ,OACFyL,cAAc,IAAM/L,KAAKkN,KAAKqH,SAASvH,EAASuI,SAASrJ,WAAY,EAAE,GAAG5B,GAAKgmB,CAAqB,EACjItjB,EAASkL,MAAMmB,qBAIXsa,GAHAC,EAAiBte,EAAWvJ,cAAc,IAAMg4B,EAAUzqB,CAA2B,GAEvEwS,cAAY8H,EAAgB/gB,gBAAc,EAC3BvS,OAE7BqzB,KACIiS,EACAjS,EAAetnB,UAAUe,IAAI,YAAY,EAGzCumB,EAAetnB,UAAU2C,OAAO,YAAY,GAI/CkhB,IACDiU,EAAejU,EAAenkB,cAAc,IAAMg4B,EAAUvf,CAAsB,KAE9EohB,EACAzB,EAAa93B,UAAUe,IAAI,YAAY,EAGvC+2B,EAAa93B,UAAU2C,OAAO,YAAY,KAe9DyY,EAAOvnB,UAAU2lC,cAAgB,SAAUtR,EAASlc,EAAYyB,EAAUypB,GACtE,IAoBQn3B,EAKA0R,EAzBJ9Q,EAAWyL,GAASzY,KAAKkN,KAAMqnB,CAAO,EACrCvnB,CAAAA,GAG+B,QAA/BA,EAASkL,MAAMqf,aAAiE,IAAtCvqB,EAASkL,MAAME,YAAYzX,SAGtEX,KAAK2kB,cAAgB3X,EAASuI,UAC9BvV,KAAKuiC,sBAELuD,EAAoB94B,EAASkL,MAAME,YAAYlE,QAEnDxC,EAAmB,CAAC,KAAXA,EADGoI,EAAWvC,EAASuuB,EAAmB,SAAUp6B,GAAK,OAAOA,EAAEpB,KAAOwP,EAAW,EAAI,CAAC,GACzEgsB,EAAkBnlC,OAAU+Q,GAAS6xB,EAAU,EAAI,GAC5EuC,EAAkB9V,OAAOte,EAAO,EAAG2G,CAAU,EAC7CrL,EAASkL,MAAM9W,cAAc,CAAEgX,YAAa0tB,GAAqB,CAAA,CAAI,EACrE9lC,KAAKktB,QAAQ,CAAClgB,EAASkL,MAAME,YAAY7D,SAAS7C,EAAMxF,WAAY,EAAE,IAAK,aAAcqoB,CAAO,EAChGv0B,KAAKstB,mBAEwB,MADzBhY,EAAatV,KAAKgZ,OAAOjG,MAAM/F,EAASuI,UAAUpK,SACvC0E,YACPk2B,EAAe/4B,EAASkL,MAAME,YAAY7D,SAAS7C,EAAMxF,WAAY,EAAE,GACvEE,EAAUpM,KAAK8/B,iBAAiB,CAACiG,GAAe/4B,EAASkL,MAAMqf,YAAavqB,EAASkL,MAAM5N,GAAI0C,EAASkL,MAAMiC,OAAQnN,EAASkL,MAAMmB,oBAAqBrM,EAASuI,QAAQ,EAAE,GAC7KvI,EAASkL,MAAMwe,cACfphB,EAAatV,KAAKmZ,qBAAqB9D,yBAAyBrI,EAAUsI,CAAU,IAGpFwI,EAAYhE,EAAWxE,EAAWvJ,cAAc,IAAM+N,CAAQ,EAAI,MAElEgE,EAAUmb,sBAAsBsK,EAAU,WAAa,cAAen3B,CAAO,EAG7EkJ,EAAWvJ,cAAc,IAAMwoB,EAAU3P,CAAoB,EAAE1K,OAAO9N,CAAO,GAGjFpM,KAAK2kB,cAAgB3X,EAASuI,UAC9BvV,KAAK6uB,kBASbpH,EAAOvnB,UAAU8lC,iBAAmB,SAAUC,GAC1C,IAAIj5B,EAAWwL,GAAcxY,KAAKkN,KAAM+4B,CAAY,EACpD,GAAKj5B,EAAL,CAGIhN,KAAK2kB,cAAgB3X,EAASuI,UAC9BvV,KAAKuiC,sBAGT,IAAIjtB,EAAatV,KAAKgZ,OAAOjG,MAAM/F,EAASuI,UAAUpK,QACtD,GAA6B,KAAzBmK,EAAWzF,UAAkB,CAC7B,IACIuD,EAAW,KAAA,EACXpT,KAAK2P,eAAiB7Q,eAAasa,aAGnChG,GAFAD,EAAkBnG,EAASkL,MAAMmB,oBAC7B/D,EAAWvJ,cAAc,IAAMiB,EAASkL,MAAM5N,GAAKgP,CAA2B,EAAI,MACzDnN,eAAagH,EAAiBN,gBAAc,EAAI7S,KAAKuZ,aAEtF,IAAK,IAAIikB,EAAK,EAAGC,EAAKzwB,EAASqL,WAAWtF,MAAOyqB,EAAKC,EAAG98B,OAAQ68B,CAAE,GAAI,CACnE,IAAIvzB,EAAOwzB,EAAGD,GACdx9B,KAAK8jC,kBAAkBxuB,EAAYrL,EAAMmJ,CAAQ,EAErD,IAAIG,EAAW+B,EAAWvJ,cAAc,IAAMk6B,CAAY,EACtD1yB,GACAA,EAASvE,SAGbk3B,EAAcl5B,EAASkL,MACvB4tB,EAAoBI,EAAY9tB,YAAYlE,QAChD4xB,EAAkB9V,OAAOhjB,EAASuL,gBAAiB,CAAC,EACpD2tB,EAAY9kC,cAAc,CAAEgX,YAAa0tB,GAAqB,CAAA,CAAI,EAC9D9lC,KAAK2kB,cAAgB3X,EAASuI,UAC9BvV,KAAK6uB,kBAYbpH,EAAOvnB,UAAUimC,QAAU,SAAUF,EAAch8B,EAAM6P,EAAUypB,GAC/D,IAqBQn3B,EAKA0R,EA1BJ9Q,EAAWwL,GAAcxY,KAAKkN,KAAM+4B,CAAY,EAC/Cj5B,CAAAA,GAG+B,WAA/BA,EAASkL,MAAMqf,aAAmE,IAArCvqB,EAASqL,WAAWtF,MAAMpS,SAGxEX,KAAK2kB,cAAgB3X,EAASuI,UAC9BvV,KAAKuiC,sBAEL6D,EAAcp5B,EAASqL,WAAWtF,MAAMmB,QAE5CxC,EAAmB,CAAC,KAAXA,EADGoI,EAAWvC,EAAS6uB,EAAa,SAAU16B,GAAK,OAAOA,EAAEpB,KAAOwP,EAAW,EAAI,CAAC,GACnEssB,EAAYzlC,OAAU+Q,GAAS6xB,EAAU,EAAI,GACtE6C,EAAYpW,OAAOte,EAAO,EAAGzH,CAAI,EACjC+C,EAASqL,WAAWjX,cAAc,CAAE2R,MAAOqzB,GAAe,CAAA,CAAI,EAC9DpmC,KAAKktB,QAAQ,CAAClgB,EAASqL,WAAWtF,MAAMwB,SAAS7C,EAAMxF,WAAY,EAAE,IAAK,OAAQ+5B,CAAY,EAC9FjmC,KAAKstB,mBAEDzY,GADAS,EAAatV,KAAKgZ,OAAOjG,MAAM/F,EAASuI,UAAUpK,SACtBY,cAAc,IAAMiB,EAASkL,MAAM5N,GAAKka,CAAsB,EACjE,KAAzBlP,EAAWzF,YACPw2B,EAASr5B,EAASqL,WAAWtF,MAAMwB,SAAS7C,EAAMxF,WAAY,EAAE,GAChEE,EAAUpM,KAAK8+B,YAAY,CAACuH,GAASr5B,EAASkL,MAAMqf,YAAavqB,EAASkL,MAAM5N,GAAI0C,EAASkL,MAAMiC,OAAQnN,EAASkL,MAAMmB,oBAAqBrM,EAASuI,SAAUV,CAAc,EAAE,GAClL7H,EAASkL,MAAMwe,cACfphB,EAAatV,KAAKmZ,qBAAqB9D,yBAAyBrI,EAAUsI,CAAU,IAGpFwI,EAAYhE,EAAWxE,EAAWvJ,cAAc,IAAM+N,CAAQ,EAAI,MAElEgE,EAAU1N,QAAQ,IAAM6iB,EAAqB,EAAEgG,sBAAsBsK,EAAU,WAAa,cAAen3B,CAAO,EAG9GA,GACAkJ,EAAWvJ,cAAc,IAAMk6B,CAAY,EAAE/rB,OAAO9N,CAAO,GAInEpM,KAAK2kB,cAAgB3X,EAASuI,UAC9BvV,KAAK6uB,kBASbpH,EAAOvnB,UAAUomC,WAAa,SAAUC,GACpC,IAWQnzB,EASJozB,EACAJ,EArBAp5B,EAAWC,EAAQjN,KAAKkN,KAAMq5B,CAAM,EACnCv5B,IAGDhN,KAAK2kB,cAAgB3X,EAASuI,UAC9BvV,KAAKuiC,sBAIoB,MADzBjtB,EAAatV,KAAKgZ,OAAOjG,MAAM/F,EAASuI,UAAUpK,SACvC0E,YAEPuD,EADAD,EAAkB,KAAA,EAElBnT,KAAK2P,eAAiB7Q,eAAasa,aAGnChG,GAFAD,EAAkBnG,EAASkL,MAAMmB,oBAC7B/D,EAAWvJ,cAAc,IAAMiB,EAASkL,MAAM5N,GAAKgP,CAA2B,EAAI,MACzDnN,eAAagH,EAAiBN,gBAAc,EAAI7S,KAAKuZ,aAElFtP,EAAO+C,EAAS/C,KACpBjK,KAAK8jC,kBAAkBxuB,EAAYrL,EAAMmJ,CAAQ,IAGjDgzB,GADAI,EAAmBx5B,EAASqL,YACGtF,OACvBid,OAAOhjB,EAAS8G,UAAW,CAAC,EACxC0yB,EAAiBplC,cAAc,CAAE2R,MAAOqzB,GAAe,CAAA,CAAI,EACvDpmC,KAAK2kB,cAAgB3X,EAASuI,WAC9BvV,KAAK6uB,iBASbpH,EAAOvnB,UAAUumC,SAAW,SAAUF,GAClCvmC,KAAK0mC,aAAaH,EAAQ,CAAA,CAAI,GAQlC9e,EAAOvnB,UAAUymC,SAAW,SAAUJ,GAClCvmC,KAAK0mC,aAAaH,EAAQ,CAAA,CAAK,GAEnC9e,EAAOvnB,UAAUwmC,aAAe,SAAUH,EAAQ/R,GAC9C,IAMItS,EANAlV,EAAWC,EAAQjN,KAAKkN,KAAMq5B,CAAM,EACnCv5B,KAKDkV,EADuB,gBAAvBlV,EAAS/C,KAAKgC,KACRa,EAAe9M,KAAMumC,EAAS3qB,EAAkC5O,CAAQ,EAGxEF,EAAe9M,KAAMumC,EAAQv5B,CAAQ,IAGvC9C,EAAUkG,UAAQ8R,EAAK,gBAAgB,EAC3CliB,KAAKokC,qBAAqBp3B,EAASuI,SAAUif,EAAW,WAAa,WAAY+R,EAAQ/R,EAAUtqB,EAAS8C,EAASkL,KAAK,EACtHlY,KAAK2kB,cAAgB3X,EAASuI,UAC9BvV,KAAK6uB,iBAIT7uB,KAAKqkC,mBAAmBr3B,EAASuI,SAAUgxB,EAAQ,cAAe/R,CAAQ,IAGlF/M,EAAOvnB,UAAUmkC,mBAAqB,SAAU9uB,EAAUjL,EAAI/J,EAAKqmC,GAC/D,IASQ9yB,EATJksB,EAAehgC,KAAKgoB,iBAAiBzT,SAASgB,EAASrJ,WAAY,EAAE,GACpE8zB,IACDhgC,KAAKgoB,iBAAiBzT,SAASgB,EAASrJ,WAAY,EAAE,GAAK,GAC3D8zB,EAAehgC,KAAKgoB,iBAAiBzT,SAASgB,EAASrJ,WAAY,EAAE,IAErE8zB,IACKA,EAAa,GAAKz/B,KACnBy/B,EAAa,GAAKz/B,GAAO,IAEzBuT,EAAYksB,EAAa,GAAKz/B,GAAKkyB,QAAQnoB,CAAE,EAC7Cs8B,EACkB,CAAC,IAAf9yB,GACAksB,EAAa,GAAKz/B,GAAK8V,KAAK/L,CAAE,GAIhB,CAAC,IAAfwJ,GACAksB,EAAa,GAAKz/B,GAAKyvB,OAAOlc,EAAW,CAAC,EAER,IAAlCksB,EAAa,GAAKz/B,GAAKI,QACvB,OAAOq/B,EAAa,GAAKz/B,GAEY,IAArChB,OAAOwtB,KAAKiT,CAAY,EAAEr/B,QAC1B,OAAOX,KAAKgoB,iBAAiBzT,SAASgB,EAASrJ,WAAY,EAAE,MAK7Eub,EAAOvnB,UAAUqkC,iBAAmB,SAAUrsB,EAAOsc,EAAUjf,GAC3D,IAAIwqB,EAAgB,CAAA,EAEhBzqB,EAAatV,KAAKgZ,OAAOjG,MAAMwB,SAASgB,EAASrJ,WAAY,EAAE,GAAGf,QAClEoI,EAAW+B,EAAWvJ,cAAc,IAAMmM,EAAM5N,EAAE,EACtD,GAAIkqB,EAAU,CACV,IAAK,IAAIxzB,EAAI,EAAGA,EAAIkX,EAAME,YAAYzX,OAAQK,CAAC,GAC3C,GAAI++B,EAEA,IADA,IAAI1nB,EAAaH,EAAME,YAAY7D,SAASvT,EAAEkL,WAAY,EAAE,GACnD+L,EAAI,EAAGA,EAAII,EAAWtF,MAAMpS,OAAQsX,CAAC,GAAI,CAC9C,IAGQjL,EAHJ/C,EAAOoO,EAAWtF,MAAMwB,SAAS0D,EAAE/L,WAAY,EAAE,GACjDhC,EAAU,KAAA,EASd,GAAI,GANAA,EAFc,gBAAdD,EAAKgC,MACDe,EAAWC,EAAQjN,KAAKkN,KAAMjD,EAAKK,EAAE,EAC/BwC,EAAe9M,KAAMiK,EAAKK,GAAKsR,EAAkC5O,CAAQ,GAGzEF,EAAe9M,KAAMiK,EAAKK,EAAE,GAEZJ,EAAQkG,QAAQ,gBAAgB,EAAI,MAC9C/D,UAAUC,SAAS,UAAW,EAAG,CACjDyzB,EAAgB,CAAA,EAChB,OAKZA,IACAxsB,EAASlH,UAAUe,IAAI,cAAc,EACrCpN,KAAK6mC,mBAAmBrS,EAAUlf,EAAY4C,EAAMmB,oBAAqB9D,EAAU2C,EAAM5N,EAAE,QAI/FiJ,EAASlH,UAAU2C,OAAO,cAAc,EACxChP,KAAK6mC,mBAAmBrS,EAAUlf,EAAY4C,EAAMmB,oBAAqB9D,EAAU2C,EAAM5N,EAAE,EAErE,eAAtBtK,KAAK2P,cAAkCuI,EAAMmB,sBACzC6Z,EAAc3f,EAASY,iBAAiB,IAAM8e,EAAqB,KAEnEG,EAAoBpzB,KAAKmzB,qBAAqBD,CAAW,EACzD3f,EAASlH,UAAU+mB,EAAoB,MAAQ,UAAU,0BAA0B,IAI/F3L,EAAOvnB,UAAU2mC,mBAAqB,SAAUrS,EAAUlf,EAAY+d,EAAW9d,EAAUwuB,GACvF,IACIpQ,EACAN,GAIIM,GAHAC,EAAiBte,EAAWvJ,cAAc,IAAMg4B,EAAUzqB,CAA2B,GAEvEwS,cAAY8H,EAAgB/gB,gBAAc,EAC3BvS,OAE7BqzB,KACIa,EACAb,EAAetnB,UAAUe,IAAI,cAAc,EAG3CumB,EAAetnB,UAAU2C,OAAO,cAAc,GAKlDhP,KAAKuZ,cAED2W,EADclwB,KAAKuZ,YAAYjZ,OACFyL,cAAc,IAAM/L,KAAKkN,KAAKqH,SAASgB,EAASrJ,WAAY,EAAE,GAAG5B,GAAKgmB,CAAqB,KAEpH6T,EAAejU,EAAenkB,cAAc,IAAMg4B,EAAUvf,CAAsB,KAE9EgQ,EACA2P,EAAa93B,UAAUe,IAAI,cAAc,EAGzC+2B,EAAa93B,UAAU2C,OAAO,cAAc,IAapEyY,EAAOvnB,UAAU4mC,UAAY,SAAU9uB,GACnC,IAAIyqB,EAAQzqB,EAAI1N,GACZoH,EAAQ6F,EAASvX,KAAKkN,KAAM,SAAUxB,GAAK,OAAOA,EAAEpB,KAAOm4B,EAAQ,EACvE,GAAc,CAAC,IAAX/wB,EAAJ,CAGA,IAAI4D,EAAatV,KAAKgZ,OAAOjG,MAAMwB,SAAS7C,EAAMxF,WAAY,EAAE,GAAGf,QAC/DqK,EAASxV,KAAKkN,KAAKqH,SAAS7C,EAAMxF,WAAY,EAAE,GAAGsJ,OACnD2X,EAASntB,KAAKgZ,OAAO5M,QACzB,GAAIoJ,GAAoC,KAAzBF,EAAWzF,YAElBmI,EAAI/M,UACAjL,KAAKkN,KAAKqH,SAAS7C,EAAMxF,WAAY,EAAE,GAAGjB,WAC1CqK,EAAWjJ,UAAU2C,OAAOhP,KAAKkN,KAAKqH,SAAS7C,EAAMxF,WAAY,EAAE,GAAGjB,QAAQ,EAC9EkiB,EAAOphB,cAAc,WAAW,EAAEM,UAAU2C,OAAOhP,KAAKkN,KAAKqH,SAAS7C,EAAMxF,WAAY,EAAE,GAAGjB,QAAQ,GAIzG+M,EAAIxC,QAAQ,CACZ,IAAK,IAAIgoB,EAAK,EAAGuJ,EAAWvxB,EAAQgoB,EAAKuJ,EAASpmC,OAAQ68B,CAAE,GAAI,CAG5D,IAFA,IAAItlB,EAAQ6uB,EAASvJ,GACjBrqB,EAAkB+E,EAAMwe,YAAcphB,EAAWvJ,cAAc,IAAMmM,EAAM5N,GAAKgmB,EAAwB0J,EAAqB,EAAI,KAC5HyD,EAAK,EAAGI,EAAK3lB,EAAME,YAAaqlB,EAAKI,EAAGl9B,OAAQ88B,CAAE,GAEvD,IADA,IACSM,EAAK,EAAGC,EADAH,EAAGJ,GACa1qB,MAAOgrB,EAAKC,EAAGr9B,OAAQo9B,CAAE,GAAI,CAC1D,IAAI9zB,EAAO+zB,EAAGD,GACV7b,EAAM/O,EAAkBnT,KAAKmZ,qBAAqBhE,kBAAkBhC,EAAiBlJ,EAAKK,EAAE,EAAIgL,EAAWvJ,cAAc,IAAM9B,EAAKK,EAAE,GAEtI4X,EADAjY,EAAKgC,OAAS/M,iBAAe6zB,aAAqC,YAAtB/yB,KAAK2P,aAC3CwD,EAAkBnT,KAAKmZ,qBAAqBhE,kBAAkBhC,EAAiBlJ,EAAKK,GACtFsR,CAAgC,EAAItG,EAAWvJ,cAAc,IAAM9B,EAAKK,GAAKsR,CAAgC,EAEjHsG,IACAliB,KAAKm+B,gBAAgBl0B,EAAMiY,CAAG,EAItC/O,GACAnT,KAAKmZ,qBAAqBlE,uBAAuB9B,CAAe,EAGpDmC,EAAWnB,iBAAiB,iBAAiB,EAEnD8N,QAAQ,SAAU1O,GAAYA,EAASvE,SAAW,EAGpE0C,IAAU1R,KAAK2kB,cACf3kB,KAAKsoB,YAAc,CAAA,GAEvB,IAOYmH,EAPR2L,EAAYp7B,KAAKkN,KAAKqH,SAAS7C,EAAMxF,WAAY,EAAE,GACvDkvB,EAAUh6B,cAAc4W,EAAK,CAAA,CAAI,EACjChY,KAAKoB,cAAc,CAAEoU,OAAQxV,KAAKktB,QAAQkO,EAAU5lB,OAAQ,QAAS4lB,EAAU9wB,EAAE,GAAK,CAAA,CAAI,EAC1FtK,KAAKstB,mBACwB,KAAzBhY,EAAWzF,YAEPmI,EAAIxC,SACAia,EAAWzvB,KAAK0vB,aAAa0L,EAAU5lB,OAAQ9D,CAAK,EACxDwI,SAAOuV,EAAUna,CAAU,GAE3BtV,KAAK2kB,cAAgBjT,GACrB1R,KAAK6uB,gBAGL7W,EAAI/M,WACJqK,EAAWjJ,UAAUe,IAAIguB,EAAUnwB,QAAQ,EAC3CkiB,EAAOphB,cAAc,WAAW,EAAEM,UAAUe,IAAIguB,EAAUnwB,QAAQ,GAGlE+M,EAAImC,UACJgT,EAAOphB,cAAc,IAAM02B,EAAQ5kB,CAAmB,EAAE+f,UAAYxC,EAAUjhB,UAU1FsN,EAAOvnB,UAAU8mC,YAAc,SAAU9uB,GACrC,IAAIqc,EAAUrc,EAAM5N,GAChB0C,EAAWyL,GAASzY,KAAKkN,KAAMqnB,CAAO,EAC1C,GAAKvnB,EAAL,CAGIhN,KAAK2kB,cAAgB3X,EAASuI,UAC9BvV,KAAKuiC,sBAGT,IAIInvB,EAJAkC,EAAatV,KAAKgZ,OAAOjG,MAAM/F,EAASuI,UAAUpK,QAClDoI,EAAW+B,EAAWvJ,cAAc,IAAMwoB,CAAO,EACjD1f,EAAiBtB,EAASxH,cAAc,IAAMmM,EAAM5N,GAAKka,CAAsB,EAGnF,GAA6B,KAAzBlP,EAAWzF,UAAkB,CAmB7B,GAlBI7C,EAASkL,MAAM2nB,kBACf7/B,KAAKiiC,mBAAmBj1B,EAASkL,MAAM5N,GAAI,KAAMgL,CAAU,EAE3DtV,KAAK2P,eAAiB7Q,eAAasa,aAGnChG,GAFAD,EAAkBnG,EAASkL,MAAMmB,oBAC7B/D,EAAWvJ,cAAc,IAAMiB,EAASkL,MAAM5N,GAAKgP,CAA2B,EAAI,MACzDnN,eAAagH,EAAiBN,gBAAc,EAAI7S,KAAKuZ,aAGlFrB,EAAMjN,UACF+B,EAASkL,MAAMjN,WACfsI,EAASlH,UAAU2C,OAAOhC,EAASkL,MAAMjN,QAAQ,EAC7C4J,IACAA,EAAexI,UAAU2C,OAAOhC,EAASkL,MAAMjN,QAAQ,GAK/DiN,EAAME,aAAeF,EAAMqf,eACvBvqB,EAASkL,MAAME,aAAepL,EAASkL,MAAMqf,aAAa,CAC1D,IAAK,IAAIiG,EAAK,EAAGC,EAAKzwB,EAASkL,MAAME,YAAaolB,EAAKC,EAAG98B,OAAQ68B,CAAE,GAEhE,IADA,IACSK,EAAK,EAAGE,EADAN,EAAGD,GACazqB,MAAO8qB,EAAKE,EAAGp9B,OAAQk9B,CAAE,GAAI,CAC1D,IAAI5zB,EAAO8zB,EAAGF,GACd79B,KAAK8jC,kBAAkBxuB,EAAYrL,EAAMmJ,CAAQ,EAGhCG,EAASY,iBAAiB,sBAAsB,EAEtD8N,QAAQ,SAAUgQ,GAAiBA,EAAcjjB,SAAW,EAC3EkJ,EAAMqf,cAEF0P,GAAYzI,EADG3pB,EAAe9I,cAAc,yBAAyB,GAC5CM,UAAUrK,MAAMklC,MAAM,2BAA2B,IAE1EC,cAAY,CAAC3I,GAAeyI,CAAS,EAKjDjnC,KAAK2P,eAAiB7Q,eAAasa,aAC/BpM,EAASkL,MAAMmB,qBAC2B,IAAtCjG,EAAS9S,OAAO8zB,mBACZ,IADwChhB,EAAS9S,OAAO8zB,mBACnDp0B,KAAKq0B,gBAAgBjhB,EAAS9S,OAAQ0M,EAASkL,MAAM5N,EAAE,IAChEtK,KAAKs0B,qBAAqBlhB,CAAQ,IAIlCygB,EAAmBzgB,EAAS9S,OAAOyL,cAAc,IAAMiB,EAASkL,MAAM5N,GAAKka,CAAsB,IACtC,IAAvCqP,EAAiBO,mBACrCP,EAAiB7kB,UAEjBkhB,EAAiB9c,EAAS9S,OAAOyL,cAAc,IAAM/L,KAAKkN,KAAKqH,SAASvH,EAASuI,SAASrJ,WAAY,EAAE,GAAG5B,GAAKgmB,CAAqB,IAC9E,IAArCJ,EAAekE,mBACjClE,EAAelhB,WAK/B,IAWYwvB,EA2BIhrB,EATAyhB,EA7BZmS,EAAcp6B,EAASkL,MAC3BkvB,EAAYhmC,cAAc8W,EAAO,CAAA,CAAI,EACrCkvB,EAAYhmC,cAAc,CAAEgX,YAAapY,KAAKktB,QAAQka,EAAYhvB,YAAa,aAAcgvB,EAAY98B,EAAE,GAAK,CAAA,CAAI,EACpHtK,KAAKstB,mBACwB,KAAzBhY,EAAWzF,YAEPqI,EAAM2nB,kBACN7/B,KAAKm/B,mBAAmBiI,EAAY98B,GAAIuK,EAAgB7H,EAASuI,QAAQ,GAGzE2C,EAAME,aAAeF,EAAMqf,gBAE3BiH,EADmB3pB,EAAe9I,cAAc,yBAAyB,GAC5DM,UAAUe,IAAkC,WAA5Bg6B,EAAY7P,aAAoD,eAAtBv3B,KAAK2P,aAAkC8uB,GAA0BvH,EAAoB,EACxJzH,EAAWzvB,KAAK8/B,iBAAiBsH,EAAYhvB,YAAagvB,EAAY7P,YAAa6P,EAAY98B,GAAI88B,EAAYjtB,OAAQitB,EAAY/tB,oBAAqBrM,EAASuI,SAAUV,CAAc,EAC7LqF,SAAOuV,EAAU+O,CAAY,GAE7Bx+B,KAAK2kB,cAAgB3X,EAASuI,UAC9BvV,KAAK6uB,gBAGL3W,EAAMjN,WACNsI,EAASlH,UAAUe,IAAIg6B,EAAYn8B,QAAQ,EACvC4J,IACAA,EAAexI,UAAUe,IAAIg6B,EAAYn8B,QAAQ,EAIrDiN,EAAMiC,UACFna,KAAK2P,eAAiB7Q,eAAasa,YAAelB,EAAMmB,oBAMnDrZ,KAAK2P,eAAiB7Q,eAAama,SAAYmuB,EAAY1Q,YAG3D12B,KAAK2P,eAAiB7Q,eAAama,SAAWmuB,EAAY1Q,cAC3DljB,EAAcD,EAASxH,cAAc,IAAMq7B,EAAY98B,GAAKgmB,EAAwB0J,EAAqB,EAIzG/E,EAFcnJ,cAAYtY,EAAaX,gBAAc,EACxBvS,OAAOyL,cAAc,IAAMmM,EAAM5N,GAAKuT,CAAmB,KAEtFoX,EAAe2I,UAAYwJ,EAAYjtB,QAR3C5G,EAASxH,cAAc,wBAAwB,EAAE6xB,UAAYwJ,EAAYjtB,QALrE8a,EADiB7hB,EAAS9S,OAAOyL,cAAc,IAAMmM,EAAM5N,GAAKuT,CAAmB,KAEnFoX,EAAe2I,UAAYwJ,EAAYjtB,WAwB3DsN,EAAOvnB,UAAUmnC,iBAAmB,SAAUhvB,GAC1C,IAAI4tB,EAAe5tB,EAAW/N,GAC1B0C,EAAWwL,GAAcxY,KAAKkN,KAAM+4B,CAAY,EACpD,GAAKj5B,EAAL,CAGIhN,KAAK2kB,cAAgB3X,EAASuI,UAC9BvV,KAAKuiC,sBAGT,IAAIjtB,EAAatV,KAAKgZ,OAAOjG,MAAM/F,EAASuI,UAAUpK,QAClD8mB,EAAgB3c,EAAWvJ,cAAc,IAAMk6B,CAAY,EAC/D,GAA6B,KAAzB3wB,EAAWzF,UAAkB,CAC7B,IACIuD,EAAW,KAAA,EAYf,GAXIpT,KAAK2P,eAAiB7Q,eAAasa,aAGnChG,GAFAD,EAAkBnG,EAASkL,MAAMmB,oBAC7B/D,EAAWvJ,cAAc,IAAMiB,EAASkL,MAAM5N,GAAKgP,CAA2B,EAAI,MACzDnN,eAAagH,EAAiBN,gBAAc,EAAI7S,KAAKuZ,aAGlFlB,EAAWpN,UACP+B,EAASqL,WAAWpN,UACpBgnB,EAAc5lB,UAAU2C,OAAOhC,EAASqL,WAAWpN,QAAQ,EAG/DoN,EAAWtF,OACP/F,EAASqL,WAAWtF,MACpB,IAAK,IAAIyqB,EAAK,EAAGC,EAAKzwB,EAASqL,WAAWtF,MAAOyqB,EAAKC,EAAG98B,OAAQ68B,CAAE,GAAI,CACnE,IAAIvzB,EAAOwzB,EAAGD,GACdx9B,KAAK8jC,kBAAkBxuB,EAAYrL,EAAMmJ,CAAQ,GAKjE,IAOYqc,EAPR6X,EAAmBt6B,EAASqL,WAChCivB,EAAiBlmC,cAAciX,EAAY,CAAA,CAAI,EAC/CivB,EAAiBlmC,cAAc,CAAE2R,MAAO/S,KAAKktB,QAAQoa,EAAiBv0B,MAAO,OAAQu0B,EAAiBh9B,EAAE,GAAK,CAAA,CAAI,EACjHtK,KAAKstB,mBACwB,KAAzBhY,EAAWzF,WACPwI,EAAWtF,QACP8B,EAAiBS,EAAWvJ,cAAc,IAAMiB,EAASkL,MAAM5N,GAAKka,CAAsB,EAC1FiL,EAAWzvB,KAAK8+B,YAAYwI,EAAiBv0B,MAAO/F,EAASkL,MAAMqf,YAAavqB,EAASkL,MAAM5N,GAAI0C,EAASkL,MAAMiC,OAAQnN,EAASkL,MAAMmB,oBAAqBrM,EAASuI,SAAUV,CAAc,EACnMqF,SAAOuV,EAAUwC,CAAa,GAGlCjyB,KAAK2kB,cAAgB3X,EAASuI,UAC9BvV,KAAK6uB,gBAGLxW,EAAWpN,UACXgnB,EAAc5lB,UAAUe,IAAIk6B,EAAiBr8B,QAAQ,IAS7Dwc,EAAOvnB,UAAU6vB,WAAa,SAAU9lB,GACpC,IASIqL,EAGIT,EAIAzB,EAQIqe,EA+CJzc,EASI6pB,EAhFR0H,EAASt8B,EAAKK,GACd0C,EAAWC,EAAQjN,KAAKkN,KAAMq5B,CAAM,EACnCv5B,IAGDhN,KAAK2kB,cAAgB3X,EAASuI,UAC9BvV,KAAKuiC,uBAILhvB,GADA+B,EAAatV,KAAKgZ,OAAOjG,MAAM/F,EAASuI,UAAUpK,SAC5BY,cAAc,IAAMiB,EAASkL,MAAM5N,EAAE,IAEvDuK,EAAiBtB,EAASxH,cAAc,IAAMiB,EAASkL,MAAM5N,GAAKka,CAAsB,EAExFta,EADAunB,EAAgB,KAGhBre,EADAD,EAAkB,KAAA,EAEO,KAAzBmC,EAAWzF,YACP7P,KAAK2P,eAAiB7Q,eAAasa,aAGnChG,GAFAD,EAAkBnG,EAASkL,MAAMmB,oBAC7B/D,EAAWvJ,cAAc,IAAMiB,EAASkL,MAAM5N,GAAKgP,CAA2B,EAAI,MACzDnN,eAAagH,EAAiBN,gBAAc,EAAI7S,KAAKuZ,aAElFvZ,KAAK2P,eAAiB7Q,eAAasa,YAAcpM,EAAS/C,KAAKiP,iBAAmBja,cAAYizB,UAC9FT,EAAgBre,EAAS9S,OAAOyL,cAAc,IAAMw6B,EAAS/hB,CAAsB,EACnFta,EAAUkJ,EAAS9S,OAAOyL,cAAc,IAAMw6B,CAAM,EAChDt8B,EAAKiP,gBAAkBjP,EAAKiP,iBAAmBja,cAAYizB,WACvDD,EAAgBpd,EAAe9I,cAAc,IAAMiB,EAASqL,WAAW/N,EAAE,IAEzE2nB,EAAcznB,YAAYinB,CAAa,IAK/CA,EAAgB5c,EAAe9I,cAAc,IAAMw6B,EAAS/hB,CAAsB,EAClFta,EAAUoL,EAAWvJ,cAAc,IAAMw6B,CAAM,EAC1C9U,EAAAA,IACere,EAAWA,EAAS9S,OAA8DuU,GAAvD9I,cAAc,IAAMw6B,EAAS/hB,CAAsB,EAE7Fta,EAAAA,IACSkJ,EAAWA,EAAS9S,OAAqCgV,GAA9BvJ,cAAc,IAAMw6B,CAAM,EAExC,YAAvBv5B,EAAS/C,KAAKgC,OACT/B,EAAAA,GACSoL,EAAWvJ,cAAc,IAAMw6B,EAAS,iBAAiB,GAGhD,gBAAvBv5B,EAAS/C,KAAKgC,MAA0BjM,KAAK2P,eAAiB7Q,eAAama,UAC3E/O,EAAUoL,EAAWvJ,cAAc,IAAMw6B,EAAS3qB,CAAgC,GAElF5b,KAAK2P,eAAiB7Q,eAAasa,YAAcnP,EAAKiP,iBAAmBja,cAAYizB,WACrFlyB,KAAK6yB,oBAAoB7lB,EAAS/C,KAAM+C,EAASuI,SAAUvI,EAASkL,MAAMmB,oBAAqBrM,EAASkL,MAAM5N,GAAI0C,EAASkL,MAAMiC,OAAQsX,EAAe5c,CAAc,EACjK7H,EAAS/C,KAAKgC,OAAS/M,iBAAe4zB,UAAc9lB,EAAS/C,KAAKgC,OAAS/M,iBAAewX,aAC1FzM,EAAKgC,OAAS/M,iBAAe6zB,aAAiB9oB,EAAKgC,OAAS/M,iBAAeiqB,SAC5EnpB,KAAKgzB,iBAAiBhmB,EAAS/C,KAAMwnB,EAAezkB,EAASkL,MAAMmB,oBAAqB,CAAA,CAAI,IAKpGpP,EAAKgB,UACD+B,EAAS/C,KAAKgB,UACdwmB,EAAcplB,UAAU2C,OAAOhC,EAAS/C,KAAKgB,QAAQ,EAG7DjL,KAAKm+B,gBAAgBnxB,EAAS/C,KAAMC,CAAO,EAC3CA,EAAQ8E,SACJi4B,EAAYxV,EAAcplB,UAAUrK,MAAMklC,MAAM,wCAAwC,IAExFC,cAAY,CAAC1V,GAAgBwV,CAAS,GAG1CjyB,EAAahI,EAAS/C,MACf7I,cAAc6I,EAAM,CAAA,CAAI,EACnCjK,KAAKstB,mBACwB,KAAzBhY,EAAWzF,YAEPmF,EAAWuH,uBAAyB/C,GAAiBxE,EAAWuH,qBAAqB,IACrFkV,EAAcplB,UAAUe,IAAIwN,EAA+B,EAC3D5a,KAAK4Z,YAAYvD,KAAK,CAAE/L,GAAImnB,EAAcnnB,GAAIyP,KAAM/E,EAAWuH,sBAAuB,GAEtFsiB,EAAO7pB,EAAWjK,WACI,eAAtB/K,KAAK2P,eACLkvB,EAAS7pB,EAAW0c,eAAiB1yB,iBAAeiE,OAAW+R,EAAW0c,aAAe1yB,iBAAe+D,QACnGiS,EAAWkE,iBAAmBja,cAAYizB,SAAalzB,iBAAe+D,OAAS/D,iBAAegE,MACnGgS,EAAW5T,cAAc,CAAE2J,WAAY8zB,GAAQ,CAAA,CAAI,GAEnDA,EAAO7/B,iBAAeiE,MACtBwuB,EAAcplB,UAAUe,IAAIssB,GAA6BH,EAA+B,EAGpFsF,EAAO7/B,iBAAe+D,OACtB0uB,EAAcplB,UAAUe,IAAIusB,EAA4B,EAGxDlI,EAAcplB,UAAUe,IAAIwsB,EAA2B,EAG/D55B,KAAKwgC,iBAAiBxrB,EAAYyc,CAAa,EACpB,YAAvBzkB,EAAS/C,KAAKgC,MAAsBiL,SAASnL,cAAc,IAAMw6B,EAAS,YAAY,EAAEn2B,QAAQ,2BAA2B,GAAKnG,EAAKiP,iBAAmBja,cAAYizB,UACpKlyB,KAAK6yB,oBAAoB7lB,EAAS/C,KAAM+C,EAASuI,SAAUvI,EAASkL,MAAMmB,oBAAqBrM,EAASkL,MAAM5N,GAAI0C,EAASkL,MAAMiC,OAAQsX,EAAe5c,CAAc,EAEhJ,eAAtB7U,KAAK2P,cAAiC3C,EAASkL,MAAMmB,qBAAuBjG,IAClC,IAAtCA,EAAS9S,OAAO8zB,mBACuB,IAAtChhB,EAAS9S,OAAO8zB,mBACbp0B,KAAKq0B,gBAAgBjhB,EAAS9S,OAAQ0M,EAASkL,MAAM5N,EAAE,IAC3DtK,KAAKs0B,qBAAqBlhB,CAAQ,EAGtCpT,KAAK2kB,cAAgB3X,EAASuI,UAC9BvV,KAAK6uB,gBAEL5kB,EAAKgB,UACLwmB,EAAcplB,UAAUe,IAAI4H,EAAW/J,QAAQ,EAE/C,CAAE+J,EAAmB,UAAKyc,EAAcplB,UAAUC,SAASo0B,EAAsB,GACjFjP,EAAcplB,UAAU2C,OAAO0xB,EAAsB,EAEzD1gC,KAAKunC,kBAAkBvyB,EAAW1K,GAAI0K,EAAWhK,QAAQ,KAI7DhL,KAAKuoB,cAAgB,CAAA,EACrBvoB,KAAKooB,WAAW/R,KAAKpM,CAAI,EACzBjK,KAAKqoB,WAAWpe,EAAKK,IAAM0C,EAASuI,YAG5CkS,EAAOvnB,UAAU4jC,kBAAoB,SAAUxuB,EAAYrL,EAAMmJ,GAC7D,IAAI8O,EAAM,KACNliB,KAAK2P,eAAiB7Q,eAAama,SACnCiJ,EAAOjY,EAAKiP,eAAiBja,cAAYga,QAAW3D,EAAWvJ,cAAc,IAAM9B,EAAKK,EAAE,EAAI,KAC5E,gBAAdL,EAAKgC,OACLiW,EAAOjY,EAAKiP,eAAiBja,cAAYga,QAAW3D,EAAWvJ,cAAc,IAAM9B,EAAKK,GAAKsR,CAAgC,EAAI,OAOhIsG,GAFLA,EAAOjY,EAAKiP,eAAiBja,cAAYma,WAAc9D,EAAWvJ,cAAc,IAAM9B,EAAKK,EAAE,EAAI,OAGvF8I,EAAS9S,OAAOyL,cAAc,IAAM9B,EAAKK,EAAE,EAGrD4X,IACAliB,KAAKm+B,gBAAgBl0B,EAAMiY,CAAG,GACZ,gBAAdjY,EAAKgC,MAA0BjM,KAAK2P,eAAiB7Q,eAAasa,WAClElC,SAAS0O,eAAe3b,EAAKK,GAAKka,CAAsB,EAGxDtC,EAAI9R,QAAQ,IAAMnG,EAAKK,GAAKka,CAAsB,GAHQxV,WAatEyY,EAAOvnB,UAAUsnC,WAAa,SAAUjB,GACpCvmC,KAAKunC,kBAAkBhB,EAAQ,CAAA,CAAK,GAQxC9e,EAAOvnB,UAAUunC,YAAc,SAAUlB,GACrCvmC,KAAKunC,kBAAkBhB,EAAQ,CAAA,CAAI,GAQvC9e,EAAOvnB,UAAU+M,QAAU,SAAUs5B,GACjC,OAAOt5B,EAAQjN,KAAKkN,KAAMq5B,CAAM,EAAEt8B,MAEtCwd,EAAOvnB,UAAUqnC,kBAAoB,SAAUhB,EAAQX,GACnD,IAOI1jB,EANAwlB,EAAa,CAAA,EACb16B,EAAWC,EAAQjN,KAAKkN,KAAMq5B,CAAM,EACxC,GAAKv5B,IAGLA,EAAS/C,KAAK7I,cAAc,CAAE4J,SAAU46B,GAAc,CAAA,CAAI,EAE/B,gBAAvB54B,EAAS/C,KAAKgC,KACdiW,EAAMpV,EAAe9M,KAAMumC,EAAS3qB,EAAkC5O,CAAQ,EAElD,YAAvBA,EAAS/C,KAAKgC,MACnBiW,EAAMhL,SAASnL,cAAc,IAAMw6B,CAAM,GAKrCmB,EAAa,CAAA,EAHbxlB,EAAMhL,SAASnL,cAAc,IAAMw6B,EAAS,iBAAiB,EAOjErkB,EAAMpV,EAAe9M,KAAMumC,EAAQv5B,CAAQ,EAE3CkV,GAAK,CACL,IAAIhY,EAAUkG,UAAQ8R,EAAK,gBAAgB,EACvCvJ,EAAa3Y,KAAK8hC,kBAAkB90B,EAAS/C,IAAI,EACrD09B,EAAY/B,EAAa,CAAC17B,EAAQmC,UAAUC,SAASo0B,EAAsB,EACvEx2B,EAAQmC,UAAUC,SAASo0B,EAAsB,EACrD,GAAmB,aAAf/nB,GACA,GAAIgvB,EACA,GAAmB,cAAfhvB,GAAoD,eAAtB3Y,KAAK2P,aAA+B,CAClEmJ,GAAsBoJ,EAAK,eAAgB0jB,CAAU,EACrD,IAAK,IAAI5kC,EAAI,EAAGA,EAAIgM,EAAS/C,KAAKwR,oBAAoB1I,MAAMpS,OAAQK,CAAC,GAEjE8X,GADa5B,SAASnL,cAAc,IAAMw6B,EAAS3qB,EAAmC5a,CAAC,EACzD,MAAO4kC,CAAU,OAGlD,GAAmB,cAAfjtB,GAAoD,YAAtB3Y,KAAK2P,aACxC,IAAS3O,EAAI,EAAGA,EAAIgM,EAAS/C,KAAKwR,oBAAoB1I,MAAMpS,OAAQK,CAAC,GAEjE8X,GADaoJ,EAAInW,cAAc,IAAMw6B,EAAS3qB,EAAmC5a,CAAC,EACpD,MAAO4kC,CAAU,MAG/B,YAAfjtB,GACLuJ,EAAI7V,UAAUE,OAAOm0B,GAAwBkF,CAAU,EACvD1uB,SAAS0O,eAAe2gB,EAAS,cAAc,EAAEl6B,UAAUE,OAAOm0B,GAAwBkF,CAAU,EAChG8B,GACiBxwB,SAAS0O,eAAe2gB,EAAS,iBAAiB,EACxDl6B,UAAUE,OAAOm0B,GAAwBkF,CAAU,GAIlE9sB,GAAsBoJ,EAAKvJ,EAAYitB,CAAU,OAKzD1jB,EAAI7V,UAAUE,OAAOm0B,GAAwBkF,CAAU,EACvD1jB,EAAI0lB,gBAAgB,WAAYhC,CAAU,EAE9C17B,EAAQmC,UAAUE,OAAOm0B,GAAwB1zB,EAAS/C,KAAKe,QAAQ,IAG/Eyc,EAAOvnB,UAAU2nC,aAAe,WAC5Bv4B,eAAaN,OAAOuS,OAAQ,SAAUvhB,KAAK0qB,aAAa,EACxDpb,eAAaN,OAAOkI,SAAS4M,KAAM,UAAW9jB,KAAK2qB,mBAAmB,EACtErb,eAAaN,OAAOkI,SAAU,YAAalX,KAAK4qB,iBAAiB,EACjEtb,eAAaN,OAAOkI,SAAU,SAAUlX,KAAK4qB,iBAAiB,GAElEnD,EAAOvnB,UAAU4J,QAAU,WACvB9J,KAAK6qB,qBAAqB/gB,UAC1B9J,KAAK6qB,qBAAuB,KAC5B9P,GAAe/a,KAAKoM,OAAO,EACvBpM,KAAK8nC,YACL9nC,KAAK46B,sBAAsB56B,KAAK2kB,WAAW,EAE/C3kB,KAAK29B,gBAAgB39B,KAAKkN,IAAI,EACzBlN,KAAKgvB,oBACNhvB,KAAKs9B,uBAETt9B,KAAKu1B,eAAiBxU,KAAAA,EAClB/gB,KAAKyrB,eACLzrB,KAAKyrB,aAAa3hB,UAClB9J,KAAKyrB,aAAe,MAEpBzrB,KAAK+gC,gBACL/xB,SAAOhP,KAAK+gC,aAAa,EACzB/gC,KAAK+gC,cAAgB,MAEzBlhC,GAAOK,UAAU4J,QAAQvI,KAAKvB,IAAI,EAClCA,KAAKgZ,OAAOlP,UACZ9J,KAAKgZ,OAAS+H,KAAAA,EACd/gB,KAAKgoB,iBAAmB,GACxBhoB,KAAKmoB,aAAe,GACpBnoB,KAAKioB,eAAiB,GACtBjoB,KAAKkoB,eAAiB,GACtBloB,KAAKooB,WAAa,GAClBpoB,KAAKqoB,WAAa,GAClBrZ,SAAOhP,KAAKoM,QAAQL,cAAc,IAAM/L,KAAKoM,QAAQ9B,GAAK8iB,EAAgB,CAAC,EAC3EptB,KAAKoM,QAAQgU,MAAMoT,eAAepF,EAAgC,EAClEpuB,KAAKoM,QAAQgU,MAAMoT,eAAenF,EAAyC,EAC3EruB,KAAKoM,QAAQgU,MAAMoT,eAAe,OAAO,EACrCxzB,KAAKiL,UACLk8B,cAAY,CAACnnC,KAAKoM,SAAUpM,KAAKiL,SAASwB,MAAM0R,CAAe,CAAC,EAEpEne,KAAKoM,QAAQC,UAAU2C,OAAO2a,GAAmB4R,GAAkCU,GAA2BkB,GAA8B3O,GAA2B,OAAO,EAC9KxuB,KAAK6nC,gBAUTpgB,EAAOvnB,UAAU6nC,kBAAoB,SAAUC,EAASC,GAEpD,IADA,IAAQpK,EACCL,EAAK,EAAGO,EAAKx+B,OAAOwtB,KAAKib,CAAO,EAAGxK,EAAKO,EAAGp9B,OAAQ68B,CAAE,GAE1D,OADWO,EAAGP,IAEV,IAAK,eACDx9B,KAAK+uB,eACL,MACJ,IAAK,WACGkZ,EAAQh9B,WACPwyB,EAAKz9B,KAAKoM,QAAQC,WAAW2C,OAAOtN,MAAM+7B,EAAIwK,EAAQh9B,SAASwB,MAAM0R,CAAe,CAAC,EAEtF6pB,EAAQ/8B,WACP4yB,EAAK79B,KAAKoM,QAAQC,WAAWe,IAAI1L,MAAMm8B,EAAImK,EAAQ/8B,SAASwB,MAAM0R,CAAe,CAAC,EAEvF,MACJ,IAAK,cACDne,KAAKoM,QAAQC,UAAUE,OAAOiiB,GAA2BxuB,KAAKuuB,WAAW,EACzEvuB,KAAKgZ,OAAO5M,QAAQL,cAAc,YAAY,EAAEqU,MAAMwO,QAAU5uB,KAAKuuB,YAAc,OAAS,QACvFvuB,KAAKuuB,aACNvuB,KAAK6uB,gBAET,MACJ,IAAK,SACD7uB,KAAK4Y,qBAAqB,CAAEjO,OAAQ3K,KAAK2K,OAAQ,EACjD,MACJ,IAAK,oBACD3K,KAAK4Y,qBAAqB,CAAE/N,kBAAmB7K,KAAK6K,kBAAmB,EACvE,MACJ,IAAK,YACD7K,KAAKoM,QAAQC,UAAUE,OAAOod,GAAmB3pB,KAAK4K,SAAS,EAC/D5K,KAAK4Y,qBAAqB,CAAEhO,UAAWo9B,EAAQp9B,UAAW,EACtD5K,KAAKyrB,cACLzrB,KAAKyrB,aAAarqB,cAAc,CAAEwJ,UAAWo9B,EAAQp9B,UAAW,EAEpE,MACJ,IAAK,kBACD,IAAK,IAAI5J,EAAI,EAAGA,EAAIhB,KAAKkN,KAAKvM,OAAQK,CAAC,GAAI,CACvC,IAAI2vB,EAAa3wB,KAAKgZ,OAAOjG,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGf,QAC3D6M,EAAMhY,KAAKkN,KAAKqH,SAASvT,EAAEkL,WAAY,EAAE,GAC7C,GAAIykB,EAAW5kB,cAAc,IAAMyjB,EAAsB,EACrD,IAAK,IAAIwO,EAAK,EAAGC,EAAKjmB,EAAIxC,OAAQwoB,EAAKC,EAAGt9B,OAAQq9B,CAAE,GAAI,CACpD,IAEQpuB,EAQIxD,EAVR8L,EAAQ+lB,EAAGD,GACX9lB,EAAM2nB,mBACFjwB,EAAYyvB,GAAqC,KAAOr/B,KAAKs/B,iBAAmBC,IAChFrnB,EAAMwe,aACFtqB,EAAUukB,EAAW5kB,cAAc,IAAMmM,EAAM5N,GAAKgmB,EAAwB0J,EAAqB,EACtF7tB,eAAaC,EAASyG,gBAAc,EACpBvS,OAAOyL,cAAc,IAAMmM,EAAM5N,GAAKk1B,EAAqB,EAC1E5vB,UAAYA,IAI5BxD,EADcukB,EAAW5kB,cAAc,IAAMmM,EAAM5N,GAAKk1B,EAAqB,GACrE5vB,UAAYA,IAMxC,MACJ,IAAK,cACD,IACIs4B,EADSloC,KAAKgZ,OAAO5M,QACA+H,iBAAiB,iBAAiB,EAAEI,SAASyzB,EAAQrjB,YAAYzY,WAAY,EAAE,GAClGg8B,EAAY77B,UAAUC,SAAS,UAAU,GAAK47B,EAAY77B,UAAUC,SAAS,WAAW,GAC1FtM,KAAKgZ,OAAO5X,cAAc,CAAEusB,aAAcqa,EAAQrjB,YAAa,EAEnE,MAEJ,IAAK,eACD3kB,KAAKgZ,OAAO5X,cAAc,CAAE6sB,UAAW+Z,EAAQ9Z,aAAc,EAC7D,MACJ,IAAK,OACDluB,KAAKu9B,aAAayK,EAAQ96B,IAAI,EAC9B,MACJ,IAAK,iBACD,IAASlM,EAAI,EAAGA,EAAIhB,KAAKwpB,eAAe7oB,OAAQK,CAAC,GACzCgnC,EAAQxe,eAAejV,SAASvT,EAAEkL,WAAY,EAAE,IAChDlM,KAAK6pB,0BAA0Bse,qBAAqBH,EAAQxe,eAAejV,SAASvT,EAAEkL,WAAY,EAAE,GAAIlM,KAAKwpB,eAAejV,SAASvT,EAAEkL,WAAY,EAAE,EAAE,EAG/J,MACJ,IAAK,QACDlM,KAAKoM,QAAQgU,MAAMlO,MAAQiT,aAAW6iB,EAAQ91B,KAAK,EACnDlS,KAAK6uB,gBACL,MACJ,IAAK,WACG7uB,KAAK+pB,sBACL/pB,KAAK+pB,qBAAqBqe,eAAepoC,KAAKspB,QAAQ,EAEzCtpB,KAAKgZ,OAAc,MACzBoR,kBACX,MAEJ,IAAK,gBACGpqB,KAAKiqB,uBACLjqB,KAAKiqB,sBAAsBoe,oBAAoBroC,KAAKopB,aAAa,EAEhDppB,KAAKgZ,OAAc,MACzBoR,kBACf,MAEJ,IAAK,mBACGpqB,KAAK+gC,gBACL/xB,SAAOhP,KAAK+gC,aAAa,EACzB/gC,KAAK+gC,cAAgB,KACrB/gC,KAAKgZ,OAAO5M,QAAQgU,MAAM+N,YAAYE,GAA2C,KAAK,GAEtFruB,KAAK6gC,kBACL7gC,KAAKmqB,yBAEOnqB,KAAKgZ,OAAc,MACzBoR,kBACV,MAEJ,IAAK,qBACGpqB,KAAKgvB,mBACLhvB,KAAKs9B,uBAGLt9B,KAAKivB,sBAOzB7uB,EAAW,CACPoB,WAAS,SAAS,GACnBimB,EAAOvnB,UAAW,eAAgB,KAAA,CAAM,EAC3CE,EAAW,CACPoB,WAAS,EAAE,GACZimB,EAAOvnB,UAAW,WAAY,KAAA,CAAM,EACvCE,EAAW,CACPoB,WAAS,CAAA,CAAK,GACfimB,EAAOvnB,UAAW,gBAAiB,KAAA,CAAM,EAC5CE,EAAW,CACPoB,WAAS,EAAE,GACZimB,EAAOvnB,UAAW,uBAAwB,KAAA,CAAM,EACnDE,EAAW,CACP0B,UAAQ,GAAIwB,EAAgB,GAC7BmkB,EAAOvnB,UAAW,WAAY,KAAA,CAAM,EACvCE,EAAW,CACP0B,UAAQ,GAAI6B,EAAa,GAC1B8jB,EAAOvnB,UAAW,gBAAiB,KAAA,CAAM,EAC5CE,EAAW,CACPoB,WAAS,EAAE,GACZimB,EAAOvnB,UAAW,kBAAmB,KAAA,CAAM,EAC9CE,EAAW,CACPoB,WAAS,CAAA,CAAK,GACfimB,EAAOvnB,UAAW,cAAe,KAAA,CAAM,EAC1CE,EAAW,CACPoB,WAAS,OAAO,GACjBimB,EAAOvnB,UAAW,SAAU,KAAA,CAAM,EACrCE,EAAW,CACPoB,WAAS,CAAC,GACXimB,EAAOvnB,UAAW,cAAe,KAAA,CAAM,EAC1CE,EAAW,CACP0B,UAAQ,GAAIwmC,sBAAoB,GACjC7gB,EAAOvnB,UAAW,eAAgB,KAAA,CAAM,EAC3CE,EAAW,CACPiC,aAAW,GAAIgB,CAAS,GACzBokB,EAAOvnB,UAAW,OAAQ,KAAA,CAAM,EACnCE,EAAW,CACPiC,aAAW,GAAIuB,EAA2B,GAC3C6jB,EAAOvnB,UAAW,iBAAkB,KAAA,CAAM,EAC7CE,EAAW,CACPoB,WAAS,MAAM,GAChBimB,EAAOvnB,UAAW,QAAS,KAAA,CAAM,EACpCE,EAAW,CACPoB,WAAS,EAAE,GACZimB,EAAOvnB,UAAW,mBAAoB,KAAA,CAAM,EAC/CE,EAAW,CACPoB,WAAS,CAAA,CAAK,GACfimB,EAAOvnB,UAAW,qBAAsB,KAAA,CAAM,EACjDE,EAAW,CACPqB,WACDgmB,EAAOvnB,UAAW,eAAgB,KAAA,CAAM,EAC3CE,EAAW,CACPqB,WACDgmB,EAAOvnB,UAAW,cAAe,KAAA,CAAM,EAC1CE,EAAW,CACPqB,WACDgmB,EAAOvnB,UAAW,kBAAmB,KAAA,CAAM,EAC9CE,EAAW,CACPqB,WACDgmB,EAAOvnB,UAAW,mBAAoB,KAAA,CAAM,EAC/CE,EAAW,CACPqB,WACDgmB,EAAOvnB,UAAW,uBAAwB,KAAA,CAAM,EACnDE,EAAW,CACPqB,WACDgmB,EAAOvnB,UAAW,oBAAqB,KAAA,CAAM,EAChDE,EAAW,CACPqB,WACDgmB,EAAOvnB,UAAW,UAAW,KAAA,CAAM,EACtCE,EAAW,CACPqB,WACDgmB,EAAOvnB,UAAW,oBAAqB,KAAA,CAAM,EAChDE,EAAW,CACPqB,WACDgmB,EAAOvnB,UAAW,qBAAsB,KAAA,CAAM,EACxCsnB,GAAWpnB,EAAW,CAC3BmoC,yBACD9gB,CAAM,GA54JT,SAASA,EAAO+gB,EAASp8B,GAIrB,OAFAob,GAASihB,OAAO7+B,GAAc0D,GAAgBoF,GAAgB4D,GAAmB7F,GAAgB4K,EAAiB,EAC1Gxb,GAAO0B,KAAKvB,KAAMwoC,EAASp8B,CAAO,GAAKpM,KCjCnD0oC,EAAexoC,UAAU2J,cAAgB,WACrC,MAAO,kBAEX6+B,EAAexoC,UAAU4J,QAAU,WAC3B9J,KAAK2oC,aACL3oC,KAAK4oC,aAET5oC,KAAK+J,OAAS,MASlB2+B,EAAexoC,UAAU8pB,eAAiB,SAAU6e,GAChD,IAOI1b,EACAK,EARArjB,EAAQnK,KACP6oC,EAAgBxf,UAGrBrpB,KAAK8oC,WAAa9oC,KAAK+J,OAAOM,cAAc,SAAU,CAClDC,GAAItK,KAAK+J,OAAOqC,QAAQ9B,GAAKy+B,GAChC,EAEGvb,GADAL,EAASntB,KAAK+J,OAAOiP,OAAO5M,SACRL,cAAc,YAAY,EAClDohB,EAAOrd,aAAa9P,KAAK8oC,WAAYtb,CAAU,EAC/CxtB,KAAK2oC,YAAc,IAAI91B,iBAAe,CAClC1H,QAAS09B,EAAgB9mC,KACzB6I,UAAW5K,KAAK+J,OAAOa,UACvBK,SAAU,kCACVK,QAAS,WACL6hB,EAAO/M,MAAM+N,YAAYC,GAAkCjkB,EAAM2+B,WAAWznB,YAAc,IAAI,GAElGvS,YAAa9O,KAAKgpC,eAAex5B,KAAKxP,KAAM,CAAA,CAAK,EACjDiP,WAAYjP,KAAKgpC,eAAex5B,KAAKxP,KAAM,CAAA,CAAI,EAC/CmQ,MAAOnQ,KAAKipC,cAAcz5B,KAAKxP,KAAM,CAAA,CAAK,EAC1CmP,KAAMnP,KAAKipC,cAAcz5B,KAAKxP,KAAM,CAAA,CAAI,GACzCA,KAAK8oC,UAAU,EACd9oC,KAAK+J,OAAOuf,SAAS/I,cACrBvgB,KAAK2oC,YAAYvnC,cAAc,CAAEd,OAAQN,KAAK+J,OAAOuf,SAAS/I,cAAe,EAG7EvgB,KAAKkpC,iBAAiBL,CAAe,EAEzC7oC,KAAK+J,OAAOiP,OAAOmwB,yBACnBnpC,KAAKopC,mBAAmBP,CAAe,EACvC7oC,KAAKqpC,sBAETX,EAAexoC,UAAUkpC,mBAAqB,SAAUP,GAChDrvB,GAAiBqvB,EAAgBtsB,qBAAqB,IACtDvc,KAAK8oC,WAAWz8B,UAAUe,IAAIwN,EAA+B,EAC7D5a,KAAK+J,OAAO6P,YAAYvD,KAAK,CAAE/L,GAAItK,KAAK8oC,WAAWx+B,GAAIyP,KAAM8uB,EAAgBtsB,sBAAuB,IAG5GmsB,EAAexoC,UAAUmpC,kBAAoB,WACrCrpC,KAAK+J,OAAOuf,SAASqD,SACrB3sB,KAAK+J,OAAOme,eAAyB,SAAI,GACzCloB,KAAK+J,OAAOme,eAAyB,SAAE7R,KAAK,CAAE/L,GAAItK,KAAK8oC,WAAWx+B,GAAI2B,KAAM,WAAY0gB,OAAQ3sB,KAAK+J,OAAOuf,SAASqD,OAAQ,IAGrI+b,EAAexoC,UAAU8oC,eAAiB,SAAU9iB,EAAQzS,GAEpD,CAACyS,GAAUzS,EAAKvD,OAASuD,EAAKvD,MAAM5P,OAAO8P,QAAQ,gBAAgB,IACnEqD,EAAKC,OAAS,CAAA,GAElB,IAGQ0J,EAHJlN,EAAQgW,EAASlmB,KAAK+J,OAAOuf,SAASra,WACtCjP,KAAK+J,OAAOuf,SAASxa,YACrBoB,IACIkN,EAAY,CAAE1J,OAAQD,EAAKC,OAAQtH,QAASqH,EAAKrH,QAAS8D,MAAOuD,EAAKvD,OAC1EA,EAAM3O,KAAKvB,KAAMod,CAAS,EAC1B3J,EAAKC,OAAS0J,EAAU1J,SAGhCg1B,EAAexoC,UAAU+oC,cAAgB,SAAU/iB,EAAQzS,IACzCyS,EAASlmB,KAAK2oC,YAAYroC,OAASN,KAAK2oC,YAAYv8B,SAC1D2I,QACJ7E,EAAQgW,EAASlmB,KAAK+J,OAAOuf,SAASna,KAAOnP,KAAK+J,OAAOuf,SAASnZ,MAClED,IACIkN,EAAY,CAAEhR,QAASqH,EAAKrH,SAChC8D,EAAM3O,KAAKvB,KAAMod,CAAS,IAIlCsrB,EAAexoC,UAAUopC,cAAgB,SAAUv2B,GAE/C,IADA,IAAIw2B,EAAY,GACPvoC,EAAI,EAAGA,EAAI+R,EAAMpS,OAAQK,CAAC,GAAI,CACnC,IAAIiJ,EAAO8I,EAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAC1Cq9B,EAAUlzB,KAAK,CACXpU,QAASgI,EAAKhI,QACdqI,GAAIL,EAAKK,GACTk/B,UAAWv/B,EAAKu/B,UAChBznC,KAAMkI,EAAKlI,KACX0nC,IAAKx/B,EAAKw/B,IACV12B,MAAO/S,KAAKspC,cAAcr/B,EAAK8I,KAAK,EACvC,EAEL,OAAOw2B,GAEXb,EAAexoC,UAAUgpC,iBAAmB,SAAUQ,GAClD,IAAIv/B,EAAQnK,KACR2pC,EAAS3pC,KAAK+J,OAAOM,cAAc,KAAM,CACzCC,GAAItK,KAAK+J,OAAOqC,QAAQ9B,GAAKs/B,GAChC,EACD5pC,KAAK2oC,YAAYvnC,cAAc,CAAEd,OAAQqpC,EAAQ,EACjD3pC,KAAK6pC,SAAW,IAAIC,OAAK,CACrBvS,YAAa,WACb3sB,UAAW5K,KAAK+J,OAAOa,UACvBK,SAAU,gBACV8+B,kBAAmBL,EAAYK,kBAC/Bh3B,MAAO/S,KAAKspC,cAAcI,EAAYngB,SAAS,EAC/CygB,gBAAiBN,EAAYM,gBAC7BryB,SAAU+xB,EAAY/3B,aACtB7C,YAAa9O,KAAKiqC,gBAAgBz6B,KAAKxP,KAAM,CAAA,CAAK,EAClDiP,WAAYjP,KAAKiqC,gBAAgBz6B,KAAKxP,KAAM,CAAA,CAAI,EAChDiT,iBAAkBjT,KAAKiT,iBAAiBzD,KAAKxP,IAAI,EACjDkqC,QAASlqC,KAAKmqC,eAAe36B,KAAKxP,KAAM,CAAA,CAAK,EAC7CoqC,OAAQpqC,KAAKmqC,eAAe36B,KAAKxP,KAAM,CAAA,CAAI,EAC3CoP,OAAQpP,KAAKqqC,WAAW76B,KAAKxP,IAAI,GAClC2pC,CAAM,EACTr6B,eAAalC,IAAIu8B,EAAQ,UAAW,SAAUj+B,GAC5B,QAAVA,EAAEnL,KACF4J,EAAMw+B,YAAYp8B,UAEvBvM,IAAI,GAEX0oC,EAAexoC,UAAU+pC,gBAAkB,SAAU/jB,EAAQzS,GACzD,IAGQ2J,EAHJlN,EAAQgW,EAASlmB,KAAK+J,OAAOuf,SAASra,WACtCjP,KAAK+J,OAAOuf,SAASxa,YACrBoB,IACIkN,EAAY,CACZ1J,OAAQD,EAAKC,OAAQtH,QAASqH,EAAKrH,QAAS8D,MAAOuD,EAAKvD,MACxD6C,MAAOU,EAAKV,MAAOu3B,WAAY72B,EAAK62B,YAExCp6B,EAAM3O,KAAKvB,KAAMod,CAAS,EAC1B3J,EAAKC,OAAS0J,EAAU1J,SAGhCg1B,EAAexoC,UAAUiqC,eAAiB,SAAUjkB,EAAQzS,GACpDvD,EAAQgW,EAASlmB,KAAK+J,OAAOuf,SAASna,KAAOnP,KAAK+J,OAAOuf,SAASnZ,MAClED,IACIkN,EAAY,CAAEhR,QAASqH,EAAKrH,QAAS2G,MAAOU,EAAKV,MAAOu3B,WAAY72B,EAAK62B,YAC7Ep6B,EAAM3O,KAAKvB,KAAMod,CAAS,IAGlCsrB,EAAexoC,UAAU+S,iBAAmB,SAAUQ,GAClD,IAAIvD,EAAQlQ,KAAK+J,OAAOuf,SAASrW,iBAC7B/C,IACIkN,EAAY,CAAEhR,QAASqH,EAAKrH,QAASnC,KAAMwJ,EAAKxJ,MACpDiG,EAAM3O,KAAKvB,KAAMod,CAAS,IAGlCsrB,EAAexoC,UAAUmqC,WAAa,SAAU52B,GAC5C,IAAIvD,EAAQlQ,KAAK+J,OAAOuf,SAASla,OAK7Bm7B,GAJAr6B,IACIkN,EAAY,CAAEhR,QAASqH,EAAKrH,QAASnC,KAAMwJ,EAAKxJ,KAAMiG,MAAOuD,EAAKvD,OACtEA,EAAM3O,KAAKvB,KAAMod,CAAS,GAEf,CAAC,CAAC3J,EAAKrH,QAAQgE,QAAQ,6BAA6B,GAC/Do6B,EAAkB,CAAC,CAAC/2B,EAAKrH,QAAQgE,QAAQ,kCAAkC,EAC3Eq6B,EAAe,CAAC,CAACvzB,SAASnL,cAAc,kCAAkC,EAE1E2+B,EAAaF,GAAoBD,GAAYE,EAC7C,CAACh3B,EAAKrH,QAAQC,UAAUC,SAAS,mBAAmB,GAAKo+B,GACzD1qC,KAAK2oC,YAAYp8B,UAUzBm8B,EAAexoC,UAAU2hC,oBAAsB,SAAUhpB,GACjD7Y,KAAK2oC,cACL3oC,KAAK2oC,YAAYvnC,cAAcyX,CAAU,EACrC7Y,KAAK6pC,WACL7pC,KAAK6pC,SAASzoC,cAAcyX,CAAU,GAWlD6vB,EAAexoC,UAAUkoC,eAAiB,SAAUS,GAC5CA,EAAgBxf,QACZrpB,KAAK2oC,aACDE,EAAgB9mC,OAChB/B,KAAK2oC,YAAYvnC,cAAc,CAC3B+J,QAAS09B,EAAgB9mC,KAC5B,EACD/B,KAAK+J,OAAOiP,OAAO5M,QAAQgU,MAAM+N,YAAYC,GAAkCpuB,KAAK8oC,WAAWznB,YAAc,IAAI,GAEjHwnB,EAAgBtoB,eACZvgB,KAAK6pC,UACL7pC,KAAK2qC,cAET3qC,KAAK2oC,YAAYvnC,cAAc,CAAEd,OAAQuoC,EAAgBtoB,cAAe,GAGpEvgB,KAAK6pC,SACL7pC,KAAK6pC,SAASzoC,cAAc,CACxB2oC,kBAAmBlB,EAAgBkB,kBACnCh3B,MAAO/S,KAAKspC,cAAcT,EAAgBtf,SAAS,EACnDygB,gBAAiBnB,EAAgBmB,gBACjCryB,SAAUkxB,EAAgBl3B,aAC7B,EAGD3R,KAAKkpC,iBAAiBL,CAAe,EAG7C7oC,KAAK4qC,wBACL5qC,KAAK6qC,uBACL7qC,KAAKopC,mBAAmBP,CAAe,EACvC7oC,KAAKqpC,qBAGLrpC,KAAKgqB,eAAe6e,CAAe,EAGlC7oC,KAAK2oC,aACV3oC,KAAK4oC,aAET5oC,KAAK+J,OAAOiP,OAAOmwB,0BAEvBT,EAAexoC,UAAUyqC,YAAc,WAC/B3qC,KAAK6pC,WACL7pC,KAAK6pC,SAAS//B,UACd9J,KAAK6pC,SAAW,OAGxBnB,EAAexoC,UAAU0oC,WAAa,WAClC5oC,KAAK4qC,wBACL5qC,KAAK6qC,uBACQ7qC,KAAK+J,OAAOiP,OAAO5M,QACzBgU,MAAMoT,eAAepF,EAAgC,EAC5DpuB,KAAK2qC,cACL3qC,KAAK2oC,YAAY7+B,UACjB9J,KAAK2oC,YAAc,KACnB35B,SAAOhP,KAAK8oC,UAAU,EACtB9oC,KAAK8oC,WAAa,MAEtBJ,EAAexoC,UAAU0qC,sBAAwB,WAC7C,IAAIzgC,EAAQnK,KACR0R,EAAQ6F,EAASvX,KAAK+J,OAAO6P,YAAa,SAAUlO,GAAK,OAAOA,EAAEpB,KAAOH,EAAM2+B,WAAWx+B,GAAK,EACrF,CAAC,IAAXoH,IACA1R,KAAK8oC,WAAWz8B,UAAU2C,OAAO4L,EAA+B,EAChE5a,KAAK+J,OAAO6P,YAAYoW,OAAOte,EAAO,CAAC,IAG/Cg3B,EAAexoC,UAAU2qC,qBAAuB,WAC5C,IAEQn5B,EAFJvH,EAAQnK,KACRA,KAAK+J,OAAOme,eAAyB,UAEvB,CAAC,KADXxW,EAAQ6F,EAASvX,KAAK+J,OAAOme,eAAyB,SAAG,SAAUxc,GAAK,OAAOA,EAAEpB,KAAOH,EAAM2+B,WAAWx+B,GAAK,IAE9GtK,KAAK+J,OAAOme,eAAyB,SAAE8H,OAAOte,EAAO,CAAC,GAalEg3B,EAAexoC,UAAU0V,SAAW,SAAU7C,EAAOzS,EAAQijC,EAASxtB,GAC9DwtB,EACAvjC,KAAK6pC,SAASiB,YAAY/3B,EAAOzS,EAAQyV,CAAU,EAGnD/V,KAAK6pC,SAAS/5B,aAAaiD,EAAOzS,EAAQyV,CAAU,EAExD/V,KAAK+J,OAAOuf,SAASloB,cAAc,CAAEmoB,UAAWvpB,KAAK6pC,SAAS92B,OAAS,CAAA,CAAI,GAS/E21B,EAAexoC,UAAU4V,YAAc,SAAU/C,EAAOgD,GACpD/V,KAAK6pC,SAAS/zB,YAAY/C,EAAOgD,CAAU,EAC3C/V,KAAK+J,OAAOuf,SAASloB,cAAc,CAAEmoB,UAAWvpB,KAAK6pC,SAAS92B,OAAS,CAAA,CAAI,GAS/E21B,EAAexoC,UAAU6qC,YAAc,SAAUh4B,EAAOgD,GACpD/V,KAAK6pC,SAASkB,YAAYh4B,EAAO,CAAA,EAAMgD,CAAU,EACjD/V,KAAK+J,OAAOuf,SAASloB,cAAc,CAAEmoB,UAAWvpB,KAAK6pC,SAAS92B,OAAS,CAAA,CAAI,GAS/E21B,EAAexoC,UAAU8qC,aAAe,SAAUj4B,EAAOgD,GACrD/V,KAAK6pC,SAASkB,YAAYh4B,EAAO,CAAA,EAAOgD,CAAU,EAClD/V,KAAK+J,OAAOuf,SAASloB,cAAc,CAAEmoB,UAAWvpB,KAAK6pC,SAAS92B,OAAS,CAAA,CAAI,GAU/E21B,EAAexoC,UAAU+qC,QAAU,SAAUhhC,EAAMK,EAAIyL,GACnD/V,KAAK6pC,SAASoB,QAAQhhC,EAAMK,EAAIyL,CAAU,EAC1C/V,KAAK6pC,SAASqB,UACdlrC,KAAK+J,OAAOuf,SAASloB,cAAc,CAAEmoB,UAAWvpB,KAAK6pC,SAAS92B,OAAS,CAAA,CAAI,GA3U/E21B,EA6UOA,EA5UP,SAASA,EAAe3+B,GACpB/J,KAAK+J,OAASA,ECTd3K,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAsBuCS,GAvB3CC,GAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAanForC,IAA2CtrC,GA8mB7C6nB,YA7mBE5nB,GAAUqrC,EAAiBtrC,EAAM,EAUjCsrC,EAAgBjrC,UAAUynB,OAAS,aAOnCwjB,EAAgBjrC,UAAU2nB,UAAY,aAGtCsjB,EAAgBjrC,UAAU0oB,eAAiB,WACvC,MAAO,IAQXuiB,EAAgBjrC,UAAU6nC,kBAAoB,aAG9CoD,EAAgBjrC,UAAU2J,cAAgB,WACtC,MAAO,mBAEXshC,EAAgBjrC,UAAU4J,QAAU,WAC5B9J,KAAKorC,iBACLprC,KAAK4oC,aAET5oC,KAAK+J,OAAS,MASlBohC,EAAgBjrC,UAAUgqB,gBAAkB,SAAUmhB,GAClD,IAAIlhC,EAAQnK,KACZ,GAAKqrC,EAAiBhiB,QAAtB,CAGArpB,KAAKsrC,mBAAqBtrC,KAAK+J,OAAOM,cAAc,SAAU,CAC1DC,GAAItK,KAAK+J,OAAOqC,QAAQ9B,GAAKihC,GAChC,EACD,IAAIpe,EAASntB,KAAK+J,OAAOiP,OAAO5M,QAC5BohB,EAAaL,EAAOphB,cAAc,YAAY,EAWlD,GAVAohB,EAAOrd,aAAa9P,KAAKsrC,mBAAoB9d,CAAU,EACvDxtB,KAAKorC,gBAAkB,IAAI1gC,SAAO,CAC9BS,QAASkgC,EAAiBtpC,KAC1B6I,UAAW5K,KAAK+J,OAAOa,UACvBK,SAAUugC,GACVlgC,QAAS,WACL6hB,EAAO/M,MAAM+N,YAAYC,GAAkCjkB,EAAMmhC,mBAAmBjqB,YAAc,IAAI,IAE3GrhB,KAAKsrC,kBAAkB,EAC1BtrC,KAAKyrC,qBAAqBJ,CAAgB,EACtCrrC,KAAK+J,OAAOqf,cAAczR,SAC1B3X,KAAK0rC,wBAAwB1rC,KAAK+J,OAAOqf,cAAczR,QAAQ,MAE9D,CAGD,IAFA,IAAIg0B,EAAkB,EAClBhrB,EAAY,EACP3f,EAAI,EAAGA,EAAIqqC,EAAiBt4B,MAAMpS,OAAQK,CAAC,GACrCqqC,EAAiBt4B,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAClD0/B,SACLD,CAAe,GAGfhrB,CAAS,GAGD,EAAZA,GACA3gB,KAAK6rC,oBAAoBR,EAAkB,CAAA,CAAK,EAE9B,EAAlBM,GACA3rC,KAAK6rC,oBAAoBR,EAAkB,CAAA,CAAI,EAE/CrrC,KAAK8rC,UACL9rC,KAAK+rC,eAAe/rC,KAAK8rC,SAAS/4B,KAAK,EAEvC/S,KAAKgsC,gBACLhsC,KAAK+rC,eAAe/rC,KAAKgsC,eAAej5B,KAAK,EAGrD/S,KAAKsrC,mBAAmB7/B,QAAU,SAAUC,GACxCA,EAAEugC,kBACF9hC,EAAM+hC,gBACN/hC,EAAMgiC,iBAAiB9/B,UAAUe,IAAIg/B,EAA+B,EAChEC,EAAWliC,EAAMmiC,YAAYvgC,cAAc,yBAAyB,EACpEsgC,GACAA,EAAShgC,UAAU2C,OAAO,YAAY,EAE1C,IAAK,IAAIhO,EAAI,EAAGA,EAAIqqC,EAAiBt4B,MAAMpS,OAAQK,CAAC,GAAI,CACpD,IAAIiJ,EAAOohC,EAAiBt4B,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAC3D,GAAKjC,CAAAA,EAAK2hC,UAAYzhC,EAAM2hC,SAAS/4B,MAAM,GAAGhR,OAASkI,EAAKlI,KAA5D,CACI,IAAIwqC,EAAepiC,EAAMgiC,iBAAiBpgC,cAAc,IAAM5B,EAAM2hC,SAAS/4B,MAAM,GAAGzI,EAAE,EACpFiiC,IACAA,EAAalgC,UAAUe,IAAI,YAAY,EACvCm/B,EAAax3B,QACb5K,EAAMqiC,UAAY,EAClBriC,EAAMsiC,WAAa,CAAA,GAEvBtiC,EAAMuiC,uBAAuBviC,EAAM2hC,SAAS/4B,MAAM,GAAGzI,GAAIL,EAAKkB,OAAO,EACrE,SAOZnL,KAAK+J,OAAOiP,OAAOmwB,yBACnBnpC,KAAK2sC,wBAAwBtB,CAAgB,EAC7CrrC,KAAK4sC,uBAAuBvB,CAAgB,EAC5C/7B,eAAalC,IAAI8J,SAAU,QAASlX,KAAK6sC,aAAc7sC,IAAI,IAE/DmrC,EAAgBjrC,UAAU2sC,aAAe,SAAUnhC,GAC3CoS,EAAYpS,EAAEpL,OACdN,KAAKmsC,iBAAiB7/B,SAASwR,CAAS,GAIxC9d,KAAKqsB,iBAGb8e,EAAgBjrC,UAAUysC,wBAA0B,SAAUtB,GACtD7xB,GAAiB6xB,EAAiB9uB,qBAAqB,IACvDvc,KAAKsrC,mBAAmBj/B,UAAUe,IAAIwN,EAA+B,EACrE5a,KAAK+J,OAAO6P,YAAYvD,KAAK,CAAE/L,GAAItK,KAAKsrC,mBAAmBhhC,GAAIyP,KAAMsxB,EAAiB9uB,sBAAuB,IAGrH4uB,EAAgBjrC,UAAU0sC,uBAAyB,SAAUvB,GAOzD,GANIA,EAAiB1e,SACX3sB,KAAK+J,OAAOme,eAA2B,YACzCloB,KAAK+J,OAAOme,eAA0B,UAAI,IAE9CloB,KAAK+J,OAAOme,eAA0B,UAAE7R,KAAK,CAAE/L,GAAItK,KAAKsrC,mBAAmBhhC,GAAI2B,KAAM,YAAa0gB,OAAQ0e,EAAiB1e,OAAQ,GAEnI0e,EAAiBt4B,OAASs4B,EAAiBt4B,MAAMpS,OAAQ,CACnDX,KAAK+J,OAAOme,eAA+B,gBAC7CloB,KAAK+J,OAAOme,eAA8B,cAAI,IAElD,IAAK,IAAIlnB,EAAI,EAAGA,EAAIqqC,EAAiBt4B,MAAMpS,OAAQK,CAAC,GAC5CqqC,EAAiBt4B,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGygB,QACnD3sB,KAAK+J,OAAOme,eAA8B,cAAE7R,KAAK,CAAE/L,GAAI+gC,EAAiBt4B,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAG5B,GAAI2B,KAAM,gBAAiB0gB,OAAQ0e,EAAiBt4B,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGygB,OAAQ,IAKxNwe,EAAgBjrC,UAAU6rC,eAAiB,SAAUe,GACjD,IAAK,IAAI9rC,EAAI,EAAGA,EAAI8rC,EAAensC,OAAQK,CAAC,GAAI,CAC5C,IAAIiJ,EAAO6iC,EAAev4B,SAASvT,EAAEkL,WAAY,EAAE,GAC9CjC,EAAKhI,SACYjC,KAAKmsC,iBAAiBpgC,cAAc,IAAM9B,EAAKK,EAAE,EACvD+B,UAAUe,IAAI2/B,EAAoC,IAI1E5B,EAAgBjrC,UAAUurC,qBAAuB,SAAUJ,GACvD,IAAIlhC,EAAQnK,KACZA,KAAKmsC,iBAAmBnsC,KAAK+J,OAAOM,cAAc,MAAO,CACrDC,GAAItK,KAAK+J,OAAOqC,QAAQ9B,GAAK0iC,GAC7Bp9B,UAAWq9B,GACd,GAEG5B,EAAiB/qC,OACL+qC,EAAiB/qC,kBAAkB4sC,YAAc7B,EAAiB/qC,OAC1E4W,SAASnL,cAAcs/B,EAAiB/qC,MAAM,EAIlDN,KAAK+J,OAAOqC,SAHF5B,YAAYxK,KAAKmsC,gBAAgB,EAK/CnsC,KAAKiX,SAAW,IAAI6H,QAAM9e,KAAKmsC,iBAAkB,CAC7C9rB,OAAQgrB,EAAiBhrB,OACzBnO,MAAOm5B,EAAiBn5B,MACxB6R,SAAUsnB,EAAiB/qC,QAAUN,KAAK+J,OAAOqC,QACjDxB,UAAW5K,KAAK+J,OAAOa,UAC1B,EACG5K,KAAK+J,OAAOa,WACZ5K,KAAKmtC,yBAAyBntC,KAAK+J,OAAOa,SAAS,EAEvD5K,KAAKqsB,gBACL/c,eAAalC,IAAIpN,KAAKmsC,iBAAkB,QAAS,SAAUzgC,GACxC,WAAXA,EAAEub,MACF9c,EAAMkiB,gBAEVliB,EAAMsK,iBAAiB/I,CAAC,GACzB1L,IAAI,GAEXmrC,EAAgBjrC,UAAUuU,iBAAmB,SAAU/I,GACnD,IAAI0hC,EAAcptC,KAAKmsC,iBAAiBpgC,cAAc,qBAAqB,EACvEwd,EAAYvpB,KAAKmsC,iBAAiBh4B,iBAAiB,cAAc,EACjEk5B,EAAoB,YAAV3hC,EAAEnL,IACZ+sC,EAAsB,cAAV5hC,EAAEnL,IAClB,GAAI8sC,GAAWC,EAAW,CACjBD,GAA4B,EAAjBrtC,KAAKwsC,WAAmBc,GAAattC,KAAKwsC,UAAYjjB,EAAU5oB,OAAS,GAAK,CAACX,KAAKysC,WAChGzsC,KAAKwsC,UAAYa,EAAUrtC,KAAKwsC,UAAY,EAAIxsC,KAAKwsC,UAAY,EAG7DY,GAAe,CAACptC,KAAKysC,YACrBW,EAAYr4B,QACZ/U,KAAKysC,WAAa,CAAA,IAGlBzsC,KAAKwsC,UAAYa,EAAU9jB,EAAU5oB,OAAS,EAAI,EAClDX,KAAKysC,WAAa,CAAA,GAG1B,IAAK,IAAIzrC,EAAI,EAAGA,EAAIuoB,EAAU5oB,OAAQK,CAAC,GACnCuoB,EAAUhV,SAASvT,EAAEkL,WAAY,EAAE,GAAGG,UAAU2C,OAAO,WAAW,EAEjEhP,KAAKysC,aACFY,GAAW9jB,EAAUvpB,KAAKwsC,WAAWngC,UAAUC,SAAS,aAAa,EACrEtM,KAAKwsC,SAAS,GAETc,GAAa/jB,EAAUvpB,KAAKwsC,WAAWngC,UAAUC,SAAS,aAAa,GAC5EtM,KAAKwsC,SAAS,GAElBjjB,EAAUvpB,KAAKwsC,WAAWngC,UAAUe,IAAI,WAAW,EACnDmc,EAAUvpB,KAAKwsC,WAAWz3B,WAItCo2B,EAAgBjrC,UAAUitC,yBAA2B,SAAUviC,GAC3D,IAAI2iC,EAAavtC,KAAKmsC,iBAAiB/rB,MACnCxV,GACA2iC,EAAWC,MAAQD,EAAW7mB,KAC9B6mB,EAAW7mB,KAAO,UAGlB6mB,EAAW7mB,KAAO6mB,EAAWC,MAC7BD,EAAWC,MAAQ,UAG3BrC,EAAgBjrC,UAAU2rC,oBAAsB,SAAUnC,EAAakC,GACnE,IAUQwB,EAwBJK,EAlCAtjC,EAAQnK,KACKA,KAAKmsC,iBAAiBpgC,cAAc,IAAM/L,KAAK+J,OAAOqC,QAAQ9B,GAAK,UAAU,IAE1FtK,KAAKssC,YAActsC,KAAK+J,OAAOM,cAAc,MAAO,CAChDC,GAAItK,KAAK+J,OAAOqC,QAAQ9B,GAAK,WAC7BsF,UAAW89B,GACd,EACD1tC,KAAKmsC,iBAAiB3hC,YAAYxK,KAAKssC,WAAW,GAElD5C,EAAYiE,WAAWtkB,SAAW,CAACuiB,IAC/BwB,EAAcptC,KAAK+J,OAAOM,cAAc,SAAU,CAClDC,GAAItK,KAAK+J,OAAOqC,QAAQ9B,GAAK,SAC7BsF,UAAW,qBACd,EACD5P,KAAK4tC,SAAW,IAAIljC,SAAO,CACvBS,QAASu+B,EAAYiE,WAAW5rC,KAChCE,QAASynC,EAAYiE,WAAW1rC,SAA2C4rC,GAC3EjjC,UAAW5K,KAAK+J,OAAOa,WACxBwiC,CAAW,EACdptC,KAAKssC,YAAYpyB,OAAOkzB,CAAW,EACnCA,EAAY3hC,QAAU,WAClBtB,EAAMgiC,iBAAiB9/B,UAAU2C,OAAOo9B,EAA+B,EACvEjiC,EAAMkiB,gBACNliB,EAAM2jC,oBAAsB,CAAA,IAGd9tC,KAAKmsC,iBAAiBpgC,cAAc,IAAM/L,KAAK+J,OAAOqC,QAAQ9B,GAAK,eAAe,IAEpGtK,KAAK+tC,gBAAkB/tC,KAAK+J,OAAOM,cAAc,MAAO,CACpDC,GAAItK,KAAK+J,OAAOqC,QAAQ9B,GAAK,gBAC7BsF,UAAWo+B,GACd,EACDhuC,KAAKssC,YAAYpyB,OAAOla,KAAK+tC,eAAe,GAG5CnC,GACA6B,EAAeztC,KAAK+J,OAAOM,cAAc,KAAM,CAC3CC,GAAItK,KAAK+J,OAAOqC,QAAQ9B,GAAK2jC,GAChC,EACDjuC,KAAK+tC,gBAAgBvjC,YAAYijC,CAAY,IAG7CztC,KAAKkuC,WAAaluC,KAAK+J,OAAOM,cAAc,KAAM,CAC9CC,GAAItK,KAAK+J,OAAOqC,QAAQ9B,GAAK6jC,GAChC,EACDnuC,KAAK+tC,gBAAgBvjC,YAAYxK,KAAKkuC,UAAU,GAE/CtC,EAUD5rC,KAAKgsC,eAAiB,IAAIlC,OAAK,CAC3BvS,YAAa,WACb3sB,UAAW5K,KAAK+J,OAAOa,UACvBK,SAAUmjC,GACVr7B,MAAO/S,KAAKquC,oBAAoB3E,EAAY32B,KAAK,EACjD3D,OAAQpP,KAAKqqC,WAAW76B,KAAKxP,KAAM0pC,CAAW,GAC/C+D,CAAY,EAffztC,KAAK8rC,SAAW,IAAIhC,OAAK,CACrBvS,YAAa,WACb3sB,UAAW5K,KAAK+J,OAAOa,UACvBK,SAAUmjC,GACVr7B,MAAO/S,KAAKspC,cAAcI,EAAY32B,KAAK,EAC3C3D,OAAQpP,KAAKqqC,WAAW76B,KAAKxP,KAAM0pC,CAAW,GAC/C1pC,KAAKkuC,UAAU,GAY1B/C,EAAgBjrC,UAAUopC,cAAgB,SAAUv2B,GAEhD,IADA,IAAIw2B,EAAY,GACPvoC,EAAI,EAAGA,EAAI+R,EAAMpS,OAAQK,CAAC,GAAI,CACnC,IAAIiJ,EAAO8I,EAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GACtCjC,EAAK2hC,UAILrC,EAAUlzB,KAAK,CACX/L,GAAIL,EAAKK,GACTrI,QAASgI,EAAKhI,QACdunC,UAAWv/B,EAAKu/B,UAChBznC,KAAMkI,EAAKlI,KACd,EAGT,OAAOwnC,GAEX4B,EAAgBjrC,UAAUmuC,oBAAsB,SAAUt7B,GAEtD,IADA,IAAIw2B,EAAY,GACPvoC,EAAI,EAAGA,EAAI+R,EAAMpS,OAAQK,CAAC,GAAI,CACnC,IAAIiJ,EAAO8I,EAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GACrCjC,EAAK2hC,UAINrC,EAAUlzB,KAAK,CACX/L,GAAIL,EAAKK,GACTrI,QAASgI,EAAKhI,QACdunC,UAAWv/B,EAAKu/B,UAChBznC,KAAMkI,EAAKlI,KACd,EAGT,OAAOwnC,GAEX4B,EAAgBjrC,UAAUwsC,uBAAyB,SAAUnG,EAAQp7B,GACjE,IAAI+b,EAAe,mBAYfC,GAXJnnB,KAAK8gC,cAAc,CAAC5Z,EAAa,EAC5BlnB,KAAKsuC,qBAONtuC,KAAKsuC,oBAAoBz+B,UAAY,GACrC7P,KAAKsuC,oBAAoBhkC,GAAKi8B,EAAS3hB,GAPvC5kB,KAAKsuC,oBAAsBtuC,KAAK+J,OAAOM,cAAc,MAAO,CACxDC,GAAIi8B,EAAS3hB,EACbhV,UAAW2+B,GACd,EAMkB72B,GAAoBvM,CAAO,GAMlD,OALA+O,SAAOiN,EAAiB,GAAInnB,KAAMknB,EAAc,mBAAoBlnB,KAAK+J,OAAOqd,gBAAgB,EAAGpnB,KAAKsuC,mBAAmB,EACvHnjC,GACAnL,KAAKmsC,iBAAiBjyB,OAAOla,KAAKsuC,mBAAmB,EAEzDtuC,KAAKmhC,uBACEha,GAEXgkB,EAAgBjrC,UAAUwrC,wBAA0B,SAAU/zB,GAC1D,IAAIuP,EAAe,oBAMfC,GALJnnB,KAAK8gC,cAAc,CAAC5Z,EAAa,EACjClnB,KAAKwuC,iBAAmBxuC,KAAK+J,OAAOM,cAAc,MAAO,CACrDC,GAAItK,KAAK+J,OAAOqC,QAAQ9B,GAAKihC,GAAqC,YAClE37B,UAAW6+B,GACd,EACsB/2B,GAAoBC,CAAQ,GAInD,OAHAuC,SAAOiN,EAAiB,GAAInnB,KAAMknB,EAAc,oBAAqBlnB,KAAK+J,OAAOqd,gBAAgB,EAAGpnB,KAAKwuC,gBAAgB,EACzHxuC,KAAKmsC,iBAAiBjyB,OAAOla,KAAKwuC,gBAAgB,EAClDxuC,KAAKmhC,uBACEha,GAEXgkB,EAAgBjrC,UAAUmqC,WAAa,SAAUX,EAAaj2B,GAC1D,IAAK,IAAIzS,EAAI,EAAGA,EAAI0oC,EAAY32B,MAAMpS,OAAQK,CAAC,GAAI,CAC/C,IAAIiJ,EAAOy/B,EAAY32B,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GACtD,GAAIjC,EAAKlI,OAAS0R,EAAKxJ,KAAKlI,KAAM,CAC9B/B,KAAK0uC,YAAczkC,EACnBjK,KAAKwsC,UAAYxrC,EACjB,OAGRhB,KAAK0sC,uBAAuBj5B,EAAKxJ,KAAKK,GAAItK,KAAK0uC,YAAYvjC,OAAO,EAClE,IAAIiS,EAAY,CAAE1J,OAAQ,CAAA,EAAOpT,OAAQmT,EAAKrH,QAC1CnC,KAAMjK,KAAK0uC,YAAaC,aAAc3uC,KAAK8tC,qBAC3C9tC,KAAK0uC,YAAYE,oBACjB5uC,KAAK0uC,YAAYE,mBAAmBrtC,KAAKvB,KAAMod,CAAS,GAahE+tB,EAAgBjrC,UAAU2hC,oBAAsB,SAAUhpB,GAClD7Y,KAAKorC,kBACLprC,KAAKorC,gBAAgBhqC,cAAcyX,CAAU,EACzC7Y,KAAKiX,YACLjX,KAAKiX,SAAS7V,cAAcyX,CAAU,EAClC7Y,KAAKmsC,kBACLnsC,KAAKmtC,yBAAyBt0B,EAAWjO,SAAS,EAElD5K,KAAK8rC,WACL9rC,KAAK8rC,SAAS1qC,cAAcyX,CAAU,EAClC7Y,KAAK4tC,WACL5tC,KAAK4tC,SAASxsC,cAAcyX,CAAU,EAG1C7Y,KAAKgsC,iBACLhsC,KAAKgsC,eAAe5qC,cAAcyX,CAAU,GAY5DsyB,EAAgBjrC,UAAUmoC,oBAAsB,SAAUgD,GACtD,GAAIA,EAAiBhiB,QACjB,GAAIrpB,KAAKorC,gBAAiB,CActB,GAbIC,EAAiBtpC,OACjB/B,KAAKorC,gBAAgBhqC,cAAc,CAC/B+J,QAASkgC,EAAiBtpC,KAC7B,EACD/B,KAAK+J,OAAOiP,OAAO5M,QAAQgU,MAAM+N,YAAYC,GAAkCpuB,KAAKsrC,mBAAmBjqB,YAAc,IAAI,GAEzHrhB,KAAKiX,UACLjX,KAAKiX,SAAS7V,cAAc,CACxBif,OAAQgrB,EAAiBhrB,OACzBnO,MAAOm5B,EAAiBn5B,MACxB5R,OAAQ+qC,EAAiB/qC,QAAUN,KAAK+J,OAAOqC,QAClD,EAEDi/B,EAAiB1zB,SACb3X,KAAKwuC,mBACLx/B,SAAOhP,KAAKwuC,gBAAgB,EAC5BxuC,KAAKwuC,iBAAmB,MAE5BxuC,KAAK0rC,wBAAwBL,EAAiB1zB,QAAQ,OAQtD,GALI3X,KAAK8rC,UACL9rC,KAAK8rC,SAAS1qC,cAAc,CACxB2R,MAAO/S,KAAKspC,cAAc+B,EAAiBt4B,KAAK,EACnD,EAED/S,KAAKgsC,eACLhsC,KAAKgsC,eAAe5qC,cAAc,CAC9B2R,MAAO/S,KAAKquC,oBAAoBhD,EAAiBt4B,KAAK,EACzD,MAEA,CAGD,IAFA,IAAI44B,EAAkB,EAClBhrB,EAAY,EACP3f,EAAI,EAAGA,EAAIqqC,EAAiBt4B,MAAMpS,OAAQK,CAAC,GACrCqqC,EAAiBt4B,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAClD0/B,SACLD,CAAe,GAGfhrB,CAAS,GAGD,EAAZA,GACA3gB,KAAK6rC,oBAAoBR,EAAkB,CAAA,CAAK,EAE9B,EAAlBM,GACA3rC,KAAK6rC,oBAAoBR,EAAkB,CAAA,CAAI,EAI3DrrC,KAAK6uC,6BACL7uC,KAAK8uC,4BACL9uC,KAAK2sC,wBAAwBtB,CAAgB,EAC7CrrC,KAAK4sC,uBAAuBvB,CAAgB,OAG5CrrC,KAAKkqB,gBAAgBmhB,CAAgB,OAGpCrrC,KAAKorC,iBACVprC,KAAK4oC,aAET5oC,KAAK+J,OAAOiP,OAAOmwB,0BAEvBgC,EAAgBjrC,UAAUyqC,YAAc,WAChC3qC,KAAK8rC,WACL9rC,KAAK8rC,SAAShiC,UACd9J,KAAK8rC,SAAW,OAGxBX,EAAgBjrC,UAAU0oC,WAAa,WACnC5oC,KAAK6uC,6BACL7uC,KAAK8uC,4BACQ9uC,KAAK+J,OAAOiP,OAAO5M,QACzBgU,MAAMoT,eAAepF,EAAgC,EAC5DpuB,KAAK2qC,cACL3qC,KAAKorC,gBAAgBthC,UACrB9J,KAAKorC,gBAAkB,KACvBp8B,SAAOhP,KAAKsrC,kBAAkB,EAC9BtrC,KAAKsrC,mBAAqB,KAC1Bh8B,eAAaN,OAAOkI,SAAU,QAASlX,KAAK6sC,YAAY,GAE5D1B,EAAgBjrC,UAAU2uC,2BAA6B,WACnD,IAAI1kC,EAAQnK,KACR0R,EAAQ6F,EAASvX,KAAK+J,OAAO6P,YAAa,SAAUlO,GAAK,OAAOA,EAAEpB,KAAOH,EAAMmhC,mBAAmBhhC,GAAK,EAC7F,CAAC,IAAXoH,IACA1R,KAAKsrC,mBAAmBj/B,UAAU2C,OAAO4L,EAA+B,EACxE5a,KAAK+J,OAAO6P,YAAYoW,OAAOte,EAAO,CAAC,IAG/Cy5B,EAAgBjrC,UAAU4uC,0BAA4B,WAClD,IAEQp9B,EAFJvH,EAAQnK,KAOZ,GANIA,KAAK+J,OAAOme,eAA0B,WAAKloB,KAAK+J,OAAOme,eAA0B,UAAEvnB,QAErE,CAAC,KADX+Q,EAAQ6F,EAASvX,KAAK+J,OAAOme,eAA0B,UAAG,SAAUxc,GAAK,OAAOA,EAAEpB,KAAOH,EAAMmhC,mBAAmBhhC,GAAK,IAEvHtK,KAAK+J,OAAOme,eAA0B,UAAE8H,OAAOte,EAAO,CAAC,EAG3D1R,KAAK+J,OAAOme,eAA8B,eAAKloB,KAAK+J,OAAOme,eAA8B,cAAEvnB,OAC3F,IAAK,IAAIK,EAAI,EAAGA,EAAIhB,KAAK+J,OAAOme,eAA8B,cAAEvnB,OAAQK,CAAC,GACrEhB,KAAK+J,OAAOme,eAA8B,cAAE8H,OAAOhvB,EAAG,CAAC,EACvDA,CAAC,IAabmqC,EAAgBjrC,UAAU6uC,kBAAoB,SAAUh8B,EAAOzS,EAAQijC,EAASxtB,GAC5E,IAAK,IAAI/U,EAAI,EAAGA,EAAI+R,EAAMpS,OAAQK,CAAC,IAE3BiJ,EADO8I,EAAMwB,SAASvT,EAAEkL,WAAY,EAAE,IACjC0/B,SACDrI,EACAvjC,KAAKgsC,eAAelB,YAAY/3B,EAAOzS,EAAQyV,CAAU,EAGzD/V,KAAKgsC,eAAel8B,aAAaiD,EAAOzS,EAAQyV,CAAU,EAI1DwtB,EACAvjC,KAAK8rC,SAAShB,YAAY/3B,EAAOzS,EAAQyV,CAAU,EAGnD/V,KAAK8rC,SAASh8B,aAAaiD,EAAOzS,EAAQyV,CAAU,EAMhE,IAFA,IAAIi5B,EAAiB,GAAG36B,OAAOrU,KAAK8rC,SAAS/4B,MAAO/S,KAAKgsC,eAAej5B,KAAK,EACzEs4B,EAAmBrrC,KAAK+J,OAAOqf,cAC1BpoB,EAAI,EAAGA,EAAIqqC,EAAiBt4B,MAAMpS,OAAQK,CAAC,GAEhD,IADA,IAAIiJ,EAAOohC,EAAiBt4B,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAClDsmB,EAAM,EAAGA,EAAMwc,EAAeruC,OAAQ6xB,CAAG,GAAI,CAClD,IAAIyc,EAAQD,EAAez6B,SAASie,EAAItmB,WAAY,EAAE,GACtD,GAAIjC,EAAKlI,OAASktC,EAAMltC,KAAM,CAC1BktC,EAAM9jC,QAAUlB,EAAKkB,QACrB,OAIZnL,KAAK+J,OAAOqf,cAAchoB,cAAc,CAAE2R,MAAOi8B,GAAkB,CAAA,CAAI,GAS3E7D,EAAgBjrC,UAAUgvC,qBAAuB,SAAUn8B,EAAOgD,GAC9D/V,KAAK8rC,SAASh2B,YAAY/C,EAAOgD,CAAU,EAC3C/V,KAAKgsC,eAAel2B,YAAY/C,EAAOgD,CAAU,EAC7Ci5B,EAAiB,GAAG36B,OAAOrU,KAAK8rC,SAAS/4B,MAAO/S,KAAKgsC,eAAej5B,KAAK,EAC7E/S,KAAK+J,OAAOqf,cAAchoB,cAAc,CAAE2R,MAAOi8B,GAAkB,CAAA,CAAI,GAO3E7D,EAAgBjrC,UAAUgsC,cAAgB,WACtClsC,KAAKiX,SAASsP,QAOlB4kB,EAAgBjrC,UAAUmsB,cAAgB,WAClCrsB,KAAKiX,SAAS7K,QAAQC,UAAUC,SAAS8/B,EAA+B,GACxEpsC,KAAKiX,SAAS7K,QAAQC,UAAU2C,OAAOo9B,EAA+B,EAE1EpsC,KAAKiX,SAASqN,QAEX6mB,GA3mBP,SAASA,EAAgBphC,GACrB,IAAII,EAAQtK,GAAO0B,KAAKvB,IAAI,GAAKA,KAEjC,OADAmK,EAAMJ,OAASA,EACRI,ECnBXglC,GAAoBjvC,UAAU2J,cAAgB,WAC1C,MAAO,uBAEXslC,GAAoBjvC,UAAU4J,QAAU,WACpC9J,KAAK+J,OAAS,MAQlBolC,GAAoBjvC,UAAU4pB,kBAAoB,WAE9C,IADA,IAAInN,EAAa,CAAA,EACRW,EAAI,EAAGA,EAAItd,KAAK+J,OAAOyf,eAAe7oB,OAAQ2c,CAAC,GACpD,IAAK,IAAItc,EAAI,EAAGA,EAAIhB,KAAK+J,OAAOyf,eAAejV,SAAS+I,EAAEpR,WAAY,EAAE,GAAGgB,KAAKvM,OAAQK,CAAC,GAAI,CACzFhB,KAAK+J,OAAOu5B,OAAOtjC,KAAK+J,OAAOyf,eAAejV,SAAS+I,EAAEpR,WAAY,EAAE,GAAGgB,KAAKqH,SAASvT,EAAEkL,WAAY,EAAE,EAAE,EAC1G,IAAIwF,EAAQ1R,KAAK+J,OAAOmD,KAAKvM,OAAS,EAElC6sB,EADSxtB,KAAK+J,OAAOiP,OAAO5M,QACR+H,iBAAiB,iBAAiB,EAAEI,SAAS7C,EAAMxF,WAAY,EAAE,GACzFshB,EAAWnhB,UAAUe,IAAIgiC,EAA+B,EACxD5hB,EAAWnhB,UAAUe,IAAI,UAAU,EAC/BpN,KAAK+J,OAAOyf,eAAejV,SAAS+I,EAAEpR,WAAY,EAAE,GAAGmd,UACvDrpB,KAAK+J,OAAO24B,QAAQ1iC,KAAK+J,OAAOyf,eAAejV,SAAS+I,EAAEpR,WAAY,EAAE,GAAGgB,KAAKqH,SAASvT,EAAEkL,WAAY,EAAE,GAAG5B,GAAI,CAAA,CAAI,EAChHtK,KAAK+J,OAAOyf,eAAejV,SAAS+I,EAAEpR,WAAY,EAAE,GAAGyQ,aAAc,CAACA,IACtE3c,KAAK+J,OAAOy4B,UAAUxiC,KAAK+J,OAAOyf,eAAejV,SAAS+I,EAAEpR,WAAY,EAAE,GAAGgB,KAAK,GAAG5C,EAAE,EACvFqS,EAAa,CAAA,KAcjCwyB,GAAoBjvC,UAAUioC,qBAAuB,SAAUH,EAASqH,GACpE,GAAI,CAAE17B,oBAAkBq0B,EAAQ3e,OAAQ,EACpC,IAAK,IAAIroB,EAAI,EAAGA,EAAIquC,EAAcniC,KAAKvM,OAAQK,CAAC,GACxCgnC,EAAQ3e,QACRrpB,KAAK+J,OAAO24B,QAAQ2M,EAAcniC,KAAKqH,SAASvT,EAAEkL,WAAY,EAAE,GAAG5B,GAAI,CAAA,CAAI,EAG3EtK,KAAK+J,OAAO64B,QAAQyM,EAAcniC,KAAKqH,SAASvT,EAAEkL,WAAY,EAAE,GAAG5B,GAAI,CAAA,CAAI,EAIvF,GAAI,CAAEqJ,oBAAkBq0B,EAAQrrB,UAAW,EACvC,GAAIqrB,EAAQrrB,YAAc0yB,EAAchmB,QACpCrpB,KAAK+J,OAAOy4B,UAAU6M,EAAcniC,KAAK,GAAG5C,EAAE,OAI9C,IADA,IAAI6iB,EAASntB,KAAK+J,OAAOiP,OAAO5M,QACvBpL,EAAI,EAAGA,EAAIhB,KAAK+J,OAAOmD,KAAKvM,OAAQK,CAAC,GAAI,CAC9C,IAAIwsB,EAAaL,EAAOhZ,iBAAiB,iBAAiB,EAAEI,SAASvT,EAAEkL,WAAY,EAAE,GACrF,GAAMshB,CAAAA,EAAWnhB,UAAUC,SAAS,UAAU,GAAKkhB,CAAAA,EAAWnhB,UAAUC,SAAS,WAAW,EAAI,CAC5FtM,KAAK+J,OAAOy4B,UAAUxiC,KAAK+J,OAAOmD,KAAKqH,SAASvT,EAAEkL,WAAY,EAAE,GAAG5B,EAAE,EACrE,OAKhB,GAAI09B,EAAQ96B,KASR,IARA,IAOIsS,EAASxf,KACJw9B,EAAK,EAAGC,EAAKl+B,OAAOwtB,KAAKib,EAAQ96B,IAAI,EAAGswB,EAAKC,EAAG98B,OAAQ68B,CAAE,GAE/Dne,CAVU,SAAU9e,GACpB,IAAImR,EAAQ6C,SAAShU,EAAK,EAAE,EACxByX,EAAMwH,EAAOzV,OAAOmD,KAAKR,OAAO,SAAUhB,GAC1C,OAAOA,EAAEpB,KAAO+kC,EAAcniC,KAAKqH,SAAS7C,EAAMxF,WAAY,EAAE,GAAG5B,GACtE,EAAE,GACHkV,EAAOzV,OAAO+8B,UAAU9uB,CAAG,GAIjBylB,EAAGD,EACF,OAjFvB2R,GAqFOA,GApFP,SAASA,GAAoBplC,GACzB/J,KAAK+J,OAASA,ECOlBulC,GAAapvC,UAAU2J,cAAgB,WACnC,MAAO,gBAEXylC,GAAapvC,UAAU4J,QAAU,WAC7B9J,KAAK+J,OAAS,MASlBulC,GAAapvC,UAAUosB,aAAe,SAAU/rB,GAC5C,GAAIP,KAAK+J,OAAOme,eAAgB,CAC5B,IAAI8E,EAAa,KAAA,EACjB,GAAY,QAARzsB,EAAe,CACf,IAAK,IAAIS,EAAI,EAAGA,EAAIhB,KAAK+J,OAAOmD,KAAKvM,OAAQK,CAAC,GACtChB,KAAK+J,OAAOme,eAAe3T,SAASvT,EAAEkL,WAAY,EAAE,KACpD8gB,EAAahtB,KAAK+J,OAAOme,eAAe3T,SAASvT,EAAEkL,WAAY,EAAE,GAAG,GAAK3L,GACzEP,KAAKuvC,oBAAqBviB,EAAW,GAAK,GAAGA,EAAW,GAAGL,OAAQ,MAAO,SAAU,SAAU,CAAA,CAAI,GAGtG3sB,KAAK+J,OAAOme,eAAyB,WACrC8E,EAAahtB,KAAK+J,OAAOme,eAAyB,SAClDloB,KAAKuvC,oBAAqBviB,EAAW,GAAK,GAAGA,EAAW,GAAGL,OAAQ,UAAU,GAE7E3sB,KAAK+J,OAAOme,eAA0B,YACtC8E,EAAahtB,KAAK+J,OAAOme,eAA0B,UACnDloB,KAAKuvC,oBAAqBviB,EAAW,GAAK,GAAGA,EAAW,GAAGL,OAAQ,WAAW,GAE9E3sB,KAAK+J,OAAOme,eAAyB,WACrC8E,EAAahtB,KAAK+J,OAAOme,eAAyB,SAClDloB,KAAKuvC,oBAAqBviB,EAAW,GAAK,GAAGA,EAAW,GAAGL,OAAQ,UAAU,GAE7E3sB,KAAK+J,OAAOme,eAA4B,cACxC8E,EAAahtB,KAAK+J,OAAOme,eAA4B,YACrDloB,KAAKuvC,oBAAqBviB,EAAW,GAAK,GAAGA,EAAW,GAAGL,OAAQ,aAAa,QAGnF,GAAY,cAARpsB,GACL,GAAIP,KAAK+J,OAAOme,eAAeloB,KAAK+J,OAAO4a,aAAwB,UAE/D,IADA,IAAI6qB,EAAkBxvC,KAAK+J,OAAOme,eAAeloB,KAAK+J,OAAO4a,aAAwB,UAC5E3jB,EAAI,EAAGA,EAAIzB,OAAOwtB,KAAK/sB,KAAK+J,OAAOme,eAAeloB,KAAK+J,OAAO4a,aAAwB,SAAC,EAAEhkB,OAAQK,CAAC,GACvGhB,KAAKuvC,oBAAqBC,EAAgBj7B,SAASvT,EAAEkL,WAAY,EAAE,GAAK,GAAGsjC,EAAgBj7B,SAASvT,EAAEkL,WAAY,EAAE,GAAGygB,OAAQ,YAAa,OAAQ,MAAO,CAAA,EAAO,CAAA,CAAI,OAI7K,GAAY,kBAARpsB,GACL,GAAIP,KAAK+J,OAAOme,eAA8B,cAE1C,IADA,IAAIunB,EAAsBzvC,KAAK+J,OAAOme,eAA8B,cAC3DlnB,EAAI,EAAGA,EAAIzB,OAAOwtB,KAAK/sB,KAAK+J,OAAOme,eAA8B,aAAC,EAAEvnB,OAAQK,CAAC,GAClFhB,KAAKuvC,oBAAqBE,EAAoBl7B,SAASvT,EAAEkL,WAAY,EAAE,GAAK,GAAGujC,EAAoBl7B,SAASvT,EAAEkL,WAAY,EAAE,GAAGygB,OAAQ,gBAAiB,OAAQ,QAAQ,OAI/K,GAAY,qBAARpsB,GAA2D,YAA7BP,KAAK+J,OAAO4F,cAI/C,GAHI3P,KAAK+J,OAAOme,eAAeloB,KAAK+J,OAAO4a,aAA+B,kBACtE3kB,KAAK0vC,sBAAsBnvC,CAAG,EAE9BP,KAAK+J,OAAOme,eAAeloB,KAAK+J,OAAO4a,aAAuB,SAC9D,IAAS3jB,EAAI,EAAGA,EAAIzB,OAAOwtB,KAAK/sB,KAAK+J,OAAOme,eAAeloB,KAAK+J,OAAO4a,aAAuB,QAAC,EAAEhkB,OAAQK,CAAC,GACtGgsB,EAAahtB,KAAK+J,OAAOme,eAAeloB,KAAK+J,OAAO4a,aAAuB,SAC3E3kB,KAAKuvC,oBAAqBviB,EAAWzY,SAASvT,EAAEkL,WAAY,EAAE,GAAK,GAAG8gB,EAAWzY,SAASvT,EAAEkL,WAAY,EAAE,GAAGygB,OAAQ,WAAY,SAAU,SAAU,CAAA,EAAO,CAAA,CAAI,MAIvK,CAED,GADA3sB,KAAK0vC,sBAAsBnvC,CAAG,EACG,YAA7BP,KAAK+J,OAAO4F,aAA4B,CACxC,GAAI3P,KAAK+J,OAAOme,eAAeloB,KAAK+J,OAAO4a,aAAuB,SAC9D,IAAS3jB,EAAI,EAAGA,EAAIzB,OAAOwtB,KAAK/sB,KAAK+J,OAAOme,eAAeloB,KAAK+J,OAAO4a,aAAuB,QAAC,EAAEhkB,OAAQK,CAAC,GACtGgsB,EAAahtB,KAAK+J,OAAOme,eAAeloB,KAAK+J,OAAO4a,aAAuB,SAC3E3kB,KAAKuvC,oBAAqBviB,EAAWzY,SAASvT,EAAEkL,WAAY,EAAE,GAAK,GAAG8gB,EAAWzY,SAASvT,EAAEkL,WAAY,EAAE,GAAGygB,OAAQ,UAAU,EAGvI,GAAI3sB,KAAK+J,OAAOme,eAAeloB,KAAK+J,OAAO4a,aAA0B,YACjE,IAAS3jB,EAAI,EAAGA,EAAIzB,OAAOwtB,KAAK/sB,KAAK+J,OAAOme,eAAeloB,KAAK+J,OAAO4a,aAA0B,WAAC,EAAEhkB,OAAQK,CAAC,GACzGgsB,EAAahtB,KAAK+J,OAAOme,eAAeloB,KAAK+J,OAAO4a,aAA0B,YAC9E3kB,KAAKuvC,oBAAqBviB,EAAWzY,SAASvT,EAAEkL,WAAY,EAAE,GAAK,GAAG8gB,EAAWzY,SAASvT,EAAEkL,WAAY,EAAE,GAAGygB,OAAQ,aAAa,EAI9I,GAAiC,eAA7B3sB,KAAK+J,OAAO4F,eACR3P,KAAK+J,OAAOme,eAA4B,cACxC8E,EAAahtB,KAAK+J,OAAOme,eAA4B,YACrDloB,KAAKuvC,oBAAqBviB,EAAW,GAAK,GAAGA,EAAW,GAAGL,OAAQ,aAAa,GAEhF3sB,KAAK+J,OAAOme,eAAeloB,KAAK+J,OAAO4a,aAAuB,UAC9D,IAAS3jB,EAAI,EAAGA,EAAIzB,OAAOwtB,KAAK/sB,KAAK+J,OAAOme,eAAeloB,KAAK+J,OAAO4a,aAAuB,QAAC,EAAEhkB,OAAQK,CAAC,GACtGgsB,EAAahtB,KAAK+J,OAAOme,eAAeloB,KAAK+J,OAAO4a,aAAuB,SAC3E3kB,KAAKuvC,oBAAqBviB,EAAWzY,SAASvT,EAAEkL,WAAY,EAAE,GAAK,GAAG8gB,EAAWzY,SAASvT,EAAEkL,WAAY,EAAE,GAAGygB,OAAQ,UAAU,KAOvJ2iB,GAAapvC,UAAUwvC,sBAAwB,SAAUnvC,EAAKovC,EAAUhjB,GACnD,KAAA,IAAbgjB,IAAuBA,EAAW,CAAA,GACtC,IAAIC,EACAC,EACA7iB,EAAahtB,KAAK+J,OAAOme,eAAe3T,SAASvU,KAAK+J,OAAO4a,YAAYzY,WAAY,EAAE,GAAG,GAAK3L,GACnG,GAAIysB,EACA,IAAK,IAMOhgB,EANHhM,EAAI,EAAGA,EAAIzB,OAAOwtB,KAAK/sB,KAAK+J,OAAOme,eAAe3T,SAASvU,KAAK+J,OAAO4a,YAAYzY,WAAY,EAAE,GAAG,GAAK3L,EAAI,EAAEI,OAAQK,CAAC,IACxH2uC,GAAa3iB,EAAWzY,SAASvT,EAAEkL,WAAY,EAAE,GAAGygB,SAAWA,GAAY,CAACgjB,KACzEhyB,EAASqP,EAAWzY,SAASvT,EAAEkL,WAAY,EAAE,GAAG5B,GACiB,CAAC,IAAlE0iB,EAAWzY,SAASvT,EAAEkL,WAAY,EAAE,GAAG5B,GAAGmoB,QAAQ,SAAS,IAC3D9U,EAASqP,EAAWzY,SAASvT,EAAEkL,WAAY,EAAE,GAAG5B,GAAG6Q,QAAQ,aAAc,EAAE,IAE3EnO,EAAWC,EAAQjN,KAAK+J,OAAOmD,KAAMyQ,CAAM,IACA,WAA/B3Q,EAASkL,MAAMqf,aAA+D,EAAnCvqB,EAASqL,WAAWtF,MAAMpS,QAA2C,eAA7BX,KAAK+J,OAAO4F,aAGvGkgC,EAFuB,IAAvB7iC,EAAS8G,WACT87B,EAAU,SACA,OAEkB,IAAvB5iC,EAAS8G,UACd87B,EAAU,UAIVA,EAAU,SACA,UAGT5iC,GAA2C,QAA/BA,EAASkL,MAAMqf,aAA6D,EAApCvqB,EAASkL,MAAME,YAAYzX,QAA2C,eAA7BX,KAAK+J,OAAO4F,eAG1GkgC,EAF6B,IAA7B7iC,EAASuL,iBACTq3B,EAAU,SACA,QAGVA,EAAU,SACA,WAGN,SAARrvC,EACAP,KAAKuvC,oBAAqBviB,EAAWzY,SAASvT,EAAEkL,WAAY,EAAE,GAAK,GAAG8gB,EAAWzY,SAASvT,EAAEkL,WAAY,EAAE,GAAGygB,OAAQpsB,EAAKqvC,EAASC,CAAO,EAG1I7vC,KAAKuvC,oBAAqBviB,EAAWzY,SAASvT,EAAEkL,WAAY,EAAE,GAAK,GAAG8gB,EAAWzY,SAASvT,EAAEkL,WAAY,EAAE,GAAGygB,OAAQpsB,EAAKqvC,EAASC,EAAS,CAAA,EAAO,CAAA,CAAI,IAM3KP,GAAapvC,UAAUqvC,oBAAsB,SAAUjlC,EAAIqiB,EAAQ1gB,EAAM2jC,EAASC,EAASC,EAAOC,GAC9E,KAAA,IAAZH,IAAsBA,EAAU,UACpB,KAAA,IAAZC,IAAsBA,EAAU,UACtB,KAAA,IAAVC,IAAoBA,EAAQ,CAAA,GACZ,KAAA,IAAhBC,IAA0BA,EAAc,CAAA,GAC5C,IAeQC,EAfJC,EAAS/4B,SAASnL,cAAc,IAAMzB,CAAE,EACxC4lC,EAAiB,CAAA,GAGjBD,EADAH,EACS54B,SAASnL,cAAc,IAAMzB,EAAKuT,CAAmB,EAE9DoyB,KACIA,EAAO7/B,QAAQ,8BAA8B,IAC7C8/B,EAAiB,CAAA,GAEhBJ,GAASC,GAAgBE,EAAO7/B,QAAQ,gBAAgB,IACzD8/B,EAAiB,CAAA,GAEjBD,EAAO7/B,QAAQ,sBAAsB,EAErC4/B,EADeC,EAAO7/B,QAAQ,sBAAsB,EAC9BA,QAAQ,gBAAgB,EAAE9F,GAG5C2lC,EAAO7/B,QAAQ,wBAAwB,IAEvC4/B,GADAC,EAASA,EAAO7/B,QAAQ,wBAAwB,GAC5BA,QAAQ,gBAAgB,EAAE9F,MAIrD2lC,GAAUA,EAAOE,cAAkBL,GAASC,KACxCA,GAAeG,GAAmB,CAACH,KAChCK,EAAgBpwC,KAAK+J,OAAOM,cAAc,MAAO,CACjDuF,UAAWygC,GACX/lC,GAAIA,EAAKgmC,GACT5wB,MAAO,CAAEwd,KAAM,SAAUD,aAAc,iBAC1C,EACD/lB,SAAS4M,KAAK5J,OAAOk2B,CAAa,EAChB,IAAItxB,QAAMsxB,EAAe,CACvCrsB,SAAU,KAAO+rB,EAAQxlC,EAAKuT,EAAsBmyB,GAA0B1lC,GAC9Ea,QAASwhB,EACT3I,UAAW,CAAEC,EAAG,MAAOC,EAAG,QAC1BE,WAAY,WACZC,SAAU,CAAEJ,EAAG2rB,EAAS1rB,EAAG2rB,GAC3BjlC,UAAW5K,KAAK+J,OAAOa,UACvBuZ,eAAgB,OACnB,EACWoC,OACZvmB,KAAKuwC,wBAAwBN,EAAQG,EAAenkC,EAAM4jC,CAAO,EACjE7vC,KAAK+J,OAAOugB,aAAe,CAAA,IAIvCglB,GAAapvC,UAAUqwC,wBAA0B,SAAUrmC,EAASkmC,EAAenkC,EAAM4jC,GACrF,IAAIxrB,EAAWna,EAAQuc,wBACV,kBAATxa,GACAmkC,EAAchwB,MAAMqD,IAAMY,EAASZ,IAAQ2sB,EAA0B,aAAI,EAAK,KAC9EA,EAAchwB,MAAMsG,KAAOrC,EAASqC,KAAQxc,EAAQmX,YAAc,EAAK,MAG1D,cAATpV,IACAmkC,EAAchwB,MAAMsG,KAAOrC,EAASqC,MAAQrC,EAASnS,MAAQk+B,EAAc/uB,aAAe,EAAI,MAGzF,aAATpV,GAAgC,cAATA,EACvBmkC,EAAchwB,MAAMqD,IAAMY,EAASZ,KAAQvZ,EAAQuY,aAAgBvY,EAAQuY,aAAe,EAAO2tB,EAAc3tB,aAAe,GAAM,KAErH,SAATxW,GAA+B,QAAZ4jC,IACzBO,EAAchwB,MAAMqD,IAAOY,EAASZ,IAAOvZ,EAAoB,aAAI,EAAK,OAWhFolC,GAAapvC,UAAUusB,YAAc,SAAUP,EAAUyjB,GACrD,IAAIxlC,EAAQnK,KACK,KAAA,IAAb2vC,IAAuBA,EAAW,CAAA,GACtC3vC,KAAKwwC,gBAAkB,CAAA,EACvB,IAAK,IAAIxvC,EAAI,EAAKA,EAAIzB,OAAOwtB,KAAK/sB,KAAK+J,OAAOme,cAAc,EAAEvnB,QAAW,CAACX,KAAKwwC,gBAAkBxvC,CAAC,GAC9F,GAAIhB,KAAK+J,OAAOme,eAAe3T,SAASvT,EAAEkL,WAAY,EAAE,GACpD,IAAK,IAAI+L,EAAI,EAAKA,EAAI1Y,OAAOwtB,KAAK/sB,KAAK+J,OAAOme,eAAe3T,SAASvT,EAAEkL,WAAY,EAAE,EAAE,EAAEvL,QACtF,CAACX,KAAKwwC,gBAAkBv4B,CAAC,GAGzB,IAFA,IA2CwBg4B,EAMQlM,EACI/2B,EAlDhCggB,EAAahtB,KAAK+J,OAAOme,eAAe3T,SAASvT,EAAEkL,WAAY,EAAE,GAAG3M,OACpEwtB,KAAK/sB,KAAK+J,OAAOme,eAAe3T,SAASvT,EAAEkL,WAAY,EAAE,EAAE,EAAEqI,SAAS0D,EAAE/L,WAAY,EAAE,IACjFiM,EAAI,EAAKA,EAAI5Y,OAAOwtB,KAAKC,CAAU,EAAErsB,QAAW,CAACX,KAAKwwC,gBAAkBr4B,CAAC,GAC1E+T,EAASukB,gBAAkBzjB,EAAWzY,SAAS4D,EAAEjM,WAAY,EAAE,GAAGygB,SAC9CzV,SAASnL,cAAc,IAAMihB,EAAWzY,SAAS4D,EAAEjM,WAAY,EAAE,GAAG5B,GAAKgmC,EAA0B,GAClGX,KACjB3vC,KAAKwwC,gBAAkB,CAAA,EACvBxwC,KAAKgsB,eAC+C,QAAhDgB,EAAWzY,SAAS4D,EAAEjM,WAAY,EAAE,GAAGD,KACnCjL,IAAMhB,KAAK+J,OAAO4a,aAClB3kB,KAAK+J,OAAOiP,OAAO5J,OAAOpO,CAAC,EAC3B0vC,WAAW,WACP,IAAIlf,EAAcrnB,EAAMJ,OAAOiP,OAAO5M,QAAQL,cAAc,eAAe,EACvEylB,GACAA,EAAY5kB,QAEhBzC,EAAMmiB,aAAa,MAAM,GAC1B,GAAG,GAGNtsB,KAAKssB,aAAa,MAAM,EAIwB,SAAhDU,EAAWzY,SAAS4D,EAAEjM,WAAY,EAAE,GAAGD,MAAmE,qBAAhD+gB,EAAWzY,SAAS4D,EAAEjM,WAAY,EAAE,GAAGD,MAA+E,cAAhD+gB,EAAWzY,SAAS4D,EAAEjM,WAAY,EAAE,GAAGD,KACnKiL,SAAS0O,eAAeoH,EAAWzY,SAAS4D,EAAEjM,WAAY,EAAE,GAAG5B,EAAE,GAAK4M,SAAS0O,eAAeoH,EAAWzY,SAAS4D,EAAEjM,WAAY,EAAE,GAAG5B,EAAE,EAAE+B,UAAUC,SAAS,uBAAuB,EACnL4K,SAAS0O,eAAeoH,EAAWzY,SAAS4D,EAAEjM,WAAY,EAAE,GAAG5B,EAAE,EAAEsC,SAG/DI,EAAW,KAAA,EAGXA,EAFwE,CAAC,IAAxEggB,EAAWzY,SAAS4D,EAAEjM,WAAY,EAAE,GAAK,GAAEumB,QAAQ,cAAc,GAC9Dke,EAAY3jB,EAAWzY,SAAS4D,EAAEjM,WAAY,EAAE,GAAG5B,GAAG6Q,QAAQ,gBAAiB,EAAE,EAC1ElO,EAAQjN,KAAK+J,OAAOmD,KAAMyjC,CAAS,GAGnC1jC,EAAQjN,KAAK+J,OAAOmD,KAAM8f,EAAWzY,SAAS4D,EAAEjM,WAAY,EAAE,GAAG5B,EAAE,EAE7EqlC,GAAyB3iC,EAASuI,WAAavV,KAAK+J,OAAO4a,aAC5D3kB,KAAK4wC,WAAW5jC,EAAUggB,EAAY7U,EAAG,CAAA,EAAOw3B,CAAQ,GAIX,gBAAhD3iB,EAAWzY,SAAS4D,EAAEjM,WAAY,EAAE,GAAGD,MAA0E,aAAhD+gB,EAAWzY,SAAS4D,EAAEjM,WAAY,EAAE,GAAGD,MAAuE,aAAhD+gB,EAAWzY,SAAS4D,EAAEjM,WAAY,EAAE,GAAGD,OACvKgkC,EAAS/4B,SAASnL,cAAc,IAAMihB,EAAWzY,SAAS4D,EAAEjM,WAAY,EAAE,GAAG5B,EAAE,EACnFtK,KAAKgsB,eACDikB,IACIlM,EAAU/W,EAAWzY,SAAS4D,EAAEjM,WAAY,EAAE,GAAG5B,GACjDqlC,EACuE,CAAC,IAApE3iB,EAAWzY,SAAS4D,EAAEjM,WAAY,EAAE,GAAG5B,GAAGmoB,QAAQ,WAAW,GAAuF,CAAC,IAA5EzF,EAAWzY,SAAS4D,EAAEjM,WAAY,EAAE,GAAG5B,GAAGmoB,QAAQ,mBAAmB,GAAwF,CAAC,IAA7EzF,EAAWzY,SAAS4D,EAAEjM,WAAY,EAAE,GAAG5B,GAAGmoB,QAAQ,oBAAoB,IAChOsR,EAAU/W,EAAWzY,SAAS4D,EAAEjM,WAAY,EAAE,GAAG5B,GAAG6Q,QAAQ,kDAAmD,EAAE,GAE7GnO,EADWyL,GAASzY,KAAK+J,OAAOmD,KAAM62B,CAAO,GACpCxuB,WAAavV,KAAK+J,OAAO4a,aAClC3kB,KAAK4wC,WAAW5jC,EAAUggB,EAAY7U,EAAG,CAAA,EAAMw3B,EAAUM,CAAM,GAKvEjwC,KAAK4wC,WAAW,KAAM5jB,EAAY7U,EAAG,CAAA,EAAMw3B,EAAUM,CAAM,UAWvFjwC,KAAK+J,OAAOme,gBACZloB,KAAK6wC,uBAAuB3kB,EAAU3sB,OAAOwtB,KAAK/sB,KAAK+J,OAAOme,cAAc,EAAE3T,SAASvT,EAAEkL,WAAY,EAAE,GAAIyjC,CAAQ,GAKnIL,GAAapvC,UAAU0wC,WAAa,SAAU5jC,EAAUggB,EAAY7U,EAAG24B,EAAcnB,EAAUM,GAC3F,GAAIa,EACAb,EAAOrjC,QAC+C,aAAhDogB,EAAWzY,SAAS4D,EAAEjM,WAAY,EAAE,GAAGD,OACzCjM,KAAK+wC,kBAAoB,CAAA,EAC2B,gBAAhD/jB,EAAWzY,SAAS4D,EAAEjM,WAAY,EAAE,GAAGD,KACvCjM,KAAKssB,aAAa,kBAAkB,EAGpCtsB,KAAKssB,aAAa,WAAW,OAIpC,CACD,IAAI3O,EAASqP,EAAWzY,SAAS4D,EAAEjM,WAAY,EAAE,GAAG5B,GAiBpD,OAhBI4M,SAASnL,cAAc,IAAM4R,CAAM,GAAKgyB,IACP,eAA7B3vC,KAAK+J,OAAO4F,aACRuH,SAASnL,cAAc,IAAM4R,CAAM,EAAEvN,QAAQ,IAAMpD,EAASkL,MAAM5N,GAAK,yBAAyB,GAAK4M,SAASnL,cAAc,IAAM4R,CAAM,EAAEvN,QAAQ,IAAMpD,EAASkL,MAAM5N,GAAK,yBAAyB,EAAE+B,UAAUC,SAAS,eAAe,EACzO4K,SAASnL,cAAc,IAAMiB,EAASkL,MAAM5N,GAAK,mBAAmB,EAAEsC,QAEjEsK,SAASnL,cAAc,IAAM4R,CAAM,EAAEvN,QAAQ,IAAMpQ,KAAK+J,OAAOiP,OAAO5M,QAAQ9B,GAAKgrB,GAA6B,QAAQ,GAAKpe,SAASnL,cAAc,IAAM4R,CAAM,EAAEvN,QAAQ,IAAMpQ,KAAK+J,OAAOiP,OAAO5M,QAAQ9B,GAAKgrB,GAA6B,QAAQ,EAAEjpB,UAAUC,SAAS,eAAe,GAC9R4K,SAASnL,cAAc,IAAM/L,KAAK+J,OAAOiP,OAAO5M,QAAQ9B,GAAKgrB,EAA0B,EAAE1oB,QAIzFsK,SAASnL,cAAc,IAAM4R,CAAM,EAAEvN,QAAQ,IAAMpD,EAASkL,MAAM5N,GAAKgmB,EAAwB0J,GAAwB,QAAQ,GAAK9iB,SAASnL,cAAc,IAAM4R,CAAM,EAAEvN,QAAQ,IAAMpD,EAASkL,MAAM5N,GAAKgmB,EAAwB0J,GAAwB,QAAQ,EAAE3tB,UAAUC,SAAS,eAAe,GACvS4K,SAASnL,cAAc,IAAMiB,EAASkL,MAAM5N,GAAKgmB,EAAwB0J,EAAqB,EAAEptB,SAI7F5M,KAAK+J,OAAO+3B,kBAAkB90B,EAAS/C,IAAI,GAEtD,IAAK,MACDjK,KAAK+J,OAAO2rB,mBAAmB9oB,MAAM+Q,CAAM,EAC3C,MACJ,IAAK,eACD3d,KAAK+J,OAAOoP,qBAAqB5M,OAAOoR,CAAM,EAC9C,MACJ,IAAK,YACD3d,KAAK+J,OAAO4rB,wBAAwBppB,OAAOoR,CAAM,EACjD,MACJ,IAAK,WACD3d,KAAK+J,OAAO6rB,qBAAqBhpB,MAAM+Q,CAAM,EAC7C,MACJ,IAAK,cACD3d,KAAK+J,OAAO8rB,wBAAwBtpB,OAAOoR,CAAM,EACjD,MACJ,IAAK,WACD,IAAIihB,EAAY1nB,SAASnL,cAAc,IAAM4R,CAAM,EAC/C3d,KAAKgxC,sBAAsBpS,CAAS,GACpC8R,WAAW,WACP9R,EAAU7pB,SACX,GAAG,EAEV,MAEJ,IAAK,UACD,IAAImK,EAAahI,SAASnL,cAAc,IAAM4R,CAAM,EAChD3d,KAAKgxC,sBAAsB9xB,CAAU,GACrCA,EAAWtS,QAEf,MAEJ,IAAK,WACG0vB,EAAcplB,SAASnL,cAAc,IAAM4R,CAAM,EACjD3d,KAAKgxC,sBAAsB1U,CAAW,GACtCA,EAAYvnB,QAEhB,MAEJ,IAAK,YACGwG,EAAcrE,SAASnL,cAAc,IAAM4R,CAAM,EACrD,GAAI3d,KAAKgxC,sBAAsBz1B,CAAW,EAAG,CAC9BuQ,cAAYvQ,EAAa1I,gBAAc,EAC7CtG,SACL,IAAK,IAAIvL,EAAI,EAAGA,EAAIgM,EAAS/C,KAAKwR,oBAAoB1I,MAAMpS,OAAQK,CAAC,GAC7DgM,EAAS/C,KAAKwR,oBAAoB1I,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGygB,QACpE3sB,KAAKuvC,oBAAoB5xB,EAAU/B,EAAmC5a,EAAIgM,EAAS/C,KAAKwR,oBAAoB1I,MAAMwB,SAASvT,EAAEkL,WAAY,EAAE,GAAGygB,OAAQ,MAAM,MASxL2iB,GAAapvC,UAAU8wC,sBAAwB,SAAU5kC,GACrD,OAAOA,GAAW,CAACA,EAAQgE,QAAQ,gBAAgB,EAAE/D,UAAUC,SAAS,YAAY,GAExFgjC,GAAapvC,UAAU2wC,uBAAyB,SAAU3kB,EAAU3rB,EAAKovC,GACrE,IAAIxlC,EAAQnK,KACZ,GAAIA,KAAK+J,OAAOme,eAAe,GAAK3nB,GAAM,CACtC,IAAI0wC,EAAe,CAAA,EACfjkB,EAAahtB,KAAK+J,OAAOme,eAAe,GAAK3nB,GAC7C0vC,EAAS,KAAA,EAEb,GAAIjjB,EACA,GAAY,kBAARzsB,GACA,IAAK,IAAIS,EAAI,EAAGA,EAAIzB,OAAOwtB,KAAK/sB,KAAK+J,OAAOme,eAAe,GAAK3nB,EAAI,EAAEI,OAAQK,CAAC,GAC3E,GAAIgsB,EAAWzY,SAASvT,EAAEkL,WAAY,EAAE,GAAGygB,SAAWT,EAASukB,gBAC3DR,EAAS/4B,SAASnL,cAAc,IAAMihB,EAAWzY,SAASvT,EAAEkL,WAAY,EAAE,GAAG5B,EAAE,EAC/D4M,SAASnL,cAAc,IAAMkkC,EAAO3lC,GAAKgmC,EAA0B,GAC9DX,GAAU,CAC3BsB,EAAe,CAAA,EACXtB,GAAYz4B,SAASnL,cAAc,2BAA2B,EAAEM,UAAUC,SAAS,eAAe,GAClGtM,KAAK+J,OAAOiP,OAAO5M,QAAQL,cAAc,qBAAqB,EAAEa,QAEpE,YAMRogB,EAAW,IAAMA,EAAW,GAAGL,SAAWT,EAASukB,gBACnDR,EAAS/4B,SAASnL,cAAc,IAAMihB,EAAW,GAAG1iB,EAAE,EACtC4M,SAASnL,cAAc,IAAMihB,EAAW,GAAG1iB,GAAKgmC,EAA0B,GACrEX,KACjBsB,EAAe,CAAA,GAK3BA,IACAjxC,KAAKgsB,eACLhsB,KAAKwwC,gBAAkB,CAAA,EACnBP,KACAA,EAAOrjC,QACK,cAARrM,EACAP,KAAKssB,aAAa,eAAe,EAEpB,gBAAR/rB,GACLP,KAAK+wC,kBAAoB,CAAA,EACzB/wC,KAAKssB,aAAa,WAAW,GAEhB,gBAAR/rB,GACLmwC,WAAW,WACP,IAAK,IAEOQ,EAFHlwC,EAAI,EAAGA,EAAIzB,OAAOwtB,KAAK5iB,EAAMJ,OAAOme,cAAc,EAAEvnB,OAAQK,CAAC,GAC9DmJ,EAAMJ,OAAOme,eAAe3T,SAASvT,EAAEkL,WAAY,EAAE,KACjDglC,EAAe/mC,EAAMJ,OAAOme,eAAe3T,SAASvT,EAAEkL,WAAY,EAAE,GAAQ,IAChF/B,EAAMolC,oBAAqB2B,EAAa,GAAK,GAAGA,EAAa,GAAGvkB,OAAQ,MAAO,SAAU,SAAU,CAAA,EAAM,CAAA,CAAI,IAGtH,GAAG,KAa1B2iB,GAAapvC,UAAU8rB,aAAe,SAAUzrB,GAoE5C,IAnEA,IAAI4J,EAAQnK,KACRusB,EAAcrV,SAAS/C,iBAAiB,kBAAkB,EAC1D2Y,EAAgB,CAAA,EAgEhBtN,GA/DJxf,KAAK+J,OAAO+d,UAAY,GA+DX9nB,MACJgB,EAAI,EAAGA,EAAIurB,EAAY5rB,OAAQK,CAAC,GACrCqe,CAhEU,SAAUre,GACpB,IAAI4rB,EAAaL,EAAYhY,SAASvT,EAAEkL,WAAY,EAAE,GACtD,GAAY,WAAR3L,GAAoBif,EAAOzV,OAAOme,gBAAkB1I,EAAOzV,OAAOme,eAAe1I,EAAOzV,OAAO4a,aAAc,CAC7G,IAAK,IAAI1M,EAAI,EAAGA,EAAI1Y,OAAOwtB,KAAKvN,EAAOzV,OAAOme,eAAe1I,EAAOzV,OAAO4a,YAAY,EAAEhkB,OAAQsX,CAAC,GAAI,CAClG,IAAIk5B,EAAW5xC,OAAOwtB,KAAKvN,EAAOzV,OAAOme,eAAe3T,SAASiL,EAAOzV,OAAO4a,YAAYzY,WAAY,EAAE,EAAG,EAAEqI,SAAS0D,EAAE/L,WAAY,EAAE,GAMvI,GAAc,CAAC,IAJHqL,EADQiI,EAAOzV,OAAOme,eAAe3T,SAASiL,EAAOzV,OAAO4a,YAAYzY,WAAY,EAAE,GAC/D,GAAKilC,GAAU,SAAUzlC,GACxD,OAAOA,EAAEpB,GACLgmC,KAA+B/jB,EAAYhY,SAASvT,EAAEkL,WAAY,EAAE,GAAG5B,GAC9E,EACiB,CACd,GAAiB,SAAZ6mC,GAAsB,CAAE3xB,EAAwB,mBAAmB,gBAAZ2xB,GAA4D,YAA/B3xB,EAAOzV,OAAO4F,aAA6B,CAChI6P,EAAO8M,aAAa,KAAK,EAEzBQ,EAAgB,EADhBvsB,EAAM,IAEN,MAEC,GAAIif,EAAOuxB,oBACK,cAAZI,GAA0D,eAA/B3xB,EAAOzV,OAAO4F,cAA+C,qBAAZwhC,GAAiE,YAA/B3xB,EAAOzV,OAAO4F,cAA6B,CAC1J6P,EAAO8M,aAAa,MAAM,EAE1BQ,EAAgB,EADhBvsB,EAAM,IAEN,QAKhB,IAAK,IAAI+c,EAAI,EAAGA,EAAI/d,OAAOwtB,KAAKvN,EAAOzV,OAAOme,cAAc,EAAEvnB,OAAQ2c,CAAC,GACnE,GAAIkC,EAAOzV,OAAOme,eAAe3T,SAAS+I,EAAEpR,WAAY,EAAE,GAAI,CAE1D,IADA,IAAI8gB,EAAaxN,EAAOzV,OAAOme,eAAe3T,SAAS+I,EAAEpR,WAAY,EAAE,GAAQ,IACtE+L,EAAI,EAAGA,EAAI1Y,OAAOwtB,KAAKC,CAAU,EAAErsB,OAAQsX,CAAC,GACjD,GAAI2U,EAAWtiB,KAAO0iB,EAAW,GAAG1iB,GAAKgmC,IACjCp5B,SAASnL,cAAc,IAAMihB,EAAW,GAAG1iB,GAAKuT,CAAmB,EAAEzN,QAAQ,gBAAgB,EAAG,CAC9EoP,EAAOzV,OAAOiP,OAAO5M,QAAQL,cAAc,eAAe,EAChEa,QACZ8jC,WAAW,WACPvmC,EAAMmiB,aAAa,KAAK,GACzB,GAAG,EAENQ,EAAgB,EADhBvsB,EAAM,IAEN,MAIZ,GAAIusB,EACA,MAIR,CAACA,GAAiBtN,EAAOzV,OAAOme,eAA8B,eAEhD,CAAC,IADH3Q,EAASiI,EAAOzV,OAAOme,eAA8B,cAAG,SAAUxc,GAAK,OAAOA,EAAEpB,GAAKgmC,KAA+B/jB,EAAYhY,SAASvT,EAAEkL,WAAY,EAAE,GAAG5B,GAAK,IAEzKkV,EAAO8M,aAAa,KAAK,EAEzBQ,EAAgB,EADhBvsB,EAAM,KAKdqsB,GACA5d,SAAO4d,CAAU,GAKb5rB,CAAC,EAEbhB,KAAK+wC,kBAAoB,CAAA,EACpBjkB,IACD9sB,KAAK+J,OAAOugB,aAAe,CAAA,IASnCglB,GAAapvC,UAAUkxC,YAAc,SAAUrmB,GACvC/qB,KAAK+J,OAAO0f,gBACRsB,EACA/qB,KAAKysB,YAAY1B,EAAW,CAAA,CAAI,EAGhC/qB,KAAKssB,aAAa,KAAK,IASnCgjB,GAAapvC,UAAUmxC,YAAc,WACjCrxC,KAAKgsB,oBAnjBTsjB,GAqjBOA,GApjBP,SAASA,GAAavlC,GAClB/J,KAAK+wC,kBAAoB,CAAA,EACzB/wC,KAAK+J,OAASA,wMdkGM,4IA8CN,yEAID,opDApBgB"}
|