@syncfusion/ej2-filemanager 27.2.3 → 27.2.5
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/dist/ej2-filemanager.min.js +2 -2
- package/dist/ej2-filemanager.umd.min.js +2 -2
- package/dist/ej2-filemanager.umd.min.js.map +1 -1
- package/dist/es6/ej2-filemanager.es2015.js +51 -15
- package/dist/es6/ej2-filemanager.es2015.js.map +1 -1
- package/dist/es6/ej2-filemanager.es5.js +55 -15
- package/dist/es6/ej2-filemanager.es5.js.map +1 -1
- package/dist/global/ej2-filemanager.min.js +2 -2
- package/dist/global/ej2-filemanager.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +11 -11
- package/src/file-manager/base/interface.d.ts +1 -0
- package/src/file-manager/common/operations.js +23 -8
- package/src/file-manager/common/utility.d.ts +11 -0
- package/src/file-manager/common/utility.js +23 -2
- package/src/file-manager/layout/large-icons-view.js +1 -1
- package/src/file-manager/layout/navigation-pane.d.ts +1 -1
- package/src/file-manager/layout/navigation-pane.js +7 -3
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ej2-filemanager.umd.min.js","sources":["../src/file-manager/models/ajax-settings.js","../src/file-manager/models/toolbar-settings.js","../src/file-manager/models/search-settings.js","../src/file-manager/models/details-view-settings.js","../src/file-manager/models/contextMenu-settings.js","../src/file-manager/models/navigation-pane-settings.js","../src/file-manager/models/upload-settings.js","../src/file-manager/models/column.js","../src/file-manager/base/classes.js","../src/file-manager/base/constant.js","../src/file-manager/common/utility.js","../src/file-manager/common/operations.js","../src/file-manager/pop-up/dialog.js","../src/file-manager/layout/large-icons-view.js","../src/file-manager/actions/breadcrumb-bar.js","../src/file-manager/pop-up/context-menu.js","../src/file-manager/models/default-locale.js","../src/file-manager/base/file-manager.js","../src/file-manager/actions/toolbar.js","../src/file-manager/actions/virtualization.js","../src/file-manager/layout/navigation-pane.js","../src/file-manager/layout/details-view.js"],"sourcesContent":["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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar AjaxSettings = /** @class */ (function (_super) {\n __extends(AjaxSettings, _super);\n function AjaxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"downloadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"getImageUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"uploadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"url\", void 0);\n return AjaxSettings;\n}(ChildProperty));\nexport { AjaxSettings };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var defaultToolbarItems = ['NewFolder', 'Upload', 'Cut', 'Copy', 'Paste', 'Delete', 'Download', 'Rename',\n 'SortBy', 'Refresh', 'Selection', 'View', 'Details'];\n/**\n * Specifies the Toolbar settings of the FileManager.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(defaultToolbarItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"visible\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\nvar ToolbarItem = /** @class */ (function (_super) {\n __extends(ToolbarItem, _super);\n function ToolbarItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], ToolbarItem.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], ToolbarItem.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], ToolbarItem.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], ToolbarItem.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], ToolbarItem.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], ToolbarItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], ToolbarItem.prototype, \"align\", void 0);\n __decorate([\n Property(-1)\n ], ToolbarItem.prototype, \"tabIndex\", void 0);\n __decorate([\n Property()\n ], ToolbarItem.prototype, \"name\", void 0);\n return ToolbarItem;\n}(ChildProperty));\nexport { ToolbarItem };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Search settings of the File Manager.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"allowSearchOnTyping\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], SearchSettings.prototype, \"placeholder\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\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 { Property, ChildProperty, initializeCSPTemplate } from '@syncfusion/ej2-base';\n/**\n * Specifies the columns in the details view of the file manager.\n */\nexport var columnArray = [\n {\n field: 'name', headerText: 'Name', minWidth: 120,\n template: '<span class=\"e-fe-text\">${name}</span>',\n customAttributes: { class: 'e-fe-grid-name' }\n },\n {\n field: '_fm_modified', headerText: 'DateModified', type: 'dateTime',\n format: 'MMMM dd, yyyy HH:mm', minWidth: 120, width: '190'\n },\n {\n field: 'size', headerText: 'Size', minWidth: 90, width: '110',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template: initializeCSPTemplate(function (data) {\n return \"<span class=\\\"e-fe-size\\\">\" + data.size + \"</span>\";\n }), format: 'n2'\n }\n];\n/**\n * Specifies the grid settings of the File Manager.\n */\nvar DetailsViewSettings = /** @class */ (function (_super) {\n __extends(DetailsViewSettings, _super);\n function DetailsViewSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], DetailsViewSettings.prototype, \"columnResizing\", void 0);\n __decorate([\n Property(columnArray)\n ], DetailsViewSettings.prototype, \"columns\", void 0);\n return DetailsViewSettings;\n}(ChildProperty));\nexport { DetailsViewSettings };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var fileItems = ['Open', '|', 'Cut', 'Copy', '|', 'Delete', 'Download', 'Rename', '|', 'Details'];\nexport var folderItems = ['Open', '|', 'Cut', 'Copy', 'Paste', '|', 'Delete', 'Rename', 'Download', '|', 'Details'];\nexport var layoutItems = [\n 'SortBy', 'View', 'Refresh', '|', 'Paste', '|', 'NewFolder', 'Upload', '|', 'Details', '|', 'SelectAll'\n];\n/**\n * Specifies the ContextMenu settings of the File Manager.\n */\nvar ContextMenuSettings = /** @class */ (function (_super) {\n __extends(ContextMenuSettings, _super);\n function ContextMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(fileItems)\n ], ContextMenuSettings.prototype, \"file\", void 0);\n __decorate([\n Property(folderItems)\n ], ContextMenuSettings.prototype, \"folder\", void 0);\n __decorate([\n Property(layoutItems)\n ], ContextMenuSettings.prototype, \"layout\", void 0);\n __decorate([\n Property(true)\n ], ContextMenuSettings.prototype, \"visible\", void 0);\n return ContextMenuSettings;\n}(ChildProperty));\nexport { ContextMenuSettings };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the navigationpane settings of the File Manager.\n */\nvar NavigationPaneSettings = /** @class */ (function (_super) {\n __extends(NavigationPaneSettings, _super);\n function NavigationPaneSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('650px')\n ], NavigationPaneSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('240px')\n ], NavigationPaneSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(true)\n ], NavigationPaneSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], NavigationPaneSettings.prototype, \"sortOrder\", void 0);\n return NavigationPaneSettings;\n}(ChildProperty));\nexport { NavigationPaneSettings };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar UploadSettings = /** @class */ (function (_super) {\n __extends(UploadSettings, _super);\n function UploadSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], UploadSettings.prototype, \"allowedExtensions\", void 0);\n __decorate([\n Property(true)\n ], UploadSettings.prototype, \"autoUpload\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"autoClose\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"directoryUpload\", void 0);\n __decorate([\n Property(0)\n ], UploadSettings.prototype, \"minFileSize\", void 0);\n __decorate([\n Property(30000000)\n ], UploadSettings.prototype, \"maxFileSize\", void 0);\n return UploadSettings;\n}(ChildProperty));\nexport { UploadSettings };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Interface for a class Column\n */\n/* istanbul ignore next */\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Column.prototype, \"field\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"headerText\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"minWidth\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('Left')\n ], Column.prototype, \"textAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTextAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"sortComparer\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(true)\n ], Column.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(true)\n ], Column.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customAttributes\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"hideAtMedia\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customFormat\", void 0);\n __decorate([\n Property(false)\n ], Column.prototype, \"isPrimaryKey\", void 0);\n return Column;\n}(ChildProperty));\nexport { Column };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var TOOLBAR_ID = '_toolbar';\n/** @hidden */\nexport var LAYOUT_ID = '_layout';\n/** @hidden */\nexport var NAVIGATION_ID = '_navigation';\n/** @hidden */\nexport var TREE_ID = '_tree';\n/** @hidden */\nexport var GRID_ID = '_grid';\n/** @hidden */\nexport var LARGEICON_ID = '_largeicons';\n/** @hidden */\nexport var DIALOG_ID = '_dialog';\n/** @hidden */\nexport var ALT_DIALOG_ID = '_alt_dialog';\n/** @hidden */\nexport var IMG_DIALOG_ID = '_img_dialog';\n/** @hidden */\nexport var EXTN_DIALOG_ID = '_extn_dialog';\n/** @hidden */\nexport var UPLOAD_DIALOG_ID = '_upload_dialog';\n/** @hidden */\nexport var RETRY_DIALOG_ID = '_retry_dialog';\n/** @hidden */\nexport var CONTEXT_MENU_ID = '_contextmenu';\n/** @hidden */\nexport var SORTBY_ID = '_sortby';\n/** @hidden */\nexport var VIEW_ID = '_view';\n/** @hidden */\nexport var SPLITTER_ID = '_splitter';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var BREADCRUMBBAR_ID = '_breadcrumbbar';\n/** @hidden */\nexport var UPLOAD_ID = '_upload';\n/** @hidden */\nexport var RETRY_ID = '_retry';\n/** @hidden */\nexport var SEARCH_ID = '_search';\n/**\n * Specifies the File Manager internal class names\n */\n/** @hidden */\nexport var ROOT = 'e-filemanager';\n/** @hidden */\nexport var CONTROL = 'e-control';\n/** @hidden */\nexport var CHECK_SELECT = 'e-fe-cb-select';\n/** @hidden */\nexport var ROOT_POPUP = 'e-fe-popup';\n/** @hidden */\nexport var MOBILE = 'e-fe-mobile';\n/** @hidden */\nexport var MOB_POPUP = 'e-fe-popup e-fe-mobile';\n/** @hidden */\nexport var MULTI_SELECT = 'e-fe-m-select';\n/** @hidden */\nexport var FILTER = 'e-fe-m-filter';\n/** @hidden */\nexport var LAYOUT = 'e-layout';\n/** @hidden */\nexport var NAVIGATION = 'e-navigation';\n/** @hidden */\nexport var LAYOUT_CONTENT = 'e-layout-content';\n/** @hidden */\nexport var LARGE_ICONS = 'e-large-icons';\n/** @hidden */\nexport var TB_ITEM = 'e-toolbar-item';\n/** @hidden */\nexport var LIST_ITEM = 'e-list-item';\n/** @hidden */\nexport var LIST_TEXT = 'e-list-text';\n/** @hidden */\nexport var LIST_PARENT = 'e-list-parent';\n/** @hidden */\nexport var TB_OPTION_TICK = 'e-icons e-fe-tick';\n/** @hidden */\nexport var TB_OPTION_DOT = 'e-icons e-fe-dot';\n/** @hidden */\nexport var BLUR = 'e-blur';\n/** @hidden */\nexport var ACTIVE = 'e-active';\n/** @hidden */\nexport var HOVER = 'e-hover';\n/** @hidden */\nexport var FOCUS = 'e-focus';\n/** @hidden */\nexport var FOCUSED = 'e-focused';\n/** @hidden */\nexport var CHECK = 'e-check';\n/** @hidden */\nexport var FRAME = 'e-frame';\n/** @hidden */\nexport var CB_WRAP = 'e-checkbox-wrapper';\n/** @hidden */\nexport var ROW = 'e-row';\n/** @hidden */\nexport var ROWCELL = 'e-rowcell';\n/** @hidden */\nexport var EMPTY = 'e-empty';\n/** @hidden */\nexport var EMPTY_CONTENT = 'e-empty-content';\n/** @hidden */\nexport var EMPTY_INNER_CONTENT = 'e-empty-inner-content';\n/** @hidden */\nexport var CLONE = 'e-fe-clone';\n/** @hidden */\nexport var DROP_FOLDER = 'e-fe-drop-folder';\n/** @hidden */\nexport var DROP_FILE = 'e-fe-drop-file';\n/** @hidden */\nexport var FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var ICON_IMAGE = 'e-fe-image';\n/** @hidden */\nexport var ICON_MUSIC = 'e-fe-music';\n/** @hidden */\nexport var ICON_VIDEO = 'e-fe-video';\n/** @hidden */\nexport var LARGE_ICON = 'e-large-icon';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER = 'e-empty-icon e-fe-folder';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER_TWO = 'e-empty-icon.e-fe-folder';\n/** @hidden */\nexport var LARGE_ICON_FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var SELECTED_ITEMS = 'e-items';\n/** @hidden */\nexport var TEXT_CONTENT = 'e-text-content';\n/** @hidden */\nexport var GRID_HEADER = 'e-gridheader';\n/** @hidden */\nexport var TEMPLATE_CELL = 'e-templatecell';\n/** @hidden */\nexport var TREE_VIEW = 'e-treeview';\n/** @hidden */\nexport var MENU_ITEM = 'e-menu-item';\n/** @hidden */\nexport var MENU_ICON = 'e-menu-icon';\n/** @hidden */\nexport var SUBMENU_ICON = 'e-caret';\n/** @hidden */\nexport var GRID_VIEW = 'e-content';\n/** @hidden */\nexport var GRID_CONTENT = 'e-gridcontent';\n/** @hidden */\nexport var ICON_VIEW = 'e-list-parent';\n/** @hidden */\nexport var ICON_OPEN = 'e-icons e-fe-open';\n/** @hidden */\nexport var ICON_UPLOAD = 'e-icons e-fe-upload';\n/** @hidden */\nexport var ICON_CUT = 'e-icons e-fe-cut';\n/** @hidden */\nexport var ICON_COPY = 'e-icons e-fe-copy';\n/** @hidden */\nexport var ICON_PASTE = 'e-icons e-fe-paste';\n/** @hidden */\nexport var ICON_DELETE = 'e-icons e-fe-delete';\n/** @hidden */\nexport var ICON_RENAME = 'e-icons e-fe-rename';\n/** @hidden */\nexport var ICON_NEWFOLDER = 'e-icons e-fe-newfolder';\n/** @hidden */\nexport var ICON_DETAILS = 'e-icons e-fe-details';\n/** @hidden */\nexport var ICON_SHORTBY = 'e-icons e-fe-sort';\n/** @hidden */\nexport var ICON_REFRESH = 'e-icons e-fe-refresh';\n/** @hidden */\nexport var ICON_SELECTALL = 'e-icons e-fe-select';\n/** @hidden */\nexport var ICON_DOWNLOAD = 'e-icons e-fe-download';\n/** @hidden */\nexport var ICON_OPTIONS = 'e-icons e-fe-options';\n/** @hidden */\nexport var ICON_GRID = 'e-icons e-fe-grid';\n/** @hidden */\nexport var ICON_LARGE = 'e-icons e-fe-large';\n/** @hidden */\nexport var ICON_BREADCRUMB = 'e-icons e-fe-breadcrumb';\n/** @hidden */\nexport var ICON_CLEAR = 'e-icons e-fe-clear';\n/** @hidden */\nexport var ICON_DROP_IN = 'e-icons e-fe-drop-in';\n/** @hidden */\nexport var ICON_DROP_OUT = 'e-icons e-fe-drop-out';\n/** @hidden */\nexport var ICON_NO_DROP = 'e-icons e-fe-no-drop';\n/** @hidden */\nexport var ICONS = 'e-icons';\n/** @hidden */\nexport var DETAILS_LABEL = 'e-detailslabel';\n/** @hidden */\nexport var ERROR_CONTENT = 'e-fe-errorcontent';\n/** @hidden */\nexport var STATUS = 'e-status';\n/** @hidden */\nexport var BREADCRUMBS = 'e-address';\n/** @hidden */\nexport var RTL = 'e-rtl';\n/** @hidden */\nexport var DISPLAY_NONE = 'e-display-none';\n/** @hidden */\nexport var COLLAPSED = 'e-node-collapsed';\n/** @hidden */\nexport var FULLROW = 'e-fullrow';\n/** @hidden */\nexport var ICON_COLLAPSIBLE = 'e-icon-collapsible';\n/** @hidden */\nexport var SPLIT_BAR = 'e-split-bar';\n/** @hidden */\nexport var HEADER_CHECK = 'e-headercheck';\n/** @hidden */\nexport var OVERLAY = 'e-fe-overlay';\n/** @hidden */\nexport var VALUE = 'e-fe-value';\n","/**\n * Specifies the File Manager internal variables\n */\n/** @hidden */\nexport var isFile = 'isFile';\n/**\n * Specifies the File Manager internal events\n */\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var finalizeEnd = 'finalize-end';\n/** @hidden */\nexport var createEnd = 'create-end';\n/** @hidden */\nexport var filterEnd = 'filter-end';\n/** @hidden */\nexport var beforeDelete = 'before-delete';\n/** @hidden */\nexport var pathDrag = 'path-drag';\n/** @hidden */\nexport var deleteInit = 'delete-init';\n/** @hidden */\nexport var deleteEnd = 'delete-end';\n/** @hidden */\nexport var refreshEnd = 'refresh-end';\n/** @hidden */\nexport var resizeEnd = 'resize-end';\n/** @hidden */\nexport var splitterResize = 'splitter-resize';\n/** @hidden */\nexport var pathChanged = 'path-changed';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var beforeRequest = 'before-request';\n/** @hidden */\nexport var upload = 'upload';\n/** @hidden */\nexport var skipUpload = 'skip-upload';\n/** @hidden */\nexport var afterRequest = 'after-request';\n/** @hidden */\nexport var download = 'download';\n/** @hidden */\nexport var layoutRefresh = 'layout-refresh';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var search = 'search';\n/** @hidden */\nexport var openInit = 'open-init';\n/** @hidden */\nexport var openEnd = 'open-end';\n/** @hidden */\nexport var selectionChanged = 'selection-changed';\n/** @hidden */\nexport var selectAllInit = 'select-all-init';\n/** @hidden */\nexport var clearAllInit = 'clear-all-init';\n/** @hidden */\nexport var clearPathInit = 'clear-path-init';\n/** @hidden */\nexport var layoutChange = 'layout-change';\n/** @hidden */\nexport var sortByChange = 'sort-by-change';\n/** @hidden */\nexport var nodeExpand = 'node-expand';\n/** @hidden */\nexport var detailsInit = 'details-init';\n/** @hidden */\nexport var menuItemData = 'menu-item-data';\n/** @hidden */\nexport var renameInit = 'rename-init';\n/** @hidden */\nexport var renameEndParent = 'rename-end-parent';\n/** @hidden */\nexport var renameEnd = 'rename-end';\n/** @hidden */\nexport var showPaste = 'show-paste';\n/** @hidden */\nexport var hidePaste = 'hide-paste';\n/** @hidden */\nexport var selectedData = 'selected-data';\n/** @hidden */\nexport var cutCopyInit = 'cut-copy-init';\n/** @hidden */\nexport var pasteInit = 'paste-init';\n/** @hidden */\nexport var pasteEnd = 'paste-end';\n/** @hidden */\nexport var cutEnd = 'cut-end';\n/** @hidden */\nexport var hideLayout = 'hide-layout';\n/** @hidden */\nexport var updateTreeSelection = 'update-tree-selection';\n/** @hidden */\nexport var treeSelect = 'select-node';\n/** @hidden */\nexport var sortColumn = 'sort-column';\n/** @hidden */\nexport var pathColumn = 'path-column';\n/** @hidden */\nexport var searchTextChange = 'search-change';\n/** @hidden */\nexport var beforeDownload = 'before-download';\n/** @hidden */\nexport var downloadInit = 'download-init';\n/** @hidden */\nexport var dropInit = 'drop-init';\n/** @hidden */\nexport var dragEnd = 'drag-end';\n/** @hidden */\nexport var dropPath = 'drop-path';\n/** @hidden */\nexport var dragHelper = 'drag-helper';\n/** @hidden */\nexport var dragging = 'dragging';\n/** @hidden */\nexport var updateSelectionData = 'update-selection-data';\n/** @hidden */\nexport var methodCall = 'method-call';\n/** @hidden */\nexport var permissionRead = 'read';\n/** @hidden */\nexport var permissionEdit = 'write';\n/** @hidden */\nexport var permissionEditContents = 'writeContents';\n/** @hidden */\nexport var permissionCopy = 'copy';\n/** @hidden */\nexport var permissionUpload = 'upload';\n/** @hidden */\nexport var permissionDownload = 'download';\n","import * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { read, paste, Search, filter, Download, Delete, isFileSystemData } from '../common/operations';\nimport { getValue, setValue, isNullOrUndefined as isNOU, matches, select, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { closest, detach } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createDialog } from '../pop-up/dialog';\n/**\n * Utility function to compare two strings in a way similar to Windows Explorer.\n * Files and folders are sorted separately, with folders coming before files.\n *\n * @param {string} reference - The first string to compare. This could be a file or folder name.\n * @param {string} comparer - The second string to compare. This could be a file or folder name.\n * @returns {number} - A negative number if `reference` should come before `comparer`, a positive number if `comparer` should come before `reference`, and 0 if they are considered equal.\n */\nexport function sortComparer(reference, comparer) {\n // Check if reference and comparer are files or folders\n var referenceIsFile = /\\.\\S+/.test(reference);\n var comparerIsFile = /\\.\\S+/.test(comparer);\n // If one is a file and the other is a folder, the folder should come first\n if (referenceIsFile && !comparerIsFile) {\n return 1;\n }\n if (!referenceIsFile && comparerIsFile) {\n return -1;\n }\n var referenceParts = [];\n var comparerParts = [];\n (reference + '').replace(/(\\d+)|(\\D+)/g, function (_, $1, $2) { referenceParts.push([$1 || Infinity, $2 || '']); return ''; });\n (comparer + '').replace(/(\\d+)|(\\D+)/g, function (_, $1, $2) { comparerParts.push([$1 || Infinity, $2 || '']); return ''; });\n // Compare each part of reference and comparer\n while (referenceParts.length && comparerParts.length) {\n var referencePart = referenceParts.shift();\n var comparerPart = comparerParts.shift();\n if (referencePart && comparerPart) {\n var comparisonResult = referencePart[0] - comparerPart[0] ||\n referencePart[1].localeCompare(comparerPart[1]);\n if (comparisonResult) {\n return comparisonResult;\n }\n }\n }\n return referenceParts.length - comparerParts.length;\n}\n/**\n * Utility file for common actions\n *\n * @param {HTMLLIElement} node - specifies the node.\n * @param {Object} data - specifies the data.\n * @param {IFileManager} instance - specifies the control instance.\n * @returns {void}\n * @private\n */\nexport function updatePath(node, data, instance) {\n var text = getValue('name', data);\n var id = node.getAttribute('data-id');\n var newText = isNOU(id) ? text : id;\n instance.setProperties({ path: getPath(node, newText, instance.hasId) }, true);\n instance.pathId = getPathId(node);\n instance.pathNames = getPathNames(node, text);\n}\n/**\n * Functions for get path in FileManager\n *\n * @param {Element | Node} element - specifies the element.\n * @param {string} text - specifies the text.\n * @param {boolean} hasId - specifies the id.\n * @returns {string} returns the path.\n * @private\n */\nexport function getPath(element, text, hasId) {\n var matched = getParents(element, text, false, hasId);\n var path = '/';\n var len = matched.length - (2);\n for (var i = len; i >= 0; i--) {\n path += matched[i] + '/';\n }\n return path;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} node - specifies the node element.\n * @returns {string[]} returns the path ids.\n * @private\n */\nexport function getPathId(node) {\n var matched = getParents(node, node.getAttribute('data-uid'), true);\n var ids = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n ids.push(matched[i]);\n }\n return ids;\n}\n/**\n * Functions for get path names in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @returns {string[]} returns the path names.\n * @private\n */\nexport function getPathNames(element, text) {\n var matched = getParents(element, text, false);\n var names = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n names.push(matched[i]);\n }\n return names;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @param {boolean} isId - specifies the id.\n * @param {boolean} hasId - checks the id exists.\n * @returns {string[]} returns parent element.\n * @private\n */\nexport function getParents(element, text, isId, hasId) {\n var matched = [text];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, '.' + CLS.LIST_ITEM)) {\n var parentText = isId ? el.getAttribute('data-uid') : (hasId ? el.getAttribute('data-id') :\n select('.' + CLS.LIST_TEXT, el).textContent);\n matched.push(parentText);\n }\n el = el.parentNode;\n if (el.classList.contains(CLS.TREE_VIEW)) {\n break;\n }\n }\n return matched;\n}\n/**\n * Functions for generate path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function generatePath(parent) {\n var key = parent.hasId ? 'id' : 'name';\n var newPath = '/';\n var i = 1;\n for (i; i < parent.pathId.length; i++) {\n var data = getValue(parent.pathId[parseInt(i.toString(), 10)], parent.feParent);\n newPath += getValue(key, data) + '/';\n }\n parent.setProperties({ path: newPath }, true);\n}\n/**\n * Functions for remove active element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function removeActive(parent) {\n if (parent.isCut) {\n removeBlur(parent);\n parent.selectedNodes = [];\n parent.actionRecords = [];\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n }\n}\n/**\n * Selects active element in File Manager\n *\n * @param {string} action - specifies the action.\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {boolean} - returns active element.\n * @private\n */\nexport function activeElement(action, parent) {\n parent.isSearchCut = false;\n parent.actionRecords = [];\n parent.activeElements = [];\n parent.notify(events.cutCopyInit, {});\n if (parent.activeElements.length === 0) {\n return false;\n }\n removeBlur(parent);\n var blurEle = parent.activeElements;\n if (parent.activeModule !== 'navigationpane') {\n parent.targetPath = parent.path;\n }\n else {\n parent.targetPath = getParentPath(parent.path);\n }\n var i = 0;\n if (blurEle) {\n getModule(parent, blurEle[0]);\n if (action === 'cut') {\n while (i < blurEle.length) {\n addBlur(blurEle[i]);\n i++;\n }\n }\n }\n i = 0;\n parent.selectedNodes = [];\n parent.enablePaste = true;\n parent.notify(events.showPaste, {});\n while (i < parent.activeRecords.length) {\n parent.actionRecords.push(parent.activeRecords[i]);\n parent.selectedNodes.push(getValue('name', parent.activeRecords[i]));\n i++;\n }\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) &&\n parent.activeModule !== 'navigationpane') {\n parent.selectedNodes = [];\n parent.isSearchCut = true;\n var i_1 = 0;\n while (i_1 < parent.selectedItems.length) {\n parent.selectedNodes.push(parent.selectedItems[i_1]);\n i_1++;\n }\n }\n return true;\n}\n/**\n * Adds blur to the elements\n *\n * @param {Element} nodes - specifies the nodes.\n * @returns {void}\n * @private\n */\nexport function addBlur(nodes) {\n nodes.classList.add(CLS.BLUR);\n}\n/**\n * Removes blur from elements\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} hover - specifies the hover string.\n * @returns {void}\n * @private\n */\nexport function removeBlur(parent, hover) {\n var blurEle = (!hover) ? parent.element.querySelectorAll('.' + CLS.BLUR) :\n parent.element.querySelectorAll('.' + CLS.HOVER);\n var i = 0;\n while (i < blurEle.length) {\n blurEle[i].classList.remove((!hover) ? CLS.BLUR : CLS.HOVER);\n i++;\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getModule(parent, element) {\n if (element) {\n if (element.classList.contains(CLS.ROW)) {\n parent.activeModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICON)) {\n parent.activeModule = 'largeiconsview';\n }\n else {\n parent.activeModule = 'navigationpane';\n }\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} value - specifies the value.\n * @param {boolean} isLayoutChange - specifies the layout change.\n * @returns {void}\n * @private\n */\nexport function searchWordHandler(parent, value, isLayoutChange) {\n var searchWord;\n if (value.length === 0 && !parent.isFiltered) {\n parent.notify(events.pathColumn, { args: parent });\n }\n if (isFileSystemData(parent)) {\n if (value === '') {\n parent.itemData = parent.fileSystemData;\n read(parent, events.layoutChange, parent.path);\n }\n else {\n parent.searchSettings.filterType = isNOU(parent.searchSettings.filterType) ? 'contains' : parent.searchSettings.filterType;\n var filteredData = parent.fileSystemData.filter(function (obj) { return obj.parentId !== null; });\n var data = new DataManager(filteredData).\n executeLocal(new Query().where('name', parent.searchSettings.filterType, value, parent.searchSettings.ignoreCase));\n var searchValue = parent.searchSettings.ignoreCase ? value.toLowerCase() : value;\n parent.itemData = data;\n Search(parent, isLayoutChange ? events.layoutChange : events.search, parent.path, searchValue, parent.showHiddenItems, !parent.searchSettings.ignoreCase);\n }\n return;\n }\n if (parent.searchSettings.filterType === 'startsWith') {\n searchWord = value + '*';\n }\n else if (parent.searchSettings.filterType === 'endsWith') {\n searchWord = '*' + value;\n }\n else {\n searchWord = '*' + value + '*';\n }\n parent.searchWord = searchWord;\n parent.itemData = [getPathObject(parent)];\n if (value.length > 0) {\n var caseSensitive = parent.searchSettings.ignoreCase;\n var hiddenItems = parent.showHiddenItems;\n Search(parent, isLayoutChange ? events.layoutChange : events.search, parent.path, searchWord, hiddenItems, !caseSensitive);\n }\n else {\n if (!parent.isFiltered) {\n if (parent.isSortByClicked) {\n parent.notify(events.layoutChange, { files: (parent.oldView === 'Details') ? parent.detailsviewModule.gridObj.dataSource : parent.largeiconsviewModule.allItems });\n parent.isSortByClicked = false;\n }\n else {\n read(parent, isLayoutChange ? events.layoutChange : events.search, parent.path);\n }\n }\n else {\n filter(parent, events.layoutChange);\n }\n }\n}\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} view - specifies the view.\n * @returns {void}\n * @private\n */\nexport function updateLayout(parent, view) {\n parent.oldView = parent.view;\n parent.setProperties({ view: view }, true);\n if (parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) {\n parent.layoutSelectedItems = parent.selectedItems;\n }\n var searchWord = '';\n if (parent.breadcrumbbarModule.searchObj.element.value) {\n searchWord = parent.breadcrumbbarModule.searchObj.element.value;\n }\n parent.isLayoutChange = true;\n searchWordHandler(parent, searchWord, true);\n}\n/* istanbul ignore next */\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getTargetModule(parent, element) {\n var tartgetModule = '';\n if (element) {\n if (closest(element, '.' + CLS.ROOT + '.' + CLS.CONTROL + ' .' + CLS.GRID_CONTENT)) {\n tartgetModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICONS)) {\n tartgetModule = 'largeiconsview';\n }\n else if (element.classList.contains('e-fullrow') ||\n element.classList.contains('e-icon-expandable')) {\n tartgetModule = 'navigationpane';\n }\n else if (closest(element, '.e-address-list-item')) {\n tartgetModule = 'breadcrumbbar';\n }\n else {\n tartgetModule = '';\n }\n }\n parent.targetModule = tartgetModule;\n}\n/* istanbul ignore next */\n/**\n * refresh the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function refresh(parent) {\n parent.itemData = [getPathObject(parent)];\n if (!hasReadAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionRead);\n }\n else {\n read(parent, events.refreshEnd, parent.path);\n }\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function openAction(parent) {\n read(parent, events.openEnd, parent.path);\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {Object} - returns the path data.\n * @private\n */\nexport function getPathObject(parent) {\n return getValue(parent.pathId[parent.pathId.length - 1], parent.feParent);\n}\n/**\n * Copy files\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function copyFiles(parent) {\n if (!activeElement('copy', parent)) {\n return;\n }\n else {\n parent.fileAction = 'copy';\n }\n}\n/**\n * Cut files\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function cutFiles(parent) {\n if (!activeElement('cut', parent)) {\n return;\n }\n else {\n parent.isCut = true;\n parent.fileAction = 'move';\n }\n}\n/**\n * To add class for fileType\n *\n * @param {Object} file - specifies the file.\n * @returns {string} - returns the file type.\n * @private\n */\nexport function fileType(file) {\n var isFile = getValue('isFile', file);\n if (!isFile) {\n return CLS.FOLDER;\n }\n var imageFormat = ['bmp', 'dib', 'jpg', 'jpeg', 'jpe', 'jfif', 'gif', 'tif', 'tiff', 'png', 'ico'];\n var audioFormat = ['mp3', 'wav', 'aac', 'ogg', 'wma', 'aif', 'fla', 'm4a'];\n var videoFormat = ['webm', 'mkv', 'flv', 'vob', 'ogv', 'ogg', 'avi', 'wmv', 'mp4', '3gp'];\n var knownFormat = ['css', 'exe', 'html', 'js', 'msi', 'pdf', 'pptx', 'ppt', 'rar', 'zip', 'txt', 'docx', 'doc',\n 'xlsx', 'xls', 'xml', 'rtf', 'php'];\n var filetype = getValue('type', file);\n filetype = filetype.toLowerCase();\n if (filetype.indexOf('.') !== -1) {\n filetype = filetype.split('.').join('');\n }\n var iconType;\n if (imageFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_IMAGE;\n }\n else if (audioFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_MUSIC;\n }\n else if (videoFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_VIDEO;\n }\n else if (knownFormat.indexOf(filetype) !== -1) {\n iconType = 'e-fe-' + filetype;\n }\n else {\n iconType = 'e-fe-unknown e-fe-' + filetype;\n }\n return iconType;\n}\n/* istanbul ignore next */\n/**\n * To get the image URL\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} item - specifies the item.\n * @returns {string} - returns the image url.\n * @private\n */\nexport function getImageUrl(parent, item) {\n var imgUrl = isFileSystemData(parent) ? getValue('imageUrl', item) : '';\n if (isFileSystemData(parent)) {\n var eventArgs_1 = {\n fileDetails: [item],\n imageUrl: imgUrl\n };\n parent.trigger('beforeImageLoad', eventArgs_1);\n return eventArgs_1.imageUrl;\n }\n var baseUrl = parent.ajaxSettings.getImageUrl ? parent.ajaxSettings.getImageUrl : parent.ajaxSettings.url;\n var pathUrl = (baseUrl.indexOf('?') !== -1) ? '&path=' : '?path=';\n var fileName = encodeURIComponent(getValue('name', item));\n var fPath = getValue('filterPath', item);\n if (parent.hasId) {\n var imgId = getValue('id', item);\n imgUrl = baseUrl + pathUrl + parent.path + '&id=' + imgId;\n }\n else if (!isNOU(fPath)) {\n imgUrl = baseUrl + pathUrl + encodeURIComponent(fPath.replace(/\\\\/g, '/')) + fileName;\n }\n else {\n imgUrl = baseUrl + pathUrl + parent.path + fileName;\n }\n imgUrl = imgUrl + '&time=' + (new Date().getTime()).toString();\n var eventArgs = {\n fileDetails: [item],\n imageUrl: imgUrl\n };\n parent.trigger('beforeImageLoad', eventArgs);\n return eventArgs.imageUrl;\n}\n/* istanbul ignore next */\n/**\n * Gets the full path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {string} path - specifies the path.\n * @returns {string} - returns the image url.\n * @private\n */\nexport function getFullPath(parent, data, path) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', data) + '/';\n var fPath = getValue(parent.hasId ? 'filterId' : 'filterPath', data);\n if (!isNOU(fPath)) {\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return path + filePath;\n }\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @returns {string} - returns the name.\n * @private\n */\nexport function getName(parent, data) {\n var name = getValue('name', data);\n var fPath = getValue('filterPath', data);\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) && !isNOU(fPath)) {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(parent.path, '') + name;\n }\n return name;\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object[]} items - specifies the item elements.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\nexport function getSortedData(parent, items) {\n if (items.length === 0) {\n return items;\n }\n var query;\n if (parent.sortOrder !== 'None' && !isNullOrUndefined(parent.sortOrder)) {\n query = new Query().sortBy(parent.sortBy, parent.sortOrder.toLowerCase(), true).group('isFile');\n }\n else {\n query = new Query().group('isFile');\n }\n var lists = new DataManager(items).executeLocal(query);\n return getValue('records', lists);\n}\n/**\n * Gets the data object\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} key - specifies the key.\n * @param {string} value - specifies the value.\n * @returns {Object} - returns the sorted data.\n * @private\n */\nexport function getObject(parent, key, value) {\n var currFiles = getValue(parent.pathId[parent.pathId.length - 1], parent.feFiles);\n var result = currFiles.filter(function (data) { return data[key].toString() === value; });\n return result.length > 0 ? result[0] : null;\n}\n/**\n * Creates empty element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLElement} element - specifies the element.\n * @param {ReadArgs | SearchArgs} args - specifies the args.\n * @returns {void}\n * @private\n */\nexport function createEmptyElement(parent, element, args) {\n var top;\n var layoutElement = select('#' + parent.element.id + CLS.LAYOUT_ID, parent.element);\n var addressBarHeight = select('#' + parent.element.id + CLS.BREADCRUMBBAR_ID, layoutElement).offsetHeight;\n top = layoutElement.offsetHeight - addressBarHeight;\n if (parent.view === 'Details') {\n top = top - select('.' + CLS.GRID_HEADER, layoutElement).offsetHeight;\n }\n if (isNOU(element.querySelector('.' + CLS.EMPTY))) {\n var emptyDiv = createElement('div', { className: CLS.EMPTY });\n var emptyFolder = createElement('div', { className: CLS.LARGE_EMPTY_FOLDER });\n var emptyEle = createElement('div', { className: CLS.EMPTY_CONTENT });\n var dragFile = createElement('div', { className: CLS.EMPTY_INNER_CONTENT });\n if (parent.view === 'Details') {\n element.querySelector('.' + CLS.GRID_VIEW).appendChild(emptyDiv);\n }\n else {\n element.appendChild(emptyDiv);\n }\n emptyDiv.appendChild(emptyFolder);\n emptyDiv.appendChild(emptyEle);\n emptyDiv.appendChild(dragFile);\n }\n if (element.querySelector('.' + CLS.EMPTY)) {\n if (!isNOU(args.error)) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Access-Denied');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Access-Details');\n }\n else if (parent.isFiltered) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Key');\n }\n else if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Search-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Search-Key');\n }\n else {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Folder-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'File-Upload');\n }\n }\n var eDiv = select('.' + CLS.EMPTY, element);\n top = (top - eDiv.offsetHeight) / 2;\n eDiv.style.marginTop = top + 'px';\n}\n/**\n * Gets the directories\n *\n * @param {Object[]} files - specifies the file object.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\nexport function getDirectories(files) {\n return new DataManager(files).executeLocal(new Query().where(events.isFile, 'equal', false, false));\n}\n/**\n * set the Node ID\n *\n * @param {ReadArgs} result - specifies the result.\n * @param {string} rootId - specifies the rootId.\n * @returns {void}\n * @private\n */\nexport function setNodeId(result, rootId) {\n var dirs = getDirectories(result.files);\n for (var i = 0, len = dirs.length; i < len; i++) {\n setValue('_fm_id', rootId + '_' + i, dirs[i]);\n }\n}\n/**\n * set the date object\n *\n * @param {Object[]} args - specifies the file object.\n * @param {Internationalization} localeString - The internationalization object for formatting dates.\n * @param {string} dateFormat - The date format string.\n * @returns {void}\n * @private\n */\nexport function setDateObject(args, localeString, dateFormat) {\n for (var i = 0; i < args.length; i++) {\n var createdDate = new Date(getValue('dateCreated', args[i]));\n var modifiedDate = new Date(getValue('dateModified', args[i]));\n if (isNOU(dateFormat)) {\n dateFormat = 'MM/dd/yyyy';\n }\n setValue('_fm_created', localeString.formatDate(createdDate, { format: dateFormat }), args[i]);\n setValue('_fm_modified', localeString.formatDate(modifiedDate, { format: dateFormat }), args[i]);\n }\n}\n/**\n * get the locale text\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text.\n * @returns {string} - returns the locale text.\n * @private\n */\nexport function getLocaleText(parent, text) {\n var locale = parent.localeObj.getConstant(text);\n return (locale === '') ? text : locale;\n}\n/**\n * get the CSS class\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} css - specifies the css.\n * @returns {string} - returns the css classes.\n * @private\n */\nexport function getCssClass(parent, css) {\n var cssClass = parent.cssClass;\n cssClass = (isNOU(cssClass) || cssClass === '') ? css : (cssClass + ' ' + css);\n return cssClass;\n}\n/**\n * sort on click\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {MenuEventArgs} args - specifies the menu event arguements.\n * @returns {void}\n * @private\n */\nexport function sortbyClickHandler(parent, args) {\n var tick;\n parent.isSortByClicked = true;\n if (args.item.id.indexOf('ascending') !== -1 || args.item.id.indexOf('descending') !== -1 || args.item.id.indexOf('none') !== -1) {\n tick = true;\n }\n else {\n tick = false;\n }\n if (!tick) {\n parent.sortBy = getSortField(args.item.id, parent);\n }\n else {\n parent.sortOrder = getSortField(args.item.id);\n }\n parent.itemData = [getPathObject(parent)];\n if (parent.view === 'Details') {\n if (parent.isMobile) {\n updateLayout(parent, 'Details');\n }\n else {\n parent.notify(events.sortColumn, { module: 'detailsview' });\n parent.isSortByClicked = false;\n }\n }\n if (parent.view === 'LargeIcons') {\n updateLayout(parent, 'LargeIcons');\n }\n parent.notify(events.sortByChange, {});\n}\n/**\n * Gets the sorted fields\n *\n * @param {string} id - specifies the id.\n * @param {IFileManager} [parent] - optional parameter representing the parent IFileManager.\n * @returns {string} - returns the sorted fields\n * @private\n */\nexport function getSortField(id, parent) {\n var text = id.substring(id.lastIndexOf('_') + 1);\n var field = text;\n var column;\n if (parent) {\n column = parent.detailsViewSettings.columns;\n }\n switch (text) {\n case 'date':\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[i].field === 'dateModified' || column[i].field === 'dateCreated') {\n field = column[i].field;\n break;\n }\n else {\n field = '_fm_modified';\n }\n }\n break;\n case 'ascending':\n field = 'Ascending';\n break;\n case 'descending':\n field = 'Descending';\n break;\n case 'none':\n field = 'None';\n break;\n }\n return field;\n}\n/**\n * Sets the next path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function setNextPath(parent, path) {\n var currfolders = path.split('/');\n var folders = parent.originalPath.split('/');\n var root = getValue(parent.pathId[0], parent.feParent);\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n for (var i = currfolders.length - 1, len = folders.length - 1; i < len; i++) {\n var eventName = (folders[i + 1] === '') ? events.finalizeEnd : events.initialEnd;\n var newPath = (folders[i] === '') ? '/' : (parent.path + folders[i] + '/');\n var data = getObject(parent, key, folders[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(data)) {\n var id = getValue('_fm_id', data);\n parent.setProperties({ path: newPath }, true);\n parent.pathId.push(id);\n parent.itemData = [data];\n parent.pathNames.push(getValue('name', data));\n }\n else {\n parent.originalPath = newPath;\n }\n read(parent, eventName, parent.path);\n break;\n }\n}\n/**\n * Opens the searched folder\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data\n * @returns {void}\n * @private\n */\nexport function openSearchFolder(parent, data) {\n parent.originalPath = getFullPath(parent, data, parent.path);\n var root = getValue(parent.pathId[0], parent.feParent);\n var navData = parent.feParent[getValue('_fm_id', parent.itemData[0])];\n var isRoot = isNullOrUndefined(navData) || getValue('_fm_id', navData) === 'fe_tree';\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n var searchData = getObject(parent, key, isFileSystemData(parent) ? getValue('id', data) : getValue('name', data));\n if (isNullOrUndefined(searchData)) {\n if (!isRoot) {\n parent.notify(events.clearPathInit, { selectedNode: parent.pathId[parent.pathId.length - 1] });\n }\n else {\n setNextPath(parent, parent.path);\n return;\n }\n }\n else {\n var id = getValue('_fm_id', searchData);\n parent.setProperties({ path: parent.originalPath }, true);\n parent.pathId.push(id);\n parent.itemData = [searchData];\n parent.pathNames.push(getValue('name', searchData));\n }\n read(parent, (parent.path !== parent.originalPath) ? events.initialEnd : events.finalizeEnd, parent.path);\n}\n/**\n * Paste handling function\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function pasteHandler(parent) {\n parent.isDragDrop = false;\n if (parent.selectedNodes.length !== 0 && parent.enablePaste) {\n var path = (parent.folderPath === '') ? parent.path : parent.folderPath;\n if (parent.activeModule === 'navigationpane' && !parent.selectedNodes[0].includes('/')) {\n parent.targetPath = getValue('filterPath', parent.actionRecords[0]).replace(/\\\\/g, '/');\n }\n var subFolder = validateSubFolder(parent, parent.actionRecords, path, parent.path);\n if (!subFolder) {\n if ((parent.fileAction === 'move' && parent.targetPath !== path) || parent.fileAction === 'copy') {\n parent.notify(events.pasteInit, {});\n paste(parent, parent.targetPath, parent.selectedNodes, path, parent.fileAction, [], parent.actionRecords);\n }\n else {\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n removeBlur(parent);\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n }\n }\n }\n}\n/**\n * Validates the sub folders\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {'{ [key: string]: Object; }[]'} data - specifies the data.\n * @param {string} dropPath - specifies the drop path.\n * @param {string} dragPath - specifies the drag path.\n * @returns {boolean} - returns the validated sub folder.\n * @private\n */\nexport function validateSubFolder(parent, data, dropPath, dragPath) {\n var subFolder = false;\n for (var i = 0; i < data.length; i++) {\n if (!getValue('isFile', data[i])) {\n var tempTarget = getFullPath(parent, data[i], dragPath);\n if (dropPath.indexOf(tempTarget) === 0) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Sub-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n else {\n var name_1 = parent.dragData[i] ? parent.dragData[i].name : null;\n var srcData = isFileSystemData(parent) ? name_1 : parent.dragNodes[i];\n var len = 0;\n if (srcData) {\n len = srcData.lastIndexOf('/');\n }\n var path = '';\n if (len > 0) {\n path = dragPath + srcData.substring(0, len + 1);\n }\n if (path === dropPath) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n }\n return subFolder;\n}\n/**\n * Validates the drop handler\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function dropHandler(parent) {\n parent.isDragDrop = true;\n if (parent.dragData.length !== 0) {\n parent.dragPath = parent.dragPath.replace(/\\\\/g, '/');\n parent.dropPath = parent.dropPath.replace(/\\\\/g, '/');\n var subFolder = validateSubFolder(parent, parent.dragData, parent.dropPath, parent.dragPath);\n if (!subFolder && (parent.dragPath !== parent.dropPath)) {\n parent.itemData = [parent.dropData];\n paste(parent, parent.dragPath, parent.dragNodes, parent.dropPath, 'move', [], parent.dragData);\n parent.notify(events.pasteInit, {});\n }\n }\n}\n/**\n * Gets the parent path\n *\n * @param {string} oldPath - specifies the old path.\n * @returns {string} - returns the parent path.\n * @private\n */\nexport function getParentPath(oldPath) {\n var path = oldPath.split('/');\n var newPath = path[0] + '/';\n for (var i = 1; i < path.length - 2; i++) {\n newPath += path[i] + '/';\n }\n return newPath;\n}\n/**\n * Gets the directory path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {ReadArgs} args - returns the read arguements.\n * @returns {string} - returns the directory path\n * @private\n */\nexport function getDirectoryPath(parent, args) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', args.cwd) + '/';\n var fPath = getValue(parent.hasId && !isNullOrUndefined(parent.ajaxSettings.url) ? 'filterId' : 'filterPath', args.cwd);\n if (!isNOU(fPath)) {\n if (fPath === '') {\n return parent.hasId && !isNullOrUndefined(parent.ajaxSettings.url) ? filePath : '/';\n }\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return isFileSystemData(parent) ? filePath : parent.path + filePath;\n }\n}\n/**\n * Gets the do paste path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} operation - specifies the operations.\n * @param {ReadArgs} result - returns the result.\n * @returns {void}\n * @private\n */\nexport function doPasteUpdate(parent, operation, result) {\n if (operation === 'move') {\n if (!parent.isDragDrop) {\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n parent.notify(events.cutEnd, result);\n }\n else {\n parent.notify(events.dragEnd, result);\n }\n }\n if (parent.duplicateItems.length === 0) {\n parent.pasteNodes = [];\n }\n var flag = false;\n for (var count = 0; (count < result.files.length) && !flag; count++) {\n parent.pasteNodes.push(result.files[count][parent.hasId ? 'id' : 'name']);\n if (parent.isDragDrop) {\n parent.droppedObjects.push(result.files[count]);\n }\n }\n parent.duplicateItems = [];\n parent.duplicateRecords = [];\n if (parent.isDragDrop && !parent.isPasteError) {\n parent.isDropEnd = true;\n }\n else {\n parent.isDropEnd = false;\n }\n if (!parent.isDragDrop || (parent.path === parent.dragPath) || (parent.path === parent.dropPath)\n || parent.isSearchDrag) {\n parent.isPathDrag = false;\n read(parent, events.pasteEnd, parent.path);\n }\n else {\n readDropPath(parent);\n }\n parent.trigger('success', { action: operation, result: result });\n}\n/**\n * Reads the drop path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function readDropPath(parent) {\n var pathId = getValue('_fm_id', parent.dropData);\n parent.expandedId = pathId;\n parent.itemData = [parent.dropData];\n if (parent.isPathDrag) {\n parent.notify(events.pathDrag, parent.itemData);\n }\n else {\n if (parent.navigationpaneModule) {\n var node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n if (!node) {\n var liElement = document.querySelector('[data-id = \"' + getValue('id', parent.dropData) + '\"]');\n pathId = liElement.getAttribute('data-uid');\n node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n }\n updatePath(node, parent.dropData, parent);\n }\n read(parent, events.dropPath, parent.dropPath);\n }\n}\n/**\n * Gets the duplicated path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} name - specifies the name.\n * @returns {object} - returns the duplicated path.\n * @private\n */\nexport function getDuplicateData(parent, name) {\n var data = null;\n var records = parent.isDragDrop ? parent.dragData : parent.actionRecords;\n for (var i = 0; i < records.length; i++) {\n if (getValue('name', records[i]) === name) {\n data = records[i];\n break;\n }\n }\n return data;\n}\n/**\n * Gets the create the virtual drag element\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createVirtualDragElement(parent) {\n parent.isSearchDrag = false;\n if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n parent.isSearchDrag = true;\n }\n if (parent.activeModule !== 'navigationpane') {\n parent.dragNodes = [];\n var i = 0;\n while (i < parent.selectedItems.length) {\n parent.dragNodes.push(parent.selectedItems[i]);\n i++;\n }\n if (parent.selectedItems.length === 0 && parent.dragData && parent.dragData.length === 1) {\n parent.dragNodes.push(getItemName(parent, parent.dragData[0]));\n }\n }\n var cloneIcon = parent.createElement('div', {\n className: 'e-fe-icon ' + fileType(parent.dragData[0])\n });\n var cloneName = parent.createElement('div', {\n className: 'e-fe-name',\n innerHTML: parent.dragData[0].name\n });\n var virtualEle = parent.createElement('div', {\n className: 'e-fe-content'\n });\n virtualEle.appendChild(cloneIcon);\n virtualEle.appendChild(cloneName);\n var ele = parent.createElement('div', {\n className: CLS.CLONE\n });\n ele.appendChild(virtualEle);\n if (parent.dragNodes.length > 1) {\n var badge = parent.createElement('span', {\n className: 'e-fe-count',\n innerHTML: (parent.dragNodes.length).toString(10)\n });\n ele.appendChild(badge);\n }\n parent.virtualDragElement = ele;\n parent.element.appendChild(parent.virtualDragElement);\n}\n/**\n * Drops the stop handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStopHandler(parent, args) {\n var dragArgs = args;\n dragArgs.cancel = false;\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeDropTarget(parent);\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n removeBlur(parent);\n parent.uploadObj.dropArea = select('#' + parent.element.id + CLS.CONTENT_ID, parent.element);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n getTargetModule(parent, args.target);\n parent.notify(events.dropInit, args);\n removeBlur(parent, 'hover');\n dragArgs.fileDetails = parent.dragData;\n parent.trigger('fileDragStop', dragArgs, function (dragArgs) {\n if (!dragArgs.cancel && !isNOU(parent.targetModule) && parent.targetModule !== '' && parent.dragCount > 2) {\n dropHandler(parent);\n }\n parent.dragCount = 0;\n });\n}\n/**\n * Drag the start handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {'DragEventArgs'} args - specifies the drag event arguements.\n * @param {Draggable} dragObj - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStartHandler(parent, args, dragObj) {\n var dragArgs = args;\n dragArgs.cancel = false;\n dragArgs.fileDetails = parent.dragData;\n parent.dragCount = 0;\n parent.droppedObjects = [];\n if (!parent.allowDragAndDrop || ((parent.activeModule === 'navigationpane') &&\n (closest(args.element, 'li').getAttribute('data-uid') === parent.pathId[0]))) {\n dragArgs.cancel = true;\n }\n if ((parent.activeModule === 'navigationpane') &&\n (parent.pathId.indexOf(closest(args.element, 'li').getAttribute('data-uid')) !== -1)) {\n parent.isPathDrag = true;\n }\n else {\n parent.isPathDrag = false;\n }\n removeBlur(parent);\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else if (!dragArgs.cancel) {\n var i = 0;\n while (i < parent.activeElements.length) {\n addBlur(parent.activeElements[i]);\n i++;\n }\n parent.trigger('fileDragStart', dragArgs, function (dragArgs) {\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else {\n parent.uploadObj.dropArea = null;\n }\n });\n }\n}\n/**\n * Drag the cancel handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function dragCancel(parent) {\n removeBlur(parent);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n}\n/**\n * Remove drop target handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function removeDropTarget(parent) {\n removeItemClass(parent, CLS.DROP_FOLDER);\n removeItemClass(parent, CLS.DROP_FILE);\n}\n/**\n * Remove item class handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} value - specifies the value.\n * @returns {void}\n * @private\n */\nexport function removeItemClass(parent, value) {\n var ele = parent.element.querySelectorAll('.' + value);\n for (var i = 0; i < ele.length; i++) {\n ele[i].classList.remove(value);\n }\n}\n/**\n * Remove item class handler\n *\n * @param {Element} scrollParent - specifies the scrolling target.\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} nodeClass - specifies the node class.\n * @param {number} clientY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the target element.\n * @returns {void}\n * @private\n */\nexport function scrollHandler(scrollParent, parent, nodeClass, clientY) {\n var position;\n var elementData = scrollParent.getBoundingClientRect();\n var node = select('.' + nodeClass, scrollParent);\n if ((clientY >= (elementData.top + scrollParent.clientHeight - 30)) && !isNullOrUndefined(node)) {\n position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;\n scrollParent.scrollBy(0, position);\n }\n if (!isNullOrUndefined(node) && (clientY <= (elementData.top + 30))) {\n position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;\n scrollParent.scrollBy(0, -position);\n }\n}\n/**\n * Dragging handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nexport function draggingHandler(parent, args) {\n var dragArgs = args;\n dragArgs.fileDetails = parent.dragData;\n var canDrop = false;\n getTargetModule(parent, args.target);\n removeDropTarget(parent);\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeBlur(parent, 'hover');\n var node = null;\n var scrollParent;\n if (parent.targetModule === 'navigationpane') {\n node = closest(args.target, 'li');\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n canDrop = true;\n /* istanbul ignore next */\n parent.treeExpandTimer = window.setTimeout(function () { parent.notify(events.dragging, args); }, 800);\n scrollParent = parent.navigationpaneModule.treeObj.element.parentElement;\n scrollHandler(scrollParent, parent, 'e-level-2', args.event.y);\n }\n else if (parent.targetModule === 'detailsview') {\n node = closest(args.target, 'tr');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FOLDER);\n }\n else if (node && !node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FILE);\n }\n canDrop = true;\n scrollParent = parent.detailsviewModule.gridObj.element.querySelector('.e-content');\n scrollHandler(scrollParent, parent, 'e-row', args.event.y);\n }\n else if (parent.targetModule === 'largeiconsview') {\n node = closest(args.target, 'li');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n }\n canDrop = true;\n scrollParent = parent.largeiconsviewModule.element.firstElementChild;\n scrollHandler(scrollParent, parent, 'e-large-icon', args.event.y);\n /* istanbul ignore next */\n }\n else if (parent.targetModule === 'breadcrumbbar') {\n canDrop = true;\n }\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n parent.element.classList.add(canDrop ? 'e-fe-drop' : 'e-no-drop');\n parent.dragCount = parent.dragCount + 1;\n parent.trigger('fileDragging', dragArgs);\n}\n/**\n * Object to string handler\n *\n * @param {Object} data - specifies the data.\n * @returns {string} returns string converted from Object.\n * @private\n */\n// Ignored the message key value in permission object\nexport function objectToString(data) {\n var str = '';\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] !== 'message') {\n str += (i === 0 ? '' : ', ') + keys[i] + ': ' + getValue(keys[i], data);\n }\n }\n return str;\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {string} returns the item name.\n * @private\n */\nexport function getItemName(parent, data) {\n if (parent.hasId) {\n return getValue('id', data);\n }\n return getName(parent, data);\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {void}\n * @private\n */\nexport function updateRenamingData(parent, data) {\n parent.itemData = [data];\n parent.currentItemText = getValue('name', data);\n parent.isFile = getValue('isFile', data);\n parent.filterPath = getValue('filterPath', data);\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function doRename(parent) {\n if (!hasEditAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionEdit);\n }\n else {\n createDialog(parent, 'Rename');\n }\n}\n/* istanbul ignore next */\n/**\n * Download handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function doDownload(parent) {\n var items = parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(parent, items[i], events.permissionDownload);\n return;\n }\n }\n if (parent.selectedItems.length > 0) {\n Download(parent, parent.path, parent.selectedItems);\n }\n}\n/**\n * Delete Files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\nexport function doDeleteFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionEdit);\n return;\n }\n }\n parent.itemData = data;\n Delete(parent, newIds, parent.path, 'delete');\n}\n/* istanbul ignore next */\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\nexport function doDownloadFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasDownloadAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionDownload);\n return;\n }\n }\n parent.itemData = data;\n if (newIds.length > 0) {\n Download(parent, parent.path, newIds);\n }\n}\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @param {string} action - specifies the actions.\n * @returns {void}\n * @private\n */\nexport function createDeniedDialog(parent, data, action) {\n var message = getValue('message', getValue('permission', data));\n if (message === '') {\n message = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', data)).replace('{1}', action);\n }\n var response = {\n error: {\n code: '401',\n fileExists: null,\n message: message\n }\n };\n createDialog(parent, 'Error', response);\n}\n/**\n * Get Access Classes\n *\n * @param {Object} data - specifies the data.\n * @returns {string} - returns accesses classes.\n * @private\n */\nexport function getAccessClass(data) {\n return !hasReadAccess(data) ? 'e-fe-locked e-fe-hidden' : 'e-fe-locked';\n}\n/**\n * Check read access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns read access.\n * @private\n */\nexport function hasReadAccess(data) {\n var permission = getValue('permission', data);\n return (permission && !getValue('read', permission)) ? false : true;\n}\n/**\n * Check edit access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns edit access.\n * @private\n */\nexport function hasEditAccess(data) {\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('write', permission))) : true;\n}\n/**\n * Check content access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns content access.\n * @private\n */\nexport function hasContentAccess(data) {\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('writeContents', permission))) : true;\n}\n/**\n * Check upload access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns upload access.\n * @private\n */\nexport function hasUploadAccess(data) {\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('upload', permission))) : true;\n}\n/**\n * Check download access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns download access.\n * @private\n */\nexport function hasDownloadAccess(data) {\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('download', permission))) : true;\n}\n/**\n * Create new folder handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createNewFolder(parent) {\n var details = parent.itemData[0];\n if (!hasContentAccess(details)) {\n createDeniedDialog(parent, details, events.permissionEditContents);\n }\n else {\n createDialog(parent, 'NewFolder');\n }\n}\n/**\n * Upload item handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function uploadItem(parent) {\n var details = parent.itemData[0];\n if (!hasUploadAccess(details)) {\n createDeniedDialog(parent, details, events.permissionUpload);\n }\n else {\n var eleId = '#' + parent.element.id + CLS.UPLOAD_ID;\n var uploadEle = document.querySelector(eleId);\n uploadEle.click();\n }\n}\n/**\n * Close dialog popup handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function closePopup(parent) {\n if (!isNullOrUndefined(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n}\n/**\n * Access control handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} itemData - specifies the item elements.\n * @param {string} action - specifies the action.\n * @param {boolean} isPathPermision - specifies the path permission.\n * @returns {string} returns the path.\n * @private\n */\nexport function getAccessDetails(parent, itemData, action, isPathPermision) {\n var accessMessage = '';\n for (var i = 0; i < itemData.length; i++) {\n var permission = getValue('permission', itemData[i]);\n if (permission == null) {\n permission = undefined;\n }\n if (isPathPermision) {\n if (permission && (!getValue('read', permission) || !getValue('writeContents', permission))) {\n accessMessage = getValue('message', getValue('permission', itemData[i]));\n if (accessMessage === '') {\n accessMessage = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', itemData[i])).replace('{1}', 'writeContents');\n }\n }\n }\n else {\n var copyOrMovePermission = action === 'copy' ? getValue('copy', permission) : getValue('write', permission);\n if (permission && (!getValue('read', permission) || !copyOrMovePermission)) {\n accessMessage = getValue('message', getValue('permission', itemData[i]));\n if (accessMessage === '') {\n accessMessage = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', itemData[i])).replace('{1}', action);\n }\n }\n }\n if (accessMessage !== '') {\n parent.responseData = {\n cwd: null,\n details: null,\n error: {\n code: '401',\n message: accessMessage,\n fileExists: null\n },\n files: null\n };\n break;\n }\n }\n return accessMessage;\n}\n","import { Ajax, Fetch, createElement, select, extend, Internationalization } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, setValue, getValue } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { fileType, setNodeId, getLocaleText, setDateObject, doPasteUpdate, getPathObject } from '../common/utility';\nimport { generatePath, getAccessDetails } from '../common/utility';\nimport { getUid } from '@syncfusion/ej2-grids';\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Function to read the content from given path in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function read(parent, event, path) {\n var itemData = parent.itemData;\n for (var i = 0; i < itemData.length; i++) {\n if (isNOU(getValue('hasChild', itemData[i]))) {\n setValue('hasChild', false, itemData[i]);\n }\n }\n var data = { action: 'read', path: path, showHiddenItems: parent.showHiddenItems, data: itemData };\n createAjax(parent, data, readSuccess, event);\n}\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nexport function createFolder(parent, itemName) {\n var data = { action: 'create', path: parent.path, name: itemName, data: parent.itemData };\n createAjax(parent, data, createSuccess, itemName);\n}\n/**\n * Function to filter the files in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nexport function filter(parent, event) {\n var data = { action: 'filter', path: parent.path, showHiddenItems: parent.showHiddenItems, data: [getPathObject(parent)] };\n var filterData;\n var filterDataVal = parent.filterData ? extend(filterData, data, parent.filterData) : data;\n createAjax(parent, filterDataVal, filterSuccess, event, getValue('action', filterDataVal));\n}\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string} itemNewName - specifies the item's new name.\n * @returns {void}\n * @private\n */\nexport function rename(parent, path, itemNewName) {\n var name;\n var newName;\n if (parent.breadcrumbbarModule.searchObj.element.value === '' && !parent.isFiltered) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n var fPath = parent.filterPath;\n if (parent.hasId) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(path, '') + parent.currentItemText;\n newName = fPath.replace(path, '') + itemNewName;\n }\n }\n var data = {\n action: 'rename', path: path, name: name, newName: newName, data: parent.itemData, showFileExtension: parent.showFileExtension\n };\n createAjax(parent, data, renameSuccess, path);\n}\n/**\n * Function to paste file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} names - specifies the names.\n * @param {string} targetPath - specifies the target path.\n * @param {string} pasteOperation - specifies the paste operation.\n * @param {string[]} renameItems - specifies the rename items.\n * @param {Object[]} actionRecords - specifies the action records.\n * @returns {void}\n * @private\n */\nexport function paste(parent, path, names, targetPath, pasteOperation, renameItems, actionRecords) {\n var data = {\n action: pasteOperation, path: path, targetData: parent.itemData[0],\n targetPath: targetPath, names: names, renameFiles: renameItems, data: actionRecords\n };\n parent.destinationPath = targetPath;\n createAjax(parent, data, pasteSuccess, path, pasteOperation, targetPath);\n}\n/**\n * Function to delete file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} items - specifies the items.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nexport function Delete(parent, items, path, operation) {\n var data = { action: operation, path: path, names: items, data: parent.itemData };\n createAjax(parent, data, deleteSuccess, path);\n}\n/* istanbul ignore next */\n/**\n * Function to get details of file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} names - specifies the names.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation data.\n * @returns {void}\n * @private\n */\nexport function GetDetails(parent, names, path, operation) {\n var data = { action: operation, path: path, names: names, data: parent.itemData };\n createAjax(parent, data, detailsSuccess, path, operation);\n}\n/**\n * Function for getDateFormat in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction getDateFormat(parent) {\n var columns = parent.detailsViewSettings.columns;\n var dateFormat;\n if (!columns) {\n return null;\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === '_fm_modified') {\n if (!isNOU(columns[i].format)) {\n dateFormat = columns[i].format.toString();\n }\n break;\n }\n }\n return dateFormat;\n}\n/**\n * Checks whether fileSystemData is enabled.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {boolean} - returns the boolean value.\n */\nexport function isFileSystemData(parent) {\n var isFileSystemData = parent.fileSystemData.length >= 0 && isNOU(parent.ajaxSettings.url);\n return isFileSystemData;\n}\n/**\n * Function to check whether file already exist or not.\n *\n * @param {Record<string, any>} fileSystemData - specifies the file data.\n * @param {string} name - specifies the name.\n * @returns {boolean} - returns the boolean value.\n * @private\n */\nfunction isFileExists(fileSystemData, name) {\n var isExists = fileSystemData.some(function (item) { return item.name === name; });\n return isExists;\n}\n/**\n * Function to find the index value of a file or folder.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {number} id - specifies the id.\n * @returns {number} - returns the index value.\n * @private\n */\nfunction findIndexById(parent, id) {\n var index = parent.fileSystemData.findIndex(function (item) { return String(item.id) === String(id); });\n return index;\n}\n/**\n * Function to get the entire data of a file or folder using id value.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {number | string} id - specifies the id.\n * @returns {Object} - returns the data.\n * @private\n */\nfunction filterById(parent, id) {\n var data = parent.fileSystemData.filter(function (item) { return String(item.id) === String(id); })[0];\n return data;\n}\n/**\n * Function to get the entire data of a file or folder for a parent.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {number | string} parentId - specifies the parent id.\n * @returns {Object[]} - returns the data.\n * @private\n */\nfunction filterByParent(parent, parentId) {\n var data = parent.fileSystemData.filter(function (item) { return String(item.parentId) === String(parentId); });\n return data;\n}\n/**\n * Function to create a new copied file or folder.\n *\n * @param {Record<string, any>} data - specifies the file or folder data.\n * @param {Record<string, any>} target - specifies the target data.\n * @param {string} itemName - specifies the item name.\n * @param {boolean} isCopy - specifies the copy operation.\n * @returns {Record<string, Object>} - returns the data.\n * @private\n */\nfunction createNewItem(data, target, itemName, isCopy) {\n var newItem = {};\n //Construct the new folder details.\n for (var key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newItem[key] = null;\n }\n }\n var currentDate = new Date();\n var folderPath = target.id !== 0 ? target.filterPath + target.name : '\\\\';\n Object.assign(newItem, {\n dateCreated: currentDate,\n dateModified: currentDate,\n filterPath: folderPath,\n hasChild: isCopy ? data.hasChild : false,\n id: getUid(itemName === null ? data.name : itemName),\n isFile: isCopy ? data.isFile : false,\n name: itemName === null ? data.name : itemName,\n parentId: target.id,\n size: isCopy ? data.size : 0,\n type: isCopy ? data.type : ''\n });\n return newItem;\n}\n/**\n * Function to create an error response.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} message - specifies the error message.\n * @param {string} code - specifies the error code.\n * @param {Object[]} fileName - specifies the file name.\n * @returns {void}\n * @private\n */\nfunction createErrorObject(parent, message, code, fileName) {\n parent.responseData = {\n cwd: null,\n details: null,\n error: {\n code: code,\n message: message,\n fileExists: fileName != null ? fileName : null\n },\n files: null\n };\n}\n/**\n * Function to trigger folder creation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerFolderCreation(parent, data, eventArgs) {\n var createEventArgs = {\n folderName: getValue('name', data),\n cancel: false,\n path: getValue('path', data),\n parentFolder: getValue('data', data)\n };\n parent.trigger('beforeFolderCreate', createEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n if (!isFileExists(parent.fileSystemData, args.folderName)) {\n var data_1 = args.parentFolder[0];\n var newObject = createNewItem(data_1, data_1, args.folderName, false);\n parent.fileSystemData.push(newObject);\n }\n else {\n var message = 'A file or folder with the name ' + args.folderName + ' already exists.';\n createErrorObject(parent, message, '400', null);\n }\n }\n });\n}\n/**\n * Function to trigger delete operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerDeleteOperation(parent, data, eventArgs) {\n var deleteEventArgs = {\n cancel: false,\n itemData: getValue('data', data),\n path: getValue('path', data)\n };\n parent.trigger('beforeDelete', deleteEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n args.itemData.forEach(function (itemData) {\n var index = findIndexById(parent, itemData.id);\n if (index !== -1) {\n parent.fileSystemData.splice(index, 1);\n }\n if (!itemData.isFile) {\n var subItems = parent.fileSystemData.filter(function (obj) { return obj.filterPath.includes(itemData.name); });\n subItems.forEach(function (subItem) {\n var index = findIndexById(parent, subItem.id);\n if (index !== -1) {\n parent.fileSystemData.splice(index, 1);\n }\n });\n }\n });\n }\n });\n}\n/**\n * Function to trigger rename operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerRenameOperation(parent, data, eventArgs) {\n var renameEventArgs = {\n cancel: false,\n newName: getValue('newName', data),\n itemData: getValue('data', data),\n path: getValue('path', data)\n };\n parent.trigger('beforeRename', renameEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n if (!isFileExists(parent.fileSystemData, args.newName)) {\n var fileData = filterById(parent, args.itemData[0].id);\n fileData.name = args.newName;\n }\n else {\n var message = 'Cannot rename' + args.itemData[0].name + 'to' + args.newName + ': destination already exists.';\n createErrorObject(parent, message, '400', null);\n }\n }\n });\n}\n/**\n * Function to trigger move or copy operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerMoveOrCopyOperation(parent, data, eventArgs) {\n var moveEventArgs = {\n cancel: false,\n itemData: getValue('data', data),\n isCopy: getValue('action', data) === 'copy' ? true : false,\n path: getValue('path', data),\n targetData: getValue('targetData', data),\n targetPath: getValue('targetPath', data)\n };\n parent.trigger('beforeMove', moveEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n var message = 'File Already Exists';\n var action = getValue('action', data);\n var itemPermission = getAccessDetails(parent, args.itemData, action, false);\n var pathPermission = getAccessDetails(parent, [args.targetData], action, true);\n var file_1 = [];\n parent.pasteNodes = [];\n if (itemPermission === '' && pathPermission === '') {\n if (args.isCopy) {\n var folderSubItems_1 = filterByParent(parent, args.targetData.id);\n var copiedFolders = args.itemData;\n copiedFolders.forEach(function (itemData) {\n if (!isFileExists(folderSubItems_1, itemData.name) || getValue('renameFiles', data).length > 0) {\n if (getValue('renameFiles', data).length > 0) {\n var names = itemData.name.split('.');\n var name_1 = itemData.name.includes('.') ? names[0] + '(' + parent.existingFileCount + ').' + names[1] : names[0] + '(' + parent.existingFileCount + ')';\n copyFolderItems(parent, itemData, args.targetData, name_1);\n parent.responseData.error = null;\n parent.existingFileCount++;\n return;\n }\n copyFolderItems(parent, itemData, args.targetData, null);\n }\n else {\n file_1.push(itemData.name);\n }\n });\n if (file_1.length > 0) {\n createErrorObject(parent, message, '400', file_1);\n }\n return;\n }\n var target = args.targetData;\n var getTargetFiles = filterByParent(parent, target.id);\n for (var i = 0; i < args.itemData.length; i++) {\n var currItem = args.itemData[i];\n if (!isFileExists(getTargetFiles, currItem.name) || getValue('renameFiles', data).length > 0) {\n if (!target.hasChild) {\n target.hasChild = !currItem.isFile;\n }\n if (!currItem.isFile) {\n //Check whether the source folder include other sub folders or not.\n var subItems = currItem.parentId !== 0\n ? filterByParent(parent, currItem.parentID) : [];\n var itemData = filterById(parent, currItem.parentId);\n itemData.hasChild = subItems.length > 1 ? true : false;\n }\n var fileData = filterById(parent, currItem.id);\n if (getValue('renameFiles', data).length > 0) {\n var names = currItem.name.split('.');\n currItem.name = currItem.name.includes('.') ? names[0] + '(' + parent.existingFileCount + ').' + names[1] : names[0] + '(' + parent.existingFileCount + ')';\n fileData.name = currItem.name;\n parent.responseData.error = null;\n parent.existingFileCount++;\n parent.dropData = target;\n parent.dropPath = args.path;\n var pathArray = args.targetPath.replace(/^\\/|\\/$/g, '').split('/');\n target = filterById(parent, pathArray[pathArray.length - 1]);\n }\n fileData.parentId = target.id;\n fileData.filterPath = target.id === 0 ? '\\\\' : target.filterPath + target.name + '\\\\';\n }\n else {\n file_1.push(currItem.name);\n }\n }\n if (file_1.length > 0) {\n createErrorObject(parent, message, '400', file_1);\n }\n }\n }\n });\n}\n/**\n * Function to trigger search operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerSearchOperation(parent, data, eventArgs) {\n var searchEventArgs = {\n searchResults: getValue('data', data),\n cancel: false,\n path: getValue('path', data),\n searchText: getValue('searchString', data),\n caseSensitive: getValue('caseSensitive', data),\n showHiddenItems: getValue('showHiddenItems', data)\n };\n parent.trigger('search', searchEventArgs, function (args) {\n setValue('data', args.searchResults, data);\n if (args.cancel) {\n eventArgs.cancel = true;\n }\n });\n}\n/**\n * Function to trigger client side events.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerClientEvents(parent, data, eventArgs) {\n switch (getValue('action', data)) {\n case 'create': {\n triggerFolderCreation(parent, data, eventArgs);\n break;\n }\n case 'delete': {\n triggerDeleteOperation(parent, data, eventArgs);\n break;\n }\n case 'rename': {\n triggerRenameOperation(parent, data, eventArgs);\n break;\n }\n case 'move':\n case 'copy': {\n triggerMoveOrCopyOperation(parent, data, eventArgs);\n break;\n }\n case 'search': {\n triggerSearchOperation(parent, data, eventArgs);\n break;\n }\n }\n}\n/**\n * Creates an AJAX request for the file manager.\n *\n * @param {IFileManager} parent - The parent file manager instance.\n * @param {Object} data - The data object for the AJAX request.\n * @param {Function} fn - The callback function to be executed after the AJAX request.\n * @param {string} [event] - The event type for the AJAX request.\n * @param {string} [operation] - The operation type for the AJAX request.\n * @param {string} [targetPath] - The target path for the AJAX request.\n * @returns {void}\n * @private\n */\nfunction createAjax(parent, data, fn, event, operation, targetPath) {\n var ajaxSettings = {\n url: parent.ajaxSettings.url,\n type: 'POST',\n mode: true,\n dataType: 'json',\n contentType: 'application/json',\n data: JSON.stringify(data),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n var eventArgs = { action: getValue('action', data), ajaxSettings: ajaxSettings, cancel: false };\n triggerClientEvents(parent, data, eventArgs);\n parent.trigger('beforeSend', eventArgs, function (beforeSendArgs) {\n if (!beforeSendArgs.cancel) {\n parent.notify(events.beforeRequest, {});\n if (isFileSystemData(parent)) {\n var filePath = event === 'node-expand' || event === 'finalize-end' ? getValue('path', data) : parent.path;\n var pathArray = filePath.replace(/^\\/|\\/$/g, '').split('/');\n var idValue = event === 'rename-end-parent' || (event === 'path-changed' && getValue('data', data).length !== 0)\n || (event === 'paste-end' && (parent.targetModule === 'largeiconsview' || parent.targetModule === 'detailsview'))\n ? getValue('data', data)[0].id : pathArray[pathArray.length - 1];\n var action = getValue('action', data);\n var isFileOperation = (action === 'move' || action === 'rename' || action === 'copy' || action === 'delete' || action === 'search') && event !== 'rename-end';\n if (action === 'read' || action === 'create' || event === 'rename-end') {\n var rootId = parent.fileSystemData\n .filter(function (item) { return isNOU(item.parentId); })\n .length > 0\n ? parent.fileSystemData\n .filter(function (item) { return isNOU(item.parentId); })[0].id\n : 0;\n parent.responseData = {\n cwd: filterById(parent, parent.path === '/' && event !== 'node-expand' && event !== 'rename-end-parent' ? rootId : idValue),\n details: null,\n error: null,\n files: filterByParent(parent, parent.path === '/' && event !== 'node-expand' && event !== 'rename-end-parent' ? rootId : idValue)\n };\n if (isNOU(parent.responseData.cwd)) {\n var message = 'Cannot load empty data within the File Manager.';\n createErrorObject(parent, message, '400', null);\n }\n }\n else if (isFileOperation && parent.responseData.error === null) {\n var itemData = action === 'search' || action === 'delete' ? getValue('data', data) : [];\n if (itemData.length === 0) {\n itemData = getValue('data', data).map(function (item) { return filterById(parent, item.id); });\n }\n parent.responseData = {\n cwd: null,\n details: null,\n error: null,\n files: itemData\n };\n }\n else if (getValue('action', data) === 'details') {\n var itemData = getValue('data', data);\n var details = itemData[0];\n var isMultipleFiles = itemData.length > 1;\n var itemNames = itemData.map(function (item) { return item.name; });\n var totalSize = isMultipleFiles ? getSize(itemData.reduce(function (accumulator, currentObject) { return accumulator + (currentObject.size || 0); }, 0)) : getSize(details.size);\n var path = (parent.pathNames.includes(details.name) ? parent.pathNames.join('/') : parent.pathNames.join('/') + '/' + details.name);\n parent.responseData.details = Object.assign({\n location: isMultipleFiles ? null : path,\n multipleFiles: isMultipleFiles,\n name: itemNames.join(', '),\n size: totalSize\n }, isMultipleFiles ? {} : {\n created: details.dateCreated,\n isFile: details.isFile,\n modified: details.dateModified,\n permission: details.permission\n });\n }\n performReadOperation(parent, parent.responseData, fn, data, event, operation, targetPath, beforeSendArgs);\n return;\n }\n var ajax = new Ajax({\n url: getValue('url', beforeSendArgs.ajaxSettings),\n type: getValue('type', beforeSendArgs.ajaxSettings),\n mode: getValue('mode', beforeSendArgs.ajaxSettings),\n dataType: getValue('dataType', beforeSendArgs.ajaxSettings),\n contentType: getValue('contentType', beforeSendArgs.ajaxSettings),\n data: getValue('data', beforeSendArgs.ajaxSettings),\n beforeSend: getValue('beforeSend', beforeSendArgs.ajaxSettings),\n onSuccess: function (result) {\n if (isNOU(result)) {\n var result_1 = {\n error: {\n fileExists: null,\n message: getLocaleText(parent, 'Server-Error') + ' ' + parent.ajaxSettings.url,\n code: '406'\n },\n files: null\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result_1, event, operation, targetPath);\n return;\n }\n if (typeof (result) === 'string') {\n result = JSON.parse(result);\n }\n performReadOperation(parent, result, fn, data, event, operation, targetPath, beforeSendArgs);\n },\n onFailure: function () {\n var result = {\n files: null,\n error: {\n code: '404',\n message: getLocaleText(parent, 'Network-Error') + ' ' + parent.ajaxSettings.url,\n fileExists: null\n }\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result, event, operation, targetPath);\n }\n });\n ajax.send();\n }\n });\n}\n/**\n * Function to get file size.\n *\n * @param {number} size - specifies the size.\n * @returns {string} - returns the size.\n * @private\n */\nfunction getSize(size) {\n var hz;\n if (size < 1024) {\n hz = size + ' B';\n }\n else if (size < 1024 * 1024) {\n hz = (size / 1024).toFixed(2) + ' KB';\n }\n else if (size < 1024 * 1024 * 1024) {\n hz = (size / 1024 / 1024).toFixed(2) + ' MB';\n }\n else {\n hz = (size / 1024 / 1024 / 1024).toFixed(2) + ' GB';\n }\n return hz;\n}\n/**\n * Function to perform read operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {Function} fn - specifies the function.\n * @param {Object} data - specifies the data.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the targetPath.\n * @param {BeforeSendEventArgs} beforeSendArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction performReadOperation(parent, result, fn, data, event, operation, targetPath, beforeSendArgs) {\n parent.notify(events.afterRequest, { action: 'success' });\n var id = parent.expandedId ? parent.expandedId : parent.pathId[parent.pathId.length - 1];\n if (!isNOU(result.cwd) && (getValue('action', data) === 'read')) {\n result.cwd.name = (parent.pathId.length === 1) ? (parent.rootAliasName || result.cwd.name) : result.cwd.name;\n setValue('_fm_id', id, result.cwd);\n setValue(id, result.cwd, parent.feParent);\n if (!isNOU(result.files) || result.error.code === '401') {\n if ((event === 'finalize-end' || event === 'initial-end') && parent.pathNames.length === 0) {\n var root = getValue(parent.pathId[0], parent.feParent);\n parent.pathNames[0] = getValue('name', root);\n parent.hasId = !isNOU(getValue('id', root));\n }\n if (event === 'finalize-end') {\n generatePath(parent);\n }\n }\n }\n var intl = new Internationalization(parent.locale);\n if (!isNOU(result.files)) {\n setDateObject(result.files, intl, getDateFormat(parent));\n for (var i = 0, len = result.files.length; i < len; i++) {\n var item = result.files[i];\n setValue('_fm_iconClass', fileType(item), item);\n }\n if (getValue('action', data) === 'read') {\n setNodeId(result, id);\n setValue(id, result.files, parent.feFiles);\n }\n }\n if (!isNOU(result.details) && !isNOU(parent.rootAliasName)) {\n var rootName = parent.rootAliasName || getValue('name', result.details);\n var location_1 = getValue('location', result.details).replace(new RegExp('/', 'g'), '\\\\');\n if ((getValue('path', data) === '/') || (parent.hasId && getValue('path', data).match(/[/]/g).length === 1)) {\n if (getValue('names', data).length === 0) {\n setValue('name', rootName, result.details);\n location_1 = rootName;\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n setValue('location', location_1, result.details);\n }\n fn(parent, result, event, operation, targetPath);\n if (!isNOU(result.files) && (event === 'path-changed' || event === 'finalize-end' || event === 'open-end' || event === 'drop-path')) {\n parent.notify(events.searchTextChange, result);\n }\n if (typeof getValue('onSuccess', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', beforeSendArgs.ajaxSettings)();\n }\n}\n/**\n * Function to copy operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {string} target - specifies the target.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nfunction copyFolderItems(parent, data, target, itemName) {\n var newObject = createNewItem(data, target, itemName, true);\n parent.fileSystemData.push(newObject);\n parent.pasteNodes.push(newObject.id);\n var copiedItems = filterByParent(parent, data.id);\n for (var i = 0; i < copiedItems.length; i++) {\n copyFolderItems(parent, copiedItems[i], newObject, null);\n }\n}\n/**\n * Function for trigger Ajax failure in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {BeforeSendEventArgs} beforeSendArgs - specifies the beforeSendArgs.\n * @param {Function} fn - specifies the function.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the targetPath.\n * @returns {void}\n * @private\n */\nfunction triggerAjaxFailure(parent, beforeSendArgs, fn, result, event, operation, targetPath) {\n parent.notify(events.afterRequest, { action: 'failure' });\n fn(parent, result, event, operation, targetPath);\n if (typeof getValue('onFailure', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onFailure', beforeSendArgs.ajaxSettings)();\n }\n}\n/**\n * Function for read success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction readSuccess(parent, result, event) {\n try {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n var args = { action: 'read', result: result };\n parent.trigger('success', args);\n }\n else {\n if (!isNOU(result.error) && result.error.code === '401') {\n result.files = [];\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n }\n onFailure(parent, result, 'read');\n parent.setProperties({ path: parent.oldPath }, true);\n parent.pathNames.pop();\n }\n }\n catch (error) {\n handleCatchError(parent, error, 'read');\n parent.setProperties({ path: parent.oldPath }, true);\n parent.pathNames.pop();\n }\n if (parent.isDragDrop && parent.isDropEnd) {\n if (parent.droppedObjects.length !== 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n }\n parent.isDropEnd = parent.isDragDrop = false;\n }\n}\n/**\n * Function for filter success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction filterSuccess(parent, result, event, action) {\n try {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: action, result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, action);\n }\n }\n catch (error) {\n handleCatchError(parent, error, action);\n }\n}\n/* istanbul ignore next */\n/**\n * Function for create success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nfunction createSuccess(parent, result, itemName) {\n try {\n if (!isNOU(result.files)) {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n parent.createdItem = isFileSystemData(parent) ? result.files[result.files.length - 1] : result.files[0];\n parent.breadcrumbbarModule.searchObj.value = '';\n var createEventArgs = {\n folderName: itemName,\n path: parent.path,\n parentFolder: parent.itemData\n };\n parent.trigger('folderCreate', createEventArgs);\n var args = { action: 'create', result: result };\n parent.trigger('success', args);\n parent.itemData = [getPathObject(parent)];\n read(parent, events.createEnd, parent.path);\n }\n else {\n if (result.error.code === '400') {\n if (parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#newname', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n else {\n var result_2 = {\n files: null,\n error: {\n code: '400',\n message: getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + itemName + '\"'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result_2);\n }\n var args = { action: 'create', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'create');\n }\n }\n }\n catch (error) {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n handleCatchError(parent, error, 'create');\n }\n}\n/* istanbul ignore next */\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @returns {void}\n * @private\n */\nfunction renameSuccess(parent, result) {\n try {\n if (!isNOU(result.files)) {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n var args = { action: 'rename', result: result };\n parent.trigger('success', args);\n parent.renamedItem = Array.isArray(result.files) ? result.files[0] : result.files;\n var renameEventArgs = {\n newName: parent.renamedItem.name,\n itemData: [parent.renamedItem],\n path: parent.path\n };\n parent.trigger('rename', renameEventArgs);\n if (parent.activeModule === 'navigationpane') {\n parent.pathId.pop();\n parent.itemData = [getValue(parent.pathId[parent.pathId.length - 1], parent.feParent)];\n read(parent, events.renameEndParent, getValue('filterPath', parent.renamedItem).replace(/\\\\/g, '/'));\n parent.itemData[0] = parent.renamedItem;\n if (getValue('filterPath', parent.renamedItem) === getValue('filterPath', parent.itemData[0]) && parent.pathNames.length > 1) {\n parent.pathNames[parent.pathNames.length - 1] = parent.renameText;\n }\n read(parent, events.pathChanged, parent.path === '/' ? parent.path : getValue('filterPath', parent.renamedItem).replace(/\\\\/g, '/') + parent.renamedItem.name + '/');\n parent.renamedItem = null;\n }\n else {\n parent.itemData = [getPathObject(parent)];\n if (parent.breadcrumbbarModule.searchObj.value !== '') {\n Search(parent, events.renameEnd, parent.path, parent.searchWord, parent.showHiddenItems, !parent.searchSettings.ignoreCase);\n }\n else {\n if (parent.isFiltered) {\n filter(parent, events.renameEnd);\n }\n else {\n read(parent, events.renameEnd, parent.path);\n }\n }\n }\n }\n else {\n if (result.error.code === '400' && parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#rename', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-Rename-Exists').replace('{0}', '\"' + parent.currentItemText + '\"');\n error = error.replace('{1}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n var args = { action: 'rename', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'rename');\n }\n }\n }\n catch (error) {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n handleCatchError(parent, error, 'rename');\n }\n}\n/* istanbul ignore next */\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction pasteSuccess(parent, result, path, operation) {\n try {\n var moveorcopyEventArgs = {\n itemData: result.files,\n isCopy: operation === 'copy' ? true : false,\n path: path,\n targetData: parent.itemData[0],\n targetPath: parent.path\n };\n parent.trigger('move', moveorcopyEventArgs);\n if (result.error && result.error.fileExists) {\n parent.fileLength = 0;\n if (!isNOU(result.files)) {\n parent.isPasteError = true;\n doPasteUpdate(parent, operation, result);\n }\n createExtDialog(parent, 'DuplicateItems', result.error.fileExists);\n if (result.error.code === '404') {\n createDialog(parent, 'Error', result);\n }\n }\n else if (!result.error && !isNOU(result.files)) {\n parent.isPasteError = false;\n doPasteUpdate(parent, operation, result);\n }\n else if (result.error && !isNOU(result.files)) {\n parent.isPasteError = true;\n doPasteUpdate(parent, operation, result);\n createDialog(parent, 'Error', result);\n }\n else {\n onFailure(parent, result, operation);\n }\n }\n catch (error) {\n handleCatchError(parent, error, operation);\n }\n}\n/**\n * Function to delete success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nfunction deleteSuccess(parent, result, path) {\n try {\n var deleteEventArgs = {\n itemData: result.files,\n path: path\n };\n parent.trigger('delete', deleteEventArgs);\n if (!isNOU(result.files)) {\n parent.setProperties({ path: path }, true);\n parent.itemData = [getPathObject(parent)];\n read(parent, events.deleteEnd, parent.path);\n if (result.error) {\n onFailure(parent, result, 'delete');\n }\n else {\n var args = { action: 'delete', result: result };\n parent.trigger('success', args);\n }\n }\n else {\n onFailure(parent, result, 'delete');\n }\n }\n catch (error) {\n handleCatchError(parent, error, 'delete');\n }\n}\n/**\n * Function for details success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction detailsSuccess(\n// eslint:disable-next-line\nparent, result, path, operation) {\n try {\n if (!isNOU(result.details)) {\n createDialog(parent, operation, null, result.details);\n var args = { action: 'details', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'details');\n }\n }\n catch (error) {\n handleCatchError(parent, error, 'details');\n }\n}\n/**\n * Function for on failure event in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction onFailure(parent, result, action) {\n createDialog(parent, 'Error', result);\n var args = { action: action, error: result.error };\n parent.trigger('failure', args);\n}\n/**\n * Function for search in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @param {string} searchString - specifies the search string.\n * @param {boolean} showHiddenItems - specifies the hidden items.\n * @param {boolean} caseSensitive - specifies the casing of search text.\n * @returns {void}\n * @private\n */\nexport function Search(parent, event, path, searchString, showHiddenItems, caseSensitive) {\n var data = {\n action: 'search', path: path, searchString: searchString, showHiddenItems: showHiddenItems, caseSensitive: caseSensitive,\n data: parent.itemData\n };\n createAjax(parent, data, searchSuccess, event);\n}\n/* istanbul ignore next */\n/**\n * Function for search success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction searchSuccess(parent, result, event) {\n try {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: 'search', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'search');\n }\n }\n catch (error) {\n handleCatchError(parent, error, 'search');\n }\n}\n/* istanbul ignore next */\n/**\n * Function for download in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} items - specifies the items.\n * @returns {void}\n * @private\n */\nexport function Download(parent, path, items) {\n var downloadUrl = parent.ajaxSettings.downloadUrl ? parent.ajaxSettings.downloadUrl : parent.ajaxSettings.url;\n var data = { 'action': 'download', 'path': path, 'names': items, 'data': parent.itemData };\n var ajaxSettings = {\n url: downloadUrl,\n type: 'POST',\n contentType: 'application/json',\n responseType: 'blob',\n data: JSON.stringify(data),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n var eventArgs = { data: data, cancel: false, useFormPost: true, ajaxSettings: ajaxSettings };\n parent.trigger('beforeDownload', eventArgs, function (downloadArgs) {\n if (!downloadArgs.cancel) {\n if (downloadArgs.useFormPost) {\n var form = createElement('form', {\n id: parent.element.id + '_downloadForm',\n attrs: { action: downloadUrl, method: 'post', name: 'downloadForm', 'download': '' }\n });\n var input = createElement('input', {\n id: parent.element.id + '_hiddenForm',\n attrs: { name: 'downloadInput', value: JSON.stringify(downloadArgs.data), type: 'hidden' }\n });\n form.appendChild(input);\n parent.element.appendChild(form);\n document.forms.namedItem('downloadForm').submit();\n parent.element.removeChild(form);\n }\n else {\n try {\n var contentDisposition_1;\n var fileName_1;\n var fetch_1 = new Fetch({\n url: getValue('url', downloadArgs.ajaxSettings),\n type: getValue('type', downloadArgs.ajaxSettings),\n contentType: getValue('contentType', downloadArgs.ajaxSettings),\n responseType: getValue('responseType', downloadArgs.ajaxSettings),\n beforeSend: getValue('beforeSend', downloadArgs.ajaxSettings),\n onLoad: function (e) {\n contentDisposition_1 = e.headers.get('Content-Disposition');\n if (contentDisposition_1) {\n var filenameMatch = contentDisposition_1.match(/filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/);\n var extractedFilename = filenameMatch && filenameMatch[1];\n fileName_1 = extractedFilename ? extractedFilename.replace(/['\"]/g, '') : fileName_1;\n }\n else {\n fileName_1 = parent.itemData.length > 1 ? 'files.zip' : getValue('isFile', parent.itemData[0]) ? getValue('name', parent.itemData[0]) : getValue('name', parent.itemData[0]) + '.zip';\n }\n },\n onSuccess: function (e) {\n parent.trigger('success', downloadArgs);\n var blob = e;\n var blobUrl = URL.createObjectURL(blob);\n var link = document.createElement('a');\n link.href = blobUrl;\n link.download = fileName_1;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n },\n onFailure: function (e) {\n var result = {\n error: {\n code: e.status.toString(),\n message: getLocaleText(parent, 'Network-Error') + ' ' + parent.ajaxSettings.downloadUrl\n }\n };\n createDialog(parent, 'Error', result);\n parent.trigger('failure', downloadArgs);\n }\n });\n fetch_1.send(JSON.stringify(downloadArgs.data));\n }\n catch (error) {\n handleCatchError(parent, error, 'download');\n }\n }\n }\n });\n}\n/**\n * Function for on catch handler in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {any} error - specifies the catch error.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction handleCatchError(parent, error, action) {\n var errorResult = {\n files: null,\n error: {\n message: error.message,\n fileExists: null\n }\n };\n onFailure(parent, errorResult, action);\n}\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { select, isNullOrUndefined as isNOU, createElement, Internationalization } from '@syncfusion/ej2-base';\nimport { getValue, remove, selectAll } from '@syncfusion/ej2-base';\nimport { createFolder } from '../common/operations';\nimport * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { paste, rename } from '../common/operations';\nimport { getLocaleText, getDuplicateData, objectToString, getCssClass } from '../common/utility';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the type of event args.\n * @param {FileDetails} details - specifies the file details.\n * @returns {void}\n * @private\n */\nexport function createDialog(parent, text, e, details) {\n var options = getOptions(parent, text, e, details);\n if (isNOU(parent.dialogObj)) {\n parent.dialogObj = new Dialog({\n beforeOpen: keydownAction.bind(this, parent, options.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n },\n header: options.header,\n content: options.content,\n buttons: options.buttons,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n allowDragging: true,\n isModal: true,\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n width: '350px',\n open: options.open,\n close: options.close,\n enableRtl: parent.enableRtl,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.dialogObj.isStringTemplate = true;\n parent.dialogObj.appendTo('#' + parent.element.id + CLS.DIALOG_ID);\n }\n else {\n changeOptions(parent, options);\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {void}\n * @private\n */\nexport function createExtDialog(parent, text, replaceItems, newPath) {\n var extOptions = getExtOptions(parent, text, replaceItems, newPath);\n parent.isApplySame = false;\n if (isNOU(parent.extDialogObj)) {\n parent.extDialogObj = new Dialog({\n beforeOpen: beforeExtOpen.bind(this, parent, extOptions.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n },\n content: extOptions.content,\n header: extOptions.header,\n closeOnEscape: true,\n allowDragging: true,\n animationSettings: { effect: 'None' },\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n enableRtl: parent.enableRtl,\n showCloseIcon: true,\n isModal: true,\n width: 350,\n buttons: extOptions.buttons,\n open: extOptions.open,\n close: extOptions.close,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.extDialogObj.isStringTemplate = true;\n parent.extDialogObj.appendTo('#' + parent.element.id + CLS.EXTN_DIALOG_ID);\n }\n else {\n parent.extDialogObj.header = extOptions.header;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.open = extOptions.open;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.content = extOptions.content;\n parent.extDialogObj.buttons = extOptions.buttons;\n parent.extDialogObj.enableRtl = parent.enableRtl;\n parent.extDialogObj.locale = parent.locale;\n parent.extDialogObj.beforeOpen = beforeExtOpen.bind(this, parent, extOptions.dialogName);\n parent.extDialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n };\n parent.extDialogObj.dataBind();\n parent.extDialogObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {Dialog} dlgModule - Specifies the dialog module.\n * @param {BeforeOpenEventArgs} args - specifies the before open arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeOpen(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupName: dialogName, popupModule: dlgModule\n };\n parent.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {BeforeCloseEventArgs} args - specifies the before close event arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeClose(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupModule: dlgModule, popupName: dialogName\n };\n parent.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n if (!args.cancel && args.isInteracted && ((dialogName === 'Rename') || (dialogName === 'Create Folder'))) {\n parent.trigger(events.actionFailure, {});\n }\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupOpen(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupOpen', args);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupClose(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupClose', args);\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {DialogOptions} - returns the dialog options.\n * @private\n */\nfunction getExtOptions(parent, text, replaceItems, newPath) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var duplicateContent;\n var item;\n var index;\n options.open = function () { triggerPopupOpen(parent, parent.extDialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.extDialogObj, options.dialogName); };\n switch (text) {\n case 'Extension':\n options.header = getLocaleText(parent, 'Header-Rename-Confirmation');\n options.content = '<div>' + getLocaleText(parent, 'Content-Rename-Confirmation') + '</div>';\n options.buttons = [{\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.extDialogObj.hide();\n rename(parent, newPath, parent.renameText);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.extDialogObj.hide();\n parent.dialogObj.hide();\n }\n }];\n options.dialogName = 'Extension Change';\n break;\n case 'DuplicateItems':\n options.dialogName = 'Duplicate Items';\n parent.replaceItems = replaceItems;\n item = parent.replaceItems[parent.fileLength];\n index = item.lastIndexOf('/');\n item = index === -1 ? item : item.substring(index);\n options.header = getLocaleText(parent, 'Header-Duplicate');\n duplicateContent = '<div>' + getLocaleText(parent, 'Content-Duplicate') + '</div>';\n options.content = (duplicateContent).replace('{0}', item);\n options.close = function () {\n if (!parent.isDropEnd && parent.duplicateItems.length === 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n parent.isDropEnd = parent.isDragDrop = false;\n }\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.duplicateItems.push(parent.replaceItems[parent.fileLength]);\n parent.duplicateRecords.push(getDuplicateData(parent, parent.replaceItems[parent.fileLength]));\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_1 = parent.replaceItems[parent.fileLength];\n var indexval = item_1.lastIndexOf('/');\n item_1 = indexval === -1 ? item_1 : item_1.substring(indexval);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_1);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_2 = parent.replaceItems[parent.fileLength];\n var ind = item_2.lastIndexOf('/');\n item_2 = ind === -1 ? item_2 : item_2.substring(ind);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_2);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n if (parent.duplicateItems.length !== 0) {\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n }\n }\n ];\n break;\n case 'UploadRetry':\n options.dialogName = 'Retry Upload';\n options.header = getLocaleText(parent, 'Header-Retry');\n options.content = parent.retryFiles[0].name + '<div class=\"e-fe-retrycontent\">' +\n (getLocaleText(parent, 'Content-Retry')) + '</div>';\n options.open = onRetryOpen.bind(this, parent);\n options.close = function () {\n parent.isRetryOpened = false;\n retryDlgClose(parent);\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Keep-Both') },\n click: function () {\n retryDlgUpdate(parent, true);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Replace') },\n click: function () {\n retryDlgUpdate(parent, false);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Skip') },\n click: function () {\n var count = 0;\n if (parent.isApplySame) {\n count = parent.retryFiles.length;\n parent.retryFiles = [];\n retryDlgClose(parent);\n }\n else {\n count = 1;\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n parent.notify(events.skipUpload, { count: count });\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {boolean} isKeepBoth - checks the arguement to keep both.\n * @returns {void}\n * @private\n */\nfunction retryDlgUpdate(parent, isKeepBoth) {\n if (parent.isApplySame) {\n if (isKeepBoth) {\n onKeepBothAll(parent);\n }\n else {\n onReplaceAll(parent);\n }\n retryDlgClose(parent);\n }\n else {\n parent.retryArgs.push({\n action: isKeepBoth ? 'keepboth' : 'replace',\n file: parent.retryFiles[0]\n });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction retryDlgClose(parent) {\n var flag = true;\n if (parent.isRetryOpened) {\n parent.isRetryOpened = false;\n }\n else {\n flag = false;\n }\n var ele = select('.e-dlg-checkbox', parent.extDialogObj.element);\n if (ele) {\n remove(ele);\n }\n if (flag) {\n parent.extDialogObj.hide();\n }\n else {\n parent.retryFiles = [];\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {object} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nfunction onRetryOpen(parent, args) {\n parent.isRetryOpened = true;\n var dialogEle = getValue('element', args);\n var container = select('.e-dlg-content', dialogEle);\n var checkContainer = parent.createElement('div', {\n className: 'e-dlg-checkbox'\n });\n var checkbox = parent.createElement('input', {\n id: parent.element.id + '_applyall'\n });\n checkContainer.appendChild(checkbox);\n container.appendChild(checkContainer);\n var checkBoxObj = new CheckBox({\n label: getLocaleText(parent, 'ApplyAll-Label'),\n change: function (args) {\n parent.isApplySame = args.checked;\n }\n });\n checkBoxObj.appendTo('#' + parent.element.id + '_applyall');\n triggerPopupOpen(parent, parent.extDialogObj, 'Retry Upload');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onKeepBothAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'keepboth', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReplaceAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'replace', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction focusInput(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n ele.focus();\n ele.value = '';\n var len = ele.value.length;\n ele.setSelectionRange(0, len);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onFolderDialogOpen(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n if (!ele.parentElement.classList.contains('e-control-wrapper')) {\n createInput(ele, getLocaleText(parent, 'Content-NewFolder'));\n }\n ele.parentElement.nextElementSibling.innerHTML = '';\n ele.oninput = function () {\n onValidate(parent, ele);\n };\n ele.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onSubmit(parent);\n }\n };\n focusInput(parent);\n triggerPopupOpen(parent, parent.dialogObj, 'Create Folder');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onRenameDialogOpen(parent) {\n var inputEle = select('#rename', parent.dialogObj.element);\n if (!inputEle.parentElement.classList.contains('e-control-wrapper')) {\n createInput(inputEle, getLocaleText(parent, 'Content-Rename'));\n }\n inputEle.parentElement.nextElementSibling.innerHTML = '';\n inputEle.oninput = function () {\n onValidate(parent, inputEle);\n };\n inputEle.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onReSubmit(parent);\n }\n };\n onFocusRenameInput(parent, inputEle);\n triggerPopupOpen(parent, parent.dialogObj, 'Rename');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} inputEle - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onFocusRenameInput(parent, inputEle) {\n inputEle.focus();\n var txt = '';\n if (parent.isFile && !parent.showFileExtension) {\n var index = parent.currentItemText.lastIndexOf('.');\n txt = (index === -1) ? parent.currentItemText : parent.currentItemText.substring(0, index);\n }\n else {\n txt = parent.currentItemText;\n }\n inputEle.value = txt;\n if (parent.isFile && parent.showFileExtension && (inputEle.value.indexOf('.') !== -1)) {\n inputEle.setSelectionRange(0, inputEle.value.lastIndexOf('.'));\n }\n else {\n inputEle.setSelectionRange(0, inputEle.value.length);\n }\n}\n/**\n *\n * @param {HTMLInputElement} ele - specifies the element.\n * @param {string} placeholder - specifies the place holder.\n * @returns {void}\n * @private\n */\nfunction createInput(ele, placeholder) {\n Input.createInput({\n element: ele,\n properties: {\n placeholder: placeholder\n }\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the event arguements.\n * @param {FileDetails} details - specifies the file details.\n * @returns {DialogOptions} - specifies the dialog options.\n * @private\n */\nfunction getOptions(parent, text, e, details) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var permission;\n var formattedString;\n var intl;\n var strArr;\n var fileType;\n var location;\n options.open = function () { triggerPopupOpen(parent, parent.dialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.dialogObj, options.dialogName); };\n text = (details && details.multipleFiles === true) ? 'MultipleFileDetails' : text;\n var index;\n switch (text) {\n case 'NewFolder':\n options.dialogName = 'Create Folder';\n options.header = getLocaleText(parent, 'Header-NewFolder');\n options.content = '<input type=\"text\" value=\"New folder\" id=\"newname\"><div class=\"e-fe-error\"></div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Create') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onSubmit(parent);\n }\n }\n ];\n options.open = onFolderDialogOpen.bind(this, parent);\n break;\n case 'Delete':\n options.dialogName = 'Delete';\n if (parent.selectedItems.length > 1) {\n options.content = ('<div>' + getLocaleText(parent, 'Content-Multiple-Delete') + '</div>')\n .replace('{0}', parent.selectedItems.length.toString());\n options.header = getLocaleText(parent, 'Header-Multiple-Delete');\n }\n else {\n options.content = '<div>' + getLocaleText(parent, parent.isFile ? 'Content-Delete' : 'Content-Folder-Delete') + '</div>';\n options.header = getLocaleText(parent, parent.isFile ? 'Header-Delete' : 'Header-Folder-Delete');\n }\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n onDeleteSubmit(parent);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Rename':\n options.dialogName = 'Rename';\n options.header = getLocaleText(parent, 'Header-Rename');\n options.content = '<input type=\"text\" class=\"e-input\" id=\"rename\"><div class=\"e-fe-error\"></div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Save') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onReSubmit(parent);\n }\n }\n ];\n options.open = onRenameDialogOpen.bind(this, parent);\n break;\n case 'details':\n options.dialogName = 'File Details';\n intl = new Internationalization(parent.locale);\n formattedString = intl.formatDate(new Date(details.modified), { format: 'MMMM dd, yyyy HH:mm:ss' });\n permission = '';\n if (!isNOU(details.permission)) {\n permission = '<tr><td>' + getLocaleText(parent, 'Permission') + '</td><td class=\"' + CLS.VALUE + '\" >'\n + objectToString(details.permission) + '</td></tr>';\n }\n options.header = details.name;\n options.content = '<table>' +\n '<tr><td>' + getLocaleText(parent, 'Type') + '</td><td class=\"' + CLS.VALUE + '\" title=\"' +\n (details.isFile ? 'File' : 'Folder') + '\">' + (details.isFile ? 'File' : 'Folder') + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Size') + '</td><td><span class=\"' + CLS.VALUE + '\" title =\"' +\n details.size + '\">' + details.size + '</span></td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Location') + '</td><td class=\"' + CLS.VALUE + '\" title=\"' +\n details.location + '\">' + details.location + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Modified') + '</td><td class=\"' + CLS.VALUE + '\" >'\n + formattedString + '</td></tr>'\n + permission + '</table>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'MultipleFileDetails':\n options.dialogName = 'File Details';\n strArr = parent.itemData.map(function (val) {\n index = val.name.indexOf('.') + 1;\n return (index === 0 && (!val.isFile)) ? 'Folder' : ((index !== 0) ? val.name.substr(index).replace(' ', '') : 'undetermined');\n });\n if (strArr[0] === undefined) {\n strArr = details.name.split(',').map(function (val) {\n index = val.indexOf('.') + 1;\n return (index === 0) ? 'Folder' : val.substr(index).replace(' ', '');\n });\n }\n fileType = strArr.every(function (val, i, arr) { return val === arr[0]; }) ?\n ((strArr[0] === 'Folder') ? 'Folder' : strArr[0].toLocaleUpperCase() + ' Type') : 'Multiple Types';\n location = details.location;\n options.header = details.name;\n options.content = '<table><tr><td>' + getLocaleText(parent, 'Type')\n + ':</td><td class=\"' + CLS.VALUE + '\">' + fileType + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Size') + ':</td><td>' +\n details.size + '<span class=\"' + CLS.VALUE + '\" title =\"' + details.size\n + '\"></span></td></tr>' + '<tr><td>' + getLocaleText(parent, 'Location') +\n ':</td><td class=\"' + CLS.VALUE + '\" title=\"' + location + '\">'\n + location + '</td></tr>' + '</table>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Error':\n parent.notify(events.actionFailure, {});\n options.dialogName = 'Error';\n if (e.error.code === '401') {\n options.header = '<span class=\"e-fe-icon e-fe-access-error\"></span><div class=\"e-fe-access-header\">' +\n getLocaleText(parent, 'Access-Denied') + '</div>';\n }\n else {\n options.header = getLocaleText(parent, 'Error');\n }\n options.content = '<div class=\"' + CLS.ERROR_CONTENT + '\">' + e.error.message + '</div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dialogName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction keydownAction(parent, dialogName, args) {\n var btnElement = selectAll('.e-btn', parent.dialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.dialogObj, args, dialogName);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dlgName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction beforeExtOpen(parent, dlgName, args) {\n var btnElement = selectAll('.e-btn', parent.extDialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.extDialogObj, args, dlgName);\n}\n/**\n *\n * @param {HTMLInputElement[]} btnElement - specifies the button element.\n * @returns {void}\n * @private\n */\nfunction preventKeydown(btnElement) {\n var _loop_1 = function (btnCount) {\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {DialogOptions} options - specifies the dialog options.\n * @returns {void}\n * @private\n */\nfunction changeOptions(parent, options) {\n parent.dialogObj.header = options.header;\n parent.dialogObj.content = options.content;\n parent.dialogObj.buttons = options.buttons;\n parent.dialogObj.enableRtl = parent.enableRtl;\n parent.dialogObj.open = options.open;\n parent.dialogObj.close = options.close;\n parent.dialogObj.beforeOpen = keydownAction.bind(this, parent, options.dialogName);\n parent.dialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n };\n parent.dialogObj.dataBind();\n parent.dialogObj.show();\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onSubmit(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n createFolder(parent, ele.value);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReSubmit(parent) {\n var ele = select('#rename', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n var text = ele.value;\n var oIndex = parent.currentItemText.lastIndexOf('.');\n if (parent.isFile && !parent.showFileExtension) {\n var extn = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n text += extn;\n }\n parent.renameText = text;\n if (parent.currentItemText === text) {\n parent.dialogObj.hide();\n return;\n }\n var newPath = (parent.activeModule === 'navigationpane') ? getValue('filterPath', parent.itemData[0]).replace(/\\\\/g, '/') : parent.path;\n parent.renamedId = getValue('id', parent.itemData[0]);\n if (parent.isFile) {\n var oldExtension = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n var nIndex = text.lastIndexOf('.');\n var newExtension = (nIndex === -1) ? '' : text.substr(nIndex);\n if (parent.showFileExtension && oldExtension !== newExtension) {\n createExtDialog(parent, 'Extension', null, newPath);\n }\n else {\n rename(parent, newPath, text);\n }\n }\n else {\n rename(parent, newPath, text);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onDeleteSubmit(parent) {\n parent.dialogObj.hide();\n parent.notify(events.deleteInit, {});\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onValidate(parent, ele) {\n if (/[/\\\\|*?\"<>:]/.test(ele.value)) {\n addInvalid(parent, ele);\n }\n else if (ele.value === '') {\n ele.parentElement.nextElementSibling.innerHTML = getLocaleText(parent, 'Validation-Empty');\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = '';\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onSubmitValidate(parent, ele) {\n onValidate(parent, ele);\n var len = ele.value.length - 1;\n if (ele.value !== '' && ((ele.value.lastIndexOf('.') === len) || (ele.value.lastIndexOf(' ') === len)) &&\n (parent.showFileExtension || (ele.value.lastIndexOf('.') === -1 || ele.value.substring(ele.value.indexOf('.') + 1).length === 0))) {\n addInvalid(parent, ele);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction addInvalid(parent, ele) {\n var error = getLocaleText(parent, 'Validation-Invalid').replace('{0}', '\"' + ele.value + '\"');\n if (parent.enableHtmlSanitizer) {\n ele.parentElement.nextElementSibling.textContent = error;\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n}\n/**\n *\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {number} - returns the key code.\n * @private\n */\nfunction getKeyCode(e) {\n var code;\n if (e.keyCode) {\n code = e.keyCode;\n }\n else if (e.which) {\n code = e.which;\n }\n else {\n code = e.charCode;\n }\n return code;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} header - specifies the header element.\n * @param {string} imageUrl - specifies the image URL.\n * @returns {void}\n * @private\n */\nexport function createImageDialog(parent, header, imageUrl) {\n var content = createElement('div', { className: 'e-image-wrap' });\n var image = createElement('img', { className: 'e-image', attrs: { src: imageUrl, alt: header } });\n content.appendChild(image);\n if (isNOU(parent.viewerObj)) {\n parent.viewerObj = new Dialog({\n header: header,\n content: content,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n isModal: true,\n width: '350px',\n height: '350px',\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: parent.locale,\n enableResize: true,\n allowDragging: true,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n position: { X: 'center', Y: 'center' },\n enableRtl: parent.enableRtl,\n open: openImage.bind(this, parent),\n close: function () { triggerPopupClose(parent, parent.viewerObj, 'Image Preview'); },\n beforeOpen: function (args) {\n triggerPopupBeforeOpen(parent, parent.viewerObj, args, 'Image Preview');\n },\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.viewerObj, args, 'Image Preview');\n },\n resizing: updateImage.bind(this, parent),\n resizeStop: updateImage.bind(this, parent)\n });\n parent.viewerObj.isStringTemplate = true;\n parent.viewerObj.appendTo('#' + parent.element.id + CLS.IMG_DIALOG_ID);\n }\n else {\n parent.viewerObj.refresh();\n parent.viewerObj.header = header;\n parent.viewerObj.content = content;\n parent.viewerObj.enableRtl = parent.enableRtl;\n parent.viewerObj.dataBind();\n parent.viewerObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction openImage(parent) {\n setTimeout(function () {\n if (parent.viewerObj) {\n parent.viewerObj.element.focus();\n }\n });\n updateImage(parent);\n triggerPopupOpen(parent, parent.viewerObj, 'Image Preview');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction updateImage(parent) {\n var content = select('.e-dlg-content', parent.viewerObj.element);\n var imgWrap = select('.e-image-wrap', parent.viewerObj.element);\n var cssObj = window.getComputedStyle(content, null);\n var paddingWidth = cssObj ? (2 * parseFloat(cssObj.paddingRight)) : 36;\n var paddingHeight = cssObj ? (2 * parseFloat(cssObj.paddingBottom)) : 20;\n imgWrap.style.width = (content.offsetWidth - paddingWidth) + 'px';\n imgWrap.style.height = (content.offsetHeight - paddingHeight) + 'px';\n}\n","import { ListBase } from '@syncfusion/ej2-lists';\nimport { createElement, select, selectAll, EventHandler, KeyboardEvents, closest, Draggable } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, addClass, removeClass, Touch, isVisible } from '@syncfusion/ej2-base';\nimport { getValue, setValue, remove } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { read, GetDetails, Delete } from '../common/operations';\nimport { doRename, getAccessClass, getPathObject, getFullPath, getDirectoryPath, rename, doDownload, getItemName } from '../common/index';\nimport { removeBlur, cutFiles, copyFiles, addBlur, openSearchFolder, removeActive, pasteHandler } from '../common/index';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getModule } from '../common/index';\nimport { updateRenamingData, doDeleteFiles, doDownloadFiles } from '../common/index';\nimport { openAction, fileType, refresh, getImageUrl, getSortedData, createDeniedDialog, updateLayout } from '../common/utility';\nimport { createEmptyElement, hasReadAccess, hasEditAccess } from '../common/utility';\nimport { createDialog, createImageDialog } from '../pop-up/dialog';\n/**\n * LargeIconsView module\n */\nvar LargeIconsView = /** @class */ (function () {\n /**\n * Constructor for the LargeIcons module.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n function LargeIconsView(parent) {\n this.isInteraction = true;\n this.uploadOperation = false;\n this.count = 0;\n this.isRendered = true;\n this.tapCount = 0;\n this.isSelectAllCalled = false;\n this.isPasteOperation = false;\n this.isInteracted = true;\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n addClass([this.element], CLS.LARGE_ICONS);\n this.addEventListener();\n this.keyConfigs = {\n end: 'end',\n home: 'home',\n tab: 'tab',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n ctrlUp: 'ctrl+uparrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftLeft: 'shift+leftarrow',\n shiftRight: 'shift+rightarrow',\n shiftUp: 'shift+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csLeft: 'ctrl+shift+leftarrow',\n csRight: 'ctrl+shift+rightarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n ctrlA: 'ctrl+a',\n enter: 'enter',\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n f2: 'f2',\n shiftdel: 'shift+delete',\n back: 'backspace',\n ctrlD: 'ctrl+d'\n };\n }\n LargeIconsView.prototype.render = function (args) {\n this.parent.visitedItem = null;\n this.startItem = null;\n showSpinner(this.parent.element);\n if (this.parent.view === 'LargeIcons') {\n this.resetMultiSelect();\n this.element.setAttribute('tabindex', '0');\n if (this.listObj) {\n this.unWireEvents();\n this.removeEventListener();\n }\n this.parent.notify(events.hideLayout, {});\n var iconsView = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n var ul = select('ul', iconsView);\n if (ul) {\n remove(ul);\n }\n this.listObj = {\n ariaAttributes: {\n itemRole: 'option', listRole: 'listbox', itemText: '',\n groupItemRole: 'group', wrapperRole: ''\n },\n showIcon: true,\n fields: { text: 'name', iconCss: '_fm_icon', imageUrl: '_fm_imageUrl', htmlAttributes: '_fm_htmlAttr' },\n sortOrder: this.parent.sortOrder,\n itemCreated: this.onItemCreated.bind(this),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer\n };\n this.items = [];\n this.items = this.renderList(args);\n if (this.parent.sortComparer && this.parent.sortBy !== 'None') {\n this.items = this.allItems = DataUtil.sort(this.items, this.parent.sortBy, this.comparer.bind(this));\n }\n else {\n this.items = this.allItems = getSortedData(this.parent, this.items);\n }\n iconsView.classList.remove(CLS.DISPLAY_NONE);\n if (this.parent.enableVirtualization && this.allItems.length > 0) {\n this.parent.virtualizationModule.setUIVirtualization();\n }\n this.listElements = ListBase.createListFromJson(createElement, this.items, this.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.listElements));\n this.element.appendChild(this.listElements);\n this.listElements.setAttribute('aria-label', 'listbox');\n this.preventImgDrag();\n this.createDragObj();\n if (this.itemList.length === 0) {\n var emptyList = this.element.querySelector('.' + CLS.LIST_PARENT);\n this.element.removeChild(emptyList);\n createEmptyElement(this.parent, this.element, args);\n }\n else if (this.itemList.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n if (this.isPasteOperation === true) {\n this.selectItems(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n /* istanbul ignore next */\n if (this.uploadOperation === true) {\n this.selectItems(this.parent.uploadItem);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.count++;\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.parent.activeModule = 'largeiconsview';\n }\n for (var i = 0; i < activeEle.length; i++) {\n activeEle[i].setAttribute('aria-selected', 'true');\n }\n this.element.style.maxHeight = '100%';\n this.getItemCount();\n this.addEventListener();\n this.wireEvents();\n if (this.parent.enableVirtualization && this.allItems.length > 0) {\n this.parent.virtualizationModule.setUlElementHeight();\n this.parent.virtualizationModule.wireScrollEvent(false);\n }\n this.isRendered = true;\n hideSpinner(this.parent.element);\n if (this.parent.selectedItems.length) {\n this.checkItem();\n }\n }\n };\n LargeIconsView.prototype.comparer = function (x, y) {\n if (this.parent.sortOrder === 'Descending') {\n var z = x;\n x = y;\n y = z;\n }\n return this.parent.sortComparer(x, y);\n };\n LargeIconsView.prototype.preventImgDrag = function () {\n var i = 0;\n while (i < this.itemList.length) {\n if (this.itemList[i].querySelector('img')) {\n /* istanbul ignore next */\n this.itemList[i].ondragstart = function () { return false; };\n }\n i++;\n }\n };\n LargeIconsView.prototype.createDragObj = function () {\n var _this = this;\n if (this.listObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.listElements, {\n enableTailMode: true,\n distance: 5,\n enableAutoScroll: false,\n dragTarget: '.' + CLS.LARGE_ICON,\n helper: this.dragHelper.bind(this),\n cursorAt: this.parent.dragCursorPosition,\n dragArea: this.parent.element,\n dragStop: dragStopHandler.bind(this, this.parent),\n drag: draggingHandler.bind(this, this.parent),\n clone: true,\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n }\n });\n }\n else if (this.dragObj && !this.parent.allowDragAndDrop) {\n this.dragObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = closest(dragTarget, '.e-list-item');\n if (!dragLi) {\n return null;\n }\n if (dragLi && !dragLi.classList.contains('e-active')) {\n this.setFocus(dragLi);\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n for (var i = 0; i < activeEle.length; i++) {\n this.parent.dragData.push(this.getItemObject(activeEle[parseInt(i.toString(), 10)]));\n this.parent.activeElements.push(activeEle[i]);\n }\n getModule(this.parent, dragLi);\n this.parent.dragPath = this.parent.path;\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n LargeIconsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, '.e-list-item');\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (dropLi) {\n var info = this.getItemObject(dropLi);\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n else {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n LargeIconsView.prototype.getModuleName = function () {\n return 'largeiconsview';\n };\n LargeIconsView.prototype.onItemCreated = function (args) {\n args.item.removeAttribute('aria-level');\n if (!this.parent.showFileExtension && getValue('isFile', args.curData)) {\n var textEle = args.item.querySelector('.' + CLS.LIST_TEXT);\n var txt = getValue('name', args.curData);\n var type = getValue('type', args.curData);\n if (txt.indexOf(type) !== -1) {\n textEle.innerHTML = txt.substr(0, txt.length - type.length);\n }\n }\n this.renderCheckbox(args);\n var eventArgs = {\n element: args.item,\n fileDetails: args.curData,\n module: 'LargeIconsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n LargeIconsView.prototype.renderCheckbox = function (args) {\n if (!this.parent.showItemCheckBoxes) {\n return;\n }\n var checkElement = createCheckBox(createElement, false, {\n checked: false,\n cssClass: 'e-small'\n });\n checkElement.setAttribute('role', 'checkbox');\n checkElement.setAttribute('aria-checked', 'false');\n checkElement.setAttribute('aria-label', 'checkbox');\n args.item.firstElementChild.insertBefore(checkElement, args.item.firstElementChild.childNodes[0]);\n };\n LargeIconsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.destroy();\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.render(args);\n /* istanbul ignore next */\n if (getValue('name', args) === 'layout-change' && this.parent.fileAction === 'move' &&\n this.parent.isCut && this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n var indexes = this.getIndexes(this.parent.selectedNodes);\n var length_1 = 0;\n while (length_1 < indexes.length) {\n addBlur(this.itemList[indexes[length_1]]);\n length_1++;\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.element.focus();\n }\n this.checkItem();\n this.parent.isLayoutChange = false;\n }\n else {\n this.element.setAttribute('tabindex', '-1');\n }\n };\n LargeIconsView.prototype.checkItem = function () {\n var checkEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (checkEle) {\n var checkLength = 0;\n while (checkLength < checkEle.length) {\n this.checkState(checkEle[checkLength], true);\n checkLength++;\n }\n }\n };\n LargeIconsView.prototype.renderList = function (args) {\n var i = 0;\n var items = JSON.parse(JSON.stringify(args.files));\n while (i < items.length) {\n var icon = fileType(items[i]);\n var name_1 = getValue('name', items[i]);\n var selected = getItemName(this.parent, items[i]);\n var className = ((this.parent.selectedItems &&\n this.parent.selectedItems.indexOf(selected) !== -1)) ?\n CLS.LARGE_ICON + ' e-active' : CLS.LARGE_ICON;\n if (!hasEditAccess(items[i])) {\n className += ' ' + getAccessClass(items[i]);\n }\n if (icon === CLS.ICON_IMAGE && this.parent.showThumbnail && hasReadAccess(items[i])) {\n var imgUrl = getImageUrl(this.parent, items[i]);\n setValue('_fm_imageUrl', imgUrl, items[i]);\n setValue('_fm_imageAttr', { alt: name_1 }, items[i]);\n }\n else {\n setValue('_fm_icon', icon, items[i]);\n }\n setValue('_fm_htmlAttr', { class: className, title: name_1 }, items[i]);\n i++;\n }\n return items;\n };\n LargeIconsView.prototype.onFinalizeEnd = function (args) {\n this.render(args);\n };\n LargeIconsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.clearSelect();\n this.selectItems([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n this.parent.largeiconsviewModule.element.focus();\n this.parent.activeModule = 'largeiconsview';\n };\n LargeIconsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n this.updateSelectedData();\n }\n };\n LargeIconsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.clearSelect();\n };\n LargeIconsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n };\n LargeIconsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'largeiconsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n LargeIconsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n /* istanbul ignore next */\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '') {\n this.parent.searchedItems = [];\n }\n if (this.parent.view === 'LargeIcons') {\n removeBlur(this.parent);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onLayoutChange(args);\n if (this.parent.renamedItem) {\n this.clearSelect();\n this.addSelection(this.parent.renamedItem);\n }\n }\n };\n LargeIconsView.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'largeiconsview') {\n this.doOpenAction(args.target);\n }\n };\n LargeIconsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'LargeIcons' && this.element) {\n this.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n LargeIconsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.startItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n var eveArgs = { ctrlKey: true, shiftKey: true };\n this.doSelection(lastItem, eveArgs);\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.clearSelection();\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n LargeIconsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onSearch = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n this.parent.searchedItems = args.files;\n this.onLayoutChange(args);\n }\n };\n LargeIconsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n };\n LargeIconsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.updateSelectedData();\n };\n LargeIconsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'LargeIcons' && !isNOU(this.listObj) &&\n this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered\n && this.parent.sortBy === 'filterPath') {\n this.parent.sortBy = 'name';\n this.parent.notify(events.sortByChange, {});\n }\n };\n LargeIconsView.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.search, this.onSearch);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.splitterResize, this.splitterResizeHandler);\n this.parent.off(events.resizeEnd, this.resizeHandler);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n this.parent.off(events.filterEnd, this.onPathChanged);\n };\n LargeIconsView.prototype.addEventListener = function () {\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.search, this.onSearch, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.splitterResize, this.splitterResizeHandler, this);\n this.parent.on(events.resizeEnd, this.resizeHandler, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n };\n LargeIconsView.prototype.onActionFailure = function () { this.isInteraction = true; this.isInteracted = true; };\n LargeIconsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var ele = closest(args.target, 'li');\n this.parent.itemData = [this.getItemObject(ele)];\n }\n };\n LargeIconsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.updateSelectedData();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n LargeIconsView.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath === '') ? [getPathObject(this.parent)] :\n [this.getItemObject(select('.e-active', this.element))];\n }\n };\n LargeIconsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeRecords = [];\n this.parent.activeElements = [];\n for (var i = 0; i < activeEle.length; i++) {\n this.parent.activeElements.push(activeEle[i]);\n this.parent.activeRecords.push(this.getItemObject(activeEle[i]));\n }\n }\n };\n LargeIconsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath ||\n this.parent.path === getDirectoryPath(this.parent, args) || this.parent.hasId) {\n this.onPathChanged(args);\n }\n }\n };\n LargeIconsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n LargeIconsView.prototype.onPropertyChanged = function (e) {\n var currentSelected;\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'selectedItems':\n this.isInteraction = false;\n this.isInteracted = false;\n currentSelected = isNOU(this.parent.selectedItems) ? [] : this.parent.selectedItems.slice(0);\n currentSelected = this.parent.allowMultiSelection ? currentSelected :\n currentSelected.slice(currentSelected.length - 1);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onClearAllInit();\n if (currentSelected.length) {\n this.selectItems(currentSelected);\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n this.isInteraction = true;\n this.isInteracted = true;\n break;\n case 'showThumbnail':\n refresh(this.parent);\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n case 'showItemCheckBoxes':\n if (this.parent.view !== 'LargeIcons') {\n break;\n }\n refresh(this.parent);\n break;\n case 'view':\n updateLayout(this.parent, 'LargeIcons');\n break;\n }\n }\n };\n LargeIconsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.listObj) {\n this.unWireEvents();\n }\n this.startItem = null;\n this.listElements = null;\n };\n LargeIconsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n };\n LargeIconsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onMouseOver = function (e) {\n var targetEle = closest(e.target, '.e-list-item');\n removeBlur(this.parent, 'hover');\n if (targetEle !== null) {\n targetEle.classList.add(CLS.HOVER);\n }\n };\n LargeIconsView.prototype.wireClickEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n this.clickObj = new Touch(this.element, {\n tap: function (eve) {\n if (_this.parent.isDevice) {\n _this.tapCount = eve.tapCount;\n _this.tapEvent = eve;\n setTimeout(function () {\n if (_this.tapCount > 0) {\n _this.doTapAction(_this.tapEvent);\n }\n _this.tapCount = 0;\n }, 350);\n }\n else {\n if (eve.tapCount === 2 && eve.originalEvent.which !== 3) {\n _this.dblClickHandler(eve);\n }\n else {\n _this.clickHandler(eve);\n }\n }\n },\n tapHold: function (e) {\n if (_this.parent.isDevice) {\n _this.multiSelect = _this.parent.allowMultiSelection ? true : false;\n if (_this.parent.allowMultiSelection) {\n addClass([_this.parent.element], CLS.MULTI_SELECT);\n }\n _this.clickHandler(e);\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.doTapAction = function (eve) {\n var target = eve.originalEvent.target;\n var item = closest(target, '.' + CLS.LIST_ITEM);\n if (this.multiSelect || target.classList.contains(CLS.LIST_PARENT) || isNOU(item)) {\n this.clickHandler(eve);\n }\n else {\n this.parent.isFile = false;\n this.updateType(item);\n if (!this.parent.isFile) {\n this.dblClickHandler(eve);\n }\n else if (eve.tapCount === 2) {\n this.clickHandler(eve);\n this.dblClickHandler(eve);\n }\n else {\n this.clickHandler(eve);\n }\n }\n };\n LargeIconsView.prototype.clickHandler = function (e) {\n var target = e.originalEvent.target;\n removeBlur(this.parent, 'hover');\n this.doSelection(target, e.originalEvent);\n this.parent.activeModule = 'largeiconsview';\n };\n /**\n *\n * @param {Element} target - specifies the target element.\n * @param {TouchEventArgs | MouseEventArgs | KeyboardEventArgs} e - specifies event arguements.\n * @returns {void}\n * @hidden\n */\n LargeIconsView.prototype.doSelection = function (target, e) {\n var item = closest(target, '.' + CLS.LIST_ITEM);\n var cList = target.classList;\n this.parent.isFile = false;\n var action = 'select';\n if (e.which === 3 && !isNOU(item) && item.classList.contains(CLS.ACTIVE)) {\n this.addActive(item);\n this.updateType(item);\n return;\n }\n else if (!isNOU(item)) {\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)\n && (e.ctrlKey || target.classList.contains(CLS.CHECK))) {\n action = 'unselect';\n }\n if (e.ctrlKey && e.shiftKey) {\n this.isSelectAllCalled = true;\n }\n var fileSelectionArgs = this.triggerSelection(action, item);\n if (fileSelectionArgs.cancel !== true) {\n if ((!this.parent.allowMultiSelection || (!this.multiSelect && (e && !e.ctrlKey)))\n && !cList.contains(CLS.FRAME)) {\n this.updateType(item);\n this.clearSelect();\n }\n if (this.parent.allowMultiSelection && e.shiftKey) {\n if (!(e && e.ctrlKey)) {\n this.clearSelect();\n }\n if (!this.startItem) {\n this.startItem = item;\n }\n var startIndex = this.itemList.indexOf(this.startItem);\n var endIndex = this.itemList.indexOf(item);\n if (startIndex > endIndex) {\n for (var i = startIndex; i >= endIndex; i--) {\n this.addActive(this.itemList[i]);\n }\n }\n else {\n for (var i = startIndex; i <= endIndex; i++) {\n this.addActive(this.itemList[i]);\n }\n }\n this.addFocus(this.itemList[endIndex]);\n }\n else {\n this.startItem = item;\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)) {\n this.removeActive(item);\n }\n else {\n this.addActive(item);\n }\n this.addFocus(item);\n }\n if (this.parent.selectedItems.length === 0) {\n this.resetMultiSelect();\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect(action, item);\n }\n }\n else {\n if (this.parent.selectedItems.length === this.itemList.length) {\n this.isSelectAllCalled = true;\n }\n this.clearSelection();\n }\n if (!isNOU(item)) {\n this.isSelectAllCalled = false;\n this.updateType(item);\n }\n };\n LargeIconsView.prototype.dblClickHandler = function (e) {\n this.parent.activeModule = 'largeiconsview';\n var target = e.originalEvent.target;\n this.doOpenAction(target);\n };\n LargeIconsView.prototype.clearSelection = function () {\n this.clearSelect();\n this.resetMultiSelect();\n this.parent.notify(events.selectionChanged, {});\n };\n LargeIconsView.prototype.resetMultiSelect = function () {\n this.multiSelect = false;\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n };\n LargeIconsView.prototype.doOpenAction = function (target) {\n var _this = this;\n if (isNOU(target)) {\n return;\n }\n var item = closest(target, '.' + CLS.LIST_ITEM);\n this.parent.isFile = false;\n if (!isNOU(item)) {\n this.updateType(item);\n var details_1 = this.getItemObject(item);\n if (!hasReadAccess(details_1)) {\n createDeniedDialog(this.parent, details_1, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: details_1, module: 'LargeIconsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var text = getValue('name', details_1);\n if (!_this.parent.isFile) {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', details_1);\n _this.parent.oldPath = _this.parent.path;\n var newPath = _this.parent.path + (isNOU(id) ? text : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(text);\n _this.parent.pathId.push(getValue('_fm_id', details_1));\n _this.parent.itemData = [details_1];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, details_1);\n }\n _this.parent.isFiltered = false;\n _this.parent.setProperties({ selectedItems: [] }, true);\n }\n else {\n var icon = fileType(details_1);\n if (icon === CLS.ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, details_1);\n createImageDialog(_this.parent, text, imgUrl);\n }\n }\n }\n });\n }\n };\n LargeIconsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.keydownActionHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'moveDown':\n case 'moveLeft':\n case 'moveRight':\n case 'moveUp':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.keyActionHandler = function (e) {\n var _this = this;\n if (!this.isRendered) {\n return;\n }\n var fItem = this.getFocusedItem();\n var firstItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n switch (e.action) {\n case 'end':\n if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTo(0, this.element.firstElementChild.scrollHeight);\n setTimeout(function () {\n _this.navigateItem(_this.itemList[_this.itemList.length - 1]);\n }, 10);\n }\n else {\n this.navigateItem(lastItem);\n }\n break;\n case 'home':\n if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTop = 0;\n setTimeout(function () {\n _this.navigateItem(_this.itemList[0]);\n }, 10);\n }\n else {\n this.navigateItem(firstItem);\n }\n break;\n case 'tab':\n if (!isNOU(fItem)) {\n this.addFocus(fItem);\n }\n else if (!isNOU(firstItem)) {\n this.addFocus(firstItem);\n }\n break;\n case 'moveDown':\n this.navigateDown(fItem, true);\n break;\n case 'moveLeft':\n this.navigateRight(fItem, false);\n break;\n case 'moveRight':\n this.navigateRight(fItem, true);\n break;\n case 'moveUp':\n this.navigateDown(fItem, false);\n break;\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n this.csEndKey(lastItem, e);\n break;\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n this.csHomeKey(firstItem, e);\n break;\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n this.csDownKey(fItem, e);\n break;\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n this.csLeftKey(fItem, e);\n break;\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n this.csRightKey(fItem, e);\n break;\n case 'ctrlUp':\n case 'shiftUp':\n case 'csUp':\n this.csUpKey(fItem, e);\n break;\n case 'space':\n this.spaceKey(fItem);\n break;\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n if (!isNOU(fItem)) {\n this.doSelection(fItem, e);\n }\n break;\n case 'ctrlA':\n this.ctrlAKey(firstItem, lastItem);\n break;\n case 'enter':\n this.doOpenAction(this.parent.visitedItem ? this.parent.visitedItem : this.getVisitedItem());\n break;\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n case 'back':\n this.parent.traverseBackward();\n break;\n }\n };\n LargeIconsView.prototype.doDownload = function () {\n this.updateSelectedData();\n doDownload(this.parent);\n };\n LargeIconsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.updateSelectedData();\n var data = this.parent.itemData;\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(this.parent, data[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n LargeIconsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n LargeIconsView.prototype.updateRenameData = function () {\n var item = select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n var data = this.getItemObject(item);\n updateRenamingData(this.parent, data);\n };\n LargeIconsView.prototype.getVisitedItem = function () {\n var item = this.parent.selectedItems[this.parent.selectedItems.length - 1];\n var indexes = this.getIndexes([item], this.parent.hasId);\n return this.itemList[indexes[0]];\n };\n LargeIconsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.FOCUS, this.element);\n };\n LargeIconsView.prototype.getActiveItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n };\n LargeIconsView.prototype.getFirstItem = function () {\n return this.itemList[0];\n };\n LargeIconsView.prototype.getLastItem = function () {\n return this.itemList[this.itemList.length - 1];\n };\n LargeIconsView.prototype.navigateItem = function (item) {\n this.setFocus(item);\n };\n LargeIconsView.prototype.navigateDown = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards, this.perRow);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.navigateRight = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.getNextItem = function (li, isTowards, perRow) {\n if (isNOU(li)) {\n return this.getFocusedItem() || this.getActiveItem() || this.getFirstItem();\n }\n var index = this.itemList.indexOf(li);\n var nextItem;\n do {\n if (isTowards) {\n index = perRow ? index + perRow : index + 1;\n }\n else {\n index = perRow ? index - perRow : index - 1;\n }\n nextItem = this.itemList[index];\n if (this.parent.enableVirtualization && isNOU(nextItem)) {\n var marginValue = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-bottom'), 10);\n var scrollHeight = this.itemList[0].getBoundingClientRect().height + marginValue;\n this.element.firstElementChild.scrollTo(this.element.firstElementChild.scrollTop, this.element.firstElementChild.scrollTop + scrollHeight);\n }\n if (isNOU(nextItem)) {\n return li;\n }\n } while (!isVisible(nextItem));\n return nextItem;\n };\n LargeIconsView.prototype.setFocus = function (nextItem) {\n if (!isNOU(nextItem)) {\n var fileSelectionArgs = this.triggerSelection('select', nextItem);\n if (fileSelectionArgs.cancel !== true) {\n this.startItem = nextItem;\n this.clearSelect();\n this.addActive(nextItem);\n this.addFocus(nextItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', nextItem);\n }\n }\n };\n LargeIconsView.prototype.spaceKey = function (fItem) {\n if (!isNOU(fItem) && !fItem.classList.contains(CLS.ACTIVE)) {\n var fileSelectionArgs = this.triggerSelection('select', fItem);\n if (fileSelectionArgs.cancel !== true) {\n this.addActive(fItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', fItem);\n }\n }\n };\n LargeIconsView.prototype.ctrlAKey = function (firstItem, lastItem) {\n if (this.parent.allowMultiSelection && !isNOU(firstItem)) {\n this.startItem = firstItem;\n var eveArgs = { ctrlKey: true, shiftKey: true };\n var liParent = this.element.querySelector('.' + CLS.LIST_PARENT);\n var liScrPos = liParent.scrollTop;\n var getCurFocusedItem = this.getFocusedItem();\n this.doSelection(lastItem, eveArgs);\n liParent.scrollTop = liScrPos;\n if (!isNOU(getCurFocusedItem)) {\n this.addFocus(getCurFocusedItem);\n }\n }\n };\n LargeIconsView.prototype.csEndKey = function (lastItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(lastItem);\n }\n else if (!isNOU(lastItem)) {\n if (e.action === 'ctrlEnd') {\n this.addFocus(lastItem);\n }\n else {\n this.doSelection(lastItem, e);\n }\n }\n };\n LargeIconsView.prototype.csHomeKey = function (firstItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(firstItem);\n }\n else if (!isNOU(firstItem)) {\n if (e.action === 'ctrlHome') {\n this.addFocus(firstItem);\n }\n else {\n this.doSelection(firstItem, e);\n }\n }\n };\n LargeIconsView.prototype.csDownKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, true);\n }\n else {\n var dItem = this.getNextItem(fItem, true, this.perRow);\n if (!isNOU(dItem)) {\n if (e.action === 'ctrlDown') {\n this.addFocus(dItem);\n }\n else {\n this.doSelection(dItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csLeftKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, false);\n }\n else {\n var lItem = this.getNextItem(fItem, false);\n if (!isNOU(lItem)) {\n if (e.action === 'ctrlLeft') {\n this.addFocus(lItem);\n }\n else {\n this.doSelection(lItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csRightKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, true);\n }\n else {\n var rItem = this.getNextItem(fItem, true);\n if (!isNOU(rItem)) {\n if (e.action === 'ctrlRight') {\n this.addFocus(rItem);\n }\n else {\n this.doSelection(rItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csUpKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, false);\n }\n else {\n var uItem = this.getNextItem(fItem, false, this.perRow);\n if (!isNOU(uItem)) {\n if (e.action === 'ctrlUp') {\n this.addFocus(uItem);\n }\n else {\n this.doSelection(uItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.addActive = function (nextItem) {\n if (!isNOU(nextItem)) {\n if (!nextItem.classList.contains(CLS.ACTIVE)) {\n this.parent.selectedItems.push(this.getDataName(nextItem));\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n addClass([nextItem], [CLS.ACTIVE]);\n nextItem.setAttribute('aria-selected', 'true');\n this.checkState(nextItem, true);\n }\n this.parent.visitedItem = nextItem;\n }\n };\n LargeIconsView.prototype.removeActive = function (preItem) {\n if (!isNOU(preItem)) {\n removeClass([preItem], [CLS.ACTIVE]);\n if (this.parent.allowMultiSelection) {\n preItem.setAttribute('aria-selected', 'false');\n }\n else {\n preItem.removeAttribute('aria-selected');\n }\n this.checkState(preItem, false);\n var index = this.parent.selectedItems.indexOf(this.getDataName(preItem));\n if (index > -1) {\n this.parent.selectedItems.splice(index, 1);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n this.parent.visitedItem = null;\n }\n };\n LargeIconsView.prototype.getDataName = function (item) {\n var data = this.getItemObject(item);\n return getItemName(this.parent, data);\n };\n LargeIconsView.prototype.addFocus = function (item) {\n this.element.setAttribute('tabindex', '-1');\n var fItem = this.getFocusedItem();\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS]);\n }\n addClass([item], [CLS.FOCUS]);\n item.setAttribute('tabindex', '0');\n item.focus();\n };\n LargeIconsView.prototype.checkState = function (item, toCheck) {\n if (!this.parent.showItemCheckBoxes) {\n return;\n }\n var checkEle = select('.' + CLS.FRAME, item);\n if (isNOU(checkEle)) {\n return;\n }\n if (toCheck) {\n if (!checkEle.classList.contains(CLS.CHECK)) {\n addClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'true');\n }\n }\n else {\n if (checkEle.classList.contains(CLS.CHECK)) {\n removeClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'false');\n }\n }\n };\n LargeIconsView.prototype.clearSelect = function () {\n var eles = Array.prototype.slice.call(selectAll('.' + CLS.ACTIVE, this.listElements));\n var fileSelectionArgs;\n if (eles.length !== 0) {\n fileSelectionArgs = this.triggerSelection('unselect', eles[0]);\n if (fileSelectionArgs.cancel !== true) {\n for (var i = 0, len = eles.length; i < len; i++) {\n this.removeActive(eles[i]);\n }\n }\n this.triggerSelect('unselect', eles[0]);\n }\n };\n LargeIconsView.prototype.resizeHandler = function () {\n this.getItemCount();\n };\n LargeIconsView.prototype.splitterResizeHandler = function () {\n this.getItemCount();\n };\n LargeIconsView.prototype.getItemCount = function () {\n var perRow = 1;\n if (this.itemList) {\n for (var i = 0, len = this.itemList.length - 1; i < len; i++) {\n if (this.itemList[i].getBoundingClientRect().top === this.itemList[i + 1].getBoundingClientRect().top) {\n perRow++;\n }\n else {\n break;\n }\n }\n }\n this.perRow = perRow;\n };\n LargeIconsView.prototype.triggerSelection = function (action, item) {\n var data = [];\n if (this.isSelectAllCalled) {\n for (var i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n }\n else {\n data[0] = this.getItemObject(item);\n }\n var eventArgs = { action: action, fileDetails: data.length > 1\n ? data : data[0], isInteracted: this.isInteraction, cancel: false, target: this.isSelectAllCalled ? null\n : item\n };\n this.parent.trigger('fileSelection', eventArgs);\n this.isInteraction = true;\n return eventArgs;\n };\n LargeIconsView.prototype.triggerSelect = function (action, item) {\n var data = [];\n if (this.isSelectAllCalled) {\n for (var i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n this.isSelectAllCalled = false;\n }\n else {\n data[0] = this.getItemObject(item);\n }\n this.parent.visitedData = data.length > 1 ? data[data.length - 1] : data[0];\n var eventArgs = { action: action, fileDetails: data.length > 1\n ? data\n : data[0], isInteracted: this.isInteracted };\n this.parent.trigger('fileSelect', eventArgs);\n this.isInteracted = true;\n };\n LargeIconsView.prototype.selectItems = function (items) {\n var indexes = this.getIndexes(items, this.parent.hasId);\n for (var j = 0, len = indexes.length; j < len; j++) {\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[indexes[j]], eveArgs);\n }\n };\n LargeIconsView.prototype.getIndexes = function (items, byId) {\n var indexes = [];\n var filter = byId ? 'id' : 'name';\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filter, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n return indexes;\n };\n LargeIconsView.prototype.getItemObject = function (item) {\n var index = this.itemList.indexOf(item);\n return this.items[index];\n };\n LargeIconsView.prototype.addSelection = function (data) {\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var newData = new DataManager(this.items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (newData.length > 0) {\n resultData = new DataManager(newData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n var index = this.items.indexOf(resultData[0]);\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[index], eveArgs);\n }\n };\n LargeIconsView.prototype.updateSelectedData = function () {\n var data = [];\n var items = selectAll('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n for (var i = 0; i < items.length; i++) {\n data[i] = this.getItemObject(items[i]);\n }\n this.parent.itemData = data;\n };\n LargeIconsView.prototype.onMethodCall = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n var action = getValue('action', args);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', args));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', args));\n break;\n case 'openFile':\n this.openFile(getValue('id', args));\n break;\n case 'renameFile':\n this.isInteraction = false;\n this.isInteracted = false;\n this.renameFile(getValue('id', args), getValue('newName', args));\n break;\n case 'createFolder':\n this.isInteraction = false;\n this.isInteracted = false;\n break;\n case 'clearSelection':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onClearAllInit();\n break;\n case 'selectAll':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onSelectAllInit();\n break;\n }\n };\n LargeIconsView.prototype.getItemsIndex = function (items) {\n var indexes = [];\n var isFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filterName = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !isFilter) {\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filterName, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n }\n else {\n for (var i = 0, len = this.items.length; i < len; i++) {\n var name_2 = getValue('filterPath', this.items[i]) + getValue('name', this.items[i]);\n if ((items.indexOf(name_2) !== -1) || (items.indexOf(getValue(filterName, this.items[i])) !== -1)) {\n indexes.push(i);\n }\n }\n }\n return indexes;\n };\n LargeIconsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n var indexes = this.getItemsIndex(ids);\n if (indexes.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < indexes.length; i++) {\n data[i] = this.items[indexes[i]];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n LargeIconsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n var index = this.getItemsIndex(ids);\n if (index.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < index.length; i++) {\n data[i] = this.items[index[i]];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n LargeIconsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n var indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n this.doOpenAction(this.itemList[indexes[0]]);\n }\n };\n LargeIconsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n var indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n updateRenamingData(this.parent, this.items[indexes[0]]);\n if (isNOU(name)) {\n doRename(this.parent);\n }\n else {\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n rename(this.parent, this.parent.path, name);\n }\n }\n }\n };\n return LargeIconsView;\n}());\nexport { LargeIconsView };\n","import { EventHandler, closest, isNullOrUndefined, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, addClass, removeClass, remove, createElement } from '@syncfusion/ej2-base';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { read } from '../common/operations';\nimport { getLocaleText, searchWordHandler } from '../common/utility';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * BreadCrumbBar module\n */\nvar BreadCrumbBar = /** @class */ (function () {\n /**\n * constructor for addressbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies parent element.\n * @private\n *\n */\n function BreadCrumbBar(parent) {\n this.addressPath = '';\n this.addressBarLink = '';\n this.searchTimer = null;\n this.searchWrapWidth = null;\n this.parent = parent;\n this.keyConfigs = {\n enter: 'enter'\n };\n this.render();\n }\n BreadCrumbBar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var value = e.newProp.searchSettings;\n switch (prop) {\n case 'searchSettings':\n if (!isNullOrUndefined(value.allowSearchOnTyping)) {\n this.searchEventBind(value.allowSearchOnTyping);\n }\n if (this.parent.breadcrumbbarModule.searchObj.value && this.parent.breadcrumbbarModule.searchObj.value !== '' &&\n !(!isNullOrUndefined(value.allowSearchOnTyping) && isNullOrUndefined(value.filterType) &&\n isNullOrUndefined(value.ignoreCase))) {\n searchWordHandler(this.parent, this.parent.breadcrumbbarModule.searchObj.value, false);\n }\n break;\n }\n }\n };\n BreadCrumbBar.prototype.render = function () {\n this.addEventListener();\n };\n BreadCrumbBar.prototype.onPathChange = function () {\n var pathNames = this.parent.pathNames;\n var paths = this.parent.path.split('/');\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var addressbarLI = null;\n var pathNamesLen = pathNames.length;\n if (pathNames.length > 0) {\n var id = '';\n for (var i = 0; i < pathNamesLen; i++) {\n var addressATag = null;\n addressbarLI = this.parent.createElement('li', { className: 'e-address-list-item' });\n for (var j = 0; j <= i; j++) {\n id = id + paths[j] + '/';\n }\n addressbarLI.setAttribute('data-utext', id);\n if (i !== 0) {\n var icon = createElement('span', { className: CLS.ICONS });\n addressbarLI.appendChild(icon);\n }\n if (pathNamesLen - i !== 1) {\n addressATag = createElement('a', { className: CLS.LIST_TEXT });\n addressbarLI.setAttribute('tabindex', '0');\n }\n else {\n addressATag = createElement('span', { className: CLS.LIST_TEXT });\n }\n id = '';\n addressATag.innerText = pathNames[i];\n addressbarLI.appendChild(addressATag);\n addressbarUL.appendChild(addressbarLI);\n }\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n if (!isNullOrUndefined(ulElement)) {\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n remove(ulElement);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n if (!searchWrap) {\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.appendChild(addressbarUL);\n }\n this.updateBreadCrumbBar(addressbarUL);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.updateBreadCrumbBar = function (addresBarUL) {\n var liElements = addresBarUL.querySelectorAll('li');\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n var style = window.getComputedStyle(ulElement, null);\n var pRight = parseFloat(style.getPropertyValue('padding-right'));\n var pLeft = parseFloat(style.getPropertyValue('padding-left'));\n var breadCrumbBarWidth = ulElement.offsetWidth - pRight - pLeft;\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var liElementsWidth = 0;\n var liElementsWidths = [];\n for (var i = 0; i < liElements.length; i++) {\n var width = liElements[i].clientWidth;\n liElementsWidths.push(width);\n liElementsWidth = liElementsWidth + width;\n }\n if (!isNullOrUndefined(ulElement)) {\n remove(ulElement);\n }\n var searchContainer = this.parent.createElement('div');\n searchContainer.setAttribute('class', 'e-search-wrap');\n var id = this.parent.element.id + CLS.SEARCH_ID;\n var searchInput = createElement('input', { id: id,\n attrs: { autocomplete: 'off', 'aria-label': getLocaleText(this.parent, 'Search') } });\n searchContainer.appendChild(searchInput);\n var searchEle = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap .e-input');\n if (isNullOrUndefined(searchEle)) {\n this.parent.breadCrumbBarNavigation.appendChild(searchContainer);\n var span = createElement('span', { className: 'e-icons e-fe-search' });\n EventHandler.add(span, 'click', this.onShowInput, this);\n searchInput.parentElement.insertBefore(span, searchInput);\n this.searchObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: getLocaleText(this.parent, 'Search'),\n focus: this.onFocus.bind(this),\n blur: this.onBlur.bind(this)\n });\n this.searchObj.appendTo('#' + this.parent.element.id + CLS.SEARCH_ID);\n this.searchEventBind(this.parent.searchSettings.allowSearchOnTyping);\n var search = this.searchObj.element.nextElementSibling;\n EventHandler.add(search, 'mousedown', this.searchChangeHandler.bind(this), this);\n EventHandler.add(this.searchObj.element, 'keyup', this.onKeyUp.bind(this), this);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n breadCrumbBarWidth = breadCrumbBarWidth - (this.searchWrapWidth ? this.searchWrapWidth : searchWrap.offsetWidth);\n if (liElementsWidth > breadCrumbBarWidth) {\n var i = liElements.length;\n while (i--) {\n var diff = breadCrumbBarWidth - liElementsWidths[i];\n if (diff > 40) {\n addressbarUL.insertBefore(liElements[i], addressbarUL.querySelector('li'));\n breadCrumbBarWidth = diff;\n }\n else {\n var items = [];\n for (var j = 0; j <= i; j++) {\n var liElement = liElements[j];\n items.push({\n text: liElement.innerText,\n utext: liElement.getAttribute('data-utext')\n });\n }\n var subMenuLi = this.parent.createElement('li', { className: 'e-breadcrumb-menu' });\n var attributes = { className: 'e-breadcrumb-submenu' };\n var subMenuSpan = this.parent.createElement('button', attributes);\n subMenuLi.appendChild(subMenuSpan);\n addressbarUL.insertBefore(subMenuLi, addressbarUL.querySelector('li'));\n this.subMenuObj = new DropDownButton({\n items: items,\n cssClass: 'e-caret-hide e-submenu',\n iconCss: CLS.ICON_BREADCRUMB,\n iconPosition: 'Top',\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.addSubMenuAttributes.bind(this),\n select: this.subMenuSelectOperations.bind(this)\n });\n this.subMenuObj.isStringTemplate = true;\n this.subMenuObj.appendTo(subMenuSpan);\n break;\n }\n }\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.insertBefore(addresBarUL, searchWrap);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onFocus = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.add('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onKeyUp = function () {\n this.parent.notify(events.pathColumn, { args: this.parent });\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onBlur = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.remove('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.subMenuSelectOperations = function (event) {\n var args = { target: event.element };\n this.addressPathClickHandler(args);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.addSubMenuAttributes = function (args) {\n args.element.setAttribute('data-utext', getValue('utext', args.item));\n var anchor = this.parent.createElement('a', { className: 'e-list-text' });\n args.element.appendChild(anchor);\n };\n BreadCrumbBar.prototype.searchEventBind = function (allow) {\n if (allow) {\n this.searchObj.input = this.searchChangeHandler.bind(this);\n this.searchObj.change = null;\n }\n else {\n this.searchObj.change = this.searchChangeHandler.bind(this);\n this.searchObj.input = null;\n }\n };\n BreadCrumbBar.prototype.searchChangeHandler = function (args) {\n var _this = this;\n if (!isNullOrUndefined(args.value)) {\n this.parent.isFiltered = false;\n if (this.parent.searchSettings.allowSearchOnTyping) {\n window.clearTimeout(this.searchTimer);\n this.searchTimer = window.setTimeout(function () { searchWordHandler(_this.parent, args.value, false); }, 300);\n }\n else {\n searchWordHandler(this.parent, args.value, false);\n }\n }\n };\n BreadCrumbBar.prototype.addressPathClickHandler = function (e) {\n var li = e.target;\n if (li.nodeName === 'LI' || li.nodeName === 'A') {\n var node = li.nodeName === 'LI' ? li.children[0] : li;\n if (!isNullOrUndefined(node)) {\n this.parent.isFiltered = false;\n var currentPath = this.updatePath(node);\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n this.triggerFileOpen(this.parent.itemData[0]);\n read(this.parent, events.pathChanged, currentPath);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n }\n };\n BreadCrumbBar.prototype.triggerFileOpen = function (data) {\n var eventArgs = { cancel: false, fileDetails: data, module: 'BreadCrumbBar' };\n delete eventArgs.cancel;\n this.parent.trigger('fileOpen', eventArgs);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onShowInput = function () {\n if (this.parent.isMobile) {\n if (this.parent.element.classList.contains(CLS.FILTER)) {\n removeClass([this.parent.element], CLS.FILTER);\n this.searchWrapWidth = null;\n }\n else {\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n this.searchWrapWidth = searchWrap.offsetWidth;\n addClass([this.parent.element], CLS.FILTER);\n this.searchObj.element.focus();\n }\n }\n };\n BreadCrumbBar.prototype.updatePath = function (list) {\n var li = closest(list, 'li');\n var liElementId = li.getAttribute('data-utext');\n this.addressBarLink = liElementId;\n var link = this.addressBarLink.split('/');\n var ids = this.parent.pathId;\n var names = this.parent.pathNames;\n this.parent.pathId = [];\n this.parent.pathNames = [];\n var newpath = '';\n for (var i = 0, len = link.length - 1; i < len; i++) {\n this.parent.pathId.push(ids[i]);\n this.parent.pathNames.push(names[i]);\n newpath += link[i] + '/';\n }\n this.parent.setProperties({ path: newpath }, true);\n return newpath;\n };\n BreadCrumbBar.prototype.onUpdatePath = function () {\n this.onPathChange();\n this.removeSearchValue();\n };\n BreadCrumbBar.prototype.onCreateEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onRenameEnd = function () {\n this.onPathChange();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDeleteEnd = function () {\n this.onUpdatePath();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.removeSearchValue = function () {\n this.parent.isFiltered = false;\n if (this.searchObj && (this.searchObj.value !== '' || this.searchObj.element.value !== '')) {\n this.searchObj.value = '';\n this.searchObj.element.value = '';\n this.searchObj.dataBind();\n }\n };\n BreadCrumbBar.prototype.onResize = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onPasteEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.addEventListener = function () {\n this.keyboardModule = new KeyboardEvents(this.parent.breadCrumbBarNavigation, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n EventHandler.add(this.parent.breadCrumbBarNavigation, 'click', this.addressPathClickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.pathChanged, this.onUpdatePath, this);\n this.parent.on(events.finalizeEnd, this.onUpdatePath, this);\n this.parent.on(events.refreshEnd, this.onUpdatePath, this);\n this.parent.on(events.openEnd, this.onUpdatePath, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.splitterResize, this.onResize, this);\n this.parent.on(events.pasteEnd, this.onPasteEnd, this);\n this.parent.on(events.resizeEnd, this.onResize, this);\n this.parent.on(events.searchTextChange, this.onSearchTextChange, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.layoutRefresh, this.onResize, this);\n this.parent.on(events.dropPath, this.onPathChange, this);\n };\n BreadCrumbBar.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'enter':\n this.addressPathClickHandler(e);\n break;\n }\n };\n BreadCrumbBar.prototype.removeEventListener = function () {\n this.keyboardModule.destroy();\n this.parent.off(events.pathChanged, this.onUpdatePath);\n this.parent.off(events.finalizeEnd, this.onUpdatePath);\n this.parent.off(events.refreshEnd, this.onUpdatePath);\n this.parent.off(events.openEnd, this.onUpdatePath);\n this.parent.off(events.pasteEnd, this.onPasteEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.splitterResize, this.onResize);\n this.parent.off(events.resizeEnd, this.onResize);\n this.parent.off(events.searchTextChange, this.onSearchTextChange);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.layoutRefresh, this.onResize);\n this.parent.off(events.dropPath, this.onPathChange);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var liEle = args.target.closest('li');\n this.parent.dropPath = this.updatePath((liEle.children[0]));\n this.parent.dropData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n this.triggerFileOpen(this.parent.dropData);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name\n * @private\n */\n BreadCrumbBar.prototype.getModuleName = function () {\n return 'breadcrumbbar';\n };\n BreadCrumbBar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n if (!isNullOrUndefined(this.searchObj)) {\n this.searchObj.destroy();\n }\n };\n BreadCrumbBar.prototype.onSearchTextChange = function (args) {\n this.searchObj.element.placeholder = (this.parent.searchSettings.placeholder != null) ? this.parent.searchSettings.placeholder : getLocaleText(this.parent, 'Search') + ' ' + getLocaleText(this.parent, args.cwd.name.toString());\n };\n return BreadCrumbBar;\n}());\nexport { BreadCrumbBar };\n","import { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, createElement, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, select } from '@syncfusion/ej2-base';\nimport { Download, GetDetails } from './../common/operations';\nimport { createDialog } from './dialog';\nimport { cutFiles, copyFiles, refresh, getPathObject, getLocaleText, updateLayout, getFullPath } from './../common/utility';\nimport { getCssClass, sortbyClickHandler, pasteHandler } from './../common/utility';\nimport { createDeniedDialog, createNewFolder, uploadItem, hasEditAccess, hasDownloadAccess } from './../common/utility';\nimport * as events from './../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * ContextMenu module\n */\nvar ContextMenu = /** @class */ (function () {\n /**\n * Constructor for the ContextMenu module\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @hidden\n */\n function ContextMenu(parent) {\n this.isMenuItemClicked = false;\n this.currentItems = [];\n this.currentElement = null;\n this.disabledItems = [];\n this.parent = parent;\n this.render();\n }\n ContextMenu.prototype.render = function () {\n this.keyConfigs = {\n downarrow: 'downarrow',\n uparrow: 'uparrown'\n };\n this.contextMenu = new Menu({\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n target: '#' + this.parent.element.id,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.onBeforeItemRender.bind(this),\n select: this.onSelect.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this),\n cssClass: getCssClass(this.parent, CLS.ROOT_POPUP)\n });\n this.contextMenu.isStringTemplate = true;\n this.contextMenu.appendTo('#' + this.parent.element.id + CLS.CONTEXT_MENU_ID);\n this.addEventListener();\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeItemRender = function (args) {\n if (args.item.id === this.getMenuId('largeiconsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'LargeIcons' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_LARGE + ' ' + CLS.MENU_ICON);\n }\n if (args.item.id === this.getMenuId('detailsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'Details' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_GRID + ' ' + CLS.MENU_ICON);\n }\n };\n ContextMenu.prototype.onBeforeClose = function (args) {\n var eventArgs = {\n cancel: false,\n element: args.element,\n event: args.event,\n isFocused: args.isFocused,\n fileDetails: [this.menuItemData],\n items: args.items,\n parentItem: args.parentItem,\n menuType: this.menuType\n };\n this.parent.trigger('menuClose', eventArgs, function (menuCloseArgs) {\n if (menuCloseArgs.cancel) {\n args.cancel = menuCloseArgs.cancel;\n return;\n }\n });\n this.menuTarget = null;\n if (!this.isMenuItemClicked && this.parent.pathId.length > 1 && this.parent.activeModule === 'navigationpane') {\n this.parent.pathId.pop();\n var parentKey = [];\n var itemKeys = Object.keys(this.parent.feParent);\n for (var _i = 0, itemKeys_1 = itemKeys; _i < itemKeys_1.length; _i++) {\n var item = itemKeys_1[_i];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var itemData = getValue(item, this.parent.feParent);\n if (this.parent.pathNames.indexOf(itemData.name) !== -1) {\n parentKey.push(itemData._fm_id);\n }\n }\n this.parent.pathId.push(parentKey[parentKey.length - 1]);\n this.parent.navigationpaneModule.treeObj.setProperties({ selectedNodes: [this.parent.pathId[this.parent.pathId.length - 1]] });\n }\n this.isMenuItemClicked = false;\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeOpen = function (args) {\n var _this = this;\n var selected = false;\n var uid;\n var data;\n var treeFolder = false;\n var target = args.event.target;\n this.menuTarget = this.targetNodeElement = target;\n this.currentElement = args.element;\n if (target.classList.contains('e-spinner-pane')) {\n target = this.parent.navigationpaneModule.activeNode.getElementsByClassName(CLS.FULLROW)[0];\n this.menuTarget = this.targetNodeElement = target;\n }\n this.targetElement = this.parent.view === 'Details' ? closest(target, 'tr.e-row') : target;\n if (this.parent.enableVirtualization && (target.classList.contains('e-virtual-bottom') || target.classList.contains('e-virtualtable'))) {\n target = target.parentElement.closest('div');\n }\n var view = this.getTargetView(target);\n this.updateActiveModule();\n /* istanbul ignore next */\n if (target.classList.contains(CLS.TREE_VIEW) || closest(target, 'th') ||\n (closest(target, '#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID)) ||\n (closest(target, '#' + this.parent.element.id + CLS.TOOLBAR_ID))) {\n args.cancel = true;\n }\n else if (!(this.parent.view === 'LargeIcons') && this.targetElement &&\n this.targetElement.classList.contains('e-emptyrow')) {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else if (closest(target, '.' + CLS.EMPTY)) {\n this.setLayoutItem(target);\n }\n else if (!target.classList.contains(CLS.MENU_ITEM) &&\n !target.classList.contains(CLS.MENU_ICON) && !target.classList.contains(CLS.SUBMENU_ICON)) {\n /* istanbul ignore next */\n if (this.parent.view === 'LargeIcons' && !isNOU(closest(target, 'li')) && !closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n var eveArgs = { ctrlKey: true, shiftKey: true };\n if (!closest(target, 'li').classList.contains('e-active')) {\n this.parent.largeiconsviewModule.doSelection(target, eveArgs);\n }\n data = this.parent.visitedData;\n selected = true;\n }\n else if (!isNOU(closest(target, 'tr.e-row'))) {\n uid = this.targetElement.getAttribute('data-uid');\n data = this.parent.detailsviewModule.gridObj.getRowObjectFromUID(uid).data;\n if (isNOU(this.targetElement.getAttribute('aria-selected'))) {\n /* istanbul ignore next */\n this.parent.detailsviewModule.gridObj.selectRows([parseInt(this.targetElement.getAttribute('data-rowindex'), 10)]);\n }\n selected = true;\n /* istanbul ignore next */\n }\n else if (closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n uid = closest(target, 'li').getAttribute('data-uid');\n if (!isNOU(uid)) {\n this.parent.navigationpaneModule.treeObj.setProperties({ selectedNodes: [uid] });\n }\n treeFolder = true;\n }\n /* istanbul ignore next */\n if (selected) {\n if (getValue('isFile', data) === true) {\n this.setFileItem();\n }\n else {\n this.setFolderItem(false);\n }\n /* istanbul ignore next */\n }\n else if (treeFolder) {\n this.setFolderItem(true);\n if (uid === this.parent.pathId[0]) {\n this.disabledItems.push('Delete', 'Rename', 'Cut', 'Copy');\n }\n else {\n var itemsToRemove = ['Delete', 'Rename', 'Cut', 'Copy'];\n for (var i = 0; i < this.disabledItems.length; i++) {\n var item = this.disabledItems[i];\n if (itemsToRemove.indexOf(item) !== -1) {\n this.disabledItems.splice(i, 1);\n i--;\n }\n }\n }\n /* istanbul ignore next */\n }\n else if (view === 'TreeView' || view === 'GridView' || view === 'LargeIcon') {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else {\n args.cancel = true;\n }\n }\n var pasteEle = select('#' + this.getMenuId('Paste'), this.contextMenu.element);\n if (!args.cancel && !this.parent.enablePaste &&\n pasteEle && !pasteEle.classList.contains('e-disabled')) {\n if (this.disabledItems.indexOf('Paste') === -1) {\n this.disabledItems.push('Paste');\n }\n }\n else {\n var pasteIndex = this.disabledItems.indexOf('Paste');\n if (pasteIndex !== -1) {\n this.disabledItems.splice(pasteIndex, 1);\n }\n }\n if (args.cancel) {\n this.menuTarget = this.currentElement = null;\n return;\n }\n this.contextMenu.dataBind();\n var isSubMenu = false;\n if (target.classList.contains(CLS.MENU_ITEM) ||\n target.classList.contains(CLS.MENU_ICON) || target.classList.contains(CLS.SUBMENU_ICON)) {\n isSubMenu = true;\n }\n this.menuItemData = isSubMenu ? this.menuItemData : this.getMenuItemData();\n var eventArgs = {\n fileDetails: [this.menuItemData],\n element: args.element,\n target: target,\n items: isSubMenu ? args.items : this.contextMenu.items,\n menuModule: this.contextMenu,\n cancel: false,\n menuType: this.menuType,\n isSubMenu: isSubMenu\n };\n this.currentItems = eventArgs.items;\n this.parent.trigger('menuOpen', eventArgs, function (menuOpenArgs) {\n if (!isSubMenu) {\n _this.contextMenu.dataBind();\n _this.contextMenu.items = menuOpenArgs.items;\n _this.contextMenu.dataBind();\n }\n _this.enableItems(_this.disabledItems, false, true);\n args.cancel = menuOpenArgs.cancel;\n if (menuOpenArgs.cancel) {\n _this.menuTarget = _this.targetNodeElement = _this.currentElement = null;\n }\n });\n };\n ContextMenu.prototype.updateActiveModule = function () {\n this.parent.activeModule = closest(this.menuTarget, '#' + this.parent.element.id + CLS.TREE_ID) ?\n 'navigationpane' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.GRID_ID) ?\n 'detailsview' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.LARGEICON_ID) ?\n 'largeiconsview' : this.parent.activeModule;\n };\n /* istanbul ignore next */\n /**\n *\n * @param {Element} target - specifies the target element.\n * @returns {string} -returns the target view.\n * @hidden\n */\n ContextMenu.prototype.getTargetView = function (target) {\n return target.classList.contains(CLS.TREE_VIEW) ?\n 'TreeView' : target.classList.contains(CLS.GRID_VIEW) ?\n 'GridView' : target.classList.contains(CLS.ICON_VIEW) ?\n 'LargeIcon' : target.classList.contains(CLS.LARGE_ICONS) ?\n 'LargeIcon' : '';\n };\n ContextMenu.prototype.getItemIndex = function (item) {\n var itemId = this.getMenuId(item);\n for (var i = 0; i < this.currentItems.length; i++) {\n if ((this.currentItems[i].id === itemId) || (this.currentItems[i].id === item)) {\n return i;\n }\n }\n return -1;\n };\n ContextMenu.prototype.disableItem = function (items) {\n if (items.length !== 0) {\n this.disabledItems = this.disabledItems.concat(items);\n }\n };\n ContextMenu.prototype.enableItems = function (items, enable, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n if (this.checkValidItem(items[i]) === 1) {\n this.contextMenu.enableItems([this.getMenuId(items[i])], enable, isUniqueId);\n }\n else if (this.checkValidItem(items[i]) === 2) {\n this.contextMenu.enableItems([items[i]], enable, isUniqueId);\n }\n }\n };\n ContextMenu.prototype.setFolderItem = function (isTree) {\n this.menuType = 'folder';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.folder.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (isTree) {\n var selectedTreeNode = select('[data-uid=\"' + this.parent.navigationpaneModule.treeObj.selectedNodes[0] + '\"]', this.parent.navigationpaneModule.treeObj.element);\n if (this.parent.pathNames[this.parent.pathNames.length - 1] === selectedTreeNode.querySelector('.e-list-text').innerHTML && this.parent.activeModule === 'navigationpane') {\n this.disabledItems.push('Open');\n }\n else {\n var indexToRemove = this.disabledItems.indexOf('Open');\n if (indexToRemove !== -1) {\n this.disabledItems.splice(indexToRemove, 1);\n }\n }\n if (this.parent.selectedItems.length === 0) {\n var renameIndex = this.disabledItems.indexOf('Rename');\n if (renameIndex !== -1) {\n this.disabledItems.splice(renameIndex, 1);\n }\n }\n }\n else if (this.parent.activeModule !== 'navigationpane') {\n if (this.parent.selectedItems.length === 1) {\n var renameIndex = this.disabledItems.indexOf('Rename');\n if (renameIndex !== -1) {\n this.disabledItems.splice(renameIndex, 1);\n }\n }\n else {\n this.disabledItems.push('Rename', 'Paste');\n }\n }\n };\n ContextMenu.prototype.setFileItem = function () {\n this.menuType = 'file';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.file.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (this.parent.selectedItems.length === 1) {\n var renameIndex = this.disabledItems.indexOf('Rename');\n if (renameIndex !== -1) {\n this.disabledItems.splice(renameIndex, 1);\n }\n }\n else {\n this.disabledItems.push('Rename');\n }\n };\n ContextMenu.prototype.setLayoutItem = function (target) {\n this.menuType = 'layout';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.layout.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (!this.parent.allowMultiSelection || ((this.parent.view === 'LargeIcons' &&\n (closest(target, '#' + this.parent.element.id + CLS.LARGEICON_ID).getElementsByClassName(CLS.EMPTY).length !== 0))\n || (this.parent.view === 'Details' &&\n (closest(target, '#' + this.parent.element.id + CLS.GRID_ID).getElementsByClassName(CLS.EMPTY).length !== 0)))) {\n this.disabledItems.push('SelectAll');\n }\n else {\n this.disabledItems = this.disabledItems.filter(function (item) { return item !== 'SelectAll'; });\n }\n if (this.parent.selectedNodes.length === 0) {\n if (this.disabledItems.indexOf('Paste') === -1) {\n this.disabledItems.push('Paste');\n }\n }\n this.contextMenu.dataBind();\n };\n ContextMenu.prototype.checkValidItem = function (nameEle) {\n if (!isNOU(select('#' + this.getMenuId(nameEle), this.currentElement))) {\n return 1;\n }\n else if (!isNOU(select('#' + nameEle, this.currentElement))) {\n return 2;\n }\n else {\n return -1;\n }\n };\n ContextMenu.prototype.getMenuItemData = function () {\n if (this.menuType === 'layout') {\n return getPathObject(this.parent);\n }\n else {\n var args = { target: this.menuTarget };\n this.parent.notify(events.menuItemData, args);\n return this.parent.itemData[0];\n }\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onSelect = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var itemText = args.item.id.substr((this.parent.element.id + '_cm_').length);\n var details;\n if (itemText === 'refresh' || itemText === 'newfolder' || itemText === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n if (this.parent.activeModule === 'navigationpane' && itemText === 'open') {\n details = [this.menuItemData];\n }\n else {\n details = this.parent.itemData;\n }\n }\n var eventArgs = {\n cancel: false,\n element: args.element,\n fileDetails: details,\n item: args.item\n };\n this.parent.trigger('menuClick', eventArgs, function (menuClickArgs) {\n var sItems;\n if (!menuClickArgs.cancel) {\n _this.isMenuItemClicked = true;\n switch (itemText) {\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'paste':\n if (_this.menuType === 'folder') {\n if (_this.parent.activeModule === 'navigationpane') {\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n _this.parent.folderPath = _this.parent.path;\n }\n else {\n _this.parent.folderPath = getFullPath(_this.parent, _this.menuItemData, _this.parent.path);\n }\n }\n else {\n _this.parent.folderPath = '';\n }\n pasteHandler(_this.parent);\n break;\n case 'delete':\n for (var j = 0; j < details.length; j++) {\n if (!hasEditAccess(details[j])) {\n createDeniedDialog(_this.parent, details[j], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n /* istanbul ignore next */\n case 'download':\n for (var i = 0; i < details.length; i++) {\n if (!hasDownloadAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionDownload);\n return;\n }\n }\n if (_this.parent.activeModule === 'navigationpane') {\n _this.parent.notify(events.downloadInit, {});\n }\n else if (_this.parent.selectedItems.length > 0) {\n Download(_this.parent, _this.parent.path, _this.parent.selectedItems);\n }\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'selectall':\n /* istanbul ignore next */\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'open':\n if (_this.parent.visitedItem && _this.parent.activeModule !== 'navigationpane') {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n else if (_this.parent.activeModule === 'navigationpane') {\n if (_this.parent.visitedItem) {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n }\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n case 'name':\n case 'size':\n case 'date':\n case 'ascending':\n case 'descending':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n case 'none':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n case 'largeiconsview':\n updateLayout(_this.parent, 'LargeIcons');\n break;\n /* istanbul ignore next */\n case 'detailsview':\n updateLayout(_this.parent, 'Details');\n break;\n }\n }\n });\n };\n ContextMenu.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.contextMenu.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n break;\n }\n }\n };\n ContextMenu.prototype.addEventListener = function () {\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.keyboardModule = new KeyboardEvents(this.contextMenu.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n ContextMenu.prototype.removeEventListener = function () {\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.keyboardModule.destroy();\n };\n ContextMenu.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'uparrow':\n case 'downarrow':\n e.preventDefault();\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n ContextMenu.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n this.contextMenu.destroy();\n this.targetElement = null;\n };\n /* istanbul ignore next */\n ContextMenu.prototype.getItemData = function (data) {\n var items = [];\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var itemId = this.getMenuId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n switch (data[i]) {\n case '|':\n item = { separator: true };\n break;\n case 'Open':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_OPEN };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_UPLOAD };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_CUT };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_COPY };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_PASTE };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DELETE };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_RENAME };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_NEWFOLDER };\n break;\n case 'Details':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DETAILS };\n break;\n case 'SortBy':\n item = {\n id: itemId, text: itemText, iconCss: CLS.ICON_SHORTBY,\n items: [\n {\n id: this.getMenuId('Name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : null\n },\n { separator: true },\n {\n id: this.getMenuId('Ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('Descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('None'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n /* istanbul ignore next */\n case 'View':\n item = {\n id: itemId, text: itemText, iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n items: [\n {\n id: this.getMenuId('largeiconsview'), text: getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? null : CLS.TB_OPTION_TICK\n },\n {\n id: this.getMenuId('detailsview'), text: getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n case 'Refresh':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_REFRESH };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_SELECTALL };\n break;\n /* istanbul ignore next */\n case 'Download':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DOWNLOAD };\n break;\n /* istanbul ignore next */\n default:\n item = { id: itemId, text: itemText };\n break;\n }\n items.push(item);\n }\n return items;\n };\n ContextMenu.prototype.getMenuId = function (id) {\n return this.parent.element.id + '_cm_' + id.split(' ').join('').toLowerCase();\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","/**\n * Specifies the default locale of FileManager component\n */\nexport var defaultLocale = {\n 'NewFolder': 'New folder',\n 'Upload': 'Upload',\n 'Delete': 'Delete',\n 'Rename': 'Rename',\n 'Download': 'Download',\n 'Cut': 'Cut',\n 'Copy': 'Copy',\n 'Paste': 'Paste',\n 'SortBy': 'Sort by',\n 'Refresh': 'Refresh',\n 'Item-Selection': 'item selected',\n 'Items-Selection': 'items selected',\n 'View': 'View',\n 'Details': 'Details',\n 'SelectAll': 'Select all',\n 'Open': 'Open',\n 'Tooltip-NewFolder': 'New folder',\n 'Tooltip-Upload': 'Upload',\n 'Tooltip-Delete': 'Delete',\n 'Tooltip-Rename': 'Rename',\n 'Tooltip-Download': 'Download',\n 'Tooltip-Cut': 'Cut',\n 'Tooltip-Copy': 'Copy',\n 'Tooltip-Paste': 'Paste',\n 'Tooltip-SortBy': 'Sort by',\n 'Tooltip-Refresh': 'Refresh',\n 'Tooltip-Selection': 'Clear selection',\n 'Tooltip-View': 'View',\n 'Tooltip-Details': 'Details',\n 'Tooltip-SelectAll': 'Select all',\n 'Name': 'Name',\n 'Size': 'Size',\n 'DateModified': 'Modified',\n 'DateCreated': 'Date created',\n 'Path': 'Path',\n 'Modified': 'Modified',\n 'Created': 'Created',\n 'Location': 'Location',\n 'Type': 'Type',\n 'Permission': 'Permission',\n 'Ascending': 'Ascending',\n 'Descending': 'Descending',\n 'None': 'None',\n 'View-LargeIcons': 'Large icons',\n 'View-Details': 'Details',\n 'Search': 'Search',\n 'Button-Ok': 'OK',\n 'Button-Cancel': 'Cancel',\n 'Button-Yes': 'Yes',\n 'Button-No': 'No',\n 'Button-Create': 'Create',\n 'Button-Save': 'Save',\n 'Header-NewFolder': 'Folder',\n 'Content-NewFolder': 'Enter your folder name',\n 'Header-Rename': 'Rename',\n 'Content-Rename': 'Enter your new name',\n 'Header-Rename-Confirmation': 'Rename Confirmation',\n 'Content-Rename-Confirmation': 'If you change a file name extension, the file might become unstable. ' +\n 'Are you sure you want to change it?',\n 'Header-Delete': 'Delete File',\n 'Content-Delete': 'Are you sure you want to delete this file?',\n 'Header-Folder-Delete': 'Delete Folder',\n 'Content-Folder-Delete': 'Are you sure you want to delete this folder?',\n 'Header-Multiple-Delete': 'Delete Multiple Items',\n 'Content-Multiple-Delete': 'Are you sure you want to delete these {0} items?',\n 'Header-Duplicate': 'File/Folder exists',\n 'Content-Duplicate': '{0} already exists. Do you want to rename and paste?',\n 'Header-Upload': 'Upload Files',\n 'Error': 'Error',\n 'Validation-Empty': 'The file or folder name cannot be empty.',\n 'Validation-Invalid': 'The file or folder name {0} contains invalid characters. Please use a different name. ' +\n // eslint-disable-next-line no-useless-escape\n 'Valid file or folder names cannot end with a dot or space, and cannot contain any of the following characters: \\\\/:*?\\\"<>|',\n 'Validation-NewFolder-Exists': 'A file or folder with the name {0} already exists.',\n 'Validation-Rename-Exists': 'Cannot rename {0} to {1}: destination already exists.',\n 'Folder-Empty': 'This folder is empty',\n 'File-Upload': 'Drag files here to upload',\n 'Search-Empty': 'No results found',\n 'Search-Key': 'Try with different keywords',\n 'Filter-Empty': 'No results found',\n 'Filter-Key': 'Try with different filter',\n 'Sub-Folder-Error': 'The destination folder is the subfolder of the source folder.',\n 'Same-Folder-Error': 'The destination folder is the same as the source folder.',\n 'Access-Denied': 'Access Denied',\n 'Access-Details': 'You don\"t have permission to access this folder.',\n 'Header-Retry': 'File Already Exists',\n 'Content-Retry': 'A file with this name already exists in this folder. What would you like to do?',\n 'Button-Keep-Both': 'Keep both',\n 'Button-Replace': 'Replace',\n 'Button-Skip': 'Skip',\n 'ApplyAll-Label': 'Do this for all current items',\n 'KB': 'KB',\n 'Access-Message': '{0} is not accessible. You need permission to perform the {1} action.',\n 'Network-Error': 'NetworkError: Failed to send on XMLHTTPRequest: Failed to load',\n 'Server-Error': 'ServerError: Invalid response from'\n};\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 { Component, isNullOrUndefined, L10n, closest, Collection, detach, selectAll, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Complex, select } from '@syncfusion/ej2-base';\nimport { createElement, addClass, removeClass, setStyleAttribute as setAttr, getUniqueID } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, formatUnit, Browser, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Splitter } from '@syncfusion/ej2-layouts';\nimport { Dialog, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { ToolbarSettings, AjaxSettings, NavigationPaneSettings, DetailsViewSettings } from '../models/index';\nimport { ToolbarItem } from '../models/index';\nimport { SearchSettings } from '../models/index';\nimport { LargeIconsView } from '../layout/large-icons-view';\nimport { Uploader } from '@syncfusion/ej2-inputs';\nimport { UploadSettings } from '../models/upload-settings';\nimport * as events from './constant';\nimport * as CLS from './classes';\nimport { read, filter, createFolder } from '../common/operations';\nimport { refresh, getPathObject, getLocaleText, setNextPath, createDeniedDialog, getCssClass } from '../common/utility';\nimport { hasContentAccess, hasUploadAccess, updateLayout, createNewFolder, uploadItem, closePopup } from '../common/utility';\nimport { ContextMenuSettings } from '../models/contextMenu-settings';\nimport { BreadCrumbBar } from '../actions/breadcrumb-bar';\nimport { ContextMenu } from '../pop-up/context-menu';\nimport { defaultLocale } from '../models/default-locale';\n/**\n * The FileManager component allows users to access and manage the file system through the web browser. It can performs the\n * functionalities like add, rename, search, sort, upload and delete files or folders. And also it\n * provides an easy way of dynamic injectable modules like toolbar, navigationpane, detailsview, largeiconsview.\n * ```html\n * <div id=\"file\"></div>\n * ```\n * ```typescript,\n * let feObj: FileManager = new FileManager();\n * feObj.appendTo('#file');\n * ```\n */\nvar FileManager = /** @class */ (function (_super) {\n __extends(FileManager, _super);\n function FileManager(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.filterData = null;\n _this.selectedNodes = [];\n _this.duplicateItems = [];\n _this.duplicateRecords = [];\n _this.previousPath = [];\n _this.nextPath = [];\n _this.existingFileCount = 0;\n _this.isLayoutChange = false;\n _this.layoutSelectedItems = [];\n _this.renamedId = null;\n _this.uploadItem = [];\n _this.deleteRecords = [];\n _this.isFile = false;\n _this.isCut = false;\n _this.isSearchCut = false;\n _this.isSearchDrag = false;\n _this.isPasteError = false;\n _this.folderPath = '';\n _this.isSameAction = false;\n _this.isFiltered = false;\n // Specifies whether the sort by option is clicked or not.\n _this.isSortByClicked = false;\n _this.enablePaste = false;\n _this.persistData = false;\n _this.retryArgs = [];\n _this.isOpened = false;\n _this.isRetryOpened = false;\n _this.isPathDrag = false;\n _this.searchedItems = [];\n _this.retryFiles = [];\n _this.isApplySame = false;\n _this.dragData = [];\n _this.dragNodes = [];\n _this.dragPath = '';\n _this.dropPath = '';\n _this.isDragDrop = false;\n _this.treeExpandTimer = null;\n _this.dragCursorPosition = { left: 44, top: 18 };\n _this.isDropEnd = false;\n _this.dragCount = 0;\n _this.droppedObjects = [];\n _this.uploadingCount = 0;\n _this.uploadedCount = 0;\n //Specifies whether the operating system is MAC or not\n _this.isMac = false;\n _this.dragSelectedItems = [];\n FileManager_1.Inject(BreadCrumbBar, LargeIconsView, ContextMenu);\n return _this;\n }\n FileManager_1 = FileManager;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n FileManager.prototype.getModuleName = function () {\n return 'filemanager';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n FileManager.prototype.preRender = function () {\n if (isNOU(this.element.id) || this.element.id === '') {\n this.element.setAttribute('id', getUniqueID('filemanager'));\n }\n this.ensurePath();\n this.feParent = [];\n this.feFiles = [];\n setAttr(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.isDevice = Browser.isDevice;\n this.isMobile = this.checkMobile();\n if (this.isMobile) {\n this.setProperties({ navigationPaneSettings: { visible: false } }, true);\n }\n var ele = closest(this.element, '.e-bigger');\n this.isBigger = ele ? true : false;\n this.activeModule = (this.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n createSpinner({ target: this.element }, createElement);\n this.addWrapper();\n this.keyConfigs = {\n altN: 'alt+n',\n f5: 'f5',\n ctrlShift1: 'ctrl+shift+1',\n ctrlShift2: 'ctrl+shift+2',\n ctrlU: 'ctrl+u'\n };\n this.localeObj = new L10n(this.getModuleName(), defaultLocale, this.locale);\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string} - returns the persisted data.\n * @hidden\n */\n FileManager.prototype.getPersistData = function () {\n var keyEntity = ['view', 'path', 'selectedItems'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n FileManager.prototype.requiredModules = function () {\n var modules = [];\n modules.push({\n member: 'breadcrumbbar',\n args: [this]\n });\n modules.push({\n member: 'largeiconsview',\n args: [this]\n });\n if (this.toolbarSettings.visible) {\n modules.push({\n member: 'toolbar',\n args: [this],\n name: 'Toolbar'\n });\n }\n if (this.navigationPaneSettings.visible) {\n modules.push({\n member: 'navigationpane',\n args: [this],\n name: 'NavigationPane'\n });\n }\n if (this.view) {\n modules.push({\n member: 'detailsview',\n args: [this],\n name: 'DetailsView'\n });\n }\n if (this.contextMenuSettings.visible && !this.isDevice) {\n modules.push({\n member: 'contextmenu',\n args: [this],\n name: 'ContextMenu'\n });\n }\n if (this.enableVirtualization) {\n modules.push({\n member: 'virtualization',\n args: [this],\n name: 'Virtualization'\n });\n }\n return modules;\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n FileManager.prototype.render = function () {\n this.initialize();\n var slItems = isNOU(this.selectedItems) ? [] :\n this.allowMultiSelection ? this.selectedItems : this.selectedItems.slice(this.selectedItems.length - 1);\n this.setProperties({ selectedItems: slItems }, true);\n this.fileView = this.view;\n this.isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n this.setRtl(this.enableRtl);\n this.addEventListeners();\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n if (this.fileView === 'Details') {\n this.largeiconsviewModule.element.classList.add(CLS.DISPLAY_NONE);\n }\n this.adjustHeight();\n if (isNOU(this.navigationpaneModule)) {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n this.wireEvents();\n this.renderComplete();\n };\n FileManager.prototype.ensurePath = function () {\n var currentPath = this.path;\n if (isNOU(currentPath)) {\n currentPath = '/';\n }\n if (currentPath.lastIndexOf('/') !== (currentPath.length - 1)) {\n currentPath = currentPath + '/';\n }\n this.originalPath = currentPath;\n var paths = currentPath.split('/');\n this.setProperties({ path: paths[0] + '/' }, true);\n this.pathNames = [];\n this.pathId = ['fe_tree'];\n this.itemData = [];\n };\n FileManager.prototype.initialize = function () {\n if (this.isMobile) {\n addClass([this.element], CLS.MOBILE);\n }\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n this.addCssClass(null, this.cssClass);\n this.renderFileUpload();\n };\n FileManager.prototype.addWrapper = function () {\n var headerWrap = this.createElement('div', { id: this.element.id + CLS.TOOLBAR_ID });\n this.element.appendChild(headerWrap);\n var layoutWrap = this.createElement('div', {\n id: this.element.id + CLS.LAYOUT_ID, className: CLS.LAYOUT\n });\n this.element.appendChild(layoutWrap);\n var navigationWrap = this.createElement('div', {\n id: this.element.id + CLS.NAVIGATION_ID, className: CLS.NAVIGATION\n });\n var treeWrap = this.createElement('div', {\n id: this.element.id + CLS.TREE_ID\n });\n navigationWrap.appendChild(treeWrap);\n var contentWrap = this.createElement('div', {\n id: this.element.id + CLS.CONTENT_ID, className: CLS.LAYOUT_CONTENT\n });\n this.breadCrumbBarNavigation = this.createElement('div', {\n id: this.element.id + CLS.BREADCRUMBBAR_ID,\n className: CLS.BREADCRUMBS\n });\n contentWrap.appendChild(this.breadCrumbBarNavigation);\n var gridWrap = this.createElement('div', {\n id: this.element.id + CLS.GRID_ID\n });\n contentWrap.appendChild(gridWrap);\n var largeiconWrap = this.createElement('div', {\n id: this.element.id + CLS.LARGEICON_ID,\n className: CLS.LARGE_ICONS, attrs: { 'role': 'group' }\n });\n contentWrap.appendChild(largeiconWrap);\n var overlay = this.createElement('span', { className: CLS.OVERLAY });\n contentWrap.appendChild(overlay);\n var paneSettings;\n if (!this.enableRtl) {\n layoutWrap.appendChild(navigationWrap);\n layoutWrap.appendChild(contentWrap);\n paneSettings = [\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n },\n { size: '75%', min: '270px' }\n ];\n }\n else {\n layoutWrap.appendChild(contentWrap);\n layoutWrap.appendChild(navigationWrap);\n paneSettings = [\n { size: '75%', min: '270px' },\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n }\n ];\n }\n this.splitterObj = new Splitter({\n paneSettings: paneSettings,\n width: '100%',\n enableRtl: false,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n resizing: this.splitterResize.bind(this)\n });\n this.splitterObj.isStringTemplate = true;\n this.splitterObj.appendTo(layoutWrap);\n var dialogWrap = this.createElement('div', { id: this.element.id + CLS.DIALOG_ID });\n this.element.appendChild(dialogWrap);\n var menuWrap = this.createElement('ul', { id: this.element.id + CLS.CONTEXT_MENU_ID });\n this.element.appendChild(menuWrap);\n var dialogImgWrap = this.createElement('div', { id: this.element.id + CLS.IMG_DIALOG_ID });\n this.element.appendChild(dialogImgWrap);\n var extnDialogWrap = this.createElement('div', { id: this.element.id + CLS.EXTN_DIALOG_ID });\n this.element.appendChild(extnDialogWrap);\n var uploadDialogWrap = this.createElement('div', { id: this.element.id + CLS.UPLOAD_DIALOG_ID });\n this.element.appendChild(uploadDialogWrap);\n };\n FileManager.prototype.adjustHeight = function () {\n var toolbar = select('#' + this.element.id + CLS.TOOLBAR_ID, this.element);\n var toolBarHeight = toolbar ? toolbar.offsetHeight : 0;\n if (this.splitterObj) {\n this.splitterObj.height = (this.element.clientHeight - toolBarHeight).toString();\n this.splitterObj.dataBind();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.splitterResize = function () {\n this.notify(events.splitterResize, {});\n };\n FileManager.prototype.splitterAdjust = function () {\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n if (this.navigationPaneSettings.visible) {\n this.splitterObj.expand(this.enableRtl ? 1 : 0);\n bar.classList.remove(CLS.DISPLAY_NONE);\n }\n else {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n };\n FileManager.prototype.addCssClass = function (oldOne, newOne) {\n if (!isNOU(oldOne) && oldOne !== '') {\n removeClass([this.element], oldOne.split(' '));\n }\n if (!isNOU(newOne) && newOne !== '') {\n addClass([this.element], newOne.split(' '));\n }\n };\n FileManager.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n FileManager.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n FileManager.prototype.onContextMenu = function (e) {\n e.preventDefault();\n };\n FileManager.prototype.checkMobile = function () {\n return (/iphone|ipod|android|blackberry|opera|mini|windows\\sce|palm|smartphone|iemobile/i.test(Browser.userAgent.toLowerCase())\n && /mobile/i.test(Browser.userAgent.toLowerCase()));\n };\n FileManager.prototype.renderFileUpload = function () {\n var id = this.element.id + CLS.UPLOAD_ID;\n var uploadEle = this.createElement('input', { id: id, attrs: { name: 'uploadFiles', type: 'file' } });\n this.element.appendChild(uploadEle);\n this.uploadDialogObj = new Dialog({\n header: getLocaleText(this, 'Header-Upload'),\n content: uploadEle,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: false,\n isModal: true,\n width: '350px',\n target: this.popupTarget ? this.popupTarget : '#' + this.element.id,\n cssClass: getCssClass(this, this.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: this.locale,\n allowDragging: true,\n position: { X: 'center', Y: 'center' },\n enableRtl: this.enableRtl,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n open: this.onOpen.bind(this),\n close: this.onClose.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this)\n });\n this.uploadDialogObj.appendTo('#' + this.element.id + CLS.UPLOAD_DIALOG_ID);\n this.renderUploadBox();\n };\n FileManager.prototype.renderUploadBox = function () {\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n this.uploadObj = new Uploader({\n dropArea: select('#' + this.element.id + CLS.CONTENT_ID, this.element),\n asyncSettings: {\n saveUrl: uploadUrl,\n removeUrl: uploadUrl\n },\n locale: this.locale,\n enableRtl: this.enableRtl,\n uploading: this.onUploading.bind(this),\n removing: this.onRemoving.bind(this),\n canceling: this.onCancel.bind(this),\n clearing: this.onClearing.bind(this),\n selected: this.onSelected.bind(this),\n success: this.onUploadSuccess.bind(this),\n failure: this.onUploadFailure.bind(this),\n autoUpload: this.uploadSettings.autoUpload,\n minFileSize: this.uploadSettings.minFileSize,\n maxFileSize: this.uploadSettings.maxFileSize,\n allowedExtensions: this.uploadSettings.allowedExtensions,\n directoryUpload: this.uploadSettings.directoryUpload,\n fileListRendering: this.onFileListRender.bind(this)\n });\n this.uploadObj.appendTo('#' + this.element.id + CLS.UPLOAD_ID);\n };\n FileManager.prototype.onFileListRender = function (args) {\n this.trigger('uploadListCreate', args);\n };\n FileManager.prototype.updateUploader = function () {\n this.uploadObj.autoUpload = this.uploadSettings.autoUpload;\n this.uploadObj.minFileSize = this.uploadSettings.minFileSize;\n this.uploadObj.maxFileSize = this.uploadSettings.maxFileSize;\n this.uploadObj.allowedExtensions = this.uploadSettings.allowedExtensions;\n this.uploadObj.directoryUpload = this.uploadSettings.directoryUpload;\n this.uploadObj.dataBind();\n };\n FileManager.prototype.onBeforeOpen = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onBeforeClose = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onOpen = function () {\n this.isOpened = true;\n this.uploadDialogObj.element.focus();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupOpen', args);\n };\n FileManager.prototype.onClose = function () {\n this.isOpened = false;\n this.uploadObj.clearAll();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupClose', args);\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploading = function (args) {\n var action = 'save';\n if ((this.retryArgs.length !== 0)) {\n for (var i = 0; i < this.retryArgs.length; i++) {\n if (args.fileData.name === this.retryArgs[i].file.name) {\n action = this.retryArgs[i].action;\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': action }, { 'data': data }, { 'filename': args.fileData.name }];\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n var ajaxSettings = {\n url: uploadUrl,\n type: 'POST',\n mode: true,\n dataType: null,\n contentType: null,\n data: JSON.stringify(args.customFormData),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n this.uploadEventArgs = { action: 'Upload', ajaxSettings: ajaxSettings, cancel: false };\n this.trigger('beforeSend', this.uploadEventArgs, function (uploadEventArgs) {\n args.customFormData = JSON.parse(getValue('data', uploadEventArgs.ajaxSettings));\n args.cancel = uploadEventArgs.cancel;\n var eventArgs = {\n cancel: false,\n httpRequest: args.currentRequest\n };\n if (typeof getValue('beforeSend', uploadEventArgs.ajaxSettings) === 'function') {\n getValue('beforeSend', uploadEventArgs.ajaxSettings)(eventArgs);\n if (getValue('cancel', eventArgs)) {\n args.cancel = getValue('cancel', eventArgs);\n }\n }\n });\n };\n FileManager.prototype.onRemoving = function () {\n this.onFileUploadSuccess({ count: 1 });\n if (this.uploadObj.getFilesData().length === 1) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onCancel = function (args) {\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': 'remove' }, { 'data': data }];\n };\n /* istanbul ignore next */\n FileManager.prototype.onClearing = function () {\n if (this.isOpened) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onSelected = function (args) {\n if (args.filesData.length === 0) {\n return;\n }\n this.uploadingCount = args.filesData.length;\n this.uploadedCount = 0;\n var details = getPathObject(this);\n if (!hasUploadAccess(details)) {\n args.cancel = true;\n createDeniedDialog(this, details, events.permissionUpload);\n return;\n }\n this.uploadDialogObj.show();\n };\n FileManager.prototype.onFileUploadSuccess = function (args) {\n this.uploadedCount = this.uploadedCount + args.count;\n if (this.uploadSettings.autoClose && (this.uploadingCount === this.uploadedCount)) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploadSuccess = function (files) {\n var args = { action: 'Upload', result: files };\n this.trigger('success', args);\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n read(this, events.pathChanged, this.path);\n this.onFileUploadSuccess({ count: 1 });\n if (typeof getValue('onSuccess', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', this.uploadEventArgs.ajaxSettings)();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploadFailure = function (files) {\n var response = getValue('response', files);\n var statusText = getValue('statusText', response);\n if (statusText !== '') {\n setValue('statusText', statusText, files);\n }\n var args = { action: 'Upload', error: files };\n this.trigger('failure', args);\n if (getValue('statusCode', response) === 400) {\n this.retryFiles.push(getValue('file', files));\n if (!this.isRetryOpened) {\n createExtDialog(this, 'UploadRetry');\n }\n }\n if (typeof getValue('onFailure', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onFailure', this.uploadEventArgs.ajaxSettings)();\n }\n };\n FileManager.prototype.onInitialEnd = function () {\n setNextPath(this, this.path);\n };\n FileManager.prototype.addEventListeners = function () {\n this.on(events.beforeRequest, this.showSpinner, this);\n this.on(events.afterRequest, this.hideSpinner, this);\n this.on(events.initialEnd, this.onInitialEnd, this);\n this.on(events.detailsInit, this.onDetailsInit, this);\n this.on(events.skipUpload, this.onFileUploadSuccess, this);\n EventHandler.add(this.element, 'contextmenu', this.onContextMenu, this);\n };\n FileManager.prototype.removeEventListeners = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.beforeRequest, this.showSpinner);\n this.off(events.afterRequest, this.hideSpinner);\n this.off(events.initialEnd, this.onInitialEnd);\n this.off(events.detailsInit, this.onDetailsInit);\n this.off(events.skipUpload, this.onFileUploadSuccess);\n EventHandler.remove(this.element, 'contextmenu', this.onContextMenu);\n };\n FileManager.prototype.onDetailsInit = function () {\n if (isNOU(this.activeModule)) {\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n }\n };\n FileManager.prototype.resizeHandler = function () {\n this.adjustHeight();\n this.notify(events.resizeEnd, {});\n };\n FileManager.prototype.keyActionHandler = function (e) {\n var uploadEle;\n switch (e.action) {\n case 'altN':\n e.preventDefault();\n this.itemData = [getPathObject(this)];\n if (!hasContentAccess(this.itemData[0])) {\n createDeniedDialog(this, this.itemData[0], events.permissionEditContents);\n }\n else {\n createDialog(this, 'NewFolder');\n }\n break;\n case 'f5':\n e.preventDefault();\n refresh(this);\n break;\n /* istanbul ignore next */\n case 'ctrlShift1':\n e.preventDefault();\n this.fileView = 'Details';\n this.setProperties({ view: 'Details' }, true);\n showSpinner(this.element);\n updateLayout(this, 'Details');\n break;\n /* istanbul ignore next */\n case 'ctrlShift2':\n e.preventDefault();\n this.fileView = 'LargeIcons';\n this.setProperties({ view: 'LargeIcons' }, true);\n showSpinner(this.element);\n updateLayout(this, 'LargeIcons');\n break;\n case 'ctrlU':\n e.preventDefault();\n if (this.toolbarSettings.items.indexOf('Upload') !== -1) {\n uploadEle = select('#' + this.element.id + CLS.UPLOAD_ID, this.element);\n uploadEle.click();\n }\n break;\n }\n };\n FileManager.prototype.wireSelectOnDragEvent = function (isBind) {\n if (isNOU(this.view)) {\n return;\n }\n if (isBind) {\n this.viewElem = this.view === 'LargeIcons' ? this.largeiconsviewModule.element : this.element.querySelector('.e-gridcontent');\n }\n if (!this.viewElem) {\n return;\n }\n if (isBind) {\n if (this.allowMultiSelection) {\n EventHandler.add(this.viewElem, 'mousedown', this.onDragStart, this);\n this.on(events.layoutChange, this.onLayoutChange, this);\n this.on(events.selectionChanged, this.onLayoutChange, this);\n }\n }\n else {\n EventHandler.remove(this.viewElem, 'mousedown', this.onDragStart);\n this.off(events.layoutChange, this.onLayoutChange);\n this.off(events.selectionChanged, this.onLayoutChange);\n }\n };\n FileManager.prototype.wireEvents = function () {\n if (this.enableRangeSelection) {\n this.wireSelectOnDragEvent(true);\n }\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n FileManager.prototype.unWireEvents = function () {\n this.wireSelectOnDragEvent(false);\n EventHandler.remove(window, 'resize', this.resizeHandler);\n this.keyboardModule.destroy();\n };\n FileManager.prototype.onDragStart = function (event) {\n if (this.viewElem) {\n if (this.allowDragAndDrop) {\n var targetElement = closest(event.target, this.viewElem.classList.contains('e-large-icons') ? '.e-list-item' : '.e-fe-text');\n if (targetElement) {\n return;\n }\n }\n event.preventDefault();\n this.dragX = event.pageX;\n this.dragY = event.pageY;\n if (!this.dragSelectElement) {\n this.dragSelectElement = createElement('div', {\n id: this.element.id + '_drag',\n className: 'e-filemanager e-drag-select',\n styles: 'left: ' + this.dragX + 'px;top: ' + this.dragY + 'px;'\n });\n document.body.append(this.dragSelectElement);\n }\n EventHandler.add(document, 'mouseup', this.onDragStop, this);\n EventHandler.add(this.viewElem, 'mousemove', this.onDrag, this);\n EventHandler.add(this.dragSelectElement, 'mousemove', this.onDrag, this);\n }\n };\n FileManager.prototype.onDrag = function (event) {\n event.stopPropagation();\n if (this.dragSelectElement) {\n var diffX = event.pageX - this.dragX;\n var diffY = event.pageY - this.dragY;\n setStyleAttribute(this.dragSelectElement, {\n 'left': diffX < 0 ? this.dragX + diffX + 'px' : this.dragX + 'px', 'top': diffY < 0 ? this.dragY + diffY + 'px' : this.dragY + 'px',\n 'height': Math.abs(diffY) + 'px', 'width': Math.abs(diffX) + 'px'\n });\n this.selectItems();\n }\n else {\n EventHandler.remove(this.viewElem, 'mousemove', this.onDrag);\n }\n };\n FileManager.prototype.onDragStop = function () {\n if (this.viewElem) {\n EventHandler.remove(document, 'mouseup', this.onDragStop);\n EventHandler.remove(this.viewElem, 'mousemove', this.onDrag);\n }\n if (this.dragSelectElement) {\n EventHandler.remove(this.dragSelectElement, 'mousemove', this.onDrag);\n if (this.dragSelectElement.clientHeight > 0 && this.dragSelectElement.clientWidth > 0) {\n this.setProperties({ selectedItems: this.dragSelectedItems });\n }\n this.dragSelectedItems = [];\n detach(this.dragSelectElement);\n this.dragSelectElement = null;\n }\n };\n FileManager.prototype.selectItems = function () {\n this.dragSelectedItems = [];\n var dragRect = this.dragSelectElement.getBoundingClientRect();\n var allItems = selectAll(this.viewElem.classList.contains('e-large-icons') ? '.e-list-item' : '.e-row', this.viewElem);\n removeClass(selectAll('.e-active', this.viewElem), ['e-active', 'e-focus']);\n removeClass(selectAll('.e-check', this.viewElem), ['e-check']);\n for (var _i = 0, allItems_1 = allItems; _i < allItems_1.length; _i++) {\n var item = allItems_1[_i];\n var itemRect = item.getBoundingClientRect();\n if (!(dragRect.right < itemRect.left || dragRect.left > itemRect.right\n || dragRect.bottom < itemRect.top || dragRect.top > itemRect.bottom)\n && (this.dragSelectElement.clientHeight > 0 && this.dragSelectElement.clientWidth > 0)) {\n if (this.viewElem.classList.contains('e-large-icons')) {\n item.classList.add('e-active');\n this.dragSelectedItems.push(item.getAttribute('title'));\n }\n else {\n addClass(selectAll('.e-rowcell', item), ['e-active']);\n this.dragSelectedItems.push(item.querySelector('.e-drag-text').textContent);\n }\n item.querySelector('.e-frame').classList.add('e-check');\n }\n }\n };\n FileManager.prototype.onLayoutChange = function () {\n if (this.enableRangeSelection) {\n this.unWireEvents();\n this.wireEvents();\n }\n };\n FileManager.prototype.setPath = function () {\n this.setProperties({ selectedItems: [] }, true);\n this.ensurePath();\n this.notify(events.clearPathInit, { selectedNode: this.pathId[0] });\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {FileManager} newProp\n * @param {FileManager} oldProp\n * @returns void\n * @private\n */\n /* istanbul ignore next */\n FileManager.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var height;\n var requiresRefresh = false;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'ajaxSettings':\n this.ajaxSettingSetModel(newProp);\n break;\n case 'allowDragAndDrop':\n this.allowDragAndDrop = newProp.allowDragAndDrop;\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showItemCheckBoxes':\n this.showItemCheckBoxes = newProp.showItemCheckBoxes;\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'enableVirtualization':\n this.enableVirtualization = newProp.enableVirtualization;\n requiresRefresh = true;\n break;\n case 'allowMultiSelection':\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n else {\n if (this.selectedItems.length > 1) {\n this.setProperties({ selectedItems: this.selectedItems.slice(this.selectedItems.length - 1) }, true);\n }\n removeClass([this.element], CLS.CHECK_SELECT);\n }\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'cssClass':\n this.addCssClass(oldProp.cssClass, newProp.cssClass);\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'detailsViewSettings':\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'enableRangeSelection':\n this.wireSelectOnDragEvent(false);\n if (newProp.enableRangeSelection) {\n this.wireSelectOnDragEvent(true);\n }\n break;\n case 'enableRtl':\n this.enableRtl = newProp.enableRtl;\n requiresRefresh = true;\n break;\n case 'rootAliasName':\n this.rootAliasName = newProp.rootAliasName;\n requiresRefresh = true;\n break;\n case 'height':\n height = !isNOU(newProp.height) ? formatUnit(newProp.height) : newProp.height;\n setAttr(this.element, { 'height': height });\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'locale':\n if (!isNOU(newProp.enableRtl)) {\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n }\n this.localeSetModelOption(newProp);\n break;\n case 'navigationPaneSettings':\n this.splitterAdjust();\n this.notify(events.modelChanged, { module: 'navigationpane', newProp: newProp, oldProp: oldProp });\n break;\n case 'path':\n this.setPath();\n break;\n case 'searchSettings':\n if (!isNullOrUndefined(newProp.searchSettings.allowSearchOnTyping)) {\n this.setProperties({ searchSettings: { allowSearchOnTyping: newProp.searchSettings.allowSearchOnTyping } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.ignoreCase)) {\n this.setProperties({ searchSettings: { ignoreCase: newProp.searchSettings.ignoreCase } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.filterType)) {\n this.setProperties({ searchSettings: { filterType: newProp.searchSettings.filterType } }, true);\n }\n this.notify(events.modelChanged, { module: 'breadcrumbbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'selectedItems':\n if (this.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (this.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'showFileExtension':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showHiddenItems':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showThumbnail':\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'toolbarSettings':\n case 'toolbarItems':\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'toolbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'uploadSettings':\n this.updateUploader();\n break;\n case 'view':\n if (newProp.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (newProp.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'width':\n setAttr(this.element, { 'width': !isNOU(newProp.width) ? formatUnit(newProp.width) : newProp.width });\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'sortOrder':\n refresh(this);\n this.notify(events.sortByChange, {});\n break;\n case 'sortBy':\n if (this.view === 'Details') {\n var columns = this.detailsViewSettings.columns;\n var isValidSortField = !isNullOrUndefined(columns) &&\n columns.findIndex(function (col) { return col.field === _this.sortBy; }) !== -1;\n if (!isValidSortField) {\n return;\n }\n refresh(this);\n this.notify(events.sortByChange, {});\n this.notify(events.sortColumn, {});\n }\n else {\n refresh(this);\n this.notify(events.sortByChange, {});\n }\n break;\n case 'popupTarget':\n if (this.uploadDialogObj) {\n this.uploadDialogObj.target = newProp.popupTarget;\n }\n if (this.dialogObj) {\n this.dialogObj.target = newProp.popupTarget;\n }\n if (this.extDialogObj) {\n this.extDialogObj.target = newProp.popupTarget;\n }\n if (this.viewerObj) {\n this.viewerObj.target = newProp.popupTarget;\n }\n break;\n case 'fileSystemData':\n this.fileSystemData = newProp.fileSystemData;\n requiresRefresh = true;\n break;\n }\n }\n if (requiresRefresh) {\n this.refresh();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.ajaxSettingSetModel = function (newProp) {\n if (!isNullOrUndefined(newProp.ajaxSettings.url)) {\n this.setProperties({ ajaxSettings: { url: newProp.ajaxSettings.url } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.uploadUrl)) {\n this.setProperties({ ajaxSettings: { uploadUrl: newProp.ajaxSettings.uploadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.downloadUrl)) {\n this.setProperties({ ajaxSettings: { downloadUrl: newProp.ajaxSettings.downloadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.getImageUrl)) {\n this.setProperties({ ajaxSettings: { getImageUrl: newProp.ajaxSettings.getImageUrl } }, true);\n }\n this.setProperties({ path: '/' }, true);\n this.setProperties({ selectedItems: [] }, true);\n _super.prototype.refresh.call(this);\n };\n /* istanbul ignore next */\n FileManager.prototype.localeSetModelOption = function (newProp) {\n this.uploadObj.locale = newProp.locale;\n _super.prototype.refresh.call(this);\n };\n /**\n * Triggers when the component is destroyed.\n *\n * @returns {void}\n */\n FileManager.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.refreshing) {\n this.notify(events.destroy, {});\n }\n this.uploadObj.destroy();\n this.uploadObj = null;\n this.uploadDialogObj.destroy();\n this.uploadDialogObj = null;\n this.splitterObj.destroy();\n this.splitterObj = null;\n if (this.dialogObj) {\n this.dialogObj.destroy();\n this.dialogObj = null;\n }\n if (this.viewerObj) {\n this.viewerObj.destroy();\n this.viewerObj = null;\n }\n if (this.extDialogObj) {\n this.extDialogObj.destroy();\n this.extDialogObj = null;\n }\n this.element.removeAttribute('style');\n this.element.removeAttribute('tabindex');\n this.removeEventListeners();\n this.unWireEvents();\n this.addCssClass(this.cssClass, null);\n removeClass([this.element], [CLS.RTL, CLS.MOBILE, CLS.CHECK_SELECT]);\n this.element.innerHTML = '';\n this.breadCrumbBarNavigation = null;\n this.activeElements = null;\n this.virtualDragElement = null;\n this.visitedItem = null;\n _super.prototype.destroy.call(this);\n this.virtualizationModule = null;\n this.navigationpaneModule = null;\n this.toolbarModule = null;\n this.contextmenuModule = null;\n this.largeiconsviewModule = null;\n this.detailsviewModule = null;\n this.breadcrumbbarModule = null;\n this.viewElem = null;\n this.dragSelectElement = null;\n this.dragSelectedItems = null;\n };\n /**\n * Creates a new folder in file manager.\n *\n * @param {string} name – Specifies the name of new folder in current path.\n * If it is not specified, then the default new folder dialog will be opened.\n * @returns {void}\n */\n FileManager.prototype.createFolder = function (name) {\n this.notify(events.methodCall, { action: 'createFolder' });\n var details = [getPathObject(this)];\n this.itemData = details;\n if (name) {\n if (/[/\\\\|*?\"<>:]/.test(name)) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(this, 'Validation-Invalid').replace('{0}', '\"' + name + '\"'),\n fileExists: null\n }\n };\n createDialog(this, 'Error', result);\n }\n else {\n if (!hasContentAccess(details[0])) {\n createDeniedDialog(this, details[0], events.permissionEditContents);\n }\n else {\n createFolder(this, name);\n }\n }\n }\n else {\n createNewFolder(this);\n }\n };\n /**\n * Deletes the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to delete the nested level folders or\n * files, then specify the filter path along with name of the folders or files when performing the search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then delete confirmation dialog will be opened for selected item.\n *\n * @returns {void}\n */\n FileManager.prototype.deleteFiles = function (ids) {\n this.notify(events.methodCall, { action: 'deleteFiles', ids: ids });\n };\n /**\n * Disables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableToolbarItems = function (items) {\n if (!isNOU(items) && this.toolbarModule) {\n this.toolbarModule.enableItems(items, false);\n }\n };\n /**\n * Downloads the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to download the nested level folders\n * or files, then specify the filter path along with name of the folders or files when performing search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then the selected items will be downloaded.\n *\n * @returns {void}\n */\n FileManager.prototype.downloadFiles = function (ids) {\n this.notify(events.methodCall, { action: 'downloadFiles', ids: ids });\n };\n /**\n * Enables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be enabled.\n * @returns {void}\n */\n FileManager.prototype.enableToolbarItems = function (items) {\n if (!isNOU(items) && this.toolbarModule) {\n this.toolbarModule.enableItems(items, true);\n }\n };\n /**\n * Disables the specified context menu items in file manager. This method is used only in the menuOpen event.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableMenuItems = function (items) {\n if (!isNOU(items) && !isNOU(this.contextmenuModule.contextMenu)) {\n this.contextmenuModule.disableItem(items);\n }\n };\n /**\n * Returns the index position of given current context menu item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns menu item index.\n */\n FileManager.prototype.getMenuItemIndex = function (item) {\n if (this.contextmenuModule) {\n return this.contextmenuModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Returns the index position of given toolbar item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns toolbar item index.\n */\n FileManager.prototype.getToolbarItemIndex = function (item) {\n if (this.toolbarModule) {\n return this.toolbarModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Display the custom filtering files in file manager.\n *\n * @param {Object} filterData - Specifies the custom filter details along with custom file action name,\n * which needs to be sent to the server side. If you do not specify the details, then default action name will be `filter`.\n *\n * @returns {void}\n */\n FileManager.prototype.filterFiles = function (filterData) {\n this.filterData = filterData ? filterData : null;\n this.setProperties({ selectedItems: [] }, true);\n this.notify(events.selectionChanged, {});\n this.isFiltered = true;\n if (this.breadcrumbbarModule.searchObj.element.value !== '') {\n this.breadcrumbbarModule.searchObj.element.value = '';\n }\n filter(this, events.filterEnd);\n };\n /**\n * Gets the details of the selected files in the file manager.\n *\n * @returns {Object[]} - returns selected files.\n */\n FileManager.prototype.getSelectedFiles = function () {\n this.notify(events.updateSelectionData, {});\n return this.itemData;\n };\n /**\n * Opens the corresponding file or folder from the given unique identifier.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to open the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n *\n * @returns {void}\n */\n FileManager.prototype.openFile = function (id) {\n this.notify(events.methodCall, { action: 'openFile', id: id });\n };\n /**\n * Refreshes the folder files of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshFiles = function () {\n refresh(this);\n };\n /**\n * Refreshes the layout of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshLayout = function () {\n this.adjustHeight();\n this.notify(events.layoutRefresh, {});\n };\n /**\n * Selects the entire folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.selectAll = function () {\n this.notify(events.methodCall, { action: 'selectAll' });\n };\n /**\n * Specifies the method that must be invoked to traverse the path backwards in the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.traverseBackward = function () {\n if (this.pathNames.length > 1 && this.breadcrumbbarModule.searchObj.element.value === '' && !this.isFiltered) {\n this.pathId.pop();\n this.pathNames.pop();\n var newPath = this.pathNames.slice(1).join('/');\n newPath = newPath === '' ? '/' : '/' + newPath + '/';\n this.setProperties({ path: newPath }, true);\n read(this, events.pathChanged, this.path);\n var treeNodeId = this.pathId[this.pathId.length - 1];\n this.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n };\n /**\n * Deselects the currently selected folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.clearSelection = function () {\n this.notify(events.methodCall, { action: 'clearSelection' });\n };\n /**\n * Renames the file or folder with given new name in file manager.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to rename the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n * If it is not specified, then rename dialog will be opened for selected item.\n *\n * @param {string} name – Specifies the new name of the file or folder in current path. If it is not specified, then rename dialog\n * will be opened for given identifier.\n *\n * @returns {void}\n */\n FileManager.prototype.renameFile = function (id, name) {\n this.notify(events.methodCall, { action: 'renameFile', id: id, newName: name });\n };\n /**\n * Opens the upload dialog in file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.uploadFiles = function () {\n var details = [getPathObject(this)];\n this.itemData = details;\n uploadItem(this);\n };\n /**\n * Specifies the method which must be invoked to programmatically close the dialog popup in the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.closeDialog = function () {\n closePopup(this);\n };\n /**\n * Specifies the direction of FileManager\n *\n * @param {boolean} rtl - specifies rtl parameter.\n * @returns {void}\n */\n FileManager.prototype.setRtl = function (rtl) {\n if (rtl) {\n this.addCssClass(null, CLS.RTL);\n }\n else {\n this.addCssClass(CLS.RTL, null);\n }\n if (this.uploadObj) {\n this.uploadDialogObj.enableRtl = rtl;\n this.uploadObj.enableRtl = rtl;\n }\n };\n var FileManager_1;\n __decorate([\n Complex({}, AjaxSettings)\n ], FileManager.prototype, \"ajaxSettings\", void 0);\n __decorate([\n Property([])\n ], FileManager.prototype, \"fileSystemData\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showItemCheckBoxes\", void 0);\n __decorate([\n Complex({}, ContextMenuSettings)\n ], FileManager.prototype, \"contextMenuSettings\", void 0);\n __decorate([\n Property('')\n ], FileManager.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({}, DetailsViewSettings)\n ], FileManager.prototype, \"detailsViewSettings\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property('400px')\n ], FileManager.prototype, \"height\", void 0);\n __decorate([\n Property('LargeIcons')\n ], FileManager.prototype, \"view\", void 0);\n __decorate([\n Complex({}, NavigationPaneSettings)\n ], FileManager.prototype, \"navigationPaneSettings\", void 0);\n __decorate([\n Property('/')\n ], FileManager.prototype, \"path\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"popupTarget\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], FileManager.prototype, \"searchSettings\", void 0);\n __decorate([\n Property()\n ], FileManager.prototype, \"selectedItems\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showFileExtension\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"rootAliasName\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"showHiddenItems\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showThumbnail\", void 0);\n __decorate([\n Property('Ascending')\n ], FileManager.prototype, \"sortOrder\", void 0);\n __decorate([\n Property('name')\n ], FileManager.prototype, \"sortBy\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"sortComparer\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"enableRangeSelection\", void 0);\n __decorate([\n Complex({}, ToolbarSettings)\n ], FileManager.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Collection([], ToolbarItem)\n ], FileManager.prototype, \"toolbarItems\", void 0);\n __decorate([\n Complex({}, UploadSettings)\n ], FileManager.prototype, \"uploadSettings\", void 0);\n __decorate([\n Property('100%')\n ], FileManager.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileLoad\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeDownload\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeImageLoad\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforePopupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforePopupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeSend\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeFolderCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"folderCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeDelete\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"delete\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeRename\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"rename\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeMove\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"move\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"search\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragStart\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragging\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragStop\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDropped\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileSelection\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileSelect\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"failure\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"success\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"uploadListCreate\", void 0);\n FileManager = FileManager_1 = __decorate([\n NotifyPropertyChanges\n ], FileManager);\n return FileManager;\n}(Component));\nexport { FileManager };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Toolbar as BaseToolbar } from '@syncfusion/ej2-navigations';\nimport { select, isNullOrUndefined as isNOU, closest, selectAll } from '@syncfusion/ej2-base';\nimport { createDialog } from '../pop-up/dialog';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { refresh, getPathObject, getLocaleText, getCssClass, sortbyClickHandler } from '../common/utility';\nimport { createDeniedDialog, updateLayout } from '../common/utility';\nimport { GetDetails } from '../common/operations';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { cutFiles, copyFiles, pasteHandler, hasEditAccess } from '../common/index';\nimport { doDownload, createNewFolder, uploadItem } from '../common/index';\n/**\n * Toolbar module\n */\nvar Toolbar = /** @class */ (function () {\n /**\n * Constructor for the Toolbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies the parent element.\n * @private\n */\n function Toolbar(parent) {\n this.default = ['Delete', 'Rename', 'Download', 'Cut', 'Copy', 'Paste'];\n this.single = ['Delete', 'Rename', 'Download', 'Cut', 'Copy'];\n this.multiple = ['Delete', 'Download', 'Cut', 'Copy', 'Refresh'];\n this.selection = ['NewFolder', 'Upload', 'SortBy', 'Refresh'];\n this.parent = parent;\n this.render();\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n var _this = this;\n this.items = this.toolbarItemData(this.getItems(this.parent.toolbarSettings.items.map(function (item) { return item.trim(); })));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj = new BaseToolbar({\n items: _this.items,\n created: _this.toolbarCreateHandler.bind(_this),\n overflowMode: 'Popup',\n clicked: _this.onClicked.bind(_this),\n enableHtmlSanitizer: _this.parent.enableHtmlSanitizer,\n enableRtl: _this.parent.enableRtl\n });\n _this.toolbarObj.isStringTemplate = true;\n _this.toolbarObj.root = _this.parent.root ? _this.parent.root : _this.parent;\n _this.toolbarObj.appendTo('#' + _this.parent.element.id + CLS.TOOLBAR_ID);\n });\n };\n Toolbar.prototype.getItemIndex = function (item) {\n var itemId = this.getId(item);\n for (var i = 0; i < this.items.length; i++) {\n if (this.items[i].id === itemId) {\n return i;\n }\n }\n return -1;\n };\n Toolbar.prototype.getItems = function (items) {\n var currItems = items.slice();\n if (this.parent.isDevice && this.parent.allowMultiSelection) {\n currItems.push('SelectAll');\n }\n if (this.parent.toolbarItems.length > 0) {\n currItems = this.parent.toolbarItems.map(function (item) { return item.name; });\n }\n return currItems;\n };\n /* istanbul ignore next */\n Toolbar.prototype.onClicked = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var tool = args.item.id.substr((this.parent.element.id + '_tb_').length);\n var details;\n if (tool === 'refresh' || tool === 'newfolder' || tool === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n details = this.parent.itemData;\n }\n var eventArgs = { cancel: false, fileDetails: details, item: args.item };\n this.parent.trigger('toolbarClick', eventArgs, function (toolbarClickArgs) {\n var sItems;\n var target;\n if (!toolbarClickArgs.cancel) {\n switch (tool) {\n case 'sortby':\n target = closest(args.originalEvent.target, '.' + CLS.TB_ITEM);\n if (target && target.classList.contains('e-toolbar-popup')) {\n args.cancel = true;\n }\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'delete':\n for (var i = 0; i < details.length; i++) {\n if (!hasEditAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'paste':\n _this.parent.folderPath = '';\n pasteHandler(_this.parent);\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'download':\n doDownload(_this.parent);\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n case 'selectall':\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'selection':\n _this.parent.notify(events.clearAllInit, {});\n break;\n }\n }\n });\n };\n Toolbar.prototype.toolbarCreateHandler = function () {\n var _this = this;\n if (!isNOU(select('#' + this.getId('SortBy'), this.parent.element))) {\n var items = [\n { id: this.getPupupId('name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '' },\n { separator: true },\n { id: this.getPupupId('ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('none'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '' }\n ];\n this.buttonObj = new DropDownButton({\n items: items, cssClass: getCssClass(this.parent, CLS.ROOT_POPUP),\n select: sortbyClickHandler.bind(this, this.parent),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n enableRtl: this.parent.enableRtl, iconCss: CLS.ICON_SHORTBY\n });\n this.buttonObj.isStringTemplate = true;\n this.buttonObj.appendTo('#' + this.getId('SortBy'));\n }\n if (!isNOU(select('#' + this.getId('View'), this.parent.element))) {\n var gridSpan_1 = '<span class=\"' + CLS.ICON_GRID + ' ' + CLS.MENU_ICON + '\"></span>';\n var largeIconSpan_1 = '<span class=\"' + CLS.ICON_LARGE + ' ' + CLS.MENU_ICON + '\"></span>';\n var layoutItems = [\n {\n id: this.getPupupId('large'), text: getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? '' : CLS.TB_OPTION_TICK\n },\n {\n id: this.getPupupId('details'), text: getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : ''\n }\n ];\n this.layoutBtnObj = new DropDownButton({\n iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n cssClass: getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP),\n items: layoutItems, select: this.layoutChange.bind(this),\n enableRtl: this.parent.enableRtl,\n content: '<span class=\"e-tbar-btn-text\">' + getLocaleText(this.parent, 'View') + '</span>',\n beforeItemRender: function (args) {\n var tickIcon = args.item.iconCss;\n var viewText = args.item.text === getLocaleText(_this.parent, 'View-LargeIcons');\n var iconClass = tickIcon ? ' e-menu-icon ' + tickIcon : '';\n args.element.innerHTML = '<span class=\"' + iconClass + '\"></span>' + (viewText ? largeIconSpan_1 : gridSpan_1) + args.item.text;\n var span = args.element.firstChild;\n if (span && span.className === '') {\n args.element.removeChild(span);\n }\n }\n });\n this.layoutBtnObj.isStringTemplate = true;\n this.layoutBtnObj.appendTo('#' + this.getId('View'));\n }\n this.hideItems(this.default, true);\n this.hideStatus();\n if (this.parent.portals && this.toolbarObj.portals) {\n this.parent.portals = this.parent.portals.concat(this.toolbarObj.portals);\n this.parent['renderReactTemplates']();\n }\n var btnElement = selectAll('.e-btn', this.toolbarObj.element);\n var _loop_1 = function (btnCount) {\n /* istanbul ignore next */\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n this.parent.refreshLayout();\n };\n Toolbar.prototype.updateSortByButton = function () {\n if (this.buttonObj) {\n var items = this.buttonObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('name')) {\n items[itemCount].iconCss = this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('size')) {\n items[itemCount].iconCss = this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('date')) {\n if (this.parent.sortBy === 'dateModified' || this.parent.sortBy === 'dateCreated') {\n items[itemCount].iconCss = this.parent.sortBy === this.parent.sortBy ? CLS.TB_OPTION_DOT : '';\n }\n else {\n items[itemCount].iconCss = this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '';\n }\n }\n else if (items[itemCount].id === this.getPupupId('ascending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('descending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('none')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.getPupupId = function (id) {\n return this.parent.element.id + '_ddl_' + id.toLowerCase();\n };\n Toolbar.prototype.layoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (args.item.id === this.getPupupId('large')) {\n updateLayout(this.parent, 'LargeIcons');\n }\n }\n else {\n if (args.item.id === this.getPupupId('details')) {\n updateLayout(this.parent, 'Details');\n }\n }\n };\n Toolbar.prototype.toolbarItemData = function (data) {\n var items = [];\n var mode = 'Both';\n if (this.parent.isMobile) {\n mode = 'Overflow';\n }\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var propItem = void 0;\n if (this.parent.toolbarItems.length > 0) {\n propItem = this.getItemModel(this.parent.toolbarItems[parseInt(i.toString(), 10)]);\n }\n var itemId = this.getId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n var itemTooltip = getLocaleText(this.parent, 'Tooltip-' + data[i]);\n switch (data[i]) {\n case '|':\n item = { type: 'Separator' };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_UPLOAD, showTextOn: mode };\n break;\n case 'SortBy': {\n var spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + itemText + '</span>';\n if (propItem && propItem.text) {\n spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + propItem.text + '</span>';\n }\n item = {\n id: itemId, tooltipText: itemTooltip,\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\">' + spanElement + '</button>'\n };\n break;\n }\n case 'Refresh':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_REFRESH, showTextOn: mode };\n break;\n case 'Selection':\n item = {\n id: itemId, text: itemText, tooltipText: itemTooltip, suffixIcon: CLS.ICON_CLEAR, overflow: 'Show',\n align: 'Right'\n };\n break;\n case 'View': {\n var viewText = void 0;\n if (propItem && propItem.text) {\n viewText = propItem.text;\n }\n else {\n viewText = getLocaleText(this.parent, 'View');\n }\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n overflow: 'Show', align: 'Right', text: itemText, showTextOn: 'Overflow',\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\" aria-label=' +\n viewText + '></button>'\n };\n break;\n }\n case 'Details':\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DETAILS, overflow: 'Show', align: 'Right',\n text: itemText, showTextOn: 'Overflow'\n };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_NEWFOLDER, showTextOn: mode };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_CUT, showTextOn: mode };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_COPY, showTextOn: mode };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_PASTE, showTextOn: mode };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DELETE, showTextOn: mode };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_RENAME, showTextOn: mode };\n break;\n case 'Download':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DOWNLOAD, showTextOn: mode };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_SELECTALL, showTextOn: mode };\n break;\n default:\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, template: '' };\n break;\n }\n if (this.parent.toolbarItems.length > 0 && propItem) {\n var mergedItems = Object.assign({}, item, propItem);\n items.push(mergedItems);\n }\n else {\n items.push(item);\n }\n }\n return items;\n };\n Toolbar.prototype.getItemModel = function (propItem) {\n var item = {};\n if (propItem.id) {\n item.id = propItem.id;\n }\n if (propItem.text) {\n item.text = propItem.text;\n }\n if (propItem.tooltipText) {\n item.tooltipText = propItem.tooltipText;\n }\n if (propItem.prefixIcon) {\n item.prefixIcon = propItem.prefixIcon;\n }\n if (propItem.cssClass) {\n item.cssClass = propItem.cssClass;\n }\n if (propItem.showTextOn !== 'Both') {\n item.showTextOn = propItem.showTextOn;\n }\n if (propItem.template) {\n item.template = propItem.template;\n }\n if (propItem.disabled) {\n item.disabled = propItem.disabled;\n }\n if (propItem.width !== 'auto') {\n item.width = propItem.width;\n }\n if (propItem.suffixIcon) {\n item.suffixIcon = propItem.suffixIcon;\n }\n if (propItem.align !== 'Left') {\n item.align = propItem.align;\n }\n if (propItem.overflow !== 'None') {\n item.overflow = propItem.overflow;\n }\n if (propItem.htmlAttributes) {\n item.htmlAttributes = propItem.htmlAttributes;\n }\n if (propItem.type !== 'Button') {\n item.type = propItem.type;\n }\n if (propItem.visible !== true) {\n item.visible = propItem.visible;\n }\n if (propItem.showAlwaysInPopup) {\n item.showAlwaysInPopup = propItem.showAlwaysInPopup;\n }\n if (propItem.tabIndex !== -1) {\n item.tabIndex = propItem.tabIndex;\n }\n return item;\n };\n Toolbar.prototype.getId = function (id) {\n return this.parent.element.id + '_tb_' + id.toLowerCase();\n };\n Toolbar.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.showPaste, this.showPaste, this);\n this.parent.on(events.hidePaste, this.hidePaste, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.sortByChange, this.updateSortByButton, this);\n };\n Toolbar.prototype.reRenderToolbar = function (e) {\n var _this = this;\n var itemsToProcess = [];\n if (this.parent.toolbarItems.length > 0) {\n itemsToProcess = this.parent.toolbarItems.map(function (item) {\n return item.name;\n });\n }\n else if (e.newProp.toolbarSettings.items !== undefined) {\n itemsToProcess = e.newProp.toolbarSettings.items.map(function (item) {\n return item.trim();\n });\n }\n if (itemsToProcess.length > 0) {\n this.items = this.toolbarItemData(this.getItems(itemsToProcess));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n if (_this.buttonObj) {\n _this.buttonObj.destroy();\n }\n if (_this.layoutBtnObj) {\n _this.layoutBtnObj.destroy();\n }\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj.items = _this.items;\n _this.toolbarObj.dataBind();\n _this.toolbarCreateHandler();\n });\n }\n };\n Toolbar.prototype.onSelectionChanged = function () {\n this.hideStatus();\n this.hideItems(this.single, true);\n this.hideItems(this.selection, false);\n if (this.parent.selectedItems.length === 1) {\n this.hideItems(this.single, false);\n this.hideItems(this.selection, true);\n }\n else if (this.parent.selectedItems.length > 1) {\n this.hideItems(this.multiple, false);\n this.hideItems(this.selection, true);\n }\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (this.parent.selectedItems.length > 0 && ele && !this.parent.enableVirtualization) {\n var txt = void 0;\n if (this.parent.selectedItems.length === 1) {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Item-Selection');\n }\n else {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Items-Selection');\n }\n select('.e-tbar-btn-text', ele).textContent = txt;\n this.toolbarObj.hideItem(ele.parentElement, false);\n }\n };\n Toolbar.prototype.hideItems = function (tools, toHide) {\n for (var i = 0; i < tools.length; i++) {\n var ele = select('#' + this.getId(tools[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, toHide);\n }\n }\n };\n Toolbar.prototype.hideStatus = function () {\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, true);\n }\n };\n Toolbar.prototype.showPaste = function () {\n this.hideItems(['Paste'], false);\n };\n Toolbar.prototype.hidePaste = function () {\n this.hideItems(['Paste'], true);\n };\n Toolbar.prototype.onLayoutChange = function () {\n if (this.layoutBtnObj) {\n this.layoutBtnObj.iconCss = this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE;\n var items = this.layoutBtnObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('large')) {\n items[itemCount].iconCss = this.parent.view === 'LargeIcons' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('details')) {\n items[itemCount].iconCss = this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.removeEventListener = function () {\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.showPaste, this.showPaste);\n this.parent.off(events.hidePaste, this.hidePaste);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.sortByChange, this.updateSortByButton);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (this.buttonObj) {\n this.buttonObj.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.cssClass = getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP);\n }\n break;\n case 'height':\n case 'width':\n this.toolbarObj.refreshOverflow();\n break;\n case 'toolbarSettings':\n case 'toolbarItems':\n this.reRenderToolbar(e);\n break;\n }\n }\n };\n Toolbar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.buttonObj) {\n this.buttonObj.destroy();\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.destroy();\n }\n this.toolbarObj.destroy();\n this.parent.refreshLayout();\n };\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var i = 0; i < items.length; i++) {\n var ele = select('#' + this.getId(items[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.enableItems(ele.parentElement, isEnable);\n }\n }\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { EventHandler, isNullOrUndefined, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createElement, selectAll } from '@syncfusion/ej2-base';\nimport * as CLS from '../base/classes';\nvar Virtualization = /** @class */ (function () {\n function Virtualization(instance) {\n this.filemanagerInstance = instance;\n this.largeIconInstance = instance.largeiconsviewModule;\n }\n /**\n * Sets up UI virtualization for the large icon view.\n *\n * @returns {void}\n */\n Virtualization.prototype.setUIVirtualization = function () {\n // Get the current view data source\n var currentViewItems = this.largeIconInstance.items;\n // Get the first item in the data source\n var firstItem = currentViewItems.slice(0, 1);\n // Create a list element from the first item in the data source\n var listElements = ListBase.createListFromJson(createElement, firstItem, this.largeIconInstance.listObj);\n // Get the list items from the list element\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n // Append the list element to the large icon element\n this.largeIconInstance.element.appendChild(listElements);\n if (this.itemList.length !== 0 && this.largeIconInstance.element.querySelector('.' + CLS.EMPTY)) {\n this.largeIconInstance.element.removeChild(this.largeIconInstance.element.querySelector('.' + CLS.EMPTY));\n }\n // Get the total number of items\n this.itemCount = this.getItemCount(Object.keys(this.largeIconInstance.allItems).length);\n // Remove the first child element from the large icon element\n this.largeIconInstance.element.firstChild.remove();\n // Set the items for the large icon view to the current view data source, limited to the number of items to display\n this.largeIconInstance.items = currentViewItems.slice(0, this.itemCount);\n };\n /**\n * Sets the height of the top and bottom elements that are used for virtualization.\n * These elements are used to give the appearance of an infinitely scrolling list.\n *\n * @returns {void}\n */\n Virtualization.prototype.setUlElementHeight = function () {\n // Calculate the number of items in the last row\n this.lastRowCount = (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount ?\n (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount : this.rowItemCount;\n // Create top and bottom elements\n this.topElement = this.filemanagerInstance.createElement('div');\n this.topElement.classList.add('e-virtual-top');\n this.largeIconInstance.element.firstElementChild.insertBefore(this.topElement, this.largeIconInstance.element.firstElementChild.firstChild);\n this.bottomElement = this.filemanagerInstance.createElement('div');\n this.bottomElement.classList.add('e-virtual-bottom');\n this.largeIconInstance.element.firstElementChild.insertBefore(this.bottomElement, null);\n // Get the margin value for list items\n var marginValue = parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-bottom'), 10);\n // Calculate the height of a single list item\n this.listItemHeight = this.largeIconInstance.itemList[0].getBoundingClientRect().height + marginValue;\n // Calculate the total height of the list\n this.totalHeight = (Object.keys(this.largeIconInstance.allItems).length / this.rowItemCount) * this.listItemHeight;\n // Set the initial height of the top and bottom elements\n this.topElement.style.height = 0 + 'px';\n this.bottomElement.style.height = this.totalHeight + 'px';\n // Initialize the top and bottom element heights\n this.topElementHeight = 0;\n this.bottomElementHeight = this.totalHeight;\n // Initialize the list difference variable\n this.listDiff = 0;\n // Set the initial rendered count\n this.renderedCount = this.itemCount;\n };\n /**\n * Calculates the number of items to display in the list based on the available width and height.\n *\n * @param {number} dataSourceLength The length of the data source.\n * @returns {number} The number of items to display.\n */\n Virtualization.prototype.getItemCount = function (dataSourceLength) {\n // Get the margin values for list items\n var widthMargin = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-right'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-left'), 10);\n // Calculate the number of items that can fit in a single row\n this.rowItemCount =\n Math.floor(parseFloat(formatUnit(this.largeIconInstance.element.firstElementChild.clientWidth)) /\n (this.itemList[0].offsetWidth + widthMargin));\n // Calculate the number of items that can fit in the available height\n var itemCount = this.rowItemCount *\n (Math.round(parseFloat(formatUnit(this.largeIconInstance.element.clientHeight)) / this.itemList[0].offsetHeight));\n // If the calculated item count is greater than the data source length, set the item count to the data source length\n if (itemCount > dataSourceLength || itemCount === 0) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n };\n /**\n * Wires or un wires the scroll event for the list element.\n *\n * @param {boolean} destroy - Set `true` to unwire the scroll event.\n * @returns {void}\n */\n Virtualization.prototype.wireScrollEvent = function (destroy) {\n if (!destroy) {\n // Wire the scroll event\n EventHandler.add(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll, this);\n }\n else {\n // Unwire the scroll event\n EventHandler.remove(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll);\n }\n };\n /**\n * Handles the scroll event for the list element.\n * This method updates the top and bottom elements and the displayed items based on the scroll position.\n *\n * @returns {void}\n * @private\n */\n Virtualization.prototype.onVirtualUiScroll = function () {\n var _a;\n // Set the starting height to 0\n var startingHeight = 0;\n // Get the current scroll position\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n var scroll = this.getscrollerHeight(startingHeight);\n // Calculate the height of the top element\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n // Calculate the height of the bottom element\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n // If the scroll position is less than or equal to the total height, set the top and bottom element heights.\n // Otherwise, set the top element height to the total height and the bottom element height to 0.\n _a = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0], this.topElementHeight = _a[0], this.bottomElementHeight = _a[1];\n // If the top element height has changed, update the top and bottom element heights and re-render the items.\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n // Check whether the scroll direction is upward or downward\n if (scroll > this.scrollPosition) {\n // Scrolling is upward\n var listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n this.onNormalScroll(listDiff, true);\n }\n else {\n // Scrolling is downward\n var listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n this.onNormalScroll(listDiff, false);\n }\n }\n // Update the list difference and scroll position variables\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n this.scrollPosition = scroll;\n // Update the list of items and the items property of the largeIconInstance\n this.largeIconInstance.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.largeIconInstance.element));\n this.itemCount = this.itemCount !== this.largeIconInstance.itemList.length ?\n this.largeIconInstance.itemList.length : this.itemCount;\n this.largeIconInstance.items = this.largeIconInstance.allItems.slice(this.renderedCount -\n this.itemCount, this.renderedCount);\n };\n /**\n * Calculates the current scroll position of the list element.\n *\n * @param {number} startingHeight The starting height from which to calculate the scroll position.\n * @returns {number} The current scroll position.\n * @private\n */\n Virtualization.prototype.getscrollerHeight = function (startingHeight) {\n // If the scroll position is less than or equal to the starting height, return 0.\n // Otherwise, return the scroll position minus the starting height.\n return ((this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight) <= 0) ? 0 :\n (this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight);\n };\n /**\n * This method updates the displayed items and the selection based on the scroll direction.\n *\n * @param {number} listDiff The number of rows to update.\n * @param {boolean} isScrollingDown If set to true, the scroll direction is downward.\n * @returns {void}\n * @private\n */\n Virtualization.prototype.onNormalScroll = function (listDiff, isScrollingDown) {\n // Update the displayed items\n for (var i = 0; i < listDiff; i++) {\n this.updateUI(isScrollingDown);\n }\n };\n /**\n * Updates the items in the large icons view.\n *\n * @param {boolean} isScrollingDown - If set to true, the scroll direction is downward.\n * @returns {void}\n * @private\n */\n Virtualization.prototype.updateUI = function (isScrollingDown) {\n var _this = this;\n if (isScrollingDown) {\n // Get the next batch of items to be displayed\n this.items = this.largeIconInstance.allItems.slice(this.renderedCount, this.renderedCount + this.rowItemCount);\n // If there are items to be displayed, create list elements for them and append them to the list\n if (this.items.length > 0) {\n var listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n this.itemList.forEach(function (liEle) {\n _this.largeIconInstance.element.firstElementChild.insertBefore(liEle, _this.bottomElement);\n });\n // Update the rendered count variable\n this.renderedCount = (this.largeIconInstance.allItems.length >= this.renderedCount + this.rowItemCount) ?\n this.renderedCount + this.rowItemCount : this.renderedCount + this.lastRowCount;\n // Remove the first batch of items from the list\n for (var i = 0; i < this.rowItemCount; i++) {\n detach(this.topElement.nextElementSibling);\n }\n }\n }\n else {\n // Scrolling up\n var lastItemIndex = void 0;\n var isAllRendered = void 0;\n if (this.renderedCount === this.largeIconInstance.allItems.length) {\n // Set lastItemIndex to the last item in the last row\n lastItemIndex = this.renderedCount - (this.itemCount - this.rowItemCount + this.lastRowCount);\n // Set renderedCount to the total number of items that have been rendered, except for the items in the last row\n this.renderedCount = ((this.renderedCount - this.lastRowCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.lastRowCount);\n // Set isAllRendered to true to indicate that all items have been rendered\n isAllRendered = true;\n }\n else {\n // Set lastItemIndex to the last item in the current row\n lastItemIndex = this.renderedCount - this.itemCount;\n // Set renderedCount to the total number of items that have been rendered, except for the items in the current row\n this.renderedCount = ((this.renderedCount - this.rowItemCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.rowItemCount);\n }\n // Set startItemIndex to the first item in the current or previous row\n var startItemIndex = (lastItemIndex - this.rowItemCount > 0) ? lastItemIndex - this.rowItemCount : 0;\n // Set the items array to the items in the current or previous row\n this.items = this.largeIconInstance.allItems.slice(startItemIndex, lastItemIndex);\n if (this.items.length > 0) {\n // Create a list of elements from the items array\n var listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n // Set the itemList array to the list items in the list elements\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n // Add the items to the beginning of the list\n for (var len = this.itemList.length; len > 0; len--) {\n this.largeIconInstance.element.firstElementChild.insertBefore(this.itemList[len - 1], this.topElement.nextElementSibling);\n }\n // Remove the last row of items from the list\n for (var i = 0; i < ((isAllRendered) ? this.lastRowCount : this.rowItemCount); i++) {\n detach(this.bottomElement.previousElementSibling);\n }\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n Virtualization.prototype.getModuleName = function () {\n return 'virtualization';\n };\n /**\n * Destroys the component.\n *\n * @returns {void}\n */\n Virtualization.prototype.destroy = function () {\n // If the file manager has already been destroyed, return immediately\n if (this.filemanagerInstance.isDestroyed) {\n return;\n }\n // If the large icon element has a child element, unwire the scroll event\n if (!isNullOrUndefined(this.largeIconInstance.element.firstElementChild)) {\n this.wireScrollEvent(true);\n }\n };\n return Virtualization;\n}());\nexport { Virtualization };\n","import { TreeView as BaseTreeView } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, select, setValue, getValue, Draggable } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, closest } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { read, Download, GetDetails, Delete, isFileSystemData } from '../common/operations';\nimport { createDialog } from '../pop-up/dialog';\nimport { updatePath, getPath, getDirectories } from '../common/utility';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getDirectoryPath, getModule, getPathId } from '../common/index';\nimport { copyFiles, cutFiles, removeActive, pasteHandler, getParentPath, readDropPath } from '../common/index';\nimport { hasEditAccess, createDeniedDialog, hasDownloadAccess, getAccessClass } from '../common/index';\n/**\n * NavigationPane module\n */\nvar NavigationPane = /** @class */ (function () {\n /**\n * Constructor for the TreeView module\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n /* istanbul ignore next */\n function NavigationPane(parent) {\n this.removeNodes = [];\n this.moveNames = [];\n this.expandTree = false;\n this.isDrag = false;\n this.isPathDragged = false;\n this.isRenameParent = false;\n this.isRightClick = false;\n this.isSameNodeClicked = false;\n this.isNodeExpandCalled = false;\n this.renameParent = null;\n // Specifies the previously selected nodes in the treeview control.\n this.previousSelected = null;\n // Specifies whether the nodeClicked event of the treeview control is triggered or not.\n this.isNodeClickCalled = false;\n // Specifies whether to restrict node selection in the treeview control.\n this.restrictSelecting = false;\n this.parent = parent;\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftF10: 'shift+F10',\n f2: 'f2'\n };\n }\n NavigationPane.prototype.onInit = function () {\n if (!isNOU(this.treeObj)) {\n return;\n }\n var rootData = getValue(this.parent.pathId[0], this.parent.feParent);\n setValue('_fm_icon', 'e-fe-folder', rootData);\n var attr = {};\n var id = getValue('id', rootData);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(rootData)) {\n setValue('class', getAccessClass(rootData), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, rootData);\n }\n this.treeObj = new BaseTreeView({\n fields: {\n dataSource: [rootData], id: '_fm_id', parentID: '_fm_pId', expanded: '_fm_expanded', selected: '_fm_selected', text: 'name',\n hasChildren: 'hasChild', iconCss: '_fm_icon', htmlAttributes: '_fm_htmlAttr', tooltip: 'name'\n },\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n sortOrder: this.parent.navigationPaneSettings.sortOrder,\n nodeSelecting: this.onNodeSelecting.bind(this),\n nodeSelected: this.onNodeSelected.bind(this),\n nodeExpanding: this.onNodeExpand.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n allowEditing: true,\n nodeEditing: this.onNodeEditing.bind(this),\n drawNode: this.onDrowNode.bind(this),\n enableRtl: this.parent.enableRtl,\n dataBound: this.addDragDrop.bind(this)\n });\n this.treeObj.isStringTemplate = true;\n this.treeObj.appendTo('#' + this.parent.element.id + CLS.TREE_ID);\n this.wireEvents();\n };\n NavigationPane.prototype.addDragDrop = function () {\n var _this = this;\n if (!this.parent.isMobile && this.treeObj) {\n if (this.parent.allowDragAndDrop && isNOU(this.dragObj)) {\n this.dragObj = new Draggable(this.treeObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n dragTarget: '.' + CLS.FULLROW,\n distance: 5,\n dragArea: this.parent.element,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableTailMode: true,\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n this.dragObj = null;\n }\n }\n };\n NavigationPane.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n if (!dragTarget.classList.contains(CLS.FULLROW)) {\n return null;\n }\n var dragLi = closest(dragTarget, 'li');\n this.parent.dragPath = '';\n this.parent.dragData = [];\n this.parent.activeElements = [];\n this.parent.activeElements = [dragLi];\n this.parent.dragNodes = [];\n getModule(this.parent, dragLi);\n this.parent.dragData = this.getTreeData(dragLi);\n this.parent.dragPath = this.getDragPath(dragLi, this.parent.dragData[0].name);\n this.parent.dragNodes.push(this.parent.dragData[0].name);\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n NavigationPane.prototype.getDragPath = function (dragLi, text) {\n var path = this.getDropPath(dragLi, text);\n return getParentPath(path);\n };\n NavigationPane.prototype.getDropPath = function (node, text) {\n var id = node.getAttribute('data-id');\n var newText = this.parent.hasId ? id : text;\n return getPath(node, newText, this.parent.hasId);\n };\n NavigationPane.prototype.onDrowNode = function (args) {\n var eventArgs = {\n element: args.node,\n fileDetails: args.nodeData,\n module: 'NavigationPane'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n NavigationPane.prototype.addChild = function (files, target, prevent) {\n var directories = getDirectories(files);\n var targetDirectory = this.getTreeData(target);\n if (directories.length > 0 && targetDirectory.length > 0 &&\n (directories[0].filterPath == null ||\n isNOU(targetDirectory[0])\n && targetDirectory[0].filterPath == null\n || directories[0].filterPath !==\n targetDirectory[0].filterPath)) {\n var length_1 = 0;\n var folders = directories;\n while (length_1 < directories.length) {\n // eslint-disable-next-line camelcase\n folders[parseInt(length_1.toString(), 10)]._fm_icon = 'e-fe-folder';\n var attr = {};\n var id = getValue('id', folders[length_1]);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(folders[length_1])) {\n setValue('class', getAccessClass(folders[length_1]), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, folders[length_1]);\n }\n length_1++;\n }\n var element = select('[data-uid=\"' + target + '\"]', this.treeObj.element);\n var childElements = select('ul', element);\n if (isNOU(childElements)) {\n this.treeObj.addNodes(directories, target, null, prevent);\n }\n }\n };\n // Node Selecting event handler\n NavigationPane.prototype.onNodeSelecting = function (args) {\n if (!args.isInteracted && !this.isRightClick &&\n !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent || this.restrictSelecting) {\n this.restrictSelecting = false;\n this.isNodeClickCalled = false;\n return;\n }\n if (!this.renameParent) {\n this.parent.activeModule = 'navigationpane';\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n if (args.node.getAttribute('data-uid') !== this.parent.pathId[this.parent.pathId.length - 1] && !this.isRightClick && !this.isNodeClickCalled || this.isSameNodeClicked) {\n this.isNodeClickCalled = false;\n if (!this.isSameNodeClicked) {\n this.isSameNodeClicked = true;\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: args.isInteracted };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n if (!this.isRightClick) {\n var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n args.cancel = eventArgs.cancel;\n }\n if (args.cancel) {\n this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;\n this.isNodeClickCalled = true;\n this.isSameNodeClicked = false;\n this.previousSelected = this.treeObj.selectedNodes;\n this.treeObj.setProperties({ selectedNodes: [args.node.getAttribute('data-uid')] });\n }\n }\n else if (this.previousSelected[0] !== args.node.getAttribute('data-uid')) {\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: this.isNodeClickCalled };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n }\n };\n // Opens the folder while clicking open context menu item in the treeview.\n NavigationPane.prototype.openFileOnContextMenuClick = function (node) {\n var data = this.treeObj.getTreeData(node);\n this.parent.selectedItems = [];\n this.parent.itemData = data;\n this.activeNode = node;\n this.parent.activeModule = 'navigationpane';\n var eventArgs = { cancel: false, fileDetails: data[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n this.isNodeClickCalled = true;\n if (!eventArgs.cancel) {\n updatePath(node, this.parent.itemData[0], this.parent);\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.parent.visitedItem = node;\n this.isPathDragged = this.isRenameParent = this.isRightClick = false;\n this.treeObj.setProperties({ selectedNodes: [node.getAttribute('data-uid')] });\n }\n };\n NavigationPane.prototype.onNodeSelected = function (args) {\n if (this.parent.breadcrumbbarModule && this.parent.breadcrumbbarModule.searchObj && !this.renameParent) {\n this.parent.breadcrumbbarModule.searchObj.element.value = '';\n this.parent.isFiltered = false;\n this.isNodeClickCalled = false;\n }\n this.parent.searchedItems = [];\n if (!args.isInteracted && !this.isRightClick && !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent) {\n this.parent.pathId = getPathId(args.node);\n return;\n }\n this.activeNode = args.node;\n this.parent.activeModule = 'navigationpane';\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.selectedItems = [];\n this.parent.itemData = nodeData;\n var previousPath = this.parent.path;\n if (!this.isRightClick && this.isSameNodeClicked) {\n updatePath(args.node, this.parent.itemData[0], this.parent);\n }\n else {\n this.parent.pathId = getPathId(args.node);\n this.parent.visitedItem = args.node;\n }\n if (args.node.querySelector('.' + CLS.ICONS) && args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.expandNodeTarget = 'add';\n }\n if (previousPath !== this.parent.path) {\n if (!this.isRightClick && this.isSameNodeClicked) {\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.isNodeClickCalled = true;\n }\n this.parent.visitedItem = args.node;\n }\n this.isPathDragged = this.isRenameParent = this.isRightClick = this.isSameNodeClicked = false;\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onPathDrag = function (args) {\n this.isPathDragged = true;\n this.selectResultNode(args[0]);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpand = function (args) {\n if (!args.isInteracted && !this.isDrag) {\n return;\n }\n if (args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.isNodeExpandCalled = true;\n var text = getValue('text', args.nodeData);\n var id = args.node.getAttribute('data-id');\n var isId = isNOU(id) ? false : true;\n var newText = isNOU(id) ? text : id;\n var path = getPath(args.node, newText, isId);\n this.expandNodeTarget = args.node.getAttribute('data-uid');\n this.parent.expandedId = this.expandNodeTarget;\n this.parent.itemData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.pathId.push(getValue('id', args.nodeData));\n read(this.parent, events.nodeExpand, path);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpanded = function (args) {\n this.addChild(args.files, this.expandNodeTarget, false);\n this.parent.expandedId = null;\n this.isNodeExpandCalled = false;\n };\n NavigationPane.prototype.onNodeClicked = function (args) {\n this.parent.activeModule = 'navigationpane';\n this.previousSelected = this.treeObj.selectedNodes;\n this.activeNode = args.node;\n if ((args.event.which === 3) && (args.node.getAttribute('data-uid') !== this.treeObj.selectedNodes[0])) {\n this.isRightClick = true;\n this.isNodeClickCalled = true;\n this.treeObj.setProperties({ selectedNodes: [args.node.getAttribute('data-uid')] });\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && this.parent.selectedItems.length !== 0) {\n this.parent.setProperties({ selectedItems: [] }, true);\n var layout = (this.parent.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n this.parent.notify(events.modelChanged, { module: layout, newProp: { selectedItems: [] } });\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && !this.isNodeClickCalled && !this.isNodeExpandCalled) {\n if (args.event.which === 3) {\n this.isRightClick = true;\n }\n this.isSameNodeClicked = true;\n this.isNodeClickCalled = true;\n this.treeObj.setProperties({ selectedNodes: [args.node.getAttribute('data-uid')] });\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeEditing = function (args) {\n if (!isNOU(args.innerHtml)) {\n args.cancel = true;\n }\n };\n NavigationPane.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n var currFiles = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feFiles);\n if (this.expandNodeTarget === 'add') {\n var sNode = select('[data-uid=\"' + this.treeObj.selectedNodes[0] + '\"]', this.treeObj.element);\n var ul = (!isNOU(sNode)) ? select('.' + CLS.LIST_PARENT, sNode) : null;\n if (isNOU(ul)) {\n this.addChild(args.files, this.treeObj.selectedNodes[0], !this.expandTree);\n }\n this.expandNodeTarget = '';\n }\n this.expandTree = false;\n if (isNOU(currFiles)) {\n setValue(this.parent.pathId[this.parent.pathId.length - 1], args.files, this.parent.feFiles);\n }\n if (this.parent.uploadObj.directoryUpload && !(this.parent.hasId)) {\n this.updateTree(args);\n }\n };\n NavigationPane.prototype.updateTree = function (args) {\n if (this.treeObj) {\n var id = this.treeObj.selectedNodes[0];\n this.updateTreeNode(args, id);\n }\n };\n NavigationPane.prototype.updateTreeNode = function (args, id) {\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1 ? false : true;\n this.removeChildNodes(id);\n this.addChild(args.files, id, !toExpand);\n };\n NavigationPane.prototype.removeChildNodes = function (id) {\n var sNode = select('[data-uid=\"' + id + '\"]', this.treeObj.element);\n var parent = select('.' + CLS.LIST_PARENT, sNode);\n var childs = parent ? Array.prototype.slice.call(parent.children) : null;\n if (childs) {\n this.treeObj.removeNodes(childs);\n }\n };\n NavigationPane.prototype.onOpenEnd = function (args) {\n var sleId = this.parent.pathId[this.parent.pathId.length - 1];\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n this.treeObj.setProperties({ selectedNodes: [sleId] });\n this.expandNodeTarget = 'add';\n this.onPathChanged(args);\n };\n NavigationPane.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n if (args.target.querySelector('.' + CLS.ICONS)) {\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n }\n }\n };\n NavigationPane.prototype.onInitialEnd = function (args) {\n this.onInit();\n this.addChild(args.files, getValue('_fm_id', args.cwd), false);\n };\n NavigationPane.prototype.onFinalizeEnd = function (args) {\n this.onInit();\n var id = getValue('_fm_id', args.cwd);\n this.addChild(args.files, id, false);\n this.treeObj.setProperties({ selectedNodes: [this.parent.pathId[this.parent.pathId.length - 1]] });\n };\n NavigationPane.prototype.onCreateEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateItemData();\n }\n };\n NavigationPane.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateActionData();\n var name_1 = getValue('name', this.parent.itemData[0]);\n Delete(this.parent, [name_1], this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDeleteEnd = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n var selectedNode = this.treeObj.selectedNodes[0];\n var selcetedEle = select('[data-uid=\"' + selectedNode + '\"]', this.treeObj.element);\n var selectedNodeEle = closest(selcetedEle, '.' + CLS.LIST_PARENT).parentElement;\n this.treeObj.selectedNodes = [selectedNodeEle.getAttribute('data-uid')];\n this.treeObj.dataBind();\n }\n this.updateTree(args);\n };\n NavigationPane.prototype.onRefreshEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateRenameData();\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEndParent = function (args) {\n var id = this.renameParent ? this.renameParent : this.parent.pathId[this.parent.pathId.length - 1];\n this.expandTree = this.treeObj.expandedNodes.indexOf(this.treeObj.selectedNodes[0]) !== -1;\n this.updateTreeNode(args, id);\n this.parent.expandedId = null;\n if (this.renameParent) {\n this.renameParent = null;\n }\n else {\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.renameText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('_fm_pId', 'equal', id, false));\n }\n }\n if (resultData.length > 0) {\n var id_1 = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id_1];\n this.treeObj.dataBind();\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEnd = function (args) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.updateTree(args);\n }\n else {\n var data = this.treeObj.getTreeData();\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(data).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var nData = new DataManager(data).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.currentItemText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n this.renameParent = getValue(this.treeObj.fields.parentID, resultData[0]);\n this.parent.expandedId = this.renameParent;\n this.parent.itemData = this.getTreeData(this.renameParent);\n read(this.parent, events.renameEndParent, this.parent.filterPath.replace(/\\\\/g, '/'));\n }\n }\n };\n NavigationPane.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.addDragDrop();\n break;\n case 'navigationPaneSettings':\n read(this.parent, events.finalizeEnd, this.parent.path);\n if (e.oldProp.navigationPaneSettings.sortOrder !== e.newProp.navigationPaneSettings.sortOrder) {\n this.treeObj.sortOrder = e.newProp.navigationPaneSettings.sortOrder;\n }\n break;\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDownLoadInit = function () {\n this.doDownload();\n };\n NavigationPane.prototype.onSelectionChanged = function (e) {\n this.treeObj.setProperties({ selectedNodes: [e.selectedNode] });\n };\n NavigationPane.prototype.onClearPathInit = function (e) {\n this.removeChildNodes(e.selectedNode);\n };\n NavigationPane.prototype.onDragEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchDrag) {\n moveNames = this.getMoveNames(args.files, this.parent.isSearchDrag, this.parent.dragPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n NavigationPane.prototype.getMoveNames = function (files, flag, path) {\n var moveNames = [];\n for (var i = 0; i < files.length; i++) {\n if (!files[i].isFile) {\n if (!this.parent.hasId) {\n var name_2 = (files[i].previousName);\n if (flag) {\n path = path + files[i].previousName;\n var index = path.lastIndexOf('/');\n name_2 = path.substring(index + 1);\n path = path.substring(0, index + 1);\n }\n var resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', name_2, false));\n for (var j = 0; j < resultData.length; j++) {\n var fPath = getValue('filterPath', resultData[j]);\n fPath = fPath.replace(/\\\\/g, '/');\n if (fPath === path) {\n moveNames.push(getValue(this.treeObj.fields.id, resultData[j]));\n break;\n }\n }\n }\n }\n }\n return moveNames;\n };\n NavigationPane.prototype.onCutEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchCut) {\n this.moveNames = this.getMoveNames(args.files, this.parent.isSearchCut, this.parent.targetPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.selectResultNode = function (resultObj) {\n if (!this.parent.hasId) {\n var path = getValue('filterPath', resultObj);\n var itemname = getValue('name', resultObj);\n var data = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', itemname, false));\n if (data.length > 0) {\n var resultData = new DataManager(data).\n executeLocal(new Query().where('filterPath', 'equal', path, false));\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id];\n this.treeObj.dataBind();\n }\n }\n }\n else {\n var selectedNode = this.treeObj.getTreeData().filter(function (obj) { return obj.name === resultObj.name; })[0];\n this.treeObj.selectedNodes = [getValue('_fm_id', selectedNode)];\n this.treeObj.dataBind();\n }\n };\n NavigationPane.prototype.onDropPath = function (args) {\n this.onpasteEnd(args);\n this.selectResultNode(this.parent.dropData);\n this.parent.isDropEnd = !this.parent.isPasteError;\n };\n NavigationPane.prototype.onpasteEnd = function (args) {\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', getValue('id', args.cwd), false));\n }\n else {\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', getValue('name', args.cwd), false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', getValue('filterPath', args.cwd), false));\n }\n }\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1;\n this.removeChildNodes(id);\n this.addChild(args.files, id, toExpand);\n }\n this.parent.expandedId = null;\n this.onPathChanged(args);\n if (this.parent.isDragDrop) {\n this.checkDropPath(args);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.checkDropPath = function (args) {\n if (isFileSystemData(this.parent) && (this.parent.path === this.parent.dropPath || this.parent.targetModule === 'navigationpane')) {\n return;\n }\n if (this.parent.hasId) {\n this.parent.isDropEnd = !this.parent.isPasteError;\n readDropPath(this.parent);\n return;\n }\n if ((this.parent.dropPath.indexOf(getDirectoryPath(this.parent, args)) === -1)) {\n this.parent.isDropEnd = false;\n readDropPath(this.parent);\n }\n else {\n this.parent.isDropEnd = !this.parent.isPasteError;\n }\n };\n NavigationPane.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.updateItemData();\n }\n this.moveNames = [];\n var obj = this.parent.isDragDrop || isFileSystemData(this.parent) ? this.parent.dragData : this.parent.actionRecords;\n for (var i = 0; i < obj.length; i++) {\n if (getValue('isFile', obj[i]) === false) {\n this.moveNames.push(getValue('_fm_id', obj[i]));\n }\n }\n };\n NavigationPane.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.activeElements = [this.activeNode];\n }\n };\n NavigationPane.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.downloadInit, this.onDownLoadInit, this);\n this.parent.on(events.initialEnd, this.onInitialEnd, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutEnd, this.onCutEnd, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.nodeExpand, this.onNodeExpanded, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.updateTreeSelection, this.onSelectionChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.openEnd, this.onOpenEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.renameEndParent, this.onRenameEndParent, this);\n this.parent.on(events.clearPathInit, this.onClearPathInit, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.dragEnd, this.onDragEnd, this);\n this.parent.on(events.dragging, this.onDragging, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.pathDrag, this.onPathDrag, this);\n };\n NavigationPane.prototype.removeEventListener = function () {\n this.parent.off(events.initialEnd, this.onInitialEnd);\n this.parent.off(events.downloadInit, this.onDownLoadInit);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutEnd, this.onCutEnd);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.updateTreeSelection, this.onSelectionChanged);\n this.parent.off(events.nodeExpand, this.onNodeExpanded);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onOpenEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.renameEndParent, this.onRenameEndParent);\n this.parent.off(events.clearPathInit, this.onClearPathInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.dragEnd, this.onDragEnd);\n this.parent.off(events.dragging, this.onDragging);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.pathDrag, this.onPathDrag);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n var dataobj = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.itemData = dataobj;\n }\n };\n NavigationPane.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var liEle = closest(args.target, 'li');\n this.parent.itemData = this.getTreeData(liEle.getAttribute('data-uid'));\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDragging = function (args) {\n var ele = closest(args.target, 'li');\n if (ele.classList.contains('e-node-collapsed')) {\n this.isDrag = true;\n var level = parseInt(ele.getAttribute('aria-level'), 10);\n this.treeObj.expandAll([ele.getAttribute('data-uid')], level + 1);\n this.isDrag = false;\n }\n };\n NavigationPane.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, 'li');\n this.parent.dropData = this.getTreeData(dropLi)[0];\n this.parent.dropPath = this.getDropPath(dropLi, getValue('name', this.parent.dropData));\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n NavigationPane.prototype.getModuleName = function () {\n return 'navigationpane';\n };\n NavigationPane.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.treeObj) {\n this.unWireEvents();\n this.treeObj.destroy();\n }\n };\n NavigationPane.prototype.wireEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.treeObj.element, {\n keyAction: this.keyDown.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n NavigationPane.prototype.unWireEvents = function () {\n this.keyboardModule.destroy();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.keyDown = function (e) {\n var action = e.action;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, [], this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n if (this.parent.pathId[0] !== this.activeNode.getAttribute('data-uid')) {\n this.updateItemData();\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n this.removeNodes = [];\n createDialog(this.parent, 'Delete');\n }\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'shiftF10':\n this.updateItemData();\n if (!hasDownloadAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionDownload);\n return;\n }\n if (this.parent.selectedItems.length !== 0) {\n this.doDownload();\n }\n break;\n case 'f2':\n if (this.parent.selectedItems.length === 0) {\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n if (!hasEditAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionEdit);\n }\n else {\n this.updateRenameData();\n createDialog(this.parent, 'Rename');\n }\n }\n break;\n }\n };\n NavigationPane.prototype.getTreeData = function (args) {\n var data = this.treeObj.getTreeData(args);\n for (var i = 0; i < data.length; i++) {\n if (isNOU(getValue('hasChild', data[i]))) {\n setValue('hasChild', false, data[i]);\n }\n }\n return data;\n };\n NavigationPane.prototype.updateRenameData = function () {\n this.updateItemData();\n this.parent.currentItemText = getValue('name', this.parent.itemData[0]);\n };\n NavigationPane.prototype.updateItemData = function () {\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n this.parent.itemData = [data];\n this.parent.isFile = false;\n };\n NavigationPane.prototype.updateActionData = function () {\n this.updateItemData();\n var newPath = getParentPath(this.parent.path);\n this.parent.setProperties({ path: newPath }, true);\n this.parent.pathId.pop();\n this.parent.pathNames.pop();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.doDownload = function () {\n var newPath = getParentPath(this.parent.path);\n var itemId = this.treeObj.selectedNodes[0];\n var name = (itemId === this.parent.pathId[0]) ? '' : getValue('name', this.parent.itemData[0]);\n Download(this.parent, newPath, [name]);\n };\n return NavigationPane;\n}());\nexport { NavigationPane };\n","import { Grid, Resize, ContextMenu, Sort, VirtualScroll } from '@syncfusion/ej2-grids';\nimport { select, KeyboardEvents, EventHandler, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, Touch, setValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Internationalization, closest, Draggable, initializeCSPTemplate, extend, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { createDialog, createImageDialog } from '../pop-up/dialog';\nimport { removeBlur, openAction, getImageUrl, fileType, getSortedData, getLocaleText, updateLayout } from '../common/utility';\nimport { createEmptyElement } from '../common/utility';\nimport { read, Download, GetDetails, Delete } from '../common/operations';\nimport { cutFiles, addBlur, openSearchFolder, copyFiles, removeActive, pasteHandler, getPathObject, getName } from '../common/index';\nimport { hasReadAccess, hasEditAccess, hasDownloadAccess, doRename, getAccessClass, createDeniedDialog, rename } from '../common/index';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getModule, getFullPath } from '../common/index';\nimport { getDirectoryPath, updateRenamingData, getItemName, doDeleteFiles, doDownloadFiles } from '../common/index';\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * DetailsView module\n */\nvar DetailsView = /** @class */ (function () {\n /**\n * Constructor for the GridView module\n *\n * @param {FileManager} parent - specifies the parent.\n * @hidden\n */\n function DetailsView(parent) {\n this.isInteracted = true;\n this.interaction = true;\n this.isPasteOperation = false;\n this.isColumnRefresh = false;\n this.dragObj = null;\n this.startIndex = null;\n this.firstItemIndex = null;\n this.isSelectionUpdate = false;\n this.currentSelectedItem = [];\n this.count = 0;\n this.isRendered = true;\n this.isLoaded = false;\n this.isNameWidth = false;\n this.isMultiSelect = false;\n this.pasteOperation = false;\n this.uploadOperation = false;\n Grid.Inject(Resize, ContextMenu, Sort, VirtualScroll);\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.GRID_ID, this.parent.element);\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n tab: 'tab',\n moveDown: 'downarrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n ctrlUp: 'ctrl+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n end: 'end',\n home: 'home',\n moveUp: 'uparrow',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftdel: 'shift+delete',\n ctrlD: 'ctrl+d',\n f2: 'f2',\n ctrlA: 'ctrl+a',\n enter: 'enter',\n back: 'backspace'\n };\n }\n /* istanbul ignore next */\n DetailsView.prototype.render = function (args) {\n var _this = this;\n showSpinner(this.parent.element);\n if (this.parent.view === 'Details') {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n var items = getSortedData(this.parent, args.files);\n this.checkNameWidth();\n var columns = this.getColumns();\n var sortSettings = void 0;\n var isValidSortField = !isNullOrUndefined(columns) &&\n columns.findIndex(function (col) { return col.field === _this.parent.sortBy; }) !== -1;\n if (this.parent.isMobile || !isValidSortField) {\n sortSettings = [];\n }\n else {\n if (this.parent.sortOrder !== 'None') {\n sortSettings = [{ direction: this.parent.sortOrder, field: this.parent.sortBy }];\n }\n }\n this.gridObj = new Grid({\n dataSource: items,\n allowSorting: true,\n rowSelecting: this.onSelection.bind(this, 'select'),\n rowDeselecting: this.onSelection.bind(this, 'unselect'),\n rowSelected: this.onSelected.bind(this),\n rowDeselected: this.onDeSelection.bind(this),\n allowResizing: this.parent.detailsViewSettings.columnResizing,\n selectionSettings: {\n type: this.parent.allowMultiSelection ? 'Multiple' : 'Single',\n checkboxMode: 'ResetOnRowClick'\n },\n enableRtl: this.parent.enableRtl,\n pageSettings: { pageSize: 20 },\n enableVirtualization: this.parent.enableVirtualization,\n enablePersistence: this.parent.enablePersistence,\n enableVirtualMaskRow: true,\n sortSettings: { allowUnsort: false, columns: sortSettings },\n columns: columns,\n recordDoubleClick: this.DblClickEvents.bind(this),\n beforeDataBound: this.onBeforeDataBound.bind(this),\n dataBound: this.onDataBound.bind(this),\n rowDataBound: this.onRowDataBound.bind(this),\n actionBegin: this.onActionBegin.bind(this),\n headerCellInfo: this.onHeaderCellInfo.bind(this),\n width: '100%',\n height: (this.parent.enableVirtualization) ? this.getGridHeight() : 'auto',\n beforeCopy: function (args) { args.cancel = true; },\n load: function () {\n this.focusModule.destroy();\n },\n locale: this.parent.locale\n });\n if (this.parent.isReact) {\n this.gridObj.isReact = true;\n this.gridObj.portals = [];\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n this.gridObj.isStringTemplate = true;\n this.gridObj.appendTo('#' + this.parent.element.id + CLS.GRID_ID);\n this.wireEvents();\n this.adjustHeight();\n this.emptyArgs = args;\n }\n };\n DetailsView.prototype.reactTemplateRender = function (args) {\n this.parent['portals'] = args;\n if (this.parent.portals && this.parent.toolbarModule && this.parent.toolbarModule.toolbarObj &&\n this.parent.toolbarModule.toolbarObj.portals) {\n this.parent['portals'] = this.parent['portals'].concat(this.parent.toolbarModule.toolbarObj.portals);\n }\n this.parent.notify('renderReactTemplate', this.parent['portals']);\n this.parent['renderReactTemplates']();\n };\n /**\n * Gets the grid height.\n *\n * @returns {number} - The grid height.\n * @private\n */\n DetailsView.prototype.getGridHeight = function () {\n // Get the content pane and breadcrumb bar elements\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n // The maximum height of the header is 36\n var headerMaxHeight = 36;\n // Calculate and return the grid height\n return (pane.offsetHeight - bar.offsetHeight - headerMaxHeight);\n };\n DetailsView.prototype.checkNameWidth = function () {\n var initialColumn = this.parent.detailsViewSettings.columns;\n this.isNameWidth = false;\n for (var i = 0; i < initialColumn.length; i++) {\n if (initialColumn[i].field === 'name') {\n this.isNameWidth = !isNOU(initialColumn[i].width);\n return;\n }\n }\n };\n DetailsView.prototype.adjustWidth = function (columns, fieldName) {\n if (this.isNameWidth && (fieldName === 'name')) {\n return;\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === fieldName) {\n var nameWidth = void 0;\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n nameWidth = (this.element.clientWidth <= 500) ? '120px' : 'auto';\n }\n else {\n nameWidth = (this.element.clientWidth <= 680) ? ((fieldName === 'name') ? '120px' : '180px') : 'auto';\n }\n columns[i].width = nameWidth;\n }\n }\n };\n DetailsView.prototype.getColumns = function () {\n var columns;\n var enableHtmlSanitizer = this.parent.enableHtmlSanitizer;\n if (this.parent.isMobile) {\n columns = [\n {\n field: 'name', headerText: getLocaleText(this.parent, 'Name'), width: 'auto', minWidth: 120, headerTextAlign: 'Left',\n template: initializeCSPTemplate(function (data) {\n var name = enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(data.name) : data.name;\n return \"<div class=\\\"e-fe-text\\\">\" + name + \"</div><div class=\\\"e-fe-date\\\">\" + data._fm_modified + \"</div><span class=\\\"e-fe-size\\\">\" + data.size + \"</span>\";\n })\n }\n ];\n }\n else {\n columns = extend([], this.parent.detailsViewSettings.columns, null, true);\n this.adjustWidth(columns, 'name');\n var _loop_1 = function (i, len) {\n columns[i].headerText = getLocaleText(this_1.parent, columns[i].headerText);\n if (columns[i].field === 'name' && !isNOU(columns[i].template) && !(typeof columns[i].template === 'function')) {\n var template_1 = columns[i].template;\n columns[i].template = initializeCSPTemplate(function (data) {\n var name = enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(data.name) : data.name;\n return template_1.replace(/\\${name}/g, name);\n });\n }\n };\n var this_1 = this;\n for (var i = 0, len = columns.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n var iWidth = ((this.parent.isMobile || this.parent.isBigger) ? '54' : '46');\n var icon = {\n field: 'type', width: iWidth, minWidth: iWidth,\n template: initializeCSPTemplate(function (data) {\n return \"<span class=\\\"e-fe-icon \" + data._fm_iconClass + \"\\\"></span>\";\n }), allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },\n headerTemplate: initializeCSPTemplate(function () {\n return '<span class=\\'e-fe-icon e-fe-folder\\'></span>';\n })\n };\n columns.unshift(icon);\n if (this.parent.showItemCheckBoxes) {\n var cWidth = (this.parent.isBigger ? '36' : '26');\n var cBox = {\n type: 'checkbox', width: cWidth, minWidth: cWidth, customAttributes: { class: 'e-fe-checkbox' },\n allowResizing: false, allowSorting: false\n };\n if (this.parent.isMobile) {\n columns.push(cBox);\n }\n else {\n columns.unshift(cBox);\n }\n }\n for (var i = 0, len = columns.length; i < len; i++) {\n columns[i].disableHtmlEncode = !this.parent.enableHtmlSanitizer;\n }\n if (this.parent.enableRangeSelection) {\n var HiddenName = { field: 'name', visible: false, customAttributes: { class: 'e-drag-text' } };\n columns.push(HiddenName);\n }\n return columns;\n };\n DetailsView.prototype.adjustHeight = function () {\n if (!this.gridObj) {\n return;\n }\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n var gridHeader = select('.' + CLS.GRID_HEADER, this.parent.element);\n var height = (pane.offsetHeight - bar.offsetHeight - gridHeader.offsetHeight);\n this.gridObj.height = height;\n this.gridObj.dataBind();\n };\n DetailsView.prototype.renderCheckBox = function () {\n this.gridObj.columns = this.getColumns();\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n };\n DetailsView.prototype.onRowDataBound = function (args) {\n var td = select('.e-fe-grid-name', args.row);\n if (!td) {\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'name') {\n td = args.row.children[this.parent.allowMultiSelection ? (i + 2) : (i + 1)];\n break;\n }\n }\n }\n if (td) {\n td.setAttribute('title', getValue('name', args.data));\n }\n if (this.parent.isLayoutChange && this.parent.isCut && this.parent.fileAction === 'move' &&\n this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n if (this.parent.selectedNodes.indexOf(getValue('name', args.data)) !== -1) {\n addBlur(args.row);\n }\n }\n if (!this.parent.showFileExtension && getValue('isFile', args.data)) {\n var text = getValue('name', args.data);\n var textEle = args.row.querySelector('[title= \"' + text + '\"]');\n if (textEle) {\n var name_1 = getValue('name', args.data);\n var type = getValue('type', args.data);\n if (name_1.indexOf(type) !== -1) {\n textEle.innerHTML = name_1.substr(0, name_1.length - type.length);\n }\n }\n }\n if (getValue('size', args.data) !== undefined && args.row.querySelector('.e-fe-size')) {\n var sizeEle = args.row.querySelector('.e-fe-size');\n var modifiedSize = void 0;\n if (!getValue('isFile', args.data)) {\n modifiedSize = '';\n }\n else {\n var sizeValue = getValue('size', args.data);\n var intl = new Internationalization(this.parent.locale);\n var sizeFormat = void 0;\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'size') {\n sizeFormat = !isNullOrUndefined(columns[i].format) ? columns[i].format.toString() : 'n';\n break;\n }\n }\n var value = intl.formatNumber((sizeValue / 1024), { format: sizeFormat });\n modifiedSize = value + ' ' + getLocaleText(this.parent, 'KB');\n }\n sizeEle.innerHTML = modifiedSize;\n }\n if (this.parent.isMobile) {\n if (getValue('_fm_modified', args.data) !== undefined && args.row.querySelector('.e-fe-date')) {\n var dateEle = args.row.querySelector('.e-fe-date');\n var intl = new Internationalization(this.parent.locale);\n var columns = this.parent.detailsViewSettings.columns;\n var format = void 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'dateModified') {\n format = columns[i].format;\n break;\n }\n }\n var formattedString = intl.formatDate(new Date(getValue('_fm_modified', args.data)), format);\n dateEle.innerHTML = formattedString;\n }\n }\n var checkWrap = args.row.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n if (!hasEditAccess(args.data)) {\n args.row.className += ' ' + getAccessClass(args.data);\n }\n var eventArgs = {\n element: args.row,\n fileDetails: args.data,\n module: 'DetailsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n DetailsView.prototype.onActionBegin = function (args) {\n if (args.requestType === 'sorting') {\n this.parent.setProperties({ sortOrder: args.direction }, true);\n this.parent.setProperties({ sortBy: args.columnName }, true);\n if (this.parent.selectedItems.length !== 0) {\n this.sortItem = true;\n var rows = this.gridObj.getSelectedRowIndexes();\n var len = rows.length;\n this.sortSelectedNodes = [];\n while (len > 0) {\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.sortSelectedNodes.push(getValue(this.parent.hasId ? 'id' : 'name', data));\n len--;\n }\n }\n this.parent.notify(events.sortByChange, {});\n }\n };\n DetailsView.prototype.onHeaderCellInfo = function (args) {\n var checkWrap = args.node.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n };\n DetailsView.prototype.onBeforeDataBound = function (args) {\n var _this = this;\n showSpinner(this.parent.element);\n var nameColumn = this.parent.detailsViewSettings.columns.find(function (column) { return column.field === _this.parent.sortBy; });\n if (nameColumn && !('sortComparer' in nameColumn)) {\n var items = getSortedData(this.parent, (this.parent.enableVirtualization)\n ? args.result\n : this.gridObj.dataSource);\n args.result = items;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDataBound = function () {\n this.createDragObj();\n if ((this.parent.selectedItems.length !== 0 && !this.parent.enableVirtualization) ||\n ((this.parent.selectedItems.length !== 0 && this.parent.enableVirtualization &&\n this.element.querySelector('.e-content').scrollTop === 0))) {\n this.selectRecords(this.parent.selectedItems);\n }\n if (this.isPasteOperation === true && (!isNullOrUndefined(this.gridObj.getDataRows()) && this.gridObj.getDataRows().length > 0)) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.parent.createdItem) {\n this.selectRecords([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n }\n if (this.parent.layoutSelectedItems.length) {\n this.selectRecords(this.parent.layoutSelectedItems);\n }\n if (this.parent.renamedItem) {\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n if (this.sortItem === true) {\n this.selectRecords(this.sortSelectedNodes);\n this.sortItem = false;\n }\n if (this.isSelectionUpdate) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.currentSelectedItem);\n this.isSelectionUpdate = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.uploadOperation === true) {\n this.count++;\n this.selectRecords(this.parent.uploadItem);\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n if (this.gridObj.currentViewData.length * this.gridObj.getRowHeight() < this.gridObj.height) {\n var hdTable = this.gridObj.getHeaderContent();\n hdTable.style.paddingRight = '';\n hdTable.style.paddingLeft = '';\n var hdContent = select('.e-headercontent', hdTable);\n hdContent.style.borderRightWidth = '0';\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.style.overflowY = '';\n cnTable.classList.add('e-scrollShow');\n }\n else {\n var hdTable = this.gridObj.getHeaderContent();\n if (!this.parent.enableRtl) {\n hdTable.style.paddingRight = '16px';\n }\n else {\n hdTable.style.paddingLeft = '16px';\n }\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.classList.remove('e-scrollShow');\n }\n this.isRendered = true;\n this.parent.isLayoutChange = false;\n hideSpinner(this.parent.element);\n this.checkEmptyDiv(this.emptyArgs);\n this.isInteracted = this.isLoaded ? true : this.isInteracted;\n this.isLoaded = false;\n };\n DetailsView.prototype.selectRecords = function (nodes) {\n var gridRecords = this.gridObj.getCurrentViewRecords();\n var sRecords = [];\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var node = this.parent.hasId ? getValue('id', gridRecords[i]) : getName(this.parent, gridRecords[i]);\n if (nodes.indexOf(node) !== -1) {\n sRecords.push(i);\n }\n else if (!this.parent.showFileExtension && !this.parent.hasId && node.includes('.')) {\n var Str2 = node.split('.').slice(0, -1).join('.');\n if (nodes.indexOf(Str2) !== -1) {\n sRecords.push(i);\n }\n }\n }\n if (sRecords.length !== 0) {\n this.gridObj.selectRows(sRecords);\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n };\n DetailsView.prototype.addSelection = function (data) {\n var items = this.gridObj.getCurrentViewRecords();\n var rData = [];\n if (this.parent.hasId) {\n rData = new DataManager(items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var nData = new DataManager(items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (nData.length > 0) {\n rData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (rData.length > 0) {\n var index = items.indexOf(rData[0]);\n this.gridObj.selectRows([index]);\n }\n };\n DetailsView.prototype.onSortColumn = function () {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortModule.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n else {\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n if (this.element.querySelector('.e-content').scrollTop !== 0) {\n this.gridObj.freezeRefresh();\n }\n };\n DetailsView.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'height':\n this.adjustHeight();\n break;\n case 'detailsViewSettings':\n if (!isNullOrUndefined(this.gridObj)) {\n this.checkNameWidth();\n var columns = this.getColumns();\n this.gridObj.columns = columns;\n this.gridObj.allowResizing = this.parent.detailsViewSettings.columnResizing;\n this.gridObj.dataBind();\n this.gridObj.refreshColumns();\n }\n break;\n case 'selectedItems':\n this.interaction = false;\n if (this.parent.selectedItems.length !== 0) {\n if (!this.parent.allowMultiSelection) {\n var slItems = this.parent.selectedItems.slice(this.parent.selectedItems.length - 1);\n this.parent.setProperties({ selectedItems: slItems }, true);\n }\n this.selectRecords(this.parent.selectedItems);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n else if (!isNOU(this.gridObj)) {\n this.gridObj.clearSelection();\n this.interaction = true;\n }\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showItemCheckBoxes':\n case 'allowMultiSelection':\n if (!isNullOrUndefined(this.gridObj)) {\n this.currentSelectedItem = this.parent.selectedItems;\n this.gridObj.selectionSettings.type = e.newProp.allowMultiSelection ? 'Multiple' : 'Single';\n this.isSelectionUpdate = true;\n this.renderCheckBox();\n }\n break;\n case 'view':\n updateLayout(this.parent, 'Details');\n break;\n case 'width':\n this.onDetailsResize();\n }\n }\n };\n DetailsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n var pathField = this.parent.detailsViewSettings.columns.find(function (column) { return column.field === 'filterPath'; });\n if ((this.parent.breadcrumbbarModule.searchObj.element.value.trim() === '' && this.gridObj) ||\n (!isNullOrUndefined(pathField) && !isNullOrUndefined(pathField.hideAtMedia) && pathField.hideAtMedia !== '')) {\n this.parent.searchedItems = [];\n if (!this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n else {\n this.updatePathColumn();\n }\n }\n removeBlur(this.parent);\n if (this.parent.view === 'Details') {\n /* istanbul ignore next */\n this.isInteracted = false;\n showSpinner(this.parent.element);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.gridObj.freezeRefresh();\n if (this.parent.isReact) {\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n }\n this.emptyArgs = args;\n };\n DetailsView.prototype.updatePathColumn = function () {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && columnData[len - 1].field !== 'filterPath' && !this.parent.isMobile) {\n var pathColumn = {\n field: 'filterPath', headerText: getLocaleText(this.parent, 'Path'), minWidth: 180, width: 'auto'\n };\n this.gridObj.columns.push(pathColumn);\n this.adjustWidth(this.gridObj.columns, 'filterPath');\n this.adjustWidth(this.gridObj.columns, 'name');\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n };\n DetailsView.prototype.checkEmptyDiv = function (args) {\n var items = getSortedData(this.parent, args.files);\n if (items.length === 0 && !isNOU(this.element.querySelector('.' + CLS.GRID_VIEW))) {\n createEmptyElement(this.parent, this.element, args);\n }\n else if (items.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n if (this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY)) {\n var emptyDiv = this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY);\n this.element.querySelector('.' + CLS.GRID_VIEW).removeChild(emptyDiv);\n }\n else {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n }\n };\n DetailsView.prototype.onOpenInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n var data = this.gridObj.getSelectedRecords()[0];\n this.openContent(data);\n }\n };\n DetailsView.prototype.DblClickEvents = function (args) {\n this.gridObj.selectRows([args.rowIndex]);\n var data;\n if (args.rowData) {\n data = JSON.parse(JSON.stringify(args.rowData));\n this.openContent(data);\n }\n };\n DetailsView.prototype.openContent = function (data) {\n var _this = this;\n if (!hasReadAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: data, module: 'DetailsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var name_2 = getValue('name', data);\n if (getValue('isFile', data)) {\n var icon = fileType(data);\n if (icon === CLS.ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, data);\n createImageDialog(_this.parent, name_2, imgUrl);\n }\n }\n else {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', data);\n _this.parent.oldPath = _this.parent.path;\n var newPath = _this.parent.path + (isNOU(id) ? name_2 : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(name_2);\n _this.parent.pathId.push(getValue('_fm_id', data));\n _this.parent.itemData = [data];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, data);\n }\n _this.parent.isFiltered = false;\n }\n _this.element.focus();\n if (_this.parent.enableVirtualization) {\n _this.parent.element.querySelector('#' + _this.parent.element.id + CLS.IMG_DIALOG_ID).focus();\n }\n }\n });\n };\n /* istanbul ignore next */\n DetailsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.isLoaded = true;\n }\n if (this.parent.isFiltered) {\n this.updatePathColumn();\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.parent.notify(events.hideLayout, {});\n this.gridObj.element.classList.remove(CLS.DISPLAY_NONE);\n this.isInteracted = false;\n this.gridObj.clearSelection();\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() !== '') {\n this.onSearchFiles(args);\n }\n this.adjustHeight();\n if (this.gridObj.sortSettings.columns.length > 0 && this.gridObj.sortSettings.columns[0].field !== this.parent.sortBy) {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSearchFiles = function (args) {\n if (this.parent.view === 'Details') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (!this.parent.isLayoutChange) {\n this.parent.layoutSelectedItems = [];\n }\n this.updatePathColumn();\n this.parent.searchedItems = args.files;\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.removePathColumn = function (isRefresh) {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && (columnData[len - 1].field === 'filterPath')) {\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.gridObj.sortSettings.columns[0]) && this.gridObj.sortSettings.columns[0].field === 'filterPath') {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn('name', this.parent.sortOrder);\n }\n else {\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n this.parent.notify(events.sortByChange, {});\n }\n this.gridObj.columns.pop();\n if (!isRefresh) {\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n }\n };\n DetailsView.prototype.onFinalizeEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n };\n DetailsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'detailsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n DetailsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'detailsview') {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n };\n DetailsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n };\n DetailsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.isInteracted = false;\n this.removePathColumn(false);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.emptyArgs = args;\n };\n DetailsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'Details' && this.gridObj) {\n this.gridObj.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n DetailsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'Details') {\n this.isInteracted = false;\n if (this.parent.allowMultiSelection) {\n this.gridObj.selectionModule.selectRowsByRange(0, this.gridObj.getRows().length);\n }\n else {\n this.gridObj.selectRow(this.gridObj.getRows().length - 1);\n }\n this.isInteracted = true;\n this.interaction = true;\n }\n };\n DetailsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'Details') {\n this.removeSelection();\n this.interaction = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelectionChanged = function () {\n removeClass([this.element], CLS.HEADER_CHECK);\n if (this.parent.selectedItems.length > 0) {\n addClass([this.element], CLS.HEADER_CHECK);\n }\n };\n DetailsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.adjustHeight();\n };\n DetailsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n DetailsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n DetailsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.parent.itemData = this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.addEventListener = function () {\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.search, this.onSearchFiles, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.sortColumn, this.onSortColumn, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n this.parent.on(events.pasteInit, this.onPasteInit, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.resizeEnd, this.onDetailsResizeHandler, this);\n this.parent.on(events.splitterResize, this.onDetailsResize, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n };\n DetailsView.prototype.removeEventListener = function () {\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteInit, this.onPasteInit);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.search, this.onSearchFiles);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.filterEnd, this.onPathChanged);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.sortColumn, this.onSortColumn);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.resizeEnd, this.onDetailsResizeHandler);\n this.parent.off(events.splitterResize, this.onDetailsResize);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n };\n DetailsView.prototype.onActionFailure = function () { this.interaction = true; };\n DetailsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = [this.gridObj.getRowInfo(args.target).rowData];\n }\n };\n DetailsView.prototype.onPasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath !== '') ? this.gridObj.getSelectedRecords() :\n [getPathObject(this.parent)];\n }\n };\n DetailsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n DetailsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = dragTarget.closest('tr.e-row');\n if (!dragLi) {\n return null;\n }\n var name;\n if (dragLi.getElementsByClassName('e-fe-text')[0]) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-fe-text')[0].innerText;\n }\n else if (dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling.innerText;\n }\n if (dragLi && !dragLi.querySelector('.e-active')) {\n this.selectRecords([name]);\n }\n getModule(this.parent, dragLi);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n this.parent.dragData = this.gridObj.getSelectedRecords();\n var dragRow;\n if (this.parent.dragData.length === 0 && dragLi) {\n dragRow = this.gridObj.getRowInfo(dragLi);\n }\n if (dragRow) {\n this.parent.dragData.push(dragRow.rowData);\n }\n this.parent.dragPath = this.parent.path;\n this.parent.activeElements = this.gridObj.getSelectedRows();\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDetailsResize = function () {\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n var gridHeader = this.gridObj.getHeaderContent().querySelector('.e-headercontent');\n var gridHeaderColGroup = gridHeader.firstChild.childNodes[0];\n var gridContentColGroup = this.gridObj.getContent().querySelector('.e-content .e-table').children[0];\n var gridHeaderColNames = this.gridObj.getColumns();\n for (var i = 0; i < gridHeaderColNames.length; i++) {\n if ((!this.isNameWidth && gridHeaderColNames[i].field === 'name') || gridHeaderColNames[i].field === 'filterPath') {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n if (this.element.clientWidth <= 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else if (this.element.clientWidth > 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n else {\n if (this.element.clientWidth <= 680) {\n if (gridHeaderColNames[i].field === 'name') {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 180px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 180px');\n }\n }\n else if (this.element.clientWidth > 680) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n }\n }\n }\n };\n DetailsView.prototype.onDetailsResizeHandler = function () {\n this.onDetailsResize();\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n this.adjustHeight();\n }\n };\n DetailsView.prototype.createDragObj = function () {\n var _this = this;\n if (this.gridObj) {\n if (this.parent.allowDragAndDrop && isNullOrUndefined(this.dragObj)) {\n this.dragObj = new Draggable(this.gridObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n distance: 5,\n enableTailMode: true,\n dragArea: this.parent.element,\n dragTarget: '.' + CLS.ROW,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n this.dragObj = null;\n }\n }\n };\n DetailsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n /* istanbul ignore next */\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (!args.target.closest('tr')) {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n else {\n var info = null;\n info = this.gridObj.getRowInfo(args.target).rowData;\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n }\n };\n DetailsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.gridObj.getSelectedRecords();\n this.parent.activeElements = this.gridObj.getSelectedRows();\n }\n };\n DetailsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath ||\n this.parent.path === getDirectoryPath(this.parent, args) || this.parent.hasId) {\n this.onPathChanged(args);\n }\n }\n };\n DetailsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns modules name.\n * @private\n */\n DetailsView.prototype.getModuleName = function () {\n return 'detailsview';\n };\n DetailsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.gridObj) {\n if (this.parent.isReact) {\n this.gridObj.off('reactTemplateRender', this.reactTemplateRender);\n }\n this.unWireEvents();\n this.gridObj.destroy();\n }\n };\n DetailsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelection = function (action, args) {\n var eventArgs = {\n action: action, fileDetails: args.data, isInteracted: this.interaction, cancel: false, target: args.target\n };\n this.parent.trigger('fileSelection', eventArgs);\n args.cancel = eventArgs.cancel;\n if (!this.isMultiSelect) {\n this.isMultiSelect = true;\n if ((args.isShiftPressed || args.isCtrlPressed) && !this.parent.allowMultiSelection && (args.target && args.target.parentElement && !args.target.parentElement.classList.contains('e-checkbox-wrapper'))) {\n args.cancel = true;\n var rowIndex = (args && args.rowIndexes)\n ? args.rowIndexes[args.rowIndexes.length - 1]\n : args.rowIndex;\n this.gridObj.selectRow(rowIndex);\n }\n this.isMultiSelect = false;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelected = function (args) {\n this.parent.activeModule = 'detailsview';\n if (!this.parent.isLayoutChange || this.parent.isFiltered) {\n this.selectedRecords();\n }\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.getSelectedRowIndexes().length === 1) {\n this.firstItemIndex = this.gridObj.selectedRowIndex;\n }\n this.gridObj.element.setAttribute('tabindex', '-1');\n this.triggerSelect('select', args);\n var item = this.gridObj.getRowByIndex(this.gridObj.selectedRowIndex);\n this.updateType(item);\n if (!isNOU(item) && !isNOU(item.querySelector('.e-checkselect'))) {\n if (this.gridObj.getSelectedRowIndexes().length !== 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n var lastItem = this.gridObj.getRowByIndex(lastItemIndex);\n lastItem.querySelector('.e-checkselect').setAttribute('tabindex', '-1');\n }\n item.querySelector('.e-rowcell.e-fe-checkbox').removeAttribute('tabindex');\n }\n if (!isNOU(this.gridObj) && !isNOU(this.gridObj.element.querySelector('.e-checkselectall'))) {\n this.gridObj.element.querySelector('.e-checkselectall').setAttribute('tabindex', '-1');\n }\n var rows = this.gridObj.getSelectedRowIndexes();\n if (!this.parent.allowMultiSelection) {\n for (var i = 0; i < rows.length; i++) {\n if (rows[i] === this.gridObj.selectedRowIndex) {\n this.gridObj.getRowByIndex(rows[i]).setAttribute('tabindex', '0');\n }\n else {\n this.gridObj.getRowByIndex(rows[i]).removeAttribute('tabindex');\n }\n }\n }\n var len = rows.length;\n if (this.parent.enableVirtualization) {\n this.parent.currentItemText = getValue('name', args.data);\n }\n else if (len > 0) {\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.parent.currentItemText = getValue('name', data);\n }\n var indexes = getValue('rowIndexes', args);\n var multiSelect = getValue('enableSelectMultiTouch', this.gridObj.selectionModule);\n if (this.parent.isDevice && isNOU(indexes) && args.target && !multiSelect && !args.target.closest('.e-headercell')) {\n this.parent.isFile = getValue('isFile', args.data);\n if (!this.parent.isFile) {\n this.openContent(args.data);\n }\n }\n this.parent.visitedItem = args.row;\n if ((!this.parent.enableVirtualization) || (!args.isHeaderCheckboxClicked)) {\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n if (!this.parent.isLayoutChange) {\n this.isInteracted = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'Details' && !isNOU(this.gridObj)) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n }\n };\n DetailsView.prototype.selectedRecords = function () {\n this.parent.setProperties({ selectedItems: [] }, true);\n var selectedRecords = this.gridSelectNodes();\n var selectSize = 0;\n while (selectSize < selectedRecords.length) {\n var record = selectedRecords[selectSize];\n var name_3 = getItemName(this.parent, record);\n this.parent.selectedItems.push(name_3);\n selectSize++;\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n };\n DetailsView.prototype.onDeSelection = function (args) {\n /* istanbul ignore next */\n if (!this.parent.allowMultiSelection && isNOU(args.data)) {\n this.gridObj.getRowByIndex(args.rowIndex).removeAttribute('tabindex');\n }\n else if (this.gridObj.getSelectedRowIndexes().length > 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n this.gridObj.getRowByIndex(lastItemIndex).querySelector('.e-checkselect').removeAttribute('tabindex');\n }\n if (this.gridObj.selectedRowIndex === -1) {\n this.gridObj.element.setAttribute('tabindex', '0');\n }\n if (!this.isInteracted) {\n this.isInteracted = true;\n return;\n }\n this.selectedRecords();\n if (this.parent.selectedItems.length === 0) {\n setValue('enableSelectMultiTouch', false, this.gridObj.selectionModule);\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('unselect', args);\n this.parent.visitedItem = null;\n };\n DetailsView.prototype.triggerSelect = function (action, args) {\n var eventArgs = { action: action, fileDetails: args.data, isInteracted: this.interaction };\n this.parent.trigger('fileSelect', eventArgs);\n this.interaction = true;\n };\n DetailsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.gridObj.element, {\n keyAction: this.keyupHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.gridObj.element, 'blur', this.removeFocus, this);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n };\n DetailsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n EventHandler.remove(this.gridObj.element, 'blur', this.removeFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n };\n DetailsView.prototype.wireClickEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n var ele = this.gridObj.getContent();\n this.clickObj = new Touch(ele, {\n tap: function (eve) {\n if (eve.tapCount === 1 && eve.originalEvent.target.classList.contains('e-content')) {\n _this.onClearAllInit();\n }\n },\n tapHold: function (e) {\n if (_this.parent.isDevice) {\n e.originalEvent.preventDefault();\n if (_this.parent.allowMultiSelection) {\n setValue('enableSelectMultiTouch', _this.parent.allowMultiSelection, _this.gridObj.selectionModule);\n addClass([_this.parent.element], CLS.MULTI_SELECT);\n }\n var target = e.originalEvent.target;\n if (target) {\n var row = closest(target, '.' + CLS.ROW);\n var index = _this.gridObj.getRows().indexOf(row);\n _this.gridObj.selectRow(index);\n }\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.removeSelection = function () {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n this.gridObj.clearSelection();\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.selectedRowIndex === -1) {\n this.startIndex = null;\n }\n this.isInteracted = true;\n };\n DetailsView.prototype.removeFocus = function () {\n this.addFocus(null);\n };\n DetailsView.prototype.onBlur = function (e) {\n if ((e.relatedTarget !== null && closest(e.relatedTarget, '.e-grid') !== e.relatedTarget)) {\n return;\n }\n if (!isNOU(this.gridObj.element)) {\n var thElements = this.gridObj.element.querySelectorAll('th');\n for (var i = 0; i < thElements.length; i++) {\n if (thElements[i].classList.contains('e-focus')) {\n this.addFocus(null);\n }\n }\n }\n };\n DetailsView.prototype.getFocusedItemIndex = function () {\n return (!isNOU(this.getFocusedItem())) ?\n parseInt(this.getFocusedItem().getAttribute('data-rowindex'), 10) : null;\n };\n /* istanbul ignore next */\n DetailsView.prototype.keydownHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'moveDown':\n case 'moveUp':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.keyupHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n e.preventDefault();\n var action = e.action;\n var gridItems = getSortedData(this.parent, this.gridObj.dataSource);\n var gridLength = gridItems.length;\n var focIndex = this.getFocusedItemIndex();\n var selIndex = this.gridObj.selectedRowIndex;\n var selRowIndeces = this.gridObj.getSelectedRowIndexes();\n var rowData;\n var firstItem;\n var lastItem;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'enter':\n if (this.gridObj.selectedRowIndex === -1 && this.gridObj.allowSorting === true) {\n if (!e.target.classList.contains('e-fe-grid-icon')) {\n var direction = !e.target.getElementsByClassName('e-ascending').length ? 'Ascending' : 'Descending';\n var currentField = this.gridObj.getColumnByUid(e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid')).field;\n this.gridObj.sortColumn(currentField, direction);\n if (!isNOU(this.getFocusedItem().nextSibling)) {\n this.getFocusedItem().nextSibling.setAttribute('tabindex', '0');\n }\n }\n break;\n }\n rowData = this.gridObj.getRowsObject()[this.gridObj.selectedRowIndex].data;\n if (rowData) {\n var data = JSON.parse(JSON.stringify(rowData));\n this.openContent(data);\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlA':\n if (!isNOU(gridItems[0]) && this.parent.allowMultiSelection) {\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n var crtSrlPos = cnTable.scrollTop;\n var crtFocusIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n cnTable.scrollTop = crtSrlPos;\n if (crtFocusIndex !== -1) {\n this.addFocus(crtFocusIndex);\n }\n }\n break;\n case 'ctrlHome':\n case 'tab':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection && e.action === 'ctrlHome') {\n this.gridObj.selectRow(0);\n }\n else if (this.gridObj.selectedRowIndex !== -1 && e.action === 'tab') {\n return;\n }\n else {\n this.addHeaderFocus(e);\n }\n }\n break;\n case 'ctrlEnd':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow(gridLength - 1);\n }\n else {\n this.addFocus(gridLength - 1);\n }\n }\n break;\n case 'shiftHome':\n case 'shiftEnd':\n case 'csHome':\n case 'csEnd':\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : gridItems.length - 1);\n }\n else {\n if (!isNOU(gridItems[0])) {\n if (!isNOU(selIndex) && selIndex !== -1) {\n this.checkRowsKey(gridItems, selIndex, null, e);\n }\n else {\n if (e.action === 'csHome' || e.action === 'shiftHome') {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n }\n }\n }\n }\n break;\n case 'space':\n case 'csSpace':\n case 'shiftSpace':\n case 'ctrlSpace':\n this.spaceSelection(selRowIndeces, focIndex, selIndex, e);\n break;\n case 'csUp':\n case 'csDown':\n case 'shiftUp':\n case 'shiftDown':\n this.shiftMoveMethod(gridItems, selIndex, focIndex, selRowIndeces, e);\n break;\n case 'ctrlUp':\n case 'ctrlDown':\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n break;\n case 'home':\n firstItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[0])];\n this.parent.setProperties({ selectedItems: firstItem }, true);\n this.selectRecords(firstItem);\n break;\n case 'moveUp':\n case 'moveDown':\n this.moveFunction(gridItems, e, selIndex);\n break;\n case 'end':\n lastItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[gridLength - 1])];\n this.parent.setProperties({ selectedItems: lastItem }, true);\n this.selectRecords(lastItem);\n break;\n case 'back':\n this.parent.traverseBackward();\n break;\n }\n };\n DetailsView.prototype.gridSelectNodes = function () {\n return this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.doDownload = function () {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionDownload);\n return;\n }\n }\n Download(this.parent, this.parent.path, this.parent.selectedItems);\n }\n };\n DetailsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasEditAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n DetailsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n DetailsView.prototype.updateRenameData = function () {\n var data = this.gridSelectNodes()[0];\n updateRenamingData(this.parent, data);\n };\n DetailsView.prototype.shiftMoveMethod = function (gridItems, selIndex, focIndex, selRowIndeces, e) {\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n if (selIndex === -1 && (e.action === 'csUp' || e.action === 'csDown')) {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n else if (selIndex !== -1 && focIndex !== selIndex &&\n !((e.action === 'csUp' || e.action === 'csDown') && this.isSelected(selRowIndeces, focIndex))) {\n this.shiftSelectFocusItem(selIndex, focIndex, selRowIndeces, e);\n }\n else {\n this.shiftSelectedItem(selIndex, selRowIndeces, gridItems, e);\n }\n }\n };\n DetailsView.prototype.moveFunction = function (selectedItems, e, rowIndex) {\n if (!isNOU(this.getFocusedItem()) && this.parent.allowMultiSelection) {\n if (e.action === 'moveDown') {\n this.gridObj.selectRow(this.getFocusedItemIndex() + 1);\n }\n else {\n this.gridObj.selectRow(this.getFocusedItemIndex() - 1);\n }\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n if (e.action === 'moveDown' || e.action === 'ctrlDown' || e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectRow(rowIndex + ((rowIndex !== selectedItems.length - 1) ? 1 : 0));\n }\n else {\n this.gridObj.selectRow(rowIndex - ((rowIndex !== 0) ? 1 : 0));\n }\n }\n else {\n if (!isNOU(selectedItems[0])) {\n this.gridObj.selectRow(0);\n }\n }\n };\n DetailsView.prototype.spaceSelection = function (selRowIndeces, focIndex, selIndex, e) {\n if (!this.isSelected(selRowIndeces, focIndex) && selIndex !== -1 && (e.action === 'shiftSpace' || e.action === 'csSpace')) {\n if (focIndex < selIndex) {\n this.gridObj.selectionModule.selectRowsByRange(focIndex, selIndex);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(selIndex, focIndex);\n }\n }\n else if (!isNOU(this.getFocusedItem()) && focIndex !== selIndex) {\n selRowIndeces.push(this.getFocusedItemIndex());\n this.gridObj.selectRows(selRowIndeces);\n }\n else if (selIndex !== -1 && e.action === 'ctrlSpace' && this.parent.allowMultiSelection) {\n var lItem = selIndex;\n selRowIndeces.pop();\n this.gridObj.selectRows(selRowIndeces);\n this.addFocus(lItem);\n }\n else if (e.action === 'shiftSpace') {\n this.gridObj.selectRow(selIndex);\n }\n };\n DetailsView.prototype.ctrlMoveFunction = function (items, e, rowIndex) {\n var nextItem;\n if (!isNOU(this.getFocusedItem())) {\n var nextIndex = this.getFocusedItemIndex();\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n nextIndex + ((nextIndex < items.length - 1) ? 1 : 0) : nextIndex - ((nextIndex < 1) ? 0 : 1);\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n rowIndex + ((rowIndex < items.length) ? 1 : 0) : rowIndex - ((rowIndex < 1) ? 0 : 1);\n }\n else {\n if (!isNOU(items[0])) {\n nextItem = 0;\n }\n }\n this.addFocus(nextItem);\n };\n DetailsView.prototype.checkRowsKey = function (items, indexValue, focIndex, e) {\n if (this.gridObj.checkAllRows === 'Uncheck' || this.gridObj.checkAllRows === 'Intermediate') {\n if (e.action !== 'csHome' && e.action !== 'csEnd') {\n if (isNOU(this.startIndex) && this.firstItemIndex !== indexValue) {\n this.firstItemIndex = indexValue;\n }\n if (e.action === 'shiftEnd') {\n this.gridObj.selectionModule.selectRowsByRange(this.firstItemIndex, items.length - 1);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, this.firstItemIndex);\n }\n this.startIndex = indexValue;\n }\n else {\n if (e.action === 'csEnd') {\n this.gridObj.\n selectRows(this.InnerItems(isNOU(indexValue) ? 0 : indexValue, isNOU(focIndex) ? items.length - 1 : focIndex, e));\n }\n else {\n if (isNOU(indexValue)) {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectRows(this.InnerItems(isNOU(focIndex) ? 0 : focIndex, indexValue, e));\n }\n }\n }\n }\n else {\n this.gridObj.selectionModule.selectRow(((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : items.length - 1));\n }\n };\n DetailsView.prototype.InnerItems = function (fItem, lItem, e) {\n var itemArr = this.gridObj.getSelectedRowIndexes();\n if (e.action === 'csEnd') {\n for (var i = fItem + 1; i <= lItem; i++) {\n itemArr.push(i);\n }\n }\n else {\n for (var i = lItem - 1; fItem <= i; i--) {\n itemArr.push(i);\n }\n }\n return itemArr;\n };\n DetailsView.prototype.shiftSelectFocusItem = function (selIndex, fIndex, selRowIndexes, e) {\n var lItem = fIndex + ((e.action === 'shiftDown' || e.action === 'csDown') ? 1 : -1);\n var fItem = isNOU(this.startIndex) ? selIndex : selRowIndexes[0];\n if (fItem === lItem) {\n this.gridObj.selectRow(fItem);\n }\n else {\n if (fItem < lItem) {\n if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n }\n else if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n }\n this.startIndex = this.gridObj.selectedRowIndex;\n };\n DetailsView.prototype.addFocus = function (item) {\n var fItem = this.getFocusedItem();\n var itemElement = this.gridObj.getRowByIndex(item);\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS, CLS.FOCUSED]);\n }\n if (!isNOU(itemElement)) {\n this.gridObj.element.setAttribute('tabindex', '-1');\n itemElement.setAttribute('tabindex', '0');\n itemElement.focus();\n addClass([itemElement], [CLS.FOCUS, CLS.FOCUSED]);\n }\n };\n DetailsView.prototype.addHeaderFocus = function (e) {\n var treeFocus = select('.e-row', this.element);\n this.gridObj.element.setAttribute('tabindex', '-1');\n var nameFocus;\n if (!isNOU(e.target) && e.target.classList.contains('e-defaultcursor')) {\n this.addFocus(0);\n nameFocus = e.target.nextElementSibling;\n }\n else if (!isNOU(this.gridObj.element.querySelector('.e-focus')) && (this.gridObj.element.querySelector('.e-focus').tagName === 'TH')) {\n nameFocus = this.gridObj.element.querySelector('.e-focus').nextElementSibling;\n this.addFocus(0);\n }\n else {\n nameFocus = select('th.e-fe-grid-icon', this.element);\n }\n if (!isNOU(nameFocus)) {\n nameFocus.setAttribute('tabindex', '0');\n nameFocus.focus();\n addClass([nameFocus], [CLS.FOCUS, CLS.FOCUSED]);\n treeFocus.setAttribute('tabindex', '0');\n if (treeFocus.tabIndex === 0 && nameFocus.tabIndex === 0) {\n removeClass([treeFocus], [CLS.FOCUS, CLS.FOCUSED]);\n }\n }\n };\n DetailsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.FOCUSED, this.element);\n };\n DetailsView.prototype.isSelected = function (selRowIndexes, focIndex) {\n var check = false;\n for (var i = 0; i <= selRowIndexes.length - 1; i++) {\n if (selRowIndexes[i] === focIndex) {\n check = true;\n break;\n }\n }\n return check;\n };\n DetailsView.prototype.shiftSelectedItem = function (selIndex, selRowIndexes, gridItems, e) {\n if (selIndex === -1) {\n this.gridObj.selectRow(0);\n }\n else {\n if (isNOU(this.startIndex) && e.shiftKey) {\n this.startIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectRows([selIndex, (e.action === 'shiftDown' || e.action === 'csDown') ?\n (selIndex + ((selIndex !== gridItems.length - 1) ? 1 : 0)) : (selIndex - ((selIndex !== 0) ? 1 : 0))]);\n }\n else {\n if (e.action === 'shiftDown' || e.action === 'shiftUp') {\n if (e.action === 'shiftDown' && selRowIndexes.indexOf(selIndex + 1) === -1) {\n if (selIndex !== gridItems.length - 1) {\n selRowIndexes.push(selIndex + 1);\n }\n }\n else if (e.action === 'shiftUp' && selRowIndexes.indexOf(selIndex - 1) === -1) {\n if (selIndex !== 0) {\n selRowIndexes.push(selIndex - 1);\n }\n }\n else {\n selRowIndexes.pop();\n }\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n if (e.action === 'csDown') {\n if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() + 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() + 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() + 1);\n }\n }\n else if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() - 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() - 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() - 1);\n }\n }\n }\n }\n };\n DetailsView.prototype.onMethodCall = function (e) {\n if (this.parent.view !== 'Details') {\n return;\n }\n var action = getValue('action', e);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', e));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', e));\n break;\n case 'openFile':\n this.openFile(getValue('id', e));\n break;\n case 'createFolder':\n this.interaction = false;\n break;\n case 'renameFile':\n this.interaction = false;\n this.renameFile(getValue('id', e), getValue('newName', e));\n break;\n case 'selectAll':\n this.interaction = false;\n this.onSelectAllInit();\n break;\n case 'clearSelection':\n this.interaction = false;\n this.onClearAllInit();\n break;\n }\n };\n DetailsView.prototype.getRecords = function (nodes) {\n var gridRecords = this.gridObj.getCurrentViewRecords();\n var records = [];\n var hasFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filter = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !hasFilter) {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n if (nodes.indexOf(getValue(filter, gridRecords[i])) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n else {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var name_4 = getValue('filterPath', gridRecords[i]) + getValue('name', gridRecords[i]);\n if (nodes.indexOf(name_4) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n return records;\n };\n DetailsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n var records = this.getRecords(ids);\n if (records.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < records.length; i++) {\n data[i] = records[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n var dRecords = this.getRecords(ids);\n if (dRecords.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < dRecords.length; i++) {\n data[i] = dRecords[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n var records = this.getRecords([id]);\n if (records.length > 0) {\n this.openContent(records[0]);\n }\n };\n DetailsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n var records = this.getRecords([id]);\n if (records.length > 0) {\n updateRenamingData(this.parent, records[0]);\n if (!isNOU(name)) {\n if (hasEditAccess(this.parent.itemData[0])) {\n rename(this.parent, this.parent.path, name);\n }\n else {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n }\n else {\n doRename(this.parent);\n }\n }\n };\n return DetailsView;\n}());\nexport { DetailsView };\n"],"names":["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","AjaxSettings","ChildProperty","Property","apply","defaultToolbarItems","ToolbarSettings","ToolbarItem","SearchSettings","columnArray","field","headerText","minWidth","template","customAttributes","class","type","format","width","initializeCSPTemplate","data","size","DetailsViewSettings","fileItems","folderItems","layoutItems","ContextMenuSettings","NavigationPaneSettings","UploadSettings","Column","TOOLBAR_ID","LAYOUT_ID","NAVIGATION_ID","TREE_ID","GRID_ID","LARGEICON_ID","DIALOG_ID","IMG_DIALOG_ID","EXTN_DIALOG_ID","UPLOAD_DIALOG_ID","CONTEXT_MENU_ID","CONTENT_ID","BREADCRUMBBAR_ID","UPLOAD_ID","SEARCH_ID","ROOT","CONTROL","CHECK_SELECT","ROOT_POPUP","MOBILE","MOB_POPUP","MULTI_SELECT","FILTER","LAYOUT","NAVIGATION","LAYOUT_CONTENT","LARGE_ICONS","TB_ITEM","LIST_ITEM","LIST_TEXT","LIST_PARENT","TB_OPTION_TICK","TB_OPTION_DOT","BLUR","ACTIVE","HOVER","FOCUS","FOCUSED","CHECK","FRAME","CB_WRAP","ROW","EMPTY","EMPTY_CONTENT","EMPTY_INNER_CONTENT","CLONE","DROP_FOLDER","DROP_FILE","FOLDER","ICON_IMAGE","ICON_MUSIC","ICON_VIDEO","LARGE_ICON","LARGE_EMPTY_FOLDER","GRID_HEADER","TREE_VIEW","MENU_ITEM","MENU_ICON","SUBMENU_ICON","GRID_VIEW","GRID_CONTENT","ICON_VIEW","ICON_OPEN","ICON_UPLOAD","ICON_CUT","ICON_COPY","ICON_PASTE","ICON_DELETE","ICON_RENAME","ICON_NEWFOLDER","ICON_DETAILS","ICON_SHORTBY","ICON_REFRESH","ICON_SELECTALL","ICON_DOWNLOAD","ICON_GRID","ICON_LARGE","ICON_BREADCRUMB","ICON_CLEAR","ICONS","ERROR_CONTENT","BREADCRUMBS","RTL","DISPLAY_NONE","FULLROW","SPLIT_BAR","HEADER_CHECK","OVERLAY","VALUE","modelChanged","initialEnd","finalizeEnd","createEnd","filterEnd","pathDrag","deleteInit","deleteEnd","refreshEnd","resizeEnd","splitterResize","pathChanged","destroy","beforeRequest","skipUpload","afterRequest","layoutRefresh","actionFailure","search","openInit","openEnd","selectionChanged","selectAllInit","clearAllInit","clearPathInit","layoutChange","sortByChange","nodeExpand","detailsInit","menuItemData","renameInit","renameEndParent","renameEnd","showPaste","hidePaste","selectedData","cutCopyInit","pasteInit","pasteEnd","cutEnd","hideLayout","updateTreeSelection","sortColumn","pathColumn","searchTextChange","downloadInit","dropInit","dragEnd","dropPath","dragging","updateSelectionData","methodCall","permissionRead","permissionEdit","permissionEditContents","permissionUpload","permissionDownload","updatePath","node","instance","text","getValue","id","getAttribute","newText","isNOU","setProperties","path","getPath","hasId","pathId","getPathId","pathNames","getPathNames","element","matched","getParents","ids","push","names","isId","parentText","el","parentNode","matches","CLS.LIST_ITEM","select","CLS.LIST_TEXT","textContent","classList","contains","CLS.TREE_VIEW","generatePath","parent","newPath","parseInt","toString","feParent","removeActive","isCut","removeBlur","selectedNodes","actionRecords","enablePaste","notify","events.hidePaste","activeElement","action","isSearchCut","activeElements","events.cutCopyInit","blurEle","activeModule","targetPath","getParentPath","getModule","addBlur","events.showPaste","activeRecords","breadcrumbbarModule","searchObj","value","isFiltered","i_1","selectedItems","nodes","add","CLS.BLUR","hover","querySelectorAll","CLS.HOVER","remove","CLS.ROW","closest","CLS.LARGE_ICON","searchWordHandler","isLayoutChange","caseSensitive","searchWord","events.pathColumn","args","isFileSystemData","itemData","fileSystemData","read","events.layoutChange","searchSettings","filterType","filteredData","filter","obj","parentId","DataManager","executeLocal","Query","where","ignoreCase","searchValue","toLowerCase","Search","events.search","showHiddenItems","getPathObject","hiddenItems","isSortByClicked","files","oldView","detailsviewModule","gridObj","dataSource","largeiconsviewModule","allItems","updateLayout","view","layoutSelectedItems","getTargetModule","tartgetModule","CLS.ROOT","CLS.CONTROL","CLS.GRID_CONTENT","CLS.LARGE_ICONS","targetModule","refresh","hasReadAccess","events.refreshEnd","createDeniedDialog","events.permissionRead","openAction","events.openEnd","copyFiles","fileAction","cutFiles","fileType","file","filetype","indexOf","split","join","CLS.ICON_IMAGE","CLS.ICON_MUSIC","CLS.ICON_VIDEO","CLS.FOLDER","getImageUrl","item","baseUrl","pathUrl","fileName","fPath","imgUrl","trigger","eventArgs_1","fileDetails","imageUrl","ajaxSettings","url","encodeURIComponent","eventArgs","imgId","replace","Date","getTime","getFullPath","filePath","getName","name","getSortedData","items","query","sortOrder","isNullOrUndefined","sortBy","group","lists","getObject","result","feFiles","createEmptyElement","emptyEle","dragFile","layoutElement","CLS.LAYOUT_ID","addressBarHeight","CLS.BREADCRUMBBAR_ID","offsetHeight","top","eDiv","CLS.GRID_HEADER","querySelector","CLS.EMPTY","emptyDiv","createElement","className","emptyFolder","CLS.LARGE_EMPTY_FOLDER","CLS.EMPTY_CONTENT","CLS.EMPTY_INNER_CONTENT","CLS.GRID_VIEW","appendChild","error","innerHTML","getLocaleText","style","marginTop","getDirectories","setNodeId","rootId","dirs","len","setValue","setDateObject","localeString","dateFormat","createdDate","modifiedDate","formatDate","locale","localeObj","getConstant","getCssClass","css","cssClass","sortbyClickHandler","getSortField","isMobile","events.sortColumn","module","events.sortByChange","column","substring","lastIndexOf","detailsViewSettings","columns","setNextPath","currfolders","folders","originalPath","root","eventName","events.finalizeEnd","events.initialEnd","openSearchFolder","navData","isRoot","searchData","events.clearPathInit","selectedNode","pasteHandler","isDragDrop","folderPath","includes","validateSubFolder","events.pasteInit","paste","createDialog","code","message","fileExists","dragPath","subFolder","name_1","dragData","srcData","dragNodes","tempTarget","dropHandler","dropData","oldPath","getDirectoryPath","cwd","doPasteUpdate","operation","events.dragEnd","events.cutEnd","duplicateItems","pasteNodes","count","droppedObjects","duplicateRecords","isPasteError","isDropEnd","isSearchDrag","isPathDrag","events.pasteEnd","readDropPath","expandedId","events.pathDrag","navigationpaneModule","treeObj","document","events.dropPath","getDuplicateData","records","createVirtualDragElement","getItemName","cloneIcon","cloneName","virtualEle","ele","CLS.CLONE","badge","virtualDragElement","dragStopHandler","dragArgs","cancel","treeExpandTimer","window","clearTimeout","removeDropTarget","uploadObj","dropArea","CLS.CONTENT_ID","detach","events.dropInit","dragCount","dragStartHandler","dragObj","allowDragAndDrop","intDestroy","event","dragCancel","removeItemClass","CLS.DROP_FOLDER","CLS.DROP_FILE","scrollHandler","scrollParent","nodeClass","clientY","position","elementData","getBoundingClientRect","clientHeight","scrollBy","draggingHandler","canDrop","setTimeout","events.dragging","parentElement","y","firstElementChild","objectToString","str","keys","updateRenamingData","currentItemText","isFile","filterPath","doRename","hasEditAccess","events.permissionEdit","doDownload","hasDownloadAccess","events.permissionDownload","Download","doDeleteFiles","newIds","Delete","doDownloadFiles","getAccessClass","permission","hasContentAccess","hasUploadAccess","createNewFolder","details","events.permissionEditContents","uploadItem","eleId","CLS.UPLOAD_ID","click","events.permissionUpload","closePopup","dialogObj","hide","getAccessDetails","isPathPermision","accessMessage","copyOrMovePermission","undefined","responseData","createAjax","readSuccess","createFolder","itemName","createSuccess","filterDataVal","filterData","extend","filterSuccess","rename","itemNewName","newName","showFileExtension","renameSuccess","pasteOperation","renameItems","targetData","renameFiles","destinationPath","pasteSuccess","deleteSuccess","GetDetails","detailsSuccess","isFileExists","some","findIndexById","findIndex","String","filterById","filterByParent","createNewItem","isCopy","newItem","call","currentDate","assign","dateCreated","dateModified","hasChild","getUid","createErrorObject","triggerClientEvents","createEventArgs","folderName","parentFolder","newObject","data_1","deleteEventArgs","forEach","index","splice","subItem","renameEventArgs","moveEventArgs","folderSubItems_1","itemPermission","pathPermission","file_1","existingFileCount","copyFolderItems","getTargetFiles","fileData","pathArray","currItem","subItems","parentID","searchEventArgs","searchResults","searchText","fn","mode","dataType","contentType","JSON","stringify","onSuccess","onFailure","beforeSend","beforeSendArgs","isMultipleFiles","itemNames","totalSize","events.beforeRequest","idValue","isFileOperation","map","getSize","reduce","accumulator","currentObject","location","multipleFiles","created","modified","performReadOperation","Ajax","result_1","triggerAjaxFailure","parse","send","hz","toFixed","events.afterRequest","intl","rootAliasName","Internationalization","rootName","location_1","RegExp","match","events.searchTextChange","copiedItems","events.selectionChanged","pop","handleCatchError","visible","nextElementSibling","createdItem","events.createEnd","renamedItem","isArray","events.renameEndParent","renameText","events.pathChanged","events.renameEnd","moveorcopyEventArgs","fileLength","createExtDialog","events.deleteEnd","searchString","searchSuccess","downloadUrl","responseType","useFormPost","downloadArgs","form","attrs","method","download","input","forms","namedItem","submit","removeChild","contentDisposition_1","fileName_1","Fetch","onLoad","e","headers","get","extractedFilename","filenameMatch","blobUrl","URL","createObjectURL","link","href","body","status","options","header","content","buttons","dialogName","open","triggerPopupOpen","close","triggerPopupClose","buttonModel","isPrimary","onSubmit","createInput","oninput","onValidate","onkeyup","getKeyCode","focus","setSelectionRange","bind","events.deleteInit","onReSubmit","inputEle","txt","formattedString","CLS.VALUE","strArr","val","substr","every","arr","toLocaleUpperCase","events.actionFailure","CLS.ERROR_CONTENT","Dialog","beforeOpen","keydownAction","beforeClose","triggerPopupBeforeClose","animationSettings","effect","showCloseIcon","closeOnEscape","allowDragging","isModal","popupTarget","CLS.MOB_POPUP","CLS.ROOT_POPUP","enableRtl","enableHtmlSanitizer","isStringTemplate","appendTo","CLS.DIALOG_ID","dataBind","show","replaceItems","extOptions","duplicateContent","extDialogObj","item_1","indexval","item_2","ind","retryFiles","isRetryOpened","dialogEle","container","checkContainer","checkbox","CheckBox","label","change","isApplySame","checked","retryDlgClose","retryDlgUpdate","events.skipUpload","beforeExtOpen","CLS.EXTN_DIALOG_ID","triggerPopupBeforeOpen","dlgModule","popupName","popupModule","eventargs","isInteracted","isKeepBoth","onKeepBothAll","retryArgs","retry","onReplaceAll","flag","placeholder","Input","properties","preventKeydown","selectAll","dlgName","btnElement","btnCount","_loop_1","onkeydown","keyCode","preventDefault","onSubmitValidate","oldExtension","newExtension","oIndex","renamedId","nIndex","test","addInvalid","which","charCode","createImageDialog","image","src","alt","viewerObj","height","enableResize","X","Y","updateImage","resizing","resizeStop","CLS.IMG_DIALOG_ID","imgWrap","cssObj","getComputedStyle","paddingWidth","parseFloat","paddingRight","paddingHeight","paddingBottom","offsetWidth","LargeIconsView","render","visitedItem","startItem","showSpinner","resetMultiSelect","setAttribute","listObj","unWireEvents","removeEventListener","events.hideLayout","iconsView","CLS.LARGEICON_ID","ul","activeEle","ariaAttributes","itemRole","listRole","itemText","groupItemRole","wrapperRole","showIcon","fields","iconCss","htmlAttributes","itemCreated","onItemCreated","renderList","sortComparer","DataUtil","sort","comparer","CLS.DISPLAY_NONE","enableVirtualization","virtualizationModule","setUIVirtualization","listElements","ListBase","createListFromJson","itemList","slice","preventImgDrag","createDragObj","emptyList","CLS.LIST_PARENT","isPasteOperation","selectItems","uploadOperation","CLS.ACTIVE","maxHeight","getItemCount","addEventListener","wireEvents","setUlElementHeight","wireScrollEvent","isRendered","hideSpinner","checkItem","x","z","ondragstart","_this","Draggable","enableTailMode","distance","enableAutoScroll","dragTarget","helper","dragHelper","cursorAt","dragCursorPosition","dragArea","dragStop","drag","clone","dragStart","sender","dragLi","setFocus","getItemObject","onDropInit","cwdData","getModuleName","dropLi","info","removeAttribute","curData","textEle","renderCheckbox","checkElement","showItemCheckBoxes","createCheckBox","insertBefore","childNodes","onLayoutChange","indexes","getIndexes","length_1","checkEle","checkLength","checkState","icon","selected","showThumbnail","title","onFinalizeEnd","onCreateEnd","clearSelect","onSelectedData","updateSelectedData","onDeleteInit","onDeleteEnd","onRefreshEnd","onRenameInit","updateRenameData","onPathChanged","searchedItems","addSelection","onOpenInit","doOpenAction","onHideLayout","onSelectAllInit","lastItem","getFirstItem","getLastItem","doSelection","ctrlKey","shiftKey","isInteraction","onClearAllInit","clearSelection","onBeforeRequest","onAfterRequest","onSearch","onLayoutRefresh","onUpdateSelectionData","onPathColumn","isDestroyed","off","events.selectedData","events.openInit","events.modelChanged","onPropertyChanged","events.methodCall","onMethodCall","onActionFailure","events.renameInit","events.selectAllInit","events.clearAllInit","events.menuItemData","onMenuItemData","events.splitterResize","splitterResizeHandler","events.resizeEnd","resizeHandler","onpasteInit","onpasteEnd","oncutCopyInit","events.detailsInit","onDetailsInit","events.layoutRefresh","onDropPath","events.updateSelectionData","events.filterEnd","on","currentSelected","_i","_a","newProp","allowMultiSelection","wireClickEvent","keyboardModule","KeyboardEvents","keyAction","keyActionHandler","keyConfigs","keyboardDownModule","keydownActionHandler","EventHandler","onMouseOver","targetEle","toBind","clickObj","Touch","tap","eve","isDevice","tapCount","tapEvent","doTapAction","originalEvent","dblClickHandler","clickHandler","tapHold","multiSelect","addClass","CLS.MULTI_SELECT","updateType","cList","addActive","isSelectAllCalled","CLS.CHECK","triggerSelection","CLS.FRAME","startIndex","endIndex","addFocus","triggerSelect","removeClass","details_1","fileOpenArgs","folder","fItem","getFocusedItem","firstItem","scrollTo","scrollHeight","navigateItem","scrollTop","navigateDown","navigateRight","csEndKey","csHomeKey","csDownKey","csLeftKey","csRightKey","csUpKey","spaceKey","ctrlAKey","getVisitedItem","performDelete","performRename","traverseBackward","CLS.FOCUS","getActiveItem","isTowards","nItem","getNextItem","perRow","li","nextItem","marginValue","getPropertyValue","isVisible","liScrPos","getCurFocusedItem","liParent","dItem","lItem","rItem","uItem","getDataName","preItem","toCheck","CLS.CB_WRAP","eles","visitedData","j","byId","resultData","newData","deleteFiles","downloadFiles","openFile","renameFile","getItemsIndex","isFilter","filterName","name_2","end","home","tab","moveDown","moveLeft","moveRight","moveUp","ctrlEnd","ctrlHome","ctrlDown","ctrlLeft","ctrlRight","ctrlUp","shiftEnd","shiftHome","shiftDown","shiftLeft","shiftRight","shiftUp","csEnd","csHome","csDown","csLeft","csRight","csUp","space","ctrlSpace","shiftSpace","csSpace","ctrlA","enter","altEnter","esc","del","ctrlX","isMac","ctrlC","ctrlV","f2","shiftdel","back","ctrlD","BreadCrumbBar","prop","allowSearchOnTyping","searchEventBind","onPathChange","paths","addressbarUL","addressbarLI","pathNamesLen","addressATag","CLS.ICONS","innerText","ulElement","breadCrumbBarNavigation","searchWrap","subMenuObj","updateBreadCrumbBar","addresBarUL","liElements","pRight","pLeft","breadCrumbBarWidth","liElementsWidth","liElementsWidths","clientWidth","searchContainer","CLS.SEARCH_ID","searchInput","autocomplete","aria-label","searchEle","span","onShowInput","TextBox","showClearButton","onFocus","blur","onBlur","searchChangeHandler","onKeyUp","searchWrapWidth","diff","liElement","utext","subMenuLi","subMenuSpan","DropDownButton","CLS.ICON_BREADCRUMB","iconPosition","beforeItemRender","addSubMenuAttributes","subMenuSelectOperations","addressPathClickHandler","anchor","allow","searchTimer","nodeName","children","currentPath","triggerFileOpen","treeNodeId","events.updateTreeSelection","CLS.FILTER","list","liElementId","addressBarLink","newpath","onUpdatePath","removeSearchValue","onRenameEnd","onResize","onPasteEnd","events.destroy","onSearchTextChange","liEle","addressPath","ContextMenu","downarrow","uparrow","contextMenu","Menu","onBeforeItemRender","onSelect","onBeforeOpen","onBeforeClose","CLS.CONTEXT_MENU_ID","iconSpan","getMenuId","CLS.ICON_LARGE","CLS.MENU_ICON","CLS.ICON_GRID","isFocused","parentItem","menuType","menuCloseArgs","menuTarget","isMenuItemClicked","parentKey","itemKeys_1","_fm_id","uid","treeFolder","targetNodeElement","currentElement","activeNode","getElementsByClassName","CLS.FULLROW","targetElement","getTargetView","updateActiveModule","CLS.TOOLBAR_ID","setLayoutItem","CLS.MENU_ITEM","CLS.SUBMENU_ICON","CLS.TREE_ID","getRowObjectFromUID","selectRows","setFileItem","setFolderItem","disabledItems","itemsToRemove","pasteIndex","isSubMenu","pasteEle","getMenuItemData","menuModule","currentItems","menuOpenArgs","enableItems","CLS.GRID_ID","CLS.ICON_VIEW","getItemIndex","itemId","disableItem","concat","enable","isUniqueId","checkValidItem","isTree","renameIndex","getItemData","contextMenuSettings","trim","selectedTreeNode","indexToRemove","layout","nameEle","menuClickArgs","sItems","openFileOnContextMenuClick","events.downloadInit","separator","CLS.ICON_OPEN","CLS.ICON_UPLOAD","CLS.ICON_CUT","CLS.ICON_COPY","CLS.ICON_PASTE","CLS.ICON_DELETE","CLS.ICON_RENAME","CLS.ICON_NEWFOLDER","CLS.ICON_DETAILS","CLS.ICON_SHORTBY","CLS.TB_OPTION_DOT","CLS.TB_OPTION_TICK","CLS.ICON_REFRESH","CLS.ICON_SELECTALL","CLS.ICON_DOWNLOAD","FileManager_1","defaultLocale","NewFolder","Upload","Rename","Cut","Copy","Paste","SortBy","Refresh","Item-Selection","Items-Selection","View","Details","SelectAll","Open","Tooltip-NewFolder","Tooltip-Upload","Tooltip-Delete","Tooltip-Rename","Tooltip-Download","Tooltip-Cut","Tooltip-Copy","Tooltip-Paste","Tooltip-SortBy","Tooltip-Refresh","Tooltip-Selection","Tooltip-View","Tooltip-Details","Tooltip-SelectAll","Name","Size","DateModified","DateCreated","Path","Modified","Created","Location","Type","Permission","Ascending","Descending","None","View-LargeIcons","View-Details","Button-Ok","Button-Cancel","Button-Yes","Button-No","Button-Create","Button-Save","Header-NewFolder","Content-NewFolder","Header-Rename","Content-Rename","Header-Rename-Confirmation","Content-Rename-Confirmation","Header-Delete","Content-Delete","Header-Folder-Delete","Content-Folder-Delete","Header-Multiple-Delete","Content-Multiple-Delete","Header-Duplicate","Content-Duplicate","Header-Upload","Error","Validation-Empty","Validation-Invalid","Validation-NewFolder-Exists","Validation-Rename-Exists","Folder-Empty","File-Upload","Search-Empty","Search-Key","Filter-Empty","Filter-Key","Sub-Folder-Error","Same-Folder-Error","Access-Denied","Access-Details","Header-Retry","Content-Retry","Button-Keep-Both","Button-Replace","Button-Skip","ApplyAll-Label","KB","Access-Message","Network-Error","Server-Error","FileManager","Component","preRender","getUniqueID","ensurePath","setAttr","formatUnit","Browser","checkMobile","navigationPaneSettings","isBigger","createSpinner","addWrapper","altN","f5","ctrlShift1","ctrlShift2","ctrlU","L10n","getPersistData","addOnPersist","requiredModules","modules","member","toolbarSettings","initialize","slItems","fileView","navigator","platform","toUpperCase","setRtl","addEventListeners","adjustHeight","splitterObj","collapse","CLS.SPLIT_BAR","renderComplete","CLS.MOBILE","CLS.CHECK_SELECT","addCssClass","renderFileUpload","headerWrap","layoutWrap","CLS.LAYOUT","navigationWrap","CLS.NAVIGATION_ID","CLS.NAVIGATION","treeWrap","contentWrap","CLS.LAYOUT_CONTENT","gridWrap","CLS.BREADCRUMBS","largeiconWrap","role","overlay","CLS.OVERLAY","dialogWrap","paneSettings","min","max","maxWidth","Splitter","menuWrap","dialogImgWrap","extnDialogWrap","uploadDialogWrap","CLS.UPLOAD_DIALOG_ID","toolbar","toolBarHeight","splitterAdjust","bar","expand","oldOne","newOne","onContextMenu","userAgent","uploadEle","uploadDialogObj","onOpen","onClose","renderUploadBox","uploadUrl","Uploader","asyncSettings","saveUrl","removeUrl","uploading","onUploading","removing","onRemoving","canceling","onCancel","clearing","onClearing","onSelected","success","onUploadSuccess","failure","onUploadFailure","autoUpload","uploadSettings","minFileSize","maxFileSize","allowedExtensions","directoryUpload","fileListRendering","onFileListRender","updateUploader","isOpened","clearAll","customFormData","filename","uploadEventArgs","httpRequest","currentRequest","onFileUploadSuccess","getFilesData","filesData","uploadingCount","uploadedCount","autoClose","response","statusText","onInitialEnd","removeEventListeners","wireSelectOnDragEvent","isBind","viewElem","onDragStart","enableRangeSelection","dragX","pageX","dragY","pageY","dragSelectElement","styles","append","onDragStop","onDrag","diffX","stopPropagation","diffY","setStyleAttribute","left","Math","abs","dragSelectedItems","dragRect","allItems_1","itemRect","right","bottom","setPath","oldProp","requiresRefresh","ajaxSettingSetModel","localeSetModelOption","col","refreshing","CLS.RTL","toolbarModule","contextmenuModule","disableToolbarItems","enableToolbarItems","disableMenuItems","getMenuItemIndex","getToolbarItemIndex","filterFiles","getSelectedFiles","refreshFiles","refreshLayout","uploadFiles","closeDialog","rtl","Complex","Collection","Event","NotifyPropertyChanges","previousPath","nextPath","deleteRecords","isSameAction","persistData","Inject","Toolbar","toolbarItemData","getItems","toolbarCreateArgs","toolbarObj","BaseToolbar","toolbarCreateHandler","overflowMode","clicked","onClicked","getId","currItems","toolbarItems","tool","toolbarClickArgs","CLS.TB_ITEM","getPupupId","buttonObj","layoutBtnObj","tickIcon","viewText","firstChild","hideItems","default","hideStatus","portals","updateSortByButton","itemCount","mergedItems","propItem","getItemModel","itemTooltip","tooltipText","prefixIcon","showTextOn","spanElement","suffixIcon","CLS.ICON_CLEAR","overflow","align","disabled","showAlwaysInPopup","tabIndex","onSelectionChanged","reRenderToolbar","itemsToProcess","single","selection","multiple","hideItem","tools","toHide","refreshOverflow","isEnable","Virtualization","currentViewItems","largeIconInstance","lastRowCount","rowItemCount","topElement","filemanagerInstance","bottomElement","listItemHeight","totalHeight","topElementHeight","bottomElementHeight","listDiff","renderedCount","dataSourceLength","widthMargin","floor","round","onVirtualUiScroll","scrollPosition","scroll","getscrollerHeight","onNormalScroll","startingHeight","isScrollingDown","updateUI","lastItemIndex","isAllRendered","startItemIndex","previousElementSibling","NavigationPane","onInit","rootData","attr","BaseTreeView","expanded","hasChildren","tooltip","nodeSelecting","onNodeSelecting","nodeSelected","onNodeSelected","nodeExpanding","onNodeExpand","nodeClicked","onNodeClicked","allowEditing","nodeEditing","onNodeEditing","drawNode","onDrowNode","dataBound","addDragDrop","getTreeData","getDragPath","getDropPath","nodeData","addChild","prevent","directories","targetDirectory","_fm_icon","childElements","addNodes","selecEventArgs","isRightClick","isSameNodeClicked","isPathDragged","isRenameParent","restrictSelecting","renameParent","isNodeClickCalled","previousSelected","expandNodeTarget","onPathDrag","selectResultNode","isDrag","isNodeExpandCalled","events.nodeExpand","onNodeExpanded","innerHtml","currFiles","sNode","expandTree","updateTree","updateTreeNode","toExpand","expandedNodes","removeChildNodes","childs","removeNodes","onOpenEnd","sleId","expandAll","updateItemData","updateActionData","selectedNodeEle","selcetedEle","onRenameEndParent","id_1","nData","onDownLoadInit","onClearPathInit","onDragEnd","moveNames","getMoveNames","previousName","onCutEnd","resultObj","itemname","checkDropPath","onDragging","dataobj","level","keyDown","ctrlShiftN","shiftF10","DetailsView","sortSettings","isValidSortField","checkNameWidth","getColumns","direction","Grid","allowSorting","rowSelecting","onSelection","rowDeselecting","rowSelected","rowDeselected","onDeSelection","allowResizing","columnResizing","selectionSettings","checkboxMode","pageSettings","pageSize","enablePersistence","enableVirtualMaskRow","allowUnsort","recordDoubleClick","DblClickEvents","beforeDataBound","onBeforeDataBound","onDataBound","rowDataBound","onRowDataBound","actionBegin","onActionBegin","headerCellInfo","onHeaderCellInfo","getGridHeight","beforeCopy","load","focusModule","isReact","reactTemplateRender","emptyArgs","pane","initialColumn","isNameWidth","adjustWidth","fieldName","nameWidth","headerTextAlign","SanitizeHtmlHelper","sanitize","_fm_modified","this_1","template_1","iWidth","_fm_iconClass","headerTemplate","unshift","cBox","cWidth","disableHtmlEncode","gridHeader","renderCheckBox","isColumnRefresh","refreshColumns","td","row","sizeEle","modifiedSize","sizeValue","sizeFormat","formatNumber","dateEle","checkWrap","requestType","columnName","sortItem","rows","getSelectedRowIndexes","sortSelectedNodes","getRowsObject","nameColumn","find","hdTable","cnTable","selectRecords","getDataRows","isSelectionUpdate","currentSelectedItem","currentViewData","getRowHeight","getHeaderContent","paddingLeft","borderRightWidth","getContent","overflowY","checkEmptyDiv","isLoaded","gridRecords","getCurrentViewRecords","sRecords","Str2","selectedRowIndex","rData","onSortColumn","sortModule","freezeRefresh","interaction","onDetailsResize","pathField","hideAtMedia","updatePathColumn","removePathColumn","columnData","getSelectedRecords","openContent","rowIndex","rowData","onSearchFiles","isRefresh","selectionModule","selectRowsByRange","getRows","selectRow","removeSelection","CLS.HEADER_CHECK","onPasteInit","onDetailsResizeHandler","getRowInfo","dragRow","getSelectedRows","gridHeaderColGroup","gridContentColGroup","gridHeaderColNames","isMultiSelect","isShiftPressed","isCtrlPressed","rowIndexes","selectedRecords","firstItemIndex","getRowByIndex","isHeaderCheckboxClicked","gridSelectNodes","selectSize","record","name_3","keyupHandler","keydownHandler","removeFocus","relatedTarget","thElements","getFocusedItemIndex","crtSrlPos","crtFocusIndex","gridItems","gridLength","focIndex","selIndex","selRowIndeces","currentField","getColumnByUid","nextSibling","addHeaderFocus","checkRowsKey","spaceSelection","shiftMoveMethod","ctrlMoveFunction","moveFunction","isSelected","shiftSelectedItem","shiftSelectFocusItem","nextIndex","indexValue","checkAllRows","InnerItems","itemArr","fIndex","selRowIndexes","itemElement","CLS.FOCUSED","nameFocus","treeFocus","tagName","check","getRecords","hasFilter","name_4","dRecords","Resize","Sort","VirtualScroll","reference","referenceIsFile","comparerIsFile","referenceParts","comparerParts","_","$1","$2","Infinity","referencePart","shift","comparerPart","comparisonResult","localeCompare"],"mappings":"86BACQA,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,EAsBoCS,EAvBxCC,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,GAAwCrB,EAkB1CsB,gBAjBErB,EAAUoB,EAAcrB,CAAM,EAI9BO,EAAW,CACPgB,WAAS,IAAI,GACdF,EAAahB,UAAW,cAAe,KAAA,CAAM,EAChDE,EAAW,CACPgB,WAAS,IAAI,GACdF,EAAahB,UAAW,cAAe,KAAA,CAAM,EAChDE,EAAW,CACPgB,WAAS,IAAI,GACdF,EAAahB,UAAW,YAAa,KAAA,CAAM,EAC9CE,EAAW,CACPgB,WAAS,IAAI,GACdF,EAAahB,UAAW,MAAO,KAAA,CAAM,EACjCgB,GAfP,SAASA,IACL,OAAkB,OAAXrB,GAAmBA,EAAOwB,MAAMrB,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,EAwBuCS,EAzB3CC,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,EAEWU,EAAsB,CAAC,YAAa,SAAU,MAAO,OAAQ,QAAS,SAAU,WAAY,SACnG,SAAU,UAAW,YAAa,OAAQ,WAI1CC,GAA2C1B,EAY7CsB,gBAXErB,EAAUyB,EAAiB1B,CAAM,EAIjCO,EAAW,CACPgB,WAASE,CAAmB,GAC7BC,EAAgBrB,UAAW,QAAS,KAAA,CAAM,EAC7CE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACdG,EAAgBrB,UAAW,UAAW,KAAA,CAAM,EACxCqB,GATP,SAASA,IACL,OAAkB,OAAX1B,GAAmBA,EAAOwB,MAAMrB,KAAMU,SAAS,GAAKV,KAWxBH,EA4DzCsB,gBA3DErB,EAAU0B,EAAa3B,CAAM,EAI7BO,EAAW,CACPgB,WAAS,EAAE,GACZI,EAAYtB,UAAW,KAAM,KAAA,CAAM,EACtCE,EAAW,CACPgB,WAAS,EAAE,GACZI,EAAYtB,UAAW,OAAQ,KAAA,CAAM,EACxCE,EAAW,CACPgB,WAAS,MAAM,GAChBI,EAAYtB,UAAW,QAAS,KAAA,CAAM,EACzCE,EAAW,CACPgB,WAAS,EAAE,GACZI,EAAYtB,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPgB,WAAS,CAAA,CAAK,GACfI,EAAYtB,UAAW,oBAAqB,KAAA,CAAM,EACrDE,EAAW,CACPgB,WAAS,CAAA,CAAK,GACfI,EAAYtB,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPgB,WAAS,EAAE,GACZI,EAAYtB,UAAW,aAAc,KAAA,CAAM,EAC9CE,EAAW,CACPgB,WAAS,EAAE,GACZI,EAAYtB,UAAW,aAAc,KAAA,CAAM,EAC9CE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACdI,EAAYtB,UAAW,UAAW,KAAA,CAAM,EAC3CE,EAAW,CACPgB,WAAS,MAAM,GAChBI,EAAYtB,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPgB,WAAS,EAAE,GACZI,EAAYtB,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPgB,WAAS,QAAQ,GAClBI,EAAYtB,UAAW,OAAQ,KAAA,CAAM,EACxCE,EAAW,CACPgB,WAAS,MAAM,GAChBI,EAAYtB,UAAW,aAAc,KAAA,CAAM,EAC9CE,EAAW,CACPgB,WAAS,IAAI,GACdI,EAAYtB,UAAW,iBAAkB,KAAA,CAAM,EAClDE,EAAW,CACPgB,WAAS,EAAE,GACZI,EAAYtB,UAAW,cAAe,KAAA,CAAM,EAC/CE,EAAW,CACPgB,WAAS,MAAM,GAChBI,EAAYtB,UAAW,QAAS,KAAA,CAAM,EACzCE,EAAW,CACPgB,WAAS,CAAC,CAAC,GACZI,EAAYtB,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPgB,cACDI,EAAYtB,UAAW,OAAQ,KAAA,CAAM,MA1DDL,EAAvC2B,EA2DOA,EAzDP,SAASA,IACL,OAAkB,OAAX3B,GAAmBA,EAAOwB,MAAMrB,KAAMU,SAAS,GAAKV,KCzC3DZ,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,GAsBsCS,GAvB1CC,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,EAKIa,GAA0C5B,GAkB5CsB,gBAjBErB,EAAU2B,GAAgB5B,EAAM,EAIhCO,GAAW,CACPgB,WAAS,CAAA,CAAI,GACdK,GAAevB,UAAW,sBAAuB,KAAA,CAAM,EAC1DE,GAAW,CACPgB,WAAS,UAAU,GACpBK,GAAevB,UAAW,aAAc,KAAA,CAAM,EACjDE,GAAW,CACPgB,WAAS,CAAA,CAAI,GACdK,GAAevB,UAAW,aAAc,KAAA,CAAM,EACjDE,GAAW,CACPgB,WAAS,IAAI,GACdK,GAAevB,UAAW,cAAe,KAAA,CAAM,EAC3CuB,IAfP,SAASA,KACL,OAAkB,OAAX5B,IAAmBA,GAAOwB,MAAMrB,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,GA2C2CS,GA5C/CC,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,EAKWc,GAAc,CACrB,CACIC,MAAO,OAAQC,WAAY,OAAQC,SAAU,IAC7CC,SAAU,yCACVC,iBAAkB,CAAEC,MAAO,mBAE/B,CACIL,MAAO,eAAgBC,WAAY,eAAgBK,KAAM,WACzDC,OAAQ,sBAAuBL,SAAU,IAAKM,MAAO,OAEzD,CACIR,MAAO,OAAQC,WAAY,OAAQC,SAAU,GAAIM,MAAO,MAExDL,SAAUM,wBAAsB,SAAUC,GACtC,MAAO,2BAA+BA,EAAKC,KAAO,UACrD,EAAGJ,OAAQ,OAMhBK,IAA+C1C,GAYjDsB,gBAXErB,GAAUyC,GAAqB1C,EAAM,EAIrCO,GAAW,CACPgB,WAAS,CAAA,CAAI,GACdmB,GAAoBrC,UAAW,iBAAkB,KAAA,CAAM,EAC1DE,GAAW,CACPgB,WAASM,EAAW,GACrBa,GAAoBrC,UAAW,UAAW,KAAA,CAAM,EAC5CqC,IATP,SAASA,KACL,OAAkB,OAAX1C,IAAmBA,GAAOwB,MAAMrB,KAAMU,SAAS,GAAKV,KC9C3DZ,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,GA2B2CS,GA5B/CC,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,EAEW4B,GAAY,CAAC,OAAQ,IAAK,MAAO,OAAQ,IAAK,SAAU,WAAY,SAAU,IAAK,WACnFC,GAAc,CAAC,OAAQ,IAAK,MAAO,OAAQ,QAAS,IAAK,SAAU,SAAU,WAAY,IAAK,WAC9FC,GAAc,CACrB,SAAU,OAAQ,UAAW,IAAK,QAAS,IAAK,YAAa,SAAU,IAAK,UAAW,IAAK,aAK5FC,IAA+C9C,GAkBjDsB,gBAjBErB,GAAU6C,GAAqB9C,EAAM,EAIrCO,GAAW,CACPgB,WAASoB,EAAS,GACnBG,GAAoBzC,UAAW,OAAQ,KAAA,CAAM,EAChDE,GAAW,CACPgB,WAASqB,EAAW,GACrBE,GAAoBzC,UAAW,SAAU,KAAA,CAAM,EAClDE,GAAW,CACPgB,WAASsB,EAAW,GACrBC,GAAoBzC,UAAW,SAAU,KAAA,CAAM,EAClDE,GAAW,CACPgB,WAAS,CAAA,CAAI,GACduB,GAAoBzC,UAAW,UAAW,KAAA,CAAM,EAC5CyC,IAfP,SAASA,KACL,OAAkB,OAAX9C,IAAmBA,GAAOwB,MAAMrB,KAAMU,SAAS,GAAKV,KC9B3DZ,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,GAsB8CS,GAvBlDC,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,EAKIgC,IAAkD/C,GAkBpDsB,gBAjBErB,GAAU8C,GAAwB/C,EAAM,EAIxCO,GAAW,CACPgB,WAAS,OAAO,GACjBwB,GAAuB1C,UAAW,WAAY,KAAA,CAAM,EACvDE,GAAW,CACPgB,WAAS,OAAO,GACjBwB,GAAuB1C,UAAW,WAAY,KAAA,CAAM,EACvDE,GAAW,CACPgB,WAAS,CAAA,CAAI,GACdwB,GAAuB1C,UAAW,UAAW,KAAA,CAAM,EACtDE,GAAW,CACPgB,WAAS,MAAM,GAChBwB,GAAuB1C,UAAW,YAAa,KAAA,CAAM,EACjD0C,IAfP,SAASA,KACL,OAAkB,OAAX/C,IAAmBA,GAAOwB,MAAMrB,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,GAsBsCS,GAvB1CC,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,EAKIiC,IAA0ChD,GAwB5CsB,gBAvBErB,GAAU+C,GAAgBhD,EAAM,EAIhCO,GAAW,CACPgB,WAAS,EAAE,GACZyB,GAAe3C,UAAW,oBAAqB,KAAA,CAAM,EACxDE,GAAW,CACPgB,WAAS,CAAA,CAAI,GACdyB,GAAe3C,UAAW,aAAc,KAAA,CAAM,EACjDE,GAAW,CACPgB,WAAS,CAAA,CAAK,GACfyB,GAAe3C,UAAW,YAAa,KAAA,CAAM,EAChDE,GAAW,CACPgB,WAAS,CAAA,CAAK,GACfyB,GAAe3C,UAAW,kBAAmB,KAAA,CAAM,EACtDE,GAAW,CACPgB,WAAS,CAAC,GACXyB,GAAe3C,UAAW,cAAe,KAAA,CAAM,EAClDE,GAAW,CACPgB,WAAS,GAAQ,GAClByB,GAAe3C,UAAW,cAAe,KAAA,CAAM,EAC3C2C,IArBP,SAASA,KACL,OAAkB,OAAXhD,IAAmBA,GAAOwB,MAAMrB,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,GAuB8BS,GAxBlCC,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,EAMIkC,IAAkCjD,GA4DpCsB,gBA3DErB,GAAUgD,EAAQjD,EAAM,EAIxBO,EAAW,CACPgB,WAAS,EAAE,GACZ0B,EAAO5C,UAAW,QAAS,KAAA,CAAM,EACpCE,EAAW,CACPgB,WAAS,EAAE,GACZ0B,EAAO5C,UAAW,aAAc,KAAA,CAAM,EACzCE,EAAW,CACPgB,WAAS,EAAE,GACZ0B,EAAO5C,UAAW,QAAS,KAAA,CAAM,EACpCE,EAAW,CACPgB,WAAS,EAAE,GACZ0B,EAAO5C,UAAW,WAAY,KAAA,CAAM,EACvCE,EAAW,CACPgB,WAAS,EAAE,GACZ0B,EAAO5C,UAAW,WAAY,KAAA,CAAM,EACvCE,EAAW,CACPgB,WAAS,MAAM,GAChB0B,EAAO5C,UAAW,YAAa,KAAA,CAAM,EACxCE,EAAW,CACPgB,WAAS,IAAI,GACd0B,EAAO5C,UAAW,kBAAmB,KAAA,CAAM,EAC9CE,EAAW,CACPgB,WAAS,IAAI,GACd0B,EAAO5C,UAAW,OAAQ,KAAA,CAAM,EACnCE,EAAW,CACPgB,WAAS,IAAI,GACd0B,EAAO5C,UAAW,SAAU,KAAA,CAAM,EACrCE,EAAW,CACPgB,WAAS,IAAI,GACd0B,EAAO5C,UAAW,WAAY,KAAA,CAAM,EACvCE,EAAW,CACPgB,WAAS,IAAI,GACd0B,EAAO5C,UAAW,eAAgB,KAAA,CAAM,EAC3CE,EAAW,CACPgB,WAAS,IAAI,GACd0B,EAAO5C,UAAW,iBAAkB,KAAA,CAAM,EAC7CE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACd0B,EAAO5C,UAAW,eAAgB,KAAA,CAAM,EAC3CE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACd0B,EAAO5C,UAAW,gBAAiB,KAAA,CAAM,EAC5CE,EAAW,CACPgB,WAAS,IAAI,GACd0B,EAAO5C,UAAW,mBAAoB,KAAA,CAAM,EAC/CE,EAAW,CACPgB,WAAS,EAAE,GACZ0B,EAAO5C,UAAW,cAAe,KAAA,CAAM,EAC1CE,EAAW,CACPgB,WAAS,IAAI,GACd0B,EAAO5C,UAAW,eAAgB,KAAA,CAAM,EAC3CE,EAAW,CACPgB,WAAS,CAAA,CAAK,GACf0B,EAAO5C,UAAW,eAAgB,KAAA,CAAM,EACpC4C,GAzDP,SAASA,IACL,OAAkB,OAAXjD,IAAmBA,GAAOwB,MAAMrB,KAAMU,SAAS,GAAKV,SCvBxD+C,GAAa,WAEbC,GAAY,UAEZC,GAAgB,cAEhBC,GAAU,QAEVC,GAAU,QAEVC,GAAe,cAEfC,GAAY,UAIZC,GAAgB,cAEhBC,GAAiB,eAEjBC,GAAmB,iBAInBC,GAAkB,eAQlBC,GAAa,WAEbC,GAAmB,iBAEnBC,GAAY,UAIZC,GAAY,UAKZC,GAAO,gBAEPC,GAAU,YAEVC,GAAe,iBAEfC,GAAa,aAEbC,GAAS,cAETC,GAAY,yBAEZC,GAAe,gBAEfC,GAAS,gBAETC,GAAS,WAETC,GAAa,eAEbC,GAAiB,mBAEjBC,GAAc,gBAEdC,GAAU,iBAEVC,EAAY,cAEZC,GAAY,cAEZC,GAAc,gBAEdC,EAAiB,oBAEjBC,GAAgB,mBAEhBC,GAAO,SAEPC,EAAS,WAETC,GAAQ,UAERC,GAAQ,UAERC,GAAU,YAEVC,GAAQ,UAERC,GAAQ,UAERC,GAAU,qBAEVC,GAAM,QAINC,EAAQ,UAERC,GAAgB,kBAEhBC,GAAsB,wBAEtBC,GAAQ,aAERC,GAAc,mBAEdC,GAAY,iBAEZC,GAAS,cAETC,GAAa,aAEbC,GAAa,aAEbC,GAAa,aAEbC,GAAa,eAEbC,GAAqB,2BAUrBC,GAAc,eAIdC,GAAY,aAEZC,GAAY,cAEZC,GAAY,cAEZC,GAAe,UAEfC,GAAY,YAEZC,GAAe,gBAEfC,GAAY,gBAEZC,GAAY,oBAEZC,GAAc,sBAEdC,GAAW,mBAEXC,GAAY,oBAEZC,GAAa,qBAEbC,GAAc,sBAEdC,GAAc,sBAEdC,GAAiB,yBAEjBC,GAAe,uBAEfC,GAAe,oBAEfC,GAAe,uBAEfC,GAAiB,sBAEjBC,GAAgB,wBAIhBC,GAAY,oBAEZC,GAAa,qBAEbC,GAAkB,0BAElBC,GAAa,qBAQbC,GAAQ,UAIRC,GAAgB,oBAIhBC,GAAc,YAEdC,GAAM,QAENC,GAAe,iBAIfC,GAAU,YAIVC,GAAY,cAEZC,GAAe,gBAEfC,GAAU,eAEVC,GAAQ,aCtNRC,EAAe,gBAEfC,GAAa,cAEbC,EAAc,eAEdC,GAAY,aAEZC,GAAY,aAIZC,GAAW,YAEXC,GAAa,cAEbC,GAAY,aAEZC,GAAa,cAEbC,GAAY,aAEZC,GAAiB,kBAEjBC,EAAc,eAEdC,GAAU,UAEVC,GAAgB,iBAIhBC,GAAa,cAEbC,GAAe,gBAIfC,GAAgB,iBAEhBC,GAAgB,gBAEhBC,GAAS,SAETC,GAAW,YAEXC,GAAU,WAEVC,EAAmB,oBAEnBC,GAAgB,kBAEhBC,GAAe,iBAEfC,GAAgB,kBAEhBC,EAAe,gBAEfC,GAAe,iBAEfC,GAAa,cAEbC,EAAc,eAEdC,GAAe,iBAEfC,GAAa,cAEbC,GAAkB,oBAElBC,EAAY,aAEZC,GAAY,aAEZC,GAAY,aAEZC,GAAe,gBAEfC,GAAc,gBAEdC,GAAY,aAEZC,GAAW,YAEXC,GAAS,UAETC,GAAa,cAEbC,GAAsB,wBAItBC,GAAa,cAEbC,GAAa,cAEbC,GAAmB,gBAInBC,GAAe,gBAEfC,GAAW,YAEXC,GAAU,WAEVC,GAAW,YAIXC,GAAW,WAEXC,GAAsB,wBAEtBC,GAAa,cAEbC,GAAiB,OAEjBC,EAAiB,QAEjBC,GAAyB,gBAIzBC,GAAmB,SAEnBC,GAAqB,WClFzB,SAASC,GAAWC,EAAM7J,EAAM8J,GACnC,IAAIC,EAAOC,WAAS,OAAQhK,CAAI,EAC5BiK,EAAKJ,EAAKK,aAAa,SAAS,EAChCC,EAAUC,oBAAMH,CAAE,EAAIF,EAAOE,EACjCH,EAASO,cAAc,CAAEC,KAAMC,GAAQV,EAAMM,EAASL,EAASU,KAAK,GAAK,CAAA,CAAI,EAC7EV,EAASW,OAASC,GAAUb,CAAI,EAChCC,EAASa,UAAYC,GAAaf,EAAME,CAAI,CAChD,CAUO,SAASQ,GAAQM,EAASd,EAAMS,GAInC,IAHA,IAAIM,EAAUC,GAAWF,EAASd,EAAM,CAAA,EAAOS,CAAK,EAChDF,EAAO,IAEF3L,EADCmM,EAAQxM,SACK,GAALK,EAAQA,CAAC,GACvB2L,GAAQQ,EAAQnM,GAAK,IAEzB,OAAO2L,CACX,CAQO,SAASI,GAAUb,GAGtB,IAFA,IAAIiB,EAAUC,GAAWlB,EAAMA,EAAKK,aAAa,UAAU,EAAG,CAAA,CAAI,EAC9Dc,EAAM,GACDrM,EAAImM,EAAQxM,OAAS,EAAQ,GAALK,EAAQA,CAAC,GACtCqM,EAAIC,KAAKH,EAAQnM,EAAE,EAEvB,OAAOqM,CACX,CASO,SAASJ,GAAaC,EAASd,GAGlC,IAFA,IAAIe,EAAUC,GAAWF,EAASd,EAAM,CAAA,CAAK,EACzCmB,EAAQ,GACHvM,EAAImM,EAAQxM,OAAS,EAAQ,GAALK,EAAQA,CAAC,GACtCuM,EAAMD,KAAKH,EAAQnM,EAAE,EAEzB,OAAOuM,CACX,CAWO,SAASH,GAAWF,EAASd,EAAMoB,EAAMX,GAG5C,IAFA,IAIYY,EAJRN,EAAU,CAACf,GACXsB,EAAKR,EAAQS,WACV,CAAClB,oBAAMiB,CAAE,IACRE,UAAQF,EAAI,IAAMG,CAAa,IAC3BJ,EAAaD,EAAOE,EAAGnB,aAAa,UAAU,EAAKM,EAAQa,EAAGnB,aAAa,SAAS,EACpFuB,SAAO,IAAMC,GAAeL,CAAE,EAAEM,YACpCb,EAAQG,KAAKG,CAAU,GAGvBC,EADJA,EAAKA,EAAGC,YACDM,UAAUC,SAASC,EAAa,KAI3C,OAAOhB,CACX,CAQO,SAASiB,GAAaC,GAIzB,IAHA,IAAI9N,EAAM8N,EAAOxB,MAAQ,KAAO,OAC5ByB,EAAU,IACVtN,EAAI,EACAA,EAAIqN,EAAOvB,OAAOnM,OAAQK,CAAC,GAAI,CACnC,IAAIqB,EAAOgK,WAASgC,EAAOvB,OAAOyB,SAASvN,EAAEwN,WAAY,EAAE,GAAIH,EAAOI,QAAQ,EAC9EH,GAAWjC,WAAS9L,EAAK8B,CAAI,EAAI,IAErCgM,EAAO3B,cAAc,CAAEC,KAAM2B,GAAW,CAAA,CAAI,CAChD,CAQO,SAASI,GAAaL,GACrBA,EAAOM,QACPC,EAAWP,CAAM,EACjBA,EAAOQ,cAAgB,GACvBR,EAAOS,cAAgB,GACvBT,EAAOU,YAAc,CAAA,EACrBV,EAAOW,OAAOC,GAAkB,EAAE,EAE1C,CASO,SAASC,GAAcC,EAAQd,GAKlC,GAJAA,EAAOe,YAAc,CAAA,EACrBf,EAAOS,cAAgB,GACvBT,EAAOgB,eAAiB,GACxBhB,EAAOW,OAAOM,GAAoB,EAAE,EACC,IAAjCjB,EAAOgB,eAAe1O,OACtB,MAAO,CAAA,EAEXiO,EAAWP,CAAM,EACjB,IAAIkB,EAAUlB,EAAOgB,eAOjBrO,GANwB,mBAAxBqN,EAAOmB,aACPnB,EAAOoB,WAAapB,EAAO1B,KAG3B0B,EAAOoB,WAAaC,GAAcrB,EAAO1B,IAAI,EAEzC,GACR,GAAI4C,IACAI,GAAUtB,EAAQkB,EAAQ,EAAE,EACb,QAAXJ,GACA,KAAOnO,EAAIuO,EAAQ5O,QACfiP,GAAQL,EAAQvO,EAAE,EAClBA,CAAC,GAQb,IAJAA,EAAI,EACJqN,EAAOQ,cAAgB,GACvBR,EAAOU,YAAc,CAAA,EACrBV,EAAOW,OAAOa,GAAkB,EAAE,EAC3B7O,EAAIqN,EAAOyB,cAAcnP,QAC5B0N,EAAOS,cAAcxB,KAAKe,EAAOyB,cAAc9O,EAAE,EACjDqN,EAAOQ,cAAcvB,KAAKjB,WAAS,OAAQgC,EAAOyB,cAAc9O,EAAE,CAAC,EACnEA,CAAC,GAEL,IAA4D,KAAvDqN,EAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAgB5B,EAAO6B,aAC7C,mBAAxB7B,EAAOmB,aAAmC,CAC1CnB,EAAOQ,cAAgB,GACvBR,EAAOe,YAAc,CAAA,EAErB,IADA,IAAIe,EAAM,EACHA,EAAM9B,EAAO+B,cAAczP,QAC9B0N,EAAOQ,cAAcvB,KAAKe,EAAO+B,cAAcD,EAAI,EACnDA,CAAG,GAGX,MAAO,CAAA,CACX,CAQO,SAASP,GAAQS,GACpBA,EAAMpC,UAAUqC,IAAIC,EAAQ,CAChC,CASO,SAAS3B,EAAWP,EAAQmC,GAI/B,IAHA,IAAIjB,EAAYiB,EACZnC,EAAOnB,QAAQuD,iBAAiB,IAAMC,EAAS,EAD1BrC,EAAOnB,QAAQuD,iBAAiB,IAAMF,EAAQ,EAEnEvP,EAAI,EACDA,EAAIuO,EAAQ5O,QACf4O,EAAQvO,GAAGiN,UAAU0C,OAASH,EAAoBE,GAAXH,EAAoB,EAC3DvP,CAAC,EAET,CASO,SAAS2O,GAAUtB,EAAQnB,GAC1BA,IACIA,EAAQe,UAAUC,SAAS0C,EAAO,EAClCvC,EAAOmB,aAAe,cAEjBqB,UAAQ3D,EAAS,IAAM4D,EAAc,EAC1CzC,EAAOmB,aAAe,iBAGtBnB,EAAOmB,aAAe,iBAGlC,CAUO,SAASuB,GAAkB1C,EAAQ4B,EAAOe,GAC7C,IAgCQC,EAXJC,EApBiB,IAAjBjB,EAAMtP,QAAiB0N,EAAO6B,YAC9B7B,EAAOW,OAAOmC,GAAmB,CAAEC,KAAM/C,EAAQ,EAEjDgD,EAAiBhD,CAAM,EACT,KAAV4B,GACA5B,EAAOiD,SAAWjD,EAAOkD,eACzBC,EAAKnD,EAAQoD,EAAqBpD,EAAO1B,IAAI,IAG7C0B,EAAOqD,eAAeC,WAAalF,oBAAM4B,EAAOqD,eAAeC,UAAU,EAAI,WAAatD,EAAOqD,eAAeC,WAC5GC,EAAevD,EAAOkD,eAAeM,OAAO,SAAUC,GAAO,OAAwB,OAAjBA,EAAIC,SAAoB,EAC5F1P,EAAO,IAAI2P,cAAYJ,CAAY,EACnCK,cAAa,IAAIC,SAAQC,MAAM,OAAQ9D,EAAOqD,eAAeC,WAAY1B,EAAO5B,EAAOqD,eAAeU,UAAU,CAAC,EACjHC,EAAchE,EAAOqD,eAAeU,WAAanC,EAAMqC,cAAgBrC,EAC3E5B,EAAOiD,SAAWjP,EAClBkQ,GAAOlE,EAAQ2C,EAAiBS,EAAsBe,GAAenE,EAAO1B,KAAM0F,EAAahE,EAAOoE,gBAAiB,CAACpE,EAAOqD,eAAeU,UAAU,IAK5JlB,EADqC,eAArC7C,EAAOqD,eAAeC,WACT1B,EAAQ,IAEqB,aAArC5B,EAAOqD,eAAeC,WACd,IAAM1B,EAGN,IAAMA,EAAQ,IAE/B5B,EAAO6C,WAAaA,EACpB7C,EAAOiD,SAAW,CAACoB,EAAcrE,CAAM,GACpB,EAAf4B,EAAMtP,QACFsQ,EAAgB5C,EAAOqD,eAAeU,WACtCO,EAActE,EAAOoE,gBACzBF,GAAOlE,EAAQ2C,EAAiBS,EAAsBe,GAAenE,EAAO1B,KAAMuE,EAAYyB,EAAa,CAAC1B,CAAa,GAGpH5C,EAAO6B,WAUR2B,GAAOxD,EAAQoD,CAAmB,EAT9BpD,EAAOuE,iBACPvE,EAAOW,OAAOyC,EAAqB,CAAEoB,MAA2B,YAAnBxE,EAAOyE,QAAyBzE,EAAO0E,kBAAkBC,QAAQC,WAAa5E,EAAO6E,qBAAqBC,SAAU,EACjK9E,EAAOuE,gBAAkB,CAAA,GAGzBpB,EAAKnD,EAAQ2C,EAAiBS,EAAsBe,GAAenE,EAAO1B,IAAI,EAO9F,CASO,SAASyG,GAAa/E,EAAQgF,GACjChF,EAAOyE,QAAUzE,EAAOgF,KACxBhF,EAAO3B,cAAc,CAAE2G,KAAMA,GAAQ,CAAA,CAAI,EACkB,KAAvDhF,EAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAgB5B,CAAAA,EAAO6B,aACpE7B,EAAOiF,oBAAsBjF,EAAO+B,eAEpCc,EAAa,GACb7C,EAAO0B,oBAAoBC,UAAU9C,QAAQ+C,QAC7CiB,EAAa7C,EAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAE9D5B,EAAO2C,eAAiB,CAAA,EACxBD,GAAkB1C,EAAQ6C,EAAY,CAAA,CAAI,CAC9C,CAUO,SAASqC,GAAgBlF,EAAQnB,GACpC,IAAIsG,EAAgB,GAChBtG,IAEIsG,EADA3C,UAAQ3D,EAAS,IAAMuG,GAAW,IAAMC,GAAc,KAAOC,EAAgB,EAC7D,cAEX9C,UAAQ3D,EAAS,IAAM0G,EAAe,EAC3B,iBAEX1G,EAAQe,UAAUC,SAAS,WAAW,GAC3ChB,EAAQe,UAAUC,SAAS,mBAAmB,EAC9B,iBAEX2C,UAAQ3D,EAAS,sBAAsB,EAC5B,gBAGA,IAGxBmB,EAAOwF,aAAeL,CAC1B,CASO,SAASM,GAAQzF,GACpBA,EAAOiD,SAAW,CAACoB,EAAcrE,CAAM,GAClC0F,GAAc1F,EAAOiD,SAAS,EAAE,EAIjCE,EAAKnD,EAAQ2F,GAAmB3F,EAAO1B,IAAI,EAH3CsH,EAAmB5F,EAAQA,EAAOiD,SAAS,GAAI4C,EAAqB,CAK5E,CAQO,SAASC,GAAW9F,GACvBmD,EAAKnD,EAAQ+F,GAAgB/F,EAAO1B,IAAI,CAC5C,CAQO,SAAS+F,EAAcrE,GAC1B,OAAOhC,WAASgC,EAAOvB,OAAOuB,EAAOvB,OAAOnM,OAAS,GAAI0N,EAAOI,QAAQ,CAC5E,CAQO,SAAS4F,GAAUhG,GACjBa,GAAc,OAAQb,CAAM,IAI7BA,EAAOiG,WAAa,OAE5B,CAQO,SAASC,GAASlG,GAChBa,GAAc,MAAOb,CAAM,IAI5BA,EAAOM,MAAQ,CAAA,EACfN,EAAOiG,WAAa,OAE5B,CAQO,SAASE,GAASC,GAErB,OADapI,WAAS,SAAUoI,CAAI,GAWN,CAAC,KAA3BC,GAFAA,EAAWrI,WAAS,OAAQoI,CAAI,GAChBnC,eACPqC,QAAQ,GAAG,IACpBD,EAAWA,EAASE,MAAM,GAAG,EAAEC,KAAK,EAAE,GAGJ,CAAC,IAXrB,CAAC,MAAO,MAAO,MAAO,OAAQ,MAAO,OAAQ,MAAO,MAAO,OAAQ,MAAO,OAW5EF,QAAQD,CAAQ,EACjBI,GAE4B,CAAC,IAb1B,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAa/CH,QAAQD,CAAQ,EACtBK,GAE4B,CAAC,IAf1B,CAAC,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAe9DJ,QAAQD,CAAQ,EACtBM,GAE4B,CAAC,IAjB1B,CAAC,MAAO,MAAO,OAAQ,KAAM,MAAO,MAAO,OAAQ,MAAO,MAAO,MAAO,MAAO,OAAQ,MACrG,OAAQ,MAAO,MAAO,MAAO,OAgBZL,QAAQD,CAAQ,EACtB,QAAUA,EAGV,qBAAuBA,GA1B3BO,EA6Bf,CAUO,SAASC,GAAY7G,EAAQ8G,GAChC,IASIC,EACAC,EACAC,EACAC,EAZAC,EAASnE,EAAiBhD,CAAM,EAAIhC,WAAS,WAAY8I,CAAI,EAAI,GACrE,OAAI9D,EAAiBhD,CAAM,GAKvBA,EAAOoH,QAAQ,kBAJXC,EAAc,CACdC,YAAa,CAACR,GACdS,SAAUJ,EAE+B,EACtCE,IAGPL,EAAoC,CAAC,KADrCD,EAAU/G,EAAOwH,aAAaX,aAAgD7G,EAAOwH,aAAaC,KAC/EnB,QAAQ,GAAG,EAAY,SAAW,SACrDW,EAAWS,mBAAmB1J,WAAS,OAAQ8I,CAAI,CAAC,EACpDI,EAAQlJ,WAAS,aAAc8I,CAAI,EAYnCa,EAAY,CACZL,YAAa,CAACR,GACdS,SAHJJ,GARIA,EAFAnH,EAAOxB,OACHoJ,EAAQ5J,WAAS,KAAM8I,CAAI,EACtBC,EAAUC,EAAUhH,EAAO1B,KAAO,OAASsJ,GAE9CxJ,oBAAM8I,CAAK,EAIRH,EAAUC,EAAUhH,EAAO1B,KAAO2I,EAHlCF,EAAUC,EAAUU,mBAAmBR,EAAMW,QAAQ,MAAO,GAAG,CAAC,EAAIZ,GAK/D,UAAY,IAAIa,MAAOC,QAAS,EAAE5H,YAKpDH,EAAOoH,QAAQ,kBAAmBO,CAAS,EACpCA,IAtBgBJ,QAuB3B,CAWO,SAASS,GAAYhI,EAAQhM,EAAMsK,GACtC,IAAI2J,EAAWjK,WAASgC,EAAOxB,MAAQ,KAAO,OAAQxK,CAAI,EAAI,IAC1DkT,EAAQlJ,WAASgC,EAAOxB,MAAQ,WAAa,aAAcxK,CAAI,EACnE,OAAKoK,oBAAM8I,CAAK,EAIL5I,EAAO2J,EAHPf,EAAMW,QAAQ,MAAO,GAAG,EAAII,CAK3C,CASO,SAASC,GAAQlI,EAAQhM,GAC5B,IAAImU,EAAOnK,WAAS,OAAQhK,CAAI,EAC5BkT,EAAQlJ,WAAS,aAAchK,CAAI,EAKvC,OAFImU,EAFwD,KAAvDnI,EAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAgB5B,CAAAA,EAAO6B,YAAgBzD,oBAAM8I,CAAK,EAI7FiB,GAHHjB,EAAQA,EAAMW,QAAQ,MAAO,GAAG,GACnBA,QAAQ7H,EAAO1B,KAAM,EAAE,EAAI6J,CAGhD,CASO,SAASC,GAAcpI,EAAQqI,GAClC,OAAqB,IAAjBA,EAAM/V,OACC+V,GAOPC,GAJqB,SAArBtI,EAAOuI,WAAyBC,oBAAkBxI,EAAOuI,SAAS,EAI1D,IAAI1E,SAHJ,IAAIA,SAAQ4E,OAAOzI,EAAOyI,OAAQzI,EAAOuI,UAAUtE,cAAe,CAAA,CAAI,GAG1DyE,MAAM,QAAQ,EAElCC,EAAQ,IAAIhF,cAAY0E,CAAK,EAAEzE,aAAa0E,CAAK,EAC9CtK,WAAS,UAAW2K,CAAK,EACpC,CAUO,SAASC,GAAU5I,EAAQ9N,EAAK0P,GAE/BiH,EADY7K,WAASgC,EAAOvB,OAAOuB,EAAOvB,OAAOnM,OAAS,GAAI0N,EAAO8I,OAAO,EACzDtF,OAAO,SAAUxP,GAAQ,OAAOA,EAAK9B,GAAKiO,aAAeyB,EAAQ,EACxF,OAAuB,EAAhBiH,EAAOvW,OAAauW,EAAO,GAAK,IAC3C,CAUO,SAASE,GAAmB/I,EAAQnB,EAASkE,GAChD,IAUQiG,EACAC,EAVJC,EAAgBzJ,SAAO,IAAMO,EAAOnB,QAAQZ,GAAKkL,GAAenJ,EAAOnB,OAAO,EAC9EuK,EAAmB3J,SAAO,IAAMO,EAAOnB,QAAQZ,GAAKoL,GAAsBH,CAAa,EAAEI,aAC7FC,EAAML,EAAcI,aAAeF,EAqC/BI,GApCgB,YAAhBxJ,EAAOgF,OACPuE,GAAY9J,SAAO,IAAMgK,GAAiBP,CAAa,EAAEI,cAEzDlL,oBAAMS,EAAQ6K,cAAc,IAAMC,CAAS,CAAC,IACxCC,EAAWC,gBAAc,MAAO,CAAEC,UAAWH,EAAW,EACxDI,EAAcF,gBAAc,MAAO,CAAEC,UAAWE,GAAwB,EACxEhB,EAAWa,gBAAc,MAAO,CAAEC,UAAWG,GAAmB,EAChEhB,EAAWY,gBAAc,MAAO,CAAEC,UAAWI,GAAyB,GACtD,YAAhBlK,EAAOgF,KACPnG,EAAQ6K,cAAc,IAAMS,EAAa,EAGzCtL,GAH2CuL,YAAYR,CAAQ,EAKnEA,EAASQ,YAAYL,CAAW,EAChCH,EAASQ,YAAYpB,CAAQ,EAC7BY,EAASQ,YAAYnB,CAAQ,GAE7BpK,EAAQ6K,cAAc,IAAMC,CAAS,IAChCvL,oBAAM2E,EAAKsH,KAAK,EAIZrK,EAAO6B,YACZhD,EAAQ6K,cAAc,IAAMO,EAAiB,EAAEK,UAAYC,EAAcvK,EAAQ,cAAc,EAC/FnB,EAAQ6K,cAAc,IAAMQ,EAAuB,EAAEI,UAAYC,EAAcvK,EAAQ,YAAY,GAEvC,KAAvDA,EAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAClD/C,EAAQ6K,cAAc,IAAMO,EAAiB,EAAEK,UAAYC,EAAcvK,EAAQ,cAAc,EAC/FnB,EAAQ6K,cAAc,IAAMQ,EAAuB,EAAEI,UAAYC,EAAcvK,EAAQ,YAAY,IAGnGnB,EAAQ6K,cAAc,IAAMO,EAAiB,EAAEK,UAAYC,EAAcvK,EAAQ,cAAc,EAC/FnB,EAAQ6K,cAAc,IAAMQ,EAAuB,EAAEI,UAAYC,EAAcvK,EAAQ,aAAa,IAbpGnB,EAAQ6K,cAAc,IAAMO,EAAiB,EAAEK,UAAYC,EAAcvK,EAAQ,eAAe,EAChGnB,EAAQ6K,cAAc,IAAMQ,EAAuB,EAAEI,UAAYC,EAAcvK,EAAQ,gBAAgB,IAepGP,SAAO,IAAMkK,EAAW9K,CAAO,GAC1C0K,GAAOA,EAAMC,EAAKF,cAAgB,EAClCE,EAAKgB,MAAMC,UAAYlB,EAAM,IACjC,CAQO,SAASmB,GAAelG,GAC3B,OAAO,IAAIb,cAAYa,CAAK,EAAEZ,cAAa,IAAIC,SAAQC,MDzpBvC,SCypB4D,QAAS,CAAA,EAAO,CAAA,CAAK,CAAC,CACtG,CASO,SAAS6G,GAAU9B,EAAQ+B,GAE9B,IADA,IAAIC,EAAOH,GAAe7B,EAAOrE,KAAK,EAC7B7R,EAAI,EAAGmY,EAAMD,EAAKvY,OAAQK,EAAImY,EAAKnY,CAAC,GACzCoY,WAAS,SAAUH,EAAS,IAAMjY,EAAGkY,EAAKlY,EAAE,CAEpD,CAUO,SAASqY,GAAcjI,EAAMkI,EAAcC,GAC9C,IAAK,IAAIvY,EAAI,EAAGA,EAAIoQ,EAAKzQ,OAAQK,CAAC,GAAI,CAClC,IAAIwY,EAAc,IAAIrD,KAAK9J,WAAS,cAAe+E,EAAKpQ,EAAE,CAAC,EACvDyY,EAAe,IAAItD,KAAK9J,WAAS,eAAgB+E,EAAKpQ,EAAE,CAAC,EACzDyL,oBAAM8M,CAAU,IAChBA,EAAa,cAEjBH,WAAS,cAAeE,EAAaI,WAAWF,EAAa,CAAEtX,OAAQqX,EAAY,EAAGnI,EAAKpQ,EAAE,EAC7FoY,WAAS,eAAgBE,EAAaI,WAAWD,EAAc,CAAEvX,OAAQqX,EAAY,EAAGnI,EAAKpQ,EAAE,EAEvG,CASO,SAAS4X,EAAcvK,EAAQjC,GAC9BuN,EAAStL,EAAOuL,UAAUC,YAAYzN,CAAI,EAC9C,MAAmB,KAAXuN,EAAiBvN,EAAOuN,CACpC,CASO,SAASG,GAAYzL,EAAQ0L,GAC5BC,EAAW3L,EAAO2L,SAEtB,OADYvN,oBAAMuN,CAAQ,GAAkB,KAAbA,EAAmBD,EAAOC,EAAW,IAAMD,CAE9E,CASO,SAASE,GAAmB5L,EAAQ+C,GAEvC/C,EAAOuE,gBAAkB,CAAA,EACiB,CAAC,IAAvCxB,EAAK+D,KAAK7I,GAAGqI,QAAQ,WAAW,GAAmD,CAAC,IAAxCvD,EAAK+D,KAAK7I,GAAGqI,QAAQ,YAAY,GAA6C,CAAC,IAAlCvD,EAAK+D,KAAK7I,GAAGqI,QAAQ,MAAM,EAUpHtG,EAAOuI,UAAYsD,GAAa9I,EAAK+D,KAAK7I,EAAE,EAH5C+B,EAAOyI,OAASoD,GAAa9I,EAAK+D,KAAK7I,GAAI+B,CAAM,EAKrDA,EAAOiD,SAAW,CAACoB,EAAcrE,CAAM,GACnB,YAAhBA,EAAOgF,OACHhF,EAAO8L,SACP/G,GAAa/E,EAAQ,SAAS,GAG9BA,EAAOW,OAAOoL,GAAmB,CAAEC,OAAQ,cAAe,EAC1DhM,EAAOuE,gBAAkB,CAAA,IAGb,eAAhBvE,EAAOgF,MACPD,GAAa/E,EAAQ,YAAY,EAErCA,EAAOW,OAAOsL,GAAqB,EAAE,CACzC,CASO,SAASJ,GAAa5N,EAAI+B,GAC7B,IAEIkM,EAFAnO,EAAOE,EAAGkO,UAAUlO,EAAGmO,YAAY,GAAG,EAAI,CAAC,EAC3C9Y,EAAQyK,EAKZ,OAHIiC,IACAkM,EAASlM,EAAOqM,oBAAoBC,SAEhCvO,GACJ,IAAK,OACD,IAAK,IAAIpL,EAAI,EAAGmY,EAAMoB,EAAO5Z,OAAQK,EAAImY,EAAKnY,CAAC,GAAI,CAC/C,GAAwB,iBAApBuZ,EAAOvZ,GAAGW,OAAgD,gBAApB4Y,EAAOvZ,GAAGW,MAAyB,CACzEA,EAAQ4Y,EAAOvZ,GAAGW,MAClB,MAGAA,EAAQ,eAGhB,MACJ,IAAK,YACDA,EAAQ,YACR,MACJ,IAAK,aACDA,EAAQ,aACR,MACJ,IAAK,OACDA,EAAQ,OAGhB,OAAOA,CACX,CASO,SAASiZ,GAAYvM,EAAQ1B,GAKhC,IAJA,IAAIkO,EAAclO,EAAKiI,MAAM,GAAG,EAC5BkG,EAAUzM,EAAO0M,aAAanG,MAAM,GAAG,EACvCoG,EAAO3O,WAASgC,EAAOvB,OAAO,GAAIuB,EAAOI,QAAQ,EACjDlO,EAAMkM,oBAAMJ,WAAS,KAAM2O,CAAI,CAAC,EAAI,OAAS,KACxCha,EAAI6Z,EAAYla,OAAS,EAAGwY,EAAM2B,EAAQna,OAAS,EAAGK,EAAImY,EAAKnY,CAAC,GAAI,CACzE,IAIQsL,EAJJ2O,EAAgC,KAAnBH,EAAQ9Z,EAAI,GAAaka,EAAqBC,GAC3D7M,EAA0B,KAAfwM,EAAQ9Z,GAAa,IAAOqN,EAAO1B,KAAOmO,EAAQ9Z,GAAK,IAClEqB,EAAO4U,GAAU5I,EAAQ9N,EAAKua,EAAQvM,SAASvN,EAAEwN,WAAY,EAAE,EAAE,EAChEqI,oBAAkBxU,CAAI,EAQvBgM,EAAO0M,aAAezM,GAPlBhC,EAAKD,WAAS,SAAUhK,CAAI,EAChCgM,EAAO3B,cAAc,CAAEC,KAAM2B,GAAW,CAAA,CAAI,EAC5CD,EAAOvB,OAAOQ,KAAKhB,CAAE,EACrB+B,EAAOiD,SAAW,CAACjP,GACnBgM,EAAOrB,UAAUM,KAAKjB,WAAS,OAAQhK,CAAI,CAAC,GAKhDmP,EAAKnD,EAAQ4M,EAAW5M,EAAO1B,IAAI,EACnC,MAER,CASO,SAASyO,GAAiB/M,EAAQhM,GACrCgM,EAAO0M,aAAe1E,GAAYhI,EAAQhM,EAAMgM,EAAO1B,IAAI,EAC3D,IAAIqO,EAAO3O,WAASgC,EAAOvB,OAAO,GAAIuB,EAAOI,QAAQ,EACjD4M,EAAUhN,EAAOI,SAASpC,WAAS,SAAUgC,EAAOiD,SAAS,EAAE,GAC/DgK,EAASzE,oBAAkBwE,CAAO,GAAqC,YAAhChP,WAAS,SAAUgP,CAAO,EAEjEE,EAAatE,GAAU5I,EADjB5B,oBAAMJ,WAAS,KAAM2O,CAAI,CAAC,EAAI,OAAS,KACT3J,EAAiBhD,CAAM,EAAIhC,WAAS,KAAMhK,CAAI,EAAIgK,WAAS,OAAQhK,CAAI,CAAC,EAChH,GAAIwU,oBAAkB0E,CAAU,EAAG,CAC/B,GAAKD,EAKD,OADAV,KAAAA,GAAYvM,EAAQA,EAAO1B,IAAI,EAH/B0B,EAAOW,OAAOwM,GAAsB,CAAEC,aAAcpN,EAAOvB,OAAOuB,EAAOvB,OAAOnM,OAAS,GAAI,MAOhG,CACG2L,EAAKD,WAAS,SAAUkP,CAAU,EACtClN,EAAO3B,cAAc,CAAEC,KAAM0B,EAAO0M,cAAgB,CAAA,CAAI,EACxD1M,EAAOvB,OAAOQ,KAAKhB,CAAE,EACrB+B,EAAOiD,SAAW,CAACiK,GACnBlN,EAAOrB,UAAUM,KAAKjB,WAAS,OAAQkP,CAAU,CAAC,EAEtD/J,EAAKnD,EAASA,EAAO1B,OAAS0B,EAAO0M,aAAgBI,GAAoBD,EAAoB7M,EAAO1B,IAAI,CAC5G,CAQO,SAAS+O,GAAarN,GAEzB,IACQ1B,EAFR0B,EAAOsN,WAAa,CAAA,EACgB,IAAhCtN,EAAOQ,cAAclO,QAAgB0N,EAAOU,cACxCpC,EAA8B,KAAtB0B,EAAOuN,WAAqBvN,EAAO1B,KAAO0B,EAAOuN,WACjC,mBAAxBvN,EAAOmB,cAAsCnB,EAAOQ,cAAc,GAAGgN,SAAS,GAAG,IACjFxN,EAAOoB,WAAapD,WAAS,aAAcgC,EAAOS,cAAc,EAAE,EAAEoH,QAAQ,MAAO,GAAG,GAE1E4F,GAAkBzN,EAAQA,EAAOS,cAAenC,EAAM0B,EAAO1B,IAAI,IAElD,SAAtB0B,EAAOiG,YAAyBjG,EAAOoB,aAAe9C,GAA+B,SAAtB0B,EAAOiG,YACvEjG,EAAOW,OAAO+M,GAAkB,EAAE,EAClCC,GAAM3N,EAAQA,EAAOoB,WAAYpB,EAAOQ,cAAelC,EAAM0B,EAAOiG,WAAY,GAAIjG,EAAOS,aAAa,IAGxGT,EAAOU,YAAc,CAAA,EACrBV,EAAOW,OAAOC,GAAkB,EAAE,EAClCL,EAAWP,CAAM,EASjB4N,EAAa5N,EAAQ,QARR,CACTwE,MAAO,KACP6F,MAAO,CACHwD,KAAM,MACNC,QAASvD,EAAcvK,EAAQ,mBAAmB,EAClD+N,WAAY,MAGgB,IAIpD,CAWO,SAASN,GAAkBzN,EAAQhM,EAAMmJ,EAAU6Q,GAEtD,IADA,IAAIC,EAAY,CAAA,EACPtb,EAAI,EAAGA,EAAIqB,EAAK1B,OAAQK,CAAC,GAC9B,GAAKqL,WAAS,SAAUhK,EAAKrB,EAAE,EAgB1B,CACD,IAAIub,EAASlO,EAAOmO,SAASxb,GAAKqN,EAAOmO,SAASxb,GAAGwV,KAAO,KACxDiG,EAAUpL,EAAiBhD,CAAM,EAAIkO,EAASlO,EAAOqO,UAAU1b,GAC/DmY,EAAM,EAINxM,EAAO,GAIX,IAFIA,EADM,GAHNwM,EADAsD,EACMA,EAAQhC,YAAY,GAAG,EAG7BtB,GACOkD,EAAWI,EAAQjC,UAAU,EAAGrB,EAAM,CAAC,EAE9CxM,KAASnB,EAAU,CASnByQ,EAAa5N,EAAQ,QARR,CACTwE,MAAO,KACP6F,MAAO,CACHwD,KAAM,MACNC,QAASvD,EAAcvK,EAAQ,mBAAmB,EAClD+N,WAAY,MAGgB,EACpCE,EAAY,CAAA,EACZ,WAtC0B,CAC1BK,EAAatG,GAAYhI,EAAQhM,EAAKrB,GAAIqb,CAAQ,EACtD,GAAqC,IAAjC7Q,EAASmJ,QAAQgI,CAAU,EAAS,CASpCV,EAAa5N,EAAQ,QARR,CACTwE,MAAO,KACP6F,MAAO,CACHwD,KAAM,MACNC,QAASvD,EAAcvK,EAAQ,kBAAkB,EACjD+N,WAAY,MAGgB,EACpCE,EAAY,CAAA,EACZ,OA6BZ,OAAOA,CACX,CAQO,SAASM,GAAYvO,GACxBA,EAAOsN,WAAa,CAAA,EACW,IAA3BtN,EAAOmO,SAAS7b,SAChB0N,EAAOgO,SAAWhO,EAAOgO,SAASnG,QAAQ,MAAO,GAAG,EACpD7H,EAAO7C,SAAW6C,EAAO7C,SAAS0K,QAAQ,MAAO,GAAG,EACpC4F,GAAkBzN,EAAQA,EAAOmO,SAAUnO,EAAO7C,SAAU6C,EAAOgO,QAAQ,GACxEhO,EAAOgO,WAAahO,EAAO7C,WAC1C6C,EAAOiD,SAAW,CAACjD,EAAOwO,UAC1Bb,GAAM3N,EAAQA,EAAOgO,SAAUhO,EAAOqO,UAAWrO,EAAO7C,SAAU,OAAQ,GAAI6C,EAAOmO,QAAQ,EAC7FnO,EAAOW,OAAO+M,GAAkB,EAAE,GAG9C,CAQO,SAASrM,GAAcoN,GAG1B,IAFA,IAAInQ,EAAOmQ,EAAQlI,MAAM,GAAG,EACxBtG,EAAU3B,EAAK,GAAK,IACf3L,EAAI,EAAGA,EAAI2L,EAAKhM,OAAS,EAAGK,CAAC,GAClCsN,GAAW3B,EAAK3L,GAAK,IAEzB,OAAOsN,CACX,CASO,SAASyO,GAAiB1O,EAAQ+C,GACrC,IAAIkF,EAAWjK,WAASgC,EAAOxB,MAAQ,KAAO,OAAQuE,EAAK4L,GAAG,EAAI,IAC9DzH,EAAQlJ,WAASgC,EAAOxB,OAAS,CAACgK,oBAAkBxI,EAAOwH,aAAaC,GAAG,EAAI,WAAa,aAAc1E,EAAK4L,GAAG,EACtH,OAAKvQ,oBAAM8I,CAAK,EAOLlE,EAAiBhD,CAAM,EAAIiI,EAAWjI,EAAO1B,KAAO2J,EAN7C,KAAVf,EACOlH,EAAOxB,OAAS,CAACgK,oBAAkBxI,EAAOwH,aAAaC,GAAG,EAAIQ,EAAW,IAE7Ef,EAAMW,QAAQ,MAAO,GAAG,EAAII,CAK3C,CAUO,SAAS2G,GAAc5O,EAAQ6O,EAAWhG,GAC3B,SAAdgG,IACK7O,EAAOsN,WAMRtN,EAAOW,OAAOmO,GAAgBjG,CAAM,GALpC7I,EAAOU,YAAc,CAAA,EACrBV,EAAOW,OAAOC,GAAkB,EAAE,EAClCZ,EAAOW,OAAOoO,GAAelG,CAAM,IAMN,IAAjC7I,EAAOgP,eAAe1c,SACtB0N,EAAOiP,WAAa,IAGxB,IADA,IACSC,EAAQ,EAAIA,EAAQrG,EAAOrE,MAAMlS,OAAkB4c,CAAK,GAC7DlP,EAAOiP,WAAWhQ,KAAK4J,EAAOrE,MAAM0K,GAAOlP,EAAOxB,MAAQ,KAAO,OAAO,EACpEwB,EAAOsN,YACPtN,EAAOmP,eAAelQ,KAAK4J,EAAOrE,MAAM0K,EAAM,EAGtDlP,EAAOgP,eAAiB,GACxBhP,EAAOoP,iBAAmB,GACtBpP,EAAOsN,YAAc,CAACtN,EAAOqP,aAC7BrP,EAAOsP,UAAY,CAAA,EAGnBtP,EAAOsP,UAAY,CAAA,EAEnB,CAACtP,EAAOsN,YAAetN,EAAO1B,OAAS0B,EAAOgO,UAAchO,EAAO1B,OAAS0B,EAAO7C,UAChF6C,EAAOuP,cACVvP,EAAOwP,WAAa,CAAA,EACpBrM,EAAKnD,EAAQyP,GAAiBzP,EAAO1B,IAAI,GAGzCoR,GAAa1P,CAAM,EAEvBA,EAAOoH,QAAQ,UAAW,CAAEtG,OAAQ+N,EAAWhG,OAAQA,EAAQ,CACnE,CAQO,SAAS6G,GAAa1P,GACzB,IAYYnC,EAZRY,EAAST,WAAS,SAAUgC,EAAOwO,QAAQ,EAC/CxO,EAAO2P,WAAalR,EACpBuB,EAAOiD,SAAW,CAACjD,EAAOwO,UACtBxO,EAAOwP,WACPxP,EAAOW,OAAOiP,GAAiB5P,EAAOiD,QAAQ,GAG1CjD,EAAO6P,wBACHhS,EAAO4B,SAAO,cAAgBhB,EAAS,KAAMuB,EAAO6P,qBAAqBC,QAAQjR,OAAO,KAGxFJ,EADgBsR,SAASrG,cAAc,eAAiB1L,WAAS,KAAMgC,EAAOwO,QAAQ,EAAI,IAAI,EAC3EtQ,aAAa,UAAU,EAC1CL,EAAO4B,SAAO,cAAgBhB,EAAS,KAAMuB,EAAO6P,qBAAqBC,QAAQjR,OAAO,GAE5FjB,GAAWC,EAAMmC,EAAOwO,SAAUxO,CAAM,GAE5CmD,EAAKnD,EAAQgQ,GAAiBhQ,EAAO7C,QAAQ,EAErD,CASO,SAAS8S,GAAiBjQ,EAAQmI,GAGrC,IAFA,IAAInU,EAAO,KACPkc,EAAUlQ,EAAOsN,WAAatN,EAAOmO,SAAWnO,EAAOS,cAClD9N,EAAI,EAAGA,EAAIud,EAAQ5d,OAAQK,CAAC,GACjC,GAAIqL,WAAS,OAAQkS,EAAQvd,EAAE,IAAMwV,EAAM,CACvCnU,EAAOkc,EAAQvd,GACf,MAGR,OAAOqB,CACX,CAQO,SAASmc,GAAyBnQ,GAKrC,GAJAA,EAAOuP,aAAe,CAAA,EACqC,KAAvDvP,EAAO0B,oBAAoBC,UAAU9C,QAAQ+C,QAC7C5B,EAAOuP,aAAe,CAAA,GAEE,mBAAxBvP,EAAOmB,aAAmC,CAC1CnB,EAAOqO,UAAY,GAEnB,IADA,IAAI1b,EAAI,EACDA,EAAIqN,EAAO+B,cAAczP,QAC5B0N,EAAOqO,UAAUpP,KAAKe,EAAO+B,cAAcpP,EAAE,EAC7CA,CAAC,GAE+B,IAAhCqN,EAAO+B,cAAczP,QAAgB0N,EAAOmO,UAAuC,IAA3BnO,EAAOmO,SAAS7b,QACxE0N,EAAOqO,UAAUpP,KAAKmR,GAAYpQ,EAAQA,EAAOmO,SAAS,EAAE,CAAC,EAGrE,IAAIkC,EAAYrQ,EAAO6J,cAAc,MAAO,CACxCC,UAAW,aAAe3D,GAASnG,EAAOmO,SAAS,EAAE,EACxD,EACGmC,EAAYtQ,EAAO6J,cAAc,MAAO,CACxCC,UAAW,YACXQ,UAAWtK,EAAOmO,SAAS,GAAGhG,KACjC,EACGoI,EAAavQ,EAAO6J,cAAc,MAAO,CACzCC,UAAW,eACd,EAGG0G,GAFJD,EAAWnG,YAAYiG,CAAS,EAChCE,EAAWnG,YAAYkG,CAAS,EACtBtQ,EAAO6J,cAAc,MAAO,CAClCC,UAAW2G,GACd,GACDD,EAAIpG,YAAYmG,CAAU,EACI,EAA1BvQ,EAAOqO,UAAU/b,SACboe,EAAQ1Q,EAAO6J,cAAc,OAAQ,CACrCC,UAAW,aACXQ,UAAYtK,EAAOqO,UAAgB,OAAElO,SAAS,EAAE,EACnD,EACDqQ,EAAIpG,YAAYsG,CAAK,GAEzB1Q,EAAO2Q,mBAAqBH,EAC5BxQ,EAAOnB,QAAQuL,YAAYpK,EAAO2Q,kBAAkB,CACxD,CASO,SAASC,GAAgB5Q,EAAQ+C,GACpC,IAAI8N,EAAW9N,EAUXwN,GATJM,EAASC,OAAS,CAAA,EACY,MAA1B9Q,EAAO+Q,kBACPC,OAAOC,aAAajR,EAAO+Q,eAAe,EAC1C/Q,EAAO+Q,gBAAkB,MAE7BG,GAAiBlR,CAAM,EACvBA,EAAOnB,QAAQe,UAAU0C,OAAO,YAAa,WAAW,EACxD/B,EAAWP,CAAM,EACjBA,EAAOmR,UAAUC,SAAW3R,SAAO,IAAMO,EAAOnB,QAAQZ,GAAKoT,GAAgBrR,EAAOnB,OAAO,EAC1EY,SAAO,IAAMgR,GAAWzQ,EAAOnB,OAAO,GACnD0R,GACAe,SAAOf,CAAU,EAErBrL,GAAgBlF,EAAQ+C,EAAK9Q,MAAM,EACnC+N,EAAOW,OAAO4Q,GAAiBxO,CAAI,EACnCxC,EAAWP,EAAQ,OAAO,EAC1B6Q,EAASvJ,YAActH,EAAOmO,SAC9BnO,EAAOoH,QAAQ,eAAgByJ,EAAU,SAAUA,GAC3C,CAACA,EAASC,QAAU,CAAC1S,oBAAM4B,EAAOwF,YAAY,GAA6B,KAAxBxF,EAAOwF,cAA0C,EAAnBxF,EAAOwR,WACxFjD,GAAYvO,CAAM,EAEtBA,EAAOwR,UAAY,EACtB,CACL,CAUO,SAASC,GAAiBzR,EAAQ+C,EAAM2O,GAC3C,IAAIb,EAAW9N,EAiBf,GAhBA8N,EAASC,OAAS,CAAA,EAClBD,EAASvJ,YAActH,EAAOmO,SAC9BnO,EAAOwR,UAAY,EACnBxR,EAAOmP,eAAiB,GACnBnP,EAAO2R,mBAA8C,mBAAxB3R,EAAOmB,cACpCqB,UAAQO,EAAKlE,QAAS,IAAI,EAAEX,aAAa,UAAU,IAAM8B,EAAOvB,OAAO,MACxEoS,EAASC,OAAS,CAAA,GAEO,mBAAxB9Q,EAAOmB,cACyE,CAAC,IAAjFnB,EAAOvB,OAAO6H,QAAQ9D,UAAQO,EAAKlE,QAAS,IAAI,EAAEX,aAAa,UAAU,CAAC,EAC3E8B,EAAOwP,WAAa,CAAA,EAGpBxP,EAAOwP,WAAa,CAAA,EAExBjP,EAAWP,CAAM,EACb6Q,EAASC,OACTY,EAAQE,WAAW7O,EAAK8O,KAAK,EAC7BC,GAAW9R,CAAM,OAEhB,GAAI,CAAC6Q,EAASC,OAAQ,CAEvB,IADA,IAAIne,EAAI,EACDA,EAAIqN,EAAOgB,eAAe1O,QAC7BiP,GAAQvB,EAAOgB,eAAerO,EAAE,EAChCA,CAAC,GAELqN,EAAOoH,QAAQ,gBAAiByJ,EAAU,SAAUA,GAC5CA,EAASC,QACTY,EAAQE,WAAW7O,EAAK8O,KAAK,EAC7BC,GAAW9R,CAAM,GAGjBA,EAAOmR,UAAUC,SAAW,KAEnC,EAET,CAQO,SAASU,GAAW9R,GACvBO,EAAWP,CAAM,EACbuQ,EAAa9Q,SAAO,IAAMgR,GAAWzQ,EAAOnB,OAAO,EACnD0R,GACAe,SAAOf,CAAU,CAEzB,CAQO,SAASW,GAAiBlR,GAC7B+R,GAAgB/R,EAAQgS,EAAe,EACvCD,GAAgB/R,EAAQiS,EAAa,CACzC,CASO,SAASF,GAAgB/R,EAAQ4B,GAEpC,IADA,IAAI4O,EAAMxQ,EAAOnB,QAAQuD,iBAAiB,IAAMR,CAAK,EAC5CjP,EAAI,EAAGA,EAAI6d,EAAIle,OAAQK,CAAC,GAC7B6d,EAAI7d,GAAGiN,UAAU0C,OAAOV,CAAK,CAErC,CAWO,SAASsQ,GAAcC,EAAcnS,EAAQoS,EAAWC,GAC3D,IAAIC,EACAC,EAAcJ,EAAaK,wBAC3B3U,EAAO4B,SAAO,IAAM2S,EAAWD,CAAY,EAC1CE,GAAYE,EAAYhJ,IAAM4I,EAAaM,aAAe,IAAQ,CAACjK,oBAAkB3K,CAAI,IAC1FyU,EAAoC,mBAAxBtS,EAAOwF,cAA6D,gBAAxBxF,EAAOwF,aAAkC3H,EAAKyL,aAAe,IAAMzL,EAAKyL,aAAe,IAC/I6I,EAAaO,SAAS,EAAGJ,CAAQ,GAEjC,CAAC9J,oBAAkB3K,CAAI,GAAMwU,GAAYE,EAAYhJ,IAAM,KAC3D+I,EAAoC,mBAAxBtS,EAAOwF,cAA6D,gBAAxBxF,EAAOwF,aAAkC3H,EAAKyL,aAAe,IAAMzL,EAAKyL,aAAe,IAC/I6I,EAAaO,SAAS,EAAG,CAACJ,CAAQ,EAE1C,CASO,SAASK,GAAgB3S,EAAQ+C,GACpC,IAAI8N,EAAW9N,EAEX6P,GADJ/B,EAASvJ,YAActH,EAAOmO,SAChB,CAAA,GAQVtQ,GAPJqH,GAAgBlF,EAAQ+C,EAAK9Q,MAAM,EACnCif,GAAiBlR,CAAM,EACO,MAA1BA,EAAO+Q,kBACPC,OAAOC,aAAajR,EAAO+Q,eAAe,EAC1C/Q,EAAO+Q,gBAAkB,MAE7BxQ,EAAWP,EAAQ,OAAO,EACf,MAEiB,mBAAxBA,EAAOwF,eACP3H,EAAO2E,UAAQO,EAAK9Q,OAAQ,IAAI,GAC3B2N,UAAUqC,IAAII,GAAW2P,EAAe,EAC7CY,EAAU,CAAA,EAEV5S,EAAO+Q,gBAAkBC,OAAO6B,WAAW,WAAc7S,EAAOW,OAAOmS,GAAiB/P,CAAI,GAAM,GAAG,EAErGmP,GADelS,EAAO6P,qBAAqBC,QAAQjR,QAAQkU,cAC/B/S,EAAQ,YAAa+C,EAAK8O,MAAMmB,CAAC,GAEhC,gBAAxBhT,EAAOwF,eACZ3H,EAAO2E,UAAQO,EAAK9Q,OAAQ,IAAI,IACpB4L,EAAK6L,cAAc,IAAM9C,EAAU,GAAK,CAAC/I,EAAK+B,UAAUC,SAASqC,EAAQ,EACjFrE,EAAK+B,UAAUqC,IAAI+P,EAAe,EAE7BnU,CAAAA,GAASA,EAAK6L,cAAc,IAAM9C,EAAU,GAAM/I,EAAK+B,UAAUC,SAASqC,EAAQ,GACvFrE,EAAK+B,UAAUqC,IAAIgQ,EAAa,EAEpCW,EAAU,CAAA,EAEVV,GADelS,EAAO0E,kBAAkBC,QAAQ9F,QAAQ6K,cAAc,YAAY,EACtD1J,EAAQ,QAAS+C,EAAK8O,MAAMmB,CAAC,GAE5B,mBAAxBhT,EAAOwF,eACZ3H,EAAO2E,UAAQO,EAAK9Q,OAAQ,IAAI,IACpB4L,EAAK6L,cAAc,IAAM9C,EAAU,GAAK,CAAC/I,EAAK+B,UAAUC,SAASqC,EAAQ,GACjFrE,EAAK+B,UAAUqC,IAAII,GAAW2P,EAAe,EAEjDY,EAAU,CAAA,EAEVV,GADelS,EAAO6E,qBAAqBhG,QAAQoU,kBACvBjT,EAAQ,eAAgB+C,EAAK8O,MAAMmB,CAAC,GAGnC,kBAAxBhT,EAAOwF,eACZoN,EAAU,CAAA,GAEd5S,EAAOnB,QAAQe,UAAU0C,OAAO,YAAa,WAAW,EACxDtC,EAAOnB,QAAQe,UAAUqC,IAAI2Q,EAAU,YAAc,WAAW,EAChE5S,EAAOwR,UAAYxR,EAAOwR,UAAY,EACtCxR,EAAOoH,QAAQ,eAAgByJ,CAAQ,CAC3C,CASO,SAASqC,GAAelf,GAG3B,IAFA,IAAImf,EAAM,GACNC,EAAOliB,OAAOkiB,KAAKpf,CAAI,EAClBrB,EAAI,EAAGA,EAAIygB,EAAK9gB,OAAQK,CAAC,GACd,YAAZygB,EAAKzgB,KACLwgB,IAAc,IAANxgB,EAAU,GAAK,MAAQygB,EAAKzgB,GAAK,KAAOqL,WAASoV,EAAKzgB,GAAIqB,CAAI,GAG9E,OAAOmf,CACX,CASO,SAAS/C,GAAYpQ,EAAQhM,GAChC,OAAIgM,EAAOxB,MACAR,WAAS,KAAMhK,CAAI,EAEvBkU,GAAQlI,EAAQhM,CAAI,CAC/B,CASO,SAASqf,GAAmBrT,EAAQhM,GACvCgM,EAAOiD,SAAW,CAACjP,GACnBgM,EAAOsT,gBAAkBtV,WAAS,OAAQhK,CAAI,EAC9CgM,EAAOuT,OAASvV,WAAS,SAAUhK,CAAI,EACvCgM,EAAOwT,WAAaxV,WAAS,aAAchK,CAAI,CACnD,CAQO,SAASyf,GAASzT,GAChB0T,EAAc1T,EAAOiD,SAAS,EAAE,EAIjC2K,EAAa5N,EAAQ,QAAQ,EAH7B4F,EAAmB5F,EAAQA,EAAOiD,SAAS,GAAI0Q,CAAqB,CAK5E,CASO,SAASC,GAAW5T,GAEvB,IADA,IAAIqI,EAAQrI,EAAOiD,SACVtQ,EAAI,EAAGA,EAAI0V,EAAM/V,OAAQK,CAAC,GAC/B,GAAI,CAACkhB,GAAkBxL,EAAM1V,EAAE,EAE3B,OADAiT,KAAAA,EAAmB5F,EAAQqI,EAAM1V,GAAImhB,EAAyB,EAIpC,EAA9B9T,EAAO+B,cAAczP,QACrByhB,GAAS/T,EAAQA,EAAO1B,KAAM0B,EAAO+B,aAAa,CAE1D,CAUO,SAASiS,GAAchU,EAAQhM,EAAMigB,GACxC,IAAK,IAAIthB,EAAI,EAAGA,EAAIqB,EAAK1B,OAAQK,CAAC,GAC9B,GAAI,CAAC+gB,EAAc1f,EAAKrB,EAAE,EAEtB,OADAiT,KAAAA,EAAmB5F,EAAQhM,EAAKrB,GAAIghB,CAAqB,EAIjE3T,EAAOiD,SAAWjP,EAClBkgB,GAAOlU,EAAQiU,EAAQjU,EAAO1B,KAAM,QAAQ,CAChD,CAWO,SAAS6V,GAAgBnU,EAAQhM,EAAMigB,GAC1C,IAAK,IAAIthB,EAAI,EAAGA,EAAIqB,EAAK1B,OAAQK,CAAC,GAC9B,GAAI,CAACkhB,GAAkB7f,EAAKrB,EAAE,EAE1B,OADAiT,KAAAA,EAAmB5F,EAAQhM,EAAKrB,GAAImhB,EAAyB,EAIrE9T,EAAOiD,SAAWjP,EACE,EAAhBigB,EAAO3hB,QACPyhB,GAAS/T,EAAQA,EAAO1B,KAAM2V,CAAM,CAE5C,CAUO,SAASrO,EAAmB5F,EAAQhM,EAAM8M,GAC7C,IAAIgN,EAAU9P,WAAS,UAAWA,WAAS,aAAchK,CAAI,CAAC,EAW9D4Z,EAAa5N,EAAQ,QAPN,CACXqK,MAAO,CACHwD,KAAM,MACNE,WAAY,KACZD,QANJA,EADY,KAAZA,EACUvD,EAAcvK,EAAQ,gBAAgB,EAAE6H,QAAQ,MAAO7J,WAAS,OAAQhK,CAAI,CAAC,EAAE6T,QAAQ,MAAO/G,CAAM,EAMjGgN,GAGqB,CAC1C,CAQO,SAASsG,GAAepgB,GAC3B,OAAQ0R,GAAc1R,CAAI,EAAgC,cAA5B,yBAClC,CAQO,SAAS0R,GAAc1R,GACtBqgB,EAAarW,WAAS,aAAchK,CAAI,EAC5C,MAAO,EAACqgB,GAAerW,CAAAA,WAAS,OAAQqW,CAAU,EACtD,CAQO,SAASX,EAAc1f,GACtBqgB,EAAarW,WAAS,aAAchK,CAAI,EAC5C,MAAOqgB,CAAAA,GAAerW,WAAS,OAAQqW,CAAU,GAAKrW,WAAS,QAASqW,CAAU,CACtF,CAQO,SAASC,GAAiBtgB,GACzBqgB,EAAarW,WAAS,aAAchK,CAAI,EAC5C,MAAOqgB,CAAAA,GAAerW,WAAS,OAAQqW,CAAU,GAAKrW,WAAS,gBAAiBqW,CAAU,CAC9F,CAQO,SAASE,GAAgBvgB,GACxBqgB,EAAarW,WAAS,aAAchK,CAAI,EAC5C,MAAOqgB,CAAAA,GAAerW,WAAS,OAAQqW,CAAU,GAAKrW,WAAS,SAAUqW,CAAU,CACvF,CAQO,SAASR,GAAkB7f,GAC1BqgB,EAAarW,WAAS,aAAchK,CAAI,EAC5C,MAAOqgB,CAAAA,GAAerW,WAAS,OAAQqW,CAAU,GAAKrW,WAAS,WAAYqW,CAAU,CACzF,CAQO,SAASG,GAAgBxU,GAC5B,IAAIyU,EAAUzU,EAAOiD,SAAS,GACzBqR,GAAiBG,CAAO,EAIzB7G,EAAa5N,EAAQ,WAAW,EAHhC4F,EAAmB5F,EAAQyU,EAASC,EAA6B,CAKzE,CAQO,SAASC,GAAW3U,GACvB,IAKQ4U,EALJH,EAAUzU,EAAOiD,SAAS,GACzBsR,GAAgBE,CAAO,GAIpBG,EAAQ,IAAM5U,EAAOnB,QAAQZ,GAAK4W,GACtB9E,SAASrG,cAAckL,CAAK,EAClCE,SALVlP,EAAmB5F,EAAQyU,EAASM,EAAuB,CAOnE,CAQO,SAASC,GAAWhV,GAClBwI,oBAAkBxI,EAAOiV,SAAS,GACnCjV,EAAOiV,UAAUC,MAEzB,CAWO,SAASC,GAAiBnV,EAAQiD,EAAUnC,EAAQsU,GAEvD,IADA,IAAIC,EAAgB,GACX1iB,EAAI,EAAGA,EAAIsQ,EAAS3Q,OAAQK,CAAC,GAAI,CACtC,IAaQ2iB,EAbJjB,EAAarW,WAAS,aAAciF,EAAStQ,EAAE,EAqBnD,GApBkB,MAAd0hB,IACAA,EAAakB,KAAAA,GAEbH,EACIf,CAAAA,GAAgBrW,WAAS,OAAQqW,CAAU,GAAMrW,WAAS,gBAAiBqW,CAAU,GAE/D,MADtBgB,EAAgBrX,WAAS,UAAWA,WAAS,aAAciF,EAAStQ,EAAE,CAAC,KAEnE0iB,EAAgB9K,EAAcvK,EAAQ,gBAAgB,EAAE6H,QAAQ,MAAO7J,WAAS,OAAQiF,EAAStQ,EAAE,CAAC,EAAEkV,QAAQ,MAAO,eAAe,IAKxIyN,EAAkC,SAAXxU,EAAoB9C,WAAS,OAAQqW,CAAU,EAAIrW,WAAS,QAASqW,CAAU,EACtGA,CAAAA,GAAgBrW,WAAS,OAAQqW,CAAU,GAAMiB,GAE3B,MADtBD,EAAgBrX,WAAS,UAAWA,WAAS,aAAciF,EAAStQ,EAAE,CAAC,KAEnE0iB,EAAgB9K,EAAcvK,EAAQ,gBAAgB,EAAE6H,QAAQ,MAAO7J,WAAS,OAAQiF,EAAStQ,EAAE,CAAC,EAAEkV,QAAQ,MAAO/G,CAAM,IAIjH,KAAlBuU,EAAsB,CACtBrV,EAAOwV,aAAe,CAClB7G,IAAK,KACL8F,QAAS,KACTpK,MAAO,CACHwD,KAAM,MACNC,QAASuH,EACTtH,WAAY,MAEhBvJ,MAAO,MAEX,OAGR,OAAO6Q,CACX,CCxnDO,SAASlS,EAAKnD,EAAQ6R,EAAOvT,GAEhC,IADA,IAAI2E,EAAWjD,EAAOiD,SACbtQ,EAAI,EAAGA,EAAIsQ,EAAS3Q,OAAQK,CAAC,GAC9ByL,oBAAMJ,WAAS,WAAYiF,EAAStQ,EAAE,CAAC,GACvCoY,WAAS,WAAY,CAAA,EAAO9H,EAAStQ,EAAE,EAI/C8iB,GAAWzV,EADA,CAAEc,OAAQ,OAAQxC,KAAMA,EAAM8F,gBAAiBpE,EAAOoE,gBAAiBpQ,KAAMiP,GAC/DyS,GAAa7D,CAAK,CAC/C,CASO,SAAS8D,GAAa3V,EAAQ4V,GAEjCH,GAAWzV,EADA,CAAEc,OAAQ,SAAUxC,KAAM0B,EAAO1B,KAAM6J,KAAMyN,EAAU5hB,KAAMgM,EAAOiD,UACtD4S,GAAeD,CAAQ,CACpD,CASO,SAASpS,GAAOxD,EAAQ6R,GAC3B,IAAI7d,EAAO,CAAE8M,OAAQ,SAAUxC,KAAM0B,EAAO1B,KAAM8F,gBAAiBpE,EAAOoE,gBAAiBpQ,KAAM,CAACqQ,EAAcrE,CAAM,IAElH8V,EAAgB9V,EAAO+V,WAAaC,SADpCD,KAAAA,EACuD/hB,EAAMgM,EAAO+V,UAAU,EAAI/hB,EACtFyhB,GAAWzV,EAAQ8V,EAAeG,GAAepE,EAAO7T,WAAS,SAAU8X,CAAa,CAAC,CAC7F,CAUO,SAASI,GAAOlW,EAAQ1B,EAAM6X,GACjC,IAAIhO,EAUIiO,EAAAA,EARmD,KAAvDpW,EAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAiB5B,CAAAA,EAAO6B,aAKjEqF,EAAQlH,EAAOwT,WACfxT,EAAOxB,QALX2J,EAAOnI,EAAOsT,gBACJ6C,IAUNhO,GADAjB,EAAQA,EAAMW,QAAQ,MAAO,GAAG,GACnBA,QAAQvJ,EAAM,EAAE,EAAI0B,EAAOsT,gBAC9BpM,EAAMW,QAAQvJ,EAAM,EAAE,EAAI6X,GAM5CV,GAAWzV,EAHA,CACPc,OAAQ,SAAUxC,KAAMA,EAAM6J,KAAMA,EAAMiO,QAASA,EAASpiB,KAAMgM,EAAOiD,SAAUoT,kBAAmBrW,EAAOqW,mBAExFC,GAAehY,CAAI,CAChD,CAcO,SAASqP,GAAM3N,EAAQ1B,EAAMY,EAAOkC,EAAYmV,EAAgBC,EAAa/V,GAC5EzM,EAAO,CACP8M,OAAQyV,EAAgBjY,KAAMA,EAAMmY,WAAYzW,EAAOiD,SAAS,GAChE7B,WAAYA,EAAYlC,MAAOA,EAAOwX,YAAaF,EAAaxiB,KAAMyM,GAE1ET,EAAO2W,gBAAkBvV,EACzBqU,GAAWzV,EAAQhM,EAAM4iB,GAActY,EAAMiY,EAAgBnV,CAAU,CAC3E,CAWO,SAAS8S,GAAOlU,EAAQqI,EAAO/J,EAAMuQ,GAExC4G,GAAWzV,EADA,CAAEc,OAAQ+N,EAAWvQ,KAAMA,EAAMY,MAAOmJ,EAAOrU,KAAMgM,EAAOiD,UAC9C4T,GAAevY,CAAI,CAChD,CAYO,SAASwY,GAAW9W,EAAQd,EAAOZ,EAAMuQ,GAE5C4G,GAAWzV,EADA,CAAEc,OAAQ+N,EAAWvQ,KAAMA,EAAMY,MAAOA,EAAOlL,KAAMgM,EAAOiD,UAC9C8T,GAAgBzY,EAAMuQ,CAAS,CAC5D,CA8BO,SAAS7L,EAAiBhD,GAE7B,OADuD,GAAhCA,EAAOkD,eAAe5Q,QAAe8L,oBAAM4B,EAAOwH,aAAaC,GAAG,CAE7F,CASA,SAASuP,GAAa9T,EAAgBiF,GAElC,OADejF,EAAe+T,KAAK,SAAUnQ,GAAQ,OAAOA,EAAKqB,OAASA,EAAO,CAErF,CASA,SAAS+O,GAAclX,EAAQ/B,GAE3B,OADY+B,EAAOkD,eAAeiU,UAAU,SAAUrQ,GAAQ,OAAOsQ,OAAOtQ,EAAK7I,EAAE,IAAMmZ,OAAOnZ,CAAE,EAAI,CAE1G,CASA,SAASoZ,GAAWrX,EAAQ/B,GAExB,OADW+B,EAAOkD,eAAeM,OAAO,SAAUsD,GAAQ,OAAOsQ,OAAOtQ,EAAK7I,EAAE,IAAMmZ,OAAOnZ,CAAE,EAAI,EAAE,EAExG,CASA,SAASqZ,GAAetX,EAAQ0D,GAE5B,OADW1D,EAAOkD,eAAeM,OAAO,SAAUsD,GAAQ,OAAOsQ,OAAOtQ,EAAKpD,QAAQ,IAAM0T,OAAO1T,CAAQ,EAAI,CAElH,CAWA,SAAS6T,GAAcvjB,EAAM/B,EAAQ2jB,EAAU4B,GAC3C,IAEStlB,EAFLulB,EAAU,GAEd,IAASvlB,KAAO8B,EACR9C,OAAOW,UAAUN,eAAemmB,KAAK1jB,EAAM9B,CAAG,IAC9CulB,EAAQvlB,GAAO,MAGvB,IAAIylB,EAAc,IAAI7P,KAClByF,EAA2B,IAAdtb,EAAOgM,GAAWhM,EAAOuhB,WAAavhB,EAAOkW,KAAO,KAarE,OAZAjX,OAAO0mB,OAAOH,EAAS,CACnBI,YAAaF,EACbG,aAAcH,EACdnE,WAAYjG,EACZwK,SAAUP,CAAAA,CAAAA,GAASxjB,EAAK+jB,SACxB9Z,GAAI+Z,SAAoB,OAAbpC,EAAoB5hB,EAAKmU,KAAOyN,CAAQ,EACnDrC,OAAQiE,CAAAA,CAAAA,GAASxjB,EAAKuf,OACtBpL,KAAmB,OAAbyN,EAAoB5hB,EAAKmU,KAAOyN,EACtClS,SAAUzR,EAAOgM,GACjBhK,KAAMujB,EAASxjB,EAAKC,KAAO,EAC3BL,KAAM4jB,EAASxjB,EAAKJ,KAAO,GAC9B,EACM6jB,CACX,CAWA,SAASQ,GAAkBjY,EAAQ8N,EAASD,EAAM5G,GAC9CjH,EAAOwV,aAAe,CAClB7G,IAAK,KACL8F,QAAS,KACTpK,MAAO,CACHwD,KAAMA,EACNC,QAASA,EACTC,WAAwB,MAAZ9G,EAAmBA,EAAW,MAE9CzC,MAAO,KAEf,CA6OA,SAAS0T,GAAoBlY,EAAQhM,EAAM2T,GACvC,OAAQ3J,WAAS,SAAUhK,CAAI,GAC3B,IAAK,SArOkBgM,EAsOGA,EAtOKhM,EAsOGA,EAtOG2T,EAsOGA,EArOxCwQ,EAAkB,CAClBC,WAAYpa,WAAS,OAAQhK,CAAI,EACjC8c,OAAQ,CAAA,EACRxS,KAAMN,WAAS,OAAQhK,CAAI,EAC3BqkB,aAAcra,WAAS,OAAQhK,CAAI,GAEvCgM,EAAOoH,QAAQ,qBAAsB+Q,EAAiB,SAAUpV,GAC5D,IAOYuV,EAPRvV,EAAK+N,OACLnJ,EAAUmJ,OAAS,CAAA,EAGnB9N,EAAiBhD,CAAM,IAClBgX,GAAahX,EAAOkD,eAAgBH,EAAKqV,UAAU,GAMhDtK,EAAU,kCAAoC/K,EAAKqV,WAAa,mBACpEH,GAAkBjY,EAAQ8N,EAAS,MAAO,IAAI,IAL1CwK,EAAYf,GADZgB,EAASxV,EAAKsV,aAAa,GACOE,EAAQxV,EAAKqV,WAAY,CAAA,CAAK,EACpEpY,EAAOkD,eAAejE,KAAKqZ,CAAS,IAO/C,EAgNO,MAEJ,IAAK,SAvMmBtY,EAwMGA,EAxMKhM,EAwMGA,EAxMG2T,EAwMGA,EAvMzC6Q,EAAkB,CAClB1H,OAAQ,CAAA,EACR7N,SAAUjF,WAAS,OAAQhK,CAAI,EAC/BsK,KAAMN,WAAS,OAAQhK,CAAI,GAE/BgM,EAAOoH,QAAQ,eAAgBoR,EAAiB,SAAUzV,GAClDA,EAAK+N,OACLnJ,EAAUmJ,OAAS,CAAA,EAGnB9N,EAAiBhD,CAAM,GACvB+C,EAAKE,SAASwV,QAAQ,SAAUxV,GAC5B,IAAIyV,EAAQxB,GAAclX,EAAQiD,EAAShF,EAAE,EAC/B,CAAC,IAAXya,GACA1Y,EAAOkD,eAAeyV,OAAOD,EAAO,CAAC,EAEpCzV,EAASsQ,QACKvT,EAAOkD,eAAeM,OAAO,SAAUC,GAAO,OAAOA,EAAI+P,WAAWhG,SAASvK,EAASkF,IAAI,EAAI,EACpGsQ,QAAQ,SAAUG,GACnBF,EAAQxB,GAAclX,EAAQ4Y,EAAQ3a,EAAE,EAC9B,CAAC,IAAXya,GACA1Y,EAAOkD,eAAeyV,OAAOD,EAAO,CAAC,EAE5C,EAER,EAER,EA6KO,MAEJ,IAAK,SApKmB1Y,EAqKGA,EArKKhM,EAqKGA,EArKG2T,EAqKGA,EApKzCkR,EAAkB,CAClB/H,OAAQ,CAAA,EACRsF,QAASpY,WAAS,UAAWhK,CAAI,EACjCiP,SAAUjF,WAAS,OAAQhK,CAAI,EAC/BsK,KAAMN,WAAS,OAAQhK,CAAI,GAE/BgM,EAAOoH,QAAQ,eAAgByR,EAAiB,SAAU9V,GACtD,IAUY+K,EAVR/K,EAAK+N,OACLnJ,EAAUmJ,OAAS,CAAA,EAGnB9N,EAAiBhD,CAAM,IAClBgX,GAAahX,EAAOkD,eAAgBH,EAAKqT,OAAO,GAK7CtI,EAAU,gBAAkB/K,EAAKE,SAAS,GAAGkF,KAAO,KAAOpF,EAAKqT,QAAU,gCAC9E6B,GAAkBjY,EAAQ8N,EAAS,MAAO,IAAI,GAL/BuJ,GAAWrX,EAAQ+C,EAAKE,SAAS,GAAGhF,EAAE,EAC5CkK,KAAOpF,EAAKqT,SAOhC,EAgJO,MAEJ,IAAK,OACL,IAAK,OAxIuBpW,EAyIGA,EAzIKhM,EAyIGA,EAzIG2T,EAyIGA,EAxI7CmR,EAAgB,CAChBhI,OAAQ,CAAA,EACR7N,SAAUjF,WAAS,OAAQhK,CAAI,EAC/BwjB,OAAqC,SAA7BxZ,WAAS,SAAUhK,CAAI,EAC/BsK,KAAMN,WAAS,OAAQhK,CAAI,EAC3ByiB,WAAYzY,WAAS,aAAchK,CAAI,EACvCoN,WAAYpD,WAAS,aAAchK,CAAI,GAE3CgM,EAAOoH,QAAQ,aAAc0R,EAAe,SAAU/V,GAClD,GAAIA,EAAK+N,OACLnJ,EAAUmJ,OAAS,CAAA,OAGvB,GAAI9N,EAAiBhD,CAAM,EAAG,CAC1B,IAQY+Y,EARRjL,EAAU,sBACVhN,EAAS9C,WAAS,SAAUhK,CAAI,EAChCglB,EAAiB7D,GAAiBnV,EAAQ+C,EAAKE,SAAUnC,EAAQ,CAAA,CAAK,EACtEmY,EAAiB9D,GAAiBnV,EAAQ,CAAC+C,EAAK0T,YAAa3V,EAAQ,CAAA,CAAI,EACzEoY,EAAS,GAEb,GADAlZ,EAAOiP,WAAa,GACG,KAAnB+J,GAA4C,KAAnBC,EAAuB,CAChD,GAAIlW,EAAKyU,OACDuB,EAAmBzB,GAAetX,EAAQ+C,EAAK0T,WAAWxY,EAAE,EAC5C8E,EAAKE,SACXwV,QAAQ,SAAUxV,GAC5B,IAGYiL,EAHR,CAAC8I,GAAa+B,EAAkB9V,EAASkF,IAAI,GAA4C,EAAvCnK,WAAS,cAAehK,CAAI,EAAE1B,OACrC,EAAvC0L,WAAS,cAAehK,CAAI,EAAE1B,QAC1B4M,EAAQ+D,EAASkF,KAAK5B,MAAM,GAAG,EAC/B2H,EAASjL,EAASkF,KAAKqF,SAAS,GAAG,EAAItO,EAAM,GAAK,IAAMc,EAAOmZ,kBAAoB,KAAOja,EAAM,GAAKA,EAAM,GAAK,IAAMc,EAAOmZ,kBAAoB,IACrJC,GAAgBpZ,EAAQiD,EAAUF,EAAK0T,WAAYvI,CAAM,EACzDlO,EAAOwV,aAAanL,MAAQ,KAC5BrK,EAAOmZ,iBAAiB,IAG5BC,GAAgBpZ,EAAQiD,EAAUF,EAAK0T,WAAY,IAAI,EAGvDyC,EAAOja,KAAKgE,EAASkF,IAAI,EAEhC,OAQL,IAFA,IAAIlW,EAAS8Q,EAAK0T,WACd4C,EAAiB/B,GAAetX,EAAQ/N,EAAOgM,EAAE,EAC5CtL,EAAI,EAAGA,EAAIoQ,EAAKE,SAAS3Q,OAAQK,CAAC,GAAI,CAC3C,IAYQ2mB,EASIC,EArBRC,EAAWzW,EAAKE,SAAStQ,GACzB,CAACqkB,GAAaqC,EAAgBG,EAASrR,IAAI,GAA4C,EAAvCnK,WAAS,cAAehK,CAAI,EAAE1B,QACzEL,EAAO8lB,WACR9lB,EAAO8lB,SAAW,CAACyB,EAASjG,QAE3BiG,EAASjG,SAENkG,EAAiC,IAAtBD,EAAS9V,SAClB4T,GAAetX,EAAQwZ,EAASE,QAAQ,EAAI,GACnCrC,GAAWrX,EAAQwZ,EAAS9V,QAAQ,EAC1CqU,SAA6B,EAAlB0B,EAASnnB,QAE7BgnB,EAAWjC,GAAWrX,EAAQwZ,EAASvb,EAAE,EACF,EAAvCD,WAAS,cAAehK,CAAI,EAAE1B,SAC1B4M,EAAQsa,EAASrR,KAAK5B,MAAM,GAAG,EACnCiT,EAASrR,KAAOqR,EAASrR,KAAKqF,SAAS,GAAG,EAAItO,EAAM,GAAK,IAAMc,EAAOmZ,kBAAoB,KAAOja,EAAM,GAAKA,EAAM,GAAK,IAAMc,EAAOmZ,kBAAoB,IACxJG,EAASnR,KAAOqR,EAASrR,KACzBnI,EAAOwV,aAAanL,MAAQ,KAC5BrK,EAAOmZ,iBAAiB,GACxBnZ,EAAOwO,SAAWvc,EAClB+N,EAAO7C,SAAW4F,EAAKzE,KACnBib,EAAYxW,EAAK3B,WAAWyG,QAAQ,WAAY,EAAE,EAAEtB,MAAM,GAAG,EACjEtU,EAASolB,GAAWrX,EAAQuZ,EAAUA,EAAUjnB,OAAS,EAAE,GAE/DgnB,EAAS5V,SAAWzR,EAAOgM,GAC3Bqb,EAAS9F,WAA2B,IAAdvhB,EAAOgM,GAAW,KAAOhM,EAAOuhB,WAAavhB,EAAOkW,KAAO,MAGjF+Q,EAAOja,KAAKua,EAASrR,IAAI,EAGb,EAAhB+Q,EAAO5mB,QACP2lB,GAAkBjY,EAAQ8N,EAAS,MAAOoL,CAAM,IAI/D,EAqDO,MAEJ,IAAK,SA5CmBlZ,EA6CGA,EA7CKhM,EA6CGA,EA7CG2T,EA6CGA,EA5CzCgS,EAAkB,CAClBC,cAAe5b,WAAS,OAAQhK,CAAI,EACpC8c,OAAQ,CAAA,EACRxS,KAAMN,WAAS,OAAQhK,CAAI,EAC3B6lB,WAAY7b,WAAS,eAAgBhK,CAAI,EACzC4O,cAAe5E,WAAS,gBAAiBhK,CAAI,EAC7CoQ,gBAAiBpG,WAAS,kBAAmBhK,CAAI,GAErDgM,EAAOoH,QAAQ,SAAUuS,EAAiB,SAAU5W,GAChDgI,WAAS,OAAQhI,EAAK6W,cAAe5lB,CAAI,EACrC+O,EAAK+N,SACLnJ,EAAUmJ,OAAS,CAAA,GAE1B,EAdL,IAAgC9Q,EAAQhM,EAAM2T,EACtCgS,EAjG4B3Z,EAAQhM,EAAM2T,EAjClB3H,EAAQhM,EAAM2T,EAvCd3H,EAAc2H,EAlCf3H,EAAQhM,EAAM2T,CA2P7C,CAaA,SAAS8N,GAAWzV,EAAQhM,EAAM8lB,EAAIjI,EAAOhD,EAAWzN,GACpD,IAAIoG,EAAe,CACfC,IAAKzH,EAAOwH,aAAaC,IACzB7T,KAAM,OACNmmB,KAAM,CAAA,EACNC,SAAU,OACVC,YAAa,mBACbjmB,KAAMkmB,KAAKC,UAAUnmB,CAAI,EACzBomB,UAAW,KACXC,UAAW,KACXC,WAAY,MAEZ3S,EAAY,CAAE7G,OAAQ9C,WAAS,SAAUhK,CAAI,EAAGwT,aAAcA,EAAcsJ,OAAQ,CAAA,GACxFoH,GAAoBlY,EAAQhM,EAAM2T,CAAS,EAC3C3H,EAAOoH,QAAQ,aAAcO,EAAW,SAAU4S,GAC9C,IA0CgB9F,EACA+F,EACAC,EACAC,EACApc,EA9CXic,EAAezJ,SAChB9Q,EAAOW,OAAOga,GAAsB,EAAE,EAClC3X,EAAiBhD,CAAM,GAEnBuZ,GADqB,gBAAV1H,GAAqC,iBAAVA,EAA2B7T,WAAS,OAAQhK,CAAI,EAAIgM,EAAO1B,MAC5EuJ,QAAQ,WAAY,EAAE,EAAEtB,MAAM,GAAG,EACtDqU,EAAoB,sBAAV/I,GAA4C,iBAAVA,GAA8D,IAAlC7T,WAAS,OAAQhK,CAAI,EAAE1B,QACjF,cAAVuf,IAAkD,mBAAxB7R,EAAOwF,cAA6D,gBAAxBxF,EAAOwF,cAC/ExH,WAAS,OAAQhK,CAAI,EAAE,GAAGiK,GAAKsb,EAAUA,EAAUjnB,OAAS,GAE9DuoB,GAA8B,UAD9B/Z,EAAS9C,WAAS,SAAUhK,CAAI,IACmB,WAAX8M,GAAkC,SAAXA,GAAgC,WAAXA,GAAkC,WAAXA,IAAkC,eAAV+Q,EACxH,SAAX/Q,GAAgC,WAAXA,GAAiC,eAAV+Q,GACxCjH,EAEU,EAFD5K,EAAOkD,eACfM,OAAO,SAAUsD,GAAQ,OAAO1I,oBAAM0I,EAAKpD,QAAQ,EAAI,EACvDpR,OACC0N,EAAOkD,eACJM,OAAO,SAAUsD,GAAQ,OAAO1I,oBAAM0I,EAAKpD,QAAQ,EAAI,EAAE,GAAGzF,GAC/D,EACN+B,EAAOwV,aAAe,CAClB7G,IAAK0I,GAAWrX,EAAwB,MAAhBA,EAAO1B,MAA0B,gBAAVuT,GAAqC,sBAAVA,EAAgCjH,EAASgQ,CAAO,EAC1HnG,QAAS,KACTpK,MAAO,KACP7F,MAAO8S,GAAetX,EAAwB,MAAhBA,EAAO1B,MAA0B,gBAAVuT,GAAqC,sBAAVA,EAAgCjH,EAASgQ,CAAO,GAEhIxc,oBAAM4B,EAAOwV,aAAa7G,GAAG,GAE7BsJ,GAAkBjY,EADJ,kDACqB,MAAO,IAAI,GAG7C6a,GAAiD,OAA9B7a,EAAOwV,aAAanL,OAEpB,KAApBpH,EADsB,WAAXnC,GAAkC,WAAXA,EAAsB9C,WAAS,OAAQhK,CAAI,EAAI,IACxE1B,SACT2Q,EAAWjF,WAAS,OAAQhK,CAAI,EAAE8mB,IAAI,SAAUhU,GAAQ,OAAOuQ,GAAWrX,EAAQ8G,EAAK7I,EAAE,EAAI,GAEjG+B,EAAOwV,aAAe,CAClB7G,IAAK,KACL8F,QAAS,KACTpK,MAAO,KACP7F,MAAOvB,IAGuB,YAA7BjF,WAAS,SAAUhK,CAAI,IAExBygB,GAAUxR,EADCjF,WAAS,OAAQhK,CAAI,GACb,GACnBwmB,EAAoC,EAAlBvX,EAAS3Q,OAC3BmoB,EAAYxX,EAAS6X,IAAI,SAAUhU,GAAQ,OAAOA,EAAKqB,KAAO,EAC9DuS,EAA8BK,GAAlBP,EAA0BvX,EAAS+X,OAAO,SAAUC,EAAaC,GAAiB,OAAOD,GAAeC,EAAcjnB,MAAQ,IAAO,CAAC,EAAawgB,EAAQxgB,IAApB,EACnJqK,EAAQ0B,EAAOrB,UAAU6O,SAASiH,EAAQtM,IAAI,EAAInI,EAAOrB,UAAU6H,KAAK,GAAG,EAAIxG,EAAOrB,UAAU6H,KAAK,GAAG,EAAI,IAAMiO,EAAQtM,KAC9HnI,EAAOwV,aAAaf,QAAUvjB,OAAO0mB,OAAO,CACxCuD,SAAUX,EAAkB,KAAOlc,EACnC8c,cAAeZ,EACfrS,KAAMsS,EAAUjU,KAAK,IAAI,EACzBvS,KAAMymB,GACPF,EAAkB,GAAK,CACtBa,QAAS5G,EAAQoD,YACjBtE,OAAQkB,EAAQlB,OAChB+H,SAAU7G,EAAQqD,aAClBzD,WAAYI,EAAQJ,WACvB,GAELkH,GAAqBvb,EAAQA,EAAOwV,aAAcsE,EAAI9lB,EAAM6d,EAAOhD,EAAWzN,EAAYmZ,CAAc,GAGjG,IAAIiB,OAAK,CAChB/T,IAAKzJ,WAAS,MAAOuc,EAAe/S,YAAY,EAChD5T,KAAMoK,WAAS,OAAQuc,EAAe/S,YAAY,EAClDuS,KAAM/b,WAAS,OAAQuc,EAAe/S,YAAY,EAClDwS,SAAUhc,WAAS,WAAYuc,EAAe/S,YAAY,EAC1DyS,YAAajc,WAAS,cAAeuc,EAAe/S,YAAY,EAChExT,KAAMgK,WAAS,OAAQuc,EAAe/S,YAAY,EAClD8S,WAAYtc,WAAS,aAAcuc,EAAe/S,YAAY,EAC9D4S,UAAW,SAAUvR,GACjB,IACQ4S,EADJrd,oBAAMyK,CAAM,GACR4S,EAAW,CACXpR,MAAO,CACH0D,WAAY,KACZD,QAASvD,EAAcvK,EAAQ,cAAc,EAAI,IAAMA,EAAOwH,aAAaC,IAC3EoG,KAAM,OAEVrJ,MAAO,MAEXkX,GAAmB1b,EAAQua,EAAgBT,EAAI2B,EAAU5J,EAAOhD,EAAWzN,CAAU,IAGjE,UAApB,WACAyH,EAASqR,KAAKyB,MAAM9S,CAAM,GAE9B0S,GAAqBvb,EAAQ6I,EAAQiR,EAAI9lB,EAAM6d,EAAOhD,EAAWzN,EAAYmZ,CAAc,IAE/FF,UAAW,WACP,IAAIxR,EAAS,CACTrE,MAAO,KACP6F,MAAO,CACHwD,KAAM,MACNC,QAASvD,EAAcvK,EAAQ,eAAe,EAAI,IAAMA,EAAOwH,aAAaC,IAC5EsG,WAAY,OAGpB2N,GAAmB1b,EAAQua,EAAgBT,EAAIjR,EAAQgJ,EAAOhD,EAAWzN,CAAU,GAE1F,EACIwa,QAEZ,CACL,CAQA,SAASb,GAAQ9mB,GAGT4nB,EADA5nB,EAAO,KACFA,EAAO,KAEPA,EAAO,SACNA,EAAO,MAAM6nB,QAAQ,CAAC,EAAI,MAE3B7nB,EAAO,YACNA,EAAO,KAAO,MAAM6nB,QAAQ,CAAC,EAAI,OAGjC7nB,EAAO,KAAO,KAAO,MAAM6nB,QAAQ,CAAC,EAAI,MAElD,OAAOD,CACX,CAeA,SAASN,GAAqBvb,EAAQ6I,EAAQiR,EAAI9lB,EAAM6d,EAAOhD,EAAWzN,EAAYmZ,GAClFva,EAAOW,OAAOob,GAAqB,CAAEjb,OAAQ,UAAW,EACxD,IAAI7C,EAAK+B,EAAO2P,YAAiC3P,EAAOvB,OAAOuB,EAAOvB,OAAOnM,OAAS,GAgBlF0pB,GAfC5d,oBAAMyK,EAAO8F,GAAG,GAAmC,SAA7B3Q,WAAS,SAAUhK,CAAI,IAC9C6U,EAAO8F,IAAIxG,KAAiC,IAAzBnI,EAAOvB,OAAOnM,QAAiB0N,EAAOic,eAAoCpT,EAAO8F,IAAIxG,KACxG4C,WAAS,SAAU9M,EAAI4K,EAAO8F,GAAG,EACjC5D,WAAS9M,EAAI4K,EAAO8F,IAAK3O,EAAOI,QAAQ,EACnChC,oBAAMyK,EAAOrE,KAAK,GAA2B,QAAtBqE,EAAOwB,MAAMwD,QACtB,iBAAVgE,GAAsC,gBAAVA,GAAwD,IAA5B7R,EAAOrB,UAAUrM,SACtEqa,EAAO3O,WAASgC,EAAOvB,OAAO,GAAIuB,EAAOI,QAAQ,EACrDJ,EAAOrB,UAAU,GAAKX,WAAS,OAAQ2O,CAAI,EAC3C3M,EAAOxB,MAAQ,CAACJ,oBAAMJ,WAAS,KAAM2O,CAAI,CAAC,GAEhC,iBAAVkF,GACA9R,GAAaC,CAAM,GAIpB,IAAIkc,uBAAqBlc,EAAOsL,MAAM,GACjD,GAAI,CAAClN,oBAAMyK,EAAOrE,KAAK,EAAG,CACtBwG,GAAcnC,EAAOrE,MAAOwX,EAnkBpC,SAAuBhc,GACnB,IACIkL,EADAoB,EAAUtM,EAAOqM,oBAAoBC,QAEzC,GAAI,CAACA,EACD,OAAO,KAEX,IAAK,IAAI3Z,EAAI,EAAGA,EAAI2Z,EAAQha,OAAQK,CAAC,GACjC,GAAyB,iBAArB2Z,EAAQ3Z,GAAGW,MAA0B,CAChC8K,oBAAMkO,EAAQ3Z,GAAGkB,MAAM,IACxBqX,EAAaoB,EAAQ3Z,GAAGkB,OAAOsM,YAEnC,MAGR,OAAO+K,CACX,EAojBwDlL,CAAM,CAAC,EACvD,IAAK,IAAIrN,EAAI,EAAGmY,EAAMjC,EAAOrE,MAAMlS,OAAQK,EAAImY,EAAKnY,CAAC,GAAI,CACrD,IAAImU,EAAO+B,EAAOrE,MAAM7R,GACxBoY,WAAS,gBAAiB5E,GAASW,CAAI,EAAGA,CAAI,EAEjB,SAA7B9I,WAAS,SAAUhK,CAAI,IACvB2W,GAAU9B,EAAQ5K,CAAE,EACpB8M,WAAS9M,EAAI4K,EAAOrE,MAAOxE,EAAO8I,OAAO,GAG5C1K,oBAAMyK,EAAO4L,OAAO,GAAMrW,oBAAM4B,EAAOic,aAAa,IACjDE,EAAWnc,EAAOic,eAAiBje,WAAS,OAAQ6K,EAAO4L,OAAO,EAClE2H,EAAape,WAAS,WAAY6K,EAAO4L,OAAO,EAAE5M,QAAQ,IAAIwU,OAAO,IAAK,GAAG,EAAG,IAAI,EAIhFD,GAHwB,MAA3Bpe,WAAS,OAAQhK,CAAI,GAAegM,EAAOxB,OAAyD,IAAhDR,WAAS,OAAQhK,CAAI,EAAEsoB,MAAM,MAAM,EAAEhqB,SACnD,IAAnC0L,WAAS,QAAShK,CAAI,EAAE1B,QACxByY,WAAS,OAAQoR,EAAUtT,EAAO4L,OAAO,EAC5B0H,GAOJC,EAAWvU,QAAQuU,EAAWjQ,UAAU,EAAGiQ,EAAW9V,QAAQ,IAAI,CAAC,EAAG6V,CAAQ,EAE/FpR,WAAS,WAAYqR,EAAYvT,EAAO4L,OAAO,GAEnDqF,EAAG9Z,EAAQ6I,EAAQgJ,EAAOhD,EAAWzN,CAAU,EAC1ChD,oBAAMyK,EAAOrE,KAAK,GAAgB,iBAAVqN,GAAsC,iBAAVA,GAAsC,aAAVA,GAAkC,cAAVA,GACzG7R,EAAOW,OAAO4b,GAAyB1T,CAAM,EAEiB,YAA9D,OAAO7K,WAAS,YAAauc,EAAe/S,YAAY,GACxDxJ,WAAS,YAAauc,EAAe/S,YAAY,GAEzD,CAWA,SAAS4R,GAAgBpZ,EAAQhM,EAAM/B,EAAQ2jB,GAK3C,IAJA,IAAI0C,EAAYf,GAAcvjB,EAAM/B,EAAQ2jB,EAAU,CAAA,CAAI,EAGtD4G,GAFJxc,EAAOkD,eAAejE,KAAKqZ,CAAS,EACpCtY,EAAOiP,WAAWhQ,KAAKqZ,EAAUra,EAAE,EACjBqZ,GAAetX,EAAQhM,EAAKiK,EAAE,GACvCtL,EAAI,EAAGA,EAAI6pB,EAAYlqB,OAAQK,CAAC,GACrCymB,GAAgBpZ,EAAQwc,EAAY7pB,GAAI2lB,EAAW,IAAI,CAE/D,CAcA,SAASoD,GAAmB1b,EAAQua,EAAgBT,EAAIjR,EAAQgJ,EAAOhD,EAAWzN,GAC9EpB,EAAOW,OAAOob,GAAqB,CAAEjb,OAAQ,UAAW,EACxDgZ,EAAG9Z,EAAQ6I,EAAQgJ,EAAOhD,EAAWzN,CAAU,EACmB,YAA9D,OAAOpD,WAAS,YAAauc,EAAe/S,YAAY,GACxDxJ,WAAS,YAAauc,EAAe/S,YAAY,GAEzD,CAUA,SAASkO,GAAY1V,EAAQ6I,EAAQgJ,GACjC,IACSzT,oBAAMyK,EAAOrE,KAAK,GAOdpG,oBAAMyK,EAAOwB,KAAK,GAA2B,QAAtBxB,EAAOwB,MAAMwD,OACrChF,EAAOrE,MAAQ,GACfxE,EAAOW,OAAOkR,EAAOhJ,CAAM,EAC3B7I,EAAOW,OAAO8b,EAAyB,EAAE,GAE7CpC,GAAUra,EAAQ6I,EAAQ,MAAM,EAChC7I,EAAO3B,cAAc,CAAEC,KAAM0B,EAAOyO,SAAW,CAAA,CAAI,EACnDzO,EAAOrB,UAAU+d,QAbjB1c,EAAOW,OAAOkR,EAAOhJ,CAAM,EAC3B7I,EAAOW,OAAO8b,EAAyB,EAAE,EACrC1Z,EAAO,CAAEjC,OAAQ,OAAQ+H,OAAQA,GACrC7I,EAAOoH,QAAQ,UAAWrE,CAAI,GAatC,MAAOsH,GACHsS,GAAiB3c,EAAQqK,EAAO,MAAM,EACtCrK,EAAO3B,cAAc,CAAEC,KAAM0B,EAAOyO,SAAW,CAAA,CAAI,EACnDzO,EAAOrB,UAAU+d,MAErB,IAEY3Z,EAFR/C,EAAOsN,YAActN,EAAOsP,YACS,IAAjCtP,EAAOmP,eAAe7c,SAClByQ,EAAO,CAAEuE,YAAatH,EAAOmP,gBACjCnP,EAAOoH,QAAQ,cAAerE,CAAI,GAEtC/C,EAAOsP,UAAYtP,EAAOsN,WAAa,CAAA,EAE/C,CAWA,SAAS2I,GAAcjW,EAAQ6I,EAAQgJ,EAAO/Q,GAC1C,IACI,IAEQiC,EAFH3E,oBAAMyK,EAAOrE,KAAK,EAMnB6V,GAAUra,EAAQ6I,EAAQ/H,CAAM,GALhCd,EAAOW,OAAOkR,EAAOhJ,CAAM,EACvB9F,EAAO,CAAEjC,OAAQA,EAAQ+H,OAAQA,GACrC7I,EAAOoH,QAAQ,UAAWrE,CAAI,GAMtC,MAAOsH,GACHsS,GAAiB3c,EAAQqK,EAAOvJ,CAAM,EAE9C,CAWA,SAAS+U,GAAc7V,EAAQ6I,EAAQ+M,GACnC,IACI,IAoBgBpF,EACAnG,EAfR8N,EAMApV,EAZH3E,oBAAMyK,EAAOrE,KAAK,EAkBO,QAAtBqE,EAAOwB,MAAMwD,MACT7N,EAAOiV,WAAajV,EAAOiV,UAAU2H,SACjCpM,EAAM/Q,SAAO,WAAYO,EAAOiV,UAAUpW,OAAO,EACjDwL,EAAQE,EAAcvK,EAAQ,6BAA6B,EAAE6H,QAAQ,MAAO,IAAM2I,EAAI5O,MAAQ,GAAG,EACrG4O,EAAIuC,cAAc8J,mBAAmBvS,UAAYD,GAWjDuD,EAAa5N,EAAQ,QARN,CACXwE,MAAO,KACP6F,MAAO,CACHwD,KAAM,MACNC,QAASvD,EAAcvK,EAAQ,6BAA6B,EAAE6H,QAAQ,MAAO,IAAM+N,EAAW,GAAG,EACjG7H,WAAY,MAGkB,EAEtChL,EAAO,CAAEjC,OAAQ,SAAUuJ,MAAOxB,EAAOwB,OAC7CrK,EAAOoH,QAAQ,UAAWrE,CAAI,IAG1B/C,EAAOiV,WAAajV,EAAOiV,UAAU2H,SACrC5c,EAAOiV,UAAUC,OAErBmF,GAAUra,EAAQ6I,EAAQ,QAAQ,IAzClC7I,EAAOiV,WAAajV,EAAOiV,UAAU2H,SACrC5c,EAAOiV,UAAUC,OAErBlV,EAAO8c,YAAc9Z,EAAiBhD,CAAM,EAAI6I,EAAOrE,MAAMqE,EAAOrE,MAAMlS,OAAS,GAAKuW,EAAOrE,MAAM,GACrGxE,EAAO0B,oBAAoBC,UAAUC,MAAQ,GACzCuW,EAAkB,CAClBC,WAAYxC,EACZtX,KAAM0B,EAAO1B,KACb+Z,aAAcrY,EAAOiD,UAEzBjD,EAAOoH,QAAQ,eAAgB+Q,CAAe,EAC1CpV,EAAO,CAAEjC,OAAQ,SAAU+H,OAAQA,GACvC7I,EAAOoH,QAAQ,UAAWrE,CAAI,EAC9B/C,EAAOiD,SAAW,CAACoB,EAAcrE,CAAM,GACvCmD,EAAKnD,EAAQ+c,GAAkB/c,EAAO1B,IAAI,GA+BlD,MAAO+L,GACCrK,EAAOiV,WAAajV,EAAOiV,UAAU2H,SACrC5c,EAAOiV,UAAUC,OAErByH,GAAiB3c,EAAQqK,EAAO,QAAQ,EAEhD,CAUA,SAASiM,GAActW,EAAQ6I,GAC3B,IACI,IAyCY2H,EAEJnG,EAvCAtH,EAGA8V,EAPHza,oBAAMyK,EAAOrE,KAAK,EAwCO,QAAtBqE,EAAOwB,MAAMwD,MAAkB7N,EAAOiV,WAAajV,EAAOiV,UAAU2H,SAChEpM,EAAM/Q,SAAO,UAAWO,EAAOiV,UAAUpW,OAAO,EAEpDwL,GAAQA,EADIE,EAAcvK,EAAQ,0BAA0B,EAAE6H,QAAQ,MAAO,IAAM7H,EAAOsT,gBAAkB,GAAG,GACjGzL,QAAQ,MAAO,IAAM2I,EAAI5O,MAAQ,GAAG,EAClD4O,EAAIuC,cAAc8J,mBAAmBvS,UAAYD,EAC7CtH,EAAO,CAAEjC,OAAQ,SAAUuJ,MAAOxB,EAAOwB,OAC7CrK,EAAOoH,QAAQ,UAAWrE,CAAI,IAGzB3E,oBAAM4B,EAAOiV,SAAS,GACvBjV,EAAOiV,UAAUC,OAErBmF,GAAUra,EAAQ6I,EAAQ,QAAQ,IAnDjCzK,oBAAM4B,EAAOiV,SAAS,GACvBjV,EAAOiV,UAAUC,OAEjBnS,EAAO,CAAEjC,OAAQ,SAAU+H,OAAQA,GACvC7I,EAAOoH,QAAQ,UAAWrE,CAAI,EAC9B/C,EAAOgd,YAAc3rB,MAAM4rB,QAAQpU,EAAOrE,KAAK,EAAIqE,EAAOrE,MAAM,GAAKqE,EAAOrE,MACxEqU,EAAkB,CAClBzC,QAASpW,EAAOgd,YAAY7U,KAC5BlF,SAAU,CAACjD,EAAOgd,aAClB1e,KAAM0B,EAAO1B,MAEjB0B,EAAOoH,QAAQ,SAAUyR,CAAe,EACZ,mBAAxB7Y,EAAOmB,cACPnB,EAAOvB,OAAOie,MACd1c,EAAOiD,SAAW,CAACjF,WAASgC,EAAOvB,OAAOuB,EAAOvB,OAAOnM,OAAS,GAAI0N,EAAOI,QAAQ,GACpF+C,EAAKnD,EAAQkd,GAAwBlf,WAAS,aAAcgC,EAAOgd,WAAW,EAAEnV,QAAQ,MAAO,GAAG,CAAC,EACnG7H,EAAOiD,SAAS,GAAKjD,EAAOgd,YACxBhf,WAAS,aAAcgC,EAAOgd,WAAW,IAAMhf,WAAS,aAAcgC,EAAOiD,SAAS,EAAE,GAA+B,EAA1BjD,EAAOrB,UAAUrM,SAC9G0N,EAAOrB,UAAUqB,EAAOrB,UAAUrM,OAAS,GAAK0N,EAAOmd,YAE3Dha,EAAKnD,EAAQod,EAAoC,MAAhBpd,EAAO1B,KAAe0B,EAAO1B,KAAON,WAAS,aAAcgC,EAAOgd,WAAW,EAAEnV,QAAQ,MAAO,GAAG,EAAI7H,EAAOgd,YAAY7U,KAAO,GAAG,EACnKnI,EAAOgd,YAAc,OAGrBhd,EAAOiD,SAAW,CAACoB,EAAcrE,CAAM,GACY,KAA/CA,EAAO0B,oBAAoBC,UAAUC,MACrCsC,GAAOlE,EAAQqd,EAAkBrd,EAAO1B,KAAM0B,EAAO6C,WAAY7C,EAAOoE,gBAAiB,CAACpE,EAAOqD,eAAeU,UAAU,EAGtH/D,EAAO6B,WACP2B,GAAOxD,EAAQqd,CAAgB,EAG/Bla,EAAKnD,EAAQqd,EAAkBrd,EAAO1B,IAAI,IAsB9D,MAAO+L,GACEjM,oBAAM4B,EAAOiV,SAAS,GACvBjV,EAAOiV,UAAUC,OAErByH,GAAiB3c,EAAQqK,EAAO,QAAQ,EAEhD,CAYA,SAASuM,GAAa5W,EAAQ6I,EAAQvK,EAAMuQ,GACxC,IACI,IAAIyO,EAAsB,CACtBra,SAAU4F,EAAOrE,MACjBgT,OAAsB,SAAd3I,EACRvQ,KAAMA,EACNmY,WAAYzW,EAAOiD,SAAS,GAC5B7B,WAAYpB,EAAO1B,MAEvB0B,EAAOoH,QAAQ,OAAQkW,CAAmB,EACtCzU,EAAOwB,OAASxB,EAAOwB,MAAM0D,YAC7B/N,EAAOud,WAAa,EACfnf,oBAAMyK,EAAOrE,KAAK,IACnBxE,EAAOqP,aAAe,CAAA,EACtBT,GAAc5O,EAAQ6O,EAAWhG,CAAM,GAE3C2U,GAAgBxd,EAAQ,iBAAkB6I,EAAOwB,MAAM0D,UAAU,EACvC,QAAtBlF,EAAOwB,MAAMwD,MACbD,EAAa5N,EAAQ,QAAS6I,CAAM,GAGlCA,EAAOwB,OAAUjM,oBAAMyK,EAAOrE,KAAK,EAIpCqE,EAAOwB,OAAS,CAACjM,oBAAMyK,EAAOrE,KAAK,GACxCxE,EAAOqP,aAAe,CAAA,EACtBT,GAAc5O,EAAQ6O,EAAWhG,CAAM,EACvC+E,EAAa5N,EAAQ,QAAS6I,CAAM,GAGpCwR,GAAUra,EAAQ6I,EAAQgG,CAAS,GATnC7O,EAAOqP,aAAe,CAAA,EACtBT,GAAc5O,EAAQ6O,EAAWhG,CAAM,GAW/C,MAAOwB,GACHsS,GAAiB3c,EAAQqK,EAAOwE,CAAS,EAEjD,CAUA,SAASgI,GAAc7W,EAAQ6I,EAAQvK,GACnC,IACI,IAaYyE,EAbRyV,EAAkB,CAClBvV,SAAU4F,EAAOrE,MACjBlG,KAAMA,GAEV0B,EAAOoH,QAAQ,SAAUoR,CAAe,EACnCpa,oBAAMyK,EAAOrE,KAAK,IACnBxE,EAAO3B,cAAc,CAAEC,KAAMA,GAAQ,CAAA,CAAI,EACzC0B,EAAOiD,SAAW,CAACoB,EAAcrE,CAAM,GACvCmD,EAAKnD,EAAQyd,GAAkBzd,EAAO1B,IAAI,EACtCuK,EAAOwB,OACPgQ,GAAUra,EAAQ6I,EAAQ,QAAQ,GAG9B9F,EAAO,CAAEjC,OAAQ,SAAU+H,OAAQA,GACvC7I,EAAOoH,QAAQ,UAAWrE,CAAI,GAO1C,MAAOsH,GACHsS,GAAiB3c,EAAQqK,EAAO,QAAQ,EAEhD,CAWA,SAAS0M,GAET/W,EAAQ6I,EAAQvK,EAAMuQ,GAClB,IACI,IAEQ9L,EAFH3E,oBAAMyK,EAAO4L,OAAO,EAMrB4F,GAAUra,EAAQ6I,EAAQ,SAAS,GALnC+E,EAAa5N,EAAQ6O,EAAW,KAAMhG,EAAO4L,OAAO,EAChD1R,EAAO,CAAEjC,OAAQ,UAAW+H,OAAQA,GACxC7I,EAAOoH,QAAQ,UAAWrE,CAAI,GAMtC,MAAOsH,GACHsS,GAAiB3c,EAAQqK,EAAO,SAAS,EAEjD,CAUA,SAASgQ,GAAUra,EAAQ6I,EAAQ/H,GAC/B8M,EAAa5N,EAAQ,QAAS6I,CAAM,EAChC9F,EAAO,CAAEjC,OAAQA,EAAQuJ,MAAOxB,EAAOwB,OAC3CrK,EAAOoH,QAAQ,UAAWrE,CAAI,CAClC,CAaO,SAASmB,GAAOlE,EAAQ6R,EAAOvT,EAAMof,EAActZ,EAAiBxB,GAKvE6S,GAAWzV,EAJA,CACPc,OAAQ,SAAUxC,KAAMA,EAAMof,aAAcA,EAActZ,gBAAiBA,EAAiBxB,cAAeA,EAC3G5O,KAAMgM,EAAOiD,UAEQ0a,GAAe9L,CAAK,CACjD,CAWA,SAAS8L,GAAc3d,EAAQ6I,EAAQgJ,GACnC,IACI,IAEQ9O,EAFH3E,oBAAMyK,EAAOrE,KAAK,EAMnB6V,GAAUra,EAAQ6I,EAAQ,QAAQ,GALlC7I,EAAOW,OAAOkR,EAAOhJ,CAAM,EACvB9F,EAAO,CAAEjC,OAAQ,SAAU+H,OAAQA,GACvC7I,EAAOoH,QAAQ,UAAWrE,CAAI,GAMtC,MAAOsH,GACHsS,GAAiB3c,EAAQqK,EAAO,QAAQ,EAEhD,CAWO,SAAS0J,GAAS/T,EAAQ1B,EAAM+J,GACnC,IAAIuV,EAAc5d,EAAOwH,aAAaoW,aAAgD5d,EAAOwH,aAAaC,IACtGzT,EAAO,CAAE8M,OAAU,WAAYxC,KAAQA,EAAMY,MAASmJ,EAAOrU,KAAQgM,EAAOiD,UAC5EuE,EAAe,CACfC,IAAKmW,EACLhqB,KAAM,OACNqmB,YAAa,mBACb4D,aAAc,OACd7pB,KAAMkmB,KAAKC,UAAUnmB,CAAI,EACzBomB,UAAW,KACXC,UAAW,KACXC,WAAY,MAGhBta,EAAOoH,QAAQ,iBADC,CAAEpT,KAAMA,EAAM8c,OAAQ,CAAA,EAAOgN,YAAa,CAAA,EAAMtW,aAAcA,GAClC,SAAUuW,GAClD,GAAI,CAACA,EAAajN,OACd,GAAIiN,EAAaD,YAAa,CAC1B,IAAIE,EAAOnU,gBAAc,OAAQ,CAC7B5L,GAAI+B,EAAOnB,QAAQZ,GAAK,gBACxBggB,MAAO,CAAEnd,OAAQ8c,EAAaM,OAAQ,OAAQ/V,KAAM,eAAgBgW,SAAY,IACnF,EACGC,EAAQvU,gBAAc,QAAS,CAC/B5L,GAAI+B,EAAOnB,QAAQZ,GAAK,cACxBggB,MAAO,CAAE9V,KAAM,gBAAiBvG,MAAOsY,KAAKC,UAAU4D,EAAa/pB,IAAI,EAAGJ,KAAM,UACnF,EACDoqB,EAAK5T,YAAYgU,CAAK,EACtBpe,EAAOnB,QAAQuL,YAAY4T,CAAI,EAC/BjO,SAASsO,MAAMC,UAAU,cAAc,EAAEC,SACzCve,EAAOnB,QAAQ2f,YAAYR,CAAI,OAG/B,IACI,IAAIS,EACAC,EACU,IAAIC,QAAM,CACpBlX,IAAKzJ,WAAS,MAAO+f,EAAavW,YAAY,EAC9C5T,KAAMoK,WAAS,OAAQ+f,EAAavW,YAAY,EAChDyS,YAAajc,WAAS,cAAe+f,EAAavW,YAAY,EAC9DqW,aAAc7f,WAAS,eAAgB+f,EAAavW,YAAY,EAChE8S,WAAYtc,WAAS,aAAc+f,EAAavW,YAAY,EAC5DoX,OAAQ,SAAUC,GACdJ,EAAuBI,EAAEC,QAAQC,IAAI,qBAAqB,EAItDL,EAHAD,GAEIO,GADAC,EAAgBR,EAAqBnC,MAAM,wCAAwC,IAC9C2C,EAAc,IACtBD,EAAkBnX,QAAQ,QAAS,EAAE,EAAI6W,EAGpC,EAAzB1e,EAAOiD,SAAS3Q,OAAa,YAAc0L,WAAS,SAAUgC,EAAOiD,SAAS,EAAE,EAAIjF,WAAS,OAAQgC,EAAOiD,SAAS,EAAE,EAAIjF,WAAS,OAAQgC,EAAOiD,SAAS,EAAE,EAAI,QAGvLmX,UAAW,SAAUyE,GACjB7e,EAAOoH,QAAQ,UAAW2W,CAAY,EACtC,IACImB,EAAUC,IAAIC,gBADPP,CAC2B,EAClCQ,EAAOtP,SAASlG,cAAc,GAAG,EACrCwV,EAAKC,KAAOJ,EACZG,EAAKlB,SAAWO,EAChB3O,SAASwP,KAAKnV,YAAYiV,CAAI,EAC9BA,EAAKvK,QACL/E,SAASwP,KAAKf,YAAYa,CAAI,GAElChF,UAAW,SAAUwE,GACbhW,EAAS,CACTwB,MAAO,CACHwD,KAAMgR,EAAEW,OAAOrf,WACf2N,QAASvD,EAAcvK,EAAQ,eAAe,EAAI,IAAMA,EAAOwH,aAAaoW,cAGpFhQ,EAAa5N,EAAQ,QAAS6I,CAAM,EACpC7I,EAAOoH,QAAQ,UAAW2W,CAAY,GAE7C,EACOnC,KAAK1B,KAAKC,UAAU4D,EAAa/pB,IAAI,CAAC,EAElD,MAAOqW,GACHsS,GAAiB3c,EAAQqK,EAAO,UAAU,GAIzD,CACL,CAUA,SAASsS,GAAiB3c,EAAQqK,EAAOvJ,GAQrCuZ,GAAUra,EAPQ,CACdwE,MAAO,KACP6F,MAAO,CACHyD,QAASzD,EAAMyD,QACfC,WAAY,OAGWjN,CAAM,CACzC,CC9uCO,SAAS8M,EAAa5N,EAAQjC,EAAM8gB,EAAGpK,GAC1C,IAAIgL,EA4gBR,SAAoBzf,EAAQjC,EAAM8gB,EAAGpK,GACjC,IAOItO,EACAgV,EAIAzC,EAZA+G,EAAU,CACVC,OAAQ,GAAIC,QAAS,GAAIC,QAAS,GAAIC,WAAY,GAQtDC,KAAe,WAAcC,GAAiB/f,EAAQA,EAAOiV,UAAWwK,EAAQI,UAAU,GAC1FG,MAAgB,WAAcC,GAAkBjgB,EAAQA,EAAOiV,UAAWwK,EAAQI,UAAU,IAG5F,OAFA9hB,EAAQ0W,GAAqC,CAAA,IAA1BA,EAAQ2G,cAA0B,sBAAwBrd,GAGzE,IAAK,YACD0hB,EAAQI,WAAa,gBACrBJ,EAAQC,OAASnV,EAAcvK,EAAQ,kBAAkB,EACzDyf,EAAQE,QAAU,oFAClBF,EAAQG,QAAU,CACd,CACIM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAASpV,EAAcvK,EAAQ,eAAe,GAC9E8U,MAAO,SAAU+J,GACE,YAAXA,EAAEjrB,MAGNwsB,GAASpgB,CAAM,KAI3Byf,EAAQK,KAzHpB,SAA4B9f,GACxB,IAAIwQ,EAAM/Q,SAAO,WAAYO,EAAOiV,UAAUpW,OAAO,EAChD2R,EAAIuC,cAAcnT,UAAUC,SAAS,mBAAmB,GACzDwgB,GAAY7P,EAAKjG,EAAcvK,EAAQ,mBAAmB,CAAC,EAE/DwQ,EAAIuC,cAAc8J,mBAAmBvS,UAAY,GACjDkG,EAAI8P,QAAU,WACVC,GAAWvgB,EAAQwQ,CAAG,GAE1BA,EAAIgQ,QAAU,SAAU3B,GAEP,KADF4B,GAAW5B,CAAC,GAEnBuB,GAASpgB,CAAM,GAzB3B,SAAoBA,GAChB,IAAIwQ,EAAM/Q,SAAO,WAAYO,EAAOiV,UAAUpW,OAAO,EAGjDiM,GAFJ0F,EAAIkQ,QACJlQ,EAAI5O,MAAQ,GACF4O,EAAI5O,MAAMtP,QACpBke,EAAImQ,kBAAkB,EAAG7V,CAAG,CAChC,EAsBe9K,CAAM,EACjB+f,GAAiB/f,EAAQA,EAAOiV,UAAW,eAAe,CAC9D,EAwG8C2L,KAAKjvB,KAAMqO,CAAM,EACnD,MACJ,IAAK,SACDyf,EAAQI,WAAa,SACa,EAA9B7f,EAAO+B,cAAczP,QACrBmtB,EAAQE,SAAW,QAAUpV,EAAcvK,EAAQ,yBAAyB,EAAI,UAC3E6H,QAAQ,MAAO7H,EAAO+B,cAAczP,OAAO6N,UAAU,EAC1Dsf,EAAQC,OAASnV,EAAcvK,EAAQ,wBAAwB,IAG/Dyf,EAAQE,QAAU,QAAUpV,EAAcvK,EAAQA,EAAOuT,OAAS,iBAAmB,uBAAuB,EAAI,SAChHkM,EAAQC,OAASnV,EAAcvK,EAAQA,EAAOuT,OAAS,gBAAkB,sBAAsB,GAEnGkM,EAAQG,QAAU,CACd,CACIM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAASpV,EAAcvK,EAAQ,YAAY,GAC3E8U,MAAO,WAuP3B,IAAwB9U,GAAAA,EAtPeA,GAuP5BiV,UAAUC,OACjBlV,EAAOW,OAAOkgB,GAAmB,EAAE,IArPvB,CACIX,YAAa,CAAEP,QAASpV,EAAcvK,EAAQ,WAAW,GACzD8U,MAAO,WACH9U,EAAOiV,UAAUC,UAI7B,MACJ,IAAK,SACDuK,EAAQI,WAAa,SACrBJ,EAAQC,OAASnV,EAAcvK,EAAQ,eAAe,EACtDyf,EAAQE,QAAU,gFAClBF,EAAQG,QAAU,CACd,CACIM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAASpV,EAAcvK,EAAQ,aAAa,GAC5E8U,MAAO,SAAU+J,GACE,YAAXA,EAAEjrB,MAGNktB,GAAW9gB,CAAM,KAI7Byf,EAAQK,KA5IpB,SAA4B9f,GACxB,IAAI+gB,EAAWthB,SAAO,UAAWO,EAAOiV,UAAUpW,OAAO,EACpDkiB,EAAShO,cAAcnT,UAAUC,SAAS,mBAAmB,GAC9DwgB,GAAYU,EAAUxW,EAAcvK,EAAQ,gBAAgB,CAAC,EAEjE+gB,EAAShO,cAAc8J,mBAAmBvS,UAAY,GACtDyW,EAAST,QAAU,WACfC,GAAWvgB,EAAQ+gB,CAAQ,GAE/BA,EAASP,QAAU,SAAU3B,GAEZ,KADF4B,GAAW5B,CAAC,GAEnBiC,GAAW9gB,CAAM,GAa7B,SAA4BA,EAAQ+gB,GAChCA,EAASL,QACT,IAAIM,EAAM,GACV,CAAA,IACQtI,EACJsI,EAFAhhB,CAAAA,EAAOuT,QAAWvT,EAAOqW,oBACrBqC,EAAQ1Y,EAAOsT,gBAAgBlH,YAAY,GAAG,EACjC,CAAC,IAAXsM,GAGD1Y,EAAOsT,gBAHmCtT,EAAOsT,gBAAgBnH,UAAU,EAAGuM,CAAK,EAK7FqI,EAASnf,MAAQof,EACbhhB,EAAOuT,QAAUvT,EAAOqW,mBAAsD,CAAC,IAAjC0K,EAASnf,MAAM0E,QAAQ,GAAG,EACxEya,EAASJ,kBAAkB,EAAGI,EAASnf,MAAMwK,YAAY,GAAG,CAAC,EAG7D2U,EAASJ,kBAAkB,EAAGI,EAASnf,MAAMtP,MAAM,CAE3D,EA3BuB0N,EAAQ+gB,CAAQ,EACnChB,GAAiB/f,EAAQA,EAAOiV,UAAW,QAAQ,CACvD,EA2H8C2L,KAAKjvB,KAAMqO,CAAM,EACnD,MACJ,IAAK,UACDyf,EAAQI,WAAa,eACrB7D,EAAO,IAAIE,uBAAqBlc,EAAOsL,MAAM,EAC7C2V,EAAkBjF,EAAK3Q,WAAW,IAAIvD,KAAK2M,EAAQ6G,QAAQ,EAAG,CAAEznB,OAAQ,yBAA0B,EAClGwgB,EAAa,GACRjW,oBAAMqW,EAAQJ,UAAU,IACzBA,EAAa,WAAa9J,EAAcvK,EAAQ,YAAY,EAAI,mBAAqBkhB,GAAY,MAC3FhO,GAAeuB,EAAQJ,UAAU,EAAI,cAE/CoL,EAAQC,OAASjL,EAAQtM,KACzBsX,EAAQE,QAAU,kBACDpV,EAAcvK,EAAQ,MAAM,EAAI,mBAAqBkhB,GAAY,aAC7EzM,EAAQlB,OAAS,OAAS,UAAY,MAAQkB,EAAQlB,OAAS,OAAS,UACzE,qBAAahJ,EAAcvK,EAAQ,MAAM,EAAI,yBAA2BkhB,GAAY,aACpFzM,EAAQxgB,KAAO,KAAOwgB,EAAQxgB,KAC9B,4BAAasW,EAAcvK,EAAQ,UAAU,EAAI,mBAAqBkhB,GAAY,YAClFzM,EAAQ0G,SAAW,KAAO1G,EAAQ0G,SAClC,qBAAa5Q,EAAcvK,EAAQ,UAAU,EAAI,mBAAqBkhB,GAAY,MAChFD,EAAkB,aAClB5M,EAAa,WACnBoL,EAAQG,QAAU,CACd,CACIM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAASpV,EAAcvK,EAAQ,WAAW,GAC1E8U,MAAO,WACH9U,EAAOiV,UAAUC,UAI7B,MACJ,IAAK,sBACDuK,EAAQI,WAAa,eAKHtK,KAAAA,KAJlB4L,EAASnhB,EAAOiD,SAAS6X,IAAI,SAAUsG,GAEnC,OAAkB,KADlB1I,EAAQ0I,EAAIjZ,KAAK7B,QAAQ,GAAG,EAAI,IACP8a,EAAI7N,OAAkC,IAAVmF,EAAe0I,EAAIjZ,KAAKkZ,OAAO3I,CAAK,EAAE7Q,QAAQ,IAAK,EAAE,EAAI,eAAtE,SAC3C,GACU,KACPsZ,EAAS1M,EAAQtM,KAAK5B,MAAM,GAAG,EAAEuU,IAAI,SAAUsG,GAE3C,OAAkB,KADlB1I,EAAQ0I,EAAI9a,QAAQ,GAAG,EAAI,GACJ,SAAW8a,EAAIC,OAAO3I,CAAK,EAAE7Q,QAAQ,IAAK,EAAE,EACtE,GAEL1B,EAAWgb,EAAOG,MAAM,SAAUF,EAAKzuB,EAAG4uB,GAAO,OAAOH,IAAQG,EAAI,GAAK,EACrD,WAAdJ,EAAO,GAAmB,SAAWA,EAAO,GAAGK,oBAAsB,QAAW,iBACtFrG,EAAW1G,EAAQ0G,SACnBsE,EAAQC,OAASjL,EAAQtM,KACzBsX,EAAQE,QAAU,kBAAoBpV,EAAcvK,EAAQ,MAAM,EAC5D,oBAAsBkhB,GAAY,KAAO/a,EAC3C,qBAAaoE,EAAcvK,EAAQ,MAAM,EAAI,aAC7CyU,EAAQxgB,KAAO,gBAAkBitB,GAAY,aAAezM,EAAQxgB,KAC1C,8BAAasW,EAAcvK,EAAQ,UAAU,EACvE,oBAAsBkhB,GAAY,YAAc/F,EAAW,KACzDA,EAA0B,qBAChCsE,EAAQG,QAAU,CACd,CACIM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAASpV,EAAcvK,EAAQ,WAAW,GAC1E8U,MAAO,SAAU+J,GACE,YAAXA,EAAEjrB,MAGNoM,EAAOiV,UAAUC,UAI7B,MACJ,IAAK,QACDlV,EAAOW,OAAO8gB,GAAsB,EAAE,EACtChC,EAAQI,WAAa,QACA,QAAjBhB,EAAExU,MAAMwD,KACR4R,EAAQC,OAAS,oFACbnV,EAAcvK,EAAQ,eAAe,EAAI,SAG7Cyf,EAAQC,OAASnV,EAAcvK,EAAQ,OAAO,EAElDyf,EAAQE,QAAU,eAAiB+B,GAAoB,KAAO7C,EAAExU,MAAMyD,QAAU,SAChF2R,EAAQG,QAAU,CACd,CACIM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAASpV,EAAcvK,EAAQ,WAAW,GAC1E8U,MAAO,WACH9U,EAAOiV,UAAUC,UAMrC,OAAOuK,CACX,EA7qB6Bzf,EAAQjC,EAAM8gB,EAAGpK,CAAO,EAC7CrW,oBAAM4B,EAAOiV,SAAS,GACtBjV,EAAOiV,UAAY,IAAI0M,SAAO,CAC1BC,WAAYC,GAAcjB,KAAKjvB,KAAMqO,EAAQyf,EAAQI,UAAU,EAC/DiC,YAAa,SAAU/e,GACnBgf,GAAwB/hB,EAAQA,EAAOiV,UAAWlS,EAAM0c,EAAQI,UAAU,GAE9EH,OAAQD,EAAQC,OAChBC,QAASF,EAAQE,QACjBC,QAASH,EAAQG,QACjBoC,kBAAmB,CAAEC,OAAQ,QAC7BC,cAAe,CAAA,EACfC,cAAe,CAAA,EACfvF,QAAS,CAAA,EACTwF,cAAe,CAAA,EACfC,QAAS,CAAA,EACTpwB,OAAQ+N,EAAOsiB,aAAmC,IAAMtiB,EAAOnB,QAAQZ,GACvE0N,SAAUF,GAAYzL,EAAQA,EAAO8L,SAAWyW,GAAgBC,EAAc,EAC9E1uB,MAAO,QACPgsB,KAAML,EAAQK,KACdE,MAAOP,EAAQO,MACfyC,UAAWziB,EAAOyiB,UAClBC,oBAAqB1iB,EAAO0iB,oBAC5BpX,OAAQtL,EAAOsL,OAClB,EACDtL,EAAOiV,UAAU0N,iBAAmB,CAAA,EACpC3iB,EAAOiV,UAAU2N,SAAS,IAAM5iB,EAAOnB,QAAQZ,GAAK4kB,EAAa,GA4sBzE,SAAuB7iB,EAAQyf,GAC3Bzf,EAAOiV,UAAUyK,OAASD,EAAQC,OAClC1f,EAAOiV,UAAU0K,QAAUF,EAAQE,QACnC3f,EAAOiV,UAAU2K,QAAUH,EAAQG,QACnC5f,EAAOiV,UAAUwN,UAAYziB,EAAOyiB,UACpCziB,EAAOiV,UAAU6K,KAAOL,EAAQK,KAChC9f,EAAOiV,UAAU+K,MAAQP,EAAQO,MACjChgB,EAAOiV,UAAU2M,WAAaC,GAAcjB,KAAKjvB,KAAMqO,EAAQyf,EAAQI,UAAU,EACjF7f,EAAOiV,UAAU6M,YAAc,SAAU/e,GACrCgf,GAAwB/hB,EAAQA,EAAOiV,UAAWlS,EAAM0c,EAAQI,UAAU,GAE9E7f,EAAOiV,UAAU6N,WACjB9iB,EAAOiV,UAAU8N,MACrB,EAttBsB/iB,EAAQyf,CAAO,CAErC,CAUO,SAASjC,GAAgBxd,EAAQjC,EAAMilB,EAAc/iB,GACxD,IAAIgjB,EAmHR,SAAuBjjB,EAAQjC,EAAMilB,EAAc/iB,GAC/C,IAGIijB,EACApc,EACA4R,EALA+G,EAAU,CACVC,OAAQ,GAAIC,QAAS,GAAIC,QAAS,GAAIC,WAAY,GAKtDC,KAAe,WAAcC,GAAiB/f,EAAQA,EAAOmjB,aAAc1D,EAAQI,UAAU,GAC7FG,MAAgB,WAAcC,GAAkBjgB,EAAQA,EAAOmjB,aAAc1D,EAAQI,UAAU,IAC/F,OAAQ9hB,GACJ,IAAK,YACD0hB,EAAQC,OAASnV,EAAcvK,EAAQ,4BAA4B,EACnEyf,EAAQE,QAAU,QAAUpV,EAAcvK,EAAQ,6BAA6B,EAAI,SACnFyf,EAAQG,QAAU,CAAC,CACXM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAASpV,EAAcvK,EAAQ,YAAY,GAC3E8U,MAAO,WACH9U,EAAOmjB,aAAajO,OACpBgB,GAAOlW,EAAQC,EAASD,EAAOmd,UAAU,IAGjD,CACI+C,YAAa,CAAEP,QAASpV,EAAcvK,EAAQ,WAAW,GACzD8U,MAAO,WACH9U,EAAOmjB,aAAajO,OACpBlV,EAAOiV,UAAUC,UAG7BuK,EAAQI,WAAa,mBACrB,MACJ,IAAK,iBACDJ,EAAQI,WAAa,kBACrB7f,EAAOgjB,aAAeA,EACtBlc,EAAO9G,EAAOgjB,aAAahjB,EAAOud,YAElCzW,EAAiB,CAAC,KADlB4R,EAAQ5R,EAAKsF,YAAY,GAAG,GACNtF,EAAOA,EAAKqF,UAAUuM,CAAK,EACjD+G,EAAQC,OAASnV,EAAcvK,EAAQ,kBAAkB,EACzDkjB,EAAmB,QAAU3Y,EAAcvK,EAAQ,mBAAmB,EAAI,SAC1Eyf,EAAQE,QAAU,EAAmB9X,QAAQ,MAAOf,CAAI,EACxD2Y,EAAQO,MAAQ,WACZ,IACQjd,EADH/C,EAAOsP,WAA8C,IAAjCtP,EAAOgP,eAAe1c,SACvCyQ,EAAO,CAAEuE,YAAatH,EAAOmP,gBACjCnP,EAAOoH,QAAQ,cAAerE,CAAI,EAClC/C,EAAOsP,UAAYtP,EAAOsN,WAAa,CAAA,GAE3C2S,GAAkBjgB,EAAQA,EAAOmjB,aAAc1D,EAAQI,UAAU,GAErEJ,EAAQG,QAAU,CACd,CACIM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAASpV,EAAcvK,EAAQ,YAAY,GAC3E8U,MAAO,WAIH,IASQ1T,EACA9C,EAEAwC,EAfRd,EAAOgP,eAAe/P,KAAKe,EAAOgjB,aAAahjB,EAAOud,WAAW,EACjEvd,EAAOoP,iBAAiBnQ,KAAKgR,GAAiBjQ,EAAQA,EAAOgjB,aAAahjB,EAAOud,WAAW,CAAC,EAC7Fvd,EAAOud,UAAU,GACbyF,EAAahjB,EAAOud,aAGpB6F,EAAsB,CAAC,KADnBC,GAAWD,EADFpjB,EAAOgjB,aAAahjB,EAAOud,aAClBnR,YAAY,GAAG,GACVgX,EAASA,EAAOjX,UAAUkX,CAAQ,EAC7DrjB,EAAOmjB,aAAaxD,QAAU,EAAmB9X,QAAQ,MAAOub,CAAM,EACtEpjB,EAAOmjB,aAAaJ,SAGpB/iB,EAAOmjB,aAAajO,OAChB9T,EAAapB,EAAOsN,WAAatN,EAAOgO,SAAWhO,EAAOoB,WAC1D9C,EAAO0B,EAAOsN,WAAatN,EAAO7C,SAAmC,KAAtB6C,EAAOuN,WAAqBvN,EAAO1B,KAClF0B,EAAOuN,WACPzM,EAASd,EAAOsN,WAAa,OAAStN,EAAOiG,WACjD0H,GAAM3N,EAAQoB,EAAYpB,EAAOgP,eAAgB1Q,EAAMwC,EAAQd,EAAOgP,eAAgBhP,EAAOoP,gBAAgB,KAIzH,CACI8Q,YAAa,CAAEP,QAASpV,EAAcvK,EAAQ,WAAW,GACzD8U,MAAO,WAEH,IAUYhU,EACAM,EACA9C,EAbZ0B,EAAOud,UAAU,GACbyF,EAAahjB,EAAOud,aAGpB+F,EAAiB,CAAC,KADdC,GAAMD,EADGtjB,EAAOgjB,aAAahjB,EAAOud,aACvBnR,YAAY,GAAG,GACVkX,EAASA,EAAOnX,UAAUoX,CAAG,EACnDvjB,EAAOmjB,aAAaxD,QAAU,EAAmB9X,QAAQ,MAAOyb,CAAM,EACtEtjB,EAAOmjB,aAAaJ,SAGpB/iB,EAAOmjB,aAAajO,OACiB,IAAjClV,EAAOgP,eAAe1c,SAClBwO,EAASd,EAAOsN,WAAa,OAAStN,EAAOiG,WAC7C7E,EAAapB,EAAOsN,WAAatN,EAAOgO,SAAWhO,EAAOoB,WAC1D9C,EAAO0B,EAAOsN,WAAatN,EAAO7C,SAAmC,KAAtB6C,EAAOuN,WAAqBvN,EAAO1B,KAClF0B,EAAOuN,WACXI,GAAM3N,EAAQoB,EAAYpB,EAAOgP,eAAgB1Q,EAAMwC,EAAQd,EAAOgP,eAAgBhP,EAAOoP,gBAAgB,OAMjI,MACJ,IAAK,cACDqQ,EAAQI,WAAa,eACrBJ,EAAQC,OAASnV,EAAcvK,EAAQ,cAAc,EACrDyf,EAAQE,QAAU3f,EAAOwjB,WAAW,GAAGrb,KAAO,kCACzCoC,EAAcvK,EAAQ,eAAgB,EAAI,SAC/Cyf,EAAQK,KA8GpB,SAAqB9f,EAAQ+C,GACzB/C,EAAOyjB,cAAgB,CAAA,EACvB,IAAIC,EAAY1lB,WAAS,UAAW+E,CAAI,EACpC4gB,EAAYlkB,SAAO,iBAAkBikB,CAAS,EAC9CE,EAAiB5jB,EAAO6J,cAAc,MAAO,CAC7CC,UAAW,iBACd,EACG+Z,EAAW7jB,EAAO6J,cAAc,QAAS,CACzC5L,GAAI+B,EAAOnB,QAAQZ,GAAK,YAC3B,EACD2lB,EAAexZ,YAAYyZ,CAAQ,EACnCF,EAAUvZ,YAAYwZ,CAAc,EAClB,IAAIE,WAAS,CAC3BC,MAAOxZ,EAAcvK,EAAQ,gBAAgB,EAC7CgkB,OAAQ,SAAUjhB,GACd/C,EAAOikB,YAAclhB,EAAKmhB,SAEjC,EACWtB,SAAS,IAAM5iB,EAAOnB,QAAQZ,GAAK,WAAW,EAC1D8hB,GAAiB/f,EAAQA,EAAOmjB,aAAc,cAAc,CAChE,EAlIuCvC,KAAKjvB,KAAMqO,CAAM,EAC5Cyf,EAAQO,MAAQ,WACZhgB,EAAOyjB,cAAgB,CAAA,EACvBU,GAAcnkB,CAAM,EACpBigB,GAAkBjgB,EAAQA,EAAOmjB,aAAc1D,EAAQI,UAAU,GAErEJ,EAAQG,QAAU,CACd,CACIM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAASpV,EAAcvK,EAAQ,kBAAkB,GACjF8U,MAAO,WACHsP,GAAepkB,EAAQ,CAAA,CAAI,IAGnC,CACIkgB,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAASpV,EAAcvK,EAAQ,gBAAgB,GAC/E8U,MAAO,WACHsP,GAAepkB,EAAQ,CAAA,CAAK,IAGpC,CACIkgB,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAASpV,EAAcvK,EAAQ,aAAa,GAC5E8U,MAAO,WACH,IAAI5F,EAAQ,EACRlP,EAAOikB,aACP/U,EAAQlP,EAAOwjB,WAAWlxB,OAC1B0N,EAAOwjB,WAAa,GACpBW,GAAcnkB,CAAM,IAIpBA,EAAOwjB,WAAW7K,OAAO,EADzBzJ,EAAQ,CACqB,EACI,IAA7BlP,EAAOwjB,WAAWlxB,OAClBkrB,GAAgBxd,EAAQ,aAAa,EAGrCmkB,GAAcnkB,CAAM,GAG5BA,EAAOW,OAAO0jB,GAAmB,CAAEnV,MAAOA,EAAO,KAMrE,OAAOuQ,CACX,EApQmCzf,EAAQjC,EAAMilB,EAAc/iB,CAAO,EAClED,EAAOikB,YAAc,CAAA,EACjB7lB,oBAAM4B,EAAOmjB,YAAY,GACzBnjB,EAAOmjB,aAAe,IAAIxB,SAAO,CAC7BC,WAAY0C,GAAc1D,KAAKjvB,KAAMqO,EAAQijB,EAAWpD,UAAU,EAClEiC,YAAa,SAAU/e,GACnBgf,GAAwB/hB,EAAQA,EAAOmjB,aAAcpgB,EAAMkgB,EAAWpD,UAAU,GAEpFF,QAASsD,EAAWtD,QACpBD,OAAQuD,EAAWvD,OACnByC,cAAe,CAAA,EACfC,cAAe,CAAA,EACfJ,kBAAmB,CAAEC,OAAQ,QAC7BhwB,OAAQ+N,EAAOsiB,aAAmC,IAAMtiB,EAAOnB,QAAQZ,GACvE0N,SAAUF,GAAYzL,EAAQA,EAAO8L,SAAWyW,GAAgBC,EAAc,EAC9EC,UAAWziB,EAAOyiB,UAClBP,cAAe,CAAA,EACfG,QAAS,CAAA,EACTvuB,MAAO,IACP8rB,QAASqD,EAAWrD,QACpBE,KAAMmD,EAAWnD,KACjBE,MAAOiD,EAAWjD,MAClB0C,oBAAqB1iB,EAAO0iB,oBAC5BpX,OAAQtL,EAAOsL,OAClB,EACDtL,EAAOmjB,aAAaR,iBAAmB,CAAA,EACvC3iB,EAAOmjB,aAAaP,SAAS,IAAM5iB,EAAOnB,QAAQZ,GAAKsmB,EAAkB,IAGzEvkB,EAAOmjB,aAAazD,OAASuD,EAAWvD,OACxC1f,EAAOmjB,aAAanD,MAAQiD,EAAWjD,MACvChgB,EAAOmjB,aAAarD,KAAOmD,EAAWnD,KACtC9f,EAAOmjB,aAAanD,MAAQiD,EAAWjD,MACvChgB,EAAOmjB,aAAaxD,QAAUsD,EAAWtD,QACzC3f,EAAOmjB,aAAavD,QAAUqD,EAAWrD,QACzC5f,EAAOmjB,aAAaV,UAAYziB,EAAOyiB,UACvCziB,EAAOmjB,aAAa7X,OAAStL,EAAOsL,OACpCtL,EAAOmjB,aAAavB,WAAa0C,GAAc1D,KAAKjvB,KAAMqO,EAAQijB,EAAWpD,UAAU,EACvF7f,EAAOmjB,aAAarB,YAAc,SAAU/e,GACxCgf,GAAwB/hB,EAAQA,EAAOmjB,aAAcpgB,EAAMkgB,EAAWpD,UAAU,GAEpF7f,EAAOmjB,aAAaL,WACpB9iB,EAAOmjB,aAAaJ,OAE5B,CAUA,SAASyB,GAAuBxkB,EAAQykB,EAAW1hB,EAAM8c,GACjDlY,EAAY,CACZmJ,OAAQ/N,EAAK+N,OAAQ4T,UAAW7E,EAAY8E,YAAaF,GAE7DzkB,EAAOoH,QAAQ,kBAAmBO,EAAW,SAAUid,GACnD7hB,EAAK+N,OAAS8T,EAAU9T,OAC3B,CACL,CAUA,SAASiR,GAAwB/hB,EAAQykB,EAAW1hB,EAAM8c,GAClDlY,EAAY,CACZmJ,OAAQ/N,EAAK+N,OAAQ6T,YAAaF,EAAWC,UAAW7E,GAE5D7f,EAAOoH,QAAQ,mBAAoBO,EAAW,SAAUid,GACpD7hB,EAAK+N,OAAS8T,EAAU9T,OACnB/N,EAAK+N,QAAU/N,CAAAA,EAAK8hB,cAAiC,WAAfhF,GAA4C,kBAAfA,GACpE7f,EAAOoH,QAAQqa,GAAsB,EAAE,EAE9C,CACL,CASA,SAAS1B,GAAiB/f,EAAQykB,EAAW5E,GACrC9c,EAAO,CAAE4hB,YAAaF,EAAW5lB,QAAS4lB,EAAU5lB,QAAS6lB,UAAW7E,GAC5E7f,EAAOoH,QAAQ,YAAarE,CAAI,CACpC,CASA,SAASkd,GAAkBjgB,EAAQykB,EAAW5E,GACtC9c,EAAO,CAAE4hB,YAAaF,EAAW5lB,QAAS4lB,EAAU5lB,QAAS6lB,UAAW7E,GAC5E7f,EAAOoH,QAAQ,aAAcrE,CAAI,CACrC,CAmKA,SAASqhB,GAAepkB,EAAQ8kB,GAC5B,GAAI9kB,EAAOikB,YAAa,CACpB,GAAIa,EAmFR,IAlFQC,IAiFW/kB,EAjFGA,EAkFc,IAA7BA,EAAOwjB,WAAWlxB,QACrB0N,EAAOglB,UAAU/lB,KAAK,CAAE6B,OAAQ,WAAYsF,KAAMpG,EAAOwjB,WAAW,GAAI,EACxExjB,EAAOmR,UAAU8T,MAAMjlB,EAAOwjB,WAAW,EAAE,EAC3CxjB,EAAOwjB,WAAW7K,OAAO,EAAG,CAAC,OAUjC,IA5FQuM,IA2FUllB,EA3FGA,EA4Fe,IAA7BA,EAAOwjB,WAAWlxB,QACrB0N,EAAOglB,UAAU/lB,KAAK,CAAE6B,OAAQ,UAAWsF,KAAMpG,EAAOwjB,WAAW,GAAI,EACvExjB,EAAOmR,UAAU8T,MAAMjlB,EAAOwjB,WAAW,EAAE,EAC3CxjB,EAAOwjB,WAAW7K,OAAO,EAAG,CAAC,EA7F7BwL,GAAcnkB,CAAM,OAGpBA,EAAOglB,UAAU/lB,KAAK,CAClB6B,OAAQgkB,EAAa,WAAa,UAClC1e,KAAMpG,EAAOwjB,WAAW,GAC3B,EACDxjB,EAAOmR,UAAU8T,MAAMjlB,EAAOwjB,WAAW,EAAE,EAC3CxjB,EAAOwjB,WAAW7K,OAAO,EAAG,CAAC,EACI,IAA7B3Y,EAAOwjB,WAAWlxB,OAClBkrB,GAAgBxd,EAAQ,aAAa,EAGrCmkB,GAAcnkB,CAAM,CAGhC,CAOA,SAASmkB,GAAcnkB,GACnB,IAAImlB,EAAO,CAAA,EAOP3U,GANAxQ,EAAOyjB,cACPzjB,EAAOyjB,cAAgB,CAAA,EAGvB0B,EAAO,CAAA,EAED1lB,SAAO,kBAAmBO,EAAOmjB,aAAatkB,OAAO,GAC3D2R,GACAlO,SAAOkO,CAAG,EAEV2U,EACAnlB,EAAOmjB,aAAajO,OAGpBlV,EAAOwjB,WAAa,EAE5B,CAoJA,SAASnD,GAAY7P,EAAK4U,GACtBC,QAAMhF,YAAY,CACdxhB,QAAS2R,EACT8U,WAAY,CACRF,YAAaA,GAEpB,CACL,CAoLA,SAASvD,GAAc7hB,EAAQ6f,EAAY9c,GAEvCwiB,GADiBC,YAAU,SAAUxlB,EAAOiV,UAAUpW,OAAO,CACpC,EACzB2lB,GAAuBxkB,EAAQA,EAAOiV,UAAWlS,EAAM8c,CAAU,CACrE,CASA,SAASyE,GAActkB,EAAQylB,EAAS1iB,GAEpCwiB,GADiBC,YAAU,SAAUxlB,EAAOmjB,aAAatkB,OAAO,CACvC,EACzB2lB,GAAuBxkB,EAAQA,EAAOmjB,aAAcpgB,EAAM0iB,CAAO,CACrE,CAOA,SAASF,GAAeG,GAapB,IAZA,IAYSC,EAAW,EAAGA,EAAWD,EAAWpzB,OAAQqzB,CAAQ,GACzDC,CAbU,SAAUD,GACpBD,EAAWC,GAAUE,UAAY,SAAUhH,GACrB,KAAdA,EAAEiH,SACFjH,EAAEkH,kBAGVL,EAAWC,GAAUnF,QAAU,SAAU3B,GACnB,KAAdA,EAAEiH,SACFJ,EAAWC,GAAU7Q,UAKrB6Q,CAAQ,CAExB,CA4BA,SAASvF,GAASpgB,GACd,IAAIwQ,EAAM/Q,SAAO,WAAYO,EAAOiV,UAAUpW,OAAO,EACrDmnB,GAAiBhmB,EAAQwQ,CAAG,EAC2B,KAAnDA,EAAIuC,cAAc8J,mBAAmBvS,WAGzCqL,GAAa3V,EAAQwQ,EAAI5O,KAAK,CAClC,CAQA,SAASkf,GAAW9gB,GAChB,IAgBIC,EAGIgmB,EAEAC,EArBJ1V,EAAM/Q,SAAO,UAAWO,EAAOiV,UAAUpW,OAAO,EACpDmnB,GAAiBhmB,EAAQwQ,CAAG,EAC2B,KAAnDA,EAAIuC,cAAc8J,mBAAmBvS,YAGrCvM,EAAOyS,EAAI5O,MACXukB,EAASnmB,EAAOsT,gBAAgBlH,YAAY,GAAG,EAC/CpM,EAAOuT,QAAU,CAACvT,EAAOqW,oBAEzBtY,GADuB,CAAC,IAAZooB,EAAiB,GAAKnmB,EAAOsT,gBAAgB+N,OAAO8E,CAAM,GAG1EnmB,EAAOmd,WAAapf,EAChBiC,EAAOsT,kBAAoBvV,EAC3BiC,EAAOiV,UAAUC,QAGjBjV,EAAmC,mBAAxBD,EAAOmB,aAAqCnD,WAAS,aAAcgC,EAAOiD,SAAS,EAAE,EAAE4E,QAAQ,MAAO,GAAG,EAAI7H,EAAO1B,KACnI0B,EAAOomB,UAAYpoB,WAAS,KAAMgC,EAAOiD,SAAS,EAAE,EAChDjD,EAAOuT,SACH0S,EAA2B,CAAC,IAAZE,EAAiB,GAAKnmB,EAAOsT,gBAAgB+N,OAAO8E,CAAM,EAE1ED,EAA2B,CAAC,KAD5BG,EAAStoB,EAAKqO,YAAY,GAAG,GACI,GAAKrO,EAAKsjB,OAAOgF,CAAM,EACxDrmB,EAAOqW,oBAAqB4P,IAAiBC,EAC7C1I,GAAgBxd,EAAQ,YAAa,KAAMC,CAAO,EAOtDiW,GAAOlW,EAAQC,EAASlC,CAAI,GAEpC,CAkBA,SAASwiB,GAAWvgB,EAAQwQ,GACpB,eAAe8V,KAAK9V,EAAI5O,KAAK,EAC7B2kB,GAAWvmB,EAAQwQ,CAAG,EAEH,KAAdA,EAAI5O,MACT4O,EAAIuC,cAAc8J,mBAAmBvS,UAAYC,EAAcvK,EAAQ,kBAAkB,EAGzFwQ,EAAIuC,cAAc8J,mBAAmBvS,UAAY,EAEzD,CAQA,SAAS0b,GAAiBhmB,EAAQwQ,GAC9B+P,GAAWvgB,EAAQwQ,CAAG,EACtB,IAAI1F,EAAM0F,EAAI5O,MAAMtP,OAAS,EACX,KAAdke,EAAI5O,OAAkB4O,EAAI5O,MAAMwK,YAAY,GAAG,IAAMtB,GAAS0F,EAAI5O,MAAMwK,YAAY,GAAG,IAAMtB,GAC5F9K,CAAAA,EAAOqW,mBAAqD,CAAC,IAAhC7F,EAAI5O,MAAMwK,YAAY,GAAG,GAAuE,IAA3DoE,EAAI5O,MAAMuK,UAAUqE,EAAI5O,MAAM0E,QAAQ,GAAG,EAAI,CAAC,EAAEhU,QACnHi0B,GAAWvmB,EAAQwQ,CAAG,CAE9B,CAQA,SAAS+V,GAAWvmB,EAAQwQ,GACxB,IAAInG,EAAQE,EAAcvK,EAAQ,oBAAoB,EAAE6H,QAAQ,MAAO,IAAM2I,EAAI5O,MAAQ,GAAG,EACxF5B,EAAO0iB,oBACPlS,EAAIuC,cAAc8J,mBAAmBld,YAAc0K,EAGnDmG,EAAIuC,cAAc8J,mBAAmBvS,UAAYD,CAEzD,CAOA,SAASoW,GAAW5B,GAGZhR,EADAgR,EAAEiH,SAGGjH,EAAE2H,OAIA3H,EAAE4H,SAEb,OAAO5Y,CACX,CASO,SAAS6Y,GAAkB1mB,EAAQ0f,EAAQnY,GAC9C,IAAIoY,EAAU9V,gBAAc,MAAO,CAAEC,UAAW,eAAgB,EAC5D6c,EAAQ9c,gBAAc,MAAO,CAAEC,UAAW,UAAWmU,MAAO,CAAE2I,IAAKrf,EAAUsf,IAAKnH,GAAU,EAChGC,EAAQvV,YAAYuc,CAAK,EACrBvoB,oBAAM4B,EAAO8mB,SAAS,GACtB9mB,EAAO8mB,UAAY,IAAInF,SAAO,CAC1BjC,OAAQA,EACRC,QAASA,EACTqC,kBAAmB,CAAEC,OAAQ,QAC7BC,cAAe,CAAA,EACfC,cAAe,CAAA,EACfvF,QAAS,CAAA,EACTyF,QAAS,CAAA,EACTvuB,MAAO,QACPizB,OAAQ,QACR90B,OAAQ+N,EAAOsiB,aAAmC,IAAMtiB,EAAOnB,QAAQZ,GACvE0N,SAAUF,GAAYzL,EAAQA,EAAO8L,SAAWyW,GAAgBC,EAAc,EAC9ElX,OAAQtL,EAAOsL,OACf0b,aAAc,CAAA,EACd5E,cAAe,CAAA,EACfM,oBAAqB1iB,EAAO0iB,oBAC5BpQ,SAAU,CAAE2U,EAAG,SAAUC,EAAG,UAC5BzE,UAAWziB,EAAOyiB,UAClB3C,KA6BZ,SAAmB9f,GACf6S,WAAW,WACH7S,EAAO8mB,WACP9mB,EAAO8mB,UAAUjoB,QAAQ6hB,QAEhC,EACDyG,GAAYnnB,CAAM,EAClB+f,GAAiB/f,EAAQA,EAAO8mB,UAAW,eAAe,CAC9D,EArC4BlG,KAAKjvB,KAAMqO,CAAM,EACjCggB,MAAO,WAAcC,GAAkBjgB,EAAQA,EAAO8mB,UAAW,eAAe,GAChFlF,WAAY,SAAU7e,GAClByhB,GAAuBxkB,EAAQA,EAAO8mB,UAAW/jB,EAAM,eAAe,GAE1E+e,YAAa,SAAU/e,GACnBgf,GAAwB/hB,EAAQA,EAAO8mB,UAAW/jB,EAAM,eAAe,GAE3EqkB,SAAUD,GAAYvG,KAAKjvB,KAAMqO,CAAM,EACvCqnB,WAAYF,GAAYvG,KAAKjvB,KAAMqO,CAAM,EAC5C,EACDA,EAAO8mB,UAAUnE,iBAAmB,CAAA,EACpC3iB,EAAO8mB,UAAUlE,SAAS,IAAM5iB,EAAOnB,QAAQZ,GAAKqpB,EAAiB,IAGrEtnB,EAAO8mB,UAAUrhB,UACjBzF,EAAO8mB,UAAUpH,OAASA,EAC1B1f,EAAO8mB,UAAUnH,QAAUA,EAC3B3f,EAAO8mB,UAAUrE,UAAYziB,EAAOyiB,UACpCziB,EAAO8mB,UAAUhE,WACjB9iB,EAAO8mB,UAAU/D,OAEzB,CAsBA,SAASoE,GAAYnnB,GACjB,IAAI2f,EAAUlgB,SAAO,iBAAkBO,EAAO8mB,UAAUjoB,OAAO,EAC3D0oB,EAAU9nB,SAAO,gBAAiBO,EAAO8mB,UAAUjoB,OAAO,EAC1D2oB,EAASxW,OAAOyW,iBAAiB9H,EAAS,IAAI,EAC9C+H,EAAeF,EAAU,EAAIG,WAAWH,EAAOI,YAAY,EAAK,GAChEC,EAAgBL,EAAU,EAAIG,WAAWH,EAAOM,aAAa,EAAK,GACtEP,EAAQ/c,MAAM1W,MAAS6rB,EAAQoI,YAAcL,EAAgB,KAC7DH,EAAQ/c,MAAMuc,OAAUpH,EAAQrW,aAAeue,EAAiB,IACpE,CC54BIG,EAAen2B,UAAUo2B,OAAS,SAAUllB,GAIxC,GAHApR,KAAKqO,OAAOkoB,YAAc,KAC1Bv2B,KAAKw2B,UAAY,KACjBC,cAAYz2B,KAAKqO,OAAOnB,OAAO,EACN,eAArBlN,KAAKqO,OAAOgF,KAAuB,CACnCrT,KAAK02B,mBACL12B,KAAKkN,QAAQypB,aAAa,WAAY,GAAG,EACrC32B,KAAK42B,UACL52B,KAAK62B,eACL72B,KAAK82B,uBAET92B,KAAKqO,OAAOW,OAAO+nB,GAAmB,EAAE,EACxC,IAAIC,EAAYlpB,SAAO,IAAM9N,KAAKqO,OAAOnB,QAAQZ,GAAK2qB,GAAkBj3B,KAAKqO,OAAOnB,OAAO,EACvFgqB,EAAKppB,SAAO,KAAMkpB,CAAS,EAuD3BG,GAtDAD,GACAvmB,SAAOumB,CAAE,EAEbl3B,KAAK42B,QAAU,CACXQ,eAAgB,CACZC,SAAU,SAAUC,SAAU,UAAWC,SAAU,GACnDC,cAAe,QAASC,YAAa,IAEzCC,SAAU,CAAA,EACVC,OAAQ,CAAEvrB,KAAM,OAAQwrB,QAAS,WAAYhiB,SAAU,eAAgBiiB,eAAgB,gBACvFjhB,UAAW5W,KAAKqO,OAAOuI,UACvBkhB,YAAa93B,KAAK+3B,cAAc9I,KAAKjvB,IAAI,EACzC+wB,oBAAqB/wB,KAAKqO,OAAO0iB,qBAErC/wB,KAAK0W,MAAQ,GACb1W,KAAK0W,MAAQ1W,KAAKg4B,WAAW5mB,CAAI,EAC7BpR,KAAKqO,OAAO4pB,cAAuC,SAAvBj4B,KAAKqO,OAAOyI,OACxC9W,KAAK0W,MAAQ1W,KAAKmT,SAAW+kB,WAASC,KAAKn4B,KAAK0W,MAAO1W,KAAKqO,OAAOyI,OAAQ9W,KAAKo4B,SAASnJ,KAAKjvB,IAAI,CAAC,EAGnGA,KAAK0W,MAAQ1W,KAAKmT,SAAWsD,GAAczW,KAAKqO,OAAQrO,KAAK0W,KAAK,EAEtEsgB,EAAU/oB,UAAU0C,OAAO0nB,EAAgB,EACvCr4B,KAAKqO,OAAOiqB,sBAA+C,EAAvBt4B,KAAKmT,SAASxS,QAClDX,KAAKqO,OAAOkqB,qBAAqBC,sBAErCx4B,KAAKy4B,aAAeC,WAASC,mBAAmBzgB,gBAAelY,KAAK0W,MAAO1W,KAAK42B,OAAO,EACvF52B,KAAK44B,SAAWl5B,MAAMQ,UAAU24B,MAAM9S,KAAK8N,YAAU,IAAMhmB,EAAe7N,KAAKy4B,YAAY,CAAC,EAC5Fz4B,KAAKkN,QAAQuL,YAAYzY,KAAKy4B,YAAY,EAC1Cz4B,KAAKy4B,aAAa9B,aAAa,aAAc,SAAS,EACtD32B,KAAK84B,iBACL94B,KAAK+4B,gBACwB,IAAzB/4B,KAAK44B,SAASj4B,QACVq4B,EAAYh5B,KAAKkN,QAAQ6K,cAAc,IAAMkhB,EAAe,EAChEj5B,KAAKkN,QAAQ2f,YAAYmM,CAAS,EAClC5hB,GAAmBpX,KAAKqO,OAAQrO,KAAKkN,QAASkE,CAAI,GAEpB,IAAzBpR,KAAK44B,SAASj4B,QAAgBX,KAAKkN,QAAQ6K,cAAc,IAAMC,CAAS,GAC7EhY,KAAKkN,QAAQ2f,YAAY7sB,KAAKkN,QAAQ6K,cAAc,IAAMC,CAAS,CAAC,EAE1C,CAAA,IAA1BhY,KAAKk5B,mBACLl5B,KAAKm5B,YAAYn5B,KAAKqO,OAAOiP,UAAU,EACvCtd,KAAKk5B,iBAAmB,CAAA,GAGC,CAAA,IAAzBl5B,KAAKo5B,kBACLp5B,KAAKm5B,YAAYn5B,KAAKqO,OAAO2U,UAAU,EACvChjB,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACrDpQ,KAAKud,KAAK,GACNvd,KAAKud,QAAUvd,KAAKqO,OAAO2U,WAAWriB,UACtCX,KAAKo5B,gBAAkB,CAAA,EACvBp5B,KAAKqO,OAAO2U,WAAa,IAGjBhjB,KAAKkN,QAAQuD,iBAAiB,IAAM4oB,CAAU,GACrC,IAArBlC,EAAUx2B,SACVX,KAAKqO,OAAOmB,aAAe,kBAE/B,IAAK,IAAIxO,EAAI,EAAGA,EAAIm2B,EAAUx2B,OAAQK,CAAC,GACnCm2B,EAAUn2B,GAAG21B,aAAa,gBAAiB,MAAM,EAErD32B,KAAKkN,QAAQ2L,MAAMygB,UAAY,OAC/Bt5B,KAAKu5B,eACLv5B,KAAKw5B,mBACLx5B,KAAKy5B,aACDz5B,KAAKqO,OAAOiqB,sBAA+C,EAAvBt4B,KAAKmT,SAASxS,SAClDX,KAAKqO,OAAOkqB,qBAAqBmB,qBACjC15B,KAAKqO,OAAOkqB,qBAAqBoB,gBAAgB,CAAA,CAAK,GAE1D35B,KAAK45B,WAAa,CAAA,EAClBC,cAAY75B,KAAKqO,OAAOnB,OAAO,EAC3BlN,KAAKqO,OAAO+B,cAAczP,QAC1BX,KAAK85B,cAIjBzD,EAAen2B,UAAUk4B,SAAW,SAAU2B,EAAG1Y,GAC7C,IACQ2Y,EAIR,MAL8B,eAA1Bh6B,KAAKqO,OAAOuI,YACRojB,EAAID,EACRA,EAAI1Y,EACJA,EAAI2Y,GAEDh6B,KAAKqO,OAAO4pB,aAAa8B,EAAG1Y,CAAC,GAExCgV,EAAen2B,UAAU44B,eAAiB,WAEtC,IADA,IAAI93B,EAAI,EACDA,EAAIhB,KAAK44B,SAASj4B,QACjBX,KAAK44B,SAAS53B,GAAG+W,cAAc,KAAK,IAEpC/X,KAAK44B,SAAS53B,GAAGi5B,YAAc,WAAc,MAAO,CAAA,IAExDj5B,CAAC,IAGTq1B,EAAen2B,UAAU64B,cAAgB,WACrC,IAAImB,EAAQl6B,KACRA,KAAK42B,UACD52B,KAAKqO,OAAO2R,kBACRhgB,KAAK+f,SACL/f,KAAK+f,QAAQ3W,UAEjBpJ,KAAK+f,QAAU,IAAIoa,YAAUn6B,KAAKy4B,aAAc,CAC5C2B,eAAgB,CAAA,EAChBC,SAAU,EACVC,iBAAkB,CAAA,EAClBC,WAAY,IAAMzpB,GAClB0pB,OAAQx6B,KAAKy6B,WAAWxL,KAAKjvB,IAAI,EACjC06B,SAAU16B,KAAKqO,OAAOssB,mBACtBC,SAAU56B,KAAKqO,OAAOnB,QACtB2tB,SAAU5b,GAAgBgQ,KAAKjvB,KAAMA,KAAKqO,MAAM,EAChDysB,KAAM9Z,GAAgBiO,KAAKjvB,KAAMA,KAAKqO,MAAM,EAC5C0sB,MAAO,CAAA,EACPC,UAAW,SAAU5pB,GACjB0O,GAAiBoa,EAAM7rB,OAAQ+C,EAAM8oB,EAAMna,OAAO,GAEzD,GAEI/f,KAAK+f,SAAW,CAAC/f,KAAKqO,OAAO2R,kBAClChgB,KAAK+f,QAAQ3W,YAIzBitB,EAAen2B,UAAUu6B,WAAa,SAAUrpB,GACxCmpB,EAAanpB,EAAK6pB,OAAO36B,OACzB46B,EAASrqB,UAAQ0pB,EAAY,cAAc,EAC/C,GAAI,CAACW,EACD,OAAO,KAEPA,GAAU,CAACA,EAAOjtB,UAAUC,SAAS,UAAU,GAC/ClO,KAAKm7B,SAASD,CAAM,EAExB,IAAI/D,EAAYn3B,KAAKkN,QAAQuD,iBAAiB,IAAM4oB,CAAU,EAC9Dr5B,KAAKqO,OAAOgB,eAAiB,GAC7BrP,KAAKqO,OAAOmO,SAAW,GACvB,IAAK,IAAIxb,EAAI,EAAGA,EAAIm2B,EAAUx2B,OAAQK,CAAC,GACnChB,KAAKqO,OAAOmO,SAASlP,KAAKtN,KAAKo7B,cAAcjE,EAAU5oB,SAASvN,EAAEwN,WAAY,EAAE,EAAE,CAAC,EACnFxO,KAAKqO,OAAOgB,eAAe/B,KAAK6pB,EAAUn2B,EAAE,EAKhD,OAHA2O,GAAU3P,KAAKqO,OAAQ6sB,CAAM,EAC7Bl7B,KAAKqO,OAAOgO,SAAWrc,KAAKqO,OAAO1B,KACnC6R,GAAyBxe,KAAKqO,MAAM,EAC7BrO,KAAKqO,OAAO2Q,oBAEvBqX,EAAen2B,UAAUm7B,WAAa,SAAUjqB,GAC5C,IAEQkqB,EAFJt7B,KAAKqO,OAAOwF,eAAiB7T,KAAKu7B,kBAC9BC,EAAS3qB,UAAQO,EAAK9Q,OAAQ,cAAc,EAC5Cg7B,EAAUjvB,WAASrM,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAAIX,KAAKqO,OAAOI,QAAQ,EAC1F+sB,GACIC,EAAOz7B,KAAKo7B,cAAcI,CAAM,EACpCx7B,KAAKqO,OAAO7C,SAAWiwB,EAAK7Z,OAAS5hB,KAAKqO,OAAO1B,KAAO0J,GAAYrW,KAAKqO,OAAQotB,EAAMz7B,KAAKqO,OAAO1B,IAAI,EACvG3M,KAAKqO,OAAOwO,SAAW4e,EAAK7Z,OAAS0Z,EAAUG,IAG/Cz7B,KAAKqO,OAAO7C,SAAWxL,KAAKqO,OAAO1B,KACnC3M,KAAKqO,OAAOwO,SAAWye,KAUnCjF,EAAen2B,UAAUq7B,cAAgB,WACrC,MAAO,kBAEXlF,EAAen2B,UAAU63B,cAAgB,SAAU3mB,GAC/CA,EAAK+D,KAAKumB,gBAAgB,YAAY,EAClC,CAAC17B,KAAKqO,OAAOqW,mBAAqBrY,WAAS,SAAU+E,EAAKuqB,OAAO,IAC7DC,EAAUxqB,EAAK+D,KAAK4C,cAAc,IAAMhK,EAAa,EACrDshB,EAAMhjB,WAAS,OAAQ+E,EAAKuqB,OAAO,EACnC15B,EAAOoK,WAAS,OAAQ+E,EAAKuqB,OAAO,EACd,CAAC,IAAvBtM,EAAI1a,QAAQ1S,CAAI,KAChB25B,EAAQjjB,UAAY0W,EAAIK,OAAO,EAAGL,EAAI1uB,OAASsB,EAAKtB,MAAM,GAGlEX,KAAK67B,eAAezqB,CAAI,EARxB,IAEQie,EACAptB,EAMJ+T,EAAY,CACZ9I,QAASkE,EAAK+D,KACdQ,YAAavE,EAAKuqB,QAClBthB,OAAQ,kBAEZra,KAAKqO,OAAOoH,QAAQ,WAAYO,CAAS,GAE7CqgB,EAAen2B,UAAU27B,eAAiB,SAAUzqB,GAChD,IAGI0qB,EAHC97B,KAAKqO,OAAO0tB,sBAGbD,EAAeE,iBAAe9jB,gBAAe,CAAA,EAAO,CACpDqa,QAAS,CAAA,EACTvY,SAAU,UACb,GACY2c,aAAa,OAAQ,UAAU,EAC5CmF,EAAanF,aAAa,eAAgB,OAAO,EACjDmF,EAAanF,aAAa,aAAc,UAAU,EAClDvlB,EAAK+D,KAAKmM,kBAAkB2a,aAAaH,EAAc1qB,EAAK+D,KAAKmM,kBAAkB4a,WAAW,EAAE,IAEpG7F,EAAen2B,UAAUi8B,eAAiB,SAAU/qB,GAChD,GAAyB,eAArBpR,KAAKqO,OAAOgF,KAAuB,CAOnC,GANArT,KAAKoJ,UACDpJ,KAAKqO,OAAOiqB,sBACZt4B,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EAEzDpQ,KAAKs2B,OAAOllB,CAAI,EAEe,kBAA3B/E,WAAS,OAAQ+E,CAAI,GAAoD,SAA3BpR,KAAKqO,OAAOiG,YAC1DtU,KAAKqO,OAAOM,OAAS3O,KAAKqO,OAAOQ,eAAsD,IAArC7O,KAAKqO,OAAOQ,cAAclO,OAG5E,IAFA,IAAIy7B,EAAUp8B,KAAKq8B,WAAWr8B,KAAKqO,OAAOQ,aAAa,EACnDytB,EAAW,EACRA,EAAWF,EAAQz7B,QACtBiP,GAAQ5P,KAAK44B,SAASwD,EAAQE,GAAU,EACxCA,CAAQ,GAIS,IADTt8B,KAAKkN,QAAQuD,iBAAiB,IAAM4oB,CAAU,EAChD14B,QACVX,KAAKkN,QAAQ6hB,QAEjB/uB,KAAK85B,YACL95B,KAAKqO,OAAO2C,eAAiB,CAAA,OAG7BhR,KAAKkN,QAAQypB,aAAa,WAAY,IAAI,GAGlDN,EAAen2B,UAAU45B,UAAY,WACjC,IAAIyC,EAAWv8B,KAAKkN,QAAQuD,iBAAiB,IAAM4oB,CAAU,EAC7D,GAAIkD,EAEA,IADA,IAAIC,EAAc,EACXA,EAAcD,EAAS57B,QAC1BX,KAAKy8B,WAAWF,EAASC,GAAc,CAAA,CAAI,EAC3CA,CAAW,IAIvBnG,EAAen2B,UAAU83B,WAAa,SAAU5mB,GAG5C,IAFA,IAAIpQ,EAAI,EACJ0V,EAAQ6R,KAAKyB,MAAMzB,KAAKC,UAAUpX,EAAKyB,KAAK,CAAC,EAC1C7R,EAAI0V,EAAM/V,QAAQ,CACrB,IAUQ6U,EAVJknB,EAAOloB,GAASkC,EAAM1V,EAAE,EACxBub,EAASlQ,WAAS,OAAQqK,EAAM1V,EAAE,EAClC27B,EAAWle,GAAYze,KAAKqO,OAAQqI,EAAM1V,EAAE,EAC5CmX,EAAcnY,KAAKqO,OAAO+B,eACsB,CAAC,IAAjDpQ,KAAKqO,OAAO+B,cAAcuE,QAAQgoB,CAAQ,EAC1C7rB,GAAiB,YAAcA,GAC9BiR,EAAcrL,EAAM1V,EAAE,IACvBmX,GAAa,IAAMsK,GAAe/L,EAAM1V,EAAE,GAE1C07B,IAAS5nB,IAAkB9U,KAAKqO,OAAOuuB,eAAiB7oB,GAAc2C,EAAM1V,EAAE,GAC1EwU,EAASN,GAAYlV,KAAKqO,OAAQqI,EAAM1V,EAAE,EAC9CoY,WAAS,eAAgB5D,EAAQkB,EAAM1V,EAAE,EACzCoY,WAAS,gBAAiB,CAAE8b,IAAK3Y,GAAU7F,EAAM1V,EAAE,GAGnDoY,WAAS,WAAYsjB,EAAMhmB,EAAM1V,EAAE,EAEvCoY,WAAS,eAAgB,CAAEpX,MAAOmW,EAAW0kB,MAAOtgB,GAAU7F,EAAM1V,EAAE,EACtEA,CAAC,GAEL,OAAO0V,GAEX2f,EAAen2B,UAAU48B,cAAgB,SAAU1rB,GAC/CpR,KAAKs2B,OAAOllB,CAAI,GAEpBilB,EAAen2B,UAAU68B,YAAc,SAAU3rB,GACpB,eAArBpR,KAAKqO,OAAOgF,OAGhBrT,KAAKm8B,eAAe/qB,CAAI,EACxBpR,KAAKg9B,cACLh9B,KAAKm5B,YAAY,CAAC9sB,WAASrM,KAAKqO,OAAOxB,MAAQ,KAAO,OAAQ7M,KAAKqO,OAAO8c,WAAW,EAAE,EACvFnrB,KAAKqO,OAAO8c,YAAc,KAC1BnrB,KAAKqO,OAAO6E,qBAAqBhG,QAAQ6hB,QACzC/uB,KAAKqO,OAAOmB,aAAe,mBAE/B6mB,EAAen2B,UAAU+8B,eAAiB,WACL,mBAA7Bj9B,KAAKqO,OAAOmB,cACZxP,KAAKk9B,sBAGb7G,EAAen2B,UAAUi9B,aAAe,WACH,mBAA7Bn9B,KAAKqO,OAAOmB,cACZ+S,GAAOviB,KAAKqO,OAAQrO,KAAKqO,OAAO+B,cAAepQ,KAAKqO,OAAO1B,KAAM,QAAQ,GAIjF0pB,EAAen2B,UAAUk9B,YAAc,SAAUhsB,GACpB,eAArBpR,KAAKqO,OAAOgF,OAGhBrT,KAAKm8B,eAAe/qB,CAAI,EACxBpR,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACrDpQ,KAAKg9B,gBAET3G,EAAen2B,UAAUm9B,aAAe,SAAUjsB,GACrB,eAArBpR,KAAKqO,OAAOgF,MAGhBrT,KAAKm8B,eAAe/qB,CAAI,GAE5BilB,EAAen2B,UAAUo9B,aAAe,WACH,mBAA7Bt9B,KAAKqO,OAAOmB,cAA0E,IAArCxP,KAAKqO,OAAO+B,cAAczP,QAC3EX,KAAKu9B,oBAGblH,EAAen2B,UAAUs9B,cAAgB,SAAUpsB,GAC/CpR,KAAKqO,OAAOM,MAAQ,CAAA,EAE4C,KAA5D3O,KAAKqO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,QAClDjQ,KAAKqO,OAAOovB,cAAgB,IAEP,eAArBz9B,KAAKqO,OAAOgF,OACZzE,EAAW5O,KAAKqO,MAAM,EACtBrO,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACrDpQ,KAAKm8B,eAAe/qB,CAAI,EACpBpR,KAAKqO,OAAOgd,eACZrrB,KAAKg9B,cACLh9B,KAAK09B,aAAa19B,KAAKqO,OAAOgd,WAAW,IAIrDgL,EAAen2B,UAAUy9B,WAAa,SAAUvsB,GACX,mBAA7BpR,KAAKqO,OAAOmB,cACZxP,KAAK49B,aAAaxsB,EAAK9Q,MAAM,GAGrC+1B,EAAen2B,UAAU29B,aAAe,WACX,eAArB79B,KAAKqO,OAAOgF,MAAyBrT,KAAKkN,SAC1ClN,KAAKkN,QAAQe,UAAUqC,IAAI+nB,EAAgB,GAGnDhC,EAAen2B,UAAU49B,gBAAkB,WACvC,IAEQC,EAFiB,eAArB/9B,KAAKqO,OAAOgF,OACZrT,KAAKw2B,UAAYx2B,KAAKg+B,eAClBD,EAAW/9B,KAAKi+B,cAEpBj+B,KAAKk+B,YAAYH,EADH,CAAEI,QAAS,CAAA,EAAMC,SAAU,CAAA,EACP,EAClCp+B,KAAKq+B,cAAgB,CAAA,EACrBr+B,KAAKkzB,aAAe,CAAA,IAG5BmD,EAAen2B,UAAUo+B,eAAiB,WACb,eAArBt+B,KAAKqO,OAAOgF,OACZrT,KAAKu+B,iBACLv+B,KAAKq+B,cAAgB,CAAA,EACrBr+B,KAAKkzB,aAAe,CAAA,IAG5BmD,EAAen2B,UAAUs+B,gBAAkB,WACvCx+B,KAAK45B,WAAa,CAAA,GAEtBvD,EAAen2B,UAAUu+B,eAAiB,WACtCz+B,KAAK45B,WAAa,CAAA,GAGtBvD,EAAen2B,UAAUw+B,SAAW,SAAUttB,GACjB,eAArBpR,KAAKqO,OAAOgF,OACZrT,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACrDpQ,KAAKqO,OAAOW,OAAO8b,EAAyB,EAAE,EAC9C9qB,KAAKqO,OAAOovB,cAAgBrsB,EAAKyB,MACjC7S,KAAKm8B,eAAe/qB,CAAI,IAGhCilB,EAAen2B,UAAUy+B,gBAAkB,WACnC3+B,KAAKqO,OAAOgF,MAIpBgjB,EAAen2B,UAAU0+B,sBAAwB,WACpB,eAArB5+B,KAAKqO,OAAOgF,MAGhBrT,KAAKk9B,sBAET7G,EAAen2B,UAAU2+B,aAAe,WACX,eAArB7+B,KAAKqO,OAAOgF,MAA0B5G,oBAAMzM,KAAK42B,OAAO,GACI,KAA5D52B,KAAKqO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAiBjQ,KAAKqO,OAAO6B,YACrD,eAAvBlQ,KAAKqO,OAAOyI,SACf9W,KAAKqO,OAAOyI,OAAS,OACrB9W,KAAKqO,OAAOW,OAAOsL,GAAqB,EAAE,IAGlD+b,EAAen2B,UAAU42B,oBAAsB,WACvC92B,KAAKqO,OAAOywB,cAGhB9+B,KAAKqO,OAAO0wB,IAAI5tB,GAAmBnR,KAAK6+B,YAAY,EACpD7+B,KAAKqO,OAAO0wB,IAAI7jB,EAAoBlb,KAAK88B,aAAa,EACtD98B,KAAKqO,OAAO0wB,IAAI3T,GAAkBprB,KAAK+8B,WAAW,EAClD/8B,KAAKqO,OAAO0wB,IAAIC,GAAqBh/B,KAAKi9B,cAAc,EACxDj9B,KAAKqO,OAAO0wB,IAAI7P,GAAmBlvB,KAAKm9B,YAAY,EACpDn9B,KAAKqO,OAAO0wB,IAAIjT,GAAkB9rB,KAAKo9B,WAAW,EAClDp9B,KAAKqO,OAAO0wB,IAAI/qB,GAAmBhU,KAAKq9B,YAAY,EACpDr9B,KAAKqO,OAAO0wB,IAAItT,EAAoBzrB,KAAKw9B,aAAa,EACtDx9B,KAAKqO,OAAO0wB,IAAIttB,EAAqBzR,KAAKm8B,cAAc,EACxDn8B,KAAKqO,OAAO0wB,IAAIvsB,GAAexS,KAAK0+B,QAAQ,EAC5C1+B,KAAKqO,OAAO0wB,IAAIE,GAAiBj/B,KAAK29B,UAAU,EAChD39B,KAAKqO,OAAO0wB,IAAI3qB,GAAgBpU,KAAKw9B,aAAa,EAClDx9B,KAAKqO,OAAO0wB,IAAIG,EAAqBl/B,KAAKm/B,iBAAiB,EAC3Dn/B,KAAKqO,OAAO0wB,IAAIK,GAAmBp/B,KAAKq/B,YAAY,EACpDr/B,KAAKqO,OAAO0wB,IAAIjP,GAAsB9vB,KAAKs/B,eAAe,EAC1Dt/B,KAAKqO,OAAO0wB,IAAIQ,GAAmBv/B,KAAKs9B,YAAY,EACpDt9B,KAAKqO,OAAO0wB,IAAIrT,EAAkB1rB,KAAKw9B,aAAa,EACpDx9B,KAAKqO,OAAO0wB,IAAIhI,GAAmB/2B,KAAK69B,YAAY,EACpD79B,KAAKqO,OAAO0wB,IAAIS,GAAsBx/B,KAAK89B,eAAe,EAC1D99B,KAAKqO,OAAO0wB,IAAIU,GAAqBz/B,KAAKs+B,cAAc,EACxDt+B,KAAKqO,OAAO0wB,IAAIW,GAAqB1/B,KAAK2/B,cAAc,EACxD3/B,KAAKqO,OAAO0wB,IAAI/V,GAAsBhpB,KAAKw+B,eAAe,EAC1Dx+B,KAAKqO,OAAO0wB,IAAI3U,GAAqBpqB,KAAKy+B,cAAc,EACxDz+B,KAAKqO,OAAO0wB,IAAIa,GAAuB5/B,KAAK6/B,qBAAqB,EACjE7/B,KAAKqO,OAAO0wB,IAAIe,GAAkB9/B,KAAK+/B,aAAa,EACpD//B,KAAKqO,OAAO0wB,IAAIhjB,GAAkB/b,KAAKggC,WAAW,EAClDhgC,KAAKqO,OAAO0wB,IAAIjhB,GAAiB9d,KAAKigC,UAAU,EAChDjgC,KAAKqO,OAAO0wB,IAAIzvB,GAAoBtP,KAAKkgC,aAAa,EACtDlgC,KAAKqO,OAAO0wB,IAAInf,GAAiB5f,KAAKq7B,UAAU,EAChDr7B,KAAKqO,OAAO0wB,IAAIoB,EAAoBngC,KAAKogC,aAAa,EACtDpgC,KAAKqO,OAAO0wB,IAAIsB,GAAsBrgC,KAAK2+B,eAAe,EAC1D3+B,KAAKqO,OAAO0wB,IAAI1gB,GAAiBre,KAAKsgC,UAAU,EAChDtgC,KAAKqO,OAAO0wB,IAAIwB,GAA4BvgC,KAAK4+B,qBAAqB,EACtE5+B,KAAKqO,OAAO0wB,IAAIyB,GAAkBxgC,KAAKw9B,aAAa,IAExDnH,EAAen2B,UAAUs5B,iBAAmB,WACxCx5B,KAAKqO,OAAOoyB,GAAGtvB,GAAmBnR,KAAK6+B,aAAc7+B,IAAI,EACzDA,KAAKqO,OAAOoyB,GAAGvlB,EAAoBlb,KAAK88B,cAAe98B,IAAI,EAC3DA,KAAKqO,OAAOoyB,GAAGrV,GAAkBprB,KAAK+8B,YAAa/8B,IAAI,EACvDA,KAAKqO,OAAOoyB,GAAGzsB,GAAmBhU,KAAKq9B,aAAcr9B,IAAI,EACzDA,KAAKqO,OAAOoyB,GAAGzB,GAAqBh/B,KAAKi9B,eAAgBj9B,IAAI,EAC7DA,KAAKqO,OAAOoyB,GAAGhV,EAAoBzrB,KAAKw9B,cAAex9B,IAAI,EAC3DA,KAAKqO,OAAOoyB,GAAGvR,GAAmBlvB,KAAKm9B,aAAcn9B,IAAI,EACzDA,KAAKqO,OAAOoyB,GAAG1kB,GAAkB/b,KAAKggC,YAAahgC,IAAI,EACvDA,KAAKqO,OAAOoyB,GAAG3U,GAAkB9rB,KAAKo9B,YAAap9B,IAAI,EACvDA,KAAKqO,OAAOoyB,GAAGhvB,EAAqBzR,KAAKm8B,eAAgBn8B,IAAI,EAC7DA,KAAKqO,OAAOoyB,GAAGjuB,GAAexS,KAAK0+B,SAAU1+B,IAAI,EACjDA,KAAKqO,OAAOoyB,GAAGxB,GAAiBj/B,KAAK29B,WAAY39B,IAAI,EACrDA,KAAKqO,OAAOoyB,GAAGlB,GAAmBv/B,KAAKs9B,aAAct9B,IAAI,EACzDA,KAAKqO,OAAOoyB,GAAG/U,EAAkB1rB,KAAKw9B,cAAex9B,IAAI,EACzDA,KAAKqO,OAAOoyB,GAAGrsB,GAAgBpU,KAAKw9B,cAAex9B,IAAI,EACvDA,KAAKqO,OAAOoyB,GAAGvB,EAAqBl/B,KAAKm/B,kBAAmBn/B,IAAI,EAChEA,KAAKqO,OAAOoyB,GAAGrB,GAAmBp/B,KAAKq/B,aAAcr/B,IAAI,EACzDA,KAAKqO,OAAOoyB,GAAG3Q,GAAsB9vB,KAAKs/B,gBAAiBt/B,IAAI,EAC/DA,KAAKqO,OAAOoyB,GAAG1J,GAAmB/2B,KAAK69B,aAAc79B,IAAI,EACzDA,KAAKqO,OAAOoyB,GAAGjB,GAAsBx/B,KAAK89B,gBAAiB99B,IAAI,EAC/DA,KAAKqO,OAAOoyB,GAAGhB,GAAqBz/B,KAAKs+B,eAAgBt+B,IAAI,EAC7DA,KAAKqO,OAAOoyB,GAAGf,GAAqB1/B,KAAK2/B,eAAgB3/B,IAAI,EAC7DA,KAAKqO,OAAOoyB,GAAGzX,GAAsBhpB,KAAKw+B,gBAAiBx+B,IAAI,EAC/DA,KAAKqO,OAAOoyB,GAAGrW,GAAqBpqB,KAAKy+B,eAAgBz+B,IAAI,EAC7DA,KAAKqO,OAAOoyB,GAAG7gB,GAAiB5f,KAAKq7B,WAAYr7B,IAAI,EACrDA,KAAKqO,OAAOoyB,GAAGN,EAAoBngC,KAAKogC,cAAepgC,IAAI,EAC3DA,KAAKqO,OAAOoyB,GAAGb,GAAuB5/B,KAAK6/B,sBAAuB7/B,IAAI,EACtEA,KAAKqO,OAAOoyB,GAAGX,GAAkB9/B,KAAK+/B,cAAe//B,IAAI,EACzDA,KAAKqO,OAAOoyB,GAAG3iB,GAAiB9d,KAAKigC,WAAYjgC,IAAI,EACrDA,KAAKqO,OAAOoyB,GAAGnxB,GAAoBtP,KAAKkgC,cAAelgC,IAAI,EAC3DA,KAAKqO,OAAOoyB,GAAGJ,GAAsBrgC,KAAK2+B,gBAAiB3+B,IAAI,EAC/DA,KAAKqO,OAAOoyB,GAAGpiB,GAAiBre,KAAKsgC,WAAYtgC,IAAI,EACrDA,KAAKqO,OAAOoyB,GAAGF,GAA4BvgC,KAAK4+B,sBAAuB5+B,IAAI,EAC3EA,KAAKqO,OAAOoyB,GAAGD,GAAkBxgC,KAAKw9B,cAAex9B,IAAI,GAE7Dq2B,EAAen2B,UAAUo/B,gBAAkB,WAAct/B,KAAKq+B,cAAgB,CAAA,EAAMr+B,KAAKkzB,aAAe,CAAA,GACxGmD,EAAen2B,UAAUy/B,eAAiB,SAAUvuB,GAC5CpR,KAAKqO,OAAOmB,eAAiBxP,KAAKu7B,kBAC9B1c,EAAMhO,UAAQO,EAAK9Q,OAAQ,IAAI,EACnCN,KAAKqO,OAAOiD,SAAW,CAACtR,KAAKo7B,cAAcvc,CAAG,KAGtDwX,EAAen2B,UAAUkgC,cAAgB,WACjCpgC,KAAKqO,OAAOmB,eAAiBxP,KAAKu7B,kBACO,IAArCv7B,KAAKqO,OAAO+B,cAAczP,OAC1BX,KAAKk9B,qBAGLl9B,KAAKqO,OAAOiD,SAAW,CAACjF,WAASrM,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAAIX,KAAKqO,OAAOI,QAAQ,KAIpH4nB,EAAen2B,UAAU8/B,YAAc,WAC/BhgC,KAAKqO,OAAOmB,eAAiBxP,KAAKu7B,kBAClCv7B,KAAKqO,OAAOiD,SAAuC,KAA3BtR,KAAKqO,OAAOuN,WAAqB,CAAClJ,EAAc1S,KAAKqO,MAAM,GAC/E,CAACrO,KAAKo7B,cAActtB,SAAO,YAAa9N,KAAKkN,OAAO,CAAC,KAGjEmpB,EAAen2B,UAAUggC,cAAgB,WACrC,GAAIlgC,KAAKqO,OAAOmB,eAAiBxP,KAAKu7B,gBAAiB,CACnD,IAAIpE,EAAYn3B,KAAKkN,QAAQuD,iBAAiB,IAAM4oB,CAAU,EAC9Dr5B,KAAKqO,OAAOyB,cAAgB,GAC5B9P,KAAKqO,OAAOgB,eAAiB,GAC7B,IAAK,IAAIrO,EAAI,EAAGA,EAAIm2B,EAAUx2B,OAAQK,CAAC,GACnChB,KAAKqO,OAAOgB,eAAe/B,KAAK6pB,EAAUn2B,EAAE,EAC5ChB,KAAKqO,OAAOyB,cAAcxC,KAAKtN,KAAKo7B,cAAcjE,EAAUn2B,EAAE,CAAC,IAI3Eq1B,EAAen2B,UAAU+/B,WAAa,SAAU7uB,GACnB,eAArBpR,KAAKqO,OAAOgF,OACZrT,KAAKk5B,iBAAmB,CAAA,EACpBl5B,KAAKqO,OAAO1B,OAAS3M,KAAKqO,OAAO2W,iBACjChlB,KAAKqO,OAAO1B,OAASoQ,GAAiB/c,KAAKqO,OAAQ+C,CAAI,GAAKpR,CAAAA,KAAKqO,OAAOxB,OACxE7M,KAAKw9B,cAAcpsB,CAAI,IAInCilB,EAAen2B,UAAUogC,WAAa,SAAUlvB,GACnB,eAArBpR,KAAKqO,OAAOgF,OACZrT,KAAKk5B,iBAAmB,CAAA,EACxBl5B,KAAKw9B,cAAcpsB,CAAI,IAG/BilB,EAAen2B,UAAUi/B,kBAAoB,SAAUjS,GACnD,IAAIwT,EACJ,GAAIxT,EAAE7S,SAAWra,KAAKu7B,iBAAgC,WAAbrO,EAAE7S,OAG3C,IAAK,IAAIsmB,EAAK,EAAGC,EAAKrhC,OAAOkiB,KAAKyL,EAAE2T,OAAO,EAAGF,EAAKC,EAAGjgC,OAAQggC,CAAE,GAE5D,OADWC,EAAGD,IAEV,IAAK,mBACD3gC,KAAK+4B,gBACL,MACJ,IAAK,gBACD/4B,KAAKq+B,cAAgB,CAAA,EACrBr+B,KAAKkzB,aAAe,CAAA,EACpBwN,EAAkBj0B,oBAAMzM,KAAKqO,OAAO+B,aAAa,EAAI,GAAKpQ,KAAKqO,OAAO+B,cAAcyoB,MAAM,CAAC,EAC3F6H,EAAkB1gC,KAAKqO,OAAOyyB,oBAAsBJ,EAChDA,EAAgB7H,MAAM6H,EAAgB//B,OAAS,CAAC,EACpDX,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACrDpQ,KAAKs+B,iBACDoC,EAAgB//B,QAChBX,KAAKm5B,YAAYuH,CAAe,EAEpC1gC,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAepQ,KAAKqO,OAAO+B,eAAiB,CAAA,CAAI,EAC5EpQ,KAAKq+B,cAAgB,CAAA,EACrBr+B,KAAKkzB,aAAe,CAAA,EACpB,MACJ,IAAK,gBACDpf,GAAQ9T,KAAKqO,MAAM,EACnB,MACJ,IAAK,oBAGL,IAAK,kBACDmD,EAAKxR,KAAKqO,OAAQod,EAAoBzrB,KAAKqO,OAAO1B,IAAI,EACtD,MACJ,IAAK,sBACL,IAAK,qBACwB,eAArB3M,KAAKqO,OAAOgF,MAGhBS,GAAQ9T,KAAKqO,MAAM,EACnB,MACJ,IAAK,OACD+E,GAAapT,KAAKqO,OAAQ,YAAY,IAKtDgoB,EAAen2B,UAAUkJ,QAAU,WAC3BpJ,KAAKqO,OAAOywB,cAGhB9+B,KAAK82B,sBACD92B,KAAK42B,SACL52B,KAAK62B,eAET72B,KAAKw2B,UAAY,KACjBx2B,KAAKy4B,aAAe,OAExBpC,EAAen2B,UAAUu5B,WAAa,WAClCz5B,KAAK+gC,eAAe,CAAA,CAAI,EACxB/gC,KAAKghC,eAAiB,IAAIC,iBAAejhC,KAAKkN,QAAS,CACnDg0B,UAAWlhC,KAAKmhC,iBAAiBlS,KAAKjvB,IAAI,EAC1CohC,WAAYphC,KAAKohC,WACjBnmB,UAAW,QACd,EACDjb,KAAKqhC,mBAAqB,IAAIJ,iBAAejhC,KAAKkN,QAAS,CACvDg0B,UAAWlhC,KAAKshC,qBAAqBrS,KAAKjvB,IAAI,EAC9CohC,WAAYphC,KAAKohC,WACjBnmB,UAAW,UACd,EACDsmB,eAAajxB,IAAItQ,KAAKkN,QAAS,YAAalN,KAAKwhC,YAAaxhC,IAAI,GAEtEq2B,EAAen2B,UAAU22B,aAAe,WACpC72B,KAAK+gC,eAAe,CAAA,CAAK,EACzBQ,eAAa5wB,OAAO3Q,KAAKkN,QAAS,YAAalN,KAAKwhC,WAAW,EAC/DxhC,KAAKghC,eAAe53B,UACpBpJ,KAAKqhC,mBAAmBj4B,WAG5BitB,EAAen2B,UAAUshC,YAAc,SAAUtU,GACzCuU,EAAY5wB,UAAQqc,EAAE5sB,OAAQ,cAAc,EAChDsO,EAAW5O,KAAKqO,OAAQ,OAAO,EACb,OAAdozB,GACAA,EAAUxzB,UAAUqC,IAAII,EAAS,GAGzC2lB,EAAen2B,UAAU6gC,eAAiB,SAAUW,GAChD,IAAIxH,EAAQl6B,KACR0hC,EACA1hC,KAAK2hC,SAAW,IAAIC,QAAM5hC,KAAKkN,QAAS,CACpC20B,IAAK,SAAUC,GACP5H,EAAM7rB,OAAO0zB,UACb7H,EAAM8H,SAAWF,EAAIE,SACrB9H,EAAM+H,SAAWH,EACjB5gB,WAAW,WACc,EAAjBgZ,EAAM8H,UACN9H,EAAMgI,YAAYhI,EAAM+H,QAAQ,EAEpC/H,EAAM8H,SAAW,GAClB,GAAG,GAGe,IAAjBF,EAAIE,UAA8C,IAA5BF,EAAIK,cAActN,MACxCqF,EAAMkI,gBAAgBN,CAAG,EAGzB5H,EAAMmI,aAAaP,CAAG,GAIlCQ,QAAS,SAAUpV,GACXgN,EAAM7rB,OAAO0zB,WACb7H,EAAMqI,YAAcrI,CAAAA,CAAAA,EAAM7rB,OAAOyyB,oBAC7B5G,EAAM7rB,OAAOyyB,qBACb0B,WAAS,CAACtI,EAAM7rB,OAAOnB,SAAUu1B,EAAgB,EAErDvI,EAAMmI,aAAanV,CAAC,IAG/B,EAGGltB,KAAK2hC,UACL3hC,KAAK2hC,SAASv4B,WAI1BitB,EAAen2B,UAAUgiC,YAAc,SAAUJ,GAC7C,IAAIxhC,EAASwhC,EAAIK,cAAc7hC,OAC3B6U,EAAOtE,UAAQvQ,EAAQ,IAAMuN,CAAa,EAC1C7N,KAAKuiC,aAAejiC,EAAO2N,UAAUC,SAAS+qB,EAAe,GAAKxsB,oBAAM0I,CAAI,EAC5EnV,KAAKqiC,aAAaP,CAAG,GAGrB9hC,KAAKqO,OAAOuT,OAAS,CAAA,EACrB5hB,KAAK0iC,WAAWvtB,CAAI,EACfnV,KAAKqO,OAAOuT,OAGS,IAAjBkgB,EAAIE,UACThiC,KAAKqiC,aAAaP,CAAG,EACrB9hC,KAAKoiC,gBAAgBN,CAAG,GAGxB9hC,KAAKqiC,aAAaP,CAAG,EAPrB9hC,KAAKoiC,gBAAgBN,CAAG,IAWpCzL,EAAen2B,UAAUmiC,aAAe,SAAUnV,GAC9C,IAAI5sB,EAAS4sB,EAAEiV,cAAc7hC,OAC7BsO,EAAW5O,KAAKqO,OAAQ,OAAO,EAC/BrO,KAAKk+B,YAAY59B,EAAQ4sB,EAAEiV,aAAa,EACxCniC,KAAKqO,OAAOmB,aAAe,kBAS/B6mB,EAAen2B,UAAUg+B,YAAc,SAAU59B,EAAQ4sB,GACrD,IAAI/X,EAAOtE,UAAQvQ,EAAQ,IAAMuN,CAAa,EAC1C80B,EAAQriC,EAAO2N,UAEfkB,GADJnP,KAAKqO,OAAOuT,OAAS,CAAA,EACR,UACb,GAAgB,IAAZsL,EAAE2H,OAAe,CAACpoB,oBAAM0I,CAAI,GAAKA,EAAKlH,UAAUC,SAASmrB,CAAU,EACnEr5B,KAAK4iC,UAAUztB,CAAI,EACnBnV,KAAK0iC,WAAWvtB,CAAI,MAFxB,CAKK,GAAK1I,oBAAM0I,CAAI,EAsDZnV,KAAKqO,OAAO+B,cAAczP,SAAWX,KAAK44B,SAASj4B,SACnDX,KAAK6iC,kBAAoB,CAAA,GAE7B7iC,KAAKu+B,sBAhDL,GARIv+B,KAAKqO,OAAOyyB,qBAAuB3rB,EAAKlH,UAAUC,SAASmrB,CAAU,IACjEnM,EAAEiR,SAAW79B,EAAO2N,UAAUC,SAAS40B,EAAS,KACpD3zB,EAAS,YAET+d,EAAEiR,SAAWjR,EAAEkR,WACfp+B,KAAK6iC,kBAAoB,CAAA,GAGI,CAAA,IADT7iC,KAAK+iC,iBAAiB5zB,EAAQgG,CAAI,EACpCgK,OAAiB,CAMnC,GALMnf,KAAKqO,OAAOyyB,sBAAyB9gC,KAAKuiC,aAAgBrV,CAAAA,GAAMA,EAAEiR,UAChEwE,EAAMz0B,SAAS80B,EAAS,IAC5BhjC,KAAK0iC,WAAWvtB,CAAI,EACpBnV,KAAKg9B,eAELh9B,KAAKqO,OAAOyyB,qBAAuB5T,EAAEkR,SAAU,CACzClR,GAAKA,EAAEiR,SACTn+B,KAAKg9B,cAEJh9B,KAAKw2B,YACNx2B,KAAKw2B,UAAYrhB,GAErB,IAAI8tB,EAAajjC,KAAK44B,SAASjkB,QAAQ3U,KAAKw2B,SAAS,EACjD0M,EAAWljC,KAAK44B,SAASjkB,QAAQQ,CAAI,EACzC,GAAiB+tB,EAAbD,EACA,IAAK,IAAIjiC,EAAIiiC,EAAiBC,GAALliC,EAAeA,CAAC,GACrChB,KAAK4iC,UAAU5iC,KAAK44B,SAAS53B,EAAE,OAInC,IAASA,EAAIiiC,EAAYjiC,GAAKkiC,EAAUliC,CAAC,GACrChB,KAAK4iC,UAAU5iC,KAAK44B,SAAS53B,EAAE,EAGvChB,KAAKmjC,SAASnjC,KAAK44B,SAASsK,EAAS,OAGrCljC,KAAKw2B,UAAYrhB,EACbnV,KAAKqO,OAAOyyB,qBAAuB3rB,EAAKlH,UAAUC,SAASmrB,CAAU,EACrEr5B,KAAK0O,aAAayG,CAAI,EAGtBnV,KAAK4iC,UAAUztB,CAAI,EAEvBnV,KAAKmjC,SAAShuB,CAAI,EAEmB,IAArCnV,KAAKqO,OAAO+B,cAAczP,QAC1BX,KAAK02B,mBAET12B,KAAKqO,OAAOW,OAAO8b,EAAyB,EAAE,EAC9C9qB,KAAKojC,cAAcj0B,EAAQgG,CAAI,EASlC1I,oBAAM0I,CAAI,IACXnV,KAAK6iC,kBAAoB,CAAA,EACzB7iC,KAAK0iC,WAAWvtB,CAAI,KAG5BkhB,EAAen2B,UAAUkiC,gBAAkB,SAAUlV,GACjDltB,KAAKqO,OAAOmB,aAAe,iBACvBlP,EAAS4sB,EAAEiV,cAAc7hC,OAC7BN,KAAK49B,aAAat9B,CAAM,GAE5B+1B,EAAen2B,UAAUq+B,eAAiB,WACtCv+B,KAAKg9B,cACLh9B,KAAK02B,mBACL12B,KAAKqO,OAAOW,OAAO8b,EAAyB,EAAE,GAElDuL,EAAen2B,UAAUw2B,iBAAmB,WACxC12B,KAAKuiC,YAAc,CAAA,EACnBc,cAAY,CAACrjC,KAAKqO,OAAOnB,SAAUu1B,EAAgB,GAEvDpM,EAAen2B,UAAU09B,aAAe,SAAUt9B,GAC9C,IAQQgjC,EARJpJ,EAAQl6B,KACRyM,oBAAMnM,CAAM,IAGZ6U,EAAOtE,UAAQvQ,EAAQ,IAAMuN,CAAa,EAC9C7N,KAAKqO,OAAOuT,OAAS,CAAA,EAChBnV,oBAAM0I,CAAI,KACXnV,KAAK0iC,WAAWvtB,CAAI,EAEfpB,GADDuvB,EAAYtjC,KAAKo7B,cAAcjmB,CAAI,CACX,EAK5BnV,KAAKqO,OAAOoH,QAAQ,WADJ,CAAE0J,OAAQ,CAAA,EAAOxJ,YAAa2tB,EAAWjpB,OAAQ,kBACtB,SAAUkpB,GACjD,IAOgBj1B,EAPXi1B,EAAapkB,SACV/S,EAAOC,WAAS,OAAQi3B,CAAS,EAChCpJ,EAAM7rB,OAAOuT,OAmBHpN,GAAS8uB,CAAS,IAChBxuB,KACLU,EAASN,GAAYglB,EAAM7rB,OAAQi1B,CAAS,EAChDvO,GAAkBmF,EAAM7rB,OAAQjC,EAAMoJ,CAAM,IApBpC,KADF0kB,EAAM7rB,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAC1CiqB,EAAM7rB,OAAO6B,WAW5BkL,GAAiB8e,EAAM7rB,OAAQi1B,CAAS,GAVpCh3B,EAAKD,WAAS,KAAMi3B,CAAS,EACjCpJ,EAAM7rB,OAAOyO,QAAUod,EAAM7rB,OAAO1B,KAChC2B,EAAU4rB,EAAM7rB,OAAO1B,MAAQF,oBAAMH,CAAE,EAAIF,EAAOE,GAAM,IAC5D4tB,EAAM7rB,OAAO3B,cAAc,CAAEC,KAAM2B,GAAW,CAAA,CAAI,EAClD4rB,EAAM7rB,OAAOrB,UAAUM,KAAKlB,CAAI,EAChC8tB,EAAM7rB,OAAOvB,OAAOQ,KAAKjB,WAAS,SAAUi3B,CAAS,CAAC,EACtDpJ,EAAM7rB,OAAOiD,SAAW,CAACgyB,GACzBnvB,GAAW+lB,EAAM7rB,MAAM,GAK3B6rB,EAAM7rB,OAAO6B,WAAa,CAAA,EAC1BgqB,EAAM7rB,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,IAUjE,EAjCG6D,EAAmBjU,KAAKqO,OAAQi1B,EAAWpvB,EAAqB,IAoC5EmiB,EAAen2B,UAAUwiC,WAAa,SAAUvtB,GACxCquB,EAAS11B,SAAO,IAAMmH,GAAYE,CAAI,EAC1CnV,KAAKqO,OAAOuT,OAASnV,CAAAA,CAAAA,oBAAM+2B,CAAM,GAGrCnN,EAAen2B,UAAUohC,qBAAuB,SAAUpU,GACtD,GAAKltB,KAAK45B,WAGV,OAAQ1M,EAAE/d,QACN,IAAK,MACL,IAAK,OACL,IAAK,WACL,IAAK,WACL,IAAK,YACL,IAAK,SACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,WACL,IAAK,YACL,IAAK,SACL,IAAK,WACL,IAAK,YACL,IAAK,SACL,IAAK,WACL,IAAK,YACL,IAAK,SACL,IAAK,YACL,IAAK,aACL,IAAK,UACL,IAAK,QACL,IAAK,YACL,IAAK,aACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,MACL,IAAK,MACL,IAAK,WACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,KACL,IAAK,QACD+d,EAAEkH,mBAOdiC,EAAen2B,UAAUihC,iBAAmB,SAAUjU,GAClD,IAAIgN,EAAQl6B,KACZ,GAAKA,KAAK45B,WAAV,CAGA,IAAI6J,EAAQzjC,KAAK0jC,iBACbC,EAAY3jC,KAAKg+B,eACjBD,EAAW/9B,KAAKi+B,cACpB,OAAQ/Q,EAAE/d,QACN,IAAK,MACGnP,KAAKqO,OAAOiqB,sBACZt4B,KAAKg9B,cACLh9B,KAAKkN,QAAQoU,kBAAkBsiB,SAAS,EAAG5jC,KAAKkN,QAAQoU,kBAAkBuiB,YAAY,EACtF3iB,WAAW,WACPgZ,EAAM4J,aAAa5J,EAAMtB,SAASsB,EAAMtB,SAASj4B,OAAS,EAAE,GAC7D,EAAE,GAGLX,KAAK8jC,aAAa/F,CAAQ,EAE9B,MACJ,IAAK,OACG/9B,KAAKqO,OAAOiqB,sBACZt4B,KAAKg9B,cACLh9B,KAAKkN,QAAQoU,kBAAkByiB,UAAY,EAC3C7iB,WAAW,WACPgZ,EAAM4J,aAAa5J,EAAMtB,SAAS,EAAE,GACrC,EAAE,GAGL54B,KAAK8jC,aAAaH,CAAS,EAE/B,MACJ,IAAK,MACIl3B,oBAAMg3B,CAAK,EAGNh3B,oBAAMk3B,CAAS,GACrB3jC,KAAKmjC,SAASQ,CAAS,EAHvB3jC,KAAKmjC,SAASM,CAAK,EAKvB,MACJ,IAAK,WACDzjC,KAAKgkC,aAAaP,EAAO,CAAA,CAAI,EAC7B,MACJ,IAAK,WACDzjC,KAAKikC,cAAcR,EAAO,CAAA,CAAK,EAC/B,MACJ,IAAK,YACDzjC,KAAKikC,cAAcR,EAAO,CAAA,CAAI,EAC9B,MACJ,IAAK,SACDzjC,KAAKgkC,aAAaP,EAAO,CAAA,CAAK,EAC9B,MACJ,IAAK,UACL,IAAK,WACL,IAAK,QACDzjC,KAAKkkC,SAASnG,EAAU7Q,CAAC,EACzB,MACJ,IAAK,WACL,IAAK,YACL,IAAK,SACDltB,KAAKmkC,UAAUR,EAAWzW,CAAC,EAC3B,MACJ,IAAK,WACL,IAAK,YACL,IAAK,SACDltB,KAAKokC,UAAUX,EAAOvW,CAAC,EACvB,MACJ,IAAK,WACL,IAAK,YACL,IAAK,SACDltB,KAAKqkC,UAAUZ,EAAOvW,CAAC,EACvB,MACJ,IAAK,YACL,IAAK,aACL,IAAK,UACDltB,KAAKskC,WAAWb,EAAOvW,CAAC,EACxB,MACJ,IAAK,SACL,IAAK,UACL,IAAK,OACDltB,KAAKukC,QAAQd,EAAOvW,CAAC,EACrB,MACJ,IAAK,QACDltB,KAAKwkC,SAASf,CAAK,EACnB,MACJ,IAAK,YACL,IAAK,aACL,IAAK,UACIh3B,oBAAMg3B,CAAK,GACZzjC,KAAKk+B,YAAYuF,EAAOvW,CAAC,EAE7B,MACJ,IAAK,QACDltB,KAAKykC,SAASd,EAAW5F,CAAQ,EACjC,MACJ,IAAK,QACD/9B,KAAK49B,aAAa59B,KAAKqO,OAAOkoB,aAAwCv2B,KAAK0kC,gBAAgB,EAC3F,MACJ,IAAK,WACD1kC,KAAKqO,OAAOW,OAAOmxB,EAAoB,EAAE,EACzChb,GAAWnlB,KAAKqO,OAAQrO,KAAKqO,OAAO+B,cAAepQ,KAAKqO,OAAO1B,KAAM,SAAS,EAC9E,MACJ,IAAK,MACD+B,GAAa1O,KAAKqO,MAAM,EACxB,MACJ,IAAK,MACL,IAAK,WACDrO,KAAK2kC,gBACL,MACJ,IAAK,QACDtwB,GAAUrU,KAAKqO,MAAM,EACrB,MACJ,IAAK,QACDrO,KAAKqO,OAAOuN,WAAa,GACzBF,GAAa1b,KAAKqO,MAAM,EACxB,MACJ,IAAK,QACDkG,GAASvU,KAAKqO,MAAM,EACpB,MACJ,IAAK,KACDrO,KAAK4kC,gBACL,MACJ,IAAK,QACD5kC,KAAKiiB,aACL,MACJ,IAAK,OACDjiB,KAAKqO,OAAOw2B,sBAIxBxO,EAAen2B,UAAU+hB,WAAa,WAClCjiB,KAAKk9B,qBACLjb,GAAWjiB,KAAKqO,MAAM,GAE1BgoB,EAAen2B,UAAUykC,cAAgB,WACrC,GAAI3kC,KAAKqO,OAAO+B,eAAoD,EAAnCpQ,KAAKqO,OAAO+B,cAAczP,OAAY,CACnEX,KAAKk9B,qBAEL,IADA,IAAI76B,EAAOrC,KAAKqO,OAAOiD,SACdtQ,EAAI,EAAGA,EAAIqB,EAAK1B,OAAQK,CAAC,GAC9B,GAAI,CAAC+gB,EAAc1f,EAAKrB,EAAE,EAEtB,OADAiT,KAAAA,EAAmBjU,KAAKqO,OAAQhM,EAAKrB,GAAIghB,CAAqB,EAItE/F,EAAajc,KAAKqO,OAAQ,QAAQ,IAG1CgoB,EAAen2B,UAAU0kC,cAAgB,WACI,IAArC5kC,KAAKqO,OAAO+B,cAAczP,SAC1BX,KAAKu9B,mBACLzb,GAAS9hB,KAAKqO,MAAM,IAG5BgoB,EAAen2B,UAAUq9B,iBAAmB,WACxC,IAAIpoB,EAAOrH,SAAO,IAAMD,EAAgB,IAAMwrB,EAAYr5B,KAAKkN,OAAO,EAClE7K,EAAOrC,KAAKo7B,cAAcjmB,CAAI,EAClCuM,GAAmB1hB,KAAKqO,OAAQhM,CAAI,GAExCg0B,EAAen2B,UAAUwkC,eAAiB,WACtC,IAAIvvB,EAAOnV,KAAKqO,OAAO+B,cAAcpQ,KAAKqO,OAAO+B,cAAczP,OAAS,GACpEy7B,EAAUp8B,KAAKq8B,WAAW,CAAClnB,GAAOnV,KAAKqO,OAAOxB,KAAK,EACvD,OAAO7M,KAAK44B,SAASwD,EAAQ,KAEjC/F,EAAen2B,UAAUwjC,eAAiB,WACtC,OAAO51B,SAAO,IAAMD,EAAgB,IAAMi3B,GAAW9kC,KAAKkN,OAAO,GAErEmpB,EAAen2B,UAAU6kC,cAAgB,WACrC,OAAOj3B,SAAO,IAAMD,EAAgB,IAAMwrB,EAAYr5B,KAAKkN,OAAO,GAEtEmpB,EAAen2B,UAAU89B,aAAe,WACpC,OAAOh+B,KAAK44B,SAAS,IAEzBvC,EAAen2B,UAAU+9B,YAAc,WACnC,OAAOj+B,KAAK44B,SAAS54B,KAAK44B,SAASj4B,OAAS,IAEhD01B,EAAen2B,UAAU4jC,aAAe,SAAU3uB,GAC9CnV,KAAKm7B,SAAShmB,CAAI,GAEtBkhB,EAAen2B,UAAU8jC,aAAe,SAAUP,EAAOuB,GACjDC,EAAQjlC,KAAKklC,YAAYzB,EAAOuB,EAAWhlC,KAAKmlC,MAAM,EAC1DnlC,KAAKm7B,SAAS8J,CAAK,GAEvB5O,EAAen2B,UAAU+jC,cAAgB,SAAUR,EAAOuB,GAClDC,EAAQjlC,KAAKklC,YAAYzB,EAAOuB,CAAS,EAC7ChlC,KAAKm7B,SAAS8J,CAAK,GAEvB5O,EAAen2B,UAAUglC,YAAc,SAAUE,EAAIJ,EAAWG,GAC5D,GAAI14B,oBAAM24B,CAAE,EACR,OAAOplC,KAAK0jC,kBAAoB1jC,KAAK+kC,iBAAmB/kC,KAAKg+B,eAEjE,IAAIjX,EAAQ/mB,KAAK44B,SAASjkB,QAAQywB,CAAE,EAEpC,EAAG,CAQC,IAGQvB,EATJ9c,EADAie,EACQG,EAASpe,EAAQoe,EAASpe,EAAQ,EAGlCoe,EAASpe,EAAQoe,EAASpe,EAAQ,EAE9Cse,EAAWrlC,KAAK44B,SAAS7R,GAOzB,GANI/mB,KAAKqO,OAAOiqB,sBAAwB7rB,oBAAM44B,CAAQ,IAC9CC,EAAc/2B,SAAS8Q,OAAOyW,iBAAiB91B,KAAK44B,SAAS,EAAE,EAAE2M,iBAAiB,YAAY,EAAG,EAAE,EACnGh3B,SAAS8Q,OAAOyW,iBAAiB91B,KAAK44B,SAAS,EAAE,EAAE2M,iBAAiB,eAAe,EAAG,EAAE,EACxF1B,EAAe7jC,KAAK44B,SAAS,GAAG/X,wBAAwBuU,OAASkQ,EACrEtlC,KAAKkN,QAAQoU,kBAAkBsiB,SAAS5jC,KAAKkN,QAAQoU,kBAAkByiB,UAAW/jC,KAAKkN,QAAQoU,kBAAkByiB,UAAYF,CAAY,GAEzIp3B,oBAAM44B,CAAQ,EACd,OAAOD,QAEN,CAACI,YAAUH,CAAQ,GAC5B,OAAOA,GAEXhP,EAAen2B,UAAUi7B,SAAW,SAAUkK,GACrC54B,oBAAM44B,CAAQ,GAEkB,CAAA,IADTrlC,KAAK+iC,iBAAiB,SAAUsC,CAAQ,EAC1ClmB,SAClBnf,KAAKw2B,UAAY6O,EACjBrlC,KAAKg9B,cACLh9B,KAAK4iC,UAAUyC,CAAQ,EACvBrlC,KAAKmjC,SAASkC,CAAQ,EACtBrlC,KAAKqO,OAAOW,OAAO8b,EAAyB,EAAE,EAC9C9qB,KAAKojC,cAAc,SAAUiC,CAAQ,IAIjDhP,EAAen2B,UAAUskC,SAAW,SAAUf,GACrCh3B,oBAAMg3B,CAAK,GAAMA,EAAMx1B,UAAUC,SAASmrB,CAAU,GAEpB,CAAA,IADTr5B,KAAK+iC,iBAAiB,SAAUU,CAAK,EACvCtkB,SAClBnf,KAAK4iC,UAAUa,CAAK,EACpBzjC,KAAKqO,OAAOW,OAAO8b,EAAyB,EAAE,EAC9C9qB,KAAKojC,cAAc,SAAUK,CAAK,IAI9CpN,EAAen2B,UAAUukC,SAAW,SAAUd,EAAW5F,GACrD,IAIQ0H,EACAC,EALJ1lC,KAAKqO,OAAOyyB,qBAAuB,CAACr0B,oBAAMk3B,CAAS,IACnD3jC,KAAKw2B,UAAYmN,EAGb8B,GADAE,EAAW3lC,KAAKkN,QAAQ6K,cAAc,IAAMkhB,EAAe,GACvC8K,UACpB2B,EAAoB1lC,KAAK0jC,iBAC7B1jC,KAAKk+B,YAAYH,EAJH,CAAEI,QAAS,CAAA,EAAMC,SAAU,CAAA,EAIP,EAClCuH,EAAS5B,UAAY0B,EAChBh5B,oBAAMi5B,CAAiB,GACxB1lC,KAAKmjC,SAASuC,CAAiB,IAI3CrP,EAAen2B,UAAUgkC,SAAW,SAAUnG,EAAU7Q,GAC/CltB,KAAKqO,OAAOyyB,oBAGPr0B,oBAAMsxB,CAAQ,IACH,YAAb7Q,EAAE/d,OACFnP,KAAKmjC,SAASpF,CAAQ,EAGtB/9B,KAAKk+B,YAAYH,EAAU7Q,CAAC,GAPhCltB,KAAK8jC,aAAa/F,CAAQ,GAWlC1H,EAAen2B,UAAUikC,UAAY,SAAUR,EAAWzW,GACjDltB,KAAKqO,OAAOyyB,oBAGPr0B,oBAAMk3B,CAAS,IACJ,aAAbzW,EAAE/d,OACFnP,KAAKmjC,SAASQ,CAAS,EAGvB3jC,KAAKk+B,YAAYyF,EAAWzW,CAAC,GAPjCltB,KAAK8jC,aAAaH,CAAS,GAWnCtN,EAAen2B,UAAUkkC,UAAY,SAAUX,EAAOvW,GAClD,IAIQ0Y,EAJH5lC,KAAKqO,OAAOyyB,qBAIT8E,EAAQ5lC,KAAKklC,YAAYzB,EAAO,CAAA,EAAMzjC,KAAKmlC,MAAM,EAChD14B,oBAAMm5B,CAAK,IACK,aAAb1Y,EAAE/d,OACFnP,KAAKmjC,SAASyC,CAAK,EAGnB5lC,KAAKk+B,YAAY0H,EAAO1Y,CAAC,IATjCltB,KAAKgkC,aAAaP,EAAO,CAAA,CAAI,GAcrCpN,EAAen2B,UAAUmkC,UAAY,SAAUZ,EAAOvW,GAClD,IAIQ2Y,EAJH7lC,KAAKqO,OAAOyyB,qBAIT+E,EAAQ7lC,KAAKklC,YAAYzB,EAAO,CAAA,CAAK,EACpCh3B,oBAAMo5B,CAAK,IACK,aAAb3Y,EAAE/d,OACFnP,KAAKmjC,SAAS0C,CAAK,EAGnB7lC,KAAKk+B,YAAY2H,EAAO3Y,CAAC,IATjCltB,KAAKikC,cAAcR,EAAO,CAAA,CAAK,GAcvCpN,EAAen2B,UAAUokC,WAAa,SAAUb,EAAOvW,GACnD,IAIQ4Y,EAJH9lC,KAAKqO,OAAOyyB,qBAITgF,EAAQ9lC,KAAKklC,YAAYzB,EAAO,CAAA,CAAI,EACnCh3B,oBAAMq5B,CAAK,IACK,cAAb5Y,EAAE/d,OACFnP,KAAKmjC,SAAS2C,CAAK,EAGnB9lC,KAAKk+B,YAAY4H,EAAO5Y,CAAC,IATjCltB,KAAKikC,cAAcR,EAAO,CAAA,CAAI,GActCpN,EAAen2B,UAAUqkC,QAAU,SAAUd,EAAOvW,GAChD,IAIQ6Y,EAJH/lC,KAAKqO,OAAOyyB,qBAITiF,EAAQ/lC,KAAKklC,YAAYzB,EAAO,CAAA,EAAOzjC,KAAKmlC,MAAM,EACjD14B,oBAAMs5B,CAAK,IACK,WAAb7Y,EAAE/d,OACFnP,KAAKmjC,SAAS4C,CAAK,EAGnB/lC,KAAKk+B,YAAY6H,EAAO7Y,CAAC,IATjCltB,KAAKgkC,aAAaP,EAAO,CAAA,CAAK,GActCpN,EAAen2B,UAAU0iC,UAAY,SAAUyC,GACtC54B,oBAAM44B,CAAQ,IACVA,EAASp3B,UAAUC,SAASmrB,CAAU,IACvCr5B,KAAKqO,OAAO+B,cAAc9C,KAAKtN,KAAKgmC,YAAYX,CAAQ,CAAC,EACzDrlC,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAepQ,KAAKqO,OAAO+B,eAAiB,CAAA,CAAI,EAC5EoyB,WAAS,CAAC6C,GAAW,CAAChM,EAAW,EACjCgM,EAAS1O,aAAa,gBAAiB,MAAM,EAC7C32B,KAAKy8B,WAAW4I,EAAU,CAAA,CAAI,GAElCrlC,KAAKqO,OAAOkoB,YAAc8O,IAGlChP,EAAen2B,UAAUwO,aAAe,SAAUu3B,GACzCx5B,oBAAMw5B,CAAO,IACd5C,cAAY,CAAC4C,GAAU,CAAC5M,EAAW,EAC/Br5B,KAAKqO,OAAOyyB,oBACZmF,EAAQtP,aAAa,gBAAiB,OAAO,EAG7CsP,EAAQvK,gBAAgB,eAAe,EAE3C17B,KAAKy8B,WAAWwJ,EAAS,CAAA,CAAK,EAElB,CAAC,GADTlf,EAAQ/mB,KAAKqO,OAAO+B,cAAcuE,QAAQ3U,KAAKgmC,YAAYC,CAAO,CAAC,KAEnEjmC,KAAKqO,OAAO+B,cAAc4W,OAAOD,EAAO,CAAC,EACzC/mB,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAepQ,KAAKqO,OAAO+B,eAAiB,CAAA,CAAI,GAEhFpQ,KAAKqO,OAAOkoB,YAAc,OAGlCF,EAAen2B,UAAU8lC,YAAc,SAAU7wB,GACzC9S,EAAOrC,KAAKo7B,cAAcjmB,CAAI,EAClC,OAAOsJ,GAAYze,KAAKqO,OAAQhM,CAAI,GAExCg0B,EAAen2B,UAAUijC,SAAW,SAAUhuB,GAC1CnV,KAAKkN,QAAQypB,aAAa,WAAY,IAAI,EAC1C,IAAI8M,EAAQzjC,KAAK0jC,iBACbD,IACAA,EAAM/H,gBAAgB,UAAU,EAChC2H,cAAY,CAACI,GAAQ,CAACqB,GAAU,GAEpCtC,WAAS,CAACrtB,GAAO,CAAC2vB,GAAU,EAC5B3vB,EAAKwhB,aAAa,WAAY,GAAG,EACjCxhB,EAAK4Z,SAETsH,EAAen2B,UAAUu8B,WAAa,SAAUtnB,EAAM+wB,GAC7ClmC,KAAKqO,OAAO0tB,qBAGbQ,EAAWzuB,SAAO,IAAMk1B,GAAW7tB,CAAI,EACvC1I,oBAAM8vB,CAAQ,IAGd2J,EACK3J,EAAStuB,UAAUC,SAAS40B,EAAS,IACtCN,WAAS,CAACjG,GAAWuG,EAAS,EAC9BjyB,UAAQ0rB,EAAU,IAAM4J,EAAW,EAAExP,aAAa,eAAgB,MAAM,GAIxE4F,EAAStuB,UAAUC,SAAS40B,EAAS,IACrCO,cAAY,CAAC9G,GAAWuG,EAAS,EACjCjyB,UAAQ0rB,EAAU,IAAM4J,EAAW,EAAExP,aAAa,eAAgB,OAAO,MAIrFN,EAAen2B,UAAU88B,YAAc,WACnC,IAAIoJ,EAAO1mC,MAAMQ,UAAU24B,MAAM9S,KAAK8N,YAAU,IAAMwF,EAAYr5B,KAAKy4B,YAAY,CAAC,EAEpF,GAAoB,IAAhB2N,EAAKzlC,OAAc,CAEnB,GAAiC,CAAA,IADbX,KAAK+iC,iBAAiB,WAAYqD,EAAK,EAAE,EACvCjnB,OAClB,IAAK,IAAIne,EAAI,EAAGmY,EAAMitB,EAAKzlC,OAAQK,EAAImY,EAAKnY,CAAC,GACzChB,KAAK0O,aAAa03B,EAAKplC,EAAE,EAGjChB,KAAKojC,cAAc,WAAYgD,EAAK,EAAE,IAG9C/P,EAAen2B,UAAU6/B,cAAgB,WACrC//B,KAAKu5B,gBAETlD,EAAen2B,UAAU2/B,sBAAwB,WAC7C7/B,KAAKu5B,gBAETlD,EAAen2B,UAAUq5B,aAAe,WACpC,IAAI4L,EAAS,EACb,GAAInlC,KAAK44B,SACL,IAAK,IAAI53B,EAAI,EAAGmY,EAAMnZ,KAAK44B,SAASj4B,OAAS,EAAGK,EAAImY,GAC5CnZ,KAAK44B,SAAS53B,GAAG6f,wBAAwBjJ,MAAQ5X,KAAK44B,SAAS53B,EAAI,GAAG6f,wBAAwBjJ,IAD7C5W,CAAC,GAElDmkC,CAAM,GAOlBnlC,KAAKmlC,OAASA,GAElB9O,EAAen2B,UAAU6iC,iBAAmB,SAAU5zB,EAAQgG,GAC1D,IAAI9S,EAAO,GACX,GAAIrC,KAAK6iC,kBACL,IAAK,IAAI7hC,EAAI,EAAGmY,EAAMnZ,KAAK44B,SAASj4B,OAAQK,EAAImY,EAAKnY,CAAC,GAClDqB,EAAKrB,GAAKhB,KAAKo7B,cAAcp7B,KAAK44B,SAAS53B,EAAE,OAIjDqB,EAAK,GAAKrC,KAAKo7B,cAAcjmB,CAAI,EAEjCa,EAAY,CAAE7G,OAAQA,EAAQwG,YAA2B,EAAdtT,EAAK1B,OAC1C0B,EAAOA,EAAK,GAAI6wB,aAAclzB,KAAKq+B,cAAelf,OAAQ,CAAA,EAAO7e,OAAQN,KAAK6iC,kBAAoB,KAClG1tB,GAIV,OAFAnV,KAAKqO,OAAOoH,QAAQ,gBAAiBO,CAAS,EAC9ChW,KAAKq+B,cAAgB,CAAA,EACdroB,GAEXqgB,EAAen2B,UAAUkjC,cAAgB,SAAUj0B,EAAQgG,GACvD,IAAI9S,EAAO,GACX,GAAIrC,KAAK6iC,kBAAmB,CACxB,IAAK,IAAI7hC,EAAI,EAAGmY,EAAMnZ,KAAK44B,SAASj4B,OAAQK,EAAImY,EAAKnY,CAAC,GAClDqB,EAAKrB,GAAKhB,KAAKo7B,cAAcp7B,KAAK44B,SAAS53B,EAAE,EAEjDhB,KAAK6iC,kBAAoB,CAAA,OAGzBxgC,EAAK,GAAKrC,KAAKo7B,cAAcjmB,CAAI,EAErCnV,KAAKqO,OAAOg4B,YAA4B,EAAdhkC,EAAK1B,OAAa0B,EAAKA,EAAK1B,OAAS,GAAK0B,EAAK,GACrE2T,EAAY,CAAE7G,OAAQA,EAAQwG,YAA2B,EAAdtT,EAAK1B,OAC1C0B,EACAA,EAAK,GAAI6wB,aAAclzB,KAAKkzB,cACtClzB,KAAKqO,OAAOoH,QAAQ,aAAcO,CAAS,EAC3ChW,KAAKkzB,aAAe,CAAA,GAExBmD,EAAen2B,UAAUi5B,YAAc,SAAUziB,GAE7C,IADA,IAAI0lB,EAAUp8B,KAAKq8B,WAAW3lB,EAAO1W,KAAKqO,OAAOxB,KAAK,EAC7Cy5B,EAAI,EAAGntB,EAAMijB,EAAQz7B,OAAQ2lC,EAAIntB,EAAKmtB,CAAC,GAE5CtmC,KAAKk+B,YAAYl+B,KAAK44B,SAASwD,EAAQkK,IADzB,CAAEnI,QAAS,CAAA,EAAMC,SAAU,CAAA,EACU,GAG3D/H,EAAen2B,UAAUm8B,WAAa,SAAU3lB,EAAO6vB,GAGnD,IAFA,IAAInK,EAAU,GACVvqB,EAAS00B,EAAO,KAAO,OAClBvlC,EAAI,EAAGmY,EAAMnZ,KAAK0W,MAAM/V,OAAQK,EAAImY,EAAKnY,CAAC,GACQ,CAAC,IAApD0V,EAAM/B,QAAQtI,WAASwF,EAAQ7R,KAAK0W,MAAM1V,EAAE,CAAC,GAC7Co7B,EAAQ9uB,KAAKtM,CAAC,EAGtB,OAAOo7B,GAEX/F,EAAen2B,UAAUk7B,cAAgB,SAAUjmB,GAC3C4R,EAAQ/mB,KAAK44B,SAASjkB,QAAQQ,CAAI,EACtC,OAAOnV,KAAK0W,MAAMqQ,IAEtBsP,EAAen2B,UAAUw9B,aAAe,SAAUr7B,GAC9C,IAAImkC,EAAa,GACbxmC,KAAKqO,OAAOxB,MACZ25B,EAAa,IAAIx0B,cAAYhS,KAAK0W,KAAK,EACnCzE,cAAa,IAAIC,SAAQC,MAAM,KAAM,QAASnS,KAAKqO,OAAOomB,UAAW,CAAA,CAAK,CAAC,EAK1D,GAFjBgS,EAAU,IAAIz0B,cAAYhS,KAAK0W,KAAK,EACpCzE,cAAa,IAAIC,SAAQC,MAAM,OAAQ,QAAS9F,WAAS,OAAQhK,CAAI,EAAG,CAAA,CAAK,CAAC,GACtE1B,SACR6lC,EAAa,IAAIx0B,cAAYy0B,CAAO,EAChCx0B,cAAa,IAAIC,SAAQC,MAAM,aAAc,QAASnS,KAAKqO,OAAOwT,WAAY,CAAA,CAAK,CAAC,GAGxE,EAApB2kB,EAAW7lC,SACPomB,EAAQ/mB,KAAK0W,MAAM/B,QAAQ6xB,EAAW,EAAE,EAE5CxmC,KAAKk+B,YAAYl+B,KAAK44B,SAAS7R,GADjB,CAAEoX,QAAS,CAAA,EAAMC,SAAU,CAAA,EACK,IAGtD/H,EAAen2B,UAAUg9B,mBAAqB,WAG1C,IAFA,IAAI76B,EAAO,GACPqU,EAAQmd,YAAU,IAAMhmB,EAAgB,IAAMwrB,EAAYr5B,KAAKkN,OAAO,EACjElM,EAAI,EAAGA,EAAI0V,EAAM/V,OAAQK,CAAC,GAC/BqB,EAAKrB,GAAKhB,KAAKo7B,cAAc1kB,EAAM1V,EAAE,EAEzChB,KAAKqO,OAAOiD,SAAWjP,GAE3Bg0B,EAAen2B,UAAUm/B,aAAe,SAAUjuB,GAC9C,GAAyB,eAArBpR,KAAKqO,OAAOgF,KAIhB,OADahH,WAAS,SAAU+E,CAAI,GAEhC,IAAK,cACDpR,KAAK0mC,YAAYr6B,WAAS,MAAO+E,CAAI,CAAC,EACtC,MACJ,IAAK,gBACDpR,KAAK2mC,cAAct6B,WAAS,MAAO+E,CAAI,CAAC,EACxC,MACJ,IAAK,WACDpR,KAAK4mC,SAASv6B,WAAS,KAAM+E,CAAI,CAAC,EAClC,MACJ,IAAK,aACDpR,KAAKq+B,cAAgB,CAAA,EACrBr+B,KAAKkzB,aAAe,CAAA,EACpBlzB,KAAK6mC,WAAWx6B,WAAS,KAAM+E,CAAI,EAAG/E,WAAS,UAAW+E,CAAI,CAAC,EAC/D,MACJ,IAAK,eACDpR,KAAKq+B,cAAgB,CAAA,EACrBr+B,KAAKkzB,aAAe,CAAA,EACpB,MACJ,IAAK,iBACDlzB,KAAKq+B,cAAgB,CAAA,EACrBr+B,KAAKkzB,aAAe,CAAA,EACpBlzB,KAAKs+B,iBACL,MACJ,IAAK,YACDt+B,KAAKq+B,cAAgB,CAAA,EACrBr+B,KAAKkzB,aAAe,CAAA,EACpBlzB,KAAK89B,oBAIjBzH,EAAen2B,UAAU4mC,cAAgB,SAAUpwB,GAC/C,IAAI0lB,EAAU,GACV2K,EAAW,EAA6D,KAA5D/mC,KAAKqO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAgBjQ,CAAAA,KAAKqO,OAAO6B,YAC1F82B,EAAahnC,KAAKqO,OAAOxB,MAAQ,KAAO,OAC5C,GAAI7M,KAAKqO,OAAOxB,OAAS,CAACk6B,EACtB,IAAK,IAAI/lC,EAAI,EAAGmY,EAAMnZ,KAAK0W,MAAM/V,OAAQK,EAAImY,EAAKnY,CAAC,GACY,CAAC,IAAxD0V,EAAM/B,QAAQtI,WAAS26B,EAAYhnC,KAAK0W,MAAM1V,EAAE,CAAC,GACjDo7B,EAAQ9uB,KAAKtM,CAAC,OAKtB,IAASA,EAAI,EAAGmY,EAAMnZ,KAAK0W,MAAM/V,OAAQK,EAAImY,EAAKnY,CAAC,GAAI,CACnD,IAAIimC,EAAS56B,WAAS,aAAcrM,KAAK0W,MAAM1V,EAAE,EAAIqL,WAAS,OAAQrM,KAAK0W,MAAM1V,EAAE,EACpD,CAAC,IAA3B0V,EAAM/B,QAAQsyB,CAAM,GAAqE,CAAC,IAAxDvwB,EAAM/B,QAAQtI,WAAS26B,EAAYhnC,KAAK0W,MAAM1V,EAAE,CAAC,GACpFo7B,EAAQ9uB,KAAKtM,CAAC,EAI1B,OAAOo7B,GAEX/F,EAAen2B,UAAUwmC,YAAc,SAAUr5B,GAE7C,GADArN,KAAKqO,OAAOmB,aAAe,iBACvB/C,oBAAMY,CAAG,EACTrN,KAAK2kC,oBADT,CAIA,IAAIvI,EAAUp8B,KAAK8mC,cAAcz5B,CAAG,EACpC,GAAuB,IAAnB+uB,EAAQz7B,OAAZ,CAKA,IAFA,IAAI0B,EAAO,GACPigB,EAAS,GACJthB,EAAI,EAAGA,EAAIo7B,EAAQz7B,OAAQK,CAAC,GACjCqB,EAAKrB,GAAKhB,KAAK0W,MAAM0lB,EAAQp7B,IAC7BshB,EAAOthB,GAAKyd,GAAYze,KAAKqO,OAAQhM,EAAKrB,EAAE,EAEhDqhB,GAAcriB,KAAKqO,OAAQhM,EAAMigB,CAAM,KAE3C+T,EAAen2B,UAAUymC,cAAgB,SAAUt5B,GAC/C,GAAIZ,oBAAMY,CAAG,EACTrN,KAAKiiB,iBADT,CAIA,IAAI8E,EAAQ/mB,KAAK8mC,cAAcz5B,CAAG,EAClC,GAAqB,IAAjB0Z,EAAMpmB,OAAV,CAKA,IAFA,IAAI0B,EAAO,GACPigB,EAAS,GACJthB,EAAI,EAAGA,EAAI+lB,EAAMpmB,OAAQK,CAAC,GAC/BqB,EAAKrB,GAAKhB,KAAK0W,MAAMqQ,EAAM/lB,IAC3BshB,EAAOthB,GAAKyd,GAAYze,KAAKqO,OAAQhM,EAAKrB,EAAE,EAEhDwhB,GAAgBxiB,KAAKqO,OAAQhM,EAAMigB,CAAM,KAE7C+T,EAAen2B,UAAU0mC,SAAW,SAAUt6B,GACtCG,oBAAMH,CAAE,GAIS,GADjB8vB,EAAUp8B,KAAK8mC,cAAc,CAACx6B,EAAG,GACzB3L,QACRX,KAAK49B,aAAa59B,KAAK44B,SAASwD,EAAQ,GAAG,GAGnD/F,EAAen2B,UAAU2mC,WAAa,SAAUv6B,EAAIkK,GAChDxW,KAAKqO,OAAOmB,aAAe,iBACvB/C,oBAAMH,CAAE,EACRtM,KAAK4kC,gBAIY,GADjBxI,EAAUp8B,KAAK8mC,cAAc,CAACx6B,EAAG,GACzB3L,SACR+gB,GAAmB1hB,KAAKqO,OAAQrO,KAAK0W,MAAM0lB,EAAQ,GAAG,EAClD3vB,oBAAM+J,CAAI,EACVsL,GAAS9hB,KAAKqO,MAAM,EAGf0T,EAAc/hB,KAAKqO,OAAOiD,SAAS,EAAE,EAItCiT,GAAOvkB,KAAKqO,OAAQrO,KAAKqO,OAAO1B,KAAM6J,CAAI,EAH1CvC,EAAmBjU,KAAKqO,OAAQrO,KAAKqO,OAAOiD,SAAS,GAAI0Q,CAAqB,QAtiD9FqU,GA8iDOA,EAviDP,SAASA,EAAehoB,GACpBrO,KAAKq+B,cAAgB,CAAA,EACrBr+B,KAAKo5B,gBAAkB,CAAA,EACvBp5B,KAAKud,MAAQ,EACbvd,KAAK45B,WAAa,CAAA,EAClB55B,KAAKgiC,SAAW,EAChBhiC,KAAK6iC,kBAAoB,CAAA,EACzB7iC,KAAKk5B,iBAAmB,CAAA,EACxBl5B,KAAKkzB,aAAe,CAAA,EACpBlzB,KAAKqO,OAASA,EACdrO,KAAKkN,QAAUY,SAAO,IAAM9N,KAAKqO,OAAOnB,QAAQZ,GAAK2qB,GAAkBj3B,KAAKqO,OAAOnB,OAAO,EAC1Fs1B,WAAS,CAACxiC,KAAKkN,SAAU0G,EAAe,EACxC5T,KAAKw5B,mBACLx5B,KAAKohC,WAAa,CACd8F,IAAK,MACLC,KAAM,OACNC,IAAK,MACLC,SAAU,YACVC,SAAU,YACVC,UAAW,aACXC,OAAQ,UACRC,QAAS,WACTC,SAAU,YACVC,SAAU,iBACVC,SAAU,iBACVC,UAAW,kBACXC,OAAQ,eACRC,SAAU,YACVC,UAAW,aACXC,UAAW,kBACXC,UAAW,kBACXC,WAAY,mBACZC,QAAS,gBACTC,MAAO,iBACPC,OAAQ,kBACRC,OAAQ,uBACRC,OAAQ,uBACRC,QAAS,wBACTC,KAAM,qBACNC,MAAO,QACPC,UAAW,aACXC,WAAY,cACZC,QAAS,mBACTC,MAAO,SACPC,MAAO,QACPC,SAAU,YACVC,IAAK,SACLC,IAAK,SACLC,MAAOppC,KAAKqO,OAAOg7B,MAAQ,QAAU,SACrCC,MAAOtpC,KAAKqO,OAAOg7B,MAAQ,QAAU,SACrCE,MAAOvpC,KAAKqO,OAAOg7B,MAAQ,QAAU,SACrCG,GAAI,KACJC,SAAU,eACVC,KAAM,YACNC,MAAO,UClDfC,EAAc1pC,UAAUi/B,kBAAoB,SAAUjS,GAClD,GAAIA,EAAE7S,SAAWra,KAAKu7B,iBAAgC,WAAbrO,EAAE7S,OAG3C,IAAK,IAAIsmB,EAAK,EAAGC,EAAKrhC,OAAOkiB,KAAKyL,EAAE2T,OAAO,EAAGF,EAAKC,EAAGjgC,OAAQggC,CAAE,GAAI,CAChE,IAAIkJ,EAAOjJ,EAAGD,GACV1wB,EAAQid,EAAE2T,QAAQnvB,eAEb,mBADDm4B,IAEKhzB,oBAAkB5G,EAAM65B,mBAAmB,GAC5C9pC,KAAK+pC,gBAAgB95B,EAAM65B,mBAAmB,EAE9C9pC,CAAAA,KAAKqO,OAAO0B,oBAAoBC,UAAUC,OAA6D,KAApDjQ,KAAKqO,OAAO0B,oBAAoBC,UAAUC,OAC1F4G,CAAAA,oBAAkB5G,EAAM65B,mBAAmB,GAAKjzB,oBAAkB5G,EAAM0B,UAAU,GACjFkF,oBAAkB5G,EAAMmC,UAAU,GACtCrB,GAAkB/Q,KAAKqO,OAAQrO,KAAKqO,OAAO0B,oBAAoBC,UAAUC,MAAO,CAAA,CAAK,KAMzG25B,EAAc1pC,UAAUo2B,OAAS,WAC7Bt2B,KAAKw5B,oBAEToQ,EAAc1pC,UAAU8pC,aAAe,WACnC,IAAIh9B,EAAYhN,KAAKqO,OAAOrB,UACxBi9B,EAAQjqC,KAAKqO,OAAO1B,KAAKiI,MAAM,GAAG,EAClCs1B,EAAelqC,KAAKqO,OAAO6J,cAAc,KAAM,CAAEC,UAAW,kBAAmB,EAC/EgyB,EAAe,KACfC,EAAep9B,EAAUrM,OAC7B,GAAuB,EAAnBqM,EAAUrM,OAAY,CAEtB,IADA,IAAI2L,EAAK,GACAtL,EAAI,EAAGA,EAAIopC,EAAcppC,CAAC,GAAI,CAGnC,IAFA,IAOQ07B,EAPJ2N,EAAc,KAClBF,EAAenqC,KAAKqO,OAAO6J,cAAc,KAAM,CAAEC,UAAW,sBAAuB,EAC1EmuB,EAAI,EAAGA,GAAKtlC,EAAGslC,CAAC,GACrBh6B,EAAKA,EAAK29B,EAAM3D,GAAK,IAEzB6D,EAAaxT,aAAa,aAAcrqB,CAAE,EAChC,IAANtL,IACI07B,EAAOxkB,gBAAc,OAAQ,CAAEC,UAAWmyB,GAAW,EACzDH,EAAa1xB,YAAYikB,CAAI,GAE7B0N,EAAeppC,GAAM,GACrBqpC,EAAcnyB,gBAAc,IAAK,CAAEC,UAAWpK,GAAe,EAC7Do8B,EAAaxT,aAAa,WAAY,GAAG,GAGzC0T,EAAcnyB,gBAAc,OAAQ,CAAEC,UAAWpK,GAAe,EAEpEzB,EAAK,GACL+9B,EAAYE,UAAYv9B,EAAUhM,GAClCmpC,EAAa1xB,YAAY4xB,CAAW,EACpCH,EAAazxB,YAAY0xB,CAAY,EAEzC,IAAIK,EAAYxqC,KAAKqO,OAAOo8B,wBAAwB1yB,cAAc,kBAAkB,EAOhF2yB,GANC7zB,oBAAkB2zB,CAAS,IACvB3zB,oBAAkB7W,KAAK2qC,UAAU,GAClC3qC,KAAK2qC,WAAWvhC,UAEpBuH,SAAO65B,CAAS,GAEHxqC,KAAKqO,OAAOo8B,wBAAwB1yB,cAAc,gBAAgB,GAC9E2yB,EAID1qC,KAAKqO,OAAOo8B,wBAAwBhyB,YAAYyxB,CAAY,EAH5DlqC,KAAKqO,OAAOo8B,wBAAwBxO,aAAaiO,EAAcQ,CAAU,EAK7E1qC,KAAK4qC,oBAAoBV,CAAY,IAI7CN,EAAc1pC,UAAU0qC,oBAAsB,SAAUC,GAUpD,IATA,IAAIC,EAAaD,EAAYp6B,iBAAiB,IAAI,EAC9C+5B,EAAYxqC,KAAKqO,OAAOo8B,wBAAwB1yB,cAAc,kBAAkB,EAChFc,EAAQwG,OAAOyW,iBAAiB0U,EAAW,IAAI,EAC/CO,EAAS/U,WAAWnd,EAAM0sB,iBAAiB,eAAe,CAAC,EAC3DyF,EAAQhV,WAAWnd,EAAM0sB,iBAAiB,cAAc,CAAC,EACzD0F,EAAqBT,EAAUpU,YAAc2U,EAASC,EACtDd,EAAelqC,KAAKqO,OAAO6J,cAAc,KAAM,CAAEC,UAAW,kBAAmB,EAC/E+yB,EAAkB,EAClBC,EAAmB,GACdnqC,EAAI,EAAGA,EAAI8pC,EAAWnqC,OAAQK,CAAC,GAAI,CACxC,IAAImB,EAAQ2oC,EAAW9pC,GAAGoqC,YAC1BD,EAAiB79B,KAAKnL,CAAK,EAC3B+oC,GAAoC/oC,EAEnC0U,oBAAkB2zB,CAAS,GAC5B75B,SAAO65B,CAAS,EAEpB,IAAIa,EAAkBrrC,KAAKqO,OAAO6J,cAAc,KAAK,EAEjD5L,GADJ++B,EAAgB1U,aAAa,QAAS,eAAe,EAC5C32B,KAAKqO,OAAOnB,QAAQZ,GAAKg/B,IAC9BC,EAAcrzB,gBAAc,QAAS,CAAE5L,GAAIA,EAC3CggB,MAAO,CAAEkf,aAAc,MAAOC,aAAc7yB,EAAc5Y,KAAKqO,OAAQ,QAAQ,GAAK,EAEpFq9B,GADJL,EAAgB5yB,YAAY8yB,CAAW,EACvBvrC,KAAKqO,OAAOo8B,wBAAwB1yB,cAAc,yBAAyB,GAmBvF2yB,GAlBA7zB,oBAAkB60B,CAAS,IAC3B1rC,KAAKqO,OAAOo8B,wBAAwBhyB,YAAY4yB,CAAe,EAC3DM,EAAOzzB,gBAAc,OAAQ,CAAEC,UAAW,sBAAuB,EACrEopB,eAAajxB,IAAIq7B,EAAM,QAAS3rC,KAAK4rC,YAAa5rC,IAAI,EACtDurC,EAAYnqB,cAAc6a,aAAa0P,EAAMJ,CAAW,EACxDvrC,KAAKgQ,UAAY,IAAI67B,UAAQ,CACzB57B,MAAO,GACP67B,gBAAiB,CAAA,EACjBrY,YAAa7a,EAAc5Y,KAAKqO,OAAQ,QAAQ,EAChD0gB,MAAO/uB,KAAK+rC,QAAQ9c,KAAKjvB,IAAI,EAC7BgsC,KAAMhsC,KAAKisC,OAAOhd,KAAKjvB,IAAI,EAC9B,EACDA,KAAKgQ,UAAUihB,SAAS,IAAMjxB,KAAKqO,OAAOnB,QAAQZ,GAAKg/B,EAAa,EACpEtrC,KAAK+pC,gBAAgB/pC,KAAKqO,OAAOqD,eAAeo4B,mBAAmB,EAC/DpgC,EAAS1J,KAAKgQ,UAAU9C,QAAQge,mBACpCqW,eAAajxB,IAAI5G,EAAQ,YAAa1J,KAAKksC,oBAAoBjd,KAAKjvB,IAAI,EAAGA,IAAI,EAC/EuhC,eAAajxB,IAAItQ,KAAKgQ,UAAU9C,QAAS,QAASlN,KAAKmsC,QAAQld,KAAKjvB,IAAI,EAAGA,IAAI,GAElEA,KAAKqO,OAAOo8B,wBAAwB1yB,cAAc,gBAAgB,GAEnF,IADAkzB,GAA2CjrC,KAAKosC,iBAAyC1B,EAAWtU,aAChG8U,EAAsC,CAEtC,IADIlqC,EAAI8pC,EAAWnqC,OACZK,CAAC,IAAI,CACR,IAAIqrC,EAAOpB,EAAqBE,EAAiBnqC,GACjD,GAAIqrC,EAAO,GAAPA,GAIC,CAED,IADA,IAAI31B,EAAQ,GACH4vB,EAAI,EAAGA,GAAKtlC,EAAGslC,CAAC,GAAI,CACzB,IAAIgG,EAAYxB,EAAWxE,GAC3B5vB,EAAMpJ,KAAK,CACPlB,KAAMkgC,EAAU/B,UAChBgC,MAAOD,EAAU//B,aAAa,YAAY,EAC7C,EAEL,IAAIigC,EAAYxsC,KAAKqO,OAAO6J,cAAc,KAAM,CAAEC,UAAW,oBAAqB,EAE9Es0B,EAAczsC,KAAKqO,OAAO6J,cAAc,SAD3B,CAAEC,UAAW,uBACkC,EAChEq0B,EAAU/zB,YAAYg0B,CAAW,EACjCvC,EAAajO,aAAauQ,EAAWtC,EAAanyB,cAAc,IAAI,CAAC,EACrE/X,KAAK2qC,WAAa,IAAI+B,iBAAe,CACjCh2B,MAAOA,EACPsD,SAAU,yBACV4d,QAAS+U,GACTC,aAAc,MACd7b,oBAAqB/wB,KAAKqO,OAAO0iB,oBACjC8b,iBAAkB7sC,KAAK8sC,qBAAqB7d,KAAKjvB,IAAI,EACrD8N,OAAQ9N,KAAK+sC,wBAAwB9d,KAAKjvB,IAAI,EACjD,EACDA,KAAK2qC,WAAW3Z,iBAAmB,CAAA,EACnChxB,KAAK2qC,WAAW1Z,SAASwb,CAAW,EACpC,MA5BAvC,EAAajO,aAAa6O,EAAW9pC,GAAIkpC,EAAanyB,cAAc,IAAI,CAAC,EACzEkzB,EAAqBoB,EA8B7BrsC,KAAKqO,OAAOo8B,wBAAwBxO,aAAaiO,EAAcQ,CAAU,OAGzE1qC,KAAKqO,OAAOo8B,wBAAwBxO,aAAa4O,EAAaH,CAAU,GAIhFd,EAAc1pC,UAAU6rC,QAAU,WACnBl7B,UAAQ7Q,KAAKgQ,UAAU9C,QAAS,gBAAgB,EACtDe,UAAUqC,IAAI,SAAS,GAGhCs5B,EAAc1pC,UAAUisC,QAAU,WAC9BnsC,KAAKqO,OAAOW,OAAOmC,GAAmB,CAAEC,KAAMpR,KAAKqO,OAAQ,GAG/Du7B,EAAc1pC,UAAU+rC,OAAS,WAClBp7B,UAAQ7Q,KAAKgQ,UAAU9C,QAAS,gBAAgB,EACtDe,UAAU0C,OAAO,SAAS,GAGnCi5B,EAAc1pC,UAAU6sC,wBAA0B,SAAU7sB,GACpD9O,EAAO,CAAE9Q,OAAQ4f,EAAMhT,SAC3BlN,KAAKgtC,wBAAwB57B,CAAI,GAGrCw4B,EAAc1pC,UAAU4sC,qBAAuB,SAAU17B,GACrDA,EAAKlE,QAAQypB,aAAa,aAActqB,WAAS,QAAS+E,EAAK+D,IAAI,CAAC,EACpE,IAAI83B,EAASjtC,KAAKqO,OAAO6J,cAAc,IAAK,CAAEC,UAAW,cAAe,EACxE/G,EAAKlE,QAAQuL,YAAYw0B,CAAM,GAEnCrD,EAAc1pC,UAAU6pC,gBAAkB,SAAUmD,GAC5CA,GACAltC,KAAKgQ,UAAUyc,MAAQzsB,KAAKksC,oBAAoBjd,KAAKjvB,IAAI,EACzDA,KAAKgQ,UAAUqiB,OAAS,OAGxBryB,KAAKgQ,UAAUqiB,OAASryB,KAAKksC,oBAAoBjd,KAAKjvB,IAAI,EAC1DA,KAAKgQ,UAAUyc,MAAQ,OAG/Bmd,EAAc1pC,UAAUgsC,oBAAsB,SAAU96B,GACpD,IAAI8oB,EAAQl6B,KACP6W,oBAAkBzF,EAAKnB,KAAK,IAC7BjQ,KAAKqO,OAAO6B,WAAa,CAAA,EACrBlQ,KAAKqO,OAAOqD,eAAeo4B,qBAC3BzqB,OAAOC,aAAatf,KAAKmtC,WAAW,EACpCntC,KAAKmtC,YAAc9tB,OAAO6B,WAAW,WAAcnQ,GAAkBmpB,EAAM7rB,OAAQ+C,EAAKnB,MAAO,CAAA,CAAK,GAAM,GAAG,GAG7Gc,GAAkB/Q,KAAKqO,OAAQ+C,EAAKnB,MAAO,CAAA,CAAK,IAI5D25B,EAAc1pC,UAAU8sC,wBAA0B,SAAU9f,GACxD,IAAIkY,EAAKlY,EAAE5sB,OACS,OAAhB8kC,EAAGgI,UAAqC,MAAhBhI,EAAGgI,WACvBlhC,EAAuB,OAAhBk5B,EAAGgI,SAAoBhI,EAAGiI,SAAS,GAAKjI,EAC9CvuB,oBAAkB3K,CAAI,KACvBlM,KAAKqO,OAAO6B,WAAa,CAAA,EACrBo9B,EAActtC,KAAKiM,WAAWC,CAAI,EACtClM,KAAKqO,OAAOiD,SAAW,CAACjF,WAASrM,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAAIX,KAAKqO,OAAOI,QAAQ,GACxGzO,KAAKutC,gBAAgBvtC,KAAKqO,OAAOiD,SAAS,EAAE,EAC5CE,EAAKxR,KAAKqO,OAAQod,EAAoB6hB,CAAW,EAC7CE,EAAaxtC,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAChEX,KAAKqO,OAAOW,OAAOy+B,GAA4B,CAAEpzB,OAAQ,WAAYoB,aAAc+xB,EAAY,IAI3G5D,EAAc1pC,UAAUqtC,gBAAkB,SAAUlrC,GAC5C2T,EAAY,CAAEmJ,OAAQ,CAAA,EAAOxJ,YAAatT,EAAMgY,OAAQ,iBAC5D,OAAOrE,EAAUmJ,OACjBnf,KAAKqO,OAAOoH,QAAQ,WAAYO,CAAS,GAG7C4zB,EAAc1pC,UAAU0rC,YAAc,WAClC,IAMYlB,EANR1qC,KAAKqO,OAAO8L,WACRna,KAAKqO,OAAOnB,QAAQe,UAAUC,SAASw/B,EAAU,GACjDrK,cAAY,CAACrjC,KAAKqO,OAAOnB,SAAUwgC,EAAU,EAC7C1tC,KAAKosC,gBAAkB,OAGnB1B,EAAa1qC,KAAKqO,OAAOo8B,wBAAwB1yB,cAAc,gBAAgB,EACnF/X,KAAKosC,gBAAkB1B,EAAWtU,YAClCoM,WAAS,CAACxiC,KAAKqO,OAAOnB,SAAUwgC,EAAU,EAC1C1tC,KAAKgQ,UAAU9C,QAAQ6hB,WAInC6a,EAAc1pC,UAAU+L,WAAa,SAAU0hC,GAU3C,IATA,IACIC,EADK/8B,UAAQ88B,EAAM,IAAI,EACNphC,aAAa,YAAY,EAE1CmhB,GADJ1tB,KAAK6tC,eAAiBD,EACX5tC,KAAK6tC,eAAej5B,MAAM,GAAG,GACpCvH,EAAMrN,KAAKqO,OAAOvB,OAClBS,EAAQvN,KAAKqO,OAAOrB,UAGpB8gC,GAFJ9tC,KAAKqO,OAAOvB,OAAS,GACrB9M,KAAKqO,OAAOrB,UAAY,GACV,IACLhM,EAAI,EAAGmY,EAAMuU,EAAK/sB,OAAS,EAAGK,EAAImY,EAAKnY,CAAC,GAC7ChB,KAAKqO,OAAOvB,OAAOQ,KAAKD,EAAIrM,EAAE,EAC9BhB,KAAKqO,OAAOrB,UAAUM,KAAKC,EAAMvM,EAAE,EACnC8sC,GAAWpgB,EAAK1sB,GAAK,IAGzB,OADAhB,KAAKqO,OAAO3B,cAAc,CAAEC,KAAMmhC,GAAW,CAAA,CAAI,EAC1CA,GAEXlE,EAAc1pC,UAAU6tC,aAAe,WACnC/tC,KAAKgqC,eACLhqC,KAAKguC,qBAETpE,EAAc1pC,UAAU68B,YAAc,WAClC/8B,KAAKgqC,gBAETJ,EAAc1pC,UAAU+tC,YAAc,WAClCjuC,KAAKgqC,gBAGTJ,EAAc1pC,UAAUk9B,YAAc,WAClCp9B,KAAK+tC,gBAGTnE,EAAc1pC,UAAU8tC,kBAAoB,WACxChuC,KAAKqO,OAAO6B,WAAa,CAAA,EACrBlQ,CAAAA,KAAKgQ,WAAuC,KAAzBhQ,KAAKgQ,UAAUC,OAAiD,KAAjCjQ,KAAKgQ,UAAU9C,QAAQ+C,QACzEjQ,KAAKgQ,UAAUC,MAAQ,GACvBjQ,KAAKgQ,UAAU9C,QAAQ+C,MAAQ,GAC/BjQ,KAAKgQ,UAAUmhB,aAGvByY,EAAc1pC,UAAUguC,SAAW,WAC/BluC,KAAKgqC,gBAETJ,EAAc1pC,UAAUiuC,WAAa,WACjCnuC,KAAKgqC,gBAETJ,EAAc1pC,UAAUs5B,iBAAmB,WACvCx5B,KAAKghC,eAAiB,IAAIC,iBAAejhC,KAAKqO,OAAOo8B,wBAAyB,CAC1EvJ,UAAWlhC,KAAKmhC,iBAAiBlS,KAAKjvB,IAAI,EAC1CohC,WAAYphC,KAAKohC,WACjBnmB,UAAW,UACd,EACDjb,KAAKqO,OAAOoyB,GAAGvB,EAAqBl/B,KAAKm/B,kBAAmBn/B,IAAI,EAChEuhC,eAAajxB,IAAItQ,KAAKqO,OAAOo8B,wBAAyB,QAASzqC,KAAKgtC,wBAAyBhtC,IAAI,EACjGA,KAAKqO,OAAOoyB,GAAG2N,GAAgBpuC,KAAKoJ,QAASpJ,IAAI,EACjDA,KAAKqO,OAAOoyB,GAAGhV,EAAoBzrB,KAAK+tC,aAAc/tC,IAAI,EAC1DA,KAAKqO,OAAOoyB,GAAGvlB,EAAoBlb,KAAK+tC,aAAc/tC,IAAI,EAC1DA,KAAKqO,OAAOoyB,GAAGzsB,GAAmBhU,KAAK+tC,aAAc/tC,IAAI,EACzDA,KAAKqO,OAAOoyB,GAAGrsB,GAAgBpU,KAAK+tC,aAAc/tC,IAAI,EACtDA,KAAKqO,OAAOoyB,GAAGrV,GAAkBprB,KAAK+8B,YAAa/8B,IAAI,EACvDA,KAAKqO,OAAOoyB,GAAG/U,EAAkB1rB,KAAKiuC,YAAajuC,IAAI,EACvDA,KAAKqO,OAAOoyB,GAAG3U,GAAkB9rB,KAAKo9B,YAAap9B,IAAI,EACvDA,KAAKqO,OAAOoyB,GAAGb,GAAuB5/B,KAAKkuC,SAAUluC,IAAI,EACzDA,KAAKqO,OAAOoyB,GAAG3iB,GAAiB9d,KAAKmuC,WAAYnuC,IAAI,EACrDA,KAAKqO,OAAOoyB,GAAGX,GAAkB9/B,KAAKkuC,SAAUluC,IAAI,EACpDA,KAAKqO,OAAOoyB,GAAG7V,GAAyB5qB,KAAKquC,mBAAoBruC,IAAI,EACrEA,KAAKqO,OAAOoyB,GAAG7gB,GAAiB5f,KAAKq7B,WAAYr7B,IAAI,EACrDA,KAAKqO,OAAOoyB,GAAGJ,GAAsBrgC,KAAKkuC,SAAUluC,IAAI,EACxDA,KAAKqO,OAAOoyB,GAAGpiB,GAAiBre,KAAKgqC,aAAchqC,IAAI,GAE3D4pC,EAAc1pC,UAAUihC,iBAAmB,SAAUjU,GAExC,UADDA,EAAE/d,QAEFnP,KAAKgtC,wBAAwB9f,CAAC,GAI1C0c,EAAc1pC,UAAU42B,oBAAsB,WAC1C92B,KAAKghC,eAAe53B,UACpBpJ,KAAKqO,OAAO0wB,IAAItT,EAAoBzrB,KAAK+tC,YAAY,EACrD/tC,KAAKqO,OAAO0wB,IAAI7jB,EAAoBlb,KAAK+tC,YAAY,EACrD/tC,KAAKqO,OAAO0wB,IAAI/qB,GAAmBhU,KAAK+tC,YAAY,EACpD/tC,KAAKqO,OAAO0wB,IAAI3qB,GAAgBpU,KAAK+tC,YAAY,EACjD/tC,KAAKqO,OAAO0wB,IAAIjhB,GAAiB9d,KAAKmuC,UAAU,EAChDnuC,KAAKqO,OAAO0wB,IAAI3T,GAAkBprB,KAAK+8B,WAAW,EAClD/8B,KAAKqO,OAAO0wB,IAAIrT,EAAkB1rB,KAAKiuC,WAAW,EAClDjuC,KAAKqO,OAAO0wB,IAAIjT,GAAkB9rB,KAAKo9B,WAAW,EAClDp9B,KAAKqO,OAAO0wB,IAAIa,GAAuB5/B,KAAKkuC,QAAQ,EACpDluC,KAAKqO,OAAO0wB,IAAIe,GAAkB9/B,KAAKkuC,QAAQ,EAC/CluC,KAAKqO,OAAO0wB,IAAInU,GAAyB5qB,KAAKquC,kBAAkB,EAChEruC,KAAKqO,OAAO0wB,IAAInf,GAAiB5f,KAAKq7B,UAAU,EAChDr7B,KAAKqO,OAAO0wB,IAAIsB,GAAsBrgC,KAAKkuC,QAAQ,EACnDluC,KAAKqO,OAAO0wB,IAAI1gB,GAAiBre,KAAKgqC,YAAY,GAGtDJ,EAAc1pC,UAAUm7B,WAAa,SAAUjqB,GACvCpR,KAAKqO,OAAOwF,eAAiB7T,KAAKu7B,kBAC9B+S,EAAQl9B,EAAK9Q,OAAOuQ,QAAQ,IAAI,EACpC7Q,KAAKqO,OAAO7C,SAAWxL,KAAKiM,WAAYqiC,EAAMjB,SAAS,IACvDrtC,KAAKqO,OAAOwO,SAAWxQ,WAASrM,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAAIX,KAAKqO,OAAOI,QAAQ,EACvGzO,KAAKutC,gBAAgBvtC,KAAKqO,OAAOwO,QAAQ,EACrC2wB,EAAaxtC,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAChEX,KAAKqO,OAAOW,OAAOy+B,GAA4B,CAAEpzB,OAAQ,WAAYoB,aAAc+xB,EAAY,IASvG5D,EAAc1pC,UAAUq7B,cAAgB,WACpC,MAAO,iBAEXqO,EAAc1pC,UAAUkJ,QAAU,WAC1BpJ,KAAKqO,OAAOywB,cAGhB9+B,KAAK82B,sBAEAjgB,oBAAkB7W,KAAK2qC,UAAU,GAClC3qC,KAAK2qC,WAAWvhC,UAEfyN,oBAAkB7W,KAAKgQ,SAAS,IACjChQ,KAAKgQ,UAAU5G,WAGvBwgC,EAAc1pC,UAAUmuC,mBAAqB,SAAUj9B,GACnDpR,KAAKgQ,UAAU9C,QAAQumB,YAAyD,MAA1CzzB,KAAKqO,OAAOqD,eAAe+hB,YAAuBzzB,KAAKqO,OAAOqD,eAAe+hB,YAAc7a,EAAc5Y,KAAKqO,OAAQ,QAAQ,EAAI,IAAMuK,EAAc5Y,KAAKqO,OAAQ+C,EAAK4L,IAAIxG,KAAKhI,UAAU,OAxYrOo7B,GA0YOA,EAjYP,SAASA,EAAcv7B,GACnBrO,KAAKuuC,YAAc,GACnBvuC,KAAK6tC,eAAiB,GACtB7tC,KAAKmtC,YAAc,KACnBntC,KAAKosC,gBAAkB,KACvBpsC,KAAKqO,OAASA,EACdrO,KAAKohC,WAAa,CACd4H,MAAO,SAEXhpC,KAAKs2B,SCDTkY,EAAYtuC,UAAUo2B,OAAS,WAC3Bt2B,KAAKohC,WAAa,CACdqN,UAAW,YACXC,QAAS,YAEb1uC,KAAK2uC,YAAc,IAAIC,cAAK,CACxB9d,UAAW9wB,KAAKqO,OAAOyiB,UACvBnX,OAAQ3Z,KAAKqO,OAAOsL,OACpBrZ,OAAQ,IAAMN,KAAKqO,OAAOnB,QAAQZ,GAClCykB,oBAAqB/wB,KAAKqO,OAAO0iB,oBACjC8b,iBAAkB7sC,KAAK6uC,mBAAmB5f,KAAKjvB,IAAI,EACnD8N,OAAQ9N,KAAK8uC,SAAS7f,KAAKjvB,IAAI,EAC/BiwB,WAAYjwB,KAAK+uC,aAAa9f,KAAKjvB,IAAI,EACvCmwB,YAAanwB,KAAKgvC,cAAc/f,KAAKjvB,IAAI,EACzCga,SAAUF,GAAY9Z,KAAKqO,OAAQwiB,EAAc,EACpD,EACD7wB,KAAK2uC,YAAY3d,iBAAmB,CAAA,EACpChxB,KAAK2uC,YAAY1d,SAAS,IAAMjxB,KAAKqO,OAAOnB,QAAQZ,GAAK2iC,EAAmB,EAC5EjvC,KAAKw5B,oBAGTgV,EAAYtuC,UAAU2uC,mBAAqB,SAAUz9B,GACjD,IAOQ89B,EACAhiC,EARJkE,EAAK+D,KAAK7I,KAAOtM,KAAKmvC,UAAU,gBAAgB,IAC5CD,EAAWh3B,gBAAc,MAAM,GAEnChL,EADckE,EAAKlE,SACX+uB,aAAaiT,EAA+B,eAArBlvC,KAAKqO,OAAOgF,KAAwBnG,EAAQgvB,WAAW,GAAKhvB,EAAQgvB,WAAW,EAAE,EAChHgT,EAASvY,aAAa,QAASyY,GAAiB,IAAMC,EAAa,GAEnEj+B,EAAK+D,KAAK7I,KAAOtM,KAAKmvC,UAAU,aAAa,IACzCD,EAAWh3B,gBAAc,MAAM,GAEnChL,EADckE,EAAKlE,SACX+uB,aAAaiT,EAA+B,YAArBlvC,KAAKqO,OAAOgF,KAAqBnG,EAAQgvB,WAAW,GAAKhvB,EAAQgvB,WAAW,EAAE,EAC7GgT,EAASvY,aAAa,QAAS2Y,GAAgB,IAAMD,EAAa,IAG1Eb,EAAYtuC,UAAU8uC,cAAgB,SAAU59B,GAC5C,IAAI4E,EAAY,CACZmJ,OAAQ,CAAA,EACRjS,QAASkE,EAAKlE,QACdgT,MAAO9O,EAAK8O,MACZqvB,UAAWn+B,EAAKm+B,UAChB55B,YAAa,CAAC3V,KAAKqK,cACnBqM,MAAOtF,EAAKsF,MACZ84B,WAAYp+B,EAAKo+B,WACjBC,SAAUzvC,KAAKyvC,UASnB,GAPAzvC,KAAKqO,OAAOoH,QAAQ,YAAaO,EAAW,SAAU05B,GAC9CA,EAAcvwB,SACd/N,EAAK+N,OAASuwB,EAAcvwB,QAGnC,EACDnf,KAAK2vC,WAAa,KACd,CAAC3vC,KAAK4vC,mBAAiD,EAA5B5vC,KAAKqO,OAAOvB,OAAOnM,QAA2C,mBAA7BX,KAAKqO,OAAOmB,aAAmC,CAC3GxP,KAAKqO,OAAOvB,OAAOie,MAGnB,IAFA,IAAI8kB,EAAY,GAEPlP,EAAK,EAAGmP,EADFvwC,OAAOkiB,KAAKzhB,KAAKqO,OAAOI,QAAQ,EACPkyB,EAAKmP,EAAWnvC,OAAQggC,CAAE,GAAI,CAClE,IAAIxrB,EAAO26B,EAAWnP,GAElBrvB,EAAWjF,WAAS8I,EAAMnV,KAAKqO,OAAOI,QAAQ,EACG,CAAC,IAAlDzO,KAAKqO,OAAOrB,UAAU2H,QAAQrD,EAASkF,IAAI,GAC3Cq5B,EAAUviC,KAAKgE,EAASy+B,MAAM,EAGtC/vC,KAAKqO,OAAOvB,OAAOQ,KAAKuiC,EAAUA,EAAUlvC,OAAS,EAAE,EACvDX,KAAKqO,OAAO6P,qBAAqBC,QAAQzR,cAAc,CAAEmC,cAAe,CAAC7O,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,IAAK,EAEjIX,KAAK4vC,kBAAoB,CAAA,GAG7BpB,EAAYtuC,UAAU6uC,aAAe,SAAU39B,GAC3C,IAEI4+B,EAFA9V,EAAQl6B,KACR28B,EAAW,CAAA,EAGXsT,EAAa,CAAA,EACb3vC,EAAS8Q,EAAK8O,MAAM5f,OAWpB+S,GAVJrT,KAAK2vC,WAAa3vC,KAAKkwC,kBAAoB5vC,EAC3CN,KAAKmwC,eAAiB/+B,EAAKlE,QACvB5M,EAAO2N,UAAUC,SAAS,gBAAgB,IAC1C5N,EAASN,KAAKqO,OAAO6P,qBAAqBkyB,WAAWC,uBAAuBC,EAAW,EAAE,GACzFtwC,KAAK2vC,WAAa3vC,KAAKkwC,kBAAoB5vC,GAE/CN,KAAKuwC,cAAqC,YAArBvwC,KAAKqO,OAAOgF,KAAqBxC,UAAQvQ,EAAQ,UAAU,EAAIA,EAChFN,KAAKqO,OAAOiqB,uBAAyBh4B,EAAO2N,UAAUC,SAAS,kBAAkB,GAAK5N,EAAO2N,UAAUC,SAAS,gBAAgB,KAChI5N,EAASA,EAAO8gB,cAAcvQ,QAAQ,KAAK,GAEpC7Q,KAAKwwC,cAAclwC,CAAM,GAGpC,GAFAN,KAAKywC,qBAEDnwC,EAAO2N,UAAUC,SAASC,EAAa,GAAK0C,UAAQvQ,EAAQ,IAAI,GAC/DuQ,UAAQvQ,EAAQ,IAAMN,KAAKqO,OAAOnB,QAAQZ,GAAKoL,EAAqB,GACpE7G,UAAQvQ,EAAQ,IAAMN,KAAKqO,OAAOnB,QAAQZ,GAAKokC,EAAe,EAC/Dt/B,EAAK+N,OAAS,CAAA,OAEb,GAA2B,eAArBnf,KAAKqO,OAAOgF,MAA0BrT,KAAKuwC,eAClDvwC,KAAKuwC,cAActiC,UAAUC,SAAS,YAAY,EAClDlO,KAAK2wC,cAAcrwC,CAAM,OAGxB,GAAIuQ,UAAQvQ,EAAQ,IAAM0X,CAAS,EACpChY,KAAK2wC,cAAcrwC,CAAM,OAExB,GAAI,CAACA,EAAO2N,UAAUC,SAAS0iC,EAAa,GAC7C,CAACtwC,EAAO2N,UAAUC,SAASmhC,EAAa,GAAK,CAAC/uC,EAAO2N,UAAUC,SAAS2iC,EAAgB,EA4BxF,GA1ByB,eAArB7wC,KAAKqO,OAAOgF,MAA0B5G,oBAAMoE,UAAQvQ,EAAQ,IAAI,CAAC,GAAMuQ,UAAQvQ,EAAQ,IAAMN,KAAKqO,OAAOnB,QAAQZ,GAAKwkC,EAAW,EAQ3HrkC,oBAAMoE,UAAQvQ,EAAQ,UAAU,CAAC,EAUlCuQ,UAAQvQ,EAAQ,IAAMN,KAAKqO,OAAOnB,QAAQZ,GAAKwkC,EAAW,IAC/Dd,EAAMn/B,UAAQvQ,EAAQ,IAAI,EAAEiM,aAAa,UAAU,EAC9CE,oBAAMujC,CAAG,GACVhwC,KAAKqO,OAAO6P,qBAAqBC,QAAQzR,cAAc,CAAEmC,cAAe,CAACmhC,GAAM,EAEnFC,EAAa,CAAA,IAdbD,EAAMhwC,KAAKuwC,cAAchkC,aAAa,UAAU,EAChDlK,EAAOrC,KAAKqO,OAAO0E,kBAAkBC,QAAQ+9B,oBAAoBf,CAAG,EAAE3tC,KAClEoK,oBAAMzM,KAAKuwC,cAAchkC,aAAa,eAAe,CAAC,GAEtDvM,KAAKqO,OAAO0E,kBAAkBC,QAAQg+B,WAAW,CAACziC,SAASvO,KAAKuwC,cAAchkC,aAAa,eAAe,EAAG,EAAE,EAAE,EAErHowB,EAAW,CAAA,IAbN9rB,UAAQvQ,EAAQ,IAAI,EAAE2N,UAAUC,SAAS,UAAU,GACpDlO,KAAKqO,OAAO6E,qBAAqBgrB,YAAY59B,EAFnC,CAAE69B,QAAS,CAAA,EAAMC,SAAU,CAAA,EAEuB,EAEhE/7B,EAAOrC,KAAKqO,OAAOg4B,YACnB1J,EAAW,CAAA,GAoBXA,EACiC,CAAA,IAA7BtwB,WAAS,SAAUhK,CAAI,EACvBrC,KAAKixC,cAGLjxC,KAAKkxC,cAAc,CAAA,CAAK,OAI3B,GAAIjB,EAEL,GADAjwC,KAAKkxC,cAAc,CAAA,CAAI,EACnBlB,IAAQhwC,KAAKqO,OAAOvB,OAAO,GAC3B9M,KAAKmxC,cAAc7jC,KAAK,SAAU,SAAU,MAAO,MAAM,OAIzD,IADA,IAAI8jC,EAAgB,CAAC,SAAU,SAAU,MAAO,QACvCpwC,EAAI,EAAGA,EAAIhB,KAAKmxC,cAAcxwC,OAAQK,CAAC,GAAI,CAChD,IAAImU,EAAOnV,KAAKmxC,cAAcnwC,GACM,CAAC,IAAjCowC,EAAcz8B,QAAQQ,CAAI,IAC1BnV,KAAKmxC,cAAcnqB,OAAOhmB,EAAG,CAAC,EAC9BA,CAAC,QAMC,aAATqS,GAAgC,aAATA,GAAgC,cAATA,EACnDrT,KAAK2wC,cAAcrwC,CAAM,EAIzB8Q,EAAK+N,OAAS,CAAA,EAGtB,IAQQkyB,EAUJC,EAlBAC,EAAWzjC,SAAO,IAAM9N,KAAKmvC,UAAU,OAAO,EAAGnvC,KAAK2uC,YAAYzhC,OAAO,EACxEkE,EAAK+N,QAAWnf,KAAKqO,OAAOU,aAC7BwiC,CAAAA,GAAaA,EAAStjC,UAAUC,SAAS,YAAY,EAOlC,CAAC,KADhBmjC,EAAarxC,KAAKmxC,cAAcx8B,QAAQ,OAAO,IAE/C3U,KAAKmxC,cAAcnqB,OAAOqqB,EAAY,CAAC,EAPC,CAAC,IAAzCrxC,KAAKmxC,cAAcx8B,QAAQ,OAAO,GAClC3U,KAAKmxC,cAAc7jC,KAAK,OAAO,EASnC8D,EAAK+N,OACLnf,KAAK2vC,WAAa3vC,KAAKmwC,eAAiB,MAG5CnwC,KAAK2uC,YAAYxd,WACbmgB,EAAY,CAAA,GACZhxC,EAAO2N,UAAUC,SAAS0iC,EAAa,GACvCtwC,EAAO2N,UAAUC,SAASmhC,EAAa,GAAK/uC,EAAO2N,UAAUC,SAAS2iC,EAAgB,KACtFS,EAAY,CAAA,GAEhBtxC,KAAKqK,aAAeinC,EAAYtxC,KAAKqK,aAAerK,KAAKwxC,kBACrDx7B,EAAY,CACZL,YAAa,CAAC3V,KAAKqK,cACnB6C,QAASkE,EAAKlE,QACd5M,OAAQA,EACRoW,OAAO46B,EAAYlgC,EAAapR,KAAK2uC,aAAbj4B,MACxB+6B,WAAYzxC,KAAK2uC,YACjBxvB,OAAQ,CAAA,EACRswB,SAAUzvC,KAAKyvC,SACf6B,UAAWA,GAEftxC,KAAK0xC,aAAe17B,EAAUU,MAC9B1W,KAAKqO,OAAOoH,QAAQ,WAAYO,EAAW,SAAU27B,GAC5CL,IACDpX,EAAMyU,YAAYxd,WAClB+I,EAAMyU,YAAYj4B,MAAQi7B,EAAaj7B,MACvCwjB,EAAMyU,YAAYxd,YAEtB+I,EAAM0X,YAAY1X,EAAMiX,cAAe,CAAA,EAAO,CAAA,CAAI,EAClD//B,EAAK+N,OAASwyB,EAAaxyB,OACvBwyB,EAAaxyB,SACb+a,EAAMyV,WAAazV,EAAMgW,kBAAoBhW,EAAMiW,eAAiB,MAE3E,IAEL3B,EAAYtuC,UAAUuwC,mBAAqB,WACvCzwC,KAAKqO,OAAOmB,aAAeqB,UAAQ7Q,KAAK2vC,WAAY,IAAM3vC,KAAKqO,OAAOnB,QAAQZ,GAAKwkC,EAAW,EAC1F,iBAAmBjgC,UAAQ7Q,KAAK2vC,WAAY,IAAM3vC,KAAKqO,OAAOnB,QAAQZ,GAAKulC,EAAW,EACtF,cAAgBhhC,UAAQ7Q,KAAK2vC,WAAY,IAAM3vC,KAAKqO,OAAOnB,QAAQZ,GAAK2qB,EAAgB,EACxF,iBAAmBj3B,KAAKqO,OAAOmB,cASvCg/B,EAAYtuC,UAAUswC,cAAgB,SAAUlwC,GAC5C,OAAOA,EAAO2N,UAAUC,SAASC,EAAa,EAC1C,WAAa7N,EAAO2N,UAAUC,SAASsK,EAAa,EACpD,WAAalY,EAAO2N,UAAUC,SAAS4jC,EAAa,GACtCxxC,EAAO2N,UAAUC,SAAS0F,EAAe,EACvD,YAAc,IAEtB46B,EAAYtuC,UAAU6xC,aAAe,SAAU58B,GAE3C,IADA,IAAI68B,EAAShyC,KAAKmvC,UAAUh6B,CAAI,EACvBnU,EAAI,EAAGA,EAAIhB,KAAK0xC,aAAa/wC,OAAQK,CAAC,GAC3C,GAAKhB,KAAK0xC,aAAa1wC,GAAGsL,KAAO0lC,GAAYhyC,KAAK0xC,aAAa1wC,GAAGsL,KAAO6I,EACrE,OAAOnU,EAGf,MAAO,CAAC,GAEZwtC,EAAYtuC,UAAU+xC,YAAc,SAAUv7B,GACrB,IAAjBA,EAAM/V,SACNX,KAAKmxC,cAAgBnxC,KAAKmxC,cAAce,OAAOx7B,CAAK,IAG5D83B,EAAYtuC,UAAU0xC,YAAc,SAAUl7B,EAAOy7B,EAAQC,GACzD,IAAK,IAAIpxC,EAAI,EAAGA,EAAI0V,EAAM/V,OAAQK,CAAC,GACO,IAAlChB,KAAKqyC,eAAe37B,EAAM1V,EAAE,EAC5BhB,KAAK2uC,YAAYiD,YAAY,CAAC5xC,KAAKmvC,UAAUz4B,EAAM1V,EAAE,GAAImxC,EAAQC,CAAU,EAEpC,IAAlCpyC,KAAKqyC,eAAe37B,EAAM1V,EAAE,GACjChB,KAAK2uC,YAAYiD,YAAY,CAACl7B,EAAM1V,IAAKmxC,EAAQC,CAAU,GAIvE5D,EAAYtuC,UAAUgxC,cAAgB,SAAUoB,GAI5C,IAoBYC,EAvBZvyC,KAAKyvC,SAAW,SAChBzvC,KAAK2uC,YAAYj4B,MAAQ1W,KAAKwyC,YAAYxyC,KAAKqO,OAAOokC,oBAAoBjP,OAAOra,IAAI,SAAUhU,GAAQ,OAAOA,EAAKu9B,OAAS,CAAC,EAC7H1yC,KAAK2uC,YAAYxd,WACbmhB,GACIK,EAAmB7kC,SAAO,cAAgB9N,KAAKqO,OAAO6P,qBAAqBC,QAAQtP,cAAc,GAAK,KAAM7O,KAAKqO,OAAO6P,qBAAqBC,QAAQjR,OAAO,EAC5JlN,KAAKqO,OAAOrB,UAAUhN,KAAKqO,OAAOrB,UAAUrM,OAAS,KAAOgyC,EAAiB56B,cAAc,cAAc,EAAEY,WAA0C,mBAA7B3Y,KAAKqO,OAAOmB,aACpIxP,KAAKmxC,cAAc7jC,KAAK,MAAM,EAIR,CAAC,KADnBslC,EAAgB5yC,KAAKmxC,cAAcx8B,QAAQ,MAAM,IAEjD3U,KAAKmxC,cAAcnqB,OAAO4rB,EAAe,CAAC,EAGT,IAArC5yC,KAAKqO,OAAO+B,cAAczP,QAEN,CAAC,KAAjB4xC,EADcvyC,KAAKmxC,cAAcx8B,QAAQ,QAAQ,IAEjD3U,KAAKmxC,cAAcnqB,OAAOurB,EAAa,CAAC,GAId,mBAA7BvyC,KAAKqO,OAAOmB,eACwB,IAArCxP,KAAKqO,OAAO+B,cAAczP,OAEN,CAAC,KAAjB4xC,EADcvyC,KAAKmxC,cAAcx8B,QAAQ,QAAQ,IAEjD3U,KAAKmxC,cAAcnqB,OAAOurB,EAAa,CAAC,EAI5CvyC,KAAKmxC,cAAc7jC,KAAK,SAAU,OAAO,IAIrDkhC,EAAYtuC,UAAU+wC,YAAc,WAIhC,IACQsB,EAJRvyC,KAAKyvC,SAAW,OAChBzvC,KAAK2uC,YAAYj4B,MAAQ1W,KAAKwyC,YAAYxyC,KAAKqO,OAAOokC,oBAAoBh+B,KAAK0U,IAAI,SAAUhU,GAAQ,OAAOA,EAAKu9B,OAAS,CAAC,EAC3H1yC,KAAK2uC,YAAYxd,WACwB,IAArCnxB,KAAKqO,OAAO+B,cAAczP,OAEN,CAAC,KADjB4xC,EAAcvyC,KAAKmxC,cAAcx8B,QAAQ,QAAQ,IAEjD3U,KAAKmxC,cAAcnqB,OAAOurB,EAAa,CAAC,EAI5CvyC,KAAKmxC,cAAc7jC,KAAK,QAAQ,GAGxCkhC,EAAYtuC,UAAUywC,cAAgB,SAAUrwC,GAC5CN,KAAKyvC,SAAW,SAChBzvC,KAAK2uC,YAAYj4B,MAAQ1W,KAAKwyC,YAAYxyC,KAAKqO,OAAOokC,oBAAoBI,OAAO1pB,IAAI,SAAUhU,GAAQ,OAAOA,EAAKu9B,OAAS,CAAC,EAC7H1yC,KAAK2uC,YAAYxd,WACb,CAACnxB,KAAKqO,OAAOyyB,qBAA8C,eAArB9gC,KAAKqO,OAAOgF,MAC6D,IAA9GxC,UAAQvQ,EAAQ,IAAMN,KAAKqO,OAAOnB,QAAQZ,GAAK2qB,EAAgB,EAAEoZ,uBAAuBr4B,CAAS,EAAErX,QAC3E,YAArBX,KAAKqO,OAAOgF,MAC8F,IAAzGxC,UAAQvQ,EAAQ,IAAMN,KAAKqO,OAAOnB,QAAQZ,GAAKulC,EAAW,EAAExB,uBAAuBr4B,CAAS,EAAErX,OACnGX,KAAKmxC,cAAc7jC,KAAK,WAAW,EAGnCtN,KAAKmxC,cAAgBnxC,KAAKmxC,cAAct/B,OAAO,SAAUsD,GAAQ,MAAgB,cAATA,EAAuB,EAE1D,IAArCnV,KAAKqO,OAAOQ,cAAclO,QACkB,CAAC,IAAzCX,KAAKmxC,cAAcx8B,QAAQ,OAAO,GAClC3U,KAAKmxC,cAAc7jC,KAAK,OAAO,EAGvCtN,KAAK2uC,YAAYxd,YAErBqd,EAAYtuC,UAAUmyC,eAAiB,SAAUS,GAC7C,OAAKrmC,oBAAMqB,SAAO,IAAM9N,KAAKmvC,UAAU2D,CAAO,EAAG9yC,KAAKmwC,cAAc,CAAC,EAG3D1jC,oBAAMqB,SAAO,IAAMglC,EAAS9yC,KAAKmwC,cAAc,CAAC,EAI/C,CAAC,EAHD,EAHA,GASf3B,EAAYtuC,UAAUsxC,gBAAkB,WACpC,IAIQpgC,EAJR,MAAsB,WAAlBpR,KAAKyvC,SACE/8B,EAAc1S,KAAKqO,MAAM,GAG5B+C,EAAO,CAAE9Q,OAAQN,KAAK2vC,YAC1B3vC,KAAKqO,OAAOW,OAAO0wB,GAAqBtuB,CAAI,EACrCpR,KAAKqO,OAAOiD,SAAS,KAIpCk9B,EAAYtuC,UAAU4uC,SAAW,SAAU19B,GACvC,IAIImmB,EACAzU,EAcA9M,EAnBAkkB,EAAQl6B,KACRyM,CAAAA,oBAAM2E,EAAK+D,IAAI,GAAM/D,EAAK+D,KAAK7I,KAKlB,aAFbirB,EAAWnmB,EAAK+D,KAAK7I,GAAGojB,QAAQ1vB,KAAKqO,OAAOnB,QAAQZ,GAAK,QAAQ3L,MAAM,IAEhC,cAAb42B,GAAyC,WAAbA,GACtDzU,EAAU,CAACpQ,EAAc1S,KAAKqO,MAAM,GACpCrO,KAAKqO,OAAOiD,SAAWwR,IAGvB9iB,KAAKqO,OAAOW,OAAOgwB,GAAqB,EAAE,EAEtClc,EAD6B,mBAA7B9iB,KAAKqO,OAAOmB,cAAkD,SAAb+nB,EACvC,CAACv3B,KAAKqK,cAGNrK,KAAKqO,OAAOiD,UAG1B0E,EAAY,CACZmJ,OAAQ,CAAA,EACRjS,QAASkE,EAAKlE,QACdyI,YAAamN,EACb3N,KAAM/D,EAAK+D,MAEfnV,KAAKqO,OAAOoH,QAAQ,YAAaO,EAAW,SAAU+8B,GAClD,IAAIC,EACJ,GAAI,CAACD,EAAc5zB,OAEf,OADA+a,EAAM0V,kBAAoB,CAAA,EAClBrY,GACJ,IAAK,MACDhjB,GAAS2lB,EAAM7rB,MAAM,EACrB,MACJ,IAAK,OACDgG,GAAU6lB,EAAM7rB,MAAM,EACtB,MACJ,IAAK,QACsB,WAAnB6rB,EAAMuV,SAC4B,mBAA9BvV,EAAM7rB,OAAOmB,cACb0qB,EAAM7rB,OAAO6P,qBAAqB+0B,2BAA2BpiC,UAAQqpB,EAAMgW,kBAAmB,IAAI,CAAC,EACnGhW,EAAM7rB,OAAOuN,WAAase,EAAM7rB,OAAO1B,MAGvCutB,EAAM7rB,OAAOuN,WAAavF,GAAY6jB,EAAM7rB,OAAQ6rB,EAAM7vB,aAAc6vB,EAAM7rB,OAAO1B,IAAI,EAI7FutB,EAAM7rB,OAAOuN,WAAa,GAE9BF,GAAawe,EAAM7rB,MAAM,EACzB,MACJ,IAAK,SACD,IAAK,IAAIi4B,EAAI,EAAGA,EAAIxjB,EAAQniB,OAAQ2lC,CAAC,GACjC,GAAI,CAACvkB,EAAce,EAAQwjB,EAAE,EAEzB,OADAryB,KAAAA,EAAmBimB,EAAM7rB,OAAQyU,EAAQwjB,GAAItkB,CAAqB,EAI1E/F,EAAaie,EAAM7rB,OAAQ,QAAQ,EACnC,MAEJ,IAAK,WACD,IAAK,IAAIrN,EAAI,EAAGA,EAAI8hB,EAAQniB,OAAQK,CAAC,GACjC,GAAI,CAACkhB,GAAkBY,EAAQ9hB,EAAE,EAE7B,OADAiT,KAAAA,EAAmBimB,EAAM7rB,OAAQyU,EAAQ9hB,GAAImhB,EAAyB,EAI5C,mBAA9B+X,EAAM7rB,OAAOmB,aACb0qB,EAAM7rB,OAAOW,OAAOkkC,GAAqB,EAAE,EAEF,EAApChZ,EAAM7rB,OAAO+B,cAAczP,QAChCyhB,GAAS8X,EAAM7rB,OAAQ6rB,EAAM7rB,OAAO1B,KAAMutB,EAAM7rB,OAAO+B,aAAa,EAExE,MACJ,IAAK,SACI2R,EAAce,EAAQ,EAAE,GAIzBoX,EAAM7rB,OAAOW,OAAOuwB,GAAmB,EAAE,EACzCtjB,EAAaie,EAAM7rB,OAAQ,QAAQ,GAJnC4F,EAAmBimB,EAAM7rB,OAAQyU,EAAQ,GAAId,CAAqB,EAMtE,MACJ,IAAK,YAEDkY,EAAM7rB,OAAOW,OAAOwwB,GAAsB,EAAE,EAC5C,MACJ,IAAK,UACD1rB,GAAQomB,EAAM7rB,MAAM,EACpB,MACJ,IAAK,OACG6rB,EAAM7rB,OAAOkoB,aAA6C,mBAA9B2D,EAAM7rB,OAAOmB,aACzC0qB,EAAM7rB,OAAOW,OAAOiwB,GAAiB,CAAE3+B,OAAQ45B,EAAM7rB,OAAOkoB,YAAa,EAEtC,mBAA9B2D,EAAM7rB,OAAOmB,eACd0qB,EAAM7rB,OAAOkoB,aACb2D,EAAM7rB,OAAOW,OAAOiwB,GAAiB,CAAE3+B,OAAQ45B,EAAM7rB,OAAOkoB,YAAa,EAE7E2D,EAAM7rB,OAAO6P,qBAAqB+0B,2BAA2BpiC,UAAQqpB,EAAMgW,kBAAmB,IAAI,CAAC,GAEvG,MACJ,IAAK,UACDhW,EAAM7rB,OAAOW,OAAOmxB,EAAoB,EAAE,EAC1C6S,EAAS9Y,EAAM7rB,OAAO+B,cACY,mBAA9B8pB,EAAM7rB,OAAOmB,eACbwjC,EAAS,GACT9Y,EAAM7rB,OAAO6P,qBAAqB+0B,2BAA2BpiC,UAAQqpB,EAAMgW,kBAAmB,IAAI,CAAC,GAEvG/qB,GAAW+U,EAAM7rB,OAAQ2kC,EAAQ9Y,EAAM7rB,OAAO1B,KAAM,SAAS,EAC7D,MACJ,IAAK,YACDkW,GAAgBqX,EAAM7rB,MAAM,EAC5B,MACJ,IAAK,SACD2U,GAAWkX,EAAM7rB,MAAM,EACvB,MACJ,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,YACL,IAAK,aAKL,IAAK,OAED4L,GAAmBigB,EAAM7rB,OAAQ+C,CAAI,EACrC,MAEJ,IAAK,iBACDgC,GAAa8mB,EAAM7rB,OAAQ,YAAY,EACvC,MAEJ,IAAK,cACD+E,GAAa8mB,EAAM7rB,OAAQ,SAAS,GAInD,IAELmgC,EAAYtuC,UAAUi/B,kBAAoB,SAAUjS,GAChD,GAAIA,EAAE7S,SAAWra,KAAKu7B,iBAAgC,WAAbrO,EAAE7S,OAI3C,IAAK,IAAIsmB,EAAK,EAAGC,EAAKrhC,OAAOkiB,KAAKyL,EAAE2T,OAAO,EAAGF,EAAKC,EAAGjgC,OAAQggC,CAAE,GAGnD,aAFEC,EAAGD,KAGN3gC,KAAK2uC,YAAY30B,SAAWF,GAAY9Z,KAAKqO,OAAQwiB,EAAc,IAKnF2d,EAAYtuC,UAAUs5B,iBAAmB,WACrCx5B,KAAKqO,OAAOoyB,GAAG2N,GAAgBpuC,KAAKoJ,QAASpJ,IAAI,EACjDA,KAAKqO,OAAOoyB,GAAGvB,EAAqBl/B,KAAKm/B,kBAAmBn/B,IAAI,EAChEA,KAAKghC,eAAiB,IAAIC,iBAAejhC,KAAK2uC,YAAYzhC,QAAS,CAC/Dg0B,UAAWlhC,KAAKmhC,iBAAiBlS,KAAKjvB,IAAI,EAC1CohC,WAAYphC,KAAKohC,WACjBnmB,UAAW,UACd,GAELuzB,EAAYtuC,UAAU42B,oBAAsB,WACxC92B,KAAKqO,OAAO0wB,IAAIqP,GAAgBpuC,KAAKoJ,OAAO,EAC5CpJ,KAAKqO,OAAO0wB,IAAIG,EAAqBl/B,KAAKm/B,iBAAiB,EAC3Dn/B,KAAKghC,eAAe53B,WAExBolC,EAAYtuC,UAAUihC,iBAAmB,SAAUjU,GAC/C,OAAQA,EAAE/d,QACN,IAAK,UACL,IAAK,YACD+d,EAAEkH,mBASdoa,EAAYtuC,UAAUq7B,cAAgB,WAClC,MAAO,eAEXiT,EAAYtuC,UAAUkJ,QAAU,WACxBpJ,KAAKqO,OAAOywB,cAGhB9+B,KAAK82B,sBACL92B,KAAK2uC,YAAYvlC,UACjBpJ,KAAKuwC,cAAgB,OAGzB/B,EAAYtuC,UAAUsyC,YAAc,SAAUnwC,GAE1C,IADA,IAAIqU,EAAQ,GACH1V,EAAI,EAAGA,EAAIqB,EAAK1B,OAAQK,CAAC,GAAI,CAClC,IAAImU,EAAO,KAAA,EACP68B,EAAShyC,KAAKmvC,UAAU9sC,EAAKrB,EAAE,EAC/Bu2B,EAAW3e,EAAc5Y,KAAKqO,OAAQhM,EAAKrB,EAAE,EACjD,OAAQqB,EAAKrB,IACT,IAAK,IACDmU,EAAO,CAAEg+B,UAAW,CAAA,GACpB,MACJ,IAAK,OACDh+B,EAAO,CAAE7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUK,QAASwb,IAC9C,MACJ,IAAK,SACDj+B,EAAO,CAAE7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUK,QAASyb,IAC9C,MACJ,IAAK,MACDl+B,EAAO,CAAE7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUK,QAAS0b,IAC9C,MACJ,IAAK,OACDn+B,EAAO,CAAE7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUK,QAAS2b,IAC9C,MACJ,IAAK,QACDp+B,EAAO,CAAE7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUK,QAAS4b,IAC9C,MACJ,IAAK,SACDr+B,EAAO,CAAE7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUK,QAAS6b,IAC9C,MACJ,IAAK,SACDt+B,EAAO,CAAE7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUK,QAAS8b,IAC9C,MACJ,IAAK,YACDv+B,EAAO,CAAE7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUK,QAAS+b,IAC9C,MACJ,IAAK,UACDx+B,EAAO,CAAE7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUK,QAASgc,IAC9C,MACJ,IAAK,SACDz+B,EAAO,CACH7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUK,QAASic,GACrCn9B,MAAO,CACH,CACIpK,GAAItM,KAAKmvC,UAAU,MAAM,EAAG/iC,KAAMwM,EAAc5Y,KAAKqO,OAAQ,MAAM,EACnEupB,QAAgC,SAAvB53B,KAAKqO,OAAOyI,OAAoBg9B,GAAoB,MAEjE,CACIxnC,GAAItM,KAAKmvC,UAAU,MAAM,EAAG/iC,KAAMwM,EAAc5Y,KAAKqO,OAAQ,MAAM,EACnEupB,QAAgC,SAAvB53B,KAAKqO,OAAOyI,OAAoBg9B,GAAoB,MAEjE,CACIxnC,GAAItM,KAAKmvC,UAAU,MAAM,EAAG/iC,KAAMwM,EAAc5Y,KAAKqO,OAAQ,cAAc,EAC3EupB,QAAgC,iBAAvB53B,KAAKqO,OAAOyI,OAA4Bg9B,GAAoB,MAEzE,CAAEX,UAAW,CAAA,GACb,CACI7mC,GAAItM,KAAKmvC,UAAU,WAAW,EAAG/iC,KAAMwM,EAAc5Y,KAAKqO,OAAQ,WAAW,EAC7EupB,QAAmC,cAA1B53B,KAAKqO,OAAOuI,UAA4Bm9B,EAAqB,MAE1E,CACIznC,GAAItM,KAAKmvC,UAAU,YAAY,EAAG/iC,KAAMwM,EAAc5Y,KAAKqO,OAAQ,YAAY,EAC/EupB,QAAmC,eAA1B53B,KAAKqO,OAAOuI,UAA6Bm9B,EAAqB,MAE3E,CACIznC,GAAItM,KAAKmvC,UAAU,MAAM,EAAG/iC,KAAMwM,EAAc5Y,KAAKqO,OAAQ,MAAM,EACnEupB,QAAmC,SAA1B53B,KAAKqO,OAAOuI,UAAuBm9B,EAAqB,QAI7E,MAEJ,IAAK,OACD5+B,EAAO,CACH7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUK,QAA8B,YAArB53B,KAAKqO,OAAOgF,KAAqBi8B,GAAgBF,GACtF14B,MAAO,CACH,CACIpK,GAAItM,KAAKmvC,UAAU,gBAAgB,EAAG/iC,KAAMwM,EAAc5Y,KAAKqO,OAAQ,iBAAiB,EACxFupB,QAA8B,YAArB53B,KAAKqO,OAAOgF,KAAqB,KAAO0gC,GAErD,CACIznC,GAAItM,KAAKmvC,UAAU,aAAa,EAAG/iC,KAAMwM,EAAc5Y,KAAKqO,OAAQ,cAAc,EAClFupB,QAA8B,YAArB53B,KAAKqO,OAAOgF,KAAqB0gC,EAAqB,QAI3E,MACJ,IAAK,UACD5+B,EAAO,CAAE7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUK,QAASoc,IAC9C,MACJ,IAAK,YACD7+B,EAAO,CAAE7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUK,QAASqc,IAC9C,MAEJ,IAAK,WACD9+B,EAAO,CAAE7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUK,QAASsc,IAC9C,MAEJ,QACI/+B,EAAO,CAAE7I,GAAI0lC,EAAQ5lC,KAAMmrB,GAGnC7gB,EAAMpJ,KAAK6H,CAAI,EAEnB,OAAOuB,GAEX83B,EAAYtuC,UAAUivC,UAAY,SAAU7iC,GACxC,OAAOtM,KAAKqO,OAAOnB,QAAQZ,GAAK,OAASA,EAAGsI,MAAM,GAAG,EAAEC,KAAK,EAAE,EAAEvC,mBAzpBpEk8B,GA2pBOA,EAppBP,SAASA,EAAYngC,GACjBrO,KAAK4vC,kBAAoB,CAAA,EACzB5vC,KAAK0xC,aAAe,GACpB1xC,KAAKmwC,eAAiB,KACtBnwC,KAAKmxC,cAAgB,GACrBnxC,KAAKqO,OAASA,EACdrO,KAAKs2B,SCvBN,ICFCl3B,GAqDmCS,GA2uCnCs0C,GD9xCGC,GAAgB,CACvBC,UAAa,aACbC,OAAU,SACV/xB,OAAU,SACVgyB,OAAU,SACVnyB,SAAY,WACZoyB,IAAO,MACPC,KAAQ,OACRC,MAAS,QACTC,OAAU,UACVC,QAAW,UACXC,iBAAkB,gBAClBC,kBAAmB,iBACnBC,KAAQ,OACRC,QAAW,UACXC,UAAa,aACbC,KAAQ,OACRC,oBAAqB,aACrBC,iBAAkB,SAClBC,iBAAkB,SAClBC,iBAAkB,SAClBC,mBAAoB,WACpBC,cAAe,MACfC,eAAgB,OAChBC,gBAAiB,QACjBC,iBAAkB,UAClBC,kBAAmB,UACnBC,oBAAqB,kBACrBC,eAAgB,OAChBC,kBAAmB,UACnBC,oBAAqB,aACrBC,KAAQ,OACRC,KAAQ,OACRC,aAAgB,WAChBC,YAAe,eACfC,KAAQ,OACRC,SAAY,WACZC,QAAW,UACXC,SAAY,WACZC,KAAQ,OACRC,WAAc,aACdC,UAAa,YACbC,WAAc,aACdC,KAAQ,OACRC,kBAAmB,cACnBC,eAAgB,UAChBxkC,OAAU,SACVykC,YAAa,KACbC,gBAAiB,SACjBC,aAAc,MACdC,YAAa,KACbC,gBAAiB,SACjBC,cAAe,OACfC,mBAAoB,SACpBC,oBAAqB,yBACrBC,gBAAiB,SACjBC,iBAAkB,sBAClBC,6BAA8B,sBAC9BC,8BAA+B,2GAE/BC,gBAAiB,cACjBC,iBAAkB,6CAClBC,uBAAwB,gBACxBC,wBAAyB,+CACzBC,yBAA0B,wBAC1BC,0BAA2B,mDAC3BC,mBAAoB,qBACpBC,oBAAqB,uDACrBC,gBAAiB,eACjBC,MAAS,QACTC,mBAAoB,2CACpBC,qBAAsB,kNAGtBC,8BAA+B,qDAC/BC,2BAA4B,wDAC5BC,eAAgB,uBAChBC,cAAe,4BACfC,eAAgB,mBAChBC,aAAc,8BACdC,eAAgB,mBAChBC,aAAc,4BACdC,mBAAoB,gEACpBC,oBAAqB,2DACrBC,gBAAiB,gBACjBC,iBAAkB,mDAClBC,eAAgB,sBAChBC,gBAAiB,kFACjBC,mBAAoB,YACpBC,iBAAkB,UAClBC,cAAe,OACfC,iBAAkB,gCAClBC,GAAM,KACNC,iBAAkB,wEAClBC,gBAAiB,iEACjBC,eAAgB,oCACpB,ECnGI/5C,GACIV,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,GAEtB,SAAUD,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,KAGnFK,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,EAoCIk5C,GAAuCj6C,GAg7CzCk6C,YA/6CEj6C,EAAUg6C,EAAaj6C,EAAM,GAoD7Bs0C,GAAgB2F,GAOJ55C,UAAUq7B,cAAgB,WAClC,MAAO,eAOXue,EAAY55C,UAAU85C,UAAY,WAC1BvtC,CAAAA,oBAAMzM,KAAKkN,QAAQZ,EAAE,GAAyB,KAApBtM,KAAKkN,QAAQZ,IACvCtM,KAAKkN,QAAQypB,aAAa,KAAMsjB,cAAY,aAAa,CAAC,EAE9Dj6C,KAAKk6C,aACLl6C,KAAKyO,SAAW,GAChBzO,KAAKmX,QAAU,GACfgjC,oBAAQn6C,KAAKkN,QAAS,CAAE/K,MAASi4C,aAAWp6C,KAAKmC,KAAK,EAAGizB,OAAUglB,aAAWp6C,KAAKo1B,MAAM,EAAG,EAC5Fp1B,KAAK+hC,SAAWsY,UAAQtY,SACxB/hC,KAAKma,SAAWna,KAAKs6C,cACjBt6C,KAAKma,UACLna,KAAK0M,cAAc,CAAE6tC,uBAAwB,CAAEtvB,QAAS,CAAA,IAAW,CAAA,CAAI,EAE3E,IAAIpM,EAAMhO,UAAQ7Q,KAAKkN,QAAS,WAAW,EAC3ClN,KAAKw6C,SAAW37B,CAAAA,CAAAA,EAChB7e,KAAKwP,aAA8B,eAAdxP,KAAKqT,KAAyB,iBAAmB,cACtEonC,gBAAc,CAAEn6C,OAAQN,KAAKkN,SAAWgL,eAAa,EACrDlY,KAAK06C,aACL16C,KAAKohC,WAAa,CACduZ,KAAM,QACNC,GAAI,KACJC,WAAY,eACZC,WAAY,eACZC,MAAO,UAEX/6C,KAAK4Z,UAAY,IAAIohC,OAAKh7C,KAAKu7B,gBAAiB6Y,GAAep0C,KAAK2Z,MAAM,GAQ9EmgC,EAAY55C,UAAU+6C,eAAiB,WAEnC,OAAOj7C,KAAKk7C,aADI,CAAC,OAAQ,OAAQ,gBACC,GAQtCpB,EAAY55C,UAAUi7C,gBAAkB,WACpC,IAAIC,EAAU,GA4Cd,OA3CAA,EAAQ9tC,KAAK,CACT+tC,OAAQ,gBACRjqC,KAAM,CAACpR,MACV,EACDo7C,EAAQ9tC,KAAK,CACT+tC,OAAQ,iBACRjqC,KAAM,CAACpR,MACV,EACGA,KAAKs7C,gBAAgBrwB,SACrBmwB,EAAQ9tC,KAAK,CACT+tC,OAAQ,UACRjqC,KAAM,CAACpR,MACPwW,KAAM,UACT,EAEDxW,KAAKu6C,uBAAuBtvB,SAC5BmwB,EAAQ9tC,KAAK,CACT+tC,OAAQ,iBACRjqC,KAAM,CAACpR,MACPwW,KAAM,iBACT,EAEDxW,KAAKqT,MACL+nC,EAAQ9tC,KAAK,CACT+tC,OAAQ,cACRjqC,KAAM,CAACpR,MACPwW,KAAM,cACT,EAEDxW,KAAKyyC,oBAAoBxnB,SAAW,CAACjrB,KAAK+hC,UAC1CqZ,EAAQ9tC,KAAK,CACT+tC,OAAQ,cACRjqC,KAAM,CAACpR,MACPwW,KAAM,cACT,EAEDxW,KAAKs4B,sBACL8iB,EAAQ9tC,KAAK,CACT+tC,OAAQ,iBACRjqC,KAAM,CAACpR,MACPwW,KAAM,iBACT,EAEE4kC,GAQXtB,EAAY55C,UAAUo2B,OAAS,WAC3Bt2B,KAAKu7C,aACL,IAAIC,EAAU/uC,oBAAMzM,KAAKoQ,aAAa,EAAI,GACtCpQ,KAAK8gC,oBAAsB9gC,KAAKoQ,cAAgBpQ,KAAKoQ,cAAcyoB,MAAM74B,KAAKoQ,cAAczP,OAAS,CAAC,EAC1GX,KAAK0M,cAAc,CAAE0D,cAAeorC,GAAW,CAAA,CAAI,EACnDx7C,KAAKy7C,SAAWz7C,KAAKqT,KACrBrT,KAAKqpC,MAA2D,GAAnDqS,UAAUC,SAASC,cAAcjnC,QAAQ,KAAK,EAC3D3U,KAAK67C,OAAO77C,KAAK8wB,SAAS,EAC1B9wB,KAAK87C,oBACLtqC,EAAKxR,KAAOA,KAAK2M,OAAS3M,KAAK+a,aAAgBI,GAAoBD,EAAoBlb,KAAK2M,IAAI,EAC1E,YAAlB3M,KAAKy7C,UACLz7C,KAAKkT,qBAAqBhG,QAAQe,UAAUqC,IAAI+nB,EAAgB,EAEpEr4B,KAAK+7C,eACDtvC,oBAAMzM,KAAKke,oBAAoB,IAC/Ble,KAAKg8C,YAAYC,SAASj8C,KAAK8wB,UAAY,EAAI,CAAC,EACtChjB,SAAO,IAAMouC,GAAel8C,KAAKkN,OAAO,EAC9Ce,UAAUqC,IAAI+nB,EAAgB,GAEtCr4B,KAAKy5B,aACLz5B,KAAKm8C,kBAETrC,EAAY55C,UAAUg6C,WAAa,WAC/B,IAAI5M,EAActtC,KAAK2M,KAQnBs9B,IANAqD,EADA7gC,oBAAM6gC,CAAW,EACH,IAEdA,GAAY7yB,YAAY,GAAG,IAAO6yB,EAAY3sC,OAAS,IACvD2sC,GAA4B,MAEhCttC,KAAK+a,aAAeuyB,GACI14B,MAAM,GAAG,GACjC5U,KAAK0M,cAAc,CAAEC,KAAMs9B,EAAM,GAAK,KAAO,CAAA,CAAI,EACjDjqC,KAAKgN,UAAY,GACjBhN,KAAK8M,OAAS,CAAC,WACf9M,KAAKsR,SAAW,IAEpBwoC,EAAY55C,UAAUq7C,WAAa,WAC3Bv7C,KAAKma,UACLqoB,WAAS,CAACxiC,KAAKkN,SAAUkvC,EAAU,EAEnCp8C,KAAK8gC,qBACL0B,WAAS,CAACxiC,KAAKkN,SAAUmvC,EAAgB,EAE7Cr8C,KAAKs8C,YAAY,KAAMt8C,KAAKga,QAAQ,EACpCha,KAAKu8C,oBAETzC,EAAY55C,UAAUw6C,WAAa,WAC/B,IAAI8B,EAAax8C,KAAKkY,cAAc,MAAO,CAAE5L,GAAItM,KAAKkN,QAAQZ,GAAKokC,GAAgB,EAE/E+L,GADJz8C,KAAKkN,QAAQuL,YAAY+jC,CAAU,EAClBx8C,KAAKkY,cAAc,MAAO,CACvC5L,GAAItM,KAAKkN,QAAQZ,GAAKkL,GAAeW,UAAWukC,GACnD,GAEGC,GADJ38C,KAAKkN,QAAQuL,YAAYgkC,CAAU,EACdz8C,KAAKkY,cAAc,MAAO,CAC3C5L,GAAItM,KAAKkN,QAAQZ,GAAKswC,GAAmBzkC,UAAW0kC,GACvD,GACGC,EAAW98C,KAAKkY,cAAc,MAAO,CACrC5L,GAAItM,KAAKkN,QAAQZ,GAAKwkC,GACzB,EAEGiM,GADJJ,EAAelkC,YAAYqkC,CAAQ,EACjB98C,KAAKkY,cAAc,MAAO,CACxC5L,GAAItM,KAAKkN,QAAQZ,GAAKoT,GAAgBvH,UAAW6kC,GACpD,GAMGC,GALJj9C,KAAKyqC,wBAA0BzqC,KAAKkY,cAAc,MAAO,CACrD5L,GAAItM,KAAKkN,QAAQZ,GAAKoL,GACtBS,UAAW+kC,GACd,EACDH,EAAYtkC,YAAYzY,KAAKyqC,uBAAuB,EACrCzqC,KAAKkY,cAAc,MAAO,CACrC5L,GAAItM,KAAKkN,QAAQZ,GAAKulC,GACzB,GAEGsL,GADJJ,EAAYtkC,YAAYwkC,CAAQ,EACZj9C,KAAKkY,cAAc,MAAO,CAC1C5L,GAAItM,KAAKkN,QAAQZ,GAAK2qB,GACtB9e,UAAWvE,GAAiB0Y,MAAO,CAAE8wB,KAAQ,SAChD,GAEGC,GADJN,EAAYtkC,YAAY0kC,CAAa,EACvBn9C,KAAKkY,cAAc,OAAQ,CAAEC,UAAWmlC,GAAa,GAkC/DC,GAjCJR,EAAYtkC,YAAY4kC,CAAO,EAgB3BG,EAdCx9C,KAAK8wB,WAYN2rB,EAAWhkC,YAAYskC,CAAW,EAClCN,EAAWhkC,YAAYkkC,CAAc,EACtB,CACX,CAAEr6C,KAAM,MAAOm7C,IAAK,SACpB,CACIn7C,KAAM,MAAOm7C,IAAKz9C,KAAKu6C,uBAAuB14C,SAAS2M,WACvDkvC,IAAK19C,KAAKu6C,uBAAuBoD,SAASnvC,eAjBlDiuC,EAAWhkC,YAAYkkC,CAAc,EACrCF,EAAWhkC,YAAYskC,CAAW,EACnB,CACX,CACIz6C,KAAM,MAAOm7C,IAAKz9C,KAAKu6C,uBAAuB14C,SAAS2M,WACvDkvC,IAAK19C,KAAKu6C,uBAAuBoD,SAASnvC,YAE9C,CAAElM,KAAM,MAAOm7C,IAAK,WAc5Bz9C,KAAKg8C,YAAc,IAAI4B,WAAS,CAC5BJ,aAAcA,EACdr7C,MAAO,OACP2uB,UAAW,CAAA,EACXC,oBAAqB/wB,KAAK+wB,oBAC1B0E,SAAUz1B,KAAKkJ,eAAe+lB,KAAKjvB,IAAI,EAC1C,EACDA,KAAKg8C,YAAYhrB,iBAAmB,CAAA,EACpChxB,KAAKg8C,YAAY/qB,SAASwrB,CAAU,EACnBz8C,KAAKkY,cAAc,MAAO,CAAE5L,GAAItM,KAAKkN,QAAQZ,GAAK4kB,GAAe,GAE9E2sB,GADJ79C,KAAKkN,QAAQuL,YAAY8kC,CAAU,EACpBv9C,KAAKkY,cAAc,KAAM,CAAE5L,GAAItM,KAAKkN,QAAQZ,GAAK2iC,GAAqB,GAEjF6O,GADJ99C,KAAKkN,QAAQuL,YAAYolC,CAAQ,EACb79C,KAAKkY,cAAc,MAAO,CAAE5L,GAAItM,KAAKkN,QAAQZ,GAAKqpB,GAAmB,GAErFooB,GADJ/9C,KAAKkN,QAAQuL,YAAYqlC,CAAa,EACjB99C,KAAKkY,cAAc,MAAO,CAAE5L,GAAItM,KAAKkN,QAAQZ,GAAKsmB,GAAoB,GAEvForB,GADJh+C,KAAKkN,QAAQuL,YAAYslC,CAAc,EAChB/9C,KAAKkY,cAAc,MAAO,CAAE5L,GAAItM,KAAKkN,QAAQZ,GAAK2xC,GAAsB,GAC/Fj+C,KAAKkN,QAAQuL,YAAYulC,CAAgB,GAE7ClE,EAAY55C,UAAU67C,aAAe,WACjC,IAAImC,EAAUpwC,SAAO,IAAM9N,KAAKkN,QAAQZ,GAAKokC,GAAgB1wC,KAAKkN,OAAO,EACrEixC,EAAgBD,EAAUA,EAAQvmC,aAAe,EACjD3X,KAAKg8C,cACLh8C,KAAKg8C,YAAY5mB,QAAUp1B,KAAKkN,QAAQ4T,aAAeq9B,GAAe3vC,WACtExO,KAAKg8C,YAAY7qB,aAIzB2oB,EAAY55C,UAAUgJ,eAAiB,WACnClJ,KAAKgP,OAAO4wB,GAAuB,EAAE,GAEzCka,EAAY55C,UAAUk+C,eAAiB,WACnC,IAAIC,EAAMvwC,SAAO,IAAMouC,GAAel8C,KAAKkN,OAAO,EAC9ClN,KAAKu6C,uBAAuBtvB,SAC5BjrB,KAAKg8C,YAAYsC,OAAOt+C,KAAK8wB,UAAY,EAAI,CAAC,EAC9CutB,EAAIpwC,UAAU0C,OAAO0nB,EAAgB,IAGrCr4B,KAAKg8C,YAAYC,SAASj8C,KAAK8wB,UAAY,EAAI,CAAC,EAChDutB,EAAIpwC,UAAUqC,IAAI+nB,EAAgB,IAG1CyhB,EAAY55C,UAAUo8C,YAAc,SAAUiC,EAAQC,GAC7C/xC,oBAAM8xC,CAAM,GAAgB,KAAXA,GAClBlb,cAAY,CAACrjC,KAAKkN,SAAUqxC,EAAO3pC,MAAM,GAAG,CAAC,EAE5CnI,oBAAM+xC,CAAM,GAAgB,KAAXA,GAClBhc,WAAS,CAACxiC,KAAKkN,SAAUsxC,EAAO5pC,MAAM,GAAG,CAAC,GAGlDklC,EAAY55C,UAAUu2B,YAAc,WAChCA,cAAYz2B,KAAKkN,OAAO,GAE5B4sC,EAAY55C,UAAU25B,YAAc,WAChCA,cAAY75B,KAAKkN,OAAO,GAE5B4sC,EAAY55C,UAAUu+C,cAAgB,SAAUvxB,GAC5CA,EAAEkH,kBAEN0lB,EAAY55C,UAAUo6C,YAAc,WAChC,MAAQ,kFAAkF3lB,KAAK0lB,UAAQqE,UAAUpsC,aAAa,GACvH,UAAUqiB,KAAK0lB,UAAQqE,UAAUpsC,aAAa,GAEzDwnC,EAAY55C,UAAUq8C,iBAAmB,WACrC,IAAIjwC,EAAKtM,KAAKkN,QAAQZ,GAAK4W,GACvBy7B,EAAY3+C,KAAKkY,cAAc,QAAS,CAAE5L,GAAIA,EAAIggB,MAAO,CAAE9V,KAAM,cAAevU,KAAM,QAAU,EACpGjC,KAAKkN,QAAQuL,YAAYkmC,CAAS,EAClC3+C,KAAK4+C,gBAAkB,IAAI5uB,SAAO,CAC9BjC,OAAQnV,EAAc5Y,KAAM,eAAe,EAC3CguB,QAAS2wB,EACTtuB,kBAAmB,CAAEC,OAAQ,QAC7BC,cAAe,CAAA,EACfC,cAAe,CAAA,EACfvF,QAAS,CAAA,EACTyF,QAAS,CAAA,EACTvuB,MAAO,QACP7B,OAAQN,KAAK2wB,aAAiC,IAAM3wB,KAAKkN,QAAQZ,GACjE0N,SAAUF,GAAY9Z,KAAMA,KAAKma,SAAWyW,GAAgBC,EAAc,EAC1ElX,OAAQ3Z,KAAK2Z,OACb8W,cAAe,CAAA,EACf9P,SAAU,CAAE2U,EAAG,SAAUC,EAAG,UAC5BzE,UAAW9wB,KAAK8wB,UAChBC,oBAAqB/wB,KAAK+wB,oBAC1B5C,KAAMnuB,KAAK6+C,OAAO5vB,KAAKjvB,IAAI,EAC3BquB,MAAOruB,KAAK8+C,QAAQ7vB,KAAKjvB,IAAI,EAC7BiwB,WAAYjwB,KAAK+uC,aAAa9f,KAAKjvB,IAAI,EACvCmwB,YAAanwB,KAAKgvC,cAAc/f,KAAKjvB,IAAI,EAC5C,EACDA,KAAK4+C,gBAAgB3tB,SAAS,IAAMjxB,KAAKkN,QAAQZ,GAAK2xC,EAAoB,EAC1Ej+C,KAAK++C,mBAETjF,EAAY55C,UAAU6+C,gBAAkB,WACpC,IAAIC,EAAYh/C,KAAK6V,aAAampC,WAA0Ch/C,KAAK6V,aAAaC,IAC9F9V,KAAKwf,UAAY,IAAIy/B,WAAS,CAC1Bx/B,SAAU3R,SAAO,IAAM9N,KAAKkN,QAAQZ,GAAKoT,GAAgB1f,KAAKkN,OAAO,EACrEgyC,cAAe,CACXC,QAASH,EACTI,UAAWJ,GAEfrlC,OAAQ3Z,KAAK2Z,OACbmX,UAAW9wB,KAAK8wB,UAChBuuB,UAAWr/C,KAAKs/C,YAAYrwB,KAAKjvB,IAAI,EACrCu/C,SAAUv/C,KAAKw/C,WAAWvwB,KAAKjvB,IAAI,EACnCy/C,UAAWz/C,KAAK0/C,SAASzwB,KAAKjvB,IAAI,EAClC2/C,SAAU3/C,KAAK4/C,WAAW3wB,KAAKjvB,IAAI,EACnC28B,SAAU38B,KAAK6/C,WAAW5wB,KAAKjvB,IAAI,EACnC8/C,QAAS9/C,KAAK+/C,gBAAgB9wB,KAAKjvB,IAAI,EACvCggD,QAAShgD,KAAKigD,gBAAgBhxB,KAAKjvB,IAAI,EACvCkgD,WAAYlgD,KAAKmgD,eAAeD,WAChCE,YAAapgD,KAAKmgD,eAAeC,YACjCC,YAAargD,KAAKmgD,eAAeE,YACjCC,kBAAmBtgD,KAAKmgD,eAAeG,kBACvCC,gBAAiBvgD,KAAKmgD,eAAeI,gBACrCC,kBAAmBxgD,KAAKygD,iBAAiBxxB,KAAKjvB,IAAI,EACrD,EACDA,KAAKwf,UAAUyR,SAAS,IAAMjxB,KAAKkN,QAAQZ,GAAK4W,EAAa,GAEjE42B,EAAY55C,UAAUugD,iBAAmB,SAAUrvC,GAC/CpR,KAAKyV,QAAQ,mBAAoBrE,CAAI,GAEzC0oC,EAAY55C,UAAUwgD,eAAiB,WACnC1gD,KAAKwf,UAAU0gC,WAAalgD,KAAKmgD,eAAeD,WAChDlgD,KAAKwf,UAAU4gC,YAAcpgD,KAAKmgD,eAAeC,YACjDpgD,KAAKwf,UAAU6gC,YAAcrgD,KAAKmgD,eAAeE,YACjDrgD,KAAKwf,UAAU8gC,kBAAoBtgD,KAAKmgD,eAAeG,kBACvDtgD,KAAKwf,UAAU+gC,gBAAkBvgD,KAAKmgD,eAAeI,gBACrDvgD,KAAKwf,UAAU2R,YAEnB2oB,EAAY55C,UAAU6uC,aAAe,SAAU39B,GAC3C,IAAI4E,EAAY,CACZmJ,OAAQ/N,EAAK+N,OAAQ4T,UAAW,SAAUC,YAAahzB,KAAK4+C,iBAEhE5+C,KAAKyV,QAAQ,kBAAmBO,EAAW,SAAUid,GACjD7hB,EAAK+N,OAAS8T,EAAU9T,OAC3B,GAEL26B,EAAY55C,UAAU8uC,cAAgB,SAAU59B,GAC5C,IAAI4E,EAAY,CACZmJ,OAAQ/N,EAAK+N,OAAQ4T,UAAW,SAAUC,YAAahzB,KAAK4+C,iBAEhE5+C,KAAKyV,QAAQ,mBAAoBO,EAAW,SAAUid,GAClD7hB,EAAK+N,OAAS8T,EAAU9T,OAC3B,GAEL26B,EAAY55C,UAAU2+C,OAAS,WAC3B7+C,KAAK2gD,SAAW,CAAA,EAChB3gD,KAAK4+C,gBAAgB1xC,QAAQ6hB,QAC7B,IAAI3d,EAAO,CACP4hB,YAAahzB,KAAK4+C,gBAAiB7rB,UAAW,SAC9C7lB,QAASlN,KAAK4+C,gBAAgB1xC,SAElClN,KAAKyV,QAAQ,YAAarE,CAAI,GAElC0oC,EAAY55C,UAAU4+C,QAAU,WAC5B9+C,KAAK2gD,SAAW,CAAA,EAChB3gD,KAAKwf,UAAUohC,WACf,IAAIxvC,EAAO,CACP4hB,YAAahzB,KAAK4+C,gBAAiB7rB,UAAW,SAC9C7lB,QAASlN,KAAK4+C,gBAAgB1xC,SAElClN,KAAKyV,QAAQ,aAAcrE,CAAI,GAGnC0oC,EAAY55C,UAAUo/C,YAAc,SAAUluC,GAC1C,IAAIjC,EAAS,OACb,GAA+B,IAA1BnP,KAAKqzB,UAAU1yB,OAChB,IAAK,IAAIK,EAAI,EAAGA,EAAIhB,KAAKqzB,UAAU1yB,OAAQK,CAAC,GACpCoQ,EAAKuW,SAASnR,OAASxW,KAAKqzB,UAAUryB,GAAGyT,KAAK+B,OAC9CrH,EAASnP,KAAKqzB,UAAUryB,GAAGmO,OAC3BnP,KAAKqzB,UAAUrM,OAAOhmB,EAAG,CAAC,EAC1BA,EAAIhB,KAAKqzB,UAAU1yB,QAI/B,IAAI0B,EAAOkmB,KAAKC,UAAUnc,WAASrM,KAAK8M,OAAO9M,KAAK8M,OAAOnM,OAAS,GAAIX,KAAKyO,QAAQ,CAAC,EACtF2C,EAAKyvC,eAAiB,CAAC,CAAEl0C,KAAQ3M,KAAK2M,MAAQ,CAAEwC,OAAUA,GAAU,CAAE9M,KAAQA,GAAQ,CAAEy+C,SAAY1vC,EAAKuW,SAASnR,OAE9GX,EAAe,CACfC,IAFY9V,KAAK6V,aAAampC,WAA0Ch/C,KAAK6V,aAAaC,IAG1F7T,KAAM,OACNmmB,KAAM,CAAA,EACNC,SAAU,KACVC,YAAa,KACbjmB,KAAMkmB,KAAKC,UAAUpX,EAAKyvC,cAAc,EACxCp4B,UAAW,KACXC,UAAW,KACXC,WAAY,MAEhB3oB,KAAK+gD,gBAAkB,CAAE5xC,OAAQ,SAAU0G,aAAcA,EAAcsJ,OAAQ,CAAA,GAC/Enf,KAAKyV,QAAQ,aAAczV,KAAK+gD,gBAAiB,SAAUA,GACvD3vC,EAAKyvC,eAAiBt4B,KAAKyB,MAAM3d,WAAS,OAAQ00C,EAAgBlrC,YAAY,CAAC,EAC/EzE,EAAK+N,OAAS4hC,EAAgB5hC,OAC9B,IAAInJ,EAAY,CACZmJ,OAAQ,CAAA,EACR6hC,YAAa5vC,EAAK6vC,gBAE8C,YAAhE,OAAO50C,WAAS,aAAc00C,EAAgBlrC,YAAY,IAC1DxJ,WAAS,aAAc00C,EAAgBlrC,YAAY,EAAEG,CAAS,EAC1D3J,WAAS,SAAU2J,CAAS,KAC5B5E,EAAK+N,OAAS9S,WAAS,SAAU2J,CAAS,GAGrD,GAEL8jC,EAAY55C,UAAUs/C,WAAa,WAC/Bx/C,KAAKkhD,oBAAoB,CAAE3jC,MAAO,EAAG,EACQ,IAAzCvd,KAAKwf,UAAU2hC,eAAexgD,QAC9BX,KAAK4+C,gBAAgBr7B,QAI7Bu2B,EAAY55C,UAAUw/C,SAAW,SAAUtuC,GACvC,IAAI/O,EAAOkmB,KAAKC,UAAUnc,WAASrM,KAAK8M,OAAO9M,KAAK8M,OAAOnM,OAAS,GAAIX,KAAKyO,QAAQ,CAAC,EACtF2C,EAAKyvC,eAAiB,CAAC,CAAEl0C,KAAQ3M,KAAK2M,MAAQ,CAAEwC,OAAU,UAAY,CAAE9M,KAAQA,KAGpFy3C,EAAY55C,UAAU0/C,WAAa,WAC3B5/C,KAAK2gD,UACL3gD,KAAK4+C,gBAAgBr7B,QAI7Bu2B,EAAY55C,UAAU2/C,WAAa,SAAUzuC,GACzC,IAKI0R,EAL0B,IAA1B1R,EAAKgwC,UAAUzgD,SAGnBX,KAAKqhD,eAAiBjwC,EAAKgwC,UAAUzgD,OACrCX,KAAKshD,cAAgB,EAEhB1+B,GADDE,EAAUpQ,EAAc1S,IAAI,CACJ,EAK5BA,KAAK4+C,gBAAgBxtB,QAJjBhgB,EAAK+N,OAAS,CAAA,EACdlL,EAAmBjU,KAAM8iB,EAASM,EAAuB,KAKjE02B,EAAY55C,UAAUghD,oBAAsB,SAAU9vC,GAClDpR,KAAKshD,cAAgBthD,KAAKshD,cAAgBlwC,EAAKmM,MAC3Cvd,KAAKmgD,eAAeoB,WAAcvhD,KAAKqhD,iBAAmBrhD,KAAKshD,eAC/DthD,KAAK4+C,gBAAgBr7B,QAI7Bu2B,EAAY55C,UAAU6/C,gBAAkB,SAAUltC,GAE9C7S,KAAKyV,QAAQ,UADF,CAAEtG,OAAQ,SAAU+H,OAAQrE,EACX,EAC5B7S,KAAKsR,SAAW,CAACjF,WAASrM,KAAK8M,OAAO9M,KAAK8M,OAAOnM,OAAS,GAAIX,KAAKyO,QAAQ,GAC5E+C,EAAKxR,KAAMyrB,EAAoBzrB,KAAK2M,IAAI,EACxC3M,KAAKkhD,oBAAoB,CAAE3jC,MAAO,EAAG,EACmC,YAApE,OAAOlR,WAAS,YAAarM,KAAK+gD,gBAAgBlrC,YAAY,GAC9DxJ,WAAS,YAAarM,KAAK+gD,gBAAgBlrC,YAAY,KAI/DikC,EAAY55C,UAAU+/C,gBAAkB,SAAUptC,GAC9C,IAAI2uC,EAAWn1C,WAAS,WAAYwG,CAAK,EACrC4uC,EAAap1C,WAAS,aAAcm1C,CAAQ,EAC7B,KAAfC,GACAroC,WAAS,aAAcqoC,EAAY5uC,CAAK,EAG5C7S,KAAKyV,QAAQ,UADF,CAAEtG,OAAQ,SAAUuJ,MAAO7F,EACV,EACa,MAArCxG,WAAS,aAAcm1C,CAAQ,IAC/BxhD,KAAK6xB,WAAWvkB,KAAKjB,WAAS,OAAQwG,CAAK,CAAC,EACvC7S,KAAK8xB,eACNjG,GAAgB7rB,KAAM,aAAa,GAG6B,YAApE,OAAOqM,WAAS,YAAarM,KAAK+gD,gBAAgBlrC,YAAY,GAC9DxJ,WAAS,YAAarM,KAAK+gD,gBAAgBlrC,YAAY,KAG/DikC,EAAY55C,UAAUwhD,aAAe,WACjC9mC,GAAY5a,KAAMA,KAAK2M,IAAI,GAE/BmtC,EAAY55C,UAAU47C,kBAAoB,WACtC97C,KAAKygC,GAAGzX,GAAsBhpB,KAAKy2B,YAAaz2B,IAAI,EACpDA,KAAKygC,GAAGrW,GAAqBpqB,KAAK65B,YAAa75B,IAAI,EACnDA,KAAKygC,GAAGtlB,GAAmBnb,KAAK0hD,aAAc1hD,IAAI,EAClDA,KAAKygC,GAAGN,EAAoBngC,KAAKogC,cAAepgC,IAAI,EACpDA,KAAKygC,GAAG/N,GAAmB1yB,KAAKkhD,oBAAqBlhD,IAAI,EACzDuhC,eAAajxB,IAAItQ,KAAKkN,QAAS,cAAelN,KAAKy+C,cAAez+C,IAAI,GAE1E85C,EAAY55C,UAAUyhD,qBAAuB,WACrC3hD,KAAK8+B,cAGT9+B,KAAK++B,IAAI/V,GAAsBhpB,KAAKy2B,WAAW,EAC/Cz2B,KAAK++B,IAAI3U,GAAqBpqB,KAAK65B,WAAW,EAC9C75B,KAAK++B,IAAI5jB,GAAmBnb,KAAK0hD,YAAY,EAC7C1hD,KAAK++B,IAAIoB,EAAoBngC,KAAKogC,aAAa,EAC/CpgC,KAAK++B,IAAIrM,GAAmB1yB,KAAKkhD,mBAAmB,EACpD3f,eAAa5wB,OAAO3Q,KAAKkN,QAAS,cAAelN,KAAKy+C,aAAa,IAEvE3E,EAAY55C,UAAUkgC,cAAgB,WAC9B3zB,oBAAMzM,KAAKwP,YAAY,IACvBxP,KAAKsR,SAAW,CAACjF,WAASrM,KAAK8M,OAAO9M,KAAK8M,OAAOnM,OAAS,GAAIX,KAAKyO,QAAQ,KAGpFqrC,EAAY55C,UAAU6/B,cAAgB,WAClC//B,KAAK+7C,eACL/7C,KAAKgP,OAAO8wB,GAAkB,EAAE,GAEpCga,EAAY55C,UAAUihC,iBAAmB,SAAUjU,GAE/C,OAAQA,EAAE/d,QACN,IAAK,OACD+d,EAAEkH,iBACFp0B,KAAKsR,SAAW,CAACoB,EAAc1S,IAAI,GAC9B2iB,GAAiB3iB,KAAKsR,SAAS,EAAE,EAIlC2K,EAAajc,KAAM,WAAW,EAH9BiU,EAAmBjU,KAAMA,KAAKsR,SAAS,GAAIyR,EAA6B,EAK5E,MACJ,IAAK,KACDmK,EAAEkH,iBACFtgB,GAAQ9T,IAAI,EACZ,MAEJ,IAAK,aACDktB,EAAEkH,iBACFp0B,KAAKy7C,SAAW,UAChBz7C,KAAK0M,cAAc,CAAE2G,KAAM,WAAa,CAAA,CAAI,EAC5CojB,cAAYz2B,KAAKkN,OAAO,EACxBkG,GAAapT,KAAM,SAAS,EAC5B,MAEJ,IAAK,aACDktB,EAAEkH,iBACFp0B,KAAKy7C,SAAW,aAChBz7C,KAAK0M,cAAc,CAAE2G,KAAM,cAAgB,CAAA,CAAI,EAC/CojB,cAAYz2B,KAAKkN,OAAO,EACxBkG,GAAapT,KAAM,YAAY,EAC/B,MACJ,IAAK,QACDktB,EAAEkH,iBACmD,CAAC,IAAlDp0B,KAAKs7C,gBAAgB5kC,MAAM/B,QAAQ,QAAQ,GAC/B7G,SAAO,IAAM9N,KAAKkN,QAAQZ,GAAK4W,GAAeljB,KAAKkN,OAAO,EAC5DiW,UAK1B22B,EAAY55C,UAAU0hD,sBAAwB,SAAUC,GAChDp1C,oBAAMzM,KAAKqT,IAAI,IAGfwuC,IACA7hD,KAAK8hD,SAAyB,eAAd9hD,KAAKqT,KAAwBrT,KAAKkT,qBAAqBhG,QAAUlN,KAAKkN,QAAQ6K,cAAc,gBAAgB,GAE3H/X,KAAK8hD,WAGND,EACI7hD,KAAK8gC,sBACLS,eAAajxB,IAAItQ,KAAK8hD,SAAU,YAAa9hD,KAAK+hD,YAAa/hD,IAAI,EACnEA,KAAKygC,GAAGhvB,EAAqBzR,KAAKm8B,eAAgBn8B,IAAI,EACtDA,KAAKygC,GAAG3V,EAAyB9qB,KAAKm8B,eAAgBn8B,IAAI,IAI9DuhC,eAAa5wB,OAAO3Q,KAAK8hD,SAAU,YAAa9hD,KAAK+hD,WAAW,EAChE/hD,KAAK++B,IAAIttB,EAAqBzR,KAAKm8B,cAAc,EACjDn8B,KAAK++B,IAAIjU,EAAyB9qB,KAAKm8B,cAAc,MAG7D2d,EAAY55C,UAAUu5B,WAAa,WAC3Bz5B,KAAKgiD,sBACLhiD,KAAK4hD,sBAAsB,CAAA,CAAI,EAEnCrgB,eAAajxB,IAAI+O,OAAQ,SAAUrf,KAAK+/B,cAAe//B,IAAI,EAC3DA,KAAKghC,eAAiB,IAAIC,iBAAejhC,KAAKkN,QAAS,CACnDg0B,UAAWlhC,KAAKmhC,iBAAiBlS,KAAKjvB,IAAI,EAC1CohC,WAAYphC,KAAKohC,WACjBnmB,UAAW,UACd,GAEL6+B,EAAY55C,UAAU22B,aAAe,WACjC72B,KAAK4hD,sBAAsB,CAAA,CAAK,EAChCrgB,eAAa5wB,OAAO0O,OAAQ,SAAUrf,KAAK+/B,aAAa,EACxD//B,KAAKghC,eAAe53B,WAExB0wC,EAAY55C,UAAU6hD,YAAc,SAAU7hC,GAC1C,GAAIlgB,KAAK8hD,SAAU,CACf,GAAI9hD,KAAKggB,iBAEL,GADoBnP,UAAQqP,EAAM5f,OAAQN,KAAK8hD,SAAS7zC,UAAUC,SAAS,eAAe,EAAI,eAAiB,YAAY,EAEvH,OAGRgS,EAAMkU,iBACNp0B,KAAKiiD,MAAQ/hC,EAAMgiC,MACnBliD,KAAKmiD,MAAQjiC,EAAMkiC,MACdpiD,KAAKqiD,oBACNriD,KAAKqiD,kBAAoBnqC,gBAAc,MAAO,CAC1C5L,GAAItM,KAAKkN,QAAQZ,GAAK,QACtB6L,UAAW,8BACXmqC,OAAQ,SAAWtiD,KAAKiiD,MAAQ,WAAajiD,KAAKmiD,MAAQ,MAC7D,EACD/jC,SAASwP,KAAK20B,OAAOviD,KAAKqiD,iBAAiB,GAE/C9gB,eAAajxB,IAAI8N,SAAU,UAAWpe,KAAKwiD,WAAYxiD,IAAI,EAC3DuhC,eAAajxB,IAAItQ,KAAK8hD,SAAU,YAAa9hD,KAAKyiD,OAAQziD,IAAI,EAC9DuhC,eAAajxB,IAAItQ,KAAKqiD,kBAAmB,YAAariD,KAAKyiD,OAAQziD,IAAI,IAG/E85C,EAAY55C,UAAUuiD,OAAS,SAAUviC,GAErC,IACQwiC,EAFRxiC,EAAMyiC,kBACF3iD,KAAKqiD,mBACDK,EAAQxiC,EAAMgiC,MAAQliD,KAAKiiD,MAC3BW,EAAQ1iC,EAAMkiC,MAAQpiD,KAAKmiD,MAC/BU,oBAAkB7iD,KAAKqiD,kBAAmB,CACtCS,KAAQJ,EAAQ,EAAI1iD,KAAKiiD,MAAQS,EAAQ,KAAO1iD,KAAKiiD,MAAQ,KAAMrqC,IAAOgrC,EAAQ,EAAI5iD,KAAKmiD,MAAQS,EAAQ,KAAO5iD,KAAKmiD,MAAQ,KAC/H/sB,OAAU2tB,KAAKC,IAAIJ,CAAK,EAAI,KAAMzgD,MAAS4gD,KAAKC,IAAIN,CAAK,EAAI,KAChE,EACD1iD,KAAKm5B,eAGLoI,eAAa5wB,OAAO3Q,KAAK8hD,SAAU,YAAa9hD,KAAKyiD,MAAM,GAGnE3I,EAAY55C,UAAUsiD,WAAa,WAC3BxiD,KAAK8hD,WACLvgB,eAAa5wB,OAAOyN,SAAU,UAAWpe,KAAKwiD,UAAU,EACxDjhB,eAAa5wB,OAAO3Q,KAAK8hD,SAAU,YAAa9hD,KAAKyiD,MAAM,GAE3DziD,KAAKqiD,oBACL9gB,eAAa5wB,OAAO3Q,KAAKqiD,kBAAmB,YAAariD,KAAKyiD,MAAM,EAC1B,EAAtCziD,KAAKqiD,kBAAkBvhC,cAAyD,EAArC9gB,KAAKqiD,kBAAkBjX,aAClEprC,KAAK0M,cAAc,CAAE0D,cAAepQ,KAAKijD,kBAAmB,EAEhEjjD,KAAKijD,kBAAoB,GACzBtjC,SAAO3f,KAAKqiD,iBAAiB,EAC7BriD,KAAKqiD,kBAAoB,OAGjCvI,EAAY55C,UAAUi5B,YAAc,WAChCn5B,KAAKijD,kBAAoB,GACzB,IAAIC,EAAWljD,KAAKqiD,kBAAkBxhC,wBAClC1N,EAAW0gB,YAAU7zB,KAAK8hD,SAAS7zC,UAAUC,SAAS,eAAe,EAAI,eAAiB,SAAUlO,KAAK8hD,QAAQ,EACrHze,cAAYxP,YAAU,YAAa7zB,KAAK8hD,QAAQ,EAAG,CAAC,WAAY,UAAU,EAC1Eze,cAAYxP,YAAU,WAAY7zB,KAAK8hD,QAAQ,EAAG,CAAC,UAAU,EAC7D,IAAK,IAAInhB,EAAK,EAAGwiB,EAAahwC,EAAUwtB,EAAKwiB,EAAWxiD,OAAQggC,CAAE,GAAI,CAClE,IAAIxrB,EAAOguC,EAAWxiB,GAClByiB,EAAWjuC,EAAK0L,wBAChB,EAAEqiC,EAASG,MAAQD,EAASN,MAAQI,EAASJ,KAAOM,EAASC,OAC1DH,EAASI,OAASF,EAASxrC,KAAOsrC,EAAStrC,IAAMwrC,EAASE,SACnB,EAAtCtjD,KAAKqiD,kBAAkBvhC,cAAyD,EAArC9gB,KAAKqiD,kBAAkBjX,cAClEprC,KAAK8hD,SAAS7zC,UAAUC,SAAS,eAAe,GAChDiH,EAAKlH,UAAUqC,IAAI,UAAU,EAC7BtQ,KAAKijD,kBAAkB31C,KAAK6H,EAAK5I,aAAa,OAAO,CAAC,IAGtDi2B,WAAS3O,YAAU,aAAc1e,CAAI,EAAG,CAAC,WAAW,EACpDnV,KAAKijD,kBAAkB31C,KAAK6H,EAAK4C,cAAc,cAAc,EAAE/J,WAAW,GAE9EmH,EAAK4C,cAAc,UAAU,EAAE9J,UAAUqC,IAAI,SAAS,KAIlEwpC,EAAY55C,UAAUi8B,eAAiB,WAC/Bn8B,KAAKgiD,uBACLhiD,KAAK62B,eACL72B,KAAKy5B,eAGbqgB,EAAY55C,UAAUqjD,QAAU,WAC5BvjD,KAAK0M,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EAC9CpQ,KAAKk6C,aACLl6C,KAAKgP,OAAOwM,GAAsB,CAAEC,aAAczb,KAAK8M,OAAO,GAAI,EAClE0E,EAAKxR,KAAOA,KAAK2M,OAAS3M,KAAK+a,aAAgBI,GAAoBD,EAAoBlb,KAAK2M,IAAI,GAWpGmtC,EAAY55C,UAAUi/B,kBAAoB,SAAU0B,EAAS2iB,GAIzD,IAHA,IAAItpB,EAAQl6B,KAERyjD,EAAkB,CAAA,EACb9iB,EAAK,EAAGC,EAAKrhC,OAAOkiB,KAAKof,CAAO,EAAGF,EAAKC,EAAGjgC,OAAQggC,CAAE,GAE1D,OADWC,EAAGD,IAEV,IAAK,eACD3gC,KAAK0jD,oBAAoB7iB,CAAO,EAChC,MACJ,IAAK,mBACD7gC,KAAKggB,iBAAmB6gB,EAAQ7gB,iBAChChgB,KAAKgP,OAAOkwB,EAAqB,CAAE7kB,OAAQ,SAAUwmB,QAASA,EAAS2iB,QAASA,EAAS,EACzF,MACJ,IAAK,qBACDxjD,KAAK+7B,mBAAqB8E,EAAQ9E,mBAClC/7B,KAAKgP,OAAOkwB,EAAqB,CAAE7kB,OAAQ,SAAUwmB,QAASA,EAAS2iB,QAASA,EAAS,EACzF,MACJ,IAAK,uBACDxjD,KAAKs4B,qBAAuBuI,EAAQvI,qBACpCmrB,EAAkB,CAAA,EAClB,MACJ,IAAK,sBACGzjD,KAAK8gC,oBACL0B,WAAS,CAACxiC,KAAKkN,SAAUmvC,EAAgB,GAGT,EAA5Br8C,KAAKoQ,cAAczP,QACnBX,KAAK0M,cAAc,CAAE0D,cAAepQ,KAAKoQ,cAAcyoB,MAAM74B,KAAKoQ,cAAczP,OAAS,CAAC,GAAK,CAAA,CAAI,EAEvG0iC,cAAY,CAACrjC,KAAKkN,SAAUmvC,EAAgB,GAEhDr8C,KAAKgP,OAAOkwB,EAAqB,CAAE7kB,OAAQ,SAAUwmB,QAASA,EAAS2iB,QAASA,EAAS,EACzF,MACJ,IAAK,WACDxjD,KAAKs8C,YAAYkH,EAAQxpC,SAAU6mB,EAAQ7mB,QAAQ,EACnDha,KAAKgP,OAAOkwB,EAAqB,CAAE7kB,OAAQ,SAAUwmB,QAASA,EAAS2iB,QAASA,EAAS,EACzF,MACJ,IAAK,sBACDxjD,KAAKgP,OAAOkwB,EAAqB,CAAE7kB,OAAQ,cAAewmB,QAASA,EAAS2iB,QAASA,EAAS,EAC9F,MACJ,IAAK,uBACDxjD,KAAK4hD,sBAAsB,CAAA,CAAK,EAC5B/gB,EAAQmhB,sBACRhiD,KAAK4hD,sBAAsB,CAAA,CAAI,EAEnC,MACJ,IAAK,YACD5hD,KAAK8wB,UAAY+P,EAAQ/P,UACzB2yB,EAAkB,CAAA,EAClB,MACJ,IAAK,gBACDzjD,KAAKsqB,cAAgBuW,EAAQvW,cAC7Bm5B,EAAkB,CAAA,EAClB,MACJ,IAAK,SACDruB,EAAU3oB,oBAAMo0B,EAAQzL,MAAM,EAAiCyL,EAAQzL,OAArCglB,aAAWvZ,EAAQzL,MAAM,EAC3D+kB,oBAAQn6C,KAAKkN,QAAS,CAAEkoB,OAAUA,EAAQ,EAC1Cp1B,KAAK+7C,eACL/7C,KAAKgP,OAAOkwB,EAAqB,CAAE7kB,OAAQ,SAAUwmB,QAASA,EAAS2iB,QAASA,EAAS,EACzF,MACJ,IAAK,SACI/2C,oBAAMo0B,EAAQ/P,SAAS,GACxB9wB,KAAK0M,cAAc,CAAEokB,UAAW+P,EAAQ/P,WAAa,CAAA,CAAI,EAE7D9wB,KAAK2jD,qBAAqB9iB,CAAO,EACjC,MACJ,IAAK,yBACD7gC,KAAKo+C,iBACLp+C,KAAKgP,OAAOkwB,EAAqB,CAAE7kB,OAAQ,iBAAkBwmB,QAASA,EAAS2iB,QAASA,EAAS,EACjG,MACJ,IAAK,OACDxjD,KAAKujD,UACL,MACJ,IAAK,iBACI1sC,oBAAkBgqB,EAAQnvB,eAAeo4B,mBAAmB,GAC7D9pC,KAAK0M,cAAc,CAAEgF,eAAgB,CAAEo4B,oBAAqBjJ,EAAQnvB,eAAeo4B,sBAAyB,CAAA,CAAI,EAEhHjzB,oBAAkBgqB,EAAQnvB,eAAeU,UAAU,GACnDpS,KAAK0M,cAAc,CAAEgF,eAAgB,CAAEU,WAAYyuB,EAAQnvB,eAAeU,aAAgB,CAAA,CAAI,EAE9FyE,oBAAkBgqB,EAAQnvB,eAAeC,UAAU,GACnD3R,KAAK0M,cAAc,CAAEgF,eAAgB,CAAEC,WAAYkvB,EAAQnvB,eAAeC,aAAgB,CAAA,CAAI,EAElG3R,KAAKgP,OAAOkwB,EAAqB,CAAE7kB,OAAQ,gBAAiBwmB,QAASA,EAAS2iB,QAASA,EAAS,EAChG,MACJ,IAAK,gBACiB,YAAdxjD,KAAKqT,KACLrT,KAAKgP,OAAOkwB,EAAqB,CAAE7kB,OAAQ,cAAewmB,QAASA,EAAS2iB,QAASA,EAAS,EAE3E,eAAdxjD,KAAKqT,MACVrT,KAAKgP,OAAOkwB,EAAqB,CAAE7kB,OAAQ,iBAAkBwmB,QAASA,EAAS2iB,QAASA,EAAS,EAErG,MACJ,IAAK,oBAGL,IAAK,kBACDxjD,KAAKgP,OAAOkwB,EAAqB,CAAE7kB,OAAQ,SAAUwmB,QAASA,EAAS2iB,QAASA,EAAS,EACzF,MACJ,IAAK,gBACDxjD,KAAKgP,OAAOkwB,EAAqB,CAAE7kB,OAAQ,iBAAkBwmB,QAASA,EAAS2iB,QAASA,EAAS,EACjG,MACJ,IAAK,kBACL,IAAK,eACDxjD,KAAK+7C,eACL/7C,KAAKgP,OAAOkwB,EAAqB,CAAE7kB,OAAQ,UAAWwmB,QAASA,EAAS2iB,QAASA,EAAS,EAC1F,MACJ,IAAK,iBACDxjD,KAAK0gD,iBACL,MACJ,IAAK,OACoB,YAAjB7f,EAAQxtB,KACRrT,KAAKgP,OAAOkwB,EAAqB,CAAE7kB,OAAQ,cAAewmB,QAASA,EAAS2iB,QAASA,EAAS,EAExE,eAAjB3iB,EAAQxtB,MACbrT,KAAKgP,OAAOkwB,EAAqB,CAAE7kB,OAAQ,iBAAkBwmB,QAASA,EAAS2iB,QAASA,EAAS,EAErG,MACJ,IAAK,QACDrJ,oBAAQn6C,KAAKkN,QAAS,CAAE/K,MAAUsK,oBAAMo0B,EAAQ1+B,KAAK,EAAgC0+B,EAAQ1+B,MAApCi4C,aAAWvZ,EAAQ1+B,KAAK,EAAmB,EACpGnC,KAAKgP,OAAOkwB,EAAqB,CAAE7kB,OAAQ,SAAUwmB,QAASA,EAAS2iB,QAASA,EAAS,EACzF,MACJ,IAAK,YACD1vC,GAAQ9T,IAAI,EACZA,KAAKgP,OAAOsL,GAAqB,EAAE,EACnC,MACJ,IAAK,SACD,GAAkB,YAAdta,KAAKqT,KAAoB,CACzB,IAAIsH,EAAU3a,KAAK0a,oBAAoBC,QAGvC,GAAI,EAFmB,CAAC9D,oBAAkB8D,CAAO,GACgC,CAAC,IAA9EA,EAAQ6K,UAAU,SAAUo+B,GAAO,OAAOA,EAAIjiD,QAAUu4B,EAAMpjB,OAAS,GAEvE,OAEJhD,GAAQ9T,IAAI,EACZA,KAAKgP,OAAOsL,GAAqB,EAAE,EACnCta,KAAKgP,OAAOoL,GAAmB,EAAE,OAGjCtG,GAAQ9T,IAAI,EACZA,KAAKgP,OAAOsL,GAAqB,EAAE,EAEvC,MACJ,IAAK,cACGta,KAAK4+C,kBACL5+C,KAAK4+C,gBAAgBt+C,OAASugC,EAAQlQ,aAEtC3wB,KAAKsjB,YACLtjB,KAAKsjB,UAAUhjB,OAASugC,EAAQlQ,aAEhC3wB,KAAKwxB,eACLxxB,KAAKwxB,aAAalxB,OAASugC,EAAQlQ,aAEnC3wB,KAAKm1B,YACLn1B,KAAKm1B,UAAU70B,OAASugC,EAAQlQ,aAEpC,MACJ,IAAK,iBACD3wB,KAAKuR,eAAiBsvB,EAAQtvB,eAC9BkyC,EAAkB,CAAA,EAI1BA,GACAzjD,KAAK8T,WAIbgmC,EAAY55C,UAAUwjD,oBAAsB,SAAU7iB,GAC7ChqB,oBAAkBgqB,EAAQhrB,aAAaC,GAAG,GAC3C9V,KAAK0M,cAAc,CAAEmJ,aAAc,CAAEC,IAAK+qB,EAAQhrB,aAAaC,MAAS,CAAA,CAAI,EAE3Ee,oBAAkBgqB,EAAQhrB,aAAampC,SAAS,GACjDh/C,KAAK0M,cAAc,CAAEmJ,aAAc,CAAEmpC,UAAWne,EAAQhrB,aAAampC,YAAe,CAAA,CAAI,EAEvFnoC,oBAAkBgqB,EAAQhrB,aAAaoW,WAAW,GACnDjsB,KAAK0M,cAAc,CAAEmJ,aAAc,CAAEoW,YAAa4U,EAAQhrB,aAAaoW,cAAiB,CAAA,CAAI,EAE3FpV,oBAAkBgqB,EAAQhrB,aAAaX,WAAW,GACnDlV,KAAK0M,cAAc,CAAEmJ,aAAc,CAAEX,YAAa2rB,EAAQhrB,aAAaX,cAAiB,CAAA,CAAI,EAEhGlV,KAAK0M,cAAc,CAAEC,KAAM,KAAO,CAAA,CAAI,EACtC3M,KAAK0M,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EAC9CvQ,GAAOK,UAAU4T,QAAQiS,KAAK/lB,IAAI,GAGtC85C,EAAY55C,UAAUyjD,qBAAuB,SAAU9iB,GACnD7gC,KAAKwf,UAAU7F,OAASknB,EAAQlnB,OAChC9Z,GAAOK,UAAU4T,QAAQiS,KAAK/lB,IAAI,GAOtC85C,EAAY55C,UAAUkJ,QAAU,WACxBpJ,KAAK8+B,cAGJ9+B,KAAK6jD,YACN7jD,KAAKgP,OAAOo/B,GAAgB,EAAE,EAElCpuC,KAAKwf,UAAUpW,UACfpJ,KAAKwf,UAAY,KACjBxf,KAAK4+C,gBAAgBx1C,UACrBpJ,KAAK4+C,gBAAkB,KACvB5+C,KAAKg8C,YAAY5yC,UACjBpJ,KAAKg8C,YAAc,KACfh8C,KAAKsjB,YACLtjB,KAAKsjB,UAAUla,UACfpJ,KAAKsjB,UAAY,MAEjBtjB,KAAKm1B,YACLn1B,KAAKm1B,UAAU/rB,UACfpJ,KAAKm1B,UAAY,MAEjBn1B,KAAKwxB,eACLxxB,KAAKwxB,aAAapoB,UAClBpJ,KAAKwxB,aAAe,MAExBxxB,KAAKkN,QAAQwuB,gBAAgB,OAAO,EACpC17B,KAAKkN,QAAQwuB,gBAAgB,UAAU,EACvC17B,KAAK2hD,uBACL3hD,KAAK62B,eACL72B,KAAKs8C,YAAYt8C,KAAKga,SAAU,IAAI,EACpCqpB,cAAY,CAACrjC,KAAKkN,SAAU,CAAC42C,GAAS1H,GAAYC,GAAiB,EACnEr8C,KAAKkN,QAAQyL,UAAY,GACzB3Y,KAAKyqC,wBAA0B,KAC/BzqC,KAAKqP,eAAiB,KACtBrP,KAAKgf,mBAAqB,KAC1Bhf,KAAKu2B,YAAc,KACnB12B,GAAOK,UAAUkJ,QAAQ2c,KAAK/lB,IAAI,EAClCA,KAAKu4B,qBAAuB,KAC5Bv4B,KAAKke,qBAAuB,KAC5Ble,KAAK+jD,cAAgB,KACrB/jD,KAAKgkD,kBAAoB,KACzBhkD,KAAKkT,qBAAuB,KAC5BlT,KAAK+S,kBAAoB,KACzB/S,KAAK+P,oBAAsB,KAC3B/P,KAAK8hD,SAAW,KAChB9hD,KAAKqiD,kBAAoB,KACzBriD,KAAKijD,kBAAoB,OAS7BnJ,EAAY55C,UAAU8jB,aAAe,SAAUxN,GAC3CxW,KAAKgP,OAAOowB,GAAmB,CAAEjwB,OAAQ,eAAgB,EACzD,IAAI2T,EAAU,CAACpQ,EAAc1S,IAAI,GACjCA,KAAKsR,SAAWwR,EACZtM,EACI,eAAeme,KAAKne,CAAI,EASxByF,EAAajc,KAAM,QARN,CACT6S,MAAO,KACP6F,MAAO,CACHwD,KAAM,MACNC,QAASvD,EAAc5Y,KAAM,oBAAoB,EAAEkW,QAAQ,MAAO,IAAMM,EAAO,GAAG,EAClF4F,WAAY,MAGc,EAG7BuG,GAAiBG,EAAQ,EAAE,EAI5BkB,GAAahkB,KAAMwW,CAAI,EAHvBvC,EAAmBjU,KAAM8iB,EAAQ,GAAIC,EAA6B,EAQ1EF,GAAgB7iB,IAAI,GAa5B85C,EAAY55C,UAAUwmC,YAAc,SAAUr5B,GAC1CrN,KAAKgP,OAAOowB,GAAmB,CAAEjwB,OAAQ,cAAe9B,IAAKA,EAAK,GAQtEysC,EAAY55C,UAAU+jD,oBAAsB,SAAUvtC,GAC9C,CAACjK,oBAAMiK,CAAK,GAAK1W,KAAK+jD,eACtB/jD,KAAK+jD,cAAcnS,YAAYl7B,EAAO,CAAA,CAAK,GAanDojC,EAAY55C,UAAUymC,cAAgB,SAAUt5B,GAC5CrN,KAAKgP,OAAOowB,GAAmB,CAAEjwB,OAAQ,gBAAiB9B,IAAKA,EAAK,GAQxEysC,EAAY55C,UAAUgkD,mBAAqB,SAAUxtC,GAC7C,CAACjK,oBAAMiK,CAAK,GAAK1W,KAAK+jD,eACtB/jD,KAAK+jD,cAAcnS,YAAYl7B,EAAO,CAAA,CAAI,GASlDojC,EAAY55C,UAAUikD,iBAAmB,SAAUztC,GAC1CjK,oBAAMiK,CAAK,GAAMjK,oBAAMzM,KAAKgkD,kBAAkBrV,WAAW,GAC1D3uC,KAAKgkD,kBAAkB/R,YAAYv7B,CAAK,GAShDojC,EAAY55C,UAAUkkD,iBAAmB,SAAUjvC,GAC/C,OAAInV,KAAKgkD,kBACEhkD,KAAKgkD,kBAAkBjS,aAAa58B,CAAI,EAGxC,CAAC,GAShB2kC,EAAY55C,UAAUmkD,oBAAsB,SAAUlvC,GAClD,OAAInV,KAAK+jD,cACE/jD,KAAK+jD,cAAchS,aAAa58B,CAAI,EAGpC,CAAC,GAWhB2kC,EAAY55C,UAAUokD,YAAc,SAAUlgC,GAC1CpkB,KAAKokB,WAAaA,GAA0B,KAC5CpkB,KAAK0M,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EAC9CpQ,KAAKgP,OAAO8b,EAAyB,EAAE,EACvC9qB,KAAKkQ,WAAa,CAAA,EACuC,KAArDlQ,KAAK+P,oBAAoBC,UAAU9C,QAAQ+C,QAC3CjQ,KAAK+P,oBAAoBC,UAAU9C,QAAQ+C,MAAQ,IAEvD4B,GAAO7R,KAAMwgC,EAAgB,GAOjCsZ,EAAY55C,UAAUqkD,iBAAmB,WAErC,OADAvkD,KAAKgP,OAAOuxB,GAA4B,EAAE,EACnCvgC,KAAKsR,UAWhBwoC,EAAY55C,UAAU0mC,SAAW,SAAUt6B,GACvCtM,KAAKgP,OAAOowB,GAAmB,CAAEjwB,OAAQ,WAAY7C,GAAIA,EAAI,GAOjEwtC,EAAY55C,UAAUskD,aAAe,WACjC1wC,GAAQ9T,IAAI,GAOhB85C,EAAY55C,UAAUukD,cAAgB,WAClCzkD,KAAK+7C,eACL/7C,KAAKgP,OAAOqxB,GAAsB,EAAE,GAOxCyZ,EAAY55C,UAAU2zB,UAAY,WAC9B7zB,KAAKgP,OAAOowB,GAAmB,CAAEjwB,OAAQ,YAAa,GAO1D2qC,EAAY55C,UAAU2kC,iBAAmB,WACrC,IAOQ2I,EAPoB,EAAxBxtC,KAAKgN,UAAUrM,QAAmE,KAArDX,KAAK+P,oBAAoBC,UAAU9C,QAAQ+C,OAAgB,CAACjQ,KAAKkQ,aAC9FlQ,KAAK8M,OAAOie,MACZ/qB,KAAKgN,UAAU+d,MACXzc,EAAUtO,KAAKgN,UAAU6rB,MAAM,CAAC,EAAEhkB,KAAK,GAAG,EAE9C7U,KAAK0M,cAAc,CAAEC,KAAM2B,EADL,KAAZA,EAAiB,IAAM,IAAMA,EAAU,KACX,CAAA,CAAI,EAC1CkD,EAAKxR,KAAMyrB,EAAoBzrB,KAAK2M,IAAI,EACpC6gC,EAAaxtC,KAAK8M,OAAO9M,KAAK8M,OAAOnM,OAAS,GAClDX,KAAKgP,OAAOy+B,GAA4B,CAAEpzB,OAAQ,WAAYoB,aAAc+xB,EAAY,IAQhGsM,EAAY55C,UAAUq+B,eAAiB,WACnCv+B,KAAKgP,OAAOowB,GAAmB,CAAEjwB,OAAQ,iBAAkB,GAe/D2qC,EAAY55C,UAAU2mC,WAAa,SAAUv6B,EAAIkK,GAC7CxW,KAAKgP,OAAOowB,GAAmB,CAAEjwB,OAAQ,aAAc7C,GAAIA,EAAImY,QAASjO,EAAM,GAOlFsjC,EAAY55C,UAAUwkD,YAAc,WAChC,IAAI5hC,EAAU,CAACpQ,EAAc1S,IAAI,GACjCA,KAAKsR,SAAWwR,EAChBE,GAAWhjB,IAAI,GAOnB85C,EAAY55C,UAAUykD,YAAc,WAChCthC,GAAWrjB,IAAI,GAQnB85C,EAAY55C,UAAU27C,OAAS,SAAU+I,GACjCA,EACA5kD,KAAKs8C,YAAY,KAAMwH,EAAO,EAG9B9jD,KAAKs8C,YAAYwH,GAAS,IAAI,EAE9B9jD,KAAKwf,YACLxf,KAAK4+C,gBAAgB9tB,UAAY8zB,EACjC5kD,KAAKwf,UAAUsR,UAAY8zB,IAInCxkD,EAAW,CACPykD,UAAQ,GAAI3jD,CAAY,GACzB44C,EAAY55C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACPgB,WAAS,EAAE,GACZ04C,EAAY55C,UAAW,iBAAkB,KAAA,CAAM,EAClDE,EAAW,CACPgB,WAAS,CAAA,CAAK,GACf04C,EAAY55C,UAAW,mBAAoB,KAAA,CAAM,EACpDE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACd04C,EAAY55C,UAAW,sBAAuB,KAAA,CAAM,EACvDE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACd04C,EAAY55C,UAAW,qBAAsB,KAAA,CAAM,EACtDE,EAAW,CACPykD,UAAQ,GAAIliD,EAAmB,GAChCm3C,EAAY55C,UAAW,sBAAuB,KAAA,CAAM,EACvDE,EAAW,CACPgB,WAAS,EAAE,GACZ04C,EAAY55C,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPykD,UAAQ,GAAItiD,EAAmB,GAChCu3C,EAAY55C,UAAW,sBAAuB,KAAA,CAAM,EACvDE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACd04C,EAAY55C,UAAW,sBAAuB,KAAA,CAAM,EACvDE,EAAW,CACPgB,WAAS,CAAA,CAAK,GACf04C,EAAY55C,UAAW,oBAAqB,KAAA,CAAM,EACrDE,EAAW,CACPgB,WAAS,CAAA,CAAK,GACf04C,EAAY55C,UAAW,uBAAwB,KAAA,CAAM,EACxDE,EAAW,CACPgB,WAAS,OAAO,GACjB04C,EAAY55C,UAAW,SAAU,KAAA,CAAM,EAC1CE,EAAW,CACPgB,WAAS,YAAY,GACtB04C,EAAY55C,UAAW,OAAQ,KAAA,CAAM,EACxCE,EAAW,CACPykD,UAAQ,GAAIjiD,EAAsB,GACnCk3C,EAAY55C,UAAW,yBAA0B,KAAA,CAAM,EAC1DE,EAAW,CACPgB,WAAS,GAAG,GACb04C,EAAY55C,UAAW,OAAQ,KAAA,CAAM,EACxCE,EAAW,CACPgB,WAAS,IAAI,GACd04C,EAAY55C,UAAW,cAAe,KAAA,CAAM,EAC/CE,EAAW,CACPykD,UAAQ,GAAIpjD,CAAc,GAC3Bq4C,EAAY55C,UAAW,iBAAkB,KAAA,CAAM,EAClDE,EAAW,CACPgB,cACD04C,EAAY55C,UAAW,gBAAiB,KAAA,CAAM,EACjDE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACd04C,EAAY55C,UAAW,oBAAqB,KAAA,CAAM,EACrDE,EAAW,CACPgB,WAAS,IAAI,GACd04C,EAAY55C,UAAW,gBAAiB,KAAA,CAAM,EACjDE,EAAW,CACPgB,WAAS,CAAA,CAAK,GACf04C,EAAY55C,UAAW,kBAAmB,KAAA,CAAM,EACnDE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACd04C,EAAY55C,UAAW,gBAAiB,KAAA,CAAM,EACjDE,EAAW,CACPgB,WAAS,WAAW,GACrB04C,EAAY55C,UAAW,YAAa,KAAA,CAAM,EAC7CE,EAAW,CACPgB,WAAS,MAAM,GAChB04C,EAAY55C,UAAW,SAAU,KAAA,CAAM,EAC1CE,EAAW,CACPgB,WAAS,IAAI,GACd04C,EAAY55C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACPgB,WAAS,CAAA,CAAK,GACf04C,EAAY55C,UAAW,uBAAwB,KAAA,CAAM,EACxDE,EAAW,CACPykD,UAAQ,GAAItjD,CAAe,GAC5Bu4C,EAAY55C,UAAW,kBAAmB,KAAA,CAAM,EACnDE,EAAW,CACP0kD,aAAW,GAAItjD,CAAW,GAC3Bs4C,EAAY55C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACPykD,UAAQ,GAAIhiD,EAAc,GAC3Bi3C,EAAY55C,UAAW,iBAAkB,KAAA,CAAM,EAClDE,EAAW,CACPgB,WAAS,MAAM,GAChB04C,EAAY55C,UAAW,QAAS,KAAA,CAAM,EACzCE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,iBAAkB,KAAA,CAAM,EAClDE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,kBAAmB,KAAA,CAAM,EACnDE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,mBAAoB,KAAA,CAAM,EACpDE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,kBAAmB,KAAA,CAAM,EACnDE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,aAAc,KAAA,CAAM,EAC9CE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,UAAW,KAAA,CAAM,EAC3CE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,qBAAsB,KAAA,CAAM,EACtDE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,YAAa,KAAA,CAAM,EAC7CE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,SAAU,KAAA,CAAM,EAC1CE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,SAAU,KAAA,CAAM,EAC1CE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,aAAc,KAAA,CAAM,EAC9CE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,OAAQ,KAAA,CAAM,EACxCE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,SAAU,KAAA,CAAM,EAC1CE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,gBAAiB,KAAA,CAAM,EACjDE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,cAAe,KAAA,CAAM,EAC/CE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,gBAAiB,KAAA,CAAM,EACjDE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,aAAc,KAAA,CAAM,EAC9CE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,YAAa,KAAA,CAAM,EAC7CE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,YAAa,KAAA,CAAM,EAC7CE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,UAAW,KAAA,CAAM,EAC3CE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,aAAc,KAAA,CAAM,EAC9CE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,YAAa,KAAA,CAAM,EAC7CE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,UAAW,KAAA,CAAM,EAC3CE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,gBAAiB,KAAA,CAAM,EACjDE,EAAW,CACP2kD,WACDjL,EAAY55C,UAAW,mBAAoB,KAAA,CAAM,EACtCi0C,GAAgB/zC,EAAW,CACrC4kD,yBACDlL,CAAW,GA56Cd,SAASA,EAAYhsB,EAAS5gB,GACtBgtB,EAAQr6B,GAAOkmB,KAAK/lB,KAAM8tB,EAAS5gB,CAAO,GAAKlN,KAgDnD,OA/CAk6B,EAAM9V,WAAa,KACnB8V,EAAMrrB,cAAgB,GACtBqrB,EAAM7c,eAAiB,GACvB6c,EAAMzc,iBAAmB,GACzByc,EAAM+qB,aAAe,GACrB/qB,EAAMgrB,SAAW,GACjBhrB,EAAM1S,kBAAoB,EAC1B0S,EAAMlpB,eAAiB,CAAA,EACvBkpB,EAAM5mB,oBAAsB,GAC5B4mB,EAAMzF,UAAY,KAClByF,EAAMlX,WAAa,GACnBkX,EAAMirB,cAAgB,GACtBjrB,EAAMtY,OAAS,CAAA,EACfsY,EAAMvrB,MAAQ,CAAA,EACdurB,EAAM9qB,YAAc,CAAA,EACpB8qB,EAAMtc,aAAe,CAAA,EACrBsc,EAAMxc,aAAe,CAAA,EACrBwc,EAAMte,WAAa,GACnBse,EAAMkrB,aAAe,CAAA,EACrBlrB,EAAMhqB,WAAa,CAAA,EAEnBgqB,EAAMtnB,gBAAkB,CAAA,EACxBsnB,EAAMnrB,YAAc,CAAA,EACpBmrB,EAAMmrB,YAAc,CAAA,EACpBnrB,EAAM7G,UAAY,GAClB6G,EAAMymB,SAAW,CAAA,EACjBzmB,EAAMpI,cAAgB,CAAA,EACtBoI,EAAMrc,WAAa,CAAA,EACnBqc,EAAMuD,cAAgB,GACtBvD,EAAMrI,WAAa,GACnBqI,EAAM5H,YAAc,CAAA,EACpB4H,EAAM1d,SAAW,GACjB0d,EAAMxd,UAAY,GAClBwd,EAAM7d,SAAW,GACjB6d,EAAM1uB,SAAW,GACjB0uB,EAAMve,WAAa,CAAA,EACnBue,EAAM9a,gBAAkB,KACxB8a,EAAMS,mBAAqB,CAAEmoB,KAAM,GAAIlrC,IAAK,IAC5CsiB,EAAMvc,UAAY,CAAA,EAClBuc,EAAMra,UAAY,EAClBqa,EAAM1c,eAAiB,GACvB0c,EAAMmnB,eAAiB,EACvBnnB,EAAMonB,cAAgB,EAEtBpnB,EAAMmP,MAAQ,CAAA,EACdnP,EAAM+oB,kBAAoB,GAC1B9O,GAAcmR,OAAO1b,GAAevT,GAAgBmY,EAAW,EACxDtU,ECzEXqrB,EAAQrlD,UAAUo2B,OAAS,WACvB,IAAI4D,EAAQl6B,KAERgW,GADJhW,KAAK0W,MAAQ1W,KAAKwlD,gBAAgBxlD,KAAKylD,SAASzlD,KAAKqO,OAAOitC,gBAAgB5kC,MAAMyS,IAAI,SAAUhU,GAAQ,OAAOA,EAAKu9B,OAAS,CAAC,CAAC,EAC/G,CAAEh8B,MAAO1W,KAAK0W,QAC9B1W,KAAKqO,OAAOoH,QAAQ,gBAAiBO,EAAW,SAAU0vC,GACtDxrB,EAAMxjB,MAAQgvC,EAAkBhvC,MAChCwjB,EAAMyrB,WAAa,IAAIC,UAAY,CAC/BlvC,MAAOwjB,EAAMxjB,MACbgT,QAASwQ,EAAM2rB,qBAAqB52B,KAAKiL,CAAK,EAC9C4rB,aAAc,QACdC,QAAS7rB,EAAM8rB,UAAU/2B,KAAKiL,CAAK,EACnCnJ,oBAAqBmJ,EAAM7rB,OAAO0iB,oBAClCD,UAAWoJ,EAAM7rB,OAAOyiB,UAC3B,EACDoJ,EAAMyrB,WAAW30B,iBAAmB,CAAA,EACpCkJ,EAAMyrB,WAAW3qC,KAAOkf,EAAM7rB,OAAO2M,MAA2Bkf,EAAM7rB,OACtE6rB,EAAMyrB,WAAW10B,SAAS,IAAMiJ,EAAM7rB,OAAOnB,QAAQZ,GAAKokC,EAAc,EAC3E,GAEL6U,EAAQrlD,UAAU6xC,aAAe,SAAU58B,GAEvC,IADA,IAAI68B,EAAShyC,KAAKimD,MAAM9wC,CAAI,EACnBnU,EAAI,EAAGA,EAAIhB,KAAK0W,MAAM/V,OAAQK,CAAC,GACpC,GAAIhB,KAAK0W,MAAM1V,GAAGsL,KAAO0lC,EACrB,OAAOhxC,EAGf,MAAO,CAAC,GAEZukD,EAAQrlD,UAAUulD,SAAW,SAAU/uC,GAC/BwvC,EAAYxvC,EAAMmiB,QAOtB,OANI74B,KAAKqO,OAAO0zB,UAAY/hC,KAAKqO,OAAOyyB,qBACpColB,EAAU54C,KAAK,WAAW,EAG1B44C,EADkC,EAAlClmD,KAAKqO,OAAO83C,aAAaxlD,OACbX,KAAKqO,OAAO83C,aAAah9B,IAAI,SAAUhU,GAAQ,OAAOA,EAAKqB,KAAO,EAE3E0vC,GAGXX,EAAQrlD,UAAU8lD,UAAY,SAAU50C,GACpC,IAIIg1C,EACAtjC,EASA9M,EAdAkkB,EAAQl6B,KACRyM,CAAAA,oBAAM2E,EAAK+D,IAAI,GAAM/D,EAAK+D,KAAK7I,KAKtB,aAFT85C,EAAOh1C,EAAK+D,KAAK7I,GAAGojB,QAAQ1vB,KAAKqO,OAAOnB,QAAQZ,GAAK,QAAQ3L,MAAM,IAEpC,cAATylD,GAAiC,WAATA,GAC9CtjC,EAAU,CAACpQ,EAAc1S,KAAKqO,MAAM,GACpCrO,KAAKqO,OAAOiD,SAAWwR,IAGvB9iB,KAAKqO,OAAOW,OAAOgwB,GAAqB,EAAE,EAC1Clc,EAAU9iB,KAAKqO,OAAOiD,UAEtB0E,EAAY,CAAEmJ,OAAQ,CAAA,EAAOxJ,YAAamN,EAAS3N,KAAM/D,EAAK+D,MAClEnV,KAAKqO,OAAOoH,QAAQ,eAAgBO,EAAW,SAAUqwC,GACrD,IACI/lD,EACJ,GAAI,CAAC+lD,EAAiBlnC,OAClB,OAAQinC,GACJ,IAAK,UACD9lD,EAASuQ,UAAQO,EAAK+wB,cAAc7hC,OAAQ,IAAMgmD,EAAW,IAC/ChmD,EAAO2N,UAAUC,SAAS,iBAAiB,IACrDkD,EAAK+N,OAAS,CAAA,GAElB,MACJ,IAAK,YACD0D,GAAgBqX,EAAM7rB,MAAM,EAC5B,MACJ,IAAK,MACDkG,GAAS2lB,EAAM7rB,MAAM,EACrB,MACJ,IAAK,OACDgG,GAAU6lB,EAAM7rB,MAAM,EACtB,MACJ,IAAK,SACD,IAAK,IAAIrN,EAAI,EAAGA,EAAI8hB,EAAQniB,OAAQK,CAAC,GACjC,GAAI,CAAC+gB,EAAce,EAAQ9hB,EAAE,EAEzB,OADAiT,KAAAA,EAAmBimB,EAAM7rB,OAAQyU,EAAQ9hB,GAAIghB,CAAqB,EAI1E/F,EAAaie,EAAM7rB,OAAQ,QAAQ,EACnC,MACJ,IAAK,UACD6rB,EAAM7rB,OAAOW,OAAOmxB,EAAoB,EAAE,EAC1C6S,EAAS9Y,EAAM7rB,OAAO+B,cACY,mBAA9B8pB,EAAM7rB,OAAOmB,eACbwjC,EAAS,IAEb7tB,GAAW+U,EAAM7rB,OAAQ2kC,EAAQ9Y,EAAM7rB,OAAO1B,KAAM,SAAS,EAC7D,MACJ,IAAK,QACDutB,EAAM7rB,OAAOuN,WAAa,GAC1BF,GAAawe,EAAM7rB,MAAM,EACzB,MACJ,IAAK,UACDyF,GAAQomB,EAAM7rB,MAAM,EACpB,MACJ,IAAK,WACD4T,GAAWiY,EAAM7rB,MAAM,EACvB,MACJ,IAAK,SACI0T,EAAce,EAAQ,EAAE,GAIzBoX,EAAM7rB,OAAOW,OAAOuwB,GAAmB,EAAE,EACzCtjB,EAAaie,EAAM7rB,OAAQ,QAAQ,GAJnC4F,EAAmBimB,EAAM7rB,OAAQyU,EAAQ,GAAId,CAAqB,EAMtE,MACJ,IAAK,SACDgB,GAAWkX,EAAM7rB,MAAM,EACvB,MACJ,IAAK,YACD6rB,EAAM7rB,OAAOW,OAAOwwB,GAAsB,EAAE,EAC5C,MACJ,IAAK,YACDtF,EAAM7rB,OAAOW,OAAOywB,GAAqB,EAAE,GAI1D,IAEL8lB,EAAQrlD,UAAU2lD,qBAAuB,WAgFrC,IA/EA,IA6BQnjD,EA7BJw3B,EAAQl6B,KAiER+zB,GAhECtnB,oBAAMqB,SAAO,IAAM9N,KAAKimD,MAAM,QAAQ,EAAGjmD,KAAKqO,OAAOnB,OAAO,CAAC,IAC1DwJ,EAAQ,CACR,CAAEpK,GAAItM,KAAKumD,WAAW,MAAM,EAAGn6C,KAAMwM,EAAc5Y,KAAKqO,OAAQ,MAAM,EAClEupB,QAAgC,SAAvB53B,KAAKqO,OAAOyI,OAAoBg9B,GAAoB,IACjE,CAAExnC,GAAItM,KAAKumD,WAAW,MAAM,EAAGn6C,KAAMwM,EAAc5Y,KAAKqO,OAAQ,MAAM,EAClEupB,QAAgC,SAAvB53B,KAAKqO,OAAOyI,OAAoBg9B,GAAoB,IACjE,CAAExnC,GAAItM,KAAKumD,WAAW,MAAM,EAAGn6C,KAAMwM,EAAc5Y,KAAKqO,OAAQ,cAAc,EAC1EupB,QAAgC,iBAAvB53B,KAAKqO,OAAOyI,OAA4Bg9B,GAAoB,IACzE,CAAEX,UAAW,CAAA,GACb,CAAE7mC,GAAItM,KAAKumD,WAAW,WAAW,EAAGn6C,KAAMwM,EAAc5Y,KAAKqO,OAAQ,WAAW,EAC5EupB,QAAmC,cAA1B53B,KAAKqO,OAAOuI,UAA4Bm9B,EAAqB,IAC1E,CAAEznC,GAAItM,KAAKumD,WAAW,YAAY,EAAGn6C,KAAMwM,EAAc5Y,KAAKqO,OAAQ,YAAY,EAC9EupB,QAAmC,eAA1B53B,KAAKqO,OAAOuI,UAA6Bm9B,EAAqB,IAC3E,CAAEznC,GAAItM,KAAKumD,WAAW,MAAM,EAAGn6C,KAAMwM,EAAc5Y,KAAKqO,OAAQ,MAAM,EAClEupB,QAAmC,SAA1B53B,KAAKqO,OAAOuI,UAAuBm9B,EAAqB,KAEzE/zC,KAAKwmD,UAAY,IAAI9Z,iBAAe,CAChCh2B,MAAOA,EAAOsD,SAAUF,GAAY9Z,KAAKqO,OAAQwiB,EAAc,EAC/D/iB,OAAQmM,GAAmBgV,KAAKjvB,KAAMA,KAAKqO,MAAM,EACjD0iB,oBAAqB/wB,KAAKqO,OAAO0iB,oBACjCD,UAAW9wB,KAAKqO,OAAOyiB,UAAW8G,QAASic,GAC9C,EACD7zC,KAAKwmD,UAAUx1B,iBAAmB,CAAA,EAClChxB,KAAKwmD,UAAUv1B,SAAS,IAAMjxB,KAAKimD,MAAM,QAAQ,CAAC,GAEjDx5C,oBAAMqB,SAAO,IAAM9N,KAAKimD,MAAM,MAAM,EAAGjmD,KAAKqO,OAAOnB,OAAO,CAAC,IAGxDxK,EAAc,CACd,CACI4J,GAAItM,KAAKumD,WAAW,OAAO,EAAGn6C,KAAMwM,EAAc5Y,KAAKqO,OAAQ,iBAAiB,EAChFupB,QAA8B,YAArB53B,KAAKqO,OAAOgF,KAAqB,GAAK0gC,GAEnD,CACIznC,GAAItM,KAAKumD,WAAW,SAAS,EAAGn6C,KAAMwM,EAAc5Y,KAAKqO,OAAQ,cAAc,EAC/EupB,QAA8B,YAArB53B,KAAKqO,OAAOgF,KAAqB0gC,EAAqB,KAGvE/zC,KAAKymD,aAAe,IAAI/Z,iBAAe,CACnC9U,QAA8B,YAArB53B,KAAKqO,OAAOgF,KAAqBi8B,GAAgBF,GAC1Dp1B,SAAUF,GAAY9Z,KAAKqO,OAAQ,gBAAkBwiB,EAAc,EACnEna,MAAOhU,EAAaoL,OAAQ9N,KAAKiK,aAAaglB,KAAKjvB,IAAI,EACvD8wB,UAAW9wB,KAAKqO,OAAOyiB,UACvB9C,QAAS,iCAAmCpV,EAAc5Y,KAAKqO,OAAQ,MAAM,EAAI,UACjFw+B,iBAAkB,SAAUz7B,GACxB,IAAIs1C,EAAWt1C,EAAK+D,KAAKyiB,QACrB+uB,EAAWv1C,EAAK+D,KAAK/I,OAASwM,EAAcshB,EAAM7rB,OAAQ,iBAAiB,EAG3Es9B,GADJv6B,EAAKlE,QAAQyL,UAAY,iBADT+tC,EAAW,gBAAkBA,EAAW,IACD,aAAeC,EArBxD,uDADL,uDAsBwGv1C,EAAK+D,KAAK/I,KAChHgF,EAAKlE,QAAQ05C,YACpBjb,GAA2B,KAAnBA,EAAKxzB,WACb/G,EAAKlE,QAAQ2f,YAAY8e,CAAI,GAGxC,EACD3rC,KAAKymD,aAAaz1B,iBAAmB,CAAA,EACrChxB,KAAKymD,aAAax1B,SAAS,IAAMjxB,KAAKimD,MAAM,MAAM,CAAC,GAEvDjmD,KAAK6mD,UAAU7mD,KAAK8mD,QAAS,CAAA,CAAI,EACjC9mD,KAAK+mD,aACD/mD,KAAKqO,OAAO24C,SAAWhnD,KAAK2lD,WAAWqB,UACvChnD,KAAKqO,OAAO24C,QAAUhnD,KAAKqO,OAAO24C,QAAQ9U,OAAOlyC,KAAK2lD,WAAWqB,OAAO,EACxEhnD,KAAKqO,OAA6B,wBAErBwlB,YAAU,SAAU7zB,KAAK2lD,WAAWz4C,OAAO,GAcnD8mB,EAAW,EAAGA,EAAWD,EAAWpzB,OAAQqzB,CAAQ,GACzDC,CAdU,SAAUD,GAEpBD,EAAWC,GAAUE,UAAY,SAAUhH,GACrB,KAAdA,EAAEiH,SAAmBjH,EAAE5sB,OAAO2N,UAAUC,SAAS,YAAY,GAC7Dgf,EAAEkH,kBAGVL,EAAWC,GAAUnF,QAAU,SAAU3B,GACnB,KAAdA,EAAEiH,SAAmBjH,EAAE5sB,OAAO2N,UAAUC,SAAS,YAAY,GAC7D6lB,EAAWC,GAAU7Q,UAKrB6Q,CAAQ,EAEpBh0B,KAAKqO,OAAOo2C,iBAEhBc,EAAQrlD,UAAU+mD,mBAAqB,WACnC,GAAIjnD,KAAKwmD,UAEL,IADA,IAAI9vC,EAAQ1W,KAAKwmD,UAAU9vC,MAClBwwC,EAAY,EAAGA,EAAYxwC,EAAM/V,OAAQumD,CAAS,GACnDxwC,EAAMwwC,GAAW56C,KAAOtM,KAAKumD,WAAW,MAAM,EAC9C7vC,EAAMwwC,GAAWtvB,QAAiC,SAAvB53B,KAAKqO,OAAOyI,OAAoBg9B,GAAoB,GAE1Ep9B,EAAMwwC,GAAW56C,KAAOtM,KAAKumD,WAAW,MAAM,EACnD7vC,EAAMwwC,GAAWtvB,QAAiC,SAAvB53B,KAAKqO,OAAOyI,OAAoBg9B,GAAoB,GAE1Ep9B,EAAMwwC,GAAW56C,KAAOtM,KAAKumD,WAAW,MAAM,EACxB,iBAAvBvmD,KAAKqO,OAAOyI,QAAoD,gBAAvB9W,KAAKqO,OAAOyI,OACrDJ,EAAMwwC,GAAWtvB,QAAU53B,KAAKqO,OAAOyI,QAAW9W,KAAKqO,OAAOyI,OAASg9B,GAAoB,GAG3Fp9B,EAAMwwC,GAAWtvB,QAAiC,iBAAvB53B,KAAKqO,OAAOyI,OAA4Bg9B,GAAoB,GAGtFp9B,EAAMwwC,GAAW56C,KAAOtM,KAAKumD,WAAW,WAAW,EACxD7vC,EAAMwwC,GAAWtvB,QAAoC,cAA1B53B,KAAKqO,OAAOuI,UAA4Bm9B,EAAqB,GAEnFr9B,EAAMwwC,GAAW56C,KAAOtM,KAAKumD,WAAW,YAAY,EACzD7vC,EAAMwwC,GAAWtvB,QAAoC,eAA1B53B,KAAKqO,OAAOuI,UAA6Bm9B,EAAqB,GAEpFr9B,EAAMwwC,GAAW56C,KAAOtM,KAAKumD,WAAW,MAAM,IACnD7vC,EAAMwwC,GAAWtvB,QAAoC,SAA1B53B,KAAKqO,OAAOuI,UAAuBm9B,EAAqB,KAKnGwR,EAAQrlD,UAAUqmD,WAAa,SAAUj6C,GACrC,OAAOtM,KAAKqO,OAAOnB,QAAQZ,GAAK,QAAUA,EAAGgG,eAEjDizC,EAAQrlD,UAAU+J,aAAe,SAAUmH,GACd,YAArBpR,KAAKqO,OAAOgF,KACRjC,EAAK+D,KAAK7I,KAAOtM,KAAKumD,WAAW,OAAO,GACxCnzC,GAAapT,KAAKqO,OAAQ,YAAY,EAItC+C,EAAK+D,KAAK7I,KAAOtM,KAAKumD,WAAW,SAAS,GAC1CnzC,GAAapT,KAAKqO,OAAQ,SAAS,GAI/Ck3C,EAAQrlD,UAAUslD,gBAAkB,SAAUnjD,GAC1C,IAAIqU,EAAQ,GACR0R,EAAO,OACPpoB,KAAKqO,OAAO8L,WACZiO,EAAO,YAEX,IAAK,IAAIpnB,EAAI,EAAGA,EAAIqB,EAAK1B,OAAQK,CAAC,GAAI,CAClC,IAsFQmmD,EAtFJhyC,EAAO,KAAA,EACPiyC,EAAW,KAAA,EAIXpV,GAHkC,EAAlChyC,KAAKqO,OAAO83C,aAAaxlD,SACzBymD,EAAWpnD,KAAKqnD,aAAarnD,KAAKqO,OAAO83C,aAAa53C,SAASvN,EAAEwN,WAAY,EAAE,EAAE,GAExExO,KAAKimD,MAAM5jD,EAAKrB,EAAE,GAC3Bu2B,EAAW3e,EAAc5Y,KAAKqO,OAAQhM,EAAKrB,EAAE,EAC7CsmD,EAAc1uC,EAAc5Y,KAAKqO,OAAQ,WAAahM,EAAKrB,EAAE,EACjE,OAAQqB,EAAKrB,IACT,IAAK,IACDmU,EAAO,CAAElT,KAAM,aACf,MACJ,IAAK,SACDkT,EAAO,CAAE7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUgwB,YAAaD,EAAaE,WAAYnU,GAAiBoU,WAAYr/B,GACxG,MACJ,IAAK,SACD,IAAIs/B,EAAc,iDAAmDnwB,EAAW,UAIhFpiB,EAAO,CACH7I,GAAI0lC,EAAQuV,YAAaD,EACzBxlD,SAAU,eAAiBkwC,EAAS,kDAJpC0V,EADAN,GAAYA,EAASh7C,KACP,iDAAmDg7C,EAASh7C,KAAO,UAIMs7C,GAAc,aAEzG,MAEJ,IAAK,UACDvyC,EAAO,CAAE7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUgwB,YAAaD,EAAaE,WAAYxT,GAAkByT,WAAYr/B,GACzG,MACJ,IAAK,YACDjT,EAAO,CACH7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUgwB,YAAaD,EAAaK,WAAYC,GAAgBC,SAAU,OAC5FC,MAAO,SAEX,MACJ,IAAK,OACGnB,EAAW,KAAA,EAEXA,EADAS,GAAYA,EAASh7C,KACVg7C,EAASh7C,KAGTwM,EAAc5Y,KAAKqO,OAAQ,MAAM,EAEhD8G,EAAO,CACH7I,GAAI0lC,EAAQuV,YAAaD,EAAaE,WAAiC,YAArBxnD,KAAKqO,OAAOgF,KAAqBi8B,GAAgBF,GACnGyY,SAAU,OAAQC,MAAO,QAAS17C,KAAMmrB,EAAUkwB,WAAY,WAC9D3lD,SAAU,eAAiBkwC,EAAS,4DAChC2U,EAAW,cAEnB,MAEJ,IAAK,UACDxxC,EAAO,CACH7I,GAAI0lC,EAAQuV,YAAaD,EAAaE,WAAY5T,GAAkBiU,SAAU,OAAQC,MAAO,QAC7F17C,KAAMmrB,EAAUkwB,WAAY,YAEhC,MACJ,IAAK,YACDtyC,EAAO,CAAE7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUgwB,YAAaD,EAAaE,WAAY7T,GAAoB8T,WAAYr/B,GAC3G,MACJ,IAAK,MACDjT,EAAO,CAAE7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUgwB,YAAaD,EAAaE,WAAYlU,GAAcmU,WAAYr/B,GACrG,MACJ,IAAK,OACDjT,EAAO,CAAE7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUgwB,YAAaD,EAAaE,WAAYjU,GAAekU,WAAYr/B,GACtG,MACJ,IAAK,QACDjT,EAAO,CAAE7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUgwB,YAAaD,EAAaE,WAAYhU,GAAgBiU,WAAYr/B,GACvG,MACJ,IAAK,SACDjT,EAAO,CAAE7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUgwB,YAAaD,EAAaE,WAAY/T,GAAiBgU,WAAYr/B,GACxG,MACJ,IAAK,SACDjT,EAAO,CAAE7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUgwB,YAAaD,EAAaE,WAAY9T,GAAiB+T,WAAYr/B,GACxG,MACJ,IAAK,WACDjT,EAAO,CAAE7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUgwB,YAAaD,EAAaE,WAAYtT,GAAmBuT,WAAYr/B,GAC1G,MACJ,IAAK,YACDjT,EAAO,CAAE7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUgwB,YAAaD,EAAaE,WAAYvT,GAAoBwT,WAAYr/B,GAC3G,MACJ,QACIjT,EAAO,CAAE7I,GAAI0lC,EAAQ5lC,KAAMmrB,EAAUgwB,YAAaD,EAAaxlD,SAAU,IAG3C,EAAlC9B,KAAKqO,OAAO83C,aAAaxlD,QAAcymD,GACnCD,EAAc5nD,OAAO0mB,OAAO,GAAI9Q,EAAMiyC,CAAQ,EAClD1wC,EAAMpJ,KAAK65C,CAAW,GAGtBzwC,EAAMpJ,KAAK6H,CAAI,EAGvB,OAAOuB,GAEX6uC,EAAQrlD,UAAUmnD,aAAe,SAAUD,GACvC,IAAIjyC,EAAO,GAoDX,OAnDIiyC,EAAS96C,KACT6I,EAAK7I,GAAK86C,EAAS96C,IAEnB86C,EAASh7C,OACT+I,EAAK/I,KAAOg7C,EAASh7C,MAErBg7C,EAASG,cACTpyC,EAAKoyC,YAAcH,EAASG,aAE5BH,EAASI,aACTryC,EAAKqyC,WAAaJ,EAASI,YAE3BJ,EAASptC,WACT7E,EAAK6E,SAAWotC,EAASptC,UAED,SAAxBotC,EAASK,aACTtyC,EAAKsyC,WAAaL,EAASK,YAE3BL,EAAStlD,WACTqT,EAAKrT,SAAWslD,EAAStlD,UAEzBslD,EAASW,WACT5yC,EAAK4yC,SAAWX,EAASW,UAEN,SAAnBX,EAASjlD,QACTgT,EAAKhT,MAAQilD,EAASjlD,OAEtBilD,EAASO,aACTxyC,EAAKwyC,WAAaP,EAASO,YAER,SAAnBP,EAASU,QACT3yC,EAAK2yC,MAAQV,EAASU,OAEA,SAAtBV,EAASS,WACT1yC,EAAK0yC,SAAWT,EAASS,UAEzBT,EAASvvB,iBACT1iB,EAAK0iB,eAAiBuvB,EAASvvB,gBAEb,WAAlBuvB,EAASnlD,OACTkT,EAAKlT,KAAOmlD,EAASnlD,MAEA,CAAA,IAArBmlD,EAASn8B,UACT9V,EAAK8V,QAAUm8B,EAASn8B,SAExBm8B,EAASY,oBACT7yC,EAAK6yC,kBAAoBZ,EAASY,mBAEZ,CAAC,IAAvBZ,EAASa,WACT9yC,EAAK8yC,SAAWb,EAASa,UAEtB9yC,GAEXowC,EAAQrlD,UAAU+lD,MAAQ,SAAU35C,GAChC,OAAOtM,KAAKqO,OAAOnB,QAAQZ,GAAK,OAASA,EAAGgG,eAEhDizC,EAAQrlD,UAAUs5B,iBAAmB,WACjCx5B,KAAKqO,OAAOoyB,GAAGvB,EAAqBl/B,KAAKm/B,kBAAmBn/B,IAAI,EAChEA,KAAKqO,OAAOoyB,GAAG3V,EAAyB9qB,KAAKkoD,mBAAoBloD,IAAI,EACrEA,KAAKqO,OAAOoyB,GAAGhvB,EAAqBzR,KAAKm8B,eAAgBn8B,IAAI,EAC7DA,KAAKqO,OAAOoyB,GAAG5wB,GAAkB7P,KAAKyK,UAAWzK,IAAI,EACrDA,KAAKqO,OAAOoyB,GAAGxxB,GAAkBjP,KAAK0K,UAAW1K,IAAI,EACrDA,KAAKqO,OAAOoyB,GAAG2N,GAAgBpuC,KAAKoJ,QAASpJ,IAAI,EACjDA,KAAKqO,OAAOoyB,GAAGnmB,GAAqBta,KAAKinD,mBAAoBjnD,IAAI,GAErEulD,EAAQrlD,UAAUioD,gBAAkB,SAAUj7B,GAC1C,IAAIgN,EAAQl6B,KACRooD,EAAiB,GACiB,EAAlCpoD,KAAKqO,OAAO83C,aAAaxlD,OACzBynD,EAAiBpoD,KAAKqO,OAAO83C,aAAah9B,IAAI,SAAUhU,GACpD,OAAOA,EAAKqB,KACf,EAEwCoN,KAAAA,IAApCsJ,EAAE2T,QAAQya,gBAAgB5kC,QAC/B0xC,EAAiBl7B,EAAE2T,QAAQya,gBAAgB5kC,MAAMyS,IAAI,SAAUhU,GAC3D,OAAOA,EAAKu9B,OACf,GAEuB,EAAxB0V,EAAeznD,SACfX,KAAK0W,MAAQ1W,KAAKwlD,gBAAgBxlD,KAAKylD,SAAS2C,CAAc,CAAC,EAC3DpyC,EAAY,CAAEU,MAAO1W,KAAK0W,OAC9B1W,KAAKqO,OAAOoH,QAAQ,gBAAiBO,EAAW,SAAU0vC,GAClDxrB,EAAMssB,WACNtsB,EAAMssB,UAAUp9C,UAEhB8wB,EAAMusB,cACNvsB,EAAMusB,aAAar9C,UAEvB8wB,EAAMxjB,MAAQgvC,EAAkBhvC,MAChCwjB,EAAMyrB,WAAWjvC,MAAQwjB,EAAMxjB,MAC/BwjB,EAAMyrB,WAAWx0B,WACjB+I,EAAM2rB,uBACT,IAGTN,EAAQrlD,UAAUgoD,mBAAqB,WACnCloD,KAAK+mD,aACL/mD,KAAK6mD,UAAU7mD,KAAKqoD,OAAQ,CAAA,CAAI,EAChCroD,KAAK6mD,UAAU7mD,KAAKsoD,UAAW,CAAA,CAAK,EACK,IAArCtoD,KAAKqO,OAAO+B,cAAczP,QAC1BX,KAAK6mD,UAAU7mD,KAAKqoD,OAAQ,CAAA,CAAK,EACjCroD,KAAK6mD,UAAU7mD,KAAKsoD,UAAW,CAAA,CAAI,GAEK,EAAnCtoD,KAAKqO,OAAO+B,cAAczP,SAC/BX,KAAK6mD,UAAU7mD,KAAKuoD,SAAU,CAAA,CAAK,EACnCvoD,KAAK6mD,UAAU7mD,KAAKsoD,UAAW,CAAA,CAAI,GAEvC,IAIQj5B,EAJJxQ,EAAM/Q,SAAO,IAAM9N,KAAKimD,MAAM,WAAW,EAAGjmD,KAAK2lD,WAAWz4C,OAAO,EAChC,EAAnClN,KAAKqO,OAAO+B,cAAczP,QAAcke,GAAO,CAAC7e,KAAKqO,OAAOiqB,uBACxDjJ,EAAM,KAAA,EAENA,EADqC,IAArCrvB,KAAKqO,OAAO+B,cAAczP,OACpBX,KAAKqO,OAAO+B,cAAczP,OAAS,IAAMiY,EAAc5Y,KAAKqO,OAAQ,gBAAgB,EAGpFrO,KAAKqO,OAAO+B,cAAczP,OAAS,IAAMiY,EAAc5Y,KAAKqO,OAAQ,iBAAiB,EAE/FP,SAAO,mBAAoB+Q,CAAG,EAAE7Q,YAAcqhB,EAC9CrvB,KAAK2lD,WAAW6C,SAAS3pC,EAAIuC,cAAe,CAAA,CAAK,IAGzDmkC,EAAQrlD,UAAU2mD,UAAY,SAAU4B,EAAOC,GAC3C,IAAK,IAAI1nD,EAAI,EAAGA,EAAIynD,EAAM9nD,OAAQK,CAAC,GAAI,CACnC,IAAI6d,EAAM/Q,SAAO,IAAM9N,KAAKimD,MAAMwC,EAAMznD,EAAE,EAAGhB,KAAKqO,OAAOnB,OAAO,EAC5D2R,GACA7e,KAAK2lD,WAAW6C,SAAS3pC,EAAIuC,cAAesnC,CAAM,IAI9DnD,EAAQrlD,UAAU6mD,WAAa,WAC3B,IAAIloC,EAAM/Q,SAAO,IAAM9N,KAAKimD,MAAM,WAAW,EAAGjmD,KAAK2lD,WAAWz4C,OAAO,EACnE2R,GACA7e,KAAK2lD,WAAW6C,SAAS3pC,EAAIuC,cAAe,CAAA,CAAI,GAGxDmkC,EAAQrlD,UAAUuK,UAAY,WAC1BzK,KAAK6mD,UAAU,CAAC,SAAU,CAAA,CAAK,GAEnCtB,EAAQrlD,UAAUwK,UAAY,WAC1B1K,KAAK6mD,UAAU,CAAC,SAAU,CAAA,CAAI,GAElCtB,EAAQrlD,UAAUi8B,eAAiB,WAC/B,GAAIn8B,KAAKymD,aAAc,CACnBzmD,KAAKymD,aAAa7uB,QAA+B,YAArB53B,KAAKqO,OAAOgF,KAAqBi8B,GAAgBF,GAE7E,IADA,IAAI14B,EAAQ1W,KAAKymD,aAAa/vC,MACrBwwC,EAAY,EAAGA,EAAYxwC,EAAM/V,OAAQumD,CAAS,GACnDxwC,EAAMwwC,GAAW56C,KAAOtM,KAAKumD,WAAW,OAAO,EAC/C7vC,EAAMwwC,GAAWtvB,QAA+B,eAArB53B,KAAKqO,OAAOgF,KAAwB0gC,EAAqB,GAE/Er9B,EAAMwwC,GAAW56C,KAAOtM,KAAKumD,WAAW,SAAS,IACtD7vC,EAAMwwC,GAAWtvB,QAA+B,YAArB53B,KAAKqO,OAAOgF,KAAqB0gC,EAAqB,MAKjGwR,EAAQrlD,UAAU42B,oBAAsB,WACpC92B,KAAKqO,OAAO0wB,IAAIG,EAAqBl/B,KAAKm/B,iBAAiB,EAC3Dn/B,KAAKqO,OAAO0wB,IAAIjU,EAAyB9qB,KAAKkoD,kBAAkB,EAChEloD,KAAKqO,OAAO0wB,IAAIttB,EAAqBzR,KAAKm8B,cAAc,EACxDn8B,KAAKqO,OAAO0wB,IAAIlvB,GAAkB7P,KAAKyK,SAAS,EAChDzK,KAAKqO,OAAO0wB,IAAI9vB,GAAkBjP,KAAK0K,SAAS,EAChD1K,KAAKqO,OAAO0wB,IAAIqP,GAAgBpuC,KAAKoJ,OAAO,EAC5CpJ,KAAKqO,OAAO0wB,IAAIzkB,GAAqBta,KAAKinD,kBAAkB,GAQhE1B,EAAQrlD,UAAUq7B,cAAgB,WAC9B,MAAO,WAEXgqB,EAAQrlD,UAAUi/B,kBAAoB,SAAUjS,GAC5C,GAAIA,EAAE7S,SAAWra,KAAKu7B,iBAAgC,WAAbrO,EAAE7S,OAI3C,IAAK,IAAIsmB,EAAK,EAAGC,EAAKrhC,OAAOkiB,KAAKyL,EAAE2T,OAAO,EAAGF,EAAKC,EAAGjgC,OAAQggC,CAAE,GAE5D,OADWC,EAAGD,IAEV,IAAK,WACG3gC,KAAKwmD,YACLxmD,KAAKwmD,UAAUxsC,SAAWF,GAAY9Z,KAAKqO,OAAQwiB,EAAc,GAEjE7wB,KAAKymD,eACLzmD,KAAKymD,aAAazsC,SAAWF,GAAY9Z,KAAKqO,OAAQ,gBAAkBwiB,EAAc,GAE1F,MACJ,IAAK,SACL,IAAK,QACD7wB,KAAK2lD,WAAWgD,kBAChB,MACJ,IAAK,kBACL,IAAK,eACD3oD,KAAKmoD,gBAAgBj7B,CAAC,IAKtCq4B,EAAQrlD,UAAUkJ,QAAU,WACpBpJ,KAAKqO,OAAOywB,cAGhB9+B,KAAK82B,sBACD92B,KAAKwmD,WACLxmD,KAAKwmD,UAAUp9C,UAEfpJ,KAAKymD,cACLzmD,KAAKymD,aAAar9C,UAEtBpJ,KAAK2lD,WAAWv8C,UAChBpJ,KAAKqO,OAAOo2C,kBAEhBc,EAAQrlD,UAAU0xC,YAAc,SAAUl7B,EAAOkyC,GAC7C,IAAK,IAAI5nD,EAAI,EAAGA,EAAI0V,EAAM/V,OAAQK,CAAC,GAAI,CACnC,IAAI6d,EAAM/Q,SAAO,IAAM9N,KAAKimD,MAAMvvC,EAAM1V,EAAE,EAAGhB,KAAKqO,OAAOnB,OAAO,EAC5D2R,GACA7e,KAAK2lD,WAAW/T,YAAY/yB,EAAIuC,cAAewnC,CAAQ,IAhlBnErD,EAolBOA,EA5kBP,SAASA,EAAQl3C,GACbrO,KAAK8mD,QAAU,CAAC,SAAU,SAAU,WAAY,MAAO,OAAQ,SAC/D9mD,KAAKqoD,OAAS,CAAC,SAAU,SAAU,WAAY,MAAO,QACtDroD,KAAKuoD,SAAW,CAAC,SAAU,WAAY,MAAO,OAAQ,WACtDvoD,KAAKsoD,UAAY,CAAC,YAAa,SAAU,SAAU,WACnDtoD,KAAKqO,OAASA,EACdrO,KAAKs2B,SACLt2B,KAAKw5B,mBChBTqvB,GAAe3oD,UAAUs4B,oBAAsB,WAE3C,IAAIswB,EAAmB9oD,KAAK+oD,kBAAkBryC,MAE1CitB,EAAYmlB,EAAiBjwB,MAAM,EAAG,CAAC,EAEvCJ,EAAeC,WAASC,mBAAmBzgB,gBAAeyrB,EAAW3jC,KAAK+oD,kBAAkBnyB,OAAO,EAEvG52B,KAAK44B,SAAWl5B,MAAMQ,UAAU24B,MAAM9S,KAAK8N,YAAU,IAAMhmB,EAAe4qB,CAAY,CAAC,EAEvFz4B,KAAK+oD,kBAAkB77C,QAAQuL,YAAYggB,CAAY,EAC1B,IAAzBz4B,KAAK44B,SAASj4B,QAAgBX,KAAK+oD,kBAAkB77C,QAAQ6K,cAAc,IAAMC,CAAS,GAC1FhY,KAAK+oD,kBAAkB77C,QAAQ2f,YAAY7sB,KAAK+oD,kBAAkB77C,QAAQ6K,cAAc,IAAMC,CAAS,CAAC,EAG5GhY,KAAKknD,UAAYlnD,KAAKu5B,aAAah6B,OAAOkiB,KAAKzhB,KAAK+oD,kBAAkB51C,QAAQ,EAAExS,MAAM,EAEtFX,KAAK+oD,kBAAkB77C,QAAQ05C,WAAWj2C,SAE1C3Q,KAAK+oD,kBAAkBryC,MAAQoyC,EAAiBjwB,MAAM,EAAG74B,KAAKknD,SAAS,GAQ3E2B,GAAe3oD,UAAUw5B,mBAAqB,WAE1C15B,KAAKgpD,cAAgBhpD,KAAK+oD,kBAAkB51C,SAASxS,OAASX,KAAKknD,WAAalnD,KAAKipD,cAChFjpD,KAAK+oD,kBAAkB51C,SAASxS,OAASX,KAAKknD,WAAalnD,KAAKipD,aAAejpD,KAAKipD,aAEzFjpD,KAAKkpD,WAAalpD,KAAKmpD,oBAAoBjxC,cAAc,KAAK,EAC9DlY,KAAKkpD,WAAWj7C,UAAUqC,IAAI,eAAe,EAC7CtQ,KAAK+oD,kBAAkB77C,QAAQoU,kBAAkB2a,aAAaj8B,KAAKkpD,WAAYlpD,KAAK+oD,kBAAkB77C,QAAQoU,kBAAkBslC,UAAU,EAC1I5mD,KAAKopD,cAAgBppD,KAAKmpD,oBAAoBjxC,cAAc,KAAK,EACjElY,KAAKopD,cAAcn7C,UAAUqC,IAAI,kBAAkB,EACnDtQ,KAAK+oD,kBAAkB77C,QAAQoU,kBAAkB2a,aAAaj8B,KAAKopD,cAAe,IAAI,EAEtF,IAAI9jB,EAAc/2B,SAAS8Q,OAAOyW,iBAAiB91B,KAAK+oD,kBAAkBnwB,SAAS,EAAE,EAAE2M,iBAAiB,YAAY,EAAG,EAAE,EACrHh3B,SAAS8Q,OAAOyW,iBAAiB91B,KAAK+oD,kBAAkBnwB,SAAS,EAAE,EAAE2M,iBAAiB,eAAe,EAAG,EAAE,EAE9GvlC,KAAKqpD,eAAiBrpD,KAAK+oD,kBAAkBnwB,SAAS,GAAG/X,wBAAwBuU,OAASkQ,EAE1FtlC,KAAKspD,YAAe/pD,OAAOkiB,KAAKzhB,KAAK+oD,kBAAkB51C,QAAQ,EAAExS,OAASX,KAAKipD,aAAgBjpD,KAAKqpD,eAEpGrpD,KAAKkpD,WAAWrwC,MAAMuc,OAAS,MAC/Bp1B,KAAKopD,cAAcvwC,MAAMuc,OAASp1B,KAAKspD,YAAc,KAErDtpD,KAAKupD,iBAAmB,EACxBvpD,KAAKwpD,oBAAsBxpD,KAAKspD,YAEhCtpD,KAAKypD,SAAW,EAEhBzpD,KAAK0pD,cAAgB1pD,KAAKknD,WAQ9B2B,GAAe3oD,UAAUq5B,aAAe,SAAUowB,GAE9C,IAAIC,EAAcr7C,SAAS8Q,OAAOyW,iBAAiB91B,KAAK44B,SAAS,EAAE,EAAE2M,iBAAiB,cAAc,EAAG,EAAE,EACrGh3B,SAAS8Q,OAAOyW,iBAAiB91B,KAAK44B,SAAS,EAAE,EAAE2M,iBAAiB,aAAa,EAAG,EAAE,EAMtF2hB,GAJJlnD,KAAKipD,aACDlG,KAAK8G,MAAM7zB,WAAWokB,aAAWp6C,KAAK+oD,kBAAkB77C,QAAQoU,kBAAkB8pB,WAAW,CAAC,GACzFprC,KAAK44B,SAAS,GAAGxC,YAAcwzB,EAAY,EAEpC5pD,KAAKipD,aAChBlG,KAAK+G,MAAM9zB,WAAWokB,aAAWp6C,KAAK+oD,kBAAkB77C,QAAQ4T,YAAY,CAAC,EAAI9gB,KAAK44B,SAAS,GAAGjhB,YAAa,GAKpH,OAFIuvC,EADYyC,EAAZzC,GAA8C,IAAdA,EACpByC,EAETzC,GAQX2B,GAAe3oD,UAAUy5B,gBAAkB,SAAUvwB,GAC5CA,EAMDm4B,eAAa5wB,OAAO3Q,KAAK+oD,kBAAkB77C,QAAQoU,kBAAmB,SAAUthB,KAAK+pD,iBAAiB,EAJtGxoB,eAAajxB,IAAItQ,KAAK+oD,kBAAkB77C,QAAQoU,kBAAmB,SAAUthB,KAAK+pD,kBAAmB/pD,IAAI,GAcjH6oD,GAAe3oD,UAAU6pD,kBAAoB,WAKzC/pD,KAAKgqD,eAAiBnzC,oBAAkB7W,KAAKgqD,cAAc,EAAI,EAAIhqD,KAAKgqD,eAJxE,IAAIppB,EA0BQ6oB,EArBRQ,EAASjqD,KAAKkqD,kBAHG,CAG6B,EAElDlqD,KAAKupD,iBAAmBvpD,KAAKqpD,eAAiBtG,KAAK8G,MAAMI,EAASjqD,KAAKqpD,cAAc,EAErFrpD,KAAKwpD,oBAAsBxpD,KAAKspD,YAActpD,KAAKupD,iBAGnD3oB,EAAKqpB,GAAUjqD,KAAKspD,YAChB,CAACtpD,KAAKupD,iBAAkBvpD,KAAKwpD,qBAAuB,CAACxpD,KAAKspD,YAAa,GAAItpD,KAAKupD,iBAAmB3oB,EAAG,GAAI5gC,KAAKwpD,oBAAsB5oB,EAAG,GAExI5gC,KAAKupD,mBAAqBvzB,WAAWh2B,KAAKkpD,WAAWrwC,MAAMuc,MAAM,IACjEp1B,KAAKkpD,WAAWrwC,MAAMuc,OAASp1B,KAAKupD,iBAAmB,KACvDvpD,KAAKopD,cAAcvwC,MAAMuc,OAASp1B,KAAKwpD,oBAAsB,KAEzDS,EAASjqD,KAAKgqD,gBAEVP,EAAW1G,KAAK+G,MAAQ9pD,KAAKupD,iBAAmBvpD,KAAKqpD,eAAkBrpD,KAAKypD,UAChFzpD,KAAKmqD,eAAeV,EAAU,CAAA,CAAI,IAI9BA,EAAW1G,KAAK+G,MAAO9pD,KAAKypD,SAAYzpD,KAAKupD,iBAAmBvpD,KAAKqpD,gBACzErpD,KAAKmqD,eAAeV,EAAU,CAAA,CAAK,IAI3CzpD,KAAKypD,SAAW1G,KAAK+G,MAAM9pD,KAAKupD,iBAAmBvpD,KAAKqpD,cAAc,EACtErpD,KAAKgqD,eAAiBC,EAEtBjqD,KAAK+oD,kBAAkBnwB,SAAWl5B,MAAMQ,UAAU24B,MAAM9S,KAAK8N,YAAU,IAAMhmB,EAAe7N,KAAK+oD,kBAAkB77C,OAAO,CAAC,EAC3HlN,KAAKknD,UAAYlnD,KAAKknD,YAAclnD,KAAK+oD,kBAAkBnwB,SAASj4B,OAChEX,KAAK+oD,kBAAkBnwB,SAASj4B,OAASX,KAAKknD,UAClDlnD,KAAK+oD,kBAAkBryC,MAAQ1W,KAAK+oD,kBAAkB51C,SAAS0lB,MAAM74B,KAAK0pD,cACtE1pD,KAAKknD,UAAWlnD,KAAK0pD,aAAa,GAS1Cb,GAAe3oD,UAAUgqD,kBAAoB,SAAUE,GAGnD,OAASpqD,KAAK+oD,kBAAkB77C,QAAQoU,kBAAkByiB,UAAYqmB,GAAmB,EAAK,EACzFpqD,KAAK+oD,kBAAkB77C,QAAQoU,kBAAkByiB,UAAYqmB,GAUtEvB,GAAe3oD,UAAUiqD,eAAiB,SAAUV,EAAUY,GAE1D,IAAK,IAAIrpD,EAAI,EAAGA,EAAIyoD,EAAUzoD,CAAC,GAC3BhB,KAAKsqD,SAASD,CAAe,GAUrCxB,GAAe3oD,UAAUoqD,SAAW,SAAUD,GAC1C,IAAInwB,EAAQl6B,KACZ,GAAIqqD,GAIA,GAFArqD,KAAK0W,MAAQ1W,KAAK+oD,kBAAkB51C,SAAS0lB,MAAM74B,KAAK0pD,cAAe1pD,KAAK0pD,cAAgB1pD,KAAKipD,YAAY,EAErF,EAApBjpD,KAAK0W,MAAM/V,OAAY,CACvB,IAAI83B,EAAeC,WAASC,mBAAmBzgB,gBAAelY,KAAK0W,MAAO1W,KAAK+oD,kBAAkBnyB,OAAO,EACxG52B,KAAK44B,SAAWl5B,MAAMQ,UAAU24B,MAAM9S,KAAK8N,YAAU,IAAMhmB,EAAe4qB,CAAY,CAAC,EACvFz4B,KAAK44B,SAAS9R,QAAQ,SAAUwnB,GAC5BpU,EAAM6uB,kBAAkB77C,QAAQoU,kBAAkB2a,aAAaqS,EAAOpU,EAAMkvB,aAAa,EAC5F,EAEDppD,KAAK0pD,cAAiB1pD,KAAK+oD,kBAAkB51C,SAASxS,QAAUX,KAAK0pD,cAAgB1pD,KAAKipD,aACtFjpD,KAAK0pD,cAAgB1pD,KAAKipD,aAAejpD,KAAK0pD,cAAgB1pD,KAAKgpD,aAEvE,IAAK,IAAIhoD,EAAI,EAAGA,EAAIhB,KAAKipD,aAAcjoD,CAAC,GACpC2e,SAAO3f,KAAKkpD,WAAWh+B,kBAAkB,OAIhD,CAED,IAAIq/B,EAAgB,KAAA,EAChBC,EAAgB,KAAA,EAkBhBC,GAjBAzqD,KAAK0pD,gBAAkB1pD,KAAK+oD,kBAAkB51C,SAASxS,QAEvD4pD,EAAgBvqD,KAAK0pD,eAAiB1pD,KAAKknD,UAAYlnD,KAAKipD,aAAejpD,KAAKgpD,cAEhFhpD,KAAK0pD,cAAkB1pD,KAAK0pD,cAAgB1pD,KAAKgpD,aAAgBhpD,KAAKknD,UAClElnD,KAAKknD,UAAalnD,KAAK0pD,cAAgB1pD,KAAKgpD,aAEhDwB,EAAgB,CAAA,IAIhBD,EAAgBvqD,KAAK0pD,cAAgB1pD,KAAKknD,UAE1ClnD,KAAK0pD,cAAkB1pD,KAAK0pD,cAAgB1pD,KAAKipD,aAAgBjpD,KAAKknD,UAClElnD,KAAKknD,UAAalnD,KAAK0pD,cAAgB1pD,KAAKipD,cAGM,EAApCsB,EAAgBvqD,KAAKipD,aAAoBsB,EAAgBvqD,KAAKipD,aAAe,GAGnG,GADAjpD,KAAK0W,MAAQ1W,KAAK+oD,kBAAkB51C,SAAS0lB,MAAM4xB,EAAgBF,CAAa,EACxD,EAApBvqD,KAAK0W,MAAM/V,OAAY,CAEnB83B,EAAeC,WAASC,mBAAmBzgB,gBAAelY,KAAK0W,MAAO1W,KAAK+oD,kBAAkBnyB,OAAO,EAExG52B,KAAK44B,SAAWl5B,MAAMQ,UAAU24B,MAAM9S,KAAK8N,YAAU,IAAMhmB,EAAe4qB,CAAY,CAAC,EAEvF,IAAK,IAAItf,EAAMnZ,KAAK44B,SAASj4B,OAAc,EAANwY,EAASA,CAAG,GAC7CnZ,KAAK+oD,kBAAkB77C,QAAQoU,kBAAkB2a,aAAaj8B,KAAK44B,SAASzf,EAAM,GAAInZ,KAAKkpD,WAAWh+B,kBAAkB,EAG5H,IAASlqB,EAAI,EAAGA,GAAK,EAAkBhB,KAAKgpD,aAAehpD,KAAKipD,cAAejoD,CAAC,GAC5E2e,SAAO3f,KAAKopD,cAAcsB,sBAAsB,KAWhE7B,GAAe3oD,UAAUq7B,cAAgB,WACrC,MAAO,kBAOXstB,GAAe3oD,UAAUkJ,QAAU,WAE3BpJ,KAAKmpD,oBAAoBrqB,aAIxBjoB,oBAAkB7W,KAAK+oD,kBAAkB77C,QAAQoU,iBAAiB,GACnEthB,KAAK25B,gBAAgB,CAAA,CAAI,OA7QjCkvB,GAgROA,GA/QP,SAASA,GAAe18C,GACpBnM,KAAKmpD,oBAAsBh9C,EAC3BnM,KAAK+oD,kBAAoB58C,EAAS+G,qBC+CtCy3C,EAAezqD,UAAU0qD,OAAS,WAC9B,IAGIC,EAEAC,EACAx+C,EANCG,oBAAMzM,KAAKme,OAAO,IAGnB0sC,EAAWx+C,WAASrM,KAAKqO,OAAOvB,OAAO,GAAI9M,KAAKqO,OAAOI,QAAQ,EACnE2K,WAAS,WAAY,cAAeyxC,CAAQ,EACxCC,EAAO,GACPx+C,EAAKD,WAAS,KAAMw+C,CAAQ,EAC3Bp+C,oBAAMH,CAAE,GACT8M,WAAS,UAAW9M,EAAIw+C,CAAI,EAE3B/oC,EAAc8oC,CAAQ,GACvBzxC,WAAS,QAASqJ,GAAeooC,CAAQ,EAAGC,CAAI,EAE/Cr+C,oBAAMq+C,CAAI,GACX1xC,WAAS,eAAgB0xC,EAAMD,CAAQ,EAE3C7qD,KAAKme,QAAU,IAAI4sC,WAAa,CAC5BpzB,OAAQ,CACJ1kB,WAAY,CAAC43C,GAAWv+C,GAAI,SAAUyb,SAAU,UAAWijC,SAAU,eAAgBruB,SAAU,eAAgBvwB,KAAM,OACrH6+C,YAAa,WAAYrzB,QAAS,WAAYC,eAAgB,eAAgBqzB,QAAS,QAE3Fn6B,oBAAqB/wB,KAAKqO,OAAO0iB,oBACjCna,UAAW5W,KAAKqO,OAAOksC,uBAAuB3jC,UAC9Cu0C,cAAenrD,KAAKorD,gBAAgBn8B,KAAKjvB,IAAI,EAC7CqrD,aAAcrrD,KAAKsrD,eAAer8B,KAAKjvB,IAAI,EAC3CurD,cAAevrD,KAAKwrD,aAAav8B,KAAKjvB,IAAI,EAC1CyrD,YAAazrD,KAAK0rD,cAAcz8B,KAAKjvB,IAAI,EACzC2rD,aAAc,CAAA,EACdC,YAAa5rD,KAAK6rD,cAAc58B,KAAKjvB,IAAI,EACzC8rD,SAAU9rD,KAAK+rD,WAAW98B,KAAKjvB,IAAI,EACnC8wB,UAAW9wB,KAAKqO,OAAOyiB,UACvBk7B,UAAWhsD,KAAKisD,YAAYh9B,KAAKjvB,IAAI,EACxC,EACDA,KAAKme,QAAQ6S,iBAAmB,CAAA,EAChChxB,KAAKme,QAAQ8S,SAAS,IAAMjxB,KAAKqO,OAAOnB,QAAQZ,GAAKwkC,EAAW,EAChE9wC,KAAKy5B,eAETkxB,EAAezqD,UAAU+rD,YAAc,WACnC,IAAI/xB,EAAQl6B,KACR,CAACA,KAAKqO,OAAO8L,UAAYna,KAAKme,UAC1Bne,KAAKqO,OAAO2R,kBAAoBvT,oBAAMzM,KAAK+f,OAAO,EAClD/f,KAAK+f,QAAU,IAAIoa,YAAUn6B,KAAKme,QAAQjR,QAAS,CAC/CwtB,SAAU16B,KAAKqO,OAAOssB,mBACtBJ,WAAY,IAAM+V,GAClBjW,SAAU,EACVO,SAAU56B,KAAKqO,OAAOnB,QACtB4tB,KAAM9Z,GAAgBiO,KAAKjvB,KAAMA,KAAKqO,MAAM,EAC5C2sB,UAAW,SAAU5pB,GACjB0O,GAAiBoa,EAAM7rB,OAAQ+C,EAAM8oB,EAAMna,OAAO,GAEtD8a,SAAU5b,GAAgBgQ,KAAKjvB,KAAMA,KAAKqO,MAAM,EAChD+rB,eAAgB,CAAA,EAChBE,iBAAkB,CAAA,EAClBE,OAAQx6B,KAAKy6B,WAAWxL,KAAKjvB,IAAI,EACpC,EAEI,CAACA,KAAKqO,OAAO2R,kBAAoBhgB,KAAK+f,UAC3C/f,KAAK+f,QAAQ3W,UACbpJ,KAAK+f,QAAU,QAI3B4qC,EAAezqD,UAAUu6B,WAAa,SAAUrpB,GAC5C,IAAImpB,EAAanpB,EAAK6pB,OAAO36B,OAC7B,OAAKi6B,EAAWtsB,UAAUC,SAASoiC,EAAW,GAG1CpV,EAASrqB,UAAQ0pB,EAAY,IAAI,EACrCv6B,KAAKqO,OAAOgO,SAAW,GACvBrc,KAAKqO,OAAOmO,SAAW,GACvBxc,KAAKqO,OAAOgB,eAAiB,GAC7BrP,KAAKqO,OAAOgB,eAAiB,CAAC6rB,GAC9Bl7B,KAAKqO,OAAOqO,UAAY,GACxB/M,GAAU3P,KAAKqO,OAAQ6sB,CAAM,EAC7Bl7B,KAAKqO,OAAOmO,SAAWxc,KAAKksD,YAAYhxB,CAAM,EAC9Cl7B,KAAKqO,OAAOgO,SAAWrc,KAAKmsD,YAAYjxB,EAAQl7B,KAAKqO,OAAOmO,SAAS,GAAGhG,IAAI,EAC5ExW,KAAKqO,OAAOqO,UAAUpP,KAAKtN,KAAKqO,OAAOmO,SAAS,GAAGhG,IAAI,EACvDgI,GAAyBxe,KAAKqO,MAAM,EAC7BrO,KAAKqO,OAAO2Q,oBAbR,MAef2rC,EAAezqD,UAAUisD,YAAc,SAAUjxB,EAAQ9uB,GAErD,OAAOsD,GADI1P,KAAKosD,YAAYlxB,EAAQ9uB,CAAI,CACf,GAE7Bu+C,EAAezqD,UAAUksD,YAAc,SAAUlgD,EAAME,GACnD,IAAIE,EAAKJ,EAAKK,aAAa,SAAS,EAEpC,OAAOK,GAAQV,EADDlM,KAAKqO,OAAOxB,MAAQP,EAAKF,EACTpM,KAAKqO,OAAOxB,KAAK,GAEnD89C,EAAezqD,UAAU6rD,WAAa,SAAU36C,GACxC4E,EAAY,CACZ9I,QAASkE,EAAKlF,KACdyJ,YAAavE,EAAKi7C,SAClBhyC,OAAQ,kBAEZra,KAAKqO,OAAOoH,QAAQ,WAAYO,CAAS,GAE7C20C,EAAezqD,UAAUosD,SAAW,SAAUz5C,EAAOvS,EAAQisD,GACzD,IAAIC,EAAczzC,GAAelG,CAAK,EAClC45C,EAAkBzsD,KAAKksD,YAAY5rD,CAAM,EAC7C,GAAyB,EAArBksD,EAAY7rD,QAAuC,EAAzB8rD,EAAgB9rD,SACZ,MAA7B6rD,EAAY,GAAG3qC,YACZpV,oBAAMggD,EAAgB,EAAE,GACgB,MAAjCA,EAAgB,GAAG5qC,YACvB2qC,EAAY,GAAG3qC,aACd4qC,EAAgB,GAAG5qC,YAAa,CAGxC,IAFA,IAAIya,EAAW,EACXxhB,EAAU0xC,EACPlwB,EAAWkwB,EAAY7rD,QAAQ,CAElCma,EAAQvM,SAAS+tB,EAAS9tB,WAAY,EAAE,GAAGk+C,SAAW,cACtD,IAAI5B,EAAO,GACPx+C,EAAKD,WAAS,KAAMyO,EAAQwhB,EAAS,EACpC7vB,oBAAMH,CAAE,GACT8M,WAAS,UAAW9M,EAAIw+C,CAAI,EAE3B/oC,EAAcjH,EAAQwhB,EAAS,GAChCljB,WAAS,QAASqJ,GAAe3H,EAAQwhB,EAAS,EAAGwuB,CAAI,EAExDr+C,oBAAMq+C,CAAI,GACX1xC,WAAS,eAAgB0xC,EAAMhwC,EAAQwhB,EAAS,EAEpDA,CAAQ,GAERpvB,EAAUY,SAAO,cAAgBxN,EAAS,KAAMN,KAAKme,QAAQjR,OAAO,EACpEy/C,EAAgB7+C,SAAO,KAAMZ,CAAO,EACpCT,oBAAMkgD,CAAa,GACnB3sD,KAAKme,QAAQyuC,SAASJ,EAAalsD,EAAQ,KAAMisD,CAAO,IAKpE5B,EAAezqD,UAAUkrD,gBAAkB,SAAUh6C,GACjD,IAQQi7C,EASQr2C,EAaJ62C,GA9BPz7C,EAAK8hB,cAAiBlzB,KAAK8sD,cAC3B9sD,KAAK+sD,mBAAsB/sD,KAAKgtD,eAAkBhtD,KAAKitD,iBAAkBjtD,CAAAA,KAAKktD,kBAK9EltD,KAAKmtD,eACNntD,KAAKqO,OAAOmB,aAAe,iBACvB68C,EAAWrsD,KAAKksD,YAAY7/C,WAAS,KAAM+E,EAAKi7C,QAAQ,CAAC,EACzDj7C,EAAKlF,KAAKK,aAAa,UAAU,IAAMvM,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,IAAM,CAACX,KAAK8sD,cAAgB,CAAC9sD,KAAKotD,mBAAqBptD,KAAK+sD,mBAClJ/sD,KAAKotD,kBAAoB,CAAA,EACpBptD,KAAK+sD,oBACN/sD,KAAK+sD,kBAAoB,CAAA,EACrBF,EAAiB,CAAE19C,OAAQiC,EAAKjC,OAAQwG,YAAa02C,EAAS,GAAIn5B,aAAc9hB,EAAK8hB,cACzFlzB,KAAKqO,OAAOoH,QAAQ,aAAco3C,CAAc,GAE/C7sD,KAAK8sD,eACF92C,EAAY,CAAEmJ,OAAQ,CAAA,EAAOxJ,YAAa02C,EAAS,GAAIhyC,OAAQ,kBACnEra,KAAKqO,OAAOoH,QAAQ,WAAYO,CAAS,EACzC5E,EAAK+N,OAASnJ,EAAUmJ,QAExB/N,EAAK+N,SACLnf,KAAKktD,kBAAoBltD,CAAAA,CAAAA,KAAKotD,mBAAoBptD,KAAKqtD,iBAAiB,KAAOj8C,EAAKlF,KAAKK,aAAa,UAAU,EAChHvM,KAAKotD,kBAAoB,CAAA,EACzBptD,KAAK+sD,kBAAoB,CAAA,EACzB/sD,KAAKqtD,iBAAmBrtD,KAAKme,QAAQtP,cACrC7O,KAAKme,QAAQzR,cAAc,CAAEmC,cAAe,CAACuC,EAAKlF,KAAKK,aAAa,UAAU,GAAI,IAGjFvM,KAAKqtD,iBAAiB,KAAOj8C,EAAKlF,KAAKK,aAAa,UAAU,IAC/DsgD,EAAiB,CAAE19C,OAAQiC,EAAKjC,OAAQwG,YAAa02C,EAAS,GAAIn5B,aAAclzB,KAAKotD,mBACzFptD,KAAKqO,OAAOoH,QAAQ,aAAco3C,CAAc,KA7BpD7sD,KAAKktD,kBAAoB,CAAA,EACzBltD,KAAKotD,kBAAoB,CAAA,IAiCjCzC,EAAezqD,UAAU+yC,2BAA6B,SAAU/mC,GAC5D,IAAI7J,EAAOrC,KAAKme,QAAQ+tC,YAAYhgD,CAAI,EAKpC8J,GAJJhW,KAAKqO,OAAO+B,cAAgB,GAC5BpQ,KAAKqO,OAAOiD,SAAWjP,EACvBrC,KAAKowC,WAAalkC,EAEF,CAAEiT,OAAQ,EAD1Bnf,KAAKqO,OAAOmB,aAAe,kBACMmG,YAAatT,EAAK,GAAIgY,OAAQ,mBAC/Dra,KAAKqO,OAAOoH,QAAQ,WAAYO,CAAS,EACzChW,KAAKotD,kBAAoB,CAAA,EACpBp3C,EAAUmJ,SACXlT,GAAWC,EAAMlM,KAAKqO,OAAOiD,SAAS,GAAItR,KAAKqO,MAAM,EACrDmD,EAAKxR,KAAKqO,OAAQrO,KAAKgtD,cAAgBlvC,GAAkB2N,EAAoBzrB,KAAKqO,OAAO1B,IAAI,EAC7F3M,KAAKqO,OAAOkoB,YAAcrqB,EAC1BlM,KAAKgtD,cAAgBhtD,KAAKitD,eAAiBjtD,KAAK8sD,aAAe,CAAA,EAC/D9sD,KAAKme,QAAQzR,cAAc,CAAEmC,cAAe,CAAC3C,EAAKK,aAAa,UAAU,GAAI,IAGrFo+C,EAAezqD,UAAUorD,eAAiB,SAAUl6C,GAOhD,IASI6zC,EAfAjlD,KAAKqO,OAAO0B,qBAAuB/P,KAAKqO,OAAO0B,oBAAoBC,WAAa,CAAChQ,KAAKmtD,eACtFntD,KAAKqO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,MAAQ,GAC1DjQ,KAAKqO,OAAO6B,WAAa,CAAA,EACzBlQ,KAAKotD,kBAAoB,CAAA,GAE7BptD,KAAKqO,OAAOovB,cAAgB,GACvBrsB,EAAK8hB,cAAiBlzB,KAAK8sD,cAAiB9sD,KAAK+sD,mBAAsB/sD,KAAKgtD,eAAkBhtD,KAAKitD,gBAIxGjtD,KAAKowC,WAAah/B,EAAKlF,KACvBlM,KAAKqO,OAAOmB,aAAe,iBACvB68C,EAAWrsD,KAAKksD,YAAY7/C,WAAS,KAAM+E,EAAKi7C,QAAQ,CAAC,EAC7DrsD,KAAKqO,OAAO+B,cAAgB,GAC5BpQ,KAAKqO,OAAOiD,SAAW+6C,EACnBpH,EAAejlD,KAAKqO,OAAO1B,KAC3B,CAAC3M,KAAK8sD,cAAgB9sD,KAAK+sD,kBAC3B9gD,GAAWmF,EAAKlF,KAAMlM,KAAKqO,OAAOiD,SAAS,GAAItR,KAAKqO,MAAM,GAG1DrO,KAAKqO,OAAOvB,OAASC,GAAUqE,EAAKlF,IAAI,EACxClM,KAAKqO,OAAOkoB,YAAcnlB,EAAKlF,MAE/BkF,EAAKlF,KAAK6L,cAAc,IAAMuyB,EAAS,GAAsD,OAAjDl5B,EAAKlF,KAAK6L,cAAc,IAAMlK,CAAa,IACvF7N,KAAKstD,iBAAmB,OAExBrI,IAAiBjlD,KAAKqO,OAAO1B,OACzB,CAAC3M,KAAK8sD,cAAgB9sD,KAAK+sD,oBAC3Bv7C,EAAKxR,KAAKqO,OAAQrO,KAAKgtD,cAAgBlvC,GAAkB2N,EAAoBzrB,KAAKqO,OAAO1B,IAAI,EAC7F3M,KAAKotD,kBAAoB,CAAA,GAE7BptD,KAAKqO,OAAOkoB,YAAcnlB,EAAKlF,MAEnClM,KAAKgtD,cAAgBhtD,KAAKitD,eAAiBjtD,KAAK8sD,aAAe9sD,KAAK+sD,kBAAoB,CAAA,GA1BpF/sD,KAAKqO,OAAOvB,OAASC,GAAUqE,EAAKlF,IAAI,GA6BhDy+C,EAAezqD,UAAUqtD,WAAa,SAAUn8C,GAC5CpR,KAAKgtD,cAAgB,CAAA,EACrBhtD,KAAKwtD,iBAAiBp8C,EAAK,EAAE,GAGjCu5C,EAAezqD,UAAUsrD,aAAe,SAAUp6C,GAC9C,IAOQ5D,EACAhB,EACAG,GATHyE,EAAK8hB,cAAiBlzB,KAAKytD,SAGqB,OAAjDr8C,EAAKlF,KAAK6L,cAAc,IAAMlK,CAAa,IAC3C7N,KAAK0tD,mBAAqB,CAAA,EACtBthD,EAAOC,WAAS,OAAQ+E,EAAKi7C,QAAQ,EACrC//C,EAAK8E,EAAKlF,KAAKK,aAAa,SAAS,EACrCiB,EAAOf,CAAAA,oBAAMH,CAAE,EACfE,EAAUC,oBAAMH,CAAE,EAAIF,EAAOE,EAC7BK,EAAOC,GAAQwE,EAAKlF,KAAMM,EAASgB,CAAI,EAC3CxN,KAAKstD,iBAAmBl8C,EAAKlF,KAAKK,aAAa,UAAU,EACzDvM,KAAKqO,OAAO2P,WAAahe,KAAKstD,iBAC9BttD,KAAKqO,OAAOiD,SAAWtR,KAAKksD,YAAY7/C,WAAS,KAAM+E,EAAKi7C,QAAQ,CAAC,EACrErsD,KAAKqO,OAAOvB,OAAOQ,KAAKjB,WAAS,KAAM+E,EAAKi7C,QAAQ,CAAC,EACrD76C,EAAKxR,KAAKqO,OAAQs/C,GAAmBhhD,CAAI,IAIjDg+C,EAAezqD,UAAU0tD,eAAiB,SAAUx8C,GAChDpR,KAAKssD,SAASl7C,EAAKyB,MAAO7S,KAAKstD,iBAAkB,CAAA,CAAK,EACtDttD,KAAKqO,OAAO2P,WAAa,KACzBhe,KAAK0tD,mBAAqB,CAAA,GAE9B/C,EAAezqD,UAAUwrD,cAAgB,SAAUt6C,GAI/C,IAOQyhC,EAVR7yC,KAAKqO,OAAOmB,aAAe,iBAC3BxP,KAAKqtD,iBAAmBrtD,KAAKme,QAAQtP,cACrC7O,KAAKowC,WAAah/B,EAAKlF,KACG,IAArBkF,EAAK8O,MAAM2U,OAAiBzjB,EAAKlF,KAAKK,aAAa,UAAU,IAAMvM,KAAKme,QAAQtP,cAAc,IAC/F7O,KAAK8sD,aAAe,CAAA,EACpB9sD,KAAKotD,kBAAoB,CAAA,EACzBptD,KAAKme,QAAQzR,cAAc,CAAEmC,cAAe,CAACuC,EAAKlF,KAAKK,aAAa,UAAU,GAAI,GAE7E6E,EAAKlF,KAAKK,aAAa,UAAU,IAAMvM,KAAKme,QAAQtP,cAAc,IAA2C,IAArC7O,KAAKqO,OAAO+B,cAAczP,QACvGX,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACjDyiC,EAA+B,eAArB7yC,KAAKqO,OAAOgF,KAAyB,iBAAmB,cACtErT,KAAKqO,OAAOW,OAAOkwB,EAAqB,CAAE7kB,OAAQw4B,EAAQhS,QAAS,CAAEzwB,cAAe,IAAM,GAErFgB,EAAKlF,KAAKK,aAAa,UAAU,IAAMvM,KAAKme,QAAQtP,cAAc,IAAO7O,KAAKotD,mBAAsBptD,KAAK0tD,qBACrF,IAArBt8C,EAAK8O,MAAM2U,QACX70B,KAAK8sD,aAAe,CAAA,GAExB9sD,KAAK+sD,kBAAoB,CAAA,EACzB/sD,KAAKotD,kBAAoB,CAAA,EACzBptD,KAAKme,QAAQzR,cAAc,CAAEmC,cAAe,CAACuC,EAAKlF,KAAKK,aAAa,UAAU,GAAI,IAI1Fo+C,EAAezqD,UAAU2rD,cAAgB,SAAUz6C,GAC1C3E,oBAAM2E,EAAKy8C,SAAS,IACrBz8C,EAAK+N,OAAS,CAAA,IAGtBwrC,EAAezqD,UAAUs9B,cAAgB,SAAUpsB,GAC/CpR,KAAKqO,OAAOM,MAAQ,CAAA,EACpB,IAGQuoB,EAHJ42B,EAAYzhD,WAASrM,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAAIX,KAAKqO,OAAO8I,OAAO,EACjE,QAA1BnX,KAAKstD,mBACDS,EAAQjgD,SAAO,cAAgB9N,KAAKme,QAAQtP,cAAc,GAAK,KAAM7O,KAAKme,QAAQjR,OAAO,EACzFgqB,EAAOzqB,oBAAMshD,CAAK,EAA4C,KAAvCjgD,SAAO,IAAMmrB,GAAiB80B,CAAK,EAC1DthD,oBAAMyqB,CAAE,GACRl3B,KAAKssD,SAASl7C,EAAKyB,MAAO7S,KAAKme,QAAQtP,cAAc,GAAI,CAAC7O,KAAKguD,UAAU,EAE7EhuD,KAAKstD,iBAAmB,IAE5BttD,KAAKguD,WAAa,CAAA,EACdvhD,oBAAMqhD,CAAS,GACf10C,WAASpZ,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAAIyQ,EAAKyB,MAAO7S,KAAKqO,OAAO8I,OAAO,EAE3FnX,KAAKqO,OAAOmR,UAAU+gC,iBAAmB,CAAEvgD,KAAKqO,OAAY,OAC5DrO,KAAKiuD,WAAW78C,CAAI,GAG5Bu5C,EAAezqD,UAAU+tD,WAAa,SAAU78C,GAC5C,IACQ9E,EADJtM,KAAKme,UACD7R,EAAKtM,KAAKme,QAAQtP,cAAc,GACpC7O,KAAKkuD,eAAe98C,EAAM9E,CAAE,IAGpCq+C,EAAezqD,UAAUguD,eAAiB,SAAU98C,EAAM9E,GACtD,IAAI6hD,EAAsD,CAAC,IAA5CnuD,KAAKme,QAAQiwC,cAAcz5C,QAAQrI,CAAE,EACpDtM,KAAKquD,iBAAiB/hD,CAAE,EACxBtM,KAAKssD,SAASl7C,EAAKyB,MAAOvG,EAAI,CAAC6hD,CAAQ,GAE3CxD,EAAezqD,UAAUmuD,iBAAmB,SAAU/hD,GAC9CyhD,EAAQjgD,SAAO,cAAgBxB,EAAK,KAAMtM,KAAKme,QAAQjR,OAAO,EAC9DmB,EAASP,SAAO,IAAMmrB,GAAiB80B,CAAK,EAC5CO,EAASjgD,EAAS3O,MAAMQ,UAAU24B,MAAM9S,KAAK1X,EAAOg/B,QAAQ,EAAI,KAChEihB,GACAtuD,KAAKme,QAAQowC,YAAYD,CAAM,GAGvC3D,EAAezqD,UAAUsuD,UAAY,SAAUp9C,GAC3C,IAAIq9C,EAAQzuD,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAC3DX,KAAKme,QAAQuwC,UAAU1uD,KAAKme,QAAQtP,aAAa,EACjD7O,KAAKme,QAAQzR,cAAc,CAAEmC,cAAe,CAAC4/C,GAAQ,EACrDzuD,KAAKstD,iBAAmB,MACxBttD,KAAKw9B,cAAcpsB,CAAI,GAE3Bu5C,EAAezqD,UAAUy9B,WAAa,SAAUvsB,GACX,mBAA7BpR,KAAKqO,OAAOmB,cACR4B,EAAK9Q,OAAOyX,cAAc,IAAMuyB,EAAS,GACzCtqC,KAAKme,QAAQuwC,UAAU1uD,KAAKme,QAAQtP,aAAa,GAI7D87C,EAAezqD,UAAUwhD,aAAe,SAAUtwC,GAC9CpR,KAAK4qD,SACL5qD,KAAKssD,SAASl7C,EAAKyB,MAAOxG,WAAS,SAAU+E,EAAK4L,GAAG,EAAG,CAAA,CAAK,GAEjE2tC,EAAezqD,UAAU48B,cAAgB,SAAU1rB,GAC/CpR,KAAK4qD,SACL,IAAIt+C,EAAKD,WAAS,SAAU+E,EAAK4L,GAAG,EACpChd,KAAKssD,SAASl7C,EAAKyB,MAAOvG,EAAI,CAAA,CAAK,EACnCtM,KAAKme,QAAQzR,cAAc,CAAEmC,cAAe,CAAC7O,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,IAAK,GAErGgqD,EAAezqD,UAAU68B,YAAc,SAAU3rB,GAC7CpR,KAAKiuD,WAAW78C,CAAI,GAExBu5C,EAAezqD,UAAU+8B,eAAiB,WACL,mBAA7Bj9B,KAAKqO,OAAOmB,cACZxP,KAAK2uD,kBAGbhE,EAAezqD,UAAUi9B,aAAe,WACpC,IAEQ5gB,EAFyB,mBAA7Bvc,KAAKqO,OAAOmB,eACZxP,KAAK4uD,mBACDryC,EAASlQ,WAAS,OAAQrM,KAAKqO,OAAOiD,SAAS,EAAE,EACrDiR,GAAOviB,KAAKqO,OAAQ,CAACkO,GAASvc,KAAKqO,OAAO1B,KAAM,QAAQ,IAIhEg+C,EAAezqD,UAAUk9B,YAAc,SAAUhsB,GAC7C,IAGQy9C,EAHyB,mBAA7B7uD,KAAKqO,OAAOmB,eACRiM,EAAezb,KAAKme,QAAQtP,cAAc,GAC1CigD,EAAchhD,SAAO,cAAgB2N,EAAe,KAAMzb,KAAKme,QAAQjR,OAAO,EAC9E2hD,EAAkBh+C,UAAQi+C,EAAa,IAAM71B,EAAe,EAAE7X,cAClEphB,KAAKme,QAAQtP,cAAgB,CAACggD,EAAgBtiD,aAAa,UAAU,GACrEvM,KAAKme,QAAQgT,YAEjBnxB,KAAKiuD,WAAW78C,CAAI,GAExBu5C,EAAezqD,UAAUm9B,aAAe,SAAUjsB,GAC9CpR,KAAKiuD,WAAW78C,CAAI,GAExBu5C,EAAezqD,UAAUo9B,aAAe,WACH,mBAA7Bt9B,KAAKqO,OAAOmB,cACZxP,KAAKu9B,oBAIbotB,EAAezqD,UAAU6uD,kBAAoB,SAAU39C,GACnD,IAsBY49C,EAtBR1iD,EAAKtM,KAAKmtD,cAAmCntD,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAChGX,KAAKguD,WAAmF,CAAC,IAAvEhuD,KAAKme,QAAQiwC,cAAcz5C,QAAQ3U,KAAKme,QAAQtP,cAAc,EAAE,EAClF7O,KAAKkuD,eAAe98C,EAAM9E,CAAE,EAC5BtM,KAAKqO,OAAO2P,WAAa,KACrBhe,KAAKmtD,aACLntD,KAAKmtD,aAAe,MAGhB3mB,EAAa,GACbxmC,KAAKqO,OAAOxB,MACZ25B,EAAa,IAAIx0B,cAAYhS,KAAKme,QAAQ+tC,aAAa,EACnDj6C,cAAa,IAAIC,SAAQC,MAAM,KAAM,QAASnS,KAAKqO,OAAOomB,UAAW,CAAA,CAAK,CAAC,EAK5D,GAFfw6B,EAAQ,IAAIj9C,cAAYhS,KAAKme,QAAQ+tC,aAAa,EAClDj6C,cAAa,IAAIC,SAAQC,MAAMnS,KAAKme,QAAQwZ,OAAOvrB,KAAM,QAASpM,KAAKqO,OAAOmd,WAAY,CAAA,CAAK,CAAC,GAC1F7qB,SACN6lC,EAAa,IAAIx0B,cAAYi9C,CAAK,EAC9Bh9C,cAAa,IAAIC,SAAQC,MAAM,UAAW,QAAS7F,EAAI,CAAA,CAAK,CAAC,GAGjD,EAApBk6B,EAAW7lC,SACPquD,EAAO3iD,WAASrM,KAAKme,QAAQwZ,OAAOrrB,GAAIk6B,EAAW,EAAE,EACzDxmC,KAAKme,QAAQtP,cAAgB,CAACmgD,GAC9BhvD,KAAKme,QAAQgT,cAKzBw5B,EAAezqD,UAAU+tC,YAAc,SAAU78B,GAC7C,IAKQo1B,EAMIyoB,EAXoD,KAA5DjvD,KAAKqO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAiBjQ,KAAKqO,OAAO6B,YAI3E7N,EAAOrC,KAAKme,QAAQ+tC,cACpB1lB,EAAa,GACbxmC,KAAKqO,OAAOxB,MACZ25B,EAAa,IAAIx0B,cAAY3P,CAAI,EAC7B4P,cAAa,IAAIC,SAAQC,MAAM,KAAM,QAASnS,KAAKqO,OAAOomB,UAAW,CAAA,CAAK,CAAC,EAK5D,GAFfw6B,EAAQ,IAAIj9C,cAAY3P,CAAI,EAC5B4P,cAAa,IAAIC,SAAQC,MAAMnS,KAAKme,QAAQwZ,OAAOvrB,KAAM,QAASpM,KAAKqO,OAAOsT,gBAAiB,CAAA,CAAK,CAAC,GAC/FhhB,SACN6lC,EAAa,IAAIx0B,cAAYi9C,CAAK,EAC9Bh9C,cAAa,IAAIC,SAAQC,MAAM,aAAc,QAASnS,KAAKqO,OAAOwT,WAAY,CAAA,CAAK,CAAC,GAGxE,EAApB2kB,EAAW7lC,SACXX,KAAKmtD,aAAe9gD,WAASrM,KAAKme,QAAQwZ,OAAO5P,SAAUye,EAAW,EAAE,EACxExmC,KAAKqO,OAAO2P,WAAahe,KAAKmtD,aAC9BntD,KAAKqO,OAAOiD,SAAWtR,KAAKksD,YAAYlsD,KAAKmtD,YAAY,EACzD37C,EAAKxR,KAAKqO,OAAQkd,GAAwBvrB,KAAKqO,OAAOwT,WAAW3L,QAAQ,MAAO,GAAG,CAAC,IArBxFlW,KAAKiuD,WAAW78C,CAAI,GAyB5Bu5C,EAAezqD,UAAUi/B,kBAAoB,SAAUjS,GACnD,GAAIA,EAAE7S,SAAWra,KAAKu7B,iBAAgC,WAAbrO,EAAE7S,OAI3C,IAAK,IAAIsmB,EAAK,EAAGC,EAAKrhC,OAAOkiB,KAAKyL,EAAE2T,OAAO,EAAGF,EAAKC,EAAGjgC,OAAQggC,CAAE,GAE5D,OADWC,EAAGD,IAEV,IAAK,mBACD3gC,KAAKisD,cACL,MACJ,IAAK,yBACDz6C,EAAKxR,KAAKqO,OAAQ6M,EAAoBlb,KAAKqO,OAAO1B,IAAI,EAClDugB,EAAEs2B,QAAQjJ,uBAAuB3jC,YAAcsW,EAAE2T,QAAQ0Z,uBAAuB3jC,YAChF5W,KAAKme,QAAQvH,UAAYsW,EAAE2T,QAAQ0Z,uBAAuB3jC,aAO9E+zC,EAAezqD,UAAUgvD,eAAiB,WACtClvD,KAAKiiB,cAET0oC,EAAezqD,UAAUgoD,mBAAqB,SAAUh7B,GACpDltB,KAAKme,QAAQzR,cAAc,CAAEmC,cAAe,CAACqe,EAAEzR,cAAe,GAElEkvC,EAAezqD,UAAUivD,gBAAkB,SAAUjiC,GACjDltB,KAAKquD,iBAAiBnhC,EAAEzR,YAAY,GAExCkvC,EAAezqD,UAAUkvD,UAAY,SAAUh+C,GAC3C,IAAIi+C,EAAY,GAEZA,EADArvD,KAAKqO,OAAOqP,cAAgB1d,KAAKqO,OAAOuP,aAC5B5d,KAAKsvD,aAAal+C,EAAKyB,MAAO7S,KAAKqO,OAAOuP,aAAc5d,KAAKqO,OAAOgO,QAAQ,EAG5Erc,KAAKqvD,UAErBrvD,KAAKme,QAAQowC,YAAYc,CAAS,GAEtC1E,EAAezqD,UAAUovD,aAAe,SAAUz8C,EAAO2gB,EAAM7mB,GAE3D,IADA,IAAI0iD,EAAY,GACPruD,EAAI,EAAGA,EAAI6R,EAAMlS,OAAQK,CAAC,GAC/B,GAAI,CAAC6R,EAAM7R,GAAG4gB,QACN,CAAC5hB,KAAKqO,OAAOxB,MAUb,IATA,IAGQka,EAHJkgB,EAAUp0B,EAAM7R,GAAe,aAO/BwlC,GANAhT,IAEIzM,GADJpa,GAAckG,EAAM7R,GAAGuuD,cACN90C,YAAY,GAAG,EAChCwsB,EAASt6B,EAAK6N,UAAUuM,EAAQ,CAAC,EACjCpa,EAAOA,EAAK6N,UAAU,EAAGuM,EAAQ,CAAC,GAErB,IAAI/U,cAAYhS,KAAKme,QAAQ+tC,aAAa,EACvDj6C,cAAa,IAAIC,SAAQC,MAAMnS,KAAKme,QAAQwZ,OAAOvrB,KAAM,QAAS66B,EAAQ,CAAA,CAAK,CAAC,GAC3EX,EAAI,EAAGA,EAAIE,EAAW7lC,OAAQ2lC,CAAC,GAGpC,GAFYj6B,WAAS,aAAcm6B,EAAWF,EAAE,EAClCpwB,QAAQ,MAAO,GAAG,IAClBvJ,EAAM,CAChB0iD,EAAU/hD,KAAKjB,WAASrM,KAAKme,QAAQwZ,OAAOrrB,GAAIk6B,EAAWF,EAAE,CAAC,EAC9D,MAMpB,OAAO+oB,GAEX1E,EAAezqD,UAAUsvD,SAAW,SAAUp+C,GAC1C,IAAIi+C,EAAY,GACZrvD,KAAKqO,OAAOqP,cAAgB1d,KAAKqO,OAAOe,YACxCpP,KAAKqvD,UAAYrvD,KAAKsvD,aAAal+C,EAAKyB,MAAO7S,KAAKqO,OAAOe,YAAapP,KAAKqO,OAAOoB,UAAU,EAG9F4/C,EAAYrvD,KAAKqvD,UAErBrvD,KAAKme,QAAQowC,YAAYc,CAAS,GAGtC1E,EAAezqD,UAAUstD,iBAAmB,SAAUiC,GAClD,IAMYjpB,EAGIl6B,EATXtM,KAAKqO,OAAOxB,OAgBT4O,EAAezb,KAAKme,QAAQ+tC,cAAcr6C,OAAO,SAAUC,GAAO,OAAOA,EAAI0E,OAASi5C,EAAUj5C,KAAO,EAAE,GAC7GxW,KAAKme,QAAQtP,cAAgB,CAACxC,WAAS,SAAUoP,CAAY,GAC7Dzb,KAAKme,QAAQgT,aAjBTxkB,EAAON,WAAS,aAAcojD,CAAS,EACvCC,EAAWrjD,WAAS,OAAQojD,CAAS,EAGvB,GAFdptD,EAAO,IAAI2P,cAAYhS,KAAKme,QAAQ+tC,aAAa,EACjDj6C,cAAa,IAAIC,SAAQC,MAAMnS,KAAKme,QAAQwZ,OAAOvrB,KAAM,QAASsjD,EAAU,CAAA,CAAK,CAAC,GAC7E/uD,QAGmB,GAFpB6lC,EAAa,IAAIx0B,cAAY3P,CAAI,EACjC4P,cAAa,IAAIC,SAAQC,MAAM,aAAc,QAASxF,EAAM,CAAA,CAAK,CAAC,GACvDhM,SACP2L,EAAKD,WAASrM,KAAKme,QAAQwZ,OAAOrrB,GAAIk6B,EAAW,EAAE,EACvDxmC,KAAKme,QAAQtP,cAAgB,CAACvC,GAC9BtM,KAAKme,QAAQgT,cAU7Bw5B,EAAezqD,UAAUogC,WAAa,SAAUlvB,GAC5CpR,KAAKigC,WAAW7uB,CAAI,EACpBpR,KAAKwtD,iBAAiBxtD,KAAKqO,OAAOwO,QAAQ,EAC1C7c,KAAKqO,OAAOsP,UAAY,CAAC3d,KAAKqO,OAAOqP,cAEzCitC,EAAezqD,UAAU+/B,WAAa,SAAU7uB,GAC5C,IAcQ9E,EAdJk6B,EAAa,GACbxmC,KAAKqO,OAAOxB,MACZ25B,EAAa,IAAIx0B,cAAYhS,KAAKme,QAAQ+tC,aAAa,EACnDj6C,cAAa,IAAIC,SAAQC,MAAM,KAAM,QAAS9F,WAAS,KAAM+E,EAAK4L,GAAG,EAAG,CAAA,CAAK,CAAC,EAK/D,GAFfiyC,EAAQ,IAAIj9C,cAAYhS,KAAKme,QAAQ+tC,aAAa,EAClDj6C,cAAa,IAAIC,SAAQC,MAAMnS,KAAKme,QAAQwZ,OAAOvrB,KAAM,QAASC,WAAS,OAAQ+E,EAAK4L,GAAG,EAAG,CAAA,CAAK,CAAC,GAC9Frc,SACN6lC,EAAa,IAAIx0B,cAAYi9C,CAAK,EAC9Bh9C,cAAa,IAAIC,SAAQC,MAAM,aAAc,QAAS9F,WAAS,aAAc+E,EAAK4L,GAAG,EAAG,CAAA,CAAK,CAAC,GAGlF,EAApBwpB,EAAW7lC,SACP2L,EAAKD,WAASrM,KAAKme,QAAQwZ,OAAOrrB,GAAIk6B,EAAW,EAAE,EACnD2nB,EAAsD,CAAC,IAA5CnuD,KAAKme,QAAQiwC,cAAcz5C,QAAQrI,CAAE,EACpDtM,KAAKquD,iBAAiB/hD,CAAE,EACxBtM,KAAKssD,SAASl7C,EAAKyB,MAAOvG,EAAI6hD,CAAQ,GAE1CnuD,KAAKqO,OAAO2P,WAAa,KACzBhe,KAAKw9B,cAAcpsB,CAAI,EACnBpR,KAAKqO,OAAOsN,YACZ3b,KAAK2vD,cAAcv+C,CAAI,GAI/Bu5C,EAAezqD,UAAUyvD,cAAgB,SAAUv+C,GAC3CC,EAAiBrR,KAAKqO,MAAM,IAAMrO,KAAKqO,OAAO1B,OAAS3M,KAAKqO,OAAO7C,UAAyC,mBAA7BxL,KAAKqO,OAAOwF,gBAG3F7T,KAAKqO,OAAOxB,OACZ7M,KAAKqO,OAAOsP,UAAY,CAAC3d,KAAKqO,OAAOqP,aACrCK,GAAa/d,KAAKqO,MAAM,GAG+C,CAAC,IAAvErO,KAAKqO,OAAO7C,SAASmJ,QAAQoI,GAAiB/c,KAAKqO,OAAQ+C,CAAI,CAAC,GACjEpR,KAAKqO,OAAOsP,UAAY,CAAA,EACxBI,GAAa/d,KAAKqO,MAAM,GAGxBrO,KAAKqO,OAAOsP,UAAY,CAAC3d,KAAKqO,OAAOqP,eAG7CitC,EAAezqD,UAAU8/B,YAAc,WAC/BhgC,KAAKqO,OAAOmB,eAAiBxP,KAAKu7B,iBAClCv7B,KAAK2uD,iBAET3uD,KAAKqvD,UAAY,GAEjB,IADA,IAAIv9C,EAAM9R,KAAKqO,OAAOsN,YAActK,EAAiBrR,KAAKqO,MAAM,EAAIrO,KAAKqO,OAAOmO,SAAWxc,KAAKqO,OAAOS,cAC9F9N,EAAI,EAAGA,EAAI8Q,EAAInR,OAAQK,CAAC,GACM,CAAA,IAA/BqL,WAAS,SAAUyF,EAAI9Q,EAAE,GACzBhB,KAAKqvD,UAAU/hD,KAAKjB,WAAS,SAAUyF,EAAI9Q,EAAE,CAAC,GAI1D2pD,EAAezqD,UAAUggC,cAAgB,WACjClgC,KAAKqO,OAAOmB,eAAiBxP,KAAKu7B,kBAClCv7B,KAAKqO,OAAOyB,cAAgB9P,KAAKksD,YAAYlsD,KAAKme,QAAQtP,cAAc,EAAE,EAC1E7O,KAAKqO,OAAOgB,eAAiB,CAACrP,KAAKowC,cAG3Cua,EAAezqD,UAAUs5B,iBAAmB,WACxCx5B,KAAKqO,OAAOoyB,GAAGvB,EAAqBl/B,KAAKm/B,kBAAmBn/B,IAAI,EAChEA,KAAKqO,OAAOoyB,GAAGyS,GAAqBlzC,KAAKkvD,eAAgBlvD,IAAI,EAC7DA,KAAKqO,OAAOoyB,GAAGtlB,GAAmBnb,KAAK0hD,aAAc1hD,IAAI,EACzDA,KAAKqO,OAAOoyB,GAAGvlB,EAAoBlb,KAAK88B,cAAe98B,IAAI,EAC3DA,KAAKqO,OAAOoyB,GAAGhV,EAAoBzrB,KAAKw9B,cAAex9B,IAAI,EAC3DA,KAAKqO,OAAOoyB,GAAG3iB,GAAiB9d,KAAKigC,WAAYjgC,IAAI,EACrDA,KAAKqO,OAAOoyB,GAAGrjB,GAAepd,KAAKwvD,SAAUxvD,IAAI,EACjDA,KAAKqO,OAAOoyB,GAAG1kB,GAAkB/b,KAAKggC,YAAahgC,IAAI,EACvDA,KAAKqO,OAAOoyB,GAAGktB,GAAmB3tD,KAAK4tD,eAAgB5tD,IAAI,EAC3DA,KAAKqO,OAAOoyB,GAAGrV,GAAkBprB,KAAK+8B,YAAa/8B,IAAI,EACvDA,KAAKqO,OAAOoyB,GAAGzB,GAAqBh/B,KAAKi9B,eAAgBj9B,IAAI,EAC7DA,KAAKqO,OAAOoyB,GAAGvR,GAAmBlvB,KAAKm9B,aAAcn9B,IAAI,EACzDA,KAAKqO,OAAOoyB,GAAG3U,GAAkB9rB,KAAKo9B,YAAap9B,IAAI,EACvDA,KAAKqO,OAAOoyB,GAAGzsB,GAAmBhU,KAAKq9B,aAAcr9B,IAAI,EACzDA,KAAKqO,OAAOoyB,GAAGgN,GAA4BztC,KAAKkoD,mBAAoBloD,IAAI,EACxEA,KAAKqO,OAAOoyB,GAAGxB,GAAiBj/B,KAAK29B,WAAY39B,IAAI,EACrDA,KAAKqO,OAAOoyB,GAAGrsB,GAAgBpU,KAAKwuD,UAAWxuD,IAAI,EACnDA,KAAKqO,OAAOoyB,GAAG2N,GAAgBpuC,KAAKoJ,QAASpJ,IAAI,EACjDA,KAAKqO,OAAOoyB,GAAGlB,GAAmBv/B,KAAKs9B,aAAct9B,IAAI,EACzDA,KAAKqO,OAAOoyB,GAAG/U,EAAkB1rB,KAAKiuC,YAAajuC,IAAI,EACvDA,KAAKqO,OAAOoyB,GAAGlV,GAAwBvrB,KAAK+uD,kBAAmB/uD,IAAI,EACnEA,KAAKqO,OAAOoyB,GAAGjlB,GAAsBxb,KAAKmvD,gBAAiBnvD,IAAI,EAC/DA,KAAKqO,OAAOoyB,GAAGnxB,GAAoBtP,KAAKkgC,cAAelgC,IAAI,EAC3DA,KAAKqO,OAAOoyB,GAAG7gB,GAAiB5f,KAAKq7B,WAAYr7B,IAAI,EACrDA,KAAKqO,OAAOoyB,GAAGf,GAAqB1/B,KAAK2/B,eAAgB3/B,IAAI,EAC7DA,KAAKqO,OAAOoyB,GAAGtjB,GAAgBnd,KAAKovD,UAAWpvD,IAAI,EACnDA,KAAKqO,OAAOoyB,GAAGtf,GAAiBnhB,KAAK4vD,WAAY5vD,IAAI,EACrDA,KAAKqO,OAAOoyB,GAAGpiB,GAAiBre,KAAKsgC,WAAYtgC,IAAI,EACrDA,KAAKqO,OAAOoyB,GAAGN,EAAoBngC,KAAKogC,cAAepgC,IAAI,EAC3DA,KAAKqO,OAAOoyB,GAAGxiB,GAAiBje,KAAKutD,WAAYvtD,IAAI,GAEzD2qD,EAAezqD,UAAU42B,oBAAsB,WAC3C92B,KAAKqO,OAAO0wB,IAAI5jB,GAAmBnb,KAAK0hD,YAAY,EACpD1hD,KAAKqO,OAAO0wB,IAAImU,GAAqBlzC,KAAKkvD,cAAc,EACxDlvD,KAAKqO,OAAO0wB,IAAI7jB,EAAoBlb,KAAK88B,aAAa,EACtD98B,KAAKqO,OAAO0wB,IAAIC,GAAqBh/B,KAAKi9B,cAAc,EACxDj9B,KAAKqO,OAAO0wB,IAAIG,EAAqBl/B,KAAKm/B,iBAAiB,EAC3Dn/B,KAAKqO,OAAO0wB,IAAItT,EAAoBzrB,KAAKw9B,aAAa,EACtDx9B,KAAKqO,OAAO0wB,IAAIjhB,GAAiB9d,KAAKigC,UAAU,EAChDjgC,KAAKqO,OAAO0wB,IAAI3hB,GAAepd,KAAKwvD,QAAQ,EAC5CxvD,KAAKqO,OAAO0wB,IAAIhjB,GAAkB/b,KAAKggC,WAAW,EAClDhgC,KAAKqO,OAAO0wB,IAAI0O,GAA4BztC,KAAKkoD,kBAAkB,EACnEloD,KAAKqO,OAAO0wB,IAAI4uB,GAAmB3tD,KAAK4tD,cAAc,EACtD5tD,KAAKqO,OAAO0wB,IAAI3T,GAAkBprB,KAAK+8B,WAAW,EAClD/8B,KAAKqO,OAAO0wB,IAAI/qB,GAAmBhU,KAAKq9B,YAAY,EACpDr9B,KAAKqO,OAAO0wB,IAAIE,GAAiBj/B,KAAK29B,UAAU,EAChD39B,KAAKqO,OAAO0wB,IAAI3qB,GAAgBpU,KAAKwuD,SAAS,EAC9CxuD,KAAKqO,OAAO0wB,IAAIqP,GAAgBpuC,KAAKoJ,OAAO,EAC5CpJ,KAAKqO,OAAO0wB,IAAIQ,GAAmBv/B,KAAKs9B,YAAY,EACpDt9B,KAAKqO,OAAO0wB,IAAIrT,EAAkB1rB,KAAKiuC,WAAW,EAClDjuC,KAAKqO,OAAO0wB,IAAIxT,GAAwBvrB,KAAK+uD,iBAAiB,EAC9D/uD,KAAKqO,OAAO0wB,IAAIvjB,GAAsBxb,KAAKmvD,eAAe,EAC1DnvD,KAAKqO,OAAO0wB,IAAI7P,GAAmBlvB,KAAKm9B,YAAY,EACpDn9B,KAAKqO,OAAO0wB,IAAIjT,GAAkB9rB,KAAKo9B,WAAW,EAClDp9B,KAAKqO,OAAO0wB,IAAIzvB,GAAoBtP,KAAKkgC,aAAa,EACtDlgC,KAAKqO,OAAO0wB,IAAInf,GAAiB5f,KAAKq7B,UAAU,EAChDr7B,KAAKqO,OAAO0wB,IAAI5hB,GAAgBnd,KAAKovD,SAAS,EAC9CpvD,KAAKqO,OAAO0wB,IAAI5d,GAAiBnhB,KAAK4vD,UAAU,EAChD5vD,KAAKqO,OAAO0wB,IAAI1gB,GAAiBre,KAAKsgC,UAAU,EAChDtgC,KAAKqO,OAAO0wB,IAAIoB,EAAoBngC,KAAKogC,aAAa,EACtDpgC,KAAKqO,OAAO0wB,IAAIW,GAAqB1/B,KAAK2/B,cAAc,EACxD3/B,KAAKqO,OAAO0wB,IAAI9gB,GAAiBje,KAAKutD,UAAU,GAGpD5C,EAAezqD,UAAUkgC,cAAgB,WACrC,IACQyvB,EADJ7vD,KAAKqO,OAAOmB,eAAiBxP,KAAKu7B,kBAC9Bs0B,EAAU7vD,KAAKksD,YAAYlsD,KAAKme,QAAQtP,cAAc,EAAE,EAC5D7O,KAAKqO,OAAOiD,SAAWu+C,IAG/BlF,EAAezqD,UAAUy/B,eAAiB,SAAUvuB,GAC5CpR,KAAKqO,OAAOmB,eAAiBxP,KAAKu7B,kBAC9B+S,EAAQz9B,UAAQO,EAAK9Q,OAAQ,IAAI,EACrCN,KAAKqO,OAAOiD,SAAWtR,KAAKksD,YAAY5d,EAAM/hC,aAAa,UAAU,CAAC,IAI9Eo+C,EAAezqD,UAAU0vD,WAAa,SAAUx+C,GAC5C,IAGQ0+C,EAHJjxC,EAAMhO,UAAQO,EAAK9Q,OAAQ,IAAI,EAC/Bue,EAAI5Q,UAAUC,SAAS,kBAAkB,IACzClO,KAAKytD,OAAS,CAAA,EACVqC,EAAQvhD,SAASsQ,EAAItS,aAAa,YAAY,EAAG,EAAE,EACvDvM,KAAKme,QAAQuwC,UAAU,CAAC7vC,EAAItS,aAAa,UAAU,GAAIujD,EAAQ,CAAC,EAChE9vD,KAAKytD,OAAS,CAAA,IAGtB9C,EAAezqD,UAAUm7B,WAAa,SAAUjqB,GACxCpR,KAAKqO,OAAOwF,eAAiB7T,KAAKu7B,kBAC9BC,EAAS3qB,UAAQO,EAAK9Q,OAAQ,IAAI,EACtCN,KAAKqO,OAAOwO,SAAW7c,KAAKksD,YAAY1wB,CAAM,EAAE,GAChDx7B,KAAKqO,OAAO7C,SAAWxL,KAAKosD,YAAY5wB,EAAQnvB,WAAS,OAAQrM,KAAKqO,OAAOwO,QAAQ,CAAC,IAS9F8tC,EAAezqD,UAAUq7B,cAAgB,WACrC,MAAO,kBAEXovB,EAAezqD,UAAUkJ,QAAU,WAC3BpJ,KAAKqO,OAAOywB,cAGhB9+B,KAAK82B,sBACD92B,KAAKme,UACLne,KAAK62B,eACL72B,KAAKme,QAAQ/U,aAGrBuhD,EAAezqD,UAAUu5B,WAAa,WAClCz5B,KAAKghC,eAAiB,IAAIC,iBAAejhC,KAAKme,QAAQjR,QAAS,CAC3Dg0B,UAAWlhC,KAAK+vD,QAAQ9gC,KAAKjvB,IAAI,EACjCohC,WAAYphC,KAAKohC,WACjBnmB,UAAW,UACd,GAEL0vC,EAAezqD,UAAU22B,aAAe,WACpC72B,KAAKghC,eAAe53B,WAGxBuhD,EAAezqD,UAAU6vD,QAAU,SAAU7iC,GACzC,IA2CgB7qB,EA1ChB,OADa6qB,EAAE/d,QAEX,IAAK,WACDnP,KAAKqO,OAAOW,OAAOmxB,EAAoB,EAAE,EACzChb,GAAWnlB,KAAKqO,OAAQ,GAAIrO,KAAKqO,OAAO1B,KAAM,SAAS,EACvD,MACJ,IAAK,MACD+B,GAAa1O,KAAKqO,MAAM,EACxB,MACJ,IAAK,MACGrO,KAAKqO,OAAOvB,OAAO,KAAO9M,KAAKowC,WAAW7jC,aAAa,UAAU,IACjEvM,KAAK2uD,iBACA5sC,EAAc/hB,KAAKqO,OAAOiD,SAAS,EAAE,GAItCtR,KAAKuuD,YAAc,GACnBtyC,EAAajc,KAAKqO,OAAQ,QAAQ,GAJlC4F,EAAmBjU,KAAKqO,OAAQrO,KAAKqO,OAAOiD,SAAS,GAAI0Q,CAAqB,GAOtF,MACJ,IAAK,QACD3N,GAAUrU,KAAKqO,MAAM,EACrB,MACJ,IAAK,QACDrO,KAAKqO,OAAOuN,WAAa,GACzBF,GAAa1b,KAAKqO,MAAM,EACxB,MACJ,IAAK,QACDkG,GAASvU,KAAKqO,MAAM,EACpB,MACJ,IAAK,WACDrO,KAAK2uD,iBACAzsC,GAAkBliB,KAAKqO,OAAOiD,SAAS,EAAE,EAIL,IAArCtR,KAAKqO,OAAO+B,cAAczP,QAC1BX,KAAKiiB,aAJLhO,EAAmBjU,KAAKqO,OAAQrO,KAAKqO,OAAOiD,SAAS,GAAI6Q,EAAyB,EAMtF,MACJ,IAAK,KACwC,IAArCniB,KAAKqO,OAAO+B,cAAczP,SAErBohB,EADD1f,EAAOrC,KAAKksD,YAAYlsD,KAAKme,QAAQtP,cAAc,EAAE,EAAE,EACpC,GAInB7O,KAAKu9B,mBACLthB,EAAajc,KAAKqO,OAAQ,QAAQ,GAJlC4F,EAAmBjU,KAAKqO,OAAQhM,EAAM2f,CAAqB,KAU/E2oC,EAAezqD,UAAUgsD,YAAc,SAAU96C,GAE7C,IADA,IAAI/O,EAAOrC,KAAKme,QAAQ+tC,YAAY96C,CAAI,EAC/BpQ,EAAI,EAAGA,EAAIqB,EAAK1B,OAAQK,CAAC,GAC1ByL,oBAAMJ,WAAS,WAAYhK,EAAKrB,EAAE,CAAC,GACnCoY,WAAS,WAAY,CAAA,EAAO/W,EAAKrB,EAAE,EAG3C,OAAOqB,GAEXsoD,EAAezqD,UAAUq9B,iBAAmB,WACxCv9B,KAAK2uD,iBACL3uD,KAAKqO,OAAOsT,gBAAkBtV,WAAS,OAAQrM,KAAKqO,OAAOiD,SAAS,EAAE,GAE1Eq5C,EAAezqD,UAAUyuD,eAAiB,WACtC,IAAItsD,EAAOrC,KAAKksD,YAAYlsD,KAAKme,QAAQtP,cAAc,EAAE,EAAE,GAC3D7O,KAAKqO,OAAOiD,SAAW,CAACjP,GACxBrC,KAAKqO,OAAOuT,OAAS,CAAA,GAEzB+oC,EAAezqD,UAAU0uD,iBAAmB,WACxC5uD,KAAK2uD,iBACL,IAAIrgD,EAAUoB,GAAc1P,KAAKqO,OAAO1B,IAAI,EAC5C3M,KAAKqO,OAAO3B,cAAc,CAAEC,KAAM2B,GAAW,CAAA,CAAI,EACjDtO,KAAKqO,OAAOvB,OAAOie,MACnB/qB,KAAKqO,OAAOrB,UAAU+d,OAG1B4/B,EAAezqD,UAAU+hB,WAAa,WAClC,IAAI3T,EAAUoB,GAAc1P,KAAKqO,OAAO1B,IAAI,EAExC6J,EADSxW,KAAKme,QAAQtP,cAAc,KACjB7O,KAAKqO,OAAOvB,OAAO,GAAM,GAAKT,WAAS,OAAQrM,KAAKqO,OAAOiD,SAAS,EAAE,EAC7F8Q,GAASpiB,KAAKqO,OAAQC,EAAS,CAACkI,EAAK,OAp1BzCm0C,GAs1BOA,EA90BP,SAASA,EAAet8C,GACpBrO,KAAKuuD,YAAc,GACnBvuD,KAAKqvD,UAAY,GACjBrvD,KAAKguD,WAAa,CAAA,EAClBhuD,KAAKytD,OAAS,CAAA,EACdztD,KAAKgtD,cAAgB,CAAA,EACrBhtD,KAAKitD,eAAiB,CAAA,EACtBjtD,KAAK8sD,aAAe,CAAA,EACpB9sD,KAAK+sD,kBAAoB,CAAA,EACzB/sD,KAAK0tD,mBAAqB,CAAA,EAC1B1tD,KAAKmtD,aAAe,KAEpBntD,KAAKqtD,iBAAmB,KAExBrtD,KAAKotD,kBAAoB,CAAA,EAEzBptD,KAAKktD,kBAAoB,CAAA,EACzBltD,KAAKqO,OAASA,EACdrO,KAAKw5B,mBACLx5B,KAAKohC,WAAa,CACd6H,SAAU,YACVC,IAAK,SACLC,IAAK,SACLC,MAAOppC,KAAKqO,OAAOg7B,MAAQ,QAAU,SACrCC,MAAOtpC,KAAKqO,OAAOg7B,MAAQ,QAAU,SACrCE,MAAOvpC,KAAKqO,OAAOg7B,MAAQ,QAAU,SACrC2mB,WAAY,eACZC,SAAU,YACVzmB,GAAI,MCqCZ0mB,EAAYhwD,UAAUo2B,OAAS,SAAUllB,GACrC,IAIQsF,EAEAiE,EACAw1C,EACAC,EARJl2B,EAAQl6B,KACZy2B,cAAYz2B,KAAKqO,OAAOnB,OAAO,EACN,YAArBlN,KAAKqO,OAAOgF,OACZgwB,cAAY,CAACrjC,KAAKqO,OAAOnB,SAAUu1B,EAAgB,EAC/C/rB,EAAQD,GAAczW,KAAKqO,OAAQ+C,EAAKyB,KAAK,EACjD7S,KAAKqwD,iBACD11C,EAAU3a,KAAKswD,aACfH,EAAe,KAAA,EACfC,EAAmB,CAACv5C,oBAAkB8D,CAAO,GACuC,CAAC,IAArFA,EAAQ6K,UAAU,SAAUo+B,GAAO,OAAOA,EAAIjiD,QAAUu4B,EAAM7rB,OAAOyI,OAAS,EAC9E9W,KAAKqO,OAAO8L,UAAY,CAACi2C,EACzBD,EAAe,GAGe,SAA1BnwD,KAAKqO,OAAOuI,YACZu5C,EAAe,CAAC,CAAEI,UAAWvwD,KAAKqO,OAAOuI,UAAWjV,MAAO3B,KAAKqO,OAAOyI,UAG/E9W,KAAKgT,QAAU,IAAIw9C,OAAK,CACpBv9C,WAAYyD,EACZ+5C,aAAc,CAAA,EACdC,aAAc1wD,KAAK2wD,YAAY1hC,KAAKjvB,KAAM,QAAQ,EAClD4wD,eAAgB5wD,KAAK2wD,YAAY1hC,KAAKjvB,KAAM,UAAU,EACtD6wD,YAAa7wD,KAAK6/C,WAAW5wB,KAAKjvB,IAAI,EACtC8wD,cAAe9wD,KAAK+wD,cAAc9hC,KAAKjvB,IAAI,EAC3CgxD,cAAehxD,KAAKqO,OAAOqM,oBAAoBu2C,eAC/CC,kBAAmB,CACfjvD,KAAMjC,KAAKqO,OAAOyyB,oBAAsB,WAAa,SACrDqwB,aAAc,mBAElBrgC,UAAW9wB,KAAKqO,OAAOyiB,UACvBsgC,aAAc,CAAEC,SAAU,IAC1B/4B,qBAAsBt4B,KAAKqO,OAAOiqB,qBAClCg5B,kBAAmBtxD,KAAKqO,OAAOijD,kBAC/BC,qBAAsB,CAAA,EACtBpB,aAAc,CAAEqB,YAAa,CAAA,EAAO72C,QAASw1C,GAC7Cx1C,QAASA,EACT82C,kBAAmBzxD,KAAK0xD,eAAeziC,KAAKjvB,IAAI,EAChD2xD,gBAAiB3xD,KAAK4xD,kBAAkB3iC,KAAKjvB,IAAI,EACjDgsD,UAAWhsD,KAAK6xD,YAAY5iC,KAAKjvB,IAAI,EACrC8xD,aAAc9xD,KAAK+xD,eAAe9iC,KAAKjvB,IAAI,EAC3CgyD,YAAahyD,KAAKiyD,cAAchjC,KAAKjvB,IAAI,EACzCkyD,eAAgBlyD,KAAKmyD,iBAAiBljC,KAAKjvB,IAAI,EAC/CmC,MAAO,OACPizB,OAASp1B,KAAKqO,OAA2B,qBAAIrO,KAAKoyD,gBAAkB,OACpEC,WAAY,SAAUjhD,GAAQA,EAAK+N,OAAS,CAAA,GAC5CmzC,KAAM,WACFtyD,KAAKuyD,YAAYnpD,WAErBuQ,OAAQ3Z,KAAKqO,OAAOsL,OACvB,EACG3Z,KAAKqO,OAAOmkD,UACZxyD,KAAKgT,QAAQw/C,QAAU,CAAA,EACvBxyD,KAAKgT,QAAQg0C,QAAU,GACvBhnD,KAAKgT,QAAQytB,GAAG,sBAAuBzgC,KAAKyyD,oBAAqBzyD,IAAI,GAEzEA,KAAKgT,QAAQge,iBAAmB,CAAA,EAChChxB,KAAKgT,QAAQie,SAAS,IAAMjxB,KAAKqO,OAAOnB,QAAQZ,GAAKulC,EAAW,EAChE7xC,KAAKy5B,aACLz5B,KAAK+7C,eACL/7C,KAAK0yD,UAAYthD,IAGzB8+C,EAAYhwD,UAAUuyD,oBAAsB,SAAUrhD,GAClDpR,KAAKqO,OAAgB,QAAI+C,EACrBpR,KAAKqO,OAAO24C,SAAWhnD,KAAKqO,OAAO01C,eAAiB/jD,KAAKqO,OAAO01C,cAAc4B,YAC9E3lD,KAAKqO,OAAO01C,cAAc4B,WAAWqB,UACrChnD,KAAKqO,OAAgB,QAAIrO,KAAKqO,OAAgB,QAAE6jC,OAAOlyC,KAAKqO,OAAO01C,cAAc4B,WAAWqB,OAAO,GAEvGhnD,KAAKqO,OAAOW,OAAO,sBAAuBhP,KAAKqO,OAAgB,OAAC,EAChErO,KAAKqO,OAA6B,wBAQtC6hD,EAAYhwD,UAAUkyD,cAAgB,WAElC,IAAIO,EAAO7kD,SAAO,IAAM9N,KAAKqO,OAAOnB,QAAQZ,GAAKoT,GAAgB1f,KAAKqO,OAAOnB,OAAO,EAChFmxC,EAAMvwC,SAAO,IAAM9N,KAAKqO,OAAOnB,QAAQZ,GAAKoL,GAAsB1X,KAAKqO,OAAOnB,OAAO,EAIzF,OAAQylD,EAAKh7C,aAAe0mC,EAAI1mC,aAFV,IAI1Bu4C,EAAYhwD,UAAUmwD,eAAiB,WACnC,IAAIuC,EAAgB5yD,KAAKqO,OAAOqM,oBAAoBC,QACpD3a,KAAK6yD,YAAc,CAAA,EACnB,IAAK,IAAI7xD,EAAI,EAAGA,EAAI4xD,EAAcjyD,OAAQK,CAAC,GACvC,GAA+B,SAA3B4xD,EAAc5xD,GAAGW,MAEjB,OADA3B,KAAAA,KAAK6yD,YAAc,CAACpmD,oBAAMmmD,EAAc5xD,GAAGmB,KAAK,IAK5D+tD,EAAYhwD,UAAU4yD,YAAc,SAAUn4C,EAASo4C,GACnD,GAAI/yD,CAAAA,KAAK6yD,aAA8B,SAAdE,EAGzB,IAAK,IAOOC,EAPHhyD,EAAI,EAAGA,EAAI2Z,EAAQha,OAAQK,CAAC,GAC7B2Z,EAAQ3Z,GAAGW,QAAUoxD,IACjBC,EAAY,KAAA,EAKZA,EAJ4D,KAA5DhzD,KAAKqO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAiBjQ,KAAKqO,OAAO6B,WAIlElQ,KAAKkN,QAAQk+B,aAAe,IAAuB,SAAd2nB,EAAwB,QAAU,QAAW,OAHlF/yD,KAAKkN,QAAQk+B,aAAe,IAAO,QAAU,OAK9DzwB,EAAQ3Z,GAAGmB,MAAQ6wD,IAI/B9C,EAAYhwD,UAAUowD,WAAa,WAC/B,IAAI31C,EACAoW,EAAsB/wB,KAAKqO,OAAO0iB,oBACtC,GAAI/wB,KAAKqO,OAAO8L,SACZQ,EAAU,CACN,CACIhZ,MAAO,OAAQC,WAAYgX,EAAc5Y,KAAKqO,OAAQ,MAAM,EAAGlM,MAAO,OAAQN,SAAU,IAAKoxD,gBAAiB,OAC9GnxD,SAAUM,wBAAsB,SAAUC,GAEtC,MAAO,2BADI0uB,EAAsBmiC,qBAAmBC,SAAS9wD,EAAKmU,IAAI,EAAInU,EAAKmU,MACnC,gCAAoCnU,EAAK+wD,aAAe,iCAAqC/wD,EAAKC,KAAO,UACxJ,QAIR,CACDqY,EAAU0J,SAAO,GAAIrkB,KAAKqO,OAAOqM,oBAAoBC,QAAS,KAAM,CAAA,CAAI,EACxE3a,KAAK8yD,YAAYn4C,EAAS,MAAM,EAYhC,IAXA,IAUI04C,EAASrzD,KACJgB,EAAI,EAAGmY,EAAMwB,EAAQha,OAAQK,EAAImY,EAAKnY,CAAC,GAC5CizB,CAZU,SAAUjzB,GAEpB,IACQsyD,EAFR34C,EAAQ3Z,GAAGY,WAAagX,EAAcy6C,EAAOhlD,OAAQsM,EAAQ3Z,GAAGY,UAAU,EACjD,SAArB+Y,EAAQ3Z,GAAGW,OAAqB8K,oBAAMkO,EAAQ3Z,GAAGc,QAAQ,GAAsC,YAA/B,OAAO6Y,EAAQ3Z,GAAGc,WAC9EwxD,EAAa34C,EAAQ3Z,GAAGc,SAC5B6Y,EAAQ3Z,GAAGc,SAAWM,wBAAsB,SAAUC,GAC9CmU,EAAOua,EAAsBmiC,qBAAmBC,SAAS9wD,EAAKmU,IAAI,EAAInU,EAAKmU,KAC/E,OAAO88C,EAAWp9C,QAAQ,YAAaM,CAAI,EAC9C,IAKGxV,CAAM,EAGtB,IAAIuyD,EAAWvzD,KAAKqO,OAAO8L,UAAYna,KAAKqO,OAAOmsC,SAAY,KAAO,KAClE9d,EAAO,CACP/6B,MAAO,OAAQQ,MAAOoxD,EAAQ1xD,SAAU0xD,EACxCzxD,SAAUM,wBAAsB,SAAUC,GACtC,MAAO,0BAA6BA,EAAKmxD,cAAgB,YAC5D,EAAGxC,cAAe,CAAA,EAAOP,aAAc,CAAA,EAAM1uD,iBAAkB,CAAEC,MAAO,kBACzEyxD,eAAgBrxD,wBAAsB,WAClC,MAAO,8CACV,GAELuY,EAAQ+4C,QAAQh3B,CAAI,EAChB18B,KAAKqO,OAAO0tB,qBAER43B,EAAO,CACP1xD,KAAM,WAAYE,MAFlByxD,EAAU5zD,KAAKqO,OAAOmsC,SAAW,KAAO,KAEP34C,SAAU+xD,EAAQ7xD,iBAAkB,CAAEC,MAAO,iBAC9EgvD,cAAe,CAAA,EAAOP,aAAc,CAAA,GAEpCzwD,KAAKqO,OAAO8L,SACZQ,EAAQrN,KAAKqmD,CAAI,EAGjBh5C,EAAQ+4C,QAAQC,CAAI,GAG5B,IAAS3yD,EAAI,EAAGmY,EAAMwB,EAAQha,OAAQK,EAAImY,EAAKnY,CAAC,GAC5C2Z,EAAQ3Z,GAAG6yD,kBAAoB,CAAC7zD,KAAKqO,OAAO0iB,oBAMhD,OAJI/wB,KAAKqO,OAAO2zC,sBAEZrnC,EAAQrN,KADS,CAAE3L,MAAO,OAAQspB,QAAS,CAAA,EAAOlpB,iBAAkB,CAAEC,MAAO,eACtD,EAEpB2Y,GAEXu1C,EAAYhwD,UAAU67C,aAAe,WACjC,IAIIsC,EACAyV,EACA1+B,EANCp1B,KAAKgT,UAGN2/C,EAAO7kD,SAAO,IAAM9N,KAAKqO,OAAOnB,QAAQZ,GAAKoT,GAAgB1f,KAAKqO,OAAOnB,OAAO,EAChFmxC,EAAMvwC,SAAO,IAAM9N,KAAKqO,OAAOnB,QAAQZ,GAAKoL,GAAsB1X,KAAKqO,OAAOnB,OAAO,EACrF4mD,EAAahmD,SAAO,IAAMgK,GAAiB9X,KAAKqO,OAAOnB,OAAO,EAC9DkoB,EAAUu9B,EAAKh7C,aAAe0mC,EAAI1mC,aAAem8C,EAAWn8C,aAChE3X,KAAKgT,QAAQoiB,OAASA,EACtBp1B,KAAKgT,QAAQme,aAEjB++B,EAAYhwD,UAAU6zD,eAAiB,WACnC/zD,KAAKgT,QAAQ2H,QAAU3a,KAAKswD,aAC5BtwD,KAAKg0D,gBAAkB,CAAA,EACvBh0D,KAAKgT,QAAQihD,kBAEjB/D,EAAYhwD,UAAU6xD,eAAiB,SAAU3gD,GAC7C,IAAI8iD,EAAKpmD,SAAO,kBAAmBsD,EAAK+iD,GAAG,EAC3C,GAAI,CAACD,EAED,IADA,IAAIv5C,EAAU3a,KAAKqO,OAAOqM,oBAAoBC,QACrC3Z,EAAI,EAAGA,EAAI2Z,EAAQha,OAAQK,CAAC,GACjC,GAAyB,SAArB2Z,EAAQ3Z,GAAGW,MAAkB,CAC7BuyD,EAAK9iD,EAAK+iD,IAAI9mB,SAASrtC,KAAKqO,OAAOyyB,oBAAuB9/B,EAAI,EAAMA,EAAI,GACxE,MAwBZ,GApBIkzD,GACAA,EAAGv9B,aAAa,QAAStqB,WAAS,OAAQ+E,EAAK/O,IAAI,CAAC,EAEpDrC,KAAKqO,OAAO2C,gBAAkBhR,KAAKqO,OAAOM,OAAoC,SAA3B3O,KAAKqO,OAAOiG,YAC/DtU,KAAKqO,OAAOQ,eAAsD,IAArC7O,KAAKqO,OAAOQ,cAAclO,QACgB,CAAC,IAApEX,KAAKqO,OAAOQ,cAAc8F,QAAQtI,WAAS,OAAQ+E,EAAK/O,IAAI,CAAC,GAC7DuN,GAAQwB,EAAK+iD,GAAG,EAGpB,CAACn0D,KAAKqO,OAAOqW,mBAAqBrY,WAAS,SAAU+E,EAAK/O,IAAI,IAC1D+J,EAAOC,WAAS,OAAQ+E,EAAK/O,IAAI,EACjCu5B,EAAUxqB,EAAK+iD,IAAIp8C,cAAc,YAAc3L,EAAO,IAAI,KAEtDmQ,EAASlQ,WAAS,OAAQ+E,EAAK/O,IAAI,EACnCJ,EAAOoK,WAAS,OAAQ+E,EAAK/O,IAAI,EACR,CAAC,IAA1Bka,EAAO5H,QAAQ1S,CAAI,KACnB25B,EAAQjjB,UAAY4D,EAAOmT,OAAO,EAAGnT,EAAO5b,OAASsB,EAAKtB,MAAM,GAIxCijB,KAAAA,IAAhCvX,WAAS,OAAQ+E,EAAK/O,IAAI,GAAmB+O,EAAK+iD,IAAIp8C,cAAc,YAAY,EAAG,CACnF,IAAIq8C,EAAUhjD,EAAK+iD,IAAIp8C,cAAc,YAAY,EAC7Cs8C,EAAe,KAAA,EACnB,GAAKhoD,WAAS,SAAU+E,EAAK/O,IAAI,EAG5B,CAKD,IAJA,IAAIiyD,EAAYjoD,WAAS,OAAQ+E,EAAK/O,IAAI,EACtCgoB,EAAO,IAAIE,uBAAqBvqB,KAAKqO,OAAOsL,MAAM,EAClD46C,EAAa,KAAA,EACb55C,EAAU3a,KAAKqO,OAAOqM,oBAAoBC,QACrC3Z,EAAI,EAAGA,EAAI2Z,EAAQha,OAAQK,CAAC,GACjC,GAAyB,SAArB2Z,EAAQ3Z,GAAGW,MAAkB,CAC7B4yD,EAAc19C,oBAAkB8D,EAAQ3Z,GAAGkB,MAAM,EAAmC,IAA/ByY,EAAQ3Z,GAAGkB,OAAOsM,WACvE,MAIR6lD,EADYhqC,EAAKmqC,aAAcF,EAAY,KAAO,CAAEpyD,OAAQqyD,EAAY,EACjD,IAAM37C,EAAc5Y,KAAKqO,OAAQ,IAAI,OAd5DgmD,EAAe,GAgBnBD,EAAQz7C,UAAY07C,EAExB,GAAIr0D,KAAKqO,OAAO8L,UACgCyJ,KAAAA,IAAxCvX,WAAS,eAAgB+E,EAAK/O,IAAI,GAAmB+O,EAAK+iD,IAAIp8C,cAAc,YAAY,EAAG,CAK3F,IAJA,IAAI08C,EAAUrjD,EAAK+iD,IAAIp8C,cAAc,YAAY,EAC7CsS,EAAO,IAAIE,uBAAqBvqB,KAAKqO,OAAOsL,MAAM,EAClDgB,EAAU3a,KAAKqO,OAAOqM,oBAAoBC,QAC1CzY,EAAS,KAAA,EACJlB,EAAI,EAAGA,EAAI2Z,EAAQha,OAAQK,CAAC,GACjC,GAAyB,iBAArB2Z,EAAQ3Z,GAAGW,MAA0B,CACrCO,EAASyY,EAAQ3Z,GAAGkB,OACpB,MAGJotB,EAAkBjF,EAAK3Q,WAAW,IAAIvD,KAAK9J,WAAS,eAAgB+E,EAAK/O,IAAI,CAAC,EAAGH,CAAM,EAC3FuyD,EAAQ97C,UAAY2W,EAGxBolC,EAAYtjD,EAAK+iD,IAAIp8C,cAAc,IAAMouB,EAAW,EACpDuuB,GACAA,EAAUzmD,UAAUqC,IAAI,SAAS,EAEhCyR,EAAc3Q,EAAK/O,IAAI,IACxB+O,EAAK+iD,IAAIh8C,WAAa,IAAMsK,GAAerR,EAAK/O,IAAI,GAEpD2T,EAAY,CACZ9I,QAASkE,EAAK+iD,IACdx+C,YAAavE,EAAK/O,KAClBgY,OAAQ,eAEZra,KAAKqO,OAAOoH,QAAQ,WAAYO,CAAS,GAE7Ck6C,EAAYhwD,UAAU+xD,cAAgB,SAAU7gD,GAC5C,GAAyB,YAArBA,EAAKujD,YAA2B,CAGhC,GAFA30D,KAAKqO,OAAO3B,cAAc,CAAEkK,UAAWxF,EAAKm/C,WAAa,CAAA,CAAI,EAC7DvwD,KAAKqO,OAAO3B,cAAc,CAAEoK,OAAQ1F,EAAKwjD,YAAc,CAAA,CAAI,EAClB,IAArC50D,KAAKqO,OAAO+B,cAAczP,OAAc,CACxCX,KAAK60D,SAAW,CAAA,EAChB,IAAIC,EAAO90D,KAAKgT,QAAQ+hD,wBACpB57C,EAAM27C,EAAKn0D,OAEf,IADAX,KAAKg1D,kBAAoB,GACZ,EAAN77C,GAAS,CACZ,IAAI9W,EAAOrC,KAAKgT,QAAQiiD,gBAAgBH,EAAK37C,EAAM,IAAI9W,KACvDrC,KAAKg1D,kBAAkB1nD,KAAKjB,WAASrM,KAAKqO,OAAOxB,MAAQ,KAAO,OAAQxK,CAAI,CAAC,EAC7E8W,CAAG,IAGXnZ,KAAKqO,OAAOW,OAAOsL,GAAqB,EAAE,IAGlD41C,EAAYhwD,UAAUiyD,iBAAmB,SAAU/gD,GAC3CsjD,EAAYtjD,EAAKlF,KAAK6L,cAAc,IAAMouB,EAAW,EACrDuuB,GACAA,EAAUzmD,UAAUqC,IAAI,SAAS,GAGzC4/C,EAAYhwD,UAAU0xD,kBAAoB,SAAUxgD,GAChD,IAAI8oB,EAAQl6B,KAERk1D,GADJz+B,cAAYz2B,KAAKqO,OAAOnB,OAAO,EACdlN,KAAKqO,OAAOqM,oBAAoBC,QAAQw6C,KAAK,SAAU56C,GAAU,OAAOA,EAAO5Y,QAAUu4B,EAAM7rB,OAAOyI,OAAS,GAC5Ho+C,CAAAA,GAAgB,iBAAkBA,IAC9Bx+C,EAAQD,GAAczW,KAAKqO,OAASrO,KAAKqO,OAA2B,qBAClE+C,EAAK8F,OACLlX,KAAKgT,QAAQC,UAAU,EAC7B7B,EAAK8F,OAASR,IAItBw5C,EAAYhwD,UAAU2xD,YAAc,WAgDhC,IAWQuD,EAOAC,EAjERr1D,KAAK+4B,iBACqC,IAArC/4B,KAAKqO,OAAO+B,cAAczP,QAAgB,CAACX,KAAKqO,OAAOiqB,sBACjB,IAArCt4B,KAAKqO,OAAO+B,cAAczP,QAAgBX,KAAKqO,OAAOiqB,sBACG,IAAvDt4B,KAAKkN,QAAQ6K,cAAc,YAAY,EAAEgsB,YAC7C/jC,KAAKs1D,cAAct1D,KAAKqO,OAAO+B,aAAa,EAElB,CAAA,IAA1BpQ,KAAKk5B,kBAA8B,CAACriB,oBAAkB7W,KAAKgT,QAAQuiD,aAAa,GAAyC,EAApCv1D,KAAKgT,QAAQuiD,cAAc50D,SAC3GX,KAAKg0D,gBAKNh0D,KAAKg0D,gBAAkB,CAAA,GAJvBh0D,KAAKs1D,cAAct1D,KAAKqO,OAAOiP,UAAU,EACzCtd,KAAKk5B,iBAAmB,CAAA,IAM5Bl5B,KAAKqO,OAAO8c,cACZnrB,KAAKs1D,cAAc,CAACjpD,WAASrM,KAAKqO,OAAOxB,MAAQ,KAAO,OAAQ7M,KAAKqO,OAAO8c,WAAW,EAAE,EACzFnrB,KAAKqO,OAAO8c,YAAc,MAE1BnrB,KAAKqO,OAAOiF,oBAAoB3S,QAChCX,KAAKs1D,cAAct1D,KAAKqO,OAAOiF,mBAAmB,EAElDtT,KAAKqO,OAAOgd,cACZrrB,KAAK09B,aAAa19B,KAAKqO,OAAOgd,WAAW,EACzCrrB,KAAKqO,OAAOgd,YAAc,MAER,CAAA,IAAlBrrB,KAAK60D,WACL70D,KAAKs1D,cAAct1D,KAAKg1D,iBAAiB,EACzCh1D,KAAK60D,SAAW,CAAA,GAEhB70D,KAAKw1D,oBACAx1D,KAAKg0D,gBAKNh0D,KAAKg0D,gBAAkB,CAAA,GAJvBh0D,KAAKs1D,cAAct1D,KAAKy1D,mBAAmB,EAC3Cz1D,KAAKw1D,kBAAoB,CAAA,IAMJ,CAAA,IAAzBx1D,KAAKo5B,kBACLp5B,KAAKud,KAAK,GACVvd,KAAKs1D,cAAct1D,KAAKqO,OAAO2U,UAAU,EACrChjB,KAAKud,QAAUvd,KAAKqO,OAAO2U,WAAWriB,UACtCX,KAAKo5B,gBAAkB,CAAA,EACvBp5B,KAAKqO,OAAO2U,WAAa,IAG7BhjB,KAAKgT,QAAQ0iD,gBAAgB/0D,OAASX,KAAKgT,QAAQ2iD,eAAiB31D,KAAKgT,QAAQoiB,SAEjFggC,EADcp1D,KAAKgT,QAAQ4iD,oBACnB/8C,MAAMod,aAAe,GAC7Bm/B,EAAQv8C,MAAMg9C,YAAc,GACZ/nD,SAAO,mBAAoBsnD,CAAO,EACxCv8C,MAAMi9C,iBAAmB,KAEnCT,EADcr1D,KAAKgT,QAAQ+iD,aAAah+C,cAAc,YAAY,GAC1Dc,MAAMm9C,UAAY,GAC1BX,EAAQpnD,UAAUqC,IAAI,cAAc,IAGhC8kD,EAAUp1D,KAAKgT,QAAQ4iD,mBACtB51D,KAAKqO,OAAOyiB,UAIbskC,EAAQv8C,MAAMg9C,YAAc,OAH5BT,EAAQv8C,MAAMod,aAAe,QAMjCo/B,EADcr1D,KAAKgT,QAAQ+iD,aAAah+C,cAAc,YAAY,GAC1D9J,UAAU0C,OAAO,cAAc,GAE3C3Q,KAAK45B,WAAa,CAAA,EAClB55B,KAAKqO,OAAO2C,eAAiB,CAAA,EAC7B6oB,cAAY75B,KAAKqO,OAAOnB,OAAO,EAC/BlN,KAAKi2D,cAAcj2D,KAAK0yD,SAAS,EACjC1yD,KAAKkzB,aAAelzB,CAAAA,CAAAA,KAAKk2D,UAAkBl2D,KAAKkzB,aAChDlzB,KAAKk2D,SAAW,CAAA,GAEpBhG,EAAYhwD,UAAUo1D,cAAgB,SAAUjlD,GAG5C,IAFA,IAAI8lD,EAAcn2D,KAAKgT,QAAQojD,wBAC3BC,EAAW,GACNr1D,EAAI,EAAGmY,EAAMg9C,EAAYx1D,OAAQK,EAAImY,EAAKnY,CAAC,GAAI,CACpD,IAAIkL,EAAOlM,KAAKqO,OAAOxB,MAAQR,WAAS,KAAM8pD,EAAYn1D,EAAE,EAAIuV,GAAQvW,KAAKqO,OAAQ8nD,EAAYn1D,EAAE,EACvE,CAAC,IAAzBqP,EAAMsE,QAAQzI,CAAI,EAClBmqD,EAAS/oD,KAAKtM,CAAC,EAEThB,KAAKqO,OAAOqW,mBAAsB1kB,KAAKqO,OAAOxB,OAASX,CAAAA,EAAK2P,SAAS,GAAG,IAC1Ey6C,EAAOpqD,EAAK0I,MAAM,GAAG,EAAEikB,MAAM,EAAG,CAAC,CAAC,EAAEhkB,KAAK,GAAG,EACpB,CAAC,IAAzBxE,EAAMsE,QAAQ2hD,CAAI,GAClBD,EAAS/oD,KAAKtM,CAAC,GAIH,IAApBq1D,EAAS11D,SACTX,KAAKgT,QAAQg+B,WAAWqlB,CAAQ,EAChCr2D,KAAKmjC,SAASnjC,KAAKgT,QAAQujD,gBAAgB,IAGnDrG,EAAYhwD,UAAUw9B,aAAe,SAAUr7B,GAC3C,IAAIqU,EAAQ1W,KAAKgT,QAAQojD,wBACrBI,EAAQ,GACRx2D,KAAKqO,OAAOxB,MACZ2pD,EAAQ,IAAIxkD,cAAY0E,CAAK,EACzBzE,cAAa,IAAIC,SAAQC,MAAM,KAAM,QAASnS,KAAKqO,OAAOomB,UAAW,CAAA,CAAK,CAAC,EAK5D,GAFfw6B,EAAQ,IAAIj9C,cAAY0E,CAAK,EAC7BzE,cAAa,IAAIC,SAAQC,MAAM,OAAQ,QAAS9F,WAAS,OAAQhK,CAAI,EAAG,CAAA,CAAK,CAAC,GACxE1B,SACN61D,EAAQ,IAAIxkD,cAAYi9C,CAAK,EACzBh9C,cAAa,IAAIC,SAAQC,MAAM,aAAc,QAASnS,KAAKqO,OAAOwT,WAAY,CAAA,CAAK,CAAC,GAG7E,EAAf20C,EAAM71D,SACFomB,EAAQrQ,EAAM/B,QAAQ6hD,EAAM,EAAE,EAClCx2D,KAAKgT,QAAQg+B,WAAW,CAACjqB,EAAM,IAGvCmpC,EAAYhwD,UAAUu2D,aAAe,WACH,SAA1Bz2D,KAAKqO,OAAOuI,UACZ5W,KAAKgT,QAAQ0jD,WAAWxrD,WAAWlL,KAAKqO,OAAOyI,OAAQ9W,KAAKqO,OAAOuI,SAAS,EAG5E5W,KAAKgT,QAAQC,WAAawD,GAAczW,KAAKqO,OAAQrO,KAAKgT,QAAQC,UAAU,EAErB,IAAvDjT,KAAKkN,QAAQ6K,cAAc,YAAY,EAAEgsB,WACzC/jC,KAAKgT,QAAQ2jD,iBAGrBzG,EAAYhwD,UAAUi/B,kBAAoB,SAAUjS,GAChD,GAAIA,EAAE7S,SAAWra,KAAKu7B,iBAAgC,WAAbrO,EAAE7S,OAI3C,IAAK,IAuBmBmhC,EAvBf7a,EAAK,EAAGC,EAAKrhC,OAAOkiB,KAAKyL,EAAE2T,OAAO,EAAGF,EAAKC,EAAGjgC,OAAQggC,CAAE,GAE5D,OADWC,EAAGD,IAEV,IAAK,mBACD3gC,KAAK+4B,gBACL,MACJ,IAAK,SACD/4B,KAAK+7C,eACL,MACJ,IAAK,sBACIllC,oBAAkB7W,KAAKgT,OAAO,IAC/BhT,KAAKqwD,iBACD11C,EAAU3a,KAAKswD,aACnBtwD,KAAKgT,QAAQ2H,QAAUA,EACvB3a,KAAKgT,QAAQg+C,cAAgBhxD,KAAKqO,OAAOqM,oBAAoBu2C,eAC7DjxD,KAAKgT,QAAQme,WACbnxB,KAAKgT,QAAQihD,kBAEjB,MACJ,IAAK,gBACDj0D,KAAK42D,YAAc,CAAA,EACsB,IAArC52D,KAAKqO,OAAO+B,cAAczP,QACrBX,KAAKqO,OAAOyyB,sBACT0a,EAAUx7C,KAAKqO,OAAO+B,cAAcyoB,MAAM74B,KAAKqO,OAAO+B,cAAczP,OAAS,CAAC,EAClFX,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAeorC,GAAW,CAAA,CAAI,GAE9Dx7C,KAAKs1D,cAAct1D,KAAKqO,OAAO+B,aAAa,EAC5CpQ,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAepQ,KAAKqO,OAAO+B,eAAiB,CAAA,CAAI,GAEtE3D,oBAAMzM,KAAKgT,OAAO,IACxBhT,KAAKgT,QAAQurB,iBACbv+B,KAAK42D,YAAc,CAAA,GAEvB,MACJ,IAAK,oBAGL,IAAK,kBACDplD,EAAKxR,KAAKqO,OAAQod,EAAoBzrB,KAAKqO,OAAO1B,IAAI,EACtD,MACJ,IAAK,qBACL,IAAK,sBACIkK,oBAAkB7W,KAAKgT,OAAO,IAC/BhT,KAAKy1D,oBAAsBz1D,KAAKqO,OAAO+B,cACvCpQ,KAAKgT,QAAQk+C,kBAAkBjvD,KAAOirB,EAAE2T,QAAQC,oBAAsB,WAAa,SACnF9gC,KAAKw1D,kBAAoB,CAAA,EACzBx1D,KAAK+zD,kBAET,MACJ,IAAK,OACD3gD,GAAapT,KAAKqO,OAAQ,SAAS,EACnC,MACJ,IAAK,QACDrO,KAAK62D,oBAIrB3G,EAAYhwD,UAAUs9B,cAAgB,SAAUpsB,GAC5CpR,KAAKqO,OAAOM,MAAQ,CAAA,EACpB,IAAImoD,EAAY92D,KAAKqO,OAAOqM,oBAAoBC,QAAQw6C,KAAK,SAAU56C,GAAU,MAAwB,eAAjBA,EAAO5Y,MAAyB,GAChD,KAAnE3B,KAAKqO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,MAAMyiC,QAAiB1yC,KAAKgT,SAC9E,CAAC6D,oBAAkBigD,CAAS,GAAK,CAACjgD,oBAAkBigD,EAAUC,WAAW,GAA+B,KAA1BD,EAAUC,eACzF/2D,KAAKqO,OAAOovB,cAAgB,GACvBz9B,KAAKqO,OAAO6B,WAIblQ,KAAKg3D,mBAHLh3D,KAAKi3D,iBAAiB,CAAA,CAAK,GAMnCroD,EAAW5O,KAAKqO,MAAM,EACG,YAArBrO,KAAKqO,OAAOgF,OAEZrT,KAAKkzB,aAAe,CAAA,EACpBuD,cAAYz2B,KAAKqO,OAAOnB,OAAO,EAC/BlN,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACrDpQ,KAAKgT,QAAQC,WAAawD,GAAczW,KAAKqO,OAAQ+C,EAAKyB,KAAK,EAC/D7S,KAAKgT,QAAQ2jD,gBACT32D,KAAKqO,OAAOmkD,UACZxyD,KAAKgT,QAAQytB,GAAG,sBAAuBzgC,KAAKyyD,oBAAqBzyD,IAAI,EAG7EA,KAAK0yD,UAAYthD,GAErB8+C,EAAYhwD,UAAU82D,iBAAmB,WACrC,IAAI79C,EAAMnZ,KAAKgT,QAAQ2H,QAAQha,OAC3Bu2D,EAAa3uC,KAAKyB,MAAMzB,KAAKC,UAAUxoB,KAAKgT,QAAQ2H,OAAO,CAAC,EAC5Du8C,EAAW/9C,EAAM,GAAGxX,OAAuC,eAA9Bu1D,EAAW/9C,EAAM,GAAGxX,OAA0B,CAAC3B,KAAKqO,OAAO8L,WACpFhP,EAAa,CACbxJ,MAAO,aAAcC,WAAYgX,EAAc5Y,KAAKqO,OAAQ,MAAM,EAAGxM,SAAU,IAAKM,MAAO,QAE/FnC,KAAKgT,QAAQ2H,QAAQrN,KAAKnC,CAAU,EACpCnL,KAAK8yD,YAAY9yD,KAAKgT,QAAQ2H,QAAS,YAAY,EACnD3a,KAAK8yD,YAAY9yD,KAAKgT,QAAQ2H,QAAS,MAAM,EAC7C3a,KAAKg0D,gBAAkB,CAAA,EACvBh0D,KAAKgT,QAAQihD,mBAGrB/D,EAAYhwD,UAAU+1D,cAAgB,SAAU7kD,GAC5C,IAAIsF,EAAQD,GAAczW,KAAKqO,OAAQ+C,EAAKyB,KAAK,EAC5B,IAAjB6D,EAAM/V,QAAiB8L,oBAAMzM,KAAKkN,QAAQ6K,cAAc,IAAMS,EAAa,CAAC,EAGtD,IAAjB9B,EAAM/V,QAAgBX,KAAKkN,QAAQ6K,cAAc,IAAMC,CAAS,IACjEhY,KAAKkN,QAAQ6K,cAAc,IAAMS,EAAa,EAAET,cAAc,IAAMC,CAAS,GACzEC,EAAWjY,KAAKkN,QAAQ6K,cAAc,IAAMS,EAAa,EAAET,cAAc,IAAMC,CAAS,EAC5FhY,KAAKkN,QAAQ6K,cAAc,IAAMS,EAAa,EAAEqU,YAAY5U,CAAQ,GAGpEjY,KAAKkN,QAAQ2f,YAAY7sB,KAAKkN,QAAQ6K,cAAc,IAAMC,CAAS,CAAC,GARxEZ,GAAmBpX,KAAKqO,OAAQrO,KAAKkN,QAASkE,CAAI,GAY1D8+C,EAAYhwD,UAAUy9B,WAAa,WAC/B,IACQt7B,EADyB,gBAA7BrC,KAAKqO,OAAOmB,eACRnN,EAAOrC,KAAKgT,QAAQmkD,qBAAqB,GAC7Cn3D,KAAKo3D,YAAY/0D,CAAI,IAG7B6tD,EAAYhwD,UAAUwxD,eAAiB,SAAUtgD,GAC7CpR,KAAKgT,QAAQg+B,WAAW,CAAC5/B,EAAKimD,SAAS,EAEnCjmD,EAAKkmD,UACLj1D,EAAOkmB,KAAKyB,MAAMzB,KAAKC,UAAUpX,EAAKkmD,OAAO,CAAC,EAC9Ct3D,KAAKo3D,YAAY/0D,CAAI,IAG7B6tD,EAAYhwD,UAAUk3D,YAAc,SAAU/0D,GAC1C,IAAI63B,EAAQl6B,KACP+T,GAAc1R,CAAI,EAKvBrC,KAAKqO,OAAOoH,QAAQ,WADJ,CAAE0J,OAAQ,CAAA,EAAOxJ,YAAatT,EAAMgY,OAAQ,eACjB,SAAUkpB,GACjD,IAcgBj1B,EAdXi1B,EAAapkB,SACV8nB,EAAS56B,WAAS,OAAQhK,CAAI,EAC9BgK,WAAS,SAAUhK,CAAI,EACZmS,GAASnS,CAAI,IACXyS,KACLU,EAASN,GAAYglB,EAAM7rB,OAAQhM,CAAI,EAC3C0yB,GAAkBmF,EAAM7rB,OAAQ44B,EAAQzxB,CAAM,IAKtC,KADF0kB,EAAM7rB,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAC1CiqB,EAAM7rB,OAAO6B,WAW5BkL,GAAiB8e,EAAM7rB,OAAQhM,CAAI,GAV/BiK,EAAKD,WAAS,KAAMhK,CAAI,EAC5B63B,EAAM7rB,OAAOyO,QAAUod,EAAM7rB,OAAO1B,KAChC2B,EAAU4rB,EAAM7rB,OAAO1B,MAAQF,oBAAMH,CAAE,EAAI26B,EAAS36B,GAAM,IAC9D4tB,EAAM7rB,OAAO3B,cAAc,CAAEC,KAAM2B,GAAW,CAAA,CAAI,EAClD4rB,EAAM7rB,OAAOrB,UAAUM,KAAK25B,CAAM,EAClC/M,EAAM7rB,OAAOvB,OAAOQ,KAAKjB,WAAS,SAAUhK,CAAI,CAAC,EACjD63B,EAAM7rB,OAAOiD,SAAW,CAACjP,GACzB8R,GAAW+lB,EAAM7rB,MAAM,GAK3B6rB,EAAM7rB,OAAO6B,WAAa,CAAA,GAE9BgqB,EAAMhtB,QAAQ6hB,QACVmL,EAAM7rB,OAAOiqB,sBACb4B,EAAM7rB,OAAOnB,QAAQ6K,cAAc,IAAMmiB,EAAM7rB,OAAOnB,QAAQZ,GAAKqpB,EAAiB,EAAE5G,SAGjG,EApCG9a,EAAmBjU,KAAKqO,OAAQhM,EAAM6R,EAAqB,GAuCnEg8C,EAAYhwD,UAAUi8B,eAAiB,SAAU/qB,GACpB,YAArBpR,KAAKqO,OAAOgF,OACRrT,KAAKqO,OAAOiqB,sBACZt4B,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EAEpDpQ,KAAKgT,QAINhT,KAAKk2D,SAAW,CAAA,EAHhBl2D,KAAKs2B,OAAOllB,CAAI,EAKhBpR,KAAKqO,OAAO6B,aACZlQ,KAAKg3D,mBACLh3D,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,GAEzDpQ,KAAKgT,QAAQC,WAAawD,GAAczW,KAAKqO,OAAQ+C,EAAKyB,KAAK,EAC/D7S,KAAKqO,OAAOW,OAAO+nB,GAAmB,EAAE,EACxC/2B,KAAKgT,QAAQ9F,QAAQe,UAAU0C,OAAO0nB,EAAgB,EACtDr4B,KAAKkzB,aAAe,CAAA,EACpBlzB,KAAKgT,QAAQurB,iBAC0D,KAAnEv+B,KAAKqO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,MAAMyiC,QACxD1yC,KAAKu3D,cAAcnmD,CAAI,EAE3BpR,KAAK+7C,eAC0C,EAA3C/7C,KAAKgT,QAAQm9C,aAAax1C,QAAQha,SAAcX,KAAKgT,QAAQm9C,aAAax1C,QAAQ,GAAGhZ,QAAU3B,KAAKqO,OAAOyI,QAC7E,SAA1B9W,KAAKqO,OAAOuI,WACZ5W,KAAKgT,QAAQ9H,WAAWlL,KAAKqO,OAAOyI,OAAQ9W,KAAKqO,OAAOuI,SAAS,GAMjFs5C,EAAYhwD,UAAUq3D,cAAgB,SAAUnmD,GACnB,YAArBpR,KAAKqO,OAAOgF,OACZrT,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACrDpQ,KAAKqO,OAAOW,OAAO8b,EAAyB,EAAE,EACzC9qB,KAAKqO,OAAO2C,iBACbhR,KAAKqO,OAAOiF,oBAAsB,IAEtCtT,KAAKg3D,mBACLh3D,KAAKqO,OAAOovB,cAAgBrsB,EAAKyB,MACjC7S,KAAKw9B,cAAcpsB,CAAI,IAG/B8+C,EAAYhwD,UAAU+2D,iBAAmB,SAAUO,GAC/C,IAAIr+C,EAAMnZ,KAAKgT,QAAQ2H,QAAQha,OAC3Bu2D,EAAa3uC,KAAKyB,MAAMzB,KAAKC,UAAUxoB,KAAKgT,QAAQ2H,OAAO,CAAC,EAC5Du8C,EAAW/9C,EAAM,GAAGxX,OAAwC,eAA9Bu1D,EAAW/9C,EAAM,GAAGxX,QAE7CkV,oBAAkB7W,KAAKgT,QAAQm9C,aAAax1C,QAAQ,EAAE,GAAoD,eAA/C3a,KAAKgT,QAAQm9C,aAAax1C,QAAQ,GAAGhZ,QACnE,SAA1B3B,KAAKqO,OAAOuI,UACZ5W,KAAKgT,QAAQ9H,WAAW,OAAQlL,KAAKqO,OAAOuI,SAAS,EAGrD5W,KAAKgT,QAAQC,WAAawD,GAAczW,KAAKqO,OAAQrO,KAAKgT,QAAQC,UAAU,EAEhFjT,KAAKqO,OAAOW,OAAOsL,GAAqB,EAAE,GAE9Cta,KAAKgT,QAAQ2H,QAAQoQ,MAChBysC,IACDx3D,KAAKg0D,gBAAkB,CAAA,EACvBh0D,KAAKgT,QAAQihD,oBAIzB/D,EAAYhwD,UAAU48B,cAAgB,SAAU1rB,GACnB,YAArBpR,KAAKqO,OAAOgF,OAGXrT,KAAKgT,QAINhT,KAAKw9B,cAAcpsB,CAAI,EAHvBpR,KAAKs2B,OAAOllB,CAAI,IAMxB8+C,EAAYhwD,UAAU68B,YAAc,SAAU3rB,GACjB,YAArBpR,KAAKqO,OAAOgF,MAGhBrT,KAAKw9B,cAAcpsB,CAAI,GAE3B8+C,EAAYhwD,UAAUo9B,aAAe,WACA,gBAA7Bt9B,KAAKqO,OAAOmB,cAAuE,IAArCxP,KAAKqO,OAAO+B,cAAczP,QACxEX,KAAKu9B,oBAGb2yB,EAAYhwD,UAAU+8B,eAAiB,WACF,gBAA7Bj9B,KAAKqO,OAAOmB,eACZxP,KAAKqO,OAAOiD,SAAWtR,KAAKgT,QAAQmkD,uBAG5CjH,EAAYhwD,UAAUi9B,aAAe,WACA,gBAA7Bn9B,KAAKqO,OAAOmB,cACZ+S,GAAOviB,KAAKqO,OAAQrO,KAAKqO,OAAO+B,cAAepQ,KAAKqO,OAAO1B,KAAM,QAAQ,GAIjFujD,EAAYhwD,UAAUk9B,YAAc,SAAUhsB,GACjB,YAArBpR,KAAKqO,OAAOgF,OAGhBrT,KAAKw9B,cAAcpsB,CAAI,EACvBpR,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,IAEzD8/C,EAAYhwD,UAAUm9B,aAAe,SAAUjsB,GAClB,YAArBpR,KAAKqO,OAAOgF,OAGhBrT,KAAKkzB,aAAe,CAAA,EACpBlzB,KAAKi3D,iBAAiB,CAAA,CAAK,EAC3Bj3D,KAAKgT,QAAQC,WAAawD,GAAczW,KAAKqO,OAAQ+C,EAAKyB,KAAK,EAC/D7S,KAAK0yD,UAAYthD,IAErB8+C,EAAYhwD,UAAU29B,aAAe,WACR,YAArB79B,KAAKqO,OAAOgF,MAAsBrT,KAAKgT,SACvChT,KAAKgT,QAAQ9F,QAAQe,UAAUqC,IAAI+nB,EAAgB,GAG3D63B,EAAYhwD,UAAU49B,gBAAkB,WACX,YAArB99B,KAAKqO,OAAOgF,OACZrT,KAAKkzB,aAAe,CAAA,EAChBlzB,KAAKqO,OAAOyyB,oBACZ9gC,KAAKgT,QAAQykD,gBAAgBC,kBAAkB,EAAG13D,KAAKgT,QAAQ2kD,UAAUh3D,MAAM,EAG/EX,KAAKgT,QAAQ4kD,UAAU53D,KAAKgT,QAAQ2kD,UAAUh3D,OAAS,CAAC,EAE5DX,KAAKkzB,aAAe,CAAA,EACpBlzB,KAAK42D,YAAc,CAAA,IAG3B1G,EAAYhwD,UAAUo+B,eAAiB,WACV,YAArBt+B,KAAKqO,OAAOgF,OACZrT,KAAK63D,kBACL73D,KAAK42D,YAAc,CAAA,IAI3B1G,EAAYhwD,UAAUgoD,mBAAqB,WACvC7kB,cAAY,CAACrjC,KAAKkN,SAAU4qD,EAAgB,EACL,EAAnC93D,KAAKqO,OAAO+B,cAAczP,QAC1B6hC,WAAS,CAACxiC,KAAKkN,SAAU4qD,EAAgB,GAGjD5H,EAAYhwD,UAAUy+B,gBAAkB,WACX,YAArB3+B,KAAKqO,OAAOgF,MAGhBrT,KAAK+7C,gBAETmU,EAAYhwD,UAAUs+B,gBAAkB,WACpCx+B,KAAK45B,WAAa,CAAA,GAEtBs2B,EAAYhwD,UAAUu+B,eAAiB,WACnCz+B,KAAK45B,WAAa,CAAA,GAEtBs2B,EAAYhwD,UAAU0+B,sBAAwB,WACjB,YAArB5+B,KAAKqO,OAAOgF,OAGhBrT,KAAKqO,OAAOiD,SAAWtR,KAAKgT,QAAQmkD,uBAExCjH,EAAYhwD,UAAUs5B,iBAAmB,WACrCx5B,KAAKqO,OAAOoyB,GAAGvlB,EAAoBlb,KAAK88B,cAAe98B,IAAI,EAC3DA,KAAKqO,OAAOoyB,GAAG2N,GAAgBpuC,KAAKoJ,QAASpJ,IAAI,EACjDA,KAAKqO,OAAOoyB,GAAGhvB,EAAqBzR,KAAKm8B,eAAgBn8B,IAAI,EAC7DA,KAAKqO,OAAOoyB,GAAGhV,EAAoBzrB,KAAKw9B,cAAex9B,IAAI,EAC3DA,KAAKqO,OAAOoyB,GAAGrV,GAAkBprB,KAAK+8B,YAAa/8B,IAAI,EACvDA,KAAKqO,OAAOoyB,GAAG7gB,GAAiB5f,KAAKq7B,WAAYr7B,IAAI,EACrDA,KAAKqO,OAAOoyB,GAAGN,EAAoBngC,KAAKogC,cAAepgC,IAAI,EAC3DA,KAAKqO,OAAOoyB,GAAGzsB,GAAmBhU,KAAKq9B,aAAcr9B,IAAI,EACzDA,KAAKqO,OAAOoyB,GAAGjuB,GAAexS,KAAKu3D,cAAev3D,IAAI,EACtDA,KAAKqO,OAAOoyB,GAAGrB,GAAmBp/B,KAAKq/B,aAAcr/B,IAAI,EACzDA,KAAKqO,OAAOoyB,GAAG3Q,GAAsB9vB,KAAKs/B,gBAAiBt/B,IAAI,EAC/DA,KAAKqO,OAAOoyB,GAAGvB,EAAqBl/B,KAAKm/B,kBAAmBn/B,IAAI,EAChEA,KAAKqO,OAAOoyB,GAAGvR,GAAmBlvB,KAAKm9B,aAAcn9B,IAAI,EACzDA,KAAKqO,OAAOoyB,GAAG3U,GAAkB9rB,KAAKo9B,YAAap9B,IAAI,EACvDA,KAAKqO,OAAOoyB,GAAGzB,GAAqBh/B,KAAKi9B,eAAgBj9B,IAAI,EAC7DA,KAAKqO,OAAOoyB,GAAGlB,GAAmBv/B,KAAKs9B,aAAct9B,IAAI,EACzDA,KAAKqO,OAAOoyB,GAAG/U,EAAkB1rB,KAAKw9B,cAAex9B,IAAI,EACzDA,KAAKqO,OAAOoyB,GAAGxB,GAAiBj/B,KAAK29B,WAAY39B,IAAI,EACrDA,KAAKqO,OAAOoyB,GAAGrmB,GAAmBpa,KAAKy2D,aAAcz2D,IAAI,EACzDA,KAAKqO,OAAOoyB,GAAGrsB,GAAgBpU,KAAKw9B,cAAex9B,IAAI,EACvDA,KAAKqO,OAAOoyB,GAAGD,GAAkBxgC,KAAKw9B,cAAex9B,IAAI,EACzDA,KAAKqO,OAAOoyB,GAAG1kB,GAAkB/b,KAAK+3D,YAAa/3D,IAAI,EACvDA,KAAKqO,OAAOoyB,GAAG1J,GAAmB/2B,KAAK69B,aAAc79B,IAAI,EACzDA,KAAKqO,OAAOoyB,GAAGjB,GAAsBx/B,KAAK89B,gBAAiB99B,IAAI,EAC/DA,KAAKqO,OAAOoyB,GAAGhB,GAAqBz/B,KAAKs+B,eAAgBt+B,IAAI,EAC7DA,KAAKqO,OAAOoyB,GAAGtvB,GAAmBnR,KAAK6+B,aAAc7+B,IAAI,EACzDA,KAAKqO,OAAOoyB,GAAG3V,EAAyB9qB,KAAKkoD,mBAAoBloD,IAAI,EACrEA,KAAKqO,OAAOoyB,GAAGzX,GAAsBhpB,KAAKw+B,gBAAiBx+B,IAAI,EAC/DA,KAAKqO,OAAOoyB,GAAGrW,GAAqBpqB,KAAKy+B,eAAgBz+B,IAAI,EAC7DA,KAAKqO,OAAOoyB,GAAG3iB,GAAiB9d,KAAKigC,WAAYjgC,IAAI,EACrDA,KAAKqO,OAAOoyB,GAAGnxB,GAAoBtP,KAAKkgC,cAAelgC,IAAI,EAC3DA,KAAKqO,OAAOoyB,GAAGf,GAAqB1/B,KAAK2/B,eAAgB3/B,IAAI,EAC7DA,KAAKqO,OAAOoyB,GAAGX,GAAkB9/B,KAAKg4D,uBAAwBh4D,IAAI,EAClEA,KAAKqO,OAAOoyB,GAAGb,GAAuB5/B,KAAK62D,gBAAiB72D,IAAI,EAChEA,KAAKqO,OAAOoyB,GAAGJ,GAAsBrgC,KAAK2+B,gBAAiB3+B,IAAI,EAC/DA,KAAKqO,OAAOoyB,GAAGpiB,GAAiBre,KAAKsgC,WAAYtgC,IAAI,EACrDA,KAAKqO,OAAOoyB,GAAGF,GAA4BvgC,KAAK4+B,sBAAuB5+B,IAAI,GAE/EkwD,EAAYhwD,UAAU42B,oBAAsB,WACxC92B,KAAKqO,OAAO0wB,IAAI7jB,EAAoBlb,KAAK88B,aAAa,EACtD98B,KAAKqO,OAAO0wB,IAAIqP,GAAgBpuC,KAAKoJ,OAAO,EAC5CpJ,KAAKqO,OAAO0wB,IAAIttB,EAAqBzR,KAAKm8B,cAAc,EACxDn8B,KAAKqO,OAAO0wB,IAAItT,EAAoBzrB,KAAKw9B,aAAa,EACtDx9B,KAAKqO,OAAO0wB,IAAIhjB,GAAkB/b,KAAK+3D,WAAW,EAClD/3D,KAAKqO,OAAO0wB,IAAI3T,GAAkBprB,KAAK+8B,WAAW,EAClD/8B,KAAKqO,OAAO0wB,IAAI/qB,GAAmBhU,KAAKq9B,YAAY,EACpDr9B,KAAKqO,OAAO0wB,IAAIvsB,GAAexS,KAAKu3D,aAAa,EACjDv3D,KAAKqO,OAAO0wB,IAAIK,GAAmBp/B,KAAKq/B,YAAY,EACpDr/B,KAAKqO,OAAO0wB,IAAIjP,GAAsB9vB,KAAKs/B,eAAe,EAC1Dt/B,KAAKqO,OAAO0wB,IAAIG,EAAqBl/B,KAAKm/B,iBAAiB,EAC3Dn/B,KAAKqO,OAAO0wB,IAAIQ,GAAmBv/B,KAAKs9B,YAAY,EACpDt9B,KAAKqO,OAAO0wB,IAAIrT,EAAkB1rB,KAAKw9B,aAAa,EACpDx9B,KAAKqO,OAAO0wB,IAAIyB,GAAkBxgC,KAAKw9B,aAAa,EACpDx9B,KAAKqO,OAAO0wB,IAAIE,GAAiBj/B,KAAK29B,UAAU,EAChD39B,KAAKqO,OAAO0wB,IAAI3kB,GAAmBpa,KAAKy2D,YAAY,EACpDz2D,KAAKqO,OAAO0wB,IAAI3qB,GAAgBpU,KAAKw9B,aAAa,EAClDx9B,KAAKqO,OAAO0wB,IAAIhI,GAAmB/2B,KAAK69B,YAAY,EACpD79B,KAAKqO,OAAO0wB,IAAIS,GAAsBx/B,KAAK89B,eAAe,EAC1D99B,KAAKqO,OAAO0wB,IAAIU,GAAqBz/B,KAAKs+B,cAAc,EACxDt+B,KAAKqO,OAAO0wB,IAAI7P,GAAmBlvB,KAAKm9B,YAAY,EACpDn9B,KAAKqO,OAAO0wB,IAAIjT,GAAkB9rB,KAAKo9B,WAAW,EAClDp9B,KAAKqO,OAAO0wB,IAAI5tB,GAAmBnR,KAAK6+B,YAAY,EACpD7+B,KAAKqO,OAAO0wB,IAAIjU,EAAyB9qB,KAAKkoD,kBAAkB,EAChEloD,KAAKqO,OAAO0wB,IAAI/V,GAAsBhpB,KAAKw+B,eAAe,EAC1Dx+B,KAAKqO,OAAO0wB,IAAI3U,GAAqBpqB,KAAKy+B,cAAc,EACxDz+B,KAAKqO,OAAO0wB,IAAIjhB,GAAiB9d,KAAKigC,UAAU,EAChDjgC,KAAKqO,OAAO0wB,IAAIzvB,GAAoBtP,KAAKkgC,aAAa,EACtDlgC,KAAKqO,OAAO0wB,IAAInf,GAAiB5f,KAAKq7B,UAAU,EAChDr7B,KAAKqO,OAAO0wB,IAAIC,GAAqBh/B,KAAKi9B,cAAc,EACxDj9B,KAAKqO,OAAO0wB,IAAIoB,EAAoBngC,KAAKogC,aAAa,EACtDpgC,KAAKqO,OAAO0wB,IAAIW,GAAqB1/B,KAAK2/B,cAAc,EACxD3/B,KAAKqO,OAAO0wB,IAAIe,GAAkB9/B,KAAKg4D,sBAAsB,EAC7Dh4D,KAAKqO,OAAO0wB,IAAIa,GAAuB5/B,KAAK62D,eAAe,EAC3D72D,KAAKqO,OAAO0wB,IAAIsB,GAAsBrgC,KAAK2+B,eAAe,EAC1D3+B,KAAKqO,OAAO0wB,IAAI1gB,GAAiBre,KAAKsgC,UAAU,EAChDtgC,KAAKqO,OAAO0wB,IAAIwB,GAA4BvgC,KAAK4+B,qBAAqB,GAE1EsxB,EAAYhwD,UAAUo/B,gBAAkB,WAAct/B,KAAK42D,YAAc,CAAA,GACzE1G,EAAYhwD,UAAUy/B,eAAiB,SAAUvuB,GACzCpR,KAAKqO,OAAOmB,eAAiBxP,KAAKu7B,kBAClCv7B,KAAKqO,OAAOiD,SAAW,CAACtR,KAAKgT,QAAQilD,WAAW7mD,EAAK9Q,MAAM,EAAEg3D,WAGrEpH,EAAYhwD,UAAU63D,YAAc,WAC5B/3D,KAAKqO,OAAOmB,eAAiBxP,KAAKu7B,kBAClCv7B,KAAKqO,OAAOiD,SAAuC,KAA3BtR,KAAKqO,OAAOuN,WAAqB5b,KAAKgT,QAAQmkD,qBAClE,CAACzkD,EAAc1S,KAAKqO,MAAM,KAGtC6hD,EAAYhwD,UAAUkgC,cAAgB,WAC9BpgC,KAAKqO,OAAOmB,eAAiBxP,KAAKu7B,kBACO,IAArCv7B,KAAKqO,OAAO+B,cAAczP,OAC1BX,KAAKqO,OAAOiD,SAAWtR,KAAKgT,QAAQmkD,qBAGpCn3D,KAAKqO,OAAOiD,SAAW,CAACjF,WAASrM,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAAIX,KAAKqO,OAAOI,QAAQ,KAIpHyhD,EAAYhwD,UAAUu6B,WAAa,SAAUrpB,GACzC,IAKIoF,EAcA0hD,EAlBAh9B,EADa9pB,EAAK6pB,OAAO36B,OACLuQ,QAAQ,UAAU,EAC1C,OAAKqqB,GAIDA,EAAOmV,uBAAuB,WAAW,EAAE,GAC3C75B,EAAOxW,KAAKqO,OAAOxB,MAAQ7M,KAAKgT,QAAQilD,WAAW/8B,CAAM,EAAEo8B,QAAQhrD,GAAK4uB,EAAOmV,uBAAuB,WAAW,EAAE,GAAG9F,UAEjHrP,EAAOmV,uBAAuB,0BAA0B,EAAE,GAAGnlB,qBAClE1U,EAAOxW,KAAKqO,OAAOxB,MAAQ7M,KAAKgT,QAAQilD,WAAW/8B,CAAM,EAAEo8B,QAAQhrD,GAAK4uB,EAAOmV,uBAAuB,0BAA0B,EAAE,GAAGnlB,mBAAmBqf,WAExJrP,GAAU,CAACA,EAAOnjB,cAAc,WAAW,GAC3C/X,KAAKs1D,cAAc,CAAC9+C,EAAK,EAE7B7G,GAAU3P,KAAKqO,OAAQ6sB,CAAM,EAC7Bl7B,KAAKqO,OAAOgB,eAAiB,GAC7BrP,KAAKqO,OAAOmO,SAAW,GACvBxc,KAAKqO,OAAOmO,SAAWxc,KAAKgT,QAAQmkD,sBAGhCe,EADgC,IAAhCl4D,KAAKqO,OAAOmO,SAAS7b,QAAgBu6B,EAC3Bl7B,KAAKgT,QAAQilD,WAAW/8B,CAAM,EAExCg9B,IACAl4D,KAAKqO,OAAOmO,SAASlP,KAAK4qD,EAAQZ,OAAO,EAE7Ct3D,KAAKqO,OAAOgO,SAAWrc,KAAKqO,OAAO1B,KACnC3M,KAAKqO,OAAOgB,eAAiBrP,KAAKgT,QAAQmlD,kBAC1C35C,GAAyBxe,KAAKqO,MAAM,EAC7BrO,KAAKqO,OAAO2Q,oBA1BR,MA6BfkxC,EAAYhwD,UAAU22D,gBAAkB,WACpC,GAAyB,YAArB72D,KAAKqO,OAAOgF,MAAsB,CAACrT,KAAKqO,OAAO8L,UAAY,CAAC1N,oBAAMzM,KAAKgT,OAAO,EAK9E,IAJA,IACIolD,EADap4D,KAAKgT,QAAQ4iD,mBAAmB79C,cAAc,kBAAkB,EAC7C6uC,WAAW1qB,WAAW,GACtDm8B,EAAsBr4D,KAAKgT,QAAQ+iD,aAAah+C,cAAc,qBAAqB,EAAEs1B,SAAS,GAC9FirB,EAAqBt4D,KAAKgT,QAAQs9C,aAC7BtvD,EAAI,EAAGA,EAAIs3D,EAAmB33D,OAAQK,CAAC,IACtChB,KAAK6yD,aAA+C,SAAhCyF,EAAmBt3D,GAAGW,QAAqD,eAAhC22D,EAAmBt3D,GAAGW,QACvB,KAA5D3B,KAAKqO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAiBjQ,KAAKqO,OAAO6B,WAW3ElQ,KAAKkN,QAAQk+B,aAAe,IACQ,SAAhCktB,EAAmBt3D,GAAGW,OACtBy2D,EAAmB/qB,SAASrsC,GAAG21B,aAAa,QAAS,cAAc,EACnE0hC,EAAoBhrB,SAASrsC,GAAG21B,aAAa,QAAS,cAAc,IAGpEyhC,EAAmB/qB,SAASrsC,GAAG21B,aAAa,QAAS,cAAc,EACnE0hC,EAAoBhrB,SAASrsC,GAAG21B,aAAa,QAAS,cAAc,GAGxC,IAA3B32B,KAAKkN,QAAQk+B,cAClBgtB,EAAmB/qB,SAASrsC,GAAG21B,aAAa,QAAS,aAAa,EAClE0hC,EAAoBhrB,SAASrsC,GAAG21B,aAAa,QAAS,aAAa,GAtBnE32B,KAAKkN,QAAQk+B,aAAe,KAC5BgtB,EAAmB/qB,SAASrsC,GAAG21B,aAAa,QAAS,cAAc,EACnE0hC,EAAoBhrB,SAASrsC,GAAG21B,aAAa,QAAS,cAAc,GAEpC,IAA3B32B,KAAKkN,QAAQk+B,cAClBgtB,EAAmB/qB,SAASrsC,GAAG21B,aAAa,QAAS,aAAa,EAClE0hC,EAAoBhrB,SAASrsC,GAAG21B,aAAa,QAAS,aAAa,KAuB3Fu5B,EAAYhwD,UAAU83D,uBAAyB,WAC3Ch4D,KAAK62D,kBACoB,YAArB72D,KAAKqO,OAAOgF,MAAuBrT,KAAKqO,OAAO8L,UAAa1N,oBAAMzM,KAAKgT,OAAO,GAC9EhT,KAAK+7C,gBAGbmU,EAAYhwD,UAAU64B,cAAgB,WAClC,IAAImB,EAAQl6B,KACRA,KAAKgT,UACDhT,KAAKqO,OAAO2R,kBAAoBnJ,oBAAkB7W,KAAK+f,OAAO,EAC9D/f,KAAK+f,QAAU,IAAIoa,YAAUn6B,KAAKgT,QAAQ9F,QAAS,CAC/CwtB,SAAU16B,KAAKqO,OAAOssB,mBACtBN,SAAU,EACVD,eAAgB,CAAA,EAChBQ,SAAU56B,KAAKqO,OAAOnB,QACtBqtB,WAAY,IAAM3pB,GAClBkqB,KAAM9Z,GAAgBiO,KAAKjvB,KAAMA,KAAKqO,MAAM,EAC5C2sB,UAAW,SAAU5pB,GACjB0O,GAAiBoa,EAAM7rB,OAAQ+C,EAAM8oB,EAAMna,OAAO,GAEtD8a,SAAU5b,GAAgBgQ,KAAKjvB,KAAMA,KAAKqO,MAAM,EAChDisB,iBAAkB,CAAA,EAClBE,OAAQx6B,KAAKy6B,WAAWxL,KAAKjvB,IAAI,EACpC,EAEI,CAACA,KAAKqO,OAAO2R,kBAAoBhgB,KAAK+f,UAC3C/f,KAAK+f,QAAQ3W,UACbpJ,KAAK+f,QAAU,QAI3BmwC,EAAYhwD,UAAUm7B,WAAa,SAAUjqB,GACzC,IAEQkqB,EAOAG,EATJz7B,KAAKqO,OAAOwF,eAAiB7T,KAAKu7B,kBAE9BD,EAAUjvB,WAASrM,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAAIX,KAAKqO,OAAOI,QAAQ,EACzF2C,EAAK9Q,OAAOuQ,QAAQ,IAAI,GAKrB4qB,EAAO,KACXA,EAAOz7B,KAAKgT,QAAQilD,WAAW7mD,EAAK9Q,MAAM,EAAEg3D,QAC5Ct3D,KAAKqO,OAAO7C,SAAWiwB,EAAK7Z,OAAS5hB,KAAKqO,OAAO1B,KAAO0J,GAAYrW,KAAKqO,OAAQotB,EAAMz7B,KAAKqO,OAAO1B,IAAI,EACvG3M,KAAKqO,OAAOwO,SAAW4e,EAAK7Z,OAAS0Z,EAAUG,IAP/Cz7B,KAAKqO,OAAO7C,SAAWxL,KAAKqO,OAAO1B,KACnC3M,KAAKqO,OAAOwO,SAAWye,KAUnC40B,EAAYhwD,UAAUggC,cAAgB,WAC9BlgC,KAAKqO,OAAOmB,eAAiBxP,KAAKu7B,kBAClCv7B,KAAKqO,OAAOyB,cAAgB9P,KAAKgT,QAAQmkD,qBACzCn3D,KAAKqO,OAAOgB,eAAiBrP,KAAKgT,QAAQmlD,oBAGlDjI,EAAYhwD,UAAU+/B,WAAa,SAAU7uB,GAChB,YAArBpR,KAAKqO,OAAOgF,OACZrT,KAAKk5B,iBAAmB,CAAA,EACpBl5B,KAAKqO,OAAO1B,OAAS3M,KAAKqO,OAAO2W,iBACjChlB,KAAKqO,OAAO1B,OAASoQ,GAAiB/c,KAAKqO,OAAQ+C,CAAI,GAAKpR,CAAAA,KAAKqO,OAAOxB,OACxE7M,KAAKw9B,cAAcpsB,CAAI,IAInC8+C,EAAYhwD,UAAUogC,WAAa,SAAUlvB,GAChB,YAArBpR,KAAKqO,OAAOgF,OACZrT,KAAKk5B,iBAAmB,CAAA,EACxBl5B,KAAKw9B,cAAcpsB,CAAI,IAS/B8+C,EAAYhwD,UAAUq7B,cAAgB,WAClC,MAAO,eAEX20B,EAAYhwD,UAAUkJ,QAAU,WACxBpJ,KAAKqO,OAAOywB,cAGhB9+B,KAAK82B,sBACD92B,KAAKgT,UACDhT,KAAKqO,OAAOmkD,SACZxyD,KAAKgT,QAAQ+rB,IAAI,sBAAuB/+B,KAAKyyD,mBAAmB,EAEpEzyD,KAAK62B,eACL72B,KAAKgT,QAAQ5J,aAGrB8mD,EAAYhwD,UAAUwiC,WAAa,SAAUvtB,GACrCquB,EAAS11B,SAAO,IAAMmH,GAAYE,CAAI,EAC1CnV,KAAKqO,OAAOuT,OAASnV,CAAAA,CAAAA,oBAAM+2B,CAAM,GAGrC0sB,EAAYhwD,UAAUywD,YAAc,SAAUxhD,EAAQiC,GAClD,IAAI4E,EAAY,CACZ7G,OAAQA,EAAQwG,YAAavE,EAAK/O,KAAM6wB,aAAclzB,KAAK42D,YAAaz3C,OAAQ,CAAA,EAAO7e,OAAQ8Q,EAAK9Q,QAExGN,KAAKqO,OAAOoH,QAAQ,gBAAiBO,CAAS,EAC9C5E,EAAK+N,OAASnJ,EAAUmJ,OACnBnf,KAAKu4D,gBACNv4D,KAAKu4D,cAAgB,CAAA,GAChBnnD,EAAKonD,gBAAkBpnD,EAAKqnD,gBAAkB,CAACz4D,KAAKqO,OAAOyyB,qBAAwB1vB,EAAK9Q,QAAU8Q,EAAK9Q,OAAO8gB,eAAiB,CAAChQ,EAAK9Q,OAAO8gB,cAAcnT,UAAUC,SAAS,oBAAoB,IAClMkD,EAAK+N,OAAS,CAAA,EACVk4C,EAAYjmD,GAAQA,EAAKsnD,WACvBtnD,EAAKsnD,WAAWtnD,EAAKsnD,WAAW/3D,OAAS,GACzCyQ,EAAKimD,SACXr3D,KAAKgT,QAAQ4kD,UAAUP,CAAQ,GAEnCr3D,KAAKu4D,cAAgB,CAAA,IAI7BrI,EAAYhwD,UAAU2/C,WAAa,SAAUzuC,GACzCpR,KAAKqO,OAAOmB,aAAe,cACtBxP,KAAKqO,OAAO2C,gBAAkBhR,CAAAA,KAAKqO,OAAO6B,YAC3ClQ,KAAK24D,kBAET34D,KAAKqO,OAAOW,OAAO8b,EAAyB,EAAE,EACM,IAAhD9qB,KAAKgT,QAAQ+hD,wBAAwBp0D,SACrCX,KAAK44D,eAAiB54D,KAAKgT,QAAQujD,kBAEvCv2D,KAAKgT,QAAQ9F,QAAQypB,aAAa,WAAY,IAAI,EAClD32B,KAAKojC,cAAc,SAAUhyB,CAAI,EACjC,IAAI+D,EAAOnV,KAAKgT,QAAQ6lD,cAAc74D,KAAKgT,QAAQujD,gBAAgB,EAa/DzB,GAZJ90D,KAAK0iC,WAAWvtB,CAAI,EACf1I,oBAAM0I,CAAI,GAAM1I,oBAAM0I,EAAK4C,cAAc,gBAAgB,CAAC,IACP,IAAhD/X,KAAKgT,QAAQ+hD,wBAAwBp0D,SACjC4pD,EAAgBvqD,KAAKgT,QAAQ+hD,wBAAwB/0D,KAAKgT,QAAQ+hD,wBAAwBp0D,OAAS,GACxFX,KAAKgT,QAAQ6lD,cAActO,CAAa,EAC9CxyC,cAAc,gBAAgB,EAAE4e,aAAa,WAAY,IAAI,GAE1ExhB,EAAK4C,cAAc,0BAA0B,EAAE2jB,gBAAgB,UAAU,GAExEjvB,oBAAMzM,KAAKgT,OAAO,GAAMvG,oBAAMzM,KAAKgT,QAAQ9F,QAAQ6K,cAAc,mBAAmB,CAAC,GACtF/X,KAAKgT,QAAQ9F,QAAQ6K,cAAc,mBAAmB,EAAE4e,aAAa,WAAY,IAAI,EAE9E32B,KAAKgT,QAAQ+hD,yBACxB,GAAI,CAAC/0D,KAAKqO,OAAOyyB,oBACb,IAAK,IAAI9/B,EAAI,EAAGA,EAAI8zD,EAAKn0D,OAAQK,CAAC,GAC1B8zD,EAAK9zD,KAAOhB,KAAKgT,QAAQujD,iBACzBv2D,KAAKgT,QAAQ6lD,cAAc/D,EAAK9zD,EAAE,EAAE21B,aAAa,WAAY,GAAG,EAGhE32B,KAAKgT,QAAQ6lD,cAAc/D,EAAK9zD,EAAE,EAAE06B,gBAAgB,UAAU,EAI1E,IAAIviB,EAAM27C,EAAKn0D,OAQXy7B,GAPAp8B,KAAKqO,OAAOiqB,qBACZt4B,KAAKqO,OAAOsT,gBAAkBtV,WAAS,OAAQ+E,EAAK/O,IAAI,EAE7C,EAAN8W,IACD9W,EAAOrC,KAAKgT,QAAQiiD,gBAAgBH,EAAK37C,EAAM,IAAI9W,KACvDrC,KAAKqO,OAAOsT,gBAAkBtV,WAAS,OAAQhK,CAAI,GAEzCgK,WAAS,aAAc+E,CAAI,GACrCmxB,EAAcl2B,WAAS,yBAA0BrM,KAAKgT,QAAQykD,eAAe,EAC7Ez3D,KAAKqO,OAAO0zB,UAAYt1B,oBAAM2vB,CAAO,GAAKhrB,EAAK9Q,QAAU,CAACiiC,GAAe,CAACnxB,EAAK9Q,OAAOuQ,QAAQ,eAAe,IAC7G7Q,KAAKqO,OAAOuT,OAASvV,WAAS,SAAU+E,EAAK/O,IAAI,EAC5CrC,KAAKqO,OAAOuT,QACb5hB,KAAKo3D,YAAYhmD,EAAK/O,IAAI,GAGlCrC,KAAKqO,OAAOkoB,YAAcnlB,EAAK+iD,IACzBn0D,KAAKqO,OAAOiqB,sBAA2BlnB,EAAK0nD,yBAC9C94D,KAAKmjC,SAASnjC,KAAKgT,QAAQujD,gBAAgB,EAE1Cv2D,KAAKqO,OAAO2C,iBACbhR,KAAKkzB,aAAe,CAAA,IAI5Bg9B,EAAYhwD,UAAU2+B,aAAe,WACR,YAArB7+B,KAAKqO,OAAOgF,MAAuB5G,oBAAMzM,KAAKgT,OAAO,GACW,KAA5DhT,KAAKqO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAiBjQ,KAAKqO,OAAO6B,YAC/ElQ,KAAKi3D,iBAAiB,CAAA,CAAK,GAIvC/G,EAAYhwD,UAAUy4D,gBAAkB,WACpC34D,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EAGrD,IAFA,IAAIuoD,EAAkB34D,KAAK+4D,kBACvBC,EAAa,EACVA,EAAaL,EAAgBh4D,QAAQ,CACxC,IAAIs4D,EAASN,EAAgBK,GACzBE,EAASz6C,GAAYze,KAAKqO,OAAQ4qD,CAAM,EAC5Cj5D,KAAKqO,OAAO+B,cAAc9C,KAAK4rD,CAAM,EACrCF,CAAU,GAEdh5D,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAepQ,KAAKqO,OAAO+B,eAAiB,CAAA,CAAI,GAEhF8/C,EAAYhwD,UAAU6wD,cAAgB,SAAU3/C,GAE5C,IAIQm5C,EAJJ,CAACvqD,KAAKqO,OAAOyyB,qBAAuBr0B,oBAAM2E,EAAK/O,IAAI,EACnDrC,KAAKgT,QAAQ6lD,cAAcznD,EAAKimD,QAAQ,EAAE37B,gBAAgB,UAAU,EAEjB,EAA9C17B,KAAKgT,QAAQ+hD,wBAAwBp0D,SACtC4pD,EAAgBvqD,KAAKgT,QAAQ+hD,wBAAwB/0D,KAAKgT,QAAQ+hD,wBAAwBp0D,OAAS,GACvGX,KAAKgT,QAAQ6lD,cAActO,CAAa,EAAExyC,cAAc,gBAAgB,EAAE2jB,gBAAgB,UAAU,GAElE,CAAC,IAAnC17B,KAAKgT,QAAQujD,kBACbv2D,KAAKgT,QAAQ9F,QAAQypB,aAAa,WAAY,GAAG,EAEhD32B,KAAKkzB,cAIVlzB,KAAK24D,kBACoC,IAArC34D,KAAKqO,OAAO+B,cAAczP,SAC1ByY,WAAS,yBAA0B,CAAA,EAAOpZ,KAAKgT,QAAQykD,eAAe,EACtEp0B,cAAY,CAACrjC,KAAKqO,OAAOnB,SAAUu1B,EAAgB,GAEvDziC,KAAKqO,OAAOW,OAAO8b,EAAyB,EAAE,EAC9C9qB,KAAKojC,cAAc,WAAYhyB,CAAI,EACnCpR,KAAKqO,OAAOkoB,YAAc,MAVtBv2B,KAAKkzB,aAAe,CAAA,GAY5Bg9B,EAAYhwD,UAAUkjC,cAAgB,SAAUj0B,EAAQiC,GAChD4E,EAAY,CAAE7G,OAAQA,EAAQwG,YAAavE,EAAK/O,KAAM6wB,aAAclzB,KAAK42D,aAC7E52D,KAAKqO,OAAOoH,QAAQ,aAAcO,CAAS,EAC3ChW,KAAK42D,YAAc,CAAA,GAEvB1G,EAAYhwD,UAAUu5B,WAAa,WAC/Bz5B,KAAK+gC,eAAe,CAAA,CAAI,EACxB/gC,KAAKghC,eAAiB,IAAIC,iBAAejhC,KAAKgT,QAAQ9F,QAAS,CAC3Dg0B,UAAWlhC,KAAKm5D,aAAalqC,KAAKjvB,IAAI,EACtCohC,WAAYphC,KAAKohC,WACjBnmB,UAAW,QACd,EACDjb,KAAKqhC,mBAAqB,IAAIJ,iBAAejhC,KAAKkN,QAAS,CACvDg0B,UAAWlhC,KAAKo5D,eAAenqC,KAAKjvB,IAAI,EACxCohC,WAAYphC,KAAKohC,WACjBnmB,UAAW,UACd,EACDsmB,eAAajxB,IAAItQ,KAAKgT,QAAQ9F,QAAS,OAAQlN,KAAKq5D,YAAar5D,IAAI,EACrEuhC,eAAajxB,IAAItQ,KAAKqO,OAAOnB,QAAS,WAAYlN,KAAKisC,OAAQjsC,IAAI,GAEvEkwD,EAAYhwD,UAAU22B,aAAe,WACjC72B,KAAK+gC,eAAe,CAAA,CAAK,EACzB/gC,KAAKghC,eAAe53B,UACpBpJ,KAAKqhC,mBAAmBj4B,UACxBm4B,eAAa5wB,OAAO3Q,KAAKgT,QAAQ9F,QAAS,OAAQlN,KAAKq5D,WAAW,EAClE93B,eAAa5wB,OAAO3Q,KAAKqO,OAAOnB,QAAS,WAAYlN,KAAKisC,MAAM,GAEpEikB,EAAYhwD,UAAU6gC,eAAiB,SAAUW,GAC7C,IAAIxH,EAAQl6B,KACR0hC,GACI7iB,EAAM7e,KAAKgT,QAAQ+iD,aACvB/1D,KAAK2hC,SAAW,IAAIC,QAAM/iB,EAAK,CAC3BgjB,IAAK,SAAUC,GACU,IAAjBA,EAAIE,UAAkBF,EAAIK,cAAc7hC,OAAO2N,UAAUC,SAAS,WAAW,GAC7EgsB,EAAMoE,kBAGdgE,QAAS,SAAUpV,GACXgN,EAAM7rB,OAAO0zB,WACb7U,EAAEiV,cAAc/N,iBACZ8F,EAAM7rB,OAAOyyB,sBACb1nB,WAAS,yBAA0B8gB,EAAM7rB,OAAOyyB,oBAAqB5G,EAAMlnB,QAAQykD,eAAe,EAClGj1B,WAAS,CAACtI,EAAM7rB,OAAOnB,SAAUu1B,EAAgB,GAEjDniC,EAAS4sB,EAAEiV,cAAc7hC,UAErB6zD,EAAMtjD,UAAQvQ,EAAQ,IAAMsQ,EAAO,EACnCmW,EAAQmT,EAAMlnB,QAAQ2kD,UAAUhjD,QAAQw/C,CAAG,EAC/Cj6B,EAAMlnB,QAAQ4kD,UAAU7wC,CAAK,IAI5C,GAGG/mB,KAAK2hC,UACL3hC,KAAK2hC,SAASv4B,WAK1B8mD,EAAYhwD,UAAU23D,gBAAkB,WACpCx0B,cAAY,CAACrjC,KAAKqO,OAAOnB,SAAUu1B,EAAgB,EACnDziC,KAAKgT,QAAQurB,iBACbv+B,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACrDpQ,KAAKqO,OAAOW,OAAO8b,EAAyB,EAAE,EACR,CAAC,IAAnC9qB,KAAKgT,QAAQujD,mBACbv2D,KAAKijC,WAAa,MAEtBjjC,KAAKkzB,aAAe,CAAA,GAExBg9B,EAAYhwD,UAAUm5D,YAAc,WAChCr5D,KAAKmjC,SAAS,IAAI,GAEtB+sB,EAAYhwD,UAAU+rC,OAAS,SAAU/e,GACrC,IAAyB,OAApBA,EAAEosC,eAA0BzoD,UAAQqc,EAAEosC,cAAe,SAAS,IAAMpsC,EAAEosC,gBAGvE,CAAC7sD,oBAAMzM,KAAKgT,QAAQ9F,OAAO,EAE3B,IADA,IAAIqsD,EAAav5D,KAAKgT,QAAQ9F,QAAQuD,iBAAiB,IAAI,EAClDzP,EAAI,EAAGA,EAAIu4D,EAAW54D,OAAQK,CAAC,GAChCu4D,EAAWv4D,GAAGiN,UAAUC,SAAS,SAAS,GAC1ClO,KAAKmjC,SAAS,IAAI,GAKlC+sB,EAAYhwD,UAAUs5D,oBAAsB,WACxC,OAAS/sD,oBAAMzM,KAAK0jC,gBAAgB,EACoC,KAApEn1B,SAASvO,KAAK0jC,iBAAiBn3B,aAAa,eAAe,EAAG,EAAE,GAGxE2jD,EAAYhwD,UAAUk5D,eAAiB,SAAUlsC,GAC7C,GAAKltB,KAAK45B,WAGV,OAAQ1M,EAAE/d,QACN,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,YACL,IAAK,aACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,WACL,IAAK,YACL,IAAK,SACL,IAAK,WACL,IAAK,YACL,IAAK,SACL,IAAK,WACL,IAAK,YACL,IAAK,SACL,IAAK,MACL,IAAK,MACL,IAAK,WACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,KACL,IAAK,WACL,IAAK,SACL,IAAK,QACD+d,EAAEkH,mBAOd87B,EAAYhwD,UAAUi5D,aAAe,SAAUjsC,GAC3C,GAAKltB,KAAK45B,WAAV,CAGA1M,EAAEkH,iBACF,IAyDgBihC,EACAoE,EACAC,EA3DZvqD,EAAS+d,EAAE/d,OACXwqD,EAAYljD,GAAczW,KAAKqO,OAAQrO,KAAKgT,QAAQC,UAAU,EAC9D2mD,EAAaD,EAAUh5D,OACvBk5D,EAAW75D,KAAKw5D,sBAChBM,EAAW95D,KAAKgT,QAAQujD,iBACxBwD,EAAgB/5D,KAAKgT,QAAQ+hD,wBAIjC,OAAQ5lD,GACJ,IAAK,WACDnP,KAAKqO,OAAOW,OAAOmxB,EAAoB,EAAE,EACzChb,GAAWnlB,KAAKqO,OAAQrO,KAAKqO,OAAO+B,cAAepQ,KAAKqO,OAAO1B,KAAM,SAAS,EAC9E,MACJ,IAAK,MACD+B,GAAa1O,KAAKqO,MAAM,EACxB,MACJ,IAAK,MACL,IAAK,WACDrO,KAAK2kC,gBACL,MACJ,IAAK,QACqC,CAAC,IAAnC3kC,KAAKgT,QAAQujD,kBAAyD,CAAA,IAA9Bv2D,KAAKgT,QAAQy9C,aAChDvjC,EAAE5sB,OAAO2N,UAAUC,SAAS,gBAAgB,IACzCqiD,EAAarjC,EAAE5sB,OAAO+vC,uBAAuB,aAAa,EAAE1vC,OAAuB,aAAd,YACrEq5D,EAAeh6D,KAAKgT,QAAQinD,eAAe/sC,EAAE5sB,OAAOyX,cAAc,kBAAkB,EAAExL,aAAa,cAAc,CAAC,EAAE5K,MACxH3B,KAAKgT,QAAQ9H,WAAW8uD,EAAczJ,CAAS,EAC1C9jD,oBAAMzM,KAAK0jC,iBAAiBw2B,WAAW,IACxCl6D,KAAK0jC,iBAAiBw2B,YAAYvjC,aAAa,WAAY,GAAG,GAMtE2gC,EADMt3D,KAAKgT,QAAQiiD,gBAAgBj1D,KAAKgT,QAAQujD,kBAAkBl0D,QAE9DA,EAAOkmB,KAAKyB,MAAMzB,KAAKC,UAAU8uC,CAAO,CAAC,EAC7Ct3D,KAAKo3D,YAAY/0D,CAAI,GAEzB,MACJ,IAAK,QACDgS,GAAUrU,KAAKqO,MAAM,EACrB,MACJ,IAAK,QACDrO,KAAKqO,OAAOuN,WAAa,GACzBF,GAAa1b,KAAKqO,MAAM,EACxB,MACJ,IAAK,QACDkG,GAASvU,KAAKqO,MAAM,EACpB,MACJ,IAAK,QACDrO,KAAKiiB,aACL,MACJ,IAAK,KACDjiB,KAAK4kC,gBACL,MACJ,IAAK,QACG,CAACn4B,oBAAMktD,EAAU,EAAE,GAAK35D,KAAKqO,OAAOyyB,sBAEhC24B,GADApE,EAAUr1D,KAAKgT,QAAQ+iD,aAAah+C,cAAc,YAAY,GAC1CgsB,UACpB21B,EAAgB15D,KAAKgT,QAAQujD,iBACjCv2D,KAAKgT,QAAQykD,gBAAgBC,kBAAkB,EAAGiC,EAAUh5D,OAAS,CAAC,EACtE00D,EAAQtxB,UAAY01B,EACE,CAAC,IAAnBC,IACA15D,KAAKmjC,SAASu2B,CAAa,EAGnC,MACJ,IAAK,WACL,IAAK,MACD,GAAI,CAACjtD,oBAAMktD,EAAU,EAAE,EACnB,GAAK35D,KAAKqO,OAAOyyB,qBAAoC,aAAb5T,EAAE/d,OAGrC,CAAA,GAAsC,CAAC,IAAnCnP,KAAKgT,QAAQujD,kBAAwC,QAAbrpC,EAAE/d,OAC/C,OAGAnP,KAAKm6D,eAAejtC,CAAC,OANrBltB,KAAKgT,QAAQ4kD,UAAU,CAAC,EAShC,MACJ,IAAK,UACInrD,oBAAMktD,EAAU,EAAE,IACd35D,KAAKqO,OAAOyyB,oBAIb9gC,KAAKmjC,SAASy2B,EAAa,CAAC,EAH5B55D,KAAKgT,QAAQ4kD,UAAUgC,EAAa,CAAC,GAM7C,MACJ,IAAK,YACL,IAAK,WACL,IAAK,SACL,IAAK,QACI55D,KAAKqO,OAAOyyB,oBAIRr0B,oBAAMktD,EAAU,EAAE,IACdltD,oBAAMqtD,CAAQ,GAAkB,CAAC,IAAdA,EAIH,WAAb5sC,EAAE/d,QAAoC,cAAb+d,EAAE/d,OAC3BnP,KAAKgT,QAAQ4kD,UAAU,CAAC,EAGxB53D,KAAKgT,QAAQykD,gBAAgBC,kBAAkB,EAAGiC,EAAUh5D,OAAS,CAAC,EAP1EX,KAAKo6D,aAAaT,EAAWG,EAAU,KAAM5sC,CAAC,GALtDltB,KAAKgT,QAAQ4kD,UAAwB,cAAb1qC,EAAE/d,QAAuC,WAAb+d,EAAE/d,OAAuB,EAAIwqD,EAAUh5D,OAAS,CAAC,EAiBzG,MACJ,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,YACDX,KAAKq6D,eAAeN,EAAeF,EAAUC,EAAU5sC,CAAC,EACxD,MACJ,IAAK,OACL,IAAK,SACL,IAAK,UACL,IAAK,YACDltB,KAAKs6D,gBAAgBX,EAAWG,EAAUD,EAAUE,EAAe7sC,CAAC,EACpE,MACJ,IAAK,SACL,IAAK,WACIltB,KAAKqO,OAAOyyB,oBAIb9gC,KAAKu6D,iBAAiBZ,EAAWzsC,EAAG4sC,CAAQ,EAH5C95D,KAAKw6D,aAAab,EAAWzsC,EAAG4sC,CAAQ,EAK5C,MACJ,IAAK,OACDn2B,EAAY,CAACt3B,WAASrM,KAAKqO,OAAOxB,MAAQ,KAAO,OAAQ8sD,EAAU,EAAE,GACrE35D,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAeuzB,GAAa,CAAA,CAAI,EAC5D3jC,KAAKs1D,cAAc3xB,CAAS,EAC5B,MACJ,IAAK,SACL,IAAK,WACD3jC,KAAKw6D,aAAab,EAAWzsC,EAAG4sC,CAAQ,EACxC,MACJ,IAAK,MACD/7B,EAAW,CAAC1xB,WAASrM,KAAKqO,OAAOxB,MAAQ,KAAO,OAAQ8sD,EAAUC,EAAa,EAAE,GACjF55D,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe2tB,GAAY,CAAA,CAAI,EAC3D/9B,KAAKs1D,cAAcv3B,CAAQ,EAC3B,MACJ,IAAK,OACD/9B,KAAKqO,OAAOw2B,sBAIxBqrB,EAAYhwD,UAAU64D,gBAAkB,WACpC,OAAO/4D,KAAKgT,QAAQmkD,sBAExBjH,EAAYhwD,UAAU+hB,WAAa,WAC/B,GAAyC,IAArCjiB,KAAKqO,OAAO+B,cAAczP,OAAc,CACxCX,KAAKqO,OAAOiD,SAAWtR,KAAKgT,QAAQmkD,qBAEpC,IADA,IAAIzgD,EAAQ1W,KAAKqO,OAAOiD,SACftQ,EAAI,EAAGA,EAAI0V,EAAM/V,OAAQK,CAAC,GAC/B,GAAI,CAACkhB,GAAkBxL,EAAM1V,EAAE,EAE3B,OADAiT,KAAAA,EAAmBjU,KAAKqO,OAAQqI,EAAM1V,GAAImhB,EAAyB,EAI3EC,GAASpiB,KAAKqO,OAAQrO,KAAKqO,OAAO1B,KAAM3M,KAAKqO,OAAO+B,aAAa,IAGzE8/C,EAAYhwD,UAAUykC,cAAgB,WAClC,GAAI3kC,KAAKqO,OAAO+B,eAAoD,EAAnCpQ,KAAKqO,OAAO+B,cAAczP,OAAY,CACnEX,KAAKqO,OAAOiD,SAAWtR,KAAKgT,QAAQmkD,qBAEpC,IADA,IAAIzgD,EAAQ1W,KAAKqO,OAAOiD,SACftQ,EAAI,EAAGA,EAAI0V,EAAM/V,OAAQK,CAAC,GAC/B,GAAI,CAAC+gB,EAAcrL,EAAM1V,EAAE,EAEvB,OADAiT,KAAAA,EAAmBjU,KAAKqO,OAAQqI,EAAM1V,GAAIghB,CAAqB,EAIvE/F,EAAajc,KAAKqO,OAAQ,QAAQ,IAG1C6hD,EAAYhwD,UAAU0kC,cAAgB,WACO,IAArC5kC,KAAKqO,OAAO+B,cAAczP,SAC1BX,KAAKu9B,mBACLzb,GAAS9hB,KAAKqO,MAAM,IAG5B6hD,EAAYhwD,UAAUq9B,iBAAmB,WACrC,IAAIl7B,EAAOrC,KAAK+4D,kBAAkB,GAClCr3C,GAAmB1hB,KAAKqO,OAAQhM,CAAI,GAExC6tD,EAAYhwD,UAAUo6D,gBAAkB,SAAUX,EAAWG,EAAUD,EAAUE,EAAe7sC,GACvFltB,KAAKqO,OAAOyyB,oBAII,CAAC,IAAdg5B,GAAiC,SAAb5sC,EAAE/d,QAAkC,WAAb+d,EAAE/d,OAG3B,CAAC,IAAd2qD,GAAmBD,IAAaC,IACrB,SAAb5sC,EAAE/d,QAAkC,WAAb+d,EAAE/d,SAAwBnP,KAAKy6D,WAAWV,EAAeF,CAAQ,EAI3F75D,KAAK06D,kBAAkBZ,EAAUC,EAAeJ,EAAWzsC,CAAC,EAH5DltB,KAAK26D,qBAAqBb,EAAUD,EAAUE,EAAe7sC,CAAC,EAJ9DltB,KAAKu6D,iBAAiBZ,EAAWzsC,EAAG4sC,CAAQ,EAJhD95D,KAAKw6D,aAAab,EAAWzsC,EAAG4sC,CAAQ,GAehD5J,EAAYhwD,UAAUs6D,aAAe,SAAUpqD,EAAe8c,EAAGmqC,GACzD,CAAC5qD,oBAAMzM,KAAK0jC,gBAAgB,GAAK1jC,KAAKqO,OAAOyyB,oBAC5B,aAAb5T,EAAE/d,OACFnP,KAAKgT,QAAQ4kD,UAAU53D,KAAKw5D,sBAAwB,CAAC,EAGrDx5D,KAAKgT,QAAQ4kD,UAAU53D,KAAKw5D,sBAAwB,CAAC,EAGnD/sD,oBAAM4qD,CAAQ,GAAkB,CAAC,IAAdA,EASpB5qD,oBAAM2D,EAAc,EAAE,GACvBpQ,KAAKgT,QAAQ4kD,UAAU,CAAC,EATX,aAAb1qC,EAAE/d,QAAsC,aAAb+d,EAAE/d,QAAsC,cAAb+d,EAAE/d,QAAuC,WAAb+d,EAAE/d,OACpFnP,KAAKgT,QAAQ4kD,UAAUP,GAAaA,IAAajnD,EAAczP,OAAS,EAAK,EAAI,EAAE,EAGnFX,KAAKgT,QAAQ4kD,UAAUP,GAA0B,IAAbA,EAAkB,EAAI,EAAE,GASxEnH,EAAYhwD,UAAUm6D,eAAiB,SAAUN,EAAeF,EAAUC,EAAU5sC,GAChF,IAaQ2Y,EAbH7lC,KAAKy6D,WAAWV,EAAeF,CAAQ,GAAkB,CAAC,IAAdC,GAAiC,eAAb5sC,EAAE/d,QAAwC,YAAb+d,EAAE/d,OAQ1F1C,oBAAMzM,KAAK0jC,gBAAgB,GAAKm2B,IAAaC,EAIjC,CAAC,IAAdA,GAAgC,cAAb5sC,EAAE/d,QAA0BnP,KAAKqO,OAAOyyB,qBAC5D+E,EAAQi0B,EACZC,EAAchvC,MACd/qB,KAAKgT,QAAQg+B,WAAW+oB,CAAa,EACrC/5D,KAAKmjC,SAAS0C,CAAK,GAED,eAAb3Y,EAAE/d,QACPnP,KAAKgT,QAAQ4kD,UAAUkC,CAAQ,GAV/BC,EAAczsD,KAAKtN,KAAKw5D,qBAAqB,EAC7Cx5D,KAAKgT,QAAQg+B,WAAW+oB,CAAa,GATjCF,EAAWC,EACX95D,KAAKgT,QAAQykD,gBAAgBC,kBAAkBmC,EAAUC,CAAQ,EAGjE95D,KAAKgT,QAAQykD,gBAAgBC,kBAAkBoC,EAAUD,CAAQ,GAiB7E3J,EAAYhwD,UAAUq6D,iBAAmB,SAAU7jD,EAAOwW,EAAGmqC,GACzD,IAGIhyB,EAFC54B,oBAAMzM,KAAK0jC,gBAAgB,EAKtBj3B,oBAAM4qD,CAAQ,GAAkB,CAAC,IAAdA,EAKpB5qD,oBAAMiK,EAAM,EAAE,IACf2uB,EAAW,GALfA,EAAyB,aAAbnY,EAAE/d,QAAsC,WAAb+d,EAAE/d,OACrCkoD,GAAaA,EAAW3gD,EAAM/V,OAAU,EAAI,GAAK02D,GAAaA,EAAW,EAAK,EAAI,IANlFuD,EAAY56D,KAAKw5D,sBACrBn0B,EAAyB,aAAbnY,EAAE/d,QAAsC,WAAb+d,EAAE/d,OACrCyrD,GAAcA,EAAYlkD,EAAM/V,OAAS,EAAK,EAAI,GAAKi6D,GAAcA,EAAY,EAAK,EAAI,IAWlG56D,KAAKmjC,SAASkC,CAAQ,GAE1B6qB,EAAYhwD,UAAUk6D,aAAe,SAAU1jD,EAAOmkD,EAAYhB,EAAU3sC,GACtC,YAA9BltB,KAAKgT,QAAQ8nD,cAA4D,iBAA9B96D,KAAKgT,QAAQ8nD,aACvC,WAAb5tC,EAAE/d,QAAoC,UAAb+d,EAAE/d,QACvB1C,oBAAMzM,KAAKijC,UAAU,GAAKjjC,KAAK44D,iBAAmBiC,IAClD76D,KAAK44D,eAAiBiC,GAET,aAAb3tC,EAAE/d,OACFnP,KAAKgT,QAAQykD,gBAAgBC,kBAAkB13D,KAAK44D,eAAgBliD,EAAM/V,OAAS,CAAC,EAGpFX,KAAKgT,QAAQykD,gBAAgBC,kBAAkB,EAAG13D,KAAK44D,cAAc,EAEzE54D,KAAKijC,WAAa43B,GAGD,UAAb3tC,EAAE/d,OACFnP,KAAKgT,QACDg+B,WAAWhxC,KAAK+6D,WAAWtuD,oBAAMouD,CAAU,EAAI,EAAIA,EAAYpuD,oBAAMotD,CAAQ,EAAInjD,EAAM/V,OAAS,EAAIk5D,EAAU3sC,CAAC,CAAC,EAGhHzgB,oBAAMouD,CAAU,EAChB76D,KAAKgT,QAAQ4kD,UAAU,CAAC,EAGxB53D,KAAKgT,QAAQg+B,WAAWhxC,KAAK+6D,WAAWtuD,oBAAMotD,CAAQ,EAAI,EAAIA,EAAUgB,EAAY3tC,CAAC,CAAC,EAMlGltB,KAAKgT,QAAQykD,gBAAgBG,UAAyB,cAAb1qC,EAAE/d,QAAuC,WAAb+d,EAAE/d,OAAuB,EAAIuH,EAAM/V,OAAS,IAGzHuvD,EAAYhwD,UAAU66D,WAAa,SAAUt3B,EAAOoC,EAAO3Y,GACvD,IAAI8tC,EAAUh7D,KAAKgT,QAAQ+hD,wBAC3B,GAAiB,UAAb7nC,EAAE/d,OACF,IAAK,IAAInO,EAAIyiC,EAAQ,EAAGziC,GAAK6kC,EAAO7kC,CAAC,GACjCg6D,EAAQ1tD,KAAKtM,CAAC,OAIlB,IAASA,EAAI6kC,EAAQ,EAAGpC,GAASziC,EAAGA,CAAC,GACjCg6D,EAAQ1tD,KAAKtM,CAAC,EAGtB,OAAOg6D,GAEX9K,EAAYhwD,UAAUy6D,qBAAuB,SAAUb,EAAUmB,EAAQC,EAAehuC,GAChF2Y,GAAgC,cAAb3Y,EAAE/d,QAAuC,WAAb+d,EAAE/d,OAAuB,EAAI,CAAC,EAC7Es0B,EAAQh3B,oBAAMzM,KAAKijC,UAAU,EAAI62B,EAAWoB,EAAc,GAC1Dz3B,IAAUoC,EACV7lC,KAAKgT,QAAQ4kD,UAAUn0B,CAAK,EAGxBA,EAAQoC,EACS,cAAb3Y,EAAE/d,QAAuC,WAAb+d,EAAE/d,OAC9BnP,KAAKgT,QAAQykD,gBAAgBC,kBAAkBj0B,EAAOoC,CAAK,EAG3D7lC,KAAKgT,QAAQykD,gBAAgBC,kBAAkB7xB,EAAOpC,CAAK,EAG7C,cAAbvW,EAAE/d,QAAuC,WAAb+d,EAAE/d,OACnCnP,KAAKgT,QAAQykD,gBAAgBC,kBAAkB7xB,EAAOpC,CAAK,EAG3DzjC,KAAKgT,QAAQykD,gBAAgBC,kBAAkBj0B,EAAOoC,CAAK,EAGnE7lC,KAAKijC,WAAajjC,KAAKgT,QAAQujD,kBAEnCrG,EAAYhwD,UAAUijC,SAAW,SAAUhuB,GACvC,IAAIsuB,EAAQzjC,KAAK0jC,iBACby3B,EAAcn7D,KAAKgT,QAAQ6lD,cAAc1jD,CAAI,EAC7CsuB,IACAA,EAAM/H,gBAAgB,UAAU,EAChC2H,cAAY,CAACI,GAAQ,CAACqB,GAAWs2B,GAAY,GAE5C3uD,oBAAM0uD,CAAW,IAClBn7D,KAAKgT,QAAQ9F,QAAQypB,aAAa,WAAY,IAAI,EAClDwkC,EAAYxkC,aAAa,WAAY,GAAG,EACxCwkC,EAAYpsC,QACZyT,WAAS,CAAC24B,GAAc,CAACr2B,GAAWs2B,GAAY,IAGxDlL,EAAYhwD,UAAUi6D,eAAiB,SAAUjtC,GAC7C,IAEImuC,EAFAC,EAAYxtD,SAAO,SAAU9N,KAAKkN,OAAO,EAC7ClN,KAAKgT,QAAQ9F,QAAQypB,aAAa,WAAY,IAAI,EAE9C,CAAClqB,oBAAMygB,EAAE5sB,MAAM,GAAK4sB,EAAE5sB,OAAO2N,UAAUC,SAAS,iBAAiB,GACjElO,KAAKmjC,SAAS,CAAC,EACfk4B,EAAYnuC,EAAE5sB,OAAO4qB,oBAEfze,oBAAMzM,KAAKgT,QAAQ9F,QAAQ6K,cAAc,UAAU,CAAC,GAAiE,OAA3D/X,KAAKgT,QAAQ9F,QAAQ6K,cAAc,UAAU,EAAEwjD,QAK/GF,EAAYvtD,SAAO,oBAAqB9N,KAAKkN,OAAO,GAJpDmuD,EAAYr7D,KAAKgT,QAAQ9F,QAAQ6K,cAAc,UAAU,EAAEmT,mBAC3DlrB,KAAKmjC,SAAS,CAAC,GAKd12B,oBAAM4uD,CAAS,IAChBA,EAAU1kC,aAAa,WAAY,GAAG,EACtC0kC,EAAUtsC,QACVyT,WAAS,CAAC64B,GAAY,CAACv2B,GAAWs2B,GAAY,EAC9CE,EAAU3kC,aAAa,WAAY,GAAG,EACX,IAAvB2kC,EAAUrT,UAAyC,IAAvBoT,EAAUpT,UACtC5kB,cAAY,CAACi4B,GAAY,CAACx2B,GAAWs2B,GAAY,IAI7DlL,EAAYhwD,UAAUwjC,eAAiB,WACnC,OAAO51B,SAAO,IAAMstD,GAAap7D,KAAKkN,OAAO,GAEjDgjD,EAAYhwD,UAAUu6D,WAAa,SAAUS,EAAerB,GAExD,IADA,IAAI2B,EAAQ,CAAA,EACHx6D,EAAI,EAAGA,GAAKk6D,EAAcv6D,OAAS,EAAGK,CAAC,GAC5C,GAAIk6D,EAAcl6D,KAAO64D,EAAU,CAC/B2B,EAAQ,CAAA,EACR,MAGR,OAAOA,GAEXtL,EAAYhwD,UAAUw6D,kBAAoB,SAAUZ,EAAUoB,EAAevB,EAAWzsC,GACnE,CAAC,IAAd4sC,EACA95D,KAAKgT,QAAQ4kD,UAAU,CAAC,EAGpBnrD,oBAAMzM,KAAKijC,UAAU,GAAK/V,EAAEkR,UAC5Bp+B,KAAKijC,WAAajjC,KAAKgT,QAAQujD,iBAC/Bv2D,KAAKgT,QAAQg+B,WAAW,CAAC8oB,EAAwB,cAAb5sC,EAAE/d,QAAuC,WAAb+d,EAAE/d,OACzD2qD,GAAaA,IAAaH,EAAUh5D,OAAS,EAAK,EAAI,GAAOm5D,GAA0B,IAAbA,EAAkB,EAAI,GAAI,GAG5F,cAAb5sC,EAAE/d,QAAuC,YAAb+d,EAAE/d,QACb,cAAb+d,EAAE/d,QAAkE,CAAC,IAAzC+rD,EAAcvmD,QAAQmlD,EAAW,CAAC,EAC1DA,IAAaH,EAAUh5D,OAAS,GAChCu6D,EAAc5tD,KAAKwsD,EAAW,CAAC,EAGjB,YAAb5sC,EAAE/d,QAAgE,CAAC,IAAzC+rD,EAAcvmD,QAAQmlD,EAAW,CAAC,EAChD,IAAbA,GACAoB,EAAc5tD,KAAKwsD,EAAW,CAAC,EAInCoB,EAAcnwC,MAElB/qB,KAAKgT,QAAQg+B,WAAWkqB,CAAa,GAGpB,WAAbhuC,EAAE/d,OACGnP,KAAKy6D,WAAWS,EAAel7D,KAAKw5D,sBAAwB,CAAC,EAK9Dx5D,KAAKmjC,SAASnjC,KAAKw5D,sBAAwB,CAAC,GAJ5C0B,EAAc5tD,KAAMtN,KAAKw5D,sBAAwB,GACjDx5D,KAAKgT,QAAQg+B,WAAWkqB,CAAa,GAMnCl7D,KAAKy6D,WAAWS,EAAel7D,KAAKw5D,sBAAwB,CAAC,EAKnEx5D,KAAKmjC,SAASnjC,KAAKw5D,sBAAwB,CAAC,GAJ5C0B,EAAc5tD,KAAMtN,KAAKw5D,sBAAwB,GACjDx5D,KAAKgT,QAAQg+B,WAAWkqB,CAAa,IASzDhL,EAAYhwD,UAAUm/B,aAAe,SAAUnS,GAC3C,GAAyB,YAArBltB,KAAKqO,OAAOgF,KAIhB,OADahH,WAAS,SAAU6gB,CAAC,GAE7B,IAAK,cACDltB,KAAK0mC,YAAYr6B,WAAS,MAAO6gB,CAAC,CAAC,EACnC,MACJ,IAAK,gBACDltB,KAAK2mC,cAAct6B,WAAS,MAAO6gB,CAAC,CAAC,EACrC,MACJ,IAAK,WACDltB,KAAK4mC,SAASv6B,WAAS,KAAM6gB,CAAC,CAAC,EAC/B,MACJ,IAAK,eACDltB,KAAK42D,YAAc,CAAA,EACnB,MACJ,IAAK,aACD52D,KAAK42D,YAAc,CAAA,EACnB52D,KAAK6mC,WAAWx6B,WAAS,KAAM6gB,CAAC,EAAG7gB,WAAS,UAAW6gB,CAAC,CAAC,EACzD,MACJ,IAAK,YACDltB,KAAK42D,YAAc,CAAA,EACnB52D,KAAK89B,kBACL,MACJ,IAAK,iBACD99B,KAAK42D,YAAc,CAAA,EACnB52D,KAAKs+B,mBAIjB4xB,EAAYhwD,UAAUu7D,WAAa,SAAUprD,GACzC,IAAI8lD,EAAcn2D,KAAKgT,QAAQojD,wBAC3B73C,EAAU,GACVm9C,EAAY,EAA6D,KAA5D17D,KAAKqO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAgBjQ,CAAAA,KAAKqO,OAAO6B,YAC3F2B,EAAS7R,KAAKqO,OAAOxB,MAAQ,KAAO,OACxC,GAAI7M,KAAKqO,OAAOxB,OAAS,CAAC6uD,EACtB,IAAK,IAAI16D,EAAI,EAAGmY,EAAMg9C,EAAYx1D,OAAQK,EAAImY,EAAKnY,CAAC,GACQ,CAAC,IAArDqP,EAAMsE,QAAQtI,WAASwF,EAAQskD,EAAYn1D,EAAE,CAAC,GAC9Cud,EAAQjR,KAAK6oD,EAAYn1D,EAAE,OAKnC,IAASA,EAAI,EAAGmY,EAAMg9C,EAAYx1D,OAAQK,EAAImY,EAAKnY,CAAC,GAAI,CACpD,IAAI26D,EAAStvD,WAAS,aAAc8pD,EAAYn1D,EAAE,EAAIqL,WAAS,OAAQ8pD,EAAYn1D,EAAE,EACvD,CAAC,IAA3BqP,EAAMsE,QAAQgnD,CAAM,GACpBp9C,EAAQjR,KAAK6oD,EAAYn1D,EAAE,EAIvC,OAAOud,GAEX2xC,EAAYhwD,UAAUwmC,YAAc,SAAUr5B,GAE1C,GADArN,KAAKqO,OAAOmB,aAAe,cACvB/C,oBAAMY,CAAG,EACTrN,KAAK2kC,oBADT,CAIA,IAAIpmB,EAAUve,KAAKy7D,WAAWpuD,CAAG,EACjC,GAAuB,IAAnBkR,EAAQ5d,OAAZ,CAKA,IAFA,IAAI0B,EAAO,GACPigB,EAAS,GACJthB,EAAI,EAAGA,EAAIud,EAAQ5d,OAAQK,CAAC,GACjCqB,EAAKrB,GAAKud,EAAQvd,GAClBshB,EAAOthB,GAAKyd,GAAYze,KAAKqO,OAAQhM,EAAKrB,EAAE,EAEhDqhB,GAAcriB,KAAKqO,OAAQhM,EAAMigB,CAAM,KAE3C4tC,EAAYhwD,UAAUymC,cAAgB,SAAUt5B,GAC5C,GAAIZ,oBAAMY,CAAG,EACTrN,KAAKiiB,iBADT,CAIA,IAAI25C,EAAW57D,KAAKy7D,WAAWpuD,CAAG,EAClC,GAAwB,IAApBuuD,EAASj7D,OAAb,CAKA,IAFA,IAAI0B,EAAO,GACPigB,EAAS,GACJthB,EAAI,EAAGA,EAAI46D,EAASj7D,OAAQK,CAAC,GAClCqB,EAAKrB,GAAK46D,EAAS56D,GACnBshB,EAAOthB,GAAKyd,GAAYze,KAAKqO,OAAQhM,EAAKrB,EAAE,EAEhDwhB,GAAgBxiB,KAAKqO,OAAQhM,EAAMigB,CAAM,KAE7C4tC,EAAYhwD,UAAU0mC,SAAW,SAAUt6B,GACnCG,oBAAMH,CAAE,GAIS,GADjBiS,EAAUve,KAAKy7D,WAAW,CAACnvD,EAAG,GACtB3L,QACRX,KAAKo3D,YAAY74C,EAAQ,EAAE,GAGnC2xC,EAAYhwD,UAAU2mC,WAAa,SAAUv6B,EAAIkK,GAC7CxW,KAAKqO,OAAOmB,aAAe,cACvB/C,oBAAMH,CAAE,EACRtM,KAAK4kC,gBAIY,GADjBrmB,EAAUve,KAAKy7D,WAAW,CAACnvD,EAAG,GACtB3L,SACR+gB,GAAmB1hB,KAAKqO,OAAQkQ,EAAQ,EAAE,EACrC9R,oBAAM+J,CAAI,EASXsL,GAAS9hB,KAAKqO,MAAM,EARhB0T,EAAc/hB,KAAKqO,OAAOiD,SAAS,EAAE,EACrCiT,GAAOvkB,KAAKqO,OAAQrO,KAAKqO,OAAO1B,KAAM6J,CAAI,EAG1CvC,EAAmBjU,KAAKqO,OAAQrO,KAAKqO,OAAOiD,SAAS,GAAI0Q,CAAqB,QA74D9FkuC,GAq5DOA,EA94DP,SAASA,EAAY7hD,GACjBrO,KAAKkzB,aAAe,CAAA,EACpBlzB,KAAK42D,YAAc,CAAA,EACnB52D,KAAKk5B,iBAAmB,CAAA,EACxBl5B,KAAKg0D,gBAAkB,CAAA,EACvBh0D,KAAK+f,QAAU,KACf/f,KAAKijC,WAAa,KAClBjjC,KAAK44D,eAAiB,KACtB54D,KAAKw1D,kBAAoB,CAAA,EACzBx1D,KAAKy1D,oBAAsB,GAC3Bz1D,KAAKud,MAAQ,EACbvd,KAAK45B,WAAa,CAAA,EAClB55B,KAAKk2D,SAAW,CAAA,EAChBl2D,KAAK6yD,YAAc,CAAA,EACnB7yD,KAAKu4D,cAAgB,CAAA,EACrBv4D,KAAK4kB,eAAiB,CAAA,EACtB5kB,KAAKo5B,gBAAkB,CAAA,EACvBo3B,OAAKlL,OAAOuW,SAAQrtB,cAAastB,OAAMC,eAAa,EACpD/7D,KAAKqO,OAASA,EACdrO,KAAKkN,QAAUY,SAAO,IAAM9N,KAAKqO,OAAOnB,QAAQZ,GAAKulC,GAAa7xC,KAAKqO,OAAOnB,OAAO,EACrFlN,KAAKw5B,mBACLx5B,KAAKohC,WAAa,CACd6H,SAAU,YACVC,IAAK,SACL9B,IAAK,MACLC,SAAU,YACVI,QAAS,WACTC,SAAU,YACVC,SAAU,iBACVC,SAAU,iBACVC,UAAW,kBACXE,SAAU,YACVC,UAAW,aACXC,UAAW,kBACXG,QAAS,gBACTN,OAAQ,eACRO,MAAO,iBACPC,OAAQ,kBACRC,OAAQ,uBACRG,KAAM,qBACNC,MAAO,QACPC,UAAW,aACXC,WAAY,cACZC,QAAS,mBACT5B,IAAK,MACLC,KAAM,OACNK,OAAQ,UACR2B,IAAK,SACLC,MAAOppC,KAAKqO,OAAOg7B,MAAQ,QAAU,SACrCC,MAAOtpC,KAAKqO,OAAOg7B,MAAQ,QAAU,SACrCE,MAAOvpC,KAAKqO,OAAOg7B,MAAQ,QAAU,SACrC2mB,WAAY,eACZvmB,SAAU,eACVE,MAAO,SACPH,GAAI,KACJT,MAAO,SACPC,MAAO,QACPU,KAAM,wCblES,oKAiMJ,2IAZI,0fAgBG,uHAxBJ,uCAEC,0HAED,qDAdA,sPApDU,gFAEL,4TAzGF,2BAgBP,sDA6DD,qDA8BO,sBAvGL,wBAIE,oCAyKL,+HAhEO,gCAJD,2LAvGL,gHCbK,iCAwFE,6hBA9DN,uEAwEE,2xBAjHJ,oWA+HQ,mlBCpHrB,SAAsBsyB,EAAW5jC,GAEpC,IAAI6jC,EAAkB,QAAQtnC,KAAKqnC,CAAS,EACxCE,EAAiB,QAAQvnC,KAAKyD,CAAQ,EAE1C,GAAI6jC,GAAmB,CAACC,EACpB,OAAO,EAEX,GAAI,CAACD,GAAmBC,EACpB,MAAO,CAAC,EAEZ,IAAIC,EAAiB,GACjBC,EAAgB,GAIpB,KAHCJ,EAAY,IAAI9lD,QAAQ,eAAgB,SAAUmmD,EAAGC,EAAIC,GAAuD,OAAjDJ,EAAe7uD,KAAK,CAACgvD,GAAME,EAAAA,EAAUD,GAAM,GAAG,EAAU,GAAK,GAC5HnkC,EAAW,IAAIliB,QAAQ,eAAgB,SAAUmmD,EAAGC,EAAIC,GAAsD,OAAhDH,EAAc9uD,KAAK,CAACgvD,GAAME,EAAAA,EAAUD,GAAM,GAAG,EAAU,GAAK,EAEpHJ,EAAex7D,QAAUy7D,EAAcz7D,QAAQ,CAClD,IAAI87D,EAAgBN,EAAeO,QAC/BC,EAAeP,EAAcM,QACjC,GAAID,GAAiBE,EAAc,CAC3BC,EAAmBH,EAAc,GAAKE,EAAa,IACnDF,EAAc,GAAGI,cAAcF,EAAa,EAAE,EAClD,GAAIC,EACA,OAAOA,GAInB,OAAOT,EAAex7D,OAASy7D,EAAcz7D,MACjD,2DDwDwB,mIA5DJ"}
|
1
|
+
{"version":3,"file":"ej2-filemanager.umd.min.js","sources":["../src/file-manager/models/ajax-settings.js","../src/file-manager/models/toolbar-settings.js","../src/file-manager/models/search-settings.js","../src/file-manager/models/details-view-settings.js","../src/file-manager/models/contextMenu-settings.js","../src/file-manager/models/navigation-pane-settings.js","../src/file-manager/models/upload-settings.js","../src/file-manager/models/column.js","../src/file-manager/base/classes.js","../src/file-manager/base/constant.js","../src/file-manager/common/utility.js","../src/file-manager/common/operations.js","../src/file-manager/pop-up/dialog.js","../src/file-manager/layout/large-icons-view.js","../src/file-manager/actions/breadcrumb-bar.js","../src/file-manager/pop-up/context-menu.js","../src/file-manager/models/default-locale.js","../src/file-manager/base/file-manager.js","../src/file-manager/actions/toolbar.js","../src/file-manager/actions/virtualization.js","../src/file-manager/layout/navigation-pane.js","../src/file-manager/layout/details-view.js"],"sourcesContent":["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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar AjaxSettings = /** @class */ (function (_super) {\n __extends(AjaxSettings, _super);\n function AjaxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"downloadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"getImageUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"uploadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"url\", void 0);\n return AjaxSettings;\n}(ChildProperty));\nexport { AjaxSettings };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var defaultToolbarItems = ['NewFolder', 'Upload', 'Cut', 'Copy', 'Paste', 'Delete', 'Download', 'Rename',\n 'SortBy', 'Refresh', 'Selection', 'View', 'Details'];\n/**\n * Specifies the Toolbar settings of the FileManager.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(defaultToolbarItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"visible\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\nvar ToolbarItem = /** @class */ (function (_super) {\n __extends(ToolbarItem, _super);\n function ToolbarItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], ToolbarItem.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], ToolbarItem.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], ToolbarItem.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], ToolbarItem.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], ToolbarItem.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], ToolbarItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], ToolbarItem.prototype, \"align\", void 0);\n __decorate([\n Property(-1)\n ], ToolbarItem.prototype, \"tabIndex\", void 0);\n __decorate([\n Property()\n ], ToolbarItem.prototype, \"name\", void 0);\n return ToolbarItem;\n}(ChildProperty));\nexport { ToolbarItem };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Search settings of the File Manager.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"allowSearchOnTyping\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], SearchSettings.prototype, \"placeholder\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\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 { Property, ChildProperty, initializeCSPTemplate } from '@syncfusion/ej2-base';\n/**\n * Specifies the columns in the details view of the file manager.\n */\nexport var columnArray = [\n {\n field: 'name', headerText: 'Name', minWidth: 120,\n template: '<span class=\"e-fe-text\">${name}</span>',\n customAttributes: { class: 'e-fe-grid-name' }\n },\n {\n field: '_fm_modified', headerText: 'DateModified', type: 'dateTime',\n format: 'MMMM dd, yyyy HH:mm', minWidth: 120, width: '190'\n },\n {\n field: 'size', headerText: 'Size', minWidth: 90, width: '110',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template: initializeCSPTemplate(function (data) {\n return \"<span class=\\\"e-fe-size\\\">\" + data.size + \"</span>\";\n }), format: 'n2'\n }\n];\n/**\n * Specifies the grid settings of the File Manager.\n */\nvar DetailsViewSettings = /** @class */ (function (_super) {\n __extends(DetailsViewSettings, _super);\n function DetailsViewSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], DetailsViewSettings.prototype, \"columnResizing\", void 0);\n __decorate([\n Property(columnArray)\n ], DetailsViewSettings.prototype, \"columns\", void 0);\n return DetailsViewSettings;\n}(ChildProperty));\nexport { DetailsViewSettings };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var fileItems = ['Open', '|', 'Cut', 'Copy', '|', 'Delete', 'Download', 'Rename', '|', 'Details'];\nexport var folderItems = ['Open', '|', 'Cut', 'Copy', 'Paste', '|', 'Delete', 'Rename', 'Download', '|', 'Details'];\nexport var layoutItems = [\n 'SortBy', 'View', 'Refresh', '|', 'Paste', '|', 'NewFolder', 'Upload', '|', 'Details', '|', 'SelectAll'\n];\n/**\n * Specifies the ContextMenu settings of the File Manager.\n */\nvar ContextMenuSettings = /** @class */ (function (_super) {\n __extends(ContextMenuSettings, _super);\n function ContextMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(fileItems)\n ], ContextMenuSettings.prototype, \"file\", void 0);\n __decorate([\n Property(folderItems)\n ], ContextMenuSettings.prototype, \"folder\", void 0);\n __decorate([\n Property(layoutItems)\n ], ContextMenuSettings.prototype, \"layout\", void 0);\n __decorate([\n Property(true)\n ], ContextMenuSettings.prototype, \"visible\", void 0);\n return ContextMenuSettings;\n}(ChildProperty));\nexport { ContextMenuSettings };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the navigationpane settings of the File Manager.\n */\nvar NavigationPaneSettings = /** @class */ (function (_super) {\n __extends(NavigationPaneSettings, _super);\n function NavigationPaneSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('650px')\n ], NavigationPaneSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('240px')\n ], NavigationPaneSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(true)\n ], NavigationPaneSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], NavigationPaneSettings.prototype, \"sortOrder\", void 0);\n return NavigationPaneSettings;\n}(ChildProperty));\nexport { NavigationPaneSettings };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar UploadSettings = /** @class */ (function (_super) {\n __extends(UploadSettings, _super);\n function UploadSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], UploadSettings.prototype, \"allowedExtensions\", void 0);\n __decorate([\n Property(true)\n ], UploadSettings.prototype, \"autoUpload\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"autoClose\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"directoryUpload\", void 0);\n __decorate([\n Property(0)\n ], UploadSettings.prototype, \"minFileSize\", void 0);\n __decorate([\n Property(30000000)\n ], UploadSettings.prototype, \"maxFileSize\", void 0);\n return UploadSettings;\n}(ChildProperty));\nexport { UploadSettings };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Interface for a class Column\n */\n/* istanbul ignore next */\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Column.prototype, \"field\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"headerText\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"minWidth\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('Left')\n ], Column.prototype, \"textAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTextAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"sortComparer\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(true)\n ], Column.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(true)\n ], Column.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customAttributes\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"hideAtMedia\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customFormat\", void 0);\n __decorate([\n Property(false)\n ], Column.prototype, \"isPrimaryKey\", void 0);\n return Column;\n}(ChildProperty));\nexport { Column };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var TOOLBAR_ID = '_toolbar';\n/** @hidden */\nexport var LAYOUT_ID = '_layout';\n/** @hidden */\nexport var NAVIGATION_ID = '_navigation';\n/** @hidden */\nexport var TREE_ID = '_tree';\n/** @hidden */\nexport var GRID_ID = '_grid';\n/** @hidden */\nexport var LARGEICON_ID = '_largeicons';\n/** @hidden */\nexport var DIALOG_ID = '_dialog';\n/** @hidden */\nexport var ALT_DIALOG_ID = '_alt_dialog';\n/** @hidden */\nexport var IMG_DIALOG_ID = '_img_dialog';\n/** @hidden */\nexport var EXTN_DIALOG_ID = '_extn_dialog';\n/** @hidden */\nexport var UPLOAD_DIALOG_ID = '_upload_dialog';\n/** @hidden */\nexport var RETRY_DIALOG_ID = '_retry_dialog';\n/** @hidden */\nexport var CONTEXT_MENU_ID = '_contextmenu';\n/** @hidden */\nexport var SORTBY_ID = '_sortby';\n/** @hidden */\nexport var VIEW_ID = '_view';\n/** @hidden */\nexport var SPLITTER_ID = '_splitter';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var BREADCRUMBBAR_ID = '_breadcrumbbar';\n/** @hidden */\nexport var UPLOAD_ID = '_upload';\n/** @hidden */\nexport var RETRY_ID = '_retry';\n/** @hidden */\nexport var SEARCH_ID = '_search';\n/**\n * Specifies the File Manager internal class names\n */\n/** @hidden */\nexport var ROOT = 'e-filemanager';\n/** @hidden */\nexport var CONTROL = 'e-control';\n/** @hidden */\nexport var CHECK_SELECT = 'e-fe-cb-select';\n/** @hidden */\nexport var ROOT_POPUP = 'e-fe-popup';\n/** @hidden */\nexport var MOBILE = 'e-fe-mobile';\n/** @hidden */\nexport var MOB_POPUP = 'e-fe-popup e-fe-mobile';\n/** @hidden */\nexport var MULTI_SELECT = 'e-fe-m-select';\n/** @hidden */\nexport var FILTER = 'e-fe-m-filter';\n/** @hidden */\nexport var LAYOUT = 'e-layout';\n/** @hidden */\nexport var NAVIGATION = 'e-navigation';\n/** @hidden */\nexport var LAYOUT_CONTENT = 'e-layout-content';\n/** @hidden */\nexport var LARGE_ICONS = 'e-large-icons';\n/** @hidden */\nexport var TB_ITEM = 'e-toolbar-item';\n/** @hidden */\nexport var LIST_ITEM = 'e-list-item';\n/** @hidden */\nexport var LIST_TEXT = 'e-list-text';\n/** @hidden */\nexport var LIST_PARENT = 'e-list-parent';\n/** @hidden */\nexport var TB_OPTION_TICK = 'e-icons e-fe-tick';\n/** @hidden */\nexport var TB_OPTION_DOT = 'e-icons e-fe-dot';\n/** @hidden */\nexport var BLUR = 'e-blur';\n/** @hidden */\nexport var ACTIVE = 'e-active';\n/** @hidden */\nexport var HOVER = 'e-hover';\n/** @hidden */\nexport var FOCUS = 'e-focus';\n/** @hidden */\nexport var FOCUSED = 'e-focused';\n/** @hidden */\nexport var CHECK = 'e-check';\n/** @hidden */\nexport var FRAME = 'e-frame';\n/** @hidden */\nexport var CB_WRAP = 'e-checkbox-wrapper';\n/** @hidden */\nexport var ROW = 'e-row';\n/** @hidden */\nexport var ROWCELL = 'e-rowcell';\n/** @hidden */\nexport var EMPTY = 'e-empty';\n/** @hidden */\nexport var EMPTY_CONTENT = 'e-empty-content';\n/** @hidden */\nexport var EMPTY_INNER_CONTENT = 'e-empty-inner-content';\n/** @hidden */\nexport var CLONE = 'e-fe-clone';\n/** @hidden */\nexport var DROP_FOLDER = 'e-fe-drop-folder';\n/** @hidden */\nexport var DROP_FILE = 'e-fe-drop-file';\n/** @hidden */\nexport var FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var ICON_IMAGE = 'e-fe-image';\n/** @hidden */\nexport var ICON_MUSIC = 'e-fe-music';\n/** @hidden */\nexport var ICON_VIDEO = 'e-fe-video';\n/** @hidden */\nexport var LARGE_ICON = 'e-large-icon';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER = 'e-empty-icon e-fe-folder';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER_TWO = 'e-empty-icon.e-fe-folder';\n/** @hidden */\nexport var LARGE_ICON_FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var SELECTED_ITEMS = 'e-items';\n/** @hidden */\nexport var TEXT_CONTENT = 'e-text-content';\n/** @hidden */\nexport var GRID_HEADER = 'e-gridheader';\n/** @hidden */\nexport var TEMPLATE_CELL = 'e-templatecell';\n/** @hidden */\nexport var TREE_VIEW = 'e-treeview';\n/** @hidden */\nexport var MENU_ITEM = 'e-menu-item';\n/** @hidden */\nexport var MENU_ICON = 'e-menu-icon';\n/** @hidden */\nexport var SUBMENU_ICON = 'e-caret';\n/** @hidden */\nexport var GRID_VIEW = 'e-content';\n/** @hidden */\nexport var GRID_CONTENT = 'e-gridcontent';\n/** @hidden */\nexport var ICON_VIEW = 'e-list-parent';\n/** @hidden */\nexport var ICON_OPEN = 'e-icons e-fe-open';\n/** @hidden */\nexport var ICON_UPLOAD = 'e-icons e-fe-upload';\n/** @hidden */\nexport var ICON_CUT = 'e-icons e-fe-cut';\n/** @hidden */\nexport var ICON_COPY = 'e-icons e-fe-copy';\n/** @hidden */\nexport var ICON_PASTE = 'e-icons e-fe-paste';\n/** @hidden */\nexport var ICON_DELETE = 'e-icons e-fe-delete';\n/** @hidden */\nexport var ICON_RENAME = 'e-icons e-fe-rename';\n/** @hidden */\nexport var ICON_NEWFOLDER = 'e-icons e-fe-newfolder';\n/** @hidden */\nexport var ICON_DETAILS = 'e-icons e-fe-details';\n/** @hidden */\nexport var ICON_SHORTBY = 'e-icons e-fe-sort';\n/** @hidden */\nexport var ICON_REFRESH = 'e-icons e-fe-refresh';\n/** @hidden */\nexport var ICON_SELECTALL = 'e-icons e-fe-select';\n/** @hidden */\nexport var ICON_DOWNLOAD = 'e-icons e-fe-download';\n/** @hidden */\nexport var ICON_OPTIONS = 'e-icons e-fe-options';\n/** @hidden */\nexport var ICON_GRID = 'e-icons e-fe-grid';\n/** @hidden */\nexport var ICON_LARGE = 'e-icons e-fe-large';\n/** @hidden */\nexport var ICON_BREADCRUMB = 'e-icons e-fe-breadcrumb';\n/** @hidden */\nexport var ICON_CLEAR = 'e-icons e-fe-clear';\n/** @hidden */\nexport var ICON_DROP_IN = 'e-icons e-fe-drop-in';\n/** @hidden */\nexport var ICON_DROP_OUT = 'e-icons e-fe-drop-out';\n/** @hidden */\nexport var ICON_NO_DROP = 'e-icons e-fe-no-drop';\n/** @hidden */\nexport var ICONS = 'e-icons';\n/** @hidden */\nexport var DETAILS_LABEL = 'e-detailslabel';\n/** @hidden */\nexport var ERROR_CONTENT = 'e-fe-errorcontent';\n/** @hidden */\nexport var STATUS = 'e-status';\n/** @hidden */\nexport var BREADCRUMBS = 'e-address';\n/** @hidden */\nexport var RTL = 'e-rtl';\n/** @hidden */\nexport var DISPLAY_NONE = 'e-display-none';\n/** @hidden */\nexport var COLLAPSED = 'e-node-collapsed';\n/** @hidden */\nexport var FULLROW = 'e-fullrow';\n/** @hidden */\nexport var ICON_COLLAPSIBLE = 'e-icon-collapsible';\n/** @hidden */\nexport var SPLIT_BAR = 'e-split-bar';\n/** @hidden */\nexport var HEADER_CHECK = 'e-headercheck';\n/** @hidden */\nexport var OVERLAY = 'e-fe-overlay';\n/** @hidden */\nexport var VALUE = 'e-fe-value';\n","/**\n * Specifies the File Manager internal variables\n */\n/** @hidden */\nexport var isFile = 'isFile';\n/**\n * Specifies the File Manager internal events\n */\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var finalizeEnd = 'finalize-end';\n/** @hidden */\nexport var createEnd = 'create-end';\n/** @hidden */\nexport var filterEnd = 'filter-end';\n/** @hidden */\nexport var beforeDelete = 'before-delete';\n/** @hidden */\nexport var pathDrag = 'path-drag';\n/** @hidden */\nexport var deleteInit = 'delete-init';\n/** @hidden */\nexport var deleteEnd = 'delete-end';\n/** @hidden */\nexport var refreshEnd = 'refresh-end';\n/** @hidden */\nexport var resizeEnd = 'resize-end';\n/** @hidden */\nexport var splitterResize = 'splitter-resize';\n/** @hidden */\nexport var pathChanged = 'path-changed';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var beforeRequest = 'before-request';\n/** @hidden */\nexport var upload = 'upload';\n/** @hidden */\nexport var skipUpload = 'skip-upload';\n/** @hidden */\nexport var afterRequest = 'after-request';\n/** @hidden */\nexport var download = 'download';\n/** @hidden */\nexport var layoutRefresh = 'layout-refresh';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var search = 'search';\n/** @hidden */\nexport var openInit = 'open-init';\n/** @hidden */\nexport var openEnd = 'open-end';\n/** @hidden */\nexport var selectionChanged = 'selection-changed';\n/** @hidden */\nexport var selectAllInit = 'select-all-init';\n/** @hidden */\nexport var clearAllInit = 'clear-all-init';\n/** @hidden */\nexport var clearPathInit = 'clear-path-init';\n/** @hidden */\nexport var layoutChange = 'layout-change';\n/** @hidden */\nexport var sortByChange = 'sort-by-change';\n/** @hidden */\nexport var nodeExpand = 'node-expand';\n/** @hidden */\nexport var detailsInit = 'details-init';\n/** @hidden */\nexport var menuItemData = 'menu-item-data';\n/** @hidden */\nexport var renameInit = 'rename-init';\n/** @hidden */\nexport var renameEndParent = 'rename-end-parent';\n/** @hidden */\nexport var renameEnd = 'rename-end';\n/** @hidden */\nexport var showPaste = 'show-paste';\n/** @hidden */\nexport var hidePaste = 'hide-paste';\n/** @hidden */\nexport var selectedData = 'selected-data';\n/** @hidden */\nexport var cutCopyInit = 'cut-copy-init';\n/** @hidden */\nexport var pasteInit = 'paste-init';\n/** @hidden */\nexport var pasteEnd = 'paste-end';\n/** @hidden */\nexport var cutEnd = 'cut-end';\n/** @hidden */\nexport var hideLayout = 'hide-layout';\n/** @hidden */\nexport var updateTreeSelection = 'update-tree-selection';\n/** @hidden */\nexport var treeSelect = 'select-node';\n/** @hidden */\nexport var sortColumn = 'sort-column';\n/** @hidden */\nexport var pathColumn = 'path-column';\n/** @hidden */\nexport var searchTextChange = 'search-change';\n/** @hidden */\nexport var beforeDownload = 'before-download';\n/** @hidden */\nexport var downloadInit = 'download-init';\n/** @hidden */\nexport var dropInit = 'drop-init';\n/** @hidden */\nexport var dragEnd = 'drag-end';\n/** @hidden */\nexport var dropPath = 'drop-path';\n/** @hidden */\nexport var dragHelper = 'drag-helper';\n/** @hidden */\nexport var dragging = 'dragging';\n/** @hidden */\nexport var updateSelectionData = 'update-selection-data';\n/** @hidden */\nexport var methodCall = 'method-call';\n/** @hidden */\nexport var permissionRead = 'read';\n/** @hidden */\nexport var permissionEdit = 'write';\n/** @hidden */\nexport var permissionEditContents = 'writeContents';\n/** @hidden */\nexport var permissionCopy = 'copy';\n/** @hidden */\nexport var permissionUpload = 'upload';\n/** @hidden */\nexport var permissionDownload = 'download';\n","import * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { read, paste, Search, filter, Download, Delete, isFileSystemData } from '../common/operations';\nimport { getValue, setValue, isNullOrUndefined as isNOU, matches, select, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { closest, detach } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createDialog } from '../pop-up/dialog';\n/**\n * Utility function to compare two strings in a way similar to Windows Explorer.\n * Files and folders are sorted separately, with folders coming before files.\n *\n * @param {string} reference - The first string to compare. This could be a file or folder name.\n * @param {string} comparer - The second string to compare. This could be a file or folder name.\n * @returns {number} - A negative number if `reference` should come before `comparer`, a positive number if `comparer` should come before `reference`, and 0 if they are considered equal.\n */\nexport function sortComparer(reference, comparer) {\n // Check if reference and comparer are files or folders\n var referenceIsFile = /\\.\\S+/.test(reference);\n var comparerIsFile = /\\.\\S+/.test(comparer);\n // If one is a file and the other is a folder, the folder should come first\n if (referenceIsFile && !comparerIsFile) {\n return 1;\n }\n if (!referenceIsFile && comparerIsFile) {\n return -1;\n }\n var referenceParts = [];\n var comparerParts = [];\n (reference + '').replace(/(\\d+)|(\\D+)/g, function (_, $1, $2) { referenceParts.push([$1 || Infinity, $2 || '']); return ''; });\n (comparer + '').replace(/(\\d+)|(\\D+)/g, function (_, $1, $2) { comparerParts.push([$1 || Infinity, $2 || '']); return ''; });\n // Compare each part of reference and comparer\n while (referenceParts.length && comparerParts.length) {\n var referencePart = referenceParts.shift();\n var comparerPart = comparerParts.shift();\n if (referencePart && comparerPart) {\n var comparisonResult = referencePart[0] - comparerPart[0] ||\n referencePart[1].localeCompare(comparerPart[1]);\n if (comparisonResult) {\n return comparisonResult;\n }\n }\n }\n return referenceParts.length - comparerParts.length;\n}\n/**\n * Utility file for common actions\n *\n * @param {HTMLLIElement} node - specifies the node.\n * @param {Object} data - specifies the data.\n * @param {IFileManager} instance - specifies the control instance.\n * @returns {void}\n * @private\n */\nexport function updatePath(node, data, instance) {\n var text = getValue('name', data);\n var id = node.getAttribute('data-id');\n var newText = isNOU(id) ? text : id;\n instance.setProperties({ path: getPath(node, newText, instance.hasId) }, true);\n instance.pathId = getPathId(node);\n instance.pathNames = getPathNames(node, text);\n}\n/**\n * Functions for get path in FileManager\n *\n * @param {Element | Node} element - specifies the element.\n * @param {string} text - specifies the text.\n * @param {boolean} hasId - specifies the id.\n * @returns {string} returns the path.\n * @private\n */\nexport function getPath(element, text, hasId) {\n var matched = getParents(element, text, false, hasId);\n var path = '/';\n var len = matched.length - (2);\n for (var i = len; i >= 0; i--) {\n path += matched[i] + '/';\n }\n return path;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} node - specifies the node element.\n * @returns {string[]} returns the path ids.\n * @private\n */\nexport function getPathId(node) {\n var matched = getParents(node, node.getAttribute('data-uid'), true);\n var ids = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n ids.push(matched[i]);\n }\n return ids;\n}\n/**\n * Functions for get path names in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @returns {string[]} returns the path names.\n * @private\n */\nexport function getPathNames(element, text) {\n var matched = getParents(element, text, false);\n var names = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n names.push(matched[i]);\n }\n return names;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @param {boolean} isId - specifies the id.\n * @param {boolean} hasId - checks the id exists.\n * @returns {string[]} returns parent element.\n * @private\n */\nexport function getParents(element, text, isId, hasId) {\n var matched = [text];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, '.' + CLS.LIST_ITEM)) {\n var parentText = isId ? el.getAttribute('data-uid') : (hasId ? el.getAttribute('data-id') :\n select('.' + CLS.LIST_TEXT, el).textContent);\n matched.push(parentText);\n }\n el = el.parentNode;\n if (el.classList.contains(CLS.TREE_VIEW)) {\n break;\n }\n }\n return matched;\n}\n/**\n * Functions for generate path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function generatePath(parent) {\n var key = parent.hasId ? 'id' : 'name';\n var newPath = '/';\n var i = 1;\n for (i; i < parent.pathId.length; i++) {\n var data = getValue(parent.pathId[parseInt(i.toString(), 10)], parent.feParent);\n newPath += getValue(key, data) + '/';\n }\n parent.setProperties({ path: newPath }, true);\n}\n/**\n * Functions for remove active element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function removeActive(parent) {\n if (parent.isCut) {\n removeBlur(parent);\n parent.selectedNodes = [];\n parent.actionRecords = [];\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n }\n}\n/**\n * Selects active element in File Manager\n *\n * @param {string} action - specifies the action.\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {boolean} - returns active element.\n * @private\n */\nexport function activeElement(action, parent) {\n parent.isSearchCut = false;\n parent.actionRecords = [];\n parent.activeElements = [];\n parent.notify(events.cutCopyInit, {});\n if (parent.activeElements.length === 0) {\n return false;\n }\n removeBlur(parent);\n var blurEle = parent.activeElements;\n if (parent.activeModule !== 'navigationpane') {\n parent.targetPath = parent.path;\n }\n else {\n parent.targetPath = getParentPath(parent.path);\n }\n var i = 0;\n if (blurEle) {\n getModule(parent, blurEle[0]);\n if (action === 'cut') {\n while (i < blurEle.length) {\n addBlur(blurEle[i]);\n i++;\n }\n }\n }\n i = 0;\n parent.selectedNodes = [];\n parent.enablePaste = true;\n parent.notify(events.showPaste, {});\n while (i < parent.activeRecords.length) {\n parent.actionRecords.push(parent.activeRecords[i]);\n parent.selectedNodes.push(getValue('name', parent.activeRecords[i]));\n i++;\n }\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) &&\n parent.activeModule !== 'navigationpane') {\n parent.selectedNodes = [];\n parent.isSearchCut = true;\n var i_1 = 0;\n while (i_1 < parent.selectedItems.length) {\n parent.selectedNodes.push(parent.selectedItems[i_1]);\n i_1++;\n }\n }\n return true;\n}\n/**\n * Adds blur to the elements\n *\n * @param {Element} nodes - specifies the nodes.\n * @returns {void}\n * @private\n */\nexport function addBlur(nodes) {\n nodes.classList.add(CLS.BLUR);\n}\n/**\n * Removes blur from elements\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} hover - specifies the hover string.\n * @returns {void}\n * @private\n */\nexport function removeBlur(parent, hover) {\n var blurEle = (!hover) ? parent.element.querySelectorAll('.' + CLS.BLUR) :\n parent.element.querySelectorAll('.' + CLS.HOVER);\n var i = 0;\n while (i < blurEle.length) {\n blurEle[i].classList.remove((!hover) ? CLS.BLUR : CLS.HOVER);\n i++;\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getModule(parent, element) {\n if (element) {\n if (element.classList.contains(CLS.ROW)) {\n parent.activeModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICON)) {\n parent.activeModule = 'largeiconsview';\n }\n else {\n parent.activeModule = 'navigationpane';\n }\n }\n}\n/**\n * Get all child items\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string | number} parentId - specifies the parent ID.\n * @returns {Object[]} An array of child items\n * @private\n */\nexport function getAllChildItems(parent, parentId) {\n var children = parent.fileSystemData.filter(function (item) {\n return String(item.parentId) === String(parentId);\n });\n var allChildren = children.slice();\n children.forEach(function (child) {\n var childId = child.id;\n allChildren = allChildren.concat(getAllChildItems(parent, childId));\n });\n return allChildren;\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} value - specifies the value.\n * @param {boolean} isLayoutChange - specifies the layout change.\n * @returns {void}\n * @private\n */\nexport function searchWordHandler(parent, value, isLayoutChange) {\n var searchWord;\n if (value.length === 0 && !parent.isFiltered) {\n parent.notify(events.pathColumn, { args: parent });\n }\n if (isFileSystemData(parent)) {\n if (value === '') {\n parent.itemData = parent.fileSystemData;\n read(parent, events.layoutChange, parent.path);\n }\n else {\n parent.searchSettings.filterType = isNOU(parent.searchSettings.filterType) ? 'contains' : parent.searchSettings.filterType;\n var currData = getValue(parent.pathId[parent.pathId.length - 1], parent.feParent);\n var parentId = getValue('id', currData);\n var filteredData = getAllChildItems(parent, parentId);\n var data = new DataManager(filteredData).\n executeLocal(new Query().where('name', parent.searchSettings.filterType, value, parent.searchSettings.ignoreCase));\n var searchValue = parent.searchSettings.ignoreCase ? value.toLowerCase() : value;\n parent.itemData = data;\n Search(parent, isLayoutChange ? events.layoutChange : events.search, parent.path, searchValue, parent.showHiddenItems, !parent.searchSettings.ignoreCase);\n }\n return;\n }\n if (parent.searchSettings.filterType === 'startsWith') {\n searchWord = value + '*';\n }\n else if (parent.searchSettings.filterType === 'endsWith') {\n searchWord = '*' + value;\n }\n else {\n searchWord = '*' + value + '*';\n }\n parent.searchWord = searchWord;\n parent.itemData = [getPathObject(parent)];\n if (value.length > 0) {\n var caseSensitive = parent.searchSettings.ignoreCase;\n var hiddenItems = parent.showHiddenItems;\n Search(parent, isLayoutChange ? events.layoutChange : events.search, parent.path, searchWord, hiddenItems, !caseSensitive);\n }\n else {\n if (!parent.isFiltered) {\n if (parent.isSortByClicked) {\n parent.notify(events.layoutChange, { files: (parent.oldView === 'Details') ? parent.detailsviewModule.gridObj.dataSource : parent.largeiconsviewModule.allItems });\n parent.isSortByClicked = false;\n }\n else {\n read(parent, isLayoutChange ? events.layoutChange : events.search, parent.path);\n }\n }\n else {\n filter(parent, events.layoutChange);\n }\n }\n}\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} view - specifies the view.\n * @returns {void}\n * @private\n */\nexport function updateLayout(parent, view) {\n parent.oldView = parent.view;\n parent.setProperties({ view: view }, true);\n if (parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) {\n parent.layoutSelectedItems = parent.selectedItems;\n }\n var searchWord = '';\n if (parent.breadcrumbbarModule.searchObj.element.value) {\n searchWord = parent.breadcrumbbarModule.searchObj.element.value;\n }\n parent.isLayoutChange = true;\n searchWordHandler(parent, searchWord, true);\n}\n/* istanbul ignore next */\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getTargetModule(parent, element) {\n var tartgetModule = '';\n if (element) {\n if (closest(element, '.' + CLS.ROOT + '.' + CLS.CONTROL + ' .' + CLS.GRID_CONTENT)) {\n tartgetModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICONS)) {\n tartgetModule = 'largeiconsview';\n }\n else if (element.classList.contains('e-fullrow') ||\n element.classList.contains('e-icon-expandable')) {\n tartgetModule = 'navigationpane';\n }\n else if (closest(element, '.e-address-list-item')) {\n tartgetModule = 'breadcrumbbar';\n }\n else {\n tartgetModule = '';\n }\n }\n parent.targetModule = tartgetModule;\n}\n/* istanbul ignore next */\n/**\n * refresh the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function refresh(parent) {\n parent.itemData = [getPathObject(parent)];\n if (!hasReadAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionRead);\n }\n else {\n read(parent, events.refreshEnd, parent.path);\n }\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function openAction(parent) {\n read(parent, events.openEnd, parent.path);\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {Object} - returns the path data.\n * @private\n */\nexport function getPathObject(parent) {\n return getValue(parent.pathId[parent.pathId.length - 1], parent.feParent);\n}\n/**\n * Copy files\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function copyFiles(parent) {\n if (!activeElement('copy', parent)) {\n return;\n }\n else {\n parent.fileAction = 'copy';\n }\n}\n/**\n * Cut files\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function cutFiles(parent) {\n if (!activeElement('cut', parent)) {\n return;\n }\n else {\n parent.isCut = true;\n parent.fileAction = 'move';\n }\n}\n/**\n * To add class for fileType\n *\n * @param {Object} file - specifies the file.\n * @returns {string} - returns the file type.\n * @private\n */\nexport function fileType(file) {\n var isFile = getValue('isFile', file);\n if (!isFile) {\n return CLS.FOLDER;\n }\n var imageFormat = ['bmp', 'dib', 'jpg', 'jpeg', 'jpe', 'jfif', 'gif', 'tif', 'tiff', 'png', 'ico'];\n var audioFormat = ['mp3', 'wav', 'aac', 'ogg', 'wma', 'aif', 'fla', 'm4a'];\n var videoFormat = ['webm', 'mkv', 'flv', 'vob', 'ogv', 'ogg', 'avi', 'wmv', 'mp4', '3gp'];\n var knownFormat = ['css', 'exe', 'html', 'js', 'msi', 'pdf', 'pptx', 'ppt', 'rar', 'zip', 'txt', 'docx', 'doc',\n 'xlsx', 'xls', 'xml', 'rtf', 'php'];\n var filetype = getValue('type', file);\n filetype = filetype.toLowerCase();\n if (filetype.indexOf('.') !== -1) {\n filetype = filetype.split('.').join('');\n }\n var iconType;\n if (imageFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_IMAGE;\n }\n else if (audioFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_MUSIC;\n }\n else if (videoFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_VIDEO;\n }\n else if (knownFormat.indexOf(filetype) !== -1) {\n iconType = 'e-fe-' + filetype;\n }\n else {\n iconType = 'e-fe-unknown e-fe-' + filetype;\n }\n return iconType;\n}\n/* istanbul ignore next */\n/**\n * To get the image URL\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} item - specifies the item.\n * @returns {string} - returns the image url.\n * @private\n */\nexport function getImageUrl(parent, item) {\n var imgUrl = isFileSystemData(parent) ? getValue('imageUrl', item) : '';\n if (isFileSystemData(parent)) {\n var eventArgs_1 = {\n fileDetails: [item],\n imageUrl: imgUrl\n };\n parent.trigger('beforeImageLoad', eventArgs_1);\n return eventArgs_1.imageUrl;\n }\n var baseUrl = parent.ajaxSettings.getImageUrl ? parent.ajaxSettings.getImageUrl : parent.ajaxSettings.url;\n var pathUrl = (baseUrl.indexOf('?') !== -1) ? '&path=' : '?path=';\n var fileName = encodeURIComponent(getValue('name', item));\n var fPath = getValue('filterPath', item);\n if (parent.hasId) {\n var imgId = getValue('id', item);\n imgUrl = baseUrl + pathUrl + parent.path + '&id=' + imgId;\n }\n else if (!isNOU(fPath)) {\n imgUrl = baseUrl + pathUrl + encodeURIComponent(fPath.replace(/\\\\/g, '/')) + fileName;\n }\n else {\n imgUrl = baseUrl + pathUrl + parent.path + fileName;\n }\n imgUrl = imgUrl + '&time=' + (new Date().getTime()).toString();\n var eventArgs = {\n fileDetails: [item],\n imageUrl: imgUrl\n };\n parent.trigger('beforeImageLoad', eventArgs);\n return eventArgs.imageUrl;\n}\n/* istanbul ignore next */\n/**\n * Gets the full path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {string} path - specifies the path.\n * @returns {string} - returns the image url.\n * @private\n */\nexport function getFullPath(parent, data, path) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', data) + '/';\n var fPath = getValue(parent.hasId ? 'filterId' : 'filterPath', data);\n if (!isNOU(fPath)) {\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return path + filePath;\n }\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @returns {string} - returns the name.\n * @private\n */\nexport function getName(parent, data) {\n var name = getValue('name', data);\n var fPath = getValue('filterPath', data);\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) && !isNOU(fPath)) {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(parent.path, '') + name;\n }\n return name;\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object[]} items - specifies the item elements.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\nexport function getSortedData(parent, items) {\n if (items.length === 0) {\n return items;\n }\n var query;\n if (parent.sortOrder !== 'None' && !isNullOrUndefined(parent.sortOrder)) {\n query = new Query().sortBy(parent.sortBy, parent.sortOrder.toLowerCase(), true).group('isFile');\n }\n else {\n query = new Query().group('isFile');\n }\n var lists = new DataManager(items).executeLocal(query);\n return getValue('records', lists);\n}\n/**\n * Gets the data object\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} key - specifies the key.\n * @param {string} value - specifies the value.\n * @returns {Object} - returns the sorted data.\n * @private\n */\nexport function getObject(parent, key, value) {\n var currFiles = getValue(parent.pathId[parent.pathId.length - 1], parent.feFiles);\n var result = currFiles.filter(function (data) { return data[key].toString() === value; });\n return result.length > 0 ? result[0] : null;\n}\n/**\n * Creates empty element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLElement} element - specifies the element.\n * @param {ReadArgs | SearchArgs} args - specifies the args.\n * @returns {void}\n * @private\n */\nexport function createEmptyElement(parent, element, args) {\n var top;\n var layoutElement = select('#' + parent.element.id + CLS.LAYOUT_ID, parent.element);\n var addressBarHeight = select('#' + parent.element.id + CLS.BREADCRUMBBAR_ID, layoutElement).offsetHeight;\n top = layoutElement.offsetHeight - addressBarHeight;\n if (parent.view === 'Details') {\n top = top - select('.' + CLS.GRID_HEADER, layoutElement).offsetHeight;\n }\n if (isNOU(element.querySelector('.' + CLS.EMPTY))) {\n var emptyDiv = createElement('div', { className: CLS.EMPTY });\n var emptyFolder = createElement('div', { className: CLS.LARGE_EMPTY_FOLDER });\n var emptyEle = createElement('div', { className: CLS.EMPTY_CONTENT });\n var dragFile = createElement('div', { className: CLS.EMPTY_INNER_CONTENT });\n if (parent.view === 'Details') {\n element.querySelector('.' + CLS.GRID_VIEW).appendChild(emptyDiv);\n }\n else {\n element.appendChild(emptyDiv);\n }\n emptyDiv.appendChild(emptyFolder);\n emptyDiv.appendChild(emptyEle);\n emptyDiv.appendChild(dragFile);\n }\n if (element.querySelector('.' + CLS.EMPTY)) {\n if (!isNOU(args.error)) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Access-Denied');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Access-Details');\n }\n else if (parent.isFiltered) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Key');\n }\n else if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Search-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Search-Key');\n }\n else {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Folder-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'File-Upload');\n }\n }\n var eDiv = select('.' + CLS.EMPTY, element);\n top = (top - eDiv.offsetHeight) / 2;\n eDiv.style.marginTop = top + 'px';\n}\n/**\n * Gets the directories\n *\n * @param {Object[]} files - specifies the file object.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\nexport function getDirectories(files) {\n return new DataManager(files).executeLocal(new Query().where(events.isFile, 'equal', false, false));\n}\n/**\n * set the Node ID\n *\n * @param {ReadArgs} result - specifies the result.\n * @param {string} rootId - specifies the rootId.\n * @returns {void}\n * @private\n */\nexport function setNodeId(result, rootId) {\n var dirs = getDirectories(result.files);\n for (var i = 0, len = dirs.length; i < len; i++) {\n setValue('_fm_id', rootId + '_' + i, dirs[i]);\n }\n}\n/**\n * set the date object\n *\n * @param {Object[]} args - specifies the file object.\n * @param {Internationalization} localeString - The internationalization object for formatting dates.\n * @param {string} dateFormat - The date format string.\n * @returns {void}\n * @private\n */\nexport function setDateObject(args, localeString, dateFormat) {\n for (var i = 0; i < args.length; i++) {\n var createdDate = new Date(getValue('dateCreated', args[i]));\n var modifiedDate = new Date(getValue('dateModified', args[i]));\n if (isNOU(dateFormat)) {\n dateFormat = 'MM/dd/yyyy';\n }\n setValue('_fm_created', localeString.formatDate(createdDate, { format: dateFormat }), args[i]);\n setValue('_fm_modified', localeString.formatDate(modifiedDate, { format: dateFormat }), args[i]);\n }\n}\n/**\n * get the locale text\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text.\n * @returns {string} - returns the locale text.\n * @private\n */\nexport function getLocaleText(parent, text) {\n var locale = parent.localeObj.getConstant(text);\n return (locale === '') ? text : locale;\n}\n/**\n * get the CSS class\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} css - specifies the css.\n * @returns {string} - returns the css classes.\n * @private\n */\nexport function getCssClass(parent, css) {\n var cssClass = parent.cssClass;\n cssClass = (isNOU(cssClass) || cssClass === '') ? css : (cssClass + ' ' + css);\n return cssClass;\n}\n/**\n * sort on click\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {MenuEventArgs} args - specifies the menu event arguements.\n * @returns {void}\n * @private\n */\nexport function sortbyClickHandler(parent, args) {\n var tick;\n parent.isSortByClicked = true;\n if (args.item.id.indexOf('ascending') !== -1 || args.item.id.indexOf('descending') !== -1 || args.item.id.indexOf('none') !== -1) {\n tick = true;\n }\n else {\n tick = false;\n }\n if (!tick) {\n parent.sortBy = getSortField(args.item.id, parent);\n }\n else {\n parent.sortOrder = getSortField(args.item.id);\n }\n parent.itemData = [getPathObject(parent)];\n if (parent.view === 'Details') {\n if (parent.isMobile) {\n updateLayout(parent, 'Details');\n }\n else {\n parent.notify(events.sortColumn, { module: 'detailsview' });\n parent.isSortByClicked = false;\n }\n }\n if (parent.view === 'LargeIcons') {\n updateLayout(parent, 'LargeIcons');\n }\n parent.notify(events.sortByChange, {});\n}\n/**\n * Gets the sorted fields\n *\n * @param {string} id - specifies the id.\n * @param {IFileManager} [parent] - optional parameter representing the parent IFileManager.\n * @returns {string} - returns the sorted fields\n * @private\n */\nexport function getSortField(id, parent) {\n var text = id.substring(id.lastIndexOf('_') + 1);\n var field = text;\n var column;\n if (parent) {\n column = parent.detailsViewSettings.columns;\n }\n switch (text) {\n case 'date':\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[i].field === 'dateModified' || column[i].field === 'dateCreated') {\n field = column[i].field;\n break;\n }\n else {\n field = '_fm_modified';\n }\n }\n break;\n case 'ascending':\n field = 'Ascending';\n break;\n case 'descending':\n field = 'Descending';\n break;\n case 'none':\n field = 'None';\n break;\n }\n return field;\n}\n/**\n * Sets the next path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function setNextPath(parent, path) {\n var currfolders = path.split('/');\n var folders = parent.originalPath.split('/');\n var root = getValue(parent.pathId[0], parent.feParent);\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n for (var i = currfolders.length - 1, len = folders.length - 1; i < len; i++) {\n var eventName = (folders[i + 1] === '') ? events.finalizeEnd : events.initialEnd;\n var newPath = (folders[i] === '') ? '/' : (parent.path + folders[i] + '/');\n var data = getObject(parent, key, folders[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(data)) {\n var id = getValue('_fm_id', data);\n parent.setProperties({ path: newPath }, true);\n parent.pathId.push(id);\n parent.itemData = [data];\n parent.pathNames.push(getValue('name', data));\n }\n else {\n parent.originalPath = newPath;\n }\n read(parent, eventName, parent.path);\n break;\n }\n}\n/**\n * Opens the searched folder\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data\n * @returns {void}\n * @private\n */\nexport function openSearchFolder(parent, data) {\n parent.originalPath = getFullPath(parent, data, parent.path);\n var root = getValue(parent.pathId[0], parent.feParent);\n var navData = parent.feParent[getValue('_fm_id', parent.itemData[0])];\n var isRoot = isNullOrUndefined(navData) || getValue('_fm_id', navData) === 'fe_tree';\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n var searchData = getObject(parent, key, isFileSystemData(parent) ? getValue('id', data) : getValue('name', data));\n if (isNullOrUndefined(searchData)) {\n if (!isRoot) {\n parent.notify(events.clearPathInit, { selectedNode: parent.pathId[parent.pathId.length - 1] });\n }\n else {\n setNextPath(parent, parent.path);\n return;\n }\n }\n else {\n var id = getValue('_fm_id', searchData);\n parent.setProperties({ path: parent.originalPath }, true);\n parent.pathId.push(id);\n parent.itemData = [searchData];\n parent.pathNames.push(getValue('name', searchData));\n }\n read(parent, (parent.path !== parent.originalPath) ? events.initialEnd : events.finalizeEnd, parent.path);\n}\n/**\n * Paste handling function\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function pasteHandler(parent) {\n parent.isDragDrop = false;\n if (parent.selectedNodes.length !== 0 && parent.enablePaste) {\n var path = (parent.folderPath === '') ? parent.path : parent.folderPath;\n if (parent.activeModule === 'navigationpane' && !parent.selectedNodes[0].includes('/')) {\n parent.targetPath = getValue('filterPath', parent.actionRecords[0]).replace(/\\\\/g, '/');\n }\n var subFolder = validateSubFolder(parent, parent.actionRecords, path, parent.path);\n if (!subFolder) {\n if ((parent.fileAction === 'move' && parent.targetPath !== path) || parent.fileAction === 'copy') {\n parent.notify(events.pasteInit, {});\n paste(parent, parent.targetPath, parent.selectedNodes, path, parent.fileAction, [], parent.actionRecords);\n }\n else {\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n removeBlur(parent);\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n }\n }\n }\n}\n/**\n * Validates the sub folders\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {'{ [key: string]: Object; }[]'} data - specifies the data.\n * @param {string} dropPath - specifies the drop path.\n * @param {string} dragPath - specifies the drag path.\n * @returns {boolean} - returns the validated sub folder.\n * @private\n */\nexport function validateSubFolder(parent, data, dropPath, dragPath) {\n var subFolder = false;\n for (var i = 0; i < data.length; i++) {\n if (!getValue('isFile', data[i])) {\n var tempTarget = getFullPath(parent, data[i], dragPath);\n if (dropPath.indexOf(tempTarget) === 0) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Sub-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n else {\n var name_1 = parent.dragData[i] ? parent.dragData[i].name : null;\n var srcData = isFileSystemData(parent) ? name_1 : parent.dragNodes[i];\n var len = 0;\n if (srcData) {\n len = srcData.lastIndexOf('/');\n }\n var path = '';\n if (len > 0) {\n path = dragPath + srcData.substring(0, len + 1);\n }\n if (path === dropPath) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n }\n return subFolder;\n}\n/**\n * Validates the drop handler\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function dropHandler(parent) {\n parent.isDragDrop = true;\n if (parent.dragData.length !== 0) {\n parent.dragPath = parent.dragPath.replace(/\\\\/g, '/');\n parent.dropPath = parent.dropPath.replace(/\\\\/g, '/');\n var subFolder = validateSubFolder(parent, parent.dragData, parent.dropPath, parent.dragPath);\n if (!subFolder && (parent.dragPath !== parent.dropPath)) {\n parent.itemData = [parent.dropData];\n paste(parent, parent.dragPath, parent.dragNodes, parent.dropPath, 'move', [], parent.dragData);\n parent.notify(events.pasteInit, {});\n }\n }\n}\n/**\n * Gets the parent path\n *\n * @param {string} oldPath - specifies the old path.\n * @returns {string} - returns the parent path.\n * @private\n */\nexport function getParentPath(oldPath) {\n var path = oldPath.split('/');\n var newPath = path[0] + '/';\n for (var i = 1; i < path.length - 2; i++) {\n newPath += path[i] + '/';\n }\n return newPath;\n}\n/**\n * Gets the directory path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {ReadArgs} args - returns the read arguements.\n * @returns {string} - returns the directory path\n * @private\n */\nexport function getDirectoryPath(parent, args) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', args.cwd) + '/';\n var fPath = getValue(parent.hasId && !isNullOrUndefined(parent.ajaxSettings.url) ? 'filterId' : 'filterPath', args.cwd);\n if (!isNOU(fPath)) {\n if (fPath === '') {\n return parent.hasId && !isNullOrUndefined(parent.ajaxSettings.url) ? filePath : '/';\n }\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return isFileSystemData(parent) ? filePath : parent.path + filePath;\n }\n}\n/**\n * Gets the do paste path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} operation - specifies the operations.\n * @param {ReadArgs} result - returns the result.\n * @returns {void}\n * @private\n */\nexport function doPasteUpdate(parent, operation, result) {\n if (operation === 'move') {\n if (!parent.isDragDrop) {\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n parent.notify(events.cutEnd, result);\n }\n else {\n parent.notify(events.dragEnd, result);\n }\n }\n if (parent.duplicateItems.length === 0) {\n parent.pasteNodes = [];\n }\n var flag = false;\n for (var count = 0; (count < result.files.length) && !flag; count++) {\n parent.pasteNodes.push(result.files[count][parent.hasId ? 'id' : 'name']);\n if (parent.isDragDrop) {\n parent.droppedObjects.push(result.files[count]);\n }\n }\n parent.duplicateItems = [];\n parent.duplicateRecords = [];\n if (parent.isDragDrop && !parent.isPasteError) {\n parent.isDropEnd = true;\n }\n else {\n parent.isDropEnd = false;\n }\n parent.trigger('success', { action: operation, result: result });\n if (!parent.isDragDrop || (parent.path === parent.dragPath) || (parent.path === parent.dropPath)\n || parent.isSearchDrag) {\n parent.isPathDrag = false;\n read(parent, events.pasteEnd, parent.path);\n }\n else {\n readDropPath(parent);\n }\n}\n/**\n * Reads the drop path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function readDropPath(parent) {\n var pathId = getValue('_fm_id', parent.dropData);\n parent.expandedId = pathId;\n parent.itemData = [parent.dropData];\n if (parent.isPathDrag) {\n parent.notify(events.pathDrag, parent.itemData);\n }\n else {\n if (parent.navigationpaneModule) {\n var node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n if (!node) {\n var liElement = document.querySelector('[data-id = \"' + getValue('id', parent.dropData) + '\"]');\n pathId = liElement.getAttribute('data-uid');\n node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n }\n updatePath(node, parent.dropData, parent);\n }\n read(parent, events.dropPath, parent.dropPath);\n }\n}\n/**\n * Gets the duplicated path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} name - specifies the name.\n * @returns {object} - returns the duplicated path.\n * @private\n */\nexport function getDuplicateData(parent, name) {\n var data = null;\n var records = parent.isDragDrop ? parent.dragData : parent.actionRecords;\n for (var i = 0; i < records.length; i++) {\n if (getValue('name', records[i]) === name) {\n data = records[i];\n break;\n }\n }\n return data;\n}\n/**\n * Gets the create the virtual drag element\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createVirtualDragElement(parent) {\n parent.isSearchDrag = false;\n if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n parent.isSearchDrag = true;\n }\n if (parent.activeModule !== 'navigationpane') {\n parent.dragNodes = [];\n var i = 0;\n while (i < parent.selectedItems.length) {\n parent.dragNodes.push(parent.selectedItems[i]);\n i++;\n }\n if (parent.selectedItems.length === 0 && parent.dragData && parent.dragData.length === 1) {\n parent.dragNodes.push(getItemName(parent, parent.dragData[0]));\n }\n }\n var cloneIcon = parent.createElement('div', {\n className: 'e-fe-icon ' + fileType(parent.dragData[0])\n });\n var cloneName = parent.createElement('div', {\n className: 'e-fe-name',\n innerHTML: parent.dragData[0].name\n });\n var virtualEle = parent.createElement('div', {\n className: 'e-fe-content'\n });\n virtualEle.appendChild(cloneIcon);\n virtualEle.appendChild(cloneName);\n var ele = parent.createElement('div', {\n className: CLS.CLONE\n });\n ele.appendChild(virtualEle);\n if (parent.dragNodes.length > 1) {\n var badge = parent.createElement('span', {\n className: 'e-fe-count',\n innerHTML: (parent.dragNodes.length).toString(10)\n });\n ele.appendChild(badge);\n }\n parent.virtualDragElement = ele;\n parent.element.appendChild(parent.virtualDragElement);\n}\n/**\n * Drops the stop handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStopHandler(parent, args) {\n var dragArgs = args;\n dragArgs.cancel = false;\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeDropTarget(parent);\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n removeBlur(parent);\n parent.uploadObj.dropArea = select('#' + parent.element.id + CLS.CONTENT_ID, parent.element);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n getTargetModule(parent, args.target);\n parent.notify(events.dropInit, args);\n removeBlur(parent, 'hover');\n dragArgs.fileDetails = parent.dragData;\n parent.trigger('fileDragStop', dragArgs, function (dragArgs) {\n if (!dragArgs.cancel && !isNOU(parent.targetModule) && parent.targetModule !== '' && parent.dragCount > 2) {\n dropHandler(parent);\n }\n parent.dragCount = 0;\n });\n}\n/**\n * Drag the start handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {'DragEventArgs'} args - specifies the drag event arguements.\n * @param {Draggable} dragObj - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStartHandler(parent, args, dragObj) {\n var dragArgs = args;\n dragArgs.cancel = false;\n dragArgs.fileDetails = parent.dragData;\n parent.dragCount = 0;\n parent.droppedObjects = [];\n if (!parent.allowDragAndDrop || ((parent.activeModule === 'navigationpane') &&\n (closest(args.element, 'li').getAttribute('data-uid') === parent.pathId[0]))) {\n dragArgs.cancel = true;\n }\n if ((parent.activeModule === 'navigationpane') &&\n (parent.pathId.indexOf(closest(args.element, 'li').getAttribute('data-uid')) !== -1)) {\n parent.isPathDrag = true;\n }\n else {\n parent.isPathDrag = false;\n }\n removeBlur(parent);\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else if (!dragArgs.cancel) {\n var i = 0;\n while (i < parent.activeElements.length) {\n addBlur(parent.activeElements[i]);\n i++;\n }\n parent.trigger('fileDragStart', dragArgs, function (dragArgs) {\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else {\n parent.uploadObj.dropArea = null;\n }\n });\n }\n}\n/**\n * Drag the cancel handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function dragCancel(parent) {\n removeBlur(parent);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n}\n/**\n * Remove drop target handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function removeDropTarget(parent) {\n removeItemClass(parent, CLS.DROP_FOLDER);\n removeItemClass(parent, CLS.DROP_FILE);\n}\n/**\n * Remove item class handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} value - specifies the value.\n * @returns {void}\n * @private\n */\nexport function removeItemClass(parent, value) {\n var ele = parent.element.querySelectorAll('.' + value);\n for (var i = 0; i < ele.length; i++) {\n ele[i].classList.remove(value);\n }\n}\n/**\n * Remove item class handler\n *\n * @param {Element} scrollParent - specifies the scrolling target.\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} nodeClass - specifies the node class.\n * @param {number} clientY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the target element.\n * @returns {void}\n * @private\n */\nexport function scrollHandler(scrollParent, parent, nodeClass, clientY) {\n var position;\n var elementData = scrollParent.getBoundingClientRect();\n var node = select('.' + nodeClass, scrollParent);\n if ((clientY >= (elementData.top + scrollParent.clientHeight - 30)) && !isNullOrUndefined(node)) {\n position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;\n scrollParent.scrollBy(0, position);\n }\n if (!isNullOrUndefined(node) && (clientY <= (elementData.top + 30))) {\n position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;\n scrollParent.scrollBy(0, -position);\n }\n}\n/**\n * Dragging handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nexport function draggingHandler(parent, args) {\n var dragArgs = args;\n dragArgs.fileDetails = parent.dragData;\n var canDrop = false;\n getTargetModule(parent, args.target);\n removeDropTarget(parent);\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeBlur(parent, 'hover');\n var node = null;\n var scrollParent;\n if (parent.targetModule === 'navigationpane') {\n node = closest(args.target, 'li');\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n canDrop = true;\n /* istanbul ignore next */\n parent.treeExpandTimer = window.setTimeout(function () { parent.notify(events.dragging, args); }, 800);\n scrollParent = parent.navigationpaneModule.treeObj.element.parentElement;\n scrollHandler(scrollParent, parent, 'e-level-2', args.event.y);\n }\n else if (parent.targetModule === 'detailsview') {\n node = closest(args.target, 'tr');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FOLDER);\n }\n else if (node && !node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FILE);\n }\n canDrop = true;\n scrollParent = parent.detailsviewModule.gridObj.element.querySelector('.e-content');\n scrollHandler(scrollParent, parent, 'e-row', args.event.y);\n }\n else if (parent.targetModule === 'largeiconsview') {\n node = closest(args.target, 'li');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n }\n canDrop = true;\n scrollParent = parent.largeiconsviewModule.element.firstElementChild;\n scrollHandler(scrollParent, parent, 'e-large-icon', args.event.y);\n /* istanbul ignore next */\n }\n else if (parent.targetModule === 'breadcrumbbar') {\n canDrop = true;\n }\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n parent.element.classList.add(canDrop ? 'e-fe-drop' : 'e-no-drop');\n parent.dragCount = parent.dragCount + 1;\n parent.trigger('fileDragging', dragArgs);\n}\n/**\n * Object to string handler\n *\n * @param {Object} data - specifies the data.\n * @returns {string} returns string converted from Object.\n * @private\n */\n// Ignored the message key value in permission object\nexport function objectToString(data) {\n var str = '';\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] !== 'message') {\n str += (i === 0 ? '' : ', ') + keys[i] + ': ' + getValue(keys[i], data);\n }\n }\n return str;\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {string} returns the item name.\n * @private\n */\nexport function getItemName(parent, data) {\n if (parent.hasId) {\n return getValue('id', data);\n }\n return getName(parent, data);\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {void}\n * @private\n */\nexport function updateRenamingData(parent, data) {\n parent.itemData = [data];\n parent.currentItemText = getValue('name', data);\n parent.isFile = getValue('isFile', data);\n parent.filterPath = getValue('filterPath', data);\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function doRename(parent) {\n if (!hasEditAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionEdit);\n }\n else {\n createDialog(parent, 'Rename');\n }\n}\n/* istanbul ignore next */\n/**\n * Download handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function doDownload(parent) {\n var items = parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(parent, items[i], events.permissionDownload);\n return;\n }\n }\n if (parent.selectedItems.length > 0) {\n Download(parent, parent.path, parent.selectedItems);\n }\n}\n/**\n * Delete Files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\nexport function doDeleteFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionEdit);\n return;\n }\n }\n parent.itemData = data;\n Delete(parent, newIds, parent.path, 'delete');\n}\n/* istanbul ignore next */\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\nexport function doDownloadFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasDownloadAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionDownload);\n return;\n }\n }\n parent.itemData = data;\n if (newIds.length > 0) {\n Download(parent, parent.path, newIds);\n }\n}\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @param {string} action - specifies the actions.\n * @returns {void}\n * @private\n */\nexport function createDeniedDialog(parent, data, action) {\n var message = getValue('message', getValue('permission', data));\n if (message === '') {\n message = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', data)).replace('{1}', action);\n }\n var response = {\n error: {\n code: '401',\n fileExists: null,\n message: message\n }\n };\n createDialog(parent, 'Error', response);\n}\n/**\n * Get Access Classes\n *\n * @param {Object} data - specifies the data.\n * @returns {string} - returns accesses classes.\n * @private\n */\nexport function getAccessClass(data) {\n return !hasReadAccess(data) ? 'e-fe-locked e-fe-hidden' : 'e-fe-locked';\n}\n/**\n * Check read access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns read access.\n * @private\n */\nexport function hasReadAccess(data) {\n var permission = getValue('permission', data);\n return (permission && !getValue('read', permission)) ? false : true;\n}\n/**\n * Check edit access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns edit access.\n * @private\n */\nexport function hasEditAccess(data) {\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('write', permission))) : true;\n}\n/**\n * Check content access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns content access.\n * @private\n */\nexport function hasContentAccess(data) {\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('writeContents', permission))) : true;\n}\n/**\n * Check upload access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns upload access.\n * @private\n */\nexport function hasUploadAccess(data) {\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('upload', permission))) : true;\n}\n/**\n * Check download access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns download access.\n * @private\n */\nexport function hasDownloadAccess(data) {\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('download', permission))) : true;\n}\n/**\n * Create new folder handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createNewFolder(parent) {\n var details = parent.itemData[0];\n if (!hasContentAccess(details)) {\n createDeniedDialog(parent, details, events.permissionEditContents);\n }\n else {\n createDialog(parent, 'NewFolder');\n }\n}\n/**\n * Upload item handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function uploadItem(parent) {\n var details = parent.itemData[0];\n if (!hasUploadAccess(details)) {\n createDeniedDialog(parent, details, events.permissionUpload);\n }\n else {\n var eleId = '#' + parent.element.id + CLS.UPLOAD_ID;\n var uploadEle = document.querySelector(eleId);\n uploadEle.click();\n }\n}\n/**\n * Close dialog popup handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function closePopup(parent) {\n if (!isNullOrUndefined(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n}\n/**\n * Access control handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} itemData - specifies the item elements.\n * @param {string} action - specifies the action.\n * @param {boolean} isPathPermision - specifies the path permission.\n * @returns {string} returns the path.\n * @private\n */\nexport function getAccessDetails(parent, itemData, action, isPathPermision) {\n var accessMessage = '';\n for (var i = 0; i < itemData.length; i++) {\n var permission = getValue('permission', itemData[i]);\n if (permission == null) {\n permission = undefined;\n }\n if (isPathPermision) {\n if (permission && (!getValue('read', permission) || !getValue('writeContents', permission))) {\n accessMessage = getValue('message', getValue('permission', itemData[i]));\n if (accessMessage === '') {\n accessMessage = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', itemData[i])).replace('{1}', 'writeContents');\n }\n }\n }\n else {\n var copyOrMovePermission = action === 'copy' ? getValue('copy', permission) : getValue('write', permission);\n if (permission && (!getValue('read', permission) || !copyOrMovePermission)) {\n accessMessage = getValue('message', getValue('permission', itemData[i]));\n if (accessMessage === '') {\n accessMessage = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', itemData[i])).replace('{1}', action);\n }\n }\n }\n if (accessMessage !== '') {\n parent.responseData = {\n cwd: null,\n details: null,\n error: {\n code: '401',\n message: accessMessage,\n fileExists: null\n },\n files: null\n };\n break;\n }\n }\n return accessMessage;\n}\n","import { Ajax, Fetch, createElement, select, extend, Internationalization } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, setValue, getValue } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { fileType, setNodeId, getLocaleText, setDateObject, doPasteUpdate, getPathObject } from '../common/utility';\nimport { generatePath, getAccessDetails } from '../common/utility';\nimport { getUid } from '@syncfusion/ej2-grids';\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Function to read the content from given path in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function read(parent, event, path) {\n var itemData = parent.itemData;\n for (var i = 0; i < itemData.length; i++) {\n if (isNOU(getValue('hasChild', itemData[i]))) {\n setValue('hasChild', false, itemData[i]);\n }\n }\n var data = { action: 'read', path: path, showHiddenItems: parent.showHiddenItems, data: itemData };\n createAjax(parent, data, readSuccess, event);\n}\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nexport function createFolder(parent, itemName) {\n var data = { action: 'create', path: parent.path, name: itemName, data: parent.itemData };\n createAjax(parent, data, createSuccess, itemName);\n}\n/**\n * Function to filter the files in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nexport function filter(parent, event) {\n var data = { action: 'filter', path: parent.path, showHiddenItems: parent.showHiddenItems, data: [getPathObject(parent)] };\n var filterData;\n var filterDataVal = parent.filterData ? extend(filterData, data, parent.filterData) : data;\n createAjax(parent, filterDataVal, filterSuccess, event, getValue('action', filterDataVal));\n}\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string} itemNewName - specifies the item's new name.\n * @returns {void}\n * @private\n */\nexport function rename(parent, path, itemNewName) {\n var name;\n var newName;\n if (parent.breadcrumbbarModule.searchObj.element.value === '' && !parent.isFiltered) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n var fPath = parent.filterPath;\n if (parent.hasId) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(path, '') + parent.currentItemText;\n newName = fPath.replace(path, '') + itemNewName;\n }\n }\n var data = {\n action: 'rename', path: path, name: name, newName: newName, data: parent.itemData, showFileExtension: parent.showFileExtension\n };\n createAjax(parent, data, renameSuccess, path);\n}\n/**\n * Function to paste file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} names - specifies the names.\n * @param {string} targetPath - specifies the target path.\n * @param {string} pasteOperation - specifies the paste operation.\n * @param {string[]} renameItems - specifies the rename items.\n * @param {Object[]} actionRecords - specifies the action records.\n * @returns {void}\n * @private\n */\nexport function paste(parent, path, names, targetPath, pasteOperation, renameItems, actionRecords) {\n var data = {\n action: pasteOperation, path: path, targetData: parent.itemData[0],\n targetPath: targetPath, names: names, renameFiles: renameItems, data: actionRecords\n };\n parent.destinationPath = targetPath;\n createAjax(parent, data, pasteSuccess, path, pasteOperation, targetPath);\n}\n/**\n * Function to delete file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} items - specifies the items.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nexport function Delete(parent, items, path, operation) {\n var data = { action: operation, path: path, names: items, data: parent.itemData };\n createAjax(parent, data, deleteSuccess, path);\n}\n/* istanbul ignore next */\n/**\n * Function to get details of file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} names - specifies the names.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation data.\n * @returns {void}\n * @private\n */\nexport function GetDetails(parent, names, path, operation) {\n var data = { action: operation, path: path, names: names, data: parent.itemData };\n createAjax(parent, data, detailsSuccess, path, operation);\n}\n/**\n * Function for getDateFormat in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction getDateFormat(parent) {\n var columns = parent.detailsViewSettings.columns;\n var dateFormat;\n if (!columns) {\n return null;\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === '_fm_modified') {\n if (!isNOU(columns[i].format)) {\n dateFormat = columns[i].format.toString();\n }\n break;\n }\n }\n return dateFormat;\n}\n/**\n * Checks whether fileSystemData is enabled.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {boolean} - returns the boolean value.\n */\nexport function isFileSystemData(parent) {\n var isFileSystemData = parent.fileSystemData.length >= 0 && isNOU(parent.ajaxSettings.url);\n return isFileSystemData;\n}\n/**\n * Function to check whether file already exist or not.\n *\n * @param {Record<string, any>} fileSystemData - specifies the file data.\n * @param {string} name - specifies the name.\n * @returns {boolean} - returns the boolean value.\n * @private\n */\nfunction isFileExists(fileSystemData, name) {\n var isExists = fileSystemData.some(function (item) { return item.name === name; });\n return isExists;\n}\n/**\n * Function to find the index value of a file or folder.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {number} id - specifies the id.\n * @returns {number} - returns the index value.\n * @private\n */\nfunction findIndexById(parent, id) {\n var index = parent.fileSystemData.findIndex(function (item) {\n return !isNOU(item) && String(item.id) === String(id);\n });\n return index;\n}\n/**\n * Function to get the entire data of a file or folder using id value.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {number | string} id - specifies the id.\n * @returns {Object} - returns the data.\n * @private\n */\nfunction filterById(parent, id) {\n var data = parent.fileSystemData.filter(function (item) { return String(item.id) === String(id); })[0];\n return data;\n}\n/**\n * Function to get the entire data of a file or folder for a parent.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {number | string} parentId - specifies the parent id.\n * @returns {Object[]} - returns the data.\n * @private\n */\nfunction filterByParent(parent, parentId) {\n var data = parent.fileSystemData.filter(function (item) { return String(item.parentId) === String(parentId); });\n return data;\n}\n/**\n * Function to create a new copied file or folder.\n *\n * @param {Record<string, any>} data - specifies the file or folder data.\n * @param {Record<string, any>} target - specifies the target data.\n * @param {string} itemName - specifies the item name.\n * @param {boolean} isCopy - specifies the copy operation.\n * @returns {Record<string, Object>} - returns the data.\n * @private\n */\nfunction createNewItem(data, target, itemName, isCopy) {\n var newItem = {};\n //Construct the new folder details.\n for (var key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newItem[key] = null;\n }\n }\n var currentDate = new Date();\n var folderPath = target.id !== 0 ? target.filterPath + target.name : '\\\\';\n Object.assign(newItem, {\n dateCreated: currentDate,\n dateModified: currentDate,\n filterPath: folderPath,\n hasChild: isCopy ? data.hasChild : false,\n id: getUid(itemName === null ? data.name : itemName),\n isFile: isCopy ? data.isFile : false,\n name: itemName === null ? data.name : itemName,\n parentId: target.id,\n size: isCopy ? data.size : 0,\n type: isCopy ? data.type : ''\n });\n return newItem;\n}\n/**\n * Function to create an error response.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} message - specifies the error message.\n * @param {string} code - specifies the error code.\n * @param {Object[]} fileName - specifies the file name.\n * @returns {void}\n * @private\n */\nfunction createErrorObject(parent, message, code, fileName) {\n parent.responseData = {\n cwd: null,\n details: null,\n error: {\n code: code,\n message: message,\n fileExists: fileName != null ? fileName : null\n },\n files: null\n };\n}\n/**\n * Function to trigger folder creation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerFolderCreation(parent, data, eventArgs) {\n var createEventArgs = {\n folderName: getValue('name', data),\n cancel: false,\n path: getValue('path', data),\n parentFolder: getValue('data', data)\n };\n parent.trigger('beforeFolderCreate', createEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n if (!isFileExists(parent.fileSystemData, args.folderName)) {\n var data_1 = args.parentFolder[0];\n var newObject = createNewItem(data_1, data_1, args.folderName, false);\n parent.fileSystemData.push(newObject);\n }\n else {\n var message = 'A file or folder with the name ' + args.folderName + ' already exists.';\n createErrorObject(parent, message, '400', null);\n }\n }\n });\n}\n/**\n * Function to trigger delete operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerDeleteOperation(parent, data, eventArgs) {\n var deleteEventArgs = {\n cancel: false,\n itemData: getValue('data', data),\n path: getValue('path', data)\n };\n parent.trigger('beforeDelete', deleteEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n args.itemData.forEach(function (itemData) {\n var index = findIndexById(parent, itemData.id);\n if (index !== -1) {\n parent.fileSystemData.splice(index, 1);\n }\n if (!itemData.isFile) {\n var subItems = parent.fileSystemData.filter(function (obj) { return obj.filterPath.includes(itemData.name); });\n subItems.forEach(function (subItem) {\n var index = findIndexById(parent, subItem.id);\n if (index !== -1) {\n parent.fileSystemData.splice(index, 1);\n }\n });\n }\n });\n }\n });\n}\n/**\n * Function to trigger rename operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerRenameOperation(parent, data, eventArgs) {\n var renameEventArgs = {\n cancel: false,\n newName: getValue('newName', data),\n itemData: getValue('data', data),\n path: getValue('path', data)\n };\n parent.trigger('beforeRename', renameEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n if (!isFileExists(parent.fileSystemData, args.newName)) {\n var fileData = filterById(parent, args.itemData[0].id);\n fileData.name = args.newName;\n }\n else {\n var message = 'Cannot rename' + args.itemData[0].name + 'to' + args.newName + ': destination already exists.';\n createErrorObject(parent, message, '400', null);\n }\n }\n });\n}\n/**\n * Function to trigger move or copy operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerMoveOrCopyOperation(parent, data, eventArgs) {\n var moveEventArgs = {\n cancel: false,\n itemData: getValue('data', data),\n isCopy: getValue('action', data) === 'copy' ? true : false,\n path: getValue('path', data),\n targetData: getValue('targetData', data),\n targetPath: getValue('targetPath', data)\n };\n parent.trigger('beforeMove', moveEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n var message = 'File Already Exists';\n var action = getValue('action', data);\n var itemPermission = getAccessDetails(parent, args.itemData, action, false);\n var pathPermission = getAccessDetails(parent, [args.targetData], action, true);\n var file_1 = [];\n parent.pasteNodes = [];\n if (itemPermission === '' && pathPermission === '') {\n if (args.isCopy) {\n var folderSubItems_1 = filterByParent(parent, args.targetData.id);\n var copiedFolders = args.itemData;\n copiedFolders.forEach(function (itemData) {\n if (!isFileExists(folderSubItems_1, itemData.name) || getValue('renameFiles', data).length > 0) {\n if (getValue('renameFiles', data).length > 0) {\n var names = itemData.name.split('.');\n var name_1 = itemData.name.includes('.') ? names[0] + '(' + parent.existingFileCount + ').' + names[1] : names[0] + '(' + parent.existingFileCount + ')';\n copyFolderItems(parent, itemData, args.targetData, name_1);\n parent.responseData.error = null;\n parent.existingFileCount++;\n return;\n }\n copyFolderItems(parent, itemData, args.targetData, null);\n }\n else {\n file_1.push(itemData.name);\n }\n });\n if (file_1.length > 0) {\n createErrorObject(parent, message, '400', file_1);\n }\n return;\n }\n var target = args.targetData;\n var getTargetFiles = filterByParent(parent, target.id);\n for (var i = 0; i < args.itemData.length; i++) {\n var currItem = args.itemData[i];\n if (!isFileExists(getTargetFiles, currItem.name) || getValue('renameFiles', data).length > 0) {\n if (!target.hasChild) {\n target.hasChild = !currItem.isFile;\n }\n if (!currItem.isFile) {\n //Check whether the source folder include other sub folders or not.\n var subItems = currItem.parentId !== 0\n ? filterByParent(parent, currItem.parentID) : [];\n var itemData = filterById(parent, currItem.parentId);\n itemData.hasChild = subItems.length > 1 ? true : false;\n }\n var fileData = filterById(parent, currItem.id);\n if (getValue('renameFiles', data).length > 0) {\n var names = currItem.name.split('.');\n currItem.name = currItem.name.includes('.') ? names[0] + '(' + parent.existingFileCount + ').' + names[1] : names[0] + '(' + parent.existingFileCount + ')';\n fileData.name = currItem.name;\n parent.responseData.error = null;\n parent.existingFileCount++;\n parent.dropData = target;\n parent.dropPath = args.path;\n var pathArray = args.targetPath.replace(/^\\/|\\/$/g, '').split('/');\n target = filterById(parent, pathArray[pathArray.length - 1]);\n }\n fileData.parentId = target.id;\n fileData.filterPath = target.id === 0 ? '\\\\' : target.filterPath + target.name + '\\\\';\n }\n else {\n file_1.push(currItem.name);\n }\n }\n if (file_1.length > 0) {\n createErrorObject(parent, message, '400', file_1);\n }\n }\n }\n });\n}\n/**\n * Function to trigger search operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerSearchOperation(parent, data, eventArgs) {\n var searchEventArgs = {\n searchResults: getValue('data', data),\n cancel: false,\n path: getValue('path', data),\n searchText: getValue('searchString', data),\n caseSensitive: getValue('caseSensitive', data),\n showHiddenItems: getValue('showHiddenItems', data)\n };\n parent.trigger('search', searchEventArgs, function (args) {\n setValue('data', args.searchResults, data);\n if (args.cancel) {\n eventArgs.cancel = true;\n }\n });\n}\n/**\n * Function to trigger client side events.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerClientEvents(parent, data, eventArgs) {\n switch (getValue('action', data)) {\n case 'create': {\n triggerFolderCreation(parent, data, eventArgs);\n break;\n }\n case 'delete': {\n triggerDeleteOperation(parent, data, eventArgs);\n break;\n }\n case 'rename': {\n triggerRenameOperation(parent, data, eventArgs);\n break;\n }\n case 'move':\n case 'copy': {\n triggerMoveOrCopyOperation(parent, data, eventArgs);\n break;\n }\n case 'search': {\n triggerSearchOperation(parent, data, eventArgs);\n break;\n }\n }\n}\n/**\n * Creates an AJAX request for the file manager.\n *\n * @param {IFileManager} parent - The parent file manager instance.\n * @param {Object} data - The data object for the AJAX request.\n * @param {Function} fn - The callback function to be executed after the AJAX request.\n * @param {string} [event] - The event type for the AJAX request.\n * @param {string} [operation] - The operation type for the AJAX request.\n * @param {string} [targetPath] - The target path for the AJAX request.\n * @returns {void}\n * @private\n */\nfunction createAjax(parent, data, fn, event, operation, targetPath) {\n var ajaxSettings = {\n url: parent.ajaxSettings.url,\n type: 'POST',\n mode: true,\n dataType: 'json',\n contentType: 'application/json',\n data: JSON.stringify(data),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n var eventArgs = { action: getValue('action', data), ajaxSettings: ajaxSettings, cancel: false };\n triggerClientEvents(parent, data, eventArgs);\n parent.trigger('beforeSend', eventArgs, function (beforeSendArgs) {\n if (!beforeSendArgs.cancel) {\n parent.notify(events.beforeRequest, {});\n if (isFileSystemData(parent)) {\n var filePath = event === 'node-expand' || event === 'finalize-end' || event === 'rename-end-parent'\n ? getValue('path', data) : parent.path;\n var pathArray = filePath.replace(/^\\/|\\/$/g, '').split('/');\n var idValue = event === 'rename-end-parent' || (event === 'path-changed' && getValue('data', data).length !== 0 && isNOU(parent.renamedItem))\n || (event === 'paste-end' && (parent.targetModule === 'largeiconsview' || parent.targetModule === 'detailsview'))\n ? getValue('data', data)[0].id : pathArray[pathArray.length - 1];\n var action = getValue('action', data);\n var isFileOperation = (action === 'move' || action === 'rename' || action === 'copy' || action === 'delete' || action === 'search') && event !== 'rename-end';\n if (action === 'read' || action === 'create' || event === 'rename-end') {\n var rootId = parent.fileSystemData\n .filter(function (item) { return isNOU(item.parentId); })\n .length > 0\n ? parent.fileSystemData\n .filter(function (item) { return isNOU(item.parentId); })[0].id\n : 0;\n parent.responseData = {\n cwd: filterById(parent, parent.path === '/' && event !== 'node-expand' && event !== 'rename-end-parent' ? rootId : idValue),\n details: null,\n error: null,\n files: filterByParent(parent, parent.path === '/' && event !== 'node-expand' && event !== 'rename-end-parent' ? rootId : idValue)\n };\n if (isNOU(parent.responseData.cwd)) {\n var message = 'Cannot load empty data within the File Manager.';\n createErrorObject(parent, message, '400', null);\n }\n }\n else if (isFileOperation && parent.responseData.error === null) {\n var itemData = action === 'search' || action === 'delete' ? getValue('data', data) : [];\n if (itemData.length === 0) {\n if (action === 'copy') {\n itemData = parent.pasteNodes.map(function (item) { return filterById(parent, item); });\n }\n else {\n itemData = getValue('data', data).map(function (item) { return filterById(parent, item.id); });\n }\n }\n parent.responseData = {\n cwd: null,\n details: null,\n error: null,\n files: itemData\n };\n }\n else if (getValue('action', data) === 'details') {\n var itemData = getValue('data', data);\n var details = itemData[0];\n var isMultipleFiles = itemData.length > 1;\n var itemNames = itemData.map(function (item) { return item.name; });\n var totalSize = isMultipleFiles ? getSize(itemData.reduce(function (accumulator, currentObject) { return accumulator + (currentObject.size || 0); }, 0)) : getSize(details.size);\n var path = (parent.pathNames.includes(details.name) ? parent.pathNames.join('/') : parent.pathNames.join('/') + '/' + details.name);\n parent.responseData.details = Object.assign({\n location: isMultipleFiles ? null : path,\n multipleFiles: isMultipleFiles,\n name: itemNames.join(', '),\n size: totalSize\n }, isMultipleFiles ? {} : {\n created: details.dateCreated,\n isFile: details.isFile,\n modified: details.dateModified,\n permission: details.permission\n });\n }\n performReadOperation(parent, parent.responseData, fn, data, event, operation, targetPath, beforeSendArgs);\n return;\n }\n var ajax = new Ajax({\n url: getValue('url', beforeSendArgs.ajaxSettings),\n type: getValue('type', beforeSendArgs.ajaxSettings),\n mode: getValue('mode', beforeSendArgs.ajaxSettings),\n dataType: getValue('dataType', beforeSendArgs.ajaxSettings),\n contentType: getValue('contentType', beforeSendArgs.ajaxSettings),\n data: getValue('data', beforeSendArgs.ajaxSettings),\n beforeSend: getValue('beforeSend', beforeSendArgs.ajaxSettings),\n onSuccess: function (result) {\n if (isNOU(result)) {\n var result_1 = {\n error: {\n fileExists: null,\n message: getLocaleText(parent, 'Server-Error') + ' ' + parent.ajaxSettings.url,\n code: '406'\n },\n files: null\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result_1, event, operation, targetPath);\n return;\n }\n if (typeof (result) === 'string') {\n result = JSON.parse(result);\n }\n performReadOperation(parent, result, fn, data, event, operation, targetPath, beforeSendArgs);\n },\n onFailure: function () {\n var result = {\n files: null,\n error: {\n code: '404',\n message: getLocaleText(parent, 'Network-Error') + ' ' + parent.ajaxSettings.url,\n fileExists: null\n }\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result, event, operation, targetPath);\n }\n });\n ajax.send();\n }\n });\n}\n/**\n * Function to get file size.\n *\n * @param {number} size - specifies the size.\n * @returns {string} - returns the size.\n * @private\n */\nfunction getSize(size) {\n var hz;\n if (size < 1024) {\n hz = size + ' B';\n }\n else if (size < 1024 * 1024) {\n hz = (size / 1024).toFixed(2) + ' KB';\n }\n else if (size < 1024 * 1024 * 1024) {\n hz = (size / 1024 / 1024).toFixed(2) + ' MB';\n }\n else {\n hz = (size / 1024 / 1024 / 1024).toFixed(2) + ' GB';\n }\n return hz;\n}\n/**\n * Function to perform read operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {Function} fn - specifies the function.\n * @param {Object} data - specifies the data.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the targetPath.\n * @param {BeforeSendEventArgs} beforeSendArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction performReadOperation(parent, result, fn, data, event, operation, targetPath, beforeSendArgs) {\n parent.notify(events.afterRequest, { action: 'success' });\n var id = parent.expandedId ? parent.expandedId : parent.pathId[parent.pathId.length - 1];\n if (!isNOU(result.cwd) && (getValue('action', data) === 'read')) {\n result.cwd.name = (parent.pathId.length === 1) ? (parent.rootAliasName || result.cwd.name) : result.cwd.name;\n setValue('_fm_id', id, result.cwd);\n setValue(id, result.cwd, parent.feParent);\n if (!isNOU(result.files) || result.error.code === '401') {\n if ((event === 'finalize-end' || event === 'initial-end') && parent.pathNames.length === 0) {\n var root = getValue(parent.pathId[0], parent.feParent);\n parent.pathNames[0] = getValue('name', root);\n parent.hasId = !isNOU(getValue('id', root));\n }\n if (event === 'finalize-end') {\n generatePath(parent);\n }\n }\n }\n var intl = new Internationalization(parent.locale);\n if (!isNOU(result.files)) {\n setDateObject(result.files, intl, getDateFormat(parent));\n for (var i = 0, len = result.files.length; i < len; i++) {\n var item = result.files[i];\n setValue('_fm_iconClass', fileType(item), item);\n }\n if (getValue('action', data) === 'read') {\n setNodeId(result, id);\n setValue(id, result.files, parent.feFiles);\n }\n }\n if (!isNOU(result.details) && !isNOU(parent.rootAliasName)) {\n var rootName = parent.rootAliasName || getValue('name', result.details);\n var location_1 = getValue('location', result.details).replace(new RegExp('/', 'g'), '\\\\');\n if ((getValue('path', data) === '/') || (parent.hasId && getValue('path', data).match(/[/]/g).length === 1)) {\n if (getValue('names', data).length === 0) {\n setValue('name', rootName, result.details);\n location_1 = rootName;\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n setValue('location', location_1, result.details);\n }\n fn(parent, result, event, operation, targetPath);\n if (!isNOU(result.files) && (event === 'path-changed' || event === 'finalize-end' || event === 'open-end' || event === 'drop-path')) {\n parent.notify(events.searchTextChange, result);\n }\n if (typeof getValue('onSuccess', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', beforeSendArgs.ajaxSettings)();\n }\n}\n/**\n * Function to copy operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {string} target - specifies the target.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nfunction copyFolderItems(parent, data, target, itemName) {\n var newObject = createNewItem(data, target, itemName, true);\n parent.fileSystemData.push(newObject);\n parent.pasteNodes.push(newObject.id);\n var copiedItems = filterByParent(parent, data.id);\n for (var i = 0; i < copiedItems.length; i++) {\n copyFolderItems(parent, copiedItems[i], newObject, null);\n }\n}\n/**\n * Function for trigger Ajax failure in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {BeforeSendEventArgs} beforeSendArgs - specifies the beforeSendArgs.\n * @param {Function} fn - specifies the function.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the targetPath.\n * @returns {void}\n * @private\n */\nfunction triggerAjaxFailure(parent, beforeSendArgs, fn, result, event, operation, targetPath) {\n parent.notify(events.afterRequest, { action: 'failure' });\n fn(parent, result, event, operation, targetPath);\n if (typeof getValue('onFailure', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onFailure', beforeSendArgs.ajaxSettings)();\n }\n}\n/**\n * Function for read success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction readSuccess(parent, result, event) {\n try {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n var args = { action: 'read', result: result };\n parent.trigger('success', args);\n }\n else {\n if (!isNOU(result.error) && result.error.code === '401') {\n result.files = [];\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n }\n onFailure(parent, result, 'read');\n parent.setProperties({ path: parent.oldPath }, true);\n parent.pathNames.pop();\n }\n }\n catch (error) {\n handleCatchError(parent, error, 'read');\n parent.setProperties({ path: parent.oldPath }, true);\n parent.pathNames.pop();\n }\n if (parent.isDragDrop && parent.isDropEnd) {\n if (parent.droppedObjects.length !== 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n }\n parent.isDropEnd = parent.isDragDrop = false;\n }\n}\n/**\n * Function for filter success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction filterSuccess(parent, result, event, action) {\n try {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: action, result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, action);\n }\n }\n catch (error) {\n handleCatchError(parent, error, action);\n }\n}\n/* istanbul ignore next */\n/**\n * Function for create success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nfunction createSuccess(parent, result, itemName) {\n try {\n if (!isNOU(result.files)) {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n parent.createdItem = isFileSystemData(parent) ? result.files[result.files.length - 1] : result.files[0];\n parent.breadcrumbbarModule.searchObj.value = '';\n var createEventArgs = {\n folderName: itemName,\n path: parent.path,\n parentFolder: parent.itemData\n };\n parent.trigger('folderCreate', createEventArgs);\n var args = { action: 'create', result: result };\n parent.trigger('success', args);\n parent.itemData = [getPathObject(parent)];\n read(parent, events.createEnd, parent.path);\n }\n else {\n if (result.error.code === '400') {\n if (parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#newname', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n else {\n var result_2 = {\n files: null,\n error: {\n code: '400',\n message: getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + itemName + '\"'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result_2);\n }\n var args = { action: 'create', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'create');\n }\n }\n }\n catch (error) {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n handleCatchError(parent, error, 'create');\n }\n}\n/* istanbul ignore next */\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @returns {void}\n * @private\n */\nfunction renameSuccess(parent, result) {\n try {\n if (!isNOU(result.files)) {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n var args = { action: 'rename', result: result };\n parent.trigger('success', args);\n parent.renamedItem = Array.isArray(result.files) ? result.files[0] : result.files;\n var renameEventArgs = {\n newName: parent.renamedItem.name,\n itemData: [parent.renamedItem],\n path: parent.path\n };\n parent.trigger('rename', renameEventArgs);\n if (parent.activeModule === 'navigationpane') {\n var pathObject = getPathObject(parent);\n var pathLevel = parent.pathId[parent.pathId.length - 1].split('_').length - 2;\n parent.pathId.pop();\n parent.itemData = [getValue(parent.pathId[parent.pathId.length - 1], parent.feParent)];\n read(parent, events.renameEndParent, getValue('filterPath', parent.renamedItem).replace(/\\\\/g, '/'));\n if (!isNOU(pathObject) && parent.pathNames.length > 1 && pathLevel <= parent.pathNames.length - 1) {\n parent.pathNames[pathLevel] = parent.renameText;\n if (!parent.hasId) {\n parent.setProperties({ path: \"/\" + parent.pathNames.slice(1).join('/') + \"/\" }, true);\n }\n }\n parent.itemData = parent.navigationpaneModule.previousSelected.length > 0\n ? parent.navigationpaneModule.treeObj.getTreeData(parent.navigationpaneModule.previousSelected[0]) : parent.itemData;\n read(parent, events.pathChanged, parent.path);\n parent.itemData[0] = parent.renamedItem;\n parent.renamedItem = null;\n }\n else {\n parent.itemData = [getPathObject(parent)];\n if (parent.breadcrumbbarModule.searchObj.value !== '') {\n Search(parent, events.renameEnd, parent.path, parent.searchWord, parent.showHiddenItems, !parent.searchSettings.ignoreCase);\n }\n else {\n if (parent.isFiltered) {\n filter(parent, events.renameEnd);\n }\n else {\n read(parent, events.renameEnd, parent.path);\n }\n }\n }\n }\n else {\n if (result.error.code === '400' && parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#rename', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-Rename-Exists').replace('{0}', '\"' + parent.currentItemText + '\"');\n error = error.replace('{1}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n var args = { action: 'rename', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'rename');\n }\n }\n }\n catch (error) {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n handleCatchError(parent, error, 'rename');\n }\n}\n/* istanbul ignore next */\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction pasteSuccess(parent, result, path, operation) {\n try {\n var moveorcopyEventArgs = {\n itemData: result.files,\n isCopy: operation === 'copy' ? true : false,\n path: path,\n targetData: parent.itemData[0],\n targetPath: parent.path\n };\n parent.trigger('move', moveorcopyEventArgs);\n if (result.error && result.error.fileExists) {\n parent.fileLength = 0;\n if (!isNOU(result.files)) {\n parent.isPasteError = true;\n doPasteUpdate(parent, operation, result);\n }\n createExtDialog(parent, 'DuplicateItems', result.error.fileExists);\n if (result.error.code === '404') {\n createDialog(parent, 'Error', result);\n }\n }\n else if (!result.error && !isNOU(result.files)) {\n parent.isPasteError = false;\n doPasteUpdate(parent, operation, result);\n }\n else if (result.error && !isNOU(result.files)) {\n parent.isPasteError = true;\n doPasteUpdate(parent, operation, result);\n createDialog(parent, 'Error', result);\n }\n else {\n onFailure(parent, result, operation);\n }\n }\n catch (error) {\n handleCatchError(parent, error, operation);\n }\n}\n/**\n * Function to delete success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nfunction deleteSuccess(parent, result, path) {\n try {\n var deleteEventArgs = {\n itemData: result.files,\n path: path\n };\n parent.trigger('delete', deleteEventArgs);\n if (!isNOU(result.files)) {\n parent.setProperties({ path: path }, true);\n parent.itemData = [getPathObject(parent)];\n read(parent, events.deleteEnd, parent.path);\n if (result.error) {\n onFailure(parent, result, 'delete');\n }\n else {\n var args = { action: 'delete', result: result };\n parent.trigger('success', args);\n }\n }\n else {\n onFailure(parent, result, 'delete');\n }\n }\n catch (error) {\n handleCatchError(parent, error, 'delete');\n }\n}\n/**\n * Function for details success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction detailsSuccess(\n// eslint:disable-next-line\nparent, result, path, operation) {\n try {\n if (!isNOU(result.details)) {\n createDialog(parent, operation, null, result.details);\n var args = { action: 'details', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'details');\n }\n }\n catch (error) {\n handleCatchError(parent, error, 'details');\n }\n}\n/**\n * Function for on failure event in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction onFailure(parent, result, action) {\n createDialog(parent, 'Error', result);\n var args = { action: action, error: result.error };\n parent.trigger('failure', args);\n}\n/**\n * Function for search in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @param {string} searchString - specifies the search string.\n * @param {boolean} showHiddenItems - specifies the hidden items.\n * @param {boolean} caseSensitive - specifies the casing of search text.\n * @returns {void}\n * @private\n */\nexport function Search(parent, event, path, searchString, showHiddenItems, caseSensitive) {\n var data = {\n action: 'search', path: path, searchString: searchString, showHiddenItems: showHiddenItems, caseSensitive: caseSensitive,\n data: parent.itemData\n };\n createAjax(parent, data, searchSuccess, event);\n}\n/* istanbul ignore next */\n/**\n * Function for search success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction searchSuccess(parent, result, event) {\n try {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: 'search', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'search');\n }\n }\n catch (error) {\n handleCatchError(parent, error, 'search');\n }\n}\n/* istanbul ignore next */\n/**\n * Function for download in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} items - specifies the items.\n * @returns {void}\n * @private\n */\nexport function Download(parent, path, items) {\n var downloadUrl = parent.ajaxSettings.downloadUrl ? parent.ajaxSettings.downloadUrl : parent.ajaxSettings.url;\n var data = { 'action': 'download', 'path': path, 'names': items, 'data': parent.itemData };\n var ajaxSettings = {\n url: downloadUrl,\n type: 'POST',\n contentType: 'application/json',\n responseType: 'blob',\n data: JSON.stringify(data),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n var eventArgs = { data: data, cancel: false, useFormPost: true, ajaxSettings: ajaxSettings };\n parent.trigger('beforeDownload', eventArgs, function (downloadArgs) {\n if (!downloadArgs.cancel) {\n if (downloadArgs.useFormPost) {\n var form = createElement('form', {\n id: parent.element.id + '_downloadForm',\n attrs: { action: downloadUrl, method: 'post', name: 'downloadForm', 'download': '' }\n });\n var input = createElement('input', {\n id: parent.element.id + '_hiddenForm',\n attrs: { name: 'downloadInput', value: JSON.stringify(downloadArgs.data), type: 'hidden' }\n });\n form.appendChild(input);\n parent.element.appendChild(form);\n document.forms.namedItem('downloadForm').submit();\n parent.element.removeChild(form);\n }\n else {\n try {\n var contentDisposition_1;\n var fileName_1;\n var fetch_1 = new Fetch({\n url: getValue('url', downloadArgs.ajaxSettings),\n type: getValue('type', downloadArgs.ajaxSettings),\n contentType: getValue('contentType', downloadArgs.ajaxSettings),\n responseType: getValue('responseType', downloadArgs.ajaxSettings),\n beforeSend: getValue('beforeSend', downloadArgs.ajaxSettings),\n onLoad: function (e) {\n contentDisposition_1 = e.headers.get('Content-Disposition');\n if (contentDisposition_1) {\n var filenameMatch = contentDisposition_1.match(/filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/);\n var extractedFilename = filenameMatch && filenameMatch[1];\n fileName_1 = extractedFilename ? extractedFilename.replace(/['\"]/g, '') : fileName_1;\n }\n else {\n fileName_1 = parent.itemData.length > 1 ? 'files.zip' : getValue('isFile', parent.itemData[0]) ? getValue('name', parent.itemData[0]) : getValue('name', parent.itemData[0]) + '.zip';\n }\n },\n onSuccess: function (e) {\n parent.trigger('success', downloadArgs);\n var blob = e;\n var blobUrl = URL.createObjectURL(blob);\n var link = document.createElement('a');\n link.href = blobUrl;\n link.download = fileName_1;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n },\n onFailure: function (e) {\n var result = {\n error: {\n code: e.status.toString(),\n message: getLocaleText(parent, 'Network-Error') + ' ' + parent.ajaxSettings.downloadUrl\n }\n };\n createDialog(parent, 'Error', result);\n parent.trigger('failure', downloadArgs);\n }\n });\n fetch_1.send(JSON.stringify(downloadArgs.data));\n }\n catch (error) {\n handleCatchError(parent, error, 'download');\n }\n }\n }\n });\n}\n/**\n * Function for on catch handler in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {any} error - specifies the catch error.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction handleCatchError(parent, error, action) {\n var errorResult = {\n files: null,\n error: {\n message: error.message,\n fileExists: null\n }\n };\n onFailure(parent, errorResult, action);\n}\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { select, isNullOrUndefined as isNOU, createElement, Internationalization } from '@syncfusion/ej2-base';\nimport { getValue, remove, selectAll } from '@syncfusion/ej2-base';\nimport { createFolder } from '../common/operations';\nimport * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { paste, rename } from '../common/operations';\nimport { getLocaleText, getDuplicateData, objectToString, getCssClass } from '../common/utility';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the type of event args.\n * @param {FileDetails} details - specifies the file details.\n * @returns {void}\n * @private\n */\nexport function createDialog(parent, text, e, details) {\n var options = getOptions(parent, text, e, details);\n if (isNOU(parent.dialogObj)) {\n parent.dialogObj = new Dialog({\n beforeOpen: keydownAction.bind(this, parent, options.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n },\n header: options.header,\n content: options.content,\n buttons: options.buttons,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n allowDragging: true,\n isModal: true,\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n width: '350px',\n open: options.open,\n close: options.close,\n enableRtl: parent.enableRtl,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.dialogObj.isStringTemplate = true;\n parent.dialogObj.appendTo('#' + parent.element.id + CLS.DIALOG_ID);\n }\n else {\n changeOptions(parent, options);\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {void}\n * @private\n */\nexport function createExtDialog(parent, text, replaceItems, newPath) {\n var extOptions = getExtOptions(parent, text, replaceItems, newPath);\n parent.isApplySame = false;\n if (isNOU(parent.extDialogObj)) {\n parent.extDialogObj = new Dialog({\n beforeOpen: beforeExtOpen.bind(this, parent, extOptions.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n },\n content: extOptions.content,\n header: extOptions.header,\n closeOnEscape: true,\n allowDragging: true,\n animationSettings: { effect: 'None' },\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n enableRtl: parent.enableRtl,\n showCloseIcon: true,\n isModal: true,\n width: 350,\n buttons: extOptions.buttons,\n open: extOptions.open,\n close: extOptions.close,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.extDialogObj.isStringTemplate = true;\n parent.extDialogObj.appendTo('#' + parent.element.id + CLS.EXTN_DIALOG_ID);\n }\n else {\n parent.extDialogObj.header = extOptions.header;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.open = extOptions.open;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.content = extOptions.content;\n parent.extDialogObj.buttons = extOptions.buttons;\n parent.extDialogObj.enableRtl = parent.enableRtl;\n parent.extDialogObj.locale = parent.locale;\n parent.extDialogObj.beforeOpen = beforeExtOpen.bind(this, parent, extOptions.dialogName);\n parent.extDialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n };\n parent.extDialogObj.dataBind();\n parent.extDialogObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {Dialog} dlgModule - Specifies the dialog module.\n * @param {BeforeOpenEventArgs} args - specifies the before open arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeOpen(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupName: dialogName, popupModule: dlgModule\n };\n parent.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {BeforeCloseEventArgs} args - specifies the before close event arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeClose(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupModule: dlgModule, popupName: dialogName\n };\n parent.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n if (!args.cancel && args.isInteracted && ((dialogName === 'Rename') || (dialogName === 'Create Folder'))) {\n parent.trigger(events.actionFailure, {});\n }\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupOpen(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupOpen', args);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupClose(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupClose', args);\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {DialogOptions} - returns the dialog options.\n * @private\n */\nfunction getExtOptions(parent, text, replaceItems, newPath) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var duplicateContent;\n var item;\n var index;\n options.open = function () { triggerPopupOpen(parent, parent.extDialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.extDialogObj, options.dialogName); };\n switch (text) {\n case 'Extension':\n options.header = getLocaleText(parent, 'Header-Rename-Confirmation');\n options.content = '<div>' + getLocaleText(parent, 'Content-Rename-Confirmation') + '</div>';\n options.buttons = [{\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.extDialogObj.hide();\n rename(parent, newPath, parent.renameText);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.extDialogObj.hide();\n parent.dialogObj.hide();\n }\n }];\n options.dialogName = 'Extension Change';\n break;\n case 'DuplicateItems':\n options.dialogName = 'Duplicate Items';\n parent.replaceItems = replaceItems;\n item = parent.replaceItems[parent.fileLength];\n index = item.lastIndexOf('/');\n item = index === -1 ? item : item.substring(index);\n options.header = getLocaleText(parent, 'Header-Duplicate');\n duplicateContent = '<div>' + getLocaleText(parent, 'Content-Duplicate') + '</div>';\n options.content = (duplicateContent).replace('{0}', item);\n options.close = function () {\n if (!parent.isDropEnd && parent.duplicateItems.length === 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n parent.isDropEnd = parent.isDragDrop = false;\n }\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.duplicateItems.push(parent.replaceItems[parent.fileLength]);\n parent.duplicateRecords.push(getDuplicateData(parent, parent.replaceItems[parent.fileLength]));\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_1 = parent.replaceItems[parent.fileLength];\n var indexval = item_1.lastIndexOf('/');\n item_1 = indexval === -1 ? item_1 : item_1.substring(indexval);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_1);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_2 = parent.replaceItems[parent.fileLength];\n var ind = item_2.lastIndexOf('/');\n item_2 = ind === -1 ? item_2 : item_2.substring(ind);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_2);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n if (parent.duplicateItems.length !== 0) {\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n }\n }\n ];\n break;\n case 'UploadRetry':\n options.dialogName = 'Retry Upload';\n options.header = getLocaleText(parent, 'Header-Retry');\n options.content = parent.retryFiles[0].name + '<div class=\"e-fe-retrycontent\">' +\n (getLocaleText(parent, 'Content-Retry')) + '</div>';\n options.open = onRetryOpen.bind(this, parent);\n options.close = function () {\n parent.isRetryOpened = false;\n retryDlgClose(parent);\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Keep-Both') },\n click: function () {\n retryDlgUpdate(parent, true);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Replace') },\n click: function () {\n retryDlgUpdate(parent, false);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Skip') },\n click: function () {\n var count = 0;\n if (parent.isApplySame) {\n count = parent.retryFiles.length;\n parent.retryFiles = [];\n retryDlgClose(parent);\n }\n else {\n count = 1;\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n parent.notify(events.skipUpload, { count: count });\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {boolean} isKeepBoth - checks the arguement to keep both.\n * @returns {void}\n * @private\n */\nfunction retryDlgUpdate(parent, isKeepBoth) {\n if (parent.isApplySame) {\n if (isKeepBoth) {\n onKeepBothAll(parent);\n }\n else {\n onReplaceAll(parent);\n }\n retryDlgClose(parent);\n }\n else {\n parent.retryArgs.push({\n action: isKeepBoth ? 'keepboth' : 'replace',\n file: parent.retryFiles[0]\n });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction retryDlgClose(parent) {\n var flag = true;\n if (parent.isRetryOpened) {\n parent.isRetryOpened = false;\n }\n else {\n flag = false;\n }\n var ele = select('.e-dlg-checkbox', parent.extDialogObj.element);\n if (ele) {\n remove(ele);\n }\n if (flag) {\n parent.extDialogObj.hide();\n }\n else {\n parent.retryFiles = [];\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {object} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nfunction onRetryOpen(parent, args) {\n parent.isRetryOpened = true;\n var dialogEle = getValue('element', args);\n var container = select('.e-dlg-content', dialogEle);\n var checkContainer = parent.createElement('div', {\n className: 'e-dlg-checkbox'\n });\n var checkbox = parent.createElement('input', {\n id: parent.element.id + '_applyall'\n });\n checkContainer.appendChild(checkbox);\n container.appendChild(checkContainer);\n var checkBoxObj = new CheckBox({\n label: getLocaleText(parent, 'ApplyAll-Label'),\n change: function (args) {\n parent.isApplySame = args.checked;\n }\n });\n checkBoxObj.appendTo('#' + parent.element.id + '_applyall');\n triggerPopupOpen(parent, parent.extDialogObj, 'Retry Upload');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onKeepBothAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'keepboth', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReplaceAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'replace', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction focusInput(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n ele.focus();\n ele.value = '';\n var len = ele.value.length;\n ele.setSelectionRange(0, len);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onFolderDialogOpen(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n if (!ele.parentElement.classList.contains('e-control-wrapper')) {\n createInput(ele, getLocaleText(parent, 'Content-NewFolder'));\n }\n ele.parentElement.nextElementSibling.innerHTML = '';\n ele.oninput = function () {\n onValidate(parent, ele);\n };\n ele.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onSubmit(parent);\n }\n };\n focusInput(parent);\n triggerPopupOpen(parent, parent.dialogObj, 'Create Folder');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onRenameDialogOpen(parent) {\n var inputEle = select('#rename', parent.dialogObj.element);\n if (!inputEle.parentElement.classList.contains('e-control-wrapper')) {\n createInput(inputEle, getLocaleText(parent, 'Content-Rename'));\n }\n inputEle.parentElement.nextElementSibling.innerHTML = '';\n inputEle.oninput = function () {\n onValidate(parent, inputEle);\n };\n inputEle.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onReSubmit(parent);\n }\n };\n onFocusRenameInput(parent, inputEle);\n triggerPopupOpen(parent, parent.dialogObj, 'Rename');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} inputEle - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onFocusRenameInput(parent, inputEle) {\n inputEle.focus();\n var txt = '';\n if (parent.isFile && !parent.showFileExtension) {\n var index = parent.currentItemText.lastIndexOf('.');\n txt = (index === -1) ? parent.currentItemText : parent.currentItemText.substring(0, index);\n }\n else {\n txt = parent.currentItemText;\n }\n inputEle.value = txt;\n if (parent.isFile && parent.showFileExtension && (inputEle.value.indexOf('.') !== -1)) {\n inputEle.setSelectionRange(0, inputEle.value.lastIndexOf('.'));\n }\n else {\n inputEle.setSelectionRange(0, inputEle.value.length);\n }\n}\n/**\n *\n * @param {HTMLInputElement} ele - specifies the element.\n * @param {string} placeholder - specifies the place holder.\n * @returns {void}\n * @private\n */\nfunction createInput(ele, placeholder) {\n Input.createInput({\n element: ele,\n properties: {\n placeholder: placeholder\n }\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the event arguements.\n * @param {FileDetails} details - specifies the file details.\n * @returns {DialogOptions} - specifies the dialog options.\n * @private\n */\nfunction getOptions(parent, text, e, details) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var permission;\n var formattedString;\n var intl;\n var strArr;\n var fileType;\n var location;\n options.open = function () { triggerPopupOpen(parent, parent.dialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.dialogObj, options.dialogName); };\n text = (details && details.multipleFiles === true) ? 'MultipleFileDetails' : text;\n var index;\n switch (text) {\n case 'NewFolder':\n options.dialogName = 'Create Folder';\n options.header = getLocaleText(parent, 'Header-NewFolder');\n options.content = '<input type=\"text\" value=\"New folder\" id=\"newname\"><div class=\"e-fe-error\"></div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Create') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onSubmit(parent);\n }\n }\n ];\n options.open = onFolderDialogOpen.bind(this, parent);\n break;\n case 'Delete':\n options.dialogName = 'Delete';\n if (parent.selectedItems.length > 1) {\n options.content = ('<div>' + getLocaleText(parent, 'Content-Multiple-Delete') + '</div>')\n .replace('{0}', parent.selectedItems.length.toString());\n options.header = getLocaleText(parent, 'Header-Multiple-Delete');\n }\n else {\n options.content = '<div>' + getLocaleText(parent, parent.isFile ? 'Content-Delete' : 'Content-Folder-Delete') + '</div>';\n options.header = getLocaleText(parent, parent.isFile ? 'Header-Delete' : 'Header-Folder-Delete');\n }\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n onDeleteSubmit(parent);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Rename':\n options.dialogName = 'Rename';\n options.header = getLocaleText(parent, 'Header-Rename');\n options.content = '<input type=\"text\" class=\"e-input\" id=\"rename\"><div class=\"e-fe-error\"></div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Save') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onReSubmit(parent);\n }\n }\n ];\n options.open = onRenameDialogOpen.bind(this, parent);\n break;\n case 'details':\n options.dialogName = 'File Details';\n intl = new Internationalization(parent.locale);\n formattedString = intl.formatDate(new Date(details.modified), { format: 'MMMM dd, yyyy HH:mm:ss' });\n permission = '';\n if (!isNOU(details.permission)) {\n permission = '<tr><td>' + getLocaleText(parent, 'Permission') + '</td><td class=\"' + CLS.VALUE + '\" >'\n + objectToString(details.permission) + '</td></tr>';\n }\n options.header = details.name;\n options.content = '<table>' +\n '<tr><td>' + getLocaleText(parent, 'Type') + '</td><td class=\"' + CLS.VALUE + '\" title=\"' +\n (details.isFile ? 'File' : 'Folder') + '\">' + (details.isFile ? 'File' : 'Folder') + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Size') + '</td><td><span class=\"' + CLS.VALUE + '\" title =\"' +\n details.size + '\">' + details.size + '</span></td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Location') + '</td><td class=\"' + CLS.VALUE + '\" title=\"' +\n details.location + '\">' + details.location + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Modified') + '</td><td class=\"' + CLS.VALUE + '\" >'\n + formattedString + '</td></tr>'\n + permission + '</table>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'MultipleFileDetails':\n options.dialogName = 'File Details';\n strArr = parent.itemData.map(function (val) {\n index = val.name.indexOf('.') + 1;\n return (index === 0 && (!val.isFile)) ? 'Folder' : ((index !== 0) ? val.name.substr(index).replace(' ', '') : 'undetermined');\n });\n if (strArr[0] === undefined) {\n strArr = details.name.split(',').map(function (val) {\n index = val.indexOf('.') + 1;\n return (index === 0) ? 'Folder' : val.substr(index).replace(' ', '');\n });\n }\n fileType = strArr.every(function (val, i, arr) { return val === arr[0]; }) ?\n ((strArr[0] === 'Folder') ? 'Folder' : strArr[0].toLocaleUpperCase() + ' Type') : 'Multiple Types';\n location = details.location;\n options.header = details.name;\n options.content = '<table><tr><td>' + getLocaleText(parent, 'Type')\n + ':</td><td class=\"' + CLS.VALUE + '\">' + fileType + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Size') + ':</td><td>' +\n details.size + '<span class=\"' + CLS.VALUE + '\" title =\"' + details.size\n + '\"></span></td></tr>' + '<tr><td>' + getLocaleText(parent, 'Location') +\n ':</td><td class=\"' + CLS.VALUE + '\" title=\"' + location + '\">'\n + location + '</td></tr>' + '</table>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Error':\n parent.notify(events.actionFailure, {});\n options.dialogName = 'Error';\n if (e.error.code === '401') {\n options.header = '<span class=\"e-fe-icon e-fe-access-error\"></span><div class=\"e-fe-access-header\">' +\n getLocaleText(parent, 'Access-Denied') + '</div>';\n }\n else {\n options.header = getLocaleText(parent, 'Error');\n }\n options.content = '<div class=\"' + CLS.ERROR_CONTENT + '\">' + e.error.message + '</div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dialogName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction keydownAction(parent, dialogName, args) {\n var btnElement = selectAll('.e-btn', parent.dialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.dialogObj, args, dialogName);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dlgName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction beforeExtOpen(parent, dlgName, args) {\n var btnElement = selectAll('.e-btn', parent.extDialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.extDialogObj, args, dlgName);\n}\n/**\n *\n * @param {HTMLInputElement[]} btnElement - specifies the button element.\n * @returns {void}\n * @private\n */\nfunction preventKeydown(btnElement) {\n var _loop_1 = function (btnCount) {\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {DialogOptions} options - specifies the dialog options.\n * @returns {void}\n * @private\n */\nfunction changeOptions(parent, options) {\n parent.dialogObj.header = options.header;\n parent.dialogObj.content = options.content;\n parent.dialogObj.buttons = options.buttons;\n parent.dialogObj.enableRtl = parent.enableRtl;\n parent.dialogObj.open = options.open;\n parent.dialogObj.close = options.close;\n parent.dialogObj.beforeOpen = keydownAction.bind(this, parent, options.dialogName);\n parent.dialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n };\n parent.dialogObj.dataBind();\n parent.dialogObj.show();\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onSubmit(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n createFolder(parent, ele.value);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReSubmit(parent) {\n var ele = select('#rename', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n var text = ele.value;\n var oIndex = parent.currentItemText.lastIndexOf('.');\n if (parent.isFile && !parent.showFileExtension) {\n var extn = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n text += extn;\n }\n parent.renameText = text;\n if (parent.currentItemText === text) {\n parent.dialogObj.hide();\n return;\n }\n var newPath = (parent.activeModule === 'navigationpane') ? getValue('filterPath', parent.itemData[0]).replace(/\\\\/g, '/') : parent.path;\n parent.renamedId = getValue('id', parent.itemData[0]);\n if (parent.isFile) {\n var oldExtension = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n var nIndex = text.lastIndexOf('.');\n var newExtension = (nIndex === -1) ? '' : text.substr(nIndex);\n if (parent.showFileExtension && oldExtension !== newExtension) {\n createExtDialog(parent, 'Extension', null, newPath);\n }\n else {\n rename(parent, newPath, text);\n }\n }\n else {\n rename(parent, newPath, text);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onDeleteSubmit(parent) {\n parent.dialogObj.hide();\n parent.notify(events.deleteInit, {});\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onValidate(parent, ele) {\n if (/[/\\\\|*?\"<>:]/.test(ele.value)) {\n addInvalid(parent, ele);\n }\n else if (ele.value === '') {\n ele.parentElement.nextElementSibling.innerHTML = getLocaleText(parent, 'Validation-Empty');\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = '';\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onSubmitValidate(parent, ele) {\n onValidate(parent, ele);\n var len = ele.value.length - 1;\n if (ele.value !== '' && ((ele.value.lastIndexOf('.') === len) || (ele.value.lastIndexOf(' ') === len)) &&\n (parent.showFileExtension || (ele.value.lastIndexOf('.') === -1 || ele.value.substring(ele.value.indexOf('.') + 1).length === 0))) {\n addInvalid(parent, ele);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction addInvalid(parent, ele) {\n var error = getLocaleText(parent, 'Validation-Invalid').replace('{0}', '\"' + ele.value + '\"');\n if (parent.enableHtmlSanitizer) {\n ele.parentElement.nextElementSibling.textContent = error;\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n}\n/**\n *\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {number} - returns the key code.\n * @private\n */\nfunction getKeyCode(e) {\n var code;\n if (e.keyCode) {\n code = e.keyCode;\n }\n else if (e.which) {\n code = e.which;\n }\n else {\n code = e.charCode;\n }\n return code;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} header - specifies the header element.\n * @param {string} imageUrl - specifies the image URL.\n * @returns {void}\n * @private\n */\nexport function createImageDialog(parent, header, imageUrl) {\n var content = createElement('div', { className: 'e-image-wrap' });\n var image = createElement('img', { className: 'e-image', attrs: { src: imageUrl, alt: header } });\n content.appendChild(image);\n if (isNOU(parent.viewerObj)) {\n parent.viewerObj = new Dialog({\n header: header,\n content: content,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n isModal: true,\n width: '350px',\n height: '350px',\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: parent.locale,\n enableResize: true,\n allowDragging: true,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n position: { X: 'center', Y: 'center' },\n enableRtl: parent.enableRtl,\n open: openImage.bind(this, parent),\n close: function () { triggerPopupClose(parent, parent.viewerObj, 'Image Preview'); },\n beforeOpen: function (args) {\n triggerPopupBeforeOpen(parent, parent.viewerObj, args, 'Image Preview');\n },\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.viewerObj, args, 'Image Preview');\n },\n resizing: updateImage.bind(this, parent),\n resizeStop: updateImage.bind(this, parent)\n });\n parent.viewerObj.isStringTemplate = true;\n parent.viewerObj.appendTo('#' + parent.element.id + CLS.IMG_DIALOG_ID);\n }\n else {\n parent.viewerObj.refresh();\n parent.viewerObj.header = header;\n parent.viewerObj.content = content;\n parent.viewerObj.enableRtl = parent.enableRtl;\n parent.viewerObj.dataBind();\n parent.viewerObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction openImage(parent) {\n setTimeout(function () {\n if (parent.viewerObj) {\n parent.viewerObj.element.focus();\n }\n });\n updateImage(parent);\n triggerPopupOpen(parent, parent.viewerObj, 'Image Preview');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction updateImage(parent) {\n var content = select('.e-dlg-content', parent.viewerObj.element);\n var imgWrap = select('.e-image-wrap', parent.viewerObj.element);\n var cssObj = window.getComputedStyle(content, null);\n var paddingWidth = cssObj ? (2 * parseFloat(cssObj.paddingRight)) : 36;\n var paddingHeight = cssObj ? (2 * parseFloat(cssObj.paddingBottom)) : 20;\n imgWrap.style.width = (content.offsetWidth - paddingWidth) + 'px';\n imgWrap.style.height = (content.offsetHeight - paddingHeight) + 'px';\n}\n","import { ListBase } from '@syncfusion/ej2-lists';\nimport { createElement, select, selectAll, EventHandler, KeyboardEvents, closest, Draggable } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, addClass, removeClass, Touch, isVisible } from '@syncfusion/ej2-base';\nimport { getValue, setValue, remove } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { read, GetDetails, Delete } from '../common/operations';\nimport { doRename, getAccessClass, getPathObject, getFullPath, getDirectoryPath, rename, doDownload, getItemName } from '../common/index';\nimport { removeBlur, cutFiles, copyFiles, addBlur, openSearchFolder, removeActive, pasteHandler } from '../common/index';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getModule } from '../common/index';\nimport { updateRenamingData, doDeleteFiles, doDownloadFiles } from '../common/index';\nimport { openAction, fileType, refresh, getImageUrl, getSortedData, createDeniedDialog, updateLayout } from '../common/utility';\nimport { createEmptyElement, hasReadAccess, hasEditAccess } from '../common/utility';\nimport { createDialog, createImageDialog } from '../pop-up/dialog';\n/**\n * LargeIconsView module\n */\nvar LargeIconsView = /** @class */ (function () {\n /**\n * Constructor for the LargeIcons module.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n function LargeIconsView(parent) {\n this.isInteraction = true;\n this.uploadOperation = false;\n this.count = 0;\n this.isRendered = true;\n this.tapCount = 0;\n this.isSelectAllCalled = false;\n this.isPasteOperation = false;\n this.isInteracted = true;\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n addClass([this.element], CLS.LARGE_ICONS);\n this.addEventListener();\n this.keyConfigs = {\n end: 'end',\n home: 'home',\n tab: 'tab',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n ctrlUp: 'ctrl+uparrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftLeft: 'shift+leftarrow',\n shiftRight: 'shift+rightarrow',\n shiftUp: 'shift+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csLeft: 'ctrl+shift+leftarrow',\n csRight: 'ctrl+shift+rightarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n ctrlA: 'ctrl+a',\n enter: 'enter',\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n f2: 'f2',\n shiftdel: 'shift+delete',\n back: 'backspace',\n ctrlD: 'ctrl+d'\n };\n }\n LargeIconsView.prototype.render = function (args) {\n this.parent.visitedItem = null;\n this.startItem = null;\n showSpinner(this.parent.element);\n if (this.parent.view === 'LargeIcons') {\n this.resetMultiSelect();\n this.element.setAttribute('tabindex', '0');\n if (this.listObj) {\n this.unWireEvents();\n this.removeEventListener();\n }\n this.parent.notify(events.hideLayout, {});\n var iconsView = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n var ul = select('ul', iconsView);\n if (ul) {\n remove(ul);\n }\n this.listObj = {\n ariaAttributes: {\n itemRole: 'option', listRole: 'listbox', itemText: '',\n groupItemRole: 'group', wrapperRole: ''\n },\n showIcon: true,\n fields: { text: 'name', iconCss: '_fm_icon', imageUrl: '_fm_imageUrl', htmlAttributes: '_fm_htmlAttr' },\n sortOrder: this.parent.sortOrder,\n itemCreated: this.onItemCreated.bind(this),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer\n };\n this.items = [];\n this.items = this.renderList(args);\n if (this.parent.sortComparer && this.parent.sortBy !== 'None') {\n this.items = this.allItems = DataUtil.sort(this.items, this.parent.sortBy, this.comparer.bind(this));\n }\n else {\n this.items = this.allItems = getSortedData(this.parent, this.items);\n }\n iconsView.classList.remove(CLS.DISPLAY_NONE);\n if (this.parent.enableVirtualization && this.allItems.length > 0) {\n this.parent.virtualizationModule.setUIVirtualization();\n }\n this.listElements = ListBase.createListFromJson(createElement, this.items, this.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.listElements));\n this.element.appendChild(this.listElements);\n this.listElements.setAttribute('aria-label', 'listbox');\n this.preventImgDrag();\n this.createDragObj();\n if (this.itemList.length === 0) {\n var emptyList = this.element.querySelector('.' + CLS.LIST_PARENT);\n this.element.removeChild(emptyList);\n createEmptyElement(this.parent, this.element, args);\n }\n else if (this.itemList.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n if (this.isPasteOperation === true) {\n this.selectItems(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n /* istanbul ignore next */\n if (this.uploadOperation === true) {\n this.selectItems(this.parent.uploadItem);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.count++;\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.parent.activeModule = 'largeiconsview';\n }\n for (var i = 0; i < activeEle.length; i++) {\n activeEle[i].setAttribute('aria-selected', 'true');\n }\n this.element.style.maxHeight = '100%';\n this.getItemCount();\n this.addEventListener();\n this.wireEvents();\n if (this.parent.enableVirtualization && this.allItems.length > 0) {\n this.parent.virtualizationModule.setUlElementHeight();\n this.parent.virtualizationModule.wireScrollEvent(false);\n }\n this.isRendered = true;\n hideSpinner(this.parent.element);\n if (this.parent.selectedItems.length) {\n this.checkItem();\n }\n }\n };\n LargeIconsView.prototype.comparer = function (x, y) {\n if (this.parent.sortOrder === 'Descending') {\n var z = x;\n x = y;\n y = z;\n }\n return this.parent.sortComparer(x, y);\n };\n LargeIconsView.prototype.preventImgDrag = function () {\n var i = 0;\n while (i < this.itemList.length) {\n if (this.itemList[i].querySelector('img')) {\n /* istanbul ignore next */\n this.itemList[i].ondragstart = function () { return false; };\n }\n i++;\n }\n };\n LargeIconsView.prototype.createDragObj = function () {\n var _this = this;\n if (this.listObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.listElements, {\n enableTailMode: true,\n distance: 5,\n enableAutoScroll: false,\n dragTarget: '.' + CLS.LARGE_ICON,\n helper: this.dragHelper.bind(this),\n cursorAt: this.parent.dragCursorPosition,\n dragArea: this.parent.element,\n dragStop: dragStopHandler.bind(this, this.parent),\n drag: draggingHandler.bind(this, this.parent),\n clone: true,\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n }\n });\n }\n else if (this.dragObj && !this.parent.allowDragAndDrop) {\n this.dragObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = closest(dragTarget, '.e-list-item');\n if (!dragLi) {\n return null;\n }\n if (dragLi && !dragLi.classList.contains('e-active')) {\n this.setFocus(dragLi);\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n for (var i = 0; i < activeEle.length; i++) {\n this.parent.dragData.push(this.getItemObject(activeEle[parseInt(i.toString(), 10)]));\n this.parent.activeElements.push(activeEle[i]);\n }\n getModule(this.parent, dragLi);\n this.parent.dragPath = this.parent.path;\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n LargeIconsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, '.e-list-item');\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (dropLi) {\n var info = this.getItemObject(dropLi);\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n else {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n LargeIconsView.prototype.getModuleName = function () {\n return 'largeiconsview';\n };\n LargeIconsView.prototype.onItemCreated = function (args) {\n args.item.removeAttribute('aria-level');\n if (!this.parent.showFileExtension && getValue('isFile', args.curData)) {\n var textEle = args.item.querySelector('.' + CLS.LIST_TEXT);\n var txt = getValue('name', args.curData);\n var type = getValue('type', args.curData);\n if (txt.indexOf(type) !== -1) {\n textEle.innerHTML = txt.substr(0, txt.length - type.length);\n }\n }\n this.renderCheckbox(args);\n var eventArgs = {\n element: args.item,\n fileDetails: args.curData,\n module: 'LargeIconsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n LargeIconsView.prototype.renderCheckbox = function (args) {\n if (!this.parent.showItemCheckBoxes) {\n return;\n }\n var checkElement = createCheckBox(createElement, false, {\n checked: false,\n cssClass: 'e-small'\n });\n checkElement.setAttribute('role', 'checkbox');\n checkElement.setAttribute('aria-checked', 'false');\n checkElement.setAttribute('aria-label', 'checkbox');\n args.item.firstElementChild.insertBefore(checkElement, args.item.firstElementChild.childNodes[0]);\n };\n LargeIconsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.destroy();\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.render(args);\n /* istanbul ignore next */\n if (getValue('name', args) === 'layout-change' && this.parent.fileAction === 'move' &&\n this.parent.isCut && this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n var indexes = this.getIndexes(this.parent.selectedNodes);\n var length_1 = 0;\n while (length_1 < indexes.length) {\n addBlur(this.itemList[indexes[length_1]]);\n length_1++;\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.element.focus();\n }\n this.checkItem();\n this.parent.isLayoutChange = false;\n }\n else {\n this.element.setAttribute('tabindex', '-1');\n }\n };\n LargeIconsView.prototype.checkItem = function () {\n var checkEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (checkEle) {\n var checkLength = 0;\n while (checkLength < checkEle.length) {\n this.checkState(checkEle[checkLength], true);\n checkLength++;\n }\n }\n };\n LargeIconsView.prototype.renderList = function (args) {\n var i = 0;\n var items = JSON.parse(JSON.stringify(args.files));\n while (i < items.length) {\n var icon = fileType(items[i]);\n var name_1 = getValue('name', items[i]);\n var selected = getItemName(this.parent, items[i]);\n var className = ((this.parent.selectedItems &&\n this.parent.selectedItems.indexOf(selected) !== -1)) ?\n CLS.LARGE_ICON + ' e-active' : CLS.LARGE_ICON;\n if (!hasEditAccess(items[i])) {\n className += ' ' + getAccessClass(items[i]);\n }\n if (icon === CLS.ICON_IMAGE && this.parent.showThumbnail && hasReadAccess(items[i])) {\n var imgUrl = getImageUrl(this.parent, items[i]);\n setValue('_fm_imageUrl', imgUrl, items[i]);\n setValue('_fm_imageAttr', { alt: name_1 }, items[i]);\n }\n else {\n setValue('_fm_icon', icon, items[i]);\n }\n setValue('_fm_htmlAttr', { class: className, title: name_1 }, items[i]);\n i++;\n }\n return items;\n };\n LargeIconsView.prototype.onFinalizeEnd = function (args) {\n this.render(args);\n };\n LargeIconsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.clearSelect();\n this.selectItems([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n this.parent.largeiconsviewModule.element.focus();\n this.parent.activeModule = 'largeiconsview';\n };\n LargeIconsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n this.updateSelectedData();\n }\n };\n LargeIconsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.clearSelect();\n };\n LargeIconsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n };\n LargeIconsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'largeiconsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n LargeIconsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n /* istanbul ignore next */\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '') {\n this.parent.searchedItems = [];\n }\n if (this.parent.view === 'LargeIcons') {\n removeBlur(this.parent);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onLayoutChange(args);\n if (this.parent.renamedItem && this.parent.activeModule === 'largeiconsview') {\n this.clearSelect();\n this.addSelection(this.parent.renamedItem);\n }\n }\n };\n LargeIconsView.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'largeiconsview') {\n this.doOpenAction(args.target);\n }\n };\n LargeIconsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'LargeIcons' && this.element) {\n this.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n LargeIconsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.startItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n var eveArgs = { ctrlKey: true, shiftKey: true };\n this.doSelection(lastItem, eveArgs);\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.clearSelection();\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n LargeIconsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onSearch = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n this.parent.searchedItems = args.files;\n this.onLayoutChange(args);\n }\n };\n LargeIconsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n };\n LargeIconsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.updateSelectedData();\n };\n LargeIconsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'LargeIcons' && !isNOU(this.listObj) &&\n this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered\n && this.parent.sortBy === 'filterPath') {\n this.parent.sortBy = 'name';\n this.parent.notify(events.sortByChange, {});\n }\n };\n LargeIconsView.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.search, this.onSearch);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.splitterResize, this.splitterResizeHandler);\n this.parent.off(events.resizeEnd, this.resizeHandler);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n this.parent.off(events.filterEnd, this.onPathChanged);\n };\n LargeIconsView.prototype.addEventListener = function () {\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.search, this.onSearch, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.splitterResize, this.splitterResizeHandler, this);\n this.parent.on(events.resizeEnd, this.resizeHandler, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n };\n LargeIconsView.prototype.onActionFailure = function () { this.isInteraction = true; this.isInteracted = true; };\n LargeIconsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var ele = closest(args.target, 'li');\n this.parent.itemData = [this.getItemObject(ele)];\n }\n };\n LargeIconsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.updateSelectedData();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n LargeIconsView.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath === '') ? [getPathObject(this.parent)] :\n [this.getItemObject(select('.e-active', this.element))];\n }\n };\n LargeIconsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeRecords = [];\n this.parent.activeElements = [];\n for (var i = 0; i < activeEle.length; i++) {\n this.parent.activeElements.push(activeEle[i]);\n this.parent.activeRecords.push(this.getItemObject(activeEle[i]));\n }\n }\n };\n LargeIconsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath ||\n this.parent.path === getDirectoryPath(this.parent, args) || this.parent.hasId) {\n this.onPathChanged(args);\n }\n }\n };\n LargeIconsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n LargeIconsView.prototype.onPropertyChanged = function (e) {\n var currentSelected;\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'selectedItems':\n this.isInteraction = false;\n this.isInteracted = false;\n currentSelected = isNOU(this.parent.selectedItems) ? [] : this.parent.selectedItems.slice(0);\n currentSelected = this.parent.allowMultiSelection ? currentSelected :\n currentSelected.slice(currentSelected.length - 1);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onClearAllInit();\n if (currentSelected.length) {\n this.selectItems(currentSelected);\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n this.isInteraction = true;\n this.isInteracted = true;\n break;\n case 'showThumbnail':\n refresh(this.parent);\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n case 'showItemCheckBoxes':\n if (this.parent.view !== 'LargeIcons') {\n break;\n }\n refresh(this.parent);\n break;\n case 'view':\n updateLayout(this.parent, 'LargeIcons');\n break;\n }\n }\n };\n LargeIconsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.listObj) {\n this.unWireEvents();\n }\n this.startItem = null;\n this.listElements = null;\n };\n LargeIconsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n };\n LargeIconsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onMouseOver = function (e) {\n var targetEle = closest(e.target, '.e-list-item');\n removeBlur(this.parent, 'hover');\n if (targetEle !== null) {\n targetEle.classList.add(CLS.HOVER);\n }\n };\n LargeIconsView.prototype.wireClickEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n this.clickObj = new Touch(this.element, {\n tap: function (eve) {\n if (_this.parent.isDevice) {\n _this.tapCount = eve.tapCount;\n _this.tapEvent = eve;\n setTimeout(function () {\n if (_this.tapCount > 0) {\n _this.doTapAction(_this.tapEvent);\n }\n _this.tapCount = 0;\n }, 350);\n }\n else {\n if (eve.tapCount === 2 && eve.originalEvent.which !== 3) {\n _this.dblClickHandler(eve);\n }\n else {\n _this.clickHandler(eve);\n }\n }\n },\n tapHold: function (e) {\n if (_this.parent.isDevice) {\n _this.multiSelect = _this.parent.allowMultiSelection ? true : false;\n if (_this.parent.allowMultiSelection) {\n addClass([_this.parent.element], CLS.MULTI_SELECT);\n }\n _this.clickHandler(e);\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.doTapAction = function (eve) {\n var target = eve.originalEvent.target;\n var item = closest(target, '.' + CLS.LIST_ITEM);\n if (this.multiSelect || target.classList.contains(CLS.LIST_PARENT) || isNOU(item)) {\n this.clickHandler(eve);\n }\n else {\n this.parent.isFile = false;\n this.updateType(item);\n if (!this.parent.isFile) {\n this.dblClickHandler(eve);\n }\n else if (eve.tapCount === 2) {\n this.clickHandler(eve);\n this.dblClickHandler(eve);\n }\n else {\n this.clickHandler(eve);\n }\n }\n };\n LargeIconsView.prototype.clickHandler = function (e) {\n var target = e.originalEvent.target;\n removeBlur(this.parent, 'hover');\n this.doSelection(target, e.originalEvent);\n this.parent.activeModule = 'largeiconsview';\n };\n /**\n *\n * @param {Element} target - specifies the target element.\n * @param {TouchEventArgs | MouseEventArgs | KeyboardEventArgs} e - specifies event arguements.\n * @returns {void}\n * @hidden\n */\n LargeIconsView.prototype.doSelection = function (target, e) {\n var item = closest(target, '.' + CLS.LIST_ITEM);\n var cList = target.classList;\n this.parent.isFile = false;\n var action = 'select';\n if (e.which === 3 && !isNOU(item) && item.classList.contains(CLS.ACTIVE)) {\n this.addActive(item);\n this.updateType(item);\n return;\n }\n else if (!isNOU(item)) {\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)\n && (e.ctrlKey || target.classList.contains(CLS.CHECK))) {\n action = 'unselect';\n }\n if (e.ctrlKey && e.shiftKey) {\n this.isSelectAllCalled = true;\n }\n var fileSelectionArgs = this.triggerSelection(action, item);\n if (fileSelectionArgs.cancel !== true) {\n if ((!this.parent.allowMultiSelection || (!this.multiSelect && (e && !e.ctrlKey)))\n && !cList.contains(CLS.FRAME)) {\n this.updateType(item);\n this.clearSelect();\n }\n if (this.parent.allowMultiSelection && e.shiftKey) {\n if (!(e && e.ctrlKey)) {\n this.clearSelect();\n }\n if (!this.startItem) {\n this.startItem = item;\n }\n var startIndex = this.itemList.indexOf(this.startItem);\n var endIndex = this.itemList.indexOf(item);\n if (startIndex > endIndex) {\n for (var i = startIndex; i >= endIndex; i--) {\n this.addActive(this.itemList[i]);\n }\n }\n else {\n for (var i = startIndex; i <= endIndex; i++) {\n this.addActive(this.itemList[i]);\n }\n }\n this.addFocus(this.itemList[endIndex]);\n }\n else {\n this.startItem = item;\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)) {\n this.removeActive(item);\n }\n else {\n this.addActive(item);\n }\n this.addFocus(item);\n }\n if (this.parent.selectedItems.length === 0) {\n this.resetMultiSelect();\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect(action, item);\n }\n }\n else {\n if (this.parent.selectedItems.length === this.itemList.length) {\n this.isSelectAllCalled = true;\n }\n this.clearSelection();\n }\n if (!isNOU(item)) {\n this.isSelectAllCalled = false;\n this.updateType(item);\n }\n };\n LargeIconsView.prototype.dblClickHandler = function (e) {\n this.parent.activeModule = 'largeiconsview';\n var target = e.originalEvent.target;\n this.doOpenAction(target);\n };\n LargeIconsView.prototype.clearSelection = function () {\n this.clearSelect();\n this.resetMultiSelect();\n this.parent.notify(events.selectionChanged, {});\n };\n LargeIconsView.prototype.resetMultiSelect = function () {\n this.multiSelect = false;\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n };\n LargeIconsView.prototype.doOpenAction = function (target) {\n var _this = this;\n if (isNOU(target)) {\n return;\n }\n var item = closest(target, '.' + CLS.LIST_ITEM);\n this.parent.isFile = false;\n if (!isNOU(item)) {\n this.updateType(item);\n var details_1 = this.getItemObject(item);\n if (!hasReadAccess(details_1)) {\n createDeniedDialog(this.parent, details_1, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: details_1, module: 'LargeIconsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var text = getValue('name', details_1);\n if (!_this.parent.isFile) {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', details_1);\n _this.parent.oldPath = _this.parent.path;\n var newPath = _this.parent.path + (isNOU(id) ? text : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(text);\n _this.parent.pathId.push(getValue('_fm_id', details_1));\n _this.parent.itemData = [details_1];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, details_1);\n }\n _this.parent.isFiltered = false;\n _this.parent.setProperties({ selectedItems: [] }, true);\n }\n else {\n var icon = fileType(details_1);\n if (icon === CLS.ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, details_1);\n createImageDialog(_this.parent, text, imgUrl);\n }\n }\n }\n });\n }\n };\n LargeIconsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.keydownActionHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'moveDown':\n case 'moveLeft':\n case 'moveRight':\n case 'moveUp':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.keyActionHandler = function (e) {\n var _this = this;\n if (!this.isRendered) {\n return;\n }\n var fItem = this.getFocusedItem();\n var firstItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n switch (e.action) {\n case 'end':\n if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTo(0, this.element.firstElementChild.scrollHeight);\n setTimeout(function () {\n _this.navigateItem(_this.itemList[_this.itemList.length - 1]);\n }, 10);\n }\n else {\n this.navigateItem(lastItem);\n }\n break;\n case 'home':\n if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTop = 0;\n setTimeout(function () {\n _this.navigateItem(_this.itemList[0]);\n }, 10);\n }\n else {\n this.navigateItem(firstItem);\n }\n break;\n case 'tab':\n if (!isNOU(fItem)) {\n this.addFocus(fItem);\n }\n else if (!isNOU(firstItem)) {\n this.addFocus(firstItem);\n }\n break;\n case 'moveDown':\n this.navigateDown(fItem, true);\n break;\n case 'moveLeft':\n this.navigateRight(fItem, false);\n break;\n case 'moveRight':\n this.navigateRight(fItem, true);\n break;\n case 'moveUp':\n this.navigateDown(fItem, false);\n break;\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n this.csEndKey(lastItem, e);\n break;\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n this.csHomeKey(firstItem, e);\n break;\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n this.csDownKey(fItem, e);\n break;\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n this.csLeftKey(fItem, e);\n break;\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n this.csRightKey(fItem, e);\n break;\n case 'ctrlUp':\n case 'shiftUp':\n case 'csUp':\n this.csUpKey(fItem, e);\n break;\n case 'space':\n this.spaceKey(fItem);\n break;\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n if (!isNOU(fItem)) {\n this.doSelection(fItem, e);\n }\n break;\n case 'ctrlA':\n this.ctrlAKey(firstItem, lastItem);\n break;\n case 'enter':\n this.doOpenAction(this.parent.visitedItem ? this.parent.visitedItem : this.getVisitedItem());\n break;\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n case 'back':\n this.parent.traverseBackward();\n break;\n }\n };\n LargeIconsView.prototype.doDownload = function () {\n this.updateSelectedData();\n doDownload(this.parent);\n };\n LargeIconsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.updateSelectedData();\n var data = this.parent.itemData;\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(this.parent, data[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n LargeIconsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n LargeIconsView.prototype.updateRenameData = function () {\n var item = select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n var data = this.getItemObject(item);\n updateRenamingData(this.parent, data);\n };\n LargeIconsView.prototype.getVisitedItem = function () {\n var item = this.parent.selectedItems[this.parent.selectedItems.length - 1];\n var indexes = this.getIndexes([item], this.parent.hasId);\n return this.itemList[indexes[0]];\n };\n LargeIconsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.FOCUS, this.element);\n };\n LargeIconsView.prototype.getActiveItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n };\n LargeIconsView.prototype.getFirstItem = function () {\n return this.itemList[0];\n };\n LargeIconsView.prototype.getLastItem = function () {\n return this.itemList[this.itemList.length - 1];\n };\n LargeIconsView.prototype.navigateItem = function (item) {\n this.setFocus(item);\n };\n LargeIconsView.prototype.navigateDown = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards, this.perRow);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.navigateRight = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.getNextItem = function (li, isTowards, perRow) {\n if (isNOU(li)) {\n return this.getFocusedItem() || this.getActiveItem() || this.getFirstItem();\n }\n var index = this.itemList.indexOf(li);\n var nextItem;\n do {\n if (isTowards) {\n index = perRow ? index + perRow : index + 1;\n }\n else {\n index = perRow ? index - perRow : index - 1;\n }\n nextItem = this.itemList[index];\n if (this.parent.enableVirtualization && isNOU(nextItem)) {\n var marginValue = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-bottom'), 10);\n var scrollHeight = this.itemList[0].getBoundingClientRect().height + marginValue;\n this.element.firstElementChild.scrollTo(this.element.firstElementChild.scrollTop, this.element.firstElementChild.scrollTop + scrollHeight);\n }\n if (isNOU(nextItem)) {\n return li;\n }\n } while (!isVisible(nextItem));\n return nextItem;\n };\n LargeIconsView.prototype.setFocus = function (nextItem) {\n if (!isNOU(nextItem)) {\n var fileSelectionArgs = this.triggerSelection('select', nextItem);\n if (fileSelectionArgs.cancel !== true) {\n this.startItem = nextItem;\n this.clearSelect();\n this.addActive(nextItem);\n this.addFocus(nextItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', nextItem);\n }\n }\n };\n LargeIconsView.prototype.spaceKey = function (fItem) {\n if (!isNOU(fItem) && !fItem.classList.contains(CLS.ACTIVE)) {\n var fileSelectionArgs = this.triggerSelection('select', fItem);\n if (fileSelectionArgs.cancel !== true) {\n this.addActive(fItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', fItem);\n }\n }\n };\n LargeIconsView.prototype.ctrlAKey = function (firstItem, lastItem) {\n if (this.parent.allowMultiSelection && !isNOU(firstItem)) {\n this.startItem = firstItem;\n var eveArgs = { ctrlKey: true, shiftKey: true };\n var liParent = this.element.querySelector('.' + CLS.LIST_PARENT);\n var liScrPos = liParent.scrollTop;\n var getCurFocusedItem = this.getFocusedItem();\n this.doSelection(lastItem, eveArgs);\n liParent.scrollTop = liScrPos;\n if (!isNOU(getCurFocusedItem)) {\n this.addFocus(getCurFocusedItem);\n }\n }\n };\n LargeIconsView.prototype.csEndKey = function (lastItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(lastItem);\n }\n else if (!isNOU(lastItem)) {\n if (e.action === 'ctrlEnd') {\n this.addFocus(lastItem);\n }\n else {\n this.doSelection(lastItem, e);\n }\n }\n };\n LargeIconsView.prototype.csHomeKey = function (firstItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(firstItem);\n }\n else if (!isNOU(firstItem)) {\n if (e.action === 'ctrlHome') {\n this.addFocus(firstItem);\n }\n else {\n this.doSelection(firstItem, e);\n }\n }\n };\n LargeIconsView.prototype.csDownKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, true);\n }\n else {\n var dItem = this.getNextItem(fItem, true, this.perRow);\n if (!isNOU(dItem)) {\n if (e.action === 'ctrlDown') {\n this.addFocus(dItem);\n }\n else {\n this.doSelection(dItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csLeftKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, false);\n }\n else {\n var lItem = this.getNextItem(fItem, false);\n if (!isNOU(lItem)) {\n if (e.action === 'ctrlLeft') {\n this.addFocus(lItem);\n }\n else {\n this.doSelection(lItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csRightKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, true);\n }\n else {\n var rItem = this.getNextItem(fItem, true);\n if (!isNOU(rItem)) {\n if (e.action === 'ctrlRight') {\n this.addFocus(rItem);\n }\n else {\n this.doSelection(rItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csUpKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, false);\n }\n else {\n var uItem = this.getNextItem(fItem, false, this.perRow);\n if (!isNOU(uItem)) {\n if (e.action === 'ctrlUp') {\n this.addFocus(uItem);\n }\n else {\n this.doSelection(uItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.addActive = function (nextItem) {\n if (!isNOU(nextItem)) {\n if (!nextItem.classList.contains(CLS.ACTIVE)) {\n this.parent.selectedItems.push(this.getDataName(nextItem));\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n addClass([nextItem], [CLS.ACTIVE]);\n nextItem.setAttribute('aria-selected', 'true');\n this.checkState(nextItem, true);\n }\n this.parent.visitedItem = nextItem;\n }\n };\n LargeIconsView.prototype.removeActive = function (preItem) {\n if (!isNOU(preItem)) {\n removeClass([preItem], [CLS.ACTIVE]);\n if (this.parent.allowMultiSelection) {\n preItem.setAttribute('aria-selected', 'false');\n }\n else {\n preItem.removeAttribute('aria-selected');\n }\n this.checkState(preItem, false);\n var index = this.parent.selectedItems.indexOf(this.getDataName(preItem));\n if (index > -1) {\n this.parent.selectedItems.splice(index, 1);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n this.parent.visitedItem = null;\n }\n };\n LargeIconsView.prototype.getDataName = function (item) {\n var data = this.getItemObject(item);\n return getItemName(this.parent, data);\n };\n LargeIconsView.prototype.addFocus = function (item) {\n this.element.setAttribute('tabindex', '-1');\n var fItem = this.getFocusedItem();\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS]);\n }\n addClass([item], [CLS.FOCUS]);\n item.setAttribute('tabindex', '0');\n item.focus();\n };\n LargeIconsView.prototype.checkState = function (item, toCheck) {\n if (!this.parent.showItemCheckBoxes) {\n return;\n }\n var checkEle = select('.' + CLS.FRAME, item);\n if (isNOU(checkEle)) {\n return;\n }\n if (toCheck) {\n if (!checkEle.classList.contains(CLS.CHECK)) {\n addClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'true');\n }\n }\n else {\n if (checkEle.classList.contains(CLS.CHECK)) {\n removeClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'false');\n }\n }\n };\n LargeIconsView.prototype.clearSelect = function () {\n var eles = Array.prototype.slice.call(selectAll('.' + CLS.ACTIVE, this.listElements));\n var fileSelectionArgs;\n if (eles.length !== 0) {\n fileSelectionArgs = this.triggerSelection('unselect', eles[0]);\n if (fileSelectionArgs.cancel !== true) {\n for (var i = 0, len = eles.length; i < len; i++) {\n this.removeActive(eles[i]);\n }\n }\n this.triggerSelect('unselect', eles[0]);\n }\n };\n LargeIconsView.prototype.resizeHandler = function () {\n this.getItemCount();\n };\n LargeIconsView.prototype.splitterResizeHandler = function () {\n this.getItemCount();\n };\n LargeIconsView.prototype.getItemCount = function () {\n var perRow = 1;\n if (this.itemList) {\n for (var i = 0, len = this.itemList.length - 1; i < len; i++) {\n if (this.itemList[i].getBoundingClientRect().top === this.itemList[i + 1].getBoundingClientRect().top) {\n perRow++;\n }\n else {\n break;\n }\n }\n }\n this.perRow = perRow;\n };\n LargeIconsView.prototype.triggerSelection = function (action, item) {\n var data = [];\n if (this.isSelectAllCalled) {\n for (var i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n }\n else {\n data[0] = this.getItemObject(item);\n }\n var eventArgs = { action: action, fileDetails: data.length > 1\n ? data : data[0], isInteracted: this.isInteraction, cancel: false, target: this.isSelectAllCalled ? null\n : item\n };\n this.parent.trigger('fileSelection', eventArgs);\n this.isInteraction = true;\n return eventArgs;\n };\n LargeIconsView.prototype.triggerSelect = function (action, item) {\n var data = [];\n if (this.isSelectAllCalled) {\n for (var i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n this.isSelectAllCalled = false;\n }\n else {\n data[0] = this.getItemObject(item);\n }\n this.parent.visitedData = data.length > 1 ? data[data.length - 1] : data[0];\n var eventArgs = { action: action, fileDetails: data.length > 1\n ? data\n : data[0], isInteracted: this.isInteracted };\n this.parent.trigger('fileSelect', eventArgs);\n this.isInteracted = true;\n };\n LargeIconsView.prototype.selectItems = function (items) {\n var indexes = this.getIndexes(items, this.parent.hasId);\n for (var j = 0, len = indexes.length; j < len; j++) {\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[indexes[j]], eveArgs);\n }\n };\n LargeIconsView.prototype.getIndexes = function (items, byId) {\n var indexes = [];\n var filter = byId ? 'id' : 'name';\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filter, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n return indexes;\n };\n LargeIconsView.prototype.getItemObject = function (item) {\n var index = this.itemList.indexOf(item);\n return this.items[index];\n };\n LargeIconsView.prototype.addSelection = function (data) {\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var newData = new DataManager(this.items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (newData.length > 0) {\n resultData = new DataManager(newData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n var index = this.items.indexOf(resultData[0]);\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[index], eveArgs);\n }\n };\n LargeIconsView.prototype.updateSelectedData = function () {\n var data = [];\n var items = selectAll('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n for (var i = 0; i < items.length; i++) {\n data[i] = this.getItemObject(items[i]);\n }\n this.parent.itemData = data;\n };\n LargeIconsView.prototype.onMethodCall = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n var action = getValue('action', args);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', args));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', args));\n break;\n case 'openFile':\n this.openFile(getValue('id', args));\n break;\n case 'renameFile':\n this.isInteraction = false;\n this.isInteracted = false;\n this.renameFile(getValue('id', args), getValue('newName', args));\n break;\n case 'createFolder':\n this.isInteraction = false;\n this.isInteracted = false;\n break;\n case 'clearSelection':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onClearAllInit();\n break;\n case 'selectAll':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onSelectAllInit();\n break;\n }\n };\n LargeIconsView.prototype.getItemsIndex = function (items) {\n var indexes = [];\n var isFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filterName = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !isFilter) {\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filterName, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n }\n else {\n for (var i = 0, len = this.items.length; i < len; i++) {\n var name_2 = getValue('filterPath', this.items[i]) + getValue('name', this.items[i]);\n if ((items.indexOf(name_2) !== -1) || (items.indexOf(getValue(filterName, this.items[i])) !== -1)) {\n indexes.push(i);\n }\n }\n }\n return indexes;\n };\n LargeIconsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n var indexes = this.getItemsIndex(ids);\n if (indexes.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < indexes.length; i++) {\n data[i] = this.items[indexes[i]];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n LargeIconsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n var index = this.getItemsIndex(ids);\n if (index.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < index.length; i++) {\n data[i] = this.items[index[i]];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n LargeIconsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n var indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n this.doOpenAction(this.itemList[indexes[0]]);\n }\n };\n LargeIconsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n var indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n updateRenamingData(this.parent, this.items[indexes[0]]);\n if (isNOU(name)) {\n doRename(this.parent);\n }\n else {\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n rename(this.parent, this.parent.path, name);\n }\n }\n }\n };\n return LargeIconsView;\n}());\nexport { LargeIconsView };\n","import { EventHandler, closest, isNullOrUndefined, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, addClass, removeClass, remove, createElement } from '@syncfusion/ej2-base';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { read } from '../common/operations';\nimport { getLocaleText, searchWordHandler } from '../common/utility';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * BreadCrumbBar module\n */\nvar BreadCrumbBar = /** @class */ (function () {\n /**\n * constructor for addressbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies parent element.\n * @private\n *\n */\n function BreadCrumbBar(parent) {\n this.addressPath = '';\n this.addressBarLink = '';\n this.searchTimer = null;\n this.searchWrapWidth = null;\n this.parent = parent;\n this.keyConfigs = {\n enter: 'enter'\n };\n this.render();\n }\n BreadCrumbBar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var value = e.newProp.searchSettings;\n switch (prop) {\n case 'searchSettings':\n if (!isNullOrUndefined(value.allowSearchOnTyping)) {\n this.searchEventBind(value.allowSearchOnTyping);\n }\n if (this.parent.breadcrumbbarModule.searchObj.value && this.parent.breadcrumbbarModule.searchObj.value !== '' &&\n !(!isNullOrUndefined(value.allowSearchOnTyping) && isNullOrUndefined(value.filterType) &&\n isNullOrUndefined(value.ignoreCase))) {\n searchWordHandler(this.parent, this.parent.breadcrumbbarModule.searchObj.value, false);\n }\n break;\n }\n }\n };\n BreadCrumbBar.prototype.render = function () {\n this.addEventListener();\n };\n BreadCrumbBar.prototype.onPathChange = function () {\n var pathNames = this.parent.pathNames;\n var paths = this.parent.path.split('/');\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var addressbarLI = null;\n var pathNamesLen = pathNames.length;\n if (pathNames.length > 0) {\n var id = '';\n for (var i = 0; i < pathNamesLen; i++) {\n var addressATag = null;\n addressbarLI = this.parent.createElement('li', { className: 'e-address-list-item' });\n for (var j = 0; j <= i; j++) {\n id = id + paths[j] + '/';\n }\n addressbarLI.setAttribute('data-utext', id);\n if (i !== 0) {\n var icon = createElement('span', { className: CLS.ICONS });\n addressbarLI.appendChild(icon);\n }\n if (pathNamesLen - i !== 1) {\n addressATag = createElement('a', { className: CLS.LIST_TEXT });\n addressbarLI.setAttribute('tabindex', '0');\n }\n else {\n addressATag = createElement('span', { className: CLS.LIST_TEXT });\n }\n id = '';\n addressATag.innerText = pathNames[i];\n addressbarLI.appendChild(addressATag);\n addressbarUL.appendChild(addressbarLI);\n }\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n if (!isNullOrUndefined(ulElement)) {\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n remove(ulElement);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n if (!searchWrap) {\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.appendChild(addressbarUL);\n }\n this.updateBreadCrumbBar(addressbarUL);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.updateBreadCrumbBar = function (addresBarUL) {\n var liElements = addresBarUL.querySelectorAll('li');\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n var style = window.getComputedStyle(ulElement, null);\n var pRight = parseFloat(style.getPropertyValue('padding-right'));\n var pLeft = parseFloat(style.getPropertyValue('padding-left'));\n var breadCrumbBarWidth = ulElement.offsetWidth - pRight - pLeft;\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var liElementsWidth = 0;\n var liElementsWidths = [];\n for (var i = 0; i < liElements.length; i++) {\n var width = liElements[i].clientWidth;\n liElementsWidths.push(width);\n liElementsWidth = liElementsWidth + width;\n }\n if (!isNullOrUndefined(ulElement)) {\n remove(ulElement);\n }\n var searchContainer = this.parent.createElement('div');\n searchContainer.setAttribute('class', 'e-search-wrap');\n var id = this.parent.element.id + CLS.SEARCH_ID;\n var searchInput = createElement('input', { id: id,\n attrs: { autocomplete: 'off', 'aria-label': getLocaleText(this.parent, 'Search') } });\n searchContainer.appendChild(searchInput);\n var searchEle = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap .e-input');\n if (isNullOrUndefined(searchEle)) {\n this.parent.breadCrumbBarNavigation.appendChild(searchContainer);\n var span = createElement('span', { className: 'e-icons e-fe-search' });\n EventHandler.add(span, 'click', this.onShowInput, this);\n searchInput.parentElement.insertBefore(span, searchInput);\n this.searchObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: getLocaleText(this.parent, 'Search'),\n focus: this.onFocus.bind(this),\n blur: this.onBlur.bind(this)\n });\n this.searchObj.appendTo('#' + this.parent.element.id + CLS.SEARCH_ID);\n this.searchEventBind(this.parent.searchSettings.allowSearchOnTyping);\n var search = this.searchObj.element.nextElementSibling;\n EventHandler.add(search, 'mousedown', this.searchChangeHandler.bind(this), this);\n EventHandler.add(this.searchObj.element, 'keyup', this.onKeyUp.bind(this), this);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n breadCrumbBarWidth = breadCrumbBarWidth - (this.searchWrapWidth ? this.searchWrapWidth : searchWrap.offsetWidth);\n if (liElementsWidth > breadCrumbBarWidth) {\n var i = liElements.length;\n while (i--) {\n var diff = breadCrumbBarWidth - liElementsWidths[i];\n if (diff > 40) {\n addressbarUL.insertBefore(liElements[i], addressbarUL.querySelector('li'));\n breadCrumbBarWidth = diff;\n }\n else {\n var items = [];\n for (var j = 0; j <= i; j++) {\n var liElement = liElements[j];\n items.push({\n text: liElement.innerText,\n utext: liElement.getAttribute('data-utext')\n });\n }\n var subMenuLi = this.parent.createElement('li', { className: 'e-breadcrumb-menu' });\n var attributes = { className: 'e-breadcrumb-submenu' };\n var subMenuSpan = this.parent.createElement('button', attributes);\n subMenuLi.appendChild(subMenuSpan);\n addressbarUL.insertBefore(subMenuLi, addressbarUL.querySelector('li'));\n this.subMenuObj = new DropDownButton({\n items: items,\n cssClass: 'e-caret-hide e-submenu',\n iconCss: CLS.ICON_BREADCRUMB,\n iconPosition: 'Top',\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.addSubMenuAttributes.bind(this),\n select: this.subMenuSelectOperations.bind(this)\n });\n this.subMenuObj.isStringTemplate = true;\n this.subMenuObj.appendTo(subMenuSpan);\n break;\n }\n }\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.insertBefore(addresBarUL, searchWrap);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onFocus = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.add('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onKeyUp = function () {\n this.parent.notify(events.pathColumn, { args: this.parent });\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onBlur = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.remove('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.subMenuSelectOperations = function (event) {\n var args = { target: event.element };\n this.addressPathClickHandler(args);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.addSubMenuAttributes = function (args) {\n args.element.setAttribute('data-utext', getValue('utext', args.item));\n var anchor = this.parent.createElement('a', { className: 'e-list-text' });\n args.element.appendChild(anchor);\n };\n BreadCrumbBar.prototype.searchEventBind = function (allow) {\n if (allow) {\n this.searchObj.input = this.searchChangeHandler.bind(this);\n this.searchObj.change = null;\n }\n else {\n this.searchObj.change = this.searchChangeHandler.bind(this);\n this.searchObj.input = null;\n }\n };\n BreadCrumbBar.prototype.searchChangeHandler = function (args) {\n var _this = this;\n if (!isNullOrUndefined(args.value)) {\n this.parent.isFiltered = false;\n if (this.parent.searchSettings.allowSearchOnTyping) {\n window.clearTimeout(this.searchTimer);\n this.searchTimer = window.setTimeout(function () { searchWordHandler(_this.parent, args.value, false); }, 300);\n }\n else {\n searchWordHandler(this.parent, args.value, false);\n }\n }\n };\n BreadCrumbBar.prototype.addressPathClickHandler = function (e) {\n var li = e.target;\n if (li.nodeName === 'LI' || li.nodeName === 'A') {\n var node = li.nodeName === 'LI' ? li.children[0] : li;\n if (!isNullOrUndefined(node)) {\n this.parent.isFiltered = false;\n var currentPath = this.updatePath(node);\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n this.triggerFileOpen(this.parent.itemData[0]);\n read(this.parent, events.pathChanged, currentPath);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n }\n };\n BreadCrumbBar.prototype.triggerFileOpen = function (data) {\n var eventArgs = { cancel: false, fileDetails: data, module: 'BreadCrumbBar' };\n delete eventArgs.cancel;\n this.parent.trigger('fileOpen', eventArgs);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onShowInput = function () {\n if (this.parent.isMobile) {\n if (this.parent.element.classList.contains(CLS.FILTER)) {\n removeClass([this.parent.element], CLS.FILTER);\n this.searchWrapWidth = null;\n }\n else {\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n this.searchWrapWidth = searchWrap.offsetWidth;\n addClass([this.parent.element], CLS.FILTER);\n this.searchObj.element.focus();\n }\n }\n };\n BreadCrumbBar.prototype.updatePath = function (list) {\n var li = closest(list, 'li');\n var liElementId = li.getAttribute('data-utext');\n this.addressBarLink = liElementId;\n var link = this.addressBarLink.split('/');\n var ids = this.parent.pathId;\n var names = this.parent.pathNames;\n this.parent.pathId = [];\n this.parent.pathNames = [];\n var newpath = '';\n for (var i = 0, len = link.length - 1; i < len; i++) {\n this.parent.pathId.push(ids[i]);\n this.parent.pathNames.push(names[i]);\n newpath += link[i] + '/';\n }\n this.parent.setProperties({ path: newpath }, true);\n return newpath;\n };\n BreadCrumbBar.prototype.onUpdatePath = function () {\n this.onPathChange();\n this.removeSearchValue();\n };\n BreadCrumbBar.prototype.onCreateEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onRenameEnd = function () {\n this.onPathChange();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDeleteEnd = function () {\n this.onUpdatePath();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.removeSearchValue = function () {\n this.parent.isFiltered = false;\n if (this.searchObj && (this.searchObj.value !== '' || this.searchObj.element.value !== '')) {\n this.searchObj.value = '';\n this.searchObj.element.value = '';\n this.searchObj.dataBind();\n }\n };\n BreadCrumbBar.prototype.onResize = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onPasteEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.addEventListener = function () {\n this.keyboardModule = new KeyboardEvents(this.parent.breadCrumbBarNavigation, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n EventHandler.add(this.parent.breadCrumbBarNavigation, 'click', this.addressPathClickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.pathChanged, this.onUpdatePath, this);\n this.parent.on(events.finalizeEnd, this.onUpdatePath, this);\n this.parent.on(events.refreshEnd, this.onUpdatePath, this);\n this.parent.on(events.openEnd, this.onUpdatePath, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.splitterResize, this.onResize, this);\n this.parent.on(events.pasteEnd, this.onPasteEnd, this);\n this.parent.on(events.resizeEnd, this.onResize, this);\n this.parent.on(events.searchTextChange, this.onSearchTextChange, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.layoutRefresh, this.onResize, this);\n this.parent.on(events.dropPath, this.onPathChange, this);\n };\n BreadCrumbBar.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'enter':\n this.addressPathClickHandler(e);\n break;\n }\n };\n BreadCrumbBar.prototype.removeEventListener = function () {\n this.keyboardModule.destroy();\n this.parent.off(events.pathChanged, this.onUpdatePath);\n this.parent.off(events.finalizeEnd, this.onUpdatePath);\n this.parent.off(events.refreshEnd, this.onUpdatePath);\n this.parent.off(events.openEnd, this.onUpdatePath);\n this.parent.off(events.pasteEnd, this.onPasteEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.splitterResize, this.onResize);\n this.parent.off(events.resizeEnd, this.onResize);\n this.parent.off(events.searchTextChange, this.onSearchTextChange);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.layoutRefresh, this.onResize);\n this.parent.off(events.dropPath, this.onPathChange);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var liEle = args.target.closest('li');\n this.parent.dropPath = this.updatePath((liEle.children[0]));\n this.parent.dropData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n this.triggerFileOpen(this.parent.dropData);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name\n * @private\n */\n BreadCrumbBar.prototype.getModuleName = function () {\n return 'breadcrumbbar';\n };\n BreadCrumbBar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n if (!isNullOrUndefined(this.searchObj)) {\n this.searchObj.destroy();\n }\n };\n BreadCrumbBar.prototype.onSearchTextChange = function (args) {\n this.searchObj.element.placeholder = (this.parent.searchSettings.placeholder != null) ? this.parent.searchSettings.placeholder : getLocaleText(this.parent, 'Search') + ' ' + getLocaleText(this.parent, args.cwd.name.toString());\n };\n return BreadCrumbBar;\n}());\nexport { BreadCrumbBar };\n","import { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, createElement, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, select } from '@syncfusion/ej2-base';\nimport { Download, GetDetails } from './../common/operations';\nimport { createDialog } from './dialog';\nimport { cutFiles, copyFiles, refresh, getPathObject, getLocaleText, updateLayout, getFullPath } from './../common/utility';\nimport { getCssClass, sortbyClickHandler, pasteHandler } from './../common/utility';\nimport { createDeniedDialog, createNewFolder, uploadItem, hasEditAccess, hasDownloadAccess } from './../common/utility';\nimport * as events from './../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * ContextMenu module\n */\nvar ContextMenu = /** @class */ (function () {\n /**\n * Constructor for the ContextMenu module\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @hidden\n */\n function ContextMenu(parent) {\n this.isMenuItemClicked = false;\n this.currentItems = [];\n this.currentElement = null;\n this.disabledItems = [];\n this.parent = parent;\n this.render();\n }\n ContextMenu.prototype.render = function () {\n this.keyConfigs = {\n downarrow: 'downarrow',\n uparrow: 'uparrown'\n };\n this.contextMenu = new Menu({\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n target: '#' + this.parent.element.id,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.onBeforeItemRender.bind(this),\n select: this.onSelect.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this),\n cssClass: getCssClass(this.parent, CLS.ROOT_POPUP)\n });\n this.contextMenu.isStringTemplate = true;\n this.contextMenu.appendTo('#' + this.parent.element.id + CLS.CONTEXT_MENU_ID);\n this.addEventListener();\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeItemRender = function (args) {\n if (args.item.id === this.getMenuId('largeiconsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'LargeIcons' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_LARGE + ' ' + CLS.MENU_ICON);\n }\n if (args.item.id === this.getMenuId('detailsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'Details' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_GRID + ' ' + CLS.MENU_ICON);\n }\n };\n ContextMenu.prototype.onBeforeClose = function (args) {\n var eventArgs = {\n cancel: false,\n element: args.element,\n event: args.event,\n isFocused: args.isFocused,\n fileDetails: [this.menuItemData],\n items: args.items,\n parentItem: args.parentItem,\n menuType: this.menuType\n };\n this.parent.trigger('menuClose', eventArgs, function (menuCloseArgs) {\n if (menuCloseArgs.cancel) {\n args.cancel = menuCloseArgs.cancel;\n return;\n }\n });\n this.menuTarget = null;\n if (!this.isMenuItemClicked && this.parent.pathId.length > 1 && this.parent.activeModule === 'navigationpane') {\n this.parent.pathId.pop();\n var parentKey = [];\n var itemKeys = Object.keys(this.parent.feParent);\n for (var _i = 0, itemKeys_1 = itemKeys; _i < itemKeys_1.length; _i++) {\n var item = itemKeys_1[_i];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var itemData = getValue(item, this.parent.feParent);\n if (this.parent.pathNames.indexOf(itemData.name) !== -1) {\n parentKey.push(itemData._fm_id);\n }\n }\n this.parent.pathId.push(parentKey[parentKey.length - 1]);\n this.parent.navigationpaneModule.treeObj.setProperties({ selectedNodes: [this.parent.pathId[this.parent.pathId.length - 1]] });\n }\n this.isMenuItemClicked = false;\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeOpen = function (args) {\n var _this = this;\n var selected = false;\n var uid;\n var data;\n var treeFolder = false;\n var target = args.event.target;\n this.menuTarget = this.targetNodeElement = target;\n this.currentElement = args.element;\n if (target.classList.contains('e-spinner-pane')) {\n target = this.parent.navigationpaneModule.activeNode.getElementsByClassName(CLS.FULLROW)[0];\n this.menuTarget = this.targetNodeElement = target;\n }\n this.targetElement = this.parent.view === 'Details' ? closest(target, 'tr.e-row') : target;\n if (this.parent.enableVirtualization && (target.classList.contains('e-virtual-bottom') || target.classList.contains('e-virtualtable'))) {\n target = target.parentElement.closest('div');\n }\n var view = this.getTargetView(target);\n this.updateActiveModule();\n /* istanbul ignore next */\n if (target.classList.contains(CLS.TREE_VIEW) || closest(target, 'th') ||\n (closest(target, '#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID)) ||\n (closest(target, '#' + this.parent.element.id + CLS.TOOLBAR_ID))) {\n args.cancel = true;\n }\n else if (!(this.parent.view === 'LargeIcons') && this.targetElement &&\n this.targetElement.classList.contains('e-emptyrow')) {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else if (closest(target, '.' + CLS.EMPTY)) {\n this.setLayoutItem(target);\n }\n else if (!target.classList.contains(CLS.MENU_ITEM) &&\n !target.classList.contains(CLS.MENU_ICON) && !target.classList.contains(CLS.SUBMENU_ICON)) {\n /* istanbul ignore next */\n if (this.parent.view === 'LargeIcons' && !isNOU(closest(target, 'li')) && !closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n var eveArgs = { ctrlKey: true, shiftKey: true };\n if (!closest(target, 'li').classList.contains('e-active')) {\n this.parent.largeiconsviewModule.doSelection(target, eveArgs);\n }\n data = this.parent.visitedData;\n selected = true;\n }\n else if (!isNOU(closest(target, 'tr.e-row'))) {\n uid = this.targetElement.getAttribute('data-uid');\n data = this.parent.detailsviewModule.gridObj.getRowObjectFromUID(uid).data;\n if (isNOU(this.targetElement.getAttribute('aria-selected'))) {\n /* istanbul ignore next */\n this.parent.detailsviewModule.gridObj.selectRows([parseInt(this.targetElement.getAttribute('data-rowindex'), 10)]);\n }\n selected = true;\n /* istanbul ignore next */\n }\n else if (closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n uid = closest(target, 'li').getAttribute('data-uid');\n if (!isNOU(uid)) {\n this.parent.navigationpaneModule.treeObj.setProperties({ selectedNodes: [uid] });\n }\n treeFolder = true;\n }\n /* istanbul ignore next */\n if (selected) {\n if (getValue('isFile', data) === true) {\n this.setFileItem();\n }\n else {\n this.setFolderItem(false);\n }\n /* istanbul ignore next */\n }\n else if (treeFolder) {\n this.setFolderItem(true);\n if (uid === this.parent.pathId[0]) {\n this.disabledItems.push('Delete', 'Rename', 'Cut', 'Copy');\n }\n else {\n var itemsToRemove = ['Delete', 'Rename', 'Cut', 'Copy'];\n for (var i = 0; i < this.disabledItems.length; i++) {\n var item = this.disabledItems[i];\n if (itemsToRemove.indexOf(item) !== -1) {\n this.disabledItems.splice(i, 1);\n i--;\n }\n }\n }\n /* istanbul ignore next */\n }\n else if (view === 'TreeView' || view === 'GridView' || view === 'LargeIcon') {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else {\n args.cancel = true;\n }\n }\n var pasteEle = select('#' + this.getMenuId('Paste'), this.contextMenu.element);\n if (!args.cancel && !this.parent.enablePaste &&\n pasteEle && !pasteEle.classList.contains('e-disabled')) {\n if (this.disabledItems.indexOf('Paste') === -1) {\n this.disabledItems.push('Paste');\n }\n }\n else {\n var pasteIndex = this.disabledItems.indexOf('Paste');\n if (pasteIndex !== -1) {\n this.disabledItems.splice(pasteIndex, 1);\n }\n }\n if (args.cancel) {\n this.menuTarget = this.currentElement = null;\n return;\n }\n this.contextMenu.dataBind();\n var isSubMenu = false;\n if (target.classList.contains(CLS.MENU_ITEM) ||\n target.classList.contains(CLS.MENU_ICON) || target.classList.contains(CLS.SUBMENU_ICON)) {\n isSubMenu = true;\n }\n this.menuItemData = isSubMenu ? this.menuItemData : this.getMenuItemData();\n var eventArgs = {\n fileDetails: [this.menuItemData],\n element: args.element,\n target: target,\n items: isSubMenu ? args.items : this.contextMenu.items,\n menuModule: this.contextMenu,\n cancel: false,\n menuType: this.menuType,\n isSubMenu: isSubMenu\n };\n this.currentItems = eventArgs.items;\n this.parent.trigger('menuOpen', eventArgs, function (menuOpenArgs) {\n if (!isSubMenu) {\n _this.contextMenu.dataBind();\n _this.contextMenu.items = menuOpenArgs.items;\n _this.contextMenu.dataBind();\n }\n _this.enableItems(_this.disabledItems, false, true);\n args.cancel = menuOpenArgs.cancel;\n if (menuOpenArgs.cancel) {\n _this.menuTarget = _this.targetNodeElement = _this.currentElement = null;\n }\n });\n };\n ContextMenu.prototype.updateActiveModule = function () {\n this.parent.activeModule = closest(this.menuTarget, '#' + this.parent.element.id + CLS.TREE_ID) ?\n 'navigationpane' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.GRID_ID) ?\n 'detailsview' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.LARGEICON_ID) ?\n 'largeiconsview' : this.parent.activeModule;\n };\n /* istanbul ignore next */\n /**\n *\n * @param {Element} target - specifies the target element.\n * @returns {string} -returns the target view.\n * @hidden\n */\n ContextMenu.prototype.getTargetView = function (target) {\n return target.classList.contains(CLS.TREE_VIEW) ?\n 'TreeView' : target.classList.contains(CLS.GRID_VIEW) ?\n 'GridView' : target.classList.contains(CLS.ICON_VIEW) ?\n 'LargeIcon' : target.classList.contains(CLS.LARGE_ICONS) ?\n 'LargeIcon' : '';\n };\n ContextMenu.prototype.getItemIndex = function (item) {\n var itemId = this.getMenuId(item);\n for (var i = 0; i < this.currentItems.length; i++) {\n if ((this.currentItems[i].id === itemId) || (this.currentItems[i].id === item)) {\n return i;\n }\n }\n return -1;\n };\n ContextMenu.prototype.disableItem = function (items) {\n if (items.length !== 0) {\n this.disabledItems = this.disabledItems.concat(items);\n }\n };\n ContextMenu.prototype.enableItems = function (items, enable, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n if (this.checkValidItem(items[i]) === 1) {\n this.contextMenu.enableItems([this.getMenuId(items[i])], enable, isUniqueId);\n }\n else if (this.checkValidItem(items[i]) === 2) {\n this.contextMenu.enableItems([items[i]], enable, isUniqueId);\n }\n }\n };\n ContextMenu.prototype.setFolderItem = function (isTree) {\n this.menuType = 'folder';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.folder.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (isTree) {\n var selectedTreeNode = select('[data-uid=\"' + this.parent.navigationpaneModule.treeObj.selectedNodes[0] + '\"]', this.parent.navigationpaneModule.treeObj.element);\n if (this.parent.pathNames[this.parent.pathNames.length - 1] === selectedTreeNode.querySelector('.e-list-text').innerHTML && this.parent.activeModule === 'navigationpane') {\n this.disabledItems.push('Open');\n }\n else {\n var indexToRemove = this.disabledItems.indexOf('Open');\n if (indexToRemove !== -1) {\n this.disabledItems.splice(indexToRemove, 1);\n }\n }\n if (this.parent.selectedItems.length === 0) {\n var renameIndex = this.disabledItems.indexOf('Rename');\n if (renameIndex !== -1) {\n this.disabledItems.splice(renameIndex, 1);\n }\n }\n }\n else if (this.parent.activeModule !== 'navigationpane') {\n if (this.parent.selectedItems.length === 1) {\n var renameIndex = this.disabledItems.indexOf('Rename');\n if (renameIndex !== -1) {\n this.disabledItems.splice(renameIndex, 1);\n }\n }\n else {\n this.disabledItems.push('Rename', 'Paste');\n }\n }\n };\n ContextMenu.prototype.setFileItem = function () {\n this.menuType = 'file';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.file.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (this.parent.selectedItems.length === 1) {\n var renameIndex = this.disabledItems.indexOf('Rename');\n if (renameIndex !== -1) {\n this.disabledItems.splice(renameIndex, 1);\n }\n }\n else {\n this.disabledItems.push('Rename');\n }\n };\n ContextMenu.prototype.setLayoutItem = function (target) {\n this.menuType = 'layout';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.layout.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (!this.parent.allowMultiSelection || ((this.parent.view === 'LargeIcons' &&\n (closest(target, '#' + this.parent.element.id + CLS.LARGEICON_ID).getElementsByClassName(CLS.EMPTY).length !== 0))\n || (this.parent.view === 'Details' &&\n (closest(target, '#' + this.parent.element.id + CLS.GRID_ID).getElementsByClassName(CLS.EMPTY).length !== 0)))) {\n this.disabledItems.push('SelectAll');\n }\n else {\n this.disabledItems = this.disabledItems.filter(function (item) { return item !== 'SelectAll'; });\n }\n if (this.parent.selectedNodes.length === 0) {\n if (this.disabledItems.indexOf('Paste') === -1) {\n this.disabledItems.push('Paste');\n }\n }\n this.contextMenu.dataBind();\n };\n ContextMenu.prototype.checkValidItem = function (nameEle) {\n if (!isNOU(select('#' + this.getMenuId(nameEle), this.currentElement))) {\n return 1;\n }\n else if (!isNOU(select('#' + nameEle, this.currentElement))) {\n return 2;\n }\n else {\n return -1;\n }\n };\n ContextMenu.prototype.getMenuItemData = function () {\n if (this.menuType === 'layout') {\n return getPathObject(this.parent);\n }\n else {\n var args = { target: this.menuTarget };\n this.parent.notify(events.menuItemData, args);\n return this.parent.itemData[0];\n }\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onSelect = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var itemText = args.item.id.substr((this.parent.element.id + '_cm_').length);\n var details;\n if (itemText === 'refresh' || itemText === 'newfolder' || itemText === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n if (this.parent.activeModule === 'navigationpane' && itemText === 'open') {\n details = [this.menuItemData];\n }\n else {\n details = this.parent.itemData;\n }\n }\n var eventArgs = {\n cancel: false,\n element: args.element,\n fileDetails: details,\n item: args.item\n };\n this.parent.trigger('menuClick', eventArgs, function (menuClickArgs) {\n var sItems;\n if (!menuClickArgs.cancel) {\n _this.isMenuItemClicked = true;\n switch (itemText) {\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'paste':\n if (_this.menuType === 'folder') {\n if (_this.parent.activeModule === 'navigationpane') {\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n _this.parent.folderPath = _this.parent.path;\n }\n else {\n _this.parent.folderPath = getFullPath(_this.parent, _this.menuItemData, _this.parent.path);\n }\n }\n else {\n _this.parent.folderPath = '';\n }\n pasteHandler(_this.parent);\n break;\n case 'delete':\n for (var j = 0; j < details.length; j++) {\n if (!hasEditAccess(details[j])) {\n createDeniedDialog(_this.parent, details[j], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n /* istanbul ignore next */\n case 'download':\n for (var i = 0; i < details.length; i++) {\n if (!hasDownloadAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionDownload);\n return;\n }\n }\n if (_this.parent.activeModule === 'navigationpane') {\n _this.parent.notify(events.downloadInit, {});\n }\n else if (_this.parent.selectedItems.length > 0) {\n Download(_this.parent, _this.parent.path, _this.parent.selectedItems);\n }\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'selectall':\n /* istanbul ignore next */\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'open':\n if (_this.parent.visitedItem && _this.parent.activeModule !== 'navigationpane') {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n else if (_this.parent.activeModule === 'navigationpane') {\n if (_this.parent.visitedItem) {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n }\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n case 'name':\n case 'size':\n case 'date':\n case 'ascending':\n case 'descending':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n case 'none':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n case 'largeiconsview':\n updateLayout(_this.parent, 'LargeIcons');\n break;\n /* istanbul ignore next */\n case 'detailsview':\n updateLayout(_this.parent, 'Details');\n break;\n }\n }\n });\n };\n ContextMenu.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.contextMenu.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n break;\n }\n }\n };\n ContextMenu.prototype.addEventListener = function () {\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.keyboardModule = new KeyboardEvents(this.contextMenu.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n ContextMenu.prototype.removeEventListener = function () {\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.keyboardModule.destroy();\n };\n ContextMenu.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'uparrow':\n case 'downarrow':\n e.preventDefault();\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n ContextMenu.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n this.contextMenu.destroy();\n this.targetElement = null;\n };\n /* istanbul ignore next */\n ContextMenu.prototype.getItemData = function (data) {\n var items = [];\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var itemId = this.getMenuId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n switch (data[i]) {\n case '|':\n item = { separator: true };\n break;\n case 'Open':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_OPEN };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_UPLOAD };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_CUT };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_COPY };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_PASTE };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DELETE };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_RENAME };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_NEWFOLDER };\n break;\n case 'Details':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DETAILS };\n break;\n case 'SortBy':\n item = {\n id: itemId, text: itemText, iconCss: CLS.ICON_SHORTBY,\n items: [\n {\n id: this.getMenuId('Name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : null\n },\n { separator: true },\n {\n id: this.getMenuId('Ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('Descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('None'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n /* istanbul ignore next */\n case 'View':\n item = {\n id: itemId, text: itemText, iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n items: [\n {\n id: this.getMenuId('largeiconsview'), text: getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? null : CLS.TB_OPTION_TICK\n },\n {\n id: this.getMenuId('detailsview'), text: getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n case 'Refresh':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_REFRESH };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_SELECTALL };\n break;\n /* istanbul ignore next */\n case 'Download':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DOWNLOAD };\n break;\n /* istanbul ignore next */\n default:\n item = { id: itemId, text: itemText };\n break;\n }\n items.push(item);\n }\n return items;\n };\n ContextMenu.prototype.getMenuId = function (id) {\n return this.parent.element.id + '_cm_' + id.split(' ').join('').toLowerCase();\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","/**\n * Specifies the default locale of FileManager component\n */\nexport var defaultLocale = {\n 'NewFolder': 'New folder',\n 'Upload': 'Upload',\n 'Delete': 'Delete',\n 'Rename': 'Rename',\n 'Download': 'Download',\n 'Cut': 'Cut',\n 'Copy': 'Copy',\n 'Paste': 'Paste',\n 'SortBy': 'Sort by',\n 'Refresh': 'Refresh',\n 'Item-Selection': 'item selected',\n 'Items-Selection': 'items selected',\n 'View': 'View',\n 'Details': 'Details',\n 'SelectAll': 'Select all',\n 'Open': 'Open',\n 'Tooltip-NewFolder': 'New folder',\n 'Tooltip-Upload': 'Upload',\n 'Tooltip-Delete': 'Delete',\n 'Tooltip-Rename': 'Rename',\n 'Tooltip-Download': 'Download',\n 'Tooltip-Cut': 'Cut',\n 'Tooltip-Copy': 'Copy',\n 'Tooltip-Paste': 'Paste',\n 'Tooltip-SortBy': 'Sort by',\n 'Tooltip-Refresh': 'Refresh',\n 'Tooltip-Selection': 'Clear selection',\n 'Tooltip-View': 'View',\n 'Tooltip-Details': 'Details',\n 'Tooltip-SelectAll': 'Select all',\n 'Name': 'Name',\n 'Size': 'Size',\n 'DateModified': 'Modified',\n 'DateCreated': 'Date created',\n 'Path': 'Path',\n 'Modified': 'Modified',\n 'Created': 'Created',\n 'Location': 'Location',\n 'Type': 'Type',\n 'Permission': 'Permission',\n 'Ascending': 'Ascending',\n 'Descending': 'Descending',\n 'None': 'None',\n 'View-LargeIcons': 'Large icons',\n 'View-Details': 'Details',\n 'Search': 'Search',\n 'Button-Ok': 'OK',\n 'Button-Cancel': 'Cancel',\n 'Button-Yes': 'Yes',\n 'Button-No': 'No',\n 'Button-Create': 'Create',\n 'Button-Save': 'Save',\n 'Header-NewFolder': 'Folder',\n 'Content-NewFolder': 'Enter your folder name',\n 'Header-Rename': 'Rename',\n 'Content-Rename': 'Enter your new name',\n 'Header-Rename-Confirmation': 'Rename Confirmation',\n 'Content-Rename-Confirmation': 'If you change a file name extension, the file might become unstable. ' +\n 'Are you sure you want to change it?',\n 'Header-Delete': 'Delete File',\n 'Content-Delete': 'Are you sure you want to delete this file?',\n 'Header-Folder-Delete': 'Delete Folder',\n 'Content-Folder-Delete': 'Are you sure you want to delete this folder?',\n 'Header-Multiple-Delete': 'Delete Multiple Items',\n 'Content-Multiple-Delete': 'Are you sure you want to delete these {0} items?',\n 'Header-Duplicate': 'File/Folder exists',\n 'Content-Duplicate': '{0} already exists. Do you want to rename and paste?',\n 'Header-Upload': 'Upload Files',\n 'Error': 'Error',\n 'Validation-Empty': 'The file or folder name cannot be empty.',\n 'Validation-Invalid': 'The file or folder name {0} contains invalid characters. Please use a different name. ' +\n // eslint-disable-next-line no-useless-escape\n 'Valid file or folder names cannot end with a dot or space, and cannot contain any of the following characters: \\\\/:*?\\\"<>|',\n 'Validation-NewFolder-Exists': 'A file or folder with the name {0} already exists.',\n 'Validation-Rename-Exists': 'Cannot rename {0} to {1}: destination already exists.',\n 'Folder-Empty': 'This folder is empty',\n 'File-Upload': 'Drag files here to upload',\n 'Search-Empty': 'No results found',\n 'Search-Key': 'Try with different keywords',\n 'Filter-Empty': 'No results found',\n 'Filter-Key': 'Try with different filter',\n 'Sub-Folder-Error': 'The destination folder is the subfolder of the source folder.',\n 'Same-Folder-Error': 'The destination folder is the same as the source folder.',\n 'Access-Denied': 'Access Denied',\n 'Access-Details': 'You don\"t have permission to access this folder.',\n 'Header-Retry': 'File Already Exists',\n 'Content-Retry': 'A file with this name already exists in this folder. What would you like to do?',\n 'Button-Keep-Both': 'Keep both',\n 'Button-Replace': 'Replace',\n 'Button-Skip': 'Skip',\n 'ApplyAll-Label': 'Do this for all current items',\n 'KB': 'KB',\n 'Access-Message': '{0} is not accessible. You need permission to perform the {1} action.',\n 'Network-Error': 'NetworkError: Failed to send on XMLHTTPRequest: Failed to load',\n 'Server-Error': 'ServerError: Invalid response from'\n};\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 { Component, isNullOrUndefined, L10n, closest, Collection, detach, selectAll, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Complex, select } from '@syncfusion/ej2-base';\nimport { createElement, addClass, removeClass, setStyleAttribute as setAttr, getUniqueID } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, formatUnit, Browser, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Splitter } from '@syncfusion/ej2-layouts';\nimport { Dialog, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { ToolbarSettings, AjaxSettings, NavigationPaneSettings, DetailsViewSettings } from '../models/index';\nimport { ToolbarItem } from '../models/index';\nimport { SearchSettings } from '../models/index';\nimport { LargeIconsView } from '../layout/large-icons-view';\nimport { Uploader } from '@syncfusion/ej2-inputs';\nimport { UploadSettings } from '../models/upload-settings';\nimport * as events from './constant';\nimport * as CLS from './classes';\nimport { read, filter, createFolder } from '../common/operations';\nimport { refresh, getPathObject, getLocaleText, setNextPath, createDeniedDialog, getCssClass } from '../common/utility';\nimport { hasContentAccess, hasUploadAccess, updateLayout, createNewFolder, uploadItem, closePopup } from '../common/utility';\nimport { ContextMenuSettings } from '../models/contextMenu-settings';\nimport { BreadCrumbBar } from '../actions/breadcrumb-bar';\nimport { ContextMenu } from '../pop-up/context-menu';\nimport { defaultLocale } from '../models/default-locale';\n/**\n * The FileManager component allows users to access and manage the file system through the web browser. It can performs the\n * functionalities like add, rename, search, sort, upload and delete files or folders. And also it\n * provides an easy way of dynamic injectable modules like toolbar, navigationpane, detailsview, largeiconsview.\n * ```html\n * <div id=\"file\"></div>\n * ```\n * ```typescript,\n * let feObj: FileManager = new FileManager();\n * feObj.appendTo('#file');\n * ```\n */\nvar FileManager = /** @class */ (function (_super) {\n __extends(FileManager, _super);\n function FileManager(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.filterData = null;\n _this.selectedNodes = [];\n _this.duplicateItems = [];\n _this.duplicateRecords = [];\n _this.previousPath = [];\n _this.nextPath = [];\n _this.existingFileCount = 0;\n _this.isLayoutChange = false;\n _this.layoutSelectedItems = [];\n _this.renamedId = null;\n _this.uploadItem = [];\n _this.deleteRecords = [];\n _this.isFile = false;\n _this.isCut = false;\n _this.isSearchCut = false;\n _this.isSearchDrag = false;\n _this.isPasteError = false;\n _this.folderPath = '';\n _this.isSameAction = false;\n _this.isFiltered = false;\n // Specifies whether the sort by option is clicked or not.\n _this.isSortByClicked = false;\n _this.enablePaste = false;\n _this.persistData = false;\n _this.retryArgs = [];\n _this.isOpened = false;\n _this.isRetryOpened = false;\n _this.isPathDrag = false;\n _this.searchedItems = [];\n _this.retryFiles = [];\n _this.isApplySame = false;\n _this.dragData = [];\n _this.dragNodes = [];\n _this.dragPath = '';\n _this.dropPath = '';\n _this.isDragDrop = false;\n _this.treeExpandTimer = null;\n _this.dragCursorPosition = { left: 44, top: 18 };\n _this.isDropEnd = false;\n _this.dragCount = 0;\n _this.droppedObjects = [];\n _this.uploadingCount = 0;\n _this.uploadedCount = 0;\n //Specifies whether the operating system is MAC or not\n _this.isMac = false;\n _this.dragSelectedItems = [];\n FileManager_1.Inject(BreadCrumbBar, LargeIconsView, ContextMenu);\n return _this;\n }\n FileManager_1 = FileManager;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n FileManager.prototype.getModuleName = function () {\n return 'filemanager';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n FileManager.prototype.preRender = function () {\n if (isNOU(this.element.id) || this.element.id === '') {\n this.element.setAttribute('id', getUniqueID('filemanager'));\n }\n this.ensurePath();\n this.feParent = [];\n this.feFiles = [];\n setAttr(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.isDevice = Browser.isDevice;\n this.isMobile = this.checkMobile();\n if (this.isMobile) {\n this.setProperties({ navigationPaneSettings: { visible: false } }, true);\n }\n var ele = closest(this.element, '.e-bigger');\n this.isBigger = ele ? true : false;\n this.activeModule = (this.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n createSpinner({ target: this.element }, createElement);\n this.addWrapper();\n this.keyConfigs = {\n altN: 'alt+n',\n f5: 'f5',\n ctrlShift1: 'ctrl+shift+1',\n ctrlShift2: 'ctrl+shift+2',\n ctrlU: 'ctrl+u'\n };\n this.localeObj = new L10n(this.getModuleName(), defaultLocale, this.locale);\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string} - returns the persisted data.\n * @hidden\n */\n FileManager.prototype.getPersistData = function () {\n var keyEntity = ['view', 'path', 'selectedItems'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n FileManager.prototype.requiredModules = function () {\n var modules = [];\n modules.push({\n member: 'breadcrumbbar',\n args: [this]\n });\n modules.push({\n member: 'largeiconsview',\n args: [this]\n });\n if (this.toolbarSettings.visible) {\n modules.push({\n member: 'toolbar',\n args: [this],\n name: 'Toolbar'\n });\n }\n if (this.navigationPaneSettings.visible) {\n modules.push({\n member: 'navigationpane',\n args: [this],\n name: 'NavigationPane'\n });\n }\n if (this.view) {\n modules.push({\n member: 'detailsview',\n args: [this],\n name: 'DetailsView'\n });\n }\n if (this.contextMenuSettings.visible && !this.isDevice) {\n modules.push({\n member: 'contextmenu',\n args: [this],\n name: 'ContextMenu'\n });\n }\n if (this.enableVirtualization) {\n modules.push({\n member: 'virtualization',\n args: [this],\n name: 'Virtualization'\n });\n }\n return modules;\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n FileManager.prototype.render = function () {\n this.initialize();\n var slItems = isNOU(this.selectedItems) ? [] :\n this.allowMultiSelection ? this.selectedItems : this.selectedItems.slice(this.selectedItems.length - 1);\n this.setProperties({ selectedItems: slItems }, true);\n this.fileView = this.view;\n this.isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n this.setRtl(this.enableRtl);\n this.addEventListeners();\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n if (this.fileView === 'Details') {\n this.largeiconsviewModule.element.classList.add(CLS.DISPLAY_NONE);\n }\n this.adjustHeight();\n if (isNOU(this.navigationpaneModule)) {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n this.wireEvents();\n this.renderComplete();\n };\n FileManager.prototype.ensurePath = function () {\n var currentPath = this.path;\n if (isNOU(currentPath)) {\n currentPath = '/';\n }\n if (currentPath.lastIndexOf('/') !== (currentPath.length - 1)) {\n currentPath = currentPath + '/';\n }\n this.originalPath = currentPath;\n var paths = currentPath.split('/');\n this.setProperties({ path: paths[0] + '/' }, true);\n this.pathNames = [];\n this.pathId = ['fe_tree'];\n this.itemData = [];\n };\n FileManager.prototype.initialize = function () {\n if (this.isMobile) {\n addClass([this.element], CLS.MOBILE);\n }\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n this.addCssClass(null, this.cssClass);\n this.renderFileUpload();\n };\n FileManager.prototype.addWrapper = function () {\n var headerWrap = this.createElement('div', { id: this.element.id + CLS.TOOLBAR_ID });\n this.element.appendChild(headerWrap);\n var layoutWrap = this.createElement('div', {\n id: this.element.id + CLS.LAYOUT_ID, className: CLS.LAYOUT\n });\n this.element.appendChild(layoutWrap);\n var navigationWrap = this.createElement('div', {\n id: this.element.id + CLS.NAVIGATION_ID, className: CLS.NAVIGATION\n });\n var treeWrap = this.createElement('div', {\n id: this.element.id + CLS.TREE_ID\n });\n navigationWrap.appendChild(treeWrap);\n var contentWrap = this.createElement('div', {\n id: this.element.id + CLS.CONTENT_ID, className: CLS.LAYOUT_CONTENT\n });\n this.breadCrumbBarNavigation = this.createElement('div', {\n id: this.element.id + CLS.BREADCRUMBBAR_ID,\n className: CLS.BREADCRUMBS\n });\n contentWrap.appendChild(this.breadCrumbBarNavigation);\n var gridWrap = this.createElement('div', {\n id: this.element.id + CLS.GRID_ID\n });\n contentWrap.appendChild(gridWrap);\n var largeiconWrap = this.createElement('div', {\n id: this.element.id + CLS.LARGEICON_ID,\n className: CLS.LARGE_ICONS, attrs: { 'role': 'group' }\n });\n contentWrap.appendChild(largeiconWrap);\n var overlay = this.createElement('span', { className: CLS.OVERLAY });\n contentWrap.appendChild(overlay);\n var paneSettings;\n if (!this.enableRtl) {\n layoutWrap.appendChild(navigationWrap);\n layoutWrap.appendChild(contentWrap);\n paneSettings = [\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n },\n { size: '75%', min: '270px' }\n ];\n }\n else {\n layoutWrap.appendChild(contentWrap);\n layoutWrap.appendChild(navigationWrap);\n paneSettings = [\n { size: '75%', min: '270px' },\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n }\n ];\n }\n this.splitterObj = new Splitter({\n paneSettings: paneSettings,\n width: '100%',\n enableRtl: false,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n resizing: this.splitterResize.bind(this)\n });\n this.splitterObj.isStringTemplate = true;\n this.splitterObj.appendTo(layoutWrap);\n var dialogWrap = this.createElement('div', { id: this.element.id + CLS.DIALOG_ID });\n this.element.appendChild(dialogWrap);\n var menuWrap = this.createElement('ul', { id: this.element.id + CLS.CONTEXT_MENU_ID });\n this.element.appendChild(menuWrap);\n var dialogImgWrap = this.createElement('div', { id: this.element.id + CLS.IMG_DIALOG_ID });\n this.element.appendChild(dialogImgWrap);\n var extnDialogWrap = this.createElement('div', { id: this.element.id + CLS.EXTN_DIALOG_ID });\n this.element.appendChild(extnDialogWrap);\n var uploadDialogWrap = this.createElement('div', { id: this.element.id + CLS.UPLOAD_DIALOG_ID });\n this.element.appendChild(uploadDialogWrap);\n };\n FileManager.prototype.adjustHeight = function () {\n var toolbar = select('#' + this.element.id + CLS.TOOLBAR_ID, this.element);\n var toolBarHeight = toolbar ? toolbar.offsetHeight : 0;\n if (this.splitterObj) {\n this.splitterObj.height = (this.element.clientHeight - toolBarHeight).toString();\n this.splitterObj.dataBind();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.splitterResize = function () {\n this.notify(events.splitterResize, {});\n };\n FileManager.prototype.splitterAdjust = function () {\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n if (this.navigationPaneSettings.visible) {\n this.splitterObj.expand(this.enableRtl ? 1 : 0);\n bar.classList.remove(CLS.DISPLAY_NONE);\n }\n else {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n };\n FileManager.prototype.addCssClass = function (oldOne, newOne) {\n if (!isNOU(oldOne) && oldOne !== '') {\n removeClass([this.element], oldOne.split(' '));\n }\n if (!isNOU(newOne) && newOne !== '') {\n addClass([this.element], newOne.split(' '));\n }\n };\n FileManager.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n FileManager.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n FileManager.prototype.onContextMenu = function (e) {\n e.preventDefault();\n };\n FileManager.prototype.checkMobile = function () {\n return (/iphone|ipod|android|blackberry|opera|mini|windows\\sce|palm|smartphone|iemobile/i.test(Browser.userAgent.toLowerCase())\n && /mobile/i.test(Browser.userAgent.toLowerCase()));\n };\n FileManager.prototype.renderFileUpload = function () {\n var id = this.element.id + CLS.UPLOAD_ID;\n var uploadEle = this.createElement('input', { id: id, attrs: { name: 'uploadFiles', type: 'file' } });\n this.element.appendChild(uploadEle);\n this.uploadDialogObj = new Dialog({\n header: getLocaleText(this, 'Header-Upload'),\n content: uploadEle,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: false,\n isModal: true,\n width: '350px',\n target: this.popupTarget ? this.popupTarget : '#' + this.element.id,\n cssClass: getCssClass(this, this.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: this.locale,\n allowDragging: true,\n position: { X: 'center', Y: 'center' },\n enableRtl: this.enableRtl,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n open: this.onOpen.bind(this),\n close: this.onClose.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this)\n });\n this.uploadDialogObj.appendTo('#' + this.element.id + CLS.UPLOAD_DIALOG_ID);\n this.renderUploadBox();\n };\n FileManager.prototype.renderUploadBox = function () {\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n this.uploadObj = new Uploader({\n dropArea: select('#' + this.element.id + CLS.CONTENT_ID, this.element),\n asyncSettings: {\n saveUrl: uploadUrl,\n removeUrl: uploadUrl\n },\n locale: this.locale,\n enableRtl: this.enableRtl,\n uploading: this.onUploading.bind(this),\n removing: this.onRemoving.bind(this),\n canceling: this.onCancel.bind(this),\n clearing: this.onClearing.bind(this),\n selected: this.onSelected.bind(this),\n success: this.onUploadSuccess.bind(this),\n failure: this.onUploadFailure.bind(this),\n autoUpload: this.uploadSettings.autoUpload,\n minFileSize: this.uploadSettings.minFileSize,\n maxFileSize: this.uploadSettings.maxFileSize,\n allowedExtensions: this.uploadSettings.allowedExtensions,\n directoryUpload: this.uploadSettings.directoryUpload,\n fileListRendering: this.onFileListRender.bind(this)\n });\n this.uploadObj.appendTo('#' + this.element.id + CLS.UPLOAD_ID);\n };\n FileManager.prototype.onFileListRender = function (args) {\n this.trigger('uploadListCreate', args);\n };\n FileManager.prototype.updateUploader = function () {\n this.uploadObj.autoUpload = this.uploadSettings.autoUpload;\n this.uploadObj.minFileSize = this.uploadSettings.minFileSize;\n this.uploadObj.maxFileSize = this.uploadSettings.maxFileSize;\n this.uploadObj.allowedExtensions = this.uploadSettings.allowedExtensions;\n this.uploadObj.directoryUpload = this.uploadSettings.directoryUpload;\n this.uploadObj.dataBind();\n };\n FileManager.prototype.onBeforeOpen = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onBeforeClose = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onOpen = function () {\n this.isOpened = true;\n this.uploadDialogObj.element.focus();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupOpen', args);\n };\n FileManager.prototype.onClose = function () {\n this.isOpened = false;\n this.uploadObj.clearAll();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupClose', args);\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploading = function (args) {\n var action = 'save';\n if ((this.retryArgs.length !== 0)) {\n for (var i = 0; i < this.retryArgs.length; i++) {\n if (args.fileData.name === this.retryArgs[i].file.name) {\n action = this.retryArgs[i].action;\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': action }, { 'data': data }, { 'filename': args.fileData.name }];\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n var ajaxSettings = {\n url: uploadUrl,\n type: 'POST',\n mode: true,\n dataType: null,\n contentType: null,\n data: JSON.stringify(args.customFormData),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n this.uploadEventArgs = { action: 'Upload', ajaxSettings: ajaxSettings, cancel: false };\n this.trigger('beforeSend', this.uploadEventArgs, function (uploadEventArgs) {\n args.customFormData = JSON.parse(getValue('data', uploadEventArgs.ajaxSettings));\n args.cancel = uploadEventArgs.cancel;\n var eventArgs = {\n cancel: false,\n httpRequest: args.currentRequest\n };\n if (typeof getValue('beforeSend', uploadEventArgs.ajaxSettings) === 'function') {\n getValue('beforeSend', uploadEventArgs.ajaxSettings)(eventArgs);\n if (getValue('cancel', eventArgs)) {\n args.cancel = getValue('cancel', eventArgs);\n }\n }\n });\n };\n FileManager.prototype.onRemoving = function () {\n this.onFileUploadSuccess({ count: 1 });\n if (this.uploadObj.getFilesData().length === 1) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onCancel = function (args) {\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': 'remove' }, { 'data': data }];\n };\n /* istanbul ignore next */\n FileManager.prototype.onClearing = function () {\n if (this.isOpened) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onSelected = function (args) {\n if (args.filesData.length === 0) {\n return;\n }\n this.uploadingCount = args.filesData.length;\n this.uploadedCount = 0;\n var details = getPathObject(this);\n if (!hasUploadAccess(details)) {\n args.cancel = true;\n createDeniedDialog(this, details, events.permissionUpload);\n return;\n }\n this.uploadDialogObj.show();\n };\n FileManager.prototype.onFileUploadSuccess = function (args) {\n this.uploadedCount = this.uploadedCount + args.count;\n if (this.uploadSettings.autoClose && (this.uploadingCount === this.uploadedCount)) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploadSuccess = function (files) {\n var args = { action: 'Upload', result: files };\n this.trigger('success', args);\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n read(this, events.pathChanged, this.path);\n this.onFileUploadSuccess({ count: 1 });\n if (typeof getValue('onSuccess', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', this.uploadEventArgs.ajaxSettings)();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploadFailure = function (files) {\n var response = getValue('response', files);\n var statusText = getValue('statusText', response);\n if (statusText !== '') {\n setValue('statusText', statusText, files);\n }\n var args = { action: 'Upload', error: files };\n this.trigger('failure', args);\n if (getValue('statusCode', response) === 400) {\n this.retryFiles.push(getValue('file', files));\n if (!this.isRetryOpened) {\n createExtDialog(this, 'UploadRetry');\n }\n }\n if (typeof getValue('onFailure', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onFailure', this.uploadEventArgs.ajaxSettings)();\n }\n };\n FileManager.prototype.onInitialEnd = function () {\n setNextPath(this, this.path);\n };\n FileManager.prototype.addEventListeners = function () {\n this.on(events.beforeRequest, this.showSpinner, this);\n this.on(events.afterRequest, this.hideSpinner, this);\n this.on(events.initialEnd, this.onInitialEnd, this);\n this.on(events.detailsInit, this.onDetailsInit, this);\n this.on(events.skipUpload, this.onFileUploadSuccess, this);\n EventHandler.add(this.element, 'contextmenu', this.onContextMenu, this);\n };\n FileManager.prototype.removeEventListeners = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.beforeRequest, this.showSpinner);\n this.off(events.afterRequest, this.hideSpinner);\n this.off(events.initialEnd, this.onInitialEnd);\n this.off(events.detailsInit, this.onDetailsInit);\n this.off(events.skipUpload, this.onFileUploadSuccess);\n EventHandler.remove(this.element, 'contextmenu', this.onContextMenu);\n };\n FileManager.prototype.onDetailsInit = function () {\n if (isNOU(this.activeModule)) {\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n }\n };\n FileManager.prototype.resizeHandler = function () {\n this.adjustHeight();\n this.notify(events.resizeEnd, {});\n };\n FileManager.prototype.keyActionHandler = function (e) {\n var uploadEle;\n switch (e.action) {\n case 'altN':\n e.preventDefault();\n this.itemData = [getPathObject(this)];\n if (!hasContentAccess(this.itemData[0])) {\n createDeniedDialog(this, this.itemData[0], events.permissionEditContents);\n }\n else {\n createDialog(this, 'NewFolder');\n }\n break;\n case 'f5':\n e.preventDefault();\n refresh(this);\n break;\n /* istanbul ignore next */\n case 'ctrlShift1':\n e.preventDefault();\n this.fileView = 'Details';\n this.setProperties({ view: 'Details' }, true);\n showSpinner(this.element);\n updateLayout(this, 'Details');\n break;\n /* istanbul ignore next */\n case 'ctrlShift2':\n e.preventDefault();\n this.fileView = 'LargeIcons';\n this.setProperties({ view: 'LargeIcons' }, true);\n showSpinner(this.element);\n updateLayout(this, 'LargeIcons');\n break;\n case 'ctrlU':\n e.preventDefault();\n if (this.toolbarSettings.items.indexOf('Upload') !== -1) {\n uploadEle = select('#' + this.element.id + CLS.UPLOAD_ID, this.element);\n uploadEle.click();\n }\n break;\n }\n };\n FileManager.prototype.wireSelectOnDragEvent = function (isBind) {\n if (isNOU(this.view)) {\n return;\n }\n if (isBind) {\n this.viewElem = this.view === 'LargeIcons' ? this.largeiconsviewModule.element : this.element.querySelector('.e-gridcontent');\n }\n if (!this.viewElem) {\n return;\n }\n if (isBind) {\n if (this.allowMultiSelection) {\n EventHandler.add(this.viewElem, 'mousedown', this.onDragStart, this);\n this.on(events.layoutChange, this.onLayoutChange, this);\n this.on(events.selectionChanged, this.onLayoutChange, this);\n }\n }\n else {\n EventHandler.remove(this.viewElem, 'mousedown', this.onDragStart);\n this.off(events.layoutChange, this.onLayoutChange);\n this.off(events.selectionChanged, this.onLayoutChange);\n }\n };\n FileManager.prototype.wireEvents = function () {\n if (this.enableRangeSelection) {\n this.wireSelectOnDragEvent(true);\n }\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n FileManager.prototype.unWireEvents = function () {\n this.wireSelectOnDragEvent(false);\n EventHandler.remove(window, 'resize', this.resizeHandler);\n this.keyboardModule.destroy();\n };\n FileManager.prototype.onDragStart = function (event) {\n if (this.viewElem) {\n if (this.allowDragAndDrop) {\n var targetElement = closest(event.target, this.viewElem.classList.contains('e-large-icons') ? '.e-list-item' : '.e-fe-text');\n if (targetElement) {\n return;\n }\n }\n event.preventDefault();\n this.dragX = event.pageX;\n this.dragY = event.pageY;\n if (!this.dragSelectElement) {\n this.dragSelectElement = createElement('div', {\n id: this.element.id + '_drag',\n className: 'e-filemanager e-drag-select',\n styles: 'left: ' + this.dragX + 'px;top: ' + this.dragY + 'px;'\n });\n document.body.append(this.dragSelectElement);\n }\n EventHandler.add(document, 'mouseup', this.onDragStop, this);\n EventHandler.add(this.viewElem, 'mousemove', this.onDrag, this);\n EventHandler.add(this.dragSelectElement, 'mousemove', this.onDrag, this);\n }\n };\n FileManager.prototype.onDrag = function (event) {\n event.stopPropagation();\n if (this.dragSelectElement) {\n var diffX = event.pageX - this.dragX;\n var diffY = event.pageY - this.dragY;\n setStyleAttribute(this.dragSelectElement, {\n 'left': diffX < 0 ? this.dragX + diffX + 'px' : this.dragX + 'px', 'top': diffY < 0 ? this.dragY + diffY + 'px' : this.dragY + 'px',\n 'height': Math.abs(diffY) + 'px', 'width': Math.abs(diffX) + 'px'\n });\n this.selectItems();\n }\n else {\n EventHandler.remove(this.viewElem, 'mousemove', this.onDrag);\n }\n };\n FileManager.prototype.onDragStop = function () {\n if (this.viewElem) {\n EventHandler.remove(document, 'mouseup', this.onDragStop);\n EventHandler.remove(this.viewElem, 'mousemove', this.onDrag);\n }\n if (this.dragSelectElement) {\n EventHandler.remove(this.dragSelectElement, 'mousemove', this.onDrag);\n if (this.dragSelectElement.clientHeight > 0 && this.dragSelectElement.clientWidth > 0) {\n this.setProperties({ selectedItems: this.dragSelectedItems });\n }\n this.dragSelectedItems = [];\n detach(this.dragSelectElement);\n this.dragSelectElement = null;\n }\n };\n FileManager.prototype.selectItems = function () {\n this.dragSelectedItems = [];\n var dragRect = this.dragSelectElement.getBoundingClientRect();\n var allItems = selectAll(this.viewElem.classList.contains('e-large-icons') ? '.e-list-item' : '.e-row', this.viewElem);\n removeClass(selectAll('.e-active', this.viewElem), ['e-active', 'e-focus']);\n removeClass(selectAll('.e-check', this.viewElem), ['e-check']);\n for (var _i = 0, allItems_1 = allItems; _i < allItems_1.length; _i++) {\n var item = allItems_1[_i];\n var itemRect = item.getBoundingClientRect();\n if (!(dragRect.right < itemRect.left || dragRect.left > itemRect.right\n || dragRect.bottom < itemRect.top || dragRect.top > itemRect.bottom)\n && (this.dragSelectElement.clientHeight > 0 && this.dragSelectElement.clientWidth > 0)) {\n if (this.viewElem.classList.contains('e-large-icons')) {\n item.classList.add('e-active');\n this.dragSelectedItems.push(item.getAttribute('title'));\n }\n else {\n addClass(selectAll('.e-rowcell', item), ['e-active']);\n this.dragSelectedItems.push(item.querySelector('.e-drag-text').textContent);\n }\n item.querySelector('.e-frame').classList.add('e-check');\n }\n }\n };\n FileManager.prototype.onLayoutChange = function () {\n if (this.enableRangeSelection) {\n this.unWireEvents();\n this.wireEvents();\n }\n };\n FileManager.prototype.setPath = function () {\n this.setProperties({ selectedItems: [] }, true);\n this.ensurePath();\n this.notify(events.clearPathInit, { selectedNode: this.pathId[0] });\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {FileManager} newProp\n * @param {FileManager} oldProp\n * @returns void\n * @private\n */\n /* istanbul ignore next */\n FileManager.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var height;\n var requiresRefresh = false;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'ajaxSettings':\n this.ajaxSettingSetModel(newProp);\n break;\n case 'allowDragAndDrop':\n this.allowDragAndDrop = newProp.allowDragAndDrop;\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showItemCheckBoxes':\n this.showItemCheckBoxes = newProp.showItemCheckBoxes;\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'enableVirtualization':\n this.enableVirtualization = newProp.enableVirtualization;\n requiresRefresh = true;\n break;\n case 'allowMultiSelection':\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n else {\n if (this.selectedItems.length > 1) {\n this.setProperties({ selectedItems: this.selectedItems.slice(this.selectedItems.length - 1) }, true);\n }\n removeClass([this.element], CLS.CHECK_SELECT);\n }\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'cssClass':\n this.addCssClass(oldProp.cssClass, newProp.cssClass);\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'detailsViewSettings':\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'enableRangeSelection':\n this.wireSelectOnDragEvent(false);\n if (newProp.enableRangeSelection) {\n this.wireSelectOnDragEvent(true);\n }\n break;\n case 'enableRtl':\n this.enableRtl = newProp.enableRtl;\n requiresRefresh = true;\n break;\n case 'rootAliasName':\n this.rootAliasName = newProp.rootAliasName;\n requiresRefresh = true;\n break;\n case 'height':\n height = !isNOU(newProp.height) ? formatUnit(newProp.height) : newProp.height;\n setAttr(this.element, { 'height': height });\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'locale':\n if (!isNOU(newProp.enableRtl)) {\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n }\n this.localeSetModelOption(newProp);\n break;\n case 'navigationPaneSettings':\n this.splitterAdjust();\n this.notify(events.modelChanged, { module: 'navigationpane', newProp: newProp, oldProp: oldProp });\n break;\n case 'path':\n this.setPath();\n break;\n case 'searchSettings':\n if (!isNullOrUndefined(newProp.searchSettings.allowSearchOnTyping)) {\n this.setProperties({ searchSettings: { allowSearchOnTyping: newProp.searchSettings.allowSearchOnTyping } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.ignoreCase)) {\n this.setProperties({ searchSettings: { ignoreCase: newProp.searchSettings.ignoreCase } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.filterType)) {\n this.setProperties({ searchSettings: { filterType: newProp.searchSettings.filterType } }, true);\n }\n this.notify(events.modelChanged, { module: 'breadcrumbbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'selectedItems':\n if (this.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (this.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'showFileExtension':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showHiddenItems':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showThumbnail':\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'toolbarSettings':\n case 'toolbarItems':\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'toolbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'uploadSettings':\n this.updateUploader();\n break;\n case 'view':\n if (newProp.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (newProp.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'width':\n setAttr(this.element, { 'width': !isNOU(newProp.width) ? formatUnit(newProp.width) : newProp.width });\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'sortOrder':\n refresh(this);\n this.notify(events.sortByChange, {});\n break;\n case 'sortBy':\n if (this.view === 'Details') {\n var columns = this.detailsViewSettings.columns;\n var isValidSortField = !isNullOrUndefined(columns) &&\n columns.findIndex(function (col) { return col.field === _this.sortBy; }) !== -1;\n if (!isValidSortField) {\n return;\n }\n refresh(this);\n this.notify(events.sortByChange, {});\n this.notify(events.sortColumn, {});\n }\n else {\n refresh(this);\n this.notify(events.sortByChange, {});\n }\n break;\n case 'popupTarget':\n if (this.uploadDialogObj) {\n this.uploadDialogObj.target = newProp.popupTarget;\n }\n if (this.dialogObj) {\n this.dialogObj.target = newProp.popupTarget;\n }\n if (this.extDialogObj) {\n this.extDialogObj.target = newProp.popupTarget;\n }\n if (this.viewerObj) {\n this.viewerObj.target = newProp.popupTarget;\n }\n break;\n case 'fileSystemData':\n this.fileSystemData = newProp.fileSystemData;\n requiresRefresh = true;\n break;\n }\n }\n if (requiresRefresh) {\n this.refresh();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.ajaxSettingSetModel = function (newProp) {\n if (!isNullOrUndefined(newProp.ajaxSettings.url)) {\n this.setProperties({ ajaxSettings: { url: newProp.ajaxSettings.url } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.uploadUrl)) {\n this.setProperties({ ajaxSettings: { uploadUrl: newProp.ajaxSettings.uploadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.downloadUrl)) {\n this.setProperties({ ajaxSettings: { downloadUrl: newProp.ajaxSettings.downloadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.getImageUrl)) {\n this.setProperties({ ajaxSettings: { getImageUrl: newProp.ajaxSettings.getImageUrl } }, true);\n }\n this.setProperties({ path: '/' }, true);\n this.setProperties({ selectedItems: [] }, true);\n _super.prototype.refresh.call(this);\n };\n /* istanbul ignore next */\n FileManager.prototype.localeSetModelOption = function (newProp) {\n this.uploadObj.locale = newProp.locale;\n _super.prototype.refresh.call(this);\n };\n /**\n * Triggers when the component is destroyed.\n *\n * @returns {void}\n */\n FileManager.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.refreshing) {\n this.notify(events.destroy, {});\n }\n this.uploadObj.destroy();\n this.uploadObj = null;\n this.uploadDialogObj.destroy();\n this.uploadDialogObj = null;\n this.splitterObj.destroy();\n this.splitterObj = null;\n if (this.dialogObj) {\n this.dialogObj.destroy();\n this.dialogObj = null;\n }\n if (this.viewerObj) {\n this.viewerObj.destroy();\n this.viewerObj = null;\n }\n if (this.extDialogObj) {\n this.extDialogObj.destroy();\n this.extDialogObj = null;\n }\n this.element.removeAttribute('style');\n this.element.removeAttribute('tabindex');\n this.removeEventListeners();\n this.unWireEvents();\n this.addCssClass(this.cssClass, null);\n removeClass([this.element], [CLS.RTL, CLS.MOBILE, CLS.CHECK_SELECT]);\n this.element.innerHTML = '';\n this.breadCrumbBarNavigation = null;\n this.activeElements = null;\n this.virtualDragElement = null;\n this.visitedItem = null;\n _super.prototype.destroy.call(this);\n this.virtualizationModule = null;\n this.navigationpaneModule = null;\n this.toolbarModule = null;\n this.contextmenuModule = null;\n this.largeiconsviewModule = null;\n this.detailsviewModule = null;\n this.breadcrumbbarModule = null;\n this.viewElem = null;\n this.dragSelectElement = null;\n this.dragSelectedItems = null;\n };\n /**\n * Creates a new folder in file manager.\n *\n * @param {string} name – Specifies the name of new folder in current path.\n * If it is not specified, then the default new folder dialog will be opened.\n * @returns {void}\n */\n FileManager.prototype.createFolder = function (name) {\n this.notify(events.methodCall, { action: 'createFolder' });\n var details = [getPathObject(this)];\n this.itemData = details;\n if (name) {\n if (/[/\\\\|*?\"<>:]/.test(name)) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(this, 'Validation-Invalid').replace('{0}', '\"' + name + '\"'),\n fileExists: null\n }\n };\n createDialog(this, 'Error', result);\n }\n else {\n if (!hasContentAccess(details[0])) {\n createDeniedDialog(this, details[0], events.permissionEditContents);\n }\n else {\n createFolder(this, name);\n }\n }\n }\n else {\n createNewFolder(this);\n }\n };\n /**\n * Deletes the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to delete the nested level folders or\n * files, then specify the filter path along with name of the folders or files when performing the search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then delete confirmation dialog will be opened for selected item.\n *\n * @returns {void}\n */\n FileManager.prototype.deleteFiles = function (ids) {\n this.notify(events.methodCall, { action: 'deleteFiles', ids: ids });\n };\n /**\n * Disables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableToolbarItems = function (items) {\n if (!isNOU(items) && this.toolbarModule) {\n this.toolbarModule.enableItems(items, false);\n }\n };\n /**\n * Downloads the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to download the nested level folders\n * or files, then specify the filter path along with name of the folders or files when performing search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then the selected items will be downloaded.\n *\n * @returns {void}\n */\n FileManager.prototype.downloadFiles = function (ids) {\n this.notify(events.methodCall, { action: 'downloadFiles', ids: ids });\n };\n /**\n * Enables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be enabled.\n * @returns {void}\n */\n FileManager.prototype.enableToolbarItems = function (items) {\n if (!isNOU(items) && this.toolbarModule) {\n this.toolbarModule.enableItems(items, true);\n }\n };\n /**\n * Disables the specified context menu items in file manager. This method is used only in the menuOpen event.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableMenuItems = function (items) {\n if (!isNOU(items) && !isNOU(this.contextmenuModule.contextMenu)) {\n this.contextmenuModule.disableItem(items);\n }\n };\n /**\n * Returns the index position of given current context menu item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns menu item index.\n */\n FileManager.prototype.getMenuItemIndex = function (item) {\n if (this.contextmenuModule) {\n return this.contextmenuModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Returns the index position of given toolbar item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns toolbar item index.\n */\n FileManager.prototype.getToolbarItemIndex = function (item) {\n if (this.toolbarModule) {\n return this.toolbarModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Display the custom filtering files in file manager.\n *\n * @param {Object} filterData - Specifies the custom filter details along with custom file action name,\n * which needs to be sent to the server side. If you do not specify the details, then default action name will be `filter`.\n *\n * @returns {void}\n */\n FileManager.prototype.filterFiles = function (filterData) {\n this.filterData = filterData ? filterData : null;\n this.setProperties({ selectedItems: [] }, true);\n this.notify(events.selectionChanged, {});\n this.isFiltered = true;\n if (this.breadcrumbbarModule.searchObj.element.value !== '') {\n this.breadcrumbbarModule.searchObj.element.value = '';\n }\n filter(this, events.filterEnd);\n };\n /**\n * Gets the details of the selected files in the file manager.\n *\n * @returns {Object[]} - returns selected files.\n */\n FileManager.prototype.getSelectedFiles = function () {\n this.notify(events.updateSelectionData, {});\n return this.itemData;\n };\n /**\n * Opens the corresponding file or folder from the given unique identifier.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to open the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n *\n * @returns {void}\n */\n FileManager.prototype.openFile = function (id) {\n this.notify(events.methodCall, { action: 'openFile', id: id });\n };\n /**\n * Refreshes the folder files of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshFiles = function () {\n refresh(this);\n };\n /**\n * Refreshes the layout of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshLayout = function () {\n this.adjustHeight();\n this.notify(events.layoutRefresh, {});\n };\n /**\n * Selects the entire folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.selectAll = function () {\n this.notify(events.methodCall, { action: 'selectAll' });\n };\n /**\n * Specifies the method that must be invoked to traverse the path backwards in the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.traverseBackward = function () {\n if (this.pathNames.length > 1 && this.breadcrumbbarModule.searchObj.element.value === '' && !this.isFiltered) {\n this.pathId.pop();\n this.pathNames.pop();\n var newPath = this.pathNames.slice(1).join('/');\n newPath = newPath === '' ? '/' : '/' + newPath + '/';\n this.setProperties({ path: newPath }, true);\n read(this, events.pathChanged, this.path);\n var treeNodeId = this.pathId[this.pathId.length - 1];\n this.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n };\n /**\n * Deselects the currently selected folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.clearSelection = function () {\n this.notify(events.methodCall, { action: 'clearSelection' });\n };\n /**\n * Renames the file or folder with given new name in file manager.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to rename the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n * If it is not specified, then rename dialog will be opened for selected item.\n *\n * @param {string} name – Specifies the new name of the file or folder in current path. If it is not specified, then rename dialog\n * will be opened for given identifier.\n *\n * @returns {void}\n */\n FileManager.prototype.renameFile = function (id, name) {\n this.notify(events.methodCall, { action: 'renameFile', id: id, newName: name });\n };\n /**\n * Opens the upload dialog in file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.uploadFiles = function () {\n var details = [getPathObject(this)];\n this.itemData = details;\n uploadItem(this);\n };\n /**\n * Specifies the method which must be invoked to programmatically close the dialog popup in the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.closeDialog = function () {\n closePopup(this);\n };\n /**\n * Specifies the direction of FileManager\n *\n * @param {boolean} rtl - specifies rtl parameter.\n * @returns {void}\n */\n FileManager.prototype.setRtl = function (rtl) {\n if (rtl) {\n this.addCssClass(null, CLS.RTL);\n }\n else {\n this.addCssClass(CLS.RTL, null);\n }\n if (this.uploadObj) {\n this.uploadDialogObj.enableRtl = rtl;\n this.uploadObj.enableRtl = rtl;\n }\n };\n var FileManager_1;\n __decorate([\n Complex({}, AjaxSettings)\n ], FileManager.prototype, \"ajaxSettings\", void 0);\n __decorate([\n Property([])\n ], FileManager.prototype, \"fileSystemData\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showItemCheckBoxes\", void 0);\n __decorate([\n Complex({}, ContextMenuSettings)\n ], FileManager.prototype, \"contextMenuSettings\", void 0);\n __decorate([\n Property('')\n ], FileManager.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({}, DetailsViewSettings)\n ], FileManager.prototype, \"detailsViewSettings\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property('400px')\n ], FileManager.prototype, \"height\", void 0);\n __decorate([\n Property('LargeIcons')\n ], FileManager.prototype, \"view\", void 0);\n __decorate([\n Complex({}, NavigationPaneSettings)\n ], FileManager.prototype, \"navigationPaneSettings\", void 0);\n __decorate([\n Property('/')\n ], FileManager.prototype, \"path\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"popupTarget\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], FileManager.prototype, \"searchSettings\", void 0);\n __decorate([\n Property()\n ], FileManager.prototype, \"selectedItems\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showFileExtension\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"rootAliasName\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"showHiddenItems\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showThumbnail\", void 0);\n __decorate([\n Property('Ascending')\n ], FileManager.prototype, \"sortOrder\", void 0);\n __decorate([\n Property('name')\n ], FileManager.prototype, \"sortBy\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"sortComparer\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"enableRangeSelection\", void 0);\n __decorate([\n Complex({}, ToolbarSettings)\n ], FileManager.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Collection([], ToolbarItem)\n ], FileManager.prototype, \"toolbarItems\", void 0);\n __decorate([\n Complex({}, UploadSettings)\n ], FileManager.prototype, \"uploadSettings\", void 0);\n __decorate([\n Property('100%')\n ], FileManager.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileLoad\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeDownload\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeImageLoad\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforePopupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforePopupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeSend\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeFolderCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"folderCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeDelete\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"delete\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeRename\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"rename\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeMove\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"move\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"search\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragStart\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragging\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragStop\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDropped\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileSelection\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileSelect\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"failure\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"success\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"uploadListCreate\", void 0);\n FileManager = FileManager_1 = __decorate([\n NotifyPropertyChanges\n ], FileManager);\n return FileManager;\n}(Component));\nexport { FileManager };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Toolbar as BaseToolbar } from '@syncfusion/ej2-navigations';\nimport { select, isNullOrUndefined as isNOU, closest, selectAll } from '@syncfusion/ej2-base';\nimport { createDialog } from '../pop-up/dialog';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { refresh, getPathObject, getLocaleText, getCssClass, sortbyClickHandler } from '../common/utility';\nimport { createDeniedDialog, updateLayout } from '../common/utility';\nimport { GetDetails } from '../common/operations';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { cutFiles, copyFiles, pasteHandler, hasEditAccess } from '../common/index';\nimport { doDownload, createNewFolder, uploadItem } from '../common/index';\n/**\n * Toolbar module\n */\nvar Toolbar = /** @class */ (function () {\n /**\n * Constructor for the Toolbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies the parent element.\n * @private\n */\n function Toolbar(parent) {\n this.default = ['Delete', 'Rename', 'Download', 'Cut', 'Copy', 'Paste'];\n this.single = ['Delete', 'Rename', 'Download', 'Cut', 'Copy'];\n this.multiple = ['Delete', 'Download', 'Cut', 'Copy', 'Refresh'];\n this.selection = ['NewFolder', 'Upload', 'SortBy', 'Refresh'];\n this.parent = parent;\n this.render();\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n var _this = this;\n this.items = this.toolbarItemData(this.getItems(this.parent.toolbarSettings.items.map(function (item) { return item.trim(); })));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj = new BaseToolbar({\n items: _this.items,\n created: _this.toolbarCreateHandler.bind(_this),\n overflowMode: 'Popup',\n clicked: _this.onClicked.bind(_this),\n enableHtmlSanitizer: _this.parent.enableHtmlSanitizer,\n enableRtl: _this.parent.enableRtl\n });\n _this.toolbarObj.isStringTemplate = true;\n _this.toolbarObj.root = _this.parent.root ? _this.parent.root : _this.parent;\n _this.toolbarObj.appendTo('#' + _this.parent.element.id + CLS.TOOLBAR_ID);\n });\n };\n Toolbar.prototype.getItemIndex = function (item) {\n var itemId = this.getId(item);\n for (var i = 0; i < this.items.length; i++) {\n if (this.items[i].id === itemId) {\n return i;\n }\n }\n return -1;\n };\n Toolbar.prototype.getItems = function (items) {\n var currItems = items.slice();\n if (this.parent.isDevice && this.parent.allowMultiSelection) {\n currItems.push('SelectAll');\n }\n if (this.parent.toolbarItems.length > 0) {\n currItems = this.parent.toolbarItems.map(function (item) { return item.name; });\n }\n return currItems;\n };\n /* istanbul ignore next */\n Toolbar.prototype.onClicked = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var tool = args.item.id.substr((this.parent.element.id + '_tb_').length);\n var details;\n if (tool === 'refresh' || tool === 'newfolder' || tool === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n details = this.parent.itemData;\n }\n var eventArgs = { cancel: false, fileDetails: details, item: args.item };\n this.parent.trigger('toolbarClick', eventArgs, function (toolbarClickArgs) {\n var sItems;\n var target;\n if (!toolbarClickArgs.cancel) {\n switch (tool) {\n case 'sortby':\n target = closest(args.originalEvent.target, '.' + CLS.TB_ITEM);\n if (target && target.classList.contains('e-toolbar-popup')) {\n args.cancel = true;\n }\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'delete':\n for (var i = 0; i < details.length; i++) {\n if (!hasEditAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'paste':\n _this.parent.folderPath = '';\n pasteHandler(_this.parent);\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'download':\n doDownload(_this.parent);\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n case 'selectall':\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'selection':\n _this.parent.notify(events.clearAllInit, {});\n break;\n }\n }\n });\n };\n Toolbar.prototype.toolbarCreateHandler = function () {\n var _this = this;\n if (!isNOU(select('#' + this.getId('SortBy'), this.parent.element))) {\n var items = [\n { id: this.getPupupId('name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '' },\n { separator: true },\n { id: this.getPupupId('ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('none'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '' }\n ];\n this.buttonObj = new DropDownButton({\n items: items, cssClass: getCssClass(this.parent, CLS.ROOT_POPUP),\n select: sortbyClickHandler.bind(this, this.parent),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n enableRtl: this.parent.enableRtl, iconCss: CLS.ICON_SHORTBY\n });\n this.buttonObj.isStringTemplate = true;\n this.buttonObj.appendTo('#' + this.getId('SortBy'));\n }\n if (!isNOU(select('#' + this.getId('View'), this.parent.element))) {\n var gridSpan_1 = '<span class=\"' + CLS.ICON_GRID + ' ' + CLS.MENU_ICON + '\"></span>';\n var largeIconSpan_1 = '<span class=\"' + CLS.ICON_LARGE + ' ' + CLS.MENU_ICON + '\"></span>';\n var layoutItems = [\n {\n id: this.getPupupId('large'), text: getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? '' : CLS.TB_OPTION_TICK\n },\n {\n id: this.getPupupId('details'), text: getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : ''\n }\n ];\n this.layoutBtnObj = new DropDownButton({\n iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n cssClass: getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP),\n items: layoutItems, select: this.layoutChange.bind(this),\n enableRtl: this.parent.enableRtl,\n content: '<span class=\"e-tbar-btn-text\">' + getLocaleText(this.parent, 'View') + '</span>',\n beforeItemRender: function (args) {\n var tickIcon = args.item.iconCss;\n var viewText = args.item.text === getLocaleText(_this.parent, 'View-LargeIcons');\n var iconClass = tickIcon ? ' e-menu-icon ' + tickIcon : '';\n args.element.innerHTML = '<span class=\"' + iconClass + '\"></span>' + (viewText ? largeIconSpan_1 : gridSpan_1) + args.item.text;\n var span = args.element.firstChild;\n if (span && span.className === '') {\n args.element.removeChild(span);\n }\n }\n });\n this.layoutBtnObj.isStringTemplate = true;\n this.layoutBtnObj.appendTo('#' + this.getId('View'));\n }\n this.hideItems(this.default, true);\n this.hideStatus();\n if (this.parent.portals && this.toolbarObj.portals) {\n this.parent.portals = this.parent.portals.concat(this.toolbarObj.portals);\n this.parent['renderReactTemplates']();\n }\n var btnElement = selectAll('.e-btn', this.toolbarObj.element);\n var _loop_1 = function (btnCount) {\n /* istanbul ignore next */\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n this.parent.refreshLayout();\n };\n Toolbar.prototype.updateSortByButton = function () {\n if (this.buttonObj) {\n var items = this.buttonObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('name')) {\n items[itemCount].iconCss = this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('size')) {\n items[itemCount].iconCss = this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('date')) {\n if (this.parent.sortBy === 'dateModified' || this.parent.sortBy === 'dateCreated') {\n items[itemCount].iconCss = this.parent.sortBy === this.parent.sortBy ? CLS.TB_OPTION_DOT : '';\n }\n else {\n items[itemCount].iconCss = this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '';\n }\n }\n else if (items[itemCount].id === this.getPupupId('ascending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('descending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('none')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.getPupupId = function (id) {\n return this.parent.element.id + '_ddl_' + id.toLowerCase();\n };\n Toolbar.prototype.layoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (args.item.id === this.getPupupId('large')) {\n updateLayout(this.parent, 'LargeIcons');\n }\n }\n else {\n if (args.item.id === this.getPupupId('details')) {\n updateLayout(this.parent, 'Details');\n }\n }\n };\n Toolbar.prototype.toolbarItemData = function (data) {\n var items = [];\n var mode = 'Both';\n if (this.parent.isMobile) {\n mode = 'Overflow';\n }\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var propItem = void 0;\n if (this.parent.toolbarItems.length > 0) {\n propItem = this.getItemModel(this.parent.toolbarItems[parseInt(i.toString(), 10)]);\n }\n var itemId = this.getId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n var itemTooltip = getLocaleText(this.parent, 'Tooltip-' + data[i]);\n switch (data[i]) {\n case '|':\n item = { type: 'Separator' };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_UPLOAD, showTextOn: mode };\n break;\n case 'SortBy': {\n var spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + itemText + '</span>';\n if (propItem && propItem.text) {\n spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + propItem.text + '</span>';\n }\n item = {\n id: itemId, tooltipText: itemTooltip,\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\">' + spanElement + '</button>'\n };\n break;\n }\n case 'Refresh':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_REFRESH, showTextOn: mode };\n break;\n case 'Selection':\n item = {\n id: itemId, text: itemText, tooltipText: itemTooltip, suffixIcon: CLS.ICON_CLEAR, overflow: 'Show',\n align: 'Right'\n };\n break;\n case 'View': {\n var viewText = void 0;\n if (propItem && propItem.text) {\n viewText = propItem.text;\n }\n else {\n viewText = getLocaleText(this.parent, 'View');\n }\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n overflow: 'Show', align: 'Right', text: itemText, showTextOn: 'Overflow',\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\" aria-label=' +\n viewText + '></button>'\n };\n break;\n }\n case 'Details':\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DETAILS, overflow: 'Show', align: 'Right',\n text: itemText, showTextOn: 'Overflow'\n };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_NEWFOLDER, showTextOn: mode };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_CUT, showTextOn: mode };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_COPY, showTextOn: mode };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_PASTE, showTextOn: mode };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DELETE, showTextOn: mode };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_RENAME, showTextOn: mode };\n break;\n case 'Download':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DOWNLOAD, showTextOn: mode };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_SELECTALL, showTextOn: mode };\n break;\n default:\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, template: '' };\n break;\n }\n if (this.parent.toolbarItems.length > 0 && propItem) {\n var mergedItems = Object.assign({}, item, propItem);\n items.push(mergedItems);\n }\n else {\n items.push(item);\n }\n }\n return items;\n };\n Toolbar.prototype.getItemModel = function (propItem) {\n var item = {};\n if (propItem.id) {\n item.id = propItem.id;\n }\n if (propItem.text) {\n item.text = propItem.text;\n }\n if (propItem.tooltipText) {\n item.tooltipText = propItem.tooltipText;\n }\n if (propItem.prefixIcon) {\n item.prefixIcon = propItem.prefixIcon;\n }\n if (propItem.cssClass) {\n item.cssClass = propItem.cssClass;\n }\n if (propItem.showTextOn !== 'Both') {\n item.showTextOn = propItem.showTextOn;\n }\n if (propItem.template) {\n item.template = propItem.template;\n }\n if (propItem.disabled) {\n item.disabled = propItem.disabled;\n }\n if (propItem.width !== 'auto') {\n item.width = propItem.width;\n }\n if (propItem.suffixIcon) {\n item.suffixIcon = propItem.suffixIcon;\n }\n if (propItem.align !== 'Left') {\n item.align = propItem.align;\n }\n if (propItem.overflow !== 'None') {\n item.overflow = propItem.overflow;\n }\n if (propItem.htmlAttributes) {\n item.htmlAttributes = propItem.htmlAttributes;\n }\n if (propItem.type !== 'Button') {\n item.type = propItem.type;\n }\n if (propItem.visible !== true) {\n item.visible = propItem.visible;\n }\n if (propItem.showAlwaysInPopup) {\n item.showAlwaysInPopup = propItem.showAlwaysInPopup;\n }\n if (propItem.tabIndex !== -1) {\n item.tabIndex = propItem.tabIndex;\n }\n return item;\n };\n Toolbar.prototype.getId = function (id) {\n return this.parent.element.id + '_tb_' + id.toLowerCase();\n };\n Toolbar.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.showPaste, this.showPaste, this);\n this.parent.on(events.hidePaste, this.hidePaste, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.sortByChange, this.updateSortByButton, this);\n };\n Toolbar.prototype.reRenderToolbar = function (e) {\n var _this = this;\n var itemsToProcess = [];\n if (this.parent.toolbarItems.length > 0) {\n itemsToProcess = this.parent.toolbarItems.map(function (item) {\n return item.name;\n });\n }\n else if (e.newProp.toolbarSettings.items !== undefined) {\n itemsToProcess = e.newProp.toolbarSettings.items.map(function (item) {\n return item.trim();\n });\n }\n if (itemsToProcess.length > 0) {\n this.items = this.toolbarItemData(this.getItems(itemsToProcess));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n if (_this.buttonObj) {\n _this.buttonObj.destroy();\n }\n if (_this.layoutBtnObj) {\n _this.layoutBtnObj.destroy();\n }\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj.items = _this.items;\n _this.toolbarObj.dataBind();\n _this.toolbarCreateHandler();\n });\n }\n };\n Toolbar.prototype.onSelectionChanged = function () {\n this.hideStatus();\n this.hideItems(this.single, true);\n this.hideItems(this.selection, false);\n if (this.parent.selectedItems.length === 1) {\n this.hideItems(this.single, false);\n this.hideItems(this.selection, true);\n }\n else if (this.parent.selectedItems.length > 1) {\n this.hideItems(this.multiple, false);\n this.hideItems(this.selection, true);\n }\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (this.parent.selectedItems.length > 0 && ele && !this.parent.enableVirtualization) {\n var txt = void 0;\n if (this.parent.selectedItems.length === 1) {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Item-Selection');\n }\n else {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Items-Selection');\n }\n select('.e-tbar-btn-text', ele).textContent = txt;\n this.toolbarObj.hideItem(ele.parentElement, false);\n }\n };\n Toolbar.prototype.hideItems = function (tools, toHide) {\n for (var i = 0; i < tools.length; i++) {\n var ele = select('#' + this.getId(tools[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, toHide);\n }\n }\n };\n Toolbar.prototype.hideStatus = function () {\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, true);\n }\n };\n Toolbar.prototype.showPaste = function () {\n this.hideItems(['Paste'], false);\n };\n Toolbar.prototype.hidePaste = function () {\n this.hideItems(['Paste'], true);\n };\n Toolbar.prototype.onLayoutChange = function () {\n if (this.layoutBtnObj) {\n this.layoutBtnObj.iconCss = this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE;\n var items = this.layoutBtnObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('large')) {\n items[itemCount].iconCss = this.parent.view === 'LargeIcons' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('details')) {\n items[itemCount].iconCss = this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.removeEventListener = function () {\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.showPaste, this.showPaste);\n this.parent.off(events.hidePaste, this.hidePaste);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.sortByChange, this.updateSortByButton);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (this.buttonObj) {\n this.buttonObj.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.cssClass = getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP);\n }\n break;\n case 'height':\n case 'width':\n this.toolbarObj.refreshOverflow();\n break;\n case 'toolbarSettings':\n case 'toolbarItems':\n this.reRenderToolbar(e);\n break;\n }\n }\n };\n Toolbar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.buttonObj) {\n this.buttonObj.destroy();\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.destroy();\n }\n this.toolbarObj.destroy();\n this.parent.refreshLayout();\n };\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var i = 0; i < items.length; i++) {\n var ele = select('#' + this.getId(items[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.enableItems(ele.parentElement, isEnable);\n }\n }\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { EventHandler, isNullOrUndefined, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createElement, selectAll } from '@syncfusion/ej2-base';\nimport * as CLS from '../base/classes';\nvar Virtualization = /** @class */ (function () {\n function Virtualization(instance) {\n this.filemanagerInstance = instance;\n this.largeIconInstance = instance.largeiconsviewModule;\n }\n /**\n * Sets up UI virtualization for the large icon view.\n *\n * @returns {void}\n */\n Virtualization.prototype.setUIVirtualization = function () {\n // Get the current view data source\n var currentViewItems = this.largeIconInstance.items;\n // Get the first item in the data source\n var firstItem = currentViewItems.slice(0, 1);\n // Create a list element from the first item in the data source\n var listElements = ListBase.createListFromJson(createElement, firstItem, this.largeIconInstance.listObj);\n // Get the list items from the list element\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n // Append the list element to the large icon element\n this.largeIconInstance.element.appendChild(listElements);\n if (this.itemList.length !== 0 && this.largeIconInstance.element.querySelector('.' + CLS.EMPTY)) {\n this.largeIconInstance.element.removeChild(this.largeIconInstance.element.querySelector('.' + CLS.EMPTY));\n }\n // Get the total number of items\n this.itemCount = this.getItemCount(Object.keys(this.largeIconInstance.allItems).length);\n // Remove the first child element from the large icon element\n this.largeIconInstance.element.firstChild.remove();\n // Set the items for the large icon view to the current view data source, limited to the number of items to display\n this.largeIconInstance.items = currentViewItems.slice(0, this.itemCount);\n };\n /**\n * Sets the height of the top and bottom elements that are used for virtualization.\n * These elements are used to give the appearance of an infinitely scrolling list.\n *\n * @returns {void}\n */\n Virtualization.prototype.setUlElementHeight = function () {\n // Calculate the number of items in the last row\n this.lastRowCount = (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount ?\n (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount : this.rowItemCount;\n // Create top and bottom elements\n this.topElement = this.filemanagerInstance.createElement('div');\n this.topElement.classList.add('e-virtual-top');\n this.largeIconInstance.element.firstElementChild.insertBefore(this.topElement, this.largeIconInstance.element.firstElementChild.firstChild);\n this.bottomElement = this.filemanagerInstance.createElement('div');\n this.bottomElement.classList.add('e-virtual-bottom');\n this.largeIconInstance.element.firstElementChild.insertBefore(this.bottomElement, null);\n // Get the margin value for list items\n var marginValue = parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-bottom'), 10);\n // Calculate the height of a single list item\n this.listItemHeight = this.largeIconInstance.itemList[0].getBoundingClientRect().height + marginValue;\n // Calculate the total height of the list\n this.totalHeight = (Object.keys(this.largeIconInstance.allItems).length / this.rowItemCount) * this.listItemHeight;\n // Set the initial height of the top and bottom elements\n this.topElement.style.height = 0 + 'px';\n this.bottomElement.style.height = this.totalHeight + 'px';\n // Initialize the top and bottom element heights\n this.topElementHeight = 0;\n this.bottomElementHeight = this.totalHeight;\n // Initialize the list difference variable\n this.listDiff = 0;\n // Set the initial rendered count\n this.renderedCount = this.itemCount;\n };\n /**\n * Calculates the number of items to display in the list based on the available width and height.\n *\n * @param {number} dataSourceLength The length of the data source.\n * @returns {number} The number of items to display.\n */\n Virtualization.prototype.getItemCount = function (dataSourceLength) {\n // Get the margin values for list items\n var widthMargin = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-right'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-left'), 10);\n // Calculate the number of items that can fit in a single row\n this.rowItemCount =\n Math.floor(parseFloat(formatUnit(this.largeIconInstance.element.firstElementChild.clientWidth)) /\n (this.itemList[0].offsetWidth + widthMargin));\n // Calculate the number of items that can fit in the available height\n var itemCount = this.rowItemCount *\n (Math.round(parseFloat(formatUnit(this.largeIconInstance.element.clientHeight)) / this.itemList[0].offsetHeight));\n // If the calculated item count is greater than the data source length, set the item count to the data source length\n if (itemCount > dataSourceLength || itemCount === 0) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n };\n /**\n * Wires or un wires the scroll event for the list element.\n *\n * @param {boolean} destroy - Set `true` to unwire the scroll event.\n * @returns {void}\n */\n Virtualization.prototype.wireScrollEvent = function (destroy) {\n if (!destroy) {\n // Wire the scroll event\n EventHandler.add(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll, this);\n }\n else {\n // Unwire the scroll event\n EventHandler.remove(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll);\n }\n };\n /**\n * Handles the scroll event for the list element.\n * This method updates the top and bottom elements and the displayed items based on the scroll position.\n *\n * @returns {void}\n * @private\n */\n Virtualization.prototype.onVirtualUiScroll = function () {\n var _a;\n // Set the starting height to 0\n var startingHeight = 0;\n // Get the current scroll position\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n var scroll = this.getscrollerHeight(startingHeight);\n // Calculate the height of the top element\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n // Calculate the height of the bottom element\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n // If the scroll position is less than or equal to the total height, set the top and bottom element heights.\n // Otherwise, set the top element height to the total height and the bottom element height to 0.\n _a = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0], this.topElementHeight = _a[0], this.bottomElementHeight = _a[1];\n // If the top element height has changed, update the top and bottom element heights and re-render the items.\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n // Check whether the scroll direction is upward or downward\n if (scroll > this.scrollPosition) {\n // Scrolling is upward\n var listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n this.onNormalScroll(listDiff, true);\n }\n else {\n // Scrolling is downward\n var listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n this.onNormalScroll(listDiff, false);\n }\n }\n // Update the list difference and scroll position variables\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n this.scrollPosition = scroll;\n // Update the list of items and the items property of the largeIconInstance\n this.largeIconInstance.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.largeIconInstance.element));\n this.itemCount = this.itemCount !== this.largeIconInstance.itemList.length ?\n this.largeIconInstance.itemList.length : this.itemCount;\n this.largeIconInstance.items = this.largeIconInstance.allItems.slice(this.renderedCount -\n this.itemCount, this.renderedCount);\n };\n /**\n * Calculates the current scroll position of the list element.\n *\n * @param {number} startingHeight The starting height from which to calculate the scroll position.\n * @returns {number} The current scroll position.\n * @private\n */\n Virtualization.prototype.getscrollerHeight = function (startingHeight) {\n // If the scroll position is less than or equal to the starting height, return 0.\n // Otherwise, return the scroll position minus the starting height.\n return ((this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight) <= 0) ? 0 :\n (this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight);\n };\n /**\n * This method updates the displayed items and the selection based on the scroll direction.\n *\n * @param {number} listDiff The number of rows to update.\n * @param {boolean} isScrollingDown If set to true, the scroll direction is downward.\n * @returns {void}\n * @private\n */\n Virtualization.prototype.onNormalScroll = function (listDiff, isScrollingDown) {\n // Update the displayed items\n for (var i = 0; i < listDiff; i++) {\n this.updateUI(isScrollingDown);\n }\n };\n /**\n * Updates the items in the large icons view.\n *\n * @param {boolean} isScrollingDown - If set to true, the scroll direction is downward.\n * @returns {void}\n * @private\n */\n Virtualization.prototype.updateUI = function (isScrollingDown) {\n var _this = this;\n if (isScrollingDown) {\n // Get the next batch of items to be displayed\n this.items = this.largeIconInstance.allItems.slice(this.renderedCount, this.renderedCount + this.rowItemCount);\n // If there are items to be displayed, create list elements for them and append them to the list\n if (this.items.length > 0) {\n var listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n this.itemList.forEach(function (liEle) {\n _this.largeIconInstance.element.firstElementChild.insertBefore(liEle, _this.bottomElement);\n });\n // Update the rendered count variable\n this.renderedCount = (this.largeIconInstance.allItems.length >= this.renderedCount + this.rowItemCount) ?\n this.renderedCount + this.rowItemCount : this.renderedCount + this.lastRowCount;\n // Remove the first batch of items from the list\n for (var i = 0; i < this.rowItemCount; i++) {\n detach(this.topElement.nextElementSibling);\n }\n }\n }\n else {\n // Scrolling up\n var lastItemIndex = void 0;\n var isAllRendered = void 0;\n if (this.renderedCount === this.largeIconInstance.allItems.length) {\n // Set lastItemIndex to the last item in the last row\n lastItemIndex = this.renderedCount - (this.itemCount - this.rowItemCount + this.lastRowCount);\n // Set renderedCount to the total number of items that have been rendered, except for the items in the last row\n this.renderedCount = ((this.renderedCount - this.lastRowCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.lastRowCount);\n // Set isAllRendered to true to indicate that all items have been rendered\n isAllRendered = true;\n }\n else {\n // Set lastItemIndex to the last item in the current row\n lastItemIndex = this.renderedCount - this.itemCount;\n // Set renderedCount to the total number of items that have been rendered, except for the items in the current row\n this.renderedCount = ((this.renderedCount - this.rowItemCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.rowItemCount);\n }\n // Set startItemIndex to the first item in the current or previous row\n var startItemIndex = (lastItemIndex - this.rowItemCount > 0) ? lastItemIndex - this.rowItemCount : 0;\n // Set the items array to the items in the current or previous row\n this.items = this.largeIconInstance.allItems.slice(startItemIndex, lastItemIndex);\n if (this.items.length > 0) {\n // Create a list of elements from the items array\n var listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n // Set the itemList array to the list items in the list elements\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n // Add the items to the beginning of the list\n for (var len = this.itemList.length; len > 0; len--) {\n this.largeIconInstance.element.firstElementChild.insertBefore(this.itemList[len - 1], this.topElement.nextElementSibling);\n }\n // Remove the last row of items from the list\n for (var i = 0; i < ((isAllRendered) ? this.lastRowCount : this.rowItemCount); i++) {\n detach(this.bottomElement.previousElementSibling);\n }\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n Virtualization.prototype.getModuleName = function () {\n return 'virtualization';\n };\n /**\n * Destroys the component.\n *\n * @returns {void}\n */\n Virtualization.prototype.destroy = function () {\n // If the file manager has already been destroyed, return immediately\n if (this.filemanagerInstance.isDestroyed) {\n return;\n }\n // If the large icon element has a child element, unwire the scroll event\n if (!isNullOrUndefined(this.largeIconInstance.element.firstElementChild)) {\n this.wireScrollEvent(true);\n }\n };\n return Virtualization;\n}());\nexport { Virtualization };\n","import { TreeView as BaseTreeView } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, select, setValue, getValue, Draggable } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, closest } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { read, Download, GetDetails, Delete, isFileSystemData } from '../common/operations';\nimport { createDialog } from '../pop-up/dialog';\nimport { updatePath, getPath, getDirectories } from '../common/utility';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getDirectoryPath, getModule, getPathId } from '../common/index';\nimport { copyFiles, cutFiles, removeActive, pasteHandler, getParentPath, readDropPath } from '../common/index';\nimport { hasEditAccess, createDeniedDialog, hasDownloadAccess, getAccessClass } from '../common/index';\n/**\n * NavigationPane module\n */\nvar NavigationPane = /** @class */ (function () {\n /**\n * Constructor for the TreeView module\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n /* istanbul ignore next */\n function NavigationPane(parent) {\n this.removeNodes = [];\n this.moveNames = [];\n // Specifies the previously selected nodes in the treeview control.\n this.previousSelected = [];\n this.expandTree = false;\n this.isDrag = false;\n this.isPathDragged = false;\n this.isRenameParent = false;\n this.isRightClick = false;\n this.isSameNodeClicked = false;\n this.isNodeExpandCalled = false;\n this.renameParent = null;\n // Specifies whether the nodeClicked event of the treeview control is triggered or not.\n this.isNodeClickCalled = false;\n // Specifies whether to restrict node selection in the treeview control.\n this.restrictSelecting = false;\n this.parent = parent;\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftF10: 'shift+F10',\n f2: 'f2'\n };\n }\n NavigationPane.prototype.onInit = function () {\n if (!isNOU(this.treeObj)) {\n return;\n }\n var rootData = getValue(this.parent.pathId[0], this.parent.feParent);\n setValue('_fm_icon', 'e-fe-folder', rootData);\n var attr = {};\n var id = getValue('id', rootData);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(rootData)) {\n setValue('class', getAccessClass(rootData), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, rootData);\n }\n this.treeObj = new BaseTreeView({\n fields: {\n dataSource: [rootData], id: '_fm_id', parentID: '_fm_pId', expanded: '_fm_expanded', selected: '_fm_selected', text: 'name',\n hasChildren: 'hasChild', iconCss: '_fm_icon', htmlAttributes: '_fm_htmlAttr', tooltip: 'name'\n },\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n sortOrder: this.parent.navigationPaneSettings.sortOrder,\n nodeSelecting: this.onNodeSelecting.bind(this),\n nodeSelected: this.onNodeSelected.bind(this),\n nodeExpanding: this.onNodeExpand.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n allowEditing: true,\n nodeEditing: this.onNodeEditing.bind(this),\n drawNode: this.onDrowNode.bind(this),\n enableRtl: this.parent.enableRtl,\n dataBound: this.addDragDrop.bind(this)\n });\n this.treeObj.isStringTemplate = true;\n this.treeObj.appendTo('#' + this.parent.element.id + CLS.TREE_ID);\n this.wireEvents();\n };\n NavigationPane.prototype.addDragDrop = function () {\n var _this = this;\n if (!this.parent.isMobile && this.treeObj) {\n if (this.parent.allowDragAndDrop && isNOU(this.dragObj)) {\n this.dragObj = new Draggable(this.treeObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n dragTarget: '.' + CLS.FULLROW,\n distance: 5,\n dragArea: this.parent.element,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableTailMode: true,\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n this.dragObj = null;\n }\n }\n };\n NavigationPane.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n if (!dragTarget.classList.contains(CLS.FULLROW)) {\n return null;\n }\n var dragLi = closest(dragTarget, 'li');\n this.parent.dragPath = '';\n this.parent.dragData = [];\n this.parent.activeElements = [];\n this.parent.activeElements = [dragLi];\n this.parent.dragNodes = [];\n getModule(this.parent, dragLi);\n this.parent.dragData = this.getTreeData(dragLi);\n this.parent.dragPath = this.getDragPath(dragLi, this.parent.dragData[0].name);\n this.parent.dragNodes.push(this.parent.dragData[0].name);\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n NavigationPane.prototype.getDragPath = function (dragLi, text) {\n var path = this.getDropPath(dragLi, text);\n return getParentPath(path);\n };\n NavigationPane.prototype.getDropPath = function (node, text) {\n var id = node.getAttribute('data-id');\n var newText = this.parent.hasId ? id : text;\n return getPath(node, newText, this.parent.hasId);\n };\n NavigationPane.prototype.onDrowNode = function (args) {\n var eventArgs = {\n element: args.node,\n fileDetails: args.nodeData,\n module: 'NavigationPane'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n NavigationPane.prototype.addChild = function (files, target, prevent) {\n var directories = getDirectories(files);\n var targetDirectory = this.getTreeData(target);\n if (directories.length > 0 && targetDirectory.length > 0 &&\n (directories[0].filterPath == null ||\n isNOU(targetDirectory[0])\n && targetDirectory[0].filterPath == null\n || directories[0].filterPath !==\n targetDirectory[0].filterPath)) {\n var length_1 = 0;\n var folders = directories;\n while (length_1 < directories.length) {\n // eslint-disable-next-line camelcase\n folders[parseInt(length_1.toString(), 10)]._fm_icon = 'e-fe-folder';\n var attr = {};\n var id = getValue('id', folders[length_1]);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(folders[length_1])) {\n setValue('class', getAccessClass(folders[length_1]), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, folders[length_1]);\n }\n length_1++;\n }\n var element = select('[data-uid=\"' + target + '\"]', this.treeObj.element);\n var childElements = select('ul', element);\n if (isNOU(childElements)) {\n this.treeObj.addNodes(directories, target, null, prevent);\n }\n }\n };\n // Node Selecting event handler\n NavigationPane.prototype.onNodeSelecting = function (args) {\n if (!args.isInteracted && !this.isRightClick &&\n !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent || this.restrictSelecting) {\n this.restrictSelecting = false;\n this.isNodeClickCalled = false;\n return;\n }\n if (!this.renameParent) {\n this.parent.activeModule = 'navigationpane';\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n if (args.node.getAttribute('data-uid') !== this.parent.pathId[this.parent.pathId.length - 1] && !this.isRightClick && !this.isNodeClickCalled || this.isSameNodeClicked) {\n this.isNodeClickCalled = false;\n if (!this.isSameNodeClicked) {\n this.isSameNodeClicked = true;\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: args.isInteracted };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n if (!this.isRightClick) {\n var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n args.cancel = eventArgs.cancel;\n }\n if (args.cancel) {\n this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;\n this.isNodeClickCalled = true;\n this.isSameNodeClicked = false;\n this.previousSelected = this.treeObj.selectedNodes;\n this.treeObj.setProperties({ selectedNodes: [args.node.getAttribute('data-uid')] });\n }\n }\n else if (this.previousSelected[0] !== args.node.getAttribute('data-uid')) {\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: this.isNodeClickCalled };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n }\n };\n // Opens the folder while clicking open context menu item in the treeview.\n NavigationPane.prototype.openFileOnContextMenuClick = function (node) {\n var data = this.treeObj.getTreeData(node);\n this.parent.selectedItems = [];\n this.parent.itemData = data;\n this.activeNode = node;\n this.parent.activeModule = 'navigationpane';\n var eventArgs = { cancel: false, fileDetails: data[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n this.isNodeClickCalled = true;\n if (!eventArgs.cancel) {\n updatePath(node, this.parent.itemData[0], this.parent);\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.parent.visitedItem = node;\n this.isPathDragged = this.isRenameParent = this.isRightClick = false;\n this.treeObj.setProperties({ selectedNodes: [node.getAttribute('data-uid')] });\n }\n };\n NavigationPane.prototype.onNodeSelected = function (args) {\n if (this.parent.breadcrumbbarModule && this.parent.breadcrumbbarModule.searchObj && !this.renameParent) {\n this.parent.breadcrumbbarModule.searchObj.element.value = '';\n this.parent.isFiltered = false;\n this.isNodeClickCalled = false;\n }\n this.parent.searchedItems = [];\n if (!args.isInteracted && !this.isRightClick && !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent) {\n this.parent.pathId = getPathId(args.node);\n return;\n }\n this.activeNode = args.node;\n this.parent.activeModule = 'navigationpane';\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.selectedItems = [];\n this.parent.itemData = nodeData;\n var previousPath = this.parent.path;\n if (!this.isRightClick && this.isSameNodeClicked) {\n updatePath(args.node, this.parent.itemData[0], this.parent);\n }\n else {\n this.parent.pathId = getPathId(args.node);\n this.parent.visitedItem = args.node;\n }\n if (args.node.querySelector('.' + CLS.ICONS) && args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.expandNodeTarget = 'add';\n }\n if (previousPath !== this.parent.path) {\n if (!this.isRightClick && this.isSameNodeClicked) {\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.isNodeClickCalled = true;\n }\n this.parent.visitedItem = args.node;\n }\n this.isPathDragged = this.isRenameParent = this.isRightClick = this.isSameNodeClicked = false;\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onPathDrag = function (args) {\n this.isPathDragged = true;\n this.selectResultNode(args[0]);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpand = function (args) {\n if (!args.isInteracted && !this.isDrag) {\n return;\n }\n if (args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.isNodeExpandCalled = true;\n var text = getValue('text', args.nodeData);\n var id = args.node.getAttribute('data-id');\n var isId = isNOU(id) ? false : true;\n var newText = isNOU(id) ? text : id;\n var path = getPath(args.node, newText, isId);\n this.expandNodeTarget = args.node.getAttribute('data-uid');\n this.parent.expandedId = this.expandNodeTarget;\n this.parent.itemData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.pathId.push(getValue('id', args.nodeData));\n read(this.parent, events.nodeExpand, path);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpanded = function (args) {\n this.addChild(args.files, this.expandNodeTarget, false);\n this.parent.expandedId = null;\n this.isNodeExpandCalled = false;\n };\n NavigationPane.prototype.onNodeClicked = function (args) {\n this.parent.activeModule = 'navigationpane';\n this.previousSelected = this.treeObj.selectedNodes;\n this.activeNode = args.node;\n if ((args.event.which === 3) && (args.node.getAttribute('data-uid') !== this.treeObj.selectedNodes[0])) {\n this.isRightClick = true;\n this.isNodeClickCalled = true;\n this.treeObj.setProperties({ selectedNodes: [args.node.getAttribute('data-uid')] });\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && this.parent.selectedItems.length !== 0) {\n this.parent.setProperties({ selectedItems: [] }, true);\n var layout = (this.parent.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n this.parent.notify(events.modelChanged, { module: layout, newProp: { selectedItems: [] } });\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && !this.isNodeClickCalled && !this.isNodeExpandCalled) {\n if (args.event.which === 3) {\n this.isRightClick = true;\n }\n this.isSameNodeClicked = true;\n this.isNodeClickCalled = true;\n this.treeObj.setProperties({ selectedNodes: [args.node.getAttribute('data-uid')] });\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeEditing = function (args) {\n if (!isNOU(args.innerHtml)) {\n args.cancel = true;\n }\n };\n NavigationPane.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n var currFiles = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feFiles);\n if (this.expandNodeTarget === 'add') {\n var sNode = select('[data-uid=\"' + this.treeObj.selectedNodes[0] + '\"]', this.treeObj.element);\n var ul = (!isNOU(sNode)) ? select('.' + CLS.LIST_PARENT, sNode) : null;\n if (isNOU(ul)) {\n this.addChild(args.files, this.treeObj.selectedNodes[0], !this.expandTree);\n }\n this.expandNodeTarget = '';\n }\n this.expandTree = false;\n if (isNOU(currFiles)) {\n setValue(this.parent.pathId[this.parent.pathId.length - 1], args.files, this.parent.feFiles);\n }\n if (this.parent.uploadObj.directoryUpload && !(this.parent.hasId)) {\n this.updateTree(args);\n }\n };\n NavigationPane.prototype.updateTree = function (args) {\n if (this.treeObj) {\n var id = this.treeObj.selectedNodes[0];\n this.updateTreeNode(args, id);\n }\n };\n NavigationPane.prototype.updateTreeNode = function (args, id) {\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1 ? false : true;\n this.removeChildNodes(id);\n this.addChild(args.files, id, !toExpand);\n };\n NavigationPane.prototype.removeChildNodes = function (id) {\n var sNode = select('[data-uid=\"' + id + '\"]', this.treeObj.element);\n var parent = select('.' + CLS.LIST_PARENT, sNode);\n var childs = parent ? Array.prototype.slice.call(parent.children) : null;\n if (childs) {\n this.treeObj.removeNodes(childs);\n }\n };\n NavigationPane.prototype.onOpenEnd = function (args) {\n var sleId = this.parent.pathId[this.parent.pathId.length - 1];\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n this.treeObj.setProperties({ selectedNodes: [sleId] });\n this.expandNodeTarget = 'add';\n this.onPathChanged(args);\n };\n NavigationPane.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n if (args.target.querySelector('.' + CLS.ICONS)) {\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n }\n }\n };\n NavigationPane.prototype.onInitialEnd = function (args) {\n this.onInit();\n this.addChild(args.files, getValue('_fm_id', args.cwd), false);\n };\n NavigationPane.prototype.onFinalizeEnd = function (args) {\n this.onInit();\n var id = getValue('_fm_id', args.cwd);\n this.addChild(args.files, id, false);\n this.treeObj.setProperties({ selectedNodes: [this.parent.pathId[this.parent.pathId.length - 1]] });\n };\n NavigationPane.prototype.onCreateEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateItemData();\n }\n };\n NavigationPane.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateActionData();\n var name_1 = getValue('name', this.parent.itemData[0]);\n Delete(this.parent, [name_1], this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDeleteEnd = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n var selectedNode = this.treeObj.selectedNodes[0];\n var selcetedEle = select('[data-uid=\"' + selectedNode + '\"]', this.treeObj.element);\n var selectedNodeEle = closest(selcetedEle, '.' + CLS.LIST_PARENT).parentElement;\n this.treeObj.selectedNodes = [selectedNodeEle.getAttribute('data-uid')];\n this.treeObj.dataBind();\n }\n this.updateTree(args);\n };\n NavigationPane.prototype.onRefreshEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateRenameData();\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEndParent = function (args) {\n var id = this.renameParent ? this.renameParent : this.parent.pathId[this.parent.pathId.length - 1];\n this.expandTree = this.treeObj.expandedNodes.indexOf(this.treeObj.selectedNodes[0]) !== -1;\n this.updateTreeNode(args, id);\n this.parent.expandedId = null;\n if (this.renameParent) {\n this.renameParent = null;\n }\n else {\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.renameText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('_fm_pId', 'equal', id, false));\n }\n }\n if (resultData.length > 0) {\n var id_1 = this.previousSelected.length > 0 && this.treeObj.getTreeData(this.previousSelected[0]).length !== 0\n ? this.previousSelected[0] : getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id_1];\n this.treeObj.dataBind();\n this.updateItemData();\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEnd = function (args) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.updateTree(args);\n }\n else {\n var data = this.treeObj.getTreeData();\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(data).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var nData = new DataManager(data).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.currentItemText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n this.renameParent = getValue(this.treeObj.fields.parentID, resultData[0]);\n this.parent.expandedId = this.renameParent;\n this.parent.itemData = this.getTreeData(this.renameParent);\n read(this.parent, events.renameEndParent, this.parent.filterPath.replace(/\\\\/g, '/'));\n }\n }\n };\n NavigationPane.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.addDragDrop();\n break;\n case 'navigationPaneSettings':\n read(this.parent, events.finalizeEnd, this.parent.path);\n if (e.oldProp.navigationPaneSettings.sortOrder !== e.newProp.navigationPaneSettings.sortOrder) {\n this.treeObj.sortOrder = e.newProp.navigationPaneSettings.sortOrder;\n }\n break;\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDownLoadInit = function () {\n this.doDownload();\n };\n NavigationPane.prototype.onSelectionChanged = function (e) {\n this.treeObj.setProperties({ selectedNodes: [e.selectedNode] });\n };\n NavigationPane.prototype.onClearPathInit = function (e) {\n this.removeChildNodes(e.selectedNode);\n };\n NavigationPane.prototype.onDragEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchDrag) {\n moveNames = this.getMoveNames(args.files, this.parent.isSearchDrag, this.parent.dragPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n NavigationPane.prototype.getMoveNames = function (files, flag, path) {\n var moveNames = [];\n for (var i = 0; i < files.length; i++) {\n if (!files[i].isFile) {\n if (!this.parent.hasId) {\n var name_2 = (files[i].previousName);\n if (flag) {\n path = path + files[i].previousName;\n var index = path.lastIndexOf('/');\n name_2 = path.substring(index + 1);\n path = path.substring(0, index + 1);\n }\n var resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', name_2, false));\n for (var j = 0; j < resultData.length; j++) {\n var fPath = getValue('filterPath', resultData[j]);\n fPath = fPath.replace(/\\\\/g, '/');\n if (fPath === path) {\n moveNames.push(getValue(this.treeObj.fields.id, resultData[j]));\n break;\n }\n }\n }\n }\n }\n return moveNames;\n };\n NavigationPane.prototype.onCutEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchCut) {\n this.moveNames = this.getMoveNames(args.files, this.parent.isSearchCut, this.parent.targetPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.selectResultNode = function (resultObj) {\n if (!this.parent.hasId) {\n var path = getValue('filterPath', resultObj);\n var itemname = getValue('name', resultObj);\n var data = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', itemname, false));\n if (data.length > 0) {\n var resultData = new DataManager(data).\n executeLocal(new Query().where('filterPath', 'equal', path, false));\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id];\n this.treeObj.dataBind();\n }\n }\n }\n else {\n var selectedNode = this.treeObj.getTreeData().filter(function (obj) { return obj.name === resultObj.name; })[0];\n this.treeObj.selectedNodes = [getValue('_fm_id', selectedNode)];\n this.treeObj.dataBind();\n }\n };\n NavigationPane.prototype.onDropPath = function (args) {\n this.onpasteEnd(args);\n this.selectResultNode(this.parent.dropData);\n this.parent.isDropEnd = !this.parent.isPasteError;\n };\n NavigationPane.prototype.onpasteEnd = function (args) {\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', getValue('id', args.cwd), false));\n }\n else {\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', getValue('name', args.cwd), false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', getValue('filterPath', args.cwd), false));\n }\n }\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1;\n this.removeChildNodes(id);\n this.addChild(args.files, id, toExpand);\n }\n this.parent.expandedId = null;\n this.onPathChanged(args);\n if (this.parent.isDragDrop) {\n this.checkDropPath(args);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.checkDropPath = function (args) {\n if (isFileSystemData(this.parent) && (this.parent.path === this.parent.dropPath || this.parent.targetModule === 'navigationpane')) {\n return;\n }\n if (this.parent.hasId) {\n this.parent.isDropEnd = !this.parent.isPasteError;\n readDropPath(this.parent);\n return;\n }\n if ((this.parent.dropPath.indexOf(getDirectoryPath(this.parent, args)) === -1)) {\n this.parent.isDropEnd = false;\n readDropPath(this.parent);\n }\n else {\n this.parent.isDropEnd = !this.parent.isPasteError;\n }\n };\n NavigationPane.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.updateItemData();\n }\n this.moveNames = [];\n var obj = this.parent.isDragDrop || isFileSystemData(this.parent) ? this.parent.dragData : this.parent.actionRecords;\n for (var i = 0; i < obj.length; i++) {\n if (getValue('isFile', obj[i]) === false) {\n this.moveNames.push(getValue('_fm_id', obj[i]));\n }\n }\n };\n NavigationPane.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.activeElements = [this.activeNode];\n }\n };\n NavigationPane.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.downloadInit, this.onDownLoadInit, this);\n this.parent.on(events.initialEnd, this.onInitialEnd, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutEnd, this.onCutEnd, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.nodeExpand, this.onNodeExpanded, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.updateTreeSelection, this.onSelectionChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.openEnd, this.onOpenEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.renameEndParent, this.onRenameEndParent, this);\n this.parent.on(events.clearPathInit, this.onClearPathInit, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.dragEnd, this.onDragEnd, this);\n this.parent.on(events.dragging, this.onDragging, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.pathDrag, this.onPathDrag, this);\n };\n NavigationPane.prototype.removeEventListener = function () {\n this.parent.off(events.initialEnd, this.onInitialEnd);\n this.parent.off(events.downloadInit, this.onDownLoadInit);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutEnd, this.onCutEnd);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.updateTreeSelection, this.onSelectionChanged);\n this.parent.off(events.nodeExpand, this.onNodeExpanded);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onOpenEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.renameEndParent, this.onRenameEndParent);\n this.parent.off(events.clearPathInit, this.onClearPathInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.dragEnd, this.onDragEnd);\n this.parent.off(events.dragging, this.onDragging);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.pathDrag, this.onPathDrag);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n var dataobj = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.itemData = dataobj;\n }\n };\n NavigationPane.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var liEle = closest(args.target, 'li');\n this.parent.itemData = this.getTreeData(liEle.getAttribute('data-uid'));\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDragging = function (args) {\n var ele = closest(args.target, 'li');\n if (ele.classList.contains('e-node-collapsed')) {\n this.isDrag = true;\n var level = parseInt(ele.getAttribute('aria-level'), 10);\n this.treeObj.expandAll([ele.getAttribute('data-uid')], level + 1);\n this.isDrag = false;\n }\n };\n NavigationPane.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, 'li');\n this.parent.dropData = this.getTreeData(dropLi)[0];\n this.parent.dropPath = this.getDropPath(dropLi, getValue('name', this.parent.dropData));\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n NavigationPane.prototype.getModuleName = function () {\n return 'navigationpane';\n };\n NavigationPane.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.treeObj) {\n this.unWireEvents();\n this.treeObj.destroy();\n }\n };\n NavigationPane.prototype.wireEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.treeObj.element, {\n keyAction: this.keyDown.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n NavigationPane.prototype.unWireEvents = function () {\n this.keyboardModule.destroy();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.keyDown = function (e) {\n var action = e.action;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, [], this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n if (this.parent.pathId[0] !== this.activeNode.getAttribute('data-uid')) {\n this.updateItemData();\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n this.removeNodes = [];\n createDialog(this.parent, 'Delete');\n }\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'shiftF10':\n this.updateItemData();\n if (!hasDownloadAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionDownload);\n return;\n }\n if (this.parent.selectedItems.length !== 0) {\n this.doDownload();\n }\n break;\n case 'f2':\n if (this.parent.selectedItems.length === 0) {\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n if (!hasEditAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionEdit);\n }\n else {\n this.updateRenameData();\n createDialog(this.parent, 'Rename');\n }\n }\n break;\n }\n };\n NavigationPane.prototype.getTreeData = function (args) {\n var data = this.treeObj.getTreeData(args);\n for (var i = 0; i < data.length; i++) {\n if (isNOU(getValue('hasChild', data[i]))) {\n setValue('hasChild', false, data[i]);\n }\n }\n return data;\n };\n NavigationPane.prototype.updateRenameData = function () {\n this.updateItemData();\n this.parent.currentItemText = getValue('name', this.parent.itemData[0]);\n };\n NavigationPane.prototype.updateItemData = function () {\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n this.parent.itemData = [data];\n this.parent.isFile = false;\n };\n NavigationPane.prototype.updateActionData = function () {\n this.updateItemData();\n var node = select('[data-uid=\"' + this.parent.pathId[this.parent.pathId.length - 1] + '\"]', this.treeObj.element);\n updatePath(node, this.parent.itemData[0], this.parent);\n var newPath = getParentPath(this.parent.path);\n this.parent.setProperties({ path: newPath }, true);\n this.parent.pathId.pop();\n this.parent.pathNames.pop();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.doDownload = function () {\n var newPath = getParentPath(this.parent.path);\n var itemId = this.treeObj.selectedNodes[0];\n var name = (itemId === this.parent.pathId[0]) ? '' : getValue('name', this.parent.itemData[0]);\n Download(this.parent, newPath, [name]);\n };\n return NavigationPane;\n}());\nexport { NavigationPane };\n","import { Grid, Resize, ContextMenu, Sort, VirtualScroll } from '@syncfusion/ej2-grids';\nimport { select, KeyboardEvents, EventHandler, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, Touch, setValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Internationalization, closest, Draggable, initializeCSPTemplate, extend, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { createDialog, createImageDialog } from '../pop-up/dialog';\nimport { removeBlur, openAction, getImageUrl, fileType, getSortedData, getLocaleText, updateLayout } from '../common/utility';\nimport { createEmptyElement } from '../common/utility';\nimport { read, Download, GetDetails, Delete } from '../common/operations';\nimport { cutFiles, addBlur, openSearchFolder, copyFiles, removeActive, pasteHandler, getPathObject, getName } from '../common/index';\nimport { hasReadAccess, hasEditAccess, hasDownloadAccess, doRename, getAccessClass, createDeniedDialog, rename } from '../common/index';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getModule, getFullPath } from '../common/index';\nimport { getDirectoryPath, updateRenamingData, getItemName, doDeleteFiles, doDownloadFiles } from '../common/index';\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * DetailsView module\n */\nvar DetailsView = /** @class */ (function () {\n /**\n * Constructor for the GridView module\n *\n * @param {FileManager} parent - specifies the parent.\n * @hidden\n */\n function DetailsView(parent) {\n this.isInteracted = true;\n this.interaction = true;\n this.isPasteOperation = false;\n this.isColumnRefresh = false;\n this.dragObj = null;\n this.startIndex = null;\n this.firstItemIndex = null;\n this.isSelectionUpdate = false;\n this.currentSelectedItem = [];\n this.count = 0;\n this.isRendered = true;\n this.isLoaded = false;\n this.isNameWidth = false;\n this.isMultiSelect = false;\n this.pasteOperation = false;\n this.uploadOperation = false;\n Grid.Inject(Resize, ContextMenu, Sort, VirtualScroll);\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.GRID_ID, this.parent.element);\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n tab: 'tab',\n moveDown: 'downarrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n ctrlUp: 'ctrl+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n end: 'end',\n home: 'home',\n moveUp: 'uparrow',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftdel: 'shift+delete',\n ctrlD: 'ctrl+d',\n f2: 'f2',\n ctrlA: 'ctrl+a',\n enter: 'enter',\n back: 'backspace'\n };\n }\n /* istanbul ignore next */\n DetailsView.prototype.render = function (args) {\n var _this = this;\n showSpinner(this.parent.element);\n if (this.parent.view === 'Details') {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n var items = getSortedData(this.parent, args.files);\n this.checkNameWidth();\n var columns = this.getColumns();\n var sortSettings = void 0;\n var isValidSortField = !isNullOrUndefined(columns) &&\n columns.findIndex(function (col) { return col.field === _this.parent.sortBy; }) !== -1;\n if (this.parent.isMobile || !isValidSortField) {\n sortSettings = [];\n }\n else {\n if (this.parent.sortOrder !== 'None') {\n sortSettings = [{ direction: this.parent.sortOrder, field: this.parent.sortBy }];\n }\n }\n this.gridObj = new Grid({\n dataSource: items,\n allowSorting: true,\n rowSelecting: this.onSelection.bind(this, 'select'),\n rowDeselecting: this.onSelection.bind(this, 'unselect'),\n rowSelected: this.onSelected.bind(this),\n rowDeselected: this.onDeSelection.bind(this),\n allowResizing: this.parent.detailsViewSettings.columnResizing,\n selectionSettings: {\n type: this.parent.allowMultiSelection ? 'Multiple' : 'Single',\n checkboxMode: 'ResetOnRowClick'\n },\n enableRtl: this.parent.enableRtl,\n pageSettings: { pageSize: 20 },\n enableVirtualization: this.parent.enableVirtualization,\n enablePersistence: this.parent.enablePersistence,\n enableVirtualMaskRow: true,\n sortSettings: { allowUnsort: false, columns: sortSettings },\n columns: columns,\n recordDoubleClick: this.DblClickEvents.bind(this),\n beforeDataBound: this.onBeforeDataBound.bind(this),\n dataBound: this.onDataBound.bind(this),\n rowDataBound: this.onRowDataBound.bind(this),\n actionBegin: this.onActionBegin.bind(this),\n headerCellInfo: this.onHeaderCellInfo.bind(this),\n width: '100%',\n height: (this.parent.enableVirtualization) ? this.getGridHeight() : 'auto',\n beforeCopy: function (args) { args.cancel = true; },\n load: function () {\n this.focusModule.destroy();\n },\n locale: this.parent.locale\n });\n if (this.parent.isReact) {\n this.gridObj.isReact = true;\n this.gridObj.portals = [];\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n this.gridObj.isStringTemplate = true;\n this.gridObj.appendTo('#' + this.parent.element.id + CLS.GRID_ID);\n this.wireEvents();\n this.adjustHeight();\n this.emptyArgs = args;\n }\n };\n DetailsView.prototype.reactTemplateRender = function (args) {\n this.parent['portals'] = args;\n if (this.parent.portals && this.parent.toolbarModule && this.parent.toolbarModule.toolbarObj &&\n this.parent.toolbarModule.toolbarObj.portals) {\n this.parent['portals'] = this.parent['portals'].concat(this.parent.toolbarModule.toolbarObj.portals);\n }\n this.parent.notify('renderReactTemplate', this.parent['portals']);\n this.parent['renderReactTemplates']();\n };\n /**\n * Gets the grid height.\n *\n * @returns {number} - The grid height.\n * @private\n */\n DetailsView.prototype.getGridHeight = function () {\n // Get the content pane and breadcrumb bar elements\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n // The maximum height of the header is 36\n var headerMaxHeight = 36;\n // Calculate and return the grid height\n return (pane.offsetHeight - bar.offsetHeight - headerMaxHeight);\n };\n DetailsView.prototype.checkNameWidth = function () {\n var initialColumn = this.parent.detailsViewSettings.columns;\n this.isNameWidth = false;\n for (var i = 0; i < initialColumn.length; i++) {\n if (initialColumn[i].field === 'name') {\n this.isNameWidth = !isNOU(initialColumn[i].width);\n return;\n }\n }\n };\n DetailsView.prototype.adjustWidth = function (columns, fieldName) {\n if (this.isNameWidth && (fieldName === 'name')) {\n return;\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === fieldName) {\n var nameWidth = void 0;\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n nameWidth = (this.element.clientWidth <= 500) ? '120px' : 'auto';\n }\n else {\n nameWidth = (this.element.clientWidth <= 680) ? ((fieldName === 'name') ? '120px' : '180px') : 'auto';\n }\n columns[i].width = nameWidth;\n }\n }\n };\n DetailsView.prototype.getColumns = function () {\n var columns;\n var enableHtmlSanitizer = this.parent.enableHtmlSanitizer;\n if (this.parent.isMobile) {\n columns = [\n {\n field: 'name', headerText: getLocaleText(this.parent, 'Name'), width: 'auto', minWidth: 120, headerTextAlign: 'Left',\n template: initializeCSPTemplate(function (data) {\n var name = enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(data.name) : data.name;\n return \"<div class=\\\"e-fe-text\\\">\" + name + \"</div><div class=\\\"e-fe-date\\\">\" + data._fm_modified + \"</div><span class=\\\"e-fe-size\\\">\" + data.size + \"</span>\";\n })\n }\n ];\n }\n else {\n columns = extend([], this.parent.detailsViewSettings.columns, null, true);\n this.adjustWidth(columns, 'name');\n var _loop_1 = function (i, len) {\n columns[i].headerText = getLocaleText(this_1.parent, columns[i].headerText);\n if (columns[i].field === 'name' && !isNOU(columns[i].template) && !(typeof columns[i].template === 'function')) {\n var template_1 = columns[i].template;\n columns[i].template = initializeCSPTemplate(function (data) {\n var name = enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(data.name) : data.name;\n return template_1.replace(/\\${name}/g, name);\n });\n }\n };\n var this_1 = this;\n for (var i = 0, len = columns.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n var iWidth = ((this.parent.isMobile || this.parent.isBigger) ? '54' : '46');\n var icon = {\n field: 'type', width: iWidth, minWidth: iWidth,\n template: initializeCSPTemplate(function (data) {\n return \"<span class=\\\"e-fe-icon \" + data._fm_iconClass + \"\\\"></span>\";\n }), allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },\n headerTemplate: initializeCSPTemplate(function () {\n return '<span class=\\'e-fe-icon e-fe-folder\\'></span>';\n })\n };\n columns.unshift(icon);\n if (this.parent.showItemCheckBoxes) {\n var cWidth = (this.parent.isBigger ? '36' : '26');\n var cBox = {\n type: 'checkbox', width: cWidth, minWidth: cWidth, customAttributes: { class: 'e-fe-checkbox' },\n allowResizing: false, allowSorting: false\n };\n if (this.parent.isMobile) {\n columns.push(cBox);\n }\n else {\n columns.unshift(cBox);\n }\n }\n for (var i = 0, len = columns.length; i < len; i++) {\n columns[i].disableHtmlEncode = !this.parent.enableHtmlSanitizer;\n }\n if (this.parent.enableRangeSelection) {\n var HiddenName = { field: 'name', visible: false, customAttributes: { class: 'e-drag-text' } };\n columns.push(HiddenName);\n }\n return columns;\n };\n DetailsView.prototype.adjustHeight = function () {\n if (!this.gridObj) {\n return;\n }\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n var gridHeader = select('.' + CLS.GRID_HEADER, this.parent.element);\n var height = (pane.offsetHeight - bar.offsetHeight - gridHeader.offsetHeight);\n this.gridObj.height = height;\n this.gridObj.dataBind();\n };\n DetailsView.prototype.renderCheckBox = function () {\n this.gridObj.columns = this.getColumns();\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n };\n DetailsView.prototype.onRowDataBound = function (args) {\n var td = select('.e-fe-grid-name', args.row);\n if (!td) {\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'name') {\n td = args.row.children[this.parent.allowMultiSelection ? (i + 2) : (i + 1)];\n break;\n }\n }\n }\n if (td) {\n td.setAttribute('title', getValue('name', args.data));\n }\n if (this.parent.isLayoutChange && this.parent.isCut && this.parent.fileAction === 'move' &&\n this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n if (this.parent.selectedNodes.indexOf(getValue('name', args.data)) !== -1) {\n addBlur(args.row);\n }\n }\n if (!this.parent.showFileExtension && getValue('isFile', args.data)) {\n var text = getValue('name', args.data);\n var textEle = args.row.querySelector('[title= \"' + text + '\"]');\n if (textEle) {\n var name_1 = getValue('name', args.data);\n var type = getValue('type', args.data);\n if (name_1.indexOf(type) !== -1) {\n textEle.innerHTML = name_1.substr(0, name_1.length - type.length);\n }\n }\n }\n if (getValue('size', args.data) !== undefined && args.row.querySelector('.e-fe-size')) {\n var sizeEle = args.row.querySelector('.e-fe-size');\n var modifiedSize = void 0;\n if (!getValue('isFile', args.data)) {\n modifiedSize = '';\n }\n else {\n var sizeValue = getValue('size', args.data);\n var intl = new Internationalization(this.parent.locale);\n var sizeFormat = void 0;\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'size') {\n sizeFormat = !isNullOrUndefined(columns[i].format) ? columns[i].format.toString() : 'n';\n break;\n }\n }\n var value = intl.formatNumber((sizeValue / 1024), { format: sizeFormat });\n modifiedSize = value + ' ' + getLocaleText(this.parent, 'KB');\n }\n sizeEle.innerHTML = modifiedSize;\n }\n if (this.parent.isMobile) {\n if (getValue('_fm_modified', args.data) !== undefined && args.row.querySelector('.e-fe-date')) {\n var dateEle = args.row.querySelector('.e-fe-date');\n var intl = new Internationalization(this.parent.locale);\n var columns = this.parent.detailsViewSettings.columns;\n var format = void 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'dateModified') {\n format = columns[i].format;\n break;\n }\n }\n var formattedString = intl.formatDate(new Date(getValue('_fm_modified', args.data)), format);\n dateEle.innerHTML = formattedString;\n }\n }\n var checkWrap = args.row.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n if (!hasEditAccess(args.data)) {\n args.row.className += ' ' + getAccessClass(args.data);\n }\n var eventArgs = {\n element: args.row,\n fileDetails: args.data,\n module: 'DetailsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n DetailsView.prototype.onActionBegin = function (args) {\n if (args.requestType === 'sorting') {\n this.parent.setProperties({ sortOrder: args.direction }, true);\n this.parent.setProperties({ sortBy: args.columnName }, true);\n if (this.parent.selectedItems.length !== 0) {\n this.sortItem = true;\n var rows = this.gridObj.getSelectedRowIndexes();\n var len = rows.length;\n this.sortSelectedNodes = [];\n while (len > 0) {\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.sortSelectedNodes.push(getValue(this.parent.hasId ? 'id' : 'name', data));\n len--;\n }\n }\n this.parent.notify(events.sortByChange, {});\n }\n };\n DetailsView.prototype.onHeaderCellInfo = function (args) {\n var checkWrap = args.node.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n };\n DetailsView.prototype.onBeforeDataBound = function (args) {\n var _this = this;\n showSpinner(this.parent.element);\n var nameColumn = this.parent.detailsViewSettings.columns.find(function (column) { return column.field === _this.parent.sortBy; });\n if (nameColumn && !('sortComparer' in nameColumn)) {\n var items = getSortedData(this.parent, (this.parent.enableVirtualization)\n ? args.result\n : this.gridObj.dataSource);\n args.result = items;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDataBound = function () {\n this.createDragObj();\n if ((this.parent.selectedItems.length !== 0 && !this.parent.enableVirtualization) ||\n ((this.parent.selectedItems.length !== 0 && this.parent.enableVirtualization &&\n this.element.querySelector('.e-content').scrollTop === 0))) {\n this.selectRecords(this.parent.selectedItems);\n }\n if (this.isPasteOperation === true && (!isNullOrUndefined(this.gridObj.getDataRows()) && this.gridObj.getDataRows().length > 0)) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.parent.createdItem) {\n this.selectRecords([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n }\n if (this.parent.layoutSelectedItems.length) {\n this.selectRecords(this.parent.layoutSelectedItems);\n }\n if (this.parent.renamedItem) {\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n if (this.sortItem === true) {\n this.selectRecords(this.sortSelectedNodes);\n this.sortItem = false;\n }\n if (this.isSelectionUpdate) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.currentSelectedItem);\n this.isSelectionUpdate = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.uploadOperation === true) {\n this.count++;\n this.selectRecords(this.parent.uploadItem);\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n if (this.gridObj.currentViewData.length * this.gridObj.getRowHeight() < this.gridObj.height) {\n var hdTable = this.gridObj.getHeaderContent();\n hdTable.style.paddingRight = '';\n hdTable.style.paddingLeft = '';\n var hdContent = select('.e-headercontent', hdTable);\n hdContent.style.borderRightWidth = '0';\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.style.overflowY = '';\n cnTable.classList.add('e-scrollShow');\n }\n else {\n var hdTable = this.gridObj.getHeaderContent();\n if (!this.parent.enableRtl) {\n hdTable.style.paddingRight = '16px';\n }\n else {\n hdTable.style.paddingLeft = '16px';\n }\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.classList.remove('e-scrollShow');\n }\n this.isRendered = true;\n this.parent.isLayoutChange = false;\n hideSpinner(this.parent.element);\n this.checkEmptyDiv(this.emptyArgs);\n this.isInteracted = this.isLoaded ? true : this.isInteracted;\n this.isLoaded = false;\n };\n DetailsView.prototype.selectRecords = function (nodes) {\n var gridRecords = this.gridObj.getCurrentViewRecords();\n var sRecords = [];\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var node = this.parent.hasId ? getValue('id', gridRecords[i]) : getName(this.parent, gridRecords[i]);\n if (nodes.indexOf(node) !== -1) {\n sRecords.push(i);\n }\n else if (!this.parent.showFileExtension && !this.parent.hasId && node.includes('.')) {\n var Str2 = node.split('.').slice(0, -1).join('.');\n if (nodes.indexOf(Str2) !== -1) {\n sRecords.push(i);\n }\n }\n }\n if (sRecords.length !== 0) {\n this.gridObj.selectRows(sRecords);\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n };\n DetailsView.prototype.addSelection = function (data) {\n var items = this.gridObj.getCurrentViewRecords();\n var rData = [];\n if (this.parent.hasId) {\n rData = new DataManager(items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var nData = new DataManager(items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (nData.length > 0) {\n rData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (rData.length > 0) {\n var index = items.indexOf(rData[0]);\n this.gridObj.selectRows([index]);\n }\n };\n DetailsView.prototype.onSortColumn = function () {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortModule.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n else {\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n if (this.element.querySelector('.e-content').scrollTop !== 0) {\n this.gridObj.freezeRefresh();\n }\n };\n DetailsView.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'height':\n this.adjustHeight();\n break;\n case 'detailsViewSettings':\n if (!isNullOrUndefined(this.gridObj)) {\n this.checkNameWidth();\n var columns = this.getColumns();\n this.gridObj.columns = columns;\n this.gridObj.allowResizing = this.parent.detailsViewSettings.columnResizing;\n this.gridObj.dataBind();\n this.gridObj.refreshColumns();\n }\n break;\n case 'selectedItems':\n this.interaction = false;\n if (this.parent.selectedItems.length !== 0) {\n if (!this.parent.allowMultiSelection) {\n var slItems = this.parent.selectedItems.slice(this.parent.selectedItems.length - 1);\n this.parent.setProperties({ selectedItems: slItems }, true);\n }\n this.selectRecords(this.parent.selectedItems);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n else if (!isNOU(this.gridObj)) {\n this.gridObj.clearSelection();\n this.interaction = true;\n }\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showItemCheckBoxes':\n case 'allowMultiSelection':\n if (!isNullOrUndefined(this.gridObj)) {\n this.currentSelectedItem = this.parent.selectedItems;\n this.gridObj.selectionSettings.type = e.newProp.allowMultiSelection ? 'Multiple' : 'Single';\n this.isSelectionUpdate = true;\n this.renderCheckBox();\n }\n break;\n case 'view':\n updateLayout(this.parent, 'Details');\n break;\n case 'width':\n this.onDetailsResize();\n }\n }\n };\n DetailsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n var pathField = this.parent.detailsViewSettings.columns.find(function (column) { return column.field === 'filterPath'; });\n if ((this.parent.breadcrumbbarModule.searchObj.element.value.trim() === '' && this.gridObj) ||\n (!isNullOrUndefined(pathField) && !isNullOrUndefined(pathField.hideAtMedia) && pathField.hideAtMedia !== '')) {\n this.parent.searchedItems = [];\n if (!this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n else {\n this.updatePathColumn();\n }\n }\n removeBlur(this.parent);\n if (this.parent.view === 'Details') {\n /* istanbul ignore next */\n this.isInteracted = false;\n showSpinner(this.parent.element);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.gridObj.freezeRefresh();\n if (this.parent.isReact) {\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n }\n this.emptyArgs = args;\n };\n DetailsView.prototype.updatePathColumn = function () {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && columnData[len - 1].field !== 'filterPath' && !this.parent.isMobile) {\n var pathColumn = {\n field: 'filterPath', headerText: getLocaleText(this.parent, 'Path'), minWidth: 180, width: 'auto'\n };\n this.gridObj.columns.push(pathColumn);\n this.adjustWidth(this.gridObj.columns, 'filterPath');\n this.adjustWidth(this.gridObj.columns, 'name');\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n };\n DetailsView.prototype.checkEmptyDiv = function (args) {\n var items = getSortedData(this.parent, args.files);\n if (items.length === 0 && !isNOU(this.element.querySelector('.' + CLS.GRID_VIEW))) {\n createEmptyElement(this.parent, this.element, args);\n }\n else if (items.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n if (this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY)) {\n var emptyDiv = this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY);\n this.element.querySelector('.' + CLS.GRID_VIEW).removeChild(emptyDiv);\n }\n else {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n }\n };\n DetailsView.prototype.onOpenInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n var data = this.gridObj.getSelectedRecords()[0];\n this.openContent(data);\n }\n };\n DetailsView.prototype.DblClickEvents = function (args) {\n this.gridObj.selectRows([args.rowIndex]);\n var data;\n if (args.rowData) {\n data = JSON.parse(JSON.stringify(args.rowData));\n this.openContent(data);\n }\n };\n DetailsView.prototype.openContent = function (data) {\n var _this = this;\n if (!hasReadAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: data, module: 'DetailsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var name_2 = getValue('name', data);\n if (getValue('isFile', data)) {\n var icon = fileType(data);\n if (icon === CLS.ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, data);\n createImageDialog(_this.parent, name_2, imgUrl);\n }\n }\n else {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', data);\n _this.parent.oldPath = _this.parent.path;\n var newPath = _this.parent.path + (isNOU(id) ? name_2 : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(name_2);\n _this.parent.pathId.push(getValue('_fm_id', data));\n _this.parent.itemData = [data];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, data);\n }\n _this.parent.isFiltered = false;\n }\n _this.element.focus();\n if (_this.parent.enableVirtualization) {\n _this.parent.element.querySelector('#' + _this.parent.element.id + CLS.IMG_DIALOG_ID).focus();\n }\n }\n });\n };\n /* istanbul ignore next */\n DetailsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.isLoaded = true;\n }\n if (this.parent.isFiltered) {\n this.updatePathColumn();\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.parent.notify(events.hideLayout, {});\n this.gridObj.element.classList.remove(CLS.DISPLAY_NONE);\n this.isInteracted = false;\n this.gridObj.clearSelection();\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() !== '') {\n this.onSearchFiles(args);\n }\n this.adjustHeight();\n if (this.gridObj.sortSettings.columns.length > 0 && this.gridObj.sortSettings.columns[0].field !== this.parent.sortBy) {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSearchFiles = function (args) {\n if (this.parent.view === 'Details') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (!this.parent.isLayoutChange) {\n this.parent.layoutSelectedItems = [];\n }\n this.updatePathColumn();\n this.parent.searchedItems = args.files;\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.removePathColumn = function (isRefresh) {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && (columnData[len - 1].field === 'filterPath')) {\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.gridObj.sortSettings.columns[0]) && this.gridObj.sortSettings.columns[0].field === 'filterPath') {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn('name', this.parent.sortOrder);\n }\n else {\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n this.parent.notify(events.sortByChange, {});\n }\n this.gridObj.columns.pop();\n if (!isRefresh) {\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n }\n };\n DetailsView.prototype.onFinalizeEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n };\n DetailsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'detailsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n DetailsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'detailsview') {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n };\n DetailsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n };\n DetailsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.isInteracted = false;\n this.removePathColumn(false);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.emptyArgs = args;\n };\n DetailsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'Details' && this.gridObj) {\n this.gridObj.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n DetailsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'Details') {\n this.isInteracted = false;\n if (this.parent.allowMultiSelection) {\n this.gridObj.selectionModule.selectRowsByRange(0, this.gridObj.getRows().length);\n }\n else {\n this.gridObj.selectRow(this.gridObj.getRows().length - 1);\n }\n this.isInteracted = true;\n this.interaction = true;\n }\n };\n DetailsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'Details') {\n this.removeSelection();\n this.interaction = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelectionChanged = function () {\n removeClass([this.element], CLS.HEADER_CHECK);\n if (this.parent.selectedItems.length > 0) {\n addClass([this.element], CLS.HEADER_CHECK);\n }\n };\n DetailsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.adjustHeight();\n };\n DetailsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n DetailsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n DetailsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.parent.itemData = this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.addEventListener = function () {\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.search, this.onSearchFiles, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.sortColumn, this.onSortColumn, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n this.parent.on(events.pasteInit, this.onPasteInit, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.resizeEnd, this.onDetailsResizeHandler, this);\n this.parent.on(events.splitterResize, this.onDetailsResize, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n };\n DetailsView.prototype.removeEventListener = function () {\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteInit, this.onPasteInit);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.search, this.onSearchFiles);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.filterEnd, this.onPathChanged);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.sortColumn, this.onSortColumn);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.resizeEnd, this.onDetailsResizeHandler);\n this.parent.off(events.splitterResize, this.onDetailsResize);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n };\n DetailsView.prototype.onActionFailure = function () { this.interaction = true; };\n DetailsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = [this.gridObj.getRowInfo(args.target).rowData];\n }\n };\n DetailsView.prototype.onPasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath !== '') ? this.gridObj.getSelectedRecords() :\n [getPathObject(this.parent)];\n }\n };\n DetailsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n DetailsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = dragTarget.closest('tr.e-row');\n if (!dragLi) {\n return null;\n }\n var name;\n if (dragLi.getElementsByClassName('e-fe-text')[0]) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-fe-text')[0].innerText;\n }\n else if (dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling.innerText;\n }\n if (dragLi && !dragLi.querySelector('.e-active')) {\n this.selectRecords([name]);\n }\n getModule(this.parent, dragLi);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n this.parent.dragData = this.gridObj.getSelectedRecords();\n var dragRow;\n if (this.parent.dragData.length === 0 && dragLi) {\n dragRow = this.gridObj.getRowInfo(dragLi);\n }\n if (dragRow) {\n this.parent.dragData.push(dragRow.rowData);\n }\n this.parent.dragPath = this.parent.path;\n this.parent.activeElements = this.gridObj.getSelectedRows();\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDetailsResize = function () {\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n var gridHeader = this.gridObj.getHeaderContent().querySelector('.e-headercontent');\n var gridHeaderColGroup = gridHeader.firstChild.childNodes[0];\n var gridContentColGroup = this.gridObj.getContent().querySelector('.e-content .e-table').children[0];\n var gridHeaderColNames = this.gridObj.getColumns();\n for (var i = 0; i < gridHeaderColNames.length; i++) {\n if ((!this.isNameWidth && gridHeaderColNames[i].field === 'name') || gridHeaderColNames[i].field === 'filterPath') {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n if (this.element.clientWidth <= 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else if (this.element.clientWidth > 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n else {\n if (this.element.clientWidth <= 680) {\n if (gridHeaderColNames[i].field === 'name') {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 180px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 180px');\n }\n }\n else if (this.element.clientWidth > 680) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n }\n }\n }\n };\n DetailsView.prototype.onDetailsResizeHandler = function () {\n this.onDetailsResize();\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n this.adjustHeight();\n }\n };\n DetailsView.prototype.createDragObj = function () {\n var _this = this;\n if (this.gridObj) {\n if (this.parent.allowDragAndDrop && isNullOrUndefined(this.dragObj)) {\n this.dragObj = new Draggable(this.gridObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n distance: 5,\n enableTailMode: true,\n dragArea: this.parent.element,\n dragTarget: '.' + CLS.ROW,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n this.dragObj = null;\n }\n }\n };\n DetailsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n /* istanbul ignore next */\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (!args.target.closest('tr')) {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n else {\n var info = null;\n info = this.gridObj.getRowInfo(args.target).rowData;\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n }\n };\n DetailsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.gridObj.getSelectedRecords();\n this.parent.activeElements = this.gridObj.getSelectedRows();\n }\n };\n DetailsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath ||\n this.parent.path === getDirectoryPath(this.parent, args) || this.parent.hasId) {\n this.onPathChanged(args);\n }\n }\n };\n DetailsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns modules name.\n * @private\n */\n DetailsView.prototype.getModuleName = function () {\n return 'detailsview';\n };\n DetailsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.gridObj) {\n if (this.parent.isReact) {\n this.gridObj.off('reactTemplateRender', this.reactTemplateRender);\n }\n this.unWireEvents();\n this.gridObj.destroy();\n }\n };\n DetailsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelection = function (action, args) {\n var eventArgs = {\n action: action, fileDetails: args.data, isInteracted: this.interaction, cancel: false, target: args.target\n };\n this.parent.trigger('fileSelection', eventArgs);\n args.cancel = eventArgs.cancel;\n if (!this.isMultiSelect) {\n this.isMultiSelect = true;\n if ((args.isShiftPressed || args.isCtrlPressed) && !this.parent.allowMultiSelection && (args.target && args.target.parentElement && !args.target.parentElement.classList.contains('e-checkbox-wrapper'))) {\n args.cancel = true;\n var rowIndex = (args && args.rowIndexes)\n ? args.rowIndexes[args.rowIndexes.length - 1]\n : args.rowIndex;\n this.gridObj.selectRow(rowIndex);\n }\n this.isMultiSelect = false;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelected = function (args) {\n this.parent.activeModule = 'detailsview';\n if (!this.parent.isLayoutChange || this.parent.isFiltered) {\n this.selectedRecords();\n }\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.getSelectedRowIndexes().length === 1) {\n this.firstItemIndex = this.gridObj.selectedRowIndex;\n }\n this.gridObj.element.setAttribute('tabindex', '-1');\n this.triggerSelect('select', args);\n var item = this.gridObj.getRowByIndex(this.gridObj.selectedRowIndex);\n this.updateType(item);\n if (!isNOU(item) && !isNOU(item.querySelector('.e-checkselect'))) {\n if (this.gridObj.getSelectedRowIndexes().length !== 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n var lastItem = this.gridObj.getRowByIndex(lastItemIndex);\n lastItem.querySelector('.e-checkselect').setAttribute('tabindex', '-1');\n }\n item.querySelector('.e-rowcell.e-fe-checkbox').removeAttribute('tabindex');\n }\n if (!isNOU(this.gridObj) && !isNOU(this.gridObj.element.querySelector('.e-checkselectall'))) {\n this.gridObj.element.querySelector('.e-checkselectall').setAttribute('tabindex', '-1');\n }\n var rows = this.gridObj.getSelectedRowIndexes();\n if (!this.parent.allowMultiSelection) {\n for (var i = 0; i < rows.length; i++) {\n if (rows[i] === this.gridObj.selectedRowIndex) {\n this.gridObj.getRowByIndex(rows[i]).setAttribute('tabindex', '0');\n }\n else {\n this.gridObj.getRowByIndex(rows[i]).removeAttribute('tabindex');\n }\n }\n }\n var len = rows.length;\n if (this.parent.enableVirtualization) {\n this.parent.currentItemText = getValue('name', args.data);\n }\n else if (len > 0) {\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.parent.currentItemText = getValue('name', data);\n }\n var indexes = getValue('rowIndexes', args);\n var multiSelect = getValue('enableSelectMultiTouch', this.gridObj.selectionModule);\n if (this.parent.isDevice && isNOU(indexes) && args.target && !multiSelect && !args.target.closest('.e-headercell')) {\n this.parent.isFile = getValue('isFile', args.data);\n if (!this.parent.isFile) {\n this.openContent(args.data);\n }\n }\n this.parent.visitedItem = args.row;\n if ((!this.parent.enableVirtualization) || (!args.isHeaderCheckboxClicked)) {\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n if (!this.parent.isLayoutChange) {\n this.isInteracted = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'Details' && !isNOU(this.gridObj)) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n }\n };\n DetailsView.prototype.selectedRecords = function () {\n this.parent.setProperties({ selectedItems: [] }, true);\n var selectedRecords = this.gridSelectNodes();\n var selectSize = 0;\n while (selectSize < selectedRecords.length) {\n var record = selectedRecords[selectSize];\n var name_3 = getItemName(this.parent, record);\n this.parent.selectedItems.push(name_3);\n selectSize++;\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n };\n DetailsView.prototype.onDeSelection = function (args) {\n /* istanbul ignore next */\n if (!this.parent.allowMultiSelection && isNOU(args.data)) {\n this.gridObj.getRowByIndex(args.rowIndex).removeAttribute('tabindex');\n }\n else if (this.gridObj.getSelectedRowIndexes().length > 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n this.gridObj.getRowByIndex(lastItemIndex).querySelector('.e-checkselect').removeAttribute('tabindex');\n }\n if (this.gridObj.selectedRowIndex === -1) {\n this.gridObj.element.setAttribute('tabindex', '0');\n }\n if (!this.isInteracted) {\n this.isInteracted = true;\n return;\n }\n this.selectedRecords();\n if (this.parent.selectedItems.length === 0) {\n setValue('enableSelectMultiTouch', false, this.gridObj.selectionModule);\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('unselect', args);\n this.parent.visitedItem = null;\n };\n DetailsView.prototype.triggerSelect = function (action, args) {\n var eventArgs = { action: action, fileDetails: args.data, isInteracted: this.interaction };\n this.parent.trigger('fileSelect', eventArgs);\n this.interaction = true;\n };\n DetailsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.gridObj.element, {\n keyAction: this.keyupHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.gridObj.element, 'blur', this.removeFocus, this);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n };\n DetailsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n EventHandler.remove(this.gridObj.element, 'blur', this.removeFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n };\n DetailsView.prototype.wireClickEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n var ele = this.gridObj.getContent();\n this.clickObj = new Touch(ele, {\n tap: function (eve) {\n if (eve.tapCount === 1 && eve.originalEvent.target.classList.contains('e-content')) {\n _this.onClearAllInit();\n }\n },\n tapHold: function (e) {\n if (_this.parent.isDevice) {\n e.originalEvent.preventDefault();\n if (_this.parent.allowMultiSelection) {\n setValue('enableSelectMultiTouch', _this.parent.allowMultiSelection, _this.gridObj.selectionModule);\n addClass([_this.parent.element], CLS.MULTI_SELECT);\n }\n var target = e.originalEvent.target;\n if (target) {\n var row = closest(target, '.' + CLS.ROW);\n var index = _this.gridObj.getRows().indexOf(row);\n _this.gridObj.selectRow(index);\n }\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.removeSelection = function () {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n this.gridObj.clearSelection();\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.selectedRowIndex === -1) {\n this.startIndex = null;\n }\n this.isInteracted = true;\n };\n DetailsView.prototype.removeFocus = function () {\n this.addFocus(null);\n };\n DetailsView.prototype.onBlur = function (e) {\n if ((e.relatedTarget !== null && closest(e.relatedTarget, '.e-grid') !== e.relatedTarget)) {\n return;\n }\n if (!isNOU(this.gridObj.element)) {\n var thElements = this.gridObj.element.querySelectorAll('th');\n for (var i = 0; i < thElements.length; i++) {\n if (thElements[i].classList.contains('e-focus')) {\n this.addFocus(null);\n }\n }\n }\n };\n DetailsView.prototype.getFocusedItemIndex = function () {\n return (!isNOU(this.getFocusedItem())) ?\n parseInt(this.getFocusedItem().getAttribute('data-rowindex'), 10) : null;\n };\n /* istanbul ignore next */\n DetailsView.prototype.keydownHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'moveDown':\n case 'moveUp':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.keyupHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n e.preventDefault();\n var action = e.action;\n var gridItems = getSortedData(this.parent, this.gridObj.dataSource);\n var gridLength = gridItems.length;\n var focIndex = this.getFocusedItemIndex();\n var selIndex = this.gridObj.selectedRowIndex;\n var selRowIndeces = this.gridObj.getSelectedRowIndexes();\n var rowData;\n var firstItem;\n var lastItem;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'enter':\n if (this.gridObj.selectedRowIndex === -1 && this.gridObj.allowSorting === true) {\n if (!e.target.classList.contains('e-fe-grid-icon')) {\n var direction = !e.target.getElementsByClassName('e-ascending').length ? 'Ascending' : 'Descending';\n var currentField = this.gridObj.getColumnByUid(e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid')).field;\n this.gridObj.sortColumn(currentField, direction);\n if (!isNOU(this.getFocusedItem().nextSibling)) {\n this.getFocusedItem().nextSibling.setAttribute('tabindex', '0');\n }\n }\n break;\n }\n rowData = this.gridObj.getRowsObject()[this.gridObj.selectedRowIndex].data;\n if (rowData) {\n var data = JSON.parse(JSON.stringify(rowData));\n this.openContent(data);\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlA':\n if (!isNOU(gridItems[0]) && this.parent.allowMultiSelection) {\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n var crtSrlPos = cnTable.scrollTop;\n var crtFocusIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n cnTable.scrollTop = crtSrlPos;\n if (crtFocusIndex !== -1) {\n this.addFocus(crtFocusIndex);\n }\n }\n break;\n case 'ctrlHome':\n case 'tab':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection && e.action === 'ctrlHome') {\n this.gridObj.selectRow(0);\n }\n else if (this.gridObj.selectedRowIndex !== -1 && e.action === 'tab') {\n return;\n }\n else {\n this.addHeaderFocus(e);\n }\n }\n break;\n case 'ctrlEnd':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow(gridLength - 1);\n }\n else {\n this.addFocus(gridLength - 1);\n }\n }\n break;\n case 'shiftHome':\n case 'shiftEnd':\n case 'csHome':\n case 'csEnd':\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : gridItems.length - 1);\n }\n else {\n if (!isNOU(gridItems[0])) {\n if (!isNOU(selIndex) && selIndex !== -1) {\n this.checkRowsKey(gridItems, selIndex, null, e);\n }\n else {\n if (e.action === 'csHome' || e.action === 'shiftHome') {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n }\n }\n }\n }\n break;\n case 'space':\n case 'csSpace':\n case 'shiftSpace':\n case 'ctrlSpace':\n this.spaceSelection(selRowIndeces, focIndex, selIndex, e);\n break;\n case 'csUp':\n case 'csDown':\n case 'shiftUp':\n case 'shiftDown':\n this.shiftMoveMethod(gridItems, selIndex, focIndex, selRowIndeces, e);\n break;\n case 'ctrlUp':\n case 'ctrlDown':\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n break;\n case 'home':\n firstItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[0])];\n this.parent.setProperties({ selectedItems: firstItem }, true);\n this.selectRecords(firstItem);\n break;\n case 'moveUp':\n case 'moveDown':\n this.moveFunction(gridItems, e, selIndex);\n break;\n case 'end':\n lastItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[gridLength - 1])];\n this.parent.setProperties({ selectedItems: lastItem }, true);\n this.selectRecords(lastItem);\n break;\n case 'back':\n this.parent.traverseBackward();\n break;\n }\n };\n DetailsView.prototype.gridSelectNodes = function () {\n return this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.doDownload = function () {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionDownload);\n return;\n }\n }\n Download(this.parent, this.parent.path, this.parent.selectedItems);\n }\n };\n DetailsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasEditAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n DetailsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n DetailsView.prototype.updateRenameData = function () {\n var data = this.gridSelectNodes()[0];\n updateRenamingData(this.parent, data);\n };\n DetailsView.prototype.shiftMoveMethod = function (gridItems, selIndex, focIndex, selRowIndeces, e) {\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n if (selIndex === -1 && (e.action === 'csUp' || e.action === 'csDown')) {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n else if (selIndex !== -1 && focIndex !== selIndex &&\n !((e.action === 'csUp' || e.action === 'csDown') && this.isSelected(selRowIndeces, focIndex))) {\n this.shiftSelectFocusItem(selIndex, focIndex, selRowIndeces, e);\n }\n else {\n this.shiftSelectedItem(selIndex, selRowIndeces, gridItems, e);\n }\n }\n };\n DetailsView.prototype.moveFunction = function (selectedItems, e, rowIndex) {\n if (!isNOU(this.getFocusedItem()) && this.parent.allowMultiSelection) {\n if (e.action === 'moveDown') {\n this.gridObj.selectRow(this.getFocusedItemIndex() + 1);\n }\n else {\n this.gridObj.selectRow(this.getFocusedItemIndex() - 1);\n }\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n if (e.action === 'moveDown' || e.action === 'ctrlDown' || e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectRow(rowIndex + ((rowIndex !== selectedItems.length - 1) ? 1 : 0));\n }\n else {\n this.gridObj.selectRow(rowIndex - ((rowIndex !== 0) ? 1 : 0));\n }\n }\n else {\n if (!isNOU(selectedItems[0])) {\n this.gridObj.selectRow(0);\n }\n }\n };\n DetailsView.prototype.spaceSelection = function (selRowIndeces, focIndex, selIndex, e) {\n if (!this.isSelected(selRowIndeces, focIndex) && selIndex !== -1 && (e.action === 'shiftSpace' || e.action === 'csSpace')) {\n if (focIndex < selIndex) {\n this.gridObj.selectionModule.selectRowsByRange(focIndex, selIndex);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(selIndex, focIndex);\n }\n }\n else if (!isNOU(this.getFocusedItem()) && focIndex !== selIndex) {\n selRowIndeces.push(this.getFocusedItemIndex());\n this.gridObj.selectRows(selRowIndeces);\n }\n else if (selIndex !== -1 && e.action === 'ctrlSpace' && this.parent.allowMultiSelection) {\n var lItem = selIndex;\n selRowIndeces.pop();\n this.gridObj.selectRows(selRowIndeces);\n this.addFocus(lItem);\n }\n else if (e.action === 'shiftSpace') {\n this.gridObj.selectRow(selIndex);\n }\n };\n DetailsView.prototype.ctrlMoveFunction = function (items, e, rowIndex) {\n var nextItem;\n if (!isNOU(this.getFocusedItem())) {\n var nextIndex = this.getFocusedItemIndex();\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n nextIndex + ((nextIndex < items.length - 1) ? 1 : 0) : nextIndex - ((nextIndex < 1) ? 0 : 1);\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n rowIndex + ((rowIndex < items.length) ? 1 : 0) : rowIndex - ((rowIndex < 1) ? 0 : 1);\n }\n else {\n if (!isNOU(items[0])) {\n nextItem = 0;\n }\n }\n this.addFocus(nextItem);\n };\n DetailsView.prototype.checkRowsKey = function (items, indexValue, focIndex, e) {\n if (this.gridObj.checkAllRows === 'Uncheck' || this.gridObj.checkAllRows === 'Intermediate') {\n if (e.action !== 'csHome' && e.action !== 'csEnd') {\n if (isNOU(this.startIndex) && this.firstItemIndex !== indexValue) {\n this.firstItemIndex = indexValue;\n }\n if (e.action === 'shiftEnd') {\n this.gridObj.selectionModule.selectRowsByRange(this.firstItemIndex, items.length - 1);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, this.firstItemIndex);\n }\n this.startIndex = indexValue;\n }\n else {\n if (e.action === 'csEnd') {\n this.gridObj.\n selectRows(this.InnerItems(isNOU(indexValue) ? 0 : indexValue, isNOU(focIndex) ? items.length - 1 : focIndex, e));\n }\n else {\n if (isNOU(indexValue)) {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectRows(this.InnerItems(isNOU(focIndex) ? 0 : focIndex, indexValue, e));\n }\n }\n }\n }\n else {\n this.gridObj.selectionModule.selectRow(((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : items.length - 1));\n }\n };\n DetailsView.prototype.InnerItems = function (fItem, lItem, e) {\n var itemArr = this.gridObj.getSelectedRowIndexes();\n if (e.action === 'csEnd') {\n for (var i = fItem + 1; i <= lItem; i++) {\n itemArr.push(i);\n }\n }\n else {\n for (var i = lItem - 1; fItem <= i; i--) {\n itemArr.push(i);\n }\n }\n return itemArr;\n };\n DetailsView.prototype.shiftSelectFocusItem = function (selIndex, fIndex, selRowIndexes, e) {\n var lItem = fIndex + ((e.action === 'shiftDown' || e.action === 'csDown') ? 1 : -1);\n var fItem = isNOU(this.startIndex) ? selIndex : selRowIndexes[0];\n if (fItem === lItem) {\n this.gridObj.selectRow(fItem);\n }\n else {\n if (fItem < lItem) {\n if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n }\n else if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n }\n this.startIndex = this.gridObj.selectedRowIndex;\n };\n DetailsView.prototype.addFocus = function (item) {\n var fItem = this.getFocusedItem();\n var itemElement = this.gridObj.getRowByIndex(item);\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS, CLS.FOCUSED]);\n }\n if (!isNOU(itemElement)) {\n this.gridObj.element.setAttribute('tabindex', '-1');\n itemElement.setAttribute('tabindex', '0');\n itemElement.focus();\n addClass([itemElement], [CLS.FOCUS, CLS.FOCUSED]);\n }\n };\n DetailsView.prototype.addHeaderFocus = function (e) {\n var treeFocus = select('.e-row', this.element);\n this.gridObj.element.setAttribute('tabindex', '-1');\n var nameFocus;\n if (!isNOU(e.target) && e.target.classList.contains('e-defaultcursor')) {\n this.addFocus(0);\n nameFocus = e.target.nextElementSibling;\n }\n else if (!isNOU(this.gridObj.element.querySelector('.e-focus')) && (this.gridObj.element.querySelector('.e-focus').tagName === 'TH')) {\n nameFocus = this.gridObj.element.querySelector('.e-focus').nextElementSibling;\n this.addFocus(0);\n }\n else {\n nameFocus = select('th.e-fe-grid-icon', this.element);\n }\n if (!isNOU(nameFocus)) {\n nameFocus.setAttribute('tabindex', '0');\n nameFocus.focus();\n addClass([nameFocus], [CLS.FOCUS, CLS.FOCUSED]);\n treeFocus.setAttribute('tabindex', '0');\n if (treeFocus.tabIndex === 0 && nameFocus.tabIndex === 0) {\n removeClass([treeFocus], [CLS.FOCUS, CLS.FOCUSED]);\n }\n }\n };\n DetailsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.FOCUSED, this.element);\n };\n DetailsView.prototype.isSelected = function (selRowIndexes, focIndex) {\n var check = false;\n for (var i = 0; i <= selRowIndexes.length - 1; i++) {\n if (selRowIndexes[i] === focIndex) {\n check = true;\n break;\n }\n }\n return check;\n };\n DetailsView.prototype.shiftSelectedItem = function (selIndex, selRowIndexes, gridItems, e) {\n if (selIndex === -1) {\n this.gridObj.selectRow(0);\n }\n else {\n if (isNOU(this.startIndex) && e.shiftKey) {\n this.startIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectRows([selIndex, (e.action === 'shiftDown' || e.action === 'csDown') ?\n (selIndex + ((selIndex !== gridItems.length - 1) ? 1 : 0)) : (selIndex - ((selIndex !== 0) ? 1 : 0))]);\n }\n else {\n if (e.action === 'shiftDown' || e.action === 'shiftUp') {\n if (e.action === 'shiftDown' && selRowIndexes.indexOf(selIndex + 1) === -1) {\n if (selIndex !== gridItems.length - 1) {\n selRowIndexes.push(selIndex + 1);\n }\n }\n else if (e.action === 'shiftUp' && selRowIndexes.indexOf(selIndex - 1) === -1) {\n if (selIndex !== 0) {\n selRowIndexes.push(selIndex - 1);\n }\n }\n else {\n selRowIndexes.pop();\n }\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n if (e.action === 'csDown') {\n if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() + 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() + 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() + 1);\n }\n }\n else if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() - 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() - 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() - 1);\n }\n }\n }\n }\n };\n DetailsView.prototype.onMethodCall = function (e) {\n if (this.parent.view !== 'Details') {\n return;\n }\n var action = getValue('action', e);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', e));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', e));\n break;\n case 'openFile':\n this.openFile(getValue('id', e));\n break;\n case 'createFolder':\n this.interaction = false;\n break;\n case 'renameFile':\n this.interaction = false;\n this.renameFile(getValue('id', e), getValue('newName', e));\n break;\n case 'selectAll':\n this.interaction = false;\n this.onSelectAllInit();\n break;\n case 'clearSelection':\n this.interaction = false;\n this.onClearAllInit();\n break;\n }\n };\n DetailsView.prototype.getRecords = function (nodes) {\n var gridRecords = this.gridObj.getCurrentViewRecords();\n var records = [];\n var hasFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filter = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !hasFilter) {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n if (nodes.indexOf(getValue(filter, gridRecords[i])) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n else {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var name_4 = getValue('filterPath', gridRecords[i]) + getValue('name', gridRecords[i]);\n if (nodes.indexOf(name_4) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n return records;\n };\n DetailsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n var records = this.getRecords(ids);\n if (records.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < records.length; i++) {\n data[i] = records[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n var dRecords = this.getRecords(ids);\n if (dRecords.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < dRecords.length; i++) {\n data[i] = dRecords[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n var records = this.getRecords([id]);\n if (records.length > 0) {\n this.openContent(records[0]);\n }\n };\n DetailsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n var records = this.getRecords([id]);\n if (records.length > 0) {\n updateRenamingData(this.parent, records[0]);\n if (!isNOU(name)) {\n if (hasEditAccess(this.parent.itemData[0])) {\n rename(this.parent, this.parent.path, name);\n }\n else {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n }\n else {\n doRename(this.parent);\n }\n }\n };\n return DetailsView;\n}());\nexport { DetailsView };\n"],"names":["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","AjaxSettings","ChildProperty","Property","apply","defaultToolbarItems","ToolbarSettings","ToolbarItem","SearchSettings","columnArray","field","headerText","minWidth","template","customAttributes","class","type","format","width","initializeCSPTemplate","data","size","DetailsViewSettings","fileItems","folderItems","layoutItems","ContextMenuSettings","NavigationPaneSettings","UploadSettings","Column","TOOLBAR_ID","LAYOUT_ID","NAVIGATION_ID","TREE_ID","GRID_ID","LARGEICON_ID","DIALOG_ID","IMG_DIALOG_ID","EXTN_DIALOG_ID","UPLOAD_DIALOG_ID","CONTEXT_MENU_ID","CONTENT_ID","BREADCRUMBBAR_ID","UPLOAD_ID","SEARCH_ID","ROOT","CONTROL","CHECK_SELECT","ROOT_POPUP","MOBILE","MOB_POPUP","MULTI_SELECT","FILTER","LAYOUT","NAVIGATION","LAYOUT_CONTENT","LARGE_ICONS","TB_ITEM","LIST_ITEM","LIST_TEXT","LIST_PARENT","TB_OPTION_TICK","TB_OPTION_DOT","BLUR","ACTIVE","HOVER","FOCUS","FOCUSED","CHECK","FRAME","CB_WRAP","ROW","EMPTY","EMPTY_CONTENT","EMPTY_INNER_CONTENT","CLONE","DROP_FOLDER","DROP_FILE","FOLDER","ICON_IMAGE","ICON_MUSIC","ICON_VIDEO","LARGE_ICON","LARGE_EMPTY_FOLDER","GRID_HEADER","TREE_VIEW","MENU_ITEM","MENU_ICON","SUBMENU_ICON","GRID_VIEW","GRID_CONTENT","ICON_VIEW","ICON_OPEN","ICON_UPLOAD","ICON_CUT","ICON_COPY","ICON_PASTE","ICON_DELETE","ICON_RENAME","ICON_NEWFOLDER","ICON_DETAILS","ICON_SHORTBY","ICON_REFRESH","ICON_SELECTALL","ICON_DOWNLOAD","ICON_GRID","ICON_LARGE","ICON_BREADCRUMB","ICON_CLEAR","ICONS","ERROR_CONTENT","BREADCRUMBS","RTL","DISPLAY_NONE","FULLROW","SPLIT_BAR","HEADER_CHECK","OVERLAY","VALUE","modelChanged","initialEnd","finalizeEnd","createEnd","filterEnd","pathDrag","deleteInit","deleteEnd","refreshEnd","resizeEnd","splitterResize","pathChanged","destroy","beforeRequest","skipUpload","afterRequest","layoutRefresh","actionFailure","search","openInit","openEnd","selectionChanged","selectAllInit","clearAllInit","clearPathInit","layoutChange","sortByChange","nodeExpand","detailsInit","menuItemData","renameInit","renameEndParent","renameEnd","showPaste","hidePaste","selectedData","cutCopyInit","pasteInit","pasteEnd","cutEnd","hideLayout","updateTreeSelection","sortColumn","pathColumn","searchTextChange","downloadInit","dropInit","dragEnd","dropPath","dragging","updateSelectionData","methodCall","permissionRead","permissionEdit","permissionEditContents","permissionUpload","permissionDownload","updatePath","node","instance","text","getValue","id","getAttribute","newText","isNOU","setProperties","path","getPath","hasId","pathId","getPathId","pathNames","getPathNames","element","matched","getParents","ids","push","names","isId","parentText","el","parentNode","matches","CLS.LIST_ITEM","select","CLS.LIST_TEXT","textContent","classList","contains","CLS.TREE_VIEW","generatePath","parent","newPath","parseInt","toString","feParent","removeActive","isCut","removeBlur","selectedNodes","actionRecords","enablePaste","notify","events.hidePaste","activeElement","action","isSearchCut","activeElements","events.cutCopyInit","blurEle","activeModule","targetPath","getParentPath","getModule","addBlur","events.showPaste","activeRecords","breadcrumbbarModule","searchObj","value","isFiltered","i_1","selectedItems","nodes","add","CLS.BLUR","hover","querySelectorAll","CLS.HOVER","remove","CLS.ROW","closest","CLS.LARGE_ICON","getAllChildItems","parentId","children","fileSystemData","filter","item","String","allChildren","slice","forEach","child","childId","concat","searchWordHandler","isLayoutChange","caseSensitive","searchWord","events.pathColumn","args","isFileSystemData","itemData","read","events.layoutChange","searchSettings","filterType","currData","filteredData","DataManager","executeLocal","Query","where","ignoreCase","searchValue","toLowerCase","Search","events.search","showHiddenItems","getPathObject","hiddenItems","isSortByClicked","files","oldView","detailsviewModule","gridObj","dataSource","largeiconsviewModule","allItems","updateLayout","view","layoutSelectedItems","getTargetModule","tartgetModule","CLS.ROOT","CLS.CONTROL","CLS.GRID_CONTENT","CLS.LARGE_ICONS","targetModule","refresh","hasReadAccess","events.refreshEnd","createDeniedDialog","events.permissionRead","openAction","events.openEnd","copyFiles","fileAction","cutFiles","fileType","file","filetype","indexOf","split","join","CLS.ICON_IMAGE","CLS.ICON_MUSIC","CLS.ICON_VIDEO","CLS.FOLDER","getImageUrl","baseUrl","pathUrl","fileName","fPath","imgUrl","trigger","eventArgs_1","fileDetails","imageUrl","ajaxSettings","url","encodeURIComponent","eventArgs","imgId","replace","Date","getTime","getFullPath","filePath","getName","name","getSortedData","items","query","sortOrder","isNullOrUndefined","sortBy","group","lists","getObject","result","feFiles","createEmptyElement","emptyEle","dragFile","layoutElement","CLS.LAYOUT_ID","addressBarHeight","CLS.BREADCRUMBBAR_ID","offsetHeight","top","eDiv","CLS.GRID_HEADER","querySelector","CLS.EMPTY","emptyDiv","createElement","className","emptyFolder","CLS.LARGE_EMPTY_FOLDER","CLS.EMPTY_CONTENT","CLS.EMPTY_INNER_CONTENT","CLS.GRID_VIEW","appendChild","error","innerHTML","getLocaleText","style","marginTop","getDirectories","setNodeId","rootId","dirs","len","setValue","setDateObject","localeString","dateFormat","createdDate","modifiedDate","formatDate","locale","localeObj","getConstant","getCssClass","css","cssClass","sortbyClickHandler","getSortField","isMobile","events.sortColumn","module","events.sortByChange","column","substring","lastIndexOf","detailsViewSettings","columns","setNextPath","currfolders","folders","originalPath","root","eventName","events.finalizeEnd","events.initialEnd","openSearchFolder","navData","isRoot","searchData","events.clearPathInit","selectedNode","pasteHandler","isDragDrop","folderPath","includes","validateSubFolder","events.pasteInit","paste","createDialog","code","message","fileExists","dragPath","subFolder","name_1","dragData","srcData","dragNodes","tempTarget","dropHandler","dropData","oldPath","getDirectoryPath","cwd","doPasteUpdate","operation","events.dragEnd","events.cutEnd","duplicateItems","pasteNodes","count","droppedObjects","duplicateRecords","isPasteError","isDropEnd","isSearchDrag","isPathDrag","events.pasteEnd","readDropPath","expandedId","events.pathDrag","navigationpaneModule","treeObj","document","events.dropPath","getDuplicateData","records","createVirtualDragElement","getItemName","cloneIcon","cloneName","virtualEle","ele","CLS.CLONE","badge","virtualDragElement","dragStopHandler","dragArgs","cancel","treeExpandTimer","window","clearTimeout","removeDropTarget","uploadObj","dropArea","CLS.CONTENT_ID","detach","events.dropInit","dragCount","dragStartHandler","dragObj","allowDragAndDrop","intDestroy","event","dragCancel","removeItemClass","CLS.DROP_FOLDER","CLS.DROP_FILE","scrollHandler","scrollParent","nodeClass","clientY","position","elementData","getBoundingClientRect","clientHeight","scrollBy","draggingHandler","canDrop","setTimeout","events.dragging","parentElement","y","firstElementChild","objectToString","str","keys","updateRenamingData","currentItemText","isFile","filterPath","doRename","hasEditAccess","events.permissionEdit","doDownload","hasDownloadAccess","events.permissionDownload","Download","doDeleteFiles","newIds","Delete","doDownloadFiles","getAccessClass","permission","hasContentAccess","hasUploadAccess","createNewFolder","details","events.permissionEditContents","uploadItem","eleId","CLS.UPLOAD_ID","click","events.permissionUpload","closePopup","dialogObj","hide","getAccessDetails","isPathPermision","accessMessage","copyOrMovePermission","undefined","responseData","createAjax","readSuccess","createFolder","itemName","createSuccess","filterDataVal","filterData","extend","filterSuccess","rename","itemNewName","newName","showFileExtension","renameSuccess","pasteOperation","renameItems","targetData","renameFiles","destinationPath","pasteSuccess","deleteSuccess","GetDetails","detailsSuccess","isFileExists","some","findIndexById","findIndex","filterById","filterByParent","createNewItem","isCopy","newItem","call","currentDate","assign","dateCreated","dateModified","hasChild","getUid","createErrorObject","triggerClientEvents","createEventArgs","folderName","parentFolder","newObject","data_1","deleteEventArgs","index","splice","obj","subItem","renameEventArgs","moveEventArgs","folderSubItems_1","itemPermission","pathPermission","file_1","existingFileCount","copyFolderItems","getTargetFiles","fileData","pathArray","currItem","subItems","parentID","searchEventArgs","searchResults","searchText","fn","mode","dataType","contentType","JSON","stringify","onSuccess","onFailure","beforeSend","beforeSendArgs","isMultipleFiles","itemNames","totalSize","events.beforeRequest","idValue","renamedItem","isFileOperation","map","getSize","reduce","accumulator","currentObject","location","multipleFiles","created","modified","performReadOperation","Ajax","result_1","triggerAjaxFailure","parse","send","hz","toFixed","events.afterRequest","intl","rootAliasName","Internationalization","rootName","location_1","RegExp","match","events.searchTextChange","copiedItems","events.selectionChanged","pop","handleCatchError","visible","nextElementSibling","createdItem","events.createEnd","pathObject","pathLevel","isArray","events.renameEndParent","renameText","previousSelected","getTreeData","events.pathChanged","events.renameEnd","moveorcopyEventArgs","fileLength","createExtDialog","events.deleteEnd","searchString","searchSuccess","downloadUrl","responseType","useFormPost","downloadArgs","form","attrs","method","download","input","forms","namedItem","submit","removeChild","contentDisposition_1","fileName_1","Fetch","onLoad","e","headers","get","extractedFilename","filenameMatch","blobUrl","URL","createObjectURL","link","href","body","status","options","header","content","buttons","dialogName","open","triggerPopupOpen","close","triggerPopupClose","buttonModel","isPrimary","onSubmit","createInput","oninput","onValidate","onkeyup","getKeyCode","focus","setSelectionRange","bind","events.deleteInit","onReSubmit","inputEle","txt","formattedString","CLS.VALUE","strArr","val","substr","every","arr","toLocaleUpperCase","events.actionFailure","CLS.ERROR_CONTENT","Dialog","beforeOpen","keydownAction","beforeClose","triggerPopupBeforeClose","animationSettings","effect","showCloseIcon","closeOnEscape","allowDragging","isModal","popupTarget","CLS.MOB_POPUP","CLS.ROOT_POPUP","enableRtl","enableHtmlSanitizer","isStringTemplate","appendTo","CLS.DIALOG_ID","dataBind","show","replaceItems","extOptions","duplicateContent","extDialogObj","item_1","indexval","item_2","ind","retryFiles","isRetryOpened","dialogEle","container","checkContainer","checkbox","CheckBox","label","change","isApplySame","checked","retryDlgClose","retryDlgUpdate","events.skipUpload","beforeExtOpen","CLS.EXTN_DIALOG_ID","triggerPopupBeforeOpen","dlgModule","popupName","popupModule","eventargs","isInteracted","isKeepBoth","onKeepBothAll","retryArgs","retry","onReplaceAll","flag","placeholder","Input","properties","preventKeydown","selectAll","dlgName","btnElement","btnCount","_loop_1","onkeydown","keyCode","preventDefault","onSubmitValidate","oldExtension","newExtension","oIndex","renamedId","nIndex","test","addInvalid","which","charCode","createImageDialog","image","src","alt","viewerObj","height","enableResize","X","Y","updateImage","resizing","resizeStop","CLS.IMG_DIALOG_ID","imgWrap","cssObj","getComputedStyle","paddingWidth","parseFloat","paddingRight","paddingHeight","paddingBottom","offsetWidth","LargeIconsView","render","visitedItem","startItem","showSpinner","resetMultiSelect","setAttribute","listObj","unWireEvents","removeEventListener","events.hideLayout","iconsView","CLS.LARGEICON_ID","ul","activeEle","ariaAttributes","itemRole","listRole","itemText","groupItemRole","wrapperRole","showIcon","fields","iconCss","htmlAttributes","itemCreated","onItemCreated","renderList","sortComparer","DataUtil","sort","comparer","CLS.DISPLAY_NONE","enableVirtualization","virtualizationModule","setUIVirtualization","listElements","ListBase","createListFromJson","itemList","preventImgDrag","createDragObj","emptyList","CLS.LIST_PARENT","isPasteOperation","selectItems","uploadOperation","CLS.ACTIVE","maxHeight","getItemCount","addEventListener","wireEvents","setUlElementHeight","wireScrollEvent","isRendered","hideSpinner","checkItem","x","z","ondragstart","_this","Draggable","enableTailMode","distance","enableAutoScroll","dragTarget","helper","dragHelper","cursorAt","dragCursorPosition","dragArea","dragStop","drag","clone","dragStart","sender","dragLi","setFocus","getItemObject","onDropInit","cwdData","getModuleName","dropLi","info","removeAttribute","curData","textEle","renderCheckbox","checkElement","showItemCheckBoxes","createCheckBox","insertBefore","childNodes","onLayoutChange","indexes","getIndexes","length_1","checkEle","checkLength","checkState","icon","selected","showThumbnail","title","onFinalizeEnd","onCreateEnd","clearSelect","onSelectedData","updateSelectedData","onDeleteInit","onDeleteEnd","onRefreshEnd","onRenameInit","updateRenameData","onPathChanged","searchedItems","addSelection","onOpenInit","doOpenAction","onHideLayout","onSelectAllInit","lastItem","getFirstItem","getLastItem","doSelection","ctrlKey","shiftKey","isInteraction","onClearAllInit","clearSelection","onBeforeRequest","onAfterRequest","onSearch","onLayoutRefresh","onUpdateSelectionData","onPathColumn","isDestroyed","off","events.selectedData","events.openInit","events.modelChanged","onPropertyChanged","events.methodCall","onMethodCall","onActionFailure","events.renameInit","events.selectAllInit","events.clearAllInit","events.menuItemData","onMenuItemData","events.splitterResize","splitterResizeHandler","events.resizeEnd","resizeHandler","onpasteInit","onpasteEnd","oncutCopyInit","events.detailsInit","onDetailsInit","events.layoutRefresh","onDropPath","events.updateSelectionData","events.filterEnd","on","currentSelected","_i","_a","newProp","allowMultiSelection","wireClickEvent","keyboardModule","KeyboardEvents","keyAction","keyActionHandler","keyConfigs","keyboardDownModule","keydownActionHandler","EventHandler","onMouseOver","targetEle","toBind","clickObj","Touch","tap","eve","isDevice","tapCount","tapEvent","doTapAction","originalEvent","dblClickHandler","clickHandler","tapHold","multiSelect","addClass","CLS.MULTI_SELECT","updateType","cList","addActive","isSelectAllCalled","CLS.CHECK","triggerSelection","CLS.FRAME","startIndex","endIndex","addFocus","triggerSelect","removeClass","details_1","fileOpenArgs","folder","fItem","getFocusedItem","firstItem","scrollTo","scrollHeight","navigateItem","scrollTop","navigateDown","navigateRight","csEndKey","csHomeKey","csDownKey","csLeftKey","csRightKey","csUpKey","spaceKey","ctrlAKey","getVisitedItem","performDelete","performRename","traverseBackward","CLS.FOCUS","getActiveItem","isTowards","nItem","getNextItem","perRow","li","nextItem","marginValue","getPropertyValue","isVisible","liScrPos","getCurFocusedItem","liParent","dItem","lItem","rItem","uItem","getDataName","preItem","toCheck","CLS.CB_WRAP","eles","visitedData","j","byId","resultData","newData","deleteFiles","downloadFiles","openFile","renameFile","getItemsIndex","isFilter","filterName","name_2","end","home","tab","moveDown","moveLeft","moveRight","moveUp","ctrlEnd","ctrlHome","ctrlDown","ctrlLeft","ctrlRight","ctrlUp","shiftEnd","shiftHome","shiftDown","shiftLeft","shiftRight","shiftUp","csEnd","csHome","csDown","csLeft","csRight","csUp","space","ctrlSpace","shiftSpace","csSpace","ctrlA","enter","altEnter","esc","del","ctrlX","isMac","ctrlC","ctrlV","f2","shiftdel","back","ctrlD","BreadCrumbBar","prop","allowSearchOnTyping","searchEventBind","onPathChange","paths","addressbarUL","addressbarLI","pathNamesLen","addressATag","CLS.ICONS","innerText","ulElement","breadCrumbBarNavigation","searchWrap","subMenuObj","updateBreadCrumbBar","addresBarUL","liElements","pRight","pLeft","breadCrumbBarWidth","liElementsWidth","liElementsWidths","clientWidth","searchContainer","CLS.SEARCH_ID","searchInput","autocomplete","aria-label","searchEle","span","onShowInput","TextBox","showClearButton","onFocus","blur","onBlur","searchChangeHandler","onKeyUp","searchWrapWidth","diff","liElement","utext","subMenuLi","subMenuSpan","DropDownButton","CLS.ICON_BREADCRUMB","iconPosition","beforeItemRender","addSubMenuAttributes","subMenuSelectOperations","addressPathClickHandler","anchor","allow","searchTimer","nodeName","currentPath","triggerFileOpen","treeNodeId","events.updateTreeSelection","CLS.FILTER","list","liElementId","addressBarLink","newpath","onUpdatePath","removeSearchValue","onRenameEnd","onResize","onPasteEnd","events.destroy","onSearchTextChange","liEle","addressPath","ContextMenu","downarrow","uparrow","contextMenu","Menu","onBeforeItemRender","onSelect","onBeforeOpen","onBeforeClose","CLS.CONTEXT_MENU_ID","iconSpan","getMenuId","CLS.ICON_LARGE","CLS.MENU_ICON","CLS.ICON_GRID","isFocused","parentItem","menuType","menuCloseArgs","menuTarget","isMenuItemClicked","parentKey","itemKeys_1","_fm_id","uid","treeFolder","targetNodeElement","currentElement","activeNode","getElementsByClassName","CLS.FULLROW","targetElement","getTargetView","updateActiveModule","CLS.TOOLBAR_ID","setLayoutItem","CLS.MENU_ITEM","CLS.SUBMENU_ICON","CLS.TREE_ID","getRowObjectFromUID","selectRows","setFileItem","setFolderItem","disabledItems","itemsToRemove","pasteIndex","isSubMenu","pasteEle","getMenuItemData","menuModule","currentItems","menuOpenArgs","enableItems","CLS.GRID_ID","CLS.ICON_VIEW","getItemIndex","itemId","disableItem","enable","isUniqueId","checkValidItem","isTree","renameIndex","getItemData","contextMenuSettings","trim","selectedTreeNode","indexToRemove","layout","nameEle","menuClickArgs","sItems","openFileOnContextMenuClick","events.downloadInit","separator","CLS.ICON_OPEN","CLS.ICON_UPLOAD","CLS.ICON_CUT","CLS.ICON_COPY","CLS.ICON_PASTE","CLS.ICON_DELETE","CLS.ICON_RENAME","CLS.ICON_NEWFOLDER","CLS.ICON_DETAILS","CLS.ICON_SHORTBY","CLS.TB_OPTION_DOT","CLS.TB_OPTION_TICK","CLS.ICON_REFRESH","CLS.ICON_SELECTALL","CLS.ICON_DOWNLOAD","FileManager_1","defaultLocale","NewFolder","Upload","Rename","Cut","Copy","Paste","SortBy","Refresh","Item-Selection","Items-Selection","View","Details","SelectAll","Open","Tooltip-NewFolder","Tooltip-Upload","Tooltip-Delete","Tooltip-Rename","Tooltip-Download","Tooltip-Cut","Tooltip-Copy","Tooltip-Paste","Tooltip-SortBy","Tooltip-Refresh","Tooltip-Selection","Tooltip-View","Tooltip-Details","Tooltip-SelectAll","Name","Size","DateModified","DateCreated","Path","Modified","Created","Location","Type","Permission","Ascending","Descending","None","View-LargeIcons","View-Details","Button-Ok","Button-Cancel","Button-Yes","Button-No","Button-Create","Button-Save","Header-NewFolder","Content-NewFolder","Header-Rename","Content-Rename","Header-Rename-Confirmation","Content-Rename-Confirmation","Header-Delete","Content-Delete","Header-Folder-Delete","Content-Folder-Delete","Header-Multiple-Delete","Content-Multiple-Delete","Header-Duplicate","Content-Duplicate","Header-Upload","Error","Validation-Empty","Validation-Invalid","Validation-NewFolder-Exists","Validation-Rename-Exists","Folder-Empty","File-Upload","Search-Empty","Search-Key","Filter-Empty","Filter-Key","Sub-Folder-Error","Same-Folder-Error","Access-Denied","Access-Details","Header-Retry","Content-Retry","Button-Keep-Both","Button-Replace","Button-Skip","ApplyAll-Label","KB","Access-Message","Network-Error","Server-Error","FileManager","Component","preRender","getUniqueID","ensurePath","setAttr","formatUnit","Browser","checkMobile","navigationPaneSettings","isBigger","createSpinner","addWrapper","altN","f5","ctrlShift1","ctrlShift2","ctrlU","L10n","getPersistData","addOnPersist","requiredModules","modules","member","toolbarSettings","initialize","slItems","fileView","navigator","platform","toUpperCase","setRtl","addEventListeners","adjustHeight","splitterObj","collapse","CLS.SPLIT_BAR","renderComplete","CLS.MOBILE","CLS.CHECK_SELECT","addCssClass","renderFileUpload","headerWrap","layoutWrap","CLS.LAYOUT","navigationWrap","CLS.NAVIGATION_ID","CLS.NAVIGATION","treeWrap","contentWrap","CLS.LAYOUT_CONTENT","gridWrap","CLS.BREADCRUMBS","largeiconWrap","role","overlay","CLS.OVERLAY","dialogWrap","paneSettings","min","max","maxWidth","Splitter","menuWrap","dialogImgWrap","extnDialogWrap","uploadDialogWrap","CLS.UPLOAD_DIALOG_ID","toolbar","toolBarHeight","splitterAdjust","bar","expand","oldOne","newOne","onContextMenu","userAgent","uploadEle","uploadDialogObj","onOpen","onClose","renderUploadBox","uploadUrl","Uploader","asyncSettings","saveUrl","removeUrl","uploading","onUploading","removing","onRemoving","canceling","onCancel","clearing","onClearing","onSelected","success","onUploadSuccess","failure","onUploadFailure","autoUpload","uploadSettings","minFileSize","maxFileSize","allowedExtensions","directoryUpload","fileListRendering","onFileListRender","updateUploader","isOpened","clearAll","customFormData","filename","uploadEventArgs","httpRequest","currentRequest","onFileUploadSuccess","getFilesData","filesData","uploadingCount","uploadedCount","autoClose","response","statusText","onInitialEnd","removeEventListeners","wireSelectOnDragEvent","isBind","viewElem","onDragStart","enableRangeSelection","dragX","pageX","dragY","pageY","dragSelectElement","styles","append","onDragStop","onDrag","diffX","stopPropagation","diffY","setStyleAttribute","left","Math","abs","dragSelectedItems","dragRect","allItems_1","itemRect","right","bottom","setPath","oldProp","requiresRefresh","ajaxSettingSetModel","localeSetModelOption","col","refreshing","CLS.RTL","toolbarModule","contextmenuModule","disableToolbarItems","enableToolbarItems","disableMenuItems","getMenuItemIndex","getToolbarItemIndex","filterFiles","getSelectedFiles","refreshFiles","refreshLayout","uploadFiles","closeDialog","rtl","Complex","Collection","Event","NotifyPropertyChanges","previousPath","nextPath","deleteRecords","isSameAction","persistData","Inject","Toolbar","toolbarItemData","getItems","toolbarCreateArgs","toolbarObj","BaseToolbar","toolbarCreateHandler","overflowMode","clicked","onClicked","getId","currItems","toolbarItems","tool","toolbarClickArgs","CLS.TB_ITEM","getPupupId","buttonObj","layoutBtnObj","tickIcon","viewText","firstChild","hideItems","default","hideStatus","portals","updateSortByButton","itemCount","mergedItems","propItem","getItemModel","itemTooltip","tooltipText","prefixIcon","showTextOn","spanElement","suffixIcon","CLS.ICON_CLEAR","overflow","align","disabled","showAlwaysInPopup","tabIndex","onSelectionChanged","reRenderToolbar","itemsToProcess","single","selection","multiple","hideItem","tools","toHide","refreshOverflow","isEnable","Virtualization","currentViewItems","largeIconInstance","lastRowCount","rowItemCount","topElement","filemanagerInstance","bottomElement","listItemHeight","totalHeight","topElementHeight","bottomElementHeight","listDiff","renderedCount","dataSourceLength","widthMargin","floor","round","onVirtualUiScroll","scrollPosition","scroll","getscrollerHeight","onNormalScroll","startingHeight","isScrollingDown","updateUI","lastItemIndex","isAllRendered","startItemIndex","previousElementSibling","NavigationPane","onInit","rootData","attr","BaseTreeView","expanded","hasChildren","tooltip","nodeSelecting","onNodeSelecting","nodeSelected","onNodeSelected","nodeExpanding","onNodeExpand","nodeClicked","onNodeClicked","allowEditing","nodeEditing","onNodeEditing","drawNode","onDrowNode","dataBound","addDragDrop","getDragPath","getDropPath","nodeData","addChild","prevent","directories","targetDirectory","_fm_icon","childElements","addNodes","selecEventArgs","isRightClick","isSameNodeClicked","isPathDragged","isRenameParent","restrictSelecting","renameParent","isNodeClickCalled","expandNodeTarget","onPathDrag","selectResultNode","isDrag","isNodeExpandCalled","events.nodeExpand","onNodeExpanded","innerHtml","currFiles","sNode","expandTree","updateTree","updateTreeNode","toExpand","expandedNodes","removeChildNodes","childs","removeNodes","onOpenEnd","sleId","expandAll","updateItemData","updateActionData","selectedNodeEle","selcetedEle","onRenameEndParent","id_1","nData","onDownLoadInit","onClearPathInit","onDragEnd","moveNames","getMoveNames","previousName","onCutEnd","resultObj","itemname","checkDropPath","onDragging","dataobj","level","keyDown","ctrlShiftN","shiftF10","DetailsView","sortSettings","isValidSortField","checkNameWidth","getColumns","direction","Grid","allowSorting","rowSelecting","onSelection","rowDeselecting","rowSelected","rowDeselected","onDeSelection","allowResizing","columnResizing","selectionSettings","checkboxMode","pageSettings","pageSize","enablePersistence","enableVirtualMaskRow","allowUnsort","recordDoubleClick","DblClickEvents","beforeDataBound","onBeforeDataBound","onDataBound","rowDataBound","onRowDataBound","actionBegin","onActionBegin","headerCellInfo","onHeaderCellInfo","getGridHeight","beforeCopy","load","focusModule","isReact","reactTemplateRender","emptyArgs","pane","initialColumn","isNameWidth","adjustWidth","fieldName","nameWidth","headerTextAlign","SanitizeHtmlHelper","sanitize","_fm_modified","this_1","template_1","iWidth","_fm_iconClass","headerTemplate","unshift","cBox","cWidth","disableHtmlEncode","gridHeader","renderCheckBox","isColumnRefresh","refreshColumns","td","row","sizeEle","modifiedSize","sizeValue","sizeFormat","formatNumber","dateEle","checkWrap","requestType","columnName","sortItem","rows","getSelectedRowIndexes","sortSelectedNodes","getRowsObject","nameColumn","find","hdTable","cnTable","selectRecords","getDataRows","isSelectionUpdate","currentSelectedItem","currentViewData","getRowHeight","getHeaderContent","paddingLeft","borderRightWidth","getContent","overflowY","checkEmptyDiv","isLoaded","gridRecords","getCurrentViewRecords","sRecords","Str2","selectedRowIndex","rData","onSortColumn","sortModule","freezeRefresh","interaction","onDetailsResize","pathField","hideAtMedia","updatePathColumn","removePathColumn","columnData","getSelectedRecords","openContent","rowIndex","rowData","onSearchFiles","isRefresh","selectionModule","selectRowsByRange","getRows","selectRow","removeSelection","CLS.HEADER_CHECK","onPasteInit","onDetailsResizeHandler","getRowInfo","dragRow","getSelectedRows","gridHeaderColGroup","gridContentColGroup","gridHeaderColNames","isMultiSelect","isShiftPressed","isCtrlPressed","rowIndexes","selectedRecords","firstItemIndex","getRowByIndex","isHeaderCheckboxClicked","gridSelectNodes","selectSize","record","name_3","keyupHandler","keydownHandler","removeFocus","relatedTarget","thElements","getFocusedItemIndex","crtSrlPos","crtFocusIndex","gridItems","gridLength","focIndex","selIndex","selRowIndeces","currentField","getColumnByUid","nextSibling","addHeaderFocus","checkRowsKey","spaceSelection","shiftMoveMethod","ctrlMoveFunction","moveFunction","isSelected","shiftSelectedItem","shiftSelectFocusItem","nextIndex","indexValue","checkAllRows","InnerItems","itemArr","fIndex","selRowIndexes","itemElement","CLS.FOCUSED","nameFocus","treeFocus","tagName","check","getRecords","hasFilter","name_4","dRecords","Resize","Sort","VirtualScroll","reference","referenceIsFile","comparerIsFile","referenceParts","comparerParts","_","$1","$2","Infinity","referencePart","shift","comparerPart","comparisonResult","localeCompare"],"mappings":"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"}
|